Built motion from commit 1e5138b3.|2.6.24
authorsupport <support@xcally.com>
Fri, 25 Nov 2022 08:48:20 +0000 (08:48 +0000)
committersupport <support@xcally.com>
Fri, 25 Nov 2022 08:48:20 +0000 (08:48 +0000)
1245 files changed:
apidoc/api_data.js
apidoc/api_data.json
apidoc/api_project.js
apidoc/api_project.json
npm-shrinkwrap.json
package.json
public/app/footer/i18n/ar.json
public/app/footer/i18n/bs.json
public/app/footer/i18n/cs.json
public/app/footer/i18n/da.json
public/app/footer/i18n/de.json
public/app/footer/i18n/en.json
public/app/footer/i18n/es.json
public/app/footer/i18n/et.json
public/app/footer/i18n/fa.json
public/app/footer/i18n/fi.json
public/app/footer/i18n/fr.json
public/app/footer/i18n/he.json
public/app/footer/i18n/hi.json
public/app/footer/i18n/hu.json
public/app/footer/i18n/id.json
public/app/footer/i18n/is.json
public/app/footer/i18n/it.json
public/app/footer/i18n/ja.json
public/app/footer/i18n/ko.json
public/app/footer/i18n/lt.json
public/app/footer/i18n/lv.json
public/app/footer/i18n/nl.json
public/app/footer/i18n/no.json
public/app/footer/i18n/pl.json
public/app/footer/i18n/pt-BR.json
public/app/footer/i18n/pt-PT.json
public/app/footer/i18n/ru.json
public/app/footer/i18n/sv.json
public/app/footer/i18n/tr.json
public/app/footer/i18n/zh-CN.json
public/app/footer/i18n/zh-TW.json
public/app/main/apps/settings/i18n/en.json
public/app/main/apps/settings/i18n/it.json
public/app/main/apps/staff/i18n/en.json
public/app/main/apps/staff/i18n/it.json
public/index.html
public/scripts/app.7844957e.js [moved from public/scripts/app.788d460c.js with 53% similarity]
server/api/action/action.attributes.js
server/api/action/action.controller.js
server/api/action/action.model.js
server/api/action/action.rpc.js
server/api/action/index.js
server/api/analyticCustomReport/analyticCustomReport.attributes.js
server/api/analyticCustomReport/analyticCustomReport.controller.js
server/api/analyticCustomReport/analyticCustomReport.model.js
server/api/analyticCustomReport/analyticCustomReport.rpc.js
server/api/analyticCustomReport/index.js
server/api/analyticDefaultReport/analyticDefaultReport.attributes.js
server/api/analyticDefaultReport/analyticDefaultReport.controller.js
server/api/analyticDefaultReport/analyticDefaultReport.model.js
server/api/analyticDefaultReport/analyticDefaultReport.rpc.js
server/api/analyticDefaultReport/index.js
server/api/analyticExtractedReport/analyticExtractedReport.attributes.js
server/api/analyticExtractedReport/analyticExtractedReport.controller.js
server/api/analyticExtractedReport/analyticExtractedReport.model.js
server/api/analyticExtractedReport/analyticExtractedReport.rpc.js
server/api/analyticExtractedReport/index.js
server/api/analyticFieldReport/analyticFieldReport.attributes.js
server/api/analyticFieldReport/analyticFieldReport.controller.js
server/api/analyticFieldReport/analyticFieldReport.model.js
server/api/analyticFieldReport/analyticFieldReport.rpc.js
server/api/analyticFieldReport/index.js
server/api/analyticMetric/analyticMetric.attributes.js
server/api/analyticMetric/analyticMetric.controller.js
server/api/analyticMetric/analyticMetric.model.js
server/api/analyticMetric/analyticMetric.rpc.js
server/api/analyticMetric/index.js
server/api/analyticTreeReport/analyticTreeReport.attributes.js
server/api/analyticTreeReport/analyticTreeReport.controller.js
server/api/analyticTreeReport/analyticTreeReport.model.js
server/api/analyticTreeReport/analyticTreeReport.rpc.js
server/api/analyticTreeReport/index.js
server/api/attachment/attachment.attributes.js
server/api/attachment/attachment.controller.js
server/api/attachment/attachment.model.js
server/api/attachment/attachment.rpc.js
server/api/attachment/index.js
server/api/authActiveDirectory/authActiveDirectory.controller.js
server/api/authActiveDirectory/index.js
server/api/authGoogle/authGoogle.controller.js
server/api/authGoogle/index.js
server/api/authLocal/authLocal.controller.js
server/api/authLocal/index.js
server/api/automation/automation.attributes.js
server/api/automation/automation.controller.js
server/api/automation/automation.model.js
server/api/automation/automation.rpc.js
server/api/automation/index.js
server/api/campaign/campaign.attributes.js
server/api/campaign/campaign.controller.js
server/api/campaign/campaign.model.js
server/api/campaign/campaign.rpc.js
server/api/campaign/index.js
server/api/cannedAnswer/cannedAnswer.attributes.js
server/api/cannedAnswer/cannedAnswer.controller.js
server/api/cannedAnswer/cannedAnswer.model.js
server/api/cannedAnswer/cannedAnswer.rpc.js
server/api/cannedAnswer/index.js
server/api/cdr/cdr.attributes.js
server/api/cdr/cdr.controller.js
server/api/cdr/cdr.model.js
server/api/cdr/cdr.rpc.js
server/api/cdr/index.js
server/api/chatApplication/chatApplication.attributes.js
server/api/chatApplication/chatApplication.controller.js
server/api/chatApplication/chatApplication.model.js
server/api/chatApplication/chatApplication.rpc.js
server/api/chatApplication/index.js
server/api/chatGroup/chatGroup.attributes.js
server/api/chatGroup/chatGroup.controller.js
server/api/chatGroup/chatGroup.events.js
server/api/chatGroup/chatGroup.model.js
server/api/chatGroup/chatGroup.rpc.js
server/api/chatGroup/chatGroup.socket.js
server/api/chatGroup/index.js
server/api/chatInteraction/chatInteraction.attributes.js
server/api/chatInteraction/chatInteraction.controller.js
server/api/chatInteraction/chatInteraction.events.js
server/api/chatInteraction/chatInteraction.model.js
server/api/chatInteraction/chatInteraction.rpc.js
server/api/chatInteraction/chatInteraction.socket.js
server/api/chatInteraction/index.js
server/api/chatInternalMessage/chatInternalMessage.attributes.js
server/api/chatInternalMessage/chatInternalMessage.controller.js
server/api/chatInternalMessage/chatInternalMessage.events.js
server/api/chatInternalMessage/chatInternalMessage.model.js
server/api/chatInternalMessage/chatInternalMessage.rpc.js
server/api/chatInternalMessage/chatInternalMessage.socket.js
server/api/chatInternalMessage/index.js
server/api/chatMessage/chatMessage.attributes.js
server/api/chatMessage/chatMessage.controller.js
server/api/chatMessage/chatMessage.events.js
server/api/chatMessage/chatMessage.model.js
server/api/chatMessage/chatMessage.rpc.js
server/api/chatMessage/chatMessage.socket.js
server/api/chatMessage/index.js
server/api/chatOfflineMessage/chatOfflineMessage.attributes.js
server/api/chatOfflineMessage/chatOfflineMessage.controller.js
server/api/chatOfflineMessage/chatOfflineMessage.events.js
server/api/chatOfflineMessage/chatOfflineMessage.model.js
server/api/chatOfflineMessage/chatOfflineMessage.rpc.js
server/api/chatOfflineMessage/index.js
server/api/chatProactiveAction/chatProactiveAction.attributes.js
server/api/chatProactiveAction/chatProactiveAction.controller.js
server/api/chatProactiveAction/chatProactiveAction.model.js
server/api/chatProactiveAction/chatProactiveAction.rpc.js
server/api/chatProactiveAction/index.js
server/api/chatQueue/chatQueue.attributes.js
server/api/chatQueue/chatQueue.controller.js
server/api/chatQueue/chatQueue.events.js
server/api/chatQueue/chatQueue.model.js
server/api/chatQueue/chatQueue.rpc.js
server/api/chatQueue/chatQueue.socket.js
server/api/chatQueue/index.js
server/api/chatQueueReport/chatQueueReport.attributes.js
server/api/chatQueueReport/chatQueueReport.controller.js
server/api/chatQueueReport/chatQueueReport.model.js
server/api/chatQueueReport/chatQueueReport.rpc.js
server/api/chatQueueReport/index.js
server/api/chatTransferReport/chatTransferReport.attributes.js
server/api/chatTransferReport/chatTransferReport.controller.js
server/api/chatTransferReport/chatTransferReport.model.js
server/api/chatTransferReport/chatTransferReport.rpc.js
server/api/chatTransferReport/index.js
server/api/chatWebsite/chatWebsite.attributes.js
server/api/chatWebsite/chatWebsite.controller.js
server/api/chatWebsite/chatWebsite.events.js
server/api/chatWebsite/chatWebsite.model.js
server/api/chatWebsite/chatWebsite.rpc.js
server/api/chatWebsite/chatWebsite.socket.js
server/api/chatWebsite/index.js
server/api/client-side-logs.js
server/api/cloudProvider/cloudProvider.attributes.js
server/api/cloudProvider/cloudProvider.controller.js
server/api/cloudProvider/cloudProvider.model.js
server/api/cloudProvider/cloudProvider.oauth.js
server/api/cloudProvider/cloudProvider.rpc.js
server/api/cloudProvider/index.js
server/api/cmCompany/cmCompany.attributes.js
server/api/cmCompany/cmCompany.controller.js
server/api/cmCompany/cmCompany.model.js
server/api/cmCompany/cmCompany.rpc.js
server/api/cmCompany/index.js
server/api/cmContact/cmContact.attributes.js
server/api/cmContact/cmContact.controller.js
server/api/cmContact/cmContact.events.js
server/api/cmContact/cmContact.model.js
server/api/cmContact/cmContact.rpc.js
server/api/cmContact/cmContact.socket.js
server/api/cmContact/index.js
server/api/cmContactHasItem/cmContactHasItem.attributes.js
server/api/cmContactHasItem/cmContactHasItem.controller.js
server/api/cmContactHasItem/cmContactHasItem.model.js
server/api/cmContactHasItem/cmContactHasItem.rpc.js
server/api/cmContactHasItem/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/cmHopperAdditionalPhone/cmHopperAdditionalPhone.attributes.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.controller.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc.js
server/api/cmHopperAdditionalPhone/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/contactItemType/contactItemType.attributes.js
server/api/contactItemType/contactItemType.controller.js
server/api/contactItemType/contactItemType.model.js
server/api/contactItemType/contactItemType.rpc.js
server/api/contactItemType/index.js
server/api/dashboard/dashboard.attributes.js
server/api/dashboard/dashboard.controller.js
server/api/dashboard/dashboard.events.js
server/api/dashboard/dashboard.model.js
server/api/dashboard/dashboard.rpc.js
server/api/dashboard/dashboard.socket.js
server/api/dashboard/index.js
server/api/dashboardItem/dashboardItem.attributes.js
server/api/dashboardItem/dashboardItem.controller.js
server/api/dashboardItem/dashboardItem.events.js
server/api/dashboardItem/dashboardItem.model.js
server/api/dashboardItem/dashboardItem.rpc.js
server/api/dashboardItem/dashboardItem.socket.js
server/api/dashboardItem/index.js
server/api/disposition/disposition.attributes.js
server/api/disposition/disposition.controller.js
server/api/disposition/disposition.model.js
server/api/disposition/disposition.rpc.js
server/api/disposition/index.js
server/api/faxAccount/faxAccount.attributes.js
server/api/faxAccount/faxAccount.controller.js
server/api/faxAccount/faxAccount.events.js
server/api/faxAccount/faxAccount.model.js
server/api/faxAccount/faxAccount.rpc.js
server/api/faxAccount/faxAccount.socket.js
server/api/faxAccount/index.js
server/api/faxApplication/faxApplication.attributes.js
server/api/faxApplication/faxApplication.controller.js
server/api/faxApplication/faxApplication.model.js
server/api/faxApplication/faxApplication.rpc.js
server/api/faxApplication/index.js
server/api/faxInteraction/faxInteraction.attributes.js
server/api/faxInteraction/faxInteraction.controller.js
server/api/faxInteraction/faxInteraction.events.js
server/api/faxInteraction/faxInteraction.model.js
server/api/faxInteraction/faxInteraction.rpc.js
server/api/faxInteraction/faxInteraction.socket.js
server/api/faxInteraction/index.js
server/api/faxMessage/faxMessage.attributes.js
server/api/faxMessage/faxMessage.controller.js
server/api/faxMessage/faxMessage.events.js
server/api/faxMessage/faxMessage.model.js
server/api/faxMessage/faxMessage.rpc.js
server/api/faxMessage/faxMessage.socket.js
server/api/faxMessage/index.js
server/api/faxQueue/faxQueue.attributes.js
server/api/faxQueue/faxQueue.controller.js
server/api/faxQueue/faxQueue.events.js
server/api/faxQueue/faxQueue.model.js
server/api/faxQueue/faxQueue.rpc.js
server/api/faxQueue/faxQueue.socket.js
server/api/faxQueue/index.js
server/api/faxQueueReport/faxQueueReport.attributes.js
server/api/faxQueueReport/faxQueueReport.controller.js
server/api/faxQueueReport/faxQueueReport.model.js
server/api/faxQueueReport/faxQueueReport.rpc.js
server/api/faxQueueReport/index.js
server/api/faxTransferReport/faxTransferReport.attributes.js
server/api/faxTransferReport/faxTransferReport.controller.js
server/api/faxTransferReport/faxTransferReport.model.js
server/api/faxTransferReport/faxTransferReport.rpc.js
server/api/faxTransferReport/index.js
server/api/intDeskAccount/index.js
server/api/intDeskAccount/intDeskAccount.attributes.js
server/api/intDeskAccount/intDeskAccount.controller.js
server/api/intDeskAccount/intDeskAccount.model.js
server/api/intDeskAccount/intDeskAccount.rpc.js
server/api/intDeskConfiguration/index.js
server/api/intDeskConfiguration/intDeskConfiguration.attributes.js
server/api/intDeskConfiguration/intDeskConfiguration.controller.js
server/api/intDeskConfiguration/intDeskConfiguration.model.js
server/api/intDeskConfiguration/intDeskConfiguration.rpc.js
server/api/intDeskField/index.js
server/api/intDeskField/intDeskField.attributes.js
server/api/intDeskField/intDeskField.controller.js
server/api/intDeskField/intDeskField.model.js
server/api/intDeskField/intDeskField.rpc.js
server/api/intDynamics365Account/index.js
server/api/intDynamics365Account/intDynamics365Account.attributes.js
server/api/intDynamics365Account/intDynamics365Account.controller.js
server/api/intDynamics365Account/intDynamics365Account.model.js
server/api/intDynamics365Account/intDynamics365Account.rpc.js
server/api/intDynamics365Configuration/index.js
server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js
server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js
server/api/intDynamics365Configuration/intDynamics365Configuration.model.js
server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js
server/api/intDynamics365Field/index.js
server/api/intDynamics365Field/intDynamics365Field.attributes.js
server/api/intDynamics365Field/intDynamics365Field.controller.js
server/api/intDynamics365Field/intDynamics365Field.model.js
server/api/intDynamics365Field/intDynamics365Field.rpc.js
server/api/intFreshdeskAccount/index.js
server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js
server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js
server/api/intFreshdeskAccount/intFreshdeskAccount.model.js
server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js
server/api/intFreshdeskConfiguration/index.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js
server/api/intFreshdeskField/index.js
server/api/intFreshdeskField/intFreshdeskField.attributes.js
server/api/intFreshdeskField/intFreshdeskField.controller.js
server/api/intFreshdeskField/intFreshdeskField.model.js
server/api/intFreshdeskField/intFreshdeskField.rpc.js
server/api/intFreshsalesAccount/index.js
server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js
server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js
server/api/intFreshsalesAccount/intFreshsalesAccount.model.js
server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js
server/api/intFreshsalesConfiguration/index.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js
server/api/intFreshsalesField/index.js
server/api/intFreshsalesField/intFreshsalesField.attributes.js
server/api/intFreshsalesField/intFreshsalesField.controller.js
server/api/intFreshsalesField/intFreshsalesField.model.js
server/api/intFreshsalesField/intFreshsalesField.rpc.js
server/api/intSalesforceAccount/index.js
server/api/intSalesforceAccount/intSalesforceAccount.attributes.js
server/api/intSalesforceAccount/intSalesforceAccount.controller.js
server/api/intSalesforceAccount/intSalesforceAccount.model.js
server/api/intSalesforceAccount/intSalesforceAccount.rpc.js
server/api/intSalesforceConfiguration/index.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js
server/api/intSalesforceField/index.js
server/api/intSalesforceField/intSalesforceField.attributes.js
server/api/intSalesforceField/intSalesforceField.controller.js
server/api/intSalesforceField/intSalesforceField.model.js
server/api/intSalesforceField/intSalesforceField.rpc.js
server/api/intServicenowAccount/index.js
server/api/intServicenowAccount/intServicenowAccount.attributes.js
server/api/intServicenowAccount/intServicenowAccount.controller.js
server/api/intServicenowAccount/intServicenowAccount.model.js
server/api/intServicenowAccount/intServicenowAccount.rpc.js
server/api/intServicenowConfiguration/index.js
server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js
server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js
server/api/intServicenowConfiguration/intServicenowConfiguration.model.js
server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js
server/api/intServicenowField/index.js
server/api/intServicenowField/intServicenowField.attributes.js
server/api/intServicenowField/intServicenowField.controller.js
server/api/intServicenowField/intServicenowField.model.js
server/api/intServicenowField/intServicenowField.rpc.js
server/api/intSugarcrmAccount/index.js
server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js
server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js
server/api/intSugarcrmAccount/intSugarcrmAccount.model.js
server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js
server/api/intSugarcrmConfiguration/index.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js
server/api/intSugarcrmField/index.js
server/api/intSugarcrmField/intSugarcrmField.attributes.js
server/api/intSugarcrmField/intSugarcrmField.controller.js
server/api/intSugarcrmField/intSugarcrmField.model.js
server/api/intSugarcrmField/intSugarcrmField.rpc.js
server/api/intVtigerAccount/index.js
server/api/intVtigerAccount/intVtigerAccount.attributes.js
server/api/intVtigerAccount/intVtigerAccount.controller.js
server/api/intVtigerAccount/intVtigerAccount.model.js
server/api/intVtigerAccount/intVtigerAccount.rpc.js
server/api/intVtigerConfiguration/index.js
server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js
server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js
server/api/intVtigerConfiguration/intVtigerConfiguration.model.js
server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js
server/api/intVtigerField/index.js
server/api/intVtigerField/intVtigerField.attributes.js
server/api/intVtigerField/intVtigerField.controller.js
server/api/intVtigerField/intVtigerField.model.js
server/api/intVtigerField/intVtigerField.rpc.js
server/api/intZendeskAccount/index.js
server/api/intZendeskAccount/intZendeskAccount.attributes.js
server/api/intZendeskAccount/intZendeskAccount.controller.js
server/api/intZendeskAccount/intZendeskAccount.model.js
server/api/intZendeskAccount/intZendeskAccount.rpc.js
server/api/intZendeskConfiguration/index.js
server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js
server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js
server/api/intZendeskConfiguration/intZendeskConfiguration.model.js
server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js
server/api/intZendeskField/index.js
server/api/intZendeskField/intZendeskField.attributes.js
server/api/intZendeskField/intZendeskField.controller.js
server/api/intZendeskField/intZendeskField.model.js
server/api/intZendeskField/intZendeskField.rpc.js
server/api/intZohoAccount/index.js
server/api/intZohoAccount/intZohoAccount.attributes.js
server/api/intZohoAccount/intZohoAccount.controller.js
server/api/intZohoAccount/intZohoAccount.model.js
server/api/intZohoAccount/intZohoAccount.rpc.js
server/api/intZohoConfiguration/index.js
server/api/intZohoConfiguration/intZohoConfiguration.attributes.js
server/api/intZohoConfiguration/intZohoConfiguration.controller.js
server/api/intZohoConfiguration/intZohoConfiguration.model.js
server/api/intZohoConfiguration/intZohoConfiguration.rpc.js
server/api/intZohoField/index.js
server/api/intZohoField/intZohoField.attributes.js
server/api/intZohoField/intZohoField.controller.js
server/api/intZohoField/intZohoField.model.js
server/api/intZohoField/intZohoField.rpc.js
server/api/integration/index.js
server/api/integration/integration.attributes.js
server/api/integration/integration.controller.js
server/api/integration/integration.model.js
server/api/integration/integration.rpc.js
server/api/integrationReport/index.js
server/api/integrationReport/integrationReport.attributes.js
server/api/integrationReport/integrationReport.controller.js
server/api/integrationReport/integrationReport.model.js
server/api/integrationReport/integrationReport.rpc.js
server/api/interval/index.js
server/api/interval/interval.attributes.js
server/api/interval/interval.controller.js
server/api/interval/interval.model.js
server/api/interval/interval.rpc.js
server/api/jira/index.js
server/api/jira/jira.controller.js
server/api/jscriptyAnswerReport/index.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js
server/api/jscriptyProject/index.js
server/api/jscriptyProject/jscriptyProject.attributes.js
server/api/jscriptyProject/jscriptyProject.controller.js
server/api/jscriptyProject/jscriptyProject.model.js
server/api/jscriptyProject/jscriptyProject.rpc.js
server/api/jscriptyQuestionReport/index.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js
server/api/jscriptySessionReport/index.js
server/api/jscriptySessionReport/jscriptySessionReport.attributes.js
server/api/jscriptySessionReport/jscriptySessionReport.controller.js
server/api/jscriptySessionReport/jscriptySessionReport.model.js
server/api/jscriptySessionReport/jscriptySessionReport.rpc.js
server/api/license/index.js
server/api/license/license.attributes.js
server/api/license/license.controller.js
server/api/license/license.model.js
server/api/license/license.rpc.js
server/api/mailAccount/index.js
server/api/mailAccount/mailAccount.attributes.js
server/api/mailAccount/mailAccount.controller.js
server/api/mailAccount/mailAccount.events.js
server/api/mailAccount/mailAccount.model.js
server/api/mailAccount/mailAccount.rpc.js
server/api/mailAccount/mailAccount.socket.js
server/api/mailApplication/index.js
server/api/mailApplication/mailApplication.attributes.js
server/api/mailApplication/mailApplication.controller.js
server/api/mailApplication/mailApplication.model.js
server/api/mailApplication/mailApplication.rpc.js
server/api/mailInteraction/index.js
server/api/mailInteraction/mailInteraction.attributes.js
server/api/mailInteraction/mailInteraction.controller.js
server/api/mailInteraction/mailInteraction.events.js
server/api/mailInteraction/mailInteraction.model.js
server/api/mailInteraction/mailInteraction.rpc.js
server/api/mailInteraction/mailInteraction.socket.js
server/api/mailMessage/index.js
server/api/mailMessage/mailMessage.attributes.js
server/api/mailMessage/mailMessage.controller.js
server/api/mailMessage/mailMessage.events.js
server/api/mailMessage/mailMessage.model.js
server/api/mailMessage/mailMessage.rpc.js
server/api/mailMessage/mailMessage.socket.js
server/api/mailQueue/index.js
server/api/mailQueue/mailQueue.attributes.js
server/api/mailQueue/mailQueue.controller.js
server/api/mailQueue/mailQueue.events.js
server/api/mailQueue/mailQueue.model.js
server/api/mailQueue/mailQueue.rpc.js
server/api/mailQueue/mailQueue.socket.js
server/api/mailQueueReport/index.js
server/api/mailQueueReport/mailQueueReport.attributes.js
server/api/mailQueueReport/mailQueueReport.controller.js
server/api/mailQueueReport/mailQueueReport.model.js
server/api/mailQueueReport/mailQueueReport.rpc.js
server/api/mailServerIn/index.js
server/api/mailServerIn/mailServerIn.attributes.js
server/api/mailServerIn/mailServerIn.model.js
server/api/mailServerIn/mailServerIn.rpc.js
server/api/mailServerOut/index.js
server/api/mailServerOut/mailServerOut.attributes.js
server/api/mailServerOut/mailServerOut.controller.js
server/api/mailServerOut/mailServerOut.model.js
server/api/mailServerOut/mailServerOut.rpc.js
server/api/mailSubstatus/index.js
server/api/mailSubstatus/mailSubstatus.attributes.js
server/api/mailSubstatus/mailSubstatus.controller.js
server/api/mailSubstatus/mailSubstatus.events.js
server/api/mailSubstatus/mailSubstatus.model.js
server/api/mailSubstatus/mailSubstatus.rpc.js
server/api/mailTransferReport/index.js
server/api/mailTransferReport/mailTransferReport.attributes.js
server/api/mailTransferReport/mailTransferReport.controller.js
server/api/mailTransferReport/mailTransferReport.model.js
server/api/mailTransferReport/mailTransferReport.rpc.js
server/api/memberReport/index.js
server/api/memberReport/memberReport.attributes.js
server/api/memberReport/memberReport.controller.js
server/api/memberReport/memberReport.model.js
server/api/memberReport/memberReport.rpc.js
server/api/migration/index.js
server/api/migration/migration.attributes.js
server/api/migration/migration.controller.js
server/api/migration/migration.model.js
server/api/migration/migration.rpc.js
server/api/network/index.js
server/api/network/network.attributes.js
server/api/network/network.controller.js
server/api/network/network.model.js
server/api/network/network.rpc.js
server/api/openchannelAccount/index.js
server/api/openchannelAccount/openchannelAccount.attributes.js
server/api/openchannelAccount/openchannelAccount.controller.js
server/api/openchannelAccount/openchannelAccount.events.js
server/api/openchannelAccount/openchannelAccount.model.js
server/api/openchannelAccount/openchannelAccount.rpc.js
server/api/openchannelAccount/openchannelAccount.socket.js
server/api/openchannelApplication/index.js
server/api/openchannelApplication/openchannelApplication.attributes.js
server/api/openchannelApplication/openchannelApplication.controller.js
server/api/openchannelApplication/openchannelApplication.model.js
server/api/openchannelApplication/openchannelApplication.rpc.js
server/api/openchannelInteraction/index.js
server/api/openchannelInteraction/openchannelInteraction.attributes.js
server/api/openchannelInteraction/openchannelInteraction.controller.js
server/api/openchannelInteraction/openchannelInteraction.events.js
server/api/openchannelInteraction/openchannelInteraction.model.js
server/api/openchannelInteraction/openchannelInteraction.rpc.js
server/api/openchannelInteraction/openchannelInteraction.socket.js
server/api/openchannelMessage/index.js
server/api/openchannelMessage/openchannelMessage.attributes.js
server/api/openchannelMessage/openchannelMessage.controller.js
server/api/openchannelMessage/openchannelMessage.events.js
server/api/openchannelMessage/openchannelMessage.model.js
server/api/openchannelMessage/openchannelMessage.rpc.js
server/api/openchannelMessage/openchannelMessage.socket.js
server/api/openchannelQueue/index.js
server/api/openchannelQueue/openchannelQueue.attributes.js
server/api/openchannelQueue/openchannelQueue.controller.js
server/api/openchannelQueue/openchannelQueue.events.js
server/api/openchannelQueue/openchannelQueue.model.js
server/api/openchannelQueue/openchannelQueue.rpc.js
server/api/openchannelQueue/openchannelQueue.socket.js
server/api/openchannelQueueReport/index.js
server/api/openchannelQueueReport/openchannelQueueReport.attributes.js
server/api/openchannelQueueReport/openchannelQueueReport.controller.js
server/api/openchannelQueueReport/openchannelQueueReport.model.js
server/api/openchannelQueueReport/openchannelQueueReport.rpc.js
server/api/openchannelTransferReport/index.js
server/api/openchannelTransferReport/openchannelTransferReport.attributes.js
server/api/openchannelTransferReport/openchannelTransferReport.controller.js
server/api/openchannelTransferReport/openchannelTransferReport.model.js
server/api/openchannelTransferReport/openchannelTransferReport.rpc.js
server/api/pause/index.js
server/api/pause/pause.attributes.js
server/api/pause/pause.controller.js
server/api/pause/pause.model.js
server/api/pause/pause.rpc.js
server/api/plugin/index.js
server/api/plugin/plugin.attributes.js
server/api/plugin/plugin.controller.js
server/api/plugin/plugin.events.js
server/api/plugin/plugin.model.js
server/api/plugin/plugin.rpc.js
server/api/plugin/plugin.socket.js
server/api/pm2/index.js
server/api/pm2/pm2.controller.js
server/api/realtime/index.js
server/api/realtime/realtime.controller.js
server/api/reportAgentPreview/index.js
server/api/reportAgentPreview/reportAgentPreview.attributes.js
server/api/reportAgentPreview/reportAgentPreview.model.js
server/api/reportAgentPreview/reportAgentPreview.rpc.js
server/api/rpc/index.js
server/api/rpc/rpc.controller.js
server/api/schedule/index.js
server/api/schedule/schedule.attributes.js
server/api/schedule/schedule.controller.js
server/api/schedule/schedule.model.js
server/api/schedule/schedule.rpc.js
server/api/screenRecording/index.js
server/api/screenRecording/screenRecording.attributes.js
server/api/screenRecording/screenRecording.controller.js
server/api/screenRecording/screenRecording.model.js
server/api/screenRecording/screenRecording.rpc.js
server/api/setting/index.js
server/api/setting/setting.attributes.js
server/api/setting/setting.controller.js
server/api/setting/setting.model.js
server/api/setting/setting.rpc.js
server/api/smsAccount/index.js
server/api/smsAccount/smsAccount.attributes.js
server/api/smsAccount/smsAccount.controller.js
server/api/smsAccount/smsAccount.events.js
server/api/smsAccount/smsAccount.model.js
server/api/smsAccount/smsAccount.rpc.js
server/api/smsAccount/smsAccount.socket.js
server/api/smsApplication/index.js
server/api/smsApplication/smsApplication.attributes.js
server/api/smsApplication/smsApplication.controller.js
server/api/smsApplication/smsApplication.model.js
server/api/smsApplication/smsApplication.rpc.js
server/api/smsInteraction/index.js
server/api/smsInteraction/smsInteraction.attributes.js
server/api/smsInteraction/smsInteraction.controller.js
server/api/smsInteraction/smsInteraction.events.js
server/api/smsInteraction/smsInteraction.model.js
server/api/smsInteraction/smsInteraction.rpc.js
server/api/smsInteraction/smsInteraction.socket.js
server/api/smsMessage/index.js
server/api/smsMessage/smsMessage.attributes.js
server/api/smsMessage/smsMessage.controller.js
server/api/smsMessage/smsMessage.events.js
server/api/smsMessage/smsMessage.model.js
server/api/smsMessage/smsMessage.rpc.js
server/api/smsMessage/smsMessage.socket.js
server/api/smsQueue/index.js
server/api/smsQueue/smsQueue.attributes.js
server/api/smsQueue/smsQueue.controller.js
server/api/smsQueue/smsQueue.events.js
server/api/smsQueue/smsQueue.model.js
server/api/smsQueue/smsQueue.rpc.js
server/api/smsQueue/smsQueue.socket.js
server/api/smsQueueReport/index.js
server/api/smsQueueReport/smsQueueReport.attributes.js
server/api/smsQueueReport/smsQueueReport.controller.js
server/api/smsQueueReport/smsQueueReport.model.js
server/api/smsQueueReport/smsQueueReport.rpc.js
server/api/smsTransferReport/index.js
server/api/smsTransferReport/smsTransferReport.attributes.js
server/api/smsTransferReport/smsTransferReport.controller.js
server/api/smsTransferReport/smsTransferReport.model.js
server/api/smsTransferReport/smsTransferReport.rpc.js
server/api/sound/index.js
server/api/sound/sound.attributes.js
server/api/sound/sound.controller.js
server/api/sound/sound.model.js
server/api/sound/sound.rpc.js
server/api/squareMessage/index.js
server/api/squareMessage/squareMessage.attributes.js
server/api/squareMessage/squareMessage.controller.js
server/api/squareMessage/squareMessage.model.js
server/api/squareMessage/squareMessage.rpc.js
server/api/squareOdbc/index.js
server/api/squareOdbc/squareOdbc.attributes.js
server/api/squareOdbc/squareOdbc.controller.js
server/api/squareOdbc/squareOdbc.model.js
server/api/squareOdbc/squareOdbc.rpc.js
server/api/squareProject/index.js
server/api/squareProject/squareProject.attributes.js
server/api/squareProject/squareProject.controller.js
server/api/squareProject/squareProject.events.js
server/api/squareProject/squareProject.model.js
server/api/squareProject/squareProject.rpc.js
server/api/squareProject/squareProject.socket.js
server/api/squareRecording/index.js
server/api/squareRecording/squareRecording.attributes.js
server/api/squareRecording/squareRecording.controller.js
server/api/squareRecording/squareRecording.model.js
server/api/squareRecording/squareRecording.rpc.js
server/api/squareReport/index.js
server/api/squareReport/squareReport.attributes.js
server/api/squareReport/squareReport.controller.js
server/api/squareReport/squareReport.model.js
server/api/squareReport/squareReport.rpc.js
server/api/squareReportDetail/index.js
server/api/squareReportDetail/squareReportDetail.attributes.js
server/api/squareReportDetail/squareReportDetail.controller.js
server/api/squareReportDetail/squareReportDetail.model.js
server/api/squareReportDetail/squareReportDetail.rpc.js
server/api/system/index.js
server/api/system/system.controller.js
server/api/tag/index.js
server/api/tag/tag.attributes.js
server/api/tag/tag.controller.js
server/api/tag/tag.model.js
server/api/tag/tag.rpc.js
server/api/team/index.js
server/api/team/team.attributes.js
server/api/team/team.controller.js
server/api/team/team.events.js
server/api/team/team.model.js
server/api/team/team.rpc.js
server/api/team/team.socket.js
server/api/teamVoicePrefix/teamVoicePrefix.attributes.js
server/api/teamVoicePrefix/teamVoicePrefix.model.js
server/api/teamVoiceQueue/index.js
server/api/teamVoiceQueue/teamVoiceQueue.attributes.js
server/api/teamVoiceQueue/teamVoiceQueue.model.js
server/api/teamVoiceQueue/teamVoiceQueue.rpc.js
server/api/template/index.js
server/api/template/template.attributes.js
server/api/template/template.controller.js
server/api/template/template.model.js
server/api/template/template.rpc.js
server/api/trigger/index.js
server/api/trigger/trigger.attributes.js
server/api/trigger/trigger.controller.js
server/api/trigger/trigger.model.js
server/api/trigger/trigger.rpc.js
server/api/trunk/index.js
server/api/trunk/trunk.attributes.js
server/api/trunk/trunk.controller.js
server/api/trunk/trunk.model.js
server/api/trunk/trunk.rpc.js
server/api/user-setting/index.js
server/api/user-setting/user-setting.attributes.js
server/api/user-setting/user-setting.controller.js
server/api/user-setting/user-setting.events.js
server/api/user-setting/user-setting.model.js
server/api/user-setting/user-setting.socket.js
server/api/user/index.js
server/api/user/user.attributes.js
server/api/user/user.controller.js
server/api/user/user.events.js
server/api/user/user.model.js
server/api/user/user.rpc.js
server/api/user/user.socket.js
server/api/userChatQueue/index.js
server/api/userChatQueue/userChatQueue.attributes.js
server/api/userChatQueue/userChatQueue.model.js
server/api/userChatQueue/userChatQueue.rpc.js
server/api/userFaxQueue/index.js
server/api/userFaxQueue/userFaxQueue.attributes.js
server/api/userFaxQueue/userFaxQueue.model.js
server/api/userFaxQueue/userFaxQueue.rpc.js
server/api/userMailQueue/index.js
server/api/userMailQueue/userMailQueue.attributes.js
server/api/userMailQueue/userMailQueue.model.js
server/api/userMailQueue/userMailQueue.rpc.js
server/api/userNotification/index.js
server/api/userNotification/userNotification.attributes.js
server/api/userNotification/userNotification.controller.js
server/api/userNotification/userNotification.events.js
server/api/userNotification/userNotification.model.js
server/api/userNotification/userNotification.rpc.js
server/api/userNotification/userNotification.socket.js
server/api/userOpenchannelQueue/index.js
server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js
server/api/userOpenchannelQueue/userOpenchannelQueue.model.js
server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js
server/api/userProfile/index.js
server/api/userProfile/userProfile.attributes.js
server/api/userProfile/userProfile.controller.js
server/api/userProfile/userProfile.events.js
server/api/userProfile/userProfile.model.js
server/api/userProfile/userProfile.rpc.js
server/api/userProfile/userProfile.socket.js
server/api/userProfileResource/index.js
server/api/userProfileResource/userProfileResource.attributes.js
server/api/userProfileResource/userProfileResource.controller.js
server/api/userProfileResource/userProfileResource.model.js
server/api/userProfileResource/userProfileResource.rpc.js
server/api/userProfileSection/index.js
server/api/userProfileSection/userProfileSection.attributes.js
server/api/userProfileSection/userProfileSection.controller.js
server/api/userProfileSection/userProfileSection.model.js
server/api/userProfileSection/userProfileSection.rpc.js
server/api/userSmsQueue/index.js
server/api/userSmsQueue/userSmsQueue.attributes.js
server/api/userSmsQueue/userSmsQueue.model.js
server/api/userSmsQueue/userSmsQueue.rpc.js
server/api/userVoicePrefix/userVoicePrefix.attributes.js
server/api/userVoicePrefix/userVoicePrefix.model.js
server/api/userVoiceQueue/index.js
server/api/userVoiceQueue/userVoiceQueue.attributes.js
server/api/userVoiceQueue/userVoiceQueue.model.js
server/api/userVoiceQueue/userVoiceQueue.rpc.js
server/api/userVoiceQueueRt/index.js
server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js
server/api/userVoiceQueueRt/userVoiceQueueRt.events.js
server/api/userVoiceQueueRt/userVoiceQueueRt.model.js
server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js
server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js
server/api/userWhatsappQueue/index.js
server/api/userWhatsappQueue/userWhatsappQueue.attributes.js
server/api/userWhatsappQueue/userWhatsappQueue.model.js
server/api/userWhatsappQueue/userWhatsappQueue.rpc.js
server/api/variable/index.js
server/api/variable/variable.attributes.js
server/api/variable/variable.controller.js
server/api/variable/variable.model.js
server/api/variable/variable.rpc.js
server/api/version/index.js
server/api/version/version.controller.js
server/api/voiceAgentReport/index.js
server/api/voiceAgentReport/voiceAgentReport.attributes.js
server/api/voiceAgentReport/voiceAgentReport.controller.js
server/api/voiceAgentReport/voiceAgentReport.model.js
server/api/voiceAgentReport/voiceAgentReport.rpc.js
server/api/voiceCallReport/index.js
server/api/voiceCallReport/voiceCallReport.attributes.js
server/api/voiceCallReport/voiceCallReport.controller.js
server/api/voiceCallReport/voiceCallReport.model.js
server/api/voiceCallReport/voiceCallReport.rpc.js
server/api/voiceChanSpy/index.js
server/api/voiceChanSpy/voiceChanSpy.attributes.js
server/api/voiceChanSpy/voiceChanSpy.controller.js
server/api/voiceChanSpy/voiceChanSpy.model.js
server/api/voiceChanSpy/voiceChanSpy.rpc.js
server/api/voiceContext/index.js
server/api/voiceContext/voiceContext.attributes.js
server/api/voiceContext/voiceContext.controller.js
server/api/voiceContext/voiceContext.model.js
server/api/voiceContext/voiceContext.rpc.js
server/api/voiceDialReport/index.js
server/api/voiceDialReport/voiceDialReport.attributes.js
server/api/voiceDialReport/voiceDialReport.controller.js
server/api/voiceDialReport/voiceDialReport.model.js
server/api/voiceDialReport/voiceDialReport.rpc.js
server/api/voiceExtension/index.js
server/api/voiceExtension/voiceExtension.attributes.js
server/api/voiceExtension/voiceExtension.controller.js
server/api/voiceExtension/voiceExtension.events.js
server/api/voiceExtension/voiceExtension.model.js
server/api/voiceExtension/voiceExtension.rpc.js
server/api/voiceExtension/voiceExtension.socket.js
server/api/voiceMail/index.js
server/api/voiceMail/voiceMail.attributes.js
server/api/voiceMail/voiceMail.controller.js
server/api/voiceMail/voiceMail.model.js
server/api/voiceMail/voiceMail.rpc.js
server/api/voiceMailMessage/index.js
server/api/voiceMailMessage/voiceMailMessage.attributes.js
server/api/voiceMailMessage/voiceMailMessage.controller.js
server/api/voiceMailMessage/voiceMailMessage.model.js
server/api/voiceMailMessage/voiceMailMessage.rpc.js
server/api/voiceMusicOnHold/index.js
server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js
server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js
server/api/voiceMusicOnHold/voiceMusicOnHold.model.js
server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js
server/api/voicePrefix/index.js
server/api/voicePrefix/voicePrefix.attributes.js
server/api/voicePrefix/voicePrefix.controller.js
server/api/voicePrefix/voicePrefix.events.js
server/api/voicePrefix/voicePrefix.model.js
server/api/voicePrefix/voicePrefix.rpc.js
server/api/voicePrefix/voicePrefix.socket.js
server/api/voiceQueue/index.js
server/api/voiceQueue/voiceQueue.attributes.js
server/api/voiceQueue/voiceQueue.controller.js
server/api/voiceQueue/voiceQueue.events.js
server/api/voiceQueue/voiceQueue.model.js
server/api/voiceQueue/voiceQueue.rpc.js
server/api/voiceQueue/voiceQueue.socket.js
server/api/voiceQueueReport/index.js
server/api/voiceQueueReport/voiceQueueReport.attributes.js
server/api/voiceQueueReport/voiceQueueReport.controller.js
server/api/voiceQueueReport/voiceQueueReport.events.js
server/api/voiceQueueReport/voiceQueueReport.model.js
server/api/voiceQueueReport/voiceQueueReport.rpc.js
server/api/voiceQueueReport/voiceQueueReport.socket.js
server/api/voiceQueuesLog/index.js
server/api/voiceQueuesLog/voiceQueuesLog.attributes.js
server/api/voiceQueuesLog/voiceQueuesLog.controller.js
server/api/voiceQueuesLog/voiceQueuesLog.model.js
server/api/voiceQueuesLog/voiceQueuesLog.rpc.js
server/api/voiceRecording/index.js
server/api/voiceRecording/voiceRecording.attributes.js
server/api/voiceRecording/voiceRecording.controller.js
server/api/voiceRecording/voiceRecording.model.js
server/api/voiceRecording/voiceRecording.rpc.js
server/api/voiceTransferReport/index.js
server/api/voiceTransferReport/voiceTransferReport.attributes.js
server/api/voiceTransferReport/voiceTransferReport.controller.js
server/api/voiceTransferReport/voiceTransferReport.model.js
server/api/voiceTransferReport/voiceTransferReport.rpc.js
server/api/webbar/index.js
server/api/webbar/webbar.controller.js
server/api/whatsappAccount/index.js
server/api/whatsappAccount/whatsappAccount.attributes.js
server/api/whatsappAccount/whatsappAccount.controller.js
server/api/whatsappAccount/whatsappAccount.events.js
server/api/whatsappAccount/whatsappAccount.model.js
server/api/whatsappAccount/whatsappAccount.rpc.js
server/api/whatsappAccount/whatsappAccount.socket.js
server/api/whatsappApplication/index.js
server/api/whatsappApplication/whatsappApplication.attributes.js
server/api/whatsappApplication/whatsappApplication.controller.js
server/api/whatsappApplication/whatsappApplication.model.js
server/api/whatsappApplication/whatsappApplication.rpc.js
server/api/whatsappInteraction/index.js
server/api/whatsappInteraction/whatsappInteraction.attributes.js
server/api/whatsappInteraction/whatsappInteraction.controller.js
server/api/whatsappInteraction/whatsappInteraction.events.js
server/api/whatsappInteraction/whatsappInteraction.model.js
server/api/whatsappInteraction/whatsappInteraction.rpc.js
server/api/whatsappInteraction/whatsappInteraction.socket.js
server/api/whatsappMessage/index.js
server/api/whatsappMessage/whatsappMessage.attributes.js
server/api/whatsappMessage/whatsappMessage.controller.js
server/api/whatsappMessage/whatsappMessage.events.js
server/api/whatsappMessage/whatsappMessage.model.js
server/api/whatsappMessage/whatsappMessage.rpc.js
server/api/whatsappMessage/whatsappMessage.socket.js
server/api/whatsappQueue/index.js
server/api/whatsappQueue/whatsappQueue.attributes.js
server/api/whatsappQueue/whatsappQueue.controller.js
server/api/whatsappQueue/whatsappQueue.events.js
server/api/whatsappQueue/whatsappQueue.model.js
server/api/whatsappQueue/whatsappQueue.rpc.js
server/api/whatsappQueue/whatsappQueue.socket.js
server/api/whatsappQueueReport/index.js
server/api/whatsappQueueReport/whatsappQueueReport.attributes.js
server/api/whatsappQueueReport/whatsappQueueReport.controller.js
server/api/whatsappQueueReport/whatsappQueueReport.model.js
server/api/whatsappQueueReport/whatsappQueueReport.rpc.js
server/api/whatsappTransferReport/index.js
server/api/whatsappTransferReport/whatsappTransferReport.attributes.js
server/api/whatsappTransferReport/whatsappTransferReport.controller.js
server/api/whatsappTransferReport/whatsappTransferReport.model.js
server/api/whatsappTransferReport/whatsappTransferReport.rpc.js
server/app.js
server/components/auth/service.js
server/components/contacts/index.js
server/components/contacts/sql-utils.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/import/cm/csvUpdates.js
server/components/integrations/configuration.js
server/components/interaction/service.js
server/components/interaction/sql-utils.js
server/components/interaction/update-interaction.js
server/components/interaction/utils.js
server/components/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.js
server/components/realtime/agents.js
server/components/realtime/queues.js
server/config/express.js
server/config/license/hardware.js
server/config/license/index.js
server/config/license/util.js
server/config/local.env.js
server/config/logger.js
server/config/pm2/config.js
server/config/pm2/index.js
server/config/schedule/chat.js
server/config/schedule/cloud-provider.js
server/config/schedule/index.js
server/config/schedule/transcribe.js
server/config/schedule/whatsapp.js
server/config/seedContact.js
server/config/seedUsers.js
server/config/socketio.js
server/config/triggers/index.js
server/config/utils.js
server/errors/api.js
server/errors/index.js
server/migrations/2.6.22.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/events.js
server/services/agi/graph/index.js
server/services/agi/index.js
server/services/agi/mailRpc/index.js
server/services/agi/project.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/index.js
server/services/ami/dialer/models/action.js
server/services/ami/dialer/models/agentComplete.js
server/services/ami/dialer/models/final.js
server/services/ami/dialer/models/hangup.js
server/services/ami/dialer/models/history.js
server/services/ami/dialer/models/queueCallerAbandon.js
server/services/ami/dialer/utils/hopper.js
server/services/ami/dialer/utils/index.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/voiceQueueSummary.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/realtime/utils.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/cmHopperAdditionalPhone.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/interval.js
server/services/ami/rpc/memberReport.js
server/services/ami/rpc/setting.js
server/services/ami/rpc/template.js
server/services/ami/rpc/trigger.js
server/services/ami/rpc/trunk.js
server/services/ami/rpc/user.js
server/services/ami/rpc/voiceAgentReport.js
server/services/ami/rpc/voiceCallReport.js
server/services/ami/rpc/voiceDialReport.js
server/services/ami/rpc/voiceExtension.js
server/services/ami/rpc/voiceQueue.js
server/services/ami/rpc/voiceQueueReport.js
server/services/ami/rpc/voiceQueueRt.js
server/services/ami/rpc/voiceRecording.js
server/services/ami/rpc/voiceTransferReport.js
server/services/ami/server/index.js
server/services/ami/trigger/cmContact/index.js
server/services/ami/trigger/index.js
server/services/ami/trigger/integration/desk.js
server/services/ami/trigger/integration/dynamics365.js
server/services/ami/trigger/integration/freshdesk.js
server/services/ami/trigger/integration/freshsales.js
server/services/ami/trigger/integration/index.js
server/services/ami/trigger/integration/salesforce.js
server/services/ami/trigger/integration/servicenow.js
server/services/ami/trigger/integration/sugarcrm.js
server/services/ami/trigger/integration/util.js
server/services/ami/trigger/integration/vtiger.js
server/services/ami/trigger/integration/zendesk.js
server/services/ami/trigger/integration/zoho.js
server/services/ami/trigger/script/index.js
server/services/ami/trigger/urlforward/index.js
server/services/email/client.js
server/services/email/index.js
server/services/email/lib/email.js
server/services/email/lib/imap.js
server/services/email/lib/smtp.js
server/services/email/lib/utils.js
server/services/email/model/mailAccount.js
server/services/email/realtime/index.js
server/services/email/rpc/mailAccount.js
server/services/email/rpc/setting.js
server/services/email/server/index.js
server/services/express/index.js
server/services/routing/client.js
server/services/routing/index.js
server/services/routing/lib/rule-engine.js
server/services/routing/mailRpc/index.js
server/services/routing/model/agent.js
server/services/routing/model/chatQueue.js
server/services/routing/model/faxQueue.js
server/services/routing/model/interval.js
server/services/routing/model/mailQueue.js
server/services/routing/model/openchannelQueue.js
server/services/routing/model/smsQueue.js
server/services/routing/model/whatsappQueue.js
server/services/routing/realtime/index.js
server/services/routing/rpc/chatInteraction.js
server/services/routing/rpc/chatMessage.js
server/services/routing/rpc/chatQueue.js
server/services/routing/rpc/chatQueueReport.js
server/services/routing/rpc/faxInteraction.js
server/services/routing/rpc/faxMessage.js
server/services/routing/rpc/faxQueue.js
server/services/routing/rpc/faxQueueReport.js
server/services/routing/rpc/interval.js
server/services/routing/rpc/mailInteraction.js
server/services/routing/rpc/mailMessage.js
server/services/routing/rpc/mailQueue.js
server/services/routing/rpc/mailQueueReport.js
server/services/routing/rpc/openchannelInteraction.js
server/services/routing/rpc/openchannelMessage.js
server/services/routing/rpc/openchannelQueue.js
server/services/routing/rpc/openchannelQueueReport.js
server/services/routing/rpc/smsInteraction.js
server/services/routing/rpc/smsMessage.js
server/services/routing/rpc/smsQueue.js
server/services/routing/rpc/smsQueueReport.js
server/services/routing/rpc/user.js
server/services/routing/rpc/whatsappInteraction.js
server/services/routing/rpc/whatsappMessage.js
server/services/routing/rpc/whatsappQueue.js
server/services/routing/rpc/whatsappQueueReport.js
server/services/routing/server/applications/agent.js
server/services/routing/server/applications/amazonlex.js
server/services/routing/server/applications/autoreply.js
server/services/routing/server/applications/close.js
server/services/routing/server/applications/dialogflow.js
server/services/routing/server/applications/dialogflowV2.js
server/services/routing/server/applications/gotoif.js
server/services/routing/server/applications/gotop.js
server/services/routing/server/applications/message.js
server/services/routing/server/applications/noop.js
server/services/routing/server/applications/queue.js
server/services/routing/server/applications/strategy/agent.js
server/services/routing/server/applications/strategy/beepall.js
server/services/routing/server/applications/strategy/index.js
server/services/routing/server/applications/strategy/rrmemory.js
server/services/routing/server/applications/strategy/util.js
server/services/routing/server/applications/system.js
server/services/routing/server/applications/tag.js
server/services/routing/server/applications/tvox.js
server/services/routing/server/applications/utils.js
server/services/routing/server/index.js
server/services/routing/server/interval.js
server/services/xdr/agents.controller.js
server/services/xdr/calls.controller.js
server/services/xdr/core.controller.js
server/services/xdr/dials.controller.js
server/services/xdr/index.js
server/services/xdr/members.controller.js
server/services/xdr/queues.controller.js
server/services/xdr/recordings.controller.js
server/services/xdr/transfers.controller.js
server/services/xdr/utils.js
server/utils/client-side-logger.js
server/utils/iftime.js
server/utils/loggers.js
server/utils/mask-sensitive-data.js
server/utils/safe-template.js
server/utils/update-app-config.js

index e2ef896..e6688c1 100644 (file)
@@ -18647,7 +18647,7 @@ define({ "api": [
     ],
     "name": "notify",
     "group": "Openchannel_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>Follow this link to check the documentation: <pre>&lt;a target=&quot;_blank&quot; href=&quot;https://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252245/New+Channels+Configuration+Steps&quot;</a></pre></p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>Follow this link to check the documentation: <pre><a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice</a></pre></p>",
     "version": "0.0.0",
     "filename": "server/api/openchannelAccount/index.js",
     "groupTitle": "Openchannel_Accounts"
index ce85c1f..0586e41 100644 (file)
     ],
     "name": "notify",
     "group": "Openchannel_Accounts",
-    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>Follow this link to check the documentation: <pre>&lt;a target=&quot;_blank&quot; href=&quot;https://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252245/New+Channels+Configuration+Steps&quot;</a></pre></p>",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>Follow this link to check the documentation: <pre><a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice</a></pre></p>",
     "version": "0.0.0",
     "filename": "server/api/openchannelAccount/index.js",
     "groupTitle": "Openchannel_Accounts"
index da169b1..4d1610a 100644 (file)
@@ -1,11 +1,11 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.6.22",
+  "version": "2.6.24",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
     "title": "Introduction",
-    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252454/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre class=\"prettyprint lang-sh\">GET /api/users\n</pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre class=\"prettyprint lang-sh\">https://motion.xcally.com/api/users\n</pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre class=\"prettyprint lang-sh\">GET  /api/users/{id}\n</pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token or API Key.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or API Key.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -H \"Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo\" https://motion.xcally.com/api/users\n</pre>\n<h3>API Key</h3>\n<p>In your request, specify the API Key in apikey query parameter</p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl https://motion.xcally.com/api/users?apikey=eyJhbGciOiJIUzUxMiIsInR5cC...\n</pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at support@xcally.com.</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"
+    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://wiki.xcallymotion.com/display/XMV/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre class=\"prettyprint lang-sh\">GET /api/users\n</pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre class=\"prettyprint lang-sh\">https://motion.xcally.com/api/users\n</pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre class=\"prettyprint lang-sh\">GET  /api/users/{id}\n</pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token or API Key.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or API Key.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -H \"Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo\" https://motion.xcally.com/api/users\n</pre>\n<h3>API Key</h3>\n<p>In your request, specify the API Key in apikey query parameter</p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl https://motion.xcally.com/api/users?apikey=eyJhbGciOiJIUzUxMiIsInR5cC...\n</pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at support@xcally.com.</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"
   },
   "template": {
     "withGenerator": false,
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-11-25T08:26:34.283Z",
+    "time": "2022-11-25T08:39:50.701Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 3ce811a..bc831ba 100644 (file)
@@ -1,11 +1,11 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.6.22",
+  "version": "2.6.24",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
     "title": "Introduction",
-    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252454/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre class=\"prettyprint lang-sh\">GET /api/users\n</pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre class=\"prettyprint lang-sh\">https://motion.xcally.com/api/users\n</pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre class=\"prettyprint lang-sh\">GET  /api/users/{id}\n</pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token or API Key.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or API Key.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -H \"Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo\" https://motion.xcally.com/api/users\n</pre>\n<h3>API Key</h3>\n<p>In your request, specify the API Key in apikey query parameter</p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl https://motion.xcally.com/api/users?apikey=eyJhbGciOiJIUzUxMiIsInR5cC...\n</pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at support@xcally.com.</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"
+    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://wiki.xcallymotion.com/display/XMV/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre class=\"prettyprint lang-sh\">GET /api/users\n</pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre class=\"prettyprint lang-sh\">https://motion.xcally.com/api/users\n</pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre class=\"prettyprint lang-sh\">GET  /api/users/{id}\n</pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token or API Key.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or API Key.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -H \"Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo\" https://motion.xcally.com/api/users\n</pre>\n<h3>API Key</h3>\n<p>In your request, specify the API Key in apikey query parameter</p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl https://motion.xcally.com/api/users?apikey=eyJhbGciOiJIUzUxMiIsInR5cC...\n</pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at support@xcally.com.</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"
   },
   "template": {
     "withGenerator": false,
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-11-25T08:26:34.283Z",
+    "time": "2022-11-25T08:39:50.701Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index e40c91e..7ce8e58 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.6.22",
+  "version": "2.6.24",
   "dependencies": {
     "@babel/code-frame": {
       "version": "7.18.6",
index 2279703..5d06901 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.6.22",
+  "version": "2.6.24",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
index 62367a8..822cea4 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "نحن نستخدم ملفات تعريف الارتباط لنمنحك أفضل تجربة. اقرأ سياسة ملفات تعريف الارتباط."
+    "COOKIE_LAW": "نحن نستخدم ملفات تعريف الارتباط لنمنحك أفضل تجربة. اقرأ <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie Policy\" class=\"blue-fg\"> سياسة ملفات تعريف الارتباط </a>."
   }
 }
index 2d99045..8a47415 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
     "ERRORS": {}
   }
 }
index 2d99045..8a47415 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
     "ERRORS": {}
   }
 }
index 0b99f17..3ce3659 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Vi bruger cookies til at give dig den bedste oplevelse. Læs vores cookiepolitik."
+    "COOKIE_LAW": "Vi bruger cookies til at give dig den bedste oplevelse. Læs vores <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> cookiepolitik </a>."
   }
 }
index ba4c556..11227ad 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Wir verwenden Cookies, um Ihnen die bestmögliche Erfahrung zu bieten. Lesen Sie unsere Cookie-Richtlinie."
+    "COOKIE_LAW": "Wir verwenden Cookies, um Ihnen die bestmögliche Erfahrung zu bieten. Lesen Sie unsere <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> Cookie-Richtlinie </a>."
   }
 }
index 2d99045..8a47415 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
     "ERRORS": {}
   }
 }
index ac52e4e..c74cc69 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Usamos cookies para brindarle la mejor experiencia. Lea nuestra política de cookies."
+    "COOKIE_LAW": "Usamos cookies para brindarle la mejor experiencia. Lea nuestra <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\"class=\"blue-fg\"> política de cookies </a>."
   }
 }
index 002d860..ee6d003 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "Kasutame küpsiseid, et pakkuda Sulle parimat kogemust. Loe meie cookie policy.",
+    "COOKIE_LAW": "Kasutame küpsiseid, et pakkuda Sulle parimat kogemust. Loe meie <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
     "ERRORS": {}
   }
 }
index cad1da2..e643895 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "ما از کوکی ها استفاده می کنیم تا بهترین تجربه را به شما بدهیم. خط مشی کوکی را بخوانید."
+    "COOKIE_LAW": "ما از کوکی ها استفاده می کنیم تا بهترین تجربه را به شما بدهیم. <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> خط مشی کوکی </a> را بخوانید."
   }
 }
index 504129d..95c865f 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Käytämme evästeitä saadaksesi sinulle parhaan mahdollisen kokemuksen. Lue evästekäytäntö."
+    "COOKIE_LAW": "Käytämme evästeitä saadaksesi sinulle parhaan mahdollisen kokemuksen. Lue <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> evästekäytäntö </a>."
   }
 }
index 56b28f3..5319e13 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Nous utilisons des cookies pour vous offrir la meilleure expérience. Lisez notre politique sur les cookies."
+    "COOKIE_LAW": "Nous utilisons des cookies pour vous offrir la meilleure expérience. Lisez notre <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> politique sur les cookies </a>."
   }
 }
index 9e6f38d..e2054af 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "אנו משתמשים בקובצי cookie כדי להעניק לך חוויה מיטבית. לרשותך נוסח המדיניות שלנו בנושא קובצי cookie.",
+    "COOKIE_LAW": "אנו משתמשים בקובצי cookie כדי להעניק לך חוויה מיטבית. לרשותך נוסח <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">המדיניות שלנו בנושא קובצי cookie</a>.",
     "ERRORS": {}
   }
 }
index c27a18b..be3c5b1 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "हम आपको बेहतरीन अनुभव देने के लिए कुकीज़ का उपयोग करते हैं। हमारे कुकी नीति पढ़ें।"
+    "COOKIE_LAW": "हम आपको बेहतरीन अनुभव देने के लिए कुकीज़ का उपयोग करते हैं। हमारे <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> कुकी नीति </a> पढ़ें।"
   }
 }
index 2d99045..8a47415 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
     "ERRORS": {}
   }
 }
index ba65ebe..fb8e39c 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Kami menggunakan cookie untuk memberi Anda pengalaman terbaik. Baca kebijakan cookie kami."
+    "COOKIE_LAW": "Kami menggunakan cookie untuk memberi Anda pengalaman terbaik. Baca <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> kebijakan cookie </a> kami."
   }
 }
index 2d99045..8a47415 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
     "ERRORS": {}
   }
 }
index 364b39e..efbfc38 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Utilizziamo i cookie per fornirti un'esperienza migliore. Leggi la nostra cookie policy."
+    "COOKIE_LAW": "Utilizziamo i cookie per fornirti un'esperienza migliore. Leggi la nostra <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>."
   }
 }
index 639a80b..41f2c92 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "私たちはあなたに最高の経験を与えるためにクッキーを使用しています。クッキーポリシーをご覧ください。"
+    "COOKIE_LAW": "私たちはあなたに最高の経験を与えるためにクッキーを使用しています。 <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie Policy\" class=\"blue-fg\">クッキーポリシー</a>をご覧ください。"
   }
 }
index 8938b02..fb1d248 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "우리는 쿠키를 사용하여 최고의 경험을 제공합니다. 쿠키 정책 을 읽어보십시오."
+    "COOKIE_LAW": "우리는 쿠키를 사용하여 최고의 경험을 제공합니다. <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> 쿠키 정책 </a>을 읽어보십시오."
   }
 }
index 2d99045..8a47415 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
     "ERRORS": {}
   }
 }
index 803db53..201d1ee 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Mēs izmantojam sīkdatnes, lai sniegtu jums vislabāko pieredzi. Lasiet mūsu sīkdatņu politiku."
+    "COOKIE_LAW": "Mēs izmantojam sīkdatnes, lai sniegtu jums vislabāko pieredzi. Lasiet mūsu <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">sīkdatņu politiku</a>."
   }
 }
index 411a580..2ef529e 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Wij gebruiken cookies om u de beste ervaring te bieden. Lees ons cookiebeleid."
+    "COOKIE_LAW": "Wij gebruiken cookies om u de beste ervaring te bieden. Lees ons <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> cookiebeleid </a>."
   }
 }
index d378a1d..2423f0c 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Vi bruker informasjonskapsler for å gi deg den beste opplevelsen. Les vår informasjonskapsel."
+    "COOKIE_LAW": "Vi bruker informasjonskapsler for å gi deg den beste opplevelsen. Les vår <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> informasjonskapsel </a>."
   }
 }
index 8d145f8..230e172 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Używamy plików cookie, aby zapewnić Ci jak najlepsze wrażenia. Przeczytaj naszą politykę dotyczącą plików cookie."
+    "COOKIE_LAW": "Używamy plików cookie, aby zapewnić Ci jak najlepsze wrażenia. Przeczytaj naszą <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> politykę dotyczącą plików cookie </a>."
   }
 }
index 2d99045..8a47415 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "We use cookies to give you the best experience. Read our cookie policy.",
+    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
     "ERRORS": {}
   }
 }
index 3423241..353f9d8 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Nós usamos cookies para lhe proporcionar a melhor experiência. Leia nossa política de cookies."
+    "COOKIE_LAW": "Nós usamos cookies para lhe proporcionar a melhor experiência. Leia nossa <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> política de cookies </a>."
   }
 }
index d23b6cf..b096c67 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Мы используем файлы cookie, чтобы дать вам лучший опыт. Ознакомьтесь с нашей политикой cookie."
+    "COOKIE_LAW": "Мы используем файлы cookie, чтобы дать вам лучший опыт. Ознакомьтесь с нашей <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> политикой cookie </a>."
   }
 }
index e0e4c3d..5db59f7 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Vi använder cookies för att ge dig den bästa upplevelsen. Läs vår cookie policy."
+    "COOKIE_LAW": "Vi använder cookies för att ge dig den bästa upplevelsen. Läs vår <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> cookie policy </a>."
   }
 }
index 5ebf75e..bb26fe4 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "Size en iyi deneyimi sunmak için çerezleri kullanıyoruz. çerez politikamızı okuyun."
+    "COOKIE_LAW": "Size en iyi deneyimi sunmak için çerezleri kullanıyoruz. <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> çerez politikamızı </a> okuyun."
   }
 }
index 87fc928..ca6d024 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "我们使用cookies来为您提供最佳体验。请阅读我们的 Cookie政策。"
+    "COOKIE_LAW": "我们使用cookies来为您提供最佳体验。请阅读我们的<a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> Cookie政策</a>。"
   }
 }
index ef32d41..8f290a1 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
     "ERRORS": {},
-    "COOKIE_LAW": "我們使用cookies來為您提供最佳體驗。請閱讀我們的 Cookie政策。"
+    "COOKIE_LAW": "我們使用cookies來為您提供最佳體驗。請閱讀我們的<a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> Cookie政策</a>。"
   }
 }
index 6a12726..50de0e3 100644 (file)
     "MICROSOFT_AUTHENTICATION_SUCCESS": "Authentication to the Microsoft Identity Platform completed successfully",
     "MICROSOFT_AUTHENTICATION_FAIL": "Something went wrong while authenticating to the Microsoft Identity Platform",
     "UPDATE_CLIENT_SECRET": "Update Client Secret",
+    "FILTER_FULLNAME": "Full Name",
+    "FILTERS": "Filters",
     "HELP": {
       "DEFAULTSCREENRECORDINGPATH": "Enter the path where to store screen recording files on the Agent computer (leave empty for default Video Folder path)",
       "RTLSUPPORT": "Enables the RTL Support for Arabic, Persian and Hebrew languages",
       "SEARCH_ON_ENTER_KEY": "Start searching only after the agent hits the Enter key",
       "INTERACTIONS_RELOAD_TIMEOUT": "Time interval in seconds after which interactions are reloaded (0 = real-time update)",
       "CLIENT_SECRET": "The secret will no longer be visible once the configuration is saved. Store it safely if you want to use it elsewhere.",
-      "LIMIT_TABS": "Maximum number of possible interaction tabs open"
+      "LIMIT_TABS": "Maximum number of possible interaction tabs open",
+      "FILTER_FULLNAME": "Enable filter in Full Name field. Only numbers, letters, spaces and specific characters (_,-) will be supported"
     },
     "ERRORS": {
       "CHATTIMEOUT_REQUIRED": "Mandatory field",
index 9f67454..bcb13b8 100644 (file)
     "MICROSOFT_AUTHENTICATION_FAIL": "Si è verificato un errore durante l'autenticazione a Microsoft Identity Platform",
     "UPDATE_CLIENT_SECRET": "Aggiorna segreto dell'applicazione",
     "DISABLED_COOKIE": "Banner dei cookies",
+    "FILTER_FULLNAME": "Nome completo",
+    "FILTERS": "Filtri",
     "HELP": {
       "ADDRESS": "Indirizzo della rete",
       "LOCALNETADDRESS": "Indirizzo IP/Subnet mask",
       "SEARCH_ON_ENTER_KEY": "Avvia la ricerca soltanto quando l'agente preme il tasto Invio",
       "INTERACTIONS_RELOAD_TIMEOUT": "Intervallo di tempo espresso in secondi dopo cui vengono ricaricate le interazioni (0 = aggiornamento real-time)",
       "CLIENT_SECRET": "Il segreto non sarà più visibile una votla salvata la configurazione. Conservalo in un posto sicuro se vuoi usarlo altrove.",
-      "LIMIT_TABS": "Numero massimo di tab interazione possibili aperte"
+      "LIMIT_TABS": "Numero massimo di tab interazione possibili aperte",
+      "FILTER_FULLNAME": "Abilita il filtro nel campo Nome Completo. Verranno supportati solo numeri, lettere, spazi e caratteri specifici (_,-)"
     },
     "ERRORS": {
       "CHATTIMEOUT_REQUIRED": "Campo obbligatorio",
index a4211b6..cf6d8f9 100644 (file)
       "NOREPLYNUMBER_REQUIRED": "Mandatory field",
       "BUSYNUMBER_REQUIRED": "Mandatory field",
       "USERNAME_MUST_VALID_PATTERN": "Wrong format {{regex}}",
+      "FULLNAME_MUST_VALID_PATTERN": "Wrong format {{regex}}",
+      "CALLERID_MUST_VALID_PATTERN": "Wrong format {{regex}}",
       "REMOTECONTROLPORT_REQUIRED": "Mandatory field",
       "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
       "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
       "ENABLEAUTOMATICSCREENRECORDING": "The functionality is available only for voice channel",
       "MASK_SENSITIVE_DATA": "Mask any sensitive data throughout the application (e.g. phone numbers and email addresses)",
       "WSS_PORT": "Default: 8089",
-      "AD_SSO_ENABLED": "Login in with your Active Directory credentials"
+      "AD_SSO_ENABLED": "Login in with your Active Directory credentials",
+      "FILTERFULLNAME": "Only numbers, letters, spaces and specific characters (_,-) are supported"
     },
     "NEW_PASSWORD": "New Password",
     "CONFIRM_PASSWORD": "Confirm Password",
index 5d106f4..230797d 100644 (file)
@@ -79,6 +79,8 @@
       "NOREPLYNUMBER_REQUIRED": "Campo obbligatorio",
       "BUSYNUMBER_REQUIRED": "Campo obbligatorio",
       "USERNAME_MUST_VALID_PATTERN": "Il campo deve avere un formato valido {{regex}}",
+      "FULLNAME_MUST_VALID_PATTERN": "Il campo deve avere un formato valido {{regex}}",
+      "CALLERID_MUST_VALID_PATTERN": "Il campo deve avere un formato valido {{regex}}",
       "REMOTECONTROLPORT_REQUIRED": "Campo obbligatorio",
       "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
       "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
       "WHATSAPPCAPACITY": "Numero massimo di interazioni di canale simultanee per agente (0 = illimitato)",
       "MASK_SENSITIVE_DATA": "Maschera i dati sensibili in tutta l'applicazione (es. numeri di telefono e indirizzi email)",
       "WSS_PORT": "Default: 8089",
-      "AD_SSO_ENABLED": "Accedi con le tue credenziali di Active Directory"
+      "AD_SSO_ENABLED": "Accedi con le tue credenziali di Active Directory",
+      "FILTERFULLNAME": "Sono supportati solo numeri, lettere, spazi e caratteri specifici (_,-)"
     },
     "NEW_PASSWORD": "Nuova Password",
     "CONFIRM_PASSWORD": "Conferma Password",
index d3bb31a..eb29f3a 100644 (file)
@@ -66,7 +66,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.788d460c.js"></script>
+  <script src="scripts/app.7844957e.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 53%
rename from public/scripts/app.788d460c.js
rename to public/scripts/app.7844957e.js
index f6f3aee..3d36447 100644 (file)
@@ -1 +1 @@
-!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.client-side-logging",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors","app.user-setting","app.client-side-logging"])}(),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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,waitForTheAssignedQueue,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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,waitForTheAssignedQueue,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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",params:{channel:"chat"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,ChatWebsiteId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,MailAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,SmsAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,OpenchannelAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"id,name",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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,FaxAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,WhatsappAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,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:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",params:{channel:"fax"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"name",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",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,modernAuthentication,CloudProviderId",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})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver",function(e){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",params:{channel:"mail"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"name",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",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,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",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.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"outbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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",params:{direction:"outbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",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})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"outbound"})}]},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,createdAt",role:"agent",sort:"-createdAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",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: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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",params:{channel:"openchannel"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",params:{channel:"sms"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",role:"admin,user",sort:"-updatedAt",userSetting:!0,limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",role:"agent",sort:"-updatedAt",userSetting:!0,limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1013})}]},authenticate:!0,permissionId:1013,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},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:"fullname",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,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:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"inbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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",params:{direction:"inbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",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})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"inbound"})}]},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,createdAt",role:"agent",sort:"-createdAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",params:{channel:"whatsapp"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,waitForTheAssignedQueue,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";angular.module("app.user-setting",[])}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami({userSetting:!0}).$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},setMessengerSoundNotification:function(e){u().messengerSoundNotification=e}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(n,t,a,i,s){var o;return{request:function(e){var n=a.get("motion.token");return e.headers=e.headers||{},s.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:a.remove("motion.token"),n.$broadcast("webrtc::logout"),(o||(o=i.get("$state"))).go("app.login")}return t.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";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),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){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","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(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.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"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.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"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.pendingCondition?c():d()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(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){y.error(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,x("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return x("speaker",!1)}).then(function(){return x("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)&&(y.info("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):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,S(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.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 I(e){y.debug("answer -> session",e._request),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 O(e,n){y.debug("terminate -> session",e._request),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 y.debug("getVoiceChannels -> session",t._request),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 w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(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&&S()}).catch(function(e){y.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&&S()}).catch(function(e){y.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&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(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 P(){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){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}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(c.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){y.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,T(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){y.debug("getNotification -> session",n._request);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(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,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){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,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=w.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){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),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){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){y.error(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 D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);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 D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),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){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),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){y.debug("referAttended -> session",e._request),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=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},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(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},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){y.error(e)})})},E.patchConference=P,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.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 D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")}),n.onbeforeunload=function(){E.sessions.forEach(function(e){E.terminate(e)})}}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager","ClientSideLoggingService"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"=",registered:"="},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,i,a,s,o){var r=this;function l(e,n){var t=n?"Transfer Success":"Transfer Failed",a="top right";return console.debug("onTransferCallback -> session, textContent, position, delay",e,t,a,3e3),function(){i.show(i.simple().textContent(t).position(a).hideDelay(3e3))}}function d(e){n.hide(e)}r.title="Refer Attended",r.sessions=a,r.session=s,r.isJabraEnabled=o,r.sessionTarget=null,a.length&&(r.target=a[0].user),r.closeDialog=d,r.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===r.target)return e});n=t.outgoing?(e=t,r.session):(e=r.session,t);console.debug("session.refer() -> source, target, replaces, callback",n,e.user,e,"onTransferCallback"),n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:l(s,!0),requestFailed:l(s,!1)}}),function(e,n){e.terminate(),jabra&&n&&jabra.onHook();d()}(s,o)}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t,a,i){var o=this;function r(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}o.currentUser=a.getCurrentUser(),o.messengerSoundNotification=o.currentUser.messengerSoundNotification,_.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=r(n,"audiooutput","ringingId"),s.speakerId=r(n,"audiooutput","speakerId"),s.microphoneId=r(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,o.conf=angular.copy(s),o.devices=n,o.activeSessions=t,o.saveSettings=function(){i.user.messengerSoundNotification({id:o.currentUser.id,enabled:o.messengerSoundNotification}).$promise.then(function(){a.setMessengerSoundNotification(o.messengerSoundNotification),e.hide(o.conf)})},o.closeDialog=function(){e.hide()},o.isCompatibleBrowser=function(){return"chrome"===o.conf.browserName.toLowerCase()||"opera"===o.conf.browserName.toLowerCase()||"safari"===o.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions","Auth","api"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(e,t,a){var i=this;function s(e,n,t){r(e).then(function(){n&&!1!==t&&i.search()})}function o(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()}function r(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};return a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){r(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=s,i.onDateRangeSelection=o,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]]:[],r(e).then(function(){i.search()})},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),r(e).then(function(){i.search()})},e.$on("ms-quick-filter:update",function(e,t){t.filters.forEach(function(e){var n=_.find(i.filters,["name",e]);if(n)switch(n.type){case"date":o(n);break;case"multiselect":s(n,!0,t.update);break;case"select":i.search()}})})}e.$inject=["$scope","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"}})}(),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(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(!0)},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(!0);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"></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(e,n,t,a,i){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(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw 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){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},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:"=",ngChange:"&"},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"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var i=this;i.filter=[],i.filtered=!1,i.fontSize=20,i.label="",i.getCount=function(e){var n=0;if(e){i.fontSize=e.attrs[r]&&e.attrs[r].value?parseInt(e.attrs[r].value)-parseInt(e.attrs[r].value)%2:20;var t=e.attrs.find(function(e){return"attrChannel"===e.name});if(t||e.attrs.push({name:"attrChannel",value:"voice"}),"voice"!==e.attrs[l].value?"talking"===e.attrs[s].value?i.label="Opened":"answered"===e.attrs[s].value?i.label="Managed":i.label=e.attrs[s].value:i.label=e.attrs[s].value,e.attrs[l].value.toLowerCase().includes("voice")){e.attrs[o].value&&e.attrs[o].value.length?(i.filtered=!0,i.filter=_.intersection(e.voiceQueuesSelected,e.attrs[o].value)):(i.filtered=!1,i.filter=e.voiceQueuesSelected);for(var a=0;a<e.voiceQueues.rows.length;a+=1)_.includes(i.filter,e.voiceQueues.rows[a].id)&&(n+=e.voiceQueues.rows[a][e.attrs[s].value]?parseInt(e.voiceQueues.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("chat")){e.attrs[g].value&&e.attrs[g].value.length?(i.filtered=!0,i.filter=_.intersection(e.chatWebsitesSelected,e.attrs[g].value)):(i.filtered=!1,i.filter=e.chatWebsitesSelected);for(var a=0;a<e.chatWebsites.rows.length;a+=1)_.includes(i.filter,e.chatWebsites.rows[a].id)&&(n+=e.chatWebsites.rows[a][e.attrs[s].value]?parseInt(e.chatWebsites.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("fax")){e.attrs[c].value&&e.attrs[c].value.length?(i.filtered=!0,i.filter=_.intersection(e.faxAccountsSelected,e.attrs[c].value)):(i.filtered=!1,i.filter=e.faxAccountsSelected);for(var a=0;a<e.faxAccounts.rows.length;a+=1)_.includes(i.filter,e.faxAccounts.rows[a].id)&&(n+=e.faxAccounts.rows[a][e.attrs[s].value]?parseInt(e.faxAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("mail")){e.attrs[d].value&&e.attrs[d].value.length?(i.filtered=!0,i.filter=_.intersection(e.mailAccountsSelected,e.attrs[d].value)):(i.filtered=!1,i.filter=e.mailAccountsSelected);for(var a=0;a<e.mailAccounts.rows.length;a+=1)_.includes(i.filter,e.mailAccounts.rows[a].id)&&(n+=e.mailAccounts.rows[a][e.attrs[s].value]?parseInt(e.mailAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("openchannel")){e.attrs[u].value&&e.attrs[u].value.length?(i.filtered=!0,i.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[u].value)):(i.filtered=!1,i.filter=e.openchannelAccountsSelected);for(var a=0;a<e.openchannelAccounts.rows.length;a+=1)_.includes(i.filter,e.openchannelAccounts.rows[a].id)&&(n+=e.openchannelAccounts.rows[a][e.attrs[s].value]?parseInt(e.openchannelAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("whatsapp")){e.attrs[p].value&&e.attrs[p].value.length?(i.filtered=!0,i.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[p].value)):(i.filtered=!1,i.filter=e.whatsappAccountsSelected);for(var a=0;a<e.whatsappAccounts.rows.length;a+=1)_.includes(i.filter,e.whatsappAccounts.rows[a].id)&&(n+=e.whatsappAccounts.rows[a][e.attrs[s].value]?parseInt(e.whatsappAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("sms")){e.attrs[m].value&&e.attrs[m].value.length?(i.filtered=!0,i.filter=_.intersection(e.smsAccountsSelected,e.attrs[m].value)):(i.filtered=!1,i.filter=e.smsAccountsSelected);for(var a=0;a<e.smsAccounts.rows.length;a+=1)_.includes(i.filter,e.smsAccounts.rows[a].id)&&(n+=e.smsAccounts.rows[a][e.attrs[s].value]?parseInt(e.smsAccounts.rows[a][e.attrs[s].value]):0)}}return n};var s=0,o=1,r=2,l=3,d=4,c=5,m=6,u=7,p=8,g=9})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(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}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,e,n,i){var s={},o={},r="mail",l={};function d(){if(o=n.getCurrentUser(),e.localStorage.getItem("motion2.home:"+o.id)||(r="dashboard"),l=e.localStorage.getItem("motion2.home."+r+":"+o.id)){var a=JSON.parse(l);a.drafts?o.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,i.mask(t))}):a.drafts={},l=a}else l={drafts:{}};return l.drafts}function c(){_.isEmpty(s.drafts)?delete l.drafts:l.drafts=s.drafts,e.localStorage.setItem("motion2.home."+r+":"+o.id,JSON.stringify(l))}return s.init=function(){s.drafts=d()},s.getByInteraction=function(n){return s.drafts=d(),_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n})},s.removeByInteraction=function(n){s.drafts=d();var e=_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete s.drafts[e.id],c())},s.add=function(e){s.drafts=d();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};s.drafts[t.id]=t,c()},s.update=function(e){s.drafts=d();var n=s.drafts[e.id];n&&(n.content=e.message,s.drafts[e.id]=n,c())},s.open=function(e){s.drafts=d();var n=s.drafts[e];n&&t.$broadcast("open"+_.startCase(r)+"Draft",n)},s.remove=function(e){s.drafts=d(),s.drafts[e]&&(delete s.drafts[e],c())},s}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",e)}(),function(){"use strict";function e(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$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(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(h,f){var s=["available","loggedIn","paused","waiting"],o=["busy","inUse","invalid","loggedInDb","notInUse","onHold","ringing","ringInUse","talking","unavailable","unknown"],r=["pTalking","originated","message","statusMessage","dialActive","dialMethod","Trunk","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],n=["idle","unknown","unavailable","ringing"];function t(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function a(e){return!!_.isNil(e)||_.includes(n,e)}function b(e){var n;return t(e,!1)?"pause":t(e,!0)?"*pause":("idle"!==(n=e).voiceStatus&&n.voicePause?n.voiceStatus="pause":!_.every([n.chatStatus,n.faxStatus,n.mailStatus,n.openchannelStatus,n.smsStatus,n.voiceStatus,n.whatsappStatus],a))?"busy":"idle"}function A(){return moment().set("year","0000").format()}return{INCOMING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},OUTGOING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},STATES_STYLES:{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"},STATUS_STYLES:{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"},paginateAgents:function(e,n,t){var a={count:0,rows:[]},i=e.filter(function(e){return e.online});if(i.forEach(function(e){var n,t,a;e.globalStatus=b(e),n=e,f.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")}),e.globalStatusDisplayValue=(a=(t=e).globalStatus,"pause"===t.globalStatus?a=t.pauseType||h.instant("VOICE.DEFAULT_PAUSE"):"*pause"===t.globalStatus&&(a="*"+(t.pauseType||h.instant("VOICE.DEFAULT_PAUSE"))),a)}),0<t.globalQueueFilter.length){var s=n.filter(function(e){return t.globalQueueFilter.includes(e.id)}),o=_.uniq(s.flatMap(function(e){return _.map(e.Agents,"id")}));i=i.filter(function(e){return o.includes(e.id)})}if(t.globalStatusFilter&&(i=i.filter(function(e){var n=e.globalStatus===t.globalStatusFilter;return"pause"===e.globalStatus&&t.pauseTypeFilter&&(n=e.pauseType===t.pauseTypeFilter),n})),t.filter){var r=t.filter.toLowerCase();i=i.filter(function(e){return(e.fullname+" "+e.internal).toLowerCase().includes(r)})}var l,d,c,m,u="-"===t.sort[0]?"DESC":"ASC",p="DESC"===u?t.sort.substring(1):t.sort;l=i,c=u,i="globalStatus"===(d=p)?(m=c,l.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===m?(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?1:-1:(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?-1:1:"DESC"===m?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===m?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})):l.sort(function(e,n){var t=e[d],a=n[d];return"fullname"===d?(t=e[d].toLowerCase(),a=n[d].toLowerCase()):"lastPauseAt"===d&&(t=e.globalStatus.includes("pause")?e[d]:A(),a=n.globalStatus.includes("pause")?n[d]:A()),"DESC"===c?t<a?1:-1:t<a?-1:1}),a.count=i.length;var g=t.offset||0,v=g+t.limit;return a.rows=i.slice(g,v),a},updateQueue:function(e,n){var t=!!n.type,a=s;"inbound"===n.type?a=a.concat(o):"outbound"===n.type&&(a=a.concat(o,r));var i=_.pick(e,a);_.merge(n,i),t&&0<n.ringing&&n.available<n.loggedIn&&(n.available+=n.ringing)}}}e.$inject=["$translate","msUtils"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";function e(e,n){var t={get:function(){return a},getUTCOffset:function(){return null===i?n.setting.getDate().$promise.then(function(e){return i=e.offset}):e.resolve(i)},set:function(e){e&&(a=e.toJSON())}},a={},i=null;return t}e.$inject=["$q","api"],angular.module("app.core").factory("settingsManager",e)}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(n,e,t){if(void 0===n)return"";if(!e)return"";t||(t="option");var a=_.find(e,function(e){return e.value==n});return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},getChannels:function(){return["chat","fax","mail","openchannel","sms","voice","whatsapp"]},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},messengerSoundNotification:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/messengerSoundNotification"},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"},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"},setAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/phones"},getAdditionalPhones:{isArray:!0,method:"get",url:r.baseUrl+"cm/contacts/:id/phones"},duplicateAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/duplicateAdditionalPhones"},rescheduleAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/rescheduleAdditionalPhones"},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"},importUpdates:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/uploadUpdates/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getPreviewRecall:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/:id/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"},getTimezones:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/timezones"},getTimezone:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/timezone"}}),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.contactItemType=e(r.baseUrl+"contact_item_types/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"contact_item_types/describe"},clone:{method:"post",url:r.baseUrl+"contact_item_types/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmContactHasItem=e(r.baseUrl+"cm_contact_has_items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_contact_has_items/describe"},clone:{method:"post",url:r.baseUrl+"cm_contact_has_items/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperAdditionalPhone=e(r.baseUrl+"cm_hopper_additional_phones/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_hopper_additional_phones/describe"},clone:{method:"post",url:r.baseUrl+"cm_hopper_additional_phones/: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"}}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},getGlobalCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/global_fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r.userSetting=e(r.baseUrl+"user-settings/:id",{id:"@id"},{update:{method:"put",isArray:!1}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.adSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled,l.adSsoEnabled=o.adSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startTime:new Date(moment().startOf("day")),startDate:new Date(moment().startOf("day")),endTime:new Date(moment().endOf("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.export.name=l.export.name.replace(/\//g,"_"),l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).set("hour",l.export.startTime.getHours()).set("minute",l.export.startTime.getMinutes()).set("second",l.export.startTime.getSeconds()).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).set("hour",l.export.endTime.getHours()).set("minute",l.export.endTime.getMinutes()).set("second",l.export.endTime.getSeconds()).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,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=s,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){c.projects.unshift(e),i.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++)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.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),i.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++)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.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(){_.remove(c.projects,{id:c.project.id}),i.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,O,C,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(O,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(C,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(O,"id","name"),pause_id:U(C,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"bn",option:"Bengali"},{value:"bs",option:"Bosnian"},{value:"bg",option:"Bulgarian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{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:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gu",option:"Gujarati"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"ko",option:"Korean"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"mk",option:"Macedonian"},{value:"ml",option:"Malayalam"},{value:"mr",option:"Marathi"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt",option:"Portuguese"},{value:"ro",option:"Romanian"},{value:"ru",option:"Russian"},{value:"sr",option:"Serbian"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"ta",option:"Tamil"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"}]}).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:"Zeina",option:"Zeina (Arabic, Female)"},{value:"Zhiyu",option:"Zhiyu (Chinese, Mandarin, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Nicole",option:"Nicole (English, Australian, Female)"},{value:"Olivia",option:"Olivia (English, Austrialian, Female)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Amy",option:"Amy (English, British, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Aditi",option:"Aditi (English, Indian, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Aria",option:"Aria (English, New Zealand, Female)"},{value:"Ayanda",option:"Ayanda (English, South African, Female)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Kevin",option:"Kevin (English, US, Male)"},{value:"Matthew",option:"Matthew (English, US, Male)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Léa",option:"Léa (French, Male)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Gabrielle",option:"Gabrielle (French, Canadian, Female)"},{value:"Vicki",option:"Vicki (German , Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Aditi",option:"Aditi (Hindi , Female)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Bianca",option:"Bianca (Italian, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Takumi",option:"Takumi (Japanese, Male)"},{value:"Seoyeon",option:"Seoyeon (Korean, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Camila",option:"Camila (Portuguese, Brazilian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Conchita",option:"Conchita (Spanish, European, Female)"},{value:"Lucia",option:"Lucia (Spanish, European, Female)"},{value:"Enrique",option:"Enrique (Spanish, European, Male)"},{value:"Mia",option:"Mia (Spanish, Mexican, Female)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Lupe",option:"Lupe (Spanish, US, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Gwyneth",option:"Gwyneth (Welsh , 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(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="CHAT.EDIT_CHATQUEUE",r.chatQueue=angular.copy(n),r.chatQueues=e,r.newChatQueue=!1,r.chatQueue||(r.chatQueue={strategy:"beepall",timeout:10},r.title="CHAT.NEW_CHATQUEUE",r.newChatQueue=!0),r.addNewChatQueue=function(){r.errors=[],i.chatQueue.save(r.chatQueue).$promise.then(function(e){r.chatQueues.unshift(e.toJSON()),a.success({title:"ChatQueue properly created",msg:r.chatQueue.name?r.chatQueue.name+" has been created!":""}),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.chatQueue.save"}];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.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveChatQueue=function(){r.errors=[],i.chatQueue.update({id:r.chatQueue.id},r.chatQueue).$promise.then(function(e){var n=_.find(r.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"ChatQueue properly saved!",msg:r.chatQueue.name?r.chatQueue.name+" has been saved!":""}),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.chatQueue.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.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteChatQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.chatQueue.delete({id:r.chatQueue.id}).$promise.then(function(){_.remove(r.chatQueues,{id:r.chatQueue.id}),a.success({title:"ChatQueue properly deleted!",msg:(r.chatQueue.name||"chatQueue")+" has been deleted!"}),l(r.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];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.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","chatQueues","chatQueue","api","Auth","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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,labelText:"CHAT",messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,waitForTheAssignedQueue:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getChatWebsiteInteractions=g,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=v,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){v(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){O(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=O,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){O(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function O(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.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()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.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()})})},m.deleteContact=function(e){m.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(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.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(a,t,e,i,s,n,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function O(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function C(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),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=e.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");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){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:{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}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$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});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.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=s.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 s.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=O,S.getHistories=C,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=s.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");s.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){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$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())}),a.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),O())}),a.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),C())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),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},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,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(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:"id",required:!0},{key:"firstName",required:!1},{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.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,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.importUpdates({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("ImportContactsUpdatesDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.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 y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(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=y.user.privacyEnabled?A.mask(a):a):c.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)&&U(t)),n){var s=_.find(y.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 l.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];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(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 N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.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},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.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?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)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:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.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 a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({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")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({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":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],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,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},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=f,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=h(e);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(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$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(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.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=S,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.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=A,g.getFinals=E,g.getHistories=y,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(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.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){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),A(),E(),y()}).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?f():void 0}).finally(function(){g.contact&&g.contact.id&&(T(),g.contact.dateOfBirth=S(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=T,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(T(n))})};var v=n.getLogger("agent.general.contact");function h(e){return e.firstName||e.lastName?(e.firstName+" "+e.lastName).trim():e.phone}function f(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=h(e);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 b(n){return function(e){g[n]=e||{count:0,rows:[]}}}function A(){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,b("hoppers")).$promise)}function E(){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,b("finals")).$promise)}function y(){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,b("histories")).$promise)}function S(e){return null===e?void 0:new Date(e)}function T(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})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(A(),E(),y())});var I=!0,O=1;m.$watch("queryHopper.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=O),A())}),m.$watch("queryFinal.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=O),E())}),m.$watch("queryHistory.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=O),y())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.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()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.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:v.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:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.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()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$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(A()).$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(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.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(v.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.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()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],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,note",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,note:e.note||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,t,e,a){var i=this;function s(e,n){switch(e){case"first":i.selectedDisposition=i.firstLevelDisposition,i.anySecondLevelDisposition=_.some(i.dispositions,["ParentId",i.firstLevelDisposition.id]),i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.anyThirdLevelDisposition=!1;break;case"second":i.selectedDisposition=i.secondLevelDisposition,i.anyThirdLevelDisposition=_.some(i.dispositions,["ParentId",i.secondLevelDisposition.id]);break;case"third":i.selectedDisposition=i.thirdLevelDisposition}n&&function(e){switch(e){case"first":i.call.secondDisposition&&(i.secondLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.secondDisposition&&e.ParentId===i.firstLevelDisposition.id}),i.secondLevelDisposition&&s("second",!0));break;case"second":i.call.thirdDisposition&&(i.thirdLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.thirdDisposition&e.ParentId===i.secondLevelDisposition.id}),i.thirdLevelDisposition&&s("third",!0))}}(e)}i.dispositions=e,i.call=a,i.note=i.call.note||void 0,i.onDispositionChange=s,i.clearDispositionSelection=function(e){"second"===e?(i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.selectedDisposition=i.firstLevelDisposition):"third"===e&&(i.thirdLevelDisposition=void 0,i.selectedDisposition=i.secondLevelDisposition);n.disposition.$setDirty()},i.saveDisposition=function(){i.call.note=i.note;var e={firstLevel:i.firstLevelDisposition?i.firstLevelDisposition.name:void 0,secondLevel:i.secondLevelDisposition?i.secondLevelDisposition.name:void 0,thirdLevel:i.thirdLevelDisposition?i.thirdLevelDisposition.name:void 0,note:i.note?i.note:void 0};t.hide(e)},i.closeDialog=function(){t.cancel()},i.call.disposition&&(i.firstLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.disposition}),i.firstLevelDisposition&&s("first",!0))}e.$inject=["$scope","$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,note",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,note:e.note||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;function o(){var e=angular.element(".agent-general-home-navbar button.current")[0];e&&e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}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)},angular.element(a).on("resize",o),n.$on("$destroy",function(){angular.element(a).off("resize",o)}),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,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.chatInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,ChatWebsiteId:[]},g.sectionColor="green-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("chat",g.query,g.user.id,g.chatAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("chatInteraction:save",O),d.on("chatInteraction:update",O),d.on("chatInteractionTags:save",C),d.on("chatMessage:save",w),d.on("chatMessage:update",w),d.on("user_has_chat_interactions:save",T),d.on("user_has_chat_interactions:remove",I),d.on("userChatWebsite:save",f),d.on("userChatWebsite:remove",b),0<g.setting.chatInteractionsReloadTimeout&&R()})},g.success=E,g.getChatInteractions=y,g.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},g.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)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:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"chat",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.chat");function h(e){return{accounts:g.chatAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.addAccount("chat",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.removeAccount("chat",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.chatInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<g.chatInteractions.rows.length;n+=1)S(g.chatInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=a.localStorage.getItem("motion2.home.chat:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,a.localStorage.setItem("motion2.home.chat:"+g.user.id,JSON.stringify(n)),g.promise=r.chatInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.chatInteractions.rows=_.orderBy(g.chatInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.chatInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.chatInteractionsReloadTimeout)}t.$on("$destroy",function(){d.removeAllListeners("chatMessage:save"),d.removeAllListeners("chatMessage:update"),d.removeAllListeners("chatInteraction:save"),d.removeAllListeners("chatInteractionTags:save"),d.removeAllListeners("chatInteraction:update"),d.removeAllListeners("user_has_chat_interactions:save"),d.removeAllListeners("user_has_chat_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l){var d=this,c=["type","waiting","dialMethod","dialActive"];function m(e){d.voiceQueuesTotal=e.count?e.count:0,d.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(d.voiceQueues,function(e,n){d.rpcVoiceQueues[n]&&(d.voiceQueues[n].waiting=d.rpcVoiceQueues[n].waiting||0)})}d.voiceQueues={},d.voiceQueuesTotal=0,d.rpcVoiceQueues={},d.getVoiceQueues={},d.rpcVoiceQueuesChannels={},d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.load=!0,d.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},d.queryChannels={limit:10,page:1},d.success=m,d.getVoiceQueues=function(){d.query.offset=(d.query.page-1)*d.query.limit,d.promise=o.user.getQueues(d.query,m).$promise},d.getSize=function(e){return _.size(e)},d.onSaveQueue=function(e){d.voiceQueues[e.id]&&d.rpcVoiceQueues[e.id]&&(d.rpcVoiceQueues[e.id]=e,_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete d.rpcVoiceQueuesChannels[e.uniqueid],d.load&&d.deleteVoiceQueuesChannels.push(e.uniqueid)):(d.rpcVoiceQueuesChannels[e.uniqueid]=e,d.load&&(d.addVoiceQueuesChannels[e.uniqueid]=e)))},d.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&d.getVoiceQueues()},d.onSaveVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]=_.pick(e,c))},d.onUpdateVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]&&_.merge(d.rpcVoiceQueues[e.id],_.pick(e,c)),d.voiceQueues[e.id]&&_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete d.rpcVoiceQueues[e.id],delete d.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",d.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",d.onSaveChannel),l.onWithoutApply("voice_queue_channel:remove",function(e){"inbound"===e.type&&delete d.rpcVoiceQueuesChannels[e.uniqueid]}),l.onWithoutApply("userVoiceQueue:save",d.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",d.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",d.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",d.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",d.onUpdateVoiceQueue),o.user.getQueues(d.query).$promise.then(function(e){return d.myQueues=e,d.myQueues.count=e.rows.length,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<d.myQueues.count;a++){var i=d.myQueues.rows[a];d.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){d.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(d.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(d.rpcVoiceQueuesChannels,d.addVoiceQueuesChannels);for(var e=0;e<d.deleteVoiceQueuesChannels.length;e+=1)delete d.rpcVoiceQueuesChannels[d.deleteVoiceQueuesChannels[e]];d.load=!1,d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.getVoiceQueues()});var u=!0,p=1;e.$watch("vm_dc.query.filter",function(e,n){u?t(function(){u=!1}):(n||(p=d.query.page),e!==n&&(d.query.page=1),e||(d.query.page=p),d.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"],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(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.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)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:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.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++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.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:v.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:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.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:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.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:v.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.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()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.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=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.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(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.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};u.add(n)}})},v.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:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(v.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(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 O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.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 N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(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(u.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=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.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(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.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};u.update(n)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},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"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.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)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:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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,dialTimezone",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,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.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)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:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.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)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:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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=16,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]):_.findLast(h.interaction.Messages,["secret",!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=[],a=_.some(h.messages.rows,["read",!0]);if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length&&!a;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.trim()))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&h.interaction.UserId!==h.user.id&&(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:{}},a=e(t),i=a.replace(/(?:\r\n|\r|\n)/g,"<br />");g.ckEditorInstance.insertHtml(i)}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||o.from))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||g.isDraft?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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,waitfortheassignedQueue:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getFaxAccountInteractions=g,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=v,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){v(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,waitForTheAssignedQueue,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="FAX.EDIT_FAXQUEUE",r.faxQueue=angular.copy(n),r.faxQueues=e,r.newFaxQueue=!1,r.faxQueue||(r.faxQueue={strategy:"beepall",timeout:10},r.title="FAX.NEW_FAXQUEUE",r.newFaxQueue=!0),r.addNewFaxQueue=function(){r.errors=[],i.faxQueue.save(r.faxQueue).$promise.then(function(e){r.faxQueues.unshift(e.toJSON()),a.success({title:"FaxQueue properly created",msg:r.faxQueue.name?r.faxQueue.name+" has been created!":""}),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.faxQueue.save"}];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.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveFaxQueue=function(){r.errors=[],i.faxQueue.update({id:r.faxQueue.id},r.faxQueue).$promise.then(function(e){var n=_.find(r.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"FaxQueue properly saved!",msg:r.faxQueue.name?r.faxQueue.name+" has been saved!":""}),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.faxQueue.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.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteFaxQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.faxQueue.delete({id:r.faxQueue.id}).$promise.then(function(){_.remove(r.faxQueues,{id:r.faxQueue.id}),a.success({title:"FaxQueue properly deleted!",msg:(r.faxQueue.name||"faxQueue")+" has been deleted!"}),l(r.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];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.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","faxQueues","faxQueue","api","Auth","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,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,a,i,n,s,o,r,l,d){var c=this,m=d&&1==d.count?d.rows[0].crudPermissions:null;function u(){c.faxAccounts.rows.forEach(function(n){var e=_.find(c.rpcFaxAccounts.rows,["id",n.id]);e&&_.merge(n,e);var t={id:n.id,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};i.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",i.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){o.error(e.data?e.data.message:e.toString())})})}function p(e){var n=_.find(c.faxAccounts.rows,["id",e.id]);n&&_.merge(n,e)}function g(e){c.faxAccounts.rows=e.rows,u()}c.currentUser=n.getCurrentUser(),c.faxAccounts=r,c.rpcFaxAccounts=l,c.crudPermissions=n.parseCrudPermissions(m),c.query={sort:"name",limit:10,page:1},c.success=g,c.$onInit=u,c.getFaxAccounts=function(){c.query.offset=(c.query.page-1)*c.query.limit,n.hasRole("admin")?c.promise=i.faxAccount.get(c.query,g).$promise:(c.query.id=c.currentUser.userProfileId,c.query.section="FaxAccounts",c.promise=i.userProfile.getResources(c.query,g).$promise)},c.goToFaxAccount=function(e,n){a.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},s.on("faxAccount:save",p),s.on("faxAccount:update",p),s.on("faxMessage:save",function(e){var n=_.find(c.faxAccounts.rows,["id",e.FaxAccountId]);n&&("in"==e.direction?(n.in+=1,n.lastIn=e.createdAt):(n.out+=1,n.lastOut=e.createdAt))});var v=!0,h=1;e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=h),c.getFaxAccounts())}),e.$on("$destroy",function(){s.removeAllListeners("faxAccount:save"),s.removeAllListeners("faxAccount:update"),s.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$state","api","Auth","socket","toasty","faxAccounts","rpcFaxAccounts","userProfileSection"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"name",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,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","realtimeManager","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.deleteDynamics365Account=function(e){v.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(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","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,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.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(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.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:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.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){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,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.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.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","cloudProviders","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,waitForTheAssignedQueue:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.lists=e.rows}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"mailAccount",action:"getDispositions",field:"name",params:{id:m.mailAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,p).$promise}function v(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0]),"Unknown"===e.contactName&&(e.contactName=i.instant("MAIL.UNKNOWN"))}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getMailAccountInteractions=g,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=v,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){v(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.originalProvider=f.mailAccount.provider,f.goToRealtime=function(){return d.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},f.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.goToMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},f.saveMailAccount=function(){var e=angular.copy(f.mailAccount);"custom"===e.provider?e.provider=null:(f.originalProvider!==e.provider&&(e.Imap.modernAuthentication?e.Imap.password=null:e.Imap.CloudProviderId=null),e.Smtp.user=e.Imap.user,e.Smtp.pass=e.Imap.password,e.Imap.modernAuthentication||(e.Imap.CloudProviderId=null),e.Smtp.modernAuthentication=e.Imap.modernAuthentication,e.Smtp.CloudProviderId=e.Imap.CloudProviderId,e.Imap=_.omit(e.Imap,["host","port","service"]),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));r.mailAccount.update({id:f.mailAccount.id},e).$promise.then(function(){f.originalProvider=e.provider,l.success({title:s.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.onProviderChange=function(){"custom"!==f.mailAccount.provider&&(f.mailAccount.authentication=!0);"outlook365"!==f.mailAccount.provider&&(f.mailAccount.Imap.modernAuthentication=!1)},e.all((h=[{key:"id",value:Number(f.mailAccount.ListId)}],r.getResourcesByRole(f.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},h).then(function(e){f.lists=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})),(v=[{key:"id",value:Number(f.mailAccount.mandatoryDispositionPauseId)}],r.getResourcesByRole(f.currentUser,"pause",{fields:"id,name",sort:"name",nolimit:"true"},v).then(function(e){f.pauses=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))}e.$inject=["$state","$mdDialog","$document","$translate","$q","license","setting","api","toasty","Auth","mailAccount","cloudProviders","userProfile","userProfileSection","msUtils"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u,p){var g=this;function v(e){g.mailAccounts=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.hasRole("admin")?g.promise=d.mailAccount.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="MailAccounts",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){if(e.service)return c.error({msg:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_SERVICE_DELETE")});d.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(g.mailAccounts.rows,{id:e.id}),g.mailAccounts.count-=1,g.mailAccounts.rows.length||h(),c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.mailAccounts=n||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedMailAccounts=[],g.query={fields:"createdAt,updatedAt,id,name,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="MAIL.EDIT_MAILQUEUE",r.mailQueue=angular.copy(n),r.mailQueues=e,r.newMailQueue=!1,r.mailQueue||(r.mailQueue={strategy:"beepall",timeout:10},r.title="MAIL.NEW_MAILQUEUE",r.newMailQueue=!0),r.addNewMailQueue=function(){r.errors=[],i.mailQueue.save(r.mailQueue).$promise.then(function(e){r.mailQueues.unshift(e.toJSON()),a.success({title:"MailQueue properly created",msg:r.mailQueue.name?r.mailQueue.name+" has been created!":""}),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.mailQueue.save"}];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.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveMailQueue=function(){r.errors=[],i.mailQueue.update({id:r.mailQueue.id},r.mailQueue).$promise.then(function(e){var n=_.find(r.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"MailQueue properly saved!",msg:r.mailQueue.name?r.mailQueue.name+" has been saved!":""}),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.mailQueue.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.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteMailQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.mailQueue.delete({id:r.mailQueue.id}).$promise.then(function(){_.remove(r.mailQueues,{id:r.mailQueue.id}),a.success({title:"MailQueue properly deleted!",msg:(r.mailQueue.name||"mailQueue")+" has been deleted!"}),l(r.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];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.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","mailQueues","mailQueue","api","Auth","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,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d){var c=this,m=d&&1==d.count?d.rows[0].crudPermissions:null;function u(){c.mailAccounts.rows.forEach(function(n){var e=_.find(c.rpcMailAccounts.rows,["id",n.id]);e&&_.merge(n,e);var t={id:n.id,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};i.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",i.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){o.error(e.data?e.data.message:e.toString())})})}function p(e){var n=_.find(c.mailAccounts.rows,["id",e.id]);n&&_.merge(n,e)}function g(e){c.mailAccounts.rows=e.rows,u()}function v(){c.query.offset=(c.query.page-1)*c.query.limit,n.hasRole("admin")?c.promise=i.mailAccount.get(c.query,g).$promise:(c.query.id=c.currentUser.userProfileId,c.query.section="MailAccounts",c.promise=i.userProfile.getResources(c.query,g).$promise)}c.currentUser=n.getCurrentUser(),c.mailAccounts=r,c.rpcMailAccounts=l,c.crudPermissions=n.parseCrudPermissions(m),c.query={sort:"name",limit:10,page:1},c.success=g,c.$onInit=u,c.getMailAccounts=v,c.goToMailAccount=function(e,n){a.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},c.verifySmtp=function(e,n){{if(n&&n.id)return i.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){o.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){o.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});o.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},s.on("mailAccount:save",p),s.on("mailAccount:update",p),s.on("mailMessage:save",function(e){var n=_.find(c.mailAccounts.rows,["id",e.MailAccountId]);n&&("in"==e.direction?(n.in+=1,n.lastIn=e.createdAt):(n.out+=1,n.lastOut=e.createdAt))});var h=!0,f=1;e.$watch("vm.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),v())}),e.$on("$destroy",function(){s.removeAllListeners("mailAccount:save"),s.removeAllListeners("mailAccount:update"),s.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$state","api","Auth","socket","toasty","mailAccounts","rpcMailAccounts","userProfileSection"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.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(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.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}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})})},v.deleteHopper=function(e){v.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:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.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){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.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(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.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()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.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,from:"IvrCampaign"}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,callAdditionalPhoneAfterMin:3,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.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,from:"QueueCampaign"}})},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)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),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,g.hopper.dialTimezone=g.contact.dialTimezone,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}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),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,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){u.campaigns.rows.forEach(function(e){u.rpcCampaigns[e.id]&&_.merge(e,_.pick(u.rpcCampaigns[e.id],p))})}u.currentUser=m.getCurrentUser(),u.campaigns=o||{rows:[],count:0},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:"name",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){var n=_.find(u.campaigns.rows,["id",e.id]);n&&(_.merge(n,_.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:u.campaigns.rows,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.campaigns=e||{count:0,rows:[]},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,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(){c.queues.rows.forEach(function(e){c.rpcQueues[e.id]&&_.merge(e,_.pick(c.rpcQueues[e.id],m))})}c.queues=a||{rows:[],count:0},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:"name",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"name",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){var n=_.find(c.queues.rows,["id",e.id]);n&&_.merge(n,_.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.queues=e||{count:0,rows:[]},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,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,waitForTheAssignedQueue:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getOpenchannelAccountInteractions=g,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=v,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){v(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,waitForTheAssignedQueue,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",r.openchannelQueue=angular.copy(n),r.openchannelQueues=e,r.newOpenchannelQueue=!1,r.openchannelQueue||(r.openchannelQueue={strategy:"beepall",timeout:10},r.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",r.newOpenchannelQueue=!0),r.addNewOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.save(r.openchannelQueue).$promise.then(function(e){r.openchannelQueues.unshift(e.toJSON()),a.success({title:"OpenchannelQueue properly created",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been created!":""}),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.openchannelQueue.save"}];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.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.update({id:r.openchannelQueue.id},r.openchannelQueue).$promise.then(function(e){var n=_.find(r.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"OpenchannelQueue properly saved!",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been saved!":""}),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.openchannelQueue.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.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteOpenchannelQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.openchannelQueue.delete({id:r.openchannelQueue.id}).$promise.then(function(){_.remove(r.openchannelQueues,{id:r.openchannelQueue.id}),a.success({title:"OpenchannelQueue properly deleted!",msg:(r.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),l(r.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];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.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","openchannelQueues","openchannelQueue","api","Auth","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,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=i.params.direction||"inbound",b=g&&1==g.count?g.rows[0].crudPermissions:null;function A(n){return h.query.offset=(h.query.page-1)*h.query.limit,e.resolve().then(function(){if(!0===n){var e=Object.assign({},_.omit(h.query,["limit","offset","page"]),{nolimit:!0});return o.realtime.getAgents(e).$promise}}).then(function(e){e&&(h.amiAgents=e)}).then(function(){var e=h.queues?h.queues.rows:[];h.agents=l.paginateAgents(h.amiAgents.rows,e,h.query)}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function E(e){return _.find(h.amiAgents.rows,["id",e])}function y(e){var n=E(e.id);n?(Object.assign(n,e),A()):r.isAdmin()&&A(!0)}function S(){A(!0)}function T(e){var n=E(e.id);n?(Object.assign(n,e),A()):r.isAdmin()&&A(!0)}function I(){A(!0)}function O(e){var n=E(e.id);n?(Object.assign(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),A()):r.isAdmin()&&A(!0)}function C(e){if("ATTENDED"!==e.transfer){var n=E(e.id);n?(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,A()):r.isAdmin()&&A(!0)}}function w(e){if(0!==h.query.globalQueueFilter.length){var n=e[_.capitalize(h.channel)+"QueueId"];if(h.query.globalQueueFilter.includes(n))_.find(h.queues.rows,function(e){return e.id===n}).Agents.push({id:e.UserId}),A()}}function R(n){if(0!==h.query.globalQueueFilter.length){var t=n[_.capitalize(h.channel)+"QueueId"];if(h.query.globalQueueFilter.includes(t)){var e=_.find(h.queues.rows,function(e){return e.id===t});_.remove(e.Agents,function(e){return e.id===n.UserId}),A()}}}function x(){h.queues&&D(!0)}function N(){h.queues&&D(!0)}function D(e){if(!(h.queues&&0<h.queues.count)||e){var n={type:f,fields:"id,name",sort:"name",nolimit:!0,include:[{model:"User",alias:"Agents",fields:["id","name"],raw:!0}]},t=h.channel+"Queue";return o.getResourcesByRole(h.currentUser,t,n,null).then(function(e){h.queues=e}).catch(function(e){c.error({title:s.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})}}h.currentUser=r.getCurrentUser(),h.channel=i.params.channel,h.amiAgents=m,h.pauses=p,h.license=u,h.crudPermissions=r.parseCrudPermissions(b),h.utcOffset=v,h.query={channel:h.channel,globalQueueFilter:[],globalStatusFilter:null,pauseTypeFilter:null,limit:10,page:1,sort:"fullname"},h.$onInit=function(){d.on("user:remove",I),d.on("user:save",S),d.on("user:update",T),d.on("user:agentconnect",O),d.on("user:agentcomplete",C),d.on("user:ami:update",y),d.on("user:routing:update",y),d.on("user"+_.capitalize(h.channel)+"Queue:save",w),d.on("user"+_.capitalize(h.channel)+"Queue:remove",R),d.on(h.channel+"Queue:save",x),d.on(h.channel+"Queue:remove",N),A()},h.getAgents=A,h.onPaginate=function(){A()},h.onSort=function(){A()},h.logout=function(e){return o.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){c.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.pause=function(e,n){return o.user.pause({id:e.id,type:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.unpause=function(e){return o.user.unpause({id:e.id}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:h.channel,direction:f,crudPermissions:h.crudPermissions}})},h.manageScreenRecording=function(e,n){return o.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.getQueuesByChannel=D,h.selectAllQueues=function(){h.query.globalQueueFilter=h.queues.rows.map(function(e){return e.id})},h.clearQueuesSelection=function(){h.query.globalQueueFilter=[]},n.$on("$destroy",function(){d.removeAllListeners("user:remove"),d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),d.removeAllListeners("user:ami:update"),d.removeAllListeners("user:routing:update"),d.removeAllListeners("user"+_.capitalize(h.channel)+"Queue:save"),d.removeAllListeners("user"+_.capitalize(h.channel)+"Queue:remove")})}e.$inject=["$document","$mdDialog","$q","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","agents","license","pauses","userProfileSection","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,a,n,i,s,t,o,r,l,d,c){var m=this,u=c&&1==c.count?c.rows[0].crudPermissions:null;function p(){return m.queues.rows.map(function(e){return e.name})}function g(n){if(n.type===m.voiceQueueType&&p().includes(n.queue)){var e=_.find(m.voiceQueuesChannels.rows,function(e){return e.uniqueid===n.uniqueid});e?Object.assign(e,n):(m.voiceQueuesChannels.rows.push(n),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length)}}function v(n){m.voiceQueuesChannels.rows=_.filter(m.voiceQueuesChannels.rows,function(e){return e.uniqueid!==n.uniqueid}),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length}m.currentUser=t.getCurrentUser(),m.queues=l,m.voiceQueuesChannels=d,m.voiceQueueType=n.params.direction,m.crudPermissions=t.parseCrudPermissions(u),m.query={limit:10,page:1},m.$onInit=function(){o.on("voice_queue_channel:save",g),o.on("voice_queue_channel:remove",v);var n=p(),e=m.voiceQueuesChannels.rows.filter(function(e){if(n.includes(e.queue))return!0});m.voiceQueuesChannels.rows=e,m.voiceQueuesChannels.count=e.length},m.hangup=function(e){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:e}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_HANGUP_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.getAvailableAgents=function(){m.availableAgents=null;var e={id:t.isUser()?m.currentUser.userProfileId:void 0,fields:"id,name,fullname,internal,context,online,voicePause,voiceStatus",sort:"fullname",online:!0,voicePause:!1};return s.realtime.getAgents(e).$promise.then(function(e){var n=e.rows.filter(function(e){return"idle"===e.voiceStatus});m.availableAgents=n}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToAgent=function(e,n,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:e,exten:n,context:t}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToNumber=function(e,n){var t=a.prompt().title(i.instant("VOICE.CALL_NUMBER_REDIRECT")).placeholder(i.instant("DASHBOARDS.NUMBER")).targetEvent(e).ok("Ok").cancel(i.instant("TOOLBAR.CANCEL"));return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){e&&r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},e.$on("$destroy",function(){o.removeAllListeners("voice_queue_channel:save"),o.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$mdDialog","$state","$translate","api","Auth","socket","toasty","queues","voiceQueuesChannels","userProfileSection"],angular.module("app.realtime").controller("QueueCallsRealtimeController",e)}(),function(){"use strict";function e(i,s,e,n,t,a,o,r,l,d,c,m,u){var p=this,g=e(function(){},999),v=u&&1==u.count?u.rows[0].crudPermissions:null,h=t.params.direction,f="outbound"===h?"QueueCampaigns":_.startCase(p.channel)+"Queues";function b(e){var n=_.find(p.queues.rows,["id",e.id]);n&&(n=l.updateQueue(e,n))}p.currentUser=r.getCurrentUser(),p.channel=t.params.channel,p.queues=m,p.crudPermissions=r.parseCrudPermissions(v),p.headersTemplate=null,p.rowsTemplate=null,p.query={id:r.isUser()?p.currentUser.id:void 0,section:r.isUser()?f:void 0,channel:p.channel,type:h,sort:"name",limit:10,page:1},p.$onInit=function(){var e,n;d.on(p.channel+"_queue:save",b),p.headersTemplate=(e="default.html","voice"===p.channel&&(e=h+".html"),"app/main/apps/realtime/views/queues/templates/headers/"+e),p.rowsTemplate=(n="default.html","voice"===p.channel&&(n=h+".html"),"app/main/apps/realtime/views/queues/templates/rows/"+n),"voice"===p.channel&&p.queues.rows.forEach(function(e){0<e.ringing&&e.available<e.loggedIn&&(e.available+=e.ringing)})},p.getQueues=function(){return p.query.offset=(p.query.page-1)*p.query.limit,o.realtime.getQueues(p.query).$promise.then(function(e){p.queues=e}).catch(function(e){c.error({title:a.instant("DASHBOARDS.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},p.editQueue=function(e,n){var t={crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:"CreateOrEdit"+_.startCase(p.channel)+"QueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.addOrRemoveAgents=function(e,n){var t={realtime:"voice"===p.channel,crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:_.startCase(p.channel)+"QueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.showPredictiveInfo=function(e,n){var t={controller:"PredictiveInfoDialogController",controllerAs:"vm",templateUrl:"app/main/apps/realtime/views/queues/predictive/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}};return s.show(t)},n.$on("$destroy",function(){d.removeAllListeners(p.channel+"_queue:save"),g&&e.cancel(g)})}e.$inject=["$document","$mdDialog","$interval","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","queues","userProfileSection"],angular.module("app.realtime").controller("QueuesRealtimeController",e)}(),function(){"use strict";function e(e,n){this.queueCampaign=n,this.formatTime=function(e,n){var t=moment(e);return n&&t.add(n,"minutes"),t.format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","queueCampaign"],angular.module("app.realtime").controller("PredictiveInfoDialogController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,waitForTheAssignedQueue:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getSmsAccountInteractions=g,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=v,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){v(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,waitForTheAssignedQueue,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="SMS.EDIT_SMSQUEUE",r.smsQueue=angular.copy(n),r.smsQueues=e,r.newSmsQueue=!1,r.smsQueue||(r.smsQueue={strategy:"beepall",timeout:10},r.title="SMS.NEW_SMSQUEUE",r.newSmsQueue=!0),r.addNewSmsQueue=function(){r.errors=[],i.smsQueue.save(r.smsQueue).$promise.then(function(e){r.smsQueues.unshift(e.toJSON()),a.success({title:"SmsQueue properly created",msg:r.smsQueue.name?r.smsQueue.name+" has been created!":""}),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.smsQueue.save"}];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.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveSmsQueue=function(){r.errors=[],i.smsQueue.update({id:r.smsQueue.id},r.smsQueue).$promise.then(function(e){var n=_.find(r.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"SmsQueue properly saved!",msg:r.smsQueue.name?r.smsQueue.name+" has been saved!":""}),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.smsQueue.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.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteSmsQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.smsQueue.delete({id:r.smsQueue.id}).$promise.then(function(){_.remove(r.smsQueues,{id:r.smsQueue.id}),a.success({title:"SmsQueue properly deleted!",msg:(r.smsQueue.name||"smsQueue")+" has been deleted!"}),l(r.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];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.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","smsQueues","smsQueue","api","Auth","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,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){f(e)})},g.success=v,g.getAgents=h,g.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};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),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.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},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];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.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.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.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];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.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.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:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.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:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.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:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.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","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];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.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.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.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];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.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],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){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.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:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.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:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.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","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.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"),"")}),g.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"),"")}),g.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"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.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");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.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){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.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("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcontactItemType"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcontactItemType",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,i,s,o){var r=this;r.customDashboard={};var l=[];function d(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.init=function(e,n){return r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:d},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:d},r.customDashboard.widgets=[],r.customDashboard.crudPermissions=r.crudPermissions,l.push(i(function(e){e(r.voiceQueues=o.rpc.getVoiceQueues({fields:"id,name"}))})),l.push(i(function(n){o.chatWebsite.get({fields:"id,name"}).$promise.then(function(e){r.chatWebsites=e||{count:0,rows:[]},n(r.chatWebsites)})})),l.push(i(function(n){o.faxAccount.get({fields:"id,name"}).$promise.then(function(e){r.faxAccounts=e||{count:0,rows:[]},n(r.faxAccounts)})})),l.push(i(function(n){o.mailAccount.get({fields:"id,name"}).$promise.then(function(e){r.mailAccounts=e||{count:0,rows:[]},n(r.mailAccounts)})})),l.push(i(function(n){o.openchannelAccount.get({fields:"id,name"}).$promise.then(function(e){r.openchannelAccounts=e||{count:0,rows:[]},n(r.openchannelAccounts)})})),l.push(i(function(n){o.whatsappAccount.get({fields:"id,name"}).$promise.then(function(e){r.whatsappAccounts=e||{count:0,rows:[]},n(r.whatsappAccounts)})})),l.push(i(function(n){o.smsAccount.get({fields:"id,name"}).$promise.then(function(e){r.smsAccounts=e||{count:0,rows:[]},n(r.smsAccounts)})})),i.all(l).then(function(){return o.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=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.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:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.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 o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.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){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];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:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",attrChannel:"voice",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId: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.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var 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"},n="get",t="disposition";l?(n="getDispositions",t=l.route):"user"===m.currentUser.role&&(n="getResources",t="userProfile",e.id=m.currentUser.userProfileId);(a=t,i=n,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",t,n].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},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,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-createdAt",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(){})},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,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(){})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===g.query.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(){}).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(){}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.OUTGOING_CALL_STATUS_STYLES,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","realtimeManager"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",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(){c.queues.rows.forEach(function(e){c.rpcQueues[e.id]&&_.merge(e,_.pick(c.rpcQueues[e.id],m))})}c.queues=a||{rows:[],count:0},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:"name",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"name",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){var n=_.find(c.queues.rows,["id",e.id]);n&&_.merge(n,_.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.queues=e||{count:0,rows:[]},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,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.telephones=a?a.rows:{},m.rpcTelephones=i?i.rows:{},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:"fullname",limit:10,page:1},m.statusClass=r.STATUS_STYLES,m.stateClass=r.STATES_STYLES,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?e.rows:{},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","realtimeManager","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:"name",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,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","realtimeManager","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="VOICE.EDIT_VOICEQUEUE",r.voiceQueue=angular.copy(n),r.voiceQueues=e,r.newVoiceQueue=!1,r.voiceQueue||(r.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"},r.title="VOICE.NEW_VOICEQUEUE",r.newVoiceQueue=!0),r.addNewVoiceQueue=function(){r.errors=[],i.voiceQueue.save(r.voiceQueue).$promise.then(function(e){r.voiceQueues.unshift(e.toJSON()),a.success({title:"VoiceQueue properly created",msg:r.voiceQueue.name?r.voiceQueue.name+" has been created!":""}),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.save"}];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.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveVoiceQueue=function(){r.errors=[],i.voiceQueue.update({id:r.voiceQueue.id},r.voiceQueue).$promise.then(function(e){var n=_.find(r.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"VoiceQueue properly saved!",msg:r.voiceQueue.name?r.voiceQueue.name+" has been saved!":""}),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.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.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteVoiceQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.voiceQueue.delete({id:r.voiceQueue.id}).$promise.then(function(){_.remove(r.voiceQueues,{id:r.voiceQueue.id}),a.success({title:"VoiceQueue properly deleted!",msg:(r.voiceQueue.name||"voiceQueue")+" has been deleted!"}),l(r.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];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.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","voiceQueues","voiceQueue","api","Auth","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,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,waitForTheAssignedQueue:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getWhatsappAccountInteractions=g,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=v,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){v(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="WHATSAPP.EDIT_WHATSAPPQUEUE",r.whatsappQueue=angular.copy(n),r.whatsappQueues=e,r.newWhatsappQueue=!1,r.whatsappQueue||(r.whatsappQueue={strategy:"beepall",timeout:10},r.title="WHATSAPP.NEW_WHATSAPPQUEUE",r.newWhatsappQueue=!0),r.addNewWhatsappQueue=function(){r.errors=[],i.whatsappQueue.save(r.whatsappQueue).$promise.then(function(e){r.whatsappQueues.unshift(e.toJSON()),a.success({title:"WhatsappQueue properly created",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been created!":""}),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.whatsappQueue.save"}];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.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveWhatsappQueue=function(){r.errors=[],i.whatsappQueue.update({id:r.whatsappQueue.id},r.whatsappQueue).$promise.then(function(e){var n=_.find(r.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"WhatsappQueue properly saved!",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been saved!":""}),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.whatsappQueue.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.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteWhatsappQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.whatsappQueue.delete({id:r.whatsappQueue.id}).$promise.then(function(){_.remove(r.whatsappQueues,{id:r.whatsappQueue.id}),a.success({title:"WhatsappQueue properly deleted!",msg:(r.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),l(r.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];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.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","whatsappQueues","whatsappQueue","api","Auth","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,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,a,o,i,s,r,l,d,c,m,u){var p=this;function g(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function v(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function h(e,n){var t={user:_.pick(r.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),i.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!r.hasPermission(e)}})}function f(e){return _.map(e.children,function(e){return e.id})}s.clear(),p.isAgent=function(){return r.getCurrentUser()&&r.hasRole("agent")},o.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return r.hasRole("agent")}}),d.version.get().$promise.then(function(e){p.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){p.version="UNKNOWN"}).finally(function(){o.saveItem("version",{title:"VERSION "+p.version,group:!0,weight:2,hidden:function(){return r.hasRole("agent")}})}),r.isLoggedIn()&&(null===m.userSettings&&m.getUserSettingForUser(),l.gray&&s.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),d.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,o.saveItem("apps.dashboards.custom_"+n,g(n,e.rows[t]))}),d.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){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,o.saveItem("apps.plugins.plugin_"+n,v(n,t[a]));o.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(var s=0;s<i.length;s+=1)h(n=88888+i[s].id,i[s])}})),l.custom&&!c.defaultPageTitle&&c.pageTitle&&angular.element("#pageTitle").html(c.pageTitle),o.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(101)&&!r.hasRole("admin")}}),o.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||r.hasRole("user")||!r.hasPermission(201)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(202)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(203)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(204)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(205)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!l.cm||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(301)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(302)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(304)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(303)&&!r.hasRole("admin")}}),o.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(401)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(405)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(406)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(407)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(408)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(409)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(410)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(402)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(403)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(404)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(411)&&!r.hasRole("admin")}}),o.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!l.chat||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(501)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(502)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(510)&&!r.hasRole("admin")}}),o.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!l.mail||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(601)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(602)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(603)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(610)&&!r.hasRole("admin")}}),o.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!l.messaging||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(701)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(702)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(710)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!l.openchannel||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(801)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(802)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(810)&&!r.hasRole("admin")}}),o.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!l.fax||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(901)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(902)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(910)&&!r.hasRole("admin")}}),o.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1001)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1003)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1004)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1005)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1006)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1007)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1008)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1009)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1011)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1012)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.contact_item_types",{id:1013,title:"ContactItemType",route:"contactItemType",translate:"TOOLS.CONTACTITEMTYPE",state:"app.tools.contact_item_types",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1013)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1002)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1010)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1101)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1102)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1103)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1201)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1202)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1203)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1301)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1302)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1303)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1305)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1306)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1307)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1308)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1309)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1310)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1304)&&!r.hasRole("admin")}}),o.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")||r.hasRole("admin")&&!r.getCurrentUser().settingsEnabled}}),o.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!l.custom||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!l.update||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!l.dialer||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1501)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1502)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1510)&&!r.hasRole("admin")}}),o.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!c.viewHelpSection||r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!l.jscripty||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1701)&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1801)&&!r.hasRole("admin")}}),o.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!l.screenrecording||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(2001)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!l.whatsapp||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2101)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2102)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(2110)&&!r.hasRole("admin")}}),o.sort(),i.saveItem("apps",{title:"APPS",group:!0,weight:1}),i.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),i.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!r.hasPermission(101)}}),i.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!r.hasPermission(115)}}),i.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!l.cm||!r.hasPermission(102)}}),i.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!l.cm||!r.hasPermission(103)}}),i.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!l.dialer||!r.hasPermission(113)}}),i.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!l.voice||!r.hasPermission(110)}}),i.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!l.voice||!r.hasPermission(111)}}),i.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!l.voice||!r.hasPermission(104)}}),i.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!l.chat||!r.hasPermission(105)}}),i.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!l.mail||!r.hasPermission(106)}}),i.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!l.messaging||!r.hasPermission(107)}}),i.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!l.openchannel||!r.hasPermission(108)}}),i.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!l.fax||!r.hasPermission(109)}}),i.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!l.whatsapp||!r.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(s.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||s.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})}),n.$on("client-side-logging:enabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_ENABLED_MSG")})}),n.$on("client-side-logging:disabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_DISABLED_MSG")})}),a.onbeforeunload=function(){r.isTelephone()||u.flush()}}e.$inject=["$scope","$rootScope","$translate","$window","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","UserSettingService","ClientSideLoggingService"],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.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(n,e,t,a,i,s,o,r,l,d,c){var m=this;function u(){if(!m.hasMoreMessages||m.isLoading)return t.resolve();m.user.messages.length;return function(){m.isLoading=!0;var e={sort:"-createdAt",FromId:m.currentUser.id+","+m.user.id,ToId:m.currentUser.id+","+m.user.id,ChatGroupId:"null",limit:50,offset:m.user.messages.length};return r.chatInternalMessage.get(e).$promise.then(function(e){m.user.messages=m.user.messages.concat(e.rows),m.hasMoreMessages=e.count>m.user.messages.length;for(var n=0;n<m.user.messages.length;n+=1)!1===m.user.messages[n].read&&m.user.messages[n].ToId===m.currentUser.id&&r.chatInternalMessage.update({id:m.user.messages[n].id,read:!0})}).finally(function(){m.isLoading=!1})}()}function p(e){var n=angular.element("#chat-dialog");s(function(){n.animate({scrollTop:0},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return n.get(e).success(function(){c.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(){c.error({title:"PhoneBar API Error",msg:o.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}m.currentUser=l.getCurrentUser(),m.user=void 0,m.users={count:0,rows:[]},m.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),m.unreadMessages={},m.replyMessage="",m.disabled=!1,m.defaultAvatar="assets/images/avatars/profile.png",m.init=function(e){m.license=e,t.all([r.chatInternalMessage.get({fields:"FromId",ToId:m.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){m.unreadMessages=_.countBy(e.rows,"FromId")}).catch(function(e){throw e}),r.chatInternalMessage.getUsers().$promise.then(function(e){m.users=e}).catch(function(e){throw e})]).catch(function(e){c.error({msg:e.data?e.data.message:e.message||e})})},m.reply=function(){if(m.disabled=!0,""===m.replyMessage)return void(m.disabled=!1);var e={FromId:m.currentUser.id,ToId:m.user.id,body:m.replyMessage,read:!1};m.replyMessage="",r.chatInternalMessage.save(e).$promise.then(function(e){m.user.messages.unshift(e),m.user.lastMessageAt=e.createdAt,m.user.lastMessage=e}).finally(function(){p(400),m.disabled=!1})},m.webcall=function(e){a.$broadcast("webrtc::call",{target:g(e)})},m.call=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},m.transfer=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},m.beepPlayer=null,m.openChat=function(e){return m.user=angular.copy(e),m.isMessengerAllowed=!1,"agent"!==m.user.role||m.user.allowmessenger?(p(0),m.isMessengerAllowed=!0,m.hasMoreMessages=!0,u()):void c.warning({title:o.instant("QUICKPANEL.WARNING"),msg:o.instant("QUICKPANEL.MESSENGER_DISABLED")})},m.closeChat=function(){m.user=void 0,m.hasMoreMessages=!0},m.scrollToTopOfChat=p,d.on("chatInternalMessage:save",function(e){m.beepPlayer=document.getElementById("beep-player"),e.ToId===m.currentUser.id&&e.ToId!==e.FromId&&m.currentUser.messengerSoundNotification&&m.beepPlayer.play().catch(function(e){console.log(e.message)});if(e.ToId===m.currentUser.id&&!e.ChatGroupId){m.user&&m.user.id===e.FromId?(m.user.messages.unshift(e),p(0),r.chatInternalMessage.update({id:e.id,read:!0})):m.unreadMessages[e.FromId]=m.unreadMessages[e.FromId]?m.unreadMessages[e.FromId]+1:1;var n=_.find(m.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}}),d.on("chatInternalMessage:update",function(e){if((e.FromId===m.currentUser.id||e.ToId===m.currentUser.id)&&!e.ChatGroupId){if(m.user){var n=_.find(m.user.messages,{id:e.id});n&&_.merge(n,e)}var t=_.find(m.users.rows,{id:m.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===m.currentUser.id&&e.read&&0<m.unreadMessages[e.FromId]&&(m.unreadMessages[e.FromId]-=1)}}),d.on("user:update",function(e){var n=_.find(m.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))}),e("quick-panel").onClose(function(){m.user=void 0}),m.loadMoreMessages=u,m.timelineOptions={scrollEl:"#chat-dialog"},i.$on("$destroy",function(){d.removeAllListeners("chatInternalMessage:save"),d.removeAllListeners("chatInternalMessage:update"),d.removeAllListeners("user:update")})}e.$inject=["$http","$mdSidenav","$q","$rootScope","$scope","$timeout","$translate","api","Auth","socket","toasty"],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(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){u()}function u(){s.user.get({id:c.user.id}).$promise.then(function(e){c.user.permissions=e.permissions,c.items=[{font_icon:"icon-hangouts",class:"green-700-fg",label:"chat",title:"TOOLBAR.CHAT",value:"chat",permission:r.chat&&(p(105)||e.chatAutoanswer),enabled:e.chatAutoanswer,delay:e.chatAutoanswerDelay},{font_icon:"icon-email",class:"teal-fg",label:"email",title:"TOOLBAR.EMAIL",value:"email",permission:r.mail&&(p(106)||e.emailAutoanswer),enabled:e.emailAutoanswer,delay:e.emailAutoanswerDelay},{font_icon:"icon-message-text",class:"orange-fg",label:"sms",title:"TOOLBAR.SMS",value:"sms",permission:r.messaging&&(p(107)||e.smsAutoanswer),enabled:e.smsAutoanswer,delay:e.smsAutoanswerDelay},{font_icon:"icon-google-earth",class:"amber-fg",label:"openchannel",title:"TOOLBAR.OPENCHANNEL",value:"openchannel",permission:r.openchannel&&(p(108)||e.openchannelAutoanswer),enabled:e.openchannelAutoanswer,delay:e.openchannelAutoanswerDelay},{font_icon:"icon-deskphone",class:"grey-A200-fg",label:"fax",title:"TOOLBAR.FAX",value:"fax",permission:r.fax&&(p(109)||e.faxAutoanswer),enabled:e.faxAutoanswer,delay:e.faxAutoanswerDelay},{font_icon:"icon-whatsapp",class:"lime-A700-fg",label:"whatsapp",title:"TOOLBAR.WHATSAPP",value:"whatsapp",permission:r.whatsapp&&(p(114)||e.whatsappAutoanswer),enabled:e.whatsappAutoanswer,delay:e.whatsappAutoanswerDelay}]})}function p(e){return _.includes(c.user.permissions,e)}c.items=[],c.closeDialog=function(){a.hide()},c.user=d.getCurrentUser(),u(),o.connect(),o.on("userNotification:recalc:"+c.user.id,m)}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","socket","license","user","Auth"],angular.module("app.toolbar").controller("AutoAnswerNotificationsDialogController",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,t,a,i,n,s,o){var r=this;function l(e,n){var t={id:e.id};n?t.recallmeNotifiedDate=null:r.isRecallNotification?t.recallmeNotifiedDate=null:e.recallme||(t.UserId=null),i.cmHopper.update(t)}function d(e){var n=!1;_.isNil(e)||(n=e),l(r.preview,n),t.hide()}function c(e){return i.cmContact.getAdditionalPhones({id:e}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");r.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");r.additionalItems=[];for(var s=0;s<n.length;s++)r.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})})}r.customFieldsMap=s&&s.rows?_.mapValues(_.keyBy(s.rows,function(e){return"cf_"+e.id}),"name"):{},r.errors=[],r.hopperIds=[],r.additionalItems=[],r.preview=n,r.isRecallNotification=o,r.originated=!1,r.disable=!1,r.disableGetContact=!1,r.hopperIds.push(r.preview.id),r.originatePreview=function(){r.originated=!0,r.disable=!0,_.isEmpty(r.preview)?(a.error({title:"Message",msg:"Contact not available"}),r.disable=!1,r.hopperIds=[],d(!0)):i.rpc.getVoiceQueuesPreview({id:r.preview.id}).$promise.then(function(){d(!0)}).catch(function(e){a.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){r.disable=!1,r.hopperIds=[]})},r.closeDialog=d,r.nextContact=function(){return r.disableGetContact=!0,i.cmHopper.getPreview({hopperIds:r.hopperIds,direction:"next"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(r.disableGetContact=!1,r.hopperIds=[],404===e.status)r.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){t.hide();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 t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.previousContact=function(){if(r.disableGetContact=!0,1<r.hopperIds.length){var e=_.without(r.hopperIds,r.preview.id);return i.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),_.remove(r.hopperIds,function(e){return e==r.preview.id}),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e)}).catch(function(e){if(404===e.status)r.hopperIds=[r.preview.id],a.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){r.hopperIds=[],t.hide();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 r.hopperIds=[],t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},r.getFirstAvailableContact=function(){return r.disableGetContact=!0,a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),i.cmHopper.getPreview({hopperIds:[r.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(t.hide(),404===e.status)a.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)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 preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){r.disableGetContact=!1})},r.isCustomField=function(e){return _.startsWith(e,"cf_")},r.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","dialTimezone","utcOffset","AdditionalPhones","additionalPhones","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},r.isNil=function(e){return _.isNil(e)},_.isNil(r.preview)||c(r.preview.Contact.id),e.$on("$destroy",function(){r.originated||l(r.preview,!1)})}e.$inject=["$scope","$mdDialog","toasty","api","preview","customFields","isRecallNotification"],angular.module("app.toolbar").controller("PreviewDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),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,S){var T,I=this;I.voiceQueues=[],I.polling=!0,t.global={search:""},I.pauses=[],I.license=b,I.currentUser=v.getCurrentUser(),I.unreadTotalMessages=0,I.unreadTotalGroupMessages=0,I.contacts=0,"agent"===I.currentUser.role&&(T=E(function(){_.some(I.voiceQueues,{dialMethod:"preview",dialActive:!0})&&I.license.dialer&&I.polling?(I.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(I.contacts=e.contacts)}).finally(function(){I.polling=!0})):I.contacts=0},14999)),I.setting=A,I.bodyEl=angular.element("body"),I.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:I.license.webrtc,phoneBarExpires:I.currentUser.phoneBarExpires,phoneBarPrefixRequired:I.currentUser.phoneBarPrefixRequired,wssPort:I.currentUser.wssPort},I.webRTCSessions=[],I.autoanswerIconColor="green-700-fg",I.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"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},bs:{title:"Bosnian",translation:"TOOLBAR.BOSNIAN",code:"bs",flag:"bs"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},et:{title:"Estonian",translation:"TOOLBAR.ESTONIAN",code:"et",flag:"et"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(n){n.queuecallerleaveAt?I.waitingQueueCalls=_.filter(I.waitingQueueCalls,function(e){return e!==n.uniqueid}):I.waitingQueueCalls.push(n.uniqueid)}function R(e){w(e)}function x(e){"inbound"===e.type&&w(e)}function N(){h.connect(),h.on("user:update",H),h.on("user:called",V),h.on("chatInternalMessage:save",F),h.on("chatInternalMessage:update",$),h.on("userVoiceQueue:save",k),h.on("voiceQueue:save",L),h.on("userVoiceQueue:remove",k),h.on("voiceQueue:remove",L),h.on("voiceQueue:update",L),h.on("user:forcelogout",B),h.on("userNotification:send",Q),h.on("userNotification:recalc:"+I.user.id,j),h.onWithoutApply("voice_queue_channel:save",x),h.onWithoutApply("voice_queue_channel:remove",R)}function D(){h.disconnect("logout")}function P(){var e={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0};return f.user.getQueues(e).$promise.then(function(e){I.voiceQueues=e.rows})}function L(){P()}function k(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&P()}function M(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function U(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function F(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1),e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++}function $(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1),e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--}function q(e){return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function G(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:I.user,setting:A,reset:n}})}function H(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;D();var t=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(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){N(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),q(!0)})}else q(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)}function V(e){if(I.isWebRTCBarRegistered&&2===I.currentUser.showWebBar&&"agent"===I.currentUser.role){var n=I.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.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}}function B(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return 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){C.error(e)})}function Q(e){var n=e;if(I.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})}}function W(){I.autoanswerIconColor=U()?"green-700-fg":"gray-700-fg"}function j(e){e&&e.permissions&&(I.currentUser.permissions=e.permissions,W())}I.toggleSidenav=function(e){i(e).toggle()},I.logout=q,I.changeLanguage=function(e){if(!I.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"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.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"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.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},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=G,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.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()})})},I.unpause=function(){return f.user.unpause({id:I.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()})})},I.preview=function(n){return I.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"}):M(e,!1,n)}).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){I.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(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){U()?c.show({controller:"AutoAnswerNotificationsDialogController",controllerAs:"vm",templateUrl:"app/toolbar/autoanswers/dialog.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:I.license,user:I.currentUser}}):alert(r.instant("TOOLBAR.NO_AUTOANSWER_CONFIGURED"))},I.getLogo=function(){return I.setting.defaultHeaderWhiteLabel?"xCALLY Motion":I.setting.headerWhiteLabel},I.userIsNotPhonebar=function(){return"admin"===I.currentUser.role||"user"===I.currentUser.role||"agent"===I.currentUser.role&&0!==I.currentUser.showWebBar},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},I.waitingQueueCalls=[],function(){I.user=v.getCurrentUser(),P().then(function(){return f.rpc.getVoiceQueuesChannels().$promise}).then(function(e){e.rows.forEach(function(n){if("inbound"===n.type&&!n.queuecallerleaveAt){var e=_.find(I.voiceQueues,function(e){return e.name===n.queue});e&&I.waitingQueueCalls.push(n.uniqueid)}})}),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.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()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?G(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 G(null,!0);W()}(),N(),I.openPreviewDialog=M,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.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"),h.removeAllListeners("userNotification:recalc:"+I.user.id),T&&(E.cancel(T),T=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","ClientSideLoggingService"],angular.module("app.toolbar").controller("ToolbarController",e)}(),function(){"use strict";function e(a,i,t,s,e){var n={updateUserSettingById:function(e,n){if("number"==typeof e)return i.userSetting.update({id:e},n).$promise;throw new Error("User setting id is missing")}},o=!1,r=a.getCurrentUser(),l=r?r.userSetting:null,d=function(e){var n="user-setting:update:user-"+e;t.$on("local:user-updated",c),s.on(n,c)};function c(){return o?e(function(e){e(l)}):(o=!0,function(e){var n=a.getCurrentUser(),t=null;t="admin"===n.role&&"number"==typeof e?i.user.get({id:e,userSetting:!0}).$promise:i.user.whoami({userSetting:!0}).$promise;return t.then(function(e){return a.setCurrentUser(e),e.userSetting})}().then(function(e){l=e,t.$emit("local:user-setting-updated",l)}).finally(function(){o=!1}))}return r&&d(r.id),t.$on("local:user-login",d),t.$on("local:user-logout",function(e){var n="user-setting:update:user-"+e;s.removeListener(n,c),l=null}),n}e.$inject=["Auth","api","$rootScope","socket","$q"],angular.module("app.user-setting").service("UserSettingService",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=""!==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=["","","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","dialTimezone","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://xcally.atlassian.net/wiki/spaces/XMV/pages/1896251872/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-client-side-logging/ms-client-side-logging-icon.html",'<md-icon ng-style="vm.styleColor" md-font-icon="{{ vm.styleIcon }}">\n  <md-tooltip class="client-side-logging-tooltip">\n    <span ng-bind-html="vm.tooltipHTML"></span>\n  </md-tooltip>\n</md-icon>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging.html",'<md-content layout="column">\n  <form name="clientSideLoggingSettingsForm">\n    <div flex layout="column" layout-align="stretch center">\n      <div ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-amber-500-bg p-10" layout="row" layout-align="start center">\n        <span class="no-margin font-size-14 line-height-30" translate="STAFF.CLIENT_LOGS_ALL_ENABLED_WARNING" flex></span>\n      </div>\n      <md-input-container>\n        <md-switch ng-model="vm.user.userSetting.clientSideLoggingEnabled" aria-label="Manage client side logging" ng-change="vm.onEnabledSwitchChange()">\n          {{ vm.user.userSetting.clientSideLoggingEnabled ? \'STAFF.CLIENT_LOGS_ENABLED\' : \'STAFF.CLIENT_LOGS_DISABLED\' | translate }}\n        </md-switch>\n      </md-input-container>\n      <h2 ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-subhead mt-0">{{ vm.clientSideLoggingEnabledSince }}</h2>\n    </div>\n    <div layout="column" layout-align="stretch center">\n      <md-input-container ng-if="vm.user.userSetting.clientSideLoggingEnabled">\n        <label>{{ \'STAFF.CLIENT_LOGS_LOGLEVEL_SELECT\' | translate }}</label>\n        <md-select ng-if="vm.user.userSetting.clientSideLoggingEnabled" ng-model="vm.user.userSetting.clientSideLoggingLevel" placeholder="Debugging level" ng-change="vm.onLogLevelSelectionChange()" flex="30">\n          <md-option ng-value="loggingLevel" ng-repeat="loggingLevel in vm.availableClientSideLoggingLevels">\n            <md-icon ng-style="vm.computeStyleForLoggingLevel(loggingLevel)" md-font-icon="{{ loggingLevel === \'info\' ? \'icon-checkbox-blank-circle-outline\' : \'icon-checkbox-blank-circle\' }}"></md-icon>\n            {{ loggingLevel }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </div>\n  </form>\n</md-content>'),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">\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled"></angucomplete-alt>\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding">\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-switch ng-model="vm.messengerSoundNotification" aria-label="EnableMessengerSoundNotification">\n                <span translate="TOOLBAR.MESSENGERSOUNDNOTIFICATION">MessengerSoundNotification</span>\n              </md-switch>              \n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpen)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpen = true" md-on-close="isOpen = 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(true)" 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">\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" 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" >\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" ng-change="ngChange()">\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-2" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 2)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' +  vm.label | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview && !vm.config.crudPermissions.readOnly" 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 ng-if="vm.config.crudPermissions.canEdit === true">\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 ng-if="vm.config.crudPermissions.canDelete === true">\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 style="height: 60px !important; min-height: 60px !important" 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="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="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" 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="md-hue-2" 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" 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" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" 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" 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" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" 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" 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" 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="md-hue-2" 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" 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 flex class="text-center grey-600-fg">\n        <a translate="FOOTER.COOKIE_LAW"target="_blank" href="https://xcally.atlassian.net/wiki/spaces/XMV/pages/1896253188/Cookie+Policy" flex class="text-center grey-600-fg">We use cookies to give you the best experience. Read our cookie policy.</a>\n      </span>\n      </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" 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">\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled || vm.adSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.startTime">\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.endTime">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" 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>\n      <div class="error-list">\n        <div ng-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tvox/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.chatWebsite.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textButtonColor" label="{{\'CHAT.TEXT_BUTTON_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              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error" ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                      must have a maximum length equal to 6</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" 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" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_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-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n        <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      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</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">{{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          <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 && additionalPhonesForm.$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                  </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">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\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="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\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\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.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\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/import/importUpdates.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.UPDATE_EXISTING_CONTACTS">Update Existing 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 class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" 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  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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 layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                    <div ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\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.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\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                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\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>\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" ng-change="vm.recalcTZTime()" 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" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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">\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>\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\',false)" 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\',false)">\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\',false)">\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="agent-general-home-navbar md-primary-bg width-50">\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 class="agent-general-home-sections" layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto; overflow-x: hidden" flex>\n      <div ng-switch-when="agentPresence" class="home-agent-presence">\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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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 class="home-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" ng-mouseleave="vm.resetTooltipPosition($event)" ng-mouseenter="vm.adjustTooltipPosition($event)">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview"><span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span></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-120 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                  {{ \'VOICE.\' + (agent.status | uppercase) | translate | 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\' && agent.status !== \'unavailable\'" 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\' && agent.status !== \'unavailable\'" 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 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-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>\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 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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.faxAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\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" 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" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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!-- ACCOUNTS 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.count > 0">\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="account" md-select-id="id" ng-repeat="account in vm.faxAccounts.rows">\n        <td md-cell>{{account.name}}</td>\n        <td md-cell>{{account.key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(account.in || 0) + (account.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">{{account.in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{account.lastIn ?  (account.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">{{account.out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{account.lastOut ?  (account.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, account)" 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.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / ACCOUNTS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),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 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">\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://xcally.atlassian.net/wiki/spaces/XMV/overview" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://xcally.atlassian.net/wiki/spaces/XMV/overview" 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://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252454/Motion+GUI#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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n          <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n        </md-switch>\n        \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n      </md-input-container>\n\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\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\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" ng-required="true">\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\n      </div>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n            <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders">{{provider.name}}</md-option>\n          </md-select>\n        </md-input-container>\n      </div>\n\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        <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 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">\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="modernAuthentication">{{ \'INTEGRATIONS.MODERN_AUTHENTICATION\' | 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="modernAuthentication ">\n                  <md-icon md-colors="{color: {{dynamics365Account.modernAuthentication ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{dynamics365Account.modernAuthentication ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n                  <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n                </md-switch>\n                \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n                  <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n                    <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders.rows">{{provider.name}}</md-option>\n                  </md-select>\n                </md-input-container>\n              </div>\n\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                <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\n              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\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" ng-required="vm.dynamics365Account.modernAuthentication == false">\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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_REQUIRED">Type field is required</span>\n                              </div>\n                            </div>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <md-switch ng-model="vm_cc.dynamics365Configuration.openNewTab">\n                              <span translate="INTEGRATIONS.OPENNEWTAB">Open new tab</span>\n                            </md-switch>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT">Additional search contact</label>\n                            <input type="" name="additionalSearchContact" ng-model="vm_cc.dynamics365Configuration.additionalSearchContact" autofocus>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n          </div>\n\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\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 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">\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n            <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.IMAP_PORT">IMAP Port</label>\n            <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.SMTP_HOST">SMTP Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.SMTP_PORT">SMTP Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAIL ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.goToMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.goToRealtime()" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.addAgent(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (credentialsForm.$invalid) || (templateForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.mailAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</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" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="credentialsForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container template md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="templateForm[\'fontFamily\'].$error" ng-show="templateForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" 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" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="provider">{{ \'MAIL.SERVICE\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td md-cell class="active">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td md-cell class="description ">{{mailAccount.description}}</td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email Account\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- ACCOUNTS 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.count > 0">\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="account" md-select-id="id" ng-repeat="account in vm.mailAccounts.rows">\n        <td md-cell>{{account.name}}</td>\n        <td md-cell>{{account.key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(account.in || 0) + (account.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">{{account.in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{account.lastIn ?  (account.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">{{account.out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{account.lastOut ?  (account.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>{{account.Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="account.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.\' + account.Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="account.active && (account.Imap.lastSync && account.Imap.lastSync != \'\')">{{account.Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="account.Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{account.Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ account.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.\' + account.Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{account.Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!account.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, account)" 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, account)" 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.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / ACCOUNTS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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/hopperdate/hopperdate.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" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\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" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\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\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\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\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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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.dateTime" ng-change="vm.recalcTZTime()">\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.dateTime" ng-change="vm.recalcTZTime()">\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      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\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) || (additionalphonesForm.$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          <div class="queueCampaign-detail-form-container additionalphones 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.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header 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">\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column md-order-by="name" class="bl">{{\'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.rows.length > 0">\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="campaign in vm.campaigns.rows">\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.campaigns.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_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 md-order-by="name">{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.rows.length > 0">\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="queue in vm.queues.rows">\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.queues.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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.openchannelAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n\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" 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" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools quick-filter-container">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = null; vm.getAgents()" aria-label="Status filter">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="DEFAULT PAUSE">{{ \'VOICE.DEFAULT_PAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">{{ \'STAFF.LOGININPAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="Auto-Pause">{{ \'VOICE.AUTOPAUSE\' | translate | uppercase }}</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n    <md-select ng-model="vm.query.globalQueueFilter" multiple class="md-caption margin-left-10 mw-150" placeholder="{{ \'DASHBOARDS.SELECT_QUEUE\' | translate }}" md-on-open="vm.getQueuesByChannel()" md-on-close="vm.getAgents()">\n      <md-button ng-click="vm.selectAllQueues()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearQueuesSelection()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.getAgents">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.onSort">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            <span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">{{ 'VOICE.PAUSE' | translate | uppercase }} (</span>{{\n              ['pause', '*pause'].includes(agent.globalStatus) ? \n                ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n                ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase) }}<span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">)</span>\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\" start-time=\"agent.lastPauseAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" utc-offset=\"vm.utcOffset\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\" aria-label=\"Screen Recording\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.count}}\" md-on-paginate=\"vm.onPaginate\" md-page-select></md-table-pagination>"),e.put("app/main/apps/realtime/views/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 ng-if="vm.voiceQueueType === \'inbound\'" 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.voiceQueuesChannels.count > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="channel in vm.voiceQueuesChannels.rows | limitObjectFromTo: vm.query.limit:(vm.query.page - 1) * vm.query.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 ng-if="vm.voiceQueueType === \'inbound\'" md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span ng-if="vm.voiceQueueType === \'inbound\'">{{channel.calleridname}}, </span>\n          <span>{{channel.calleridnum}}</span>\n        </td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>{{ \'VOICE.NO_AGENT_AVAILABLE\' | translate }}</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.query.limit" md-page="vm.query.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{ vm.voiceQueuesChannels.count }}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/realtime/views/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 }} {{ \'DASHBOARDS.INFO\' | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-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">\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.formatTime(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.formatTime(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.formatTime(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.formatTime(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  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/realtime/views/queues/templates/actions.html",'<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="3">\n    <md-menu-item>\n      <md-button ng-click="vm.editQueue($event, queue)" translate="{{ (vm.channel | uppercase) + \'.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.showPredictiveInfo($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.addOrRemoveAgents($event, queue)" translate="{{ (vm.channel | uppercase) + \'.AGENTSADD_QUEUE\' }}">\n        Add Agents to queue\n      </md-button>\n    </md-menu-item>\n  </md-menu-content>\n</md-menu>'),e.put("app/main/apps/realtime/views/queues/templates/headers/default.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ (vm.channel | uppercase) + '.NAME' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.PAUSED' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_INTERACTIONS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/inbound.html","<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>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/outbound.html","<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>{{ 'DASHBOARDS.WAITING_CALLS' | 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>"),e.put("app/main/apps/realtime/views/queues/templates/rows/default.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="6">\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 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\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/inbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="8">\n    <div layout="row" layout-align="center center">\n      <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row 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.inUse - queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/outbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="13">\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.inUse - queue.talking - queue.pTalking }}</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) : (queue.statusMessage ? (\'MOTIONDIALER.\' + queue.statusMessage | 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\n  <td md-cell class=\"actions\" ng-if=\"vm.crudPermissions.canEdit\" ng-include=\"'app/main/apps/realtime/views/queues/templates/actions.html'\"></td>\n</tr>"),e.put("app/main/apps/realtime/views/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="{{ (vm.channel | uppercase) + \'.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" ng-include="vm.headersTemplate">\n    </thead>\n    <tbody md-body ng-include="vm.rowsTemplate"></tbody>\n  </table>\n</md-table-container>\n\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.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header 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">\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service">{{ vm.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (vm.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</label>\n          <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</label>\n          <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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">\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval 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="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\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="1200" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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="1200"><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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable">\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n              <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\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">\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://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252454/Motion+GUI#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://xcally.atlassian.net/wiki/spaces/XMV/pages/1896252454/Motion+GUI#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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.smsAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue 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" 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" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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  \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-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    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 md-accent-bg" layout="row" layout-align="start center">\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    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.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="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      <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    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="agent"></ms-client-side-logging-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="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="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item>\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\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(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n                      </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: \'{{\'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      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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      <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      <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 class="md-block" ng-if="vm.agent.userSetting">\n        <ms-client-side-logging user="vm.agent"></ms-client-side-logging>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\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    <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    <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) || (autoAnswerForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <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                <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                <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                <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                <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                <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                <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            </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                <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                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n            </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              <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                <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                <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                <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                    <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          </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                <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                <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                <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                <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                <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            </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                <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                <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                <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                <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                <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                <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            </form>\n          </div>\n          <div class="agent-detail-form-container auto_answer 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.AUTO_ANSWER">AUTO_ANSWER</div>\n            </div>\n            <form name="autoAnswerForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <md-switch ng-model="vm.agent.chatAutoanswer" aria-label="chatAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.CHAT_AUTOANSWER">ChatAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.chatAutoanswer" class="md-block">\n                  <label translate="STAFF.CHAT_AUTOANSWERDELAY">ChatAutoAnswerDelay</label>\n                  <input type="number" name="chatAutoAnswerDelay" ng-model="vm.agent.chatAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <md-switch ng-model="vm.agent.emailAutoanswer" aria-label="emailAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.EMAIL_AUTOANSWER">EmailAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.emailAutoanswer" class="md-block">\n                  <label translate="STAFF.EMAIL_AUTOANSWERDELAY">EmailAutoAnswerDelay</label>\n                  <input type="number" name="emailAutoAnswerDelay" ng-model="vm.agent.emailAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <md-switch ng-model="vm.agent.smsAutoanswer" aria-label="smsAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.SMS_AUTOANSWER">SmsAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.smsAutoanswer" class="md-block">\n                  <label translate="STAFF.SMS_AUTOANSWERDELAY">SmsAutoAnswerDelay</label>\n                  <input type="number" name="smsAutoAnswerDelay" ng-model="vm.agent.smsAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <md-switch ng-model="vm.agent.openchannelAutoanswer" aria-label="openchannelAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.OPENCHANNEL_AUTOANSWER">openchannelAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.openchannelAutoanswer" class="md-block">\n                  <label translate="STAFF.OPENCHANNEL_AUTOANSWERDELAY">openchannelAutoAnswerDelay</label>\n                  <input type="number" name="openchannelAutoAnswerDelay" ng-model="vm.agent.openchannelAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <md-switch ng-model="vm.agent.faxAutoanswer" aria-label="faxAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.FAX_AUTOANSWER">faxAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.faxAutoanswer" class="md-block">\n                  <label translate="STAFF.FAX_AUTOANSWERDELAY">faxAutoAnswerDelay</label>\n                  <input type="number" name="faxAutoAnswerDelay" ng-model="vm.agent.faxAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <md-switch ng-model="vm.agent.whatsappAutoanswer" aria-label="whatsappAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.WHATSAPP_AUTOANSWER">whatsappAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.whatsappAutoanswer" class="md-block">\n                  <label translate="STAFF.WHATSAPP_AUTOANSWERDELAY">whatsappAutoAnswerDelay</label>\n                  <input type="number" name="whatsappAutoAnswerDelay" ng-model="vm.agent.whatsappAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\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                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <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            </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                <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                <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            </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                <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            </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                <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                <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                <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                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <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            </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.messengerSoundNotification" aria-label="EnableMessengerSoundNotification" \n                ng-if="vm.agent.allowmessenger">\n                  <span translate="STAFF.MESSENGERSOUNDNOTIFICATION">MessengerSoundNotification</span></md-switch>\n            </md-input-container>\n            <md-input-container class="md-block">                \n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n            </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            </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              \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      <md-divider></md-divider>\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              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container client_logs 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.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.agent" on-user-update="vm.refreshAgent()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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      <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      <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      <md-input-container class="md-block" ng-if="vm.user.userSetting">\n        <ms-client-side-logging user="vm.user"></ms-client-side-logging>\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" 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-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      <div layout="row" layout-align="start center">\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\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    <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    <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  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="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                <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                <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                <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                <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                <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                <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            </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                <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                <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            </form>\n          </div>\n          <div class="user-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n              <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                <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                <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                <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                    <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          </div>\n          <div class="user-detail-form-container internal-chat 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.INTERNAL_MESSENGER">INTERNAL_MESSENGER</div>\n            </div>\n            <form name="internalChatForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.messengerSoundNotification" \n                aria-label="messengerSoundNotification" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.MESSENGERSOUNDNOTIFICATION">MESSENGERSOUNDNOTIFICATION</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MESSENGERSOUNDNOTIFICATION"></span></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="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                <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                <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                <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.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            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container client_logs 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.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.user" on-user-update="vm.refreshUser()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" 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-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    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 md-accent-bg" layout="row" layout-align="start center">\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    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.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="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      <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    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\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>{{ \'STAFF.CLIENT_LOGS\' | 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"><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                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditAgent($event, user)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="user"></ms-client-side-logging-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="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="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n                      </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: \'{{\'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      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/contact_item_types/contact_item_types.html",'<div id="contact_item_types" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="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.CONTACTITEMTYPE">ContactItemType</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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.selectedContactItemType.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContactItemType =[]">\n      <md-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-contact_item_types-count">\n          <span>{{vm.selectedContactItemType.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.selectAllContactItemType()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContactItemType()" 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.exportSelectedContactItemType" csv-label="true" filename="contact_item_types.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContactItemType($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!-- CONTACTITEMTYPE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContactItemType" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContactItemType">\n              <tr md-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="OrderBy">{{ \'TOOLS.ORDER_BY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contact_item_types.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="contactItemType" md-select-id="id" ng-repeat="contactItemType in vm.contact_item_types.rows">\n                <td md-cell ng-if="contactItemType.userpic"><img class="avatar" alt="{{contactItemType.name}}" ng-src="api/users/{{contactItemType.id}}/avatar" /></td>\n                <td md-cell ng-if="!contactItemType.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{contactItemType.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="id ">{{contactItemType.id}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="name ">{{contactItemType.name}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="OrderBy ">{{contactItemType.OrderBy}}</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(contactItemType, $event    )" translate="TOOLS.EDIT_CONTACTITEMTYPE">\n                          Edit ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(contactItemType, $event    )" translate="TOOLS.DELETE_CONTACTITEMTYPE">\n                          Delete ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </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.contact_item_types.count}}" md-on-paginate="vm.getContactItemType" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTACTITEMTYPE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTACTITEMTYPE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-contactItemType-button" ng-click="vm.createOrEditContactItemType($event)" aria-label="add contactItemType" translate translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTACTITEMTYPE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/contact_item_types/create/dialog.html",'<md-dialog class="contactItemType-dialog" aria-label="New ContactItemType">\n  <form name="contactItemTypeForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.contactItemType.name" ng-required="true" autofocus>\n\n        <div ng-messages="contactItemTypeForm[\'name\'].$error" ng-show="contactItemTypeForm[\'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.ORDER_BY">Order_by</label>\n        <input type="integer" name="OrderBy" ng-model="vm.contactItemType.OrderBy" ng-required="true">\n\n        <div ng-messages="contactItemTypeForm[\'OrderBy\'].$error" ng-show="contactItemTypeForm[\'OrderBy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ORDER_BY_REQUIRED">Order_by field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.contactItemType.rgbBackgroundColor" label="{{\'TOOLS.RGBBACKGROUNDCOLOR\' | 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.newContactItemType" ng-click="vm.saveContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid || contactItemTypeForm.$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.newContactItemType" ng-click="vm.addNewContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CONTACTITEMTYPE" translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n          ADD CONTACTITEMTYPE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContactItemType" ng-click="vm.deleteContactItemType($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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" ng-change="vm.onTypeChange()" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type === \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'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">\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">\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>\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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">\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">\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\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>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{allCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{anyCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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">\n      <div class="error-list">\n        <div ng-repeat="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>\n      <div class="error-list">\n        <div ng-repeat="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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header 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">\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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" 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" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header 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">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_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 md-order-by="name">{{\'\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.rows.length > 0">\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="queue in vm.queues.rows">\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.queues.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/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 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header 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">\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header 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">\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.whatsappAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\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" 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" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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-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-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" 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" 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" 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" ng-hide="vm_ct.user && vm_ct.isMessengerAllowed">\n  <audio id="beep-player" hidden src="/assets/ms-phonebar/sounds/beep.ogg"></audio>\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" 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" translate="DASHBOARDS.ALL">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg" translate="CHAT.ONLINE"></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" translate="CHAT.OFFLINE"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\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.openChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : vm_ct.defaultAvatar}}" 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.unreadMessages[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessages[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">\n          </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.FromId === vm_ct.currentUser.id" class="s16 no-margin" ng-class="{\'md-accent\': user.lastMessage.read}" md-font-icon="{{ user.lastMessage.read ? \'icon-check-all\' : \'icon-check\' }}"></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    </md-list-item>\n</div>\n</md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user && vm_ct.isMessengerAllowed" 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.closeChat()" 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 ng-if="vm_ct.isLoading" 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 ms-timeline="vm_ct.timelineOptions" ms-timeline-load-more="vm_ct.loadMoreMessages()">\n      <div layout="row" ng-repeat="message in vm_ct.user.messages" class="ms-timeline-item 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\' : vm_ct.defaultAvatar }}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n        <img ng-if="message.FromId === vm_ct.currentUser.id" ng-src="{{ vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar">\n        <div class="bubble timeline-card" 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.FromId === vm_ct.currentUser.id" class="s16 margin-5" ng-class="{\'md-accent\': message.read}" md-font-icon="{{ message.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          </div>\n        </div>\n      </div>\n\n      <div ng-if="vm_ct.hasMoreMessages" 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-click="vm_ct.loadMoreMessages()" translate="DASHBOARDS.MORE">\n        </md-button>\n      </div>\n      <div ng-if="!vm_ct.hasMoreMessages && vm_ct.user.messages.length > 20" layout="row" layout-align="end center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-fab md-mini" type="button" ng-click="vm_ct.scrollToTopOfChat(0)">\n          <md-icon md-font-icon="icon-arrow-up-bold"></md-icon>\n        </md-button>\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    <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>\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" 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" 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 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>\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()">\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/autoanswers/dialog.html",'<md-dialog class="autoanswers-dialog" aria-label="autoanswers">\n  <form name="autoanswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.AUTOANSWER_NOTIFICATIONS\' | translate)  }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content layout-padding>\n      <md-table-container>\n        <table md-table multiple>\n          <thead md-head>\n            <tr md-row>\n              <th></th>\n              <th md-column>{{ \'TOOLBAR.CHANNEL\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.NOTIFICATIONS\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.DELAY\' | translate }}</th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-repeat="item in vm.items" ng-if="item.permission">\n              <td>\n                <md-icon md-font-icon="{{item.font_icon}}" class="icon {{item.class}} {{item.font_icon}}" aria-label="{{item.label}}"></md-icon>\n              </td>\n              <td md-cell>\n                <div layout="row">\n                  <span translate="{{item.title}}"></span>\n                </div>\n              </td>\n              <td md-cell align="center">\n                <div layout="row" layout-align="center">\n                  <md-icon ng-if="item.enabled" md-font-icon="icon-check-circle" class="icon green-700-fg"></md-icon>\n                  <span ng-if="!item.enabled" style="color:red">X</span>\n                </div>\n              </td>\n              <td md-cell align="right">\n                <div layout="row" layout-align="end">\n                  <span ng-if="item.enabled">{{item.delay}}</span>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" registered="vm.isWebRTCBarRegistered" 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.chat || vm.license.mail || vm.license.messaging || vm.license.openchannel || vm.license.fax || vm.license.whatsapp)" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.autoAnswerNotificationsDialog($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <md-icon md-font-icon="icon-reply" class="icon {{ vm.autoanswerIconColor }}"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.AUTOANSWER_NOTIFICATIONS">Notifications</span></md-tooltip>\n    </md-button>\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 badge-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    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\n\n    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" 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-if="!vm.isRecallNotification" 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.client-side-logging",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors","app.user-setting","app.client-side-logging"])}(),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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,waitForTheAssignedQueue,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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,waitForTheAssignedQueue,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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",params:{channel:"chat"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,ChatWebsiteId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,MailAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,SmsAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,OpenchannelAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"id,name",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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,FaxAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,WhatsappAccountId",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:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,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:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",params:{channel:"fax"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"name",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",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,modernAuthentication,CloudProviderId",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})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver",function(e){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",params:{channel:"mail"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"name",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",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,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",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.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"outbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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",params:{direction:"outbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",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})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"outbound"})}]},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,createdAt",role:"agent",sort:"-createdAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"name",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",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: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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",params:{channel:"openchannel"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs,filterFullName",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,waitForTheAssignedQueue,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,waitForTheAssignedQueue,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",params:{channel:"sms"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",role:"admin,user",sort:"-updatedAt",userSetting:!0,limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",role:"agent",sort:"-updatedAt",userSetting:!0,limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay,messengerSoundNotification",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1013})}]},authenticate:!0,permissionId:1013,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},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:"fullname",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,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:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"inbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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",params:{direction:"inbound"},controller:"QueueCallsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queue-calls/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,fields:"id,name",section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",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})}],voiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels",{type:"inbound"})}]},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,createdAt",role:"agent",sort:"-createdAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context,createdAt",role:"agent",sort:"-createdAt",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{sort:"name",nolimit:!0})}],agents:["apiResolver",function(e){return e.resolve("realtime@getAgents",{sort:"fullname"})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",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})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",params:{channel:"whatsapp"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,waitForTheAssignedQueue,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";angular.module("app.user-setting",[])}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami({userSetting:!0}).$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},setMessengerSoundNotification:function(e){u().messengerSoundNotification=e}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(n,t,a,i,s){var o;return{request:function(e){var n=a.get("motion.token");return e.headers=e.headers||{},s.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:a.remove("motion.token"),n.$broadcast("webrtc::logout"),(o||(o=i.get("$state"))).go("app.login")}return t.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";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),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){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","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(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.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"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.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"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.pendingCondition?c():d()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(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){y.error(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,x("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return x("speaker",!1)}).then(function(){return x("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)&&(y.info("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):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,S(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.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 I(e){y.debug("answer -> session",e._request),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 O(e,n){y.debug("terminate -> session",e._request),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 y.debug("getVoiceChannels -> session",t._request),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 w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(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&&S()}).catch(function(e){y.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&&S()}).catch(function(e){y.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&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(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 P(){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){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}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(c.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){y.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,T(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){y.debug("getNotification -> session",n._request);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(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,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){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,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=w.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){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),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&&"ACW"!==E.currentUser.pauseType&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),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){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){y.error(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 D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);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 D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),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){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),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){y.debug("referAttended -> session",e._request),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=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},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(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},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){y.error(e)})})},E.patchConference=P,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.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 D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")}),n.onbeforeunload=function(){E.sessions.forEach(function(e){E.terminate(e)})}}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager","ClientSideLoggingService"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"=",registered:"="},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,i,a,s,o){var r=this;function l(e,n){var t=n?"Transfer Success":"Transfer Failed",a="top right";return console.debug("onTransferCallback -> session, textContent, position, delay",e,t,a,3e3),function(){i.show(i.simple().textContent(t).position(a).hideDelay(3e3))}}function d(e){n.hide(e)}r.title="Refer Attended",r.sessions=a,r.session=s,r.isJabraEnabled=o,r.sessionTarget=null,a.length&&(r.target=a[0].user),r.closeDialog=d,r.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===r.target)return e});n=t.outgoing?(e=t,r.session):(e=r.session,t);console.debug("session.refer() -> source, target, replaces, callback",n,e.user,e,"onTransferCallback"),n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:l(s,!0),requestFailed:l(s,!1)}}),function(e,n){e.terminate(),jabra&&n&&jabra.onHook();d()}(s,o)}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t,a,i){var o=this;function r(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}o.currentUser=a.getCurrentUser(),o.messengerSoundNotification=o.currentUser.messengerSoundNotification,_.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=r(n,"audiooutput","ringingId"),s.speakerId=r(n,"audiooutput","speakerId"),s.microphoneId=r(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,o.conf=angular.copy(s),o.devices=n,o.activeSessions=t,o.saveSettings=function(){i.user.messengerSoundNotification({id:o.currentUser.id,enabled:o.messengerSoundNotification}).$promise.then(function(){a.setMessengerSoundNotification(o.messengerSoundNotification),e.hide(o.conf)})},o.closeDialog=function(){e.hide()},o.isCompatibleBrowser=function(){return"chrome"===o.conf.browserName.toLowerCase()||"opera"===o.conf.browserName.toLowerCase()||"safari"===o.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions","Auth","api"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(e,t,a){var i=this;function s(e,n,t){r(e).then(function(){n&&!1!==t&&i.search()})}function o(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()}function r(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};return a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){r(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=s,i.onDateRangeSelection=o,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]]:[],r(e).then(function(){i.search()})},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),r(e).then(function(){i.search()})},e.$on("ms-quick-filter:update",function(e,t){t.filters.forEach(function(e){var n=_.find(i.filters,["name",e]);if(n)switch(n.type){case"date":o(n);break;case"multiselect":s(n,!0,t.update);break;case"select":i.search()}})})}e.$inject=["$scope","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"}})}(),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(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(!0)},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(!0);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"></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(e,n,t,a,i){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(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw 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){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},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:"=",ngChange:"&"},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"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var i=this;i.filter=[],i.filtered=!1,i.fontSize=20,i.label="",i.getCount=function(e){var n=0;if(e){i.fontSize=e.attrs[r]&&e.attrs[r].value?parseInt(e.attrs[r].value)-parseInt(e.attrs[r].value)%2:20;var t=e.attrs.find(function(e){return"attrChannel"===e.name});if(t||e.attrs.push({name:"attrChannel",value:"voice"}),"voice"!==e.attrs[l].value?"talking"===e.attrs[s].value?i.label="Opened":"answered"===e.attrs[s].value?i.label="Managed":i.label=e.attrs[s].value:i.label=e.attrs[s].value,e.attrs[l].value.toLowerCase().includes("voice")){e.attrs[o].value&&e.attrs[o].value.length?(i.filtered=!0,i.filter=_.intersection(e.voiceQueuesSelected,e.attrs[o].value)):(i.filtered=!1,i.filter=e.voiceQueuesSelected);for(var a=0;a<e.voiceQueues.rows.length;a+=1)_.includes(i.filter,e.voiceQueues.rows[a].id)&&(n+=e.voiceQueues.rows[a][e.attrs[s].value]?parseInt(e.voiceQueues.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("chat")){e.attrs[g].value&&e.attrs[g].value.length?(i.filtered=!0,i.filter=_.intersection(e.chatWebsitesSelected,e.attrs[g].value)):(i.filtered=!1,i.filter=e.chatWebsitesSelected);for(var a=0;a<e.chatWebsites.rows.length;a+=1)_.includes(i.filter,e.chatWebsites.rows[a].id)&&(n+=e.chatWebsites.rows[a][e.attrs[s].value]?parseInt(e.chatWebsites.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("fax")){e.attrs[c].value&&e.attrs[c].value.length?(i.filtered=!0,i.filter=_.intersection(e.faxAccountsSelected,e.attrs[c].value)):(i.filtered=!1,i.filter=e.faxAccountsSelected);for(var a=0;a<e.faxAccounts.rows.length;a+=1)_.includes(i.filter,e.faxAccounts.rows[a].id)&&(n+=e.faxAccounts.rows[a][e.attrs[s].value]?parseInt(e.faxAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("mail")){e.attrs[d].value&&e.attrs[d].value.length?(i.filtered=!0,i.filter=_.intersection(e.mailAccountsSelected,e.attrs[d].value)):(i.filtered=!1,i.filter=e.mailAccountsSelected);for(var a=0;a<e.mailAccounts.rows.length;a+=1)_.includes(i.filter,e.mailAccounts.rows[a].id)&&(n+=e.mailAccounts.rows[a][e.attrs[s].value]?parseInt(e.mailAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("openchannel")){e.attrs[u].value&&e.attrs[u].value.length?(i.filtered=!0,i.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[u].value)):(i.filtered=!1,i.filter=e.openchannelAccountsSelected);for(var a=0;a<e.openchannelAccounts.rows.length;a+=1)_.includes(i.filter,e.openchannelAccounts.rows[a].id)&&(n+=e.openchannelAccounts.rows[a][e.attrs[s].value]?parseInt(e.openchannelAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("whatsapp")){e.attrs[p].value&&e.attrs[p].value.length?(i.filtered=!0,i.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[p].value)):(i.filtered=!1,i.filter=e.whatsappAccountsSelected);for(var a=0;a<e.whatsappAccounts.rows.length;a+=1)_.includes(i.filter,e.whatsappAccounts.rows[a].id)&&(n+=e.whatsappAccounts.rows[a][e.attrs[s].value]?parseInt(e.whatsappAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("sms")){e.attrs[m].value&&e.attrs[m].value.length?(i.filtered=!0,i.filter=_.intersection(e.smsAccountsSelected,e.attrs[m].value)):(i.filtered=!1,i.filter=e.smsAccountsSelected);for(var a=0;a<e.smsAccounts.rows.length;a+=1)_.includes(i.filter,e.smsAccounts.rows[a].id)&&(n+=e.smsAccounts.rows[a][e.attrs[s].value]?parseInt(e.smsAccounts.rows[a][e.attrs[s].value]):0)}}return n};var s=0,o=1,r=2,l=3,d=4,c=5,m=6,u=7,p=8,g=9})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(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}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,e,n,i){var s={},o={},r="mail",l={};function d(){if(o=n.getCurrentUser(),e.localStorage.getItem("motion2.home:"+o.id)||(r="dashboard"),l=e.localStorage.getItem("motion2.home."+r+":"+o.id)){var a=JSON.parse(l);a.drafts?o.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,i.mask(t))}):a.drafts={},l=a}else l={drafts:{}};return l.drafts}function c(){_.isEmpty(s.drafts)?delete l.drafts:l.drafts=s.drafts,e.localStorage.setItem("motion2.home."+r+":"+o.id,JSON.stringify(l))}return s.init=function(){s.drafts=d()},s.getByInteraction=function(n){return s.drafts=d(),_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n})},s.removeByInteraction=function(n){s.drafts=d();var e=_.find(_.values(s.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete s.drafts[e.id],c())},s.add=function(e){s.drafts=d();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};s.drafts[t.id]=t,c()},s.update=function(e){s.drafts=d();var n=s.drafts[e.id];n&&(n.content=e.message,s.drafts[e.id]=n,c())},s.open=function(e){s.drafts=d();var n=s.drafts[e];n&&t.$broadcast("open"+_.startCase(r)+"Draft",n)},s.remove=function(e){s.drafts=d(),s.drafts[e]&&(delete s.drafts[e],c())},s}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",e)}(),function(){"use strict";function e(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$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(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(h,f){var s=["available","loggedIn","paused","waiting"],o=["busy","inUse","invalid","loggedInDb","notInUse","onHold","ringing","ringInUse","talking","unavailable","unknown"],r=["pTalking","originated","message","statusMessage","dialActive","dialMethod","Trunk","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],n=["idle","unknown","unavailable","ringing"];function t(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function a(e){return!!_.isNil(e)||_.includes(n,e)}function b(e){var n;return t(e,!1)?"pause":t(e,!0)?"*pause":("idle"!==(n=e).voiceStatus&&n.voicePause?n.voiceStatus="pause":!_.every([n.chatStatus,n.faxStatus,n.mailStatus,n.openchannelStatus,n.smsStatus,n.voiceStatus,n.whatsappStatus],a))?"busy":"idle"}function A(){return moment().set("year","0000").format()}return{INCOMING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},OUTGOING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},STATES_STYLES:{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"},STATUS_STYLES:{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"},paginateAgents:function(e,n,t){var a={count:0,rows:[]},i=e.filter(function(e){return e.online});if(i.forEach(function(e){var n,t,a;e.globalStatus=b(e),n=e,f.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")}),e.globalStatusDisplayValue=(a=(t=e).globalStatus,"pause"===t.globalStatus?a=t.pauseType||h.instant("VOICE.DEFAULT_PAUSE"):"*pause"===t.globalStatus&&(a="*"+(t.pauseType||h.instant("VOICE.DEFAULT_PAUSE"))),a)}),0<t.globalQueueFilter.length){var s=n.filter(function(e){return t.globalQueueFilter.includes(e.id)}),o=_.uniq(s.flatMap(function(e){return _.map(e.Agents,"id")}));i=i.filter(function(e){return o.includes(e.id)})}if(t.globalStatusFilter&&(i=i.filter(function(e){var n=e.globalStatus===t.globalStatusFilter;return"pause"===e.globalStatus&&t.pauseTypeFilter&&(n=e.pauseType===t.pauseTypeFilter),n})),t.filter){var r=t.filter.toLowerCase();i=i.filter(function(e){return(e.fullname+" "+e.internal).toLowerCase().includes(r)})}var l,d,c,m,u="-"===t.sort[0]?"DESC":"ASC",p="DESC"===u?t.sort.substring(1):t.sort;l=i,c=u,i="globalStatus"===(d=p)?(m=c,l.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===m?(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?1:-1:(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?-1:1:"DESC"===m?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===m?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})):l.sort(function(e,n){var t=e[d],a=n[d];return"fullname"===d?(t=e[d].toLowerCase(),a=n[d].toLowerCase()):"lastPauseAt"===d&&(t=e.globalStatus.includes("pause")?e[d]:A(),a=n.globalStatus.includes("pause")?n[d]:A()),"DESC"===c?t<a?1:-1:t<a?-1:1}),a.count=i.length;var g=t.offset||0,v=g+t.limit;return a.rows=i.slice(g,v),a},updateQueue:function(e,n){var t=!!n.type,a=s;"inbound"===n.type?a=a.concat(o):"outbound"===n.type&&(a=a.concat(o,r));var i=_.pick(e,a);_.merge(n,i),t&&0<n.ringing&&n.available<n.loggedIn&&(n.available+=n.ringing)}}}e.$inject=["$translate","msUtils"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";function e(e,n){var t={get:function(){return a},getUTCOffset:function(){return null===i?n.setting.getDate().$promise.then(function(e){return i=e.offset}):e.resolve(i)},set:function(e){e&&(a=e.toJSON())}},a={},i=null;return t}e.$inject=["$q","api"],angular.module("app.core").factory("settingsManager",e)}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(n,e,t){if(void 0===n)return"";if(!e)return"";t||(t="option");var a=_.find(e,function(e){return e.value==n});return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},getChannels:function(){return["chat","fax","mail","openchannel","sms","voice","whatsapp"]},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},messengerSoundNotification:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/messengerSoundNotification"},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"},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"},setAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/phones"},getAdditionalPhones:{isArray:!0,method:"get",url:r.baseUrl+"cm/contacts/:id/phones"},duplicateAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/duplicateAdditionalPhones"},rescheduleAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/rescheduleAdditionalPhones"},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"},importUpdates:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/uploadUpdates/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getPreviewRecall:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/:id/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"},getTimezones:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/timezones"},getTimezone:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/timezone"}}),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.contactItemType=e(r.baseUrl+"contact_item_types/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"contact_item_types/describe"},clone:{method:"post",url:r.baseUrl+"contact_item_types/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmContactHasItem=e(r.baseUrl+"cm_contact_has_items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_contact_has_items/describe"},clone:{method:"post",url:r.baseUrl+"cm_contact_has_items/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperAdditionalPhone=e(r.baseUrl+"cm_hopper_additional_phones/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_hopper_additional_phones/describe"},clone:{method:"post",url:r.baseUrl+"cm_hopper_additional_phones/: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"}}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},getGlobalCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/global_fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r.userSetting=e(r.baseUrl+"user-settings/:id",{id:"@id"},{update:{method:"put",isArray:!1}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.adSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled,l.adSsoEnabled=o.adSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startTime:new Date(moment().startOf("day")),startDate:new Date(moment().startOf("day")),endTime:new Date(moment().endOf("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.export.name=l.export.name.replace(/\//g,"_"),l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).set("hour",l.export.startTime.getHours()).set("minute",l.export.startTime.getMinutes()).set("second",l.export.startTime.getSeconds()).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).set("hour",l.export.endTime.getHours()).set("minute",l.export.endTime.getMinutes()).set("second",l.export.endTime.getSeconds()).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,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=s,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){c.projects.unshift(e),i.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++)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.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),i.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++)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.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(){_.remove(c.projects,{id:c.project.id}),i.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,O,C,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(O,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(C,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(O,"id","name"),pause_id:U(C,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"bn",option:"Bengali"},{value:"bs",option:"Bosnian"},{value:"bg",option:"Bulgarian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{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:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gu",option:"Gujarati"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"ko",option:"Korean"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"mk",option:"Macedonian"},{value:"ml",option:"Malayalam"},{value:"mr",option:"Marathi"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt",option:"Portuguese"},{value:"ro",option:"Romanian"},{value:"ru",option:"Russian"},{value:"sr",option:"Serbian"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"ta",option:"Tamil"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"}]}).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:"Zeina",option:"Zeina (Arabic, Female)"},{value:"Zhiyu",option:"Zhiyu (Chinese, Mandarin, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Nicole",option:"Nicole (English, Australian, Female)"},{value:"Olivia",option:"Olivia (English, Austrialian, Female)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Amy",option:"Amy (English, British, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Aditi",option:"Aditi (English, Indian, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Aria",option:"Aria (English, New Zealand, Female)"},{value:"Ayanda",option:"Ayanda (English, South African, Female)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Kevin",option:"Kevin (English, US, Male)"},{value:"Matthew",option:"Matthew (English, US, Male)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Léa",option:"Léa (French, Male)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Gabrielle",option:"Gabrielle (French, Canadian, Female)"},{value:"Vicki",option:"Vicki (German , Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Aditi",option:"Aditi (Hindi , Female)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Bianca",option:"Bianca (Italian, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Takumi",option:"Takumi (Japanese, Male)"},{value:"Seoyeon",option:"Seoyeon (Korean, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Camila",option:"Camila (Portuguese, Brazilian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Conchita",option:"Conchita (Spanish, European, Female)"},{value:"Lucia",option:"Lucia (Spanish, European, Female)"},{value:"Enrique",option:"Enrique (Spanish, European, Male)"},{value:"Mia",option:"Mia (Spanish, Mexican, Female)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Lupe",option:"Lupe (Spanish, US, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Gwyneth",option:"Gwyneth (Welsh , 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(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="CHAT.EDIT_CHATQUEUE",r.chatQueue=angular.copy(n),r.chatQueues=e,r.newChatQueue=!1,r.chatQueue||(r.chatQueue={strategy:"beepall",timeout:10},r.title="CHAT.NEW_CHATQUEUE",r.newChatQueue=!0),r.addNewChatQueue=function(){r.errors=[],i.chatQueue.save(r.chatQueue).$promise.then(function(e){r.chatQueues.unshift(e.toJSON()),a.success({title:"ChatQueue properly created",msg:r.chatQueue.name?r.chatQueue.name+" has been created!":""}),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.chatQueue.save"}];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.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveChatQueue=function(){r.errors=[],i.chatQueue.update({id:r.chatQueue.id},r.chatQueue).$promise.then(function(e){var n=_.find(r.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"ChatQueue properly saved!",msg:r.chatQueue.name?r.chatQueue.name+" has been saved!":""}),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.chatQueue.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.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteChatQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.chatQueue.delete({id:r.chatQueue.id}).$promise.then(function(){_.remove(r.chatQueues,{id:r.chatQueue.id}),a.success({title:"ChatQueue properly deleted!",msg:(r.chatQueue.name||"chatQueue")+" has been deleted!"}),l(r.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];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.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","chatQueues","chatQueue","api","Auth","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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,labelText:"CHAT",messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,waitForTheAssignedQueue:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getChatWebsiteInteractions=g,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=v,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){v(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){O(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=O,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){O(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function O(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.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()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.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()})})},m.deleteContact=function(e){m.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(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.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(a,t,e,i,s,n,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function O(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function C(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),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=e.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");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){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:{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}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$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});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.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=s.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 s.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=O,S.getHistories=C,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=s.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");s.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){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$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())}),a.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),O())}),a.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),C())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),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},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,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(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:"id",required:!0},{key:"firstName",required:!1},{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.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,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.importUpdates({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("ImportContactsUpdatesDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.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 y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(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=y.user.privacyEnabled?A.mask(a):a):c.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)&&U(t)),n){var s=_.find(y.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 l.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];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(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 N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.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},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.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?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)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:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.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 a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({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")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({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":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],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,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},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=f,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=h(e);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(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$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(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.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=S,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.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=A,g.getFinals=E,g.getHistories=y,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(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.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){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),A(),E(),y()}).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?f():void 0}).finally(function(){g.contact&&g.contact.id&&(T(),g.contact.dateOfBirth=S(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=T,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(T(n))})};var v=n.getLogger("agent.general.contact");function h(e){return e.firstName||e.lastName?(e.firstName+" "+e.lastName).trim():e.phone}function f(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=h(e);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 b(n){return function(e){g[n]=e||{count:0,rows:[]}}}function A(){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,b("hoppers")).$promise)}function E(){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,b("finals")).$promise)}function y(){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,b("histories")).$promise)}function S(e){return null===e?void 0:new Date(e)}function T(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})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(A(),E(),y())});var I=!0,O=1;m.$watch("queryHopper.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=O),A())}),m.$watch("queryFinal.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=O),E())}),m.$watch("queryHistory.filter",function(e,n){I?t(function(){I=!1}):(n||(O=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=O),y())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.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()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.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:v.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:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.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()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$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(A()).$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(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.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(v.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.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()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],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,note",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,note:e.note||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,t,e,a){var i=this;function s(e,n){switch(e){case"first":i.selectedDisposition=i.firstLevelDisposition,i.anySecondLevelDisposition=_.some(i.dispositions,["ParentId",i.firstLevelDisposition.id]),i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.anyThirdLevelDisposition=!1;break;case"second":i.selectedDisposition=i.secondLevelDisposition,i.anyThirdLevelDisposition=_.some(i.dispositions,["ParentId",i.secondLevelDisposition.id]);break;case"third":i.selectedDisposition=i.thirdLevelDisposition}n&&function(e){switch(e){case"first":i.call.secondDisposition&&(i.secondLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.secondDisposition&&e.ParentId===i.firstLevelDisposition.id}),i.secondLevelDisposition&&s("second",!0));break;case"second":i.call.thirdDisposition&&(i.thirdLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.thirdDisposition&e.ParentId===i.secondLevelDisposition.id}),i.thirdLevelDisposition&&s("third",!0))}}(e)}i.dispositions=e,i.call=a,i.note=i.call.note||void 0,i.onDispositionChange=s,i.clearDispositionSelection=function(e){"second"===e?(i.secondLevelDisposition=void 0,i.thirdLevelDisposition=void 0,i.selectedDisposition=i.firstLevelDisposition):"third"===e&&(i.thirdLevelDisposition=void 0,i.selectedDisposition=i.secondLevelDisposition);n.disposition.$setDirty()},i.saveDisposition=function(){i.call.note=i.note;var e={firstLevel:i.firstLevelDisposition?i.firstLevelDisposition.name:void 0,secondLevel:i.secondLevelDisposition?i.secondLevelDisposition.name:void 0,thirdLevel:i.thirdLevelDisposition?i.thirdLevelDisposition.name:void 0,note:i.note?i.note:void 0};t.hide(e)},i.closeDialog=function(){t.cancel()},i.call.disposition&&(i.firstLevelDisposition=_.find(i.dispositions,function(e){return e.name===i.call.disposition}),i.firstLevelDisposition&&s("first",!0))}e.$inject=["$scope","$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,note",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,note:e.note||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;function o(){var e=angular.element(".agent-general-home-navbar button.current")[0];e&&e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}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)},angular.element(a).on("resize",o),n.$on("$destroy",function(){angular.element(a).off("resize",o)}),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,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.chatInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,ChatWebsiteId:[]},g.sectionColor="green-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("chat",g.query,g.user.id,g.chatAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("chatInteraction:save",O),d.on("chatInteraction:update",O),d.on("chatInteractionTags:save",C),d.on("chatMessage:save",w),d.on("chatMessage:update",w),d.on("user_has_chat_interactions:save",T),d.on("user_has_chat_interactions:remove",I),d.on("userChatWebsite:save",f),d.on("userChatWebsite:remove",b),0<g.setting.chatInteractionsReloadTimeout&&R()})},g.success=E,g.getChatInteractions=y,g.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},g.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)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:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"chat",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.chat");function h(e){return{accounts:g.chatAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.addAccount("chat",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.removeAccount("chat",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.chatInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<g.chatInteractions.rows.length;n+=1)S(g.chatInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=a.localStorage.getItem("motion2.home.chat:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,a.localStorage.setItem("motion2.home.chat:"+g.user.id,JSON.stringify(n)),g.promise=r.chatInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.chatInteractions.rows=_.orderBy(g.chatInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.chatInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.chatInteractionsReloadTimeout)}t.$on("$destroy",function(){d.removeAllListeners("chatMessage:save"),d.removeAllListeners("chatMessage:update"),d.removeAllListeners("chatInteraction:save"),d.removeAllListeners("chatInteractionTags:save"),d.removeAllListeners("chatInteraction:update"),d.removeAllListeners("user_has_chat_interactions:save"),d.removeAllListeners("user_has_chat_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l){var d=this,c=["type","waiting","dialMethod","dialActive"];function m(e){d.voiceQueuesTotal=e.count?e.count:0,d.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(d.voiceQueues,function(e,n){d.rpcVoiceQueues[n]&&(d.voiceQueues[n].waiting=d.rpcVoiceQueues[n].waiting||0)})}d.voiceQueues={},d.voiceQueuesTotal=0,d.rpcVoiceQueues={},d.getVoiceQueues={},d.rpcVoiceQueuesChannels={},d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.load=!0,d.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},d.queryChannels={limit:10,page:1},d.success=m,d.getVoiceQueues=function(){d.query.offset=(d.query.page-1)*d.query.limit,d.promise=o.user.getQueues(d.query,m).$promise},d.getSize=function(e){return _.size(e)},d.onSaveQueue=function(e){d.voiceQueues[e.id]&&d.rpcVoiceQueues[e.id]&&(d.rpcVoiceQueues[e.id]=e,_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete d.rpcVoiceQueuesChannels[e.uniqueid],d.load&&d.deleteVoiceQueuesChannels.push(e.uniqueid)):(d.rpcVoiceQueuesChannels[e.uniqueid]=e,d.load&&(d.addVoiceQueuesChannels[e.uniqueid]=e)))},d.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&d.getVoiceQueues()},d.onSaveVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]=_.pick(e,c))},d.onUpdateVoiceQueue=function(e){_.isNil(e)||(d.rpcVoiceQueues[e.id]&&_.merge(d.rpcVoiceQueues[e.id],_.pick(e,c)),d.voiceQueues[e.id]&&_.merge(d.voiceQueues[e.id],_.pick(e,c)))},d.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete d.rpcVoiceQueues[e.id],delete d.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",d.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",d.onSaveChannel),l.onWithoutApply("voice_queue_channel:remove",function(e){"inbound"===e.type&&delete d.rpcVoiceQueuesChannels[e.uniqueid]}),l.onWithoutApply("userVoiceQueue:save",d.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",d.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",d.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",d.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",d.onUpdateVoiceQueue),o.user.getQueues(d.query).$promise.then(function(e){return d.myQueues=e,d.myQueues.count=e.rows.length,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<d.myQueues.count;a++){var i=d.myQueues.rows[a];d.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){d.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(d.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(d.rpcVoiceQueuesChannels,d.addVoiceQueuesChannels);for(var e=0;e<d.deleteVoiceQueuesChannels.length;e+=1)delete d.rpcVoiceQueuesChannels[d.deleteVoiceQueuesChannels[e]];d.load=!1,d.addVoiceQueuesChannels={},d.deleteVoiceQueuesChannels=[],d.getVoiceQueues()});var u=!0,p=1;e.$watch("vm_dc.query.filter",function(e,n){u?t(function(){u=!1}):(n||(p=d.query.page),e!==n&&(d.query.page=1),e||(d.query.page=p),d.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"],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(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.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)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:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.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++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.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:v.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:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.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:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.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:v.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.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()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.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=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.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(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.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};u.add(n)}})},v.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:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(v.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(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 O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.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 N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(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(u.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=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.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(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.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};u.update(n)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},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"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.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)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:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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,dialTimezone",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,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";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(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.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)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:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.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:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.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:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.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:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.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)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:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.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:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$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++)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:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.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:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.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 R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],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=16,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]):_.findLast(h.interaction.Messages,["secret",!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=[],a=_.some(h.messages.rows,["read",!0]);if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length&&!a;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.trim()))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&h.interaction.UserId!==h.user.id&&(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:{}},a=e(t),i=a.replace(/(?:\r\n|\r|\n)/g,"<br />");g.ckEditorInstance.insertHtml(i)}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||o.from))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||g.isDraft?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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+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+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,waitfortheassignedQueue:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getFaxAccountInteractions=g,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=v,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){v(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,waitForTheAssignedQueue,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="FAX.EDIT_FAXQUEUE",r.faxQueue=angular.copy(n),r.faxQueues=e,r.newFaxQueue=!1,r.faxQueue||(r.faxQueue={strategy:"beepall",timeout:10},r.title="FAX.NEW_FAXQUEUE",r.newFaxQueue=!0),r.addNewFaxQueue=function(){r.errors=[],i.faxQueue.save(r.faxQueue).$promise.then(function(e){r.faxQueues.unshift(e.toJSON()),a.success({title:"FaxQueue properly created",msg:r.faxQueue.name?r.faxQueue.name+" has been created!":""}),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.faxQueue.save"}];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.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveFaxQueue=function(){r.errors=[],i.faxQueue.update({id:r.faxQueue.id},r.faxQueue).$promise.then(function(e){var n=_.find(r.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"FaxQueue properly saved!",msg:r.faxQueue.name?r.faxQueue.name+" has been saved!":""}),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.faxQueue.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.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteFaxQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.faxQueue.delete({id:r.faxQueue.id}).$promise.then(function(){_.remove(r.faxQueues,{id:r.faxQueue.id}),a.success({title:"FaxQueue properly deleted!",msg:(r.faxQueue.name||"faxQueue")+" has been deleted!"}),l(r.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];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.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","faxQueues","faxQueue","api","Auth","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,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,a,i,n,s,o,r,l,d){var c=this,m=d&&1==d.count?d.rows[0].crudPermissions:null;function u(){c.faxAccounts.rows.forEach(function(n){var e=_.find(c.rpcFaxAccounts.rows,["id",n.id]);e&&_.merge(n,e);var t={id:n.id,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};i.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",i.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){o.error(e.data?e.data.message:e.toString())})})}function p(e){var n=_.find(c.faxAccounts.rows,["id",e.id]);n&&_.merge(n,e)}function g(e){c.faxAccounts.rows=e.rows,u()}c.currentUser=n.getCurrentUser(),c.faxAccounts=r,c.rpcFaxAccounts=l,c.crudPermissions=n.parseCrudPermissions(m),c.query={sort:"name",limit:10,page:1},c.success=g,c.$onInit=u,c.getFaxAccounts=function(){c.query.offset=(c.query.page-1)*c.query.limit,n.hasRole("admin")?c.promise=i.faxAccount.get(c.query,g).$promise:(c.query.id=c.currentUser.userProfileId,c.query.section="FaxAccounts",c.promise=i.userProfile.getResources(c.query,g).$promise)},c.goToFaxAccount=function(e,n){a.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},s.on("faxAccount:save",p),s.on("faxAccount:update",p),s.on("faxMessage:save",function(e){var n=_.find(c.faxAccounts.rows,["id",e.FaxAccountId]);n&&("in"==e.direction?(n.in+=1,n.lastIn=e.createdAt):(n.out+=1,n.lastOut=e.createdAt))});var v=!0,h=1;e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=h),c.getFaxAccounts())}),e.$on("$destroy",function(){s.removeAllListeners("faxAccount:save"),s.removeAllListeners("faxAccount:update"),s.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$state","api","Auth","socket","toasty","faxAccounts","rpcFaxAccounts","userProfileSection"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"name",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,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","realtimeManager","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.deleteDynamics365Account=function(e){v.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(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","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,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.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(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.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:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.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){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,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.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.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","cloudProviders","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,waitForTheAssignedQueue:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.lists=e.rows}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"mailAccount",action:"getDispositions",field:"name",params:{id:m.mailAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,p).$promise}function v(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0]),"Unknown"===e.contactName&&(e.contactName=i.instant("MAIL.UNKNOWN"))}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getMailAccountInteractions=g,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=v,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){v(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.originalProvider=f.mailAccount.provider,f.goToRealtime=function(){return d.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},f.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.goToMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},f.saveMailAccount=function(){var e=angular.copy(f.mailAccount);"custom"===e.provider?e.provider=null:(f.originalProvider!==e.provider&&(e.Imap.modernAuthentication?e.Imap.password=null:e.Imap.CloudProviderId=null),e.Smtp.user=e.Imap.user,e.Smtp.pass=e.Imap.password,e.Imap.modernAuthentication||(e.Imap.CloudProviderId=null),e.Smtp.modernAuthentication=e.Imap.modernAuthentication,e.Smtp.CloudProviderId=e.Imap.CloudProviderId,e.Imap=_.omit(e.Imap,["host","port","service"]),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));r.mailAccount.update({id:f.mailAccount.id},e).$promise.then(function(){f.originalProvider=e.provider,l.success({title:s.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.onProviderChange=function(){"custom"!==f.mailAccount.provider&&(f.mailAccount.authentication=!0);"outlook365"!==f.mailAccount.provider&&(f.mailAccount.Imap.modernAuthentication=!1)},e.all((h=[{key:"id",value:Number(f.mailAccount.ListId)}],r.getResourcesByRole(f.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},h).then(function(e){f.lists=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})),(v=[{key:"id",value:Number(f.mailAccount.mandatoryDispositionPauseId)}],r.getResourcesByRole(f.currentUser,"pause",{fields:"id,name",sort:"name",nolimit:"true"},v).then(function(e){f.pauses=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))}e.$inject=["$state","$mdDialog","$document","$translate","$q","license","setting","api","toasty","Auth","mailAccount","cloudProviders","userProfile","userProfileSection","msUtils"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u,p){var g=this;function v(e){g.mailAccounts=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.hasRole("admin")?g.promise=d.mailAccount.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="MailAccounts",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){if(e.service)return c.error({msg:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_SERVICE_DELETE")});d.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(g.mailAccounts.rows,{id:e.id}),g.mailAccounts.count-=1,g.mailAccounts.rows.length||h(),c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.mailAccounts=n||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedMailAccounts=[],g.query={fields:"createdAt,updatedAt,id,name,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,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="MAIL.EDIT_MAILQUEUE",r.mailQueue=angular.copy(n),r.mailQueues=e,r.newMailQueue=!1,r.mailQueue||(r.mailQueue={strategy:"beepall",timeout:10},r.title="MAIL.NEW_MAILQUEUE",r.newMailQueue=!0),r.addNewMailQueue=function(){r.errors=[],i.mailQueue.save(r.mailQueue).$promise.then(function(e){r.mailQueues.unshift(e.toJSON()),a.success({title:"MailQueue properly created",msg:r.mailQueue.name?r.mailQueue.name+" has been created!":""}),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.mailQueue.save"}];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.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveMailQueue=function(){r.errors=[],i.mailQueue.update({id:r.mailQueue.id},r.mailQueue).$promise.then(function(e){var n=_.find(r.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"MailQueue properly saved!",msg:r.mailQueue.name?r.mailQueue.name+" has been saved!":""}),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.mailQueue.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.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteMailQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.mailQueue.delete({id:r.mailQueue.id}).$promise.then(function(){_.remove(r.mailQueues,{id:r.mailQueue.id}),a.success({title:"MailQueue properly deleted!",msg:(r.mailQueue.name||"mailQueue")+" has been deleted!"}),l(r.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];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.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","mailQueues","mailQueue","api","Auth","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,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d){var c=this,m=d&&1==d.count?d.rows[0].crudPermissions:null;function u(){c.mailAccounts.rows.forEach(function(n){var e=_.find(c.rpcMailAccounts.rows,["id",n.id]);e&&_.merge(n,e);var t={id:n.id,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};i.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",i.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){o.error(e.data?e.data.message:e.toString())})})}function p(e){var n=_.find(c.mailAccounts.rows,["id",e.id]);n&&_.merge(n,e)}function g(e){c.mailAccounts.rows=e.rows,u()}function v(){c.query.offset=(c.query.page-1)*c.query.limit,n.hasRole("admin")?c.promise=i.mailAccount.get(c.query,g).$promise:(c.query.id=c.currentUser.userProfileId,c.query.section="MailAccounts",c.promise=i.userProfile.getResources(c.query,g).$promise)}c.currentUser=n.getCurrentUser(),c.mailAccounts=r,c.rpcMailAccounts=l,c.crudPermissions=n.parseCrudPermissions(m),c.query={sort:"name",limit:10,page:1},c.success=g,c.$onInit=u,c.getMailAccounts=v,c.goToMailAccount=function(e,n){a.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},c.verifySmtp=function(e,n){{if(n&&n.id)return i.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){o.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){o.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});o.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},s.on("mailAccount:save",p),s.on("mailAccount:update",p),s.on("mailMessage:save",function(e){var n=_.find(c.mailAccounts.rows,["id",e.MailAccountId]);n&&("in"==e.direction?(n.in+=1,n.lastIn=e.createdAt):(n.out+=1,n.lastOut=e.createdAt))});var h=!0,f=1;e.$watch("vm.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),v())}),e.$on("$destroy",function(){s.removeAllListeners("mailAccount:save"),s.removeAllListeners("mailAccount:update"),s.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$state","api","Auth","socket","toasty","mailAccounts","rpcMailAccounts","userProfileSection"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.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(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.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}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})})},v.deleteHopper=function(e){v.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:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.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){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.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(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.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()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.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,from:"IvrCampaign"}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,callAdditionalPhoneAfterMin:3,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.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,from:"QueueCampaign"}})},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)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),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,g.hopper.dialTimezone=g.contact.dialTimezone,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}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),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,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){u.campaigns.rows.forEach(function(e){u.rpcCampaigns[e.id]&&_.merge(e,_.pick(u.rpcCampaigns[e.id],p))})}u.currentUser=m.getCurrentUser(),u.campaigns=o||{rows:[],count:0},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:"name",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){var n=_.find(u.campaigns.rows,["id",e.id]);n&&(_.merge(n,_.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:u.campaigns.rows,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.campaigns=e||{count:0,rows:[]},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,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(){c.queues.rows.forEach(function(e){c.rpcQueues[e.id]&&_.merge(e,_.pick(c.rpcQueues[e.id],m))})}c.queues=a||{rows:[],count:0},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:"name",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"name",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){var n=_.find(c.queues.rows,["id",e.id]);n&&_.merge(n,_.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.queues=e||{count:0,rows:[]},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,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,waitForTheAssignedQueue:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getOpenchannelAccountInteractions=g,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=v,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){v(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,waitForTheAssignedQueue,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",r.openchannelQueue=angular.copy(n),r.openchannelQueues=e,r.newOpenchannelQueue=!1,r.openchannelQueue||(r.openchannelQueue={strategy:"beepall",timeout:10},r.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",r.newOpenchannelQueue=!0),r.addNewOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.save(r.openchannelQueue).$promise.then(function(e){r.openchannelQueues.unshift(e.toJSON()),a.success({title:"OpenchannelQueue properly created",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been created!":""}),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.openchannelQueue.save"}];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.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.update({id:r.openchannelQueue.id},r.openchannelQueue).$promise.then(function(e){var n=_.find(r.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"OpenchannelQueue properly saved!",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been saved!":""}),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.openchannelQueue.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.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteOpenchannelQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.openchannelQueue.delete({id:r.openchannelQueue.id}).$promise.then(function(){_.remove(r.openchannelQueues,{id:r.openchannelQueue.id}),a.success({title:"OpenchannelQueue properly deleted!",msg:(r.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),l(r.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];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.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","openchannelQueues","openchannelQueue","api","Auth","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,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=i.params.direction||"inbound",b=g&&1==g.count?g.rows[0].crudPermissions:null;function A(n){return h.query.offset=(h.query.page-1)*h.query.limit,e.resolve().then(function(){if(!0===n){var e=Object.assign({},_.omit(h.query,["limit","offset","page"]),{nolimit:!0});return o.realtime.getAgents(e).$promise}}).then(function(e){e&&(h.amiAgents=e)}).then(function(){var e=h.queues?h.queues.rows:[];h.agents=l.paginateAgents(h.amiAgents.rows,e,h.query)}).catch(function(e){c.error({title:s.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function E(e){return _.find(h.amiAgents.rows,["id",e])}function y(e){var n=E(e.id);n?(Object.assign(n,e),A()):r.isAdmin()&&A(!0)}function S(){A(!0)}function T(e){var n=E(e.id);n?(Object.assign(n,e),A()):r.isAdmin()&&A(!0)}function I(){A(!0)}function O(e){var n=E(e.id);n?(Object.assign(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),A()):r.isAdmin()&&A(!0)}function C(e){if("ATTENDED"!==e.transfer){var n=E(e.id);n?(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,A()):r.isAdmin()&&A(!0)}}function w(e){if(0!==h.query.globalQueueFilter.length){var n=e[_.capitalize(h.channel)+"QueueId"];if(h.query.globalQueueFilter.includes(n))_.find(h.queues.rows,function(e){return e.id===n}).Agents.push({id:e.UserId}),A()}}function R(n){if(0!==h.query.globalQueueFilter.length){var t=n[_.capitalize(h.channel)+"QueueId"];if(h.query.globalQueueFilter.includes(t)){var e=_.find(h.queues.rows,function(e){return e.id===t});_.remove(e.Agents,function(e){return e.id===n.UserId}),A()}}}function x(){h.queues&&D(!0)}function N(){h.queues&&D(!0)}function D(e){if(!(h.queues&&0<h.queues.count)||e){var n={type:f,fields:"id,name",sort:"name",nolimit:!0,include:[{model:"User",alias:"Agents",fields:["id","name"],raw:!0}]},t=h.channel+"Queue";return o.getResourcesByRole(h.currentUser,t,n,null).then(function(e){h.queues=e}).catch(function(e){c.error({title:s.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})}}h.currentUser=r.getCurrentUser(),h.channel=i.params.channel,h.amiAgents=m,h.pauses=p,h.license=u,h.crudPermissions=r.parseCrudPermissions(b),h.utcOffset=v,h.query={channel:h.channel,globalQueueFilter:[],globalStatusFilter:null,pauseTypeFilter:null,limit:10,page:1,sort:"fullname"},h.$onInit=function(){d.on("user:remove",I),d.on("user:save",S),d.on("user:update",T),d.on("user:agentconnect",O),d.on("user:agentcomplete",C),d.on("user:ami:update",y),d.on("user:routing:update",y),d.on("user"+_.capitalize(h.channel)+"Queue:save",w),d.on("user"+_.capitalize(h.channel)+"Queue:remove",R),d.on(h.channel+"Queue:save",x),d.on(h.channel+"Queue:remove",N),A()},h.getAgents=A,h.onPaginate=function(){A()},h.onSort=function(){A()},h.logout=function(e){return o.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){c.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.pause=function(e,n){return o.user.pause({id:e.id,type:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.unpause=function(e){return o.user.unpause({id:e.id}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:h.channel,direction:f,crudPermissions:h.crudPermissions}})},h.manageScreenRecording=function(e,n){return o.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:s.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.getQueuesByChannel=D,h.selectAllQueues=function(){h.query.globalQueueFilter=h.queues.rows.map(function(e){return e.id})},h.clearQueuesSelection=function(){h.query.globalQueueFilter=[]},n.$on("$destroy",function(){d.removeAllListeners("user:remove"),d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),d.removeAllListeners("user:ami:update"),d.removeAllListeners("user:routing:update"),d.removeAllListeners("user"+_.capitalize(h.channel)+"Queue:save"),d.removeAllListeners("user"+_.capitalize(h.channel)+"Queue:remove")})}e.$inject=["$document","$mdDialog","$q","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","agents","license","pauses","userProfileSection","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,a,n,i,s,t,o,r,l,d,c){var m=this,u=c&&1==c.count?c.rows[0].crudPermissions:null;function p(){return m.queues.rows.map(function(e){return e.name})}function g(n){if(n.type===m.voiceQueueType&&p().includes(n.queue)){var e=_.find(m.voiceQueuesChannels.rows,function(e){return e.uniqueid===n.uniqueid});e?Object.assign(e,n):(m.voiceQueuesChannels.rows.push(n),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length)}}function v(n){m.voiceQueuesChannels.rows=_.filter(m.voiceQueuesChannels.rows,function(e){return e.uniqueid!==n.uniqueid}),m.voiceQueuesChannels.count=m.voiceQueuesChannels.rows.length}m.currentUser=t.getCurrentUser(),m.queues=l,m.voiceQueuesChannels=d,m.voiceQueueType=n.params.direction,m.crudPermissions=t.parseCrudPermissions(u),m.query={limit:10,page:1},m.$onInit=function(){o.on("voice_queue_channel:save",g),o.on("voice_queue_channel:remove",v);var n=p(),e=m.voiceQueuesChannels.rows.filter(function(e){if(n.includes(e.queue))return!0});m.voiceQueuesChannels.rows=e,m.voiceQueuesChannels.count=e.length},m.hangup=function(e){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:e}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_HANGUP_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.getAvailableAgents=function(){m.availableAgents=null;var e={id:t.isUser()?m.currentUser.userProfileId:void 0,fields:"id,name,fullname,internal,context,online,voicePause,voiceStatus",sort:"fullname",online:!0,voicePause:!1};return s.realtime.getAgents(e).$promise.then(function(e){var n=e.rows.filter(function(e){return"idle"===e.voiceStatus});m.availableAgents=n}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToAgent=function(e,n,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:e,exten:n,context:t}).$promise.then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},m.redirectToNumber=function(e,n){var t=a.prompt().title(i.instant("VOICE.CALL_NUMBER_REDIRECT")).placeholder(i.instant("DASHBOARDS.NUMBER")).targetEvent(e).ok("Ok").cancel(i.instant("TOOLBAR.CANCEL"));return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){r.success({title:i.instant("VOICE.CALL_REDIRECT_SUCCESS"),msg:e.message||void 0})}).catch(function(e){e&&r.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},e.$on("$destroy",function(){o.removeAllListeners("voice_queue_channel:save"),o.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$mdDialog","$state","$translate","api","Auth","socket","toasty","queues","voiceQueuesChannels","userProfileSection"],angular.module("app.realtime").controller("QueueCallsRealtimeController",e)}(),function(){"use strict";function e(i,s,e,n,t,a,o,r,l,d,c,m,u){var p=this,g=e(function(){},999),v=u&&1==u.count?u.rows[0].crudPermissions:null,h=t.params.direction,f="outbound"===h?"QueueCampaigns":_.startCase(p.channel)+"Queues";function b(e){var n=_.find(p.queues.rows,["id",e.id]);n&&(n=l.updateQueue(e,n))}p.currentUser=r.getCurrentUser(),p.channel=t.params.channel,p.queues=m,p.crudPermissions=r.parseCrudPermissions(v),p.headersTemplate=null,p.rowsTemplate=null,p.query={id:r.isUser()?p.currentUser.id:void 0,section:r.isUser()?f:void 0,channel:p.channel,type:h,sort:"name",limit:10,page:1},p.$onInit=function(){var e,n;d.on(p.channel+"_queue:save",b),p.headersTemplate=(e="default.html","voice"===p.channel&&(e=h+".html"),"app/main/apps/realtime/views/queues/templates/headers/"+e),p.rowsTemplate=(n="default.html","voice"===p.channel&&(n=h+".html"),"app/main/apps/realtime/views/queues/templates/rows/"+n),"voice"===p.channel&&p.queues.rows.forEach(function(e){0<e.ringing&&e.available<e.loggedIn&&(e.available+=e.ringing)})},p.getQueues=function(){return p.query.offset=(p.query.page-1)*p.query.limit,o.realtime.getQueues(p.query).$promise.then(function(e){p.queues=e}).catch(function(e){c.error({title:a.instant("DASHBOARDS.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},p.editQueue=function(e,n){var t={crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:"CreateOrEdit"+_.startCase(p.channel)+"QueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.addOrRemoveAgents=function(e,n){var t={realtime:"voice"===p.channel,crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:_.startCase(p.channel)+"QueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.showPredictiveInfo=function(e,n){var t={controller:"PredictiveInfoDialogController",controllerAs:"vm",templateUrl:"app/main/apps/realtime/views/queues/predictive/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}};return s.show(t)},n.$on("$destroy",function(){d.removeAllListeners(p.channel+"_queue:save"),g&&e.cancel(g)})}e.$inject=["$document","$mdDialog","$interval","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","queues","userProfileSection"],angular.module("app.realtime").controller("QueuesRealtimeController",e)}(),function(){"use strict";function e(e,n){this.queueCampaign=n,this.formatTime=function(e,n){var t=moment(e);return n&&t.add(n,"minutes"),t.format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","queueCampaign"],angular.module("app.realtime").controller("PredictiveInfoDialogController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,waitForTheAssignedQueue:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getSmsAccountInteractions=g,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=v,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){v(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,waitForTheAssignedQueue,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(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="SMS.EDIT_SMSQUEUE",r.smsQueue=angular.copy(n),r.smsQueues=e,r.newSmsQueue=!1,r.smsQueue||(r.smsQueue={strategy:"beepall",timeout:10},r.title="SMS.NEW_SMSQUEUE",r.newSmsQueue=!0),r.addNewSmsQueue=function(){r.errors=[],i.smsQueue.save(r.smsQueue).$promise.then(function(e){r.smsQueues.unshift(e.toJSON()),a.success({title:"SmsQueue properly created",msg:r.smsQueue.name?r.smsQueue.name+" has been created!":""}),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.smsQueue.save"}];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.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveSmsQueue=function(){r.errors=[],i.smsQueue.update({id:r.smsQueue.id},r.smsQueue).$promise.then(function(e){var n=_.find(r.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"SmsQueue properly saved!",msg:r.smsQueue.name?r.smsQueue.name+" has been saved!":""}),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.smsQueue.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.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteSmsQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.smsQueue.delete({id:r.smsQueue.id}).$promise.then(function(){_.remove(r.smsQueues,{id:r.smsQueue.id}),a.success({title:"SmsQueue properly deleted!",msg:(r.smsQueue.name||"smsQueue")+" has been deleted!"}),l(r.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];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.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","smsQueues","smsQueue","api","Auth","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,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){f(e)})},g.success=v,g.getAgents=h,g.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};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),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.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},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];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.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.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.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];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.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.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:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.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:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.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:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.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","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];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.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.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.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];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.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],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){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.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:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.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:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.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","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.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"),"")}),g.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"),"")}),g.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"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.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");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.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){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.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("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcontactItemType"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcontactItemType",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,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_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,i,s,o){var r=this;r.customDashboard={};var l=[];function d(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.init=function(e,n){return r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:d},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:d},r.customDashboard.widgets=[],r.customDashboard.crudPermissions=r.crudPermissions,l.push(i(function(e){e(r.voiceQueues=o.rpc.getVoiceQueues({fields:"id,name"}))})),l.push(i(function(n){o.chatWebsite.get({fields:"id,name"}).$promise.then(function(e){r.chatWebsites=e||{count:0,rows:[]},n(r.chatWebsites)})})),l.push(i(function(n){o.faxAccount.get({fields:"id,name"}).$promise.then(function(e){r.faxAccounts=e||{count:0,rows:[]},n(r.faxAccounts)})})),l.push(i(function(n){o.mailAccount.get({fields:"id,name"}).$promise.then(function(e){r.mailAccounts=e||{count:0,rows:[]},n(r.mailAccounts)})})),l.push(i(function(n){o.openchannelAccount.get({fields:"id,name"}).$promise.then(function(e){r.openchannelAccounts=e||{count:0,rows:[]},n(r.openchannelAccounts)})})),l.push(i(function(n){o.whatsappAccount.get({fields:"id,name"}).$promise.then(function(e){r.whatsappAccounts=e||{count:0,rows:[]},n(r.whatsappAccounts)})})),l.push(i(function(n){o.smsAccount.get({fields:"id,name"}).$promise.then(function(e){r.smsAccounts=e||{count:0,rows:[]},n(r.smsAccounts)})})),i.all(l).then(function(){return o.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=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.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:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.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 o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.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){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];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:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",attrChannel:"voice",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId: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.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var 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"},n="get",t="disposition";l?(n="getDispositions",t=l.route):"user"===m.currentUser.role&&(n="getResources",t="userProfile",e.id=m.currentUser.userProfileId);(a=t,i=n,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",t,n].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},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,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-createdAt",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(){})},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,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(){})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===g.query.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(){}).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(){}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.OUTGOING_CALL_STATUS_STYLES,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","realtimeManager"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",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(){c.queues.rows.forEach(function(e){c.rpcQueues[e.id]&&_.merge(e,_.pick(c.rpcQueues[e.id],m))})}c.queues=a||{rows:[],count:0},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:"name",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"name",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){var n=_.find(c.queues.rows,["id",e.id]);n&&_.merge(n,_.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.queues=e||{count:0,rows:[]},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,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.telephones=a?a.rows:{},m.rpcTelephones=i?i.rows:{},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:"fullname",limit:10,page:1},m.statusClass=r.STATUS_STYLES,m.stateClass=r.STATES_STYLES,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?e.rows:{},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","realtimeManager","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:"name",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,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","realtimeManager","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="VOICE.EDIT_VOICEQUEUE",r.voiceQueue=angular.copy(n),r.voiceQueues=e,r.newVoiceQueue=!1,r.voiceQueue||(r.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"},r.title="VOICE.NEW_VOICEQUEUE",r.newVoiceQueue=!0),r.addNewVoiceQueue=function(){r.errors=[],i.voiceQueue.save(r.voiceQueue).$promise.then(function(e){r.voiceQueues.unshift(e.toJSON()),a.success({title:"VoiceQueue properly created",msg:r.voiceQueue.name?r.voiceQueue.name+" has been created!":""}),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.save"}];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.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveVoiceQueue=function(){r.errors=[],i.voiceQueue.update({id:r.voiceQueue.id},r.voiceQueue).$promise.then(function(e){var n=_.find(r.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"VoiceQueue properly saved!",msg:r.voiceQueue.name?r.voiceQueue.name+" has been saved!":""}),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.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.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteVoiceQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.voiceQueue.delete({id:r.voiceQueue.id}).$promise.then(function(){_.remove(r.voiceQueues,{id:r.voiceQueue.id}),a.success({title:"VoiceQueue properly deleted!",msg:(r.voiceQueue.name||"voiceQueue")+" has been deleted!"}),l(r.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];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.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","voiceQueues","voiceQueue","api","Auth","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,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,waitForTheAssignedQueue:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getWhatsappAccountInteractions=g,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=v,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){v(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,waitForTheAssignedQueue,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="WHATSAPP.EDIT_WHATSAPPQUEUE",r.whatsappQueue=angular.copy(n),r.whatsappQueues=e,r.newWhatsappQueue=!1,r.whatsappQueue||(r.whatsappQueue={strategy:"beepall",timeout:10},r.title="WHATSAPP.NEW_WHATSAPPQUEUE",r.newWhatsappQueue=!0),r.addNewWhatsappQueue=function(){r.errors=[],i.whatsappQueue.save(r.whatsappQueue).$promise.then(function(e){r.whatsappQueues.unshift(e.toJSON()),a.success({title:"WhatsappQueue properly created",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been created!":""}),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.whatsappQueue.save"}];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.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveWhatsappQueue=function(){r.errors=[],i.whatsappQueue.update({id:r.whatsappQueue.id},r.whatsappQueue).$promise.then(function(e){var n=_.find(r.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"WhatsappQueue properly saved!",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been saved!":""}),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.whatsappQueue.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.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteWhatsappQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.whatsappQueue.delete({id:r.whatsappQueue.id}).$promise.then(function(){_.remove(r.whatsappQueues,{id:r.whatsappQueue.id}),a.success({title:"WhatsappQueue properly deleted!",msg:(r.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),l(r.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];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.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","whatsappQueues","whatsappQueue","api","Auth","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,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,a,o,i,s,r,l,d,c,m,u){var p=this;function g(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function v(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function h(e,n){var t={user:_.pick(r.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),i.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!r.hasPermission(e)}})}function f(e){return _.map(e.children,function(e){return e.id})}s.clear(),p.isAgent=function(){return r.getCurrentUser()&&r.hasRole("agent")},o.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return r.hasRole("agent")}}),d.version.get().$promise.then(function(e){p.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){p.version="UNKNOWN"}).finally(function(){o.saveItem("version",{title:"VERSION "+p.version,group:!0,weight:2,hidden:function(){return r.hasRole("agent")}})}),r.isLoggedIn()&&(null===m.userSettings&&m.getUserSettingForUser(),l.gray&&s.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),d.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,o.saveItem("apps.dashboards.custom_"+n,g(n,e.rows[t]))}),d.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){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,o.saveItem("apps.plugins.plugin_"+n,v(n,t[a]));o.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(var s=0;s<i.length;s+=1)h(n=88888+i[s].id,i[s])}})),l.custom&&!c.defaultPageTitle&&c.pageTitle&&angular.element("#pageTitle").html(c.pageTitle),o.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(101)&&!r.hasRole("admin")}}),o.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||r.hasRole("user")||!r.hasPermission(201)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(202)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(203)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(204)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(205)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!l.cm||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(301)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(302)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(304)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(303)&&!r.hasRole("admin")}}),o.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(401)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(405)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(406)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(407)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(408)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(409)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(410)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(402)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(403)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(404)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(411)&&!r.hasRole("admin")}}),o.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!l.chat||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(501)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(502)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(510)&&!r.hasRole("admin")}}),o.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!l.mail||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(601)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(602)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(603)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(610)&&!r.hasRole("admin")}}),o.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!l.messaging||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(701)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(702)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(710)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!l.openchannel||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(801)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(802)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(810)&&!r.hasRole("admin")}}),o.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!l.fax||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(901)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(902)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(910)&&!r.hasRole("admin")}}),o.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1001)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1003)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1004)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1005)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1006)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1007)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1008)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1009)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1011)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1012)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.contact_item_types",{id:1013,title:"ContactItemType",route:"contactItemType",translate:"TOOLS.CONTACTITEMTYPE",state:"app.tools.contact_item_types",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1013)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1002)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1010)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1101)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1102)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1103)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1201)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1202)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1203)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1301)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1302)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1303)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1305)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1306)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1307)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1308)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1309)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1310)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1304)&&!r.hasRole("admin")}}),o.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")||r.hasRole("admin")&&!r.getCurrentUser().settingsEnabled}}),o.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!l.custom||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!l.update||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!l.dialer||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1501)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1502)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1510)&&!r.hasRole("admin")}}),o.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!c.viewHelpSection||r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!l.jscripty||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1701)&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1801)&&!r.hasRole("admin")}}),o.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!l.screenrecording||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(2001)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!l.whatsapp||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2101)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2102)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(2110)&&!r.hasRole("admin")}}),o.sort(),i.saveItem("apps",{title:"APPS",group:!0,weight:1}),i.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),i.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!r.hasPermission(101)}}),i.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!r.hasPermission(115)}}),i.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!l.cm||!r.hasPermission(102)}}),i.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!l.cm||!r.hasPermission(103)}}),i.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!l.dialer||!r.hasPermission(113)}}),i.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!l.voice||!r.hasPermission(110)}}),i.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!l.voice||!r.hasPermission(111)}}),i.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!l.voice||!r.hasPermission(104)}}),i.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!l.chat||!r.hasPermission(105)}}),i.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!l.mail||!r.hasPermission(106)}}),i.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!l.messaging||!r.hasPermission(107)}}),i.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!l.openchannel||!r.hasPermission(108)}}),i.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!l.fax||!r.hasPermission(109)}}),i.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!l.whatsapp||!r.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(s.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||s.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})}),n.$on("client-side-logging:enabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_ENABLED_MSG")})}),n.$on("client-side-logging:disabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_DISABLED_MSG")})}),a.onbeforeunload=function(){r.isTelephone()||u.flush()}}e.$inject=["$scope","$rootScope","$translate","$window","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","UserSettingService","ClientSideLoggingService"],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.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(n,e,t,a,i,s,o,r,l,d,c){var m=this;function u(){if(!m.hasMoreMessages||m.isLoading)return t.resolve();m.user.messages.length;return function(){m.isLoading=!0;var e={sort:"-createdAt",FromId:m.currentUser.id+","+m.user.id,ToId:m.currentUser.id+","+m.user.id,ChatGroupId:"null",limit:50,offset:m.user.messages.length};return r.chatInternalMessage.get(e).$promise.then(function(e){m.user.messages=m.user.messages.concat(e.rows),m.hasMoreMessages=e.count>m.user.messages.length;for(var n=0;n<m.user.messages.length;n+=1)!1===m.user.messages[n].read&&m.user.messages[n].ToId===m.currentUser.id&&r.chatInternalMessage.update({id:m.user.messages[n].id,read:!0})}).finally(function(){m.isLoading=!1})}()}function p(e){var n=angular.element("#chat-dialog");s(function(){n.animate({scrollTop:0},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return n.get(e).success(function(){c.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(){c.error({title:"PhoneBar API Error",msg:o.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}m.currentUser=l.getCurrentUser(),m.user=void 0,m.users={count:0,rows:[]},m.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),m.unreadMessages={},m.replyMessage="",m.disabled=!1,m.defaultAvatar="assets/images/avatars/profile.png",m.init=function(e){m.license=e,t.all([r.chatInternalMessage.get({fields:"FromId",ToId:m.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){m.unreadMessages=_.countBy(e.rows,"FromId")}).catch(function(e){throw e}),r.chatInternalMessage.getUsers().$promise.then(function(e){m.users=e}).catch(function(e){throw e})]).catch(function(e){c.error({msg:e.data?e.data.message:e.message||e})})},m.reply=function(){if(m.disabled=!0,""===m.replyMessage)return void(m.disabled=!1);var e={FromId:m.currentUser.id,ToId:m.user.id,body:m.replyMessage,read:!1};m.replyMessage="",r.chatInternalMessage.save(e).$promise.then(function(e){m.user.messages.unshift(e),m.user.lastMessageAt=e.createdAt,m.user.lastMessage=e}).finally(function(){p(400),m.disabled=!1})},m.webcall=function(e){a.$broadcast("webrtc::call",{target:g(e)})},m.call=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},m.transfer=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},m.beepPlayer=null,m.openChat=function(e){return m.user=angular.copy(e),m.isMessengerAllowed=!1,"agent"!==m.user.role||m.user.allowmessenger?(p(0),m.isMessengerAllowed=!0,m.hasMoreMessages=!0,u()):void c.warning({title:o.instant("QUICKPANEL.WARNING"),msg:o.instant("QUICKPANEL.MESSENGER_DISABLED")})},m.closeChat=function(){m.user=void 0,m.hasMoreMessages=!0},m.scrollToTopOfChat=p,d.on("chatInternalMessage:save",function(e){m.beepPlayer=document.getElementById("beep-player"),e.ToId===m.currentUser.id&&e.ToId!==e.FromId&&m.currentUser.messengerSoundNotification&&m.beepPlayer.play().catch(function(e){console.log(e.message)});if(e.ToId===m.currentUser.id&&!e.ChatGroupId){m.user&&m.user.id===e.FromId?(m.user.messages.unshift(e),p(0),r.chatInternalMessage.update({id:e.id,read:!0})):m.unreadMessages[e.FromId]=m.unreadMessages[e.FromId]?m.unreadMessages[e.FromId]+1:1;var n=_.find(m.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}}),d.on("chatInternalMessage:update",function(e){if((e.FromId===m.currentUser.id||e.ToId===m.currentUser.id)&&!e.ChatGroupId){if(m.user){var n=_.find(m.user.messages,{id:e.id});n&&_.merge(n,e)}var t=_.find(m.users.rows,{id:m.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===m.currentUser.id&&e.read&&0<m.unreadMessages[e.FromId]&&(m.unreadMessages[e.FromId]-=1)}}),d.on("user:update",function(e){var n=_.find(m.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))}),e("quick-panel").onClose(function(){m.user=void 0}),m.loadMoreMessages=u,m.timelineOptions={scrollEl:"#chat-dialog"},i.$on("$destroy",function(){d.removeAllListeners("chatInternalMessage:save"),d.removeAllListeners("chatInternalMessage:update"),d.removeAllListeners("user:update")})}e.$inject=["$http","$mdSidenav","$q","$rootScope","$scope","$timeout","$translate","api","Auth","socket","toasty"],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(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){u()}function u(){s.user.get({id:c.user.id}).$promise.then(function(e){c.user.permissions=e.permissions,c.items=[{font_icon:"icon-hangouts",class:"green-700-fg",label:"chat",title:"TOOLBAR.CHAT",value:"chat",permission:r.chat&&(p(105)||e.chatAutoanswer),enabled:e.chatAutoanswer,delay:e.chatAutoanswerDelay},{font_icon:"icon-email",class:"teal-fg",label:"email",title:"TOOLBAR.EMAIL",value:"email",permission:r.mail&&(p(106)||e.emailAutoanswer),enabled:e.emailAutoanswer,delay:e.emailAutoanswerDelay},{font_icon:"icon-message-text",class:"orange-fg",label:"sms",title:"TOOLBAR.SMS",value:"sms",permission:r.messaging&&(p(107)||e.smsAutoanswer),enabled:e.smsAutoanswer,delay:e.smsAutoanswerDelay},{font_icon:"icon-google-earth",class:"amber-fg",label:"openchannel",title:"TOOLBAR.OPENCHANNEL",value:"openchannel",permission:r.openchannel&&(p(108)||e.openchannelAutoanswer),enabled:e.openchannelAutoanswer,delay:e.openchannelAutoanswerDelay},{font_icon:"icon-deskphone",class:"grey-A200-fg",label:"fax",title:"TOOLBAR.FAX",value:"fax",permission:r.fax&&(p(109)||e.faxAutoanswer),enabled:e.faxAutoanswer,delay:e.faxAutoanswerDelay},{font_icon:"icon-whatsapp",class:"lime-A700-fg",label:"whatsapp",title:"TOOLBAR.WHATSAPP",value:"whatsapp",permission:r.whatsapp&&(p(114)||e.whatsappAutoanswer),enabled:e.whatsappAutoanswer,delay:e.whatsappAutoanswerDelay}]})}function p(e){return _.includes(c.user.permissions,e)}c.items=[],c.closeDialog=function(){a.hide()},c.user=d.getCurrentUser(),u(),o.connect(),o.on("userNotification:recalc:"+c.user.id,m)}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","socket","license","user","Auth"],angular.module("app.toolbar").controller("AutoAnswerNotificationsDialogController",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,t,a,i,n,s,o){var r=this;function l(e,n){var t={id:e.id};n?t.recallmeNotifiedDate=null:r.isRecallNotification?t.recallmeNotifiedDate=null:e.recallme||(t.UserId=null),i.cmHopper.update(t)}function d(e){var n=!1;_.isNil(e)||(n=e),l(r.preview,n),t.hide()}function c(e){return i.cmContact.getAdditionalPhones({id:e}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");r.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");r.additionalItems=[];for(var s=0;s<n.length;s++)r.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})})}r.customFieldsMap=s&&s.rows?_.mapValues(_.keyBy(s.rows,function(e){return"cf_"+e.id}),"name"):{},r.errors=[],r.hopperIds=[],r.additionalItems=[],r.preview=n,r.isRecallNotification=o,r.originated=!1,r.disable=!1,r.disableGetContact=!1,r.hopperIds.push(r.preview.id),r.originatePreview=function(){r.originated=!0,r.disable=!0,_.isEmpty(r.preview)?(a.error({title:"Message",msg:"Contact not available"}),r.disable=!1,r.hopperIds=[],d(!0)):i.rpc.getVoiceQueuesPreview({id:r.preview.id}).$promise.then(function(){d(!0)}).catch(function(e){a.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){r.disable=!1,r.hopperIds=[]})},r.closeDialog=d,r.nextContact=function(){return r.disableGetContact=!0,i.cmHopper.getPreview({hopperIds:r.hopperIds,direction:"next"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(r.disableGetContact=!1,r.hopperIds=[],404===e.status)r.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){t.hide();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 t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.previousContact=function(){if(r.disableGetContact=!0,1<r.hopperIds.length){var e=_.without(r.hopperIds,r.preview.id);return i.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),_.remove(r.hopperIds,function(e){return e==r.preview.id}),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e)}).catch(function(e){if(404===e.status)r.hopperIds=[r.preview.id],a.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){r.hopperIds=[],t.hide();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 r.hopperIds=[],t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},r.getFirstAvailableContact=function(){return r.disableGetContact=!0,a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),i.cmHopper.getPreview({hopperIds:[r.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(t.hide(),404===e.status)a.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)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 preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){r.disableGetContact=!1})},r.isCustomField=function(e){return _.startsWith(e,"cf_")},r.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","dialTimezone","utcOffset","AdditionalPhones","additionalPhones","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},r.isNil=function(e){return _.isNil(e)},_.isNil(r.preview)||c(r.preview.Contact.id),e.$on("$destroy",function(){r.originated||l(r.preview,!1)})}e.$inject=["$scope","$mdDialog","toasty","api","preview","customFields","isRecallNotification"],angular.module("app.toolbar").controller("PreviewDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),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,S){var T,I=this;I.voiceQueues=[],I.polling=!0,t.global={search:""},I.pauses=[],I.license=b,I.currentUser=v.getCurrentUser(),I.unreadTotalMessages=0,I.unreadTotalGroupMessages=0,I.contacts=0,"agent"===I.currentUser.role&&(T=E(function(){_.some(I.voiceQueues,{dialMethod:"preview",dialActive:!0})&&I.license.dialer&&I.polling?(I.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(I.contacts=e.contacts)}).finally(function(){I.polling=!0})):I.contacts=0},14999)),I.setting=A,I.bodyEl=angular.element("body"),I.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:I.license.webrtc,phoneBarExpires:I.currentUser.phoneBarExpires,phoneBarPrefixRequired:I.currentUser.phoneBarPrefixRequired,wssPort:I.currentUser.wssPort},I.webRTCSessions=[],I.autoanswerIconColor="green-700-fg",I.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"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},bs:{title:"Bosnian",translation:"TOOLBAR.BOSNIAN",code:"bs",flag:"bs"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},et:{title:"Estonian",translation:"TOOLBAR.ESTONIAN",code:"et",flag:"et"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(n){n.queuecallerleaveAt?I.waitingQueueCalls=_.filter(I.waitingQueueCalls,function(e){return e!==n.uniqueid}):I.waitingQueueCalls.push(n.uniqueid)}function R(e){w(e)}function x(e){"inbound"===e.type&&w(e)}function N(){h.connect(),h.on("user:update",H),h.on("user:called",V),h.on("chatInternalMessage:save",F),h.on("chatInternalMessage:update",$),h.on("userVoiceQueue:save",k),h.on("voiceQueue:save",L),h.on("userVoiceQueue:remove",k),h.on("voiceQueue:remove",L),h.on("voiceQueue:update",L),h.on("user:forcelogout",B),h.on("userNotification:send",Q),h.on("userNotification:recalc:"+I.user.id,j),h.onWithoutApply("voice_queue_channel:save",x),h.onWithoutApply("voice_queue_channel:remove",R)}function D(){h.disconnect("logout")}function P(){var e={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0};return f.user.getQueues(e).$promise.then(function(e){I.voiceQueues=e.rows})}function L(){P()}function k(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&P()}function M(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function U(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function F(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1),e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++}function $(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1),e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--}function q(e){return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function G(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:I.user,setting:A,reset:n}})}function H(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;D();var t=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(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){N(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),q(!0)})}else q(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)}function V(e){if(I.isWebRTCBarRegistered&&2===I.currentUser.showWebBar&&"agent"===I.currentUser.role){var n=I.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.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}}function B(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return D(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return 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){C.error(e)})}function Q(e){var n=e;if(I.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})}}function W(){I.autoanswerIconColor=U()?"green-700-fg":"gray-700-fg"}function j(e){e&&e.permissions&&(I.currentUser.permissions=e.permissions,W())}I.toggleSidenav=function(e){i(e).toggle()},I.logout=q,I.changeLanguage=function(e){if(!I.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"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.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"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.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},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=G,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.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()})})},I.unpause=function(){return f.user.unpause({id:I.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()})})},I.preview=function(n){return I.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"}):M(e,!1,n)}).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){I.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(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){U()?c.show({controller:"AutoAnswerNotificationsDialogController",controllerAs:"vm",templateUrl:"app/toolbar/autoanswers/dialog.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:I.license,user:I.currentUser}}):alert(r.instant("TOOLBAR.NO_AUTOANSWER_CONFIGURED"))},I.getLogo=function(){return I.setting.defaultHeaderWhiteLabel?"xCALLY Motion":I.setting.headerWhiteLabel},I.userIsNotPhonebar=function(){return"admin"===I.currentUser.role||"user"===I.currentUser.role||"agent"===I.currentUser.role&&0!==I.currentUser.showWebBar},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},I.waitingQueueCalls=[],function(){I.user=v.getCurrentUser(),P().then(function(){return f.rpc.getVoiceQueuesChannels().$promise}).then(function(e){e.rows.forEach(function(n){if("inbound"===n.type&&!n.queuecallerleaveAt){var e=_.find(I.voiceQueues,function(e){return e.name===n.queue});e&&I.waitingQueueCalls.push(n.uniqueid)}})}),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.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()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?G(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 G(null,!0);W()}(),N(),I.openPreviewDialog=M,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.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"),h.removeAllListeners("userNotification:recalc:"+I.user.id),T&&(E.cancel(T),T=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","ClientSideLoggingService"],angular.module("app.toolbar").controller("ToolbarController",e)}(),function(){"use strict";function e(a,i,t,s,e){var n={updateUserSettingById:function(e,n){if("number"==typeof e)return i.userSetting.update({id:e},n).$promise;throw new Error("User setting id is missing")}},o=!1,r=a.getCurrentUser(),l=r?r.userSetting:null,d=function(e){var n="user-setting:update:user-"+e;t.$on("local:user-updated",c),s.on(n,c)};function c(){return o?e(function(e){e(l)}):(o=!0,function(e){var n=a.getCurrentUser(),t=null;t="admin"===n.role&&"number"==typeof e?i.user.get({id:e,userSetting:!0}).$promise:i.user.whoami({userSetting:!0}).$promise;return t.then(function(e){return a.setCurrentUser(e),e.userSetting})}().then(function(e){l=e,t.$emit("local:user-setting-updated",l)}).finally(function(){o=!1}))}return r&&d(r.id),t.$on("local:user-login",d),t.$on("local:user-logout",function(e){var n="user-setting:update:user-"+e;s.removeListener(n,c),l=null}),n}e.$inject=["Auth","api","$rootScope","socket","$q"],angular.module("app.user-setting").service("UserSettingService",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=""!==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=["","","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","dialTimezone","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-client-side-logging/ms-client-side-logging-icon.html",'<md-icon ng-style="vm.styleColor" md-font-icon="{{ vm.styleIcon }}">\n  <md-tooltip class="client-side-logging-tooltip">\n    <span ng-bind-html="vm.tooltipHTML"></span>\n  </md-tooltip>\n</md-icon>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging.html",'<md-content layout="column">\n  <form name="clientSideLoggingSettingsForm">\n    <div flex layout="column" layout-align="stretch center">\n      <div ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-amber-500-bg p-10" layout="row" layout-align="start center">\n        <span class="no-margin font-size-14 line-height-30" translate="STAFF.CLIENT_LOGS_ALL_ENABLED_WARNING" flex></span>\n      </div>\n      <md-input-container>\n        <md-switch ng-model="vm.user.userSetting.clientSideLoggingEnabled" aria-label="Manage client side logging" ng-change="vm.onEnabledSwitchChange()">\n          {{ vm.user.userSetting.clientSideLoggingEnabled ? \'STAFF.CLIENT_LOGS_ENABLED\' : \'STAFF.CLIENT_LOGS_DISABLED\' | translate }}\n        </md-switch>\n      </md-input-container>\n      <h2 ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-subhead mt-0">{{ vm.clientSideLoggingEnabledSince }}</h2>\n    </div>\n    <div layout="column" layout-align="stretch center">\n      <md-input-container ng-if="vm.user.userSetting.clientSideLoggingEnabled">\n        <label>{{ \'STAFF.CLIENT_LOGS_LOGLEVEL_SELECT\' | translate }}</label>\n        <md-select ng-if="vm.user.userSetting.clientSideLoggingEnabled" ng-model="vm.user.userSetting.clientSideLoggingLevel" placeholder="Debugging level" ng-change="vm.onLogLevelSelectionChange()" flex="30">\n          <md-option ng-value="loggingLevel" ng-repeat="loggingLevel in vm.availableClientSideLoggingLevels">\n            <md-icon ng-style="vm.computeStyleForLoggingLevel(loggingLevel)" md-font-icon="{{ loggingLevel === \'info\' ? \'icon-checkbox-blank-circle-outline\' : \'icon-checkbox-blank-circle\' }}"></md-icon>\n            {{ loggingLevel }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </div>\n  </form>\n</md-content>'),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">\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled"></angucomplete-alt>\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding">\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-switch ng-model="vm.messengerSoundNotification" aria-label="EnableMessengerSoundNotification">\n                <span translate="TOOLBAR.MESSENGERSOUNDNOTIFICATION">MessengerSoundNotification</span>\n              </md-switch>              \n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpen)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpen = true" md-on-close="isOpen = 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(true)" 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">\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" 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" >\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" ng-change="ngChange()">\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-2" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 2)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' +  vm.label | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview && !vm.config.crudPermissions.readOnly" 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 ng-if="vm.config.crudPermissions.canEdit === true">\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 ng-if="vm.config.crudPermissions.canDelete === true">\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 style="height: 60px !important; min-height: 60px !important" 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="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="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" 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="md-hue-2" 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" 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" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" 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" 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" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" 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" 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" 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="md-hue-2" 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" 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" 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">\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled || vm.adSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.startTime">\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.endTime">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" 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>\n      <div class="error-list">\n        <div ng-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tvox/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.chatWebsite.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textButtonColor" label="{{\'CHAT.TEXT_BUTTON_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              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error" ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                      must have a maximum length equal to 6</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" 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" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_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-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n        <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      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</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">{{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          <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 && additionalPhonesForm.$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                  </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">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\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="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\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\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.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\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/import/importUpdates.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.UPDATE_EXISTING_CONTACTS">Update Existing 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 class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" 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  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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 layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                    <div ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\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.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\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                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\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>\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" ng-change="vm.recalcTZTime()" 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" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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">\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>\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\',false)" 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\',false)">\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\',false)">\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="agent-general-home-navbar md-primary-bg width-50">\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 class="agent-general-home-sections" layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto; overflow-x: hidden" flex>\n      <div ng-switch-when="agentPresence" class="home-agent-presence">\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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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 class="home-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" ng-mouseleave="vm.resetTooltipPosition($event)" ng-mouseenter="vm.adjustTooltipPosition($event)">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview"><span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span></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-120 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                  {{ \'VOICE.\' + (agent.status | uppercase) | translate | 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\' && agent.status !== \'unavailable\'" 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\' && agent.status !== \'unavailable\'" 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 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-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>\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 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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.faxAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\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" 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" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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!-- ACCOUNTS 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.count > 0">\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="account" md-select-id="id" ng-repeat="account in vm.faxAccounts.rows">\n        <td md-cell>{{account.name}}</td>\n        <td md-cell>{{account.key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(account.in || 0) + (account.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">{{account.in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{account.lastIn ?  (account.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">{{account.out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{account.lastOut ?  (account.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, account)" 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.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / ACCOUNTS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n          <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n        </md-switch>\n        \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n      </md-input-container>\n\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\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\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" ng-required="true">\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\n      </div>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n            <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders">{{provider.name}}</md-option>\n          </md-select>\n        </md-input-container>\n      </div>\n\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        <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 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">\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="modernAuthentication">{{ \'INTEGRATIONS.MODERN_AUTHENTICATION\' | 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="modernAuthentication ">\n                  <md-icon md-colors="{color: {{dynamics365Account.modernAuthentication ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{dynamics365Account.modernAuthentication ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n                  <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n                </md-switch>\n                \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n                  <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n                    <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders.rows">{{provider.name}}</md-option>\n                  </md-select>\n                </md-input-container>\n              </div>\n\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                <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\n              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\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" ng-required="vm.dynamics365Account.modernAuthentication == false">\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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_REQUIRED">Type field is required</span>\n                              </div>\n                            </div>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <md-switch ng-model="vm_cc.dynamics365Configuration.openNewTab">\n                              <span translate="INTEGRATIONS.OPENNEWTAB">Open new tab</span>\n                            </md-switch>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT">Additional search contact</label>\n                            <input type="" name="additionalSearchContact" ng-model="vm_cc.dynamics365Configuration.additionalSearchContact" autofocus>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n          </div>\n\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\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 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">\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n            <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.IMAP_PORT">IMAP Port</label>\n            <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.SMTP_HOST">SMTP Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.SMTP_PORT">SMTP Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAIL ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.goToMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.goToRealtime()" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.addAgent(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (credentialsForm.$invalid) || (templateForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.mailAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</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" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="credentialsForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container template md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="templateForm[\'fontFamily\'].$error" ng-show="templateForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" 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" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="provider">{{ \'MAIL.SERVICE\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td md-cell class="active">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td md-cell class="description ">{{mailAccount.description}}</td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email Account\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- ACCOUNTS 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.count > 0">\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="account" md-select-id="id" ng-repeat="account in vm.mailAccounts.rows">\n        <td md-cell>{{account.name}}</td>\n        <td md-cell>{{account.key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(account.in || 0) + (account.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">{{account.in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{account.lastIn ?  (account.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">{{account.out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{account.lastOut ?  (account.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>{{account.Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="account.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.\' + account.Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="account.active && (account.Imap.lastSync && account.Imap.lastSync != \'\')">{{account.Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="account.Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{account.Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ account.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.\' + account.Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{account.Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!account.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, account)" 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, account)" 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.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / ACCOUNTS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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/hopperdate/hopperdate.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" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\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" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\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\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\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\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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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.dateTime" ng-change="vm.recalcTZTime()">\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.dateTime" ng-change="vm.recalcTZTime()">\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      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\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) || (additionalphonesForm.$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          <div class="queueCampaign-detail-form-container additionalphones 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.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header 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">\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column md-order-by="name" class="bl">{{\'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.rows.length > 0">\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="campaign in vm.campaigns.rows">\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.campaigns.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_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 md-order-by="name">{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.rows.length > 0">\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="queue in vm.queues.rows">\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.queues.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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.openchannelAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n\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" 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" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools quick-filter-container">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = null; vm.getAgents()" aria-label="Status filter">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="DEFAULT PAUSE">{{ \'VOICE.DEFAULT_PAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">{{ \'STAFF.LOGININPAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="Auto-Pause">{{ \'VOICE.AUTOPAUSE\' | translate | uppercase }}</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n    <md-select ng-model="vm.query.globalQueueFilter" multiple class="md-caption margin-left-10 mw-150" placeholder="{{ \'DASHBOARDS.SELECT_QUEUE\' | translate }}" md-on-open="vm.getQueuesByChannel()" md-on-close="vm.getAgents()">\n      <md-button ng-click="vm.selectAllQueues()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearQueuesSelection()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.getAgents">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.onSort">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            <span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">{{ 'VOICE.PAUSE' | translate | uppercase }} (</span>{{\n              ['pause', '*pause'].includes(agent.globalStatus) ? \n                ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n                ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase) }}<span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">)</span>\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\" start-time=\"agent.lastPauseAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" utc-offset=\"vm.utcOffset\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\" aria-label=\"Screen Recording\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.count}}\" md-on-paginate=\"vm.onPaginate\" md-page-select></md-table-pagination>"),e.put("app/main/apps/realtime/views/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 ng-if="vm.voiceQueueType === \'inbound\'" 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.voiceQueuesChannels.count > 0">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="channel in vm.voiceQueuesChannels.rows | limitObjectFromTo: vm.query.limit:(vm.query.page - 1) * vm.query.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 ng-if="vm.voiceQueueType === \'inbound\'" md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span ng-if="vm.voiceQueueType === \'inbound\'">{{channel.calleridname}}, </span>\n          <span>{{channel.calleridnum}}</span>\n        </td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>{{ \'VOICE.NO_AGENT_AVAILABLE\' | translate }}</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.query.limit" md-page="vm.query.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{ vm.voiceQueuesChannels.count }}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/realtime/views/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 }} {{ \'DASHBOARDS.INFO\' | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-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">\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.formatTime(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.formatTime(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.formatTime(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.formatTime(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  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/realtime/views/queues/templates/actions.html",'<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="3">\n    <md-menu-item>\n      <md-button ng-click="vm.editQueue($event, queue)" translate="{{ (vm.channel | uppercase) + \'.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.showPredictiveInfo($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.addOrRemoveAgents($event, queue)" translate="{{ (vm.channel | uppercase) + \'.AGENTSADD_QUEUE\' }}">\n        Add Agents to queue\n      </md-button>\n    </md-menu-item>\n  </md-menu-content>\n</md-menu>'),e.put("app/main/apps/realtime/views/queues/templates/headers/default.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ (vm.channel | uppercase) + '.NAME' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.PAUSED' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_INTERACTIONS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/inbound.html","<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>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/outbound.html","<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>{{ 'DASHBOARDS.WAITING_CALLS' | 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>"),e.put("app/main/apps/realtime/views/queues/templates/rows/default.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="6">\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 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\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/inbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="8">\n    <div layout="row" layout-align="center center">\n      <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row 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.inUse - queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/outbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="13">\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.inUse - queue.talking - queue.pTalking }}</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) : (queue.statusMessage ? (\'MOTIONDIALER.\' + queue.statusMessage | 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\n  <td md-cell class=\"actions\" ng-if=\"vm.crudPermissions.canEdit\" ng-include=\"'app/main/apps/realtime/views/queues/templates/actions.html'\"></td>\n</tr>"),e.put("app/main/apps/realtime/views/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="{{ (vm.channel | uppercase) + \'.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" ng-include="vm.headersTemplate">\n    </thead>\n    <tbody md-body ng-include="vm.rowsTemplate"></tbody>\n  </table>\n</md-table-container>\n\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.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header 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">\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service">{{ vm.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (vm.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</label>\n          <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</label>\n          <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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">\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval 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="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container filters 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.FILTERS">FILTERS</div>\n        </div>\n        <form name="filtersForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.filterFullName" aria-label="fullName"><span translate="SETTINGS.FILTER_FULLNAME">Full Name</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.FILTER_FULLNAME"></span></div>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\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="1200" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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="1200"><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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable">\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n              <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\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">\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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.smsAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue 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" 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" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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  \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-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    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 md-accent-bg" layout="row" layout-align="start center">\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    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.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="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      <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    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="agent"></ms-client-side-logging-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="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="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item>\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\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(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n                      </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: \'{{\'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      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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.setting.filterFullName" 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        <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 ng-if="vm.setting.filterFullName" class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-pattern="/^[A-Za-z0-9\\ \\_\\-]+$/i" ng-required="true" autofocus>\n        <div class="hint"><span translate="STAFF.HELP.FILTERFULLNAME"></span></div>\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 ng-message="pattern">\n            <span translate="STAFF.ERRORS.FULLNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\ \\_\\-]+$/i\' }">Fullname must be valid pattern</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      <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      <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 class="md-block" ng-if="vm.agent.userSetting">\n        <ms-client-side-logging user="vm.agent"></ms-client-side-logging>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\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    <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    <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) || (autoAnswerForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <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                <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                <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                <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                <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                <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                <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            </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                <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                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n            </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              <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                <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                <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                <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                    <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          </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                <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                <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 ng-if="!vm.setting.filterFullName" class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input ng-readonly="vm.setting.filterFullName" type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\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\n              <md-input-container ng-if="vm.setting.filterFullName" class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-pattern="/^[A-Za-z0-9\\ \\_\\-\\<\\>\\x22]+$/i" ng-disabled="!vm.crudPermissions.canEdit">\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 ng-message="pattern">\n                    <span translate="STAFF.ERRORS.CALLERID_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\ \\_\\-\\<\\>\\x22]+$/i\' }">CallerId must be valid pattern</span>\n                  </div>\n                </div>\n               \n              </md-input-container>\n\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                <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                <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            </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                <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                <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                <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                <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                <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                <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            </form>\n          </div>\n          <div class="agent-detail-form-container auto_answer 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.AUTO_ANSWER">AUTO_ANSWER</div>\n            </div>\n            <form name="autoAnswerForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <md-switch ng-model="vm.agent.chatAutoanswer" aria-label="chatAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.CHAT_AUTOANSWER">ChatAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.chatAutoanswer" class="md-block">\n                  <label translate="STAFF.CHAT_AUTOANSWERDELAY">ChatAutoAnswerDelay</label>\n                  <input type="number" name="chatAutoAnswerDelay" ng-model="vm.agent.chatAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <md-switch ng-model="vm.agent.emailAutoanswer" aria-label="emailAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.EMAIL_AUTOANSWER">EmailAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.emailAutoanswer" class="md-block">\n                  <label translate="STAFF.EMAIL_AUTOANSWERDELAY">EmailAutoAnswerDelay</label>\n                  <input type="number" name="emailAutoAnswerDelay" ng-model="vm.agent.emailAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <md-switch ng-model="vm.agent.smsAutoanswer" aria-label="smsAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.SMS_AUTOANSWER">SmsAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.smsAutoanswer" class="md-block">\n                  <label translate="STAFF.SMS_AUTOANSWERDELAY">SmsAutoAnswerDelay</label>\n                  <input type="number" name="smsAutoAnswerDelay" ng-model="vm.agent.smsAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <md-switch ng-model="vm.agent.openchannelAutoanswer" aria-label="openchannelAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.OPENCHANNEL_AUTOANSWER">openchannelAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.openchannelAutoanswer" class="md-block">\n                  <label translate="STAFF.OPENCHANNEL_AUTOANSWERDELAY">openchannelAutoAnswerDelay</label>\n                  <input type="number" name="openchannelAutoAnswerDelay" ng-model="vm.agent.openchannelAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <md-switch ng-model="vm.agent.faxAutoanswer" aria-label="faxAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.FAX_AUTOANSWER">faxAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.faxAutoanswer" class="md-block">\n                  <label translate="STAFF.FAX_AUTOANSWERDELAY">faxAutoAnswerDelay</label>\n                  <input type="number" name="faxAutoAnswerDelay" ng-model="vm.agent.faxAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <md-switch ng-model="vm.agent.whatsappAutoanswer" aria-label="whatsappAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.WHATSAPP_AUTOANSWER">whatsappAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.whatsappAutoanswer" class="md-block">\n                  <label translate="STAFF.WHATSAPP_AUTOANSWERDELAY">whatsappAutoAnswerDelay</label>\n                  <input type="number" name="whatsappAutoAnswerDelay" ng-model="vm.agent.whatsappAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\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                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <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            </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                <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                <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            </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                <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            </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                <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                <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                <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                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <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            </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.messengerSoundNotification" aria-label="EnableMessengerSoundNotification" \n                ng-if="vm.agent.allowmessenger">\n                  <span translate="STAFF.MESSENGERSOUNDNOTIFICATION">MessengerSoundNotification</span></md-switch>\n            </md-input-container>\n            <md-input-container class="md-block">                \n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n            </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            </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              \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      <md-divider></md-divider>\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              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container client_logs 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.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.agent" on-user-update="vm.refreshAgent()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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      <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      <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      <md-input-container class="md-block" ng-if="vm.user.userSetting">\n        <ms-client-side-logging user="vm.user"></ms-client-side-logging>\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" 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-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      <div layout="row" layout-align="start center">\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\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    <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    <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  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="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                <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                <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                <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                <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                <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                <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            </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                <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                <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            </form>\n          </div>\n          <div class="user-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n              <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                <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                <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                <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                    <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          </div>\n          <div class="user-detail-form-container internal-chat 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.INTERNAL_MESSENGER">INTERNAL_MESSENGER</div>\n            </div>\n            <form name="internalChatForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.messengerSoundNotification" \n                aria-label="messengerSoundNotification" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.MESSENGERSOUNDNOTIFICATION">MESSENGERSOUNDNOTIFICATION</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MESSENGERSOUNDNOTIFICATION"></span></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="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                <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                <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                <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.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            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container client_logs 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.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.user" on-user-update="vm.refreshUser()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" 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-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    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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 md-accent-bg" layout="row" layout-align="start center">\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    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.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="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      <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    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\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>{{ \'STAFF.CLIENT_LOGS\' | 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"><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                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditAgent($event, user)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="user"></ms-client-side-logging-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="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="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n                      </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: \'{{\'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      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/contact_item_types/contact_item_types.html",'<div id="contact_item_types" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="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.CONTACTITEMTYPE">ContactItemType</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\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.selectedContactItemType.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContactItemType =[]">\n      <md-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-contact_item_types-count">\n          <span>{{vm.selectedContactItemType.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.selectAllContactItemType()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContactItemType()" 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.exportSelectedContactItemType" csv-label="true" filename="contact_item_types.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContactItemType($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!-- CONTACTITEMTYPE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContactItemType" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContactItemType">\n              <tr md-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="OrderBy">{{ \'TOOLS.ORDER_BY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contact_item_types.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="contactItemType" md-select-id="id" ng-repeat="contactItemType in vm.contact_item_types.rows">\n                <td md-cell ng-if="contactItemType.userpic"><img class="avatar" alt="{{contactItemType.name}}" ng-src="api/users/{{contactItemType.id}}/avatar" /></td>\n                <td md-cell ng-if="!contactItemType.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{contactItemType.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="id ">{{contactItemType.id}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="name ">{{contactItemType.name}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="OrderBy ">{{contactItemType.OrderBy}}</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(contactItemType, $event    )" translate="TOOLS.EDIT_CONTACTITEMTYPE">\n                          Edit ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(contactItemType, $event    )" translate="TOOLS.DELETE_CONTACTITEMTYPE">\n                          Delete ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </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.contact_item_types.count}}" md-on-paginate="vm.getContactItemType" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTACTITEMTYPE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTACTITEMTYPE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-contactItemType-button" ng-click="vm.createOrEditContactItemType($event)" aria-label="add contactItemType" translate translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTACTITEMTYPE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/contact_item_types/create/dialog.html",'<md-dialog class="contactItemType-dialog" aria-label="New ContactItemType">\n  <form name="contactItemTypeForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.contactItemType.name" ng-required="true" autofocus>\n\n        <div ng-messages="contactItemTypeForm[\'name\'].$error" ng-show="contactItemTypeForm[\'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.ORDER_BY">Order_by</label>\n        <input type="integer" name="OrderBy" ng-model="vm.contactItemType.OrderBy" ng-required="true">\n\n        <div ng-messages="contactItemTypeForm[\'OrderBy\'].$error" ng-show="contactItemTypeForm[\'OrderBy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ORDER_BY_REQUIRED">Order_by field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.contactItemType.rgbBackgroundColor" label="{{\'TOOLS.RGBBACKGROUNDCOLOR\' | 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.newContactItemType" ng-click="vm.saveContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid || contactItemTypeForm.$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.newContactItemType" ng-click="vm.addNewContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CONTACTITEMTYPE" translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n          ADD CONTACTITEMTYPE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContactItemType" ng-click="vm.deleteContactItemType($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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" ng-change="vm.onTypeChange()" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type === \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'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">\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">\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>\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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">\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">\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\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>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{allCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{anyCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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">\n      <div class="error-list">\n        <div ng-repeat="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>\n      <div class="error-list">\n        <div ng-repeat="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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header 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">\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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" 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" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header 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">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_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 md-order-by="name">{{\'\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.rows.length > 0">\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="queue in vm.queues.rows">\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.queues.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/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 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header 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">\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header 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">\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAIT_FOR_THE_ASSIGNED_QUEUE">Wait For The Assigned Queue</label>\n                <input type="number" name="waitForTheAssignedQueue" ng-model="vm.whatsappAccount.waitForTheAssignedQueue" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedQueue\'].$error" ng-show="generalForm[\'waitForTheAssignedQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Wait For The Assigned Queue field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="TOOLBAR.ERRORS.FIELD_MUST_BE_LESS_THAN_OR_EQUAL_TO">Wait For The Assigned Queue must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\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" 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" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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-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-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" 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" 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" 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" ng-hide="vm_ct.user && vm_ct.isMessengerAllowed">\n  <audio id="beep-player" hidden src="/assets/ms-phonebar/sounds/beep.ogg"></audio>\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" 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" translate="DASHBOARDS.ALL">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg" translate="CHAT.ONLINE"></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" translate="CHAT.OFFLINE"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\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.openChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : vm_ct.defaultAvatar}}" 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.unreadMessages[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessages[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">\n          </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.FromId === vm_ct.currentUser.id" class="s16 no-margin" ng-class="{\'md-accent\': user.lastMessage.read}" md-font-icon="{{ user.lastMessage.read ? \'icon-check-all\' : \'icon-check\' }}"></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    </md-list-item>\n</div>\n</md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user && vm_ct.isMessengerAllowed" 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.closeChat()" 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 ng-if="vm_ct.isLoading" 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 ms-timeline="vm_ct.timelineOptions" ms-timeline-load-more="vm_ct.loadMoreMessages()">\n      <div layout="row" ng-repeat="message in vm_ct.user.messages" class="ms-timeline-item 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\' : vm_ct.defaultAvatar }}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n        <img ng-if="message.FromId === vm_ct.currentUser.id" ng-src="{{ vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar">\n        <div class="bubble timeline-card" 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.FromId === vm_ct.currentUser.id" class="s16 margin-5" ng-class="{\'md-accent\': message.read}" md-font-icon="{{ message.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          </div>\n        </div>\n      </div>\n\n      <div ng-if="vm_ct.hasMoreMessages" 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-click="vm_ct.loadMoreMessages()" translate="DASHBOARDS.MORE">\n        </md-button>\n      </div>\n      <div ng-if="!vm_ct.hasMoreMessages && vm_ct.user.messages.length > 20" layout="row" layout-align="end center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-fab md-mini" type="button" ng-click="vm_ct.scrollToTopOfChat(0)">\n          <md-icon md-font-icon="icon-arrow-up-bold"></md-icon>\n        </md-button>\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    <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>\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" 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" 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 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>\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()">\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/autoanswers/dialog.html",'<md-dialog class="autoanswers-dialog" aria-label="autoanswers">\n  <form name="autoanswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.AUTOANSWER_NOTIFICATIONS\' | translate)  }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content layout-padding>\n      <md-table-container>\n        <table md-table multiple>\n          <thead md-head>\n            <tr md-row>\n              <th></th>\n              <th md-column>{{ \'TOOLBAR.CHANNEL\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.NOTIFICATIONS\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.DELAY\' | translate }}</th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-repeat="item in vm.items" ng-if="item.permission">\n              <td>\n                <md-icon md-font-icon="{{item.font_icon}}" class="icon {{item.class}} {{item.font_icon}}" aria-label="{{item.label}}"></md-icon>\n              </td>\n              <td md-cell>\n                <div layout="row">\n                  <span translate="{{item.title}}"></span>\n                </div>\n              </td>\n              <td md-cell align="center">\n                <div layout="row" layout-align="center">\n                  <md-icon ng-if="item.enabled" md-font-icon="icon-check-circle" class="icon green-700-fg"></md-icon>\n                  <span ng-if="!item.enabled" style="color:red">X</span>\n                </div>\n              </td>\n              <td md-cell align="right">\n                <div layout="row" layout-align="end">\n                  <span ng-if="item.enabled">{{item.delay}}</span>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" registered="vm.isWebRTCBarRegistered" 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.chat || vm.license.mail || vm.license.messaging || vm.license.openchannel || vm.license.fax || vm.license.whatsapp)" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.autoAnswerNotificationsDialog($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <md-icon md-font-icon="icon-reply" class="icon {{ vm.autoanswerIconColor }}"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.AUTOANSWER_NOTIFICATIONS">Notifications</span></md-tooltip>\n    </md-button>\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 badge-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    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\n\n    \x3c!-- \n      ADD V3\n      \n      <md-button ng-if="vm.user.role === \'agent\' && vm.license.voice && vm.user.permissions.includes(110)" class="preview-button no-margin" ng-disabled="vm.disable" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.waitingQueueCalls.length > 0" class="md-accent-bg queues-call-count badge-count">{{vm.waitingQueueCalls.length}}</div>\n      <md-icon md-font-icon="icon-phone-incoming blue-fg" class="icon"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.WAITINGQUEUECALLS">Waiting Queues Calls</span></md-tooltip>\n    </md-button> --\x3e\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" 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-if="!vm.isRecallNotification" 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 8f11c91..ee0da3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8bf=['urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[body]','sequelize','exports','VIRTUAL','getDataValue','STRING','integration','motionbar','urlForward','browser','bot','script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0xa8bf,0x1c2));var _0xfa8b=function(_0x38782c,_0x5c9fef){_0x38782c=_0x38782c-0x0;var _0x3708bf=_0xa8bf[_0x38782c];return _0x3708bf;};'use strict';var Sequelize=require(_0xfa8b('0x0'));module[_0xfa8b('0x1')]={'name':{'type':Sequelize[_0xfa8b('0x2')],'get':function(_0x333769){return this[_0xfa8b('0x3')]('action');}},'action':{'type':Sequelize[_0xfa8b('0x4')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0xfa8b('0x5'),_0xfa8b('0x6'),'jscripty',_0xfa8b('0x7'),_0xfa8b('0x8'),_0xfa8b('0x9'),_0xfa8b('0xa')]],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'},'data1':{'type':Sequelize[_0xfa8b('0x4')](0x1000),'comment':_0xfa8b('0xb')},'data2':{'type':Sequelize[_0xfa8b('0x4')](0x1000),'comment':_0xfa8b('0xc')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0xfa8b('0xd')},'data4':{'type':Sequelize[_0xfa8b('0x4')](0x1000),'comments':'browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]'},'data5':{'type':Sequelize[_0xfa8b('0x4')](0x1000),'comments':_0xfa8b('0xe')},'data6':{'type':Sequelize[_0xfa8b('0x4')],'comments':'urlForward[headers],\x20browser[wsindowHeight]'},'data7':{'type':Sequelize['TEXT'],'comments':_0xfa8b('0xf')}};
\ No newline at end of file
+var _0xc4aa=['bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','STRING','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','TEXT','sequelize','exports','VIRTUAL','getDataValue','action','motionbar','jscripty','urlForward','browser'];(function(_0x3a8602,_0x269055){var _0x177703=function(_0x22659f){while(--_0x22659f){_0x3a8602['push'](_0x3a8602['shift']());}};_0x177703(++_0x269055);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0xc4aa[_0x4d613c];return _0x301fe3;};'use strict';var Sequelize=require(_0xac4a('0x0'));module[_0xac4a('0x1')]={'name':{'type':Sequelize[_0xac4a('0x2')],'get':function(_0x351dd5){return this[_0xac4a('0x3')](_0xac4a('0x4'));}},'action':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'isIn':{'args':[['contactManager','integration',_0xac4a('0x5'),_0xac4a('0x6'),_0xac4a('0x7'),_0xac4a('0x8'),_0xac4a('0x9'),_0xac4a('0xa')]],'msg':_0xac4a('0xb')}},'comment':_0xac4a('0xb')},'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[_0xac4a('0xc')](0x1000),'comment':_0xac4a('0xd')},'data3':{'type':Sequelize[_0xac4a('0xc')](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[_0xac4a('0xc')](0x1000),'comments':_0xac4a('0xe')},'data5':{'type':Sequelize[_0xac4a('0xc')](0x1000),'comments':'urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]'},'data6':{'type':Sequelize[_0xac4a('0xc')],'comments':'urlForward[headers],\x20browser[wsindowHeight]'},'data7':{'type':Sequelize[_0xac4a('0xf')],'comments':'urlForward[body]'}};
\ No newline at end of file
index 7e81017..c83c8a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1357=['save','destroy','then','error','stack','name','send','update','body','Action','find','params','catch','eml-format','rimraf','zip-dir','bluebird','mustache','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/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject'];(function(_0x16fcfe,_0x26392e){var _0xa05f71=function(_0x2f31ad){while(--_0x2f31ad){_0x16fcfe['push'](_0x16fcfe['shift']());}};_0xa05f71(++_0x26392e);}(_0x1357,0x71));var _0x7135=function(_0x21c650,_0x4d9492){_0x21c650=_0x21c650-0x0;var _0x19bbc3=_0x1357[_0x21c650];return _0x19bbc3;};'use strict';var emlformat=require(_0x7135('0x0'));var rimraf=require(_0x7135('0x1'));var zipdir=require(_0x7135('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x7135('0x3'));var Mustache=require(_0x7135('0x4'));var util=require('util');var path=require(_0x7135('0x5'));var sox=require(_0x7135('0x6'));var csv=require(_0x7135('0x7'));var ejs=require(_0x7135('0x8'));var fs=require('fs');var fs_extra=require(_0x7135('0x9'));var _=require(_0x7135('0xa'));var squel=require(_0x7135('0xb'));var crypto=require('crypto');var jsforce=require(_0x7135('0xc'));var deskjs=require(_0x7135('0xd'));var toCsv=require(_0x7135('0x7'));var querystring=require(_0x7135('0xe'));var Papa=require(_0x7135('0xf'));var Redis=require(_0x7135('0x10'));var authService=require(_0x7135('0x11'));var qs=require(_0x7135('0x12'));var as=require(_0x7135('0x13'));var hardwareService=require(_0x7135('0x14'));var logger=require(_0x7135('0x15'))(_0x7135('0x16'));var utils=require(_0x7135('0x17'));var config=require(_0x7135('0x18'));var licenseUtil=require(_0x7135('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x46df26,_0x43213f){_0x43213f=_0x43213f||0xcc;return function(_0x8757b8){if(_0x8757b8){return _0x46df26[_0x7135('0x1a')](_0x43213f);}return _0x46df26['status'](_0x43213f)[_0x7135('0x1b')]();};}function respondWithResult(_0x434b3d,_0x69403f){_0x69403f=_0x69403f||0xc8;return function(_0x13138b){if(_0x13138b){return _0x434b3d[_0x7135('0x1c')](_0x69403f)[_0x7135('0x1d')](_0x13138b);}};}function respondWithFilteredResult(_0x30bf8f,_0x325000){return function(_0x414211){if(_0x414211){var _0x31330b=typeof _0x325000[_0x7135('0x1e')]===_0x7135('0x1f')&&typeof _0x325000[_0x7135('0x20')]===_0x7135('0x1f');var _0x5604ee=_0x414211[_0x7135('0x21')];var _0x1dd0a1=_0x31330b?0x0:_0x325000[_0x7135('0x1e')];var _0xd9007f=_0x31330b?_0x414211[_0x7135('0x21')]:_0x325000[_0x7135('0x1e')]+_0x325000[_0x7135('0x20')];var _0x4fbcae;if(_0xd9007f>=_0x5604ee){_0xd9007f=_0x5604ee;_0x4fbcae=0xc8;}else{_0x4fbcae=0xce;}_0x30bf8f[_0x7135('0x1c')](_0x4fbcae);return _0x30bf8f[_0x7135('0x22')]('Content-Range',_0x1dd0a1+'-'+_0xd9007f+'/'+_0x5604ee)[_0x7135('0x1d')](_0x414211);}return null;};}function patchUpdates(_0x31f172){return function(_0x5000c4){try{jsonpatch[_0x7135('0x23')](_0x5000c4,_0x31f172,!![]);}catch(_0x5cce82){return BPromise[_0x7135('0x24')](_0x5cce82);}return _0x5000c4[_0x7135('0x25')]();};}function saveUpdates(_0x39c560,_0x4bf207){return function(_0x44302b){if(_0x44302b){return _0x44302b['update'](_0x39c560)['then'](function(_0xaf6c72){return _0xaf6c72;});}return null;};}function removeEntity(_0x4b0f60,_0x40f02b){return function(_0xc8d7e0){if(_0xc8d7e0){return _0xc8d7e0[_0x7135('0x26')]()[_0x7135('0x27')](function(){_0x4b0f60[_0x7135('0x1c')](0xcc)[_0x7135('0x1b')]();});}};}function handleEntityNotFound(_0x13cea7,_0xcb7388){return function(_0x619455){if(!_0x619455){_0x13cea7['sendStatus'](0x194);}return _0x619455;};}function handleError(_0x551fd9,_0x16db53){_0x16db53=_0x16db53||0x1f4;return function(_0x26ca3a){logger[_0x7135('0x28')](_0x26ca3a[_0x7135('0x29')]);if(_0x26ca3a['name']){delete _0x26ca3a[_0x7135('0x2a')];}_0x551fd9[_0x7135('0x1c')](_0x16db53)[_0x7135('0x2b')](_0x26ca3a);};}exports[_0x7135('0x2c')]=function(_0x25136b,_0xd8eda3){if(_0x25136b[_0x7135('0x2d')]['id']){delete _0x25136b['body']['id'];}return db[_0x7135('0x2e')][_0x7135('0x2f')]({'where':{'id':_0x25136b['params']['id']}})[_0x7135('0x27')](handleEntityNotFound(_0xd8eda3,null))['then'](saveUpdates(_0x25136b[_0x7135('0x2d')],null))[_0x7135('0x27')](respondWithResult(_0xd8eda3,null))['catch'](handleError(_0xd8eda3,null));};exports['destroy']=function(_0x351580,_0x2c043b){return db[_0x7135('0x2e')][_0x7135('0x2f')]({'where':{'id':_0x351580[_0x7135('0x30')]['id']}})[_0x7135('0x27')](handleEntityNotFound(_0x2c043b,null))['then'](removeEntity(_0x2c043b,null))[_0x7135('0x31')](handleError(_0x2c043b,null));};
\ No newline at end of file
+var _0x6028=['crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','json','reject','save','destroy','then','error','stack','name','update','body','Action','catch','find','params','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','lodash','squel'];(function(_0x18ebf5,_0x5889ea){var _0x302a3e=function(_0x3b725a){while(--_0x3b725a){_0x18ebf5['push'](_0x18ebf5['shift']());}};_0x302a3e(++_0x5889ea);}(_0x6028,0x1c3));var _0x8602=function(_0xbff31d,_0x3eb0a6){_0xbff31d=_0xbff31d-0x0;var _0x4ea52c=_0x6028[_0xbff31d];return _0x4ea52c;};'use strict';var emlformat=require(_0x8602('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8602('0x1'));var jsonpatch=require(_0x8602('0x2'));var rp=require(_0x8602('0x3'));var moment=require('moment');var BPromise=require(_0x8602('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8602('0x5'));var sox=require(_0x8602('0x6'));var csv=require(_0x8602('0x7'));var ejs=require(_0x8602('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8602('0x9'));var squel=require(_0x8602('0xa'));var crypto=require(_0x8602('0xb'));var jsforce=require(_0x8602('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x8602('0xd'));var Papa=require(_0x8602('0xe'));var Redis=require(_0x8602('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8602('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8602('0x11'));var utils=require('../../config/utils');var config=require(_0x8602('0x12'));var licenseUtil=require(_0x8602('0x13'));var db=require(_0x8602('0x14'))['db'];function respondWithStatusCode(_0x1f44d0,_0x354055){_0x354055=_0x354055||0xcc;return function(_0x1db6ce){if(_0x1db6ce){return _0x1f44d0[_0x8602('0x15')](_0x354055);}return _0x1f44d0[_0x8602('0x16')](_0x354055)[_0x8602('0x17')]();};}function respondWithResult(_0x28142e,_0x4660c0){_0x4660c0=_0x4660c0||0xc8;return function(_0xe42e39){if(_0xe42e39){return _0x28142e[_0x8602('0x16')](_0x4660c0)['json'](_0xe42e39);}};}function respondWithFilteredResult(_0x1b66f9,_0x8c4e13){return function(_0x47b78b){if(_0x47b78b){var _0x297140=typeof _0x8c4e13[_0x8602('0x18')]===_0x8602('0x19')&&typeof _0x8c4e13['limit']==='undefined';var _0x354d6a=_0x47b78b[_0x8602('0x1a')];var _0xe153ef=_0x297140?0x0:_0x8c4e13[_0x8602('0x18')];var _0x2d1a80=_0x297140?_0x47b78b[_0x8602('0x1a')]:_0x8c4e13[_0x8602('0x18')]+_0x8c4e13[_0x8602('0x1b')];var _0x4f4852;if(_0x2d1a80>=_0x354d6a){_0x2d1a80=_0x354d6a;_0x4f4852=0xc8;}else{_0x4f4852=0xce;}_0x1b66f9[_0x8602('0x16')](_0x4f4852);return _0x1b66f9['set']('Content-Range',_0xe153ef+'-'+_0x2d1a80+'/'+_0x354d6a)[_0x8602('0x1c')](_0x47b78b);}return null;};}function patchUpdates(_0xc35f55){return function(_0x45603f){try{jsonpatch['apply'](_0x45603f,_0xc35f55,!![]);}catch(_0x1edc8c){return BPromise[_0x8602('0x1d')](_0x1edc8c);}return _0x45603f[_0x8602('0x1e')]();};}function saveUpdates(_0x477cf2,_0x193daa){return function(_0x4c0d39){if(_0x4c0d39){return _0x4c0d39['update'](_0x477cf2)['then'](function(_0x20220d){return _0x20220d;});}return null;};}function removeEntity(_0x3c1448,_0x6bf48f){return function(_0x17367a){if(_0x17367a){return _0x17367a[_0x8602('0x1f')]()[_0x8602('0x20')](function(){_0x3c1448[_0x8602('0x16')](0xcc)[_0x8602('0x17')]();});}};}function handleEntityNotFound(_0x837dfb,_0xd9ecd3){return function(_0x23e82d){if(!_0x23e82d){_0x837dfb[_0x8602('0x15')](0x194);}return _0x23e82d;};}function handleError(_0x146d38,_0x5cdc0a){_0x5cdc0a=_0x5cdc0a||0x1f4;return function(_0xc249c5){logger[_0x8602('0x21')](_0xc249c5[_0x8602('0x22')]);if(_0xc249c5[_0x8602('0x23')]){delete _0xc249c5[_0x8602('0x23')];}_0x146d38[_0x8602('0x16')](_0x5cdc0a)['send'](_0xc249c5);};}exports[_0x8602('0x24')]=function(_0x5159b2,_0x333380){if(_0x5159b2[_0x8602('0x25')]['id']){delete _0x5159b2[_0x8602('0x25')]['id'];}return db[_0x8602('0x26')]['find']({'where':{'id':_0x5159b2['params']['id']}})[_0x8602('0x20')](handleEntityNotFound(_0x333380,null))[_0x8602('0x20')](saveUpdates(_0x5159b2[_0x8602('0x25')],null))[_0x8602('0x20')](respondWithResult(_0x333380,null))[_0x8602('0x27')](handleError(_0x333380,null));};exports[_0x8602('0x1f')]=function(_0x3ac066,_0x3293cc){return db['Action'][_0x8602('0x28')]({'where':{'id':_0x3ac066[_0x8602('0x29')]['id']}})['then'](handleEntityNotFound(_0x3293cc,null))[_0x8602('0x20')](removeEntity(_0x3293cc,null))['catch'](handleError(_0x3293cc,null));};
\ No newline at end of file
index a3c8497..a8522d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcda=['rimraf','../../config/environment','./action.attributes','exports','define','Action','tools_actions','lodash','api','moment','bluebird','request-promise','path'];(function(_0x134ccd,_0x5879a8){var _0x498e01=function(_0x4f4ed1){while(--_0x4f4ed1){_0x134ccd['push'](_0x134ccd['shift']());}};_0x498e01(++_0x5879a8);}(_0xdcda,0xa3));var _0xadcd=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xdcda[_0x53ccf2];return _0x5a2964;};'use strict';var _=require(_0xadcd('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xadcd('0x1'));var moment=require(_0xadcd('0x2'));var BPromise=require(_0xadcd('0x3'));var rp=require(_0xadcd('0x4'));var fs=require('fs');var path=require(_0xadcd('0x5'));var rimraf=require(_0xadcd('0x6'));var config=require(_0xadcd('0x7'));var attributes=require(_0xadcd('0x8'));module[_0xadcd('0x9')]=function(_0xfe953d,_0x315e67){return _0xfe953d[_0xadcd('0xa')](_0xadcd('0xb'),attributes,{'tableName':_0xadcd('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2d87=['Action','tools_actions','lodash','util','bluebird','request-promise','path','../../config/environment','./action.attributes','exports'];(function(_0x51bd7d,_0x6e8759){var _0x3e5165=function(_0x4f6326){while(--_0x4f6326){_0x51bd7d['push'](_0x51bd7d['shift']());}};_0x3e5165(++_0x6e8759);}(_0x2d87,0x84));var _0x72d8=function(_0x1f9f37,_0x18776e){_0x1f9f37=_0x1f9f37-0x0;var _0x21c080=_0x2d87[_0x1f9f37];return _0x21c080;};'use strict';var _=require(_0x72d8('0x0'));var util=require(_0x72d8('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x72d8('0x2'));var rp=require(_0x72d8('0x3'));var fs=require('fs');var path=require(_0x72d8('0x4'));var rimraf=require('rimraf');var config=require(_0x72d8('0x5'));var attributes=require(_0x72d8('0x6'));module[_0x72d8('0x7')]=function(_0x42c31b,_0x2f22b5){return _0x42c31b['define'](_0x72d8('0x8'),attributes,{'tableName':_0x72d8('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 909ef6f..d9a3dd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then'];(function(_0x565c49,_0x54acd0){var _0x20ca34=function(_0x42f7e1){while(--_0x42f7e1){_0x565c49['push'](_0x565c49['shift']());}};_0x20ca34(++_0x54acd0);}(_0x814b,0x1a2));var _0xb814=function(_0x4e7c1c,_0x56eafd){_0x4e7c1c=_0x4e7c1c-0x0;var _0x47adb2=_0x814b[_0x4e7c1c];return _0x47adb2;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var moment=require(_0xb814('0x2'));var BPromise=require(_0xb814('0x3'));var rs=require(_0xb814('0x4'));var fs=require('fs');var Redis=require(_0xb814('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb814('0x6'));var logger=require(_0xb814('0x7'))(_0xb814('0x8'));var config=require(_0xb814('0x9'));var jayson=require(_0xb814('0xa'));var client=jayson[_0xb814('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b0829,_0x2e6272,_0x5c8539){return new BPromise(function(_0x271af9,_0x2913a6){return client[_0xb814('0xc')](_0x3b0829,_0x5c8539)[_0xb814('0xd')](function(_0x1fea33){logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));logger[_0xb814('0x11')](_0xb814('0x12'),_0x2e6272,_0xb814('0x10'),JSON['stringify'](_0x1fea33));if(_0x1fea33[_0xb814('0x13')]){if(_0x1fea33['error'][_0xb814('0x14')]===0x1f4){logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x2913a6(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x271af9(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}else{logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));_0x271af9(_0x1fea33[_0xb814('0x16')][_0xb814('0x15')]);}})[_0xb814('0x17')](function(_0x21b73f){logger[_0xb814('0x13')]('Action,\x20%s,\x20%s',_0x2e6272,_0x21b73f);_0x2913a6(_0x21b73f);});});}
\ No newline at end of file
+var _0x4975=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x4975,0x86));var _0x5497=function(_0x267d75,_0x95c332){_0x267d75=_0x267d75-0x0;var _0x19b35a=_0x4975[_0x267d75];return _0x19b35a;};'use strict';var _=require(_0x5497('0x0'));var util=require('util');var moment=require(_0x5497('0x1'));var BPromise=require(_0x5497('0x2'));var rs=require(_0x5497('0x3'));var fs=require('fs');var Redis=require(_0x5497('0x4'));var db=require(_0x5497('0x5'))['db'];var utils=require(_0x5497('0x6'));var logger=require(_0x5497('0x7'))(_0x5497('0x8'));var config=require(_0x5497('0x9'));var jayson=require(_0x5497('0xa'));var client=jayson['client'][_0x5497('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4f563d,_0x1d0019,_0x674a2a){return new BPromise(function(_0x368e8b,_0x57f930){return client[_0x5497('0xc')](_0x4f563d,_0x674a2a)['then'](function(_0x1f63d8){logger[_0x5497('0xd')](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));logger[_0x5497('0x10')](_0x5497('0x11'),_0x1d0019,_0x5497('0xf'),JSON[_0x5497('0x12')](_0x1f63d8));if(_0x1f63d8['error']){if(_0x1f63d8['error']['code']===0x1f4){logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x57f930(_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);}logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x368e8b(_0x1f63d8['error'][_0x5497('0x14')]);}else{logger['info'](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));_0x368e8b(_0x1f63d8[_0x5497('0x15')][_0x5497('0x14')]);}})[_0x5497('0x16')](function(_0x4073e6){logger[_0x5497('0x13')]('Action,\x20%s,\x20%s',_0x1d0019,_0x4073e6);_0x57f930(_0x4073e6);});});}
\ No newline at end of file
index b25cbdf..57a9747 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c07=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','put','isAuthenticated','update','delete'];(function(_0x497826,_0x164921){var _0x4b3ae6=function(_0x1c18e1){while(--_0x1c18e1){_0x497826['push'](_0x497826['shift']());}};_0x4b3ae6(++_0x164921);}(_0x2c07,0x14a));var _0x72c0=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2c07[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x72c0('0x0'));var express=require(_0x72c0('0x1'));var router=express[_0x72c0('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x72c0('0x3'));var interaction=require(_0x72c0('0x4'));var config=require(_0x72c0('0x5'));var controller=require(_0x72c0('0x6'));router[_0x72c0('0x7')]('/:id',auth[_0x72c0('0x8')](),controller[_0x72c0('0x9')]);router[_0x72c0('0xa')]('/:id',auth[_0x72c0('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xe703=['isAuthenticated','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./action.controller','/:id'];(function(_0x3e1e7f,_0x2623be){var _0xbf1a45=function(_0x43d2df){while(--_0x43d2df){_0x3e1e7f['push'](_0x3e1e7f['shift']());}};_0xbf1a45(++_0x2623be);}(_0xe703,0x1a9));var _0x3e70=function(_0x222214,_0x5c3279){_0x222214=_0x222214-0x0;var _0x303520=_0xe703[_0x222214];return _0x303520;};'use strict';var multer=require('multer');var util=require(_0x3e70('0x0'));var path=require(_0x3e70('0x1'));var timeout=require(_0x3e70('0x2'));var express=require('express');var router=express[_0x3e70('0x3')]();var fs_extra=require(_0x3e70('0x4'));var auth=require(_0x3e70('0x5'));var interaction=require(_0x3e70('0x6'));var config=require(_0x3e70('0x7'));var controller=require(_0x3e70('0x8'));router['put'](_0x3e70('0x9'),auth[_0x3e70('0xa')](),controller[_0x3e70('0xb')]);router[_0x3e70('0xc')](_0x3e70('0x9'),auth[_0x3e70('0xa')](),controller[_0x3e70('0xd')]);module[_0x3e70('0xe')]=router;
\ No newline at end of file
index 3c26078..ba68e8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2675=['sequelize','STRING','TEXT'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x2675,0x75));var _0x5267=function(_0x3ea9c4,_0x6891a4){_0x3ea9c4=_0x3ea9c4-0x0;var _0x36e3da=_0x2675[_0x3ea9c4];return _0x36e3da;};'use strict';var Sequelize=require(_0x5267('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x5267('0x1')]},'table':{'type':Sequelize[_0x5267('0x1')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0x5267('0x2')]}};
\ No newline at end of file
+var _0xae24=['sequelize','STRING'];(function(_0x1a4bf0,_0x57747d){var _0x1c739f=function(_0x25ffcc){while(--_0x25ffcc){_0x1a4bf0['push'](_0x1a4bf0['shift']());}};_0x1c739f(++_0x57747d);}(_0xae24,0x182));var _0x4ae2=function(_0x3bb12b,_0x34def9){_0x3bb12b=_0x3bb12b-0x0;var _0x1831b1=_0xae24[_0x3bb12b];return _0x1831b1;};'use strict';var Sequelize=require(_0x4ae2('0x0'));module['exports']={'name':{'type':Sequelize[_0x4ae2('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x4ae2('0x1')]},'table':{'type':Sequelize[_0x4ae2('0x1')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index ed4433e..a2855a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf31=['stack','name','index','map','AnalyticCustomReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','nolimit','limit','order','sort','where','pick','filter','VIRTUAL','options','include','findAll','rows','show','params','length','includeAll','merge','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','find','userProfileId','CustomReports','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','rules','operator','group','condition','value','getFields','AnalyticMetric','keyBy','select','table','MetricId','metric','field','function','format','replace','groupBy','orderBy','alias','joins','parse','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','clone','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','join','left_join','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','Sequelize','ValidationErrorItem','from','foreignKey','output','web','fullPath','%s-%s.%s','randomstring','csv','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','Run\x20Query:','child_process','fork','../../components/export/','savename','countTable','COUNT(*)','run','runReport','IS\x20NOT\x20EMPTY','Please\x20insert\x20at\x20least\x20one\x20field','debug','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','dbH','status','end','json','offset','undefined','count','Content-Range','save','update','then','destroy','get','UserProfileResource','error'];(function(_0x5877d8,_0x1b153a){var _0x59ad8c=function(_0x11ee8a){while(--_0x11ee8a){_0x5877d8['push'](_0x5877d8['shift']());}};_0x59ad8c(++_0x1b153a);}(_0xaf31,0x1c1));var _0x1af3=function(_0x3bbb75,_0x27ed74){_0x3bbb75=_0x3bbb75-0x0;var _0x43092d=_0xaf31[_0x3bbb75];return _0x43092d;};'use strict';var emlformat=require(_0x1af3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1af3('0x1'));var jsonpatch=require(_0x1af3('0x2'));var rp=require(_0x1af3('0x3'));var moment=require(_0x1af3('0x4'));var BPromise=require(_0x1af3('0x5'));var Mustache=require(_0x1af3('0x6'));var util=require('util');var path=require(_0x1af3('0x7'));var sox=require(_0x1af3('0x8'));var csv=require(_0x1af3('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1af3('0xa'));var _=require('lodash');var squel=require(_0x1af3('0xb'));var crypto=require(_0x1af3('0xc'));var jsforce=require(_0x1af3('0xd'));var deskjs=require(_0x1af3('0xe'));var toCsv=require(_0x1af3('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1af3('0xf'));var authService=require(_0x1af3('0x10'));var qs=require(_0x1af3('0x11'));var as=require(_0x1af3('0x12'));var hardwareService=require(_0x1af3('0x13'));var logger=require(_0x1af3('0x14'))(_0x1af3('0x15'));var utils=require(_0x1af3('0x16'));var config=require(_0x1af3('0x17'));var licenseUtil=require(_0x1af3('0x18'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0x1af3('0x19')];function respondWithStatusCode(_0x40273b,_0x1efa5a){_0x1efa5a=_0x1efa5a||0xcc;return function(_0x110b19){if(_0x110b19){return _0x40273b['sendStatus'](_0x1efa5a);}return _0x40273b[_0x1af3('0x1a')](_0x1efa5a)[_0x1af3('0x1b')]();};}function respondWithResult(_0x14b90c,_0x170888){_0x170888=_0x170888||0xc8;return function(_0x4f8c19){if(_0x4f8c19){return _0x14b90c[_0x1af3('0x1a')](_0x170888)[_0x1af3('0x1c')](_0x4f8c19);}};}function respondWithFilteredResult(_0x2e7563,_0x4584bd){return function(_0x3262c7){if(_0x3262c7){var _0x2e3d00=typeof _0x4584bd[_0x1af3('0x1d')]===_0x1af3('0x1e')&&typeof _0x4584bd['limit']===_0x1af3('0x1e');var _0x36f8e5=_0x3262c7[_0x1af3('0x1f')];var _0x21ec50=_0x2e3d00?0x0:_0x4584bd[_0x1af3('0x1d')];var _0x211f66=_0x2e3d00?_0x3262c7[_0x1af3('0x1f')]:_0x4584bd[_0x1af3('0x1d')]+_0x4584bd['limit'];var _0x341bf2;if(_0x211f66>=_0x36f8e5){_0x211f66=_0x36f8e5;_0x341bf2=0xc8;}else{_0x341bf2=0xce;}_0x2e7563['status'](_0x341bf2);return _0x2e7563['set'](_0x1af3('0x20'),_0x21ec50+'-'+_0x211f66+'/'+_0x36f8e5)[_0x1af3('0x1c')](_0x3262c7);}return null;};}function patchUpdates(_0x3c989f){return function(_0x1286f8){try{jsonpatch['apply'](_0x1286f8,_0x3c989f,!![]);}catch(_0x533085){return BPromise['reject'](_0x533085);}return _0x1286f8[_0x1af3('0x21')]();};}function saveUpdates(_0x4102f3,_0x4f9606){return function(_0x385223){if(_0x385223){return _0x385223[_0x1af3('0x22')](_0x4102f3)[_0x1af3('0x23')](function(_0x58d101){return _0x58d101;});}return null;};}function removeEntity(_0x4f14d8,_0x97c509){return function(_0x5aa499){if(_0x5aa499){return _0x5aa499[_0x1af3('0x24')]()['then'](function(){var _0x41b0ae=_0x5aa499[_0x1af3('0x25')]({'plain':!![]});var _0x38133c='CustomReports';return db[_0x1af3('0x26')]['destroy']({'where':{'type':_0x38133c,'resourceId':_0x41b0ae['id']}})[_0x1af3('0x23')](function(){return _0x5aa499;});})[_0x1af3('0x23')](function(){_0x4f14d8[_0x1af3('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x57115a,_0x1bed67){return function(_0x2fedb7){if(!_0x2fedb7){_0x57115a['sendStatus'](0x194);}return _0x2fedb7;};}function handleError(_0x5ddbeb,_0x13287d){_0x13287d=_0x13287d||0x1f4;return function(_0x5b32a3){logger[_0x1af3('0x27')](_0x5b32a3[_0x1af3('0x28')]);if(_0x5b32a3[_0x1af3('0x29')]){delete _0x5b32a3[_0x1af3('0x29')];}_0x5ddbeb[_0x1af3('0x1a')](_0x13287d)['send'](_0x5b32a3);};}exports[_0x1af3('0x2a')]=function(_0x462e88,_0x5aec1b){var _0x1133f6={},_0x4deeea={},_0x32ce31={'count':0x0,'rows':[]};var _0x4f3963=_[_0x1af3('0x2b')](db[_0x1af3('0x2c')][_0x1af3('0x2d')],function(_0x5b0a5c){return{'name':_0x5b0a5c[_0x1af3('0x2e')],'type':_0x5b0a5c[_0x1af3('0x2f')][_0x1af3('0x30')]};});_0x4deeea[_0x1af3('0x31')]=_[_0x1af3('0x2b')](_0x4f3963,_0x1af3('0x29'));_0x4deeea[_0x1af3('0x32')]=_[_0x1af3('0x33')](_0x462e88[_0x1af3('0x32')]);_0x4deeea[_0x1af3('0x34')]=_['intersection'](_0x4deeea[_0x1af3('0x31')],_0x4deeea[_0x1af3('0x32')]);_0x1133f6[_0x1af3('0x35')]=_[_0x1af3('0x36')](_0x4deeea[_0x1af3('0x31')],qs['fields'](_0x462e88[_0x1af3('0x32')][_0x1af3('0x37')]));_0x1133f6['attributes']=_0x1133f6[_0x1af3('0x35')]['length']?_0x1133f6[_0x1af3('0x35')]:_0x4deeea[_0x1af3('0x31')];if(!_0x462e88[_0x1af3('0x32')]['hasOwnProperty'](_0x1af3('0x38'))){_0x1133f6[_0x1af3('0x39')]=qs[_0x1af3('0x39')](_0x462e88[_0x1af3('0x32')][_0x1af3('0x39')]);_0x1133f6[_0x1af3('0x1d')]=qs[_0x1af3('0x1d')](_0x462e88[_0x1af3('0x32')][_0x1af3('0x1d')]);}_0x1133f6[_0x1af3('0x3a')]=qs[_0x1af3('0x3b')](_0x462e88['query'][_0x1af3('0x3b')]);_0x1133f6[_0x1af3('0x3c')]=qs[_0x1af3('0x34')](_[_0x1af3('0x3d')](_0x462e88[_0x1af3('0x32')],_0x4deeea['filters']),_0x4f3963);if(_0x462e88[_0x1af3('0x32')][_0x1af3('0x3e')]){_0x1133f6[_0x1af3('0x3c')]=_['merge'](_0x1133f6[_0x1af3('0x3c')],{'$or':_[_0x1af3('0x2b')](_0x4f3963,function(_0x4ed126){if(_0x4ed126[_0x1af3('0x2f')]!==_0x1af3('0x3f')){var _0x4981fa={};_0x4981fa[_0x4ed126[_0x1af3('0x29')]]={'$like':'%'+_0x462e88['query'][_0x1af3('0x3e')]+'%'};return _0x4981fa;}})});}_0x1133f6=_['merge']({},_0x1133f6,_0x462e88[_0x1af3('0x40')]);var _0xa3e4d8={'where':_0x1133f6[_0x1af3('0x3c')]};return db['AnalyticCustomReport']['count'](_0xa3e4d8)[_0x1af3('0x23')](function(_0x1a472f){_0x32ce31['count']=_0x1a472f;if(_0x462e88[_0x1af3('0x32')]['includeAll']){_0x1133f6[_0x1af3('0x41')]=[{'all':!![]}];}return db[_0x1af3('0x2c')][_0x1af3('0x42')](_0x1133f6);})[_0x1af3('0x23')](function(_0x193000){_0x32ce31[_0x1af3('0x43')]=_0x193000;return _0x32ce31;})[_0x1af3('0x23')](respondWithFilteredResult(_0x5aec1b,_0x1133f6))['catch'](handleError(_0x5aec1b,null));};exports[_0x1af3('0x44')]=function(_0x16a413,_0x30290b){var _0x31c169={'raw':![],'where':{'id':_0x16a413[_0x1af3('0x45')]['id']}},_0x1d698a={};_0x1d698a[_0x1af3('0x31')]=_['keys'](db['AnalyticCustomReport']['rawAttributes']);_0x1d698a[_0x1af3('0x32')]=_[_0x1af3('0x33')](_0x16a413[_0x1af3('0x32')]);_0x1d698a['filters']=_[_0x1af3('0x36')](_0x1d698a[_0x1af3('0x31')],_0x1d698a['query']);_0x31c169[_0x1af3('0x35')]=_[_0x1af3('0x36')](_0x1d698a[_0x1af3('0x31')],qs[_0x1af3('0x37')](_0x16a413[_0x1af3('0x32')][_0x1af3('0x37')]));_0x31c169['attributes']=_0x31c169[_0x1af3('0x35')][_0x1af3('0x46')]?_0x31c169[_0x1af3('0x35')]:_0x1d698a[_0x1af3('0x31')];if(_0x16a413[_0x1af3('0x32')][_0x1af3('0x47')]){_0x31c169[_0x1af3('0x41')]=[{'all':!![]}];}_0x31c169=_[_0x1af3('0x48')]({},_0x31c169,_0x16a413['options']);return db[_0x1af3('0x2c')]['find'](_0x31c169)[_0x1af3('0x23')](handleEntityNotFound(_0x30290b,null))[_0x1af3('0x23')](respondWithResult(_0x30290b,null))[_0x1af3('0x49')](handleError(_0x30290b,null));};exports['create']=function(_0x2b7453,_0x1a5900){return db[_0x1af3('0x2c')][_0x1af3('0x4a')](_0x2b7453['body'],{})[_0x1af3('0x23')](function(_0x69d0f5){var _0x1017a0=_0x2b7453[_0x1af3('0x4b')][_0x1af3('0x25')]({'plain':!![]});if(!_0x1017a0)throw new Error(_0x1af3('0x4c'));if(_0x1017a0['role']===_0x1af3('0x4b')){var _0x5c13e7=_0x69d0f5[_0x1af3('0x25')]({'plain':!![]});var _0x287469=_0x1af3('0x4d');return db['UserProfileSection'][_0x1af3('0x4e')]({'where':{'name':_0x287469,'userProfileId':_0x1017a0[_0x1af3('0x4f')]},'raw':!![]})[_0x1af3('0x23')](function(_0x5af47a){if(_0x5af47a&&_0x5af47a['autoAssociation']===0x0){return db[_0x1af3('0x26')][_0x1af3('0x4a')]({'name':_0x5c13e7[_0x1af3('0x29')],'resourceId':_0x5c13e7['id'],'type':_0x1af3('0x50'),'sectionId':_0x5af47a['id']},{})['then'](function(){return _0x69d0f5;});}else{return _0x69d0f5;}})['catch'](function(_0x2a1556){logger['error'](_0x1af3('0x51'),_0x2a1556);throw _0x2a1556;});}return _0x69d0f5;})[_0x1af3('0x23')](respondWithResult(_0x1a5900,0xc9))['catch'](handleError(_0x1a5900,null));};exports[_0x1af3('0x22')]=function(_0x27acfd,_0x3b8834){if(_0x27acfd[_0x1af3('0x52')]['id']){delete _0x27acfd[_0x1af3('0x52')]['id'];}return db[_0x1af3('0x2c')][_0x1af3('0x4e')]({'where':{'id':_0x27acfd[_0x1af3('0x45')]['id']}})[_0x1af3('0x23')](handleEntityNotFound(_0x3b8834,null))[_0x1af3('0x23')](saveUpdates(_0x27acfd[_0x1af3('0x52')],null))[_0x1af3('0x23')](respondWithResult(_0x3b8834,null))[_0x1af3('0x49')](handleError(_0x3b8834,null));};exports[_0x1af3('0x24')]=function(_0x529a3c,_0x63f9d2){return db['AnalyticCustomReport'][_0x1af3('0x4e')]({'where':{'id':_0x529a3c[_0x1af3('0x45')]['id']}})[_0x1af3('0x23')](handleEntityNotFound(_0x63f9d2,null))['then'](removeEntity(_0x63f9d2,null))[_0x1af3('0x49')](handleError(_0x63f9d2,null));};exports['preview']=function(_0x2eedb9,_0x2effe3){var _0x2c62fd=0xa;var _0x34371e=['join','left_join',_0x1af3('0x53'),_0x1af3('0x54')];var _0x21d539={'SUM':_0x1af3('0x55'),'COUNT':_0x1af3('0x56'),'COUNT DISTINCT':_0x1af3('0x57'),'MAX':_0x1af3('0x58'),'MIN':_0x1af3('0x59'),'AVG':_0x1af3('0x5a'),'GROUP_CONCAT':_0x1af3('0x5b'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x1d4fc0={'SEC_TO_TIME':_0x1af3('0x5c'),'DATE':_0x1af3('0x5d'),'HOUR':_0x1af3('0x5e'),'ROUND':_0x1af3('0x5f'),'UNIX_TIMESTAMP':_0x1af3('0x60')};var _0x3c00b6=function(_0x19ddb4){return!_[_0x1af3('0x61')]([_0x1af3('0x62'),_0x1af3('0x63'),_0x1af3('0x64'),'IS\x20NOT\x20EMPTY'],_0x19ddb4);};var _0x355f85=function(_0x1071fb){if(!_0x1071fb||!_0x1071fb[_0x1af3('0x65')][_0x1af3('0x46')]){return'';}for(var _0x190fc4='(',_0x5e0fb8=0x0;_0x5e0fb8<_0x1071fb[_0x1af3('0x65')][_0x1af3('0x46')];_0x5e0fb8+=0x1){_0x5e0fb8>0x0&&(_0x190fc4+='\x20'+_0x1071fb[_0x1af3('0x66')]+'\x20');_0x190fc4+=_0x1071fb[_0x1af3('0x65')][_0x5e0fb8][_0x1af3('0x67')]?_0x355f85(_0x1071fb[_0x1af3('0x65')][_0x5e0fb8][_0x1af3('0x67')]):_0x1071fb['rules'][_0x5e0fb8]['field']+'\x20'+_0x1071fb[_0x1af3('0x65')][_0x5e0fb8][_0x1af3('0x68')]+(_0x3c00b6(_0x1071fb[_0x1af3('0x65')][_0x5e0fb8]['condition'])?'\x20'+_0x1071fb[_0x1af3('0x65')][_0x5e0fb8][_0x1af3('0x69')]:'');}return _0x190fc4+')';};var _0x2349e5={'where':{'id':_0x2eedb9['params']['id']}},_0x5a3c74,_0x392086,_0x2aa459,_0x3ce971,_0x1161dc;_0x2349e5=_['merge']({},_0x2349e5,_0x2eedb9[_0x1af3('0x40')]);return db[_0x1af3('0x2c')]['find'](_0x2349e5)['then'](function(_0x55997a){if(_0x55997a){_0x5a3c74=_0x55997a;return _0x55997a[_0x1af3('0x6a')]();}return null;})[_0x1af3('0x23')](function(_0x10ab51){if(_0x10ab51){if(!_0x10ab51[_0x1af3('0x46')]){throw new db['Sequelize']['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x392086=_0x10ab51;return db[_0x1af3('0x6b')][_0x1af3('0x42')]({'raw':!![]});}return null;})[_0x1af3('0x23')](function(_0x5642f0){if(_0x5642f0){_0x2aa459=_[_0x1af3('0x6c')](_0x5642f0,'id');var _0x4d03ad;var _0x3b26c2=squel[_0x1af3('0x6d')]();_0x3b26c2['from'](_0x5a3c74[_0x1af3('0x6e')]);for(var _0x38f4a1=0x0;_0x38f4a1<_0x392086[_0x1af3('0x46')];_0x38f4a1+=0x1){_0x4d03ad=_0x392086[_0x38f4a1][_0x1af3('0x6f')]?_0x2aa459[_0x392086[_0x38f4a1][_0x1af3('0x6f')]][_0x1af3('0x70')]:_0x392086[_0x38f4a1][_0x1af3('0x71')];_0x4d03ad=_0x392086[_0x38f4a1][_0x1af3('0x72')]?_['replace'](_0x21d539[_0x392086[_0x38f4a1]['function']],'%s',_0x4d03ad):_0x4d03ad;_0x4d03ad=_0x392086[_0x38f4a1][_0x1af3('0x73')]?_[_0x1af3('0x74')](_0x1d4fc0[_0x392086[_0x38f4a1][_0x1af3('0x73')]],'%s',_0x4d03ad):_0x4d03ad;if(_0x392086[_0x38f4a1][_0x1af3('0x75')]){_0x3b26c2[_0x1af3('0x67')](_0x4d03ad);}_0x392086[_0x38f4a1][_0x1af3('0x76')]&&_0x3b26c2[_0x1af3('0x3a')](_0x4d03ad,_0x392086[_0x38f4a1]['orderBy']==='DESC'?![]:!![]);_0x3b26c2[_0x1af3('0x71')](_0x4d03ad,_0x392086[_0x38f4a1][_0x1af3('0x77')]||_0x4d03ad);}if(_0x5a3c74['joins']){_0x5a3c74[_0x1af3('0x78')]=JSON[_0x1af3('0x79')](_0x5a3c74[_0x1af3('0x78')]);for(var _0x345c31=0x0;_0x345c31<_0x5a3c74[_0x1af3('0x78')]['length'];_0x345c31+=0x1){if(_0x5a3c74[_0x1af3('0x78')][_0x345c31]['type']&&_[_0x1af3('0x61')](_0x34371e,_0x5a3c74['joins'][_0x345c31][_0x1af3('0x2f')])&&_0x5a3c74[_0x1af3('0x78')][_0x345c31][_0x1af3('0x7a')]&&_0x5a3c74['joins'][_0x345c31]['foreignTable']&&_0x5a3c74[_0x1af3('0x78')][_0x345c31]['foreignKey']){_0x3b26c2[_0x5a3c74[_0x1af3('0x78')][_0x345c31][_0x1af3('0x2f')]](_0x5a3c74[_0x1af3('0x78')][_0x345c31][_0x1af3('0x7b')],null,util[_0x1af3('0x73')](_0x1af3('0x7c'),_0x5a3c74[_0x1af3('0x6e')],_0x5a3c74[_0x1af3('0x78')][_0x345c31][_0x1af3('0x7a')],_0x5a3c74[_0x1af3('0x78')][_0x345c31][_0x1af3('0x7b')],_0x5a3c74[_0x1af3('0x78')][_0x345c31]['foreignKey']));}}}if(_0x5a3c74[_0x1af3('0x7d')]){_0x5a3c74['conditions']=JSON[_0x1af3('0x79')](_0x5a3c74[_0x1af3('0x7d')]);_0x3b26c2[_0x1af3('0x3c')](_0x355f85(_0x5a3c74['conditions'][_0x1af3('0x67')]));}_0x1161dc=_0x3b26c2[_0x1af3('0x7e')]();_0x3b26c2['limit'](_0x2c62fd);_0x3b26c2[_0x1af3('0x1d')](0x0);logger['debug'](_0x1af3('0x7f'),_0x3b26c2[_0x1af3('0x80')]());return dbH[_0x1af3('0x81')]['query'](_0x3b26c2[_0x1af3('0x80')](),{'type':dbH[_0x1af3('0x81')][_0x1af3('0x82')][_0x1af3('0x83')]});}})[_0x1af3('0x23')](respondWithResult(_0x2effe3,null))[_0x1af3('0x49')](handleError(_0x2effe3,null));};function runReport(_0x4d8d08,_0x29c85c,_0x4cf3ec){var _0x24a6c2=_0x29c85c[_0x1af3('0x29')];var _0x1e2b08=0xa;var _0x361b66=[_0x1af3('0x84'),_0x1af3('0x85'),_0x1af3('0x53'),'cross_join'];var _0xa08064={'SUM':_0x1af3('0x55'),'COUNT':_0x1af3('0x56'),'COUNT DISTINCT':_0x1af3('0x57'),'MAX':_0x1af3('0x58'),'MIN':_0x1af3('0x59'),'AVG':'AVG(%s)','GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x1af3('0x86'),'GROUP_CONCAT DESC':_0x1af3('0x87')};var _0x5a12ec={'SEC_TO_TIME':_0x1af3('0x5c'),'DATE':_0x1af3('0x5d'),'HOUR':_0x1af3('0x5e'),'ROUND':_0x1af3('0x5f'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x32fa01=function(_0x50348){return!_[_0x1af3('0x61')](['IS\x20NULL',_0x1af3('0x63'),_0x1af3('0x64'),'IS\x20NOT\x20EMPTY'],_0x50348);};var _0xfce05d=function(_0x1cfe80){if(!_0x1cfe80||!_0x1cfe80['rules'][_0x1af3('0x46')]){return'';}for(var _0x3e8f4b='(',_0x8e57f=0x0;_0x8e57f<_0x1cfe80['rules'][_0x1af3('0x46')];_0x8e57f+=0x1){_0x8e57f>0x0&&(_0x3e8f4b+='\x20'+_0x1cfe80[_0x1af3('0x66')]+'\x20');_0x3e8f4b+=_0x1cfe80[_0x1af3('0x65')][_0x8e57f][_0x1af3('0x67')]?_0xfce05d(_0x1cfe80[_0x1af3('0x65')][_0x8e57f]['group']):_0x1cfe80[_0x1af3('0x65')][_0x8e57f][_0x1af3('0x71')]+'\x20'+_0x1cfe80['rules'][_0x8e57f]['condition']+(_0x32fa01(_0x1cfe80[_0x1af3('0x65')][_0x8e57f]['condition'])?'\x20'+_0x1cfe80[_0x1af3('0x65')][_0x8e57f][_0x1af3('0x69')]:'');}return _0x3e8f4b+')';};var _0x33e018={'where':{'id':_0x4d8d08['id']}},_0x51336c,_0x48fd93,_0x299123,_0x4db220,_0x3feb3c;_0x33e018=_['merge']({},_0x33e018,_0x4cf3ec);return db[_0x1af3('0x2c')][_0x1af3('0x4e')](_0x33e018)[_0x1af3('0x23')](function(_0x399cf5){if(_0x399cf5){_0x51336c=_0x399cf5;return _0x399cf5[_0x1af3('0x6a')]();}return null;})[_0x1af3('0x23')](function(_0x2e7b3e){if(_0x2e7b3e){if(!_0x2e7b3e['length']){throw new db[(_0x1af3('0x88'))][(_0x1af3('0x89'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x48fd93=_0x2e7b3e;return db[_0x1af3('0x6b')][_0x1af3('0x42')]({'raw':!![]});}return null;})[_0x1af3('0x23')](function(_0x57bdaa){if(_0x57bdaa){_0x299123=_[_0x1af3('0x6c')](_0x57bdaa,'id');var _0x14b616;var _0x233fcc=squel[_0x1af3('0x6d')]();_0x233fcc[_0x1af3('0x8a')](_0x51336c[_0x1af3('0x6e')]);for(var _0x5e5e25=0x0;_0x5e5e25<_0x48fd93[_0x1af3('0x46')];_0x5e5e25+=0x1){_0x14b616=_0x48fd93[_0x5e5e25][_0x1af3('0x6f')]?_0x299123[_0x48fd93[_0x5e5e25]['MetricId']]['metric']:_0x48fd93[_0x5e5e25][_0x1af3('0x71')];_0x14b616=_0x48fd93[_0x5e5e25]['function']?_[_0x1af3('0x74')](_0xa08064[_0x48fd93[_0x5e5e25][_0x1af3('0x72')]],'%s',_0x14b616):_0x14b616;_0x14b616=_0x48fd93[_0x5e5e25][_0x1af3('0x73')]?_[_0x1af3('0x74')](_0x5a12ec[_0x48fd93[_0x5e5e25][_0x1af3('0x73')]],'%s',_0x14b616):_0x14b616;if(_0x48fd93[_0x5e5e25][_0x1af3('0x75')]){_0x233fcc['group'](_0x14b616);}_0x48fd93[_0x5e5e25][_0x1af3('0x76')]&&_0x233fcc[_0x1af3('0x3a')](_0x14b616,_0x48fd93[_0x5e5e25][_0x1af3('0x76')]==='DESC'?![]:!![]);_0x233fcc[_0x1af3('0x71')](_0x14b616,_0x48fd93[_0x5e5e25][_0x1af3('0x77')]||_0x14b616);}if(_0x51336c[_0x1af3('0x78')]){_0x51336c[_0x1af3('0x78')]=JSON['parse'](_0x51336c['joins']);for(var _0x5dab74=0x0;_0x5dab74<_0x51336c[_0x1af3('0x78')][_0x1af3('0x46')];_0x5dab74+=0x1){if(_0x51336c[_0x1af3('0x78')][_0x5dab74][_0x1af3('0x2f')]&&_['includes'](_0x361b66,_0x51336c[_0x1af3('0x78')][_0x5dab74][_0x1af3('0x2f')])&&_0x51336c[_0x1af3('0x78')][_0x5dab74][_0x1af3('0x7a')]&&_0x51336c['joins'][_0x5dab74][_0x1af3('0x7b')]&&_0x51336c[_0x1af3('0x78')][_0x5dab74][_0x1af3('0x8b')]){_0x233fcc[_0x51336c[_0x1af3('0x78')][_0x5dab74][_0x1af3('0x2f')]](_0x51336c[_0x1af3('0x78')][_0x5dab74]['foreignTable'],null,util[_0x1af3('0x73')](_0x1af3('0x7c'),_0x51336c['table'],_0x51336c['joins'][_0x5dab74]['parentKey'],_0x51336c[_0x1af3('0x78')][_0x5dab74][_0x1af3('0x7b')],_0x51336c[_0x1af3('0x78')][_0x5dab74][_0x1af3('0x8b')]));}}}if(_0x51336c['conditions']){_0x51336c[_0x1af3('0x7d')]=JSON[_0x1af3('0x79')](_0x51336c[_0x1af3('0x7d')]);_0x233fcc[_0x1af3('0x3c')](_0xfce05d(_0x51336c[_0x1af3('0x7d')][_0x1af3('0x67')]));}_0x3feb3c=_0x233fcc['clone']();_0x233fcc['limit'](_0x1e2b08);_0x233fcc[_0x1af3('0x1d')](0x0);return;}})[_0x1af3('0x23')](function(){if(_0x29c85c[_0x1af3('0x8c')]===_0x1af3('0x8d')){return null;}var _0x46997d=_[_0x1af3('0x48')](_0x29c85c,{'name':_0x29c85c[_0x1af3('0x8e')]||_0x29c85c[_0x1af3('0x29')]||_0x51336c[_0x1af3('0x29')],'basename':_0x24a6c2,'savename':util[_0x1af3('0x73')](_0x1af3('0x8f'),_0x29c85c[_0x1af3('0x29')]||_0x51336c[_0x1af3('0x29')],require(_0x1af3('0x90'))['generate'](0x4),_0x29c85c[_0x1af3('0x8c')]||_0x1af3('0x91')),'reportId':_0x51336c['id'],'reportType':'custom'});return db[_0x1af3('0x92')]['create'](_0x46997d,{'raw':!![]});})[_0x1af3('0x23')](function(_0x5abd6c){if(_0x51336c['table']===_0x1af3('0x93')){_0x3feb3c[_0x1af3('0x3c')](_0x51336c[_0x1af3('0x6e')]+_0x1af3('0x94'),_0x29c85c['startDate'],_0x29c85c['endDate']);}else{_0x3feb3c[_0x1af3('0x3c')](_0x51336c[_0x1af3('0x6e')]+_0x1af3('0x95'),_0x29c85c['startDate'],_0x29c85c[_0x1af3('0x96')]);}if(_0x5abd6c){logger['info'](_0x1af3('0x97'),_0x3feb3c[_0x1af3('0x80')]());require(_0x1af3('0x98'))[_0x1af3('0x99')](path['join'](__dirname,_0x1af3('0x9a'),_0x5abd6c['output']),[_0x5abd6c['id'],_0x3feb3c[_0x1af3('0x80')](),path[_0x1af3('0x84')](__dirname,'../../files/reports',_0x5abd6c[_0x1af3('0x9b')]),_0x24a6c2]);return _0x5abd6c;}else{var _0x2333d1=squel[_0x1af3('0x6d')]();_0x2333d1['from']('('+_0x3feb3c[_0x1af3('0x80')]()+')',_0x1af3('0x9c'));_0x2333d1['field'](_0x1af3('0x9d'),_0x1af3('0x1f'));_0x3feb3c[_0x1af3('0x39')](_0x29c85c[_0x1af3('0x39')]||_0x1e2b08);_0x3feb3c[_0x1af3('0x1d')](_0x29c85c[_0x1af3('0x1d')]||0x0);return dbH[_0x1af3('0x81')]['query'](_0x2333d1[_0x1af3('0x80')](),{'type':dbH[_0x1af3('0x81')][_0x1af3('0x82')][_0x1af3('0x83')]})[_0x1af3('0x23')](function(_0x3d1d85){if(!_0x3d1d85[_0x1af3('0x46')]){_0x4db220=0x0;}else{_0x4db220=_0x3d1d85[0x0][_0x1af3('0x1f')]||0x0;}return dbH[_0x1af3('0x81')][_0x1af3('0x32')](_0x3feb3c[_0x1af3('0x80')](),{'type':dbH[_0x1af3('0x81')][_0x1af3('0x82')]['SELECT']});})['then'](function(_0x466d1f){return{'rows':_0x466d1f||[],'count':_0x4db220};});}});}exports[_0x1af3('0x9e')]=function(_0x150b91,_0x51c27a){return runReport(_0x150b91['params'],_0x150b91['query'],_0x150b91[_0x1af3('0x40')])['then'](respondWithResult(_0x51c27a,null))['catch'](handleError(_0x51c27a,null));};exports[_0x1af3('0x9f')]=runReport;exports[_0x1af3('0x32')]=function(_0x5220d2,_0x24d994){var _0x2ff53e=0xa;var _0xe750b2=[_0x1af3('0x84'),_0x1af3('0x85'),_0x1af3('0x53'),_0x1af3('0x54')];var _0x54c395={'SUM':_0x1af3('0x55'),'COUNT':_0x1af3('0x56'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x1af3('0x58'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x1af3('0x5b'),'GROUP_CONCAT ASC':_0x1af3('0x86'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x295066={'SEC_TO_TIME':_0x1af3('0x5c'),'DATE':_0x1af3('0x5d'),'HOUR':_0x1af3('0x5e'),'ROUND':_0x1af3('0x5f'),'UNIX_TIMESTAMP':_0x1af3('0x60')};var _0x34e185=function(_0x3c1f1f){return!_['includes']([_0x1af3('0x62'),_0x1af3('0x63'),'IS\x20EMPTY',_0x1af3('0xa0')],_0x3c1f1f);};var _0x52df67=function(_0x42be5c){if(!_0x42be5c||!_0x42be5c[_0x1af3('0x65')][_0x1af3('0x46')]){return'';}for(var _0x594eaa='(',_0xe8f3cf=0x0;_0xe8f3cf<_0x42be5c[_0x1af3('0x65')][_0x1af3('0x46')];_0xe8f3cf+=0x1){_0xe8f3cf>0x0&&(_0x594eaa+='\x20'+_0x42be5c['operator']+'\x20');_0x594eaa+=_0x42be5c['rules'][_0xe8f3cf]['group']?_0x52df67(_0x42be5c['rules'][_0xe8f3cf][_0x1af3('0x67')]):_0x42be5c[_0x1af3('0x65')][_0xe8f3cf]['field']+'\x20'+_0x42be5c['rules'][_0xe8f3cf]['condition']+(_0x34e185(_0x42be5c[_0x1af3('0x65')][_0xe8f3cf][_0x1af3('0x68')])?'\x20'+_0x42be5c['rules'][_0xe8f3cf][_0x1af3('0x69')]:'');}return _0x594eaa+')';};var _0x594ea3={'where':{'id':_0x5220d2['params']['id']}},_0x4269a7,_0x56b964,_0x5bd08e,_0x3338a1,_0x31d35e;_0x594ea3=_[_0x1af3('0x48')]({},_0x594ea3,_0x5220d2[_0x1af3('0x40')]);return db[_0x1af3('0x2c')][_0x1af3('0x4e')](_0x594ea3)['then'](function(_0x330a3a){if(_0x330a3a){_0x4269a7=_0x330a3a;return _0x330a3a[_0x1af3('0x6a')]();}return null;})[_0x1af3('0x23')](function(_0x4f25cc){if(_0x4f25cc){if(!_0x4f25cc['length']){throw new db[(_0x1af3('0x88'))][(_0x1af3('0x89'))](_0x1af3('0xa1'),0x193);}_0x56b964=_0x4f25cc;return db[_0x1af3('0x6b')][_0x1af3('0x42')]({'raw':!![]});}return null;})['then'](function(_0x89f2d9){if(_0x89f2d9){_0x5bd08e=_[_0x1af3('0x6c')](_0x89f2d9,'id');var _0x24793e;var _0x15debf=squel['select']();_0x15debf[_0x1af3('0x8a')](_0x4269a7[_0x1af3('0x6e')]);for(var _0x1ef6b1=0x0;_0x1ef6b1<_0x56b964[_0x1af3('0x46')];_0x1ef6b1+=0x1){_0x24793e=_0x56b964[_0x1ef6b1][_0x1af3('0x6f')]?_0x5bd08e[_0x56b964[_0x1ef6b1]['MetricId']][_0x1af3('0x70')]:_0x56b964[_0x1ef6b1][_0x1af3('0x71')];_0x24793e=_0x56b964[_0x1ef6b1]['function']?_[_0x1af3('0x74')](_0x54c395[_0x56b964[_0x1ef6b1]['function']],'%s',_0x24793e):_0x24793e;_0x24793e=_0x56b964[_0x1ef6b1][_0x1af3('0x73')]?_[_0x1af3('0x74')](_0x295066[_0x56b964[_0x1ef6b1][_0x1af3('0x73')]],'%s',_0x24793e):_0x24793e;if(_0x56b964[_0x1ef6b1][_0x1af3('0x75')]){_0x15debf[_0x1af3('0x67')](_0x24793e);}_0x56b964[_0x1ef6b1]['orderBy']&&_0x15debf[_0x1af3('0x3a')](_0x24793e,_0x56b964[_0x1ef6b1][_0x1af3('0x76')]==='DESC'?![]:!![]);_0x15debf[_0x1af3('0x71')](_0x24793e,_0x56b964[_0x1ef6b1]['alias']||_0x24793e);}if(_0x4269a7[_0x1af3('0x78')]){_0x4269a7['joins']=JSON['parse'](_0x4269a7[_0x1af3('0x78')]);for(var _0x2007be=0x0;_0x2007be<_0x4269a7[_0x1af3('0x78')][_0x1af3('0x46')];_0x2007be+=0x1){if(_0x4269a7[_0x1af3('0x78')][_0x2007be][_0x1af3('0x2f')]&&_[_0x1af3('0x61')](_0xe750b2,_0x4269a7[_0x1af3('0x78')][_0x2007be]['type'])&&_0x4269a7[_0x1af3('0x78')][_0x2007be][_0x1af3('0x7a')]&&_0x4269a7['joins'][_0x2007be][_0x1af3('0x7b')]&&_0x4269a7['joins'][_0x2007be][_0x1af3('0x8b')]){_0x15debf[_0x4269a7[_0x1af3('0x78')][_0x2007be][_0x1af3('0x2f')]](_0x4269a7[_0x1af3('0x78')][_0x2007be]['foreignTable'],null,util[_0x1af3('0x73')]('%s.%s\x20=\x20%s.%s',_0x4269a7['table'],_0x4269a7[_0x1af3('0x78')][_0x2007be][_0x1af3('0x7a')],_0x4269a7[_0x1af3('0x78')][_0x2007be][_0x1af3('0x7b')],_0x4269a7[_0x1af3('0x78')][_0x2007be][_0x1af3('0x8b')]));}}}if(_0x4269a7['conditions']){_0x4269a7[_0x1af3('0x7d')]=JSON[_0x1af3('0x79')](_0x4269a7[_0x1af3('0x7d')]);_0x15debf[_0x1af3('0x3c')](_0x52df67(_0x4269a7[_0x1af3('0x7d')][_0x1af3('0x67')]));}_0x31d35e=_0x15debf[_0x1af3('0x7e')]();_0x15debf['limit'](_0x2ff53e);_0x15debf[_0x1af3('0x1d')](0x0);logger[_0x1af3('0xa2')](_0x1af3('0x7f'),_0x15debf[_0x1af3('0x80')]());return dbH[_0x1af3('0x81')]['query'](_0x15debf[_0x1af3('0x80')](),{'type':dbH[_0x1af3('0x81')]['QueryTypes'][_0x1af3('0x83')]});}})[_0x1af3('0x23')](function(){return{'sql':_0x31d35e[_0x1af3('0x80')]()};})[_0x1af3('0x23')](respondWithResult(_0x24d994,null))[_0x1af3('0x49')](handleError(_0x24d994,null));};
\ No newline at end of file
+var _0x8b13=['model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','where','pick','filter','VIRTUAL','options','includeAll','include','AnalyticCustomReport','findAll','rows','params','length','merge','find','create','user','role','UserProfileSection','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','join','right_join','cross_join','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','table','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignTable','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','left_join','SUM(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','DATE(%s)','ValidationErrorItem','from','foreignKey','%s.%s\x20=\x20%s.%s','output','fullPath','%s-%s.%s','generate','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','fork','countTable','COUNT(*)','run','eml-format','rimraf','zip-dir','mustache','path','sox','ejs','fs-extra','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','count','set','Content-Range','json','apply','reject','save','update','then','get','CustomReports','UserProfileResource','stack','name','send','map','rawAttributes','fieldName','type','key'];(function(_0x5299e1,_0x535b73){var _0x4e7bb4=function(_0x3b9f37){while(--_0x3b9f37){_0x5299e1['push'](_0x5299e1['shift']());}};_0x4e7bb4(++_0x535b73);}(_0x8b13,0x1aa));var _0x38b1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8b13[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x38b1('0x0'));var rimraf=require(_0x38b1('0x1'));var zipdir=require(_0x38b1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x38b1('0x3'));var util=require('util');var path=require(_0x38b1('0x4'));var sox=require(_0x38b1('0x5'));var csv=require('to-csv');var ejs=require(_0x38b1('0x6'));var fs=require('fs');var fs_extra=require(_0x38b1('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x38b1('0x8'));var deskjs=require(_0x38b1('0x9'));var toCsv=require(_0x38b1('0xa'));var querystring=require(_0x38b1('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x38b1('0xc'));var qs=require(_0x38b1('0xd'));var as=require(_0x38b1('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x38b1('0xf'))(_0x38b1('0x10'));var utils=require(_0x38b1('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x38b1('0x12'));var db=require('../../mysqldb')['db'];var dbH=require(_0x38b1('0x13'))['dbH'];function respondWithStatusCode(_0x2e6d6d,_0x25067d){_0x25067d=_0x25067d||0xcc;return function(_0x235cce){if(_0x235cce){return _0x2e6d6d[_0x38b1('0x14')](_0x25067d);}return _0x2e6d6d[_0x38b1('0x15')](_0x25067d)[_0x38b1('0x16')]();};}function respondWithResult(_0x4f322f,_0xeaf57d){_0xeaf57d=_0xeaf57d||0xc8;return function(_0x5955c8){if(_0x5955c8){return _0x4f322f['status'](_0xeaf57d)['json'](_0x5955c8);}};}function respondWithFilteredResult(_0x19c8be,_0x596b75){return function(_0xf7d0ba){if(_0xf7d0ba){var _0x3198cf=typeof _0x596b75[_0x38b1('0x17')]==='undefined'&&typeof _0x596b75[_0x38b1('0x18')]==='undefined';var _0x26821c=_0xf7d0ba[_0x38b1('0x19')];var _0x3fd365=_0x3198cf?0x0:_0x596b75[_0x38b1('0x17')];var _0x5b0da7=_0x3198cf?_0xf7d0ba[_0x38b1('0x19')]:_0x596b75[_0x38b1('0x17')]+_0x596b75[_0x38b1('0x18')];var _0x406e59;if(_0x5b0da7>=_0x26821c){_0x5b0da7=_0x26821c;_0x406e59=0xc8;}else{_0x406e59=0xce;}_0x19c8be['status'](_0x406e59);return _0x19c8be[_0x38b1('0x1a')](_0x38b1('0x1b'),_0x3fd365+'-'+_0x5b0da7+'/'+_0x26821c)[_0x38b1('0x1c')](_0xf7d0ba);}return null;};}function patchUpdates(_0x950585){return function(_0x5275a1){try{jsonpatch[_0x38b1('0x1d')](_0x5275a1,_0x950585,!![]);}catch(_0x220bcd){return BPromise[_0x38b1('0x1e')](_0x220bcd);}return _0x5275a1[_0x38b1('0x1f')]();};}function saveUpdates(_0x2545df,_0x2da1d8){return function(_0x2f4994){if(_0x2f4994){return _0x2f4994[_0x38b1('0x20')](_0x2545df)[_0x38b1('0x21')](function(_0xe0bfff){return _0xe0bfff;});}return null;};}function removeEntity(_0x4c4672,_0x4b0358){return function(_0x52590d){if(_0x52590d){return _0x52590d['destroy']()[_0x38b1('0x21')](function(){var _0x3483b3=_0x52590d[_0x38b1('0x22')]({'plain':!![]});var _0x2fbf2f=_0x38b1('0x23');return db[_0x38b1('0x24')]['destroy']({'where':{'type':_0x2fbf2f,'resourceId':_0x3483b3['id']}})['then'](function(){return _0x52590d;});})['then'](function(){_0x4c4672[_0x38b1('0x15')](0xcc)[_0x38b1('0x16')]();});}};}function handleEntityNotFound(_0x4a96cc,_0x4959e1){return function(_0x22535d){if(!_0x22535d){_0x4a96cc[_0x38b1('0x14')](0x194);}return _0x22535d;};}function handleError(_0x3bf05c,_0x2cb29b){_0x2cb29b=_0x2cb29b||0x1f4;return function(_0x59c270){logger['error'](_0x59c270[_0x38b1('0x25')]);if(_0x59c270[_0x38b1('0x26')]){delete _0x59c270['name'];}_0x3bf05c[_0x38b1('0x15')](_0x2cb29b)[_0x38b1('0x27')](_0x59c270);};}exports['index']=function(_0x2359d0,_0x4ea03c){var _0x4f8dbd={},_0x4b9a10={},_0x38c0cb={'count':0x0,'rows':[]};var _0x1fcda1=_[_0x38b1('0x28')](db['AnalyticCustomReport'][_0x38b1('0x29')],function(_0x1f2492){return{'name':_0x1f2492[_0x38b1('0x2a')],'type':_0x1f2492[_0x38b1('0x2b')][_0x38b1('0x2c')]};});_0x4b9a10[_0x38b1('0x2d')]=_[_0x38b1('0x28')](_0x1fcda1,_0x38b1('0x26'));_0x4b9a10[_0x38b1('0x2e')]=_[_0x38b1('0x2f')](_0x2359d0[_0x38b1('0x2e')]);_0x4b9a10[_0x38b1('0x30')]=_['intersection'](_0x4b9a10[_0x38b1('0x2d')],_0x4b9a10[_0x38b1('0x2e')]);_0x4f8dbd[_0x38b1('0x31')]=_[_0x38b1('0x32')](_0x4b9a10[_0x38b1('0x2d')],qs[_0x38b1('0x33')](_0x2359d0[_0x38b1('0x2e')][_0x38b1('0x33')]));_0x4f8dbd['attributes']=_0x4f8dbd[_0x38b1('0x31')]['length']?_0x4f8dbd['attributes']:_0x4b9a10[_0x38b1('0x2d')];if(!_0x2359d0[_0x38b1('0x2e')][_0x38b1('0x34')](_0x38b1('0x35'))){_0x4f8dbd[_0x38b1('0x18')]=qs[_0x38b1('0x18')](_0x2359d0['query']['limit']);_0x4f8dbd[_0x38b1('0x17')]=qs[_0x38b1('0x17')](_0x2359d0['query']['offset']);}_0x4f8dbd[_0x38b1('0x36')]=qs['sort'](_0x2359d0[_0x38b1('0x2e')]['sort']);_0x4f8dbd[_0x38b1('0x37')]=qs[_0x38b1('0x30')](_[_0x38b1('0x38')](_0x2359d0[_0x38b1('0x2e')],_0x4b9a10[_0x38b1('0x30')]),_0x1fcda1);if(_0x2359d0['query'][_0x38b1('0x39')]){_0x4f8dbd[_0x38b1('0x37')]=_['merge'](_0x4f8dbd[_0x38b1('0x37')],{'$or':_[_0x38b1('0x28')](_0x1fcda1,function(_0x2bb7ba){if(_0x2bb7ba['type']!==_0x38b1('0x3a')){var _0x584487={};_0x584487[_0x2bb7ba[_0x38b1('0x26')]]={'$like':'%'+_0x2359d0[_0x38b1('0x2e')][_0x38b1('0x39')]+'%'};return _0x584487;}})});}_0x4f8dbd=_['merge']({},_0x4f8dbd,_0x2359d0[_0x38b1('0x3b')]);var _0x41d241={'where':_0x4f8dbd[_0x38b1('0x37')]};return db['AnalyticCustomReport'][_0x38b1('0x19')](_0x41d241)[_0x38b1('0x21')](function(_0xaf5e33){_0x38c0cb[_0x38b1('0x19')]=_0xaf5e33;if(_0x2359d0[_0x38b1('0x2e')][_0x38b1('0x3c')]){_0x4f8dbd[_0x38b1('0x3d')]=[{'all':!![]}];}return db[_0x38b1('0x3e')][_0x38b1('0x3f')](_0x4f8dbd);})[_0x38b1('0x21')](function(_0x4b8949){_0x38c0cb[_0x38b1('0x40')]=_0x4b8949;return _0x38c0cb;})[_0x38b1('0x21')](respondWithFilteredResult(_0x4ea03c,_0x4f8dbd))['catch'](handleError(_0x4ea03c,null));};exports['show']=function(_0x48b307,_0xc73ff6){var _0x5e4a1a={'raw':![],'where':{'id':_0x48b307[_0x38b1('0x41')]['id']}},_0x2d5cd2={};_0x2d5cd2[_0x38b1('0x2d')]=_['keys'](db[_0x38b1('0x3e')][_0x38b1('0x29')]);_0x2d5cd2[_0x38b1('0x2e')]=_['keys'](_0x48b307[_0x38b1('0x2e')]);_0x2d5cd2['filters']=_['intersection'](_0x2d5cd2[_0x38b1('0x2d')],_0x2d5cd2[_0x38b1('0x2e')]);_0x5e4a1a[_0x38b1('0x31')]=_['intersection'](_0x2d5cd2[_0x38b1('0x2d')],qs[_0x38b1('0x33')](_0x48b307[_0x38b1('0x2e')][_0x38b1('0x33')]));_0x5e4a1a[_0x38b1('0x31')]=_0x5e4a1a['attributes'][_0x38b1('0x42')]?_0x5e4a1a[_0x38b1('0x31')]:_0x2d5cd2['model'];if(_0x48b307[_0x38b1('0x2e')][_0x38b1('0x3c')]){_0x5e4a1a['include']=[{'all':!![]}];}_0x5e4a1a=_[_0x38b1('0x43')]({},_0x5e4a1a,_0x48b307['options']);return db[_0x38b1('0x3e')][_0x38b1('0x44')](_0x5e4a1a)[_0x38b1('0x21')](handleEntityNotFound(_0xc73ff6,null))[_0x38b1('0x21')](respondWithResult(_0xc73ff6,null))['catch'](handleError(_0xc73ff6,null));};exports[_0x38b1('0x45')]=function(_0x2d8b0d,_0x5b394f){return db[_0x38b1('0x3e')]['create'](_0x2d8b0d['body'],{})[_0x38b1('0x21')](function(_0x7fccc3){var _0x4e69b9=_0x2d8b0d[_0x38b1('0x46')][_0x38b1('0x22')]({'plain':!![]});if(!_0x4e69b9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4e69b9[_0x38b1('0x47')]===_0x38b1('0x46')){var _0x3862ff=_0x7fccc3[_0x38b1('0x22')]({'plain':!![]});var _0x1c1311='Reports';return db[_0x38b1('0x48')][_0x38b1('0x44')]({'where':{'name':_0x1c1311,'userProfileId':_0x4e69b9[_0x38b1('0x49')]},'raw':!![]})['then'](function(_0x5d223a){if(_0x5d223a&&_0x5d223a[_0x38b1('0x4a')]===0x0){return db[_0x38b1('0x24')][_0x38b1('0x45')]({'name':_0x3862ff[_0x38b1('0x26')],'resourceId':_0x3862ff['id'],'type':_0x38b1('0x23'),'sectionId':_0x5d223a['id']},{})['then'](function(){return _0x7fccc3;});}else{return _0x7fccc3;}})[_0x38b1('0x4b')](function(_0x557c1f){logger['error'](_0x38b1('0x4c'),_0x557c1f);throw _0x557c1f;});}return _0x7fccc3;})[_0x38b1('0x21')](respondWithResult(_0x5b394f,0xc9))[_0x38b1('0x4b')](handleError(_0x5b394f,null));};exports[_0x38b1('0x20')]=function(_0x171496,_0x405c56){if(_0x171496[_0x38b1('0x4d')]['id']){delete _0x171496[_0x38b1('0x4d')]['id'];}return db[_0x38b1('0x3e')][_0x38b1('0x44')]({'where':{'id':_0x171496['params']['id']}})[_0x38b1('0x21')](handleEntityNotFound(_0x405c56,null))[_0x38b1('0x21')](saveUpdates(_0x171496[_0x38b1('0x4d')],null))[_0x38b1('0x21')](respondWithResult(_0x405c56,null))['catch'](handleError(_0x405c56,null));};exports[_0x38b1('0x4e')]=function(_0x47273f,_0x2249b9){return db[_0x38b1('0x3e')]['find']({'where':{'id':_0x47273f[_0x38b1('0x41')]['id']}})[_0x38b1('0x21')](handleEntityNotFound(_0x2249b9,null))[_0x38b1('0x21')](removeEntity(_0x2249b9,null))['catch'](handleError(_0x2249b9,null));};exports['preview']=function(_0x46395b,_0x5d0585){var _0x5e0ec4=0xa;var _0x2cb113=[_0x38b1('0x4f'),'left_join',_0x38b1('0x50'),_0x38b1('0x51')];var _0x5d11d8={'SUM':'SUM(%s)','COUNT':_0x38b1('0x52'),'COUNT DISTINCT':_0x38b1('0x53'),'MAX':_0x38b1('0x54'),'MIN':_0x38b1('0x55'),'AVG':_0x38b1('0x56'),'GROUP_CONCAT':_0x38b1('0x57'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x38b1('0x58')};var _0xf6de9d={'SEC_TO_TIME':_0x38b1('0x59'),'DATE':'DATE(%s)','HOUR':_0x38b1('0x5a'),'ROUND':_0x38b1('0x5b'),'UNIX_TIMESTAMP':_0x38b1('0x5c')};var _0x5d0755=function(_0x5dd776){return!_[_0x38b1('0x5d')]([_0x38b1('0x5e'),_0x38b1('0x5f'),_0x38b1('0x60'),_0x38b1('0x61')],_0x5dd776);};var _0x464102=function(_0x27a029){if(!_0x27a029||!_0x27a029[_0x38b1('0x62')][_0x38b1('0x42')]){return'';}for(var _0x5a007f='(',_0x4b6ffc=0x0;_0x4b6ffc<_0x27a029['rules'][_0x38b1('0x42')];_0x4b6ffc+=0x1){_0x4b6ffc>0x0&&(_0x5a007f+='\x20'+_0x27a029[_0x38b1('0x63')]+'\x20');_0x5a007f+=_0x27a029[_0x38b1('0x62')][_0x4b6ffc][_0x38b1('0x64')]?_0x464102(_0x27a029[_0x38b1('0x62')][_0x4b6ffc]['group']):_0x27a029[_0x38b1('0x62')][_0x4b6ffc][_0x38b1('0x65')]+'\x20'+_0x27a029[_0x38b1('0x62')][_0x4b6ffc][_0x38b1('0x66')]+(_0x5d0755(_0x27a029[_0x38b1('0x62')][_0x4b6ffc][_0x38b1('0x66')])?'\x20'+_0x27a029[_0x38b1('0x62')][_0x4b6ffc][_0x38b1('0x67')]:'');}return _0x5a007f+')';};var _0x365399={'where':{'id':_0x46395b['params']['id']}},_0x1365d7,_0x483e81,_0x4f82b,_0x32a290,_0x547062;_0x365399=_[_0x38b1('0x43')]({},_0x365399,_0x46395b[_0x38b1('0x3b')]);return db['AnalyticCustomReport'][_0x38b1('0x44')](_0x365399)[_0x38b1('0x21')](function(_0xf27b2c){if(_0xf27b2c){_0x1365d7=_0xf27b2c;return _0xf27b2c[_0x38b1('0x68')]();}return null;})[_0x38b1('0x21')](function(_0x2fe0c7){if(_0x2fe0c7){if(!_0x2fe0c7[_0x38b1('0x42')]){throw new db[(_0x38b1('0x69'))]['ValidationErrorItem'](_0x38b1('0x6a'),0x193);}_0x483e81=_0x2fe0c7;return db[_0x38b1('0x6b')][_0x38b1('0x3f')]({'raw':!![]});}return null;})[_0x38b1('0x21')](function(_0x878825){if(_0x878825){_0x4f82b=_[_0x38b1('0x6c')](_0x878825,'id');var _0x15f59a;var _0x2f2f23=squel[_0x38b1('0x6d')]();_0x2f2f23['from'](_0x1365d7[_0x38b1('0x6e')]);for(var _0x4f7e77=0x0;_0x4f7e77<_0x483e81[_0x38b1('0x42')];_0x4f7e77+=0x1){_0x15f59a=_0x483e81[_0x4f7e77][_0x38b1('0x6f')]?_0x4f82b[_0x483e81[_0x4f7e77][_0x38b1('0x6f')]][_0x38b1('0x70')]:_0x483e81[_0x4f7e77][_0x38b1('0x65')];_0x15f59a=_0x483e81[_0x4f7e77][_0x38b1('0x71')]?_[_0x38b1('0x72')](_0x5d11d8[_0x483e81[_0x4f7e77][_0x38b1('0x71')]],'%s',_0x15f59a):_0x15f59a;_0x15f59a=_0x483e81[_0x4f7e77]['format']?_[_0x38b1('0x72')](_0xf6de9d[_0x483e81[_0x4f7e77][_0x38b1('0x73')]],'%s',_0x15f59a):_0x15f59a;if(_0x483e81[_0x4f7e77][_0x38b1('0x74')]){_0x2f2f23[_0x38b1('0x64')](_0x15f59a);}_0x483e81[_0x4f7e77][_0x38b1('0x75')]&&_0x2f2f23[_0x38b1('0x36')](_0x15f59a,_0x483e81[_0x4f7e77][_0x38b1('0x75')]===_0x38b1('0x76')?![]:!![]);_0x2f2f23[_0x38b1('0x65')](_0x15f59a,_0x483e81[_0x4f7e77][_0x38b1('0x77')]||_0x15f59a);}if(_0x1365d7[_0x38b1('0x78')]){_0x1365d7[_0x38b1('0x78')]=JSON[_0x38b1('0x79')](_0x1365d7[_0x38b1('0x78')]);for(var _0x115419=0x0;_0x115419<_0x1365d7['joins']['length'];_0x115419+=0x1){if(_0x1365d7[_0x38b1('0x78')][_0x115419][_0x38b1('0x2b')]&&_[_0x38b1('0x5d')](_0x2cb113,_0x1365d7[_0x38b1('0x78')][_0x115419]['type'])&&_0x1365d7[_0x38b1('0x78')][_0x115419][_0x38b1('0x7a')]&&_0x1365d7[_0x38b1('0x78')][_0x115419][_0x38b1('0x7b')]&&_0x1365d7[_0x38b1('0x78')][_0x115419]['foreignKey']){_0x2f2f23[_0x1365d7[_0x38b1('0x78')][_0x115419][_0x38b1('0x2b')]](_0x1365d7[_0x38b1('0x78')][_0x115419]['foreignTable'],null,util[_0x38b1('0x73')]('%s.%s\x20=\x20%s.%s',_0x1365d7[_0x38b1('0x6e')],_0x1365d7[_0x38b1('0x78')][_0x115419]['parentKey'],_0x1365d7['joins'][_0x115419][_0x38b1('0x7b')],_0x1365d7['joins'][_0x115419]['foreignKey']));}}}if(_0x1365d7[_0x38b1('0x7c')]){_0x1365d7[_0x38b1('0x7c')]=JSON[_0x38b1('0x79')](_0x1365d7['conditions']);_0x2f2f23[_0x38b1('0x37')](_0x464102(_0x1365d7[_0x38b1('0x7c')][_0x38b1('0x64')]));}_0x547062=_0x2f2f23[_0x38b1('0x7d')]();_0x2f2f23[_0x38b1('0x18')](_0x5e0ec4);_0x2f2f23[_0x38b1('0x17')](0x0);logger[_0x38b1('0x7e')](_0x38b1('0x7f'),_0x2f2f23[_0x38b1('0x80')]());return dbH[_0x38b1('0x81')]['query'](_0x2f2f23[_0x38b1('0x80')](),{'type':dbH[_0x38b1('0x81')][_0x38b1('0x82')][_0x38b1('0x83')]});}})['then'](respondWithResult(_0x5d0585,null))['catch'](handleError(_0x5d0585,null));};function runReport(_0x357a07,_0x2c5291,_0x2a26cb){var _0x9d9355=_0x2c5291['name'];var _0x150dbf=0xa;var _0x1b6657=[_0x38b1('0x4f'),_0x38b1('0x84'),_0x38b1('0x50'),_0x38b1('0x51')];var _0x322a77={'SUM':_0x38b1('0x85'),'COUNT':_0x38b1('0x52'),'COUNT DISTINCT':_0x38b1('0x53'),'MAX':_0x38b1('0x54'),'MIN':_0x38b1('0x55'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x38b1('0x57'),'GROUP_CONCAT ASC':_0x38b1('0x86'),'GROUP_CONCAT DESC':_0x38b1('0x58')};var _0x4a05c0={'SEC_TO_TIME':_0x38b1('0x59'),'DATE':_0x38b1('0x87'),'HOUR':'HOUR(%s)','ROUND':_0x38b1('0x5b'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x20f1d6=function(_0x95f1f9){return!_[_0x38b1('0x5d')](['IS\x20NULL',_0x38b1('0x5f'),_0x38b1('0x60'),'IS\x20NOT\x20EMPTY'],_0x95f1f9);};var _0x2ba314=function(_0x5e9af6){if(!_0x5e9af6||!_0x5e9af6['rules'][_0x38b1('0x42')]){return'';}for(var _0x34a6be='(',_0x2a6452=0x0;_0x2a6452<_0x5e9af6[_0x38b1('0x62')]['length'];_0x2a6452+=0x1){_0x2a6452>0x0&&(_0x34a6be+='\x20'+_0x5e9af6[_0x38b1('0x63')]+'\x20');_0x34a6be+=_0x5e9af6['rules'][_0x2a6452][_0x38b1('0x64')]?_0x2ba314(_0x5e9af6[_0x38b1('0x62')][_0x2a6452][_0x38b1('0x64')]):_0x5e9af6[_0x38b1('0x62')][_0x2a6452][_0x38b1('0x65')]+'\x20'+_0x5e9af6[_0x38b1('0x62')][_0x2a6452][_0x38b1('0x66')]+(_0x20f1d6(_0x5e9af6[_0x38b1('0x62')][_0x2a6452][_0x38b1('0x66')])?'\x20'+_0x5e9af6['rules'][_0x2a6452]['value']:'');}return _0x34a6be+')';};var _0x360d0e={'where':{'id':_0x357a07['id']}},_0x4c0236,_0x10460b,_0x2d0785,_0x18cc99,_0x1a764d;_0x360d0e=_[_0x38b1('0x43')]({},_0x360d0e,_0x2a26cb);return db[_0x38b1('0x3e')][_0x38b1('0x44')](_0x360d0e)['then'](function(_0x3c6bc1){if(_0x3c6bc1){_0x4c0236=_0x3c6bc1;return _0x3c6bc1[_0x38b1('0x68')]();}return null;})['then'](function(_0x51a4a9){if(_0x51a4a9){if(!_0x51a4a9[_0x38b1('0x42')]){throw new db[(_0x38b1('0x69'))][(_0x38b1('0x88'))](_0x38b1('0x6a'),0x193);}_0x10460b=_0x51a4a9;return db[_0x38b1('0x6b')][_0x38b1('0x3f')]({'raw':!![]});}return null;})[_0x38b1('0x21')](function(_0x41d351){if(_0x41d351){_0x2d0785=_[_0x38b1('0x6c')](_0x41d351,'id');var _0x114d93;var _0x48e128=squel[_0x38b1('0x6d')]();_0x48e128[_0x38b1('0x89')](_0x4c0236[_0x38b1('0x6e')]);for(var _0x290b7c=0x0;_0x290b7c<_0x10460b[_0x38b1('0x42')];_0x290b7c+=0x1){_0x114d93=_0x10460b[_0x290b7c][_0x38b1('0x6f')]?_0x2d0785[_0x10460b[_0x290b7c][_0x38b1('0x6f')]][_0x38b1('0x70')]:_0x10460b[_0x290b7c][_0x38b1('0x65')];_0x114d93=_0x10460b[_0x290b7c]['function']?_[_0x38b1('0x72')](_0x322a77[_0x10460b[_0x290b7c]['function']],'%s',_0x114d93):_0x114d93;_0x114d93=_0x10460b[_0x290b7c][_0x38b1('0x73')]?_[_0x38b1('0x72')](_0x4a05c0[_0x10460b[_0x290b7c][_0x38b1('0x73')]],'%s',_0x114d93):_0x114d93;if(_0x10460b[_0x290b7c][_0x38b1('0x74')]){_0x48e128[_0x38b1('0x64')](_0x114d93);}_0x10460b[_0x290b7c][_0x38b1('0x75')]&&_0x48e128[_0x38b1('0x36')](_0x114d93,_0x10460b[_0x290b7c][_0x38b1('0x75')]==='DESC'?![]:!![]);_0x48e128[_0x38b1('0x65')](_0x114d93,_0x10460b[_0x290b7c][_0x38b1('0x77')]||_0x114d93);}if(_0x4c0236[_0x38b1('0x78')]){_0x4c0236[_0x38b1('0x78')]=JSON[_0x38b1('0x79')](_0x4c0236['joins']);for(var _0x5148c2=0x0;_0x5148c2<_0x4c0236['joins'][_0x38b1('0x42')];_0x5148c2+=0x1){if(_0x4c0236['joins'][_0x5148c2][_0x38b1('0x2b')]&&_[_0x38b1('0x5d')](_0x1b6657,_0x4c0236[_0x38b1('0x78')][_0x5148c2][_0x38b1('0x2b')])&&_0x4c0236[_0x38b1('0x78')][_0x5148c2][_0x38b1('0x7a')]&&_0x4c0236['joins'][_0x5148c2]['foreignTable']&&_0x4c0236[_0x38b1('0x78')][_0x5148c2][_0x38b1('0x8a')]){_0x48e128[_0x4c0236[_0x38b1('0x78')][_0x5148c2][_0x38b1('0x2b')]](_0x4c0236[_0x38b1('0x78')][_0x5148c2][_0x38b1('0x7b')],null,util['format'](_0x38b1('0x8b'),_0x4c0236[_0x38b1('0x6e')],_0x4c0236[_0x38b1('0x78')][_0x5148c2][_0x38b1('0x7a')],_0x4c0236[_0x38b1('0x78')][_0x5148c2][_0x38b1('0x7b')],_0x4c0236[_0x38b1('0x78')][_0x5148c2][_0x38b1('0x8a')]));}}}if(_0x4c0236['conditions']){_0x4c0236[_0x38b1('0x7c')]=JSON[_0x38b1('0x79')](_0x4c0236[_0x38b1('0x7c')]);_0x48e128['where'](_0x2ba314(_0x4c0236['conditions']['group']));}_0x1a764d=_0x48e128[_0x38b1('0x7d')]();_0x48e128[_0x38b1('0x18')](_0x150dbf);_0x48e128[_0x38b1('0x17')](0x0);return;}})[_0x38b1('0x21')](function(){if(_0x2c5291[_0x38b1('0x8c')]==='web'){return null;}var _0x2e53db=_[_0x38b1('0x43')](_0x2c5291,{'name':_0x2c5291[_0x38b1('0x8d')]||_0x2c5291[_0x38b1('0x26')]||_0x4c0236[_0x38b1('0x26')],'basename':_0x9d9355,'savename':util['format'](_0x38b1('0x8e'),_0x2c5291[_0x38b1('0x26')]||_0x4c0236[_0x38b1('0x26')],require('randomstring')[_0x38b1('0x8f')](0x4),_0x2c5291[_0x38b1('0x8c')]||'csv'),'reportId':_0x4c0236['id'],'reportType':_0x38b1('0x90')});return db[_0x38b1('0x91')][_0x38b1('0x45')](_0x2e53db,{'raw':!![]});})[_0x38b1('0x21')](function(_0x51e5f9){if(_0x4c0236[_0x38b1('0x6e')]===_0x38b1('0x92')){_0x1a764d['where'](_0x4c0236[_0x38b1('0x6e')]+_0x38b1('0x93'),_0x2c5291[_0x38b1('0x94')],_0x2c5291[_0x38b1('0x95')]);}else{_0x1a764d['where'](_0x4c0236[_0x38b1('0x6e')]+_0x38b1('0x96'),_0x2c5291[_0x38b1('0x94')],_0x2c5291['endDate']);}if(_0x51e5f9){logger[_0x38b1('0x97')](_0x38b1('0x98'),_0x1a764d['toString']());require('child_process')[_0x38b1('0x99')](path['join'](__dirname,'../../components/export/',_0x51e5f9[_0x38b1('0x8c')]),[_0x51e5f9['id'],_0x1a764d[_0x38b1('0x80')](),path['join'](__dirname,'../../files/reports',_0x51e5f9['savename']),_0x9d9355]);return _0x51e5f9;}else{var _0x5ad657=squel['select']();_0x5ad657['from']('('+_0x1a764d[_0x38b1('0x80')]()+')',_0x38b1('0x9a'));_0x5ad657['field'](_0x38b1('0x9b'),'count');_0x1a764d[_0x38b1('0x18')](_0x2c5291[_0x38b1('0x18')]||_0x150dbf);_0x1a764d['offset'](_0x2c5291[_0x38b1('0x17')]||0x0);return dbH[_0x38b1('0x81')]['query'](_0x5ad657[_0x38b1('0x80')](),{'type':dbH[_0x38b1('0x81')]['QueryTypes'][_0x38b1('0x83')]})[_0x38b1('0x21')](function(_0x436a6e){if(!_0x436a6e[_0x38b1('0x42')]){_0x18cc99=0x0;}else{_0x18cc99=_0x436a6e[0x0][_0x38b1('0x19')]||0x0;}return dbH[_0x38b1('0x81')]['query'](_0x1a764d[_0x38b1('0x80')](),{'type':dbH['sequelize']['QueryTypes'][_0x38b1('0x83')]});})['then'](function(_0x5df4fb){return{'rows':_0x5df4fb||[],'count':_0x18cc99};});}});}exports[_0x38b1('0x9c')]=function(_0x543685,_0x15d509){return runReport(_0x543685[_0x38b1('0x41')],_0x543685[_0x38b1('0x2e')],_0x543685['options'])[_0x38b1('0x21')](respondWithResult(_0x15d509,null))[_0x38b1('0x4b')](handleError(_0x15d509,null));};exports['runReport']=runReport;exports['query']=function(_0xe12e4,_0x347679){var _0x46ef3d=0xa;var _0x382e0a=[_0x38b1('0x4f'),_0x38b1('0x84'),_0x38b1('0x50'),_0x38b1('0x51')];var _0x2e194a={'SUM':_0x38b1('0x85'),'COUNT':_0x38b1('0x52'),'COUNT DISTINCT':_0x38b1('0x53'),'MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0x38b1('0x57'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x4a3817={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x38b1('0x87'),'HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x38b1('0x5c')};var _0x208134=function(_0x3989d3){return!_['includes']([_0x38b1('0x5e'),_0x38b1('0x5f'),_0x38b1('0x60'),_0x38b1('0x61')],_0x3989d3);};var _0x553339=function(_0xb46dc7){if(!_0xb46dc7||!_0xb46dc7[_0x38b1('0x62')][_0x38b1('0x42')]){return'';}for(var _0x52a79d='(',_0x41288e=0x0;_0x41288e<_0xb46dc7['rules'][_0x38b1('0x42')];_0x41288e+=0x1){_0x41288e>0x0&&(_0x52a79d+='\x20'+_0xb46dc7[_0x38b1('0x63')]+'\x20');_0x52a79d+=_0xb46dc7[_0x38b1('0x62')][_0x41288e][_0x38b1('0x64')]?_0x553339(_0xb46dc7['rules'][_0x41288e]['group']):_0xb46dc7[_0x38b1('0x62')][_0x41288e][_0x38b1('0x65')]+'\x20'+_0xb46dc7[_0x38b1('0x62')][_0x41288e][_0x38b1('0x66')]+(_0x208134(_0xb46dc7['rules'][_0x41288e][_0x38b1('0x66')])?'\x20'+_0xb46dc7[_0x38b1('0x62')][_0x41288e][_0x38b1('0x67')]:'');}return _0x52a79d+')';};var _0x456826={'where':{'id':_0xe12e4[_0x38b1('0x41')]['id']}},_0x2102b3,_0x5a7843,_0x503c86,_0x36a588,_0x14dba4;_0x456826=_[_0x38b1('0x43')]({},_0x456826,_0xe12e4['options']);return db[_0x38b1('0x3e')]['find'](_0x456826)['then'](function(_0x4f27ed){if(_0x4f27ed){_0x2102b3=_0x4f27ed;return _0x4f27ed[_0x38b1('0x68')]();}return null;})[_0x38b1('0x21')](function(_0x1734f7){if(_0x1734f7){if(!_0x1734f7[_0x38b1('0x42')]){throw new db[(_0x38b1('0x69'))][(_0x38b1('0x88'))](_0x38b1('0x6a'),0x193);}_0x5a7843=_0x1734f7;return db['AnalyticMetric'][_0x38b1('0x3f')]({'raw':!![]});}return null;})['then'](function(_0x3f32b1){if(_0x3f32b1){_0x503c86=_[_0x38b1('0x6c')](_0x3f32b1,'id');var _0x3542a7;var _0x48cc56=squel[_0x38b1('0x6d')]();_0x48cc56[_0x38b1('0x89')](_0x2102b3[_0x38b1('0x6e')]);for(var _0x436954=0x0;_0x436954<_0x5a7843[_0x38b1('0x42')];_0x436954+=0x1){_0x3542a7=_0x5a7843[_0x436954][_0x38b1('0x6f')]?_0x503c86[_0x5a7843[_0x436954][_0x38b1('0x6f')]][_0x38b1('0x70')]:_0x5a7843[_0x436954][_0x38b1('0x65')];_0x3542a7=_0x5a7843[_0x436954]['function']?_[_0x38b1('0x72')](_0x2e194a[_0x5a7843[_0x436954]['function']],'%s',_0x3542a7):_0x3542a7;_0x3542a7=_0x5a7843[_0x436954][_0x38b1('0x73')]?_[_0x38b1('0x72')](_0x4a3817[_0x5a7843[_0x436954][_0x38b1('0x73')]],'%s',_0x3542a7):_0x3542a7;if(_0x5a7843[_0x436954][_0x38b1('0x74')]){_0x48cc56[_0x38b1('0x64')](_0x3542a7);}_0x5a7843[_0x436954][_0x38b1('0x75')]&&_0x48cc56['order'](_0x3542a7,_0x5a7843[_0x436954][_0x38b1('0x75')]===_0x38b1('0x76')?![]:!![]);_0x48cc56['field'](_0x3542a7,_0x5a7843[_0x436954][_0x38b1('0x77')]||_0x3542a7);}if(_0x2102b3['joins']){_0x2102b3[_0x38b1('0x78')]=JSON[_0x38b1('0x79')](_0x2102b3[_0x38b1('0x78')]);for(var _0x3c0ec6=0x0;_0x3c0ec6<_0x2102b3[_0x38b1('0x78')][_0x38b1('0x42')];_0x3c0ec6+=0x1){if(_0x2102b3[_0x38b1('0x78')][_0x3c0ec6][_0x38b1('0x2b')]&&_[_0x38b1('0x5d')](_0x382e0a,_0x2102b3[_0x38b1('0x78')][_0x3c0ec6]['type'])&&_0x2102b3['joins'][_0x3c0ec6][_0x38b1('0x7a')]&&_0x2102b3[_0x38b1('0x78')][_0x3c0ec6][_0x38b1('0x7b')]&&_0x2102b3[_0x38b1('0x78')][_0x3c0ec6]['foreignKey']){_0x48cc56[_0x2102b3[_0x38b1('0x78')][_0x3c0ec6][_0x38b1('0x2b')]](_0x2102b3[_0x38b1('0x78')][_0x3c0ec6]['foreignTable'],null,util[_0x38b1('0x73')]('%s.%s\x20=\x20%s.%s',_0x2102b3[_0x38b1('0x6e')],_0x2102b3[_0x38b1('0x78')][_0x3c0ec6][_0x38b1('0x7a')],_0x2102b3['joins'][_0x3c0ec6][_0x38b1('0x7b')],_0x2102b3[_0x38b1('0x78')][_0x3c0ec6][_0x38b1('0x8a')]));}}}if(_0x2102b3[_0x38b1('0x7c')]){_0x2102b3['conditions']=JSON[_0x38b1('0x79')](_0x2102b3[_0x38b1('0x7c')]);_0x48cc56[_0x38b1('0x37')](_0x553339(_0x2102b3['conditions']['group']));}_0x14dba4=_0x48cc56[_0x38b1('0x7d')]();_0x48cc56['limit'](_0x46ef3d);_0x48cc56['offset'](0x0);logger[_0x38b1('0x7e')](_0x38b1('0x7f'),_0x48cc56['toString']());return dbH['sequelize'][_0x38b1('0x2e')](_0x48cc56['toString'](),{'type':dbH['sequelize'][_0x38b1('0x82')][_0x38b1('0x83')]});}})[_0x38b1('0x21')](function(){return{'sql':_0x14dba4[_0x38b1('0x80')]()};})[_0x38b1('0x21')](respondWithResult(_0x347679,null))[_0x38b1('0x4b')](handleError(_0x347679,null));};
\ No newline at end of file
index 74b9de7..cfa8b1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf455=['AnalyticCustomReport','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','exports'];(function(_0x2e0d05,_0x20cf24){var _0x46c076=function(_0x90ca12){while(--_0x90ca12){_0x2e0d05['push'](_0x2e0d05['shift']());}};_0x46c076(++_0x20cf24);}(_0xf455,0x1cd));var _0x5f45=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf455[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x5f45('0x0'));var util=require(_0x5f45('0x1'));var logger=require(_0x5f45('0x2'))(_0x5f45('0x3'));var moment=require(_0x5f45('0x4'));var BPromise=require(_0x5f45('0x5'));var rp=require(_0x5f45('0x6'));var fs=require('fs');var path=require(_0x5f45('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./analyticCustomReport.attributes');module[_0x5f45('0x8')]=function(_0x16cffa,_0xcbf7b5){return _0x16cffa['define'](_0x5f45('0x9'),attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf677=['../../config/environment','./analyticCustomReport.attributes','exports','define','AnalyticCustomReport','analytics_custom_reports','lodash','../../config/logger','request-promise','path','rimraf'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xf677,0xf8));var _0x7f67=function(_0xe8cd19,_0x190b1c){_0xe8cd19=_0xe8cd19-0x0;var _0x6c0d53=_0xf677[_0xe8cd19];return _0x6c0d53;};'use strict';var _=require(_0x7f67('0x0'));var util=require('util');var logger=require(_0x7f67('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x7f67('0x2'));var fs=require('fs');var path=require(_0x7f67('0x3'));var rimraf=require(_0x7f67('0x4'));var config=require(_0x7f67('0x5'));var attributes=require(_0x7f67('0x6'));module[_0x7f67('0x7')]=function(_0x341562,_0x3eacfa){return _0x341562[_0x7f67('0x8')](_0x7f67('0x9'),attributes,{'tableName':_0x7f67('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e120a21..08ea8be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bfa=['stringify','error','code','AnalyticCustomReport,\x20%s,\x20%s','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x874d83,_0x40c40e){var _0x279731=function(_0x111961){while(--_0x111961){_0x874d83['push'](_0x874d83['shift']());}};_0x279731(++_0x40c40e);}(_0x2bfa,0xd6));var _0xa2bf=function(_0x31deed,_0x18cbcf){_0x31deed=_0x31deed-0x0;var _0x3729fe=_0x2bfa[_0x31deed];return _0x3729fe;};'use strict';var _=require(_0xa2bf('0x0'));var util=require(_0xa2bf('0x1'));var moment=require('moment');var BPromise=require(_0xa2bf('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa2bf('0x3'));var db=require(_0xa2bf('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa2bf('0x5'))(_0xa2bf('0x6'));var config=require(_0xa2bf('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xa2bf('0x8')][_0xa2bf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4e4b50,_0x930c1f,_0x2c040e){return new BPromise(function(_0x109c33,_0x47acbe){return client[_0xa2bf('0xa')](_0x4e4b50,_0x2c040e)[_0xa2bf('0xb')](function(_0xfc7681){logger[_0xa2bf('0xc')]('AnalyticCustomReport,\x20%s,\x20%s',_0x930c1f,'request\x20sent');logger[_0xa2bf('0xd')](_0xa2bf('0xe'),_0x930c1f,_0xa2bf('0xf'),JSON[_0xa2bf('0x10')](_0xfc7681));if(_0xfc7681[_0xa2bf('0x11')]){if(_0xfc7681[_0xa2bf('0x11')][_0xa2bf('0x12')]===0x1f4){logger[_0xa2bf('0x11')](_0xa2bf('0x13'),_0x930c1f,_0xfc7681[_0xa2bf('0x11')]['message']);return _0x47acbe(_0xfc7681['error'][_0xa2bf('0x14')]);}logger['error'](_0xa2bf('0x13'),_0x930c1f,_0xfc7681[_0xa2bf('0x11')][_0xa2bf('0x14')]);return _0x109c33(_0xfc7681[_0xa2bf('0x11')][_0xa2bf('0x14')]);}else{logger['info'](_0xa2bf('0x13'),_0x930c1f,'request\x20sent');_0x109c33(_0xfc7681[_0xa2bf('0x15')]['message']);}})[_0xa2bf('0x16')](function(_0x58eee1){logger[_0xa2bf('0x11')](_0xa2bf('0x13'),_0x930c1f,_0x58eee1);_0x47acbe(_0x58eee1);});});}
\ No newline at end of file
+var _0xe31e=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','client','http','request','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util'];(function(_0x5546ba,_0x4085c9){var _0x434022=function(_0x3ab69a){while(--_0x3ab69a){_0x5546ba['push'](_0x5546ba['shift']());}};_0x434022(++_0x4085c9);}(_0xe31e,0x185));var _0xee31=function(_0x338c8c,_0x19df14){_0x338c8c=_0x338c8c-0x0;var _0x371a9a=_0xe31e[_0x338c8c];return _0x371a9a;};'use strict';var _=require(_0xee31('0x0'));var util=require(_0xee31('0x1'));var moment=require(_0xee31('0x2'));var BPromise=require(_0xee31('0x3'));var rs=require(_0xee31('0x4'));var fs=require('fs');var Redis=require(_0xee31('0x5'));var db=require(_0xee31('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xee31('0x7'))(_0xee31('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xee31('0x9')][_0xee31('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5d0d45,_0x4edfa3,_0x571450){return new BPromise(function(_0x5c8906,_0x5d3da8){return client[_0xee31('0xb')](_0x5d0d45,_0x571450)['then'](function(_0x34f6d5){logger[_0xee31('0xc')](_0xee31('0xd'),_0x4edfa3,_0xee31('0xe'));logger[_0xee31('0xf')](_0xee31('0x10'),_0x4edfa3,_0xee31('0xe'),JSON[_0xee31('0x11')](_0x34f6d5));if(_0x34f6d5[_0xee31('0x12')]){if(_0x34f6d5[_0xee31('0x12')][_0xee31('0x13')]===0x1f4){logger[_0xee31('0x12')](_0xee31('0xd'),_0x4edfa3,_0x34f6d5[_0xee31('0x12')]['message']);return _0x5d3da8(_0x34f6d5[_0xee31('0x12')][_0xee31('0x14')]);}logger[_0xee31('0x12')](_0xee31('0xd'),_0x4edfa3,_0x34f6d5['error'][_0xee31('0x14')]);return _0x5c8906(_0x34f6d5['error']['message']);}else{logger[_0xee31('0xc')](_0xee31('0xd'),_0x4edfa3,_0xee31('0xe'));_0x5c8906(_0x34f6d5[_0xee31('0x15')][_0xee31('0x14')]);}})[_0xee31('0x16')](function(_0x1cc34d){logger[_0xee31('0x12')]('AnalyticCustomReport,\x20%s,\x20%s',_0x4edfa3,_0x1cc34d);_0x5d3da8(_0x1cc34d);});});}
\ No newline at end of file
index a9659aa..60c43cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ae6=['/:id','show','/:id/preview','preview','/:id/run','run','/:id/query','post','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./analyticCustomReport.controller','isAuthenticated','index','get'];(function(_0x5bba53,_0xef501d){var _0x34f645=function(_0x135a87){while(--_0x135a87){_0x5bba53['push'](_0x5bba53['shift']());}};_0x34f645(++_0xef501d);}(_0x6ae6,0x6c));var _0x66ae=function(_0x1dd532,_0x36e81c){_0x1dd532=_0x1dd532-0x0;var _0x3732aa=_0x6ae6[_0x1dd532];return _0x3732aa;};'use strict';var multer=require(_0x66ae('0x0'));var util=require(_0x66ae('0x1'));var path=require(_0x66ae('0x2'));var timeout=require(_0x66ae('0x3'));var express=require(_0x66ae('0x4'));var router=express[_0x66ae('0x5')]();var fs_extra=require(_0x66ae('0x6'));var auth=require(_0x66ae('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x66ae('0x8'));router['get']('/',auth[_0x66ae('0x9')](),controller[_0x66ae('0xa')]);router[_0x66ae('0xb')](_0x66ae('0xc'),auth['isAuthenticated'](),controller[_0x66ae('0xd')]);router[_0x66ae('0xb')](_0x66ae('0xe'),auth[_0x66ae('0x9')](),controller[_0x66ae('0xf')]);router[_0x66ae('0xb')](_0x66ae('0x10'),auth[_0x66ae('0x9')](),controller[_0x66ae('0x11')]);router[_0x66ae('0xb')](_0x66ae('0x12'),auth[_0x66ae('0x9')](),controller['query']);router[_0x66ae('0x13')]('/',auth[_0x66ae('0x9')](),controller['create']);router[_0x66ae('0x14')]('/:id',auth[_0x66ae('0x9')](),controller['update']);router[_0x66ae('0x15')](_0x66ae('0xc'),auth[_0x66ae('0x9')](),controller[_0x66ae('0x16')]);module[_0x66ae('0x17')]=router;
\ No newline at end of file
+var _0xd9d8=['delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./analyticCustomReport.controller','get','isAuthenticated','index','show','/:id/preview','/:id/run','run','query','post','create','update'];(function(_0x3a5ee1,_0x481b9e){var _0x10e59a=function(_0x4a2c31){while(--_0x4a2c31){_0x3a5ee1['push'](_0x3a5ee1['shift']());}};_0x10e59a(++_0x481b9e);}(_0xd9d8,0x136));var _0x8d9d=function(_0xa9dd3e,_0x218069){_0xa9dd3e=_0xa9dd3e-0x0;var _0x4f03a1=_0xd9d8[_0xa9dd3e];return _0x4f03a1;};'use strict';var multer=require('multer');var util=require(_0x8d9d('0x0'));var path=require(_0x8d9d('0x1'));var timeout=require(_0x8d9d('0x2'));var express=require(_0x8d9d('0x3'));var router=express[_0x8d9d('0x4')]();var fs_extra=require(_0x8d9d('0x5'));var auth=require(_0x8d9d('0x6'));var interaction=require(_0x8d9d('0x7'));var config=require('../../config/environment');var controller=require(_0x8d9d('0x8'));router[_0x8d9d('0x9')]('/',auth[_0x8d9d('0xa')](),controller[_0x8d9d('0xb')]);router['get']('/:id',auth[_0x8d9d('0xa')](),controller[_0x8d9d('0xc')]);router[_0x8d9d('0x9')](_0x8d9d('0xd'),auth[_0x8d9d('0xa')](),controller['preview']);router['get'](_0x8d9d('0xe'),auth[_0x8d9d('0xa')](),controller[_0x8d9d('0xf')]);router[_0x8d9d('0x9')]('/:id/query',auth['isAuthenticated'](),controller[_0x8d9d('0x10')]);router[_0x8d9d('0x11')]('/',auth[_0x8d9d('0xa')](),controller[_0x8d9d('0x12')]);router['put']('/:id',auth[_0x8d9d('0xa')](),controller[_0x8d9d('0x13')]);router[_0x8d9d('0x14')]('/:id',auth[_0x8d9d('0xa')](),controller['destroy']);module[_0x8d9d('0x15')]=router;
\ No newline at end of file
index d3c1426..8f6f6c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d17=['sequelize','exports','STRING','TEXT'];(function(_0x4526e9,_0xbff7c8){var _0x4e1da7=function(_0x236cd5){while(--_0x236cd5){_0x4526e9['push'](_0x4526e9['shift']());}};_0x4e1da7(++_0xbff7c8);}(_0x5d17,0x114));var _0x75d1=function(_0x593c1b,_0x35c524){_0x593c1b=_0x593c1b-0x0;var _0x4e0c07=_0x5d17[_0x593c1b];return _0x4e0c07;};'use strict';var Sequelize=require(_0x75d1('0x0'));module[_0x75d1('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x75d1('0x2')]},'table':{'type':Sequelize[_0x75d1('0x2')]},'conditions':{'type':Sequelize[_0x75d1('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x24ca=['sequelize','STRING','TEXT'];(function(_0x2efd1d,_0x44f696){var _0x1ef3f6=function(_0x25da5f){while(--_0x25da5f){_0x2efd1d['push'](_0x2efd1d['shift']());}};_0x1ef3f6(++_0x44f696);}(_0x24ca,0x1bc));var _0xa24c=function(_0x47c5bf,_0x45977e){_0x47c5bf=_0x47c5bf-0x0;var _0x11b779=_0x24ca[_0x47c5bf];return _0x11b779;};'use strict';var Sequelize=require(_0xa24c('0x0'));module['exports']={'name':{'type':Sequelize[_0xa24c('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xa24c('0x1')]},'parent':{'type':Sequelize[_0xa24c('0x1')]},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize[_0xa24c('0x2')]},'joins':{'type':Sequelize[_0xa24c('0x2')]}};
\ No newline at end of file
index fb55840..95d504c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46ed=['SEC_TO_TIME(%s)','value','AnalyticMetric','select','DESC','output','fullPath','%s-%s.%s','randomstring','csv','default','AnalyticExtractedReport','cdr','startDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','endDate','info','Run\x20Query:','child_process','../../files/reports','savename','countTable','COUNT(*)','sequelize','runReport','left_join','COUNT(%s)','MIN(%s)','AVG(%s)','Limited\x20Query:','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','DefaultReports','UserProfileResource','destroy','sendStatus','error','stack','name','send','index','map','AnalyticDefaultReport','rawAttributes','fieldName','type','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','catch','params','find','create','body','user','Reports','UserProfileSection','userProfileId','autoAssociation','preview','join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','getFields','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','keyBy','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','order','alias','joins','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','clone','toString','QueryTypes','SELECT'];(function(_0x4aeb44,_0x419730){var _0x1aa240=function(_0x113ba9){while(--_0x113ba9){_0x4aeb44['push'](_0x4aeb44['shift']());}};_0x1aa240(++_0x419730);}(_0x46ed,0x168));var _0xd46e=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0x46ed[_0xa148b7];return _0x51efd3;};'use strict';var emlformat=require(_0xd46e('0x0'));var rimraf=require(_0xd46e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd46e('0x2'));var rp=require(_0xd46e('0x3'));var moment=require(_0xd46e('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd46e('0x5'));var util=require(_0xd46e('0x6'));var path=require('path');var sox=require(_0xd46e('0x7'));var csv=require(_0xd46e('0x8'));var ejs=require(_0xd46e('0x9'));var fs=require('fs');var fs_extra=require(_0xd46e('0xa'));var _=require(_0xd46e('0xb'));var squel=require(_0xd46e('0xc'));var crypto=require(_0xd46e('0xd'));var jsforce=require(_0xd46e('0xe'));var deskjs=require(_0xd46e('0xf'));var toCsv=require(_0xd46e('0x8'));var querystring=require(_0xd46e('0x10'));var Papa=require('papaparse');var Redis=require(_0xd46e('0x11'));var authService=require(_0xd46e('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xd46e('0x13'));var hardwareService=require(_0xd46e('0x14'));var logger=require(_0xd46e('0x15'))(_0xd46e('0x16'));var utils=require(_0xd46e('0x17'));var config=require(_0xd46e('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xd46e('0x19'))['db'];var dbH=require('../../mysqldb')['dbH'];function respondWithStatusCode(_0xf3048c,_0x27dbfb){_0x27dbfb=_0x27dbfb||0xcc;return function(_0x53b309){if(_0x53b309){return _0xf3048c['sendStatus'](_0x27dbfb);}return _0xf3048c[_0xd46e('0x1a')](_0x27dbfb)[_0xd46e('0x1b')]();};}function respondWithResult(_0x1e9aae,_0x3fdf88){_0x3fdf88=_0x3fdf88||0xc8;return function(_0x50c7c3){if(_0x50c7c3){return _0x1e9aae[_0xd46e('0x1a')](_0x3fdf88)[_0xd46e('0x1c')](_0x50c7c3);}};}function respondWithFilteredResult(_0x417402,_0x3d72ce){return function(_0x36a317){if(_0x36a317){var _0x47fa8f=typeof _0x3d72ce[_0xd46e('0x1d')]===_0xd46e('0x1e')&&typeof _0x3d72ce[_0xd46e('0x1f')]==='undefined';var _0x5ddd04=_0x36a317[_0xd46e('0x20')];var _0x1bd574=_0x47fa8f?0x0:_0x3d72ce['offset'];var _0x4fd1f2=_0x47fa8f?_0x36a317[_0xd46e('0x20')]:_0x3d72ce[_0xd46e('0x1d')]+_0x3d72ce[_0xd46e('0x1f')];var _0x2273c5;if(_0x4fd1f2>=_0x5ddd04){_0x4fd1f2=_0x5ddd04;_0x2273c5=0xc8;}else{_0x2273c5=0xce;}_0x417402[_0xd46e('0x1a')](_0x2273c5);return _0x417402[_0xd46e('0x21')](_0xd46e('0x22'),_0x1bd574+'-'+_0x4fd1f2+'/'+_0x5ddd04)[_0xd46e('0x1c')](_0x36a317);}return null;};}function patchUpdates(_0xb4940){return function(_0x3c7e91){try{jsonpatch[_0xd46e('0x23')](_0x3c7e91,_0xb4940,!![]);}catch(_0x5ba94d){return BPromise[_0xd46e('0x24')](_0x5ba94d);}return _0x3c7e91[_0xd46e('0x25')]();};}function saveUpdates(_0x79aa51,_0x45ce0b){return function(_0x128246){if(_0x128246){return _0x128246[_0xd46e('0x26')](_0x79aa51)[_0xd46e('0x27')](function(_0x8a1be){return _0x8a1be;});}return null;};}function removeEntity(_0x62dea5,_0x4cf899){return function(_0x314570){if(_0x314570){return _0x314570['destroy']()['then'](function(){var _0x371054=_0x314570[_0xd46e('0x28')]({'plain':!![]});var _0x21135f=_0xd46e('0x29');return db[_0xd46e('0x2a')][_0xd46e('0x2b')]({'where':{'type':_0x21135f,'resourceId':_0x371054['id']}})[_0xd46e('0x27')](function(){return _0x314570;});})['then'](function(){_0x62dea5[_0xd46e('0x1a')](0xcc)[_0xd46e('0x1b')]();});}};}function handleEntityNotFound(_0xddbce9,_0x17db79){return function(_0x96f15c){if(!_0x96f15c){_0xddbce9[_0xd46e('0x2c')](0x194);}return _0x96f15c;};}function handleError(_0x58aeef,_0x465d54){_0x465d54=_0x465d54||0x1f4;return function(_0x3a1ced){logger[_0xd46e('0x2d')](_0x3a1ced[_0xd46e('0x2e')]);if(_0x3a1ced[_0xd46e('0x2f')]){delete _0x3a1ced[_0xd46e('0x2f')];}_0x58aeef[_0xd46e('0x1a')](_0x465d54)[_0xd46e('0x30')](_0x3a1ced);};}exports[_0xd46e('0x31')]=function(_0x45ea47,_0x2ff785){var _0x504324={},_0x2f4a1b={},_0x5ed8dc={'count':0x0,'rows':[]};var _0x1248ce=_[_0xd46e('0x32')](db[_0xd46e('0x33')][_0xd46e('0x34')],function(_0x5ef248){return{'name':_0x5ef248[_0xd46e('0x35')],'type':_0x5ef248[_0xd46e('0x36')]['key']};});_0x2f4a1b[_0xd46e('0x37')]=_[_0xd46e('0x32')](_0x1248ce,'name');_0x2f4a1b[_0xd46e('0x38')]=_[_0xd46e('0x39')](_0x45ea47[_0xd46e('0x38')]);_0x2f4a1b['filters']=_['intersection'](_0x2f4a1b[_0xd46e('0x37')],_0x2f4a1b[_0xd46e('0x38')]);_0x504324[_0xd46e('0x3a')]=_[_0xd46e('0x3b')](_0x2f4a1b[_0xd46e('0x37')],qs[_0xd46e('0x3c')](_0x45ea47[_0xd46e('0x38')][_0xd46e('0x3c')]));_0x504324['attributes']=_0x504324[_0xd46e('0x3a')][_0xd46e('0x3d')]?_0x504324[_0xd46e('0x3a')]:_0x2f4a1b[_0xd46e('0x37')];if(!_0x45ea47[_0xd46e('0x38')][_0xd46e('0x3e')](_0xd46e('0x3f'))){_0x504324['limit']=qs[_0xd46e('0x1f')](_0x45ea47[_0xd46e('0x38')]['limit']);_0x504324[_0xd46e('0x1d')]=qs[_0xd46e('0x1d')](_0x45ea47[_0xd46e('0x38')][_0xd46e('0x1d')]);}_0x504324['order']=qs[_0xd46e('0x40')](_0x45ea47[_0xd46e('0x38')][_0xd46e('0x40')]);_0x504324[_0xd46e('0x41')]=qs[_0xd46e('0x42')](_[_0xd46e('0x43')](_0x45ea47[_0xd46e('0x38')],_0x2f4a1b[_0xd46e('0x42')]),_0x1248ce);if(_0x45ea47['query'][_0xd46e('0x44')]){_0x504324[_0xd46e('0x41')]=_[_0xd46e('0x45')](_0x504324[_0xd46e('0x41')],{'$or':_[_0xd46e('0x32')](_0x1248ce,function(_0x56f99c){if(_0x56f99c[_0xd46e('0x36')]!=='VIRTUAL'){var _0x55230d={};_0x55230d[_0x56f99c['name']]={'$like':'%'+_0x45ea47['query'][_0xd46e('0x44')]+'%'};return _0x55230d;}})});}_0x504324=_['merge']({},_0x504324,_0x45ea47[_0xd46e('0x46')]);var _0x40720e={'where':_0x504324['where']};return db[_0xd46e('0x33')][_0xd46e('0x20')](_0x40720e)[_0xd46e('0x27')](function(_0x31ba12){_0x5ed8dc[_0xd46e('0x20')]=_0x31ba12;if(_0x45ea47[_0xd46e('0x38')][_0xd46e('0x47')]){_0x504324[_0xd46e('0x48')]=[{'all':!![]}];}return db[_0xd46e('0x33')][_0xd46e('0x49')](_0x504324);})[_0xd46e('0x27')](function(_0x5ea048){_0x5ed8dc['rows']=_0x5ea048;return _0x5ed8dc;})['then'](respondWithFilteredResult(_0x2ff785,_0x504324))[_0xd46e('0x4a')](handleError(_0x2ff785,null));};exports['show']=function(_0x168d35,_0x272f5f){var _0x3fdf67={'raw':!![],'where':{'id':_0x168d35[_0xd46e('0x4b')]['id']}},_0x416505={};_0x416505[_0xd46e('0x37')]=_[_0xd46e('0x39')](db[_0xd46e('0x33')]['rawAttributes']);_0x416505[_0xd46e('0x38')]=_['keys'](_0x168d35[_0xd46e('0x38')]);_0x416505[_0xd46e('0x42')]=_[_0xd46e('0x3b')](_0x416505[_0xd46e('0x37')],_0x416505[_0xd46e('0x38')]);_0x3fdf67['attributes']=_[_0xd46e('0x3b')](_0x416505[_0xd46e('0x37')],qs[_0xd46e('0x3c')](_0x168d35[_0xd46e('0x38')][_0xd46e('0x3c')]));_0x3fdf67['attributes']=_0x3fdf67[_0xd46e('0x3a')][_0xd46e('0x3d')]?_0x3fdf67[_0xd46e('0x3a')]:_0x416505[_0xd46e('0x37')];if(_0x168d35[_0xd46e('0x38')]['includeAll']){_0x3fdf67[_0xd46e('0x48')]=[{'all':!![]}];}_0x3fdf67=_[_0xd46e('0x45')]({},_0x3fdf67,_0x168d35[_0xd46e('0x46')]);return db[_0xd46e('0x33')][_0xd46e('0x4c')](_0x3fdf67)[_0xd46e('0x27')](handleEntityNotFound(_0x272f5f,null))[_0xd46e('0x27')](respondWithResult(_0x272f5f,null))[_0xd46e('0x4a')](handleError(_0x272f5f,null));};exports['create']=function(_0xf9dab,_0x71a8dc){return db[_0xd46e('0x33')][_0xd46e('0x4d')](_0xf9dab[_0xd46e('0x4e')],{})['then'](function(_0x4ae314){var _0x3a94cf=_0xf9dab[_0xd46e('0x4f')][_0xd46e('0x28')]({'plain':!![]});if(!_0x3a94cf)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3a94cf['role']===_0xd46e('0x4f')){var _0x9d8638=_0x4ae314['get']({'plain':!![]});var _0x2eee92=_0xd46e('0x50');return db[_0xd46e('0x51')][_0xd46e('0x4c')]({'where':{'name':_0x2eee92,'userProfileId':_0x3a94cf[_0xd46e('0x52')]},'raw':!![]})[_0xd46e('0x27')](function(_0x80ed51){if(_0x80ed51&&_0x80ed51[_0xd46e('0x53')]===0x0){return db['UserProfileResource'][_0xd46e('0x4d')]({'name':_0x9d8638[_0xd46e('0x2f')],'resourceId':_0x9d8638['id'],'type':_0xd46e('0x29'),'sectionId':_0x80ed51['id']},{})[_0xd46e('0x27')](function(){return _0x4ae314;});}else{return _0x4ae314;}})['catch'](function(_0x56dd9a){logger[_0xd46e('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x56dd9a);throw _0x56dd9a;});}return _0x4ae314;})[_0xd46e('0x27')](respondWithResult(_0x71a8dc,0xc9))[_0xd46e('0x4a')](handleError(_0x71a8dc,null));};exports[_0xd46e('0x26')]=function(_0x31f7eb,_0x5a7870){if(_0x31f7eb[_0xd46e('0x4e')]['id']){delete _0x31f7eb['body']['id'];}return db[_0xd46e('0x33')][_0xd46e('0x4c')]({'where':{'id':_0x31f7eb[_0xd46e('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5a7870,null))[_0xd46e('0x27')](saveUpdates(_0x31f7eb[_0xd46e('0x4e')],null))[_0xd46e('0x27')](respondWithResult(_0x5a7870,null))[_0xd46e('0x4a')](handleError(_0x5a7870,null));};exports[_0xd46e('0x2b')]=function(_0x2cc676,_0x2760ef){return db[_0xd46e('0x33')][_0xd46e('0x4c')]({'where':{'id':_0x2cc676[_0xd46e('0x4b')]['id']}})[_0xd46e('0x27')](handleEntityNotFound(_0x2760ef,null))[_0xd46e('0x27')](removeEntity(_0x2760ef,null))[_0xd46e('0x4a')](handleError(_0x2760ef,null));};exports[_0xd46e('0x54')]=function(_0x47a86c,_0x3ec709){var _0x37a22f=0xa;var _0xe0cd61=[_0xd46e('0x55'),'left_join',_0xd46e('0x56'),_0xd46e('0x57')];var _0xaf9641={'SUM':_0xd46e('0x58'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xd46e('0x59'),'MAX':_0xd46e('0x5a'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0xd46e('0x5b'),'GROUP_CONCAT ASC':_0xd46e('0x5c'),'GROUP_CONCAT DESC':_0xd46e('0x5d')};var _0x481dce={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xd46e('0x5e'),'HOUR':_0xd46e('0x5f'),'ROUND':_0xd46e('0x60'),'UNIX_TIMESTAMP':_0xd46e('0x61')};var _0x2dacb4=function(_0x2f9fcb){return!_[_0xd46e('0x62')]([_0xd46e('0x63'),_0xd46e('0x64'),_0xd46e('0x65'),_0xd46e('0x66')],_0x2f9fcb);};var _0x1aaa99=function(_0x272514){if(!_0x272514||!_0x272514[_0xd46e('0x67')][_0xd46e('0x3d')]){return'';}for(var _0x476f09='(',_0x5067b7=0x0;_0x5067b7<_0x272514[_0xd46e('0x67')][_0xd46e('0x3d')];_0x5067b7+=0x1){_0x5067b7>0x0&&(_0x476f09+='\x20'+_0x272514[_0xd46e('0x68')]+'\x20');_0x476f09+=_0x272514['rules'][_0x5067b7][_0xd46e('0x69')]?_0x1aaa99(_0x272514[_0xd46e('0x67')][_0x5067b7]['group']):_0x272514[_0xd46e('0x67')][_0x5067b7][_0xd46e('0x6a')]+'\x20'+_0x272514[_0xd46e('0x67')][_0x5067b7]['condition']+(_0x2dacb4(_0x272514[_0xd46e('0x67')][_0x5067b7][_0xd46e('0x6b')])?'\x20'+_0x272514[_0xd46e('0x67')][_0x5067b7]['value']:'');}return _0x476f09+')';};var _0xe5f8cd={'where':{'id':_0x47a86c[_0xd46e('0x4b')]['id']}},_0x516e7d,_0x32eed0,_0x148187,_0x35db1b,_0x4f3ba0;_0xe5f8cd=_[_0xd46e('0x45')]({},_0xe5f8cd,_0x47a86c[_0xd46e('0x46')]);return db[_0xd46e('0x33')][_0xd46e('0x4c')](_0xe5f8cd)[_0xd46e('0x27')](function(_0x16f906){if(_0x16f906){_0x516e7d=_0x16f906;return _0x16f906[_0xd46e('0x6c')]();}return null;})[_0xd46e('0x27')](function(_0x3e55a3){if(_0x3e55a3){if(!_0x3e55a3[_0xd46e('0x3d')]){throw new db[(_0xd46e('0x6d'))][(_0xd46e('0x6e'))](_0xd46e('0x6f'),0x193);}_0x32eed0=_0x3e55a3;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0xd46e('0x27')](function(_0x3e0ed5){if(_0x3e0ed5){_0x148187=_[_0xd46e('0x70')](_0x3e0ed5,'id');var _0x2fff69;var _0x249938=squel['select']();_0x249938[_0xd46e('0x71')](_0x516e7d[_0xd46e('0x72')]);for(var _0xfb4073=0x0;_0xfb4073<_0x32eed0[_0xd46e('0x3d')];_0xfb4073+=0x1){_0x2fff69=_0x32eed0[_0xfb4073]['MetricId']?_0x148187[_0x32eed0[_0xfb4073][_0xd46e('0x73')]][_0xd46e('0x74')]:_0x32eed0[_0xfb4073]['field'];_0x2fff69=_0x32eed0[_0xfb4073][_0xd46e('0x75')]?_[_0xd46e('0x76')](_0xaf9641[_0x32eed0[_0xfb4073]['function']],'%s',_0x2fff69):_0x2fff69;_0x2fff69=_0x32eed0[_0xfb4073][_0xd46e('0x77')]?_[_0xd46e('0x76')](_0x481dce[_0x32eed0[_0xfb4073]['format']],'%s',_0x2fff69):_0x2fff69;if(_0x32eed0[_0xfb4073][_0xd46e('0x78')]){_0x249938['group'](_0x2fff69);}_0x32eed0[_0xfb4073][_0xd46e('0x79')]&&_0x249938[_0xd46e('0x7a')](_0x2fff69,_0x32eed0[_0xfb4073]['orderBy']==='DESC'?![]:!![]);_0x249938[_0xd46e('0x6a')](_0x2fff69,_0x32eed0[_0xfb4073][_0xd46e('0x7b')]||_0x2fff69);}if(_0x516e7d[_0xd46e('0x7c')]){_0x516e7d[_0xd46e('0x7c')]=JSON['parse'](_0x516e7d[_0xd46e('0x7c')]);for(var _0x372509=0x0;_0x372509<_0x516e7d['joins'][_0xd46e('0x3d')];_0x372509+=0x1){if(_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x36')]&&_[_0xd46e('0x62')](_0xe0cd61,_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x36')])&&_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x7d')]&&_0x516e7d[_0xd46e('0x7c')][_0x372509]['foreignTable']&&_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x7e')]){_0x249938[_0x516e7d['joins'][_0x372509][_0xd46e('0x36')]](_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x7f')],null,util[_0xd46e('0x77')](_0xd46e('0x80'),_0x516e7d[_0xd46e('0x72')],_0x516e7d['joins'][_0x372509]['parentKey'],_0x516e7d[_0xd46e('0x7c')][_0x372509][_0xd46e('0x7f')],_0x516e7d['joins'][_0x372509]['foreignKey']));}}}if(_0x516e7d['conditions']){_0x516e7d[_0xd46e('0x81')]=JSON[_0xd46e('0x82')](_0x516e7d[_0xd46e('0x81')]);_0x249938['where'](_0x1aaa99(_0x516e7d[_0xd46e('0x81')][_0xd46e('0x69')]));}_0x4f3ba0=_0x249938[_0xd46e('0x83')]();_0x249938['limit'](_0x37a22f);_0x249938['offset'](0x0);logger['debug']('Limited\x20Query:',_0x249938[_0xd46e('0x84')]());return dbH['sequelize'][_0xd46e('0x38')](_0x249938['toString'](),{'type':dbH['sequelize'][_0xd46e('0x85')][_0xd46e('0x86')]});}})[_0xd46e('0x27')](respondWithResult(_0x3ec709,null))[_0xd46e('0x4a')](handleError(_0x3ec709,null));};function runReport(_0xf16d87,_0x99872a,_0x57a7cc){var _0x586024=_0x99872a[_0xd46e('0x2f')];var _0x383919=0xa;var _0x114f2c=[_0xd46e('0x55'),'left_join',_0xd46e('0x56'),_0xd46e('0x57')];var _0x4ca21f={'SUM':_0xd46e('0x58'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xd46e('0x59'),'MAX':_0xd46e('0x5a'),'MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':_0xd46e('0x5b'),'GROUP_CONCAT ASC':_0xd46e('0x5c'),'GROUP_CONCAT DESC':_0xd46e('0x5d')};var _0x5ef4cc={'SEC_TO_TIME':_0xd46e('0x87'),'DATE':_0xd46e('0x5e'),'HOUR':_0xd46e('0x5f'),'ROUND':_0xd46e('0x60'),'UNIX_TIMESTAMP':_0xd46e('0x61')};var _0x88460a=function(_0x3a3744){return!_[_0xd46e('0x62')]([_0xd46e('0x63'),_0xd46e('0x64'),_0xd46e('0x65'),_0xd46e('0x66')],_0x3a3744);};var _0x3c476d=function(_0x1b2a6d){if(!_0x1b2a6d||!_0x1b2a6d[_0xd46e('0x67')][_0xd46e('0x3d')]){return'';}for(var _0x441f73='(',_0x1d2738=0x0;_0x1d2738<_0x1b2a6d['rules'][_0xd46e('0x3d')];_0x1d2738+=0x1){_0x1d2738>0x0&&(_0x441f73+='\x20'+_0x1b2a6d['operator']+'\x20');_0x441f73+=_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x69')]?_0x3c476d(_0x1b2a6d['rules'][_0x1d2738][_0xd46e('0x69')]):_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x6a')]+'\x20'+_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x6b')]+(_0x88460a(_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x6b')])?'\x20'+_0x1b2a6d[_0xd46e('0x67')][_0x1d2738][_0xd46e('0x88')]:'');}return _0x441f73+')';};var _0x3fa34d={'where':{'id':_0xf16d87['id']}},_0xc098c9,_0x5f5ba7,_0x493df5,_0x18e140,_0x459a0c;_0x3fa34d=_[_0xd46e('0x45')]({},_0x3fa34d,_0x57a7cc);return db[_0xd46e('0x33')][_0xd46e('0x4c')](_0x3fa34d)[_0xd46e('0x27')](function(_0x5b554e){if(_0x5b554e){_0xc098c9=_0x5b554e;return _0x5b554e[_0xd46e('0x6c')]();}return null;})[_0xd46e('0x27')](function(_0xa254f5){if(_0xa254f5){if(!_0xa254f5[_0xd46e('0x3d')]){throw new db[(_0xd46e('0x6d'))][(_0xd46e('0x6e'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x5f5ba7=_0xa254f5;return db[_0xd46e('0x89')][_0xd46e('0x49')]({'raw':!![]});}return null;})['then'](function(_0x3c8d68){if(_0x3c8d68){_0x493df5=_[_0xd46e('0x70')](_0x3c8d68,'id');var _0x9e222d;var _0x3da17e=squel[_0xd46e('0x8a')]();_0x3da17e[_0xd46e('0x71')](_0xc098c9[_0xd46e('0x72')]);for(var _0x282f71=0x0;_0x282f71<_0x5f5ba7[_0xd46e('0x3d')];_0x282f71+=0x1){_0x9e222d=_0x5f5ba7[_0x282f71][_0xd46e('0x73')]?_0x493df5[_0x5f5ba7[_0x282f71][_0xd46e('0x73')]][_0xd46e('0x74')]:_0x5f5ba7[_0x282f71][_0xd46e('0x6a')];_0x9e222d=_0x5f5ba7[_0x282f71][_0xd46e('0x75')]?_['replace'](_0x4ca21f[_0x5f5ba7[_0x282f71]['function']],'%s',_0x9e222d):_0x9e222d;_0x9e222d=_0x5f5ba7[_0x282f71][_0xd46e('0x77')]?_[_0xd46e('0x76')](_0x5ef4cc[_0x5f5ba7[_0x282f71][_0xd46e('0x77')]],'%s',_0x9e222d):_0x9e222d;if(_0x5f5ba7[_0x282f71][_0xd46e('0x78')]){_0x3da17e[_0xd46e('0x69')](_0x9e222d);}_0x5f5ba7[_0x282f71][_0xd46e('0x79')]&&_0x3da17e['order'](_0x9e222d,_0x5f5ba7[_0x282f71][_0xd46e('0x79')]===_0xd46e('0x8b')?![]:!![]);_0x3da17e[_0xd46e('0x6a')](_0x9e222d,_0x5f5ba7[_0x282f71][_0xd46e('0x7b')]||_0x9e222d);}if(_0xc098c9['joins']){_0xc098c9[_0xd46e('0x7c')]=JSON[_0xd46e('0x82')](_0xc098c9['joins']);for(var _0xdf967c=0x0;_0xdf967c<_0xc098c9['joins']['length'];_0xdf967c+=0x1){if(_0xc098c9[_0xd46e('0x7c')][_0xdf967c][_0xd46e('0x36')]&&_[_0xd46e('0x62')](_0x114f2c,_0xc098c9[_0xd46e('0x7c')][_0xdf967c]['type'])&&_0xc098c9['joins'][_0xdf967c][_0xd46e('0x7d')]&&_0xc098c9['joins'][_0xdf967c][_0xd46e('0x7f')]&&_0xc098c9['joins'][_0xdf967c]['foreignKey']){_0x3da17e[_0xc098c9[_0xd46e('0x7c')][_0xdf967c][_0xd46e('0x36')]](_0xc098c9['joins'][_0xdf967c]['foreignTable'],null,util[_0xd46e('0x77')](_0xd46e('0x80'),_0xc098c9[_0xd46e('0x72')],_0xc098c9[_0xd46e('0x7c')][_0xdf967c]['parentKey'],_0xc098c9[_0xd46e('0x7c')][_0xdf967c][_0xd46e('0x7f')],_0xc098c9['joins'][_0xdf967c][_0xd46e('0x7e')]));}}}if(_0xc098c9[_0xd46e('0x81')]){_0xc098c9[_0xd46e('0x81')]=JSON[_0xd46e('0x82')](_0xc098c9[_0xd46e('0x81')]);_0x3da17e[_0xd46e('0x41')](_0x3c476d(_0xc098c9['conditions'][_0xd46e('0x69')]));}_0x459a0c=_0x3da17e[_0xd46e('0x83')]();_0x3da17e['limit'](_0x383919);_0x3da17e['offset'](0x0);return;}})[_0xd46e('0x27')](function(){if(_0x99872a[_0xd46e('0x8c')]==='web'){return null;}var _0x5e637d=_[_0xd46e('0x45')](_0x99872a,{'name':_0x99872a[_0xd46e('0x8d')]||_0x99872a['name']||_0xc098c9[_0xd46e('0x2f')],'basename':_0x586024,'savename':util[_0xd46e('0x77')](_0xd46e('0x8e'),_0x99872a[_0xd46e('0x2f')]||_0xc098c9[_0xd46e('0x2f')],require(_0xd46e('0x8f'))['generate'](0x4),_0x99872a[_0xd46e('0x8c')]||_0xd46e('0x90')),'reportId':_0xc098c9['id'],'reportType':_0xd46e('0x91')});return db[_0xd46e('0x92')][_0xd46e('0x4d')](_0x5e637d,{'raw':!![]});})[_0xd46e('0x27')](function(_0x3311a6){if(_0xc098c9[_0xd46e('0x72')]===_0xd46e('0x93')){_0x459a0c[_0xd46e('0x41')](_0xc098c9[_0xd46e('0x72')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x99872a[_0xd46e('0x94')],_0x99872a['endDate']);}else{_0x459a0c['where'](_0xc098c9[_0xd46e('0x72')]+_0xd46e('0x95'),_0x99872a[_0xd46e('0x94')],_0x99872a[_0xd46e('0x96')]);}if(_0x3311a6){logger[_0xd46e('0x97')](_0xd46e('0x98'),_0x459a0c[_0xd46e('0x84')]());require(_0xd46e('0x99'))['fork'](path[_0xd46e('0x55')](__dirname,'../../components/export/',_0x3311a6[_0xd46e('0x8c')]),[_0x3311a6['id'],_0x459a0c[_0xd46e('0x84')](),path[_0xd46e('0x55')](__dirname,_0xd46e('0x9a'),_0x3311a6[_0xd46e('0x9b')]),_0x586024]);return _0x3311a6;}else{var _0x399918=squel[_0xd46e('0x8a')]();_0x399918[_0xd46e('0x71')]('('+_0x459a0c['toString']()+')',_0xd46e('0x9c'));_0x399918[_0xd46e('0x6a')](_0xd46e('0x9d'),'count');_0x459a0c[_0xd46e('0x1f')](_0x99872a[_0xd46e('0x1f')]||_0x383919);_0x459a0c[_0xd46e('0x1d')](_0x99872a['offset']||0x0);return dbH[_0xd46e('0x9e')][_0xd46e('0x38')](_0x399918[_0xd46e('0x84')](),{'type':dbH[_0xd46e('0x9e')][_0xd46e('0x85')][_0xd46e('0x86')]})['then'](function(_0x4967ff){if(!_0x4967ff[_0xd46e('0x3d')]){_0x18e140=0x0;}else{_0x18e140=_0x4967ff[0x0][_0xd46e('0x20')]||0x0;}return dbH['sequelize'][_0xd46e('0x38')](_0x459a0c[_0xd46e('0x84')](),{'type':dbH[_0xd46e('0x9e')][_0xd46e('0x85')][_0xd46e('0x86')]});})[_0xd46e('0x27')](function(_0x4bb76b){return{'rows':_0x4bb76b||[],'count':_0x18e140};});}});}exports['run']=function(_0x204a9f,_0x52ca5a){return runReport(_0x204a9f[_0xd46e('0x4b')],_0x204a9f[_0xd46e('0x38')],_0x204a9f['options'])[_0xd46e('0x27')](respondWithResult(_0x52ca5a,null))[_0xd46e('0x4a')](handleError(_0x52ca5a,null));};exports[_0xd46e('0x9f')]=runReport;exports[_0xd46e('0x38')]=function(_0x786ae,_0x537c73){var _0x1610bd=0xa;var _0x20cc4c=[_0xd46e('0x55'),_0xd46e('0xa0'),_0xd46e('0x56'),_0xd46e('0x57')];var _0x368742={'SUM':_0xd46e('0x58'),'COUNT':_0xd46e('0xa1'),'COUNT DISTINCT':_0xd46e('0x59'),'MAX':_0xd46e('0x5a'),'MIN':_0xd46e('0xa2'),'AVG':_0xd46e('0xa3'),'GROUP_CONCAT':_0xd46e('0x5b'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xd46e('0x5d')};var _0x285cf8={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xd46e('0x5e'),'HOUR':_0xd46e('0x5f'),'ROUND':_0xd46e('0x60'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0xc87da2=function(_0x195f02){return!_[_0xd46e('0x62')]([_0xd46e('0x63'),'IS\x20NOT\x20NULL',_0xd46e('0x65'),_0xd46e('0x66')],_0x195f02);};var _0x44322f=function(_0x49959f){if(!_0x49959f||!_0x49959f['rules'][_0xd46e('0x3d')]){return'';}for(var _0x2094e5='(',_0x85aac1=0x0;_0x85aac1<_0x49959f[_0xd46e('0x67')][_0xd46e('0x3d')];_0x85aac1+=0x1){_0x85aac1>0x0&&(_0x2094e5+='\x20'+_0x49959f[_0xd46e('0x68')]+'\x20');_0x2094e5+=_0x49959f['rules'][_0x85aac1][_0xd46e('0x69')]?_0x44322f(_0x49959f['rules'][_0x85aac1][_0xd46e('0x69')]):_0x49959f['rules'][_0x85aac1][_0xd46e('0x6a')]+'\x20'+_0x49959f['rules'][_0x85aac1]['condition']+(_0xc87da2(_0x49959f[_0xd46e('0x67')][_0x85aac1][_0xd46e('0x6b')])?'\x20'+_0x49959f[_0xd46e('0x67')][_0x85aac1][_0xd46e('0x88')]:'');}return _0x2094e5+')';};var _0x101a29={'where':{'id':_0x786ae[_0xd46e('0x4b')]['id']}},_0x3a44da,_0x417068,_0x52e73e,_0x206077,_0xe729b6;_0x101a29=_[_0xd46e('0x45')]({},_0x101a29,_0x786ae[_0xd46e('0x46')]);return db['AnalyticDefaultReport'][_0xd46e('0x4c')](_0x101a29)[_0xd46e('0x27')](function(_0x1d08bb){if(_0x1d08bb){_0x3a44da=_0x1d08bb;return _0x1d08bb['getFields']();}return null;})[_0xd46e('0x27')](function(_0x8c6ed1){if(_0x8c6ed1){if(!_0x8c6ed1['length']){throw new db['Sequelize']['ValidationErrorItem'](_0xd46e('0x6f'),0x193);}_0x417068=_0x8c6ed1;return db[_0xd46e('0x89')]['findAll']({'raw':!![]});}return null;})[_0xd46e('0x27')](function(_0x3a13f8){if(_0x3a13f8){_0x52e73e=_['keyBy'](_0x3a13f8,'id');var _0x5a8661;var _0x157fb0=squel[_0xd46e('0x8a')]();_0x157fb0[_0xd46e('0x71')](_0x3a44da[_0xd46e('0x72')]);for(var _0x50750f=0x0;_0x50750f<_0x417068['length'];_0x50750f+=0x1){_0x5a8661=_0x417068[_0x50750f][_0xd46e('0x73')]?_0x52e73e[_0x417068[_0x50750f][_0xd46e('0x73')]][_0xd46e('0x74')]:_0x417068[_0x50750f][_0xd46e('0x6a')];_0x5a8661=_0x417068[_0x50750f][_0xd46e('0x75')]?_[_0xd46e('0x76')](_0x368742[_0x417068[_0x50750f][_0xd46e('0x75')]],'%s',_0x5a8661):_0x5a8661;_0x5a8661=_0x417068[_0x50750f]['format']?_[_0xd46e('0x76')](_0x285cf8[_0x417068[_0x50750f][_0xd46e('0x77')]],'%s',_0x5a8661):_0x5a8661;if(_0x417068[_0x50750f]['groupBy']){_0x157fb0[_0xd46e('0x69')](_0x5a8661);}_0x417068[_0x50750f][_0xd46e('0x79')]&&_0x157fb0[_0xd46e('0x7a')](_0x5a8661,_0x417068[_0x50750f][_0xd46e('0x79')]===_0xd46e('0x8b')?![]:!![]);_0x157fb0[_0xd46e('0x6a')](_0x5a8661,_0x417068[_0x50750f][_0xd46e('0x7b')]||_0x5a8661);}if(_0x3a44da[_0xd46e('0x7c')]){_0x3a44da['joins']=JSON[_0xd46e('0x82')](_0x3a44da[_0xd46e('0x7c')]);for(var _0x3c819b=0x0;_0x3c819b<_0x3a44da[_0xd46e('0x7c')][_0xd46e('0x3d')];_0x3c819b+=0x1){if(_0x3a44da['joins'][_0x3c819b][_0xd46e('0x36')]&&_[_0xd46e('0x62')](_0x20cc4c,_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x36')])&&_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x7d')]&&_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x7f')]&&_0x3a44da[_0xd46e('0x7c')][_0x3c819b]['foreignKey']){_0x157fb0[_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x36')]](_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x7f')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x3a44da[_0xd46e('0x72')],_0x3a44da['joins'][_0x3c819b][_0xd46e('0x7d')],_0x3a44da[_0xd46e('0x7c')][_0x3c819b][_0xd46e('0x7f')],_0x3a44da[_0xd46e('0x7c')][_0x3c819b]['foreignKey']));}}}if(_0x3a44da[_0xd46e('0x81')]){_0x3a44da[_0xd46e('0x81')]=JSON[_0xd46e('0x82')](_0x3a44da[_0xd46e('0x81')]);_0x157fb0[_0xd46e('0x41')](_0x44322f(_0x3a44da[_0xd46e('0x81')][_0xd46e('0x69')]));}_0xe729b6=_0x157fb0[_0xd46e('0x83')]();_0x157fb0[_0xd46e('0x1f')](_0x1610bd);_0x157fb0['offset'](0x0);logger['debug'](_0xd46e('0xa4'),_0x157fb0['toString']());return dbH[_0xd46e('0x9e')][_0xd46e('0x38')](_0x157fb0[_0xd46e('0x84')](),{'type':dbH['sequelize'][_0xd46e('0x85')][_0xd46e('0x86')]});}})[_0xd46e('0x27')](function(){return{'sql':_0xe729b6['toString']()};})['then'](respondWithResult(_0x537c73,null))[_0xd46e('0x4a')](handleError(_0x537c73,null));};
\ No newline at end of file
+var _0x814b=['attributes','intersection','length','nolimit','limit','order','where','filter','merge','options','includeAll','findAll','catch','show','params','rawAttributes','fields','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','preview','join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','group','field','condition','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','select','table','MetricId','metric','replace','function','format','orderBy','DESC','alias','joins','parse','parentKey','foreignTable','foreignKey','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','left_join','right_join','MAX(%s)','operator','value','Sequelize','keyBy','from','groupBy','%s.%s\x20=\x20%s.%s','output','web','fullPath','csv','default','AnalyticExtractedReport','cdr','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','SELECT','run','runReport','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','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/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','then','destroy','get','DefaultReports','UserProfileResource','error','name','send','map','AnalyticDefaultReport','fieldName','type','model','query','keys','filters'];(function(_0x3b3331,_0x420c2f){var _0x214e10=function(_0x5f4c27){while(--_0x5f4c27){_0x3b3331['push'](_0x3b3331['shift']());}};_0x214e10(++_0x420c2f);}(_0x814b,0x1a2));var _0xb814=function(_0x2300f2,_0x315c5f){_0x2300f2=_0x2300f2-0x0;var _0x6bd508=_0x814b[_0x2300f2];return _0x6bd508;};'use strict';var emlformat=require(_0xb814('0x0'));var rimraf=require(_0xb814('0x1'));var zipdir=require(_0xb814('0x2'));var jsonpatch=require(_0xb814('0x3'));var rp=require(_0xb814('0x4'));var moment=require(_0xb814('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb814('0x6'));var util=require(_0xb814('0x7'));var path=require(_0xb814('0x8'));var sox=require(_0xb814('0x9'));var csv=require(_0xb814('0xa'));var ejs=require(_0xb814('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb814('0xc'));var squel=require(_0xb814('0xd'));var crypto=require('crypto');var jsforce=require(_0xb814('0xe'));var deskjs=require(_0xb814('0xf'));var toCsv=require(_0xb814('0xa'));var querystring=require(_0xb814('0x10'));var Papa=require(_0xb814('0x11'));var Redis=require(_0xb814('0x12'));var authService=require(_0xb814('0x13'));var qs=require(_0xb814('0x14'));var as=require(_0xb814('0x15'));var hardwareService=require(_0xb814('0x16'));var logger=require(_0xb814('0x17'))('api');var utils=require(_0xb814('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xb814('0x19'));var db=require(_0xb814('0x1a'))['db'];var dbH=require(_0xb814('0x1a'))[_0xb814('0x1b')];function respondWithStatusCode(_0x2ce718,_0x3bde14){_0x3bde14=_0x3bde14||0xcc;return function(_0x1438e7){if(_0x1438e7){return _0x2ce718[_0xb814('0x1c')](_0x3bde14);}return _0x2ce718[_0xb814('0x1d')](_0x3bde14)[_0xb814('0x1e')]();};}function respondWithResult(_0x3f4881,_0x44fb96){_0x44fb96=_0x44fb96||0xc8;return function(_0x17f5bd){if(_0x17f5bd){return _0x3f4881[_0xb814('0x1d')](_0x44fb96)[_0xb814('0x1f')](_0x17f5bd);}};}function respondWithFilteredResult(_0x3a71d6,_0x45e0d0){return function(_0x265a83){if(_0x265a83){var _0x125ce2=typeof _0x45e0d0[_0xb814('0x20')]===_0xb814('0x21')&&typeof _0x45e0d0['limit']===_0xb814('0x21');var _0x55ba16=_0x265a83[_0xb814('0x22')];var _0xfac75b=_0x125ce2?0x0:_0x45e0d0['offset'];var _0x4b55a7=_0x125ce2?_0x265a83['count']:_0x45e0d0[_0xb814('0x20')]+_0x45e0d0['limit'];var _0x57c128;if(_0x4b55a7>=_0x55ba16){_0x4b55a7=_0x55ba16;_0x57c128=0xc8;}else{_0x57c128=0xce;}_0x3a71d6[_0xb814('0x1d')](_0x57c128);return _0x3a71d6[_0xb814('0x23')](_0xb814('0x24'),_0xfac75b+'-'+_0x4b55a7+'/'+_0x55ba16)['json'](_0x265a83);}return null;};}function patchUpdates(_0xf5b8aa){return function(_0x531032){try{jsonpatch[_0xb814('0x25')](_0x531032,_0xf5b8aa,!![]);}catch(_0x1808a3){return BPromise[_0xb814('0x26')](_0x1808a3);}return _0x531032[_0xb814('0x27')]();};}function saveUpdates(_0x27352e,_0x2bd039){return function(_0x1f5d40){if(_0x1f5d40){return _0x1f5d40['update'](_0x27352e)[_0xb814('0x28')](function(_0x52b7a3){return _0x52b7a3;});}return null;};}function removeEntity(_0x3f81d0,_0x457dac){return function(_0x31c7ec){if(_0x31c7ec){return _0x31c7ec[_0xb814('0x29')]()[_0xb814('0x28')](function(){var _0xb9e57d=_0x31c7ec[_0xb814('0x2a')]({'plain':!![]});var _0x5755ea=_0xb814('0x2b');return db[_0xb814('0x2c')][_0xb814('0x29')]({'where':{'type':_0x5755ea,'resourceId':_0xb9e57d['id']}})[_0xb814('0x28')](function(){return _0x31c7ec;});})[_0xb814('0x28')](function(){_0x3f81d0[_0xb814('0x1d')](0xcc)[_0xb814('0x1e')]();});}};}function handleEntityNotFound(_0x1e4e89,_0x5a6291){return function(_0x271aa8){if(!_0x271aa8){_0x1e4e89[_0xb814('0x1c')](0x194);}return _0x271aa8;};}function handleError(_0x52ed64,_0x9008b2){_0x9008b2=_0x9008b2||0x1f4;return function(_0x37d24d){logger[_0xb814('0x2d')](_0x37d24d['stack']);if(_0x37d24d[_0xb814('0x2e')]){delete _0x37d24d[_0xb814('0x2e')];}_0x52ed64['status'](_0x9008b2)[_0xb814('0x2f')](_0x37d24d);};}exports['index']=function(_0x6efe9a,_0x5f3e9b){var _0x4cfc58={},_0x419cd9={},_0x4a4f27={'count':0x0,'rows':[]};var _0x2431e2=_[_0xb814('0x30')](db[_0xb814('0x31')]['rawAttributes'],function(_0x51d5ae){return{'name':_0x51d5ae[_0xb814('0x32')],'type':_0x51d5ae[_0xb814('0x33')]['key']};});_0x419cd9[_0xb814('0x34')]=_[_0xb814('0x30')](_0x2431e2,_0xb814('0x2e'));_0x419cd9[_0xb814('0x35')]=_[_0xb814('0x36')](_0x6efe9a[_0xb814('0x35')]);_0x419cd9[_0xb814('0x37')]=_['intersection'](_0x419cd9[_0xb814('0x34')],_0x419cd9[_0xb814('0x35')]);_0x4cfc58[_0xb814('0x38')]=_[_0xb814('0x39')](_0x419cd9[_0xb814('0x34')],qs['fields'](_0x6efe9a[_0xb814('0x35')]['fields']));_0x4cfc58[_0xb814('0x38')]=_0x4cfc58[_0xb814('0x38')][_0xb814('0x3a')]?_0x4cfc58['attributes']:_0x419cd9[_0xb814('0x34')];if(!_0x6efe9a[_0xb814('0x35')]['hasOwnProperty'](_0xb814('0x3b'))){_0x4cfc58[_0xb814('0x3c')]=qs[_0xb814('0x3c')](_0x6efe9a[_0xb814('0x35')][_0xb814('0x3c')]);_0x4cfc58[_0xb814('0x20')]=qs['offset'](_0x6efe9a[_0xb814('0x35')]['offset']);}_0x4cfc58[_0xb814('0x3d')]=qs['sort'](_0x6efe9a[_0xb814('0x35')]['sort']);_0x4cfc58[_0xb814('0x3e')]=qs[_0xb814('0x37')](_['pick'](_0x6efe9a['query'],_0x419cd9['filters']),_0x2431e2);if(_0x6efe9a['query'][_0xb814('0x3f')]){_0x4cfc58[_0xb814('0x3e')]=_[_0xb814('0x40')](_0x4cfc58[_0xb814('0x3e')],{'$or':_['map'](_0x2431e2,function(_0x47d782){if(_0x47d782[_0xb814('0x33')]!=='VIRTUAL'){var _0x2a93da={};_0x2a93da[_0x47d782[_0xb814('0x2e')]]={'$like':'%'+_0x6efe9a[_0xb814('0x35')][_0xb814('0x3f')]+'%'};return _0x2a93da;}})});}_0x4cfc58=_[_0xb814('0x40')]({},_0x4cfc58,_0x6efe9a[_0xb814('0x41')]);var _0x3b7f5a={'where':_0x4cfc58[_0xb814('0x3e')]};return db[_0xb814('0x31')]['count'](_0x3b7f5a)['then'](function(_0x5d26be){_0x4a4f27[_0xb814('0x22')]=_0x5d26be;if(_0x6efe9a['query'][_0xb814('0x42')]){_0x4cfc58['include']=[{'all':!![]}];}return db[_0xb814('0x31')][_0xb814('0x43')](_0x4cfc58);})[_0xb814('0x28')](function(_0x2e97cc){_0x4a4f27['rows']=_0x2e97cc;return _0x4a4f27;})[_0xb814('0x28')](respondWithFilteredResult(_0x5f3e9b,_0x4cfc58))[_0xb814('0x44')](handleError(_0x5f3e9b,null));};exports[_0xb814('0x45')]=function(_0x22cf27,_0x7d92aa){var _0x450a08={'raw':!![],'where':{'id':_0x22cf27[_0xb814('0x46')]['id']}},_0x534eb8={};_0x534eb8[_0xb814('0x34')]=_[_0xb814('0x36')](db[_0xb814('0x31')][_0xb814('0x47')]);_0x534eb8[_0xb814('0x35')]=_[_0xb814('0x36')](_0x22cf27['query']);_0x534eb8['filters']=_[_0xb814('0x39')](_0x534eb8[_0xb814('0x34')],_0x534eb8[_0xb814('0x35')]);_0x450a08[_0xb814('0x38')]=_[_0xb814('0x39')](_0x534eb8[_0xb814('0x34')],qs[_0xb814('0x48')](_0x22cf27[_0xb814('0x35')][_0xb814('0x48')]));_0x450a08[_0xb814('0x38')]=_0x450a08[_0xb814('0x38')]['length']?_0x450a08[_0xb814('0x38')]:_0x534eb8[_0xb814('0x34')];if(_0x22cf27['query'][_0xb814('0x42')]){_0x450a08['include']=[{'all':!![]}];}_0x450a08=_[_0xb814('0x40')]({},_0x450a08,_0x22cf27[_0xb814('0x41')]);return db[_0xb814('0x31')][_0xb814('0x49')](_0x450a08)[_0xb814('0x28')](handleEntityNotFound(_0x7d92aa,null))[_0xb814('0x28')](respondWithResult(_0x7d92aa,null))[_0xb814('0x44')](handleError(_0x7d92aa,null));};exports[_0xb814('0x4a')]=function(_0x32a397,_0x2a422a){return db['AnalyticDefaultReport']['create'](_0x32a397[_0xb814('0x4b')],{})[_0xb814('0x28')](function(_0x4156d8){var _0x3f8e29=_0x32a397[_0xb814('0x4c')][_0xb814('0x2a')]({'plain':!![]});if(!_0x3f8e29)throw new Error(_0xb814('0x4d'));if(_0x3f8e29['role']===_0xb814('0x4c')){var _0x388324=_0x4156d8[_0xb814('0x2a')]({'plain':!![]});var _0x5a916d=_0xb814('0x4e');return db['UserProfileSection'][_0xb814('0x49')]({'where':{'name':_0x5a916d,'userProfileId':_0x3f8e29['userProfileId']},'raw':!![]})[_0xb814('0x28')](function(_0x3cf8f8){if(_0x3cf8f8&&_0x3cf8f8['autoAssociation']===0x0){return db[_0xb814('0x2c')][_0xb814('0x4a')]({'name':_0x388324[_0xb814('0x2e')],'resourceId':_0x388324['id'],'type':'DefaultReports','sectionId':_0x3cf8f8['id']},{})[_0xb814('0x28')](function(){return _0x4156d8;});}else{return _0x4156d8;}})['catch'](function(_0x13bdcf){logger[_0xb814('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x13bdcf);throw _0x13bdcf;});}return _0x4156d8;})[_0xb814('0x28')](respondWithResult(_0x2a422a,0xc9))['catch'](handleError(_0x2a422a,null));};exports['update']=function(_0x3b9709,_0x35f59a){if(_0x3b9709[_0xb814('0x4b')]['id']){delete _0x3b9709['body']['id'];}return db[_0xb814('0x31')]['find']({'where':{'id':_0x3b9709[_0xb814('0x46')]['id']}})[_0xb814('0x28')](handleEntityNotFound(_0x35f59a,null))['then'](saveUpdates(_0x3b9709[_0xb814('0x4b')],null))['then'](respondWithResult(_0x35f59a,null))[_0xb814('0x44')](handleError(_0x35f59a,null));};exports[_0xb814('0x29')]=function(_0xb2bd82,_0x113fe5){return db[_0xb814('0x31')][_0xb814('0x49')]({'where':{'id':_0xb2bd82[_0xb814('0x46')]['id']}})[_0xb814('0x28')](handleEntityNotFound(_0x113fe5,null))['then'](removeEntity(_0x113fe5,null))[_0xb814('0x44')](handleError(_0x113fe5,null));};exports[_0xb814('0x4f')]=function(_0x5d71d5,_0x29a127){var _0xe14249=0xa;var _0x4d13db=[_0xb814('0x50'),'left_join','right_join',_0xb814('0x51')];var _0x5257be={'SUM':_0xb814('0x52'),'COUNT':_0xb814('0x53'),'COUNT DISTINCT':_0xb814('0x54'),'MAX':'MAX(%s)','MIN':_0xb814('0x55'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xb814('0x56'),'GROUP_CONCAT ASC':_0xb814('0x57'),'GROUP_CONCAT DESC':_0xb814('0x58')};var _0x176585={'SEC_TO_TIME':_0xb814('0x59'),'DATE':_0xb814('0x5a'),'HOUR':_0xb814('0x5b'),'ROUND':_0xb814('0x5c'),'UNIX_TIMESTAMP':_0xb814('0x5d')};var _0x4d611d=function(_0x211194){return!_[_0xb814('0x5e')]([_0xb814('0x5f'),_0xb814('0x60'),_0xb814('0x61'),_0xb814('0x62')],_0x211194);};var _0x52edfa=function(_0x135e13){if(!_0x135e13||!_0x135e13['rules'][_0xb814('0x3a')]){return'';}for(var _0x39b754='(',_0xac95cf=0x0;_0xac95cf<_0x135e13['rules'][_0xb814('0x3a')];_0xac95cf+=0x1){_0xac95cf>0x0&&(_0x39b754+='\x20'+_0x135e13['operator']+'\x20');_0x39b754+=_0x135e13[_0xb814('0x63')][_0xac95cf]['group']?_0x52edfa(_0x135e13[_0xb814('0x63')][_0xac95cf][_0xb814('0x64')]):_0x135e13[_0xb814('0x63')][_0xac95cf][_0xb814('0x65')]+'\x20'+_0x135e13[_0xb814('0x63')][_0xac95cf][_0xb814('0x66')]+(_0x4d611d(_0x135e13[_0xb814('0x63')][_0xac95cf]['condition'])?'\x20'+_0x135e13[_0xb814('0x63')][_0xac95cf]['value']:'');}return _0x39b754+')';};var _0x255047={'where':{'id':_0x5d71d5['params']['id']}},_0x22c73f,_0x1b989d,_0x3dcaeb,_0x19fa45,_0x139531;_0x255047=_[_0xb814('0x40')]({},_0x255047,_0x5d71d5[_0xb814('0x41')]);return db['AnalyticDefaultReport'][_0xb814('0x49')](_0x255047)[_0xb814('0x28')](function(_0x263699){if(_0x263699){_0x22c73f=_0x263699;return _0x263699[_0xb814('0x67')]();}return null;})[_0xb814('0x28')](function(_0x51d834){if(_0x51d834){if(!_0x51d834[_0xb814('0x3a')]){throw new db['Sequelize'][(_0xb814('0x68'))](_0xb814('0x69'),0x193);}_0x1b989d=_0x51d834;return db[_0xb814('0x6a')][_0xb814('0x43')]({'raw':!![]});}return null;})[_0xb814('0x28')](function(_0x41bcaf){if(_0x41bcaf){_0x3dcaeb=_['keyBy'](_0x41bcaf,'id');var _0x506bf2;var _0x5d064b=squel[_0xb814('0x6b')]();_0x5d064b['from'](_0x22c73f[_0xb814('0x6c')]);for(var _0x1d3954=0x0;_0x1d3954<_0x1b989d[_0xb814('0x3a')];_0x1d3954+=0x1){_0x506bf2=_0x1b989d[_0x1d3954]['MetricId']?_0x3dcaeb[_0x1b989d[_0x1d3954][_0xb814('0x6d')]][_0xb814('0x6e')]:_0x1b989d[_0x1d3954][_0xb814('0x65')];_0x506bf2=_0x1b989d[_0x1d3954]['function']?_[_0xb814('0x6f')](_0x5257be[_0x1b989d[_0x1d3954][_0xb814('0x70')]],'%s',_0x506bf2):_0x506bf2;_0x506bf2=_0x1b989d[_0x1d3954][_0xb814('0x71')]?_[_0xb814('0x6f')](_0x176585[_0x1b989d[_0x1d3954]['format']],'%s',_0x506bf2):_0x506bf2;if(_0x1b989d[_0x1d3954]['groupBy']){_0x5d064b[_0xb814('0x64')](_0x506bf2);}_0x1b989d[_0x1d3954][_0xb814('0x72')]&&_0x5d064b[_0xb814('0x3d')](_0x506bf2,_0x1b989d[_0x1d3954][_0xb814('0x72')]===_0xb814('0x73')?![]:!![]);_0x5d064b[_0xb814('0x65')](_0x506bf2,_0x1b989d[_0x1d3954][_0xb814('0x74')]||_0x506bf2);}if(_0x22c73f[_0xb814('0x75')]){_0x22c73f[_0xb814('0x75')]=JSON[_0xb814('0x76')](_0x22c73f[_0xb814('0x75')]);for(var _0x226b0e=0x0;_0x226b0e<_0x22c73f[_0xb814('0x75')][_0xb814('0x3a')];_0x226b0e+=0x1){if(_0x22c73f[_0xb814('0x75')][_0x226b0e]['type']&&_[_0xb814('0x5e')](_0x4d13db,_0x22c73f[_0xb814('0x75')][_0x226b0e][_0xb814('0x33')])&&_0x22c73f[_0xb814('0x75')][_0x226b0e][_0xb814('0x77')]&&_0x22c73f[_0xb814('0x75')][_0x226b0e]['foreignTable']&&_0x22c73f[_0xb814('0x75')][_0x226b0e]['foreignKey']){_0x5d064b[_0x22c73f[_0xb814('0x75')][_0x226b0e][_0xb814('0x33')]](_0x22c73f[_0xb814('0x75')][_0x226b0e][_0xb814('0x78')],null,util[_0xb814('0x71')]('%s.%s\x20=\x20%s.%s',_0x22c73f['table'],_0x22c73f[_0xb814('0x75')][_0x226b0e][_0xb814('0x77')],_0x22c73f[_0xb814('0x75')][_0x226b0e][_0xb814('0x78')],_0x22c73f['joins'][_0x226b0e][_0xb814('0x79')]));}}}if(_0x22c73f['conditions']){_0x22c73f[_0xb814('0x7a')]=JSON[_0xb814('0x76')](_0x22c73f['conditions']);_0x5d064b['where'](_0x52edfa(_0x22c73f[_0xb814('0x7a')]['group']));}_0x139531=_0x5d064b[_0xb814('0x7b')]();_0x5d064b[_0xb814('0x3c')](_0xe14249);_0x5d064b[_0xb814('0x20')](0x0);logger[_0xb814('0x7c')](_0xb814('0x7d'),_0x5d064b[_0xb814('0x7e')]());return dbH[_0xb814('0x7f')]['query'](_0x5d064b[_0xb814('0x7e')](),{'type':dbH['sequelize'][_0xb814('0x80')]['SELECT']});}})[_0xb814('0x28')](respondWithResult(_0x29a127,null))[_0xb814('0x44')](handleError(_0x29a127,null));};function runReport(_0x58d56c,_0x10a90d,_0x583f26){var _0x37adec=_0x10a90d[_0xb814('0x2e')];var _0x4e15c2=0xa;var _0x5a0c4a=[_0xb814('0x50'),_0xb814('0x81'),_0xb814('0x82'),_0xb814('0x51')];var _0x220f8b={'SUM':_0xb814('0x52'),'COUNT':_0xb814('0x53'),'COUNT DISTINCT':_0xb814('0x54'),'MAX':_0xb814('0x83'),'MIN':_0xb814('0x55'),'AVG':'AVG(%s)','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 _0x52b6da={'SEC_TO_TIME':_0xb814('0x59'),'DATE':_0xb814('0x5a'),'HOUR':_0xb814('0x5b'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xb814('0x5d')};var _0x1fb1ea=function(_0x31c072){return!_[_0xb814('0x5e')]([_0xb814('0x5f'),_0xb814('0x60'),_0xb814('0x61'),_0xb814('0x62')],_0x31c072);};var _0x5cf5ad=function(_0x20efc3){if(!_0x20efc3||!_0x20efc3[_0xb814('0x63')][_0xb814('0x3a')]){return'';}for(var _0x30faa0='(',_0x55ceb8=0x0;_0x55ceb8<_0x20efc3[_0xb814('0x63')][_0xb814('0x3a')];_0x55ceb8+=0x1){_0x55ceb8>0x0&&(_0x30faa0+='\x20'+_0x20efc3[_0xb814('0x84')]+'\x20');_0x30faa0+=_0x20efc3[_0xb814('0x63')][_0x55ceb8][_0xb814('0x64')]?_0x5cf5ad(_0x20efc3['rules'][_0x55ceb8]['group']):_0x20efc3[_0xb814('0x63')][_0x55ceb8]['field']+'\x20'+_0x20efc3[_0xb814('0x63')][_0x55ceb8][_0xb814('0x66')]+(_0x1fb1ea(_0x20efc3['rules'][_0x55ceb8][_0xb814('0x66')])?'\x20'+_0x20efc3['rules'][_0x55ceb8][_0xb814('0x85')]:'');}return _0x30faa0+')';};var _0x520d0f={'where':{'id':_0x58d56c['id']}},_0x44e668,_0x1aff2b,_0x41867b,_0x2c3948,_0x2d8899;_0x520d0f=_[_0xb814('0x40')]({},_0x520d0f,_0x583f26);return db[_0xb814('0x31')]['find'](_0x520d0f)['then'](function(_0x21aa36){if(_0x21aa36){_0x44e668=_0x21aa36;return _0x21aa36['getFields']();}return null;})['then'](function(_0x2d0061){if(_0x2d0061){if(!_0x2d0061[_0xb814('0x3a')]){throw new db[(_0xb814('0x86'))]['ValidationErrorItem'](_0xb814('0x69'),0x193);}_0x1aff2b=_0x2d0061;return db['AnalyticMetric'][_0xb814('0x43')]({'raw':!![]});}return null;})[_0xb814('0x28')](function(_0x14ec54){if(_0x14ec54){_0x41867b=_[_0xb814('0x87')](_0x14ec54,'id');var _0x4c8a00;var _0x1454b3=squel[_0xb814('0x6b')]();_0x1454b3[_0xb814('0x88')](_0x44e668['table']);for(var _0x1ebbf6=0x0;_0x1ebbf6<_0x1aff2b[_0xb814('0x3a')];_0x1ebbf6+=0x1){_0x4c8a00=_0x1aff2b[_0x1ebbf6][_0xb814('0x6d')]?_0x41867b[_0x1aff2b[_0x1ebbf6]['MetricId']][_0xb814('0x6e')]:_0x1aff2b[_0x1ebbf6][_0xb814('0x65')];_0x4c8a00=_0x1aff2b[_0x1ebbf6][_0xb814('0x70')]?_[_0xb814('0x6f')](_0x220f8b[_0x1aff2b[_0x1ebbf6][_0xb814('0x70')]],'%s',_0x4c8a00):_0x4c8a00;_0x4c8a00=_0x1aff2b[_0x1ebbf6][_0xb814('0x71')]?_[_0xb814('0x6f')](_0x52b6da[_0x1aff2b[_0x1ebbf6][_0xb814('0x71')]],'%s',_0x4c8a00):_0x4c8a00;if(_0x1aff2b[_0x1ebbf6][_0xb814('0x89')]){_0x1454b3[_0xb814('0x64')](_0x4c8a00);}_0x1aff2b[_0x1ebbf6][_0xb814('0x72')]&&_0x1454b3[_0xb814('0x3d')](_0x4c8a00,_0x1aff2b[_0x1ebbf6][_0xb814('0x72')]==='DESC'?![]:!![]);_0x1454b3['field'](_0x4c8a00,_0x1aff2b[_0x1ebbf6][_0xb814('0x74')]||_0x4c8a00);}if(_0x44e668['joins']){_0x44e668[_0xb814('0x75')]=JSON[_0xb814('0x76')](_0x44e668[_0xb814('0x75')]);for(var _0x2bc95b=0x0;_0x2bc95b<_0x44e668[_0xb814('0x75')][_0xb814('0x3a')];_0x2bc95b+=0x1){if(_0x44e668[_0xb814('0x75')][_0x2bc95b]['type']&&_['includes'](_0x5a0c4a,_0x44e668[_0xb814('0x75')][_0x2bc95b]['type'])&&_0x44e668[_0xb814('0x75')][_0x2bc95b][_0xb814('0x77')]&&_0x44e668[_0xb814('0x75')][_0x2bc95b]['foreignTable']&&_0x44e668[_0xb814('0x75')][_0x2bc95b][_0xb814('0x79')]){_0x1454b3[_0x44e668[_0xb814('0x75')][_0x2bc95b][_0xb814('0x33')]](_0x44e668[_0xb814('0x75')][_0x2bc95b]['foreignTable'],null,util[_0xb814('0x71')](_0xb814('0x8a'),_0x44e668['table'],_0x44e668[_0xb814('0x75')][_0x2bc95b][_0xb814('0x77')],_0x44e668[_0xb814('0x75')][_0x2bc95b]['foreignTable'],_0x44e668[_0xb814('0x75')][_0x2bc95b][_0xb814('0x79')]));}}}if(_0x44e668['conditions']){_0x44e668[_0xb814('0x7a')]=JSON[_0xb814('0x76')](_0x44e668['conditions']);_0x1454b3[_0xb814('0x3e')](_0x5cf5ad(_0x44e668[_0xb814('0x7a')][_0xb814('0x64')]));}_0x2d8899=_0x1454b3[_0xb814('0x7b')]();_0x1454b3[_0xb814('0x3c')](_0x4e15c2);_0x1454b3[_0xb814('0x20')](0x0);return;}})[_0xb814('0x28')](function(){if(_0x10a90d[_0xb814('0x8b')]===_0xb814('0x8c')){return null;}var _0x1f8c7a=_[_0xb814('0x40')](_0x10a90d,{'name':_0x10a90d[_0xb814('0x8d')]||_0x10a90d['name']||_0x44e668['name'],'basename':_0x37adec,'savename':util[_0xb814('0x71')]('%s-%s.%s',_0x10a90d['name']||_0x44e668[_0xb814('0x2e')],require('randomstring')['generate'](0x4),_0x10a90d['output']||_0xb814('0x8e')),'reportId':_0x44e668['id'],'reportType':_0xb814('0x8f')});return db[_0xb814('0x90')]['create'](_0x1f8c7a,{'raw':!![]});})[_0xb814('0x28')](function(_0x4dbe89){if(_0x44e668[_0xb814('0x6c')]===_0xb814('0x91')){_0x2d8899['where'](_0x44e668[_0xb814('0x6c')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x10a90d[_0xb814('0x92')],_0x10a90d[_0xb814('0x93')]);}else{_0x2d8899[_0xb814('0x3e')](_0x44e668[_0xb814('0x6c')]+_0xb814('0x94'),_0x10a90d[_0xb814('0x92')],_0x10a90d[_0xb814('0x93')]);}if(_0x4dbe89){logger[_0xb814('0x95')](_0xb814('0x96'),_0x2d8899[_0xb814('0x7e')]());require(_0xb814('0x97'))[_0xb814('0x98')](path[_0xb814('0x50')](__dirname,_0xb814('0x99'),_0x4dbe89[_0xb814('0x8b')]),[_0x4dbe89['id'],_0x2d8899['toString'](),path[_0xb814('0x50')](__dirname,_0xb814('0x9a'),_0x4dbe89['savename']),_0x37adec]);return _0x4dbe89;}else{var _0x2c7cd6=squel[_0xb814('0x6b')]();_0x2c7cd6[_0xb814('0x88')]('('+_0x2d8899['toString']()+')','countTable');_0x2c7cd6[_0xb814('0x65')]('COUNT(*)',_0xb814('0x22'));_0x2d8899['limit'](_0x10a90d[_0xb814('0x3c')]||_0x4e15c2);_0x2d8899['offset'](_0x10a90d['offset']||0x0);return dbH[_0xb814('0x7f')][_0xb814('0x35')](_0x2c7cd6[_0xb814('0x7e')](),{'type':dbH[_0xb814('0x7f')][_0xb814('0x80')][_0xb814('0x9b')]})[_0xb814('0x28')](function(_0x4543c3){if(!_0x4543c3[_0xb814('0x3a')]){_0x2c3948=0x0;}else{_0x2c3948=_0x4543c3[0x0][_0xb814('0x22')]||0x0;}return dbH[_0xb814('0x7f')]['query'](_0x2d8899[_0xb814('0x7e')](),{'type':dbH['sequelize'][_0xb814('0x80')][_0xb814('0x9b')]});})[_0xb814('0x28')](function(_0x4fde6a){return{'rows':_0x4fde6a||[],'count':_0x2c3948};});}});}exports[_0xb814('0x9c')]=function(_0x18fb74,_0x371e92){return runReport(_0x18fb74[_0xb814('0x46')],_0x18fb74[_0xb814('0x35')],_0x18fb74[_0xb814('0x41')])[_0xb814('0x28')](respondWithResult(_0x371e92,null))[_0xb814('0x44')](handleError(_0x371e92,null));};exports[_0xb814('0x9d')]=runReport;exports[_0xb814('0x35')]=function(_0x3b65c0,_0x11e0c3){var _0x22c811=0xa;var _0x3fd24c=[_0xb814('0x50'),'left_join',_0xb814('0x82'),_0xb814('0x51')];var _0x3e61eb={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':_0xb814('0x54'),'MAX':'MAX(%s)','MIN':'MIN(%s)','AVG':'AVG(%s)','GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xb814('0x57'),'GROUP_CONCAT DESC':_0xb814('0x58')};var _0x5be0bb={'SEC_TO_TIME':_0xb814('0x59'),'DATE':_0xb814('0x5a'),'HOUR':_0xb814('0x5b'),'ROUND':_0xb814('0x5c'),'UNIX_TIMESTAMP':_0xb814('0x5d')};var _0x1bd9ab=function(_0x20e608){return!_[_0xb814('0x5e')]([_0xb814('0x5f'),_0xb814('0x60'),_0xb814('0x61'),'IS\x20NOT\x20EMPTY'],_0x20e608);};var _0x2a5dff=function(_0x553635){if(!_0x553635||!_0x553635[_0xb814('0x63')][_0xb814('0x3a')]){return'';}for(var _0x35e8f7='(',_0xa7ff62=0x0;_0xa7ff62<_0x553635[_0xb814('0x63')][_0xb814('0x3a')];_0xa7ff62+=0x1){_0xa7ff62>0x0&&(_0x35e8f7+='\x20'+_0x553635[_0xb814('0x84')]+'\x20');_0x35e8f7+=_0x553635[_0xb814('0x63')][_0xa7ff62]['group']?_0x2a5dff(_0x553635['rules'][_0xa7ff62]['group']):_0x553635[_0xb814('0x63')][_0xa7ff62][_0xb814('0x65')]+'\x20'+_0x553635[_0xb814('0x63')][_0xa7ff62][_0xb814('0x66')]+(_0x1bd9ab(_0x553635[_0xb814('0x63')][_0xa7ff62][_0xb814('0x66')])?'\x20'+_0x553635[_0xb814('0x63')][_0xa7ff62][_0xb814('0x85')]:'');}return _0x35e8f7+')';};var _0x41847e={'where':{'id':_0x3b65c0[_0xb814('0x46')]['id']}},_0x1a5685,_0x51313d,_0x5c989a,_0x41486b,_0x16c05b;_0x41847e=_[_0xb814('0x40')]({},_0x41847e,_0x3b65c0[_0xb814('0x41')]);return db[_0xb814('0x31')]['find'](_0x41847e)[_0xb814('0x28')](function(_0x52899a){if(_0x52899a){_0x1a5685=_0x52899a;return _0x52899a[_0xb814('0x67')]();}return null;})[_0xb814('0x28')](function(_0x205c6c){if(_0x205c6c){if(!_0x205c6c[_0xb814('0x3a')]){throw new db[(_0xb814('0x86'))][(_0xb814('0x68'))](_0xb814('0x69'),0x193);}_0x51313d=_0x205c6c;return db['AnalyticMetric'][_0xb814('0x43')]({'raw':!![]});}return null;})[_0xb814('0x28')](function(_0x1f04eb){if(_0x1f04eb){_0x5c989a=_[_0xb814('0x87')](_0x1f04eb,'id');var _0x4a1c4e;var _0x17c63b=squel[_0xb814('0x6b')]();_0x17c63b[_0xb814('0x88')](_0x1a5685[_0xb814('0x6c')]);for(var _0xa66ca3=0x0;_0xa66ca3<_0x51313d['length'];_0xa66ca3+=0x1){_0x4a1c4e=_0x51313d[_0xa66ca3][_0xb814('0x6d')]?_0x5c989a[_0x51313d[_0xa66ca3][_0xb814('0x6d')]][_0xb814('0x6e')]:_0x51313d[_0xa66ca3]['field'];_0x4a1c4e=_0x51313d[_0xa66ca3][_0xb814('0x70')]?_['replace'](_0x3e61eb[_0x51313d[_0xa66ca3][_0xb814('0x70')]],'%s',_0x4a1c4e):_0x4a1c4e;_0x4a1c4e=_0x51313d[_0xa66ca3]['format']?_[_0xb814('0x6f')](_0x5be0bb[_0x51313d[_0xa66ca3][_0xb814('0x71')]],'%s',_0x4a1c4e):_0x4a1c4e;if(_0x51313d[_0xa66ca3][_0xb814('0x89')]){_0x17c63b[_0xb814('0x64')](_0x4a1c4e);}_0x51313d[_0xa66ca3]['orderBy']&&_0x17c63b[_0xb814('0x3d')](_0x4a1c4e,_0x51313d[_0xa66ca3][_0xb814('0x72')]===_0xb814('0x73')?![]:!![]);_0x17c63b[_0xb814('0x65')](_0x4a1c4e,_0x51313d[_0xa66ca3][_0xb814('0x74')]||_0x4a1c4e);}if(_0x1a5685[_0xb814('0x75')]){_0x1a5685[_0xb814('0x75')]=JSON[_0xb814('0x76')](_0x1a5685[_0xb814('0x75')]);for(var _0x152260=0x0;_0x152260<_0x1a5685[_0xb814('0x75')][_0xb814('0x3a')];_0x152260+=0x1){if(_0x1a5685[_0xb814('0x75')][_0x152260][_0xb814('0x33')]&&_[_0xb814('0x5e')](_0x3fd24c,_0x1a5685['joins'][_0x152260][_0xb814('0x33')])&&_0x1a5685[_0xb814('0x75')][_0x152260][_0xb814('0x77')]&&_0x1a5685[_0xb814('0x75')][_0x152260][_0xb814('0x78')]&&_0x1a5685[_0xb814('0x75')][_0x152260]['foreignKey']){_0x17c63b[_0x1a5685[_0xb814('0x75')][_0x152260][_0xb814('0x33')]](_0x1a5685[_0xb814('0x75')][_0x152260][_0xb814('0x78')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x1a5685[_0xb814('0x6c')],_0x1a5685[_0xb814('0x75')][_0x152260][_0xb814('0x77')],_0x1a5685[_0xb814('0x75')][_0x152260][_0xb814('0x78')],_0x1a5685[_0xb814('0x75')][_0x152260]['foreignKey']));}}}if(_0x1a5685[_0xb814('0x7a')]){_0x1a5685[_0xb814('0x7a')]=JSON[_0xb814('0x76')](_0x1a5685[_0xb814('0x7a')]);_0x17c63b['where'](_0x2a5dff(_0x1a5685[_0xb814('0x7a')][_0xb814('0x64')]));}_0x16c05b=_0x17c63b[_0xb814('0x7b')]();_0x17c63b[_0xb814('0x3c')](_0x22c811);_0x17c63b[_0xb814('0x20')](0x0);logger['debug'](_0xb814('0x7d'),_0x17c63b[_0xb814('0x7e')]());return dbH[_0xb814('0x7f')][_0xb814('0x35')](_0x17c63b[_0xb814('0x7e')](),{'type':dbH[_0xb814('0x7f')][_0xb814('0x80')][_0xb814('0x9b')]});}})[_0xb814('0x28')](function(){return{'sql':_0x16c05b[_0xb814('0x7e')]()};})[_0xb814('0x28')](respondWithResult(_0x11e0c3,null))[_0xb814('0x44')](handleError(_0x11e0c3,null));};
\ No newline at end of file
index db6d55b..cd44722 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84bc=['exports','define','AnalyticDefaultReport','analytics_default_reports','lodash','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./analyticDefaultReport.attributes'];(function(_0x32b5db,_0x1a83a4){var _0x203c46=function(_0x568371){while(--_0x568371){_0x32b5db['push'](_0x32b5db['shift']());}};_0x203c46(++_0x1a83a4);}(_0x84bc,0x64));var _0xc84b=function(_0x5771d1,_0x38b898){_0x5771d1=_0x5771d1-0x0;var _0x40a3cc=_0x84bc[_0x5771d1];return _0x40a3cc;};'use strict';var _=require(_0xc84b('0x0'));var util=require('util');var logger=require(_0xc84b('0x1'))(_0xc84b('0x2'));var moment=require(_0xc84b('0x3'));var BPromise=require(_0xc84b('0x4'));var rp=require(_0xc84b('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xc84b('0x6'));var attributes=require(_0xc84b('0x7'));module[_0xc84b('0x8')]=function(_0x7d2ce0,_0x3e61f1){return _0x7d2ce0[_0xc84b('0x9')](_0xc84b('0xa'),attributes,{'tableName':_0xc84b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5480=['AnalyticDefaultReport','analytics_default_reports','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','define'];(function(_0x22074d,_0x33df85){var _0x3a24ce=function(_0x1dfb83){while(--_0x1dfb83){_0x22074d['push'](_0x22074d['shift']());}};_0x3a24ce(++_0x33df85);}(_0x5480,0x122));var _0x0548=function(_0x511bd1,_0x223e5b){_0x511bd1=_0x511bd1-0x0;var _0x4c48ec=_0x5480[_0x511bd1];return _0x4c48ec;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0548('0x0'))(_0x0548('0x1'));var moment=require(_0x0548('0x2'));var BPromise=require('bluebird');var rp=require(_0x0548('0x3'));var fs=require('fs');var path=require(_0x0548('0x4'));var rimraf=require(_0x0548('0x5'));var config=require(_0x0548('0x6'));var attributes=require(_0x0548('0x7'));module[_0x0548('0x8')]=function(_0x18d044,_0x48acf7){return _0x18d044[_0x0548('0x9')](_0x0548('0xa'),attributes,{'tableName':_0x0548('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a9ffcc4..d3383c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe17=['stringify','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x54d4fe,_0x55e869){var _0x1ab5bb=function(_0x5b1af2){while(--_0x5b1af2){_0x54d4fe['push'](_0x54d4fe['shift']());}};_0x1ab5bb(++_0x55e869);}(_0xbe17,0xc6));var _0x7be1=function(_0x157275,_0x19800d){_0x157275=_0x157275-0x0;var _0x3a22c1=_0xbe17[_0x157275];return _0x3a22c1;};'use strict';var _=require(_0x7be1('0x0'));var util=require(_0x7be1('0x1'));var moment=require('moment');var BPromise=require(_0x7be1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7be1('0x3'));var db=require(_0x7be1('0x4'))['db'];var utils=require(_0x7be1('0x5'));var logger=require(_0x7be1('0x6'))('rpc');var config=require(_0x7be1('0x7'));var jayson=require(_0x7be1('0x8'));var client=jayson[_0x7be1('0x9')][_0x7be1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1ccdb5,_0x188182,_0x471223){return new BPromise(function(_0x4130f5,_0x5671a0){return client[_0x7be1('0xb')](_0x1ccdb5,_0x471223)[_0x7be1('0xc')](function(_0x4da164){logger[_0x7be1('0xd')](_0x7be1('0xe'),_0x188182,'request\x20sent');logger[_0x7be1('0xf')](_0x7be1('0x10'),_0x188182,_0x7be1('0x11'),JSON[_0x7be1('0x12')](_0x4da164));if(_0x4da164[_0x7be1('0x13')]){if(_0x4da164[_0x7be1('0x13')][_0x7be1('0x14')]===0x1f4){logger[_0x7be1('0x13')](_0x7be1('0xe'),_0x188182,_0x4da164['error']['message']);return _0x5671a0(_0x4da164['error'][_0x7be1('0x15')]);}logger[_0x7be1('0x13')](_0x7be1('0xe'),_0x188182,_0x4da164[_0x7be1('0x13')][_0x7be1('0x15')]);return _0x4130f5(_0x4da164['error'][_0x7be1('0x15')]);}else{logger[_0x7be1('0xd')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x188182,_0x7be1('0x11'));_0x4130f5(_0x4da164[_0x7be1('0x16')][_0x7be1('0x15')]);}})[_0x7be1('0x17')](function(_0x5ca88d){logger[_0x7be1('0x13')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x188182,_0x5ca88d);_0x5671a0(_0x5ca88d);});});}
\ No newline at end of file
+var _0x4cdc=['info','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x368bd1,_0x1c868c){var _0x2296f6=function(_0x5f54fb){while(--_0x5f54fb){_0x368bd1['push'](_0x368bd1['shift']());}};_0x2296f6(++_0x1c868c);}(_0x4cdc,0xe1));var _0xc4cd=function(_0x10a784,_0x4c5d8b){_0x10a784=_0x10a784-0x0;var _0x3cddb0=_0x4cdc[_0x10a784];return _0x3cddb0;};'use strict';var _=require(_0xc4cd('0x0'));var util=require(_0xc4cd('0x1'));var moment=require(_0xc4cd('0x2'));var BPromise=require(_0xc4cd('0x3'));var rs=require(_0xc4cd('0x4'));var fs=require('fs');var Redis=require(_0xc4cd('0x5'));var db=require(_0xc4cd('0x6'))['db'];var utils=require(_0xc4cd('0x7'));var logger=require(_0xc4cd('0x8'))(_0xc4cd('0x9'));var config=require(_0xc4cd('0xa'));var jayson=require(_0xc4cd('0xb'));var client=jayson[_0xc4cd('0xc')][_0xc4cd('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x5b3c2a,_0x3e7959,_0x44e9cf){return new BPromise(function(_0x24e174,_0x5e5384){return client[_0xc4cd('0xe')](_0x5b3c2a,_0x44e9cf)['then'](function(_0x8c4ef2){logger[_0xc4cd('0xf')](_0xc4cd('0x10'),_0x3e7959,_0xc4cd('0x11'));logger['debug'](_0xc4cd('0x12'),_0x3e7959,_0xc4cd('0x11'),JSON[_0xc4cd('0x13')](_0x8c4ef2));if(_0x8c4ef2['error']){if(_0x8c4ef2[_0xc4cd('0x14')][_0xc4cd('0x15')]===0x1f4){logger[_0xc4cd('0x14')](_0xc4cd('0x10'),_0x3e7959,_0x8c4ef2[_0xc4cd('0x14')][_0xc4cd('0x16')]);return _0x5e5384(_0x8c4ef2[_0xc4cd('0x14')][_0xc4cd('0x16')]);}logger['error'](_0xc4cd('0x10'),_0x3e7959,_0x8c4ef2[_0xc4cd('0x14')]['message']);return _0x24e174(_0x8c4ef2[_0xc4cd('0x14')][_0xc4cd('0x16')]);}else{logger[_0xc4cd('0xf')](_0xc4cd('0x10'),_0x3e7959,_0xc4cd('0x11'));_0x24e174(_0x8c4ef2['result'][_0xc4cd('0x16')]);}})[_0xc4cd('0x17')](function(_0x1ceaf5){logger[_0xc4cd('0x14')](_0xc4cd('0x10'),_0x3e7959,_0x1ceaf5);_0x5e5384(_0x1ceaf5);});});}
\ No newline at end of file
index 2254c36..d525ea6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4af3=['./analyticDefaultReport.controller','get','isAuthenticated','/:id','show','/:id/preview','preview','run','query','post','create','put','update','delete','destroy','exports','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x53f69f,_0xecc70a){var _0x1c3d44=function(_0x260b74){while(--_0x260b74){_0x53f69f['push'](_0x53f69f['shift']());}};_0x1c3d44(++_0xecc70a);}(_0x4af3,0x118));var _0x34af=function(_0xf38ca5,_0x31986f){_0xf38ca5=_0xf38ca5-0x0;var _0x2c07c7=_0x4af3[_0xf38ca5];return _0x2c07c7;};'use strict';var multer=require('multer');var util=require(_0x34af('0x0'));var path=require(_0x34af('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x34af('0x2'));var auth=require(_0x34af('0x3'));var interaction=require(_0x34af('0x4'));var config=require(_0x34af('0x5'));var controller=require(_0x34af('0x6'));router[_0x34af('0x7')]('/',auth[_0x34af('0x8')](),controller['index']);router[_0x34af('0x7')](_0x34af('0x9'),auth[_0x34af('0x8')](),controller[_0x34af('0xa')]);router['get'](_0x34af('0xb'),auth[_0x34af('0x8')](),controller[_0x34af('0xc')]);router['get']('/:id/run',auth[_0x34af('0x8')](),controller[_0x34af('0xd')]);router[_0x34af('0x7')]('/:id/query',auth[_0x34af('0x8')](),controller[_0x34af('0xe')]);router[_0x34af('0xf')]('/',auth[_0x34af('0x8')](),controller[_0x34af('0x10')]);router[_0x34af('0x11')](_0x34af('0x9'),auth['isAuthenticated'](),controller[_0x34af('0x12')]);router[_0x34af('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x34af('0x14')]);module[_0x34af('0x15')]=router;
\ No newline at end of file
+var _0x71a1=['/:id','show','/:id/preview','preview','run','/:id/query','query','post','create','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','get','isAuthenticated'];(function(_0x55e08b,_0x421620){var _0xd1a7ff=function(_0x58c7ff){while(--_0x58c7ff){_0x55e08b['push'](_0x55e08b['shift']());}};_0xd1a7ff(++_0x421620);}(_0x71a1,0x1eb));var _0x171a=function(_0x1c733d,_0x578e79){_0x1c733d=_0x1c733d-0x0;var _0x1cdf9f=_0x71a1[_0x1c733d];return _0x1cdf9f;};'use strict';var multer=require(_0x171a('0x0'));var util=require(_0x171a('0x1'));var path=require(_0x171a('0x2'));var timeout=require(_0x171a('0x3'));var express=require(_0x171a('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x171a('0x5'));var interaction=require(_0x171a('0x6'));var config=require('../../config/environment');var controller=require('./analyticDefaultReport.controller');router[_0x171a('0x7')]('/',auth[_0x171a('0x8')](),controller['index']);router[_0x171a('0x7')](_0x171a('0x9'),auth[_0x171a('0x8')](),controller[_0x171a('0xa')]);router[_0x171a('0x7')](_0x171a('0xb'),auth[_0x171a('0x8')](),controller[_0x171a('0xc')]);router['get']('/:id/run',auth[_0x171a('0x8')](),controller[_0x171a('0xd')]);router[_0x171a('0x7')](_0x171a('0xe'),auth[_0x171a('0x8')](),controller[_0x171a('0xf')]);router[_0x171a('0x10')]('/',auth['isAuthenticated'](),controller[_0x171a('0x11')]);router['put'](_0x171a('0x9'),auth[_0x171a('0x8')](),controller['update']);router['delete'](_0x171a('0x9'),auth[_0x171a('0x8')](),controller[_0x171a('0x12')]);module[_0x171a('0x13')]=router;
\ No newline at end of file
index c9f2bb4..ae5394e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3f7=['UNSIGNED','moment','exports','STRING','ENUM','csv','pdf','xlsx','DATE','Loading','manual','INTEGER'];(function(_0x252805,_0x1d1e8e){var _0x3e74b9=function(_0x16d7a0){while(--_0x16d7a0){_0x252805['push'](_0x252805['shift']());}};_0x3e74b9(++_0x1d1e8e);}(_0xe3f7,0x1e1));var _0x7e3f=function(_0x442466,_0x210aff){_0x442466=_0x442466-0x0;var _0x574e1d=_0xe3f7[_0x442466];return _0x574e1d;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x7e3f('0x0'));module[_0x7e3f('0x1')]={'name':{'type':Sequelize[_0x7e3f('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x7e3f('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x7e3f('0x3')](_0x7e3f('0x4'),_0x7e3f('0x5'),_0x7e3f('0x6')),'allowNull':![],'defaultValue':_0x7e3f('0x4')},'savename':{'type':Sequelize[_0x7e3f('0x2')],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize[_0x7e3f('0x7')]},'status':{'type':Sequelize[_0x7e3f('0x2')],'defaultValue':_0x7e3f('0x8')},'type':{'type':Sequelize[_0x7e3f('0x3')](_0x7e3f('0x9'),'scheduled'),'allowNull':![],'defaultValue':_0x7e3f('0x9')},'reportId':{'type':Sequelize[_0x7e3f('0xa')](0xb)[_0x7e3f('0xb')]},'reportType':{'type':Sequelize[_0x7e3f('0x2')]}};
\ No newline at end of file
+var _0x7e25=['INTEGER','sequelize','STRING','csv','pdf','xlsx','DATE','Loading','ENUM','manual'];(function(_0x3e88f0,_0x5b3381){var _0x51999c=function(_0x5dc82d){while(--_0x5dc82d){_0x3e88f0['push'](_0x3e88f0['shift']());}};_0x51999c(++_0x5b3381);}(_0x7e25,0x187));var _0x57e2=function(_0x335f5c,_0xce622c){_0x335f5c=_0x335f5c-0x0;var _0x27458c=_0x7e25[_0x335f5c];return _0x27458c;};'use strict';var Sequelize=require(_0x57e2('0x0'));var moment=require('moment');module['exports']={'name':{'type':Sequelize[_0x57e2('0x1')],'allowNull':![]},'basename':{'type':Sequelize[_0x57e2('0x1')],'allowNull':![]},'output':{'type':Sequelize['ENUM'](_0x57e2('0x2'),_0x57e2('0x3'),_0x57e2('0x4')),'allowNull':![],'defaultValue':_0x57e2('0x2')},'savename':{'type':Sequelize[_0x57e2('0x1')],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize[_0x57e2('0x5')]},'status':{'type':Sequelize[_0x57e2('0x1')],'defaultValue':_0x57e2('0x6')},'type':{'type':Sequelize[_0x57e2('0x7')](_0x57e2('0x8'),'scheduled'),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0x57e2('0x9')](0xb)['UNSIGNED']},'reportType':{'type':Sequelize[_0x57e2('0x1')]}};
\ No newline at end of file
index c1d90ff..f0cb6ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0d5=['Report\x20not\x20found\x20or\x20empty','exists','format','%s.%s','toLowerCase','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','ExtractedReports','UserProfileResource','end','error','stack','name','send','index','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','params','filters','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','download','basename','savename','join','root','Sequelize','ValidationError'];(function(_0x31a0a3,_0x2fecfe){var _0x3f0960=function(_0x494633){while(--_0x494633){_0x31a0a3['push'](_0x31a0a3['shift']());}};_0x3f0960(++_0x2fecfe);}(_0xc0d5,0x131));var _0x5c0d=function(_0x5d04ad,_0x2672a6){_0x5d04ad=_0x5d04ad-0x0;var _0x4361ec=_0xc0d5[_0x5d04ad];return _0x4361ec;};'use strict';var emlformat=require(_0x5c0d('0x0'));var rimraf=require(_0x5c0d('0x1'));var zipdir=require(_0x5c0d('0x2'));var jsonpatch=require(_0x5c0d('0x3'));var rp=require('request-promise');var moment=require(_0x5c0d('0x4'));var BPromise=require(_0x5c0d('0x5'));var Mustache=require(_0x5c0d('0x6'));var util=require(_0x5c0d('0x7'));var path=require(_0x5c0d('0x8'));var sox=require(_0x5c0d('0x9'));var csv=require(_0x5c0d('0xa'));var ejs=require(_0x5c0d('0xb'));var fs=require('fs');var fs_extra=require(_0x5c0d('0xc'));var _=require(_0x5c0d('0xd'));var squel=require(_0x5c0d('0xe'));var crypto=require(_0x5c0d('0xf'));var jsforce=require(_0x5c0d('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x5c0d('0xa'));var querystring=require(_0x5c0d('0x11'));var Papa=require(_0x5c0d('0x12'));var Redis=require(_0x5c0d('0x13'));var authService=require(_0x5c0d('0x14'));var qs=require(_0x5c0d('0x15'));var as=require(_0x5c0d('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5c0d('0x17'))(_0x5c0d('0x18'));var utils=require(_0x5c0d('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x5c0d('0x1a'))['db'];function respondWithStatusCode(_0x4c8073,_0x75303a){_0x75303a=_0x75303a||0xcc;return function(_0x2cbb2c){if(_0x2cbb2c){return _0x4c8073[_0x5c0d('0x1b')](_0x75303a);}return _0x4c8073[_0x5c0d('0x1c')](_0x75303a)['end']();};}function respondWithResult(_0x281ce0,_0x5907e8){_0x5907e8=_0x5907e8||0xc8;return function(_0x18db16){if(_0x18db16){return _0x281ce0[_0x5c0d('0x1c')](_0x5907e8)[_0x5c0d('0x1d')](_0x18db16);}};}function respondWithFilteredResult(_0x501275,_0x46fc7b){return function(_0xdf0884){if(_0xdf0884){var _0x27b219=typeof _0x46fc7b[_0x5c0d('0x1e')]===_0x5c0d('0x1f')&&typeof _0x46fc7b[_0x5c0d('0x20')]===_0x5c0d('0x1f');var _0x4eaf74=_0xdf0884[_0x5c0d('0x21')];var _0x3d011f=_0x27b219?0x0:_0x46fc7b[_0x5c0d('0x1e')];var _0x451407=_0x27b219?_0xdf0884[_0x5c0d('0x21')]:_0x46fc7b[_0x5c0d('0x1e')]+_0x46fc7b[_0x5c0d('0x20')];var _0xaff428;if(_0x451407>=_0x4eaf74){_0x451407=_0x4eaf74;_0xaff428=0xc8;}else{_0xaff428=0xce;}_0x501275[_0x5c0d('0x1c')](_0xaff428);return _0x501275[_0x5c0d('0x22')](_0x5c0d('0x23'),_0x3d011f+'-'+_0x451407+'/'+_0x4eaf74)[_0x5c0d('0x1d')](_0xdf0884);}return null;};}function patchUpdates(_0x4581c1){return function(_0x7ff918){try{jsonpatch[_0x5c0d('0x24')](_0x7ff918,_0x4581c1,!![]);}catch(_0x245814){return BPromise[_0x5c0d('0x25')](_0x245814);}return _0x7ff918[_0x5c0d('0x26')]();};}function saveUpdates(_0x153abd,_0x24d497){return function(_0x22b01a){if(_0x22b01a){return _0x22b01a[_0x5c0d('0x27')](_0x153abd)[_0x5c0d('0x28')](function(_0x53a31){return _0x53a31;});}return null;};}function removeEntity(_0x373750,_0x2f1ede){return function(_0x3f99a8){if(_0x3f99a8){return _0x3f99a8[_0x5c0d('0x29')]()[_0x5c0d('0x28')](function(){var _0xe2e52f=_0x3f99a8[_0x5c0d('0x2a')]({'plain':!![]});var _0x492fcf=_0x5c0d('0x2b');return db[_0x5c0d('0x2c')][_0x5c0d('0x29')]({'where':{'type':_0x492fcf,'resourceId':_0xe2e52f['id']}})[_0x5c0d('0x28')](function(){return _0x3f99a8;});})[_0x5c0d('0x28')](function(){_0x373750[_0x5c0d('0x1c')](0xcc)[_0x5c0d('0x2d')]();});}};}function handleEntityNotFound(_0x3f9dbe,_0x3f0bfa){return function(_0x87790e){if(!_0x87790e){_0x3f9dbe[_0x5c0d('0x1b')](0x194);}return _0x87790e;};}function handleError(_0x217d9b,_0x556110){_0x556110=_0x556110||0x1f4;return function(_0x1decc9){logger[_0x5c0d('0x2e')](_0x1decc9[_0x5c0d('0x2f')]);if(_0x1decc9[_0x5c0d('0x30')]){delete _0x1decc9[_0x5c0d('0x30')];}_0x217d9b[_0x5c0d('0x1c')](_0x556110)[_0x5c0d('0x31')](_0x1decc9);};}exports[_0x5c0d('0x32')]=function(_0x21e00f,_0x41beda){var _0x22505b={},_0x2929a7={},_0x4725e4={'count':0x0,'rows':[]};var _0x96e148=_[_0x5c0d('0x33')](db[_0x5c0d('0x34')][_0x5c0d('0x35')],function(_0x11253b){return{'name':_0x11253b[_0x5c0d('0x36')],'type':_0x11253b[_0x5c0d('0x37')][_0x5c0d('0x38')]};});_0x2929a7[_0x5c0d('0x39')]=_[_0x5c0d('0x33')](_0x96e148,_0x5c0d('0x30'));_0x2929a7[_0x5c0d('0x3a')]=_[_0x5c0d('0x3b')](_0x21e00f[_0x5c0d('0x3a')]);_0x2929a7['filters']=_[_0x5c0d('0x3c')](_0x2929a7[_0x5c0d('0x39')],_0x2929a7[_0x5c0d('0x3a')]);_0x22505b[_0x5c0d('0x3d')]=_[_0x5c0d('0x3c')](_0x2929a7[_0x5c0d('0x39')],qs[_0x5c0d('0x3e')](_0x21e00f['query'][_0x5c0d('0x3e')]));_0x22505b['attributes']=_0x22505b['attributes'][_0x5c0d('0x3f')]?_0x22505b[_0x5c0d('0x3d')]:_0x2929a7['model'];if(!_0x21e00f[_0x5c0d('0x3a')]['hasOwnProperty'](_0x5c0d('0x40'))){_0x22505b['limit']=qs['limit'](_0x21e00f['query']['limit']);_0x22505b[_0x5c0d('0x1e')]=qs[_0x5c0d('0x1e')](_0x21e00f[_0x5c0d('0x3a')][_0x5c0d('0x1e')]);}_0x22505b[_0x5c0d('0x41')]=qs[_0x5c0d('0x42')](_0x21e00f[_0x5c0d('0x3a')][_0x5c0d('0x42')]);_0x22505b[_0x5c0d('0x43')]=qs['filters'](_[_0x5c0d('0x44')](_0x21e00f[_0x5c0d('0x3a')],_0x2929a7['filters']),_0x96e148);if(_0x21e00f['query'][_0x5c0d('0x45')]){_0x22505b[_0x5c0d('0x43')]=_[_0x5c0d('0x46')](_0x22505b[_0x5c0d('0x43')],{'$or':_['map'](_0x96e148,function(_0x1cfc71){if(_0x1cfc71[_0x5c0d('0x37')]!==_0x5c0d('0x47')){var _0x2a3f0e={};_0x2a3f0e[_0x1cfc71['name']]={'$like':'%'+_0x21e00f[_0x5c0d('0x3a')][_0x5c0d('0x45')]+'%'};return _0x2a3f0e;}})});}_0x22505b=_[_0x5c0d('0x46')]({},_0x22505b,_0x21e00f['options']);var _0x4ea3bc={'where':_0x22505b['where']};return db[_0x5c0d('0x34')][_0x5c0d('0x21')](_0x4ea3bc)[_0x5c0d('0x28')](function(_0x54d264){_0x4725e4['count']=_0x54d264;if(_0x21e00f[_0x5c0d('0x3a')][_0x5c0d('0x48')]){_0x22505b['include']=[{'all':!![]}];}return db[_0x5c0d('0x34')][_0x5c0d('0x49')](_0x22505b);})[_0x5c0d('0x28')](function(_0x18ae41){_0x4725e4[_0x5c0d('0x4a')]=_0x18ae41;return _0x4725e4;})[_0x5c0d('0x28')](respondWithFilteredResult(_0x41beda,_0x22505b))[_0x5c0d('0x4b')](handleError(_0x41beda,null));};exports['show']=function(_0xbb52ee,_0x118ec3){var _0x225da0={'raw':!![],'where':{'id':_0xbb52ee[_0x5c0d('0x4c')]['id']}},_0x3719bd={};_0x3719bd[_0x5c0d('0x39')]=_[_0x5c0d('0x3b')](db['AnalyticExtractedReport']['rawAttributes']);_0x3719bd[_0x5c0d('0x3a')]=_[_0x5c0d('0x3b')](_0xbb52ee[_0x5c0d('0x3a')]);_0x3719bd[_0x5c0d('0x4d')]=_[_0x5c0d('0x3c')](_0x3719bd[_0x5c0d('0x39')],_0x3719bd[_0x5c0d('0x3a')]);_0x225da0[_0x5c0d('0x3d')]=_['intersection'](_0x3719bd[_0x5c0d('0x39')],qs[_0x5c0d('0x3e')](_0xbb52ee[_0x5c0d('0x3a')]['fields']));_0x225da0[_0x5c0d('0x3d')]=_0x225da0[_0x5c0d('0x3d')]['length']?_0x225da0[_0x5c0d('0x3d')]:_0x3719bd['model'];if(_0xbb52ee[_0x5c0d('0x3a')]['includeAll']){_0x225da0['include']=[{'all':!![]}];}_0x225da0=_[_0x5c0d('0x46')]({},_0x225da0,_0xbb52ee[_0x5c0d('0x4e')]);return db[_0x5c0d('0x34')][_0x5c0d('0x4f')](_0x225da0)[_0x5c0d('0x28')](handleEntityNotFound(_0x118ec3,null))[_0x5c0d('0x28')](respondWithResult(_0x118ec3,null))[_0x5c0d('0x4b')](handleError(_0x118ec3,null));};exports[_0x5c0d('0x50')]=function(_0x323b29,_0x29bb9b){return db['AnalyticExtractedReport']['create'](_0x323b29['body'],{})[_0x5c0d('0x28')](function(_0x41ef8d){var _0x11dbdc=_0x323b29[_0x5c0d('0x51')][_0x5c0d('0x2a')]({'plain':!![]});if(!_0x11dbdc)throw new Error(_0x5c0d('0x52'));if(_0x11dbdc[_0x5c0d('0x53')]===_0x5c0d('0x51')){var _0xfef436=_0x41ef8d[_0x5c0d('0x2a')]({'plain':!![]});var _0x1622b1=_0x5c0d('0x2b');return db[_0x5c0d('0x54')]['find']({'where':{'name':_0x1622b1,'userProfileId':_0x11dbdc['userProfileId']},'raw':!![]})[_0x5c0d('0x28')](function(_0x2219ec){if(_0x2219ec&&_0x2219ec[_0x5c0d('0x55')]===0x0){return db[_0x5c0d('0x2c')]['create']({'name':_0xfef436['name'],'resourceId':_0xfef436['id'],'type':_0x2219ec[_0x5c0d('0x30')],'sectionId':_0x2219ec['id']},{})['then'](function(){return _0x41ef8d;});}else{return _0x41ef8d;}})[_0x5c0d('0x4b')](function(_0x2cb055){logger[_0x5c0d('0x2e')](_0x5c0d('0x56'),_0x2cb055);throw _0x2cb055;});}return _0x41ef8d;})[_0x5c0d('0x28')](respondWithResult(_0x29bb9b,0xc9))[_0x5c0d('0x4b')](handleError(_0x29bb9b,null));};exports[_0x5c0d('0x27')]=function(_0x56cd81,_0x53fc12){if(_0x56cd81['body']['id']){delete _0x56cd81['body']['id'];}return db[_0x5c0d('0x34')][_0x5c0d('0x4f')]({'where':{'id':_0x56cd81[_0x5c0d('0x4c')]['id']}})['then'](handleEntityNotFound(_0x53fc12,null))[_0x5c0d('0x28')](saveUpdates(_0x56cd81[_0x5c0d('0x57')],null))[_0x5c0d('0x28')](respondWithResult(_0x53fc12,null))['catch'](handleError(_0x53fc12,null));};exports[_0x5c0d('0x29')]=function(_0x10b035,_0x17b52e){return db[_0x5c0d('0x34')][_0x5c0d('0x4f')]({'where':{'id':_0x10b035['params']['id']}})[_0x5c0d('0x28')](handleEntityNotFound(_0x17b52e,null))[_0x5c0d('0x28')](removeEntity(_0x17b52e,null))['catch'](handleError(_0x17b52e,null));};exports[_0x5c0d('0x58')]=function(_0x4c44a3,_0x4777d1,_0x17c3a){return db[_0x5c0d('0x34')]['find']({'where':{'id':_0x4c44a3[_0x5c0d('0x4c')]['id']},'attributes':[_0x5c0d('0x30'),_0x5c0d('0x59'),_0x5c0d('0x5a'),'output'],'raw':!![]})[_0x5c0d('0x28')](handleEntityNotFound(_0x4777d1,null))[_0x5c0d('0x28')](function(_0x1ffbc4){if(_0x1ffbc4){if(!fs['existsSync'](path[_0x5c0d('0x5b')](config[_0x5c0d('0x5c')],'server/files/reports',_0x1ffbc4['savename']))){throw new db[(_0x5c0d('0x5d'))][(_0x5c0d('0x5e'))](_0x5c0d('0x5f'));}if(_0x4c44a3[_0x5c0d('0x3a')][_0x5c0d('0x60')]){return _0x4777d1[_0x5c0d('0x1b')](0xc8);}return _0x4777d1[_0x5c0d('0x58')](path['join'](config['root'],'server/files/reports',_0x1ffbc4[_0x5c0d('0x5a')]),util[_0x5c0d('0x61')](_0x5c0d('0x62'),_0x1ffbc4[_0x5c0d('0x59')]||_0x1ffbc4[_0x5c0d('0x30')],_0x1ffbc4['output'][_0x5c0d('0x63')]()));}})[_0x5c0d('0x4b')](handleError(_0x4777d1,null));};
\ No newline at end of file
+var _0xcec4=['rows','catch','show','params','include','find','create','user','role','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','download','basename','savename','output','existsSync','join','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','root','format','%s.%s','toLowerCase','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','count','offset','limit','set','json','apply','reject','save','update','destroy','get','ExtractedReports','UserProfileResource','then','error','name','send','map','AnalyticExtractedReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0xcec4,0x134));var _0x4cec=function(_0x3c2caa,_0xff93b2){_0x3c2caa=_0x3c2caa-0x0;var _0xe746bf=_0xcec4[_0x3c2caa];return _0xe746bf;};'use strict';var emlformat=require(_0x4cec('0x0'));var rimraf=require(_0x4cec('0x1'));var zipdir=require(_0x4cec('0x2'));var jsonpatch=require(_0x4cec('0x3'));var rp=require('request-promise');var moment=require(_0x4cec('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4cec('0x5'));var util=require(_0x4cec('0x6'));var path=require(_0x4cec('0x7'));var sox=require(_0x4cec('0x8'));var csv=require(_0x4cec('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4cec('0xa'));var _=require(_0x4cec('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x4cec('0xc'));var deskjs=require(_0x4cec('0xd'));var toCsv=require(_0x4cec('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4cec('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x4cec('0xf'));var hardwareService=require(_0x4cec('0x10'));var logger=require(_0x4cec('0x11'))(_0x4cec('0x12'));var utils=require('../../config/utils');var config=require(_0x4cec('0x13'));var licenseUtil=require(_0x4cec('0x14'));var db=require(_0x4cec('0x15'))['db'];function respondWithStatusCode(_0x2560e7,_0x2242cf){_0x2242cf=_0x2242cf||0xcc;return function(_0x477562){if(_0x477562){return _0x2560e7[_0x4cec('0x16')](_0x2242cf);}return _0x2560e7[_0x4cec('0x17')](_0x2242cf)[_0x4cec('0x18')]();};}function respondWithResult(_0x3d04a7,_0x197f52){_0x197f52=_0x197f52||0xc8;return function(_0x45e02a){if(_0x45e02a){return _0x3d04a7[_0x4cec('0x17')](_0x197f52)['json'](_0x45e02a);}};}function respondWithFilteredResult(_0x489e90,_0x2bd1af){return function(_0x20690d){if(_0x20690d){var _0x22dd0d=typeof _0x2bd1af['offset']===_0x4cec('0x19')&&typeof _0x2bd1af['limit']===_0x4cec('0x19');var _0xb4820d=_0x20690d[_0x4cec('0x1a')];var _0x5a3a60=_0x22dd0d?0x0:_0x2bd1af[_0x4cec('0x1b')];var _0x291949=_0x22dd0d?_0x20690d[_0x4cec('0x1a')]:_0x2bd1af[_0x4cec('0x1b')]+_0x2bd1af[_0x4cec('0x1c')];var _0x1163b2;if(_0x291949>=_0xb4820d){_0x291949=_0xb4820d;_0x1163b2=0xc8;}else{_0x1163b2=0xce;}_0x489e90[_0x4cec('0x17')](_0x1163b2);return _0x489e90[_0x4cec('0x1d')]('Content-Range',_0x5a3a60+'-'+_0x291949+'/'+_0xb4820d)[_0x4cec('0x1e')](_0x20690d);}return null;};}function patchUpdates(_0x3ff615){return function(_0xb82826){try{jsonpatch[_0x4cec('0x1f')](_0xb82826,_0x3ff615,!![]);}catch(_0x4acf85){return BPromise[_0x4cec('0x20')](_0x4acf85);}return _0xb82826[_0x4cec('0x21')]();};}function saveUpdates(_0x5de1d7,_0x2fdec2){return function(_0x457549){if(_0x457549){return _0x457549[_0x4cec('0x22')](_0x5de1d7)['then'](function(_0x3f7e68){return _0x3f7e68;});}return null;};}function removeEntity(_0xa9b672,_0x209ace){return function(_0x436b4d){if(_0x436b4d){return _0x436b4d[_0x4cec('0x23')]()['then'](function(){var _0x44c2b1=_0x436b4d[_0x4cec('0x24')]({'plain':!![]});var _0x1588fa=_0x4cec('0x25');return db[_0x4cec('0x26')][_0x4cec('0x23')]({'where':{'type':_0x1588fa,'resourceId':_0x44c2b1['id']}})[_0x4cec('0x27')](function(){return _0x436b4d;});})[_0x4cec('0x27')](function(){_0xa9b672[_0x4cec('0x17')](0xcc)[_0x4cec('0x18')]();});}};}function handleEntityNotFound(_0x3ade55,_0x188e06){return function(_0x380d8c){if(!_0x380d8c){_0x3ade55['sendStatus'](0x194);}return _0x380d8c;};}function handleError(_0x3b9fd0,_0x296d00){_0x296d00=_0x296d00||0x1f4;return function(_0x127a58){logger[_0x4cec('0x28')](_0x127a58['stack']);if(_0x127a58[_0x4cec('0x29')]){delete _0x127a58[_0x4cec('0x29')];}_0x3b9fd0['status'](_0x296d00)[_0x4cec('0x2a')](_0x127a58);};}exports['index']=function(_0x55bb44,_0x232ddb){var _0x46289f={},_0x64d463={},_0x353c71={'count':0x0,'rows':[]};var _0x2c8f08=_[_0x4cec('0x2b')](db[_0x4cec('0x2c')][_0x4cec('0x2d')],function(_0x3b656e){return{'name':_0x3b656e[_0x4cec('0x2e')],'type':_0x3b656e[_0x4cec('0x2f')][_0x4cec('0x30')]};});_0x64d463[_0x4cec('0x31')]=_[_0x4cec('0x2b')](_0x2c8f08,'name');_0x64d463[_0x4cec('0x32')]=_[_0x4cec('0x33')](_0x55bb44[_0x4cec('0x32')]);_0x64d463['filters']=_[_0x4cec('0x34')](_0x64d463[_0x4cec('0x31')],_0x64d463[_0x4cec('0x32')]);_0x46289f['attributes']=_[_0x4cec('0x34')](_0x64d463[_0x4cec('0x31')],qs['fields'](_0x55bb44[_0x4cec('0x32')][_0x4cec('0x35')]));_0x46289f[_0x4cec('0x36')]=_0x46289f[_0x4cec('0x36')][_0x4cec('0x37')]?_0x46289f[_0x4cec('0x36')]:_0x64d463['model'];if(!_0x55bb44[_0x4cec('0x32')][_0x4cec('0x38')]('nolimit')){_0x46289f[_0x4cec('0x1c')]=qs['limit'](_0x55bb44['query'][_0x4cec('0x1c')]);_0x46289f[_0x4cec('0x1b')]=qs[_0x4cec('0x1b')](_0x55bb44[_0x4cec('0x32')][_0x4cec('0x1b')]);}_0x46289f[_0x4cec('0x39')]=qs[_0x4cec('0x3a')](_0x55bb44[_0x4cec('0x32')][_0x4cec('0x3a')]);_0x46289f[_0x4cec('0x3b')]=qs[_0x4cec('0x3c')](_[_0x4cec('0x3d')](_0x55bb44[_0x4cec('0x32')],_0x64d463[_0x4cec('0x3c')]),_0x2c8f08);if(_0x55bb44[_0x4cec('0x32')][_0x4cec('0x3e')]){_0x46289f[_0x4cec('0x3b')]=_[_0x4cec('0x3f')](_0x46289f['where'],{'$or':_[_0x4cec('0x2b')](_0x2c8f08,function(_0x5aff72){if(_0x5aff72[_0x4cec('0x2f')]!==_0x4cec('0x40')){var _0x328b7d={};_0x328b7d[_0x5aff72['name']]={'$like':'%'+_0x55bb44[_0x4cec('0x32')][_0x4cec('0x3e')]+'%'};return _0x328b7d;}})});}_0x46289f=_[_0x4cec('0x3f')]({},_0x46289f,_0x55bb44[_0x4cec('0x41')]);var _0x5deb5c={'where':_0x46289f['where']};return db[_0x4cec('0x2c')][_0x4cec('0x1a')](_0x5deb5c)['then'](function(_0x59d65d){_0x353c71['count']=_0x59d65d;if(_0x55bb44[_0x4cec('0x32')][_0x4cec('0x42')]){_0x46289f['include']=[{'all':!![]}];}return db[_0x4cec('0x2c')][_0x4cec('0x43')](_0x46289f);})[_0x4cec('0x27')](function(_0x4d70e6){_0x353c71[_0x4cec('0x44')]=_0x4d70e6;return _0x353c71;})['then'](respondWithFilteredResult(_0x232ddb,_0x46289f))[_0x4cec('0x45')](handleError(_0x232ddb,null));};exports[_0x4cec('0x46')]=function(_0xe493b2,_0x4eccf9){var _0x22b6e4={'raw':!![],'where':{'id':_0xe493b2[_0x4cec('0x47')]['id']}},_0x409477={};_0x409477['model']=_[_0x4cec('0x33')](db['AnalyticExtractedReport']['rawAttributes']);_0x409477[_0x4cec('0x32')]=_[_0x4cec('0x33')](_0xe493b2[_0x4cec('0x32')]);_0x409477[_0x4cec('0x3c')]=_[_0x4cec('0x34')](_0x409477[_0x4cec('0x31')],_0x409477['query']);_0x22b6e4['attributes']=_[_0x4cec('0x34')](_0x409477['model'],qs['fields'](_0xe493b2[_0x4cec('0x32')][_0x4cec('0x35')]));_0x22b6e4[_0x4cec('0x36')]=_0x22b6e4['attributes']['length']?_0x22b6e4[_0x4cec('0x36')]:_0x409477[_0x4cec('0x31')];if(_0xe493b2[_0x4cec('0x32')][_0x4cec('0x42')]){_0x22b6e4[_0x4cec('0x48')]=[{'all':!![]}];}_0x22b6e4=_[_0x4cec('0x3f')]({},_0x22b6e4,_0xe493b2[_0x4cec('0x41')]);return db[_0x4cec('0x2c')][_0x4cec('0x49')](_0x22b6e4)[_0x4cec('0x27')](handleEntityNotFound(_0x4eccf9,null))[_0x4cec('0x27')](respondWithResult(_0x4eccf9,null))[_0x4cec('0x45')](handleError(_0x4eccf9,null));};exports[_0x4cec('0x4a')]=function(_0x23984e,_0x1dce8a){return db['AnalyticExtractedReport'][_0x4cec('0x4a')](_0x23984e['body'],{})[_0x4cec('0x27')](function(_0x14279b){var _0x266a66=_0x23984e[_0x4cec('0x4b')][_0x4cec('0x24')]({'plain':!![]});if(!_0x266a66)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x266a66[_0x4cec('0x4c')]===_0x4cec('0x4b')){var _0x5b7f12=_0x14279b[_0x4cec('0x24')]({'plain':!![]});var _0x429aaa=_0x4cec('0x25');return db[_0x4cec('0x4d')][_0x4cec('0x49')]({'where':{'name':_0x429aaa,'userProfileId':_0x266a66['userProfileId']},'raw':!![]})['then'](function(_0xdd1c43){if(_0xdd1c43&&_0xdd1c43['autoAssociation']===0x0){return db[_0x4cec('0x26')][_0x4cec('0x4a')]({'name':_0x5b7f12[_0x4cec('0x29')],'resourceId':_0x5b7f12['id'],'type':_0xdd1c43['name'],'sectionId':_0xdd1c43['id']},{})[_0x4cec('0x27')](function(){return _0x14279b;});}else{return _0x14279b;}})[_0x4cec('0x45')](function(_0x5789ff){logger[_0x4cec('0x28')](_0x4cec('0x4e'),_0x5789ff);throw _0x5789ff;});}return _0x14279b;})[_0x4cec('0x27')](respondWithResult(_0x1dce8a,0xc9))[_0x4cec('0x45')](handleError(_0x1dce8a,null));};exports['update']=function(_0x345268,_0x823212){if(_0x345268[_0x4cec('0x4f')]['id']){delete _0x345268[_0x4cec('0x4f')]['id'];}return db[_0x4cec('0x2c')][_0x4cec('0x49')]({'where':{'id':_0x345268[_0x4cec('0x47')]['id']}})[_0x4cec('0x27')](handleEntityNotFound(_0x823212,null))[_0x4cec('0x27')](saveUpdates(_0x345268['body'],null))[_0x4cec('0x27')](respondWithResult(_0x823212,null))[_0x4cec('0x45')](handleError(_0x823212,null));};exports[_0x4cec('0x23')]=function(_0x510cfc,_0x22c3a9){return db['AnalyticExtractedReport'][_0x4cec('0x49')]({'where':{'id':_0x510cfc[_0x4cec('0x47')]['id']}})[_0x4cec('0x27')](handleEntityNotFound(_0x22c3a9,null))[_0x4cec('0x27')](removeEntity(_0x22c3a9,null))[_0x4cec('0x45')](handleError(_0x22c3a9,null));};exports[_0x4cec('0x50')]=function(_0x5b29bd,_0x351382,_0xffdc79){return db[_0x4cec('0x2c')][_0x4cec('0x49')]({'where':{'id':_0x5b29bd[_0x4cec('0x47')]['id']},'attributes':[_0x4cec('0x29'),_0x4cec('0x51'),_0x4cec('0x52'),_0x4cec('0x53')],'raw':!![]})[_0x4cec('0x27')](handleEntityNotFound(_0x351382,null))['then'](function(_0x4bfc8e){if(_0x4bfc8e){if(!fs[_0x4cec('0x54')](path[_0x4cec('0x55')](config['root'],_0x4cec('0x56'),_0x4bfc8e[_0x4cec('0x52')]))){throw new db[(_0x4cec('0x57'))][(_0x4cec('0x58'))](_0x4cec('0x59'));}if(_0x5b29bd[_0x4cec('0x32')]['exists']){return _0x351382[_0x4cec('0x16')](0xc8);}return _0x351382[_0x4cec('0x50')](path['join'](config[_0x4cec('0x5a')],_0x4cec('0x56'),_0x4bfc8e[_0x4cec('0x52')]),util[_0x4cec('0x5b')](_0x4cec('0x5c'),_0x4bfc8e[_0x4cec('0x51')]||_0x4bfc8e['name'],_0x4bfc8e['output'][_0x4cec('0x5d')]()));}})[_0x4cec('0x45')](handleError(_0x351382,null));};
\ No newline at end of file
index b23b654..3f57d8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd521=['../../config/logger','api','bluebird','request-promise','path','rimraf','./analyticExtractedReport.attributes','analytics_extracted_reports','lodash','util'];(function(_0x251ab0,_0x46e532){var _0x11848c=function(_0x78e3a2){while(--_0x78e3a2){_0x251ab0['push'](_0x251ab0['shift']());}};_0x11848c(++_0x46e532);}(_0xd521,0x94));var _0x1d52=function(_0x347ae1,_0x24a93e){_0x347ae1=_0x347ae1-0x0;var _0xf49b96=_0xd521[_0x347ae1];return _0xf49b96;};'use strict';var _=require(_0x1d52('0x0'));var util=require(_0x1d52('0x1'));var logger=require(_0x1d52('0x2'))(_0x1d52('0x3'));var moment=require('moment');var BPromise=require(_0x1d52('0x4'));var rp=require(_0x1d52('0x5'));var fs=require('fs');var path=require(_0x1d52('0x6'));var rimraf=require(_0x1d52('0x7'));var config=require('../../config/environment');var attributes=require(_0x1d52('0x8'));module['exports']=function(_0x3897b8,_0x5c99a7){return _0x3897b8['define']('AnalyticExtractedReport',attributes,{'tableName':_0x1d52('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6bb4=['api','moment','bluebird','rimraf','../../config/environment','exports','AnalyticExtractedReport','analytics_extracted_reports','util'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x6bb4,0x98));var _0x46bb=function(_0x24af21,_0x342465){_0x24af21=_0x24af21-0x0;var _0x4caee3=_0x6bb4[_0x24af21];return _0x4caee3;};'use strict';var _=require('lodash');var util=require(_0x46bb('0x0'));var logger=require('../../config/logger')(_0x46bb('0x1'));var moment=require(_0x46bb('0x2'));var BPromise=require(_0x46bb('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x46bb('0x4'));var config=require(_0x46bb('0x5'));var attributes=require('./analyticExtractedReport.attributes');module[_0x46bb('0x6')]=function(_0x14f458,_0x58b1ef){return _0x14f458['define'](_0x46bb('0x7'),attributes,{'tableName':_0x46bb('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 981ec95..4ad714e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4ee=['../../config/environment','client','http','request','then','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x3494d7,_0x3e3482){var _0x57cf6b=function(_0x1dacf0){while(--_0x1dacf0){_0x3494d7['push'](_0x3494d7['shift']());}};_0x57cf6b(++_0x3e3482);}(_0xb4ee,0xa8));var _0xeb4e=function(_0xd66a16,_0x51bc10){_0xd66a16=_0xd66a16-0x0;var _0x37881e=_0xb4ee[_0xd66a16];return _0x37881e;};'use strict';var _=require(_0xeb4e('0x0'));var util=require('util');var moment=require(_0xeb4e('0x1'));var BPromise=require(_0xeb4e('0x2'));var rs=require(_0xeb4e('0x3'));var fs=require('fs');var Redis=require(_0xeb4e('0x4'));var db=require(_0xeb4e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xeb4e('0x6'))(_0xeb4e('0x7'));var config=require(_0xeb4e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xeb4e('0x9')][_0xeb4e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x315ccf,_0x20efab,_0x511b10){return new BPromise(function(_0x8369fb,_0x45d3b7){return client[_0xeb4e('0xb')](_0x315ccf,_0x511b10)[_0xeb4e('0xc')](function(_0x5545ef){logger['info'](_0xeb4e('0xd'),_0x20efab,_0xeb4e('0xe'));logger[_0xeb4e('0xf')](_0xeb4e('0x10'),_0x20efab,_0xeb4e('0xe'),JSON[_0xeb4e('0x11')](_0x5545ef));if(_0x5545ef[_0xeb4e('0x12')]){if(_0x5545ef[_0xeb4e('0x12')]['code']===0x1f4){logger[_0xeb4e('0x12')](_0xeb4e('0xd'),_0x20efab,_0x5545ef[_0xeb4e('0x12')]['message']);return _0x45d3b7(_0x5545ef[_0xeb4e('0x12')]['message']);}logger[_0xeb4e('0x12')](_0xeb4e('0xd'),_0x20efab,_0x5545ef[_0xeb4e('0x12')][_0xeb4e('0x13')]);return _0x8369fb(_0x5545ef[_0xeb4e('0x12')][_0xeb4e('0x13')]);}else{logger['info'](_0xeb4e('0xd'),_0x20efab,_0xeb4e('0xe'));_0x8369fb(_0x5545ef[_0xeb4e('0x14')][_0xeb4e('0x13')]);}})[_0xeb4e('0x15')](function(_0x443d0d){logger[_0xeb4e('0x12')](_0xeb4e('0xd'),_0x20efab,_0x443d0d);_0x45d3b7(_0x443d0d);});});}
\ No newline at end of file
+var _0x1776=['jayson/promise','client','http','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x4e6a6b,_0x3fff59){var _0x34ee8b=function(_0x40d4af){while(--_0x40d4af){_0x4e6a6b['push'](_0x4e6a6b['shift']());}};_0x34ee8b(++_0x3fff59);}(_0x1776,0xff));var _0x6177=function(_0xd5afb3,_0x5d45a1){_0xd5afb3=_0xd5afb3-0x0;var _0x18794a=_0x1776[_0xd5afb3];return _0x18794a;};'use strict';var _=require(_0x6177('0x0'));var util=require(_0x6177('0x1'));var moment=require(_0x6177('0x2'));var BPromise=require(_0x6177('0x3'));var rs=require(_0x6177('0x4'));var fs=require('fs');var Redis=require(_0x6177('0x5'));var db=require(_0x6177('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x6177('0x7'))(_0x6177('0x8'));var config=require('../../config/environment');var jayson=require(_0x6177('0x9'));var client=jayson[_0x6177('0xa')][_0x6177('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x24be45,_0xc1e3db,_0x365ee9){return new BPromise(function(_0x249081,_0x48a810){return client[_0x6177('0xc')](_0x24be45,_0x365ee9)[_0x6177('0xd')](function(_0x2cf916){logger[_0x6177('0xe')](_0x6177('0xf'),_0xc1e3db,_0x6177('0x10'));logger[_0x6177('0x11')]('AnalyticExtractedReport,\x20%s,\x20%s,\x20%s',_0xc1e3db,_0x6177('0x10'),JSON[_0x6177('0x12')](_0x2cf916));if(_0x2cf916[_0x6177('0x13')]){if(_0x2cf916['error'][_0x6177('0x14')]===0x1f4){logger[_0x6177('0x13')](_0x6177('0xf'),_0xc1e3db,_0x2cf916[_0x6177('0x13')][_0x6177('0x15')]);return _0x48a810(_0x2cf916[_0x6177('0x13')]['message']);}logger['error'](_0x6177('0xf'),_0xc1e3db,_0x2cf916['error'][_0x6177('0x15')]);return _0x249081(_0x2cf916[_0x6177('0x13')][_0x6177('0x15')]);}else{logger['info']('AnalyticExtractedReport,\x20%s,\x20%s',_0xc1e3db,'request\x20sent');_0x249081(_0x2cf916[_0x6177('0x16')][_0x6177('0x15')]);}})[_0x6177('0x17')](function(_0x41e978){logger['error'](_0x6177('0xf'),_0xc1e3db,_0x41e978);_0x48a810(_0x41e978);});});}
\ No newline at end of file
index 3f787de..f18c19f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04c3=['/:id/download','isAuthenticated','download','post','create','put','update','delete','/:id','destroy','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./analyticExtractedReport.controller','get'];(function(_0x40bc76,_0x597613){var _0x3c74cb=function(_0x4f4e1e){while(--_0x4f4e1e){_0x40bc76['push'](_0x40bc76['shift']());}};_0x3c74cb(++_0x597613);}(_0x04c3,0xb5));var _0x304c=function(_0x4dce38,_0x2bdd6c){_0x4dce38=_0x4dce38-0x0;var _0x24c2b6=_0x04c3[_0x4dce38];return _0x24c2b6;};'use strict';var multer=require('multer');var util=require(_0x304c('0x0'));var path=require(_0x304c('0x1'));var timeout=require(_0x304c('0x2'));var express=require(_0x304c('0x3'));var router=express[_0x304c('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x304c('0x5'));var interaction=require(_0x304c('0x6'));var config=require('../../config/environment');var controller=require(_0x304c('0x7'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x304c('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router['get'](_0x304c('0x9'),auth[_0x304c('0xa')](),controller[_0x304c('0xb')]);router[_0x304c('0xc')]('/',auth[_0x304c('0xa')](),controller[_0x304c('0xd')]);router[_0x304c('0xe')]('/:id',auth[_0x304c('0xa')](),controller[_0x304c('0xf')]);router[_0x304c('0x10')](_0x304c('0x11'),auth[_0x304c('0xa')](),controller[_0x304c('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x11b0=['show','/:id/download','post','update','delete','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','isAuthenticated','index','get','/:id'];(function(_0x571825,_0xb4812){var _0x58befc=function(_0x24e71c){while(--_0x24e71c){_0x571825['push'](_0x571825['shift']());}};_0x58befc(++_0xb4812);}(_0x11b0,0x14b));var _0x011b=function(_0x16f7c5,_0x1a26b4){_0x16f7c5=_0x16f7c5-0x0;var _0x110875=_0x11b0[_0x16f7c5];return _0x110875;};'use strict';var multer=require(_0x011b('0x0'));var util=require(_0x011b('0x1'));var path=require('path');var timeout=require(_0x011b('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x011b('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x011b('0x4'));var config=require(_0x011b('0x5'));var controller=require(_0x011b('0x6'));router['get']('/',auth[_0x011b('0x7')](),controller[_0x011b('0x8')]);router[_0x011b('0x9')](_0x011b('0xa'),auth[_0x011b('0x7')](),controller[_0x011b('0xb')]);router[_0x011b('0x9')](_0x011b('0xc'),auth[_0x011b('0x7')](),controller['download']);router[_0x011b('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0x011b('0x7')](),controller[_0x011b('0xe')]);router[_0x011b('0xf')](_0x011b('0xa'),auth[_0x011b('0x7')](),controller[_0x011b('0x10')]);module[_0x011b('0x11')]=router;
\ No newline at end of file
index f6e60e1..e7eb894 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d51=['STRING','BOOLEAN','sequelize','exports','TEXT'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0x5d51,0x124));var _0x15d5=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x5d51[_0x501510];return _0x1e6ee5;};'use strict';var Sequelize=require(_0x15d5('0x0'));module[_0x15d5('0x1')]={'field':{'type':Sequelize[_0x15d5('0x2')]},'alias':{'type':Sequelize[_0x15d5('0x3')]},'function':{'type':Sequelize[_0x15d5('0x3')]},'format':{'type':Sequelize[_0x15d5('0x3')]},'groupBy':{'type':Sequelize[_0x15d5('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x15d5('0x3')]},'custom':{'type':Sequelize[_0x15d5('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x1fb1=['BOOLEAN','sequelize','exports','STRING'];(function(_0x11a619,_0x51b5a7){var _0x4f8e96=function(_0xb2e80f){while(--_0xb2e80f){_0x11a619['push'](_0x11a619['shift']());}};_0x4f8e96(++_0x51b5a7);}(_0x1fb1,0x191));var _0x11fb=function(_0x310c59,_0x44a78c){_0x310c59=_0x310c59-0x0;var _0x499a64=_0x1fb1[_0x310c59];return _0x499a64;};'use strict';var Sequelize=require(_0x11fb('0x0'));module[_0x11fb('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize[_0x11fb('0x2')]},'function':{'type':Sequelize[_0x11fb('0x2')]},'format':{'type':Sequelize[_0x11fb('0x2')]},'groupBy':{'type':Sequelize[_0x11fb('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x11fb('0x2')]},'custom':{'type':Sequelize[_0x11fb('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 53bd733..e0f5b3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc0c=['reject','save','then','error','name','send','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','AnalyticFieldReport','includeAll','include','rows','catch','show','params','keys','options','find','create','body','bulkCreate','destroy','bulkDestroy','ids','AnalyticCustomReport','sequelize','transaction','CustomReportId','findAll','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply'];(function(_0x235b18,_0x2cb00a){var _0x1ca64c=function(_0x2b6ec3){while(--_0x2b6ec3){_0x235b18['push'](_0x235b18['shift']());}};_0x1ca64c(++_0x2cb00a);}(_0xcc0c,0x88));var _0xccc0=function(_0x1d38fc,_0x27cd20){_0x1d38fc=_0x1d38fc-0x0;var _0x1a260c=_0xcc0c[_0x1d38fc];return _0x1a260c;};'use strict';var emlformat=require(_0xccc0('0x0'));var rimraf=require(_0xccc0('0x1'));var zipdir=require(_0xccc0('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xccc0('0x3'));var moment=require(_0xccc0('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xccc0('0x5'));var util=require(_0xccc0('0x6'));var path=require(_0xccc0('0x7'));var sox=require(_0xccc0('0x8'));var csv=require(_0xccc0('0x9'));var ejs=require(_0xccc0('0xa'));var fs=require('fs');var fs_extra=require(_0xccc0('0xb'));var _=require(_0xccc0('0xc'));var squel=require(_0xccc0('0xd'));var crypto=require('crypto');var jsforce=require(_0xccc0('0xe'));var deskjs=require(_0xccc0('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xccc0('0x10'));var Redis=require(_0xccc0('0x11'));var authService=require(_0xccc0('0x12'));var qs=require(_0xccc0('0x13'));var as=require(_0xccc0('0x14'));var hardwareService=require(_0xccc0('0x15'));var logger=require(_0xccc0('0x16'))(_0xccc0('0x17'));var utils=require(_0xccc0('0x18'));var config=require(_0xccc0('0x19'));var licenseUtil=require(_0xccc0('0x1a'));var db=require(_0xccc0('0x1b'))['db'];function respondWithStatusCode(_0x4d5205,_0x521c6d){_0x521c6d=_0x521c6d||0xcc;return function(_0x46fb80){if(_0x46fb80){return _0x4d5205[_0xccc0('0x1c')](_0x521c6d);}return _0x4d5205[_0xccc0('0x1d')](_0x521c6d)[_0xccc0('0x1e')]();};}function respondWithResult(_0x294657,_0xface73){_0xface73=_0xface73||0xc8;return function(_0x3a9816){if(_0x3a9816){return _0x294657[_0xccc0('0x1d')](_0xface73)['json'](_0x3a9816);}};}function respondWithFilteredResult(_0x68a037,_0x547cf4){return function(_0x4907e7){if(_0x4907e7){var _0x1568b5=typeof _0x547cf4[_0xccc0('0x1f')]===_0xccc0('0x20')&&typeof _0x547cf4[_0xccc0('0x21')]===_0xccc0('0x20');var _0x2f9e37=_0x4907e7[_0xccc0('0x22')];var _0x514a67=_0x1568b5?0x0:_0x547cf4[_0xccc0('0x1f')];var _0x36e1e7=_0x1568b5?_0x4907e7[_0xccc0('0x22')]:_0x547cf4[_0xccc0('0x1f')]+_0x547cf4['limit'];var _0xb2b0fa;if(_0x36e1e7>=_0x2f9e37){_0x36e1e7=_0x2f9e37;_0xb2b0fa=0xc8;}else{_0xb2b0fa=0xce;}_0x68a037[_0xccc0('0x1d')](_0xb2b0fa);return _0x68a037[_0xccc0('0x23')](_0xccc0('0x24'),_0x514a67+'-'+_0x36e1e7+'/'+_0x2f9e37)['json'](_0x4907e7);}return null;};}function patchUpdates(_0x519a6c){return function(_0x2b4800){try{jsonpatch[_0xccc0('0x25')](_0x2b4800,_0x519a6c,!![]);}catch(_0x20314e){return BPromise[_0xccc0('0x26')](_0x20314e);}return _0x2b4800[_0xccc0('0x27')]();};}function saveUpdates(_0x2a6a76,_0x15f730){return function(_0x2beded){if(_0x2beded){return _0x2beded['update'](_0x2a6a76)[_0xccc0('0x28')](function(_0x5980da){return _0x5980da;});}return null;};}function removeEntity(_0x360c7f,_0x44f61e){return function(_0x1b84b1){if(_0x1b84b1){return _0x1b84b1['destroy']()[_0xccc0('0x28')](function(){_0x360c7f[_0xccc0('0x1d')](0xcc)[_0xccc0('0x1e')]();});}};}function handleEntityNotFound(_0x2ced73,_0x48e2f2){return function(_0x43dadd){if(!_0x43dadd){_0x2ced73[_0xccc0('0x1c')](0x194);}return _0x43dadd;};}function handleError(_0x4a8921,_0x152156){_0x152156=_0x152156||0x1f4;return function(_0xfaa1ff){logger[_0xccc0('0x29')](_0xfaa1ff['stack']);if(_0xfaa1ff[_0xccc0('0x2a')]){delete _0xfaa1ff[_0xccc0('0x2a')];}_0x4a8921['status'](_0x152156)[_0xccc0('0x2b')](_0xfaa1ff);};}exports[_0xccc0('0x2c')]=function(_0xb9677,_0x257cc2){var _0x2cb561={},_0x5e6b9a={},_0x356fe4={'count':0x0,'rows':[]};var _0x268fad=_[_0xccc0('0x2d')](db['AnalyticFieldReport'][_0xccc0('0x2e')],function(_0x4991a2){return{'name':_0x4991a2[_0xccc0('0x2f')],'type':_0x4991a2[_0xccc0('0x30')][_0xccc0('0x31')]};});_0x5e6b9a['model']=_['map'](_0x268fad,_0xccc0('0x2a'));_0x5e6b9a[_0xccc0('0x32')]=_['keys'](_0xb9677[_0xccc0('0x32')]);_0x5e6b9a[_0xccc0('0x33')]=_[_0xccc0('0x34')](_0x5e6b9a[_0xccc0('0x35')],_0x5e6b9a[_0xccc0('0x32')]);_0x2cb561[_0xccc0('0x36')]=_['intersection'](_0x5e6b9a['model'],qs[_0xccc0('0x37')](_0xb9677[_0xccc0('0x32')][_0xccc0('0x37')]));_0x2cb561[_0xccc0('0x36')]=_0x2cb561['attributes'][_0xccc0('0x38')]?_0x2cb561[_0xccc0('0x36')]:_0x5e6b9a[_0xccc0('0x35')];if(!_0xb9677[_0xccc0('0x32')][_0xccc0('0x39')](_0xccc0('0x3a'))){_0x2cb561[_0xccc0('0x21')]=qs[_0xccc0('0x21')](_0xb9677[_0xccc0('0x32')][_0xccc0('0x21')]);_0x2cb561[_0xccc0('0x1f')]=qs[_0xccc0('0x1f')](_0xb9677[_0xccc0('0x32')][_0xccc0('0x1f')]);}_0x2cb561[_0xccc0('0x3b')]=qs[_0xccc0('0x3c')](_0xb9677[_0xccc0('0x32')][_0xccc0('0x3c')]);_0x2cb561[_0xccc0('0x3d')]=qs['filters'](_[_0xccc0('0x3e')](_0xb9677['query'],_0x5e6b9a['filters']),_0x268fad);if(_0xb9677[_0xccc0('0x32')][_0xccc0('0x3f')]){_0x2cb561[_0xccc0('0x3d')]=_['merge'](_0x2cb561[_0xccc0('0x3d')],{'$or':_[_0xccc0('0x2d')](_0x268fad,function(_0x31cb6d){if(_0x31cb6d[_0xccc0('0x30')]!==_0xccc0('0x40')){var _0xe35a6b={};_0xe35a6b[_0x31cb6d[_0xccc0('0x2a')]]={'$like':'%'+_0xb9677['query'][_0xccc0('0x3f')]+'%'};return _0xe35a6b;}})});}_0x2cb561=_[_0xccc0('0x41')]({},_0x2cb561,_0xb9677['options']);var _0x118f35={'where':_0x2cb561[_0xccc0('0x3d')]};return db[_0xccc0('0x42')][_0xccc0('0x22')](_0x118f35)[_0xccc0('0x28')](function(_0x394ad1){_0x356fe4[_0xccc0('0x22')]=_0x394ad1;if(_0xb9677[_0xccc0('0x32')][_0xccc0('0x43')]){_0x2cb561[_0xccc0('0x44')]=[{'all':!![]}];}return db[_0xccc0('0x42')]['findAll'](_0x2cb561);})['then'](function(_0x28c352){_0x356fe4[_0xccc0('0x45')]=_0x28c352;return _0x356fe4;})[_0xccc0('0x28')](respondWithFilteredResult(_0x257cc2,_0x2cb561))[_0xccc0('0x46')](handleError(_0x257cc2,null));};exports[_0xccc0('0x47')]=function(_0x51425a,_0x2fd166){var _0x2da038={'raw':![],'where':{'id':_0x51425a[_0xccc0('0x48')]['id']}},_0x42420e={};_0x42420e['model']=_[_0xccc0('0x49')](db[_0xccc0('0x42')]['rawAttributes']);_0x42420e[_0xccc0('0x32')]=_[_0xccc0('0x49')](_0x51425a[_0xccc0('0x32')]);_0x42420e[_0xccc0('0x33')]=_[_0xccc0('0x34')](_0x42420e[_0xccc0('0x35')],_0x42420e['query']);_0x2da038[_0xccc0('0x36')]=_[_0xccc0('0x34')](_0x42420e[_0xccc0('0x35')],qs[_0xccc0('0x37')](_0x51425a[_0xccc0('0x32')][_0xccc0('0x37')]));_0x2da038[_0xccc0('0x36')]=_0x2da038[_0xccc0('0x36')][_0xccc0('0x38')]?_0x2da038[_0xccc0('0x36')]:_0x42420e[_0xccc0('0x35')];if(_0x51425a[_0xccc0('0x32')][_0xccc0('0x43')]){_0x2da038[_0xccc0('0x44')]=[{'all':!![]}];}_0x2da038=_['merge']({},_0x2da038,_0x51425a[_0xccc0('0x4a')]);return db[_0xccc0('0x42')][_0xccc0('0x4b')](_0x2da038)['then'](handleEntityNotFound(_0x2fd166,null))['then'](respondWithResult(_0x2fd166,null))[_0xccc0('0x46')](handleError(_0x2fd166,null));};exports[_0xccc0('0x4c')]=function(_0x190c33,_0x15d38c){return db['AnalyticFieldReport'][_0xccc0('0x4c')](_0x190c33[_0xccc0('0x4d')],{})[_0xccc0('0x28')](respondWithResult(_0x15d38c,0xc9))[_0xccc0('0x46')](handleError(_0x15d38c,null));};exports[_0xccc0('0x4e')]=function(_0x1ed90c,_0x34589d){return db[_0xccc0('0x42')][_0xccc0('0x4e')](_0x1ed90c[_0xccc0('0x4d')],{'raw':![],'individualHooks':!![]})[_0xccc0('0x28')](respondWithResult(_0x34589d,0xc9))[_0xccc0('0x46')](handleError(_0x34589d,null));};exports['update']=function(_0x306bf8,_0x3d2c82){if(_0x306bf8['body']['id']){delete _0x306bf8[_0xccc0('0x4d')]['id'];}return db[_0xccc0('0x42')][_0xccc0('0x4b')]({'where':{'id':_0x306bf8[_0xccc0('0x48')]['id']}})[_0xccc0('0x28')](handleEntityNotFound(_0x3d2c82,null))[_0xccc0('0x28')](saveUpdates(_0x306bf8[_0xccc0('0x4d')],null))[_0xccc0('0x28')](respondWithResult(_0x3d2c82,null))[_0xccc0('0x46')](handleError(_0x3d2c82,null));};exports[_0xccc0('0x4f')]=function(_0x17106a,_0x2c4fbd){return db[_0xccc0('0x42')]['find']({'where':{'id':_0x17106a[_0xccc0('0x48')]['id']}})[_0xccc0('0x28')](handleEntityNotFound(_0x2c4fbd,null))[_0xccc0('0x28')](removeEntity(_0x2c4fbd,null))[_0xccc0('0x46')](handleError(_0x2c4fbd,null));};exports[_0xccc0('0x50')]=function(_0x7135c8,_0x460663){return db[_0xccc0('0x42')][_0xccc0('0x4f')]({'where':{'id':_0x7135c8[_0xccc0('0x32')][_0xccc0('0x51')]||[]},'raw':![],'individualHooks':!![]})[_0xccc0('0x28')](respondWithResult(_0x460663,0xcc))[_0xccc0('0x46')](handleError(_0x460663,null));};exports['addFields']=function(_0x464706,_0x24e757,_0x283670){return db[_0xccc0('0x52')]['findOne']({'where':{'id':_0x464706[_0xccc0('0x48')]['id']}})['then'](handleEntityNotFound(_0x24e757,null))['then'](function(_0x3ba871){if(_0x3ba871){return db[_0xccc0('0x53')][_0xccc0('0x54')](function(_0x5d6095){return db[_0xccc0('0x42')][_0xccc0('0x4f')]({'where':{'CustomReportId':_0x464706[_0xccc0('0x48')]['id']},'transaction':_0x5d6095})['then'](function(_0x453771){var _0x269392=_[_0xccc0('0x2d')](_0x464706[_0xccc0('0x4d')],function(_0x5775d7){delete _0x5775d7['id'];_0x5775d7[_0xccc0('0x55')]=_0x464706[_0xccc0('0x48')]['id'];return _0x5775d7;});return db[_0xccc0('0x42')][_0xccc0('0x4e')](_0x269392,{'transaction':_0x5d6095});});})[_0xccc0('0x28')](function(){return db[_0xccc0('0x42')][_0xccc0('0x56')]({'where':{'CustomReportId':_0x464706[_0xccc0('0x48')]['id']}});});}})[_0xccc0('0x28')](respondWithResult(_0x24e757,null))['catch'](handleError(_0x24e757,null));};
\ No newline at end of file
+var _0x52d9=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','status','end','offset','undefined','count','limit','Content-Range','json','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','includeAll','findAll','rows','catch','show','params','keys','options','find','create','body','bulkCreate','bulkDestroy','ids','addFields','AnalyticCustomReport','findOne','sequelize','transaction','CustomReportId','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x1b0a89,_0x5f4f8f){var _0x3800f0=function(_0x2765fb){while(--_0x2765fb){_0x1b0a89['push'](_0x1b0a89['shift']());}};_0x3800f0(++_0x5f4f8f);}(_0x52d9,0x195));var _0x952d=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0x52d9[_0x42245d];return _0x4b211a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x952d('0x0'));var jsonpatch=require(_0x952d('0x1'));var rp=require(_0x952d('0x2'));var moment=require(_0x952d('0x3'));var BPromise=require(_0x952d('0x4'));var Mustache=require(_0x952d('0x5'));var util=require(_0x952d('0x6'));var path=require('path');var sox=require(_0x952d('0x7'));var csv=require(_0x952d('0x8'));var ejs=require(_0x952d('0x9'));var fs=require('fs');var fs_extra=require(_0x952d('0xa'));var _=require(_0x952d('0xb'));var squel=require(_0x952d('0xc'));var crypto=require(_0x952d('0xd'));var jsforce=require(_0x952d('0xe'));var deskjs=require(_0x952d('0xf'));var toCsv=require('to-csv');var querystring=require(_0x952d('0x10'));var Papa=require(_0x952d('0x11'));var Redis=require(_0x952d('0x12'));var authService=require(_0x952d('0x13'));var qs=require(_0x952d('0x14'));var as=require(_0x952d('0x15'));var hardwareService=require(_0x952d('0x16'));var logger=require('../../config/logger')(_0x952d('0x17'));var utils=require('../../config/utils');var config=require(_0x952d('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x952d('0x19'))['db'];function respondWithStatusCode(_0x489be2,_0xcb06e){_0xcb06e=_0xcb06e||0xcc;return function(_0x5ecbb7){if(_0x5ecbb7){return _0x489be2['sendStatus'](_0xcb06e);}return _0x489be2[_0x952d('0x1a')](_0xcb06e)[_0x952d('0x1b')]();};}function respondWithResult(_0x2191b7,_0x4a9776){_0x4a9776=_0x4a9776||0xc8;return function(_0x4c0dae){if(_0x4c0dae){return _0x2191b7[_0x952d('0x1a')](_0x4a9776)['json'](_0x4c0dae);}};}function respondWithFilteredResult(_0x34c9b3,_0x214da0){return function(_0x48942a){if(_0x48942a){var _0x3c793e=typeof _0x214da0[_0x952d('0x1c')]===_0x952d('0x1d')&&typeof _0x214da0['limit']===_0x952d('0x1d');var _0x31ce21=_0x48942a[_0x952d('0x1e')];var _0x2d873c=_0x3c793e?0x0:_0x214da0[_0x952d('0x1c')];var _0x3b9287=_0x3c793e?_0x48942a[_0x952d('0x1e')]:_0x214da0[_0x952d('0x1c')]+_0x214da0[_0x952d('0x1f')];var _0x2d91d8;if(_0x3b9287>=_0x31ce21){_0x3b9287=_0x31ce21;_0x2d91d8=0xc8;}else{_0x2d91d8=0xce;}_0x34c9b3[_0x952d('0x1a')](_0x2d91d8);return _0x34c9b3['set'](_0x952d('0x20'),_0x2d873c+'-'+_0x3b9287+'/'+_0x31ce21)[_0x952d('0x21')](_0x48942a);}return null;};}function patchUpdates(_0x553e90){return function(_0x15aab9){try{jsonpatch['apply'](_0x15aab9,_0x553e90,!![]);}catch(_0x4a0889){return BPromise[_0x952d('0x22')](_0x4a0889);}return _0x15aab9[_0x952d('0x23')]();};}function saveUpdates(_0xf0c78b,_0x1cfb3f){return function(_0xe78d28){if(_0xe78d28){return _0xe78d28[_0x952d('0x24')](_0xf0c78b)[_0x952d('0x25')](function(_0xc01e03){return _0xc01e03;});}return null;};}function removeEntity(_0x3c1fc4,_0x2c4a99){return function(_0x3b5c4d){if(_0x3b5c4d){return _0x3b5c4d[_0x952d('0x26')]()['then'](function(){_0x3c1fc4['status'](0xcc)[_0x952d('0x1b')]();});}};}function handleEntityNotFound(_0x409eef,_0x34635c){return function(_0x1bb738){if(!_0x1bb738){_0x409eef[_0x952d('0x27')](0x194);}return _0x1bb738;};}function handleError(_0x23e73c,_0x19b4e4){_0x19b4e4=_0x19b4e4||0x1f4;return function(_0x34ba25){logger[_0x952d('0x28')](_0x34ba25[_0x952d('0x29')]);if(_0x34ba25[_0x952d('0x2a')]){delete _0x34ba25['name'];}_0x23e73c['status'](_0x19b4e4)[_0x952d('0x2b')](_0x34ba25);};}exports[_0x952d('0x2c')]=function(_0x1c1d2d,_0x51b9d2){var _0x254109={},_0x58d654={},_0x5e7813={'count':0x0,'rows':[]};var _0x191abe=_[_0x952d('0x2d')](db[_0x952d('0x2e')][_0x952d('0x2f')],function(_0x532533){return{'name':_0x532533[_0x952d('0x30')],'type':_0x532533[_0x952d('0x31')][_0x952d('0x32')]};});_0x58d654['model']=_[_0x952d('0x2d')](_0x191abe,'name');_0x58d654[_0x952d('0x33')]=_['keys'](_0x1c1d2d[_0x952d('0x33')]);_0x58d654[_0x952d('0x34')]=_[_0x952d('0x35')](_0x58d654['model'],_0x58d654[_0x952d('0x33')]);_0x254109[_0x952d('0x36')]=_['intersection'](_0x58d654[_0x952d('0x37')],qs[_0x952d('0x38')](_0x1c1d2d[_0x952d('0x33')][_0x952d('0x38')]));_0x254109['attributes']=_0x254109[_0x952d('0x36')][_0x952d('0x39')]?_0x254109[_0x952d('0x36')]:_0x58d654['model'];if(!_0x1c1d2d[_0x952d('0x33')][_0x952d('0x3a')](_0x952d('0x3b'))){_0x254109['limit']=qs['limit'](_0x1c1d2d[_0x952d('0x33')][_0x952d('0x1f')]);_0x254109['offset']=qs[_0x952d('0x1c')](_0x1c1d2d[_0x952d('0x33')][_0x952d('0x1c')]);}_0x254109[_0x952d('0x3c')]=qs[_0x952d('0x3d')](_0x1c1d2d[_0x952d('0x33')][_0x952d('0x3d')]);_0x254109[_0x952d('0x3e')]=qs['filters'](_[_0x952d('0x3f')](_0x1c1d2d[_0x952d('0x33')],_0x58d654[_0x952d('0x34')]),_0x191abe);if(_0x1c1d2d[_0x952d('0x33')]['filter']){_0x254109[_0x952d('0x3e')]=_[_0x952d('0x40')](_0x254109[_0x952d('0x3e')],{'$or':_[_0x952d('0x2d')](_0x191abe,function(_0x33e6bd){if(_0x33e6bd['type']!=='VIRTUAL'){var _0x298dcb={};_0x298dcb[_0x33e6bd[_0x952d('0x2a')]]={'$like':'%'+_0x1c1d2d['query']['filter']+'%'};return _0x298dcb;}})});}_0x254109=_[_0x952d('0x40')]({},_0x254109,_0x1c1d2d['options']);var _0x2ebd5c={'where':_0x254109[_0x952d('0x3e')]};return db[_0x952d('0x2e')][_0x952d('0x1e')](_0x2ebd5c)[_0x952d('0x25')](function(_0x213608){_0x5e7813[_0x952d('0x1e')]=_0x213608;if(_0x1c1d2d[_0x952d('0x33')][_0x952d('0x41')]){_0x254109['include']=[{'all':!![]}];}return db[_0x952d('0x2e')][_0x952d('0x42')](_0x254109);})[_0x952d('0x25')](function(_0x1bcd28){_0x5e7813[_0x952d('0x43')]=_0x1bcd28;return _0x5e7813;})[_0x952d('0x25')](respondWithFilteredResult(_0x51b9d2,_0x254109))[_0x952d('0x44')](handleError(_0x51b9d2,null));};exports[_0x952d('0x45')]=function(_0x1a747d,_0x5a0186){var _0x365a41={'raw':![],'where':{'id':_0x1a747d[_0x952d('0x46')]['id']}},_0x53de86={};_0x53de86[_0x952d('0x37')]=_['keys'](db[_0x952d('0x2e')][_0x952d('0x2f')]);_0x53de86[_0x952d('0x33')]=_[_0x952d('0x47')](_0x1a747d[_0x952d('0x33')]);_0x53de86[_0x952d('0x34')]=_[_0x952d('0x35')](_0x53de86[_0x952d('0x37')],_0x53de86[_0x952d('0x33')]);_0x365a41[_0x952d('0x36')]=_[_0x952d('0x35')](_0x53de86[_0x952d('0x37')],qs[_0x952d('0x38')](_0x1a747d['query'][_0x952d('0x38')]));_0x365a41[_0x952d('0x36')]=_0x365a41[_0x952d('0x36')][_0x952d('0x39')]?_0x365a41[_0x952d('0x36')]:_0x53de86['model'];if(_0x1a747d[_0x952d('0x33')][_0x952d('0x41')]){_0x365a41['include']=[{'all':!![]}];}_0x365a41=_[_0x952d('0x40')]({},_0x365a41,_0x1a747d[_0x952d('0x48')]);return db[_0x952d('0x2e')][_0x952d('0x49')](_0x365a41)['then'](handleEntityNotFound(_0x5a0186,null))[_0x952d('0x25')](respondWithResult(_0x5a0186,null))[_0x952d('0x44')](handleError(_0x5a0186,null));};exports[_0x952d('0x4a')]=function(_0x237ad7,_0x4c7307){return db[_0x952d('0x2e')][_0x952d('0x4a')](_0x237ad7[_0x952d('0x4b')],{})['then'](respondWithResult(_0x4c7307,0xc9))['catch'](handleError(_0x4c7307,null));};exports[_0x952d('0x4c')]=function(_0x4a530f,_0x184a51){return db[_0x952d('0x2e')][_0x952d('0x4c')](_0x4a530f[_0x952d('0x4b')],{'raw':![],'individualHooks':!![]})[_0x952d('0x25')](respondWithResult(_0x184a51,0xc9))['catch'](handleError(_0x184a51,null));};exports[_0x952d('0x24')]=function(_0x3d9dfa,_0x36cce5){if(_0x3d9dfa[_0x952d('0x4b')]['id']){delete _0x3d9dfa[_0x952d('0x4b')]['id'];}return db[_0x952d('0x2e')][_0x952d('0x49')]({'where':{'id':_0x3d9dfa['params']['id']}})[_0x952d('0x25')](handleEntityNotFound(_0x36cce5,null))[_0x952d('0x25')](saveUpdates(_0x3d9dfa['body'],null))[_0x952d('0x25')](respondWithResult(_0x36cce5,null))[_0x952d('0x44')](handleError(_0x36cce5,null));};exports[_0x952d('0x26')]=function(_0x2a23e1,_0x217673){return db[_0x952d('0x2e')]['find']({'where':{'id':_0x2a23e1[_0x952d('0x46')]['id']}})[_0x952d('0x25')](handleEntityNotFound(_0x217673,null))[_0x952d('0x25')](removeEntity(_0x217673,null))[_0x952d('0x44')](handleError(_0x217673,null));};exports[_0x952d('0x4d')]=function(_0x2fa19a,_0x1cb4fc){return db[_0x952d('0x2e')][_0x952d('0x26')]({'where':{'id':_0x2fa19a[_0x952d('0x33')][_0x952d('0x4e')]||[]},'raw':![],'individualHooks':!![]})[_0x952d('0x25')](respondWithResult(_0x1cb4fc,0xcc))[_0x952d('0x44')](handleError(_0x1cb4fc,null));};exports[_0x952d('0x4f')]=function(_0x567178,_0x3dbce5,_0x5528df){return db[_0x952d('0x50')][_0x952d('0x51')]({'where':{'id':_0x567178[_0x952d('0x46')]['id']}})['then'](handleEntityNotFound(_0x3dbce5,null))['then'](function(_0x3411d9){if(_0x3411d9){return db[_0x952d('0x52')][_0x952d('0x53')](function(_0x2c1d67){return db[_0x952d('0x2e')][_0x952d('0x26')]({'where':{'CustomReportId':_0x567178[_0x952d('0x46')]['id']},'transaction':_0x2c1d67})[_0x952d('0x25')](function(_0x3e3c5a){var _0x4d5568=_[_0x952d('0x2d')](_0x567178[_0x952d('0x4b')],function(_0x407628){delete _0x407628['id'];_0x407628[_0x952d('0x54')]=_0x567178[_0x952d('0x46')]['id'];return _0x407628;});return db[_0x952d('0x2e')]['bulkCreate'](_0x4d5568,{'transaction':_0x2c1d67});});})[_0x952d('0x25')](function(){return db[_0x952d('0x2e')][_0x952d('0x42')]({'where':{'CustomReportId':_0x567178[_0x952d('0x46')]['id']}});});}})[_0x952d('0x25')](respondWithResult(_0x3dbce5,null))[_0x952d('0x44')](handleError(_0x3dbce5,null));};
\ No newline at end of file
index 5ac2101..0208a68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc62a=['define','AnalyticFieldReport','analytics_report_fields','lodash','util','../../config/logger','api','moment','request-promise','../../config/environment','./analyticFieldReport.attributes','exports'];(function(_0x2debfb,_0x1a7bf8){var _0x3ea4a3=function(_0x53f851){while(--_0x53f851){_0x2debfb['push'](_0x2debfb['shift']());}};_0x3ea4a3(++_0x1a7bf8);}(_0xc62a,0x183));var _0xac62=function(_0x24880a,_0x53f07d){_0x24880a=_0x24880a-0x0;var _0x3fb2b8=_0xc62a[_0x24880a];return _0x3fb2b8;};'use strict';var _=require(_0xac62('0x0'));var util=require(_0xac62('0x1'));var logger=require(_0xac62('0x2'))(_0xac62('0x3'));var moment=require(_0xac62('0x4'));var BPromise=require('bluebird');var rp=require(_0xac62('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac62('0x6'));var attributes=require(_0xac62('0x7'));module[_0xac62('0x8')]=function(_0x397f14,_0x50024f){return _0x397f14[_0xac62('0x9')](_0xac62('0xa'),attributes,{'tableName':_0xac62('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb2b6=['AnalyticFieldReport','analytics_report_fields','util','../../config/logger','bluebird','path','rimraf','./analyticFieldReport.attributes'];(function(_0x1e0ca5,_0x57fd4f){var _0x410923=function(_0x5bd94d){while(--_0x5bd94d){_0x1e0ca5['push'](_0x1e0ca5['shift']());}};_0x410923(++_0x57fd4f);}(_0xb2b6,0x162));var _0x6b2b=function(_0x33e675,_0x3eaa38){_0x33e675=_0x33e675-0x0;var _0xf3d5d8=_0xb2b6[_0x33e675];return _0xf3d5d8;};'use strict';var _=require('lodash');var util=require(_0x6b2b('0x0'));var logger=require(_0x6b2b('0x1'))('api');var moment=require('moment');var BPromise=require(_0x6b2b('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6b2b('0x3'));var rimraf=require(_0x6b2b('0x4'));var config=require('../../config/environment');var attributes=require(_0x6b2b('0x5'));module['exports']=function(_0x2825cb,_0x13abcc){return _0x2825cb['define'](_0x6b2b('0x6'),attributes,{'tableName':_0x6b2b('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e4d7943..d4aa2ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b2=['code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x403c94,_0x3eb720){var _0x6976f0=function(_0x4a363a){while(--_0x4a363a){_0x403c94['push'](_0x403c94['shift']());}};_0x6976f0(++_0x3eb720);}(_0xd8b2,0xb4));var _0x2d8b=function(_0x4b68db,_0x539160){_0x4b68db=_0x4b68db-0x0;var _0xd4b7f8=_0xd8b2[_0x4b68db];return _0xd4b7f8;};'use strict';var _=require(_0x2d8b('0x0'));var util=require(_0x2d8b('0x1'));var moment=require('moment');var BPromise=require(_0x2d8b('0x2'));var rs=require(_0x2d8b('0x3'));var fs=require('fs');var Redis=require(_0x2d8b('0x4'));var db=require(_0x2d8b('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x2d8b('0x6'));var config=require(_0x2d8b('0x7'));var jayson=require(_0x2d8b('0x8'));var client=jayson[_0x2d8b('0x9')][_0x2d8b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x41a015,_0xe3d281,_0x4e2d84){return new BPromise(function(_0x5a24bf,_0x56b4a1){return client[_0x2d8b('0xb')](_0x41a015,_0x4e2d84)[_0x2d8b('0xc')](function(_0x3b35b2){logger[_0x2d8b('0xd')](_0x2d8b('0xe'),_0xe3d281,_0x2d8b('0xf'));logger['debug']('AnalyticFieldReport,\x20%s,\x20%s,\x20%s',_0xe3d281,'request\x20sent',JSON[_0x2d8b('0x10')](_0x3b35b2));if(_0x3b35b2[_0x2d8b('0x11')]){if(_0x3b35b2[_0x2d8b('0x11')][_0x2d8b('0x12')]===0x1f4){logger['error'](_0x2d8b('0xe'),_0xe3d281,_0x3b35b2[_0x2d8b('0x11')][_0x2d8b('0x13')]);return _0x56b4a1(_0x3b35b2['error'][_0x2d8b('0x13')]);}logger[_0x2d8b('0x11')]('AnalyticFieldReport,\x20%s,\x20%s',_0xe3d281,_0x3b35b2[_0x2d8b('0x11')][_0x2d8b('0x13')]);return _0x5a24bf(_0x3b35b2['error'][_0x2d8b('0x13')]);}else{logger[_0x2d8b('0xd')]('AnalyticFieldReport,\x20%s,\x20%s',_0xe3d281,'request\x20sent');_0x5a24bf(_0x3b35b2[_0x2d8b('0x14')]['message']);}})[_0x2d8b('0x15')](function(_0x5a4f6d){logger[_0x2d8b('0x11')](_0x2d8b('0xe'),_0xe3d281,_0x5a4f6d);_0x56b4a1(_0x5a4f6d);});});}
\ No newline at end of file
+var _0x079b=['bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util','moment'];(function(_0x374672,_0x4f495a){var _0x2318e1=function(_0x28645b){while(--_0x28645b){_0x374672['push'](_0x374672['shift']());}};_0x2318e1(++_0x4f495a);}(_0x079b,0x165));var _0xb079=function(_0x10dc94,_0x2fed4f){_0x10dc94=_0x10dc94-0x0;var _0x4a462d=_0x079b[_0x10dc94];return _0x4a462d;};'use strict';var _=require(_0xb079('0x0'));var util=require(_0xb079('0x1'));var moment=require(_0xb079('0x2'));var BPromise=require(_0xb079('0x3'));var rs=require(_0xb079('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb079('0x5'));var logger=require(_0xb079('0x6'))('rpc');var config=require(_0xb079('0x7'));var jayson=require(_0xb079('0x8'));var client=jayson['client'][_0xb079('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x34b1b1,_0xec7d79,_0x1ce51d){return new BPromise(function(_0x2213d2,_0x2323c5){return client[_0xb079('0xa')](_0x34b1b1,_0x1ce51d)[_0xb079('0xb')](function(_0x27bcae){logger['info'](_0xb079('0xc'),_0xec7d79,_0xb079('0xd'));logger[_0xb079('0xe')]('AnalyticFieldReport,\x20%s,\x20%s,\x20%s',_0xec7d79,_0xb079('0xd'),JSON[_0xb079('0xf')](_0x27bcae));if(_0x27bcae[_0xb079('0x10')]){if(_0x27bcae['error'][_0xb079('0x11')]===0x1f4){logger['error'](_0xb079('0xc'),_0xec7d79,_0x27bcae[_0xb079('0x10')]['message']);return _0x2323c5(_0x27bcae[_0xb079('0x10')]['message']);}logger[_0xb079('0x10')]('AnalyticFieldReport,\x20%s,\x20%s',_0xec7d79,_0x27bcae[_0xb079('0x10')][_0xb079('0x12')]);return _0x2213d2(_0x27bcae[_0xb079('0x10')][_0xb079('0x12')]);}else{logger['info'](_0xb079('0xc'),_0xec7d79,_0xb079('0xd'));_0x2213d2(_0x27bcae[_0xb079('0x13')]['message']);}})['catch'](function(_0x4872eb){logger[_0xb079('0x10')](_0xb079('0xc'),_0xec7d79,_0x4872eb);_0x2323c5(_0x4872eb);});});}
\ No newline at end of file
index d6ce3a6..4a69048 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(_0x43b7f5,_0xb575d){var _0xafa4f3=function(_0x5d3f2c){while(--_0x5d3f2c){_0x43b7f5['push'](_0x43b7f5['shift']());}};_0xafa4f3(++_0xb575d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0xa9e0[_0x4bfac3];return _0x15f0f2;};'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(_0x316651,_0x528488){var _0x1625bb=function(_0x189730){while(--_0x189730){_0x316651['push'](_0x316651['shift']());}};_0x1625bb(++_0x528488);}(_0xa9e0,0x123));var _0x0a9e=function(_0x521929,_0x479be5){_0x521929=_0x521929-0x0;var _0x632436=_0xa9e0[_0x521929];return _0x632436;};'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 f12b812..4a71e77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd52a=['STRING','TEXT','exports','name'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0xd52a,0xca));var _0xad52=function(_0x2edb44,_0xcf8cc1){_0x2edb44=_0x2edb44-0x0;var _0x32ec9a=_0xd52a[_0x2edb44];return _0x32ec9a;};'use strict';var Sequelize=require('sequelize');module[_0xad52('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xad52('0x1')},'table':{'type':Sequelize[_0xad52('0x2')]},'metric':{'type':Sequelize[_0xad52('0x3')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xb248=['name','TEXT','sequelize','STRING'];(function(_0x1f1f37,_0x199e01){var _0x3b316f=function(_0x50574e){while(--_0x50574e){_0x1f1f37['push'](_0x1f1f37['shift']());}};_0x3b316f(++_0x199e01);}(_0xb248,0xc6));var _0x8b24=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0xb248[_0x5d2803];return _0xdcad2c;};'use strict';var Sequelize=require(_0x8b24('0x0'));module['exports']={'name':{'type':Sequelize[_0x8b24('0x1')],'allowNull':![],'unique':_0x8b24('0x2')},'table':{'type':Sequelize[_0x8b24('0x1')]},'metric':{'type':Sequelize[_0x8b24('0x3')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 3bf1f37..32e6e2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7da7=['model','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','merge','options','where','AnalyticMetric','includeAll','include','findAll','rows','catch','params','keys','length','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','moment','bluebird','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','json','apply','reject','update','then','destroy','get','Metrics','UserProfileResource','end','name','send','index','map','rawAttributes','fieldName','type','key'];(function(_0x2aa0e7,_0x4e5145){var _0x1472c0=function(_0x4deaeb){while(--_0x4deaeb){_0x2aa0e7['push'](_0x2aa0e7['shift']());}};_0x1472c0(++_0x4e5145);}(_0x7da7,0x10d));var _0x77da=function(_0x1139d0,_0x41e5f8){_0x1139d0=_0x1139d0-0x0;var _0xcc01a6=_0x7da7[_0x1139d0];return _0xcc01a6;};'use strict';var emlformat=require(_0x77da('0x0'));var rimraf=require(_0x77da('0x1'));var zipdir=require(_0x77da('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x77da('0x3'));var BPromise=require(_0x77da('0x4'));var Mustache=require('mustache');var util=require(_0x77da('0x5'));var path=require(_0x77da('0x6'));var sox=require('sox');var csv=require(_0x77da('0x7'));var ejs=require(_0x77da('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x77da('0x9'));var squel=require('squel');var crypto=require(_0x77da('0xa'));var jsforce=require(_0x77da('0xb'));var deskjs=require(_0x77da('0xc'));var toCsv=require(_0x77da('0x7'));var querystring=require(_0x77da('0xd'));var Papa=require('papaparse');var Redis=require(_0x77da('0xe'));var authService=require(_0x77da('0xf'));var qs=require(_0x77da('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x77da('0x11'));var logger=require(_0x77da('0x12'))(_0x77da('0x13'));var utils=require(_0x77da('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x77da('0x15'));var db=require(_0x77da('0x16'))['db'];function respondWithStatusCode(_0x2acc65,_0x5d6e2f){_0x5d6e2f=_0x5d6e2f||0xcc;return function(_0x4a7748){if(_0x4a7748){return _0x2acc65[_0x77da('0x17')](_0x5d6e2f);}return _0x2acc65[_0x77da('0x18')](_0x5d6e2f)['end']();};}function respondWithResult(_0x3b0ff2,_0x369df0){_0x369df0=_0x369df0||0xc8;return function(_0x355719){if(_0x355719){return _0x3b0ff2[_0x77da('0x18')](_0x369df0)['json'](_0x355719);}};}function respondWithFilteredResult(_0x2172d0,_0x4e130c){return function(_0x29cd7b){if(_0x29cd7b){var _0x366443=typeof _0x4e130c[_0x77da('0x19')]===_0x77da('0x1a')&&typeof _0x4e130c['limit']==='undefined';var _0x514016=_0x29cd7b['count'];var _0x103e46=_0x366443?0x0:_0x4e130c[_0x77da('0x19')];var _0x289887=_0x366443?_0x29cd7b[_0x77da('0x1b')]:_0x4e130c[_0x77da('0x19')]+_0x4e130c[_0x77da('0x1c')];var _0x1d325c;if(_0x289887>=_0x514016){_0x289887=_0x514016;_0x1d325c=0xc8;}else{_0x1d325c=0xce;}_0x2172d0[_0x77da('0x18')](_0x1d325c);return _0x2172d0['set']('Content-Range',_0x103e46+'-'+_0x289887+'/'+_0x514016)[_0x77da('0x1d')](_0x29cd7b);}return null;};}function patchUpdates(_0x4d1512){return function(_0x507979){try{jsonpatch[_0x77da('0x1e')](_0x507979,_0x4d1512,!![]);}catch(_0x304a2b){return BPromise[_0x77da('0x1f')](_0x304a2b);}return _0x507979['save']();};}function saveUpdates(_0x58270c,_0x3e6cfe){return function(_0x58f6c1){if(_0x58f6c1){return _0x58f6c1[_0x77da('0x20')](_0x58270c)[_0x77da('0x21')](function(_0xc52f0e){return _0xc52f0e;});}return null;};}function removeEntity(_0x27b6c7,_0x10399a){return function(_0x270318){if(_0x270318){return _0x270318[_0x77da('0x22')]()['then'](function(){var _0x4885ec=_0x270318[_0x77da('0x23')]({'plain':!![]});var _0x2d009f=_0x77da('0x24');return db[_0x77da('0x25')]['destroy']({'where':{'type':_0x2d009f,'resourceId':_0x4885ec['id']}})[_0x77da('0x21')](function(){return _0x270318;});})[_0x77da('0x21')](function(){_0x27b6c7[_0x77da('0x18')](0xcc)[_0x77da('0x26')]();});}};}function handleEntityNotFound(_0x446ae7,_0x5997b6){return function(_0xce24b8){if(!_0xce24b8){_0x446ae7[_0x77da('0x17')](0x194);}return _0xce24b8;};}function handleError(_0x1f2279,_0x2913f7){_0x2913f7=_0x2913f7||0x1f4;return function(_0x496ecd){logger['error'](_0x496ecd['stack']);if(_0x496ecd[_0x77da('0x27')]){delete _0x496ecd[_0x77da('0x27')];}_0x1f2279[_0x77da('0x18')](_0x2913f7)[_0x77da('0x28')](_0x496ecd);};}exports[_0x77da('0x29')]=function(_0x4eeb99,_0x350b4e){var _0x26f5a0={},_0x356bfb={},_0x1d381b={'count':0x0,'rows':[]};var _0x1e7853=_[_0x77da('0x2a')](db['AnalyticMetric'][_0x77da('0x2b')],function(_0x228851){return{'name':_0x228851[_0x77da('0x2c')],'type':_0x228851[_0x77da('0x2d')][_0x77da('0x2e')]};});_0x356bfb[_0x77da('0x2f')]=_[_0x77da('0x2a')](_0x1e7853,_0x77da('0x27'));_0x356bfb['query']=_['keys'](_0x4eeb99[_0x77da('0x30')]);_0x356bfb[_0x77da('0x31')]=_['intersection'](_0x356bfb[_0x77da('0x2f')],_0x356bfb[_0x77da('0x30')]);_0x26f5a0[_0x77da('0x32')]=_[_0x77da('0x33')](_0x356bfb[_0x77da('0x2f')],qs[_0x77da('0x34')](_0x4eeb99[_0x77da('0x30')]['fields']));_0x26f5a0[_0x77da('0x32')]=_0x26f5a0['attributes']['length']?_0x26f5a0['attributes']:_0x356bfb[_0x77da('0x2f')];if(!_0x4eeb99['query'][_0x77da('0x35')](_0x77da('0x36'))){_0x26f5a0[_0x77da('0x1c')]=qs[_0x77da('0x1c')](_0x4eeb99[_0x77da('0x30')][_0x77da('0x1c')]);_0x26f5a0[_0x77da('0x19')]=qs['offset'](_0x4eeb99[_0x77da('0x30')][_0x77da('0x19')]);}_0x26f5a0[_0x77da('0x37')]=qs[_0x77da('0x38')](_0x4eeb99[_0x77da('0x30')][_0x77da('0x38')]);_0x26f5a0['where']=qs[_0x77da('0x31')](_[_0x77da('0x39')](_0x4eeb99[_0x77da('0x30')],_0x356bfb['filters']),_0x1e7853);if(_0x4eeb99[_0x77da('0x30')]['filter']){_0x26f5a0['where']=_['merge'](_0x26f5a0['where'],{'$or':_[_0x77da('0x2a')](_0x1e7853,function(_0x1adba5){if(_0x1adba5[_0x77da('0x2d')]!=='VIRTUAL'){var _0x21d337={};_0x21d337[_0x1adba5['name']]={'$like':'%'+_0x4eeb99[_0x77da('0x30')]['filter']+'%'};return _0x21d337;}})});}_0x26f5a0=_[_0x77da('0x3a')]({},_0x26f5a0,_0x4eeb99[_0x77da('0x3b')]);var _0x290667={'where':_0x26f5a0[_0x77da('0x3c')]};return db[_0x77da('0x3d')]['count'](_0x290667)[_0x77da('0x21')](function(_0x1f48bd){_0x1d381b[_0x77da('0x1b')]=_0x1f48bd;if(_0x4eeb99[_0x77da('0x30')][_0x77da('0x3e')]){_0x26f5a0[_0x77da('0x3f')]=[{'all':!![]}];}return db['AnalyticMetric'][_0x77da('0x40')](_0x26f5a0);})[_0x77da('0x21')](function(_0x21de41){_0x1d381b[_0x77da('0x41')]=_0x21de41;return _0x1d381b;})[_0x77da('0x21')](respondWithFilteredResult(_0x350b4e,_0x26f5a0))[_0x77da('0x42')](handleError(_0x350b4e,null));};exports['show']=function(_0x10957b,_0x5abcd9){var _0x1ae806={'raw':!![],'where':{'id':_0x10957b[_0x77da('0x43')]['id']}},_0x373fb2={};_0x373fb2['model']=_[_0x77da('0x44')](db[_0x77da('0x3d')][_0x77da('0x2b')]);_0x373fb2[_0x77da('0x30')]=_[_0x77da('0x44')](_0x10957b[_0x77da('0x30')]);_0x373fb2[_0x77da('0x31')]=_[_0x77da('0x33')](_0x373fb2[_0x77da('0x2f')],_0x373fb2['query']);_0x1ae806[_0x77da('0x32')]=_[_0x77da('0x33')](_0x373fb2[_0x77da('0x2f')],qs[_0x77da('0x34')](_0x10957b[_0x77da('0x30')][_0x77da('0x34')]));_0x1ae806['attributes']=_0x1ae806['attributes'][_0x77da('0x45')]?_0x1ae806[_0x77da('0x32')]:_0x373fb2[_0x77da('0x2f')];if(_0x10957b[_0x77da('0x30')][_0x77da('0x3e')]){_0x1ae806[_0x77da('0x3f')]=[{'all':!![]}];}_0x1ae806=_['merge']({},_0x1ae806,_0x10957b[_0x77da('0x3b')]);return db[_0x77da('0x3d')][_0x77da('0x46')](_0x1ae806)[_0x77da('0x21')](handleEntityNotFound(_0x5abcd9,null))['then'](respondWithResult(_0x5abcd9,null))[_0x77da('0x42')](handleError(_0x5abcd9,null));};exports['create']=function(_0x518fd5,_0x36263b){return db[_0x77da('0x3d')][_0x77da('0x47')](_0x518fd5[_0x77da('0x48')],{})['then'](function(_0x16bf4b){var _0x1e36ee=_0x518fd5['user'][_0x77da('0x23')]({'plain':!![]});if(!_0x1e36ee)throw new Error(_0x77da('0x49'));if(_0x1e36ee['role']===_0x77da('0x4a')){var _0x3aaf5b=_0x16bf4b[_0x77da('0x23')]({'plain':!![]});var _0xef2496=_0x77da('0x24');return db[_0x77da('0x4b')][_0x77da('0x46')]({'where':{'name':_0xef2496,'userProfileId':_0x1e36ee[_0x77da('0x4c')]},'raw':!![]})[_0x77da('0x21')](function(_0x3a34a8){if(_0x3a34a8&&_0x3a34a8['autoAssociation']===0x0){return db[_0x77da('0x25')]['create']({'name':_0x3aaf5b[_0x77da('0x27')],'resourceId':_0x3aaf5b['id'],'type':_0x3a34a8[_0x77da('0x27')],'sectionId':_0x3a34a8['id']},{})[_0x77da('0x21')](function(){return _0x16bf4b;});}else{return _0x16bf4b;}})[_0x77da('0x42')](function(_0x374179){logger[_0x77da('0x4d')](_0x77da('0x4e'),_0x374179);throw _0x374179;});}return _0x16bf4b;})['then'](respondWithResult(_0x36263b,0xc9))[_0x77da('0x42')](handleError(_0x36263b,null));};exports[_0x77da('0x20')]=function(_0x1a7115,_0x353be9){if(_0x1a7115['body']['id']){delete _0x1a7115[_0x77da('0x48')]['id'];}return db[_0x77da('0x3d')][_0x77da('0x46')]({'where':{'id':_0x1a7115['params']['id']}})['then'](handleEntityNotFound(_0x353be9,null))[_0x77da('0x21')](saveUpdates(_0x1a7115[_0x77da('0x48')],null))[_0x77da('0x21')](respondWithResult(_0x353be9,null))[_0x77da('0x42')](handleError(_0x353be9,null));};exports[_0x77da('0x22')]=function(_0x528a32,_0x50437b){return db[_0x77da('0x3d')][_0x77da('0x46')]({'where':{'id':_0x528a32['params']['id']}})[_0x77da('0x21')](handleEntityNotFound(_0x50437b,null))[_0x77da('0x21')](removeEntity(_0x50437b,null))[_0x77da('0x42')](handleError(_0x50437b,null));};
\ No newline at end of file
+var _0x7217=['Content-Range','apply','reject','save','update','then','destroy','get','Metrics','UserProfileResource','sendStatus','error','stack','name','send','index','map','AnalyticMetric','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','rawAttributes','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set'];(function(_0x3e5b44,_0x18326d){var _0x3cb14c=function(_0x13ee89){while(--_0x13ee89){_0x3e5b44['push'](_0x3e5b44['shift']());}};_0x3cb14c(++_0x18326d);}(_0x7217,0x19e));var _0x7721=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x7217[_0x6131cd];return _0x47e916;};'use strict';var emlformat=require(_0x7721('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7721('0x1'));var jsonpatch=require(_0x7721('0x2'));var rp=require(_0x7721('0x3'));var moment=require(_0x7721('0x4'));var BPromise=require(_0x7721('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7721('0x6'));var sox=require(_0x7721('0x7'));var csv=require(_0x7721('0x8'));var ejs=require(_0x7721('0x9'));var fs=require('fs');var fs_extra=require(_0x7721('0xa'));var _=require(_0x7721('0xb'));var squel=require(_0x7721('0xc'));var crypto=require(_0x7721('0xd'));var jsforce=require(_0x7721('0xe'));var deskjs=require(_0x7721('0xf'));var toCsv=require(_0x7721('0x8'));var querystring=require(_0x7721('0x10'));var Papa=require(_0x7721('0x11'));var Redis=require(_0x7721('0x12'));var authService=require(_0x7721('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x7721('0x14'));var hardwareService=require(_0x7721('0x15'));var logger=require(_0x7721('0x16'))(_0x7721('0x17'));var utils=require(_0x7721('0x18'));var config=require(_0x7721('0x19'));var licenseUtil=require(_0x7721('0x1a'));var db=require(_0x7721('0x1b'))['db'];function respondWithStatusCode(_0x55b4ca,_0x2911ec){_0x2911ec=_0x2911ec||0xcc;return function(_0x199930){if(_0x199930){return _0x55b4ca['sendStatus'](_0x2911ec);}return _0x55b4ca[_0x7721('0x1c')](_0x2911ec)[_0x7721('0x1d')]();};}function respondWithResult(_0x3f01c5,_0x2e9752){_0x2e9752=_0x2e9752||0xc8;return function(_0x5069da){if(_0x5069da){return _0x3f01c5[_0x7721('0x1c')](_0x2e9752)[_0x7721('0x1e')](_0x5069da);}};}function respondWithFilteredResult(_0x534f1b,_0x4e199a){return function(_0x4b183e){if(_0x4b183e){var _0x5ed54=typeof _0x4e199a[_0x7721('0x1f')]===_0x7721('0x20')&&typeof _0x4e199a[_0x7721('0x21')]==='undefined';var _0x20f669=_0x4b183e['count'];var _0x3fc09e=_0x5ed54?0x0:_0x4e199a['offset'];var _0xfec626=_0x5ed54?_0x4b183e[_0x7721('0x22')]:_0x4e199a[_0x7721('0x1f')]+_0x4e199a[_0x7721('0x21')];var _0x2286e5;if(_0xfec626>=_0x20f669){_0xfec626=_0x20f669;_0x2286e5=0xc8;}else{_0x2286e5=0xce;}_0x534f1b[_0x7721('0x1c')](_0x2286e5);return _0x534f1b[_0x7721('0x23')](_0x7721('0x24'),_0x3fc09e+'-'+_0xfec626+'/'+_0x20f669)[_0x7721('0x1e')](_0x4b183e);}return null;};}function patchUpdates(_0xaeccc4){return function(_0x4ce1db){try{jsonpatch[_0x7721('0x25')](_0x4ce1db,_0xaeccc4,!![]);}catch(_0x2c1583){return BPromise[_0x7721('0x26')](_0x2c1583);}return _0x4ce1db[_0x7721('0x27')]();};}function saveUpdates(_0x57140c,_0x28f5a6){return function(_0x512f31){if(_0x512f31){return _0x512f31[_0x7721('0x28')](_0x57140c)[_0x7721('0x29')](function(_0x3e8a4e){return _0x3e8a4e;});}return null;};}function removeEntity(_0x1caad8,_0x121cc4){return function(_0x395b15){if(_0x395b15){return _0x395b15[_0x7721('0x2a')]()['then'](function(){var _0x216f20=_0x395b15[_0x7721('0x2b')]({'plain':!![]});var _0x125564=_0x7721('0x2c');return db[_0x7721('0x2d')][_0x7721('0x2a')]({'where':{'type':_0x125564,'resourceId':_0x216f20['id']}})[_0x7721('0x29')](function(){return _0x395b15;});})[_0x7721('0x29')](function(){_0x1caad8[_0x7721('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x258ddf,_0x5b0551){return function(_0x499b87){if(!_0x499b87){_0x258ddf[_0x7721('0x2e')](0x194);}return _0x499b87;};}function handleError(_0x343c19,_0x53c904){_0x53c904=_0x53c904||0x1f4;return function(_0x158d98){logger[_0x7721('0x2f')](_0x158d98[_0x7721('0x30')]);if(_0x158d98[_0x7721('0x31')]){delete _0x158d98[_0x7721('0x31')];}_0x343c19['status'](_0x53c904)[_0x7721('0x32')](_0x158d98);};}exports[_0x7721('0x33')]=function(_0x497f9f,_0x4a25c9){var _0xfde9ec={},_0x220bbf={},_0x48f329={'count':0x0,'rows':[]};var _0x46f772=_[_0x7721('0x34')](db[_0x7721('0x35')]['rawAttributes'],function(_0x3d9a32){return{'name':_0x3d9a32[_0x7721('0x36')],'type':_0x3d9a32[_0x7721('0x37')][_0x7721('0x38')]};});_0x220bbf[_0x7721('0x39')]=_['map'](_0x46f772,_0x7721('0x31'));_0x220bbf[_0x7721('0x3a')]=_[_0x7721('0x3b')](_0x497f9f['query']);_0x220bbf[_0x7721('0x3c')]=_[_0x7721('0x3d')](_0x220bbf['model'],_0x220bbf[_0x7721('0x3a')]);_0xfde9ec['attributes']=_[_0x7721('0x3d')](_0x220bbf[_0x7721('0x39')],qs[_0x7721('0x3e')](_0x497f9f[_0x7721('0x3a')][_0x7721('0x3e')]));_0xfde9ec[_0x7721('0x3f')]=_0xfde9ec[_0x7721('0x3f')][_0x7721('0x40')]?_0xfde9ec[_0x7721('0x3f')]:_0x220bbf[_0x7721('0x39')];if(!_0x497f9f[_0x7721('0x3a')]['hasOwnProperty'](_0x7721('0x41'))){_0xfde9ec['limit']=qs[_0x7721('0x21')](_0x497f9f[_0x7721('0x3a')][_0x7721('0x21')]);_0xfde9ec[_0x7721('0x1f')]=qs[_0x7721('0x1f')](_0x497f9f[_0x7721('0x3a')]['offset']);}_0xfde9ec['order']=qs['sort'](_0x497f9f['query'][_0x7721('0x42')]);_0xfde9ec[_0x7721('0x43')]=qs[_0x7721('0x3c')](_[_0x7721('0x44')](_0x497f9f['query'],_0x220bbf[_0x7721('0x3c')]),_0x46f772);if(_0x497f9f['query'][_0x7721('0x45')]){_0xfde9ec[_0x7721('0x43')]=_['merge'](_0xfde9ec[_0x7721('0x43')],{'$or':_[_0x7721('0x34')](_0x46f772,function(_0x4e77ff){if(_0x4e77ff['type']!==_0x7721('0x46')){var _0xfc4dc4={};_0xfc4dc4[_0x4e77ff[_0x7721('0x31')]]={'$like':'%'+_0x497f9f[_0x7721('0x3a')]['filter']+'%'};return _0xfc4dc4;}})});}_0xfde9ec=_[_0x7721('0x47')]({},_0xfde9ec,_0x497f9f[_0x7721('0x48')]);var _0x40ce8c={'where':_0xfde9ec[_0x7721('0x43')]};return db[_0x7721('0x35')]['count'](_0x40ce8c)[_0x7721('0x29')](function(_0x4a2c28){_0x48f329[_0x7721('0x22')]=_0x4a2c28;if(_0x497f9f['query'][_0x7721('0x49')]){_0xfde9ec[_0x7721('0x4a')]=[{'all':!![]}];}return db[_0x7721('0x35')]['findAll'](_0xfde9ec);})[_0x7721('0x29')](function(_0x11d853){_0x48f329[_0x7721('0x4b')]=_0x11d853;return _0x48f329;})['then'](respondWithFilteredResult(_0x4a25c9,_0xfde9ec))[_0x7721('0x4c')](handleError(_0x4a25c9,null));};exports[_0x7721('0x4d')]=function(_0xdb3033,_0x2d5f35){var _0x135dbc={'raw':!![],'where':{'id':_0xdb3033[_0x7721('0x4e')]['id']}},_0x57d09b={};_0x57d09b['model']=_['keys'](db[_0x7721('0x35')][_0x7721('0x4f')]);_0x57d09b[_0x7721('0x3a')]=_[_0x7721('0x3b')](_0xdb3033[_0x7721('0x3a')]);_0x57d09b[_0x7721('0x3c')]=_[_0x7721('0x3d')](_0x57d09b[_0x7721('0x39')],_0x57d09b[_0x7721('0x3a')]);_0x135dbc[_0x7721('0x3f')]=_['intersection'](_0x57d09b['model'],qs[_0x7721('0x3e')](_0xdb3033[_0x7721('0x3a')][_0x7721('0x3e')]));_0x135dbc[_0x7721('0x3f')]=_0x135dbc['attributes'][_0x7721('0x40')]?_0x135dbc[_0x7721('0x3f')]:_0x57d09b['model'];if(_0xdb3033[_0x7721('0x3a')]['includeAll']){_0x135dbc[_0x7721('0x4a')]=[{'all':!![]}];}_0x135dbc=_['merge']({},_0x135dbc,_0xdb3033[_0x7721('0x48')]);return db[_0x7721('0x35')][_0x7721('0x50')](_0x135dbc)['then'](handleEntityNotFound(_0x2d5f35,null))[_0x7721('0x29')](respondWithResult(_0x2d5f35,null))[_0x7721('0x4c')](handleError(_0x2d5f35,null));};exports['create']=function(_0x223d93,_0x1196c2){return db[_0x7721('0x35')]['create'](_0x223d93[_0x7721('0x51')],{})['then'](function(_0xdb1ca8){var _0x310549=_0x223d93[_0x7721('0x52')][_0x7721('0x2b')]({'plain':!![]});if(!_0x310549)throw new Error(_0x7721('0x53'));if(_0x310549[_0x7721('0x54')]===_0x7721('0x52')){var _0x7fbb73=_0xdb1ca8[_0x7721('0x2b')]({'plain':!![]});var _0x3386aa=_0x7721('0x2c');return db[_0x7721('0x55')][_0x7721('0x50')]({'where':{'name':_0x3386aa,'userProfileId':_0x310549[_0x7721('0x56')]},'raw':!![]})[_0x7721('0x29')](function(_0x5b741d){if(_0x5b741d&&_0x5b741d[_0x7721('0x57')]===0x0){return db[_0x7721('0x2d')][_0x7721('0x58')]({'name':_0x7fbb73[_0x7721('0x31')],'resourceId':_0x7fbb73['id'],'type':_0x5b741d[_0x7721('0x31')],'sectionId':_0x5b741d['id']},{})[_0x7721('0x29')](function(){return _0xdb1ca8;});}else{return _0xdb1ca8;}})[_0x7721('0x4c')](function(_0x57484c){logger[_0x7721('0x2f')](_0x7721('0x59'),_0x57484c);throw _0x57484c;});}return _0xdb1ca8;})[_0x7721('0x29')](respondWithResult(_0x1196c2,0xc9))[_0x7721('0x4c')](handleError(_0x1196c2,null));};exports[_0x7721('0x28')]=function(_0x9c0d4,_0x7fbd6c){if(_0x9c0d4[_0x7721('0x51')]['id']){delete _0x9c0d4[_0x7721('0x51')]['id'];}return db[_0x7721('0x35')][_0x7721('0x50')]({'where':{'id':_0x9c0d4['params']['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x7fbd6c,null))[_0x7721('0x29')](saveUpdates(_0x9c0d4[_0x7721('0x51')],null))[_0x7721('0x29')](respondWithResult(_0x7fbd6c,null))[_0x7721('0x4c')](handleError(_0x7fbd6c,null));};exports[_0x7721('0x2a')]=function(_0x41644f,_0x36fe6f){return db[_0x7721('0x35')][_0x7721('0x50')]({'where':{'id':_0x41644f[_0x7721('0x4e')]['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x36fe6f,null))[_0x7721('0x29')](removeEntity(_0x36fe6f,null))[_0x7721('0x4c')](handleError(_0x36fe6f,null));};
\ No newline at end of file
index 74d8d7e..494b2e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed20=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','AnalyticMetric','analytics_metrics','lodash','util'];(function(_0x447a2e,_0x5d7152){var _0x39031d=function(_0x46a6f8){while(--_0x46a6f8){_0x447a2e['push'](_0x447a2e['shift']());}};_0x39031d(++_0x5d7152);}(_0xed20,0xce));var _0x0ed2=function(_0xcd27d1,_0x39c272){_0xcd27d1=_0xcd27d1-0x0;var _0x3051c6=_0xed20[_0xcd27d1];return _0x3051c6;};'use strict';var _=require(_0x0ed2('0x0'));var util=require(_0x0ed2('0x1'));var logger=require(_0x0ed2('0x2'))('api');var moment=require(_0x0ed2('0x3'));var BPromise=require(_0x0ed2('0x4'));var rp=require(_0x0ed2('0x5'));var fs=require('fs');var path=require(_0x0ed2('0x6'));var rimraf=require(_0x0ed2('0x7'));var config=require(_0x0ed2('0x8'));var attributes=require('./analyticMetric.attributes');module[_0x0ed2('0x9')]=function(_0x88640a,_0x5c686a){return _0x88640a[_0x0ed2('0xa')](_0x0ed2('0xb'),attributes,{'tableName':_0x0ed2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x78e0=['request-promise','path','./analyticMetric.attributes','exports','define','analytics_metrics','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x6186a8,_0x5385c4){var _0xf72248=function(_0x2cc46a){while(--_0x2cc46a){_0x6186a8['push'](_0x6186a8['shift']());}};_0xf72248(++_0x5385c4);}(_0x78e0,0x13e));var _0x078e=function(_0x848300,_0xd6f38a){_0x848300=_0x848300-0x0;var _0x50ace4=_0x78e0[_0x848300];return _0x50ace4;};'use strict';var _=require(_0x078e('0x0'));var util=require(_0x078e('0x1'));var logger=require(_0x078e('0x2'))(_0x078e('0x3'));var moment=require(_0x078e('0x4'));var BPromise=require(_0x078e('0x5'));var rp=require(_0x078e('0x6'));var fs=require('fs');var path=require(_0x078e('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x078e('0x8'));module[_0x078e('0x9')]=function(_0x8e71c,_0x35578b){return _0x8e71c[_0x078e('0xa')]('AnalyticMetric',attributes,{'tableName':_0x078e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 18e9eea..64611d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1471=['catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x41d41d,_0x3c6817){var _0x542a92=function(_0x32b645){while(--_0x32b645){_0x41d41d['push'](_0x41d41d['shift']());}};_0x542a92(++_0x3c6817);}(_0x1471,0x6a));var _0x1147=function(_0x452d73,_0xdba000){_0x452d73=_0x452d73-0x0;var _0x2bca53=_0x1471[_0x452d73];return _0x2bca53;};'use strict';var _=require(_0x1147('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x1147('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1147('0x2'));var db=require(_0x1147('0x3'))['db'];var utils=require(_0x1147('0x4'));var logger=require(_0x1147('0x5'))('rpc');var config=require(_0x1147('0x6'));var jayson=require(_0x1147('0x7'));var client=jayson[_0x1147('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x278a00,_0x5ed09d,_0x2fbfdb){return new BPromise(function(_0x33d981,_0x4fae5f){return client[_0x1147('0x9')](_0x278a00,_0x2fbfdb)[_0x1147('0xa')](function(_0x5a1a2f){logger[_0x1147('0xb')](_0x1147('0xc'),_0x5ed09d,_0x1147('0xd'));logger['debug'](_0x1147('0xe'),_0x5ed09d,_0x1147('0xd'),JSON[_0x1147('0xf')](_0x5a1a2f));if(_0x5a1a2f[_0x1147('0x10')]){if(_0x5a1a2f[_0x1147('0x10')][_0x1147('0x11')]===0x1f4){logger[_0x1147('0x10')](_0x1147('0xc'),_0x5ed09d,_0x5a1a2f[_0x1147('0x10')][_0x1147('0x12')]);return _0x4fae5f(_0x5a1a2f[_0x1147('0x10')][_0x1147('0x12')]);}logger['error'](_0x1147('0xc'),_0x5ed09d,_0x5a1a2f[_0x1147('0x10')]['message']);return _0x33d981(_0x5a1a2f['error'][_0x1147('0x12')]);}else{logger[_0x1147('0xb')](_0x1147('0xc'),_0x5ed09d,_0x1147('0xd'));_0x33d981(_0x5a1a2f[_0x1147('0x13')][_0x1147('0x12')]);}})[_0x1147('0x14')](function(_0x4790e6){logger[_0x1147('0x10')](_0x1147('0xc'),_0x5ed09d,_0x4790e6);_0x4fae5f(_0x4790e6);});});}
\ No newline at end of file
+var _0x4183=['client','http','request','info','AnalyticMetric,\x20%s,\x20%s','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','util','moment','bluebird','../../config/utils','../../config/logger','../../config/environment'];(function(_0x4a9d73,_0x404b5f){var _0x2544c1=function(_0x45c894){while(--_0x45c894){_0x4a9d73['push'](_0x4a9d73['shift']());}};_0x2544c1(++_0x404b5f);}(_0x4183,0x163));var _0x3418=function(_0x5f42d3,_0xff8111){_0x5f42d3=_0x5f42d3-0x0;var _0xbb9cd=_0x4183[_0x5f42d3];return _0xbb9cd;};'use strict';var _=require('lodash');var util=require(_0x3418('0x0'));var moment=require(_0x3418('0x1'));var BPromise=require(_0x3418('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3418('0x3'));var logger=require(_0x3418('0x4'))('rpc');var config=require(_0x3418('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x3418('0x6')][_0x3418('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x332113,_0x4bec76,_0x4b62ce){return new BPromise(function(_0x3d5e73,_0x51f311){return client[_0x3418('0x8')](_0x332113,_0x4b62ce)['then'](function(_0x521b8b){logger[_0x3418('0x9')](_0x3418('0xa'),_0x4bec76,'request\x20sent');logger[_0x3418('0xb')](_0x3418('0xc'),_0x4bec76,'request\x20sent',JSON[_0x3418('0xd')](_0x521b8b));if(_0x521b8b['error']){if(_0x521b8b[_0x3418('0xe')][_0x3418('0xf')]===0x1f4){logger['error']('AnalyticMetric,\x20%s,\x20%s',_0x4bec76,_0x521b8b[_0x3418('0xe')][_0x3418('0x10')]);return _0x51f311(_0x521b8b[_0x3418('0xe')][_0x3418('0x10')]);}logger[_0x3418('0xe')](_0x3418('0xa'),_0x4bec76,_0x521b8b[_0x3418('0xe')][_0x3418('0x10')]);return _0x3d5e73(_0x521b8b['error'][_0x3418('0x10')]);}else{logger[_0x3418('0x9')](_0x3418('0xa'),_0x4bec76,_0x3418('0x11'));_0x3d5e73(_0x521b8b['result'][_0x3418('0x10')]);}})[_0x3418('0x12')](function(_0x4011e1){logger[_0x3418('0xe')](_0x3418('0xa'),_0x4bec76,_0x4011e1);_0x51f311(_0x4011e1);});});}
\ No newline at end of file
index 019b475..8ead178 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab29=['delete','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','index','/:id','isAuthenticated','show','create','put','update'];(function(_0x1c08f6,_0x14c077){var _0xbc156a=function(_0x59df22){while(--_0x59df22){_0x1c08f6['push'](_0x1c08f6['shift']());}};_0xbc156a(++_0x14c077);}(_0xab29,0x145));var _0x9ab2=function(_0x5e8559,_0x17a029){_0x5e8559=_0x5e8559-0x0;var _0x329b90=_0xab29[_0x5e8559];return _0x329b90;};'use strict';var multer=require(_0x9ab2('0x0'));var util=require(_0x9ab2('0x1'));var path=require(_0x9ab2('0x2'));var timeout=require(_0x9ab2('0x3'));var express=require('express');var router=express[_0x9ab2('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9ab2('0x5'));var interaction=require(_0x9ab2('0x6'));var config=require(_0x9ab2('0x7'));var controller=require(_0x9ab2('0x8'));router[_0x9ab2('0x9')]('/',auth['isAuthenticated'](),controller[_0x9ab2('0xa')]);router[_0x9ab2('0x9')](_0x9ab2('0xb'),auth[_0x9ab2('0xc')](),controller[_0x9ab2('0xd')]);router['post']('/',auth[_0x9ab2('0xc')](),controller[_0x9ab2('0xe')]);router[_0x9ab2('0xf')](_0x9ab2('0xb'),auth[_0x9ab2('0xc')](),controller[_0x9ab2('0x10')]);router[_0x9ab2('0x11')](_0x9ab2('0xb'),auth[_0x9ab2('0xc')](),controller['destroy']);module[_0x9ab2('0x12')]=router;
\ No newline at end of file
+var _0xf006=['./analyticMetric.controller','get','isAuthenticated','show','post','create','put','/:id','update','delete','destroy','path','connect-timeout','Router','../../components/auth/service'];(function(_0x4a07e3,_0xfccccf){var _0x43e1cf=function(_0x5267c8){while(--_0x5267c8){_0x4a07e3['push'](_0x4a07e3['shift']());}};_0x43e1cf(++_0xfccccf);}(_0xf006,0x146));var _0x6f00=function(_0xa2d2d6,_0x28fdb3){_0xa2d2d6=_0xa2d2d6-0x0;var _0x9b0bb3=_0xf006[_0xa2d2d6];return _0x9b0bb3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6f00('0x0'));var timeout=require(_0x6f00('0x1'));var express=require('express');var router=express[_0x6f00('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x6f00('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6f00('0x4'));router[_0x6f00('0x5')]('/',auth[_0x6f00('0x6')](),controller['index']);router[_0x6f00('0x5')]('/:id',auth[_0x6f00('0x6')](),controller[_0x6f00('0x7')]);router[_0x6f00('0x8')]('/',auth[_0x6f00('0x6')](),controller[_0x6f00('0x9')]);router[_0x6f00('0xa')](_0x6f00('0xb'),auth[_0x6f00('0x6')](),controller[_0x6f00('0xc')]);router[_0x6f00('0xd')](_0x6f00('0xb'),auth[_0x6f00('0x6')](),controller[_0x6f00('0xe')]);module['exports']=router;
\ No newline at end of file
index 1ed5cc4..25d7b79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d92=['sequelize','exports','TEXT'];(function(_0xdd2bfa,_0x5bd304){var _0x55397e=function(_0x196f7d){while(--_0x196f7d){_0xdd2bfa['push'](_0xdd2bfa['shift']());}};_0x55397e(++_0x5bd304);}(_0x0d92,0x8a));var _0x20d9=function(_0x20ac7d,_0x2fa262){_0x20ac7d=_0x20ac7d-0x0;var _0x452545=_0x0d92[_0x20ac7d];return _0x452545;};'use strict';var Sequelize=require(_0x20d9('0x0'));module[_0x20d9('0x1')]={'tree':{'type':Sequelize[_0x20d9('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x3c5c=['TEXT','exports'];(function(_0x5608a3,_0x5b33c5){var _0x1ed50a=function(_0x959171){while(--_0x959171){_0x5608a3['push'](_0x5608a3['shift']());}};_0x1ed50a(++_0x5b33c5);}(_0x3c5c,0xa7));var _0xc3c5=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0x3c5c[_0x134c2e];return _0x2825db;};'use strict';var Sequelize=require('sequelize');module[_0xc3c5('0x0')]={'tree':{'type':Sequelize[_0xc3c5('0x1')],'allowNull':![]}};
\ No newline at end of file
index 88c1955..5a1a6d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44be=['catch','show','params','includeAll','find','create','body','destroy','eml-format','fast-json-patch','request-promise','mustache','path','sox','ejs','fs-extra','lodash','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/environment','status','end','json','offset','limit','undefined','count','set','apply','save','update','then','sendStatus','error','stack','name','index','AnalyticTreeReport','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','filter','merge','options','include','findAll','rows'];(function(_0x1394c9,_0x2b9dd1){var _0x4097ea=function(_0x5e880f){while(--_0x5e880f){_0x1394c9['push'](_0x1394c9['shift']());}};_0x4097ea(++_0x2b9dd1);}(_0x44be,0x1b8));var _0xe44b=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0x44be[_0xa148b7];return _0x51efd3;};'use strict';var emlformat=require(_0xe44b('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xe44b('0x1'));var rp=require(_0xe44b('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe44b('0x3'));var util=require('util');var path=require(_0xe44b('0x4'));var sox=require(_0xe44b('0x5'));var csv=require('to-csv');var ejs=require(_0xe44b('0x6'));var fs=require('fs');var fs_extra=require(_0xe44b('0x7'));var _=require(_0xe44b('0x8'));var squel=require(_0xe44b('0x9'));var crypto=require(_0xe44b('0xa'));var jsforce=require(_0xe44b('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xe44b('0xc'));var querystring=require('querystring');var Papa=require(_0xe44b('0xd'));var Redis=require(_0xe44b('0xe'));var authService=require(_0xe44b('0xf'));var qs=require(_0xe44b('0x10'));var as=require(_0xe44b('0x11'));var hardwareService=require(_0xe44b('0x12'));var logger=require(_0xe44b('0x13'))(_0xe44b('0x14'));var utils=require(_0xe44b('0x15'));var config=require(_0xe44b('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e82de,_0x34a933){_0x34a933=_0x34a933||0xcc;return function(_0x35a51e){if(_0x35a51e){return _0x1e82de['sendStatus'](_0x34a933);}return _0x1e82de[_0xe44b('0x17')](_0x34a933)[_0xe44b('0x18')]();};}function respondWithResult(_0xaf536f,_0x4f928e){_0x4f928e=_0x4f928e||0xc8;return function(_0x2defb1){if(_0x2defb1){return _0xaf536f[_0xe44b('0x17')](_0x4f928e)[_0xe44b('0x19')](_0x2defb1);}};}function respondWithFilteredResult(_0x25e96f,_0x19d333){return function(_0x5ac0f0){if(_0x5ac0f0){var _0x15149d=typeof _0x19d333[_0xe44b('0x1a')]==='undefined'&&typeof _0x19d333[_0xe44b('0x1b')]===_0xe44b('0x1c');var _0x5e39fb=_0x5ac0f0[_0xe44b('0x1d')];var _0x4b353b=_0x15149d?0x0:_0x19d333[_0xe44b('0x1a')];var _0x3c7560=_0x15149d?_0x5ac0f0[_0xe44b('0x1d')]:_0x19d333['offset']+_0x19d333[_0xe44b('0x1b')];var _0x10c8c1;if(_0x3c7560>=_0x5e39fb){_0x3c7560=_0x5e39fb;_0x10c8c1=0xc8;}else{_0x10c8c1=0xce;}_0x25e96f[_0xe44b('0x17')](_0x10c8c1);return _0x25e96f[_0xe44b('0x1e')]('Content-Range',_0x4b353b+'-'+_0x3c7560+'/'+_0x5e39fb)[_0xe44b('0x19')](_0x5ac0f0);}return null;};}function patchUpdates(_0x35c94e){return function(_0x11829f){try{jsonpatch[_0xe44b('0x1f')](_0x11829f,_0x35c94e,!![]);}catch(_0x1e99cf){return BPromise['reject'](_0x1e99cf);}return _0x11829f[_0xe44b('0x20')]();};}function saveUpdates(_0xf55eca,_0x71aca0){return function(_0x28e036){if(_0x28e036){return _0x28e036[_0xe44b('0x21')](_0xf55eca)[_0xe44b('0x22')](function(_0x198926){return _0x198926;});}return null;};}function removeEntity(_0x4b177b,_0x64293a){return function(_0x3be8b9){if(_0x3be8b9){return _0x3be8b9['destroy']()['then'](function(){_0x4b177b['status'](0xcc)[_0xe44b('0x18')]();});}};}function handleEntityNotFound(_0x4f219f,_0x8cf62b){return function(_0x5b4bb3){if(!_0x5b4bb3){_0x4f219f[_0xe44b('0x23')](0x194);}return _0x5b4bb3;};}function handleError(_0x3d56c3,_0x35bcd3){_0x35bcd3=_0x35bcd3||0x1f4;return function(_0x50f66b){logger[_0xe44b('0x24')](_0x50f66b[_0xe44b('0x25')]);if(_0x50f66b[_0xe44b('0x26')]){delete _0x50f66b[_0xe44b('0x26')];}_0x3d56c3[_0xe44b('0x17')](_0x35bcd3)['send'](_0x50f66b);};}exports[_0xe44b('0x27')]=function(_0x4fc97b,_0xdd6c31){var _0x492fb6={},_0x58cad0={},_0xe55d1f={'count':0x0,'rows':[]};var _0x5765d0=_['map'](db[_0xe44b('0x28')][_0xe44b('0x29')],function(_0x34a4be){return{'name':_0x34a4be[_0xe44b('0x2a')],'type':_0x34a4be[_0xe44b('0x2b')][_0xe44b('0x2c')]};});_0x58cad0[_0xe44b('0x2d')]=_[_0xe44b('0x2e')](_0x5765d0,_0xe44b('0x26'));_0x58cad0[_0xe44b('0x2f')]=_[_0xe44b('0x30')](_0x4fc97b[_0xe44b('0x2f')]);_0x58cad0[_0xe44b('0x31')]=_[_0xe44b('0x32')](_0x58cad0['model'],_0x58cad0[_0xe44b('0x2f')]);_0x492fb6['attributes']=_[_0xe44b('0x32')](_0x58cad0['model'],qs[_0xe44b('0x33')](_0x4fc97b[_0xe44b('0x2f')][_0xe44b('0x33')]));_0x492fb6['attributes']=_0x492fb6[_0xe44b('0x34')][_0xe44b('0x35')]?_0x492fb6[_0xe44b('0x34')]:_0x58cad0[_0xe44b('0x2d')];if(!_0x4fc97b[_0xe44b('0x2f')]['hasOwnProperty'](_0xe44b('0x36'))){_0x492fb6[_0xe44b('0x1b')]=qs[_0xe44b('0x1b')](_0x4fc97b[_0xe44b('0x2f')][_0xe44b('0x1b')]);_0x492fb6[_0xe44b('0x1a')]=qs[_0xe44b('0x1a')](_0x4fc97b['query']['offset']);}_0x492fb6['order']=qs[_0xe44b('0x37')](_0x4fc97b[_0xe44b('0x2f')]['sort']);_0x492fb6[_0xe44b('0x38')]=qs['filters'](_[_0xe44b('0x39')](_0x4fc97b[_0xe44b('0x2f')],_0x58cad0[_0xe44b('0x31')]),_0x5765d0);if(_0x4fc97b[_0xe44b('0x2f')][_0xe44b('0x3a')]){_0x492fb6[_0xe44b('0x38')]=_[_0xe44b('0x3b')](_0x492fb6[_0xe44b('0x38')],{'$or':_[_0xe44b('0x2e')](_0x5765d0,function(_0x1d29b3){if(_0x1d29b3[_0xe44b('0x2b')]!=='VIRTUAL'){var _0x31ab12={};_0x31ab12[_0x1d29b3[_0xe44b('0x26')]]={'$like':'%'+_0x4fc97b['query'][_0xe44b('0x3a')]+'%'};return _0x31ab12;}})});}_0x492fb6=_[_0xe44b('0x3b')]({},_0x492fb6,_0x4fc97b[_0xe44b('0x3c')]);var _0x4a2c45={'where':_0x492fb6[_0xe44b('0x38')]};return db[_0xe44b('0x28')][_0xe44b('0x1d')](_0x4a2c45)[_0xe44b('0x22')](function(_0x453b53){_0xe55d1f[_0xe44b('0x1d')]=_0x453b53;if(_0x4fc97b[_0xe44b('0x2f')]['includeAll']){_0x492fb6[_0xe44b('0x3d')]=[{'all':!![]}];}return db['AnalyticTreeReport'][_0xe44b('0x3e')](_0x492fb6);})[_0xe44b('0x22')](function(_0x1d64a5){_0xe55d1f[_0xe44b('0x3f')]=_0x1d64a5;return _0xe55d1f;})['then'](respondWithFilteredResult(_0xdd6c31,_0x492fb6))[_0xe44b('0x40')](handleError(_0xdd6c31,null));};exports[_0xe44b('0x41')]=function(_0x85ef88,_0x53c388){var _0x34eb1={'raw':!![],'where':{'id':_0x85ef88[_0xe44b('0x42')]['id']}},_0x508eb6={};_0x508eb6['model']=_[_0xe44b('0x30')](db[_0xe44b('0x28')][_0xe44b('0x29')]);_0x508eb6[_0xe44b('0x2f')]=_[_0xe44b('0x30')](_0x85ef88[_0xe44b('0x2f')]);_0x508eb6['filters']=_[_0xe44b('0x32')](_0x508eb6[_0xe44b('0x2d')],_0x508eb6['query']);_0x34eb1[_0xe44b('0x34')]=_['intersection'](_0x508eb6['model'],qs['fields'](_0x85ef88['query']['fields']));_0x34eb1[_0xe44b('0x34')]=_0x34eb1['attributes']['length']?_0x34eb1[_0xe44b('0x34')]:_0x508eb6[_0xe44b('0x2d')];if(_0x85ef88[_0xe44b('0x2f')][_0xe44b('0x43')]){_0x34eb1[_0xe44b('0x3d')]=[{'all':!![]}];}_0x34eb1=_[_0xe44b('0x3b')]({},_0x34eb1,_0x85ef88[_0xe44b('0x3c')]);return db[_0xe44b('0x28')][_0xe44b('0x44')](_0x34eb1)[_0xe44b('0x22')](handleEntityNotFound(_0x53c388,null))[_0xe44b('0x22')](respondWithResult(_0x53c388,null))[_0xe44b('0x40')](handleError(_0x53c388,null));};exports[_0xe44b('0x45')]=function(_0x4ac2e0,_0x57d7dc){return db[_0xe44b('0x28')][_0xe44b('0x45')](_0x4ac2e0[_0xe44b('0x46')],{})[_0xe44b('0x22')](respondWithResult(_0x57d7dc,0xc9))[_0xe44b('0x40')](handleError(_0x57d7dc,null));};exports[_0xe44b('0x21')]=function(_0x513371,_0x106cb5){if(_0x513371[_0xe44b('0x46')]['id']){delete _0x513371[_0xe44b('0x46')]['id'];}return db[_0xe44b('0x28')][_0xe44b('0x44')]({'where':{'id':_0x513371['params']['id']}})['then'](handleEntityNotFound(_0x106cb5,null))[_0xe44b('0x22')](saveUpdates(_0x513371[_0xe44b('0x46')],null))['then'](respondWithResult(_0x106cb5,null))[_0xe44b('0x40')](handleError(_0x106cb5,null));};exports[_0xe44b('0x47')]=function(_0x17695e,_0x170b9c){return db[_0xe44b('0x28')][_0xe44b('0x44')]({'where':{'id':_0x17695e['params']['id']}})[_0xe44b('0x22')](handleEntityNotFound(_0x170b9c,null))['then'](removeEntity(_0x170b9c,null))[_0xe44b('0x40')](handleError(_0x170b9c,null));};
\ No newline at end of file
+var _0xd47f=['count','set','json','apply','reject','save','update','then','destroy','error','name','send','index','map','AnalyticTreeReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','findAll','rows','show','params','includeAll','find','catch','create','body','zip-dir','request-promise','moment','util','path','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','offset','undefined','limit'];(function(_0x7ea5a5,_0x4256e5){var _0x3904e2=function(_0x292811){while(--_0x292811){_0x7ea5a5['push'](_0x7ea5a5['shift']());}};_0x3904e2(++_0x4256e5);}(_0xd47f,0x190));var _0xfd47=function(_0x24cb8c,_0x423901){_0x24cb8c=_0x24cb8c-0x0;var _0x2b9b59=_0xd47f[_0x24cb8c];return _0x2b9b59;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xfd47('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfd47('0x1'));var moment=require(_0xfd47('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xfd47('0x3'));var path=require(_0xfd47('0x4'));var sox=require(_0xfd47('0x5'));var csv=require(_0xfd47('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfd47('0x7'));var squel=require(_0xfd47('0x8'));var crypto=require('crypto');var jsforce=require(_0xfd47('0x9'));var deskjs=require(_0xfd47('0xa'));var toCsv=require(_0xfd47('0x6'));var querystring=require(_0xfd47('0xb'));var Papa=require(_0xfd47('0xc'));var Redis=require(_0xfd47('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xfd47('0xe'));var as=require(_0xfd47('0xf'));var hardwareService=require(_0xfd47('0x10'));var logger=require(_0xfd47('0x11'))('api');var utils=require(_0xfd47('0x12'));var config=require(_0xfd47('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xfd47('0x14'))['db'];function respondWithStatusCode(_0x4575cb,_0x49eac5){_0x49eac5=_0x49eac5||0xcc;return function(_0x47a88c){if(_0x47a88c){return _0x4575cb[_0xfd47('0x15')](_0x49eac5);}return _0x4575cb[_0xfd47('0x16')](_0x49eac5)['end']();};}function respondWithResult(_0x52da34,_0x310c6e){_0x310c6e=_0x310c6e||0xc8;return function(_0x1ebb5c){if(_0x1ebb5c){return _0x52da34[_0xfd47('0x16')](_0x310c6e)['json'](_0x1ebb5c);}};}function respondWithFilteredResult(_0x67d37d,_0xf4e8fc){return function(_0x26c394){if(_0x26c394){var _0xbd2061=typeof _0xf4e8fc[_0xfd47('0x17')]===_0xfd47('0x18')&&typeof _0xf4e8fc[_0xfd47('0x19')]===_0xfd47('0x18');var _0x5d21df=_0x26c394['count'];var _0x3ab0ff=_0xbd2061?0x0:_0xf4e8fc[_0xfd47('0x17')];var _0x39960d=_0xbd2061?_0x26c394[_0xfd47('0x1a')]:_0xf4e8fc[_0xfd47('0x17')]+_0xf4e8fc[_0xfd47('0x19')];var _0x181b97;if(_0x39960d>=_0x5d21df){_0x39960d=_0x5d21df;_0x181b97=0xc8;}else{_0x181b97=0xce;}_0x67d37d[_0xfd47('0x16')](_0x181b97);return _0x67d37d[_0xfd47('0x1b')]('Content-Range',_0x3ab0ff+'-'+_0x39960d+'/'+_0x5d21df)[_0xfd47('0x1c')](_0x26c394);}return null;};}function patchUpdates(_0x53f49a){return function(_0x4b7117){try{jsonpatch[_0xfd47('0x1d')](_0x4b7117,_0x53f49a,!![]);}catch(_0x4c67c4){return BPromise[_0xfd47('0x1e')](_0x4c67c4);}return _0x4b7117[_0xfd47('0x1f')]();};}function saveUpdates(_0x2599bf,_0x2ce9c5){return function(_0x1a5b7b){if(_0x1a5b7b){return _0x1a5b7b[_0xfd47('0x20')](_0x2599bf)[_0xfd47('0x21')](function(_0x4dae37){return _0x4dae37;});}return null;};}function removeEntity(_0x2c2832,_0x2bd152){return function(_0x267176){if(_0x267176){return _0x267176[_0xfd47('0x22')]()[_0xfd47('0x21')](function(){_0x2c2832[_0xfd47('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d9f7d,_0x4c411e){return function(_0xaccf47){if(!_0xaccf47){_0x3d9f7d[_0xfd47('0x15')](0x194);}return _0xaccf47;};}function handleError(_0x304997,_0x28706b){_0x28706b=_0x28706b||0x1f4;return function(_0x5a7390){logger[_0xfd47('0x23')](_0x5a7390['stack']);if(_0x5a7390['name']){delete _0x5a7390[_0xfd47('0x24')];}_0x304997['status'](_0x28706b)[_0xfd47('0x25')](_0x5a7390);};}exports[_0xfd47('0x26')]=function(_0x2938d5,_0x320136){var _0x5cac7e={},_0x52dd38={},_0xb89863={'count':0x0,'rows':[]};var _0x48f383=_[_0xfd47('0x27')](db[_0xfd47('0x28')][_0xfd47('0x29')],function(_0x4c464d){return{'name':_0x4c464d['fieldName'],'type':_0x4c464d[_0xfd47('0x2a')][_0xfd47('0x2b')]};});_0x52dd38[_0xfd47('0x2c')]=_[_0xfd47('0x27')](_0x48f383,_0xfd47('0x24'));_0x52dd38[_0xfd47('0x2d')]=_[_0xfd47('0x2e')](_0x2938d5[_0xfd47('0x2d')]);_0x52dd38[_0xfd47('0x2f')]=_[_0xfd47('0x30')](_0x52dd38[_0xfd47('0x2c')],_0x52dd38[_0xfd47('0x2d')]);_0x5cac7e[_0xfd47('0x31')]=_[_0xfd47('0x30')](_0x52dd38[_0xfd47('0x2c')],qs[_0xfd47('0x32')](_0x2938d5[_0xfd47('0x2d')][_0xfd47('0x32')]));_0x5cac7e['attributes']=_0x5cac7e[_0xfd47('0x31')][_0xfd47('0x33')]?_0x5cac7e[_0xfd47('0x31')]:_0x52dd38['model'];if(!_0x2938d5['query'][_0xfd47('0x34')](_0xfd47('0x35'))){_0x5cac7e[_0xfd47('0x19')]=qs[_0xfd47('0x19')](_0x2938d5[_0xfd47('0x2d')][_0xfd47('0x19')]);_0x5cac7e[_0xfd47('0x17')]=qs[_0xfd47('0x17')](_0x2938d5[_0xfd47('0x2d')][_0xfd47('0x17')]);}_0x5cac7e[_0xfd47('0x36')]=qs[_0xfd47('0x37')](_0x2938d5[_0xfd47('0x2d')][_0xfd47('0x37')]);_0x5cac7e[_0xfd47('0x38')]=qs[_0xfd47('0x2f')](_[_0xfd47('0x39')](_0x2938d5[_0xfd47('0x2d')],_0x52dd38[_0xfd47('0x2f')]),_0x48f383);if(_0x2938d5[_0xfd47('0x2d')]['filter']){_0x5cac7e[_0xfd47('0x38')]=_[_0xfd47('0x3a')](_0x5cac7e['where'],{'$or':_[_0xfd47('0x27')](_0x48f383,function(_0x4b0161){if(_0x4b0161[_0xfd47('0x2a')]!==_0xfd47('0x3b')){var _0x38258f={};_0x38258f[_0x4b0161[_0xfd47('0x24')]]={'$like':'%'+_0x2938d5[_0xfd47('0x2d')][_0xfd47('0x3c')]+'%'};return _0x38258f;}})});}_0x5cac7e=_['merge']({},_0x5cac7e,_0x2938d5[_0xfd47('0x3d')]);var _0x378a4d={'where':_0x5cac7e[_0xfd47('0x38')]};return db[_0xfd47('0x28')][_0xfd47('0x1a')](_0x378a4d)[_0xfd47('0x21')](function(_0x2aa447){_0xb89863[_0xfd47('0x1a')]=_0x2aa447;if(_0x2938d5[_0xfd47('0x2d')]['includeAll']){_0x5cac7e['include']=[{'all':!![]}];}return db['AnalyticTreeReport'][_0xfd47('0x3e')](_0x5cac7e);})[_0xfd47('0x21')](function(_0x3aabac){_0xb89863[_0xfd47('0x3f')]=_0x3aabac;return _0xb89863;})[_0xfd47('0x21')](respondWithFilteredResult(_0x320136,_0x5cac7e))['catch'](handleError(_0x320136,null));};exports[_0xfd47('0x40')]=function(_0x4e6c76,_0x1a8584){var _0xfe53bd={'raw':!![],'where':{'id':_0x4e6c76[_0xfd47('0x41')]['id']}},_0x3b4109={};_0x3b4109[_0xfd47('0x2c')]=_[_0xfd47('0x2e')](db[_0xfd47('0x28')][_0xfd47('0x29')]);_0x3b4109['query']=_[_0xfd47('0x2e')](_0x4e6c76[_0xfd47('0x2d')]);_0x3b4109[_0xfd47('0x2f')]=_['intersection'](_0x3b4109[_0xfd47('0x2c')],_0x3b4109[_0xfd47('0x2d')]);_0xfe53bd['attributes']=_[_0xfd47('0x30')](_0x3b4109['model'],qs[_0xfd47('0x32')](_0x4e6c76['query']['fields']));_0xfe53bd[_0xfd47('0x31')]=_0xfe53bd[_0xfd47('0x31')][_0xfd47('0x33')]?_0xfe53bd[_0xfd47('0x31')]:_0x3b4109[_0xfd47('0x2c')];if(_0x4e6c76[_0xfd47('0x2d')][_0xfd47('0x42')]){_0xfe53bd['include']=[{'all':!![]}];}_0xfe53bd=_[_0xfd47('0x3a')]({},_0xfe53bd,_0x4e6c76[_0xfd47('0x3d')]);return db[_0xfd47('0x28')][_0xfd47('0x43')](_0xfe53bd)[_0xfd47('0x21')](handleEntityNotFound(_0x1a8584,null))[_0xfd47('0x21')](respondWithResult(_0x1a8584,null))[_0xfd47('0x44')](handleError(_0x1a8584,null));};exports[_0xfd47('0x45')]=function(_0x2538d5,_0x2e8aff){return db[_0xfd47('0x28')][_0xfd47('0x45')](_0x2538d5[_0xfd47('0x46')],{})['then'](respondWithResult(_0x2e8aff,0xc9))[_0xfd47('0x44')](handleError(_0x2e8aff,null));};exports['update']=function(_0x10256f,_0x506962){if(_0x10256f[_0xfd47('0x46')]['id']){delete _0x10256f[_0xfd47('0x46')]['id'];}return db[_0xfd47('0x28')][_0xfd47('0x43')]({'where':{'id':_0x10256f[_0xfd47('0x41')]['id']}})[_0xfd47('0x21')](handleEntityNotFound(_0x506962,null))[_0xfd47('0x21')](saveUpdates(_0x10256f[_0xfd47('0x46')],null))[_0xfd47('0x21')](respondWithResult(_0x506962,null))[_0xfd47('0x44')](handleError(_0x506962,null));};exports[_0xfd47('0x22')]=function(_0x763cb7,_0xe2ec4a){return db[_0xfd47('0x28')][_0xfd47('0x43')]({'where':{'id':_0x763cb7[_0xfd47('0x41')]['id']}})['then'](handleEntityNotFound(_0xe2ec4a,null))[_0xfd47('0x21')](removeEntity(_0xe2ec4a,null))[_0xfd47('0x44')](handleError(_0xe2ec4a,null));};
\ No newline at end of file
index 55455c3..ace4344 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe321=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','define','AnalyticTreeReport','util'];(function(_0x24a1f0,_0x3400f5){var _0x5043f3=function(_0x35f9d5){while(--_0x35f9d5){_0x24a1f0['push'](_0x24a1f0['shift']());}};_0x5043f3(++_0x3400f5);}(_0xe321,0xef));var _0x1e32=function(_0x5ad1d7,_0x2dd2cf){_0x5ad1d7=_0x5ad1d7-0x0;var _0xcf4632=_0xe321[_0x5ad1d7];return _0xcf4632;};'use strict';var _=require('lodash');var util=require(_0x1e32('0x0'));var logger=require(_0x1e32('0x1'))(_0x1e32('0x2'));var moment=require(_0x1e32('0x3'));var BPromise=require(_0x1e32('0x4'));var rp=require(_0x1e32('0x5'));var fs=require('fs');var path=require(_0x1e32('0x6'));var rimraf=require('rimraf');var config=require(_0x1e32('0x7'));var attributes=require('./analyticTreeReport.attributes');module['exports']=function(_0x59a6ad,_0x3d59a7){return _0x59a6ad[_0x1e32('0x8')](_0x1e32('0x9'),attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x92d1=['path','../../config/environment','./analyticTreeReport.attributes','exports','define','AnalyticTreeReport','analytics_report_trees','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x19fcb7,_0x2e69b7){var _0x42e208=function(_0x41ee28){while(--_0x41ee28){_0x19fcb7['push'](_0x19fcb7['shift']());}};_0x42e208(++_0x2e69b7);}(_0x92d1,0x173));var _0x192d=function(_0x5890f5,_0x1986bc){_0x5890f5=_0x5890f5-0x0;var _0x55fe0f=_0x92d1[_0x5890f5];return _0x55fe0f;};'use strict';var _=require(_0x192d('0x0'));var util=require(_0x192d('0x1'));var logger=require(_0x192d('0x2'))(_0x192d('0x3'));var moment=require(_0x192d('0x4'));var BPromise=require(_0x192d('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x192d('0x6'));var rimraf=require('rimraf');var config=require(_0x192d('0x7'));var attributes=require(_0x192d('0x8'));module[_0x192d('0x9')]=function(_0x5469a6,_0x530602){return _0x5469a6[_0x192d('0xa')](_0x192d('0xb'),attributes,{'tableName':_0x192d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 13fbf6b..fd114fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x251a29,_0x51a89d){var _0x3325be=function(_0x2092cb){while(--_0x2092cb){_0x251a29['push'](_0x251a29['shift']());}};_0x3325be(++_0x51a89d);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0xc4aa[_0x2d2c16];return _0x53f2fb;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
+var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','AnalyticTreeReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0xe035ed,_0x45f573){var _0x556525=function(_0x557b12){while(--_0x557b12){_0xe035ed['push'](_0xe035ed['shift']());}};_0x556525(++_0x45f573);}(_0x5f2f,0x73));var _0xf5f2=function(_0x4b0a34,_0x126bd8){_0x4b0a34=_0x4b0a34-0x0;var _0x5733af=_0x5f2f[_0x4b0a34];return _0x5733af;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3133bc,_0x473100,_0x5907aa){return new BPromise(function(_0x466882,_0x46cd9c){return client[_0xf5f2('0xc')](_0x3133bc,_0x5907aa)['then'](function(_0x375da4){logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,'request\x20sent');logger[_0xf5f2('0xf')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}
\ No newline at end of file
index 9751c0e..e8c0e92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6626=['/:id','show','post','create','put','update','delete','destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated'];(function(_0x257642,_0x270a80){var _0x3d813b=function(_0x2a1c8a){while(--_0x2a1c8a){_0x257642['push'](_0x257642['shift']());}};_0x3d813b(++_0x270a80);}(_0x6626,0xf8));var _0x6662=function(_0x2dd151,_0x43a7e0){_0x2dd151=_0x2dd151-0x0;var _0x4689a7=_0x6626[_0x2dd151];return _0x4689a7;};'use strict';var multer=require(_0x6662('0x0'));var util=require(_0x6662('0x1'));var path=require('path');var timeout=require(_0x6662('0x2'));var express=require(_0x6662('0x3'));var router=express[_0x6662('0x4')]();var fs_extra=require(_0x6662('0x5'));var auth=require(_0x6662('0x6'));var interaction=require(_0x6662('0x7'));var config=require(_0x6662('0x8'));var controller=require(_0x6662('0x9'));router[_0x6662('0xa')]('/',auth[_0x6662('0xb')](),controller['index']);router[_0x6662('0xa')](_0x6662('0xc'),auth['isAuthenticated'](),controller[_0x6662('0xd')]);router[_0x6662('0xe')]('/',auth[_0x6662('0xb')](),controller[_0x6662('0xf')]);router[_0x6662('0x10')](_0x6662('0xc'),auth[_0x6662('0xb')](),controller[_0x6662('0x11')]);router[_0x6662('0x12')](_0x6662('0xc'),auth[_0x6662('0xb')](),controller[_0x6662('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xd5fd=['post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','index','/:id'];(function(_0x2d0cb4,_0x563b99){var _0x418812=function(_0x2ef989){while(--_0x2ef989){_0x2d0cb4['push'](_0x2d0cb4['shift']());}};_0x418812(++_0x563b99);}(_0xd5fd,0x70));var _0xdd5f=function(_0x1a070b,_0x46d2c8){_0x1a070b=_0x1a070b-0x0;var _0x20b48d=_0xd5fd[_0x1a070b];return _0x20b48d;};'use strict';var multer=require(_0xdd5f('0x0'));var util=require(_0xdd5f('0x1'));var path=require(_0xdd5f('0x2'));var timeout=require(_0xdd5f('0x3'));var express=require(_0xdd5f('0x4'));var router=express[_0xdd5f('0x5')]();var fs_extra=require(_0xdd5f('0x6'));var auth=require(_0xdd5f('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xdd5f('0x8'));var controller=require(_0xdd5f('0x9'));router[_0xdd5f('0xa')]('/',auth[_0xdd5f('0xb')](),controller[_0xdd5f('0xc')]);router[_0xdd5f('0xa')](_0xdd5f('0xd'),auth[_0xdd5f('0xb')](),controller['show']);router[_0xdd5f('0xe')]('/',auth['isAuthenticated'](),controller[_0xdd5f('0xf')]);router[_0xdd5f('0x10')](_0xdd5f('0xd'),auth[_0xdd5f('0xb')](),controller[_0xdd5f('0x11')]);router[_0xdd5f('0x12')](_0xdd5f('0xd'),auth[_0xdd5f('0xb')](),controller[_0xdd5f('0x13')]);module[_0xdd5f('0x14')]=router;
\ No newline at end of file
index 142a342..39032f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x946e=['sequelize','STRING'];(function(_0x10340f,_0x4f39f5){var _0x170742=function(_0x2e14af){while(--_0x2e14af){_0x10340f['push'](_0x10340f['shift']());}};_0x170742(++_0x4f39f5);}(_0x946e,0x1d0));var _0xe946=function(_0xd98c11,_0x499d6e){_0xd98c11=_0xd98c11-0x0;var _0x4ed636=_0x946e[_0xd98c11];return _0x4ed636;};'use strict';var Sequelize=require(_0xe946('0x0'));module['exports']={'name':{'type':Sequelize[_0xe946('0x1')]},'basename':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xe946('0x1')]}};
\ No newline at end of file
+var _0x780f=['sequelize','exports','STRING'];(function(_0x3aa2dd,_0xbf3e7){var _0x39c188=function(_0x13a1b3){while(--_0x13a1b3){_0x3aa2dd['push'](_0x3aa2dd['shift']());}};_0x39c188(++_0xbf3e7);}(_0x780f,0x6c));var _0xf780=function(_0x1a809b,_0x4c15e3){_0x1a809b=_0x1a809b-0x0;var _0x5d90e6=_0x780f[_0x1a809b];return _0x5d90e6;};'use strict';var Sequelize=require(_0xf780('0x0'));module[_0xf780('0x1')]={'name':{'type':Sequelize[_0xf780('0x2')]},'basename':{'type':Sequelize[_0xf780('0x2')]},'type':{'type':Sequelize[_0xf780('0x2')]}};
\ No newline at end of file
index b7de1ca..f766535 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x509e=['to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','offset','undefined','limit','count','Content-Range','json','apply','reject','update','destroy','then','error','stack','name','send','index','rawAttributes','fieldName','key','map','query','keys','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filters','filter','type','VIRTUAL','merge','Attachment','includeAll','include','findAll','rows','catch','show','params','options','clone','get','omit','createdAt','body','updatedAt','create','originalname','file','filename','mimetype','findOne','ChatOfflineMessageId','join','basename','download','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','sox'];(function(_0x1ebb10,_0x156b3e){var _0x20d709=function(_0x4cc093){while(--_0x4cc093){_0x1ebb10['push'](_0x1ebb10['shift']());}};_0x20d709(++_0x156b3e);}(_0x509e,0x151));var _0xe509=function(_0x100f70,_0x18c114){_0x100f70=_0x100f70-0x0;var _0x32aaa8=_0x509e[_0x100f70];return _0x32aaa8;};'use strict';var emlformat=require(_0xe509('0x0'));var rimraf=require(_0xe509('0x1'));var zipdir=require(_0xe509('0x2'));var jsonpatch=require(_0xe509('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe509('0x4'));var Mustache=require('mustache');var util=require(_0xe509('0x5'));var path=require('path');var sox=require(_0xe509('0x6'));var csv=require(_0xe509('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe509('0x8'));var _=require(_0xe509('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe509('0xa'));var deskjs=require(_0xe509('0xb'));var toCsv=require(_0xe509('0x7'));var querystring=require(_0xe509('0xc'));var Papa=require(_0xe509('0xd'));var Redis=require('ioredis');var authService=require(_0xe509('0xe'));var qs=require(_0xe509('0xf'));var as=require(_0xe509('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xe509('0x11'));var utils=require(_0xe509('0x12'));var config=require(_0xe509('0x13'));var licenseUtil=require(_0xe509('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5cb26c,_0x1fcf26){_0x1fcf26=_0x1fcf26||0xcc;return function(_0x4c6be9){if(_0x4c6be9){return _0x5cb26c[_0xe509('0x15')](_0x1fcf26);}return _0x5cb26c['status'](_0x1fcf26)[_0xe509('0x16')]();};}function respondWithResult(_0x4a917d,_0x3702f9){_0x3702f9=_0x3702f9||0xc8;return function(_0x22f6a9){if(_0x22f6a9){return _0x4a917d[_0xe509('0x17')](_0x3702f9)['json'](_0x22f6a9);}};}function respondWithFilteredResult(_0x24a640,_0x522589){return function(_0x4a282b){if(_0x4a282b){var _0x2c8e13=typeof _0x522589[_0xe509('0x18')]===_0xe509('0x19')&&typeof _0x522589[_0xe509('0x1a')]===_0xe509('0x19');var _0x2cfbe5=_0x4a282b[_0xe509('0x1b')];var _0x4e4794=_0x2c8e13?0x0:_0x522589[_0xe509('0x18')];var _0x571a99=_0x2c8e13?_0x4a282b[_0xe509('0x1b')]:_0x522589[_0xe509('0x18')]+_0x522589[_0xe509('0x1a')];var _0x266980;if(_0x571a99>=_0x2cfbe5){_0x571a99=_0x2cfbe5;_0x266980=0xc8;}else{_0x266980=0xce;}_0x24a640[_0xe509('0x17')](_0x266980);return _0x24a640['set'](_0xe509('0x1c'),_0x4e4794+'-'+_0x571a99+'/'+_0x2cfbe5)[_0xe509('0x1d')](_0x4a282b);}return null;};}function patchUpdates(_0x333d4c){return function(_0x5569c9){try{jsonpatch[_0xe509('0x1e')](_0x5569c9,_0x333d4c,!![]);}catch(_0x5d368f){return BPromise[_0xe509('0x1f')](_0x5d368f);}return _0x5569c9['save']();};}function saveUpdates(_0x2a6561,_0x254036){return function(_0x34af04){if(_0x34af04){return _0x34af04[_0xe509('0x20')](_0x2a6561)['then'](function(_0x3b0ac2){return _0x3b0ac2;});}return null;};}function removeEntity(_0x1db5f5,_0x532390){return function(_0x3f35e0){if(_0x3f35e0){return _0x3f35e0[_0xe509('0x21')]()[_0xe509('0x22')](function(){_0x1db5f5[_0xe509('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1fe7d8,_0xa62fa2){return function(_0x2e3c87){if(!_0x2e3c87){_0x1fe7d8[_0xe509('0x15')](0x194);}return _0x2e3c87;};}function handleError(_0x3beab9,_0x44446f){_0x44446f=_0x44446f||0x1f4;return function(_0x340ec8){logger[_0xe509('0x23')](_0x340ec8[_0xe509('0x24')]);if(_0x340ec8[_0xe509('0x25')]){delete _0x340ec8[_0xe509('0x25')];}_0x3beab9[_0xe509('0x17')](_0x44446f)[_0xe509('0x26')](_0x340ec8);};}exports[_0xe509('0x27')]=function(_0x51e2e9,_0x8313c7){var _0x15beaa={},_0x358ad5={},_0x2a72eb={'count':0x0,'rows':[]};var _0x5d2e6f=_['map'](db['Attachment'][_0xe509('0x28')],function(_0x457cc8){return{'name':_0x457cc8[_0xe509('0x29')],'type':_0x457cc8['type'][_0xe509('0x2a')]};});_0x358ad5['model']=_[_0xe509('0x2b')](_0x5d2e6f,_0xe509('0x25'));_0x358ad5[_0xe509('0x2c')]=_[_0xe509('0x2d')](_0x51e2e9[_0xe509('0x2c')]);_0x358ad5['filters']=_[_0xe509('0x2e')](_0x358ad5[_0xe509('0x2f')],_0x358ad5[_0xe509('0x2c')]);_0x15beaa[_0xe509('0x30')]=_['intersection'](_0x358ad5[_0xe509('0x2f')],qs[_0xe509('0x31')](_0x51e2e9[_0xe509('0x2c')][_0xe509('0x31')]));_0x15beaa['attributes']=_0x15beaa[_0xe509('0x30')][_0xe509('0x32')]?_0x15beaa['attributes']:_0x358ad5[_0xe509('0x2f')];if(!_0x51e2e9[_0xe509('0x2c')]['hasOwnProperty'](_0xe509('0x33'))){_0x15beaa['limit']=qs['limit'](_0x51e2e9[_0xe509('0x2c')][_0xe509('0x1a')]);_0x15beaa[_0xe509('0x18')]=qs[_0xe509('0x18')](_0x51e2e9[_0xe509('0x2c')]['offset']);}_0x15beaa[_0xe509('0x34')]=qs[_0xe509('0x35')](_0x51e2e9[_0xe509('0x2c')][_0xe509('0x35')]);_0x15beaa[_0xe509('0x36')]=qs['filters'](_[_0xe509('0x37')](_0x51e2e9[_0xe509('0x2c')],_0x358ad5[_0xe509('0x38')]),_0x5d2e6f);if(_0x51e2e9[_0xe509('0x2c')][_0xe509('0x39')]){_0x15beaa[_0xe509('0x36')]=_['merge'](_0x15beaa[_0xe509('0x36')],{'$or':_['map'](_0x5d2e6f,function(_0x1fabf1){if(_0x1fabf1[_0xe509('0x3a')]!==_0xe509('0x3b')){var _0x445f28={};_0x445f28[_0x1fabf1[_0xe509('0x25')]]={'$like':'%'+_0x51e2e9['query'][_0xe509('0x39')]+'%'};return _0x445f28;}})});}_0x15beaa=_[_0xe509('0x3c')]({},_0x15beaa,_0x51e2e9['options']);var _0x48a54c={'where':_0x15beaa[_0xe509('0x36')]};return db[_0xe509('0x3d')]['count'](_0x48a54c)[_0xe509('0x22')](function(_0x237433){_0x2a72eb[_0xe509('0x1b')]=_0x237433;if(_0x51e2e9[_0xe509('0x2c')][_0xe509('0x3e')]){_0x15beaa[_0xe509('0x3f')]=[{'all':!![]}];}return db[_0xe509('0x3d')][_0xe509('0x40')](_0x15beaa);})[_0xe509('0x22')](function(_0x7f364){_0x2a72eb[_0xe509('0x41')]=_0x7f364;return _0x2a72eb;})[_0xe509('0x22')](respondWithFilteredResult(_0x8313c7,_0x15beaa))[_0xe509('0x42')](handleError(_0x8313c7,null));};exports[_0xe509('0x43')]=function(_0x54425d,_0x214e56){var _0x35b422={'raw':!![],'where':{'id':_0x54425d[_0xe509('0x44')]['id']}},_0xec22ac={};_0xec22ac[_0xe509('0x2f')]=_[_0xe509('0x2d')](db[_0xe509('0x3d')]['rawAttributes']);_0xec22ac[_0xe509('0x2c')]=_[_0xe509('0x2d')](_0x54425d[_0xe509('0x2c')]);_0xec22ac['filters']=_['intersection'](_0xec22ac[_0xe509('0x2f')],_0xec22ac[_0xe509('0x2c')]);_0x35b422[_0xe509('0x30')]=_['intersection'](_0xec22ac[_0xe509('0x2f')],qs['fields'](_0x54425d[_0xe509('0x2c')][_0xe509('0x31')]));_0x35b422['attributes']=_0x35b422['attributes'][_0xe509('0x32')]?_0x35b422[_0xe509('0x30')]:_0xec22ac['model'];if(_0x54425d['query'][_0xe509('0x3e')]){_0x35b422[_0xe509('0x3f')]=[{'all':!![]}];}_0x35b422=_[_0xe509('0x3c')]({},_0x35b422,_0x54425d[_0xe509('0x45')]);return db[_0xe509('0x3d')]['find'](_0x35b422)['then'](handleEntityNotFound(_0x214e56,null))['then'](respondWithResult(_0x214e56,null))['catch'](handleError(_0x214e56,null));};exports[_0xe509('0x46')]=function(_0xf3f29e,_0x4e474b){var _0x14824a={'where':{'id':_0xf3f29e[_0xe509('0x44')]['id']}},_0x96f3e9={};_0x96f3e9[_0xe509('0x2f')]=_['keys'](db[_0xe509('0x3d')][_0xe509('0x28')]);_0x14824a['attributes']=_['intersection'](_0x96f3e9['model'],qs['fields'](_0xf3f29e[_0xe509('0x2c')][_0xe509('0x31')]));_0x14824a[_0xe509('0x30')]=_0x14824a[_0xe509('0x30')][_0xe509('0x32')]?_0x14824a[_0xe509('0x30')]:_0x96f3e9['model'];if(_0xf3f29e[_0xe509('0x2c')][_0xe509('0x3e')]){_0x14824a['include']=[{'all':!![]}];}_0x14824a=_[_0xe509('0x3c')]({},_0x14824a,_0xf3f29e[_0xe509('0x45')]);return db[_0xe509('0x3d')]['find'](_0x14824a)[_0xe509('0x22')](handleEntityNotFound(_0x4e474b,null))[_0xe509('0x22')](function(_0x462eab){if(_0x462eab){var _0x252fb3=_0x462eab[_0xe509('0x47')]({'plain':!![]});_0x252fb3=qs[_0xe509('0x48')](_0x252fb3,['id',_0xe509('0x49'),'updatedAt']);_0xf3f29e[_0xe509('0x4a')]=_[_0xe509('0x48')](_0xf3f29e[_0xe509('0x4a')],['id',_0xe509('0x49'),_0xe509('0x4b')]);return db[_0xe509('0x3d')][_0xe509('0x4c')](_[_0xe509('0x3c')](_0x252fb3,_0xf3f29e[_0xe509('0x4a')]),{'include':_0xf3f29e[_0xe509('0x2c')][_0xe509('0x3e')]?[{'all':!![]}]:undefined});}})['then'](respondWithResult(_0x4e474b,0xc9))['catch'](handleError(_0x4e474b,null));};exports[_0xe509('0x20')]=function(_0x2f5773,_0x3d596b){if(_0x2f5773['body']['id']){delete _0x2f5773[_0xe509('0x4a')]['id'];}return db[_0xe509('0x3d')]['find']({'where':{'id':_0x2f5773['params']['id']}})['then'](handleEntityNotFound(_0x3d596b,null))[_0xe509('0x22')](saveUpdates(_0x2f5773[_0xe509('0x4a')],null))[_0xe509('0x22')](respondWithResult(_0x3d596b,null))[_0xe509('0x42')](handleError(_0x3d596b,null));};exports[_0xe509('0x21')]=function(_0x5da12d,_0x18d0b1){return db[_0xe509('0x3d')]['find']({'where':{'id':_0x5da12d['params']['id']}})[_0xe509('0x22')](handleEntityNotFound(_0x18d0b1,null))['then'](removeEntity(_0x18d0b1,null))['catch'](handleError(_0x18d0b1,null));};exports['create']=function(_0x694beb,_0x3a27d4,_0x52efc9){_0x694beb[_0xe509('0x4a')]['name']=_0x694beb['file'][_0xe509('0x4d')];_0x694beb['body']['basename']=_0x694beb[_0xe509('0x4e')][_0xe509('0x4f')];_0x694beb[_0xe509('0x4a')]['type']=_0x694beb[_0xe509('0x4e')][_0xe509('0x50')];return db[_0xe509('0x3d')][_0xe509('0x4c')](_0x694beb[_0xe509('0x4a')])[_0xe509('0x22')](respondWithResult(_0x3a27d4,0xc9))['catch'](handleError(_0x3a27d4,null));};exports['download']=function(_0x3a6ba9,_0x148498,_0x294ff7){return db['Attachment'][_0xe509('0x51')]({'where':{'id':_0x3a6ba9['params']['id']},'raw':!![]})[_0xe509('0x22')](handleEntityNotFound(_0x148498,null))[_0xe509('0x22')](function(_0x59872d){if(_0x59872d){var _0x120d2a=_0x59872d[_0xe509('0x52')]!==null;var _0x4cfec9=path[_0xe509('0x53')](config['root'],'server/files/attachments/');if(_0x120d2a){_0x4cfec9=path[_0xe509('0x53')](_0x4cfec9,'offline-chat/');}var _0x391d58=path[_0xe509('0x53')](_0x4cfec9,_0x59872d[_0xe509('0x54')]);return _0x148498[_0xe509('0x55')](_0x391d58);}})[_0xe509('0x42')](handleError(_0x148498,null));};
\ No newline at end of file
+var _0x2acc=['status','end','json','undefined','limit','count','offset','apply','reject','save','update','then','sendStatus','name','send','index','Attachment','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','findAll','rows','catch','show','params','include','options','find','clone','get','omit','updatedAt','body','create','destroy','basename','file','filename','download','findOne','join','root','offline-chat/','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x2b9b7f,_0x4d47df){var _0x4ed19a=function(_0x72b5ff){while(--_0x72b5ff){_0x2b9b7f['push'](_0x2b9b7f['shift']());}};_0x4ed19a(++_0x4d47df);}(_0x2acc,0x140));var _0xc2ac=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x2acc[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0xc2ac('0x0'));var rimraf=require(_0xc2ac('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc2ac('0x2'));var rp=require(_0xc2ac('0x3'));var moment=require('moment');var BPromise=require(_0xc2ac('0x4'));var Mustache=require(_0xc2ac('0x5'));var util=require(_0xc2ac('0x6'));var path=require(_0xc2ac('0x7'));var sox=require(_0xc2ac('0x8'));var csv=require(_0xc2ac('0x9'));var ejs=require(_0xc2ac('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc2ac('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc2ac('0xc'));var toCsv=require(_0xc2ac('0x9'));var querystring=require(_0xc2ac('0xd'));var Papa=require(_0xc2ac('0xe'));var Redis=require(_0xc2ac('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xc2ac('0x10'));var as=require(_0xc2ac('0x11'));var hardwareService=require(_0xc2ac('0x12'));var logger=require('../../config/logger')(_0xc2ac('0x13'));var utils=require(_0xc2ac('0x14'));var config=require(_0xc2ac('0x15'));var licenseUtil=require(_0xc2ac('0x16'));var db=require(_0xc2ac('0x17'))['db'];function respondWithStatusCode(_0x2dbb69,_0x431a7b){_0x431a7b=_0x431a7b||0xcc;return function(_0x3a7101){if(_0x3a7101){return _0x2dbb69['sendStatus'](_0x431a7b);}return _0x2dbb69[_0xc2ac('0x18')](_0x431a7b)[_0xc2ac('0x19')]();};}function respondWithResult(_0xbeb027,_0x38f284){_0x38f284=_0x38f284||0xc8;return function(_0x147dad){if(_0x147dad){return _0xbeb027[_0xc2ac('0x18')](_0x38f284)[_0xc2ac('0x1a')](_0x147dad);}};}function respondWithFilteredResult(_0x733081,_0x275bab){return function(_0x2087b4){if(_0x2087b4){var _0x44c3f4=typeof _0x275bab['offset']===_0xc2ac('0x1b')&&typeof _0x275bab[_0xc2ac('0x1c')]===_0xc2ac('0x1b');var _0x2315a4=_0x2087b4[_0xc2ac('0x1d')];var _0x1e11c9=_0x44c3f4?0x0:_0x275bab[_0xc2ac('0x1e')];var _0x134369=_0x44c3f4?_0x2087b4[_0xc2ac('0x1d')]:_0x275bab[_0xc2ac('0x1e')]+_0x275bab[_0xc2ac('0x1c')];var _0x505fd6;if(_0x134369>=_0x2315a4){_0x134369=_0x2315a4;_0x505fd6=0xc8;}else{_0x505fd6=0xce;}_0x733081[_0xc2ac('0x18')](_0x505fd6);return _0x733081['set']('Content-Range',_0x1e11c9+'-'+_0x134369+'/'+_0x2315a4)[_0xc2ac('0x1a')](_0x2087b4);}return null;};}function patchUpdates(_0x2d0e97){return function(_0x1d71ad){try{jsonpatch[_0xc2ac('0x1f')](_0x1d71ad,_0x2d0e97,!![]);}catch(_0x38e81c){return BPromise[_0xc2ac('0x20')](_0x38e81c);}return _0x1d71ad[_0xc2ac('0x21')]();};}function saveUpdates(_0x3b7d69,_0x13ee53){return function(_0x53bebd){if(_0x53bebd){return _0x53bebd[_0xc2ac('0x22')](_0x3b7d69)[_0xc2ac('0x23')](function(_0x39ce31){return _0x39ce31;});}return null;};}function removeEntity(_0xbc16bc,_0x1a3a67){return function(_0x4c811e){if(_0x4c811e){return _0x4c811e['destroy']()[_0xc2ac('0x23')](function(){_0xbc16bc['status'](0xcc)[_0xc2ac('0x19')]();});}};}function handleEntityNotFound(_0x1a53bd,_0x172d3c){return function(_0x394e76){if(!_0x394e76){_0x1a53bd[_0xc2ac('0x24')](0x194);}return _0x394e76;};}function handleError(_0x11050b,_0x41ed09){_0x41ed09=_0x41ed09||0x1f4;return function(_0x4dcd47){logger['error'](_0x4dcd47['stack']);if(_0x4dcd47[_0xc2ac('0x25')]){delete _0x4dcd47[_0xc2ac('0x25')];}_0x11050b[_0xc2ac('0x18')](_0x41ed09)[_0xc2ac('0x26')](_0x4dcd47);};}exports[_0xc2ac('0x27')]=function(_0x128493,_0x170494){var _0x499db1={},_0x72d853={},_0x3e1b87={'count':0x0,'rows':[]};var _0x17397f=_['map'](db[_0xc2ac('0x28')][_0xc2ac('0x29')],function(_0xa16303){return{'name':_0xa16303[_0xc2ac('0x2a')],'type':_0xa16303[_0xc2ac('0x2b')]['key']};});_0x72d853[_0xc2ac('0x2c')]=_[_0xc2ac('0x2d')](_0x17397f,_0xc2ac('0x25'));_0x72d853[_0xc2ac('0x2e')]=_[_0xc2ac('0x2f')](_0x128493[_0xc2ac('0x2e')]);_0x72d853[_0xc2ac('0x30')]=_[_0xc2ac('0x31')](_0x72d853[_0xc2ac('0x2c')],_0x72d853[_0xc2ac('0x2e')]);_0x499db1[_0xc2ac('0x32')]=_[_0xc2ac('0x31')](_0x72d853['model'],qs[_0xc2ac('0x33')](_0x128493['query'][_0xc2ac('0x33')]));_0x499db1[_0xc2ac('0x32')]=_0x499db1[_0xc2ac('0x32')][_0xc2ac('0x34')]?_0x499db1[_0xc2ac('0x32')]:_0x72d853[_0xc2ac('0x2c')];if(!_0x128493[_0xc2ac('0x2e')][_0xc2ac('0x35')](_0xc2ac('0x36'))){_0x499db1['limit']=qs[_0xc2ac('0x1c')](_0x128493[_0xc2ac('0x2e')][_0xc2ac('0x1c')]);_0x499db1[_0xc2ac('0x1e')]=qs[_0xc2ac('0x1e')](_0x128493[_0xc2ac('0x2e')]['offset']);}_0x499db1[_0xc2ac('0x37')]=qs[_0xc2ac('0x38')](_0x128493['query'][_0xc2ac('0x38')]);_0x499db1[_0xc2ac('0x39')]=qs['filters'](_[_0xc2ac('0x3a')](_0x128493[_0xc2ac('0x2e')],_0x72d853[_0xc2ac('0x30')]),_0x17397f);if(_0x128493['query'][_0xc2ac('0x3b')]){_0x499db1['where']=_['merge'](_0x499db1['where'],{'$or':_[_0xc2ac('0x2d')](_0x17397f,function(_0x244056){if(_0x244056[_0xc2ac('0x2b')]!==_0xc2ac('0x3c')){var _0x3a083e={};_0x3a083e[_0x244056[_0xc2ac('0x25')]]={'$like':'%'+_0x128493[_0xc2ac('0x2e')][_0xc2ac('0x3b')]+'%'};return _0x3a083e;}})});}_0x499db1=_[_0xc2ac('0x3d')]({},_0x499db1,_0x128493['options']);var _0xff33cd={'where':_0x499db1['where']};return db[_0xc2ac('0x28')][_0xc2ac('0x1d')](_0xff33cd)[_0xc2ac('0x23')](function(_0x10b309){_0x3e1b87[_0xc2ac('0x1d')]=_0x10b309;if(_0x128493[_0xc2ac('0x2e')][_0xc2ac('0x3e')]){_0x499db1['include']=[{'all':!![]}];}return db[_0xc2ac('0x28')][_0xc2ac('0x3f')](_0x499db1);})[_0xc2ac('0x23')](function(_0x306615){_0x3e1b87[_0xc2ac('0x40')]=_0x306615;return _0x3e1b87;})['then'](respondWithFilteredResult(_0x170494,_0x499db1))[_0xc2ac('0x41')](handleError(_0x170494,null));};exports[_0xc2ac('0x42')]=function(_0x393451,_0x3639df){var _0x540a3c={'raw':!![],'where':{'id':_0x393451[_0xc2ac('0x43')]['id']}},_0x4192d5={};_0x4192d5['model']=_['keys'](db[_0xc2ac('0x28')][_0xc2ac('0x29')]);_0x4192d5[_0xc2ac('0x2e')]=_[_0xc2ac('0x2f')](_0x393451[_0xc2ac('0x2e')]);_0x4192d5[_0xc2ac('0x30')]=_[_0xc2ac('0x31')](_0x4192d5['model'],_0x4192d5[_0xc2ac('0x2e')]);_0x540a3c[_0xc2ac('0x32')]=_[_0xc2ac('0x31')](_0x4192d5[_0xc2ac('0x2c')],qs[_0xc2ac('0x33')](_0x393451[_0xc2ac('0x2e')][_0xc2ac('0x33')]));_0x540a3c[_0xc2ac('0x32')]=_0x540a3c[_0xc2ac('0x32')]['length']?_0x540a3c[_0xc2ac('0x32')]:_0x4192d5['model'];if(_0x393451[_0xc2ac('0x2e')][_0xc2ac('0x3e')]){_0x540a3c[_0xc2ac('0x44')]=[{'all':!![]}];}_0x540a3c=_[_0xc2ac('0x3d')]({},_0x540a3c,_0x393451[_0xc2ac('0x45')]);return db['Attachment'][_0xc2ac('0x46')](_0x540a3c)[_0xc2ac('0x23')](handleEntityNotFound(_0x3639df,null))[_0xc2ac('0x23')](respondWithResult(_0x3639df,null))[_0xc2ac('0x41')](handleError(_0x3639df,null));};exports[_0xc2ac('0x47')]=function(_0x32691e,_0x20dacc){var _0x2c29ce={'where':{'id':_0x32691e['params']['id']}},_0x20f114={};_0x20f114[_0xc2ac('0x2c')]=_[_0xc2ac('0x2f')](db[_0xc2ac('0x28')][_0xc2ac('0x29')]);_0x2c29ce['attributes']=_[_0xc2ac('0x31')](_0x20f114[_0xc2ac('0x2c')],qs[_0xc2ac('0x33')](_0x32691e[_0xc2ac('0x2e')][_0xc2ac('0x33')]));_0x2c29ce[_0xc2ac('0x32')]=_0x2c29ce[_0xc2ac('0x32')][_0xc2ac('0x34')]?_0x2c29ce[_0xc2ac('0x32')]:_0x20f114[_0xc2ac('0x2c')];if(_0x32691e[_0xc2ac('0x2e')]['includeAll']){_0x2c29ce[_0xc2ac('0x44')]=[{'all':!![]}];}_0x2c29ce=_[_0xc2ac('0x3d')]({},_0x2c29ce,_0x32691e[_0xc2ac('0x45')]);return db[_0xc2ac('0x28')][_0xc2ac('0x46')](_0x2c29ce)[_0xc2ac('0x23')](handleEntityNotFound(_0x20dacc,null))[_0xc2ac('0x23')](function(_0x76362){if(_0x76362){var _0x151ed3=_0x76362[_0xc2ac('0x48')]({'plain':!![]});_0x151ed3=qs[_0xc2ac('0x49')](_0x151ed3,['id','createdAt',_0xc2ac('0x4a')]);_0x32691e[_0xc2ac('0x4b')]=_[_0xc2ac('0x49')](_0x32691e[_0xc2ac('0x4b')],['id','createdAt','updatedAt']);return db['Attachment'][_0xc2ac('0x4c')](_[_0xc2ac('0x3d')](_0x151ed3,_0x32691e[_0xc2ac('0x4b')]),{'include':_0x32691e[_0xc2ac('0x2e')][_0xc2ac('0x3e')]?[{'all':!![]}]:undefined});}})[_0xc2ac('0x23')](respondWithResult(_0x20dacc,0xc9))['catch'](handleError(_0x20dacc,null));};exports[_0xc2ac('0x22')]=function(_0x335a33,_0xb5d0){if(_0x335a33['body']['id']){delete _0x335a33[_0xc2ac('0x4b')]['id'];}return db[_0xc2ac('0x28')][_0xc2ac('0x46')]({'where':{'id':_0x335a33[_0xc2ac('0x43')]['id']}})['then'](handleEntityNotFound(_0xb5d0,null))[_0xc2ac('0x23')](saveUpdates(_0x335a33[_0xc2ac('0x4b')],null))[_0xc2ac('0x23')](respondWithResult(_0xb5d0,null))[_0xc2ac('0x41')](handleError(_0xb5d0,null));};exports[_0xc2ac('0x4d')]=function(_0xb81747,_0x45baf4){return db['Attachment'][_0xc2ac('0x46')]({'where':{'id':_0xb81747['params']['id']}})[_0xc2ac('0x23')](handleEntityNotFound(_0x45baf4,null))[_0xc2ac('0x23')](removeEntity(_0x45baf4,null))['catch'](handleError(_0x45baf4,null));};exports[_0xc2ac('0x4c')]=function(_0x162ddc,_0x4193fa,_0x5986a2){_0x162ddc[_0xc2ac('0x4b')][_0xc2ac('0x25')]=_0x162ddc['file']['originalname'];_0x162ddc[_0xc2ac('0x4b')][_0xc2ac('0x4e')]=_0x162ddc[_0xc2ac('0x4f')][_0xc2ac('0x50')];_0x162ddc['body']['type']=_0x162ddc[_0xc2ac('0x4f')]['mimetype'];return db['Attachment'][_0xc2ac('0x4c')](_0x162ddc[_0xc2ac('0x4b')])[_0xc2ac('0x23')](respondWithResult(_0x4193fa,0xc9))[_0xc2ac('0x41')](handleError(_0x4193fa,null));};exports[_0xc2ac('0x51')]=function(_0x439537,_0x5f5087,_0x27c3a2){return db[_0xc2ac('0x28')][_0xc2ac('0x52')]({'where':{'id':_0x439537[_0xc2ac('0x43')]['id']},'raw':!![]})[_0xc2ac('0x23')](handleEntityNotFound(_0x5f5087,null))[_0xc2ac('0x23')](function(_0x2664e1){if(_0x2664e1){var _0x200997=_0x2664e1['ChatOfflineMessageId']!==null;var _0x173236=path[_0xc2ac('0x53')](config[_0xc2ac('0x54')],'server/files/attachments/');if(_0x200997){_0x173236=path[_0xc2ac('0x53')](_0x173236,_0xc2ac('0x55'));}var _0x2bd23f=path[_0xc2ac('0x53')](_0x173236,_0x2664e1[_0xc2ac('0x4e')]);return _0x5f5087[_0xc2ac('0x51')](_0x2bd23f);}})[_0xc2ac('0x41')](handleError(_0x5f5087,null));};
\ No newline at end of file
index 46f67b1..dc36101 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3b7=['Attachment','attachments','lodash','api','bluebird','request-promise','path','rimraf','../../config/environment','./attachment.attributes','exports','define'];(function(_0x16d10f,_0x2ba2d5){var _0x50c823=function(_0x44e43f){while(--_0x44e43f){_0x16d10f['push'](_0x16d10f['shift']());}};_0x50c823(++_0x2ba2d5);}(_0xb3b7,0x18e));var _0x7b3b=function(_0x36e732,_0x15e51e){_0x36e732=_0x36e732-0x0;var _0x498e16=_0xb3b7[_0x36e732];return _0x498e16;};'use strict';var _=require(_0x7b3b('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x7b3b('0x1'));var moment=require('moment');var BPromise=require(_0x7b3b('0x2'));var rp=require(_0x7b3b('0x3'));var fs=require('fs');var path=require(_0x7b3b('0x4'));var rimraf=require(_0x7b3b('0x5'));var config=require(_0x7b3b('0x6'));var attributes=require(_0x7b3b('0x7'));module[_0x7b3b('0x8')]=function(_0x40c666,_0x5cbf7a){return _0x40c666[_0x7b3b('0x9')](_0x7b3b('0xa'),attributes,{'tableName':_0x7b3b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0623=['attachments','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','exports'];(function(_0x47a812,_0x1a1055){var _0x5dbbc3=function(_0x2a6df3){while(--_0x2a6df3){_0x47a812['push'](_0x47a812['shift']());}};_0x5dbbc3(++_0x1a1055);}(_0x0623,0x19b));var _0x3062=function(_0x25c5b4,_0xbc95af){_0x25c5b4=_0x25c5b4-0x0;var _0x45803c=_0x0623[_0x25c5b4];return _0x45803c;};'use strict';var _=require(_0x3062('0x0'));var util=require(_0x3062('0x1'));var logger=require(_0x3062('0x2'))(_0x3062('0x3'));var moment=require(_0x3062('0x4'));var BPromise=require(_0x3062('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3062('0x6'));var rimraf=require(_0x3062('0x7'));var config=require('../../config/environment');var attributes=require('./attachment.attributes');module[_0x3062('0x8')]=function(_0x2c8dff,_0x331589){return _0x2c8dff['define']('Attachment',attributes,{'tableName':_0x3062('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2fbae83..3e1ef81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7764=['debug','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateAttachment','Attachment','create','options','raw','then','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','info','Attachment,\x20%s,\x20%s','request\x20sent'];(function(_0x1a3634,_0x3a5fe7){var _0x2338c7=function(_0x5ee63d){while(--_0x5ee63d){_0x1a3634['push'](_0x1a3634['shift']());}};_0x2338c7(++_0x3a5fe7);}(_0x7764,0xa4));var _0x4776=function(_0x12bcf7,_0xc11103){_0x12bcf7=_0x12bcf7-0x0;var _0x2825a=_0x7764[_0x12bcf7];return _0x2825a;};'use strict';var _=require(_0x4776('0x0'));var util=require(_0x4776('0x1'));var moment=require(_0x4776('0x2'));var BPromise=require(_0x4776('0x3'));var rs=require(_0x4776('0x4'));var fs=require('fs');var Redis=require(_0x4776('0x5'));var db=require(_0x4776('0x6'))['db'];var utils=require(_0x4776('0x7'));var logger=require(_0x4776('0x8'))(_0x4776('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4776('0xa')][_0x4776('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52f59e,_0x1f9a45,_0x2b61c7){return new BPromise(function(_0x4fcbcc,_0x53f976){return client[_0x4776('0xc')](_0x52f59e,_0x2b61c7)['then'](function(_0x35bf06){logger[_0x4776('0xd')](_0x4776('0xe'),_0x1f9a45,_0x4776('0xf'));logger[_0x4776('0x10')](_0x4776('0x11'),_0x1f9a45,_0x4776('0xf'),JSON[_0x4776('0x12')](_0x35bf06));if(_0x35bf06[_0x4776('0x13')]){if(_0x35bf06[_0x4776('0x13')][_0x4776('0x14')]===0x1f4){logger[_0x4776('0x13')](_0x4776('0xe'),_0x1f9a45,_0x35bf06[_0x4776('0x13')][_0x4776('0x15')]);return _0x53f976(_0x35bf06[_0x4776('0x13')]['message']);}logger['error'](_0x4776('0xe'),_0x1f9a45,_0x35bf06[_0x4776('0x13')][_0x4776('0x15')]);return _0x4fcbcc(_0x35bf06[_0x4776('0x13')][_0x4776('0x15')]);}else{logger[_0x4776('0xd')](_0x4776('0xe'),_0x1f9a45,_0x4776('0xf'));_0x4fcbcc(_0x35bf06[_0x4776('0x16')][_0x4776('0x15')]);}})['catch'](function(_0x46fec7){logger['error'](_0x4776('0xe'),_0x1f9a45,_0x46fec7);_0x53f976(_0x46fec7);});});}exports[_0x4776('0x17')]=function(_0x2366da){var _0xed81b5=this;return new Promise(function(_0xb5c938,_0x4b5f50){return db[_0x4776('0x18')][_0x4776('0x19')](_0x2366da['body'],{'raw':_0x2366da[_0x4776('0x1a')]?_0x2366da[_0x4776('0x1a')][_0x4776('0x1b')]===undefined?!![]:![]:!![]})[_0x4776('0x1c')](function(_0x59b540){logger[_0x4776('0xd')](_0x4776('0x17'),_0x2366da);logger[_0x4776('0x10')](_0x4776('0x17'),_0x2366da,JSON['stringify'](_0x59b540));_0xb5c938(_0x59b540);})[_0x4776('0x1d')](function(_0xaa89dc){logger[_0x4776('0x13')]('CreateAttachment',_0xaa89dc[_0x4776('0x15')],_0x2366da);_0x4b5f50(_0xed81b5[_0x4776('0x13')](0x1f4,_0xaa89dc[_0x4776('0x15')]));});});};
\ No newline at end of file
+var _0x5db8=['request\x20sent','debug','error','message','catch','CreateAttachment','Attachment','create','body','options','raw','stringify','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','then','info','Attachment,\x20%s,\x20%s'];(function(_0x152c94,_0x1b9c39){var _0x4c46e8=function(_0xc758f1){while(--_0xc758f1){_0x152c94['push'](_0x152c94['shift']());}};_0x4c46e8(++_0x1b9c39);}(_0x5db8,0xbb));var _0x85db=function(_0x122cc1,_0x5c956e){_0x122cc1=_0x122cc1-0x0;var _0x1e33af=_0x5db8[_0x122cc1];return _0x1e33af;};'use strict';var _=require(_0x85db('0x0'));var util=require(_0x85db('0x1'));var moment=require(_0x85db('0x2'));var BPromise=require('bluebird');var rs=require(_0x85db('0x3'));var fs=require('fs');var Redis=require(_0x85db('0x4'));var db=require(_0x85db('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x85db('0x6'));var config=require(_0x85db('0x7'));var jayson=require(_0x85db('0x8'));var client=jayson[_0x85db('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x489b13,_0x2b9f25,_0x3a10dd){return new BPromise(function(_0xc6fd00,_0x308988){return client['request'](_0x489b13,_0x3a10dd)[_0x85db('0xa')](function(_0x54f0c1){logger[_0x85db('0xb')](_0x85db('0xc'),_0x2b9f25,_0x85db('0xd'));logger[_0x85db('0xe')]('Attachment,\x20%s,\x20%s,\x20%s',_0x2b9f25,'request\x20sent',JSON['stringify'](_0x54f0c1));if(_0x54f0c1[_0x85db('0xf')]){if(_0x54f0c1[_0x85db('0xf')]['code']===0x1f4){logger[_0x85db('0xf')]('Attachment,\x20%s,\x20%s',_0x2b9f25,_0x54f0c1[_0x85db('0xf')][_0x85db('0x10')]);return _0x308988(_0x54f0c1[_0x85db('0xf')][_0x85db('0x10')]);}logger[_0x85db('0xf')](_0x85db('0xc'),_0x2b9f25,_0x54f0c1[_0x85db('0xf')][_0x85db('0x10')]);return _0xc6fd00(_0x54f0c1[_0x85db('0xf')][_0x85db('0x10')]);}else{logger[_0x85db('0xb')](_0x85db('0xc'),_0x2b9f25,_0x85db('0xd'));_0xc6fd00(_0x54f0c1['result'][_0x85db('0x10')]);}})[_0x85db('0x11')](function(_0x11e7da){logger[_0x85db('0xf')](_0x85db('0xc'),_0x2b9f25,_0x11e7da);_0x308988(_0x11e7da);});});}exports[_0x85db('0x12')]=function(_0x3209b3){var _0x56d3b2=this;return new Promise(function(_0x37ac04,_0xf89937){return db[_0x85db('0x13')][_0x85db('0x14')](_0x3209b3[_0x85db('0x15')],{'raw':_0x3209b3[_0x85db('0x16')]?_0x3209b3[_0x85db('0x16')][_0x85db('0x17')]===undefined?!![]:![]:!![]})[_0x85db('0xa')](function(_0x107c10){logger['info'](_0x85db('0x12'),_0x3209b3);logger[_0x85db('0xe')](_0x85db('0x12'),_0x3209b3,JSON[_0x85db('0x18')](_0x107c10));_0x37ac04(_0x107c10);})[_0x85db('0x11')](function(_0x3842d7){logger[_0x85db('0xf')](_0x85db('0x12'),_0x3842d7['message'],_0x3209b3);_0xf89937(_0x56d3b2[_0x85db('0xf')](0x1f4,_0x3842d7[_0x85db('0x10')]));});});};
\ No newline at end of file
index b28ac77..643f0d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['/:id/clone','clone','diskStorage','join','server/files/attachments/','format','now','originalname','replace','single','create','/:id','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','isAuthenticated','index','show','/:id/download','post'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0x0b0e,0x187));var _0xe0b0=function(_0x5ecff9,_0x473070){_0x5ecff9=_0x5ecff9-0x0;var _0x5e1415=_0x0b0e[_0x5ecff9];return _0x5e1415;};'use strict';var multer=require(_0xe0b0('0x0'));var util=require('util');var path=require(_0xe0b0('0x1'));var timeout=require('connect-timeout');var express=require(_0xe0b0('0x2'));var router=express[_0xe0b0('0x3')]();var fs_extra=require(_0xe0b0('0x4'));var auth=require(_0xe0b0('0x5'));var interaction=require(_0xe0b0('0x6'));var config=require(_0xe0b0('0x7'));var controller=require(_0xe0b0('0x8'));router[_0xe0b0('0x9')]('/',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0xb')]);router[_0xe0b0('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xe0b0('0xc')]);router[_0xe0b0('0x9')](_0xe0b0('0xd'),auth[_0xe0b0('0xa')](),controller['download']);router[_0xe0b0('0xe')](_0xe0b0('0xf'),auth['isAuthenticated'](),controller[_0xe0b0('0x10')]);var upload=multer({'storage':multer[_0xe0b0('0x11')]({'destination':function(_0x574d96,_0x399320,_0x2cdad2){_0x2cdad2(null,path[_0xe0b0('0x12')](config['root'],_0xe0b0('0x13')));},'filename':function(_0x1c358a,_0x3cc19a,_0x45f914){_0x45f914(null,util[_0xe0b0('0x14')]('%s-%s',Date[_0xe0b0('0x15')](),_0x3cc19a[_0xe0b0('0x16')][_0xe0b0('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xe0b0('0xe')]('/',upload[_0xe0b0('0x18')]('file'),controller[_0xe0b0('0x19')]);router['put'](_0xe0b0('0x1a'),auth[_0xe0b0('0xa')](),controller['update']);router[_0xe0b0('0x1b')]('/:id',auth[_0xe0b0('0xa')](),controller[_0xe0b0('0x1c')]);module['exports']=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/download','download','/:id/clone','clone','join','root','server/files/attachments/','%s-%s','now','originalname','replace','post','single','file','create','put','update','delete','destroy','exports','multer','util'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xdb28,0x106));var _0x8db2=function(_0xdd23f5,_0x384071){_0xdd23f5=_0xdd23f5-0x0;var _0x5588c3=_0xdb28[_0xdd23f5];return _0x5588c3;};'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('./attachment.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['post'](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x10')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x1d9371,_0x150942,_0x576475){_0x576475(null,path[_0x8db2('0x11')](config[_0x8db2('0x12')],_0x8db2('0x13')));},'filename':function(_0x204f49,_0x37d017,_0x559fb1){_0x559fb1(null,util['format'](_0x8db2('0x14'),Date[_0x8db2('0x15')](),_0x37d017[_0x8db2('0x16')][_0x8db2('0x17')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x8db2('0x18')]('/',upload[_0x8db2('0x19')](_0x8db2('0x1a')),controller[_0x8db2('0x1b')]);router[_0x8db2('0x1c')](_0x8db2('0xb'),auth['isAuthenticated'](),controller[_0x8db2('0x1d')]);router[_0x8db2('0x1e')]('/:id',auth[_0x8db2('0xa')](),controller[_0x8db2('0x1f')]);module[_0x8db2('0x20')]=router;
\ No newline at end of file
index 4127853..0084cc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5afc=['../../config/logger','api','undefined','activedirectory','baseDN','domain','authenticate','error','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Setting','adSsoEnabled','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','findOne','name','role','disabled','blocked','blockedAt','admin','agent','blockDuration','minutes','clearBlockUser','getLicense','catch','send','message','login','ad-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','use','User','passport-local','Strategy','moment','activedirectory2','bluebird','util','../../mysqldb','../../config/utils','../../config/environment'];(function(_0x3afa78,_0x5704d1){var _0x3c1bb0=function(_0x3cc8be){while(--_0x3cc8be){_0x3afa78['push'](_0x3afa78['shift']());}};_0x3c1bb0(++_0x5704d1);}(_0x5afc,0x1db));var _0xc5af=function(_0x27e32b,_0x1ed642){_0x27e32b=_0x27e32b-0x0;var _0xf2df7b=_0x5afc[_0x27e32b];return _0xf2df7b;};'use strict';var passport=require('passport');var LocalStrategy=require(_0xc5af('0x0'))[_0xc5af('0x1')];var moment=require(_0xc5af('0x2'));var ActiveDirectory=require(_0xc5af('0x3'));var BPromise=require(_0xc5af('0x4'));var util=require(_0xc5af('0x5'));var db=require(_0xc5af('0x6'))['db'];var authService=require('../../components/auth/service');var utils=require(_0xc5af('0x7'));var config=require(_0xc5af('0x8'));var logger=require(_0xc5af('0x9'))(_0xc5af('0xa'));function isActiveDirectoryConfigured(_0x37d5c1){var _0x16e002=![];if(typeof _0x37d5c1['activedirectory']!==_0xc5af('0xb')){_0x16e002=_0x37d5c1[_0xc5af('0xc')][_0xc5af('0xd')]&&_0x37d5c1[_0xc5af('0xc')]['url']&&_0x37d5c1[_0xc5af('0xc')][_0xc5af('0xe')];}return _0x16e002;}function adAuthenticate(_0x3cd8f5,_0x460c60,_0x3517a8){return new BPromise(function(_0x4bb329,_0x55d2a7){try{var _0x54997f=new ActiveDirectory(_0x3cd8f5);_0x54997f[_0xc5af('0xf')](_0x460c60,_0x3517a8,function(_0x58e8d5,_0x5758eb){if(_0x58e8d5){logger[_0xc5af('0x10')]('Error\x20authenticate\x20%s:\x20%s',_0x460c60,util[_0xc5af('0x11')](_0x58e8d5,{'showHidden':![],'depth':null}));_0x55d2a7(_0xc5af('0x12'));}else if(!_0x5758eb){logger['error'](_0xc5af('0x13'),_0x460c60);_0x55d2a7('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x4bb329(_0x5758eb);}});}catch(_0x5785d7){_0x55d2a7(_0x5785d7);}});}function ActiveDirectoryAuthenticate(_0x15b213,_0x5c5e18,_0x273b45,_0x5a756b){var _0x32f9ff,_0x4f8f24;if(!isActiveDirectoryConfigured(config)){logger[_0xc5af('0x10')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured',_0x5c5e18);return _0x5a756b(null,![],{'message':_0xc5af('0x12')});}return db[_0xc5af('0x14')]['findOne']({'where':{'id':0x1},'attributes':[_0xc5af('0x15'),'blockDuration'],'raw':!![]})[_0xc5af('0x16')](function(_0x73ee8a){_0x32f9ff=_0x73ee8a;if(!_0x32f9ff[_0xc5af('0x15')]){logger['error'](_0xc5af('0x17'),_0x5c5e18);throw new Error(_0xc5af('0x12'));}return _0x15b213[_0xc5af('0x18')]({'attributes':['id',_0xc5af('0x19'),'password','salt',_0xc5af('0x1a'),_0xc5af('0x1b'),_0xc5af('0x1c'),_0xc5af('0x1d'),'online'],'where':{'name':_0x5c5e18,'role':{'$or':[_0xc5af('0x1e'),'user',_0xc5af('0x1f')]},'adSsoEnabled':!![]}});})[_0xc5af('0x16')](function(_0x4b3178){if(!_0x4b3178||_0x4b3178&&_0x4b3178[_0xc5af('0x19')]!==_0x5c5e18){throw new Error(_0xc5af('0x12'));}_0x4f8f24=_0x4b3178;var _0x237df3=_0x4f8f24[_0xc5af('0x19')]+'@'+config[_0xc5af('0xc')][_0xc5af('0xe')];return adAuthenticate(config['activedirectory'],_0x237df3,_0x273b45);})[_0xc5af('0x16')](function(_0x3666b4){if(_0x4f8f24[_0xc5af('0x1b')]){throw new Error(_0xc5af('0x12'));}if(_0x32f9ff[_0xc5af('0x20')]>0x0){if(_0x4f8f24[_0xc5af('0x1c')]){if(moment(_0x4f8f24[_0xc5af('0x1d')])['add'](_0x32f9ff[_0xc5af('0x20')],_0xc5af('0x21'))>moment()){throw new Error(_0xc5af('0x12'));}return utils[_0xc5af('0x22')](_0x4f8f24,0x0,![],null)[_0xc5af('0x16')](function(){return utils[_0xc5af('0x23')](_0x4f8f24);})['then'](function(){return _0x5a756b(null,_0x4f8f24);});}else{return utils[_0xc5af('0x23')](_0x4f8f24)['then'](function(){return _0x5a756b(null,_0x4f8f24);});}}else{return utils[_0xc5af('0x23')](_0x4f8f24)['then'](function(){return _0x5a756b(null,_0x4f8f24);});}})[_0xc5af('0x24')](function(_0x5994c4){return _0x5a756b(null,![],_0x5994c4);});}function handleError(_0x12f4d9,_0x250cc8,_0xc5ca6f){return _0x12f4d9['status'](_0x250cc8||0x1f4)[_0xc5af('0x25')]({'message':_0xc5ca6f?_0xc5ca6f[_0xc5af('0x26')]||_0xc5ca6f:''});}exports[_0xc5af('0x27')]=function(_0x5fb030,_0x2d77e9,_0x401a3b){passport[_0xc5af('0xf')](_0xc5af('0x28'),function(_0x535281,_0x31d15f,_0x53e79b){var _0x1107d6=_0x535281||_0x53e79b;if(_0x1107d6){return handleError(_0x2d77e9,0x191,_0x1107d6);}if(!_0x31d15f){return handleError(_0x2d77e9,0x194,{'message':_0xc5af('0x29')});}else{var _0x381a2c={'payload':{'id':_0x31d15f['id'],'role':_0x31d15f[_0xc5af('0x1a')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x381a2c)[_0xc5af('0x16')](function(_0x493080){_0x2d77e9['json']({'id':_0x31d15f['id'],'token':_0x493080,'statusCall':'','isAlreadyLogged':_0x31d15f['online']});});}})(_0x5fb030,_0x2d77e9,_0x401a3b);};passport[_0xc5af('0x2a')](_0xc5af('0x28'),new LocalStrategy({'usernameField':_0xc5af('0x19'),'passwordField':'password'},function(_0x33409d,_0x215a9f,_0x15a9d6){return ActiveDirectoryAuthenticate(db[_0xc5af('0x2b')],_0x33409d,_0x215a9f,_0x15a9d6);}));
\ No newline at end of file
+var _0xf4a7=['inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Setting','findOne','adSsoEnabled','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password','salt','role','disabled','blocked','blockedAt','online','user','minutes','clearBlockUser','getLicense','catch','status','message','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','ad-login','User','passport-local','Strategy','moment','activedirectory2','bluebird','util','../../mysqldb','../../config/utils','../../config/environment','activedirectory','baseDN','url','domain','error','Error\x20authenticate\x20%s:\x20%s'];(function(_0x475aa9,_0x439aab){var _0x360bbc=function(_0x331a22){while(--_0x331a22){_0x475aa9['push'](_0x475aa9['shift']());}};_0x360bbc(++_0x439aab);}(_0xf4a7,0x72));var _0x7f4a=function(_0x268a83,_0x2be6bd){_0x268a83=_0x268a83-0x0;var _0xbdb22c=_0xf4a7[_0x268a83];return _0xbdb22c;};'use strict';var passport=require('passport');var LocalStrategy=require(_0x7f4a('0x0'))[_0x7f4a('0x1')];var moment=require(_0x7f4a('0x2'));var ActiveDirectory=require(_0x7f4a('0x3'));var BPromise=require(_0x7f4a('0x4'));var util=require(_0x7f4a('0x5'));var db=require(_0x7f4a('0x6'))['db'];var authService=require('../../components/auth/service');var utils=require(_0x7f4a('0x7'));var config=require(_0x7f4a('0x8'));var logger=require('../../config/logger')('api');function isActiveDirectoryConfigured(_0x437003){var _0x3bd345=![];if(typeof _0x437003[_0x7f4a('0x9')]!=='undefined'){_0x3bd345=_0x437003[_0x7f4a('0x9')][_0x7f4a('0xa')]&&_0x437003[_0x7f4a('0x9')][_0x7f4a('0xb')]&&_0x437003[_0x7f4a('0x9')][_0x7f4a('0xc')];}return _0x3bd345;}function adAuthenticate(_0x512d56,_0x372ff0,_0x1a4c1d){return new BPromise(function(_0x2c6b5d,_0xb5c11){try{var _0x56d5e2=new ActiveDirectory(_0x512d56);_0x56d5e2['authenticate'](_0x372ff0,_0x1a4c1d,function(_0x3e243b,_0x4f7c00){if(_0x3e243b){logger[_0x7f4a('0xd')](_0x7f4a('0xe'),_0x372ff0,util[_0x7f4a('0xf')](_0x3e243b,{'showHidden':![],'depth':null}));_0xb5c11(_0x7f4a('0x10'));}else if(!_0x4f7c00){logger[_0x7f4a('0xd')]('Error\x20authenticate\x20%s:\x20Wrong\x20credentials',_0x372ff0);_0xb5c11(_0x7f4a('0x10'));}else{_0x2c6b5d(_0x4f7c00);}});}catch(_0x26dcbb){_0xb5c11(_0x26dcbb);}});}function ActiveDirectoryAuthenticate(_0x78c41d,_0x43b227,_0x2993da,_0x1b155d){var _0x4db288,_0x1e7638;if(!isActiveDirectoryConfigured(config)){logger['error'](_0x7f4a('0x11'),_0x43b227);return _0x1b155d(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db[_0x7f4a('0x12')][_0x7f4a('0x13')]({'where':{'id':0x1},'attributes':[_0x7f4a('0x14'),_0x7f4a('0x15')],'raw':!![]})[_0x7f4a('0x16')](function(_0x1bfbbd){_0x4db288=_0x1bfbbd;if(!_0x4db288[_0x7f4a('0x14')]){logger['error'](_0x7f4a('0x17'),_0x43b227);throw new Error(_0x7f4a('0x10'));}return _0x78c41d[_0x7f4a('0x13')]({'attributes':['id',_0x7f4a('0x18'),_0x7f4a('0x19'),_0x7f4a('0x1a'),_0x7f4a('0x1b'),_0x7f4a('0x1c'),_0x7f4a('0x1d'),_0x7f4a('0x1e'),_0x7f4a('0x1f')],'where':{'name':_0x43b227,'role':{'$or':['admin',_0x7f4a('0x20'),'agent']},'adSsoEnabled':!![]}});})[_0x7f4a('0x16')](function(_0x4f5e75){if(!_0x4f5e75||_0x4f5e75&&_0x4f5e75[_0x7f4a('0x18')]!==_0x43b227){throw new Error(_0x7f4a('0x10'));}_0x1e7638=_0x4f5e75;var _0x148c42=_0x1e7638['name']+'@'+config[_0x7f4a('0x9')]['domain'];return adAuthenticate(config['activedirectory'],_0x148c42,_0x2993da);})[_0x7f4a('0x16')](function(_0x3549aa){if(_0x1e7638[_0x7f4a('0x1c')]){throw new Error(_0x7f4a('0x10'));}if(_0x4db288[_0x7f4a('0x15')]>0x0){if(_0x1e7638['blocked']){if(moment(_0x1e7638[_0x7f4a('0x1e')])['add'](_0x4db288['blockDuration'],_0x7f4a('0x21'))>moment()){throw new Error(_0x7f4a('0x10'));}return utils[_0x7f4a('0x22')](_0x1e7638,0x0,![],null)['then'](function(){return utils[_0x7f4a('0x23')](_0x1e7638);})[_0x7f4a('0x16')](function(){return _0x1b155d(null,_0x1e7638);});}else{return utils[_0x7f4a('0x23')](_0x1e7638)[_0x7f4a('0x16')](function(){return _0x1b155d(null,_0x1e7638);});}}else{return utils[_0x7f4a('0x23')](_0x1e7638)[_0x7f4a('0x16')](function(){return _0x1b155d(null,_0x1e7638);});}})[_0x7f4a('0x24')](function(_0x1ef5a6){return _0x1b155d(null,![],_0x1ef5a6);});}function handleError(_0x3b0030,_0x178c54,_0x347a9b){return _0x3b0030[_0x7f4a('0x25')](_0x178c54||0x1f4)['send']({'message':_0x347a9b?_0x347a9b[_0x7f4a('0x26')]||_0x347a9b:''});}exports[_0x7f4a('0x27')]=function(_0x1506aa,_0x5d8b30,_0xfa58c5){passport['authenticate']('ad-login',function(_0x450300,_0x51c9e3,_0x180b35){var _0x5b58a5=_0x450300||_0x180b35;if(_0x5b58a5){return handleError(_0x5d8b30,0x191,_0x5b58a5);}if(!_0x51c9e3){return handleError(_0x5d8b30,0x194,{'message':_0x7f4a('0x28')});}else{var _0x466aaa={'payload':{'id':_0x51c9e3['id'],'role':_0x51c9e3['role']},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x466aaa)[_0x7f4a('0x16')](function(_0x404100){_0x5d8b30['json']({'id':_0x51c9e3['id'],'token':_0x404100,'statusCall':'','isAlreadyLogged':_0x51c9e3['online']});});}})(_0x1506aa,_0x5d8b30,_0xfa58c5);};passport['use'](_0x7f4a('0x29'),new LocalStrategy({'usernameField':_0x7f4a('0x18'),'passwordField':'password'},function(_0x1778e5,_0x2b0265,_0x344f9a){return ActiveDirectoryAuthenticate(db[_0x7f4a('0x2a')],_0x1778e5,_0x2b0265,_0x344f9a);}));
\ No newline at end of file
index 1871d46..cdd50b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0aa=['./authActiveDirectory.controller','post','login','exports','express'];(function(_0x23fcec,_0x48ec4c){var _0x447567=function(_0x4781bb){while(--_0x4781bb){_0x23fcec['push'](_0x23fcec['shift']());}};_0x447567(++_0x48ec4c);}(_0xa0aa,0x6d));var _0xaa0a=function(_0x24e933,_0x2ed2b5){_0x24e933=_0x24e933-0x0;var _0x260aee=_0xa0aa[_0x24e933];return _0x260aee;};'use strict';var express=require(_0xaa0a('0x0'));var router=express['Router']();var controller=require(_0xaa0a('0x1'));router[_0xaa0a('0x2')]('/',controller[_0xaa0a('0x3')]);module[_0xaa0a('0x4')]=router;
\ No newline at end of file
+var _0x193a=['post','login','./authActiveDirectory.controller'];(function(_0xdf38af,_0x5f199d){var _0x2171df=function(_0x4cde06){while(--_0x4cde06){_0xdf38af['push'](_0xdf38af['shift']());}};_0x2171df(++_0x5f199d);}(_0x193a,0x146));var _0xa193=function(_0x49a6aa,_0x35cd7){_0x49a6aa=_0x49a6aa-0x0;var _0x314f2e=_0x193a[_0x49a6aa];return _0x314f2e;};'use strict';var express=require('express');var router=express['Router']();var controller=require(_0xa193('0x0'));router[_0xa193('0x1')]('/',controller[_0xa193('0x2')]);module['exports']=router;
\ No newline at end of file
index ae8380a..f84cb25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/utils','login','authenticate','google','/login','email','use','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','value','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'];(function(_0x513aa5,_0x1fba79){var _0x1a1a7c=function(_0x240e3f){while(--_0x240e3f){_0x513aa5['push'](_0x513aa5['shift']());}};_0x1a1a7c(++_0x1fba79);}(_0x7a54,0x106));var _0x47a5=function(_0x76c1fe,_0x29bdfa){_0x76c1fe=_0x76c1fe-0x0;var _0x4ce449=_0x7a54[_0x76c1fe];return _0x4ce449;};'use strict';var _=require(_0x47a5('0x0'));var passport=require(_0x47a5('0x1'));var GoogleStrategy=require(_0x47a5('0x2'))['Strategy'];var moment=require(_0x47a5('0x3'));var db=require(_0x47a5('0x4'))['db'];var config=require('../../config/environment');var utils=require(_0x47a5('0x5'));exports[_0x47a5('0x6')]=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':_0x47a5('0x9'),'scope':['profile',_0x47a5('0xa')],'session':![]});exports['callback']=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':'/login','session':![]});passport[_0x47a5('0xb')](new GoogleStrategy({'clientID':config['google']?config['google']['clientID']:'id','clientSecret':config[_0x47a5('0x8')]?config[_0x47a5('0x8')]['clientSecret']:_0x47a5('0xc'),'callbackURL':config['google']?config['google'][_0x47a5('0xd')]:''},function(_0x69e4d4,_0x2f399b,_0x250fad,_0xd612dd){var _0xd308b8,_0x1eae59;return db['Setting'][_0x47a5('0xe')]({'where':{'id':0x1},'attributes':[_0x47a5('0xf'),_0x47a5('0x10')],'raw':!![]})[_0x47a5('0x11')](function(_0x139f25){_0xd308b8=_0x139f25;return db[_0x47a5('0x12')][_0x47a5('0x13')]({'where':{'email':_[_0x47a5('0x14')](_0x250fad['emails'],_0x47a5('0x15')),'role':{'$or':[_0x47a5('0x16'),_0x47a5('0x17'),_0x47a5('0x18')]}}});})[_0x47a5('0x11')](function(_0x574af6){_0x1eae59=_0x574af6;if(_0x1eae59){if(_0x1eae59['disabled']){return _0xd612dd(_0x47a5('0x19'));}else if(_0xd308b8['blockDuration']>0x0){if(_0x1eae59['blocked']){if(moment(_0x1eae59[_0x47a5('0x1a')])[_0x47a5('0x1b')](_0xd308b8[_0x47a5('0x10')],_0x47a5('0x1c'))>moment()){return _0xd612dd(_0x47a5('0x19'));}else{return utils[_0x47a5('0x1d')](_0x1eae59,0x0,![],null)[_0x47a5('0x11')](function(){return utils[_0x47a5('0x1e')](_0x1eae59);})[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils['getLicense'](_0x1eae59)[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils[_0x47a5('0x1e')](_0x1eae59)['then'](function(){return _0xd612dd(null,_0x1eae59);});}}return _0xd612dd(_0x47a5('0x19'));})[_0x47a5('0x1f')](function(_0x36874d){_0xd612dd(_0x36874d);});}));
\ No newline at end of file
+var _0x7a54=['blockedAt','add','minutes','clearBlockUser','getLicense','catch','lodash','passport','passport-google-oauth20','moment','../../mysqldb','../../config/utils','login','authenticate','google','/login','email','use','secret','callbackURL','findOne','allowedLoginAttempts','blockDuration','then','User','find','map','value','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'];(function(_0xd1d19a,_0x1933f0){var _0x52a79d=function(_0x5199e2){while(--_0x5199e2){_0xd1d19a['push'](_0xd1d19a['shift']());}};_0x52a79d(++_0x1933f0);}(_0x7a54,0x106));var _0x47a5=function(_0x27921a,_0x52c3fe){_0x27921a=_0x27921a-0x0;var _0x2aa994=_0x7a54[_0x27921a];return _0x2aa994;};'use strict';var _=require(_0x47a5('0x0'));var passport=require(_0x47a5('0x1'));var GoogleStrategy=require(_0x47a5('0x2'))['Strategy'];var moment=require(_0x47a5('0x3'));var db=require(_0x47a5('0x4'))['db'];var config=require('../../config/environment');var utils=require(_0x47a5('0x5'));exports[_0x47a5('0x6')]=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':_0x47a5('0x9'),'scope':['profile',_0x47a5('0xa')],'session':![]});exports['callback']=passport[_0x47a5('0x7')](_0x47a5('0x8'),{'failureRedirect':'/login','session':![]});passport[_0x47a5('0xb')](new GoogleStrategy({'clientID':config['google']?config['google']['clientID']:'id','clientSecret':config[_0x47a5('0x8')]?config[_0x47a5('0x8')]['clientSecret']:_0x47a5('0xc'),'callbackURL':config['google']?config['google'][_0x47a5('0xd')]:''},function(_0x69e4d4,_0x2f399b,_0x250fad,_0xd612dd){var _0xd308b8,_0x1eae59;return db['Setting'][_0x47a5('0xe')]({'where':{'id':0x1},'attributes':[_0x47a5('0xf'),_0x47a5('0x10')],'raw':!![]})[_0x47a5('0x11')](function(_0x139f25){_0xd308b8=_0x139f25;return db[_0x47a5('0x12')][_0x47a5('0x13')]({'where':{'email':_[_0x47a5('0x14')](_0x250fad['emails'],_0x47a5('0x15')),'role':{'$or':[_0x47a5('0x16'),_0x47a5('0x17'),_0x47a5('0x18')]}}});})[_0x47a5('0x11')](function(_0x574af6){_0x1eae59=_0x574af6;if(_0x1eae59){if(_0x1eae59['disabled']){return _0xd612dd(_0x47a5('0x19'));}else if(_0xd308b8['blockDuration']>0x0){if(_0x1eae59['blocked']){if(moment(_0x1eae59[_0x47a5('0x1a')])[_0x47a5('0x1b')](_0xd308b8[_0x47a5('0x10')],_0x47a5('0x1c'))>moment()){return _0xd612dd(_0x47a5('0x19'));}else{return utils[_0x47a5('0x1d')](_0x1eae59,0x0,![],null)[_0x47a5('0x11')](function(){return utils[_0x47a5('0x1e')](_0x1eae59);})[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils['getLicense'](_0x1eae59)[_0x47a5('0x11')](function(){return _0xd612dd(null,_0x1eae59);});}}else{return utils[_0x47a5('0x1e')](_0x1eae59)['then'](function(){return _0xd612dd(null,_0x1eae59);});}}return _0xd612dd(_0x47a5('0x19'));})[_0x47a5('0x1f')](function(_0x36874d){_0xd612dd(_0x36874d);});}));
\ No newline at end of file
index 81be86d..de506ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa639=['../../components/auth/service','login','/callback','isMiddleware','exports','passport','Router','./authGoogle.controller','../user/user.controller.js'];(function(_0xb153a9,_0x20aa86){var _0x2de9a3=function(_0x3ee1bd){while(--_0x3ee1bd){_0xb153a9['push'](_0xb153a9['shift']());}};_0x2de9a3(++_0x20aa86);}(_0xa639,0x140));var _0x9a63=function(_0x6c8fc3,_0x439e62){_0x6c8fc3=_0x6c8fc3-0x0;var _0x48d628=_0xa639[_0x6c8fc3];return _0x48d628;};'use strict';var express=require('express');var passport=require(_0x9a63('0x0'));var router=express[_0x9a63('0x1')]();var controller=require(_0x9a63('0x2'));var userController=require(_0x9a63('0x3'));var authService=require(_0x9a63('0x4'));router['get']('/',controller[_0x9a63('0x5')]);router['get'](_0x9a63('0x6'),controller['callback'],authService[_0x9a63('0x7')],userController[_0x9a63('0x5')],authService['setTokenCookie']);module[_0x9a63('0x8')]=router;
\ No newline at end of file
+var _0x9d73=['express','passport','Router','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get','login','/callback','callback','setTokenCookie'];(function(_0x216746,_0x5db620){var _0x3debd9=function(_0x2b63ce){while(--_0x2b63ce){_0x216746['push'](_0x216746['shift']());}};_0x3debd9(++_0x5db620);}(_0x9d73,0x1ef));var _0x39d7=function(_0x591fd4,_0x251a84){_0x591fd4=_0x591fd4-0x0;var _0x26447c=_0x9d73[_0x591fd4];return _0x26447c;};'use strict';var express=require(_0x39d7('0x0'));var passport=require(_0x39d7('0x1'));var router=express[_0x39d7('0x2')]();var controller=require(_0x39d7('0x3'));var userController=require(_0x39d7('0x4'));var authService=require(_0x39d7('0x5'));router[_0x39d7('0x6')]('/',controller[_0x39d7('0x7')]);router['get'](_0x39d7('0x8'),controller[_0x39d7('0x9')],authService['isMiddleware'],userController[_0x39d7('0x7')],authService[_0x39d7('0xa')]);module['exports']=router;
\ No newline at end of file
index 46a6780..4f77ad5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb65b=['allowedLoginAttempts','blockDuration','then','password','salt','disabled','blocked','blockedAt','loginAttempts','admin','user','agent','name','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','add','clearBlockUser','minutes','getLicense','catch','MailAccount','find','email','MailServerOut','Smtp','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','format','\x22%s\x22\x20<%s>','request','SendMail','error','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','status','send','message','local-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','forgot','body','Email\x20parameter\x20is\x20missing','generate','toLowerCase','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','https://','headers','host','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','enforcePasswordHistory','securePassword','validatePasswordPattern','previousPasswords','validatePasswordHistory','passwordHistoryLimit','Password\x20reset!','use','util','passport','Strategy','jayson/promise','lodash','randomstring','moment','../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','findOne'];(function(_0x39bd56,_0x471791){var _0x37f6af=function(_0x44d714){while(--_0x44d714){_0x39bd56['push'](_0x39bd56['shift']());}};_0x37f6af(++_0x471791);}(_0xb65b,0xf1));var _0xbb65=function(_0x49b23b,_0x5a6eeb){_0x49b23b=_0x49b23b-0x0;var _0x29ad1a=_0xb65b[_0x49b23b];return _0x29ad1a;};'use strict';var util=require(_0xbb65('0x0'));var passport=require(_0xbb65('0x1'));var LocalStrategy=require('passport-local')[_0xbb65('0x2')];var jayson=require(_0xbb65('0x3'));var _=require(_0xbb65('0x4'));var rs=require(_0xbb65('0x5'));var moment=require(_0xbb65('0x6'));var db=require(_0xbb65('0x7'))['db'];var authService=require(_0xbb65('0x8'));var utils=require(_0xbb65('0x9'));var client=jayson[_0xbb65('0xa')][_0xbb65('0xb')]({'port':0x232b});function localAuthenticate(_0x5dec39,_0x4e3397,_0xecbd17,_0x36558b){var _0x1ef626,_0x49f0a8;return db[_0xbb65('0xc')][_0xbb65('0xd')]({'where':{'id':0x1},'attributes':[_0xbb65('0xe'),_0xbb65('0xf')],'raw':!![]})[_0xbb65('0x10')](function(_0x241764){_0x1ef626=_0x241764;return _0x5dec39[_0xbb65('0xd')]({'attributes':['id','name',_0xbb65('0x11'),_0xbb65('0x12'),'role',_0xbb65('0x13'),_0xbb65('0x14'),_0xbb65('0x15'),_0xbb65('0x16')],'where':{'name':_0x4e3397,'role':{'$or':[_0xbb65('0x17'),_0xbb65('0x18'),_0xbb65('0x19')]}}});})[_0xbb65('0x10')](function(_0x2a4484){if(!_0x2a4484||_0x2a4484&&_0x2a4484[_0xbb65('0x1a')]!==_0x4e3397){throw new Error(_0xbb65('0x1b'));}else{_0x49f0a8=_0x2a4484;return _0x49f0a8;}})[_0xbb65('0x10')](function(){_0x49f0a8[_0xbb65('0x1c')](_0xecbd17,function(_0x34538f,_0x5b64db){var _0x37b404=_0x49f0a8[_0xbb65('0x16')]+0x1;if(_0x34538f){return _0x36558b(_0x34538f);}else if(!_0x5b64db){if(_0x49f0a8[_0xbb65('0x13')]){return _0x36558b(null,![],{'message':_0xbb65('0x1b')});}else if(_0x1ef626[_0xbb65('0xe')]>0x0){if(_0x49f0a8[_0xbb65('0x14')]){if(_0x1ef626[_0xbb65('0xf')]>0x0){if(moment(_0x49f0a8[_0xbb65('0x15')])[_0xbb65('0x1d')](_0x1ef626[_0xbb65('0xf')],'minutes')>moment()){return _0x36558b(null,![],{'message':_0xbb65('0x1b')});}else{return utils[_0xbb65('0x1e')](_0x49f0a8,_0x37b404,![],null)[_0xbb65('0x10')](function(){return _0x36558b(null,![],{'message':_0xbb65('0x1b')});});}}else{return _0x36558b(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x37b404>=_0x1ef626[_0xbb65('0xe')]){return utils[_0xbb65('0x1e')](_0x49f0a8,0x0,!![],moment())[_0xbb65('0x10')](function(){return _0x36558b(null,![],{'message':_0xbb65('0x1b')});});}else{return utils[_0xbb65('0x1e')](_0x49f0a8,_0x37b404,![],null)['then'](function(){return _0x36558b(null,![],{'message':_0xbb65('0x1b')});});}}}else{return _0x36558b(null,![],{'message':_0xbb65('0x1b')});}}else{if(_0x49f0a8['disabled']){return _0x36558b(null,![],{'message':_0xbb65('0x1b')});}else if(_0x1ef626[_0xbb65('0xe')]>0x0){if(_0x49f0a8[_0xbb65('0x14')]){if(_0x1ef626['blockDuration']>0x0){if(moment(_0x49f0a8[_0xbb65('0x15')])['add'](_0x1ef626[_0xbb65('0xf')],_0xbb65('0x1f'))>moment()){return _0x36558b(null,![],{'message':_0xbb65('0x1b')});}else{return utils[_0xbb65('0x1e')](_0x49f0a8,0x0,![],null)['then'](function(){return utils[_0xbb65('0x20')](_0x49f0a8);})[_0xbb65('0x10')](function(){return _0x36558b(null,_0x49f0a8);});}}else{return _0x36558b(null,![],{'message':_0xbb65('0x1b')});}}else{return utils['clearBlockUser'](_0x49f0a8,0x0,![],null)[_0xbb65('0x10')](function(){return utils['getLicense'](_0x49f0a8);})[_0xbb65('0x10')](function(){return _0x36558b(null,_0x49f0a8);})[_0xbb65('0x21')](function(_0x3ccc95){return _0x36558b(null,![],_0x3ccc95);});}}else{if(_0x49f0a8[_0xbb65('0x14')]){return _0x36558b(null,![],{'message':_0xbb65('0x1b')});}else{return utils[_0xbb65('0x20')](_0x49f0a8)[_0xbb65('0x10')](function(){return _0x36558b(null,_0x49f0a8);});}}}});})[_0xbb65('0x21')](function(_0x532a22){return _0x36558b(null,![],_0x532a22);});}function sendServiceMail(_0x26e30e){return db[_0xbb65('0x22')][_0xbb65('0x23')]({'where':{'service':!![]},'attributes':['id',_0xbb65('0x1a'),_0xbb65('0x24')],'include':[{'model':db[_0xbb65('0x25')],'as':_0xbb65('0x26'),'include':[{'model':db[_0xbb65('0x27')],'as':'CloudProvider'}]}]})['then'](function(_0x25394f){if(!_0x25394f){throw new Error(_0xbb65('0x28'));}var _0x2ab6b7=_0x25394f[_0xbb65('0x29')]();var _0x183d10={'account':_0x2ab6b7,'message':_[_0xbb65('0x2a')]({'from':util[_0xbb65('0x2b')](_0xbb65('0x2c'),_0x25394f['name'],_0x25394f['email']||_0x25394f[_0xbb65('0x26')]['user'])},_0x26e30e)};return client[_0xbb65('0x2d')](_0xbb65('0x2e'),_0x183d10);})['then'](function(_0x4f544c){if(_0x4f544c[_0xbb65('0x2f')]){throw new Error(util[_0xbb65('0x2b')](_0xbb65('0x30'),_0x4f544c[_0xbb65('0x2f')]['message']||JSON['stringify'](_0x4f544c['error'])));}return!![];});}function handleError(_0x5bcf33,_0x566d07,_0x1b973d){return _0x5bcf33[_0xbb65('0x31')](_0x566d07||0x1f4)[_0xbb65('0x32')]({'message':_0x1b973d?_0x1b973d[_0xbb65('0x33')]||_0x1b973d:''});}exports['login']=function(_0x32ee32,_0x28c8db,_0x369673){passport[_0xbb65('0x1c')](_0xbb65('0x34'),function(_0x386c63,_0x525a4d,_0x12351c){var _0x2d1947=_0x386c63||_0x12351c;if(_0x2d1947){return handleError(_0x28c8db,0x191,_0x2d1947);}if(!_0x525a4d){return handleError(_0x28c8db,0x194,{'message':_0xbb65('0x35')});}else{var _0x11cef0={'payload':{'id':_0x525a4d['id'],'role':_0x525a4d['role']},'options':{'expiresIn':0x15180}};return authService[_0xbb65('0x36')](_0x11cef0)[_0xbb65('0x10')](function(_0x3c5897){_0x28c8db[_0xbb65('0x37')]({'id':_0x525a4d['id'],'token':_0x3c5897,'statusCall':'','isAlreadyLogged':_0x525a4d['online']});});}})(_0x32ee32,_0x28c8db,_0x369673);};exports[_0xbb65('0x38')]=function(_0x1af15c,_0x1eebea){if(!_0x1af15c[_0xbb65('0x39')][_0xbb65('0x24')]){return handleError(_0x1eebea,0x1f4,{'message':_0xbb65('0x3a')});}var _0x2bc27f=rs[_0xbb65('0x3b')]();_0x1af15c[_0xbb65('0x39')]['email']=_0x1af15c[_0xbb65('0x39')][_0xbb65('0x24')]['trim']()[_0xbb65('0x3c')]();var _0x2c4a88;return db[_0xbb65('0xc')]['findOne']({'where':{'id':0x1},'attributes':[_0xbb65('0xe'),_0xbb65('0xf')],'raw':!![]})[_0xbb65('0x10')](function(_0x10564e){_0x2c4a88=_0x10564e;return db['User']['find']({'where':{'email':_0x1af15c[_0xbb65('0x39')][_0xbb65('0x24')]}});})[_0xbb65('0x10')](function(_0x53fbd4){if(!_0x53fbd4){throw new Error(_0xbb65('0x3d'));}if(_0x53fbd4[_0xbb65('0x13')]){throw new Error(_0xbb65('0x3e'));}if(_0x53fbd4['blocked']){if(moment(_0x53fbd4[_0xbb65('0x15')])[_0xbb65('0x1d')](_0x2c4a88[_0xbb65('0xf')],'minutes')>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x53fbd4['blocked']=![];_0x53fbd4[_0xbb65('0x15')]=null;}}_0x53fbd4[_0xbb65('0x3f')]=_0x2bc27f;_0x53fbd4[_0xbb65('0x40')]=Date[_0xbb65('0x41')]()+0x36ee80;return _0x53fbd4[_0xbb65('0x42')]();})[_0xbb65('0x10')](function(){return sendServiceMail({'to':_0x1af15c[_0xbb65('0x39')][_0xbb65('0x24')],'subject':'xCally\x20Motion\x20Password\x20Reset','text':'You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a'+'Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'+_0xbb65('0x43')+_0x1af15c[_0xbb65('0x44')][_0xbb65('0x45')]+_0xbb65('0x46')+_0x2bc27f+'\x0a\x0a'+_0xbb65('0x47')});})[_0xbb65('0x10')](function(){_0x1eebea[_0xbb65('0x31')](0xc8)[_0xbb65('0x32')]({'message':_0xbb65('0x48')});})[_0xbb65('0x21')](function(_0x238164){return handleError(_0x1eebea,0x1f4,_0x238164);});};exports[_0xbb65('0x49')]=function(_0x2e76c9,_0x191a11){return db['User']['find']({'where':{'resetPasswordToken':_0x2e76c9[_0xbb65('0x4a')][_0xbb65('0x4b')],'resetPasswordExpires':{'$gt':Date[_0xbb65('0x41')]()}}})[_0xbb65('0x10')](function(_0x3567ad){if(!_0x3567ad){throw new Error(_0xbb65('0x4c'));}return db[_0xbb65('0xc')][_0xbb65('0xd')]({'attributes':['id','securePassword',_0xbb65('0x4d'),'passwordHistoryLimit']})[_0xbb65('0x10')](function(_0x26af3d){if(_0x26af3d[_0xbb65('0x4e')])authService[_0xbb65('0x4f')](_0x2e76c9[_0xbb65('0x39')][_0xbb65('0x11')]);if(!_0x26af3d['enforcePasswordHistory']||!_0x3567ad[_0xbb65('0x50')])return _0x3567ad;authService[_0xbb65('0x51')](_0x2e76c9[_0xbb65('0x39')]['password'],_0x3567ad[_0xbb65('0x50')],_0x26af3d[_0xbb65('0x52')]);return _0x3567ad;})['then'](function(){_0x3567ad[_0xbb65('0x11')]=_0x2e76c9[_0xbb65('0x39')][_0xbb65('0x11')];_0x3567ad[_0xbb65('0x3f')]=null;_0x3567ad[_0xbb65('0x40')]=null;return _0x3567ad[_0xbb65('0x42')]();});})[_0xbb65('0x10')](function(){_0x191a11[_0xbb65('0x31')](0xc8)[_0xbb65('0x32')]({'message':_0xbb65('0x53')});})[_0xbb65('0x21')](function(_0x1e470d){return handleError(_0x191a11,0x1f4,_0x1e470d);});};passport[_0xbb65('0x54')]('local-login',new LocalStrategy({'usernameField':_0xbb65('0x1a'),'passwordField':'password'},function(_0x25c4d4,_0x5b9699,_0x150785){return localAuthenticate(db['User'],_0x25c4d4,_0x5b9699,_0x150785);}));
\ No newline at end of file
+var _0xd4fd=['blockDuration','name','password','salt','role','blockedAt','loginAttempts','admin','user','agent','then','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','blocked','add','minutes','clearBlockUser','disabled','getLicense','catch','MailAccount','email','MailServerOut','Smtp','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','merge','format','request','SendMail','error','message','stringify','status','send','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','User','find','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','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','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','token','now','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','resetPasswordExpires','Password\x20reset!','use','util','passport-local','Strategy','jayson/promise','lodash','randomstring','moment','../../components/auth/service','../../config/utils','client','http','Setting','findOne','allowedLoginAttempts'];(function(_0x94c69d,_0x3699c4){var _0x2ce86f=function(_0x230b37){while(--_0x230b37){_0x94c69d['push'](_0x94c69d['shift']());}};_0x2ce86f(++_0x3699c4);}(_0xd4fd,0x92));var _0xdd4f=function(_0x321ef5,_0x28f743){_0x321ef5=_0x321ef5-0x0;var _0x1f32b1=_0xd4fd[_0x321ef5];return _0x1f32b1;};'use strict';var util=require(_0xdd4f('0x0'));var passport=require('passport');var LocalStrategy=require(_0xdd4f('0x1'))[_0xdd4f('0x2')];var jayson=require(_0xdd4f('0x3'));var _=require(_0xdd4f('0x4'));var rs=require(_0xdd4f('0x5'));var moment=require(_0xdd4f('0x6'));var db=require('../../mysqldb')['db'];var authService=require(_0xdd4f('0x7'));var utils=require(_0xdd4f('0x8'));var client=jayson[_0xdd4f('0x9')][_0xdd4f('0xa')]({'port':0x232b});function localAuthenticate(_0x5665f5,_0x242f23,_0x40cad5,_0x4dc394){var _0x57959b,_0x19fa76;return db[_0xdd4f('0xb')][_0xdd4f('0xc')]({'where':{'id':0x1},'attributes':[_0xdd4f('0xd'),_0xdd4f('0xe')],'raw':!![]})['then'](function(_0xe4550){_0x57959b=_0xe4550;return _0x5665f5[_0xdd4f('0xc')]({'attributes':['id',_0xdd4f('0xf'),_0xdd4f('0x10'),_0xdd4f('0x11'),_0xdd4f('0x12'),'disabled','blocked',_0xdd4f('0x13'),_0xdd4f('0x14')],'where':{'name':_0x242f23,'role':{'$or':[_0xdd4f('0x15'),_0xdd4f('0x16'),_0xdd4f('0x17')]}}});})[_0xdd4f('0x18')](function(_0x1c75fd){if(!_0x1c75fd||_0x1c75fd&&_0x1c75fd[_0xdd4f('0xf')]!==_0x242f23){throw new Error(_0xdd4f('0x19'));}else{_0x19fa76=_0x1c75fd;return _0x19fa76;}})['then'](function(){_0x19fa76[_0xdd4f('0x1a')](_0x40cad5,function(_0x27fa02,_0x3773d6){var _0x2582d0=_0x19fa76[_0xdd4f('0x14')]+0x1;if(_0x27fa02){return _0x4dc394(_0x27fa02);}else if(!_0x3773d6){if(_0x19fa76['disabled']){return _0x4dc394(null,![],{'message':_0xdd4f('0x19')});}else if(_0x57959b[_0xdd4f('0xd')]>0x0){if(_0x19fa76[_0xdd4f('0x1b')]){if(_0x57959b[_0xdd4f('0xe')]>0x0){if(moment(_0x19fa76['blockedAt'])[_0xdd4f('0x1c')](_0x57959b[_0xdd4f('0xe')],_0xdd4f('0x1d'))>moment()){return _0x4dc394(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xdd4f('0x1e')](_0x19fa76,_0x2582d0,![],null)['then'](function(){return _0x4dc394(null,![],{'message':_0xdd4f('0x19')});});}}else{return _0x4dc394(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0x2582d0>=_0x57959b[_0xdd4f('0xd')]){return utils['clearBlockUser'](_0x19fa76,0x0,!![],moment())[_0xdd4f('0x18')](function(){return _0x4dc394(null,![],{'message':_0xdd4f('0x19')});});}else{return utils[_0xdd4f('0x1e')](_0x19fa76,_0x2582d0,![],null)[_0xdd4f('0x18')](function(){return _0x4dc394(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x4dc394(null,![],{'message':_0xdd4f('0x19')});}}else{if(_0x19fa76[_0xdd4f('0x1f')]){return _0x4dc394(null,![],{'message':_0xdd4f('0x19')});}else if(_0x57959b[_0xdd4f('0xd')]>0x0){if(_0x19fa76[_0xdd4f('0x1b')]){if(_0x57959b['blockDuration']>0x0){if(moment(_0x19fa76[_0xdd4f('0x13')])['add'](_0x57959b[_0xdd4f('0xe')],_0xdd4f('0x1d'))>moment()){return _0x4dc394(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xdd4f('0x1e')](_0x19fa76,0x0,![],null)[_0xdd4f('0x18')](function(){return utils['getLicense'](_0x19fa76);})[_0xdd4f('0x18')](function(){return _0x4dc394(null,_0x19fa76);});}}else{return _0x4dc394(null,![],{'message':_0xdd4f('0x19')});}}else{return utils[_0xdd4f('0x1e')](_0x19fa76,0x0,![],null)['then'](function(){return utils['getLicense'](_0x19fa76);})[_0xdd4f('0x18')](function(){return _0x4dc394(null,_0x19fa76);})['catch'](function(_0xc9f0cd){return _0x4dc394(null,![],_0xc9f0cd);});}}else{if(_0x19fa76[_0xdd4f('0x1b')]){return _0x4dc394(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0xdd4f('0x20')](_0x19fa76)['then'](function(){return _0x4dc394(null,_0x19fa76);});}}}});})[_0xdd4f('0x21')](function(_0x32d7ac){return _0x4dc394(null,![],_0x32d7ac);});}function sendServiceMail(_0xc69e29){return db[_0xdd4f('0x22')]['find']({'where':{'service':!![]},'attributes':['id',_0xdd4f('0xf'),_0xdd4f('0x23')],'include':[{'model':db[_0xdd4f('0x24')],'as':_0xdd4f('0x25'),'include':[{'model':db[_0xdd4f('0x26')],'as':_0xdd4f('0x26')}]}]})[_0xdd4f('0x18')](function(_0x8313b2){if(!_0x8313b2){throw new Error(_0xdd4f('0x27'));}var _0x1346c3=_0x8313b2['getSmtpOptions']();var _0x2bca3d={'account':_0x1346c3,'message':_[_0xdd4f('0x28')]({'from':util[_0xdd4f('0x29')]('\x22%s\x22\x20<%s>',_0x8313b2[_0xdd4f('0xf')],_0x8313b2['email']||_0x8313b2[_0xdd4f('0x25')][_0xdd4f('0x16')])},_0xc69e29)};return client[_0xdd4f('0x2a')](_0xdd4f('0x2b'),_0x2bca3d);})[_0xdd4f('0x18')](function(_0x15a68b){if(_0x15a68b['error']){throw new Error(util['format']('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x15a68b[_0xdd4f('0x2c')][_0xdd4f('0x2d')]||JSON[_0xdd4f('0x2e')](_0x15a68b['error'])));}return!![];});}function handleError(_0x43392a,_0x4ab82d,_0x53b3b6){return _0x43392a[_0xdd4f('0x2f')](_0x4ab82d||0x1f4)[_0xdd4f('0x30')]({'message':_0x53b3b6?_0x53b3b6[_0xdd4f('0x2d')]||_0x53b3b6:''});}exports[_0xdd4f('0x31')]=function(_0x3ea401,_0x256720,_0x5ef4d7){passport[_0xdd4f('0x1a')]('local-login',function(_0x2cfa13,_0x47a013,_0x2bbc8a){var _0x5b8d0e=_0x2cfa13||_0x2bbc8a;if(_0x5b8d0e){return handleError(_0x256720,0x191,_0x5b8d0e);}if(!_0x47a013){return handleError(_0x256720,0x194,{'message':_0xdd4f('0x32')});}else{var _0x10cc03={'payload':{'id':_0x47a013['id'],'role':_0x47a013[_0xdd4f('0x12')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x10cc03)['then'](function(_0x38b577){_0x256720['json']({'id':_0x47a013['id'],'token':_0x38b577,'statusCall':'','isAlreadyLogged':_0x47a013[_0xdd4f('0x33')]});});}})(_0x3ea401,_0x256720,_0x5ef4d7);};exports[_0xdd4f('0x34')]=function(_0xc11edf,_0x3a0120){if(!_0xc11edf[_0xdd4f('0x35')]['email']){return handleError(_0x3a0120,0x1f4,{'message':_0xdd4f('0x36')});}var _0x2c7cf2=rs[_0xdd4f('0x37')]();_0xc11edf[_0xdd4f('0x35')]['email']=_0xc11edf['body'][_0xdd4f('0x23')][_0xdd4f('0x38')]()[_0xdd4f('0x39')]();var _0x5a1be4;return db[_0xdd4f('0xb')][_0xdd4f('0xc')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xdd4f('0xe')],'raw':!![]})[_0xdd4f('0x18')](function(_0x2dff4e){_0x5a1be4=_0x2dff4e;return db[_0xdd4f('0x3a')][_0xdd4f('0x3b')]({'where':{'email':_0xc11edf[_0xdd4f('0x35')][_0xdd4f('0x23')]}});})[_0xdd4f('0x18')](function(_0x5ed586){if(!_0x5ed586){throw new Error(_0xdd4f('0x3c'));}if(_0x5ed586['disabled']){throw new Error(_0xdd4f('0x3d'));}if(_0x5ed586['blocked']){if(moment(_0x5ed586[_0xdd4f('0x13')])[_0xdd4f('0x1c')](_0x5a1be4['blockDuration'],_0xdd4f('0x1d'))>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x5ed586['blocked']=![];_0x5ed586[_0xdd4f('0x13')]=null;}}_0x5ed586[_0xdd4f('0x3e')]=_0x2c7cf2;_0x5ed586['resetPasswordExpires']=Date['now']()+0x36ee80;return _0x5ed586[_0xdd4f('0x3f')]();})['then'](function(){return sendServiceMail({'to':_0xc11edf[_0xdd4f('0x35')]['email'],'subject':_0xdd4f('0x40'),'text':_0xdd4f('0x41')+_0xdd4f('0x42')+'https://'+_0xc11edf['headers']['host']+_0xdd4f('0x43')+_0x2c7cf2+'\x0a\x0a'+_0xdd4f('0x44')});})[_0xdd4f('0x18')](function(){_0x3a0120[_0xdd4f('0x2f')](0xc8)[_0xdd4f('0x30')]({'message':'Reset\x20Email\x20sent!'});})[_0xdd4f('0x21')](function(_0x34f53e){return handleError(_0x3a0120,0x1f4,_0x34f53e);});};exports['reset']=function(_0x3825c7,_0x2c1d92){return db[_0xdd4f('0x3a')][_0xdd4f('0x3b')]({'where':{'resetPasswordToken':_0x3825c7['params'][_0xdd4f('0x45')],'resetPasswordExpires':{'$gt':Date[_0xdd4f('0x46')]()}}})[_0xdd4f('0x18')](function(_0x145d7c){if(!_0x145d7c){throw new Error(_0xdd4f('0x47'));}return db[_0xdd4f('0xb')][_0xdd4f('0xc')]({'attributes':['id',_0xdd4f('0x48'),_0xdd4f('0x49'),_0xdd4f('0x4a')]})[_0xdd4f('0x18')](function(_0x18c74c){if(_0x18c74c['securePassword'])authService[_0xdd4f('0x4b')](_0x3825c7[_0xdd4f('0x35')][_0xdd4f('0x10')]);if(!_0x18c74c[_0xdd4f('0x49')]||!_0x145d7c['previousPasswords'])return _0x145d7c;authService['validatePasswordHistory'](_0x3825c7[_0xdd4f('0x35')][_0xdd4f('0x10')],_0x145d7c[_0xdd4f('0x4c')],_0x18c74c[_0xdd4f('0x4a')]);return _0x145d7c;})[_0xdd4f('0x18')](function(){_0x145d7c[_0xdd4f('0x10')]=_0x3825c7[_0xdd4f('0x35')][_0xdd4f('0x10')];_0x145d7c['resetPasswordToken']=null;_0x145d7c[_0xdd4f('0x4d')]=null;return _0x145d7c[_0xdd4f('0x3f')]();});})[_0xdd4f('0x18')](function(){_0x2c1d92['status'](0xc8)[_0xdd4f('0x30')]({'message':_0xdd4f('0x4e')});})[_0xdd4f('0x21')](function(_0x2cef00){return handleError(_0x2c1d92,0x1f4,_0x2cef00);});};passport[_0xdd4f('0x4f')]('local-login',new LocalStrategy({'usernameField':'name','passwordField':_0xdd4f('0x10')},function(_0x41672b,_0x55e601,_0x52a434){return localAuthenticate(db[_0xdd4f('0x3a')],_0x41672b,_0x55e601,_0x52a434);}));
\ No newline at end of file
index d29c193..fde7a15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x846a=['Router','./authLocal.controller','post','login','/forgot','forgot','/reset/:token','reset','exports','express'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x846a,0x185));var _0xa846=function(_0x4f1802,_0x1613d2){_0x4f1802=_0x4f1802-0x0;var _0x906479=_0x846a[_0x4f1802];return _0x906479;};'use strict';var express=require(_0xa846('0x0'));var router=express[_0xa846('0x1')]();var controller=require(_0xa846('0x2'));router[_0xa846('0x3')]('/',controller[_0xa846('0x4')]);router[_0xa846('0x3')](_0xa846('0x5'),controller[_0xa846('0x6')]);router[_0xa846('0x3')](_0xa846('0x7'),controller[_0xa846('0x8')]);module[_0xa846('0x9')]=router;
\ No newline at end of file
+var _0x3ff0=['express','Router','./authLocal.controller','login','post','/forgot','reset','exports'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x3ff0,0xa8));var _0x03ff=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0x3ff0[_0x30ae5e];return _0x1f2e93;};'use strict';var express=require(_0x03ff('0x0'));var router=express[_0x03ff('0x1')]();var controller=require(_0x03ff('0x2'));router['post']('/',controller[_0x03ff('0x3')]);router[_0x03ff('0x4')](_0x03ff('0x5'),controller['forgot']);router[_0x03ff('0x4')]('/reset/:token',controller[_0x03ff('0x6')]);module[_0x03ff('0x7')]=router;
\ No newline at end of file
index 9515afa..0c536dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa661=['exports','STRING','BOOLEAN','INTEGER'];(function(_0x2e1a7e,_0x3fdc3b){var _0x212930=function(_0x2e469a){while(--_0x2e469a){_0x2e1a7e['push'](_0x2e1a7e['shift']());}};_0x212930(++_0x3fdc3b);}(_0xa661,0x1c4));var _0x1a66=function(_0x27ba9b,_0x570bb6){_0x27ba9b=_0x27ba9b-0x0;var _0x32b62c=_0xa661[_0x27ba9b];return _0x32b62c;};'use strict';var Sequelize=require('sequelize');module[_0x1a66('0x0')]={'name':{'type':Sequelize[_0x1a66('0x1')],'allowNull':![]},'channel':{'type':Sequelize[_0x1a66('0x1')]},'description':{'type':Sequelize[_0x1a66('0x1')]},'status':{'type':Sequelize[_0x1a66('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x1a66('0x3')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x4c6b=['STRING','INTEGER','sequelize','exports'];(function(_0x638ed2,_0x15f1cd){var _0x212275=function(_0x5c708a){while(--_0x5c708a){_0x638ed2['push'](_0x638ed2['shift']());}};_0x212275(++_0x15f1cd);}(_0x4c6b,0x146));var _0xb4c6=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0x4c6b[_0x2d2c16];return _0x53f2fb;};'use strict';var Sequelize=require(_0xb4c6('0x0'));module[_0xb4c6('0x1')]={'name':{'type':Sequelize[_0xb4c6('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0xb4c6('0x2')]},'description':{'type':Sequelize[_0xb4c6('0x2')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timeout':{'type':Sequelize[_0xb4c6('0x3')],'defaultValue':0xa}};
\ No newline at end of file
index 8e86fa6..b40daa5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x740b=['status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','update','then','destroy','name','send','index','map','Automation','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','params','rawAttributes','length','catch','create','body','addConditions','Condition','find','ids','omit','findOne','order','getConditions','nolimit','addActions','Action','getActions','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','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x99f14d,_0x1ccfe9){var _0x254c9e=function(_0x57afbd){while(--_0x57afbd){_0x99f14d['push'](_0x99f14d['shift']());}};_0x254c9e(++_0x1ccfe9);}(_0x740b,0x197));var _0xb740=function(_0x21a848,_0x5ce41a){_0x21a848=_0x21a848-0x0;var _0x5aaf99=_0x740b[_0x21a848];return _0x5aaf99;};'use strict';var emlformat=require(_0xb740('0x0'));var rimraf=require(_0xb740('0x1'));var zipdir=require(_0xb740('0x2'));var jsonpatch=require(_0xb740('0x3'));var rp=require(_0xb740('0x4'));var moment=require('moment');var BPromise=require(_0xb740('0x5'));var Mustache=require(_0xb740('0x6'));var util=require('util');var path=require(_0xb740('0x7'));var sox=require(_0xb740('0x8'));var csv=require(_0xb740('0x9'));var ejs=require(_0xb740('0xa'));var fs=require('fs');var fs_extra=require(_0xb740('0xb'));var _=require(_0xb740('0xc'));var squel=require(_0xb740('0xd'));var crypto=require(_0xb740('0xe'));var jsforce=require(_0xb740('0xf'));var deskjs=require(_0xb740('0x10'));var toCsv=require(_0xb740('0x9'));var querystring=require('querystring');var Papa=require(_0xb740('0x11'));var Redis=require('ioredis');var authService=require(_0xb740('0x12'));var qs=require(_0xb740('0x13'));var as=require(_0xb740('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb740('0x15'))(_0xb740('0x16'));var utils=require(_0xb740('0x17'));var config=require(_0xb740('0x18'));var licenseUtil=require(_0xb740('0x19'));var db=require(_0xb740('0x1a'))['db'];function respondWithStatusCode(_0x340c93,_0x3e7acc){_0x3e7acc=_0x3e7acc||0xcc;return function(_0x49c24d){if(_0x49c24d){return _0x340c93[_0xb740('0x1b')](_0x3e7acc);}return _0x340c93[_0xb740('0x1c')](_0x3e7acc)[_0xb740('0x1d')]();};}function respondWithResult(_0x374ee2,_0xc80d40){_0xc80d40=_0xc80d40||0xc8;return function(_0x1be96e){if(_0x1be96e){return _0x374ee2[_0xb740('0x1c')](_0xc80d40)['json'](_0x1be96e);}};}function respondWithFilteredResult(_0x310b3d,_0x421317){return function(_0x49964){if(_0x49964){var _0x186b52=typeof _0x421317['offset']===_0xb740('0x1e')&&typeof _0x421317[_0xb740('0x1f')]===_0xb740('0x1e');var _0x382ba9=_0x49964[_0xb740('0x20')];var _0x3e2424=_0x186b52?0x0:_0x421317[_0xb740('0x21')];var _0x1da382=_0x186b52?_0x49964[_0xb740('0x20')]:_0x421317[_0xb740('0x21')]+_0x421317[_0xb740('0x1f')];var _0xb726e9;if(_0x1da382>=_0x382ba9){_0x1da382=_0x382ba9;_0xb726e9=0xc8;}else{_0xb726e9=0xce;}_0x310b3d[_0xb740('0x1c')](_0xb726e9);return _0x310b3d[_0xb740('0x22')](_0xb740('0x23'),_0x3e2424+'-'+_0x1da382+'/'+_0x382ba9)[_0xb740('0x24')](_0x49964);}return null;};}function patchUpdates(_0x96f142){return function(_0x5dd890){try{jsonpatch[_0xb740('0x25')](_0x5dd890,_0x96f142,!![]);}catch(_0x31fac8){return BPromise[_0xb740('0x26')](_0x31fac8);}return _0x5dd890['save']();};}function saveUpdates(_0x16d753,_0x9b6fe2){return function(_0x747ba3){if(_0x747ba3){return _0x747ba3[_0xb740('0x27')](_0x16d753)[_0xb740('0x28')](function(_0x2bcb77){return _0x2bcb77;});}return null;};}function removeEntity(_0x2639e6,_0x22de63){return function(_0x10597a){if(_0x10597a){return _0x10597a[_0xb740('0x29')]()[_0xb740('0x28')](function(){_0x2639e6[_0xb740('0x1c')](0xcc)[_0xb740('0x1d')]();});}};}function handleEntityNotFound(_0x3cf94a,_0x444078){return function(_0x5c1b95){if(!_0x5c1b95){_0x3cf94a[_0xb740('0x1b')](0x194);}return _0x5c1b95;};}function handleError(_0xe70625,_0x207761){_0x207761=_0x207761||0x1f4;return function(_0x4d1260){logger['error'](_0x4d1260['stack']);if(_0x4d1260[_0xb740('0x2a')]){delete _0x4d1260[_0xb740('0x2a')];}_0xe70625[_0xb740('0x1c')](_0x207761)[_0xb740('0x2b')](_0x4d1260);};}exports[_0xb740('0x2c')]=function(_0x2b852b,_0x511310){var _0x4bc3d3={},_0x48c050={},_0x80389b={'count':0x0,'rows':[]};var _0x537d88=_[_0xb740('0x2d')](db[_0xb740('0x2e')]['rawAttributes'],function(_0x1e0384){return{'name':_0x1e0384[_0xb740('0x2f')],'type':_0x1e0384[_0xb740('0x30')][_0xb740('0x31')]};});_0x48c050[_0xb740('0x32')]=_[_0xb740('0x2d')](_0x537d88,_0xb740('0x2a'));_0x48c050['query']=_[_0xb740('0x33')](_0x2b852b[_0xb740('0x34')]);_0x48c050[_0xb740('0x35')]=_[_0xb740('0x36')](_0x48c050[_0xb740('0x32')],_0x48c050[_0xb740('0x34')]);_0x4bc3d3[_0xb740('0x37')]=_[_0xb740('0x36')](_0x48c050['model'],qs[_0xb740('0x38')](_0x2b852b['query'][_0xb740('0x38')]));_0x4bc3d3[_0xb740('0x37')]=_0x4bc3d3[_0xb740('0x37')]['length']?_0x4bc3d3[_0xb740('0x37')]:_0x48c050[_0xb740('0x32')];if(!_0x2b852b[_0xb740('0x34')][_0xb740('0x39')]('nolimit')){_0x4bc3d3['limit']=qs[_0xb740('0x1f')](_0x2b852b[_0xb740('0x34')][_0xb740('0x1f')]);_0x4bc3d3[_0xb740('0x21')]=qs[_0xb740('0x21')](_0x2b852b[_0xb740('0x34')][_0xb740('0x21')]);}_0x4bc3d3['order']=qs[_0xb740('0x3a')](_0x2b852b[_0xb740('0x34')][_0xb740('0x3a')]);_0x4bc3d3[_0xb740('0x3b')]=qs[_0xb740('0x35')](_[_0xb740('0x3c')](_0x2b852b[_0xb740('0x34')],_0x48c050[_0xb740('0x35')]),_0x537d88);if(_0x2b852b[_0xb740('0x34')][_0xb740('0x3d')]){_0x4bc3d3['where']=_['merge'](_0x4bc3d3[_0xb740('0x3b')],{'$or':_[_0xb740('0x2d')](_0x537d88,function(_0x50a75b){if(_0x50a75b[_0xb740('0x30')]!=='VIRTUAL'){var _0x2cadb4={};_0x2cadb4[_0x50a75b[_0xb740('0x2a')]]={'$like':'%'+_0x2b852b[_0xb740('0x34')][_0xb740('0x3d')]+'%'};return _0x2cadb4;}})});}_0x4bc3d3=_[_0xb740('0x3e')]({},_0x4bc3d3,_0x2b852b[_0xb740('0x3f')]);var _0x2f9b70={'where':_0x4bc3d3[_0xb740('0x3b')]};return db[_0xb740('0x2e')][_0xb740('0x20')](_0x2f9b70)[_0xb740('0x28')](function(_0x3cac42){_0x80389b[_0xb740('0x20')]=_0x3cac42;if(_0x2b852b[_0xb740('0x34')][_0xb740('0x40')]){_0x4bc3d3[_0xb740('0x41')]=[{'all':!![]}];}return db[_0xb740('0x2e')][_0xb740('0x42')](_0x4bc3d3);})[_0xb740('0x28')](function(_0x27bc61){_0x80389b[_0xb740('0x43')]=_0x27bc61;return _0x80389b;})[_0xb740('0x28')](respondWithFilteredResult(_0x511310,_0x4bc3d3))['catch'](handleError(_0x511310,null));};exports[_0xb740('0x44')]=function(_0x168e38,_0x31231a){var _0x2ae63d={'raw':![],'where':{'id':_0x168e38[_0xb740('0x45')]['id']}},_0x2eaf96={};_0x2eaf96[_0xb740('0x32')]=_[_0xb740('0x33')](db[_0xb740('0x2e')][_0xb740('0x46')]);_0x2eaf96[_0xb740('0x34')]=_[_0xb740('0x33')](_0x168e38[_0xb740('0x34')]);_0x2eaf96['filters']=_[_0xb740('0x36')](_0x2eaf96['model'],_0x2eaf96[_0xb740('0x34')]);_0x2ae63d[_0xb740('0x37')]=_[_0xb740('0x36')](_0x2eaf96[_0xb740('0x32')],qs[_0xb740('0x38')](_0x168e38[_0xb740('0x34')][_0xb740('0x38')]));_0x2ae63d[_0xb740('0x37')]=_0x2ae63d['attributes'][_0xb740('0x47')]?_0x2ae63d[_0xb740('0x37')]:_0x2eaf96[_0xb740('0x32')];if(_0x168e38[_0xb740('0x34')][_0xb740('0x40')]){_0x2ae63d[_0xb740('0x41')]=[{'all':!![]}];}_0x2ae63d=_[_0xb740('0x3e')]({},_0x2ae63d,_0x168e38[_0xb740('0x3f')]);return db['Automation']['find'](_0x2ae63d)[_0xb740('0x28')](handleEntityNotFound(_0x31231a,null))[_0xb740('0x28')](respondWithResult(_0x31231a,null))[_0xb740('0x48')](handleError(_0x31231a,null));};exports[_0xb740('0x49')]=function(_0x529e04,_0x13d7cf){return db[_0xb740('0x2e')][_0xb740('0x49')](_0x529e04['body'],{})[_0xb740('0x28')](respondWithResult(_0x13d7cf,0xc9))[_0xb740('0x48')](handleError(_0x13d7cf,null));};exports[_0xb740('0x27')]=function(_0x5dd762,_0x42ddd5){if(_0x5dd762[_0xb740('0x4a')]['id']){delete _0x5dd762[_0xb740('0x4a')]['id'];}return db['Automation']['find']({'where':{'id':_0x5dd762['params']['id']}})['then'](handleEntityNotFound(_0x42ddd5,null))[_0xb740('0x28')](saveUpdates(_0x5dd762[_0xb740('0x4a')],null))['then'](respondWithResult(_0x42ddd5,null))[_0xb740('0x48')](handleError(_0x42ddd5,null));};exports[_0xb740('0x29')]=function(_0x3b74a2,_0x38a82e){return db[_0xb740('0x2e')]['find']({'where':{'id':_0x3b74a2[_0xb740('0x45')]['id']}})['then'](handleEntityNotFound(_0x38a82e,null))[_0xb740('0x28')](removeEntity(_0x38a82e,null))[_0xb740('0x48')](handleError(_0x38a82e,null));};exports[_0xb740('0x4b')]=function(_0x1e587b,_0x477f5e,_0x2749a3){return db[_0xb740('0x4c')][_0xb740('0x4d')]({'where':{'id':_0x1e587b['params']['id']}})[_0xb740('0x28')](handleEntityNotFound(_0x477f5e,null))['then'](function(_0x57ce1f){if(_0x57ce1f){return _0x57ce1f[_0xb740('0x4b')](_0x1e587b[_0xb740('0x4a')][_0xb740('0x4e')],_[_0xb740('0x4f')](_0x1e587b[_0xb740('0x4a')],['ids','id'])||{});}})[_0xb740('0x28')](respondWithResult(_0x477f5e,null))[_0xb740('0x48')](handleError(_0x477f5e,null));};exports['getConditions']=function(_0x564376,_0x4c617e,_0x11e8bb){var _0x11ce88={};var _0x3f4c42={};var _0x173dc;var _0x1730a8;return db[_0xb740('0x2e')][_0xb740('0x50')]({'where':{'id':_0x564376[_0xb740('0x45')]['id']}})[_0xb740('0x28')](handleEntityNotFound(_0x4c617e,null))[_0xb740('0x28')](function(_0x36a920){if(_0x36a920){_0x173dc=_0x36a920;_0x3f4c42[_0xb740('0x32')]=_[_0xb740('0x33')](db[_0xb740('0x4c')]['rawAttributes']);_0x3f4c42[_0xb740('0x34')]=_[_0xb740('0x33')](_0x564376['query']);_0x3f4c42[_0xb740('0x35')]=_['intersection'](_0x3f4c42[_0xb740('0x32')],_0x3f4c42['query']);_0x11ce88[_0xb740('0x37')]=_['intersection'](_0x3f4c42[_0xb740('0x32')],qs[_0xb740('0x38')](_0x564376[_0xb740('0x34')][_0xb740('0x38')]));_0x11ce88[_0xb740('0x37')]=_0x11ce88[_0xb740('0x37')]['length']?_0x11ce88[_0xb740('0x37')]:_0x3f4c42[_0xb740('0x32')];_0x11ce88[_0xb740('0x51')]=qs[_0xb740('0x3a')](_0x564376[_0xb740('0x34')][_0xb740('0x3a')]);_0x11ce88[_0xb740('0x3b')]=qs[_0xb740('0x35')](_[_0xb740('0x3c')](_0x564376[_0xb740('0x34')],_0x3f4c42['filters']));if(_0x564376[_0xb740('0x34')][_0xb740('0x3d')]){_0x11ce88[_0xb740('0x3b')]=_['merge'](_0x11ce88[_0xb740('0x3b')],{'$or':_['map'](_0x11ce88['attributes'],function(_0x5012c0){var _0x25601f={};_0x25601f[_0x5012c0]={'$like':'%'+_0x564376[_0xb740('0x34')][_0xb740('0x3d')]+'%'};return _0x25601f;})});}_0x11ce88=_[_0xb740('0x3e')]({},_0x11ce88,_0x564376[_0xb740('0x3f')]);return _0x173dc[_0xb740('0x52')](_0x11ce88);}})[_0xb740('0x28')](function(_0x501891){if(_0x501891){_0x1730a8=_0x501891[_0xb740('0x47')];if(!_0x564376['query']['hasOwnProperty'](_0xb740('0x53'))){_0x11ce88[_0xb740('0x1f')]=qs[_0xb740('0x1f')](_0x564376[_0xb740('0x34')][_0xb740('0x1f')]);_0x11ce88['offset']=qs['offset'](_0x564376[_0xb740('0x34')]['offset']);}return _0x173dc[_0xb740('0x52')](_0x11ce88);}})['then'](function(_0x172b8a){if(_0x172b8a){return _0x172b8a?{'count':_0x1730a8,'rows':_0x172b8a}:null;}})[_0xb740('0x28')](respondWithResult(_0x4c617e,null))[_0xb740('0x48')](handleError(_0x4c617e,null));};exports[_0xb740('0x54')]=function(_0xee8fab,_0x154d24,_0x5207d2){return db[_0xb740('0x55')][_0xb740('0x4d')]({'where':{'id':_0xee8fab[_0xb740('0x45')]['id']}})[_0xb740('0x28')](handleEntityNotFound(_0x154d24,null))['then'](function(_0x3cdcac){if(_0x3cdcac){return _0x3cdcac['addActions'](_0xee8fab[_0xb740('0x4a')][_0xb740('0x4e')],_[_0xb740('0x4f')](_0xee8fab[_0xb740('0x4a')],[_0xb740('0x4e'),'id'])||{});}})[_0xb740('0x28')](respondWithResult(_0x154d24,null))[_0xb740('0x48')](handleError(_0x154d24,null));};exports[_0xb740('0x56')]=function(_0xdfea90,_0x19fe5f,_0x316b08){var _0x5f30da={};var _0x4fa827={};var _0x3dc727;var _0x85a922;return db[_0xb740('0x2e')][_0xb740('0x50')]({'where':{'id':_0xdfea90[_0xb740('0x45')]['id']}})[_0xb740('0x28')](handleEntityNotFound(_0x19fe5f,null))[_0xb740('0x28')](function(_0x4d985d){if(_0x4d985d){_0x3dc727=_0x4d985d;_0x4fa827[_0xb740('0x32')]=_['keys'](db[_0xb740('0x55')][_0xb740('0x46')]);_0x4fa827[_0xb740('0x34')]=_['keys'](_0xdfea90[_0xb740('0x34')]);_0x4fa827[_0xb740('0x35')]=_['intersection'](_0x4fa827['model'],_0x4fa827[_0xb740('0x34')]);_0x5f30da[_0xb740('0x37')]=_['intersection'](_0x4fa827[_0xb740('0x32')],qs[_0xb740('0x38')](_0xdfea90[_0xb740('0x34')][_0xb740('0x38')]));_0x5f30da['attributes']=_0x5f30da[_0xb740('0x37')][_0xb740('0x47')]?_0x5f30da[_0xb740('0x37')]:_0x4fa827['model'];_0x5f30da[_0xb740('0x51')]=qs[_0xb740('0x3a')](_0xdfea90[_0xb740('0x34')][_0xb740('0x3a')]);_0x5f30da[_0xb740('0x3b')]=qs[_0xb740('0x35')](_[_0xb740('0x3c')](_0xdfea90[_0xb740('0x34')],_0x4fa827[_0xb740('0x35')]));if(_0xdfea90[_0xb740('0x34')][_0xb740('0x3d')]){_0x5f30da[_0xb740('0x3b')]=_[_0xb740('0x3e')](_0x5f30da[_0xb740('0x3b')],{'$or':_[_0xb740('0x2d')](_0x5f30da[_0xb740('0x37')],function(_0x188fe3){var _0x4813e6={};_0x4813e6[_0x188fe3]={'$like':'%'+_0xdfea90[_0xb740('0x34')]['filter']+'%'};return _0x4813e6;})});}_0x5f30da=_[_0xb740('0x3e')]({},_0x5f30da,_0xdfea90['options']);return _0x3dc727['getActions'](_0x5f30da);}})[_0xb740('0x28')](function(_0x439354){if(_0x439354){_0x85a922=_0x439354[_0xb740('0x47')];if(!_0xdfea90[_0xb740('0x34')][_0xb740('0x39')](_0xb740('0x53'))){_0x5f30da[_0xb740('0x1f')]=qs['limit'](_0xdfea90[_0xb740('0x34')][_0xb740('0x1f')]);_0x5f30da['offset']=qs[_0xb740('0x21')](_0xdfea90['query']['offset']);}return _0x3dc727['getActions'](_0x5f30da);}})[_0xb740('0x28')](function(_0x10a7c4){if(_0x10a7c4){return _0x10a7c4?{'count':_0x85a922,'rows':_0x10a7c4}:null;}})['then'](respondWithResult(_0x19fe5f,null))[_0xb740('0x48')](handleError(_0x19fe5f,null));};
\ No newline at end of file
+var _0x937a=['zip-dir','request-promise','bluebird','mustache','util','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','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','json','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','Automation','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','map','rows','show','include','options','find','catch','create','body','params','destroy','addConditions','Condition','ids','omit','getConditions','addActions','findOne','Action','getActions','eml-format','rimraf'];(function(_0x341e0f,_0x4a09d0){var _0x59555a=function(_0x4343a8){while(--_0x4343a8){_0x341e0f['push'](_0x341e0f['shift']());}};_0x59555a(++_0x4a09d0);}(_0x937a,0x14a));var _0xa937=function(_0x1eccdd,_0x2eaf16){_0x1eccdd=_0x1eccdd-0x0;var _0x3fa3e0=_0x937a[_0x1eccdd];return _0x3fa3e0;};'use strict';var emlformat=require(_0xa937('0x0'));var rimraf=require(_0xa937('0x1'));var zipdir=require(_0xa937('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa937('0x3'));var moment=require('moment');var BPromise=require(_0xa937('0x4'));var Mustache=require(_0xa937('0x5'));var util=require(_0xa937('0x6'));var path=require('path');var sox=require(_0xa937('0x7'));var csv=require(_0xa937('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa937('0x9'));var _=require('lodash');var squel=require(_0xa937('0xa'));var crypto=require('crypto');var jsforce=require(_0xa937('0xb'));var deskjs=require(_0xa937('0xc'));var toCsv=require(_0xa937('0x8'));var querystring=require('querystring');var Papa=require(_0xa937('0xd'));var Redis=require(_0xa937('0xe'));var authService=require(_0xa937('0xf'));var qs=require(_0xa937('0x10'));var as=require(_0xa937('0x11'));var hardwareService=require(_0xa937('0x12'));var logger=require(_0xa937('0x13'))(_0xa937('0x14'));var utils=require('../../config/utils');var config=require(_0xa937('0x15'));var licenseUtil=require(_0xa937('0x16'));var db=require(_0xa937('0x17'))['db'];function respondWithStatusCode(_0x394f97,_0x269e2d){_0x269e2d=_0x269e2d||0xcc;return function(_0x4b214b){if(_0x4b214b){return _0x394f97['sendStatus'](_0x269e2d);}return _0x394f97[_0xa937('0x18')](_0x269e2d)[_0xa937('0x19')]();};}function respondWithResult(_0x551aad,_0xe48ebf){_0xe48ebf=_0xe48ebf||0xc8;return function(_0xf22c93){if(_0xf22c93){return _0x551aad['status'](_0xe48ebf)['json'](_0xf22c93);}};}function respondWithFilteredResult(_0x24ff70,_0x1703db){return function(_0x3d26f6){if(_0x3d26f6){var _0x4f59c0=typeof _0x1703db[_0xa937('0x1a')]===_0xa937('0x1b')&&typeof _0x1703db[_0xa937('0x1c')]===_0xa937('0x1b');var _0x1e3e19=_0x3d26f6[_0xa937('0x1d')];var _0x273705=_0x4f59c0?0x0:_0x1703db[_0xa937('0x1a')];var _0x5d8db5=_0x4f59c0?_0x3d26f6['count']:_0x1703db[_0xa937('0x1a')]+_0x1703db[_0xa937('0x1c')];var _0x57badb;if(_0x5d8db5>=_0x1e3e19){_0x5d8db5=_0x1e3e19;_0x57badb=0xc8;}else{_0x57badb=0xce;}_0x24ff70[_0xa937('0x18')](_0x57badb);return _0x24ff70['set']('Content-Range',_0x273705+'-'+_0x5d8db5+'/'+_0x1e3e19)[_0xa937('0x1e')](_0x3d26f6);}return null;};}function patchUpdates(_0x34dfca){return function(_0x116ae3){try{jsonpatch[_0xa937('0x1f')](_0x116ae3,_0x34dfca,!![]);}catch(_0x4b1ba6){return BPromise[_0xa937('0x20')](_0x4b1ba6);}return _0x116ae3[_0xa937('0x21')]();};}function saveUpdates(_0x357a58,_0x557207){return function(_0x30b20d){if(_0x30b20d){return _0x30b20d[_0xa937('0x22')](_0x357a58)[_0xa937('0x23')](function(_0x475878){return _0x475878;});}return null;};}function removeEntity(_0x4640e0,_0x47c4da){return function(_0x8a7e6d){if(_0x8a7e6d){return _0x8a7e6d['destroy']()[_0xa937('0x23')](function(){_0x4640e0[_0xa937('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x54a8be,_0xcc12a6){return function(_0x101a4d){if(!_0x101a4d){_0x54a8be[_0xa937('0x24')](0x194);}return _0x101a4d;};}function handleError(_0x40595b,_0x1b76a5){_0x1b76a5=_0x1b76a5||0x1f4;return function(_0x470e85){logger[_0xa937('0x25')](_0x470e85[_0xa937('0x26')]);if(_0x470e85['name']){delete _0x470e85[_0xa937('0x27')];}_0x40595b[_0xa937('0x18')](_0x1b76a5)[_0xa937('0x28')](_0x470e85);};}exports[_0xa937('0x29')]=function(_0x157937,_0xcb6c44){var _0x2876f0={},_0x54de2e={},_0x23c169={'count':0x0,'rows':[]};var _0x23824c=_['map'](db[_0xa937('0x2a')][_0xa937('0x2b')],function(_0x47f762){return{'name':_0x47f762[_0xa937('0x2c')],'type':_0x47f762[_0xa937('0x2d')][_0xa937('0x2e')]};});_0x54de2e[_0xa937('0x2f')]=_['map'](_0x23824c,_0xa937('0x27'));_0x54de2e[_0xa937('0x30')]=_[_0xa937('0x31')](_0x157937[_0xa937('0x30')]);_0x54de2e['filters']=_['intersection'](_0x54de2e[_0xa937('0x2f')],_0x54de2e[_0xa937('0x30')]);_0x2876f0['attributes']=_[_0xa937('0x32')](_0x54de2e['model'],qs[_0xa937('0x33')](_0x157937[_0xa937('0x30')][_0xa937('0x33')]));_0x2876f0[_0xa937('0x34')]=_0x2876f0[_0xa937('0x34')][_0xa937('0x35')]?_0x2876f0[_0xa937('0x34')]:_0x54de2e['model'];if(!_0x157937[_0xa937('0x30')][_0xa937('0x36')](_0xa937('0x37'))){_0x2876f0[_0xa937('0x1c')]=qs[_0xa937('0x1c')](_0x157937['query'][_0xa937('0x1c')]);_0x2876f0[_0xa937('0x1a')]=qs[_0xa937('0x1a')](_0x157937[_0xa937('0x30')][_0xa937('0x1a')]);}_0x2876f0[_0xa937('0x38')]=qs['sort'](_0x157937[_0xa937('0x30')][_0xa937('0x39')]);_0x2876f0[_0xa937('0x3a')]=qs['filters'](_[_0xa937('0x3b')](_0x157937['query'],_0x54de2e[_0xa937('0x3c')]),_0x23824c);if(_0x157937[_0xa937('0x30')][_0xa937('0x3d')]){_0x2876f0[_0xa937('0x3a')]=_[_0xa937('0x3e')](_0x2876f0['where'],{'$or':_[_0xa937('0x3f')](_0x23824c,function(_0x414d45){if(_0x414d45[_0xa937('0x2d')]!=='VIRTUAL'){var _0xcc4826={};_0xcc4826[_0x414d45[_0xa937('0x27')]]={'$like':'%'+_0x157937[_0xa937('0x30')][_0xa937('0x3d')]+'%'};return _0xcc4826;}})});}_0x2876f0=_['merge']({},_0x2876f0,_0x157937['options']);var _0x2f8598={'where':_0x2876f0['where']};return db[_0xa937('0x2a')][_0xa937('0x1d')](_0x2f8598)[_0xa937('0x23')](function(_0x18f199){_0x23c169[_0xa937('0x1d')]=_0x18f199;if(_0x157937['query']['includeAll']){_0x2876f0['include']=[{'all':!![]}];}return db[_0xa937('0x2a')]['findAll'](_0x2876f0);})[_0xa937('0x23')](function(_0x3c224c){_0x23c169[_0xa937('0x40')]=_0x3c224c;return _0x23c169;})[_0xa937('0x23')](respondWithFilteredResult(_0xcb6c44,_0x2876f0))['catch'](handleError(_0xcb6c44,null));};exports[_0xa937('0x41')]=function(_0x10a4e1,_0x160c50){var _0x9f4c73={'raw':![],'where':{'id':_0x10a4e1['params']['id']}},_0x578a1f={};_0x578a1f[_0xa937('0x2f')]=_['keys'](db[_0xa937('0x2a')][_0xa937('0x2b')]);_0x578a1f[_0xa937('0x30')]=_[_0xa937('0x31')](_0x10a4e1['query']);_0x578a1f[_0xa937('0x3c')]=_[_0xa937('0x32')](_0x578a1f['model'],_0x578a1f[_0xa937('0x30')]);_0x9f4c73[_0xa937('0x34')]=_['intersection'](_0x578a1f[_0xa937('0x2f')],qs[_0xa937('0x33')](_0x10a4e1[_0xa937('0x30')][_0xa937('0x33')]));_0x9f4c73[_0xa937('0x34')]=_0x9f4c73[_0xa937('0x34')][_0xa937('0x35')]?_0x9f4c73['attributes']:_0x578a1f[_0xa937('0x2f')];if(_0x10a4e1[_0xa937('0x30')]['includeAll']){_0x9f4c73[_0xa937('0x42')]=[{'all':!![]}];}_0x9f4c73=_[_0xa937('0x3e')]({},_0x9f4c73,_0x10a4e1[_0xa937('0x43')]);return db[_0xa937('0x2a')][_0xa937('0x44')](_0x9f4c73)['then'](handleEntityNotFound(_0x160c50,null))[_0xa937('0x23')](respondWithResult(_0x160c50,null))[_0xa937('0x45')](handleError(_0x160c50,null));};exports[_0xa937('0x46')]=function(_0x33d81c,_0x4d81dd){return db['Automation'][_0xa937('0x46')](_0x33d81c[_0xa937('0x47')],{})[_0xa937('0x23')](respondWithResult(_0x4d81dd,0xc9))[_0xa937('0x45')](handleError(_0x4d81dd,null));};exports[_0xa937('0x22')]=function(_0x3f0330,_0x9f1450){if(_0x3f0330[_0xa937('0x47')]['id']){delete _0x3f0330['body']['id'];}return db[_0xa937('0x2a')][_0xa937('0x44')]({'where':{'id':_0x3f0330[_0xa937('0x48')]['id']}})[_0xa937('0x23')](handleEntityNotFound(_0x9f1450,null))[_0xa937('0x23')](saveUpdates(_0x3f0330[_0xa937('0x47')],null))[_0xa937('0x23')](respondWithResult(_0x9f1450,null))[_0xa937('0x45')](handleError(_0x9f1450,null));};exports[_0xa937('0x49')]=function(_0x2f6233,_0x16ae6f){return db[_0xa937('0x2a')]['find']({'where':{'id':_0x2f6233[_0xa937('0x48')]['id']}})[_0xa937('0x23')](handleEntityNotFound(_0x16ae6f,null))[_0xa937('0x23')](removeEntity(_0x16ae6f,null))[_0xa937('0x45')](handleError(_0x16ae6f,null));};exports[_0xa937('0x4a')]=function(_0x2f8cdc,_0x22dd26,_0x5a6b77){return db[_0xa937('0x4b')][_0xa937('0x44')]({'where':{'id':_0x2f8cdc[_0xa937('0x48')]['id']}})[_0xa937('0x23')](handleEntityNotFound(_0x22dd26,null))[_0xa937('0x23')](function(_0x2cae5a){if(_0x2cae5a){return _0x2cae5a['addConditions'](_0x2f8cdc[_0xa937('0x47')][_0xa937('0x4c')],_[_0xa937('0x4d')](_0x2f8cdc[_0xa937('0x47')],[_0xa937('0x4c'),'id'])||{});}})[_0xa937('0x23')](respondWithResult(_0x22dd26,null))[_0xa937('0x45')](handleError(_0x22dd26,null));};exports['getConditions']=function(_0x3e333e,_0x21c648,_0x17fd3e){var _0x29fe41={};var _0x2ee898={};var _0x5629dd;var _0x4e8748;return db[_0xa937('0x2a')]['findOne']({'where':{'id':_0x3e333e[_0xa937('0x48')]['id']}})['then'](handleEntityNotFound(_0x21c648,null))['then'](function(_0x2c719b){if(_0x2c719b){_0x5629dd=_0x2c719b;_0x2ee898[_0xa937('0x2f')]=_['keys'](db[_0xa937('0x4b')][_0xa937('0x2b')]);_0x2ee898[_0xa937('0x30')]=_[_0xa937('0x31')](_0x3e333e[_0xa937('0x30')]);_0x2ee898[_0xa937('0x3c')]=_[_0xa937('0x32')](_0x2ee898[_0xa937('0x2f')],_0x2ee898[_0xa937('0x30')]);_0x29fe41[_0xa937('0x34')]=_[_0xa937('0x32')](_0x2ee898[_0xa937('0x2f')],qs[_0xa937('0x33')](_0x3e333e['query'][_0xa937('0x33')]));_0x29fe41[_0xa937('0x34')]=_0x29fe41[_0xa937('0x34')][_0xa937('0x35')]?_0x29fe41['attributes']:_0x2ee898[_0xa937('0x2f')];_0x29fe41[_0xa937('0x38')]=qs['sort'](_0x3e333e[_0xa937('0x30')][_0xa937('0x39')]);_0x29fe41[_0xa937('0x3a')]=qs[_0xa937('0x3c')](_[_0xa937('0x3b')](_0x3e333e[_0xa937('0x30')],_0x2ee898[_0xa937('0x3c')]));if(_0x3e333e[_0xa937('0x30')]['filter']){_0x29fe41[_0xa937('0x3a')]=_[_0xa937('0x3e')](_0x29fe41[_0xa937('0x3a')],{'$or':_[_0xa937('0x3f')](_0x29fe41[_0xa937('0x34')],function(_0x4820d7){var _0x5a5a99={};_0x5a5a99[_0x4820d7]={'$like':'%'+_0x3e333e[_0xa937('0x30')]['filter']+'%'};return _0x5a5a99;})});}_0x29fe41=_[_0xa937('0x3e')]({},_0x29fe41,_0x3e333e[_0xa937('0x43')]);return _0x5629dd[_0xa937('0x4e')](_0x29fe41);}})[_0xa937('0x23')](function(_0x111033){if(_0x111033){_0x4e8748=_0x111033[_0xa937('0x35')];if(!_0x3e333e[_0xa937('0x30')][_0xa937('0x36')](_0xa937('0x37'))){_0x29fe41[_0xa937('0x1c')]=qs[_0xa937('0x1c')](_0x3e333e[_0xa937('0x30')]['limit']);_0x29fe41[_0xa937('0x1a')]=qs[_0xa937('0x1a')](_0x3e333e[_0xa937('0x30')]['offset']);}return _0x5629dd[_0xa937('0x4e')](_0x29fe41);}})['then'](function(_0x161e81){if(_0x161e81){return _0x161e81?{'count':_0x4e8748,'rows':_0x161e81}:null;}})[_0xa937('0x23')](respondWithResult(_0x21c648,null))[_0xa937('0x45')](handleError(_0x21c648,null));};exports['addActions']=function(_0x459c18,_0x5ba6f8,_0x39fd3d){return db['Action'][_0xa937('0x44')]({'where':{'id':_0x459c18['params']['id']}})[_0xa937('0x23')](handleEntityNotFound(_0x5ba6f8,null))[_0xa937('0x23')](function(_0x3ff517){if(_0x3ff517){return _0x3ff517[_0xa937('0x4f')](_0x459c18['body'][_0xa937('0x4c')],_[_0xa937('0x4d')](_0x459c18[_0xa937('0x47')],[_0xa937('0x4c'),'id'])||{});}})['then'](respondWithResult(_0x5ba6f8,null))['catch'](handleError(_0x5ba6f8,null));};exports['getActions']=function(_0x43b73e,_0x55fb70,_0x4c8b54){var _0x406c4c={};var _0x5c4ff2={};var _0x23d334;var _0x5120d3;return db['Automation'][_0xa937('0x50')]({'where':{'id':_0x43b73e[_0xa937('0x48')]['id']}})['then'](handleEntityNotFound(_0x55fb70,null))[_0xa937('0x23')](function(_0x3b7418){if(_0x3b7418){_0x23d334=_0x3b7418;_0x5c4ff2[_0xa937('0x2f')]=_[_0xa937('0x31')](db[_0xa937('0x51')][_0xa937('0x2b')]);_0x5c4ff2[_0xa937('0x30')]=_['keys'](_0x43b73e[_0xa937('0x30')]);_0x5c4ff2[_0xa937('0x3c')]=_[_0xa937('0x32')](_0x5c4ff2[_0xa937('0x2f')],_0x5c4ff2[_0xa937('0x30')]);_0x406c4c[_0xa937('0x34')]=_[_0xa937('0x32')](_0x5c4ff2[_0xa937('0x2f')],qs[_0xa937('0x33')](_0x43b73e['query'][_0xa937('0x33')]));_0x406c4c['attributes']=_0x406c4c[_0xa937('0x34')][_0xa937('0x35')]?_0x406c4c[_0xa937('0x34')]:_0x5c4ff2[_0xa937('0x2f')];_0x406c4c['order']=qs[_0xa937('0x39')](_0x43b73e['query'][_0xa937('0x39')]);_0x406c4c[_0xa937('0x3a')]=qs[_0xa937('0x3c')](_['pick'](_0x43b73e['query'],_0x5c4ff2[_0xa937('0x3c')]));if(_0x43b73e['query']['filter']){_0x406c4c[_0xa937('0x3a')]=_[_0xa937('0x3e')](_0x406c4c[_0xa937('0x3a')],{'$or':_[_0xa937('0x3f')](_0x406c4c['attributes'],function(_0x21313b){var _0x212aaf={};_0x212aaf[_0x21313b]={'$like':'%'+_0x43b73e['query'][_0xa937('0x3d')]+'%'};return _0x212aaf;})});}_0x406c4c=_[_0xa937('0x3e')]({},_0x406c4c,_0x43b73e[_0xa937('0x43')]);return _0x23d334[_0xa937('0x52')](_0x406c4c);}})[_0xa937('0x23')](function(_0x37006f){if(_0x37006f){_0x5120d3=_0x37006f[_0xa937('0x35')];if(!_0x43b73e[_0xa937('0x30')][_0xa937('0x36')](_0xa937('0x37'))){_0x406c4c['limit']=qs[_0xa937('0x1c')](_0x43b73e[_0xa937('0x30')][_0xa937('0x1c')]);_0x406c4c[_0xa937('0x1a')]=qs[_0xa937('0x1a')](_0x43b73e[_0xa937('0x30')]['offset']);}return _0x23d334[_0xa937('0x52')](_0x406c4c);}})['then'](function(_0x1a2257){if(_0x1a2257){return _0x1a2257?{'count':_0x5120d3,'rows':_0x1a2257}:null;}})['then'](respondWithResult(_0x55fb70,null))[_0xa937('0x45')](handleError(_0x55fb70,null));};
\ No newline at end of file
index 8a181b2..648ad96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x677a=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','Automation','tools_automations'];(function(_0x3a04a5,_0x3fb3c8){var _0x1b6f37=function(_0xceb45a){while(--_0xceb45a){_0x3a04a5['push'](_0x3a04a5['shift']());}};_0x1b6f37(++_0x3fb3c8);}(_0x677a,0xa9));var _0xa677=function(_0x147483,_0x15d210){_0x147483=_0x147483-0x0;var _0x37b381=_0x677a[_0x147483];return _0x37b381;};'use strict';var _=require('lodash');var util=require(_0xa677('0x0'));var logger=require(_0xa677('0x1'))(_0xa677('0x2'));var moment=require(_0xa677('0x3'));var BPromise=require(_0xa677('0x4'));var rp=require(_0xa677('0x5'));var fs=require('fs');var path=require(_0xa677('0x6'));var rimraf=require(_0xa677('0x7'));var config=require(_0xa677('0x8'));var attributes=require('./automation.attributes');module[_0xa677('0x9')]=function(_0x2fa9d9,_0x4ebce5){return _0x2fa9d9[_0xa677('0xa')](_0xa677('0xb'),attributes,{'tableName':_0xa677('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4df0=['../../config/logger','moment','bluebird','path','./automation.attributes','exports','define','Automation','tools_automations','lodash','util'];(function(_0x351273,_0x23d2f7){var _0x3aed78=function(_0xd7e06d){while(--_0xd7e06d){_0x351273['push'](_0x351273['shift']());}};_0x3aed78(++_0x23d2f7);}(_0x4df0,0x77));var _0x04df=function(_0x4aedc4,_0x5af512){_0x4aedc4=_0x4aedc4-0x0;var _0x36b789=_0x4df0[_0x4aedc4];return _0x36b789;};'use strict';var _=require(_0x04df('0x0'));var util=require(_0x04df('0x1'));var logger=require(_0x04df('0x2'))('api');var moment=require(_0x04df('0x3'));var BPromise=require(_0x04df('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x04df('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x04df('0x6'));module[_0x04df('0x7')]=function(_0x6bfffc,_0x2ba0f0){return _0x6bfffc[_0x04df('0x8')](_0x04df('0x9'),attributes,{'tableName':_0x04df('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b711ec1..41289f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccde=['stringify','error','code','Automation,\x20%s,\x20%s','message','result','lodash','moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent'];(function(_0x57d100,_0x3559c7){var _0x170781=function(_0x33d115){while(--_0x33d115){_0x57d100['push'](_0x57d100['shift']());}};_0x170781(++_0x3559c7);}(_0xccde,0x1e1));var _0xeccd=function(_0x43dc7e,_0x49a390){_0x43dc7e=_0x43dc7e-0x0;var _0x21e12d=_0xccde[_0x43dc7e];return _0x21e12d;};'use strict';var _=require(_0xeccd('0x0'));var util=require('util');var moment=require(_0xeccd('0x1'));var BPromise=require('bluebird');var rs=require(_0xeccd('0x2'));var fs=require('fs');var Redis=require(_0xeccd('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xeccd('0x4'))(_0xeccd('0x5'));var config=require(_0xeccd('0x6'));var jayson=require(_0xeccd('0x7'));var client=jayson[_0xeccd('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x338742,_0x130f1c,_0x1b622f){return new BPromise(function(_0x1eebfb,_0x4b068e){return client[_0xeccd('0x9')](_0x338742,_0x1b622f)[_0xeccd('0xa')](function(_0x9dccd){logger[_0xeccd('0xb')]('Automation,\x20%s,\x20%s',_0x130f1c,'request\x20sent');logger['debug']('Automation,\x20%s,\x20%s,\x20%s',_0x130f1c,_0xeccd('0xc'),JSON[_0xeccd('0xd')](_0x9dccd));if(_0x9dccd[_0xeccd('0xe')]){if(_0x9dccd[_0xeccd('0xe')][_0xeccd('0xf')]===0x1f4){logger['error'](_0xeccd('0x10'),_0x130f1c,_0x9dccd[_0xeccd('0xe')][_0xeccd('0x11')]);return _0x4b068e(_0x9dccd[_0xeccd('0xe')][_0xeccd('0x11')]);}logger[_0xeccd('0xe')]('Automation,\x20%s,\x20%s',_0x130f1c,_0x9dccd['error'][_0xeccd('0x11')]);return _0x1eebfb(_0x9dccd[_0xeccd('0xe')][_0xeccd('0x11')]);}else{logger[_0xeccd('0xb')]('Automation,\x20%s,\x20%s',_0x130f1c,_0xeccd('0xc'));_0x1eebfb(_0x9dccd[_0xeccd('0x12')]['message']);}})['catch'](function(_0x42e47e){logger[_0xeccd('0xe')](_0xeccd('0x10'),_0x130f1c,_0x42e47e);_0x4b068e(_0x42e47e);});});}
\ No newline at end of file
+var _0xdef9=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','Automation,\x20%s,\x20%s','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x47cb6b,_0x32b8f5){var _0x3fcba4=function(_0x506f70){while(--_0x506f70){_0x47cb6b['push'](_0x47cb6b['shift']());}};_0x3fcba4(++_0x32b8f5);}(_0xdef9,0x1ed));var _0x9def=function(_0x1d1918,_0x9b060b){_0x1d1918=_0x1d1918-0x0;var _0x40242b=_0xdef9[_0x1d1918];return _0x40242b;};'use strict';var _=require(_0x9def('0x0'));var util=require(_0x9def('0x1'));var moment=require(_0x9def('0x2'));var BPromise=require(_0x9def('0x3'));var rs=require(_0x9def('0x4'));var fs=require('fs');var Redis=require(_0x9def('0x5'));var db=require(_0x9def('0x6'))['db'];var utils=require(_0x9def('0x7'));var logger=require(_0x9def('0x8'))(_0x9def('0x9'));var config=require(_0x9def('0xa'));var jayson=require(_0x9def('0xb'));var client=jayson[_0x9def('0xc')][_0x9def('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x40c607,_0x25a03e,_0x42296c){return new BPromise(function(_0x1efce0,_0x8262f1){return client['request'](_0x40c607,_0x42296c)[_0x9def('0xe')](function(_0x4f0a0d){logger['info'](_0x9def('0xf'),_0x25a03e,_0x9def('0x10'));logger[_0x9def('0x11')](_0x9def('0x12'),_0x25a03e,'request\x20sent',JSON[_0x9def('0x13')](_0x4f0a0d));if(_0x4f0a0d[_0x9def('0x14')]){if(_0x4f0a0d[_0x9def('0x14')][_0x9def('0x15')]===0x1f4){logger['error'](_0x9def('0xf'),_0x25a03e,_0x4f0a0d[_0x9def('0x14')]['message']);return _0x8262f1(_0x4f0a0d[_0x9def('0x14')]['message']);}logger['error'](_0x9def('0xf'),_0x25a03e,_0x4f0a0d[_0x9def('0x14')][_0x9def('0x16')]);return _0x1efce0(_0x4f0a0d['error'][_0x9def('0x16')]);}else{logger['info']('Automation,\x20%s,\x20%s',_0x25a03e,_0x9def('0x10'));_0x1efce0(_0x4f0a0d[_0x9def('0x17')][_0x9def('0x16')]);}})[_0x9def('0x18')](function(_0x463520){logger[_0x9def('0x14')](_0x9def('0xf'),_0x25a03e,_0x463520);_0x8262f1(_0x463520);});});}
\ No newline at end of file
index e87ce50..5728edb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb613=['/:id','show','/:id/conditions','getConditions','/:id/actions','getActions','post','create','addConditions','addActions','put','update','destroy','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','index'];(function(_0x3cd9ca,_0x37f8b8){var _0x19b9c6=function(_0x494399){while(--_0x494399){_0x3cd9ca['push'](_0x3cd9ca['shift']());}};_0x19b9c6(++_0x37f8b8);}(_0xb613,0x9d));var _0x3b61=function(_0x53cf8e,_0x3d290f){_0x53cf8e=_0x53cf8e-0x0;var _0x459197=_0xb613[_0x53cf8e];return _0x459197;};'use strict';var multer=require(_0x3b61('0x0'));var util=require(_0x3b61('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x3b61('0x2'));var router=express[_0x3b61('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x3b61('0x4'));var interaction=require(_0x3b61('0x5'));var config=require(_0x3b61('0x6'));var controller=require(_0x3b61('0x7'));router[_0x3b61('0x8')]('/',auth[_0x3b61('0x9')](),controller[_0x3b61('0xa')]);router['get'](_0x3b61('0xb'),auth[_0x3b61('0x9')](),controller[_0x3b61('0xc')]);router[_0x3b61('0x8')](_0x3b61('0xd'),auth[_0x3b61('0x9')](),controller[_0x3b61('0xe')]);router[_0x3b61('0x8')](_0x3b61('0xf'),auth[_0x3b61('0x9')](),controller[_0x3b61('0x10')]);router[_0x3b61('0x11')]('/',auth[_0x3b61('0x9')](),controller[_0x3b61('0x12')]);router[_0x3b61('0x11')]('/:id/conditions',auth[_0x3b61('0x9')](),controller[_0x3b61('0x13')]);router[_0x3b61('0x11')](_0x3b61('0xf'),auth['isAuthenticated'](),controller[_0x3b61('0x14')]);router[_0x3b61('0x15')](_0x3b61('0xb'),auth[_0x3b61('0x9')](),controller[_0x3b61('0x16')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x3b61('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0x0c6d=['addActions','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','isAuthenticated','index','get','/:id/conditions','getConditions','/:id/actions','getActions','post','create','addConditions'];(function(_0x35da9e,_0x54e713){var _0x235e20=function(_0x3e6856){while(--_0x3e6856){_0x35da9e['push'](_0x35da9e['shift']());}};_0x235e20(++_0x54e713);}(_0x0c6d,0xf7));var _0xd0c6=function(_0x51267e,_0x4cf4ae){_0x51267e=_0x51267e-0x0;var _0x21d246=_0x0c6d[_0x51267e];return _0x21d246;};'use strict';var multer=require('multer');var util=require(_0xd0c6('0x0'));var path=require(_0xd0c6('0x1'));var timeout=require(_0xd0c6('0x2'));var express=require(_0xd0c6('0x3'));var router=express[_0xd0c6('0x4')]();var fs_extra=require(_0xd0c6('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xd0c6('0x6'));var config=require('../../config/environment');var controller=require('./automation.controller');router['get']('/',auth[_0xd0c6('0x7')](),controller[_0xd0c6('0x8')]);router[_0xd0c6('0x9')]('/:id',auth[_0xd0c6('0x7')](),controller['show']);router[_0xd0c6('0x9')](_0xd0c6('0xa'),auth[_0xd0c6('0x7')](),controller[_0xd0c6('0xb')]);router[_0xd0c6('0x9')](_0xd0c6('0xc'),auth[_0xd0c6('0x7')](),controller[_0xd0c6('0xd')]);router[_0xd0c6('0xe')]('/',auth['isAuthenticated'](),controller[_0xd0c6('0xf')]);router['post']('/:id/conditions',auth[_0xd0c6('0x7')](),controller[_0xd0c6('0x10')]);router[_0xd0c6('0xe')](_0xd0c6('0xc'),auth[_0xd0c6('0x7')](),controller[_0xd0c6('0x11')]);router[_0xd0c6('0x12')](_0xd0c6('0x13'),auth[_0xd0c6('0x7')](),controller[_0xd0c6('0x14')]);router[_0xd0c6('0x15')](_0xd0c6('0x13'),auth[_0xd0c6('0x7')](),controller[_0xd0c6('0x16')]);module[_0xd0c6('0x17')]=router;
\ No newline at end of file
index 20e6f2c..06ec035 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f3f=['AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','name','ENUM','ivr','STRING','BOOLEAN','UNSIGNED','Max\x20200\x20calls.','INTEGER','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','onlyIfOpen','Active/Disactive\x20AMD','#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)','#AMD\x20Maximum\x20Word\x20Length','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)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)'];(function(_0x32db1a,_0x3fbb65){var _0x4afee5=function(_0x25bbb3){while(--_0x25bbb3){_0x32db1a['push'](_0x32db1a['shift']());}};_0x4afee5(++_0x3fbb65);}(_0x0f3f,0x198));var _0xf0f3=function(_0x2f8c05,_0x551e3d){_0x2f8c05=_0x2f8c05-0x0;var _0x14cfde=_0x0f3f[_0x2f8c05];return _0x14cfde;};'use strict';var Sequelize=require(_0xf0f3('0x0'));module[_0xf0f3('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xf0f3('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xf0f3('0x3')](_0xf0f3('0x4')),'allowNull':![],'defaultValue':_0xf0f3('0x4')},'description':{'type':Sequelize[_0xf0f3('0x5')]},'active':{'type':Sequelize[_0xf0f3('0x6')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0xf0f3('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xf0f3('0x8')},'dialOriginateCallerIdName':{'type':Sequelize[_0xf0f3('0x5')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xf0f3('0x5')]},'dialOriginateTimeout':{'type':Sequelize[_0xf0f3('0x9')](0x3)[_0xf0f3('0x7')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf0f3('0xa')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf0f3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf0f3('0xb')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xf0f3('0x9')](0x5)[_0xf0f3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf0f3('0xc')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf0f3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf0f3('0xd')},'dialBusyRetryFrequency':{'type':Sequelize[_0xf0f3('0x9')](0x5)[_0xf0f3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf0f3('0xe')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xf0f3('0x9')](0x3)[_0xf0f3('0x7')],'defaultValue':0x3,'comment':_0xf0f3('0xf')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xf0f3('0x9')](0x5)[_0xf0f3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0xf0f3('0x9')](0x3)[_0xf0f3('0x7')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0xf0f3('0x5')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xf0f3('0x5')],'defaultValue':_0xf0f3('0x10')},'dialCheckDuplicateType':{'type':Sequelize['ENUM']('always','never',_0xf0f3('0x11')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0xf0f3('0x6')],'defaultValue':0x0,'comment':_0xf0f3('0x12')},'dialAMDInitialSilence':{'type':Sequelize[_0xf0f3('0x9')](0x9)[_0xf0f3('0x7')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0xf0f3('0x9')](0x9)[_0xf0f3('0x7')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xf0f3('0x13')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xf0f3('0x9')](0x9)[_0xf0f3('0x7')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xf0f3('0x14')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0xf0f3('0x9')](0x9)[_0xf0f3('0x7')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xf0f3('0x15')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xf0f3('0x9')](0x9)[_0xf0f3('0x7')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xf0f3('0x16')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xf0f3('0x9')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xf0f3('0x17')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0xf0f3('0x7')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xf0f3('0x18')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xf0f3('0x9')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xf0f3('0x19')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0xf0f3('0x1a'),_0xf0f3('0x1b')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize[_0xf0f3('0x5')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xf0f3('0x9')](0x3)[_0xf0f3('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf0f3('0x1c')},'dialCutDigit':{'type':Sequelize[_0xf0f3('0x9')](0x3)[_0xf0f3('0x7')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf0f3('0x1d')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf0f3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf0f3('0x1e')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xf0f3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf0f3('0x1f')},'dialDropMaxRetry':{'type':Sequelize[_0xf0f3('0x9')](0x3)[_0xf0f3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xf0f3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf0f3('0x20')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xf0f3('0x9')](0x3)[_0xf0f3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf0f3('0x21')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xf0f3('0x9')](0x5)[_0xf0f3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0xf0f3('0x9')](0x3)[_0xf0f3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf0f3('0x22')},'dialMachineRetryFrequency':{'type':Sequelize[_0xf0f3('0x9')](0x5)[_0xf0f3('0x7')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xf0f3('0x9')](0x3)[_0xf0f3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf0f3('0x23')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xf0f3('0x9')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf0f3('0x24')}};
\ No newline at end of file
+var _0x854f=['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\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)','sequelize','exports','STRING','name','ENUM','ivr','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','BOOLEAN','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','ASC','DESC'];(function(_0x56cc4e,_0x47f3d6){var _0x506bd4=function(_0x32157b){while(--_0x32157b){_0x56cc4e['push'](_0x56cc4e['shift']());}};_0x506bd4(++_0x47f3d6);}(_0x854f,0xc1));var _0xf854=function(_0x5dfc46,_0xc6c9e0){_0x5dfc46=_0x5dfc46-0x0;var _0x48bece=_0x854f[_0x5dfc46];return _0x48bece;};'use strict';var Sequelize=require(_0xf854('0x0'));module[_0xf854('0x1')]={'name':{'type':Sequelize[_0xf854('0x2')],'unique':_0xf854('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xf854('0x4')](_0xf854('0x5')),'allowNull':![],'defaultValue':'ivr'},'description':{'type':Sequelize[_0xf854('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xf854('0x6')},'limitCalls':{'type':Sequelize[_0xf854('0x7')](0x4)[_0xf854('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xf854('0x9')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xf854('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0xf854('0x7')](0x3)[_0xf854('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf854('0xa')},'dialCongestionMaxRetry':{'type':Sequelize[_0xf854('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf854('0xb')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xf854('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf854('0xc')},'dialBusyMaxRetry':{'type':Sequelize[_0xf854('0x7')](0x3)[_0xf854('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0xf854('0x7')](0x5)[_0xf854('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf854('0xd')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xf854('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0xf854('0xe')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xf854('0x7')](0x5)[_0xf854('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf854('0xf')},'dialGlobalMaxRetry':{'type':Sequelize[_0xf854('0x7')](0x3)[_0xf854('0x8')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xf854('0x10')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xf854('0x2')],'defaultValue':_0xf854('0x11')},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0xf854('0x12'),_0xf854('0x13'),_0xf854('0x14')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0xf854('0x15')],'defaultValue':0x0,'comment':_0xf854('0x16')},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xf854('0x17')},'dialAMDGreeting':{'type':Sequelize[_0xf854('0x7')](0x9)[_0xf854('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xf854('0x18')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xf854('0x7')](0x9)[_0xf854('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xf854('0x7')](0x9)[_0xf854('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0xf854('0x7')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xf854('0x19')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xf854('0x7')](0x9)[_0xf854('0x8')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xf854('0x1a')},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0xf854('0x8')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0xf854('0x7')](0x9)[_0xf854('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialOrderByScheduledAt':{'type':Sequelize[_0xf854('0x4')]('DESC',_0xf854('0x1b')),'defaultValue':_0xf854('0x1c')},'dialPrefix':{'type':Sequelize[_0xf854('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0xf854('0x7')](0x3)[_0xf854('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf854('0x1d')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xf854('0x7')](0x3)[_0xf854('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf854('0x1e')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xf854('0x7')](0x5)[_0xf854('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf854('0x1f')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0xf854('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0xf854('0x7')](0x3)[_0xf854('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf854('0x20')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xf854('0x7')](0x5)[_0xf854('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf854('0x21')},'dialMachineMaxRetry':{'type':Sequelize[_0xf854('0x7')](0x3)[_0xf854('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf854('0x22')},'dialMachineRetryFrequency':{'type':Sequelize[_0xf854('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf854('0x23')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xf854('0x7')](0x3)[_0xf854('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf854('0x24')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xf854('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'}};
\ No newline at end of file
index f826c0e..4941dde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c0=['always','insert','fromQuery','scheduledAt','ListId','select','field','phone','NOW()','ContactId','CmListId','toString','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','from','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','cm_hopper','onlyIfOpen','into','OrderBy','h.id','ci.OrderBY','cm_contact_has_items','join','h.ListId\x20=\x20?','h.CampaignId=?','h.createdAt\x20=\x20?','push','sequelize','all','getBlackLists','addBlackLists','removeBlackLists','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','get','IvrCampaigns','UserProfileResource','destroy','end','error','stack','name','send','index','map','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','Campaign','includeAll','findAll','rows','catch','params','rawAttributes','keys','length','include','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','getHoppers','findOne','CmHopper','CmHopperHistory','CampaignId','getHopperFinals','CmHopperFinal','CmHopperBlack','getLists','CmList','addLists','format','ids','spread','dialCheckDuplicateType'];(function(_0x296051,_0x13678b){var _0x22c51d=function(_0xa4aeb1){while(--_0xa4aeb1){_0x296051['push'](_0x296051['shift']());}};_0x22c51d(++_0x13678b);}(_0x47c0,0x1dc));var _0x047c=function(_0x319752,_0x56a4fb){_0x319752=_0x319752-0x0;var _0x53e17d=_0x47c0[_0x319752];return _0x53e17d;};'use strict';var emlformat=require(_0x047c('0x0'));var rimraf=require(_0x047c('0x1'));var zipdir=require(_0x047c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x047c('0x3'));var moment=require(_0x047c('0x4'));var BPromise=require(_0x047c('0x5'));var Mustache=require(_0x047c('0x6'));var util=require(_0x047c('0x7'));var path=require(_0x047c('0x8'));var sox=require('sox');var csv=require(_0x047c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x047c('0xa'));var _=require(_0x047c('0xb'));var squel=require('squel');var crypto=require(_0x047c('0xc'));var jsforce=require(_0x047c('0xd'));var deskjs=require(_0x047c('0xe'));var toCsv=require(_0x047c('0x9'));var querystring=require(_0x047c('0xf'));var Papa=require('papaparse');var Redis=require(_0x047c('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x047c('0x11'));var as=require(_0x047c('0x12'));var hardwareService=require(_0x047c('0x13'));var logger=require('../../config/logger')(_0x047c('0x14'));var utils=require(_0x047c('0x15'));var config=require(_0x047c('0x16'));var licenseUtil=require(_0x047c('0x17'));var db=require(_0x047c('0x18'))['db'];function respondWithStatusCode(_0x473a46,_0x19dbf9){_0x19dbf9=_0x19dbf9||0xcc;return function(_0x3dbae3){if(_0x3dbae3){return _0x473a46[_0x047c('0x19')](_0x19dbf9);}return _0x473a46[_0x047c('0x1a')](_0x19dbf9)['end']();};}function respondWithResult(_0x4a6c33,_0x4ea7fc){_0x4ea7fc=_0x4ea7fc||0xc8;return function(_0x44f6da){if(_0x44f6da){return _0x4a6c33[_0x047c('0x1a')](_0x4ea7fc)[_0x047c('0x1b')](_0x44f6da);}};}function respondWithFilteredResult(_0x62458f,_0x47c468){return function(_0x5d6cc9){if(_0x5d6cc9){var _0x598e4e=typeof _0x47c468['offset']===_0x047c('0x1c')&&typeof _0x47c468[_0x047c('0x1d')]===_0x047c('0x1c');var _0x4b6274=_0x5d6cc9[_0x047c('0x1e')];var _0x3b129a=_0x598e4e?0x0:_0x47c468[_0x047c('0x1f')];var _0x4330b8=_0x598e4e?_0x5d6cc9[_0x047c('0x1e')]:_0x47c468[_0x047c('0x1f')]+_0x47c468['limit'];var _0x40f272;if(_0x4330b8>=_0x4b6274){_0x4330b8=_0x4b6274;_0x40f272=0xc8;}else{_0x40f272=0xce;}_0x62458f[_0x047c('0x1a')](_0x40f272);return _0x62458f[_0x047c('0x20')](_0x047c('0x21'),_0x3b129a+'-'+_0x4330b8+'/'+_0x4b6274)[_0x047c('0x1b')](_0x5d6cc9);}return null;};}function patchUpdates(_0x3c9dc7){return function(_0x3b466b){try{jsonpatch[_0x047c('0x22')](_0x3b466b,_0x3c9dc7,!![]);}catch(_0xe248e8){return BPromise[_0x047c('0x23')](_0xe248e8);}return _0x3b466b[_0x047c('0x24')]();};}function saveUpdates(_0x30f3e9,_0x500cc8){return function(_0x23f5cf){if(_0x23f5cf){return _0x23f5cf[_0x047c('0x25')](_0x30f3e9)[_0x047c('0x26')](function(_0x3f229a){return _0x3f229a;});}return null;};}function removeEntity(_0x19afa4,_0x4b94b3){return function(_0x596033){if(_0x596033){return _0x596033['destroy']()[_0x047c('0x26')](function(){var _0x3b0a2c=_0x596033[_0x047c('0x27')]({'plain':!![]});var _0x36903f=_0x047c('0x28');return db[_0x047c('0x29')][_0x047c('0x2a')]({'where':{'type':_0x36903f,'resourceId':_0x3b0a2c['id']}})[_0x047c('0x26')](function(){return _0x596033;});})[_0x047c('0x26')](function(){_0x19afa4[_0x047c('0x1a')](0xcc)[_0x047c('0x2b')]();});}};}function handleEntityNotFound(_0x52fe40,_0x46a354){return function(_0x11a0ea){if(!_0x11a0ea){_0x52fe40[_0x047c('0x19')](0x194);}return _0x11a0ea;};}function handleError(_0x29d99f,_0x5c53a5){_0x5c53a5=_0x5c53a5||0x1f4;return function(_0xfd2440){logger[_0x047c('0x2c')](_0xfd2440[_0x047c('0x2d')]);if(_0xfd2440[_0x047c('0x2e')]){delete _0xfd2440[_0x047c('0x2e')];}_0x29d99f[_0x047c('0x1a')](_0x5c53a5)[_0x047c('0x2f')](_0xfd2440);};}exports[_0x047c('0x30')]=function(_0x585a62,_0x6a3795){var _0x46f4de={},_0x2e50c3={},_0x20ef6a={'count':0x0,'rows':[]};var _0xccd9ac=_[_0x047c('0x31')](db['Campaign']['rawAttributes'],function(_0x3642d6){return{'name':_0x3642d6[_0x047c('0x32')],'type':_0x3642d6['type'][_0x047c('0x33')]};});_0x2e50c3[_0x047c('0x34')]=_[_0x047c('0x31')](_0xccd9ac,_0x047c('0x2e'));_0x2e50c3[_0x047c('0x35')]=_['keys'](_0x585a62[_0x047c('0x35')]);_0x2e50c3[_0x047c('0x36')]=_[_0x047c('0x37')](_0x2e50c3[_0x047c('0x34')],_0x2e50c3[_0x047c('0x35')]);_0x46f4de[_0x047c('0x38')]=_['intersection'](_0x2e50c3[_0x047c('0x34')],qs[_0x047c('0x39')](_0x585a62[_0x047c('0x35')][_0x047c('0x39')]));_0x46f4de['attributes']=_0x46f4de[_0x047c('0x38')]['length']?_0x46f4de[_0x047c('0x38')]:_0x2e50c3[_0x047c('0x34')];if(!_0x585a62[_0x047c('0x35')][_0x047c('0x3a')](_0x047c('0x3b'))){_0x46f4de[_0x047c('0x1d')]=qs[_0x047c('0x1d')](_0x585a62[_0x047c('0x35')][_0x047c('0x1d')]);_0x46f4de[_0x047c('0x1f')]=qs[_0x047c('0x1f')](_0x585a62[_0x047c('0x35')][_0x047c('0x1f')]);}_0x46f4de[_0x047c('0x3c')]=qs[_0x047c('0x3d')](_0x585a62[_0x047c('0x35')][_0x047c('0x3d')]);_0x46f4de['where']=qs[_0x047c('0x36')](_[_0x047c('0x3e')](_0x585a62[_0x047c('0x35')],_0x2e50c3[_0x047c('0x36')]),_0xccd9ac);if(_0x585a62[_0x047c('0x35')][_0x047c('0x3f')]){_0x46f4de[_0x047c('0x40')]=_[_0x047c('0x41')](_0x46f4de[_0x047c('0x40')],{'$or':_['map'](_0xccd9ac,function(_0x3e9dd1){if(_0x3e9dd1[_0x047c('0x42')]!==_0x047c('0x43')){var _0xd41eb9={};_0xd41eb9[_0x3e9dd1[_0x047c('0x2e')]]={'$like':'%'+_0x585a62[_0x047c('0x35')][_0x047c('0x3f')]+'%'};return _0xd41eb9;}})});}_0x46f4de=_['merge']({},_0x46f4de,_0x585a62['options']);var _0x213ffd={'where':_0x46f4de[_0x047c('0x40')]};return db[_0x047c('0x44')]['count'](_0x213ffd)[_0x047c('0x26')](function(_0x5e8b84){_0x20ef6a[_0x047c('0x1e')]=_0x5e8b84;if(_0x585a62['query'][_0x047c('0x45')]){_0x46f4de['include']=[{'all':!![]}];}return db[_0x047c('0x44')][_0x047c('0x46')](_0x46f4de);})[_0x047c('0x26')](function(_0x430e92){_0x20ef6a[_0x047c('0x47')]=_0x430e92;return _0x20ef6a;})[_0x047c('0x26')](respondWithFilteredResult(_0x6a3795,_0x46f4de))[_0x047c('0x48')](handleError(_0x6a3795,null));};exports['show']=function(_0x14b4f0,_0x3202e4){var _0x1f5d35={'raw':![],'where':{'id':_0x14b4f0[_0x047c('0x49')]['id']}},_0x569836={};_0x569836['model']=_['keys'](db[_0x047c('0x44')][_0x047c('0x4a')]);_0x569836[_0x047c('0x35')]=_[_0x047c('0x4b')](_0x14b4f0[_0x047c('0x35')]);_0x569836[_0x047c('0x36')]=_[_0x047c('0x37')](_0x569836[_0x047c('0x34')],_0x569836['query']);_0x1f5d35[_0x047c('0x38')]=_[_0x047c('0x37')](_0x569836['model'],qs[_0x047c('0x39')](_0x14b4f0[_0x047c('0x35')][_0x047c('0x39')]));_0x1f5d35[_0x047c('0x38')]=_0x1f5d35['attributes'][_0x047c('0x4c')]?_0x1f5d35[_0x047c('0x38')]:_0x569836[_0x047c('0x34')];if(_0x14b4f0[_0x047c('0x35')][_0x047c('0x45')]){_0x1f5d35[_0x047c('0x4d')]=[{'all':!![]}];}_0x1f5d35=_[_0x047c('0x41')]({},_0x1f5d35,_0x14b4f0[_0x047c('0x4e')]);return db[_0x047c('0x44')]['find'](_0x1f5d35)[_0x047c('0x26')](handleEntityNotFound(_0x3202e4,null))[_0x047c('0x26')](respondWithResult(_0x3202e4,null))[_0x047c('0x48')](handleError(_0x3202e4,null));};exports[_0x047c('0x4f')]=function(_0x1e8e8b,_0x3336e1){return db[_0x047c('0x44')][_0x047c('0x4f')](_0x1e8e8b[_0x047c('0x50')],{})['then'](function(_0x27a9bf){var _0x5c10f2=_0x1e8e8b[_0x047c('0x51')]['get']({'plain':!![]});if(!_0x5c10f2)throw new Error(_0x047c('0x52'));if(_0x5c10f2[_0x047c('0x53')]===_0x047c('0x51')){var _0x34ca84=_0x27a9bf['get']({'plain':!![]});var _0x5d1721=_0x047c('0x28');return db[_0x047c('0x54')][_0x047c('0x55')]({'where':{'name':_0x5d1721,'userProfileId':_0x5c10f2[_0x047c('0x56')]},'raw':!![]})[_0x047c('0x26')](function(_0x4e3c5d){if(_0x4e3c5d&&_0x4e3c5d[_0x047c('0x57')]===0x0){return db[_0x047c('0x29')][_0x047c('0x4f')]({'name':_0x34ca84['name'],'resourceId':_0x34ca84['id'],'type':_0x4e3c5d[_0x047c('0x2e')],'sectionId':_0x4e3c5d['id']},{})['then'](function(){return _0x27a9bf;});}else{return _0x27a9bf;}})[_0x047c('0x48')](function(_0x3de804){logger['error'](_0x047c('0x58'),_0x3de804);throw _0x3de804;});}return _0x27a9bf;})[_0x047c('0x26')](respondWithResult(_0x3336e1,0xc9))[_0x047c('0x48')](handleError(_0x3336e1,null));};exports[_0x047c('0x59')]=function(_0xc4e5e2,_0x344077){var _0x4e8603={'where':{'id':_0xc4e5e2[_0x047c('0x49')]['id']}},_0x41bdba={};_0x41bdba[_0x047c('0x34')]=_[_0x047c('0x4b')](db['Campaign'][_0x047c('0x4a')]);_0x4e8603['attributes']=_[_0x047c('0x37')](_0x41bdba[_0x047c('0x34')],qs[_0x047c('0x39')](_0xc4e5e2['query']['fields']));_0x4e8603[_0x047c('0x38')]=_0x4e8603[_0x047c('0x38')][_0x047c('0x4c')]?_0x4e8603[_0x047c('0x38')]:_0x41bdba['model'];if(_0xc4e5e2[_0x047c('0x35')]['includeAll']){_0x4e8603['include']=[{'all':!![]}];}_0x4e8603=_[_0x047c('0x41')]({},_0x4e8603,_0xc4e5e2[_0x047c('0x4e')]);return db['Campaign']['find'](_0x4e8603)[_0x047c('0x26')](handleEntityNotFound(_0x344077,null))['then'](function(_0x2775a6){if(_0x2775a6){var _0x962307=_0x2775a6[_0x047c('0x27')]({'plain':!![]});_0x962307=qs[_0x047c('0x5a')](_0x962307,['id',_0x047c('0x5b'),_0x047c('0x5c')]);_0xc4e5e2[_0x047c('0x50')]=_[_0x047c('0x5a')](_0xc4e5e2['body'],['id',_0x047c('0x5b'),_0x047c('0x5c')]);return db[_0x047c('0x44')][_0x047c('0x4f')](_[_0x047c('0x41')](_0x962307,_0xc4e5e2[_0x047c('0x50')]),{'include':_0xc4e5e2['query'][_0x047c('0x45')]?[{'all':!![]}]:undefined})[_0x047c('0x26')](function(_0x2816d6){var _0x5afa5f=_0xc4e5e2[_0x047c('0x51')][_0x047c('0x27')]({'plain':!![]});if(!_0x5afa5f)throw new Error(_0x047c('0x52'));if(_0x5afa5f[_0x047c('0x53')]===_0x047c('0x51')){var _0x28ad4f=_0x2816d6[_0x047c('0x27')]({'plain':!![]});var _0x1ef53b='IvrCampaigns';return db[_0x047c('0x54')][_0x047c('0x55')]({'where':{'name':_0x1ef53b,'userProfileId':_0x5afa5f[_0x047c('0x56')]},'raw':!![]})[_0x047c('0x26')](function(_0x428a32){if(_0x428a32&&_0x428a32['autoAssociation']===0x0){return db[_0x047c('0x29')][_0x047c('0x4f')]({'name':_0x28ad4f[_0x047c('0x2e')],'resourceId':_0x28ad4f['id'],'type':_0x428a32[_0x047c('0x2e')],'sectionId':_0x428a32['id']},{})[_0x047c('0x26')](function(){return _0x2816d6;});}else{return _0x2816d6;}})[_0x047c('0x48')](function(_0x47508a){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x47508a);throw _0x47508a;});}return _0x2816d6;});}})[_0x047c('0x26')](respondWithResult(_0x344077,0xc9))[_0x047c('0x48')](handleError(_0x344077,null));};exports[_0x047c('0x25')]=function(_0x45c535,_0x422b90){if(_0x45c535[_0x047c('0x50')]['id']){delete _0x45c535['body']['id'];}return db[_0x047c('0x44')][_0x047c('0x55')]({'where':{'id':_0x45c535['params']['id']}})[_0x047c('0x26')](handleEntityNotFound(_0x422b90,null))[_0x047c('0x26')](saveUpdates(_0x45c535[_0x047c('0x50')],null))[_0x047c('0x26')](respondWithResult(_0x422b90,null))[_0x047c('0x48')](handleError(_0x422b90,null));};exports['destroy']=function(_0xf5e690,_0x31f7da){return db[_0x047c('0x44')][_0x047c('0x55')]({'where':{'id':_0xf5e690[_0x047c('0x49')]['id']}})[_0x047c('0x26')](handleEntityNotFound(_0x31f7da,null))[_0x047c('0x26')](removeEntity(_0x31f7da,null))[_0x047c('0x48')](handleError(_0x31f7da,null));};exports[_0x047c('0x5d')]=function(_0x1b73dc,_0x4cf38b,_0x2c7c2d){var _0x642ab3={'raw':!![],'where':{}};var _0x27b1ee={};var _0xe52202={'count':0x0,'rows':[]};return db[_0x047c('0x44')][_0x047c('0x5e')]({'where':{'id':_0x1b73dc[_0x047c('0x49')]['id']}})[_0x047c('0x26')](handleEntityNotFound(_0x4cf38b,null))[_0x047c('0x26')](function(_0x4b8e05){if(_0x4b8e05){_0x27b1ee['model']=_[_0x047c('0x4b')](db[_0x047c('0x5f')][_0x047c('0x4a')]);_0x27b1ee[_0x047c('0x35')]=_[_0x047c('0x4b')](_0x1b73dc[_0x047c('0x35')]);_0x27b1ee[_0x047c('0x36')]=_[_0x047c('0x37')](_0x27b1ee[_0x047c('0x34')],_0x27b1ee[_0x047c('0x35')]);_0x642ab3['attributes']=_[_0x047c('0x37')](_0x27b1ee[_0x047c('0x34')],qs['fields'](_0x1b73dc[_0x047c('0x35')][_0x047c('0x39')]));_0x642ab3[_0x047c('0x38')]=_0x642ab3[_0x047c('0x38')][_0x047c('0x4c')]?_0x642ab3['attributes']:_0x27b1ee['model'];if(!_0x1b73dc[_0x047c('0x35')][_0x047c('0x3a')]('nolimit')){_0x642ab3['limit']=qs[_0x047c('0x1d')](_0x1b73dc[_0x047c('0x35')][_0x047c('0x1d')]);_0x642ab3['offset']=qs[_0x047c('0x1f')](_0x1b73dc['query'][_0x047c('0x1f')]);}_0x642ab3['order']=qs[_0x047c('0x3d')](_0x1b73dc[_0x047c('0x35')]['sort']);_0x642ab3[_0x047c('0x40')]=qs[_0x047c('0x36')](_[_0x047c('0x3e')](_0x1b73dc[_0x047c('0x35')],_0x27b1ee[_0x047c('0x36')]));_0x642ab3[_0x047c('0x40')]['CampaignId']=_0x4b8e05['id'];if(_0x1b73dc['query'][_0x047c('0x3f')]){_0x642ab3[_0x047c('0x40')]=_[_0x047c('0x41')](_0x642ab3[_0x047c('0x40')],{'$or':_[_0x047c('0x31')](_0x642ab3['attributes'],function(_0x3dcb6f){var _0x4ba468={};_0x4ba468[_0x3dcb6f]={'$like':'%'+_0x1b73dc[_0x047c('0x35')][_0x047c('0x3f')]+'%'};return _0x4ba468;})});}_0x642ab3=_[_0x047c('0x41')]({},_0x642ab3,_0x1b73dc[_0x047c('0x4e')]);return db[_0x047c('0x5f')][_0x047c('0x1e')]({'where':_0x642ab3['where']})[_0x047c('0x26')](function(_0x2071a4){_0xe52202[_0x047c('0x1e')]=_0x2071a4;if(_0x1b73dc[_0x047c('0x35')]['includeAll']){_0x642ab3['include']=[{'all':!![]}];}return db[_0x047c('0x5f')]['findAll'](_0x642ab3);})[_0x047c('0x26')](function(_0x553928){_0xe52202[_0x047c('0x47')]=_0x553928;return _0xe52202;});}})['then'](respondWithFilteredResult(_0x4cf38b,_0x642ab3))['catch'](handleError(_0x4cf38b,null));};exports['getHopperHistories']=function(_0x4d39c7,_0x3126d2,_0x4c30e7){var _0x198790={'raw':!![],'where':{}};var _0x424820={};var _0x103d33={'count':0x0,'rows':[]};return db[_0x047c('0x44')][_0x047c('0x5e')]({'where':{'id':_0x4d39c7[_0x047c('0x49')]['id']}})['then'](handleEntityNotFound(_0x3126d2,null))[_0x047c('0x26')](function(_0x879abe){if(_0x879abe){_0x424820[_0x047c('0x34')]=_[_0x047c('0x4b')](db[_0x047c('0x60')][_0x047c('0x4a')]);_0x424820[_0x047c('0x35')]=_['keys'](_0x4d39c7[_0x047c('0x35')]);_0x424820[_0x047c('0x36')]=_['intersection'](_0x424820[_0x047c('0x34')],_0x424820[_0x047c('0x35')]);_0x198790[_0x047c('0x38')]=_[_0x047c('0x37')](_0x424820[_0x047c('0x34')],qs[_0x047c('0x39')](_0x4d39c7[_0x047c('0x35')]['fields']));_0x198790[_0x047c('0x38')]=_0x198790['attributes'][_0x047c('0x4c')]?_0x198790[_0x047c('0x38')]:_0x424820[_0x047c('0x34')];if(!_0x4d39c7[_0x047c('0x35')][_0x047c('0x3a')]('nolimit')){_0x198790[_0x047c('0x1d')]=qs['limit'](_0x4d39c7['query'][_0x047c('0x1d')]);_0x198790['offset']=qs[_0x047c('0x1f')](_0x4d39c7['query'][_0x047c('0x1f')]);}_0x198790[_0x047c('0x3c')]=qs[_0x047c('0x3d')](_0x4d39c7[_0x047c('0x35')]['sort']);_0x198790['where']=qs['filters'](_[_0x047c('0x3e')](_0x4d39c7[_0x047c('0x35')],_0x424820[_0x047c('0x36')]));_0x198790[_0x047c('0x40')][_0x047c('0x61')]=_0x879abe['id'];if(_0x4d39c7['query'][_0x047c('0x3f')]){_0x198790[_0x047c('0x40')]=_[_0x047c('0x41')](_0x198790['where'],{'$or':_['map'](_0x198790[_0x047c('0x38')],function(_0x3ad340){var _0x1c07a4={};_0x1c07a4[_0x3ad340]={'$like':'%'+_0x4d39c7[_0x047c('0x35')]['filter']+'%'};return _0x1c07a4;})});}_0x198790=_['merge']({},_0x198790,_0x4d39c7['options']);return db[_0x047c('0x60')]['count']({'where':_0x198790[_0x047c('0x40')]})[_0x047c('0x26')](function(_0x39cd57){_0x103d33[_0x047c('0x1e')]=_0x39cd57;if(_0x4d39c7[_0x047c('0x35')][_0x047c('0x45')]){_0x198790[_0x047c('0x4d')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x047c('0x46')](_0x198790);})[_0x047c('0x26')](function(_0x16b89e){_0x103d33[_0x047c('0x47')]=_0x16b89e;return _0x103d33;});}})[_0x047c('0x26')](respondWithFilteredResult(_0x3126d2,_0x198790))[_0x047c('0x48')](handleError(_0x3126d2,null));};exports[_0x047c('0x62')]=function(_0x2655b9,_0x3ddd3f,_0x544af4){var _0x5ba989={'raw':!![],'where':{}};var _0x1b72ad={};var _0x45027c={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x2655b9[_0x047c('0x49')]['id']}})[_0x047c('0x26')](handleEntityNotFound(_0x3ddd3f,null))[_0x047c('0x26')](function(_0x587953){if(_0x587953){_0x1b72ad['model']=_[_0x047c('0x4b')](db[_0x047c('0x63')][_0x047c('0x4a')]);_0x1b72ad[_0x047c('0x35')]=_['keys'](_0x2655b9[_0x047c('0x35')]);_0x1b72ad[_0x047c('0x36')]=_[_0x047c('0x37')](_0x1b72ad['model'],_0x1b72ad[_0x047c('0x35')]);_0x5ba989[_0x047c('0x38')]=_[_0x047c('0x37')](_0x1b72ad[_0x047c('0x34')],qs[_0x047c('0x39')](_0x2655b9[_0x047c('0x35')][_0x047c('0x39')]));_0x5ba989['attributes']=_0x5ba989[_0x047c('0x38')][_0x047c('0x4c')]?_0x5ba989[_0x047c('0x38')]:_0x1b72ad[_0x047c('0x34')];if(!_0x2655b9[_0x047c('0x35')][_0x047c('0x3a')](_0x047c('0x3b'))){_0x5ba989[_0x047c('0x1d')]=qs[_0x047c('0x1d')](_0x2655b9[_0x047c('0x35')][_0x047c('0x1d')]);_0x5ba989[_0x047c('0x1f')]=qs['offset'](_0x2655b9['query'][_0x047c('0x1f')]);}_0x5ba989[_0x047c('0x3c')]=qs['sort'](_0x2655b9[_0x047c('0x35')]['sort']);_0x5ba989[_0x047c('0x40')]=qs[_0x047c('0x36')](_['pick'](_0x2655b9[_0x047c('0x35')],_0x1b72ad['filters']));_0x5ba989[_0x047c('0x40')]['CampaignId']=_0x587953['id'];if(_0x2655b9[_0x047c('0x35')][_0x047c('0x3f')]){_0x5ba989[_0x047c('0x40')]=_[_0x047c('0x41')](_0x5ba989['where'],{'$or':_[_0x047c('0x31')](_0x5ba989[_0x047c('0x38')],function(_0x184b55){var _0x39a24c={};_0x39a24c[_0x184b55]={'$like':'%'+_0x2655b9[_0x047c('0x35')][_0x047c('0x3f')]+'%'};return _0x39a24c;})});}_0x5ba989=_[_0x047c('0x41')]({},_0x5ba989,_0x2655b9[_0x047c('0x4e')]);return db['CmHopperFinal']['count']({'where':_0x5ba989[_0x047c('0x40')]})[_0x047c('0x26')](function(_0x181d9f){_0x45027c[_0x047c('0x1e')]=_0x181d9f;if(_0x2655b9[_0x047c('0x35')][_0x047c('0x45')]){_0x5ba989[_0x047c('0x4d')]=[{'all':!![]}];}return db[_0x047c('0x63')][_0x047c('0x46')](_0x5ba989);})[_0x047c('0x26')](function(_0x5c0f53){_0x45027c['rows']=_0x5c0f53;return _0x45027c;});}})[_0x047c('0x26')](respondWithFilteredResult(_0x3ddd3f,_0x5ba989))[_0x047c('0x48')](handleError(_0x3ddd3f,null));};exports['getHopperBlacks']=function(_0x4cd6a7,_0x3e2e7b,_0x2be4d1){var _0x408694={'raw':!![],'where':{}};var _0x347fa1={};var _0x46804d={'count':0x0,'rows':[]};return db[_0x047c('0x44')][_0x047c('0x5e')]({'where':{'id':_0x4cd6a7[_0x047c('0x49')]['id']}})[_0x047c('0x26')](handleEntityNotFound(_0x3e2e7b,null))[_0x047c('0x26')](function(_0x17b98b){if(_0x17b98b){_0x347fa1[_0x047c('0x34')]=_['keys'](db[_0x047c('0x64')][_0x047c('0x4a')]);_0x347fa1[_0x047c('0x35')]=_[_0x047c('0x4b')](_0x4cd6a7[_0x047c('0x35')]);_0x347fa1['filters']=_[_0x047c('0x37')](_0x347fa1['model'],_0x347fa1[_0x047c('0x35')]);_0x408694[_0x047c('0x38')]=_[_0x047c('0x37')](_0x347fa1[_0x047c('0x34')],qs[_0x047c('0x39')](_0x4cd6a7[_0x047c('0x35')][_0x047c('0x39')]));_0x408694[_0x047c('0x38')]=_0x408694[_0x047c('0x38')][_0x047c('0x4c')]?_0x408694['attributes']:_0x347fa1[_0x047c('0x34')];if(!_0x4cd6a7['query']['hasOwnProperty'](_0x047c('0x3b'))){_0x408694['limit']=qs[_0x047c('0x1d')](_0x4cd6a7['query'][_0x047c('0x1d')]);_0x408694[_0x047c('0x1f')]=qs[_0x047c('0x1f')](_0x4cd6a7[_0x047c('0x35')][_0x047c('0x1f')]);}_0x408694[_0x047c('0x3c')]=qs['sort'](_0x4cd6a7['query'][_0x047c('0x3d')]);_0x408694[_0x047c('0x40')]=qs[_0x047c('0x36')](_[_0x047c('0x3e')](_0x4cd6a7[_0x047c('0x35')],_0x347fa1[_0x047c('0x36')]));_0x408694[_0x047c('0x40')][_0x047c('0x61')]=_0x17b98b['id'];if(_0x4cd6a7['query']['filter']){_0x408694[_0x047c('0x40')]=_['merge'](_0x408694[_0x047c('0x40')],{'$or':_[_0x047c('0x31')](_0x408694[_0x047c('0x38')],function(_0x44d959){var _0x5598b2={};_0x5598b2[_0x44d959]={'$like':'%'+_0x4cd6a7[_0x047c('0x35')][_0x047c('0x3f')]+'%'};return _0x5598b2;})});}_0x408694=_['merge']({},_0x408694,_0x4cd6a7[_0x047c('0x4e')]);return db[_0x047c('0x64')][_0x047c('0x1e')]({'where':_0x408694['where']})[_0x047c('0x26')](function(_0x50724b){_0x46804d[_0x047c('0x1e')]=_0x50724b;if(_0x4cd6a7[_0x047c('0x35')]['includeAll']){_0x408694[_0x047c('0x4d')]=[{'all':!![]}];}return db[_0x047c('0x64')][_0x047c('0x46')](_0x408694);})['then'](function(_0x58dd57){_0x46804d[_0x047c('0x47')]=_0x58dd57;return _0x46804d;});}})[_0x047c('0x26')](respondWithFilteredResult(_0x3e2e7b,_0x408694))[_0x047c('0x48')](handleError(_0x3e2e7b,null));};exports[_0x047c('0x65')]=function(_0x181e6f,_0x3337c0,_0x583a59){var _0x401fa4={};var _0x464dcb={};var _0x4bf742;var _0x37d680;return db[_0x047c('0x44')][_0x047c('0x5e')]({'where':{'id':_0x181e6f['params']['id']}})[_0x047c('0x26')](handleEntityNotFound(_0x3337c0,null))[_0x047c('0x26')](function(_0x58e39a){if(_0x58e39a){_0x4bf742=_0x58e39a;_0x464dcb[_0x047c('0x34')]=_[_0x047c('0x4b')](db[_0x047c('0x66')][_0x047c('0x4a')]);_0x464dcb[_0x047c('0x35')]=_['keys'](_0x181e6f[_0x047c('0x35')]);_0x464dcb[_0x047c('0x36')]=_[_0x047c('0x37')](_0x464dcb[_0x047c('0x34')],_0x464dcb[_0x047c('0x35')]);_0x401fa4[_0x047c('0x38')]=_[_0x047c('0x37')](_0x464dcb[_0x047c('0x34')],qs['fields'](_0x181e6f[_0x047c('0x35')][_0x047c('0x39')]));_0x401fa4[_0x047c('0x38')]=_0x401fa4[_0x047c('0x38')][_0x047c('0x4c')]?_0x401fa4[_0x047c('0x38')]:_0x464dcb[_0x047c('0x34')];_0x401fa4[_0x047c('0x3c')]=qs[_0x047c('0x3d')](_0x181e6f[_0x047c('0x35')][_0x047c('0x3d')]);_0x401fa4[_0x047c('0x40')]=qs[_0x047c('0x36')](_[_0x047c('0x3e')](_0x181e6f[_0x047c('0x35')],_0x464dcb['filters']));if(_0x181e6f[_0x047c('0x35')][_0x047c('0x3f')]){_0x401fa4[_0x047c('0x40')]=_[_0x047c('0x41')](_0x401fa4[_0x047c('0x40')],{'$or':_[_0x047c('0x31')](_0x401fa4['attributes'],function(_0x4055a8){var _0xd5c754={};_0xd5c754[_0x4055a8]={'$like':'%'+_0x181e6f['query']['filter']+'%'};return _0xd5c754;})});}_0x401fa4=_[_0x047c('0x41')]({},_0x401fa4,_0x181e6f[_0x047c('0x4e')]);return _0x4bf742['getLists'](_0x401fa4);}})[_0x047c('0x26')](function(_0xefbf14){if(_0xefbf14){_0x37d680=_0xefbf14['length'];if(!_0x181e6f[_0x047c('0x35')][_0x047c('0x3a')]('nolimit')){_0x401fa4[_0x047c('0x1d')]=qs[_0x047c('0x1d')](_0x181e6f[_0x047c('0x35')][_0x047c('0x1d')]);_0x401fa4['offset']=qs[_0x047c('0x1f')](_0x181e6f[_0x047c('0x35')][_0x047c('0x1f')]);}return _0x4bf742[_0x047c('0x65')](_0x401fa4);}})[_0x047c('0x26')](function(_0x509af6){if(_0x509af6){return _0x509af6?{'count':_0x37d680,'rows':_0x509af6}:null;}})[_0x047c('0x26')](respondWithResult(_0x3337c0,null))['catch'](handleError(_0x3337c0,null));};exports[_0x047c('0x67')]=function(_0x48df4d,_0x1597e5,_0x4c6367){var _0x2140f7,_0x33e4ae;var _0x39920a=[];var _0x452022=moment()[_0x047c('0x68')]('YYYY-MM-DD\x20HH:mm:ss');return db['Campaign']['find']({'where':{'id':_0x48df4d[_0x047c('0x49')]['id']}})['then'](handleEntityNotFound(_0x1597e5,null))['then'](function(_0x338ead){if(_0x338ead){_0x33e4ae=_0x338ead;return _0x338ead['addLists'](_0x48df4d['body']['ids'],_[_0x047c('0x5a')](_0x48df4d[_0x047c('0x50')],[_0x047c('0x69'),'id'])||{});}return null;})[_0x047c('0x6a')](function(_0xd78606){var _0x3ce59b;var _0x47f68a;_0x2140f7=_0xd78606||[];var _0x11391f=[];if(_0xd78606){for(var _0x5f3d04=0x0;_0x5f3d04<_0xd78606[_0x047c('0x4c')];_0x5f3d04+=0x1){var _0x15eee0=_0xd78606[_0x5f3d04][_0x047c('0x27')]({'plain':!![]});_0x33e4ae[_0x047c('0x6b')]=_0x48df4d['body']['dialCheckDuplicateType']?_0x48df4d[_0x047c('0x50')][_0x047c('0x6b')]:_0x33e4ae['dialCheckDuplicateType'];switch(_0x33e4ae[_0x047c('0x6b')]){case _0x047c('0x6c'):_0x3ce59b=squel[_0x047c('0x6d')]()['into']('cm_hopper')[_0x047c('0x6e')](['phone',_0x047c('0x6f'),'ContactId',_0x047c('0x70'),'CampaignId',_0x047c('0x5b'),_0x047c('0x5c')],squel[_0x047c('0x71')]()[_0x047c('0x72')](_0x047c('0x73'),_0x047c('0x73'))['field'](_0x047c('0x74'),_0x047c('0x6f'))['field']('id',_0x047c('0x75'))[_0x047c('0x72')](_0x15eee0[_0x047c('0x76')][_0x047c('0x77')](),_0x047c('0x70'))[_0x047c('0x72')](_0x48df4d[_0x047c('0x49')]['id'][_0x047c('0x77')](),_0x047c('0x61'))['field']('\x27'+_0x452022+'\x27',_0x047c('0x5b'))['field']('\x27'+_0x452022+'\x27',_0x047c('0x5c'))['from'](_0x047c('0x78'))[_0x047c('0x40')](_0x047c('0x79'))['where'](_0x047c('0x7a'),_0x15eee0[_0x047c('0x76')][_0x047c('0x77')]())[_0x047c('0x40')](_0x047c('0x7b'))[_0x047c('0x40')](_0x047c('0x7c'),squel['select']()[_0x047c('0x72')](_0x047c('0x7d'))[_0x047c('0x7e')]('cm_hopper_final')[_0x047c('0x40')](_0x047c('0x7f'),_0x48df4d[_0x047c('0x49')]['id'][_0x047c('0x77')]()))[_0x047c('0x40')](_0x047c('0x7c'),squel[_0x047c('0x71')]()[_0x047c('0x72')](_0x047c('0x80'))[_0x047c('0x7e')](_0x047c('0x81'))['where'](_0x047c('0x7f'),_0x48df4d['params']['id'][_0x047c('0x77')]())))[_0x047c('0x77')]();break;case _0x047c('0x82'):_0x3ce59b=squel[_0x047c('0x6d')]()['into'](_0x047c('0x81'))['fromQuery']([_0x047c('0x73'),_0x047c('0x6f'),'ContactId',_0x047c('0x70'),'CampaignId','createdAt',_0x047c('0x5c')],squel[_0x047c('0x71')]()[_0x047c('0x72')](_0x047c('0x73'),_0x047c('0x73'))[_0x047c('0x72')](_0x047c('0x74'),'scheduledAt')[_0x047c('0x72')]('id',_0x047c('0x75'))['field'](_0x15eee0[_0x047c('0x76')][_0x047c('0x77')](),_0x047c('0x70'))[_0x047c('0x72')](_0x48df4d[_0x047c('0x49')]['id']['toString'](),_0x047c('0x61'))[_0x047c('0x72')]('\x27'+_0x452022+'\x27','createdAt')[_0x047c('0x72')]('\x27'+_0x452022+'\x27',_0x047c('0x5c'))['from'](_0x047c('0x78'))[_0x047c('0x40')](_0x047c('0x79'))[_0x047c('0x40')](_0x047c('0x7a'),_0x15eee0[_0x047c('0x76')][_0x047c('0x77')]())['where'](_0x047c('0x7b'))[_0x047c('0x40')](_0x047c('0x7c'),squel[_0x047c('0x71')]()[_0x047c('0x72')](_0x047c('0x80'))[_0x047c('0x7e')](_0x047c('0x81'))['where'](_0x047c('0x7f'),_0x48df4d[_0x047c('0x49')]['id']['toString']())))['toString']();break;default:_0x3ce59b=squel[_0x047c('0x6d')]()[_0x047c('0x83')](_0x047c('0x81'))[_0x047c('0x6e')]([_0x047c('0x73'),'scheduledAt',_0x047c('0x75'),'ListId',_0x047c('0x61'),'createdAt','updatedAt'],squel[_0x047c('0x71')]()[_0x047c('0x72')](_0x047c('0x73'),_0x047c('0x73'))[_0x047c('0x72')]('NOW()',_0x047c('0x6f'))[_0x047c('0x72')]('id',_0x047c('0x75'))[_0x047c('0x72')](_0x15eee0[_0x047c('0x76')][_0x047c('0x77')](),_0x047c('0x70'))[_0x047c('0x72')](_0x48df4d['params']['id'][_0x047c('0x77')](),_0x047c('0x61'))[_0x047c('0x72')]('\x27'+_0x452022+'\x27',_0x047c('0x5b'))[_0x047c('0x72')]('\x27'+_0x452022+'\x27',_0x047c('0x5c'))[_0x047c('0x7e')]('cm_contacts')['where']('deletedAt\x20IS\x20NULL')[_0x047c('0x40')](_0x047c('0x7a'),_0x15eee0[_0x047c('0x76')][_0x047c('0x77')]())[_0x047c('0x40')](_0x047c('0x7b')))[_0x047c('0x77')]();}_0x47f68a=squel[_0x047c('0x6d')]()[_0x047c('0x83')]('cm_hopper_additional_phones')[_0x047c('0x6e')](['cmHopperId',_0x047c('0x6f'),'phone',_0x047c('0x84'),_0x047c('0x5b'),'updatedAt'],squel[_0x047c('0x71')]()['field'](_0x047c('0x85'),'id')[_0x047c('0x72')](_0x047c('0x74'),_0x047c('0x6f'))[_0x047c('0x72')]('ci.item','phone')['field'](_0x047c('0x86'),'OrderBy')[_0x047c('0x72')]('\x27'+_0x452022+'\x27',_0x047c('0x5b'))[_0x047c('0x72')]('\x27'+_0x452022+'\x27',_0x047c('0x5c'))[_0x047c('0x7e')](_0x047c('0x87'),'ci')[_0x047c('0x88')](_0x047c('0x81'),'h','h.ContactId\x20=\x20ci.CmContactId')[_0x047c('0x40')](_0x047c('0x89'),_0x15eee0['CmListId'][_0x047c('0x77')]())[_0x047c('0x40')](_0x047c('0x8a'),_0x48df4d['params']['id'][_0x047c('0x77')]())[_0x047c('0x40')](_0x047c('0x8b'),_0x452022))[_0x047c('0x77')]();_0x11391f[_0x047c('0x8c')](db[_0x047c('0x8d')][_0x047c('0x35')](_0x3ce59b));_0x39920a[_0x047c('0x8c')](db['sequelize'][_0x047c('0x35')](_0x47f68a));}return BPromise[_0x047c('0x8e')](_0x11391f);}})[_0x047c('0x26')](function(){return BPromise['all'](_0x39920a);})[_0x047c('0x26')](function(){return _0x2140f7;})['then'](respondWithResult(_0x1597e5,null))[_0x047c('0x48')](handleError(_0x1597e5,null));};exports['removeLists']=function(_0x14209a,_0x43a416,_0xa0fb10){return db[_0x047c('0x44')][_0x047c('0x55')]({'where':{'id':_0x14209a[_0x047c('0x49')]['id']}})['then'](handleEntityNotFound(_0x43a416,null))['then'](function(_0x25d0a0){if(_0x25d0a0){return _0x25d0a0['removeLists'](_0x14209a['query'][_0x047c('0x69')]);}})['then'](function(_0x1495e0){if(_0x1495e0){return db[_0x047c('0x5f')][_0x047c('0x2a')]({'where':{'ListId':_0x14209a[_0x047c('0x35')][_0x047c('0x69')],'CampaignId':_0x14209a['params']['id']}})[_0x047c('0x26')](function(){return _0x1495e0;});}})['then'](respondWithStatusCode(_0x43a416,null))['catch'](handleError(_0x43a416,null));};exports['getBlackLists']=function(_0x35a688,_0x593c4c,_0x3b2c59){var _0x4d635f={};var _0x3d63ae={};var _0x330989;var _0x5e5008;return db[_0x047c('0x44')][_0x047c('0x5e')]({'where':{'id':_0x35a688[_0x047c('0x49')]['id']}})[_0x047c('0x26')](handleEntityNotFound(_0x593c4c,null))[_0x047c('0x26')](function(_0x1cfa94){if(_0x1cfa94){_0x330989=_0x1cfa94;_0x3d63ae[_0x047c('0x34')]=_[_0x047c('0x4b')](db['CmList'][_0x047c('0x4a')]);_0x3d63ae[_0x047c('0x35')]=_[_0x047c('0x4b')](_0x35a688[_0x047c('0x35')]);_0x3d63ae[_0x047c('0x36')]=_[_0x047c('0x37')](_0x3d63ae[_0x047c('0x34')],_0x3d63ae[_0x047c('0x35')]);_0x4d635f[_0x047c('0x38')]=_['intersection'](_0x3d63ae['model'],qs[_0x047c('0x39')](_0x35a688[_0x047c('0x35')][_0x047c('0x39')]));_0x4d635f[_0x047c('0x38')]=_0x4d635f[_0x047c('0x38')]['length']?_0x4d635f['attributes']:_0x3d63ae['model'];_0x4d635f[_0x047c('0x3c')]=qs[_0x047c('0x3d')](_0x35a688[_0x047c('0x35')][_0x047c('0x3d')]);_0x4d635f[_0x047c('0x40')]=qs[_0x047c('0x36')](_[_0x047c('0x3e')](_0x35a688[_0x047c('0x35')],_0x3d63ae['filters']));if(_0x35a688[_0x047c('0x35')]['filter']){_0x4d635f[_0x047c('0x40')]=_[_0x047c('0x41')](_0x4d635f[_0x047c('0x40')],{'$or':_[_0x047c('0x31')](_0x4d635f[_0x047c('0x38')],function(_0x22e9dd){var _0x8b05be={};_0x8b05be[_0x22e9dd]={'$like':'%'+_0x35a688[_0x047c('0x35')][_0x047c('0x3f')]+'%'};return _0x8b05be;})});}_0x4d635f=_[_0x047c('0x41')]({},_0x4d635f,_0x35a688[_0x047c('0x4e')]);return _0x330989[_0x047c('0x8f')](_0x4d635f);}})[_0x047c('0x26')](function(_0xd8f37d){if(_0xd8f37d){_0x5e5008=_0xd8f37d[_0x047c('0x4c')];if(!_0x35a688['query'][_0x047c('0x3a')](_0x047c('0x3b'))){_0x4d635f[_0x047c('0x1d')]=qs[_0x047c('0x1d')](_0x35a688['query'][_0x047c('0x1d')]);_0x4d635f[_0x047c('0x1f')]=qs[_0x047c('0x1f')](_0x35a688['query']['offset']);}return _0x330989[_0x047c('0x8f')](_0x4d635f);}})['then'](function(_0x4851e6){if(_0x4851e6){return _0x4851e6?{'count':_0x5e5008,'rows':_0x4851e6}:null;}})[_0x047c('0x26')](respondWithResult(_0x593c4c,null))[_0x047c('0x48')](handleError(_0x593c4c,null));};exports['addBlackLists']=function(_0x2287e9,_0x424a45,_0x3a54e7){var _0x38718b,_0x50e9d7;var _0x12ac82=[];var _0x5d8b95=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');return db[_0x047c('0x44')][_0x047c('0x55')]({'where':{'id':_0x2287e9[_0x047c('0x49')]['id']}})[_0x047c('0x26')](handleEntityNotFound(_0x424a45,null))['then'](function(_0x4933f9){if(_0x4933f9){_0x50e9d7=_0x4933f9;return _0x4933f9[_0x047c('0x90')](_0x2287e9['body'][_0x047c('0x69')],_[_0x047c('0x5a')](_0x2287e9[_0x047c('0x50')],['ids','id'])||{});}return null;})['spread'](function(_0x2c1781){var _0x461123;var _0x273f4d;_0x38718b=_0x2c1781||[];var _0x10e45c=[];if(_0x2c1781){for(var _0x383351=0x0;_0x383351<_0x2c1781[_0x047c('0x4c')];_0x383351+=0x1){var _0x536d65=_0x2c1781[_0x383351]['get']({'plain':!![]});_0x461123=squel[_0x047c('0x6d')]()[_0x047c('0x83')]('cm_hopper_black')[_0x047c('0x6e')]([_0x047c('0x73'),'ContactId','ListId','CampaignId','createdAt',_0x047c('0x5c')],squel['select']()['field']('phone',_0x047c('0x73'))[_0x047c('0x72')]('id',_0x047c('0x75'))[_0x047c('0x72')](_0x536d65[_0x047c('0x76')][_0x047c('0x77')](),_0x047c('0x70'))['field'](_0x2287e9[_0x047c('0x49')]['id'][_0x047c('0x77')](),_0x047c('0x61'))[_0x047c('0x72')]('NOW()',_0x047c('0x5b'))['field'](_0x047c('0x74'),_0x047c('0x5c'))[_0x047c('0x7e')](_0x047c('0x78'))[_0x047c('0x40')](_0x047c('0x79'))[_0x047c('0x40')](_0x047c('0x7a'),_0x536d65['CmListId']['toString']())['where'](_0x047c('0x7b')))[_0x047c('0x77')]();_0x10e45c['push'](db[_0x047c('0x8d')]['query'](_0x461123));}return BPromise[_0x047c('0x8e')](_0x10e45c);}})[_0x047c('0x26')](function(){return _0x38718b;})['then'](respondWithResult(_0x424a45,null))[_0x047c('0x48')](handleError(_0x424a45,null));};exports[_0x047c('0x91')]=function(_0x26b2bb,_0x4a02f7,_0x3f71b7){return db[_0x047c('0x44')][_0x047c('0x55')]({'where':{'id':_0x26b2bb[_0x047c('0x49')]['id']}})[_0x047c('0x26')](handleEntityNotFound(_0x4a02f7,null))['then'](function(_0x5cb19a){if(_0x5cb19a){return _0x5cb19a[_0x047c('0x91')](_0x26b2bb[_0x047c('0x35')][_0x047c('0x69')]);}})['then'](function(_0x1e1649){if(_0x1e1649){return db['CmHopperBlack'][_0x047c('0x2a')]({'where':{'ListId':_0x26b2bb['query'][_0x047c('0x69')],'CampaignId':_0x26b2bb[_0x047c('0x49')]['id']}})[_0x047c('0x26')](function(){return _0x1e1649;});}})[_0x047c('0x26')](respondWithStatusCode(_0x4a02f7,null))[_0x047c('0x48')](handleError(_0x4a02f7,null));};
\ No newline at end of file
+var _0x41f6=['bluebird','mustache','util','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','end','json','undefined','limit','offset','count','set','apply','reject','update','destroy','then','UserProfileResource','sendStatus','error','name','send','index','map','Campaign','rawAttributes','fieldName','model','query','attributes','intersection','fields','length','nolimit','order','sort','where','filters','pick','merge','type','VIRTUAL','options','findAll','rows','catch','show','keys','include','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','clone','includeAll','find','createdAt','updatedAt','omit','IvrCampaigns','UserProfileSection','autoAssociation','getHoppers','findOne','params','CmHopper','hasOwnProperty','CampaignId','filter','getHopperHistories','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','format','ids','spread','dialCheckDuplicateType','insert','into','cm_hopper','phone','ContactId','ListId','select','field','NOW()','scheduledAt','CmListId','cm_contacts','deletedAt\x20IS\x20NULL','toString','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','from','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','fromQuery','phone\x20IS\x20NOT\x20NULL','ListId\x20=\x20?','cmHopperId','h.id','ci.item','OrderBy','cm_contact_has_items','join','h.ContactId\x20=\x20ci.CmContactId','h.ListId\x20=\x20?','h.CampaignId=?','h.createdAt\x20=\x20?','push','sequelize','all','removeLists','getBlackLists','addBlackLists','YYYY-MM-DD\x20HH:mm:ss','cm_hopper_black','removeBlackLists','eml-format','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0x41f6,0x8e));var _0x641f=function(_0x189305,_0x46c43f){_0x189305=_0x189305-0x0;var _0xea3406=_0x41f6[_0x189305];return _0xea3406;};'use strict';var emlformat=require(_0x641f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x641f('0x1'));var jsonpatch=require(_0x641f('0x2'));var rp=require(_0x641f('0x3'));var moment=require(_0x641f('0x4'));var BPromise=require(_0x641f('0x5'));var Mustache=require(_0x641f('0x6'));var util=require(_0x641f('0x7'));var path=require(_0x641f('0x8'));var sox=require(_0x641f('0x9'));var csv=require(_0x641f('0xa'));var ejs=require(_0x641f('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x641f('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x641f('0xd'));var deskjs=require(_0x641f('0xe'));var toCsv=require(_0x641f('0xa'));var querystring=require(_0x641f('0xf'));var Papa=require(_0x641f('0x10'));var Redis=require(_0x641f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x641f('0x12'));var as=require(_0x641f('0x13'));var hardwareService=require(_0x641f('0x14'));var logger=require(_0x641f('0x15'))(_0x641f('0x16'));var utils=require(_0x641f('0x17'));var config=require(_0x641f('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x589ac5,_0x24ef04){_0x24ef04=_0x24ef04||0xcc;return function(_0xcaa5f7){if(_0xcaa5f7){return _0x589ac5['sendStatus'](_0x24ef04);}return _0x589ac5[_0x641f('0x19')](_0x24ef04)[_0x641f('0x1a')]();};}function respondWithResult(_0x29aa7a,_0x453bf7){_0x453bf7=_0x453bf7||0xc8;return function(_0x21918e){if(_0x21918e){return _0x29aa7a[_0x641f('0x19')](_0x453bf7)[_0x641f('0x1b')](_0x21918e);}};}function respondWithFilteredResult(_0x5b0660,_0x30ef52){return function(_0x51b24e){if(_0x51b24e){var _0x5a1b7f=typeof _0x30ef52['offset']===_0x641f('0x1c')&&typeof _0x30ef52[_0x641f('0x1d')]===_0x641f('0x1c');var _0x510696=_0x51b24e['count'];var _0x33bd72=_0x5a1b7f?0x0:_0x30ef52[_0x641f('0x1e')];var _0x4e4dfb=_0x5a1b7f?_0x51b24e[_0x641f('0x1f')]:_0x30ef52[_0x641f('0x1e')]+_0x30ef52['limit'];var _0x1ff173;if(_0x4e4dfb>=_0x510696){_0x4e4dfb=_0x510696;_0x1ff173=0xc8;}else{_0x1ff173=0xce;}_0x5b0660[_0x641f('0x19')](_0x1ff173);return _0x5b0660[_0x641f('0x20')]('Content-Range',_0x33bd72+'-'+_0x4e4dfb+'/'+_0x510696)[_0x641f('0x1b')](_0x51b24e);}return null;};}function patchUpdates(_0x6e8629){return function(_0x1262f6){try{jsonpatch[_0x641f('0x21')](_0x1262f6,_0x6e8629,!![]);}catch(_0x3fe678){return BPromise[_0x641f('0x22')](_0x3fe678);}return _0x1262f6['save']();};}function saveUpdates(_0x2b0ced,_0x50e391){return function(_0x4e116e){if(_0x4e116e){return _0x4e116e[_0x641f('0x23')](_0x2b0ced)['then'](function(_0x3433c1){return _0x3433c1;});}return null;};}function removeEntity(_0x2d4930,_0x148718){return function(_0x172ad6){if(_0x172ad6){return _0x172ad6[_0x641f('0x24')]()[_0x641f('0x25')](function(){var _0x4a3d2a=_0x172ad6['get']({'plain':!![]});var _0x2b2452='IvrCampaigns';return db[_0x641f('0x26')][_0x641f('0x24')]({'where':{'type':_0x2b2452,'resourceId':_0x4a3d2a['id']}})[_0x641f('0x25')](function(){return _0x172ad6;});})[_0x641f('0x25')](function(){_0x2d4930[_0x641f('0x19')](0xcc)[_0x641f('0x1a')]();});}};}function handleEntityNotFound(_0x596e0f,_0x1831ab){return function(_0xedd07f){if(!_0xedd07f){_0x596e0f[_0x641f('0x27')](0x194);}return _0xedd07f;};}function handleError(_0x5d7774,_0x429c9f){_0x429c9f=_0x429c9f||0x1f4;return function(_0x47fc26){logger[_0x641f('0x28')](_0x47fc26['stack']);if(_0x47fc26[_0x641f('0x29')]){delete _0x47fc26['name'];}_0x5d7774[_0x641f('0x19')](_0x429c9f)[_0x641f('0x2a')](_0x47fc26);};}exports[_0x641f('0x2b')]=function(_0x138810,_0x557fb1){var _0xe3b9d3={},_0x4b0dbc={},_0x1e2470={'count':0x0,'rows':[]};var _0x184532=_[_0x641f('0x2c')](db[_0x641f('0x2d')][_0x641f('0x2e')],function(_0x56167f){return{'name':_0x56167f[_0x641f('0x2f')],'type':_0x56167f['type']['key']};});_0x4b0dbc[_0x641f('0x30')]=_[_0x641f('0x2c')](_0x184532,_0x641f('0x29'));_0x4b0dbc[_0x641f('0x31')]=_['keys'](_0x138810[_0x641f('0x31')]);_0x4b0dbc['filters']=_['intersection'](_0x4b0dbc[_0x641f('0x30')],_0x4b0dbc[_0x641f('0x31')]);_0xe3b9d3[_0x641f('0x32')]=_[_0x641f('0x33')](_0x4b0dbc[_0x641f('0x30')],qs[_0x641f('0x34')](_0x138810[_0x641f('0x31')][_0x641f('0x34')]));_0xe3b9d3[_0x641f('0x32')]=_0xe3b9d3[_0x641f('0x32')][_0x641f('0x35')]?_0xe3b9d3[_0x641f('0x32')]:_0x4b0dbc[_0x641f('0x30')];if(!_0x138810[_0x641f('0x31')]['hasOwnProperty'](_0x641f('0x36'))){_0xe3b9d3[_0x641f('0x1d')]=qs[_0x641f('0x1d')](_0x138810['query'][_0x641f('0x1d')]);_0xe3b9d3[_0x641f('0x1e')]=qs[_0x641f('0x1e')](_0x138810[_0x641f('0x31')][_0x641f('0x1e')]);}_0xe3b9d3[_0x641f('0x37')]=qs[_0x641f('0x38')](_0x138810['query']['sort']);_0xe3b9d3[_0x641f('0x39')]=qs[_0x641f('0x3a')](_[_0x641f('0x3b')](_0x138810['query'],_0x4b0dbc[_0x641f('0x3a')]),_0x184532);if(_0x138810[_0x641f('0x31')]['filter']){_0xe3b9d3[_0x641f('0x39')]=_[_0x641f('0x3c')](_0xe3b9d3[_0x641f('0x39')],{'$or':_[_0x641f('0x2c')](_0x184532,function(_0x20a575){if(_0x20a575[_0x641f('0x3d')]!==_0x641f('0x3e')){var _0x22b7c4={};_0x22b7c4[_0x20a575[_0x641f('0x29')]]={'$like':'%'+_0x138810[_0x641f('0x31')]['filter']+'%'};return _0x22b7c4;}})});}_0xe3b9d3=_[_0x641f('0x3c')]({},_0xe3b9d3,_0x138810[_0x641f('0x3f')]);var _0x3b3d2b={'where':_0xe3b9d3[_0x641f('0x39')]};return db[_0x641f('0x2d')][_0x641f('0x1f')](_0x3b3d2b)['then'](function(_0x5119b0){_0x1e2470['count']=_0x5119b0;if(_0x138810[_0x641f('0x31')]['includeAll']){_0xe3b9d3['include']=[{'all':!![]}];}return db['Campaign'][_0x641f('0x40')](_0xe3b9d3);})[_0x641f('0x25')](function(_0x2f3604){_0x1e2470[_0x641f('0x41')]=_0x2f3604;return _0x1e2470;})['then'](respondWithFilteredResult(_0x557fb1,_0xe3b9d3))[_0x641f('0x42')](handleError(_0x557fb1,null));};exports[_0x641f('0x43')]=function(_0x4c0fe9,_0x45dbe4){var _0x3807fd={'raw':![],'where':{'id':_0x4c0fe9['params']['id']}},_0x5e839a={};_0x5e839a[_0x641f('0x30')]=_[_0x641f('0x44')](db['Campaign'][_0x641f('0x2e')]);_0x5e839a[_0x641f('0x31')]=_[_0x641f('0x44')](_0x4c0fe9[_0x641f('0x31')]);_0x5e839a['filters']=_[_0x641f('0x33')](_0x5e839a[_0x641f('0x30')],_0x5e839a['query']);_0x3807fd['attributes']=_[_0x641f('0x33')](_0x5e839a['model'],qs[_0x641f('0x34')](_0x4c0fe9[_0x641f('0x31')][_0x641f('0x34')]));_0x3807fd[_0x641f('0x32')]=_0x3807fd[_0x641f('0x32')][_0x641f('0x35')]?_0x3807fd['attributes']:_0x5e839a[_0x641f('0x30')];if(_0x4c0fe9[_0x641f('0x31')]['includeAll']){_0x3807fd[_0x641f('0x45')]=[{'all':!![]}];}_0x3807fd=_[_0x641f('0x3c')]({},_0x3807fd,_0x4c0fe9[_0x641f('0x3f')]);return db[_0x641f('0x2d')]['find'](_0x3807fd)[_0x641f('0x25')](handleEntityNotFound(_0x45dbe4,null))[_0x641f('0x25')](respondWithResult(_0x45dbe4,null))['catch'](handleError(_0x45dbe4,null));};exports['create']=function(_0x532e4e,_0x401650){return db['Campaign'][_0x641f('0x46')](_0x532e4e[_0x641f('0x47')],{})[_0x641f('0x25')](function(_0x235016){var _0x34109e=_0x532e4e[_0x641f('0x48')][_0x641f('0x49')]({'plain':!![]});if(!_0x34109e)throw new Error(_0x641f('0x4a'));if(_0x34109e[_0x641f('0x4b')]===_0x641f('0x48')){var _0x11e0c8=_0x235016['get']({'plain':!![]});var _0x425d3a='IvrCampaigns';return db['UserProfileSection']['find']({'where':{'name':_0x425d3a,'userProfileId':_0x34109e['userProfileId']},'raw':!![]})['then'](function(_0x2f2bd1){if(_0x2f2bd1&&_0x2f2bd1['autoAssociation']===0x0){return db[_0x641f('0x26')][_0x641f('0x46')]({'name':_0x11e0c8[_0x641f('0x29')],'resourceId':_0x11e0c8['id'],'type':_0x2f2bd1['name'],'sectionId':_0x2f2bd1['id']},{})[_0x641f('0x25')](function(){return _0x235016;});}else{return _0x235016;}})['catch'](function(_0x68f16b){logger[_0x641f('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x68f16b);throw _0x68f16b;});}return _0x235016;})[_0x641f('0x25')](respondWithResult(_0x401650,0xc9))[_0x641f('0x42')](handleError(_0x401650,null));};exports[_0x641f('0x4c')]=function(_0x141953,_0x3a8bb6){var _0x275fb1={'where':{'id':_0x141953['params']['id']}},_0x491561={};_0x491561[_0x641f('0x30')]=_[_0x641f('0x44')](db[_0x641f('0x2d')]['rawAttributes']);_0x275fb1[_0x641f('0x32')]=_['intersection'](_0x491561[_0x641f('0x30')],qs[_0x641f('0x34')](_0x141953[_0x641f('0x31')][_0x641f('0x34')]));_0x275fb1['attributes']=_0x275fb1['attributes'][_0x641f('0x35')]?_0x275fb1[_0x641f('0x32')]:_0x491561['model'];if(_0x141953[_0x641f('0x31')][_0x641f('0x4d')]){_0x275fb1['include']=[{'all':!![]}];}_0x275fb1=_[_0x641f('0x3c')]({},_0x275fb1,_0x141953[_0x641f('0x3f')]);return db[_0x641f('0x2d')][_0x641f('0x4e')](_0x275fb1)[_0x641f('0x25')](handleEntityNotFound(_0x3a8bb6,null))[_0x641f('0x25')](function(_0x123519){if(_0x123519){var _0x63adba=_0x123519[_0x641f('0x49')]({'plain':!![]});_0x63adba=qs['omit'](_0x63adba,['id',_0x641f('0x4f'),_0x641f('0x50')]);_0x141953[_0x641f('0x47')]=_[_0x641f('0x51')](_0x141953[_0x641f('0x47')],['id',_0x641f('0x4f'),_0x641f('0x50')]);return db['Campaign'][_0x641f('0x46')](_[_0x641f('0x3c')](_0x63adba,_0x141953[_0x641f('0x47')]),{'include':_0x141953[_0x641f('0x31')][_0x641f('0x4d')]?[{'all':!![]}]:undefined})[_0x641f('0x25')](function(_0x57c9b8){var _0x36422f=_0x141953[_0x641f('0x48')][_0x641f('0x49')]({'plain':!![]});if(!_0x36422f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x36422f['role']===_0x641f('0x48')){var _0x41b5f6=_0x57c9b8[_0x641f('0x49')]({'plain':!![]});var _0x56bd59=_0x641f('0x52');return db[_0x641f('0x53')][_0x641f('0x4e')]({'where':{'name':_0x56bd59,'userProfileId':_0x36422f['userProfileId']},'raw':!![]})['then'](function(_0x4b088a){if(_0x4b088a&&_0x4b088a[_0x641f('0x54')]===0x0){return db[_0x641f('0x26')][_0x641f('0x46')]({'name':_0x41b5f6['name'],'resourceId':_0x41b5f6['id'],'type':_0x4b088a[_0x641f('0x29')],'sectionId':_0x4b088a['id']},{})[_0x641f('0x25')](function(){return _0x57c9b8;});}else{return _0x57c9b8;}})[_0x641f('0x42')](function(_0x211720){logger[_0x641f('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x211720);throw _0x211720;});}return _0x57c9b8;});}})[_0x641f('0x25')](respondWithResult(_0x3a8bb6,0xc9))['catch'](handleError(_0x3a8bb6,null));};exports[_0x641f('0x23')]=function(_0x25ca96,_0x48f308){if(_0x25ca96[_0x641f('0x47')]['id']){delete _0x25ca96['body']['id'];}return db[_0x641f('0x2d')][_0x641f('0x4e')]({'where':{'id':_0x25ca96['params']['id']}})[_0x641f('0x25')](handleEntityNotFound(_0x48f308,null))['then'](saveUpdates(_0x25ca96[_0x641f('0x47')],null))[_0x641f('0x25')](respondWithResult(_0x48f308,null))[_0x641f('0x42')](handleError(_0x48f308,null));};exports['destroy']=function(_0x28fcdf,_0xb958be){return db[_0x641f('0x2d')][_0x641f('0x4e')]({'where':{'id':_0x28fcdf['params']['id']}})[_0x641f('0x25')](handleEntityNotFound(_0xb958be,null))['then'](removeEntity(_0xb958be,null))[_0x641f('0x42')](handleError(_0xb958be,null));};exports[_0x641f('0x55')]=function(_0x31be26,_0x47c398,_0x4e2b03){var _0x4fbaee={'raw':!![],'where':{}};var _0xde3a07={};var _0x235a8a={'count':0x0,'rows':[]};return db[_0x641f('0x2d')][_0x641f('0x56')]({'where':{'id':_0x31be26[_0x641f('0x57')]['id']}})['then'](handleEntityNotFound(_0x47c398,null))['then'](function(_0x3cfd6b){if(_0x3cfd6b){_0xde3a07[_0x641f('0x30')]=_[_0x641f('0x44')](db[_0x641f('0x58')][_0x641f('0x2e')]);_0xde3a07[_0x641f('0x31')]=_[_0x641f('0x44')](_0x31be26[_0x641f('0x31')]);_0xde3a07[_0x641f('0x3a')]=_[_0x641f('0x33')](_0xde3a07[_0x641f('0x30')],_0xde3a07['query']);_0x4fbaee[_0x641f('0x32')]=_['intersection'](_0xde3a07[_0x641f('0x30')],qs[_0x641f('0x34')](_0x31be26['query'][_0x641f('0x34')]));_0x4fbaee['attributes']=_0x4fbaee[_0x641f('0x32')][_0x641f('0x35')]?_0x4fbaee[_0x641f('0x32')]:_0xde3a07[_0x641f('0x30')];if(!_0x31be26[_0x641f('0x31')][_0x641f('0x59')](_0x641f('0x36'))){_0x4fbaee['limit']=qs['limit'](_0x31be26['query'][_0x641f('0x1d')]);_0x4fbaee[_0x641f('0x1e')]=qs[_0x641f('0x1e')](_0x31be26[_0x641f('0x31')][_0x641f('0x1e')]);}_0x4fbaee[_0x641f('0x37')]=qs[_0x641f('0x38')](_0x31be26[_0x641f('0x31')]['sort']);_0x4fbaee[_0x641f('0x39')]=qs[_0x641f('0x3a')](_['pick'](_0x31be26[_0x641f('0x31')],_0xde3a07['filters']));_0x4fbaee[_0x641f('0x39')][_0x641f('0x5a')]=_0x3cfd6b['id'];if(_0x31be26[_0x641f('0x31')]['filter']){_0x4fbaee[_0x641f('0x39')]=_[_0x641f('0x3c')](_0x4fbaee[_0x641f('0x39')],{'$or':_[_0x641f('0x2c')](_0x4fbaee[_0x641f('0x32')],function(_0x34110f){var _0x51702c={};_0x51702c[_0x34110f]={'$like':'%'+_0x31be26['query'][_0x641f('0x5b')]+'%'};return _0x51702c;})});}_0x4fbaee=_['merge']({},_0x4fbaee,_0x31be26[_0x641f('0x3f')]);return db['CmHopper'][_0x641f('0x1f')]({'where':_0x4fbaee[_0x641f('0x39')]})[_0x641f('0x25')](function(_0xdd6387){_0x235a8a[_0x641f('0x1f')]=_0xdd6387;if(_0x31be26[_0x641f('0x31')][_0x641f('0x4d')]){_0x4fbaee['include']=[{'all':!![]}];}return db['CmHopper'][_0x641f('0x40')](_0x4fbaee);})[_0x641f('0x25')](function(_0x4815b4){_0x235a8a[_0x641f('0x41')]=_0x4815b4;return _0x235a8a;});}})[_0x641f('0x25')](respondWithFilteredResult(_0x47c398,_0x4fbaee))[_0x641f('0x42')](handleError(_0x47c398,null));};exports[_0x641f('0x5c')]=function(_0x35ef66,_0x3c2448,_0x596d51){var _0x975747={'raw':!![],'where':{}};var _0x29a96f={};var _0x2b6b5e={'count':0x0,'rows':[]};return db[_0x641f('0x2d')]['findOne']({'where':{'id':_0x35ef66[_0x641f('0x57')]['id']}})[_0x641f('0x25')](handleEntityNotFound(_0x3c2448,null))[_0x641f('0x25')](function(_0x4af5aa){if(_0x4af5aa){_0x29a96f[_0x641f('0x30')]=_[_0x641f('0x44')](db[_0x641f('0x5d')][_0x641f('0x2e')]);_0x29a96f[_0x641f('0x31')]=_[_0x641f('0x44')](_0x35ef66[_0x641f('0x31')]);_0x29a96f[_0x641f('0x3a')]=_[_0x641f('0x33')](_0x29a96f[_0x641f('0x30')],_0x29a96f[_0x641f('0x31')]);_0x975747[_0x641f('0x32')]=_['intersection'](_0x29a96f['model'],qs['fields'](_0x35ef66[_0x641f('0x31')][_0x641f('0x34')]));_0x975747[_0x641f('0x32')]=_0x975747[_0x641f('0x32')][_0x641f('0x35')]?_0x975747[_0x641f('0x32')]:_0x29a96f[_0x641f('0x30')];if(!_0x35ef66[_0x641f('0x31')][_0x641f('0x59')](_0x641f('0x36'))){_0x975747['limit']=qs[_0x641f('0x1d')](_0x35ef66[_0x641f('0x31')][_0x641f('0x1d')]);_0x975747[_0x641f('0x1e')]=qs[_0x641f('0x1e')](_0x35ef66[_0x641f('0x31')][_0x641f('0x1e')]);}_0x975747['order']=qs[_0x641f('0x38')](_0x35ef66[_0x641f('0x31')][_0x641f('0x38')]);_0x975747['where']=qs['filters'](_[_0x641f('0x3b')](_0x35ef66[_0x641f('0x31')],_0x29a96f[_0x641f('0x3a')]));_0x975747[_0x641f('0x39')][_0x641f('0x5a')]=_0x4af5aa['id'];if(_0x35ef66[_0x641f('0x31')][_0x641f('0x5b')]){_0x975747['where']=_['merge'](_0x975747[_0x641f('0x39')],{'$or':_[_0x641f('0x2c')](_0x975747[_0x641f('0x32')],function(_0x555000){var _0x528555={};_0x528555[_0x555000]={'$like':'%'+_0x35ef66['query']['filter']+'%'};return _0x528555;})});}_0x975747=_[_0x641f('0x3c')]({},_0x975747,_0x35ef66[_0x641f('0x3f')]);return db[_0x641f('0x5d')]['count']({'where':_0x975747[_0x641f('0x39')]})[_0x641f('0x25')](function(_0x2f76fc){_0x2b6b5e['count']=_0x2f76fc;if(_0x35ef66[_0x641f('0x31')][_0x641f('0x4d')]){_0x975747[_0x641f('0x45')]=[{'all':!![]}];}return db[_0x641f('0x5d')]['findAll'](_0x975747);})[_0x641f('0x25')](function(_0x387371){_0x2b6b5e[_0x641f('0x41')]=_0x387371;return _0x2b6b5e;});}})['then'](respondWithFilteredResult(_0x3c2448,_0x975747))[_0x641f('0x42')](handleError(_0x3c2448,null));};exports[_0x641f('0x5e')]=function(_0x1808c9,_0x930d6f,_0x3f8b4e){var _0x3f3639={'raw':!![],'where':{}};var _0x42736d={};var _0x56a8b7={'count':0x0,'rows':[]};return db[_0x641f('0x2d')][_0x641f('0x56')]({'where':{'id':_0x1808c9[_0x641f('0x57')]['id']}})[_0x641f('0x25')](handleEntityNotFound(_0x930d6f,null))[_0x641f('0x25')](function(_0x1ad9c0){if(_0x1ad9c0){_0x42736d[_0x641f('0x30')]=_['keys'](db[_0x641f('0x5f')]['rawAttributes']);_0x42736d[_0x641f('0x31')]=_[_0x641f('0x44')](_0x1808c9[_0x641f('0x31')]);_0x42736d[_0x641f('0x3a')]=_['intersection'](_0x42736d[_0x641f('0x30')],_0x42736d[_0x641f('0x31')]);_0x3f3639[_0x641f('0x32')]=_[_0x641f('0x33')](_0x42736d[_0x641f('0x30')],qs[_0x641f('0x34')](_0x1808c9[_0x641f('0x31')][_0x641f('0x34')]));_0x3f3639[_0x641f('0x32')]=_0x3f3639[_0x641f('0x32')]['length']?_0x3f3639[_0x641f('0x32')]:_0x42736d[_0x641f('0x30')];if(!_0x1808c9[_0x641f('0x31')][_0x641f('0x59')](_0x641f('0x36'))){_0x3f3639[_0x641f('0x1d')]=qs[_0x641f('0x1d')](_0x1808c9[_0x641f('0x31')][_0x641f('0x1d')]);_0x3f3639['offset']=qs[_0x641f('0x1e')](_0x1808c9[_0x641f('0x31')][_0x641f('0x1e')]);}_0x3f3639[_0x641f('0x37')]=qs[_0x641f('0x38')](_0x1808c9[_0x641f('0x31')][_0x641f('0x38')]);_0x3f3639[_0x641f('0x39')]=qs['filters'](_[_0x641f('0x3b')](_0x1808c9[_0x641f('0x31')],_0x42736d[_0x641f('0x3a')]));_0x3f3639[_0x641f('0x39')]['CampaignId']=_0x1ad9c0['id'];if(_0x1808c9['query'][_0x641f('0x5b')]){_0x3f3639['where']=_['merge'](_0x3f3639['where'],{'$or':_[_0x641f('0x2c')](_0x3f3639['attributes'],function(_0x18c3a9){var _0x4b7121={};_0x4b7121[_0x18c3a9]={'$like':'%'+_0x1808c9[_0x641f('0x31')][_0x641f('0x5b')]+'%'};return _0x4b7121;})});}_0x3f3639=_['merge']({},_0x3f3639,_0x1808c9[_0x641f('0x3f')]);return db['CmHopperFinal'][_0x641f('0x1f')]({'where':_0x3f3639[_0x641f('0x39')]})[_0x641f('0x25')](function(_0x33e3e8){_0x56a8b7[_0x641f('0x1f')]=_0x33e3e8;if(_0x1808c9['query'][_0x641f('0x4d')]){_0x3f3639[_0x641f('0x45')]=[{'all':!![]}];}return db[_0x641f('0x5f')][_0x641f('0x40')](_0x3f3639);})[_0x641f('0x25')](function(_0x58ce0b){_0x56a8b7['rows']=_0x58ce0b;return _0x56a8b7;});}})[_0x641f('0x25')](respondWithFilteredResult(_0x930d6f,_0x3f3639))[_0x641f('0x42')](handleError(_0x930d6f,null));};exports[_0x641f('0x60')]=function(_0x1e6251,_0x4dcb20,_0x17cec6){var _0x249872={'raw':!![],'where':{}};var _0x403e79={};var _0x297b36={'count':0x0,'rows':[]};return db[_0x641f('0x2d')]['findOne']({'where':{'id':_0x1e6251[_0x641f('0x57')]['id']}})[_0x641f('0x25')](handleEntityNotFound(_0x4dcb20,null))['then'](function(_0x55f1d5){if(_0x55f1d5){_0x403e79['model']=_[_0x641f('0x44')](db[_0x641f('0x61')][_0x641f('0x2e')]);_0x403e79[_0x641f('0x31')]=_[_0x641f('0x44')](_0x1e6251[_0x641f('0x31')]);_0x403e79[_0x641f('0x3a')]=_[_0x641f('0x33')](_0x403e79[_0x641f('0x30')],_0x403e79['query']);_0x249872[_0x641f('0x32')]=_[_0x641f('0x33')](_0x403e79[_0x641f('0x30')],qs[_0x641f('0x34')](_0x1e6251[_0x641f('0x31')]['fields']));_0x249872[_0x641f('0x32')]=_0x249872[_0x641f('0x32')]['length']?_0x249872[_0x641f('0x32')]:_0x403e79[_0x641f('0x30')];if(!_0x1e6251['query']['hasOwnProperty'](_0x641f('0x36'))){_0x249872[_0x641f('0x1d')]=qs[_0x641f('0x1d')](_0x1e6251[_0x641f('0x31')][_0x641f('0x1d')]);_0x249872[_0x641f('0x1e')]=qs['offset'](_0x1e6251[_0x641f('0x31')][_0x641f('0x1e')]);}_0x249872[_0x641f('0x37')]=qs[_0x641f('0x38')](_0x1e6251[_0x641f('0x31')][_0x641f('0x38')]);_0x249872['where']=qs[_0x641f('0x3a')](_[_0x641f('0x3b')](_0x1e6251['query'],_0x403e79['filters']));_0x249872[_0x641f('0x39')]['CampaignId']=_0x55f1d5['id'];if(_0x1e6251[_0x641f('0x31')][_0x641f('0x5b')]){_0x249872[_0x641f('0x39')]=_[_0x641f('0x3c')](_0x249872[_0x641f('0x39')],{'$or':_['map'](_0x249872['attributes'],function(_0x959a7c){var _0x298cf6={};_0x298cf6[_0x959a7c]={'$like':'%'+_0x1e6251['query'][_0x641f('0x5b')]+'%'};return _0x298cf6;})});}_0x249872=_[_0x641f('0x3c')]({},_0x249872,_0x1e6251[_0x641f('0x3f')]);return db[_0x641f('0x61')][_0x641f('0x1f')]({'where':_0x249872['where']})[_0x641f('0x25')](function(_0x58c87f){_0x297b36[_0x641f('0x1f')]=_0x58c87f;if(_0x1e6251[_0x641f('0x31')][_0x641f('0x4d')]){_0x249872['include']=[{'all':!![]}];}return db[_0x641f('0x61')][_0x641f('0x40')](_0x249872);})[_0x641f('0x25')](function(_0x172db8){_0x297b36[_0x641f('0x41')]=_0x172db8;return _0x297b36;});}})[_0x641f('0x25')](respondWithFilteredResult(_0x4dcb20,_0x249872))[_0x641f('0x42')](handleError(_0x4dcb20,null));};exports[_0x641f('0x62')]=function(_0x2ca8f3,_0x5008da,_0x3a2c83){var _0x3ba230={};var _0xf56f35={};var _0x1d97ba;var _0x2e7c66;return db[_0x641f('0x2d')][_0x641f('0x56')]({'where':{'id':_0x2ca8f3[_0x641f('0x57')]['id']}})[_0x641f('0x25')](handleEntityNotFound(_0x5008da,null))[_0x641f('0x25')](function(_0x41f280){if(_0x41f280){_0x1d97ba=_0x41f280;_0xf56f35[_0x641f('0x30')]=_[_0x641f('0x44')](db[_0x641f('0x63')][_0x641f('0x2e')]);_0xf56f35['query']=_[_0x641f('0x44')](_0x2ca8f3[_0x641f('0x31')]);_0xf56f35[_0x641f('0x3a')]=_[_0x641f('0x33')](_0xf56f35[_0x641f('0x30')],_0xf56f35[_0x641f('0x31')]);_0x3ba230[_0x641f('0x32')]=_['intersection'](_0xf56f35['model'],qs[_0x641f('0x34')](_0x2ca8f3['query'][_0x641f('0x34')]));_0x3ba230[_0x641f('0x32')]=_0x3ba230[_0x641f('0x32')][_0x641f('0x35')]?_0x3ba230[_0x641f('0x32')]:_0xf56f35[_0x641f('0x30')];_0x3ba230[_0x641f('0x37')]=qs[_0x641f('0x38')](_0x2ca8f3[_0x641f('0x31')]['sort']);_0x3ba230[_0x641f('0x39')]=qs[_0x641f('0x3a')](_[_0x641f('0x3b')](_0x2ca8f3[_0x641f('0x31')],_0xf56f35[_0x641f('0x3a')]));if(_0x2ca8f3[_0x641f('0x31')][_0x641f('0x5b')]){_0x3ba230[_0x641f('0x39')]=_[_0x641f('0x3c')](_0x3ba230[_0x641f('0x39')],{'$or':_['map'](_0x3ba230[_0x641f('0x32')],function(_0x1c1b11){var _0x45f580={};_0x45f580[_0x1c1b11]={'$like':'%'+_0x2ca8f3[_0x641f('0x31')]['filter']+'%'};return _0x45f580;})});}_0x3ba230=_[_0x641f('0x3c')]({},_0x3ba230,_0x2ca8f3['options']);return _0x1d97ba['getLists'](_0x3ba230);}})['then'](function(_0x4bcd7d){if(_0x4bcd7d){_0x2e7c66=_0x4bcd7d[_0x641f('0x35')];if(!_0x2ca8f3[_0x641f('0x31')][_0x641f('0x59')](_0x641f('0x36'))){_0x3ba230['limit']=qs[_0x641f('0x1d')](_0x2ca8f3[_0x641f('0x31')][_0x641f('0x1d')]);_0x3ba230[_0x641f('0x1e')]=qs[_0x641f('0x1e')](_0x2ca8f3['query'][_0x641f('0x1e')]);}return _0x1d97ba['getLists'](_0x3ba230);}})[_0x641f('0x25')](function(_0x5f5466){if(_0x5f5466){return _0x5f5466?{'count':_0x2e7c66,'rows':_0x5f5466}:null;}})['then'](respondWithResult(_0x5008da,null))[_0x641f('0x42')](handleError(_0x5008da,null));};exports[_0x641f('0x64')]=function(_0x4ef59f,_0xd79514,_0x3e535a){var _0x423f3f,_0x58f15f;var _0x1abe85=[];var _0x580a8a=moment()[_0x641f('0x65')]('YYYY-MM-DD\x20HH:mm:ss');return db[_0x641f('0x2d')][_0x641f('0x4e')]({'where':{'id':_0x4ef59f[_0x641f('0x57')]['id']}})[_0x641f('0x25')](handleEntityNotFound(_0xd79514,null))[_0x641f('0x25')](function(_0x16b454){if(_0x16b454){_0x58f15f=_0x16b454;return _0x16b454[_0x641f('0x64')](_0x4ef59f[_0x641f('0x47')]['ids'],_['omit'](_0x4ef59f['body'],[_0x641f('0x66'),'id'])||{});}return null;})[_0x641f('0x67')](function(_0x4e11e3){var _0xd1440f;var _0xfb7823;_0x423f3f=_0x4e11e3||[];var _0x3cc7c0=[];if(_0x4e11e3){for(var _0x345d8f=0x0;_0x345d8f<_0x4e11e3[_0x641f('0x35')];_0x345d8f+=0x1){var _0x441136=_0x4e11e3[_0x345d8f][_0x641f('0x49')]({'plain':!![]});_0x58f15f[_0x641f('0x68')]=_0x4ef59f['body']['dialCheckDuplicateType']?_0x4ef59f[_0x641f('0x47')]['dialCheckDuplicateType']:_0x58f15f[_0x641f('0x68')];switch(_0x58f15f[_0x641f('0x68')]){case'always':_0xd1440f=squel[_0x641f('0x69')]()[_0x641f('0x6a')](_0x641f('0x6b'))['fromQuery']([_0x641f('0x6c'),'scheduledAt',_0x641f('0x6d'),_0x641f('0x6e'),_0x641f('0x5a'),_0x641f('0x4f'),_0x641f('0x50')],squel[_0x641f('0x6f')]()['field'](_0x641f('0x6c'),_0x641f('0x6c'))[_0x641f('0x70')](_0x641f('0x71'),_0x641f('0x72'))[_0x641f('0x70')]('id',_0x641f('0x6d'))[_0x641f('0x70')](_0x441136[_0x641f('0x73')]['toString'](),_0x641f('0x6e'))[_0x641f('0x70')](_0x4ef59f['params']['id']['toString'](),_0x641f('0x5a'))[_0x641f('0x70')]('\x27'+_0x580a8a+'\x27',_0x641f('0x4f'))[_0x641f('0x70')]('\x27'+_0x580a8a+'\x27',_0x641f('0x50'))['from'](_0x641f('0x74'))['where'](_0x641f('0x75'))[_0x641f('0x39')]('ListId\x20=\x20?',_0x441136[_0x641f('0x73')][_0x641f('0x76')]())[_0x641f('0x39')]('phone\x20IS\x20NOT\x20NULL')[_0x641f('0x39')](_0x641f('0x77'),squel['select']()[_0x641f('0x70')](_0x641f('0x78'))[_0x641f('0x79')](_0x641f('0x7a'))[_0x641f('0x39')](_0x641f('0x7b'),_0x4ef59f[_0x641f('0x57')]['id'][_0x641f('0x76')]()))[_0x641f('0x39')](_0x641f('0x77'),squel[_0x641f('0x6f')]()[_0x641f('0x70')](_0x641f('0x7c'))['from']('cm_hopper')[_0x641f('0x39')]('CampaignId\x20=\x20?',_0x4ef59f[_0x641f('0x57')]['id'][_0x641f('0x76')]())))['toString']();break;case'onlyIfOpen':_0xd1440f=squel[_0x641f('0x69')]()['into'](_0x641f('0x6b'))[_0x641f('0x7d')](['phone',_0x641f('0x72'),_0x641f('0x6d'),_0x641f('0x6e'),'CampaignId',_0x641f('0x4f'),_0x641f('0x50')],squel[_0x641f('0x6f')]()['field']('phone','phone')['field'](_0x641f('0x71'),_0x641f('0x72'))[_0x641f('0x70')]('id',_0x641f('0x6d'))[_0x641f('0x70')](_0x441136[_0x641f('0x73')][_0x641f('0x76')](),'ListId')[_0x641f('0x70')](_0x4ef59f[_0x641f('0x57')]['id'][_0x641f('0x76')](),_0x641f('0x5a'))[_0x641f('0x70')]('\x27'+_0x580a8a+'\x27','createdAt')['field']('\x27'+_0x580a8a+'\x27',_0x641f('0x50'))[_0x641f('0x79')]('cm_contacts')['where'](_0x641f('0x75'))[_0x641f('0x39')]('ListId\x20=\x20?',_0x441136[_0x641f('0x73')]['toString']())[_0x641f('0x39')](_0x641f('0x7e'))[_0x641f('0x39')](_0x641f('0x77'),squel[_0x641f('0x6f')]()[_0x641f('0x70')](_0x641f('0x7c'))[_0x641f('0x79')](_0x641f('0x6b'))[_0x641f('0x39')](_0x641f('0x7b'),_0x4ef59f[_0x641f('0x57')]['id'][_0x641f('0x76')]())))[_0x641f('0x76')]();break;default:_0xd1440f=squel[_0x641f('0x69')]()[_0x641f('0x6a')](_0x641f('0x6b'))['fromQuery'](['phone',_0x641f('0x72'),'ContactId',_0x641f('0x6e'),_0x641f('0x5a'),'createdAt',_0x641f('0x50')],squel['select']()[_0x641f('0x70')](_0x641f('0x6c'),'phone')[_0x641f('0x70')]('NOW()',_0x641f('0x72'))[_0x641f('0x70')]('id',_0x641f('0x6d'))[_0x641f('0x70')](_0x441136['CmListId'][_0x641f('0x76')](),_0x641f('0x6e'))[_0x641f('0x70')](_0x4ef59f[_0x641f('0x57')]['id'][_0x641f('0x76')](),_0x641f('0x5a'))['field']('\x27'+_0x580a8a+'\x27','createdAt')[_0x641f('0x70')]('\x27'+_0x580a8a+'\x27',_0x641f('0x50'))['from'](_0x641f('0x74'))[_0x641f('0x39')]('deletedAt\x20IS\x20NULL')[_0x641f('0x39')](_0x641f('0x7f'),_0x441136[_0x641f('0x73')][_0x641f('0x76')]())['where'](_0x641f('0x7e')))[_0x641f('0x76')]();}_0xfb7823=squel[_0x641f('0x69')]()[_0x641f('0x6a')]('cm_hopper_additional_phones')[_0x641f('0x7d')]([_0x641f('0x80'),_0x641f('0x72'),_0x641f('0x6c'),'OrderBy','createdAt',_0x641f('0x50')],squel['select']()[_0x641f('0x70')](_0x641f('0x81'),'id')[_0x641f('0x70')](_0x641f('0x71'),_0x641f('0x72'))[_0x641f('0x70')](_0x641f('0x82'),_0x641f('0x6c'))[_0x641f('0x70')]('ci.OrderBY',_0x641f('0x83'))[_0x641f('0x70')]('\x27'+_0x580a8a+'\x27',_0x641f('0x4f'))['field']('\x27'+_0x580a8a+'\x27',_0x641f('0x50'))[_0x641f('0x79')](_0x641f('0x84'),'ci')[_0x641f('0x85')](_0x641f('0x6b'),'h',_0x641f('0x86'))[_0x641f('0x39')](_0x641f('0x87'),_0x441136[_0x641f('0x73')][_0x641f('0x76')]())['where'](_0x641f('0x88'),_0x4ef59f[_0x641f('0x57')]['id'][_0x641f('0x76')]())[_0x641f('0x39')](_0x641f('0x89'),_0x580a8a))[_0x641f('0x76')]();_0x3cc7c0[_0x641f('0x8a')](db[_0x641f('0x8b')][_0x641f('0x31')](_0xd1440f));_0x1abe85['push'](db[_0x641f('0x8b')][_0x641f('0x31')](_0xfb7823));}return BPromise[_0x641f('0x8c')](_0x3cc7c0);}})['then'](function(){return BPromise[_0x641f('0x8c')](_0x1abe85);})[_0x641f('0x25')](function(){return _0x423f3f;})[_0x641f('0x25')](respondWithResult(_0xd79514,null))['catch'](handleError(_0xd79514,null));};exports[_0x641f('0x8d')]=function(_0x3e540a,_0x3d2d64,_0x27c242){return db[_0x641f('0x2d')]['find']({'where':{'id':_0x3e540a[_0x641f('0x57')]['id']}})[_0x641f('0x25')](handleEntityNotFound(_0x3d2d64,null))[_0x641f('0x25')](function(_0x5078cd){if(_0x5078cd){return _0x5078cd[_0x641f('0x8d')](_0x3e540a['query'][_0x641f('0x66')]);}})[_0x641f('0x25')](function(_0x134a84){if(_0x134a84){return db[_0x641f('0x58')]['destroy']({'where':{'ListId':_0x3e540a[_0x641f('0x31')][_0x641f('0x66')],'CampaignId':_0x3e540a[_0x641f('0x57')]['id']}})[_0x641f('0x25')](function(){return _0x134a84;});}})['then'](respondWithStatusCode(_0x3d2d64,null))['catch'](handleError(_0x3d2d64,null));};exports[_0x641f('0x8e')]=function(_0x9b2796,_0x3c6cf1,_0x513dfe){var _0x23cb08={};var _0x53581e={};var _0xa12a20;var _0x266061;return db['Campaign'][_0x641f('0x56')]({'where':{'id':_0x9b2796[_0x641f('0x57')]['id']}})[_0x641f('0x25')](handleEntityNotFound(_0x3c6cf1,null))[_0x641f('0x25')](function(_0x3d541f){if(_0x3d541f){_0xa12a20=_0x3d541f;_0x53581e[_0x641f('0x30')]=_['keys'](db[_0x641f('0x63')]['rawAttributes']);_0x53581e[_0x641f('0x31')]=_[_0x641f('0x44')](_0x9b2796[_0x641f('0x31')]);_0x53581e[_0x641f('0x3a')]=_[_0x641f('0x33')](_0x53581e[_0x641f('0x30')],_0x53581e['query']);_0x23cb08[_0x641f('0x32')]=_[_0x641f('0x33')](_0x53581e[_0x641f('0x30')],qs[_0x641f('0x34')](_0x9b2796[_0x641f('0x31')]['fields']));_0x23cb08[_0x641f('0x32')]=_0x23cb08[_0x641f('0x32')][_0x641f('0x35')]?_0x23cb08['attributes']:_0x53581e[_0x641f('0x30')];_0x23cb08[_0x641f('0x37')]=qs[_0x641f('0x38')](_0x9b2796[_0x641f('0x31')]['sort']);_0x23cb08[_0x641f('0x39')]=qs[_0x641f('0x3a')](_[_0x641f('0x3b')](_0x9b2796['query'],_0x53581e[_0x641f('0x3a')]));if(_0x9b2796[_0x641f('0x31')][_0x641f('0x5b')]){_0x23cb08[_0x641f('0x39')]=_['merge'](_0x23cb08[_0x641f('0x39')],{'$or':_['map'](_0x23cb08[_0x641f('0x32')],function(_0xf0c229){var _0x151fb0={};_0x151fb0[_0xf0c229]={'$like':'%'+_0x9b2796[_0x641f('0x31')][_0x641f('0x5b')]+'%'};return _0x151fb0;})});}_0x23cb08=_[_0x641f('0x3c')]({},_0x23cb08,_0x9b2796[_0x641f('0x3f')]);return _0xa12a20[_0x641f('0x8e')](_0x23cb08);}})[_0x641f('0x25')](function(_0x2df46a){if(_0x2df46a){_0x266061=_0x2df46a[_0x641f('0x35')];if(!_0x9b2796[_0x641f('0x31')]['hasOwnProperty'](_0x641f('0x36'))){_0x23cb08[_0x641f('0x1d')]=qs[_0x641f('0x1d')](_0x9b2796['query'][_0x641f('0x1d')]);_0x23cb08[_0x641f('0x1e')]=qs[_0x641f('0x1e')](_0x9b2796[_0x641f('0x31')][_0x641f('0x1e')]);}return _0xa12a20[_0x641f('0x8e')](_0x23cb08);}})[_0x641f('0x25')](function(_0x1cfb78){if(_0x1cfb78){return _0x1cfb78?{'count':_0x266061,'rows':_0x1cfb78}:null;}})[_0x641f('0x25')](respondWithResult(_0x3c6cf1,null))[_0x641f('0x42')](handleError(_0x3c6cf1,null));};exports[_0x641f('0x8f')]=function(_0x46deb6,_0x1732ea,_0x40ff90){var _0x2c832a,_0x4e30ae;var _0xc9e4dc=[];var _0x1f8e53=moment()[_0x641f('0x65')](_0x641f('0x90'));return db['Campaign'][_0x641f('0x4e')]({'where':{'id':_0x46deb6[_0x641f('0x57')]['id']}})[_0x641f('0x25')](handleEntityNotFound(_0x1732ea,null))[_0x641f('0x25')](function(_0x379654){if(_0x379654){_0x4e30ae=_0x379654;return _0x379654[_0x641f('0x8f')](_0x46deb6['body']['ids'],_['omit'](_0x46deb6[_0x641f('0x47')],[_0x641f('0x66'),'id'])||{});}return null;})[_0x641f('0x67')](function(_0x3651ad){var _0x2c3bbb;var _0x2f710d;_0x2c832a=_0x3651ad||[];var _0x20da79=[];if(_0x3651ad){for(var _0xf32cc6=0x0;_0xf32cc6<_0x3651ad['length'];_0xf32cc6+=0x1){var _0x241ed4=_0x3651ad[_0xf32cc6][_0x641f('0x49')]({'plain':!![]});_0x2c3bbb=squel[_0x641f('0x69')]()[_0x641f('0x6a')](_0x641f('0x91'))['fromQuery']([_0x641f('0x6c'),'ContactId',_0x641f('0x6e'),_0x641f('0x5a'),_0x641f('0x4f'),_0x641f('0x50')],squel[_0x641f('0x6f')]()[_0x641f('0x70')](_0x641f('0x6c'),_0x641f('0x6c'))['field']('id','ContactId')['field'](_0x241ed4[_0x641f('0x73')]['toString'](),'ListId')[_0x641f('0x70')](_0x46deb6[_0x641f('0x57')]['id'][_0x641f('0x76')](),'CampaignId')[_0x641f('0x70')](_0x641f('0x71'),_0x641f('0x4f'))['field'](_0x641f('0x71'),_0x641f('0x50'))[_0x641f('0x79')](_0x641f('0x74'))[_0x641f('0x39')](_0x641f('0x75'))[_0x641f('0x39')](_0x641f('0x7f'),_0x241ed4['CmListId']['toString']())[_0x641f('0x39')]('phone\x20IS\x20NOT\x20NULL'))[_0x641f('0x76')]();_0x20da79[_0x641f('0x8a')](db['sequelize'][_0x641f('0x31')](_0x2c3bbb));}return BPromise[_0x641f('0x8c')](_0x20da79);}})[_0x641f('0x25')](function(){return _0x2c832a;})[_0x641f('0x25')](respondWithResult(_0x1732ea,null))['catch'](handleError(_0x1732ea,null));};exports[_0x641f('0x92')]=function(_0x1abd74,_0x371b91,_0x1d8f2b){return db[_0x641f('0x2d')][_0x641f('0x4e')]({'where':{'id':_0x1abd74['params']['id']}})[_0x641f('0x25')](handleEntityNotFound(_0x371b91,null))[_0x641f('0x25')](function(_0x33f175){if(_0x33f175){return _0x33f175[_0x641f('0x92')](_0x1abd74[_0x641f('0x31')][_0x641f('0x66')]);}})[_0x641f('0x25')](function(_0x39b7ad){if(_0x39b7ad){return db[_0x641f('0x61')][_0x641f('0x24')]({'where':{'ListId':_0x1abd74['query']['ids'],'CampaignId':_0x1abd74[_0x641f('0x57')]['id']}})['then'](function(){return _0x39b7ad;});}})['then'](respondWithStatusCode(_0x371b91,null))[_0x641f('0x42')](handleError(_0x371b91,null));};
\ No newline at end of file
index 7937cc7..5008772 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Campaign','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./campaign.attributes'];(function(_0x1a7846,_0x59723e){var _0x48049=function(_0x203ff6){while(--_0x203ff6){_0x1a7846['push'](_0x1a7846['shift']());}};_0x48049(++_0x59723e);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'campaigns','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x5d9041,_0x2c23bd){var _0x4c1042=function(_0xace5eb){while(--_0xace5eb){_0x5d9041['push'](_0x5d9041['shift']());}};_0x4c1042(++_0x2c23bd);}(_0x7a54,0x106));var _0x47a5=function(_0x577d76,_0xac5e8c){_0x577d76=_0x577d76-0x0;var _0x550018=_0x7a54[_0x577d76];return _0x550018;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 58b27c2..e985df1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa7c=['raw','where','attributes','include','map','model','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','error','message','info','result','GetCampaign','findAll','options'];(function(_0x323d87,_0x4ef3f9){var _0x5e8f74=function(_0x185735){while(--_0x185735){_0x323d87['push'](_0x323d87['shift']());}};_0x5e8f74(++_0x4ef3f9);}(_0xfa7c,0x15b));var _0xcfa7=function(_0x2720ac,_0x6a380b){_0x2720ac=_0x2720ac-0x0;var _0x4b32e2=_0xfa7c[_0x2720ac];return _0x4b32e2;};'use strict';var _=require(_0xcfa7('0x0'));var util=require('util');var moment=require(_0xcfa7('0x1'));var BPromise=require(_0xcfa7('0x2'));var rs=require(_0xcfa7('0x3'));var fs=require('fs');var Redis=require(_0xcfa7('0x4'));var db=require(_0xcfa7('0x5'))['db'];var utils=require(_0xcfa7('0x6'));var logger=require(_0xcfa7('0x7'))(_0xcfa7('0x8'));var config=require('../../config/environment');var jayson=require(_0xcfa7('0x9'));var client=jayson[_0xcfa7('0xa')][_0xcfa7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1d5f85,_0x4b2669,_0x816590){return new BPromise(function(_0x573432,_0x376c4e){return client[_0xcfa7('0xc')](_0x1d5f85,_0x816590)[_0xcfa7('0xd')](function(_0x14e62a){logger['info'](_0xcfa7('0xe'),_0x4b2669,_0xcfa7('0xf'));logger[_0xcfa7('0x10')](_0xcfa7('0x11'),_0x4b2669,_0xcfa7('0xf'),JSON['stringify'](_0x14e62a));if(_0x14e62a['error']){if(_0x14e62a[_0xcfa7('0x12')]['code']===0x1f4){logger[_0xcfa7('0x12')](_0xcfa7('0xe'),_0x4b2669,_0x14e62a[_0xcfa7('0x12')][_0xcfa7('0x13')]);return _0x376c4e(_0x14e62a[_0xcfa7('0x12')][_0xcfa7('0x13')]);}logger[_0xcfa7('0x12')](_0xcfa7('0xe'),_0x4b2669,_0x14e62a['error'][_0xcfa7('0x13')]);return _0x573432(_0x14e62a['error']['message']);}else{logger[_0xcfa7('0x14')](_0xcfa7('0xe'),_0x4b2669,_0xcfa7('0xf'));_0x573432(_0x14e62a[_0xcfa7('0x15')][_0xcfa7('0x13')]);}})['catch'](function(_0x11d8bf){logger[_0xcfa7('0x12')](_0xcfa7('0xe'),_0x4b2669,_0x11d8bf);_0x376c4e(_0x11d8bf);});});}exports[_0xcfa7('0x16')]=function(_0x4e2a46){var _0x21f73c=this;return new Promise(function(_0x34f829,_0x558a21){return db['Campaign'][_0xcfa7('0x17')]({'raw':_0x4e2a46[_0xcfa7('0x18')]?_0x4e2a46[_0xcfa7('0x18')][_0xcfa7('0x19')]===undefined?!![]:![]:!![],'where':_0x4e2a46[_0xcfa7('0x18')]?_0x4e2a46[_0xcfa7('0x18')][_0xcfa7('0x1a')]||null:null,'attributes':_0x4e2a46[_0xcfa7('0x18')]?_0x4e2a46['options'][_0xcfa7('0x1b')]||null:null,'limit':_0x4e2a46['options']?_0x4e2a46['options']['limit']||null:null,'include':_0x4e2a46[_0xcfa7('0x18')]?_0x4e2a46['options'][_0xcfa7('0x1c')]?_[_0xcfa7('0x1d')](_0x4e2a46[_0xcfa7('0x18')][_0xcfa7('0x1c')],function(_0xdd7c11){return{'model':db[_0xdd7c11[_0xcfa7('0x1e')]],'as':_0xdd7c11['as'],'attributes':_0xdd7c11[_0xcfa7('0x1b')],'include':_0xdd7c11[_0xcfa7('0x1c')]?_['map'](_0xdd7c11[_0xcfa7('0x1c')],function(_0x222ce2){return{'model':db[_0x222ce2[_0xcfa7('0x1e')]],'as':_0x222ce2['as'],'attributes':_0x222ce2[_0xcfa7('0x1b')],'include':_0x222ce2['include']?_[_0xcfa7('0x1d')](_0x222ce2[_0xcfa7('0x1c')],function(_0x3fece6){return{'model':db[_0x3fece6[_0xcfa7('0x1e')]],'as':_0x3fece6['as'],'attributes':_0x3fece6[_0xcfa7('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x458cc6){logger[_0xcfa7('0x14')](_0xcfa7('0x16'),_0x4e2a46);logger[_0xcfa7('0x10')]('GetCampaign',_0x4e2a46,JSON['stringify'](_0x458cc6));_0x34f829(_0x458cc6);})['catch'](function(_0x10f85f){logger[_0xcfa7('0x12')](_0xcfa7('0x16'),_0x10f85f['message'],_0x4e2a46);_0x558a21(_0x21f73c['error'](0x1f4,_0x10f85f[_0xcfa7('0x13')]));});});};
\ No newline at end of file
+var _0x652b=['Campaign,\x20%s,\x20%s','GetCampaign','Campaign','findAll','options','where','attributes','limit','map','include','model','lodash','util','moment','randomstring','../../config/utils','../../config/logger','rpc','client','request','then','info','debug','Campaign,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch'];(function(_0x5300e9,_0x189e1b){var _0x1bf797=function(_0xce4e68){while(--_0xce4e68){_0x5300e9['push'](_0x5300e9['shift']());}};_0x1bf797(++_0x189e1b);}(_0x652b,0x68));var _0xb652=function(_0x4664db,_0x1de672){_0x4664db=_0x4664db-0x0;var _0x5615b4=_0x652b[_0x4664db];return _0x5615b4;};'use strict';var _=require(_0xb652('0x0'));var util=require(_0xb652('0x1'));var moment=require(_0xb652('0x2'));var BPromise=require('bluebird');var rs=require(_0xb652('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb652('0x4'));var logger=require(_0xb652('0x5'))(_0xb652('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb652('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x58d168,_0x10b742,_0x5c0245){return new BPromise(function(_0x2b82fd,_0x117e49){return client[_0xb652('0x8')](_0x58d168,_0x5c0245)[_0xb652('0x9')](function(_0x2f06f0){logger[_0xb652('0xa')]('Campaign,\x20%s,\x20%s',_0x10b742,'request\x20sent');logger[_0xb652('0xb')](_0xb652('0xc'),_0x10b742,_0xb652('0xd'),JSON[_0xb652('0xe')](_0x2f06f0));if(_0x2f06f0['error']){if(_0x2f06f0[_0xb652('0xf')][_0xb652('0x10')]===0x1f4){logger[_0xb652('0xf')]('Campaign,\x20%s,\x20%s',_0x10b742,_0x2f06f0[_0xb652('0xf')][_0xb652('0x11')]);return _0x117e49(_0x2f06f0['error']['message']);}logger['error']('Campaign,\x20%s,\x20%s',_0x10b742,_0x2f06f0[_0xb652('0xf')]['message']);return _0x2b82fd(_0x2f06f0[_0xb652('0xf')][_0xb652('0x11')]);}else{logger[_0xb652('0xa')]('Campaign,\x20%s,\x20%s',_0x10b742,_0xb652('0xd'));_0x2b82fd(_0x2f06f0[_0xb652('0x12')][_0xb652('0x11')]);}})[_0xb652('0x13')](function(_0x4ba393){logger[_0xb652('0xf')](_0xb652('0x14'),_0x10b742,_0x4ba393);_0x117e49(_0x4ba393);});});}exports[_0xb652('0x15')]=function(_0x3bf3b0){var _0x554d5a=this;return new Promise(function(_0x94d0b3,_0x4af396){return db[_0xb652('0x16')][_0xb652('0x17')]({'raw':_0x3bf3b0[_0xb652('0x18')]?_0x3bf3b0[_0xb652('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x3bf3b0[_0xb652('0x18')]?_0x3bf3b0[_0xb652('0x18')][_0xb652('0x19')]||null:null,'attributes':_0x3bf3b0[_0xb652('0x18')]?_0x3bf3b0[_0xb652('0x18')][_0xb652('0x1a')]||null:null,'limit':_0x3bf3b0['options']?_0x3bf3b0['options'][_0xb652('0x1b')]||null:null,'include':_0x3bf3b0[_0xb652('0x18')]?_0x3bf3b0['options']['include']?_[_0xb652('0x1c')](_0x3bf3b0['options'][_0xb652('0x1d')],function(_0x3756fb){return{'model':db[_0x3756fb['model']],'as':_0x3756fb['as'],'attributes':_0x3756fb['attributes'],'include':_0x3756fb[_0xb652('0x1d')]?_[_0xb652('0x1c')](_0x3756fb[_0xb652('0x1d')],function(_0x432a86){return{'model':db[_0x432a86[_0xb652('0x1e')]],'as':_0x432a86['as'],'attributes':_0x432a86[_0xb652('0x1a')],'include':_0x432a86[_0xb652('0x1d')]?_[_0xb652('0x1c')](_0x432a86['include'],function(_0x4dcc1b){return{'model':db[_0x4dcc1b['model']],'as':_0x4dcc1b['as'],'attributes':_0x4dcc1b[_0xb652('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1ba14b){logger['info'](_0xb652('0x15'),_0x3bf3b0);logger[_0xb652('0xb')](_0xb652('0x15'),_0x3bf3b0,JSON[_0xb652('0xe')](_0x1ba14b));_0x94d0b3(_0x1ba14b);})[_0xb652('0x13')](function(_0x5f39cb){logger[_0xb652('0xf')]('GetCampaign',_0x5f39cb[_0xb652('0x11')],_0x3bf3b0);_0x4af396(_0x554d5a['error'](0x1f4,_0x5f39cb[_0xb652('0x11')]));});});};
\ No newline at end of file
index 8ba2099..082b7b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac52=['removeBlackLists','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./campaign.controller','get','isAuthenticated','/:id','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','/:id/clone','clone','addLists','put','delete','destroy','removeLists'];(function(_0x3fedc0,_0x558857){var _0xd3f5e0=function(_0x437704){while(--_0x437704){_0x3fedc0['push'](_0x3fedc0['shift']());}};_0xd3f5e0(++_0x558857);}(_0xac52,0x122));var _0x2ac5=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xac52[_0xf50820];return _0x2a9b10;};'use strict';var multer=require('multer');var util=require(_0x2ac5('0x0'));var path=require(_0x2ac5('0x1'));var timeout=require(_0x2ac5('0x2'));var express=require(_0x2ac5('0x3'));var router=express[_0x2ac5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2ac5('0x5'));var interaction=require(_0x2ac5('0x6'));var config=require('../../config/environment');var controller=require(_0x2ac5('0x7'));router[_0x2ac5('0x8')]('/',auth[_0x2ac5('0x9')](),controller['index']);router['get'](_0x2ac5('0xa'),auth[_0x2ac5('0x9')](),controller[_0x2ac5('0xb')]);router[_0x2ac5('0x8')](_0x2ac5('0xc'),auth[_0x2ac5('0x9')](),controller[_0x2ac5('0xd')]);router[_0x2ac5('0x8')](_0x2ac5('0xe'),auth[_0x2ac5('0x9')](),controller['getHopperHistories']);router[_0x2ac5('0x8')](_0x2ac5('0xf'),auth[_0x2ac5('0x9')](),controller[_0x2ac5('0x10')]);router['get']('/:id/hopper_black',auth['isAuthenticated'](),controller[_0x2ac5('0x11')]);router[_0x2ac5('0x8')](_0x2ac5('0x12'),auth[_0x2ac5('0x9')](),controller[_0x2ac5('0x13')]);router['get'](_0x2ac5('0x14'),auth['isAuthenticated'](),controller[_0x2ac5('0x15')]);router[_0x2ac5('0x16')]('/',auth[_0x2ac5('0x9')](),controller['create']);router['post'](_0x2ac5('0x17'),auth[_0x2ac5('0x9')](),controller[_0x2ac5('0x18')]);router[_0x2ac5('0x16')](_0x2ac5('0x12'),auth[_0x2ac5('0x9')](),controller[_0x2ac5('0x19')]);router[_0x2ac5('0x16')](_0x2ac5('0x14'),auth[_0x2ac5('0x9')](),controller['addBlackLists']);router[_0x2ac5('0x1a')](_0x2ac5('0xa'),auth[_0x2ac5('0x9')](),controller['update']);router[_0x2ac5('0x1b')](_0x2ac5('0xa'),auth['isAuthenticated'](),controller[_0x2ac5('0x1c')]);router[_0x2ac5('0x1b')](_0x2ac5('0x12'),auth[_0x2ac5('0x9')](),controller[_0x2ac5('0x1d')]);router[_0x2ac5('0x1b')](_0x2ac5('0x14'),auth['isAuthenticated'](),controller[_0x2ac5('0x1e')]);module[_0x2ac5('0x1f')]=router;
\ No newline at end of file
+var _0xf0dd=['multer','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','get','isAuthenticated','index','/:id','show','/:id/hoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_black','/:id/lists','getLists','/:id/blacklists','getBlackLists','create','/:id/clone','clone','post','addLists','addBlackLists','put','update','delete','destroy','removeLists','exports'];(function(_0x501864,_0x3558f2){var _0x19c458=function(_0x54e57a){while(--_0x54e57a){_0x501864['push'](_0x501864['shift']());}};_0x19c458(++_0x3558f2);}(_0xf0dd,0x84));var _0xdf0d=function(_0x9f1fb1,_0x4c7ade){_0x9f1fb1=_0x9f1fb1-0x0;var _0x45477d=_0xf0dd[_0x9f1fb1];return _0x45477d;};'use strict';var multer=require(_0xdf0d('0x0'));var util=require('util');var path=require(_0xdf0d('0x1'));var timeout=require(_0xdf0d('0x2'));var express=require('express');var router=express[_0xdf0d('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xdf0d('0x4'));var interaction=require(_0xdf0d('0x5'));var config=require(_0xdf0d('0x6'));var controller=require(_0xdf0d('0x7'));router[_0xdf0d('0x8')]('/',auth[_0xdf0d('0x9')](),controller[_0xdf0d('0xa')]);router['get'](_0xdf0d('0xb'),auth[_0xdf0d('0x9')](),controller[_0xdf0d('0xc')]);router[_0xdf0d('0x8')](_0xdf0d('0xd'),auth['isAuthenticated'](),controller['getHoppers']);router['get'](_0xdf0d('0xe'),auth[_0xdf0d('0x9')](),controller[_0xdf0d('0xf')]);router[_0xdf0d('0x8')]('/:id/hopper_finals',auth[_0xdf0d('0x9')](),controller['getHopperFinals']);router['get'](_0xdf0d('0x10'),auth['isAuthenticated'](),controller['getHopperBlacks']);router[_0xdf0d('0x8')](_0xdf0d('0x11'),auth['isAuthenticated'](),controller[_0xdf0d('0x12')]);router[_0xdf0d('0x8')](_0xdf0d('0x13'),auth[_0xdf0d('0x9')](),controller[_0xdf0d('0x14')]);router['post']('/',auth[_0xdf0d('0x9')](),controller[_0xdf0d('0x15')]);router['post'](_0xdf0d('0x16'),auth[_0xdf0d('0x9')](),controller[_0xdf0d('0x17')]);router[_0xdf0d('0x18')]('/:id/lists',auth['isAuthenticated'](),controller[_0xdf0d('0x19')]);router[_0xdf0d('0x18')](_0xdf0d('0x13'),auth['isAuthenticated'](),controller[_0xdf0d('0x1a')]);router[_0xdf0d('0x1b')]('/:id',auth[_0xdf0d('0x9')](),controller[_0xdf0d('0x1c')]);router[_0xdf0d('0x1d')](_0xdf0d('0xb'),auth['isAuthenticated'](),controller[_0xdf0d('0x1e')]);router[_0xdf0d('0x1d')](_0xdf0d('0x11'),auth['isAuthenticated'](),controller[_0xdf0d('0x1f')]);router[_0xdf0d('0x1d')](_0xdf0d('0x13'),auth[_0xdf0d('0x9')](),controller['removeBlackLists']);module[_0xdf0d('0x20')]=router;
\ No newline at end of file
index 35858ee..dd64d3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3b7=['exports','TEXT','STRING','VIRTUAL','getDataValue','key'];(function(_0x13b02f,_0x462a53){var _0x12e9a6=function(_0x187d57){while(--_0x187d57){_0x13b02f['push'](_0x13b02f['shift']());}};_0x12e9a6(++_0x462a53);}(_0xb3b7,0x1ec));var _0x7b3b=function(_0x26fd9f,_0x6848d0){_0x26fd9f=_0x26fd9f-0x0;var _0x24055c=_0xb3b7[_0x26fd9f];return _0x24055c;};'use strict';var Sequelize=require('sequelize');module[_0x7b3b('0x0')]={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x7b3b('0x1')],'length':'medium','allowNull':![]},'description':{'type':Sequelize[_0x7b3b('0x2')]},'name':{'type':Sequelize[_0x7b3b('0x3')],'get':function(){return this[_0x7b3b('0x4')](_0x7b3b('0x5'));}}};
\ No newline at end of file
+var _0xc49f=['getDataValue','key','exports'];(function(_0x2ae1ca,_0x2d1b72){var _0x2a864a=function(_0x108b12){while(--_0x108b12){_0x2ae1ca['push'](_0x2ae1ca['shift']());}};_0x2a864a(++_0x2d1b72);}(_0xc49f,0x15b));var _0xfc49=function(_0x5abb00,_0x342d70){_0x5abb00=_0x5abb00-0x0;var _0xf9b854=_0xc49f[_0x5abb00];return _0xf9b854;};'use strict';var Sequelize=require('sequelize');module[_0xfc49('0x0')]={'key':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'length':'medium','allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xfc49('0x1')](_0xfc49('0x2'));}}};
\ No newline at end of file
index 6f15285..4b8ffef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06da=['apply','reject','save','update','then','destroy','get','UserProfileResource','end','error','name','index','map','CannedAnswer','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','rows','show','rawAttributes','includeAll','options','find','body','params','catch','key','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','CannedAnswers','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','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','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../mysqldb','sendStatus','status','offset','count','limit','set','Content-Range','json'];(function(_0x21331a,_0x57fc48){var _0x325c55=function(_0x770dfa){while(--_0x770dfa){_0x21331a['push'](_0x21331a['shift']());}};_0x325c55(++_0x57fc48);}(_0x06da,0x192));var _0xa06d=function(_0x4cede8,_0x56b6b8){_0x4cede8=_0x4cede8-0x0;var _0x4be89a=_0x06da[_0x4cede8];return _0x4be89a;};'use strict';var emlformat=require(_0xa06d('0x0'));var rimraf=require(_0xa06d('0x1'));var zipdir=require(_0xa06d('0x2'));var jsonpatch=require(_0xa06d('0x3'));var rp=require(_0xa06d('0x4'));var moment=require(_0xa06d('0x5'));var BPromise=require(_0xa06d('0x6'));var Mustache=require(_0xa06d('0x7'));var util=require(_0xa06d('0x8'));var path=require(_0xa06d('0x9'));var sox=require(_0xa06d('0xa'));var csv=require(_0xa06d('0xb'));var ejs=require(_0xa06d('0xc'));var fs=require('fs');var fs_extra=require(_0xa06d('0xd'));var _=require(_0xa06d('0xe'));var squel=require(_0xa06d('0xf'));var crypto=require(_0xa06d('0x10'));var jsforce=require(_0xa06d('0x11'));var deskjs=require(_0xa06d('0x12'));var toCsv=require(_0xa06d('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa06d('0x13'));var qs=require(_0xa06d('0x14'));var as=require(_0xa06d('0x15'));var hardwareService=require(_0xa06d('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0xa06d('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xa06d('0x18'))['db'];function respondWithStatusCode(_0x317725,_0x15736d){_0x15736d=_0x15736d||0xcc;return function(_0x5326c1){if(_0x5326c1){return _0x317725[_0xa06d('0x19')](_0x15736d);}return _0x317725[_0xa06d('0x1a')](_0x15736d)['end']();};}function respondWithResult(_0x525ba9,_0x318530){_0x318530=_0x318530||0xc8;return function(_0x5a2242){if(_0x5a2242){return _0x525ba9[_0xa06d('0x1a')](_0x318530)['json'](_0x5a2242);}};}function respondWithFilteredResult(_0x317052,_0x400a95){return function(_0x2136a1){if(_0x2136a1){var _0x4fa531=typeof _0x400a95[_0xa06d('0x1b')]==='undefined'&&typeof _0x400a95['limit']==='undefined';var _0x3cd9bb=_0x2136a1[_0xa06d('0x1c')];var _0x47cff1=_0x4fa531?0x0:_0x400a95[_0xa06d('0x1b')];var _0x49d143=_0x4fa531?_0x2136a1[_0xa06d('0x1c')]:_0x400a95[_0xa06d('0x1b')]+_0x400a95[_0xa06d('0x1d')];var _0x1e6949;if(_0x49d143>=_0x3cd9bb){_0x49d143=_0x3cd9bb;_0x1e6949=0xc8;}else{_0x1e6949=0xce;}_0x317052['status'](_0x1e6949);return _0x317052[_0xa06d('0x1e')](_0xa06d('0x1f'),_0x47cff1+'-'+_0x49d143+'/'+_0x3cd9bb)[_0xa06d('0x20')](_0x2136a1);}return null;};}function patchUpdates(_0x4abdaf){return function(_0x21c869){try{jsonpatch[_0xa06d('0x21')](_0x21c869,_0x4abdaf,!![]);}catch(_0x9ef367){return BPromise[_0xa06d('0x22')](_0x9ef367);}return _0x21c869[_0xa06d('0x23')]();};}function saveUpdates(_0x21d515,_0x1835f1){return function(_0x1aa614){if(_0x1aa614){return _0x1aa614[_0xa06d('0x24')](_0x21d515)[_0xa06d('0x25')](function(_0x5f4e26){return _0x5f4e26;});}return null;};}function removeEntity(_0x1b400d,_0x49ce61){return function(_0x47452e){if(_0x47452e){return _0x47452e[_0xa06d('0x26')]()[_0xa06d('0x25')](function(){var _0x20f14a=_0x47452e[_0xa06d('0x27')]({'plain':!![]});var _0x27a230='CannedAnswers';return db[_0xa06d('0x28')][_0xa06d('0x26')]({'where':{'type':_0x27a230,'resourceId':_0x20f14a['id']}})[_0xa06d('0x25')](function(){return _0x47452e;});})[_0xa06d('0x25')](function(){_0x1b400d[_0xa06d('0x1a')](0xcc)[_0xa06d('0x29')]();});}};}function handleEntityNotFound(_0x46036a,_0x5cf16c){return function(_0x16628f){if(!_0x16628f){_0x46036a['sendStatus'](0x194);}return _0x16628f;};}function handleError(_0xb9c8b4,_0x110ca0){_0x110ca0=_0x110ca0||0x1f4;return function(_0x30ee15){logger[_0xa06d('0x2a')](_0x30ee15['stack']);if(_0x30ee15['name']){delete _0x30ee15[_0xa06d('0x2b')];}_0xb9c8b4[_0xa06d('0x1a')](_0x110ca0)['send'](_0x30ee15);};}exports[_0xa06d('0x2c')]=function(_0x12da27,_0x354aa5){var _0x4ee2b2={},_0x380018={},_0x222289={'count':0x0,'rows':[]};var _0x2be185=_[_0xa06d('0x2d')](db[_0xa06d('0x2e')]['rawAttributes'],function(_0x3b4876){return{'name':_0x3b4876['fieldName'],'type':_0x3b4876[_0xa06d('0x2f')]['key']};});_0x380018[_0xa06d('0x30')]=_[_0xa06d('0x2d')](_0x2be185,'name');_0x380018[_0xa06d('0x31')]=_[_0xa06d('0x32')](_0x12da27['query']);_0x380018[_0xa06d('0x33')]=_[_0xa06d('0x34')](_0x380018[_0xa06d('0x30')],_0x380018[_0xa06d('0x31')]);_0x4ee2b2[_0xa06d('0x35')]=_['intersection'](_0x380018[_0xa06d('0x30')],qs[_0xa06d('0x36')](_0x12da27[_0xa06d('0x31')]['fields']));_0x4ee2b2[_0xa06d('0x35')]=_0x4ee2b2['attributes'][_0xa06d('0x37')]?_0x4ee2b2[_0xa06d('0x35')]:_0x380018[_0xa06d('0x30')];if(!_0x12da27[_0xa06d('0x31')][_0xa06d('0x38')]('nolimit')){_0x4ee2b2[_0xa06d('0x1d')]=qs['limit'](_0x12da27[_0xa06d('0x31')]['limit']);_0x4ee2b2[_0xa06d('0x1b')]=qs[_0xa06d('0x1b')](_0x12da27[_0xa06d('0x31')][_0xa06d('0x1b')]);}_0x4ee2b2['order']=qs[_0xa06d('0x39')](_0x12da27[_0xa06d('0x31')][_0xa06d('0x39')]);_0x4ee2b2[_0xa06d('0x3a')]=qs['filters'](_[_0xa06d('0x3b')](_0x12da27[_0xa06d('0x31')],_0x380018['filters']),_0x2be185);if(_0x12da27[_0xa06d('0x31')]['filter']){_0x4ee2b2[_0xa06d('0x3a')]=_['merge'](_0x4ee2b2['where'],{'$or':[{'key':{'$like':'%'+_0x12da27[_0xa06d('0x31')]['filter']+'%'}},{'value':{'$like':'%'+_0x12da27[_0xa06d('0x31')][_0xa06d('0x3c')]+'%'}}]});}_0x4ee2b2=_[_0xa06d('0x3d')]({},_0x4ee2b2,_0x12da27['options']);var _0xeaf615={'where':_0x4ee2b2[_0xa06d('0x3a')]};return db[_0xa06d('0x2e')][_0xa06d('0x1c')](_0xeaf615)['then'](function(_0x395fc5){_0x222289[_0xa06d('0x1c')]=_0x395fc5;if(_0x12da27[_0xa06d('0x31')]['includeAll']){_0x4ee2b2['include']=[{'all':!![]}];}return db[_0xa06d('0x2e')]['findAll'](_0x4ee2b2);})['then'](function(_0x1e8a75){_0x222289[_0xa06d('0x3e')]=_0x1e8a75;return _0x222289;})[_0xa06d('0x25')](respondWithFilteredResult(_0x354aa5,_0x4ee2b2))['catch'](handleError(_0x354aa5,null));};exports[_0xa06d('0x3f')]=function(_0x297661,_0x6ee7db){var _0x2936e2={'raw':!![],'where':{'id':_0x297661['params']['id']}},_0x18546f={};_0x18546f[_0xa06d('0x30')]=_[_0xa06d('0x32')](db[_0xa06d('0x2e')][_0xa06d('0x40')]);_0x18546f[_0xa06d('0x31')]=_[_0xa06d('0x32')](_0x297661['query']);_0x18546f[_0xa06d('0x33')]=_['intersection'](_0x18546f[_0xa06d('0x30')],_0x18546f[_0xa06d('0x31')]);_0x2936e2[_0xa06d('0x35')]=_[_0xa06d('0x34')](_0x18546f['model'],qs[_0xa06d('0x36')](_0x297661[_0xa06d('0x31')][_0xa06d('0x36')]));_0x2936e2[_0xa06d('0x35')]=_0x2936e2[_0xa06d('0x35')]['length']?_0x2936e2[_0xa06d('0x35')]:_0x18546f[_0xa06d('0x30')];if(_0x297661[_0xa06d('0x31')][_0xa06d('0x41')]){_0x2936e2['include']=[{'all':!![]}];}_0x2936e2=_[_0xa06d('0x3d')]({},_0x2936e2,_0x297661[_0xa06d('0x42')]);return db['CannedAnswer'][_0xa06d('0x43')](_0x2936e2)[_0xa06d('0x25')](handleEntityNotFound(_0x6ee7db,null))[_0xa06d('0x25')](respondWithResult(_0x6ee7db,null))['catch'](handleError(_0x6ee7db,null));};exports[_0xa06d('0x24')]=function(_0x44784c,_0x32a72e){if(_0x44784c[_0xa06d('0x44')]['id']){delete _0x44784c[_0xa06d('0x44')]['id'];}return db[_0xa06d('0x2e')][_0xa06d('0x43')]({'where':{'id':_0x44784c[_0xa06d('0x45')]['id']}})[_0xa06d('0x25')](handleEntityNotFound(_0x32a72e,null))[_0xa06d('0x25')](saveUpdates(_0x44784c[_0xa06d('0x44')],null))[_0xa06d('0x25')](respondWithResult(_0x32a72e,null))[_0xa06d('0x46')](handleError(_0x32a72e,null));};exports[_0xa06d('0x26')]=function(_0x1fc621,_0x5884a1){return db[_0xa06d('0x2e')]['find']({'where':{'id':_0x1fc621[_0xa06d('0x45')]['id']}})[_0xa06d('0x25')](handleEntityNotFound(_0x5884a1,null))[_0xa06d('0x25')](removeEntity(_0x5884a1,null))[_0xa06d('0x46')](handleError(_0x5884a1,null));};exports['create']=function(_0x9685c7,_0x172961){var _0x3024f8={'key':_0x9685c7[_0xa06d('0x44')][_0xa06d('0x47')]};if(_0x9685c7[_0xa06d('0x44')]['MailAccountId']){_0x3024f8[_0xa06d('0x48')]=_0x9685c7[_0xa06d('0x44')]['MailAccountId'];}else if(_0x9685c7[_0xa06d('0x44')][_0xa06d('0x49')]){_0x3024f8[_0xa06d('0x49')]=_0x9685c7[_0xa06d('0x44')]['SmsAccountId'];}else if(_0x9685c7[_0xa06d('0x44')][_0xa06d('0x4a')]){_0x3024f8[_0xa06d('0x4a')]=_0x9685c7[_0xa06d('0x44')][_0xa06d('0x4a')];}else if(_0x9685c7['body']['ChatWebsiteId']){_0x3024f8[_0xa06d('0x4b')]=_0x9685c7[_0xa06d('0x44')][_0xa06d('0x4b')];}return db[_0xa06d('0x2e')][_0xa06d('0x43')]({'where':_0x3024f8})[_0xa06d('0x25')](function(_0x4aec5d){if(_0x4aec5d){throw new db[(_0xa06d('0x4c'))][(_0xa06d('0x4d'))](_0xa06d('0x4e'));}return db[_0xa06d('0x2e')]['create'](_0x9685c7[_0xa06d('0x44')]);})['then'](function(_0x227055){var _0x4a0279=_0x9685c7[_0xa06d('0x4f')][_0xa06d('0x27')]({'plain':!![]});if(!_0x4a0279)throw new Error(_0xa06d('0x50'));if(_0x4a0279['role']==='user'){var _0x46967c=_0x227055[_0xa06d('0x27')]({'plain':!![]});return db[_0xa06d('0x51')][_0xa06d('0x43')]({'where':{'name':_0xa06d('0x52'),'userProfileId':_0x4a0279[_0xa06d('0x53')]},'raw':!![]})[_0xa06d('0x25')](function(_0x44d629){if(_0x44d629&&_0x44d629[_0xa06d('0x54')]===0x0){return db[_0xa06d('0x28')][_0xa06d('0x55')]({'name':_0x46967c[_0xa06d('0x2b')],'resourceId':_0x46967c['id'],'type':_0x44d629[_0xa06d('0x2b')],'sectionId':_0x44d629['id']},{})[_0xa06d('0x25')](function(){return _0x227055;});}else{return _0x227055;}})[_0xa06d('0x46')](function(_0x3c1895){logger[_0xa06d('0x2a')](_0xa06d('0x56'),_0x3c1895);throw _0x3c1895;});}return _0x227055;})[_0xa06d('0x25')](respondWithResult(_0x172961,0xc9))['catch'](handleError(_0x172961,null));};
\ No newline at end of file
+var _0x8503=['lodash','squel','crypto','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','then','destroy','get','CannedAnswers','UserProfileResource','end','stack','name','send','index','map','rawAttributes','fieldName','type','keys','query','intersection','model','attributes','fields','length','nolimit','sort','filters','pick','where','merge','filter','options','CannedAnswer','includeAll','include','findAll','rows','catch','show','params','find','update','body','key','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','role','UserProfileSection','userProfileId','autoAssociation','create','error','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0x36542b,_0xa6b0b6){var _0x20a61b=function(_0x24eab6){while(--_0x24eab6){_0x36542b['push'](_0x36542b['shift']());}};_0x20a61b(++_0xa6b0b6);}(_0x8503,0x1bf));var _0x3850=function(_0x28d18d,_0x55896b){_0x28d18d=_0x28d18d-0x0;var _0x470640=_0x8503[_0x28d18d];return _0x470640;};'use strict';var emlformat=require(_0x3850('0x0'));var rimraf=require(_0x3850('0x1'));var zipdir=require(_0x3850('0x2'));var jsonpatch=require(_0x3850('0x3'));var rp=require('request-promise');var moment=require(_0x3850('0x4'));var BPromise=require(_0x3850('0x5'));var Mustache=require(_0x3850('0x6'));var util=require(_0x3850('0x7'));var path=require(_0x3850('0x8'));var sox=require(_0x3850('0x9'));var csv=require(_0x3850('0xa'));var ejs=require(_0x3850('0xb'));var fs=require('fs');var fs_extra=require(_0x3850('0xc'));var _=require(_0x3850('0xd'));var squel=require(_0x3850('0xe'));var crypto=require(_0x3850('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x3850('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x3850('0x10'));var authService=require(_0x3850('0x11'));var qs=require(_0x3850('0x12'));var as=require(_0x3850('0x13'));var hardwareService=require(_0x3850('0x14'));var logger=require(_0x3850('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x3850('0x16'));var licenseUtil=require(_0x3850('0x17'));var db=require(_0x3850('0x18'))['db'];function respondWithStatusCode(_0x5603f0,_0x11a2dd){_0x11a2dd=_0x11a2dd||0xcc;return function(_0x21e857){if(_0x21e857){return _0x5603f0[_0x3850('0x19')](_0x11a2dd);}return _0x5603f0['status'](_0x11a2dd)['end']();};}function respondWithResult(_0x6b9a6a,_0xb3db40){_0xb3db40=_0xb3db40||0xc8;return function(_0x48b1ef){if(_0x48b1ef){return _0x6b9a6a[_0x3850('0x1a')](_0xb3db40)[_0x3850('0x1b')](_0x48b1ef);}};}function respondWithFilteredResult(_0x367f55,_0x437c69){return function(_0x266652){if(_0x266652){var _0x406a2f=typeof _0x437c69['offset']===_0x3850('0x1c')&&typeof _0x437c69[_0x3850('0x1d')]===_0x3850('0x1c');var _0x493297=_0x266652[_0x3850('0x1e')];var _0x1ca631=_0x406a2f?0x0:_0x437c69[_0x3850('0x1f')];var _0xa6e4a6=_0x406a2f?_0x266652[_0x3850('0x1e')]:_0x437c69[_0x3850('0x1f')]+_0x437c69[_0x3850('0x1d')];var _0x507903;if(_0xa6e4a6>=_0x493297){_0xa6e4a6=_0x493297;_0x507903=0xc8;}else{_0x507903=0xce;}_0x367f55[_0x3850('0x1a')](_0x507903);return _0x367f55[_0x3850('0x20')](_0x3850('0x21'),_0x1ca631+'-'+_0xa6e4a6+'/'+_0x493297)[_0x3850('0x1b')](_0x266652);}return null;};}function patchUpdates(_0x53d4c6){return function(_0x2542b6){try{jsonpatch[_0x3850('0x22')](_0x2542b6,_0x53d4c6,!![]);}catch(_0x18b48e){return BPromise[_0x3850('0x23')](_0x18b48e);}return _0x2542b6[_0x3850('0x24')]();};}function saveUpdates(_0x222b4c,_0x4689e8){return function(_0x285a){if(_0x285a){return _0x285a['update'](_0x222b4c)[_0x3850('0x25')](function(_0x130d6b){return _0x130d6b;});}return null;};}function removeEntity(_0x20f922,_0x31864c){return function(_0xb9bcb8){if(_0xb9bcb8){return _0xb9bcb8[_0x3850('0x26')]()[_0x3850('0x25')](function(){var _0x14ef4a=_0xb9bcb8[_0x3850('0x27')]({'plain':!![]});var _0x3dbb5d=_0x3850('0x28');return db[_0x3850('0x29')][_0x3850('0x26')]({'where':{'type':_0x3dbb5d,'resourceId':_0x14ef4a['id']}})[_0x3850('0x25')](function(){return _0xb9bcb8;});})[_0x3850('0x25')](function(){_0x20f922[_0x3850('0x1a')](0xcc)[_0x3850('0x2a')]();});}};}function handleEntityNotFound(_0x51ea35,_0x39e8f5){return function(_0x6223a8){if(!_0x6223a8){_0x51ea35[_0x3850('0x19')](0x194);}return _0x6223a8;};}function handleError(_0x17aa99,_0x1e6a2e){_0x1e6a2e=_0x1e6a2e||0x1f4;return function(_0x3a4628){logger['error'](_0x3a4628[_0x3850('0x2b')]);if(_0x3a4628[_0x3850('0x2c')]){delete _0x3a4628[_0x3850('0x2c')];}_0x17aa99[_0x3850('0x1a')](_0x1e6a2e)[_0x3850('0x2d')](_0x3a4628);};}exports[_0x3850('0x2e')]=function(_0x5e7c91,_0x4deb4b){var _0x141863={},_0x37d41c={},_0x582e58={'count':0x0,'rows':[]};var _0x3ba923=_[_0x3850('0x2f')](db['CannedAnswer'][_0x3850('0x30')],function(_0x2d52f6){return{'name':_0x2d52f6[_0x3850('0x31')],'type':_0x2d52f6[_0x3850('0x32')]['key']};});_0x37d41c['model']=_[_0x3850('0x2f')](_0x3ba923,'name');_0x37d41c['query']=_[_0x3850('0x33')](_0x5e7c91[_0x3850('0x34')]);_0x37d41c['filters']=_[_0x3850('0x35')](_0x37d41c[_0x3850('0x36')],_0x37d41c[_0x3850('0x34')]);_0x141863[_0x3850('0x37')]=_[_0x3850('0x35')](_0x37d41c[_0x3850('0x36')],qs[_0x3850('0x38')](_0x5e7c91['query'][_0x3850('0x38')]));_0x141863[_0x3850('0x37')]=_0x141863[_0x3850('0x37')][_0x3850('0x39')]?_0x141863[_0x3850('0x37')]:_0x37d41c['model'];if(!_0x5e7c91[_0x3850('0x34')]['hasOwnProperty'](_0x3850('0x3a'))){_0x141863[_0x3850('0x1d')]=qs[_0x3850('0x1d')](_0x5e7c91[_0x3850('0x34')][_0x3850('0x1d')]);_0x141863[_0x3850('0x1f')]=qs[_0x3850('0x1f')](_0x5e7c91['query'][_0x3850('0x1f')]);}_0x141863['order']=qs[_0x3850('0x3b')](_0x5e7c91['query'][_0x3850('0x3b')]);_0x141863['where']=qs[_0x3850('0x3c')](_[_0x3850('0x3d')](_0x5e7c91[_0x3850('0x34')],_0x37d41c[_0x3850('0x3c')]),_0x3ba923);if(_0x5e7c91[_0x3850('0x34')]['filter']){_0x141863[_0x3850('0x3e')]=_[_0x3850('0x3f')](_0x141863[_0x3850('0x3e')],{'$or':[{'key':{'$like':'%'+_0x5e7c91[_0x3850('0x34')][_0x3850('0x40')]+'%'}},{'value':{'$like':'%'+_0x5e7c91['query'][_0x3850('0x40')]+'%'}}]});}_0x141863=_[_0x3850('0x3f')]({},_0x141863,_0x5e7c91[_0x3850('0x41')]);var _0x5671c6={'where':_0x141863[_0x3850('0x3e')]};return db[_0x3850('0x42')][_0x3850('0x1e')](_0x5671c6)[_0x3850('0x25')](function(_0x4adca2){_0x582e58[_0x3850('0x1e')]=_0x4adca2;if(_0x5e7c91['query'][_0x3850('0x43')]){_0x141863[_0x3850('0x44')]=[{'all':!![]}];}return db['CannedAnswer'][_0x3850('0x45')](_0x141863);})[_0x3850('0x25')](function(_0x4483f4){_0x582e58[_0x3850('0x46')]=_0x4483f4;return _0x582e58;})['then'](respondWithFilteredResult(_0x4deb4b,_0x141863))[_0x3850('0x47')](handleError(_0x4deb4b,null));};exports[_0x3850('0x48')]=function(_0x9c27be,_0x16d1f6){var _0x3414fb={'raw':!![],'where':{'id':_0x9c27be[_0x3850('0x49')]['id']}},_0x320945={};_0x320945[_0x3850('0x36')]=_[_0x3850('0x33')](db['CannedAnswer'][_0x3850('0x30')]);_0x320945[_0x3850('0x34')]=_[_0x3850('0x33')](_0x9c27be[_0x3850('0x34')]);_0x320945[_0x3850('0x3c')]=_[_0x3850('0x35')](_0x320945[_0x3850('0x36')],_0x320945['query']);_0x3414fb[_0x3850('0x37')]=_['intersection'](_0x320945[_0x3850('0x36')],qs[_0x3850('0x38')](_0x9c27be['query']['fields']));_0x3414fb['attributes']=_0x3414fb[_0x3850('0x37')]['length']?_0x3414fb[_0x3850('0x37')]:_0x320945[_0x3850('0x36')];if(_0x9c27be[_0x3850('0x34')][_0x3850('0x43')]){_0x3414fb[_0x3850('0x44')]=[{'all':!![]}];}_0x3414fb=_[_0x3850('0x3f')]({},_0x3414fb,_0x9c27be[_0x3850('0x41')]);return db[_0x3850('0x42')][_0x3850('0x4a')](_0x3414fb)['then'](handleEntityNotFound(_0x16d1f6,null))[_0x3850('0x25')](respondWithResult(_0x16d1f6,null))[_0x3850('0x47')](handleError(_0x16d1f6,null));};exports[_0x3850('0x4b')]=function(_0xb28548,_0x32210f){if(_0xb28548[_0x3850('0x4c')]['id']){delete _0xb28548[_0x3850('0x4c')]['id'];}return db[_0x3850('0x42')][_0x3850('0x4a')]({'where':{'id':_0xb28548[_0x3850('0x49')]['id']}})[_0x3850('0x25')](handleEntityNotFound(_0x32210f,null))[_0x3850('0x25')](saveUpdates(_0xb28548[_0x3850('0x4c')],null))[_0x3850('0x25')](respondWithResult(_0x32210f,null))[_0x3850('0x47')](handleError(_0x32210f,null));};exports[_0x3850('0x26')]=function(_0x35ad94,_0x2266ff){return db[_0x3850('0x42')][_0x3850('0x4a')]({'where':{'id':_0x35ad94[_0x3850('0x49')]['id']}})[_0x3850('0x25')](handleEntityNotFound(_0x2266ff,null))[_0x3850('0x25')](removeEntity(_0x2266ff,null))[_0x3850('0x47')](handleError(_0x2266ff,null));};exports['create']=function(_0x3bae86,_0x5a8cb1){var _0x2dc1b0={'key':_0x3bae86[_0x3850('0x4c')][_0x3850('0x4d')]};if(_0x3bae86[_0x3850('0x4c')]['MailAccountId']){_0x2dc1b0[_0x3850('0x4e')]=_0x3bae86['body'][_0x3850('0x4e')];}else if(_0x3bae86['body']['SmsAccountId']){_0x2dc1b0[_0x3850('0x4f')]=_0x3bae86[_0x3850('0x4c')][_0x3850('0x4f')];}else if(_0x3bae86[_0x3850('0x4c')][_0x3850('0x50')]){_0x2dc1b0[_0x3850('0x50')]=_0x3bae86[_0x3850('0x4c')]['OpenchannelAccountId'];}else if(_0x3bae86[_0x3850('0x4c')][_0x3850('0x51')]){_0x2dc1b0[_0x3850('0x51')]=_0x3bae86[_0x3850('0x4c')]['ChatWebsiteId'];}return db['CannedAnswer'][_0x3850('0x4a')]({'where':_0x2dc1b0})[_0x3850('0x25')](function(_0x4e8439){if(_0x4e8439){throw new db[(_0x3850('0x52'))][(_0x3850('0x53'))](_0x3850('0x54'));}return db[_0x3850('0x42')]['create'](_0x3bae86[_0x3850('0x4c')]);})[_0x3850('0x25')](function(_0x53a411){var _0x4ea6a2=_0x3bae86[_0x3850('0x55')]['get']({'plain':!![]});if(!_0x4ea6a2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4ea6a2[_0x3850('0x56')]==='user'){var _0x52e015=_0x53a411[_0x3850('0x27')]({'plain':!![]});return db[_0x3850('0x57')][_0x3850('0x4a')]({'where':{'name':'CannedAnswers','userProfileId':_0x4ea6a2[_0x3850('0x58')]},'raw':!![]})[_0x3850('0x25')](function(_0x680dc4){if(_0x680dc4&&_0x680dc4[_0x3850('0x59')]===0x0){return db[_0x3850('0x29')][_0x3850('0x5a')]({'name':_0x52e015[_0x3850('0x2c')],'resourceId':_0x52e015['id'],'type':_0x680dc4['name'],'sectionId':_0x680dc4['id']},{})[_0x3850('0x25')](function(){return _0x53a411;});}else{return _0x53a411;}})[_0x3850('0x47')](function(_0x222eac){logger[_0x3850('0x5b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x222eac);throw _0x222eac;});}return _0x53a411;})[_0x3850('0x25')](respondWithResult(_0x5a8cb1,0xc9))[_0x3850('0x47')](handleError(_0x5a8cb1,null));};
\ No newline at end of file
index 6b5b99f..3983784 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0121=['lodash','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','CannedAnswer','tools_canned_answers','utf8mb4'];(function(_0x664ed2,_0x5dee8c){var _0x4ced49=function(_0x510572){while(--_0x510572){_0x664ed2['push'](_0x664ed2['shift']());}};_0x4ced49(++_0x5dee8c);}(_0x0121,0xf0));var _0x1012=function(_0x308e05,_0x3efd10){_0x308e05=_0x308e05-0x0;var _0xf2cda9=_0x0121[_0x308e05];return _0xf2cda9;};'use strict';var _=require(_0x1012('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x1012('0x1'));var moment=require('moment');var BPromise=require(_0x1012('0x2'));var rp=require(_0x1012('0x3'));var fs=require('fs');var path=require(_0x1012('0x4'));var rimraf=require(_0x1012('0x5'));var config=require(_0x1012('0x6'));var attributes=require('./cannedAnswer.attributes');module[_0x1012('0x7')]=function(_0x1a6877,_0x2aa9a1){return _0x1a6877[_0x1012('0x8')](_0x1012('0x9'),attributes,{'tableName':_0x1012('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x1012('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x8d05=['./cannedAnswer.attributes','CannedAnswer','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment'];(function(_0x4d3608,_0x351acf){var _0x21522f=function(_0x31285c){while(--_0x31285c){_0x4d3608['push'](_0x4d3608['shift']());}};_0x21522f(++_0x351acf);}(_0x8d05,0xe8));var _0x58d0=function(_0x41fd4,_0x3cfe11){_0x41fd4=_0x41fd4-0x0;var _0xc7c0d7=_0x8d05[_0x41fd4];return _0xc7c0d7;};'use strict';var _=require(_0x58d0('0x0'));var util=require(_0x58d0('0x1'));var logger=require(_0x58d0('0x2'))(_0x58d0('0x3'));var moment=require(_0x58d0('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x58d0('0x5'));var rimraf=require(_0x58d0('0x6'));var config=require(_0x58d0('0x7'));var attributes=require(_0x58d0('0x8'));module['exports']=function(_0xdff7f2,_0xb300a9){return _0xdff7f2['define'](_0x58d0('0x9'),attributes,{'tableName':'tools_canned_answers','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x58d0('0xa'),'collate':_0x58d0('0xb')});};
\ No newline at end of file
index fbdee39..3038aab 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(_0x170337,_0x5bcdff){var _0x27cc18=function(_0x2351e5){while(--_0x2351e5){_0x170337['push'](_0x170337['shift']());}};_0x27cc18(++_0x5bcdff);}(_0xa9e0,0x123));var _0x0a9e=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xa9e0[_0xc6be3a];return _0x56a310;};'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(_0x1763e8,_0x2295ce){var _0x575d34=function(_0x56789d){while(--_0x56789d){_0x1763e8['push'](_0x1763e8['shift']());}};_0x575d34(++_0x2295ce);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index 0b15c5c..19cab4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2f7=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','index','/:id','isAuthenticated','post','create','put','update','delete','destroy'];(function(_0x2c9527,_0x3d3e1d){var _0x2fd230=function(_0x301888){while(--_0x301888){_0x2c9527['push'](_0x2c9527['shift']());}};_0x2fd230(++_0x3d3e1d);}(_0xe2f7,0x72));var _0x7e2f=function(_0x421f3c,_0x5edac1){_0x421f3c=_0x421f3c-0x0;var _0x8aee90=_0xe2f7[_0x421f3c];return _0x8aee90;};'use strict';var multer=require(_0x7e2f('0x0'));var util=require(_0x7e2f('0x1'));var path=require(_0x7e2f('0x2'));var timeout=require(_0x7e2f('0x3'));var express=require(_0x7e2f('0x4'));var router=express[_0x7e2f('0x5')]();var fs_extra=require(_0x7e2f('0x6'));var auth=require(_0x7e2f('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x7e2f('0x8'));var controller=require('./cannedAnswer.controller');router[_0x7e2f('0x9')]('/',auth['isAuthenticated'](),controller[_0x7e2f('0xa')]);router[_0x7e2f('0x9')](_0x7e2f('0xb'),auth[_0x7e2f('0xc')](),controller['show']);router[_0x7e2f('0xd')]('/',auth[_0x7e2f('0xc')](),controller[_0x7e2f('0xe')]);router[_0x7e2f('0xf')](_0x7e2f('0xb'),auth['isAuthenticated'](),controller[_0x7e2f('0x10')]);router[_0x7e2f('0x11')](_0x7e2f('0xb'),auth['isAuthenticated'](),controller[_0x7e2f('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x0c5d=['update','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','isAuthenticated','index','get','show','post','create','put','/:id'];(function(_0x198a47,_0xe08d29){var _0x1004d3=function(_0x3ce2fb){while(--_0x3ce2fb){_0x198a47['push'](_0x198a47['shift']());}};_0x1004d3(++_0xe08d29);}(_0x0c5d,0x1cf));var _0xd0c5=function(_0x6d114f,_0x4e7123){_0x6d114f=_0x6d114f-0x0;var _0x301927=_0x0c5d[_0x6d114f];return _0x301927;};'use strict';var multer=require(_0xd0c5('0x0'));var util=require('util');var path=require(_0xd0c5('0x1'));var timeout=require('connect-timeout');var express=require(_0xd0c5('0x2'));var router=express[_0xd0c5('0x3')]();var fs_extra=require(_0xd0c5('0x4'));var auth=require(_0xd0c5('0x5'));var interaction=require(_0xd0c5('0x6'));var config=require(_0xd0c5('0x7'));var controller=require(_0xd0c5('0x8'));router['get']('/',auth[_0xd0c5('0x9')](),controller[_0xd0c5('0xa')]);router[_0xd0c5('0xb')]('/:id',auth[_0xd0c5('0x9')](),controller[_0xd0c5('0xc')]);router[_0xd0c5('0xd')]('/',auth[_0xd0c5('0x9')](),controller[_0xd0c5('0xe')]);router[_0xd0c5('0xf')](_0xd0c5('0x10'),auth['isAuthenticated'](),controller[_0xd0c5('0x11')]);router['delete']('/:id',auth[_0xd0c5('0x9')](),controller[_0xd0c5('0x12')]);module[_0xd0c5('0x13')]=router;
\ No newline at end of file
index 8626d2a..f134105 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2121=['sequelize','exports','STRING','INTEGER'];(function(_0x115038,_0x739bbf){var _0x412aa7=function(_0x4710b1){while(--_0x4710b1){_0x115038['push'](_0x115038['shift']());}};_0x412aa7(++_0x739bbf);}(_0x2121,0x1b4));var _0x1212=function(_0xecbc49,_0x32c666){_0xecbc49=_0xecbc49-0x0;var _0x20f184=_0x2121[_0xecbc49];return _0x20f184;};'use strict';var Sequelize=require(_0x1212('0x0'));module[_0x1212('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize[_0x1212('0x2')]},'src':{'type':Sequelize[_0x1212('0x2')]},'dst':{'type':Sequelize[_0x1212('0x2')]},'dcontext':{'type':Sequelize[_0x1212('0x2')]},'channel':{'type':Sequelize[_0x1212('0x2')]},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize[_0x1212('0x2')]},'lastdata':{'type':Sequelize['STRING']},'duration':{'type':Sequelize[_0x1212('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x1212('0x3')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x1212('0x2')]},'amaflags':{'type':Sequelize[_0x1212('0x3')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x1212('0x2')]},'userfield':{'type':Sequelize[_0x1212('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0x1212('0x2')]},'sequence':{'type':Sequelize[_0x1212('0x2')]},'peeraccount':{'type':Sequelize[_0x1212('0x2')]},'type':{'type':Sequelize[_0x1212('0x2')]},'tag':{'type':Sequelize[_0x1212('0x2')]}};
\ No newline at end of file
+var _0xe43c=['sequelize','exports','DATE','1970-01-01\x2000:00:01','STRING','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe43c,0x180));var _0xce43=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0xe43c[_0x51020b];return _0x371e47;};'use strict';var Sequelize=require(_0xce43('0x0'));module[_0xce43('0x1')]={'calldate':{'type':Sequelize[_0xce43('0x2')],'allowNull':![],'defaultValue':_0xce43('0x3')},'clid':{'type':Sequelize[_0xce43('0x4')]},'src':{'type':Sequelize[_0xce43('0x4')]},'dst':{'type':Sequelize['STRING']},'dcontext':{'type':Sequelize[_0xce43('0x4')]},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize[_0xce43('0x4')]},'lastapp':{'type':Sequelize[_0xce43('0x4')]},'lastdata':{'type':Sequelize[_0xce43('0x4')]},'duration':{'type':Sequelize[_0xce43('0x5')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xce43('0x4')]},'amaflags':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0xce43('0x4')]},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xce43('0x4')]},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize['STRING']},'peeraccount':{'type':Sequelize[_0xce43('0x4')]},'type':{'type':Sequelize[_0xce43('0x4')]},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f93158b..7e042c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ece=['findAll','rows','catch','params','keys','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','set','Content-Range','apply','save','update','destroy','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','query','intersection','model','attributes','fields','length','hasOwnProperty','limit','order','sort','where','filters','filter','merge','VIRTUAL','options','Cdr','includeAll'];(function(_0x27a4b4,_0x5d28f9){var _0x215a8e=function(_0x9fbb41){while(--_0x9fbb41){_0x27a4b4['push'](_0x27a4b4['shift']());}};_0x215a8e(++_0x5d28f9);}(_0x8ece,0x195));var _0xe8ec=function(_0x1fa63e,_0x14aea6){_0x1fa63e=_0x1fa63e-0x0;var _0x11ecea=_0x8ece[_0x1fa63e];return _0x11ecea;};'use strict';var emlformat=require(_0xe8ec('0x0'));var rimraf=require(_0xe8ec('0x1'));var zipdir=require(_0xe8ec('0x2'));var jsonpatch=require(_0xe8ec('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xe8ec('0x4'));var Mustache=require(_0xe8ec('0x5'));var util=require(_0xe8ec('0x6'));var path=require(_0xe8ec('0x7'));var sox=require(_0xe8ec('0x8'));var csv=require('to-csv');var ejs=require(_0xe8ec('0x9'));var fs=require('fs');var fs_extra=require(_0xe8ec('0xa'));var _=require(_0xe8ec('0xb'));var squel=require(_0xe8ec('0xc'));var crypto=require(_0xe8ec('0xd'));var jsforce=require(_0xe8ec('0xe'));var deskjs=require(_0xe8ec('0xf'));var toCsv=require('to-csv');var querystring=require(_0xe8ec('0x10'));var Papa=require('papaparse');var Redis=require(_0xe8ec('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xe8ec('0x12'));var as=require(_0xe8ec('0x13'));var hardwareService=require(_0xe8ec('0x14'));var logger=require(_0xe8ec('0x15'))(_0xe8ec('0x16'));var utils=require(_0xe8ec('0x17'));var config=require(_0xe8ec('0x18'));var licenseUtil=require(_0xe8ec('0x19'));var db=require(_0xe8ec('0x1a'))['db'];function respondWithStatusCode(_0x69a424,_0xf72aa7){_0xf72aa7=_0xf72aa7||0xcc;return function(_0x153203){if(_0x153203){return _0x69a424[_0xe8ec('0x1b')](_0xf72aa7);}return _0x69a424['status'](_0xf72aa7)[_0xe8ec('0x1c')]();};}function respondWithResult(_0x431723,_0x2e5a88){_0x2e5a88=_0x2e5a88||0xc8;return function(_0x167ebb){if(_0x167ebb){return _0x431723[_0xe8ec('0x1d')](_0x2e5a88)[_0xe8ec('0x1e')](_0x167ebb);}};}function respondWithFilteredResult(_0x1e76ac,_0x218a4b){return function(_0x531f69){if(_0x531f69){var _0x2e7c82=typeof _0x218a4b[_0xe8ec('0x1f')]===_0xe8ec('0x20')&&typeof _0x218a4b['limit']===_0xe8ec('0x20');var _0x20e847=_0x531f69[_0xe8ec('0x21')];var _0x34a582=_0x2e7c82?0x0:_0x218a4b[_0xe8ec('0x1f')];var _0x39e557=_0x2e7c82?_0x531f69[_0xe8ec('0x21')]:_0x218a4b[_0xe8ec('0x1f')]+_0x218a4b['limit'];var _0x11dbe0;if(_0x39e557>=_0x20e847){_0x39e557=_0x20e847;_0x11dbe0=0xc8;}else{_0x11dbe0=0xce;}_0x1e76ac[_0xe8ec('0x1d')](_0x11dbe0);return _0x1e76ac[_0xe8ec('0x22')](_0xe8ec('0x23'),_0x34a582+'-'+_0x39e557+'/'+_0x20e847)[_0xe8ec('0x1e')](_0x531f69);}return null;};}function patchUpdates(_0x3d6fbc){return function(_0xd5ccf5){try{jsonpatch[_0xe8ec('0x24')](_0xd5ccf5,_0x3d6fbc,!![]);}catch(_0x3a5d14){return BPromise['reject'](_0x3a5d14);}return _0xd5ccf5[_0xe8ec('0x25')]();};}function saveUpdates(_0x3fa53f,_0x3de125){return function(_0x31a97d){if(_0x31a97d){return _0x31a97d[_0xe8ec('0x26')](_0x3fa53f)['then'](function(_0x2e05d8){return _0x2e05d8;});}return null;};}function removeEntity(_0x78b6f4,_0x431af0){return function(_0x24260b){if(_0x24260b){return _0x24260b[_0xe8ec('0x27')]()[_0xe8ec('0x28')](function(){_0x78b6f4['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x457607,_0x1899d9){return function(_0x35af9b){if(!_0x35af9b){_0x457607[_0xe8ec('0x1b')](0x194);}return _0x35af9b;};}function handleError(_0xbec801,_0x3519a5){_0x3519a5=_0x3519a5||0x1f4;return function(_0x267356){logger[_0xe8ec('0x29')](_0x267356[_0xe8ec('0x2a')]);if(_0x267356[_0xe8ec('0x2b')]){delete _0x267356[_0xe8ec('0x2b')];}_0xbec801[_0xe8ec('0x1d')](_0x3519a5)[_0xe8ec('0x2c')](_0x267356);};}exports[_0xe8ec('0x2d')]=function(_0x1140d6,_0x5d6888){var _0x21badd={},_0x243904={},_0x2ec6ff={'count':0x0,'rows':[]};var _0x52c0b1=_[_0xe8ec('0x2e')](db['Cdr'][_0xe8ec('0x2f')],function(_0x3b27d3){return{'name':_0x3b27d3[_0xe8ec('0x30')],'type':_0x3b27d3[_0xe8ec('0x31')][_0xe8ec('0x32')]};});_0x243904['model']=_[_0xe8ec('0x2e')](_0x52c0b1,_0xe8ec('0x2b'));_0x243904[_0xe8ec('0x33')]=_['keys'](_0x1140d6[_0xe8ec('0x33')]);_0x243904['filters']=_[_0xe8ec('0x34')](_0x243904[_0xe8ec('0x35')],_0x243904[_0xe8ec('0x33')]);_0x21badd[_0xe8ec('0x36')]=_[_0xe8ec('0x34')](_0x243904[_0xe8ec('0x35')],qs[_0xe8ec('0x37')](_0x1140d6[_0xe8ec('0x33')][_0xe8ec('0x37')]));_0x21badd['attributes']=_0x21badd[_0xe8ec('0x36')][_0xe8ec('0x38')]?_0x21badd[_0xe8ec('0x36')]:_0x243904['model'];if(!_0x1140d6[_0xe8ec('0x33')][_0xe8ec('0x39')]('nolimit')){_0x21badd[_0xe8ec('0x3a')]=qs[_0xe8ec('0x3a')](_0x1140d6[_0xe8ec('0x33')][_0xe8ec('0x3a')]);_0x21badd['offset']=qs[_0xe8ec('0x1f')](_0x1140d6[_0xe8ec('0x33')][_0xe8ec('0x1f')]);}_0x21badd[_0xe8ec('0x3b')]=qs[_0xe8ec('0x3c')](_0x1140d6[_0xe8ec('0x33')][_0xe8ec('0x3c')]);_0x21badd[_0xe8ec('0x3d')]=qs['filters'](_['pick'](_0x1140d6[_0xe8ec('0x33')],_0x243904[_0xe8ec('0x3e')]),_0x52c0b1);if(_0x1140d6[_0xe8ec('0x33')][_0xe8ec('0x3f')]){_0x21badd[_0xe8ec('0x3d')]=_[_0xe8ec('0x40')](_0x21badd[_0xe8ec('0x3d')],{'$or':_['map'](_0x52c0b1,function(_0x3ab84e){if(_0x3ab84e['type']!==_0xe8ec('0x41')){var _0x17b7b0={};_0x17b7b0[_0x3ab84e['name']]={'$like':'%'+_0x1140d6['query'][_0xe8ec('0x3f')]+'%'};return _0x17b7b0;}})});}_0x21badd=_[_0xe8ec('0x40')]({},_0x21badd,_0x1140d6[_0xe8ec('0x42')]);var _0x5c99cd={'where':_0x21badd[_0xe8ec('0x3d')]};return db[_0xe8ec('0x43')][_0xe8ec('0x21')](_0x5c99cd)[_0xe8ec('0x28')](function(_0x3d52c9){_0x2ec6ff['count']=_0x3d52c9;if(_0x1140d6['query'][_0xe8ec('0x44')]){_0x21badd['include']=[{'all':!![]}];}return db[_0xe8ec('0x43')][_0xe8ec('0x45')](_0x21badd);})[_0xe8ec('0x28')](function(_0x1ed587){_0x2ec6ff[_0xe8ec('0x46')]=_0x1ed587;return _0x2ec6ff;})[_0xe8ec('0x28')](respondWithFilteredResult(_0x5d6888,_0x21badd))[_0xe8ec('0x47')](handleError(_0x5d6888,null));};exports['show']=function(_0x33b672,_0x305d15){var _0x40e8b3={'raw':!![],'where':{'id':_0x33b672[_0xe8ec('0x48')]['id']}},_0x582d67={};_0x582d67[_0xe8ec('0x35')]=_[_0xe8ec('0x49')](db[_0xe8ec('0x43')]['rawAttributes']);_0x582d67[_0xe8ec('0x33')]=_[_0xe8ec('0x49')](_0x33b672[_0xe8ec('0x33')]);_0x582d67['filters']=_[_0xe8ec('0x34')](_0x582d67['model'],_0x582d67[_0xe8ec('0x33')]);_0x40e8b3[_0xe8ec('0x36')]=_[_0xe8ec('0x34')](_0x582d67['model'],qs[_0xe8ec('0x37')](_0x33b672[_0xe8ec('0x33')]['fields']));_0x40e8b3[_0xe8ec('0x36')]=_0x40e8b3['attributes'][_0xe8ec('0x38')]?_0x40e8b3['attributes']:_0x582d67[_0xe8ec('0x35')];if(_0x33b672[_0xe8ec('0x33')][_0xe8ec('0x44')]){_0x40e8b3[_0xe8ec('0x4a')]=[{'all':!![]}];}_0x40e8b3=_['merge']({},_0x40e8b3,_0x33b672['options']);return db['Cdr'][_0xe8ec('0x4b')](_0x40e8b3)[_0xe8ec('0x28')](handleEntityNotFound(_0x305d15,null))[_0xe8ec('0x28')](respondWithResult(_0x305d15,null))['catch'](handleError(_0x305d15,null));};exports[_0xe8ec('0x4c')]=function(_0x354984,_0x96ca5f){return db[_0xe8ec('0x43')][_0xe8ec('0x4c')](_0x354984['body'],{})[_0xe8ec('0x28')](respondWithResult(_0x96ca5f,0xc9))[_0xe8ec('0x47')](handleError(_0x96ca5f,null));};exports[_0xe8ec('0x26')]=function(_0x3de7aa,_0x329ef3){if(_0x3de7aa[_0xe8ec('0x4d')]['id']){delete _0x3de7aa[_0xe8ec('0x4d')]['id'];}return db['Cdr'][_0xe8ec('0x4b')]({'where':{'id':_0x3de7aa[_0xe8ec('0x48')]['id']}})['then'](handleEntityNotFound(_0x329ef3,null))[_0xe8ec('0x28')](saveUpdates(_0x3de7aa[_0xe8ec('0x4d')],null))[_0xe8ec('0x28')](respondWithResult(_0x329ef3,null))[_0xe8ec('0x47')](handleError(_0x329ef3,null));};exports['destroy']=function(_0x30f211,_0x1367dd){return db[_0xe8ec('0x43')][_0xe8ec('0x4b')]({'where':{'id':_0x30f211[_0xe8ec('0x48')]['id']}})[_0xe8ec('0x28')](handleEntityNotFound(_0x1367dd,null))['then'](removeEntity(_0x1367dd,null))[_0xe8ec('0x47')](handleError(_0x1367dd,null));};exports[_0xe8ec('0x4e')]=function(_0x482856,_0x4f9e25){return db[_0xe8ec('0x43')]['describe']()['then'](respondWithResult(_0x4f9e25,null))[_0xe8ec('0x47')](handleError(_0x4f9e25,null));};
\ No newline at end of file
+var _0xcb81=['save','then','destroy','error','stack','name','send','index','Cdr','rawAttributes','type','key','model','map','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','find','create','body','update','params','describe','eml-format','rimraf','fast-json-patch','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject'];(function(_0x34164f,_0x21d1f8){var _0x27caf1=function(_0x559e05){while(--_0x559e05){_0x34164f['push'](_0x34164f['shift']());}};_0x27caf1(++_0x21d1f8);}(_0xcb81,0x154));var _0x1cb8=function(_0x325501,_0x5242f6){_0x325501=_0x325501-0x0;var _0x2c1626=_0xcb81[_0x325501];return _0x2c1626;};'use strict';var emlformat=require(_0x1cb8('0x0'));var rimraf=require(_0x1cb8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1cb8('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x1cb8('0x3'));var util=require(_0x1cb8('0x4'));var path=require(_0x1cb8('0x5'));var sox=require(_0x1cb8('0x6'));var csv=require(_0x1cb8('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1cb8('0x8'));var _=require(_0x1cb8('0x9'));var squel=require('squel');var crypto=require(_0x1cb8('0xa'));var jsforce=require(_0x1cb8('0xb'));var deskjs=require(_0x1cb8('0xc'));var toCsv=require('to-csv');var querystring=require(_0x1cb8('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x1cb8('0xe'));var qs=require(_0x1cb8('0xf'));var as=require(_0x1cb8('0x10'));var hardwareService=require(_0x1cb8('0x11'));var logger=require(_0x1cb8('0x12'))(_0x1cb8('0x13'));var utils=require(_0x1cb8('0x14'));var config=require(_0x1cb8('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x1cb8('0x16'))['db'];function respondWithStatusCode(_0x1ffe94,_0x1938ee){_0x1938ee=_0x1938ee||0xcc;return function(_0x299eea){if(_0x299eea){return _0x1ffe94[_0x1cb8('0x17')](_0x1938ee);}return _0x1ffe94['status'](_0x1938ee)[_0x1cb8('0x18')]();};}function respondWithResult(_0x2c600,_0xcb6ad1){_0xcb6ad1=_0xcb6ad1||0xc8;return function(_0x14d84d){if(_0x14d84d){return _0x2c600[_0x1cb8('0x19')](_0xcb6ad1)[_0x1cb8('0x1a')](_0x14d84d);}};}function respondWithFilteredResult(_0x339ad0,_0x243930){return function(_0x5af4a3){if(_0x5af4a3){var _0x17a95d=typeof _0x243930['offset']===_0x1cb8('0x1b')&&typeof _0x243930[_0x1cb8('0x1c')]===_0x1cb8('0x1b');var _0x46abd0=_0x5af4a3[_0x1cb8('0x1d')];var _0x308088=_0x17a95d?0x0:_0x243930[_0x1cb8('0x1e')];var _0x9f0adb=_0x17a95d?_0x5af4a3[_0x1cb8('0x1d')]:_0x243930[_0x1cb8('0x1e')]+_0x243930[_0x1cb8('0x1c')];var _0x3cda27;if(_0x9f0adb>=_0x46abd0){_0x9f0adb=_0x46abd0;_0x3cda27=0xc8;}else{_0x3cda27=0xce;}_0x339ad0['status'](_0x3cda27);return _0x339ad0[_0x1cb8('0x1f')](_0x1cb8('0x20'),_0x308088+'-'+_0x9f0adb+'/'+_0x46abd0)[_0x1cb8('0x1a')](_0x5af4a3);}return null;};}function patchUpdates(_0x3d1682){return function(_0x4abf3a){try{jsonpatch[_0x1cb8('0x21')](_0x4abf3a,_0x3d1682,!![]);}catch(_0x4f9220){return BPromise[_0x1cb8('0x22')](_0x4f9220);}return _0x4abf3a[_0x1cb8('0x23')]();};}function saveUpdates(_0x40b914,_0x38ff3a){return function(_0x559916){if(_0x559916){return _0x559916['update'](_0x40b914)[_0x1cb8('0x24')](function(_0x4040be){return _0x4040be;});}return null;};}function removeEntity(_0x22dafe,_0x44a00d){return function(_0x2473b8){if(_0x2473b8){return _0x2473b8[_0x1cb8('0x25')]()[_0x1cb8('0x24')](function(){_0x22dafe['status'](0xcc)[_0x1cb8('0x18')]();});}};}function handleEntityNotFound(_0x4554d5,_0x35c890){return function(_0xeeb21d){if(!_0xeeb21d){_0x4554d5[_0x1cb8('0x17')](0x194);}return _0xeeb21d;};}function handleError(_0x41ab56,_0x4ca3be){_0x4ca3be=_0x4ca3be||0x1f4;return function(_0x1ec995){logger[_0x1cb8('0x26')](_0x1ec995[_0x1cb8('0x27')]);if(_0x1ec995[_0x1cb8('0x28')]){delete _0x1ec995[_0x1cb8('0x28')];}_0x41ab56['status'](_0x4ca3be)[_0x1cb8('0x29')](_0x1ec995);};}exports[_0x1cb8('0x2a')]=function(_0x3a8b53,_0x21c17a){var _0x4fda96={},_0x2a79e0={},_0x2ba8c8={'count':0x0,'rows':[]};var _0x3a6a67=_['map'](db[_0x1cb8('0x2b')][_0x1cb8('0x2c')],function(_0x17abe1){return{'name':_0x17abe1['fieldName'],'type':_0x17abe1[_0x1cb8('0x2d')][_0x1cb8('0x2e')]};});_0x2a79e0[_0x1cb8('0x2f')]=_[_0x1cb8('0x30')](_0x3a6a67,_0x1cb8('0x28'));_0x2a79e0['query']=_[_0x1cb8('0x31')](_0x3a8b53[_0x1cb8('0x32')]);_0x2a79e0[_0x1cb8('0x33')]=_[_0x1cb8('0x34')](_0x2a79e0[_0x1cb8('0x2f')],_0x2a79e0[_0x1cb8('0x32')]);_0x4fda96[_0x1cb8('0x35')]=_[_0x1cb8('0x34')](_0x2a79e0[_0x1cb8('0x2f')],qs['fields'](_0x3a8b53['query'][_0x1cb8('0x36')]));_0x4fda96[_0x1cb8('0x35')]=_0x4fda96[_0x1cb8('0x35')]['length']?_0x4fda96['attributes']:_0x2a79e0[_0x1cb8('0x2f')];if(!_0x3a8b53[_0x1cb8('0x32')][_0x1cb8('0x37')](_0x1cb8('0x38'))){_0x4fda96[_0x1cb8('0x1c')]=qs[_0x1cb8('0x1c')](_0x3a8b53[_0x1cb8('0x32')][_0x1cb8('0x1c')]);_0x4fda96['offset']=qs[_0x1cb8('0x1e')](_0x3a8b53[_0x1cb8('0x32')][_0x1cb8('0x1e')]);}_0x4fda96[_0x1cb8('0x39')]=qs[_0x1cb8('0x3a')](_0x3a8b53[_0x1cb8('0x32')][_0x1cb8('0x3a')]);_0x4fda96[_0x1cb8('0x3b')]=qs[_0x1cb8('0x33')](_['pick'](_0x3a8b53[_0x1cb8('0x32')],_0x2a79e0[_0x1cb8('0x33')]),_0x3a6a67);if(_0x3a8b53['query'][_0x1cb8('0x3c')]){_0x4fda96[_0x1cb8('0x3b')]=_[_0x1cb8('0x3d')](_0x4fda96[_0x1cb8('0x3b')],{'$or':_[_0x1cb8('0x30')](_0x3a6a67,function(_0x5dc4c0){if(_0x5dc4c0[_0x1cb8('0x2d')]!==_0x1cb8('0x3e')){var _0x2989c6={};_0x2989c6[_0x5dc4c0['name']]={'$like':'%'+_0x3a8b53['query']['filter']+'%'};return _0x2989c6;}})});}_0x4fda96=_[_0x1cb8('0x3d')]({},_0x4fda96,_0x3a8b53[_0x1cb8('0x3f')]);var _0x328f7e={'where':_0x4fda96[_0x1cb8('0x3b')]};return db['Cdr']['count'](_0x328f7e)[_0x1cb8('0x24')](function(_0x25f0a3){_0x2ba8c8[_0x1cb8('0x1d')]=_0x25f0a3;if(_0x3a8b53[_0x1cb8('0x32')][_0x1cb8('0x40')]){_0x4fda96[_0x1cb8('0x41')]=[{'all':!![]}];}return db[_0x1cb8('0x2b')][_0x1cb8('0x42')](_0x4fda96);})['then'](function(_0x2044d1){_0x2ba8c8[_0x1cb8('0x43')]=_0x2044d1;return _0x2ba8c8;})[_0x1cb8('0x24')](respondWithFilteredResult(_0x21c17a,_0x4fda96))[_0x1cb8('0x44')](handleError(_0x21c17a,null));};exports['show']=function(_0x156298,_0x47c18a){var _0x2060a6={'raw':!![],'where':{'id':_0x156298['params']['id']}},_0x37230e={};_0x37230e[_0x1cb8('0x2f')]=_[_0x1cb8('0x31')](db[_0x1cb8('0x2b')]['rawAttributes']);_0x37230e['query']=_[_0x1cb8('0x31')](_0x156298['query']);_0x37230e[_0x1cb8('0x33')]=_[_0x1cb8('0x34')](_0x37230e[_0x1cb8('0x2f')],_0x37230e[_0x1cb8('0x32')]);_0x2060a6[_0x1cb8('0x35')]=_[_0x1cb8('0x34')](_0x37230e[_0x1cb8('0x2f')],qs['fields'](_0x156298[_0x1cb8('0x32')][_0x1cb8('0x36')]));_0x2060a6[_0x1cb8('0x35')]=_0x2060a6[_0x1cb8('0x35')]['length']?_0x2060a6[_0x1cb8('0x35')]:_0x37230e[_0x1cb8('0x2f')];if(_0x156298[_0x1cb8('0x32')][_0x1cb8('0x40')]){_0x2060a6[_0x1cb8('0x41')]=[{'all':!![]}];}_0x2060a6=_['merge']({},_0x2060a6,_0x156298[_0x1cb8('0x3f')]);return db[_0x1cb8('0x2b')][_0x1cb8('0x45')](_0x2060a6)[_0x1cb8('0x24')](handleEntityNotFound(_0x47c18a,null))[_0x1cb8('0x24')](respondWithResult(_0x47c18a,null))['catch'](handleError(_0x47c18a,null));};exports[_0x1cb8('0x46')]=function(_0x3a4ec4,_0x5598b1){return db[_0x1cb8('0x2b')][_0x1cb8('0x46')](_0x3a4ec4[_0x1cb8('0x47')],{})[_0x1cb8('0x24')](respondWithResult(_0x5598b1,0xc9))[_0x1cb8('0x44')](handleError(_0x5598b1,null));};exports[_0x1cb8('0x48')]=function(_0x3b063c,_0x219541){if(_0x3b063c[_0x1cb8('0x47')]['id']){delete _0x3b063c[_0x1cb8('0x47')]['id'];}return db[_0x1cb8('0x2b')][_0x1cb8('0x45')]({'where':{'id':_0x3b063c[_0x1cb8('0x49')]['id']}})[_0x1cb8('0x24')](handleEntityNotFound(_0x219541,null))['then'](saveUpdates(_0x3b063c[_0x1cb8('0x47')],null))[_0x1cb8('0x24')](respondWithResult(_0x219541,null))[_0x1cb8('0x44')](handleError(_0x219541,null));};exports[_0x1cb8('0x25')]=function(_0x21aba7,_0x15f0ba){return db[_0x1cb8('0x2b')]['find']({'where':{'id':_0x21aba7[_0x1cb8('0x49')]['id']}})[_0x1cb8('0x24')](handleEntityNotFound(_0x15f0ba,null))[_0x1cb8('0x24')](removeEntity(_0x15f0ba,null))['catch'](handleError(_0x15f0ba,null));};exports['describe']=function(_0x1c12aa,_0x42cc81){return db[_0x1cb8('0x2b')][_0x1cb8('0x4a')]()[_0x1cb8('0x24')](respondWithResult(_0x42cc81,null))['catch'](handleError(_0x42cc81,null));};
\ No newline at end of file
index 732dbf3..a4d9449 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x3d6d08,_0x54e088){var _0x44417e=function(_0x42b9eb){while(--_0x42b9eb){_0x3d6d08['push'](_0x3d6d08['shift']());}};_0x44417e(++_0x54e088);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x239023,_0x1c08fc){var _0x50f5ed=function(_0x391520){while(--_0x391520){_0x239023['push'](_0x239023['shift']());}};_0x50f5ed(++_0x1c08fc);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
index 9ee3b7f..b0b2b8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d4c=['../../config/logger','rpc','jayson/promise','client','http','request','then','info','Cdr,\x20%s,\x20%s','debug','Cdr,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils'];(function(_0x4492af,_0x47e25d){var _0x216729=function(_0x4964c8){while(--_0x4964c8){_0x4492af['push'](_0x4492af['shift']());}};_0x216729(++_0x47e25d);}(_0x6d4c,0x1dc));var _0xc6d4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6d4c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc6d4('0x0'));var util=require(_0xc6d4('0x1'));var moment=require(_0xc6d4('0x2'));var BPromise=require(_0xc6d4('0x3'));var rs=require(_0xc6d4('0x4'));var fs=require('fs');var Redis=require(_0xc6d4('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc6d4('0x6'));var logger=require(_0xc6d4('0x7'))(_0xc6d4('0x8'));var config=require('../../config/environment');var jayson=require(_0xc6d4('0x9'));var client=jayson[_0xc6d4('0xa')][_0xc6d4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3f65a9,_0x10069e,_0x484014){return new BPromise(function(_0x31941c,_0xae9b7d){return client[_0xc6d4('0xc')](_0x3f65a9,_0x484014)[_0xc6d4('0xd')](function(_0x419d34){logger[_0xc6d4('0xe')](_0xc6d4('0xf'),_0x10069e,'request\x20sent');logger[_0xc6d4('0x10')](_0xc6d4('0x11'),_0x10069e,_0xc6d4('0x12'),JSON[_0xc6d4('0x13')](_0x419d34));if(_0x419d34[_0xc6d4('0x14')]){if(_0x419d34[_0xc6d4('0x14')]['code']===0x1f4){logger[_0xc6d4('0x14')](_0xc6d4('0xf'),_0x10069e,_0x419d34[_0xc6d4('0x14')][_0xc6d4('0x15')]);return _0xae9b7d(_0x419d34[_0xc6d4('0x14')][_0xc6d4('0x15')]);}logger[_0xc6d4('0x14')]('Cdr,\x20%s,\x20%s',_0x10069e,_0x419d34[_0xc6d4('0x14')][_0xc6d4('0x15')]);return _0x31941c(_0x419d34[_0xc6d4('0x14')][_0xc6d4('0x15')]);}else{logger[_0xc6d4('0xe')](_0xc6d4('0xf'),_0x10069e,_0xc6d4('0x12'));_0x31941c(_0x419d34[_0xc6d4('0x16')][_0xc6d4('0x15')]);}})['catch'](function(_0x4c0d5a){logger[_0xc6d4('0x14')](_0xc6d4('0xf'),_0x10069e,_0x4c0d5a);_0xae9b7d(_0x4c0d5a);});});}
\ No newline at end of file
+var _0xac73=['http','then','info','Cdr,\x20%s,\x20%s','debug','stringify','error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x55b1a6,_0x4140da){var _0x1050f3=function(_0x2112ae){while(--_0x2112ae){_0x55b1a6['push'](_0x55b1a6['shift']());}};_0x1050f3(++_0x4140da);}(_0xac73,0x15f));var _0x3ac7=function(_0x55019c,_0x3cc9d7){_0x55019c=_0x55019c-0x0;var _0x907917=_0xac73[_0x55019c];return _0x907917;};'use strict';var _=require('lodash');var util=require(_0x3ac7('0x0'));var moment=require('moment');var BPromise=require(_0x3ac7('0x1'));var rs=require(_0x3ac7('0x2'));var fs=require('fs');var Redis=require(_0x3ac7('0x3'));var db=require(_0x3ac7('0x4'))['db'];var utils=require(_0x3ac7('0x5'));var logger=require('../../config/logger')(_0x3ac7('0x6'));var config=require(_0x3ac7('0x7'));var jayson=require(_0x3ac7('0x8'));var client=jayson['client'][_0x3ac7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2401ce,_0x2f3f60,_0x2cb26b){return new BPromise(function(_0x1930ca,_0x4c3d52){return client['request'](_0x2401ce,_0x2cb26b)[_0x3ac7('0xa')](function(_0x33f66e){logger[_0x3ac7('0xb')](_0x3ac7('0xc'),_0x2f3f60,'request\x20sent');logger[_0x3ac7('0xd')]('Cdr,\x20%s,\x20%s,\x20%s',_0x2f3f60,'request\x20sent',JSON[_0x3ac7('0xe')](_0x33f66e));if(_0x33f66e['error']){if(_0x33f66e[_0x3ac7('0xf')][_0x3ac7('0x10')]===0x1f4){logger[_0x3ac7('0xf')](_0x3ac7('0xc'),_0x2f3f60,_0x33f66e[_0x3ac7('0xf')][_0x3ac7('0x11')]);return _0x4c3d52(_0x33f66e[_0x3ac7('0xf')][_0x3ac7('0x11')]);}logger['error'](_0x3ac7('0xc'),_0x2f3f60,_0x33f66e[_0x3ac7('0xf')][_0x3ac7('0x11')]);return _0x1930ca(_0x33f66e[_0x3ac7('0xf')]['message']);}else{logger[_0x3ac7('0xb')]('Cdr,\x20%s,\x20%s',_0x2f3f60,'request\x20sent');_0x1930ca(_0x33f66e[_0x3ac7('0x12')]['message']);}})[_0x3ac7('0x13')](function(_0x592d9c){logger[_0x3ac7('0xf')]('Cdr,\x20%s,\x20%s',_0x2f3f60,_0x592d9c);_0x4c3d52(_0x592d9c);});});}
\ No newline at end of file
index 055842d..ae4b2e2 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(_0x4f4107,_0x342cd4){var _0x2f02bc=function(_0x1b9918){while(--_0x1b9918){_0x4f4107['push'](_0x4f4107['shift']());}};_0x2f02bc(++_0x342cd4);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
+var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cdr.controller','get','index','/describe','show','post'];(function(_0x2642cb,_0x4b917f){var _0xe6e41=function(_0x281676){while(--_0x281676){_0x2642cb['push'](_0x2642cb['shift']());}};_0xe6e41(++_0x4b917f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'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 b779ac2..c19efbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b7f=['sequelize','exports','INTEGER','noop','STRING'];(function(_0x26a6dd,_0x249e9e){var _0xf4dc31=function(_0xc31c22){while(--_0xc31c22){_0x26a6dd['push'](_0x26a6dd['shift']());}};_0xf4dc31(++_0x249e9e);}(_0x3b7f,0xb4));var _0xf3b7=function(_0x1edbcf,_0x5a59a1){_0x1edbcf=_0x1edbcf-0x0;var _0x1215be=_0x3b7f[_0x1edbcf];return _0x1215be;};'use strict';var Sequelize=require(_0xf3b7('0x0'));module[_0xf3b7('0x1')]={'priority':{'type':Sequelize[_0xf3b7('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xf3b7('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xf3b7('0x4')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x8363=['STRING','noop','TEXT','sequelize','exports'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x8363,0x67));var _0x3836=function(_0x1730dd,_0x273769){_0x1730dd=_0x1730dd-0x0;var _0x13c056=_0x8363[_0x1730dd];return _0x13c056;};'use strict';var Sequelize=require(_0x3836('0x0'));module[_0x3836('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x3836('0x2')],'allowNull':![],'defaultValue':_0x3836('0x3')},'appdata':{'type':Sequelize[_0x3836('0x4')]()},'description':{'type':Sequelize[_0x3836('0x2')]},'interval':{'type':Sequelize[_0x3836('0x2')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 93bcf90..92cd91a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x693f=['status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','show','params','keys','ChatApplication','rawAttributes','query','filters','intersection','attributes','model','fields','length','include','merge','options','find','body','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x4aa31e,_0x391603){var _0x5d1a73=function(_0x5141a1){while(--_0x5141a1){_0x4aa31e['push'](_0x4aa31e['shift']());}};_0x5d1a73(++_0x391603);}(_0x693f,0x9d));var _0xf693=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x693f[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0xf693('0x0'));var rimraf=require(_0xf693('0x1'));var zipdir=require(_0xf693('0x2'));var jsonpatch=require(_0xf693('0x3'));var rp=require('request-promise');var moment=require(_0xf693('0x4'));var BPromise=require(_0xf693('0x5'));var Mustache=require(_0xf693('0x6'));var util=require(_0xf693('0x7'));var path=require(_0xf693('0x8'));var sox=require(_0xf693('0x9'));var csv=require(_0xf693('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf693('0xb'));var _=require(_0xf693('0xc'));var squel=require('squel');var crypto=require(_0xf693('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf693('0xe'));var toCsv=require('to-csv');var querystring=require(_0xf693('0xf'));var Papa=require(_0xf693('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf693('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf693('0x12'))(_0xf693('0x13'));var utils=require(_0xf693('0x14'));var config=require(_0xf693('0x15'));var licenseUtil=require(_0xf693('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5d0d4c,_0xd08be1){_0xd08be1=_0xd08be1||0xcc;return function(_0x38bd65){if(_0x38bd65){return _0x5d0d4c['sendStatus'](_0xd08be1);}return _0x5d0d4c[_0xf693('0x17')](_0xd08be1)[_0xf693('0x18')]();};}function respondWithResult(_0x5a5f86,_0x5c42f0){_0x5c42f0=_0x5c42f0||0xc8;return function(_0x957c3f){if(_0x957c3f){return _0x5a5f86[_0xf693('0x17')](_0x5c42f0)[_0xf693('0x19')](_0x957c3f);}};}function respondWithFilteredResult(_0x208f32,_0x36d92c){return function(_0x5541a7){if(_0x5541a7){var _0x1d9278=typeof _0x36d92c[_0xf693('0x1a')]===_0xf693('0x1b')&&typeof _0x36d92c[_0xf693('0x1c')]===_0xf693('0x1b');var _0x19ea07=_0x5541a7['count'];var _0x5e02e0=_0x1d9278?0x0:_0x36d92c['offset'];var _0x2474d4=_0x1d9278?_0x5541a7[_0xf693('0x1d')]:_0x36d92c[_0xf693('0x1a')]+_0x36d92c[_0xf693('0x1c')];var _0x350996;if(_0x2474d4>=_0x19ea07){_0x2474d4=_0x19ea07;_0x350996=0xc8;}else{_0x350996=0xce;}_0x208f32['status'](_0x350996);return _0x208f32[_0xf693('0x1e')](_0xf693('0x1f'),_0x5e02e0+'-'+_0x2474d4+'/'+_0x19ea07)[_0xf693('0x19')](_0x5541a7);}return null;};}function patchUpdates(_0x31b887){return function(_0x1d20fc){try{jsonpatch[_0xf693('0x20')](_0x1d20fc,_0x31b887,!![]);}catch(_0x44b55d){return BPromise[_0xf693('0x21')](_0x44b55d);}return _0x1d20fc['save']();};}function saveUpdates(_0x505ada,_0x1188c6){return function(_0x2e022b){if(_0x2e022b){return _0x2e022b[_0xf693('0x22')](_0x505ada)[_0xf693('0x23')](function(_0x786611){return _0x786611;});}return null;};}function removeEntity(_0x200c95,_0x5407f5){return function(_0x179e25){if(_0x179e25){return _0x179e25[_0xf693('0x24')]()[_0xf693('0x23')](function(){_0x200c95[_0xf693('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x950632,_0x302e08){return function(_0xe7a396){if(!_0xe7a396){_0x950632[_0xf693('0x25')](0x194);}return _0xe7a396;};}function handleError(_0x1fc10e,_0xbbbf29){_0xbbbf29=_0xbbbf29||0x1f4;return function(_0x1c6ff2){logger[_0xf693('0x26')](_0x1c6ff2[_0xf693('0x27')]);if(_0x1c6ff2[_0xf693('0x28')]){delete _0x1c6ff2['name'];}_0x1fc10e[_0xf693('0x17')](_0xbbbf29)[_0xf693('0x29')](_0x1c6ff2);};}exports[_0xf693('0x2a')]=function(_0x405f94,_0x83cd35){var _0x7fdc22={'raw':!![],'where':{'id':_0x405f94[_0xf693('0x2b')]['id']}},_0x1936c0={};_0x1936c0['model']=_[_0xf693('0x2c')](db[_0xf693('0x2d')][_0xf693('0x2e')]);_0x1936c0[_0xf693('0x2f')]=_['keys'](_0x405f94['query']);_0x1936c0[_0xf693('0x30')]=_[_0xf693('0x31')](_0x1936c0['model'],_0x1936c0[_0xf693('0x2f')]);_0x7fdc22[_0xf693('0x32')]=_[_0xf693('0x31')](_0x1936c0[_0xf693('0x33')],qs['fields'](_0x405f94[_0xf693('0x2f')][_0xf693('0x34')]));_0x7fdc22[_0xf693('0x32')]=_0x7fdc22[_0xf693('0x32')][_0xf693('0x35')]?_0x7fdc22[_0xf693('0x32')]:_0x1936c0[_0xf693('0x33')];if(_0x405f94[_0xf693('0x2f')]['includeAll']){_0x7fdc22[_0xf693('0x36')]=[{'all':!![]}];}_0x7fdc22=_[_0xf693('0x37')]({},_0x7fdc22,_0x405f94[_0xf693('0x38')]);return db[_0xf693('0x2d')][_0xf693('0x39')](_0x7fdc22)[_0xf693('0x23')](handleEntityNotFound(_0x83cd35,null))['then'](respondWithResult(_0x83cd35,null))['catch'](handleError(_0x83cd35,null));};exports[_0xf693('0x22')]=function(_0x39cfd2,_0x45bd06){if(_0x39cfd2['body']['id']){delete _0x39cfd2[_0xf693('0x3a')]['id'];}return db[_0xf693('0x2d')][_0xf693('0x39')]({'where':{'id':_0x39cfd2[_0xf693('0x2b')]['id']}})[_0xf693('0x23')](handleEntityNotFound(_0x45bd06,null))['then'](saveUpdates(_0x39cfd2[_0xf693('0x3a')],null))[_0xf693('0x23')](respondWithResult(_0x45bd06,null))[_0xf693('0x3b')](handleError(_0x45bd06,null));};exports['destroy']=function(_0x42ddc0,_0x5dc44c){return db[_0xf693('0x2d')][_0xf693('0x39')]({'where':{'id':_0x42ddc0[_0xf693('0x2b')]['id']}})[_0xf693('0x23')](handleEntityNotFound(_0x5dc44c,null))[_0xf693('0x23')](removeEntity(_0x5dc44c,null))['catch'](handleError(_0x5dc44c,null));};
\ No newline at end of file
+var _0x3ee7=['squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','count','limit','Content-Range','apply','reject','save','update','then','destroy','error','name','send','show','params','model','keys','ChatApplication','query','attributes','intersection','fields','length','includeAll','merge','find','catch','body','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0x4b6753,_0x126227){var _0x35fc50=function(_0x19bb92){while(--_0x19bb92){_0x4b6753['push'](_0x4b6753['shift']());}};_0x35fc50(++_0x126227);}(_0x3ee7,0x98));var _0x73ee=function(_0x262f47,_0x3ccc28){_0x262f47=_0x262f47-0x0;var _0x70119f=_0x3ee7[_0x262f47];return _0x70119f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x73ee('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x73ee('0x1'));var moment=require('moment');var BPromise=require(_0x73ee('0x2'));var Mustache=require(_0x73ee('0x3'));var util=require(_0x73ee('0x4'));var path=require(_0x73ee('0x5'));var sox=require(_0x73ee('0x6'));var csv=require(_0x73ee('0x7'));var ejs=require(_0x73ee('0x8'));var fs=require('fs');var fs_extra=require(_0x73ee('0x9'));var _=require('lodash');var squel=require(_0x73ee('0xa'));var crypto=require(_0x73ee('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x73ee('0xc'));var toCsv=require('to-csv');var querystring=require(_0x73ee('0xd'));var Papa=require(_0x73ee('0xe'));var Redis=require(_0x73ee('0xf'));var authService=require(_0x73ee('0x10'));var qs=require(_0x73ee('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x73ee('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x73ee('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x73ee('0x14'));var db=require(_0x73ee('0x15'))['db'];function respondWithStatusCode(_0x4c26a7,_0x4f62ff){_0x4f62ff=_0x4f62ff||0xcc;return function(_0x408377){if(_0x408377){return _0x4c26a7[_0x73ee('0x16')](_0x4f62ff);}return _0x4c26a7['status'](_0x4f62ff)[_0x73ee('0x17')]();};}function respondWithResult(_0x5ddaec,_0x2cff0d){_0x2cff0d=_0x2cff0d||0xc8;return function(_0x4e0ed5){if(_0x4e0ed5){return _0x5ddaec[_0x73ee('0x18')](_0x2cff0d)[_0x73ee('0x19')](_0x4e0ed5);}};}function respondWithFilteredResult(_0x191467,_0x487d52){return function(_0x56b13a){if(_0x56b13a){var _0x14899e=typeof _0x487d52[_0x73ee('0x1a')]==='undefined'&&typeof _0x487d52['limit']==='undefined';var _0x4a2458=_0x56b13a['count'];var _0x17af51=_0x14899e?0x0:_0x487d52[_0x73ee('0x1a')];var _0x492593=_0x14899e?_0x56b13a[_0x73ee('0x1b')]:_0x487d52[_0x73ee('0x1a')]+_0x487d52[_0x73ee('0x1c')];var _0x5a28c3;if(_0x492593>=_0x4a2458){_0x492593=_0x4a2458;_0x5a28c3=0xc8;}else{_0x5a28c3=0xce;}_0x191467[_0x73ee('0x18')](_0x5a28c3);return _0x191467['set'](_0x73ee('0x1d'),_0x17af51+'-'+_0x492593+'/'+_0x4a2458)[_0x73ee('0x19')](_0x56b13a);}return null;};}function patchUpdates(_0x1b4a19){return function(_0x4a2382){try{jsonpatch[_0x73ee('0x1e')](_0x4a2382,_0x1b4a19,!![]);}catch(_0xbbad3d){return BPromise[_0x73ee('0x1f')](_0xbbad3d);}return _0x4a2382[_0x73ee('0x20')]();};}function saveUpdates(_0x1acef1,_0x4a924a){return function(_0x2409ed){if(_0x2409ed){return _0x2409ed[_0x73ee('0x21')](_0x1acef1)[_0x73ee('0x22')](function(_0x4cd55f){return _0x4cd55f;});}return null;};}function removeEntity(_0x538049,_0x1d16b4){return function(_0x183d62){if(_0x183d62){return _0x183d62[_0x73ee('0x23')]()[_0x73ee('0x22')](function(){_0x538049[_0x73ee('0x18')](0xcc)[_0x73ee('0x17')]();});}};}function handleEntityNotFound(_0x572a84,_0x4489db){return function(_0x1e8b7d){if(!_0x1e8b7d){_0x572a84[_0x73ee('0x16')](0x194);}return _0x1e8b7d;};}function handleError(_0x501ce9,_0x5b9b5f){_0x5b9b5f=_0x5b9b5f||0x1f4;return function(_0x1606a8){logger[_0x73ee('0x24')](_0x1606a8['stack']);if(_0x1606a8[_0x73ee('0x25')]){delete _0x1606a8['name'];}_0x501ce9[_0x73ee('0x18')](_0x5b9b5f)[_0x73ee('0x26')](_0x1606a8);};}exports[_0x73ee('0x27')]=function(_0x2485a1,_0x47bf15){var _0x15a95f={'raw':!![],'where':{'id':_0x2485a1[_0x73ee('0x28')]['id']}},_0x3a0746={};_0x3a0746[_0x73ee('0x29')]=_[_0x73ee('0x2a')](db[_0x73ee('0x2b')]['rawAttributes']);_0x3a0746[_0x73ee('0x2c')]=_[_0x73ee('0x2a')](_0x2485a1[_0x73ee('0x2c')]);_0x3a0746['filters']=_['intersection'](_0x3a0746[_0x73ee('0x29')],_0x3a0746[_0x73ee('0x2c')]);_0x15a95f[_0x73ee('0x2d')]=_[_0x73ee('0x2e')](_0x3a0746[_0x73ee('0x29')],qs[_0x73ee('0x2f')](_0x2485a1['query']['fields']));_0x15a95f[_0x73ee('0x2d')]=_0x15a95f[_0x73ee('0x2d')][_0x73ee('0x30')]?_0x15a95f['attributes']:_0x3a0746['model'];if(_0x2485a1['query'][_0x73ee('0x31')]){_0x15a95f['include']=[{'all':!![]}];}_0x15a95f=_[_0x73ee('0x32')]({},_0x15a95f,_0x2485a1['options']);return db[_0x73ee('0x2b')][_0x73ee('0x33')](_0x15a95f)[_0x73ee('0x22')](handleEntityNotFound(_0x47bf15,null))['then'](respondWithResult(_0x47bf15,null))[_0x73ee('0x34')](handleError(_0x47bf15,null));};exports['update']=function(_0x31b05d,_0x4b7668){if(_0x31b05d[_0x73ee('0x35')]['id']){delete _0x31b05d[_0x73ee('0x35')]['id'];}return db[_0x73ee('0x2b')]['find']({'where':{'id':_0x31b05d[_0x73ee('0x28')]['id']}})[_0x73ee('0x22')](handleEntityNotFound(_0x4b7668,null))[_0x73ee('0x22')](saveUpdates(_0x31b05d[_0x73ee('0x35')],null))['then'](respondWithResult(_0x4b7668,null))[_0x73ee('0x34')](handleError(_0x4b7668,null));};exports[_0x73ee('0x23')]=function(_0x1e22d0,_0x2f7f6f){return db[_0x73ee('0x2b')][_0x73ee('0x33')]({'where':{'id':_0x1e22d0[_0x73ee('0x28')]['id']}})['then'](handleEntityNotFound(_0x2f7f6f,null))['then'](removeEntity(_0x2f7f6f,null))[_0x73ee('0x34')](handleError(_0x2f7f6f,null));};
\ No newline at end of file
index ba83ada..9dd2f55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f38=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','ChatApplication','chat_applications','utf8mb4_unicode_ci','lodash','../../config/logger'];(function(_0x4cefdf,_0x34f6d2){var _0x78fc66=function(_0x3f3cc0){while(--_0x3f3cc0){_0x4cefdf['push'](_0x4cefdf['shift']());}};_0x78fc66(++_0x34f6d2);}(_0x4f38,0x11c));var _0x84f3=function(_0xaaed5b,_0x55632c){_0xaaed5b=_0xaaed5b-0x0;var _0x45eac3=_0x4f38[_0xaaed5b];return _0x45eac3;};'use strict';var _=require(_0x84f3('0x0'));var util=require('util');var logger=require(_0x84f3('0x1'))(_0x84f3('0x2'));var moment=require(_0x84f3('0x3'));var BPromise=require(_0x84f3('0x4'));var rp=require(_0x84f3('0x5'));var fs=require('fs');var path=require(_0x84f3('0x6'));var rimraf=require(_0x84f3('0x7'));var config=require(_0x84f3('0x8'));var attributes=require('./chatApplication.attributes');module[_0x84f3('0x9')]=function(_0x4a27e5,_0x4923eb){return _0x4a27e5['define'](_0x84f3('0xa'),attributes,{'tableName':_0x84f3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x84f3('0xc')});};
\ No newline at end of file
+var _0xfe17=['./chatApplication.attributes','exports','define','ChatApplication','chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x7c112e,_0x524eeb){var _0x5ded4b=function(_0x2ce710){while(--_0x2ce710){_0x7c112e['push'](_0x7c112e['shift']());}};_0x5ded4b(++_0x524eeb);}(_0xfe17,0x147));var _0x7fe1=function(_0x5720d6,_0x41798a){_0x5720d6=_0x5720d6-0x0;var _0x2423f8=_0xfe17[_0x5720d6];return _0x2423f8;};'use strict';var _=require(_0x7fe1('0x0'));var util=require(_0x7fe1('0x1'));var logger=require(_0x7fe1('0x2'))(_0x7fe1('0x3'));var moment=require(_0x7fe1('0x4'));var BPromise=require(_0x7fe1('0x5'));var rp=require(_0x7fe1('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7fe1('0x7'));var config=require(_0x7fe1('0x8'));var attributes=require(_0x7fe1('0x9'));module[_0x7fe1('0xa')]=function(_0x3bd37c,_0x5e63d2){return _0x3bd37c[_0x7fe1('0xb')](_0x7fe1('0xc'),attributes,{'tableName':_0x7fe1('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7fe1('0xe'),'collate':_0x7fe1('0xf')});};
\ No newline at end of file
index faefe79..f61dfe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x623d=['debug','request\x20sent','stringify','error','code','ChatApplication,\x20%s,\x20%s','message','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x48783c,_0x1f986b){var _0x2ce586=function(_0x38e1bd){while(--_0x38e1bd){_0x48783c['push'](_0x48783c['shift']());}};_0x2ce586(++_0x1f986b);}(_0x623d,0x12e));var _0xd623=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x623d[_0x432682];return _0x463d05;};'use strict';var _=require(_0xd623('0x0'));var util=require('util');var moment=require(_0xd623('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd623('0x2'));var db=require(_0xd623('0x3'))['db'];var utils=require(_0xd623('0x4'));var logger=require(_0xd623('0x5'))(_0xd623('0x6'));var config=require('../../config/environment');var jayson=require(_0xd623('0x7'));var client=jayson[_0xd623('0x8')][_0xd623('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x278cb1,_0x26e84c,_0x71dd17){return new BPromise(function(_0x56dc18,_0x3fd5d7){return client[_0xd623('0xa')](_0x278cb1,_0x71dd17)[_0xd623('0xb')](function(_0x22935b){logger[_0xd623('0xc')]('ChatApplication,\x20%s,\x20%s',_0x26e84c,'request\x20sent');logger[_0xd623('0xd')]('ChatApplication,\x20%s,\x20%s,\x20%s',_0x26e84c,_0xd623('0xe'),JSON[_0xd623('0xf')](_0x22935b));if(_0x22935b[_0xd623('0x10')]){if(_0x22935b[_0xd623('0x10')][_0xd623('0x11')]===0x1f4){logger[_0xd623('0x10')](_0xd623('0x12'),_0x26e84c,_0x22935b['error'][_0xd623('0x13')]);return _0x3fd5d7(_0x22935b[_0xd623('0x10')][_0xd623('0x13')]);}logger[_0xd623('0x10')](_0xd623('0x12'),_0x26e84c,_0x22935b['error'][_0xd623('0x13')]);return _0x56dc18(_0x22935b[_0xd623('0x10')][_0xd623('0x13')]);}else{logger[_0xd623('0xc')](_0xd623('0x12'),_0x26e84c,_0xd623('0xe'));_0x56dc18(_0x22935b['result'][_0xd623('0x13')]);}})[_0xd623('0x14')](function(_0xa29a2a){logger[_0xd623('0x10')]('ChatApplication,\x20%s,\x20%s',_0x26e84c,_0xa29a2a);_0x3fd5d7(_0xa29a2a);});});}
\ No newline at end of file
+var _0x24ac=['debug','ChatApplication,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','ChatApplication,\x20%s,\x20%s','request\x20sent'];(function(_0x1cd674,_0x8d3638){var _0x27928f=function(_0x5e3c70){while(--_0x5e3c70){_0x1cd674['push'](_0x1cd674['shift']());}};_0x27928f(++_0x8d3638);}(_0x24ac,0x11b));var _0xc24a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x24ac[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc24a('0x0'));var util=require(_0xc24a('0x1'));var moment=require(_0xc24a('0x2'));var BPromise=require(_0xc24a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc24a('0x4'));var db=require(_0xc24a('0x5'))['db'];var utils=require(_0xc24a('0x6'));var logger=require(_0xc24a('0x7'))(_0xc24a('0x8'));var config=require(_0xc24a('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xc24a('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x38346b,_0x3e8222,_0x3fa33d){return new BPromise(function(_0x3fe883,_0x281fc1){return client[_0xc24a('0xb')](_0x38346b,_0x3fa33d)[_0xc24a('0xc')](function(_0x15afea){logger[_0xc24a('0xd')](_0xc24a('0xe'),_0x3e8222,_0xc24a('0xf'));logger[_0xc24a('0x10')](_0xc24a('0x11'),_0x3e8222,_0xc24a('0xf'),JSON['stringify'](_0x15afea));if(_0x15afea[_0xc24a('0x12')]){if(_0x15afea[_0xc24a('0x12')][_0xc24a('0x13')]===0x1f4){logger['error'](_0xc24a('0xe'),_0x3e8222,_0x15afea[_0xc24a('0x12')][_0xc24a('0x14')]);return _0x281fc1(_0x15afea[_0xc24a('0x12')][_0xc24a('0x14')]);}logger[_0xc24a('0x12')]('ChatApplication,\x20%s,\x20%s',_0x3e8222,_0x15afea[_0xc24a('0x12')][_0xc24a('0x14')]);return _0x3fe883(_0x15afea[_0xc24a('0x12')][_0xc24a('0x14')]);}else{logger['info'](_0xc24a('0xe'),_0x3e8222,_0xc24a('0xf'));_0x3fe883(_0x15afea[_0xc24a('0x15')][_0xc24a('0x14')]);}})[_0xc24a('0x16')](function(_0x56a2d9){logger[_0xc24a('0x12')](_0xc24a('0xe'),_0x3e8222,_0x56a2d9);_0x281fc1(_0x56a2d9);});});}
\ No newline at end of file
index da44e41..42a5e86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x265c=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','put'];(function(_0x36f7cb,_0x245db1){var _0xacbfd5=function(_0x2d70cc){while(--_0x2d70cc){_0x36f7cb['push'](_0x36f7cb['shift']());}};_0xacbfd5(++_0x245db1);}(_0x265c,0x125));var _0xc265=function(_0x307af2,_0x41c51a){_0x307af2=_0x307af2-0x0;var _0x4aca63=_0x265c[_0x307af2];return _0x4aca63;};'use strict';var multer=require(_0xc265('0x0'));var util=require(_0xc265('0x1'));var path=require(_0xc265('0x2'));var timeout=require(_0xc265('0x3'));var express=require(_0xc265('0x4'));var router=express['Router']();var fs_extra=require(_0xc265('0x5'));var auth=require(_0xc265('0x6'));var interaction=require(_0xc265('0x7'));var config=require(_0xc265('0x8'));var controller=require('./chatApplication.controller');router[_0xc265('0x9')](_0xc265('0xa'),auth[_0xc265('0xb')](),controller['show']);router[_0xc265('0xc')](_0xc265('0xa'),auth[_0xc265('0xb')](),controller[_0xc265('0xd')]);router[_0xc265('0xe')](_0xc265('0xa'),auth[_0xc265('0xb')](),controller[_0xc265('0xf')]);module[_0xc265('0x10')]=router;
\ No newline at end of file
+var _0x1d06=['put','isAuthenticated','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','./chatApplication.controller','/:id','show'];(function(_0x146369,_0x3ee916){var _0x3a18e7=function(_0x37b7b8){while(--_0x37b7b8){_0x146369['push'](_0x146369['shift']());}};_0x3a18e7(++_0x3ee916);}(_0x1d06,0x122));var _0x61d0=function(_0x2d2c16,_0x4e88b6){_0x2d2c16=_0x2d2c16-0x0;var _0x53f2fb=_0x1d06[_0x2d2c16];return _0x53f2fb;};'use strict';var multer=require(_0x61d0('0x0'));var util=require(_0x61d0('0x1'));var path=require(_0x61d0('0x2'));var timeout=require('connect-timeout');var express=require(_0x61d0('0x3'));var router=express['Router']();var fs_extra=require(_0x61d0('0x4'));var auth=require(_0x61d0('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x61d0('0x6'));router['get'](_0x61d0('0x7'),auth['isAuthenticated'](),controller[_0x61d0('0x8')]);router[_0x61d0('0x9')](_0x61d0('0x7'),auth[_0x61d0('0xa')](),controller['update']);router['delete'](_0x61d0('0x7'),auth[_0x61d0('0xa')](),controller[_0x61d0('0xb')]);module[_0x61d0('0xc')]=router;
\ No newline at end of file
index 77c1755..9b49888 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2687=['exports','STRING','BOOLEAN','sequelize'];(function(_0x42890a,_0x4e6dd4){var _0x459102=function(_0x47b2bb){while(--_0x47b2bb){_0x42890a['push'](_0x42890a['shift']());}};_0x459102(++_0x4e6dd4);}(_0x2687,0x8f));var _0x7268=function(_0x3bbd1f,_0x119571){_0x3bbd1f=_0x3bbd1f-0x0;var _0x4cb1fe=_0x2687[_0x3bbd1f];return _0x4cb1fe;};'use strict';var Sequelize=require(_0x7268('0x0'));module[_0x7268('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0x7268('0x2')]},'write':{'type':Sequelize[_0x7268('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xea21=['STRING','BOOLEAN','sequelize'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0xea21,0x80));var _0x1ea2=function(_0x170005,_0x529f98){_0x170005=_0x170005-0x0;var _0x363307=_0xea21[_0x170005];return _0x363307;};'use strict';var Sequelize=require(_0x1ea2('0x0'));module['exports']={'name':{'type':Sequelize[_0x1ea2('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x1ea2('0x1')]},'write':{'type':Sequelize[_0x1ea2('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index 8d17af1..61dc3ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc283=['limit','count','offset','set','Content-Range','apply','reject','update','destroy','sendStatus','stack','index','fieldName','type','key','model','name','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','options','then','ChatGroup','rows','catch','show','rawAttributes','includeAll','find','create','body','params','describe','ChatInternalMessage','toInteger','addMembers','ids','omit','getMembers','findOne','User','order','removeMembers','addMessage','getMessages','format','YYYY-MM-DD\x20HH:mm:ss','eml-format','zip-dir','request-promise','moment','mustache','util','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','status','end','json','undefined'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xc283,0x96));var _0x3c28=function(_0x14f733,_0x2d3a97){_0x14f733=_0x14f733-0x0;var _0x51fe88=_0xc283[_0x14f733];return _0x51fe88;};'use strict';var emlformat=require(_0x3c28('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3c28('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3c28('0x2'));var moment=require(_0x3c28('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x3c28('0x4'));var util=require(_0x3c28('0x5'));var path=require('path');var sox=require(_0x3c28('0x6'));var csv=require(_0x3c28('0x7'));var ejs=require(_0x3c28('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3c28('0x9'));var squel=require(_0x3c28('0xa'));var crypto=require('crypto');var jsforce=require(_0x3c28('0xb'));var deskjs=require(_0x3c28('0xc'));var toCsv=require('to-csv');var querystring=require(_0x3c28('0xd'));var Papa=require(_0x3c28('0xe'));var Redis=require('ioredis');var authService=require(_0x3c28('0xf'));var qs=require(_0x3c28('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3c28('0x11'));var utils=require(_0x3c28('0x12'));var config=require(_0x3c28('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x3c28('0x14'))['db'];config[_0x3c28('0x15')]=_[_0x3c28('0x16')](config[_0x3c28('0x15')],{'host':_0x3c28('0x17'),'port':0x18eb});var socket=require(_0x3c28('0x18'))(new Redis(config[_0x3c28('0x15')]));require(_0x3c28('0x19'))['register'](socket);function respondWithStatusCode(_0x31ef1c,_0x322f88){_0x322f88=_0x322f88||0xcc;return function(_0x31213a){if(_0x31213a){return _0x31ef1c['sendStatus'](_0x322f88);}return _0x31ef1c[_0x3c28('0x1a')](_0x322f88)[_0x3c28('0x1b')]();};}function respondWithResult(_0x276466,_0x32a3ef){_0x32a3ef=_0x32a3ef||0xc8;return function(_0x67110){if(_0x67110){return _0x276466[_0x3c28('0x1a')](_0x32a3ef)[_0x3c28('0x1c')](_0x67110);}};}function respondWithFilteredResult(_0x4c94c4,_0x387444){return function(_0x28cd18){if(_0x28cd18){var _0x518833=typeof _0x387444['offset']===_0x3c28('0x1d')&&typeof _0x387444[_0x3c28('0x1e')]===_0x3c28('0x1d');var _0x5490bf=_0x28cd18[_0x3c28('0x1f')];var _0x3919c7=_0x518833?0x0:_0x387444['offset'];var _0x1393bc=_0x518833?_0x28cd18[_0x3c28('0x1f')]:_0x387444[_0x3c28('0x20')]+_0x387444['limit'];var _0xf7e224;if(_0x1393bc>=_0x5490bf){_0x1393bc=_0x5490bf;_0xf7e224=0xc8;}else{_0xf7e224=0xce;}_0x4c94c4[_0x3c28('0x1a')](_0xf7e224);return _0x4c94c4[_0x3c28('0x21')](_0x3c28('0x22'),_0x3919c7+'-'+_0x1393bc+'/'+_0x5490bf)[_0x3c28('0x1c')](_0x28cd18);}return null;};}function patchUpdates(_0x273078){return function(_0x1f495c){try{jsonpatch[_0x3c28('0x23')](_0x1f495c,_0x273078,!![]);}catch(_0x3a2fec){return BPromise[_0x3c28('0x24')](_0x3a2fec);}return _0x1f495c['save']();};}function saveUpdates(_0x27d68a,_0x46ce93){return function(_0x18e7a8){if(_0x18e7a8){return _0x18e7a8[_0x3c28('0x25')](_0x27d68a)['then'](function(_0x2620d4){return _0x2620d4;});}return null;};}function removeEntity(_0x28b6df,_0x3607b2){return function(_0xa033ea){if(_0xa033ea){return _0xa033ea[_0x3c28('0x26')]()['then'](function(){_0x28b6df[_0x3c28('0x1a')](0xcc)[_0x3c28('0x1b')]();});}};}function handleEntityNotFound(_0x1984fc,_0x5c67a0){return function(_0x21a658){if(!_0x21a658){_0x1984fc[_0x3c28('0x27')](0x194);}return _0x21a658;};}function handleError(_0xdc5e4a,_0x4e447f){_0x4e447f=_0x4e447f||0x1f4;return function(_0x50eb80){logger['error'](_0x50eb80[_0x3c28('0x28')]);if(_0x50eb80['name']){delete _0x50eb80['name'];}_0xdc5e4a[_0x3c28('0x1a')](_0x4e447f)['send'](_0x50eb80);};}exports[_0x3c28('0x29')]=function(_0x47e8fa,_0x50900c){var _0x2712ae={},_0x163d91={},_0x4444d6={'count':0x0,'rows':[]};var _0x53439d=_['map'](db['ChatGroup']['rawAttributes'],function(_0x5de78b){return{'name':_0x5de78b[_0x3c28('0x2a')],'type':_0x5de78b[_0x3c28('0x2b')][_0x3c28('0x2c')]};});_0x163d91[_0x3c28('0x2d')]=_['map'](_0x53439d,_0x3c28('0x2e'));_0x163d91['query']=_[_0x3c28('0x2f')](_0x47e8fa['query']);_0x163d91[_0x3c28('0x30')]=_[_0x3c28('0x31')](_0x163d91[_0x3c28('0x2d')],_0x163d91[_0x3c28('0x32')]);_0x2712ae[_0x3c28('0x33')]=_[_0x3c28('0x31')](_0x163d91[_0x3c28('0x2d')],qs[_0x3c28('0x34')](_0x47e8fa[_0x3c28('0x32')]['fields']));_0x2712ae[_0x3c28('0x33')]=_0x2712ae[_0x3c28('0x33')][_0x3c28('0x35')]?_0x2712ae[_0x3c28('0x33')]:_0x163d91[_0x3c28('0x2d')];if(!_0x47e8fa[_0x3c28('0x32')][_0x3c28('0x36')](_0x3c28('0x37'))){_0x2712ae[_0x3c28('0x1e')]=qs[_0x3c28('0x1e')](_0x47e8fa[_0x3c28('0x32')][_0x3c28('0x1e')]);_0x2712ae[_0x3c28('0x20')]=qs[_0x3c28('0x20')](_0x47e8fa[_0x3c28('0x32')][_0x3c28('0x20')]);}_0x2712ae['order']=qs[_0x3c28('0x38')](_0x47e8fa[_0x3c28('0x32')][_0x3c28('0x38')]);_0x2712ae[_0x3c28('0x39')]=qs['filters'](_[_0x3c28('0x3a')](_0x47e8fa[_0x3c28('0x32')],_0x163d91['filters']),_0x53439d);if(_0x47e8fa[_0x3c28('0x32')][_0x3c28('0x3b')]){_0x2712ae['where']=_[_0x3c28('0x3c')](_0x2712ae[_0x3c28('0x39')],{'$or':_[_0x3c28('0x3d')](_0x53439d,function(_0x441659){if(_0x441659[_0x3c28('0x2b')]!==_0x3c28('0x3e')){var _0x2d2b21={};_0x2d2b21[_0x441659[_0x3c28('0x2e')]]={'$like':'%'+_0x47e8fa['query'][_0x3c28('0x3b')]+'%'};return _0x2d2b21;}})});}_0x2712ae=_[_0x3c28('0x3c')]({},_0x2712ae,_0x47e8fa[_0x3c28('0x3f')]);var _0x1f896e={'where':_0x2712ae['where']};return db['ChatGroup'][_0x3c28('0x1f')](_0x1f896e)[_0x3c28('0x40')](function(_0x5b776f){_0x4444d6[_0x3c28('0x1f')]=_0x5b776f;if(_0x47e8fa[_0x3c28('0x32')]['includeAll']){_0x2712ae['include']=[{'all':!![]}];}return db[_0x3c28('0x41')]['findAll'](_0x2712ae);})['then'](function(_0x1d3899){_0x4444d6[_0x3c28('0x42')]=_0x1d3899;return _0x4444d6;})[_0x3c28('0x40')](respondWithFilteredResult(_0x50900c,_0x2712ae))[_0x3c28('0x43')](handleError(_0x50900c,null));};exports[_0x3c28('0x44')]=function(_0x5a5c4c,_0x3fb6fb){var _0xcf7e5c={'raw':!![],'where':{'id':_0x5a5c4c['params']['id']}},_0x317a90={};_0x317a90[_0x3c28('0x2d')]=_[_0x3c28('0x2f')](db[_0x3c28('0x41')][_0x3c28('0x45')]);_0x317a90[_0x3c28('0x32')]=_[_0x3c28('0x2f')](_0x5a5c4c[_0x3c28('0x32')]);_0x317a90['filters']=_[_0x3c28('0x31')](_0x317a90['model'],_0x317a90[_0x3c28('0x32')]);_0xcf7e5c['attributes']=_[_0x3c28('0x31')](_0x317a90[_0x3c28('0x2d')],qs['fields'](_0x5a5c4c[_0x3c28('0x32')]['fields']));_0xcf7e5c['attributes']=_0xcf7e5c[_0x3c28('0x33')]['length']?_0xcf7e5c['attributes']:_0x317a90['model'];if(_0x5a5c4c['query'][_0x3c28('0x46')]){_0xcf7e5c['include']=[{'all':!![]}];}_0xcf7e5c=_['merge']({},_0xcf7e5c,_0x5a5c4c[_0x3c28('0x3f')]);return db[_0x3c28('0x41')][_0x3c28('0x47')](_0xcf7e5c)[_0x3c28('0x40')](handleEntityNotFound(_0x3fb6fb,null))[_0x3c28('0x40')](respondWithResult(_0x3fb6fb,null))['catch'](handleError(_0x3fb6fb,null));};exports[_0x3c28('0x48')]=function(_0x16333a,_0x56961c){return db[_0x3c28('0x41')][_0x3c28('0x48')](_0x16333a[_0x3c28('0x49')],{})[_0x3c28('0x40')](respondWithResult(_0x56961c,0xc9))['catch'](handleError(_0x56961c,null));};exports[_0x3c28('0x25')]=function(_0x9090da,_0x542afc){if(_0x9090da[_0x3c28('0x49')]['id']){delete _0x9090da[_0x3c28('0x49')]['id'];}return db[_0x3c28('0x41')][_0x3c28('0x47')]({'where':{'id':_0x9090da[_0x3c28('0x4a')]['id']}})[_0x3c28('0x40')](handleEntityNotFound(_0x542afc,null))[_0x3c28('0x40')](saveUpdates(_0x9090da[_0x3c28('0x49')],null))[_0x3c28('0x40')](respondWithResult(_0x542afc,null))[_0x3c28('0x43')](handleError(_0x542afc,null));};exports['destroy']=function(_0x3078d3,_0x34d253){return db[_0x3c28('0x41')][_0x3c28('0x47')]({'where':{'id':_0x3078d3[_0x3c28('0x4a')]['id']}})[_0x3c28('0x40')](handleEntityNotFound(_0x34d253,null))[_0x3c28('0x40')](removeEntity(_0x34d253,null))['catch'](handleError(_0x34d253,null));};exports[_0x3c28('0x4b')]=function(_0x3173a4,_0x53fd00){return db['ChatGroup'][_0x3c28('0x4b')]()['then'](respondWithResult(_0x53fd00,null))[_0x3c28('0x43')](handleError(_0x53fd00,null));};exports['getUnread']=function(_0x52c493,_0x474008,_0x19b55a){return db[_0x3c28('0x4c')][_0x3c28('0x1f')]({'where':{'ChatGroupId':_0x52c493[_0x3c28('0x4a')]['id'],'ToId':_0x52c493['user']['id'],'read':![]}})[_0x3c28('0x40')](function(_0x276665){return{'id':_[_0x3c28('0x4d')](_0x52c493['params']['id']),'count':_0x276665};})[_0x3c28('0x40')](respondWithResult(_0x474008,null))[_0x3c28('0x43')](handleError(_0x474008,null));};exports['addMembers']=function(_0x360739,_0x1dab0f,_0x1582f5){return db['ChatGroup']['find']({'where':{'id':_0x360739['params']['id']}})[_0x3c28('0x40')](handleEntityNotFound(_0x1dab0f,null))[_0x3c28('0x40')](function(_0x3444f3){if(_0x3444f3){return _0x3444f3[_0x3c28('0x4e')](_0x360739[_0x3c28('0x49')][_0x3c28('0x4f')],_[_0x3c28('0x50')](_0x360739[_0x3c28('0x49')],[_0x3c28('0x4f'),'id'])||{});}})['then'](respondWithResult(_0x1dab0f,null))[_0x3c28('0x43')](handleError(_0x1dab0f,null));};exports[_0x3c28('0x51')]=function(_0x1a85b1,_0x1bb188,_0x48974){var _0x4daa74={};var _0x4c3854={};var _0x3594ee;var _0x23c7c3;return db[_0x3c28('0x41')][_0x3c28('0x52')]({'where':{'id':_0x1a85b1[_0x3c28('0x4a')]['id']}})[_0x3c28('0x40')](handleEntityNotFound(_0x1bb188,null))[_0x3c28('0x40')](function(_0x37d5e7){if(_0x37d5e7){_0x3594ee=_0x37d5e7;_0x4c3854[_0x3c28('0x2d')]=_[_0x3c28('0x2f')](db[_0x3c28('0x53')]['rawAttributes']);_0x4c3854[_0x3c28('0x32')]=_[_0x3c28('0x2f')](_0x1a85b1[_0x3c28('0x32')]);_0x4c3854[_0x3c28('0x30')]=_[_0x3c28('0x31')](_0x4c3854['model'],_0x4c3854[_0x3c28('0x32')]);_0x4daa74[_0x3c28('0x33')]=_[_0x3c28('0x31')](_0x4c3854[_0x3c28('0x2d')],qs['fields'](_0x1a85b1[_0x3c28('0x32')][_0x3c28('0x34')]));_0x4daa74[_0x3c28('0x33')]=_0x4daa74[_0x3c28('0x33')][_0x3c28('0x35')]?_0x4daa74[_0x3c28('0x33')]:_0x4c3854[_0x3c28('0x2d')];_0x4daa74[_0x3c28('0x54')]=qs[_0x3c28('0x38')](_0x1a85b1[_0x3c28('0x32')][_0x3c28('0x38')]);_0x4daa74[_0x3c28('0x39')]=qs[_0x3c28('0x30')](_[_0x3c28('0x3a')](_0x1a85b1[_0x3c28('0x32')],_0x4c3854['filters']));if(_0x1a85b1['query'][_0x3c28('0x3b')]){_0x4daa74[_0x3c28('0x39')]=_[_0x3c28('0x3c')](_0x4daa74[_0x3c28('0x39')],{'$or':_['map'](_0x4daa74[_0x3c28('0x33')],function(_0x4e429c){var _0x51b453={};_0x51b453[_0x4e429c]={'$like':'%'+_0x1a85b1[_0x3c28('0x32')]['filter']+'%'};return _0x51b453;})});}_0x4daa74=_['merge']({},_0x4daa74,_0x1a85b1[_0x3c28('0x3f')]);return _0x3594ee['getMembers'](_0x4daa74);}})[_0x3c28('0x40')](function(_0x489778){if(_0x489778){_0x23c7c3=_0x489778[_0x3c28('0x35')];if(!_0x1a85b1[_0x3c28('0x32')]['hasOwnProperty']('nolimit')){_0x4daa74['limit']=qs[_0x3c28('0x1e')](_0x1a85b1['query'][_0x3c28('0x1e')]);_0x4daa74[_0x3c28('0x20')]=qs[_0x3c28('0x20')](_0x1a85b1[_0x3c28('0x32')][_0x3c28('0x20')]);}return _0x3594ee[_0x3c28('0x51')](_0x4daa74);}})[_0x3c28('0x40')](function(_0x124a8a){if(_0x124a8a){return _0x124a8a?{'count':_0x23c7c3,'rows':_0x124a8a}:null;}})[_0x3c28('0x40')](respondWithResult(_0x1bb188,null))[_0x3c28('0x43')](handleError(_0x1bb188,null));};exports[_0x3c28('0x55')]=function(_0x2fcbd2,_0x14cf2c,_0x4dabea){return db[_0x3c28('0x41')][_0x3c28('0x47')]({'where':{'id':_0x2fcbd2['params']['id']}})[_0x3c28('0x40')](handleEntityNotFound(_0x14cf2c,null))['then'](function(_0x544314){if(_0x544314){return _0x544314['removeMembers'](_0x2fcbd2['query'][_0x3c28('0x4f')]);}})[_0x3c28('0x40')](respondWithStatusCode(_0x14cf2c,null))['catch'](handleError(_0x14cf2c,null));};exports[_0x3c28('0x56')]=function(_0x166024,_0x167d4b,_0x2ea5e5){if(_0x166024['body']['id']){delete _0x166024[_0x3c28('0x49')]['id'];}return db[_0x3c28('0x41')]['find']({'where':{'id':_0x166024[_0x3c28('0x4a')]['id']}})[_0x3c28('0x40')](handleEntityNotFound(_0x167d4b,null))[_0x3c28('0x40')](function(_0x5a6ce5){if(_0x5a6ce5){_0x166024[_0x3c28('0x49')]['ChatGroupId']=_0x5a6ce5['id'];return db[_0x3c28('0x4c')][_0x3c28('0x48')](_0x166024[_0x3c28('0x49')]);}})[_0x3c28('0x40')](respondWithResult(_0x167d4b,null))['catch'](handleError(_0x167d4b,null));};exports[_0x3c28('0x57')]=function(_0x147fd8,_0x1f3373,_0x49a2dd){var _0x5569be={};var _0x5130d9={};var _0x1cae39;var _0x248bae;return db[_0x3c28('0x41')][_0x3c28('0x52')]({'where':{'id':_0x147fd8[_0x3c28('0x4a')]['id']}})[_0x3c28('0x40')](handleEntityNotFound(_0x1f3373,null))[_0x3c28('0x40')](function(_0x748a4a){if(_0x748a4a){_0x1cae39=_0x748a4a;_0x5130d9[_0x3c28('0x2d')]=_[_0x3c28('0x2f')](db[_0x3c28('0x4c')][_0x3c28('0x45')]);_0x5130d9[_0x3c28('0x32')]=_['keys'](_0x147fd8['query']);_0x5130d9[_0x3c28('0x30')]=_['intersection'](_0x5130d9[_0x3c28('0x2d')],_0x5130d9[_0x3c28('0x32')]);_0x5569be[_0x3c28('0x33')]=_[_0x3c28('0x31')](_0x5130d9[_0x3c28('0x2d')],qs[_0x3c28('0x34')](_0x147fd8[_0x3c28('0x32')][_0x3c28('0x34')]));_0x5569be[_0x3c28('0x33')]=_0x5569be['attributes'][_0x3c28('0x35')]?_0x5569be[_0x3c28('0x33')]:_0x5130d9[_0x3c28('0x2d')];_0x5569be[_0x3c28('0x54')]=qs[_0x3c28('0x38')](_0x147fd8[_0x3c28('0x32')][_0x3c28('0x38')]);_0x5569be['where']=qs['filters'](_[_0x3c28('0x3a')](_0x147fd8[_0x3c28('0x32')],_0x5130d9[_0x3c28('0x30')]));if(_0x147fd8[_0x3c28('0x32')][_0x3c28('0x3b')]){_0x5569be[_0x3c28('0x39')]=_[_0x3c28('0x3c')](_0x5569be[_0x3c28('0x39')],{'$or':_[_0x3c28('0x3d')](_0x5569be['attributes'],function(_0x1f6b07){var _0x2db3d5={};_0x2db3d5[_0x1f6b07]={'$like':'%'+_0x147fd8[_0x3c28('0x32')]['filter']+'%'};return _0x2db3d5;})});}if(_0x147fd8['query']['$gte']){var _0xc810e6=_0x147fd8['query']['$gte']['split'](',');var _0x19f78d={};_0x19f78d[_0xc810e6[0x0]]={'$gte':moment(_0xc810e6[0x1])[_0x3c28('0x58')](_0x3c28('0x59'))};_0x5569be['where']=_[_0x3c28('0x3c')](_0x5569be[_0x3c28('0x39')],_0x19f78d);}_0x5569be=_['merge']({},_0x5569be,_0x147fd8[_0x3c28('0x3f')]);return _0x1cae39[_0x3c28('0x57')](_0x5569be);}})['then'](function(_0x3a40ba){if(_0x3a40ba){_0x248bae=_0x3a40ba[_0x3c28('0x35')];if(!_0x147fd8['query'][_0x3c28('0x36')](_0x3c28('0x37'))){_0x5569be[_0x3c28('0x1e')]=qs[_0x3c28('0x1e')](_0x147fd8[_0x3c28('0x32')][_0x3c28('0x1e')]);_0x5569be['offset']=qs[_0x3c28('0x20')](_0x147fd8[_0x3c28('0x32')][_0x3c28('0x20')]);}return _0x1cae39[_0x3c28('0x57')](_0x5569be);}})[_0x3c28('0x40')](function(_0x358802){if(_0x358802){return _0x358802?{'count':_0x248bae,'rows':_0x358802}:null;}})[_0x3c28('0x40')](respondWithResult(_0x1f3373,null))['catch'](handleError(_0x1f3373,null));};
\ No newline at end of file
+var _0x6424=['$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','getMessages','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','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','defaults','redis','localhost','./chatGroup.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','ChatGroup','includeAll','include','findAll','rows','catch','show','intersection','fields','create','body','find','params','destroy','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','omit','ids','getMembers','findOne','nolimit','removeMembers','addMessage','ChatGroupId'];(function(_0x1f11de,_0x44a92a){var _0x5b73f4=function(_0x237872){while(--_0x237872){_0x1f11de['push'](_0x1f11de['shift']());}};_0x5b73f4(++_0x44a92a);}(_0x6424,0xd3));var _0x4642=function(_0x1a1f19,_0x271839){_0x1a1f19=_0x1a1f19-0x0;var _0xaeab94=_0x6424[_0x1a1f19];return _0xaeab94;};'use strict';var emlformat=require(_0x4642('0x0'));var rimraf=require(_0x4642('0x1'));var zipdir=require(_0x4642('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4642('0x3'));var moment=require(_0x4642('0x4'));var BPromise=require(_0x4642('0x5'));var Mustache=require(_0x4642('0x6'));var util=require(_0x4642('0x7'));var path=require('path');var sox=require(_0x4642('0x8'));var csv=require(_0x4642('0x9'));var ejs=require(_0x4642('0xa'));var fs=require('fs');var fs_extra=require(_0x4642('0xb'));var _=require(_0x4642('0xc'));var squel=require(_0x4642('0xd'));var crypto=require('crypto');var jsforce=require(_0x4642('0xe'));var deskjs=require(_0x4642('0xf'));var toCsv=require(_0x4642('0x9'));var querystring=require(_0x4642('0x10'));var Papa=require('papaparse');var Redis=require(_0x4642('0x11'));var authService=require(_0x4642('0x12'));var qs=require(_0x4642('0x13'));var as=require(_0x4642('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4642('0x15'))(_0x4642('0x16'));var utils=require(_0x4642('0x17'));var config=require(_0x4642('0x18'));var licenseUtil=require(_0x4642('0x19'));var db=require(_0x4642('0x1a'))['db'];config['redis']=_[_0x4642('0x1b')](config[_0x4642('0x1c')],{'host':_0x4642('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x4642('0x1e'))[_0x4642('0x1f')](socket);function respondWithStatusCode(_0x4cca67,_0xcf0406){_0xcf0406=_0xcf0406||0xcc;return function(_0x23d731){if(_0x23d731){return _0x4cca67[_0x4642('0x20')](_0xcf0406);}return _0x4cca67['status'](_0xcf0406)['end']();};}function respondWithResult(_0x49aafa,_0x3c0d53){_0x3c0d53=_0x3c0d53||0xc8;return function(_0x2c65ca){if(_0x2c65ca){return _0x49aafa[_0x4642('0x21')](_0x3c0d53)[_0x4642('0x22')](_0x2c65ca);}};}function respondWithFilteredResult(_0x2e695d,_0x1df75b){return function(_0x397e1b){if(_0x397e1b){var _0x227cf3=typeof _0x1df75b[_0x4642('0x23')]===_0x4642('0x24')&&typeof _0x1df75b['limit']==='undefined';var _0x2956e0=_0x397e1b[_0x4642('0x25')];var _0x475d33=_0x227cf3?0x0:_0x1df75b[_0x4642('0x23')];var _0x320328=_0x227cf3?_0x397e1b[_0x4642('0x25')]:_0x1df75b[_0x4642('0x23')]+_0x1df75b[_0x4642('0x26')];var _0x2d8294;if(_0x320328>=_0x2956e0){_0x320328=_0x2956e0;_0x2d8294=0xc8;}else{_0x2d8294=0xce;}_0x2e695d[_0x4642('0x21')](_0x2d8294);return _0x2e695d[_0x4642('0x27')](_0x4642('0x28'),_0x475d33+'-'+_0x320328+'/'+_0x2956e0)[_0x4642('0x22')](_0x397e1b);}return null;};}function patchUpdates(_0x2e58da){return function(_0x3436a2){try{jsonpatch[_0x4642('0x29')](_0x3436a2,_0x2e58da,!![]);}catch(_0x318bfb){return BPromise[_0x4642('0x2a')](_0x318bfb);}return _0x3436a2[_0x4642('0x2b')]();};}function saveUpdates(_0x2843c1,_0x85be47){return function(_0x503801){if(_0x503801){return _0x503801[_0x4642('0x2c')](_0x2843c1)['then'](function(_0x4fa005){return _0x4fa005;});}return null;};}function removeEntity(_0x40e218,_0x83355c){return function(_0x392210){if(_0x392210){return _0x392210['destroy']()[_0x4642('0x2d')](function(){_0x40e218['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x292688,_0x576d6c){return function(_0x203e2a){if(!_0x203e2a){_0x292688[_0x4642('0x20')](0x194);}return _0x203e2a;};}function handleError(_0x52ebd8,_0x1951d9){_0x1951d9=_0x1951d9||0x1f4;return function(_0x120d9e){logger['error'](_0x120d9e[_0x4642('0x2e')]);if(_0x120d9e['name']){delete _0x120d9e[_0x4642('0x2f')];}_0x52ebd8[_0x4642('0x21')](_0x1951d9)[_0x4642('0x30')](_0x120d9e);};}exports[_0x4642('0x31')]=function(_0x398801,_0x49d9e6){var _0x15bbbe={},_0x41e3e6={},_0xe779a6={'count':0x0,'rows':[]};var _0x2726df=_[_0x4642('0x32')](db['ChatGroup'][_0x4642('0x33')],function(_0x2ecf72){return{'name':_0x2ecf72[_0x4642('0x34')],'type':_0x2ecf72[_0x4642('0x35')][_0x4642('0x36')]};});_0x41e3e6[_0x4642('0x37')]=_[_0x4642('0x32')](_0x2726df,_0x4642('0x2f'));_0x41e3e6[_0x4642('0x38')]=_[_0x4642('0x39')](_0x398801[_0x4642('0x38')]);_0x41e3e6[_0x4642('0x3a')]=_['intersection'](_0x41e3e6[_0x4642('0x37')],_0x41e3e6[_0x4642('0x38')]);_0x15bbbe[_0x4642('0x3b')]=_['intersection'](_0x41e3e6[_0x4642('0x37')],qs['fields'](_0x398801[_0x4642('0x38')]['fields']));_0x15bbbe[_0x4642('0x3b')]=_0x15bbbe[_0x4642('0x3b')][_0x4642('0x3c')]?_0x15bbbe[_0x4642('0x3b')]:_0x41e3e6['model'];if(!_0x398801['query'][_0x4642('0x3d')]('nolimit')){_0x15bbbe['limit']=qs['limit'](_0x398801[_0x4642('0x38')][_0x4642('0x26')]);_0x15bbbe[_0x4642('0x23')]=qs[_0x4642('0x23')](_0x398801[_0x4642('0x38')]['offset']);}_0x15bbbe[_0x4642('0x3e')]=qs[_0x4642('0x3f')](_0x398801[_0x4642('0x38')][_0x4642('0x3f')]);_0x15bbbe[_0x4642('0x40')]=qs[_0x4642('0x3a')](_[_0x4642('0x41')](_0x398801[_0x4642('0x38')],_0x41e3e6[_0x4642('0x3a')]),_0x2726df);if(_0x398801['query'][_0x4642('0x42')]){_0x15bbbe[_0x4642('0x40')]=_['merge'](_0x15bbbe['where'],{'$or':_[_0x4642('0x32')](_0x2726df,function(_0x2a645b){if(_0x2a645b[_0x4642('0x35')]!==_0x4642('0x43')){var _0x4b8eea={};_0x4b8eea[_0x2a645b[_0x4642('0x2f')]]={'$like':'%'+_0x398801[_0x4642('0x38')]['filter']+'%'};return _0x4b8eea;}})});}_0x15bbbe=_[_0x4642('0x44')]({},_0x15bbbe,_0x398801[_0x4642('0x45')]);var _0x50f5a9={'where':_0x15bbbe[_0x4642('0x40')]};return db[_0x4642('0x46')][_0x4642('0x25')](_0x50f5a9)[_0x4642('0x2d')](function(_0x19901b){_0xe779a6[_0x4642('0x25')]=_0x19901b;if(_0x398801['query'][_0x4642('0x47')]){_0x15bbbe[_0x4642('0x48')]=[{'all':!![]}];}return db[_0x4642('0x46')][_0x4642('0x49')](_0x15bbbe);})[_0x4642('0x2d')](function(_0xeb2dd0){_0xe779a6[_0x4642('0x4a')]=_0xeb2dd0;return _0xe779a6;})['then'](respondWithFilteredResult(_0x49d9e6,_0x15bbbe))[_0x4642('0x4b')](handleError(_0x49d9e6,null));};exports[_0x4642('0x4c')]=function(_0x4ac179,_0x2940a5){var _0x5a12ef={'raw':!![],'where':{'id':_0x4ac179['params']['id']}},_0x1be1e5={};_0x1be1e5[_0x4642('0x37')]=_[_0x4642('0x39')](db['ChatGroup']['rawAttributes']);_0x1be1e5[_0x4642('0x38')]=_['keys'](_0x4ac179['query']);_0x1be1e5['filters']=_[_0x4642('0x4d')](_0x1be1e5['model'],_0x1be1e5['query']);_0x5a12ef[_0x4642('0x3b')]=_[_0x4642('0x4d')](_0x1be1e5['model'],qs['fields'](_0x4ac179[_0x4642('0x38')][_0x4642('0x4e')]));_0x5a12ef['attributes']=_0x5a12ef[_0x4642('0x3b')][_0x4642('0x3c')]?_0x5a12ef['attributes']:_0x1be1e5[_0x4642('0x37')];if(_0x4ac179['query'][_0x4642('0x47')]){_0x5a12ef[_0x4642('0x48')]=[{'all':!![]}];}_0x5a12ef=_[_0x4642('0x44')]({},_0x5a12ef,_0x4ac179[_0x4642('0x45')]);return db[_0x4642('0x46')]['find'](_0x5a12ef)[_0x4642('0x2d')](handleEntityNotFound(_0x2940a5,null))[_0x4642('0x2d')](respondWithResult(_0x2940a5,null))[_0x4642('0x4b')](handleError(_0x2940a5,null));};exports[_0x4642('0x4f')]=function(_0x1388cb,_0x3b0554){return db[_0x4642('0x46')][_0x4642('0x4f')](_0x1388cb['body'],{})[_0x4642('0x2d')](respondWithResult(_0x3b0554,0xc9))[_0x4642('0x4b')](handleError(_0x3b0554,null));};exports[_0x4642('0x2c')]=function(_0x2cc117,_0x5514cb){if(_0x2cc117[_0x4642('0x50')]['id']){delete _0x2cc117[_0x4642('0x50')]['id'];}return db[_0x4642('0x46')][_0x4642('0x51')]({'where':{'id':_0x2cc117[_0x4642('0x52')]['id']}})[_0x4642('0x2d')](handleEntityNotFound(_0x5514cb,null))['then'](saveUpdates(_0x2cc117[_0x4642('0x50')],null))[_0x4642('0x2d')](respondWithResult(_0x5514cb,null))[_0x4642('0x4b')](handleError(_0x5514cb,null));};exports[_0x4642('0x53')]=function(_0x329259,_0x5c0947){return db[_0x4642('0x46')][_0x4642('0x51')]({'where':{'id':_0x329259['params']['id']}})['then'](handleEntityNotFound(_0x5c0947,null))['then'](removeEntity(_0x5c0947,null))[_0x4642('0x4b')](handleError(_0x5c0947,null));};exports[_0x4642('0x54')]=function(_0xc4a07,_0x3b8abb){return db[_0x4642('0x46')][_0x4642('0x54')]()['then'](respondWithResult(_0x3b8abb,null))[_0x4642('0x4b')](handleError(_0x3b8abb,null));};exports[_0x4642('0x55')]=function(_0x5a0c47,_0x4f9351,_0x47d6fa){return db[_0x4642('0x56')][_0x4642('0x25')]({'where':{'ChatGroupId':_0x5a0c47[_0x4642('0x52')]['id'],'ToId':_0x5a0c47[_0x4642('0x57')]['id'],'read':![]}})[_0x4642('0x2d')](function(_0x5662cd){return{'id':_[_0x4642('0x58')](_0x5a0c47['params']['id']),'count':_0x5662cd};})[_0x4642('0x2d')](respondWithResult(_0x4f9351,null))[_0x4642('0x4b')](handleError(_0x4f9351,null));};exports[_0x4642('0x59')]=function(_0x38ddac,_0x22456b,_0x39c30f){return db['ChatGroup'][_0x4642('0x51')]({'where':{'id':_0x38ddac[_0x4642('0x52')]['id']}})[_0x4642('0x2d')](handleEntityNotFound(_0x22456b,null))[_0x4642('0x2d')](function(_0x26c1bb){if(_0x26c1bb){return _0x26c1bb[_0x4642('0x59')](_0x38ddac[_0x4642('0x50')]['ids'],_[_0x4642('0x5a')](_0x38ddac[_0x4642('0x50')],[_0x4642('0x5b'),'id'])||{});}})[_0x4642('0x2d')](respondWithResult(_0x22456b,null))[_0x4642('0x4b')](handleError(_0x22456b,null));};exports[_0x4642('0x5c')]=function(_0x337c9b,_0x527e9e,_0x36c94e){var _0x76505b={};var _0x12aa78={};var _0x19cfe0;var _0x4396e1;return db[_0x4642('0x46')][_0x4642('0x5d')]({'where':{'id':_0x337c9b['params']['id']}})[_0x4642('0x2d')](handleEntityNotFound(_0x527e9e,null))['then'](function(_0x265e90){if(_0x265e90){_0x19cfe0=_0x265e90;_0x12aa78[_0x4642('0x37')]=_[_0x4642('0x39')](db['User']['rawAttributes']);_0x12aa78['query']=_[_0x4642('0x39')](_0x337c9b[_0x4642('0x38')]);_0x12aa78[_0x4642('0x3a')]=_['intersection'](_0x12aa78[_0x4642('0x37')],_0x12aa78[_0x4642('0x38')]);_0x76505b['attributes']=_[_0x4642('0x4d')](_0x12aa78[_0x4642('0x37')],qs['fields'](_0x337c9b[_0x4642('0x38')][_0x4642('0x4e')]));_0x76505b[_0x4642('0x3b')]=_0x76505b[_0x4642('0x3b')][_0x4642('0x3c')]?_0x76505b[_0x4642('0x3b')]:_0x12aa78[_0x4642('0x37')];_0x76505b['order']=qs[_0x4642('0x3f')](_0x337c9b['query']['sort']);_0x76505b[_0x4642('0x40')]=qs['filters'](_[_0x4642('0x41')](_0x337c9b[_0x4642('0x38')],_0x12aa78[_0x4642('0x3a')]));if(_0x337c9b[_0x4642('0x38')][_0x4642('0x42')]){_0x76505b['where']=_[_0x4642('0x44')](_0x76505b[_0x4642('0x40')],{'$or':_['map'](_0x76505b['attributes'],function(_0x1b2472){var _0x6dfa4e={};_0x6dfa4e[_0x1b2472]={'$like':'%'+_0x337c9b[_0x4642('0x38')][_0x4642('0x42')]+'%'};return _0x6dfa4e;})});}_0x76505b=_[_0x4642('0x44')]({},_0x76505b,_0x337c9b[_0x4642('0x45')]);return _0x19cfe0[_0x4642('0x5c')](_0x76505b);}})[_0x4642('0x2d')](function(_0x3a879b){if(_0x3a879b){_0x4396e1=_0x3a879b[_0x4642('0x3c')];if(!_0x337c9b[_0x4642('0x38')]['hasOwnProperty'](_0x4642('0x5e'))){_0x76505b[_0x4642('0x26')]=qs[_0x4642('0x26')](_0x337c9b[_0x4642('0x38')][_0x4642('0x26')]);_0x76505b['offset']=qs['offset'](_0x337c9b[_0x4642('0x38')][_0x4642('0x23')]);}return _0x19cfe0[_0x4642('0x5c')](_0x76505b);}})['then'](function(_0xb65d22){if(_0xb65d22){return _0xb65d22?{'count':_0x4396e1,'rows':_0xb65d22}:null;}})['then'](respondWithResult(_0x527e9e,null))['catch'](handleError(_0x527e9e,null));};exports[_0x4642('0x5f')]=function(_0x45391a,_0x58a48c,_0x119d29){return db[_0x4642('0x46')][_0x4642('0x51')]({'where':{'id':_0x45391a[_0x4642('0x52')]['id']}})[_0x4642('0x2d')](handleEntityNotFound(_0x58a48c,null))['then'](function(_0x7f7541){if(_0x7f7541){return _0x7f7541['removeMembers'](_0x45391a[_0x4642('0x38')][_0x4642('0x5b')]);}})[_0x4642('0x2d')](respondWithStatusCode(_0x58a48c,null))[_0x4642('0x4b')](handleError(_0x58a48c,null));};exports[_0x4642('0x60')]=function(_0x52d683,_0x15209d,_0x22de2f){if(_0x52d683[_0x4642('0x50')]['id']){delete _0x52d683[_0x4642('0x50')]['id'];}return db['ChatGroup'][_0x4642('0x51')]({'where':{'id':_0x52d683[_0x4642('0x52')]['id']}})[_0x4642('0x2d')](handleEntityNotFound(_0x15209d,null))['then'](function(_0x175f6c){if(_0x175f6c){_0x52d683[_0x4642('0x50')][_0x4642('0x61')]=_0x175f6c['id'];return db['ChatInternalMessage'][_0x4642('0x4f')](_0x52d683['body']);}})[_0x4642('0x2d')](respondWithResult(_0x15209d,null))['catch'](handleError(_0x15209d,null));};exports['getMessages']=function(_0x33f0f5,_0x5bfdfb,_0x1cb581){var _0x2eece3={};var _0x128f71={};var _0x552000;var _0x382c19;return db['ChatGroup']['findOne']({'where':{'id':_0x33f0f5[_0x4642('0x52')]['id']}})['then'](handleEntityNotFound(_0x5bfdfb,null))['then'](function(_0x3adf61){if(_0x3adf61){_0x552000=_0x3adf61;_0x128f71[_0x4642('0x37')]=_[_0x4642('0x39')](db[_0x4642('0x56')]['rawAttributes']);_0x128f71[_0x4642('0x38')]=_['keys'](_0x33f0f5['query']);_0x128f71[_0x4642('0x3a')]=_[_0x4642('0x4d')](_0x128f71[_0x4642('0x37')],_0x128f71[_0x4642('0x38')]);_0x2eece3[_0x4642('0x3b')]=_[_0x4642('0x4d')](_0x128f71[_0x4642('0x37')],qs[_0x4642('0x4e')](_0x33f0f5[_0x4642('0x38')]['fields']));_0x2eece3['attributes']=_0x2eece3[_0x4642('0x3b')][_0x4642('0x3c')]?_0x2eece3[_0x4642('0x3b')]:_0x128f71[_0x4642('0x37')];_0x2eece3[_0x4642('0x3e')]=qs[_0x4642('0x3f')](_0x33f0f5['query']['sort']);_0x2eece3[_0x4642('0x40')]=qs['filters'](_[_0x4642('0x41')](_0x33f0f5[_0x4642('0x38')],_0x128f71[_0x4642('0x3a')]));if(_0x33f0f5[_0x4642('0x38')]['filter']){_0x2eece3['where']=_[_0x4642('0x44')](_0x2eece3[_0x4642('0x40')],{'$or':_['map'](_0x2eece3['attributes'],function(_0x1f9a0c){var _0x7a79b={};_0x7a79b[_0x1f9a0c]={'$like':'%'+_0x33f0f5[_0x4642('0x38')][_0x4642('0x42')]+'%'};return _0x7a79b;})});}if(_0x33f0f5['query'][_0x4642('0x62')]){var _0x14bd4e=_0x33f0f5[_0x4642('0x38')][_0x4642('0x62')][_0x4642('0x63')](',');var _0x2bcd2d={};_0x2bcd2d[_0x14bd4e[0x0]]={'$gte':moment(_0x14bd4e[0x1])[_0x4642('0x64')](_0x4642('0x65'))};_0x2eece3[_0x4642('0x40')]=_[_0x4642('0x44')](_0x2eece3[_0x4642('0x40')],_0x2bcd2d);}_0x2eece3=_['merge']({},_0x2eece3,_0x33f0f5['options']);return _0x552000[_0x4642('0x66')](_0x2eece3);}})[_0x4642('0x2d')](function(_0x304422){if(_0x304422){_0x382c19=_0x304422[_0x4642('0x3c')];if(!_0x33f0f5[_0x4642('0x38')][_0x4642('0x3d')]('nolimit')){_0x2eece3['limit']=qs[_0x4642('0x26')](_0x33f0f5[_0x4642('0x38')]['limit']);_0x2eece3[_0x4642('0x23')]=qs[_0x4642('0x23')](_0x33f0f5[_0x4642('0x38')][_0x4642('0x23')]);}return _0x552000['getMessages'](_0x2eece3);}})[_0x4642('0x2d')](function(_0x54d4a5){if(_0x54d4a5){return _0x54d4a5?{'count':_0x382c19,'rows':_0x54d4a5}:null;}})[_0x4642('0x2d')](respondWithResult(_0x5bfdfb,null))['catch'](handleError(_0x5bfdfb,null));};
\ No newline at end of file
index 5600be9..e5e6b08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef7e=['emit','hasOwnProperty','hook','exports','events','ChatGroup','setMaxListeners','update'];(function(_0x4aa159,_0x1f2b53){var _0x2b282f=function(_0x17cf0e){while(--_0x17cf0e){_0x4aa159['push'](_0x4aa159['shift']());}};_0x2b282f(++_0x1f2b53);}(_0xef7e,0x194));var _0xeef7=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xef7e[_0xa464c9];return _0x3d73c4;};'use strict';var EventEmitter=require(_0xeef7('0x0'));var ChatGroup=require('../../mysqldb')['db'][_0xeef7('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xeef7('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xeef7('0x3'),'afterDestroy':'remove'};function emitEvent(_0x38f950){return function(_0x285e1a,_0x69891e,_0x3f8f09){ChatGroupEvents[_0xeef7('0x4')](_0x38f950+':'+_0x285e1a['id'],_0x285e1a);ChatGroupEvents[_0xeef7('0x4')](_0x38f950,_0x285e1a);_0x3f8f09(null);};}for(var e in events){if(events[_0xeef7('0x5')](e)){var event=events[e];ChatGroup[_0xeef7('0x6')](e,emitEvent(event));}}module[_0xeef7('0x7')]=ChatGroupEvents;
\ No newline at end of file
+var _0xcaf2=['hook','exports','events','ChatGroup','setMaxListeners','update','remove','emit'];(function(_0x2d0085,_0x5706ce){var _0x496201=function(_0x3031d9){while(--_0x3031d9){_0x2d0085['push'](_0x2d0085['shift']());}};_0x496201(++_0x5706ce);}(_0xcaf2,0x8a));var _0x2caf=function(_0x78699f,_0x9b5e13){_0x78699f=_0x78699f-0x0;var _0x26bfc7=_0xcaf2[_0x78699f];return _0x26bfc7;};'use strict';var EventEmitter=require(_0x2caf('0x0'));var ChatGroup=require('../../mysqldb')['db'][_0x2caf('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x2caf('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2caf('0x3'),'afterDestroy':_0x2caf('0x4')};function emitEvent(_0x5b4a90){return function(_0xb4fae,_0x4d046b,_0x335e3c){ChatGroupEvents[_0x2caf('0x5')](_0x5b4a90+':'+_0xb4fae['id'],_0xb4fae);ChatGroupEvents[_0x2caf('0x5')](_0x5b4a90,_0xb4fae);_0x335e3c(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatGroup[_0x2caf('0x6')](e,emitEvent(event));}}module[_0x2caf('0x7')]=ChatGroupEvents;
\ No newline at end of file
index e9a2d0b..8d5e49c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36f9=['util','api','moment','bluebird','path','rimraf','../../config/environment','./chatGroup.attributes','exports','define','chat_groups','lodash'];(function(_0x1592f8,_0x519497){var _0x49fb74=function(_0xe752fd){while(--_0xe752fd){_0x1592f8['push'](_0x1592f8['shift']());}};_0x49fb74(++_0x519497);}(_0x36f9,0x12b));var _0x936f=function(_0x4cc1ed,_0x5586e3){_0x4cc1ed=_0x4cc1ed-0x0;var _0x287ab6=_0x36f9[_0x4cc1ed];return _0x287ab6;};'use strict';var _=require(_0x936f('0x0'));var util=require(_0x936f('0x1'));var logger=require('../../config/logger')(_0x936f('0x2'));var moment=require(_0x936f('0x3'));var BPromise=require(_0x936f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x936f('0x5'));var rimraf=require(_0x936f('0x6'));var config=require(_0x936f('0x7'));var attributes=require(_0x936f('0x8'));module[_0x936f('0x9')]=function(_0xa6a1b2,_0x206ace){return _0xa6a1b2[_0x936f('0xa')]('ChatGroup',attributes,{'tableName':_0x936f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x45de=['../../config/environment','exports','define','ChatGroup','chat_groups','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x390733,_0x1e3d32){var _0x33beb9=function(_0x4491a3){while(--_0x4491a3){_0x390733['push'](_0x390733['shift']());}};_0x33beb9(++_0x1e3d32);}(_0x45de,0xd5));var _0xe45d=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x45de[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0xe45d('0x0'));var util=require(_0xe45d('0x1'));var logger=require(_0xe45d('0x2'))(_0xe45d('0x3'));var moment=require(_0xe45d('0x4'));var BPromise=require(_0xe45d('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe45d('0x6'));var rimraf=require(_0xe45d('0x7'));var config=require(_0xe45d('0x8'));var attributes=require('./chatGroup.attributes');module[_0xe45d('0x9')]=function(_0x1a6fb9,_0x4df657){return _0x1a6fb9[_0xe45d('0xa')](_0xe45d('0xb'),attributes,{'tableName':_0xe45d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b85f8b8..53db52d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5da1=['randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','register','then','info','request\x20sent','debug','stringify','error','code','ChatGroup,\x20%s,\x20%s','message','result','catch','bluebird'];(function(_0x2b55b5,_0x78505e){var _0x103d28=function(_0x5095a2){while(--_0x5095a2){_0x2b55b5['push'](_0x2b55b5['shift']());}};_0x103d28(++_0x78505e);}(_0x5da1,0xbf));var _0x15da=function(_0x49de58,_0x2e3612){_0x49de58=_0x49de58-0x0;var _0x43fa01=_0x5da1[_0x49de58];return _0x43fa01;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x15da('0x0'));var rs=require(_0x15da('0x1'));var fs=require('fs');var Redis=require(_0x15da('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x15da('0x3'));var logger=require('../../config/logger')(_0x15da('0x4'));var config=require(_0x15da('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x15da('0x6')][_0x15da('0x7')]({'port':0x232a});config[_0x15da('0x8')]=_[_0x15da('0x9')](config[_0x15da('0x8')],{'host':_0x15da('0xa'),'port':0x18eb});var socket=require(_0x15da('0xb'))(new Redis(config[_0x15da('0x8')]));require('./chatGroup.socket')[_0x15da('0xc')](socket);function respondWithRpcPromise(_0x156537,_0x4c7f3b,_0x23123b){return new BPromise(function(_0x7e41fe,_0x3f4f42){return client['request'](_0x156537,_0x23123b)[_0x15da('0xd')](function(_0x5d4ee1){logger[_0x15da('0xe')]('ChatGroup,\x20%s,\x20%s',_0x4c7f3b,_0x15da('0xf'));logger[_0x15da('0x10')]('ChatGroup,\x20%s,\x20%s,\x20%s',_0x4c7f3b,_0x15da('0xf'),JSON[_0x15da('0x11')](_0x5d4ee1));if(_0x5d4ee1[_0x15da('0x12')]){if(_0x5d4ee1[_0x15da('0x12')][_0x15da('0x13')]===0x1f4){logger[_0x15da('0x12')](_0x15da('0x14'),_0x4c7f3b,_0x5d4ee1['error'][_0x15da('0x15')]);return _0x3f4f42(_0x5d4ee1[_0x15da('0x12')][_0x15da('0x15')]);}logger[_0x15da('0x12')](_0x15da('0x14'),_0x4c7f3b,_0x5d4ee1[_0x15da('0x12')][_0x15da('0x15')]);return _0x7e41fe(_0x5d4ee1[_0x15da('0x12')][_0x15da('0x15')]);}else{logger[_0x15da('0xe')]('ChatGroup,\x20%s,\x20%s',_0x4c7f3b,_0x15da('0xf'));_0x7e41fe(_0x5d4ee1[_0x15da('0x16')]['message']);}})[_0x15da('0x17')](function(_0x17058a){logger['error'](_0x15da('0x14'),_0x4c7f3b,_0x17058a);_0x3f4f42(_0x17058a);});});}
\ No newline at end of file
+var _0x2dab=['moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./chatGroup.socket','register','request','then','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','error','code','ChatGroup,\x20%s,\x20%s','message','info','result','catch','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2dab,0x120));var _0xb2da=function(_0x22010d,_0x5805ed){_0x22010d=_0x22010d-0x0;var _0x3bd35d=_0x2dab[_0x22010d];return _0x3bd35d;};'use strict';var _=require(_0xb2da('0x0'));var util=require(_0xb2da('0x1'));var moment=require(_0xb2da('0x2'));var BPromise=require(_0xb2da('0x3'));var rs=require(_0xb2da('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb2da('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xb2da('0x6'))(_0xb2da('0x7'));var config=require(_0xb2da('0x8'));var jayson=require(_0xb2da('0x9'));var client=jayson[_0xb2da('0xa')][_0xb2da('0xb')]({'port':0x232a});config[_0xb2da('0xc')]=_['defaults'](config[_0xb2da('0xc')],{'host':_0xb2da('0xd'),'port':0x18eb});var socket=require(_0xb2da('0xe'))(new Redis(config[_0xb2da('0xc')]));require(_0xb2da('0xf'))[_0xb2da('0x10')](socket);function respondWithRpcPromise(_0x40ba6a,_0x105646,_0x5ecb99){return new BPromise(function(_0x5d4fba,_0x7e1549){return client[_0xb2da('0x11')](_0x40ba6a,_0x5ecb99)[_0xb2da('0x12')](function(_0x3db2c8){logger['info']('ChatGroup,\x20%s,\x20%s',_0x105646,_0xb2da('0x13'));logger[_0xb2da('0x14')](_0xb2da('0x15'),_0x105646,_0xb2da('0x13'),JSON['stringify'](_0x3db2c8));if(_0x3db2c8[_0xb2da('0x16')]){if(_0x3db2c8[_0xb2da('0x16')][_0xb2da('0x17')]===0x1f4){logger[_0xb2da('0x16')](_0xb2da('0x18'),_0x105646,_0x3db2c8[_0xb2da('0x16')][_0xb2da('0x19')]);return _0x7e1549(_0x3db2c8['error']['message']);}logger[_0xb2da('0x16')]('ChatGroup,\x20%s,\x20%s',_0x105646,_0x3db2c8[_0xb2da('0x16')]['message']);return _0x5d4fba(_0x3db2c8[_0xb2da('0x16')][_0xb2da('0x19')]);}else{logger[_0xb2da('0x1a')](_0xb2da('0x18'),_0x105646,_0xb2da('0x13'));_0x5d4fba(_0x3db2c8[_0xb2da('0x1b')][_0xb2da('0x19')]);}})[_0xb2da('0x1c')](function(_0xde4b42){logger['error'](_0xb2da('0x18'),_0x105646,_0xde4b42);_0x7e1549(_0xde4b42);});});}
\ No newline at end of file
index 3191946..d149c52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2213=['removeListener','chatGroup:','./chatGroup.events','remove','update','emit'];(function(_0x3dab54,_0x17ae72){var _0x144d02=function(_0x242f74){while(--_0x242f74){_0x3dab54['push'](_0x3dab54['shift']());}};_0x144d02(++_0x17ae72);}(_0x2213,0x1f4));var _0x3221=function(_0x50f435,_0x4bf71e){_0x50f435=_0x50f435-0x0;var _0x55b39f=_0x2213[_0x50f435];return _0x55b39f;};'use strict';var ChatGroupEvents=require(_0x3221('0x0'));var events=['save',_0x3221('0x1'),_0x3221('0x2')];function createListener(_0x7e6976,_0x33049a){return function(_0x24e072){_0x33049a[_0x3221('0x3')](_0x7e6976,_0x24e072);};}function removeListener(_0x124caa,_0x54d8c7){return function(){ChatGroupEvents[_0x3221('0x4')](_0x124caa,_0x54d8c7);};}exports['register']=function(_0x2539f5){for(var _0x360327=0x0,_0xe4c01d=events['length'];_0x360327<_0xe4c01d;_0x360327++){var _0x346411=events[_0x360327];var _0x122e37=createListener(_0x3221('0x5')+_0x346411,_0x2539f5);ChatGroupEvents['on'](_0x346411,_0x122e37);}};
\ No newline at end of file
+var _0x5b32=['save','remove','update','removeListener','register','length','chatGroup:','./chatGroup.events'];(function(_0x1fd675,_0x165dfe){var _0x16b554=function(_0x5761ff){while(--_0x5761ff){_0x1fd675['push'](_0x1fd675['shift']());}};_0x16b554(++_0x165dfe);}(_0x5b32,0x7f));var _0x25b3=function(_0x3c076d,_0x29bac7){_0x3c076d=_0x3c076d-0x0;var _0x4b3fda=_0x5b32[_0x3c076d];return _0x4b3fda;};'use strict';var ChatGroupEvents=require(_0x25b3('0x0'));var events=[_0x25b3('0x1'),_0x25b3('0x2'),_0x25b3('0x3')];function createListener(_0x423e28,_0x1c90ea){return function(_0x5cddfc){_0x1c90ea['emit'](_0x423e28,_0x5cddfc);};}function removeListener(_0x38cc91,_0x3c7911){return function(){ChatGroupEvents[_0x25b3('0x4')](_0x38cc91,_0x3c7911);};}exports[_0x25b3('0x5')]=function(_0x1f23b3){for(var _0x2d5b65=0x0,_0x176b67=events[_0x25b3('0x6')];_0x2d5b65<_0x176b67;_0x2d5b65++){var _0x5658b5=events[_0x2d5b65];var _0x52f84c=createListener(_0x25b3('0x7')+_0x5658b5,_0x1f23b3);ChatGroupEvents['on'](_0x5658b5,_0x52f84c);}};
\ No newline at end of file
index d510ae0..b9a6f4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ad9=['/describe','/:id','show','/:id/unread','/:id/members','/:id/messages','getMessages','post','create','addMembers','put','delete','removeMembers','exports','multer','util','path','Router','fs-extra','../../components/interaction/service','./chatGroup.controller','get','isAuthenticated','index'];(function(_0x4635d1,_0x4a58a0){var _0x257565=function(_0x5a1fa3){while(--_0x5a1fa3){_0x4635d1['push'](_0x4635d1['shift']());}};_0x257565(++_0x4a58a0);}(_0x2ad9,0x15e));var _0x92ad=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x2ad9[_0x5b644e];return _0x49c6bf;};'use strict';var multer=require(_0x92ad('0x0'));var util=require(_0x92ad('0x1'));var path=require(_0x92ad('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x92ad('0x3')]();var fs_extra=require(_0x92ad('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x92ad('0x5'));var config=require('../../config/environment');var controller=require(_0x92ad('0x6'));router[_0x92ad('0x7')]('/',auth[_0x92ad('0x8')](),controller[_0x92ad('0x9')]);router[_0x92ad('0x7')](_0x92ad('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x92ad('0x7')](_0x92ad('0xb'),auth[_0x92ad('0x8')](),controller[_0x92ad('0xc')]);router[_0x92ad('0x7')](_0x92ad('0xd'),auth[_0x92ad('0x8')](),controller['getUnread']);router[_0x92ad('0x7')](_0x92ad('0xe'),auth[_0x92ad('0x8')](),controller['getMembers']);router[_0x92ad('0x7')](_0x92ad('0xf'),auth[_0x92ad('0x8')](),controller[_0x92ad('0x10')]);router[_0x92ad('0x11')]('/',auth['isAuthenticated'](),controller[_0x92ad('0x12')]);router[_0x92ad('0x11')](_0x92ad('0xe'),auth[_0x92ad('0x8')](),controller[_0x92ad('0x13')]);router[_0x92ad('0x11')](_0x92ad('0xf'),auth[_0x92ad('0x8')](),controller['addMessage']);router[_0x92ad('0x14')](_0x92ad('0xb'),auth[_0x92ad('0x8')](),controller['update']);router[_0x92ad('0x15')]('/:id',auth['isAuthenticated'](),controller['destroy']);router['delete']('/:id/members',auth['isAuthenticated'](),controller[_0x92ad('0x16')]);module[_0x92ad('0x17')]=router;
\ No newline at end of file
+var _0x0355=['post','create','addMessage','update','/:id','destroy','delete','removeMembers','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','index','/describe','show','/:id/unread','getUnread','/:id/members','getMessages'];(function(_0x4a82e4,_0x44efd5){var _0x525c4e=function(_0x55747e){while(--_0x55747e){_0x4a82e4['push'](_0x4a82e4['shift']());}};_0x525c4e(++_0x44efd5);}(_0x0355,0x175));var _0x5035=function(_0x89427,_0x533fa3){_0x89427=_0x89427-0x0;var _0x5695ad=_0x0355[_0x89427];return _0x5695ad;};'use strict';var multer=require(_0x5035('0x0'));var util=require(_0x5035('0x1'));var path=require(_0x5035('0x2'));var timeout=require('connect-timeout');var express=require(_0x5035('0x3'));var router=express[_0x5035('0x4')]();var fs_extra=require(_0x5035('0x5'));var auth=require(_0x5035('0x6'));var interaction=require(_0x5035('0x7'));var config=require(_0x5035('0x8'));var controller=require(_0x5035('0x9'));router[_0x5035('0xa')]('/',auth[_0x5035('0xb')](),controller[_0x5035('0xc')]);router[_0x5035('0xa')](_0x5035('0xd'),auth[_0x5035('0xb')](),controller['describe']);router[_0x5035('0xa')]('/:id',auth[_0x5035('0xb')](),controller[_0x5035('0xe')]);router[_0x5035('0xa')](_0x5035('0xf'),auth[_0x5035('0xb')](),controller[_0x5035('0x10')]);router[_0x5035('0xa')](_0x5035('0x11'),auth['isAuthenticated'](),controller['getMembers']);router[_0x5035('0xa')]('/:id/messages',auth[_0x5035('0xb')](),controller[_0x5035('0x12')]);router[_0x5035('0x13')]('/',auth[_0x5035('0xb')](),controller[_0x5035('0x14')]);router[_0x5035('0x13')]('/:id/members',auth['isAuthenticated'](),controller['addMembers']);router[_0x5035('0x13')]('/:id/messages',auth[_0x5035('0xb')](),controller[_0x5035('0x15')]);router['put']('/:id',auth[_0x5035('0xb')](),controller[_0x5035('0x16')]);router['delete'](_0x5035('0x17'),auth['isAuthenticated'](),controller[_0x5035('0x18')]);router[_0x5035('0x19')](_0x5035('0x11'),auth[_0x5035('0xb')](),controller[_0x5035('0x1a')]);module[_0x5035('0x1b')]=router;
\ No newline at end of file
index bfa5912..3940b8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ef3=['long','sequelize','exports','BOOLEAN','INTEGER','star','thumb','TEXT','STRING','DATE'];(function(_0x394b4d,_0x2844da){var _0x4d43cc=function(_0xb469d3){while(--_0xb469d3){_0x394b4d['push'](_0x394b4d['shift']());}};_0x4d43cc(++_0x2844da);}(_0x6ef3,0x1b9));var _0x36ef=function(_0x487120,_0x29bc7a){_0x487120=_0x487120-0x0;var _0x1d9679=_0x6ef3[_0x487120];return _0x1d9679;};'use strict';var Sequelize=require(_0x36ef('0x0'));module[_0x36ef('0x1')]={'closed':{'type':Sequelize[_0x36ef('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x36ef('0x3')]},'ratingType':{'type':Sequelize['ENUM'](_0x36ef('0x4'),_0x36ef('0x5')),'defaultValue':_0x36ef('0x4')},'ratingMessage':{'type':Sequelize[_0x36ef('0x6')]},'pathTranscript':{'type':Sequelize[_0x36ef('0x6')]},'mailTranscript':{'type':Sequelize[_0x36ef('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x36ef('0x8')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x36ef('0x7')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x36ef('0x7')]},'browserName':{'type':Sequelize['STRING']},'browserVersion':{'type':Sequelize[_0x36ef('0x7')]},'osName':{'type':Sequelize[_0x36ef('0x7')]},'osVersion':{'type':Sequelize[_0x36ef('0x7')]},'deviceModel':{'type':Sequelize[_0x36ef('0x7')]},'deviceVendor':{'type':Sequelize[_0x36ef('0x7')]},'deviceType':{'type':Sequelize[_0x36ef('0x7')]},'referer':{'type':Sequelize[_0x36ef('0x6')]},'customerIp':{'type':Sequelize[_0x36ef('0x7')]},'formData':{'type':Sequelize[_0x36ef('0x6')](_0x36ef('0x9'))},'read1stAt':{'type':Sequelize[_0x36ef('0x8')]},'lastMsgAt':{'type':Sequelize[_0x36ef('0x8')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x36ef('0x7')]},'customerPort':{'type':Sequelize['STRING']},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0x36ef('0x2')],'defaultValue':![]},'queueId':{'type':Sequelize[_0x36ef('0x3')]}};
\ No newline at end of file
+var _0x95c4=['thumb','star','TEXT','DATE','STRING','out','sequelize','exports','INTEGER','ENUM'];(function(_0x59bcb1,_0x5a4b6c){var _0x4a737f=function(_0x546a49){while(--_0x546a49){_0x59bcb1['push'](_0x59bcb1['shift']());}};_0x4a737f(++_0x5a4b6c);}(_0x95c4,0xec));var _0x495c=function(_0xac151d,_0x4ea1d2){_0xac151d=_0xac151d-0x0;var _0x111dba=_0x95c4[_0xac151d];return _0x111dba;};'use strict';var Sequelize=require(_0x495c('0x0'));module[_0x495c('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0x495c('0x2')]},'ratingType':{'type':Sequelize[_0x495c('0x3')]('star',_0x495c('0x4')),'defaultValue':_0x495c('0x5')},'ratingMessage':{'type':Sequelize[_0x495c('0x6')]},'pathTranscript':{'type':Sequelize[_0x495c('0x6')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x495c('0x7')]},'disposition':{'type':Sequelize[_0x495c('0x8')]},'secondDisposition':{'type':Sequelize[_0x495c('0x8')]},'thirdDisposition':{'type':Sequelize[_0x495c('0x8')]},'note':{'type':Sequelize['STRING']},'browserName':{'type':Sequelize[_0x495c('0x8')]},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize[_0x495c('0x8')]},'deviceModel':{'type':Sequelize['STRING']},'deviceVendor':{'type':Sequelize[_0x495c('0x8')]},'deviceType':{'type':Sequelize[_0x495c('0x8')]},'referer':{'type':Sequelize[_0x495c('0x6')]},'customerIp':{'type':Sequelize[_0x495c('0x8')]},'formData':{'type':Sequelize['TEXT']('long')},'read1stAt':{'type':Sequelize[_0x495c('0x7')]},'lastMsgAt':{'type':Sequelize[_0x495c('0x7')]},'lastMsgDirection':{'type':Sequelize[_0x495c('0x3')]('in',_0x495c('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x495c('0x8')]},'customerPort':{'type':Sequelize[_0x495c('0x8')]},'vidaooSessionId':{'type':Sequelize[_0x495c('0x6')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 8fbfcc4..2f35d27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0d4=['[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','MailServerOut','CloudProvider','Smtp','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','hasOwnProperty','nolimit','order','sort','where','pick','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','ChatInteractionId','options','includeAgent','setTags','omit','spread','Tag','color','emit','chatInteractionTags:save','removeTags','toString','server','files','tmp','attachments','transcript-%d-%s.zip','push','firstName','lastName','createdAt','read','Account','Owner','get','mkdirSync','Chat','closedAt','browserName','osName','referer','customerIp','customerPort','N.A.','tail','existsSync','createReadStream','pipe','createWriteStream','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','ejs','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','jayson/promise','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','update','destroy','stack','name','send','render','body','agent','interaction','map','ChatInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','chat','query','user','show','model','keys','filters','intersection','attributes','fields','length','includeAll','include','merge','find','create','describe','createVidaooSession','params','findOne','ChatWebsite','vidaooApiKey','vidaooEscalation','fullname','contact','account','POST','https://api-vidaoo.xcally.com/api/v1/meetings','email','vidaooTopic','isNull','vidaooNote','follow','vidaooMetadata','metadata','Sequelize','ValidationError','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','Contact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','UserId','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','attachmentUpload','originalname','file','Attachment','attachmentDownload','join','root','server/files/attachments/','offline-chat/','basename','download','close','mailTranscript','server/files/chat/upload/','format','pathTranscript','Messages','User','ChatWebsiteId','ContactId','%s%d','System','Visitor','website_alias','agentAlias','agent_alias','alias','agent_fullname'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xf0d4,0x124));var _0x4f0d=function(_0x5815af,_0x361f0b){_0x5815af=_0x5815af-0x0;var _0x3f14cb=_0xf0d4[_0x5815af];return _0x3f14cb;};'use strict';var rimraf=require(_0x4f0d('0x0'));var zipdir=require(_0x4f0d('0x1'));var rp=require(_0x4f0d('0x2'));var moment=require(_0x4f0d('0x3'));var BPromise=require(_0x4f0d('0x4'));var Mustache=require(_0x4f0d('0x5'));var util=require(_0x4f0d('0x6'));var path=require(_0x4f0d('0x7'));var ejs=require(_0x4f0d('0x8'));var fs=require('fs');var _=require('lodash');var Redis=require('ioredis');var interaction=require(_0x4f0d('0x9'));var qs=require(_0x4f0d('0xa'));var pdf=require(_0x4f0d('0xb'));var logger=require(_0x4f0d('0xc'))(_0x4f0d('0xd'));var config=require(_0x4f0d('0xe'));var db=require(_0x4f0d('0xf'))['db'];config[_0x4f0d('0x10')]=_[_0x4f0d('0x11')](config[_0x4f0d('0x10')],{'host':_0x4f0d('0x12'),'port':0x18eb});var socket=require(_0x4f0d('0x13'))(new Redis(config['redis']));require(_0x4f0d('0x14'))['register'](socket);var jayson=require(_0x4f0d('0x15'));var client=jayson[_0x4f0d('0x16')]['http']({'port':0x232b});var client9004=jayson['client'][_0x4f0d('0x17')]({'port':0x232c});function respondWithRpcPromise(_0x2e0e7c,_0x413c4d,_0x1f73b8,_0x473521){return new BPromise(function(_0x5f2ffb,_0x3b325e){var _0x3eeb58=_0x473521||client;return _0x3eeb58[_0x4f0d('0x18')](_0x2e0e7c,_0x1f73b8)[_0x4f0d('0x19')](function(_0xe20d4c){logger[_0x4f0d('0x1a')](_0x4f0d('0x1b'),_0x413c4d,_0x4f0d('0x1c'));logger[_0x4f0d('0x1d')](_0x4f0d('0x1e'),_0x413c4d,_0x4f0d('0x1c'),JSON[_0x4f0d('0x1f')](_0xe20d4c));if(_0xe20d4c[_0x4f0d('0x20')]){if(_0xe20d4c['error'][_0x4f0d('0x21')]===0x1f4){logger['error'](_0x4f0d('0x1b'),_0x413c4d,_0xe20d4c[_0x4f0d('0x20')][_0x4f0d('0x22')]);return _0x3b325e(_0xe20d4c[_0x4f0d('0x20')][_0x4f0d('0x22')]);}logger[_0x4f0d('0x20')](_0x4f0d('0x1b'),_0x413c4d,_0xe20d4c[_0x4f0d('0x20')]['message']);return _0x5f2ffb(_0xe20d4c[_0x4f0d('0x20')]['message']);}else{logger[_0x4f0d('0x1a')](_0x4f0d('0x1b'),_0x413c4d,_0x4f0d('0x1c'));_0x5f2ffb(_0xe20d4c['result'][_0x4f0d('0x22')]);}})[_0x4f0d('0x23')](function(_0x560b83){logger[_0x4f0d('0x20')](_0x4f0d('0x1b'),_0x413c4d,_0x560b83);_0x3b325e(_0x560b83);});});}function respondWithStatusCode(_0x4cf136,_0x47abd6){_0x47abd6=_0x47abd6||0xcc;return function(_0x5bff38){if(_0x5bff38){return _0x4cf136[_0x4f0d('0x24')](_0x47abd6);}return _0x4cf136[_0x4f0d('0x25')](_0x47abd6)[_0x4f0d('0x26')]();};}function respondWithResult(_0x306c7a,_0x5a7cf3){_0x5a7cf3=_0x5a7cf3||0xc8;return function(_0x513fa6){if(_0x513fa6){return _0x306c7a[_0x4f0d('0x25')](_0x5a7cf3)[_0x4f0d('0x27')](_0x513fa6);}};}function respondWithFilteredResult(_0x23e6dd,_0x3fb3ed){return function(_0x15e380){if(_0x15e380){var _0xb3a1f0=typeof _0x3fb3ed['offset']===_0x4f0d('0x28')&&typeof _0x3fb3ed[_0x4f0d('0x29')]==='undefined';var _0x50a570=_0x15e380[_0x4f0d('0x2a')];var _0x3d8f4a=_0xb3a1f0?0x0:_0x3fb3ed[_0x4f0d('0x2b')];var _0x24c2f2=_0xb3a1f0?_0x15e380[_0x4f0d('0x2a')]:_0x3fb3ed[_0x4f0d('0x2b')]+_0x3fb3ed['limit'];var _0x269f94;if(_0x24c2f2>=_0x50a570){_0x24c2f2=_0x50a570;_0x269f94=0xc8;}else{_0x269f94=0xce;}_0x23e6dd[_0x4f0d('0x25')](_0x269f94);return _0x23e6dd['set'](_0x4f0d('0x2c'),_0x3d8f4a+'-'+_0x24c2f2+'/'+_0x50a570)[_0x4f0d('0x27')](_0x15e380);}return null;};}function saveUpdates(_0x3e6382){return function(_0xc4aa51){if(_0xc4aa51){return _0xc4aa51[_0x4f0d('0x2d')](_0x3e6382)[_0x4f0d('0x19')](function(_0x2ecc62){return _0x2ecc62;});}return null;};}function removeEntity(_0x34b22f){return function(_0x3c5394){if(_0x3c5394){return _0x3c5394[_0x4f0d('0x2e')]()[_0x4f0d('0x19')](function(){_0x34b22f[_0x4f0d('0x25')](0xcc)[_0x4f0d('0x26')]();});}};}function handleEntityNotFound(_0x565cfa){return function(_0x2c6acc){if(!_0x2c6acc){_0x565cfa[_0x4f0d('0x24')](0x194);}return _0x2c6acc;};}function handleError(_0x2eadfd,_0x52cfde){_0x52cfde=_0x52cfde||0x1f4;return function(_0x4ce6da){logger[_0x4f0d('0x20')](_0x4ce6da[_0x4f0d('0x2f')]);if(_0x4ce6da[_0x4f0d('0x30')]){delete _0x4ce6da['name'];}_0x2eadfd['status'](_0x52cfde)[_0x4f0d('0x31')](_0x4ce6da);};}function getMustacheRender(_0x508f5b,_0x5653ae){return Mustache[_0x4f0d('0x32')](_0x508f5b,_['merge'](_0x5653ae[_0x4f0d('0x33')],{'contact':_0x5653ae['contact'],'message':_0x5653ae['message'],'agent':_0x5653ae[_0x4f0d('0x34')],'interaction':_0x5653ae[_0x4f0d('0x35')],'account':_0x5653ae['account']}))||'';}exports['index']=function(_0x272741,_0x210d18){var _0x447b84={};var _0x5101ab=_[_0x4f0d('0x36')](db[_0x4f0d('0x37')][_0x4f0d('0x38')],function(_0x3435af){return{'name':_0x3435af[_0x4f0d('0x39')],'type':_0x3435af[_0x4f0d('0x3a')][_0x4f0d('0x3b')]};});_0x447b84=qs[_0x4f0d('0x3c')](_0x5101ab,_0x272741);return interaction[_0x4f0d('0x3d')](_0x4f0d('0x3e'),_0x272741[_0x4f0d('0x3f')],_0x272741[_0x4f0d('0x40')],_0x447b84,_0x5101ab)[_0x4f0d('0x19')](respondWithFilteredResult(_0x210d18,_0x447b84))['catch'](handleError(_0x210d18,null));};exports[_0x4f0d('0x41')]=function(_0x5b5086,_0x1c5922){var _0x36cfc0={'raw':![],'where':{'id':_0x5b5086['params']['id']}},_0x20884c={};_0x20884c[_0x4f0d('0x42')]=_[_0x4f0d('0x43')](db[_0x4f0d('0x37')][_0x4f0d('0x38')]);_0x20884c[_0x4f0d('0x3f')]=_[_0x4f0d('0x43')](_0x5b5086[_0x4f0d('0x3f')]);_0x20884c[_0x4f0d('0x44')]=_[_0x4f0d('0x45')](_0x20884c['model'],_0x20884c[_0x4f0d('0x3f')]);_0x36cfc0[_0x4f0d('0x46')]=_[_0x4f0d('0x45')](_0x20884c[_0x4f0d('0x42')],qs[_0x4f0d('0x47')](_0x5b5086[_0x4f0d('0x3f')]['fields']));_0x36cfc0[_0x4f0d('0x46')]=_0x36cfc0['attributes'][_0x4f0d('0x48')]?_0x36cfc0[_0x4f0d('0x46')]:_0x20884c[_0x4f0d('0x42')];if(_0x5b5086[_0x4f0d('0x3f')][_0x4f0d('0x49')]){_0x36cfc0[_0x4f0d('0x4a')]=[{'all':!![]}];}_0x36cfc0=_[_0x4f0d('0x4b')]({},_0x36cfc0,_0x5b5086['options']);return db['ChatInteraction'][_0x4f0d('0x4c')](_0x36cfc0)[_0x4f0d('0x19')](handleEntityNotFound(_0x1c5922,null))[_0x4f0d('0x19')](respondWithResult(_0x1c5922,null))['catch'](handleError(_0x1c5922,null));};exports[_0x4f0d('0x4d')]=function(_0x2a4402,_0x2d03cc){return db[_0x4f0d('0x37')][_0x4f0d('0x4d')](_0x2a4402[_0x4f0d('0x33')],{})['then'](respondWithResult(_0x2d03cc,0xc9))[_0x4f0d('0x23')](handleError(_0x2d03cc,null));};exports['update']=function(_0x35d9df,_0x3911af){if(_0x35d9df[_0x4f0d('0x33')]['id']){delete _0x35d9df[_0x4f0d('0x33')]['id'];}return db[_0x4f0d('0x37')]['find']({'where':{'id':_0x35d9df['params']['id']}})['then'](handleEntityNotFound(_0x3911af,null))[_0x4f0d('0x19')](saveUpdates(_0x35d9df[_0x4f0d('0x33')],null))[_0x4f0d('0x19')](respondWithResult(_0x3911af,null))[_0x4f0d('0x23')](handleError(_0x3911af,null));};exports[_0x4f0d('0x2e')]=function(_0x19501b,_0x5ec25a){return db[_0x4f0d('0x37')][_0x4f0d('0x4c')]({'where':{'id':_0x19501b['params']['id']}})[_0x4f0d('0x19')](handleEntityNotFound(_0x5ec25a,null))[_0x4f0d('0x19')](removeEntity(_0x5ec25a,null))['catch'](handleError(_0x5ec25a,null));};exports[_0x4f0d('0x4e')]=function(_0x2b45fc,_0xc42e27){return db[_0x4f0d('0x37')][_0x4f0d('0x4e')]()[_0x4f0d('0x19')](respondWithResult(_0xc42e27,null))['catch'](handleError(_0xc42e27,null));};exports[_0x4f0d('0x4f')]=function(_0x55f936,_0x525d53){var _0x60f6c7=_0x55f936[_0x4f0d('0x50')]['id'];var _0x2e96de;var _0x9250bb;var _0x25a684;return db['ChatInteraction'][_0x4f0d('0x51')]({'where':{'id':_0x60f6c7}})[_0x4f0d('0x19')](function(_0x23b68c){_0x2e96de=_0x23b68c;return db[_0x4f0d('0x52')][_0x4f0d('0x51')]({'where':{'id':_0x23b68c['ChatWebsiteId']},'attributes':['id',_0x4f0d('0x53'),_0x4f0d('0x54'),'vidaooTopic','vidaooNote','vidaooMetadata'],'raw':!![]});})['then'](function(_0x4a5607){if(_0x4a5607&&_0x4a5607[_0x4f0d('0x53')]&&_0x4a5607[_0x4f0d('0x54')]){_0x9250bb=_0x4a5607;var _0x2d17ff={'interaction':{'id':_0x60f6c7},'agent':{'id':_0x55f936['user']['id'],'name':_0x55f936['user'][_0x4f0d('0x30')],'fullname':_0x55f936[_0x4f0d('0x40')][_0x4f0d('0x55')],'email':_0x55f936[_0x4f0d('0x40')]['email']},'contact':_0x55f936[_0x4f0d('0x33')][_0x4f0d('0x56')],'account':_0x55f936[_0x4f0d('0x33')][_0x4f0d('0x57')]};var _0x55424c={'rejectUnauthorized':![],'method':_0x4f0d('0x58'),'url':_0x4f0d('0x59'),'headers':{'X-APIKEY':_0x4a5607[_0x4f0d('0x53')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x55f936[_0x4f0d('0x40')][_0x4f0d('0x5a')]],'buttons':null,'topic':_0x9250bb[_0x4f0d('0x5b')],'note':_[_0x4f0d('0x5c')](_0x9250bb[_0x4f0d('0x5d')])?null:getMustacheRender(_0x9250bb[_0x4f0d('0x5d')],_0x2d17ff),'metadata':null},'redirect':_0x4f0d('0x5e'),'json':!![]};try{if(!_[_0x4f0d('0x5c')](_0x9250bb['vidaooMetadata'])){var _0x1c5913=getMustacheRender(_0x9250bb[_0x4f0d('0x5f')],_0x2d17ff);var _0x2b73a6=JSON['parse'](_0x1c5913);_0x55424c[_0x4f0d('0x33')][_0x4f0d('0x60')]=_0x2b73a6;}}catch(_0x41277e){throw new db[(_0x4f0d('0x61'))][(_0x4f0d('0x62'))]('Error\x20in\x20conversion\x20vidaooMetadata');}return rp(_0x55424c);}else{throw new db[(_0x4f0d('0x61'))][(_0x4f0d('0x62'))](_0x4f0d('0x63'));}})[_0x4f0d('0x19')](function(_0x1e4891){_0x25a684=_0x1e4891;if(_0x25a684['id']){var _0x5ad702={'body':_0x25a684[_0x4f0d('0x64')],'ChatWebsiteId':_0x9250bb['id'],'ChatInteractionId':_0x2e96de['id'],'direction':_0x4f0d('0x65'),'UserId':_0x55f936[_0x4f0d('0x40')]['id']};return db[_0x4f0d('0x66')][_0x4f0d('0x4d')](_0x5ad702,{});}else{throw new db[(_0x4f0d('0x61'))][(_0x4f0d('0x62'))](_0x4f0d('0x67'));}})[_0x4f0d('0x19')](function(){return _0x2e96de[_0x4f0d('0x68')]({'vidaooSessionId':_0x25a684['id']});})[_0x4f0d('0x19')](respondWithResult(_0x525d53,null))['catch'](handleError(_0x525d53,null));};exports[_0x4f0d('0x69')]=function(_0xef6484,_0x47243c){if(_0xef6484[_0x4f0d('0x33')]['id']){delete _0xef6484[_0x4f0d('0x33')]['id'];}return db['ChatInteraction'][_0x4f0d('0x4c')]({'where':{'id':_0xef6484[_0x4f0d('0x50')]['id']},'include':[{'model':db[_0x4f0d('0x6a')],'as':_0x4f0d('0x6b')}]})[_0x4f0d('0x19')](handleEntityNotFound(_0x47243c,null))[_0x4f0d('0x19')](saveUpdates(_0xef6484[_0x4f0d('0x33')],null))[_0x4f0d('0x19')](respondWithResult(_0x47243c,null))[_0x4f0d('0x23')](handleError(_0x47243c,null));};exports[_0x4f0d('0x6c')]=function(_0x127a1a,_0x12f1b2){if(_0x127a1a[_0x4f0d('0x33')]['id']){delete _0x127a1a[_0x4f0d('0x33')]['id'];}return db['ChatInteraction']['find']({'where':{'id':_0x127a1a[_0x4f0d('0x50')]['id']}})['then'](function(_0x2e24b7){if(!_0x2e24b7){logger['error'](_0x4f0d('0x6d'),_0x4f0d('0x6c'),0x194,_0x4f0d('0x6e'));_0x12f1b2[_0x4f0d('0x24')](0x194);}else{if(_0x2e24b7[_0x4f0d('0x6f')]){throw new db[(_0x4f0d('0x61'))][(_0x4f0d('0x62'))](_0x4f0d('0x70'));}}return _0x2e24b7;})['then'](function(_0x3cbae2){if(_0x3cbae2){return _0x3cbae2[_0x4f0d('0x2d')]({'closed':_0x127a1a[_0x4f0d('0x33')][_0x4f0d('0x71')],'disposition':_0x127a1a['body'][_0x4f0d('0x72')]})[_0x4f0d('0x19')](function(_0x60793f){return _0x60793f;});}})[_0x4f0d('0x19')](function(){return respondWithRpcPromise(_0x4f0d('0x73'),_0x4f0d('0x6c'),_0x127a1a[_0x4f0d('0x33')],client9004);})['then'](respondWithResult(_0x12f1b2,null))[_0x4f0d('0x23')](handleError(_0x12f1b2,null));};exports[_0x4f0d('0x74')]=function(_0x3aa87e,_0x5cbeb9){_0x3aa87e[_0x4f0d('0x33')][_0x4f0d('0x30')]=_0x3aa87e['file'][_0x4f0d('0x75')];_0x3aa87e[_0x4f0d('0x33')]['basename']=_0x3aa87e[_0x4f0d('0x76')]['filename'];_0x3aa87e[_0x4f0d('0x33')][_0x4f0d('0x3a')]=_0x3aa87e['file']['mimetype'];return db[_0x4f0d('0x77')][_0x4f0d('0x4d')](_0x3aa87e[_0x4f0d('0x33')])[_0x4f0d('0x19')](respondWithResult(_0x5cbeb9,0xc9))[_0x4f0d('0x23')](handleError(_0x5cbeb9,null));};exports[_0x4f0d('0x78')]=function(_0x1288da,_0x8cc2b7){return db['ChatInteraction'][_0x4f0d('0x51')]({'where':{'id':_0x1288da[_0x4f0d('0x50')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x8cc2b7,null))['then'](function(_0x3a82c2){if(_0x3a82c2){if(_0x3a82c2[_0x4f0d('0x71')]){return _0x8cc2b7[_0x4f0d('0x25')](0x193)[_0x4f0d('0x27')]({'status':0x193,'message':'Unauthorized'});}return db['Attachment'][_0x4f0d('0x51')]({'where':{'id':_0x1288da[_0x4f0d('0x3f')]['attachId']},'raw':!![]})['then'](handleEntityNotFound(_0x8cc2b7,null));}})[_0x4f0d('0x19')](function(_0x1922b1){if(_0x1922b1){var _0x748058=_0x1922b1['ChatOfflineMessageId']!==null;var _0x4c2aaa=path[_0x4f0d('0x79')](config[_0x4f0d('0x7a')],_0x4f0d('0x7b'));if(_0x748058){_0x4c2aaa=path['join'](_0x4c2aaa,_0x4f0d('0x7c'));}var _0x338bd=path[_0x4f0d('0x79')](_0x4c2aaa,_0x1922b1[_0x4f0d('0x7d')]);return _0x8cc2b7[_0x4f0d('0x7e')](_0x338bd);}})[_0x4f0d('0x23')](handleError(_0x8cc2b7,null));};exports[_0x4f0d('0x7f')]=function(_0xa50f8,_0x474fe8){var _0x5afe8b=null;var _0x207940=null;var _0x4d8d54=null;if(_0xa50f8[_0x4f0d('0x33')]['id']){delete _0xa50f8[_0x4f0d('0x33')]['id'];}if(_0xa50f8[_0x4f0d('0x33')][_0x4f0d('0x80')]){_0x4d8d54=path['join'](config[_0x4f0d('0x7a')],_0x4f0d('0x81'),util[_0x4f0d('0x82')]('transcript-%s.txt',Date['now']()));_0xa50f8['body'][_0x4f0d('0x83')]=_0x4d8d54;}return db['ChatInteraction'][_0x4f0d('0x4c')]({'where':{'id':_0xa50f8[_0x4f0d('0x50')]['id']},'include':[{'model':db['ChatMessage'],'as':_0x4f0d('0x84'),'include':[{'model':db[_0x4f0d('0x85')],'as':_0x4f0d('0x85')}]}]})['then'](handleEntityNotFound(_0x474fe8,null))[_0x4f0d('0x19')](saveUpdates(_0xa50f8[_0x4f0d('0x33')],null))['then'](function(_0x32fef9){if(_0x32fef9){_0x5afe8b=_0x32fef9;return db[_0x4f0d('0x52')][_0x4f0d('0x4c')]({'where':{'id':_0x5afe8b[_0x4f0d('0x86')]}});}})[_0x4f0d('0x19')](function(_0x290491){if(_0x290491){_0x207940=_0x290491;return db[_0x4f0d('0x6a')]['find']({'where':{'id':_0x5afe8b[_0x4f0d('0x87')]}});}})['then'](function(_0x113f69){if(_0x113f69){if(_0x4d8d54){var _0x2a105d=null;for(var _0x3ef42e=0x1;_0x3ef42e<_0x5afe8b[_0x4f0d('0x84')]['length'];++_0x3ef42e){_0x2a105d=_0x5afe8b[_0x4f0d('0x84')][_0x3ef42e];var _0x1389cf=_0x2a105d[_0x4f0d('0x6f')]?util[_0x4f0d('0x82')](_0x4f0d('0x88'),_0x207940['agentAlias'],_0x2a105d['UserId']):_0x4f0d('0x89');var _0x19c33c=_0xa50f8['body']['customer']||util[_0x4f0d('0x82')](_0x4f0d('0x88'),_0x4f0d('0x8a'),_0x2a105d[_0x4f0d('0x87')]);switch(_0x207940['agentIdentifier']){case _0x4f0d('0x8b'):_0x1389cf=_0x2a105d['UserId']?util[_0x4f0d('0x82')](_0x4f0d('0x88'),_0x207940[_0x4f0d('0x8c')],_0x2a105d[_0x4f0d('0x6f')]):_0x4f0d('0x89');break;case _0x4f0d('0x8d'):_0x1389cf=_0x2a105d[_0x4f0d('0x6f')]?_0x2a105d[_0x4f0d('0x85')][_0x4f0d('0x8e')]||_0x2a105d[_0x4f0d('0x85')][_0x4f0d('0x55')]:_0x4f0d('0x89');break;case _0x4f0d('0x8f'):_0x1389cf=_0x2a105d[_0x4f0d('0x6f')]?_0x2a105d[_0x4f0d('0x85')][_0x4f0d('0x55')]:_0x4f0d('0x89');break;default:_0x1389cf=_0x2a105d[_0x4f0d('0x6f')]?util['format'](_0x4f0d('0x88'),_0x207940[_0x4f0d('0x8c')],_0x2a105d[_0x4f0d('0x6f')]):'System';}var _0x135904=util[_0x4f0d('0x82')](_0x4f0d('0x90'),moment(_0x2a105d['createdAt'])[_0x4f0d('0x82')](_0x4f0d('0x91')),_0x2a105d[_0x4f0d('0x92')]==='in'?_0x19c33c:_0x1389cf,_0x2a105d[_0x4f0d('0x33')]);if(!_0x2a105d[_0x4f0d('0x93')]){fs[_0x4f0d('0x94')](_0x4d8d54,_0x135904);}}return db[_0x4f0d('0x95')][_0x4f0d('0x51')]({'where':{'service':!![]},'include':[{'model':db[_0x4f0d('0x96')],'as':'Smtp','raw':!![],'include':[{'model':db[_0x4f0d('0x97')],'as':_0x4f0d('0x97'),'raw':!![]}]}]});}}})[_0x4f0d('0x19')](function(_0x5d673b){if(!_0x5d673b||!_0x5d673b[_0x4f0d('0x98')]||!_0xa50f8[_0x4f0d('0x33')])return _0x5afe8b;var _0x2bc68a=_0x5d673b[_0x4f0d('0x99')]();return respondWithRpcPromise(_0x4f0d('0x9a'),_0x4f0d('0x9b'),{'account':_0x2bc68a,'message':{'from':util[_0x4f0d('0x82')](_0x4f0d('0x9c'),_0x5d673b[_0x4f0d('0x30')],_0x5d673b['email']||_0x5d673b[_0x4f0d('0x98')]['user']),'to':_0xa50f8[_0x4f0d('0x33')][_0x4f0d('0x80')],'subject':'Mail\x20Transcript','text':util[_0x4f0d('0x82')](_0x4f0d('0x9d'),_0xa50f8[_0x4f0d('0x33')][_0x4f0d('0x80')]),'attachments':[{'path':_0x4d8d54}]}})[_0x4f0d('0x19')](function(){return _0x5afe8b;})[_0x4f0d('0x23')](function(_0x5f16a2){logger[_0x4f0d('0x20')](_0x5f16a2);});})[_0x4f0d('0x19')](respondWithStatusCode(_0x474fe8,0xc8))[_0x4f0d('0x23')](handleError(_0x474fe8,null));};exports['addMessage']=function(_0x2aed39,_0xe3df45){return db[_0x4f0d('0x66')][_0x4f0d('0x4c')]({'where':{'id':_0x2aed39[_0x4f0d('0x50')]['id']}})['then'](handleEntityNotFound(_0xe3df45,null))[_0x4f0d('0x19')](function(_0x1ee731){if(_0x1ee731){return _0x1ee731[_0x4f0d('0x9e')](_0x2aed39['body'][_0x4f0d('0x9f')],_['omit'](_0x2aed39[_0x4f0d('0x33')],[_0x4f0d('0x9f'),'id'])||{});}})[_0x4f0d('0x19')](respondWithResult(_0xe3df45,null))[_0x4f0d('0x23')](handleError(_0xe3df45,null));};exports['getMessages']=function(_0x4ac835,_0x1f8640){var _0x414661={'raw':![],'where':{}};var _0x472595={};var _0x4ccbfa={'count':0x0,'rows':[]};return db[_0x4f0d('0x37')]['findOne']({'where':{'id':_0x4ac835[_0x4f0d('0x50')]['id']}})['then'](handleEntityNotFound(_0x1f8640,null))[_0x4f0d('0x19')](function(_0x1cab22){if(_0x1cab22){_0x472595[_0x4f0d('0x42')]=_[_0x4f0d('0x43')](db['ChatMessage'][_0x4f0d('0x38')]);_0x472595[_0x4f0d('0x3f')]=_[_0x4f0d('0x43')](_0x4ac835[_0x4f0d('0x3f')]);_0x472595['filters']=_['intersection'](_0x472595[_0x4f0d('0x42')],_0x472595[_0x4f0d('0x3f')]);_0x414661[_0x4f0d('0x46')]=_['intersection'](_0x472595[_0x4f0d('0x42')],qs[_0x4f0d('0x47')](_0x4ac835[_0x4f0d('0x3f')][_0x4f0d('0x47')]));_0x414661[_0x4f0d('0x46')]=_0x414661[_0x4f0d('0x46')][_0x4f0d('0x48')]?_0x414661[_0x4f0d('0x46')]:_0x472595[_0x4f0d('0x42')];if(!_0x4ac835[_0x4f0d('0x3f')][_0x4f0d('0xa0')](_0x4f0d('0xa1'))){_0x414661[_0x4f0d('0x29')]=qs['limit'](_0x4ac835['query'][_0x4f0d('0x29')]);_0x414661['offset']=qs['offset'](_0x4ac835[_0x4f0d('0x3f')]['offset']);}_0x414661[_0x4f0d('0xa2')]=qs[_0x4f0d('0xa3')](_0x4ac835[_0x4f0d('0x3f')][_0x4f0d('0xa3')]);_0x414661[_0x4f0d('0xa4')]=qs['filters'](_[_0x4f0d('0xa5')](_0x4ac835[_0x4f0d('0x3f')],_0x472595[_0x4f0d('0x44')]));_0x414661['where']['ChatInteractionId']=_0x1cab22['id'];if(_0x4ac835[_0x4f0d('0x3f')][_0x4f0d('0xa6')]){_0x414661[_0x4f0d('0xa4')]=_[_0x4f0d('0x4b')](_0x414661['where'],{'$or':_[_0x4f0d('0x36')](_0x414661[_0x4f0d('0x46')],function(_0x3499b1){var _0x15f6ab={};_0x15f6ab[_0x3499b1]={'$like':'%'+_0x4ac835['query'][_0x4f0d('0xa6')]+'%'};return _0x15f6ab;})});}if(_0x4ac835[_0x4f0d('0x3f')][_0x4f0d('0xa7')]){var _0x257ea8=_0x4ac835[_0x4f0d('0x3f')]['$gte'][_0x4f0d('0xa8')](',');var _0x128183={};_0x128183[_0x257ea8[0x0]]={'$gte':moment(_0x257ea8[0x1])[_0x4f0d('0x82')](_0x4f0d('0xa9'))};_0x414661[_0x4f0d('0xa4')]=_[_0x4f0d('0x4b')](_0x414661[_0x4f0d('0xa4')],_0x128183);}_0x414661=_[_0x4f0d('0x4b')]({},_0x414661,_0x4ac835['options']);return db['ChatMessage'][_0x4f0d('0x2a')]({'where':_0x414661[_0x4f0d('0xa4')]})['then'](function(_0x30074c){_0x4ccbfa['count']=_0x30074c;if(_0x4ac835['query'][_0x4f0d('0x49')]){_0x414661[_0x4f0d('0x4a')]=[{'all':!![]}];}return db[_0x4f0d('0x66')][_0x4f0d('0x3d')](_0x414661);})['then'](function(_0x15e670){_0x4ccbfa['rows']=_0x15e670;return _0x4ccbfa;});}})['then'](respondWithFilteredResult(_0x1f8640,_0x414661))[_0x4f0d('0x23')](handleError(_0x1f8640,null));};exports['getMyMessages']=function(_0x1f5beb,_0x71b271){var _0x7a1323={'where':{}},_0x2df271={},_0x3a87f2={'count':0x0,'rows':[]};return db[_0x4f0d('0x37')][_0x4f0d('0x51')]({'where':{'id':_0x1f5beb[_0x4f0d('0x50')]['id']}})[_0x4f0d('0x19')](handleEntityNotFound(_0x71b271,null))['then'](function(_0x391a61){if(_0x391a61){_0x2df271[_0x4f0d('0x42')]=_['keys'](db['ChatMessage'][_0x4f0d('0x38')]);_0x2df271[_0x4f0d('0x3f')]=_['keys'](_0x1f5beb[_0x4f0d('0x3f')]);_0x2df271[_0x4f0d('0x44')]=_[_0x4f0d('0x45')](_0x2df271[_0x4f0d('0x42')],_0x2df271[_0x4f0d('0x3f')]);_0x7a1323[_0x4f0d('0x46')]=_[_0x4f0d('0x45')](_0x2df271[_0x4f0d('0x42')],qs[_0x4f0d('0x47')](_0x1f5beb[_0x4f0d('0x3f')][_0x4f0d('0x47')]));_0x7a1323[_0x4f0d('0x46')]=_0x7a1323['attributes'][_0x4f0d('0x48')]?_0x7a1323[_0x4f0d('0x46')]:_0x2df271[_0x4f0d('0x42')];if(!_0x1f5beb[_0x4f0d('0x3f')]['hasOwnProperty'](_0x4f0d('0xa1'))){_0x7a1323[_0x4f0d('0x29')]=qs[_0x4f0d('0x29')](_0x1f5beb[_0x4f0d('0x3f')][_0x4f0d('0x29')]);_0x7a1323[_0x4f0d('0x2b')]=qs[_0x4f0d('0x2b')](_0x1f5beb[_0x4f0d('0x3f')]['offset']);}_0x7a1323['order']=qs[_0x4f0d('0xa3')](_0x1f5beb[_0x4f0d('0x3f')]['sort']);_0x7a1323[_0x4f0d('0xa4')]=qs['filters'](_[_0x4f0d('0xa5')](_0x1f5beb[_0x4f0d('0x3f')],_0x2df271['filters']));_0x7a1323['where'][_0x4f0d('0xaa')]=_0x391a61['id'];if(_0x1f5beb[_0x4f0d('0x3f')][_0x4f0d('0xa6')]){_0x7a1323['where']=_[_0x4f0d('0x4b')](_0x7a1323[_0x4f0d('0xa4')],{'$or':_[_0x4f0d('0x36')](_0x7a1323[_0x4f0d('0x46')],function(_0x58da49){var _0x311b4e={};_0x311b4e[_0x58da49]={'$like':'%'+_0x1f5beb['query'][_0x4f0d('0xa6')]+'%'};return _0x311b4e;})});}_0x7a1323[_0x4f0d('0xa4')][_0x4f0d('0x93')]=![];if(_0x1f5beb[_0x4f0d('0x3f')]['id']){_0x7a1323[_0x4f0d('0xa4')]['id']={'$gt':_0x1f5beb[_0x4f0d('0x3f')]['id']};}_0x7a1323=_[_0x4f0d('0x4b')]({},_0x7a1323,_0x1f5beb[_0x4f0d('0xab')]);return db[_0x4f0d('0x66')][_0x4f0d('0x2a')]({'where':_0x7a1323[_0x4f0d('0xa4')]})[_0x4f0d('0x19')](function(_0x41fb15){_0x3a87f2[_0x4f0d('0x2a')]=_0x41fb15;_0x7a1323[_0x4f0d('0x4a')]=[];if(_0x1f5beb[_0x4f0d('0x3f')][_0x4f0d('0xac')]){_0x7a1323['include']['push']({'model':db['User'],'as':_0x4f0d('0x85'),'attributes':['id',_0x4f0d('0x55'),_0x4f0d('0x8e')]});}if(_0x1f5beb[_0x4f0d('0x3f')][_0x4f0d('0x49')]){_0x7a1323['include']=[{'all':!![]}];}return db[_0x4f0d('0x66')][_0x4f0d('0x3d')](_0x7a1323);})[_0x4f0d('0x19')](function(_0x2fbe3f){_0x3a87f2['rows']=_0x2fbe3f;return _0x3a87f2;});}})[_0x4f0d('0x19')](respondWithFilteredResult(_0x71b271,_0x7a1323))[_0x4f0d('0x23')](handleError(_0x71b271,null));};exports['addTags']=function(_0x97949c,_0x3b6957){return db[_0x4f0d('0x37')][_0x4f0d('0x4c')]({'where':{'id':_0x97949c[_0x4f0d('0x50')]['id']}})[_0x4f0d('0x19')](handleEntityNotFound(_0x3b6957,null))[_0x4f0d('0x19')](function(_0x1e3637){if(_0x1e3637){return _0x1e3637[_0x4f0d('0xad')](_0x97949c['body'][_0x4f0d('0x9f')],_[_0x4f0d('0xae')](_0x97949c[_0x4f0d('0x33')],[_0x4f0d('0x9f'),'id'])||{})[_0x4f0d('0xaf')](function(){return db[_0x4f0d('0xb0')]['findAll']({'attributes':['id',_0x4f0d('0x30'),_0x4f0d('0xb1')],'where':{'id':_0x97949c[_0x4f0d('0x33')][_0x4f0d('0x9f')]}});})[_0x4f0d('0x19')](function(_0xe5151a){socket[_0x4f0d('0xb2')](_0x4f0d('0xb3'),{'id':Number(_0x97949c['params']['id']),'tags':_0xe5151a||[]});return{'id':Number(_0x97949c['params']['id']),'tags':_0xe5151a||[]};});}})[_0x4f0d('0x19')](respondWithResult(_0x3b6957,null))[_0x4f0d('0x23')](handleError(_0x3b6957,null));};exports['removeTags']=function(_0x3a998c,_0x41c5cd){return db[_0x4f0d('0x37')]['find']({'where':{'id':_0x3a998c[_0x4f0d('0x50')]['id']}})[_0x4f0d('0x19')](handleEntityNotFound(_0x41c5cd,null))[_0x4f0d('0x19')](function(_0x5bbea5){if(_0x5bbea5){return _0x5bbea5[_0x4f0d('0xb4')](_0x3a998c[_0x4f0d('0x3f')]['ids']);}})[_0x4f0d('0x19')](respondWithStatusCode(_0x41c5cd,null))[_0x4f0d('0x23')](handleError(_0x41c5cd,null));};exports[_0x4f0d('0x7e')]=function(_0x357e46,_0x364e83){var _0xb06ffe=moment()['unix']()[_0x4f0d('0xb5')]();var _0xd5a557=path[_0x4f0d('0x79')](config[_0x4f0d('0x7a')],_0x4f0d('0xb6'),_0x4f0d('0xb7'),_0x4f0d('0xb8'));var _0x539d92=path['join'](config[_0x4f0d('0x7a')],_0x4f0d('0xb6'),'files',_0x4f0d('0xb9'));var _0x1c18dd=path['join'](_0xd5a557,_0xb06ffe);var _0x45ff08=util[_0x4f0d('0x82')](_0x4f0d('0xba'),_0x357e46['params']['id'],_0xb06ffe);var _0x2e26b8=path['join'](_0xd5a557,_0x45ff08);var _0x483a01=[];_0x483a01[_0x4f0d('0xbb')]({'model':db[_0x4f0d('0x85')],'as':'User','attributes':['id',_0x4f0d('0x55')],'raw':!![]});_0x483a01[_0x4f0d('0xbb')]({'model':db[_0x4f0d('0x6a')],'as':_0x4f0d('0x6b'),'attributes':['id',_0x4f0d('0xbc'),_0x4f0d('0xbd')],'raw':!![]});if(_0x357e46[_0x4f0d('0x3f')][_0x4f0d('0xb9')]){_0x483a01[_0x4f0d('0xbb')]({'model':db[_0x4f0d('0x77')],'as':_0x4f0d('0x77'),'raw':!![]});}var _0x5f1ed1=[{'model':db['ChatMessage'],'as':_0x4f0d('0x84'),'attributes':['id',_0x4f0d('0x33'),_0x4f0d('0xbe'),_0x4f0d('0x92'),_0x4f0d('0x93'),_0x4f0d('0xbf')],'include':_0x483a01}];_0x5f1ed1['push']({'model':db[_0x4f0d('0x52')],'as':_0x4f0d('0xc0'),'attributes':['id',_0x4f0d('0x30')]});_0x5f1ed1[_0x4f0d('0xbb')]({'model':db['User'],'as':_0x4f0d('0xc1'),'attributes':['id','fullname']});return db[_0x4f0d('0x37')][_0x4f0d('0x4c')]({'where':{'id':_0x357e46[_0x4f0d('0x50')]['id']},'include':_0x5f1ed1})[_0x4f0d('0x19')](handleEntityNotFound(_0x364e83,null))['then'](function(_0x3896f8){if(_0x3896f8){var _0x831eb1=_0x3896f8[_0x4f0d('0xc2')]({'plain':!![]});fs[_0x4f0d('0xc3')](_0x1c18dd);var _0x5b10e2={'channel':_0x4f0d('0xc4'),'account':_0x831eb1[_0x4f0d('0xc0')][_0x4f0d('0x30')],'agent':_0x831eb1[_0x4f0d('0xc1')]?_0x831eb1[_0x4f0d('0xc1')]['fullname']:'N.A.','createdAt':moment(_0x831eb1[_0x4f0d('0xbe')])[_0x4f0d('0x82')](_0x4f0d('0xa9'))['toString'](),'closedAt':_0x831eb1[_0x4f0d('0x71')]?moment(_0x831eb1[_0x4f0d('0xc5')])[_0x4f0d('0x82')](_0x4f0d('0xa9'))['toString']():'','disposition':_0x831eb1[_0x4f0d('0x72')],'chatInfo':{'browser':_0x831eb1[_0x4f0d('0xc6')],'os':_0x831eb1[_0x4f0d('0xc7')],'referer':_0x831eb1[_0x4f0d('0xc8')],'customerIp':_0x831eb1[_0x4f0d('0xc9')],'customerPort':_0x831eb1[_0x4f0d('0xca')]?_0x831eb1['customerPort']:_0x4f0d('0xcb')},'messages':_(_0x831eb1[_0x4f0d('0x84')])[_0x4f0d('0xcc')]()[_0x4f0d('0xa6')]({'secret':![]})['map'](function(_0x42e5be){if(_0x42e5be[_0x4f0d('0x77')]){var _0x372775=path[_0x4f0d('0x79')](_0x539d92,_0x42e5be[_0x4f0d('0x77')][_0x4f0d('0x7d')]);if(fs[_0x4f0d('0xcd')](_0x372775)){fs[_0x4f0d('0xce')](_0x372775)[_0x4f0d('0xcf')](fs[_0x4f0d('0xd0')](path[_0x4f0d('0x79')](_0x1c18dd,_0x42e5be['Attachment'][_0x4f0d('0x7d')])));}}return{'date':moment(_0x42e5be[_0x4f0d('0xbe')])[_0x4f0d('0x82')](_0x4f0d('0xa9'))['toString'](),'sender':_0x42e5be[_0x4f0d('0x92')]===_0x4f0d('0x65')?_0x42e5be[_0x4f0d('0x85')]?_0x42e5be[_0x4f0d('0x85')][_0x4f0d('0x55')]:'System':_0x42e5be[_0x4f0d('0x6b')][_0x4f0d('0xbc')]+(_0x42e5be['Contact'][_0x4f0d('0xbd')]?'\x20'+_0x42e5be[_0x4f0d('0x6b')][_0x4f0d('0xbd')]:''),'body':_0x42e5be[_0x4f0d('0x77')]?_0x42e5be[_0x4f0d('0x77')][_0x4f0d('0x7d')]:_0x42e5be['body'],'direction':_0x42e5be[_0x4f0d('0x92')]===_0x4f0d('0x65')?'A':'C','secret':_0x42e5be[_0x4f0d('0x93')],'read':_0x42e5be[_0x4f0d('0xbf')],'attachment':_0x42e5be[_0x4f0d('0x77')]};})[_0x4f0d('0xd1')]()};return ejs[_0x4f0d('0xd2')](path[_0x4f0d('0x79')](config[_0x4f0d('0x7a')],'server',_0x4f0d('0xd3'),_0x4f0d('0xd4')),{'interaction':_0x5b10e2})[_0x4f0d('0x19')](function(_0x24c7b8){var _0x1f64ce=path['join'](_0x1c18dd,_0x4f0d('0xd5')+_0x831eb1['id']+'-'+_0xb06ffe+_0x4f0d('0xd6'));var _0x257b81={'path':_0x1f64ce,'channel':_0x4f0d('0xc4'),'interactionId':_0x831eb1['id']};return pdf[_0x4f0d('0xd7')](_0x24c7b8,_0x257b81);})[_0x4f0d('0x19')](function(){return new Promise(function(_0x4b4e3c,_0x19e2f5){zipdir(_0x1c18dd,{'saveTo':_0x2e26b8},function(_0x14f066,_0x5f2df6){if(_0x14f066)return _0x19e2f5(_0x14f066);return _0x4b4e3c(_0x5f2df6);});})[_0x4f0d('0x19')](function(){return new BPromise(function(_0x3d08e9,_0x7e0957){rimraf(_0x1c18dd,function(_0x2021b5){if(_0x2021b5)_0x7e0957(_0x2021b5);return _0x3d08e9();});});})[_0x4f0d('0x19')](function(){return _0x364e83['download'](_0x2e26b8,_0x45ff08,function(_0x72cde4){if(_0x72cde4){logger[_0x4f0d('0x20')](_0x4f0d('0xd8'),_0x72cde4);}else{fs[_0x4f0d('0xd9')](_0x2e26b8);}});});});}else{return _0x364e83[_0x4f0d('0x24')](0xc8);}})[_0x4f0d('0x23')](handleError(_0x364e83,null));};
\ No newline at end of file
+var _0x9bee=['nolimit','order','sort','where','ChatInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','includeAll','getMyMessages','intersection','pick','includeAgent','push','rows','addTags','Tag','color','emit','chatInteractionTags:save','removeTags','toString','server','files','tmp','attachments','transcript-%d-%s.zip','Contact','firstName','lastName','direction','read','Account','Owner','Chat','createdAt','closedAt','browserName','osName','referer','customerIp','customerPort','tail','existsSync','createReadStream','pipe','createWriteStream','renderFile','transcript-','.pdf','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','ejs','lodash','../../components/interaction/service','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./chatInteraction.socket','jayson/promise','client','http','request','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','sendStatus','status','json','offset','undefined','limit','count','set','then','destroy','end','name','send','render','merge','contact','agent','account','map','rawAttributes','fieldName','type','key','findAll','chat','query','user','show','params','model','keys','ChatInteraction','attributes','fields','include','options','create','body','update','find','describe','findOne','ChatWebsite','ChatWebsiteId','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','fullname','https://api-vidaoo.xcally.com/api/v1/meetings','email','isNull','follow','Sequelize','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandon','UserId','Interaction\x20already\x20assigned','disposition','AbandonInteraction','file','originalname','basename','mimetype','attachmentDownload','closed','Unauthorized','Attachment','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','download','mailTranscript','server/files/chat/upload/','transcript-%s.txt','now','pathTranscript','Messages','User','ContactId','length','format','%s%d','System','customer','Visitor','agentIdentifier','agentAlias','alias','agent_fullname','MM/DD/YYYY\x20HH:mm:ss','secret','appendFileSync','MailAccount','MailServerOut','Smtp','CloudProvider','getSmtpOptions','SendMail','sendMail','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','getMessages','filters','hasOwnProperty'];(function(_0x67f95e,_0x3ca797){var _0x538f5a=function(_0xc919e9){while(--_0xc919e9){_0x67f95e['push'](_0x67f95e['shift']());}};_0x538f5a(++_0x3ca797);}(_0x9bee,0xfa));var _0xe9be=function(_0xf32bd0,_0xc6c4d9){_0xf32bd0=_0xf32bd0-0x0;var _0x27a586=_0x9bee[_0xf32bd0];return _0x27a586;};'use strict';var rimraf=require(_0xe9be('0x0'));var zipdir=require(_0xe9be('0x1'));var rp=require(_0xe9be('0x2'));var moment=require('moment');var BPromise=require(_0xe9be('0x3'));var Mustache=require(_0xe9be('0x4'));var util=require(_0xe9be('0x5'));var path=require(_0xe9be('0x6'));var ejs=require(_0xe9be('0x7'));var fs=require('fs');var _=require(_0xe9be('0x8'));var Redis=require('ioredis');var interaction=require(_0xe9be('0x9'));var qs=require('../../components/parsers/qs');var pdf=require('../../components/export/pdf');var logger=require('../../config/logger')('api');var config=require(_0xe9be('0xa'));var db=require(_0xe9be('0xb'))['db'];config['redis']=_['defaults'](config[_0xe9be('0xc')],{'host':_0xe9be('0xd'),'port':0x18eb});var socket=require(_0xe9be('0xe'))(new Redis(config['redis']));require(_0xe9be('0xf'))['register'](socket);var jayson=require(_0xe9be('0x10'));var client=jayson[_0xe9be('0x11')][_0xe9be('0x12')]({'port':0x232b});var client9004=jayson[_0xe9be('0x11')][_0xe9be('0x12')]({'port':0x232c});function respondWithRpcPromise(_0x2bb2a9,_0x8cf6b7,_0x297a6c,_0x2b90b8){return new BPromise(function(_0xcf75ce,_0x4a3afc){var _0x1ff300=_0x2b90b8||client;return _0x1ff300[_0xe9be('0x13')](_0x2bb2a9,_0x297a6c)['then'](function(_0x334838){logger[_0xe9be('0x14')](_0xe9be('0x15'),_0x8cf6b7,_0xe9be('0x16'));logger[_0xe9be('0x17')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x8cf6b7,'request\x20sent',JSON[_0xe9be('0x18')](_0x334838));if(_0x334838['error']){if(_0x334838[_0xe9be('0x19')][_0xe9be('0x1a')]===0x1f4){logger[_0xe9be('0x19')]('ChatInteraction,\x20%s,\x20%s',_0x8cf6b7,_0x334838['error'][_0xe9be('0x1b')]);return _0x4a3afc(_0x334838[_0xe9be('0x19')][_0xe9be('0x1b')]);}logger[_0xe9be('0x19')](_0xe9be('0x15'),_0x8cf6b7,_0x334838[_0xe9be('0x19')]['message']);return _0xcf75ce(_0x334838[_0xe9be('0x19')][_0xe9be('0x1b')]);}else{logger[_0xe9be('0x14')](_0xe9be('0x15'),_0x8cf6b7,_0xe9be('0x16'));_0xcf75ce(_0x334838['result'][_0xe9be('0x1b')]);}})[_0xe9be('0x1c')](function(_0x56e6e4){logger[_0xe9be('0x19')]('ChatInteraction,\x20%s,\x20%s',_0x8cf6b7,_0x56e6e4);_0x4a3afc(_0x56e6e4);});});}function respondWithStatusCode(_0x23367f,_0x49a36b){_0x49a36b=_0x49a36b||0xcc;return function(_0xea9f6){if(_0xea9f6){return _0x23367f[_0xe9be('0x1d')](_0x49a36b);}return _0x23367f['status'](_0x49a36b)['end']();};}function respondWithResult(_0xd6237b,_0x2eea3a){_0x2eea3a=_0x2eea3a||0xc8;return function(_0x4c86f0){if(_0x4c86f0){return _0xd6237b[_0xe9be('0x1e')](_0x2eea3a)[_0xe9be('0x1f')](_0x4c86f0);}};}function respondWithFilteredResult(_0x2b2eb0,_0x426ef5){return function(_0x18d482){if(_0x18d482){var _0x58910c=typeof _0x426ef5[_0xe9be('0x20')]===_0xe9be('0x21')&&typeof _0x426ef5[_0xe9be('0x22')]===_0xe9be('0x21');var _0x29bebb=_0x18d482['count'];var _0x1857f6=_0x58910c?0x0:_0x426ef5[_0xe9be('0x20')];var _0x224920=_0x58910c?_0x18d482[_0xe9be('0x23')]:_0x426ef5[_0xe9be('0x20')]+_0x426ef5[_0xe9be('0x22')];var _0x228a75;if(_0x224920>=_0x29bebb){_0x224920=_0x29bebb;_0x228a75=0xc8;}else{_0x228a75=0xce;}_0x2b2eb0[_0xe9be('0x1e')](_0x228a75);return _0x2b2eb0[_0xe9be('0x24')]('Content-Range',_0x1857f6+'-'+_0x224920+'/'+_0x29bebb)['json'](_0x18d482);}return null;};}function saveUpdates(_0x22d8a6){return function(_0x5abc8e){if(_0x5abc8e){return _0x5abc8e['update'](_0x22d8a6)[_0xe9be('0x25')](function(_0x513098){return _0x513098;});}return null;};}function removeEntity(_0x538988){return function(_0x2bc223){if(_0x2bc223){return _0x2bc223[_0xe9be('0x26')]()['then'](function(){_0x538988[_0xe9be('0x1e')](0xcc)[_0xe9be('0x27')]();});}};}function handleEntityNotFound(_0x19ca54){return function(_0x2e4ed3){if(!_0x2e4ed3){_0x19ca54['sendStatus'](0x194);}return _0x2e4ed3;};}function handleError(_0x15f772,_0x4aa529){_0x4aa529=_0x4aa529||0x1f4;return function(_0x4d8e68){logger['error'](_0x4d8e68['stack']);if(_0x4d8e68[_0xe9be('0x28')]){delete _0x4d8e68[_0xe9be('0x28')];}_0x15f772[_0xe9be('0x1e')](_0x4aa529)[_0xe9be('0x29')](_0x4d8e68);};}function getMustacheRender(_0x36b701,_0x304e73){return Mustache[_0xe9be('0x2a')](_0x36b701,_[_0xe9be('0x2b')](_0x304e73['body'],{'contact':_0x304e73[_0xe9be('0x2c')],'message':_0x304e73[_0xe9be('0x1b')],'agent':_0x304e73[_0xe9be('0x2d')],'interaction':_0x304e73['interaction'],'account':_0x304e73[_0xe9be('0x2e')]}))||'';}exports['index']=function(_0x2e81fc,_0x25db67){var _0x2ff9ba={};var _0x154e7c=_[_0xe9be('0x2f')](db['ChatInteraction'][_0xe9be('0x30')],function(_0x47a950){return{'name':_0x47a950[_0xe9be('0x31')],'type':_0x47a950[_0xe9be('0x32')][_0xe9be('0x33')]};});_0x2ff9ba=qs['getOptions'](_0x154e7c,_0x2e81fc);return interaction[_0xe9be('0x34')](_0xe9be('0x35'),_0x2e81fc[_0xe9be('0x36')],_0x2e81fc[_0xe9be('0x37')],_0x2ff9ba,_0x154e7c)[_0xe9be('0x25')](respondWithFilteredResult(_0x25db67,_0x2ff9ba))[_0xe9be('0x1c')](handleError(_0x25db67,null));};exports[_0xe9be('0x38')]=function(_0x5a95c5,_0xab970){var _0x902bf8={'raw':![],'where':{'id':_0x5a95c5[_0xe9be('0x39')]['id']}},_0x457f23={};_0x457f23[_0xe9be('0x3a')]=_[_0xe9be('0x3b')](db[_0xe9be('0x3c')][_0xe9be('0x30')]);_0x457f23[_0xe9be('0x36')]=_[_0xe9be('0x3b')](_0x5a95c5[_0xe9be('0x36')]);_0x457f23['filters']=_['intersection'](_0x457f23[_0xe9be('0x3a')],_0x457f23[_0xe9be('0x36')]);_0x902bf8[_0xe9be('0x3d')]=_['intersection'](_0x457f23[_0xe9be('0x3a')],qs[_0xe9be('0x3e')](_0x5a95c5['query'][_0xe9be('0x3e')]));_0x902bf8[_0xe9be('0x3d')]=_0x902bf8[_0xe9be('0x3d')]['length']?_0x902bf8[_0xe9be('0x3d')]:_0x457f23[_0xe9be('0x3a')];if(_0x5a95c5[_0xe9be('0x36')]['includeAll']){_0x902bf8[_0xe9be('0x3f')]=[{'all':!![]}];}_0x902bf8=_[_0xe9be('0x2b')]({},_0x902bf8,_0x5a95c5[_0xe9be('0x40')]);return db[_0xe9be('0x3c')]['find'](_0x902bf8)['then'](handleEntityNotFound(_0xab970,null))[_0xe9be('0x25')](respondWithResult(_0xab970,null))['catch'](handleError(_0xab970,null));};exports[_0xe9be('0x41')]=function(_0x553e10,_0x11911a){return db[_0xe9be('0x3c')]['create'](_0x553e10[_0xe9be('0x42')],{})[_0xe9be('0x25')](respondWithResult(_0x11911a,0xc9))['catch'](handleError(_0x11911a,null));};exports[_0xe9be('0x43')]=function(_0x335d87,_0xe57329){if(_0x335d87[_0xe9be('0x42')]['id']){delete _0x335d87[_0xe9be('0x42')]['id'];}return db[_0xe9be('0x3c')][_0xe9be('0x44')]({'where':{'id':_0x335d87[_0xe9be('0x39')]['id']}})[_0xe9be('0x25')](handleEntityNotFound(_0xe57329,null))[_0xe9be('0x25')](saveUpdates(_0x335d87[_0xe9be('0x42')],null))[_0xe9be('0x25')](respondWithResult(_0xe57329,null))['catch'](handleError(_0xe57329,null));};exports['destroy']=function(_0x16dd8c,_0x509ccd){return db[_0xe9be('0x3c')][_0xe9be('0x44')]({'where':{'id':_0x16dd8c['params']['id']}})[_0xe9be('0x25')](handleEntityNotFound(_0x509ccd,null))[_0xe9be('0x25')](removeEntity(_0x509ccd,null))[_0xe9be('0x1c')](handleError(_0x509ccd,null));};exports[_0xe9be('0x45')]=function(_0x341d54,_0x9af705){return db['ChatInteraction'][_0xe9be('0x45')]()[_0xe9be('0x25')](respondWithResult(_0x9af705,null))[_0xe9be('0x1c')](handleError(_0x9af705,null));};exports['createVidaooSession']=function(_0x26fb7c,_0x195da5){var _0x216107=_0x26fb7c[_0xe9be('0x39')]['id'];var _0x254613;var _0x32fdc5;var _0x920e79;return db[_0xe9be('0x3c')][_0xe9be('0x46')]({'where':{'id':_0x216107}})[_0xe9be('0x25')](function(_0x1aecd3){_0x254613=_0x1aecd3;return db[_0xe9be('0x47')][_0xe9be('0x46')]({'where':{'id':_0x1aecd3[_0xe9be('0x48')]},'attributes':['id','vidaooApiKey',_0xe9be('0x49'),_0xe9be('0x4a'),_0xe9be('0x4b'),_0xe9be('0x4c')],'raw':!![]});})[_0xe9be('0x25')](function(_0x27ae20){if(_0x27ae20&&_0x27ae20['vidaooApiKey']&&_0x27ae20['vidaooEscalation']){_0x32fdc5=_0x27ae20;var _0x5baf80={'interaction':{'id':_0x216107},'agent':{'id':_0x26fb7c[_0xe9be('0x37')]['id'],'name':_0x26fb7c['user']['name'],'fullname':_0x26fb7c[_0xe9be('0x37')][_0xe9be('0x4d')],'email':_0x26fb7c[_0xe9be('0x37')]['email']},'contact':_0x26fb7c['body'][_0xe9be('0x2c')],'account':_0x26fb7c['body'][_0xe9be('0x2e')]};var _0x203955={'rejectUnauthorized':![],'method':'POST','url':_0xe9be('0x4e'),'headers':{'X-APIKEY':_0x27ae20['vidaooApiKey']},'body':{'duration':null,'scheduledAt':null,'participants':[_0x26fb7c[_0xe9be('0x37')][_0xe9be('0x4f')]],'buttons':null,'topic':_0x32fdc5[_0xe9be('0x4a')],'note':_[_0xe9be('0x50')](_0x32fdc5['vidaooNote'])?null:getMustacheRender(_0x32fdc5['vidaooNote'],_0x5baf80),'metadata':null},'redirect':_0xe9be('0x51'),'json':!![]};try{if(!_[_0xe9be('0x50')](_0x32fdc5[_0xe9be('0x4c')])){var _0x18326d=getMustacheRender(_0x32fdc5[_0xe9be('0x4c')],_0x5baf80);var _0x69da6e=JSON['parse'](_0x18326d);_0x203955[_0xe9be('0x42')]['metadata']=_0x69da6e;}}catch(_0x4764bd){throw new db[(_0xe9be('0x52'))][(_0xe9be('0x53'))](_0xe9be('0x54'));}return rp(_0x203955);}else{throw new db['Sequelize']['ValidationError'](_0xe9be('0x55'));}})[_0xe9be('0x25')](function(_0x528888){_0x920e79=_0x528888;if(_0x920e79['id']){var _0x4d80a7={'body':_0x920e79[_0xe9be('0x56')],'ChatWebsiteId':_0x32fdc5['id'],'ChatInteractionId':_0x254613['id'],'direction':_0xe9be('0x57'),'UserId':_0x26fb7c[_0xe9be('0x37')]['id']};return db[_0xe9be('0x58')]['create'](_0x4d80a7,{});}else{throw new db['Sequelize'][(_0xe9be('0x53'))](_0xe9be('0x59'));}})['then'](function(){return _0x254613[_0xe9be('0x5a')]({'vidaooSessionId':_0x920e79['id']});})[_0xe9be('0x25')](respondWithResult(_0x195da5,null))[_0xe9be('0x1c')](handleError(_0x195da5,null));};exports[_0xe9be('0x5b')]=function(_0x230091,_0x2a2896){if(_0x230091['body']['id']){delete _0x230091[_0xe9be('0x42')]['id'];}return db[_0xe9be('0x3c')][_0xe9be('0x44')]({'where':{'id':_0x230091['params']['id']},'include':[{'model':db[_0xe9be('0x5c')],'as':'Contact'}]})[_0xe9be('0x25')](handleEntityNotFound(_0x2a2896,null))[_0xe9be('0x25')](saveUpdates(_0x230091[_0xe9be('0x42')],null))['then'](respondWithResult(_0x2a2896,null))[_0xe9be('0x1c')](handleError(_0x2a2896,null));};exports[_0xe9be('0x5d')]=function(_0x19d0a7,_0x23105c){if(_0x19d0a7[_0xe9be('0x42')]['id']){delete _0x19d0a7[_0xe9be('0x42')]['id'];}return db[_0xe9be('0x3c')]['find']({'where':{'id':_0x19d0a7['params']['id']}})['then'](function(_0x4bf2fe){if(!_0x4bf2fe){logger[_0xe9be('0x19')]('abandonInteraction,\x20%s,\x20%s,\x20%s',_0xe9be('0x5d'),0x194,'entity\x20not\x20found');_0x23105c[_0xe9be('0x1d')](0x194);}else{if(_0x4bf2fe[_0xe9be('0x5e')]){throw new db['Sequelize'][(_0xe9be('0x53'))](_0xe9be('0x5f'));}}return _0x4bf2fe;})['then'](function(_0x181320){if(_0x181320){return _0x181320[_0xe9be('0x43')]({'closed':_0x19d0a7[_0xe9be('0x42')]['closed'],'disposition':_0x19d0a7[_0xe9be('0x42')][_0xe9be('0x60')]})['then'](function(_0x109ada){return _0x109ada;});}})[_0xe9be('0x25')](function(){return respondWithRpcPromise(_0xe9be('0x61'),_0xe9be('0x5d'),_0x19d0a7[_0xe9be('0x42')],client9004);})[_0xe9be('0x25')](respondWithResult(_0x23105c,null))[_0xe9be('0x1c')](handleError(_0x23105c,null));};exports['attachmentUpload']=function(_0x271284,_0x399b99){_0x271284[_0xe9be('0x42')][_0xe9be('0x28')]=_0x271284[_0xe9be('0x62')][_0xe9be('0x63')];_0x271284[_0xe9be('0x42')][_0xe9be('0x64')]=_0x271284[_0xe9be('0x62')]['filename'];_0x271284[_0xe9be('0x42')][_0xe9be('0x32')]=_0x271284[_0xe9be('0x62')][_0xe9be('0x65')];return db['Attachment'][_0xe9be('0x41')](_0x271284[_0xe9be('0x42')])[_0xe9be('0x25')](respondWithResult(_0x399b99,0xc9))['catch'](handleError(_0x399b99,null));};exports[_0xe9be('0x66')]=function(_0x3de749,_0x3e10b3){return db[_0xe9be('0x3c')]['findOne']({'where':{'id':_0x3de749['params']['id']},'raw':!![]})[_0xe9be('0x25')](handleEntityNotFound(_0x3e10b3,null))['then'](function(_0x39e92e){if(_0x39e92e){if(_0x39e92e[_0xe9be('0x67')]){return _0x3e10b3[_0xe9be('0x1e')](0x193)[_0xe9be('0x1f')]({'status':0x193,'message':_0xe9be('0x68')});}return db[_0xe9be('0x69')][_0xe9be('0x46')]({'where':{'id':_0x3de749[_0xe9be('0x36')]['attachId']},'raw':!![]})[_0xe9be('0x25')](handleEntityNotFound(_0x3e10b3,null));}})['then'](function(_0x359067){if(_0x359067){var _0x373de9=_0x359067[_0xe9be('0x6a')]!==null;var _0x2ee627=path[_0xe9be('0x6b')](config[_0xe9be('0x6c')],_0xe9be('0x6d'));if(_0x373de9){_0x2ee627=path['join'](_0x2ee627,_0xe9be('0x6e'));}var _0x438148=path[_0xe9be('0x6b')](_0x2ee627,_0x359067[_0xe9be('0x64')]);return _0x3e10b3[_0xe9be('0x6f')](_0x438148);}})[_0xe9be('0x1c')](handleError(_0x3e10b3,null));};exports['close']=function(_0x46a5ff,_0x1817d6){var _0x283da4=null;var _0x34fef3=null;var _0x52d1d7=null;if(_0x46a5ff[_0xe9be('0x42')]['id']){delete _0x46a5ff[_0xe9be('0x42')]['id'];}if(_0x46a5ff[_0xe9be('0x42')][_0xe9be('0x70')]){_0x52d1d7=path[_0xe9be('0x6b')](config[_0xe9be('0x6c')],_0xe9be('0x71'),util['format'](_0xe9be('0x72'),Date[_0xe9be('0x73')]()));_0x46a5ff['body'][_0xe9be('0x74')]=_0x52d1d7;}return db['ChatInteraction'][_0xe9be('0x44')]({'where':{'id':_0x46a5ff[_0xe9be('0x39')]['id']},'include':[{'model':db[_0xe9be('0x58')],'as':_0xe9be('0x75'),'include':[{'model':db[_0xe9be('0x76')],'as':'User'}]}]})[_0xe9be('0x25')](handleEntityNotFound(_0x1817d6,null))['then'](saveUpdates(_0x46a5ff[_0xe9be('0x42')],null))[_0xe9be('0x25')](function(_0x4a7409){if(_0x4a7409){_0x283da4=_0x4a7409;return db[_0xe9be('0x47')][_0xe9be('0x44')]({'where':{'id':_0x283da4[_0xe9be('0x48')]}});}})[_0xe9be('0x25')](function(_0x4e317d){if(_0x4e317d){_0x34fef3=_0x4e317d;return db[_0xe9be('0x5c')]['find']({'where':{'id':_0x283da4[_0xe9be('0x77')]}});}})[_0xe9be('0x25')](function(_0x4d22fa){if(_0x4d22fa){if(_0x52d1d7){var _0x2bdd9f=null;for(var _0x3e9acb=0x1;_0x3e9acb<_0x283da4[_0xe9be('0x75')][_0xe9be('0x78')];++_0x3e9acb){_0x2bdd9f=_0x283da4[_0xe9be('0x75')][_0x3e9acb];var _0x25ea06=_0x2bdd9f[_0xe9be('0x5e')]?util[_0xe9be('0x79')](_0xe9be('0x7a'),_0x34fef3['agentAlias'],_0x2bdd9f[_0xe9be('0x5e')]):_0xe9be('0x7b');var _0xb97a23=_0x46a5ff[_0xe9be('0x42')][_0xe9be('0x7c')]||util[_0xe9be('0x79')](_0xe9be('0x7a'),_0xe9be('0x7d'),_0x2bdd9f[_0xe9be('0x77')]);switch(_0x34fef3[_0xe9be('0x7e')]){case'website_alias':_0x25ea06=_0x2bdd9f[_0xe9be('0x5e')]?util['format'](_0xe9be('0x7a'),_0x34fef3[_0xe9be('0x7f')],_0x2bdd9f[_0xe9be('0x5e')]):_0xe9be('0x7b');break;case'agent_alias':_0x25ea06=_0x2bdd9f['UserId']?_0x2bdd9f[_0xe9be('0x76')][_0xe9be('0x80')]||_0x2bdd9f['User'][_0xe9be('0x4d')]:_0xe9be('0x7b');break;case _0xe9be('0x81'):_0x25ea06=_0x2bdd9f[_0xe9be('0x5e')]?_0x2bdd9f[_0xe9be('0x76')][_0xe9be('0x4d')]:_0xe9be('0x7b');break;default:_0x25ea06=_0x2bdd9f[_0xe9be('0x5e')]?util['format'](_0xe9be('0x7a'),_0x34fef3[_0xe9be('0x7f')],_0x2bdd9f[_0xe9be('0x5e')]):'System';}var _0x1be108=util[_0xe9be('0x79')]('[%s]\x20%s:\x20%s\x0a',moment(_0x2bdd9f['createdAt'])[_0xe9be('0x79')](_0xe9be('0x82')),_0x2bdd9f['direction']==='in'?_0xb97a23:_0x25ea06,_0x2bdd9f['body']);if(!_0x2bdd9f[_0xe9be('0x83')]){fs[_0xe9be('0x84')](_0x52d1d7,_0x1be108);}}return db[_0xe9be('0x85')]['findOne']({'where':{'service':!![]},'include':[{'model':db[_0xe9be('0x86')],'as':_0xe9be('0x87'),'raw':!![],'include':[{'model':db[_0xe9be('0x88')],'as':'CloudProvider','raw':!![]}]}]});}}})['then'](function(_0x5c1829){if(!_0x5c1829||!_0x5c1829[_0xe9be('0x87')]||!_0x46a5ff[_0xe9be('0x42')])return _0x283da4;var _0x42b7bd=_0x5c1829[_0xe9be('0x89')]();return respondWithRpcPromise(_0xe9be('0x8a'),_0xe9be('0x8b'),{'account':_0x42b7bd,'message':{'from':util[_0xe9be('0x79')]('\x22%s\x22\x20<%s>',_0x5c1829[_0xe9be('0x28')],_0x5c1829[_0xe9be('0x4f')]||_0x5c1829[_0xe9be('0x87')][_0xe9be('0x37')]),'to':_0x46a5ff[_0xe9be('0x42')][_0xe9be('0x70')],'subject':_0xe9be('0x8c'),'text':util[_0xe9be('0x79')](_0xe9be('0x8d'),_0x46a5ff[_0xe9be('0x42')][_0xe9be('0x70')]),'attachments':[{'path':_0x52d1d7}]}})[_0xe9be('0x25')](function(){return _0x283da4;})[_0xe9be('0x1c')](function(_0x2380b2){logger[_0xe9be('0x19')](_0x2380b2);});})['then'](respondWithStatusCode(_0x1817d6,0xc8))[_0xe9be('0x1c')](handleError(_0x1817d6,null));};exports[_0xe9be('0x8e')]=function(_0x1f8a49,_0x2a575a){return db[_0xe9be('0x58')][_0xe9be('0x44')]({'where':{'id':_0x1f8a49[_0xe9be('0x39')]['id']}})[_0xe9be('0x25')](handleEntityNotFound(_0x2a575a,null))[_0xe9be('0x25')](function(_0x557ced){if(_0x557ced){return _0x557ced['addMessage'](_0x1f8a49[_0xe9be('0x42')][_0xe9be('0x8f')],_[_0xe9be('0x90')](_0x1f8a49[_0xe9be('0x42')],[_0xe9be('0x8f'),'id'])||{});}})[_0xe9be('0x25')](respondWithResult(_0x2a575a,null))['catch'](handleError(_0x2a575a,null));};exports[_0xe9be('0x91')]=function(_0x40b1c4,_0x3a5408){var _0x111f85={'raw':![],'where':{}};var _0x2cc804={};var _0x490a2d={'count':0x0,'rows':[]};return db[_0xe9be('0x3c')][_0xe9be('0x46')]({'where':{'id':_0x40b1c4[_0xe9be('0x39')]['id']}})['then'](handleEntityNotFound(_0x3a5408,null))['then'](function(_0x527008){if(_0x527008){_0x2cc804[_0xe9be('0x3a')]=_[_0xe9be('0x3b')](db[_0xe9be('0x58')]['rawAttributes']);_0x2cc804[_0xe9be('0x36')]=_['keys'](_0x40b1c4[_0xe9be('0x36')]);_0x2cc804[_0xe9be('0x92')]=_['intersection'](_0x2cc804['model'],_0x2cc804['query']);_0x111f85['attributes']=_['intersection'](_0x2cc804['model'],qs[_0xe9be('0x3e')](_0x40b1c4['query'][_0xe9be('0x3e')]));_0x111f85[_0xe9be('0x3d')]=_0x111f85[_0xe9be('0x3d')][_0xe9be('0x78')]?_0x111f85[_0xe9be('0x3d')]:_0x2cc804[_0xe9be('0x3a')];if(!_0x40b1c4[_0xe9be('0x36')][_0xe9be('0x93')](_0xe9be('0x94'))){_0x111f85[_0xe9be('0x22')]=qs[_0xe9be('0x22')](_0x40b1c4[_0xe9be('0x36')]['limit']);_0x111f85['offset']=qs[_0xe9be('0x20')](_0x40b1c4[_0xe9be('0x36')][_0xe9be('0x20')]);}_0x111f85[_0xe9be('0x95')]=qs['sort'](_0x40b1c4[_0xe9be('0x36')][_0xe9be('0x96')]);_0x111f85[_0xe9be('0x97')]=qs['filters'](_['pick'](_0x40b1c4[_0xe9be('0x36')],_0x2cc804[_0xe9be('0x92')]));_0x111f85[_0xe9be('0x97')][_0xe9be('0x98')]=_0x527008['id'];if(_0x40b1c4[_0xe9be('0x36')][_0xe9be('0x99')]){_0x111f85[_0xe9be('0x97')]=_[_0xe9be('0x2b')](_0x111f85[_0xe9be('0x97')],{'$or':_[_0xe9be('0x2f')](_0x111f85['attributes'],function(_0x3860f7){var _0x42feed={};_0x42feed[_0x3860f7]={'$like':'%'+_0x40b1c4['query'][_0xe9be('0x99')]+'%'};return _0x42feed;})});}if(_0x40b1c4[_0xe9be('0x36')]['$gte']){var _0x4aad23=_0x40b1c4[_0xe9be('0x36')][_0xe9be('0x9a')][_0xe9be('0x9b')](',');var _0x5e603c={};_0x5e603c[_0x4aad23[0x0]]={'$gte':moment(_0x4aad23[0x1])[_0xe9be('0x79')](_0xe9be('0x9c'))};_0x111f85['where']=_[_0xe9be('0x2b')](_0x111f85['where'],_0x5e603c);}_0x111f85=_[_0xe9be('0x2b')]({},_0x111f85,_0x40b1c4['options']);return db[_0xe9be('0x58')]['count']({'where':_0x111f85['where']})[_0xe9be('0x25')](function(_0x1b1336){_0x490a2d[_0xe9be('0x23')]=_0x1b1336;if(_0x40b1c4[_0xe9be('0x36')][_0xe9be('0x9d')]){_0x111f85[_0xe9be('0x3f')]=[{'all':!![]}];}return db[_0xe9be('0x58')][_0xe9be('0x34')](_0x111f85);})[_0xe9be('0x25')](function(_0x6f8896){_0x490a2d['rows']=_0x6f8896;return _0x490a2d;});}})[_0xe9be('0x25')](respondWithFilteredResult(_0x3a5408,_0x111f85))[_0xe9be('0x1c')](handleError(_0x3a5408,null));};exports[_0xe9be('0x9e')]=function(_0xcca327,_0x3df9ff){var _0x45da1d={'where':{}},_0x28a981={},_0x48c857={'count':0x0,'rows':[]};return db[_0xe9be('0x3c')][_0xe9be('0x46')]({'where':{'id':_0xcca327[_0xe9be('0x39')]['id']}})[_0xe9be('0x25')](handleEntityNotFound(_0x3df9ff,null))[_0xe9be('0x25')](function(_0x171a44){if(_0x171a44){_0x28a981[_0xe9be('0x3a')]=_['keys'](db[_0xe9be('0x58')][_0xe9be('0x30')]);_0x28a981['query']=_['keys'](_0xcca327[_0xe9be('0x36')]);_0x28a981[_0xe9be('0x92')]=_[_0xe9be('0x9f')](_0x28a981[_0xe9be('0x3a')],_0x28a981[_0xe9be('0x36')]);_0x45da1d[_0xe9be('0x3d')]=_[_0xe9be('0x9f')](_0x28a981[_0xe9be('0x3a')],qs[_0xe9be('0x3e')](_0xcca327[_0xe9be('0x36')][_0xe9be('0x3e')]));_0x45da1d[_0xe9be('0x3d')]=_0x45da1d[_0xe9be('0x3d')][_0xe9be('0x78')]?_0x45da1d[_0xe9be('0x3d')]:_0x28a981['model'];if(!_0xcca327[_0xe9be('0x36')][_0xe9be('0x93')](_0xe9be('0x94'))){_0x45da1d['limit']=qs[_0xe9be('0x22')](_0xcca327[_0xe9be('0x36')][_0xe9be('0x22')]);_0x45da1d[_0xe9be('0x20')]=qs['offset'](_0xcca327['query'][_0xe9be('0x20')]);}_0x45da1d[_0xe9be('0x95')]=qs[_0xe9be('0x96')](_0xcca327[_0xe9be('0x36')][_0xe9be('0x96')]);_0x45da1d['where']=qs['filters'](_[_0xe9be('0xa0')](_0xcca327[_0xe9be('0x36')],_0x28a981[_0xe9be('0x92')]));_0x45da1d[_0xe9be('0x97')][_0xe9be('0x98')]=_0x171a44['id'];if(_0xcca327[_0xe9be('0x36')][_0xe9be('0x99')]){_0x45da1d[_0xe9be('0x97')]=_[_0xe9be('0x2b')](_0x45da1d[_0xe9be('0x97')],{'$or':_[_0xe9be('0x2f')](_0x45da1d[_0xe9be('0x3d')],function(_0x4ce00b){var _0x47eb83={};_0x47eb83[_0x4ce00b]={'$like':'%'+_0xcca327['query'][_0xe9be('0x99')]+'%'};return _0x47eb83;})});}_0x45da1d['where'][_0xe9be('0x83')]=![];if(_0xcca327[_0xe9be('0x36')]['id']){_0x45da1d['where']['id']={'$gt':_0xcca327['query']['id']};}_0x45da1d=_[_0xe9be('0x2b')]({},_0x45da1d,_0xcca327['options']);return db[_0xe9be('0x58')][_0xe9be('0x23')]({'where':_0x45da1d[_0xe9be('0x97')]})[_0xe9be('0x25')](function(_0x242e11){_0x48c857['count']=_0x242e11;_0x45da1d[_0xe9be('0x3f')]=[];if(_0xcca327['query'][_0xe9be('0xa1')]){_0x45da1d['include'][_0xe9be('0xa2')]({'model':db['User'],'as':_0xe9be('0x76'),'attributes':['id',_0xe9be('0x4d'),'alias']});}if(_0xcca327[_0xe9be('0x36')][_0xe9be('0x9d')]){_0x45da1d[_0xe9be('0x3f')]=[{'all':!![]}];}return db[_0xe9be('0x58')][_0xe9be('0x34')](_0x45da1d);})['then'](function(_0x1cbf86){_0x48c857[_0xe9be('0xa3')]=_0x1cbf86;return _0x48c857;});}})[_0xe9be('0x25')](respondWithFilteredResult(_0x3df9ff,_0x45da1d))[_0xe9be('0x1c')](handleError(_0x3df9ff,null));};exports[_0xe9be('0xa4')]=function(_0x34d341,_0x5f1791){return db['ChatInteraction'][_0xe9be('0x44')]({'where':{'id':_0x34d341['params']['id']}})['then'](handleEntityNotFound(_0x5f1791,null))['then'](function(_0x407ac5){if(_0x407ac5){return _0x407ac5['setTags'](_0x34d341['body'][_0xe9be('0x8f')],_[_0xe9be('0x90')](_0x34d341[_0xe9be('0x42')],['ids','id'])||{})['spread'](function(){return db[_0xe9be('0xa5')][_0xe9be('0x34')]({'attributes':['id',_0xe9be('0x28'),_0xe9be('0xa6')],'where':{'id':_0x34d341[_0xe9be('0x42')][_0xe9be('0x8f')]}});})[_0xe9be('0x25')](function(_0x189c83){socket[_0xe9be('0xa7')](_0xe9be('0xa8'),{'id':Number(_0x34d341['params']['id']),'tags':_0x189c83||[]});return{'id':Number(_0x34d341['params']['id']),'tags':_0x189c83||[]};});}})[_0xe9be('0x25')](respondWithResult(_0x5f1791,null))[_0xe9be('0x1c')](handleError(_0x5f1791,null));};exports[_0xe9be('0xa9')]=function(_0x760bbf,_0x29994a){return db[_0xe9be('0x3c')][_0xe9be('0x44')]({'where':{'id':_0x760bbf['params']['id']}})[_0xe9be('0x25')](handleEntityNotFound(_0x29994a,null))['then'](function(_0x174169){if(_0x174169){return _0x174169['removeTags'](_0x760bbf[_0xe9be('0x36')]['ids']);}})[_0xe9be('0x25')](respondWithStatusCode(_0x29994a,null))[_0xe9be('0x1c')](handleError(_0x29994a,null));};exports['download']=function(_0x5207e1,_0xaf0365){var _0x4b1e97=moment()['unix']()[_0xe9be('0xaa')]();var _0x3fcb9e=path['join'](config[_0xe9be('0x6c')],_0xe9be('0xab'),_0xe9be('0xac'),_0xe9be('0xad'));var _0x666c1b=path[_0xe9be('0x6b')](config[_0xe9be('0x6c')],_0xe9be('0xab'),_0xe9be('0xac'),_0xe9be('0xae'));var _0x2dd7b6=path[_0xe9be('0x6b')](_0x3fcb9e,_0x4b1e97);var _0x56b88a=util[_0xe9be('0x79')](_0xe9be('0xaf'),_0x5207e1['params']['id'],_0x4b1e97);var _0x3d4ef2=path[_0xe9be('0x6b')](_0x3fcb9e,_0x56b88a);var _0x5665dc=[];_0x5665dc[_0xe9be('0xa2')]({'model':db[_0xe9be('0x76')],'as':'User','attributes':['id','fullname'],'raw':!![]});_0x5665dc[_0xe9be('0xa2')]({'model':db['CmContact'],'as':_0xe9be('0xb0'),'attributes':['id',_0xe9be('0xb1'),_0xe9be('0xb2')],'raw':!![]});if(_0x5207e1[_0xe9be('0x36')][_0xe9be('0xae')]){_0x5665dc[_0xe9be('0xa2')]({'model':db[_0xe9be('0x69')],'as':'Attachment','raw':!![]});}var _0x26f1f3=[{'model':db[_0xe9be('0x58')],'as':_0xe9be('0x75'),'attributes':['id',_0xe9be('0x42'),'createdAt',_0xe9be('0xb3'),_0xe9be('0x83'),_0xe9be('0xb4')],'include':_0x5665dc}];_0x26f1f3[_0xe9be('0xa2')]({'model':db['ChatWebsite'],'as':_0xe9be('0xb5'),'attributes':['id',_0xe9be('0x28')]});_0x26f1f3[_0xe9be('0xa2')]({'model':db[_0xe9be('0x76')],'as':_0xe9be('0xb6'),'attributes':['id',_0xe9be('0x4d')]});return db['ChatInteraction']['find']({'where':{'id':_0x5207e1[_0xe9be('0x39')]['id']},'include':_0x26f1f3})[_0xe9be('0x25')](handleEntityNotFound(_0xaf0365,null))['then'](function(_0xcaa15){if(_0xcaa15){var _0x1cca19=_0xcaa15['get']({'plain':!![]});fs['mkdirSync'](_0x2dd7b6);var _0x4afd0c={'channel':_0xe9be('0xb7'),'account':_0x1cca19[_0xe9be('0xb5')]['name'],'agent':_0x1cca19[_0xe9be('0xb6')]?_0x1cca19[_0xe9be('0xb6')][_0xe9be('0x4d')]:'N.A.','createdAt':moment(_0x1cca19[_0xe9be('0xb8')])[_0xe9be('0x79')](_0xe9be('0x9c'))[_0xe9be('0xaa')](),'closedAt':_0x1cca19[_0xe9be('0x67')]?moment(_0x1cca19[_0xe9be('0xb9')])[_0xe9be('0x79')](_0xe9be('0x9c'))[_0xe9be('0xaa')]():'','disposition':_0x1cca19['disposition'],'chatInfo':{'browser':_0x1cca19[_0xe9be('0xba')],'os':_0x1cca19[_0xe9be('0xbb')],'referer':_0x1cca19[_0xe9be('0xbc')],'customerIp':_0x1cca19[_0xe9be('0xbd')],'customerPort':_0x1cca19[_0xe9be('0xbe')]?_0x1cca19['customerPort']:'N.A.'},'messages':_(_0x1cca19[_0xe9be('0x75')])[_0xe9be('0xbf')]()[_0xe9be('0x99')]({'secret':![]})[_0xe9be('0x2f')](function(_0x4aa491){if(_0x4aa491['Attachment']){var _0x3c6cb1=path[_0xe9be('0x6b')](_0x666c1b,_0x4aa491['Attachment'][_0xe9be('0x64')]);if(fs[_0xe9be('0xc0')](_0x3c6cb1)){fs[_0xe9be('0xc1')](_0x3c6cb1)[_0xe9be('0xc2')](fs[_0xe9be('0xc3')](path['join'](_0x2dd7b6,_0x4aa491[_0xe9be('0x69')][_0xe9be('0x64')])));}}return{'date':moment(_0x4aa491['createdAt'])[_0xe9be('0x79')]('YYYY-MM-DD\x20HH:mm:ss')[_0xe9be('0xaa')](),'sender':_0x4aa491['direction']===_0xe9be('0x57')?_0x4aa491[_0xe9be('0x76')]?_0x4aa491[_0xe9be('0x76')][_0xe9be('0x4d')]:'System':_0x4aa491[_0xe9be('0xb0')][_0xe9be('0xb1')]+(_0x4aa491[_0xe9be('0xb0')][_0xe9be('0xb2')]?'\x20'+_0x4aa491[_0xe9be('0xb0')]['lastName']:''),'body':_0x4aa491[_0xe9be('0x69')]?_0x4aa491['Attachment'][_0xe9be('0x64')]:_0x4aa491['body'],'direction':_0x4aa491[_0xe9be('0xb3')]==='out'?'A':'C','secret':_0x4aa491[_0xe9be('0x83')],'read':_0x4aa491[_0xe9be('0xb4')],'attachment':_0x4aa491[_0xe9be('0x69')]};})['value']()};return ejs[_0xe9be('0xc4')](path[_0xe9be('0x6b')](config[_0xe9be('0x6c')],'server','views','downloadInteraction.ejs'),{'interaction':_0x4afd0c})[_0xe9be('0x25')](function(_0x4b94db){var _0x3258ec=path[_0xe9be('0x6b')](_0x2dd7b6,_0xe9be('0xc5')+_0x1cca19['id']+'-'+_0x4b1e97+_0xe9be('0xc6'));var _0x1291a7={'path':_0x3258ec,'channel':'Chat','interactionId':_0x1cca19['id']};return pdf['createPdfFromHTML'](_0x4b94db,_0x1291a7);})[_0xe9be('0x25')](function(){return new Promise(function(_0x11ebda,_0x4f7e05){zipdir(_0x2dd7b6,{'saveTo':_0x3d4ef2},function(_0x2ce988,_0x52843d){if(_0x2ce988)return _0x4f7e05(_0x2ce988);return _0x11ebda(_0x52843d);});})['then'](function(){return new BPromise(function(_0x577e8e,_0x26aa24){rimraf(_0x2dd7b6,function(_0xdf7ca9){if(_0xdf7ca9)_0x26aa24(_0xdf7ca9);return _0x577e8e();});});})['then'](function(){return _0xaf0365[_0xe9be('0x6f')](_0x3d4ef2,_0x56b88a,function(_0x5eddad){if(_0x5eddad){logger[_0xe9be('0x19')]('err',_0x5eddad);}else{fs['unlinkSync'](_0x3d4ef2);}});});});}else{return _0xaf0365[_0xe9be('0x1d')](0xc8);}})[_0xe9be('0x1c')](handleError(_0xaf0365,null));};
\ No newline at end of file
index 7b5e871..34ecf32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ed5=['remove','getUsers','then','setDataValue','Users','map','findAll','emit','catch','hook','exports','../../mysqldb','ChatInteraction','ChatMessage','setMaxListeners','update'];(function(_0x4d613c,_0x55f220){var _0x301fe3=function(_0x5eec0b){while(--_0x5eec0b){_0x4d613c['push'](_0x4d613c['shift']());}};_0x301fe3(++_0x55f220);}(_0x1ed5,0xcb));var _0x51ed=function(_0x2e5249,_0xa4eed1){_0x2e5249=_0x2e5249-0x0;var _0x3f59fc=_0x1ed5[_0x2e5249];return _0x3f59fc;};'use strict';var EventEmitter=require('events');var ChatInteraction=require(_0x51ed('0x0'))['db'][_0x51ed('0x1')];var ChatMessage=require(_0x51ed('0x0'))['db'][_0x51ed('0x2')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x51ed('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x51ed('0x4'),'afterDestroy':_0x51ed('0x5')};function emitEvent(_0x438e5d){return function(_0x11aa69,_0x294540,_0xe90eab){_0x11aa69[_0x51ed('0x6')]({'attributes':['id'],'raw':!![]})[_0x51ed('0x7')](function(_0x780cd7){_0x11aa69[_0x51ed('0x8')](_0x51ed('0x9'),_0x780cd7[_0x51ed('0xa')](function(_0x2f5034){return{'id':_0x2f5034['id']};}));return ChatMessage[_0x51ed('0xb')]({'where':{'ChatInteractionId':_0x11aa69['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x59c33d){_0x11aa69[_0x51ed('0x8')]('unreadMessages',_0x59c33d['length']);ChatInteractionEvents['emit'](_0x438e5d+':'+_0x11aa69['id'],_0x11aa69);ChatInteractionEvents[_0x51ed('0xc')](_0x438e5d,_0x11aa69);_0xe90eab(null);})[_0x51ed('0xd')](_0xe90eab(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInteraction[_0x51ed('0xe')](e,emitEvent(event));}}module[_0x51ed('0xf')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x7a58=['findAll','emit','catch','exports','events','ChatInteraction','../../mysqldb','ChatMessage','setMaxListeners','save','update','getUsers','Users'];(function(_0x407d38,_0x34fb66){var _0x5e063c=function(_0xbce37){while(--_0xbce37){_0x407d38['push'](_0x407d38['shift']());}};_0x5e063c(++_0x34fb66);}(_0x7a58,0x149));var _0x87a5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7a58[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x87a5('0x0'));var ChatInteraction=require('../../mysqldb')['db'][_0x87a5('0x1')];var ChatMessage=require(_0x87a5('0x2'))['db'][_0x87a5('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x87a5('0x4')](0x0);var events={'afterCreate':_0x87a5('0x5'),'afterUpdate':_0x87a5('0x6'),'afterDestroy':'remove'};function emitEvent(_0x2d58fc){return function(_0x38ed24,_0x16ba42,_0x1da779){_0x38ed24[_0x87a5('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x5a009b){_0x38ed24['setDataValue'](_0x87a5('0x8'),_0x5a009b['map'](function(_0x569b06){return{'id':_0x569b06['id']};}));return ChatMessage[_0x87a5('0x9')]({'where':{'ChatInteractionId':_0x38ed24['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x51b1c2){_0x38ed24['setDataValue']('unreadMessages',_0x51b1c2['length']);ChatInteractionEvents[_0x87a5('0xa')](_0x2d58fc+':'+_0x38ed24['id'],_0x38ed24);ChatInteractionEvents['emit'](_0x2d58fc,_0x38ed24);_0x1da779(null);})[_0x87a5('0xb')](_0x1da779(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module[_0x87a5('0xc')]=ChatInteractionEvents;
\ No newline at end of file
index ff86b4f..dd9a2fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2390=['util','../../config/logger','api','request-promise','rimraf','./chatInteraction.attributes','define','changed','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci'];(function(_0x5b6cf1,_0x32fdcd){var _0x46278c=function(_0x53fd9b){while(--_0x53fd9b){_0x5b6cf1['push'](_0x5b6cf1['shift']());}};_0x46278c(++_0x32fdcd);}(_0x2390,0x1ec));var _0x0239=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0x2390[_0x376b45];return _0x2341b3;};'use strict';var _=require('lodash');var util=require(_0x0239('0x0'));var logger=require(_0x0239('0x1'))(_0x0239('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x0239('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0239('0x4'));var config=require('../../config/environment');var attributes=require(_0x0239('0x5'));module['exports']=function(_0x13afdd,_0x1776ea){return _0x13afdd[_0x0239('0x6')]('ChatInteraction',attributes,{'tableName':'chat_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x37d5b2,_0x54cf2c,_0x1e2529){if(_0x37d5b2[_0x0239('0x7')]('closed')){_0x37d5b2['closedAt']=moment()[_0x0239('0x8')](_0x0239('0x9'));}_0x1e2529(null,_0x37d5b2);}},'charset':_0x0239('0xa'),'collate':_0x0239('0xb')});};
\ No newline at end of file
+var _0x86b0=['lodash','util','api','moment','path','rimraf','./chatInteraction.attributes','exports','define','ChatInteraction','chat_interactions','changed','closed','closedAt','format','utf8mb4_unicode_ci'];(function(_0x3ed7a3,_0x1ad8ac){var _0x20ab63=function(_0x367ac3){while(--_0x367ac3){_0x3ed7a3['push'](_0x3ed7a3['shift']());}};_0x20ab63(++_0x1ad8ac);}(_0x86b0,0xc0));var _0x086b=function(_0x5dd307,_0x5b641e){_0x5dd307=_0x5dd307-0x0;var _0x464899=_0x86b0[_0x5dd307];return _0x464899;};'use strict';var _=require(_0x086b('0x0'));var util=require(_0x086b('0x1'));var logger=require('../../config/logger')(_0x086b('0x2'));var moment=require(_0x086b('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x086b('0x4'));var rimraf=require(_0x086b('0x5'));var config=require('../../config/environment');var attributes=require(_0x086b('0x6'));module[_0x086b('0x7')]=function(_0x2228b9,_0xf647b4){return _0x2228b9[_0x086b('0x8')](_0x086b('0x9'),attributes,{'tableName':_0x086b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x19d8cd,_0x216240,_0x429222){if(_0x19d8cd[_0x086b('0xb')](_0x086b('0xc'))){_0x19d8cd[_0x086b('0xd')]=moment()[_0x086b('0xe')]('YYYY-MM-DD\x20HH:mm:ss');}_0x429222(null,_0x19d8cd);}},'charset':'utf8mb4','collate':_0x086b('0xf')});};
\ No newline at end of file
index 6d8fbb9..c52a540 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7fe=['info','result','catch','body','options','raw','where','attributes','limit','UpdateChatInteraction','AddTagsToChatInteraction','ChatInteraction','find','addTags','ids','omit','AddTags','stringify','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','register','request','then','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x47a7d0,_0x4e182d){var _0xb9bd08=function(_0x588ee2){while(--_0x588ee2){_0x47a7d0['push'](_0x47a7d0['shift']());}};_0xb9bd08(++_0x4e182d);}(_0xa7fe,0xc2));var _0xea7f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa7fe[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xea7f('0x0'));var moment=require(_0xea7f('0x1'));var BPromise=require(_0xea7f('0x2'));var rs=require(_0xea7f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xea7f('0x4'))['db'];var utils=require(_0xea7f('0x5'));var logger=require(_0xea7f('0x6'))(_0xea7f('0x7'));var config=require(_0xea7f('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xea7f('0x9')][_0xea7f('0xa')]({'port':0x232a});config[_0xea7f('0xb')]=_[_0xea7f('0xc')](config[_0xea7f('0xb')],{'host':_0xea7f('0xd'),'port':0x18eb});var socket=require(_0xea7f('0xe'))(new Redis(config[_0xea7f('0xb')]));require(_0xea7f('0xf'))[_0xea7f('0x10')](socket);function respondWithRpcPromise(_0x5392cb,_0x5a7506,_0x122bc9){return new BPromise(function(_0x2de262,_0x1c8e0b){return client[_0xea7f('0x11')](_0x5392cb,_0x122bc9)[_0xea7f('0x12')](function(_0x1ce8eb){logger['info'](_0xea7f('0x13'),_0x5a7506,_0xea7f('0x14'));logger[_0xea7f('0x15')](_0xea7f('0x16'),_0x5a7506,'request\x20sent',JSON['stringify'](_0x1ce8eb));if(_0x1ce8eb[_0xea7f('0x17')]){if(_0x1ce8eb['error'][_0xea7f('0x18')]===0x1f4){logger[_0xea7f('0x17')](_0xea7f('0x13'),_0x5a7506,_0x1ce8eb[_0xea7f('0x17')][_0xea7f('0x19')]);return _0x1c8e0b(_0x1ce8eb[_0xea7f('0x17')][_0xea7f('0x19')]);}logger[_0xea7f('0x17')](_0xea7f('0x13'),_0x5a7506,_0x1ce8eb[_0xea7f('0x17')][_0xea7f('0x19')]);return _0x2de262(_0x1ce8eb[_0xea7f('0x17')][_0xea7f('0x19')]);}else{logger[_0xea7f('0x1a')]('ChatInteraction,\x20%s,\x20%s',_0x5a7506,_0xea7f('0x14'));_0x2de262(_0x1ce8eb[_0xea7f('0x1b')][_0xea7f('0x19')]);}})[_0xea7f('0x1c')](function(_0x22d69e){logger[_0xea7f('0x17')](_0xea7f('0x13'),_0x5a7506,_0x22d69e);_0x1c8e0b(_0x22d69e);});});}exports['UpdateChatInteraction']=function(_0x3db29c){var _0x175fb0=this;return new Promise(function(_0x4e2730,_0x38e9b1){return db['ChatInteraction']['update'](_0x3db29c[_0xea7f('0x1d')],{'raw':_0x3db29c[_0xea7f('0x1e')]?_0x3db29c[_0xea7f('0x1e')][_0xea7f('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3db29c[_0xea7f('0x1e')]?_0x3db29c[_0xea7f('0x1e')][_0xea7f('0x20')]||null:null,'attributes':_0x3db29c[_0xea7f('0x1e')]?_0x3db29c[_0xea7f('0x1e')][_0xea7f('0x21')]||null:null,'limit':_0x3db29c[_0xea7f('0x1e')]?_0x3db29c[_0xea7f('0x1e')][_0xea7f('0x22')]||null:null})[_0xea7f('0x12')](function(_0x32ce20){logger['info'](_0xea7f('0x23'),_0x3db29c);logger[_0xea7f('0x15')](_0xea7f('0x23'),_0x3db29c,JSON['stringify'](_0x32ce20));_0x4e2730(_0x32ce20);})[_0xea7f('0x1c')](function(_0x49a3c2){logger[_0xea7f('0x17')](_0xea7f('0x23'),_0x49a3c2[_0xea7f('0x19')],_0x3db29c);_0x38e9b1(_0x175fb0[_0xea7f('0x17')](0x1f4,_0x49a3c2[_0xea7f('0x19')]));});});};exports[_0xea7f('0x24')]=function(_0xb6a590){return new Promise(function(_0x15a70d,_0x564ac6){return db[_0xea7f('0x25')][_0xea7f('0x26')]({'where':_0xb6a590[_0xea7f('0x1e')]?_0xb6a590['options'][_0xea7f('0x20')]||null:null})[_0xea7f('0x12')](function(_0x3f6e8b){if(_0x3f6e8b){return _0x3f6e8b[_0xea7f('0x27')](_0xb6a590[_0xea7f('0x1d')][_0xea7f('0x28')],_[_0xea7f('0x29')](_0xb6a590[_0xea7f('0x1d')],[_0xea7f('0x28'),'id'])||{});}})['spread'](function(_0x4ae47e){logger[_0xea7f('0x1a')](_0xea7f('0x2a'),_0xb6a590);logger[_0xea7f('0x15')](_0xea7f('0x2a'),_0xb6a590,JSON[_0xea7f('0x2b')](_0x4ae47e));_0x15a70d(_0x4ae47e);})[_0xea7f('0x1c')](function(_0x3e075f){logger['error'](_0xea7f('0x2a'),_0x3e075f[_0xea7f('0x19')],_0xb6a590);_0x564ac6(_this[_0xea7f('0x17')](0x1f4,_0x3e075f[_0xea7f('0x19')]));});});};
\ No newline at end of file
+var _0x0363=['UpdateChatInteraction','AddTagsToChatInteraction','addTags','ids','spread','AddTags','debug','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./chatInteraction.socket','request','then','ChatInteraction,\x20%s,\x20%s','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','update','body','options','raw','where','attributes','limit'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x0363,0x1bf));var _0x3036=function(_0x495977,_0x107906){_0x495977=_0x495977-0x0;var _0x2105f8=_0x0363[_0x495977];return _0x2105f8;};'use strict';var _=require(_0x3036('0x0'));var util=require(_0x3036('0x1'));var moment=require(_0x3036('0x2'));var BPromise=require('bluebird');var rs=require(_0x3036('0x3'));var fs=require('fs');var Redis=require(_0x3036('0x4'));var db=require(_0x3036('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x3036('0x6'));var config=require(_0x3036('0x7'));var jayson=require(_0x3036('0x8'));var client=jayson[_0x3036('0x9')][_0x3036('0xa')]({'port':0x232a});config[_0x3036('0xb')]=_[_0x3036('0xc')](config[_0x3036('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x3036('0xd'))(new Redis(config[_0x3036('0xb')]));require(_0x3036('0xe'))['register'](socket);function respondWithRpcPromise(_0x44f661,_0x7ccea,_0x3b4d6c){return new BPromise(function(_0xde33a2,_0x608da7){return client[_0x3036('0xf')](_0x44f661,_0x3b4d6c)[_0x3036('0x10')](function(_0xb93dc6){logger['info'](_0x3036('0x11'),_0x7ccea,_0x3036('0x12'));logger['debug'](_0x3036('0x13'),_0x7ccea,_0x3036('0x12'),JSON[_0x3036('0x14')](_0xb93dc6));if(_0xb93dc6[_0x3036('0x15')]){if(_0xb93dc6[_0x3036('0x15')]['code']===0x1f4){logger[_0x3036('0x15')](_0x3036('0x11'),_0x7ccea,_0xb93dc6['error']['message']);return _0x608da7(_0xb93dc6[_0x3036('0x15')]['message']);}logger[_0x3036('0x15')]('ChatInteraction,\x20%s,\x20%s',_0x7ccea,_0xb93dc6['error'][_0x3036('0x16')]);return _0xde33a2(_0xb93dc6[_0x3036('0x15')]['message']);}else{logger[_0x3036('0x17')](_0x3036('0x11'),_0x7ccea,_0x3036('0x12'));_0xde33a2(_0xb93dc6[_0x3036('0x18')][_0x3036('0x16')]);}})[_0x3036('0x19')](function(_0x4f6ca0){logger[_0x3036('0x15')](_0x3036('0x11'),_0x7ccea,_0x4f6ca0);_0x608da7(_0x4f6ca0);});});}exports['UpdateChatInteraction']=function(_0x356901){var _0x50b8be=this;return new Promise(function(_0x1db29a,_0x51d5c1){return db['ChatInteraction'][_0x3036('0x1a')](_0x356901[_0x3036('0x1b')],{'raw':_0x356901[_0x3036('0x1c')]?_0x356901[_0x3036('0x1c')][_0x3036('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x356901[_0x3036('0x1c')]?_0x356901[_0x3036('0x1c')][_0x3036('0x1e')]||null:null,'attributes':_0x356901[_0x3036('0x1c')]?_0x356901['options'][_0x3036('0x1f')]||null:null,'limit':_0x356901[_0x3036('0x1c')]?_0x356901[_0x3036('0x1c')][_0x3036('0x20')]||null:null})['then'](function(_0x326042){logger[_0x3036('0x17')]('UpdateChatInteraction',_0x356901);logger['debug'](_0x3036('0x21'),_0x356901,JSON[_0x3036('0x14')](_0x326042));_0x1db29a(_0x326042);})[_0x3036('0x19')](function(_0x555df2){logger[_0x3036('0x15')](_0x3036('0x21'),_0x555df2[_0x3036('0x16')],_0x356901);_0x51d5c1(_0x50b8be[_0x3036('0x15')](0x1f4,_0x555df2[_0x3036('0x16')]));});});};exports[_0x3036('0x22')]=function(_0x2b79b3){return new Promise(function(_0x23dc8c,_0x14f0eb){return db['ChatInteraction']['find']({'where':_0x2b79b3[_0x3036('0x1c')]?_0x2b79b3[_0x3036('0x1c')][_0x3036('0x1e')]||null:null})[_0x3036('0x10')](function(_0x60fbc8){if(_0x60fbc8){return _0x60fbc8[_0x3036('0x23')](_0x2b79b3['body'][_0x3036('0x24')],_['omit'](_0x2b79b3[_0x3036('0x1b')],[_0x3036('0x24'),'id'])||{});}})[_0x3036('0x25')](function(_0x4ab684){logger[_0x3036('0x17')](_0x3036('0x26'),_0x2b79b3);logger[_0x3036('0x27')](_0x3036('0x26'),_0x2b79b3,JSON[_0x3036('0x14')](_0x4ab684));_0x23dc8c(_0x4ab684);})['catch'](function(_0x4e1a06){logger[_0x3036('0x15')](_0x3036('0x26'),_0x4e1a06[_0x3036('0x16')],_0x2b79b3);_0x14f0eb(_this[_0x3036('0x15')](0x1f4,_0x4e1a06[_0x3036('0x16')]));});});};
\ No newline at end of file
index d80f28f..9bc643d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x255c=['length','./chatInteraction.events','update','removeListener'];(function(_0x5159fd,_0x4b760b){var _0x409bae=function(_0x30f5f0){while(--_0x30f5f0){_0x5159fd['push'](_0x5159fd['shift']());}};_0x409bae(++_0x4b760b);}(_0x255c,0x1bd));var _0xc255=function(_0x5b1696,_0xb76345){_0x5b1696=_0x5b1696-0x0;var _0x3ecd3e=_0x255c[_0x5b1696];return _0x3ecd3e;};'use strict';var ChatInteractionEvents=require(_0xc255('0x0'));var events=['save','remove',_0xc255('0x1')];function createListener(_0x18c0f6,_0x50327f){return function(_0x40e7ab){_0x50327f['emit'](_0x18c0f6,_0x40e7ab);};}function removeListener(_0x1bf010,_0x1fa14c){return function(){ChatInteractionEvents[_0xc255('0x2')](_0x1bf010,_0x1fa14c);};}exports['register']=function(_0x470ab0){for(var _0x4b3198=0x0,_0x17b60f=events[_0xc255('0x3')];_0x4b3198<_0x17b60f;_0x4b3198++){var _0x4ead55=events[_0x4b3198];var _0x57e0ed=createListener('chatInteraction:'+_0x4ead55,_0x470ab0);ChatInteractionEvents['on'](_0x4ead55,_0x57e0ed);}};
\ No newline at end of file
+var _0x3a5c=['update','emit','register','length','chatInteraction:','./chatInteraction.events','save','remove'];(function(_0x35e5c0,_0x586f38){var _0x3f9d28=function(_0x1fa9fb){while(--_0x1fa9fb){_0x35e5c0['push'](_0x35e5c0['shift']());}};_0x3f9d28(++_0x586f38);}(_0x3a5c,0x7d));var _0xc3a5=function(_0x24ebb7,_0x2281ca){_0x24ebb7=_0x24ebb7-0x0;var _0x1dd79f=_0x3a5c[_0x24ebb7];return _0x1dd79f;};'use strict';var ChatInteractionEvents=require(_0xc3a5('0x0'));var events=[_0xc3a5('0x1'),_0xc3a5('0x2'),_0xc3a5('0x3')];function createListener(_0x341697,_0x39ffd2){return function(_0x4cd16d){_0x39ffd2[_0xc3a5('0x4')](_0x341697,_0x4cd16d);};}function removeListener(_0x45aaa1,_0x37b731){return function(){ChatInteractionEvents['removeListener'](_0x45aaa1,_0x37b731);};}exports[_0xc3a5('0x5')]=function(_0x4ec146){for(var _0x4095c4=0x0,_0x4b0aa8=events[_0xc3a5('0x6')];_0x4095c4<_0x4b0aa8;_0x4095c4++){var _0x31f050=events[_0x4095c4];var _0x335c1c=createListener(_0xc3a5('0x7')+_0x31f050,_0x4ec146);ChatInteractionEvents['on'](_0x31f050,_0x335c1c);}};
\ No newline at end of file
index 2372cd8..566b756 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef1=['../../components/auth/service','../../config/environment','./chatInteraction.controller','isAuthenticated','index','/describe','get','show','/:id/attachment_download','isChatInteractionAuthorized','attachmentDownload','/:id/messages','getMessages','/:id/my_messages','/:id/download','post','/:id/vidaoo','createVidaooSession','diskStorage','join','%s-%s','now','originalname','replace','/:id/attachment_upload','file','addMessage','tracked','chat','chatinteraction:addtags','addTags','put','/:id','chatinteraction:update','/:id/custom_update','customUpdate','/:id/abandon','close','delete','destroy','removeTags','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x202c61,_0x3673e0){var _0x540691=function(_0x409610){while(--_0x409610){_0x202c61['push'](_0x202c61['shift']());}};_0x540691(++_0x3673e0);}(_0x8ef1,0xea));var _0x18ef=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0x8ef1[_0xbd08b4];return _0x314f1e;};'use strict';var multer=require(_0x18ef('0x0'));var util=require(_0x18ef('0x1'));var path=require(_0x18ef('0x2'));var timeout=require(_0x18ef('0x3'));var express=require(_0x18ef('0x4'));var router=express[_0x18ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x18ef('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x18ef('0x7'));var controller=require(_0x18ef('0x8'));router['get']('/',auth[_0x18ef('0x9')](),controller[_0x18ef('0xa')]);router['get'](_0x18ef('0xb'),auth[_0x18ef('0x9')](),controller['describe']);router[_0x18ef('0xc')]('/:id',auth['isChatInteractionAuthorized'](),controller[_0x18ef('0xd')]);router[_0x18ef('0xc')](_0x18ef('0xe'),auth[_0x18ef('0xf')](),controller[_0x18ef('0x10')]);router[_0x18ef('0xc')](_0x18ef('0x11'),auth[_0x18ef('0x9')](),controller[_0x18ef('0x12')]);router[_0x18ef('0xc')](_0x18ef('0x13'),auth['isChatInteractionAuthorized'](),controller['getMyMessages']);router[_0x18ef('0xc')](_0x18ef('0x14'),auth[_0x18ef('0x9')](),controller['download']);router[_0x18ef('0x15')]('/',auth[_0x18ef('0x9')](),controller['create']);router[_0x18ef('0x15')](_0x18ef('0x16'),auth[_0x18ef('0x9')](),controller[_0x18ef('0x17')]);var upload=multer({'storage':multer[_0x18ef('0x18')]({'destination':function(_0x3cb1c9,_0x1daff2,_0x595a8b){_0x595a8b(null,path[_0x18ef('0x19')](config['root'],'server/files/attachments/'));},'filename':function(_0x4a1e43,_0x28c027,_0x260f61){_0x260f61(null,util['format'](_0x18ef('0x1a'),Date[_0x18ef('0x1b')](),_0x28c027[_0x18ef('0x1c')][_0x18ef('0x1d')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x18ef('0x15')](_0x18ef('0x1e'),upload['single'](_0x18ef('0x1f')),controller['attachmentUpload']);router[_0x18ef('0x15')](_0x18ef('0x11'),auth[_0x18ef('0xf')](),controller[_0x18ef('0x20')]);router[_0x18ef('0x15')]('/:id/tags',auth['isAuthenticated'](),interaction[_0x18ef('0x21')](_0x18ef('0x22'),_0x18ef('0x23')),controller[_0x18ef('0x24')]);router[_0x18ef('0x25')](_0x18ef('0x26'),auth[_0x18ef('0x9')](),interaction[_0x18ef('0x21')](_0x18ef('0x22'),_0x18ef('0x27')),controller['update']);router[_0x18ef('0x25')](_0x18ef('0x28'),controller[_0x18ef('0x29')]);router[_0x18ef('0x25')](_0x18ef('0x2a'),auth[_0x18ef('0xf')](),controller['abandon']);router[_0x18ef('0x25')]('/:id/close',controller[_0x18ef('0x2b')]);router[_0x18ef('0x2c')](_0x18ef('0x26'),auth['isAuthenticated'](),interaction['tracked'](_0x18ef('0x22'),'chatinteraction:destroy'),controller[_0x18ef('0x2d')]);router[_0x18ef('0x2c')]('/:id/tags',auth[_0x18ef('0x9')](),controller[_0x18ef('0x2e')]);module[_0x18ef('0x2f')]=router;
\ No newline at end of file
+var _0xb23a=['../../components/interaction/service','./chatInteraction.controller','get','isAuthenticated','index','describe','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','/:id/messages','getMessages','/:id/my_messages','getMyMessages','/:id/download','create','post','/:id/vidaoo','createVidaooSession','join','root','server/files/attachments/','format','%s-%s','originalname','replace','/:id/attachment_upload','single','file','attachmentUpload','addMessage','/:id/tags','chat','chatinteraction:addtags','addTags','put','chatinteraction:update','update','customUpdate','/:id/abandon','abandon','delete','tracked','chatinteraction:destroy','removeTags','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x459c11,_0x202d5e){var _0x216dbb=function(_0x4dca06){while(--_0x4dca06){_0x459c11['push'](_0x459c11['shift']());}};_0x216dbb(++_0x202d5e);}(_0xb23a,0x1cd));var _0xab23=function(_0x546cc4,_0x2d1d8e){_0x546cc4=_0x546cc4-0x0;var _0xdba840=_0xb23a[_0x546cc4];return _0xdba840;};'use strict';var multer=require(_0xab23('0x0'));var util=require(_0xab23('0x1'));var path=require(_0xab23('0x2'));var timeout=require('connect-timeout');var express=require(_0xab23('0x3'));var router=express[_0xab23('0x4')]();var fs_extra=require(_0xab23('0x5'));var auth=require(_0xab23('0x6'));var interaction=require(_0xab23('0x7'));var config=require('../../config/environment');var controller=require(_0xab23('0x8'));router[_0xab23('0x9')]('/',auth[_0xab23('0xa')](),controller[_0xab23('0xb')]);router[_0xab23('0x9')]('/describe',auth[_0xab23('0xa')](),controller[_0xab23('0xc')]);router[_0xab23('0x9')]('/:id',auth[_0xab23('0xd')](),controller[_0xab23('0xe')]);router[_0xab23('0x9')](_0xab23('0xf'),auth[_0xab23('0xd')](),controller[_0xab23('0x10')]);router['get'](_0xab23('0x11'),auth['isAuthenticated'](),controller[_0xab23('0x12')]);router['get'](_0xab23('0x13'),auth[_0xab23('0xd')](),controller[_0xab23('0x14')]);router[_0xab23('0x9')](_0xab23('0x15'),auth[_0xab23('0xa')](),controller['download']);router['post']('/',auth[_0xab23('0xa')](),controller[_0xab23('0x16')]);router[_0xab23('0x17')](_0xab23('0x18'),auth[_0xab23('0xa')](),controller[_0xab23('0x19')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3077b6,_0x3c815f,_0x267d61){_0x267d61(null,path[_0xab23('0x1a')](config[_0xab23('0x1b')],_0xab23('0x1c')));},'filename':function(_0x147e38,_0xf563ec,_0x3b24c0){_0x3b24c0(null,util[_0xab23('0x1d')](_0xab23('0x1e'),Date['now'](),_0xf563ec[_0xab23('0x1f')][_0xab23('0x20')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xab23('0x17')](_0xab23('0x21'),upload[_0xab23('0x22')](_0xab23('0x23')),controller[_0xab23('0x24')]);router[_0xab23('0x17')](_0xab23('0x11'),auth[_0xab23('0xd')](),controller[_0xab23('0x25')]);router[_0xab23('0x17')](_0xab23('0x26'),auth['isAuthenticated'](),interaction['tracked'](_0xab23('0x27'),_0xab23('0x28')),controller[_0xab23('0x29')]);router[_0xab23('0x2a')]('/:id',auth[_0xab23('0xa')](),interaction['tracked'](_0xab23('0x27'),_0xab23('0x2b')),controller[_0xab23('0x2c')]);router[_0xab23('0x2a')]('/:id/custom_update',controller[_0xab23('0x2d')]);router[_0xab23('0x2a')](_0xab23('0x2e'),auth[_0xab23('0xd')](),controller[_0xab23('0x2f')]);router[_0xab23('0x2a')]('/:id/close',controller['close']);router[_0xab23('0x30')]('/:id',auth[_0xab23('0xa')](),interaction[_0xab23('0x31')]('chat',_0xab23('0x32')),controller['destroy']);router[_0xab23('0x30')](_0xab23('0x26'),auth['isAuthenticated'](),controller[_0xab23('0x33')]);module['exports']=router;
\ No newline at end of file
index 80f4116..c1dc2be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdd1=['BOOLEAN','INTEGER','sequelize','exports','TEXT','medium'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcdd1,0x16a));var _0x1cdd=function(_0x3b56c0,_0xe100d8){_0x3b56c0=_0x3b56c0-0x0;var _0x377efe=_0xcdd1[_0x3b56c0];return _0x377efe;};'use strict';var Sequelize=require(_0x1cdd('0x0'));module[_0x1cdd('0x1')]={'body':{'type':Sequelize[_0x1cdd('0x2')](_0x1cdd('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x1cdd('0x4')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x1cdd('0x5')]}};
\ No newline at end of file
+var _0x8ec4=['medium','INTEGER','sequelize','TEXT'];(function(_0x23ec06,_0x561142){var _0x2831d4=function(_0x3802bc){while(--_0x3802bc){_0x23ec06['push'](_0x23ec06['shift']());}};_0x2831d4(++_0x561142);}(_0x8ec4,0xee));var _0x48ec=function(_0x3e014d,_0x69433a){_0x3e014d=_0x3e014d-0x0;var _0x1a89a1=_0x8ec4[_0x3e014d];return _0x1a89a1;};'use strict';var Sequelize=require(_0x48ec('0x0'));module['exports']={'body':{'type':Sequelize[_0x48ec('0x1')](_0x48ec('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x48ec('0x3')]}};
\ No newline at end of file
index f67946b..a524e56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1efa=['filter','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','find','create','body','describe','messages','lastMessageAt','createdAt','lastMessage','format','getUsers','User','agent','user','fullname','internal','online','showWebBar','-online','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','UserProfileResource','isEmpty','role','resourceId','push','FromId','-createdAt','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','status','end','offset','limit','count','set','Content-Range','json','reject','save','update','then','destroy','sendStatus','error','stack','send','index','map','ChatInternalMessage','rawAttributes','fieldName','type','key','model','name','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x2c087c,_0x503da9){var _0x3953d5=function(_0x111f07){while(--_0x111f07){_0x2c087c['push'](_0x2c087c['shift']());}};_0x3953d5(++_0x503da9);}(_0x1efa,0x95));var _0xa1ef=function(_0x2105a6,_0x53b53a){_0x2105a6=_0x2105a6-0x0;var _0x52b71c=_0x1efa[_0x2105a6];return _0x52b71c;};'use strict';var emlformat=require(_0xa1ef('0x0'));var rimraf=require(_0xa1ef('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa1ef('0x2'));var rp=require(_0xa1ef('0x3'));var moment=require(_0xa1ef('0x4'));var BPromise=require(_0xa1ef('0x5'));var Mustache=require(_0xa1ef('0x6'));var util=require(_0xa1ef('0x7'));var path=require(_0xa1ef('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xa1ef('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa1ef('0xa'));var squel=require(_0xa1ef('0xb'));var crypto=require(_0xa1ef('0xc'));var jsforce=require(_0xa1ef('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xa1ef('0xe'));var querystring=require(_0xa1ef('0xf'));var Papa=require(_0xa1ef('0x10'));var Redis=require(_0xa1ef('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xa1ef('0x12'));var as=require(_0xa1ef('0x13'));var hardwareService=require(_0xa1ef('0x14'));var logger=require(_0xa1ef('0x15'))(_0xa1ef('0x16'));var utils=require(_0xa1ef('0x17'));var config=require(_0xa1ef('0x18'));var licenseUtil=require(_0xa1ef('0x19'));var db=require('../../mysqldb')['db'];config[_0xa1ef('0x1a')]=_[_0xa1ef('0x1b')](config[_0xa1ef('0x1a')],{'host':_0xa1ef('0x1c'),'port':0x18eb});var socket=require(_0xa1ef('0x1d'))(new Redis(config['redis']));require(_0xa1ef('0x1e'))[_0xa1ef('0x1f')](socket);function respondWithStatusCode(_0x48172c,_0x3ca47f){_0x3ca47f=_0x3ca47f||0xcc;return function(_0x2cac97){if(_0x2cac97){return _0x48172c['sendStatus'](_0x3ca47f);}return _0x48172c[_0xa1ef('0x20')](_0x3ca47f)[_0xa1ef('0x21')]();};}function respondWithResult(_0x36caed,_0x4f5850){_0x4f5850=_0x4f5850||0xc8;return function(_0x296e8f){if(_0x296e8f){return _0x36caed[_0xa1ef('0x20')](_0x4f5850)['json'](_0x296e8f);}};}function respondWithFilteredResult(_0x4114c6,_0x42b1fb){return function(_0x184f96){if(_0x184f96){var _0xe1b8ff=typeof _0x42b1fb[_0xa1ef('0x22')]==='undefined'&&typeof _0x42b1fb[_0xa1ef('0x23')]==='undefined';var _0x4f75cd=_0x184f96[_0xa1ef('0x24')];var _0x18ef2b=_0xe1b8ff?0x0:_0x42b1fb[_0xa1ef('0x22')];var _0x66d467=_0xe1b8ff?_0x184f96['count']:_0x42b1fb[_0xa1ef('0x22')]+_0x42b1fb[_0xa1ef('0x23')];var _0x3b57d4;if(_0x66d467>=_0x4f75cd){_0x66d467=_0x4f75cd;_0x3b57d4=0xc8;}else{_0x3b57d4=0xce;}_0x4114c6[_0xa1ef('0x20')](_0x3b57d4);return _0x4114c6[_0xa1ef('0x25')](_0xa1ef('0x26'),_0x18ef2b+'-'+_0x66d467+'/'+_0x4f75cd)[_0xa1ef('0x27')](_0x184f96);}return null;};}function patchUpdates(_0x27727b){return function(_0x4b3345){try{jsonpatch['apply'](_0x4b3345,_0x27727b,!![]);}catch(_0x16e297){return BPromise[_0xa1ef('0x28')](_0x16e297);}return _0x4b3345[_0xa1ef('0x29')]();};}function saveUpdates(_0x1d2e37,_0x5f3330){return function(_0x122bd2){if(_0x122bd2){return _0x122bd2[_0xa1ef('0x2a')](_0x1d2e37)[_0xa1ef('0x2b')](function(_0xccfc30){return _0xccfc30;});}return null;};}function removeEntity(_0xbb1eed,_0x5e00c2){return function(_0x353dc2){if(_0x353dc2){return _0x353dc2[_0xa1ef('0x2c')]()[_0xa1ef('0x2b')](function(){_0xbb1eed[_0xa1ef('0x20')](0xcc)[_0xa1ef('0x21')]();});}};}function handleEntityNotFound(_0xf45318,_0x3afc1f){return function(_0x4a3538){if(!_0x4a3538){_0xf45318[_0xa1ef('0x2d')](0x194);}return _0x4a3538;};}function handleError(_0x420034,_0x459bd5){_0x459bd5=_0x459bd5||0x1f4;return function(_0xb07ee8){logger[_0xa1ef('0x2e')](_0xb07ee8[_0xa1ef('0x2f')]);if(_0xb07ee8['name']){delete _0xb07ee8['name'];}_0x420034[_0xa1ef('0x20')](_0x459bd5)[_0xa1ef('0x30')](_0xb07ee8);};}exports[_0xa1ef('0x31')]=function(_0xfbc19b,_0x479bcf){var _0xf9f859={},_0x5cb5d4={},_0x490002={'count':0x0,'rows':[]};var _0xd6bc70=_[_0xa1ef('0x32')](db[_0xa1ef('0x33')][_0xa1ef('0x34')],function(_0x160dd7){return{'name':_0x160dd7[_0xa1ef('0x35')],'type':_0x160dd7[_0xa1ef('0x36')][_0xa1ef('0x37')]};});_0x5cb5d4[_0xa1ef('0x38')]=_[_0xa1ef('0x32')](_0xd6bc70,_0xa1ef('0x39'));_0x5cb5d4['query']=_[_0xa1ef('0x3a')](_0xfbc19b[_0xa1ef('0x3b')]);_0x5cb5d4[_0xa1ef('0x3c')]=_[_0xa1ef('0x3d')](_0x5cb5d4[_0xa1ef('0x38')],_0x5cb5d4[_0xa1ef('0x3b')]);_0xf9f859['attributes']=_[_0xa1ef('0x3d')](_0x5cb5d4[_0xa1ef('0x38')],qs[_0xa1ef('0x3e')](_0xfbc19b[_0xa1ef('0x3b')][_0xa1ef('0x3e')]));_0xf9f859[_0xa1ef('0x3f')]=_0xf9f859[_0xa1ef('0x3f')][_0xa1ef('0x40')]?_0xf9f859[_0xa1ef('0x3f')]:_0x5cb5d4[_0xa1ef('0x38')];if(!_0xfbc19b[_0xa1ef('0x3b')][_0xa1ef('0x41')](_0xa1ef('0x42'))){_0xf9f859[_0xa1ef('0x23')]=qs[_0xa1ef('0x23')](_0xfbc19b[_0xa1ef('0x3b')][_0xa1ef('0x23')]);_0xf9f859[_0xa1ef('0x22')]=qs[_0xa1ef('0x22')](_0xfbc19b[_0xa1ef('0x3b')][_0xa1ef('0x22')]);}_0xf9f859[_0xa1ef('0x43')]=qs[_0xa1ef('0x44')](_0xfbc19b[_0xa1ef('0x3b')][_0xa1ef('0x44')]);_0xf9f859[_0xa1ef('0x45')]=qs[_0xa1ef('0x3c')](_[_0xa1ef('0x46')](_0xfbc19b[_0xa1ef('0x3b')],_0x5cb5d4[_0xa1ef('0x3c')]),_0xd6bc70);if(_0xfbc19b[_0xa1ef('0x3b')][_0xa1ef('0x47')]){_0xf9f859[_0xa1ef('0x45')]=_['merge'](_0xf9f859[_0xa1ef('0x45')],{'$or':_[_0xa1ef('0x32')](_0xd6bc70,function(_0x263331){if(_0x263331[_0xa1ef('0x36')]!==_0xa1ef('0x48')){var _0x23f3cc={};_0x23f3cc[_0x263331['name']]={'$like':'%'+_0xfbc19b[_0xa1ef('0x3b')][_0xa1ef('0x47')]+'%'};return _0x23f3cc;}})});}_0xf9f859=_['merge']({},_0xf9f859,_0xfbc19b[_0xa1ef('0x49')]);var _0x5485c9={'where':_0xf9f859[_0xa1ef('0x45')]};return db[_0xa1ef('0x33')]['count'](_0x5485c9)[_0xa1ef('0x2b')](function(_0x258847){_0x490002[_0xa1ef('0x24')]=_0x258847;if(_0xfbc19b[_0xa1ef('0x3b')][_0xa1ef('0x4a')]){_0xf9f859['include']=[{'all':!![]}];}return db['ChatInternalMessage'][_0xa1ef('0x4b')](_0xf9f859);})[_0xa1ef('0x2b')](function(_0x30daa5){_0x490002[_0xa1ef('0x4c')]=_0x30daa5;return _0x490002;})[_0xa1ef('0x2b')](respondWithFilteredResult(_0x479bcf,_0xf9f859))[_0xa1ef('0x4d')](handleError(_0x479bcf,null));};exports[_0xa1ef('0x4e')]=function(_0x37d16f,_0x5dd983){var _0x20bed0={'raw':!![],'where':{'id':_0x37d16f[_0xa1ef('0x4f')]['id']}},_0xc72b59={};_0xc72b59['model']=_['keys'](db[_0xa1ef('0x33')][_0xa1ef('0x34')]);_0xc72b59['query']=_[_0xa1ef('0x3a')](_0x37d16f[_0xa1ef('0x3b')]);_0xc72b59[_0xa1ef('0x3c')]=_[_0xa1ef('0x3d')](_0xc72b59[_0xa1ef('0x38')],_0xc72b59['query']);_0x20bed0['attributes']=_[_0xa1ef('0x3d')](_0xc72b59['model'],qs[_0xa1ef('0x3e')](_0x37d16f[_0xa1ef('0x3b')][_0xa1ef('0x3e')]));_0x20bed0[_0xa1ef('0x3f')]=_0x20bed0[_0xa1ef('0x3f')][_0xa1ef('0x40')]?_0x20bed0[_0xa1ef('0x3f')]:_0xc72b59['model'];if(_0x37d16f[_0xa1ef('0x3b')]['includeAll']){_0x20bed0['include']=[{'all':!![]}];}_0x20bed0=_['merge']({},_0x20bed0,_0x37d16f['options']);return db['ChatInternalMessage'][_0xa1ef('0x50')](_0x20bed0)[_0xa1ef('0x2b')](handleEntityNotFound(_0x5dd983,null))[_0xa1ef('0x2b')](respondWithResult(_0x5dd983,null))[_0xa1ef('0x4d')](handleError(_0x5dd983,null));};exports[_0xa1ef('0x51')]=function(_0x24507d,_0x403514){return db['ChatInternalMessage']['create'](_0x24507d[_0xa1ef('0x52')],{})[_0xa1ef('0x2b')](respondWithResult(_0x403514,0xc9))[_0xa1ef('0x4d')](handleError(_0x403514,null));};exports[_0xa1ef('0x2a')]=function(_0x54249e,_0x3194e3){if(_0x54249e['body']['id']){delete _0x54249e[_0xa1ef('0x52')]['id'];}return db['ChatInternalMessage'][_0xa1ef('0x50')]({'where':{'id':_0x54249e[_0xa1ef('0x4f')]['id']}})[_0xa1ef('0x2b')](handleEntityNotFound(_0x3194e3,null))[_0xa1ef('0x2b')](saveUpdates(_0x54249e[_0xa1ef('0x52')],null))[_0xa1ef('0x2b')](respondWithResult(_0x3194e3,null))[_0xa1ef('0x4d')](handleError(_0x3194e3,null));};exports[_0xa1ef('0x2c')]=function(_0xfc164f,_0x3cd628){return db[_0xa1ef('0x33')][_0xa1ef('0x50')]({'where':{'id':_0xfc164f['params']['id']}})['then'](handleEntityNotFound(_0x3cd628,null))[_0xa1ef('0x2b')](removeEntity(_0x3cd628,null))[_0xa1ef('0x4d')](handleError(_0x3cd628,null));};exports[_0xa1ef('0x53')]=function(_0x5e6be2,_0x3261b2){return db[_0xa1ef('0x33')][_0xa1ef('0x53')]()[_0xa1ef('0x2b')](respondWithResult(_0x3261b2,null))[_0xa1ef('0x4d')](handleError(_0x3261b2,null));};function wrapUser(_0x241215){return function(_0x1e645d){var _0x383438=_0x241215['get']({'plain':!![]});_0x383438[_0xa1ef('0x54')]=[];if(_0x1e645d){_0x383438[_0xa1ef('0x55')]=_0x1e645d[_0xa1ef('0x56')];_0x383438[_0xa1ef('0x57')]=_0x1e645d;}else{_0x383438[_0xa1ef('0x55')]=moment(0x0)[_0xa1ef('0x58')]('YYYY-MM-DD\x20HH:mm:ss');_0x383438[_0xa1ef('0x57')]={};}return _0x383438;};}exports[_0xa1ef('0x59')]=function(_0x533f65,_0x2ba1c8,_0x35d5b2){var _0x54267a=[];return db[_0xa1ef('0x5a')][_0xa1ef('0x4b')]({'where':{'role':[_0xa1ef('0x5b'),'admin',_0xa1ef('0x5c')]},'attributes':['id',_0xa1ef('0x5d'),_0xa1ef('0x39'),'role','userpic',_0xa1ef('0x5e'),_0xa1ef('0x5f'),'lastLoginAt','allowmessenger',_0xa1ef('0x60')],'order':qs[_0xa1ef('0x44')](_0xa1ef('0x61')),'include':[{'model':db['VoiceQueue'],'as':_0xa1ef('0x62'),'attributes':['id','name','type'],'through':{'attributes':[]}}]})[_0xa1ef('0x2b')](function(_0x484933){if(_0x484933){var _0x1a0d6b=_0x533f65[_0xa1ef('0x5c')]['get']({'plain':!![]});if(!_0x1a0d6b)throw new Error(_0xa1ef('0x63'));if(_0x1a0d6b['role']===_0xa1ef('0x5c')){return db[_0xa1ef('0x64')][_0xa1ef('0x50')]({'where':{'name':_0xa1ef('0x65'),'userProfileId':_0x1a0d6b[_0xa1ef('0x66')]},'raw':!![]})[_0xa1ef('0x2b')](function(_0x3be606){if(_0x3be606){if(_0x3be606['autoAssociation']===0x0){return db[_0xa1ef('0x67')]['findAll']({'where':{'sectionId':_0x3be606['id']},'raw':!![]})[_0xa1ef('0x2b')](function(_0x457766){var _0x187b70=[];if(_[_0xa1ef('0x68')](_0x457766)){_0x187b70=_[_0xa1ef('0x47')](_0x484933,function(_0x5915c3){if(_0x5915c3[_0xa1ef('0x69')]!=='agent'){return _0x5915c3;}});return _0x187b70;}else{for(var _0x261c2d=0x0;_0x261c2d<_0x484933[_0xa1ef('0x40')];_0x261c2d++){var _0x415acf=_0x484933[_0x261c2d];if(_0x415acf[_0xa1ef('0x69')]===_0xa1ef('0x5b')){var _0x4f92fa=_['find'](_0x457766,function(_0x14b4fa){return _0x14b4fa[_0xa1ef('0x6a')]===_0x415acf['id'];});if(_0x4f92fa)_0x187b70['push'](_0x415acf);}else{_0x187b70[_0xa1ef('0x6b')](_0x415acf);}}return _0x187b70;}});}else{return _0x484933;}}else{var _0x2720bb=_['filter'](_0x484933,function(_0x54231d){if(_0x54231d[_0xa1ef('0x69')]!==_0xa1ef('0x5b')){return _0x54231d;}});return _0x2720bb;}});}else{return _0x484933;}}})['then'](function(_0x5e4130){var _0xac91cf=[];if(_0x5e4130){_0x54267a=_0x5e4130;for(var _0x384561=0x0;_0x384561<_0x5e4130[_0xa1ef('0x40')];_0x384561+=0x1){_0x54267a[_0x384561][_0xa1ef('0x54')]=[];_0xac91cf[_0xa1ef('0x6b')](db[_0xa1ef('0x33')][_0xa1ef('0x50')]({'where':{'FromId':[_0x533f65[_0xa1ef('0x5c')]['id'],_0x5e4130[_0x384561]['id']],'ToId':[_0x533f65[_0xa1ef('0x5c')]['id'],_0x5e4130[_0x384561]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0xa1ef('0x6c'),'ToId','read',_0xa1ef('0x52')],'order':qs['sort'](_0xa1ef('0x6d')),'limit':0x1,'offset':0x0,'raw':!![]})['then'](wrapUser(_0x5e4130[_0x384561])));}return BPromise['all'](_0xac91cf);}return[];})[_0xa1ef('0x2b')](function(_0x1d1477){return{'rows':_0x1d1477,'count':_0x1d1477[_0xa1ef('0x40')]};})['then'](respondWithResult(_0x2ba1c8,null))[_0xa1ef('0x4d')](handleError(_0x2ba1c8,null));};
\ No newline at end of file
+var _0x6e14=['UserProfileSection','Agents','userProfileId','autoAssociation','isEmpty','resourceId','push','FromId','read','-createdAt','all','eml-format','rimraf','fast-json-patch','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','../../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','status','end','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy','error','name','send','index','map','ChatInternalMessage','rawAttributes','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','catch','params','find','create','body','describe','get','messages','lastMessageAt','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','findAll','agent','admin','user','fullname','role','internal','online','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x4cf4ce,_0x4b222f){var _0x171fcc=function(_0x53f6c0){while(--_0x53f6c0){_0x4cf4ce['push'](_0x4cf4ce['shift']());}};_0x171fcc(++_0x4b222f);}(_0x6e14,0xf3));var _0x46e1=function(_0x25ee92,_0x2610cc){_0x25ee92=_0x25ee92-0x0;var _0x2c3454=_0x6e14[_0x25ee92];return _0x2c3454;};'use strict';var emlformat=require(_0x46e1('0x0'));var rimraf=require(_0x46e1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x46e1('0x2'));var rp=require(_0x46e1('0x3'));var moment=require('moment');var BPromise=require(_0x46e1('0x4'));var Mustache=require(_0x46e1('0x5'));var util=require(_0x46e1('0x6'));var path=require(_0x46e1('0x7'));var sox=require(_0x46e1('0x8'));var csv=require(_0x46e1('0x9'));var ejs=require(_0x46e1('0xa'));var fs=require('fs');var fs_extra=require(_0x46e1('0xb'));var _=require(_0x46e1('0xc'));var squel=require(_0x46e1('0xd'));var crypto=require(_0x46e1('0xe'));var jsforce=require(_0x46e1('0xf'));var deskjs=require(_0x46e1('0x10'));var toCsv=require(_0x46e1('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x46e1('0x11'));var authService=require(_0x46e1('0x12'));var qs=require(_0x46e1('0x13'));var as=require(_0x46e1('0x14'));var hardwareService=require(_0x46e1('0x15'));var logger=require(_0x46e1('0x16'))(_0x46e1('0x17'));var utils=require(_0x46e1('0x18'));var config=require(_0x46e1('0x19'));var licenseUtil=require(_0x46e1('0x1a'));var db=require(_0x46e1('0x1b'))['db'];config[_0x46e1('0x1c')]=_[_0x46e1('0x1d')](config[_0x46e1('0x1c')],{'host':_0x46e1('0x1e'),'port':0x18eb});var socket=require(_0x46e1('0x1f'))(new Redis(config[_0x46e1('0x1c')]));require(_0x46e1('0x20'))[_0x46e1('0x21')](socket);function respondWithStatusCode(_0x13810b,_0x12da63){_0x12da63=_0x12da63||0xcc;return function(_0x3b86d1){if(_0x3b86d1){return _0x13810b[_0x46e1('0x22')](_0x12da63);}return _0x13810b[_0x46e1('0x23')](_0x12da63)[_0x46e1('0x24')]();};}function respondWithResult(_0x176076,_0x3a4c9f){_0x3a4c9f=_0x3a4c9f||0xc8;return function(_0x1be258){if(_0x1be258){return _0x176076['status'](_0x3a4c9f)['json'](_0x1be258);}};}function respondWithFilteredResult(_0x1ae3b3,_0x27e9e9){return function(_0x1ff81c){if(_0x1ff81c){var _0x5e8591=typeof _0x27e9e9[_0x46e1('0x25')]===_0x46e1('0x26')&&typeof _0x27e9e9[_0x46e1('0x27')]===_0x46e1('0x26');var _0x534295=_0x1ff81c[_0x46e1('0x28')];var _0x71b87e=_0x5e8591?0x0:_0x27e9e9[_0x46e1('0x25')];var _0x2ceefb=_0x5e8591?_0x1ff81c[_0x46e1('0x28')]:_0x27e9e9[_0x46e1('0x25')]+_0x27e9e9[_0x46e1('0x27')];var _0x58ffb0;if(_0x2ceefb>=_0x534295){_0x2ceefb=_0x534295;_0x58ffb0=0xc8;}else{_0x58ffb0=0xce;}_0x1ae3b3['status'](_0x58ffb0);return _0x1ae3b3[_0x46e1('0x29')]('Content-Range',_0x71b87e+'-'+_0x2ceefb+'/'+_0x534295)[_0x46e1('0x2a')](_0x1ff81c);}return null;};}function patchUpdates(_0x113a5c){return function(_0x6d1097){try{jsonpatch[_0x46e1('0x2b')](_0x6d1097,_0x113a5c,!![]);}catch(_0x2913a4){return BPromise[_0x46e1('0x2c')](_0x2913a4);}return _0x6d1097[_0x46e1('0x2d')]();};}function saveUpdates(_0x5b3765,_0x399c2d){return function(_0x4e26a0){if(_0x4e26a0){return _0x4e26a0[_0x46e1('0x2e')](_0x5b3765)[_0x46e1('0x2f')](function(_0x2804aa){return _0x2804aa;});}return null;};}function removeEntity(_0x558ea2,_0x3de54f){return function(_0x25aa08){if(_0x25aa08){return _0x25aa08[_0x46e1('0x30')]()[_0x46e1('0x2f')](function(){_0x558ea2['status'](0xcc)[_0x46e1('0x24')]();});}};}function handleEntityNotFound(_0x4e29a2,_0xc4671b){return function(_0x11add9){if(!_0x11add9){_0x4e29a2[_0x46e1('0x22')](0x194);}return _0x11add9;};}function handleError(_0x3430ad,_0x5900a2){_0x5900a2=_0x5900a2||0x1f4;return function(_0x19222f){logger[_0x46e1('0x31')](_0x19222f['stack']);if(_0x19222f[_0x46e1('0x32')]){delete _0x19222f[_0x46e1('0x32')];}_0x3430ad['status'](_0x5900a2)[_0x46e1('0x33')](_0x19222f);};}exports[_0x46e1('0x34')]=function(_0x2f52b2,_0x35326a){var _0x1784b6={},_0x51a3d3={},_0x7d5f6f={'count':0x0,'rows':[]};var _0xd7f792=_[_0x46e1('0x35')](db[_0x46e1('0x36')][_0x46e1('0x37')],function(_0x1173e3){return{'name':_0x1173e3['fieldName'],'type':_0x1173e3[_0x46e1('0x38')]['key']};});_0x51a3d3[_0x46e1('0x39')]=_[_0x46e1('0x35')](_0xd7f792,_0x46e1('0x32'));_0x51a3d3[_0x46e1('0x3a')]=_[_0x46e1('0x3b')](_0x2f52b2[_0x46e1('0x3a')]);_0x51a3d3[_0x46e1('0x3c')]=_[_0x46e1('0x3d')](_0x51a3d3[_0x46e1('0x39')],_0x51a3d3[_0x46e1('0x3a')]);_0x1784b6['attributes']=_['intersection'](_0x51a3d3[_0x46e1('0x39')],qs[_0x46e1('0x3e')](_0x2f52b2['query'][_0x46e1('0x3e')]));_0x1784b6[_0x46e1('0x3f')]=_0x1784b6[_0x46e1('0x3f')][_0x46e1('0x40')]?_0x1784b6[_0x46e1('0x3f')]:_0x51a3d3[_0x46e1('0x39')];if(!_0x2f52b2[_0x46e1('0x3a')][_0x46e1('0x41')]('nolimit')){_0x1784b6['limit']=qs['limit'](_0x2f52b2[_0x46e1('0x3a')][_0x46e1('0x27')]);_0x1784b6[_0x46e1('0x25')]=qs['offset'](_0x2f52b2[_0x46e1('0x3a')][_0x46e1('0x25')]);}_0x1784b6[_0x46e1('0x42')]=qs[_0x46e1('0x43')](_0x2f52b2[_0x46e1('0x3a')][_0x46e1('0x43')]);_0x1784b6[_0x46e1('0x44')]=qs[_0x46e1('0x3c')](_[_0x46e1('0x45')](_0x2f52b2[_0x46e1('0x3a')],_0x51a3d3[_0x46e1('0x3c')]),_0xd7f792);if(_0x2f52b2[_0x46e1('0x3a')][_0x46e1('0x46')]){_0x1784b6[_0x46e1('0x44')]=_[_0x46e1('0x47')](_0x1784b6[_0x46e1('0x44')],{'$or':_[_0x46e1('0x35')](_0xd7f792,function(_0x1969bc){if(_0x1969bc[_0x46e1('0x38')]!==_0x46e1('0x48')){var _0x28e36b={};_0x28e36b[_0x1969bc['name']]={'$like':'%'+_0x2f52b2[_0x46e1('0x3a')]['filter']+'%'};return _0x28e36b;}})});}_0x1784b6=_[_0x46e1('0x47')]({},_0x1784b6,_0x2f52b2[_0x46e1('0x49')]);var _0x463f6f={'where':_0x1784b6[_0x46e1('0x44')]};return db[_0x46e1('0x36')][_0x46e1('0x28')](_0x463f6f)[_0x46e1('0x2f')](function(_0xad8703){_0x7d5f6f[_0x46e1('0x28')]=_0xad8703;if(_0x2f52b2[_0x46e1('0x3a')][_0x46e1('0x4a')]){_0x1784b6[_0x46e1('0x4b')]=[{'all':!![]}];}return db[_0x46e1('0x36')]['findAll'](_0x1784b6);})['then'](function(_0x561b38){_0x7d5f6f['rows']=_0x561b38;return _0x7d5f6f;})[_0x46e1('0x2f')](respondWithFilteredResult(_0x35326a,_0x1784b6))[_0x46e1('0x4c')](handleError(_0x35326a,null));};exports['show']=function(_0x180a54,_0x106261){var _0x5a5bd0={'raw':!![],'where':{'id':_0x180a54[_0x46e1('0x4d')]['id']}},_0x2969b4={};_0x2969b4[_0x46e1('0x39')]=_['keys'](db['ChatInternalMessage'][_0x46e1('0x37')]);_0x2969b4[_0x46e1('0x3a')]=_[_0x46e1('0x3b')](_0x180a54[_0x46e1('0x3a')]);_0x2969b4[_0x46e1('0x3c')]=_['intersection'](_0x2969b4[_0x46e1('0x39')],_0x2969b4[_0x46e1('0x3a')]);_0x5a5bd0[_0x46e1('0x3f')]=_[_0x46e1('0x3d')](_0x2969b4[_0x46e1('0x39')],qs['fields'](_0x180a54['query'][_0x46e1('0x3e')]));_0x5a5bd0['attributes']=_0x5a5bd0[_0x46e1('0x3f')][_0x46e1('0x40')]?_0x5a5bd0[_0x46e1('0x3f')]:_0x2969b4['model'];if(_0x180a54[_0x46e1('0x3a')][_0x46e1('0x4a')]){_0x5a5bd0[_0x46e1('0x4b')]=[{'all':!![]}];}_0x5a5bd0=_[_0x46e1('0x47')]({},_0x5a5bd0,_0x180a54[_0x46e1('0x49')]);return db[_0x46e1('0x36')][_0x46e1('0x4e')](_0x5a5bd0)[_0x46e1('0x2f')](handleEntityNotFound(_0x106261,null))[_0x46e1('0x2f')](respondWithResult(_0x106261,null))[_0x46e1('0x4c')](handleError(_0x106261,null));};exports['create']=function(_0x330342,_0x55cb5d){return db['ChatInternalMessage'][_0x46e1('0x4f')](_0x330342[_0x46e1('0x50')],{})[_0x46e1('0x2f')](respondWithResult(_0x55cb5d,0xc9))[_0x46e1('0x4c')](handleError(_0x55cb5d,null));};exports[_0x46e1('0x2e')]=function(_0x5eccd6,_0x29e2ba){if(_0x5eccd6['body']['id']){delete _0x5eccd6[_0x46e1('0x50')]['id'];}return db[_0x46e1('0x36')][_0x46e1('0x4e')]({'where':{'id':_0x5eccd6[_0x46e1('0x4d')]['id']}})[_0x46e1('0x2f')](handleEntityNotFound(_0x29e2ba,null))[_0x46e1('0x2f')](saveUpdates(_0x5eccd6[_0x46e1('0x50')],null))[_0x46e1('0x2f')](respondWithResult(_0x29e2ba,null))['catch'](handleError(_0x29e2ba,null));};exports['destroy']=function(_0x9402d2,_0x230c9a){return db[_0x46e1('0x36')][_0x46e1('0x4e')]({'where':{'id':_0x9402d2[_0x46e1('0x4d')]['id']}})['then'](handleEntityNotFound(_0x230c9a,null))[_0x46e1('0x2f')](removeEntity(_0x230c9a,null))['catch'](handleError(_0x230c9a,null));};exports[_0x46e1('0x51')]=function(_0x33368b,_0x3d4ac4){return db[_0x46e1('0x36')]['describe']()[_0x46e1('0x2f')](respondWithResult(_0x3d4ac4,null))['catch'](handleError(_0x3d4ac4,null));};function wrapUser(_0x135b04){return function(_0x59434a){var _0x3d34f5=_0x135b04[_0x46e1('0x52')]({'plain':!![]});_0x3d34f5[_0x46e1('0x53')]=[];if(_0x59434a){_0x3d34f5[_0x46e1('0x54')]=_0x59434a[_0x46e1('0x55')];_0x3d34f5[_0x46e1('0x56')]=_0x59434a;}else{_0x3d34f5[_0x46e1('0x54')]=moment(0x0)[_0x46e1('0x57')](_0x46e1('0x58'));_0x3d34f5[_0x46e1('0x56')]={};}return _0x3d34f5;};}exports[_0x46e1('0x59')]=function(_0x408794,_0x35d5cd,_0x10d7b7){var _0x24bfce=[];return db[_0x46e1('0x5a')][_0x46e1('0x5b')]({'where':{'role':[_0x46e1('0x5c'),_0x46e1('0x5d'),_0x46e1('0x5e')]},'attributes':['id',_0x46e1('0x5f'),_0x46e1('0x32'),_0x46e1('0x60'),'userpic',_0x46e1('0x61'),_0x46e1('0x62'),_0x46e1('0x63'),_0x46e1('0x64'),_0x46e1('0x65')],'order':qs[_0x46e1('0x43')](_0x46e1('0x66')),'include':[{'model':db['VoiceQueue'],'as':_0x46e1('0x67'),'attributes':['id',_0x46e1('0x32'),_0x46e1('0x38')],'through':{'attributes':[]}}]})[_0x46e1('0x2f')](function(_0x5aa15c){if(_0x5aa15c){var _0x4f09c2=_0x408794[_0x46e1('0x5e')][_0x46e1('0x52')]({'plain':!![]});if(!_0x4f09c2)throw new Error(_0x46e1('0x68'));if(_0x4f09c2[_0x46e1('0x60')]===_0x46e1('0x5e')){return db[_0x46e1('0x69')][_0x46e1('0x4e')]({'where':{'name':_0x46e1('0x6a'),'userProfileId':_0x4f09c2[_0x46e1('0x6b')]},'raw':!![]})[_0x46e1('0x2f')](function(_0x2450ee){if(_0x2450ee){if(_0x2450ee[_0x46e1('0x6c')]===0x0){return db['UserProfileResource'][_0x46e1('0x5b')]({'where':{'sectionId':_0x2450ee['id']},'raw':!![]})[_0x46e1('0x2f')](function(_0x1ff924){var _0x334652=[];if(_[_0x46e1('0x6d')](_0x1ff924)){_0x334652=_['filter'](_0x5aa15c,function(_0x1ab827){if(_0x1ab827[_0x46e1('0x60')]!==_0x46e1('0x5c')){return _0x1ab827;}});return _0x334652;}else{for(var _0x36902b=0x0;_0x36902b<_0x5aa15c[_0x46e1('0x40')];_0x36902b++){var _0x5722b8=_0x5aa15c[_0x36902b];if(_0x5722b8[_0x46e1('0x60')]===_0x46e1('0x5c')){var _0x5e3ae4=_[_0x46e1('0x4e')](_0x1ff924,function(_0x40bf22){return _0x40bf22[_0x46e1('0x6e')]===_0x5722b8['id'];});if(_0x5e3ae4)_0x334652[_0x46e1('0x6f')](_0x5722b8);}else{_0x334652[_0x46e1('0x6f')](_0x5722b8);}}return _0x334652;}});}else{return _0x5aa15c;}}else{var _0x5306d4=_[_0x46e1('0x46')](_0x5aa15c,function(_0x16df92){if(_0x16df92['role']!==_0x46e1('0x5c')){return _0x16df92;}});return _0x5306d4;}});}else{return _0x5aa15c;}}})[_0x46e1('0x2f')](function(_0x549493){var _0x5d9b83=[];if(_0x549493){_0x24bfce=_0x549493;for(var _0x2c068f=0x0;_0x2c068f<_0x549493[_0x46e1('0x40')];_0x2c068f+=0x1){_0x24bfce[_0x2c068f][_0x46e1('0x53')]=[];_0x5d9b83[_0x46e1('0x6f')](db[_0x46e1('0x36')][_0x46e1('0x4e')]({'where':{'FromId':[_0x408794[_0x46e1('0x5e')]['id'],_0x549493[_0x2c068f]['id']],'ToId':[_0x408794['user']['id'],_0x549493[_0x2c068f]['id']],'ChatGroupId':null},'attributes':['id','createdAt',_0x46e1('0x70'),'ToId',_0x46e1('0x71'),_0x46e1('0x50')],'order':qs['sort'](_0x46e1('0x72')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x46e1('0x2f')](wrapUser(_0x549493[_0x2c068f])));}return BPromise[_0x46e1('0x73')](_0x5d9b83);}return[];})[_0x46e1('0x2f')](function(_0x2bef6e){return{'rows':_0x2bef6e,'count':_0x2bef6e[_0x46e1('0x40')]};})[_0x46e1('0x2f')](respondWithResult(_0x35d5cd,null))[_0x46e1('0x4c')](handleError(_0x35d5cd,null));};
\ No newline at end of file
index ecb40d2..5b21245 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e00=['../../mysqldb','setMaxListeners','emit','hasOwnProperty','hook','exports','events'];(function(_0x8db3d4,_0xab1fdb){var _0x5e7882=function(_0x263e49){while(--_0x263e49){_0x8db3d4['push'](_0x8db3d4['shift']());}};_0x5e7882(++_0xab1fdb);}(_0x9e00,0x1b8));var _0x09e0=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9e00[_0x5b644e];return _0x49c6bf;};'use strict';var EventEmitter=require(_0x09e0('0x0'));var ChatInternalMessage=require(_0x09e0('0x1'))['db']['ChatInternalMessage'];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x09e0('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x4bde46){return function(_0x1348be,_0x4d4c54,_0x2a8e32){ChatInternalMessageEvents['emit'](_0x4bde46+':'+_0x1348be['id'],_0x1348be);ChatInternalMessageEvents[_0x09e0('0x3')](_0x4bde46,_0x1348be);_0x2a8e32(null);};}for(var e in events){if(events[_0x09e0('0x4')](e)){var event=events[e];ChatInternalMessage[_0x09e0('0x5')](e,emitEvent(event));}}module[_0x09e0('0x6')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0xa0e9=['save','update','remove','emit','hasOwnProperty','hook','exports','events','ChatInternalMessage','setMaxListeners'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xa0e9,0x147));var _0x9a0e=function(_0x233de7,_0x31e254){_0x233de7=_0x233de7-0x0;var _0x17775f=_0xa0e9[_0x233de7];return _0x17775f;};'use strict';var EventEmitter=require(_0x9a0e('0x0'));var ChatInternalMessage=require('../../mysqldb')['db'][_0x9a0e('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x9a0e('0x2')](0x0);var events={'afterCreate':_0x9a0e('0x3'),'afterUpdate':_0x9a0e('0x4'),'afterDestroy':_0x9a0e('0x5')};function emitEvent(_0x1839ed){return function(_0x6de02e,_0x310267,_0x30bca7){ChatInternalMessageEvents[_0x9a0e('0x6')](_0x1839ed+':'+_0x6de02e['id'],_0x6de02e);ChatInternalMessageEvents[_0x9a0e('0x6')](_0x1839ed,_0x6de02e);_0x30bca7(null);};}for(var e in events){if(events[_0x9a0e('0x7')](e)){var event=events[e];ChatInternalMessage[_0x9a0e('0x8')](e,emitEvent(event));}}module[_0x9a0e('0x9')]=ChatInternalMessageEvents;
\ No newline at end of file
index 8b401d2..9729fe9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa27b=['request-promise','path','./chatInternalMessage.attributes','define','ChatInternalMessage','chat_internal_messages','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','moment','bluebird'];(function(_0x234bcf,_0x383aa8){var _0x4dcf0e=function(_0x3250b2){while(--_0x3250b2){_0x234bcf['push'](_0x234bcf['shift']());}};_0x4dcf0e(++_0x383aa8);}(_0xa27b,0x80));var _0xba27=function(_0x29ec7c,_0x520bdf){_0x29ec7c=_0x29ec7c-0x0;var _0x254284=_0xa27b[_0x29ec7c];return _0x254284;};'use strict';var _=require('lodash');var util=require(_0xba27('0x0'));var logger=require(_0xba27('0x1'))('api');var moment=require(_0xba27('0x2'));var BPromise=require(_0xba27('0x3'));var rp=require(_0xba27('0x4'));var fs=require('fs');var path=require(_0xba27('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xba27('0x6'));module['exports']=function(_0x5626f7,_0x537c48){return _0x5626f7[_0xba27('0x7')](_0xba27('0x8'),attributes,{'tableName':_0xba27('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xba27('0xa'),'collate':_0xba27('0xb')});};
\ No newline at end of file
+var _0x9b0d=['lodash','util','bluebird','path','rimraf','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','utf8mb4','utf8mb4_unicode_ci'];(function(_0x2c9cf9,_0x2bed45){var _0x560d6d=function(_0x419979){while(--_0x419979){_0x2c9cf9['push'](_0x2c9cf9['shift']());}};_0x560d6d(++_0x2bed45);}(_0x9b0d,0x160));var _0xd9b0=function(_0x5c91a9,_0x377715){_0x5c91a9=_0x5c91a9-0x0;var _0x207f60=_0x9b0d[_0x5c91a9];return _0x207f60;};'use strict';var _=require(_0xd9b0('0x0'));var util=require(_0xd9b0('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xd9b0('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd9b0('0x3'));var rimraf=require(_0xd9b0('0x4'));var config=require('../../config/environment');var attributes=require(_0xd9b0('0x5'));module[_0xd9b0('0x6')]=function(_0x5337b3,_0x50e180){return _0x5337b3[_0xd9b0('0x7')](_0xd9b0('0x8'),attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xd9b0('0x9'),'collate':_0xd9b0('0xa')});};
\ No newline at end of file
index 849e177..be3cc8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2ca=['info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','register','request'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xd2ca,0x15a));var _0xad2c=function(_0x107395,_0x1b59cd){_0x107395=_0x107395-0x0;var _0x115033=_0xd2ca[_0x107395];return _0x115033;};'use strict';var _=require(_0xad2c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xad2c('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xad2c('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xad2c('0x3'))('rpc');var config=require(_0xad2c('0x4'));var jayson=require(_0xad2c('0x5'));var client=jayson[_0xad2c('0x6')][_0xad2c('0x7')]({'port':0x232a});config[_0xad2c('0x8')]=_[_0xad2c('0x9')](config[_0xad2c('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0xad2c('0xa'))(new Redis(config['redis']));require(_0xad2c('0xb'))[_0xad2c('0xc')](socket);function respondWithRpcPromise(_0x1ec446,_0x538a7c,_0x2cd6f9){return new BPromise(function(_0x48a2f7,_0x565ff9){return client[_0xad2c('0xd')](_0x1ec446,_0x2cd6f9)['then'](function(_0x30cdcd){logger[_0xad2c('0xe')](_0xad2c('0xf'),_0x538a7c,_0xad2c('0x10'));logger['debug'](_0xad2c('0x11'),_0x538a7c,_0xad2c('0x10'),JSON[_0xad2c('0x12')](_0x30cdcd));if(_0x30cdcd['error']){if(_0x30cdcd[_0xad2c('0x13')][_0xad2c('0x14')]===0x1f4){logger[_0xad2c('0x13')](_0xad2c('0xf'),_0x538a7c,_0x30cdcd['error']['message']);return _0x565ff9(_0x30cdcd[_0xad2c('0x13')][_0xad2c('0x15')]);}logger['error'](_0xad2c('0xf'),_0x538a7c,_0x30cdcd[_0xad2c('0x13')][_0xad2c('0x15')]);return _0x48a2f7(_0x30cdcd[_0xad2c('0x13')]['message']);}else{logger['info'](_0xad2c('0xf'),_0x538a7c,_0xad2c('0x10'));_0x48a2f7(_0x30cdcd[_0xad2c('0x16')]['message']);}})[_0xad2c('0x17')](function(_0x21c86a){logger['error'](_0xad2c('0xf'),_0x538a7c,_0x21c86a);_0x565ff9(_0x21c86a);});});}
\ No newline at end of file
+var _0xe6a9=['stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s'];(function(_0x5d7227,_0x12aebe){var _0x15ac55=function(_0x58d13e){while(--_0x58d13e){_0x5d7227['push'](_0x5d7227['shift']());}};_0x15ac55(++_0x12aebe);}(_0xe6a9,0xad));var _0x9e6a=function(_0x4f4142,_0x53aee4){_0x4f4142=_0x4f4142-0x0;var _0x4ba7ea=_0xe6a9[_0x4f4142];return _0x4ba7ea;};'use strict';var _=require(_0x9e6a('0x0'));var util=require(_0x9e6a('0x1'));var moment=require(_0x9e6a('0x2'));var BPromise=require(_0x9e6a('0x3'));var rs=require(_0x9e6a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9e6a('0x5'))['db'];var utils=require(_0x9e6a('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x9e6a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x9e6a('0x8')][_0x9e6a('0x9')]({'port':0x232a});config[_0x9e6a('0xa')]=_[_0x9e6a('0xb')](config[_0x9e6a('0xa')],{'host':_0x9e6a('0xc'),'port':0x18eb});var socket=require(_0x9e6a('0xd'))(new Redis(config[_0x9e6a('0xa')]));require(_0x9e6a('0xe'))[_0x9e6a('0xf')](socket);function respondWithRpcPromise(_0x507206,_0x4817ff,_0x579d07){return new BPromise(function(_0x336eec,_0xfed294){return client[_0x9e6a('0x10')](_0x507206,_0x579d07)[_0x9e6a('0x11')](function(_0x3c938b){logger[_0x9e6a('0x12')](_0x9e6a('0x13'),_0x4817ff,_0x9e6a('0x14'));logger[_0x9e6a('0x15')](_0x9e6a('0x16'),_0x4817ff,_0x9e6a('0x14'),JSON[_0x9e6a('0x17')](_0x3c938b));if(_0x3c938b[_0x9e6a('0x18')]){if(_0x3c938b[_0x9e6a('0x18')][_0x9e6a('0x19')]===0x1f4){logger[_0x9e6a('0x18')](_0x9e6a('0x13'),_0x4817ff,_0x3c938b[_0x9e6a('0x18')]['message']);return _0xfed294(_0x3c938b[_0x9e6a('0x18')][_0x9e6a('0x1a')]);}logger[_0x9e6a('0x18')]('ChatInternalMessage,\x20%s,\x20%s',_0x4817ff,_0x3c938b[_0x9e6a('0x18')][_0x9e6a('0x1a')]);return _0x336eec(_0x3c938b[_0x9e6a('0x18')][_0x9e6a('0x1a')]);}else{logger['info'](_0x9e6a('0x13'),_0x4817ff,_0x9e6a('0x14'));_0x336eec(_0x3c938b['result'][_0x9e6a('0x1a')]);}})[_0x9e6a('0x1b')](function(_0x5e7994){logger[_0x9e6a('0x18')]('ChatInternalMessage,\x20%s,\x20%s',_0x4817ff,_0x5e7994);_0xfed294(_0x5e7994);});});}
\ No newline at end of file
index 13d9118..3152a65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x493b=['emit','removeListener','save','remove','update'];(function(_0x186999,_0x30eca8){var _0x205000=function(_0xe8da1c){while(--_0xe8da1c){_0x186999['push'](_0x186999['shift']());}};_0x205000(++_0x30eca8);}(_0x493b,0x1b0));var _0xb493=function(_0x4b48df,_0x229682){_0x4b48df=_0x4b48df-0x0;var _0xa4335a=_0x493b[_0x4b48df];return _0xa4335a;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=[_0xb493('0x0'),_0xb493('0x1'),_0xb493('0x2')];function createListener(_0x2b846a,_0x31eb7c){return function(_0x28a7cd){_0x31eb7c[_0xb493('0x3')](_0x2b846a,_0x28a7cd);};}function removeListener(_0x1bf8ab,_0x2246e0){return function(){ChatInternalMessageEvents[_0xb493('0x4')](_0x1bf8ab,_0x2246e0);};}exports['register']=function(_0x4f82c1){for(var _0x4728f5=0x0,_0x5eb6fb=events['length'];_0x4728f5<_0x5eb6fb;_0x4728f5++){var _0x46302e=events[_0x4728f5];var _0x34ebea=createListener('chatInternalMessage:'+_0x46302e,_0x4f82c1);ChatInternalMessageEvents['on'](_0x46302e,_0x34ebea);}};
\ No newline at end of file
+var _0xe37f=['removeListener','register','length','chatInternalMessage:','./chatInternalMessage.events','save','remove','update'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0xe37f,0x154));var _0xfe37=function(_0x301dab,_0x38050a){_0x301dab=_0x301dab-0x0;var _0x2500a2=_0xe37f[_0x301dab];return _0x2500a2;};'use strict';var ChatInternalMessageEvents=require(_0xfe37('0x0'));var events=[_0xfe37('0x1'),_0xfe37('0x2'),_0xfe37('0x3')];function createListener(_0x85db97,_0x3a9ffc){return function(_0x2b3fe3){_0x3a9ffc['emit'](_0x85db97,_0x2b3fe3);};}function removeListener(_0x4eb6cf,_0x5496c9){return function(){ChatInternalMessageEvents[_0xfe37('0x4')](_0x4eb6cf,_0x5496c9);};}exports[_0xfe37('0x5')]=function(_0x1e4698){for(var _0x171d75=0x0,_0x343e=events[_0xfe37('0x6')];_0x171d75<_0x343e;_0x171d75++){var _0x14c557=events[_0x171d75];var _0x50c656=createListener(_0xfe37('0x7')+_0x14c557,_0x1e4698);ChatInternalMessageEvents['on'](_0x14c557,_0x50c656);}};
\ No newline at end of file
index 7741353..defd0f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2aa6=['/:id','post','create','put','update','delete','destroy','exports','multer','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInternalMessage.controller','get','index','isAuthenticated','describe','/users','getUsers'];(function(_0x26c00a,_0x527ec6){var _0x94dda1=function(_0x2437c8){while(--_0x2437c8){_0x26c00a['push'](_0x26c00a['shift']());}};_0x94dda1(++_0x527ec6);}(_0x2aa6,0x1aa));var _0x62aa=function(_0x946518,_0x22816f){_0x946518=_0x946518-0x0;var _0x909b69=_0x2aa6[_0x946518];return _0x909b69;};'use strict';var multer=require(_0x62aa('0x0'));var util=require(_0x62aa('0x1'));var path=require(_0x62aa('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x62aa('0x3'));var auth=require(_0x62aa('0x4'));var interaction=require(_0x62aa('0x5'));var config=require(_0x62aa('0x6'));var controller=require(_0x62aa('0x7'));router[_0x62aa('0x8')]('/',auth['isAuthenticated'](),controller[_0x62aa('0x9')]);router[_0x62aa('0x8')]('/describe',auth[_0x62aa('0xa')](),controller[_0x62aa('0xb')]);router['get'](_0x62aa('0xc'),auth[_0x62aa('0xa')](),controller[_0x62aa('0xd')]);router[_0x62aa('0x8')](_0x62aa('0xe'),auth[_0x62aa('0xa')](),controller['show']);router[_0x62aa('0xf')]('/',auth[_0x62aa('0xa')](),controller[_0x62aa('0x10')]);router[_0x62aa('0x11')](_0x62aa('0xe'),controller[_0x62aa('0x12')]);router[_0x62aa('0x13')](_0x62aa('0xe'),auth[_0x62aa('0xa')](),controller[_0x62aa('0x14')]);module[_0x62aa('0x15')]=router;
\ No newline at end of file
+var _0xe2a0=['multer','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./chatInternalMessage.controller','get','index','isAuthenticated','describe','getUsers','/:id','show','post','create','update','delete','destroy'];(function(_0x573f51,_0x58d50b){var _0x157934=function(_0x8ca83f){while(--_0x8ca83f){_0x573f51['push'](_0x573f51['shift']());}};_0x157934(++_0x58d50b);}(_0xe2a0,0x11d));var _0x0e2a=function(_0x3423f8,_0x4ff1e6){_0x3423f8=_0x3423f8-0x0;var _0x29704e=_0xe2a0[_0x3423f8];return _0x29704e;};'use strict';var multer=require(_0x0e2a('0x0'));var util=require(_0x0e2a('0x1'));var path=require('path');var timeout=require(_0x0e2a('0x2'));var express=require(_0x0e2a('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0e2a('0x4'));var interaction=require(_0x0e2a('0x5'));var config=require('../../config/environment');var controller=require(_0x0e2a('0x6'));router[_0x0e2a('0x7')]('/',auth['isAuthenticated'](),controller[_0x0e2a('0x8')]);router[_0x0e2a('0x7')]('/describe',auth[_0x0e2a('0x9')](),controller[_0x0e2a('0xa')]);router[_0x0e2a('0x7')]('/users',auth['isAuthenticated'](),controller[_0x0e2a('0xb')]);router[_0x0e2a('0x7')](_0x0e2a('0xc'),auth[_0x0e2a('0x9')](),controller[_0x0e2a('0xd')]);router[_0x0e2a('0xe')]('/',auth[_0x0e2a('0x9')](),controller[_0x0e2a('0xf')]);router['put'](_0x0e2a('0xc'),controller[_0x0e2a('0x10')]);router[_0x0e2a('0x11')](_0x0e2a('0xc'),auth['isAuthenticated'](),controller[_0x0e2a('0x12')]);module['exports']=router;
\ No newline at end of file
index 57968c6..c47e694 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf2f=['BOOLEAN','ENUM','out','DATE','STRING','sequelize','exports','TEXT','medium'];(function(_0x3880a4,_0x868040){var _0x29918f=function(_0x16744c){while(--_0x16744c){_0x3880a4['push'](_0x3880a4['shift']());}};_0x29918f(++_0x868040);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x13a911,_0x119043){_0x13a911=_0x13a911-0x0;var _0x4eadfd=_0xcf2f[_0x13a911];return _0x4eadfd;};'use strict';var Sequelize=require(_0xfcf2('0x0'));module[_0xfcf2('0x1')]={'body':{'type':Sequelize[_0xfcf2('0x2')](_0xfcf2('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xfcf2('0x4')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xfcf2('0x5')]('in',_0xfcf2('0x6')),'defaultValue':_0xfcf2('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0xfcf2('0x7')]},'providerName':{'type':Sequelize[_0xfcf2('0x8')]},'providerResponse':{'type':Sequelize[_0xfcf2('0x2')]}};
\ No newline at end of file
+var _0x9c32=['STRING','sequelize','exports','TEXT','BOOLEAN','out'];(function(_0x14e150,_0x47296b){var _0x4cfdea=function(_0x38bd83){while(--_0x38bd83){_0x14e150['push'](_0x14e150['shift']());}};_0x4cfdea(++_0x47296b);}(_0x9c32,0x15d));var _0x29c3=function(_0x198e03,_0x48ea60){_0x198e03=_0x198e03-0x0;var _0x51ddcf=_0x9c32[_0x198e03];return _0x51ddcf;};'use strict';var Sequelize=require(_0x29c3('0x0'));module[_0x29c3('0x1')]={'body':{'type':Sequelize[_0x29c3('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x29c3('0x3')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x29c3('0x4')),'defaultValue':_0x29c3('0x4'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0x29c3('0x5')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index dfe62c6..2b991da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb578=['json','offset','undefined','limit','count','Content-Range','apply','save','then','destroy','stack','name','index','map','ChatMessage','fieldName','type','key','model','keys','filters','query','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','VIRTUAL','includeAll','include','findAll','show','params','intersection','options','find','create','body','update','describe','accept','chat','format','YYYY-MM-DD\x20HH:mm:ss','agent','get','ChatInteractionId','UserId','isNil','read1stAt','interaction','user','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','fullname','internal','interface','SIP/%s','channel','motionChannel','event','acceptmessage','merge','parse','chat-interactions','reject','null','sequelize','contact','email','EventManager','rejectmessage','formData','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','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','redis','defaults','localhost','./chatMessage.socket','register','jayson/promise','client','http','request','info','ChatMessage,\x20%s,\x20%s','request\x20sent','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','sendStatus','status','end'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb578,0x1d2));var _0x8b57=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xb578[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x8b57('0x0'));var rimraf=require(_0x8b57('0x1'));var zipdir=require(_0x8b57('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8b57('0x3'));var BPromise=require(_0x8b57('0x4'));var Mustache=require(_0x8b57('0x5'));var util=require(_0x8b57('0x6'));var path=require(_0x8b57('0x7'));var sox=require(_0x8b57('0x8'));var csv=require('to-csv');var ejs=require(_0x8b57('0x9'));var fs=require('fs');var fs_extra=require(_0x8b57('0xa'));var _=require(_0x8b57('0xb'));var squel=require(_0x8b57('0xc'));var crypto=require(_0x8b57('0xd'));var jsforce=require(_0x8b57('0xe'));var deskjs=require(_0x8b57('0xf'));var toCsv=require('to-csv');var querystring=require(_0x8b57('0x10'));var Papa=require('papaparse');var Redis=require(_0x8b57('0x11'));var authService=require(_0x8b57('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x8b57('0x13'));var hardwareService=require(_0x8b57('0x14'));var logger=require(_0x8b57('0x15'))(_0x8b57('0x16'));var utils=require(_0x8b57('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x8b57('0x18'));var db=require(_0x8b57('0x19'))['db'];config[_0x8b57('0x1a')]=_[_0x8b57('0x1b')](config[_0x8b57('0x1a')],{'host':_0x8b57('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x8b57('0x1d'))[_0x8b57('0x1e')](socket);var jayson=require(_0x8b57('0x1f'));var client=jayson[_0x8b57('0x20')][_0x8b57('0x21')]({'port':0x232c});var client9002=jayson[_0x8b57('0x20')][_0x8b57('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x1c857b,_0x3eda1a,_0x299735,_0x380307){return new BPromise(function(_0x50644e,_0xbc58d5){var _0x3f5ea8=_0x380307||client;return _0x3f5ea8[_0x8b57('0x22')](_0x1c857b,_0x299735)['then'](function(_0x306eae){logger[_0x8b57('0x23')](_0x8b57('0x24'),_0x3eda1a,_0x8b57('0x25'));logger['debug'](_0x8b57('0x26'),_0x3eda1a,_0x8b57('0x25'),JSON[_0x8b57('0x27')](_0x306eae));if(_0x306eae['error']){if(_0x306eae[_0x8b57('0x28')]['code']===0x1f4){logger['error'](_0x8b57('0x24'),_0x3eda1a,_0x306eae[_0x8b57('0x28')][_0x8b57('0x29')]);return _0xbc58d5(_0x306eae['error'][_0x8b57('0x29')]);}logger[_0x8b57('0x28')](_0x8b57('0x24'),_0x3eda1a,_0x306eae[_0x8b57('0x28')][_0x8b57('0x29')]);return _0x50644e(_0x306eae[_0x8b57('0x28')]['message']);}else{logger[_0x8b57('0x23')]('ChatMessage,\x20%s,\x20%s',_0x3eda1a,_0x8b57('0x25'));_0x50644e(_0x306eae['result'][_0x8b57('0x29')]);}})[_0x8b57('0x2a')](function(_0x18327a){logger[_0x8b57('0x28')]('ChatMessage,\x20%s,\x20%s',_0x3eda1a,_0x18327a);_0xbc58d5(_0x18327a);});});}function respondWithStatusCode(_0x5ceb65,_0x5e3ec6){_0x5e3ec6=_0x5e3ec6||0xcc;return function(_0x30bcc8){if(_0x30bcc8){return _0x5ceb65[_0x8b57('0x2b')](_0x5e3ec6);}return _0x5ceb65[_0x8b57('0x2c')](_0x5e3ec6)[_0x8b57('0x2d')]();};}function respondWithResult(_0x325b7f,_0x241877){_0x241877=_0x241877||0xc8;return function(_0x5b5786){if(_0x5b5786){return _0x325b7f['status'](_0x241877)[_0x8b57('0x2e')](_0x5b5786);}};}function respondWithFilteredResult(_0x5365d8,_0x5dc16f){return function(_0x33d511){if(_0x33d511){var _0x4a4b36=typeof _0x5dc16f[_0x8b57('0x2f')]===_0x8b57('0x30')&&typeof _0x5dc16f[_0x8b57('0x31')]===_0x8b57('0x30');var _0xe2f2df=_0x33d511[_0x8b57('0x32')];var _0xb2d9fa=_0x4a4b36?0x0:_0x5dc16f[_0x8b57('0x2f')];var _0x2e32e5=_0x4a4b36?_0x33d511[_0x8b57('0x32')]:_0x5dc16f['offset']+_0x5dc16f['limit'];var _0x3a74d7;if(_0x2e32e5>=_0xe2f2df){_0x2e32e5=_0xe2f2df;_0x3a74d7=0xc8;}else{_0x3a74d7=0xce;}_0x5365d8[_0x8b57('0x2c')](_0x3a74d7);return _0x5365d8['set'](_0x8b57('0x33'),_0xb2d9fa+'-'+_0x2e32e5+'/'+_0xe2f2df)['json'](_0x33d511);}return null;};}function patchUpdates(_0x12a821){return function(_0x138f26){try{jsonpatch[_0x8b57('0x34')](_0x138f26,_0x12a821,!![]);}catch(_0x1bb1f4){return BPromise['reject'](_0x1bb1f4);}return _0x138f26[_0x8b57('0x35')]();};}function saveUpdates(_0x339cfe,_0x2d4b63){return function(_0x27dc1b){if(_0x27dc1b){return _0x27dc1b['update'](_0x339cfe)[_0x8b57('0x36')](function(_0x442d6b){return _0x442d6b;});}return null;};}function removeEntity(_0x54ef43,_0x51ce7b){return function(_0x40d6d2){if(_0x40d6d2){return _0x40d6d2[_0x8b57('0x37')]()[_0x8b57('0x36')](function(){_0x54ef43[_0x8b57('0x2c')](0xcc)[_0x8b57('0x2d')]();});}};}function handleEntityNotFound(_0x25096e,_0x3ee641){return function(_0x32cf1c){if(!_0x32cf1c){_0x25096e[_0x8b57('0x2b')](0x194);}return _0x32cf1c;};}function handleError(_0x483992,_0x51b9d2){_0x51b9d2=_0x51b9d2||0x1f4;return function(_0x2b880b){logger[_0x8b57('0x28')](_0x2b880b[_0x8b57('0x38')]);if(_0x2b880b[_0x8b57('0x39')]){delete _0x2b880b['name'];}_0x483992['status'](_0x51b9d2)['send'](_0x2b880b);};}exports[_0x8b57('0x3a')]=function(_0x494fdc,_0x12b4f6){var _0x20d08d={},_0x4bdcb4={},_0x2ad3b2={'count':0x0,'rows':[]};var _0x1a3592=_[_0x8b57('0x3b')](db[_0x8b57('0x3c')]['rawAttributes'],function(_0x2eccfd){return{'name':_0x2eccfd[_0x8b57('0x3d')],'type':_0x2eccfd[_0x8b57('0x3e')][_0x8b57('0x3f')]};});_0x4bdcb4[_0x8b57('0x40')]=_[_0x8b57('0x3b')](_0x1a3592,_0x8b57('0x39'));_0x4bdcb4['query']=_[_0x8b57('0x41')](_0x494fdc['query']);_0x4bdcb4[_0x8b57('0x42')]=_['intersection'](_0x4bdcb4[_0x8b57('0x40')],_0x4bdcb4[_0x8b57('0x43')]);_0x20d08d[_0x8b57('0x44')]=_['intersection'](_0x4bdcb4[_0x8b57('0x40')],qs['fields'](_0x494fdc[_0x8b57('0x43')][_0x8b57('0x45')]));_0x20d08d['attributes']=_0x20d08d['attributes'][_0x8b57('0x46')]?_0x20d08d['attributes']:_0x4bdcb4['model'];if(!_0x494fdc[_0x8b57('0x43')][_0x8b57('0x47')]('nolimit')){_0x20d08d['limit']=qs[_0x8b57('0x31')](_0x494fdc[_0x8b57('0x43')]['limit']);_0x20d08d[_0x8b57('0x2f')]=qs[_0x8b57('0x2f')](_0x494fdc[_0x8b57('0x43')][_0x8b57('0x2f')]);}_0x20d08d['order']=qs[_0x8b57('0x48')](_0x494fdc[_0x8b57('0x43')][_0x8b57('0x48')]);_0x20d08d[_0x8b57('0x49')]=qs[_0x8b57('0x42')](_[_0x8b57('0x4a')](_0x494fdc['query'],_0x4bdcb4[_0x8b57('0x42')]),_0x1a3592);if(_0x494fdc[_0x8b57('0x43')][_0x8b57('0x4b')]){_0x20d08d[_0x8b57('0x49')]=_['merge'](_0x20d08d['where'],{'$or':_[_0x8b57('0x3b')](_0x1a3592,function(_0x5ab97b){if(_0x5ab97b[_0x8b57('0x3e')]!==_0x8b57('0x4c')){var _0x4aaa66={};_0x4aaa66[_0x5ab97b[_0x8b57('0x39')]]={'$like':'%'+_0x494fdc[_0x8b57('0x43')][_0x8b57('0x4b')]+'%'};return _0x4aaa66;}})});}_0x20d08d=_['merge']({},_0x20d08d,_0x494fdc['options']);var _0xb05ace={'where':_0x20d08d[_0x8b57('0x49')]};return db['ChatMessage'][_0x8b57('0x32')](_0xb05ace)[_0x8b57('0x36')](function(_0x1ab253){_0x2ad3b2[_0x8b57('0x32')]=_0x1ab253;if(_0x494fdc['query'][_0x8b57('0x4d')]){_0x20d08d[_0x8b57('0x4e')]=[{'all':!![]}];}return db['ChatMessage'][_0x8b57('0x4f')](_0x20d08d);})[_0x8b57('0x36')](function(_0x36ba71){_0x2ad3b2['rows']=_0x36ba71;return _0x2ad3b2;})['then'](respondWithFilteredResult(_0x12b4f6,_0x20d08d))[_0x8b57('0x2a')](handleError(_0x12b4f6,null));};exports[_0x8b57('0x50')]=function(_0x42ea98,_0x3a93c0){var _0xd8b354={'raw':!![],'where':{'id':_0x42ea98[_0x8b57('0x51')]['id']}},_0x3ac162={};_0x3ac162[_0x8b57('0x40')]=_[_0x8b57('0x41')](db['ChatMessage']['rawAttributes']);_0x3ac162[_0x8b57('0x43')]=_['keys'](_0x42ea98[_0x8b57('0x43')]);_0x3ac162[_0x8b57('0x42')]=_['intersection'](_0x3ac162[_0x8b57('0x40')],_0x3ac162[_0x8b57('0x43')]);_0xd8b354[_0x8b57('0x44')]=_[_0x8b57('0x52')](_0x3ac162[_0x8b57('0x40')],qs[_0x8b57('0x45')](_0x42ea98['query'][_0x8b57('0x45')]));_0xd8b354[_0x8b57('0x44')]=_0xd8b354[_0x8b57('0x44')][_0x8b57('0x46')]?_0xd8b354['attributes']:_0x3ac162['model'];if(_0x42ea98[_0x8b57('0x43')][_0x8b57('0x4d')]){_0xd8b354[_0x8b57('0x4e')]=[{'all':!![]}];}_0xd8b354=_['merge']({},_0xd8b354,_0x42ea98[_0x8b57('0x53')]);return db['ChatMessage'][_0x8b57('0x54')](_0xd8b354)[_0x8b57('0x36')](handleEntityNotFound(_0x3a93c0,null))[_0x8b57('0x36')](respondWithResult(_0x3a93c0,null))[_0x8b57('0x2a')](handleError(_0x3a93c0,null));};exports['create']=function(_0x1ae543,_0x3f6aff){return db[_0x8b57('0x3c')][_0x8b57('0x55')](_0x1ae543[_0x8b57('0x56')],{})[_0x8b57('0x36')](respondWithResult(_0x3f6aff,0xc9))[_0x8b57('0x2a')](handleError(_0x3f6aff,null));};exports[_0x8b57('0x57')]=function(_0x1753fb,_0x393323){if(_0x1753fb['body']['id']){delete _0x1753fb['body']['id'];}return db[_0x8b57('0x3c')][_0x8b57('0x54')]({'where':{'id':_0x1753fb[_0x8b57('0x51')]['id']}})[_0x8b57('0x36')](handleEntityNotFound(_0x393323,null))[_0x8b57('0x36')](saveUpdates(_0x1753fb[_0x8b57('0x56')],null))[_0x8b57('0x36')](respondWithResult(_0x393323,null))['catch'](handleError(_0x393323,null));};exports[_0x8b57('0x37')]=function(_0x49c910,_0x27ad95){return db[_0x8b57('0x3c')][_0x8b57('0x54')]({'where':{'id':_0x49c910['params']['id']}})[_0x8b57('0x36')](handleEntityNotFound(_0x27ad95,null))[_0x8b57('0x36')](removeEntity(_0x27ad95,null))[_0x8b57('0x2a')](handleError(_0x27ad95,null));};exports[_0x8b57('0x58')]=function(_0x4d8edc,_0x453455){return db['ChatMessage'][_0x8b57('0x58')]()[_0x8b57('0x36')](respondWithResult(_0x453455,null))[_0x8b57('0x2a')](handleError(_0x453455,null));};var interaction_log=require('../../config/logger')('chat-interactions');exports[_0x8b57('0x59')]=function(_0x435776,_0x3a2fcc,_0x3cee6e){var _0x2a7f6e={'agent':{},'channel':_0x8b57('0x5a')};if(_0x435776['body']['id']){delete _0x435776[_0x8b57('0x56')]['id'];}_0x435776['body']['read']=!![];_0x435776[_0x8b57('0x56')]['readAt']=moment()[_0x8b57('0x5b')](_0x8b57('0x5c'));_0x435776[_0x8b57('0x56')]['UserId']=_0x435776[_0x8b57('0x56')]['UserId']||_0x435776['user']['id'];_0x2a7f6e[_0x8b57('0x5d')]['id']=_0x435776[_0x8b57('0x56')]['UserId'];return db[_0x8b57('0x3c')]['find']({'where':{'id':_0x435776[_0x8b57('0x51')]['id'],'UserId':null}})[_0x8b57('0x36')](handleEntityNotFound(_0x3a2fcc,null))[_0x8b57('0x36')](saveUpdates(_0x435776['body'],null))[_0x8b57('0x36')](function(_0x142320){if(_0x142320){_0x2a7f6e[_0x8b57('0x29')]=_0x142320[_0x8b57('0x5e')]({'plain':!![]});return db['ChatInteraction']['find']({'where':{'id':_0x142320[_0x8b57('0x5f')]}});}return null;})[_0x8b57('0x36')](handleEntityNotFound(_0x3a2fcc,null))[_0x8b57('0x36')](function(_0x4a7d4e){if(_0x4a7d4e){return _0x4a7d4e[_0x8b57('0x57')]({'UserId':_0x435776[_0x8b57('0x56')][_0x8b57('0x60')],'read1stAt':_[_0x8b57('0x61')](_0x4a7d4e[_0x8b57('0x62')])?moment()[_0x8b57('0x5b')](_0x8b57('0x5c')):undefined});}return null;})[_0x8b57('0x36')](function(_0x2c4cc4){if(_0x2c4cc4){_0x2a7f6e[_0x8b57('0x63')]=_0x2c4cc4[_0x8b57('0x5e')]({'plain':!![]});interaction_log['info']('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x435776[_0x8b57('0x64')]['id'],_0x435776[_0x8b57('0x64')][_0x8b57('0x39')],_0x435776[_0x8b57('0x64')][_0x8b57('0x65')],_0x2a7f6e[_0x8b57('0x63')]['id'],_0x435776[_0x8b57('0x56')]?JSON[_0x8b57('0x27')](_0x435776[_0x8b57('0x56')]):'null');return respondWithRpcPromise(_0x8b57('0x66'),_0x8b57('0x67'),_0x2a7f6e);}return null;})[_0x8b57('0x36')](function(_0x2dc099){var _0x177796=_0x8b57('0x68')+_0x2dc099[_0x8b57('0x29')][_0x8b57('0x69')];return db['sequelize']['query'](_0x177796,{'type':db[_0x8b57('0x6a')][_0x8b57('0x6b')][_0x8b57('0x6c')],'raw':!![]})[_0x8b57('0x36')](function(_0x437743){return _0x437743;});})[_0x8b57('0x36')](function(_0x5c36e6){if(_0x5c36e6){_0x2a7f6e['message']['contact']=_0x5c36e6[0x0];if(!_0x435776[_0x8b57('0x56')][_0x8b57('0x60')])return;return db['User']['find']({'where':{'id':_0x435776[_0x8b57('0x56')][_0x8b57('0x60')],'role':'agent'},'attributes':['id',_0x8b57('0x39'),_0x8b57('0x6d'),'email',_0x8b57('0x6e')],'raw':!![]});}return null;})['then'](function(_0x31e069){if(!_0x31e069)return null;_0x2a7f6e[_0x8b57('0x29')][_0x8b57('0x5d')]=_0x31e069;return _0x2a7f6e;})['then'](function(_0x396cf7){if(_0x396cf7){if(_0x435776['body']['manual']){_0x2a7f6e['message'][_0x8b57('0x6f')]=util[_0x8b57('0x5b')](_0x8b57('0x70'),_0x435776[_0x8b57('0x64')][_0x8b57('0x39')]);_0x2a7f6e[_0x8b57('0x29')][_0x8b57('0x71')]=_0x2a7f6e[_0x8b57('0x71')];_0x2a7f6e['message'][_0x8b57('0x72')]=_0x2a7f6e[_0x8b57('0x71')];_0x2a7f6e[_0x8b57('0x29')][_0x8b57('0x73')]='accept';return respondWithRpcPromise('EventManager','EventManager',{'event':_0x8b57('0x74'),'message':_[_0x8b57('0x75')](_0x2a7f6e[_0x8b57('0x29')],JSON[_0x8b57('0x76')](_0x2a7f6e[_0x8b57('0x63')]['formData']))},client9002)[_0x8b57('0x36')](function(){return _0x2a7f6e;});}return _0x2a7f6e;}return null;})[_0x8b57('0x36')](respondWithResult(_0x3a2fcc,null))[_0x8b57('0x2a')](handleError(_0x3a2fcc,null));};var interaction_log=require('../../config/logger')(_0x8b57('0x77'));exports[_0x8b57('0x78')]=function(_0x5871e6,_0x2596af,_0x31754b){var _0x1e2e3a={'agent':{},'channel':'chat'};if(_0x5871e6[_0x8b57('0x56')]['id']){delete _0x5871e6[_0x8b57('0x56')]['id'];}_0x5871e6[_0x8b57('0x56')]['UserId']=_0x5871e6[_0x8b57('0x56')]['UserId']||_0x5871e6[_0x8b57('0x64')]['id'];_0x1e2e3a[_0x8b57('0x5d')]['id']=_0x5871e6[_0x8b57('0x56')][_0x8b57('0x60')];return db['ChatMessage'][_0x8b57('0x54')]({'where':{'id':_0x5871e6['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2596af,null))['then'](function(_0x26b066){if(_0x26b066){_0x1e2e3a[_0x8b57('0x29')]=_0x26b066['get']({'plain':!![]});return db['ChatInteraction'][_0x8b57('0x54')]({'where':{'id':_0x26b066['ChatInteractionId']}});}return null;})[_0x8b57('0x36')](handleEntityNotFound(_0x2596af,null))[_0x8b57('0x36')](function(_0x46880b){if(_0x46880b){_0x1e2e3a[_0x8b57('0x63')]=_0x46880b[_0x8b57('0x5e')]({'plain':!![]});interaction_log['info']('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x5871e6[_0x8b57('0x64')]['id'],_0x5871e6[_0x8b57('0x64')][_0x8b57('0x39')],_0x5871e6[_0x8b57('0x64')][_0x8b57('0x65')],_0x1e2e3a[_0x8b57('0x63')]['id'],_0x5871e6[_0x8b57('0x56')]?JSON[_0x8b57('0x27')](_0x5871e6[_0x8b57('0x56')]):_0x8b57('0x79'));return respondWithRpcPromise('RejectMessage','rejectMessage',_0x1e2e3a);}return null;})[_0x8b57('0x36')](function(_0x33cb89){var _0x2ea0c2=_0x8b57('0x68')+_0x33cb89[_0x8b57('0x29')][_0x8b57('0x69')];return db[_0x8b57('0x7a')][_0x8b57('0x43')](_0x2ea0c2,{'type':db[_0x8b57('0x6a')][_0x8b57('0x6b')]['SELECT'],'raw':!![]})[_0x8b57('0x36')](function(_0x23e5ce){return _0x23e5ce;});})[_0x8b57('0x36')](function(_0x44b871){if(_0x44b871){_0x1e2e3a[_0x8b57('0x29')][_0x8b57('0x7b')]=_0x44b871[0x0];if(!_0x5871e6['body'][_0x8b57('0x60')])return;return db['User']['find']({'where':{'id':_0x5871e6[_0x8b57('0x56')][_0x8b57('0x60')],'role':_0x8b57('0x5d')},'attributes':['id',_0x8b57('0x39'),_0x8b57('0x6d'),_0x8b57('0x7c'),_0x8b57('0x6e')],'raw':!![]});}return null;})[_0x8b57('0x36')](function(_0x43bf58){if(!_0x43bf58)return null;_0x1e2e3a[_0x8b57('0x29')]['agent']=_0x43bf58;return _0x1e2e3a;})['then'](function(_0x27599c){if(_0x27599c){_0x27599c[_0x8b57('0x29')][_0x8b57('0x6f')]=util[_0x8b57('0x5b')]('SIP/%s',_0x5871e6[_0x8b57('0x64')]['name']);_0x27599c[_0x8b57('0x29')][_0x8b57('0x71')]=_0x1e2e3a[_0x8b57('0x71')];_0x27599c[_0x8b57('0x29')][_0x8b57('0x72')]=_0x1e2e3a[_0x8b57('0x71')];_0x27599c[_0x8b57('0x29')][_0x8b57('0x73')]=_0x8b57('0x78');respondWithRpcPromise(_0x8b57('0x7d'),_0x8b57('0x7d'),{'event':_0x8b57('0x7e'),'message':_[_0x8b57('0x75')](_0x1e2e3a[_0x8b57('0x29')],JSON[_0x8b57('0x76')](_0x1e2e3a[_0x8b57('0x63')][_0x8b57('0x7f')]))},client9002);return _0x1e2e3a;}return null;})['then'](respondWithResult(_0x2596af,null))[_0x8b57('0x2a')](handleError(_0x2596af,null));};
\ No newline at end of file
+var _0x36f7=['find','describe','chat','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','ChatInteractionId','isNil','read1stAt','format','interaction','get','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','stringify','null','AcceptMessage','acceptMessage','ContactId','sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','channel','motionChannel','event','accept','EventManager','parse','formData','chat-interactions','ChatInteraction','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','fs-extra','squel','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./chatMessage.socket','jayson/promise','client','http','request','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','error','message','result','catch','sendStatus','status','end','json','undefined','offset','limit','set','Content-Range','apply','reject','save','update','stack','name','send','index','map','ChatMessage','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','count','include','findAll','show','params','includeAll','create','body'];(function(_0x1762ee,_0x38d3b9){var _0x24c21e=function(_0xf1bf5){while(--_0xf1bf5){_0x1762ee['push'](_0x1762ee['shift']());}};_0x24c21e(++_0x38d3b9);}(_0x36f7,0xb1));var _0x736f=function(_0xb9e1ba,_0x3f15b7){_0xb9e1ba=_0xb9e1ba-0x0;var _0x4dd0d9=_0x36f7[_0xb9e1ba];return _0x4dd0d9;};'use strict';var emlformat=require(_0x736f('0x0'));var rimraf=require(_0x736f('0x1'));var zipdir=require(_0x736f('0x2'));var jsonpatch=require(_0x736f('0x3'));var rp=require('request-promise');var moment=require(_0x736f('0x4'));var BPromise=require(_0x736f('0x5'));var Mustache=require(_0x736f('0x6'));var util=require(_0x736f('0x7'));var path=require('path');var sox=require(_0x736f('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x736f('0x9'));var _=require('lodash');var squel=require(_0x736f('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x736f('0xb'));var querystring=require(_0x736f('0xc'));var Papa=require(_0x736f('0xd'));var Redis=require('ioredis');var authService=require(_0x736f('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x736f('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x736f('0x10'))(_0x736f('0x11'));var utils=require(_0x736f('0x12'));var config=require(_0x736f('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x736f('0x14'))['db'];config[_0x736f('0x15')]=_['defaults'](config['redis'],{'host':_0x736f('0x16'),'port':0x18eb});var socket=require(_0x736f('0x17'))(new Redis(config[_0x736f('0x15')]));require(_0x736f('0x18'))['register'](socket);var jayson=require(_0x736f('0x19'));var client=jayson[_0x736f('0x1a')][_0x736f('0x1b')]({'port':0x232c});var client9002=jayson[_0x736f('0x1a')][_0x736f('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x752ed2,_0x275207,_0x13c130,_0x152408){return new BPromise(function(_0x1b0137,_0x2733a8){var _0x5b6ed0=_0x152408||client;return _0x5b6ed0[_0x736f('0x1c')](_0x752ed2,_0x13c130)[_0x736f('0x1d')](function(_0x1d5223){logger[_0x736f('0x1e')](_0x736f('0x1f'),_0x275207,_0x736f('0x20'));logger[_0x736f('0x21')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x275207,'request\x20sent',JSON['stringify'](_0x1d5223));if(_0x1d5223[_0x736f('0x22')]){if(_0x1d5223[_0x736f('0x22')]['code']===0x1f4){logger[_0x736f('0x22')](_0x736f('0x1f'),_0x275207,_0x1d5223[_0x736f('0x22')][_0x736f('0x23')]);return _0x2733a8(_0x1d5223[_0x736f('0x22')]['message']);}logger[_0x736f('0x22')](_0x736f('0x1f'),_0x275207,_0x1d5223['error'][_0x736f('0x23')]);return _0x1b0137(_0x1d5223[_0x736f('0x22')][_0x736f('0x23')]);}else{logger[_0x736f('0x1e')](_0x736f('0x1f'),_0x275207,'request\x20sent');_0x1b0137(_0x1d5223[_0x736f('0x24')][_0x736f('0x23')]);}})[_0x736f('0x25')](function(_0x7e3caa){logger[_0x736f('0x22')](_0x736f('0x1f'),_0x275207,_0x7e3caa);_0x2733a8(_0x7e3caa);});});}function respondWithStatusCode(_0x2e6337,_0x1874c0){_0x1874c0=_0x1874c0||0xcc;return function(_0x52d192){if(_0x52d192){return _0x2e6337[_0x736f('0x26')](_0x1874c0);}return _0x2e6337[_0x736f('0x27')](_0x1874c0)[_0x736f('0x28')]();};}function respondWithResult(_0xb12b8e,_0x24a324){_0x24a324=_0x24a324||0xc8;return function(_0x56ec5e){if(_0x56ec5e){return _0xb12b8e[_0x736f('0x27')](_0x24a324)[_0x736f('0x29')](_0x56ec5e);}};}function respondWithFilteredResult(_0x33faa5,_0x5e2a97){return function(_0x53b501){if(_0x53b501){var _0x47130c=typeof _0x5e2a97['offset']==='undefined'&&typeof _0x5e2a97['limit']===_0x736f('0x2a');var _0x17cb45=_0x53b501['count'];var _0x238ce6=_0x47130c?0x0:_0x5e2a97[_0x736f('0x2b')];var _0x5e426f=_0x47130c?_0x53b501['count']:_0x5e2a97[_0x736f('0x2b')]+_0x5e2a97[_0x736f('0x2c')];var _0x43a594;if(_0x5e426f>=_0x17cb45){_0x5e426f=_0x17cb45;_0x43a594=0xc8;}else{_0x43a594=0xce;}_0x33faa5[_0x736f('0x27')](_0x43a594);return _0x33faa5[_0x736f('0x2d')](_0x736f('0x2e'),_0x238ce6+'-'+_0x5e426f+'/'+_0x17cb45)[_0x736f('0x29')](_0x53b501);}return null;};}function patchUpdates(_0x1323da){return function(_0x483064){try{jsonpatch[_0x736f('0x2f')](_0x483064,_0x1323da,!![]);}catch(_0x86854c){return BPromise[_0x736f('0x30')](_0x86854c);}return _0x483064[_0x736f('0x31')]();};}function saveUpdates(_0x3cba1f,_0x11f2b6){return function(_0x4000f0){if(_0x4000f0){return _0x4000f0[_0x736f('0x32')](_0x3cba1f)['then'](function(_0x1790ee){return _0x1790ee;});}return null;};}function removeEntity(_0x47f274,_0x2ad3e2){return function(_0x230655){if(_0x230655){return _0x230655['destroy']()[_0x736f('0x1d')](function(){_0x47f274[_0x736f('0x27')](0xcc)[_0x736f('0x28')]();});}};}function handleEntityNotFound(_0x3353da,_0x18a79b){return function(_0x5d5932){if(!_0x5d5932){_0x3353da[_0x736f('0x26')](0x194);}return _0x5d5932;};}function handleError(_0x135747,_0x190774){_0x190774=_0x190774||0x1f4;return function(_0x231351){logger[_0x736f('0x22')](_0x231351[_0x736f('0x33')]);if(_0x231351['name']){delete _0x231351[_0x736f('0x34')];}_0x135747[_0x736f('0x27')](_0x190774)[_0x736f('0x35')](_0x231351);};}exports[_0x736f('0x36')]=function(_0x15639c,_0x453e88){var _0x28779f={},_0x127f13={},_0x3fd1d7={'count':0x0,'rows':[]};var _0xb16718=_[_0x736f('0x37')](db[_0x736f('0x38')][_0x736f('0x39')],function(_0x9343c7){return{'name':_0x9343c7[_0x736f('0x3a')],'type':_0x9343c7[_0x736f('0x3b')][_0x736f('0x3c')]};});_0x127f13[_0x736f('0x3d')]=_[_0x736f('0x37')](_0xb16718,_0x736f('0x34'));_0x127f13[_0x736f('0x3e')]=_[_0x736f('0x3f')](_0x15639c[_0x736f('0x3e')]);_0x127f13['filters']=_[_0x736f('0x40')](_0x127f13[_0x736f('0x3d')],_0x127f13['query']);_0x28779f[_0x736f('0x41')]=_[_0x736f('0x40')](_0x127f13['model'],qs[_0x736f('0x42')](_0x15639c[_0x736f('0x3e')]['fields']));_0x28779f['attributes']=_0x28779f[_0x736f('0x41')][_0x736f('0x43')]?_0x28779f['attributes']:_0x127f13[_0x736f('0x3d')];if(!_0x15639c[_0x736f('0x3e')][_0x736f('0x44')](_0x736f('0x45'))){_0x28779f[_0x736f('0x2c')]=qs[_0x736f('0x2c')](_0x15639c[_0x736f('0x3e')][_0x736f('0x2c')]);_0x28779f['offset']=qs[_0x736f('0x2b')](_0x15639c[_0x736f('0x3e')][_0x736f('0x2b')]);}_0x28779f[_0x736f('0x46')]=qs[_0x736f('0x47')](_0x15639c[_0x736f('0x3e')][_0x736f('0x47')]);_0x28779f[_0x736f('0x48')]=qs[_0x736f('0x49')](_[_0x736f('0x4a')](_0x15639c['query'],_0x127f13[_0x736f('0x49')]),_0xb16718);if(_0x15639c[_0x736f('0x3e')][_0x736f('0x4b')]){_0x28779f['where']=_[_0x736f('0x4c')](_0x28779f[_0x736f('0x48')],{'$or':_[_0x736f('0x37')](_0xb16718,function(_0x492bcc){if(_0x492bcc[_0x736f('0x3b')]!==_0x736f('0x4d')){var _0xc254a4={};_0xc254a4[_0x492bcc[_0x736f('0x34')]]={'$like':'%'+_0x15639c[_0x736f('0x3e')][_0x736f('0x4b')]+'%'};return _0xc254a4;}})});}_0x28779f=_[_0x736f('0x4c')]({},_0x28779f,_0x15639c[_0x736f('0x4e')]);var _0x2be783={'where':_0x28779f[_0x736f('0x48')]};return db[_0x736f('0x38')][_0x736f('0x4f')](_0x2be783)[_0x736f('0x1d')](function(_0x58b87e){_0x3fd1d7[_0x736f('0x4f')]=_0x58b87e;if(_0x15639c[_0x736f('0x3e')]['includeAll']){_0x28779f[_0x736f('0x50')]=[{'all':!![]}];}return db[_0x736f('0x38')][_0x736f('0x51')](_0x28779f);})['then'](function(_0x4ae221){_0x3fd1d7['rows']=_0x4ae221;return _0x3fd1d7;})['then'](respondWithFilteredResult(_0x453e88,_0x28779f))[_0x736f('0x25')](handleError(_0x453e88,null));};exports[_0x736f('0x52')]=function(_0x135993,_0x47c7f3){var _0x13ecb5={'raw':!![],'where':{'id':_0x135993[_0x736f('0x53')]['id']}},_0x1589fe={};_0x1589fe[_0x736f('0x3d')]=_[_0x736f('0x3f')](db[_0x736f('0x38')][_0x736f('0x39')]);_0x1589fe[_0x736f('0x3e')]=_[_0x736f('0x3f')](_0x135993[_0x736f('0x3e')]);_0x1589fe[_0x736f('0x49')]=_['intersection'](_0x1589fe['model'],_0x1589fe['query']);_0x13ecb5[_0x736f('0x41')]=_[_0x736f('0x40')](_0x1589fe[_0x736f('0x3d')],qs['fields'](_0x135993[_0x736f('0x3e')][_0x736f('0x42')]));_0x13ecb5[_0x736f('0x41')]=_0x13ecb5['attributes'][_0x736f('0x43')]?_0x13ecb5[_0x736f('0x41')]:_0x1589fe[_0x736f('0x3d')];if(_0x135993[_0x736f('0x3e')][_0x736f('0x54')]){_0x13ecb5[_0x736f('0x50')]=[{'all':!![]}];}_0x13ecb5=_['merge']({},_0x13ecb5,_0x135993['options']);return db[_0x736f('0x38')]['find'](_0x13ecb5)[_0x736f('0x1d')](handleEntityNotFound(_0x47c7f3,null))[_0x736f('0x1d')](respondWithResult(_0x47c7f3,null))[_0x736f('0x25')](handleError(_0x47c7f3,null));};exports[_0x736f('0x55')]=function(_0x3c2f30,_0x33df2f){return db[_0x736f('0x38')][_0x736f('0x55')](_0x3c2f30[_0x736f('0x56')],{})[_0x736f('0x1d')](respondWithResult(_0x33df2f,0xc9))[_0x736f('0x25')](handleError(_0x33df2f,null));};exports['update']=function(_0x55b9e2,_0x590b63){if(_0x55b9e2[_0x736f('0x56')]['id']){delete _0x55b9e2['body']['id'];}return db[_0x736f('0x38')][_0x736f('0x57')]({'where':{'id':_0x55b9e2[_0x736f('0x53')]['id']}})[_0x736f('0x1d')](handleEntityNotFound(_0x590b63,null))[_0x736f('0x1d')](saveUpdates(_0x55b9e2[_0x736f('0x56')],null))[_0x736f('0x1d')](respondWithResult(_0x590b63,null))[_0x736f('0x25')](handleError(_0x590b63,null));};exports['destroy']=function(_0x183b70,_0x2b8cb8){return db['ChatMessage'][_0x736f('0x57')]({'where':{'id':_0x183b70['params']['id']}})[_0x736f('0x1d')](handleEntityNotFound(_0x2b8cb8,null))[_0x736f('0x1d')](removeEntity(_0x2b8cb8,null))['catch'](handleError(_0x2b8cb8,null));};exports[_0x736f('0x58')]=function(_0x2b63ff,_0x48e1fd){return db[_0x736f('0x38')][_0x736f('0x58')]()[_0x736f('0x1d')](respondWithResult(_0x48e1fd,null))[_0x736f('0x25')](handleError(_0x48e1fd,null));};var interaction_log=require(_0x736f('0x10'))('chat-interactions');exports['accept']=function(_0x416b88,_0x43fdaf,_0x4bad78){var _0x34ea8b={'agent':{},'channel':_0x736f('0x59')};if(_0x416b88[_0x736f('0x56')]['id']){delete _0x416b88[_0x736f('0x56')]['id'];}_0x416b88[_0x736f('0x56')]['read']=!![];_0x416b88[_0x736f('0x56')][_0x736f('0x5a')]=moment()['format'](_0x736f('0x5b'));_0x416b88[_0x736f('0x56')][_0x736f('0x5c')]=_0x416b88[_0x736f('0x56')]['UserId']||_0x416b88[_0x736f('0x5d')]['id'];_0x34ea8b[_0x736f('0x5e')]['id']=_0x416b88[_0x736f('0x56')]['UserId'];return db[_0x736f('0x38')]['find']({'where':{'id':_0x416b88[_0x736f('0x53')]['id'],'UserId':null}})[_0x736f('0x1d')](handleEntityNotFound(_0x43fdaf,null))[_0x736f('0x1d')](saveUpdates(_0x416b88[_0x736f('0x56')],null))['then'](function(_0x4f1db5){if(_0x4f1db5){_0x34ea8b[_0x736f('0x23')]=_0x4f1db5['get']({'plain':!![]});return db['ChatInteraction'][_0x736f('0x57')]({'where':{'id':_0x4f1db5[_0x736f('0x5f')]}});}return null;})['then'](handleEntityNotFound(_0x43fdaf,null))[_0x736f('0x1d')](function(_0x527ee1){if(_0x527ee1){return _0x527ee1[_0x736f('0x32')]({'UserId':_0x416b88['body'][_0x736f('0x5c')],'read1stAt':_[_0x736f('0x60')](_0x527ee1[_0x736f('0x61')])?moment()[_0x736f('0x62')](_0x736f('0x5b')):undefined});}return null;})[_0x736f('0x1d')](function(_0x35d4ac){if(_0x35d4ac){_0x34ea8b[_0x736f('0x63')]=_0x35d4ac[_0x736f('0x64')]({'plain':!![]});interaction_log[_0x736f('0x1e')](_0x736f('0x65'),_0x416b88[_0x736f('0x5d')]['id'],_0x416b88[_0x736f('0x5d')][_0x736f('0x34')],_0x416b88[_0x736f('0x5d')]['role'],_0x34ea8b[_0x736f('0x63')]['id'],_0x416b88['body']?JSON[_0x736f('0x66')](_0x416b88[_0x736f('0x56')]):_0x736f('0x67'));return respondWithRpcPromise(_0x736f('0x68'),_0x736f('0x69'),_0x34ea8b);}return null;})[_0x736f('0x1d')](function(_0x5a9785){var _0x496845='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5a9785['message'][_0x736f('0x6a')];return db[_0x736f('0x6b')][_0x736f('0x3e')](_0x496845,{'type':db['Sequelize'][_0x736f('0x6c')][_0x736f('0x6d')],'raw':!![]})[_0x736f('0x1d')](function(_0x359548){return _0x359548;});})['then'](function(_0x351ca9){if(_0x351ca9){_0x34ea8b[_0x736f('0x23')][_0x736f('0x6e')]=_0x351ca9[0x0];if(!_0x416b88['body'][_0x736f('0x5c')])return;return db[_0x736f('0x6f')][_0x736f('0x57')]({'where':{'id':_0x416b88[_0x736f('0x56')][_0x736f('0x5c')],'role':_0x736f('0x5e')},'attributes':['id',_0x736f('0x34'),_0x736f('0x70'),_0x736f('0x71'),_0x736f('0x72')],'raw':!![]});}return null;})[_0x736f('0x1d')](function(_0x2fe664){if(!_0x2fe664)return null;_0x34ea8b[_0x736f('0x23')][_0x736f('0x5e')]=_0x2fe664;return _0x34ea8b;})['then'](function(_0x37cf14){if(_0x37cf14){if(_0x416b88[_0x736f('0x56')][_0x736f('0x73')]){_0x34ea8b[_0x736f('0x23')]['interface']=util['format']('SIP/%s',_0x416b88[_0x736f('0x5d')]['name']);_0x34ea8b[_0x736f('0x23')][_0x736f('0x74')]=_0x34ea8b['channel'];_0x34ea8b[_0x736f('0x23')][_0x736f('0x75')]=_0x34ea8b[_0x736f('0x74')];_0x34ea8b[_0x736f('0x23')][_0x736f('0x76')]=_0x736f('0x77');return respondWithRpcPromise(_0x736f('0x78'),'EventManager',{'event':'acceptmessage','message':_[_0x736f('0x4c')](_0x34ea8b[_0x736f('0x23')],JSON[_0x736f('0x79')](_0x34ea8b[_0x736f('0x63')][_0x736f('0x7a')]))},client9002)[_0x736f('0x1d')](function(){return _0x34ea8b;});}return _0x34ea8b;}return null;})[_0x736f('0x1d')](respondWithResult(_0x43fdaf,null))['catch'](handleError(_0x43fdaf,null));};var interaction_log=require(_0x736f('0x10'))(_0x736f('0x7b'));exports[_0x736f('0x30')]=function(_0x57a6f5,_0x24bcdf,_0x2f82f3){var _0xfaa411={'agent':{},'channel':_0x736f('0x59')};if(_0x57a6f5[_0x736f('0x56')]['id']){delete _0x57a6f5[_0x736f('0x56')]['id'];}_0x57a6f5[_0x736f('0x56')][_0x736f('0x5c')]=_0x57a6f5[_0x736f('0x56')]['UserId']||_0x57a6f5[_0x736f('0x5d')]['id'];_0xfaa411['agent']['id']=_0x57a6f5[_0x736f('0x56')][_0x736f('0x5c')];return db[_0x736f('0x38')]['find']({'where':{'id':_0x57a6f5[_0x736f('0x53')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x24bcdf,null))[_0x736f('0x1d')](function(_0x1b66f6){if(_0x1b66f6){_0xfaa411[_0x736f('0x23')]=_0x1b66f6[_0x736f('0x64')]({'plain':!![]});return db[_0x736f('0x7c')][_0x736f('0x57')]({'where':{'id':_0x1b66f6['ChatInteractionId']}});}return null;})[_0x736f('0x1d')](handleEntityNotFound(_0x24bcdf,null))[_0x736f('0x1d')](function(_0x8f6a9a){if(_0x8f6a9a){_0xfaa411[_0x736f('0x63')]=_0x8f6a9a[_0x736f('0x64')]({'plain':!![]});interaction_log[_0x736f('0x1e')](_0x736f('0x7d'),_0x57a6f5['user']['id'],_0x57a6f5['user'][_0x736f('0x34')],_0x57a6f5['user'][_0x736f('0x7e')],_0xfaa411['interaction']['id'],_0x57a6f5['body']?JSON[_0x736f('0x66')](_0x57a6f5['body']):_0x736f('0x67'));return respondWithRpcPromise(_0x736f('0x7f'),_0x736f('0x80'),_0xfaa411);}return null;})['then'](function(_0x1d174c){var _0x51ca51=_0x736f('0x81')+_0x1d174c['message'][_0x736f('0x6a')];return db[_0x736f('0x6b')][_0x736f('0x3e')](_0x51ca51,{'type':db[_0x736f('0x82')][_0x736f('0x6c')][_0x736f('0x6d')],'raw':!![]})[_0x736f('0x1d')](function(_0x24209e){return _0x24209e;});})['then'](function(_0x3fd32e){if(_0x3fd32e){_0xfaa411[_0x736f('0x23')][_0x736f('0x6e')]=_0x3fd32e[0x0];if(!_0x57a6f5['body']['UserId'])return;return db['User'][_0x736f('0x57')]({'where':{'id':_0x57a6f5[_0x736f('0x56')]['UserId'],'role':'agent'},'attributes':['id',_0x736f('0x34'),_0x736f('0x70'),'email',_0x736f('0x72')],'raw':!![]});}return null;})[_0x736f('0x1d')](function(_0x279585){if(!_0x279585)return null;_0xfaa411[_0x736f('0x23')][_0x736f('0x5e')]=_0x279585;return _0xfaa411;})[_0x736f('0x1d')](function(_0x55755c){if(_0x55755c){_0x55755c['message']['interface']=util[_0x736f('0x62')]('SIP/%s',_0x57a6f5[_0x736f('0x5d')][_0x736f('0x34')]);_0x55755c[_0x736f('0x23')][_0x736f('0x74')]=_0xfaa411['channel'];_0x55755c[_0x736f('0x23')][_0x736f('0x75')]=_0xfaa411[_0x736f('0x74')];_0x55755c[_0x736f('0x23')]['event']='reject';respondWithRpcPromise(_0x736f('0x78'),_0x736f('0x78'),{'event':_0x736f('0x83'),'message':_[_0x736f('0x4c')](_0xfaa411[_0x736f('0x23')],JSON[_0x736f('0x79')](_0xfaa411[_0x736f('0x63')][_0x736f('0x7a')]))},client9002);return _0xfaa411;}return null;})[_0x736f('0x1d')](respondWithResult(_0x24bcdf,null))[_0x736f('0x25')](handleError(_0x24bcdf,null));};
\ No newline at end of file
index 540197d..2861b7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea5f=['remove','emit','hasOwnProperty','hook','events','../../mysqldb','ChatMessage','save','update'];(function(_0x5d0af8,_0x204c8c){var _0x44a12b=function(_0x3b8880){while(--_0x3b8880){_0x5d0af8['push'](_0x5d0af8['shift']());}};_0x44a12b(++_0x204c8c);}(_0xea5f,0xb8));var _0xfea5=function(_0x59c301,_0x359c50){_0x59c301=_0x59c301-0x0;var _0x3866b9=_0xea5f[_0x59c301];return _0x3866b9;};'use strict';var EventEmitter=require(_0xfea5('0x0'));var ChatMessage=require(_0xfea5('0x1'))['db'][_0xfea5('0x2')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xfea5('0x3'),'afterUpdate':_0xfea5('0x4'),'afterDestroy':_0xfea5('0x5')};function emitEvent(_0x5ccc79){return function(_0x1badfe,_0x4e4b09,_0x50b597){ChatMessageEvents[_0xfea5('0x6')](_0x5ccc79+':'+_0x1badfe['id'],_0x1badfe);ChatMessageEvents[_0xfea5('0x6')](_0x5ccc79,_0x1badfe);_0x50b597(null);};}for(var e in events){if(events[_0xfea5('0x7')](e)){var event=events[e];ChatMessage[_0xfea5('0x8')](e,emitEvent(event));}}module['exports']=ChatMessageEvents;
\ No newline at end of file
+var _0x66f5=['exports','events','ChatMessage','setMaxListeners','remove','emit','hook'];(function(_0x16a073,_0x1020d0){var _0xa18781=function(_0x1edc91){while(--_0x1edc91){_0x16a073['push'](_0x16a073['shift']());}};_0xa18781(++_0x1020d0);}(_0x66f5,0x1cf));var _0x566f=function(_0x30739f,_0x4acda4){_0x30739f=_0x30739f-0x0;var _0x47f8fc=_0x66f5[_0x30739f];return _0x47f8fc;};'use strict';var EventEmitter=require(_0x566f('0x0'));var ChatMessage=require('../../mysqldb')['db'][_0x566f('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x566f('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x566f('0x3')};function emitEvent(_0x3485ca){return function(_0x553522,_0x5347a2,_0x15b491){ChatMessageEvents['emit'](_0x3485ca+':'+_0x553522['id'],_0x553522);ChatMessageEvents[_0x566f('0x4')](_0x3485ca,_0x553522);_0x15b491(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage[_0x566f('0x5')](e,emitEvent(event));}}module[_0x566f('0x6')]=ChatMessageEvents;
\ No newline at end of file
index 62a5926..a660353 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdab6=['secret','UserId','ChatInteraction','findOne','ChatInteractionId','then','update','toLowerCase','error','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','define','ChatMessage','chat_messages','body','FULLTEXT','models','get','direction','out'];(function(_0x10208d,_0x435c09){var _0x441041=function(_0x5756d0){while(--_0x5756d0){_0x10208d['push'](_0x10208d['shift']());}};_0x441041(++_0x435c09);}(_0xdab6,0x10f));var _0x6dab=function(_0x202c7a,_0x3dca8e){_0x202c7a=_0x202c7a-0x0;var _0x11d0d7=_0xdab6[_0x202c7a];return _0x11d0d7;};'use strict';var _=require('lodash');var util=require(_0x6dab('0x0'));var logger=require(_0x6dab('0x1'))(_0x6dab('0x2'));var moment=require(_0x6dab('0x3'));var BPromise=require(_0x6dab('0x4'));var rp=require(_0x6dab('0x5'));var fs=require('fs');var path=require(_0x6dab('0x6'));var rimraf=require(_0x6dab('0x7'));var config=require(_0x6dab('0x8'));var attributes=require(_0x6dab('0x9'));module['exports']=function(_0x481149,_0x1b7229){return _0x481149[_0x6dab('0xa')](_0x6dab('0xb'),attributes,{'tableName':_0x6dab('0xc'),'paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':[_0x6dab('0xd')],'type':_0x6dab('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x325777,_0x4035ea,_0x3774b2){var _0x205856=_0x481149[_0x6dab('0xf')];var _0x588a03=_0x325777[_0x6dab('0x10')]({'plain':!![]});if(_0x588a03[_0x6dab('0x11')]['toLowerCase']()==='in'||_0x588a03[_0x6dab('0x11')]['toLowerCase']()===_0x6dab('0x12')&&!_0x588a03[_0x6dab('0x13')]&&!_['isNil'](_0x588a03[_0x6dab('0x14')])){_0x205856[_0x6dab('0x15')][_0x6dab('0x16')]({'where':{'id':_0x588a03[_0x6dab('0x17')]}})[_0x6dab('0x18')](function(_0x6093a7){if(_0x6093a7){_0x6093a7[_0x6dab('0x19')]({'lastMsgAt':_0x588a03['createdAt'],'lastMsgDirection':_0x588a03[_0x6dab('0x11')][_0x6dab('0x1a')]()});}})['catch'](function(_0x540901){console[_0x6dab('0x1b')](_0x540901);});}_0x3774b2();}},'charset':'utf8mb4','collate':_0x6dab('0x1c')});};
\ No newline at end of file
+var _0x68fc=['toLowerCase','out','secret','ChatInteraction','findOne','ChatInteractionId','then','update','createdAt','catch','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','./chatMessage.attributes','exports','define','ChatMessage','body','FULLTEXT','models','get','direction'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x68fc,0x9d));var _0xc68f=function(_0x1988f1,_0x290a23){_0x1988f1=_0x1988f1-0x0;var _0x3c848e=_0x68fc[_0x1988f1];return _0x3c848e;};'use strict';var _=require(_0xc68f('0x0'));var util=require(_0xc68f('0x1'));var logger=require('../../config/logger')(_0xc68f('0x2'));var moment=require(_0xc68f('0x3'));var BPromise=require(_0xc68f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc68f('0x5'));var rimraf=require(_0xc68f('0x6'));var config=require(_0xc68f('0x7'));var attributes=require(_0xc68f('0x8'));module[_0xc68f('0x9')]=function(_0x300557,_0x41ceff){return _0x300557[_0xc68f('0xa')](_0xc68f('0xb'),attributes,{'tableName':'chat_messages','paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':[_0xc68f('0xc')],'type':_0xc68f('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3c9c4f,_0x21ab3e,_0x5164b5){var _0x58da4b=_0x300557[_0xc68f('0xe')];var _0x1de2e0=_0x3c9c4f[_0xc68f('0xf')]({'plain':!![]});if(_0x1de2e0[_0xc68f('0x10')][_0xc68f('0x11')]()==='in'||_0x1de2e0[_0xc68f('0x10')][_0xc68f('0x11')]()===_0xc68f('0x12')&&!_0x1de2e0[_0xc68f('0x13')]&&!_['isNil'](_0x1de2e0['UserId'])){_0x58da4b[_0xc68f('0x14')][_0xc68f('0x15')]({'where':{'id':_0x1de2e0[_0xc68f('0x16')]}})[_0xc68f('0x17')](function(_0x1a1872){if(_0x1a1872){_0x1a1872[_0xc68f('0x18')]({'lastMsgAt':_0x1de2e0[_0xc68f('0x19')],'lastMsgDirection':_0x1de2e0[_0xc68f('0x10')]['toLowerCase']()});}})[_0xc68f('0x1a')](function(_0x6b62ed){console['error'](_0x6b62ed);});}_0x5164b5();}},'charset':_0xc68f('0x1b'),'collate':_0xc68f('0x1c')});};
\ No newline at end of file
index 2a41a48..12cadd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5496=['ChatMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','CreateChatMessage','create','body','options','raw','debug','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http','redis','localhost','socket.io-emitter','./chatMessage.socket','register','then','info'];(function(_0x1165ac,_0x77fe80){var _0x15d1d6=function(_0x2cd65a){while(--_0x2cd65a){_0x1165ac['push'](_0x1165ac['shift']());}};_0x15d1d6(++_0x77fe80);}(_0x5496,0x175));var _0x6549=function(_0x55f8ad,_0x3e1b30){_0x55f8ad=_0x55f8ad-0x0;var _0x51c55a=_0x5496[_0x55f8ad];return _0x51c55a;};'use strict';var _=require(_0x6549('0x0'));var util=require(_0x6549('0x1'));var moment=require(_0x6549('0x2'));var BPromise=require(_0x6549('0x3'));var rs=require(_0x6549('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6549('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6549('0x6'))(_0x6549('0x7'));var config=require(_0x6549('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x6549('0x9')]({'port':0x232a});config[_0x6549('0xa')]=_['defaults'](config[_0x6549('0xa')],{'host':_0x6549('0xb'),'port':0x18eb});var socket=require(_0x6549('0xc'))(new Redis(config['redis']));require(_0x6549('0xd'))[_0x6549('0xe')](socket);function respondWithRpcPromise(_0x2ecce2,_0x135c2c,_0x1e5083){return new BPromise(function(_0x3e08a6,_0x50fa35){return client['request'](_0x2ecce2,_0x1e5083)[_0x6549('0xf')](function(_0xac828c){logger[_0x6549('0x10')](_0x6549('0x11'),_0x135c2c,_0x6549('0x12'));logger['debug']('ChatMessage,\x20%s,\x20%s,\x20%s',_0x135c2c,_0x6549('0x12'),JSON[_0x6549('0x13')](_0xac828c));if(_0xac828c['error']){if(_0xac828c[_0x6549('0x14')][_0x6549('0x15')]===0x1f4){logger[_0x6549('0x14')](_0x6549('0x11'),_0x135c2c,_0xac828c[_0x6549('0x14')][_0x6549('0x16')]);return _0x50fa35(_0xac828c['error']['message']);}logger[_0x6549('0x14')](_0x6549('0x11'),_0x135c2c,_0xac828c['error'][_0x6549('0x16')]);return _0x3e08a6(_0xac828c[_0x6549('0x14')][_0x6549('0x16')]);}else{logger[_0x6549('0x10')](_0x6549('0x11'),_0x135c2c,'request\x20sent');_0x3e08a6(_0xac828c['result'][_0x6549('0x16')]);}})['catch'](function(_0x56c15b){logger[_0x6549('0x14')](_0x6549('0x11'),_0x135c2c,_0x56c15b);_0x50fa35(_0x56c15b);});});}exports[_0x6549('0x17')]=function(_0xfca192){var _0x236fd9=this;return new Promise(function(_0x5ce3aa,_0x228117){return db['ChatMessage'][_0x6549('0x18')](_0xfca192[_0x6549('0x19')],{'raw':_0xfca192[_0x6549('0x1a')]?_0xfca192[_0x6549('0x1a')][_0x6549('0x1b')]===undefined?!![]:![]:!![]})[_0x6549('0xf')](function(_0x427b47){logger[_0x6549('0x10')](_0x6549('0x17'),_0xfca192);logger[_0x6549('0x1c')](_0x6549('0x17'),_0xfca192,JSON[_0x6549('0x13')](_0x427b47));_0x5ce3aa(_0x427b47);})[_0x6549('0x1d')](function(_0x5eeacd){logger[_0x6549('0x14')](_0x6549('0x17'),_0x5eeacd['message'],_0xfca192);_0x228117(_0x236fd9[_0x6549('0x14')](0x1f4,_0x5eeacd[_0x6549('0x16')]));});});};
\ No newline at end of file
+var _0xa0f4=['redis','localhost','socket.io-emitter','register','then','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','error','message','info','result','CreateChatMessage','ChatMessage','create','options','raw','stringify','catch','util','ioredis','../../mysqldb','../../config/utils','jayson/promise','http'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xa0f4,0x1b4));var _0x4a0f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa0f4[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x4a0f('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4a0f('0x1'));var db=require(_0x4a0f('0x2'))['db'];var utils=require(_0x4a0f('0x3'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x4a0f('0x4'));var client=jayson['client'][_0x4a0f('0x5')]({'port':0x232a});config['redis']=_['defaults'](config[_0x4a0f('0x6')],{'host':_0x4a0f('0x7'),'port':0x18eb});var socket=require(_0x4a0f('0x8'))(new Redis(config['redis']));require('./chatMessage.socket')[_0x4a0f('0x9')](socket);function respondWithRpcPromise(_0xc68ab2,_0x4380ba,_0xb799ba){return new BPromise(function(_0xb57069,_0x2bab88){return client['request'](_0xc68ab2,_0xb799ba)[_0x4a0f('0xa')](function(_0x19f6b3){logger['info'](_0x4a0f('0xb'),_0x4380ba,_0x4a0f('0xc'));logger[_0x4a0f('0xd')](_0x4a0f('0xe'),_0x4380ba,_0x4a0f('0xc'),JSON['stringify'](_0x19f6b3));if(_0x19f6b3[_0x4a0f('0xf')]){if(_0x19f6b3[_0x4a0f('0xf')]['code']===0x1f4){logger[_0x4a0f('0xf')](_0x4a0f('0xb'),_0x4380ba,_0x19f6b3[_0x4a0f('0xf')][_0x4a0f('0x10')]);return _0x2bab88(_0x19f6b3[_0x4a0f('0xf')][_0x4a0f('0x10')]);}logger[_0x4a0f('0xf')](_0x4a0f('0xb'),_0x4380ba,_0x19f6b3[_0x4a0f('0xf')][_0x4a0f('0x10')]);return _0xb57069(_0x19f6b3[_0x4a0f('0xf')]['message']);}else{logger[_0x4a0f('0x11')](_0x4a0f('0xb'),_0x4380ba,'request\x20sent');_0xb57069(_0x19f6b3[_0x4a0f('0x12')][_0x4a0f('0x10')]);}})['catch'](function(_0x2a1a5a){logger['error'](_0x4a0f('0xb'),_0x4380ba,_0x2a1a5a);_0x2bab88(_0x2a1a5a);});});}exports[_0x4a0f('0x13')]=function(_0x11aa09){var _0x430f91=this;return new Promise(function(_0x37a252,_0x3d06e0){return db[_0x4a0f('0x14')][_0x4a0f('0x15')](_0x11aa09['body'],{'raw':_0x11aa09[_0x4a0f('0x16')]?_0x11aa09[_0x4a0f('0x16')][_0x4a0f('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x324e6a){logger[_0x4a0f('0x11')]('CreateChatMessage',_0x11aa09);logger[_0x4a0f('0xd')](_0x4a0f('0x13'),_0x11aa09,JSON[_0x4a0f('0x18')](_0x324e6a));_0x37a252(_0x324e6a);})[_0x4a0f('0x19')](function(_0x4d42ef){logger[_0x4a0f('0xf')](_0x4a0f('0x13'),_0x4d42ef[_0x4a0f('0x10')],_0x11aa09);_0x3d06e0(_0x430f91[_0x4a0f('0xf')](0x1f4,_0x4d42ef['message']));});});};
\ No newline at end of file
index 813b22c..0e10d6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d6d=['update','emit','removeListener','length','./chatMessage.events','save','remove'];(function(_0x2efb2c,_0x253b0e){var _0x26a69a=function(_0x1ad3b0){while(--_0x1ad3b0){_0x2efb2c['push'](_0x2efb2c['shift']());}};_0x26a69a(++_0x253b0e);}(_0x3d6d,0xb3));var _0xd3d6=function(_0x484e47,_0x155a54){_0x484e47=_0x484e47-0x0;var _0x5c6ea5=_0x3d6d[_0x484e47];return _0x5c6ea5;};'use strict';var ChatMessageEvents=require(_0xd3d6('0x0'));var events=[_0xd3d6('0x1'),_0xd3d6('0x2'),_0xd3d6('0x3')];function createListener(_0x380c09,_0x1e1915){return function(_0x366f41){_0x1e1915[_0xd3d6('0x4')](_0x380c09,_0x366f41);};}function removeListener(_0x297bd6,_0x3d5e37){return function(){ChatMessageEvents[_0xd3d6('0x5')](_0x297bd6,_0x3d5e37);};}exports['register']=function(_0x5400f8){for(var _0x3f36=0x0,_0x1f02f5=events[_0xd3d6('0x6')];_0x3f36<_0x1f02f5;_0x3f36++){var _0x3c2a9b=events[_0x3f36];var _0x4356b7=createListener('chatMessage:'+_0x3c2a9b,_0x5400f8);ChatMessageEvents['on'](_0x3c2a9b,_0x4356b7);}};
\ No newline at end of file
+var _0x4ab0=['register','length','chatMessage:','save','remove','update'];(function(_0x5c218c,_0x3a1049){var _0x550901=function(_0x19e131){while(--_0x19e131){_0x5c218c['push'](_0x5c218c['shift']());}};_0x550901(++_0x3a1049);}(_0x4ab0,0xd5));var _0x04ab=function(_0x4a219b,_0x2f2e48){_0x4a219b=_0x4a219b-0x0;var _0x49c261=_0x4ab0[_0x4a219b];return _0x49c261;};'use strict';var ChatMessageEvents=require('./chatMessage.events');var events=[_0x04ab('0x0'),_0x04ab('0x1'),_0x04ab('0x2')];function createListener(_0x3d8417,_0x3a7b9f){return function(_0x51135e){_0x3a7b9f['emit'](_0x3d8417,_0x51135e);};}function removeListener(_0x45dfee,_0xb1bf2d){return function(){ChatMessageEvents['removeListener'](_0x45dfee,_0xb1bf2d);};}exports[_0x04ab('0x3')]=function(_0x2c5730){for(var _0x4edd2e=0x0,_0x3f5901=events[_0x04ab('0x4')];_0x4edd2e<_0x3f5901;_0x4edd2e++){var _0x1ff7f6=events[_0x4edd2e];var _0x4bc05e=createListener(_0x04ab('0x5')+_0x1ff7f6,_0x2c5730);ChatMessageEvents['on'](_0x1ff7f6,_0x4bc05e);}};
\ No newline at end of file
index 97daf8f..fac4fc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5042=['/:id','show','post','chatmessage:create','update','put','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatMessage.controller','isAuthenticated','get','/describe','describe'];(function(_0x44b8ac,_0xdf2fc3){var _0x71b2d4=function(_0x45a6e5){while(--_0x45a6e5){_0x44b8ac['push'](_0x44b8ac['shift']());}};_0x71b2d4(++_0xdf2fc3);}(_0x5042,0x138));var _0x2504=function(_0x19d15c,_0x3ab569){_0x19d15c=_0x19d15c-0x0;var _0x2999ea=_0x5042[_0x19d15c];return _0x2999ea;};'use strict';var multer=require(_0x2504('0x0'));var util=require(_0x2504('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x2504('0x2'));var router=express[_0x2504('0x3')]();var fs_extra=require(_0x2504('0x4'));var auth=require(_0x2504('0x5'));var interaction=require(_0x2504('0x6'));var config=require(_0x2504('0x7'));var controller=require(_0x2504('0x8'));router['get']('/',auth[_0x2504('0x9')](),controller['index']);router[_0x2504('0xa')](_0x2504('0xb'),auth['isAuthenticated'](),controller[_0x2504('0xc')]);router[_0x2504('0xa')](_0x2504('0xd'),auth[_0x2504('0x9')](),controller[_0x2504('0xe')]);router[_0x2504('0xf')]('/',auth[_0x2504('0x9')](),interaction['tracked']('chat',_0x2504('0x10')),controller['create']);router['put'](_0x2504('0xd'),controller[_0x2504('0x11')]);router[_0x2504('0x12')](_0x2504('0x13'),auth[_0x2504('0x9')](),controller[_0x2504('0x14')]);router[_0x2504('0x12')](_0x2504('0x15'),auth['isAuthenticated'](),controller[_0x2504('0x16')]);router[_0x2504('0x17')](_0x2504('0xd'),auth['isAuthenticated'](),controller[_0x2504('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0x9b0e=['/:id/reject','delete','destroy','exports','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','post','tracked','chat','chatmessage:create','create','put','accept'];(function(_0x5295df,_0x5b3179){var _0xdc87e2=function(_0x536ba2){while(--_0x536ba2){_0x5295df['push'](_0x5295df['shift']());}};_0xdc87e2(++_0x5b3179);}(_0x9b0e,0x15d));var _0xe9b0=function(_0x48eba8,_0x5522c4){_0x48eba8=_0x48eba8-0x0;var _0x40c836=_0x9b0e[_0x48eba8];return _0x40c836;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xe9b0('0x0'));var express=require(_0xe9b0('0x1'));var router=express[_0xe9b0('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xe9b0('0x3'));var interaction=require(_0xe9b0('0x4'));var config=require(_0xe9b0('0x5'));var controller=require('./chatMessage.controller');router[_0xe9b0('0x6')]('/',auth['isAuthenticated'](),controller[_0xe9b0('0x7')]);router[_0xe9b0('0x6')](_0xe9b0('0x8'),auth[_0xe9b0('0x9')](),controller[_0xe9b0('0xa')]);router[_0xe9b0('0x6')](_0xe9b0('0xb'),auth[_0xe9b0('0x9')](),controller['show']);router[_0xe9b0('0xc')]('/',auth[_0xe9b0('0x9')](),interaction[_0xe9b0('0xd')](_0xe9b0('0xe'),_0xe9b0('0xf')),controller[_0xe9b0('0x10')]);router[_0xe9b0('0x11')](_0xe9b0('0xb'),controller['update']);router[_0xe9b0('0x11')]('/:id/accept',auth[_0xe9b0('0x9')](),controller[_0xe9b0('0x12')]);router['put'](_0xe9b0('0x13'),auth[_0xe9b0('0x9')](),controller['reject']);router[_0xe9b0('0x14')](_0xe9b0('0xb'),auth[_0xe9b0('0x9')](),controller[_0xe9b0('0x15')]);module[_0xe9b0('0x16')]=router;
\ No newline at end of file
index a0270a4..62b6dfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['medium','sequelize','TEXT'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0b0e,0x187));var _0xe0b0=function(_0x1b9c2a,_0x50582e){_0x1b9c2a=_0x1b9c2a-0x0;var _0x21ab47=_0x0b0e[_0x1b9c2a];return _0x21ab47;};'use strict';var Sequelize=require(_0xe0b0('0x0'));module['exports']={'body':{'type':Sequelize[_0xe0b0('0x1')]('medium'),'allowNull':![]},'plainBody':{'type':Sequelize[_0xe0b0('0x1')](_0xe0b0('0x2')),'allowNull':![]}};
\ No newline at end of file
+var _0x5f66=['medium','TEXT','exports'];(function(_0x289bd9,_0x2a536b){var _0x1b3d9d=function(_0xf55f1a){while(--_0xf55f1a){_0x289bd9['push'](_0x289bd9['shift']());}};_0x1b3d9d(++_0x2a536b);}(_0x5f66,0x1a0));var _0x65f6=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x5f66[_0x13d07a];return _0x5ee0ee;};'use strict';var Sequelize=require('sequelize');module[_0x65f6('0x0')]={'body':{'type':Sequelize['TEXT'](_0x65f6('0x1')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x65f6('0x2')](_0x65f6('0x1')),'allowNull':![]}};
\ No newline at end of file
index a4a792b..a794ff4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','Attachment','join','server','attachments','offline-chat','basename','remove','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','ChatOfflineMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0x7a54,0x106));var _0x47a5=function(_0x32ccc5,_0x5b5624){_0x32ccc5=_0x32ccc5-0x0;var _0x5680ce=_0x7a54[_0x32ccc5];return _0x5680ce;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
+var _0x7a54=['filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','Attachment','join','server','attachments','offline-chat','basename','remove','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','ChatOfflineMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x43d11d,_0xccff91){var _0x38cd08=function(_0x131ae2){while(--_0x131ae2){_0x43d11d['push'](_0x43d11d['shift']());}};_0x38cd08(++_0xccff91);}(_0x7a54,0x106));var _0x47a5=function(_0x50cbb7,_0x222069){_0x50cbb7=_0x50cbb7-0x0;var _0x1c48d0=_0x7a54[_0x50cbb7];return _0x1c48d0;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
index 6609453..9f4af1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfee1=['update','remove','emit','hook','exports','../../mysqldb','ChatOfflineMessage','save'];(function(_0x377217,_0x26b013){var _0x26258d=function(_0x1e1894){while(--_0x1e1894){_0x377217['push'](_0x377217['shift']());}};_0x26258d(++_0x26b013);}(_0xfee1,0x85));var _0x1fee=function(_0xac151d,_0x4ea1d2){_0xac151d=_0xac151d-0x0;var _0x111dba=_0xfee1[_0xac151d];return _0x111dba;};'use strict';var EventEmitter=require('events');var ChatOfflineMessage=require(_0x1fee('0x0'))['db'][_0x1fee('0x1')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x1fee('0x2'),'afterUpdate':_0x1fee('0x3'),'afterDestroy':_0x1fee('0x4')};function emitEvent(_0x195be6){return function(_0x35f7ba,_0x110446,_0x3cc2f9){ChatOfflineMessageEvents['emit'](_0x195be6+':'+_0x35f7ba['id'],_0x35f7ba);ChatOfflineMessageEvents[_0x1fee('0x5')](_0x195be6,_0x35f7ba);_0x3cc2f9(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatOfflineMessage[_0x1fee('0x6')](e,emitEvent(event));}}module[_0x1fee('0x7')]=ChatOfflineMessageEvents;
\ No newline at end of file
+var _0x6f01=['hook','exports','events','ChatOfflineMessage','save','update','remove','emit','hasOwnProperty'];(function(_0x532d86,_0x2067ff){var _0x152b27=function(_0xa9c796){while(--_0xa9c796){_0x532d86['push'](_0x532d86['shift']());}};_0x152b27(++_0x2067ff);}(_0x6f01,0x122));var _0x16f0=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6f01[_0x2dafbe];return _0x58a45a;};'use strict';var EventEmitter=require(_0x16f0('0x0'));var ChatOfflineMessage=require('../../mysqldb')['db'][_0x16f0('0x1')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x16f0('0x2'),'afterUpdate':_0x16f0('0x3'),'afterDestroy':_0x16f0('0x4')};function emitEvent(_0x4e9ff1){return function(_0x4beeff,_0x37b55b,_0x344ced){ChatOfflineMessageEvents['emit'](_0x4e9ff1+':'+_0x4beeff['id'],_0x4beeff);ChatOfflineMessageEvents[_0x16f0('0x5')](_0x4e9ff1,_0x4beeff);_0x344ced(null);};}for(var e in events){if(events[_0x16f0('0x6')](e)){var event=events[e];ChatOfflineMessage[_0x16f0('0x7')](e,emitEvent(event));}}module[_0x16f0('0x8')]=ChatOfflineMessageEvents;
\ No newline at end of file
index 5fa21c4..cc6cd6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4853=['exports','define','chat_offline_messages','utf8mb4_unicode_ci','./chatOfflineMessage.attributes'];(function(_0xfcfc35,_0x41125e){var _0x13a3c7=function(_0x594a49){while(--_0x594a49){_0xfcfc35['push'](_0xfcfc35['shift']());}};_0x13a3c7(++_0x41125e);}(_0x4853,0xae));var _0x3485=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x4853[_0xa464c9];return _0x3d73c4;};'use strict';var attributes=require(_0x3485('0x0'));module[_0x3485('0x1')]=function(_0x4a22c4){return _0x4a22c4[_0x3485('0x2')]('ChatOfflineMessage',attributes,{'tableName':_0x3485('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x3485('0x4')});};
\ No newline at end of file
+var _0x2e88=['utf8mb4','utf8mb4_unicode_ci','./chatOfflineMessage.attributes','exports','define','ChatOfflineMessage'];(function(_0x479bc2,_0x218c0b){var _0x2c8f4d=function(_0x1620c8){while(--_0x1620c8){_0x479bc2['push'](_0x479bc2['shift']());}};_0x2c8f4d(++_0x218c0b);}(_0x2e88,0x1f4));var _0x82e8=function(_0x5dfc2a,_0x1a953f){_0x5dfc2a=_0x5dfc2a-0x0;var _0x3f1a71=_0x2e88[_0x5dfc2a];return _0x3f1a71;};'use strict';var attributes=require(_0x82e8('0x0'));module[_0x82e8('0x1')]=function(_0x54e9c5){return _0x54e9c5[_0x82e8('0x2')](_0x82e8('0x3'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x82e8('0x4'),'collate':_0x82e8('0x5')});};
\ No newline at end of file
index ce3f51b..b00a9f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd931=['code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','error'];(function(_0x35da42,_0x5c2610){var _0x370035=function(_0x546db5){while(--_0x546db5){_0x35da42['push'](_0x35da42['shift']());}};_0x370035(++_0x5c2610);}(_0xd931,0xa4));var _0x1d93=function(_0x5d76cc,_0x195736){_0x5d76cc=_0x5d76cc-0x0;var _0x4acce4=_0xd931[_0x5d76cc];return _0x4acce4;};'use strict';var _=require(_0x1d93('0x0'));var util=require(_0x1d93('0x1'));var moment=require('moment');var BPromise=require(_0x1d93('0x2'));var rs=require(_0x1d93('0x3'));var fs=require('fs');var Redis=require(_0x1d93('0x4'));var db=require(_0x1d93('0x5'))['db'];var utils=require(_0x1d93('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x1d93('0x7'));var client=jayson[_0x1d93('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1e0d4a,_0x2010a8,_0x54129c){return new BPromise(function(_0xf74069,_0x5dcf51){return client['request'](_0x1e0d4a,_0x54129c)[_0x1d93('0x9')](function(_0x3cd236){logger[_0x1d93('0xa')](_0x1d93('0xb'),_0x2010a8,_0x1d93('0xc'));logger[_0x1d93('0xd')](_0x1d93('0xe'),_0x2010a8,'request\x20sent',JSON['stringify'](_0x3cd236));if(_0x3cd236['error']){if(_0x3cd236[_0x1d93('0xf')][_0x1d93('0x10')]===0x1f4){logger['error'](_0x1d93('0xb'),_0x2010a8,_0x3cd236[_0x1d93('0xf')][_0x1d93('0x11')]);return _0x5dcf51(_0x3cd236[_0x1d93('0xf')][_0x1d93('0x11')]);}logger[_0x1d93('0xf')](_0x1d93('0xb'),_0x2010a8,_0x3cd236[_0x1d93('0xf')][_0x1d93('0x11')]);return _0xf74069(_0x3cd236[_0x1d93('0xf')][_0x1d93('0x11')]);}else{logger[_0x1d93('0xa')](_0x1d93('0xb'),_0x2010a8,_0x1d93('0xc'));_0xf74069(_0x3cd236[_0x1d93('0x12')][_0x1d93('0x11')]);}})[_0x1d93('0x13')](function(_0x2de244){logger['error'](_0x1d93('0xb'),_0x2010a8,_0x2de244);_0x5dcf51(_0x2de244);});});}
\ No newline at end of file
+var _0x33ba=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','bluebird','randomstring'];(function(_0x35ce5f,_0x2d9c19){var _0x115b7c=function(_0x3489ff){while(--_0x3489ff){_0x35ce5f['push'](_0x35ce5f['shift']());}};_0x115b7c(++_0x2d9c19);}(_0x33ba,0x1f0));var _0xa33b=function(_0x30e4c8,_0x507fc2){_0x30e4c8=_0x30e4c8-0x0;var _0x45f3ca=_0x33ba[_0x30e4c8];return _0x45f3ca;};'use strict';var _=require(_0xa33b('0x0'));var util=require(_0xa33b('0x1'));var moment=require('moment');var BPromise=require(_0xa33b('0x2'));var rs=require(_0xa33b('0x3'));var fs=require('fs');var Redis=require(_0xa33b('0x4'));var db=require(_0xa33b('0x5'))['db'];var utils=require(_0xa33b('0x6'));var logger=require(_0xa33b('0x7'))(_0xa33b('0x8'));var config=require(_0xa33b('0x9'));var jayson=require(_0xa33b('0xa'));var client=jayson[_0xa33b('0xb')][_0xa33b('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x371668,_0x1723e9,_0xc09188){return new BPromise(function(_0x387c2c,_0x4b49e2){return client[_0xa33b('0xd')](_0x371668,_0xc09188)[_0xa33b('0xe')](function(_0x333220){logger[_0xa33b('0xf')](_0xa33b('0x10'),_0x1723e9,_0xa33b('0x11'));logger[_0xa33b('0x12')](_0xa33b('0x13'),_0x1723e9,_0xa33b('0x11'),JSON[_0xa33b('0x14')](_0x333220));if(_0x333220[_0xa33b('0x15')]){if(_0x333220[_0xa33b('0x15')][_0xa33b('0x16')]===0x1f4){logger[_0xa33b('0x15')](_0xa33b('0x10'),_0x1723e9,_0x333220[_0xa33b('0x15')][_0xa33b('0x17')]);return _0x4b49e2(_0x333220[_0xa33b('0x15')][_0xa33b('0x17')]);}logger[_0xa33b('0x15')](_0xa33b('0x10'),_0x1723e9,_0x333220[_0xa33b('0x15')]['message']);return _0x387c2c(_0x333220['error'][_0xa33b('0x17')]);}else{logger[_0xa33b('0xf')]('ChatOfflineMessage,\x20%s,\x20%s',_0x1723e9,'request\x20sent');_0x387c2c(_0x333220['result'][_0xa33b('0x17')]);}})[_0xa33b('0x18')](function(_0x53200a){logger['error'](_0xa33b('0x10'),_0x1723e9,_0x53200a);_0x4b49e2(_0x53200a);});});}
\ No newline at end of file
index a00809c..f58c39c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4784=['put','update','delete','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','post','create'];(function(_0x43b9e1,_0x22f2d0){var _0x249f31=function(_0xa9acd0){while(--_0xa9acd0){_0x43b9e1['push'](_0x43b9e1['shift']());}};_0x249f31(++_0x22f2d0);}(_0x4784,0xd4));var _0x4478=function(_0xbdd469,_0x2401aa){_0xbdd469=_0xbdd469-0x0;var _0x4f9586=_0x4784[_0xbdd469];return _0x4f9586;};'use strict';var multer=require(_0x4478('0x0'));var util=require(_0x4478('0x1'));var path=require(_0x4478('0x2'));var timeout=require(_0x4478('0x3'));var express=require(_0x4478('0x4'));var router=express['Router']();var fs_extra=require(_0x4478('0x5'));var auth=require(_0x4478('0x6'));var interaction=require(_0x4478('0x7'));var config=require('../../config/environment');var controller=require('./chatOfflineMessage.controller');router[_0x4478('0x8')]('/',auth[_0x4478('0x9')](),controller[_0x4478('0xa')]);router['get'](_0x4478('0xb'),auth[_0x4478('0x9')](),controller[_0x4478('0xc')]);router[_0x4478('0x8')](_0x4478('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x4478('0xe')]('/',auth['isAuthenticated'](),controller[_0x4478('0xf')]);router[_0x4478('0x10')](_0x4478('0xd'),auth[_0x4478('0x9')](),controller[_0x4478('0x11')]);router[_0x4478('0x12')](_0x4478('0xd'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x5093=['../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','/describe','show','create','put','/:id','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x3d80f2,_0x1dd712){var _0x116401=function(_0x583d45){while(--_0x583d45){_0x3d80f2['push'](_0x3d80f2['shift']());}};_0x116401(++_0x1dd712);}(_0x5093,0x91));var _0x3509=function(_0x2adac5,_0x38fea6){_0x2adac5=_0x2adac5-0x0;var _0x1661ab=_0x5093[_0x2adac5];return _0x1661ab;};'use strict';var multer=require('multer');var util=require(_0x3509('0x0'));var path=require(_0x3509('0x1'));var timeout=require(_0x3509('0x2'));var express=require(_0x3509('0x3'));var router=express[_0x3509('0x4')]();var fs_extra=require(_0x3509('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x3509('0x6'));var config=require(_0x3509('0x7'));var controller=require(_0x3509('0x8'));router[_0x3509('0x9')]('/',auth[_0x3509('0xa')](),controller['index']);router[_0x3509('0x9')](_0x3509('0xb'),auth[_0x3509('0xa')](),controller['describe']);router[_0x3509('0x9')]('/:id',auth['isAuthenticated'](),controller[_0x3509('0xc')]);router['post']('/',auth[_0x3509('0xa')](),controller[_0x3509('0xd')]);router[_0x3509('0xe')](_0x3509('0xf'),auth[_0x3509('0xa')](),controller[_0x3509('0x10')]);router[_0x3509('0x11')](_0x3509('0xf'),auth['isAuthenticated'](),controller['destroy']);module[_0x3509('0x12')]=router;
\ No newline at end of file
index 22743af..06f93f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbb9=['STRING','ENUM','mouseOver','timeout','INTEGER','sequelize','exports'];(function(_0x5f0f73,_0x708c9b){var _0xada950=function(_0x426306){while(--_0x426306){_0x5f0f73['push'](_0x5f0f73['shift']());}};_0xada950(++_0x708c9b);}(_0xcbb9,0x124));var _0x9cbb=function(_0x5e2d3e,_0xc1f6ce){_0x5e2d3e=_0x5e2d3e-0x0;var _0x2abd8f=_0xcbb9[_0x5e2d3e];return _0x2abd8f;};'use strict';var Sequelize=require(_0x9cbb('0x0'));module[_0x9cbb('0x1')]={'name':{'type':Sequelize[_0x9cbb('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9cbb('0x3')](_0x9cbb('0x4'),_0x9cbb('0x5')),'defaultValue':_0x9cbb('0x4')},'selector':{'type':Sequelize[_0x9cbb('0x2')]},'timeout':{'type':Sequelize[_0x9cbb('0x6')]}};
\ No newline at end of file
+var _0xb116=['mouseOver','timeout','INTEGER','sequelize','STRING'];(function(_0x513f27,_0x1cbc87){var _0xa316b7=function(_0x3b592d){while(--_0x3b592d){_0x513f27['push'](_0x513f27['shift']());}};_0xa316b7(++_0x1cbc87);}(_0xb116,0xfd));var _0x6b11=function(_0x4c8a8f,_0x997ef){_0x4c8a8f=_0x4c8a8f-0x0;var _0x404500=_0xb116[_0x4c8a8f];return _0x404500;};'use strict';var Sequelize=require(_0x6b11('0x0'));module['exports']={'name':{'type':Sequelize[_0x6b11('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x6b11('0x2'),_0x6b11('0x3')),'defaultValue':_0x6b11('0x2')},'selector':{'type':Sequelize[_0x6b11('0x1')]},'timeout':{'type':Sequelize[_0x6b11('0x4')]}};
\ No newline at end of file
index 074981e..c0aacff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16d8=['api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','sendStatus','error','name','send','show','params','model','ChatProactiveAction','rawAttributes','query','keys','filters','intersection','fields','attributes','length','includeAll','include','merge','find','create','catch','update','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x1dc8f8,_0x1d5fb8){var _0x271cd0=function(_0x449fea){while(--_0x449fea){_0x1dc8f8['push'](_0x1dc8f8['shift']());}};_0x271cd0(++_0x1d5fb8);}(_0x16d8,0xa3));var _0x816d=function(_0x2a9f06,_0x2d9036){_0x2a9f06=_0x2a9f06-0x0;var _0x3cb8fb=_0x16d8[_0x2a9f06];return _0x3cb8fb;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x816d('0x0'));var zipdir=require(_0x816d('0x1'));var jsonpatch=require(_0x816d('0x2'));var rp=require(_0x816d('0x3'));var moment=require(_0x816d('0x4'));var BPromise=require(_0x816d('0x5'));var Mustache=require(_0x816d('0x6'));var util=require(_0x816d('0x7'));var path=require(_0x816d('0x8'));var sox=require('sox');var csv=require(_0x816d('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x816d('0xa'));var _=require(_0x816d('0xb'));var squel=require(_0x816d('0xc'));var crypto=require(_0x816d('0xd'));var jsforce=require(_0x816d('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x816d('0x9'));var querystring=require(_0x816d('0xf'));var Papa=require(_0x816d('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x816d('0x11'));var hardwareService=require(_0x816d('0x12'));var logger=require(_0x816d('0x13'))(_0x816d('0x14'));var utils=require('../../config/utils');var config=require(_0x816d('0x15'));var licenseUtil=require(_0x816d('0x16'));var db=require(_0x816d('0x17'))['db'];function respondWithStatusCode(_0x58de02,_0x45dfa4){_0x45dfa4=_0x45dfa4||0xcc;return function(_0x10cc6f){if(_0x10cc6f){return _0x58de02['sendStatus'](_0x45dfa4);}return _0x58de02[_0x816d('0x18')](_0x45dfa4)[_0x816d('0x19')]();};}function respondWithResult(_0x58f22b,_0xc9a9c7){_0xc9a9c7=_0xc9a9c7||0xc8;return function(_0x3a50c8){if(_0x3a50c8){return _0x58f22b['status'](_0xc9a9c7)[_0x816d('0x1a')](_0x3a50c8);}};}function respondWithFilteredResult(_0xa2c0f,_0x2f3564){return function(_0x1ac493){if(_0x1ac493){var _0x61942=typeof _0x2f3564[_0x816d('0x1b')]===_0x816d('0x1c')&&typeof _0x2f3564[_0x816d('0x1d')]===_0x816d('0x1c');var _0x525c3b=_0x1ac493[_0x816d('0x1e')];var _0x2cee1c=_0x61942?0x0:_0x2f3564[_0x816d('0x1b')];var _0x52be88=_0x61942?_0x1ac493[_0x816d('0x1e')]:_0x2f3564[_0x816d('0x1b')]+_0x2f3564[_0x816d('0x1d')];var _0x8bea23;if(_0x52be88>=_0x525c3b){_0x52be88=_0x525c3b;_0x8bea23=0xc8;}else{_0x8bea23=0xce;}_0xa2c0f[_0x816d('0x18')](_0x8bea23);return _0xa2c0f[_0x816d('0x1f')]('Content-Range',_0x2cee1c+'-'+_0x52be88+'/'+_0x525c3b)[_0x816d('0x1a')](_0x1ac493);}return null;};}function patchUpdates(_0x3187b8){return function(_0x11ff2b){try{jsonpatch[_0x816d('0x20')](_0x11ff2b,_0x3187b8,!![]);}catch(_0x128865){return BPromise[_0x816d('0x21')](_0x128865);}return _0x11ff2b[_0x816d('0x22')]();};}function saveUpdates(_0x3b57dc,_0x5a15b1){return function(_0x430009){if(_0x430009){return _0x430009['update'](_0x3b57dc)[_0x816d('0x23')](function(_0x2d4ff2){return _0x2d4ff2;});}return null;};}function removeEntity(_0x24ffd5,_0x22ee4c){return function(_0x1cf6db){if(_0x1cf6db){return _0x1cf6db[_0x816d('0x24')]()[_0x816d('0x23')](function(){_0x24ffd5[_0x816d('0x18')](0xcc)[_0x816d('0x19')]();});}};}function handleEntityNotFound(_0x3d4410,_0x2d2d98){return function(_0xf79dfd){if(!_0xf79dfd){_0x3d4410[_0x816d('0x25')](0x194);}return _0xf79dfd;};}function handleError(_0x8bdca7,_0x3133d4){_0x3133d4=_0x3133d4||0x1f4;return function(_0x19e167){logger[_0x816d('0x26')](_0x19e167['stack']);if(_0x19e167[_0x816d('0x27')]){delete _0x19e167[_0x816d('0x27')];}_0x8bdca7[_0x816d('0x18')](_0x3133d4)[_0x816d('0x28')](_0x19e167);};}exports[_0x816d('0x29')]=function(_0x54c775,_0x5baba1){var _0x5f3e4f={'raw':!![],'where':{'id':_0x54c775[_0x816d('0x2a')]['id']}},_0x45cd32={};_0x45cd32[_0x816d('0x2b')]=_['keys'](db[_0x816d('0x2c')][_0x816d('0x2d')]);_0x45cd32[_0x816d('0x2e')]=_[_0x816d('0x2f')](_0x54c775['query']);_0x45cd32[_0x816d('0x30')]=_[_0x816d('0x31')](_0x45cd32[_0x816d('0x2b')],_0x45cd32['query']);_0x5f3e4f['attributes']=_['intersection'](_0x45cd32['model'],qs[_0x816d('0x32')](_0x54c775['query'][_0x816d('0x32')]));_0x5f3e4f[_0x816d('0x33')]=_0x5f3e4f[_0x816d('0x33')][_0x816d('0x34')]?_0x5f3e4f[_0x816d('0x33')]:_0x45cd32['model'];if(_0x54c775['query'][_0x816d('0x35')]){_0x5f3e4f[_0x816d('0x36')]=[{'all':!![]}];}_0x5f3e4f=_[_0x816d('0x37')]({},_0x5f3e4f,_0x54c775['options']);return db[_0x816d('0x2c')][_0x816d('0x38')](_0x5f3e4f)[_0x816d('0x23')](handleEntityNotFound(_0x5baba1,null))[_0x816d('0x23')](respondWithResult(_0x5baba1,null))['catch'](handleError(_0x5baba1,null));};exports[_0x816d('0x39')]=function(_0x236558,_0xeaaa7c){return db[_0x816d('0x2c')][_0x816d('0x39')](_0x236558['body'],{})[_0x816d('0x23')](respondWithResult(_0xeaaa7c,0xc9))[_0x816d('0x3a')](handleError(_0xeaaa7c,null));};exports[_0x816d('0x3b')]=function(_0x15bf0e,_0x2c4711){if(_0x15bf0e[_0x816d('0x3c')]['id']){delete _0x15bf0e[_0x816d('0x3c')]['id'];}return db['ChatProactiveAction'][_0x816d('0x38')]({'where':{'id':_0x15bf0e[_0x816d('0x2a')]['id']}})[_0x816d('0x23')](handleEntityNotFound(_0x2c4711,null))[_0x816d('0x23')](saveUpdates(_0x15bf0e[_0x816d('0x3c')],null))[_0x816d('0x23')](respondWithResult(_0x2c4711,null))[_0x816d('0x3a')](handleError(_0x2c4711,null));};exports[_0x816d('0x24')]=function(_0x1850e9,_0x536110){return db[_0x816d('0x2c')][_0x816d('0x38')]({'where':{'id':_0x1850e9[_0x816d('0x2a')]['id']}})[_0x816d('0x23')](handleEntityNotFound(_0x536110,null))['then'](removeEntity(_0x536110,null))[_0x816d('0x3a')](handleError(_0x536110,null));};
\ No newline at end of file
+var _0xb66c=['options','find','catch','ChatProactiveAction','create','body','destroy','eml-format','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','update','then','error','stack','name','send','show','params','rawAttributes','keys','query','filters','model','attributes','intersection','fields','includeAll','include','merge'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xb66c,0x175));var _0xcb66=function(_0x16ff2f,_0x1dbf7a){_0x16ff2f=_0x16ff2f-0x0;var _0x39540f=_0xb66c[_0x16ff2f];return _0x39540f;};'use strict';var emlformat=require(_0xcb66('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xcb66('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcb66('0x2'));var moment=require(_0xcb66('0x3'));var BPromise=require(_0xcb66('0x4'));var Mustache=require('mustache');var util=require(_0xcb66('0x5'));var path=require(_0xcb66('0x6'));var sox=require(_0xcb66('0x7'));var csv=require(_0xcb66('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcb66('0x9'));var squel=require(_0xcb66('0xa'));var crypto=require(_0xcb66('0xb'));var jsforce=require(_0xcb66('0xc'));var deskjs=require(_0xcb66('0xd'));var toCsv=require('to-csv');var querystring=require(_0xcb66('0xe'));var Papa=require(_0xcb66('0xf'));var Redis=require(_0xcb66('0x10'));var authService=require(_0xcb66('0x11'));var qs=require(_0xcb66('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcb66('0x13'));var logger=require(_0xcb66('0x14'))(_0xcb66('0x15'));var utils=require(_0xcb66('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xcb66('0x17'));var db=require(_0xcb66('0x18'))['db'];function respondWithStatusCode(_0x4105d2,_0x2339bb){_0x2339bb=_0x2339bb||0xcc;return function(_0x582523){if(_0x582523){return _0x4105d2[_0xcb66('0x19')](_0x2339bb);}return _0x4105d2[_0xcb66('0x1a')](_0x2339bb)[_0xcb66('0x1b')]();};}function respondWithResult(_0x401bc9,_0x58fb9e){_0x58fb9e=_0x58fb9e||0xc8;return function(_0x19072b){if(_0x19072b){return _0x401bc9['status'](_0x58fb9e)[_0xcb66('0x1c')](_0x19072b);}};}function respondWithFilteredResult(_0x52b058,_0x27442d){return function(_0x573dc7){if(_0x573dc7){var _0x4bef09=typeof _0x27442d[_0xcb66('0x1d')]===_0xcb66('0x1e')&&typeof _0x27442d[_0xcb66('0x1f')]===_0xcb66('0x1e');var _0x4d99c0=_0x573dc7[_0xcb66('0x20')];var _0x42ad03=_0x4bef09?0x0:_0x27442d[_0xcb66('0x1d')];var _0x58bca0=_0x4bef09?_0x573dc7[_0xcb66('0x20')]:_0x27442d['offset']+_0x27442d[_0xcb66('0x1f')];var _0x41edae;if(_0x58bca0>=_0x4d99c0){_0x58bca0=_0x4d99c0;_0x41edae=0xc8;}else{_0x41edae=0xce;}_0x52b058[_0xcb66('0x1a')](_0x41edae);return _0x52b058[_0xcb66('0x21')]('Content-Range',_0x42ad03+'-'+_0x58bca0+'/'+_0x4d99c0)['json'](_0x573dc7);}return null;};}function patchUpdates(_0x4d9690){return function(_0xb39b87){try{jsonpatch['apply'](_0xb39b87,_0x4d9690,!![]);}catch(_0x5e07e8){return BPromise[_0xcb66('0x22')](_0x5e07e8);}return _0xb39b87['save']();};}function saveUpdates(_0x1c1219,_0x12e2bc){return function(_0x602b44){if(_0x602b44){return _0x602b44[_0xcb66('0x23')](_0x1c1219)[_0xcb66('0x24')](function(_0x204f15){return _0x204f15;});}return null;};}function removeEntity(_0x3391a0,_0x5977e1){return function(_0x36faba){if(_0x36faba){return _0x36faba['destroy']()['then'](function(){_0x3391a0[_0xcb66('0x1a')](0xcc)[_0xcb66('0x1b')]();});}};}function handleEntityNotFound(_0x19da3b,_0x5f389f){return function(_0x341554){if(!_0x341554){_0x19da3b[_0xcb66('0x19')](0x194);}return _0x341554;};}function handleError(_0x43cd8f,_0x40e3de){_0x40e3de=_0x40e3de||0x1f4;return function(_0x5affdb){logger[_0xcb66('0x25')](_0x5affdb[_0xcb66('0x26')]);if(_0x5affdb[_0xcb66('0x27')]){delete _0x5affdb[_0xcb66('0x27')];}_0x43cd8f[_0xcb66('0x1a')](_0x40e3de)[_0xcb66('0x28')](_0x5affdb);};}exports[_0xcb66('0x29')]=function(_0x967710,_0x28fc0b){var _0x178a06={'raw':!![],'where':{'id':_0x967710[_0xcb66('0x2a')]['id']}},_0x516194={};_0x516194['model']=_['keys'](db['ChatProactiveAction'][_0xcb66('0x2b')]);_0x516194['query']=_[_0xcb66('0x2c')](_0x967710[_0xcb66('0x2d')]);_0x516194[_0xcb66('0x2e')]=_['intersection'](_0x516194[_0xcb66('0x2f')],_0x516194[_0xcb66('0x2d')]);_0x178a06[_0xcb66('0x30')]=_[_0xcb66('0x31')](_0x516194[_0xcb66('0x2f')],qs[_0xcb66('0x32')](_0x967710[_0xcb66('0x2d')][_0xcb66('0x32')]));_0x178a06[_0xcb66('0x30')]=_0x178a06[_0xcb66('0x30')]['length']?_0x178a06[_0xcb66('0x30')]:_0x516194[_0xcb66('0x2f')];if(_0x967710[_0xcb66('0x2d')][_0xcb66('0x33')]){_0x178a06[_0xcb66('0x34')]=[{'all':!![]}];}_0x178a06=_[_0xcb66('0x35')]({},_0x178a06,_0x967710[_0xcb66('0x36')]);return db['ChatProactiveAction'][_0xcb66('0x37')](_0x178a06)[_0xcb66('0x24')](handleEntityNotFound(_0x28fc0b,null))[_0xcb66('0x24')](respondWithResult(_0x28fc0b,null))[_0xcb66('0x38')](handleError(_0x28fc0b,null));};exports['create']=function(_0x1a9545,_0x17a21a){return db[_0xcb66('0x39')][_0xcb66('0x3a')](_0x1a9545[_0xcb66('0x3b')],{})[_0xcb66('0x24')](respondWithResult(_0x17a21a,0xc9))[_0xcb66('0x38')](handleError(_0x17a21a,null));};exports[_0xcb66('0x23')]=function(_0x3ae1cc,_0x299156){if(_0x3ae1cc[_0xcb66('0x3b')]['id']){delete _0x3ae1cc[_0xcb66('0x3b')]['id'];}return db['ChatProactiveAction']['find']({'where':{'id':_0x3ae1cc['params']['id']}})[_0xcb66('0x24')](handleEntityNotFound(_0x299156,null))[_0xcb66('0x24')](saveUpdates(_0x3ae1cc[_0xcb66('0x3b')],null))[_0xcb66('0x24')](respondWithResult(_0x299156,null))[_0xcb66('0x38')](handleError(_0x299156,null));};exports[_0xcb66('0x3c')]=function(_0x4c53b8,_0x13865f){return db['ChatProactiveAction']['find']({'where':{'id':_0x4c53b8['params']['id']}})[_0xcb66('0x24')](handleEntityNotFound(_0x13865f,null))[_0xcb66('0x24')](removeEntity(_0x13865f,null))[_0xcb66('0x38')](handleError(_0x13865f,null));};
\ No newline at end of file
index ff50e87..cf5c022 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9683=['../../config/environment','./chatProactiveAction.attributes','exports','define','ChatProactiveAction','chat_proactive_actions','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf'];(function(_0x5a8367,_0xad015e){var _0x3fce63=function(_0x22d2f2){while(--_0x22d2f2){_0x5a8367['push'](_0x5a8367['shift']());}};_0x3fce63(++_0xad015e);}(_0x9683,0x76));var _0x3968=function(_0x43f571,_0x51d333){_0x43f571=_0x43f571-0x0;var _0x395260=_0x9683[_0x43f571];return _0x395260;};'use strict';var _=require(_0x3968('0x0'));var util=require(_0x3968('0x1'));var logger=require(_0x3968('0x2'))(_0x3968('0x3'));var moment=require(_0x3968('0x4'));var BPromise=require('bluebird');var rp=require(_0x3968('0x5'));var fs=require('fs');var path=require(_0x3968('0x6'));var rimraf=require(_0x3968('0x7'));var config=require(_0x3968('0x8'));var attributes=require(_0x3968('0x9'));module[_0x3968('0xa')]=function(_0x3d0b3c,_0x470cf1){return _0x3d0b3c[_0x3968('0xb')](_0x3968('0xc'),attributes,{'tableName':_0x3968('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd227=['exports','ChatProactiveAction','chat_proactive_actions','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x1e291a,_0x13a9da){var _0x448d8a=function(_0x329ac6){while(--_0x329ac6){_0x1e291a['push'](_0x1e291a['shift']());}};_0x448d8a(++_0x13a9da);}(_0xd227,0x1b0));var _0x7d22=function(_0x3e25c1,_0x1d15f9){_0x3e25c1=_0x3e25c1-0x0;var _0x52e7f2=_0xd227[_0x3e25c1];return _0x52e7f2;};'use strict';var _=require(_0x7d22('0x0'));var util=require(_0x7d22('0x1'));var logger=require(_0x7d22('0x2'))('api');var moment=require(_0x7d22('0x3'));var BPromise=require(_0x7d22('0x4'));var rp=require(_0x7d22('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7d22('0x6'));var config=require(_0x7d22('0x7'));var attributes=require('./chatProactiveAction.attributes');module[_0x7d22('0x8')]=function(_0x309c74,_0x2e8a5c){return _0x309c74['define'](_0x7d22('0x9'),attributes,{'tableName':_0x7d22('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7851781..c17022e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3955=['util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','client','http','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','ChatProactiveAction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash'];(function(_0x59cc8b,_0x2709a8){var _0x4924eb=function(_0x37b262){while(--_0x37b262){_0x59cc8b['push'](_0x59cc8b['shift']());}};_0x4924eb(++_0x2709a8);}(_0x3955,0x7d));var _0x5395=function(_0x45d82b,_0x3e95a8){_0x45d82b=_0x45d82b-0x0;var _0x32a727=_0x3955[_0x45d82b];return _0x32a727;};'use strict';var _=require(_0x5395('0x0'));var util=require(_0x5395('0x1'));var moment=require(_0x5395('0x2'));var BPromise=require(_0x5395('0x3'));var rs=require(_0x5395('0x4'));var fs=require('fs');var Redis=require(_0x5395('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x5395('0x6'));var logger=require(_0x5395('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5395('0x8')][_0x5395('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2975e8,_0x20650c,_0x3cf2f3){return new BPromise(function(_0x56020f,_0x28d162){return client['request'](_0x2975e8,_0x3cf2f3)[_0x5395('0xa')](function(_0x15faf8){logger[_0x5395('0xb')](_0x5395('0xc'),_0x20650c,_0x5395('0xd'));logger['debug'](_0x5395('0xe'),_0x20650c,_0x5395('0xd'),JSON[_0x5395('0xf')](_0x15faf8));if(_0x15faf8[_0x5395('0x10')]){if(_0x15faf8[_0x5395('0x10')][_0x5395('0x11')]===0x1f4){logger[_0x5395('0x10')](_0x5395('0xc'),_0x20650c,_0x15faf8['error']['message']);return _0x28d162(_0x15faf8['error'][_0x5395('0x12')]);}logger[_0x5395('0x10')]('ChatProactiveAction,\x20%s,\x20%s',_0x20650c,_0x15faf8[_0x5395('0x10')][_0x5395('0x12')]);return _0x56020f(_0x15faf8[_0x5395('0x10')][_0x5395('0x12')]);}else{logger['info']('ChatProactiveAction,\x20%s,\x20%s',_0x20650c,_0x5395('0xd'));_0x56020f(_0x15faf8[_0x5395('0x13')]['message']);}})[_0x5395('0x14')](function(_0x3ef405){logger['error'](_0x5395('0xc'),_0x20650c,_0x3ef405);_0x28d162(_0x3ef405);});});}
\ No newline at end of file
+var _0x1f93=['randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util','moment','bluebird'];(function(_0x909342,_0x3d569d){var _0x3437eb=function(_0x306a45){while(--_0x306a45){_0x909342['push'](_0x909342['shift']());}};_0x3437eb(++_0x3d569d);}(_0x1f93,0x122));var _0x31f9=function(_0x486b0d,_0x38754f){_0x486b0d=_0x486b0d-0x0;var _0x11f8a6=_0x1f93[_0x486b0d];return _0x11f8a6;};'use strict';var _=require(_0x31f9('0x0'));var util=require(_0x31f9('0x1'));var moment=require(_0x31f9('0x2'));var BPromise=require(_0x31f9('0x3'));var rs=require(_0x31f9('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x31f9('0x5'))['db'];var utils=require(_0x31f9('0x6'));var logger=require('../../config/logger')(_0x31f9('0x7'));var config=require(_0x31f9('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x31f9('0x9')][_0x31f9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x250404,_0x4cfe7f,_0x1da4a7){return new BPromise(function(_0x16e580,_0x5ece61){return client[_0x31f9('0xb')](_0x250404,_0x1da4a7)['then'](function(_0x4ace9c){logger[_0x31f9('0xc')](_0x31f9('0xd'),_0x4cfe7f,_0x31f9('0xe'));logger[_0x31f9('0xf')]('ChatProactiveAction,\x20%s,\x20%s,\x20%s',_0x4cfe7f,_0x31f9('0xe'),JSON[_0x31f9('0x10')](_0x4ace9c));if(_0x4ace9c[_0x31f9('0x11')]){if(_0x4ace9c[_0x31f9('0x11')][_0x31f9('0x12')]===0x1f4){logger[_0x31f9('0x11')](_0x31f9('0xd'),_0x4cfe7f,_0x4ace9c['error'][_0x31f9('0x13')]);return _0x5ece61(_0x4ace9c[_0x31f9('0x11')][_0x31f9('0x13')]);}logger['error'](_0x31f9('0xd'),_0x4cfe7f,_0x4ace9c[_0x31f9('0x11')][_0x31f9('0x13')]);return _0x16e580(_0x4ace9c[_0x31f9('0x11')][_0x31f9('0x13')]);}else{logger[_0x31f9('0xc')](_0x31f9('0xd'),_0x4cfe7f,_0x31f9('0xe'));_0x16e580(_0x4ace9c[_0x31f9('0x14')][_0x31f9('0x13')]);}})['catch'](function(_0x1cf01f){logger['error']('ChatProactiveAction,\x20%s,\x20%s',_0x4cfe7f,_0x1cf01f);_0x5ece61(_0x1cf01f);});});}
\ No newline at end of file
index 2dfdb9b..2cca983 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d58=['/:id','isAuthenticated','show','create','update','delete','Router','fs-extra','../../components/interaction/service','../../config/environment','get'];(function(_0x27fb50,_0x33a207){var _0x24a89a=function(_0x501e28){while(--_0x501e28){_0x27fb50['push'](_0x27fb50['shift']());}};_0x24a89a(++_0x33a207);}(_0x5d58,0x187));var _0x85d5=function(_0x433196,_0xa5e2c3){_0x433196=_0x433196-0x0;var _0x3d3205=_0x5d58[_0x433196];return _0x3d3205;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x85d5('0x0')]();var fs_extra=require(_0x85d5('0x1'));var auth=require('../../components/auth/service');var interaction=require(_0x85d5('0x2'));var config=require(_0x85d5('0x3'));var controller=require('./chatProactiveAction.controller');router[_0x85d5('0x4')](_0x85d5('0x5'),auth[_0x85d5('0x6')](),controller[_0x85d5('0x7')]);router['post']('/',auth[_0x85d5('0x6')](),controller[_0x85d5('0x8')]);router['put'](_0x85d5('0x5'),auth['isAuthenticated'](),controller[_0x85d5('0x9')]);router[_0x85d5('0xa')](_0x85d5('0x5'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x7fbe=['show','post','create','put','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','/:id','isAuthenticated'];(function(_0x4873e7,_0xadd09b){var _0x589ef4=function(_0x199c64){while(--_0x199c64){_0x4873e7['push'](_0x4873e7['shift']());}};_0x589ef4(++_0xadd09b);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x4f95c5,_0x3d47c8){_0x4f95c5=_0x4f95c5-0x0;var _0x192ec2=_0x7fbe[_0x4f95c5];return _0x192ec2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe7fb('0x0'));var timeout=require(_0xe7fb('0x1'));var express=require(_0xe7fb('0x2'));var router=express[_0xe7fb('0x3')]();var fs_extra=require(_0xe7fb('0x4'));var auth=require(_0xe7fb('0x5'));var interaction=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var controller=require(_0xe7fb('0x8'));router[_0xe7fb('0x9')](_0xe7fb('0xa'),auth[_0xe7fb('0xb')](),controller[_0xe7fb('0xc')]);router[_0xe7fb('0xd')]('/',auth['isAuthenticated'](),controller[_0xe7fb('0xe')]);router[_0xe7fb('0xf')](_0xe7fb('0xa'),auth[_0xe7fb('0xb')](),controller['update']);router['delete'](_0xe7fb('0xa'),auth[_0xe7fb('0xb')](),controller[_0xe7fb('0x10')]);module[_0xe7fb('0x11')]=router;
\ No newline at end of file
index 579e081..f32d365 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5836=['sequelize','STRING','INTEGER','rrmemory','beepall'];(function(_0x337741,_0x42b623){var _0x12ea8a=function(_0x2feefc){while(--_0x2feefc){_0x337741['push'](_0x337741['shift']());}};_0x12ea8a(++_0x42b623);}(_0x5836,0xa0));var _0x6583=function(_0x46b295,_0x554b00){_0x46b295=_0x46b295-0x0;var _0x1c4c10=_0x5836[_0x46b295];return _0x1c4c10;};'use strict';var Sequelize=require(_0x6583('0x0'));module['exports']={'name':{'type':Sequelize[_0x6583('0x1')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x6583('0x1')]},'timeout':{'type':Sequelize[_0x6583('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x6583('0x3'),_0x6583('0x4'),'roundrobin')}};
\ No newline at end of file
+var _0x1bef=['ENUM','beepall','roundrobin','sequelize','STRING','name','INTEGER'];(function(_0x22a111,_0x10c15c){var _0x193528=function(_0x5e0e59){while(--_0x5e0e59){_0x22a111['push'](_0x22a111['shift']());}};_0x193528(++_0x10c15c);}(_0x1bef,0x16f));var _0xf1be=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1bef[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xf1be('0x0'));module['exports']={'name':{'type':Sequelize[_0xf1be('0x1')],'unique':_0xf1be('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xf1be('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xf1be('0x4')]('rrmemory',_0xf1be('0x5'),_0xf1be('0x6'))}};
\ No newline at end of file
index 46fa368..ecb2835 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73d5=['isArray','getAgents','bluebird','util','lodash','squel','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./chatQueue.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','update','then','get','UserProfileResource','error','stack','name','index','map','ChatQueue','rawAttributes','fieldName','key','getOptions','where','include','query','findAll','rows','catch','show','params','model','keys','filters','intersection','fields','attributes','length','merge','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','ChatQueues','autoAssociation','destroy','describe','getMembers','hasOwnProperty','nolimit','order','sort','pick','ChatQueueId','filter','options','UserChatQueue','User','findAndCountAll','UserId','agent','chatPause','format','%s/%s','SIP','createdAt','updatedAt','getTeams','findOne','addTeams','ids','Team','Agents','online','voicePause','flatMap','sequelize','transaction','each','findOrCreate','forEach','userChatQueue:save','removeTeams','field','tq.TeamId','from','team_has_chat_queues','join','ut.TeamId\x20=\x20tq.TeamId','push','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','emit','userChatQueue:remove','addAgents','omit','spread'];(function(_0x1af5b2,_0x1b82fe){var _0xf1aa2d=function(_0x2ceae2){while(--_0x2ceae2){_0x1af5b2['push'](_0x1af5b2['shift']());}};_0xf1aa2d(++_0x1b82fe);}(_0x73d5,0x1f2));var _0x573d=function(_0x5e99ae,_0x37d21f){_0x5e99ae=_0x5e99ae-0x0;var _0x286019=_0x73d5[_0x5e99ae];return _0x286019;};'use strict';var BPromise=require(_0x573d('0x0'));var util=require(_0x573d('0x1'));var _=require(_0x573d('0x2'));var squel=require(_0x573d('0x3'));var Redis=require(_0x573d('0x4'));var qs=require(_0x573d('0x5'));var logger=require(_0x573d('0x6'))(_0x573d('0x7'));var config=require(_0x573d('0x8'));var db=require(_0x573d('0x9'))['db'];config[_0x573d('0xa')]=_[_0x573d('0xb')](config[_0x573d('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x573d('0xc'))(new Redis(config[_0x573d('0xa')]));require(_0x573d('0xd'))[_0x573d('0xe')](socket);function respondWithStatusCode(_0x2f857a,_0x335428){_0x335428=_0x335428||0xcc;return function(_0x4fe77c){if(_0x4fe77c){return _0x2f857a[_0x573d('0xf')](_0x335428);}return _0x2f857a[_0x573d('0x10')](_0x335428)[_0x573d('0x11')]();};}function respondWithResult(_0x3edf70,_0x2bd6bb){_0x2bd6bb=_0x2bd6bb||0xc8;return function(_0x1ccf16){if(_0x1ccf16){return _0x3edf70['status'](_0x2bd6bb)[_0x573d('0x12')](_0x1ccf16);}};}function respondWithFilteredResult(_0x415948,_0x237639){return function(_0x168158){if(_0x168158){var _0x45d2d4=typeof _0x237639[_0x573d('0x13')]==='undefined'&&typeof _0x237639[_0x573d('0x14')]===_0x573d('0x15');var _0x471ebd=_0x168158[_0x573d('0x16')];var _0x5c8229=_0x45d2d4?0x0:_0x237639[_0x573d('0x13')];var _0x59f0ea=_0x45d2d4?_0x168158[_0x573d('0x16')]:_0x237639[_0x573d('0x13')]+_0x237639['limit'];var _0x5f018f;if(_0x59f0ea>=_0x471ebd){_0x59f0ea=_0x471ebd;_0x5f018f=0xc8;}else{_0x5f018f=0xce;}_0x415948['status'](_0x5f018f);return _0x415948['set'](_0x573d('0x17'),_0x5c8229+'-'+_0x59f0ea+'/'+_0x471ebd)[_0x573d('0x12')](_0x168158);}return null;};}function saveUpdates(_0x2f5163){return function(_0x4387c9){if(_0x4387c9){return _0x4387c9[_0x573d('0x18')](_0x2f5163)[_0x573d('0x19')](function(_0x2c5361){return _0x2c5361;});}return null;};}function removeEntity(_0x833f88){return function(_0x51dded){if(_0x51dded){return _0x51dded['destroy']()[_0x573d('0x19')](function(){var _0x48cd8c=_0x51dded[_0x573d('0x1a')]({'plain':!![]});var _0x5df750='ChatQueues';return db[_0x573d('0x1b')]['destroy']({'where':{'type':_0x5df750,'resourceId':_0x48cd8c['id']}})[_0x573d('0x19')](function(){return _0x51dded;});})[_0x573d('0x19')](function(){_0x833f88[_0x573d('0x10')](0xcc)[_0x573d('0x11')]();});}};}function handleEntityNotFound(_0x3752b7){return function(_0x2b45a4){if(!_0x2b45a4){_0x3752b7[_0x573d('0xf')](0x194);}return _0x2b45a4;};}function handleError(_0x72dcc8,_0x18a0d4){_0x18a0d4=_0x18a0d4||0x1f4;return function(_0x4157d3){logger[_0x573d('0x1c')](_0x4157d3[_0x573d('0x1d')]);if(_0x4157d3[_0x573d('0x1e')]){delete _0x4157d3['name'];}_0x72dcc8[_0x573d('0x10')](_0x18a0d4)['send'](_0x4157d3);};}exports[_0x573d('0x1f')]=function(_0x2a0723,_0xe1b269){var _0x10824b={};var _0x26f4c2={'count':0x0,'rows':[]};var _0x328fdd=_[_0x573d('0x20')](db[_0x573d('0x21')][_0x573d('0x22')],function(_0x2b4d60){return{'name':_0x2b4d60[_0x573d('0x23')],'type':_0x2b4d60['type'][_0x573d('0x24')]};});_0x10824b=qs[_0x573d('0x25')](_0x328fdd,_0x2a0723);var _0x535eec={'where':_0x10824b[_0x573d('0x26')]};return db['ChatQueue'][_0x573d('0x16')](_0x535eec)[_0x573d('0x19')](function(_0x1af77f){_0x26f4c2[_0x573d('0x16')]=_0x1af77f;_0x10824b[_0x573d('0x27')]=qs[_0x573d('0x27')](_0x2a0723[_0x573d('0x28')]);return db[_0x573d('0x21')][_0x573d('0x29')](_0x10824b);})[_0x573d('0x19')](function(_0x155367){_0x26f4c2[_0x573d('0x2a')]=_0x155367;return _0x26f4c2;})[_0x573d('0x19')](respondWithFilteredResult(_0xe1b269,_0x10824b))[_0x573d('0x2b')](handleError(_0xe1b269,null));};exports[_0x573d('0x2c')]=function(_0x532d5e,_0x548203){var _0x3e52aa={'raw':!![],'where':{'id':_0x532d5e[_0x573d('0x2d')]['id']}},_0x5932eb={};_0x5932eb[_0x573d('0x2e')]=_[_0x573d('0x2f')](db[_0x573d('0x21')][_0x573d('0x22')]);_0x5932eb[_0x573d('0x28')]=_['keys'](_0x532d5e[_0x573d('0x28')]);_0x5932eb[_0x573d('0x30')]=_['intersection'](_0x5932eb['model'],_0x5932eb[_0x573d('0x28')]);_0x3e52aa['attributes']=_[_0x573d('0x31')](_0x5932eb[_0x573d('0x2e')],qs[_0x573d('0x32')](_0x532d5e[_0x573d('0x28')][_0x573d('0x32')]));_0x3e52aa[_0x573d('0x33')]=_0x3e52aa[_0x573d('0x33')][_0x573d('0x34')]?_0x3e52aa['attributes']:_0x5932eb['model'];if(_0x532d5e[_0x573d('0x28')]['includeAll']){_0x3e52aa[_0x573d('0x27')]=[{'all':!![]}];}_0x3e52aa=_[_0x573d('0x35')]({},_0x3e52aa,_0x532d5e['options']);return db[_0x573d('0x21')][_0x573d('0x36')](_0x3e52aa)[_0x573d('0x19')](handleEntityNotFound(_0x548203,null))[_0x573d('0x19')](respondWithResult(_0x548203,null))['catch'](handleError(_0x548203,null));};exports[_0x573d('0x37')]=function(_0x5c2466,_0x22be4a){return db[_0x573d('0x21')][_0x573d('0x37')](_0x5c2466[_0x573d('0x38')],{})[_0x573d('0x19')](function(_0x551bcb){var _0x2ee82b=_0x5c2466['user'][_0x573d('0x1a')]({'plain':!![]});if(!_0x2ee82b)throw new Error(_0x573d('0x39'));if(_0x2ee82b['role']===_0x573d('0x3a')){var _0x129e57=_0x551bcb['get']({'plain':!![]});var _0x5b9e2c=_0x573d('0x3b');return db['UserProfileSection'][_0x573d('0x36')]({'where':{'name':_0x5b9e2c,'userProfileId':_0x2ee82b['userProfileId']},'raw':!![]})['then'](function(_0x52f08d){if(_0x52f08d&&_0x52f08d[_0x573d('0x3c')]===0x0){return db[_0x573d('0x1b')][_0x573d('0x37')]({'name':_0x129e57['name'],'resourceId':_0x129e57['id'],'type':_0x52f08d[_0x573d('0x1e')],'sectionId':_0x52f08d['id']},{})[_0x573d('0x19')](function(){return _0x551bcb;});}else{return _0x551bcb;}})[_0x573d('0x2b')](function(_0x210586){logger[_0x573d('0x1c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x210586);throw _0x210586;});}return _0x551bcb;})['then'](respondWithResult(_0x22be4a,0xc9))[_0x573d('0x2b')](handleError(_0x22be4a,null));};exports[_0x573d('0x18')]=function(_0x39e992,_0x4eea94){if(_0x39e992[_0x573d('0x38')]['id']){delete _0x39e992[_0x573d('0x38')]['id'];}return db[_0x573d('0x21')]['find']({'where':{'id':_0x39e992['params']['id']}})[_0x573d('0x19')](handleEntityNotFound(_0x4eea94,null))[_0x573d('0x19')](saveUpdates(_0x39e992[_0x573d('0x38')],null))[_0x573d('0x19')](respondWithResult(_0x4eea94,null))['catch'](handleError(_0x4eea94,null));};exports[_0x573d('0x3d')]=function(_0xbe341d,_0x2c6c7c){return db[_0x573d('0x21')][_0x573d('0x36')]({'where':{'id':_0xbe341d['params']['id']}})['then'](handleEntityNotFound(_0x2c6c7c,null))[_0x573d('0x19')](removeEntity(_0x2c6c7c,null))[_0x573d('0x2b')](handleError(_0x2c6c7c,null));};exports['describe']=function(_0x3d22f8,_0x558d4d){return db[_0x573d('0x21')][_0x573d('0x3e')]()['then'](respondWithResult(_0x558d4d,null))[_0x573d('0x2b')](handleError(_0x558d4d,null));};exports[_0x573d('0x3f')]=function(_0x34f242,_0x52a362){var _0x229e53={'raw':!![],'where':{}},_0x1582b8={},_0x35c4e3;return db['ChatQueue']['findOne']({'where':{'id':_0x34f242[_0x573d('0x2d')]['id']}})[_0x573d('0x19')](handleEntityNotFound(_0x52a362,null))[_0x573d('0x19')](function(_0x4df8e4){if(_0x4df8e4){_0x35c4e3=_0x4df8e4[_0x573d('0x1a')]({'plain':!![]});_0x1582b8[_0x573d('0x2e')]=_['keys'](db['UserChatQueue'][_0x573d('0x22')]);_0x1582b8[_0x573d('0x28')]=_[_0x573d('0x2f')](_0x34f242[_0x573d('0x28')]);_0x1582b8[_0x573d('0x30')]=_[_0x573d('0x31')](_0x1582b8[_0x573d('0x2e')],_0x1582b8[_0x573d('0x28')]);_0x229e53['attributes']=_['intersection'](_0x1582b8[_0x573d('0x2e')],qs[_0x573d('0x32')](_0x34f242[_0x573d('0x28')][_0x573d('0x32')]));_0x229e53[_0x573d('0x33')]=_0x229e53[_0x573d('0x33')][_0x573d('0x34')]?_0x229e53['attributes']:_0x1582b8[_0x573d('0x2e')];if(!_0x34f242['query'][_0x573d('0x40')](_0x573d('0x41'))){_0x229e53[_0x573d('0x14')]=qs[_0x573d('0x14')](_0x34f242[_0x573d('0x28')][_0x573d('0x14')]);_0x229e53[_0x573d('0x13')]=qs[_0x573d('0x13')](_0x34f242[_0x573d('0x28')]['offset']);}_0x229e53[_0x573d('0x42')]=qs[_0x573d('0x43')](_0x34f242[_0x573d('0x28')][_0x573d('0x43')]);_0x229e53[_0x573d('0x26')]=qs[_0x573d('0x30')](_[_0x573d('0x44')](_0x34f242['query'],_0x1582b8[_0x573d('0x30')]));_0x229e53[_0x573d('0x26')][_0x573d('0x45')]=_0x4df8e4['id'];if(_0x34f242[_0x573d('0x28')][_0x573d('0x46')]){_0x229e53[_0x573d('0x26')]=_[_0x573d('0x35')](_0x229e53['where'],{'$or':_[_0x573d('0x20')](_0x229e53[_0x573d('0x33')],function(_0x2067d3){var _0xfd2be0={};_0xfd2be0[_0x2067d3]={'$like':'%'+_0x34f242[_0x573d('0x28')][_0x573d('0x46')]+'%'};return _0xfd2be0;})});}_0x229e53=_['merge']({},_0x229e53,_0x34f242[_0x573d('0x47')]);return db[_0x573d('0x48')][_0x573d('0x29')](_0x229e53);}})[_0x573d('0x19')](function(_0x497d93){if(_0x497d93){return db[_0x573d('0x49')][_0x573d('0x4a')]({'where':{'id':_[_0x573d('0x20')](_0x497d93,_0x573d('0x4b')),'role':_0x573d('0x4c')},'attributes':['id',_0x573d('0x1e'),_0x573d('0x4d'),'updatedAt','createdAt']});}})[_0x573d('0x19')](function(_0x158430){if(_0x158430){return{'count':_0x158430[_0x573d('0x16')],'rows':_[_0x573d('0x20')](_0x158430['rows'],function(_0x505e90){return{'membername':_0x505e90[_0x573d('0x1e')],'UserId':_0x505e90['id'],'queue_name':_0x35c4e3[_0x573d('0x1e')],'ChatQueueId':_0x35c4e3['id'],'interface':util[_0x573d('0x4e')](_0x573d('0x4f'),_0x573d('0x50'),_0x505e90[_0x573d('0x1e')]),'penalty':0x0,'paused':_0x505e90[_0x573d('0x4d')],'createdAt':_0x505e90[_0x573d('0x51')],'updatedAt':_0x505e90[_0x573d('0x52')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x573d('0x19')](respondWithFilteredResult(_0x52a362,_0x229e53))['catch'](handleError(_0x52a362,null));};exports[_0x573d('0x53')]=function(_0x2a65ec,_0x20110b){var _0x1a75aa={};var _0x21656e={};var _0x4467e2;var _0x3ad007;return db[_0x573d('0x21')][_0x573d('0x54')]({'where':{'id':_0x2a65ec['params']['id']}})['then'](handleEntityNotFound(_0x20110b,null))[_0x573d('0x19')](function(_0x27a8e8){if(_0x27a8e8){_0x4467e2=_0x27a8e8;_0x21656e[_0x573d('0x2e')]=_[_0x573d('0x2f')](db['Team'][_0x573d('0x22')]);_0x21656e[_0x573d('0x28')]=_[_0x573d('0x2f')](_0x2a65ec['query']);_0x21656e['filters']=_[_0x573d('0x31')](_0x21656e[_0x573d('0x2e')],_0x21656e[_0x573d('0x28')]);_0x1a75aa[_0x573d('0x33')]=_['intersection'](_0x21656e[_0x573d('0x2e')],qs[_0x573d('0x32')](_0x2a65ec[_0x573d('0x28')][_0x573d('0x32')]));_0x1a75aa['attributes']=_0x1a75aa[_0x573d('0x33')][_0x573d('0x34')]?_0x1a75aa[_0x573d('0x33')]:_0x21656e[_0x573d('0x2e')];_0x1a75aa[_0x573d('0x42')]=qs[_0x573d('0x43')](_0x2a65ec['query'][_0x573d('0x43')]);_0x1a75aa[_0x573d('0x26')]=qs[_0x573d('0x30')](_[_0x573d('0x44')](_0x2a65ec['query'],_0x21656e[_0x573d('0x30')]));if(_0x2a65ec[_0x573d('0x28')][_0x573d('0x46')]){_0x1a75aa[_0x573d('0x26')]=_[_0x573d('0x35')](_0x1a75aa[_0x573d('0x26')],{'$or':_[_0x573d('0x20')](_0x1a75aa[_0x573d('0x33')],function(_0xbc97b4){var _0x22ee56={};_0x22ee56[_0xbc97b4]={'$like':'%'+_0x2a65ec[_0x573d('0x28')][_0x573d('0x46')]+'%'};return _0x22ee56;})});}_0x1a75aa=_[_0x573d('0x35')]({},_0x1a75aa,_0x2a65ec[_0x573d('0x47')]);return _0x4467e2[_0x573d('0x53')](_0x1a75aa);}})[_0x573d('0x19')](function(_0x4b570f){if(_0x4b570f){_0x3ad007=_0x4b570f[_0x573d('0x34')];if(!_0x2a65ec[_0x573d('0x28')][_0x573d('0x40')](_0x573d('0x41'))){_0x1a75aa[_0x573d('0x14')]=qs[_0x573d('0x14')](_0x2a65ec[_0x573d('0x28')][_0x573d('0x14')]);_0x1a75aa[_0x573d('0x13')]=qs[_0x573d('0x13')](_0x2a65ec[_0x573d('0x28')][_0x573d('0x13')]);}return _0x4467e2['getTeams'](_0x1a75aa);}})[_0x573d('0x19')](function(_0x3b99a4){if(_0x3b99a4){return _0x3b99a4?{'count':_0x3ad007,'rows':_0x3b99a4}:null;}})['then'](respondWithResult(_0x20110b,null))['catch'](handleError(_0x20110b,null));};exports[_0x573d('0x55')]=function(_0x3279b8,_0x157e16){var _0xa2f904=_0x3279b8[_0x573d('0x38')][_0x573d('0x56')];return db[_0x573d('0x57')]['findAll']({'where':{'id':_0xa2f904},'attributes':['id'],'include':[{'model':db[_0x573d('0x49')],'as':_0x573d('0x58'),'attributes':['id',_0x573d('0x1e'),_0x573d('0x59'),_0x573d('0x5a'),'interface'],'raw':!![]}]})['then'](function(_0x3af31d){if(_0x3af31d){var _0x372114=_[_0x573d('0x5b')](_0x3af31d,function(_0x5d7469){var _0x2dd8a6=_0x5d7469[_0x573d('0x1a')]({'plain':!![]});return _0x2dd8a6[_0x573d('0x58')];});return db[_0x573d('0x21')]['find']({'where':{'id':_0x3279b8[_0x573d('0x2d')]['id']}})[_0x573d('0x19')](function(_0x27c882){return db[_0x573d('0x5c')][_0x573d('0x5d')](function(_0x261a9a){return _0x27c882[_0x573d('0x55')](_0xa2f904,{'transaction':_0x261a9a})[_0x573d('0x19')](function(){return BPromise[_0x573d('0x5e')](_0x372114,function(_0x3be7e5){return db[_0x573d('0x48')][_0x573d('0x5f')]({'where':{'UserId':_0x3be7e5['id'],'ChatQueueId':_0x3279b8[_0x573d('0x2d')]['id']},'transaction':_0x261a9a});});})[_0x573d('0x19')](function(){_0x372114[_0x573d('0x60')](function(_0x392241){socket['emit'](_0x573d('0x61'),{'UserId':_0x392241['id'],'ChatQueueId':_0x27c882['id']});});});});});}})[_0x573d('0x19')](respondWithStatusCode(_0x157e16,null))[_0x573d('0x2b')](handleError(_0x157e16,null));};exports[_0x573d('0x62')]=function(_0x21690c,_0x4626fa){return db[_0x573d('0x57')][_0x573d('0x29')]({'where':{'id':_0x21690c[_0x573d('0x28')][_0x573d('0x56')]},'attributes':['id'],'include':[{'model':db[_0x573d('0x49')],'as':_0x573d('0x58'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x4626fa,null))['then'](function(_0x1b8a80){var _0x2775dc=_[_0x573d('0x20')](_0x1b8a80,'id');var _0x6be719=[];var _0x459f03=[];var _0x2fa947=squel['select']();_0x2fa947[_0x573d('0x63')](_0x573d('0x64'))[_0x573d('0x65')](_0x573d('0x66'),'tq')[_0x573d('0x67')]('user_has_teams','ut',_0x573d('0x68'))[_0x573d('0x26')]('ChatQueueId\x20=\x20?',_0x21690c[_0x573d('0x2d')]['id']);for(var _0x28e21b=0x0;_0x28e21b<_0x1b8a80['length'];_0x28e21b+=0x1){let _0x79f0dc=_0x1b8a80[_0x28e21b];for(var _0x96d6ea=0x0;_0x96d6ea<_0x79f0dc[_0x573d('0x58')][_0x573d('0x34')];_0x96d6ea+=0x1){let _0x16165d=_0x79f0dc[_0x573d('0x58')][_0x96d6ea];var _0x3c102e=_0x2fa947['clone']();_0x3c102e[_0x573d('0x26')]('ut.UserId\x20=\x20?',_0x16165d['id']);_0x459f03[_0x573d('0x69')](db['sequelize'][_0x573d('0x28')](_0x3c102e['toString'](),{'type':db[_0x573d('0x5c')][_0x573d('0x6a')][_0x573d('0x6b')]})[_0x573d('0x19')](function(_0x134963){if(_0x134963[_0x573d('0x34')]===0x1){return _0x16165d['id'];}else{var _0x205fde=_[_0x573d('0x6c')](_['map'](_0x134963,_0x573d('0x6d')),function(_0x3f62bc){return _[_0x573d('0x6e')](_0x2775dc,_0x3f62bc);});if(_0x205fde){return _0x16165d['id'];}}}));}}return BPromise[_0x573d('0x6f')](_0x459f03)[_0x573d('0x19')](function(_0x4bad21){_0x6be719=_(_0x6be719)[_0x573d('0x70')](_0x4bad21)[_0x573d('0x71')]()[_0x573d('0x72')]();return db[_0x573d('0x21')][_0x573d('0x36')]({'where':{'id':_0x21690c[_0x573d('0x2d')]['id']}})['then'](function(_0x317bbf){return db[_0x573d('0x5c')][_0x573d('0x5d')](function(_0x322dc5){return _0x317bbf['removeTeams'](_0x21690c[_0x573d('0x28')]['ids'],{'transaction':_0x322dc5})['then'](function(){if(!_[_0x573d('0x73')](_0x6be719)){return _0x317bbf[_0x573d('0x74')](_0x6be719,{'transaction':_0x322dc5});}})[_0x573d('0x19')](function(){_0x6be719[_0x573d('0x60')](function(_0x12dc17){socket[_0x573d('0x75')](_0x573d('0x76'),{'UserId':_0x12dc17,'ChatQueueId':_0x317bbf['id']});});});});});});})['then'](respondWithStatusCode(_0x4626fa,null))[_0x573d('0x2b')](handleError(_0x4626fa,null));};exports[_0x573d('0x77')]=function(_0x56fa67,_0x51623e){return db[_0x573d('0x21')][_0x573d('0x36')]({'where':{'id':_0x56fa67[_0x573d('0x2d')]['id']}})[_0x573d('0x19')](handleEntityNotFound(_0x51623e,null))[_0x573d('0x19')](function(_0x44ee6a){if(_0x44ee6a){return _0x44ee6a['addAgents'](_0x56fa67['body']['ids'],_[_0x573d('0x78')](_0x56fa67[_0x573d('0x38')],['ids','id'])||{})[_0x573d('0x79')](function(_0x18fc49){for(var _0xa247a2=0x0;_0xa247a2<_0x56fa67[_0x573d('0x38')]['ids'][_0x573d('0x34')];_0xa247a2+=0x1){socket[_0x573d('0x75')](_0x573d('0x61'),{'UserId':Number(_0x56fa67['body'][_0x573d('0x56')][_0xa247a2]),'ChatQueueId':Number(_0x56fa67[_0x573d('0x2d')]['id'])});}return _0x18fc49;});}})['then'](respondWithResult(_0x51623e,null))[_0x573d('0x2b')](handleError(_0x51623e,null));};exports['removeAgents']=function(_0x43bd48,_0x2ef2f8){return db[_0x573d('0x21')]['find']({'where':{'id':_0x43bd48[_0x573d('0x2d')]['id']}})[_0x573d('0x19')](handleEntityNotFound(_0x2ef2f8,null))['then'](function(_0x3f575b){if(_0x3f575b){return _0x3f575b['removeAgents'](_0x43bd48[_0x573d('0x28')][_0x573d('0x56')])[_0x573d('0x19')](function(){if(_[_0x573d('0x7a')](_0x43bd48[_0x573d('0x28')]['ids'])){for(var _0x34622c=0x0;_0x34622c<_0x43bd48[_0x573d('0x28')][_0x573d('0x56')][_0x573d('0x34')];_0x34622c+=0x1){socket[_0x573d('0x75')]('userChatQueue:remove',{'UserId':Number(_0x43bd48[_0x573d('0x28')][_0x573d('0x56')][_0x34622c]),'ChatQueueId':Number(_0x43bd48['params']['id'])});}}else{socket['emit'](_0x573d('0x76'),{'UserId':Number(_0x43bd48[_0x573d('0x28')][_0x573d('0x56')]),'ChatQueueId':Number(_0x43bd48[_0x573d('0x2d')]['id'])});}});}})[_0x573d('0x19')](respondWithStatusCode(_0x2ef2f8,null))[_0x573d('0x2b')](handleError(_0x2ef2f8,null));};exports[_0x573d('0x7b')]=function(_0xccd45c,_0x356a98){var _0x47c221={};var _0x32acdf={};var _0x87da64;var _0xa76f6e;return db[_0x573d('0x21')]['findOne']({'where':{'id':_0xccd45c[_0x573d('0x2d')]['id']}})[_0x573d('0x19')](handleEntityNotFound(_0x356a98,null))[_0x573d('0x19')](function(_0x3864c9){if(_0x3864c9){_0x87da64=_0x3864c9;_0x32acdf[_0x573d('0x2e')]=_[_0x573d('0x2f')](db[_0x573d('0x49')][_0x573d('0x22')]);_0x32acdf[_0x573d('0x28')]=_['keys'](_0xccd45c['query']);_0x32acdf[_0x573d('0x30')]=_[_0x573d('0x31')](_0x32acdf[_0x573d('0x2e')],_0x32acdf[_0x573d('0x28')]);_0x47c221[_0x573d('0x33')]=_[_0x573d('0x31')](_0x32acdf[_0x573d('0x2e')],qs[_0x573d('0x32')](_0xccd45c[_0x573d('0x28')]['fields']));_0x47c221[_0x573d('0x33')]=_0x47c221[_0x573d('0x33')][_0x573d('0x34')]?_0x47c221['attributes']:_0x32acdf[_0x573d('0x2e')];_0x47c221['order']=qs[_0x573d('0x43')](_0xccd45c[_0x573d('0x28')][_0x573d('0x43')]);_0x47c221[_0x573d('0x26')]=qs[_0x573d('0x30')](_[_0x573d('0x44')](_0xccd45c[_0x573d('0x28')],_0x32acdf['filters']));if(_0xccd45c['query'][_0x573d('0x46')]){_0x47c221[_0x573d('0x26')]=_['merge'](_0x47c221[_0x573d('0x26')],{'$or':_[_0x573d('0x20')](_0x47c221['attributes'],function(_0x363bd1){var _0x2625b0={};_0x2625b0[_0x363bd1]={'$like':'%'+_0xccd45c[_0x573d('0x28')][_0x573d('0x46')]+'%'};return _0x2625b0;})});}_0x47c221=_[_0x573d('0x35')]({},_0x47c221,_0xccd45c[_0x573d('0x47')]);return _0x87da64['getAgents'](_0x47c221);}})['then'](function(_0x49e578){if(_0x49e578){_0xa76f6e=_0x49e578['length'];if(!_0xccd45c[_0x573d('0x28')][_0x573d('0x40')](_0x573d('0x41'))){_0x47c221['limit']=qs[_0x573d('0x14')](_0xccd45c[_0x573d('0x28')][_0x573d('0x14')]);_0x47c221[_0x573d('0x13')]=qs[_0x573d('0x13')](_0xccd45c[_0x573d('0x28')]['offset']);}return _0x87da64[_0x573d('0x7b')](_0x47c221);}})[_0x573d('0x19')](function(_0x11cb6f){if(_0x11cb6f){return _0x11cb6f?{'count':_0xa76f6e,'rows':_0x11cb6f}:null;}})[_0x573d('0x19')](respondWithResult(_0x356a98,null))[_0x573d('0x2b')](handleError(_0x356a98,null));};
\ No newline at end of file
+var _0x2551=['defaults','redis','./chatQueue.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','get','ChatQueues','UserProfileResource','destroy','error','stack','name','send','index','ChatQueue','rawAttributes','fieldName','type','where','include','query','rows','catch','show','model','keys','filters','attributes','fields','length','merge','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','UserChatQueue','intersection','hasOwnProperty','sort','pick','filter','map','options','findAll','User','findAndCountAll','UserId','agent','chatPause','format','createdAt','getTeams','findOne','Team','nolimit','addTeams','ids','Agents','online','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userChatQueue:save','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','removeTeams','removeAgents','userChatQueue:remove','addAgents','omit','spread','isArray','getAgents','order','bluebird','util','lodash','ioredis','../../components/parsers/qs','../../config/environment','../../mysqldb'];(function(_0x37756b,_0x24db76){var _0x46efec=function(_0x319807){while(--_0x319807){_0x37756b['push'](_0x37756b['shift']());}};_0x46efec(++_0x24db76);}(_0x2551,0x155));var _0x1255=function(_0x557f5f,_0x31d8e7){_0x557f5f=_0x557f5f-0x0;var _0x196eba=_0x2551[_0x557f5f];return _0x196eba;};'use strict';var BPromise=require(_0x1255('0x0'));var util=require(_0x1255('0x1'));var _=require(_0x1255('0x2'));var squel=require('squel');var Redis=require(_0x1255('0x3'));var qs=require(_0x1255('0x4'));var logger=require('../../config/logger')('api');var config=require(_0x1255('0x5'));var db=require(_0x1255('0x6'))['db'];config['redis']=_[_0x1255('0x7')](config[_0x1255('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1255('0x8')]));require(_0x1255('0x9'))[_0x1255('0xa')](socket);function respondWithStatusCode(_0x119c60,_0x52403a){_0x52403a=_0x52403a||0xcc;return function(_0x3b1c7f){if(_0x3b1c7f){return _0x119c60[_0x1255('0xb')](_0x52403a);}return _0x119c60[_0x1255('0xc')](_0x52403a)[_0x1255('0xd')]();};}function respondWithResult(_0x59c1f0,_0x55baf7){_0x55baf7=_0x55baf7||0xc8;return function(_0x193007){if(_0x193007){return _0x59c1f0['status'](_0x55baf7)[_0x1255('0xe')](_0x193007);}};}function respondWithFilteredResult(_0x548831,_0x493b2c){return function(_0x2c2595){if(_0x2c2595){var _0x5c1243=typeof _0x493b2c[_0x1255('0xf')]===_0x1255('0x10')&&typeof _0x493b2c[_0x1255('0x11')]==='undefined';var _0x4fc939=_0x2c2595[_0x1255('0x12')];var _0xdfc782=_0x5c1243?0x0:_0x493b2c[_0x1255('0xf')];var _0x3fa334=_0x5c1243?_0x2c2595['count']:_0x493b2c[_0x1255('0xf')]+_0x493b2c[_0x1255('0x11')];var _0x1c611a;if(_0x3fa334>=_0x4fc939){_0x3fa334=_0x4fc939;_0x1c611a=0xc8;}else{_0x1c611a=0xce;}_0x548831['status'](_0x1c611a);return _0x548831[_0x1255('0x13')](_0x1255('0x14'),_0xdfc782+'-'+_0x3fa334+'/'+_0x4fc939)[_0x1255('0xe')](_0x2c2595);}return null;};}function saveUpdates(_0x24cec3){return function(_0x4e7ded){if(_0x4e7ded){return _0x4e7ded[_0x1255('0x15')](_0x24cec3)[_0x1255('0x16')](function(_0xc2592c){return _0xc2592c;});}return null;};}function removeEntity(_0xdba3a9){return function(_0x405db8){if(_0x405db8){return _0x405db8['destroy']()[_0x1255('0x16')](function(){var _0x327d4f=_0x405db8[_0x1255('0x17')]({'plain':!![]});var _0x40d9c4=_0x1255('0x18');return db[_0x1255('0x19')][_0x1255('0x1a')]({'where':{'type':_0x40d9c4,'resourceId':_0x327d4f['id']}})['then'](function(){return _0x405db8;});})[_0x1255('0x16')](function(){_0xdba3a9[_0x1255('0xc')](0xcc)[_0x1255('0xd')]();});}};}function handleEntityNotFound(_0xbd9924){return function(_0x1b727d){if(!_0x1b727d){_0xbd9924['sendStatus'](0x194);}return _0x1b727d;};}function handleError(_0x488f2b,_0x116782){_0x116782=_0x116782||0x1f4;return function(_0x31f1c5){logger[_0x1255('0x1b')](_0x31f1c5[_0x1255('0x1c')]);if(_0x31f1c5['name']){delete _0x31f1c5[_0x1255('0x1d')];}_0x488f2b[_0x1255('0xc')](_0x116782)[_0x1255('0x1e')](_0x31f1c5);};}exports[_0x1255('0x1f')]=function(_0x5a4826,_0x35589e){var _0x19014b={};var _0x1d9b5d={'count':0x0,'rows':[]};var _0x50731a=_['map'](db[_0x1255('0x20')][_0x1255('0x21')],function(_0x41be82){return{'name':_0x41be82[_0x1255('0x22')],'type':_0x41be82[_0x1255('0x23')]['key']};});_0x19014b=qs['getOptions'](_0x50731a,_0x5a4826);var _0x47a2a8={'where':_0x19014b[_0x1255('0x24')]};return db[_0x1255('0x20')]['count'](_0x47a2a8)[_0x1255('0x16')](function(_0x56fd73){_0x1d9b5d['count']=_0x56fd73;_0x19014b['include']=qs[_0x1255('0x25')](_0x5a4826[_0x1255('0x26')]);return db[_0x1255('0x20')]['findAll'](_0x19014b);})[_0x1255('0x16')](function(_0x5a982b){_0x1d9b5d[_0x1255('0x27')]=_0x5a982b;return _0x1d9b5d;})['then'](respondWithFilteredResult(_0x35589e,_0x19014b))[_0x1255('0x28')](handleError(_0x35589e,null));};exports[_0x1255('0x29')]=function(_0x3a39bf,_0x3ead98){var _0x404740={'raw':!![],'where':{'id':_0x3a39bf['params']['id']}},_0x115cba={};_0x115cba[_0x1255('0x2a')]=_[_0x1255('0x2b')](db[_0x1255('0x20')][_0x1255('0x21')]);_0x115cba[_0x1255('0x26')]=_[_0x1255('0x2b')](_0x3a39bf[_0x1255('0x26')]);_0x115cba[_0x1255('0x2c')]=_['intersection'](_0x115cba[_0x1255('0x2a')],_0x115cba[_0x1255('0x26')]);_0x404740[_0x1255('0x2d')]=_['intersection'](_0x115cba[_0x1255('0x2a')],qs['fields'](_0x3a39bf[_0x1255('0x26')][_0x1255('0x2e')]));_0x404740[_0x1255('0x2d')]=_0x404740['attributes'][_0x1255('0x2f')]?_0x404740[_0x1255('0x2d')]:_0x115cba[_0x1255('0x2a')];if(_0x3a39bf[_0x1255('0x26')]['includeAll']){_0x404740['include']=[{'all':!![]}];}_0x404740=_[_0x1255('0x30')]({},_0x404740,_0x3a39bf['options']);return db[_0x1255('0x20')][_0x1255('0x31')](_0x404740)['then'](handleEntityNotFound(_0x3ead98,null))['then'](respondWithResult(_0x3ead98,null))['catch'](handleError(_0x3ead98,null));};exports[_0x1255('0x32')]=function(_0x526fc7,_0x1d3505){return db[_0x1255('0x20')][_0x1255('0x32')](_0x526fc7[_0x1255('0x33')],{})[_0x1255('0x16')](function(_0x5dcd2e){var _0x19b399=_0x526fc7[_0x1255('0x34')]['get']({'plain':!![]});if(!_0x19b399)throw new Error(_0x1255('0x35'));if(_0x19b399['role']===_0x1255('0x34')){var _0x1cc339=_0x5dcd2e['get']({'plain':!![]});var _0x53bcc5='ChatQueues';return db[_0x1255('0x36')][_0x1255('0x31')]({'where':{'name':_0x53bcc5,'userProfileId':_0x19b399[_0x1255('0x37')]},'raw':!![]})['then'](function(_0x2cb5d2){if(_0x2cb5d2&&_0x2cb5d2['autoAssociation']===0x0){return db[_0x1255('0x19')][_0x1255('0x32')]({'name':_0x1cc339['name'],'resourceId':_0x1cc339['id'],'type':_0x2cb5d2[_0x1255('0x1d')],'sectionId':_0x2cb5d2['id']},{})[_0x1255('0x16')](function(){return _0x5dcd2e;});}else{return _0x5dcd2e;}})[_0x1255('0x28')](function(_0x46b2a4){logger[_0x1255('0x1b')](_0x1255('0x38'),_0x46b2a4);throw _0x46b2a4;});}return _0x5dcd2e;})['then'](respondWithResult(_0x1d3505,0xc9))[_0x1255('0x28')](handleError(_0x1d3505,null));};exports[_0x1255('0x15')]=function(_0x35f92a,_0x18708f){if(_0x35f92a[_0x1255('0x33')]['id']){delete _0x35f92a[_0x1255('0x33')]['id'];}return db[_0x1255('0x20')]['find']({'where':{'id':_0x35f92a['params']['id']}})[_0x1255('0x16')](handleEntityNotFound(_0x18708f,null))['then'](saveUpdates(_0x35f92a[_0x1255('0x33')],null))['then'](respondWithResult(_0x18708f,null))[_0x1255('0x28')](handleError(_0x18708f,null));};exports[_0x1255('0x1a')]=function(_0x58a86f,_0x30b0a6){return db[_0x1255('0x20')]['find']({'where':{'id':_0x58a86f[_0x1255('0x39')]['id']}})['then'](handleEntityNotFound(_0x30b0a6,null))[_0x1255('0x16')](removeEntity(_0x30b0a6,null))[_0x1255('0x28')](handleError(_0x30b0a6,null));};exports[_0x1255('0x3a')]=function(_0x41427b,_0x3ee391){return db[_0x1255('0x20')]['describe']()['then'](respondWithResult(_0x3ee391,null))[_0x1255('0x28')](handleError(_0x3ee391,null));};exports[_0x1255('0x3b')]=function(_0x4f7cd2,_0x5e180f){var _0x32e2e6={'raw':!![],'where':{}},_0x2df30e={},_0x48c4bc;return db[_0x1255('0x20')]['findOne']({'where':{'id':_0x4f7cd2[_0x1255('0x39')]['id']}})[_0x1255('0x16')](handleEntityNotFound(_0x5e180f,null))['then'](function(_0x9a1bab){if(_0x9a1bab){_0x48c4bc=_0x9a1bab[_0x1255('0x17')]({'plain':!![]});_0x2df30e[_0x1255('0x2a')]=_[_0x1255('0x2b')](db[_0x1255('0x3c')]['rawAttributes']);_0x2df30e['query']=_[_0x1255('0x2b')](_0x4f7cd2['query']);_0x2df30e[_0x1255('0x2c')]=_[_0x1255('0x3d')](_0x2df30e[_0x1255('0x2a')],_0x2df30e[_0x1255('0x26')]);_0x32e2e6[_0x1255('0x2d')]=_['intersection'](_0x2df30e['model'],qs[_0x1255('0x2e')](_0x4f7cd2[_0x1255('0x26')][_0x1255('0x2e')]));_0x32e2e6['attributes']=_0x32e2e6[_0x1255('0x2d')][_0x1255('0x2f')]?_0x32e2e6['attributes']:_0x2df30e['model'];if(!_0x4f7cd2[_0x1255('0x26')][_0x1255('0x3e')]('nolimit')){_0x32e2e6[_0x1255('0x11')]=qs[_0x1255('0x11')](_0x4f7cd2[_0x1255('0x26')]['limit']);_0x32e2e6[_0x1255('0xf')]=qs[_0x1255('0xf')](_0x4f7cd2[_0x1255('0x26')][_0x1255('0xf')]);}_0x32e2e6['order']=qs['sort'](_0x4f7cd2[_0x1255('0x26')][_0x1255('0x3f')]);_0x32e2e6[_0x1255('0x24')]=qs[_0x1255('0x2c')](_[_0x1255('0x40')](_0x4f7cd2['query'],_0x2df30e['filters']));_0x32e2e6[_0x1255('0x24')]['ChatQueueId']=_0x9a1bab['id'];if(_0x4f7cd2[_0x1255('0x26')][_0x1255('0x41')]){_0x32e2e6['where']=_['merge'](_0x32e2e6[_0x1255('0x24')],{'$or':_[_0x1255('0x42')](_0x32e2e6[_0x1255('0x2d')],function(_0x5b74bb){var _0xa058b6={};_0xa058b6[_0x5b74bb]={'$like':'%'+_0x4f7cd2['query']['filter']+'%'};return _0xa058b6;})});}_0x32e2e6=_[_0x1255('0x30')]({},_0x32e2e6,_0x4f7cd2[_0x1255('0x43')]);return db[_0x1255('0x3c')][_0x1255('0x44')](_0x32e2e6);}})[_0x1255('0x16')](function(_0x5cfb32){if(_0x5cfb32){return db[_0x1255('0x45')][_0x1255('0x46')]({'where':{'id':_['map'](_0x5cfb32,_0x1255('0x47')),'role':_0x1255('0x48')},'attributes':['id',_0x1255('0x1d'),_0x1255('0x49'),'updatedAt','createdAt']});}})[_0x1255('0x16')](function(_0x1f1ca1){if(_0x1f1ca1){return{'count':_0x1f1ca1[_0x1255('0x12')],'rows':_[_0x1255('0x42')](_0x1f1ca1['rows'],function(_0x14becb){return{'membername':_0x14becb['name'],'UserId':_0x14becb['id'],'queue_name':_0x48c4bc['name'],'ChatQueueId':_0x48c4bc['id'],'interface':util[_0x1255('0x4a')]('%s/%s','SIP',_0x14becb[_0x1255('0x1d')]),'penalty':0x0,'paused':_0x14becb[_0x1255('0x49')],'createdAt':_0x14becb[_0x1255('0x4b')],'updatedAt':_0x14becb['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x1255('0x16')](respondWithFilteredResult(_0x5e180f,_0x32e2e6))['catch'](handleError(_0x5e180f,null));};exports[_0x1255('0x4c')]=function(_0x567cc5,_0xc8f452){var _0x38cd50={};var _0x55fa16={};var _0x4442e7;var _0x420cce;return db[_0x1255('0x20')][_0x1255('0x4d')]({'where':{'id':_0x567cc5[_0x1255('0x39')]['id']}})[_0x1255('0x16')](handleEntityNotFound(_0xc8f452,null))[_0x1255('0x16')](function(_0x1f8b36){if(_0x1f8b36){_0x4442e7=_0x1f8b36;_0x55fa16[_0x1255('0x2a')]=_[_0x1255('0x2b')](db[_0x1255('0x4e')]['rawAttributes']);_0x55fa16['query']=_[_0x1255('0x2b')](_0x567cc5[_0x1255('0x26')]);_0x55fa16[_0x1255('0x2c')]=_[_0x1255('0x3d')](_0x55fa16[_0x1255('0x2a')],_0x55fa16[_0x1255('0x26')]);_0x38cd50[_0x1255('0x2d')]=_[_0x1255('0x3d')](_0x55fa16[_0x1255('0x2a')],qs['fields'](_0x567cc5['query'][_0x1255('0x2e')]));_0x38cd50[_0x1255('0x2d')]=_0x38cd50[_0x1255('0x2d')][_0x1255('0x2f')]?_0x38cd50[_0x1255('0x2d')]:_0x55fa16[_0x1255('0x2a')];_0x38cd50['order']=qs[_0x1255('0x3f')](_0x567cc5[_0x1255('0x26')][_0x1255('0x3f')]);_0x38cd50[_0x1255('0x24')]=qs[_0x1255('0x2c')](_[_0x1255('0x40')](_0x567cc5[_0x1255('0x26')],_0x55fa16['filters']));if(_0x567cc5['query'][_0x1255('0x41')]){_0x38cd50['where']=_[_0x1255('0x30')](_0x38cd50['where'],{'$or':_[_0x1255('0x42')](_0x38cd50[_0x1255('0x2d')],function(_0x3a66bc){var _0x3efdfe={};_0x3efdfe[_0x3a66bc]={'$like':'%'+_0x567cc5[_0x1255('0x26')][_0x1255('0x41')]+'%'};return _0x3efdfe;})});}_0x38cd50=_[_0x1255('0x30')]({},_0x38cd50,_0x567cc5['options']);return _0x4442e7['getTeams'](_0x38cd50);}})[_0x1255('0x16')](function(_0x32b646){if(_0x32b646){_0x420cce=_0x32b646[_0x1255('0x2f')];if(!_0x567cc5[_0x1255('0x26')][_0x1255('0x3e')](_0x1255('0x4f'))){_0x38cd50[_0x1255('0x11')]=qs['limit'](_0x567cc5[_0x1255('0x26')][_0x1255('0x11')]);_0x38cd50['offset']=qs[_0x1255('0xf')](_0x567cc5[_0x1255('0x26')][_0x1255('0xf')]);}return _0x4442e7[_0x1255('0x4c')](_0x38cd50);}})['then'](function(_0x73c377){if(_0x73c377){return _0x73c377?{'count':_0x420cce,'rows':_0x73c377}:null;}})['then'](respondWithResult(_0xc8f452,null))['catch'](handleError(_0xc8f452,null));};exports[_0x1255('0x50')]=function(_0x5841f3,_0xd9794c){var _0x760936=_0x5841f3[_0x1255('0x33')][_0x1255('0x51')];return db[_0x1255('0x4e')][_0x1255('0x44')]({'where':{'id':_0x760936},'attributes':['id'],'include':[{'model':db[_0x1255('0x45')],'as':_0x1255('0x52'),'attributes':['id',_0x1255('0x1d'),_0x1255('0x53'),'voicePause',_0x1255('0x54')],'raw':!![]}]})['then'](function(_0x25f9f4){if(_0x25f9f4){var _0x7ef427=_[_0x1255('0x55')](_0x25f9f4,function(_0x33b531){var _0x2e2cd9=_0x33b531[_0x1255('0x17')]({'plain':!![]});return _0x2e2cd9[_0x1255('0x52')];});return db[_0x1255('0x20')][_0x1255('0x31')]({'where':{'id':_0x5841f3[_0x1255('0x39')]['id']}})[_0x1255('0x16')](function(_0xa2dd50){return db[_0x1255('0x56')][_0x1255('0x57')](function(_0x40102c){return _0xa2dd50[_0x1255('0x50')](_0x760936,{'transaction':_0x40102c})[_0x1255('0x16')](function(){return BPromise[_0x1255('0x58')](_0x7ef427,function(_0x3925e6){return db[_0x1255('0x3c')][_0x1255('0x59')]({'where':{'UserId':_0x3925e6['id'],'ChatQueueId':_0x5841f3[_0x1255('0x39')]['id']},'transaction':_0x40102c});});})[_0x1255('0x16')](function(){_0x7ef427[_0x1255('0x5a')](function(_0x54d2b4){socket[_0x1255('0x5b')](_0x1255('0x5c'),{'UserId':_0x54d2b4['id'],'ChatQueueId':_0xa2dd50['id']});});});});});}})[_0x1255('0x16')](respondWithStatusCode(_0xd9794c,null))[_0x1255('0x28')](handleError(_0xd9794c,null));};exports['removeTeams']=function(_0x10cdee,_0x2bcdac){return db[_0x1255('0x4e')][_0x1255('0x44')]({'where':{'id':_0x10cdee[_0x1255('0x26')][_0x1255('0x51')]},'attributes':['id'],'include':[{'model':db[_0x1255('0x45')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x2bcdac,null))['then'](function(_0x5e0a61){var _0x19891d=_[_0x1255('0x42')](_0x5e0a61,'id');var _0x2ae9fb=[];var _0x36928b=[];var _0x4b3845=squel['select']();_0x4b3845['field']('tq.TeamId')['from']('team_has_chat_queues','tq')[_0x1255('0x5d')](_0x1255('0x5e'),'ut',_0x1255('0x5f'))['where'](_0x1255('0x60'),_0x10cdee[_0x1255('0x39')]['id']);for(var _0x4a6538=0x0;_0x4a6538<_0x5e0a61[_0x1255('0x2f')];_0x4a6538+=0x1){let _0x2db970=_0x5e0a61[_0x4a6538];for(var _0x6c0044=0x0;_0x6c0044<_0x2db970[_0x1255('0x52')][_0x1255('0x2f')];_0x6c0044+=0x1){let _0x23cf58=_0x2db970[_0x1255('0x52')][_0x6c0044];var _0x6f142b=_0x4b3845['clone']();_0x6f142b[_0x1255('0x24')]('ut.UserId\x20=\x20?',_0x23cf58['id']);_0x36928b['push'](db[_0x1255('0x56')][_0x1255('0x26')](_0x6f142b[_0x1255('0x61')](),{'type':db[_0x1255('0x56')][_0x1255('0x62')][_0x1255('0x63')]})['then'](function(_0x54c476){if(_0x54c476[_0x1255('0x2f')]===0x1){return _0x23cf58['id'];}else{var _0x3ee4d5=_[_0x1255('0x64')](_['map'](_0x54c476,_0x1255('0x65')),function(_0x15ea9a){return _[_0x1255('0x66')](_0x19891d,_0x15ea9a);});if(_0x3ee4d5){return _0x23cf58['id'];}}}));}}return BPromise[_0x1255('0x67')](_0x36928b)[_0x1255('0x16')](function(_0x54b194){_0x2ae9fb=_(_0x2ae9fb)[_0x1255('0x68')](_0x54b194)[_0x1255('0x69')]()[_0x1255('0x6a')]();return db[_0x1255('0x20')][_0x1255('0x31')]({'where':{'id':_0x10cdee[_0x1255('0x39')]['id']}})[_0x1255('0x16')](function(_0xc0ef6e){return db[_0x1255('0x56')][_0x1255('0x57')](function(_0x4f7893){return _0xc0ef6e[_0x1255('0x6b')](_0x10cdee[_0x1255('0x26')]['ids'],{'transaction':_0x4f7893})['then'](function(){if(!_['isEmpty'](_0x2ae9fb)){return _0xc0ef6e[_0x1255('0x6c')](_0x2ae9fb,{'transaction':_0x4f7893});}})[_0x1255('0x16')](function(){_0x2ae9fb['forEach'](function(_0x15e6c9){socket['emit'](_0x1255('0x6d'),{'UserId':_0x15e6c9,'ChatQueueId':_0xc0ef6e['id']});});});});});});})[_0x1255('0x16')](respondWithStatusCode(_0x2bcdac,null))['catch'](handleError(_0x2bcdac,null));};exports[_0x1255('0x6e')]=function(_0x1935da,_0x5e4459){return db['ChatQueue']['find']({'where':{'id':_0x1935da[_0x1255('0x39')]['id']}})['then'](handleEntityNotFound(_0x5e4459,null))['then'](function(_0x1b5c6c){if(_0x1b5c6c){return _0x1b5c6c[_0x1255('0x6e')](_0x1935da[_0x1255('0x33')][_0x1255('0x51')],_[_0x1255('0x6f')](_0x1935da[_0x1255('0x33')],[_0x1255('0x51'),'id'])||{})[_0x1255('0x70')](function(_0x569741){for(var _0x56f4e6=0x0;_0x56f4e6<_0x1935da[_0x1255('0x33')]['ids'][_0x1255('0x2f')];_0x56f4e6+=0x1){socket[_0x1255('0x5b')](_0x1255('0x5c'),{'UserId':Number(_0x1935da[_0x1255('0x33')][_0x1255('0x51')][_0x56f4e6]),'ChatQueueId':Number(_0x1935da[_0x1255('0x39')]['id'])});}return _0x569741;});}})['then'](respondWithResult(_0x5e4459,null))['catch'](handleError(_0x5e4459,null));};exports[_0x1255('0x6c')]=function(_0x16d0ec,_0x132375){return db[_0x1255('0x20')][_0x1255('0x31')]({'where':{'id':_0x16d0ec['params']['id']}})['then'](handleEntityNotFound(_0x132375,null))[_0x1255('0x16')](function(_0x2df1ab){if(_0x2df1ab){return _0x2df1ab['removeAgents'](_0x16d0ec['query']['ids'])[_0x1255('0x16')](function(){if(_[_0x1255('0x71')](_0x16d0ec[_0x1255('0x26')]['ids'])){for(var _0x4c6b63=0x0;_0x4c6b63<_0x16d0ec[_0x1255('0x26')]['ids'][_0x1255('0x2f')];_0x4c6b63+=0x1){socket[_0x1255('0x5b')](_0x1255('0x6d'),{'UserId':Number(_0x16d0ec[_0x1255('0x26')][_0x1255('0x51')][_0x4c6b63]),'ChatQueueId':Number(_0x16d0ec['params']['id'])});}}else{socket[_0x1255('0x5b')](_0x1255('0x6d'),{'UserId':Number(_0x16d0ec[_0x1255('0x26')][_0x1255('0x51')]),'ChatQueueId':Number(_0x16d0ec[_0x1255('0x39')]['id'])});}});}})[_0x1255('0x16')](respondWithStatusCode(_0x132375,null))[_0x1255('0x28')](handleError(_0x132375,null));};exports[_0x1255('0x72')]=function(_0x3ead91,_0x125919){var _0x308975={};var _0x512c0b={};var _0x5d3501;var _0x20a87c;return db['ChatQueue']['findOne']({'where':{'id':_0x3ead91['params']['id']}})[_0x1255('0x16')](handleEntityNotFound(_0x125919,null))[_0x1255('0x16')](function(_0x14a20c){if(_0x14a20c){_0x5d3501=_0x14a20c;_0x512c0b[_0x1255('0x2a')]=_[_0x1255('0x2b')](db[_0x1255('0x45')][_0x1255('0x21')]);_0x512c0b[_0x1255('0x26')]=_[_0x1255('0x2b')](_0x3ead91[_0x1255('0x26')]);_0x512c0b[_0x1255('0x2c')]=_[_0x1255('0x3d')](_0x512c0b[_0x1255('0x2a')],_0x512c0b['query']);_0x308975[_0x1255('0x2d')]=_['intersection'](_0x512c0b[_0x1255('0x2a')],qs[_0x1255('0x2e')](_0x3ead91[_0x1255('0x26')]['fields']));_0x308975[_0x1255('0x2d')]=_0x308975[_0x1255('0x2d')][_0x1255('0x2f')]?_0x308975[_0x1255('0x2d')]:_0x512c0b[_0x1255('0x2a')];_0x308975[_0x1255('0x73')]=qs['sort'](_0x3ead91[_0x1255('0x26')][_0x1255('0x3f')]);_0x308975[_0x1255('0x24')]=qs[_0x1255('0x2c')](_['pick'](_0x3ead91['query'],_0x512c0b[_0x1255('0x2c')]));if(_0x3ead91[_0x1255('0x26')][_0x1255('0x41')]){_0x308975[_0x1255('0x24')]=_[_0x1255('0x30')](_0x308975[_0x1255('0x24')],{'$or':_['map'](_0x308975[_0x1255('0x2d')],function(_0x4577a9){var _0x54c24f={};_0x54c24f[_0x4577a9]={'$like':'%'+_0x3ead91[_0x1255('0x26')][_0x1255('0x41')]+'%'};return _0x54c24f;})});}_0x308975=_[_0x1255('0x30')]({},_0x308975,_0x3ead91['options']);return _0x5d3501[_0x1255('0x72')](_0x308975);}})[_0x1255('0x16')](function(_0x233f8e){if(_0x233f8e){_0x20a87c=_0x233f8e[_0x1255('0x2f')];if(!_0x3ead91['query']['hasOwnProperty'](_0x1255('0x4f'))){_0x308975['limit']=qs[_0x1255('0x11')](_0x3ead91[_0x1255('0x26')][_0x1255('0x11')]);_0x308975[_0x1255('0xf')]=qs[_0x1255('0xf')](_0x3ead91[_0x1255('0x26')][_0x1255('0xf')]);}return _0x5d3501[_0x1255('0x72')](_0x308975);}})[_0x1255('0x16')](function(_0x488186){if(_0x488186){return _0x488186?{'count':_0x20a87c,'rows':_0x488186}:null;}})[_0x1255('0x16')](respondWithResult(_0x125919,null))[_0x1255('0x28')](handleError(_0x125919,null));};
\ No newline at end of file
index 6740dc0..be7586d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38e2=['emit','hasOwnProperty','exports','../../mysqldb','ChatQueue','update','remove'];(function(_0x373dee,_0x1a8c45){var _0x46798f=function(_0xc389f0){while(--_0xc389f0){_0x373dee['push'](_0x373dee['shift']());}};_0x46798f(++_0x1a8c45);}(_0x38e2,0xff));var _0x238e=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x38e2[_0x4a9fb1];return _0x348672;};'use strict';var EventEmitter=require('events');var ChatQueue=require(_0x238e('0x0'))['db'][_0x238e('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x238e('0x2'),'afterDestroy':_0x238e('0x3')};function emitEvent(_0x57cbf9){return function(_0x4c7381,_0x2ad3da,_0x3b44bb){ChatQueueEvents[_0x238e('0x4')](_0x57cbf9+':'+_0x4c7381['id'],_0x4c7381);ChatQueueEvents[_0x238e('0x4')](_0x57cbf9,_0x4c7381);_0x3b44bb(null);};}for(var e in events){if(events[_0x238e('0x5')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module[_0x238e('0x6')]=ChatQueueEvents;
\ No newline at end of file
+var _0x1ef3=['save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0x230c93,_0x226882){var _0x39e2ee=function(_0x5360c1){while(--_0x5360c1){_0x230c93['push'](_0x230c93['shift']());}};_0x39e2ee(++_0x226882);}(_0x1ef3,0x69));var _0x31ef=function(_0x33eb3d,_0x5d9280){_0x33eb3d=_0x33eb3d-0x0;var _0x2a2e08=_0x1ef3[_0x33eb3d];return _0x2a2e08;};'use strict';var EventEmitter=require(_0x31ef('0x0'));var ChatQueue=require(_0x31ef('0x1'))['db']['ChatQueue'];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x31ef('0x2')](0x0);var events={'afterCreate':_0x31ef('0x3'),'afterUpdate':_0x31ef('0x4'),'afterDestroy':'remove'};function emitEvent(_0x311a32){return function(_0x58388a,_0x49ce87,_0x1a8d7f){ChatQueueEvents[_0x31ef('0x5')](_0x311a32+':'+_0x58388a['id'],_0x58388a);ChatQueueEvents[_0x31ef('0x5')](_0x311a32,_0x58388a);_0x1a8d7f(null);};}for(var e in events){if(events[_0x31ef('0x6')](e)){var event=events[e];ChatQueue[_0x31ef('0x7')](e,emitEvent(event));}}module[_0x31ef('0x8')]=ChatQueueEvents;
\ No newline at end of file
index 3225ff3..398316c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57d5=['../../config/environment','./chatQueue.attributes','exports','ChatQueue','chat_queues','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x57d5,0x1cd));var _0x557d=function(_0x5e4563,_0x3ff918){_0x5e4563=_0x5e4563-0x0;var _0x8d1bf5=_0x57d5[_0x5e4563];return _0x8d1bf5;};'use strict';var _=require(_0x557d('0x0'));var util=require('util');var logger=require(_0x557d('0x1'))(_0x557d('0x2'));var moment=require(_0x557d('0x3'));var BPromise=require(_0x557d('0x4'));var rp=require(_0x557d('0x5'));var fs=require('fs');var path=require(_0x557d('0x6'));var rimraf=require('rimraf');var config=require(_0x557d('0x7'));var attributes=require(_0x557d('0x8'));module[_0x557d('0x9')]=function(_0x2e2718,_0x235e88){return _0x2e2718['define'](_0x557d('0xa'),attributes,{'tableName':_0x557d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1bd6=['define','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./chatQueue.attributes'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x1bd6,0x1f0));var _0x61bd=function(_0x4fe680,_0xd17539){_0x4fe680=_0x4fe680-0x0;var _0x4a41ee=_0x1bd6[_0x4fe680];return _0x4a41ee;};'use strict';var _=require(_0x61bd('0x0'));var util=require(_0x61bd('0x1'));var logger=require(_0x61bd('0x2'))(_0x61bd('0x3'));var moment=require(_0x61bd('0x4'));var BPromise=require(_0x61bd('0x5'));var rp=require(_0x61bd('0x6'));var fs=require('fs');var path=require(_0x61bd('0x7'));var rimraf=require('rimraf');var config=require(_0x61bd('0x8'));var attributes=require(_0x61bd('0x9'));module['exports']=function(_0x2975d7,_0x5d2c38){return _0x2975d7[_0x61bd('0xa')]('ChatQueue',attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7d56c3f..15becee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf990=['result','catch','GetChatQueue','ChatQueue','findAll','raw','options','where','limit','include','map','model','attributes','ShowChatQueue','find','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','./chatQueue.socket','request','then','info','debug','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','ChatQueue,\x20%s,\x20%s'];(function(_0x70cfa9,_0x46c289){var _0x984577=function(_0x329600){while(--_0x329600){_0x70cfa9['push'](_0x70cfa9['shift']());}};_0x984577(++_0x46c289);}(_0xf990,0x87));var _0x0f99=function(_0x3b0966,_0x3fc4ca){_0x3b0966=_0x3b0966-0x0;var _0x18e6b0=_0xf990[_0x3b0966];return _0x18e6b0;};'use strict';var _=require(_0x0f99('0x0'));var util=require('util');var moment=require(_0x0f99('0x1'));var BPromise=require(_0x0f99('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0f99('0x3'));var db=require(_0x0f99('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x0f99('0x5'))(_0x0f99('0x6'));var config=require('../../config/environment');var jayson=require(_0x0f99('0x7'));var client=jayson[_0x0f99('0x8')][_0x0f99('0x9')]({'port':0x232a});config[_0x0f99('0xa')]=_['defaults'](config['redis'],{'host':_0x0f99('0xb'),'port':0x18eb});var socket=require(_0x0f99('0xc'))(new Redis(config[_0x0f99('0xa')]));require(_0x0f99('0xd'))['register'](socket);function respondWithRpcPromise(_0x184326,_0x40e2e8,_0x1dae9f){return new BPromise(function(_0x32a489,_0x56b042){return client[_0x0f99('0xe')](_0x184326,_0x1dae9f)[_0x0f99('0xf')](function(_0x31c4e8){logger[_0x0f99('0x10')]('ChatQueue,\x20%s,\x20%s',_0x40e2e8,'request\x20sent');logger[_0x0f99('0x11')](_0x0f99('0x12'),_0x40e2e8,_0x0f99('0x13'),JSON[_0x0f99('0x14')](_0x31c4e8));if(_0x31c4e8[_0x0f99('0x15')]){if(_0x31c4e8[_0x0f99('0x15')][_0x0f99('0x16')]===0x1f4){logger[_0x0f99('0x15')]('ChatQueue,\x20%s,\x20%s',_0x40e2e8,_0x31c4e8[_0x0f99('0x15')]['message']);return _0x56b042(_0x31c4e8['error'][_0x0f99('0x17')]);}logger[_0x0f99('0x15')](_0x0f99('0x18'),_0x40e2e8,_0x31c4e8[_0x0f99('0x15')][_0x0f99('0x17')]);return _0x32a489(_0x31c4e8['error'][_0x0f99('0x17')]);}else{logger[_0x0f99('0x10')]('ChatQueue,\x20%s,\x20%s',_0x40e2e8,_0x0f99('0x13'));_0x32a489(_0x31c4e8[_0x0f99('0x19')][_0x0f99('0x17')]);}})[_0x0f99('0x1a')](function(_0x34b545){logger[_0x0f99('0x15')](_0x0f99('0x18'),_0x40e2e8,_0x34b545);_0x56b042(_0x34b545);});});}exports[_0x0f99('0x1b')]=function(_0x119e5d){var _0x347656=this;return new Promise(function(_0x4f1fb1,_0x2f977c){return db[_0x0f99('0x1c')][_0x0f99('0x1d')]({'raw':_0x119e5d['options']?_0x119e5d['options'][_0x0f99('0x1e')]===undefined?!![]:![]:!![],'where':_0x119e5d[_0x0f99('0x1f')]?_0x119e5d['options'][_0x0f99('0x20')]||null:null,'attributes':_0x119e5d[_0x0f99('0x1f')]?_0x119e5d[_0x0f99('0x1f')]['attributes']||null:null,'limit':_0x119e5d[_0x0f99('0x1f')]?_0x119e5d[_0x0f99('0x1f')][_0x0f99('0x21')]||null:null,'include':_0x119e5d[_0x0f99('0x1f')]?_0x119e5d[_0x0f99('0x1f')][_0x0f99('0x22')]?_[_0x0f99('0x23')](_0x119e5d[_0x0f99('0x1f')]['include'],function(_0x32584c){return{'model':db[_0x32584c[_0x0f99('0x24')]],'as':_0x32584c['as'],'attributes':_0x32584c['attributes'],'include':_0x32584c[_0x0f99('0x22')]?_[_0x0f99('0x23')](_0x32584c[_0x0f99('0x22')],function(_0x3a32c6){return{'model':db[_0x3a32c6['model']],'as':_0x3a32c6['as'],'attributes':_0x3a32c6['attributes'],'include':_0x3a32c6[_0x0f99('0x22')]?_[_0x0f99('0x23')](_0x3a32c6[_0x0f99('0x22')],function(_0x32eb8d){return{'model':db[_0x32eb8d['model']],'as':_0x32eb8d['as'],'attributes':_0x32eb8d[_0x0f99('0x25')]};}):[]};}):[]};}):[]:[]})[_0x0f99('0xf')](function(_0x7bdbd9){logger['info'](_0x0f99('0x1b'),_0x119e5d);logger['debug']('GetChatQueue',_0x119e5d,JSON[_0x0f99('0x14')](_0x7bdbd9));_0x4f1fb1(_0x7bdbd9);})['catch'](function(_0x4ed199){logger[_0x0f99('0x15')](_0x0f99('0x1b'),_0x4ed199['message'],_0x119e5d);_0x2f977c(_0x347656[_0x0f99('0x15')](0x1f4,_0x4ed199[_0x0f99('0x17')]));});});};exports[_0x0f99('0x26')]=function(_0x13a887){var _0x42e263=this;return new Promise(function(_0x32f40b,_0x5b86f8){return db['ChatQueue'][_0x0f99('0x27')]({'raw':_0x13a887[_0x0f99('0x1f')]?_0x13a887[_0x0f99('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x13a887[_0x0f99('0x1f')]?_0x13a887[_0x0f99('0x1f')][_0x0f99('0x20')]||null:null,'attributes':_0x13a887[_0x0f99('0x1f')]?_0x13a887[_0x0f99('0x1f')][_0x0f99('0x25')]||null:null,'include':_0x13a887[_0x0f99('0x1f')]?_0x13a887[_0x0f99('0x1f')][_0x0f99('0x22')]?_[_0x0f99('0x23')](_0x13a887[_0x0f99('0x1f')][_0x0f99('0x22')],function(_0x38c6f5){return{'model':db[_0x38c6f5[_0x0f99('0x24')]],'as':_0x38c6f5['as'],'attributes':_0x38c6f5[_0x0f99('0x25')],'include':_0x38c6f5['include']?_[_0x0f99('0x23')](_0x38c6f5[_0x0f99('0x22')],function(_0x2c5034){return{'model':db[_0x2c5034[_0x0f99('0x24')]],'as':_0x2c5034['as'],'attributes':_0x2c5034[_0x0f99('0x25')],'include':_0x2c5034[_0x0f99('0x22')]?_[_0x0f99('0x23')](_0x2c5034[_0x0f99('0x22')],function(_0x2b68fd){return{'model':db[_0x2b68fd[_0x0f99('0x24')]],'as':_0x2b68fd['as'],'attributes':_0x2b68fd[_0x0f99('0x25')]};}):[]};}):[]};}):[]:[]})[_0x0f99('0xf')](function(_0x2f644f){logger['info'](_0x0f99('0x26'),_0x13a887);logger[_0x0f99('0x11')](_0x0f99('0x26'),_0x13a887,JSON['stringify'](_0x2f644f));_0x32f40b(_0x2f644f);})[_0x0f99('0x1a')](function(_0x50a145){logger[_0x0f99('0x15')](_0x0f99('0x26'),_0x50a145[_0x0f99('0x17')],_0x13a887);_0x5b86f8(_0x42e263[_0x0f99('0x15')](0x1f4,_0x50a145[_0x0f99('0x17')]));});});};
\ No newline at end of file
+var _0x3149=['ChatQueue,\x20%s,\x20%s','message','GetChatQueue','ChatQueue','findAll','options','raw','attributes','limit','include','model','map','catch','ShowChatQueue','find','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','register','then','info','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x3da832,_0x2133f1){var _0xe602f2=function(_0xb7b2f){while(--_0xb7b2f){_0x3da832['push'](_0x3da832['shift']());}};_0xe602f2(++_0x2133f1);}(_0x3149,0x181));var _0x9314=function(_0x3c29f3,_0x1d9ed5){_0x3c29f3=_0x3c29f3-0x0;var _0xae01c1=_0x3149[_0x3c29f3];return _0xae01c1;};'use strict';var _=require(_0x9314('0x0'));var util=require('util');var moment=require(_0x9314('0x1'));var BPromise=require(_0x9314('0x2'));var rs=require(_0x9314('0x3'));var fs=require('fs');var Redis=require(_0x9314('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x9314('0x5'));var logger=require(_0x9314('0x6'))(_0x9314('0x7'));var config=require(_0x9314('0x8'));var jayson=require(_0x9314('0x9'));var client=jayson['client'][_0x9314('0xa')]({'port':0x232a});config[_0x9314('0xb')]=_[_0x9314('0xc')](config[_0x9314('0xb')],{'host':_0x9314('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x9314('0xb')]));require('./chatQueue.socket')[_0x9314('0xe')](socket);function respondWithRpcPromise(_0x50128c,_0x1629f4,_0x18e92c){return new BPromise(function(_0x55a936,_0x3ef023){return client['request'](_0x50128c,_0x18e92c)[_0x9314('0xf')](function(_0x410894){logger[_0x9314('0x10')]('ChatQueue,\x20%s,\x20%s',_0x1629f4,_0x9314('0x11'));logger[_0x9314('0x12')](_0x9314('0x13'),_0x1629f4,_0x9314('0x11'),JSON[_0x9314('0x14')](_0x410894));if(_0x410894[_0x9314('0x15')]){if(_0x410894[_0x9314('0x15')]['code']===0x1f4){logger[_0x9314('0x15')](_0x9314('0x16'),_0x1629f4,_0x410894[_0x9314('0x15')]['message']);return _0x3ef023(_0x410894[_0x9314('0x15')][_0x9314('0x17')]);}logger[_0x9314('0x15')]('ChatQueue,\x20%s,\x20%s',_0x1629f4,_0x410894[_0x9314('0x15')][_0x9314('0x17')]);return _0x55a936(_0x410894['error'][_0x9314('0x17')]);}else{logger[_0x9314('0x10')](_0x9314('0x16'),_0x1629f4,'request\x20sent');_0x55a936(_0x410894['result'][_0x9314('0x17')]);}})['catch'](function(_0x38832f){logger[_0x9314('0x15')](_0x9314('0x16'),_0x1629f4,_0x38832f);_0x3ef023(_0x38832f);});});}exports[_0x9314('0x18')]=function(_0x262aab){var _0xc23022=this;return new Promise(function(_0x5eb841,_0x1046ae){return db[_0x9314('0x19')][_0x9314('0x1a')]({'raw':_0x262aab['options']?_0x262aab[_0x9314('0x1b')][_0x9314('0x1c')]===undefined?!![]:![]:!![],'where':_0x262aab[_0x9314('0x1b')]?_0x262aab[_0x9314('0x1b')]['where']||null:null,'attributes':_0x262aab[_0x9314('0x1b')]?_0x262aab[_0x9314('0x1b')][_0x9314('0x1d')]||null:null,'limit':_0x262aab[_0x9314('0x1b')]?_0x262aab['options'][_0x9314('0x1e')]||null:null,'include':_0x262aab[_0x9314('0x1b')]?_0x262aab[_0x9314('0x1b')]['include']?_['map'](_0x262aab[_0x9314('0x1b')][_0x9314('0x1f')],function(_0x242096){return{'model':db[_0x242096[_0x9314('0x20')]],'as':_0x242096['as'],'attributes':_0x242096[_0x9314('0x1d')],'include':_0x242096['include']?_['map'](_0x242096[_0x9314('0x1f')],function(_0x460a46){return{'model':db[_0x460a46['model']],'as':_0x460a46['as'],'attributes':_0x460a46[_0x9314('0x1d')],'include':_0x460a46[_0x9314('0x1f')]?_[_0x9314('0x21')](_0x460a46[_0x9314('0x1f')],function(_0x239822){return{'model':db[_0x239822['model']],'as':_0x239822['as'],'attributes':_0x239822[_0x9314('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x9314('0xf')](function(_0x9242d7){logger['info'](_0x9314('0x18'),_0x262aab);logger[_0x9314('0x12')](_0x9314('0x18'),_0x262aab,JSON[_0x9314('0x14')](_0x9242d7));_0x5eb841(_0x9242d7);})[_0x9314('0x22')](function(_0x1fc96b){logger['error']('GetChatQueue',_0x1fc96b[_0x9314('0x17')],_0x262aab);_0x1046ae(_0xc23022[_0x9314('0x15')](0x1f4,_0x1fc96b['message']));});});};exports[_0x9314('0x23')]=function(_0x572d47){var _0xf10178=this;return new Promise(function(_0x129154,_0xeb6ba8){return db[_0x9314('0x19')][_0x9314('0x24')]({'raw':_0x572d47[_0x9314('0x1b')]?_0x572d47[_0x9314('0x1b')][_0x9314('0x1c')]===undefined?!![]:![]:!![],'where':_0x572d47[_0x9314('0x1b')]?_0x572d47[_0x9314('0x1b')]['where']||null:null,'attributes':_0x572d47[_0x9314('0x1b')]?_0x572d47[_0x9314('0x1b')][_0x9314('0x1d')]||null:null,'include':_0x572d47[_0x9314('0x1b')]?_0x572d47[_0x9314('0x1b')][_0x9314('0x1f')]?_[_0x9314('0x21')](_0x572d47[_0x9314('0x1b')]['include'],function(_0x1584ad){return{'model':db[_0x1584ad[_0x9314('0x20')]],'as':_0x1584ad['as'],'attributes':_0x1584ad[_0x9314('0x1d')],'include':_0x1584ad[_0x9314('0x1f')]?_[_0x9314('0x21')](_0x1584ad['include'],function(_0x3e031c){return{'model':db[_0x3e031c[_0x9314('0x20')]],'as':_0x3e031c['as'],'attributes':_0x3e031c['attributes'],'include':_0x3e031c[_0x9314('0x1f')]?_[_0x9314('0x21')](_0x3e031c[_0x9314('0x1f')],function(_0x5860cc){return{'model':db[_0x5860cc[_0x9314('0x20')]],'as':_0x5860cc['as'],'attributes':_0x5860cc[_0x9314('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x9314('0xf')](function(_0x1f25d8){logger[_0x9314('0x10')](_0x9314('0x23'),_0x572d47);logger[_0x9314('0x12')](_0x9314('0x23'),_0x572d47,JSON['stringify'](_0x1f25d8));_0x129154(_0x1f25d8);})[_0x9314('0x22')](function(_0x3aa82f){logger[_0x9314('0x15')](_0x9314('0x23'),_0x3aa82f[_0x9314('0x17')],_0x572d47);_0xeb6ba8(_0xf10178[_0x9314('0x15')](0x1f4,_0x3aa82f[_0x9314('0x17')]));});});};
\ No newline at end of file
index 7e0a595..4afb226 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x826a=['update','emit','removeListener','register','length','chatQueue:','save'];(function(_0x145c02,_0x3e40bf){var _0x1b59fa=function(_0x2aa272){while(--_0x2aa272){_0x145c02['push'](_0x145c02['shift']());}};_0x1b59fa(++_0x3e40bf);}(_0x826a,0x1aa));var _0xa826=function(_0x5046bf,_0x501609){_0x5046bf=_0x5046bf-0x0;var _0x2e03df=_0x826a[_0x5046bf];return _0x2e03df;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=[_0xa826('0x0'),'remove',_0xa826('0x1')];function createListener(_0x50c70e,_0x376d53){return function(_0x19ba11){_0x376d53[_0xa826('0x2')](_0x50c70e,_0x19ba11);};}function removeListener(_0x34e1ad,_0x5372ab){return function(){ChatQueueEvents[_0xa826('0x3')](_0x34e1ad,_0x5372ab);};}exports[_0xa826('0x4')]=function(_0x3929d4){for(var _0x34327b=0x0,_0x45154f=events[_0xa826('0x5')];_0x34327b<_0x45154f;_0x34327b++){var _0x4339f9=events[_0x34327b];var _0x14c2ba=createListener(_0xa826('0x6')+_0x4339f9,_0x3929d4);ChatQueueEvents['on'](_0x4339f9,_0x14c2ba);}};
\ No newline at end of file
+var _0xa41a=['emit','removeListener','./chatQueue.events','save','update'];(function(_0x1573ea,_0x434f02){var _0x51c0e2=function(_0x5c9b28){while(--_0x5c9b28){_0x1573ea['push'](_0x1573ea['shift']());}};_0x51c0e2(++_0x434f02);}(_0xa41a,0x6b));var _0xaa41=function(_0x4ea9ad,_0x2e4cba){_0x4ea9ad=_0x4ea9ad-0x0;var _0x4b8465=_0xa41a[_0x4ea9ad];return _0x4b8465;};'use strict';var ChatQueueEvents=require(_0xaa41('0x0'));var events=[_0xaa41('0x1'),'remove',_0xaa41('0x2')];function createListener(_0x2a96ba,_0x43654a){return function(_0xc5ce74){_0x43654a[_0xaa41('0x3')](_0x2a96ba,_0xc5ce74);};}function removeListener(_0x3168be,_0x42896b){return function(){ChatQueueEvents[_0xaa41('0x4')](_0x3168be,_0x42896b);};}exports['register']=function(_0x2122a0){for(var _0x1ec9d4=0x0,_0x54bc5a=events['length'];_0x1ec9d4<_0x54bc5a;_0x1ec9d4++){var _0x179545=events[_0x1ec9d4];var _0x202cce=createListener('chatQueue:'+_0x179545,_0x2122a0);ChatQueueEvents['on'](_0x179545,_0x202cce);}};
\ No newline at end of file
index ef3a3f1..0eb75f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['/describe','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','removeAgents','exports','multer','util','express','Router','../../components/auth/service','./chatQueue.controller','get','isAuthenticated','index'];(function(_0x576217,_0x271e63){var _0x489efa=function(_0x5ae9fc){while(--_0x5ae9fc){_0x576217['push'](_0x576217['shift']());}};_0x489efa(++_0x271e63);}(_0xe14b,0x93));var _0xbe14=function(_0xd0e86f,_0x413ab5){_0xd0e86f=_0xd0e86f-0x0;var _0x5bb972=_0xe14b[_0xd0e86f];return _0x5bb972;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['describe']);router['get']('/:id',auth[_0xbe14('0x7')](),controller[_0xbe14('0xa')]);router[_0xbe14('0x6')](_0xbe14('0xb'),auth['isAuthenticated'](),controller['getMembers']);router[_0xbe14('0x6')](_0xbe14('0xc'),auth['isAuthenticated'](),controller[_0xbe14('0xd')]);router[_0xbe14('0x6')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xf')]);router[_0xbe14('0x10')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x11')]);router[_0xbe14('0x10')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x12')]);router[_0xbe14('0x10')]('/:id/users',auth['isAuthenticated'](),controller[_0xbe14('0x13')]);router[_0xbe14('0x14')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller['update']);router[_0xbe14('0x16')](_0xbe14('0x15'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x17')]);router[_0xbe14('0x16')](_0xbe14('0xc'),auth[_0xbe14('0x7')](),controller['removeTeams']);router[_0xbe14('0x16')](_0xbe14('0xe'),auth[_0xbe14('0x7')](),controller[_0xbe14('0x18')]);module[_0xbe14('0x19')]=router;
\ No newline at end of file
+var _0x7217=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','post','addTeams','update','delete','destroy','removeTeams','removeAgents','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x5c33d7,_0x3bd6ac){var _0x28b400=function(_0x44622c){while(--_0x44622c){_0x5c33d7['push'](_0x5c33d7['shift']());}};_0x28b400(++_0x3bd6ac);}(_0x7217,0x19e));var _0x7721=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x7217[_0x110c3d];return _0x226d67;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0x8')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0x8')](_0x7721('0xf'),auth['isAuthenticated'](),controller[_0x7721('0x10')]);router[_0x7721('0x8')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x12')]);router[_0x7721('0x8')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller['getAgents']);router[_0x7721('0x14')]('/',auth[_0x7721('0x9')](),controller['create']);router[_0x7721('0x14')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x15')]);router['post'](_0x7721('0x13'),auth[_0x7721('0x9')](),controller['addAgents']);router['put']('/:id',auth[_0x7721('0x9')](),controller[_0x7721('0x16')]);router[_0x7721('0x17')](_0x7721('0xd'),auth['isAuthenticated'](),controller[_0x7721('0x18')]);router['delete'](_0x7721('0x11'),auth['isAuthenticated'](),controller[_0x7721('0x19')]);router[_0x7721('0x17')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller[_0x7721('0x1a')]);module[_0x7721('0x1b')]=router;
\ No newline at end of file
index d828e88..00961ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x397a=['moment','sequelize','exports','STRING','DATE'];(function(_0x43e4b3,_0x1444de){var _0x10c655=function(_0x56c01d){while(--_0x56c01d){_0x43e4b3['push'](_0x43e4b3['shift']());}};_0x10c655(++_0x1444de);}(_0x397a,0x1ea));var _0xa397=function(_0x280da9,_0x281ef7){_0x280da9=_0x280da9-0x0;var _0x47e86c=_0x397a[_0x280da9];return _0x47e86c;};'use strict';var moment=require(_0xa397('0x0'));var Sequelize=require(_0xa397('0x1'));module[_0xa397('0x2')]={'uniqueid':{'type':Sequelize[_0xa397('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xa397('0x3')]},'joinAt':{'type':Sequelize[_0xa397('0x4')]},'leaveAt':{'type':Sequelize[_0xa397('0x4')]},'acceptAt':{'type':Sequelize[_0xa397('0x4')]},'exitAt':{'type':Sequelize[_0xa397('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x74df=['STRING','DATE','sequelize','exports'];(function(_0x1cc13e,_0x37e1ca){var _0x4e4cf6=function(_0x303af3){while(--_0x303af3){_0x1cc13e['push'](_0x1cc13e['shift']());}};_0x4e4cf6(++_0x37e1ca);}(_0x74df,0xc2));var _0xf74d=function(_0x173247,_0x32b949){_0x173247=_0x173247-0x0;var _0x4e9b10=_0x74df[_0x173247];return _0x4e9b10;};'use strict';var moment=require('moment');var Sequelize=require(_0xf74d('0x0'));module[_0xf74d('0x1')]={'uniqueid':{'type':Sequelize[_0xf74d('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xf74d('0x2')]},'joinAt':{'type':Sequelize[_0xf74d('0x3')]},'leaveAt':{'type':Sequelize[_0xf74d('0x3')]},'acceptAt':{'type':Sequelize[_0xf74d('0x3')]},'exitAt':{'type':Sequelize[_0xf74d('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 3f7fddf..b1e2ff9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc21e=['length','hasOwnProperty','nolimit','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','keys','merge','find','create','body','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','reject','save','update','destroy','then','end','error','stack','name','index','map','ChatQueueReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes'];(function(_0x5d3414,_0x540d0b){var _0x3492d1=function(_0x27ecc5){while(--_0x27ecc5){_0x5d3414['push'](_0x5d3414['shift']());}};_0x3492d1(++_0x540d0b);}(_0xc21e,0x1ca));var _0xec21=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xc21e[_0x21a9d9];return _0x46adce;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xec21('0x0'));var zipdir=require(_0xec21('0x1'));var jsonpatch=require(_0xec21('0x2'));var rp=require(_0xec21('0x3'));var moment=require(_0xec21('0x4'));var BPromise=require(_0xec21('0x5'));var Mustache=require('mustache');var util=require(_0xec21('0x6'));var path=require(_0xec21('0x7'));var sox=require(_0xec21('0x8'));var csv=require(_0xec21('0x9'));var ejs=require(_0xec21('0xa'));var fs=require('fs');var fs_extra=require(_0xec21('0xb'));var _=require(_0xec21('0xc'));var squel=require(_0xec21('0xd'));var crypto=require('crypto');var jsforce=require(_0xec21('0xe'));var deskjs=require(_0xec21('0xf'));var toCsv=require(_0xec21('0x9'));var querystring=require(_0xec21('0x10'));var Papa=require(_0xec21('0x11'));var Redis=require('ioredis');var authService=require(_0xec21('0x12'));var qs=require(_0xec21('0x13'));var as=require(_0xec21('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xec21('0x15'));var utils=require(_0xec21('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xec21('0x17'));var db=require(_0xec21('0x18'))['db'];function respondWithStatusCode(_0xd9232e,_0x3a6e6a){_0x3a6e6a=_0x3a6e6a||0xcc;return function(_0xc1cca0){if(_0xc1cca0){return _0xd9232e['sendStatus'](_0x3a6e6a);}return _0xd9232e[_0xec21('0x19')](_0x3a6e6a)['end']();};}function respondWithResult(_0x3ea83f,_0x1987f4){_0x1987f4=_0x1987f4||0xc8;return function(_0x34e6af){if(_0x34e6af){return _0x3ea83f['status'](_0x1987f4)[_0xec21('0x1a')](_0x34e6af);}};}function respondWithFilteredResult(_0x3ee6f7,_0x3838c3){return function(_0x2c3124){if(_0x2c3124){var _0x324853=typeof _0x3838c3[_0xec21('0x1b')]===_0xec21('0x1c')&&typeof _0x3838c3[_0xec21('0x1d')]==='undefined';var _0x398c29=_0x2c3124[_0xec21('0x1e')];var _0x2fcbcc=_0x324853?0x0:_0x3838c3[_0xec21('0x1b')];var _0x3ab226=_0x324853?_0x2c3124[_0xec21('0x1e')]:_0x3838c3[_0xec21('0x1b')]+_0x3838c3[_0xec21('0x1d')];var _0x3c790e;if(_0x3ab226>=_0x398c29){_0x3ab226=_0x398c29;_0x3c790e=0xc8;}else{_0x3c790e=0xce;}_0x3ee6f7[_0xec21('0x19')](_0x3c790e);return _0x3ee6f7['set']('Content-Range',_0x2fcbcc+'-'+_0x3ab226+'/'+_0x398c29)[_0xec21('0x1a')](_0x2c3124);}return null;};}function patchUpdates(_0x2f4ef9){return function(_0x5ab97e){try{jsonpatch['apply'](_0x5ab97e,_0x2f4ef9,!![]);}catch(_0x176b59){return BPromise[_0xec21('0x1f')](_0x176b59);}return _0x5ab97e[_0xec21('0x20')]();};}function saveUpdates(_0x5dff00,_0x17d1ac){return function(_0x1f86d2){if(_0x1f86d2){return _0x1f86d2[_0xec21('0x21')](_0x5dff00)['then'](function(_0x20ede9){return _0x20ede9;});}return null;};}function removeEntity(_0x454d31,_0x2d521a){return function(_0x46fd9e){if(_0x46fd9e){return _0x46fd9e[_0xec21('0x22')]()[_0xec21('0x23')](function(){_0x454d31['status'](0xcc)[_0xec21('0x24')]();});}};}function handleEntityNotFound(_0x26cdae,_0x4cd699){return function(_0x19b556){if(!_0x19b556){_0x26cdae['sendStatus'](0x194);}return _0x19b556;};}function handleError(_0x27e2d,_0x49fd27){_0x49fd27=_0x49fd27||0x1f4;return function(_0x4ef840){logger[_0xec21('0x25')](_0x4ef840[_0xec21('0x26')]);if(_0x4ef840[_0xec21('0x27')]){delete _0x4ef840[_0xec21('0x27')];}_0x27e2d[_0xec21('0x19')](_0x49fd27)['send'](_0x4ef840);};}exports[_0xec21('0x28')]=function(_0x592971,_0x343f4f){var _0x233bf9={},_0x116a23={},_0x35b2bf={'count':0x0,'rows':[]};var _0x4dd56b=_[_0xec21('0x29')](db[_0xec21('0x2a')][_0xec21('0x2b')],function(_0x233231){return{'name':_0x233231[_0xec21('0x2c')],'type':_0x233231[_0xec21('0x2d')][_0xec21('0x2e')]};});_0x116a23[_0xec21('0x2f')]=_[_0xec21('0x29')](_0x4dd56b,_0xec21('0x27'));_0x116a23[_0xec21('0x30')]=_['keys'](_0x592971[_0xec21('0x30')]);_0x116a23[_0xec21('0x31')]=_[_0xec21('0x32')](_0x116a23[_0xec21('0x2f')],_0x116a23[_0xec21('0x30')]);_0x233bf9['attributes']=_[_0xec21('0x32')](_0x116a23['model'],qs['fields'](_0x592971['query'][_0xec21('0x33')]));_0x233bf9[_0xec21('0x34')]=_0x233bf9[_0xec21('0x34')][_0xec21('0x35')]?_0x233bf9[_0xec21('0x34')]:_0x116a23[_0xec21('0x2f')];if(!_0x592971[_0xec21('0x30')][_0xec21('0x36')](_0xec21('0x37'))){_0x233bf9[_0xec21('0x1d')]=qs[_0xec21('0x1d')](_0x592971[_0xec21('0x30')]['limit']);_0x233bf9[_0xec21('0x1b')]=qs[_0xec21('0x1b')](_0x592971['query'][_0xec21('0x1b')]);}_0x233bf9['order']=qs['sort'](_0x592971[_0xec21('0x30')]['sort']);_0x233bf9[_0xec21('0x38')]=qs['filters'](_[_0xec21('0x39')](_0x592971[_0xec21('0x30')],_0x116a23['filters']),_0x4dd56b);if(_0x592971[_0xec21('0x30')][_0xec21('0x3a')]){_0x233bf9[_0xec21('0x38')]=_['merge'](_0x233bf9[_0xec21('0x38')],{'$or':_[_0xec21('0x29')](_0x4dd56b,function(_0xcce304){if(_0xcce304['type']!==_0xec21('0x3b')){var _0x2cf43b={};_0x2cf43b[_0xcce304[_0xec21('0x27')]]={'$like':'%'+_0x592971[_0xec21('0x30')][_0xec21('0x3a')]+'%'};return _0x2cf43b;}})});}_0x233bf9=_['merge']({},_0x233bf9,_0x592971[_0xec21('0x3c')]);var _0xc36cc2={'where':_0x233bf9['where']};return db[_0xec21('0x2a')]['count'](_0xc36cc2)[_0xec21('0x23')](function(_0x18e20d){_0x35b2bf[_0xec21('0x1e')]=_0x18e20d;if(_0x592971['query'][_0xec21('0x3d')]){_0x233bf9[_0xec21('0x3e')]=[{'all':!![]}];}return db[_0xec21('0x2a')][_0xec21('0x3f')](_0x233bf9);})['then'](function(_0x575e99){_0x35b2bf[_0xec21('0x40')]=_0x575e99;return _0x35b2bf;})['then'](respondWithFilteredResult(_0x343f4f,_0x233bf9))[_0xec21('0x41')](handleError(_0x343f4f,null));};exports['show']=function(_0x16a794,_0x52e024){var _0x46d4f4={'raw':!![],'where':{'id':_0x16a794['params']['id']}},_0x3510dd={};_0x3510dd[_0xec21('0x2f')]=_[_0xec21('0x42')](db['ChatQueueReport'][_0xec21('0x2b')]);_0x3510dd[_0xec21('0x30')]=_[_0xec21('0x42')](_0x16a794[_0xec21('0x30')]);_0x3510dd[_0xec21('0x31')]=_[_0xec21('0x32')](_0x3510dd[_0xec21('0x2f')],_0x3510dd[_0xec21('0x30')]);_0x46d4f4[_0xec21('0x34')]=_['intersection'](_0x3510dd['model'],qs[_0xec21('0x33')](_0x16a794[_0xec21('0x30')][_0xec21('0x33')]));_0x46d4f4['attributes']=_0x46d4f4[_0xec21('0x34')][_0xec21('0x35')]?_0x46d4f4[_0xec21('0x34')]:_0x3510dd['model'];if(_0x16a794['query']['includeAll']){_0x46d4f4[_0xec21('0x3e')]=[{'all':!![]}];}_0x46d4f4=_[_0xec21('0x43')]({},_0x46d4f4,_0x16a794[_0xec21('0x3c')]);return db[_0xec21('0x2a')][_0xec21('0x44')](_0x46d4f4)[_0xec21('0x23')](handleEntityNotFound(_0x52e024,null))[_0xec21('0x23')](respondWithResult(_0x52e024,null))['catch'](handleError(_0x52e024,null));};exports[_0xec21('0x45')]=function(_0x21fe90,_0x2edf34){return db[_0xec21('0x2a')][_0xec21('0x45')](_0x21fe90[_0xec21('0x46')],{})[_0xec21('0x23')](respondWithResult(_0x2edf34,0xc9))[_0xec21('0x41')](handleError(_0x2edf34,null));};exports['update']=function(_0x4204d7,_0x21e67f){if(_0x4204d7[_0xec21('0x46')]['id']){delete _0x4204d7['body']['id'];}return db['ChatQueueReport']['find']({'where':{'id':_0x4204d7[_0xec21('0x47')]['id']}})[_0xec21('0x23')](handleEntityNotFound(_0x21e67f,null))['then'](saveUpdates(_0x4204d7[_0xec21('0x46')],null))[_0xec21('0x23')](respondWithResult(_0x21e67f,null))[_0xec21('0x41')](handleError(_0x21e67f,null));};exports['destroy']=function(_0x2d6426,_0x5e90eb){return db[_0xec21('0x2a')]['find']({'where':{'id':_0x2d6426[_0xec21('0x47')]['id']}})[_0xec21('0x23')](handleEntityNotFound(_0x5e90eb,null))[_0xec21('0x23')](removeEntity(_0x5e90eb,null))[_0xec21('0x41')](handleError(_0x5e90eb,null));};exports[_0xec21('0x48')]=function(_0x5c994d,_0x157d42){return db['ChatQueueReport'][_0xec21('0x48')]()['then'](respondWithResult(_0x157d42,null))[_0xec21('0x41')](handleError(_0x157d42,null));};
\ No newline at end of file
+var _0x933c=['describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','save','update','destroy','error','stack','name','map','ChatQueueReport','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','rows','then','catch','show','params','rawAttributes','includeAll','options','find','create','body'];(function(_0x218c79,_0x3fc5d8){var _0x5e269f=function(_0x54d5e9){while(--_0x54d5e9){_0x218c79['push'](_0x218c79['shift']());}};_0x5e269f(++_0x3fc5d8);}(_0x933c,0x99));var _0xc933=function(_0x1acabd,_0x30d844){_0x1acabd=_0x1acabd-0x0;var _0x4fa3eb=_0x933c[_0x1acabd];return _0x4fa3eb;};'use strict';var emlformat=require(_0xc933('0x0'));var rimraf=require(_0xc933('0x1'));var zipdir=require(_0xc933('0x2'));var jsonpatch=require(_0xc933('0x3'));var rp=require(_0xc933('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc933('0x5'));var util=require(_0xc933('0x6'));var path=require(_0xc933('0x7'));var sox=require(_0xc933('0x8'));var csv=require(_0xc933('0x9'));var ejs=require(_0xc933('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc933('0xb'));var squel=require('squel');var crypto=require(_0xc933('0xc'));var jsforce=require(_0xc933('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xc933('0xe'));var Papa=require(_0xc933('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc933('0x10'));var as=require(_0xc933('0x11'));var hardwareService=require(_0xc933('0x12'));var logger=require(_0xc933('0x13'))(_0xc933('0x14'));var utils=require(_0xc933('0x15'));var config=require(_0xc933('0x16'));var licenseUtil=require(_0xc933('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4928e5,_0x2c855a){_0x2c855a=_0x2c855a||0xcc;return function(_0x475cce){if(_0x475cce){return _0x4928e5[_0xc933('0x18')](_0x2c855a);}return _0x4928e5[_0xc933('0x19')](_0x2c855a)[_0xc933('0x1a')]();};}function respondWithResult(_0x4c2fad,_0x1d8c1c){_0x1d8c1c=_0x1d8c1c||0xc8;return function(_0x5b6f32){if(_0x5b6f32){return _0x4c2fad[_0xc933('0x19')](_0x1d8c1c)[_0xc933('0x1b')](_0x5b6f32);}};}function respondWithFilteredResult(_0x106146,_0x2f5784){return function(_0x490452){if(_0x490452){var _0x12a97b=typeof _0x2f5784['offset']==='undefined'&&typeof _0x2f5784[_0xc933('0x1c')]===_0xc933('0x1d');var _0xb76659=_0x490452[_0xc933('0x1e')];var _0x1611a7=_0x12a97b?0x0:_0x2f5784[_0xc933('0x1f')];var _0x186b19=_0x12a97b?_0x490452[_0xc933('0x1e')]:_0x2f5784[_0xc933('0x1f')]+_0x2f5784[_0xc933('0x1c')];var _0x5a1552;if(_0x186b19>=_0xb76659){_0x186b19=_0xb76659;_0x5a1552=0xc8;}else{_0x5a1552=0xce;}_0x106146[_0xc933('0x19')](_0x5a1552);return _0x106146[_0xc933('0x20')](_0xc933('0x21'),_0x1611a7+'-'+_0x186b19+'/'+_0xb76659)[_0xc933('0x1b')](_0x490452);}return null;};}function patchUpdates(_0x1f57db){return function(_0x318370){try{jsonpatch[_0xc933('0x22')](_0x318370,_0x1f57db,!![]);}catch(_0x20f024){return BPromise['reject'](_0x20f024);}return _0x318370[_0xc933('0x23')]();};}function saveUpdates(_0x2d7d7f,_0x176a2c){return function(_0x1113df){if(_0x1113df){return _0x1113df[_0xc933('0x24')](_0x2d7d7f)['then'](function(_0x1abfae){return _0x1abfae;});}return null;};}function removeEntity(_0x36f828,_0x3411ce){return function(_0x2a259c){if(_0x2a259c){return _0x2a259c[_0xc933('0x25')]()['then'](function(){_0x36f828[_0xc933('0x19')](0xcc)[_0xc933('0x1a')]();});}};}function handleEntityNotFound(_0x5ede22,_0x48a9a6){return function(_0x294f0d){if(!_0x294f0d){_0x5ede22[_0xc933('0x18')](0x194);}return _0x294f0d;};}function handleError(_0x31ac8b,_0x1afada){_0x1afada=_0x1afada||0x1f4;return function(_0x5a213c){logger[_0xc933('0x26')](_0x5a213c[_0xc933('0x27')]);if(_0x5a213c['name']){delete _0x5a213c[_0xc933('0x28')];}_0x31ac8b[_0xc933('0x19')](_0x1afada)['send'](_0x5a213c);};}exports['index']=function(_0x4628ec,_0x5d7b77){var _0x8598f7={},_0xaad361={},_0x4a585b={'count':0x0,'rows':[]};var _0x45daa9=_[_0xc933('0x29')](db[_0xc933('0x2a')]['rawAttributes'],function(_0x1a72b0){return{'name':_0x1a72b0[_0xc933('0x2b')],'type':_0x1a72b0[_0xc933('0x2c')]['key']};});_0xaad361[_0xc933('0x2d')]=_[_0xc933('0x29')](_0x45daa9,_0xc933('0x28'));_0xaad361[_0xc933('0x2e')]=_[_0xc933('0x2f')](_0x4628ec[_0xc933('0x2e')]);_0xaad361[_0xc933('0x30')]=_[_0xc933('0x31')](_0xaad361[_0xc933('0x2d')],_0xaad361[_0xc933('0x2e')]);_0x8598f7['attributes']=_[_0xc933('0x31')](_0xaad361[_0xc933('0x2d')],qs[_0xc933('0x32')](_0x4628ec[_0xc933('0x2e')]['fields']));_0x8598f7['attributes']=_0x8598f7[_0xc933('0x33')][_0xc933('0x34')]?_0x8598f7[_0xc933('0x33')]:_0xaad361['model'];if(!_0x4628ec[_0xc933('0x2e')][_0xc933('0x35')](_0xc933('0x36'))){_0x8598f7[_0xc933('0x1c')]=qs[_0xc933('0x1c')](_0x4628ec[_0xc933('0x2e')][_0xc933('0x1c')]);_0x8598f7[_0xc933('0x1f')]=qs[_0xc933('0x1f')](_0x4628ec['query'][_0xc933('0x1f')]);}_0x8598f7[_0xc933('0x37')]=qs[_0xc933('0x38')](_0x4628ec[_0xc933('0x2e')]['sort']);_0x8598f7[_0xc933('0x39')]=qs[_0xc933('0x30')](_[_0xc933('0x3a')](_0x4628ec[_0xc933('0x2e')],_0xaad361[_0xc933('0x30')]),_0x45daa9);if(_0x4628ec[_0xc933('0x2e')][_0xc933('0x3b')]){_0x8598f7[_0xc933('0x39')]=_[_0xc933('0x3c')](_0x8598f7[_0xc933('0x39')],{'$or':_['map'](_0x45daa9,function(_0xb76a6b){if(_0xb76a6b[_0xc933('0x2c')]!==_0xc933('0x3d')){var _0x3905fc={};_0x3905fc[_0xb76a6b['name']]={'$like':'%'+_0x4628ec[_0xc933('0x2e')]['filter']+'%'};return _0x3905fc;}})});}_0x8598f7=_[_0xc933('0x3c')]({},_0x8598f7,_0x4628ec['options']);var _0xc053cb={'where':_0x8598f7['where']};return db[_0xc933('0x2a')]['count'](_0xc053cb)['then'](function(_0xa80842){_0x4a585b[_0xc933('0x1e')]=_0xa80842;if(_0x4628ec[_0xc933('0x2e')]['includeAll']){_0x8598f7[_0xc933('0x3e')]=[{'all':!![]}];}return db[_0xc933('0x2a')][_0xc933('0x3f')](_0x8598f7);})['then'](function(_0x387271){_0x4a585b[_0xc933('0x40')]=_0x387271;return _0x4a585b;})[_0xc933('0x41')](respondWithFilteredResult(_0x5d7b77,_0x8598f7))[_0xc933('0x42')](handleError(_0x5d7b77,null));};exports[_0xc933('0x43')]=function(_0x3cb197,_0x22af84){var _0x48e944={'raw':!![],'where':{'id':_0x3cb197[_0xc933('0x44')]['id']}},_0x1974a0={};_0x1974a0['model']=_[_0xc933('0x2f')](db[_0xc933('0x2a')][_0xc933('0x45')]);_0x1974a0[_0xc933('0x2e')]=_[_0xc933('0x2f')](_0x3cb197[_0xc933('0x2e')]);_0x1974a0[_0xc933('0x30')]=_[_0xc933('0x31')](_0x1974a0[_0xc933('0x2d')],_0x1974a0[_0xc933('0x2e')]);_0x48e944['attributes']=_[_0xc933('0x31')](_0x1974a0[_0xc933('0x2d')],qs[_0xc933('0x32')](_0x3cb197[_0xc933('0x2e')][_0xc933('0x32')]));_0x48e944[_0xc933('0x33')]=_0x48e944[_0xc933('0x33')][_0xc933('0x34')]?_0x48e944['attributes']:_0x1974a0[_0xc933('0x2d')];if(_0x3cb197[_0xc933('0x2e')][_0xc933('0x46')]){_0x48e944['include']=[{'all':!![]}];}_0x48e944=_[_0xc933('0x3c')]({},_0x48e944,_0x3cb197[_0xc933('0x47')]);return db[_0xc933('0x2a')][_0xc933('0x48')](_0x48e944)[_0xc933('0x41')](handleEntityNotFound(_0x22af84,null))[_0xc933('0x41')](respondWithResult(_0x22af84,null))[_0xc933('0x42')](handleError(_0x22af84,null));};exports[_0xc933('0x49')]=function(_0x519763,_0x4a3295){return db[_0xc933('0x2a')][_0xc933('0x49')](_0x519763['body'],{})[_0xc933('0x41')](respondWithResult(_0x4a3295,0xc9))[_0xc933('0x42')](handleError(_0x4a3295,null));};exports[_0xc933('0x24')]=function(_0x72884f,_0x1ac447){if(_0x72884f['body']['id']){delete _0x72884f[_0xc933('0x4a')]['id'];}return db['ChatQueueReport']['find']({'where':{'id':_0x72884f[_0xc933('0x44')]['id']}})['then'](handleEntityNotFound(_0x1ac447,null))[_0xc933('0x41')](saveUpdates(_0x72884f[_0xc933('0x4a')],null))[_0xc933('0x41')](respondWithResult(_0x1ac447,null))[_0xc933('0x42')](handleError(_0x1ac447,null));};exports[_0xc933('0x25')]=function(_0x5a2e8e,_0x19bc58){return db['ChatQueueReport'][_0xc933('0x48')]({'where':{'id':_0x5a2e8e[_0xc933('0x44')]['id']}})[_0xc933('0x41')](handleEntityNotFound(_0x19bc58,null))[_0xc933('0x41')](removeEntity(_0x19bc58,null))[_0xc933('0x42')](handleError(_0x19bc58,null));};exports['describe']=function(_0x5377a2,_0x48d018){return db[_0xc933('0x2a')][_0xc933('0x4b')]()[_0xc933('0x41')](respondWithResult(_0x48d018,null))['catch'](handleError(_0x48d018,null));};
\ No newline at end of file
index c4ab94f..1cfaa44 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(_0x5ed9c2,_0x1d7737){var _0x529395=function(_0x16fd46){while(--_0x16fd46){_0x5ed9c2['push'](_0x5ed9c2['shift']());}};_0x529395(++_0x1d7737);}(_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 _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','ChatQueueReport','report_chat_queue','uniqueid'];(function(_0x838813,_0x448f0f){var _0x2bd32d=function(_0x57b589){while(--_0x57b589){_0x838813['push'](_0x838813['shift']());}};_0x2bd32d(++_0x448f0f);}(_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
index b0112ba..def7946 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0be6=['info','result','catch','ChatQueueReport','create','body','options','CreateChatQueueReport','UpdateChatQueueReport','raw','where','attributes','limit','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','then','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatQueueReport,\x20%s,\x20%s','message'];(function(_0x5191a7,_0x1a08f0){var _0x5c4350=function(_0x5bff07){while(--_0x5bff07){_0x5191a7['push'](_0x5191a7['shift']());}};_0x5c4350(++_0x1a08f0);}(_0x0be6,0xa8));var _0x60be=function(_0x14f368,_0x212355){_0x14f368=_0x14f368-0x0;var _0x27db3f=_0x0be6[_0x14f368];return _0x27db3f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x60be('0x0'));var BPromise=require(_0x60be('0x1'));var rs=require(_0x60be('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x60be('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x60be('0x4'))(_0x60be('0x5'));var config=require('../../config/environment');var jayson=require(_0x60be('0x6'));var client=jayson[_0x60be('0x7')][_0x60be('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x57bdf1,_0x4ce415,_0x192030){return new BPromise(function(_0x1c024e,_0x5a2581){return client['request'](_0x57bdf1,_0x192030)[_0x60be('0x9')](function(_0x15c6c7){logger['info']('ChatQueueReport,\x20%s,\x20%s',_0x4ce415,_0x60be('0xa'));logger[_0x60be('0xb')](_0x60be('0xc'),_0x4ce415,'request\x20sent',JSON[_0x60be('0xd')](_0x15c6c7));if(_0x15c6c7[_0x60be('0xe')]){if(_0x15c6c7[_0x60be('0xe')][_0x60be('0xf')]===0x1f4){logger[_0x60be('0xe')](_0x60be('0x10'),_0x4ce415,_0x15c6c7[_0x60be('0xe')]['message']);return _0x5a2581(_0x15c6c7[_0x60be('0xe')][_0x60be('0x11')]);}logger[_0x60be('0xe')]('ChatQueueReport,\x20%s,\x20%s',_0x4ce415,_0x15c6c7[_0x60be('0xe')]['message']);return _0x1c024e(_0x15c6c7['error'][_0x60be('0x11')]);}else{logger[_0x60be('0x12')](_0x60be('0x10'),_0x4ce415,_0x60be('0xa'));_0x1c024e(_0x15c6c7[_0x60be('0x13')][_0x60be('0x11')]);}})[_0x60be('0x14')](function(_0x280059){logger[_0x60be('0xe')](_0x60be('0x10'),_0x4ce415,_0x280059);_0x5a2581(_0x280059);});});}exports['CreateChatQueueReport']=function(_0x1d8968){var _0x4d8f73=this;return new Promise(function(_0x2ca85c,_0x2673f3){return db[_0x60be('0x15')][_0x60be('0x16')](_0x1d8968[_0x60be('0x17')],{'raw':_0x1d8968[_0x60be('0x18')]?_0x1d8968[_0x60be('0x18')]['raw']===undefined?!![]:![]:!![]})[_0x60be('0x9')](function(_0x279a3a){logger[_0x60be('0x12')]('CreateChatQueueReport',_0x1d8968);logger[_0x60be('0xb')](_0x60be('0x19'),_0x1d8968,JSON[_0x60be('0xd')](_0x279a3a));_0x2ca85c(_0x279a3a);})[_0x60be('0x14')](function(_0x44883d){logger[_0x60be('0xe')](_0x60be('0x19'),_0x44883d[_0x60be('0x11')],_0x1d8968);_0x2673f3(_0x4d8f73[_0x60be('0xe')](0x1f4,_0x44883d[_0x60be('0x11')]));});});};exports[_0x60be('0x1a')]=function(_0x553b91){var _0x5c3fba=this;return new Promise(function(_0xfc47e1,_0x4edebd){return db[_0x60be('0x15')]['update'](_0x553b91['body'],{'raw':_0x553b91[_0x60be('0x18')]?_0x553b91[_0x60be('0x18')][_0x60be('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x553b91['options']?_0x553b91[_0x60be('0x18')][_0x60be('0x1c')]||null:null,'attributes':_0x553b91[_0x60be('0x18')]?_0x553b91['options'][_0x60be('0x1d')]||null:null,'limit':_0x553b91[_0x60be('0x18')]?_0x553b91['options'][_0x60be('0x1e')]||null:null})[_0x60be('0x9')](function(_0x304ef4){logger[_0x60be('0x12')](_0x60be('0x1a'),_0x553b91);logger[_0x60be('0xb')](_0x60be('0x1a'),_0x553b91,JSON[_0x60be('0xd')](_0x304ef4));_0xfc47e1(_0x304ef4);})[_0x60be('0x14')](function(_0x117723){logger['error']('UpdateChatQueueReport',_0x117723['message'],_0x553b91);_0x4edebd(_0x5c3fba[_0x60be('0xe')](0x1f4,_0x117723[_0x60be('0x11')]));});});};
\ No newline at end of file
+var _0x0042=['result','catch','CreateChatQueueReport','ChatQueueReport','create','options','UpdateChatQueueReport','body','where','attributes','limit','lodash','util','bluebird','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','ChatQueueReport,\x20%s,\x20%s','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0xc14a52,_0x5b84b9){var _0x2e5227=function(_0x580348){while(--_0x580348){_0xc14a52['push'](_0xc14a52['shift']());}};_0x2e5227(++_0x5b84b9);}(_0x0042,0x18b));var _0x2004=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0x0042[_0x28947d];return _0x12d2ee;};'use strict';var _=require(_0x2004('0x0'));var util=require(_0x2004('0x1'));var moment=require('moment');var BPromise=require(_0x2004('0x2'));var rs=require(_0x2004('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2004('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x2004('0x5'))('rpc');var config=require(_0x2004('0x6'));var jayson=require(_0x2004('0x7'));var client=jayson[_0x2004('0x8')][_0x2004('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x256c8c,_0x1cd9af,_0x580c13){return new BPromise(function(_0x44c3c3,_0x19e601){return client[_0x2004('0xa')](_0x256c8c,_0x580c13)[_0x2004('0xb')](function(_0x428f40){logger['info'](_0x2004('0xc'),_0x1cd9af,_0x2004('0xd'));logger[_0x2004('0xe')](_0x2004('0xf'),_0x1cd9af,'request\x20sent',JSON[_0x2004('0x10')](_0x428f40));if(_0x428f40[_0x2004('0x11')]){if(_0x428f40[_0x2004('0x11')][_0x2004('0x12')]===0x1f4){logger['error'](_0x2004('0xc'),_0x1cd9af,_0x428f40[_0x2004('0x11')][_0x2004('0x13')]);return _0x19e601(_0x428f40[_0x2004('0x11')][_0x2004('0x13')]);}logger[_0x2004('0x11')]('ChatQueueReport,\x20%s,\x20%s',_0x1cd9af,_0x428f40['error']['message']);return _0x44c3c3(_0x428f40['error']['message']);}else{logger[_0x2004('0x14')]('ChatQueueReport,\x20%s,\x20%s',_0x1cd9af,'request\x20sent');_0x44c3c3(_0x428f40[_0x2004('0x15')][_0x2004('0x13')]);}})[_0x2004('0x16')](function(_0x1b0580){logger[_0x2004('0x11')](_0x2004('0xc'),_0x1cd9af,_0x1b0580);_0x19e601(_0x1b0580);});});}exports[_0x2004('0x17')]=function(_0x26b90b){var _0xf7450=this;return new Promise(function(_0x9a6102,_0x4f1877){return db[_0x2004('0x18')][_0x2004('0x19')](_0x26b90b['body'],{'raw':_0x26b90b[_0x2004('0x1a')]?_0x26b90b[_0x2004('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0x2004('0xb')](function(_0x5c19e2){logger[_0x2004('0x14')](_0x2004('0x17'),_0x26b90b);logger['debug'](_0x2004('0x17'),_0x26b90b,JSON['stringify'](_0x5c19e2));_0x9a6102(_0x5c19e2);})['catch'](function(_0x35faf2){logger[_0x2004('0x11')](_0x2004('0x17'),_0x35faf2[_0x2004('0x13')],_0x26b90b);_0x4f1877(_0xf7450[_0x2004('0x11')](0x1f4,_0x35faf2[_0x2004('0x13')]));});});};exports[_0x2004('0x1b')]=function(_0x12a3df){var _0x1f3f5c=this;return new Promise(function(_0x52e9c7,_0x180a40){return db[_0x2004('0x18')]['update'](_0x12a3df[_0x2004('0x1c')],{'raw':_0x12a3df[_0x2004('0x1a')]?_0x12a3df[_0x2004('0x1a')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x12a3df[_0x2004('0x1a')]?_0x12a3df[_0x2004('0x1a')][_0x2004('0x1d')]||null:null,'attributes':_0x12a3df[_0x2004('0x1a')]?_0x12a3df['options'][_0x2004('0x1e')]||null:null,'limit':_0x12a3df[_0x2004('0x1a')]?_0x12a3df[_0x2004('0x1a')][_0x2004('0x1f')]||null:null})[_0x2004('0xb')](function(_0x3b44d3){logger[_0x2004('0x14')](_0x2004('0x1b'),_0x12a3df);logger[_0x2004('0xe')](_0x2004('0x1b'),_0x12a3df,JSON[_0x2004('0x10')](_0x3b44d3));_0x52e9c7(_0x3b44d3);})[_0x2004('0x16')](function(_0x213a21){logger[_0x2004('0x11')]('UpdateChatQueueReport',_0x213a21[_0x2004('0x13')],_0x12a3df);_0x180a40(_0x1f3f5c[_0x2004('0x11')](0x1f4,_0x213a21['message']));});});};
\ No newline at end of file
index 67fbd82..4ecf019 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb03d=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./chatQueueReport.controller','get','index','/describe','isAuthenticated','show','create','put','/:id','update','delete','multer'];(function(_0x3cef4d,_0x3f3516){var _0x8c5437=function(_0x12bf9e){while(--_0x12bf9e){_0x3cef4d['push'](_0x3cef4d['shift']());}};_0x8c5437(++_0x3f3516);}(_0xb03d,0x97));var _0xdb03=function(_0x3eef0f,_0x380369){_0x3eef0f=_0x3eef0f-0x0;var _0x4e8a69=_0xb03d[_0x3eef0f];return _0x4e8a69;};'use strict';var multer=require(_0xdb03('0x0'));var util=require(_0xdb03('0x1'));var path=require(_0xdb03('0x2'));var timeout=require(_0xdb03('0x3'));var express=require('express');var router=express[_0xdb03('0x4')]();var fs_extra=require(_0xdb03('0x5'));var auth=require(_0xdb03('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xdb03('0x7'));var controller=require(_0xdb03('0x8'));router[_0xdb03('0x9')]('/',auth['isAuthenticated'](),controller[_0xdb03('0xa')]);router[_0xdb03('0x9')](_0xdb03('0xb'),auth[_0xdb03('0xc')](),controller['describe']);router['get']('/:id',auth['isAuthenticated'](),controller[_0xdb03('0xd')]);router['post']('/',auth[_0xdb03('0xc')](),controller[_0xdb03('0xe')]);router[_0xdb03('0xf')](_0xdb03('0x10'),auth['isAuthenticated'](),controller[_0xdb03('0x11')]);router[_0xdb03('0x12')](_0xdb03('0x10'),auth[_0xdb03('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x5f7d=['../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','index','/describe','/:id','show','create','update','destroy','multer','connect-timeout','express','Router','fs-extra'];(function(_0x424567,_0x4b12a0){var _0x2f66d3=function(_0x217728){while(--_0x217728){_0x424567['push'](_0x424567['shift']());}};_0x2f66d3(++_0x4b12a0);}(_0x5f7d,0x151));var _0xd5f7=function(_0x30b7bc,_0x3d83d1){_0x30b7bc=_0x30b7bc-0x0;var _0x34b954=_0x5f7d[_0x30b7bc];return _0x34b954;};'use strict';var multer=require(_0xd5f7('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xd5f7('0x1'));var express=require(_0xd5f7('0x2'));var router=express[_0xd5f7('0x3')]();var fs_extra=require(_0xd5f7('0x4'));var auth=require(_0xd5f7('0x5'));var interaction=require(_0xd5f7('0x6'));var config=require(_0xd5f7('0x7'));var controller=require(_0xd5f7('0x8'));router[_0xd5f7('0x9')]('/',auth[_0xd5f7('0xa')](),controller[_0xd5f7('0xb')]);router[_0xd5f7('0x9')](_0xd5f7('0xc'),auth[_0xd5f7('0xa')](),controller['describe']);router[_0xd5f7('0x9')](_0xd5f7('0xd'),auth[_0xd5f7('0xa')](),controller[_0xd5f7('0xe')]);router['post']('/',auth[_0xd5f7('0xa')](),controller[_0xd5f7('0xf')]);router['put'](_0xd5f7('0xd'),auth[_0xd5f7('0xa')](),controller[_0xd5f7('0x10')]);router['delete'](_0xd5f7('0xd'),auth['isAuthenticated'](),controller[_0xd5f7('0x11')]);module['exports']=router;
\ No newline at end of file
index f40c053..13fdb17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x4b332a,_0x5ec2db){var _0x115a04=function(_0x422160){while(--_0x422160){_0x4b332a['push'](_0x4b332a['shift']());}};_0x115a04(++_0x5ec2db);}(_0x9c44,0x178));var _0x49c4=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x9c44[_0x3ab51d];return _0x29a04e;};'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
+var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0xbc2a71,_0x36aaac){var _0x43f2ee=function(_0x32f3ff){while(--_0x32f3ff){_0xbc2a71['push'](_0xbc2a71['shift']());}};_0x43f2ee(++_0x36aaac);}(_0xa9e0,0x123));var _0x0a9e=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0xa9e0[_0xc6be3a];return _0x56a310;};'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 8c58854..13da471 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a2d=['path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','map','ChatTransferReport','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','count','includeAll','rows','params','include','find','create','body','catch','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util'];(function(_0xf7fcb,_0x1ce904){var _0x56f530=function(_0x226402){while(--_0x226402){_0xf7fcb['push'](_0xf7fcb['shift']());}};_0x56f530(++_0x1ce904);}(_0x8a2d,0x17f));var _0xd8a2=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x8a2d[_0x6c993a];return _0x27f547;};'use strict';var emlformat=require(_0xd8a2('0x0'));var rimraf=require(_0xd8a2('0x1'));var zipdir=require(_0xd8a2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd8a2('0x3'));var BPromise=require(_0xd8a2('0x4'));var Mustache=require(_0xd8a2('0x5'));var util=require(_0xd8a2('0x6'));var path=require(_0xd8a2('0x7'));var sox=require(_0xd8a2('0x8'));var csv=require(_0xd8a2('0x9'));var ejs=require(_0xd8a2('0xa'));var fs=require('fs');var fs_extra=require(_0xd8a2('0xb'));var _=require(_0xd8a2('0xc'));var squel=require(_0xd8a2('0xd'));var crypto=require(_0xd8a2('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xd8a2('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xd8a2('0x10'));var Redis=require(_0xd8a2('0x11'));var authService=require(_0xd8a2('0x12'));var qs=require(_0xd8a2('0x13'));var as=require(_0xd8a2('0x14'));var hardwareService=require(_0xd8a2('0x15'));var logger=require(_0xd8a2('0x16'))(_0xd8a2('0x17'));var utils=require(_0xd8a2('0x18'));var config=require(_0xd8a2('0x19'));var licenseUtil=require(_0xd8a2('0x1a'));var db=require(_0xd8a2('0x1b'))['db'];function respondWithStatusCode(_0x5b1d13,_0x399b66){_0x399b66=_0x399b66||0xcc;return function(_0xded659){if(_0xded659){return _0x5b1d13[_0xd8a2('0x1c')](_0x399b66);}return _0x5b1d13[_0xd8a2('0x1d')](_0x399b66)[_0xd8a2('0x1e')]();};}function respondWithResult(_0x2c0fa1,_0x3ced2b){_0x3ced2b=_0x3ced2b||0xc8;return function(_0x540a1d){if(_0x540a1d){return _0x2c0fa1[_0xd8a2('0x1d')](_0x3ced2b)[_0xd8a2('0x1f')](_0x540a1d);}};}function respondWithFilteredResult(_0xc995b4,_0x272d42){return function(_0xc60a38){if(_0xc60a38){var _0x4b0874=typeof _0x272d42[_0xd8a2('0x20')]===_0xd8a2('0x21')&&typeof _0x272d42[_0xd8a2('0x22')]==='undefined';var _0x3358b3=_0xc60a38['count'];var _0x30a618=_0x4b0874?0x0:_0x272d42[_0xd8a2('0x20')];var _0x37c2db=_0x4b0874?_0xc60a38['count']:_0x272d42['offset']+_0x272d42[_0xd8a2('0x22')];var _0x2a6894;if(_0x37c2db>=_0x3358b3){_0x37c2db=_0x3358b3;_0x2a6894=0xc8;}else{_0x2a6894=0xce;}_0xc995b4['status'](_0x2a6894);return _0xc995b4[_0xd8a2('0x23')](_0xd8a2('0x24'),_0x30a618+'-'+_0x37c2db+'/'+_0x3358b3)[_0xd8a2('0x1f')](_0xc60a38);}return null;};}function patchUpdates(_0x476d2d){return function(_0x40d9dd){try{jsonpatch[_0xd8a2('0x25')](_0x40d9dd,_0x476d2d,!![]);}catch(_0x2297d){return BPromise[_0xd8a2('0x26')](_0x2297d);}return _0x40d9dd[_0xd8a2('0x27')]();};}function saveUpdates(_0x2706c3,_0x568924){return function(_0xc7d781){if(_0xc7d781){return _0xc7d781[_0xd8a2('0x28')](_0x2706c3)['then'](function(_0x26fc3e){return _0x26fc3e;});}return null;};}function removeEntity(_0xf13025,_0x4fc301){return function(_0x596715){if(_0x596715){return _0x596715[_0xd8a2('0x29')]()[_0xd8a2('0x2a')](function(){_0xf13025[_0xd8a2('0x1d')](0xcc)[_0xd8a2('0x1e')]();});}};}function handleEntityNotFound(_0xda0e0f,_0x393f4d){return function(_0x415505){if(!_0x415505){_0xda0e0f[_0xd8a2('0x1c')](0x194);}return _0x415505;};}function handleError(_0x1d6d2f,_0x4bb008){_0x4bb008=_0x4bb008||0x1f4;return function(_0x1d1d85){logger['error'](_0x1d1d85[_0xd8a2('0x2b')]);if(_0x1d1d85['name']){delete _0x1d1d85[_0xd8a2('0x2c')];}_0x1d6d2f[_0xd8a2('0x1d')](_0x4bb008)['send'](_0x1d1d85);};}exports['index']=function(_0x51137c,_0x1df491){var _0x44fb4f={},_0x2dfae5={},_0x44a35b={'count':0x0,'rows':[]};var _0x1db29f=_[_0xd8a2('0x2d')](db[_0xd8a2('0x2e')][_0xd8a2('0x2f')],function(_0x2fa648){return{'name':_0x2fa648[_0xd8a2('0x30')],'type':_0x2fa648[_0xd8a2('0x31')][_0xd8a2('0x32')]};});_0x2dfae5[_0xd8a2('0x33')]=_[_0xd8a2('0x2d')](_0x1db29f,'name');_0x2dfae5['query']=_[_0xd8a2('0x34')](_0x51137c[_0xd8a2('0x35')]);_0x2dfae5['filters']=_[_0xd8a2('0x36')](_0x2dfae5[_0xd8a2('0x33')],_0x2dfae5[_0xd8a2('0x35')]);_0x44fb4f[_0xd8a2('0x37')]=_[_0xd8a2('0x36')](_0x2dfae5[_0xd8a2('0x33')],qs[_0xd8a2('0x38')](_0x51137c[_0xd8a2('0x35')][_0xd8a2('0x38')]));_0x44fb4f[_0xd8a2('0x37')]=_0x44fb4f[_0xd8a2('0x37')][_0xd8a2('0x39')]?_0x44fb4f[_0xd8a2('0x37')]:_0x2dfae5[_0xd8a2('0x33')];if(!_0x51137c['query'][_0xd8a2('0x3a')](_0xd8a2('0x3b'))){_0x44fb4f[_0xd8a2('0x22')]=qs[_0xd8a2('0x22')](_0x51137c[_0xd8a2('0x35')][_0xd8a2('0x22')]);_0x44fb4f[_0xd8a2('0x20')]=qs[_0xd8a2('0x20')](_0x51137c['query']['offset']);}_0x44fb4f['order']=qs[_0xd8a2('0x3c')](_0x51137c['query'][_0xd8a2('0x3c')]);_0x44fb4f[_0xd8a2('0x3d')]=qs[_0xd8a2('0x3e')](_[_0xd8a2('0x3f')](_0x51137c['query'],_0x2dfae5['filters']),_0x1db29f);if(_0x51137c[_0xd8a2('0x35')][_0xd8a2('0x40')]){_0x44fb4f[_0xd8a2('0x3d')]=_[_0xd8a2('0x41')](_0x44fb4f[_0xd8a2('0x3d')],{'$or':_['map'](_0x1db29f,function(_0x27ec49){if(_0x27ec49[_0xd8a2('0x31')]!==_0xd8a2('0x42')){var _0x1002a9={};_0x1002a9[_0x27ec49[_0xd8a2('0x2c')]]={'$like':'%'+_0x51137c['query'][_0xd8a2('0x40')]+'%'};return _0x1002a9;}})});}_0x44fb4f=_[_0xd8a2('0x41')]({},_0x44fb4f,_0x51137c[_0xd8a2('0x43')]);var _0x53478e={'where':_0x44fb4f[_0xd8a2('0x3d')]};return db[_0xd8a2('0x2e')][_0xd8a2('0x44')](_0x53478e)['then'](function(_0xdc5f37){_0x44a35b[_0xd8a2('0x44')]=_0xdc5f37;if(_0x51137c[_0xd8a2('0x35')][_0xd8a2('0x45')]){_0x44fb4f['include']=[{'all':!![]}];}return db[_0xd8a2('0x2e')]['findAll'](_0x44fb4f);})[_0xd8a2('0x2a')](function(_0x4583d0){_0x44a35b[_0xd8a2('0x46')]=_0x4583d0;return _0x44a35b;})['then'](respondWithFilteredResult(_0x1df491,_0x44fb4f))['catch'](handleError(_0x1df491,null));};exports['show']=function(_0x459d47,_0x82cb3b){var _0x36b301={'raw':!![],'where':{'id':_0x459d47[_0xd8a2('0x47')]['id']}},_0x3f4925={};_0x3f4925[_0xd8a2('0x33')]=_[_0xd8a2('0x34')](db[_0xd8a2('0x2e')][_0xd8a2('0x2f')]);_0x3f4925[_0xd8a2('0x35')]=_[_0xd8a2('0x34')](_0x459d47['query']);_0x3f4925[_0xd8a2('0x3e')]=_[_0xd8a2('0x36')](_0x3f4925['model'],_0x3f4925[_0xd8a2('0x35')]);_0x36b301[_0xd8a2('0x37')]=_['intersection'](_0x3f4925[_0xd8a2('0x33')],qs[_0xd8a2('0x38')](_0x459d47[_0xd8a2('0x35')][_0xd8a2('0x38')]));_0x36b301[_0xd8a2('0x37')]=_0x36b301[_0xd8a2('0x37')][_0xd8a2('0x39')]?_0x36b301[_0xd8a2('0x37')]:_0x3f4925[_0xd8a2('0x33')];if(_0x459d47['query'][_0xd8a2('0x45')]){_0x36b301[_0xd8a2('0x48')]=[{'all':!![]}];}_0x36b301=_[_0xd8a2('0x41')]({},_0x36b301,_0x459d47['options']);return db[_0xd8a2('0x2e')][_0xd8a2('0x49')](_0x36b301)['then'](handleEntityNotFound(_0x82cb3b,null))[_0xd8a2('0x2a')](respondWithResult(_0x82cb3b,null))['catch'](handleError(_0x82cb3b,null));};exports[_0xd8a2('0x4a')]=function(_0x93e078,_0x553e72){return db[_0xd8a2('0x2e')][_0xd8a2('0x4a')](_0x93e078['body'],{})['then'](respondWithResult(_0x553e72,0xc9))['catch'](handleError(_0x553e72,null));};exports['update']=function(_0x3e7c40,_0x1a4c6b){if(_0x3e7c40[_0xd8a2('0x4b')]['id']){delete _0x3e7c40[_0xd8a2('0x4b')]['id'];}return db['ChatTransferReport'][_0xd8a2('0x49')]({'where':{'id':_0x3e7c40['params']['id']}})[_0xd8a2('0x2a')](handleEntityNotFound(_0x1a4c6b,null))[_0xd8a2('0x2a')](saveUpdates(_0x3e7c40[_0xd8a2('0x4b')],null))[_0xd8a2('0x2a')](respondWithResult(_0x1a4c6b,null))[_0xd8a2('0x4c')](handleError(_0x1a4c6b,null));};exports[_0xd8a2('0x29')]=function(_0x2ef268,_0x3555d8){return db[_0xd8a2('0x2e')]['find']({'where':{'id':_0x2ef268[_0xd8a2('0x47')]['id']}})[_0xd8a2('0x2a')](handleEntityNotFound(_0x3555d8,null))[_0xd8a2('0x2a')](removeEntity(_0x3555d8,null))['catch'](handleError(_0x3555d8,null));};exports[_0xd8a2('0x4d')]=function(_0x2f03ee,_0x58104e){return db[_0xd8a2('0x2e')]['describe']()[_0xd8a2('0x2a')](respondWithResult(_0x58104e,null))[_0xd8a2('0x4c')](handleError(_0x58104e,null));};
\ No newline at end of file
+var _0x696f=['query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','catch','params','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','reject','update','then','destroy','error','stack','name','send','index','map','ChatTransferReport','type','key','model'];(function(_0x2b9ff2,_0x33b003){var _0x35e713=function(_0x24065e){while(--_0x24065e){_0x2b9ff2['push'](_0x2b9ff2['shift']());}};_0x35e713(++_0x33b003);}(_0x696f,0x1c8));var _0xf696=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x696f[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0xf696('0x0'));var rimraf=require(_0xf696('0x1'));var zipdir=require(_0xf696('0x2'));var jsonpatch=require(_0xf696('0x3'));var rp=require(_0xf696('0x4'));var moment=require('moment');var BPromise=require(_0xf696('0x5'));var Mustache=require('mustache');var util=require(_0xf696('0x6'));var path=require(_0xf696('0x7'));var sox=require(_0xf696('0x8'));var csv=require(_0xf696('0x9'));var ejs=require(_0xf696('0xa'));var fs=require('fs');var fs_extra=require(_0xf696('0xb'));var _=require('lodash');var squel=require(_0xf696('0xc'));var crypto=require(_0xf696('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf696('0xe'));var toCsv=require('to-csv');var querystring=require(_0xf696('0xf'));var Papa=require('papaparse');var Redis=require(_0xf696('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xf696('0x11'));var as=require(_0xf696('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf696('0x13'))(_0xf696('0x14'));var utils=require(_0xf696('0x15'));var config=require(_0xf696('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xf696('0x17'))['db'];function respondWithStatusCode(_0x39e05a,_0x1d38b8){_0x1d38b8=_0x1d38b8||0xcc;return function(_0x3afb5e){if(_0x3afb5e){return _0x39e05a[_0xf696('0x18')](_0x1d38b8);}return _0x39e05a[_0xf696('0x19')](_0x1d38b8)[_0xf696('0x1a')]();};}function respondWithResult(_0xf2d9a9,_0x4079f0){_0x4079f0=_0x4079f0||0xc8;return function(_0x142019){if(_0x142019){return _0xf2d9a9[_0xf696('0x19')](_0x4079f0)[_0xf696('0x1b')](_0x142019);}};}function respondWithFilteredResult(_0x28f27e,_0x25d470){return function(_0x19dd8f){if(_0x19dd8f){var _0x800387=typeof _0x25d470[_0xf696('0x1c')]==='undefined'&&typeof _0x25d470['limit']===_0xf696('0x1d');var _0x4ff562=_0x19dd8f['count'];var _0x434b6e=_0x800387?0x0:_0x25d470[_0xf696('0x1c')];var _0x4e3524=_0x800387?_0x19dd8f[_0xf696('0x1e')]:_0x25d470[_0xf696('0x1c')]+_0x25d470[_0xf696('0x1f')];var _0x18a6ad;if(_0x4e3524>=_0x4ff562){_0x4e3524=_0x4ff562;_0x18a6ad=0xc8;}else{_0x18a6ad=0xce;}_0x28f27e['status'](_0x18a6ad);return _0x28f27e[_0xf696('0x20')]('Content-Range',_0x434b6e+'-'+_0x4e3524+'/'+_0x4ff562)[_0xf696('0x1b')](_0x19dd8f);}return null;};}function patchUpdates(_0x530b1e){return function(_0x329c07){try{jsonpatch[_0xf696('0x21')](_0x329c07,_0x530b1e,!![]);}catch(_0x261dd6){return BPromise[_0xf696('0x22')](_0x261dd6);}return _0x329c07['save']();};}function saveUpdates(_0x437582,_0x4d7b2c){return function(_0x7185e5){if(_0x7185e5){return _0x7185e5[_0xf696('0x23')](_0x437582)[_0xf696('0x24')](function(_0x439f41){return _0x439f41;});}return null;};}function removeEntity(_0x2cd337,_0x347342){return function(_0x5ef743){if(_0x5ef743){return _0x5ef743[_0xf696('0x25')]()[_0xf696('0x24')](function(){_0x2cd337[_0xf696('0x19')](0xcc)[_0xf696('0x1a')]();});}};}function handleEntityNotFound(_0x48e9f8,_0x2e0eb9){return function(_0x3ddd47){if(!_0x3ddd47){_0x48e9f8['sendStatus'](0x194);}return _0x3ddd47;};}function handleError(_0x412a74,_0x4c56ef){_0x4c56ef=_0x4c56ef||0x1f4;return function(_0x142ddc){logger[_0xf696('0x26')](_0x142ddc[_0xf696('0x27')]);if(_0x142ddc[_0xf696('0x28')]){delete _0x142ddc[_0xf696('0x28')];}_0x412a74[_0xf696('0x19')](_0x4c56ef)[_0xf696('0x29')](_0x142ddc);};}exports[_0xf696('0x2a')]=function(_0x20065d,_0x479c73){var _0x1ff31a={},_0xcc62f4={},_0x3febfe={'count':0x0,'rows':[]};var _0x5927a7=_[_0xf696('0x2b')](db[_0xf696('0x2c')]['rawAttributes'],function(_0x4f2ab7){return{'name':_0x4f2ab7['fieldName'],'type':_0x4f2ab7[_0xf696('0x2d')][_0xf696('0x2e')]};});_0xcc62f4[_0xf696('0x2f')]=_[_0xf696('0x2b')](_0x5927a7,'name');_0xcc62f4[_0xf696('0x30')]=_[_0xf696('0x31')](_0x20065d['query']);_0xcc62f4[_0xf696('0x32')]=_[_0xf696('0x33')](_0xcc62f4[_0xf696('0x2f')],_0xcc62f4[_0xf696('0x30')]);_0x1ff31a[_0xf696('0x34')]=_[_0xf696('0x33')](_0xcc62f4['model'],qs[_0xf696('0x35')](_0x20065d[_0xf696('0x30')][_0xf696('0x35')]));_0x1ff31a[_0xf696('0x34')]=_0x1ff31a[_0xf696('0x34')][_0xf696('0x36')]?_0x1ff31a[_0xf696('0x34')]:_0xcc62f4['model'];if(!_0x20065d[_0xf696('0x30')]['hasOwnProperty'](_0xf696('0x37'))){_0x1ff31a['limit']=qs[_0xf696('0x1f')](_0x20065d[_0xf696('0x30')][_0xf696('0x1f')]);_0x1ff31a[_0xf696('0x1c')]=qs[_0xf696('0x1c')](_0x20065d[_0xf696('0x30')][_0xf696('0x1c')]);}_0x1ff31a[_0xf696('0x38')]=qs[_0xf696('0x39')](_0x20065d[_0xf696('0x30')]['sort']);_0x1ff31a[_0xf696('0x3a')]=qs['filters'](_[_0xf696('0x3b')](_0x20065d[_0xf696('0x30')],_0xcc62f4[_0xf696('0x32')]),_0x5927a7);if(_0x20065d['query'][_0xf696('0x3c')]){_0x1ff31a[_0xf696('0x3a')]=_[_0xf696('0x3d')](_0x1ff31a[_0xf696('0x3a')],{'$or':_['map'](_0x5927a7,function(_0x52860d){if(_0x52860d[_0xf696('0x2d')]!==_0xf696('0x3e')){var _0x2a5819={};_0x2a5819[_0x52860d['name']]={'$like':'%'+_0x20065d[_0xf696('0x30')][_0xf696('0x3c')]+'%'};return _0x2a5819;}})});}_0x1ff31a=_[_0xf696('0x3d')]({},_0x1ff31a,_0x20065d[_0xf696('0x3f')]);var _0x32c401={'where':_0x1ff31a[_0xf696('0x3a')]};return db['ChatTransferReport'][_0xf696('0x1e')](_0x32c401)[_0xf696('0x24')](function(_0x49bbb2){_0x3febfe[_0xf696('0x1e')]=_0x49bbb2;if(_0x20065d['query'][_0xf696('0x40')]){_0x1ff31a['include']=[{'all':!![]}];}return db[_0xf696('0x2c')]['findAll'](_0x1ff31a);})['then'](function(_0x165c29){_0x3febfe['rows']=_0x165c29;return _0x3febfe;})['then'](respondWithFilteredResult(_0x479c73,_0x1ff31a))[_0xf696('0x41')](handleError(_0x479c73,null));};exports['show']=function(_0x571f94,_0x165351){var _0x4fd969={'raw':!![],'where':{'id':_0x571f94[_0xf696('0x42')]['id']}},_0x957aca={};_0x957aca['model']=_[_0xf696('0x31')](db['ChatTransferReport']['rawAttributes']);_0x957aca['query']=_[_0xf696('0x31')](_0x571f94[_0xf696('0x30')]);_0x957aca[_0xf696('0x32')]=_['intersection'](_0x957aca['model'],_0x957aca[_0xf696('0x30')]);_0x4fd969[_0xf696('0x34')]=_[_0xf696('0x33')](_0x957aca[_0xf696('0x2f')],qs[_0xf696('0x35')](_0x571f94[_0xf696('0x30')][_0xf696('0x35')]));_0x4fd969[_0xf696('0x34')]=_0x4fd969['attributes'][_0xf696('0x36')]?_0x4fd969[_0xf696('0x34')]:_0x957aca[_0xf696('0x2f')];if(_0x571f94[_0xf696('0x30')][_0xf696('0x40')]){_0x4fd969[_0xf696('0x43')]=[{'all':!![]}];}_0x4fd969=_[_0xf696('0x3d')]({},_0x4fd969,_0x571f94[_0xf696('0x3f')]);return db[_0xf696('0x2c')][_0xf696('0x44')](_0x4fd969)[_0xf696('0x24')](handleEntityNotFound(_0x165351,null))[_0xf696('0x24')](respondWithResult(_0x165351,null))[_0xf696('0x41')](handleError(_0x165351,null));};exports['create']=function(_0x3dfbda,_0x412928){return db['ChatTransferReport'][_0xf696('0x45')](_0x3dfbda['body'],{})[_0xf696('0x24')](respondWithResult(_0x412928,0xc9))[_0xf696('0x41')](handleError(_0x412928,null));};exports[_0xf696('0x23')]=function(_0x40e365,_0x1ae6f1){if(_0x40e365[_0xf696('0x46')]['id']){delete _0x40e365[_0xf696('0x46')]['id'];}return db['ChatTransferReport'][_0xf696('0x44')]({'where':{'id':_0x40e365[_0xf696('0x42')]['id']}})[_0xf696('0x24')](handleEntityNotFound(_0x1ae6f1,null))[_0xf696('0x24')](saveUpdates(_0x40e365[_0xf696('0x46')],null))[_0xf696('0x24')](respondWithResult(_0x1ae6f1,null))[_0xf696('0x41')](handleError(_0x1ae6f1,null));};exports[_0xf696('0x25')]=function(_0x20169d,_0x25ecce){return db[_0xf696('0x2c')][_0xf696('0x44')]({'where':{'id':_0x20169d[_0xf696('0x42')]['id']}})[_0xf696('0x24')](handleEntityNotFound(_0x25ecce,null))[_0xf696('0x24')](removeEntity(_0x25ecce,null))['catch'](handleError(_0x25ecce,null));};exports[_0xf696('0x47')]=function(_0x5c2284,_0xacb392){return db[_0xf696('0x2c')][_0xf696('0x47')]()[_0xf696('0x24')](respondWithResult(_0xacb392,null))[_0xf696('0x41')](handleError(_0xacb392,null));};
\ No newline at end of file
index c962112..fb47621 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b48=['rimraf','./chatTransferReport.attributes','exports','define','report_chat_transfer','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3b48,0x119));var _0x83b4=function(_0x4da9ac,_0x2f64c2){_0x4da9ac=_0x4da9ac-0x0;var _0x45bde6=_0x3b48[_0x4da9ac];return _0x45bde6;};'use strict';var _=require(_0x83b4('0x0'));var util=require(_0x83b4('0x1'));var logger=require(_0x83b4('0x2'))(_0x83b4('0x3'));var moment=require('moment');var BPromise=require(_0x83b4('0x4'));var rp=require(_0x83b4('0x5'));var fs=require('fs');var path=require(_0x83b4('0x6'));var rimraf=require(_0x83b4('0x7'));var config=require('../../config/environment');var attributes=require(_0x83b4('0x8'));module[_0x83b4('0x9')]=function(_0x2f348a,_0xaea92c){return _0x2f348a[_0x83b4('0xa')]('ChatTransferReport',attributes,{'tableName':_0x83b4('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4c81=['request-promise','path','../../config/environment','exports','ChatTransferReport','report_chat_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x4c81,0x7c));var _0x14c8=function(_0x13d07a,_0x41efc3){_0x13d07a=_0x13d07a-0x0;var _0x5ee0ee=_0x4c81[_0x13d07a];return _0x5ee0ee;};'use strict';var _=require(_0x14c8('0x0'));var util=require(_0x14c8('0x1'));var logger=require(_0x14c8('0x2'))(_0x14c8('0x3'));var moment=require(_0x14c8('0x4'));var BPromise=require(_0x14c8('0x5'));var rp=require(_0x14c8('0x6'));var fs=require('fs');var path=require(_0x14c8('0x7'));var rimraf=require('rimraf');var config=require(_0x14c8('0x8'));var attributes=require('./chatTransferReport.attributes');module[_0x14c8('0x9')]=function(_0x241ae7,_0x3b24b4){return _0x241ae7['define'](_0x14c8('0xa'),attributes,{'tableName':_0x14c8('0xb'),'paranoid':![],'indexes':[{'name':_0x14c8('0xc'),'fields':[_0x14c8('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 11af70a..d7de95c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e25=['../../config/environment','jayson/promise','client','http','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x7cd6a7,_0x1a4f74){var _0x3fd842=function(_0x403a00){while(--_0x403a00){_0x7cd6a7['push'](_0x7cd6a7['shift']());}};_0x3fd842(++_0x1a4f74);}(_0x5e25,0x1d9));var _0x55e2=function(_0x19a55b,_0x55e825){_0x19a55b=_0x19a55b-0x0;var _0x4956b1=_0x5e25[_0x19a55b];return _0x4956b1;};'use strict';var _=require('lodash');var util=require(_0x55e2('0x0'));var moment=require(_0x55e2('0x1'));var BPromise=require(_0x55e2('0x2'));var rs=require(_0x55e2('0x3'));var fs=require('fs');var Redis=require(_0x55e2('0x4'));var db=require(_0x55e2('0x5'))['db'];var utils=require(_0x55e2('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x55e2('0x7'));var jayson=require(_0x55e2('0x8'));var client=jayson[_0x55e2('0x9')][_0x55e2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe6f8c,_0x110f1e,_0x45ede1){return new BPromise(function(_0x235f36,_0x5b6d83){return client['request'](_0xe6f8c,_0x45ede1)['then'](function(_0x4b9523){logger[_0x55e2('0xb')](_0x55e2('0xc'),_0x110f1e,_0x55e2('0xd'));logger[_0x55e2('0xe')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x110f1e,'request\x20sent',JSON['stringify'](_0x4b9523));if(_0x4b9523[_0x55e2('0xf')]){if(_0x4b9523[_0x55e2('0xf')][_0x55e2('0x10')]===0x1f4){logger[_0x55e2('0xf')](_0x55e2('0xc'),_0x110f1e,_0x4b9523[_0x55e2('0xf')][_0x55e2('0x11')]);return _0x5b6d83(_0x4b9523[_0x55e2('0xf')][_0x55e2('0x11')]);}logger[_0x55e2('0xf')](_0x55e2('0xc'),_0x110f1e,_0x4b9523[_0x55e2('0xf')][_0x55e2('0x11')]);return _0x235f36(_0x4b9523['error'][_0x55e2('0x11')]);}else{logger['info'](_0x55e2('0xc'),_0x110f1e,_0x55e2('0xd'));_0x235f36(_0x4b9523[_0x55e2('0x12')]['message']);}})[_0x55e2('0x13')](function(_0x332905){logger[_0x55e2('0xf')](_0x55e2('0xc'),_0x110f1e,_0x332905);_0x5b6d83(_0x332905);});});}
\ No newline at end of file
+var _0x5f87=['../../config/utils','../../config/logger','../../config/environment','client','request','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x29ced0,_0x152d0b){var _0x1b068e=function(_0x2ff695){while(--_0x2ff695){_0x29ced0['push'](_0x29ced0['shift']());}};_0x1b068e(++_0x152d0b);}(_0x5f87,0x19d));var _0x75f8=function(_0x1f419c,_0x425a7b){_0x1f419c=_0x1f419c-0x0;var _0x5515a8=_0x5f87[_0x1f419c];return _0x5515a8;};'use strict';var _=require(_0x75f8('0x0'));var util=require(_0x75f8('0x1'));var moment=require(_0x75f8('0x2'));var BPromise=require(_0x75f8('0x3'));var rs=require(_0x75f8('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x75f8('0x5'));var logger=require(_0x75f8('0x6'))('rpc');var config=require(_0x75f8('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x75f8('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2b7d11,_0x4d60d0,_0x3375a0){return new BPromise(function(_0x1d631c,_0x4baac2){return client[_0x75f8('0x9')](_0x2b7d11,_0x3375a0)['then'](function(_0x5923c7){logger[_0x75f8('0xa')](_0x75f8('0xb'),_0x4d60d0,_0x75f8('0xc'));logger[_0x75f8('0xd')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x4d60d0,_0x75f8('0xc'),JSON[_0x75f8('0xe')](_0x5923c7));if(_0x5923c7[_0x75f8('0xf')]){if(_0x5923c7[_0x75f8('0xf')][_0x75f8('0x10')]===0x1f4){logger[_0x75f8('0xf')](_0x75f8('0xb'),_0x4d60d0,_0x5923c7[_0x75f8('0xf')][_0x75f8('0x11')]);return _0x4baac2(_0x5923c7[_0x75f8('0xf')][_0x75f8('0x11')]);}logger['error'](_0x75f8('0xb'),_0x4d60d0,_0x5923c7[_0x75f8('0xf')][_0x75f8('0x11')]);return _0x1d631c(_0x5923c7['error']['message']);}else{logger[_0x75f8('0xa')](_0x75f8('0xb'),_0x4d60d0,_0x75f8('0xc'));_0x1d631c(_0x5923c7['result'][_0x75f8('0x11')]);}})[_0x75f8('0x12')](function(_0x403113){logger[_0x75f8('0xf')](_0x75f8('0xb'),_0x4d60d0,_0x403113);_0x4baac2(_0x403113);});});}
\ No newline at end of file
index b1d3754..fb31739 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a55=['express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','show','post','create','update','delete','multer','util','path','connect-timeout'];(function(_0x38f3b8,_0x5c4fd4){var _0x20b053=function(_0x367599){while(--_0x367599){_0x38f3b8['push'](_0x38f3b8['shift']());}};_0x20b053(++_0x5c4fd4);}(_0x9a55,0x1e2));var _0x59a5=function(_0x9db0c3,_0x5be506){_0x9db0c3=_0x9db0c3-0x0;var _0x399be0=_0x9a55[_0x9db0c3];return _0x399be0;};'use strict';var multer=require(_0x59a5('0x0'));var util=require(_0x59a5('0x1'));var path=require(_0x59a5('0x2'));var timeout=require(_0x59a5('0x3'));var express=require(_0x59a5('0x4'));var router=express['Router']();var fs_extra=require(_0x59a5('0x5'));var auth=require(_0x59a5('0x6'));var interaction=require(_0x59a5('0x7'));var config=require('../../config/environment');var controller=require('./chatTransferReport.controller');router[_0x59a5('0x8')]('/',auth[_0x59a5('0x9')](),controller[_0x59a5('0xa')]);router['get'](_0x59a5('0xb'),auth[_0x59a5('0x9')](),controller[_0x59a5('0xc')]);router[_0x59a5('0x8')]('/:id',auth[_0x59a5('0x9')](),controller[_0x59a5('0xd')]);router[_0x59a5('0xe')]('/',auth['isAuthenticated'](),controller[_0x59a5('0xf')]);router['put']('/:id',auth[_0x59a5('0x9')](),controller[_0x59a5('0x10')]);router[_0x59a5('0x11')]('/:id',auth[_0x59a5('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x91d9=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','update','destroy','exports'];(function(_0x301620,_0x18f80b){var _0x173420=function(_0x42abe6){while(--_0x42abe6){_0x301620['push'](_0x301620['shift']());}};_0x173420(++_0x18f80b);}(_0x91d9,0xc6));var _0x991d=function(_0x570d24,_0x414d4f){_0x570d24=_0x570d24-0x0;var _0x3efae2=_0x91d9[_0x570d24];return _0x3efae2;};'use strict';var multer=require(_0x991d('0x0'));var util=require(_0x991d('0x1'));var path=require(_0x991d('0x2'));var timeout=require(_0x991d('0x3'));var express=require(_0x991d('0x4'));var router=express[_0x991d('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x991d('0x6'));var interaction=require(_0x991d('0x7'));var config=require(_0x991d('0x8'));var controller=require(_0x991d('0x9'));router[_0x991d('0xa')]('/',auth[_0x991d('0xb')](),controller['index']);router['get'](_0x991d('0xc'),auth[_0x991d('0xb')](),controller[_0x991d('0xd')]);router[_0x991d('0xa')](_0x991d('0xe'),auth[_0x991d('0xb')](),controller[_0x991d('0xf')]);router[_0x991d('0x10')]('/',auth[_0x991d('0xb')](),controller[_0x991d('0x11')]);router[_0x991d('0x12')](_0x991d('0xe'),auth[_0x991d('0xb')](),controller[_0x991d('0x13')]);router['delete'](_0x991d('0xe'),auth[_0x991d('0xb')](),controller[_0x991d('0x14')]);module[_0x991d('0x15')]=router;
\ No newline at end of file
index a57de7c..73fac8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0b3=['All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.','New\x20offline\x20message\x20from\x20websiteName','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','CHAT','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','exports','STRING','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Skip','Feedback','stringify','input','text','name','onlineForm','parse','getDataValue','setDataValue','textarea','Comments','Leave\x20your\x20comments','offlineForm','generate'];(function(_0x21bc30,_0x4767b3){var _0x19c766=function(_0x5e5128){while(--_0x5e5128){_0x21bc30['push'](_0x21bc30['shift']());}};_0x19c766(++_0x4767b3);}(_0xf0b3,0x10e));var _0x3f0b=function(_0x26e0a4,_0x41c372){_0x26e0a4=_0x26e0a4-0x0;var _0x209666=_0xf0b3[_0x26e0a4];return _0x209666;};'use strict';var Sequelize=require(_0x3f0b('0x0'));var rs=require(_0x3f0b('0x1'));module[_0x3f0b('0x2')]={'name':{'type':Sequelize[_0x3f0b('0x3')],'allowNull':![]},'address':{'type':Sequelize[_0x3f0b('0x3')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0x3f0b('0x3')]},'mapKey':{'type':Sequelize['STRING'],'defaultValue':_0x3f0b('0x4')},'mapKeyOffline':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x4')},'key':{'type':Sequelize[_0x3f0b('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x5')},'customerAlias':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x3f0b('0x3')],'allowNull':![],'defaultValue':_0x3f0b('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x3f0b('0x3')],'allowNull':![],'defaultValue':_0x3f0b('0x7'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0x3f0b('0x3')],'allowNull':![],'defaultValue':_0x3f0b('0x7'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x3f0b('0x8')],'defaultValue':0xf},'remote':{'type':Sequelize['STRING']},'animation':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x3f0b('0xa')](_0x3f0b('0xb'),_0x3f0b('0xc')),'defaultValue':'rounded'},'header_online':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0xd')},'start_chat_button':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0xe')},'offline_chat_button':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0xf')},'header_offline':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x10')},'download_transcript':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':!![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x3f0b('0x11')]},'closingQuestion':{'type':Sequelize['STRING'],'defaultValue':_0x3f0b('0x12')},'formSubmitSuccessMessage':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x13')},'formSubmitFailureMessage':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x14')},'noteTitle':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':'Note'},'placeholderMessage':{'type':Sequelize['STRING'],'defaultValue':'Type\x20a\x20message'},'closingMessage':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':'Send'},'skipMessageButton':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x15')},'conditionAgreement':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x16')},'ratingType':{'type':Sequelize[_0x3f0b('0xa')]('star','thumb'),'defaultValue':'star'},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x3f0b('0x11')],'defaultValue':function(){return JSON[_0x3f0b('0x17')]({'items':[{'type':_0x3f0b('0x18'),'variable':null,'config':{'placeholder':'name','type':_0x3f0b('0x19'),'required':!![]},'props':{'title':_0x3f0b('0x1a'),'helpText':''}},{'type':_0x3f0b('0x18'),'props':{'title':_0x3f0b('0x4'),'helpText':''},'config':{'required':!![],'placeholder':_0x3f0b('0x4'),'type':_0x3f0b('0x4')},'variable':null}],'fromKey':0x1});},'get':function(){return this['getDataValue'](_0x3f0b('0x1b'))?JSON[_0x3f0b('0x1c')](this[_0x3f0b('0x1d')](_0x3f0b('0x1b'))):{};},'set':function(_0xe22131){return this[_0x3f0b('0x1e')]('onlineForm',JSON[_0x3f0b('0x17')](_0xe22131));}},'offlineForm':{'type':Sequelize[_0x3f0b('0x11')],'defaultValue':function(){return JSON[_0x3f0b('0x17')]({'items':[{'type':_0x3f0b('0x18'),'props':{'title':_0x3f0b('0x4'),'helpText':''},'config':{'required':!![],'placeholder':'email','type':'email'},'variable':null},{'type':_0x3f0b('0x1f'),'config':{'placeholder':_0x3f0b('0x20')},'props':{'title':'Comments','helpText':_0x3f0b('0x21')}}],'fromKey':0x0});},'get':function(){return this[_0x3f0b('0x1d')](_0x3f0b('0x22'))?JSON[_0x3f0b('0x1c')](this['getDataValue'](_0x3f0b('0x22'))):{};},'set':function(_0x439b69){return this[_0x3f0b('0x1e')]('offlineForm',JSON[_0x3f0b('0x17')](_0x439b69));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x3f0b('0x23')]();}},'autoclose':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x3f0b('0x3')]},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize['STRING']},'waitingTitle':{'type':Sequelize['STRING'],'defaultValue':_0x3f0b('0x24')},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':'Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.'},'offlineMessageSubject':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x25')},'offlineMessageBody':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x26')},'skipUnmanaged':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x15')},'sendUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0x3f0b('0xf')},'enableCustomerAttachment':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x3f0b('0x11')]},'showAgentAvatar':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x3f0b('0x3')]},'notificationTemplate':{'type':Sequelize[_0x3f0b('0x11')],'defaultValue':function(){return _0x3f0b('0x27');}},'notificationSound':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x28')},'waitForTheAssignedAgent':{'type':Sequelize[_0x3f0b('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0x3f0b('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize['STRING'],'defaultValue':_0x3f0b('0x29')},'verticalAlignment':{'type':Sequelize[_0x3f0b('0x8')],'defaultValue':0x1e},'labelText':{'type':Sequelize['STRING'],'defaultValue':_0x3f0b('0x2a')},'messagesAlignment':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x2b')},'defaultTitle':{'type':Sequelize[_0x3f0b('0x3')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'messageFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x3f0b('0x3')],'allowNull':![],'defaultValue':_0x3f0b('0x2c'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x3f0b('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x3f0b('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':_0x3f0b('0x2d')},'systemAvatar':{'type':Sequelize[_0x3f0b('0x11')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x3f0b('0x8')],'comment':_0x3f0b('0x2e')},'mandatoryDisposition':{'type':Sequelize[_0x3f0b('0x9')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0xb0847c){if(!_0xb0847c)this['setDataValue'](_0x3f0b('0x2f'),null);this[_0x3f0b('0x1e')](_0x3f0b('0x30'),_0xb0847c);}},'vidaooEscalation':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x3f0b('0x3')]},'vidaooTopic':{'type':Sequelize[_0x3f0b('0x3')],'allowNull':![],'defaultValue':_0x3f0b('0x31')},'vidaooNote':{'type':Sequelize[_0x3f0b('0x3')],'defaultValue':function(){return _0x3f0b('0x32');}},'vidaooMetadata':{'type':Sequelize['TEXT'],'defaultValue':null},'openNewInteraction':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x3f0b('0x11')]}};
\ No newline at end of file
+var _0x83a9=['mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','sequelize','randomstring','exports','STRING','address','email','Agent','#011F6A','#ffffff','INTEGER','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','thumb','stringify','name','input','getDataValue','parse','setDataValue','Comments','Leave\x20your\x20comments','offlineForm','generate','New\x20offline\x20message\x20from\x20websiteName','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Send','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','CHAT','alternate','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0xa92a28,_0x267767){var _0x44d4ac=function(_0x1b0aa4){while(--_0x1b0aa4){_0xa92a28['push'](_0xa92a28['shift']());}};_0x44d4ac(++_0x267767);}(_0x83a9,0x18b));var _0x983a=function(_0x5ed928,_0x2dbbdc){_0x5ed928=_0x5ed928-0x0;var _0x2effcc=_0x83a9[_0x5ed928];return _0x2effcc;};'use strict';var Sequelize=require(_0x983a('0x0'));var rs=require(_0x983a('0x1'));module[_0x983a('0x2')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'address':{'type':Sequelize[_0x983a('0x3')],'allowNull':![],'unique':_0x983a('0x4')},'description':{'type':Sequelize['STRING']},'mapKey':{'type':Sequelize[_0x983a('0x3')],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize[_0x983a('0x3')],'defaultValue':_0x983a('0x5')},'key':{'type':Sequelize[_0x983a('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x983a('0x3')],'defaultValue':_0x983a('0x6')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize[_0x983a('0x3')],'allowNull':![],'defaultValue':_0x983a('0x7'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x983a('0x3')],'allowNull':![],'defaultValue':_0x983a('0x7'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x983a('0x8'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x983a('0x8'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize[_0x983a('0x9')],'defaultValue':0xf},'remote':{'type':Sequelize[_0x983a('0x3')]},'animation':{'type':Sequelize[_0x983a('0xa')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x983a('0xb')](_0x983a('0xc'),_0x983a('0xd')),'defaultValue':_0x983a('0xc')},'header_online':{'type':Sequelize[_0x983a('0x3')],'defaultValue':_0x983a('0xe')},'start_chat_button':{'type':Sequelize[_0x983a('0x3')],'defaultValue':'Chat'},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':'Send'},'header_offline':{'type':Sequelize[_0x983a('0x3')],'defaultValue':'Contact\x20us'},'download_transcript':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x983a('0x9')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x983a('0x3')],'defaultValue':_0x983a('0xf')},'defaultWhiteLabel':{'type':Sequelize[_0x983a('0xa')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x983a('0x10')]},'closingQuestion':{'type':Sequelize[_0x983a('0x3')],'defaultValue':_0x983a('0x11')},'formSubmitSuccessMessage':{'type':Sequelize[_0x983a('0x3')],'defaultValue':_0x983a('0x12')},'formSubmitFailureMessage':{'type':Sequelize[_0x983a('0x3')],'defaultValue':_0x983a('0x13')},'noteTitle':{'type':Sequelize[_0x983a('0x3')],'defaultValue':'Note'},'placeholderMessage':{'type':Sequelize[_0x983a('0x3')],'defaultValue':_0x983a('0x14')},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x983a('0x15')},'closingMessageButton':{'type':Sequelize[_0x983a('0x3')],'defaultValue':'Send'},'skipMessageButton':{'type':Sequelize[_0x983a('0x3')],'defaultValue':_0x983a('0x16')},'conditionAgreement':{'type':Sequelize[_0x983a('0xa')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x983a('0xa')],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x983a('0xa')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize['STRING'],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize[_0x983a('0xb')]('star',_0x983a('0x17')),'defaultValue':'star'},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x983a('0x10')],'defaultValue':function(){return JSON[_0x983a('0x18')]({'items':[{'type':'input','variable':null,'config':{'placeholder':'name','type':'text','required':!![]},'props':{'title':_0x983a('0x19'),'helpText':''}},{'type':_0x983a('0x1a'),'props':{'title':_0x983a('0x5'),'helpText':''},'config':{'required':!![],'placeholder':_0x983a('0x5'),'type':_0x983a('0x5')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x983a('0x1b')]('onlineForm')?JSON[_0x983a('0x1c')](this[_0x983a('0x1b')]('onlineForm')):{};},'set':function(_0xe9af72){return this[_0x983a('0x1d')]('onlineForm',JSON['stringify'](_0xe9af72));}},'offlineForm':{'type':Sequelize[_0x983a('0x10')],'defaultValue':function(){return JSON[_0x983a('0x18')]({'items':[{'type':_0x983a('0x1a'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':'email','type':_0x983a('0x5')},'variable':null},{'type':'textarea','config':{'placeholder':_0x983a('0x1e')},'props':{'title':_0x983a('0x1e'),'helpText':_0x983a('0x1f')}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0x983a('0x20'))?JSON[_0x983a('0x1c')](this['getDataValue'](_0x983a('0x20'))):{};},'set':function(_0x5a26c7){return this[_0x983a('0x1d')]('offlineForm',JSON['stringify'](_0x5a26c7));}},'token':{'type':Sequelize[_0x983a('0x3')],'defaultValue':function(){return rs[_0x983a('0x21')]();}},'autoclose':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x983a('0xa')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x983a('0xa')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0x983a('0xa')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x983a('0x3')]},'waitingTitle':{'type':Sequelize[_0x983a('0x3')],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize[_0x983a('0x3')],'defaultValue':'Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.'},'offlineMessageSubject':{'type':Sequelize[_0x983a('0x3')],'defaultValue':_0x983a('0x22')},'offlineMessageBody':{'type':Sequelize[_0x983a('0x3')],'defaultValue':_0x983a('0x23')},'enableUnmanagedNote':{'type':Sequelize[_0x983a('0xa')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize['STRING'],'defaultValue':_0x983a('0x24')},'skipUnmanaged':{'type':Sequelize[_0x983a('0x3')],'defaultValue':_0x983a('0x16')},'sendUnmanaged':{'type':Sequelize[_0x983a('0x3')],'defaultValue':_0x983a('0x25')},'enableCustomerAttachment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x983a('0x10')]},'showAgentAvatar':{'type':Sequelize[_0x983a('0xa')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x983a('0x3')]},'notificationTemplate':{'type':Sequelize[_0x983a('0x10')],'defaultValue':function(){return _0x983a('0x26');}},'notificationSound':{'type':Sequelize[_0x983a('0xa')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x983a('0xa')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0x983a('0xa')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize['STRING'],'defaultValue':_0x983a('0x27')},'waitForTheAssignedAgent':{'type':Sequelize[_0x983a('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0x983a('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x983a('0x3')],'defaultValue':_0x983a('0x28')},'verticalAlignment':{'type':Sequelize[_0x983a('0x9')],'defaultValue':0x1e},'labelText':{'type':Sequelize['STRING'],'defaultValue':_0x983a('0x29')},'messagesAlignment':{'type':Sequelize[_0x983a('0x3')],'defaultValue':_0x983a('0x2a')},'defaultTitle':{'type':Sequelize[_0x983a('0x3')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0x983a('0xa')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x983a('0x9')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x983a('0x2b'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x983a('0xa')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x983a('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x983a('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x983a('0x3')],'defaultValue':_0x983a('0x2c')},'systemAvatar':{'type':Sequelize[_0x983a('0x10')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x983a('0x9')],'comment':_0x983a('0x2d')},'mandatoryDisposition':{'type':Sequelize[_0x983a('0xa')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x3c9d86){if(!_0x3c9d86)this[_0x983a('0x1d')](_0x983a('0x2e'),null);this[_0x983a('0x1d')](_0x983a('0x2f'),_0x3c9d86);}},'vidaooEscalation':{'type':Sequelize[_0x983a('0xa')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x983a('0x3')]},'vidaooTopic':{'type':Sequelize[_0x983a('0x3')],'allowNull':![],'defaultValue':_0x983a('0x30')},'vidaooNote':{'type':Sequelize[_0x983a('0x3')],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize[_0x983a('0x10')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x983a('0xa')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 2f82fac..8f8c21b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfa2=['version','%s\x20%s','unknown','device','model','vendor','%s\x20%s\x20%s','type','index','Pause','mandatoryDispositionPause','ChatWebsite','key','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','ChatWebsiteId','Disposition','findOne','rawAttributes','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','order','removeAnswers','addLogo','sitepic','file','filename','agentAvatar','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','../../config/license/util','getLicense','custom','existsSync','server/files/images/logos/','download','server/files/images/avatars/default_avatar.png','isNil','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','notify','chat','Sequelize','no\x20available\x20attributes','createdAt','updatedAt','difference','CompanyId','ValidationError','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','List','CmContact','Contacts','DESC','ChatApplication','Applications','Chat\x20Website\x20with\x20id\x20%s\x20not\x20found','spread','account','list','orderBy','asc','contact','headers','threadId','ChatInteraction','externalUrl','ContactId','interaction','messageId','created','autoclose','applications','close','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','unshift','agent','forcedOwnership','queueId','ChatQueue','waitForTheAssignedQueue','Start','startRouting','EventManager','offline','files','ListId','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','defaults','findOrCreate','server/files/templates/chatOfflineMessage.ejs','render','toPairs','offlineMessageBody','originalname','attachments','offline-chat','basename','openNewInteraction','sequelize','transaction','Attachment','bulkCreate','MailServerOut','Smtp','CloudProvider','forwardOffline','forwardOfflineAddress','getSmtpOptions','SendMail','sendMail','email','MailAccountId','mimetype','subjectOffline','toPairsIn','Chat','NotifyMailAccount','server','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','Contact','User','Owner','fullname','internal','Tag','color','tag','virtual','License','increment','chatLicenseExceeded','server/files/chat/iframe.ejs','URL','address','origin','3.5.0','remote','x-real-ip','connection','remoteAddress','replace','verticalAlignment','labelText','textColor','textButtonColor','color_button','backgroundColor','hideWhenOffline','IntervalId','addApplications','ISOLATION_LEVELS','READ_COMMITTED','findAndCountAll','priority','finally','getApplications','addProactiveActions','getProactiveActions','ChatProactiveAction','getFields','online','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','ChatOfflineMessage','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','mustache','util','path','ejs','fs-extra','lodash','querystring','html-to-text','ioredis','jayson/promise','url','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../errors/api','APIOutOfIntervalError','APINotFoundError','../../mysqldb','redis','localhost','socket.io-emitter','./chatWebsite.socket','register','client','http','request','then','info','ChatWebsite,\x20%s,\x20%s','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','end','json','offset','undefined','count','set','Content-Range','update','destroy','ChatWebsites','UserProfileResource','status','stack','name','send','Command','timezone','format','iftime\x20%s,%s','interval','iftime\x20%s','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','No\x20timezone','inspect','map','Interval','Intervals','some','setUA','user-agent','getResult','customerIp','cf-connecting-ip','x-forwarded-for','first','split','firstName','lastName','x-real-port','referer','browser'];(function(_0x5e7e1a,_0x38a7c6){var _0x46b94f=function(_0x4d6e22){while(--_0x4d6e22){_0x5e7e1a['push'](_0x5e7e1a['shift']());}};_0x46b94f(++_0x38a7c6);}(_0xbfa2,0xed));var _0x2bfa=function(_0x16c206,_0x1e45c4){_0x16c206=_0x16c206-0x0;var _0x311092=_0xbfa2[_0x16c206];return _0x311092;};'use strict';var Mustache=require(_0x2bfa('0x0'));var util=require(_0x2bfa('0x1'));var path=require(_0x2bfa('0x2'));var ejs=require(_0x2bfa('0x3'));var fs=require('fs');var fs_extra=require(_0x2bfa('0x4'));var _=require(_0x2bfa('0x5'));var querystring=require(_0x2bfa('0x6'));var htmlToText=require(_0x2bfa('0x7'));var Redis=require(_0x2bfa('0x8'));var jayson=require(_0x2bfa('0x9'));var url=require(_0x2bfa('0xa'));var qs=require(_0x2bfa('0xb'));var logger=require(_0x2bfa('0xc'))(_0x2bfa('0xd'));var config=require(_0x2bfa('0xe'));var APIOutOfIntervalError=require(_0x2bfa('0xf'))[_0x2bfa('0x10')];var APINotFoundError=require(_0x2bfa('0xf'))[_0x2bfa('0x11')];var APIHandleError=require(_0x2bfa('0xf'))['handleError'];var db=require(_0x2bfa('0x12'))['db'];config[_0x2bfa('0x13')]=_['defaults'](config['redis'],{'host':_0x2bfa('0x14'),'port':0x18eb});var socket=require(_0x2bfa('0x15'))(new Redis(config[_0x2bfa('0x13')]));require(_0x2bfa('0x16'))[_0x2bfa('0x17')](socket);var client=jayson[_0x2bfa('0x18')][_0x2bfa('0x19')]({'port':0x232c});var client9002=jayson[_0x2bfa('0x18')][_0x2bfa('0x19')]({'port':0x232a});var client9003=jayson[_0x2bfa('0x18')][_0x2bfa('0x19')]({'port':0x232b});var client9001=jayson[_0x2bfa('0x18')][_0x2bfa('0x19')]({'port':0x2329});function respondWithRpcPromise(_0x282b0a,_0x43fe25,_0x27f57c,_0x279459){return new Promise(function(_0x136fa1,_0x1903a6){var _0x1164d1=_0x279459||client;return _0x1164d1[_0x2bfa('0x1a')](_0x282b0a,_0x27f57c)[_0x2bfa('0x1b')](function(_0x496629){logger[_0x2bfa('0x1c')](_0x2bfa('0x1d'),_0x43fe25,'request\x20sent');logger[_0x2bfa('0x1e')](_0x2bfa('0x1f'),_0x43fe25,_0x2bfa('0x20'),JSON[_0x2bfa('0x21')](_0x496629));if(_0x496629[_0x2bfa('0x22')]){if(_0x496629[_0x2bfa('0x22')][_0x2bfa('0x23')]===0x1f4){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x43fe25,_0x496629[_0x2bfa('0x22')][_0x2bfa('0x24')]);return _0x1903a6(_0x496629[_0x2bfa('0x22')][_0x2bfa('0x24')]);}logger[_0x2bfa('0x22')](_0x2bfa('0x1d'),_0x43fe25,_0x496629[_0x2bfa('0x22')]['message']);return _0x136fa1(_0x496629[_0x2bfa('0x22')][_0x2bfa('0x24')]);}else{logger[_0x2bfa('0x1c')](_0x2bfa('0x1d'),_0x43fe25,'request\x20sent');_0x136fa1(_0x496629[_0x2bfa('0x25')][_0x2bfa('0x24')]);}})[_0x2bfa('0x26')](function(_0xd7767e){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x43fe25,_0xd7767e);_0x1903a6(_0xd7767e);});});}function respondWithStatusCode(_0x491fd1,_0x796d72){_0x796d72=_0x796d72||0xcc;return function(_0x2e2321){if(_0x2e2321){return _0x491fd1[_0x2bfa('0x27')](_0x796d72);}return _0x491fd1['status'](_0x796d72)[_0x2bfa('0x28')]();};}function respondWithResult(_0x49ad27,_0x461864){_0x461864=_0x461864||0xc8;return function(_0x2ff0d4){if(_0x2ff0d4){return _0x49ad27['status'](_0x461864)[_0x2bfa('0x29')](_0x2ff0d4);}};}function respondWithFilteredResult(_0x28fb48,_0x47892e){return function(_0x46edab){if(_0x46edab){var _0xf46e88=typeof _0x47892e[_0x2bfa('0x2a')]===_0x2bfa('0x2b')&&typeof _0x47892e['limit']==='undefined';var _0x48f976=_0x46edab[_0x2bfa('0x2c')];var _0x4f6fc9=_0xf46e88?0x0:_0x47892e['offset'];var _0x2997f2=_0xf46e88?_0x46edab['count']:_0x47892e['offset']+_0x47892e['limit'];var _0x15832a;if(_0x2997f2>=_0x48f976){_0x2997f2=_0x48f976;_0x15832a=0xc8;}else{_0x15832a=0xce;}_0x28fb48['status'](_0x15832a);return _0x28fb48[_0x2bfa('0x2d')](_0x2bfa('0x2e'),_0x4f6fc9+'-'+_0x2997f2+'/'+_0x48f976)[_0x2bfa('0x29')](_0x46edab);}return null;};}function saveUpdates(_0xfe5d7){return function(_0x361e93){if(_0x361e93){return _0x361e93[_0x2bfa('0x2f')](_0xfe5d7)[_0x2bfa('0x1b')](function(_0x514c65){return _0x514c65;});}return null;};}function removeEntity(_0x4f5fe0){return function(_0x535799){if(_0x535799){return _0x535799[_0x2bfa('0x30')]()[_0x2bfa('0x1b')](function(){var _0x258d15=_0x535799['get']({'plain':!![]});var _0x24ccea=_0x2bfa('0x31');return db[_0x2bfa('0x32')][_0x2bfa('0x30')]({'where':{'type':_0x24ccea,'resourceId':_0x258d15['id']}})[_0x2bfa('0x1b')](function(){return _0x535799;});})[_0x2bfa('0x1b')](function(){_0x4f5fe0[_0x2bfa('0x33')](0xcc)[_0x2bfa('0x28')]();});}};}function handleEntityNotFound(_0x5eb4cc){return function(_0x5d2696){if(!_0x5d2696){_0x5eb4cc[_0x2bfa('0x27')](0x194);}return _0x5d2696;};}function handleError(_0x42687a,_0xbde848){_0xbde848=_0xbde848||0x1f4;return function(_0x57ae0c){logger[_0x2bfa('0x22')](_0x57ae0c[_0x2bfa('0x34')]);if(_0x57ae0c['name']){delete _0x57ae0c[_0x2bfa('0x35')];}_0x42687a[_0x2bfa('0x33')](_0xbde848)[_0x2bfa('0x36')](_0x57ae0c);};}function iftimePromise(_0x1959c7,_0x15a3a9){return respondWithRpcPromise(_0x2bfa('0x37'),'getSnippet',{'command':_0x15a3a9[_0x2bfa('0x38')]?util[_0x2bfa('0x39')](_0x2bfa('0x3a'),_0x1959c7[_0x2bfa('0x3b')],_0x15a3a9[_0x2bfa('0x38')]):util[_0x2bfa('0x39')](_0x2bfa('0x3c'),_0x1959c7[_0x2bfa('0x3b')])},client9002)['then'](function(_0x304130){var _0x477503=_0x304130&&_0x304130['indexOf'](_0x2bfa('0x3d'))>=0x0?!![]:![];logger[_0x2bfa('0x1c')](_0x2bfa('0x3e'),_0x15a3a9['id'],_0x1959c7['id'],_0x1959c7['interval'],_0x477503?'ONLINE':'OFFLINE',_0x15a3a9['timezone']?_0x15a3a9[_0x2bfa('0x38')]:_0x2bfa('0x3f'));return _0x477503;})[_0x2bfa('0x26')](function(_0x41f7f9){logger[_0x2bfa('0x22')](_0x2bfa('0x3e'),_0x15a3a9['id'],_0x1959c7['id'],_0x1959c7[_0x2bfa('0x3b')],util[_0x2bfa('0x40')](_0x41f7f9,{'showHidden':![],'depth':null}),_0x15a3a9[_0x2bfa('0x38')]?_0x15a3a9['timezone']:_0x2bfa('0x3f'));return![];});}function checkWebsiteIntervals(_0x36f48c){var _0x4766bd=_[_0x2bfa('0x41')](_0x36f48c[_0x2bfa('0x42')][_0x2bfa('0x43')],function(_0x39a981){var _0x519ee5=_0x39a981['get']({'plain':!![]});return iftimePromise(_0x519ee5,_0x36f48c);});return Promise['all'](_0x4766bd)['then'](function(_0x5891e8){return _[_0x2bfa('0x44')](_0x5891e8);});}function createInteractionObject(_0x74d559,_0xd1938b,_0x293bc2,_0x22b989){var _0x531457=require('user-agent-parser');var _0x19d47a=new _0x531457();var _0x59ef70=_0x19d47a[_0x2bfa('0x45')](_0x293bc2[_0x2bfa('0x46')])[_0x2bfa('0x47')]();var _0x51b928=_0xd1938b[_0x2bfa('0x48')];if(_0x293bc2['cf-connecting-ip']){_0x51b928=_0x293bc2[_0x2bfa('0x49')];}else if(_0x293bc2[_0x2bfa('0x4a')]){_0x51b928=_[_0x2bfa('0x4b')](_0x293bc2[_0x2bfa('0x4a')][_0x2bfa('0x4c')](','));}return{'ContactId':_0x22b989['id'],'ChatWebsiteId':_0x74d559,'from':(_0x22b989[_0x2bfa('0x4d')]||'')+'\x20'+(_0x22b989[_0x2bfa('0x4e')]||''),'customerIp':_0x51b928,'customerPort':_0x293bc2[_0x2bfa('0x4f')]?_0x293bc2[_0x2bfa('0x4f')]:null,'referer':_0xd1938b[_0x2bfa('0x50')],'browserName':_0x59ef70[_0x2bfa('0x51')]['name']&&_0x59ef70[_0x2bfa('0x51')][_0x2bfa('0x52')]?util[_0x2bfa('0x39')](_0x2bfa('0x53'),_0x59ef70[_0x2bfa('0x51')][_0x2bfa('0x35')],_0x59ef70[_0x2bfa('0x51')][_0x2bfa('0x52')]):_0x2bfa('0x54'),'browserVersion':_0x59ef70[_0x2bfa('0x51')][_0x2bfa('0x52')]||'unknown','osName':util[_0x2bfa('0x39')](_0x2bfa('0x53'),_0x59ef70['os']['name'],_0x59ef70['os'][_0x2bfa('0x52')]),'osVersion':_0x59ef70['os'][_0x2bfa('0x52')],'deviceModel':_0x59ef70[_0x2bfa('0x55')][_0x2bfa('0x56')]&&_0x59ef70[_0x2bfa('0x55')][_0x2bfa('0x57')]?util[_0x2bfa('0x39')](_0x2bfa('0x58'),_0x59ef70[_0x2bfa('0x55')][_0x2bfa('0x56')],_0x59ef70[_0x2bfa('0x55')][_0x2bfa('0x57')],_0x59ef70['device'][_0x2bfa('0x59')]):null,'deviceVendor':_0x59ef70['device'][_0x2bfa('0x57')],'deviceType':_0x59ef70[_0x2bfa('0x55')]['type'],'formData':JSON[_0x2bfa('0x21')](_0xd1938b)};}exports[_0x2bfa('0x5a')]=function(_0x38ca72,_0x532913){var _0x4e05bc={'include':[{'model':db[_0x2bfa('0x5b')],'as':_0x2bfa('0x5c')}]},_0x452f51={},_0x3e1f5e={'count':0x0,'rows':[]};var _0x6f3416=_[_0x2bfa('0x41')](db[_0x2bfa('0x5d')]['rawAttributes'],function(_0x225328){return{'name':_0x225328['fieldName'],'type':_0x225328['type'][_0x2bfa('0x5e')]};});_0x452f51[_0x2bfa('0x56')]=_[_0x2bfa('0x41')](_0x6f3416,_0x2bfa('0x35'));_0x452f51[_0x2bfa('0x5f')]=_[_0x2bfa('0x60')](_0x38ca72[_0x2bfa('0x5f')]);_0x452f51['filters']=_['intersection'](_0x452f51['model'],_0x452f51['query']);_0x4e05bc[_0x2bfa('0x61')]=_[_0x2bfa('0x62')](_0x452f51['model'],qs[_0x2bfa('0x63')](_0x38ca72[_0x2bfa('0x5f')][_0x2bfa('0x63')]));_0x4e05bc[_0x2bfa('0x61')]=_0x4e05bc['attributes'][_0x2bfa('0x64')]?_0x4e05bc['attributes']:_0x452f51[_0x2bfa('0x56')];if(!_0x38ca72['query'][_0x2bfa('0x65')](_0x2bfa('0x66'))){_0x4e05bc[_0x2bfa('0x67')]=qs[_0x2bfa('0x67')](_0x38ca72[_0x2bfa('0x5f')][_0x2bfa('0x67')]);_0x4e05bc[_0x2bfa('0x2a')]=qs['offset'](_0x38ca72[_0x2bfa('0x5f')][_0x2bfa('0x2a')]);}_0x4e05bc['order']=qs[_0x2bfa('0x68')](_0x38ca72[_0x2bfa('0x5f')][_0x2bfa('0x68')]);_0x4e05bc[_0x2bfa('0x69')]=qs[_0x2bfa('0x6a')](_[_0x2bfa('0x6b')](_0x38ca72[_0x2bfa('0x5f')],_0x452f51['filters']),_0x6f3416);if(_0x38ca72[_0x2bfa('0x5f')][_0x2bfa('0x6c')]){_0x4e05bc[_0x2bfa('0x69')]=_[_0x2bfa('0x6d')](_0x4e05bc[_0x2bfa('0x69')],{'$or':_[_0x2bfa('0x41')](_0x6f3416,function(_0x92ecb5){if(_0x92ecb5[_0x2bfa('0x59')]!==_0x2bfa('0x6e')){var _0x2dd8c5={};_0x2dd8c5[_0x92ecb5[_0x2bfa('0x35')]]={'$like':'%'+_0x38ca72[_0x2bfa('0x5f')][_0x2bfa('0x6c')]+'%'};return _0x2dd8c5;}})});}_0x4e05bc=_[_0x2bfa('0x6d')]({},_0x4e05bc,_0x38ca72[_0x2bfa('0x6f')]);var _0x3130b5={'where':_0x4e05bc[_0x2bfa('0x69')]};return db[_0x2bfa('0x5d')][_0x2bfa('0x2c')](_0x3130b5)['then'](function(_0x22f2fe){_0x3e1f5e[_0x2bfa('0x2c')]=_0x22f2fe;if(_0x38ca72['query'][_0x2bfa('0x70')]){_0x4e05bc[_0x2bfa('0x71')]=[{'all':!![]}];}return db[_0x2bfa('0x5d')][_0x2bfa('0x72')](_0x4e05bc);})['then'](function(_0x104e01){_0x3e1f5e[_0x2bfa('0x73')]=_0x104e01;return _0x3e1f5e;})[_0x2bfa('0x1b')](respondWithFilteredResult(_0x532913,_0x4e05bc))['catch'](handleError(_0x532913,null));};exports[_0x2bfa('0x74')]=function(_0xec32af,_0xf360e5){var _0x56de9f={'raw':![],'where':{'id':_0xec32af['params']['id']},'include':[{'model':db[_0x2bfa('0x5b')],'as':_0x2bfa('0x5c')}]},_0x4b4dee={};_0x4b4dee['model']=_['keys'](db['ChatWebsite']['rawAttributes']);_0x4b4dee[_0x2bfa('0x5f')]=_['keys'](_0xec32af[_0x2bfa('0x5f')]);_0x4b4dee[_0x2bfa('0x6a')]=_[_0x2bfa('0x62')](_0x4b4dee[_0x2bfa('0x56')],_0x4b4dee[_0x2bfa('0x5f')]);_0x56de9f[_0x2bfa('0x61')]=_['intersection'](_0x4b4dee[_0x2bfa('0x56')],qs[_0x2bfa('0x63')](_0xec32af[_0x2bfa('0x5f')][_0x2bfa('0x63')]));_0x56de9f[_0x2bfa('0x61')]=_0x56de9f[_0x2bfa('0x61')][_0x2bfa('0x64')]?_0x56de9f['attributes']:_0x4b4dee[_0x2bfa('0x56')];if(_0xec32af[_0x2bfa('0x5f')][_0x2bfa('0x70')]){_0x56de9f[_0x2bfa('0x71')]=[{'all':!![]}];}_0x56de9f=_[_0x2bfa('0x6d')]({},_0x56de9f,_0xec32af[_0x2bfa('0x6f')]);return db[_0x2bfa('0x5d')][_0x2bfa('0x75')](_0x56de9f)['then'](handleEntityNotFound(_0xf360e5,null))[_0x2bfa('0x1b')](respondWithResult(_0xf360e5,null))[_0x2bfa('0x26')](handleError(_0xf360e5,null));};exports[_0x2bfa('0x76')]=function(_0x2b7fa6,_0x5ec3a5){return db[_0x2bfa('0x5d')][_0x2bfa('0x76')](_0x2b7fa6[_0x2bfa('0x77')],{})[_0x2bfa('0x1b')](function(_0x4560c3){var _0x24682e=_0x2b7fa6[_0x2bfa('0x78')][_0x2bfa('0x79')]({'plain':!![]});if(!_0x24682e)throw new Error(_0x2bfa('0x7a'));if(_0x24682e[_0x2bfa('0x7b')]===_0x2bfa('0x78')){var _0x409845=_0x4560c3[_0x2bfa('0x79')]({'plain':!![]});var _0x55a89d='ChatWebsites';return db[_0x2bfa('0x7c')][_0x2bfa('0x75')]({'where':{'name':_0x55a89d,'userProfileId':_0x24682e[_0x2bfa('0x7d')]},'raw':!![]})[_0x2bfa('0x1b')](function(_0x4ffdb5){if(_0x4ffdb5&&_0x4ffdb5['autoAssociation']===0x0){return db['UserProfileResource'][_0x2bfa('0x76')]({'name':_0x409845[_0x2bfa('0x35')],'resourceId':_0x409845['id'],'type':_0x4ffdb5[_0x2bfa('0x35')],'sectionId':_0x4ffdb5['id']},{})[_0x2bfa('0x1b')](function(){return _0x4560c3;});}else{return _0x4560c3;}})[_0x2bfa('0x26')](function(_0x39621a){logger['error'](_0x2bfa('0x7e'),_0x39621a);throw _0x39621a;});}return _0x4560c3;})[_0x2bfa('0x1b')](respondWithResult(_0x5ec3a5,0xc9))[_0x2bfa('0x26')](handleError(_0x5ec3a5,null));};exports[_0x2bfa('0x2f')]=function(_0x3c7e62,_0x557718){if(_0x3c7e62[_0x2bfa('0x77')]['id']){delete _0x3c7e62[_0x2bfa('0x77')]['id'];}return db[_0x2bfa('0x5d')][_0x2bfa('0x75')]({'where':{'id':_0x3c7e62[_0x2bfa('0x7f')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x557718,null))[_0x2bfa('0x1b')](saveUpdates(_0x3c7e62[_0x2bfa('0x77')],null))['then'](respondWithResult(_0x557718,null))[_0x2bfa('0x26')](handleError(_0x557718,null));};exports[_0x2bfa('0x30')]=function(_0x2b1815,_0x4360d1){return db['ChatWebsite']['find']({'where':{'id':_0x2b1815[_0x2bfa('0x7f')]['id']}})['then'](handleEntityNotFound(_0x4360d1,null))[_0x2bfa('0x1b')](removeEntity(_0x4360d1,null))[_0x2bfa('0x26')](handleError(_0x4360d1,null));};exports[_0x2bfa('0x80')]=function(_0x590a8f,_0x29d6a4){return db[_0x2bfa('0x5d')][_0x2bfa('0x80')]()[_0x2bfa('0x1b')](respondWithResult(_0x29d6a4,null))[_0x2bfa('0x26')](handleError(_0x29d6a4,null));};exports[_0x2bfa('0x81')]=function(_0x19e738,_0x24bcf8){if(_0x19e738[_0x2bfa('0x77')]['id']){delete _0x19e738[_0x2bfa('0x77')]['id'];}return db[_0x2bfa('0x5d')][_0x2bfa('0x75')]({'where':{'id':_0x19e738[_0x2bfa('0x7f')]['id']}})['then'](handleEntityNotFound(_0x24bcf8,null))['then'](function(_0x5c191f){if(_0x5c191f){_0x19e738[_0x2bfa('0x77')][_0x2bfa('0x82')]=_0x5c191f['id'];return db[_0x2bfa('0x83')][_0x2bfa('0x76')](_0x19e738[_0x2bfa('0x77')]);}})[_0x2bfa('0x1b')](respondWithResult(_0x24bcf8,null))['catch'](handleError(_0x24bcf8,null));};exports['getDispositions']=function(_0x33a0ef,_0x339c06){var _0x57b4f3={'raw':![],'where':{}};var _0x1eb0a6={};var _0x24e3b4={'count':0x0,'rows':[]};return db[_0x2bfa('0x5d')][_0x2bfa('0x84')]({'where':{'id':_0x33a0ef['params']['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x339c06,null))['then'](function(_0x5bd1d2){if(_0x5bd1d2){_0x1eb0a6[_0x2bfa('0x56')]=_['keys'](db[_0x2bfa('0x83')][_0x2bfa('0x85')]);_0x1eb0a6[_0x2bfa('0x5f')]=_[_0x2bfa('0x60')](_0x33a0ef[_0x2bfa('0x5f')]);_0x1eb0a6['filters']=_[_0x2bfa('0x62')](_0x1eb0a6[_0x2bfa('0x56')],_0x1eb0a6[_0x2bfa('0x5f')]);_0x57b4f3[_0x2bfa('0x61')]=_[_0x2bfa('0x62')](_0x1eb0a6[_0x2bfa('0x56')],qs[_0x2bfa('0x63')](_0x33a0ef[_0x2bfa('0x5f')][_0x2bfa('0x63')]));_0x57b4f3[_0x2bfa('0x61')]=_0x57b4f3['attributes'][_0x2bfa('0x64')]?_0x57b4f3[_0x2bfa('0x61')]:_0x1eb0a6[_0x2bfa('0x56')];if(!_0x33a0ef[_0x2bfa('0x5f')][_0x2bfa('0x65')]('nolimit')){_0x57b4f3['limit']=qs[_0x2bfa('0x67')](_0x33a0ef['query'][_0x2bfa('0x67')]);_0x57b4f3['offset']=qs[_0x2bfa('0x2a')](_0x33a0ef[_0x2bfa('0x5f')][_0x2bfa('0x2a')]);}_0x57b4f3['order']=qs[_0x2bfa('0x68')](_0x33a0ef[_0x2bfa('0x5f')]['sort']);_0x57b4f3[_0x2bfa('0x69')]=qs[_0x2bfa('0x6a')](_[_0x2bfa('0x6b')](_0x33a0ef[_0x2bfa('0x5f')],_0x1eb0a6[_0x2bfa('0x6a')]));_0x57b4f3['where'][_0x2bfa('0x82')]=_0x5bd1d2['id'];if(_0x33a0ef[_0x2bfa('0x5f')][_0x2bfa('0x6c')]){_0x57b4f3[_0x2bfa('0x69')]=_[_0x2bfa('0x6d')](_0x57b4f3[_0x2bfa('0x69')],{'$or':_['map'](_0x57b4f3[_0x2bfa('0x61')],function(_0x1bc4e9){var _0x4f12f4={};_0x4f12f4[_0x1bc4e9]={'$like':'%'+_0x33a0ef[_0x2bfa('0x5f')]['filter']+'%'};return _0x4f12f4;})});}_0x57b4f3=_[_0x2bfa('0x6d')]({},_0x57b4f3,_0x33a0ef[_0x2bfa('0x6f')]);return db[_0x2bfa('0x83')][_0x2bfa('0x2c')]({'where':_0x57b4f3[_0x2bfa('0x69')]})[_0x2bfa('0x1b')](function(_0x16f3e9){_0x24e3b4['count']=_0x16f3e9;if(_0x33a0ef[_0x2bfa('0x5f')][_0x2bfa('0x70')]){_0x57b4f3['include']=[{'all':!![]}];}return db[_0x2bfa('0x83')][_0x2bfa('0x72')](_0x57b4f3);})[_0x2bfa('0x1b')](function(_0x2a63aa){_0x24e3b4[_0x2bfa('0x73')]=_0x2a63aa;return _0x24e3b4;});}})[_0x2bfa('0x1b')](respondWithFilteredResult(_0x339c06,_0x57b4f3))[_0x2bfa('0x26')](handleError(_0x339c06,null));};exports['removeDispositions']=function(_0x42fb9d,_0x5241c2){return db[_0x2bfa('0x5d')][_0x2bfa('0x75')]({'where':{'id':_0x42fb9d[_0x2bfa('0x7f')]['id']}})['then'](handleEntityNotFound(_0x5241c2,null))[_0x2bfa('0x1b')](function(_0xc5f5e8){if(_0xc5f5e8){return _0xc5f5e8[_0x2bfa('0x86')](_0x42fb9d[_0x2bfa('0x5f')][_0x2bfa('0x87')]);}})[_0x2bfa('0x1b')](respondWithStatusCode(_0x5241c2,null))[_0x2bfa('0x26')](handleError(_0x5241c2,null));};exports[_0x2bfa('0x88')]=function(_0x24e70a,_0x519903){if(_0x24e70a['body']['id']){delete _0x24e70a[_0x2bfa('0x77')]['id'];}return db['ChatWebsite']['find']({'where':{'id':_0x24e70a['params']['id']}})['then'](handleEntityNotFound(_0x519903,null))['then'](function(_0x1aac07){if(_0x1aac07){_0x24e70a[_0x2bfa('0x77')]['ChatWebsiteId']=_0x1aac07['id'];return db[_0x2bfa('0x89')][_0x2bfa('0x76')](_0x24e70a[_0x2bfa('0x77')]);}})[_0x2bfa('0x1b')](respondWithResult(_0x519903,null))['catch'](handleError(_0x519903,null));};exports[_0x2bfa('0x8a')]=function(_0x18ddc4,_0x1e8fa9){var _0x2ddc57={'raw':![],'where':{}};var _0xb4f35b={};var _0x556dc3={'count':0x0,'rows':[]};return db[_0x2bfa('0x5d')][_0x2bfa('0x84')]({'where':{'id':_0x18ddc4[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x1e8fa9,null))['then'](function(_0x255272){if(_0x255272){_0xb4f35b[_0x2bfa('0x56')]=_[_0x2bfa('0x60')](db[_0x2bfa('0x89')][_0x2bfa('0x85')]);_0xb4f35b[_0x2bfa('0x5f')]=_[_0x2bfa('0x60')](_0x18ddc4[_0x2bfa('0x5f')]);_0xb4f35b['filters']=_[_0x2bfa('0x62')](_0xb4f35b['model'],_0xb4f35b[_0x2bfa('0x5f')]);_0x2ddc57['attributes']=_[_0x2bfa('0x62')](_0xb4f35b[_0x2bfa('0x56')],qs[_0x2bfa('0x63')](_0x18ddc4['query']['fields']));_0x2ddc57[_0x2bfa('0x61')]=_0x2ddc57[_0x2bfa('0x61')]['length']?_0x2ddc57['attributes']:_0xb4f35b['model'];if(!_0x18ddc4[_0x2bfa('0x5f')][_0x2bfa('0x65')]('nolimit')){_0x2ddc57['limit']=qs['limit'](_0x18ddc4[_0x2bfa('0x5f')][_0x2bfa('0x67')]);_0x2ddc57[_0x2bfa('0x2a')]=qs[_0x2bfa('0x2a')](_0x18ddc4[_0x2bfa('0x5f')]['offset']);}_0x2ddc57[_0x2bfa('0x8b')]=qs[_0x2bfa('0x68')](_0x18ddc4[_0x2bfa('0x5f')][_0x2bfa('0x68')]);_0x2ddc57[_0x2bfa('0x69')]=qs[_0x2bfa('0x6a')](_[_0x2bfa('0x6b')](_0x18ddc4[_0x2bfa('0x5f')],_0xb4f35b[_0x2bfa('0x6a')]));_0x2ddc57[_0x2bfa('0x69')]['ChatWebsiteId']=_0x255272['id'];if(_0x18ddc4[_0x2bfa('0x5f')][_0x2bfa('0x6c')]){_0x2ddc57[_0x2bfa('0x69')]=_['merge'](_0x2ddc57[_0x2bfa('0x69')],{'$or':_[_0x2bfa('0x41')](_0x2ddc57[_0x2bfa('0x61')],function(_0x57227f){var _0x1fc8ca={};_0x1fc8ca[_0x57227f]={'$like':'%'+_0x18ddc4['query'][_0x2bfa('0x6c')]+'%'};return _0x1fc8ca;})});}_0x2ddc57=_[_0x2bfa('0x6d')]({},_0x2ddc57,_0x18ddc4[_0x2bfa('0x6f')]);return db[_0x2bfa('0x89')][_0x2bfa('0x2c')]({'where':_0x2ddc57[_0x2bfa('0x69')]})[_0x2bfa('0x1b')](function(_0x54ca96){_0x556dc3[_0x2bfa('0x2c')]=_0x54ca96;if(_0x18ddc4[_0x2bfa('0x5f')][_0x2bfa('0x70')]){_0x2ddc57[_0x2bfa('0x71')]=[{'all':!![]}];}return db[_0x2bfa('0x89')][_0x2bfa('0x72')](_0x2ddc57);})[_0x2bfa('0x1b')](function(_0x20143a){_0x556dc3['rows']=_0x20143a;return _0x556dc3;});}})['then'](respondWithFilteredResult(_0x1e8fa9,_0x2ddc57))[_0x2bfa('0x26')](handleError(_0x1e8fa9,null));};exports[_0x2bfa('0x8c')]=function(_0x27728d,_0x5636d0){return db['ChatWebsite'][_0x2bfa('0x75')]({'where':{'id':_0x27728d[_0x2bfa('0x7f')]['id']}})['then'](handleEntityNotFound(_0x5636d0,null))[_0x2bfa('0x1b')](function(_0x1fc586){if(_0x1fc586){return _0x1fc586['removeAnswers'](_0x27728d[_0x2bfa('0x5f')][_0x2bfa('0x87')]);}})[_0x2bfa('0x1b')](respondWithStatusCode(_0x5636d0,null))['catch'](handleError(_0x5636d0,null));};exports[_0x2bfa('0x8d')]=function(_0x1f4d8d,_0x40bd71){_0x1f4d8d[_0x2bfa('0x77')][_0x2bfa('0x8e')]=_0x1f4d8d[_0x2bfa('0x8f')][_0x2bfa('0x90')];return db['ChatWebsite'][_0x2bfa('0x75')]({'where':{'id':_0x1f4d8d[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x40bd71,null))['then'](saveUpdates(_0x1f4d8d[_0x2bfa('0x77')],null))[_0x2bfa('0x1b')](respondWithResult(_0x40bd71,null))[_0x2bfa('0x26')](handleError(_0x40bd71,null));};exports['addAvatar']=function(_0x39c54b,_0x4d9ebf){_0x39c54b['body'][_0x2bfa('0x91')]=_0x39c54b['file'][_0x2bfa('0x90')];return db[_0x2bfa('0x5d')][_0x2bfa('0x75')]({'where':{'id':_0x39c54b[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x4d9ebf,null))['then'](saveUpdates(_0x39c54b[_0x2bfa('0x77')],null))[_0x2bfa('0x1b')](respondWithResult(_0x4d9ebf,null))[_0x2bfa('0x26')](handleError(_0x4d9ebf,null));};exports[_0x2bfa('0x92')]=function(_0x44669a,_0x4b5236){_0x44669a[_0x2bfa('0x77')][_0x2bfa('0x93')]=_0x44669a['file']['filename'];return db[_0x2bfa('0x5d')][_0x2bfa('0x75')]({'where':{'id':_0x44669a[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x4b5236,null))['then'](saveUpdates(_0x44669a[_0x2bfa('0x77')],null))[_0x2bfa('0x1b')](respondWithResult(_0x4b5236,null))[_0x2bfa('0x26')](handleError(_0x4b5236,null));};exports[_0x2bfa('0x94')]=function(_0x4eda71,_0x2dfb32){_0x4eda71['body'][_0x2bfa('0x95')]=_0x4eda71[_0x2bfa('0x8f')][_0x2bfa('0x90')];return db[_0x2bfa('0x5d')][_0x2bfa('0x75')]({'where':{'id':_0x4eda71[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x2dfb32,null))[_0x2bfa('0x1b')](saveUpdates(_0x4eda71[_0x2bfa('0x77')],null))[_0x2bfa('0x1b')](respondWithResult(_0x2dfb32,null))[_0x2bfa('0x26')](handleError(_0x2dfb32,null));};exports[_0x2bfa('0x96')]=function(_0x300f25,_0x582d50){var _0x2e3333=path[_0x2bfa('0x97')](config[_0x2bfa('0x98')],_0x2bfa('0x99'));var _0x19d404={'where':{'id':_0x300f25[_0x2bfa('0x7f')]['id']},'attributes':['id',_0x2bfa('0x8e')],'raw':!![]};var _0x236cf8=![];return require(_0x2bfa('0x9a'))[_0x2bfa('0x9b')]()[_0x2bfa('0x1b')](function(_0x3b4b0a){if(_0x3b4b0a){_0x236cf8=_0x3b4b0a[_0x2bfa('0x9c')];}})[_0x2bfa('0x1b')](function(){return db['ChatWebsite']['find'](_0x19d404);})['then'](handleEntityNotFound(_0x582d50,null))['then'](function(_0x516d50){if(_0x516d50){if(!_['isNil'](_0x516d50[_0x2bfa('0x8e')])){if(fs[_0x2bfa('0x9d')](path['join'](config[_0x2bfa('0x98')],'server/files/images/logos/',_0x516d50[_0x2bfa('0x8e')]))&&_0x236cf8){_0x2e3333=path[_0x2bfa('0x97')](config[_0x2bfa('0x98')],_0x2bfa('0x9e'),_0x516d50[_0x2bfa('0x8e')]);}}return _0x582d50[_0x2bfa('0x9f')](_0x2e3333);}})[_0x2bfa('0x26')](handleError(_0x582d50,null));};exports['getAvatar']=function(_0x48272d,_0x36c399){var _0x53cd70=path[_0x2bfa('0x97')](config[_0x2bfa('0x98')],_0x2bfa('0xa0'));var _0x1ea95f={'where':{'id':_0x48272d[_0x2bfa('0x7f')]['id']},'attributes':['id',_0x2bfa('0x91')],'raw':!![]};return db[_0x2bfa('0x5d')][_0x2bfa('0x75')](_0x1ea95f)['then'](handleEntityNotFound(_0x36c399,null))[_0x2bfa('0x1b')](function(_0x46f61d){if(_0x46f61d){if(!_[_0x2bfa('0xa1')](_0x46f61d[_0x2bfa('0x91')])){if(fs[_0x2bfa('0x9d')](path['join'](config[_0x2bfa('0x98')],_0x2bfa('0xa2'),_0x46f61d[_0x2bfa('0x91')]))){_0x53cd70=path[_0x2bfa('0x97')](config[_0x2bfa('0x98')],_0x2bfa('0xa2'),_0x46f61d[_0x2bfa('0x91')]);}}return _0x36c399[_0x2bfa('0x9f')](_0x53cd70);}})[_0x2bfa('0x26')](handleError(_0x36c399,null));};exports[_0x2bfa('0xa3')]=function(_0x5e43d8,_0x269e2c){var _0x376e84=path[_0x2bfa('0x97')](config[_0x2bfa('0x98')],_0x2bfa('0xa4'));var _0x20439e={'where':{'id':_0x5e43d8[_0x2bfa('0x7f')]['id']},'attributes':['id','customerAvatar',_0x2bfa('0xa5')],'raw':!![]};return db[_0x2bfa('0x5d')][_0x2bfa('0x75')](_0x20439e)[_0x2bfa('0x1b')](handleEntityNotFound(_0x269e2c,null))[_0x2bfa('0x1b')](function(_0x719327){if(_0x719327){if(!_['isNil'](_0x719327['customerAvatar'])){if(fs['existsSync'](path[_0x2bfa('0x97')](config[_0x2bfa('0x98')],'server/files/images/avatars/',_0x719327[_0x2bfa('0x93')]))&&_0x719327[_0x2bfa('0xa5')]){_0x376e84=path[_0x2bfa('0x97')](config[_0x2bfa('0x98')],_0x2bfa('0xa2'),_0x719327['customerAvatar']);}}return _0x269e2c['download'](_0x376e84);}})[_0x2bfa('0x26')](handleError(_0x269e2c,null));};exports[_0x2bfa('0xa6')]=function(_0x1df8eb,_0x5ea865){var _0x2b0cdb=path[_0x2bfa('0x97')](config['root'],'server/files/images/avatars/system_avatar.png');var _0x3c1a54={'where':{'id':_0x1df8eb['params']['id']},'attributes':['id',_0x2bfa('0x95')],'raw':!![]};return db[_0x2bfa('0x5d')][_0x2bfa('0x75')](_0x3c1a54)['then'](handleEntityNotFound(_0x5ea865,null))['then'](function(_0x203dd8){if(_0x203dd8){if(!_['isNil'](_0x203dd8[_0x2bfa('0x95')])){if(fs[_0x2bfa('0x9d')](path['join'](config[_0x2bfa('0x98')],_0x2bfa('0xa2'),_0x203dd8[_0x2bfa('0x95')]))){_0x2b0cdb=path[_0x2bfa('0x97')](config['root'],_0x2bfa('0xa2'),_0x203dd8[_0x2bfa('0x95')]);}}return _0x5ea865[_0x2bfa('0x9f')](_0x2b0cdb);}})[_0x2bfa('0x26')](handleError(_0x5ea865,null));};exports[_0x2bfa('0xa7')]=function(_0x3dacec,_0x180901){var _0x15fa37={'body':_0x3dacec[_0x2bfa('0x77')],'channel':_0x2bfa('0xa8')};var _0x54467f=[];var _0x26c6a2=[];var _0x208c76={};var _0x358fad=![];return db['CmContact']['describe']()[_0x2bfa('0x1b')](function(_0x1ff36e){if(!_0x1ff36e){throw new db[(_0x2bfa('0xa9'))]['ValidationError'](_0x2bfa('0xaa'));}_0x54467f=_['difference'](_[_0x2bfa('0x60')](_0x1ff36e),[_0x2bfa('0xab'),_0x2bfa('0xac')]);_0x26c6a2=_[_0x2bfa('0xad')](_[_0x2bfa('0x60')](_0x1ff36e),[_0x2bfa('0xab'),_0x2bfa('0xac'),_0x2bfa('0xae'),'ListId']);if(_0x3dacec[_0x2bfa('0x77')]['id']){delete _0x3dacec['body']['id'];}if(_[_0x2bfa('0xa1')](_0x3dacec[_0x2bfa('0x77')]['from'])){throw new db[(_0x2bfa('0xa9'))][(_0x2bfa('0xaf'))]('from\x20is\x20mandatory');}if(_[_0x2bfa('0xa1')](_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0x77')])||_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0x77')]===''){throw new db[(_0x2bfa('0xa9'))][(_0x2bfa('0xaf'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x2bfa('0xa1')](_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0xb0')])){throw new db['Sequelize']['ValidationError']('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x26c6a2);}if(!_['includes'](_0x26c6a2,_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0xb0')])){throw new db[(_0x2bfa('0xa9'))]['ValidationError'](_0x2bfa('0xb1')+_0x26c6a2);}_0x208c76[_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0xb0')]]=_0x3dacec['body'][_0x2bfa('0xb2')];})[_0x2bfa('0x1b')](function(){return db['ChatWebsite'][_0x2bfa('0x75')]({'where':{'id':_0x3dacec[_0x2bfa('0x7f')]['id']},'include':[{'model':db[_0x2bfa('0xb3')],'as':_0x2bfa('0xb4'),'include':[{'model':db[_0x2bfa('0xb5')],'as':_0x2bfa('0xb6'),'where':_0x208c76,'limit':0x1,'order':[[_0x2bfa('0xac'),_0x2bfa('0xb7')]]}]},{'model':db[_0x2bfa('0xb8')],'as':_0x2bfa('0xb9')},{'model':db['Interval'],'as':'Interval','include':[{'model':db[_0x2bfa('0x42')],'as':_0x2bfa('0x43'),'attributes':['id',_0x2bfa('0x3b')],'raw':!![]}]}]});})['then'](function(_0x31fd26){if(!_0x31fd26)throw new APINotFoundError(util[_0x2bfa('0x39')](_0x2bfa('0xba'),_0x3dacec[_0x2bfa('0x7f')]['id']));if(!_0x31fd26[_0x2bfa('0x42')]||!_0x31fd26['Interval'][_0x2bfa('0x43')])return[_0x31fd26,!![]];return[_0x31fd26,checkWebsiteIntervals(_0x31fd26)];})[_0x2bfa('0xbb')](function(_0x30af9b,_0x226e26){if(!_0x226e26)throw new APIOutOfIntervalError();if(!_0x30af9b[_0x2bfa('0xb4')])return;_0x15fa37[_0x2bfa('0xbc')]=_0x30af9b;_0x15fa37[_0x2bfa('0xbd')]=_0x30af9b[_0x2bfa('0xb4')];_0x15fa37['applications']=_[_0x2bfa('0xbe')](_0x30af9b[_0x2bfa('0xb9')],['priority'],[_0x2bfa('0xbf')]);if(_0x15fa37['account']['Applications']){delete _0x15fa37['account'][_0x2bfa('0xb9')];}if(_0x15fa37[_0x2bfa('0xbc')][_0x2bfa('0xb4')]&&_0x15fa37[_0x2bfa('0xbc')]['List'][_0x2bfa('0xb6')]['length']){return _0x15fa37['account'][_0x2bfa('0xb4')][_0x2bfa('0xb6')][0x0];}var _0x49ce92=_['defaults'](_0x3dacec[_0x2bfa('0x77')],{'firstName':_0x3dacec['body'][_0x2bfa('0xb2')],'ListId':_0x30af9b['ListId']});_0x49ce92[_0x3dacec[_0x2bfa('0x77')]['mapKey']]=_0x3dacec['body'][_0x2bfa('0xb2')];return db[_0x2bfa('0xb5')][_0x2bfa('0x76')](_0x49ce92,{'fields':_0x54467f,'raw':!![]});})[_0x2bfa('0x1b')](function(_0x40e5d7){_0x15fa37[_0x2bfa('0xc0')]=_0x40e5d7;var _0x1de949=createInteractionObject(_0x3dacec['params']['id'],_0x3dacec[_0x2bfa('0x77')],_0x3dacec[_0x2bfa('0xc1')],_0x40e5d7);var _0xd31de6={'ChatWebsiteId':_0x3dacec[_0x2bfa('0x7f')]['id'],'closed':![]};if(_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0xc2')]){_0xd31de6[_0x2bfa('0xc2')]=_0x3dacec['body'][_0x2bfa('0xc2')];return db[_0x2bfa('0xc3')][_0x2bfa('0x75')]({'where':_0xd31de6})[_0x2bfa('0x1b')](function(_0x2d1e83){if(_0x2d1e83){_0x358fad=!![];return _0x2d1e83;}_0x1de949[_0x2bfa('0xc2')]=_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0xc2')];_0x1de949[_0x2bfa('0xc4')]=_0x3dacec['body'][_0x2bfa('0xc4')];return db['ChatInteraction']['create'](_0x1de949);});}_0xd31de6[_0x2bfa('0xc5')]=_0x40e5d7['id'];if(_0x3dacec['body'][_0x2bfa('0xc6')]&&_0x3dacec[_0x2bfa('0x77')]['interaction']['id']){_0xd31de6['id']=_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0xc6')]['id'];return db[_0x2bfa('0xc3')][_0x2bfa('0x75')]({'where':_0xd31de6})[_0x2bfa('0x1b')](function(_0x21a86e){if(_0x21a86e){_0x358fad=!![];return _0x21a86e;}return db[_0x2bfa('0xc3')][_0x2bfa('0x76')](_0x1de949);});}return db['ChatInteraction'][_0x2bfa('0x76')](_0x1de949);})[_0x2bfa('0x1b')](function(_0x4f9f81){if(!_0x358fad)return _0x4f9f81;var _0x182930={'from':(_0x15fa37['contact'][_0x2bfa('0x4d')]||'')+'\x20'+(_0x15fa37[_0x2bfa('0xc0')][_0x2bfa('0x4e')]||'')};if(_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0xc2')]&&_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0xc7')]&&_0x3dacec[_0x2bfa('0x77')]['threadId']!=_0x3dacec['body'][_0x2bfa('0xc7')]){_0x182930[_0x2bfa('0xc2')]=_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0xc7')];}return _0x4f9f81[_0x2bfa('0x2f')](_0x182930);})[_0x2bfa('0x1b')](function(_0x47a5ff){_0x15fa37['interaction']=_0x47a5ff[_0x2bfa('0x79')]({'plain':!![]});_0x15fa37['interaction'][_0x2bfa('0xc8')]=!_0x358fad;if(_0x15fa37[_0x2bfa('0xc6')][_0x2bfa('0xc8')]){if(_0x15fa37['account'][_0x2bfa('0xc9')]){_0x15fa37[_0x2bfa('0xca')]['push']({'id':0x0,'priority':_0x15fa37[_0x2bfa('0xca')][_0x2bfa('0x64')]+0x1,'app':_0x2bfa('0xcb'),'appdata':_0x2bfa('0xcc'),'interval':_0x2bfa('0xcd')});}}return db[_0x2bfa('0xce')]['create']({'body':_0x3dacec[_0x2bfa('0x77')][_0x2bfa('0x77')],'ChatWebsiteId':_0x3dacec[_0x2bfa('0x7f')]['id'],'ChatInteractionId':_0x47a5ff['id'],'direction':'in','ContactId':_0x15fa37[_0x2bfa('0xc0')]['id'],'AttachmentId':_0x3dacec['body'][_0x2bfa('0xcf')]});})['then'](function(_0x1b591e){_0x15fa37[_0x2bfa('0x24')]=_0x1b591e;if(!_0x15fa37[_0x2bfa('0xc6')][_0x2bfa('0xd0')]){return;}return db['User'][_0x2bfa('0x75')]({'attributes':['id',_0x2bfa('0x35')],'where':{'id':_0x15fa37[_0x2bfa('0xc6')][_0x2bfa('0xd0')]}});})[_0x2bfa('0x1b')](function(_0xaa4973){if(_0xaa4973){_0x15fa37['applications'][_0x2bfa('0xd1')]({'id':0x0,'priority':0x0,'app':_0x2bfa('0xd2'),'appdata':_0xaa4973[_0x2bfa('0x35')]+','+(_0x15fa37[_0x2bfa('0xbc')]['waitForTheAssignedAgent']||0xa),'interval':_0x2bfa('0xcd')});_0x15fa37[_0x2bfa('0xd3')]=!![];}if(!_0x15fa37[_0x2bfa('0xc6')][_0x2bfa('0xd4')]){return;}return db[_0x2bfa('0xd5')]['find']({'attributes':['id',_0x2bfa('0x35')],'where':{'id':_0x15fa37[_0x2bfa('0xc6')][_0x2bfa('0xd4')]}});})[_0x2bfa('0x1b')](function(_0x2f796a){if(_0x2f796a){_0x15fa37[_0x2bfa('0xca')][_0x2bfa('0xd1')]({'id':0x0,'priority':0x1,'app':'queue','appdata':_0x2f796a[_0x2bfa('0x35')]+','+(_0x15fa37[_0x2bfa('0xbc')][_0x2bfa('0xd6')]||0x12c),'interval':_0x2bfa('0xcd')});}return respondWithRpcPromise(_0x2bfa('0xd7'),_0x2bfa('0xd8'),_0x15fa37);})[_0x2bfa('0x1b')](function(_0x211eef){respondWithRpcPromise('EventManager',_0x2bfa('0xd9'),{'event':_0x2bfa('0xa7'),'message':_0x211eef},client9002);return _0x211eef;})[_0x2bfa('0x1b')](respondWithResult(_0x180901,null))[_0x2bfa('0x26')](APIHandleError(_0x180901));};exports[_0x2bfa('0xda')]=function(_0x44abc3,_0x33cc47){var _0x3ff7d6,_0x20400f,_0x148e02;var _0x1a3a36=[];var _0x76011c={};var _0x3756f0=_0x44abc3[_0x2bfa('0xdb')]||[];var _0x2ec837=[];var _0x1f8212;return db[_0x2bfa('0xb5')][_0x2bfa('0x80')]()[_0x2bfa('0x1b')](function(_0x56e959){if(!_0x56e959){throw new db[(_0x2bfa('0xa9'))][(_0x2bfa('0xaf'))](_0x2bfa('0xaa'));}_0x1a3a36=_[_0x2bfa('0xad')](_[_0x2bfa('0x60')](_0x56e959),[_0x2bfa('0xab'),_0x2bfa('0xac'),_0x2bfa('0xae'),_0x2bfa('0xdc')]);if(_0x44abc3[_0x2bfa('0x77')]['id']){delete _0x44abc3[_0x2bfa('0x77')]['id'];}if(_[_0x2bfa('0xa1')](_0x44abc3[_0x2bfa('0x77')][_0x2bfa('0xb2')])){throw _0x33cc47['status'](0x1f4)[_0x2bfa('0x36')](new db[(_0x2bfa('0xa9'))]['ValidationError'](_0x2bfa('0xdd')));}if(_[_0x2bfa('0xa1')](_0x44abc3[_0x2bfa('0x77')][_0x2bfa('0x77')])||_0x44abc3[_0x2bfa('0x77')][_0x2bfa('0x77')]===''){throw _0x33cc47['status'](0x1f4)['send'](new db[(_0x2bfa('0xa9'))][(_0x2bfa('0xaf'))](_0x2bfa('0xde')));}if(_['isNil'](_0x44abc3[_0x2bfa('0x77')][_0x2bfa('0xdf')])){throw _0x33cc47[_0x2bfa('0x33')](0x1f4)[_0x2bfa('0x36')](new db[(_0x2bfa('0xa9'))][(_0x2bfa('0xaf'))](_0x2bfa('0xe0')+_0x1a3a36));}if(!_[_0x2bfa('0xe1')](_0x1a3a36,_0x44abc3[_0x2bfa('0x77')][_0x2bfa('0xdf')])){throw _0x33cc47[_0x2bfa('0x33')](0x1f4)[_0x2bfa('0x36')](new db['Sequelize']['ValidationError'](_0x2bfa('0xe2')+_0x1a3a36));}_0x76011c[_0x44abc3[_0x2bfa('0x77')][_0x2bfa('0xdf')]]=_0x44abc3[_0x2bfa('0x77')]['from'];})[_0x2bfa('0x1b')](function(){return db[_0x2bfa('0x5d')][_0x2bfa('0x75')]({'where':{'id':_0x44abc3[_0x2bfa('0x7f')]['id']},'include':[{'model':db[_0x2bfa('0xb3')],'as':_0x2bfa('0xb4')},{'model':db[_0x2bfa('0xe3')],'as':_0x2bfa('0xe3')}]});})[_0x2bfa('0x1b')](handleEntityNotFound(_0x33cc47,null))['then'](function(_0x4e90b4){if(_0x4e90b4&&_0x4e90b4['List']){_0x20400f=_0x4e90b4;var _0x34e793=_[_0x2bfa('0xe4')](_0x44abc3[_0x2bfa('0x77')],{'firstName':_0x44abc3[_0x2bfa('0x77')]['from'],'phone':_0x44abc3[_0x2bfa('0x77')]['from'],'ListId':_0x4e90b4[_0x2bfa('0xdc')]});_0x34e793[_0x44abc3[_0x2bfa('0x77')]['mapKeyOffline']]=_0x44abc3[_0x2bfa('0x77')][_0x2bfa('0xb2')];return db['CmContact'][_0x2bfa('0xe5')]({'where':_0x76011c,'defaults':_0x34e793});}})[_0x2bfa('0xbb')](function(_0x331a81){if(_0x331a81){_0x148e02=_0x331a81;var _0x1999ec=fs['readFileSync'](path[_0x2bfa('0x97')](config[_0x2bfa('0x98')],_0x2bfa('0xe6')),'utf8');var _0x6b82b7=ejs[_0x2bfa('0xe7')](_0x1999ec,{'body':_[_0x2bfa('0xe8')](_0x44abc3['body'][_0x2bfa('0x77')]),'bodyTitle':_0x20400f[_0x2bfa('0xe9')]});return db['ChatOfflineMessage'][_0x2bfa('0x76')]({'body':_0x6b82b7,'plainBody':htmlToText['fromString'](_0x6b82b7),'ContactId':_0x331a81['id'],'ChatWebsiteId':_0x20400f['id']});}})[_0x2bfa('0x1b')](function(_0x4f18d6){_0x1f8212=_0x4f18d6;if(_0x3756f0[_0x2bfa('0x64')]){var _0x33c51a=_0x3756f0[_0x2bfa('0x41')](function(_0x99d7a5){return{'name':_0x99d7a5[_0x2bfa('0xea')],'basename':_0x99d7a5[_0x2bfa('0x90')],'type':_0x99d7a5['mimetype'],'ChatOfflineMessageId':_0x4f18d6['id']};});_0x2ec837=_0x33c51a[_0x2bfa('0x41')](_0x3ccacf=>{var _0x372206={'filename':_0x3ccacf[_0x2bfa('0x35')],'path':path[_0x2bfa('0x97')](config['root'],'server',_0x2bfa('0xdb'),_0x2bfa('0xeb'),_0x2bfa('0xec'),_0x3ccacf[_0x2bfa('0xed')])};return _0x372206;});if(!_0x20400f[_0x2bfa('0xee')]){return db[_0x2bfa('0xef')][_0x2bfa('0xf0')](function(_0x17fb19){return db[_0x2bfa('0xf1')][_0x2bfa('0xf2')](_0x33c51a,{'transaction':_0x17fb19});});}}})[_0x2bfa('0x1b')](function(){if(_0x1f8212){_0x3ff7d6=_0x1f8212;return db[_0x2bfa('0xe3')][_0x2bfa('0x84')]({'where':{'service':!![]},'include':[{'model':db[_0x2bfa('0xf3')],'as':_0x2bfa('0xf4'),'raw':!![],'include':[{'model':db[_0x2bfa('0xf5')],'as':_0x2bfa('0xf5'),'raw':!![]}]}]});}})[_0x2bfa('0x1b')](function(_0x490ee9){if(_0x490ee9&&_0x490ee9[_0x2bfa('0xf4')]&&_0x20400f[_0x2bfa('0xf6')]&&_0x20400f[_0x2bfa('0xf7')]){var _0x339777=_0x490ee9[_0x2bfa('0xf8')]();return respondWithRpcPromise(_0x2bfa('0xf9'),_0x2bfa('0xfa'),{'account':_0x339777,'message':{'from':util[_0x2bfa('0x39')]('\x22%s\x22\x20<%s>',_0x490ee9[_0x2bfa('0x35')],_0x490ee9[_0x2bfa('0xfb')]||_0x490ee9['Smtp']['user']),'to':_0x20400f['forwardOfflineAddress'],'subject':_0x20400f['offlineMessageSubject'],'html':_0x3ff7d6[_0x2bfa('0x77')],'attachments':_0x2ec837}},client9003)[_0x2bfa('0x1b')](function(){return _0x3ff7d6;})[_0x2bfa('0x26')](function(_0x31a3a2){logger[_0x2bfa('0x22')](_0x31a3a2);});}})[_0x2bfa('0x1b')](function(){if(_0x20400f&&_0x20400f[_0x2bfa('0xee')]&&_0x20400f[_0x2bfa('0xfc')]){var _0x88815c=[];if(_0x3756f0[_0x2bfa('0x64')]){_0x88815c=_0x3756f0[_0x2bfa('0x41')](function(_0x4a6497){return{'name':_0x4a6497[_0x2bfa('0xea')],'basename':_0x4a6497[_0x2bfa('0x90')],'type':_0x4a6497[_0x2bfa('0xfd')],'ChatOfflineMessageId':_0x1f8212['id']};});}var _0x5ac04c;if(!_['isNil'](_0x20400f[_0x2bfa('0xfe')])){var _0x38154d=_[_0x2bfa('0x41')](_0x44abc3[_0x2bfa('0x77')],function(_0x4d5da1){return _0x4d5da1;});var _0x3d1eb3=_[_0x2bfa('0xff')](_0x38154d)[0x0];var _0x4cab40=_['mapValues'](_0x3d1eb3,function(_0x4136f1){return _0x4136f1;});_0x5ac04c=_0x4cab40[0x1][_0x20400f[_0x2bfa('0xfe')]];}var _0x1861b0={'from':_0x148e02[_0x2bfa('0xfb')],'firstName':_0x148e02['firstName'],'lastName':_0x148e02[_0x2bfa('0x4e')],'mapKey':'email','message':{'from':_0x148e02[_0x2bfa('0xfb')],'to':_0x20400f['MailAccount']['email'],'cc':'','subject':_[_0x2bfa('0xa1')](_0x5ac04c)?_0x20400f['offlineMessageSubject']:_0x5ac04c,'messageId':'','sentAt':new Date(),'attach':_0x88815c[_0x2bfa('0x64')],'attachments':_0x88815c,'originChannel':_0x2bfa('0x100'),'ChatWebsiteId':_0x20400f['id'],'ChatOfflineMessageId':_0x3ff7d6['id'],'originTo':_0x20400f['MailAccount'][_0x2bfa('0xfb')]},'body':_0x3ff7d6['body']};var _0x2a4881={'account':{'id':_0x20400f[_0x2bfa('0xfc')]},'body':_0x1861b0,'log':_0x2bfa('0x101')};return respondWithRpcPromise('NotifyMailAccount','notifyMail',_0x2a4881,client9001)[_0x2bfa('0x1b')](function(){return _0x3ff7d6;})[_0x2bfa('0x26')](function(_0x31498a){logger[_0x2bfa('0x22')](_0x31498a);});}return;})[_0x2bfa('0x1b')](function(){if(_0x3ff7d6){return _0x3ff7d6;}})['then'](respondWithResult(_0x33cc47,null))['catch'](function(){for(var _0xc5aee1 of _0x3756f0){var _0x17c10b=path['join'](config['root'],_0x2bfa('0x102'),_0x2bfa('0xdb'),_0x2bfa('0xeb'),_0x2bfa('0xec'),_0xc5aee1[_0x2bfa('0x90')]);fs_extra['remove'](_0x17c10b)[_0x2bfa('0x26')](function(_0x5cdc5d){logger['error'](_0x2bfa('0x103'),_0x17c10b,_0x5cdc5d);});}});};exports[_0x2bfa('0x104')]=function(_0x1c58ed,_0x4a8d2b){return db[_0x2bfa('0xc3')][_0x2bfa('0x75')]({'where':{'id':_0x1c58ed['params']['id']}})['then'](handleEntityNotFound(_0x4a8d2b,null))['then'](function(_0x541428){if(_0x541428){return _0x541428['addInteraction'](_0x1c58ed[_0x2bfa('0x77')][_0x2bfa('0x87')],_[_0x2bfa('0x105')](_0x1c58ed['body'],[_0x2bfa('0x87'),'id'])||{});}})['then'](respondWithResult(_0x4a8d2b,null))['catch'](handleError(_0x4a8d2b,null));};exports['getInteractions']=function(_0x104cc6,_0x32e959){var _0x1c408f={'raw':![],'where':{}};var _0x60b81={};var _0x1dfe17={'count':0x0,'rows':[]};return db[_0x2bfa('0x5d')][_0x2bfa('0x84')]({'where':{'id':_0x104cc6[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x32e959,null))[_0x2bfa('0x1b')](function(_0x44f99e){if(_0x44f99e){_0x60b81['model']=_[_0x2bfa('0x60')](db['ChatInteraction'][_0x2bfa('0x85')]);_0x60b81[_0x2bfa('0x5f')]=_['keys'](_0x104cc6[_0x2bfa('0x5f')]);_0x60b81[_0x2bfa('0x6a')]=_[_0x2bfa('0x62')](_0x60b81[_0x2bfa('0x56')],_0x60b81[_0x2bfa('0x5f')]);_0x1c408f[_0x2bfa('0x61')]=_['intersection'](_0x60b81['model'],qs['fields'](_0x104cc6[_0x2bfa('0x5f')][_0x2bfa('0x63')]));_0x1c408f[_0x2bfa('0x61')]=_0x1c408f[_0x2bfa('0x61')][_0x2bfa('0x64')]?_0x1c408f[_0x2bfa('0x61')]:_0x60b81[_0x2bfa('0x56')];if(!_0x104cc6['query'][_0x2bfa('0x65')](_0x2bfa('0x66'))){_0x1c408f[_0x2bfa('0x67')]=qs[_0x2bfa('0x67')](_0x104cc6[_0x2bfa('0x5f')]['limit']);_0x1c408f[_0x2bfa('0x2a')]=qs[_0x2bfa('0x2a')](_0x104cc6[_0x2bfa('0x5f')]['offset']);}_0x1c408f[_0x2bfa('0x8b')]=qs['sort'](_0x104cc6['query'][_0x2bfa('0x68')]);_0x1c408f[_0x2bfa('0x69')]=qs[_0x2bfa('0x6a')](_[_0x2bfa('0x6b')](_0x104cc6['query'],_0x60b81[_0x2bfa('0x6a')]));_0x1c408f['where'][_0x2bfa('0x82')]=_0x44f99e['id'];if(_0x104cc6[_0x2bfa('0x5f')]['filter']){_0x1c408f[_0x2bfa('0x69')]=_[_0x2bfa('0x6d')](_0x1c408f[_0x2bfa('0x69')],{'$or':_[_0x2bfa('0x41')](_0x1c408f[_0x2bfa('0x61')],function(_0x4a4cd4){var _0x3b32ee={};_0x3b32ee[_0x4a4cd4]={'$like':'%'+_0x104cc6[_0x2bfa('0x5f')][_0x2bfa('0x6c')]+'%'};return _0x3b32ee;})});}_0x1c408f=_['merge']({},_0x1c408f,_0x104cc6[_0x2bfa('0x6f')]);return db[_0x2bfa('0xc3')][_0x2bfa('0x2c')]({'where':_0x1c408f[_0x2bfa('0x69')]})[_0x2bfa('0x1b')](function(_0x431c26){_0x1dfe17[_0x2bfa('0x2c')]=_0x431c26;if(_0x104cc6[_0x2bfa('0x5f')]['includeAll']){_0x1c408f[_0x2bfa('0x71')]=[{'model':db[_0x2bfa('0xb5')],'as':_0x2bfa('0x106'),'required':![]},{'model':db[_0x2bfa('0x107')],'as':_0x2bfa('0x108'),'attributes':[_0x2bfa('0x35'),_0x2bfa('0x109'),_0x2bfa('0x10a')],'required':![]},{'model':db[_0x2bfa('0x10b')],'as':'Tags','attributes':['id',_0x2bfa('0x35'),_0x2bfa('0x10c')],'where':_0x104cc6[_0x2bfa('0x5f')][_0x2bfa('0x10d')]?{'id':_0x104cc6[_0x2bfa('0x5f')]['tag']}:undefined,'required':_0x104cc6[_0x2bfa('0x5f')]['tag']?!![]:![]}];}return db[_0x2bfa('0xc3')]['findAll'](_0x1c408f);})['then'](function(_0x4e2a10){_0x1dfe17[_0x2bfa('0x73')]=_0x4e2a10;return _0x1dfe17;});}})[_0x2bfa('0x1b')](respondWithFilteredResult(_0x32e959,_0x1c408f))[_0x2bfa('0x26')](handleError(_0x32e959,null));};exports['getSnippet']=function(_0x275991,_0x43e6d7){var _0x4e7b6f=0x0;var _0x32e544=0x0;var _0x3fe2f2=![];var _0x49c450;var _0x10c555;return db['ChatWebsite'][_0x2bfa('0x75')]({'where':{'id':_0x275991['params']['id']},'include':[{'model':db[_0x2bfa('0x42')],'as':_0x2bfa('0x42'),'include':[{'model':db['Interval'],'as':_0x2bfa('0x43'),'attributes':['id',_0x2bfa('0x3b')]}]}]})[_0x2bfa('0x1b')](handleEntityNotFound(_0x43e6d7,null))[_0x2bfa('0x1b')](function(_0x3f649f){if(_0x3f649f){_0x49c450=_0x3f649f;return _0x3f649f['getProactiveActions']({'raw':!![]});}})[_0x2bfa('0x1b')](function(_0x31624a){if(_0x49c450){if(_0x31624a){_0x10c555=_0x31624a;}}return require(_0x2bfa('0x9a'))[_0x2bfa('0x9b')]();})[_0x2bfa('0x1b')](function(_0x285fff){if(_0x285fff){_0x32e544=_0x285fff[_0x2bfa('0x10e')];_0x3fe2f2=_0x285fff[_0x2bfa('0x9c')];}})['then'](function(){return db[_0x2bfa('0xc3')][_0x2bfa('0x2c')]({'where':{'closed':![]}});})[_0x2bfa('0x1b')](function(_0xba882d){_0x4e7b6f=_0xba882d;if(_0x32e544&&_0xba882d>_0x32e544){return db[_0x2bfa('0x10f')][_0x2bfa('0x84')]({'where':{'id':0x1}})[_0x2bfa('0x1b')](function(_0x149b3d){if(_0x149b3d){_0x149b3d[_0x2bfa('0x110')](_0x2bfa('0x111'));}});}})['then'](function(){if(!_0x49c450['Interval']||!_0x49c450[_0x2bfa('0x42')][_0x2bfa('0x43')])return!![];return checkWebsiteIntervals(_0x49c450);})[_0x2bfa('0x1b')](function(_0x4976d8){var _0x504abe=fs['readFileSync'](path[_0x2bfa('0x97')](config[_0x2bfa('0x98')],_0x2bfa('0x112')),'utf8');var _0x2f0774=new url[(_0x2bfa('0x113'))](_0x49c450[_0x2bfa('0x114')])[_0x2bfa('0x115')];var _0xe479e0=_0x2bfa('0x116');var _0x57bf32=![];var _0x1fbe7d={'chatVersion':_0xe479e0,'chatWebsiteAddressOrigin':_0x2f0774,'remote':_0x49c450[_0x2bfa('0x117')],'query':querystring[_0x2bfa('0x21')](_[_0x2bfa('0x6d')](_0x49c450[_0x2bfa('0x79')]({'plain':!![]}),{'customerIp':_0x275991['headers']['x-forwarded-for']||_0x275991[_0x2bfa('0xc1')][_0x2bfa('0x118')]||_0x275991[_0x2bfa('0x119')][_0x2bfa('0x11a')]||_0x275991['ip'],'referer':_0x275991['headers'][_0x2bfa('0x50')],'openedInteractions':_0x4e7b6f,'maxInteractions':_0x32e544,'virtual':_0x3fe2f2[_0x2bfa('0x10e')],'online':_0x4976d8,'custom':_0x3fe2f2}))[_0x2bfa('0x11b')](/'/g,'\x5c\x27')};_0x43e6d7[_0x2bfa('0x36')](ejs[_0x2bfa('0xe7')](Mustache[_0x2bfa('0xe7')](_0x504abe,_0x1fbe7d),{'proactiveActions':_0x10c555,'alignment':_0x49c450['alignment'],'verticalAlignment':_0x49c450[_0x2bfa('0x11c')],'div_color':_0x49c450[_0x2bfa('0x10c')],'labelText':_0x49c450[_0x2bfa('0x11d')],'text_color':_0x49c450[_0x2bfa('0x11e')],'text_button_color':_0x49c450[_0x2bfa('0x11f')],'button_color':_0x49c450[_0x2bfa('0x120')],'background_color':_0x49c450[_0x2bfa('0x121')],'hideWhenOffline':_0x49c450[_0x2bfa('0x122')],'intervalId':_0x49c450[_0x2bfa('0x123')],'isDevelopment':_0x57bf32,'chatVersion':_0xe479e0}));})[_0x2bfa('0x26')](handleError(_0x43e6d7,null));};exports[_0x2bfa('0x124')]=function(_0x20b3e1,_0x1570cf){var _0x13610d=_0x20b3e1[_0x2bfa('0x7f')]['id'];var _0x369c29=_0x20b3e1[_0x2bfa('0x77')];var _0x1b36f0=0xc8;var _0x51d408=null;return db['sequelize'][_0x2bfa('0xf0')]({'isolationLevel':db['sequelize']['Transaction'][_0x2bfa('0x125')][_0x2bfa('0x126')]},function(_0x17f7db){return db[_0x2bfa('0x5d')]['findOne']({'where':{'id':_0x13610d},'transaction':_0x17f7db})[_0x2bfa('0x1b')](function(_0x510d09){if(_0x510d09){return db['ChatApplication'][_0x2bfa('0x30')]({'where':{'ChatWebsiteId':_0x13610d},'transaction':_0x17f7db})[_0x2bfa('0x1b')](function(){var _0x159a3e=_['map'](_0x369c29,function(_0x4b991e){_0x4b991e['ChatWebsiteId']=_0x13610d;return _0x4b991e;});return db[_0x2bfa('0xb8')][_0x2bfa('0xf2')](_0x159a3e,{'transaction':_0x17f7db});});}else{_0x1b36f0=0x194;_0x51d408=[];}});})['then'](function(){if(_0x1b36f0!==0x194){return db[_0x2bfa('0xb8')][_0x2bfa('0x127')]({'where':{'ChatWebsiteId':_0x13610d},'order':_0x2bfa('0x128')})[_0x2bfa('0x1b')](function(_0xc0d91){_0x51d408=_0xc0d91;});}})[_0x2bfa('0x26')](function(_0x2510a2){_0x1b36f0=0x1f4;logger[_0x2bfa('0x22')](_0x2510a2[_0x2bfa('0x34')]);if(_0x2510a2[_0x2bfa('0x35')]){delete _0x2510a2[_0x2bfa('0x35')];}_0x51d408=_0x2510a2;})[_0x2bfa('0x129')](function(){if(_0x51d408===null){_0x1570cf[_0x2bfa('0x27')](_0x1b36f0);}else{if(_0x1b36f0===0x1f4){_0x1570cf[_0x2bfa('0x33')](_0x1b36f0)[_0x2bfa('0x36')](_0x51d408);}else{_0x1570cf[_0x2bfa('0x33')](_0x1b36f0)[_0x2bfa('0x29')](_0x51d408);}}});};exports[_0x2bfa('0x12a')]=function(_0x45e4a1,_0x3669f7){var _0x1bd2a8={};var _0x46d786={};var _0x25a537;var _0x20af16;return db[_0x2bfa('0x5d')][_0x2bfa('0x84')]({'where':{'id':_0x45e4a1['params']['id']}})['then'](handleEntityNotFound(_0x3669f7,null))[_0x2bfa('0x1b')](function(_0x3fb515){if(_0x3fb515){_0x25a537=_0x3fb515;_0x46d786[_0x2bfa('0x56')]=_[_0x2bfa('0x60')](db['ChatApplication'][_0x2bfa('0x85')]);_0x46d786[_0x2bfa('0x5f')]=_[_0x2bfa('0x60')](_0x45e4a1[_0x2bfa('0x5f')]);_0x46d786['filters']=_['intersection'](_0x46d786['model'],_0x46d786[_0x2bfa('0x5f')]);_0x1bd2a8[_0x2bfa('0x61')]=_[_0x2bfa('0x62')](_0x46d786[_0x2bfa('0x56')],qs['fields'](_0x45e4a1[_0x2bfa('0x5f')]['fields']));_0x1bd2a8[_0x2bfa('0x61')]=_0x1bd2a8[_0x2bfa('0x61')][_0x2bfa('0x64')]?_0x1bd2a8[_0x2bfa('0x61')]:_0x46d786[_0x2bfa('0x56')];_0x1bd2a8[_0x2bfa('0x8b')]=qs['sort'](_0x45e4a1['query']['sort']);_0x1bd2a8[_0x2bfa('0x69')]=qs[_0x2bfa('0x6a')](_[_0x2bfa('0x6b')](_0x45e4a1[_0x2bfa('0x5f')],_0x46d786[_0x2bfa('0x6a')]));if(_0x45e4a1[_0x2bfa('0x5f')][_0x2bfa('0x6c')]){_0x1bd2a8['where']=_[_0x2bfa('0x6d')](_0x1bd2a8[_0x2bfa('0x69')],{'$or':_['map'](_0x1bd2a8[_0x2bfa('0x61')],function(_0xa0e5b7){var _0x18b805={};_0x18b805[_0xa0e5b7]={'$like':'%'+_0x45e4a1['query'][_0x2bfa('0x6c')]+'%'};return _0x18b805;})});}_0x1bd2a8=_[_0x2bfa('0x6d')]({},_0x1bd2a8,_0x45e4a1[_0x2bfa('0x6f')]);return _0x25a537[_0x2bfa('0x12a')](_0x1bd2a8);}})[_0x2bfa('0x1b')](function(_0x32093d){if(_0x32093d){_0x20af16=_0x32093d[_0x2bfa('0x64')];if(!_0x45e4a1[_0x2bfa('0x5f')][_0x2bfa('0x65')](_0x2bfa('0x66'))){_0x1bd2a8[_0x2bfa('0x67')]=qs[_0x2bfa('0x67')](_0x45e4a1[_0x2bfa('0x5f')][_0x2bfa('0x67')]);_0x1bd2a8[_0x2bfa('0x2a')]=qs['offset'](_0x45e4a1[_0x2bfa('0x5f')][_0x2bfa('0x2a')]);}return _0x25a537['getApplications'](_0x1bd2a8);}})['then'](function(_0x17f907){if(_0x17f907){return _0x17f907?{'count':_0x20af16,'rows':_0x17f907}:null;}})[_0x2bfa('0x1b')](respondWithResult(_0x3669f7,null))['catch'](handleError(_0x3669f7,null));};exports[_0x2bfa('0x12b')]=function(_0x344fec,_0x2d6b3f){return db['chatProactiveAction']['find']({'where':{'id':_0x344fec[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x2d6b3f,null))[_0x2bfa('0x1b')](function(_0x3e8502){if(_0x3e8502){return _0x3e8502['addProactiveActions'](_0x344fec['body']['ids'],_[_0x2bfa('0x105')](_0x344fec[_0x2bfa('0x77')],['ids','id'])||{});}})['then'](respondWithResult(_0x2d6b3f,null))[_0x2bfa('0x26')](handleError(_0x2d6b3f,null));};exports[_0x2bfa('0x12c')]=function(_0x2d1038,_0x3fbad8){var _0x524f4f={};var _0x3be2f2={};var _0xe72a49;var _0x45ed04;return db[_0x2bfa('0x5d')][_0x2bfa('0x84')]({'where':{'id':_0x2d1038[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x3fbad8,null))[_0x2bfa('0x1b')](function(_0x1f96f7){if(_0x1f96f7){_0xe72a49=_0x1f96f7;_0x3be2f2[_0x2bfa('0x56')]=_['keys'](db[_0x2bfa('0x12d')][_0x2bfa('0x85')]);_0x3be2f2[_0x2bfa('0x5f')]=_[_0x2bfa('0x60')](_0x2d1038['query']);_0x3be2f2['filters']=_['intersection'](_0x3be2f2[_0x2bfa('0x56')],_0x3be2f2[_0x2bfa('0x5f')]);_0x524f4f[_0x2bfa('0x61')]=_['intersection'](_0x3be2f2[_0x2bfa('0x56')],qs[_0x2bfa('0x63')](_0x2d1038[_0x2bfa('0x5f')][_0x2bfa('0x63')]));_0x524f4f[_0x2bfa('0x61')]=_0x524f4f[_0x2bfa('0x61')][_0x2bfa('0x64')]?_0x524f4f[_0x2bfa('0x61')]:_0x3be2f2[_0x2bfa('0x56')];_0x524f4f['order']=qs[_0x2bfa('0x68')](_0x2d1038[_0x2bfa('0x5f')][_0x2bfa('0x68')]);_0x524f4f[_0x2bfa('0x69')]=qs['filters'](_[_0x2bfa('0x6b')](_0x2d1038[_0x2bfa('0x5f')],_0x3be2f2[_0x2bfa('0x6a')]));if(_0x2d1038[_0x2bfa('0x5f')][_0x2bfa('0x6c')]){_0x524f4f[_0x2bfa('0x69')]=_[_0x2bfa('0x6d')](_0x524f4f[_0x2bfa('0x69')],{'$or':_[_0x2bfa('0x41')](_0x524f4f['attributes'],function(_0x37fb84){var _0x50e745={};_0x50e745[_0x37fb84]={'$like':'%'+_0x2d1038[_0x2bfa('0x5f')][_0x2bfa('0x6c')]+'%'};return _0x50e745;})});}_0x524f4f=_[_0x2bfa('0x6d')]({},_0x524f4f,_0x2d1038[_0x2bfa('0x6f')]);return _0xe72a49[_0x2bfa('0x12c')](_0x524f4f);}})[_0x2bfa('0x1b')](function(_0x1c2b6c){if(_0x1c2b6c){_0x45ed04=_0x1c2b6c[_0x2bfa('0x64')];if(!_0x2d1038[_0x2bfa('0x5f')][_0x2bfa('0x65')](_0x2bfa('0x66'))){_0x524f4f[_0x2bfa('0x67')]=qs[_0x2bfa('0x67')](_0x2d1038['query'][_0x2bfa('0x67')]);_0x524f4f[_0x2bfa('0x2a')]=qs[_0x2bfa('0x2a')](_0x2d1038[_0x2bfa('0x5f')][_0x2bfa('0x2a')]);}return _0xe72a49[_0x2bfa('0x12c')](_0x524f4f);}})['then'](function(_0x590532){if(_0x590532){return _0x590532?{'count':_0x45ed04,'rows':_0x590532}:null;}})[_0x2bfa('0x1b')](respondWithResult(_0x3fbad8,null))[_0x2bfa('0x26')](handleError(_0x3fbad8,null));};exports[_0x2bfa('0x12e')]=function(_0x26c658,_0x378129){var _0x39bf9c=_0x26c658[_0x2bfa('0x5f')][_0x2bfa('0x12f')]===_0x2bfa('0x130')?_0x2bfa('0x131'):_0x2bfa('0x132');return db[_0x2bfa('0x5d')][_0x2bfa('0x75')]({'attributes':['id',_0x39bf9c],'where':{'id':_0x26c658[_0x2bfa('0x7f')]['id']}})['then'](handleEntityNotFound(_0x378129,null))[_0x2bfa('0x1b')](function(_0x145163){if(_0x145163){var _0x5c8d1a=_0x145163[_0x39bf9c];var _0x4588b1=_0x5c8d1a&&_0x5c8d1a[_0x2bfa('0x133')]?_0x5c8d1a[_0x2bfa('0x133')]:[];_0x378129[_0x2bfa('0x36')]({'fromKey':_[_0x2bfa('0xa1')](_0x5c8d1a[_0x2bfa('0x134')])?undefined:_0x5c8d1a['fromKey'],'count':_0x4588b1[_0x2bfa('0x64')],'rows':_0x4588b1});}})[_0x2bfa('0x26')](handleError(_0x378129,null));};exports[_0x2bfa('0x135')]=function(_0x43dd1f,_0x52e2ae){var _0x1820a7={'raw':![],'where':{}};var _0x2468ed={};var _0x4a877e={'count':0x0,'rows':[]};return db[_0x2bfa('0x5d')][_0x2bfa('0x84')]({'where':{'id':_0x43dd1f[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x52e2ae,null))[_0x2bfa('0x1b')](function(_0x154254){if(_0x154254){_0x2468ed[_0x2bfa('0x56')]=_[_0x2bfa('0x60')](db[_0x2bfa('0x136')]['rawAttributes']);_0x2468ed[_0x2bfa('0x5f')]=_[_0x2bfa('0x60')](_0x43dd1f[_0x2bfa('0x5f')]);_0x2468ed[_0x2bfa('0x6a')]=_[_0x2bfa('0x62')](_0x2468ed[_0x2bfa('0x56')],_0x2468ed['query']);_0x1820a7[_0x2bfa('0x61')]=_['intersection'](_0x2468ed[_0x2bfa('0x56')],qs[_0x2bfa('0x63')](_0x43dd1f['query'][_0x2bfa('0x63')]));_0x1820a7[_0x2bfa('0x61')]=_0x1820a7[_0x2bfa('0x61')][_0x2bfa('0x64')]?_0x1820a7[_0x2bfa('0x61')]:_0x2468ed[_0x2bfa('0x56')];if(!_0x43dd1f[_0x2bfa('0x5f')][_0x2bfa('0x65')](_0x2bfa('0x66'))){_0x1820a7[_0x2bfa('0x67')]=qs['limit'](_0x43dd1f[_0x2bfa('0x5f')][_0x2bfa('0x67')]);_0x1820a7[_0x2bfa('0x2a')]=qs['offset'](_0x43dd1f['query'][_0x2bfa('0x2a')]);}_0x1820a7[_0x2bfa('0x8b')]=qs[_0x2bfa('0x68')](_0x43dd1f[_0x2bfa('0x5f')]['sort']);_0x1820a7[_0x2bfa('0x69')]=qs[_0x2bfa('0x6a')](_[_0x2bfa('0x6b')](_0x43dd1f['query'],_0x2468ed['filters']));_0x1820a7[_0x2bfa('0x69')][_0x2bfa('0x82')]=_0x154254['id'];if(_0x43dd1f[_0x2bfa('0x5f')][_0x2bfa('0x6c')]){_0x1820a7['where']=_[_0x2bfa('0x6d')](_0x1820a7[_0x2bfa('0x69')],{'$or':_[_0x2bfa('0x41')](_0x1820a7[_0x2bfa('0x61')],function(_0x3cdada){var _0x17ec82={};_0x17ec82[_0x3cdada]={'$like':'%'+_0x43dd1f[_0x2bfa('0x5f')]['filter']+'%'};return _0x17ec82;})});}_0x1820a7=_['merge']({},_0x1820a7,_0x43dd1f[_0x2bfa('0x6f')]);return db['ChatOfflineMessage'][_0x2bfa('0x2c')]({'where':_0x1820a7[_0x2bfa('0x69')]})[_0x2bfa('0x1b')](function(_0x542f23){_0x4a877e[_0x2bfa('0x2c')]=_0x542f23;if(_0x43dd1f['query'][_0x2bfa('0x70')]){_0x1820a7[_0x2bfa('0x71')]=[{'all':!![]}];}else{_0x1820a7['include']=[{'model':db[_0x2bfa('0xb5')],'as':_0x2bfa('0x106'),'required':![]},{'model':db['Attachment'],'as':_0x2bfa('0x137'),'required':![]}];}return db['ChatOfflineMessage'][_0x2bfa('0x72')](_0x1820a7);})[_0x2bfa('0x1b')](function(_0x28ec60){_0x4a877e[_0x2bfa('0x73')]=_0x28ec60;return _0x4a877e;});}})[_0x2bfa('0x1b')](respondWithFilteredResult(_0x52e2ae,_0x1820a7))[_0x2bfa('0x26')](handleError(_0x52e2ae,null));};exports['addAgents']=function(_0x2f950c,_0x2fd547){return db[_0x2bfa('0x5d')]['find']({'where':{'id':_0x2f950c[_0x2bfa('0x7f')]['id']}})[_0x2bfa('0x1b')](handleEntityNotFound(_0x2fd547,null))[_0x2bfa('0x1b')](function(_0x21a1cd){if(_0x21a1cd){return _0x21a1cd[_0x2bfa('0x138')](_0x2f950c[_0x2bfa('0x77')][_0x2bfa('0x87')],_['omit'](_0x2f950c[_0x2bfa('0x77')],[_0x2bfa('0x87'),'id'])||{})[_0x2bfa('0xbb')](function(_0x1b2225){for(var _0x344b4c=0x0;_0x344b4c<_0x2f950c[_0x2bfa('0x77')][_0x2bfa('0x87')][_0x2bfa('0x64')];_0x344b4c+=0x1){socket[_0x2bfa('0x139')](_0x2bfa('0x13a'),{'UserId':Number(_0x2f950c[_0x2bfa('0x77')][_0x2bfa('0x87')][_0x344b4c]),'ChatWebsiteId':Number(_0x2f950c[_0x2bfa('0x7f')]['id'])});}return _0x1b2225;});}})[_0x2bfa('0x1b')](respondWithResult(_0x2fd547,null))[_0x2bfa('0x26')](handleError(_0x2fd547,null));};exports[_0x2bfa('0x13b')]=function(_0x249908,_0x1c177c){return db['ChatWebsite'][_0x2bfa('0x75')]({'where':{'id':_0x249908[_0x2bfa('0x7f')]['id']}})['then'](handleEntityNotFound(_0x1c177c,null))['then'](function(_0x2668bc){if(_0x2668bc){return _0x2668bc[_0x2bfa('0x13b')](_0x249908[_0x2bfa('0x5f')][_0x2bfa('0x87')])['then'](function(){if(_[_0x2bfa('0x13c')](_0x249908[_0x2bfa('0x5f')][_0x2bfa('0x87')])){for(var _0x693c8b=0x0;_0x693c8b<_0x249908['query'][_0x2bfa('0x87')][_0x2bfa('0x64')];_0x693c8b+=0x1){socket[_0x2bfa('0x139')]('userChatWebsite:remove',{'UserId':Number(_0x249908['query'][_0x2bfa('0x87')][_0x693c8b]),'ChatWebsiteId':Number(_0x249908['params']['id'])});}}else{socket['emit'](_0x2bfa('0x13d'),{'UserId':Number(_0x249908[_0x2bfa('0x5f')][_0x2bfa('0x87')]),'ChatWebsiteId':Number(_0x249908[_0x2bfa('0x7f')]['id'])});}});}})[_0x2bfa('0x1b')](respondWithStatusCode(_0x1c177c,null))[_0x2bfa('0x26')](handleError(_0x1c177c,null));};exports[_0x2bfa('0x13e')]=function(_0x58a558,_0x257c76){var _0x31bd21={};var _0x95fa5b={};var _0x31b0b2;var _0x14d7a1;return db[_0x2bfa('0x5d')][_0x2bfa('0x84')]({'where':{'id':_0x58a558[_0x2bfa('0x7f')]['id']}})['then'](handleEntityNotFound(_0x257c76,null))[_0x2bfa('0x1b')](function(_0x18067a){if(_0x18067a){_0x31b0b2=_0x18067a;_0x95fa5b[_0x2bfa('0x56')]=_[_0x2bfa('0x60')](db[_0x2bfa('0x107')][_0x2bfa('0x85')]);_0x95fa5b[_0x2bfa('0x5f')]=_['keys'](_0x58a558['query']);_0x95fa5b['filters']=_[_0x2bfa('0x62')](_0x95fa5b[_0x2bfa('0x56')],_0x95fa5b[_0x2bfa('0x5f')]);_0x31bd21[_0x2bfa('0x61')]=_[_0x2bfa('0x62')](_0x95fa5b[_0x2bfa('0x56')],qs[_0x2bfa('0x63')](_0x58a558[_0x2bfa('0x5f')][_0x2bfa('0x63')]));_0x31bd21[_0x2bfa('0x61')]=_0x31bd21[_0x2bfa('0x61')][_0x2bfa('0x64')]?_0x31bd21[_0x2bfa('0x61')]:_0x95fa5b[_0x2bfa('0x56')];_0x31bd21[_0x2bfa('0x8b')]=qs[_0x2bfa('0x68')](_0x58a558[_0x2bfa('0x5f')]['sort']);_0x31bd21[_0x2bfa('0x69')]=qs[_0x2bfa('0x6a')](_[_0x2bfa('0x6b')](_0x58a558[_0x2bfa('0x5f')],_0x95fa5b[_0x2bfa('0x6a')]));if(_0x58a558[_0x2bfa('0x5f')][_0x2bfa('0x6c')]){_0x31bd21[_0x2bfa('0x69')]=_[_0x2bfa('0x6d')](_0x31bd21[_0x2bfa('0x69')],{'$or':_[_0x2bfa('0x41')](_0x31bd21[_0x2bfa('0x61')],function(_0x53dfab){var _0x53cec3={};_0x53cec3[_0x53dfab]={'$like':'%'+_0x58a558[_0x2bfa('0x5f')][_0x2bfa('0x6c')]+'%'};return _0x53cec3;})});}_0x31bd21=_[_0x2bfa('0x6d')]({},_0x31bd21,_0x58a558[_0x2bfa('0x6f')]);return _0x31b0b2[_0x2bfa('0x13e')](_0x31bd21);}})[_0x2bfa('0x1b')](function(_0x13f3f6){if(_0x13f3f6){_0x14d7a1=_0x13f3f6['length'];if(!_0x58a558['query']['hasOwnProperty'](_0x2bfa('0x66'))){_0x31bd21[_0x2bfa('0x67')]=qs[_0x2bfa('0x67')](_0x58a558[_0x2bfa('0x5f')]['limit']);_0x31bd21[_0x2bfa('0x2a')]=qs[_0x2bfa('0x2a')](_0x58a558[_0x2bfa('0x5f')][_0x2bfa('0x2a')]);}return _0x31b0b2[_0x2bfa('0x13e')](_0x31bd21);}})[_0x2bfa('0x1b')](function(_0x386991){if(_0x386991){return _0x386991?{'count':_0x14d7a1,'rows':_0x386991}:null;}})['then'](respondWithResult(_0x257c76,null))[_0x2bfa('0x26')](handleError(_0x257c76,null));};
\ No newline at end of file
+var _0x57c3=['localhost','socket.io-emitter','register','client','http','request','info','ChatWebsite,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','sendStatus','json','offset','undefined','limit','count','status','update','destroy','then','get','ChatWebsites','UserProfileResource','stack','name','send','Command','getSnippet','timezone','iftime\x20%s,%s','format','iftime\x20%s','indexOf','true','interval','OFFLINE','No\x20timezone','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','inspect','map','Intervals','all','some','user-agent-parser','user-agent','getResult','cf-connecting-ip','x-forwarded-for','first','split','firstName','lastName','x-real-port','browser','version','unknown','%s\x20%s','device','model','vendor','type','index','Pause','mandatoryDispositionPause','fieldName','key','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','filter','merge','options','ChatWebsite','include','findAll','rows','show','params','rawAttributes','intersection','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','describe','addDisposition','ChatWebsiteId','getDispositions','findOne','Disposition','includeAll','ids','CannedAnswer','getAnswers','pick','removeAnswers','addLogo','sitepic','file','addAvatar','agentAvatar','addCustomerAvatar','customerAvatar','filename','addSystemAvatar','systemAvatar','getLogo','join','root','../../config/license/util','getLicense','custom','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','notify','chat','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','from','List','CmContact','Contacts','ChatApplication','Applications','Interval','Chat\x20Website\x20with\x20id\x20%s\x20not\x20found','priority','asc','account','threadId','externalUrl','ChatInteraction','interaction','contact','messageId','created','push','applications','close','*,*,*,*','ChatMessage','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','queueId','queue','waitForTheAssignedQueue','EventManager','offline','files','from\x20is\x20mandatory','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','MailAccount','findOrCreate','spread','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','toPairs','offlineMessageBody','ChatOfflineMessage','server','attachments','offline-chat','transaction','Smtp','CloudProvider','forwardOfflineAddress','getSmtpOptions','sendMail','email','openNewInteraction','MailAccountId','originalname','mimetype','subjectOffline','toPairsIn','mapValues','offlineMessageSubject','Chat','NotifyMailAccount','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','User','fullname','Tag','color','tag','getProactiveActions','virtual','increment','chatLicenseExceeded','URL','origin','3.5.0','remote','headers','x-real-ip','remoteAddress','referer','replace','render','verticalAlignment','labelText','textColor','textButtonColor','color_button','hideWhenOffline','addApplications','findAndCountAll','finally','getApplications','addProactiveActions','online','false','offlineForm','fromKey','getOfflineMessages','Contact','Attachment','Attachments','addAgents','emit','isArray','userChatWebsite:remove','getAgents','mustache','util','path','ejs','fs-extra','lodash','html-to-text','ioredis','../../components/parsers/qs','../../config/logger','../../errors/api','APINotFoundError','../../mysqldb','redis','defaults'];(function(_0x2160a9,_0x3cbd9e){var _0xa88cf7=function(_0x51ab6f){while(--_0x51ab6f){_0x2160a9['push'](_0x2160a9['shift']());}};_0xa88cf7(++_0x3cbd9e);}(_0x57c3,0x111));var _0x357c=function(_0x4070b4,_0x392075){_0x4070b4=_0x4070b4-0x0;var _0x474ce3=_0x57c3[_0x4070b4];return _0x474ce3;};'use strict';var Mustache=require(_0x357c('0x0'));var util=require(_0x357c('0x1'));var path=require(_0x357c('0x2'));var ejs=require(_0x357c('0x3'));var fs=require('fs');var fs_extra=require(_0x357c('0x4'));var _=require(_0x357c('0x5'));var querystring=require('querystring');var htmlToText=require(_0x357c('0x6'));var Redis=require(_0x357c('0x7'));var jayson=require('jayson/promise');var url=require('url');var qs=require(_0x357c('0x8'));var logger=require(_0x357c('0x9'))('api');var config=require('../../config/environment');var APIOutOfIntervalError=require(_0x357c('0xa'))['APIOutOfIntervalError'];var APINotFoundError=require(_0x357c('0xa'))[_0x357c('0xb')];var APIHandleError=require(_0x357c('0xa'))['handleError'];var db=require(_0x357c('0xc'))['db'];config[_0x357c('0xd')]=_[_0x357c('0xe')](config[_0x357c('0xd')],{'host':_0x357c('0xf'),'port':0x18eb});var socket=require(_0x357c('0x10'))(new Redis(config['redis']));require('./chatWebsite.socket')[_0x357c('0x11')](socket);var client=jayson[_0x357c('0x12')][_0x357c('0x13')]({'port':0x232c});var client9002=jayson[_0x357c('0x12')][_0x357c('0x13')]({'port':0x232a});var client9003=jayson[_0x357c('0x12')][_0x357c('0x13')]({'port':0x232b});var client9001=jayson[_0x357c('0x12')][_0x357c('0x13')]({'port':0x2329});function respondWithRpcPromise(_0x1d4f56,_0x35d4b8,_0x2e0f77,_0x201156){return new Promise(function(_0x17a1d7,_0x5c54e1){var _0x595383=_0x201156||client;return _0x595383[_0x357c('0x14')](_0x1d4f56,_0x2e0f77)['then'](function(_0x189a32){logger[_0x357c('0x15')](_0x357c('0x16'),_0x35d4b8,'request\x20sent');logger[_0x357c('0x17')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x35d4b8,_0x357c('0x18'),JSON[_0x357c('0x19')](_0x189a32));if(_0x189a32['error']){if(_0x189a32[_0x357c('0x1a')][_0x357c('0x1b')]===0x1f4){logger[_0x357c('0x1a')]('ChatWebsite,\x20%s,\x20%s',_0x35d4b8,_0x189a32['error'][_0x357c('0x1c')]);return _0x5c54e1(_0x189a32[_0x357c('0x1a')][_0x357c('0x1c')]);}logger[_0x357c('0x1a')](_0x357c('0x16'),_0x35d4b8,_0x189a32['error']['message']);return _0x17a1d7(_0x189a32['error'][_0x357c('0x1c')]);}else{logger[_0x357c('0x15')](_0x357c('0x16'),_0x35d4b8,'request\x20sent');_0x17a1d7(_0x189a32[_0x357c('0x1d')][_0x357c('0x1c')]);}})[_0x357c('0x1e')](function(_0x124aee){logger[_0x357c('0x1a')](_0x357c('0x16'),_0x35d4b8,_0x124aee);_0x5c54e1(_0x124aee);});});}function respondWithStatusCode(_0x305415,_0x59fc4c){_0x59fc4c=_0x59fc4c||0xcc;return function(_0x27d241){if(_0x27d241){return _0x305415[_0x357c('0x1f')](_0x59fc4c);}return _0x305415['status'](_0x59fc4c)['end']();};}function respondWithResult(_0x4adeab,_0x37b253){_0x37b253=_0x37b253||0xc8;return function(_0x3eafa7){if(_0x3eafa7){return _0x4adeab['status'](_0x37b253)[_0x357c('0x20')](_0x3eafa7);}};}function respondWithFilteredResult(_0x10b901,_0x5cbf70){return function(_0xa5c203){if(_0xa5c203){var _0x8fde6c=typeof _0x5cbf70[_0x357c('0x21')]===_0x357c('0x22')&&typeof _0x5cbf70[_0x357c('0x23')]==='undefined';var _0x3cd5bc=_0xa5c203[_0x357c('0x24')];var _0x41bd21=_0x8fde6c?0x0:_0x5cbf70[_0x357c('0x21')];var _0x1d59c1=_0x8fde6c?_0xa5c203[_0x357c('0x24')]:_0x5cbf70[_0x357c('0x21')]+_0x5cbf70[_0x357c('0x23')];var _0x573cae;if(_0x1d59c1>=_0x3cd5bc){_0x1d59c1=_0x3cd5bc;_0x573cae=0xc8;}else{_0x573cae=0xce;}_0x10b901[_0x357c('0x25')](_0x573cae);return _0x10b901['set']('Content-Range',_0x41bd21+'-'+_0x1d59c1+'/'+_0x3cd5bc)['json'](_0xa5c203);}return null;};}function saveUpdates(_0x513d18){return function(_0xeb9b4b){if(_0xeb9b4b){return _0xeb9b4b[_0x357c('0x26')](_0x513d18)['then'](function(_0xad6a0){return _0xad6a0;});}return null;};}function removeEntity(_0x55c371){return function(_0x1e0843){if(_0x1e0843){return _0x1e0843[_0x357c('0x27')]()[_0x357c('0x28')](function(){var _0x144187=_0x1e0843[_0x357c('0x29')]({'plain':!![]});var _0x4034ea=_0x357c('0x2a');return db[_0x357c('0x2b')][_0x357c('0x27')]({'where':{'type':_0x4034ea,'resourceId':_0x144187['id']}})['then'](function(){return _0x1e0843;});})['then'](function(){_0x55c371[_0x357c('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0x24d039){return function(_0x2c3a85){if(!_0x2c3a85){_0x24d039['sendStatus'](0x194);}return _0x2c3a85;};}function handleError(_0x2d92ac,_0x40d814){_0x40d814=_0x40d814||0x1f4;return function(_0x47a789){logger[_0x357c('0x1a')](_0x47a789[_0x357c('0x2c')]);if(_0x47a789[_0x357c('0x2d')]){delete _0x47a789['name'];}_0x2d92ac[_0x357c('0x25')](_0x40d814)[_0x357c('0x2e')](_0x47a789);};}function iftimePromise(_0x3d603c,_0x12896e){return respondWithRpcPromise(_0x357c('0x2f'),_0x357c('0x30'),{'command':_0x12896e[_0x357c('0x31')]?util['format'](_0x357c('0x32'),_0x3d603c['interval'],_0x12896e[_0x357c('0x31')]):util[_0x357c('0x33')](_0x357c('0x34'),_0x3d603c['interval'])},client9002)[_0x357c('0x28')](function(_0x43f269){var _0xdbeebc=_0x43f269&&_0x43f269[_0x357c('0x35')](_0x357c('0x36'))>=0x0?!![]:![];logger[_0x357c('0x15')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x12896e['id'],_0x3d603c['id'],_0x3d603c[_0x357c('0x37')],_0xdbeebc?'ONLINE':_0x357c('0x38'),_0x12896e[_0x357c('0x31')]?_0x12896e[_0x357c('0x31')]:_0x357c('0x39'));return _0xdbeebc;})[_0x357c('0x1e')](function(_0x46490e){logger[_0x357c('0x1a')](_0x357c('0x3a'),_0x12896e['id'],_0x3d603c['id'],_0x3d603c[_0x357c('0x37')],util[_0x357c('0x3b')](_0x46490e,{'showHidden':![],'depth':null}),_0x12896e[_0x357c('0x31')]?_0x12896e[_0x357c('0x31')]:_0x357c('0x39'));return![];});}function checkWebsiteIntervals(_0x309793){var _0x5a8b5e=_[_0x357c('0x3c')](_0x309793['Interval'][_0x357c('0x3d')],function(_0x151fea){var _0x28fdd3=_0x151fea[_0x357c('0x29')]({'plain':!![]});return iftimePromise(_0x28fdd3,_0x309793);});return Promise[_0x357c('0x3e')](_0x5a8b5e)[_0x357c('0x28')](function(_0x12a988){return _[_0x357c('0x3f')](_0x12a988);});}function createInteractionObject(_0x43097c,_0x43d26d,_0x197e6d,_0x254625){var _0x50042f=require(_0x357c('0x40'));var _0x3ddf03=new _0x50042f();var _0x20bfd3=_0x3ddf03['setUA'](_0x197e6d[_0x357c('0x41')])[_0x357c('0x42')]();var _0x1c81b5=_0x43d26d['customerIp'];if(_0x197e6d[_0x357c('0x43')]){_0x1c81b5=_0x197e6d['cf-connecting-ip'];}else if(_0x197e6d[_0x357c('0x44')]){_0x1c81b5=_[_0x357c('0x45')](_0x197e6d[_0x357c('0x44')][_0x357c('0x46')](','));}return{'ContactId':_0x254625['id'],'ChatWebsiteId':_0x43097c,'from':(_0x254625[_0x357c('0x47')]||'')+'\x20'+(_0x254625[_0x357c('0x48')]||''),'customerIp':_0x1c81b5,'customerPort':_0x197e6d[_0x357c('0x49')]?_0x197e6d[_0x357c('0x49')]:null,'referer':_0x43d26d['referer'],'browserName':_0x20bfd3[_0x357c('0x4a')][_0x357c('0x2d')]&&_0x20bfd3[_0x357c('0x4a')][_0x357c('0x4b')]?util[_0x357c('0x33')]('%s\x20%s',_0x20bfd3[_0x357c('0x4a')][_0x357c('0x2d')],_0x20bfd3['browser']['version']):'unknown','browserVersion':_0x20bfd3[_0x357c('0x4a')]['version']||_0x357c('0x4c'),'osName':util['format'](_0x357c('0x4d'),_0x20bfd3['os'][_0x357c('0x2d')],_0x20bfd3['os']['version']),'osVersion':_0x20bfd3['os'][_0x357c('0x4b')],'deviceModel':_0x20bfd3[_0x357c('0x4e')][_0x357c('0x4f')]&&_0x20bfd3['device'][_0x357c('0x50')]?util['format']('%s\x20%s\x20%s',_0x20bfd3[_0x357c('0x4e')]['model'],_0x20bfd3[_0x357c('0x4e')][_0x357c('0x50')],_0x20bfd3[_0x357c('0x4e')][_0x357c('0x51')]):null,'deviceVendor':_0x20bfd3[_0x357c('0x4e')][_0x357c('0x50')],'deviceType':_0x20bfd3['device'][_0x357c('0x51')],'formData':JSON[_0x357c('0x19')](_0x43d26d)};}exports[_0x357c('0x52')]=function(_0x410ed1,_0x298376){var _0x6687a3={'include':[{'model':db[_0x357c('0x53')],'as':_0x357c('0x54')}]},_0x8ccaca={},_0x1dfc3b={'count':0x0,'rows':[]};var _0x2fd38c=_['map'](db['ChatWebsite']['rawAttributes'],function(_0x252f90){return{'name':_0x252f90[_0x357c('0x55')],'type':_0x252f90[_0x357c('0x51')][_0x357c('0x56')]};});_0x8ccaca['model']=_[_0x357c('0x3c')](_0x2fd38c,'name');_0x8ccaca[_0x357c('0x57')]=_[_0x357c('0x58')](_0x410ed1[_0x357c('0x57')]);_0x8ccaca[_0x357c('0x59')]=_['intersection'](_0x8ccaca[_0x357c('0x4f')],_0x8ccaca[_0x357c('0x57')]);_0x6687a3[_0x357c('0x5a')]=_['intersection'](_0x8ccaca['model'],qs[_0x357c('0x5b')](_0x410ed1[_0x357c('0x57')]['fields']));_0x6687a3[_0x357c('0x5a')]=_0x6687a3[_0x357c('0x5a')][_0x357c('0x5c')]?_0x6687a3[_0x357c('0x5a')]:_0x8ccaca[_0x357c('0x4f')];if(!_0x410ed1[_0x357c('0x57')][_0x357c('0x5d')](_0x357c('0x5e'))){_0x6687a3[_0x357c('0x23')]=qs[_0x357c('0x23')](_0x410ed1['query'][_0x357c('0x23')]);_0x6687a3[_0x357c('0x21')]=qs[_0x357c('0x21')](_0x410ed1[_0x357c('0x57')][_0x357c('0x21')]);}_0x6687a3[_0x357c('0x5f')]=qs[_0x357c('0x60')](_0x410ed1[_0x357c('0x57')][_0x357c('0x60')]);_0x6687a3[_0x357c('0x61')]=qs['filters'](_['pick'](_0x410ed1['query'],_0x8ccaca[_0x357c('0x59')]),_0x2fd38c);if(_0x410ed1[_0x357c('0x57')]['filter']){_0x6687a3[_0x357c('0x61')]=_['merge'](_0x6687a3['where'],{'$or':_[_0x357c('0x3c')](_0x2fd38c,function(_0x245b17){if(_0x245b17[_0x357c('0x51')]!==_0x357c('0x62')){var _0x374390={};_0x374390[_0x245b17[_0x357c('0x2d')]]={'$like':'%'+_0x410ed1[_0x357c('0x57')][_0x357c('0x63')]+'%'};return _0x374390;}})});}_0x6687a3=_[_0x357c('0x64')]({},_0x6687a3,_0x410ed1[_0x357c('0x65')]);var _0x1fb361={'where':_0x6687a3['where']};return db[_0x357c('0x66')][_0x357c('0x24')](_0x1fb361)[_0x357c('0x28')](function(_0x3a340a){_0x1dfc3b['count']=_0x3a340a;if(_0x410ed1[_0x357c('0x57')]['includeAll']){_0x6687a3[_0x357c('0x67')]=[{'all':!![]}];}return db[_0x357c('0x66')][_0x357c('0x68')](_0x6687a3);})[_0x357c('0x28')](function(_0x3becc4){_0x1dfc3b[_0x357c('0x69')]=_0x3becc4;return _0x1dfc3b;})['then'](respondWithFilteredResult(_0x298376,_0x6687a3))[_0x357c('0x1e')](handleError(_0x298376,null));};exports[_0x357c('0x6a')]=function(_0x2488fc,_0x47693d){var _0x326530={'raw':![],'where':{'id':_0x2488fc[_0x357c('0x6b')]['id']},'include':[{'model':db[_0x357c('0x53')],'as':_0x357c('0x54')}]},_0x5d0769={};_0x5d0769[_0x357c('0x4f')]=_['keys'](db[_0x357c('0x66')][_0x357c('0x6c')]);_0x5d0769[_0x357c('0x57')]=_[_0x357c('0x58')](_0x2488fc[_0x357c('0x57')]);_0x5d0769[_0x357c('0x59')]=_['intersection'](_0x5d0769[_0x357c('0x4f')],_0x5d0769['query']);_0x326530['attributes']=_[_0x357c('0x6d')](_0x5d0769[_0x357c('0x4f')],qs['fields'](_0x2488fc['query'][_0x357c('0x5b')]));_0x326530[_0x357c('0x5a')]=_0x326530[_0x357c('0x5a')][_0x357c('0x5c')]?_0x326530[_0x357c('0x5a')]:_0x5d0769['model'];if(_0x2488fc['query']['includeAll']){_0x326530[_0x357c('0x67')]=[{'all':!![]}];}_0x326530=_['merge']({},_0x326530,_0x2488fc[_0x357c('0x65')]);return db[_0x357c('0x66')]['find'](_0x326530)['then'](handleEntityNotFound(_0x47693d,null))[_0x357c('0x28')](respondWithResult(_0x47693d,null))['catch'](handleError(_0x47693d,null));};exports[_0x357c('0x6e')]=function(_0x5c7175,_0x240906){return db[_0x357c('0x66')][_0x357c('0x6e')](_0x5c7175[_0x357c('0x6f')],{})['then'](function(_0x2ebdd9){var _0x40fc0a=_0x5c7175[_0x357c('0x70')]['get']({'plain':!![]});if(!_0x40fc0a)throw new Error(_0x357c('0x71'));if(_0x40fc0a[_0x357c('0x72')]===_0x357c('0x70')){var _0x13caa0=_0x2ebdd9['get']({'plain':!![]});var _0x42c0fd=_0x357c('0x2a');return db[_0x357c('0x73')][_0x357c('0x74')]({'where':{'name':_0x42c0fd,'userProfileId':_0x40fc0a['userProfileId']},'raw':!![]})[_0x357c('0x28')](function(_0x17f081){if(_0x17f081&&_0x17f081[_0x357c('0x75')]===0x0){return db['UserProfileResource']['create']({'name':_0x13caa0[_0x357c('0x2d')],'resourceId':_0x13caa0['id'],'type':_0x17f081['name'],'sectionId':_0x17f081['id']},{})[_0x357c('0x28')](function(){return _0x2ebdd9;});}else{return _0x2ebdd9;}})['catch'](function(_0x474e81){logger[_0x357c('0x1a')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x474e81);throw _0x474e81;});}return _0x2ebdd9;})['then'](respondWithResult(_0x240906,0xc9))[_0x357c('0x1e')](handleError(_0x240906,null));};exports[_0x357c('0x26')]=function(_0x25b3af,_0x23926c){if(_0x25b3af[_0x357c('0x6f')]['id']){delete _0x25b3af[_0x357c('0x6f')]['id'];}return db[_0x357c('0x66')][_0x357c('0x74')]({'where':{'id':_0x25b3af[_0x357c('0x6b')]['id']},'include':[{'model':db[_0x357c('0x53')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x23926c,null))[_0x357c('0x28')](saveUpdates(_0x25b3af[_0x357c('0x6f')],null))[_0x357c('0x28')](respondWithResult(_0x23926c,null))['catch'](handleError(_0x23926c,null));};exports[_0x357c('0x27')]=function(_0x15b0a6,_0x47a74d){return db[_0x357c('0x66')][_0x357c('0x74')]({'where':{'id':_0x15b0a6['params']['id']}})[_0x357c('0x28')](handleEntityNotFound(_0x47a74d,null))[_0x357c('0x28')](removeEntity(_0x47a74d,null))[_0x357c('0x1e')](handleError(_0x47a74d,null));};exports[_0x357c('0x76')]=function(_0x42046e,_0x24371e){return db[_0x357c('0x66')][_0x357c('0x76')]()[_0x357c('0x28')](respondWithResult(_0x24371e,null))[_0x357c('0x1e')](handleError(_0x24371e,null));};exports[_0x357c('0x77')]=function(_0x4be6a2,_0x3458db){if(_0x4be6a2[_0x357c('0x6f')]['id']){delete _0x4be6a2[_0x357c('0x6f')]['id'];}return db[_0x357c('0x66')][_0x357c('0x74')]({'where':{'id':_0x4be6a2[_0x357c('0x6b')]['id']}})['then'](handleEntityNotFound(_0x3458db,null))['then'](function(_0x21cddd){if(_0x21cddd){_0x4be6a2[_0x357c('0x6f')][_0x357c('0x78')]=_0x21cddd['id'];return db['Disposition'][_0x357c('0x6e')](_0x4be6a2[_0x357c('0x6f')]);}})['then'](respondWithResult(_0x3458db,null))[_0x357c('0x1e')](handleError(_0x3458db,null));};exports[_0x357c('0x79')]=function(_0x44164b,_0x5a92d9){var _0x5da066={'raw':![],'where':{}};var _0x153be0={};var _0x30bfd8={'count':0x0,'rows':[]};return db[_0x357c('0x66')][_0x357c('0x7a')]({'where':{'id':_0x44164b['params']['id']}})[_0x357c('0x28')](handleEntityNotFound(_0x5a92d9,null))[_0x357c('0x28')](function(_0x1d70e5){if(_0x1d70e5){_0x153be0[_0x357c('0x4f')]=_[_0x357c('0x58')](db[_0x357c('0x7b')][_0x357c('0x6c')]);_0x153be0[_0x357c('0x57')]=_[_0x357c('0x58')](_0x44164b[_0x357c('0x57')]);_0x153be0[_0x357c('0x59')]=_[_0x357c('0x6d')](_0x153be0[_0x357c('0x4f')],_0x153be0[_0x357c('0x57')]);_0x5da066[_0x357c('0x5a')]=_[_0x357c('0x6d')](_0x153be0[_0x357c('0x4f')],qs['fields'](_0x44164b[_0x357c('0x57')][_0x357c('0x5b')]));_0x5da066[_0x357c('0x5a')]=_0x5da066['attributes'][_0x357c('0x5c')]?_0x5da066[_0x357c('0x5a')]:_0x153be0['model'];if(!_0x44164b['query'][_0x357c('0x5d')](_0x357c('0x5e'))){_0x5da066[_0x357c('0x23')]=qs[_0x357c('0x23')](_0x44164b['query'][_0x357c('0x23')]);_0x5da066[_0x357c('0x21')]=qs[_0x357c('0x21')](_0x44164b[_0x357c('0x57')][_0x357c('0x21')]);}_0x5da066[_0x357c('0x5f')]=qs[_0x357c('0x60')](_0x44164b[_0x357c('0x57')][_0x357c('0x60')]);_0x5da066[_0x357c('0x61')]=qs[_0x357c('0x59')](_['pick'](_0x44164b[_0x357c('0x57')],_0x153be0[_0x357c('0x59')]));_0x5da066[_0x357c('0x61')][_0x357c('0x78')]=_0x1d70e5['id'];if(_0x44164b[_0x357c('0x57')][_0x357c('0x63')]){_0x5da066[_0x357c('0x61')]=_[_0x357c('0x64')](_0x5da066[_0x357c('0x61')],{'$or':_[_0x357c('0x3c')](_0x5da066[_0x357c('0x5a')],function(_0x4e528f){var _0x430bf2={};_0x430bf2[_0x4e528f]={'$like':'%'+_0x44164b[_0x357c('0x57')][_0x357c('0x63')]+'%'};return _0x430bf2;})});}_0x5da066=_[_0x357c('0x64')]({},_0x5da066,_0x44164b['options']);return db[_0x357c('0x7b')]['count']({'where':_0x5da066[_0x357c('0x61')]})[_0x357c('0x28')](function(_0x226218){_0x30bfd8['count']=_0x226218;if(_0x44164b[_0x357c('0x57')][_0x357c('0x7c')]){_0x5da066[_0x357c('0x67')]=[{'all':!![]}];}return db[_0x357c('0x7b')]['findAll'](_0x5da066);})[_0x357c('0x28')](function(_0x462ee4){_0x30bfd8[_0x357c('0x69')]=_0x462ee4;return _0x30bfd8;});}})[_0x357c('0x28')](respondWithFilteredResult(_0x5a92d9,_0x5da066))['catch'](handleError(_0x5a92d9,null));};exports['removeDispositions']=function(_0x5da682,_0x166040){return db[_0x357c('0x66')]['find']({'where':{'id':_0x5da682[_0x357c('0x6b')]['id']}})[_0x357c('0x28')](handleEntityNotFound(_0x166040,null))['then'](function(_0x3f085d){if(_0x3f085d){return _0x3f085d['removeDispositions'](_0x5da682[_0x357c('0x57')][_0x357c('0x7d')]);}})[_0x357c('0x28')](respondWithStatusCode(_0x166040,null))[_0x357c('0x1e')](handleError(_0x166040,null));};exports['addAnswer']=function(_0x488070,_0x515237){if(_0x488070[_0x357c('0x6f')]['id']){delete _0x488070['body']['id'];}return db[_0x357c('0x66')][_0x357c('0x74')]({'where':{'id':_0x488070[_0x357c('0x6b')]['id']}})[_0x357c('0x28')](handleEntityNotFound(_0x515237,null))[_0x357c('0x28')](function(_0x5ae3a3){if(_0x5ae3a3){_0x488070['body']['ChatWebsiteId']=_0x5ae3a3['id'];return db[_0x357c('0x7e')]['create'](_0x488070['body']);}})['then'](respondWithResult(_0x515237,null))[_0x357c('0x1e')](handleError(_0x515237,null));};exports[_0x357c('0x7f')]=function(_0x5b5caa,_0x2295dc){var _0x5e6b06={'raw':![],'where':{}};var _0x4064f4={};var _0x16d3a7={'count':0x0,'rows':[]};return db[_0x357c('0x66')]['findOne']({'where':{'id':_0x5b5caa[_0x357c('0x6b')]['id']}})[_0x357c('0x28')](handleEntityNotFound(_0x2295dc,null))[_0x357c('0x28')](function(_0x4489fb){if(_0x4489fb){_0x4064f4['model']=_[_0x357c('0x58')](db['CannedAnswer'][_0x357c('0x6c')]);_0x4064f4[_0x357c('0x57')]=_[_0x357c('0x58')](_0x5b5caa[_0x357c('0x57')]);_0x4064f4[_0x357c('0x59')]=_[_0x357c('0x6d')](_0x4064f4[_0x357c('0x4f')],_0x4064f4['query']);_0x5e6b06[_0x357c('0x5a')]=_['intersection'](_0x4064f4[_0x357c('0x4f')],qs[_0x357c('0x5b')](_0x5b5caa['query'][_0x357c('0x5b')]));_0x5e6b06[_0x357c('0x5a')]=_0x5e6b06['attributes']['length']?_0x5e6b06[_0x357c('0x5a')]:_0x4064f4[_0x357c('0x4f')];if(!_0x5b5caa[_0x357c('0x57')][_0x357c('0x5d')](_0x357c('0x5e'))){_0x5e6b06[_0x357c('0x23')]=qs[_0x357c('0x23')](_0x5b5caa[_0x357c('0x57')]['limit']);_0x5e6b06[_0x357c('0x21')]=qs[_0x357c('0x21')](_0x5b5caa['query'][_0x357c('0x21')]);}_0x5e6b06[_0x357c('0x5f')]=qs[_0x357c('0x60')](_0x5b5caa['query'][_0x357c('0x60')]);_0x5e6b06[_0x357c('0x61')]=qs[_0x357c('0x59')](_[_0x357c('0x80')](_0x5b5caa['query'],_0x4064f4['filters']));_0x5e6b06[_0x357c('0x61')][_0x357c('0x78')]=_0x4489fb['id'];if(_0x5b5caa['query'][_0x357c('0x63')]){_0x5e6b06[_0x357c('0x61')]=_[_0x357c('0x64')](_0x5e6b06['where'],{'$or':_[_0x357c('0x3c')](_0x5e6b06['attributes'],function(_0x55d6d0){var _0xc698bd={};_0xc698bd[_0x55d6d0]={'$like':'%'+_0x5b5caa[_0x357c('0x57')]['filter']+'%'};return _0xc698bd;})});}_0x5e6b06=_[_0x357c('0x64')]({},_0x5e6b06,_0x5b5caa[_0x357c('0x65')]);return db[_0x357c('0x7e')][_0x357c('0x24')]({'where':_0x5e6b06[_0x357c('0x61')]})['then'](function(_0x245af5){_0x16d3a7[_0x357c('0x24')]=_0x245af5;if(_0x5b5caa['query'][_0x357c('0x7c')]){_0x5e6b06['include']=[{'all':!![]}];}return db[_0x357c('0x7e')][_0x357c('0x68')](_0x5e6b06);})[_0x357c('0x28')](function(_0x21fb8d){_0x16d3a7[_0x357c('0x69')]=_0x21fb8d;return _0x16d3a7;});}})[_0x357c('0x28')](respondWithFilteredResult(_0x2295dc,_0x5e6b06))[_0x357c('0x1e')](handleError(_0x2295dc,null));};exports[_0x357c('0x81')]=function(_0x22e209,_0x28f045){return db['ChatWebsite'][_0x357c('0x74')]({'where':{'id':_0x22e209['params']['id']}})[_0x357c('0x28')](handleEntityNotFound(_0x28f045,null))['then'](function(_0x4395e7){if(_0x4395e7){return _0x4395e7['removeAnswers'](_0x22e209[_0x357c('0x57')][_0x357c('0x7d')]);}})[_0x357c('0x28')](respondWithStatusCode(_0x28f045,null))[_0x357c('0x1e')](handleError(_0x28f045,null));};exports[_0x357c('0x82')]=function(_0x1abcaf,_0x428cb8){_0x1abcaf[_0x357c('0x6f')][_0x357c('0x83')]=_0x1abcaf[_0x357c('0x84')]['filename'];return db[_0x357c('0x66')][_0x357c('0x74')]({'where':{'id':_0x1abcaf[_0x357c('0x6b')]['id']}})[_0x357c('0x28')](handleEntityNotFound(_0x428cb8,null))[_0x357c('0x28')](saveUpdates(_0x1abcaf[_0x357c('0x6f')],null))['then'](respondWithResult(_0x428cb8,null))[_0x357c('0x1e')](handleError(_0x428cb8,null));};exports[_0x357c('0x85')]=function(_0x281ae3,_0xd221bd){_0x281ae3['body'][_0x357c('0x86')]=_0x281ae3[_0x357c('0x84')]['filename'];return db[_0x357c('0x66')]['find']({'where':{'id':_0x281ae3['params']['id']}})[_0x357c('0x28')](handleEntityNotFound(_0xd221bd,null))[_0x357c('0x28')](saveUpdates(_0x281ae3[_0x357c('0x6f')],null))[_0x357c('0x28')](respondWithResult(_0xd221bd,null))[_0x357c('0x1e')](handleError(_0xd221bd,null));};exports[_0x357c('0x87')]=function(_0x36cade,_0x1e858d){_0x36cade[_0x357c('0x6f')][_0x357c('0x88')]=_0x36cade['file'][_0x357c('0x89')];return db[_0x357c('0x66')][_0x357c('0x74')]({'where':{'id':_0x36cade[_0x357c('0x6b')]['id']}})[_0x357c('0x28')](handleEntityNotFound(_0x1e858d,null))[_0x357c('0x28')](saveUpdates(_0x36cade[_0x357c('0x6f')],null))[_0x357c('0x28')](respondWithResult(_0x1e858d,null))[_0x357c('0x1e')](handleError(_0x1e858d,null));};exports[_0x357c('0x8a')]=function(_0x1ecfc8,_0x34e413){_0x1ecfc8[_0x357c('0x6f')][_0x357c('0x8b')]=_0x1ecfc8[_0x357c('0x84')][_0x357c('0x89')];return db[_0x357c('0x66')][_0x357c('0x74')]({'where':{'id':_0x1ecfc8[_0x357c('0x6b')]['id']}})[_0x357c('0x28')](handleEntityNotFound(_0x34e413,null))[_0x357c('0x28')](saveUpdates(_0x1ecfc8[_0x357c('0x6f')],null))[_0x357c('0x28')](respondWithResult(_0x34e413,null))[_0x357c('0x1e')](handleError(_0x34e413,null));};exports[_0x357c('0x8c')]=function(_0x840d04,_0x551021){var _0x1edc08=path[_0x357c('0x8d')](config[_0x357c('0x8e')],'server/files/images/logos/default_logo.svg');var _0x5d6342={'where':{'id':_0x840d04[_0x357c('0x6b')]['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x94506f=![];return require(_0x357c('0x8f'))[_0x357c('0x90')]()[_0x357c('0x28')](function(_0x5b2741){if(_0x5b2741){_0x94506f=_0x5b2741[_0x357c('0x91')];}})[_0x357c('0x28')](function(){return db['ChatWebsite'][_0x357c('0x74')](_0x5d6342);})[_0x357c('0x28')](handleEntityNotFound(_0x551021,null))['then'](function(_0x6f5c2c){if(_0x6f5c2c){if(!_[_0x357c('0x92')](_0x6f5c2c[_0x357c('0x83')])){if(fs[_0x357c('0x93')](path[_0x357c('0x8d')](config[_0x357c('0x8e')],_0x357c('0x94'),_0x6f5c2c[_0x357c('0x83')]))&&_0x94506f){_0x1edc08=path[_0x357c('0x8d')](config[_0x357c('0x8e')],_0x357c('0x94'),_0x6f5c2c[_0x357c('0x83')]);}}return _0x551021[_0x357c('0x95')](_0x1edc08);}})['catch'](handleError(_0x551021,null));};exports['getAvatar']=function(_0x27e4b1,_0x549ff3){var _0x1f3fcc=path[_0x357c('0x8d')](config[_0x357c('0x8e')],_0x357c('0x96'));var _0x5dbba7={'where':{'id':_0x27e4b1[_0x357c('0x6b')]['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db[_0x357c('0x66')][_0x357c('0x74')](_0x5dbba7)[_0x357c('0x28')](handleEntityNotFound(_0x549ff3,null))['then'](function(_0x2a937a){if(_0x2a937a){if(!_[_0x357c('0x92')](_0x2a937a[_0x357c('0x86')])){if(fs['existsSync'](path[_0x357c('0x8d')](config[_0x357c('0x8e')],_0x357c('0x97'),_0x2a937a[_0x357c('0x86')]))){_0x1f3fcc=path[_0x357c('0x8d')](config[_0x357c('0x8e')],_0x357c('0x97'),_0x2a937a[_0x357c('0x86')]);}}return _0x549ff3[_0x357c('0x95')](_0x1f3fcc);}})[_0x357c('0x1e')](handleError(_0x549ff3,null));};exports[_0x357c('0x98')]=function(_0x105308,_0x5e9dfd){var _0x2477ca=path[_0x357c('0x8d')](config['root'],'server/files/images/avatars/customer_avatar.png');var _0x24239a={'where':{'id':_0x105308[_0x357c('0x6b')]['id']},'attributes':['id',_0x357c('0x88'),_0x357c('0x99')],'raw':!![]};return db[_0x357c('0x66')]['find'](_0x24239a)['then'](handleEntityNotFound(_0x5e9dfd,null))[_0x357c('0x28')](function(_0x342e3a){if(_0x342e3a){if(!_[_0x357c('0x92')](_0x342e3a['customerAvatar'])){if(fs[_0x357c('0x93')](path[_0x357c('0x8d')](config[_0x357c('0x8e')],_0x357c('0x97'),_0x342e3a[_0x357c('0x88')]))&&_0x342e3a['showCustomerAvatar']){_0x2477ca=path[_0x357c('0x8d')](config['root'],_0x357c('0x97'),_0x342e3a[_0x357c('0x88')]);}}return _0x5e9dfd['download'](_0x2477ca);}})[_0x357c('0x1e')](handleError(_0x5e9dfd,null));};exports[_0x357c('0x9a')]=function(_0x3ce86f,_0x42a89e){var _0x464b4f=path[_0x357c('0x8d')](config[_0x357c('0x8e')],_0x357c('0x9b'));var _0x313196={'where':{'id':_0x3ce86f[_0x357c('0x6b')]['id']},'attributes':['id',_0x357c('0x8b')],'raw':!![]};return db[_0x357c('0x66')][_0x357c('0x74')](_0x313196)[_0x357c('0x28')](handleEntityNotFound(_0x42a89e,null))['then'](function(_0xdd2d14){if(_0xdd2d14){if(!_[_0x357c('0x92')](_0xdd2d14['systemAvatar'])){if(fs[_0x357c('0x93')](path[_0x357c('0x8d')](config['root'],_0x357c('0x97'),_0xdd2d14[_0x357c('0x8b')]))){_0x464b4f=path['join'](config[_0x357c('0x8e')],_0x357c('0x97'),_0xdd2d14['systemAvatar']);}}return _0x42a89e[_0x357c('0x95')](_0x464b4f);}})[_0x357c('0x1e')](handleError(_0x42a89e,null));};exports[_0x357c('0x9c')]=function(_0x39b52a,_0x35ff34){var _0x3efc3c={'body':_0x39b52a[_0x357c('0x6f')],'channel':_0x357c('0x9d')};var _0x1c0e81=[];var _0x59ace4=[];var _0x177410={};var _0x1298a8=![];return db['CmContact']['describe']()[_0x357c('0x28')](function(_0x89e64a){if(!_0x89e64a){throw new db[(_0x357c('0x9e'))][(_0x357c('0x9f'))](_0x357c('0xa0'));}_0x1c0e81=_[_0x357c('0xa1')](_[_0x357c('0x58')](_0x89e64a),[_0x357c('0xa2'),_0x357c('0xa3')]);_0x59ace4=_[_0x357c('0xa1')](_['keys'](_0x89e64a),[_0x357c('0xa2'),'updatedAt',_0x357c('0xa4'),_0x357c('0xa5')]);if(_0x39b52a[_0x357c('0x6f')]['id']){delete _0x39b52a[_0x357c('0x6f')]['id'];}if(_[_0x357c('0x92')](_0x39b52a[_0x357c('0x6f')]['from'])){throw new db[(_0x357c('0x9e'))]['ValidationError']('from\x20is\x20mandatory');}if(_[_0x357c('0x92')](_0x39b52a[_0x357c('0x6f')]['body'])||_0x39b52a[_0x357c('0x6f')][_0x357c('0x6f')]===''){throw new db[(_0x357c('0x9e'))][(_0x357c('0x9f'))](_0x357c('0xa6'));}if(_[_0x357c('0x92')](_0x39b52a[_0x357c('0x6f')]['mapKey'])){throw new db[(_0x357c('0x9e'))]['ValidationError'](_0x357c('0xa7')+_0x59ace4);}if(!_['includes'](_0x59ace4,_0x39b52a[_0x357c('0x6f')]['mapKey'])){throw new db[(_0x357c('0x9e'))]['ValidationError'](_0x357c('0xa8')+_0x59ace4);}_0x177410[_0x39b52a['body'][_0x357c('0xa9')]]=_0x39b52a[_0x357c('0x6f')][_0x357c('0xaa')];})[_0x357c('0x28')](function(){return db[_0x357c('0x66')][_0x357c('0x74')]({'where':{'id':_0x39b52a[_0x357c('0x6b')]['id']},'include':[{'model':db['CmList'],'as':_0x357c('0xab'),'include':[{'model':db[_0x357c('0xac')],'as':_0x357c('0xad'),'where':_0x177410,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0x357c('0xae')],'as':_0x357c('0xaf')},{'model':db[_0x357c('0xb0')],'as':_0x357c('0xb0'),'include':[{'model':db['Interval'],'as':_0x357c('0x3d'),'attributes':['id','interval'],'raw':!![]}]}]});})[_0x357c('0x28')](function(_0x1f3dc0){if(!_0x1f3dc0)throw new APINotFoundError(util['format'](_0x357c('0xb1'),_0x39b52a[_0x357c('0x6b')]['id']));if(!_0x1f3dc0[_0x357c('0xb0')]||!_0x1f3dc0['Interval']['Intervals'])return[_0x1f3dc0,!![]];return[_0x1f3dc0,checkWebsiteIntervals(_0x1f3dc0)];})['spread'](function(_0x41f27d,_0x2ed66a){if(!_0x2ed66a)throw new APIOutOfIntervalError();if(!_0x41f27d[_0x357c('0xab')])return;_0x3efc3c['account']=_0x41f27d;_0x3efc3c['list']=_0x41f27d['List'];_0x3efc3c['applications']=_['orderBy'](_0x41f27d[_0x357c('0xaf')],[_0x357c('0xb2')],[_0x357c('0xb3')]);if(_0x3efc3c[_0x357c('0xb4')][_0x357c('0xaf')]){delete _0x3efc3c[_0x357c('0xb4')]['Applications'];}if(_0x3efc3c[_0x357c('0xb4')][_0x357c('0xab')]&&_0x3efc3c[_0x357c('0xb4')]['List']['Contacts'][_0x357c('0x5c')]){return _0x3efc3c[_0x357c('0xb4')][_0x357c('0xab')][_0x357c('0xad')][0x0];}var _0x5436c3=_['defaults'](_0x39b52a['body'],{'firstName':_0x39b52a[_0x357c('0x6f')]['from'],'ListId':_0x41f27d['ListId']});_0x5436c3[_0x39b52a['body']['mapKey']]=_0x39b52a[_0x357c('0x6f')][_0x357c('0xaa')];return db[_0x357c('0xac')][_0x357c('0x6e')](_0x5436c3,{'fields':_0x1c0e81,'raw':!![]});})[_0x357c('0x28')](function(_0x52a4b1){_0x3efc3c['contact']=_0x52a4b1;var _0x2410f1=createInteractionObject(_0x39b52a[_0x357c('0x6b')]['id'],_0x39b52a[_0x357c('0x6f')],_0x39b52a['headers'],_0x52a4b1);var _0x1264b5={'ChatWebsiteId':_0x39b52a[_0x357c('0x6b')]['id'],'closed':![]};if(_0x39b52a[_0x357c('0x6f')][_0x357c('0xb5')]){_0x1264b5[_0x357c('0xb5')]=_0x39b52a[_0x357c('0x6f')][_0x357c('0xb5')];return db['ChatInteraction'][_0x357c('0x74')]({'where':_0x1264b5})[_0x357c('0x28')](function(_0x45a311){if(_0x45a311){_0x1298a8=!![];return _0x45a311;}_0x2410f1[_0x357c('0xb5')]=_0x39b52a[_0x357c('0x6f')][_0x357c('0xb5')];_0x2410f1[_0x357c('0xb6')]=_0x39b52a['body']['externalUrl'];return db[_0x357c('0xb7')][_0x357c('0x6e')](_0x2410f1);});}_0x1264b5['ContactId']=_0x52a4b1['id'];if(_0x39b52a[_0x357c('0x6f')][_0x357c('0xb8')]&&_0x39b52a[_0x357c('0x6f')][_0x357c('0xb8')]['id']){_0x1264b5['id']=_0x39b52a['body'][_0x357c('0xb8')]['id'];return db['ChatInteraction']['find']({'where':_0x1264b5})[_0x357c('0x28')](function(_0x2e89fc){if(_0x2e89fc){_0x1298a8=!![];return _0x2e89fc;}return db[_0x357c('0xb7')]['create'](_0x2410f1);});}return db[_0x357c('0xb7')]['create'](_0x2410f1);})[_0x357c('0x28')](function(_0x16d422){if(!_0x1298a8)return _0x16d422;var _0x145183={'from':(_0x3efc3c['contact']['firstName']||'')+'\x20'+(_0x3efc3c[_0x357c('0xb9')][_0x357c('0x48')]||'')};if(_0x39b52a['body']['threadId']&&_0x39b52a[_0x357c('0x6f')][_0x357c('0xba')]&&_0x39b52a['body'][_0x357c('0xb5')]!=_0x39b52a[_0x357c('0x6f')]['messageId']){_0x145183[_0x357c('0xb5')]=_0x39b52a[_0x357c('0x6f')]['messageId'];}return _0x16d422['update'](_0x145183);})[_0x357c('0x28')](function(_0xdb5c92){_0x3efc3c['interaction']=_0xdb5c92[_0x357c('0x29')]({'plain':!![]});_0x3efc3c[_0x357c('0xb8')][_0x357c('0xbb')]=!_0x1298a8;if(_0x3efc3c[_0x357c('0xb8')]['created']){if(_0x3efc3c[_0x357c('0xb4')]['autoclose']){_0x3efc3c['applications'][_0x357c('0xbc')]({'id':0x0,'priority':_0x3efc3c[_0x357c('0xbd')][_0x357c('0x5c')]+0x1,'app':_0x357c('0xbe'),'appdata':'unmanaged','interval':_0x357c('0xbf')});}}return db[_0x357c('0xc0')]['create']({'body':_0x39b52a[_0x357c('0x6f')][_0x357c('0x6f')],'ChatWebsiteId':_0x39b52a[_0x357c('0x6b')]['id'],'ChatInteractionId':_0xdb5c92['id'],'direction':'in','ContactId':_0x3efc3c[_0x357c('0xb9')]['id'],'AttachmentId':_0x39b52a[_0x357c('0x6f')][_0x357c('0xc1')]});})[_0x357c('0x28')](function(_0x49f5f5){_0x3efc3c[_0x357c('0x1c')]=_0x49f5f5;if(!_0x3efc3c[_0x357c('0xb8')]['UserId']){return;}return db['User'][_0x357c('0x74')]({'attributes':['id','name'],'where':{'id':_0x3efc3c['interaction'][_0x357c('0xc2')]}});})[_0x357c('0x28')](function(_0x165f40){if(_0x165f40){_0x3efc3c[_0x357c('0xbd')][_0x357c('0xc3')]({'id':0x0,'priority':0x0,'app':_0x357c('0xc4'),'appdata':_0x165f40[_0x357c('0x2d')]+','+(_0x3efc3c['account'][_0x357c('0xc5')]||0xa),'interval':_0x357c('0xbf')});_0x3efc3c['forcedOwnership']=!![];}if(!_0x3efc3c['interaction'][_0x357c('0xc6')]){return;}return db['ChatQueue'][_0x357c('0x74')]({'attributes':['id','name'],'where':{'id':_0x3efc3c[_0x357c('0xb8')][_0x357c('0xc6')]}});})['then'](function(_0x50432a){if(_0x50432a){_0x3efc3c[_0x357c('0xbd')][_0x357c('0xc3')]({'id':0x0,'priority':0x1,'app':_0x357c('0xc7'),'appdata':_0x50432a['name']+','+(_0x3efc3c[_0x357c('0xb4')][_0x357c('0xc8')]||0x12c),'interval':'*,*,*,*'});}return respondWithRpcPromise('Start','startRouting',_0x3efc3c);})['then'](function(_0x478df0){respondWithRpcPromise(_0x357c('0xc9'),_0x357c('0xc9'),{'event':_0x357c('0x9c'),'message':_0x478df0},client9002);return _0x478df0;})[_0x357c('0x28')](respondWithResult(_0x35ff34,null))[_0x357c('0x1e')](APIHandleError(_0x35ff34));};exports[_0x357c('0xca')]=function(_0x463a05,_0x43d949){var _0x54a8cf,_0x266e5e,_0x1629d6;var _0x5566dd=[];var _0x47e07b={};var _0x1c5809=_0x463a05[_0x357c('0xcb')]||[];var _0x45b1f2=[];var _0x23b12e;return db['CmContact'][_0x357c('0x76')]()[_0x357c('0x28')](function(_0x5eab2d){if(!_0x5eab2d){throw new db['Sequelize']['ValidationError']('no\x20available\x20attributes');}_0x5566dd=_['difference'](_[_0x357c('0x58')](_0x5eab2d),[_0x357c('0xa2'),_0x357c('0xa3'),_0x357c('0xa4'),_0x357c('0xa5')]);if(_0x463a05[_0x357c('0x6f')]['id']){delete _0x463a05['body']['id'];}if(_[_0x357c('0x92')](_0x463a05[_0x357c('0x6f')][_0x357c('0xaa')])){throw _0x43d949[_0x357c('0x25')](0x1f4)[_0x357c('0x2e')](new db[(_0x357c('0x9e'))]['ValidationError'](_0x357c('0xcc')));}if(_[_0x357c('0x92')](_0x463a05[_0x357c('0x6f')]['body'])||_0x463a05[_0x357c('0x6f')][_0x357c('0x6f')]===''){throw _0x43d949[_0x357c('0x25')](0x1f4)[_0x357c('0x2e')](new db[(_0x357c('0x9e'))][(_0x357c('0x9f'))](_0x357c('0xa6')));}if(_['isNil'](_0x463a05['body'][_0x357c('0xcd')])){throw _0x43d949['status'](0x1f4)[_0x357c('0x2e')](new db[(_0x357c('0x9e'))][(_0x357c('0x9f'))](_0x357c('0xce')+_0x5566dd));}if(!_[_0x357c('0xcf')](_0x5566dd,_0x463a05[_0x357c('0x6f')][_0x357c('0xcd')])){throw _0x43d949[_0x357c('0x25')](0x1f4)[_0x357c('0x2e')](new db[(_0x357c('0x9e'))]['ValidationError'](_0x357c('0xd0')+_0x5566dd));}_0x47e07b[_0x463a05[_0x357c('0x6f')][_0x357c('0xcd')]]=_0x463a05[_0x357c('0x6f')][_0x357c('0xaa')];})[_0x357c('0x28')](function(){return db['ChatWebsite']['find']({'where':{'id':_0x463a05['params']['id']},'include':[{'model':db[_0x357c('0xd1')],'as':_0x357c('0xab')},{'model':db['MailAccount'],'as':_0x357c('0xd2')}]});})[_0x357c('0x28')](handleEntityNotFound(_0x43d949,null))[_0x357c('0x28')](function(_0x13f709){if(_0x13f709&&_0x13f709[_0x357c('0xab')]){_0x266e5e=_0x13f709;var _0x59f734=_[_0x357c('0xe')](_0x463a05['body'],{'firstName':_0x463a05['body']['from'],'phone':_0x463a05['body'][_0x357c('0xaa')],'ListId':_0x13f709['ListId']});_0x59f734[_0x463a05[_0x357c('0x6f')][_0x357c('0xcd')]]=_0x463a05[_0x357c('0x6f')]['from'];return db[_0x357c('0xac')][_0x357c('0xd3')]({'where':_0x47e07b,'defaults':_0x59f734});}})[_0x357c('0xd4')](function(_0x3aea28){if(_0x3aea28){_0x1629d6=_0x3aea28;var _0x4b9ec6=fs[_0x357c('0xd5')](path[_0x357c('0x8d')](config[_0x357c('0x8e')],_0x357c('0xd6')),_0x357c('0xd7'));var _0x22e174=ejs['render'](_0x4b9ec6,{'body':_[_0x357c('0xd8')](_0x463a05[_0x357c('0x6f')][_0x357c('0x6f')]),'bodyTitle':_0x266e5e[_0x357c('0xd9')]});return db[_0x357c('0xda')][_0x357c('0x6e')]({'body':_0x22e174,'plainBody':htmlToText['fromString'](_0x22e174),'ContactId':_0x3aea28['id'],'ChatWebsiteId':_0x266e5e['id']});}})[_0x357c('0x28')](function(_0x131fe0){_0x23b12e=_0x131fe0;if(_0x1c5809[_0x357c('0x5c')]){var _0x1362cc=_0x1c5809['map'](function(_0x1f07cc){return{'name':_0x1f07cc['originalname'],'basename':_0x1f07cc['filename'],'type':_0x1f07cc['mimetype'],'ChatOfflineMessageId':_0x131fe0['id']};});_0x45b1f2=_0x1362cc[_0x357c('0x3c')](_0x27596d=>{var _0x4f9dd6={'filename':_0x27596d[_0x357c('0x2d')],'path':path['join'](config['root'],_0x357c('0xdb'),'files',_0x357c('0xdc'),_0x357c('0xdd'),_0x27596d['basename'])};return _0x4f9dd6;});if(!_0x266e5e['openNewInteraction']){return db['sequelize'][_0x357c('0xde')](function(_0x3c4d14){return db['Attachment']['bulkCreate'](_0x1362cc,{'transaction':_0x3c4d14});});}}})[_0x357c('0x28')](function(){if(_0x23b12e){_0x54a8cf=_0x23b12e;return db[_0x357c('0xd2')][_0x357c('0x7a')]({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0x357c('0xdf'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0x357c('0xe0'),'raw':!![]}]}]});}})['then'](function(_0x30d97a){if(_0x30d97a&&_0x30d97a[_0x357c('0xdf')]&&_0x266e5e['forwardOffline']&&_0x266e5e[_0x357c('0xe1')]){var _0x160e9f=_0x30d97a[_0x357c('0xe2')]();return respondWithRpcPromise('SendMail',_0x357c('0xe3'),{'account':_0x160e9f,'message':{'from':util[_0x357c('0x33')]('\x22%s\x22\x20<%s>',_0x30d97a[_0x357c('0x2d')],_0x30d97a[_0x357c('0xe4')]||_0x30d97a[_0x357c('0xdf')][_0x357c('0x70')]),'to':_0x266e5e[_0x357c('0xe1')],'subject':_0x266e5e['offlineMessageSubject'],'html':_0x54a8cf['body'],'attachments':_0x45b1f2}},client9003)[_0x357c('0x28')](function(){return _0x54a8cf;})['catch'](function(_0x39d181){logger[_0x357c('0x1a')](_0x39d181);});}})[_0x357c('0x28')](function(){if(_0x266e5e&&_0x266e5e[_0x357c('0xe5')]&&_0x266e5e[_0x357c('0xe6')]){var _0x202350=[];if(_0x1c5809['length']){_0x202350=_0x1c5809[_0x357c('0x3c')](function(_0x24958a){return{'name':_0x24958a[_0x357c('0xe7')],'basename':_0x24958a['filename'],'type':_0x24958a[_0x357c('0xe8')],'ChatOfflineMessageId':_0x23b12e['id']};});}var _0x10221a;if(!_['isNil'](_0x266e5e[_0x357c('0xe9')])){var _0x2d319a=_[_0x357c('0x3c')](_0x463a05[_0x357c('0x6f')],function(_0x37a2ac){return _0x37a2ac;});var _0x1dd508=_[_0x357c('0xea')](_0x2d319a)[0x0];var _0x7d22c2=_[_0x357c('0xeb')](_0x1dd508,function(_0x2cd00b){return _0x2cd00b;});_0x10221a=_0x7d22c2[0x1][_0x266e5e[_0x357c('0xe9')]];}var _0x23e0df={'from':_0x1629d6[_0x357c('0xe4')],'firstName':_0x1629d6['firstName'],'lastName':_0x1629d6[_0x357c('0x48')],'mapKey':'email','message':{'from':_0x1629d6[_0x357c('0xe4')],'to':_0x266e5e['MailAccount']['email'],'cc':'','subject':_[_0x357c('0x92')](_0x10221a)?_0x266e5e[_0x357c('0xec')]:_0x10221a,'messageId':'','sentAt':new Date(),'attach':_0x202350[_0x357c('0x5c')],'attachments':_0x202350,'originChannel':_0x357c('0xed'),'ChatWebsiteId':_0x266e5e['id'],'ChatOfflineMessageId':_0x54a8cf['id'],'originTo':_0x266e5e[_0x357c('0xd2')][_0x357c('0xe4')]},'body':_0x54a8cf[_0x357c('0x6f')]};var _0x98613={'account':{'id':_0x266e5e[_0x357c('0xe6')]},'body':_0x23e0df,'log':_0x357c('0xee')};return respondWithRpcPromise(_0x357c('0xee'),_0x357c('0xef'),_0x98613,client9001)[_0x357c('0x28')](function(){return _0x54a8cf;})[_0x357c('0x1e')](function(_0x570c7c){logger[_0x357c('0x1a')](_0x570c7c);});}return;})[_0x357c('0x28')](function(){if(_0x54a8cf){return _0x54a8cf;}})['then'](respondWithResult(_0x43d949,null))['catch'](function(){for(var _0x3aa72c of _0x1c5809){var _0x1a0169=path['join'](config[_0x357c('0x8e')],'server',_0x357c('0xcb'),'attachments',_0x357c('0xdd'),_0x3aa72c[_0x357c('0x89')]);fs_extra[_0x357c('0xf0')](_0x1a0169)['catch'](function(_0x43221d){logger['error'](_0x357c('0xf1'),_0x1a0169,_0x43221d);});}});};exports['addInteraction']=function(_0x3d7a87,_0x3b4485){return db[_0x357c('0xb7')][_0x357c('0x74')]({'where':{'id':_0x3d7a87[_0x357c('0x6b')]['id']}})['then'](handleEntityNotFound(_0x3b4485,null))[_0x357c('0x28')](function(_0xf7a1a7){if(_0xf7a1a7){return _0xf7a1a7[_0x357c('0xf2')](_0x3d7a87['body'][_0x357c('0x7d')],_[_0x357c('0xf3')](_0x3d7a87['body'],[_0x357c('0x7d'),'id'])||{});}})[_0x357c('0x28')](respondWithResult(_0x3b4485,null))[_0x357c('0x1e')](handleError(_0x3b4485,null));};exports[_0x357c('0xf4')]=function(_0x87618b,_0x1a43ec){var _0x197f93={'raw':![],'where':{}};var _0x4b295e={};var _0x5b78a3={'count':0x0,'rows':[]};return db[_0x357c('0x66')][_0x357c('0x7a')]({'where':{'id':_0x87618b[_0x357c('0x6b')]['id']}})[_0x357c('0x28')](handleEntityNotFound(_0x1a43ec,null))[_0x357c('0x28')](function(_0x2d47c1){if(_0x2d47c1){_0x4b295e[_0x357c('0x4f')]=_[_0x357c('0x58')](db[_0x357c('0xb7')][_0x357c('0x6c')]);_0x4b295e[_0x357c('0x57')]=_['keys'](_0x87618b[_0x357c('0x57')]);_0x4b295e[_0x357c('0x59')]=_['intersection'](_0x4b295e['model'],_0x4b295e[_0x357c('0x57')]);_0x197f93['attributes']=_[_0x357c('0x6d')](_0x4b295e[_0x357c('0x4f')],qs[_0x357c('0x5b')](_0x87618b['query'][_0x357c('0x5b')]));_0x197f93[_0x357c('0x5a')]=_0x197f93[_0x357c('0x5a')][_0x357c('0x5c')]?_0x197f93[_0x357c('0x5a')]:_0x4b295e[_0x357c('0x4f')];if(!_0x87618b[_0x357c('0x57')]['hasOwnProperty'](_0x357c('0x5e'))){_0x197f93[_0x357c('0x23')]=qs['limit'](_0x87618b[_0x357c('0x57')]['limit']);_0x197f93[_0x357c('0x21')]=qs[_0x357c('0x21')](_0x87618b[_0x357c('0x57')][_0x357c('0x21')]);}_0x197f93[_0x357c('0x5f')]=qs[_0x357c('0x60')](_0x87618b[_0x357c('0x57')]['sort']);_0x197f93['where']=qs['filters'](_[_0x357c('0x80')](_0x87618b[_0x357c('0x57')],_0x4b295e[_0x357c('0x59')]));_0x197f93['where'][_0x357c('0x78')]=_0x2d47c1['id'];if(_0x87618b[_0x357c('0x57')][_0x357c('0x63')]){_0x197f93[_0x357c('0x61')]=_[_0x357c('0x64')](_0x197f93['where'],{'$or':_[_0x357c('0x3c')](_0x197f93[_0x357c('0x5a')],function(_0x1af25a){var _0x37984f={};_0x37984f[_0x1af25a]={'$like':'%'+_0x87618b['query'][_0x357c('0x63')]+'%'};return _0x37984f;})});}_0x197f93=_[_0x357c('0x64')]({},_0x197f93,_0x87618b[_0x357c('0x65')]);return db[_0x357c('0xb7')][_0x357c('0x24')]({'where':_0x197f93[_0x357c('0x61')]})['then'](function(_0x2f0b1f){_0x5b78a3[_0x357c('0x24')]=_0x2f0b1f;if(_0x87618b[_0x357c('0x57')][_0x357c('0x7c')]){_0x197f93[_0x357c('0x67')]=[{'model':db[_0x357c('0xac')],'as':'Contact','required':![]},{'model':db[_0x357c('0xf5')],'as':'Owner','attributes':[_0x357c('0x2d'),_0x357c('0xf6'),'internal'],'required':![]},{'model':db[_0x357c('0xf7')],'as':'Tags','attributes':['id',_0x357c('0x2d'),_0x357c('0xf8')],'where':_0x87618b[_0x357c('0x57')][_0x357c('0xf9')]?{'id':_0x87618b['query'][_0x357c('0xf9')]}:undefined,'required':_0x87618b[_0x357c('0x57')][_0x357c('0xf9')]?!![]:![]}];}return db[_0x357c('0xb7')][_0x357c('0x68')](_0x197f93);})[_0x357c('0x28')](function(_0x20d877){_0x5b78a3['rows']=_0x20d877;return _0x5b78a3;});}})[_0x357c('0x28')](respondWithFilteredResult(_0x1a43ec,_0x197f93))['catch'](handleError(_0x1a43ec,null));};exports[_0x357c('0x30')]=function(_0x4edf02,_0x2d8860){var _0x270a85=0x0;var _0x2f74c9=0x0;var _0x3b9e2c=![];var _0x2f95d6;var _0x369104;return db['ChatWebsite'][_0x357c('0x74')]({'where':{'id':_0x4edf02[_0x357c('0x6b')]['id']},'include':[{'model':db[_0x357c('0xb0')],'as':_0x357c('0xb0'),'include':[{'model':db['Interval'],'as':'Intervals','attributes':['id','interval']}]}]})['then'](handleEntityNotFound(_0x2d8860,null))[_0x357c('0x28')](function(_0x2c3c3a){if(_0x2c3c3a){_0x2f95d6=_0x2c3c3a;return _0x2c3c3a[_0x357c('0xfa')]({'raw':!![]});}})['then'](function(_0x2cec14){if(_0x2f95d6){if(_0x2cec14){_0x369104=_0x2cec14;}}return require(_0x357c('0x8f'))['getLicense']();})['then'](function(_0x504edd){if(_0x504edd){_0x2f74c9=_0x504edd[_0x357c('0xfb')];_0x3b9e2c=_0x504edd[_0x357c('0x91')];}})[_0x357c('0x28')](function(){return db['ChatInteraction'][_0x357c('0x24')]({'where':{'closed':![]}});})[_0x357c('0x28')](function(_0x23d7d7){_0x270a85=_0x23d7d7;if(_0x2f74c9&&_0x23d7d7>_0x2f74c9){return db['License'][_0x357c('0x7a')]({'where':{'id':0x1}})[_0x357c('0x28')](function(_0x2a66f9){if(_0x2a66f9){_0x2a66f9[_0x357c('0xfc')](_0x357c('0xfd'));}});}})[_0x357c('0x28')](function(){if(!_0x2f95d6[_0x357c('0xb0')]||!_0x2f95d6[_0x357c('0xb0')][_0x357c('0x3d')])return!![];return checkWebsiteIntervals(_0x2f95d6);})[_0x357c('0x28')](function(_0x21cd8d){var _0x528bbd=fs['readFileSync'](path[_0x357c('0x8d')](config[_0x357c('0x8e')],'server/files/chat/iframe.ejs'),'utf8');var _0x31415e=new url[(_0x357c('0xfe'))](_0x2f95d6['address'])[_0x357c('0xff')];var _0x44d1e5=_0x357c('0x100');var _0x1fee40=![];var _0x29bfff={'chatVersion':_0x44d1e5,'chatWebsiteAddressOrigin':_0x31415e,'remote':_0x2f95d6[_0x357c('0x101')],'query':querystring[_0x357c('0x19')](_[_0x357c('0x64')](_0x2f95d6['get']({'plain':!![]}),{'customerIp':_0x4edf02[_0x357c('0x102')]['x-forwarded-for']||_0x4edf02[_0x357c('0x102')][_0x357c('0x103')]||_0x4edf02['connection'][_0x357c('0x104')]||_0x4edf02['ip'],'referer':_0x4edf02[_0x357c('0x102')][_0x357c('0x105')],'openedInteractions':_0x270a85,'maxInteractions':_0x2f74c9,'virtual':_0x3b9e2c[_0x357c('0xfb')],'online':_0x21cd8d,'custom':_0x3b9e2c}))[_0x357c('0x106')](/'/g,'\x5c\x27')};_0x2d8860[_0x357c('0x2e')](ejs[_0x357c('0x107')](Mustache['render'](_0x528bbd,_0x29bfff),{'proactiveActions':_0x369104,'alignment':_0x2f95d6['alignment'],'verticalAlignment':_0x2f95d6[_0x357c('0x108')],'div_color':_0x2f95d6[_0x357c('0xf8')],'labelText':_0x2f95d6[_0x357c('0x109')],'text_color':_0x2f95d6[_0x357c('0x10a')],'text_button_color':_0x2f95d6[_0x357c('0x10b')],'button_color':_0x2f95d6[_0x357c('0x10c')],'background_color':_0x2f95d6['backgroundColor'],'hideWhenOffline':_0x2f95d6[_0x357c('0x10d')],'intervalId':_0x2f95d6['IntervalId'],'isDevelopment':_0x1fee40,'chatVersion':_0x44d1e5}));})['catch'](handleError(_0x2d8860,null));};exports[_0x357c('0x10e')]=function(_0x54294f,_0x471416){var _0x333b8d=_0x54294f[_0x357c('0x6b')]['id'];var _0x426b01=_0x54294f[_0x357c('0x6f')];var _0x357659=0xc8;var _0x41ff0e=null;return db['sequelize']['transaction']({'isolationLevel':db['sequelize']['Transaction']['ISOLATION_LEVELS']['READ_COMMITTED']},function(_0x16d02c){return db[_0x357c('0x66')][_0x357c('0x7a')]({'where':{'id':_0x333b8d},'transaction':_0x16d02c})['then'](function(_0x31d6ca){if(_0x31d6ca){return db['ChatApplication'][_0x357c('0x27')]({'where':{'ChatWebsiteId':_0x333b8d},'transaction':_0x16d02c})[_0x357c('0x28')](function(){var _0x527037=_['map'](_0x426b01,function(_0x2a3b6b){_0x2a3b6b[_0x357c('0x78')]=_0x333b8d;return _0x2a3b6b;});return db[_0x357c('0xae')]['bulkCreate'](_0x527037,{'transaction':_0x16d02c});});}else{_0x357659=0x194;_0x41ff0e=[];}});})['then'](function(){if(_0x357659!==0x194){return db[_0x357c('0xae')][_0x357c('0x10f')]({'where':{'ChatWebsiteId':_0x333b8d},'order':'priority'})[_0x357c('0x28')](function(_0x375d68){_0x41ff0e=_0x375d68;});}})[_0x357c('0x1e')](function(_0x560194){_0x357659=0x1f4;logger[_0x357c('0x1a')](_0x560194['stack']);if(_0x560194[_0x357c('0x2d')]){delete _0x560194[_0x357c('0x2d')];}_0x41ff0e=_0x560194;})[_0x357c('0x110')](function(){if(_0x41ff0e===null){_0x471416[_0x357c('0x1f')](_0x357659);}else{if(_0x357659===0x1f4){_0x471416[_0x357c('0x25')](_0x357659)[_0x357c('0x2e')](_0x41ff0e);}else{_0x471416[_0x357c('0x25')](_0x357659)[_0x357c('0x20')](_0x41ff0e);}}});};exports[_0x357c('0x111')]=function(_0x54f413,_0x5ac083){var _0x52cbd6={};var _0x56d495={};var _0x1efa69;var _0x3cbd04;return db[_0x357c('0x66')][_0x357c('0x7a')]({'where':{'id':_0x54f413[_0x357c('0x6b')]['id']}})['then'](handleEntityNotFound(_0x5ac083,null))[_0x357c('0x28')](function(_0x447121){if(_0x447121){_0x1efa69=_0x447121;_0x56d495['model']=_[_0x357c('0x58')](db['ChatApplication'][_0x357c('0x6c')]);_0x56d495[_0x357c('0x57')]=_[_0x357c('0x58')](_0x54f413[_0x357c('0x57')]);_0x56d495[_0x357c('0x59')]=_[_0x357c('0x6d')](_0x56d495[_0x357c('0x4f')],_0x56d495[_0x357c('0x57')]);_0x52cbd6[_0x357c('0x5a')]=_[_0x357c('0x6d')](_0x56d495['model'],qs[_0x357c('0x5b')](_0x54f413[_0x357c('0x57')][_0x357c('0x5b')]));_0x52cbd6[_0x357c('0x5a')]=_0x52cbd6[_0x357c('0x5a')][_0x357c('0x5c')]?_0x52cbd6[_0x357c('0x5a')]:_0x56d495['model'];_0x52cbd6[_0x357c('0x5f')]=qs['sort'](_0x54f413[_0x357c('0x57')]['sort']);_0x52cbd6[_0x357c('0x61')]=qs[_0x357c('0x59')](_['pick'](_0x54f413[_0x357c('0x57')],_0x56d495[_0x357c('0x59')]));if(_0x54f413[_0x357c('0x57')]['filter']){_0x52cbd6[_0x357c('0x61')]=_[_0x357c('0x64')](_0x52cbd6[_0x357c('0x61')],{'$or':_[_0x357c('0x3c')](_0x52cbd6['attributes'],function(_0x3590af){var _0x21594a={};_0x21594a[_0x3590af]={'$like':'%'+_0x54f413['query'][_0x357c('0x63')]+'%'};return _0x21594a;})});}_0x52cbd6=_[_0x357c('0x64')]({},_0x52cbd6,_0x54f413[_0x357c('0x65')]);return _0x1efa69['getApplications'](_0x52cbd6);}})['then'](function(_0x330a4f){if(_0x330a4f){_0x3cbd04=_0x330a4f[_0x357c('0x5c')];if(!_0x54f413['query']['hasOwnProperty'](_0x357c('0x5e'))){_0x52cbd6['limit']=qs[_0x357c('0x23')](_0x54f413[_0x357c('0x57')][_0x357c('0x23')]);_0x52cbd6[_0x357c('0x21')]=qs[_0x357c('0x21')](_0x54f413[_0x357c('0x57')]['offset']);}return _0x1efa69[_0x357c('0x111')](_0x52cbd6);}})[_0x357c('0x28')](function(_0xcedaa){if(_0xcedaa){return _0xcedaa?{'count':_0x3cbd04,'rows':_0xcedaa}:null;}})[_0x357c('0x28')](respondWithResult(_0x5ac083,null))[_0x357c('0x1e')](handleError(_0x5ac083,null));};exports[_0x357c('0x112')]=function(_0x569bda,_0x2b90c6){return db['chatProactiveAction'][_0x357c('0x74')]({'where':{'id':_0x569bda[_0x357c('0x6b')]['id']}})['then'](handleEntityNotFound(_0x2b90c6,null))[_0x357c('0x28')](function(_0x50379e){if(_0x50379e){return _0x50379e[_0x357c('0x112')](_0x569bda[_0x357c('0x6f')][_0x357c('0x7d')],_[_0x357c('0xf3')](_0x569bda[_0x357c('0x6f')],[_0x357c('0x7d'),'id'])||{});}})[_0x357c('0x28')](respondWithResult(_0x2b90c6,null))[_0x357c('0x1e')](handleError(_0x2b90c6,null));};exports[_0x357c('0xfa')]=function(_0x96aee9,_0x35b0b0){var _0x8369e3={};var _0x78baff={};var _0x5eb17f;var _0x4176ef;return db[_0x357c('0x66')][_0x357c('0x7a')]({'where':{'id':_0x96aee9[_0x357c('0x6b')]['id']}})[_0x357c('0x28')](handleEntityNotFound(_0x35b0b0,null))['then'](function(_0x19397a){if(_0x19397a){_0x5eb17f=_0x19397a;_0x78baff[_0x357c('0x4f')]=_['keys'](db['ChatProactiveAction'][_0x357c('0x6c')]);_0x78baff[_0x357c('0x57')]=_[_0x357c('0x58')](_0x96aee9[_0x357c('0x57')]);_0x78baff[_0x357c('0x59')]=_[_0x357c('0x6d')](_0x78baff['model'],_0x78baff['query']);_0x8369e3[_0x357c('0x5a')]=_[_0x357c('0x6d')](_0x78baff['model'],qs[_0x357c('0x5b')](_0x96aee9[_0x357c('0x57')][_0x357c('0x5b')]));_0x8369e3['attributes']=_0x8369e3['attributes'][_0x357c('0x5c')]?_0x8369e3[_0x357c('0x5a')]:_0x78baff[_0x357c('0x4f')];_0x8369e3[_0x357c('0x5f')]=qs[_0x357c('0x60')](_0x96aee9[_0x357c('0x57')][_0x357c('0x60')]);_0x8369e3[_0x357c('0x61')]=qs[_0x357c('0x59')](_[_0x357c('0x80')](_0x96aee9[_0x357c('0x57')],_0x78baff['filters']));if(_0x96aee9[_0x357c('0x57')][_0x357c('0x63')]){_0x8369e3[_0x357c('0x61')]=_[_0x357c('0x64')](_0x8369e3['where'],{'$or':_['map'](_0x8369e3[_0x357c('0x5a')],function(_0x5b12b8){var _0x3c157a={};_0x3c157a[_0x5b12b8]={'$like':'%'+_0x96aee9[_0x357c('0x57')][_0x357c('0x63')]+'%'};return _0x3c157a;})});}_0x8369e3=_[_0x357c('0x64')]({},_0x8369e3,_0x96aee9[_0x357c('0x65')]);return _0x5eb17f[_0x357c('0xfa')](_0x8369e3);}})[_0x357c('0x28')](function(_0x131d05){if(_0x131d05){_0x4176ef=_0x131d05['length'];if(!_0x96aee9[_0x357c('0x57')][_0x357c('0x5d')](_0x357c('0x5e'))){_0x8369e3['limit']=qs['limit'](_0x96aee9[_0x357c('0x57')][_0x357c('0x23')]);_0x8369e3[_0x357c('0x21')]=qs[_0x357c('0x21')](_0x96aee9[_0x357c('0x57')][_0x357c('0x21')]);}return _0x5eb17f[_0x357c('0xfa')](_0x8369e3);}})[_0x357c('0x28')](function(_0x8d595e){if(_0x8d595e){return _0x8d595e?{'count':_0x4176ef,'rows':_0x8d595e}:null;}})[_0x357c('0x28')](respondWithResult(_0x35b0b0,null))[_0x357c('0x1e')](handleError(_0x35b0b0,null));};exports['getFields']=function(_0x4fcabf,_0xca5bc8){var _0x33be13=_0x4fcabf[_0x357c('0x57')][_0x357c('0x113')]===_0x357c('0x114')?_0x357c('0x115'):'onlineForm';return db[_0x357c('0x66')][_0x357c('0x74')]({'attributes':['id',_0x33be13],'where':{'id':_0x4fcabf[_0x357c('0x6b')]['id']}})[_0x357c('0x28')](handleEntityNotFound(_0xca5bc8,null))[_0x357c('0x28')](function(_0x21968c){if(_0x21968c){var _0x5c2541=_0x21968c[_0x33be13];var _0x1ceae2=_0x5c2541&&_0x5c2541['items']?_0x5c2541['items']:[];_0xca5bc8[_0x357c('0x2e')]({'fromKey':_[_0x357c('0x92')](_0x5c2541[_0x357c('0x116')])?undefined:_0x5c2541[_0x357c('0x116')],'count':_0x1ceae2['length'],'rows':_0x1ceae2});}})[_0x357c('0x1e')](handleError(_0xca5bc8,null));};exports[_0x357c('0x117')]=function(_0x44ab08,_0x324e3f){var _0x3469e1={'raw':![],'where':{}};var _0x2e97d7={};var _0x18612f={'count':0x0,'rows':[]};return db[_0x357c('0x66')][_0x357c('0x7a')]({'where':{'id':_0x44ab08['params']['id']}})['then'](handleEntityNotFound(_0x324e3f,null))[_0x357c('0x28')](function(_0x50c35e){if(_0x50c35e){_0x2e97d7[_0x357c('0x4f')]=_[_0x357c('0x58')](db['ChatOfflineMessage'][_0x357c('0x6c')]);_0x2e97d7[_0x357c('0x57')]=_[_0x357c('0x58')](_0x44ab08[_0x357c('0x57')]);_0x2e97d7[_0x357c('0x59')]=_[_0x357c('0x6d')](_0x2e97d7[_0x357c('0x4f')],_0x2e97d7['query']);_0x3469e1[_0x357c('0x5a')]=_[_0x357c('0x6d')](_0x2e97d7[_0x357c('0x4f')],qs[_0x357c('0x5b')](_0x44ab08['query'][_0x357c('0x5b')]));_0x3469e1['attributes']=_0x3469e1[_0x357c('0x5a')][_0x357c('0x5c')]?_0x3469e1[_0x357c('0x5a')]:_0x2e97d7['model'];if(!_0x44ab08[_0x357c('0x57')][_0x357c('0x5d')](_0x357c('0x5e'))){_0x3469e1['limit']=qs[_0x357c('0x23')](_0x44ab08[_0x357c('0x57')][_0x357c('0x23')]);_0x3469e1[_0x357c('0x21')]=qs[_0x357c('0x21')](_0x44ab08['query'][_0x357c('0x21')]);}_0x3469e1[_0x357c('0x5f')]=qs['sort'](_0x44ab08[_0x357c('0x57')][_0x357c('0x60')]);_0x3469e1['where']=qs[_0x357c('0x59')](_['pick'](_0x44ab08[_0x357c('0x57')],_0x2e97d7['filters']));_0x3469e1[_0x357c('0x61')][_0x357c('0x78')]=_0x50c35e['id'];if(_0x44ab08[_0x357c('0x57')][_0x357c('0x63')]){_0x3469e1[_0x357c('0x61')]=_[_0x357c('0x64')](_0x3469e1[_0x357c('0x61')],{'$or':_[_0x357c('0x3c')](_0x3469e1[_0x357c('0x5a')],function(_0x397e4e){var _0x277b2c={};_0x277b2c[_0x397e4e]={'$like':'%'+_0x44ab08['query']['filter']+'%'};return _0x277b2c;})});}_0x3469e1=_[_0x357c('0x64')]({},_0x3469e1,_0x44ab08[_0x357c('0x65')]);return db[_0x357c('0xda')]['count']({'where':_0x3469e1[_0x357c('0x61')]})[_0x357c('0x28')](function(_0x34ffab){_0x18612f['count']=_0x34ffab;if(_0x44ab08[_0x357c('0x57')]['includeAll']){_0x3469e1[_0x357c('0x67')]=[{'all':!![]}];}else{_0x3469e1['include']=[{'model':db[_0x357c('0xac')],'as':_0x357c('0x118'),'required':![]},{'model':db[_0x357c('0x119')],'as':_0x357c('0x11a'),'required':![]}];}return db['ChatOfflineMessage'][_0x357c('0x68')](_0x3469e1);})[_0x357c('0x28')](function(_0x3a0080){_0x18612f[_0x357c('0x69')]=_0x3a0080;return _0x18612f;});}})[_0x357c('0x28')](respondWithFilteredResult(_0x324e3f,_0x3469e1))['catch'](handleError(_0x324e3f,null));};exports[_0x357c('0x11b')]=function(_0x29eea2,_0x265984){return db['ChatWebsite'][_0x357c('0x74')]({'where':{'id':_0x29eea2[_0x357c('0x6b')]['id']}})[_0x357c('0x28')](handleEntityNotFound(_0x265984,null))[_0x357c('0x28')](function(_0x25ddfe){if(_0x25ddfe){return _0x25ddfe['addAgents'](_0x29eea2['body'][_0x357c('0x7d')],_[_0x357c('0xf3')](_0x29eea2[_0x357c('0x6f')],[_0x357c('0x7d'),'id'])||{})[_0x357c('0xd4')](function(_0x36086e){for(var _0x1b645b=0x0;_0x1b645b<_0x29eea2[_0x357c('0x6f')][_0x357c('0x7d')]['length'];_0x1b645b+=0x1){socket[_0x357c('0x11c')]('userChatWebsite:save',{'UserId':Number(_0x29eea2[_0x357c('0x6f')][_0x357c('0x7d')][_0x1b645b]),'ChatWebsiteId':Number(_0x29eea2['params']['id'])});}return _0x36086e;});}})[_0x357c('0x28')](respondWithResult(_0x265984,null))[_0x357c('0x1e')](handleError(_0x265984,null));};exports['removeAgents']=function(_0xf87825,_0x254b00){return db[_0x357c('0x66')][_0x357c('0x74')]({'where':{'id':_0xf87825[_0x357c('0x6b')]['id']}})[_0x357c('0x28')](handleEntityNotFound(_0x254b00,null))[_0x357c('0x28')](function(_0x2f911a){if(_0x2f911a){return _0x2f911a['removeAgents'](_0xf87825['query'][_0x357c('0x7d')])['then'](function(){if(_[_0x357c('0x11d')](_0xf87825[_0x357c('0x57')]['ids'])){for(var _0x144b43=0x0;_0x144b43<_0xf87825[_0x357c('0x57')][_0x357c('0x7d')]['length'];_0x144b43+=0x1){socket[_0x357c('0x11c')]('userChatWebsite:remove',{'UserId':Number(_0xf87825[_0x357c('0x57')][_0x357c('0x7d')][_0x144b43]),'ChatWebsiteId':Number(_0xf87825[_0x357c('0x6b')]['id'])});}}else{socket[_0x357c('0x11c')](_0x357c('0x11e'),{'UserId':Number(_0xf87825['query'][_0x357c('0x7d')]),'ChatWebsiteId':Number(_0xf87825[_0x357c('0x6b')]['id'])});}});}})['then'](respondWithStatusCode(_0x254b00,null))[_0x357c('0x1e')](handleError(_0x254b00,null));};exports[_0x357c('0x11f')]=function(_0x37760b,_0x52e8d2){var _0x13a2a6={};var _0x1201cf={};var _0x2a5a01;var _0x4b7de0;return db['ChatWebsite'][_0x357c('0x7a')]({'where':{'id':_0x37760b[_0x357c('0x6b')]['id']}})[_0x357c('0x28')](handleEntityNotFound(_0x52e8d2,null))[_0x357c('0x28')](function(_0x35ad09){if(_0x35ad09){_0x2a5a01=_0x35ad09;_0x1201cf[_0x357c('0x4f')]=_['keys'](db[_0x357c('0xf5')][_0x357c('0x6c')]);_0x1201cf[_0x357c('0x57')]=_[_0x357c('0x58')](_0x37760b['query']);_0x1201cf[_0x357c('0x59')]=_[_0x357c('0x6d')](_0x1201cf['model'],_0x1201cf[_0x357c('0x57')]);_0x13a2a6[_0x357c('0x5a')]=_[_0x357c('0x6d')](_0x1201cf[_0x357c('0x4f')],qs[_0x357c('0x5b')](_0x37760b[_0x357c('0x57')]['fields']));_0x13a2a6[_0x357c('0x5a')]=_0x13a2a6[_0x357c('0x5a')][_0x357c('0x5c')]?_0x13a2a6[_0x357c('0x5a')]:_0x1201cf[_0x357c('0x4f')];_0x13a2a6['order']=qs[_0x357c('0x60')](_0x37760b[_0x357c('0x57')][_0x357c('0x60')]);_0x13a2a6[_0x357c('0x61')]=qs[_0x357c('0x59')](_['pick'](_0x37760b[_0x357c('0x57')],_0x1201cf[_0x357c('0x59')]));if(_0x37760b[_0x357c('0x57')]['filter']){_0x13a2a6[_0x357c('0x61')]=_['merge'](_0x13a2a6[_0x357c('0x61')],{'$or':_[_0x357c('0x3c')](_0x13a2a6[_0x357c('0x5a')],function(_0x26f692){var _0x346e81={};_0x346e81[_0x26f692]={'$like':'%'+_0x37760b[_0x357c('0x57')]['filter']+'%'};return _0x346e81;})});}_0x13a2a6=_['merge']({},_0x13a2a6,_0x37760b['options']);return _0x2a5a01[_0x357c('0x11f')](_0x13a2a6);}})[_0x357c('0x28')](function(_0x24fba0){if(_0x24fba0){_0x4b7de0=_0x24fba0[_0x357c('0x5c')];if(!_0x37760b[_0x357c('0x57')][_0x357c('0x5d')](_0x357c('0x5e'))){_0x13a2a6['limit']=qs[_0x357c('0x23')](_0x37760b[_0x357c('0x57')][_0x357c('0x23')]);_0x13a2a6[_0x357c('0x21')]=qs[_0x357c('0x21')](_0x37760b[_0x357c('0x57')][_0x357c('0x21')]);}return _0x2a5a01[_0x357c('0x11f')](_0x13a2a6);}})['then'](function(_0x56f850){if(_0x56f850){return _0x56f850?{'count':_0x4b7de0,'rows':_0x56f850}:null;}})[_0x357c('0x28')](respondWithResult(_0x52e8d2,null))[_0x357c('0x1e')](handleError(_0x52e8d2,null));};
\ No newline at end of file
index 12c5fbf..736d9a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['ChatWebsite','setMaxListeners','save','update','remove','emit','hook','events'];(function(_0xab4d52,_0x21c548){var _0x4c8131=function(_0x2efe43){while(--_0x2efe43){_0xab4d52['push'](_0xab4d52['shift']());}};_0x4c8131(++_0x21c548);}(_0xb43b,0xbf));var _0xbb43=function(_0x3b9cd1,_0x29c3db){_0x3b9cd1=_0x3b9cd1-0x0;var _0x5e53a0=_0xb43b[_0x3b9cd1];return _0x5e53a0;};'use strict';var EventEmitter=require(_0xbb43('0x0'));var ChatWebsite=require('../../mysqldb')['db'][_0xbb43('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xbb43('0x2')](0x0);var events={'afterCreate':_0xbb43('0x3'),'afterUpdate':_0xbb43('0x4'),'afterDestroy':_0xbb43('0x5')};function emitEvent(_0xeeec7c){return function(_0x2e9c09,_0x25f690,_0x24edde){ChatWebsiteEvents[_0xbb43('0x6')](_0xeeec7c+':'+_0x2e9c09['id'],_0x2e9c09);ChatWebsiteEvents[_0xbb43('0x6')](_0xeeec7c,_0x2e9c09);_0x24edde(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatWebsite[_0xbb43('0x7')](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
+var _0x423b=['update','emit','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners'];(function(_0x57bbe1,_0x443267){var _0x87c88e=function(_0x2c1ada){while(--_0x2c1ada){_0x57bbe1['push'](_0x57bbe1['shift']());}};_0x87c88e(++_0x443267);}(_0x423b,0x12b));var _0xb423=function(_0x4c440b,_0x3ea627){_0x4c440b=_0x4c440b-0x0;var _0x2d48cf=_0x423b[_0x4c440b];return _0x2d48cf;};'use strict';var EventEmitter=require('events');var ChatWebsite=require(_0xb423('0x0'))['db']['ChatWebsite'];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xb423('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0xb423('0x2'),'afterDestroy':'remove'};function emitEvent(_0x57cd26){return function(_0x50f31a,_0x2fa5da,_0x5f207d){ChatWebsiteEvents['emit'](_0x57cd26+':'+_0x50f31a['id'],_0x50f31a);ChatWebsiteEvents[_0xb423('0x3')](_0x57cd26,_0x50f31a);_0x5f207d(null);};}for(var e in events){if(events[_0xb423('0x4')](e)){var event=events[e];ChatWebsite[_0xb423('0x5')](e,emitEvent(event));}}module[_0xb423('0x6')]=ChatWebsiteEvents;
\ No newline at end of file
index 9610299..a808de2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2045=['ChatWebsite','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./chatWebsite.attributes','define'];(function(_0x4a7e98,_0x250137){var _0x27d10d=function(_0x378768){while(--_0x378768){_0x4a7e98['push'](_0x4a7e98['shift']());}};_0x27d10d(++_0x250137);}(_0x2045,0x109));var _0x5204=function(_0x269b97,_0x10d133){_0x269b97=_0x269b97-0x0;var _0x120efa=_0x2045[_0x269b97];return _0x120efa;};'use strict';var _=require(_0x5204('0x0'));var util=require(_0x5204('0x1'));var logger=require(_0x5204('0x2'))(_0x5204('0x3'));var moment=require(_0x5204('0x4'));var BPromise=require('bluebird');var rp=require(_0x5204('0x5'));var fs=require('fs');var path=require(_0x5204('0x6'));var rimraf=require(_0x5204('0x7'));var config=require(_0x5204('0x8'));var attributes=require(_0x5204('0x9'));module['exports']=function(_0x252bcd,_0x5ebf26){return _0x252bcd[_0x5204('0xa')](_0x5204('0xb'),attributes,{'tableName':'chat_websites','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb2dc=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./chatWebsite.attributes','exports','define','chat_websites','lodash','util'];(function(_0x1ae167,_0x100b84){var _0xf10470=function(_0x2dd7d7){while(--_0x2dd7d7){_0x1ae167['push'](_0x1ae167['shift']());}};_0xf10470(++_0x100b84);}(_0xb2dc,0x66));var _0xcb2d=function(_0xeab04b,_0x30bb48){_0xeab04b=_0xeab04b-0x0;var _0x4451f7=_0xb2dc[_0xeab04b];return _0x4451f7;};'use strict';var _=require(_0xcb2d('0x0'));var util=require(_0xcb2d('0x1'));var logger=require(_0xcb2d('0x2'))(_0xcb2d('0x3'));var moment=require(_0xcb2d('0x4'));var BPromise=require(_0xcb2d('0x5'));var rp=require(_0xcb2d('0x6'));var fs=require('fs');var path=require(_0xcb2d('0x7'));var rimraf=require(_0xcb2d('0x8'));var config=require('../../config/environment');var attributes=require(_0xcb2d('0x9'));module[_0xcb2d('0xa')]=function(_0x20f0fa,_0x4bb8f0){return _0x20f0fa[_0xcb2d('0xb')]('ChatWebsite',attributes,{'tableName':_0xcb2d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d9194db..71e5350 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3014=['error','code','ChatWebsite,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./chatWebsite.socket','register','request','request\x20sent','ChatWebsite,\x20%s,\x20%s,\x20%s'];(function(_0x3eb766,_0x10f89b){var _0x5c6fab=function(_0x56db6f){while(--_0x56db6f){_0x3eb766['push'](_0x3eb766['shift']());}};_0x5c6fab(++_0x10f89b);}(_0x3014,0x14a));var _0x4301=function(_0x36e87,_0x9cf332){_0x36e87=_0x36e87-0x0;var _0x5d4650=_0x3014[_0x36e87];return _0x5d4650;};'use strict';var _=require(_0x4301('0x0'));var util=require(_0x4301('0x1'));var moment=require(_0x4301('0x2'));var BPromise=require(_0x4301('0x3'));var rs=require(_0x4301('0x4'));var fs=require('fs');var Redis=require(_0x4301('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x4301('0x6'));var logger=require(_0x4301('0x7'))(_0x4301('0x8'));var config=require(_0x4301('0x9'));var jayson=require(_0x4301('0xa'));var client=jayson[_0x4301('0xb')][_0x4301('0xc')]({'port':0x232a});config['redis']=_['defaults'](config[_0x4301('0xd')],{'host':_0x4301('0xe'),'port':0x18eb});var socket=require(_0x4301('0xf'))(new Redis(config[_0x4301('0xd')]));require(_0x4301('0x10'))[_0x4301('0x11')](socket);function respondWithRpcPromise(_0x290026,_0x9a5890,_0x1cdcf6){return new BPromise(function(_0x4e1952,_0x2af0a5){return client[_0x4301('0x12')](_0x290026,_0x1cdcf6)['then'](function(_0x51c714){logger['info']('ChatWebsite,\x20%s,\x20%s',_0x9a5890,_0x4301('0x13'));logger['debug'](_0x4301('0x14'),_0x9a5890,_0x4301('0x13'),JSON['stringify'](_0x51c714));if(_0x51c714[_0x4301('0x15')]){if(_0x51c714['error'][_0x4301('0x16')]===0x1f4){logger[_0x4301('0x15')](_0x4301('0x17'),_0x9a5890,_0x51c714[_0x4301('0x15')]['message']);return _0x2af0a5(_0x51c714['error'][_0x4301('0x18')]);}logger[_0x4301('0x15')](_0x4301('0x17'),_0x9a5890,_0x51c714['error'][_0x4301('0x18')]);return _0x4e1952(_0x51c714[_0x4301('0x15')][_0x4301('0x18')]);}else{logger['info']('ChatWebsite,\x20%s,\x20%s',_0x9a5890,'request\x20sent');_0x4e1952(_0x51c714[_0x4301('0x19')][_0x4301('0x18')]);}})[_0x4301('0x1a')](function(_0xb6fbe9){logger[_0x4301('0x15')](_0x4301('0x17'),_0x9a5890,_0xb6fbe9);_0x2af0a5(_0xb6fbe9);});});}
\ No newline at end of file
+var _0x142e=['rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','register','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x24b852,_0x2bad67){var _0x180ad2=function(_0x454562){while(--_0x454562){_0x24b852['push'](_0x24b852['shift']());}};_0x180ad2(++_0x2bad67);}(_0x142e,0x107));var _0xe142=function(_0x154a42,_0x52ef94){_0x154a42=_0x154a42-0x0;var _0xdcb1bd=_0x142e[_0x154a42];return _0xdcb1bd;};'use strict';var _=require(_0xe142('0x0'));var util=require('util');var moment=require(_0xe142('0x1'));var BPromise=require(_0xe142('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe142('0x3'));var db=require(_0xe142('0x4'))['db'];var utils=require(_0xe142('0x5'));var logger=require(_0xe142('0x6'))(_0xe142('0x7'));var config=require('../../config/environment');var jayson=require(_0xe142('0x8'));var client=jayson[_0xe142('0x9')]['http']({'port':0x232a});config[_0xe142('0xa')]=_[_0xe142('0xb')](config[_0xe142('0xa')],{'host':_0xe142('0xc'),'port':0x18eb});var socket=require(_0xe142('0xd'))(new Redis(config['redis']));require(_0xe142('0xe'))[_0xe142('0xf')](socket);function respondWithRpcPromise(_0x242acf,_0x5d3e8a,_0x3db142){return new BPromise(function(_0x194bca,_0x226b9c){return client['request'](_0x242acf,_0x3db142)[_0xe142('0x10')](function(_0x5937dc){logger[_0xe142('0x11')](_0xe142('0x12'),_0x5d3e8a,_0xe142('0x13'));logger[_0xe142('0x14')](_0xe142('0x15'),_0x5d3e8a,'request\x20sent',JSON['stringify'](_0x5937dc));if(_0x5937dc[_0xe142('0x16')]){if(_0x5937dc['error'][_0xe142('0x17')]===0x1f4){logger[_0xe142('0x16')]('ChatWebsite,\x20%s,\x20%s',_0x5d3e8a,_0x5937dc['error'][_0xe142('0x18')]);return _0x226b9c(_0x5937dc[_0xe142('0x16')][_0xe142('0x18')]);}logger[_0xe142('0x16')](_0xe142('0x12'),_0x5d3e8a,_0x5937dc[_0xe142('0x16')][_0xe142('0x18')]);return _0x194bca(_0x5937dc[_0xe142('0x16')][_0xe142('0x18')]);}else{logger['info']('ChatWebsite,\x20%s,\x20%s',_0x5d3e8a,_0xe142('0x13'));_0x194bca(_0x5937dc[_0xe142('0x19')][_0xe142('0x18')]);}})[_0xe142('0x1a')](function(_0x272110){logger[_0xe142('0x16')](_0xe142('0x12'),_0x5d3e8a,_0x272110);_0x226b9c(_0x272110);});});}
\ No newline at end of file
index 409772d..fa05993 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa775=['register','length','chatWebsite:','./chatWebsite.events','save','remove','update'];(function(_0x331b13,_0x1dd7e0){var _0x1814c2=function(_0x166dc2){while(--_0x166dc2){_0x331b13['push'](_0x331b13['shift']());}};_0x1814c2(++_0x1dd7e0);}(_0xa775,0x129));var _0x5a77=function(_0x4e0f73,_0x553596){_0x4e0f73=_0x4e0f73-0x0;var _0x471e53=_0xa775[_0x4e0f73];return _0x471e53;};'use strict';var ChatWebsiteEvents=require(_0x5a77('0x0'));var events=[_0x5a77('0x1'),_0x5a77('0x2'),_0x5a77('0x3')];function createListener(_0x58ac20,_0x3f9fa5){return function(_0x7cad0f){_0x3f9fa5['emit'](_0x58ac20,_0x7cad0f);};}function removeListener(_0x545e5a,_0x5916ac){return function(){ChatWebsiteEvents['removeListener'](_0x545e5a,_0x5916ac);};}exports[_0x5a77('0x4')]=function(_0x20561c){for(var _0x3b6b52=0x0,_0x1e3108=events[_0x5a77('0x5')];_0x3b6b52<_0x1e3108;_0x3b6b52++){var _0x59eec3=events[_0x3b6b52];var _0x2df035=createListener(_0x5a77('0x6')+_0x59eec3,_0x20561c);ChatWebsiteEvents['on'](_0x59eec3,_0x2df035);}};
\ No newline at end of file
+var _0xc651=['emit','removeListener','register','length','chatWebsite:','./chatWebsite.events','save','update'];(function(_0x2a655e,_0x419bc6){var _0x8a2d2d=function(_0x1b87a9){while(--_0x1b87a9){_0x2a655e['push'](_0x2a655e['shift']());}};_0x8a2d2d(++_0x419bc6);}(_0xc651,0x1bd));var _0x1c65=function(_0x2df9d2,_0x3e4cf4){_0x2df9d2=_0x2df9d2-0x0;var _0x2c3635=_0xc651[_0x2df9d2];return _0x2c3635;};'use strict';var ChatWebsiteEvents=require(_0x1c65('0x0'));var events=[_0x1c65('0x1'),'remove',_0x1c65('0x2')];function createListener(_0x284a3a,_0x541391){return function(_0x3d62c0){_0x541391[_0x1c65('0x3')](_0x284a3a,_0x3d62c0);};}function removeListener(_0x55dc04,_0x5dc6ea){return function(){ChatWebsiteEvents[_0x1c65('0x4')](_0x55dc04,_0x5dc6ea);};}exports[_0x1c65('0x5')]=function(_0x2aef24){for(var _0xc8865a=0x0,_0x42ab0d=events[_0x1c65('0x6')];_0xc8865a<_0x42ab0d;_0xc8865a++){var _0x2f449e=events[_0xc8865a];var _0x370970=createListener(_0x1c65('0x7')+_0x2f449e,_0x2aef24);ChatWebsiteEvents['on'](_0x2f449e,_0x370970);}};
\ No newline at end of file
index 18a8917..b31a515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7895=['../../components/auth/service','../../config/environment','./chatWebsite.controller','isAuthenticated','index','get','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','/:id/snippet','getSnippet','/:id/applications','/:id/proactive_actions','getProactiveActions','/:id/fields','/:id/offline_messages','getOfflineMessages','getAgents','post','create','addDisposition','diskStorage','root','server/files/images/logos/','format','now','single','file','addLogo','join','server/files/images/avatars/','%s-%s','originalname','addAvatar','/:id/customer_avatar','addCustomerAvatar','addSystemAvatar','/:id/notify','server/files','attachments','ensureDir','extname','replace','/:id/offline','offline','addInteraction','addProactiveActions','addAgents','update','destroy','delete','removeDispositions','removeAnswers','/:id/users','removeAgents','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x4e18b8,_0xa8e6a4){var _0x36ae51=function(_0x1b78af){while(--_0x1b78af){_0x4e18b8['push'](_0x4e18b8['shift']());}};_0x36ae51(++_0xa8e6a4);}(_0x7895,0x167));var _0x5789=function(_0x11f275,_0x1cbadf){_0x11f275=_0x11f275-0x0;var _0xad208c=_0x7895[_0x11f275];return _0xad208c;};'use strict';var multer=require(_0x5789('0x0'));var util=require(_0x5789('0x1'));var path=require(_0x5789('0x2'));var timeout=require(_0x5789('0x3'));var express=require('express');var router=express[_0x5789('0x4')]();var fs_extra=require(_0x5789('0x5'));var auth=require(_0x5789('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5789('0x7'));var controller=require(_0x5789('0x8'));router['get']('/',auth[_0x5789('0x9')](),controller[_0x5789('0xa')]);router[_0x5789('0xb')](_0x5789('0xc'),auth[_0x5789('0x9')](),controller[_0x5789('0xd')]);router[_0x5789('0xb')](_0x5789('0xe'),auth['isAuthenticated'](),controller[_0x5789('0xf')]);router[_0x5789('0xb')](_0x5789('0x10'),auth['isAuthenticated'](),controller[_0x5789('0x11')]);router['get'](_0x5789('0x12'),auth[_0x5789('0x9')](),controller[_0x5789('0x13')]);router[_0x5789('0xb')](_0x5789('0x14'),controller[_0x5789('0x15')]);router[_0x5789('0xb')](_0x5789('0x16'),controller['getAvatar']);router[_0x5789('0xb')]('/:id/customer_avatar',controller[_0x5789('0x17')]);router[_0x5789('0xb')](_0x5789('0x18'),controller[_0x5789('0x19')]);router[_0x5789('0xb')](_0x5789('0x1a'),auth[_0x5789('0x9')](),controller['getInteractions']);router[_0x5789('0xb')](_0x5789('0x1b'),controller[_0x5789('0x1c')]);router['get'](_0x5789('0x1d'),auth[_0x5789('0x9')](),controller['getApplications']);router['get'](_0x5789('0x1e'),auth[_0x5789('0x9')](),controller[_0x5789('0x1f')]);router['get'](_0x5789('0x20'),controller['getFields']);router[_0x5789('0xb')](_0x5789('0x21'),auth[_0x5789('0x9')](),controller[_0x5789('0x22')]);router[_0x5789('0xb')]('/:id/users',auth['isAuthenticated'](),controller[_0x5789('0x23')]);router[_0x5789('0x24')]('/',auth[_0x5789('0x9')](),controller[_0x5789('0x25')]);router[_0x5789('0x24')](_0x5789('0x10'),auth['isAuthenticated'](),controller[_0x5789('0x26')]);router[_0x5789('0x24')]('/:id/canned_answers',auth[_0x5789('0x9')](),controller['addAnswer']);var upload=multer({'storage':multer[_0x5789('0x27')]({'destination':function(_0x4bfe4d,_0x47b3f9,_0x1c9887){_0x1c9887(null,path['join'](config[_0x5789('0x28')],_0x5789('0x29')));},'filename':function(_0x443477,_0x36a870,_0x211676){_0x211676(null,util[_0x5789('0x2a')]('%s-%s',Date[_0x5789('0x2b')](),_0x36a870['originalname']));}})});router[_0x5789('0x24')](_0x5789('0x14'),upload[_0x5789('0x2c')](_0x5789('0x2d')),controller[_0x5789('0x2e')]);var upload=multer({'storage':multer[_0x5789('0x27')]({'destination':function(_0x2a1ef1,_0x6e1267,_0x47beca){_0x47beca(null,path[_0x5789('0x2f')](config[_0x5789('0x28')],_0x5789('0x30')));},'filename':function(_0x5af377,_0x1dd097,_0x369d68){_0x369d68(null,util['format'](_0x5789('0x31'),Date[_0x5789('0x2b')](),_0x1dd097[_0x5789('0x32')]));}})});router[_0x5789('0x24')](_0x5789('0x16'),upload['single'](_0x5789('0x2d')),controller[_0x5789('0x33')]);var upload=multer({'storage':multer[_0x5789('0x27')]({'destination':function(_0x5d7e29,_0x5d1a5b,_0x1be21d){_0x1be21d(null,path[_0x5789('0x2f')](config[_0x5789('0x28')],_0x5789('0x30')));},'filename':function(_0xd80c0b,_0x2b74b8,_0x4c4339){_0x4c4339(null,util[_0x5789('0x2a')](_0x5789('0x31'),Date[_0x5789('0x2b')](),_0x2b74b8['originalname']));}})});router[_0x5789('0x24')](_0x5789('0x34'),upload[_0x5789('0x2c')](_0x5789('0x2d')),controller[_0x5789('0x35')]);var upload=multer({'storage':multer[_0x5789('0x27')]({'destination':function(_0x20ca46,_0x47474d,_0x36e204){_0x36e204(null,path[_0x5789('0x2f')](config['root'],_0x5789('0x30')));},'filename':function(_0x3c83b7,_0xcd55e4,_0x24c0c6){_0x24c0c6(null,util[_0x5789('0x2a')](_0x5789('0x31'),Date[_0x5789('0x2b')](),_0xcd55e4['originalname']));}})});router[_0x5789('0x24')](_0x5789('0x18'),upload[_0x5789('0x2c')]('file'),controller[_0x5789('0x36')]);router[_0x5789('0x24')](_0x5789('0x37'),controller['notify']);const offlineUploadMulter=multer({'storage':multer['diskStorage']({'destination':function(_0x5a7e8e,_0x5ba9ab,_0x309251){const _0x404d92=path[_0x5789('0x2f')](config[_0x5789('0x28')],_0x5789('0x38'),_0x5789('0x39'),'offline-chat');fs_extra[_0x5789('0x3a')](_0x404d92,function(){_0x309251(null,_0x404d92);});},'filename':function(_0x155436,_0x14a3e5,_0x277d42){const _0x58aea4=_0x14a3e5[_0x5789('0x32')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x231a0d=path[_0x5789('0x3b')](_0x58aea4);const _0x1f3802=Date['now']()+'-'+_0x58aea4[_0x5789('0x3c')](_0x231a0d,'')+_0x231a0d;_0x277d42(null,_0x1f3802);}})});router['post'](_0x5789('0x3d'),offlineUploadMulter['any'](),controller[_0x5789('0x3e')]);router[_0x5789('0x24')]('/:id/interactions',auth['isAuthenticated'](),controller[_0x5789('0x3f')]);router[_0x5789('0x24')](_0x5789('0x1d'),auth[_0x5789('0x9')](),controller['addApplications']);router[_0x5789('0x24')](_0x5789('0x1e'),auth[_0x5789('0x9')](),controller[_0x5789('0x40')]);router[_0x5789('0x24')]('/:id/users',auth[_0x5789('0x9')](),controller[_0x5789('0x41')]);router['put']('/:id',auth[_0x5789('0x9')](),controller[_0x5789('0x42')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x5789('0x43')]);router[_0x5789('0x44')](_0x5789('0x10'),auth[_0x5789('0x9')](),controller[_0x5789('0x45')]);router[_0x5789('0x44')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x5789('0x46')]);router['delete'](_0x5789('0x47'),auth['isAuthenticated'](),controller[_0x5789('0x48')]);module['exports']=router;
\ No newline at end of file
+var _0x662d=['index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','getAnswers','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','/:id/applications','getApplications','/:id/proactive_actions','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','post','create','join','root','server/files/images/logos/','format','%s-%s','now','originalname','single','file','addLogo','diskStorage','server/files/images/avatars/','addAvatar','addCustomerAvatar','addSystemAvatar','/:id/notify','notify','server/files','offline-chat','replace','extname','/:id/offline','any','addInteraction','addProactiveActions','update','delete','destroy','removeDispositions','removeAgents','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./chatWebsite.controller','get','isAuthenticated'];(function(_0x5981bc,_0x128145){var _0x1da00a=function(_0x52b65b){while(--_0x52b65b){_0x5981bc['push'](_0x5981bc['shift']());}};_0x1da00a(++_0x128145);}(_0x662d,0x154));var _0xd662=function(_0x1996ec,_0x4fe1df){_0x1996ec=_0x1996ec-0x0;var _0x4905e8=_0x662d[_0x1996ec];return _0x4905e8;};'use strict';var multer=require(_0xd662('0x0'));var util=require(_0xd662('0x1'));var path=require(_0xd662('0x2'));var timeout=require('connect-timeout');var express=require(_0xd662('0x3'));var router=express['Router']();var fs_extra=require(_0xd662('0x4'));var auth=require(_0xd662('0x5'));var interaction=require(_0xd662('0x6'));var config=require('../../config/environment');var controller=require(_0xd662('0x7'));router[_0xd662('0x8')]('/',auth[_0xd662('0x9')](),controller[_0xd662('0xa')]);router[_0xd662('0x8')](_0xd662('0xb'),auth['isAuthenticated'](),controller[_0xd662('0xc')]);router['get'](_0xd662('0xd'),auth[_0xd662('0x9')](),controller[_0xd662('0xe')]);router[_0xd662('0x8')](_0xd662('0xf'),auth[_0xd662('0x9')](),controller[_0xd662('0x10')]);router[_0xd662('0x8')]('/:id/canned_answers',auth[_0xd662('0x9')](),controller[_0xd662('0x11')]);router[_0xd662('0x8')]('/:id/logo',controller[_0xd662('0x12')]);router['get'](_0xd662('0x13'),controller[_0xd662('0x14')]);router[_0xd662('0x8')](_0xd662('0x15'),controller[_0xd662('0x16')]);router[_0xd662('0x8')](_0xd662('0x17'),controller[_0xd662('0x18')]);router['get'](_0xd662('0x19'),auth['isAuthenticated'](),controller[_0xd662('0x1a')]);router['get'](_0xd662('0x1b'),controller['getSnippet']);router[_0xd662('0x8')](_0xd662('0x1c'),auth['isAuthenticated'](),controller[_0xd662('0x1d')]);router[_0xd662('0x8')](_0xd662('0x1e'),auth[_0xd662('0x9')](),controller[_0xd662('0x1f')]);router['get'](_0xd662('0x20'),controller[_0xd662('0x21')]);router['get'](_0xd662('0x22'),auth[_0xd662('0x9')](),controller[_0xd662('0x23')]);router[_0xd662('0x8')](_0xd662('0x24'),auth['isAuthenticated'](),controller['getAgents']);router[_0xd662('0x25')]('/',auth['isAuthenticated'](),controller[_0xd662('0x26')]);router['post'](_0xd662('0xf'),auth[_0xd662('0x9')](),controller['addDisposition']);router[_0xd662('0x25')]('/:id/canned_answers',auth['isAuthenticated'](),controller['addAnswer']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x306c29,_0x2a1c21,_0x9b011b){_0x9b011b(null,path[_0xd662('0x27')](config[_0xd662('0x28')],_0xd662('0x29')));},'filename':function(_0x8ffee,_0x4e9896,_0x2eea60){_0x2eea60(null,util[_0xd662('0x2a')](_0xd662('0x2b'),Date[_0xd662('0x2c')](),_0x4e9896[_0xd662('0x2d')]));}})});router[_0xd662('0x25')]('/:id/logo',upload[_0xd662('0x2e')](_0xd662('0x2f')),controller[_0xd662('0x30')]);var upload=multer({'storage':multer[_0xd662('0x31')]({'destination':function(_0x58ce13,_0x1a9892,_0x2f7101){_0x2f7101(null,path[_0xd662('0x27')](config[_0xd662('0x28')],_0xd662('0x32')));},'filename':function(_0x15e70c,_0x66f70a,_0x5b060a){_0x5b060a(null,util['format']('%s-%s',Date[_0xd662('0x2c')](),_0x66f70a['originalname']));}})});router['post'](_0xd662('0x13'),upload[_0xd662('0x2e')](_0xd662('0x2f')),controller[_0xd662('0x33')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x55a729,_0x2a3d4e,_0x37db7d){_0x37db7d(null,path['join'](config[_0xd662('0x28')],_0xd662('0x32')));},'filename':function(_0xcab7ff,_0x400c1c,_0x29fb2e){_0x29fb2e(null,util[_0xd662('0x2a')]('%s-%s',Date[_0xd662('0x2c')](),_0x400c1c[_0xd662('0x2d')]));}})});router['post'](_0xd662('0x15'),upload[_0xd662('0x2e')](_0xd662('0x2f')),controller[_0xd662('0x34')]);var upload=multer({'storage':multer[_0xd662('0x31')]({'destination':function(_0x54d1dd,_0xfea915,_0x1d4bf0){_0x1d4bf0(null,path[_0xd662('0x27')](config[_0xd662('0x28')],_0xd662('0x32')));},'filename':function(_0x5791ee,_0x117ac7,_0x503c66){_0x503c66(null,util['format'](_0xd662('0x2b'),Date['now'](),_0x117ac7[_0xd662('0x2d')]));}})});router[_0xd662('0x25')](_0xd662('0x17'),upload[_0xd662('0x2e')](_0xd662('0x2f')),controller[_0xd662('0x35')]);router[_0xd662('0x25')](_0xd662('0x36'),controller[_0xd662('0x37')]);const offlineUploadMulter=multer({'storage':multer['diskStorage']({'destination':function(_0x5cffc7,_0xce324a,_0x38c29c){const _0xae0953=path['join'](config[_0xd662('0x28')],_0xd662('0x38'),'attachments',_0xd662('0x39'));fs_extra['ensureDir'](_0xae0953,function(){_0x38c29c(null,_0xae0953);});},'filename':function(_0x5193e8,_0x2d62d6,_0x59237e){const _0x167fee=_0x2d62d6[_0xd662('0x2d')][_0xd662('0x3a')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x381f0f=path[_0xd662('0x3b')](_0x167fee);const _0x26e47f=Date['now']()+'-'+_0x167fee['replace'](_0x381f0f,'')+_0x381f0f;_0x59237e(null,_0x26e47f);}})});router[_0xd662('0x25')](_0xd662('0x3c'),offlineUploadMulter[_0xd662('0x3d')](),controller['offline']);router[_0xd662('0x25')](_0xd662('0x19'),auth['isAuthenticated'](),controller[_0xd662('0x3e')]);router[_0xd662('0x25')]('/:id/applications',auth[_0xd662('0x9')](),controller['addApplications']);router[_0xd662('0x25')]('/:id/proactive_actions',auth[_0xd662('0x9')](),controller[_0xd662('0x3f')]);router[_0xd662('0x25')](_0xd662('0x24'),auth[_0xd662('0x9')](),controller['addAgents']);router['put'](_0xd662('0xd'),auth['isAuthenticated'](),controller[_0xd662('0x40')]);router[_0xd662('0x41')](_0xd662('0xd'),auth[_0xd662('0x9')](),controller[_0xd662('0x42')]);router[_0xd662('0x41')](_0xd662('0xf'),auth[_0xd662('0x9')](),controller[_0xd662('0x43')]);router[_0xd662('0x41')]('/:id/canned_answers',auth[_0xd662('0x9')](),controller['removeAnswers']);router[_0xd662('0x41')](_0xd662('0x24'),auth['isAuthenticated'](),controller[_0xd662('0x44')]);module[_0xd662('0x45')]=router;
\ No newline at end of file
index b097941..be8b0b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2b5=['use','isAuthenticated','beaver-logger/server','express','../components/auth/service','../config/environment','Router','production','app','client-side-logger','Client-Side\x20logger\x20not\x20found!','expressEndpoint'];(function(_0x4d12c2,_0x2ad644){var _0x18e9c6=function(_0x35c221){while(--_0x35c221){_0x4d12c2['push'](_0x4d12c2['shift']());}};_0x18e9c6(++_0x2ad644);}(_0xf2b5,0x152));var _0x5f2b=function(_0x2c0dc0,_0x19900d){_0x2c0dc0=_0x2c0dc0-0x0;var _0x4c0990=_0xf2b5[_0x2c0dc0];return _0x4c0990;};var beaverLogger=require(_0x5f2b('0x0'));var express=require(_0x5f2b('0x1'));var auth=require(_0x5f2b('0x2'));var config=require(_0x5f2b('0x3'));var router=express[_0x5f2b('0x4')]();var isProduction=config['env']===_0x5f2b('0x5')||![];function clientSideLogs(_0x3693ae,_0x5f00ea,_0x40adcc){var _0x40b398=_0x3693ae[_0x5f2b('0x6')]['get'](_0x5f2b('0x7'));if(!_0x40b398){throw new Error(_0x5f2b('0x8'));}return beaverLogger[_0x5f2b('0x9')]({'uri':'/client-logs','logger':_0x40b398,'enableCors':!isProduction})(_0x3693ae,_0x5f00ea,_0x40adcc);}router[_0x5f2b('0xa')](auth[_0x5f2b('0xb')](),clientSideLogs);module['exports']=router;
\ No newline at end of file
+var _0x88d8=['client-side-logger','Client-Side\x20logger\x20not\x20found!','expressEndpoint','/client-logs','use','express','../config/environment','Router','env','production','app','get'];(function(_0x449477,_0x39fe19){var _0x486a66=function(_0x3f4eee){while(--_0x3f4eee){_0x449477['push'](_0x449477['shift']());}};_0x486a66(++_0x39fe19);}(_0x88d8,0x65));var _0x888d=function(_0x4611f2,_0x531cc9){_0x4611f2=_0x4611f2-0x0;var _0x198a3f=_0x88d8[_0x4611f2];return _0x198a3f;};var beaverLogger=require('beaver-logger/server');var express=require(_0x888d('0x0'));var auth=require('../components/auth/service');var config=require(_0x888d('0x1'));var router=express[_0x888d('0x2')]();var isProduction=config[_0x888d('0x3')]===_0x888d('0x4')||![];function clientSideLogs(_0x381f92,_0x7e5197,_0x52dde0){var _0x4e5533=_0x381f92[_0x888d('0x5')][_0x888d('0x6')](_0x888d('0x7'));if(!_0x4e5533){throw new Error(_0x888d('0x8'));}return beaverLogger[_0x888d('0x9')]({'uri':_0x888d('0xa'),'logger':_0x4e5533,'enableCors':!isProduction})(_0x381f92,_0x7e5197,_0x52dde0);}router[_0x888d('0xb')](auth['isAuthenticated'](),clientSideLogs);module['exports']=router;
\ No newline at end of file
index b41c9da..426ceeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bde=['sequelize','exports','STRING','ENUM','AmazonAWS','Google','MicrosoftAzure','Dynamics365','MicrosoftAzure\x20=>\x20client_id','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','MicrosoftAzure\x20=>\x20access_token','TEXT','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri'];(function(_0x242d32,_0x44fb0e){var _0x14af4e=function(_0x1252a6){while(--_0x1252a6){_0x242d32['push'](_0x242d32['shift']());}};_0x14af4e(++_0x44fb0e);}(_0x3bde,0x190));var _0xe3bd=function(_0x35da42,_0x5c2610){_0x35da42=_0x35da42-0x0;var _0x370035=_0x3bde[_0x35da42];return _0x370035;};'use strict';var Sequelize=require(_0xe3bd('0x0'));module[_0xe3bd('0x1')]={'name':{'type':Sequelize[_0xe3bd('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xe3bd('0x3')](_0xe3bd('0x4'),_0xe3bd('0x5'),_0xe3bd('0x6')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0xe3bd('0x3')]('Outlook365',_0xe3bd('0x7'))},'data1':{'type':Sequelize[_0xe3bd('0x2')],'comment':_0xe3bd('0x8')},'data2':{'type':Sequelize[_0xe3bd('0x2')],'comment':_0xe3bd('0x9')},'data3':{'type':Sequelize[_0xe3bd('0x2')],'comment':_0xe3bd('0xa')},'data4':{'type':Sequelize[_0xe3bd('0x2')],'comment':_0xe3bd('0xb')},'data5':{'type':Sequelize['TEXT'],'comment':_0xe3bd('0xc')},'data6':{'type':Sequelize[_0xe3bd('0xd')],'comment':_0xe3bd('0xe')},'data7':{'type':Sequelize[_0xe3bd('0xd')],'comment':_0xe3bd('0xf')}};
\ No newline at end of file
+var _0x5278=['MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','ENUM','AmazonAWS','Google','Outlook365','STRING','MicrosoftAzure\x20=>\x20client_id','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token'];(function(_0x279a9d,_0x259391){var _0x29abd0=function(_0x1e1de1){while(--_0x1e1de1){_0x279a9d['push'](_0x279a9d['shift']());}};_0x29abd0(++_0x259391);}(_0x5278,0xd1));var _0x8527=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x5278[_0x4b369d];return _0x571a98;};'use strict';var Sequelize=require(_0x8527('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0x8527('0x1')](_0x8527('0x2'),_0x8527('0x3'),'MicrosoftAzure'),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0x8527('0x1')](_0x8527('0x4'),'Dynamics365')},'data1':{'type':Sequelize[_0x8527('0x5')],'comment':_0x8527('0x6')},'data2':{'type':Sequelize[_0x8527('0x5')],'comment':_0x8527('0x7')},'data3':{'type':Sequelize[_0x8527('0x5')],'comment':_0x8527('0x8')},'data4':{'type':Sequelize[_0x8527('0x5')],'comment':_0x8527('0x9')},'data5':{'type':Sequelize[_0x8527('0xa')],'comment':_0x8527('0xb')},'data6':{'type':Sequelize[_0x8527('0xa')],'comment':'MicrosoftAzure\x20=>\x20refresh_token'},'data7':{'type':Sequelize[_0x8527('0xa')],'comment':_0x8527('0xc')}};
\ No newline at end of file
index 0291182..650cac5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e7f=['params','filters','length','include','find','data3','create','Name\x20parameter\x20not\x20specified','service','Service\x20parameter\x20not\x20specified','values','includes','body','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','encryptString','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','get','state','parse','from','base64','ascii','isValidIdToken','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','getOauth2MicrosoftAccessToken','code','data5','access_token','data6','startRefreshInterval','microsoftAuthorization:success','send','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../mysqldb','./cloudProvider.oauth','redis','defaults','sendStatus','status','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','error','stack','name','slice','map','CloudProvider','rawAttributes','fieldName','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','findAll','rows','MicrosoftAzure','decryptString','catch','show'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0x9e7f,0xe0));var _0xf9e7=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9e7f[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xf9e7('0x0'));var Redis=require(_0xf9e7('0x1'));var qs=require(_0xf9e7('0x2'));var encryptor=require('../../components/encryptor');var config=require('../../config/environment');var logger=require(_0xf9e7('0x3'))(_0xf9e7('0x4'));var db=require(_0xf9e7('0x5'))['db'];var oauth=require(_0xf9e7('0x6'));config[_0xf9e7('0x7')]=_[_0xf9e7('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf9e7('0x7')]));var redis=new Redis(config[_0xf9e7('0x7')]);function respondWithStatusCode(_0x2c6068,_0x1ab633){_0x1ab633=_0x1ab633||0xcc;return function(_0x5911ca){if(_0x5911ca){return _0x2c6068[_0xf9e7('0x9')](_0x1ab633);}return _0x2c6068[_0xf9e7('0xa')](_0x1ab633)['end']();};}function respondWithResult(_0x86cb6e,_0x465b5d){_0x465b5d=_0x465b5d||0xc8;return function(_0x44e113){if(_0x44e113){return _0x86cb6e[_0xf9e7('0xa')](_0x465b5d)['json'](_0x44e113);}};}function respondWithFilteredResult(_0x3a62e3,_0x3f2df7){return function(_0x48aea2){if(_0x48aea2){var _0x2f4b12=typeof _0x3f2df7[_0xf9e7('0xb')]===_0xf9e7('0xc')&&typeof _0x3f2df7[_0xf9e7('0xd')]==='undefined';var _0x490b7e=_0x48aea2[_0xf9e7('0xe')];var _0x125f5c=_0x2f4b12?0x0:_0x3f2df7[_0xf9e7('0xb')];var _0x410776=_0x2f4b12?_0x48aea2[_0xf9e7('0xe')]:_0x3f2df7[_0xf9e7('0xb')]+_0x3f2df7[_0xf9e7('0xd')];var _0x21680f;if(_0x410776>=_0x490b7e){_0x410776=_0x490b7e;_0x21680f=0xc8;}else{_0x21680f=0xce;}_0x3a62e3['status'](_0x21680f);return _0x3a62e3[_0xf9e7('0xf')](_0xf9e7('0x10'),_0x125f5c+'-'+_0x410776+'/'+_0x490b7e)['json'](_0x48aea2);}return null;};}function saveUpdates(_0x42668d){return function(_0x470412){if(_0x470412){return _0x470412[_0xf9e7('0x11')](_0x42668d)[_0xf9e7('0x12')](function(_0x21a21b){return _0x21a21b;});}return null;};}function removeEntity(_0x528604){return function(_0x3a2bdf){if(_0x3a2bdf){return _0x3a2bdf[_0xf9e7('0x13')]()[_0xf9e7('0x12')](function(){_0x528604[_0xf9e7('0xa')](0xcc)[_0xf9e7('0x14')]();});}};}function handleEntityNotFound(_0x1842a8){return function(_0x13b633){if(!_0x13b633){_0x1842a8[_0xf9e7('0x9')](0x194);}return _0x13b633;};}function handleError(_0x4a2ee3,_0x3938ae){_0x3938ae=_0x3938ae||0x1f4;return function(_0x313114){logger[_0xf9e7('0x15')](_0x313114[_0xf9e7('0x16')]);if(_0x313114[_0xf9e7('0x17')]){delete _0x313114[_0xf9e7('0x17')];}_0x4a2ee3[_0xf9e7('0xa')](_0x3938ae)['send'](_0x313114);};}function maskClientSecret(_0x5d2c61){return _['padEnd'](_0x5d2c61[_0xf9e7('0x18')](0x0,0x3),0x14,'*');}exports['index']=function(_0x3e8b41,_0x52c537){var _0xaf5f49={},_0x3126e3={},_0x482b8d={'count':0x0,'rows':[]};var _0x5a0b84=_[_0xf9e7('0x19')](db[_0xf9e7('0x1a')][_0xf9e7('0x1b')],function(_0xa7b357){return{'name':_0xa7b357[_0xf9e7('0x1c')],'type':_0xa7b357['type'][_0xf9e7('0x1d')]};});_0x3126e3[_0xf9e7('0x1e')]=_[_0xf9e7('0x19')](_0x5a0b84,_0xf9e7('0x17'));_0x3126e3[_0xf9e7('0x1f')]=_[_0xf9e7('0x20')](_0x3e8b41[_0xf9e7('0x1f')]);_0x3126e3['filters']=_['intersection'](_0x3126e3[_0xf9e7('0x1e')],_0x3126e3['query']);_0xaf5f49['attributes']=_[_0xf9e7('0x21')](_0x3126e3['model'],qs['fields'](_0x3e8b41['query'][_0xf9e7('0x22')]));_0xaf5f49['attributes']=_0xaf5f49['attributes']['length']?_0xaf5f49[_0xf9e7('0x23')]:_0x3126e3['model'];if(!_0x3e8b41[_0xf9e7('0x1f')][_0xf9e7('0x24')]('nolimit')){_0xaf5f49['limit']=qs[_0xf9e7('0xd')](_0x3e8b41[_0xf9e7('0x1f')][_0xf9e7('0xd')]);_0xaf5f49[_0xf9e7('0xb')]=qs['offset'](_0x3e8b41['query'][_0xf9e7('0xb')]);}_0xaf5f49['order']=qs[_0xf9e7('0x25')](_0x3e8b41[_0xf9e7('0x1f')]['sort']);_0xaf5f49[_0xf9e7('0x26')]=qs['filters'](_[_0xf9e7('0x27')](_0x3e8b41[_0xf9e7('0x1f')],_0x3126e3['filters']),_0x5a0b84);if(_0x3e8b41[_0xf9e7('0x1f')][_0xf9e7('0x28')]){_0xaf5f49['where']=_['merge'](_0xaf5f49[_0xf9e7('0x26')],{'$or':_[_0xf9e7('0x19')](_0x5a0b84,function(_0x3605a2){if(_0x3605a2[_0xf9e7('0x29')]!==_0xf9e7('0x2a')){var _0x1905ff={};_0x1905ff[_0x3605a2[_0xf9e7('0x17')]]={'$like':'%'+_0x3e8b41['query']['filter']+'%'};return _0x1905ff;}})});}_0xaf5f49=_[_0xf9e7('0x2b')]({},_0xaf5f49,_0x3e8b41[_0xf9e7('0x2c')]);var _0x4c3865={'where':_0xaf5f49['where']};return db[_0xf9e7('0x1a')]['count'](_0x4c3865)[_0xf9e7('0x12')](function(_0x53551d){_0x482b8d[_0xf9e7('0xe')]=_0x53551d;if(_0x3e8b41[_0xf9e7('0x1f')][_0xf9e7('0x2d')]){_0xaf5f49['include']=[{'all':!![]}];}return db[_0xf9e7('0x1a')][_0xf9e7('0x2e')](_0xaf5f49);})[_0xf9e7('0x12')](function(_0x32766f){_0x482b8d[_0xf9e7('0x2f')]=_['map'](_0x32766f,function(_0x2a7655){if(_0x2a7655['service']===_0xf9e7('0x30')){var _0x45f372=encryptor[_0xf9e7('0x31')](_0x2a7655['data3']);_0x2a7655['data3']=maskClientSecret(_0x45f372);}return _0x2a7655;});return _0x482b8d;})[_0xf9e7('0x12')](respondWithFilteredResult(_0x52c537,_0xaf5f49))[_0xf9e7('0x32')](handleError(_0x52c537,null));};exports[_0xf9e7('0x33')]=function(_0x50b069,_0x3aaefb){var _0x19dc2a={'raw':!![],'where':{'id':_0x50b069[_0xf9e7('0x34')]['id']}},_0x5d3589={};_0x5d3589[_0xf9e7('0x1e')]=_[_0xf9e7('0x20')](db[_0xf9e7('0x1a')]['rawAttributes']);_0x5d3589[_0xf9e7('0x1f')]=_['keys'](_0x50b069[_0xf9e7('0x1f')]);_0x5d3589[_0xf9e7('0x35')]=_[_0xf9e7('0x21')](_0x5d3589['model'],_0x5d3589[_0xf9e7('0x1f')]);_0x19dc2a['attributes']=_['intersection'](_0x5d3589[_0xf9e7('0x1e')],qs[_0xf9e7('0x22')](_0x50b069['query'][_0xf9e7('0x22')]));_0x19dc2a['attributes']=_0x19dc2a[_0xf9e7('0x23')][_0xf9e7('0x36')]?_0x19dc2a['attributes']:_0x5d3589[_0xf9e7('0x1e')];if(_0x50b069[_0xf9e7('0x1f')][_0xf9e7('0x2d')]){_0x19dc2a[_0xf9e7('0x37')]=[{'all':!![]}];}_0x19dc2a=_[_0xf9e7('0x2b')]({},_0x19dc2a,_0x50b069[_0xf9e7('0x2c')]);return db[_0xf9e7('0x1a')][_0xf9e7('0x38')](_0x19dc2a)[_0xf9e7('0x12')](handleEntityNotFound(_0x3aaefb,null))['then'](function(_0x9ed4dd){if(_0x9ed4dd['service']===_0xf9e7('0x30')){var _0x1d24f0=encryptor[_0xf9e7('0x31')](_0x9ed4dd[_0xf9e7('0x39')]);_0x9ed4dd[_0xf9e7('0x39')]=maskClientSecret(_0x1d24f0);}return _0x9ed4dd;})[_0xf9e7('0x12')](respondWithResult(_0x3aaefb,null))[_0xf9e7('0x32')](handleError(_0x3aaefb,null));};exports[_0xf9e7('0x3a')]=function(_0x3f6eb3,_0x607c42){if(!_0x3f6eb3['body'][_0xf9e7('0x17')])throw new Error(_0xf9e7('0x3b'));if(!_0x3f6eb3['body'][_0xf9e7('0x3c')])throw new Error(_0xf9e7('0x3d'));var _0x105186=db[_0xf9e7('0x1a')][_0xf9e7('0x1b')]['service'][_0xf9e7('0x3e')];if(!_0x105186[_0xf9e7('0x3f')](_0x3f6eb3[_0xf9e7('0x40')][_0xf9e7('0x3c')]))throw new Error(_0xf9e7('0x41')+_0x105186['join'](',\x20'));if(_0x3f6eb3[_0xf9e7('0x40')][_0xf9e7('0x3c')]===_0xf9e7('0x30')&&_0x3f6eb3[_0xf9e7('0x40')][_0xf9e7('0x39')]){_0x3f6eb3['body'][_0xf9e7('0x39')]=encryptor[_0xf9e7('0x42')](_0x3f6eb3[_0xf9e7('0x40')][_0xf9e7('0x39')]);}return db[_0xf9e7('0x1a')][_0xf9e7('0x3a')](_0x3f6eb3[_0xf9e7('0x40')],{})['then'](respondWithResult(_0x607c42,0xc9))[_0xf9e7('0x32')](handleError(_0x607c42,null));};exports[_0xf9e7('0x11')]=function(_0xdc2d47,_0x4e9d9c){if(_0xdc2d47[_0xf9e7('0x40')]['id']){delete _0xdc2d47[_0xf9e7('0x40')]['id'];}return db[_0xf9e7('0x1a')]['find']({'where':{'id':_0xdc2d47[_0xf9e7('0x34')]['id']}})['then'](handleEntityNotFound(_0x4e9d9c,null))['then'](function(_0x3cbf6c){if(_0x3cbf6c[_0xf9e7('0x3c')]==='MicrosoftAzure'&&_0xdc2d47[_0xf9e7('0x40')]['data3']){_0xdc2d47[_0xf9e7('0x40')]['data3']=encryptor['encryptString'](_0xdc2d47[_0xf9e7('0x40')][_0xf9e7('0x39')]);}return _0x3cbf6c;})['then'](saveUpdates(_0xdc2d47[_0xf9e7('0x40')],null))['then'](respondWithResult(_0x4e9d9c,null))[_0xf9e7('0x32')](handleError(_0x4e9d9c,null));};exports[_0xf9e7('0x13')]=function(_0x42b438,_0x47ce7f){return db[_0xf9e7('0x1a')][_0xf9e7('0x38')]({'where':{'id':_0x42b438[_0xf9e7('0x34')]['id']}})[_0xf9e7('0x12')](handleEntityNotFound(_0x47ce7f,null))['then'](removeEntity(_0x47ce7f,null))[_0xf9e7('0x32')](handleError(_0x47ce7f,null));};exports[_0xf9e7('0x43')]=function(_0x401691,_0x1279c9){return db[_0xf9e7('0x1a')][_0xf9e7('0x44')]({'where':{'id':_0x401691[_0xf9e7('0x34')]['id']},'raw':!![]})[_0xf9e7('0x12')](function(_0x2a275f){if(!_0x2a275f)return _0x1279c9['sendStatus'](0x194);return{'url':oauth[_0xf9e7('0x45')](_0x2a275f,_0x401691[_0xf9e7('0x46')]['id'])};})['then'](respondWithResult(_0x1279c9,null))[_0xf9e7('0x32')](handleError(_0x1279c9,null));};exports[_0xf9e7('0x47')]=function(_0x409f2a,_0xcc54e2){var _0xfbe9bd=_0x409f2a[_0xf9e7('0x40')];var _0x5b97e2;var _0x445a79;if(_0xfbe9bd[_0xf9e7('0x15')])throw _0xfbe9bd;redis[_0xf9e7('0x48')](_0xfbe9bd[_0xf9e7('0x49')])['then'](function(_0x2b66c1){if(!_0x2b66c1)throw new Error('Invalid\x20state\x20parameter');_0x5b97e2=JSON[_0xf9e7('0x4a')](_0x2b66c1);var _0x3bc84c=Buffer[_0xf9e7('0x4b')](_0xfbe9bd[_0xf9e7('0x49')],_0xf9e7('0x4c'))['toString'](_0xf9e7('0x4d'));_0x445a79=JSON[_0xf9e7('0x4a')](_0x3bc84c);if(!oauth[_0xf9e7('0x4e')](_0xfbe9bd[_0xf9e7('0x4f')],_0x5b97e2[_0xf9e7('0x50')]))throw new Error(_0xf9e7('0x51'));redis['del'](_0xfbe9bd[_0xf9e7('0x49')]);return oauth[_0xf9e7('0x52')](_0xfbe9bd[_0xf9e7('0x53')],_0x5b97e2);})[_0xf9e7('0x12')](function(_0x95563c){_0x5b97e2[_0xf9e7('0x54')]=_0x95563c[_0xf9e7('0x55')];_0x5b97e2[_0xf9e7('0x56')]=_0x95563c['refresh_token'];return db[_0xf9e7('0x1a')][_0xf9e7('0x11')]({'data5':_0x5b97e2[_0xf9e7('0x54')],'data6':_0x5b97e2[_0xf9e7('0x56')]},{'where':{'id':_0x5b97e2['id']}});})['then'](function(){oauth[_0xf9e7('0x57')](_0x5b97e2);socket['emit'](_0xf9e7('0x58'),{'id':_0x445a79['id']});return;})[_0xf9e7('0x12')](respondWithStatusCode(_0xcc54e2,null))[_0xf9e7('0x32')](function(_0x481db2){if(_0x445a79){socket['emit']('microsoftAuthorization:error',{'id':_0x445a79['id']});}if(!_0x5b97e2){logger[_0xf9e7('0x15')]('Invalid\x20authentication\x20state\x20parameter',_0x481db2);return _0xcc54e2[_0xf9e7('0xa')](0x1f4)[_0xf9e7('0x59')](_0x481db2['message']);}logger[_0xf9e7('0x15')](_0xf9e7('0x5a'),_0x5b97e2['id'],JSON[_0xf9e7('0x5b')](_0x481db2));});};
\ No newline at end of file
+var _0x8515=['rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','service','MicrosoftAzure','decryptString','data3','catch','show','params','find','create','body','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','values','includes','join','encryptString','destroy','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','error','get','state','parse','from','toString','isValidIdToken','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','code','data5','access_token','data6','refresh_token','startRefreshInterval','emit','microsoftAuthorization:success','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','ioredis','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../config/logger','api','../../mysqldb','./cloudProvider.oauth','defaults','redis','localhost','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','update','then','stack','send','padEnd','index','CloudProvider'];(function(_0x15a102,_0x1394b8){var _0x391e34=function(_0x1b89ad){while(--_0x1b89ad){_0x15a102['push'](_0x15a102['shift']());}};_0x391e34(++_0x1394b8);}(_0x8515,0x1ca));var _0x5851=function(_0x2f3ecd,_0x57976b){_0x2f3ecd=_0x2f3ecd-0x0;var _0xffdc44=_0x8515[_0x2f3ecd];return _0xffdc44;};'use strict';var _=require('lodash');var Redis=require(_0x5851('0x0'));var qs=require(_0x5851('0x1'));var encryptor=require(_0x5851('0x2'));var config=require(_0x5851('0x3'));var logger=require(_0x5851('0x4'))(_0x5851('0x5'));var db=require(_0x5851('0x6'))['db'];var oauth=require(_0x5851('0x7'));config['redis']=_[_0x5851('0x8')](config[_0x5851('0x9')],{'host':_0x5851('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5851('0x9')]));var redis=new Redis(config['redis']);function respondWithStatusCode(_0x1f6bf9,_0xceb940){_0xceb940=_0xceb940||0xcc;return function(_0x6ecf75){if(_0x6ecf75){return _0x1f6bf9[_0x5851('0xb')](_0xceb940);}return _0x1f6bf9[_0x5851('0xc')](_0xceb940)[_0x5851('0xd')]();};}function respondWithResult(_0x163f61,_0x55576a){_0x55576a=_0x55576a||0xc8;return function(_0xce991){if(_0xce991){return _0x163f61[_0x5851('0xc')](_0x55576a)[_0x5851('0xe')](_0xce991);}};}function respondWithFilteredResult(_0x33739b,_0x3f1425){return function(_0x800235){if(_0x800235){var _0x504a0c=typeof _0x3f1425[_0x5851('0xf')]===_0x5851('0x10')&&typeof _0x3f1425['limit']===_0x5851('0x10');var _0x194c05=_0x800235[_0x5851('0x11')];var _0x5417f7=_0x504a0c?0x0:_0x3f1425[_0x5851('0xf')];var _0xa74790=_0x504a0c?_0x800235['count']:_0x3f1425[_0x5851('0xf')]+_0x3f1425['limit'];var _0x386689;if(_0xa74790>=_0x194c05){_0xa74790=_0x194c05;_0x386689=0xc8;}else{_0x386689=0xce;}_0x33739b[_0x5851('0xc')](_0x386689);return _0x33739b[_0x5851('0x12')](_0x5851('0x13'),_0x5417f7+'-'+_0xa74790+'/'+_0x194c05)[_0x5851('0xe')](_0x800235);}return null;};}function saveUpdates(_0x2388fa){return function(_0x5bd883){if(_0x5bd883){return _0x5bd883[_0x5851('0x14')](_0x2388fa)[_0x5851('0x15')](function(_0x5cd29e){return _0x5cd29e;});}return null;};}function removeEntity(_0x16a5ad){return function(_0x48a8a8){if(_0x48a8a8){return _0x48a8a8['destroy']()[_0x5851('0x15')](function(){_0x16a5ad[_0x5851('0xc')](0xcc)[_0x5851('0xd')]();});}};}function handleEntityNotFound(_0x9dcd2c){return function(_0x321364){if(!_0x321364){_0x9dcd2c[_0x5851('0xb')](0x194);}return _0x321364;};}function handleError(_0xc7c7a4,_0x46c769){_0x46c769=_0x46c769||0x1f4;return function(_0xcaab9c){logger['error'](_0xcaab9c[_0x5851('0x16')]);if(_0xcaab9c['name']){delete _0xcaab9c['name'];}_0xc7c7a4['status'](_0x46c769)[_0x5851('0x17')](_0xcaab9c);};}function maskClientSecret(_0x4fda3f){return _[_0x5851('0x18')](_0x4fda3f['slice'](0x0,0x3),0x14,'*');}exports[_0x5851('0x19')]=function(_0xedcde4,_0x3a3b2c){var _0x591254={},_0x2f05ca={},_0x527001={'count':0x0,'rows':[]};var _0xf4ac4f=_['map'](db[_0x5851('0x1a')][_0x5851('0x1b')],function(_0x1ed4c0){return{'name':_0x1ed4c0[_0x5851('0x1c')],'type':_0x1ed4c0[_0x5851('0x1d')]['key']};});_0x2f05ca[_0x5851('0x1e')]=_[_0x5851('0x1f')](_0xf4ac4f,'name');_0x2f05ca[_0x5851('0x20')]=_[_0x5851('0x21')](_0xedcde4['query']);_0x2f05ca[_0x5851('0x22')]=_[_0x5851('0x23')](_0x2f05ca[_0x5851('0x1e')],_0x2f05ca['query']);_0x591254['attributes']=_[_0x5851('0x23')](_0x2f05ca[_0x5851('0x1e')],qs[_0x5851('0x24')](_0xedcde4[_0x5851('0x20')]['fields']));_0x591254['attributes']=_0x591254[_0x5851('0x25')][_0x5851('0x26')]?_0x591254[_0x5851('0x25')]:_0x2f05ca[_0x5851('0x1e')];if(!_0xedcde4[_0x5851('0x20')][_0x5851('0x27')](_0x5851('0x28'))){_0x591254[_0x5851('0x29')]=qs[_0x5851('0x29')](_0xedcde4[_0x5851('0x20')][_0x5851('0x29')]);_0x591254[_0x5851('0xf')]=qs[_0x5851('0xf')](_0xedcde4['query']['offset']);}_0x591254[_0x5851('0x2a')]=qs[_0x5851('0x2b')](_0xedcde4[_0x5851('0x20')]['sort']);_0x591254[_0x5851('0x2c')]=qs[_0x5851('0x22')](_[_0x5851('0x2d')](_0xedcde4['query'],_0x2f05ca[_0x5851('0x22')]),_0xf4ac4f);if(_0xedcde4[_0x5851('0x20')][_0x5851('0x2e')]){_0x591254[_0x5851('0x2c')]=_[_0x5851('0x2f')](_0x591254[_0x5851('0x2c')],{'$or':_[_0x5851('0x1f')](_0xf4ac4f,function(_0x1dff5e){if(_0x1dff5e['type']!==_0x5851('0x30')){var _0x4b1bb8={};_0x4b1bb8[_0x1dff5e['name']]={'$like':'%'+_0xedcde4['query'][_0x5851('0x2e')]+'%'};return _0x4b1bb8;}})});}_0x591254=_[_0x5851('0x2f')]({},_0x591254,_0xedcde4[_0x5851('0x31')]);var _0x788039={'where':_0x591254[_0x5851('0x2c')]};return db[_0x5851('0x1a')][_0x5851('0x11')](_0x788039)['then'](function(_0x27ad35){_0x527001['count']=_0x27ad35;if(_0xedcde4[_0x5851('0x20')][_0x5851('0x32')]){_0x591254[_0x5851('0x33')]=[{'all':!![]}];}return db['CloudProvider'][_0x5851('0x34')](_0x591254);})['then'](function(_0x7aa388){_0x527001[_0x5851('0x35')]=_['map'](_0x7aa388,function(_0x475340){if(_0x475340[_0x5851('0x36')]===_0x5851('0x37')){var _0x32e682=encryptor[_0x5851('0x38')](_0x475340[_0x5851('0x39')]);_0x475340['data3']=maskClientSecret(_0x32e682);}return _0x475340;});return _0x527001;})['then'](respondWithFilteredResult(_0x3a3b2c,_0x591254))[_0x5851('0x3a')](handleError(_0x3a3b2c,null));};exports[_0x5851('0x3b')]=function(_0x4849ae,_0x5c9c24){var _0x57bf55={'raw':!![],'where':{'id':_0x4849ae[_0x5851('0x3c')]['id']}},_0x26c165={};_0x26c165[_0x5851('0x1e')]=_[_0x5851('0x21')](db[_0x5851('0x1a')][_0x5851('0x1b')]);_0x26c165[_0x5851('0x20')]=_[_0x5851('0x21')](_0x4849ae[_0x5851('0x20')]);_0x26c165['filters']=_[_0x5851('0x23')](_0x26c165[_0x5851('0x1e')],_0x26c165[_0x5851('0x20')]);_0x57bf55[_0x5851('0x25')]=_[_0x5851('0x23')](_0x26c165[_0x5851('0x1e')],qs[_0x5851('0x24')](_0x4849ae[_0x5851('0x20')]['fields']));_0x57bf55['attributes']=_0x57bf55[_0x5851('0x25')][_0x5851('0x26')]?_0x57bf55['attributes']:_0x26c165['model'];if(_0x4849ae['query'][_0x5851('0x32')]){_0x57bf55[_0x5851('0x33')]=[{'all':!![]}];}_0x57bf55=_[_0x5851('0x2f')]({},_0x57bf55,_0x4849ae['options']);return db[_0x5851('0x1a')][_0x5851('0x3d')](_0x57bf55)[_0x5851('0x15')](handleEntityNotFound(_0x5c9c24,null))[_0x5851('0x15')](function(_0x419acc){if(_0x419acc['service']===_0x5851('0x37')){var _0x3885e3=encryptor['decryptString'](_0x419acc[_0x5851('0x39')]);_0x419acc[_0x5851('0x39')]=maskClientSecret(_0x3885e3);}return _0x419acc;})[_0x5851('0x15')](respondWithResult(_0x5c9c24,null))[_0x5851('0x3a')](handleError(_0x5c9c24,null));};exports[_0x5851('0x3e')]=function(_0x43b5f9,_0x2b2a24){if(!_0x43b5f9[_0x5851('0x3f')]['name'])throw new Error(_0x5851('0x40'));if(!_0x43b5f9[_0x5851('0x3f')][_0x5851('0x36')])throw new Error(_0x5851('0x41'));var _0x16ad38=db[_0x5851('0x1a')][_0x5851('0x1b')][_0x5851('0x36')][_0x5851('0x42')];if(!_0x16ad38[_0x5851('0x43')](_0x43b5f9[_0x5851('0x3f')][_0x5851('0x36')]))throw new Error('Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20'+_0x16ad38[_0x5851('0x44')](',\x20'));if(_0x43b5f9[_0x5851('0x3f')][_0x5851('0x36')]===_0x5851('0x37')&&_0x43b5f9[_0x5851('0x3f')][_0x5851('0x39')]){_0x43b5f9['body'][_0x5851('0x39')]=encryptor[_0x5851('0x45')](_0x43b5f9['body'][_0x5851('0x39')]);}return db[_0x5851('0x1a')][_0x5851('0x3e')](_0x43b5f9[_0x5851('0x3f')],{})[_0x5851('0x15')](respondWithResult(_0x2b2a24,0xc9))[_0x5851('0x3a')](handleError(_0x2b2a24,null));};exports[_0x5851('0x14')]=function(_0x25ab38,_0x5552a2){if(_0x25ab38[_0x5851('0x3f')]['id']){delete _0x25ab38[_0x5851('0x3f')]['id'];}return db[_0x5851('0x1a')]['find']({'where':{'id':_0x25ab38[_0x5851('0x3c')]['id']}})['then'](handleEntityNotFound(_0x5552a2,null))[_0x5851('0x15')](function(_0x3006b6){if(_0x3006b6[_0x5851('0x36')]===_0x5851('0x37')&&_0x25ab38[_0x5851('0x3f')]['data3']){_0x25ab38['body']['data3']=encryptor[_0x5851('0x45')](_0x25ab38['body'][_0x5851('0x39')]);}return _0x3006b6;})[_0x5851('0x15')](saveUpdates(_0x25ab38[_0x5851('0x3f')],null))[_0x5851('0x15')](respondWithResult(_0x5552a2,null))['catch'](handleError(_0x5552a2,null));};exports[_0x5851('0x46')]=function(_0x48fa98,_0x370f9f){return db[_0x5851('0x1a')][_0x5851('0x3d')]({'where':{'id':_0x48fa98[_0x5851('0x3c')]['id']}})[_0x5851('0x15')](handleEntityNotFound(_0x370f9f,null))['then'](removeEntity(_0x370f9f,null))['catch'](handleError(_0x370f9f,null));};exports[_0x5851('0x47')]=function(_0x26007c,_0x47a279){return db[_0x5851('0x1a')][_0x5851('0x48')]({'where':{'id':_0x26007c['params']['id']},'raw':!![]})[_0x5851('0x15')](function(_0x1bd1ce){if(!_0x1bd1ce)return _0x47a279[_0x5851('0xb')](0x194);return{'url':oauth[_0x5851('0x49')](_0x1bd1ce,_0x26007c['user']['id'])};})[_0x5851('0x15')](respondWithResult(_0x47a279,null))['catch'](handleError(_0x47a279,null));};exports['oauth2MicrosoftCallback']=function(_0x544e2d,_0x4535be){var _0xd7d81a=_0x544e2d[_0x5851('0x3f')];var _0x25235b;var _0x45ebae;if(_0xd7d81a[_0x5851('0x4a')])throw _0xd7d81a;redis[_0x5851('0x4b')](_0xd7d81a[_0x5851('0x4c')])[_0x5851('0x15')](function(_0x50e22b){if(!_0x50e22b)throw new Error('Invalid\x20state\x20parameter');_0x25235b=JSON[_0x5851('0x4d')](_0x50e22b);var _0x7db88e=Buffer[_0x5851('0x4e')](_0xd7d81a[_0x5851('0x4c')],'base64')[_0x5851('0x4f')]('ascii');_0x45ebae=JSON[_0x5851('0x4d')](_0x7db88e);if(!oauth[_0x5851('0x50')](_0xd7d81a[_0x5851('0x51')],_0x25235b[_0x5851('0x52')]))throw new Error(_0x5851('0x53'));redis['del'](_0xd7d81a[_0x5851('0x4c')]);return oauth['getOauth2MicrosoftAccessToken'](_0xd7d81a[_0x5851('0x54')],_0x25235b);})[_0x5851('0x15')](function(_0x21f48f){_0x25235b[_0x5851('0x55')]=_0x21f48f[_0x5851('0x56')];_0x25235b[_0x5851('0x57')]=_0x21f48f[_0x5851('0x58')];return db[_0x5851('0x1a')]['update']({'data5':_0x25235b[_0x5851('0x55')],'data6':_0x25235b['data6']},{'where':{'id':_0x25235b['id']}});})[_0x5851('0x15')](function(){oauth[_0x5851('0x59')](_0x25235b);socket[_0x5851('0x5a')](_0x5851('0x5b'),{'id':_0x45ebae['id']});return;})[_0x5851('0x15')](respondWithStatusCode(_0x4535be,null))[_0x5851('0x3a')](function(_0x1f0912){if(_0x45ebae){socket['emit'](_0x5851('0x5c'),{'id':_0x45ebae['id']});}if(!_0x25235b){logger['error'](_0x5851('0x5d'),_0x1f0912);return _0x4535be[_0x5851('0xc')](0x1f4)[_0x5851('0x17')](_0x1f0912[_0x5851('0x5e')]);}logger[_0x5851('0x4a')](_0x5851('0x5f'),_0x25235b['id'],JSON[_0x5851('0x60')](_0x1f0912));});};
\ No newline at end of file
index 74fe8aa..401ddf0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29f3=['CloudProvider','cloud_providers','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','exports','define'];(function(_0x12b26a,_0x455760){var _0x1ad356=function(_0x2dd5cf){while(--_0x2dd5cf){_0x12b26a['push'](_0x12b26a['shift']());}};_0x1ad356(++_0x455760);}(_0x29f3,0x19a));var _0x329f=function(_0x589eee,_0x391826){_0x589eee=_0x589eee-0x0;var _0xb91c8a=_0x29f3[_0x589eee];return _0xb91c8a;};'use strict';var _=require(_0x329f('0x0'));var util=require(_0x329f('0x1'));var logger=require(_0x329f('0x2'))(_0x329f('0x3'));var moment=require('moment');var BPromise=require(_0x329f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x329f('0x5'));var rimraf=require(_0x329f('0x6'));var config=require(_0x329f('0x7'));var attributes=require('./cloudProvider.attributes');module[_0x329f('0x8')]=function(_0x2858f1,_0xfc78e0){return _0x2858f1[_0x329f('0x9')](_0x329f('0xa'),attributes,{'tableName':_0x329f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd979=['lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cloudProvider.attributes','CloudProvider','cloud_providers'];(function(_0x255307,_0x2b9ed7){var _0x5a9d65=function(_0x349043){while(--_0x349043){_0x255307['push'](_0x255307['shift']());}};_0x5a9d65(++_0x2b9ed7);}(_0xd979,0x13f));var _0x9d97=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd979[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x9d97('0x0'));var util=require(_0x9d97('0x1'));var logger=require(_0x9d97('0x2'))(_0x9d97('0x3'));var moment=require('moment');var BPromise=require(_0x9d97('0x4'));var rp=require(_0x9d97('0x5'));var fs=require('fs');var path=require(_0x9d97('0x6'));var rimraf=require(_0x9d97('0x7'));var config=require('../../config/environment');var attributes=require(_0x9d97('0x8'));module['exports']=function(_0xf70c7e,_0x52c2e4){return _0xf70c7e['define'](_0x9d97('0x9'),attributes,{'tableName':_0x9d97('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 51ac6b4..fc62567 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80bb=['https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','openid','/authorize','Dynamics365','data7','/.default','join','type','replace','{TENANT_ID}','id_token','from','stringify','toString','hex','client_id','redirect_uri','data4','response_mode','form_post','scope','state','prompt','login','key','data1','set','decode','iss','audience','nonce','isAfter','unix','resolve','data3','CloudProvider','findOne','then','data6','decryptString','POST','data2','data5','access_token','refresh_token','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','intervals','bind','findAll','map','all','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','lodash','jsonwebtoken','moment','ioredis','request-promise','util','../../components/encryptor','../../config/schedule/cloud-provider','../../mysqldb','defaults','localhost','redis','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','profile'];(function(_0x59ec69,_0x157939){var _0x2162fd=function(_0x5a6960){while(--_0x5a6960){_0x59ec69['push'](_0x59ec69['shift']());}};_0x2162fd(++_0x157939);}(_0x80bb,0xcd));var _0xb80b=function(_0x21dc61,_0x4f3889){_0x21dc61=_0x21dc61-0x0;var _0x8fa6fb=_0x80bb[_0x21dc61];return _0x8fa6fb;};'use strict';var _=require(_0xb80b('0x0'));var crypto=require('crypto');var jwt=require(_0xb80b('0x1'));var moment=require(_0xb80b('0x2'));var Redis=require(_0xb80b('0x3'));var rp=require(_0xb80b('0x4'));var util=require(_0xb80b('0x5'));var encryptor=require(_0xb80b('0x6'));var config=require('../../config/environment');var logger=require('../../config/logger')('api');var schedule=require(_0xb80b('0x7'));var db=require(_0xb80b('0x8'))['db'];config['redis']=_[_0xb80b('0x9')](config['redis'],{'host':_0xb80b('0xa'),'port':0x18eb});var redis=new Redis(config[_0xb80b('0xb')]);var MICROSOFT_AUTH_URL=_0xb80b('0xc');var AZURE_AUTH_SCOPES={'Outlook365':['openid',_0xb80b('0xd'),'email','offline_access',_0xb80b('0xe'),'https://outlook.office.com/POP.AccessAsUser.All',_0xb80b('0xf')],'Dynamics365':[_0xb80b('0x10'),'offline_access']};var MICROSOFT_AUTH_ENDPOINT=_0xb80b('0x11');var MICROSOFT_TOKEN_ENDPOINT='/token';var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x44f3d1){var _0x346e6b=_['map'](AZURE_AUTH_SCOPES[_0x44f3d1['type']]);if(_0x44f3d1['type']===_0xb80b('0x12'))_0x346e6b['push'](_0x44f3d1[_0xb80b('0x13')]+_0xb80b('0x14'));return _0x346e6b[_0xb80b('0x15')]('\x20');}function getAccessTokenScope(_0x29b120){if(_0x29b120[_0xb80b('0x16')]==='Outlook365')return _0xb80b('0xe');if(_0x29b120[_0xb80b('0x16')]===_0xb80b('0x12'))return _0x29b120['data7']+_0xb80b('0x14');}function generateMicrosoftAuthorizationUrl(_0x2ae831,_0x189493){var _0xe38205=MICROSOFT_AUTH_URL[_0xb80b('0x17')](_0xb80b('0x18'),_0x2ae831['data2']);var _0x7e1fbb=['code',_0xb80b('0x19')];var _0x460302=Buffer[_0xb80b('0x1a')](JSON[_0xb80b('0x1b')]({'id':_0x189493}))[_0xb80b('0x1c')]('base64');var _0x5b880a=crypto['randomBytes'](0x10)[_0xb80b('0x1c')](_0xb80b('0x1d'));var _0x1023b9=getAuthorizationScopes(_0x2ae831);var _0x46c5e7=[{'key':_0xb80b('0x1e'),'value':_0x2ae831['data1']},{'key':'response_type','value':encodeURIComponent(_0x7e1fbb[_0xb80b('0x15')]('\x20'))},{'key':_0xb80b('0x1f'),'value':_0x2ae831[_0xb80b('0x20')]},{'key':_0xb80b('0x21'),'value':_0xb80b('0x22')},{'key':_0xb80b('0x23'),'value':encodeURIComponent(_0x1023b9)},{'key':_0xb80b('0x24'),'value':_0x460302},{'key':'nonce','value':_0x5b880a},{'key':_0xb80b('0x25'),'value':_0xb80b('0x26')}];var _0x477afd=_0xe38205+MICROSOFT_AUTH_ENDPOINT+'?'+_['map'](_0x46c5e7,function(_0x48db2e){return _0x48db2e[_0xb80b('0x27')]+'='+_0x48db2e['value'];})[_0xb80b('0x15')]('&');_0x2ae831['oauth2Claims']={'issuer':_0xe38205[_0xb80b('0x17')]('oauth2/',''),'audience':_0x2ae831[_0xb80b('0x28')],'state':_0x460302,'nonce':_0x5b880a};redis[_0xb80b('0x29')](_0x460302,JSON[_0xb80b('0x1b')](_0x2ae831));return _0x477afd;}function isValidIdToken(_0x40db3d,_0x355bc1){try{var _0x146f36=jwt[_0xb80b('0x2a')](_0x40db3d,{'complete':!![]});var _0x202947=_0x146f36['payload'];if(_0x202947[_0xb80b('0x2b')]!==_0x355bc1['issuer'])return![];if(_0x202947['aud']!==_0x355bc1[_0xb80b('0x2c')])return![];if(_0x202947[_0xb80b('0x2d')]!==_0x355bc1[_0xb80b('0x2d')])return![];if(moment()[_0xb80b('0x2e')](moment[_0xb80b('0x2f')](_0x202947['exp'])))return![];return!![];}catch(_0x93694b){throw _0x93694b;}}function refreshOauth2MicrosoftAccessToken(_0x31868a){return Promise[_0xb80b('0x30')]()['then'](function(){if(_0x31868a[_0xb80b('0x31')])return _0x31868a;return db[_0xb80b('0x32')][_0xb80b('0x33')]({'where':{'id':_0x31868a['id']},'raw':!![]});})[_0xb80b('0x34')](function(_0x5b4ce3){var _0x329662={'grant_type':'refresh_token','refresh_token':_0x5b4ce3[_0xb80b('0x35')],'scope':getAccessTokenScope(_0x5b4ce3),'redirect_uri':_0x5b4ce3[_0xb80b('0x20')],'client_id':_0x5b4ce3[_0xb80b('0x28')],'client_secret':encryptor[_0xb80b('0x36')](_0x5b4ce3[_0xb80b('0x31')])};var _0x380daf={'method':_0xb80b('0x37'),'uri':MICROSOFT_AUTH_URL['replace'](_0xb80b('0x18'),_0x5b4ce3[_0xb80b('0x38')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x329662,'json':!![]};return rp(_0x380daf);})[_0xb80b('0x34')](function(_0x5d6840){_0x31868a[_0xb80b('0x39')]=_0x5d6840[_0xb80b('0x3a')];_0x31868a[_0xb80b('0x35')]=_0x5d6840[_0xb80b('0x3b')];return db[_0xb80b('0x32')][_0xb80b('0x3c')]({'data5':_0x31868a[_0xb80b('0x39')],'data6':_0x31868a['data6']},{'where':{'id':_0x31868a['id']}});})[_0xb80b('0x34')](function(){return _0x31868a;})[_0xb80b('0x3d')](function(_0x1ad619){logger[_0xb80b('0x3e')](_0xb80b('0x3f'),_0x31868a['id'],_0x1ad619);});}function getOauth2MicrosoftAccessToken(_0x22eeed,_0x1674b8){var _0x50b08f={'grant_type':_0xb80b('0x40'),'code':_0x22eeed,'scope':getAccessTokenScope(_0x1674b8),'redirect_uri':_0x1674b8['data4'],'client_id':_0x1674b8[_0xb80b('0x28')],'client_secret':encryptor[_0xb80b('0x36')](_0x1674b8[_0xb80b('0x31')])};var _0x523357={'method':'POST','uri':MICROSOFT_AUTH_URL[_0xb80b('0x17')](_0xb80b('0x18'),_0x1674b8[_0xb80b('0x38')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x50b08f,'json':!![]};return rp(_0x523357);}function startRefreshInterval(_0x434f68){var _0x598119=schedule[_0xb80b('0x41')];if(_0x598119[_0x434f68['id']])clearInterval(_0x598119[_0x434f68['id']]);_0x598119[_0x434f68['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0xb80b('0x42')](this,{'id':_0x434f68['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule['intervals']=_0x598119;}function startAllRefreshIntervals(){return db['CloudProvider'][_0xb80b('0x43')]({'where':{'data6':{'$ne':null}},'raw':!![]})['then'](function(_0x2a888e){var _0x50a455=_0x2a888e[_0xb80b('0x44')](function(_0x6feeed){return refreshOauth2MicrosoftAccessToken(_0x6feeed)[_0xb80b('0x34')](function(_0x26ebe6){startRefreshInterval(_0x26ebe6);});});return Promise[_0xb80b('0x45')](_0x50a455);})['catch'](function(_0x200dfe){var _0x293434=_0x200dfe?util[_0xb80b('0x46')](_0x200dfe,{'showHidden':![],'depth':null}):'';logger[_0xb80b('0x3e')](_0xb80b('0x47'),_0x293434);});}module[_0xb80b('0x48')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0x14ca=['data4','response_mode','scope','nonce','login','key','value','oauth2Claims','replace','oauth2/','data1','set','stringify','decode','payload','iss','issuer','audience','unix','exp','CloudProvider','then','refresh_token','data6','decryptString','data3','POST','access_token','update','data5','catch','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','intervals','bind','findAll','inspect','error','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','lodash','crypto','jsonwebtoken','moment','ioredis','../../config/environment','../../config/logger','api','../../config/schedule/cloud-provider','../../mysqldb','redis','localhost','openid','profile','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/authorize','/token','map','type','Dynamics365','data7','/.default','join','Outlook365','{TENANT_ID}','data2','id_token','from','base64','toString','hex','client_id','response_type'];(function(_0x32e758,_0x13c271){var _0x349316=function(_0x27a9da){while(--_0x27a9da){_0x32e758['push'](_0x32e758['shift']());}};_0x349316(++_0x13c271);}(_0x14ca,0x158));var _0xa14c=function(_0x1a1b6e,_0x3a07a9){_0x1a1b6e=_0x1a1b6e-0x0;var _0x571e2c=_0x14ca[_0x1a1b6e];return _0x571e2c;};'use strict';var _=require(_0xa14c('0x0'));var crypto=require(_0xa14c('0x1'));var jwt=require(_0xa14c('0x2'));var moment=require(_0xa14c('0x3'));var Redis=require(_0xa14c('0x4'));var rp=require('request-promise');var util=require('util');var encryptor=require('../../components/encryptor');var config=require(_0xa14c('0x5'));var logger=require(_0xa14c('0x6'))(_0xa14c('0x7'));var schedule=require(_0xa14c('0x8'));var db=require(_0xa14c('0x9'))['db'];config[_0xa14c('0xa')]=_['defaults'](config[_0xa14c('0xa')],{'host':_0xa14c('0xb'),'port':0x18eb});var redis=new Redis(config[_0xa14c('0xa')]);var MICROSOFT_AUTH_URL='https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0';var AZURE_AUTH_SCOPES={'Outlook365':[_0xa14c('0xc'),_0xa14c('0xd'),'email',_0xa14c('0xe'),_0xa14c('0xf'),_0xa14c('0x10'),_0xa14c('0x11')],'Dynamics365':[_0xa14c('0xc'),'offline_access']};var MICROSOFT_AUTH_ENDPOINT=_0xa14c('0x12');var MICROSOFT_TOKEN_ENDPOINT=_0xa14c('0x13');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x29bc32){var _0x17a86e=_[_0xa14c('0x14')](AZURE_AUTH_SCOPES[_0x29bc32[_0xa14c('0x15')]]);if(_0x29bc32[_0xa14c('0x15')]===_0xa14c('0x16'))_0x17a86e['push'](_0x29bc32[_0xa14c('0x17')]+_0xa14c('0x18'));return _0x17a86e[_0xa14c('0x19')]('\x20');}function getAccessTokenScope(_0x427a37){if(_0x427a37[_0xa14c('0x15')]===_0xa14c('0x1a'))return'https://outlook.office365.com/IMAP.AccessAsUser.All';if(_0x427a37[_0xa14c('0x15')]===_0xa14c('0x16'))return _0x427a37['data7']+'/.default';}function generateMicrosoftAuthorizationUrl(_0x4ec61a,_0x8b913){var _0x4763f9=MICROSOFT_AUTH_URL['replace'](_0xa14c('0x1b'),_0x4ec61a[_0xa14c('0x1c')]);var _0x311189=['code',_0xa14c('0x1d')];var _0x27752d=Buffer[_0xa14c('0x1e')](JSON['stringify']({'id':_0x8b913}))['toString'](_0xa14c('0x1f'));var _0xf3d7a4=crypto['randomBytes'](0x10)[_0xa14c('0x20')](_0xa14c('0x21'));var _0x51a2df=getAuthorizationScopes(_0x4ec61a);var _0x1994b5=[{'key':_0xa14c('0x22'),'value':_0x4ec61a['data1']},{'key':_0xa14c('0x23'),'value':encodeURIComponent(_0x311189[_0xa14c('0x19')]('\x20'))},{'key':'redirect_uri','value':_0x4ec61a[_0xa14c('0x24')]},{'key':_0xa14c('0x25'),'value':'form_post'},{'key':_0xa14c('0x26'),'value':encodeURIComponent(_0x51a2df)},{'key':'state','value':_0x27752d},{'key':_0xa14c('0x27'),'value':_0xf3d7a4},{'key':'prompt','value':_0xa14c('0x28')}];var _0xb5c3f8=_0x4763f9+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0xa14c('0x14')](_0x1994b5,function(_0x598ac7){return _0x598ac7[_0xa14c('0x29')]+'='+_0x598ac7[_0xa14c('0x2a')];})[_0xa14c('0x19')]('&');_0x4ec61a[_0xa14c('0x2b')]={'issuer':_0x4763f9[_0xa14c('0x2c')](_0xa14c('0x2d'),''),'audience':_0x4ec61a[_0xa14c('0x2e')],'state':_0x27752d,'nonce':_0xf3d7a4};redis[_0xa14c('0x2f')](_0x27752d,JSON[_0xa14c('0x30')](_0x4ec61a));return _0xb5c3f8;}function isValidIdToken(_0x56c0d0,_0x21d89e){try{var _0x870048=jwt[_0xa14c('0x31')](_0x56c0d0,{'complete':!![]});var _0x3528ad=_0x870048[_0xa14c('0x32')];if(_0x3528ad[_0xa14c('0x33')]!==_0x21d89e[_0xa14c('0x34')])return![];if(_0x3528ad['aud']!==_0x21d89e[_0xa14c('0x35')])return![];if(_0x3528ad[_0xa14c('0x27')]!==_0x21d89e['nonce'])return![];if(moment()['isAfter'](moment[_0xa14c('0x36')](_0x3528ad[_0xa14c('0x37')])))return![];return!![];}catch(_0x5c15c0){throw _0x5c15c0;}}function refreshOauth2MicrosoftAccessToken(_0x4a22d1){return Promise['resolve']()['then'](function(){if(_0x4a22d1['data3'])return _0x4a22d1;return db[_0xa14c('0x38')]['findOne']({'where':{'id':_0x4a22d1['id']},'raw':!![]});})[_0xa14c('0x39')](function(_0x408f99){var _0x5390c0={'grant_type':_0xa14c('0x3a'),'refresh_token':_0x408f99[_0xa14c('0x3b')],'scope':getAccessTokenScope(_0x408f99),'redirect_uri':_0x408f99[_0xa14c('0x24')],'client_id':_0x408f99[_0xa14c('0x2e')],'client_secret':encryptor[_0xa14c('0x3c')](_0x408f99[_0xa14c('0x3d')])};var _0x5084e5={'method':_0xa14c('0x3e'),'uri':MICROSOFT_AUTH_URL['replace'](_0xa14c('0x1b'),_0x408f99[_0xa14c('0x1c')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x5390c0,'json':!![]};return rp(_0x5084e5);})['then'](function(_0x58667a){_0x4a22d1['data5']=_0x58667a[_0xa14c('0x3f')];_0x4a22d1['data6']=_0x58667a[_0xa14c('0x3a')];return db[_0xa14c('0x38')][_0xa14c('0x40')]({'data5':_0x4a22d1[_0xa14c('0x41')],'data6':_0x4a22d1[_0xa14c('0x3b')]},{'where':{'id':_0x4a22d1['id']}});})[_0xa14c('0x39')](function(){return _0x4a22d1;})[_0xa14c('0x42')](function(_0x21044c){logger['error'](_0xa14c('0x43'),_0x4a22d1['id'],_0x21044c);});}function getOauth2MicrosoftAccessToken(_0x32abe2,_0x20a7fd){var _0x596a9a={'grant_type':_0xa14c('0x44'),'code':_0x32abe2,'scope':getAccessTokenScope(_0x20a7fd),'redirect_uri':_0x20a7fd[_0xa14c('0x24')],'client_id':_0x20a7fd[_0xa14c('0x2e')],'client_secret':encryptor[_0xa14c('0x3c')](_0x20a7fd[_0xa14c('0x3d')])};var _0x638f88={'method':_0xa14c('0x3e'),'uri':MICROSOFT_AUTH_URL[_0xa14c('0x2c')]('{TENANT_ID}',_0x20a7fd[_0xa14c('0x1c')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x596a9a,'json':!![]};return rp(_0x638f88);}function startRefreshInterval(_0x4d4e7f){var _0x432faa=schedule[_0xa14c('0x45')];if(_0x432faa[_0x4d4e7f['id']])clearInterval(_0x432faa[_0x4d4e7f['id']]);_0x432faa[_0x4d4e7f['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0xa14c('0x46')](this,{'id':_0x4d4e7f['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0xa14c('0x45')]=_0x432faa;}function startAllRefreshIntervals(){return db[_0xa14c('0x38')][_0xa14c('0x47')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0xa14c('0x39')](function(_0x52e01b){var _0x19b48b=_0x52e01b[_0xa14c('0x14')](function(_0x41c593){return refreshOauth2MicrosoftAccessToken(_0x41c593)['then'](function(_0x46cf19){startRefreshInterval(_0x46cf19);});});return Promise['all'](_0x19b48b);})['catch'](function(_0x37f6f1){var _0x43e47d=_0x37f6f1?util[_0xa14c('0x48')](_0x37f6f1,{'showHidden':![],'depth':null}):'';logger[_0xa14c('0x49')](_0xa14c('0x4a'),_0x43e47d);});}module[_0xa14c('0x4b')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
index f8d77f3..a836170 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0ee=['../../config/environment','client','http','request','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','debug','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x4d8998,_0x5b603a){var _0x4f1a3c=function(_0x3d5a02){while(--_0x3d5a02){_0x4d8998['push'](_0x4d8998['shift']());}};_0x4f1a3c(++_0x5b603a);}(_0xb0ee,0x18f));var _0xeb0e=function(_0x4e9d3c,_0x1f4b98){_0x4e9d3c=_0x4e9d3c-0x0;var _0x2d0825=_0xb0ee[_0x4e9d3c];return _0x2d0825;};'use strict';var _=require('lodash');var util=require(_0xeb0e('0x0'));var moment=require(_0xeb0e('0x1'));var BPromise=require(_0xeb0e('0x2'));var rs=require(_0xeb0e('0x3'));var fs=require('fs');var Redis=require(_0xeb0e('0x4'));var db=require(_0xeb0e('0x5'))['db'];var utils=require(_0xeb0e('0x6'));var logger=require(_0xeb0e('0x7'))(_0xeb0e('0x8'));var config=require(_0xeb0e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xeb0e('0xa')][_0xeb0e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x423095,_0x3e7872,_0x572ee1){return new BPromise(function(_0x3b3c6e,_0x1dcf56){return client[_0xeb0e('0xc')](_0x423095,_0x572ee1)[_0xeb0e('0xd')](function(_0x2b90ba){logger[_0xeb0e('0xe')](_0xeb0e('0xf'),_0x3e7872,_0xeb0e('0x10'));logger[_0xeb0e('0x11')](_0xeb0e('0x12'),_0x3e7872,_0xeb0e('0x10'),JSON[_0xeb0e('0x13')](_0x2b90ba));if(_0x2b90ba[_0xeb0e('0x14')]){if(_0x2b90ba[_0xeb0e('0x14')][_0xeb0e('0x15')]===0x1f4){logger[_0xeb0e('0x14')](_0xeb0e('0xf'),_0x3e7872,_0x2b90ba[_0xeb0e('0x14')]['message']);return _0x1dcf56(_0x2b90ba['error'][_0xeb0e('0x16')]);}logger['error']('CloudProvider,\x20%s,\x20%s',_0x3e7872,_0x2b90ba[_0xeb0e('0x14')][_0xeb0e('0x16')]);return _0x3b3c6e(_0x2b90ba[_0xeb0e('0x14')][_0xeb0e('0x16')]);}else{logger['info'](_0xeb0e('0xf'),_0x3e7872,_0xeb0e('0x10'));_0x3b3c6e(_0x2b90ba['result'][_0xeb0e('0x16')]);}})[_0xeb0e('0x17')](function(_0xa9a9c4){logger[_0xeb0e('0x14')](_0xeb0e('0xf'),_0x3e7872,_0xa9a9c4);_0x1dcf56(_0xa9a9c4);});});}
\ No newline at end of file
+var _0xde1a=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','CloudProvider,\x20%s,\x20%s','request\x20sent','CloudProvider,\x20%s,\x20%s,\x20%s','error','code','message','result','catch'];(function(_0x4bb593,_0x272ed0){var _0x2da2d8=function(_0x4b25e9){while(--_0x4b25e9){_0x4bb593['push'](_0x4bb593['shift']());}};_0x2da2d8(++_0x272ed0);}(_0xde1a,0xfd));var _0xade1=function(_0x1c3967,_0x1a9b38){_0x1c3967=_0x1c3967-0x0;var _0x1f9c98=_0xde1a[_0x1c3967];return _0x1f9c98;};'use strict';var _=require('lodash');var util=require(_0xade1('0x0'));var moment=require(_0xade1('0x1'));var BPromise=require(_0xade1('0x2'));var rs=require(_0xade1('0x3'));var fs=require('fs');var Redis=require(_0xade1('0x4'));var db=require(_0xade1('0x5'))['db'];var utils=require(_0xade1('0x6'));var logger=require(_0xade1('0x7'))('rpc');var config=require(_0xade1('0x8'));var jayson=require(_0xade1('0x9'));var client=jayson[_0xade1('0xa')][_0xade1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3be6d5,_0x15e325,_0x5eb992){return new BPromise(function(_0x3a24e7,_0x41d069){return client[_0xade1('0xc')](_0x3be6d5,_0x5eb992)[_0xade1('0xd')](function(_0x120f47){logger[_0xade1('0xe')](_0xade1('0xf'),_0x15e325,_0xade1('0x10'));logger['debug'](_0xade1('0x11'),_0x15e325,_0xade1('0x10'),JSON['stringify'](_0x120f47));if(_0x120f47[_0xade1('0x12')]){if(_0x120f47[_0xade1('0x12')][_0xade1('0x13')]===0x1f4){logger['error'](_0xade1('0xf'),_0x15e325,_0x120f47[_0xade1('0x12')][_0xade1('0x14')]);return _0x41d069(_0x120f47[_0xade1('0x12')][_0xade1('0x14')]);}logger[_0xade1('0x12')]('CloudProvider,\x20%s,\x20%s',_0x15e325,_0x120f47[_0xade1('0x12')][_0xade1('0x14')]);return _0x3a24e7(_0x120f47[_0xade1('0x12')][_0xade1('0x14')]);}else{logger[_0xade1('0xe')]('CloudProvider,\x20%s,\x20%s',_0x15e325,_0xade1('0x10'));_0x3a24e7(_0x120f47[_0xade1('0x15')][_0xade1('0x14')]);}})[_0xade1('0x16')](function(_0x994e75){logger['error'](_0xade1('0xf'),_0x15e325,_0x994e75);_0x41d069(_0x994e75);});});}
\ No newline at end of file
index 0c4c94b..421a67d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['isAuthenticated','/:id','show','post','create','delete','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','oauth2MicrosoftCallback','exports','express','Router','../../components/auth/service','get'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x7a54,0x106));var _0x47a5=function(_0x52230d,_0x53f4eb){_0x52230d=_0x52230d-0x0;var _0x16c5b4=_0x7a54[_0x52230d];return _0x16c5b4;};'use strict';var express=require(_0x47a5('0x0'));var router=express[_0x47a5('0x1')]();var auth=require(_0x47a5('0x2'));var controller=require('./cloudProvider.controller');router[_0x47a5('0x3')]('/',auth[_0x47a5('0x4')](),controller['index']);router[_0x47a5('0x3')](_0x47a5('0x5'),auth[_0x47a5('0x4')](),controller[_0x47a5('0x6')]);router[_0x47a5('0x7')]('/',auth['isAuthenticated'](),controller[_0x47a5('0x8')]);router['put'](_0x47a5('0x5'),auth[_0x47a5('0x4')](),controller['update']);router[_0x47a5('0x9')]('/:id',auth['isAuthenticated'](),controller['destroy']);router[_0x47a5('0x3')](_0x47a5('0xa'),auth['isAuthenticated'](),controller[_0x47a5('0xb')]);router['post']('/oauth2/microsoft/callback',controller[_0x47a5('0xc')]);module[_0x47a5('0xd')]=router;
\ No newline at end of file
+var _0xadb5=['put','update','delete','destroy','/:id/oauth2/microsoft/authorize/','/oauth2/microsoft/callback','oauth2MicrosoftCallback','exports','Router','./cloudProvider.controller','get','isAuthenticated','/:id','post','create'];(function(_0x33b084,_0x100125){var _0x3869fe=function(_0xe12b0e){while(--_0xe12b0e){_0x33b084['push'](_0x33b084['shift']());}};_0x3869fe(++_0x100125);}(_0xadb5,0xad));var _0x5adb=function(_0x3a498f,_0x51cec4){_0x3a498f=_0x3a498f-0x0;var _0x23b885=_0xadb5[_0x3a498f];return _0x23b885;};'use strict';var express=require('express');var router=express[_0x5adb('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x5adb('0x1'));router[_0x5adb('0x2')]('/',auth[_0x5adb('0x3')](),controller['index']);router[_0x5adb('0x2')](_0x5adb('0x4'),auth[_0x5adb('0x3')](),controller['show']);router[_0x5adb('0x5')]('/',auth[_0x5adb('0x3')](),controller[_0x5adb('0x6')]);router[_0x5adb('0x7')](_0x5adb('0x4'),auth[_0x5adb('0x3')](),controller[_0x5adb('0x8')]);router[_0x5adb('0x9')](_0x5adb('0x4'),auth[_0x5adb('0x3')](),controller[_0x5adb('0xa')]);router[_0x5adb('0x2')](_0x5adb('0xb'),auth[_0x5adb('0x3')](),controller['oauth2MicrosoftAuthorize']);router['post'](_0x5adb('0xc'),controller[_0x5adb('0xd')]);module[_0x5adb('0xe')]=router;
\ No newline at end of file
index 56ea0f3..69d92dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5947=['STRING','name','sequelize','exports'];(function(_0x45af4b,_0x1fc922){var _0x5ee98=function(_0x592bdc){while(--_0x592bdc){_0x45af4b['push'](_0x45af4b['shift']());}};_0x5ee98(++_0x1fc922);}(_0x5947,0x16e));var _0x7594=function(_0x599d57,_0x466120){_0x599d57=_0x599d57-0x0;var _0x5945f6=_0x5947[_0x599d57];return _0x5945f6;};'use strict';var Sequelize=require(_0x7594('0x0'));module[_0x7594('0x1')]={'name':{'type':Sequelize[_0x7594('0x2')],'unique':_0x7594('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x7594('0x2')]},'companyId':{'type':Sequelize[_0x7594('0x2')]},'website':{'type':Sequelize[_0x7594('0x2')]},'phone':{'type':Sequelize[_0x7594('0x2')]},'fax':{'type':Sequelize[_0x7594('0x2')]},'type':{'type':Sequelize[_0x7594('0x2')]},'street':{'type':Sequelize[_0x7594('0x2')]},'postalCode':{'type':Sequelize[_0x7594('0x2')]},'city':{'type':Sequelize[_0x7594('0x2')]},'country':{'type':Sequelize[_0x7594('0x2')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x7594('0x2')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize['STRING']},'sCity':{'type':Sequelize[_0x7594('0x2')]},'sCountry':{'type':Sequelize[_0x7594('0x2')]},'description':{'type':Sequelize[_0x7594('0x2')]}};
\ No newline at end of file
+var _0x7047=['exports','STRING','name','sequelize'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x7047,0xa7));var _0x7704=function(_0x332aba,_0xae64f0){_0x332aba=_0x332aba-0x0;var _0xd2a93f=_0x7047[_0x332aba];return _0xd2a93f;};'use strict';var Sequelize=require(_0x7704('0x0'));module[_0x7704('0x1')]={'name':{'type':Sequelize[_0x7704('0x2')],'unique':_0x7704('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x7704('0x2')]},'companyId':{'type':Sequelize[_0x7704('0x2')]},'website':{'type':Sequelize[_0x7704('0x2')]},'phone':{'type':Sequelize[_0x7704('0x2')]},'fax':{'type':Sequelize[_0x7704('0x2')]},'type':{'type':Sequelize[_0x7704('0x2')]},'street':{'type':Sequelize[_0x7704('0x2')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x7704('0x2')]},'country':{'type':Sequelize[_0x7704('0x2')]},'email':{'type':Sequelize[_0x7704('0x2')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x7704('0x2')]},'sStreet':{'type':Sequelize[_0x7704('0x2')]},'sPostalCode':{'type':Sequelize[_0x7704('0x2')]},'sCity':{'type':Sequelize[_0x7704('0x2')]},'sCountry':{'type':Sequelize[_0x7704('0x2')]},'description':{'type':Sequelize[_0x7704('0x2')]}};
\ No newline at end of file
index c0bee4e..992ff37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd33=['update','get','UserProfileResource','then','end','error','stack','name','index','describe','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','map','merge','includeAll','CmCompany','findAll','rows','catch','show','params','rawAttributes','include','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Companies','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','CmContact','addContacts','ids','omit','getContacts','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/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','json','apply','reject','save'];(function(_0x2ceb64,_0x21dcef){var _0x2d8712=function(_0x3b44f0){while(--_0x3b44f0){_0x2ceb64['push'](_0x2ceb64['shift']());}};_0x2d8712(++_0x21dcef);}(_0xfd33,0x8b));var _0x3fd3=function(_0x10004e,_0xd701e6){_0x10004e=_0x10004e-0x0;var _0x5af990=_0xfd33[_0x10004e];return _0x5af990;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3fd3('0x0'));var zipdir=require(_0x3fd3('0x1'));var jsonpatch=require(_0x3fd3('0x2'));var rp=require(_0x3fd3('0x3'));var moment=require('moment');var BPromise=require(_0x3fd3('0x4'));var Mustache=require(_0x3fd3('0x5'));var util=require(_0x3fd3('0x6'));var path=require(_0x3fd3('0x7'));var sox=require(_0x3fd3('0x8'));var csv=require(_0x3fd3('0x9'));var ejs=require(_0x3fd3('0xa'));var fs=require('fs');var fs_extra=require(_0x3fd3('0xb'));var _=require('lodash');var squel=require(_0x3fd3('0xc'));var crypto=require(_0x3fd3('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x3fd3('0xe'));var toCsv=require(_0x3fd3('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x3fd3('0xf'));var authService=require(_0x3fd3('0x10'));var qs=require(_0x3fd3('0x11'));var as=require(_0x3fd3('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3fd3('0x13'))('api');var utils=require(_0x3fd3('0x14'));var config=require(_0x3fd3('0x15'));var licenseUtil=require(_0x3fd3('0x16'));var db=require(_0x3fd3('0x17'))['db'];function respondWithStatusCode(_0x207759,_0x2b5b62){_0x2b5b62=_0x2b5b62||0xcc;return function(_0x12f84e){if(_0x12f84e){return _0x207759[_0x3fd3('0x18')](_0x2b5b62);}return _0x207759[_0x3fd3('0x19')](_0x2b5b62)['end']();};}function respondWithResult(_0x14e298,_0x5b6e87){_0x5b6e87=_0x5b6e87||0xc8;return function(_0x60e69){if(_0x60e69){return _0x14e298[_0x3fd3('0x19')](_0x5b6e87)['json'](_0x60e69);}};}function respondWithFilteredResult(_0x371fa4,_0x2e999c){return function(_0x70197c){if(_0x70197c){var _0x12544a=typeof _0x2e999c[_0x3fd3('0x1a')]===_0x3fd3('0x1b')&&typeof _0x2e999c[_0x3fd3('0x1c')]===_0x3fd3('0x1b');var _0x4536cb=_0x70197c[_0x3fd3('0x1d')];var _0x60fa22=_0x12544a?0x0:_0x2e999c[_0x3fd3('0x1a')];var _0xeb0a1=_0x12544a?_0x70197c[_0x3fd3('0x1d')]:_0x2e999c[_0x3fd3('0x1a')]+_0x2e999c[_0x3fd3('0x1c')];var _0x3c27da;if(_0xeb0a1>=_0x4536cb){_0xeb0a1=_0x4536cb;_0x3c27da=0xc8;}else{_0x3c27da=0xce;}_0x371fa4[_0x3fd3('0x19')](_0x3c27da);return _0x371fa4[_0x3fd3('0x1e')]('Content-Range',_0x60fa22+'-'+_0xeb0a1+'/'+_0x4536cb)[_0x3fd3('0x1f')](_0x70197c);}return null;};}function patchUpdates(_0x194964){return function(_0x58dfc0){try{jsonpatch[_0x3fd3('0x20')](_0x58dfc0,_0x194964,!![]);}catch(_0x33636d){return BPromise[_0x3fd3('0x21')](_0x33636d);}return _0x58dfc0[_0x3fd3('0x22')]();};}function saveUpdates(_0x35d93c,_0xea2723){return function(_0x5e874f){if(_0x5e874f){return _0x5e874f[_0x3fd3('0x23')](_0x35d93c)['then'](function(_0x4fb5d4){return _0x4fb5d4;});}return null;};}function removeEntity(_0x2e1728,_0x1698e2){return function(_0x3e2198){if(_0x3e2198){return _0x3e2198['destroy']()['then'](function(){var _0x3cdf11=_0x3e2198[_0x3fd3('0x24')]({'plain':!![]});var _0x1e7baf='Companies';return db[_0x3fd3('0x25')]['destroy']({'where':{'type':_0x1e7baf,'resourceId':_0x3cdf11['id']}})[_0x3fd3('0x26')](function(){return _0x3e2198;});})[_0x3fd3('0x26')](function(){_0x2e1728['status'](0xcc)[_0x3fd3('0x27')]();});}};}function handleEntityNotFound(_0x169c97,_0x351200){return function(_0x1a813e){if(!_0x1a813e){_0x169c97['sendStatus'](0x194);}return _0x1a813e;};}function handleError(_0xd7d693,_0x342237){_0x342237=_0x342237||0x1f4;return function(_0x586139){logger[_0x3fd3('0x28')](_0x586139[_0x3fd3('0x29')]);if(_0x586139[_0x3fd3('0x2a')]){delete _0x586139[_0x3fd3('0x2a')];}_0xd7d693[_0x3fd3('0x19')](_0x342237)['send'](_0x586139);};}exports[_0x3fd3('0x2b')]=function(_0x52da29,_0x2b5825){var _0x416292={},_0xf3da32={},_0x1c3e16={'count':0x0,'rows':[]};return db['CmCompany'][_0x3fd3('0x2c')]()['then'](function(_0x5d0b40){_0xf3da32[_0x3fd3('0x2d')]=_[_0x3fd3('0x2e')](_0x5d0b40);_0xf3da32[_0x3fd3('0x2f')]=_[_0x3fd3('0x2e')](_0x52da29[_0x3fd3('0x2f')]);_0xf3da32[_0x3fd3('0x30')]=_[_0x3fd3('0x31')](_0xf3da32['model'],_0xf3da32[_0x3fd3('0x2f')]);_0x416292['attributes']=_[_0x3fd3('0x31')](_0xf3da32[_0x3fd3('0x2d')],qs[_0x3fd3('0x32')](_0x52da29[_0x3fd3('0x2f')][_0x3fd3('0x32')]));_0x416292['attributes']=_0x416292[_0x3fd3('0x33')][_0x3fd3('0x34')]?_0x416292[_0x3fd3('0x33')]:_0xf3da32['model'];if(!_0x52da29[_0x3fd3('0x2f')][_0x3fd3('0x35')](_0x3fd3('0x36'))){_0x416292[_0x3fd3('0x1c')]=qs[_0x3fd3('0x1c')](_0x52da29[_0x3fd3('0x2f')]['limit']);_0x416292['offset']=qs[_0x3fd3('0x1a')](_0x52da29['query'][_0x3fd3('0x1a')]);}_0x416292[_0x3fd3('0x37')]=qs[_0x3fd3('0x38')](_0x52da29[_0x3fd3('0x2f')][_0x3fd3('0x38')]);_0x416292['where']=qs[_0x3fd3('0x30')](_[_0x3fd3('0x39')](_0x52da29['query'],_0xf3da32['filters']),_0x5d0b40);if(_0x52da29['query'][_0x3fd3('0x3a')]){_0x416292['where']=_['merge'](_0x416292[_0x3fd3('0x3b')],{'$or':_[_0x3fd3('0x3c')](_0x416292[_0x3fd3('0x33')],function(_0x5bab6c){var _0x55ae37={};_0x55ae37[_0x5bab6c]={'$like':'%'+_0x52da29[_0x3fd3('0x2f')]['filter']+'%'};return _0x55ae37;})});}_0x416292=_[_0x3fd3('0x3d')]({},_0x416292,_0x52da29['options']);var _0x36ca53={'where':_0x416292[_0x3fd3('0x3b')]};return db['CmCompany']['count'](_0x36ca53)['then'](function(_0x2e928e){_0x1c3e16[_0x3fd3('0x1d')]=_0x2e928e;if(_0x52da29['query'][_0x3fd3('0x3e')]){_0x416292['include']=[{'all':!![]}];}return db[_0x3fd3('0x3f')][_0x3fd3('0x40')](_0x416292);})[_0x3fd3('0x26')](function(_0x4636bf){_0x1c3e16[_0x3fd3('0x41')]=_0x4636bf;return _0x1c3e16;})[_0x3fd3('0x26')](respondWithFilteredResult(_0x2b5825,_0x416292))['catch'](handleError(_0x2b5825,null));})[_0x3fd3('0x42')](handleError(_0x2b5825,null));};exports[_0x3fd3('0x43')]=function(_0x22de9d,_0x41df6f){var _0x362270={'raw':![],'where':{'id':_0x22de9d[_0x3fd3('0x44')]['id']}},_0x5cd927={};_0x5cd927[_0x3fd3('0x2d')]=_['keys'](db[_0x3fd3('0x3f')][_0x3fd3('0x45')]);_0x5cd927['query']=_['keys'](_0x22de9d[_0x3fd3('0x2f')]);_0x5cd927[_0x3fd3('0x30')]=_[_0x3fd3('0x31')](_0x5cd927[_0x3fd3('0x2d')],_0x5cd927[_0x3fd3('0x2f')]);_0x362270[_0x3fd3('0x33')]=_[_0x3fd3('0x31')](_0x5cd927[_0x3fd3('0x2d')],qs['fields'](_0x22de9d[_0x3fd3('0x2f')][_0x3fd3('0x32')]));_0x362270[_0x3fd3('0x33')]=_0x362270[_0x3fd3('0x33')][_0x3fd3('0x34')]?_0x362270[_0x3fd3('0x33')]:_0x5cd927[_0x3fd3('0x2d')];if(_0x22de9d['query'][_0x3fd3('0x3e')]){_0x362270[_0x3fd3('0x46')]=[{'all':!![]}];}_0x362270=_['merge']({},_0x362270,_0x22de9d[_0x3fd3('0x47')]);return db[_0x3fd3('0x3f')][_0x3fd3('0x48')](_0x362270)['then'](handleEntityNotFound(_0x41df6f,null))[_0x3fd3('0x26')](respondWithResult(_0x41df6f,null))[_0x3fd3('0x42')](handleError(_0x41df6f,null));};exports[_0x3fd3('0x49')]=function(_0x1e8883,_0x200289){return db[_0x3fd3('0x3f')][_0x3fd3('0x49')](_0x1e8883[_0x3fd3('0x4a')],{})[_0x3fd3('0x26')](function(_0x2ccf19){var _0x69105a=_0x1e8883[_0x3fd3('0x4b')][_0x3fd3('0x24')]({'plain':!![]});if(!_0x69105a)throw new Error(_0x3fd3('0x4c'));if(_0x69105a[_0x3fd3('0x4d')]===_0x3fd3('0x4b')){var _0xdf2f1b=_0x2ccf19[_0x3fd3('0x24')]({'plain':!![]});var _0x325f4b=_0x3fd3('0x4e');return db['UserProfileSection'][_0x3fd3('0x48')]({'where':{'name':_0x325f4b,'userProfileId':_0x69105a['userProfileId']},'raw':!![]})[_0x3fd3('0x26')](function(_0x38aa6e){if(_0x38aa6e&&_0x38aa6e[_0x3fd3('0x4f')]===0x0){return db[_0x3fd3('0x25')][_0x3fd3('0x49')]({'name':_0xdf2f1b[_0x3fd3('0x2a')],'resourceId':_0xdf2f1b['id'],'type':_0x38aa6e[_0x3fd3('0x2a')],'sectionId':_0x38aa6e['id']},{})[_0x3fd3('0x26')](function(){return _0x2ccf19;});}else{return _0x2ccf19;}})[_0x3fd3('0x42')](function(_0x8b3fa2){logger[_0x3fd3('0x28')](_0x3fd3('0x50'),_0x8b3fa2);throw _0x8b3fa2;});}return _0x2ccf19;})[_0x3fd3('0x26')](respondWithResult(_0x200289,0xc9))[_0x3fd3('0x42')](handleError(_0x200289,null));};exports[_0x3fd3('0x23')]=function(_0x2bfbea,_0x1b7ec0){if(_0x2bfbea[_0x3fd3('0x4a')]['id']){delete _0x2bfbea[_0x3fd3('0x4a')]['id'];}return db[_0x3fd3('0x3f')][_0x3fd3('0x48')]({'where':{'id':_0x2bfbea[_0x3fd3('0x44')]['id']}})['then'](handleEntityNotFound(_0x1b7ec0,null))[_0x3fd3('0x26')](saveUpdates(_0x2bfbea[_0x3fd3('0x4a')],null))[_0x3fd3('0x26')](respondWithResult(_0x1b7ec0,null))[_0x3fd3('0x42')](handleError(_0x1b7ec0,null));};exports[_0x3fd3('0x51')]=function(_0x528911,_0x466c77){return db[_0x3fd3('0x3f')]['find']({'where':{'id':_0x528911['params']['id']}})['then'](handleEntityNotFound(_0x466c77,null))[_0x3fd3('0x26')](removeEntity(_0x466c77,null))[_0x3fd3('0x42')](handleError(_0x466c77,null));};exports[_0x3fd3('0x2c')]=function(_0x3580e5,_0x7941e6){return db[_0x3fd3('0x3f')][_0x3fd3('0x2c')]()[_0x3fd3('0x26')](respondWithResult(_0x7941e6,null))[_0x3fd3('0x42')](handleError(_0x7941e6,null));};exports['addContacts']=function(_0x5508c9,_0x262eb8,_0x1f0b47){return db[_0x3fd3('0x52')][_0x3fd3('0x48')]({'where':{'id':_0x5508c9['params']['id']}})[_0x3fd3('0x26')](handleEntityNotFound(_0x262eb8,null))[_0x3fd3('0x26')](function(_0x1339dd){if(_0x1339dd){return _0x1339dd[_0x3fd3('0x53')](_0x5508c9[_0x3fd3('0x4a')][_0x3fd3('0x54')],_[_0x3fd3('0x55')](_0x5508c9[_0x3fd3('0x4a')],[_0x3fd3('0x54'),'id'])||{});}})[_0x3fd3('0x26')](respondWithResult(_0x262eb8,null))[_0x3fd3('0x42')](handleError(_0x262eb8,null));};exports[_0x3fd3('0x56')]=function(_0x36ac46,_0x4df954,_0x4d82e1){var _0x2fdc7c={};var _0x5d6463={};var _0x38481f;var _0x4ab991;return db[_0x3fd3('0x3f')]['findOne']({'where':{'id':_0x36ac46[_0x3fd3('0x44')]['id']}})['then'](handleEntityNotFound(_0x4df954,null))[_0x3fd3('0x26')](function(_0x22545e){if(_0x22545e){_0x38481f=_0x22545e;_0x5d6463['model']=_[_0x3fd3('0x2e')](db[_0x3fd3('0x52')][_0x3fd3('0x45')]);_0x5d6463[_0x3fd3('0x2f')]=_[_0x3fd3('0x2e')](_0x36ac46[_0x3fd3('0x2f')]);_0x5d6463['filters']=_[_0x3fd3('0x31')](_0x5d6463[_0x3fd3('0x2d')],_0x5d6463[_0x3fd3('0x2f')]);_0x2fdc7c[_0x3fd3('0x33')]=_['intersection'](_0x5d6463[_0x3fd3('0x2d')],qs['fields'](_0x36ac46[_0x3fd3('0x2f')][_0x3fd3('0x32')]));_0x2fdc7c['attributes']=_0x2fdc7c[_0x3fd3('0x33')][_0x3fd3('0x34')]?_0x2fdc7c['attributes']:_0x5d6463[_0x3fd3('0x2d')];_0x2fdc7c[_0x3fd3('0x37')]=qs[_0x3fd3('0x38')](_0x36ac46['query'][_0x3fd3('0x38')]);_0x2fdc7c['where']=qs[_0x3fd3('0x30')](_[_0x3fd3('0x39')](_0x36ac46[_0x3fd3('0x2f')],_0x5d6463[_0x3fd3('0x30')]));if(_0x36ac46[_0x3fd3('0x2f')][_0x3fd3('0x3a')]){_0x2fdc7c[_0x3fd3('0x3b')]=_['merge'](_0x2fdc7c[_0x3fd3('0x3b')],{'$or':_[_0x3fd3('0x3c')](_0x2fdc7c[_0x3fd3('0x33')],function(_0x3ee353){var _0x152b53={};_0x152b53[_0x3ee353]={'$like':'%'+_0x36ac46['query'][_0x3fd3('0x3a')]+'%'};return _0x152b53;})});}_0x2fdc7c=_['merge']({},_0x2fdc7c,_0x36ac46[_0x3fd3('0x47')]);return _0x38481f['getContacts'](_0x2fdc7c);}})[_0x3fd3('0x26')](function(_0x5d97f2){if(_0x5d97f2){_0x4ab991=_0x5d97f2[_0x3fd3('0x34')];if(!_0x36ac46['query'][_0x3fd3('0x35')](_0x3fd3('0x36'))){_0x2fdc7c[_0x3fd3('0x1c')]=qs[_0x3fd3('0x1c')](_0x36ac46['query'][_0x3fd3('0x1c')]);_0x2fdc7c[_0x3fd3('0x1a')]=qs['offset'](_0x36ac46[_0x3fd3('0x2f')]['offset']);}return _0x38481f[_0x3fd3('0x56')](_0x2fdc7c);}})['then'](function(_0x5c237f){if(_0x5c237f){return _0x5c237f?{'count':_0x4ab991,'rows':_0x5c237f}:null;}})['then'](respondWithResult(_0x4df954,null))['catch'](handleError(_0x4df954,null));};
\ No newline at end of file
+var _0x9de5=['map','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','end','status','json','limit','undefined','count','offset','set','apply','save','update','then','destroy','get','UserProfileResource','stack','name','send','index','CmCompany','describe','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','findAll','rows','catch','show','params','keys','rawAttributes','include','find','create','body','role','user','Companies','UserProfileSection','autoAssociation','addContacts','ids','getContacts','CmContact'];(function(_0xb8a5c9,_0x505b08){var _0x1fc586=function(_0x4a1ce2){while(--_0x4a1ce2){_0xb8a5c9['push'](_0xb8a5c9['shift']());}};_0x1fc586(++_0x505b08);}(_0x9de5,0x1e7));var _0x59de=function(_0x3d4f61,_0x5e99d9){_0x3d4f61=_0x3d4f61-0x0;var _0x5cb00e=_0x9de5[_0x3d4f61];return _0x5cb00e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x59de('0x0'));var rp=require(_0x59de('0x1'));var moment=require('moment');var BPromise=require(_0x59de('0x2'));var Mustache=require(_0x59de('0x3'));var util=require(_0x59de('0x4'));var path=require(_0x59de('0x5'));var sox=require(_0x59de('0x6'));var csv=require(_0x59de('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x59de('0x8'));var _=require(_0x59de('0x9'));var squel=require(_0x59de('0xa'));var crypto=require('crypto');var jsforce=require(_0x59de('0xb'));var deskjs=require(_0x59de('0xc'));var toCsv=require('to-csv');var querystring=require(_0x59de('0xd'));var Papa=require(_0x59de('0xe'));var Redis=require('ioredis');var authService=require(_0x59de('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x59de('0x10'));var hardwareService=require(_0x59de('0x11'));var logger=require(_0x59de('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x59de('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x59de('0x14'))['db'];function respondWithStatusCode(_0x4830df,_0x3e9287){_0x3e9287=_0x3e9287||0xcc;return function(_0x9c2c7c){if(_0x9c2c7c){return _0x4830df[_0x59de('0x15')](_0x3e9287);}return _0x4830df['status'](_0x3e9287)[_0x59de('0x16')]();};}function respondWithResult(_0x41786f,_0x41eaf8){_0x41eaf8=_0x41eaf8||0xc8;return function(_0x2b7765){if(_0x2b7765){return _0x41786f[_0x59de('0x17')](_0x41eaf8)[_0x59de('0x18')](_0x2b7765);}};}function respondWithFilteredResult(_0xb3fce8,_0x5238e5){return function(_0x5241fa){if(_0x5241fa){var _0x79d766=typeof _0x5238e5['offset']==='undefined'&&typeof _0x5238e5[_0x59de('0x19')]===_0x59de('0x1a');var _0x36cc85=_0x5241fa['count'];var _0x544606=_0x79d766?0x0:_0x5238e5['offset'];var _0x28cd22=_0x79d766?_0x5241fa[_0x59de('0x1b')]:_0x5238e5[_0x59de('0x1c')]+_0x5238e5[_0x59de('0x19')];var _0x365080;if(_0x28cd22>=_0x36cc85){_0x28cd22=_0x36cc85;_0x365080=0xc8;}else{_0x365080=0xce;}_0xb3fce8[_0x59de('0x17')](_0x365080);return _0xb3fce8[_0x59de('0x1d')]('Content-Range',_0x544606+'-'+_0x28cd22+'/'+_0x36cc85)[_0x59de('0x18')](_0x5241fa);}return null;};}function patchUpdates(_0x4fa1cd){return function(_0x5d24ba){try{jsonpatch[_0x59de('0x1e')](_0x5d24ba,_0x4fa1cd,!![]);}catch(_0x4ce30b){return BPromise['reject'](_0x4ce30b);}return _0x5d24ba[_0x59de('0x1f')]();};}function saveUpdates(_0x2e934c,_0x489b59){return function(_0x1d42d6){if(_0x1d42d6){return _0x1d42d6[_0x59de('0x20')](_0x2e934c)[_0x59de('0x21')](function(_0x5794fa){return _0x5794fa;});}return null;};}function removeEntity(_0x3bcd48,_0x1527c1){return function(_0x3e345e){if(_0x3e345e){return _0x3e345e[_0x59de('0x22')]()[_0x59de('0x21')](function(){var _0x2b5e66=_0x3e345e[_0x59de('0x23')]({'plain':!![]});var _0x198163='Companies';return db[_0x59de('0x24')][_0x59de('0x22')]({'where':{'type':_0x198163,'resourceId':_0x2b5e66['id']}})[_0x59de('0x21')](function(){return _0x3e345e;});})[_0x59de('0x21')](function(){_0x3bcd48['status'](0xcc)[_0x59de('0x16')]();});}};}function handleEntityNotFound(_0x5f2bbc,_0xda105b){return function(_0x122863){if(!_0x122863){_0x5f2bbc[_0x59de('0x15')](0x194);}return _0x122863;};}function handleError(_0x4fae0b,_0x5a257b){_0x5a257b=_0x5a257b||0x1f4;return function(_0x1fcb9c){logger['error'](_0x1fcb9c[_0x59de('0x25')]);if(_0x1fcb9c[_0x59de('0x26')]){delete _0x1fcb9c[_0x59de('0x26')];}_0x4fae0b[_0x59de('0x17')](_0x5a257b)[_0x59de('0x27')](_0x1fcb9c);};}exports[_0x59de('0x28')]=function(_0x2268ae,_0x552d9c){var _0x560006={},_0x2ccbd4={},_0x575327={'count':0x0,'rows':[]};return db[_0x59de('0x29')][_0x59de('0x2a')]()[_0x59de('0x21')](function(_0x539eec){_0x2ccbd4[_0x59de('0x2b')]=_['keys'](_0x539eec);_0x2ccbd4[_0x59de('0x2c')]=_['keys'](_0x2268ae[_0x59de('0x2c')]);_0x2ccbd4['filters']=_[_0x59de('0x2d')](_0x2ccbd4[_0x59de('0x2b')],_0x2ccbd4[_0x59de('0x2c')]);_0x560006['attributes']=_[_0x59de('0x2d')](_0x2ccbd4[_0x59de('0x2b')],qs[_0x59de('0x2e')](_0x2268ae['query'][_0x59de('0x2e')]));_0x560006['attributes']=_0x560006[_0x59de('0x2f')][_0x59de('0x30')]?_0x560006[_0x59de('0x2f')]:_0x2ccbd4[_0x59de('0x2b')];if(!_0x2268ae['query'][_0x59de('0x31')](_0x59de('0x32'))){_0x560006['limit']=qs[_0x59de('0x19')](_0x2268ae[_0x59de('0x2c')][_0x59de('0x19')]);_0x560006['offset']=qs[_0x59de('0x1c')](_0x2268ae[_0x59de('0x2c')][_0x59de('0x1c')]);}_0x560006[_0x59de('0x33')]=qs['sort'](_0x2268ae[_0x59de('0x2c')][_0x59de('0x34')]);_0x560006[_0x59de('0x35')]=qs[_0x59de('0x36')](_[_0x59de('0x37')](_0x2268ae['query'],_0x2ccbd4[_0x59de('0x36')]),_0x539eec);if(_0x2268ae[_0x59de('0x2c')][_0x59de('0x38')]){_0x560006[_0x59de('0x35')]=_[_0x59de('0x39')](_0x560006['where'],{'$or':_['map'](_0x560006[_0x59de('0x2f')],function(_0xad84ef){var _0x57e988={};_0x57e988[_0xad84ef]={'$like':'%'+_0x2268ae[_0x59de('0x2c')]['filter']+'%'};return _0x57e988;})});}_0x560006=_[_0x59de('0x39')]({},_0x560006,_0x2268ae[_0x59de('0x3a')]);var _0x422eea={'where':_0x560006[_0x59de('0x35')]};return db[_0x59de('0x29')][_0x59de('0x1b')](_0x422eea)[_0x59de('0x21')](function(_0x5f21d5){_0x575327['count']=_0x5f21d5;if(_0x2268ae[_0x59de('0x2c')][_0x59de('0x3b')]){_0x560006['include']=[{'all':!![]}];}return db[_0x59de('0x29')][_0x59de('0x3c')](_0x560006);})['then'](function(_0x424845){_0x575327[_0x59de('0x3d')]=_0x424845;return _0x575327;})[_0x59de('0x21')](respondWithFilteredResult(_0x552d9c,_0x560006))[_0x59de('0x3e')](handleError(_0x552d9c,null));})[_0x59de('0x3e')](handleError(_0x552d9c,null));};exports[_0x59de('0x3f')]=function(_0x57fd76,_0x5ade81){var _0x5c072e={'raw':![],'where':{'id':_0x57fd76[_0x59de('0x40')]['id']}},_0x4c160b={};_0x4c160b[_0x59de('0x2b')]=_[_0x59de('0x41')](db['CmCompany'][_0x59de('0x42')]);_0x4c160b['query']=_[_0x59de('0x41')](_0x57fd76[_0x59de('0x2c')]);_0x4c160b[_0x59de('0x36')]=_[_0x59de('0x2d')](_0x4c160b['model'],_0x4c160b[_0x59de('0x2c')]);_0x5c072e[_0x59de('0x2f')]=_[_0x59de('0x2d')](_0x4c160b[_0x59de('0x2b')],qs[_0x59de('0x2e')](_0x57fd76[_0x59de('0x2c')][_0x59de('0x2e')]));_0x5c072e[_0x59de('0x2f')]=_0x5c072e['attributes'][_0x59de('0x30')]?_0x5c072e['attributes']:_0x4c160b[_0x59de('0x2b')];if(_0x57fd76[_0x59de('0x2c')][_0x59de('0x3b')]){_0x5c072e[_0x59de('0x43')]=[{'all':!![]}];}_0x5c072e=_['merge']({},_0x5c072e,_0x57fd76['options']);return db[_0x59de('0x29')][_0x59de('0x44')](_0x5c072e)[_0x59de('0x21')](handleEntityNotFound(_0x5ade81,null))['then'](respondWithResult(_0x5ade81,null))['catch'](handleError(_0x5ade81,null));};exports[_0x59de('0x45')]=function(_0x4cea22,_0x2bf489){return db[_0x59de('0x29')][_0x59de('0x45')](_0x4cea22[_0x59de('0x46')],{})[_0x59de('0x21')](function(_0x5e982a){var _0x47e294=_0x4cea22['user']['get']({'plain':!![]});if(!_0x47e294)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x47e294[_0x59de('0x47')]===_0x59de('0x48')){var _0x532c11=_0x5e982a[_0x59de('0x23')]({'plain':!![]});var _0x2bf831=_0x59de('0x49');return db[_0x59de('0x4a')][_0x59de('0x44')]({'where':{'name':_0x2bf831,'userProfileId':_0x47e294['userProfileId']},'raw':!![]})[_0x59de('0x21')](function(_0xe2530f){if(_0xe2530f&&_0xe2530f[_0x59de('0x4b')]===0x0){return db[_0x59de('0x24')][_0x59de('0x45')]({'name':_0x532c11[_0x59de('0x26')],'resourceId':_0x532c11['id'],'type':_0xe2530f[_0x59de('0x26')],'sectionId':_0xe2530f['id']},{})[_0x59de('0x21')](function(){return _0x5e982a;});}else{return _0x5e982a;}})['catch'](function(_0x1cb3f9){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1cb3f9);throw _0x1cb3f9;});}return _0x5e982a;})[_0x59de('0x21')](respondWithResult(_0x2bf489,0xc9))[_0x59de('0x3e')](handleError(_0x2bf489,null));};exports[_0x59de('0x20')]=function(_0x50904f,_0x485a9d){if(_0x50904f[_0x59de('0x46')]['id']){delete _0x50904f[_0x59de('0x46')]['id'];}return db['CmCompany'][_0x59de('0x44')]({'where':{'id':_0x50904f[_0x59de('0x40')]['id']}})['then'](handleEntityNotFound(_0x485a9d,null))['then'](saveUpdates(_0x50904f[_0x59de('0x46')],null))['then'](respondWithResult(_0x485a9d,null))['catch'](handleError(_0x485a9d,null));};exports[_0x59de('0x22')]=function(_0x5ea49e,_0x5267ea){return db[_0x59de('0x29')][_0x59de('0x44')]({'where':{'id':_0x5ea49e['params']['id']}})[_0x59de('0x21')](handleEntityNotFound(_0x5267ea,null))[_0x59de('0x21')](removeEntity(_0x5267ea,null))[_0x59de('0x3e')](handleError(_0x5267ea,null));};exports[_0x59de('0x2a')]=function(_0x1b0f45,_0x41ea89){return db[_0x59de('0x29')][_0x59de('0x2a')]()[_0x59de('0x21')](respondWithResult(_0x41ea89,null))[_0x59de('0x3e')](handleError(_0x41ea89,null));};exports[_0x59de('0x4c')]=function(_0x2bd819,_0x319bb2,_0x2e490d){return db['CmContact'][_0x59de('0x44')]({'where':{'id':_0x2bd819['params']['id']}})[_0x59de('0x21')](handleEntityNotFound(_0x319bb2,null))[_0x59de('0x21')](function(_0x90bd6f){if(_0x90bd6f){return _0x90bd6f[_0x59de('0x4c')](_0x2bd819[_0x59de('0x46')]['ids'],_['omit'](_0x2bd819[_0x59de('0x46')],[_0x59de('0x4d'),'id'])||{});}})[_0x59de('0x21')](respondWithResult(_0x319bb2,null))[_0x59de('0x3e')](handleError(_0x319bb2,null));};exports[_0x59de('0x4e')]=function(_0x32c488,_0x4168ab,_0x12805f){var _0x475ea2={};var _0x3d348d={};var _0x213e25;var _0x2679ad;return db[_0x59de('0x29')]['findOne']({'where':{'id':_0x32c488[_0x59de('0x40')]['id']}})[_0x59de('0x21')](handleEntityNotFound(_0x4168ab,null))[_0x59de('0x21')](function(_0x47201d){if(_0x47201d){_0x213e25=_0x47201d;_0x3d348d[_0x59de('0x2b')]=_[_0x59de('0x41')](db[_0x59de('0x4f')]['rawAttributes']);_0x3d348d[_0x59de('0x2c')]=_[_0x59de('0x41')](_0x32c488[_0x59de('0x2c')]);_0x3d348d[_0x59de('0x36')]=_[_0x59de('0x2d')](_0x3d348d[_0x59de('0x2b')],_0x3d348d[_0x59de('0x2c')]);_0x475ea2[_0x59de('0x2f')]=_['intersection'](_0x3d348d[_0x59de('0x2b')],qs[_0x59de('0x2e')](_0x32c488[_0x59de('0x2c')]['fields']));_0x475ea2[_0x59de('0x2f')]=_0x475ea2['attributes']['length']?_0x475ea2['attributes']:_0x3d348d[_0x59de('0x2b')];_0x475ea2[_0x59de('0x33')]=qs[_0x59de('0x34')](_0x32c488[_0x59de('0x2c')]['sort']);_0x475ea2[_0x59de('0x35')]=qs[_0x59de('0x36')](_[_0x59de('0x37')](_0x32c488[_0x59de('0x2c')],_0x3d348d[_0x59de('0x36')]));if(_0x32c488[_0x59de('0x2c')][_0x59de('0x38')]){_0x475ea2['where']=_[_0x59de('0x39')](_0x475ea2['where'],{'$or':_[_0x59de('0x50')](_0x475ea2[_0x59de('0x2f')],function(_0x151522){var _0x36e4ab={};_0x36e4ab[_0x151522]={'$like':'%'+_0x32c488['query']['filter']+'%'};return _0x36e4ab;})});}_0x475ea2=_[_0x59de('0x39')]({},_0x475ea2,_0x32c488[_0x59de('0x3a')]);return _0x213e25[_0x59de('0x4e')](_0x475ea2);}})[_0x59de('0x21')](function(_0xdb99e1){if(_0xdb99e1){_0x2679ad=_0xdb99e1[_0x59de('0x30')];if(!_0x32c488[_0x59de('0x2c')]['hasOwnProperty'](_0x59de('0x32'))){_0x475ea2[_0x59de('0x19')]=qs[_0x59de('0x19')](_0x32c488[_0x59de('0x2c')]['limit']);_0x475ea2[_0x59de('0x1c')]=qs[_0x59de('0x1c')](_0x32c488['query'][_0x59de('0x1c')]);}return _0x213e25[_0x59de('0x4e')](_0x475ea2);}})['then'](function(_0x5207d9){if(_0x5207d9){return _0x5207d9?{'count':_0x2679ad,'rows':_0x5207d9}:null;}})[_0x59de('0x21')](respondWithResult(_0x4168ab,null))[_0x59de('0x3e')](handleError(_0x4168ab,null));};
\ No newline at end of file
index 983992e..1411b90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf4e=['rimraf','../../config/environment','./cmCompany.attributes','define','util','moment','bluebird'];(function(_0x3af700,_0x3f08a3){var _0x4e184c=function(_0x507e49){while(--_0x507e49){_0x3af700['push'](_0x3af700['shift']());}};_0x4e184c(++_0x3f08a3);}(_0xbf4e,0xdd));var _0xebf4=function(_0x4e93c1,_0x477ec6){_0x4e93c1=_0x4e93c1-0x0;var _0x41e3ff=_0xbf4e[_0x4e93c1];return _0x41e3ff;};'use strict';var _=require('lodash');var util=require(_0xebf4('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xebf4('0x1'));var BPromise=require(_0xebf4('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xebf4('0x3'));var config=require(_0xebf4('0x4'));var attributes=require(_0xebf4('0x5'));module['exports']=function(_0x66fd13,_0x210cd0){return _0x66fd13[_0xebf4('0x6')]('CmCompany',attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8ffa=['path','rimraf','../../config/environment','./cmCompany.attributes','define','CmCompany','lodash','util','moment','bluebird','request-promise'];(function(_0x493f66,_0x3ca78b){var _0x3094ce=function(_0x391b4f){while(--_0x391b4f){_0x493f66['push'](_0x493f66['shift']());}};_0x3094ce(++_0x3ca78b);}(_0x8ffa,0x145));var _0xa8ff=function(_0x58fed8,_0x6aa407){_0x58fed8=_0x58fed8-0x0;var _0x33ca8e=_0x8ffa[_0x58fed8];return _0x33ca8e;};'use strict';var _=require(_0xa8ff('0x0'));var util=require(_0xa8ff('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xa8ff('0x2'));var BPromise=require(_0xa8ff('0x3'));var rp=require(_0xa8ff('0x4'));var fs=require('fs');var path=require(_0xa8ff('0x5'));var rimraf=require(_0xa8ff('0x6'));var config=require(_0xa8ff('0x7'));var attributes=require(_0xa8ff('0x8'));module['exports']=function(_0x4a6826,_0x29fdac){return _0x4a6826[_0xa8ff('0x9')](_0xa8ff('0xa'),attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8ea11da..0050edc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcee2=['../../config/environment','jayson/promise','http','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','stringify','error','message','result','util','moment','../../mysqldb','../../config/logger'];(function(_0x11155f,_0x57b687){var _0xd07e48=function(_0x592615){while(--_0x592615){_0x11155f['push'](_0x11155f['shift']());}};_0xd07e48(++_0x57b687);}(_0xcee2,0xec));var _0x2cee=function(_0x2951bd,_0x4b647f){_0x2951bd=_0x2951bd-0x0;var _0x5a7332=_0xcee2[_0x2951bd];return _0x5a7332;};'use strict';var _=require('lodash');var util=require(_0x2cee('0x0'));var moment=require(_0x2cee('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2cee('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x2cee('0x3'))('rpc');var config=require(_0x2cee('0x4'));var jayson=require(_0x2cee('0x5'));var client=jayson['client'][_0x2cee('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x4a5cfd,_0x49e8ea,_0x3395f9){return new BPromise(function(_0x405841,_0xfe0e2c){return client['request'](_0x4a5cfd,_0x3395f9)['then'](function(_0x308f1a){logger[_0x2cee('0x7')](_0x2cee('0x8'),_0x49e8ea,_0x2cee('0x9'));logger[_0x2cee('0xa')](_0x2cee('0xb'),_0x49e8ea,'request\x20sent',JSON[_0x2cee('0xc')](_0x308f1a));if(_0x308f1a[_0x2cee('0xd')]){if(_0x308f1a[_0x2cee('0xd')]['code']===0x1f4){logger[_0x2cee('0xd')](_0x2cee('0x8'),_0x49e8ea,_0x308f1a[_0x2cee('0xd')][_0x2cee('0xe')]);return _0xfe0e2c(_0x308f1a[_0x2cee('0xd')]['message']);}logger[_0x2cee('0xd')](_0x2cee('0x8'),_0x49e8ea,_0x308f1a[_0x2cee('0xd')]['message']);return _0x405841(_0x308f1a[_0x2cee('0xd')][_0x2cee('0xe')]);}else{logger[_0x2cee('0x7')](_0x2cee('0x8'),_0x49e8ea,_0x2cee('0x9'));_0x405841(_0x308f1a[_0x2cee('0xf')]['message']);}})['catch'](function(_0x2ece87){logger['error'](_0x2cee('0x8'),_0x49e8ea,_0x2ece87);_0xfe0e2c(_0x2ece87);});});}
\ No newline at end of file
+var _0x8655=['request\x20sent','debug','stringify','error','code','message','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','http','request','then','info','CmCompany,\x20%s,\x20%s'];(function(_0x4df622,_0x2577aa){var _0x361edc=function(_0x138d1d){while(--_0x138d1d){_0x4df622['push'](_0x4df622['shift']());}};_0x361edc(++_0x2577aa);}(_0x8655,0x1e1));var _0x5865=function(_0x4c965,_0x1eca6e){_0x4c965=_0x4c965-0x0;var _0xe08021=_0x8655[_0x4c965];return _0xe08021;};'use strict';var _=require(_0x5865('0x0'));var util=require(_0x5865('0x1'));var moment=require(_0x5865('0x2'));var BPromise=require('bluebird');var rs=require(_0x5865('0x3'));var fs=require('fs');var Redis=require(_0x5865('0x4'));var db=require(_0x5865('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5865('0x6'));var config=require('../../config/environment');var jayson=require(_0x5865('0x7'));var client=jayson['client'][_0x5865('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x549b8d,_0x38dc62,_0x5b745c){return new BPromise(function(_0x6fdfd,_0x3cfbee){return client[_0x5865('0x9')](_0x549b8d,_0x5b745c)[_0x5865('0xa')](function(_0x53c94f){logger[_0x5865('0xb')](_0x5865('0xc'),_0x38dc62,_0x5865('0xd'));logger[_0x5865('0xe')]('CmCompany,\x20%s,\x20%s,\x20%s',_0x38dc62,'request\x20sent',JSON[_0x5865('0xf')](_0x53c94f));if(_0x53c94f[_0x5865('0x10')]){if(_0x53c94f['error'][_0x5865('0x11')]===0x1f4){logger['error'](_0x5865('0xc'),_0x38dc62,_0x53c94f[_0x5865('0x10')][_0x5865('0x12')]);return _0x3cfbee(_0x53c94f['error']['message']);}logger[_0x5865('0x10')](_0x5865('0xc'),_0x38dc62,_0x53c94f[_0x5865('0x10')]['message']);return _0x6fdfd(_0x53c94f['error'][_0x5865('0x12')]);}else{logger[_0x5865('0xb')](_0x5865('0xc'),_0x38dc62,_0x5865('0xd'));_0x6fdfd(_0x53c94f['result']['message']);}})['catch'](function(_0x1a5618){logger[_0x5865('0x10')](_0x5865('0xc'),_0x38dc62,_0x1a5618);_0x3cfbee(_0x1a5618);});});}
\ No newline at end of file
index fc9cd82..2f7e294 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x035d=['get','isAuthenticated','index','/describe','describe','/:id','show','/:id/contacts','getContacts','create','post','put','update','delete','destroy','exports','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x53d5c6,_0x4c9b37){var _0x48e281=function(_0x57c6b8){while(--_0x57c6b8){_0x53d5c6['push'](_0x53d5c6['shift']());}};_0x48e281(++_0x4c9b37);}(_0x035d,0x15a));var _0xd035=function(_0x1706d1,_0x51eb6d){_0x1706d1=_0x1706d1-0x0;var _0x10838a=_0x035d[_0x1706d1];return _0x10838a;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xd035('0x0'));var express=require(_0xd035('0x1'));var router=express[_0xd035('0x2')]();var fs_extra=require(_0xd035('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xd035('0x4'));var config=require(_0xd035('0x5'));var controller=require('./cmCompany.controller');router[_0xd035('0x6')]('/',auth[_0xd035('0x7')](),controller[_0xd035('0x8')]);router[_0xd035('0x6')](_0xd035('0x9'),auth[_0xd035('0x7')](),controller[_0xd035('0xa')]);router['get'](_0xd035('0xb'),auth[_0xd035('0x7')](),controller[_0xd035('0xc')]);router['get'](_0xd035('0xd'),auth[_0xd035('0x7')](),controller[_0xd035('0xe')]);router['post']('/',auth[_0xd035('0x7')](),controller[_0xd035('0xf')]);router[_0xd035('0x10')](_0xd035('0xd'),auth['isAuthenticated'](),controller['addContacts']);router[_0xd035('0x11')](_0xd035('0xb'),auth['isAuthenticated'](),controller[_0xd035('0x12')]);router[_0xd035('0x13')](_0xd035('0xb'),auth[_0xd035('0x7')](),controller[_0xd035('0x14')]);module[_0xd035('0x15')]=router;
\ No newline at end of file
+var _0x862f=['index','/describe','describe','/:id','show','post','create','/:id/contacts','addContacts','put','update','destroy','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','./cmCompany.controller','get','isAuthenticated'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x862f,0x1db));var _0xf862=function(_0x11a6c2,_0x501fdf){_0x11a6c2=_0x11a6c2-0x0;var _0x46f007=_0x862f[_0x11a6c2];return _0x46f007;};'use strict';var multer=require(_0xf862('0x0'));var util=require('util');var path=require(_0xf862('0x1'));var timeout=require('connect-timeout');var express=require(_0xf862('0x2'));var router=express[_0xf862('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xf862('0x4'));var interaction=require(_0xf862('0x5'));var config=require('../../config/environment');var controller=require(_0xf862('0x6'));router[_0xf862('0x7')]('/',auth[_0xf862('0x8')](),controller[_0xf862('0x9')]);router[_0xf862('0x7')](_0xf862('0xa'),auth[_0xf862('0x8')](),controller[_0xf862('0xb')]);router[_0xf862('0x7')](_0xf862('0xc'),auth[_0xf862('0x8')](),controller[_0xf862('0xd')]);router[_0xf862('0x7')]('/:id/contacts',auth[_0xf862('0x8')](),controller['getContacts']);router[_0xf862('0xe')]('/',auth['isAuthenticated'](),controller[_0xf862('0xf')]);router[_0xf862('0xe')](_0xf862('0x10'),auth['isAuthenticated'](),controller[_0xf862('0x11')]);router[_0xf862('0x12')](_0xf862('0xc'),auth[_0xf862('0x8')](),controller[_0xf862('0x13')]);router['delete'](_0xf862('0xc'),auth['isAuthenticated'](),controller[_0xf862('0x14')]);module[_0xf862('0x15')]=router;
\ No newline at end of file
index c86b6c8..a7f46e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb764=['UNSIGNED','lodash','sequelize','STRING','TEXT','INTEGER'];(function(_0x5a03e7,_0x17b33b){var _0x5c2f0f=function(_0x5d560b){while(--_0x5d560b){_0x5a03e7['push'](_0x5a03e7['shift']());}};_0x5c2f0f(++_0x17b33b);}(_0xb764,0x181));var _0x4b76=function(_0x4f6ea3,_0x34b825){_0x4f6ea3=_0x4f6ea3-0x0;var _0x3baf5c=_0xb764[_0x4f6ea3];return _0x3baf5c;};'use strict';var _=require(_0x4b76('0x0'));var Sequelize=require(_0x4b76('0x1'));module['exports']={'firstName':{'type':Sequelize[_0x4b76('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0x4b76('0x2')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0x4b76('0x2')]},'city':{'type':Sequelize[_0x4b76('0x2')]},'country':{'type':Sequelize[_0x4b76('0x2')]},'dateOfBirth':{'type':Sequelize[_0x4b76('0x2')]},'description':{'type':Sequelize[_0x4b76('0x3')]},'phone':{'type':Sequelize[_0x4b76('0x2')]},'mobile':{'type':Sequelize[_0x4b76('0x2')]},'fax':{'type':Sequelize[_0x4b76('0x2')]},'email':{'type':Sequelize[_0x4b76('0x2')]},'url':{'type':Sequelize[_0x4b76('0x2')]},'facebook':{'type':Sequelize['STRING']},'fb_data':{'type':Sequelize[_0x4b76('0x2')]},'twitter':{'type':Sequelize[_0x4b76('0x2')]},'skype':{'type':Sequelize[_0x4b76('0x2')]},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize[_0x4b76('0x2')]},'line':{'type':Sequelize[_0x4b76('0x2')]},'wechat':{'type':Sequelize[_0x4b76('0x2')]},'telegram':{'type':Sequelize['STRING']},'UserId':{'type':Sequelize['INTEGER']},'AdditionalPhones':{'type':Sequelize[_0x4b76('0x2')]},'priority':{'type':Sequelize[_0x4b76('0x4')](0x2)[_0x4b76('0x5')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize['NOW']},'dialTimezone':{'type':Sequelize[_0x4b76('0x2')]},'utcOffset':{'type':Sequelize[_0x4b76('0x4')]}};
\ No newline at end of file
+var _0xe34c=['STRING','TEXT','INTEGER','UNSIGNED','DATE','NOW','lodash','sequelize','exports'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0xe34c,0x11d));var _0xce34=function(_0x17c340,_0x375583){_0x17c340=_0x17c340-0x0;var _0x47c5ff=_0xe34c[_0x17c340];return _0x47c5ff;};'use strict';var _=require(_0xce34('0x0'));var Sequelize=require(_0xce34('0x1'));module[_0xce34('0x2')]={'firstName':{'type':Sequelize[_0xce34('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0xce34('0x3')]},'street':{'type':Sequelize[_0xce34('0x3')]},'postalCode':{'type':Sequelize[_0xce34('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xce34('0x4')]},'phone':{'type':Sequelize[_0xce34('0x3')]},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize[_0xce34('0x3')]},'email':{'type':Sequelize[_0xce34('0x3')]},'url':{'type':Sequelize[_0xce34('0x3')]},'facebook':{'type':Sequelize[_0xce34('0x3')]},'fb_data':{'type':Sequelize[_0xce34('0x3')]},'twitter':{'type':Sequelize[_0xce34('0x3')]},'skype':{'type':Sequelize[_0xce34('0x3')]},'teams':{'type':Sequelize[_0xce34('0x3')]},'viber':{'type':Sequelize[_0xce34('0x3')]},'line':{'type':Sequelize['STRING']},'wechat':{'type':Sequelize[_0xce34('0x3')]},'telegram':{'type':Sequelize[_0xce34('0x3')]},'UserId':{'type':Sequelize[_0xce34('0x5')]},'AdditionalPhones':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xce34('0x5')](0x2)[_0xce34('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xce34('0x7')],'defaultValue':Sequelize[_0xce34('0x8')]},'dialTimezone':{'type':Sequelize['STRING']},'utcOffset':{'type':Sequelize[_0xce34('0x5')]}};
\ No newline at end of file
index 4cc7515..2c9ee17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b4e=['OpenchannelMessage','CmContactHasItem','CmHopperFinal','CmHopperHistory','ReportAgentPreview','VoiceCallReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','create','isArray','isNil','dialTimezone','timezones','utcOffset','additionalPhones','each','duplicates','where','$or','push','ListId','findOrCreate','spread','contact','all','show','Tag','Tags','Phones','ItemType','sequelize','Phones.OrderBy','$and','format','cf_%d','omit','pickBy','map','table','cm_contacts','setFields','id\x20=\x20?','text','phone','getTags','model','filters','intersection','fields','attributes','order','sort','pick','filter','options','nolimit','limit','findOne','setTags','ContactItemType','OrderBy','items','item_types','ItemTypeId','description','contact\x20phone\x20exists','PHONE','CmHopperAdditionalPhone','item','`ItemType`.OrderBy','CmHopperId','ItemType.OrderBy','bulkCreate','getAdditionalPhones','literal','duplicateAdditionalPhones','CmContactId','toContactId','rescheduleAdditionalPhones','hopperId','rawAttributes','includeAll','include','rows','getHopperHistories','getHopperFinals','ContactId','getJscriptySessions','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','split','Incorrect\x20binding\x20parameters\x20passed!','root','server/files/tmp','file','filename','0777','fork','CompanyId','pid','upload','createReadStream','path','meta','import','User','agent','binding','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','child_process','stringify','message','exit','error\x20child\x20process','importUpdates','../../components/import/cm/csvUpdates','start\x20child\x20process\x20correctly!','mail','chat','sms','openchannel','fax','whatsapp','-createdAt','resolve','channel','includes','toLowerCase','Invalid\x20channel','range','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','voice','uniqueid','source','callerid','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','fullname','DESC','findAndCountAll','startCase','Account','closed','closedAt','disposition','secondDisposition','thirdDisposition','UserId','Owner','color','customerIp','deviceModel','osName','ratingMessage','ratingType','referer','subject','substatus','externalUrl','threadId','Interaction','flatten','sortBy','reverse','value','slice','moment','bluebird','util','squel','papaparse','ioredis','../../components/contacts','../../components/parsers/qs','api','../../config/environment/shared','../../mysqldb','redis','defaults','socket.io-emitter','./cmContact.socket','register','status','json','offset','undefined','count','set','Content-Range','update','then','destroy','sendStatus','error','stack','name','send','index','getOptions','findAll','query','user','catch','CmContact','find','params','describe','tags','keys','length','startsWith','cf_','columnName','displayName','analytics','CmCustomField','alias','custom','type','values','hasOwnProperty','merge','body','from','get','mergeWith','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','ChatInteraction','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsMessage','FaxInteraction','OpenchannelInteraction'];(function(_0x383cb6,_0x67a28d){var _0x407e2e=function(_0x25bd90){while(--_0x25bd90){_0x383cb6['push'](_0x383cb6['shift']());}};_0x407e2e(++_0x67a28d);}(_0x8b4e,0x1be));var _0xe8b4=function(_0x33dba2,_0x5736c9){_0x33dba2=_0x33dba2-0x0;var _0x183636=_0x8b4e[_0x33dba2];return _0x183636;};'use strict';var moment=require(_0xe8b4('0x0'));var BPromise=require(_0xe8b4('0x1'));var util=require(_0xe8b4('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var squel=require(_0xe8b4('0x3'));var Papa=require(_0xe8b4('0x4'));var Redis=require(_0xe8b4('0x5'));var contacts=require(_0xe8b4('0x6'));var qs=require(_0xe8b4('0x7'));var logger=require('../../config/logger')(_0xe8b4('0x8'));var config=require('../../config/environment');var shared=require(_0xe8b4('0x9'));var db=require(_0xe8b4('0xa'))['db'];config[_0xe8b4('0xb')]=_[_0xe8b4('0xc')](config[_0xe8b4('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xe8b4('0xd'))(new Redis(config['redis']));require(_0xe8b4('0xe'))[_0xe8b4('0xf')](socket);function respondWithResult(_0x221493,_0x2c03a7){_0x2c03a7=_0x2c03a7||0xc8;return function(_0x1be971){if(_0x1be971){return _0x221493[_0xe8b4('0x10')](_0x2c03a7)[_0xe8b4('0x11')](_0x1be971);}};}function respondWithFilteredResult(_0x512e32,_0x4e1530){return function(_0x295958){if(_0x295958){var _0x5a393a=typeof _0x4e1530[_0xe8b4('0x12')]===_0xe8b4('0x13')&&typeof _0x4e1530['limit']===_0xe8b4('0x13');var _0x4a92e8=_0x295958['count'];var _0x5bed71=_0x5a393a?0x0:_0x4e1530['offset'];var _0xab0221=_0x5a393a?_0x295958[_0xe8b4('0x14')]:_0x4e1530[_0xe8b4('0x12')]+_0x4e1530['limit'];var _0x4e34d5;if(_0xab0221>=_0x4a92e8){_0xab0221=_0x4a92e8;_0x4e34d5=0xc8;}else{_0x4e34d5=0xce;}_0x512e32[_0xe8b4('0x10')](_0x4e34d5);return _0x512e32[_0xe8b4('0x15')](_0xe8b4('0x16'),_0x5bed71+'-'+_0xab0221+'/'+_0x4a92e8)[_0xe8b4('0x11')](_0x295958);}return null;};}function saveUpdates(_0x2ba759){return function(_0x464c5e){if(_0x464c5e){return _0x464c5e[_0xe8b4('0x17')](_0x2ba759)[_0xe8b4('0x18')](function(_0x26ad70){return _0x26ad70;});}return null;};}function removeEntity(_0x4d22b7){return function(_0x4825ce){if(_0x4825ce){return _0x4825ce[_0xe8b4('0x19')]()[_0xe8b4('0x18')](function(){_0x4d22b7[_0xe8b4('0x10')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c8b47){return function(_0x57d768){if(!_0x57d768){_0x3c8b47[_0xe8b4('0x1a')](0x194);}return _0x57d768;};}function handleError(_0xb318bb,_0x50313d){_0x50313d=_0x50313d||0x1f4;return function(_0x4d7928){logger[_0xe8b4('0x1b')](_0x4d7928[_0xe8b4('0x1c')]);if(_0x4d7928[_0xe8b4('0x1d')]){delete _0x4d7928[_0xe8b4('0x1d')];}_0xb318bb[_0xe8b4('0x10')](_0x50313d)[_0xe8b4('0x1e')](_0x4d7928);};}exports[_0xe8b4('0x1f')]=function(_0x335db9,_0x314908){var _0x5b7017={};return contacts['describe']()[_0xe8b4('0x18')](function(_0xc75d44){_0x5b7017=qs[_0xe8b4('0x20')](_0xc75d44,_0x335db9);return contacts[_0xe8b4('0x21')](_0x335db9[_0xe8b4('0x22')],_0x335db9[_0xe8b4('0x23')],_0x5b7017,_0xc75d44);})[_0xe8b4('0x18')](respondWithFilteredResult(_0x314908,_0x5b7017))[_0xe8b4('0x24')](handleError(_0x314908,null));};exports['destroy']=function(_0x21ca0d,_0x4f9c5f){return db[_0xe8b4('0x25')][_0xe8b4('0x26')]({'where':{'id':_0x21ca0d[_0xe8b4('0x27')]['id']}})[_0xe8b4('0x18')](handleEntityNotFound(_0x4f9c5f,null))[_0xe8b4('0x18')](removeEntity(_0x4f9c5f,null))[_0xe8b4('0x24')](handleError(_0x4f9c5f,null));};exports[_0xe8b4('0x28')]=function(_0x5d8060,_0x20fc19){return db['CmContact']['describe']()['then'](function(_0x2b143f){delete _0x2b143f[_0xe8b4('0x29')];for(var _0x3ab014=0x0;_0x3ab014<Object[_0xe8b4('0x2a')](_0x2b143f)[_0xe8b4('0x2b')];_0x3ab014++){var _0x523eed=Object[_0xe8b4('0x2a')](_0x2b143f)[_0x3ab014];if(!_[_0xe8b4('0x2c')](_0x523eed,_0xe8b4('0x2d'))){_0x2b143f[_0x523eed][_0xe8b4('0x2e')]=_0x523eed;_0x2b143f[_0x523eed][_0xe8b4('0x2f')]=_0x523eed;}}return _0x2b143f;})[_0xe8b4('0x18')](function(_0x24edf3){var _0x4cfc23={'where':Boolean(_0x5d8060[_0xe8b4('0x22')][_0xe8b4('0x30')])===!![]?undefined:{'$or':[{'ListId':_0x5d8060['query']['id']},{'ListId':null}]},'raw':!![]};return db[_0xe8b4('0x31')][_0xe8b4('0x21')](_0x4cfc23)[_0xe8b4('0x18')](function(_0x5ab883){for(var _0x3935e6=0x0;_0x3935e6<_0x5ab883[_0xe8b4('0x2b')];_0x3935e6++){var _0xdb2e2c=_0xe8b4('0x2d')+_0x5ab883[_0x3935e6]['id'];if(_0x24edf3[_0xdb2e2c]){_0x24edf3[_0xdb2e2c][_0xe8b4('0x2e')]=_0xdb2e2c;_0x24edf3[_0xdb2e2c][_0xe8b4('0x2f')]=_0x5ab883[_0x3935e6][_0xe8b4('0x32')];_0x24edf3[_0xdb2e2c][_0xe8b4('0x33')]={'type':_0x5ab883[_0x3935e6][_0xe8b4('0x34')],'values':_0x5ab883[_0x3935e6][_0xe8b4('0x35')]};}else{logger['info']('Custom\x20field\x20%s\x20not\x20found\x20on\x20cm_contacts\x20table',_0xdb2e2c);}}Object[_0xe8b4('0x2a')](_0x24edf3)['forEach'](function(_0x408143){if(!_0x24edf3[_0x408143][_0xe8b4('0x36')]('columnName')){delete _0x24edf3[_0x408143];}});return _0x24edf3;});})[_0xe8b4('0x18')](respondWithResult(_0x20fc19,null))['catch'](handleError(_0x20fc19,null));};exports[_0xe8b4('0x37')]=function(_0x2531d5,_0x5cba3c){var _0x29faf7;var _0x58c1b4;var _0x28d439;if(_0x2531d5['body']['id']){delete _0x2531d5['body']['id'];}return db[_0xe8b4('0x25')][_0xe8b4('0x21')]({'where':{'id':[_0x2531d5['body']['to'],_0x2531d5[_0xe8b4('0x38')][_0xe8b4('0x39')]]}})[_0xe8b4('0x18')](function(_0x1bd46b){if(_0x1bd46b){if(_0x1bd46b['length']!==0x2){return null;}_0x1bd46b[0x0]=_0x1bd46b[0x0][_0xe8b4('0x3a')]({'plain':!![]});_0x1bd46b[0x1]=_0x1bd46b[0x1][_0xe8b4('0x3a')]({'plain':!![]});delete _0x1bd46b[0x0]['id'];delete _0x1bd46b[0x1]['id'];return _[_0xe8b4('0x3b')](_0x1bd46b[0x0],_0x1bd46b[0x1],function(_0x1bc4a8,_0xfc7069){if(Array['isArray'](_0xfc7069)&&!_0xfc7069['length']){return _0x1bc4a8;}else if(!_0xfc7069){return _0x1bc4a8;}});}})[_0xe8b4('0x18')](handleEntityNotFound(_0x5cba3c,null))[_0xe8b4('0x18')](function(_0x2d62ef){if(_0x2d62ef){if(_0x2d62ef['tags']&&_['isArray'](_0x2d62ef[_0xe8b4('0x29')])){_0x2d62ef[_0xe8b4('0x29')]=_0x2d62ef[_0xe8b4('0x29')][_0xe8b4('0x3c')]();}logger[_0xe8b4('0x3d')](_0xe8b4('0x3e'),_0x2531d5['body']['to'],_0x2531d5[_0xe8b4('0x38')][_0xe8b4('0x39')]);return db[_0xe8b4('0x3f')]['destroy']({'where':{'ContactId':[_0x2531d5[_0xe8b4('0x38')]['to'],_0x2531d5[_0xe8b4('0x38')]['from']]}})[_0xe8b4('0x18')](function(_0x238f02){logger[_0xe8b4('0x3d')](_0xe8b4('0x40'),_0x238f02);return db[_0xe8b4('0x41')][_0xe8b4('0x19')]({'where':{'ContactId':[_0x2531d5['body']['to'],_0x2531d5[_0xe8b4('0x38')][_0xe8b4('0x39')]]}})['then'](function(_0xd6e620){logger[_0xe8b4('0x3d')]('[CmContact][merge][destroy][CmHopperBlack],\x20%s',_0xd6e620);return db['CmContact']['create'](_0x2d62ef);});});}})[_0xe8b4('0x18')](function(_0x26e805){if(_0x26e805){_0x29faf7=_0x26e805;_0x58c1b4={'ContactId':_0x29faf7['id']};_0x28d439={'where':{'ContactId':[_0x2531d5['body']['to'],_0x2531d5['body']['from']]}};return db[_0xe8b4('0x42')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x43')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x44')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x45')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x46')]['update'](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x45')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db['MailMessage'][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db['SmsInteraction']['update'](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x47')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x48')]['update'](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db['FaxMessage'][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x49')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x4a')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x4b')]['update']({'CmContactId':_0x29faf7['id']},{'where':{'CmContactId':[_0x2531d5['body']['to'],_0x2531d5['body'][_0xe8b4('0x39')]]}});}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x4c')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x4d')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x4e')]['update'](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x4f')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db['ChatQueueReport'][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x50')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x51')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x52')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x53')]['update'](_0x58c1b4,_0x28d439);}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return db[_0xe8b4('0x54')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x55')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x56')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x57')][_0xe8b4('0x17')](_0x58c1b4,_0x28d439);}})['then'](function(){if(_0x29faf7){return db[_0xe8b4('0x25')][_0xe8b4('0x19')]({'where':{'id':[_0x2531d5[_0xe8b4('0x38')]['to'],_0x2531d5['body'][_0xe8b4('0x39')]]}});}})[_0xe8b4('0x18')](function(){if(_0x29faf7){return _0x29faf7;}})[_0xe8b4('0x18')](respondWithResult(_0x5cba3c,null))[_0xe8b4('0x24')](handleError(_0x5cba3c,null));};exports[_0xe8b4('0x58')]=function(_0x27d65c,_0x121410){return db[_0xe8b4('0x25')][_0xe8b4('0x28')]()[_0xe8b4('0x18')](function(_0x12f0ca){if(_0x27d65c['body'][_0xe8b4('0x29')]&&_[_0xe8b4('0x59')](_0x27d65c[_0xe8b4('0x38')][_0xe8b4('0x29')])){if(_0x27d65c[_0xe8b4('0x38')]['tags']['length']){_0x27d65c['body'][_0xe8b4('0x29')]=_0x27d65c[_0xe8b4('0x38')]['tags'][_0xe8b4('0x3c')](';')+';';}else{_0x27d65c[_0xe8b4('0x38')][_0xe8b4('0x29')]=null;}}else{_0x27d65c[_0xe8b4('0x38')][_0xe8b4('0x29')]=null;}if(!_[_0xe8b4('0x5a')](_0x27d65c[_0xe8b4('0x38')][_0xe8b4('0x5b')])){var _0x130065=_0x27d65c[_0xe8b4('0x38')][_0xe8b4('0x5b')];if(!_[_0xe8b4('0x5a')](shared[_0xe8b4('0x5c')][_0x130065]))_0x27d65c['body'][_0xe8b4('0x5d')]=shared[_0xe8b4('0x5c')][_0x130065][_0xe8b4('0x5d')];}return db[_0xe8b4('0x25')][_0xe8b4('0x58')](_0x27d65c[_0xe8b4('0x38')],{'fields':_[_0xe8b4('0x2a')](_0x12f0ca),'raw':!![]});})[_0xe8b4('0x18')](function(_0x201be7){if(_0x27d65c['body'][_0xe8b4('0x5e')]){return insertAdditionalPhones(_0x201be7,_0x27d65c['body'][_0xe8b4('0x5e')]);}else{return _0x201be7;}})[_0xe8b4('0x18')](respondWithResult(_0x121410,0xc9))[_0xe8b4('0x24')](handleError(_0x121410,null));};exports['bulkCreate']=function(_0x175890,_0x68fde1){var _0x3f29c2=0x0;var _0x5a1d8c=0x0;var _0x461f5e=0x0;var _0x432ad6=[];return db[_0xe8b4('0x25')][_0xe8b4('0x28')]()[_0xe8b4('0x18')](function(_0x5c230e){return BPromise[_0xe8b4('0x5f')](_0x175890['body'],function(_0x3330ca){var _0x10aa2d={'where':{'$or':[]},'defaults':_0x3330ca,'fields':_['keys'](_0x5c230e),'raw':!![]};if(_0x3330ca[_0xe8b4('0x60')]){for(var _0x30458f=0x0;_0x30458f<_0x3330ca['duplicates'][_0xe8b4('0x2b')];_0x30458f++){var _0x31363b={};_0x31363b[_0x3330ca[_0xe8b4('0x60')][_0x30458f]]=_0x3330ca[_0x3330ca[_0xe8b4('0x60')][_0x30458f]];_0x10aa2d[_0xe8b4('0x61')][_0xe8b4('0x62')][_0xe8b4('0x63')](_0x31363b);}_0x10aa2d['where'][_0xe8b4('0x64')]=_0x3330ca[_0xe8b4('0x64')];}return db['CmContact'][_0xe8b4('0x65')](_0x10aa2d)[_0xe8b4('0x66')](function(_0x2ceeaf,_0x4dd422){if(_0x4dd422){if(_0x3330ca['hasOwnProperty'](_0xe8b4('0x5e'))){_0x432ad6[_0xe8b4('0x63')]({'contact':_0x2ceeaf,'additionalPhones':_0x3330ca[_0xe8b4('0x5e')]});}_0x3f29c2++;}else{_0x461f5e++;}})['catch'](function(){_0x5a1d8c++;});});})[_0xe8b4('0x18')](function(_0x202084){if(_0x202084){if(_0x432ad6[_0xe8b4('0x2b')]>0x0){return new Promise(function(_0x1aa802){var _0x4a6de8=[];for(var _0x8fab9f=0x0;_0x8fab9f<_0x432ad6[_0xe8b4('0x2b')];_0x8fab9f++){_0x4a6de8['push'](insertAdditionalPhones(_0x432ad6[_0x8fab9f][_0xe8b4('0x67')],_0x432ad6[_0x8fab9f][_0xe8b4('0x5e')]));}Promise[_0xe8b4('0x68')](_0x4a6de8)[_0xe8b4('0x18')](function(){_0x1aa802(0x1);});})['then'](function(){return{'success':_0x3f29c2,'failure':_0x5a1d8c,'duplicates':_0x461f5e};});}else{return{'success':_0x3f29c2,'failure':_0x5a1d8c,'duplicates':_0x461f5e};}}})[_0xe8b4('0x18')](respondWithResult(_0x68fde1,0xc9))[_0xe8b4('0x24')](handleError(_0x68fde1,null));};exports[_0xe8b4('0x69')]=function(_0x6c17c7,_0x25a0b8){var _0x57ae0e;return db[_0xe8b4('0x25')][_0xe8b4('0x28')]()['then'](function(_0x17de05){return db[_0xe8b4('0x25')]['find']({'where':{'id':_0x6c17c7[_0xe8b4('0x27')]['id']},'include':[{'model':db[_0xe8b4('0x6a')],'as':_0xe8b4('0x6b'),'attributes':['id',_0xe8b4('0x1d'),'color'],'required':_0x6c17c7[_0xe8b4('0x22')]['tag']?!![]:![]},{'model':db[_0xe8b4('0x4b')],'as':_0xe8b4('0x6c'),'where':{'CmContactId':_0x6c17c7['params']['id']},'required':![],'include':[{'model':db['ContactItemType'],'as':_0xe8b4('0x6d')}]}],'order':[db[_0xe8b4('0x6e')]['literal'](_0xe8b4('0x6f'))],'attributes':_[_0xe8b4('0x2a')](_0x17de05)});})[_0xe8b4('0x18')](function(_0x5db208){if(!_[_0xe8b4('0x5a')](_0x5db208)){_0x57ae0e=_0x5db208[_0xe8b4('0x3a')]({'plain':!![]});var _0x54ba9a={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x5db208&&_0x5db208[_0xe8b4('0x64')]){if(_0x5db208['ListId']){_0x54ba9a[_0xe8b4('0x61')][_0xe8b4('0x70')][_0xe8b4('0x63')]({'ListId':{'$ne':_0x5db208[_0xe8b4('0x64')]}});}}return db[_0xe8b4('0x31')][_0xe8b4('0x21')](_0x54ba9a);}})['then'](function(_0x1f2df5){if(!_[_0xe8b4('0x5a')](_0x1f2df5)){return _['omit'](_0x57ae0e,_['map'](_0x1f2df5,function(_0x10080a){return util[_0xe8b4('0x71')](_0xe8b4('0x72'),_0x10080a['id']);}));}})['then'](handleEntityNotFound(_0x25a0b8,null))[_0xe8b4('0x18')](respondWithResult(_0x25a0b8,null))[_0xe8b4('0x24')](handleError(_0x25a0b8,null));};exports[_0xe8b4('0x17')]=function(_0x25b6d8,_0x4d05f6){var _0x549607;if(_0x25b6d8[_0xe8b4('0x38')]['id']){delete _0x25b6d8['body']['id'];}if(!_[_0xe8b4('0x5a')](_0x25b6d8[_0xe8b4('0x38')][_0xe8b4('0x5b')])){var _0x250b74=_0x25b6d8[_0xe8b4('0x38')][_0xe8b4('0x5b')];if(!_[_0xe8b4('0x5a')](shared[_0xe8b4('0x5c')][_0x250b74]))_0x25b6d8[_0xe8b4('0x38')][_0xe8b4('0x5d')]=shared['timezones'][_0x250b74]['utcOffset'];}return db[_0xe8b4('0x25')][_0xe8b4('0x26')]({'where':{'id':_0x25b6d8['params']['id']}})['then'](handleEntityNotFound(_0x4d05f6,null))[_0xe8b4('0x18')](saveUpdates(_0x25b6d8[_0xe8b4('0x38')],null))['then'](function(_0x3ad8eb){_0x549607=_0x3ad8eb;var _0x471fd5={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x3ad8eb&&_0x3ad8eb[_0xe8b4('0x64')]){if(_0x3ad8eb[_0xe8b4('0x64')]){_0x471fd5['where'][_0xe8b4('0x70')][_0xe8b4('0x63')]({'ListId':{'$ne':_0x3ad8eb['ListId']}});}}return db[_0xe8b4('0x31')][_0xe8b4('0x21')](_0x471fd5);})[_0xe8b4('0x18')](function(_0x25f548){if(_0x25f548){return _[_0xe8b4('0x73')](_[_0xe8b4('0x74')](_0x25b6d8[_0xe8b4('0x38')],function(_0x55bcd0,_0x2526ab){return _[_0xe8b4('0x2c')](_0x2526ab,_0xe8b4('0x2d'));}),_[_0xe8b4('0x75')](_0x25f548,function(_0x27aaa8){return util[_0xe8b4('0x71')]('cf_%d',_0x27aaa8['id']);}));}})['then'](function(_0x4f45fd){if(_0x4f45fd&&!_['isEmpty'](_0x4f45fd)){var _0x2ad6e3=squel['update']()[_0xe8b4('0x76')](_0xe8b4('0x77'))[_0xe8b4('0x78')](_0x4f45fd)['where'](_0xe8b4('0x79'),_0x25b6d8[_0xe8b4('0x27')]['id'])['toParam']();return db['sequelize'][_0xe8b4('0x22')](_0x2ad6e3[_0xe8b4('0x7a')],{'replacements':_0x2ad6e3[_0xe8b4('0x35')]});}})[_0xe8b4('0x18')](function(){if(_0x25b6d8[_0xe8b4('0x38')][_0xe8b4('0x7b')]&&_0x549607){return db[_0xe8b4('0x3f')][_0xe8b4('0x17')]({'phone':_0x25b6d8['body']['phone'],'OrderBy':0x0},{'where':{'ContactId':_0x549607['id']}});}})['then'](function(){return _0x549607;})[_0xe8b4('0x18')](respondWithResult(_0x4d05f6,null))[_0xe8b4('0x24')](handleError(_0x4d05f6,null));};exports[_0xe8b4('0x7c')]=function(_0x25abfc,_0xd098e3){var _0x1ef277={};var _0x25c73e={};var _0x5723a4;var _0x2e05db;return db[_0xe8b4('0x25')]['findOne']({'where':{'id':_0x25abfc['params']['id']}})[_0xe8b4('0x18')](handleEntityNotFound(_0xd098e3,null))[_0xe8b4('0x18')](function(_0x6af0f9){if(_0x6af0f9){_0x5723a4=_0x6af0f9;_0x25c73e[_0xe8b4('0x7d')]=_[_0xe8b4('0x2a')](db['Tag']['rawAttributes']);_0x25c73e[_0xe8b4('0x22')]=_['keys'](_0x25abfc[_0xe8b4('0x22')]);_0x25c73e[_0xe8b4('0x7e')]=_[_0xe8b4('0x7f')](_0x25c73e['model'],_0x25c73e['query']);_0x1ef277['attributes']=_['intersection'](_0x25c73e[_0xe8b4('0x7d')],qs['fields'](_0x25abfc[_0xe8b4('0x22')][_0xe8b4('0x80')]));_0x1ef277[_0xe8b4('0x81')]=_0x1ef277[_0xe8b4('0x81')]['length']?_0x1ef277[_0xe8b4('0x81')]:_0x25c73e['model'];_0x1ef277[_0xe8b4('0x82')]=qs[_0xe8b4('0x83')](_0x25abfc[_0xe8b4('0x22')]['sort']);_0x1ef277[_0xe8b4('0x61')]=qs[_0xe8b4('0x7e')](_[_0xe8b4('0x84')](_0x25abfc['query'],_0x25c73e[_0xe8b4('0x7e')]));if(_0x25abfc[_0xe8b4('0x22')][_0xe8b4('0x85')]){_0x1ef277[_0xe8b4('0x61')]=_[_0xe8b4('0x37')](_0x1ef277[_0xe8b4('0x61')],{'$or':_[_0xe8b4('0x75')](_0x1ef277[_0xe8b4('0x81')],function(_0x2c7c2f){var _0x23b53c={};_0x23b53c[_0x2c7c2f]={'$like':'%'+_0x25abfc['query'][_0xe8b4('0x85')]+'%'};return _0x23b53c;})});}_0x1ef277=_[_0xe8b4('0x37')]({},_0x1ef277,_0x25abfc[_0xe8b4('0x86')]);return _0x5723a4['getTags'](_0x1ef277);}})['then'](function(_0x2f475a){if(_0x2f475a){_0x2e05db=_0x2f475a[_0xe8b4('0x2b')];if(!_0x25abfc[_0xe8b4('0x22')][_0xe8b4('0x36')](_0xe8b4('0x87'))){_0x1ef277[_0xe8b4('0x88')]=qs[_0xe8b4('0x88')](_0x25abfc[_0xe8b4('0x22')][_0xe8b4('0x88')]);_0x1ef277[_0xe8b4('0x12')]=qs[_0xe8b4('0x12')](_0x25abfc[_0xe8b4('0x22')]['offset']);}return _0x5723a4[_0xe8b4('0x7c')](_0x1ef277);}})[_0xe8b4('0x18')](function(_0x4d0e87){if(_0x4d0e87){return _0x4d0e87?{'count':_0x2e05db,'rows':_0x4d0e87}:null;}})['then'](respondWithResult(_0xd098e3,null))['catch'](handleError(_0xd098e3,null));};exports['setTags']=function(_0x59a476,_0x48bdac){if(_0x59a476[_0xe8b4('0x38')]['id']){delete _0x59a476[_0xe8b4('0x38')]['id'];}return db[_0xe8b4('0x25')][_0xe8b4('0x89')]({'where':{'id':_0x59a476[_0xe8b4('0x27')]['id']}})['then'](handleEntityNotFound(_0x48bdac,null))[_0xe8b4('0x18')](function(_0x2edd3f){if(_0x2edd3f){return _0x2edd3f[_0xe8b4('0x8a')](_0x59a476[_0xe8b4('0x38')]['ids']||[]);}return null;})[_0xe8b4('0x18')](respondWithResult(_0x48bdac,null))[_0xe8b4('0x24')](handleError(_0x48bdac,null));};exports['setAdditionalPhones']=function(_0x54727c,_0x278497){var _0x196617=[];_0x196617['push'](addAdditionalPhones(_0x54727c[_0xe8b4('0x38')]));Promise[_0xe8b4('0x68')](_0x196617)[_0xe8b4('0x18')](function(){_0x196617=[];_0x196617[_0xe8b4('0x63')](deleteCmHopperPhones(_0x54727c[_0xe8b4('0x38')]['id']));_0x196617[_0xe8b4('0x63')](addCmHopperPhones(_0x54727c[_0xe8b4('0x38')]['id']));Promise[_0xe8b4('0x68')](_0x196617)[_0xe8b4('0x18')](function(){return[0x1];})[_0xe8b4('0x18')](respondWithResult(_0x278497,null));});};function addAdditionalPhones(_0xd3f7e0){var _0xa530aa;return new Promise(function(_0xa3b0fd){return db[_0xe8b4('0x4b')][_0xe8b4('0x19')]({'where':{'CmContactId':_0xd3f7e0['id']}})['then'](function(){db[_0xe8b4('0x8b')][_0xe8b4('0x21')]({'raw':!![],'attributes':['id',_0xe8b4('0x8c')]})[_0xe8b4('0x18')](function(_0x366d21){var _0x3e0d50=[];for(var _0x5c13d2=0x0;_0x5c13d2<_0xd3f7e0[_0xe8b4('0x8d')][_0xe8b4('0x2b')];_0x5c13d2++){var _0x568fd1=_0xd3f7e0[_0xe8b4('0x8e')]?_[_0xe8b4('0x5a')](_0xd3f7e0['item_types'][_0x5c13d2])?'':_0xd3f7e0[_0xe8b4('0x8e')][_0x5c13d2]:_0xd3f7e0[_0xe8b4('0x8d')][_0x5c13d2][_0xe8b4('0x8f')]?_0xd3f7e0['items'][_0x5c13d2][_0xe8b4('0x8f')]:'';var _0x288782=_[_0xe8b4('0x5a')](_0xd3f7e0[_0xe8b4('0x8d')][_0x5c13d2][_0xe8b4('0x90')])?'':_0xd3f7e0[_0xe8b4('0x8d')][_0x5c13d2]['description'];var _0x63b8a2=_0x568fd1+':'+_0xd3f7e0[_0xe8b4('0x8d')][_0x5c13d2][_0xe8b4('0x7b')]+'§'+_0x288782;if(_[_0xe8b4('0x5a')](_0xa530aa))_0xa530aa=_0x63b8a2;else _0xa530aa+=';'+_0x63b8a2;var _0xfb0b59=null;var _0x5bbbe0=null;if(_0xd3f7e0['item_types']){if(!_[_0xe8b4('0x5a')](_0xd3f7e0[_0xe8b4('0x8e')][_0x5c13d2])){_0x5bbbe0=_['find'](_0x366d21,function(_0x445749){return _0x445749['id']===_0xd3f7e0[_0xe8b4('0x8e')][_0x5c13d2];});if(!_[_0xe8b4('0x5a')](_0x5bbbe0)){_0xfb0b59=_0x5bbbe0['OrderBy'];}}}else{if(!_[_0xe8b4('0x5a')](_0xd3f7e0[_0xe8b4('0x8d')][_0x5c13d2])){_0x5bbbe0=_[_0xe8b4('0x26')](_0x366d21,function(_0x21155e){return _0x21155e['id']===_0xd3f7e0[_0xe8b4('0x8d')][_0x5c13d2][_0xe8b4('0x8f')];});if(!_[_0xe8b4('0x5a')](_0x5bbbe0)){_0xfb0b59=_0x5c13d2;}}}if(_[_0xe8b4('0x5a')](_0xfb0b59)){_0xfb0b59=0x64;}_0x3e0d50['push'](addAdditionalPhone(_0xd3f7e0['id'],_0xd3f7e0[_0xe8b4('0x8d')][_0x5c13d2]['phone'],_0xd3f7e0[_0xe8b4('0x8e')]?_[_0xe8b4('0x5a')](_0xd3f7e0[_0xe8b4('0x8e')][_0x5c13d2])?null:_0xd3f7e0[_0xe8b4('0x8e')][_0x5c13d2]:_0xd3f7e0[_0xe8b4('0x8d')][_0x5c13d2][_0xe8b4('0x8f')]?_0xd3f7e0[_0xe8b4('0x8d')][_0x5c13d2][_0xe8b4('0x8f')]:null,_0xfb0b59,_0x288782));}Promise['all'](_0x3e0d50)[_0xe8b4('0x18')](function(){db['CmContact'][_0xe8b4('0x17')]({'AdditionalPhones':_0xa530aa},{'where':{'id':_0xd3f7e0['id']}})[_0xe8b4('0x18')](function(){_0xa3b0fd(0x1);});});});});});}function addAdditionalPhone(_0x2cd6fe,_0x2da253,_0x569565,_0x3c838b,_0x50f741){return db[_0xe8b4('0x4b')]['find']({'where':{'CmContactId':_0x2cd6fe,'item':_0x2da253}})['then'](function(_0x124982){if(_0x124982)logger['info'](_0xe8b4('0x91'),_0x124982);else{db[_0xe8b4('0x4b')]['create']({'CmContactId':_0x2cd6fe,'item':_0x2da253,'ItemTypeId':_0x569565,'OrderBy':_0x3c838b,'ItemClass':_0xe8b4('0x92'),'description':_0x50f741});}});}function deleteCmHopperPhones(_0x33c7de){return new Promise(function(_0x2a7faf){return db['CmHopper'][_0xe8b4('0x21')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x33c7de}})[_0xe8b4('0x18')](function(_0x1ecf5b){db[_0xe8b4('0x93')]['destroy']({'where':{'CmHopperId':{'$in':_[_0xe8b4('0x75')](_0x1ecf5b,'id')}}});})[_0xe8b4('0x18')](function(){_0x2a7faf(0x1);});});}function addCmHopperPhones(_0x9030e6){return new Promise(function(_0x3616da){return db[_0xe8b4('0x3f')][_0xe8b4('0x21')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x9030e6}})['then'](function(_0x49e2d9){var _0x5bc287=[];_[_0xe8b4('0x75')](_0x49e2d9,function(_0x4623de){_0x5bc287[_0xe8b4('0x63')](createCmHopperPhone(_0x9030e6,_0x4623de['id']));});Promise[_0xe8b4('0x68')](_0x5bc287)['then'](function(){_0x3616da(0x1);});});});}function createCmHopperPhone(_0x1bdf8d,_0x32accd){return new Promise(function(_0x3ca75d){db[_0xe8b4('0x4b')][_0xe8b4('0x21')]({'raw':!![],'attributes':[_0xe8b4('0x94'),_0xe8b4('0x8c')],'where':{'CmContactId':_0x1bdf8d,'ItemClass':'PHONE'},'include':[{'model':db['ContactItemType'],'attributes':['OrderBy'],'as':_0xe8b4('0x6d')}],'order':[_0xe8b4('0x8c'),db[_0xe8b4('0x6e')]['literal'](_0xe8b4('0x95'))]})[_0xe8b4('0x18')](function(_0x3fa5ac){var _0x567acf=0x1;var _0x93039a=_[_0xe8b4('0x75')](_0x3fa5ac,function(_0x1cf963){_0x1cf963[_0xe8b4('0x96')]=_0x32accd;_0x1cf963['phone']=_0x1cf963[_0xe8b4('0x94')];_0x1cf963['OrderBy']=_0x567acf;delete _0x1cf963[_0xe8b4('0x97')];_0x567acf=_0x567acf+0x1;return _0x1cf963;});return db['CmHopperAdditionalPhone'][_0xe8b4('0x98')](_0x93039a,{});})[_0xe8b4('0x18')](function(){_0x3ca75d(0x1);});});}function insertAdditionalPhones(_0x34927d,_0x14f01f){return new Promise(function(_0x5dde49){var _0x1a0724=[];for(var _0x5be91e=0x0;_0x5be91e<_0x14f01f['length'];_0x5be91e++){var _0x331077=_0x14f01f[_0x5be91e];_0x1a0724['push'](parseContactItemType(_0x331077));}Promise[_0xe8b4('0x68')](_0x1a0724)[_0xe8b4('0x18')](function(){var _0x592514={'id':_0x34927d['id'],'items':_0x14f01f};return addAdditionalPhones(_0x592514)['then'](function(){return addCmHopperPhones(_0x34927d['id']);});})['then'](function(){_0x5dde49(_0x34927d);});});}function parseContactItemType(_0x137737){return new Promise(function(_0x5a0860){if(_0x137737[_0xe8b4('0x36')](_0xe8b4('0x8f'))){_0x5a0860(_0x137737);}else{return db[_0xe8b4('0x8b')][_0xe8b4('0x26')]({'where':{'name':_0x137737[_0xe8b4('0x6d')]}})[_0xe8b4('0x18')](function(_0x227a18){if(_['isNil'](_0x227a18))_0x137737[_0xe8b4('0x8f')]=null;else _0x137737[_0xe8b4('0x8f')]=_0x227a18['id'];_0x5a0860(_0x137737);});}});}exports[_0xe8b4('0x99')]=function(_0xadac7f,_0x10598d){return db[_0xe8b4('0x4b')][_0xe8b4('0x21')]({'raw':!![],'where':{'CmContactId':_0xadac7f['params']['id'],'ItemClass':_0xe8b4('0x92')},'include':[{'model':db[_0xe8b4('0x8b')],'as':_0xe8b4('0x6d')}],'order':[['OrderBy'],[db['sequelize'][_0xe8b4('0x9a')](_0xe8b4('0x95'))]]})[_0xe8b4('0x18')](function(_0x4d8d57){return _0x4d8d57;})[_0xe8b4('0x18')](respondWithResult(_0x10598d,null))[_0xe8b4('0x24')](handleError(_0x10598d,null));};exports[_0xe8b4('0x9b')]=function(_0x41831d,_0x38c7b3){return db[_0xe8b4('0x4b')]['findAll']({'raw':!![],'where':{'CmContactId':_0x41831d[_0xe8b4('0x38')]['fromContactId']}})['then'](function(_0x421a5c){var _0x253ada=_[_0xe8b4('0x75')](_0x421a5c,function(_0x30d6d0){_0x30d6d0[_0xe8b4('0x9c')]=_0x41831d['body'][_0xe8b4('0x9d')];return _0x30d6d0;});return db[_0xe8b4('0x4b')][_0xe8b4('0x98')](_0x253ada,{});})[_0xe8b4('0x18')](function(){return addCmHopperPhones(_0x41831d['body'][_0xe8b4('0x9d')]);})[_0xe8b4('0x18')](function(){return['ok'];})[_0xe8b4('0x18')](respondWithResult(_0x38c7b3,null))[_0xe8b4('0x24')](handleError(_0x38c7b3,null));};exports[_0xe8b4('0x9e')]=function(_0x32590f,_0x56c83f){var _0x2616da=[];_0x2616da[_0xe8b4('0x63')](createCmHopperPhone(_0x32590f[_0xe8b4('0x38')]['id'],_0x32590f['body'][_0xe8b4('0x9f')]));Promise[_0xe8b4('0x68')](_0x2616da)[_0xe8b4('0x18')](function(){return[0x1];})[_0xe8b4('0x18')](respondWithResult(_0x56c83f,null));};exports['getHoppers']=function(_0x52fea7,_0x55b9f7){var _0x275258={'raw':![],'where':{}};var _0x119384={};var _0x1ca833={'count':0x0,'rows':[]};return db[_0xe8b4('0x25')][_0xe8b4('0x89')]({'where':{'id':_0x52fea7[_0xe8b4('0x27')]['id']}})[_0xe8b4('0x18')](handleEntityNotFound(_0x55b9f7,null))[_0xe8b4('0x18')](function(_0x4ace7e){if(_0x4ace7e){_0x119384['model']=_[_0xe8b4('0x2a')](db[_0xe8b4('0x3f')][_0xe8b4('0xa0')]);_0x119384[_0xe8b4('0x22')]=_[_0xe8b4('0x2a')](_0x52fea7[_0xe8b4('0x22')]);_0x119384[_0xe8b4('0x7e')]=_['intersection'](_0x119384[_0xe8b4('0x7d')],_0x119384[_0xe8b4('0x22')]);_0x275258[_0xe8b4('0x81')]=_[_0xe8b4('0x7f')](_0x119384[_0xe8b4('0x7d')],qs[_0xe8b4('0x80')](_0x52fea7[_0xe8b4('0x22')][_0xe8b4('0x80')]));_0x275258[_0xe8b4('0x81')]=_0x275258['attributes'][_0xe8b4('0x2b')]?_0x275258[_0xe8b4('0x81')]:_0x119384[_0xe8b4('0x7d')];if(!_0x52fea7[_0xe8b4('0x22')][_0xe8b4('0x36')](_0xe8b4('0x87'))){_0x275258['limit']=qs[_0xe8b4('0x88')](_0x52fea7[_0xe8b4('0x22')][_0xe8b4('0x88')]);_0x275258['offset']=qs[_0xe8b4('0x12')](_0x52fea7[_0xe8b4('0x22')][_0xe8b4('0x12')]);}_0x275258[_0xe8b4('0x82')]=qs[_0xe8b4('0x83')](_0x52fea7[_0xe8b4('0x22')]['sort']);_0x275258[_0xe8b4('0x61')]=qs['filters'](_['pick'](_0x52fea7[_0xe8b4('0x22')],_0x119384['filters']));_0x275258[_0xe8b4('0x61')]['ContactId']=_0x4ace7e['id'];if(_0x52fea7['query'][_0xe8b4('0x85')]){_0x275258[_0xe8b4('0x61')]=_['merge'](_0x275258[_0xe8b4('0x61')],{'$or':_[_0xe8b4('0x75')](_0x275258['attributes'],function(_0x38cfbd){var _0x286f5d={};_0x286f5d[_0x38cfbd]={'$like':'%'+_0x52fea7[_0xe8b4('0x22')]['filter']+'%'};return _0x286f5d;})});}_0x275258=_[_0xe8b4('0x37')]({},_0x275258,_0x52fea7[_0xe8b4('0x86')]);return db['CmHopper'][_0xe8b4('0x14')]({'where':_0x275258[_0xe8b4('0x61')]})[_0xe8b4('0x18')](function(_0x33dec4){_0x1ca833[_0xe8b4('0x14')]=_0x33dec4;if(_0x52fea7[_0xe8b4('0x22')][_0xe8b4('0xa1')]){_0x275258[_0xe8b4('0xa2')]=[{'all':!![]}];}return db['CmHopper'][_0xe8b4('0x21')](_0x275258);})['then'](function(_0x2231c9){_0x1ca833[_0xe8b4('0xa3')]=_0x2231c9;return _0x1ca833;});}})[_0xe8b4('0x18')](respondWithFilteredResult(_0x55b9f7,_0x275258))[_0xe8b4('0x24')](handleError(_0x55b9f7,null));};exports[_0xe8b4('0xa4')]=function(_0x30ab5b,_0xfe3fa2){var _0x42fcf3={'raw':!![],'where':{}};var _0x3e0c46={};var _0x24aa17={'count':0x0,'rows':[]};return db[_0xe8b4('0x25')]['findOne']({'where':{'id':_0x30ab5b['params']['id']}})[_0xe8b4('0x18')](handleEntityNotFound(_0xfe3fa2,null))[_0xe8b4('0x18')](function(_0x19c181){if(_0x19c181){_0x3e0c46[_0xe8b4('0x7d')]=_[_0xe8b4('0x2a')](db[_0xe8b4('0x4d')][_0xe8b4('0xa0')]);_0x3e0c46[_0xe8b4('0x22')]=_[_0xe8b4('0x2a')](_0x30ab5b[_0xe8b4('0x22')]);_0x3e0c46[_0xe8b4('0x7e')]=_[_0xe8b4('0x7f')](_0x3e0c46[_0xe8b4('0x7d')],_0x3e0c46[_0xe8b4('0x22')]);_0x42fcf3[_0xe8b4('0x81')]=_[_0xe8b4('0x7f')](_0x3e0c46[_0xe8b4('0x7d')],qs[_0xe8b4('0x80')](_0x30ab5b[_0xe8b4('0x22')]['fields']));_0x42fcf3[_0xe8b4('0x81')]=_0x42fcf3[_0xe8b4('0x81')][_0xe8b4('0x2b')]?_0x42fcf3[_0xe8b4('0x81')]:_0x3e0c46[_0xe8b4('0x7d')];if(!_0x30ab5b['query'][_0xe8b4('0x36')](_0xe8b4('0x87'))){_0x42fcf3['limit']=qs['limit'](_0x30ab5b[_0xe8b4('0x22')][_0xe8b4('0x88')]);_0x42fcf3[_0xe8b4('0x12')]=qs[_0xe8b4('0x12')](_0x30ab5b[_0xe8b4('0x22')]['offset']);}_0x42fcf3['order']=qs[_0xe8b4('0x83')](_0x30ab5b['query'][_0xe8b4('0x83')]);_0x42fcf3[_0xe8b4('0x61')]=qs[_0xe8b4('0x7e')](_[_0xe8b4('0x84')](_0x30ab5b[_0xe8b4('0x22')],_0x3e0c46[_0xe8b4('0x7e')]));_0x42fcf3[_0xe8b4('0x61')]['ContactId']=_0x19c181['id'];if(_0x30ab5b[_0xe8b4('0x22')][_0xe8b4('0x85')]){_0x42fcf3['where']=_[_0xe8b4('0x37')](_0x42fcf3[_0xe8b4('0x61')],{'$or':_[_0xe8b4('0x75')](_0x42fcf3[_0xe8b4('0x81')],function(_0x1dfc66){var _0x5c7d09={};_0x5c7d09[_0x1dfc66]={'$like':'%'+_0x30ab5b[_0xe8b4('0x22')]['filter']+'%'};return _0x5c7d09;})});}_0x42fcf3=_['merge']({},_0x42fcf3,_0x30ab5b[_0xe8b4('0x86')]);return db[_0xe8b4('0x4d')]['count']({'where':_0x42fcf3[_0xe8b4('0x61')]})[_0xe8b4('0x18')](function(_0x2666d6){_0x24aa17['count']=_0x2666d6;if(_0x30ab5b['query'][_0xe8b4('0xa1')]){_0x42fcf3[_0xe8b4('0xa2')]=[{'all':!![]}];}return db[_0xe8b4('0x4d')][_0xe8b4('0x21')](_0x42fcf3);})['then'](function(_0x286e0f){_0x24aa17[_0xe8b4('0xa3')]=_0x286e0f;return _0x24aa17;});}})[_0xe8b4('0x18')](respondWithFilteredResult(_0xfe3fa2,_0x42fcf3))[_0xe8b4('0x24')](handleError(_0xfe3fa2,null));};exports[_0xe8b4('0xa5')]=function(_0xcd0227,_0x487ba9){var _0x493d6c={'raw':!![],'where':{}};var _0x26f50e={};var _0x645f88={'count':0x0,'rows':[]};return db[_0xe8b4('0x25')][_0xe8b4('0x89')]({'where':{'id':_0xcd0227[_0xe8b4('0x27')]['id']}})[_0xe8b4('0x18')](handleEntityNotFound(_0x487ba9,null))[_0xe8b4('0x18')](function(_0xa9f518){if(_0xa9f518){_0x26f50e[_0xe8b4('0x7d')]=_[_0xe8b4('0x2a')](db[_0xe8b4('0x4c')]['rawAttributes']);_0x26f50e[_0xe8b4('0x22')]=_[_0xe8b4('0x2a')](_0xcd0227[_0xe8b4('0x22')]);_0x26f50e[_0xe8b4('0x7e')]=_[_0xe8b4('0x7f')](_0x26f50e['model'],_0x26f50e[_0xe8b4('0x22')]);_0x493d6c['attributes']=_['intersection'](_0x26f50e[_0xe8b4('0x7d')],qs['fields'](_0xcd0227[_0xe8b4('0x22')]['fields']));_0x493d6c[_0xe8b4('0x81')]=_0x493d6c['attributes']['length']?_0x493d6c[_0xe8b4('0x81')]:_0x26f50e['model'];if(!_0xcd0227['query']['hasOwnProperty'](_0xe8b4('0x87'))){_0x493d6c[_0xe8b4('0x88')]=qs[_0xe8b4('0x88')](_0xcd0227[_0xe8b4('0x22')][_0xe8b4('0x88')]);_0x493d6c['offset']=qs[_0xe8b4('0x12')](_0xcd0227[_0xe8b4('0x22')][_0xe8b4('0x12')]);}_0x493d6c[_0xe8b4('0x82')]=qs['sort'](_0xcd0227[_0xe8b4('0x22')][_0xe8b4('0x83')]);_0x493d6c[_0xe8b4('0x61')]=qs[_0xe8b4('0x7e')](_[_0xe8b4('0x84')](_0xcd0227[_0xe8b4('0x22')],_0x26f50e[_0xe8b4('0x7e')]));_0x493d6c['where'][_0xe8b4('0xa6')]=_0xa9f518['id'];if(_0xcd0227[_0xe8b4('0x22')][_0xe8b4('0x85')]){_0x493d6c[_0xe8b4('0x61')]=_['merge'](_0x493d6c[_0xe8b4('0x61')],{'$or':_['map'](_0x493d6c[_0xe8b4('0x81')],function(_0x47c231){var _0x79936e={};_0x79936e[_0x47c231]={'$like':'%'+_0xcd0227[_0xe8b4('0x22')][_0xe8b4('0x85')]+'%'};return _0x79936e;})});}_0x493d6c=_[_0xe8b4('0x37')]({},_0x493d6c,_0xcd0227[_0xe8b4('0x86')]);return db[_0xe8b4('0x4c')][_0xe8b4('0x14')]({'where':_0x493d6c['where']})[_0xe8b4('0x18')](function(_0x4e68c1){_0x645f88[_0xe8b4('0x14')]=_0x4e68c1;if(_0xcd0227[_0xe8b4('0x22')][_0xe8b4('0xa1')]){_0x493d6c[_0xe8b4('0xa2')]=[{'all':!![]}];}return db[_0xe8b4('0x4c')][_0xe8b4('0x21')](_0x493d6c);})['then'](function(_0x551f4c){_0x645f88[_0xe8b4('0xa3')]=_0x551f4c;return _0x645f88;});}})[_0xe8b4('0x18')](respondWithFilteredResult(_0x487ba9,_0x493d6c))[_0xe8b4('0x24')](handleError(_0x487ba9,null));};exports[_0xe8b4('0xa7')]=function(_0x566f4c,_0x450df3){var _0x271d01={'raw':!![],'where':{}};var _0x1b5fd8={};var _0x43fb03={'count':0x0,'rows':[]};return db[_0xe8b4('0x25')][_0xe8b4('0x89')]({'where':{'id':_0x566f4c[_0xe8b4('0x27')]['id']}})[_0xe8b4('0x18')](handleEntityNotFound(_0x450df3,null))[_0xe8b4('0x18')](function(_0x1da9f9){if(_0x1da9f9){_0x1b5fd8[_0xe8b4('0x7d')]=_[_0xe8b4('0x2a')](db[_0xe8b4('0x54')]['rawAttributes']);_0x1b5fd8[_0xe8b4('0x22')]=_[_0xe8b4('0x2a')](_0x566f4c[_0xe8b4('0x22')]);_0x1b5fd8[_0xe8b4('0x7e')]=_[_0xe8b4('0x7f')](_0x1b5fd8['model'],_0x1b5fd8[_0xe8b4('0x22')]);_0x271d01['attributes']=_[_0xe8b4('0x7f')](_0x1b5fd8[_0xe8b4('0x7d')],qs[_0xe8b4('0x80')](_0x566f4c['query'][_0xe8b4('0x80')]));_0x271d01['attributes']=_0x271d01[_0xe8b4('0x81')][_0xe8b4('0x2b')]?_0x271d01[_0xe8b4('0x81')]:_0x1b5fd8[_0xe8b4('0x7d')];if(!_0x566f4c[_0xe8b4('0x22')][_0xe8b4('0x36')](_0xe8b4('0x87'))){_0x271d01[_0xe8b4('0x88')]=qs['limit'](_0x566f4c[_0xe8b4('0x22')]['limit']);_0x271d01[_0xe8b4('0x12')]=qs[_0xe8b4('0x12')](_0x566f4c[_0xe8b4('0x22')]['offset']);}_0x271d01[_0xe8b4('0x82')]=qs['sort'](_0x566f4c['query']['sort']);_0x271d01[_0xe8b4('0x61')]=qs[_0xe8b4('0x7e')](_[_0xe8b4('0x84')](_0x566f4c[_0xe8b4('0x22')],_0x1b5fd8[_0xe8b4('0x7e')]));_0x271d01[_0xe8b4('0x61')][_0xe8b4('0xa6')]=_0x1da9f9['id'];if(_0x566f4c[_0xe8b4('0x22')][_0xe8b4('0x85')]){_0x271d01['where']=_[_0xe8b4('0x37')](_0x271d01[_0xe8b4('0x61')],{'$or':_[_0xe8b4('0x75')](_0x271d01[_0xe8b4('0x81')],function(_0x470544){var _0x45d359={};_0x45d359[_0x470544]={'$like':'%'+_0x566f4c[_0xe8b4('0x22')][_0xe8b4('0x85')]+'%'};return _0x45d359;})});}_0x271d01=_['merge']({},_0x271d01,_0x566f4c[_0xe8b4('0x86')]);return db[_0xe8b4('0x54')][_0xe8b4('0x14')]({'where':_0x271d01['where']})['then'](function(_0x130bc7){_0x43fb03[_0xe8b4('0x14')]=_0x130bc7;if(_0x566f4c[_0xe8b4('0x22')]['includeAll']){_0x271d01[_0xe8b4('0xa2')]=[{'all':!![]}];}return db[_0xe8b4('0x54')][_0xe8b4('0x21')](_0x271d01);})[_0xe8b4('0x18')](function(_0x249f9a){_0x43fb03[_0xe8b4('0xa3')]=_0x249f9a;return _0x43fb03;});}})[_0xe8b4('0x18')](respondWithFilteredResult(_0x450df3,_0x271d01))['catch'](handleError(_0x450df3,null));};exports[_0xe8b4('0xa8')]=function(_0x3b630b,_0x41826e){try{if(!_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0x64')]){throw new Error(_0xe8b4('0xa9'));}if(!_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0xaa')]){throw new Error(_0xe8b4('0xab'));}if(!_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0xac')]){throw new Error(_0xe8b4('0xad'));}if(!_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0xae')]){throw new Error(_0xe8b4('0xaf'));}var _0xb85212=_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0xaa')][_0xe8b4('0xb0')](',');var _0x4f2a9f=_0x3b630b[_0xe8b4('0x38')]['binding_values']['split'](',');if(!_0xb85212[_0xe8b4('0x2b')]||!_0x4f2a9f['length']||_0xb85212['length']!==_0x4f2a9f['length']){throw new Error(_0xe8b4('0xb1'));}_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0x80')]=_['zipObject'](_0xb85212,_0x4f2a9f);if(!_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0x80')][_0xe8b4('0x7b')]){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0x80')]['firstName']){throw new Error('No\x20firstName\x20column\x20specified');}var _0x45f2a6=path[_0xe8b4('0x3c')](config[_0xe8b4('0xb2')],_0xe8b4('0xb3'),_0x3b630b[_0xe8b4('0xb4')][_0xe8b4('0xb5')]);fs['chmodSync'](_0x45f2a6,parseInt(_0xe8b4('0xb6'),0x8));var _0x2ba5ae=require('child_process')[_0xe8b4('0xb7')](path[_0xe8b4('0x3c')](__dirname,'../../components/import/cm/csv'),[_0x45f2a6,_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0xaa')],_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0xac')],_0x3b630b[_0xe8b4('0x38')]['ListId'],_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0xb8')],_0x3b630b[_0xe8b4('0x38')][_0xe8b4('0x60')],_0x3b630b['body'][_0xe8b4('0xae')]]);return _0x41826e[_0xe8b4('0x10')](0xc8)['json']({'message':'File\x20uploaded\x20correctly!','pid':_0x2ba5ae[_0xe8b4('0xb9')]});}catch(_0x3206da){return _0x41826e[_0xe8b4('0x10')](0x1f4)[_0xe8b4('0x1e')](_0x3206da);}};exports[_0xe8b4('0xba')]=function(_0xda9f39,_0x1c3304){var _0x37be74=fs[_0xe8b4('0xbb')](_0xda9f39[_0xe8b4('0xb4')][_0xe8b4('0xbc')]);Papa['parse'](_0x37be74,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x501764){return _0x1c3304[_0xe8b4('0x10')](0xc8)[_0xe8b4('0x11')]({'file':_0xda9f39[_0xe8b4('0xb4')],'fields':_0x501764[_0xe8b4('0xbd')]['fields']});}});};exports[_0xe8b4('0xbe')]=function(_0x2edf73,_0x1b2c78){return db[_0xe8b4('0xbf')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0xe8b4('0xc0')}})[_0xe8b4('0x18')](function(_0x3b48e9){var _0x5f53eb=![];if(!_0x2edf73[_0xe8b4('0x38')][_0xe8b4('0x64')]){throw new Error(_0xe8b4('0xa9'));}if(!_0x2edf73[_0xe8b4('0x38')][_0xe8b4('0xc1')][_0xe8b4('0x7b')]){throw new Error(_0xe8b4('0xc2'));}if(!_0x2edf73[_0xe8b4('0x38')]['binding'][_0xe8b4('0xc3')]){throw new Error(_0xe8b4('0xc4'));}if(!_0x2edf73[_0xe8b4('0x38')]['socket_timestamp']){throw new Error(_0xe8b4('0xaf'));}var _0x3f76af=require(_0xe8b4('0xc5'))[_0xe8b4('0xb7')](path[_0xe8b4('0x3c')](__dirname,'../../components/import/cm/csv2'),[_0x2edf73[_0xe8b4('0x27')]['id'],JSON[_0xe8b4('0xc6')](_0x2edf73[_0xe8b4('0x38')]),JSON['stringify'](_0x3b48e9)]);_0x3f76af['on'](_0xe8b4('0xc7'),function(){_0x5f53eb=!![];return _0x1b2c78['status'](0xc8)[_0xe8b4('0x11')]({'message':'start\x20child\x20process\x20correctly!','pid':_0x3f76af[_0xe8b4('0xb9')]});});_0x3f76af['on'](_0xe8b4('0xc8'),function(_0xe3ab09){if(_0xe3ab09&&!_0x5f53eb){return _0x1b2c78[_0xe8b4('0x10')](0x1f4)[_0xe8b4('0x11')]({'message':_0xe8b4('0xc9'),'pid':_0x3f76af[_0xe8b4('0xb9')]});}});})[_0xe8b4('0x24')](handleError(_0x1b2c78,null));};exports[_0xe8b4('0xca')]=function(_0x51c7b2,_0x5f8a33){return db[_0xe8b4('0xbf')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0xe8b4('0xc0')}})['then'](function(_0x4b5c7c){var _0x54264d=![];if(!_0x51c7b2[_0xe8b4('0x38')][_0xe8b4('0x64')]){throw new Error('No\x20ListId\x20specified');}if(!_0x51c7b2['body'][_0xe8b4('0xc1')]['phone']){throw new Error(_0xe8b4('0xc2'));}if(!_0x51c7b2['body'][_0xe8b4('0xc1')][_0xe8b4('0xc3')]){throw new Error(_0xe8b4('0xc4'));}if(!_0x51c7b2[_0xe8b4('0x38')]['socket_timestamp']){throw new Error(_0xe8b4('0xaf'));}var _0xc0841a=require(_0xe8b4('0xc5'))['fork'](path[_0xe8b4('0x3c')](__dirname,_0xe8b4('0xcb')),[_0x51c7b2[_0xe8b4('0x27')]['id'],JSON[_0xe8b4('0xc6')](_0x51c7b2['body']),JSON[_0xe8b4('0xc6')](_0x4b5c7c)]);_0xc0841a['on']('message',function(){_0x54264d=!![];return _0x5f8a33[_0xe8b4('0x10')](0xc8)['json']({'message':_0xe8b4('0xcc'),'pid':_0xc0841a[_0xe8b4('0xb9')]});});_0xc0841a['on']('exit',function(_0x3d865e){if(_0x3d865e&&!_0x54264d){return _0x5f8a33['status'](0x1f4)[_0xe8b4('0x11')]({'message':_0xe8b4('0xc9'),'pid':_0xc0841a[_0xe8b4('0xb9')]});}});})[_0xe8b4('0x24')](handleError(_0x5f8a33,null));};exports['getJourney']=function(_0x1dda1f,_0x34b5e8){var _0x2a36e6=[_0xe8b4('0xcd'),_0xe8b4('0xce'),_0xe8b4('0xcf'),_0xe8b4('0xd0'),_0xe8b4('0xd1'),_0xe8b4('0xd2'),'voice'];var _0x192e8d={'offset':0x0,'order':qs[_0xe8b4('0x83')](_0xe8b4('0xd3'))},_0x27bb6e={'count':0x0,'rows':[]};Promise[_0xe8b4('0xd4')]()[_0xe8b4('0x18')](function(){if(_0x1dda1f[_0xe8b4('0x22')][_0xe8b4('0xd5')]){if(!_[_0xe8b4('0xd6')](_0x2a36e6,_0x1dda1f[_0xe8b4('0x22')][_0xe8b4('0xd5')][_0xe8b4('0xd7')]())){throw new Error(_0xe8b4('0xd8'));}_0x2a36e6=[_0x1dda1f[_0xe8b4('0x22')][_0xe8b4('0xd5')][_0xe8b4('0xd7')]()];}if(_0x1dda1f['query'][_0xe8b4('0xd9')]){try{var _0x1a683a=JSON['parse'](_0x1dda1f[_0xe8b4('0x22')][_0xe8b4('0xd9')]);if(!moment(_0x1a683a[_0xe8b4('0x39')])[_0xe8b4('0xda')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x1a683a['to'])[_0xe8b4('0xda')]()){throw new Error(_0xe8b4('0xdb'));}}catch(_0x943632){throw new Error(_0xe8b4('0xdc'));}}if(!_0x1dda1f[_0xe8b4('0x22')][_0xe8b4('0x36')](_0xe8b4('0x87'))){_0x192e8d[_0xe8b4('0x88')]=qs[_0xe8b4('0x88')](_0x1dda1f[_0xe8b4('0x22')][_0xe8b4('0x88')]||0xa);_0x192e8d['offset']=qs[_0xe8b4('0x12')](_0x1dda1f[_0xe8b4('0x22')][_0xe8b4('0x12')]);}var _0x35b41d=_0x2a36e6[_0xe8b4('0x75')](function(_0x5e69a2){if(_0x5e69a2===_0xe8b4('0xdd')){var _0x2d678c={'attributes':['id',_0xe8b4('0xde'),'type',_0xe8b4('0xdf'),'destination',_0xe8b4('0xe0'),'starttime',_0xe8b4('0xe1'),_0xe8b4('0xe2'),_0xe8b4('0xe3'),_0xe8b4('0xe4'),_0xe8b4('0xe5'),_0xe8b4('0xe6'),'userThirdDisposition','UserId'],'where':{'ContactId':_0x1dda1f[_0xe8b4('0x27')]['id']},'include':[{'model':db[_0xe8b4('0xbf')],'as':_0xe8b4('0xbf'),'attributes':['id',_0xe8b4('0x1d'),_0xe8b4('0xe7'),_0xe8b4('0x32')]}],'order':[['createdAt',_0xe8b4('0xe8')]]};if(_0x1dda1f[_0xe8b4('0x22')][_0xe8b4('0xd9')]){_0x2d678c['where'][_0xe8b4('0xe4')]={'$gte':_0x1a683a[_0xe8b4('0x39')],'$lte':_0x1a683a['to']};}return db[_0xe8b4('0x4f')][_0xe8b4('0xe9')](_0x2d678c)[_0xe8b4('0x18')](function(_0x21186b){_0x27bb6e[_0xe8b4('0x14')]+=_0x21186b['count'];return _[_0xe8b4('0x75')](_0x21186b[_0xe8b4('0xa3')],function(_0x4f87a7){var _0x37ef3e=_0x4f87a7['get']({'plain':!![]});_0x37ef3e[_0xe8b4('0xd5')]=_0x5e69a2;if(_0x37ef3e[_0xe8b4('0xbf')]){_0x37ef3e['User']={'id':_0x37ef3e[_0xe8b4('0xbf')]['id'],'name':_0x37ef3e[_0xe8b4('0xbf')]['name'],'fullname':_0x37ef3e['User'][_0xe8b4('0xe7')],'alias':_0x37ef3e[_0xe8b4('0xbf')][_0xe8b4('0x32')]};}return _0x37ef3e;});});}else{var _0x4a1ae9=_[_0xe8b4('0xea')](_0x5e69a2)+(_0x5e69a2===_0xe8b4('0xce')?'Website':_0xe8b4('0xeb'));var _0x1c7c9e={'attributes':['id',_0xe8b4('0xec'),_0xe8b4('0xed'),_0xe8b4('0xe4'),_0xe8b4('0xe3'),_0xe8b4('0xee'),_0xe8b4('0xef'),_0xe8b4('0xf0'),_0xe8b4('0xf1'),_0x4a1ae9+'Id'],'where':{'ContactId':_0x1dda1f[_0xe8b4('0x27')]['id']},'include':[{'model':db[_0x4a1ae9],'as':_0xe8b4('0xeb'),'attributes':['id','name','key']},{'model':db['User'],'as':_0xe8b4('0xf2'),'attributes':['id',_0xe8b4('0x1d'),_0xe8b4('0xe7')]},{'model':db[_0xe8b4('0x6a')],'as':_0xe8b4('0x6b'),'attributes':['id',_0xe8b4('0x1d'),_0xe8b4('0xf3')],'through':{'attributes':[]}}],'order':[[_0xe8b4('0xe4'),'DESC']]};if(_0x1dda1f[_0xe8b4('0x22')]['range']){_0x1c7c9e[_0xe8b4('0x61')]['createdAt']={'$gte':_0x1a683a[_0xe8b4('0x39')],'$lte':_0x1a683a['to']};}switch(_0x5e69a2){case _0xe8b4('0xce'):_0x1c7c9e[_0xe8b4('0x81')][_0xe8b4('0x63')]('browserName',_0xe8b4('0xf4'),'customerPort',_0xe8b4('0xf5'),_0xe8b4('0xf6'),_0xe8b4('0xf7'),_0xe8b4('0xf8'),'ratingValue',_0xe8b4('0xf9'));break;case _0xe8b4('0xcd'):_0x1c7c9e[_0xe8b4('0x81')][_0xe8b4('0x63')](_0xe8b4('0xfa'),_0xe8b4('0xfb'));break;case _0xe8b4('0xd0'):_0x1c7c9e[_0xe8b4('0x81')]['push'](_0xe8b4('0xfc'),_0xe8b4('0xfd'));break;}return db[_[_0xe8b4('0xea')](_0x5e69a2)+_0xe8b4('0xfe')]['findAndCountAll'](_0x1c7c9e)[_0xe8b4('0x18')](function(_0x4e314c){_0x27bb6e[_0xe8b4('0x14')]+=_0x4e314c[_0xe8b4('0x14')];return _['map'](_0x4e314c[_0xe8b4('0xa3')],function(_0x4d9ce5){var _0x3a0c2d=_0x4d9ce5[_0xe8b4('0x3a')]({'plain':!![]});_0x3a0c2d[_0xe8b4('0xd5')]=_0x5e69a2;if(_0x3a0c2d[_0xe8b4('0xf2')]){_0x3a0c2d[_0xe8b4('0xf2')]={'id':_0x3a0c2d[_0xe8b4('0xf2')]['id'],'name':_0x3a0c2d[_0xe8b4('0xf2')][_0xe8b4('0x1d')],'fullname':_0x3a0c2d['Owner'][_0xe8b4('0xe7')]};}return _0x3a0c2d;});});}});return Promise[_0xe8b4('0x68')](_0x35b41d);})[_0xe8b4('0x18')](function(_0x26bedb){return _(_0x26bedb)[_0xe8b4('0xff')]()[_0xe8b4('0x100')](_0xe8b4('0xe4'))[_0xe8b4('0x101')]()[_0xe8b4('0x102')]();})[_0xe8b4('0x18')](function(_0x4b23a1){_0x27bb6e[_0xe8b4('0xa3')]=_0x192e8d[_0xe8b4('0x88')]?_0x4b23a1[_0xe8b4('0x103')](_0x192e8d[_0xe8b4('0x12')],_0x192e8d[_0xe8b4('0x12')]+_0x192e8d['limit']):_0x4b23a1;return _0x27bb6e;})[_0xe8b4('0x18')](respondWithFilteredResult(_0x34b5e8,_0x192e8d))[_0xe8b4('0x24')](handleError(_0x34b5e8,null));};
\ No newline at end of file
+var _0x517e=['table','cm_contacts','setFields','id\x20=\x20?','text','phone','findOne','model','Tag','rawAttributes','filters','intersection','fields','attributes','order','sort','pick','filter','options','getTags','nolimit','limit','setTags','ids','setAdditionalPhones','ContactItemType','items','item_types','ItemTypeId','description','OrderBy','contact\x20phone\x20exists','create','PHONE','CmHopperAdditionalPhone','`ItemType`.OrderBy','item','ItemType.OrderBy','ItemType','getAdditionalPhones','duplicateAdditionalPhones','fromContactId','toContactId','getHoppers','ContactId','includeAll','rows','getHopperHistories','include','getHopperFinals','getJscriptySessions','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','split','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','server/files/tmp','file','filename','0777','child_process','fork','../../components/import/cm/csv','CompanyId','socket_timestamp','File\x20uploaded\x20correctly!','pid','upload','createReadStream','parse','import','binding','../../components/import/cm/csv2','stringify','exit','error\x20child\x20process','importUpdates','User','agent','start\x20child\x20process\x20correctly!','mail','chat','sms','openchannel','fax','-createdAt','resolve','includes','channel','Invalid\x20channel','range','isValid','voice','uniqueid','source','starttime','endtime','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','fullname','DESC','findAndCountAll','startCase','Account','closed','note','disposition','secondDisposition','thirdDisposition','key','Owner','color','customerIp','deviceModel','ratingMessage','ratingType','ratingValue','referer','subject','substatus','externalUrl','threadId','flatten','sortBy','value','slice','moment','bluebird','util','path','lodash','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/environment/shared','defaults','redis','localhost','socket.io-emitter','./cmContact.socket','register','json','offset','count','status','set','Content-Range','update','then','end','sendStatus','error','stack','name','send','describe','user','destroy','CmContact','params','tags','keys','length','startsWith','columnName','displayName','query','analytics','CmCustomField','findAll','cf_','alias','type','values','info','forEach','hasOwnProperty','catch','merge','body','get','mergeWith','isArray','join','[CmContact][merge]\x20to\x20%s\x20from\x20%s','from','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','ChatInteraction','ChatMessage','ChatOfflineMessage','MailInteraction','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperFinal','CmHopperHistory','ReportAgentPreview','ChatQueueReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappMessage','WhatsappQueueReport','isNil','dialTimezone','timezones','utcOffset','additionalPhones','bulkCreate','each','duplicates','$or','push','where','ListId','findOrCreate','spread','contact','all','show','find','Tags','tag','Phones','sequelize','literal','Phones.OrderBy','$and','map','format','cf_%d','pickBy','isEmpty'];(function(_0x501305,_0x52f292){var _0x543082=function(_0x103e1c){while(--_0x103e1c){_0x501305['push'](_0x501305['shift']());}};_0x543082(++_0x52f292);}(_0x517e,0x187));var _0xe517=function(_0x15d4f8,_0x4b746b){_0x15d4f8=_0x15d4f8-0x0;var _0x4a8d92=_0x517e[_0x15d4f8];return _0x4a8d92;};'use strict';var moment=require(_0xe517('0x0'));var BPromise=require(_0xe517('0x1'));var util=require(_0xe517('0x2'));var path=require(_0xe517('0x3'));var fs=require('fs');var _=require(_0xe517('0x4'));var squel=require('squel');var Papa=require(_0xe517('0x5'));var Redis=require(_0xe517('0x6'));var contacts=require('../../components/contacts');var qs=require(_0xe517('0x7'));var logger=require(_0xe517('0x8'))(_0xe517('0x9'));var config=require(_0xe517('0xa'));var shared=require(_0xe517('0xb'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xe517('0xc')](config[_0xe517('0xd')],{'host':_0xe517('0xe'),'port':0x18eb});var socket=require(_0xe517('0xf'))(new Redis(config[_0xe517('0xd')]));require(_0xe517('0x10'))[_0xe517('0x11')](socket);function respondWithResult(_0x11f56c,_0x15e353){_0x15e353=_0x15e353||0xc8;return function(_0x4ad097){if(_0x4ad097){return _0x11f56c['status'](_0x15e353)[_0xe517('0x12')](_0x4ad097);}};}function respondWithFilteredResult(_0x3f5fa5,_0x5b9750){return function(_0x24d0d3){if(_0x24d0d3){var _0x54d4fa=typeof _0x5b9750[_0xe517('0x13')]==='undefined'&&typeof _0x5b9750['limit']==='undefined';var _0x204df4=_0x24d0d3['count'];var _0x53c5cb=_0x54d4fa?0x0:_0x5b9750[_0xe517('0x13')];var _0x5a03d6=_0x54d4fa?_0x24d0d3[_0xe517('0x14')]:_0x5b9750[_0xe517('0x13')]+_0x5b9750['limit'];var _0x43a2ed;if(_0x5a03d6>=_0x204df4){_0x5a03d6=_0x204df4;_0x43a2ed=0xc8;}else{_0x43a2ed=0xce;}_0x3f5fa5[_0xe517('0x15')](_0x43a2ed);return _0x3f5fa5[_0xe517('0x16')](_0xe517('0x17'),_0x53c5cb+'-'+_0x5a03d6+'/'+_0x204df4)[_0xe517('0x12')](_0x24d0d3);}return null;};}function saveUpdates(_0x282383){return function(_0x3cdc24){if(_0x3cdc24){return _0x3cdc24[_0xe517('0x18')](_0x282383)[_0xe517('0x19')](function(_0x1b122b){return _0x1b122b;});}return null;};}function removeEntity(_0x932965){return function(_0x261227){if(_0x261227){return _0x261227['destroy']()[_0xe517('0x19')](function(){_0x932965[_0xe517('0x15')](0xcc)[_0xe517('0x1a')]();});}};}function handleEntityNotFound(_0x509499){return function(_0x2019bb){if(!_0x2019bb){_0x509499[_0xe517('0x1b')](0x194);}return _0x2019bb;};}function handleError(_0x3ac3f2,_0x5b1ded){_0x5b1ded=_0x5b1ded||0x1f4;return function(_0x4fa3bc){logger[_0xe517('0x1c')](_0x4fa3bc[_0xe517('0x1d')]);if(_0x4fa3bc['name']){delete _0x4fa3bc[_0xe517('0x1e')];}_0x3ac3f2[_0xe517('0x15')](_0x5b1ded)[_0xe517('0x1f')](_0x4fa3bc);};}exports['index']=function(_0x52d03e,_0x506237){var _0x7fa99e={};return contacts[_0xe517('0x20')]()[_0xe517('0x19')](function(_0x690a00){_0x7fa99e=qs['getOptions'](_0x690a00,_0x52d03e);return contacts['findAll'](_0x52d03e['query'],_0x52d03e[_0xe517('0x21')],_0x7fa99e,_0x690a00);})[_0xe517('0x19')](respondWithFilteredResult(_0x506237,_0x7fa99e))['catch'](handleError(_0x506237,null));};exports[_0xe517('0x22')]=function(_0xc24e61,_0x5a2147){return db[_0xe517('0x23')]['find']({'where':{'id':_0xc24e61[_0xe517('0x24')]['id']}})[_0xe517('0x19')](handleEntityNotFound(_0x5a2147,null))['then'](removeEntity(_0x5a2147,null))['catch'](handleError(_0x5a2147,null));};exports[_0xe517('0x20')]=function(_0x5b5ddd,_0x40e60d){return db['CmContact'][_0xe517('0x20')]()[_0xe517('0x19')](function(_0x417606){delete _0x417606[_0xe517('0x25')];for(var _0x2f8c19=0x0;_0x2f8c19<Object[_0xe517('0x26')](_0x417606)[_0xe517('0x27')];_0x2f8c19++){var _0xc60278=Object['keys'](_0x417606)[_0x2f8c19];if(!_[_0xe517('0x28')](_0xc60278,'cf_')){_0x417606[_0xc60278][_0xe517('0x29')]=_0xc60278;_0x417606[_0xc60278][_0xe517('0x2a')]=_0xc60278;}}return _0x417606;})[_0xe517('0x19')](function(_0x3e7568){var _0x2edbc2={'where':Boolean(_0x5b5ddd[_0xe517('0x2b')][_0xe517('0x2c')])===!![]?undefined:{'$or':[{'ListId':_0x5b5ddd['query']['id']},{'ListId':null}]},'raw':!![]};return db[_0xe517('0x2d')][_0xe517('0x2e')](_0x2edbc2)['then'](function(_0x44e79d){for(var _0x2b8cdf=0x0;_0x2b8cdf<_0x44e79d[_0xe517('0x27')];_0x2b8cdf++){var _0x543c6b=_0xe517('0x2f')+_0x44e79d[_0x2b8cdf]['id'];if(_0x3e7568[_0x543c6b]){_0x3e7568[_0x543c6b][_0xe517('0x29')]=_0x543c6b;_0x3e7568[_0x543c6b][_0xe517('0x2a')]=_0x44e79d[_0x2b8cdf][_0xe517('0x30')];_0x3e7568[_0x543c6b]['custom']={'type':_0x44e79d[_0x2b8cdf][_0xe517('0x31')],'values':_0x44e79d[_0x2b8cdf][_0xe517('0x32')]};}else{logger[_0xe517('0x33')]('Custom\x20field\x20%s\x20not\x20found\x20on\x20cm_contacts\x20table',_0x543c6b);}}Object['keys'](_0x3e7568)[_0xe517('0x34')](function(_0x3fbcc5){if(!_0x3e7568[_0x3fbcc5][_0xe517('0x35')]('columnName')){delete _0x3e7568[_0x3fbcc5];}});return _0x3e7568;});})['then'](respondWithResult(_0x40e60d,null))[_0xe517('0x36')](handleError(_0x40e60d,null));};exports[_0xe517('0x37')]=function(_0x56f18d,_0x401863){var _0x98756a;var _0x3b9a2a;var _0x4dbecc;if(_0x56f18d['body']['id']){delete _0x56f18d[_0xe517('0x38')]['id'];}return db[_0xe517('0x23')][_0xe517('0x2e')]({'where':{'id':[_0x56f18d[_0xe517('0x38')]['to'],_0x56f18d[_0xe517('0x38')]['from']]}})[_0xe517('0x19')](function(_0x21c5e3){if(_0x21c5e3){if(_0x21c5e3[_0xe517('0x27')]!==0x2){return null;}_0x21c5e3[0x0]=_0x21c5e3[0x0][_0xe517('0x39')]({'plain':!![]});_0x21c5e3[0x1]=_0x21c5e3[0x1][_0xe517('0x39')]({'plain':!![]});delete _0x21c5e3[0x0]['id'];delete _0x21c5e3[0x1]['id'];return _[_0xe517('0x3a')](_0x21c5e3[0x0],_0x21c5e3[0x1],function(_0x41bf78,_0x196ca3){if(Array[_0xe517('0x3b')](_0x196ca3)&&!_0x196ca3['length']){return _0x41bf78;}else if(!_0x196ca3){return _0x41bf78;}});}})[_0xe517('0x19')](handleEntityNotFound(_0x401863,null))[_0xe517('0x19')](function(_0x2608df){if(_0x2608df){if(_0x2608df[_0xe517('0x25')]&&_[_0xe517('0x3b')](_0x2608df[_0xe517('0x25')])){_0x2608df[_0xe517('0x25')]=_0x2608df[_0xe517('0x25')][_0xe517('0x3c')]();}logger[_0xe517('0x33')](_0xe517('0x3d'),_0x56f18d['body']['to'],_0x56f18d[_0xe517('0x38')][_0xe517('0x3e')]);return db[_0xe517('0x3f')][_0xe517('0x22')]({'where':{'ContactId':[_0x56f18d[_0xe517('0x38')]['to'],_0x56f18d[_0xe517('0x38')][_0xe517('0x3e')]]}})[_0xe517('0x19')](function(_0x1ebfff){logger[_0xe517('0x33')](_0xe517('0x40'),_0x1ebfff);return db[_0xe517('0x41')][_0xe517('0x22')]({'where':{'ContactId':[_0x56f18d[_0xe517('0x38')]['to'],_0x56f18d['body']['from']]}})[_0xe517('0x19')](function(_0x24e2b8){logger[_0xe517('0x33')](_0xe517('0x42'),_0x24e2b8);return db[_0xe517('0x23')]['create'](_0x2608df);});});}})['then'](function(_0x326a85){if(_0x326a85){_0x98756a=_0x326a85;_0x3b9a2a={'ContactId':_0x98756a['id']};_0x4dbecc={'where':{'ContactId':[_0x56f18d[_0xe517('0x38')]['to'],_0x56f18d['body'][_0xe517('0x3e')]]}};return db[_0xe517('0x43')][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db[_0xe517('0x44')][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db[_0xe517('0x45')][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db[_0xe517('0x46')][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db['MailMessage'][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db['MailInteraction'][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db['MailMessage'][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db[_0xe517('0x47')][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db[_0xe517('0x48')]['update'](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db[_0xe517('0x49')][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})['then'](function(){if(_0x98756a){return db[_0xe517('0x4a')][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db[_0xe517('0x4b')][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db[_0xe517('0x4c')]['update'](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db[_0xe517('0x4d')][_0xe517('0x18')]({'CmContactId':_0x98756a['id']},{'where':{'CmContactId':[_0x56f18d[_0xe517('0x38')]['to'],_0x56f18d[_0xe517('0x38')][_0xe517('0x3e')]]}});}})['then'](function(){if(_0x98756a){return db[_0xe517('0x4e')][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db[_0xe517('0x4f')][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})['then'](function(){if(_0x98756a){return db[_0xe517('0x50')][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db['VoiceCallReport']['update'](_0x3b9a2a,_0x4dbecc);}})['then'](function(){if(_0x98756a){return db[_0xe517('0x51')][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db[_0xe517('0x52')][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db[_0xe517('0x53')][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db[_0xe517('0x54')][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db[_0xe517('0x55')][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db[_0xe517('0x56')][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db['WhatsappInteraction'][_0xe517('0x18')](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db[_0xe517('0x57')]['update'](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db[_0xe517('0x58')]['update'](_0x3b9a2a,_0x4dbecc);}})[_0xe517('0x19')](function(){if(_0x98756a){return db[_0xe517('0x23')][_0xe517('0x22')]({'where':{'id':[_0x56f18d[_0xe517('0x38')]['to'],_0x56f18d[_0xe517('0x38')][_0xe517('0x3e')]]}});}})[_0xe517('0x19')](function(){if(_0x98756a){return _0x98756a;}})['then'](respondWithResult(_0x401863,null))[_0xe517('0x36')](handleError(_0x401863,null));};exports['create']=function(_0x343f99,_0x306979){return db['CmContact'][_0xe517('0x20')]()[_0xe517('0x19')](function(_0x4c22d6){if(_0x343f99[_0xe517('0x38')][_0xe517('0x25')]&&_[_0xe517('0x3b')](_0x343f99['body']['tags'])){if(_0x343f99['body']['tags'][_0xe517('0x27')]){_0x343f99[_0xe517('0x38')]['tags']=_0x343f99[_0xe517('0x38')][_0xe517('0x25')][_0xe517('0x3c')](';')+';';}else{_0x343f99['body']['tags']=null;}}else{_0x343f99[_0xe517('0x38')][_0xe517('0x25')]=null;}if(!_[_0xe517('0x59')](_0x343f99[_0xe517('0x38')]['dialTimezone'])){var _0x3186a2=_0x343f99[_0xe517('0x38')][_0xe517('0x5a')];if(!_[_0xe517('0x59')](shared[_0xe517('0x5b')][_0x3186a2]))_0x343f99[_0xe517('0x38')][_0xe517('0x5c')]=shared[_0xe517('0x5b')][_0x3186a2][_0xe517('0x5c')];}return db[_0xe517('0x23')]['create'](_0x343f99['body'],{'fields':_['keys'](_0x4c22d6),'raw':!![]});})[_0xe517('0x19')](function(_0x18dce6){if(_0x343f99['body']['additionalPhones']){return insertAdditionalPhones(_0x18dce6,_0x343f99['body'][_0xe517('0x5d')]);}else{return _0x18dce6;}})[_0xe517('0x19')](respondWithResult(_0x306979,0xc9))[_0xe517('0x36')](handleError(_0x306979,null));};exports[_0xe517('0x5e')]=function(_0xaffb0c,_0x552557){var _0xf268e1=0x0;var _0x164e2b=0x0;var _0x56bbc2=0x0;var _0x1b9e12=[];return db[_0xe517('0x23')]['describe']()[_0xe517('0x19')](function(_0x5adfdf){return BPromise[_0xe517('0x5f')](_0xaffb0c['body'],function(_0x32d7cd){var _0x33482e={'where':{'$or':[]},'defaults':_0x32d7cd,'fields':_[_0xe517('0x26')](_0x5adfdf),'raw':!![]};if(_0x32d7cd['duplicates']){for(var _0xd6ce=0x0;_0xd6ce<_0x32d7cd[_0xe517('0x60')][_0xe517('0x27')];_0xd6ce++){var _0x35729a={};_0x35729a[_0x32d7cd[_0xe517('0x60')][_0xd6ce]]=_0x32d7cd[_0x32d7cd[_0xe517('0x60')][_0xd6ce]];_0x33482e['where'][_0xe517('0x61')][_0xe517('0x62')](_0x35729a);}_0x33482e[_0xe517('0x63')][_0xe517('0x64')]=_0x32d7cd['ListId'];}return db[_0xe517('0x23')][_0xe517('0x65')](_0x33482e)[_0xe517('0x66')](function(_0x27fa2a,_0x16f07b){if(_0x16f07b){if(_0x32d7cd[_0xe517('0x35')]('additionalPhones')){_0x1b9e12[_0xe517('0x62')]({'contact':_0x27fa2a,'additionalPhones':_0x32d7cd[_0xe517('0x5d')]});}_0xf268e1++;}else{_0x56bbc2++;}})[_0xe517('0x36')](function(){_0x164e2b++;});});})[_0xe517('0x19')](function(_0xe25f00){if(_0xe25f00){if(_0x1b9e12['length']>0x0){return new Promise(function(_0x536244){var _0x5282c4=[];for(var _0x5aec7f=0x0;_0x5aec7f<_0x1b9e12[_0xe517('0x27')];_0x5aec7f++){_0x5282c4[_0xe517('0x62')](insertAdditionalPhones(_0x1b9e12[_0x5aec7f][_0xe517('0x67')],_0x1b9e12[_0x5aec7f]['additionalPhones']));}Promise[_0xe517('0x68')](_0x5282c4)['then'](function(){_0x536244(0x1);});})[_0xe517('0x19')](function(){return{'success':_0xf268e1,'failure':_0x164e2b,'duplicates':_0x56bbc2};});}else{return{'success':_0xf268e1,'failure':_0x164e2b,'duplicates':_0x56bbc2};}}})['then'](respondWithResult(_0x552557,0xc9))[_0xe517('0x36')](handleError(_0x552557,null));};exports[_0xe517('0x69')]=function(_0x1ae7e9,_0x4d9721){var _0x45cbcf;return db['CmContact'][_0xe517('0x20')]()[_0xe517('0x19')](function(_0x142435){return db[_0xe517('0x23')][_0xe517('0x6a')]({'where':{'id':_0x1ae7e9[_0xe517('0x24')]['id']},'include':[{'model':db['Tag'],'as':_0xe517('0x6b'),'attributes':['id',_0xe517('0x1e'),'color'],'required':_0x1ae7e9['query'][_0xe517('0x6c')]?!![]:![]},{'model':db[_0xe517('0x4d')],'as':_0xe517('0x6d'),'where':{'CmContactId':_0x1ae7e9[_0xe517('0x24')]['id']},'required':![],'include':[{'model':db['ContactItemType'],'as':'ItemType'}]}],'order':[db[_0xe517('0x6e')][_0xe517('0x6f')](_0xe517('0x70'))],'attributes':_['keys'](_0x142435)});})[_0xe517('0x19')](function(_0x3db494){if(!_['isNil'](_0x3db494)){_0x45cbcf=_0x3db494[_0xe517('0x39')]({'plain':!![]});var _0x2e4aa6={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x3db494&&_0x3db494[_0xe517('0x64')]){if(_0x3db494[_0xe517('0x64')]){_0x2e4aa6[_0xe517('0x63')][_0xe517('0x71')][_0xe517('0x62')]({'ListId':{'$ne':_0x3db494[_0xe517('0x64')]}});}}return db[_0xe517('0x2d')][_0xe517('0x2e')](_0x2e4aa6);}})['then'](function(_0x219992){if(!_[_0xe517('0x59')](_0x219992)){return _['omit'](_0x45cbcf,_[_0xe517('0x72')](_0x219992,function(_0x476f0b){return util[_0xe517('0x73')](_0xe517('0x74'),_0x476f0b['id']);}));}})[_0xe517('0x19')](handleEntityNotFound(_0x4d9721,null))[_0xe517('0x19')](respondWithResult(_0x4d9721,null))[_0xe517('0x36')](handleError(_0x4d9721,null));};exports[_0xe517('0x18')]=function(_0x155262,_0x5555dd){var _0x376dc6;if(_0x155262[_0xe517('0x38')]['id']){delete _0x155262[_0xe517('0x38')]['id'];}if(!_['isNil'](_0x155262[_0xe517('0x38')][_0xe517('0x5a')])){var _0x3f7e1d=_0x155262[_0xe517('0x38')][_0xe517('0x5a')];if(!_[_0xe517('0x59')](shared[_0xe517('0x5b')][_0x3f7e1d]))_0x155262[_0xe517('0x38')]['utcOffset']=shared[_0xe517('0x5b')][_0x3f7e1d][_0xe517('0x5c')];}return db['CmContact']['find']({'where':{'id':_0x155262[_0xe517('0x24')]['id']}})[_0xe517('0x19')](handleEntityNotFound(_0x5555dd,null))[_0xe517('0x19')](saveUpdates(_0x155262['body'],null))['then'](function(_0x363cc5){_0x376dc6=_0x363cc5;var _0x13e4ca={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x363cc5&&_0x363cc5['ListId']){if(_0x363cc5['ListId']){_0x13e4ca[_0xe517('0x63')][_0xe517('0x71')]['push']({'ListId':{'$ne':_0x363cc5[_0xe517('0x64')]}});}}return db['CmCustomField']['findAll'](_0x13e4ca);})['then'](function(_0x3d58e0){if(_0x3d58e0){return _['omit'](_[_0xe517('0x75')](_0x155262[_0xe517('0x38')],function(_0x395a91,_0xb8a8e6){return _[_0xe517('0x28')](_0xb8a8e6,'cf_');}),_['map'](_0x3d58e0,function(_0x58fe06){return util[_0xe517('0x73')](_0xe517('0x74'),_0x58fe06['id']);}));}})[_0xe517('0x19')](function(_0x4d4fbf){if(_0x4d4fbf&&!_[_0xe517('0x76')](_0x4d4fbf)){var _0x6335c8=squel[_0xe517('0x18')]()[_0xe517('0x77')](_0xe517('0x78'))[_0xe517('0x79')](_0x4d4fbf)[_0xe517('0x63')](_0xe517('0x7a'),_0x155262[_0xe517('0x24')]['id'])['toParam']();return db[_0xe517('0x6e')][_0xe517('0x2b')](_0x6335c8[_0xe517('0x7b')],{'replacements':_0x6335c8[_0xe517('0x32')]});}})[_0xe517('0x19')](function(){if(_0x155262[_0xe517('0x38')]['phone']&&_0x376dc6){return db[_0xe517('0x3f')]['update']({'phone':_0x155262[_0xe517('0x38')][_0xe517('0x7c')],'OrderBy':0x0},{'where':{'ContactId':_0x376dc6['id']}});}})[_0xe517('0x19')](function(){return _0x376dc6;})[_0xe517('0x19')](respondWithResult(_0x5555dd,null))['catch'](handleError(_0x5555dd,null));};exports['getTags']=function(_0x3124ad,_0x552d95){var _0x47a4d1={};var _0x59f28d={};var _0x5388ab;var _0x2e69c4;return db[_0xe517('0x23')][_0xe517('0x7d')]({'where':{'id':_0x3124ad[_0xe517('0x24')]['id']}})['then'](handleEntityNotFound(_0x552d95,null))['then'](function(_0x1dddf4){if(_0x1dddf4){_0x5388ab=_0x1dddf4;_0x59f28d[_0xe517('0x7e')]=_['keys'](db[_0xe517('0x7f')][_0xe517('0x80')]);_0x59f28d[_0xe517('0x2b')]=_[_0xe517('0x26')](_0x3124ad[_0xe517('0x2b')]);_0x59f28d[_0xe517('0x81')]=_[_0xe517('0x82')](_0x59f28d[_0xe517('0x7e')],_0x59f28d[_0xe517('0x2b')]);_0x47a4d1['attributes']=_[_0xe517('0x82')](_0x59f28d[_0xe517('0x7e')],qs[_0xe517('0x83')](_0x3124ad[_0xe517('0x2b')][_0xe517('0x83')]));_0x47a4d1['attributes']=_0x47a4d1[_0xe517('0x84')][_0xe517('0x27')]?_0x47a4d1[_0xe517('0x84')]:_0x59f28d['model'];_0x47a4d1[_0xe517('0x85')]=qs[_0xe517('0x86')](_0x3124ad[_0xe517('0x2b')][_0xe517('0x86')]);_0x47a4d1[_0xe517('0x63')]=qs[_0xe517('0x81')](_[_0xe517('0x87')](_0x3124ad[_0xe517('0x2b')],_0x59f28d[_0xe517('0x81')]));if(_0x3124ad[_0xe517('0x2b')][_0xe517('0x88')]){_0x47a4d1[_0xe517('0x63')]=_[_0xe517('0x37')](_0x47a4d1['where'],{'$or':_[_0xe517('0x72')](_0x47a4d1[_0xe517('0x84')],function(_0x3bf2e5){var _0x17a44a={};_0x17a44a[_0x3bf2e5]={'$like':'%'+_0x3124ad['query'][_0xe517('0x88')]+'%'};return _0x17a44a;})});}_0x47a4d1=_[_0xe517('0x37')]({},_0x47a4d1,_0x3124ad[_0xe517('0x89')]);return _0x5388ab[_0xe517('0x8a')](_0x47a4d1);}})['then'](function(_0x2c7a05){if(_0x2c7a05){_0x2e69c4=_0x2c7a05[_0xe517('0x27')];if(!_0x3124ad[_0xe517('0x2b')][_0xe517('0x35')](_0xe517('0x8b'))){_0x47a4d1['limit']=qs[_0xe517('0x8c')](_0x3124ad[_0xe517('0x2b')][_0xe517('0x8c')]);_0x47a4d1[_0xe517('0x13')]=qs[_0xe517('0x13')](_0x3124ad[_0xe517('0x2b')][_0xe517('0x13')]);}return _0x5388ab[_0xe517('0x8a')](_0x47a4d1);}})[_0xe517('0x19')](function(_0x2cb4dc){if(_0x2cb4dc){return _0x2cb4dc?{'count':_0x2e69c4,'rows':_0x2cb4dc}:null;}})[_0xe517('0x19')](respondWithResult(_0x552d95,null))[_0xe517('0x36')](handleError(_0x552d95,null));};exports['setTags']=function(_0x2e460c,_0x2f12cd){if(_0x2e460c['body']['id']){delete _0x2e460c[_0xe517('0x38')]['id'];}return db[_0xe517('0x23')][_0xe517('0x7d')]({'where':{'id':_0x2e460c[_0xe517('0x24')]['id']}})[_0xe517('0x19')](handleEntityNotFound(_0x2f12cd,null))[_0xe517('0x19')](function(_0x5d1b24){if(_0x5d1b24){return _0x5d1b24[_0xe517('0x8d')](_0x2e460c[_0xe517('0x38')][_0xe517('0x8e')]||[]);}return null;})[_0xe517('0x19')](respondWithResult(_0x2f12cd,null))[_0xe517('0x36')](handleError(_0x2f12cd,null));};exports[_0xe517('0x8f')]=function(_0x42bc9e,_0x226641){var _0x41dd3b=[];_0x41dd3b[_0xe517('0x62')](addAdditionalPhones(_0x42bc9e['body']));Promise['all'](_0x41dd3b)[_0xe517('0x19')](function(){_0x41dd3b=[];_0x41dd3b[_0xe517('0x62')](deleteCmHopperPhones(_0x42bc9e[_0xe517('0x38')]['id']));_0x41dd3b[_0xe517('0x62')](addCmHopperPhones(_0x42bc9e['body']['id']));Promise[_0xe517('0x68')](_0x41dd3b)['then'](function(){return[0x1];})[_0xe517('0x19')](respondWithResult(_0x226641,null));});};function addAdditionalPhones(_0x31cbf0){var _0x1f87d0;return new Promise(function(_0xffaafd){return db['CmContactHasItem']['destroy']({'where':{'CmContactId':_0x31cbf0['id']}})[_0xe517('0x19')](function(){db[_0xe517('0x90')][_0xe517('0x2e')]({'raw':!![],'attributes':['id','OrderBy']})['then'](function(_0x4f3001){var _0x3f001d=[];for(var _0x267bdc=0x0;_0x267bdc<_0x31cbf0[_0xe517('0x91')][_0xe517('0x27')];_0x267bdc++){var _0x152a42=_0x31cbf0['item_types']?_[_0xe517('0x59')](_0x31cbf0[_0xe517('0x92')][_0x267bdc])?'':_0x31cbf0[_0xe517('0x92')][_0x267bdc]:_0x31cbf0[_0xe517('0x91')][_0x267bdc][_0xe517('0x93')]?_0x31cbf0['items'][_0x267bdc][_0xe517('0x93')]:'';var _0xb17fcc=_[_0xe517('0x59')](_0x31cbf0[_0xe517('0x91')][_0x267bdc][_0xe517('0x94')])?'':_0x31cbf0[_0xe517('0x91')][_0x267bdc][_0xe517('0x94')];var _0x303e79=_0x152a42+':'+_0x31cbf0[_0xe517('0x91')][_0x267bdc][_0xe517('0x7c')]+'§'+_0xb17fcc;if(_[_0xe517('0x59')](_0x1f87d0))_0x1f87d0=_0x303e79;else _0x1f87d0+=';'+_0x303e79;var _0x5ebe52=null;var _0x2af85c=null;if(_0x31cbf0[_0xe517('0x92')]){if(!_[_0xe517('0x59')](_0x31cbf0[_0xe517('0x92')][_0x267bdc])){_0x2af85c=_[_0xe517('0x6a')](_0x4f3001,function(_0x1b7e86){return _0x1b7e86['id']===_0x31cbf0[_0xe517('0x92')][_0x267bdc];});if(!_[_0xe517('0x59')](_0x2af85c)){_0x5ebe52=_0x2af85c[_0xe517('0x95')];}}}else{if(!_['isNil'](_0x31cbf0[_0xe517('0x91')][_0x267bdc])){_0x2af85c=_[_0xe517('0x6a')](_0x4f3001,function(_0x2465e8){return _0x2465e8['id']===_0x31cbf0['items'][_0x267bdc][_0xe517('0x93')];});if(!_['isNil'](_0x2af85c)){_0x5ebe52=_0x267bdc;}}}if(_[_0xe517('0x59')](_0x5ebe52)){_0x5ebe52=0x64;}_0x3f001d[_0xe517('0x62')](addAdditionalPhone(_0x31cbf0['id'],_0x31cbf0['items'][_0x267bdc]['phone'],_0x31cbf0[_0xe517('0x92')]?_[_0xe517('0x59')](_0x31cbf0[_0xe517('0x92')][_0x267bdc])?null:_0x31cbf0['item_types'][_0x267bdc]:_0x31cbf0['items'][_0x267bdc][_0xe517('0x93')]?_0x31cbf0[_0xe517('0x91')][_0x267bdc][_0xe517('0x93')]:null,_0x5ebe52,_0xb17fcc));}Promise[_0xe517('0x68')](_0x3f001d)[_0xe517('0x19')](function(){db[_0xe517('0x23')][_0xe517('0x18')]({'AdditionalPhones':_0x1f87d0},{'where':{'id':_0x31cbf0['id']}})[_0xe517('0x19')](function(){_0xffaafd(0x1);});});});});});}function addAdditionalPhone(_0x1d2cb8,_0x4d3670,_0x3fdb8c,_0x25c3d0,_0x5c48eb){return db[_0xe517('0x4d')][_0xe517('0x6a')]({'where':{'CmContactId':_0x1d2cb8,'item':_0x4d3670}})['then'](function(_0x463eec){if(_0x463eec)logger['info'](_0xe517('0x96'),_0x463eec);else{db[_0xe517('0x4d')][_0xe517('0x97')]({'CmContactId':_0x1d2cb8,'item':_0x4d3670,'ItemTypeId':_0x3fdb8c,'OrderBy':_0x25c3d0,'ItemClass':_0xe517('0x98'),'description':_0x5c48eb});}});}function deleteCmHopperPhones(_0x289df2){return new Promise(function(_0x29d24d){return db[_0xe517('0x3f')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x289df2}})['then'](function(_0x2a45ea){db[_0xe517('0x99')][_0xe517('0x22')]({'where':{'CmHopperId':{'$in':_[_0xe517('0x72')](_0x2a45ea,'id')}}});})[_0xe517('0x19')](function(){_0x29d24d(0x1);});});}function addCmHopperPhones(_0x2212d2){return new Promise(function(_0x31616e){return db['CmHopper'][_0xe517('0x2e')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x2212d2}})[_0xe517('0x19')](function(_0x2ec19e){var _0x9b1b32=[];_[_0xe517('0x72')](_0x2ec19e,function(_0x1e919f){_0x9b1b32[_0xe517('0x62')](createCmHopperPhone(_0x2212d2,_0x1e919f['id']));});Promise[_0xe517('0x68')](_0x9b1b32)['then'](function(){_0x31616e(0x1);});});});}function createCmHopperPhone(_0x3247ee,_0x358536){return new Promise(function(_0x2fae3d){db[_0xe517('0x4d')][_0xe517('0x2e')]({'raw':!![],'attributes':['item',_0xe517('0x95')],'where':{'CmContactId':_0x3247ee,'ItemClass':'PHONE'},'include':[{'model':db['ContactItemType'],'attributes':[_0xe517('0x95')],'as':'ItemType'}],'order':[_0xe517('0x95'),db[_0xe517('0x6e')][_0xe517('0x6f')](_0xe517('0x9a'))]})[_0xe517('0x19')](function(_0x8564ab){var _0x430f18=0x1;var _0x4a92d5=_[_0xe517('0x72')](_0x8564ab,function(_0xa79703){_0xa79703['CmHopperId']=_0x358536;_0xa79703[_0xe517('0x7c')]=_0xa79703[_0xe517('0x9b')];_0xa79703['OrderBy']=_0x430f18;delete _0xa79703[_0xe517('0x9c')];_0x430f18=_0x430f18+0x1;return _0xa79703;});return db['CmHopperAdditionalPhone'][_0xe517('0x5e')](_0x4a92d5,{});})[_0xe517('0x19')](function(){_0x2fae3d(0x1);});});}function insertAdditionalPhones(_0x4699d5,_0x254f9){return new Promise(function(_0x5716f8){var _0x523aae=[];for(var _0x32be1d=0x0;_0x32be1d<_0x254f9[_0xe517('0x27')];_0x32be1d++){var _0x2bee97=_0x254f9[_0x32be1d];_0x523aae[_0xe517('0x62')](parseContactItemType(_0x2bee97));}Promise[_0xe517('0x68')](_0x523aae)[_0xe517('0x19')](function(){var _0x551867={'id':_0x4699d5['id'],'items':_0x254f9};return addAdditionalPhones(_0x551867)[_0xe517('0x19')](function(){return addCmHopperPhones(_0x4699d5['id']);});})[_0xe517('0x19')](function(){_0x5716f8(_0x4699d5);});});}function parseContactItemType(_0x8b7a3){return new Promise(function(_0x3672ba){if(_0x8b7a3[_0xe517('0x35')](_0xe517('0x93'))){_0x3672ba(_0x8b7a3);}else{return db[_0xe517('0x90')][_0xe517('0x6a')]({'where':{'name':_0x8b7a3[_0xe517('0x9d')]}})[_0xe517('0x19')](function(_0x55e560){if(_[_0xe517('0x59')](_0x55e560))_0x8b7a3[_0xe517('0x93')]=null;else _0x8b7a3[_0xe517('0x93')]=_0x55e560['id'];_0x3672ba(_0x8b7a3);});}});}exports[_0xe517('0x9e')]=function(_0x380f7a,_0x5de61b){return db[_0xe517('0x4d')][_0xe517('0x2e')]({'raw':!![],'where':{'CmContactId':_0x380f7a[_0xe517('0x24')]['id'],'ItemClass':'PHONE'},'include':[{'model':db['ContactItemType'],'as':_0xe517('0x9d')}],'order':[[_0xe517('0x95')],[db[_0xe517('0x6e')][_0xe517('0x6f')](_0xe517('0x9a'))]]})[_0xe517('0x19')](function(_0x4c52fa){return _0x4c52fa;})[_0xe517('0x19')](respondWithResult(_0x5de61b,null))[_0xe517('0x36')](handleError(_0x5de61b,null));};exports[_0xe517('0x9f')]=function(_0xbb4f3d,_0x1b6f85){return db[_0xe517('0x4d')]['findAll']({'raw':!![],'where':{'CmContactId':_0xbb4f3d[_0xe517('0x38')][_0xe517('0xa0')]}})['then'](function(_0x27d529){var _0x5571cf=_[_0xe517('0x72')](_0x27d529,function(_0x5f11c1){_0x5f11c1['CmContactId']=_0xbb4f3d[_0xe517('0x38')][_0xe517('0xa1')];return _0x5f11c1;});return db[_0xe517('0x4d')][_0xe517('0x5e')](_0x5571cf,{});})[_0xe517('0x19')](function(){return addCmHopperPhones(_0xbb4f3d[_0xe517('0x38')][_0xe517('0xa1')]);})[_0xe517('0x19')](function(){return['ok'];})[_0xe517('0x19')](respondWithResult(_0x1b6f85,null))[_0xe517('0x36')](handleError(_0x1b6f85,null));};exports['rescheduleAdditionalPhones']=function(_0x38c49d,_0x112ea3){var _0x48d04a=[];_0x48d04a[_0xe517('0x62')](createCmHopperPhone(_0x38c49d[_0xe517('0x38')]['id'],_0x38c49d[_0xe517('0x38')]['hopperId']));Promise[_0xe517('0x68')](_0x48d04a)[_0xe517('0x19')](function(){return[0x1];})[_0xe517('0x19')](respondWithResult(_0x112ea3,null));};exports[_0xe517('0xa2')]=function(_0x3d8fee,_0x33deb0){var _0xc9b11d={'raw':![],'where':{}};var _0xee5167={};var _0x182905={'count':0x0,'rows':[]};return db['CmContact'][_0xe517('0x7d')]({'where':{'id':_0x3d8fee['params']['id']}})[_0xe517('0x19')](handleEntityNotFound(_0x33deb0,null))['then'](function(_0x168956){if(_0x168956){_0xee5167[_0xe517('0x7e')]=_[_0xe517('0x26')](db[_0xe517('0x3f')][_0xe517('0x80')]);_0xee5167[_0xe517('0x2b')]=_[_0xe517('0x26')](_0x3d8fee[_0xe517('0x2b')]);_0xee5167[_0xe517('0x81')]=_[_0xe517('0x82')](_0xee5167[_0xe517('0x7e')],_0xee5167['query']);_0xc9b11d['attributes']=_[_0xe517('0x82')](_0xee5167[_0xe517('0x7e')],qs[_0xe517('0x83')](_0x3d8fee[_0xe517('0x2b')][_0xe517('0x83')]));_0xc9b11d[_0xe517('0x84')]=_0xc9b11d[_0xe517('0x84')][_0xe517('0x27')]?_0xc9b11d[_0xe517('0x84')]:_0xee5167['model'];if(!_0x3d8fee[_0xe517('0x2b')]['hasOwnProperty'](_0xe517('0x8b'))){_0xc9b11d[_0xe517('0x8c')]=qs[_0xe517('0x8c')](_0x3d8fee['query']['limit']);_0xc9b11d['offset']=qs[_0xe517('0x13')](_0x3d8fee[_0xe517('0x2b')][_0xe517('0x13')]);}_0xc9b11d[_0xe517('0x85')]=qs['sort'](_0x3d8fee['query'][_0xe517('0x86')]);_0xc9b11d['where']=qs[_0xe517('0x81')](_[_0xe517('0x87')](_0x3d8fee[_0xe517('0x2b')],_0xee5167[_0xe517('0x81')]));_0xc9b11d['where'][_0xe517('0xa3')]=_0x168956['id'];if(_0x3d8fee[_0xe517('0x2b')][_0xe517('0x88')]){_0xc9b11d[_0xe517('0x63')]=_[_0xe517('0x37')](_0xc9b11d['where'],{'$or':_[_0xe517('0x72')](_0xc9b11d[_0xe517('0x84')],function(_0x1af322){var _0x8d7f59={};_0x8d7f59[_0x1af322]={'$like':'%'+_0x3d8fee['query']['filter']+'%'};return _0x8d7f59;})});}_0xc9b11d=_[_0xe517('0x37')]({},_0xc9b11d,_0x3d8fee[_0xe517('0x89')]);return db[_0xe517('0x3f')][_0xe517('0x14')]({'where':_0xc9b11d[_0xe517('0x63')]})[_0xe517('0x19')](function(_0x37ffbf){_0x182905[_0xe517('0x14')]=_0x37ffbf;if(_0x3d8fee['query'][_0xe517('0xa4')]){_0xc9b11d['include']=[{'all':!![]}];}return db[_0xe517('0x3f')][_0xe517('0x2e')](_0xc9b11d);})[_0xe517('0x19')](function(_0x27f9c7){_0x182905[_0xe517('0xa5')]=_0x27f9c7;return _0x182905;});}})['then'](respondWithFilteredResult(_0x33deb0,_0xc9b11d))['catch'](handleError(_0x33deb0,null));};exports[_0xe517('0xa6')]=function(_0x3b9752,_0x12e6be){var _0x1b9cb={'raw':!![],'where':{}};var _0x1a5f88={};var _0x217988={'count':0x0,'rows':[]};return db[_0xe517('0x23')][_0xe517('0x7d')]({'where':{'id':_0x3b9752[_0xe517('0x24')]['id']}})['then'](handleEntityNotFound(_0x12e6be,null))[_0xe517('0x19')](function(_0x3934a5){if(_0x3934a5){_0x1a5f88[_0xe517('0x7e')]=_[_0xe517('0x26')](db[_0xe517('0x4f')][_0xe517('0x80')]);_0x1a5f88['query']=_[_0xe517('0x26')](_0x3b9752[_0xe517('0x2b')]);_0x1a5f88[_0xe517('0x81')]=_[_0xe517('0x82')](_0x1a5f88[_0xe517('0x7e')],_0x1a5f88['query']);_0x1b9cb[_0xe517('0x84')]=_[_0xe517('0x82')](_0x1a5f88['model'],qs['fields'](_0x3b9752[_0xe517('0x2b')][_0xe517('0x83')]));_0x1b9cb[_0xe517('0x84')]=_0x1b9cb[_0xe517('0x84')][_0xe517('0x27')]?_0x1b9cb[_0xe517('0x84')]:_0x1a5f88[_0xe517('0x7e')];if(!_0x3b9752[_0xe517('0x2b')][_0xe517('0x35')](_0xe517('0x8b'))){_0x1b9cb[_0xe517('0x8c')]=qs['limit'](_0x3b9752['query'][_0xe517('0x8c')]);_0x1b9cb[_0xe517('0x13')]=qs['offset'](_0x3b9752[_0xe517('0x2b')]['offset']);}_0x1b9cb[_0xe517('0x85')]=qs[_0xe517('0x86')](_0x3b9752[_0xe517('0x2b')][_0xe517('0x86')]);_0x1b9cb[_0xe517('0x63')]=qs['filters'](_[_0xe517('0x87')](_0x3b9752[_0xe517('0x2b')],_0x1a5f88[_0xe517('0x81')]));_0x1b9cb['where'][_0xe517('0xa3')]=_0x3934a5['id'];if(_0x3b9752[_0xe517('0x2b')][_0xe517('0x88')]){_0x1b9cb['where']=_[_0xe517('0x37')](_0x1b9cb[_0xe517('0x63')],{'$or':_[_0xe517('0x72')](_0x1b9cb[_0xe517('0x84')],function(_0x5d6ff9){var _0x523cc0={};_0x523cc0[_0x5d6ff9]={'$like':'%'+_0x3b9752['query']['filter']+'%'};return _0x523cc0;})});}_0x1b9cb=_[_0xe517('0x37')]({},_0x1b9cb,_0x3b9752[_0xe517('0x89')]);return db['CmHopperHistory'][_0xe517('0x14')]({'where':_0x1b9cb[_0xe517('0x63')]})[_0xe517('0x19')](function(_0x442538){_0x217988['count']=_0x442538;if(_0x3b9752['query'][_0xe517('0xa4')]){_0x1b9cb[_0xe517('0xa7')]=[{'all':!![]}];}return db[_0xe517('0x4f')][_0xe517('0x2e')](_0x1b9cb);})[_0xe517('0x19')](function(_0x247d8f){_0x217988[_0xe517('0xa5')]=_0x247d8f;return _0x217988;});}})[_0xe517('0x19')](respondWithFilteredResult(_0x12e6be,_0x1b9cb))[_0xe517('0x36')](handleError(_0x12e6be,null));};exports[_0xe517('0xa8')]=function(_0x11a5ba,_0x5738c8){var _0x149304={'raw':!![],'where':{}};var _0x113aa9={};var _0x204ae={'count':0x0,'rows':[]};return db[_0xe517('0x23')]['findOne']({'where':{'id':_0x11a5ba[_0xe517('0x24')]['id']}})['then'](handleEntityNotFound(_0x5738c8,null))['then'](function(_0x231515){if(_0x231515){_0x113aa9['model']=_[_0xe517('0x26')](db[_0xe517('0x4e')]['rawAttributes']);_0x113aa9[_0xe517('0x2b')]=_['keys'](_0x11a5ba[_0xe517('0x2b')]);_0x113aa9[_0xe517('0x81')]=_[_0xe517('0x82')](_0x113aa9[_0xe517('0x7e')],_0x113aa9[_0xe517('0x2b')]);_0x149304[_0xe517('0x84')]=_[_0xe517('0x82')](_0x113aa9[_0xe517('0x7e')],qs[_0xe517('0x83')](_0x11a5ba['query'][_0xe517('0x83')]));_0x149304[_0xe517('0x84')]=_0x149304[_0xe517('0x84')][_0xe517('0x27')]?_0x149304['attributes']:_0x113aa9['model'];if(!_0x11a5ba[_0xe517('0x2b')][_0xe517('0x35')](_0xe517('0x8b'))){_0x149304[_0xe517('0x8c')]=qs[_0xe517('0x8c')](_0x11a5ba[_0xe517('0x2b')]['limit']);_0x149304[_0xe517('0x13')]=qs[_0xe517('0x13')](_0x11a5ba[_0xe517('0x2b')][_0xe517('0x13')]);}_0x149304[_0xe517('0x85')]=qs[_0xe517('0x86')](_0x11a5ba[_0xe517('0x2b')]['sort']);_0x149304[_0xe517('0x63')]=qs['filters'](_['pick'](_0x11a5ba['query'],_0x113aa9[_0xe517('0x81')]));_0x149304['where'][_0xe517('0xa3')]=_0x231515['id'];if(_0x11a5ba[_0xe517('0x2b')][_0xe517('0x88')]){_0x149304[_0xe517('0x63')]=_[_0xe517('0x37')](_0x149304[_0xe517('0x63')],{'$or':_[_0xe517('0x72')](_0x149304[_0xe517('0x84')],function(_0xe76985){var _0x46420f={};_0x46420f[_0xe76985]={'$like':'%'+_0x11a5ba[_0xe517('0x2b')][_0xe517('0x88')]+'%'};return _0x46420f;})});}_0x149304=_[_0xe517('0x37')]({},_0x149304,_0x11a5ba['options']);return db[_0xe517('0x4e')]['count']({'where':_0x149304[_0xe517('0x63')]})[_0xe517('0x19')](function(_0x5389be){_0x204ae[_0xe517('0x14')]=_0x5389be;if(_0x11a5ba[_0xe517('0x2b')][_0xe517('0xa4')]){_0x149304[_0xe517('0xa7')]=[{'all':!![]}];}return db[_0xe517('0x4e')][_0xe517('0x2e')](_0x149304);})[_0xe517('0x19')](function(_0x963f7e){_0x204ae['rows']=_0x963f7e;return _0x204ae;});}})[_0xe517('0x19')](respondWithFilteredResult(_0x5738c8,_0x149304))[_0xe517('0x36')](handleError(_0x5738c8,null));};exports[_0xe517('0xa9')]=function(_0x17a460,_0x286c8c){var _0x4ee014={'raw':!![],'where':{}};var _0x394b83={};var _0x2770ce={'count':0x0,'rows':[]};return db['CmContact'][_0xe517('0x7d')]({'where':{'id':_0x17a460['params']['id']}})[_0xe517('0x19')](handleEntityNotFound(_0x286c8c,null))[_0xe517('0x19')](function(_0x276dfd){if(_0x276dfd){_0x394b83['model']=_[_0xe517('0x26')](db[_0xe517('0x56')][_0xe517('0x80')]);_0x394b83[_0xe517('0x2b')]=_['keys'](_0x17a460[_0xe517('0x2b')]);_0x394b83[_0xe517('0x81')]=_[_0xe517('0x82')](_0x394b83[_0xe517('0x7e')],_0x394b83[_0xe517('0x2b')]);_0x4ee014[_0xe517('0x84')]=_['intersection'](_0x394b83[_0xe517('0x7e')],qs[_0xe517('0x83')](_0x17a460[_0xe517('0x2b')][_0xe517('0x83')]));_0x4ee014['attributes']=_0x4ee014[_0xe517('0x84')][_0xe517('0x27')]?_0x4ee014['attributes']:_0x394b83['model'];if(!_0x17a460[_0xe517('0x2b')]['hasOwnProperty']('nolimit')){_0x4ee014[_0xe517('0x8c')]=qs[_0xe517('0x8c')](_0x17a460['query'][_0xe517('0x8c')]);_0x4ee014[_0xe517('0x13')]=qs[_0xe517('0x13')](_0x17a460[_0xe517('0x2b')][_0xe517('0x13')]);}_0x4ee014[_0xe517('0x85')]=qs['sort'](_0x17a460[_0xe517('0x2b')][_0xe517('0x86')]);_0x4ee014['where']=qs[_0xe517('0x81')](_[_0xe517('0x87')](_0x17a460[_0xe517('0x2b')],_0x394b83['filters']));_0x4ee014[_0xe517('0x63')][_0xe517('0xa3')]=_0x276dfd['id'];if(_0x17a460[_0xe517('0x2b')][_0xe517('0x88')]){_0x4ee014[_0xe517('0x63')]=_[_0xe517('0x37')](_0x4ee014[_0xe517('0x63')],{'$or':_[_0xe517('0x72')](_0x4ee014['attributes'],function(_0x238302){var _0x2902b0={};_0x2902b0[_0x238302]={'$like':'%'+_0x17a460[_0xe517('0x2b')]['filter']+'%'};return _0x2902b0;})});}_0x4ee014=_[_0xe517('0x37')]({},_0x4ee014,_0x17a460['options']);return db[_0xe517('0x56')][_0xe517('0x14')]({'where':_0x4ee014[_0xe517('0x63')]})['then'](function(_0x66824f){_0x2770ce[_0xe517('0x14')]=_0x66824f;if(_0x17a460[_0xe517('0x2b')][_0xe517('0xa4')]){_0x4ee014[_0xe517('0xa7')]=[{'all':!![]}];}return db[_0xe517('0x56')][_0xe517('0x2e')](_0x4ee014);})[_0xe517('0x19')](function(_0x524cb4){_0x2770ce['rows']=_0x524cb4;return _0x2770ce;});}})['then'](respondWithFilteredResult(_0x286c8c,_0x4ee014))[_0xe517('0x36')](handleError(_0x286c8c,null));};exports[_0xe517('0xaa')]=function(_0x556528,_0x5a4299){try{if(!_0x556528[_0xe517('0x38')][_0xe517('0x64')]){throw new Error(_0xe517('0xab'));}if(!_0x556528[_0xe517('0x38')][_0xe517('0xac')]){throw new Error(_0xe517('0xad'));}if(!_0x556528[_0xe517('0x38')][_0xe517('0xae')]){throw new Error('No\x20association\x20values\x20specified!');}if(!_0x556528['body']['socket_timestamp']){throw new Error(_0xe517('0xaf'));}var _0x30bba3=_0x556528[_0xe517('0x38')][_0xe517('0xac')][_0xe517('0xb0')](',');var _0x1448e5=_0x556528[_0xe517('0x38')][_0xe517('0xae')][_0xe517('0xb0')](',');if(!_0x30bba3['length']||!_0x1448e5['length']||_0x30bba3[_0xe517('0x27')]!==_0x1448e5['length']){throw new Error(_0xe517('0xb1'));}_0x556528[_0xe517('0x38')][_0xe517('0x83')]=_[_0xe517('0xb2')](_0x30bba3,_0x1448e5);if(!_0x556528['body']['fields'][_0xe517('0x7c')]){throw new Error(_0xe517('0xb3'));}if(!_0x556528[_0xe517('0x38')][_0xe517('0x83')][_0xe517('0xb4')]){throw new Error(_0xe517('0xb5'));}var _0x1ff733=path['join'](config[_0xe517('0xb6')],_0xe517('0xb7'),_0x556528[_0xe517('0xb8')][_0xe517('0xb9')]);fs['chmodSync'](_0x1ff733,parseInt(_0xe517('0xba'),0x8));var _0x441978=require(_0xe517('0xbb'))[_0xe517('0xbc')](path[_0xe517('0x3c')](__dirname,_0xe517('0xbd')),[_0x1ff733,_0x556528[_0xe517('0x38')][_0xe517('0xac')],_0x556528[_0xe517('0x38')]['binding_values'],_0x556528[_0xe517('0x38')]['ListId'],_0x556528[_0xe517('0x38')][_0xe517('0xbe')],_0x556528[_0xe517('0x38')][_0xe517('0x60')],_0x556528[_0xe517('0x38')][_0xe517('0xbf')]]);return _0x5a4299[_0xe517('0x15')](0xc8)['json']({'message':_0xe517('0xc0'),'pid':_0x441978[_0xe517('0xc1')]});}catch(_0x2baa17){return _0x5a4299[_0xe517('0x15')](0x1f4)[_0xe517('0x1f')](_0x2baa17);}};exports[_0xe517('0xc2')]=function(_0x37007a,_0x52d225){var _0x546273=fs[_0xe517('0xc3')](_0x37007a[_0xe517('0xb8')][_0xe517('0x3')]);Papa[_0xe517('0xc4')](_0x546273,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x1e2580){return _0x52d225[_0xe517('0x15')](0xc8)[_0xe517('0x12')]({'file':_0x37007a['file'],'fields':_0x1e2580['meta'][_0xe517('0x83')]});}});};exports[_0xe517('0xc5')]=function(_0x368aad,_0x33bfb1){return db['User'][_0xe517('0x2e')]({'raw':!![],'attributes':['id'],'where':{'role':'agent'}})['then'](function(_0x2c0237){var _0x3f1695=![];if(!_0x368aad[_0xe517('0x38')][_0xe517('0x64')]){throw new Error(_0xe517('0xab'));}if(!_0x368aad[_0xe517('0x38')][_0xe517('0xc6')][_0xe517('0x7c')]){throw new Error('No\x20phone\x20column\x20specified');}if(!_0x368aad[_0xe517('0x38')]['binding'][_0xe517('0xb4')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x368aad[_0xe517('0x38')][_0xe517('0xbf')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x1a3723=require(_0xe517('0xbb'))[_0xe517('0xbc')](path[_0xe517('0x3c')](__dirname,_0xe517('0xc7')),[_0x368aad['params']['id'],JSON[_0xe517('0xc8')](_0x368aad[_0xe517('0x38')]),JSON[_0xe517('0xc8')](_0x2c0237)]);_0x1a3723['on']('message',function(){_0x3f1695=!![];return _0x33bfb1['status'](0xc8)['json']({'message':'start\x20child\x20process\x20correctly!','pid':_0x1a3723['pid']});});_0x1a3723['on'](_0xe517('0xc9'),function(_0x4d6846){if(_0x4d6846&&!_0x3f1695){return _0x33bfb1[_0xe517('0x15')](0x1f4)[_0xe517('0x12')]({'message':_0xe517('0xca'),'pid':_0x1a3723[_0xe517('0xc1')]});}});})[_0xe517('0x36')](handleError(_0x33bfb1,null));};exports[_0xe517('0xcb')]=function(_0x327eb8,_0x24b63a){return db[_0xe517('0xcc')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0xe517('0xcd')}})[_0xe517('0x19')](function(_0x44f30c){var _0x5409e3=![];if(!_0x327eb8[_0xe517('0x38')][_0xe517('0x64')]){throw new Error('No\x20ListId\x20specified');}if(!_0x327eb8[_0xe517('0x38')][_0xe517('0xc6')][_0xe517('0x7c')]){throw new Error(_0xe517('0xb3'));}if(!_0x327eb8[_0xe517('0x38')][_0xe517('0xc6')][_0xe517('0xb4')]){throw new Error(_0xe517('0xb5'));}if(!_0x327eb8[_0xe517('0x38')][_0xe517('0xbf')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x69948a=require(_0xe517('0xbb'))[_0xe517('0xbc')](path[_0xe517('0x3c')](__dirname,'../../components/import/cm/csvUpdates'),[_0x327eb8[_0xe517('0x24')]['id'],JSON[_0xe517('0xc8')](_0x327eb8[_0xe517('0x38')]),JSON[_0xe517('0xc8')](_0x44f30c)]);_0x69948a['on']('message',function(){_0x5409e3=!![];return _0x24b63a[_0xe517('0x15')](0xc8)[_0xe517('0x12')]({'message':_0xe517('0xce'),'pid':_0x69948a[_0xe517('0xc1')]});});_0x69948a['on'](_0xe517('0xc9'),function(_0x33615a){if(_0x33615a&&!_0x5409e3){return _0x24b63a[_0xe517('0x15')](0x1f4)[_0xe517('0x12')]({'message':_0xe517('0xca'),'pid':_0x69948a[_0xe517('0xc1')]});}});})[_0xe517('0x36')](handleError(_0x24b63a,null));};exports['getJourney']=function(_0x54220d,_0x5a7dcd){var _0xa39925=[_0xe517('0xcf'),_0xe517('0xd0'),_0xe517('0xd1'),_0xe517('0xd2'),_0xe517('0xd3'),'whatsapp','voice'];var _0xef6dc5={'offset':0x0,'order':qs[_0xe517('0x86')](_0xe517('0xd4'))},_0x2f6670={'count':0x0,'rows':[]};Promise[_0xe517('0xd5')]()[_0xe517('0x19')](function(){if(_0x54220d['query']['channel']){if(!_[_0xe517('0xd6')](_0xa39925,_0x54220d[_0xe517('0x2b')][_0xe517('0xd7')]['toLowerCase']())){throw new Error(_0xe517('0xd8'));}_0xa39925=[_0x54220d['query']['channel']['toLowerCase']()];}if(_0x54220d[_0xe517('0x2b')][_0xe517('0xd9')]){try{var _0x58f8db=JSON[_0xe517('0xc4')](_0x54220d[_0xe517('0x2b')]['range']);if(!moment(_0x58f8db[_0xe517('0x3e')])[_0xe517('0xda')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x58f8db['to'])['isValid']()){throw new Error('Invalid\x20date\x20for\x20range\x20to\x20filter');}}catch(_0x540bcf){throw new Error('Invalid\x20createdAt\x20filter');}}if(!_0x54220d['query']['hasOwnProperty']('nolimit')){_0xef6dc5[_0xe517('0x8c')]=qs['limit'](_0x54220d['query'][_0xe517('0x8c')]||0xa);_0xef6dc5['offset']=qs[_0xe517('0x13')](_0x54220d[_0xe517('0x2b')]['offset']);}var _0xa566f0=_0xa39925['map'](function(_0x24b3da){if(_0x24b3da===_0xe517('0xdb')){var _0x13d05c={'attributes':['id',_0xe517('0xdc'),_0xe517('0x31'),_0xe517('0xdd'),'destination','callerid',_0xe517('0xde'),_0xe517('0xdf'),'duration','note',_0xe517('0xe0'),_0xe517('0xe1'),_0xe517('0xe2'),_0xe517('0xe3'),'UserId'],'where':{'ContactId':_0x54220d[_0xe517('0x24')]['id']},'include':[{'model':db[_0xe517('0xcc')],'as':'User','attributes':['id',_0xe517('0x1e'),_0xe517('0xe4'),_0xe517('0x30')]}],'order':[['createdAt',_0xe517('0xe5')]]};if(_0x54220d[_0xe517('0x2b')][_0xe517('0xd9')]){_0x13d05c[_0xe517('0x63')]['createdAt']={'$gte':_0x58f8db[_0xe517('0x3e')],'$lte':_0x58f8db['to']};}return db['VoiceCallReport'][_0xe517('0xe6')](_0x13d05c)[_0xe517('0x19')](function(_0x9cbe5){_0x2f6670[_0xe517('0x14')]+=_0x9cbe5[_0xe517('0x14')];return _[_0xe517('0x72')](_0x9cbe5[_0xe517('0xa5')],function(_0x22c8a9){var _0x1d5da6=_0x22c8a9['get']({'plain':!![]});_0x1d5da6[_0xe517('0xd7')]=_0x24b3da;if(_0x1d5da6['User']){_0x1d5da6[_0xe517('0xcc')]={'id':_0x1d5da6[_0xe517('0xcc')]['id'],'name':_0x1d5da6[_0xe517('0xcc')][_0xe517('0x1e')],'fullname':_0x1d5da6['User'][_0xe517('0xe4')],'alias':_0x1d5da6[_0xe517('0xcc')][_0xe517('0x30')]};}return _0x1d5da6;});});}else{var _0x197007=_[_0xe517('0xe7')](_0x24b3da)+(_0x24b3da===_0xe517('0xd0')?'Website':_0xe517('0xe8'));var _0x23cda1={'attributes':['id',_0xe517('0xe9'),'closedAt','createdAt',_0xe517('0xea'),_0xe517('0xeb'),_0xe517('0xec'),_0xe517('0xed'),'UserId',_0x197007+'Id'],'where':{'ContactId':_0x54220d[_0xe517('0x24')]['id']},'include':[{'model':db[_0x197007],'as':'Account','attributes':['id',_0xe517('0x1e'),_0xe517('0xee')]},{'model':db[_0xe517('0xcc')],'as':_0xe517('0xef'),'attributes':['id','name',_0xe517('0xe4')]},{'model':db['Tag'],'as':_0xe517('0x6b'),'attributes':['id',_0xe517('0x1e'),_0xe517('0xf0')],'through':{'attributes':[]}}],'order':[[_0xe517('0xe0'),'DESC']]};if(_0x54220d[_0xe517('0x2b')][_0xe517('0xd9')]){_0x23cda1[_0xe517('0x63')][_0xe517('0xe0')]={'$gte':_0x58f8db[_0xe517('0x3e')],'$lte':_0x58f8db['to']};}switch(_0x24b3da){case'chat':_0x23cda1[_0xe517('0x84')][_0xe517('0x62')]('browserName',_0xe517('0xf1'),'customerPort',_0xe517('0xf2'),'osName',_0xe517('0xf3'),_0xe517('0xf4'),_0xe517('0xf5'),_0xe517('0xf6'));break;case _0xe517('0xcf'):_0x23cda1[_0xe517('0x84')][_0xe517('0x62')](_0xe517('0xf7'),_0xe517('0xf8'));break;case'openchannel':_0x23cda1[_0xe517('0x84')][_0xe517('0x62')](_0xe517('0xf9'),_0xe517('0xfa'));break;}return db[_[_0xe517('0xe7')](_0x24b3da)+'Interaction'][_0xe517('0xe6')](_0x23cda1)[_0xe517('0x19')](function(_0x893311){_0x2f6670['count']+=_0x893311[_0xe517('0x14')];return _[_0xe517('0x72')](_0x893311[_0xe517('0xa5')],function(_0xe525f3){var _0x4961f0=_0xe525f3[_0xe517('0x39')]({'plain':!![]});_0x4961f0['channel']=_0x24b3da;if(_0x4961f0[_0xe517('0xef')]){_0x4961f0[_0xe517('0xef')]={'id':_0x4961f0[_0xe517('0xef')]['id'],'name':_0x4961f0[_0xe517('0xef')][_0xe517('0x1e')],'fullname':_0x4961f0[_0xe517('0xef')][_0xe517('0xe4')]};}return _0x4961f0;});});}});return Promise[_0xe517('0x68')](_0xa566f0);})[_0xe517('0x19')](function(_0x3d3bcb){return _(_0x3d3bcb)[_0xe517('0xfb')]()[_0xe517('0xfc')](_0xe517('0xe0'))['reverse']()[_0xe517('0xfd')]();})[_0xe517('0x19')](function(_0x36190c){_0x2f6670[_0xe517('0xa5')]=_0xef6dc5[_0xe517('0x8c')]?_0x36190c[_0xe517('0xfe')](_0xef6dc5[_0xe517('0x13')],_0xef6dc5['offset']+_0xef6dc5[_0xe517('0x8c')]):_0x36190c;return _0x2f6670;})['then'](respondWithFilteredResult(_0x5a7dcd,_0xef6dc5))[_0xe517('0x36')](handleError(_0x5a7dcd,null));};
\ No newline at end of file
index aaf83b0..9c764b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ede=['update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','CmContact','setMaxListeners','save'];(function(_0x36c158,_0x560d11){var _0x493493=function(_0x5c078b){while(--_0x5c078b){_0x36c158['push'](_0x36c158['shift']());}};_0x493493(++_0x560d11);}(_0x7ede,0x1e5));var _0xe7ed=function(_0x53abe5,_0x33a9e5){_0x53abe5=_0x53abe5-0x0;var _0xc1c37e=_0x7ede[_0x53abe5];return _0xc1c37e;};'use strict';var EventEmitter=require(_0xe7ed('0x0'));var CmContact=require(_0xe7ed('0x1'))['db'][_0xe7ed('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents[_0xe7ed('0x3')](0x0);var events={'afterCreate':_0xe7ed('0x4'),'afterUpdate':_0xe7ed('0x5'),'afterDestroy':'remove'};function emitEvent(_0x175473){return function(_0x208a4b,_0x1d7dc9,_0x1b7380){CmContactEvents[_0xe7ed('0x6')](_0x175473+':'+_0x208a4b['id'],_0x208a4b);CmContactEvents[_0xe7ed('0x6')](_0x175473,_0x208a4b);_0x1b7380(null);};}for(var e in events){if(events[_0xe7ed('0x7')](e)){var event=events[e];CmContact[_0xe7ed('0x8')](e,emitEvent(event));}}module[_0xe7ed('0x9')]=CmContactEvents;
\ No newline at end of file
+var _0xff01=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','update','remove'];(function(_0x18bdb2,_0x35073d){var _0x127f4e=function(_0x3f3340){while(--_0x3f3340){_0x18bdb2['push'](_0x18bdb2['shift']());}};_0x127f4e(++_0x35073d);}(_0xff01,0xec));var _0x1ff0=function(_0x1e1707,_0x11f6ac){_0x1e1707=_0x1e1707-0x0;var _0x10c652=_0xff01[_0x1e1707];return _0x10c652;};'use strict';var EventEmitter=require(_0x1ff0('0x0'));var CmContact=require(_0x1ff0('0x1'))['db']['CmContact'];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x1ff0('0x2'),'afterDestroy':_0x1ff0('0x3')};function emitEvent(_0x40b89f){return function(_0x317ce1,_0x5e35e7,_0x5685ea){CmContactEvents['emit'](_0x40b89f+':'+_0x317ce1['id'],_0x317ce1);CmContactEvents[_0x1ff0('0x4')](_0x40b89f,_0x317ce1);_0x5685ea(null);};}for(var e in events){if(events[_0x1ff0('0x5')](e)){var event=events[e];CmContact[_0x1ff0('0x6')](e,emitEvent(event));}}module[_0x1ff0('0x7')]=CmContactEvents;
\ No newline at end of file
index fd54d6c..d16dd30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd13=['findAll','outbound','dialCheckDuplicateType','Lists','always','onlyIfOpen','CmList','length','CmHopperBlack','error','message','BlackLists','cmContact,\x20%s,\x20%s','List\x20not\x20found','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','all','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','util','api','moment','path','rimraf','./cmContact.attributes','exports','define','phone','fti_cm_contacts','firstName','lastName','mobile','utf8mb4','models','get','cmContact','afterCreate','inspect','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','isNil','dialTimezone','VoiceQueue','findOne','then','timezones','utcOffset','add','CmHopper','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','callbackUniqueid','catch','ret','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','Campaign','minutes','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'];(function(_0x102d73,_0x356571){var _0x185ef9=function(_0x89bc24){while(--_0x89bc24){_0x102d73['push'](_0x102d73['shift']());}};_0x185ef9(++_0x356571);}(_0xbd13,0x17f));var _0x3bd1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbd13[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3bd1('0x0'));var util=require(_0x3bd1('0x1'));var logger=require('../../config/logger')(_0x3bd1('0x2'));var moment=require(_0x3bd1('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x3bd1('0x4'));var rimraf=require(_0x3bd1('0x5'));var config=require('../../config/environment');var shared=require('../../config/environment/shared');var attributes=require(_0x3bd1('0x6'));module[_0x3bd1('0x7')]=function(_0x4d77dd,_0x57ca3d){return _0x4d77dd[_0x3bd1('0x8')]('CmContact',attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x3bd1('0x9'),'fields':[_0x3bd1('0x9')]},{'name':_0x3bd1('0xa'),'fields':[_0x3bd1('0xb'),_0x3bd1('0xc'),_0x3bd1('0x9'),_0x3bd1('0xd'),'fax','email'],'type':'FULLTEXT'}],'timestamps':!![],'charset':_0x3bd1('0xe'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x5958e1,_0x13c8ec,_0x5bfc52){var _0x58f908=_0x4d77dd[_0x3bd1('0xf')];var _0x5cecd1=_0x5958e1[_0x3bd1('0x10')]({'plain':!![]});function _0x3fcb83(){return function(_0x314c9f){logger['error'](_0x3bd1('0x11'),_0x3bd1('0x12'),util[_0x3bd1('0x13')](_0x314c9f,{'showHidden':![],'depth':null}));};}function _0x5af7b9(_0x3d7706,_0x1a0554){var _0x2fa89c=_0x1a0554['scheduledat']?_0x1a0554[_0x3bd1('0x14')]:moment()[_0x3bd1('0x15')](_0x3bd1('0x16'));return new BPromise(function(_0xe07109,_0x483ec0){if(_[_0x3bd1('0x17')](_0x1a0554[_0x3bd1('0x18')])){_0xe07109({'ret':_0x2fa89c});}else{_0x58f908[_0x3bd1('0x19')][_0x3bd1('0x1a')]({'where':{'id':_0x3d7706['id']}})[_0x3bd1('0x1b')](function(_0x52f7b3){if(!_[_0x3bd1('0x17')](_0x52f7b3)){var _0x39ddc0=_0x52f7b3[_0x3bd1('0x18')];if(!_[_0x3bd1('0x17')](_0x39ddc0)){var _0x45c4b3=shared[_0x3bd1('0x1c')];var _0x70f3cf=_0x45c4b3[_0x39ddc0];var _0x2084e3=_0x45c4b3[_0x1a0554[_0x3bd1('0x18')]];if(!_[_0x3bd1('0x17')](_0x70f3cf)&&!_['isNil'](_0x2084e3)){var _0x768aec=_0x70f3cf['utcOffset']-_0x2084e3[_0x3bd1('0x1d')];_0x2fa89c=_0x1a0554['scheduledat']?_0x1a0554[_0x3bd1('0x14')]:moment();var _0x3cba3a=moment(_0x2fa89c)[_0x3bd1('0x1e')](_0x768aec,'minutes');_0xe07109({'ret':_0x3cba3a['format']('YYYY-MM-DD\x20HH:mm:ss')});}else _0xe07109({'ret':_0x2fa89c});}else _0xe07109({'ret':_0x2fa89c});}else{_0xe07109({'ret':_0x2fa89c});}});}});return 0xa;}var _0x2a6324=function(_0x16af4f){return new BPromise(function(_0x3f9569,_0x346f66){_0x5af7b9(_0x16af4f,_0x5cecd1)[_0x3bd1('0x1b')](function(_0x1a5893){_0x5cecd1[_0x3bd1('0x14')]=_0x1a5893['ret'];_0x58f908[_0x3bd1('0x1f')]['findOne']({'where':{'phone':_0x5cecd1[_0x3bd1('0x9')],'VoiceQueueId':_0x16af4f['id']}})[_0x3bd1('0x1b')](function(_0x2db36d){if(!_['isNil'](_0x2db36d)){throw new Error(_0x3bd1('0x20')+_0x5cecd1['phone']+_0x3bd1('0x21')+_0x16af4f['id']);}return _0x58f908['CmHopper'][_0x3bd1('0x22')]({'phone':_0x5cecd1['phone'],'ContactId':_0x5cecd1['id'],'ListId':_0x5cecd1[_0x3bd1('0x23')],'priority':_0x5cecd1[_0x3bd1('0x24')]?_0x5cecd1['priority']:0x2,'scheduledat':_0x5cecd1['scheduledat']?_0x5cecd1[_0x3bd1('0x14')]:moment()[_0x3bd1('0x15')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x5cecd1[_0x3bd1('0x25')]?!![]:![],'callbackuniqueid':_0x5cecd1[_0x3bd1('0x25')]?_0x5cecd1[_0x3bd1('0x25')]:undefined,'callbackat':_0x5cecd1[_0x3bd1('0x25')]?moment()[_0x3bd1('0x15')](_0x3bd1('0x16')):undefined,'VoiceQueueId':_0x16af4f['id']});})[_0x3bd1('0x26')](function(_0x19ac61){_0x346f66(_0x19ac61);});});});};var _0x4c5eb7=function(_0x5c2642){return new BPromise(function(_0x42ee25,_0x2edc77){_0x5af7b9(_0x5c2642,_0x5cecd1)[_0x3bd1('0x1b')](function(_0x3d1ade){_0x5cecd1[_0x3bd1('0x14')]=_0x3d1ade[_0x3bd1('0x27')];_0x58f908['CmHopper']['findOne']({'where':{'phone':_0x5cecd1['phone'],'VoiceQueueId':_0x5c2642['id']}})[_0x3bd1('0x1b')](function(_0x39b53a){if(!_[_0x3bd1('0x17')](_0x39b53a)){throw new Error(_0x3bd1('0x20')+_0x5cecd1['phone']+_0x3bd1('0x28')+_0x5c2642['id']);}return _0x58f908[_0x3bd1('0x29')][_0x3bd1('0x1a')]({'where':{'calleridnum':_0x5cecd1[_0x3bd1('0x9')],'VoiceQueueId':_0x5c2642['id']}});})['then'](function(_0x17dfa3){if(!_[_0x3bd1('0x17')](_0x17dfa3)){throw new Error(_0x3bd1('0x2a')+_0x5cecd1[_0x3bd1('0x9')]+_0x3bd1('0x2b')+_0x5c2642['id']);}return _0x58f908[_0x3bd1('0x1f')][_0x3bd1('0x22')]({'phone':_0x5cecd1[_0x3bd1('0x9')],'ContactId':_0x5cecd1['id'],'ListId':_0x5cecd1[_0x3bd1('0x23')],'priority':_0x5cecd1[_0x3bd1('0x24')]?_0x5cecd1[_0x3bd1('0x24')]:0x2,'scheduledat':_0x5cecd1[_0x3bd1('0x14')]?_0x5cecd1[_0x3bd1('0x14')]:moment()[_0x3bd1('0x15')](_0x3bd1('0x16')),'callback':_0x5cecd1[_0x3bd1('0x25')]?!![]:![],'callbackuniqueid':_0x5cecd1[_0x3bd1('0x25')]?_0x5cecd1[_0x3bd1('0x25')]:undefined,'callbackat':_0x5cecd1['callbackUniqueid']?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x5c2642['id']});})[_0x3bd1('0x26')](function(_0x291161){_0x2edc77(_0x291161);});});});};function _0x3f8656(){return function(_0x3d3f89){logger['error']('cmContact',_0x3bd1('0x12'),util[_0x3bd1('0x13')](_0x3d3f89,{'showHidden':![],'depth':null}));};}function _0x18eb02(_0x1cdb39,_0x382a67){var _0x131f2c=_0x382a67['scheduledat']?_0x382a67[_0x3bd1('0x14')]:moment()[_0x3bd1('0x15')](_0x3bd1('0x16'));return new BPromise(function(_0xe7538b,_0x1b78cc){if(_[_0x3bd1('0x17')](_0x382a67[_0x3bd1('0x18')])){_0xe7538b({'ret':_0x131f2c});}else{_0x58f908[_0x3bd1('0x2c')][_0x3bd1('0x1a')]({'where':{'id':_0x1cdb39['id']}})['then'](function(_0x378ae7){if(!_['isNil'](_0x378ae7)){var _0x454ef1=_0x378ae7[_0x3bd1('0x18')];if(!_[_0x3bd1('0x17')](_0x454ef1)){var _0x516f1e=shared[_0x3bd1('0x1c')];var _0x5d5756=_0x516f1e[_0x454ef1];var _0x52e5b4=_0x516f1e[_0x382a67[_0x3bd1('0x18')]];if(!_[_0x3bd1('0x17')](_0x5d5756)&&!_[_0x3bd1('0x17')](_0x52e5b4)){var _0x6ffeac=_0x5d5756[_0x3bd1('0x1d')]-_0x52e5b4[_0x3bd1('0x1d')];_0x131f2c=_0x382a67[_0x3bd1('0x14')]?_0x382a67[_0x3bd1('0x14')]:moment();var _0x307556=moment(_0x131f2c)[_0x3bd1('0x1e')](_0x6ffeac,_0x3bd1('0x2d'));_0xe7538b({'ret':_0x307556[_0x3bd1('0x15')](_0x3bd1('0x16'))});}else _0xe7538b({'ret':_0x131f2c});}else _0xe7538b({'ret':_0x131f2c});}else{_0xe7538b({'ret':_0x131f2c});}});}});return 0xa;}var _0x187ec4=function(_0x3b36c4){return new BPromise(function(_0x8d12bf,_0x35fd90){_0x18eb02(_0x3b36c4,_0x5cecd1)[_0x3bd1('0x1b')](function(_0x5be8ef){_0x5cecd1[_0x3bd1('0x14')]=_0x5be8ef[_0x3bd1('0x27')];_0x58f908['CmHopper'][_0x3bd1('0x1a')]({'where':{'phone':_0x5cecd1[_0x3bd1('0x9')],'CampaignId':_0x3b36c4['id']}})[_0x3bd1('0x1b')](function(_0x21b84c){if(!_['isNil'](_0x21b84c)){throw new Error('cmContact,\x20afterCreate\x20'+_0x5cecd1['phone']+_0x3bd1('0x2e')+_0x3b36c4['id']);}return _0x58f908[_0x3bd1('0x1f')][_0x3bd1('0x22')]({'phone':_0x5cecd1[_0x3bd1('0x9')],'ContactId':_0x5cecd1['id'],'ListId':_0x5cecd1[_0x3bd1('0x23')],'priority':_0x5cecd1[_0x3bd1('0x24')]?_0x5cecd1['priority']:0x2,'scheduledat':_0x5cecd1['scheduledat']?_0x5cecd1['scheduledat']:moment()[_0x3bd1('0x15')](_0x3bd1('0x16')),'callback':_0x5cecd1['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x5cecd1[_0x3bd1('0x25')]?_0x5cecd1['callbackUniqueid']:undefined,'callbackat':_0x5cecd1[_0x3bd1('0x25')]?moment()[_0x3bd1('0x15')](_0x3bd1('0x16')):undefined,'CampaignId':_0x3b36c4['id']});})['catch'](function(_0x2b837f){_0x35fd90(_0x2b837f);});});});};var _0x33b963=function(_0x36516a){return new BPromise(function(_0x306d5e,_0x459aee){_0x18eb02(_0x36516a,_0x5cecd1)['then'](function(_0xa6fb6f){_0x5cecd1[_0x3bd1('0x14')]=_0xa6fb6f[_0x3bd1('0x27')];_0x58f908[_0x3bd1('0x1f')][_0x3bd1('0x1a')]({'where':{'phone':_0x5cecd1[_0x3bd1('0x9')],'CampaignId':_0x36516a['id']}})[_0x3bd1('0x1b')](function(_0x316fb7){if(!_[_0x3bd1('0x17')](_0x316fb7)){throw new Error(_0x3bd1('0x20')+_0x5cecd1['phone']+_0x3bd1('0x2f')+_0x36516a['id']);}return _0x58f908[_0x3bd1('0x29')][_0x3bd1('0x1a')]({'where':{'calleridnum':_0x5cecd1['phone'],'CampaignId':_0x36516a['id']}});})[_0x3bd1('0x1b')](function(_0x3150e3){if(!_[_0x3bd1('0x17')](_0x3150e3)){throw new Error(_0x3bd1('0x2a')+_0x5cecd1[_0x3bd1('0x9')]+_0x3bd1('0x30')+_0x36516a['id']);}return _0x58f908[_0x3bd1('0x1f')][_0x3bd1('0x22')]({'phone':_0x5cecd1[_0x3bd1('0x9')],'ContactId':_0x5cecd1['id'],'ListId':_0x5cecd1[_0x3bd1('0x23')],'priority':_0x5cecd1[_0x3bd1('0x24')]?_0x5cecd1[_0x3bd1('0x24')]:0x2,'scheduledat':_0x5cecd1['scheduledat']?_0x5cecd1['scheduledat']:moment()[_0x3bd1('0x15')](_0x3bd1('0x16')),'callback':_0x5cecd1[_0x3bd1('0x25')]?!![]:![],'callbackuniqueid':_0x5cecd1['callbackUniqueid']?_0x5cecd1[_0x3bd1('0x25')]:undefined,'callbackat':_0x5cecd1[_0x3bd1('0x25')]?moment()['format'](_0x3bd1('0x16')):undefined,'CampaignId':_0x36516a['id']});})[_0x3bd1('0x26')](function(_0x3c80fe){_0x459aee(_0x3c80fe);});});});};if(_0x5cecd1[_0x3bd1('0x23')]){_0x58f908[_0x3bd1('0x19')][_0x3bd1('0x31')]({'where':{'type':_0x3bd1('0x32')},'attributes':['id',_0x3bd1('0x33'),_0x3bd1('0x18')],'include':[{'model':_0x58f908['CmList'],'as':_0x3bd1('0x34'),'where':{'id':_0x5cecd1[_0x3bd1('0x23')]}}]})[_0x3bd1('0x1b')](function(_0x3df384){if(_0x3df384){var _0x77246a=[];for(var _0x3e9e15=0x0,_0x54def1;_0x3e9e15<_0x3df384['length'];_0x3e9e15+=0x1){_0x54def1=_0x3df384[_0x3e9e15][_0x3bd1('0x10')]({'plain':!![]});switch(_0x54def1['dialCheckDuplicateType']){case _0x3bd1('0x35'):_0x4c5eb7(_0x54def1)['catch'](_0x3fcb83());break;case _0x3bd1('0x36'):_0x2a6324(_0x54def1)['catch'](_0x3fcb83());break;default:_0x18eb02(_0x54def1,_0x5cecd1)[_0x3bd1('0x1b')](function(_0x5ee602){_0x5cecd1['scheduledat']=_0x5ee602[_0x3bd1('0x27')];_0x58f908[_0x3bd1('0x1f')][_0x3bd1('0x22')]({'phone':_0x5cecd1['phone'],'ContactId':_0x5cecd1['id'],'ListId':_0x5cecd1[_0x3bd1('0x23')],'scheduledat':_0x5cecd1[_0x3bd1('0x14')]?_0x5cecd1[_0x3bd1('0x14')]:moment()[_0x3bd1('0x15')](_0x3bd1('0x16')),'priority':_0x5cecd1[_0x3bd1('0x24')]?_0x5cecd1['priority']:0x2,'callback':_0x5cecd1['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x5cecd1['callbackUniqueid']?_0x5cecd1[_0x3bd1('0x25')]:undefined,'callbackat':_0x5cecd1['callbackUniqueid']?moment()[_0x3bd1('0x15')](_0x3bd1('0x16')):undefined,'VoiceQueueId':_0x54def1['id']})[_0x3bd1('0x26')](_0x3fcb83());});}}}})[_0x3bd1('0x1b')](function(){return _0x58f908[_0x3bd1('0x19')][_0x3bd1('0x31')]({'where':{'type':_0x3bd1('0x32')},'attributes':['id'],'include':[{'model':_0x58f908[_0x3bd1('0x37')],'as':'BlackLists','where':{'id':_0x5cecd1[_0x3bd1('0x23')]}}]})[_0x3bd1('0x1b')](function(_0x34b591){if(_0x34b591){var _0x498b2b=[];for(var _0x35df0f=0x0,_0x47808a;_0x35df0f<_0x34b591[_0x3bd1('0x38')];_0x35df0f+=0x1){_0x47808a=_0x34b591[_0x35df0f]['get']({'plain':!![]});_0x58f908[_0x3bd1('0x39')]['create']({'phone':_0x5cecd1[_0x3bd1('0x9')],'ContactId':_0x5cecd1['id'],'ListId':_0x5cecd1[_0x3bd1('0x23')],'VoiceQueueId':_0x47808a['id']})['catch'](function(_0x2fbc56){logger[_0x3bd1('0x3a')]('cmContact,\x20%s,\x20%s',_0x3bd1('0x12'),_0x2fbc56[_0x3bd1('0x3b')]);});}}});})['then'](function(){return _0x58f908[_0x3bd1('0x2c')][_0x3bd1('0x31')]({'attributes':['id',_0x3bd1('0x33'),_0x3bd1('0x18')],'include':[{'model':_0x58f908['CmList'],'as':'Lists','where':{'id':_0x5cecd1['ListId']}}]})[_0x3bd1('0x1b')](function(_0x7eba46){if(_0x7eba46){var _0x5b35ca=[];for(var _0x13b922=0x0,_0x185cec;_0x13b922<_0x7eba46[_0x3bd1('0x38')];_0x13b922+=0x1){_0x185cec=_0x7eba46[_0x13b922][_0x3bd1('0x10')]({'plain':!![]});switch(_0x185cec[_0x3bd1('0x33')]){case _0x3bd1('0x35'):_0x33b963(_0x185cec)[_0x3bd1('0x26')](_0x3f8656());break;case'onlyIfOpen':_0x187ec4(_0x185cec)[_0x3bd1('0x26')](_0x3f8656());break;default:_0x58f908[_0x3bd1('0x1f')]['create']({'phone':_0x5cecd1[_0x3bd1('0x9')],'ContactId':_0x5cecd1['id'],'ListId':_0x5cecd1[_0x3bd1('0x23')],'scheduledat':_0x5cecd1[_0x3bd1('0x14')]?_0x5cecd1[_0x3bd1('0x14')]:moment()['format'](_0x3bd1('0x16')),'priority':_0x5cecd1['priority']?_0x5cecd1['priority']:0x2,'callback':_0x5cecd1[_0x3bd1('0x25')]?!![]:![],'callbackuniqueid':_0x5cecd1[_0x3bd1('0x25')]?_0x5cecd1[_0x3bd1('0x25')]:undefined,'callbackat':_0x5cecd1['callbackUniqueid']?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x185cec['id']})[_0x3bd1('0x26')](_0x3f8656());}}}});})[_0x3bd1('0x1b')](function(){return _0x58f908['Campaign']['findAll']({'attributes':['id'],'include':[{'model':_0x58f908[_0x3bd1('0x37')],'as':_0x3bd1('0x3c'),'where':{'id':_0x5cecd1[_0x3bd1('0x23')]}}]})['then'](function(_0x2d5827){if(_0x2d5827){var _0x181735=[];for(var _0x3f1c4c=0x0,_0x59b1ab;_0x3f1c4c<_0x2d5827[_0x3bd1('0x38')];_0x3f1c4c+=0x1){_0x59b1ab=_0x2d5827[_0x3f1c4c]['get']({'plain':!![]});_0x58f908['CmHopperBlack'][_0x3bd1('0x22')]({'phone':_0x5cecd1[_0x3bd1('0x9')],'ContactId':_0x5cecd1['id'],'ListId':_0x5cecd1[_0x3bd1('0x23')],'CampaignId':_0x59b1ab['id']})['catch'](function(_0x55dac6){logger['error']('cmContact,\x20%s,\x20%s',_0x3bd1('0x12'),_0x55dac6[_0x3bd1('0x3b')]);});}}});})[_0x3bd1('0x1b')](function(){_0x5bfc52();})[_0x3bd1('0x26')](function(_0x574ebe){logger[_0x3bd1('0x3a')](_0x3bd1('0x3d'),_0x3bd1('0x12'),_0x574ebe[_0x3bd1('0x3b')]);_0x5bfc52(_0x574ebe);});}else{_0x5bfc52(new Error(_0x3bd1('0x3e')));}},'afterDestroy':function(_0x44f358,_0x393fae,_0x31f619){var _0x2c9f98=_0x4d77dd[_0x3bd1('0xf')];var _0x23d5b2=_0x44f358['get']({'plain':!![]});return _0x2c9f98[_0x3bd1('0x1f')][_0x3bd1('0x31')]({'raw':!![],'where':{'ListId':_0x23d5b2['ListId'],'ContactId':_0x23d5b2['id']}})[_0x3bd1('0x1b')](function(_0x405db1){if(!_[_0x3bd1('0x3f')](_0x405db1)){var _0x2d7cba=[];for(var _0x359d30=0x0;_0x359d30<_0x405db1[_0x3bd1('0x38')];_0x359d30+=0x1){var _0x4e7708=_0x2c9f98[_0x3bd1('0x1f')][_0x3bd1('0x40')]({'where':{'ListId':_0x405db1[_0x359d30]['ListId'],'ContactId':_0x405db1[_0x359d30][_0x3bd1('0x41')],'VoiceQueueId':_0x405db1[_0x359d30][_0x3bd1('0x42')],'CampaignId':_0x405db1[_0x359d30][_0x3bd1('0x43')]}});_0x2d7cba['push'](_0x4e7708);}return BPromise[_0x3bd1('0x44')](_0x2d7cba);}})[_0x3bd1('0x1b')](function(_0x4eead0){logger[_0x3bd1('0x45')](_0x3bd1('0x46'),util[_0x3bd1('0x13')](_0x4eead0,{'showHidden':![],'depth':null}));_0x31f619();})[_0x3bd1('0x26')](function(_0x336dae){logger[_0x3bd1('0x3a')](_0x3bd1('0x47'),util[_0x3bd1('0x13')](_0x336dae,{'showHidden':![],'depth':null}));_0x31f619(_0x336dae);});}}});};
\ No newline at end of file
+var _0xe2cc=['catch','ret','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','Campaign','minutes','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','outbound','dialCheckDuplicateType','CmList','onlyIfOpen','findAll','BlackLists','length','cmContact,\x20%s,\x20%s','message','Lists','always','List\x20not\x20found','destroy','ContactId','VoiceQueueId','CampaignId','push','all','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','util','api','moment','bluebird','path','../../config/environment/shared','./cmContact.attributes','exports','CmContact','phone','firstName','lastName','mobile','fax','FULLTEXT','utf8mb4','models','get','error','cmContact','afterCreate','inspect','scheduledat','format','YYYY-MM-DD\x20HH:mm:ss','dialTimezone','VoiceQueue','then','isNil','timezones','utcOffset','add','findOne','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopper','create','ListId','priority','callbackUniqueid'];(function(_0x11d32c,_0xf1fb6e){var _0x28492f=function(_0x57aac){while(--_0x57aac){_0x11d32c['push'](_0x11d32c['shift']());}};_0x28492f(++_0xf1fb6e);}(_0xe2cc,0x1ba));var _0xce2c=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0xe2cc[_0x164eca];return _0x2ce562;};'use strict';var _=require(_0xce2c('0x0'));var util=require(_0xce2c('0x1'));var logger=require('../../config/logger')(_0xce2c('0x2'));var moment=require(_0xce2c('0x3'));var BPromise=require(_0xce2c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xce2c('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var shared=require(_0xce2c('0x6'));var attributes=require(_0xce2c('0x7'));module[_0xce2c('0x8')]=function(_0x44e4f8,_0x3e1738){return _0x44e4f8['define'](_0xce2c('0x9'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0xce2c('0xa'),'fields':[_0xce2c('0xa')]},{'name':'fti_cm_contacts','fields':[_0xce2c('0xb'),_0xce2c('0xc'),_0xce2c('0xa'),_0xce2c('0xd'),_0xce2c('0xe'),'email'],'type':_0xce2c('0xf')}],'timestamps':!![],'charset':_0xce2c('0x10'),'collate':'utf8mb4_unicode_ci','hooks':{'afterCreate':function(_0x44833e,_0x1317ff,_0x46c568){var _0x17b4af=_0x44e4f8[_0xce2c('0x11')];var _0x81d7a8=_0x44833e[_0xce2c('0x12')]({'plain':!![]});function _0x3d7198(){return function(_0x527c87){logger[_0xce2c('0x13')](_0xce2c('0x14'),_0xce2c('0x15'),util[_0xce2c('0x16')](_0x527c87,{'showHidden':![],'depth':null}));};}function _0x708231(_0x4fa50c,_0x4e0d32){var _0x399e72=_0x4e0d32[_0xce2c('0x17')]?_0x4e0d32[_0xce2c('0x17')]:moment()[_0xce2c('0x18')](_0xce2c('0x19'));return new BPromise(function(_0x1174bd,_0x3b3961){if(_['isNil'](_0x4e0d32[_0xce2c('0x1a')])){_0x1174bd({'ret':_0x399e72});}else{_0x17b4af[_0xce2c('0x1b')]['findOne']({'where':{'id':_0x4fa50c['id']}})[_0xce2c('0x1c')](function(_0x4dd0b3){if(!_[_0xce2c('0x1d')](_0x4dd0b3)){var _0x1caa74=_0x4dd0b3['dialTimezone'];if(!_['isNil'](_0x1caa74)){var _0x3af930=shared[_0xce2c('0x1e')];var _0x1043a7=_0x3af930[_0x1caa74];var _0x520ba4=_0x3af930[_0x4e0d32[_0xce2c('0x1a')]];if(!_[_0xce2c('0x1d')](_0x1043a7)&&!_[_0xce2c('0x1d')](_0x520ba4)){var _0x583469=_0x1043a7['utcOffset']-_0x520ba4[_0xce2c('0x1f')];_0x399e72=_0x4e0d32[_0xce2c('0x17')]?_0x4e0d32[_0xce2c('0x17')]:moment();var _0x40ef61=moment(_0x399e72)[_0xce2c('0x20')](_0x583469,'minutes');_0x1174bd({'ret':_0x40ef61[_0xce2c('0x18')](_0xce2c('0x19'))});}else _0x1174bd({'ret':_0x399e72});}else _0x1174bd({'ret':_0x399e72});}else{_0x1174bd({'ret':_0x399e72});}});}});return 0xa;}var _0x286cbc=function(_0x555bd2){return new BPromise(function(_0x121656,_0x399813){_0x708231(_0x555bd2,_0x81d7a8)['then'](function(_0x3d8cce){_0x81d7a8[_0xce2c('0x17')]=_0x3d8cce['ret'];_0x17b4af['CmHopper'][_0xce2c('0x21')]({'where':{'phone':_0x81d7a8['phone'],'VoiceQueueId':_0x555bd2['id']}})[_0xce2c('0x1c')](function(_0xe123ac){if(!_[_0xce2c('0x1d')](_0xe123ac)){throw new Error(_0xce2c('0x22')+_0x81d7a8[_0xce2c('0xa')]+_0xce2c('0x23')+_0x555bd2['id']);}return _0x17b4af[_0xce2c('0x24')][_0xce2c('0x25')]({'phone':_0x81d7a8['phone'],'ContactId':_0x81d7a8['id'],'ListId':_0x81d7a8[_0xce2c('0x26')],'priority':_0x81d7a8['priority']?_0x81d7a8[_0xce2c('0x27')]:0x2,'scheduledat':_0x81d7a8[_0xce2c('0x17')]?_0x81d7a8[_0xce2c('0x17')]:moment()[_0xce2c('0x18')](_0xce2c('0x19')),'callback':_0x81d7a8['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x81d7a8[_0xce2c('0x28')]?_0x81d7a8['callbackUniqueid']:undefined,'callbackat':_0x81d7a8[_0xce2c('0x28')]?moment()['format'](_0xce2c('0x19')):undefined,'VoiceQueueId':_0x555bd2['id']});})[_0xce2c('0x29')](function(_0x494833){_0x399813(_0x494833);});});});};var _0x4319de=function(_0x5bc814){return new BPromise(function(_0x33889e,_0x20e656){_0x708231(_0x5bc814,_0x81d7a8)['then'](function(_0x5c429c){_0x81d7a8[_0xce2c('0x17')]=_0x5c429c[_0xce2c('0x2a')];_0x17b4af[_0xce2c('0x24')][_0xce2c('0x21')]({'where':{'phone':_0x81d7a8[_0xce2c('0xa')],'VoiceQueueId':_0x5bc814['id']}})[_0xce2c('0x1c')](function(_0x33cdad){if(!_['isNil'](_0x33cdad)){throw new Error(_0xce2c('0x22')+_0x81d7a8[_0xce2c('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x5bc814['id']);}return _0x17b4af[_0xce2c('0x2b')][_0xce2c('0x21')]({'where':{'calleridnum':_0x81d7a8['phone'],'VoiceQueueId':_0x5bc814['id']}});})['then'](function(_0x380524){if(!_[_0xce2c('0x1d')](_0x380524)){throw new Error(_0xce2c('0x2c')+_0x81d7a8[_0xce2c('0xa')]+_0xce2c('0x2d')+_0x5bc814['id']);}return _0x17b4af[_0xce2c('0x24')][_0xce2c('0x25')]({'phone':_0x81d7a8['phone'],'ContactId':_0x81d7a8['id'],'ListId':_0x81d7a8[_0xce2c('0x26')],'priority':_0x81d7a8[_0xce2c('0x27')]?_0x81d7a8[_0xce2c('0x27')]:0x2,'scheduledat':_0x81d7a8[_0xce2c('0x17')]?_0x81d7a8[_0xce2c('0x17')]:moment()['format'](_0xce2c('0x19')),'callback':_0x81d7a8['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x81d7a8[_0xce2c('0x28')]?_0x81d7a8[_0xce2c('0x28')]:undefined,'callbackat':_0x81d7a8[_0xce2c('0x28')]?moment()['format'](_0xce2c('0x19')):undefined,'VoiceQueueId':_0x5bc814['id']});})[_0xce2c('0x29')](function(_0x243d16){_0x20e656(_0x243d16);});});});};function _0x3f9796(){return function(_0x27d02a){logger['error'](_0xce2c('0x14'),_0xce2c('0x15'),util[_0xce2c('0x16')](_0x27d02a,{'showHidden':![],'depth':null}));};}function _0x174b61(_0xc54fe5,_0x165c2b){var _0x2f38ae=_0x165c2b[_0xce2c('0x17')]?_0x165c2b['scheduledat']:moment()[_0xce2c('0x18')](_0xce2c('0x19'));return new BPromise(function(_0x40a5cd,_0x569302){if(_[_0xce2c('0x1d')](_0x165c2b[_0xce2c('0x1a')])){_0x40a5cd({'ret':_0x2f38ae});}else{_0x17b4af[_0xce2c('0x2e')][_0xce2c('0x21')]({'where':{'id':_0xc54fe5['id']}})['then'](function(_0xbe9bca){if(!_['isNil'](_0xbe9bca)){var _0x201ff4=_0xbe9bca[_0xce2c('0x1a')];if(!_[_0xce2c('0x1d')](_0x201ff4)){var _0x1ff1f7=shared['timezones'];var _0x5b5219=_0x1ff1f7[_0x201ff4];var _0x3fd1d6=_0x1ff1f7[_0x165c2b[_0xce2c('0x1a')]];if(!_[_0xce2c('0x1d')](_0x5b5219)&&!_[_0xce2c('0x1d')](_0x3fd1d6)){var _0x67c463=_0x5b5219[_0xce2c('0x1f')]-_0x3fd1d6[_0xce2c('0x1f')];_0x2f38ae=_0x165c2b[_0xce2c('0x17')]?_0x165c2b['scheduledat']:moment();var _0x183f14=moment(_0x2f38ae)['add'](_0x67c463,_0xce2c('0x2f'));_0x40a5cd({'ret':_0x183f14[_0xce2c('0x18')](_0xce2c('0x19'))});}else _0x40a5cd({'ret':_0x2f38ae});}else _0x40a5cd({'ret':_0x2f38ae});}else{_0x40a5cd({'ret':_0x2f38ae});}});}});return 0xa;}var _0x257c28=function(_0x482e6f){return new BPromise(function(_0x5a9e66,_0x1fb7c3){_0x174b61(_0x482e6f,_0x81d7a8)[_0xce2c('0x1c')](function(_0x408d1b){_0x81d7a8[_0xce2c('0x17')]=_0x408d1b['ret'];_0x17b4af[_0xce2c('0x24')][_0xce2c('0x21')]({'where':{'phone':_0x81d7a8[_0xce2c('0xa')],'CampaignId':_0x482e6f['id']}})[_0xce2c('0x1c')](function(_0x582ec5){if(!_[_0xce2c('0x1d')](_0x582ec5)){throw new Error('cmContact,\x20afterCreate\x20'+_0x81d7a8[_0xce2c('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20'+_0x482e6f['id']);}return _0x17b4af[_0xce2c('0x24')]['create']({'phone':_0x81d7a8['phone'],'ContactId':_0x81d7a8['id'],'ListId':_0x81d7a8[_0xce2c('0x26')],'priority':_0x81d7a8['priority']?_0x81d7a8[_0xce2c('0x27')]:0x2,'scheduledat':_0x81d7a8[_0xce2c('0x17')]?_0x81d7a8[_0xce2c('0x17')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x81d7a8['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x81d7a8[_0xce2c('0x28')]?_0x81d7a8['callbackUniqueid']:undefined,'callbackat':_0x81d7a8[_0xce2c('0x28')]?moment()[_0xce2c('0x18')](_0xce2c('0x19')):undefined,'CampaignId':_0x482e6f['id']});})['catch'](function(_0x3cd9f4){_0x1fb7c3(_0x3cd9f4);});});});};var _0x588408=function(_0x3a23c9){return new BPromise(function(_0x318417,_0x41d4a5){_0x174b61(_0x3a23c9,_0x81d7a8)[_0xce2c('0x1c')](function(_0x5e2548){_0x81d7a8['scheduledat']=_0x5e2548[_0xce2c('0x2a')];_0x17b4af[_0xce2c('0x24')][_0xce2c('0x21')]({'where':{'phone':_0x81d7a8['phone'],'CampaignId':_0x3a23c9['id']}})[_0xce2c('0x1c')](function(_0xfc0cb8){if(!_[_0xce2c('0x1d')](_0xfc0cb8)){throw new Error(_0xce2c('0x22')+_0x81d7a8[_0xce2c('0xa')]+_0xce2c('0x30')+_0x3a23c9['id']);}return _0x17b4af[_0xce2c('0x2b')][_0xce2c('0x21')]({'where':{'calleridnum':_0x81d7a8[_0xce2c('0xa')],'CampaignId':_0x3a23c9['id']}});})[_0xce2c('0x1c')](function(_0x4a94bb){if(!_[_0xce2c('0x1d')](_0x4a94bb)){throw new Error(_0xce2c('0x2c')+_0x81d7a8[_0xce2c('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0x3a23c9['id']);}return _0x17b4af[_0xce2c('0x24')]['create']({'phone':_0x81d7a8[_0xce2c('0xa')],'ContactId':_0x81d7a8['id'],'ListId':_0x81d7a8[_0xce2c('0x26')],'priority':_0x81d7a8[_0xce2c('0x27')]?_0x81d7a8[_0xce2c('0x27')]:0x2,'scheduledat':_0x81d7a8[_0xce2c('0x17')]?_0x81d7a8['scheduledat']:moment()[_0xce2c('0x18')](_0xce2c('0x19')),'callback':_0x81d7a8[_0xce2c('0x28')]?!![]:![],'callbackuniqueid':_0x81d7a8[_0xce2c('0x28')]?_0x81d7a8['callbackUniqueid']:undefined,'callbackat':_0x81d7a8['callbackUniqueid']?moment()[_0xce2c('0x18')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x3a23c9['id']});})[_0xce2c('0x29')](function(_0x13515e){_0x41d4a5(_0x13515e);});});});};if(_0x81d7a8[_0xce2c('0x26')]){_0x17b4af[_0xce2c('0x1b')]['findAll']({'where':{'type':_0xce2c('0x31')},'attributes':['id',_0xce2c('0x32'),_0xce2c('0x1a')],'include':[{'model':_0x17b4af[_0xce2c('0x33')],'as':'Lists','where':{'id':_0x81d7a8[_0xce2c('0x26')]}}]})['then'](function(_0x2ff54b){if(_0x2ff54b){var _0x22f2c0=[];for(var _0x3b851b=0x0,_0xbebfe9;_0x3b851b<_0x2ff54b['length'];_0x3b851b+=0x1){_0xbebfe9=_0x2ff54b[_0x3b851b][_0xce2c('0x12')]({'plain':!![]});switch(_0xbebfe9[_0xce2c('0x32')]){case'always':_0x4319de(_0xbebfe9)[_0xce2c('0x29')](_0x3d7198());break;case _0xce2c('0x34'):_0x286cbc(_0xbebfe9)[_0xce2c('0x29')](_0x3d7198());break;default:_0x174b61(_0xbebfe9,_0x81d7a8)[_0xce2c('0x1c')](function(_0x44ffff){_0x81d7a8[_0xce2c('0x17')]=_0x44ffff['ret'];_0x17b4af[_0xce2c('0x24')][_0xce2c('0x25')]({'phone':_0x81d7a8['phone'],'ContactId':_0x81d7a8['id'],'ListId':_0x81d7a8[_0xce2c('0x26')],'scheduledat':_0x81d7a8[_0xce2c('0x17')]?_0x81d7a8[_0xce2c('0x17')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x81d7a8['priority']?_0x81d7a8[_0xce2c('0x27')]:0x2,'callback':_0x81d7a8[_0xce2c('0x28')]?!![]:![],'callbackuniqueid':_0x81d7a8['callbackUniqueid']?_0x81d7a8[_0xce2c('0x28')]:undefined,'callbackat':_0x81d7a8[_0xce2c('0x28')]?moment()[_0xce2c('0x18')](_0xce2c('0x19')):undefined,'VoiceQueueId':_0xbebfe9['id']})['catch'](_0x3d7198());});}}}})['then'](function(){return _0x17b4af[_0xce2c('0x1b')][_0xce2c('0x35')]({'where':{'type':_0xce2c('0x31')},'attributes':['id'],'include':[{'model':_0x17b4af[_0xce2c('0x33')],'as':_0xce2c('0x36'),'where':{'id':_0x81d7a8[_0xce2c('0x26')]}}]})[_0xce2c('0x1c')](function(_0x3a552c){if(_0x3a552c){var _0x5b8fd7=[];for(var _0x4b66e3=0x0,_0x252ca1;_0x4b66e3<_0x3a552c[_0xce2c('0x37')];_0x4b66e3+=0x1){_0x252ca1=_0x3a552c[_0x4b66e3]['get']({'plain':!![]});_0x17b4af['CmHopperBlack'][_0xce2c('0x25')]({'phone':_0x81d7a8[_0xce2c('0xa')],'ContactId':_0x81d7a8['id'],'ListId':_0x81d7a8[_0xce2c('0x26')],'VoiceQueueId':_0x252ca1['id']})[_0xce2c('0x29')](function(_0x53d1c9){logger[_0xce2c('0x13')](_0xce2c('0x38'),'afterCreate',_0x53d1c9[_0xce2c('0x39')]);});}}});})[_0xce2c('0x1c')](function(){return _0x17b4af[_0xce2c('0x2e')]['findAll']({'attributes':['id',_0xce2c('0x32'),_0xce2c('0x1a')],'include':[{'model':_0x17b4af['CmList'],'as':_0xce2c('0x3a'),'where':{'id':_0x81d7a8[_0xce2c('0x26')]}}]})[_0xce2c('0x1c')](function(_0x11c116){if(_0x11c116){var _0x12e703=[];for(var _0x1f0b3c=0x0,_0x271e3a;_0x1f0b3c<_0x11c116[_0xce2c('0x37')];_0x1f0b3c+=0x1){_0x271e3a=_0x11c116[_0x1f0b3c][_0xce2c('0x12')]({'plain':!![]});switch(_0x271e3a[_0xce2c('0x32')]){case _0xce2c('0x3b'):_0x588408(_0x271e3a)[_0xce2c('0x29')](_0x3f9796());break;case'onlyIfOpen':_0x257c28(_0x271e3a)[_0xce2c('0x29')](_0x3f9796());break;default:_0x17b4af[_0xce2c('0x24')][_0xce2c('0x25')]({'phone':_0x81d7a8[_0xce2c('0xa')],'ContactId':_0x81d7a8['id'],'ListId':_0x81d7a8['ListId'],'scheduledat':_0x81d7a8[_0xce2c('0x17')]?_0x81d7a8['scheduledat']:moment()[_0xce2c('0x18')](_0xce2c('0x19')),'priority':_0x81d7a8['priority']?_0x81d7a8[_0xce2c('0x27')]:0x2,'callback':_0x81d7a8['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x81d7a8['callbackUniqueid']?_0x81d7a8[_0xce2c('0x28')]:undefined,'callbackat':_0x81d7a8['callbackUniqueid']?moment()[_0xce2c('0x18')](_0xce2c('0x19')):undefined,'CampaignId':_0x271e3a['id']})[_0xce2c('0x29')](_0x3f9796());}}}});})['then'](function(){return _0x17b4af['Campaign']['findAll']({'attributes':['id'],'include':[{'model':_0x17b4af[_0xce2c('0x33')],'as':_0xce2c('0x36'),'where':{'id':_0x81d7a8[_0xce2c('0x26')]}}]})[_0xce2c('0x1c')](function(_0x227451){if(_0x227451){var _0x1027f5=[];for(var _0x2cd46e=0x0,_0xfcf9e2;_0x2cd46e<_0x227451['length'];_0x2cd46e+=0x1){_0xfcf9e2=_0x227451[_0x2cd46e][_0xce2c('0x12')]({'plain':!![]});_0x17b4af['CmHopperBlack'][_0xce2c('0x25')]({'phone':_0x81d7a8[_0xce2c('0xa')],'ContactId':_0x81d7a8['id'],'ListId':_0x81d7a8[_0xce2c('0x26')],'CampaignId':_0xfcf9e2['id']})[_0xce2c('0x29')](function(_0x621cde){logger[_0xce2c('0x13')]('cmContact,\x20%s,\x20%s',_0xce2c('0x15'),_0x621cde[_0xce2c('0x39')]);});}}});})['then'](function(){_0x46c568();})[_0xce2c('0x29')](function(_0x2a43b6){logger[_0xce2c('0x13')]('cmContact,\x20%s,\x20%s','afterCreate',_0x2a43b6[_0xce2c('0x39')]);_0x46c568(_0x2a43b6);});}else{_0x46c568(new Error(_0xce2c('0x3c')));}},'afterDestroy':function(_0x3a7819,_0x2dd71d,_0x2d0170){var _0xdf994=_0x44e4f8['models'];var _0x3b9a4b=_0x3a7819[_0xce2c('0x12')]({'plain':!![]});return _0xdf994[_0xce2c('0x24')]['findAll']({'raw':!![],'where':{'ListId':_0x3b9a4b['ListId'],'ContactId':_0x3b9a4b['id']}})[_0xce2c('0x1c')](function(_0x5ce8ea){if(!_['isEmpty'](_0x5ce8ea)){var _0x84b405=[];for(var _0x53b740=0x0;_0x53b740<_0x5ce8ea['length'];_0x53b740+=0x1){var _0x6f9466=_0xdf994[_0xce2c('0x24')][_0xce2c('0x3d')]({'where':{'ListId':_0x5ce8ea[_0x53b740][_0xce2c('0x26')],'ContactId':_0x5ce8ea[_0x53b740][_0xce2c('0x3e')],'VoiceQueueId':_0x5ce8ea[_0x53b740][_0xce2c('0x3f')],'CampaignId':_0x5ce8ea[_0x53b740][_0xce2c('0x40')]}});_0x84b405[_0xce2c('0x41')](_0x6f9466);}return BPromise[_0xce2c('0x42')](_0x84b405);}})['then'](function(_0x2433fd){logger['info'](_0xce2c('0x43'),util['inspect'](_0x2433fd,{'showHidden':![],'depth':null}));_0x2d0170();})[_0xce2c('0x29')](function(_0x7d5425){logger['error'](_0xce2c('0x44'),util['inspect'](_0x7d5425,{'showHidden':![],'depth':null}));_0x2d0170(_0x7d5425);});}}});};
\ No newline at end of file
index bfb7f1d..50b1d71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['phone','ListId','Contact','CmContactId','create','body','keys','length','startsWith','update','table','cm_contacts','id\x20=\x20?','sequelize','query','CreateCmContact','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','./cmContact.socket','register','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetCmContact','CmContact','findAll','options','where','limit','include','map','model','attributes','then','stringify','CmContactHasItem','find'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0xa9e0[_0x5783f4];return _0x28e380;};'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 squel=require('squel');var db=require(_0x0a9e('0x4'))['db'];var utils=require(_0x0a9e('0x5'));var logger=require(_0x0a9e('0x6'))(_0x0a9e('0x7'));var config=require(_0x0a9e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0a9e('0x9')][_0x0a9e('0xa')]({'port':0x232a});config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithRpcPromise(_0x307b3e,_0x3ab53f,_0xfeb75b){return new BPromise(function(_0xbd1168,_0x4a4c56){return client['request'](_0x307b3e,_0xfeb75b)['then'](function(_0x4cfe67){logger[_0x0a9e('0xf')](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));logger[_0x0a9e('0x12')](_0x0a9e('0x13'),_0x3ab53f,_0x0a9e('0x11'),JSON['stringify'](_0x4cfe67));if(_0x4cfe67[_0x0a9e('0x14')]){if(_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x15')]===0x1f4){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')]['message']);return _0x4a4c56(_0x4cfe67[_0x0a9e('0x14')]['message']);}logger[_0x0a9e('0x14')]('CmContact,\x20%s,\x20%s',_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x16')]);return _0xbd1168(_0x4cfe67['error'][_0x0a9e('0x16')]);}else{logger['info'](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));_0xbd1168(_0x4cfe67[_0x0a9e('0x17')][_0x0a9e('0x16')]);}})[_0x0a9e('0x18')](function(_0x2eb11f){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x2eb11f);_0x4a4c56(_0x2eb11f);});});}exports[_0x0a9e('0x19')]=function(_0x112016){var _0x1c696a=this;return new Promise(function(_0x105080,_0x4bb1e3){return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':_0x112016['options']?_0x112016[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x112016['options']?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')]||null:null,'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')]['attributes']||null:null,'limit':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1e')]||null:null,'include':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x112016['options']['include'],function(_0x197ec0){return{'model':db[_0x197ec0[_0x0a9e('0x21')]],'as':_0x197ec0['as'],'attributes':_0x197ec0[_0x0a9e('0x22')],'include':_0x197ec0[_0x0a9e('0x1f')]?_['map'](_0x197ec0[_0x0a9e('0x1f')],function(_0x479bc4){return{'model':db[_0x479bc4[_0x0a9e('0x21')]],'as':_0x479bc4['as'],'attributes':_0x479bc4['attributes'],'include':_0x479bc4[_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x479bc4[_0x0a9e('0x1f')],function(_0x14433c){return{'model':db[_0x14433c[_0x0a9e('0x21')]],'as':_0x14433c['as'],'attributes':_0x14433c[_0x0a9e('0x22')]};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x23')](function(_0x14de77){logger['info'](_0x0a9e('0x19'),_0x112016);logger[_0x0a9e('0x12')](_0x0a9e('0x19'),_0x112016,JSON[_0x0a9e('0x24')](_0x14de77));if(_0x14de77['length']==0x0){return db[_0x0a9e('0x25')][_0x0a9e('0x26')]({'raw':!![],'where':{'item':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x27')]},'include':[{'model':db[_0x0a9e('0x1a')],'where':{'ListId':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')][_0x0a9e('0x28')],'deletedAt':{'$eq':null}},'as':_0x0a9e('0x29')}]})['then'](function(_0x426950){if(_['isNil'](_0x426950)){_0x105080(_0x14de77);}else{var _0x2407f9=_0x426950[_0x0a9e('0x2a')];return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':!![],'where':{'id':_0x2407f9},'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016['options'][_0x0a9e('0x22')]||null:null})[_0x0a9e('0x23')](function(_0x40cb85){_0x105080(_0x40cb85);});}});}else{_0x105080(_0x14de77);}})[_0x0a9e('0x18')](function(_0x2b45ea){logger[_0x0a9e('0x14')](_0x0a9e('0x19'),_0x2b45ea[_0x0a9e('0x16')],_0x112016);_0x4bb1e3(_0x1c696a['error'](0x1f4,_0x2b45ea[_0x0a9e('0x16')]));});});};exports['CreateCmContact']=function(_0x2cc7a0){var _0x14b13f=this;return new Promise(function(_0x2b7e7f,_0x3f3d41){return db['CmContact'][_0x0a9e('0x2b')](_0x2cc7a0[_0x0a9e('0x2c')],{'raw':_0x2cc7a0[_0x0a9e('0x1c')]?_0x2cc7a0[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1e8694){var _0x5640eb;for(var _0x24936a=0x0;_0x24936a<Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x0a9e('0x2e')];_0x24936a++){var _0x4f41ae=Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x24936a];if(_0x4f41ae[_0x0a9e('0x2f')]('cf_')){_0x5640eb=squel[_0x0a9e('0x30')]()[_0x0a9e('0x31')](_0x0a9e('0x32'))['set'](_0x4f41ae,_0x2cc7a0['body'][_0x4f41ae])[_0x0a9e('0x1d')](_0x0a9e('0x33'),_0x1e8694['id'])['toString']();break;}}if(!_0x5640eb)return _0x1e8694;return db[_0x0a9e('0x34')][_0x0a9e('0x35')](_0x5640eb)[_0x0a9e('0x23')](function(){return _0x1e8694;});})[_0x0a9e('0x23')](function(_0x4b38d9){logger['info'](_0x0a9e('0x36'),_0x2cc7a0);logger[_0x0a9e('0x12')]('CreateCmContact',_0x2cc7a0,JSON[_0x0a9e('0x24')](_0x4b38d9));_0x2b7e7f(_0x4b38d9);})[_0x0a9e('0x18')](function(_0x1459bb){logger['error'](_0x0a9e('0x36'),_0x1459bb[_0x0a9e('0x16')],_0x2cc7a0);_0x3f3d41(_0x14b13f[_0x0a9e('0x14')](0x1f4,_0x1459bb[_0x0a9e('0x16')]));});});};
\ No newline at end of file
+var _0x9957=['include','model','length','CmContactHasItem','find','ListId','Contact','isNil','CmContactId','CmContact','catch','CreateCmContact','create','body','keys','startsWith','cf_','table','cm_contacts','set','where','id\x20=\x20?','toString','sequelize','query','lodash','util','moment','bluebird','ioredis','squel','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','GetCmContact','findAll','options','raw','attributes','limit','map'];(function(_0x303473,_0x459d4f){var _0x3a80f8=function(_0x2fcab1){while(--_0x2fcab1){_0x303473['push'](_0x303473['shift']());}};_0x3a80f8(++_0x459d4f);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'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 squel=require(_0x7995('0x5'));var db=require(_0x7995('0x6'))['db'];var utils=require(_0x7995('0x7'));var logger=require('../../config/logger')(_0x7995('0x8'));var config=require(_0x7995('0x9'));var jayson=require(_0x7995('0xa'));var client=jayson[_0x7995('0xb')][_0x7995('0xc')]({'port':0x232a});config[_0x7995('0xd')]=_['defaults'](config[_0x7995('0xd')],{'host':_0x7995('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7995('0xd')]));require(_0x7995('0xf'))[_0x7995('0x10')](socket);function respondWithRpcPromise(_0x35b5fe,_0x3c1d19,_0x1e400a){return new BPromise(function(_0x341672,_0x524f7b){return client[_0x7995('0x11')](_0x35b5fe,_0x1e400a)[_0x7995('0x12')](function(_0x581f22){logger[_0x7995('0x13')](_0x7995('0x14'),_0x3c1d19,_0x7995('0x15'));logger[_0x7995('0x16')](_0x7995('0x17'),_0x3c1d19,_0x7995('0x15'),JSON[_0x7995('0x18')](_0x581f22));if(_0x581f22['error']){if(_0x581f22['error'][_0x7995('0x19')]===0x1f4){logger[_0x7995('0x1a')](_0x7995('0x14'),_0x3c1d19,_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);return _0x524f7b(_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);}logger[_0x7995('0x1a')]('CmContact,\x20%s,\x20%s',_0x3c1d19,_0x581f22[_0x7995('0x1a')]['message']);return _0x341672(_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);}else{logger[_0x7995('0x13')](_0x7995('0x14'),_0x3c1d19,_0x7995('0x15'));_0x341672(_0x581f22[_0x7995('0x1c')]['message']);}})['catch'](function(_0x2536c8){logger['error']('CmContact,\x20%s,\x20%s',_0x3c1d19,_0x2536c8);_0x524f7b(_0x2536c8);});});}exports[_0x7995('0x1d')]=function(_0x3d463e){var _0x4cbe10=this;return new Promise(function(_0x3a9b54,_0x51f276){return db['CmContact'][_0x7995('0x1e')]({'raw':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x20')]===undefined?!![]:![]:!![],'where':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')]['where']||null:null,'attributes':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x21')]||null:null,'limit':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x22')]||null:null,'include':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')]['include']?_[_0x7995('0x23')](_0x3d463e[_0x7995('0x1f')][_0x7995('0x24')],function(_0x268ce7){return{'model':db[_0x268ce7[_0x7995('0x25')]],'as':_0x268ce7['as'],'attributes':_0x268ce7[_0x7995('0x21')],'include':_0x268ce7['include']?_[_0x7995('0x23')](_0x268ce7['include'],function(_0x229742){return{'model':db[_0x229742[_0x7995('0x25')]],'as':_0x229742['as'],'attributes':_0x229742[_0x7995('0x21')],'include':_0x229742[_0x7995('0x24')]?_[_0x7995('0x23')](_0x229742['include'],function(_0x9b2a15){return{'model':db[_0x9b2a15['model']],'as':_0x9b2a15['as'],'attributes':_0x9b2a15[_0x7995('0x21')]};}):[]};}):[]};}):[]:[]})[_0x7995('0x12')](function(_0x4253e5){logger['info']('GetCmContact',_0x3d463e);logger['debug'](_0x7995('0x1d'),_0x3d463e,JSON[_0x7995('0x18')](_0x4253e5));if(_0x4253e5[_0x7995('0x26')]==0x0){return db[_0x7995('0x27')][_0x7995('0x28')]({'raw':!![],'where':{'item':_0x3d463e[_0x7995('0x1f')]['phone']},'include':[{'model':db['CmContact'],'where':{'ListId':_0x3d463e[_0x7995('0x1f')]['where'][_0x7995('0x29')],'deletedAt':{'$eq':null}},'as':_0x7995('0x2a')}]})[_0x7995('0x12')](function(_0x1e9fa4){if(_[_0x7995('0x2b')](_0x1e9fa4)){_0x3a9b54(_0x4253e5);}else{var _0x510841=_0x1e9fa4[_0x7995('0x2c')];return db[_0x7995('0x2d')]['findAll']({'raw':!![],'where':{'id':_0x510841},'attributes':_0x3d463e['options']?_0x3d463e['options'][_0x7995('0x21')]||null:null})[_0x7995('0x12')](function(_0x4a176f){_0x3a9b54(_0x4a176f);});}});}else{_0x3a9b54(_0x4253e5);}})[_0x7995('0x2e')](function(_0x51b95d){logger[_0x7995('0x1a')](_0x7995('0x1d'),_0x51b95d[_0x7995('0x1b')],_0x3d463e);_0x51f276(_0x4cbe10['error'](0x1f4,_0x51b95d['message']));});});};exports[_0x7995('0x2f')]=function(_0x5e67fe){var _0x5d2428=this;return new Promise(function(_0x3e99cd,_0xe328b1){return db['CmContact'][_0x7995('0x30')](_0x5e67fe[_0x7995('0x31')],{'raw':_0x5e67fe[_0x7995('0x1f')]?_0x5e67fe[_0x7995('0x1f')][_0x7995('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x2d4285){var _0x242713;for(var _0xf612e6=0x0;_0xf612e6<Object[_0x7995('0x32')](_0x5e67fe['body'])[_0x7995('0x26')];_0xf612e6++){var _0x235df7=Object[_0x7995('0x32')](_0x5e67fe[_0x7995('0x31')])[_0xf612e6];if(_0x235df7[_0x7995('0x33')](_0x7995('0x34'))){_0x242713=squel['update']()[_0x7995('0x35')](_0x7995('0x36'))[_0x7995('0x37')](_0x235df7,_0x5e67fe[_0x7995('0x31')][_0x235df7])[_0x7995('0x38')](_0x7995('0x39'),_0x2d4285['id'])[_0x7995('0x3a')]();break;}}if(!_0x242713)return _0x2d4285;return db[_0x7995('0x3b')][_0x7995('0x3c')](_0x242713)[_0x7995('0x12')](function(){return _0x2d4285;});})[_0x7995('0x12')](function(_0x270d52){logger[_0x7995('0x13')]('CreateCmContact',_0x5e67fe);logger['debug'](_0x7995('0x2f'),_0x5e67fe,JSON[_0x7995('0x18')](_0x270d52));_0x3e99cd(_0x270d52);})['catch'](function(_0x4b0855){logger[_0x7995('0x1a')]('CreateCmContact',_0x4b0855['message'],_0x5e67fe);_0xe328b1(_0x5d2428[_0x7995('0x1a')](0x1f4,_0x4b0855[_0x7995('0x1b')]));});});};
\ No newline at end of file
index 9bfa652..68514eb 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(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x298ed3,_0x4ab5e1){_0x298ed3=_0x298ed3-0x0;var _0x5aad28=_0xa9e0[_0x298ed3];return _0x5aad28;};'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 4410352..c5167dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['basename','extname','now','/csv','single','file','uploadCsv','%s-%s%s','upload','/upload/:id','import','put','/:id','update','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','index','/describe','show','/:id/tags','isAuthenticated','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','create','/create_many','bulkCreate','setTags','setAdditionalPhones','/:id/duplicateAdditionalPhones','/:id/rescheduleAdditionalPhones','rescheduleAdditionalPhones','join','root','server/files/tmp','originalname','replace','format'];(function(_0x33468e,_0x46ca79){var _0x5b57dd=function(_0x3a759b){while(--_0x3a759b){_0x33468e['push'](_0x33468e['shift']());}};_0x5b57dd(++_0x46ca79);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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/phones',auth['isAuthenticated'](),controller['getAdditionalPhones']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getHopperHistories']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x18')]('/merge',auth[_0x0a9e('0xd')](),controller['merge']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/phones',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x1e'),auth['isAuthenticated'](),controller['duplicateAdditionalPhones']);router[_0x0a9e('0x18')](_0x0a9e('0x1f'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xfb6e48,_0x2fb0e4,_0x3b45bc){_0x3b45bc(null,path[_0x0a9e('0x21')](config[_0x0a9e('0x22')],_0x0a9e('0x23')));},'filename':function(_0x16b1ca,_0x5ea472,_0x59181e){_0x5ea472[_0x0a9e('0x24')]=_0x5ea472[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x59181e(null,util[_0x0a9e('0x26')]('%s-%s%s',path[_0x0a9e('0x27')](_0x5ea472['originalname'],path[_0x0a9e('0x28')](_0x5ea472['originalname'])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x5ea472[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')](_0x0a9e('0x2a'),upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3652a7,_0x468813,_0x2b1f27){_0x2b1f27(null,path[_0x0a9e('0x21')](config['root'],_0x0a9e('0x23')));},'filename':function(_0x40e7a3,_0x1843b2,_0x824a4f){_0x1843b2[_0x0a9e('0x24')]=_0x1843b2[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x824a4f(null,util[_0x0a9e('0x26')](_0x0a9e('0x2e'),path['basename'](_0x1843b2[_0x0a9e('0x24')],path['extname'](_0x1843b2[_0x0a9e('0x24')])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x1843b2[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')]('/upload',upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2f')]);router[_0x0a9e('0x18')](_0x0a9e('0x30'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x31')]);router[_0x0a9e('0x18')]('/uploadUpdates/:id',auth[_0x0a9e('0xd')](),controller['importUpdates']);router[_0x0a9e('0x32')](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x34')]);router['delete'](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x35')]);module[_0x0a9e('0x36')]=router;
\ No newline at end of file
+var _0xa9e0=['basename','extname','now','/csv','single','file','uploadCsv','%s-%s%s','upload','/upload/:id','import','put','/:id','update','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','index','/describe','show','/:id/tags','isAuthenticated','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','create','/create_many','bulkCreate','setTags','setAdditionalPhones','/:id/duplicateAdditionalPhones','/:id/rescheduleAdditionalPhones','rescheduleAdditionalPhones','join','root','server/files/tmp','originalname','replace','format'];(function(_0x596bef,_0x1296f7){var _0x2b8a19=function(_0x408767){while(--_0x408767){_0x596bef['push'](_0x596bef['shift']());}};_0x2b8a19(++_0x1296f7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1c546c,_0x5c57cb){_0x1c546c=_0x1c546c-0x0;var _0x2cc384=_0xa9e0[_0x1c546c];return _0x2cc384;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['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/phones',auth['isAuthenticated'](),controller['getAdditionalPhones']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getHopperHistories']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x18')]('/merge',auth[_0x0a9e('0xd')](),controller['merge']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/phones',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x1e'),auth['isAuthenticated'](),controller['duplicateAdditionalPhones']);router[_0x0a9e('0x18')](_0x0a9e('0x1f'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xfb6e48,_0x2fb0e4,_0x3b45bc){_0x3b45bc(null,path[_0x0a9e('0x21')](config[_0x0a9e('0x22')],_0x0a9e('0x23')));},'filename':function(_0x16b1ca,_0x5ea472,_0x59181e){_0x5ea472[_0x0a9e('0x24')]=_0x5ea472[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x59181e(null,util[_0x0a9e('0x26')]('%s-%s%s',path[_0x0a9e('0x27')](_0x5ea472['originalname'],path[_0x0a9e('0x28')](_0x5ea472['originalname'])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x5ea472[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')](_0x0a9e('0x2a'),upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3652a7,_0x468813,_0x2b1f27){_0x2b1f27(null,path[_0x0a9e('0x21')](config['root'],_0x0a9e('0x23')));},'filename':function(_0x40e7a3,_0x1843b2,_0x824a4f){_0x1843b2[_0x0a9e('0x24')]=_0x1843b2[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x824a4f(null,util[_0x0a9e('0x26')](_0x0a9e('0x2e'),path['basename'](_0x1843b2[_0x0a9e('0x24')],path['extname'](_0x1843b2[_0x0a9e('0x24')])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x1843b2[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')]('/upload',upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2f')]);router[_0x0a9e('0x18')](_0x0a9e('0x30'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x31')]);router[_0x0a9e('0x18')]('/uploadUpdates/:id',auth[_0x0a9e('0xd')](),controller['importUpdates']);router[_0x0a9e('0x32')](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x34')]);router['delete'](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x35')]);module[_0x0a9e('0x36')]=router;
\ No newline at end of file
index 72a07d0..130d389 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd73a=['STRING','sequelize','exports','INTEGER'];(function(_0xc3e845,_0x341233){var _0x32bdb5=function(_0x43323d){while(--_0x43323d){_0xc3e845['push'](_0xc3e845['shift']());}};_0x32bdb5(++_0x341233);}(_0xd73a,0x171));var _0xad73=function(_0x3e83b7,_0x435885){_0x3e83b7=_0x3e83b7-0x0;var _0x28d13a=_0xd73a[_0x3e83b7];return _0x28d13a;};'use strict';var Sequelize=require(_0xad73('0x0'));module[_0xad73('0x1')]={'CmContactId':{'type':Sequelize[_0xad73('0x2')],'primaryKey':!![]},'item':{'type':Sequelize[_0xad73('0x3')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0xad73('0x2')],'defaultValue':null},'ItemClass':{'type':Sequelize['STRING'],'defaultValue':'PHONE'},'OrderBy':{'type':Sequelize[_0xad73('0x2')],'defaultValue':null},'description':{'type':Sequelize[_0xad73('0x3')],'defaultValue':null}};
\ No newline at end of file
+var _0x9224=['INTEGER','STRING','PHONE','exports'];(function(_0x1cf7e7,_0x26462d){var _0x2ba3c4=function(_0x7e3a93){while(--_0x7e3a93){_0x1cf7e7['push'](_0x1cf7e7['shift']());}};_0x2ba3c4(++_0x26462d);}(_0x9224,0xa3));var _0x4922=function(_0x22395f,_0x22123f){_0x22395f=_0x22395f-0x0;var _0x5ba90f=_0x9224[_0x22395f];return _0x5ba90f;};'use strict';var Sequelize=require('sequelize');module[_0x4922('0x0')]={'CmContactId':{'type':Sequelize[_0x4922('0x1')],'primaryKey':!![]},'item':{'type':Sequelize[_0x4922('0x2')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0x4922('0x1')],'defaultValue':null},'ItemClass':{'type':Sequelize[_0x4922('0x2')],'defaultValue':_0x4922('0x3')},'OrderBy':{'type':Sequelize['INTEGER'],'defaultValue':null},'description':{'type':Sequelize['STRING'],'defaultValue':null}};
\ No newline at end of file
index 063c0ac..5564efa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x119e=['Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','lodash','desk.js','to-csv','querystring','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','then','get','CmContactHasItems','UserProfileResource','destroy','error','stack','name','send','index','map','CmContactHasItem','rawAttributes','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','find','create','body','user'];(function(_0xfb6da,_0x106036){var _0x5956e9=function(_0x420892){while(--_0x420892){_0xfb6da['push'](_0xfb6da['shift']());}};_0x5956e9(++_0x106036);}(_0x119e,0x1e7));var _0xe119=function(_0x28c517,_0x1fcbc2){_0x28c517=_0x28c517-0x0;var _0x1e8a1b=_0x119e[_0x28c517];return _0x1e8a1b;};'use strict';var emlformat=require(_0xe119('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe119('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe119('0x2'));var moment=require(_0xe119('0x3'));var BPromise=require(_0xe119('0x4'));var Mustache=require(_0xe119('0x5'));var util=require(_0xe119('0x6'));var path=require(_0xe119('0x7'));var sox=require(_0xe119('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe119('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe119('0xa'));var toCsv=require(_0xe119('0xb'));var querystring=require(_0xe119('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xe119('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe119('0xe'));var logger=require(_0xe119('0xf'))(_0xe119('0x10'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe119('0x11'));var db=require(_0xe119('0x12'))['db'];function respondWithStatusCode(_0x2a0ab3,_0xdc394b){_0xdc394b=_0xdc394b||0xcc;return function(_0xef19b0){if(_0xef19b0){return _0x2a0ab3[_0xe119('0x13')](_0xdc394b);}return _0x2a0ab3[_0xe119('0x14')](_0xdc394b)[_0xe119('0x15')]();};}function respondWithResult(_0x4c227c,_0x4aa7b3){_0x4aa7b3=_0x4aa7b3||0xc8;return function(_0x3fca84){if(_0x3fca84){return _0x4c227c[_0xe119('0x14')](_0x4aa7b3)[_0xe119('0x16')](_0x3fca84);}};}function respondWithFilteredResult(_0x15b754,_0x27f157){return function(_0x106ecb){if(_0x106ecb){var _0x4666cc=typeof _0x27f157[_0xe119('0x17')]==='undefined'&&typeof _0x27f157[_0xe119('0x18')]===_0xe119('0x19');var _0x5b4a9f=_0x106ecb[_0xe119('0x1a')];var _0xd50ac3=_0x4666cc?0x0:_0x27f157[_0xe119('0x17')];var _0x5b5a03=_0x4666cc?_0x106ecb[_0xe119('0x1a')]:_0x27f157['offset']+_0x27f157[_0xe119('0x18')];var _0x3e40a4;if(_0x5b5a03>=_0x5b4a9f){_0x5b5a03=_0x5b4a9f;_0x3e40a4=0xc8;}else{_0x3e40a4=0xce;}_0x15b754['status'](_0x3e40a4);return _0x15b754[_0xe119('0x1b')](_0xe119('0x1c'),_0xd50ac3+'-'+_0x5b5a03+'/'+_0x5b4a9f)[_0xe119('0x16')](_0x106ecb);}return null;};}function patchUpdates(_0x37a067){return function(_0x5a1671){try{jsonpatch[_0xe119('0x1d')](_0x5a1671,_0x37a067,!![]);}catch(_0x500869){return BPromise['reject'](_0x500869);}return _0x5a1671['save']();};}function saveUpdates(_0x288fe8,_0x1dce35){return function(_0xb72614){if(_0xb72614){return _0xb72614['update'](_0x288fe8)[_0xe119('0x1e')](function(_0x2e9b27){return _0x2e9b27;});}return null;};}function removeEntity(_0x1bd082,_0x182468){return function(_0x2674c2){if(_0x2674c2){return _0x2674c2['destroy']()[_0xe119('0x1e')](function(){var _0x3db47a=_0x2674c2[_0xe119('0x1f')]({'plain':!![]});var _0x17f75f=_0xe119('0x20');return db[_0xe119('0x21')][_0xe119('0x22')]({'where':{'type':_0x17f75f,'resourceId':_0x3db47a['id']}})['then'](function(){return _0x2674c2;});})['then'](function(){_0x1bd082[_0xe119('0x14')](0xcc)[_0xe119('0x15')]();});}};}function handleEntityNotFound(_0x524e7b,_0x48c3d3){return function(_0x295930){if(!_0x295930){_0x524e7b[_0xe119('0x13')](0x194);}return _0x295930;};}function handleError(_0x4b5878,_0x591ff1){_0x591ff1=_0x591ff1||0x1f4;return function(_0x2ac5f5){logger[_0xe119('0x23')](_0x2ac5f5[_0xe119('0x24')]);if(_0x2ac5f5['name']){delete _0x2ac5f5[_0xe119('0x25')];}_0x4b5878[_0xe119('0x14')](_0x591ff1)[_0xe119('0x26')](_0x2ac5f5);};}exports[_0xe119('0x27')]=function(_0x5d5f91,_0x550eea){var _0x5c52f2={},_0x2d2f2d={},_0x53a6c2={'count':0x0,'rows':[]};var _0x4aa4fd=_[_0xe119('0x28')](db[_0xe119('0x29')][_0xe119('0x2a')],function(_0x2472bd){return{'name':_0x2472bd['fieldName'],'type':_0x2472bd[_0xe119('0x2b')][_0xe119('0x2c')]};});_0x2d2f2d[_0xe119('0x2d')]=_['map'](_0x4aa4fd,_0xe119('0x25'));_0x2d2f2d[_0xe119('0x2e')]=_[_0xe119('0x2f')](_0x5d5f91[_0xe119('0x2e')]);_0x2d2f2d['filters']=_['intersection'](_0x2d2f2d[_0xe119('0x2d')],_0x2d2f2d[_0xe119('0x2e')]);_0x5c52f2[_0xe119('0x30')]=_[_0xe119('0x31')](_0x2d2f2d[_0xe119('0x2d')],qs[_0xe119('0x32')](_0x5d5f91[_0xe119('0x2e')][_0xe119('0x32')]));_0x5c52f2['attributes']=_0x5c52f2[_0xe119('0x30')][_0xe119('0x33')]?_0x5c52f2[_0xe119('0x30')]:_0x2d2f2d[_0xe119('0x2d')];if(!_0x5d5f91[_0xe119('0x2e')][_0xe119('0x34')](_0xe119('0x35'))){_0x5c52f2[_0xe119('0x18')]=qs[_0xe119('0x18')](_0x5d5f91[_0xe119('0x2e')][_0xe119('0x18')]);_0x5c52f2[_0xe119('0x17')]=qs['offset'](_0x5d5f91[_0xe119('0x2e')]['offset']);}_0x5c52f2[_0xe119('0x36')]=qs[_0xe119('0x37')](_0x5d5f91[_0xe119('0x2e')][_0xe119('0x37')]);_0x5c52f2[_0xe119('0x38')]=qs['filters'](_[_0xe119('0x39')](_0x5d5f91['query'],_0x2d2f2d[_0xe119('0x3a')]),_0x4aa4fd);if(_0x5d5f91[_0xe119('0x2e')][_0xe119('0x3b')]){_0x5c52f2[_0xe119('0x38')]=_[_0xe119('0x3c')](_0x5c52f2['where'],{'$or':_['map'](_0x4aa4fd,function(_0x475603){if(_0x475603[_0xe119('0x2b')]!==_0xe119('0x3d')){var _0x1d5a6e={};_0x1d5a6e[_0x475603[_0xe119('0x25')]]={'$like':'%'+_0x5d5f91[_0xe119('0x2e')][_0xe119('0x3b')]+'%'};return _0x1d5a6e;}})});}_0x5c52f2=_['merge']({},_0x5c52f2,_0x5d5f91[_0xe119('0x3e')]);var _0x2ce7cf={'where':_0x5c52f2[_0xe119('0x38')]};return db[_0xe119('0x29')][_0xe119('0x1a')](_0x2ce7cf)[_0xe119('0x1e')](function(_0x235f6b){_0x53a6c2[_0xe119('0x1a')]=_0x235f6b;if(_0x5d5f91['query'][_0xe119('0x3f')]){_0x5c52f2['include']=[{'all':!![]}];}return db[_0xe119('0x29')][_0xe119('0x40')](_0x5c52f2);})[_0xe119('0x1e')](function(_0x2967d0){_0x53a6c2[_0xe119('0x41')]=_0x2967d0;return _0x53a6c2;})['then'](respondWithFilteredResult(_0x550eea,_0x5c52f2))[_0xe119('0x42')](handleError(_0x550eea,null));};exports[_0xe119('0x43')]=function(_0x46b137,_0x5cefd3){var _0x54124c={'raw':!![],'where':{'id':_0x46b137[_0xe119('0x44')]['id']}},_0x1da93e={};_0x1da93e[_0xe119('0x2d')]=_['keys'](db[_0xe119('0x29')][_0xe119('0x2a')]);_0x1da93e['query']=_['keys'](_0x46b137[_0xe119('0x2e')]);_0x1da93e[_0xe119('0x3a')]=_['intersection'](_0x1da93e[_0xe119('0x2d')],_0x1da93e[_0xe119('0x2e')]);_0x54124c[_0xe119('0x30')]=_[_0xe119('0x31')](_0x1da93e[_0xe119('0x2d')],qs[_0xe119('0x32')](_0x46b137[_0xe119('0x2e')][_0xe119('0x32')]));_0x54124c[_0xe119('0x30')]=_0x54124c[_0xe119('0x30')][_0xe119('0x33')]?_0x54124c['attributes']:_0x1da93e[_0xe119('0x2d')];if(_0x46b137[_0xe119('0x2e')]['includeAll']){_0x54124c['include']=[{'all':!![]}];}_0x54124c=_[_0xe119('0x3c')]({},_0x54124c,_0x46b137[_0xe119('0x3e')]);return db[_0xe119('0x29')][_0xe119('0x45')](_0x54124c)[_0xe119('0x1e')](handleEntityNotFound(_0x5cefd3,null))['then'](respondWithResult(_0x5cefd3,null))[_0xe119('0x42')](handleError(_0x5cefd3,null));};exports['create']=function(_0xe2d2af,_0x2a0d60){return db['CmContactHasItem'][_0xe119('0x46')](_0xe2d2af[_0xe119('0x47')],{})[_0xe119('0x1e')](function(_0xebc4ff){var _0x5f4b48=_0xe2d2af[_0xe119('0x48')]['get']({'plain':!![]});if(!_0x5f4b48)throw new Error(_0xe119('0x49'));if(_0x5f4b48[_0xe119('0x4a')]===_0xe119('0x48')){var _0x1ac3d9=_0xebc4ff[_0xe119('0x1f')]({'plain':!![]});var _0x3c43f5=_0xe119('0x20');return db[_0xe119('0x4b')][_0xe119('0x45')]({'where':{'name':_0x3c43f5,'userProfileId':_0x5f4b48[_0xe119('0x4c')]},'raw':!![]})[_0xe119('0x1e')](function(_0x211846){if(_0x211846&&_0x211846[_0xe119('0x4d')]===0x0){return db['UserProfileResource']['create']({'name':_0x1ac3d9['name'],'resourceId':_0x1ac3d9['id'],'type':_0x211846['name'],'sectionId':_0x211846['id']},{})[_0xe119('0x1e')](function(){return _0xebc4ff;});}else{return _0xebc4ff;}})[_0xe119('0x42')](function(_0xeacff0){logger[_0xe119('0x23')](_0xe119('0x4e'),_0xeacff0);throw _0xeacff0;});}return _0xebc4ff;})['then'](respondWithResult(_0x2a0d60,0xc9))['catch'](handleError(_0x2a0d60,null));};exports[_0xe119('0x4f')]=function(_0x5ca8da,_0x483366){if(_0x5ca8da[_0xe119('0x47')]['id']){delete _0x5ca8da[_0xe119('0x47')]['id'];}return db[_0xe119('0x29')][_0xe119('0x45')]({'where':{'id':_0x5ca8da[_0xe119('0x44')]['id']}})[_0xe119('0x1e')](handleEntityNotFound(_0x483366,null))[_0xe119('0x1e')](saveUpdates(_0x5ca8da[_0xe119('0x47')],null))[_0xe119('0x1e')](respondWithResult(_0x483366,null))[_0xe119('0x42')](handleError(_0x483366,null));};exports[_0xe119('0x22')]=function(_0x183827,_0x597208){return db['CmContactHasItem'][_0xe119('0x45')]({'where':{'id':_0x183827[_0xe119('0x44')]['id']}})[_0xe119('0x1e')](handleEntityNotFound(_0x597208,null))[_0xe119('0x1e')](removeEntity(_0x597208,null))[_0xe119('0x42')](handleError(_0x597208,null));};
\ No newline at end of file
+var _0xadc6=['stack','name','index','map','type','key','model','query','keys','intersection','fields','attributes','length','order','sort','filters','pick','merge','VIRTUAL','options','where','CmContactHasItem','includeAll','rows','show','params','rawAttributes','include','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','CmContactHasItems','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','Content-Range','reject','save','then','destroy','get','end','error'];(function(_0x19623b,_0x37f4e6){var _0x4f463a=function(_0x4610f8){while(--_0x4610f8){_0x19623b['push'](_0x19623b['shift']());}};_0x4f463a(++_0x37f4e6);}(_0xadc6,0xbe));var _0x6adc=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0xadc6[_0x209941];return _0x1e8729;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6adc('0x0'));var jsonpatch=require(_0x6adc('0x1'));var rp=require(_0x6adc('0x2'));var moment=require('moment');var BPromise=require(_0x6adc('0x3'));var Mustache=require(_0x6adc('0x4'));var util=require(_0x6adc('0x5'));var path=require(_0x6adc('0x6'));var sox=require(_0x6adc('0x7'));var csv=require(_0x6adc('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6adc('0x9'));var _=require('lodash');var squel=require(_0x6adc('0xa'));var crypto=require(_0x6adc('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x6adc('0xc'));var toCsv=require(_0x6adc('0x8'));var querystring=require(_0x6adc('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x6adc('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x6adc('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6adc('0x10'))('api');var utils=require(_0x6adc('0x11'));var config=require(_0x6adc('0x12'));var licenseUtil=require(_0x6adc('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4bc157,_0x43446a){_0x43446a=_0x43446a||0xcc;return function(_0x26ed08){if(_0x26ed08){return _0x4bc157[_0x6adc('0x14')](_0x43446a);}return _0x4bc157[_0x6adc('0x15')](_0x43446a)['end']();};}function respondWithResult(_0x3bc887,_0x5718dc){_0x5718dc=_0x5718dc||0xc8;return function(_0x1b03cc){if(_0x1b03cc){return _0x3bc887[_0x6adc('0x15')](_0x5718dc)[_0x6adc('0x16')](_0x1b03cc);}};}function respondWithFilteredResult(_0x155d6b,_0x2326aa){return function(_0x482ceb){if(_0x482ceb){var _0x2b5c79=typeof _0x2326aa[_0x6adc('0x17')]===_0x6adc('0x18')&&typeof _0x2326aa[_0x6adc('0x19')]==='undefined';var _0x455592=_0x482ceb[_0x6adc('0x1a')];var _0x556505=_0x2b5c79?0x0:_0x2326aa[_0x6adc('0x17')];var _0x4b99e0=_0x2b5c79?_0x482ceb[_0x6adc('0x1a')]:_0x2326aa[_0x6adc('0x17')]+_0x2326aa[_0x6adc('0x19')];var _0x35dbd9;if(_0x4b99e0>=_0x455592){_0x4b99e0=_0x455592;_0x35dbd9=0xc8;}else{_0x35dbd9=0xce;}_0x155d6b['status'](_0x35dbd9);return _0x155d6b['set'](_0x6adc('0x1b'),_0x556505+'-'+_0x4b99e0+'/'+_0x455592)[_0x6adc('0x16')](_0x482ceb);}return null;};}function patchUpdates(_0x28d16a){return function(_0x2c7b05){try{jsonpatch['apply'](_0x2c7b05,_0x28d16a,!![]);}catch(_0x31fef7){return BPromise[_0x6adc('0x1c')](_0x31fef7);}return _0x2c7b05[_0x6adc('0x1d')]();};}function saveUpdates(_0x367391,_0x44c630){return function(_0xef60d4){if(_0xef60d4){return _0xef60d4['update'](_0x367391)[_0x6adc('0x1e')](function(_0x1bf26c){return _0x1bf26c;});}return null;};}function removeEntity(_0x2d4647,_0x171e40){return function(_0x13600e){if(_0x13600e){return _0x13600e[_0x6adc('0x1f')]()[_0x6adc('0x1e')](function(){var _0x1aa95d=_0x13600e[_0x6adc('0x20')]({'plain':!![]});var _0x5bc7b0='CmContactHasItems';return db['UserProfileResource'][_0x6adc('0x1f')]({'where':{'type':_0x5bc7b0,'resourceId':_0x1aa95d['id']}})['then'](function(){return _0x13600e;});})[_0x6adc('0x1e')](function(){_0x2d4647['status'](0xcc)[_0x6adc('0x21')]();});}};}function handleEntityNotFound(_0x3280f5,_0x423e89){return function(_0x331cf9){if(!_0x331cf9){_0x3280f5[_0x6adc('0x14')](0x194);}return _0x331cf9;};}function handleError(_0x3a4016,_0x1cf23f){_0x1cf23f=_0x1cf23f||0x1f4;return function(_0x129a6b){logger[_0x6adc('0x22')](_0x129a6b[_0x6adc('0x23')]);if(_0x129a6b[_0x6adc('0x24')]){delete _0x129a6b[_0x6adc('0x24')];}_0x3a4016['status'](_0x1cf23f)['send'](_0x129a6b);};}exports[_0x6adc('0x25')]=function(_0x581ab6,_0x11c4ed){var _0xfddf0={},_0x53ce22={},_0x123d9c={'count':0x0,'rows':[]};var _0x2fea9e=_[_0x6adc('0x26')](db['CmContactHasItem']['rawAttributes'],function(_0x3c93e4){return{'name':_0x3c93e4['fieldName'],'type':_0x3c93e4[_0x6adc('0x27')][_0x6adc('0x28')]};});_0x53ce22[_0x6adc('0x29')]=_[_0x6adc('0x26')](_0x2fea9e,'name');_0x53ce22[_0x6adc('0x2a')]=_[_0x6adc('0x2b')](_0x581ab6[_0x6adc('0x2a')]);_0x53ce22['filters']=_['intersection'](_0x53ce22[_0x6adc('0x29')],_0x53ce22['query']);_0xfddf0['attributes']=_[_0x6adc('0x2c')](_0x53ce22[_0x6adc('0x29')],qs[_0x6adc('0x2d')](_0x581ab6['query'][_0x6adc('0x2d')]));_0xfddf0[_0x6adc('0x2e')]=_0xfddf0[_0x6adc('0x2e')][_0x6adc('0x2f')]?_0xfddf0['attributes']:_0x53ce22['model'];if(!_0x581ab6[_0x6adc('0x2a')]['hasOwnProperty']('nolimit')){_0xfddf0[_0x6adc('0x19')]=qs[_0x6adc('0x19')](_0x581ab6['query']['limit']);_0xfddf0['offset']=qs[_0x6adc('0x17')](_0x581ab6[_0x6adc('0x2a')][_0x6adc('0x17')]);}_0xfddf0[_0x6adc('0x30')]=qs[_0x6adc('0x31')](_0x581ab6[_0x6adc('0x2a')][_0x6adc('0x31')]);_0xfddf0['where']=qs[_0x6adc('0x32')](_[_0x6adc('0x33')](_0x581ab6[_0x6adc('0x2a')],_0x53ce22[_0x6adc('0x32')]),_0x2fea9e);if(_0x581ab6['query']['filter']){_0xfddf0['where']=_[_0x6adc('0x34')](_0xfddf0['where'],{'$or':_[_0x6adc('0x26')](_0x2fea9e,function(_0x4ddb1d){if(_0x4ddb1d[_0x6adc('0x27')]!==_0x6adc('0x35')){var _0x619869={};_0x619869[_0x4ddb1d[_0x6adc('0x24')]]={'$like':'%'+_0x581ab6[_0x6adc('0x2a')]['filter']+'%'};return _0x619869;}})});}_0xfddf0=_[_0x6adc('0x34')]({},_0xfddf0,_0x581ab6[_0x6adc('0x36')]);var _0x5c9d82={'where':_0xfddf0[_0x6adc('0x37')]};return db[_0x6adc('0x38')]['count'](_0x5c9d82)['then'](function(_0x46c472){_0x123d9c[_0x6adc('0x1a')]=_0x46c472;if(_0x581ab6['query'][_0x6adc('0x39')]){_0xfddf0['include']=[{'all':!![]}];}return db[_0x6adc('0x38')]['findAll'](_0xfddf0);})['then'](function(_0x14d4e6){_0x123d9c[_0x6adc('0x3a')]=_0x14d4e6;return _0x123d9c;})['then'](respondWithFilteredResult(_0x11c4ed,_0xfddf0))['catch'](handleError(_0x11c4ed,null));};exports[_0x6adc('0x3b')]=function(_0x724551,_0x5dce5e){var _0x17bf2f={'raw':!![],'where':{'id':_0x724551[_0x6adc('0x3c')]['id']}},_0x55c6ff={};_0x55c6ff[_0x6adc('0x29')]=_[_0x6adc('0x2b')](db[_0x6adc('0x38')][_0x6adc('0x3d')]);_0x55c6ff['query']=_[_0x6adc('0x2b')](_0x724551['query']);_0x55c6ff['filters']=_['intersection'](_0x55c6ff[_0x6adc('0x29')],_0x55c6ff[_0x6adc('0x2a')]);_0x17bf2f[_0x6adc('0x2e')]=_[_0x6adc('0x2c')](_0x55c6ff[_0x6adc('0x29')],qs[_0x6adc('0x2d')](_0x724551['query'][_0x6adc('0x2d')]));_0x17bf2f[_0x6adc('0x2e')]=_0x17bf2f[_0x6adc('0x2e')][_0x6adc('0x2f')]?_0x17bf2f['attributes']:_0x55c6ff[_0x6adc('0x29')];if(_0x724551[_0x6adc('0x2a')][_0x6adc('0x39')]){_0x17bf2f[_0x6adc('0x3e')]=[{'all':!![]}];}_0x17bf2f=_['merge']({},_0x17bf2f,_0x724551[_0x6adc('0x36')]);return db[_0x6adc('0x38')][_0x6adc('0x3f')](_0x17bf2f)['then'](handleEntityNotFound(_0x5dce5e,null))[_0x6adc('0x1e')](respondWithResult(_0x5dce5e,null))[_0x6adc('0x40')](handleError(_0x5dce5e,null));};exports['create']=function(_0xae95d1,_0x3a1294){return db['CmContactHasItem'][_0x6adc('0x41')](_0xae95d1['body'],{})['then'](function(_0x5bf67f){var _0x17e92f=_0xae95d1[_0x6adc('0x42')][_0x6adc('0x20')]({'plain':!![]});if(!_0x17e92f)throw new Error(_0x6adc('0x43'));if(_0x17e92f['role']===_0x6adc('0x42')){var _0x4cd545=_0x5bf67f['get']({'plain':!![]});var _0x5d9390=_0x6adc('0x44');return db[_0x6adc('0x45')]['find']({'where':{'name':_0x5d9390,'userProfileId':_0x17e92f['userProfileId']},'raw':!![]})[_0x6adc('0x1e')](function(_0x592413){if(_0x592413&&_0x592413[_0x6adc('0x46')]===0x0){return db[_0x6adc('0x47')][_0x6adc('0x41')]({'name':_0x4cd545[_0x6adc('0x24')],'resourceId':_0x4cd545['id'],'type':_0x592413[_0x6adc('0x24')],'sectionId':_0x592413['id']},{})[_0x6adc('0x1e')](function(){return _0x5bf67f;});}else{return _0x5bf67f;}})[_0x6adc('0x40')](function(_0x458768){logger['error'](_0x6adc('0x48'),_0x458768);throw _0x458768;});}return _0x5bf67f;})['then'](respondWithResult(_0x3a1294,0xc9))[_0x6adc('0x40')](handleError(_0x3a1294,null));};exports[_0x6adc('0x49')]=function(_0x3088af,_0x38b540){if(_0x3088af[_0x6adc('0x4a')]['id']){delete _0x3088af[_0x6adc('0x4a')]['id'];}return db[_0x6adc('0x38')]['find']({'where':{'id':_0x3088af[_0x6adc('0x3c')]['id']}})['then'](handleEntityNotFound(_0x38b540,null))[_0x6adc('0x1e')](saveUpdates(_0x3088af['body'],null))['then'](respondWithResult(_0x38b540,null))[_0x6adc('0x40')](handleError(_0x38b540,null));};exports[_0x6adc('0x1f')]=function(_0x4d0e2a,_0x3aae66){return db[_0x6adc('0x38')]['find']({'where':{'id':_0x4d0e2a['params']['id']}})[_0x6adc('0x1e')](handleEntityNotFound(_0x3aae66,null))[_0x6adc('0x1e')](removeEntity(_0x3aae66,null))['catch'](handleError(_0x3aae66,null));};
\ No newline at end of file
index 5c3c94e..8cfecfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92ce=['path','rimraf','./cmContactHasItem.attributes','exports','define','CmContactHasItem','cm_contact_has_items','lodash','api','bluebird','request-promise'];(function(_0x154ce8,_0xbf2ded){var _0x5092db=function(_0x1561e0){while(--_0x1561e0){_0x154ce8['push'](_0x154ce8['shift']());}};_0x5092db(++_0xbf2ded);}(_0x92ce,0x1a9));var _0xe92c=function(_0xe4751c,_0x3c31af){_0xe4751c=_0xe4751c-0x0;var _0x37b78d=_0x92ce[_0xe4751c];return _0x37b78d;};'use strict';var _=require(_0xe92c('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xe92c('0x1'));var moment=require('moment');var BPromise=require(_0xe92c('0x2'));var rp=require(_0xe92c('0x3'));var fs=require('fs');var path=require(_0xe92c('0x4'));var rimraf=require(_0xe92c('0x5'));var config=require('../../config/environment');var attributes=require(_0xe92c('0x6'));module[_0xe92c('0x7')]=function(_0x584723,_0x360e98){return _0x584723[_0xe92c('0x8')](_0xe92c('0x9'),attributes,{'tableName':_0xe92c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3a00=['../../config/environment','./cmContactHasItem.attributes','exports','define','CmContactHasItem','cm_contact_has_items','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x5368da,_0x3097aa){var _0x3f0c69=function(_0x3814cf){while(--_0x3814cf){_0x5368da['push'](_0x5368da['shift']());}};_0x3f0c69(++_0x3097aa);}(_0x3a00,0x7b));var _0x03a0=function(_0x996bc8,_0x291e01){_0x996bc8=_0x996bc8-0x0;var _0x20b0ea=_0x3a00[_0x996bc8];return _0x20b0ea;};'use strict';var _=require(_0x03a0('0x0'));var util=require('util');var logger=require(_0x03a0('0x1'))(_0x03a0('0x2'));var moment=require('moment');var BPromise=require(_0x03a0('0x3'));var rp=require(_0x03a0('0x4'));var fs=require('fs');var path=require(_0x03a0('0x5'));var rimraf=require(_0x03a0('0x6'));var config=require(_0x03a0('0x7'));var attributes=require(_0x03a0('0x8'));module[_0x03a0('0x9')]=function(_0x4a37c1,_0x4f73ec){return _0x4a37c1[_0x03a0('0xa')](_0x03a0('0xb'),attributes,{'tableName':_0x03a0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1ecc682..ef633be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59ad=['lodash','util','moment','randomstring','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','CmContactHasItem,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch'];(function(_0x281478,_0x42c4cf){var _0x173abf=function(_0x82862b){while(--_0x82862b){_0x281478['push'](_0x281478['shift']());}};_0x173abf(++_0x42c4cf);}(_0x59ad,0x108));var _0xd59a=function(_0x449734,_0x512830){_0x449734=_0x449734-0x0;var _0x3be949=_0x59ad[_0x449734];return _0x3be949;};'use strict';var _=require(_0xd59a('0x0'));var util=require(_0xd59a('0x1'));var moment=require(_0xd59a('0x2'));var BPromise=require('bluebird');var rs=require(_0xd59a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd59a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd59a('0x5'))('rpc');var config=require(_0xd59a('0x6'));var jayson=require(_0xd59a('0x7'));var client=jayson[_0xd59a('0x8')][_0xd59a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3f444e,_0x4b5120,_0x503e99){return new BPromise(function(_0x3c55c4,_0x258943){return client[_0xd59a('0xa')](_0x3f444e,_0x503e99)[_0xd59a('0xb')](function(_0x3dc562){logger[_0xd59a('0xc')](_0xd59a('0xd'),_0x4b5120,_0xd59a('0xe'));logger[_0xd59a('0xf')]('CmContactHasItem,\x20%s,\x20%s,\x20%s',_0x4b5120,'request\x20sent',JSON[_0xd59a('0x10')](_0x3dc562));if(_0x3dc562[_0xd59a('0x11')]){if(_0x3dc562['error'][_0xd59a('0x12')]===0x1f4){logger['error'](_0xd59a('0xd'),_0x4b5120,_0x3dc562[_0xd59a('0x11')]['message']);return _0x258943(_0x3dc562[_0xd59a('0x11')][_0xd59a('0x13')]);}logger[_0xd59a('0x11')]('CmContactHasItem,\x20%s,\x20%s',_0x4b5120,_0x3dc562['error']['message']);return _0x3c55c4(_0x3dc562['error'][_0xd59a('0x13')]);}else{logger['info'](_0xd59a('0xd'),_0x4b5120,_0xd59a('0xe'));_0x3c55c4(_0x3dc562[_0xd59a('0x14')]['message']);}})[_0xd59a('0x15')](function(_0x3cc67d){logger[_0xd59a('0x11')](_0xd59a('0xd'),_0x4b5120,_0x3cc67d);_0x258943(_0x3cc67d);});});}
\ No newline at end of file
+var _0x0869=['../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','request\x20sent','CmContactHasItem,\x20%s,\x20%s,\x20%s','stringify','code','CmContactHasItem,\x20%s,\x20%s','error','message','result','catch','lodash','util','moment','randomstring'];(function(_0x475c8b,_0x5e0622){var _0x3dfc0b=function(_0xf776fe){while(--_0xf776fe){_0x475c8b['push'](_0x475c8b['shift']());}};_0x3dfc0b(++_0x5e0622);}(_0x0869,0x1c8));var _0x9086=function(_0x135b92,_0x502dba){_0x135b92=_0x135b92-0x0;var _0x3d4bb5=_0x0869[_0x135b92];return _0x3d4bb5;};'use strict';var _=require(_0x9086('0x0'));var util=require(_0x9086('0x1'));var moment=require(_0x9086('0x2'));var BPromise=require('bluebird');var rs=require(_0x9086('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9086('0x4'))(_0x9086('0x5'));var config=require(_0x9086('0x6'));var jayson=require(_0x9086('0x7'));var client=jayson[_0x9086('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x382c19,_0x535cf4,_0x55b5b5){return new BPromise(function(_0xd9f084,_0x1e77e9){return client[_0x9086('0x9')](_0x382c19,_0x55b5b5)[_0x9086('0xa')](function(_0x9b419f){logger['info']('CmContactHasItem,\x20%s,\x20%s',_0x535cf4,_0x9086('0xb'));logger['debug'](_0x9086('0xc'),_0x535cf4,_0x9086('0xb'),JSON[_0x9086('0xd')](_0x9b419f));if(_0x9b419f['error']){if(_0x9b419f['error'][_0x9086('0xe')]===0x1f4){logger['error'](_0x9086('0xf'),_0x535cf4,_0x9b419f[_0x9086('0x10')][_0x9086('0x11')]);return _0x1e77e9(_0x9b419f['error'][_0x9086('0x11')]);}logger[_0x9086('0x10')](_0x9086('0xf'),_0x535cf4,_0x9b419f[_0x9086('0x10')][_0x9086('0x11')]);return _0xd9f084(_0x9b419f[_0x9086('0x10')][_0x9086('0x11')]);}else{logger['info'](_0x9086('0xf'),_0x535cf4,_0x9086('0xb'));_0xd9f084(_0x9b419f[_0x9086('0x12')]['message']);}})[_0x9086('0x13')](function(_0x3b49da){logger[_0x9086('0x10')](_0x9086('0xf'),_0x535cf4,_0x3b49da);_0x1e77e9(_0x3b49da);});});}
\ No newline at end of file
index 1f3e26e..ee6104c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x974f=['put','delete','exports','util','path','connect-timeout','express','get','isAuthenticated','index','/:id','post','create'];(function(_0x8de54f,_0x271987){var _0x14cba4=function(_0x58ed41){while(--_0x58ed41){_0x8de54f['push'](_0x8de54f['shift']());}};_0x14cba4(++_0x271987);}(_0x974f,0x85));var _0xf974=function(_0x112948,_0x10dfcf){_0x112948=_0x112948-0x0;var _0x1eec08=_0x974f[_0x112948];return _0x1eec08;};'use strict';var multer=require('multer');var util=require(_0xf974('0x0'));var path=require(_0xf974('0x1'));var timeout=require(_0xf974('0x2'));var express=require(_0xf974('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./cmContactHasItem.controller');router[_0xf974('0x4')]('/',auth[_0xf974('0x5')](),controller[_0xf974('0x6')]);router[_0xf974('0x4')](_0xf974('0x7'),auth[_0xf974('0x5')](),controller['show']);router[_0xf974('0x8')]('/',auth[_0xf974('0x5')](),controller[_0xf974('0x9')]);router[_0xf974('0xa')](_0xf974('0x7'),auth[_0xf974('0x5')](),controller['update']);router[_0xf974('0xb')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xf974('0xc')]=router;
\ No newline at end of file
+var _0xa36b=['delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContactHasItem.controller','get','isAuthenticated','index','/:id','show','post','put','update'];(function(_0x516ebd,_0x37d862){var _0x307c3e=function(_0x1b3389){while(--_0x1b3389){_0x516ebd['push'](_0x516ebd['shift']());}};_0x307c3e(++_0x37d862);}(_0xa36b,0x107));var _0xba36=function(_0x95a3b4,_0x3e2773){_0x95a3b4=_0x95a3b4-0x0;var _0x2235b9=_0xa36b[_0x95a3b4];return _0x2235b9;};'use strict';var multer=require('multer');var util=require(_0xba36('0x0'));var path=require(_0xba36('0x1'));var timeout=require(_0xba36('0x2'));var express=require(_0xba36('0x3'));var router=express['Router']();var fs_extra=require(_0xba36('0x4'));var auth=require(_0xba36('0x5'));var interaction=require(_0xba36('0x6'));var config=require(_0xba36('0x7'));var controller=require(_0xba36('0x8'));router[_0xba36('0x9')]('/',auth[_0xba36('0xa')](),controller[_0xba36('0xb')]);router[_0xba36('0x9')](_0xba36('0xc'),auth[_0xba36('0xa')](),controller[_0xba36('0xd')]);router[_0xba36('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0xba36('0xf')](_0xba36('0xc'),auth[_0xba36('0xa')](),controller[_0xba36('0x10')]);router[_0xba36('0x11')]('/:id',auth[_0xba36('0xa')](),controller[_0xba36('0x12')]);module[_0xba36('0x13')]=router;
\ No newline at end of file
index 3f551c6..dc71afe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x528e=['parse','values','isArray','setDataValue','stringify','BOOLEAN','ENUM','sequelize','lodash','VIRTUAL','getDataValue','name','STRING','TEXT','select'];(function(_0x5f3127,_0xf0dab1){var _0x37d392=function(_0x6db34e){while(--_0x6db34e){_0x5f3127['push'](_0x5f3127['shift']());}};_0x37d392(++_0xf0dab1);}(_0x528e,0x160));var _0xe528=function(_0x153e1e,_0x5eb52f){_0x153e1e=_0x153e1e-0x0;var _0x2654ed=_0x528e[_0x153e1e];return _0x2654ed;};'use strict';var Sequelize=require(_0xe528('0x0'));var _=require(_0xe528('0x1'));module['exports']={'name':{'type':Sequelize[_0xe528('0x2')],'get':function(_0x54ef53){return this[_0xe528('0x3')]('alias');}},'alias':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x1e9b2a){this['setDataValue']('alias',_0x1e9b2a?_0x1e9b2a:this[_0xe528('0x3')](_0xe528('0x4')));}},'type':{'type':Sequelize[_0xe528('0x5')],'allowNull':![]},'values':{'type':Sequelize[_0xe528('0x6')]('long'),'get':function(){if(this['getDataValue']('type')===_0xe528('0x7')){return JSON[_0xe528('0x8')](this[_0xe528('0x3')](_0xe528('0x9')));}else{return this[_0xe528('0x3')](_0xe528('0x9'));}},'set':function(_0x1ed329){if(Array[_0xe528('0xa')](_0x1ed329)){this[_0xe528('0xb')]('values',JSON[_0xe528('0xc')](_0x1ed329));}else{this[_0xe528('0xb')](_0xe528('0x9'),_0x1ed329);}}},'required':{'type':Sequelize[_0xe528('0xd')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xe528('0xd')],'defaultValue':![]},'actionType':{'type':Sequelize[_0xe528('0xe')]('voice')}};
\ No newline at end of file
+var _0x4a95=['setDataValue','alias','name','STRING','TEXT','long','type','select','parse','values','isArray','stringify','BOOLEAN','sequelize','lodash','exports','getDataValue'];(function(_0x4a38f1,_0xdae7a1){var _0x5056ed=function(_0x2d0da3){while(--_0x2d0da3){_0x4a38f1['push'](_0x4a38f1['shift']());}};_0x5056ed(++_0xdae7a1);}(_0x4a95,0xa6));var _0x54a9=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x4a95[_0x432682];return _0x463d05;};'use strict';var Sequelize=require(_0x54a9('0x0'));var _=require(_0x54a9('0x1'));module[_0x54a9('0x2')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x21af8b){return this[_0x54a9('0x3')]('alias');}},'alias':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0xc9e609){this[_0x54a9('0x4')](_0x54a9('0x5'),_0xc9e609?_0xc9e609:this[_0x54a9('0x3')](_0x54a9('0x6')));}},'type':{'type':Sequelize[_0x54a9('0x7')],'allowNull':![]},'values':{'type':Sequelize[_0x54a9('0x8')](_0x54a9('0x9')),'get':function(){if(this[_0x54a9('0x3')](_0x54a9('0xa'))===_0x54a9('0xb')){return JSON[_0x54a9('0xc')](this[_0x54a9('0x3')](_0x54a9('0xd')));}else{return this[_0x54a9('0x3')](_0x54a9('0xd'));}},'set':function(_0x3e5316){if(Array[_0x54a9('0xe')](_0x3e5316)){this['setDataValue'](_0x54a9('0xd'),JSON[_0x54a9('0xf')](_0x3e5316));}else{this[_0x54a9('0x4')]('values',_0x3e5316);}}},'required':{'type':Sequelize[_0x54a9('0x10')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0x54a9('0x10')],'defaultValue':![]},'actionType':{'type':Sequelize['ENUM']('voice')}};
\ No newline at end of file
index 7a819ba..ff2f3c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27f4=['stack','name','index','map','CmCustomField','fieldName','key','model','differenceBy','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','options','includeAll','include','findAll','rows','catch','params','keys','length','find','body','create','sequelize','transaction','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','queryInterface','cm_contacts','format','cf_%d','rimraf','zip-dir','moment','bluebird','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error'];(function(_0x1431fc,_0x2d0cf5){var _0x193b41=function(_0x5ea6e1){while(--_0x5ea6e1){_0x1431fc['push'](_0x1431fc['shift']());}};_0x193b41(++_0x2d0cf5);}(_0x27f4,0x87));var _0x427f=function(_0x38a9cb,_0xfd8b2b){_0x38a9cb=_0x38a9cb-0x0;var _0xfa7687=_0x27f4[_0x38a9cb];return _0xfa7687;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x427f('0x0'));var zipdir=require(_0x427f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x427f('0x2'));var BPromise=require(_0x427f('0x3'));var Mustache=require('mustache');var util=require(_0x427f('0x4'));var path=require(_0x427f('0x5'));var sox=require(_0x427f('0x6'));var csv=require(_0x427f('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x427f('0x8'));var squel=require(_0x427f('0x9'));var crypto=require(_0x427f('0xa'));var jsforce=require(_0x427f('0xb'));var deskjs=require(_0x427f('0xc'));var toCsv=require(_0x427f('0x7'));var querystring=require('querystring');var Papa=require(_0x427f('0xd'));var Redis=require(_0x427f('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x427f('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x427f('0x10'))(_0x427f('0x11'));var utils=require(_0x427f('0x12'));var config=require(_0x427f('0x13'));var licenseUtil=require(_0x427f('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xe86d6c,_0x3910ce){_0x3910ce=_0x3910ce||0xcc;return function(_0x565622){if(_0x565622){return _0xe86d6c[_0x427f('0x15')](_0x3910ce);}return _0xe86d6c[_0x427f('0x16')](_0x3910ce)[_0x427f('0x17')]();};}function respondWithResult(_0x51e27c,_0x21518c){_0x21518c=_0x21518c||0xc8;return function(_0x183e36){if(_0x183e36){return _0x51e27c['status'](_0x21518c)[_0x427f('0x18')](_0x183e36);}};}function respondWithFilteredResult(_0x31194c,_0x46a415){return function(_0xf444f){if(_0xf444f){var _0x40b12a=typeof _0x46a415[_0x427f('0x19')]===_0x427f('0x1a')&&typeof _0x46a415['limit']===_0x427f('0x1a');var _0x4239ce=_0xf444f[_0x427f('0x1b')];var _0x17f6ef=_0x40b12a?0x0:_0x46a415[_0x427f('0x19')];var _0x2381aa=_0x40b12a?_0xf444f[_0x427f('0x1b')]:_0x46a415[_0x427f('0x19')]+_0x46a415['limit'];var _0x3c9b7a;if(_0x2381aa>=_0x4239ce){_0x2381aa=_0x4239ce;_0x3c9b7a=0xc8;}else{_0x3c9b7a=0xce;}_0x31194c[_0x427f('0x16')](_0x3c9b7a);return _0x31194c[_0x427f('0x1c')](_0x427f('0x1d'),_0x17f6ef+'-'+_0x2381aa+'/'+_0x4239ce)[_0x427f('0x18')](_0xf444f);}return null;};}function patchUpdates(_0x45fcce){return function(_0x34efeb){try{jsonpatch[_0x427f('0x1e')](_0x34efeb,_0x45fcce,!![]);}catch(_0x3bb1d2){return BPromise[_0x427f('0x1f')](_0x3bb1d2);}return _0x34efeb[_0x427f('0x20')]();};}function saveUpdates(_0x4bdd3a,_0x186735){return function(_0x1fc0bd){if(_0x1fc0bd){return _0x1fc0bd[_0x427f('0x21')](_0x4bdd3a)[_0x427f('0x22')](function(_0xffb86f){return _0xffb86f;});}return null;};}function removeEntity(_0x17b16e,_0x415c6e){return function(_0x18cd73){if(_0x18cd73){return _0x18cd73[_0x427f('0x23')]()['then'](function(){_0x17b16e[_0x427f('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ebccf,_0x5a6fa3){return function(_0x241d4a){if(!_0x241d4a){_0x2ebccf[_0x427f('0x15')](0x194);}return _0x241d4a;};}function handleError(_0x43cb97,_0xe121ea){_0xe121ea=_0xe121ea||0x1f4;return function(_0x12fe1d){logger[_0x427f('0x24')](_0x12fe1d[_0x427f('0x25')]);if(_0x12fe1d[_0x427f('0x26')]){delete _0x12fe1d[_0x427f('0x26')];}_0x43cb97[_0x427f('0x16')](_0xe121ea)['send'](_0x12fe1d);};}exports[_0x427f('0x27')]=function(_0xb14416,_0x33af69){var _0x738c1d={},_0x5a7a6e={},_0x4dd047={'count':0x0,'rows':[]};var _0x5590da=_[_0x427f('0x28')](db[_0x427f('0x29')]['rawAttributes'],function(_0x961668){return{'name':_0x961668[_0x427f('0x2a')],'type':_0x961668['type'][_0x427f('0x2b')]};});_0x5a7a6e[_0x427f('0x2c')]=_[_0x427f('0x2d')](_[_0x427f('0x28')](_0x5590da,_0x427f('0x26')),[_0x427f('0x26')]);_0x5a7a6e[_0x427f('0x2e')]=_['keys'](_0xb14416[_0x427f('0x2e')]);_0x5a7a6e[_0x427f('0x2f')]=_[_0x427f('0x30')](_0x5a7a6e[_0x427f('0x2c')],_0x5a7a6e['query']);_0x738c1d[_0x427f('0x31')]=_[_0x427f('0x30')](_0x5a7a6e['model'],qs[_0x427f('0x32')](_0xb14416[_0x427f('0x2e')][_0x427f('0x32')]));_0x738c1d[_0x427f('0x31')]=_0x738c1d[_0x427f('0x31')]['length']?_0x738c1d[_0x427f('0x31')]:_0x5a7a6e[_0x427f('0x2c')];if(!_0xb14416[_0x427f('0x2e')][_0x427f('0x33')](_0x427f('0x34'))){_0x738c1d[_0x427f('0x35')]=qs['limit'](_0xb14416[_0x427f('0x2e')][_0x427f('0x35')]);_0x738c1d[_0x427f('0x19')]=qs['offset'](_0xb14416[_0x427f('0x2e')]['offset']);}_0x738c1d[_0x427f('0x36')]=qs['sort'](_0xb14416[_0x427f('0x2e')][_0x427f('0x37')]);_0x738c1d[_0x427f('0x38')]=qs[_0x427f('0x2f')](_[_0x427f('0x39')](_0xb14416['query'],_0x5a7a6e['filters']),_0x5590da);if(_0xb14416[_0x427f('0x2e')][_0x427f('0x3a')]){_0x738c1d[_0x427f('0x38')]=_[_0x427f('0x3b')](_0x738c1d[_0x427f('0x38')],{'$or':_[_0x427f('0x28')](_0x5590da,function(_0xf84f4f){if(_0xf84f4f[_0x427f('0x3c')]!=='VIRTUAL'){var _0x2ca906={};_0x2ca906[_0xf84f4f[_0x427f('0x26')]]={'$like':'%'+_0xb14416[_0x427f('0x2e')][_0x427f('0x3a')]+'%'};return _0x2ca906;}})});}_0x738c1d=_[_0x427f('0x3b')]({},_0x738c1d,_0xb14416[_0x427f('0x3d')]);var _0x226d62={'where':_0x738c1d[_0x427f('0x38')]};return db['CmCustomField'][_0x427f('0x1b')](_0x226d62)[_0x427f('0x22')](function(_0x26da47){_0x4dd047[_0x427f('0x1b')]=_0x26da47;if(_0xb14416['query'][_0x427f('0x3e')]){_0x738c1d[_0x427f('0x3f')]=[{'all':!![]}];}return db[_0x427f('0x29')][_0x427f('0x40')](_0x738c1d);})['then'](function(_0x2a4e7b){_0x4dd047[_0x427f('0x41')]=_0x2a4e7b;return _0x4dd047;})['then'](respondWithFilteredResult(_0x33af69,_0x738c1d))[_0x427f('0x42')](handleError(_0x33af69,null));};exports['show']=function(_0x2a5645,_0x1f052a){var _0x46f29c={'raw':!![],'where':{'id':_0x2a5645[_0x427f('0x43')]['id']}},_0x5ea50b={};_0x5ea50b[_0x427f('0x2c')]=_[_0x427f('0x44')](db[_0x427f('0x29')]['rawAttributes']);_0x5ea50b['query']=_[_0x427f('0x44')](_0x2a5645['query']);_0x5ea50b[_0x427f('0x2f')]=_['intersection'](_0x5ea50b[_0x427f('0x2c')],_0x5ea50b[_0x427f('0x2e')]);_0x46f29c[_0x427f('0x31')]=_[_0x427f('0x30')](_0x5ea50b['model'],qs[_0x427f('0x32')](_0x2a5645[_0x427f('0x2e')][_0x427f('0x32')]));_0x46f29c[_0x427f('0x31')]=_0x46f29c[_0x427f('0x31')][_0x427f('0x45')]?_0x46f29c[_0x427f('0x31')]:_0x5ea50b[_0x427f('0x2c')];if(_0x2a5645['query']['includeAll']){_0x46f29c[_0x427f('0x3f')]=[{'all':!![]}];}_0x46f29c=_[_0x427f('0x3b')]({},_0x46f29c,_0x2a5645[_0x427f('0x3d')]);return db[_0x427f('0x29')][_0x427f('0x46')](_0x46f29c)[_0x427f('0x22')](handleEntityNotFound(_0x1f052a,null))[_0x427f('0x22')](respondWithResult(_0x1f052a,null))[_0x427f('0x42')](handleError(_0x1f052a,null));};exports[_0x427f('0x21')]=function(_0x4bda64,_0x5420ae){if(_0x4bda64['body']['id']){delete _0x4bda64[_0x427f('0x47')]['id'];}return db[_0x427f('0x29')][_0x427f('0x46')]({'where':{'id':_0x4bda64['params']['id']}})[_0x427f('0x22')](handleEntityNotFound(_0x5420ae,null))[_0x427f('0x22')](saveUpdates(_0x4bda64[_0x427f('0x47')],null))[_0x427f('0x22')](respondWithResult(_0x5420ae,null))[_0x427f('0x42')](handleError(_0x5420ae,null));};exports[_0x427f('0x23')]=function(_0x1212a3,_0x49ad1f){return db[_0x427f('0x29')][_0x427f('0x46')]({'where':{'id':_0x1212a3[_0x427f('0x43')]['id']}})[_0x427f('0x22')](handleEntityNotFound(_0x49ad1f,null))[_0x427f('0x22')](removeEntity(_0x49ad1f,null))[_0x427f('0x42')](handleError(_0x49ad1f,null));};exports[_0x427f('0x48')]=function(_0x387270,_0x408f83){var _0x57a092;return db[_0x427f('0x49')][_0x427f('0x4a')](function(_0x70ff00){return db['CmCustomField'][_0x427f('0x48')](_0x387270['body'],{'transaction':_0x70ff00})['then'](function(_0x2d64b6){_0x57a092=_0x2d64b6;var _0x1d03e3={'type':db[_0x427f('0x4b')][_0x427f('0x4c')],'transaction':_0x70ff00};switch(_0x387270[_0x427f('0x47')]['type']){case _0x427f('0x4d'):_0x1d03e3[_0x427f('0x3c')]=db[_0x427f('0x4b')][_0x427f('0x4c')];break;case _0x427f('0x4e'):_0x1d03e3[_0x427f('0x3c')]=db[_0x427f('0x4b')][_0x427f('0x4f')];break;case _0x427f('0x50'):_0x1d03e3[_0x427f('0x3c')]=db[_0x427f('0x4b')][_0x427f('0x51')];_0x1d03e3['defaultValue']=![];break;default:}return db[_0x427f('0x49')][_0x427f('0x52')]['addColumn'](_0x427f('0x53'),util[_0x427f('0x54')](_0x427f('0x55'),_0x57a092['id']),_0x1d03e3);})[_0x427f('0x22')](function(){return _0x57a092;});})[_0x427f('0x22')](respondWithResult(_0x408f83,0xc9))[_0x427f('0x42')](handleError(_0x408f83,null));};
\ No newline at end of file
+var _0x9c12=['attributes','model','fields','length','hasOwnProperty','nolimit','order','where','filters','pick','merge','VIRTUAL','filter','options','CmCustomField','then','include','rows','catch','params','body','find','create','sequelize','Sequelize','TEXT','text','number','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','addColumn','cm_contacts','format','cf_%d','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','end','error','stack','name','send','index','map','rawAttributes','type','key','differenceBy','query','keys','intersection'];(function(_0x482fc8,_0x30667b){var _0x439a71=function(_0x5f06ce){while(--_0x5f06ce){_0x482fc8['push'](_0x482fc8['shift']());}};_0x439a71(++_0x30667b);}(_0x9c12,0x136));var _0x29c1=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x9c12[_0x53ccf2];return _0x5a2964;};'use strict';var emlformat=require(_0x29c1('0x0'));var rimraf=require(_0x29c1('0x1'));var zipdir=require(_0x29c1('0x2'));var jsonpatch=require(_0x29c1('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x29c1('0x4'));var Mustache=require(_0x29c1('0x5'));var util=require(_0x29c1('0x6'));var path=require(_0x29c1('0x7'));var sox=require(_0x29c1('0x8'));var csv=require('to-csv');var ejs=require(_0x29c1('0x9'));var fs=require('fs');var fs_extra=require(_0x29c1('0xa'));var _=require('lodash');var squel=require(_0x29c1('0xb'));var crypto=require(_0x29c1('0xc'));var jsforce=require(_0x29c1('0xd'));var deskjs=require(_0x29c1('0xe'));var toCsv=require(_0x29c1('0xf'));var querystring=require(_0x29c1('0x10'));var Papa=require(_0x29c1('0x11'));var Redis=require(_0x29c1('0x12'));var authService=require(_0x29c1('0x13'));var qs=require(_0x29c1('0x14'));var as=require(_0x29c1('0x15'));var hardwareService=require(_0x29c1('0x16'));var logger=require('../../config/logger')(_0x29c1('0x17'));var utils=require(_0x29c1('0x18'));var config=require(_0x29c1('0x19'));var licenseUtil=require(_0x29c1('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x494e19,_0x23b4e5){_0x23b4e5=_0x23b4e5||0xcc;return function(_0x32e653){if(_0x32e653){return _0x494e19[_0x29c1('0x1b')](_0x23b4e5);}return _0x494e19['status'](_0x23b4e5)['end']();};}function respondWithResult(_0x342a8f,_0x4b6192){_0x4b6192=_0x4b6192||0xc8;return function(_0x28e0f5){if(_0x28e0f5){return _0x342a8f[_0x29c1('0x1c')](_0x4b6192)[_0x29c1('0x1d')](_0x28e0f5);}};}function respondWithFilteredResult(_0x8c7958,_0x2e8b82){return function(_0x1c3e7f){if(_0x1c3e7f){var _0x3017ae=typeof _0x2e8b82[_0x29c1('0x1e')]===_0x29c1('0x1f')&&typeof _0x2e8b82[_0x29c1('0x20')]===_0x29c1('0x1f');var _0x152ee2=_0x1c3e7f['count'];var _0x5373bc=_0x3017ae?0x0:_0x2e8b82[_0x29c1('0x1e')];var _0x2a6858=_0x3017ae?_0x1c3e7f[_0x29c1('0x21')]:_0x2e8b82[_0x29c1('0x1e')]+_0x2e8b82[_0x29c1('0x20')];var _0x7e51fa;if(_0x2a6858>=_0x152ee2){_0x2a6858=_0x152ee2;_0x7e51fa=0xc8;}else{_0x7e51fa=0xce;}_0x8c7958[_0x29c1('0x1c')](_0x7e51fa);return _0x8c7958['set'](_0x29c1('0x22'),_0x5373bc+'-'+_0x2a6858+'/'+_0x152ee2)[_0x29c1('0x1d')](_0x1c3e7f);}return null;};}function patchUpdates(_0x4da072){return function(_0x59cbed){try{jsonpatch[_0x29c1('0x23')](_0x59cbed,_0x4da072,!![]);}catch(_0x2a4456){return BPromise[_0x29c1('0x24')](_0x2a4456);}return _0x59cbed[_0x29c1('0x25')]();};}function saveUpdates(_0x3bb548,_0x3aa27f){return function(_0x477a31){if(_0x477a31){return _0x477a31[_0x29c1('0x26')](_0x3bb548)['then'](function(_0x5a9c0b){return _0x5a9c0b;});}return null;};}function removeEntity(_0x35252a,_0x4b8ee1){return function(_0x88df69){if(_0x88df69){return _0x88df69[_0x29c1('0x27')]()['then'](function(){_0x35252a[_0x29c1('0x1c')](0xcc)[_0x29c1('0x28')]();});}};}function handleEntityNotFound(_0x57c66e,_0x5b85c0){return function(_0x1e3c4c){if(!_0x1e3c4c){_0x57c66e['sendStatus'](0x194);}return _0x1e3c4c;};}function handleError(_0x55ca3b,_0x1d7b46){_0x1d7b46=_0x1d7b46||0x1f4;return function(_0x49e2c1){logger[_0x29c1('0x29')](_0x49e2c1[_0x29c1('0x2a')]);if(_0x49e2c1[_0x29c1('0x2b')]){delete _0x49e2c1['name'];}_0x55ca3b[_0x29c1('0x1c')](_0x1d7b46)[_0x29c1('0x2c')](_0x49e2c1);};}exports[_0x29c1('0x2d')]=function(_0x193ee1,_0x2c86fc){var _0x5e38c7={},_0x3f32f5={},_0x16db97={'count':0x0,'rows':[]};var _0x5ec2a1=_[_0x29c1('0x2e')](db['CmCustomField'][_0x29c1('0x2f')],function(_0x2015f7){return{'name':_0x2015f7['fieldName'],'type':_0x2015f7[_0x29c1('0x30')][_0x29c1('0x31')]};});_0x3f32f5['model']=_[_0x29c1('0x32')](_[_0x29c1('0x2e')](_0x5ec2a1,_0x29c1('0x2b')),['name']);_0x3f32f5[_0x29c1('0x33')]=_[_0x29c1('0x34')](_0x193ee1[_0x29c1('0x33')]);_0x3f32f5['filters']=_[_0x29c1('0x35')](_0x3f32f5['model'],_0x3f32f5[_0x29c1('0x33')]);_0x5e38c7[_0x29c1('0x36')]=_['intersection'](_0x3f32f5[_0x29c1('0x37')],qs['fields'](_0x193ee1['query'][_0x29c1('0x38')]));_0x5e38c7[_0x29c1('0x36')]=_0x5e38c7[_0x29c1('0x36')][_0x29c1('0x39')]?_0x5e38c7[_0x29c1('0x36')]:_0x3f32f5['model'];if(!_0x193ee1['query'][_0x29c1('0x3a')](_0x29c1('0x3b'))){_0x5e38c7['limit']=qs[_0x29c1('0x20')](_0x193ee1['query'][_0x29c1('0x20')]);_0x5e38c7[_0x29c1('0x1e')]=qs[_0x29c1('0x1e')](_0x193ee1[_0x29c1('0x33')][_0x29c1('0x1e')]);}_0x5e38c7[_0x29c1('0x3c')]=qs['sort'](_0x193ee1[_0x29c1('0x33')]['sort']);_0x5e38c7[_0x29c1('0x3d')]=qs[_0x29c1('0x3e')](_[_0x29c1('0x3f')](_0x193ee1['query'],_0x3f32f5[_0x29c1('0x3e')]),_0x5ec2a1);if(_0x193ee1[_0x29c1('0x33')]['filter']){_0x5e38c7['where']=_[_0x29c1('0x40')](_0x5e38c7[_0x29c1('0x3d')],{'$or':_[_0x29c1('0x2e')](_0x5ec2a1,function(_0x2f0bb0){if(_0x2f0bb0[_0x29c1('0x30')]!==_0x29c1('0x41')){var _0x59496e={};_0x59496e[_0x2f0bb0[_0x29c1('0x2b')]]={'$like':'%'+_0x193ee1[_0x29c1('0x33')][_0x29c1('0x42')]+'%'};return _0x59496e;}})});}_0x5e38c7=_[_0x29c1('0x40')]({},_0x5e38c7,_0x193ee1[_0x29c1('0x43')]);var _0x4e4714={'where':_0x5e38c7['where']};return db[_0x29c1('0x44')][_0x29c1('0x21')](_0x4e4714)[_0x29c1('0x45')](function(_0x226c3e){_0x16db97[_0x29c1('0x21')]=_0x226c3e;if(_0x193ee1[_0x29c1('0x33')]['includeAll']){_0x5e38c7[_0x29c1('0x46')]=[{'all':!![]}];}return db['CmCustomField']['findAll'](_0x5e38c7);})['then'](function(_0x56b895){_0x16db97[_0x29c1('0x47')]=_0x56b895;return _0x16db97;})[_0x29c1('0x45')](respondWithFilteredResult(_0x2c86fc,_0x5e38c7))[_0x29c1('0x48')](handleError(_0x2c86fc,null));};exports['show']=function(_0x380594,_0x3cdae6){var _0x2bae8a={'raw':!![],'where':{'id':_0x380594[_0x29c1('0x49')]['id']}},_0x2942c9={};_0x2942c9[_0x29c1('0x37')]=_[_0x29c1('0x34')](db['CmCustomField']['rawAttributes']);_0x2942c9[_0x29c1('0x33')]=_[_0x29c1('0x34')](_0x380594[_0x29c1('0x33')]);_0x2942c9[_0x29c1('0x3e')]=_[_0x29c1('0x35')](_0x2942c9[_0x29c1('0x37')],_0x2942c9[_0x29c1('0x33')]);_0x2bae8a[_0x29c1('0x36')]=_[_0x29c1('0x35')](_0x2942c9[_0x29c1('0x37')],qs[_0x29c1('0x38')](_0x380594['query'][_0x29c1('0x38')]));_0x2bae8a[_0x29c1('0x36')]=_0x2bae8a[_0x29c1('0x36')][_0x29c1('0x39')]?_0x2bae8a[_0x29c1('0x36')]:_0x2942c9[_0x29c1('0x37')];if(_0x380594[_0x29c1('0x33')]['includeAll']){_0x2bae8a[_0x29c1('0x46')]=[{'all':!![]}];}_0x2bae8a=_[_0x29c1('0x40')]({},_0x2bae8a,_0x380594[_0x29c1('0x43')]);return db[_0x29c1('0x44')]['find'](_0x2bae8a)[_0x29c1('0x45')](handleEntityNotFound(_0x3cdae6,null))['then'](respondWithResult(_0x3cdae6,null))[_0x29c1('0x48')](handleError(_0x3cdae6,null));};exports[_0x29c1('0x26')]=function(_0x5624cb,_0x23aa32){if(_0x5624cb[_0x29c1('0x4a')]['id']){delete _0x5624cb['body']['id'];}return db[_0x29c1('0x44')]['find']({'where':{'id':_0x5624cb[_0x29c1('0x49')]['id']}})['then'](handleEntityNotFound(_0x23aa32,null))['then'](saveUpdates(_0x5624cb[_0x29c1('0x4a')],null))['then'](respondWithResult(_0x23aa32,null))[_0x29c1('0x48')](handleError(_0x23aa32,null));};exports['destroy']=function(_0x3cd776,_0x790cf5){return db[_0x29c1('0x44')][_0x29c1('0x4b')]({'where':{'id':_0x3cd776[_0x29c1('0x49')]['id']}})[_0x29c1('0x45')](handleEntityNotFound(_0x790cf5,null))['then'](removeEntity(_0x790cf5,null))[_0x29c1('0x48')](handleError(_0x790cf5,null));};exports[_0x29c1('0x4c')]=function(_0x44ab63,_0x24d958){var _0x1e7d63;return db[_0x29c1('0x4d')]['transaction'](function(_0x4e9fb6){return db[_0x29c1('0x44')][_0x29c1('0x4c')](_0x44ab63[_0x29c1('0x4a')],{'transaction':_0x4e9fb6})[_0x29c1('0x45')](function(_0x126f3d){_0x1e7d63=_0x126f3d;var _0x3ee7e0={'type':db[_0x29c1('0x4e')][_0x29c1('0x4f')],'transaction':_0x4e9fb6};switch(_0x44ab63[_0x29c1('0x4a')]['type']){case _0x29c1('0x50'):_0x3ee7e0['type']=db['Sequelize'][_0x29c1('0x4f')];break;case _0x29c1('0x51'):_0x3ee7e0['type']=db[_0x29c1('0x4e')][_0x29c1('0x52')];break;case _0x29c1('0x53'):_0x3ee7e0['type']=db[_0x29c1('0x4e')][_0x29c1('0x54')];_0x3ee7e0[_0x29c1('0x55')]=![];break;default:}return db['sequelize'][_0x29c1('0x56')][_0x29c1('0x57')](_0x29c1('0x58'),util[_0x29c1('0x59')](_0x29c1('0x5a'),_0x1e7d63['id']),_0x3ee7e0);})[_0x29c1('0x45')](function(){return _0x1e7d63;});})['then'](respondWithResult(_0x24d958,0xc9))[_0x29c1('0x48')](handleError(_0x24d958,null));};
\ No newline at end of file
index ef8ded8..1077e6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdff4=['moment','bluebird','request-promise','path','rimraf','../../config/environment','CmCustomField','lodash','util','../../config/logger','api'];(function(_0x1902f9,_0x5a9018){var _0x2216db=function(_0x53eb96){while(--_0x53eb96){_0x1902f9['push'](_0x1902f9['shift']());}};_0x2216db(++_0x5a9018);}(_0xdff4,0x1a9));var _0x4dff=function(_0x1240db,_0x534893){_0x1240db=_0x1240db-0x0;var _0x37ec62=_0xdff4[_0x1240db];return _0x37ec62;};'use strict';var _=require(_0x4dff('0x0'));var util=require(_0x4dff('0x1'));var logger=require(_0x4dff('0x2'))(_0x4dff('0x3'));var moment=require(_0x4dff('0x4'));var BPromise=require(_0x4dff('0x5'));var rp=require(_0x4dff('0x6'));var fs=require('fs');var path=require(_0x4dff('0x7'));var rimraf=require(_0x4dff('0x8'));var config=require(_0x4dff('0x9'));var attributes=require('./cmCustomField.attributes');module['exports']=function(_0x365c98,_0x28a0e7){return _0x365c98['define'](_0x4dff('0xa'),attributes,{'tableName':'cm_custom_fields','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7f1f=['cm_custom_fields','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x514197,_0x2c20af){var _0x46da97=function(_0x4be6b9){while(--_0x4be6b9){_0x514197['push'](_0x514197['shift']());}};_0x46da97(++_0x2c20af);}(_0x7f1f,0x169));var _0xf7f1=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x7f1f[_0x24061a];return _0x82054e;};'use strict';var _=require(_0xf7f1('0x0'));var util=require(_0xf7f1('0x1'));var logger=require(_0xf7f1('0x2'))(_0xf7f1('0x3'));var moment=require('moment');var BPromise=require(_0xf7f1('0x4'));var rp=require(_0xf7f1('0x5'));var fs=require('fs');var path=require(_0xf7f1('0x6'));var rimraf=require(_0xf7f1('0x7'));var config=require(_0xf7f1('0x8'));var attributes=require('./cmCustomField.attributes');module[_0xf7f1('0x9')]=function(_0x39bd5e,_0x51e8ce){return _0x39bd5e[_0xf7f1('0xa')]('CmCustomField',attributes,{'tableName':_0xf7f1('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 60db36c..9d5da46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7843=['info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request'];(function(_0x1eda20,_0x1149f4){var _0x31b953=function(_0x25f0d8){while(--_0x25f0d8){_0x1eda20['push'](_0x1eda20['shift']());}};_0x31b953(++_0x1149f4);}(_0x7843,0xcf));var _0x3784=function(_0x2d047c,_0x253d9a){_0x2d047c=_0x2d047c-0x0;var _0x305737=_0x7843[_0x2d047c];return _0x305737;};'use strict';var _=require('lodash');var util=require(_0x3784('0x0'));var moment=require(_0x3784('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3784('0x2'));var logger=require(_0x3784('0x3'))(_0x3784('0x4'));var config=require(_0x3784('0x5'));var jayson=require(_0x3784('0x6'));var client=jayson['client'][_0x3784('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x37438f,_0xbef959,_0x31a5c8){return new BPromise(function(_0x2d134c,_0xa20cb8){return client[_0x3784('0x8')](_0x37438f,_0x31a5c8)['then'](function(_0x5436c9){logger[_0x3784('0x9')](_0x3784('0xa'),_0xbef959,_0x3784('0xb'));logger[_0x3784('0xc')](_0x3784('0xd'),_0xbef959,_0x3784('0xb'),JSON['stringify'](_0x5436c9));if(_0x5436c9[_0x3784('0xe')]){if(_0x5436c9['error'][_0x3784('0xf')]===0x1f4){logger['error'](_0x3784('0xa'),_0xbef959,_0x5436c9['error'][_0x3784('0x10')]);return _0xa20cb8(_0x5436c9[_0x3784('0xe')][_0x3784('0x10')]);}logger[_0x3784('0xe')](_0x3784('0xa'),_0xbef959,_0x5436c9['error']['message']);return _0x2d134c(_0x5436c9[_0x3784('0xe')]['message']);}else{logger[_0x3784('0x9')](_0x3784('0xa'),_0xbef959,_0x3784('0xb'));_0x2d134c(_0x5436c9['result'][_0x3784('0x10')]);}})[_0x3784('0x11')](function(_0x5624c5){logger['error'](_0x3784('0xa'),_0xbef959,_0x5624c5);_0xa20cb8(_0x5624c5);});});}
\ No newline at end of file
+var _0xc256=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','then','info','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result'];(function(_0x5977f4,_0x21ad57){var _0x4e6cd5=function(_0x35e4c2){while(--_0x35e4c2){_0x5977f4['push'](_0x5977f4['shift']());}};_0x4e6cd5(++_0x21ad57);}(_0xc256,0x161));var _0x6c25=function(_0x1b9ec4,_0x4f3208){_0x1b9ec4=_0x1b9ec4-0x0;var _0x3326ae=_0xc256[_0x1b9ec4];return _0x3326ae;};'use strict';var _=require(_0x6c25('0x0'));var util=require(_0x6c25('0x1'));var moment=require(_0x6c25('0x2'));var BPromise=require(_0x6c25('0x3'));var rs=require(_0x6c25('0x4'));var fs=require('fs');var Redis=require(_0x6c25('0x5'));var db=require(_0x6c25('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6c25('0x7'));var config=require(_0x6c25('0x8'));var jayson=require(_0x6c25('0x9'));var client=jayson[_0x6c25('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1724b6,_0x3026e4,_0x53d366){return new BPromise(function(_0x5b3cd1,_0x11850c){return client['request'](_0x1724b6,_0x53d366)[_0x6c25('0xb')](function(_0x3ffd8e){logger[_0x6c25('0xc')](_0x6c25('0xd'),_0x3026e4,_0x6c25('0xe'));logger[_0x6c25('0xf')]('CmCustomField,\x20%s,\x20%s,\x20%s',_0x3026e4,_0x6c25('0xe'),JSON[_0x6c25('0x10')](_0x3ffd8e));if(_0x3ffd8e[_0x6c25('0x11')]){if(_0x3ffd8e[_0x6c25('0x11')][_0x6c25('0x12')]===0x1f4){logger[_0x6c25('0x11')](_0x6c25('0xd'),_0x3026e4,_0x3ffd8e[_0x6c25('0x11')][_0x6c25('0x13')]);return _0x11850c(_0x3ffd8e[_0x6c25('0x11')][_0x6c25('0x13')]);}logger['error'](_0x6c25('0xd'),_0x3026e4,_0x3ffd8e[_0x6c25('0x11')][_0x6c25('0x13')]);return _0x5b3cd1(_0x3ffd8e[_0x6c25('0x11')][_0x6c25('0x13')]);}else{logger['info']('CmCustomField,\x20%s,\x20%s',_0x3026e4,_0x6c25('0xe'));_0x5b3cd1(_0x3ffd8e[_0x6c25('0x14')][_0x6c25('0x13')]);}})[_0x6c25('0x15')](function(_0x19f620){logger['error']('CmCustomField,\x20%s,\x20%s',_0x3026e4,_0x19f620);_0x11850c(_0x19f620);});});}
\ No newline at end of file
index 0bcc4a6..e3c0842 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f5b=['connect-timeout','express','Router','fs-extra','../../config/environment','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','multer','util','path'];(function(_0x58870c,_0x151c64){var _0x534668=function(_0x433513){while(--_0x433513){_0x58870c['push'](_0x58870c['shift']());}};_0x534668(++_0x151c64);}(_0x3f5b,0x18c));var _0xb3f5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3f5b[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xb3f5('0x0'));var util=require(_0xb3f5('0x1'));var path=require(_0xb3f5('0x2'));var timeout=require(_0xb3f5('0x3'));var express=require(_0xb3f5('0x4'));var router=express[_0xb3f5('0x5')]();var fs_extra=require(_0xb3f5('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xb3f5('0x7'));var controller=require('./cmCustomField.controller');router[_0xb3f5('0x8')]('/',auth['isAuthenticated'](),controller[_0xb3f5('0x9')]);router['get'](_0xb3f5('0xa'),auth[_0xb3f5('0xb')](),controller[_0xb3f5('0xc')]);router[_0xb3f5('0xd')]('/',auth['isAuthenticated'](),controller[_0xb3f5('0xe')]);router[_0xb3f5('0xf')](_0xb3f5('0xa'),auth[_0xb3f5('0xb')](),controller[_0xb3f5('0x10')]);router[_0xb3f5('0x11')](_0xb3f5('0xa'),auth[_0xb3f5('0xb')](),controller[_0xb3f5('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x3ffb=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCustomField.controller','get','isAuthenticated','/:id','show','create','put','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x2e0443,_0x7e5974){var _0x52d450=function(_0x3a9985){while(--_0x3a9985){_0x2e0443['push'](_0x2e0443['shift']());}};_0x52d450(++_0x7e5974);}(_0x3ffb,0x13f));var _0xb3ff=function(_0x375198,_0x278b6f){_0x375198=_0x375198-0x0;var _0x1190fe=_0x3ffb[_0x375198];return _0x1190fe;};'use strict';var multer=require(_0xb3ff('0x0'));var util=require(_0xb3ff('0x1'));var path=require(_0xb3ff('0x2'));var timeout=require(_0xb3ff('0x3'));var express=require(_0xb3ff('0x4'));var router=express['Router']();var fs_extra=require(_0xb3ff('0x5'));var auth=require(_0xb3ff('0x6'));var interaction=require(_0xb3ff('0x7'));var config=require(_0xb3ff('0x8'));var controller=require(_0xb3ff('0x9'));router[_0xb3ff('0xa')]('/',auth[_0xb3ff('0xb')](),controller['index']);router[_0xb3ff('0xa')](_0xb3ff('0xc'),auth[_0xb3ff('0xb')](),controller[_0xb3ff('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb3ff('0xe')]);router[_0xb3ff('0xf')](_0xb3ff('0xc'),auth[_0xb3ff('0xb')](),controller['update']);router[_0xb3ff('0x10')](_0xb3ff('0xc'),auth['isAuthenticated'](),controller[_0xb3ff('0x11')]);module[_0xb3ff('0x12')]=router;
\ No newline at end of file
index e6e8ad1..63b9c3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef66=['sequelize','exports','STRING','BOOLEAN','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','DATE','UNSIGNED','contactListQueue'];(function(_0x41d8c3,_0x265857){var _0x467270=function(_0x4bccd8){while(--_0x4bccd8){_0x41d8c3['push'](_0x41d8c3['shift']());}};_0x467270(++_0x265857);}(_0xef66,0xbe));var _0x6ef6=function(_0xc1b8bd,_0x4a37bd){_0xc1b8bd=_0xc1b8bd-0x0;var _0xab8c32=_0xef66[_0xc1b8bd];return _0xab8c32;};'use strict';var moment=require('moment');var Sequelize=require(_0x6ef6('0x0'));module[_0x6ef6('0x1')]={'phone':{'type':Sequelize[_0x6ef6('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0x6ef6('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x6ef6('0x4')](_0x6ef6('0x5'))},'countbusyretry':{'type':Sequelize[_0x6ef6('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x6ef6('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x6ef6('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x6ef6('0x7')]},'priority':{'type':Sequelize['INTEGER'](0x2)[_0x6ef6('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x6ef6('0x3')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x6ef6('0x9')},'ListId':{'type':Sequelize[_0x6ef6('0x6')],'unique':_0x6ef6('0x9')},'UserId':{'type':Sequelize[_0x6ef6('0x6')]},'VoiceQueueId':{'type':Sequelize[_0x6ef6('0x6')],'unique':_0x6ef6('0x9')},'CampaignId':{'type':Sequelize[_0x6ef6('0x6')]},'countnosuchnumberretry':{'type':Sequelize[_0x6ef6('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x6ef6('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x6ef6('0x6')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x6ef6('0x2')]},'recallmeNotifiedDate':{'type':Sequelize[_0x6ef6('0x7')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
+var _0x7a76=['moment','exports','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','BOOLEAN','contactListQueue'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x7a76,0x171));var _0x67a7=function(_0x564821,_0x4d037e){_0x564821=_0x564821-0x0;var _0x2b604d=_0x7a76[_0x564821];return _0x2b604d;};'use strict';var moment=require(_0x67a7('0x0'));var Sequelize=require('sequelize');module[_0x67a7('0x1')]={'phone':{'type':Sequelize[_0x67a7('0x2')],'allowNull':![]},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x67a7('0x3')],'defaultValue':moment()[_0x67a7('0x4')](_0x67a7('0x5'))},'countbusyretry':{'type':Sequelize[_0x67a7('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x67a7('0x6')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x67a7('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x67a7('0x7')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x67a7('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x67a7('0x3')]},'priority':{'type':Sequelize[_0x67a7('0x6')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x67a7('0x7')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x67a7('0x6')],'unique':_0x67a7('0x8')},'ListId':{'type':Sequelize[_0x67a7('0x6')],'unique':_0x67a7('0x8')},'UserId':{'type':Sequelize[_0x67a7('0x6')]},'VoiceQueueId':{'type':Sequelize[_0x67a7('0x6')],'unique':_0x67a7('0x8')},'CampaignId':{'type':Sequelize[_0x67a7('0x6')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x67a7('0x6')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x67a7('0x6')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x67a7('0x6')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x67a7('0x2')]},'recallmeNotifiedDate':{'type':Sequelize[_0x67a7('0x3')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
index 86c262d..eed73be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbeea=['phone','campaigntype','queue','ivr','ContactId','firstName','lastName','isNil','calleridname','end','getPreview','CmContact','getVoiceQueues','outbound','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','transaction','direction','isEmpty','hopperIds','priority','scheduledAt','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','Contact','Company','List','dialActive','update','CmCompany','Queue','getOpenContacts','preview','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','timezones','push','utcOffset','getTimezone','moment','../../components/parsers/qs','../../config/logger','api','../../mysqldb','status','json','offset','limit','count','Content-Range','sendStatus','error','stack','name','send','rawAttributes','type','key','model','map','keys','filters','concat','$and','$or','$gt','$gte','$lte','$ne','$eq','$not','$notBetween','$in','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','$any','attributes','intersection','fields','query','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','CmHopper','then','includeAll','include','findAll','rows','catch','params','find','create','body','describe','destroy','CampaignId','VoiceQueue','Campaign','VoiceQueueId','omit','createdAt','updatedAt','state','deleted','campaign','membername','UserId','user','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum'];(function(_0x12ffbd,_0x37c0aa){var _0x49c195=function(_0x50a9ac){while(--_0x50a9ac){_0x12ffbd['push'](_0x12ffbd['shift']());}};_0x49c195(++_0x37c0aa);}(_0xbeea,0xb1));var _0xabee=function(_0x5c125b,_0x569610){_0x5c125b=_0x5c125b-0x0;var _0x16b6d5=_0xbeea[_0x5c125b];return _0x16b6d5;};'use strict';var moment=require(_0xabee('0x0'));var _=require('lodash');var qs=require(_0xabee('0x1'));var logger=require(_0xabee('0x2'))(_0xabee('0x3'));var shared=require('../../config/environment');var db=require(_0xabee('0x4'))['db'];function respondWithResult(_0x59e264,_0x58afa7){_0x58afa7=_0x58afa7||0xc8;return function(_0x33571e){if(_0x33571e){return _0x59e264[_0xabee('0x5')](_0x58afa7)[_0xabee('0x6')](_0x33571e);}};}function respondWithFilteredResult(_0x1ea258,_0x58c9ef){return function(_0x5bb218){if(_0x5bb218){var _0x238317=typeof _0x58c9ef[_0xabee('0x7')]==='undefined'&&typeof _0x58c9ef[_0xabee('0x8')]==='undefined';var _0x14a78d=_0x5bb218[_0xabee('0x9')];var _0x2a1c06=_0x238317?0x0:_0x58c9ef[_0xabee('0x7')];var _0x33a862=_0x238317?_0x5bb218[_0xabee('0x9')]:_0x58c9ef['offset']+_0x58c9ef[_0xabee('0x8')];var _0x3bbb18;if(_0x33a862>=_0x14a78d){_0x33a862=_0x14a78d;_0x3bbb18=0xc8;}else{_0x3bbb18=0xce;}_0x1ea258[_0xabee('0x5')](_0x3bbb18);return _0x1ea258['set'](_0xabee('0xa'),_0x2a1c06+'-'+_0x33a862+'/'+_0x14a78d)[_0xabee('0x6')](_0x5bb218);}return null;};}function saveUpdates(_0x16d6a5,_0x49fb73){return function(_0x5915a1){if(_0x5915a1){return _0x5915a1['update'](_0x16d6a5)['then'](function(_0x57abc2){return _0x57abc2;});}return null;};}function handleEntityNotFound(_0x113c5c,_0x370a4e){return function(_0x38ba29){if(!_0x38ba29){_0x113c5c[_0xabee('0xb')](0x194);}return _0x38ba29;};}function handleError(_0x38cf66,_0x5e94ff){_0x5e94ff=_0x5e94ff||0x1f4;return function(_0x177670){logger[_0xabee('0xc')](_0x177670[_0xabee('0xd')]);if(_0x177670[_0xabee('0xe')]){delete _0x177670[_0xabee('0xe')];}_0x38cf66[_0xabee('0x5')](_0x5e94ff)[_0xabee('0xf')](_0x177670);};}exports['index']=function(_0x33e3c0,_0x112bb9){var _0x447ed3={},_0x471b24={},_0x150bdb={'count':0x0,'rows':[]};var _0xcf2973=_['map'](db['CmHopper'][_0xabee('0x10')],function(_0x593923){return{'name':_0x593923['fieldName'],'type':_0x593923[_0xabee('0x11')][_0xabee('0x12')]};});_0x471b24[_0xabee('0x13')]=_[_0xabee('0x14')](_0xcf2973,_0xabee('0xe'));_0x471b24['query']=_[_0xabee('0x15')](_0x33e3c0['query']);_0x471b24['filters']=_['intersection'](_0x471b24[_0xabee('0x13')],_0x471b24['query']);_0x471b24[_0xabee('0x16')]=_[_0xabee('0x17')](_0x471b24[_0xabee('0x16')],[_0xabee('0x18'),_0xabee('0x19'),_0xabee('0x1a'),_0xabee('0x1b'),'$lt',_0xabee('0x1c'),_0xabee('0x1d'),_0xabee('0x1e'),_0xabee('0x1f'),'$between',_0xabee('0x20'),_0xabee('0x21'),'$notIn',_0xabee('0x22'),_0xabee('0x23'),_0xabee('0x24'),_0xabee('0x25'),'$like',_0xabee('0x26'),_0xabee('0x27'),_0xabee('0x28'),_0xabee('0x29')]);_0x447ed3[_0xabee('0x2a')]=_[_0xabee('0x2b')](_0x471b24[_0xabee('0x13')],qs[_0xabee('0x2c')](_0x33e3c0[_0xabee('0x2d')]['fields']));_0x447ed3[_0xabee('0x2a')]=_0x447ed3['attributes'][_0xabee('0x2e')]?_0x447ed3[_0xabee('0x2a')]:_0x471b24[_0xabee('0x13')];if(!_0x33e3c0[_0xabee('0x2d')]['hasOwnProperty'](_0xabee('0x2f'))){_0x447ed3['limit']=qs[_0xabee('0x8')](_0x33e3c0['query'][_0xabee('0x8')]);_0x447ed3['offset']=qs['offset'](_0x33e3c0[_0xabee('0x2d')][_0xabee('0x7')]);}_0x447ed3[_0xabee('0x30')]=qs[_0xabee('0x31')](_0x33e3c0[_0xabee('0x2d')][_0xabee('0x31')]);_0x447ed3[_0xabee('0x32')]=qs[_0xabee('0x16')](_['pick'](_0x33e3c0[_0xabee('0x2d')],_0x471b24[_0xabee('0x16')]),_0xcf2973);if(_0x33e3c0[_0xabee('0x2d')][_0xabee('0x33')]){_0x447ed3[_0xabee('0x32')]=_[_0xabee('0x34')](_0x447ed3[_0xabee('0x32')],{'$or':_[_0xabee('0x14')](_0xcf2973,function(_0x41c4a3){if(_0x41c4a3[_0xabee('0x11')]!==_0xabee('0x35')){var _0x3112fd={};_0x3112fd[_0x41c4a3[_0xabee('0xe')]]={'$like':'%'+_0x33e3c0[_0xabee('0x2d')][_0xabee('0x33')]+'%'};return _0x3112fd;}})});}_0x447ed3=_[_0xabee('0x34')]({},_0x447ed3,_0x33e3c0[_0xabee('0x36')]);var _0x491279={'where':_0x447ed3['where']};return db[_0xabee('0x37')][_0xabee('0x9')](_0x491279)[_0xabee('0x38')](function(_0x153c0b){_0x150bdb['count']=_0x153c0b;if(_0x33e3c0[_0xabee('0x2d')][_0xabee('0x39')]){_0x447ed3[_0xabee('0x3a')]=[{'all':!![]}];}return db['CmHopper'][_0xabee('0x3b')](_0x447ed3);})['then'](function(_0x186333){_0x150bdb[_0xabee('0x3c')]=_0x186333;return _0x150bdb;})[_0xabee('0x38')](respondWithFilteredResult(_0x112bb9,_0x447ed3))[_0xabee('0x3d')](handleError(_0x112bb9,null));};exports['show']=function(_0x48d6ca,_0x417281){var _0xb76b1d={'raw':!![],'where':{'id':_0x48d6ca[_0xabee('0x3e')]['id']}},_0xa2ae67={};_0xa2ae67[_0xabee('0x13')]=_['keys'](db[_0xabee('0x37')][_0xabee('0x10')]);_0xa2ae67['query']=_[_0xabee('0x15')](_0x48d6ca[_0xabee('0x2d')]);_0xa2ae67['filters']=_[_0xabee('0x2b')](_0xa2ae67[_0xabee('0x13')],_0xa2ae67[_0xabee('0x2d')]);_0xb76b1d[_0xabee('0x2a')]=_[_0xabee('0x2b')](_0xa2ae67[_0xabee('0x13')],qs[_0xabee('0x2c')](_0x48d6ca['query'][_0xabee('0x2c')]));_0xb76b1d[_0xabee('0x2a')]=_0xb76b1d[_0xabee('0x2a')]['length']?_0xb76b1d[_0xabee('0x2a')]:_0xa2ae67[_0xabee('0x13')];if(_0x48d6ca['query'][_0xabee('0x39')]){_0xb76b1d[_0xabee('0x3a')]=[{'all':!![]}];}_0xb76b1d=_['merge']({},_0xb76b1d,_0x48d6ca[_0xabee('0x36')]);return db[_0xabee('0x37')][_0xabee('0x3f')](_0xb76b1d)[_0xabee('0x38')](handleEntityNotFound(_0x417281,null))[_0xabee('0x38')](respondWithResult(_0x417281,null))[_0xabee('0x3d')](handleError(_0x417281,null));};exports[_0xabee('0x40')]=function(_0x5a5fa7,_0x2aa2f0){return db[_0xabee('0x37')][_0xabee('0x40')](_0x5a5fa7['body'],{})[_0xabee('0x38')](respondWithResult(_0x2aa2f0,0xc9))[_0xabee('0x3d')](handleError(_0x2aa2f0,null));};exports['update']=function(_0x57c65c,_0x4b458f){if(_0x57c65c[_0xabee('0x41')]['id']){delete _0x57c65c[_0xabee('0x41')]['id'];}return db['CmHopper']['find']({'where':{'id':_0x57c65c[_0xabee('0x3e')]['id']}})[_0xabee('0x38')](handleEntityNotFound(_0x4b458f,null))[_0xabee('0x38')](saveUpdates(_0x57c65c[_0xabee('0x41')],null))[_0xabee('0x38')](respondWithResult(_0x4b458f,null))[_0xabee('0x3d')](handleError(_0x4b458f,null));};exports[_0xabee('0x42')]=function(_0x307d34,_0xfb2b6f){return db[_0xabee('0x37')][_0xabee('0x42')]()[_0xabee('0x38')](respondWithResult(_0xfb2b6f,null))[_0xabee('0x3d')](handleError(_0xfb2b6f,null));};exports[_0xabee('0x43')]=function(_0x3e277d,_0x252f60){var _0x1b5cf2;var _0x34dca8=_0x3e277d['params']['id'];return db[_0xabee('0x37')][_0xabee('0x3f')]({'where':{'id':_0x3e277d['params']['id']}})['then'](handleEntityNotFound(_0x252f60,null))[_0xabee('0x38')](function(_0x3ecfff){if(_0x3ecfff){return _0x3ecfff[_0xabee('0x43')]()[_0xabee('0x38')](function(_0xe2433f){return _0xe2433f;});}})[_0xabee('0x38')](function(_0x37e589){_0x1b5cf2=_0x37e589;if(_0x37e589){if(_0x37e589['VoiceQueueId']||_0x37e589[_0xabee('0x44')]){return db[_0x37e589['VoiceQueueId']?_0xabee('0x45'):_0xabee('0x46')]['find']({'where':{'id':_0x37e589[_0xabee('0x47')]?_0x37e589[_0xabee('0x47')]:_0x37e589[_0xabee('0x44')]},'attributes':['id','name'],'raw':!![]});}}})[_0xabee('0x38')](function(_0x4f36a4){var _0x1fc0da={};if(_0x4f36a4){_[_0xabee('0x34')](_0x1fc0da,_[_0xabee('0x48')](_0x1b5cf2['dataValues'],[_0xabee('0x49'),_0xabee('0x4a'),'id']));_0x1fc0da[_0xabee('0x4b')]=0x15;_0x1fc0da['statedesc']=_0xabee('0x4c');_0x1fc0da[_0xabee('0x4d')]=_0x4f36a4[_0xabee('0xe')];_0x1fc0da[_0xabee('0x4e')]=_0x3e277d['user'][_0xabee('0xe')];_0x1fc0da[_0xabee('0x4f')]=_0x3e277d[_0xabee('0x50')]['id'];_0x1fc0da['deleted']=!![];_0x1fc0da[_0xabee('0x51')]=moment()[_0xabee('0x52')](_0xabee('0x53'));_0x1fc0da[_0xabee('0x54')]=_0x1b5cf2[_0xabee('0x55')];_0x1fc0da[_0xabee('0x56')]=_0x1b5cf2[_0xabee('0x47')]?_0xabee('0x57'):_0xabee('0x58');return db['CmContact']['find']({'where':{'id':_0x1fc0da[_0xabee('0x59')]},'attributes':[_0xabee('0x5a'),_0xabee('0x5b')]})[_0xabee('0x38')](function(_0x30f70c){if(!_[_0xabee('0x5c')](_0x252f60)&&!_['isNil'](_0x30f70c[_0xabee('0x5a')])){_0x1fc0da[_0xabee('0x5d')]=_0x30f70c[_0xabee('0x5a')];if(!_['isNil'](_0x30f70c['lastName'])){_0x1fc0da[_0xabee('0x5d')]+='\x20'+_0x30f70c['lastName'];}}})['finally'](function(){return db['CmHopperFinal'][_0xabee('0x40')](_0x1fc0da);});}})['then'](function(_0x449530){return db['CmHopperAdditionalPhone'][_0xabee('0x43')]({'where':{'CmHopperId':_0x34dca8}});})['then'](function(){return _0x252f60[_0xabee('0x5')](0xcc)[_0xabee('0x5e')]();})[_0xabee('0x3d')](handleError(_0x252f60,null));};exports[_0xabee('0x5f')]=function(_0x553cfb,_0xc4a70d){var _0x5d52fd=[];return db[_0xabee('0x60')][_0xabee('0x42')]()[_0xabee('0x38')](function(_0x3a41cd){_0x5d52fd=_[_0xabee('0x15')](_0x3a41cd);return _0x553cfb[_0xabee('0x50')][_0xabee('0x61')]({'where':{'type':_0xabee('0x62'),'dialActive':!![],'dialMethod':'preview'},'attributes':['id',_0xabee('0x63'),_0xabee('0x64')],'raw':!![]});})['then'](function(_0x1d9fc3){if(_0x1d9fc3&&_0x1d9fc3['length']){return db[_0xabee('0x65')][_0xabee('0x66')](function(_0x230d3a){var _0x3d4fef={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0xabee('0x53'))},'VoiceQueueId':{'$in':_[_0xabee('0x14')](_0x1d9fc3,'id')},'$or':[{'UserId':null},{'UserId':_0x553cfb[_0xabee('0x50')]['id']}]};var _0x47a0d2={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x1d9fc3)[_0xabee('0x33')]([_0xabee('0x64'),0x0])['map']('id')['value']()},'$or':[{'UserId':null},{'UserId':_0x553cfb[_0xabee('0x50')]['id']}]};var _0x1e0082={'$or':[_0x3d4fef,_0x47a0d2]};var _0x4a7bef=[];if(_0x553cfb[_0xabee('0x41')]['direction']&&_0x553cfb[_0xabee('0x41')][_0xabee('0x67')]==='prev'){if(!_[_0xabee('0x68')](_0x553cfb[_0xabee('0x41')][_0xabee('0x69')])){_0x1e0082['id']={'$in':_0x553cfb[_0xabee('0x41')][_0xabee('0x69')]};}_0x4a7bef=[[_0xabee('0x6a'),'ASC'],[_0xabee('0x6b'),_0x1d9fc3[0x0][_0xabee('0x63')]===_0xabee('0x6c')?_0xabee('0x6d'):'ASC'],db[_0xabee('0x65')][_0xabee('0x6e')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id',_0xabee('0x6d')]];}else{if(!_[_0xabee('0x68')](_0x553cfb[_0xabee('0x41')]['hopperIds'])){_0x1e0082['id']={'$notIn':_0x553cfb[_0xabee('0x41')][_0xabee('0x69')]};}_0x4a7bef=[[_0xabee('0x6a'),_0xabee('0x6d')],['scheduledAt',_0x1d9fc3[0x0][_0xabee('0x63')]],db['sequelize'][_0xabee('0x6e')](_0xabee('0x6f')),['id',_0xabee('0x6c')]];}return db[_0xabee('0x37')][_0xabee('0x70')]({'attributes':['id',_0xabee('0x71'),_0xabee('0x55'),'recallme'],'where':_0x1e0082,'order':_0x4a7bef,'transaction':_0x230d3a,'lock':_0x230d3a[_0xabee('0x72')]['UPDATE'],'include':[{'model':db[_0xabee('0x60')],'as':_0xabee('0x73'),'attributes':_0x5d52fd,'include':[{'model':db['CmCompany'],'as':_0xabee('0x74'),'attributes':['id',_0xabee('0xe')]}]},{'model':db['CmList'],'as':_0xabee('0x75'),'attributes':['id',_0xabee('0xe')]},{'model':db[_0xabee('0x45')],'as':'Queue','attributes':['id',_0xabee('0xe'),_0xabee('0x76')]}]})['then'](function(_0x446f9b){if(_0x446f9b){return _0x446f9b[_0xabee('0x77')]({'UserId':_0x553cfb['user']['id']},{'transaction':_0x230d3a});}});});}})[_0xabee('0x38')](handleEntityNotFound(_0xc4a70d,null))[_0xabee('0x38')](respondWithResult(_0xc4a70d,null))[_0xabee('0x3d')](handleError(_0xc4a70d,null));};exports['getPreviewRecall']=function(_0x5e4e68,_0x2e2c08,_0xfc581){var _0x112861=[];var _0x19d112=_0x5e4e68[_0xabee('0x3e')]['id'];var _0x3a9913=_0x5e4e68[_0xabee('0x50')]['id'];return db[_0xabee('0x60')][_0xabee('0x42')]()[_0xabee('0x38')](function(_0x414f81){_0x112861=_[_0xabee('0x15')](_0x414f81);return db['sequelize']['transaction'](function(_0x22f073){const _0x43af53={'id':_0x19d112};return db[_0xabee('0x37')]['findOne']({'attributes':['id',_0xabee('0x71'),'recallme'],'where':_0x43af53,'transaction':_0x22f073,'lock':_0x22f073[_0xabee('0x72')]['UPDATE'],'include':[{'model':db[_0xabee('0x60')],'as':_0xabee('0x73'),'attributes':_0x112861,'include':[{'model':db[_0xabee('0x78')],'as':_0xabee('0x74'),'attributes':['id','name']}]},{'model':db['CmList'],'as':_0xabee('0x75'),'attributes':['id','name']},{'model':db['VoiceQueue'],'as':_0xabee('0x79'),'attributes':['id',_0xabee('0xe'),_0xabee('0x76')]}]})[_0xabee('0x38')](function(_0x235463){if(_0x235463){return _0x235463[_0xabee('0x77')]({'UserId':_0x3a9913},{'transaction':_0x22f073});}});});})[_0xabee('0x38')](handleEntityNotFound(_0x2e2c08,null))['then'](respondWithResult(_0x2e2c08,null))['catch'](handleError(_0x2e2c08,null));};exports[_0xabee('0x7a')]=function(_0x398870,_0x5c49e6){return _0x398870[_0xabee('0x50')][_0xabee('0x61')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0xabee('0x7b')},'attributes':['id'],'raw':!![]})[_0xabee('0x38')](function(_0x5eb87b){if(_0x5eb87b&&_0x5eb87b[_0xabee('0x2e')]){return db['CmHopper'][_0xabee('0x9')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0xabee('0x52')](_0xabee('0x53'))},'VoiceQueueId':{'$in':_[_0xabee('0x14')](_0x5eb87b,'id')},'$or':[{'UserId':null},{'UserId':_0x398870[_0xabee('0x50')]['id']}]}});}return 0x0;})[_0xabee('0x38')](function(_0xe8c89d){if(!_[_0xabee('0x5c')](_0xe8c89d)&&_[_0xabee('0x7c')](_0xe8c89d)){return _0x5c49e6[_0xabee('0x5')](0xc8)[_0xabee('0x6')]({'contacts':_0xe8c89d});}else{logger[_0xabee('0xc')](_0xabee('0x7d'),'getOpenContacts',0x194,_0xabee('0x7e'));_0x5c49e6[_0xabee('0xb')](0x194);}})[_0xabee('0x3d')](handleError(_0x5c49e6,null));};exports['getTimezones']=function(_0x4d72b9,_0x5ed061){var _0x56b37d=shared[_0xabee('0x7f')];var _0x1a6a66=[];_[_0xabee('0x14')](_0x56b37d,function(_0x4433b8){_0x1a6a66[_0xabee('0x80')]({'id':_0x4433b8[_0xabee('0xe')],'name':_0x4433b8[_0xabee('0xe')],'utcOffset':_0x4433b8[_0xabee('0x81')]});});return _0x5ed061[_0xabee('0x5')](0xc8)['json']({'tz':_0x1a6a66});};exports[_0xabee('0x82')]=function(_0x529640,_0x191634){var _0x50a6db=shared['timezones'];var _0x3ded8f={};if(!_[_0xabee('0x5c')](_0x50a6db[_0x529640[_0xabee('0x41')]['id']]))_0x3ded8f=_0x50a6db[_0x529640[_0xabee('0x41')]['id']];return _0x191634['status'](0xc8)[_0xabee('0x6')](_0x3ded8f);};
\ No newline at end of file
+var _0x98a8=['preview','dialOrderByScheduledAt','sequelize','transaction','YYYY-MM-DD\x20HH:mm:ss','dialPreviewAutoRecallMe','hopperIds','scheduledAt','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','isEmpty','priority','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','recallme','UPDATE','Contact','Company','CmList','List','Queue','dialActive','getPreviewRecall','LOCK','CmCompany','outbound','error','CmHopper,\x20%s,\x20%s,\x20%s','getOpenContacts','entity\x20not\x20found','getTimezones','push','getTimezone','moment','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','status','json','offset','limit','undefined','count','set','sendStatus','stack','name','send','CmHopper','rawAttributes','type','key','model','map','query','keys','filters','intersection','concat','$and','$or','$gt','$gte','$lt','$lte','$eq','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','then','includeAll','include','catch','show','params','find','create','body','update','describe','destroy','VoiceQueueId','CampaignId','Campaign','omit','dataValues','createdAt','updatedAt','state','statedesc','campaign','user','deleted','deletedat','calleridnum','phone','queue','CmContact','ContactId','lastName','isNil','firstName','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','end','getPreview','getVoiceQueues'];(function(_0x1ab6f2,_0x511e89){var _0x2e671a=function(_0x2ebb01){while(--_0x2ebb01){_0x1ab6f2['push'](_0x1ab6f2['shift']());}};_0x2e671a(++_0x511e89);}(_0x98a8,0x12c));var _0x898a=function(_0x46ee89,_0x3712b4){_0x46ee89=_0x46ee89-0x0;var _0x2c6a99=_0x98a8[_0x46ee89];return _0x2c6a99;};'use strict';var moment=require(_0x898a('0x0'));var _=require(_0x898a('0x1'));var qs=require(_0x898a('0x2'));var logger=require(_0x898a('0x3'))(_0x898a('0x4'));var shared=require(_0x898a('0x5'));var db=require(_0x898a('0x6'))['db'];function respondWithResult(_0x4a0836,_0x2bb3e2){_0x2bb3e2=_0x2bb3e2||0xc8;return function(_0xf84a19){if(_0xf84a19){return _0x4a0836[_0x898a('0x7')](_0x2bb3e2)[_0x898a('0x8')](_0xf84a19);}};}function respondWithFilteredResult(_0x3e7ddd,_0x5d7e59){return function(_0x3aadc2){if(_0x3aadc2){var _0x564583=typeof _0x5d7e59[_0x898a('0x9')]==='undefined'&&typeof _0x5d7e59[_0x898a('0xa')]===_0x898a('0xb');var _0x2101b3=_0x3aadc2[_0x898a('0xc')];var _0x3150df=_0x564583?0x0:_0x5d7e59[_0x898a('0x9')];var _0x42faa4=_0x564583?_0x3aadc2[_0x898a('0xc')]:_0x5d7e59[_0x898a('0x9')]+_0x5d7e59['limit'];var _0x3e1867;if(_0x42faa4>=_0x2101b3){_0x42faa4=_0x2101b3;_0x3e1867=0xc8;}else{_0x3e1867=0xce;}_0x3e7ddd['status'](_0x3e1867);return _0x3e7ddd[_0x898a('0xd')]('Content-Range',_0x3150df+'-'+_0x42faa4+'/'+_0x2101b3)[_0x898a('0x8')](_0x3aadc2);}return null;};}function saveUpdates(_0x2c76b7,_0x364a23){return function(_0x5f5e06){if(_0x5f5e06){return _0x5f5e06['update'](_0x2c76b7)['then'](function(_0x373d53){return _0x373d53;});}return null;};}function handleEntityNotFound(_0x1f5be4,_0xb24335){return function(_0x116fbe){if(!_0x116fbe){_0x1f5be4[_0x898a('0xe')](0x194);}return _0x116fbe;};}function handleError(_0x15177d,_0x506023){_0x506023=_0x506023||0x1f4;return function(_0x47033c){logger['error'](_0x47033c[_0x898a('0xf')]);if(_0x47033c['name']){delete _0x47033c[_0x898a('0x10')];}_0x15177d['status'](_0x506023)[_0x898a('0x11')](_0x47033c);};}exports['index']=function(_0xee4408,_0x3197f7){var _0x28cc63={},_0x4ddd4d={},_0x1faf4c={'count':0x0,'rows':[]};var _0x5960e0=_['map'](db[_0x898a('0x12')][_0x898a('0x13')],function(_0x58c3ab){return{'name':_0x58c3ab['fieldName'],'type':_0x58c3ab[_0x898a('0x14')][_0x898a('0x15')]};});_0x4ddd4d[_0x898a('0x16')]=_[_0x898a('0x17')](_0x5960e0,_0x898a('0x10'));_0x4ddd4d[_0x898a('0x18')]=_[_0x898a('0x19')](_0xee4408['query']);_0x4ddd4d[_0x898a('0x1a')]=_[_0x898a('0x1b')](_0x4ddd4d[_0x898a('0x16')],_0x4ddd4d[_0x898a('0x18')]);_0x4ddd4d[_0x898a('0x1a')]=_[_0x898a('0x1c')](_0x4ddd4d['filters'],[_0x898a('0x1d'),_0x898a('0x1e'),_0x898a('0x1f'),_0x898a('0x20'),_0x898a('0x21'),_0x898a('0x22'),'$ne',_0x898a('0x23'),'$not','$between','$notBetween',_0x898a('0x24'),_0x898a('0x25'),_0x898a('0x26'),_0x898a('0x27'),_0x898a('0x28'),_0x898a('0x29'),_0x898a('0x26'),_0x898a('0x2a'),_0x898a('0x2b'),'$contained','$any']);_0x28cc63['attributes']=_[_0x898a('0x1b')](_0x4ddd4d[_0x898a('0x16')],qs[_0x898a('0x2c')](_0xee4408[_0x898a('0x18')][_0x898a('0x2c')]));_0x28cc63[_0x898a('0x2d')]=_0x28cc63[_0x898a('0x2d')][_0x898a('0x2e')]?_0x28cc63[_0x898a('0x2d')]:_0x4ddd4d[_0x898a('0x16')];if(!_0xee4408[_0x898a('0x18')][_0x898a('0x2f')]('nolimit')){_0x28cc63[_0x898a('0xa')]=qs[_0x898a('0xa')](_0xee4408[_0x898a('0x18')][_0x898a('0xa')]);_0x28cc63[_0x898a('0x9')]=qs['offset'](_0xee4408['query'][_0x898a('0x9')]);}_0x28cc63[_0x898a('0x30')]=qs[_0x898a('0x31')](_0xee4408['query'][_0x898a('0x31')]);_0x28cc63[_0x898a('0x32')]=qs[_0x898a('0x1a')](_[_0x898a('0x33')](_0xee4408[_0x898a('0x18')],_0x4ddd4d[_0x898a('0x1a')]),_0x5960e0);if(_0xee4408[_0x898a('0x18')][_0x898a('0x34')]){_0x28cc63['where']=_[_0x898a('0x35')](_0x28cc63['where'],{'$or':_['map'](_0x5960e0,function(_0x14e2dc){if(_0x14e2dc['type']!==_0x898a('0x36')){var _0x4b3aac={};_0x4b3aac[_0x14e2dc[_0x898a('0x10')]]={'$like':'%'+_0xee4408['query'][_0x898a('0x34')]+'%'};return _0x4b3aac;}})});}_0x28cc63=_[_0x898a('0x35')]({},_0x28cc63,_0xee4408[_0x898a('0x37')]);var _0x50c0e4={'where':_0x28cc63['where']};return db['CmHopper'][_0x898a('0xc')](_0x50c0e4)[_0x898a('0x38')](function(_0x5a228f){_0x1faf4c[_0x898a('0xc')]=_0x5a228f;if(_0xee4408[_0x898a('0x18')][_0x898a('0x39')]){_0x28cc63[_0x898a('0x3a')]=[{'all':!![]}];}return db['CmHopper']['findAll'](_0x28cc63);})[_0x898a('0x38')](function(_0x454c8c){_0x1faf4c['rows']=_0x454c8c;return _0x1faf4c;})['then'](respondWithFilteredResult(_0x3197f7,_0x28cc63))[_0x898a('0x3b')](handleError(_0x3197f7,null));};exports[_0x898a('0x3c')]=function(_0x181cc8,_0xa45405){var _0x51681f={'raw':!![],'where':{'id':_0x181cc8[_0x898a('0x3d')]['id']}},_0x67114b={};_0x67114b['model']=_['keys'](db['CmHopper'][_0x898a('0x13')]);_0x67114b[_0x898a('0x18')]=_[_0x898a('0x19')](_0x181cc8[_0x898a('0x18')]);_0x67114b[_0x898a('0x1a')]=_[_0x898a('0x1b')](_0x67114b[_0x898a('0x16')],_0x67114b[_0x898a('0x18')]);_0x51681f[_0x898a('0x2d')]=_[_0x898a('0x1b')](_0x67114b[_0x898a('0x16')],qs[_0x898a('0x2c')](_0x181cc8[_0x898a('0x18')][_0x898a('0x2c')]));_0x51681f[_0x898a('0x2d')]=_0x51681f['attributes'][_0x898a('0x2e')]?_0x51681f[_0x898a('0x2d')]:_0x67114b[_0x898a('0x16')];if(_0x181cc8['query'][_0x898a('0x39')]){_0x51681f[_0x898a('0x3a')]=[{'all':!![]}];}_0x51681f=_[_0x898a('0x35')]({},_0x51681f,_0x181cc8[_0x898a('0x37')]);return db[_0x898a('0x12')][_0x898a('0x3e')](_0x51681f)[_0x898a('0x38')](handleEntityNotFound(_0xa45405,null))[_0x898a('0x38')](respondWithResult(_0xa45405,null))['catch'](handleError(_0xa45405,null));};exports[_0x898a('0x3f')]=function(_0x1a874a,_0x3d4aa3){return db[_0x898a('0x12')]['create'](_0x1a874a[_0x898a('0x40')],{})[_0x898a('0x38')](respondWithResult(_0x3d4aa3,0xc9))['catch'](handleError(_0x3d4aa3,null));};exports[_0x898a('0x41')]=function(_0x4ce00e,_0x56a40c){if(_0x4ce00e['body']['id']){delete _0x4ce00e['body']['id'];}return db[_0x898a('0x12')]['find']({'where':{'id':_0x4ce00e[_0x898a('0x3d')]['id']}})[_0x898a('0x38')](handleEntityNotFound(_0x56a40c,null))['then'](saveUpdates(_0x4ce00e[_0x898a('0x40')],null))[_0x898a('0x38')](respondWithResult(_0x56a40c,null))['catch'](handleError(_0x56a40c,null));};exports[_0x898a('0x42')]=function(_0x199437,_0x11a0a3){return db[_0x898a('0x12')]['describe']()[_0x898a('0x38')](respondWithResult(_0x11a0a3,null))[_0x898a('0x3b')](handleError(_0x11a0a3,null));};exports['destroy']=function(_0x25adcc,_0x1d8c16){var _0x4ab441;var _0x28525b=_0x25adcc['params']['id'];return db[_0x898a('0x12')][_0x898a('0x3e')]({'where':{'id':_0x25adcc[_0x898a('0x3d')]['id']}})['then'](handleEntityNotFound(_0x1d8c16,null))[_0x898a('0x38')](function(_0x1b09da){if(_0x1b09da){return _0x1b09da[_0x898a('0x43')]()[_0x898a('0x38')](function(_0x5a8a2c){return _0x5a8a2c;});}})[_0x898a('0x38')](function(_0x529d7c){_0x4ab441=_0x529d7c;if(_0x529d7c){if(_0x529d7c[_0x898a('0x44')]||_0x529d7c[_0x898a('0x45')]){return db[_0x529d7c[_0x898a('0x44')]?'VoiceQueue':_0x898a('0x46')][_0x898a('0x3e')]({'where':{'id':_0x529d7c[_0x898a('0x44')]?_0x529d7c['VoiceQueueId']:_0x529d7c['CampaignId']},'attributes':['id',_0x898a('0x10')],'raw':!![]});}}})[_0x898a('0x38')](function(_0x13b3ed){var _0x295f1e={};if(_0x13b3ed){_[_0x898a('0x35')](_0x295f1e,_[_0x898a('0x47')](_0x4ab441[_0x898a('0x48')],[_0x898a('0x49'),_0x898a('0x4a'),'id']));_0x295f1e[_0x898a('0x4b')]=0x15;_0x295f1e[_0x898a('0x4c')]='deleted';_0x295f1e[_0x898a('0x4d')]=_0x13b3ed[_0x898a('0x10')];_0x295f1e['membername']=_0x25adcc[_0x898a('0x4e')]['name'];_0x295f1e['UserId']=_0x25adcc[_0x898a('0x4e')]['id'];_0x295f1e[_0x898a('0x4f')]=!![];_0x295f1e[_0x898a('0x50')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x295f1e[_0x898a('0x51')]=_0x4ab441[_0x898a('0x52')];_0x295f1e['campaigntype']=_0x4ab441[_0x898a('0x44')]?_0x898a('0x53'):'ivr';return db[_0x898a('0x54')][_0x898a('0x3e')]({'where':{'id':_0x295f1e[_0x898a('0x55')]},'attributes':['firstName',_0x898a('0x56')]})[_0x898a('0x38')](function(_0x9c25ee){if(!_[_0x898a('0x57')](_0x1d8c16)&&!_[_0x898a('0x57')](_0x9c25ee[_0x898a('0x58')])){_0x295f1e['calleridname']=_0x9c25ee[_0x898a('0x58')];if(!_['isNil'](_0x9c25ee[_0x898a('0x56')])){_0x295f1e[_0x898a('0x59')]+='\x20'+_0x9c25ee[_0x898a('0x56')];}}})[_0x898a('0x5a')](function(){return db[_0x898a('0x5b')][_0x898a('0x3f')](_0x295f1e);});}})[_0x898a('0x38')](function(_0x75ff57){return db[_0x898a('0x5c')]['destroy']({'where':{'CmHopperId':_0x28525b}});})[_0x898a('0x38')](function(){return _0x1d8c16[_0x898a('0x7')](0xcc)[_0x898a('0x5d')]();})[_0x898a('0x3b')](handleError(_0x1d8c16,null));};exports[_0x898a('0x5e')]=function(_0x2a1345,_0x9d8b4e){var _0x68fd81=[];return db[_0x898a('0x54')][_0x898a('0x42')]()[_0x898a('0x38')](function(_0x217dda){_0x68fd81=_[_0x898a('0x19')](_0x217dda);return _0x2a1345[_0x898a('0x4e')][_0x898a('0x5f')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x898a('0x60')},'attributes':['id',_0x898a('0x61'),'dialPreviewAutoRecallMe'],'raw':!![]});})[_0x898a('0x38')](function(_0x4583a1){if(_0x4583a1&&_0x4583a1['length']){return db[_0x898a('0x62')][_0x898a('0x63')](function(_0x21f0f8){var _0x1f3f5b={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x898a('0x64'))},'VoiceQueueId':{'$in':_[_0x898a('0x17')](_0x4583a1,'id')},'$or':[{'UserId':null},{'UserId':_0x2a1345[_0x898a('0x4e')]['id']}]};var _0xf86633={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x4583a1)['filter']([_0x898a('0x65'),0x0])[_0x898a('0x17')]('id')['value']()},'$or':[{'UserId':null},{'UserId':_0x2a1345[_0x898a('0x4e')]['id']}]};var _0x3c0bf6={'$or':[_0x1f3f5b,_0xf86633]};var _0x5b7019=[];if(_0x2a1345[_0x898a('0x40')]['direction']&&_0x2a1345[_0x898a('0x40')]['direction']==='prev'){if(!_['isEmpty'](_0x2a1345[_0x898a('0x40')][_0x898a('0x66')])){_0x3c0bf6['id']={'$in':_0x2a1345[_0x898a('0x40')][_0x898a('0x66')]};}_0x5b7019=[['priority','ASC'],[_0x898a('0x67'),_0x4583a1[0x0][_0x898a('0x61')]===_0x898a('0x68')?_0x898a('0x69'):_0x898a('0x68')],db[_0x898a('0x62')][_0x898a('0x6a')](_0x898a('0x6b')),['id','DESC']];}else{if(!_[_0x898a('0x6c')](_0x2a1345[_0x898a('0x40')]['hopperIds'])){_0x3c0bf6['id']={'$notIn':_0x2a1345[_0x898a('0x40')][_0x898a('0x66')]};}_0x5b7019=[[_0x898a('0x6d'),_0x898a('0x69')],[_0x898a('0x67'),_0x4583a1[0x0][_0x898a('0x61')]],db[_0x898a('0x62')][_0x898a('0x6a')](_0x898a('0x6e')),['id',_0x898a('0x68')]];}return db[_0x898a('0x12')][_0x898a('0x6f')]({'attributes':['id',_0x898a('0x70'),'phone',_0x898a('0x71')],'where':_0x3c0bf6,'order':_0x5b7019,'transaction':_0x21f0f8,'lock':_0x21f0f8['LOCK'][_0x898a('0x72')],'include':[{'model':db[_0x898a('0x54')],'as':_0x898a('0x73'),'attributes':_0x68fd81,'include':[{'model':db['CmCompany'],'as':_0x898a('0x74'),'attributes':['id',_0x898a('0x10')]}]},{'model':db[_0x898a('0x75')],'as':_0x898a('0x76'),'attributes':['id',_0x898a('0x10')]},{'model':db['VoiceQueue'],'as':_0x898a('0x77'),'attributes':['id',_0x898a('0x10'),_0x898a('0x78')]}]})[_0x898a('0x38')](function(_0xc1c3fe){if(_0xc1c3fe){return _0xc1c3fe['update']({'UserId':_0x2a1345[_0x898a('0x4e')]['id']},{'transaction':_0x21f0f8});}});});}})[_0x898a('0x38')](handleEntityNotFound(_0x9d8b4e,null))[_0x898a('0x38')](respondWithResult(_0x9d8b4e,null))[_0x898a('0x3b')](handleError(_0x9d8b4e,null));};exports[_0x898a('0x79')]=function(_0x420347,_0x1fd617,_0x1b0c09){var _0x51836c=[];var _0x32a207=_0x420347[_0x898a('0x3d')]['id'];var _0x558f13=_0x420347[_0x898a('0x4e')]['id'];return db['CmContact'][_0x898a('0x42')]()['then'](function(_0x2471d8){_0x51836c=_[_0x898a('0x19')](_0x2471d8);return db[_0x898a('0x62')][_0x898a('0x63')](function(_0x109064){const _0x2c7e30={'id':_0x32a207};return db[_0x898a('0x12')][_0x898a('0x6f')]({'attributes':['id',_0x898a('0x70'),'recallme'],'where':_0x2c7e30,'transaction':_0x109064,'lock':_0x109064[_0x898a('0x7a')][_0x898a('0x72')],'include':[{'model':db[_0x898a('0x54')],'as':_0x898a('0x73'),'attributes':_0x51836c,'include':[{'model':db[_0x898a('0x7b')],'as':_0x898a('0x74'),'attributes':['id',_0x898a('0x10')]}]},{'model':db[_0x898a('0x75')],'as':_0x898a('0x76'),'attributes':['id',_0x898a('0x10')]},{'model':db['VoiceQueue'],'as':'Queue','attributes':['id',_0x898a('0x10'),_0x898a('0x78')]}]})['then'](function(_0x5710a0){if(_0x5710a0){return _0x5710a0[_0x898a('0x41')]({'UserId':_0x558f13},{'transaction':_0x109064});}});});})['then'](handleEntityNotFound(_0x1fd617,null))[_0x898a('0x38')](respondWithResult(_0x1fd617,null))[_0x898a('0x3b')](handleError(_0x1fd617,null));};exports['getOpenContacts']=function(_0x3f6815,_0x1c782e){return _0x3f6815[_0x898a('0x4e')][_0x898a('0x5f')]({'where':{'type':_0x898a('0x7c'),'dialActive':!![],'dialMethod':_0x898a('0x60')},'attributes':['id'],'raw':!![]})[_0x898a('0x38')](function(_0x49f8ac){if(_0x49f8ac&&_0x49f8ac[_0x898a('0x2e')]){return db[_0x898a('0x12')][_0x898a('0xc')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x898a('0x64'))},'VoiceQueueId':{'$in':_[_0x898a('0x17')](_0x49f8ac,'id')},'$or':[{'UserId':null},{'UserId':_0x3f6815['user']['id']}]}});}return 0x0;})[_0x898a('0x38')](function(_0x532c26){if(!_['isNil'](_0x532c26)&&_['isNumber'](_0x532c26)){return _0x1c782e[_0x898a('0x7')](0xc8)[_0x898a('0x8')]({'contacts':_0x532c26});}else{logger[_0x898a('0x7d')](_0x898a('0x7e'),_0x898a('0x7f'),0x194,_0x898a('0x80'));_0x1c782e[_0x898a('0xe')](0x194);}})['catch'](handleError(_0x1c782e,null));};exports[_0x898a('0x81')]=function(_0x4f29b6,_0x456288){var _0x3da2c1=shared['timezones'];var _0x24670c=[];_[_0x898a('0x17')](_0x3da2c1,function(_0x126ca1){_0x24670c[_0x898a('0x82')]({'id':_0x126ca1[_0x898a('0x10')],'name':_0x126ca1['name'],'utcOffset':_0x126ca1['utcOffset']});});return _0x456288['status'](0xc8)[_0x898a('0x8')]({'tz':_0x24670c});};exports[_0x898a('0x83')]=function(_0x18caad,_0x5c2243){var _0x224746=shared['timezones'];var _0x5c0aed={};if(!_[_0x898a('0x57')](_0x224746[_0x18caad[_0x898a('0x40')]['id']]))_0x5c0aed=_0x224746[_0x18caad[_0x898a('0x40')]['id']];return _0x5c2243[_0x898a('0x7')](0xc8)[_0x898a('0x8')](_0x5c0aed);};
\ No newline at end of file
index dc62a00..039bfba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','scheduledat','priority','lodash'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x326f,0xd1));var _0xf326=function(_0x4437cd,_0x10c4a1){_0x4437cd=_0x4437cd-0x0;var _0x2ec959=_0x326f[_0x4437cd];return _0x2ec959;};'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':['scheduledat']},{'name':'phone','fields':['phone']},{'name':_0xf326('0xe'),'fields':[_0xf326('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0295=['define','scheduledat','phone','priority','lodash','api','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports'];(function(_0x18afca,_0x4219d9){var _0x11603f=function(_0x21d5d1){while(--_0x21d5d1){_0x18afca['push'](_0x18afca['shift']());}};_0x11603f(++_0x4219d9);}(_0x0295,0x1f0));var _0x5029=function(_0x2335ae,_0x1c53d5){_0x2335ae=_0x2335ae-0x0;var _0x34d016=_0x0295[_0x2335ae];return _0x34d016;};'use strict';var _=require(_0x5029('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x5029('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5029('0x2'));var fs=require('fs');var path=require(_0x5029('0x3'));var rimraf=require(_0x5029('0x4'));var config=require(_0x5029('0x5'));var attributes=require(_0x5029('0x6'));module[_0x5029('0x7')]=function(_0x200217,_0x215955){return _0x200217[_0x5029('0x8')]('CmHopper',attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':'scheduledat','fields':[_0x5029('0x9')]},{'name':'phone','fields':[_0x5029('0xa')]},{'name':'priority','fields':[_0x5029('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 59f095a..3a843f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x495e=['CreateCmHopper','create','body','UpdateCmHopper','limit','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','DestroyCmHopper','GetContactDialer','CmContact','sequelize','order','LOCK','UPDATE','Contact','keys','User','name','voicePause','length','push','update','includes','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','MoveContactManagedDialer','transaction','destroy','CountReScheduled','COUNT','format','YYYY-MM-DD\x20HH:mm:ss','contactsRescheduled','describe','UserId','all','GetContactRecallMe','GetCmHopperPreview','GetContactByPhone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','interval','availableAgentsIds','NOW()\x20+\x20INTERVAL\x20','\x20MINUTE','literal','NOW()','Agent','CmList','lodash','util','moment','bluebird','../../mysqldb','rpc','GetCmHopper','CmHopper','findAll','options','raw','where','attributes','include','map','model','info','catch','error','message','ShowCmHopper','find','then','debug','stringify'];(function(_0x227ecf,_0x5910fe){var _0x3124fa=function(_0x356498){while(--_0x356498){_0x227ecf['push'](_0x227ecf['shift']());}};_0x3124fa(++_0x5910fe);}(_0x495e,0xd1));var _0xe495=function(_0x297eea,_0x5060be){_0x297eea=_0x297eea-0x0;var _0x1c42d2=_0x495e[_0x297eea];return _0x1c42d2;};'use strict';var _=require(_0xe495('0x0'));var util=require(_0xe495('0x1'));var moment=require(_0xe495('0x2'));var BPromise=require(_0xe495('0x3'));var db=require(_0xe495('0x4'))['db'];var logger=require('../../config/logger')(_0xe495('0x5'));exports[_0xe495('0x6')]=function(_0xfdc362){var _0x5c68bf=this;return new Promise(function(_0x57f816,_0x242618){return db[_0xe495('0x7')][_0xe495('0x8')]({'raw':_0xfdc362[_0xe495('0x9')]?_0xfdc362[_0xe495('0x9')][_0xe495('0xa')]===undefined?!![]:![]:!![],'where':_0xfdc362['options']?_0xfdc362[_0xe495('0x9')][_0xe495('0xb')]||null:null,'attributes':_0xfdc362[_0xe495('0x9')]?_0xfdc362[_0xe495('0x9')][_0xe495('0xc')]||null:null,'limit':_0xfdc362[_0xe495('0x9')]?_0xfdc362[_0xe495('0x9')]['limit']||null:null,'include':_0xfdc362[_0xe495('0x9')]?_0xfdc362[_0xe495('0x9')][_0xe495('0xd')]?_[_0xe495('0xe')](_0xfdc362[_0xe495('0x9')][_0xe495('0xd')],function(_0x56c39c){return{'model':db[_0x56c39c[_0xe495('0xf')]],'as':_0x56c39c['as'],'attributes':_0x56c39c['attributes'],'include':_0x56c39c['include']?_[_0xe495('0xe')](_0x56c39c[_0xe495('0xd')],function(_0x144f49){return{'model':db[_0x144f49[_0xe495('0xf')]],'as':_0x144f49['as'],'attributes':_0x144f49[_0xe495('0xc')],'include':_0x144f49[_0xe495('0xd')]?_[_0xe495('0xe')](_0x144f49[_0xe495('0xd')],function(_0x5c4435){return{'model':db[_0x5c4435[_0xe495('0xf')]],'as':_0x5c4435['as'],'attributes':_0x5c4435['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5ab1e6){logger[_0xe495('0x10')](_0xe495('0x6'),_0xfdc362);logger['debug'](_0xe495('0x6'),_0xfdc362,JSON['stringify'](_0x5ab1e6));_0x57f816(_0x5ab1e6);})[_0xe495('0x11')](function(_0xa71d04){logger[_0xe495('0x12')]('GetCmHopper',_0xa71d04['message'],_0xfdc362);_0x242618(_0x5c68bf[_0xe495('0x12')](0x1f4,_0xa71d04[_0xe495('0x13')]));});});};exports[_0xe495('0x14')]=function(_0x235405){var _0x40dbe3=this;return new Promise(function(_0x310354,_0x3897ed){return db[_0xe495('0x7')][_0xe495('0x15')]({'raw':_0x235405[_0xe495('0x9')]?_0x235405[_0xe495('0x9')][_0xe495('0xa')]===undefined?!![]:![]:!![],'where':_0x235405[_0xe495('0x9')]?_0x235405[_0xe495('0x9')][_0xe495('0xb')]||null:null,'attributes':_0x235405[_0xe495('0x9')]?_0x235405[_0xe495('0x9')]['attributes']||null:null,'include':_0x235405[_0xe495('0x9')]?_0x235405[_0xe495('0x9')][_0xe495('0xd')]?_[_0xe495('0xe')](_0x235405[_0xe495('0x9')][_0xe495('0xd')],function(_0x3e4886){return{'model':db[_0x3e4886[_0xe495('0xf')]],'as':_0x3e4886['as'],'attributes':_0x3e4886['attributes'],'include':_0x3e4886[_0xe495('0xd')]?_[_0xe495('0xe')](_0x3e4886[_0xe495('0xd')],function(_0x1a765f){return{'model':db[_0x1a765f[_0xe495('0xf')]],'as':_0x1a765f['as'],'attributes':_0x1a765f[_0xe495('0xc')],'include':_0x1a765f[_0xe495('0xd')]?_[_0xe495('0xe')](_0x1a765f['include'],function(_0x4b9a8f){return{'model':db[_0x4b9a8f[_0xe495('0xf')]],'as':_0x4b9a8f['as'],'attributes':_0x4b9a8f['attributes']};}):[]};}):[]};}):[]:[]})[_0xe495('0x16')](function(_0x3f190c){logger[_0xe495('0x10')](_0xe495('0x14'),_0x235405);logger[_0xe495('0x17')]('ShowCmHopper',_0x235405,JSON[_0xe495('0x18')](_0x3f190c));_0x310354(_0x3f190c);})[_0xe495('0x11')](function(_0x53bb95){logger['error'](_0xe495('0x14'),_0x53bb95[_0xe495('0x13')],_0x235405);_0x3897ed(_0x40dbe3[_0xe495('0x12')](0x1f4,_0x53bb95[_0xe495('0x13')]));});});};exports[_0xe495('0x19')]=function(_0x44c960){var _0x41313d=this;return new Promise(function(_0x14c810,_0x4bdf40){return db[_0xe495('0x7')][_0xe495('0x1a')](_0x44c960[_0xe495('0x1b')],{'raw':_0x44c960[_0xe495('0x9')]?_0x44c960[_0xe495('0x9')][_0xe495('0xa')]===undefined?!![]:![]:!![]})[_0xe495('0x16')](function(_0x57914d){logger[_0xe495('0x10')](_0xe495('0x19'),_0x44c960);logger[_0xe495('0x17')](_0xe495('0x19'),_0x44c960,JSON[_0xe495('0x18')](_0x57914d));_0x14c810(_0x57914d);})[_0xe495('0x11')](function(_0x1db2aa){logger[_0xe495('0x12')]('CreateCmHopper',_0x1db2aa['message'],_0x44c960);_0x4bdf40(_0x41313d[_0xe495('0x12')](0x1f4,_0x1db2aa['message']));});});};exports[_0xe495('0x1c')]=function(_0x24ef53){var _0x298747=this;return new Promise(function(_0x4ecc66,_0x5a6d64){return db[_0xe495('0x7')]['update'](_0x24ef53['body'],{'raw':_0x24ef53['options']?_0x24ef53[_0xe495('0x9')][_0xe495('0xa')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x24ef53[_0xe495('0x9')]?_0x24ef53[_0xe495('0x9')][_0xe495('0xb')]||null:null,'attributes':_0x24ef53[_0xe495('0x9')]?_0x24ef53[_0xe495('0x9')][_0xe495('0xc')]||null:null,'limit':_0x24ef53[_0xe495('0x9')]?_0x24ef53['options'][_0xe495('0x1d')]||null:null})[_0xe495('0x16')](function(_0x110d41){logger[_0xe495('0x10')](_0xe495('0x1c'),_0x24ef53);logger[_0xe495('0x10')](_0xe495('0x1e'),JSON[_0xe495('0x18')](_0x24ef53['options'][_0xe495('0xb')]),_0x24ef53['body'][_0xe495('0x1f')]);logger[_0xe495('0x17')](_0xe495('0x1c'),_0x24ef53,JSON[_0xe495('0x18')](_0x110d41));_0x4ecc66(_0x110d41);})[_0xe495('0x11')](function(_0x5a214c){logger['error']('UpdateCmHopper',_0x5a214c[_0xe495('0x13')],_0x24ef53);_0x5a6d64(_0x298747['error'](0x1f4,_0x5a214c[_0xe495('0x13')]));});});};exports[_0xe495('0x20')]=function(_0x539433){var _0xedee34=this;return new Promise(function(_0x664ef2,_0x1e3bcc){return db[_0xe495('0x7')]['destroy']({'where':_0x539433[_0xe495('0x9')]?_0x539433['options'][_0xe495('0xb')]||null:null})[_0xe495('0x16')](function(_0x13f537){logger[_0xe495('0x10')]('DestroyCmHopper',_0x539433);logger['debug'](_0xe495('0x20'),_0x539433,JSON[_0xe495('0x18')](_0x13f537));_0x664ef2(_0x13f537);})[_0xe495('0x11')](function(_0x48401a){logger['error'](_0xe495('0x20'),_0x48401a['message'],_0x539433);_0x1e3bcc(_0xedee34[_0xe495('0x12')](0x1f4,_0x48401a[_0xe495('0x13')]));});});};exports[_0xe495('0x21')]=function(_0x2a73c0){var _0x3f7904=this;return new Promise(function(_0x4b8dc6,_0x5279ce){return db[_0xe495('0x22')]['describe']()['then'](function(_0xd0ed6e){return db[_0xe495('0x23')]['transaction'](function(_0x10621a){return db[_0xe495('0x7')]['findAll']({'where':_0x2a73c0[_0xe495('0x9')]?_0x2a73c0[_0xe495('0x9')][_0xe495('0xb')]||null:null,'attributes':_0x2a73c0[_0xe495('0x9')]?_0x2a73c0[_0xe495('0x9')]['attributes']||null:null,'limit':_0x2a73c0[_0xe495('0x9')]?_0x2a73c0['options']['limit']||null:null,'order':_0x2a73c0[_0xe495('0x9')]?_0x2a73c0['options'][_0xe495('0x24')]||null:null,'transaction':_0x10621a,'lock':_0x10621a[_0xe495('0x25')][_0xe495('0x26')],'include':[{'model':db[_0xe495('0x22')],'as':_0xe495('0x27'),'attributes':_[_0xe495('0x28')](_0xd0ed6e)},{'model':db[_0xe495('0x29')],'as':'Agent','attributes':['id',_0xe495('0x2a'),_0xe495('0x2b')]}]})[_0xe495('0x16')](function(_0x3cc387){var _0x35ac02=[];var _0x3ec507=[];for(var _0x29fe31=0x0;_0x29fe31<_0x3cc387[_0xe495('0x2c')];_0x29fe31+=0x1){var _0x312811=_0x3cc387[_0x29fe31]['UserId'];if(_0x312811===null){_0x35ac02[_0xe495('0x2d')](_0x3cc387[_0x29fe31][_0xe495('0x2e')](_0x2a73c0[_0xe495('0x1b')],{'transaction':_0x10621a}));}else if(!_0x3ec507[_0xe495('0x2f')](_0x312811)){_0x3ec507[_0xe495('0x2d')](_0x312811);_0x35ac02[_0xe495('0x2d')](_0x3cc387[_0x29fe31][_0xe495('0x2e')](_0x2a73c0[_0xe495('0x1b')],{'transaction':_0x10621a}));}}return BPromise['all'](_0x35ac02);});})[_0xe495('0x16')](function(_0x32cfd2){logger[_0xe495('0x10')](_0xe495('0x21'),_0x2a73c0);if(_0x32cfd2['length']>0x0){logger[_0xe495('0x10')](_0xe495('0x30'),_0x32cfd2[0x0][_0xe495('0x31')]['id'],_0x32cfd2[0x0][_0xe495('0x31')]['ContactId'],_0x32cfd2[0x0][_0xe495('0x31')]['active']);}logger[_0xe495('0x17')]('GetContactDialer',_0x2a73c0,JSON['stringify'](_0x32cfd2));_0x4b8dc6(_0x32cfd2);})[_0xe495('0x11')](function(_0x5d42b6){logger['error'](_0xe495('0x21'),_0x5d42b6[_0xe495('0x13')],_0x2a73c0);_0x5279ce(_0x3f7904['error'](0x1f4,_0x5d42b6[_0xe495('0x13')]));});});});};exports[_0xe495('0x32')]=function(_0x308293){var _0x1e637a=this;return new Promise(function(_0xf7fe78,_0x430b58){return db[_0xe495('0x23')][_0xe495('0x33')](function(_0xfd5d09){return db['CmHopperFinal'][_0xe495('0x1a')](_0x308293[_0xe495('0x1b')],{'raw':_0x308293[_0xe495('0x9')]?_0x308293[_0xe495('0x9')][_0xe495('0xa')]===undefined?!![]:![]:!![],'transaction':_0xfd5d09})[_0xe495('0x16')](function(){logger[_0xe495('0x10')]('MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]',JSON[_0xe495('0x18')](_0x308293[_0xe495('0x9')][_0xe495('0xb')]),_0x308293[_0xe495('0x9')][_0xe495('0xb')][_0xe495('0x1f')]);return db[_0xe495('0x7')][_0xe495('0x34')]({'where':_0x308293[_0xe495('0x9')]?_0x308293['options'][_0xe495('0xb')]||null:null,'transaction':_0xfd5d09});});})[_0xe495('0x16')](function(_0xc4a44b){logger[_0xe495('0x10')](_0xe495('0x32'),_0x308293);logger[_0xe495('0x17')](_0xe495('0x32'),_0x308293,JSON[_0xe495('0x18')](_0xc4a44b));_0xf7fe78(_0xc4a44b);})['catch'](function(_0x445352){logger[_0xe495('0x12')](_0xe495('0x32'),_0x445352['message'],_0x308293);_0x430b58(_0x1e637a['error'](0x1f4,_0x445352[_0xe495('0x13')]));});});};exports[_0xe495('0x35')]=function(_0x5a1dd5){var _0x46682f=this;return new Promise(function(_0x5f0322,_0x537624){return db['CmHopper']['findAll']({'raw':_0x5a1dd5[_0xe495('0x9')]?_0x5a1dd5['options'][_0xe495('0xa')]===undefined?!![]:![]:!![],'where':_0x5a1dd5[_0xe495('0x9')]?_0x5a1dd5[_0xe495('0x9')][_0xe495('0xb')]||null:null,'attributes':[[db['sequelize']['fn'](_0xe495('0x36'),db[_0xe495('0x23')]['fn']('IF',db['sequelize']['literal']('`scheduledat`\x20>=\x20'+util['format']('\x22%s\x22',moment()[_0xe495('0x37')](_0xe495('0x38')))+'\x20,\x201,\x20null'))),_0xe495('0x39')]]})[_0xe495('0x16')](function(_0x181571){logger[_0xe495('0x10')](_0xe495('0x35'),_0x5a1dd5);logger[_0xe495('0x17')](_0xe495('0x35'),_0x5a1dd5,JSON[_0xe495('0x18')](_0x181571));_0x5f0322(_0x181571);})['catch'](function(_0x17e8a3){logger[_0xe495('0x12')](_0xe495('0x35'),_0x17e8a3[_0xe495('0x13')],_0x5a1dd5);_0x537624(_0x46682f[_0xe495('0x12')](0x1f4,_0x17e8a3[_0xe495('0x13')]));});});};exports['GetContactRecallMe']=function(_0x157169){var _0x48d90a=this;return new Promise(function(_0x1040f1,_0x5af417){return db['CmContact'][_0xe495('0x3a')]()[_0xe495('0x16')](function(){return db['sequelize'][_0xe495('0x33')](function(_0xefde8b){return db[_0xe495('0x7')][_0xe495('0x8')]({'where':_0x157169[_0xe495('0x9')]?_0x157169[_0xe495('0x9')][_0xe495('0xb')]||null:null,'attributes':_0x157169[_0xe495('0x9')]?_0x157169['options'][_0xe495('0xc')]||null:null,'limit':0x1,'order':_0x157169[_0xe495('0x9')]?_0x157169[_0xe495('0x9')][_0xe495('0x24')]||null:null,'group':db['CmHopper'][_0xe495('0x3b')],'transaction':_0xefde8b,'lock':_0xefde8b[_0xe495('0x25')][_0xe495('0x26')],'include':_0x157169[_0xe495('0x9')]?_0x157169[_0xe495('0x9')]['include']?_[_0xe495('0xe')](_0x157169[_0xe495('0x9')][_0xe495('0xd')],function(_0xad33f0){return{'model':db[_0xad33f0[_0xe495('0xf')]],'as':_0xad33f0['as'],'attributes':_0xad33f0[_0xe495('0xc')],'include':_0xad33f0[_0xe495('0xd')]?_[_0xe495('0xe')](_0xad33f0['include'],function(_0x4bace1){return{'model':db[_0x4bace1[_0xe495('0xf')]],'as':_0x4bace1['as'],'attributes':_0x4bace1[_0xe495('0xc')],'include':_0x4bace1['include']?_[_0xe495('0xe')](_0x4bace1['include'],function(_0x83abd5){return{'model':db[_0x83abd5[_0xe495('0xf')]],'as':_0x83abd5['as'],'attributes':_0x83abd5[_0xe495('0xc')]};}):[]};}):[]};}):[]:[]})[_0xe495('0x16')](function(_0x36107c){var _0x1f2f16=[];for(var _0x1f020c=0x0;_0x1f020c<_0x36107c[_0xe495('0x2c')];_0x1f020c+=0x1){_0x1f2f16['push'](_0x36107c[_0x1f020c][_0xe495('0x2e')](_0x157169[_0xe495('0x1b')],{'transaction':_0xefde8b}));}return BPromise[_0xe495('0x3c')](_0x1f2f16);});})[_0xe495('0x16')](function(_0x558845){logger[_0xe495('0x10')](_0xe495('0x3d'),_0x157169);logger['debug'](_0xe495('0x3d'),_0x157169,JSON['stringify'](_0x558845));_0x1040f1(_0x558845);})[_0xe495('0x11')](function(_0x1837f1){logger[_0xe495('0x12')](_0xe495('0x3d'),_0x1837f1[_0xe495('0x13')],_0x157169);_0x5af417(_0x48d90a[_0xe495('0x12')](0x1f4,_0x1837f1[_0xe495('0x13')]));});});});};exports[_0xe495('0x3e')]=function(_0x1e72c1){var _0x2ef0f0=this;return new Promise(function(_0x1d5e9d,_0x4c86e9){db[_0xe495('0x22')][_0xe495('0x3a')]()['then'](function(_0x2edb63){return db[_0xe495('0x7')][_0xe495('0x8')]({'raw':_0x1e72c1[_0xe495('0x9')]?_0x1e72c1[_0xe495('0x9')]['raw']===undefined?!![]:![]:!![],'where':_0x1e72c1[_0xe495('0x9')]?_0x1e72c1[_0xe495('0x9')][_0xe495('0xb')]||null:null,'attributes':_0x1e72c1[_0xe495('0x9')]?_0x1e72c1['options'][_0xe495('0xc')]||null:null,'limit':_0x1e72c1['options']?_0x1e72c1[_0xe495('0x9')][_0xe495('0x1d')]||null:null,'include':_0x1e72c1[_0xe495('0x9')]?_0x1e72c1[_0xe495('0x9')][_0xe495('0xd')]?_['map'](_0x1e72c1[_0xe495('0x9')][_0xe495('0xd')],function(_0x11e035){return{'model':db[_0x11e035[_0xe495('0xf')]],'as':_0x11e035['as'],'attributes':_0x11e035['as']==='Contact'?_[_0xe495('0x28')](_0x2edb63):_0x11e035['attributes'],'include':_0x11e035[_0xe495('0xd')]?_[_0xe495('0xe')](_0x11e035['include'],function(_0x44b5c2){return{'model':db[_0x44b5c2['model']],'as':_0x44b5c2['as'],'attributes':_0x44b5c2[_0xe495('0xc')],'include':_0x44b5c2['include']?_[_0xe495('0xe')](_0x44b5c2[_0xe495('0xd')],function(_0x536323){return{'model':db[_0x536323[_0xe495('0xf')]],'as':_0x536323['as'],'attributes':_0x536323[_0xe495('0xc')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x21bfa1){logger[_0xe495('0x10')]('GetCmHopper',_0x1e72c1);logger[_0xe495('0x17')]('GetCmHopper',_0x1e72c1,JSON['stringify'](_0x21bfa1));_0x1d5e9d(_0x21bfa1);})['catch'](function(_0x510df7){logger[_0xe495('0x12')](_0xe495('0x6'),_0x510df7[_0xe495('0x13')],_0x1e72c1);_0x4c86e9(_0x2ef0f0[_0xe495('0x12')](0x1f4,_0x510df7[_0xe495('0x13')]));});});});};exports[_0xe495('0x3f')]=function(_0x3f05f7){var _0x47873d=this;return new Promise(function(_0x3126e2,_0x37d755){return db[_0xe495('0x22')]['findOne']({'raw':!![],'where':{'phone':_0x3f05f7['options'][_0xe495('0xb')]['phone']},'attributes':['id',_0xe495('0x40')],'order':[['id',_0xe495('0x41')]]})[_0xe495('0x16')](function(_0x3981e1){logger['info'](_0xe495('0x42'),_0x3f05f7);logger['debug']('getContactByPhone',_0x3f05f7,JSON[_0xe495('0x18')](_0x3981e1));_0x3126e2(_0x3981e1);})[_0xe495('0x11')](function(_0x1d35b3){logger[_0xe495('0x12')](_0xe495('0x42'),_0x1d35b3[_0xe495('0x13')],_0x3f05f7);_0x37d755(_0x47873d['error'](0x1f4,_0x1d35b3['message']));});});};exports[_0xe495('0x43')]=function(_0x20ebf9){var _0x1a4a4e=this;return new Promise(function(_0x3ab39c,_0x33b42b){return db[_0xe495('0x23')][_0xe495('0x33')](function(_0x5e2fb7){var _0x2a0f18=_0x20ebf9[_0xe495('0x9')]&&_0x20ebf9[_0xe495('0x9')][_0xe495('0xb')]?_0x20ebf9[_0xe495('0x9')][_0xe495('0xb')]:{};return db[_0xe495('0x7')][_0xe495('0x2e')](_0x20ebf9[_0xe495('0x1b')],{'where':_0x2a0f18,'transaction':_0x5e2fb7})[_0xe495('0x16')](function(_0x55cb37){logger['info']('ResetActiveCalls',_0x20ebf9);logger['debug'](_0xe495('0x43'),_0x20ebf9,JSON['stringify'](_0x55cb37));_0x3ab39c(_0x55cb37);})['catch'](function(_0x498b1c){logger[_0xe495('0x12')]('ResetActiveCalls',_0x498b1c[_0xe495('0x13')],_0x20ebf9);_0x33b42b(_0x1a4a4e[_0xe495('0x12')](0x1f4,_0x498b1c[_0xe495('0x13')]));});});});};exports[_0xe495('0x44')]=function(_0x21943f){var _0x3014dc=this;var _0x4238b7=_0x21943f[_0xe495('0x1b')]['where'][_0xe495('0x45')];var _0x7ee56d=_0x21943f[_0xe495('0x1b')]['where'][_0xe495('0x46')];var _0x30526d=_0x21943f[_0xe495('0x1b')]['where'][_0xe495('0x47')];return new Promise(function(_0x2f98ff,_0x336837){return db['CmHopper']['findAll']({'where':{'voiceQueueId':{'$in':_0x4238b7},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db['sequelize']['literal'](_0xe495('0x48')+_0x7ee56d+_0xe495('0x49')),'$gt':db[_0xe495('0x23')][_0xe495('0x4a')](_0xe495('0x4b'))}},'UserId':{'$in':_0x30526d}},'include':[{'model':db[_0xe495('0x22')],'as':_0xe495('0x27')},{'model':db[_0xe495('0x29')],'as':_0xe495('0x4c'),'attributes':['id',_0xe495('0x2a'),'voicePause']},{'model':db[_0xe495('0x4d')],'as':'List'}]})[_0xe495('0x16')](function(_0x1f0992){if(_0x1f0992[_0xe495('0x2c')]>0x0){return db['sequelize']['transaction'](function(_0x2cb407){return db[_0xe495('0x7')][_0xe495('0x2e')]({'recallmeNotifiedDate':db['sequelize'][_0xe495('0x4a')]('NOW()')},{'where':{'id':{'$in':_[_0xe495('0xe')](_0x1f0992,'id')}},'transaction':_0x2cb407})[_0xe495('0x16')](function(){_0x2f98ff(_0x1f0992);})[_0xe495('0x11')](function(_0x44db35){logger[_0xe495('0x12')]('CmHopperHandlePreviewRecallNotifications',_0x44db35['message'],_0x21943f);_0x336837(_0x3014dc[_0xe495('0x12')](0x1f4,_0x44db35['message']));});})[_0xe495('0x11')](function(_0x5cf294){logger[_0xe495('0x12')](_0xe495('0x44'),_0x5cf294[_0xe495('0x13')],_0x21943f);_0x336837(_0x3014dc[_0xe495('0x12')](0x1f4,_0x5cf294['message']));});}else{_0x2f98ff(_0x1f0992);}});});};
\ No newline at end of file
+var _0x0c71=['MoveContactManagedDialer','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','contactsRescheduled','GetContactRecallMe','describe','UserId','findOne','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','interval','\x20MINUTE','voicePause','CmList','List','NOW()','CmHopperHandlePreviewRecallNotifications','util','bluebird','../../mysqldb','../../config/logger','CmHopper','findAll','options','include','map','model','attributes','info','GetCmHopper','debug','stringify','catch','error','message','raw','where','then','create','body','CreateCmHopper','UpdateCmHopper','update','limit','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','DestroyCmHopper','destroy','CmContact','sequelize','transaction','order','LOCK','UPDATE','Contact','keys','User','Agent','name','length','push','includes','GetContactDialer','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','ContactId'];(function(_0xcfaf79,_0x374941){var _0x5b8c1b=function(_0x11dded){while(--_0x11dded){_0xcfaf79['push'](_0xcfaf79['shift']());}};_0x5b8c1b(++_0x374941);}(_0x0c71,0xfb));var _0x10c7=function(_0x1be051,_0x46ef00){_0x1be051=_0x1be051-0x0;var _0x6c01c1=_0x0c71[_0x1be051];return _0x6c01c1;};'use strict';var _=require('lodash');var util=require(_0x10c7('0x0'));var moment=require('moment');var BPromise=require(_0x10c7('0x1'));var db=require(_0x10c7('0x2'))['db'];var logger=require(_0x10c7('0x3'))('rpc');exports['GetCmHopper']=function(_0xa72176){var _0x57f92f=this;return new Promise(function(_0x2397ae,_0x46a7fc){return db[_0x10c7('0x4')][_0x10c7('0x5')]({'raw':_0xa72176[_0x10c7('0x6')]?_0xa72176[_0x10c7('0x6')]['raw']===undefined?!![]:![]:!![],'where':_0xa72176[_0x10c7('0x6')]?_0xa72176[_0x10c7('0x6')]['where']||null:null,'attributes':_0xa72176[_0x10c7('0x6')]?_0xa72176['options']['attributes']||null:null,'limit':_0xa72176[_0x10c7('0x6')]?_0xa72176[_0x10c7('0x6')]['limit']||null:null,'include':_0xa72176[_0x10c7('0x6')]?_0xa72176[_0x10c7('0x6')][_0x10c7('0x7')]?_[_0x10c7('0x8')](_0xa72176[_0x10c7('0x6')][_0x10c7('0x7')],function(_0x1a0d42){return{'model':db[_0x1a0d42[_0x10c7('0x9')]],'as':_0x1a0d42['as'],'attributes':_0x1a0d42[_0x10c7('0xa')],'include':_0x1a0d42[_0x10c7('0x7')]?_['map'](_0x1a0d42[_0x10c7('0x7')],function(_0x1b5bcd){return{'model':db[_0x1b5bcd[_0x10c7('0x9')]],'as':_0x1b5bcd['as'],'attributes':_0x1b5bcd[_0x10c7('0xa')],'include':_0x1b5bcd[_0x10c7('0x7')]?_[_0x10c7('0x8')](_0x1b5bcd[_0x10c7('0x7')],function(_0x4ea8b3){return{'model':db[_0x4ea8b3[_0x10c7('0x9')]],'as':_0x4ea8b3['as'],'attributes':_0x4ea8b3[_0x10c7('0xa')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x439fd6){logger[_0x10c7('0xb')](_0x10c7('0xc'),_0xa72176);logger[_0x10c7('0xd')](_0x10c7('0xc'),_0xa72176,JSON[_0x10c7('0xe')](_0x439fd6));_0x2397ae(_0x439fd6);})[_0x10c7('0xf')](function(_0x1bd968){logger[_0x10c7('0x10')]('GetCmHopper',_0x1bd968['message'],_0xa72176);_0x46a7fc(_0x57f92f[_0x10c7('0x10')](0x1f4,_0x1bd968[_0x10c7('0x11')]));});});};exports['ShowCmHopper']=function(_0x28e6fe){var _0x1b3435=this;return new Promise(function(_0xe1133a,_0x5373cf){return db[_0x10c7('0x4')]['find']({'raw':_0x28e6fe[_0x10c7('0x6')]?_0x28e6fe[_0x10c7('0x6')][_0x10c7('0x12')]===undefined?!![]:![]:!![],'where':_0x28e6fe['options']?_0x28e6fe[_0x10c7('0x6')][_0x10c7('0x13')]||null:null,'attributes':_0x28e6fe[_0x10c7('0x6')]?_0x28e6fe[_0x10c7('0x6')][_0x10c7('0xa')]||null:null,'include':_0x28e6fe[_0x10c7('0x6')]?_0x28e6fe[_0x10c7('0x6')][_0x10c7('0x7')]?_[_0x10c7('0x8')](_0x28e6fe[_0x10c7('0x6')][_0x10c7('0x7')],function(_0x1cbe60){return{'model':db[_0x1cbe60[_0x10c7('0x9')]],'as':_0x1cbe60['as'],'attributes':_0x1cbe60[_0x10c7('0xa')],'include':_0x1cbe60[_0x10c7('0x7')]?_[_0x10c7('0x8')](_0x1cbe60[_0x10c7('0x7')],function(_0x2cc3d0){return{'model':db[_0x2cc3d0[_0x10c7('0x9')]],'as':_0x2cc3d0['as'],'attributes':_0x2cc3d0[_0x10c7('0xa')],'include':_0x2cc3d0['include']?_['map'](_0x2cc3d0['include'],function(_0x211e7f){return{'model':db[_0x211e7f[_0x10c7('0x9')]],'as':_0x211e7f['as'],'attributes':_0x211e7f[_0x10c7('0xa')]};}):[]};}):[]};}):[]:[]})[_0x10c7('0x14')](function(_0x27ac7e){logger[_0x10c7('0xb')]('ShowCmHopper',_0x28e6fe);logger[_0x10c7('0xd')]('ShowCmHopper',_0x28e6fe,JSON[_0x10c7('0xe')](_0x27ac7e));_0xe1133a(_0x27ac7e);})['catch'](function(_0x3731a1){logger[_0x10c7('0x10')]('ShowCmHopper',_0x3731a1[_0x10c7('0x11')],_0x28e6fe);_0x5373cf(_0x1b3435[_0x10c7('0x10')](0x1f4,_0x3731a1[_0x10c7('0x11')]));});});};exports['CreateCmHopper']=function(_0x10d26e){var _0x3c98ec=this;return new Promise(function(_0x9ac3c2,_0x341d89){return db[_0x10c7('0x4')][_0x10c7('0x15')](_0x10d26e[_0x10c7('0x16')],{'raw':_0x10d26e['options']?_0x10d26e['options'][_0x10c7('0x12')]===undefined?!![]:![]:!![]})[_0x10c7('0x14')](function(_0x15f193){logger[_0x10c7('0xb')](_0x10c7('0x17'),_0x10d26e);logger[_0x10c7('0xd')](_0x10c7('0x17'),_0x10d26e,JSON[_0x10c7('0xe')](_0x15f193));_0x9ac3c2(_0x15f193);})[_0x10c7('0xf')](function(_0x3ff7a9){logger[_0x10c7('0x10')](_0x10c7('0x17'),_0x3ff7a9[_0x10c7('0x11')],_0x10d26e);_0x341d89(_0x3c98ec[_0x10c7('0x10')](0x1f4,_0x3ff7a9['message']));});});};exports[_0x10c7('0x18')]=function(_0x2b10f4){var _0x187e0d=this;return new Promise(function(_0x3e082f,_0x565d19){return db[_0x10c7('0x4')][_0x10c7('0x19')](_0x2b10f4[_0x10c7('0x16')],{'raw':_0x2b10f4[_0x10c7('0x6')]?_0x2b10f4[_0x10c7('0x6')][_0x10c7('0x12')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b10f4[_0x10c7('0x6')]?_0x2b10f4[_0x10c7('0x6')][_0x10c7('0x13')]||null:null,'attributes':_0x2b10f4[_0x10c7('0x6')]?_0x2b10f4['options'][_0x10c7('0xa')]||null:null,'limit':_0x2b10f4[_0x10c7('0x6')]?_0x2b10f4['options'][_0x10c7('0x1a')]||null:null})['then'](function(_0x41e06b){logger[_0x10c7('0xb')](_0x10c7('0x18'),_0x2b10f4);logger[_0x10c7('0xb')](_0x10c7('0x1b'),JSON[_0x10c7('0xe')](_0x2b10f4[_0x10c7('0x6')][_0x10c7('0x13')]),_0x2b10f4[_0x10c7('0x16')][_0x10c7('0x1c')]);logger[_0x10c7('0xd')]('UpdateCmHopper',_0x2b10f4,JSON[_0x10c7('0xe')](_0x41e06b));_0x3e082f(_0x41e06b);})[_0x10c7('0xf')](function(_0x444475){logger[_0x10c7('0x10')]('UpdateCmHopper',_0x444475[_0x10c7('0x11')],_0x2b10f4);_0x565d19(_0x187e0d['error'](0x1f4,_0x444475['message']));});});};exports[_0x10c7('0x1d')]=function(_0x56cd82){var _0xe022ce=this;return new Promise(function(_0x253698,_0x17beab){return db[_0x10c7('0x4')][_0x10c7('0x1e')]({'where':_0x56cd82[_0x10c7('0x6')]?_0x56cd82[_0x10c7('0x6')][_0x10c7('0x13')]||null:null})['then'](function(_0x2250dd){logger[_0x10c7('0xb')](_0x10c7('0x1d'),_0x56cd82);logger['debug'](_0x10c7('0x1d'),_0x56cd82,JSON[_0x10c7('0xe')](_0x2250dd));_0x253698(_0x2250dd);})['catch'](function(_0x2d882d){logger[_0x10c7('0x10')](_0x10c7('0x1d'),_0x2d882d[_0x10c7('0x11')],_0x56cd82);_0x17beab(_0xe022ce[_0x10c7('0x10')](0x1f4,_0x2d882d[_0x10c7('0x11')]));});});};exports['GetContactDialer']=function(_0x1c3771){var _0x55c80d=this;return new Promise(function(_0x5d3b7e,_0x520a04){return db[_0x10c7('0x1f')]['describe']()['then'](function(_0x4d4fe6){return db[_0x10c7('0x20')][_0x10c7('0x21')](function(_0x111fa9){return db[_0x10c7('0x4')][_0x10c7('0x5')]({'where':_0x1c3771[_0x10c7('0x6')]?_0x1c3771['options'][_0x10c7('0x13')]||null:null,'attributes':_0x1c3771[_0x10c7('0x6')]?_0x1c3771['options'][_0x10c7('0xa')]||null:null,'limit':_0x1c3771[_0x10c7('0x6')]?_0x1c3771[_0x10c7('0x6')]['limit']||null:null,'order':_0x1c3771[_0x10c7('0x6')]?_0x1c3771[_0x10c7('0x6')][_0x10c7('0x22')]||null:null,'transaction':_0x111fa9,'lock':_0x111fa9[_0x10c7('0x23')][_0x10c7('0x24')],'include':[{'model':db[_0x10c7('0x1f')],'as':_0x10c7('0x25'),'attributes':_[_0x10c7('0x26')](_0x4d4fe6)},{'model':db[_0x10c7('0x27')],'as':_0x10c7('0x28'),'attributes':['id',_0x10c7('0x29'),'voicePause']}]})[_0x10c7('0x14')](function(_0x243ca0){var _0x5765c8=[];var _0x289869=[];for(var _0x175a42=0x0;_0x175a42<_0x243ca0[_0x10c7('0x2a')];_0x175a42+=0x1){var _0x449d43=_0x243ca0[_0x175a42]['UserId'];if(_0x449d43===null){_0x5765c8[_0x10c7('0x2b')](_0x243ca0[_0x175a42][_0x10c7('0x19')](_0x1c3771[_0x10c7('0x16')],{'transaction':_0x111fa9}));}else if(!_0x289869[_0x10c7('0x2c')](_0x449d43)){_0x289869[_0x10c7('0x2b')](_0x449d43);_0x5765c8['push'](_0x243ca0[_0x175a42]['update'](_0x1c3771[_0x10c7('0x16')],{'transaction':_0x111fa9}));}}return BPromise['all'](_0x5765c8);});})[_0x10c7('0x14')](function(_0x25ef06){logger[_0x10c7('0xb')](_0x10c7('0x2d'),_0x1c3771);if(_0x25ef06[_0x10c7('0x2a')]>0x0){logger[_0x10c7('0xb')](_0x10c7('0x2e'),_0x25ef06[0x0][_0x10c7('0x2f')]['id'],_0x25ef06[0x0][_0x10c7('0x2f')][_0x10c7('0x30')],_0x25ef06[0x0][_0x10c7('0x2f')]['active']);}logger[_0x10c7('0xd')](_0x10c7('0x2d'),_0x1c3771,JSON['stringify'](_0x25ef06));_0x5d3b7e(_0x25ef06);})[_0x10c7('0xf')](function(_0x13575a){logger[_0x10c7('0x10')](_0x10c7('0x2d'),_0x13575a[_0x10c7('0x11')],_0x1c3771);_0x520a04(_0x55c80d[_0x10c7('0x10')](0x1f4,_0x13575a[_0x10c7('0x11')]));});});});};exports[_0x10c7('0x31')]=function(_0x2857f4){var _0x2c089d=this;return new Promise(function(_0x2887c9,_0x266ceb){return db[_0x10c7('0x20')]['transaction'](function(_0x55ca99){return db['CmHopperFinal']['create'](_0x2857f4[_0x10c7('0x16')],{'raw':_0x2857f4[_0x10c7('0x6')]?_0x2857f4[_0x10c7('0x6')][_0x10c7('0x12')]===undefined?!![]:![]:!![],'transaction':_0x55ca99})['then'](function(){logger[_0x10c7('0xb')](_0x10c7('0x32'),JSON[_0x10c7('0xe')](_0x2857f4[_0x10c7('0x6')]['where']),_0x2857f4[_0x10c7('0x6')]['where'][_0x10c7('0x1c')]);return db[_0x10c7('0x4')][_0x10c7('0x1e')]({'where':_0x2857f4[_0x10c7('0x6')]?_0x2857f4[_0x10c7('0x6')]['where']||null:null,'transaction':_0x55ca99});});})[_0x10c7('0x14')](function(_0x4641a5){logger[_0x10c7('0xb')]('MoveContactManagedDialer',_0x2857f4);logger[_0x10c7('0xd')](_0x10c7('0x31'),_0x2857f4,JSON[_0x10c7('0xe')](_0x4641a5));_0x2887c9(_0x4641a5);})[_0x10c7('0xf')](function(_0x48ea2d){logger[_0x10c7('0x10')](_0x10c7('0x31'),_0x48ea2d[_0x10c7('0x11')],_0x2857f4);_0x266ceb(_0x2c089d[_0x10c7('0x10')](0x1f4,_0x48ea2d[_0x10c7('0x11')]));});});};exports[_0x10c7('0x33')]=function(_0x381429){var _0x42295b=this;return new Promise(function(_0xbd5fd0,_0x40c15c){return db['CmHopper'][_0x10c7('0x5')]({'raw':_0x381429[_0x10c7('0x6')]?_0x381429[_0x10c7('0x6')][_0x10c7('0x12')]===undefined?!![]:![]:!![],'where':_0x381429['options']?_0x381429[_0x10c7('0x6')][_0x10c7('0x13')]||null:null,'attributes':[[db[_0x10c7('0x20')]['fn'](_0x10c7('0x34'),db[_0x10c7('0x20')]['fn']('IF',db[_0x10c7('0x20')][_0x10c7('0x35')](_0x10c7('0x36')+util[_0x10c7('0x37')](_0x10c7('0x38'),moment()[_0x10c7('0x37')](_0x10c7('0x39')))+'\x20,\x201,\x20null'))),_0x10c7('0x3a')]]})[_0x10c7('0x14')](function(_0x4d514c){logger[_0x10c7('0xb')](_0x10c7('0x33'),_0x381429);logger['debug'](_0x10c7('0x33'),_0x381429,JSON[_0x10c7('0xe')](_0x4d514c));_0xbd5fd0(_0x4d514c);})['catch'](function(_0x311549){logger['error'](_0x10c7('0x33'),_0x311549[_0x10c7('0x11')],_0x381429);_0x40c15c(_0x42295b[_0x10c7('0x10')](0x1f4,_0x311549['message']));});});};exports[_0x10c7('0x3b')]=function(_0x34037a){var _0x5a04f0=this;return new Promise(function(_0x4b65e9,_0x4c4ad2){return db[_0x10c7('0x1f')][_0x10c7('0x3c')]()[_0x10c7('0x14')](function(){return db[_0x10c7('0x20')][_0x10c7('0x21')](function(_0x691e2e){return db[_0x10c7('0x4')][_0x10c7('0x5')]({'where':_0x34037a['options']?_0x34037a[_0x10c7('0x6')][_0x10c7('0x13')]||null:null,'attributes':_0x34037a[_0x10c7('0x6')]?_0x34037a[_0x10c7('0x6')][_0x10c7('0xa')]||null:null,'limit':0x1,'order':_0x34037a[_0x10c7('0x6')]?_0x34037a[_0x10c7('0x6')][_0x10c7('0x22')]||null:null,'group':db['CmHopper'][_0x10c7('0x3d')],'transaction':_0x691e2e,'lock':_0x691e2e['LOCK'][_0x10c7('0x24')],'include':_0x34037a[_0x10c7('0x6')]?_0x34037a[_0x10c7('0x6')]['include']?_[_0x10c7('0x8')](_0x34037a[_0x10c7('0x6')][_0x10c7('0x7')],function(_0x2528ea){return{'model':db[_0x2528ea['model']],'as':_0x2528ea['as'],'attributes':_0x2528ea[_0x10c7('0xa')],'include':_0x2528ea[_0x10c7('0x7')]?_[_0x10c7('0x8')](_0x2528ea[_0x10c7('0x7')],function(_0xf6f5c4){return{'model':db[_0xf6f5c4[_0x10c7('0x9')]],'as':_0xf6f5c4['as'],'attributes':_0xf6f5c4[_0x10c7('0xa')],'include':_0xf6f5c4[_0x10c7('0x7')]?_[_0x10c7('0x8')](_0xf6f5c4[_0x10c7('0x7')],function(_0x2e8e6c){return{'model':db[_0x2e8e6c[_0x10c7('0x9')]],'as':_0x2e8e6c['as'],'attributes':_0x2e8e6c[_0x10c7('0xa')]};}):[]};}):[]};}):[]:[]})[_0x10c7('0x14')](function(_0x504047){var _0x4dce04=[];for(var _0x5ddb98=0x0;_0x5ddb98<_0x504047[_0x10c7('0x2a')];_0x5ddb98+=0x1){_0x4dce04[_0x10c7('0x2b')](_0x504047[_0x5ddb98]['update'](_0x34037a[_0x10c7('0x16')],{'transaction':_0x691e2e}));}return BPromise['all'](_0x4dce04);});})[_0x10c7('0x14')](function(_0x31931a){logger[_0x10c7('0xb')]('GetContactRecallMe',_0x34037a);logger[_0x10c7('0xd')](_0x10c7('0x3b'),_0x34037a,JSON[_0x10c7('0xe')](_0x31931a));_0x4b65e9(_0x31931a);})[_0x10c7('0xf')](function(_0x24a9fe){logger[_0x10c7('0x10')](_0x10c7('0x3b'),_0x24a9fe[_0x10c7('0x11')],_0x34037a);_0x4c4ad2(_0x5a04f0['error'](0x1f4,_0x24a9fe[_0x10c7('0x11')]));});});});};exports['GetCmHopperPreview']=function(_0x114dd3){var _0x4251a8=this;return new Promise(function(_0x45188a,_0x4bcb77){db[_0x10c7('0x1f')][_0x10c7('0x3c')]()[_0x10c7('0x14')](function(_0x2f6ff7){return db[_0x10c7('0x4')][_0x10c7('0x5')]({'raw':_0x114dd3[_0x10c7('0x6')]?_0x114dd3['options'][_0x10c7('0x12')]===undefined?!![]:![]:!![],'where':_0x114dd3[_0x10c7('0x6')]?_0x114dd3[_0x10c7('0x6')]['where']||null:null,'attributes':_0x114dd3[_0x10c7('0x6')]?_0x114dd3[_0x10c7('0x6')][_0x10c7('0xa')]||null:null,'limit':_0x114dd3[_0x10c7('0x6')]?_0x114dd3['options'][_0x10c7('0x1a')]||null:null,'include':_0x114dd3[_0x10c7('0x6')]?_0x114dd3[_0x10c7('0x6')][_0x10c7('0x7')]?_[_0x10c7('0x8')](_0x114dd3['options'][_0x10c7('0x7')],function(_0x43138f){return{'model':db[_0x43138f[_0x10c7('0x9')]],'as':_0x43138f['as'],'attributes':_0x43138f['as']===_0x10c7('0x25')?_['keys'](_0x2f6ff7):_0x43138f['attributes'],'include':_0x43138f[_0x10c7('0x7')]?_[_0x10c7('0x8')](_0x43138f['include'],function(_0x48e4c7){return{'model':db[_0x48e4c7[_0x10c7('0x9')]],'as':_0x48e4c7['as'],'attributes':_0x48e4c7[_0x10c7('0xa')],'include':_0x48e4c7[_0x10c7('0x7')]?_['map'](_0x48e4c7['include'],function(_0x1ca26d){return{'model':db[_0x1ca26d[_0x10c7('0x9')]],'as':_0x1ca26d['as'],'attributes':_0x1ca26d['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4e3abd){logger[_0x10c7('0xb')](_0x10c7('0xc'),_0x114dd3);logger[_0x10c7('0xd')](_0x10c7('0xc'),_0x114dd3,JSON[_0x10c7('0xe')](_0x4e3abd));_0x45188a(_0x4e3abd);})[_0x10c7('0xf')](function(_0x3e2c9e){logger[_0x10c7('0x10')](_0x10c7('0xc'),_0x3e2c9e['message'],_0x114dd3);_0x4bcb77(_0x4251a8['error'](0x1f4,_0x3e2c9e[_0x10c7('0x11')]));});});});};exports['GetContactByPhone']=function(_0x4b77fd){var _0x2422e5=this;return new Promise(function(_0xc1af4,_0x426a40){return db[_0x10c7('0x1f')][_0x10c7('0x3e')]({'raw':!![],'where':{'phone':_0x4b77fd[_0x10c7('0x6')][_0x10c7('0x13')][_0x10c7('0x3f')]},'attributes':['id',_0x10c7('0x40')],'order':[['id',_0x10c7('0x41')]]})[_0x10c7('0x14')](function(_0x3fc20b){logger[_0x10c7('0xb')](_0x10c7('0x42'),_0x4b77fd);logger[_0x10c7('0xd')](_0x10c7('0x42'),_0x4b77fd,JSON['stringify'](_0x3fc20b));_0xc1af4(_0x3fc20b);})[_0x10c7('0xf')](function(_0x420c3f){logger[_0x10c7('0x10')](_0x10c7('0x42'),_0x420c3f['message'],_0x4b77fd);_0x426a40(_0x2422e5[_0x10c7('0x10')](0x1f4,_0x420c3f[_0x10c7('0x11')]));});});};exports[_0x10c7('0x43')]=function(_0x42f717){var _0x2cd7cf=this;return new Promise(function(_0x486275,_0x4f7333){return db[_0x10c7('0x20')]['transaction'](function(_0x3a3fdd){var _0x4123dc=_0x42f717['options']&&_0x42f717[_0x10c7('0x6')]['where']?_0x42f717[_0x10c7('0x6')]['where']:{};return db[_0x10c7('0x4')][_0x10c7('0x19')](_0x42f717['body'],{'where':_0x4123dc,'transaction':_0x3a3fdd})['then'](function(_0x38d7a1){logger['info'](_0x10c7('0x43'),_0x42f717);logger[_0x10c7('0xd')](_0x10c7('0x43'),_0x42f717,JSON['stringify'](_0x38d7a1));_0x486275(_0x38d7a1);})[_0x10c7('0xf')](function(_0x4f26df){logger[_0x10c7('0x10')](_0x10c7('0x43'),_0x4f26df[_0x10c7('0x11')],_0x42f717);_0x4f7333(_0x2cd7cf[_0x10c7('0x10')](0x1f4,_0x4f26df[_0x10c7('0x11')]));});});});};exports['CmHopperHandlePreviewRecallNotifications']=function(_0x5c205c){var _0x4cc085=this;var _0x56246f=_0x5c205c['body'][_0x10c7('0x13')]['voiceQueueIds'];var _0x17256a=_0x5c205c[_0x10c7('0x16')]['where'][_0x10c7('0x44')];var _0x40b097=_0x5c205c[_0x10c7('0x16')][_0x10c7('0x13')]['availableAgentsIds'];return new Promise(function(_0x3ec816,_0x2605e3){return db['CmHopper'][_0x10c7('0x5')]({'where':{'voiceQueueId':{'$in':_0x56246f},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db['sequelize'][_0x10c7('0x35')]('NOW()\x20+\x20INTERVAL\x20'+_0x17256a+_0x10c7('0x45')),'$gt':db[_0x10c7('0x20')][_0x10c7('0x35')]('NOW()')}},'UserId':{'$in':_0x40b097}},'include':[{'model':db[_0x10c7('0x1f')],'as':'Contact'},{'model':db[_0x10c7('0x27')],'as':_0x10c7('0x28'),'attributes':['id',_0x10c7('0x29'),_0x10c7('0x46')]},{'model':db[_0x10c7('0x47')],'as':_0x10c7('0x48')}]})[_0x10c7('0x14')](function(_0x44eaf5){if(_0x44eaf5[_0x10c7('0x2a')]>0x0){return db[_0x10c7('0x20')][_0x10c7('0x21')](function(_0x10afa5){return db[_0x10c7('0x4')][_0x10c7('0x19')]({'recallmeNotifiedDate':db['sequelize'][_0x10c7('0x35')](_0x10c7('0x49'))},{'where':{'id':{'$in':_[_0x10c7('0x8')](_0x44eaf5,'id')}},'transaction':_0x10afa5})[_0x10c7('0x14')](function(){_0x3ec816(_0x44eaf5);})[_0x10c7('0xf')](function(_0x24e2ac){logger[_0x10c7('0x10')](_0x10c7('0x4a'),_0x24e2ac['message'],_0x5c205c);_0x2605e3(_0x4cc085[_0x10c7('0x10')](0x1f4,_0x24e2ac[_0x10c7('0x11')]));});})[_0x10c7('0xf')](function(_0xe1dbfa){logger['error'](_0x10c7('0x4a'),_0xe1dbfa[_0x10c7('0x11')],_0x5c205c);_0x2605e3(_0x4cc085[_0x10c7('0x10')](0x1f4,_0xe1dbfa['message']));});}else{_0x3ec816(_0x44eaf5);}});});};
\ No newline at end of file
index 9709c33..2403f6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39c9=['/preview','/timezone','getTimezone','put','update','exports','express','Router','../../components/auth/service','./cmHopper.controller','get','isAuthenticated','/describe','describe','/opencontacts','getOpenContacts','/timezones','/:id','show','/:id/previewrecall','getPreviewRecall','create'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x39c9,0x1be));var _0x939c=function(_0x2e3f40,_0x47410c){_0x2e3f40=_0x2e3f40-0x0;var _0x28abc1=_0x39c9[_0x2e3f40];return _0x28abc1;};'use strict';var express=require(_0x939c('0x0'));var router=express[_0x939c('0x1')]();var auth=require(_0x939c('0x2'));var controller=require(_0x939c('0x3'));router[_0x939c('0x4')]('/',auth[_0x939c('0x5')](),controller['index']);router[_0x939c('0x4')](_0x939c('0x6'),auth[_0x939c('0x5')](),controller[_0x939c('0x7')]);router['get'](_0x939c('0x8'),auth['isAuthenticated'](),controller[_0x939c('0x9')]);router[_0x939c('0x4')](_0x939c('0xa'),auth[_0x939c('0x5')](),controller['getTimezones']);router[_0x939c('0x4')](_0x939c('0xb'),auth['isAuthenticated'](),controller[_0x939c('0xc')]);router['get'](_0x939c('0xd'),auth[_0x939c('0x5')](),controller[_0x939c('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x939c('0xf')]);router['post'](_0x939c('0x10'),auth[_0x939c('0x5')](),controller['getPreview']);router['post'](_0x939c('0x11'),auth[_0x939c('0x5')](),controller[_0x939c('0x12')]);router[_0x939c('0x13')](_0x939c('0xb'),auth['isAuthenticated'](),controller[_0x939c('0x14')]);router['delete'](_0x939c('0xb'),auth[_0x939c('0x5')](),controller['destroy']);module[_0x939c('0x15')]=router;
\ No newline at end of file
+var _0x9536=['exports','express','Router','../../components/auth/service','get','index','isAuthenticated','describe','/opencontacts','getOpenContacts','/timezones','getTimezones','/:id','show','/:id/previewrecall','post','create','/preview','getPreview','/timezone','getTimezone','put','update','destroy'];(function(_0x25cf63,_0x4b0159){var _0x11d257=function(_0x3f8e4f){while(--_0x3f8e4f){_0x25cf63['push'](_0x25cf63['shift']());}};_0x11d257(++_0x4b0159);}(_0x9536,0x109));var _0x6953=function(_0x2906e6,_0x5ccd59){_0x2906e6=_0x2906e6-0x0;var _0x12517a=_0x9536[_0x2906e6];return _0x12517a;};'use strict';var express=require(_0x6953('0x0'));var router=express[_0x6953('0x1')]();var auth=require(_0x6953('0x2'));var controller=require('./cmHopper.controller');router[_0x6953('0x3')]('/',auth['isAuthenticated'](),controller[_0x6953('0x4')]);router[_0x6953('0x3')]('/describe',auth[_0x6953('0x5')](),controller[_0x6953('0x6')]);router[_0x6953('0x3')](_0x6953('0x7'),auth[_0x6953('0x5')](),controller[_0x6953('0x8')]);router[_0x6953('0x3')](_0x6953('0x9'),auth[_0x6953('0x5')](),controller[_0x6953('0xa')]);router['get'](_0x6953('0xb'),auth[_0x6953('0x5')](),controller[_0x6953('0xc')]);router[_0x6953('0x3')](_0x6953('0xd'),auth[_0x6953('0x5')](),controller['getPreviewRecall']);router[_0x6953('0xe')]('/',auth[_0x6953('0x5')](),controller[_0x6953('0xf')]);router['post'](_0x6953('0x10'),auth[_0x6953('0x5')](),controller[_0x6953('0x11')]);router[_0x6953('0xe')](_0x6953('0x12'),auth[_0x6953('0x5')](),controller[_0x6953('0x13')]);router[_0x6953('0x14')]('/:id',auth[_0x6953('0x5')](),controller[_0x6953('0x15')]);router['delete'](_0x6953('0xb'),auth[_0x6953('0x5')](),controller[_0x6953('0x16')]);module[_0x6953('0x17')]=router;
\ No newline at end of file
index 0de8097..141f6d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebd3=['YYYY-MM-DD\x20HH:mm:ss','moment','sequelize','exports','INTEGER','DATE'];(function(_0xf266a9,_0x5aef5d){var _0x299a72=function(_0x1c0eb0){while(--_0x1c0eb0){_0xf266a9['push'](_0xf266a9['shift']());}};_0x299a72(++_0x5aef5d);}(_0xebd3,0x17b));var _0x3ebd=function(_0x310504,_0x26ad95){_0x310504=_0x310504-0x0;var _0x5b36d0=_0xebd3[_0x310504];return _0x5b36d0;};'use strict';var moment=require(_0x3ebd('0x0'));var Sequelize=require(_0x3ebd('0x1'));module[_0x3ebd('0x2')]={'CmHopperId':{'type':Sequelize[_0x3ebd('0x3')]},'phone':{'type':Sequelize['STRING'],'allowNull':![]},'OrderBy':{'type':Sequelize[_0x3ebd('0x3')],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0x3ebd('0x4')],'defaultValue':moment()['format'](_0x3ebd('0x5'))},'countbusyretry':{'type':Sequelize[_0x3ebd('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x3ebd('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x3ebd('0x3')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x3ebd('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x3ebd('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x3ebd('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xabfc=['INTEGER','STRING','sequelize'];(function(_0x30ddc1,_0x1886c4){var _0x4a2180=function(_0x3b453b){while(--_0x3b453b){_0x30ddc1['push'](_0x30ddc1['shift']());}};_0x4a2180(++_0x1886c4);}(_0xabfc,0x7d));var _0xcabf=function(_0x3df9dd,_0x26f5cd){_0x3df9dd=_0x3df9dd-0x0;var _0x4f11e4=_0xabfc[_0x3df9dd];return _0x4f11e4;};'use strict';var moment=require('moment');var Sequelize=require(_0xcabf('0x0'));module['exports']={'CmHopperId':{'type':Sequelize[_0xcabf('0x1')]},'phone':{'type':Sequelize[_0xcabf('0x2')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0xcabf('0x1')],'defaultValue':0x0},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0xcabf('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xcabf('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xcabf('0x1')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0xcabf('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xcabf('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xcabf('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 1fb0c27..b014ea4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c7c=['params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','moment','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/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','apply','update','destroy','then','get','CmHopperAdditionalPhones','UserProfileResource','error','stack','name','send','index','map','CmHopperAdditionalPhone','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch'];(function(_0x5e5632,_0x26afd9){var _0x4e84c2=function(_0x1110ab){while(--_0x1110ab){_0x5e5632['push'](_0x5e5632['shift']());}};_0x4e84c2(++_0x26afd9);}(_0x7c7c,0x10a));var _0xc7c7=function(_0x2f4090,_0x5ae69b){_0x2f4090=_0x2f4090-0x0;var _0x111790=_0x7c7c[_0x2f4090];return _0x111790;};'use strict';var emlformat=require(_0xc7c7('0x0'));var rimraf=require(_0xc7c7('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc7c7('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xc7c7('0x3'));var util=require(_0xc7c7('0x4'));var path=require(_0xc7c7('0x5'));var sox=require(_0xc7c7('0x6'));var csv=require(_0xc7c7('0x7'));var ejs=require(_0xc7c7('0x8'));var fs=require('fs');var fs_extra=require(_0xc7c7('0x9'));var _=require(_0xc7c7('0xa'));var squel=require('squel');var crypto=require(_0xc7c7('0xb'));var jsforce=require(_0xc7c7('0xc'));var deskjs=require(_0xc7c7('0xd'));var toCsv=require(_0xc7c7('0x7'));var querystring=require(_0xc7c7('0xe'));var Papa=require(_0xc7c7('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc7c7('0x10'));var as=require(_0xc7c7('0x11'));var hardwareService=require(_0xc7c7('0x12'));var logger=require(_0xc7c7('0x13'))(_0xc7c7('0x14'));var utils=require(_0xc7c7('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xc7c7('0x16'));var db=require(_0xc7c7('0x17'))['db'];function respondWithStatusCode(_0x2916a3,_0x359c42){_0x359c42=_0x359c42||0xcc;return function(_0x442c7a){if(_0x442c7a){return _0x2916a3[_0xc7c7('0x18')](_0x359c42);}return _0x2916a3['status'](_0x359c42)[_0xc7c7('0x19')]();};}function respondWithResult(_0x382725,_0x1ff696){_0x1ff696=_0x1ff696||0xc8;return function(_0x4f3d1e){if(_0x4f3d1e){return _0x382725[_0xc7c7('0x1a')](_0x1ff696)[_0xc7c7('0x1b')](_0x4f3d1e);}};}function respondWithFilteredResult(_0x560775,_0x3fdb4d){return function(_0x43d9a6){if(_0x43d9a6){var _0x23666c=typeof _0x3fdb4d[_0xc7c7('0x1c')]===_0xc7c7('0x1d')&&typeof _0x3fdb4d[_0xc7c7('0x1e')]===_0xc7c7('0x1d');var _0x262b7e=_0x43d9a6['count'];var _0x470767=_0x23666c?0x0:_0x3fdb4d[_0xc7c7('0x1c')];var _0x14f0ac=_0x23666c?_0x43d9a6['count']:_0x3fdb4d[_0xc7c7('0x1c')]+_0x3fdb4d[_0xc7c7('0x1e')];var _0x4d7f89;if(_0x14f0ac>=_0x262b7e){_0x14f0ac=_0x262b7e;_0x4d7f89=0xc8;}else{_0x4d7f89=0xce;}_0x560775['status'](_0x4d7f89);return _0x560775[_0xc7c7('0x1f')](_0xc7c7('0x20'),_0x470767+'-'+_0x14f0ac+'/'+_0x262b7e)['json'](_0x43d9a6);}return null;};}function patchUpdates(_0x4557da){return function(_0x38a708){try{jsonpatch[_0xc7c7('0x21')](_0x38a708,_0x4557da,!![]);}catch(_0xce75b9){return BPromise['reject'](_0xce75b9);}return _0x38a708['save']();};}function saveUpdates(_0x127c64,_0x7f3d6b){return function(_0x2e6f3e){if(_0x2e6f3e){return _0x2e6f3e[_0xc7c7('0x22')](_0x127c64)['then'](function(_0x5202df){return _0x5202df;});}return null;};}function removeEntity(_0x5dcf4b,_0x2917d8){return function(_0x4fd465){if(_0x4fd465){return _0x4fd465[_0xc7c7('0x23')]()[_0xc7c7('0x24')](function(){var _0x6f1b27=_0x4fd465[_0xc7c7('0x25')]({'plain':!![]});var _0x24e3f9=_0xc7c7('0x26');return db[_0xc7c7('0x27')][_0xc7c7('0x23')]({'where':{'type':_0x24e3f9,'resourceId':_0x6f1b27['id']}})['then'](function(){return _0x4fd465;});})['then'](function(){_0x5dcf4b['status'](0xcc)[_0xc7c7('0x19')]();});}};}function handleEntityNotFound(_0x499c9e,_0x1b3e70){return function(_0x5c4ca1){if(!_0x5c4ca1){_0x499c9e[_0xc7c7('0x18')](0x194);}return _0x5c4ca1;};}function handleError(_0x40639e,_0x596328){_0x596328=_0x596328||0x1f4;return function(_0x3594bb){logger[_0xc7c7('0x28')](_0x3594bb[_0xc7c7('0x29')]);if(_0x3594bb[_0xc7c7('0x2a')]){delete _0x3594bb['name'];}_0x40639e[_0xc7c7('0x1a')](_0x596328)[_0xc7c7('0x2b')](_0x3594bb);};}exports[_0xc7c7('0x2c')]=function(_0x1fa9ca,_0xfd1706){var _0x420de0={},_0x1232c1={},_0x5e1653={'count':0x0,'rows':[]};var _0x4e26e4=_[_0xc7c7('0x2d')](db[_0xc7c7('0x2e')][_0xc7c7('0x2f')],function(_0x1a7831){return{'name':_0x1a7831[_0xc7c7('0x30')],'type':_0x1a7831[_0xc7c7('0x31')]['key']};});_0x1232c1[_0xc7c7('0x32')]=_[_0xc7c7('0x2d')](_0x4e26e4,_0xc7c7('0x2a'));_0x1232c1[_0xc7c7('0x33')]=_[_0xc7c7('0x34')](_0x1fa9ca[_0xc7c7('0x33')]);_0x1232c1[_0xc7c7('0x35')]=_[_0xc7c7('0x36')](_0x1232c1[_0xc7c7('0x32')],_0x1232c1[_0xc7c7('0x33')]);_0x420de0[_0xc7c7('0x37')]=_[_0xc7c7('0x36')](_0x1232c1[_0xc7c7('0x32')],qs['fields'](_0x1fa9ca[_0xc7c7('0x33')][_0xc7c7('0x38')]));_0x420de0[_0xc7c7('0x37')]=_0x420de0[_0xc7c7('0x37')][_0xc7c7('0x39')]?_0x420de0['attributes']:_0x1232c1[_0xc7c7('0x32')];if(!_0x1fa9ca['query'][_0xc7c7('0x3a')](_0xc7c7('0x3b'))){_0x420de0[_0xc7c7('0x1e')]=qs['limit'](_0x1fa9ca[_0xc7c7('0x33')][_0xc7c7('0x1e')]);_0x420de0[_0xc7c7('0x1c')]=qs[_0xc7c7('0x1c')](_0x1fa9ca['query'][_0xc7c7('0x1c')]);}_0x420de0[_0xc7c7('0x3c')]=qs[_0xc7c7('0x3d')](_0x1fa9ca[_0xc7c7('0x33')][_0xc7c7('0x3d')]);_0x420de0[_0xc7c7('0x3e')]=qs[_0xc7c7('0x35')](_[_0xc7c7('0x3f')](_0x1fa9ca[_0xc7c7('0x33')],_0x1232c1[_0xc7c7('0x35')]),_0x4e26e4);if(_0x1fa9ca[_0xc7c7('0x33')][_0xc7c7('0x40')]){_0x420de0[_0xc7c7('0x3e')]=_[_0xc7c7('0x41')](_0x420de0[_0xc7c7('0x3e')],{'$or':_['map'](_0x4e26e4,function(_0x251a0d){if(_0x251a0d[_0xc7c7('0x31')]!==_0xc7c7('0x42')){var _0x56526d={};_0x56526d[_0x251a0d['name']]={'$like':'%'+_0x1fa9ca[_0xc7c7('0x33')]['filter']+'%'};return _0x56526d;}})});}_0x420de0=_['merge']({},_0x420de0,_0x1fa9ca[_0xc7c7('0x43')]);var _0x4a543c={'where':_0x420de0['where']};return db['CmHopperAdditionalPhone'][_0xc7c7('0x44')](_0x4a543c)[_0xc7c7('0x24')](function(_0x4b41e8){_0x5e1653[_0xc7c7('0x44')]=_0x4b41e8;if(_0x1fa9ca[_0xc7c7('0x33')][_0xc7c7('0x45')]){_0x420de0[_0xc7c7('0x46')]=[{'all':!![]}];}return db[_0xc7c7('0x2e')][_0xc7c7('0x47')](_0x420de0);})[_0xc7c7('0x24')](function(_0x49a7d0){_0x5e1653[_0xc7c7('0x48')]=_0x49a7d0;return _0x5e1653;})[_0xc7c7('0x24')](respondWithFilteredResult(_0xfd1706,_0x420de0))[_0xc7c7('0x49')](handleError(_0xfd1706,null));};exports['show']=function(_0x238bc9,_0x131c15){var _0x1d82cf={'raw':!![],'where':{'id':_0x238bc9[_0xc7c7('0x4a')]['id']}},_0x444177={};_0x444177[_0xc7c7('0x32')]=_[_0xc7c7('0x34')](db[_0xc7c7('0x2e')][_0xc7c7('0x2f')]);_0x444177[_0xc7c7('0x33')]=_[_0xc7c7('0x34')](_0x238bc9[_0xc7c7('0x33')]);_0x444177[_0xc7c7('0x35')]=_['intersection'](_0x444177[_0xc7c7('0x32')],_0x444177[_0xc7c7('0x33')]);_0x1d82cf[_0xc7c7('0x37')]=_[_0xc7c7('0x36')](_0x444177[_0xc7c7('0x32')],qs[_0xc7c7('0x38')](_0x238bc9['query'][_0xc7c7('0x38')]));_0x1d82cf[_0xc7c7('0x37')]=_0x1d82cf[_0xc7c7('0x37')][_0xc7c7('0x39')]?_0x1d82cf[_0xc7c7('0x37')]:_0x444177['model'];if(_0x238bc9[_0xc7c7('0x33')][_0xc7c7('0x45')]){_0x1d82cf[_0xc7c7('0x46')]=[{'all':!![]}];}_0x1d82cf=_['merge']({},_0x1d82cf,_0x238bc9['options']);return db[_0xc7c7('0x2e')][_0xc7c7('0x4b')](_0x1d82cf)[_0xc7c7('0x24')](handleEntityNotFound(_0x131c15,null))[_0xc7c7('0x24')](respondWithResult(_0x131c15,null))['catch'](handleError(_0x131c15,null));};exports[_0xc7c7('0x4c')]=function(_0x25523a,_0x40281b){return db[_0xc7c7('0x2e')][_0xc7c7('0x4c')](_0x25523a[_0xc7c7('0x4d')],{})[_0xc7c7('0x24')](function(_0x4c0eeb){var _0x4fb61a=_0x25523a[_0xc7c7('0x4e')][_0xc7c7('0x25')]({'plain':!![]});if(!_0x4fb61a)throw new Error(_0xc7c7('0x4f'));if(_0x4fb61a[_0xc7c7('0x50')]===_0xc7c7('0x4e')){var _0x19cf01=_0x4c0eeb[_0xc7c7('0x25')]({'plain':!![]});var _0x1c06d0='CmHopperAdditionalPhones';return db[_0xc7c7('0x51')][_0xc7c7('0x4b')]({'where':{'name':_0x1c06d0,'userProfileId':_0x4fb61a[_0xc7c7('0x52')]},'raw':!![]})[_0xc7c7('0x24')](function(_0x2e7157){if(_0x2e7157&&_0x2e7157[_0xc7c7('0x53')]===0x0){return db[_0xc7c7('0x27')][_0xc7c7('0x4c')]({'name':_0x19cf01['name'],'resourceId':_0x19cf01['id'],'type':_0x2e7157[_0xc7c7('0x2a')],'sectionId':_0x2e7157['id']},{})['then'](function(){return _0x4c0eeb;});}else{return _0x4c0eeb;}})['catch'](function(_0x3e5f66){logger[_0xc7c7('0x28')](_0xc7c7('0x54'),_0x3e5f66);throw _0x3e5f66;});}return _0x4c0eeb;})['then'](respondWithResult(_0x40281b,0xc9))['catch'](handleError(_0x40281b,null));};exports['update']=function(_0x475927,_0x1dc469){if(_0x475927[_0xc7c7('0x4d')]['id']){delete _0x475927[_0xc7c7('0x4d')]['id'];}return db[_0xc7c7('0x2e')][_0xc7c7('0x4b')]({'where':{'id':_0x475927[_0xc7c7('0x4a')]['id']}})[_0xc7c7('0x24')](handleEntityNotFound(_0x1dc469,null))['then'](saveUpdates(_0x475927[_0xc7c7('0x4d')],null))[_0xc7c7('0x24')](respondWithResult(_0x1dc469,null))[_0xc7c7('0x49')](handleError(_0x1dc469,null));};exports['destroy']=function(_0x46a595,_0x41f083){return db[_0xc7c7('0x2e')][_0xc7c7('0x4b')]({'where':{'id':_0x46a595[_0xc7c7('0x4a')]['id']}})['then'](handleEntityNotFound(_0x41f083,null))[_0xc7c7('0x24')](removeEntity(_0x41f083,null))[_0xc7c7('0x49')](handleError(_0x41f083,null));};
\ No newline at end of file
+var _0xe8c4=['apply','reject','save','update','destroy','CmHopperAdditionalPhones','then','sendStatus','stack','name','index','CmHopperAdditionalPhone','rawAttributes','type','map','query','filters','intersection','attributes','model','fields','limit','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','catch','show','keys','length','includeAll','include','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','util','path','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','status','offset','undefined','count','set','json'];(function(_0x4f5fbc,_0x74cb4e){var _0x486e0e=function(_0x306829){while(--_0x306829){_0x4f5fbc['push'](_0x4f5fbc['shift']());}};_0x486e0e(++_0x74cb4e);}(_0xe8c4,0x176));var _0x4e8c=function(_0x4514e6,_0xec87c5){_0x4514e6=_0x4514e6-0x0;var _0x5349ac=_0xe8c4[_0x4514e6];return _0x5349ac;};'use strict';var emlformat=require(_0x4e8c('0x0'));var rimraf=require(_0x4e8c('0x1'));var zipdir=require(_0x4e8c('0x2'));var jsonpatch=require(_0x4e8c('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4e8c('0x4'));var Mustache=require('mustache');var util=require(_0x4e8c('0x5'));var path=require(_0x4e8c('0x6'));var sox=require(_0x4e8c('0x7'));var csv=require('to-csv');var ejs=require(_0x4e8c('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4e8c('0x9'));var squel=require(_0x4e8c('0xa'));var crypto=require('crypto');var jsforce=require(_0x4e8c('0xb'));var deskjs=require(_0x4e8c('0xc'));var toCsv=require(_0x4e8c('0xd'));var querystring=require(_0x4e8c('0xe'));var Papa=require('papaparse');var Redis=require(_0x4e8c('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x4e8c('0x10'));var as=require(_0x4e8c('0x11'));var hardwareService=require(_0x4e8c('0x12'));var logger=require(_0x4e8c('0x13'))(_0x4e8c('0x14'));var utils=require(_0x4e8c('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x4e8c('0x16'));var db=require(_0x4e8c('0x17'))['db'];function respondWithStatusCode(_0x54f403,_0x4a4dc4){_0x4a4dc4=_0x4a4dc4||0xcc;return function(_0x12d19b){if(_0x12d19b){return _0x54f403['sendStatus'](_0x4a4dc4);}return _0x54f403['status'](_0x4a4dc4)[_0x4e8c('0x18')]();};}function respondWithResult(_0x57eded,_0x135d3d){_0x135d3d=_0x135d3d||0xc8;return function(_0x187efd){if(_0x187efd){return _0x57eded[_0x4e8c('0x19')](_0x135d3d)['json'](_0x187efd);}};}function respondWithFilteredResult(_0x1ebd81,_0x2e2241){return function(_0x6c5f42){if(_0x6c5f42){var _0x5f0601=typeof _0x2e2241[_0x4e8c('0x1a')]===_0x4e8c('0x1b')&&typeof _0x2e2241['limit']===_0x4e8c('0x1b');var _0x41da41=_0x6c5f42['count'];var _0x5bb9bc=_0x5f0601?0x0:_0x2e2241[_0x4e8c('0x1a')];var _0x5e302f=_0x5f0601?_0x6c5f42[_0x4e8c('0x1c')]:_0x2e2241[_0x4e8c('0x1a')]+_0x2e2241['limit'];var _0x12847e;if(_0x5e302f>=_0x41da41){_0x5e302f=_0x41da41;_0x12847e=0xc8;}else{_0x12847e=0xce;}_0x1ebd81[_0x4e8c('0x19')](_0x12847e);return _0x1ebd81[_0x4e8c('0x1d')]('Content-Range',_0x5bb9bc+'-'+_0x5e302f+'/'+_0x41da41)[_0x4e8c('0x1e')](_0x6c5f42);}return null;};}function patchUpdates(_0x4a3f6a){return function(_0x5d34b5){try{jsonpatch[_0x4e8c('0x1f')](_0x5d34b5,_0x4a3f6a,!![]);}catch(_0x35ad6a){return BPromise[_0x4e8c('0x20')](_0x35ad6a);}return _0x5d34b5[_0x4e8c('0x21')]();};}function saveUpdates(_0xe97fce,_0xa3d130){return function(_0x1c5697){if(_0x1c5697){return _0x1c5697[_0x4e8c('0x22')](_0xe97fce)['then'](function(_0x2e6ebb){return _0x2e6ebb;});}return null;};}function removeEntity(_0x38d235,_0x193ddf){return function(_0x46952c){if(_0x46952c){return _0x46952c[_0x4e8c('0x23')]()['then'](function(){var _0x25a24b=_0x46952c['get']({'plain':!![]});var _0x450526=_0x4e8c('0x24');return db['UserProfileResource'][_0x4e8c('0x23')]({'where':{'type':_0x450526,'resourceId':_0x25a24b['id']}})['then'](function(){return _0x46952c;});})[_0x4e8c('0x25')](function(){_0x38d235[_0x4e8c('0x19')](0xcc)[_0x4e8c('0x18')]();});}};}function handleEntityNotFound(_0x368b0c,_0x3ae273){return function(_0x38fec4){if(!_0x38fec4){_0x368b0c[_0x4e8c('0x26')](0x194);}return _0x38fec4;};}function handleError(_0x4a7774,_0x53c582){_0x53c582=_0x53c582||0x1f4;return function(_0x58be5e){logger['error'](_0x58be5e[_0x4e8c('0x27')]);if(_0x58be5e[_0x4e8c('0x28')]){delete _0x58be5e[_0x4e8c('0x28')];}_0x4a7774['status'](_0x53c582)['send'](_0x58be5e);};}exports[_0x4e8c('0x29')]=function(_0x4f4197,_0x55302a){var _0x53e566={},_0x1b49a4={},_0x490922={'count':0x0,'rows':[]};var _0x44b167=_['map'](db[_0x4e8c('0x2a')][_0x4e8c('0x2b')],function(_0x40c1b9){return{'name':_0x40c1b9['fieldName'],'type':_0x40c1b9[_0x4e8c('0x2c')]['key']};});_0x1b49a4['model']=_[_0x4e8c('0x2d')](_0x44b167,_0x4e8c('0x28'));_0x1b49a4[_0x4e8c('0x2e')]=_['keys'](_0x4f4197[_0x4e8c('0x2e')]);_0x1b49a4[_0x4e8c('0x2f')]=_[_0x4e8c('0x30')](_0x1b49a4['model'],_0x1b49a4['query']);_0x53e566[_0x4e8c('0x31')]=_['intersection'](_0x1b49a4[_0x4e8c('0x32')],qs[_0x4e8c('0x33')](_0x4f4197[_0x4e8c('0x2e')][_0x4e8c('0x33')]));_0x53e566['attributes']=_0x53e566[_0x4e8c('0x31')]['length']?_0x53e566[_0x4e8c('0x31')]:_0x1b49a4[_0x4e8c('0x32')];if(!_0x4f4197[_0x4e8c('0x2e')]['hasOwnProperty']('nolimit')){_0x53e566[_0x4e8c('0x34')]=qs['limit'](_0x4f4197[_0x4e8c('0x2e')][_0x4e8c('0x34')]);_0x53e566[_0x4e8c('0x1a')]=qs[_0x4e8c('0x1a')](_0x4f4197['query'][_0x4e8c('0x1a')]);}_0x53e566['order']=qs[_0x4e8c('0x35')](_0x4f4197[_0x4e8c('0x2e')][_0x4e8c('0x35')]);_0x53e566[_0x4e8c('0x36')]=qs[_0x4e8c('0x2f')](_[_0x4e8c('0x37')](_0x4f4197[_0x4e8c('0x2e')],_0x1b49a4[_0x4e8c('0x2f')]),_0x44b167);if(_0x4f4197[_0x4e8c('0x2e')][_0x4e8c('0x38')]){_0x53e566['where']=_[_0x4e8c('0x39')](_0x53e566[_0x4e8c('0x36')],{'$or':_[_0x4e8c('0x2d')](_0x44b167,function(_0x5f3058){if(_0x5f3058[_0x4e8c('0x2c')]!==_0x4e8c('0x3a')){var _0x2fdcfa={};_0x2fdcfa[_0x5f3058[_0x4e8c('0x28')]]={'$like':'%'+_0x4f4197['query']['filter']+'%'};return _0x2fdcfa;}})});}_0x53e566=_[_0x4e8c('0x39')]({},_0x53e566,_0x4f4197[_0x4e8c('0x3b')]);var _0xff440={'where':_0x53e566[_0x4e8c('0x36')]};return db[_0x4e8c('0x2a')]['count'](_0xff440)[_0x4e8c('0x25')](function(_0x458474){_0x490922[_0x4e8c('0x1c')]=_0x458474;if(_0x4f4197['query']['includeAll']){_0x53e566['include']=[{'all':!![]}];}return db[_0x4e8c('0x2a')][_0x4e8c('0x3c')](_0x53e566);})[_0x4e8c('0x25')](function(_0xc6c5e7){_0x490922[_0x4e8c('0x3d')]=_0xc6c5e7;return _0x490922;})[_0x4e8c('0x25')](respondWithFilteredResult(_0x55302a,_0x53e566))[_0x4e8c('0x3e')](handleError(_0x55302a,null));};exports[_0x4e8c('0x3f')]=function(_0x542c61,_0x1a9a2d){var _0x2ae6a2={'raw':!![],'where':{'id':_0x542c61['params']['id']}},_0x3482f8={};_0x3482f8[_0x4e8c('0x32')]=_[_0x4e8c('0x40')](db[_0x4e8c('0x2a')][_0x4e8c('0x2b')]);_0x3482f8[_0x4e8c('0x2e')]=_[_0x4e8c('0x40')](_0x542c61[_0x4e8c('0x2e')]);_0x3482f8[_0x4e8c('0x2f')]=_['intersection'](_0x3482f8[_0x4e8c('0x32')],_0x3482f8[_0x4e8c('0x2e')]);_0x2ae6a2[_0x4e8c('0x31')]=_[_0x4e8c('0x30')](_0x3482f8[_0x4e8c('0x32')],qs[_0x4e8c('0x33')](_0x542c61[_0x4e8c('0x2e')][_0x4e8c('0x33')]));_0x2ae6a2['attributes']=_0x2ae6a2[_0x4e8c('0x31')][_0x4e8c('0x41')]?_0x2ae6a2[_0x4e8c('0x31')]:_0x3482f8['model'];if(_0x542c61[_0x4e8c('0x2e')][_0x4e8c('0x42')]){_0x2ae6a2[_0x4e8c('0x43')]=[{'all':!![]}];}_0x2ae6a2=_['merge']({},_0x2ae6a2,_0x542c61[_0x4e8c('0x3b')]);return db['CmHopperAdditionalPhone'][_0x4e8c('0x44')](_0x2ae6a2)['then'](handleEntityNotFound(_0x1a9a2d,null))[_0x4e8c('0x25')](respondWithResult(_0x1a9a2d,null))[_0x4e8c('0x3e')](handleError(_0x1a9a2d,null));};exports[_0x4e8c('0x45')]=function(_0x576617,_0x4b60f6){return db['CmHopperAdditionalPhone']['create'](_0x576617[_0x4e8c('0x46')],{})[_0x4e8c('0x25')](function(_0x4a3163){var _0x18c026=_0x576617[_0x4e8c('0x47')][_0x4e8c('0x48')]({'plain':!![]});if(!_0x18c026)throw new Error(_0x4e8c('0x49'));if(_0x18c026[_0x4e8c('0x4a')]===_0x4e8c('0x47')){var _0x1544a5=_0x4a3163[_0x4e8c('0x48')]({'plain':!![]});var _0x4df23a=_0x4e8c('0x24');return db[_0x4e8c('0x4b')][_0x4e8c('0x44')]({'where':{'name':_0x4df23a,'userProfileId':_0x18c026['userProfileId']},'raw':!![]})[_0x4e8c('0x25')](function(_0x2915d7){if(_0x2915d7&&_0x2915d7[_0x4e8c('0x4c')]===0x0){return db[_0x4e8c('0x4d')][_0x4e8c('0x45')]({'name':_0x1544a5[_0x4e8c('0x28')],'resourceId':_0x1544a5['id'],'type':_0x2915d7['name'],'sectionId':_0x2915d7['id']},{})[_0x4e8c('0x25')](function(){return _0x4a3163;});}else{return _0x4a3163;}})[_0x4e8c('0x3e')](function(_0x1ad055){logger[_0x4e8c('0x4e')](_0x4e8c('0x4f'),_0x1ad055);throw _0x1ad055;});}return _0x4a3163;})[_0x4e8c('0x25')](respondWithResult(_0x4b60f6,0xc9))['catch'](handleError(_0x4b60f6,null));};exports[_0x4e8c('0x22')]=function(_0x8f6019,_0x572e5c){if(_0x8f6019['body']['id']){delete _0x8f6019[_0x4e8c('0x46')]['id'];}return db[_0x4e8c('0x2a')]['find']({'where':{'id':_0x8f6019['params']['id']}})['then'](handleEntityNotFound(_0x572e5c,null))[_0x4e8c('0x25')](saveUpdates(_0x8f6019[_0x4e8c('0x46')],null))[_0x4e8c('0x25')](respondWithResult(_0x572e5c,null))['catch'](handleError(_0x572e5c,null));};exports[_0x4e8c('0x23')]=function(_0x4e6977,_0x1ebbe3){return db[_0x4e8c('0x2a')]['find']({'where':{'id':_0x4e6977[_0x4e8c('0x50')]['id']}})[_0x4e8c('0x25')](handleEntityNotFound(_0x1ebbe3,null))[_0x4e8c('0x25')](removeEntity(_0x1ebbe3,null))['catch'](handleError(_0x1ebbe3,null));};
\ No newline at end of file
index f04881c..2f16ea4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd843=['cm_hopper_additional_phones','lodash','util','api','request-promise','path','rimraf','../../config/environment','CmHopperAdditionalPhone'];(function(_0x2a723e,_0x61bb43){var _0x48a0e1=function(_0x470e57){while(--_0x470e57){_0x2a723e['push'](_0x2a723e['shift']());}};_0x48a0e1(++_0x61bb43);}(_0xd843,0x172));var _0x3d84=function(_0xa72345,_0x1fd304){_0xa72345=_0xa72345-0x0;var _0xbc82fb=_0xd843[_0xa72345];return _0xbc82fb;};'use strict';var _=require(_0x3d84('0x0'));var util=require(_0x3d84('0x1'));var logger=require('../../config/logger')(_0x3d84('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3d84('0x3'));var fs=require('fs');var path=require(_0x3d84('0x4'));var rimraf=require(_0x3d84('0x5'));var config=require(_0x3d84('0x6'));var attributes=require('./cmHopperAdditionalPhone.attributes');module['exports']=function(_0x351cc2,_0x5d21e){return _0x351cc2['define'](_0x3d84('0x7'),attributes,{'tableName':_0x3d84('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd89f=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','CmHopperAdditionalPhone','cm_hopper_additional_phones','lodash','util'];(function(_0x2746a4,_0x5effc7){var _0x4bc33e=function(_0x592dae){while(--_0x592dae){_0x2746a4['push'](_0x2746a4['shift']());}};_0x4bc33e(++_0x5effc7);}(_0xd89f,0x191));var _0xfd89=function(_0x2cb08e,_0x26799c){_0x2cb08e=_0x2cb08e-0x0;var _0x17d096=_0xd89f[_0x2cb08e];return _0x17d096;};'use strict';var _=require(_0xfd89('0x0'));var util=require(_0xfd89('0x1'));var logger=require(_0xfd89('0x2'))('api');var moment=require(_0xfd89('0x3'));var BPromise=require(_0xfd89('0x4'));var rp=require(_0xfd89('0x5'));var fs=require('fs');var path=require(_0xfd89('0x6'));var rimraf=require(_0xfd89('0x7'));var config=require(_0xfd89('0x8'));var attributes=require('./cmHopperAdditionalPhone.attributes');module[_0xfd89('0x9')]=function(_0x398d01,_0xa72c6f){return _0x398d01[_0xfd89('0xa')](_0xfd89('0xb'),attributes,{'tableName':_0xfd89('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 009de5d..00340a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d14=['../../config/environment','jayson/promise','http','request','CmHopperAdditionalPhone,\x20%s,\x20%s','debug','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','VerifyAdditionalPhones','CmHopper','findOne','body','ContactId','ListId','VoiceQueueId','CampaignId','then','CmHopperAdditionalPhone','OrderBy','ASC','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','entity','SwapAdditionalPhones','duration','waitTime','catch','isNil','scheduledat','add','minutes','countdropretry','createdAt','updatedAt','sequelize','transaction','update','phone','activateAdditionalPhone','IncrementPreviewCounters','field','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x2a2166,_0x3a077f){var _0x3bcf50=function(_0x3f0300){while(--_0x3f0300){_0x2a2166['push'](_0x2a2166['shift']());}};_0x3bcf50(++_0x3a077f);}(_0x1d14,0x70));var _0x41d1=function(_0x164328,_0x286f2e){_0x164328=_0x164328-0x0;var _0x442302=_0x1d14[_0x164328];return _0x442302;};'use strict';var _=require(_0x41d1('0x0'));var util=require(_0x41d1('0x1'));var moment=require(_0x41d1('0x2'));var BPromise=require('bluebird');var rs=require(_0x41d1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x41d1('0x4'))['db'];var utils=require(_0x41d1('0x5'));var logger=require(_0x41d1('0x6'))(_0x41d1('0x7'));var config=require(_0x41d1('0x8'));var jayson=require(_0x41d1('0x9'));var client=jayson['client'][_0x41d1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x360ce8,_0x2455cf,_0x510d8a){return new BPromise(function(_0xe945e6,_0x4d11da){return client[_0x41d1('0xb')](_0x360ce8,_0x510d8a)['then'](function(_0x49de0c){logger['info'](_0x41d1('0xc'),_0x2455cf,'request\x20sent');logger[_0x41d1('0xd')](_0x41d1('0xe'),_0x2455cf,_0x41d1('0xf'),JSON[_0x41d1('0x10')](_0x49de0c));if(_0x49de0c[_0x41d1('0x11')]){if(_0x49de0c[_0x41d1('0x11')][_0x41d1('0x12')]===0x1f4){logger['error'](_0x41d1('0xc'),_0x2455cf,_0x49de0c['error'][_0x41d1('0x13')]);return _0x4d11da(_0x49de0c[_0x41d1('0x11')]['message']);}logger[_0x41d1('0x11')](_0x41d1('0xc'),_0x2455cf,_0x49de0c[_0x41d1('0x11')][_0x41d1('0x13')]);return _0xe945e6(_0x49de0c[_0x41d1('0x11')][_0x41d1('0x13')]);}else{logger[_0x41d1('0x14')](_0x41d1('0xc'),_0x2455cf,'request\x20sent');_0xe945e6(_0x49de0c[_0x41d1('0x15')][_0x41d1('0x13')]);}})['catch'](function(_0x33da93){logger[_0x41d1('0x11')](_0x41d1('0xc'),_0x2455cf,_0x33da93);_0x4d11da(_0x33da93);});});}exports[_0x41d1('0x16')]=function(_0x3bebfb){var _0x3ae46b=this;return new Promise(function(_0x42e80a,_0x1f8b0e){return db[_0x41d1('0x17')][_0x41d1('0x18')]({'raw':!![],'where':{'ContactId':_0x3bebfb[_0x41d1('0x19')][_0x41d1('0x1a')],'ListId':_0x3bebfb[_0x41d1('0x19')][_0x41d1('0x1b')],'VoiceQueueId':_0x3bebfb[_0x41d1('0x19')][_0x41d1('0x1c')]===undefined?null:_0x3bebfb[_0x41d1('0x19')][_0x41d1('0x1c')],'CampaignId':_0x3bebfb['body'][_0x41d1('0x1d')]===undefined?null:_0x3bebfb[_0x41d1('0x19')][_0x41d1('0x1d')]}})[_0x41d1('0x1e')](function(_0x5645dc){if(_0x5645dc!=null){return db[_0x41d1('0x1f')][_0x41d1('0x18')]({'raw':!![],'where':{'CmHopperId':_0x5645dc['id'],'OrderBy':{'$gt':_0x5645dc[_0x41d1('0x20')]}},'order':[[_0x41d1('0x20'),_0x41d1('0x21')]]})[_0x41d1('0x1e')](function(_0x5d81ab){var _0x4d2c65=0x0;if(_0x5d81ab){if(_0x5d81ab[_0x41d1('0x22')]+_0x5d81ab[_0x41d1('0x23')]+_0x5d81ab[_0x41d1('0x24')]+_0x5d81ab[_0x41d1('0x25')]+_0x5d81ab['countdropretry']+_0x5d81ab[_0x41d1('0x26')]+_0x5d81ab[_0x41d1('0x27')]+_0x5d81ab[_0x41d1('0x28')]<_0x3bebfb[_0x41d1('0x29')]['dialGlobalMaxRetry'])_0x4d2c65=0x1;_0x42e80a({'additional':_0x4d2c65});}else{return db[_0x41d1('0x1f')][_0x41d1('0x18')]({'raw':!![],'where':{'CmHopperId':_0x5645dc['id']},'order':[[_0x41d1('0x20'),'ASC']]})[_0x41d1('0x1e')](function(_0x407aaf){var _0x19523f=0x0;if(_0x407aaf){if(_0x407aaf['countbusyretry']+_0x407aaf[_0x41d1('0x23')]+_0x407aaf[_0x41d1('0x24')]+_0x407aaf[_0x41d1('0x25')]+_0x407aaf['countdropretry']+_0x407aaf['countabandonedretry']+_0x407aaf[_0x41d1('0x27')]+_0x407aaf[_0x41d1('0x28')]<_0x3bebfb[_0x41d1('0x29')]['dialGlobalMaxRetry'])_0x19523f=0x1;_0x42e80a({'additional':_0x19523f});}else{_0x42e80a({'additional':0x0});}})['catch'](function(_0x2ed0f4){logger['error']('VerifyAdditionalPhones',_0x2ed0f4[_0x41d1('0x13')]);_0x1f8b0e(_0x3ae46b[_0x41d1('0x11')](0x1f4,_0x2ed0f4['message']));});}})['catch'](function(_0x453f7a){logger[_0x41d1('0x11')](_0x41d1('0x16'),_0x453f7a[_0x41d1('0x13')]);_0x1f8b0e(_0x3ae46b[_0x41d1('0x11')](0x1f4,_0x453f7a[_0x41d1('0x13')]));});}else _0x42e80a({'additional':0x0});});});};exports[_0x41d1('0x2a')]=function(_0x53cd70){var _0x5cc9dd=this;return new Promise(function(_0x2cbde0,_0x48bcf4){return db[_0x41d1('0x17')]['findOne']({'raw':!![],'where':{'ContactId':_0x53cd70[_0x41d1('0x19')][_0x41d1('0x1a')],'ListId':_0x53cd70[_0x41d1('0x19')][_0x41d1('0x1b')],'VoiceQueueId':_0x53cd70['body'][_0x41d1('0x1c')]===undefined?null:_0x53cd70[_0x41d1('0x19')][_0x41d1('0x1c')],'CampaignId':_0x53cd70['body'][_0x41d1('0x1d')]===undefined?null:_0x53cd70['body']['CampaignId']}})[_0x41d1('0x1e')](function(_0xef0af7){if(_0xef0af7!=null){return db[_0x41d1('0x1f')]['findOne']({'raw':!![],'where':{'CmHopperId':_0xef0af7['id'],'OrderBy':{'$gte':_0xef0af7[_0x41d1('0x20')]}},'order':[[_0x41d1('0x20'),_0x41d1('0x21')]]})[_0x41d1('0x1e')](function(_0x1fcac4){if(_0x1fcac4)return activateAdditionalPhone(_0xef0af7,_0x53cd70[_0x41d1('0x19')],_0x1fcac4,_0x53cd70[_0x41d1('0x2b')],_0x53cd70[_0x41d1('0x2c')])[_0x41d1('0x1e')](function(_0x1224fc){_0x2cbde0(_0x1224fc);});else{return db[_0x41d1('0x1f')]['findOne']({'raw':!![],'where':{'CmHopperId':_0xef0af7['id']},'order':[[_0x41d1('0x20'),_0x41d1('0x21')]]})[_0x41d1('0x1e')](function(_0x433bcd){if(_0x433bcd)return activateAdditionalPhone(_0xef0af7,_0x53cd70['body'],_0x433bcd,_0x53cd70['duration'],_0x53cd70[_0x41d1('0x2c')])[_0x41d1('0x1e')](function(_0x3b1615){_0x2cbde0(_0x3b1615);});else{_0x2cbde0({'id':_0xef0af7['id'],'phone':''});}})['catch'](function(_0x39b45c){logger[_0x41d1('0x11')](_0x41d1('0x16'),_0x39b45c['message']);_0x48bcf4(_0x5cc9dd[_0x41d1('0x11')](0x1f4,_0x39b45c[_0x41d1('0x13')]));});}})[_0x41d1('0x2d')](function(_0x593dfd){logger[_0x41d1('0x11')](_0x41d1('0x16'),_0x593dfd[_0x41d1('0x13')]);_0x48bcf4(_0x5cc9dd[_0x41d1('0x11')](0x1f4,_0x593dfd[_0x41d1('0x13')]));});}else _0x2cbde0(0x1);});});};function activateAdditionalPhone(_0x4552c7,_0x126331,_0x6a9ea8,_0xcabcd4,_0x133d23){return new Promise(function(_0x2f02e4,_0x5612e5){var _0x2c54a8;if(_[_0x41d1('0x2e')](_0x6a9ea8[_0x41d1('0x2f')])){_0x6a9ea8[_0x41d1('0x2f')]=moment();}if(moment()>moment(_0x6a9ea8['scheduledat'])){_0x2c54a8=moment()[_0x41d1('0x30')](_0x133d23||0x3,_0x41d1('0x31'));}else{if(_0x6a9ea8[_0x41d1('0x20')]==0x0){_0x2c54a8=moment(_0x6a9ea8[_0x41d1('0x2f')]);}else{_0x2c54a8=moment()['add'](_0x133d23||0x3,_0x41d1('0x31'));}}if(_[_0x41d1('0x2e')](_0x2c54a8)){_0x2c54a8=moment()[_0x41d1('0x30')](_0x133d23||0x3,_0x41d1('0x31'));}var _0x212b88={'phone':_0x4552c7['phone'],'active':0x0,'OrderBy':_[_0x41d1('0x2e')](_0x4552c7[_0x41d1('0x20')])?0x0:_0x4552c7[_0x41d1('0x20')],'scheduledat':moment()[_0x41d1('0x30')](_0xcabcd4||0x1,'minutes'),'countbusyretry':_0x126331[_0x41d1('0x22')],'countcongestionretry':_0x126331['countcongestionretry'],'countnoanswerretry':_0x126331[_0x41d1('0x24')],'countnosuchnumberretry':_0x126331[_0x41d1('0x25')],'countdropretry':_0x126331[_0x41d1('0x32')],'countabandonedretry':_0x126331[_0x41d1('0x26')],'countmachineretry':_0x126331[_0x41d1('0x27')],'countagentrejectretry':_0x126331['countagentrejectretry'],'createdAt':_0x126331[_0x41d1('0x33')],'updatedAt':_0x126331['updatedAt']};var _0xbf0ac9={'CmHopperId':_0x4552c7['id'],'phone':_0x6a9ea8['phone'],'active':0x0,'OrderBy':_[_0x41d1('0x2e')](_0x6a9ea8[_0x41d1('0x20')])?0x0:_0x6a9ea8[_0x41d1('0x20')],'scheduledat':_0x2c54a8,'countbusyretry':_0x6a9ea8[_0x41d1('0x22')],'countcongestionretry':_0x6a9ea8['countcongestionretry'],'countnoanswerretry':_0x6a9ea8[_0x41d1('0x24')],'countnosuchnumberretry':_0x6a9ea8[_0x41d1('0x25')],'countdropretry':_0x6a9ea8[_0x41d1('0x32')],'countabandonedretry':_0x6a9ea8['countabandonedretry'],'countmachineretry':_0x6a9ea8[_0x41d1('0x27')],'countagentrejectretry':_0x6a9ea8['countagentrejectretry'],'createdAt':_0x6a9ea8[_0x41d1('0x33')],'updatedAt':_0x6a9ea8[_0x41d1('0x34')]};return db[_0x41d1('0x35')][_0x41d1('0x36')](function(_0x5458f8){return db[_0x41d1('0x1f')]['update'](_0x212b88,{'where':{'id':_0x6a9ea8['id']}},{'transaction':_0x5458f8})[_0x41d1('0x1e')](function(){return db[_0x41d1('0x17')][_0x41d1('0x37')](_0xbf0ac9,{'where':{'id':_0x4552c7['id']}},{'transaction':_0x5458f8});});})[_0x41d1('0x1e')](function(_0x1fd905){_0x2f02e4({'id':_0x4552c7['id'],'phone':_0x6a9ea8[_0x41d1('0x38')]});})[_0x41d1('0x2d')](function(_0x23f3fc){logger[_0x41d1('0x11')](_0x41d1('0x39'),_0x23f3fc['message']);_0x5612e5({'error':_0x23f3fc[_0x41d1('0x13')]});});});}exports[_0x41d1('0x3a')]=function(_0x319b57){var _0x8a756=this;return new Promise(function(_0x4698d7,_0xc12d0b){return db['CmHopper'][_0x41d1('0x37')](_0x319b57[_0x41d1('0x19')][_0x41d1('0x3b')],{'where':{'id':_0x319b57[_0x41d1('0x19')]['id']}})['then'](function(_0x56c261){_0x4698d7(_0x56c261);})[_0x41d1('0x2d')](function(_0x3264a0){logger[_0x41d1('0x11')]('IncrementPreviewCounters',_0x3264a0[_0x41d1('0x13')]);_0xc12d0b(_0x8a756[_0x41d1('0x11')](0x1f4,_0x3264a0[_0x41d1('0x13')]));});});};
\ No newline at end of file
+var _0xbf77=['randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','info','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','debug','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','VerifyAdditionalPhones','CmHopper','findOne','body','ContactId','ListId','VoiceQueueId','CampaignId','then','CmHopperAdditionalPhone','OrderBy','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countagentrejectretry','entity','ASC','countabandonedretry','countmachineretry','dialGlobalMaxRetry','SwapAdditionalPhones','duration','waitTime','scheduledat','add','minutes','isNil','phone','createdAt','updatedAt','sequelize','update','activateAdditionalPhone','IncrementPreviewCounters','lodash','util','moment','bluebird'];(function(_0x4c2bca,_0x1e4be0){var _0x16de52=function(_0x560f5d){while(--_0x560f5d){_0x4c2bca['push'](_0x4c2bca['shift']());}};_0x16de52(++_0x1e4be0);}(_0xbf77,0xec));var _0x7bf7=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0xbf77[_0x3b0731];return _0x4204d7;};'use strict';var _=require(_0x7bf7('0x0'));var util=require(_0x7bf7('0x1'));var moment=require(_0x7bf7('0x2'));var BPromise=require(_0x7bf7('0x3'));var rs=require(_0x7bf7('0x4'));var fs=require('fs');var Redis=require(_0x7bf7('0x5'));var db=require(_0x7bf7('0x6'))['db'];var utils=require(_0x7bf7('0x7'));var logger=require('../../config/logger')(_0x7bf7('0x8'));var config=require(_0x7bf7('0x9'));var jayson=require(_0x7bf7('0xa'));var client=jayson['client'][_0x7bf7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x291c94,_0x5d65e5,_0x5a0574){return new BPromise(function(_0x33dc2f,_0x1a9b79){return client[_0x7bf7('0xc')](_0x291c94,_0x5a0574)['then'](function(_0x1c1e10){logger[_0x7bf7('0xd')](_0x7bf7('0xe'),_0x5d65e5,_0x7bf7('0xf'));logger[_0x7bf7('0x10')](_0x7bf7('0x11'),_0x5d65e5,_0x7bf7('0xf'),JSON[_0x7bf7('0x12')](_0x1c1e10));if(_0x1c1e10[_0x7bf7('0x13')]){if(_0x1c1e10['error'][_0x7bf7('0x14')]===0x1f4){logger['error'](_0x7bf7('0xe'),_0x5d65e5,_0x1c1e10[_0x7bf7('0x13')]['message']);return _0x1a9b79(_0x1c1e10[_0x7bf7('0x13')][_0x7bf7('0x15')]);}logger[_0x7bf7('0x13')](_0x7bf7('0xe'),_0x5d65e5,_0x1c1e10[_0x7bf7('0x13')][_0x7bf7('0x15')]);return _0x33dc2f(_0x1c1e10[_0x7bf7('0x13')][_0x7bf7('0x15')]);}else{logger[_0x7bf7('0xd')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x5d65e5,_0x7bf7('0xf'));_0x33dc2f(_0x1c1e10[_0x7bf7('0x16')]['message']);}})[_0x7bf7('0x17')](function(_0x2feb44){logger[_0x7bf7('0x13')](_0x7bf7('0xe'),_0x5d65e5,_0x2feb44);_0x1a9b79(_0x2feb44);});});}exports[_0x7bf7('0x18')]=function(_0xd72252){var _0x509f80=this;return new Promise(function(_0x41c0d1,_0x4355ad){return db[_0x7bf7('0x19')][_0x7bf7('0x1a')]({'raw':!![],'where':{'ContactId':_0xd72252[_0x7bf7('0x1b')][_0x7bf7('0x1c')],'ListId':_0xd72252[_0x7bf7('0x1b')][_0x7bf7('0x1d')],'VoiceQueueId':_0xd72252[_0x7bf7('0x1b')]['VoiceQueueId']===undefined?null:_0xd72252[_0x7bf7('0x1b')][_0x7bf7('0x1e')],'CampaignId':_0xd72252[_0x7bf7('0x1b')][_0x7bf7('0x1f')]===undefined?null:_0xd72252[_0x7bf7('0x1b')][_0x7bf7('0x1f')]}})[_0x7bf7('0x20')](function(_0x21b02d){if(_0x21b02d!=null){return db[_0x7bf7('0x21')][_0x7bf7('0x1a')]({'raw':!![],'where':{'CmHopperId':_0x21b02d['id'],'OrderBy':{'$gt':_0x21b02d[_0x7bf7('0x22')]}},'order':[[_0x7bf7('0x22'),'ASC']]})[_0x7bf7('0x20')](function(_0x138fcf){var _0x3c94=0x0;if(_0x138fcf){if(_0x138fcf[_0x7bf7('0x23')]+_0x138fcf[_0x7bf7('0x24')]+_0x138fcf[_0x7bf7('0x25')]+_0x138fcf[_0x7bf7('0x26')]+_0x138fcf[_0x7bf7('0x27')]+_0x138fcf['countabandonedretry']+_0x138fcf['countmachineretry']+_0x138fcf[_0x7bf7('0x28')]<_0xd72252[_0x7bf7('0x29')]['dialGlobalMaxRetry'])_0x3c94=0x1;_0x41c0d1({'additional':_0x3c94});}else{return db[_0x7bf7('0x21')][_0x7bf7('0x1a')]({'raw':!![],'where':{'CmHopperId':_0x21b02d['id']},'order':[[_0x7bf7('0x22'),_0x7bf7('0x2a')]]})[_0x7bf7('0x20')](function(_0x58e36a){var _0x4be063=0x0;if(_0x58e36a){if(_0x58e36a[_0x7bf7('0x23')]+_0x58e36a[_0x7bf7('0x24')]+_0x58e36a[_0x7bf7('0x25')]+_0x58e36a[_0x7bf7('0x26')]+_0x58e36a[_0x7bf7('0x27')]+_0x58e36a[_0x7bf7('0x2b')]+_0x58e36a[_0x7bf7('0x2c')]+_0x58e36a[_0x7bf7('0x28')]<_0xd72252[_0x7bf7('0x29')][_0x7bf7('0x2d')])_0x4be063=0x1;_0x41c0d1({'additional':_0x4be063});}else{_0x41c0d1({'additional':0x0});}})[_0x7bf7('0x17')](function(_0x3f91be){logger[_0x7bf7('0x13')](_0x7bf7('0x18'),_0x3f91be['message']);_0x4355ad(_0x509f80[_0x7bf7('0x13')](0x1f4,_0x3f91be[_0x7bf7('0x15')]));});}})['catch'](function(_0x122c8c){logger['error'](_0x7bf7('0x18'),_0x122c8c['message']);_0x4355ad(_0x509f80['error'](0x1f4,_0x122c8c[_0x7bf7('0x15')]));});}else _0x41c0d1({'additional':0x0});});});};exports[_0x7bf7('0x2e')]=function(_0x5150cb){var _0x4c7006=this;return new Promise(function(_0x18e0ce,_0x76d868){return db[_0x7bf7('0x19')]['findOne']({'raw':!![],'where':{'ContactId':_0x5150cb[_0x7bf7('0x1b')]['ContactId'],'ListId':_0x5150cb[_0x7bf7('0x1b')]['ListId'],'VoiceQueueId':_0x5150cb[_0x7bf7('0x1b')][_0x7bf7('0x1e')]===undefined?null:_0x5150cb['body']['VoiceQueueId'],'CampaignId':_0x5150cb['body'][_0x7bf7('0x1f')]===undefined?null:_0x5150cb[_0x7bf7('0x1b')][_0x7bf7('0x1f')]}})['then'](function(_0x441b0c){if(_0x441b0c!=null){return db[_0x7bf7('0x21')][_0x7bf7('0x1a')]({'raw':!![],'where':{'CmHopperId':_0x441b0c['id'],'OrderBy':{'$gte':_0x441b0c[_0x7bf7('0x22')]}},'order':[[_0x7bf7('0x22'),_0x7bf7('0x2a')]]})[_0x7bf7('0x20')](function(_0x5ca851){if(_0x5ca851)return activateAdditionalPhone(_0x441b0c,_0x5150cb['body'],_0x5ca851,_0x5150cb[_0x7bf7('0x2f')],_0x5150cb[_0x7bf7('0x30')])[_0x7bf7('0x20')](function(_0x3f35d0){_0x18e0ce(_0x3f35d0);});else{return db[_0x7bf7('0x21')][_0x7bf7('0x1a')]({'raw':!![],'where':{'CmHopperId':_0x441b0c['id']},'order':[[_0x7bf7('0x22'),_0x7bf7('0x2a')]]})['then'](function(_0xd152b3){if(_0xd152b3)return activateAdditionalPhone(_0x441b0c,_0x5150cb[_0x7bf7('0x1b')],_0xd152b3,_0x5150cb['duration'],_0x5150cb['waitTime'])[_0x7bf7('0x20')](function(_0x4dca87){_0x18e0ce(_0x4dca87);});else{_0x18e0ce({'id':_0x441b0c['id'],'phone':''});}})[_0x7bf7('0x17')](function(_0x142a8e){logger[_0x7bf7('0x13')](_0x7bf7('0x18'),_0x142a8e[_0x7bf7('0x15')]);_0x76d868(_0x4c7006[_0x7bf7('0x13')](0x1f4,_0x142a8e[_0x7bf7('0x15')]));});}})[_0x7bf7('0x17')](function(_0x2ca4f5){logger['error'](_0x7bf7('0x18'),_0x2ca4f5['message']);_0x76d868(_0x4c7006[_0x7bf7('0x13')](0x1f4,_0x2ca4f5['message']));});}else _0x18e0ce(0x1);});});};function activateAdditionalPhone(_0x3a5d97,_0x905a39,_0x778453,_0x1723ec,_0x9e03f9){return new Promise(function(_0x50de3f,_0x27d290){var _0x46dd05;if(_['isNil'](_0x778453[_0x7bf7('0x31')])){_0x778453[_0x7bf7('0x31')]=moment();}if(moment()>moment(_0x778453[_0x7bf7('0x31')])){_0x46dd05=moment()[_0x7bf7('0x32')](_0x9e03f9||0x3,_0x7bf7('0x33'));}else{if(_0x778453['OrderBy']==0x0){_0x46dd05=moment(_0x778453['scheduledat']);}else{_0x46dd05=moment()['add'](_0x9e03f9||0x3,_0x7bf7('0x33'));}}if(_[_0x7bf7('0x34')](_0x46dd05)){_0x46dd05=moment()[_0x7bf7('0x32')](_0x9e03f9||0x3,'minutes');}var _0x1b61d3={'phone':_0x3a5d97[_0x7bf7('0x35')],'active':0x0,'OrderBy':_['isNil'](_0x3a5d97[_0x7bf7('0x22')])?0x0:_0x3a5d97[_0x7bf7('0x22')],'scheduledat':moment()[_0x7bf7('0x32')](_0x1723ec||0x1,_0x7bf7('0x33')),'countbusyretry':_0x905a39['countbusyretry'],'countcongestionretry':_0x905a39[_0x7bf7('0x24')],'countnoanswerretry':_0x905a39[_0x7bf7('0x25')],'countnosuchnumberretry':_0x905a39[_0x7bf7('0x26')],'countdropretry':_0x905a39[_0x7bf7('0x27')],'countabandonedretry':_0x905a39[_0x7bf7('0x2b')],'countmachineretry':_0x905a39[_0x7bf7('0x2c')],'countagentrejectretry':_0x905a39['countagentrejectretry'],'createdAt':_0x905a39[_0x7bf7('0x36')],'updatedAt':_0x905a39[_0x7bf7('0x37')]};var _0x4d2ff6={'CmHopperId':_0x3a5d97['id'],'phone':_0x778453[_0x7bf7('0x35')],'active':0x0,'OrderBy':_[_0x7bf7('0x34')](_0x778453[_0x7bf7('0x22')])?0x0:_0x778453['OrderBy'],'scheduledat':_0x46dd05,'countbusyretry':_0x778453[_0x7bf7('0x23')],'countcongestionretry':_0x778453['countcongestionretry'],'countnoanswerretry':_0x778453[_0x7bf7('0x25')],'countnosuchnumberretry':_0x778453[_0x7bf7('0x26')],'countdropretry':_0x778453[_0x7bf7('0x27')],'countabandonedretry':_0x778453[_0x7bf7('0x2b')],'countmachineretry':_0x778453[_0x7bf7('0x2c')],'countagentrejectretry':_0x778453['countagentrejectretry'],'createdAt':_0x778453['createdAt'],'updatedAt':_0x778453[_0x7bf7('0x37')]};return db[_0x7bf7('0x38')]['transaction'](function(_0x2a33a6){return db['CmHopperAdditionalPhone']['update'](_0x1b61d3,{'where':{'id':_0x778453['id']}},{'transaction':_0x2a33a6})[_0x7bf7('0x20')](function(){return db[_0x7bf7('0x19')][_0x7bf7('0x39')](_0x4d2ff6,{'where':{'id':_0x3a5d97['id']}},{'transaction':_0x2a33a6});});})['then'](function(_0x8e65da){_0x50de3f({'id':_0x3a5d97['id'],'phone':_0x778453['phone']});})[_0x7bf7('0x17')](function(_0x4a4fa0){logger['error'](_0x7bf7('0x3a'),_0x4a4fa0[_0x7bf7('0x15')]);_0x27d290({'error':_0x4a4fa0['message']});});});}exports[_0x7bf7('0x3b')]=function(_0x535573){var _0x590e7a=this;return new Promise(function(_0x56981c,_0x59ee16){return db[_0x7bf7('0x19')][_0x7bf7('0x39')](_0x535573['body']['field'],{'where':{'id':_0x535573[_0x7bf7('0x1b')]['id']}})[_0x7bf7('0x20')](function(_0x31de29){_0x56981c(_0x31de29);})[_0x7bf7('0x17')](function(_0x14fe9d){logger[_0x7bf7('0x13')](_0x7bf7('0x3b'),_0x14fe9d[_0x7bf7('0x15')]);_0x59ee16(_0x590e7a[_0x7bf7('0x13')](0x1f4,_0x14fe9d[_0x7bf7('0x15')]));});});};
\ No newline at end of file
index 67db5bf..888bab3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fa8=['../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperAdditionalPhone.controller','get','isAuthenticated','/:id','show','post','put','update','delete','multer','path','Router'];(function(_0x1e66af,_0x1d5167){var _0xf955bf=function(_0x584116){while(--_0x584116){_0x1e66af['push'](_0x1e66af['shift']());}};_0xf955bf(++_0x1d5167);}(_0x8fa8,0x1b0));var _0x88fa=function(_0x21231e,_0x35422b){_0x21231e=_0x21231e-0x0;var _0x57e46e=_0x8fa8[_0x21231e];return _0x57e46e;};'use strict';var multer=require(_0x88fa('0x0'));var util=require('util');var path=require(_0x88fa('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x88fa('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x88fa('0x3'));var interaction=require(_0x88fa('0x4'));var config=require(_0x88fa('0x5'));var controller=require(_0x88fa('0x6'));router[_0x88fa('0x7')]('/',auth[_0x88fa('0x8')](),controller['index']);router['get'](_0x88fa('0x9'),auth[_0x88fa('0x8')](),controller[_0x88fa('0xa')]);router[_0x88fa('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x88fa('0xc')](_0x88fa('0x9'),auth[_0x88fa('0x8')](),controller[_0x88fa('0xd')]);router[_0x88fa('0xe')]('/:id',auth[_0x88fa('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x3f40=['/:id','destroy','exports','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','post','create','put','update','delete'];(function(_0x616290,_0x280b7f){var _0x453879=function(_0x27bda7){while(--_0x27bda7){_0x616290['push'](_0x616290['shift']());}};_0x453879(++_0x280b7f);}(_0x3f40,0xe0));var _0x03f4=function(_0x412ffb,_0x449ca8){_0x412ffb=_0x412ffb-0x0;var _0xb82de3=_0x3f40[_0x412ffb];return _0xb82de3;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x03f4('0x0'));var router=express['Router']();var fs_extra=require(_0x03f4('0x1'));var auth=require(_0x03f4('0x2'));var interaction=require(_0x03f4('0x3'));var config=require(_0x03f4('0x4'));var controller=require('./cmHopperAdditionalPhone.controller');router[_0x03f4('0x5')]('/',auth[_0x03f4('0x6')](),controller[_0x03f4('0x7')]);router['get']('/:id',auth[_0x03f4('0x6')](),controller[_0x03f4('0x8')]);router[_0x03f4('0x9')]('/',auth['isAuthenticated'](),controller[_0x03f4('0xa')]);router[_0x03f4('0xb')]('/:id',auth[_0x03f4('0x6')](),controller[_0x03f4('0xc')]);router[_0x03f4('0xd')](_0x03f4('0xe'),auth[_0x03f4('0x6')](),controller[_0x03f4('0xf')]);module[_0x03f4('0x10')]=router;
\ No newline at end of file
index 4418c81..14a64c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16cc=['STRING','INTEGER','contactListQueue','sequelize','exports'];(function(_0x3c557e,_0x464054){var _0xb68133=function(_0x5ebb13){while(--_0x5ebb13){_0x3c557e['push'](_0x3c557e['shift']());}};_0xb68133(++_0x464054);}(_0x16cc,0x120));var _0xc16c=function(_0x4e39ad,_0x5516de){_0x4e39ad=_0x4e39ad-0x0;var _0x127035=_0x16cc[_0x4e39ad];return _0x127035;};'use strict';var moment=require('moment');var Sequelize=require(_0xc16c('0x0'));module[_0xc16c('0x1')]={'phone':{'type':Sequelize[_0xc16c('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0xc16c('0x3')],'unique':_0xc16c('0x4')},'ListId':{'type':Sequelize[_0xc16c('0x3')],'unique':_0xc16c('0x4')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0xc16c('0x4')}};
\ No newline at end of file
+var _0xbdba=['STRING','INTEGER','contactListQueue','moment','exports'];(function(_0x11946c,_0x12152c){var _0x383935=function(_0x61fce2){while(--_0x61fce2){_0x11946c['push'](_0x11946c['shift']());}};_0x383935(++_0x12152c);}(_0xbdba,0x107));var _0xabdb=function(_0x5b6803,_0x373c70){_0x5b6803=_0x5b6803-0x0;var _0x380dc8=_0xbdba[_0x5b6803];return _0x380dc8;};'use strict';var moment=require(_0xabdb('0x0'));var Sequelize=require('sequelize');module[_0xabdb('0x1')]={'phone':{'type':Sequelize[_0xabdb('0x2')],'allowNull':![]},'ContactId':{'type':Sequelize[_0xabdb('0x3')],'unique':_0xabdb('0x4')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0xabdb('0x4')},'VoiceQueueId':{'type':Sequelize[_0xabdb('0x3')],'unique':'contactListQueue'}};
\ No newline at end of file
index 45d6c77..acbde78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e7f=['sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/environment','../../config/license/util','status','offset','limit','count','set','Content-Range','apply','reject','save','then','destroy','end','sendStatus','name','send','index','map','CmHopperBlack','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order'];(function(_0x3cf5a3,_0x5a4492){var _0x39ba2d=function(_0x3ed989){while(--_0x3ed989){_0x3cf5a3['push'](_0x3cf5a3['shift']());}};_0x39ba2d(++_0x5a4492);}(_0x9e7f,0x17d));var _0xf9e7=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9e7f[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0xf9e7('0x0'));var rimraf=require(_0xf9e7('0x1'));var zipdir=require(_0xf9e7('0x2'));var jsonpatch=require(_0xf9e7('0x3'));var rp=require(_0xf9e7('0x4'));var moment=require(_0xf9e7('0x5'));var BPromise=require(_0xf9e7('0x6'));var Mustache=require(_0xf9e7('0x7'));var util=require(_0xf9e7('0x8'));var path=require(_0xf9e7('0x9'));var sox=require('sox');var csv=require(_0xf9e7('0xa'));var ejs=require(_0xf9e7('0xb'));var fs=require('fs');var fs_extra=require(_0xf9e7('0xc'));var _=require('lodash');var squel=require(_0xf9e7('0xd'));var crypto=require(_0xf9e7('0xe'));var jsforce=require(_0xf9e7('0xf'));var deskjs=require(_0xf9e7('0x10'));var toCsv=require('to-csv');var querystring=require(_0xf9e7('0x11'));var Papa=require(_0xf9e7('0x12'));var Redis=require(_0xf9e7('0x13'));var authService=require(_0xf9e7('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf9e7('0x15'));var logger=require('../../config/logger')(_0xf9e7('0x16'));var utils=require('../../config/utils');var config=require(_0xf9e7('0x17'));var licenseUtil=require(_0xf9e7('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x26983e,_0x50833f){_0x50833f=_0x50833f||0xcc;return function(_0x2217dd){if(_0x2217dd){return _0x26983e['sendStatus'](_0x50833f);}return _0x26983e[_0xf9e7('0x19')](_0x50833f)['end']();};}function respondWithResult(_0x17d84e,_0x226291){_0x226291=_0x226291||0xc8;return function(_0x1c1231){if(_0x1c1231){return _0x17d84e[_0xf9e7('0x19')](_0x226291)['json'](_0x1c1231);}};}function respondWithFilteredResult(_0x2eb997,_0x3a76ed){return function(_0x4eef8b){if(_0x4eef8b){var _0x210b25=typeof _0x3a76ed[_0xf9e7('0x1a')]==='undefined'&&typeof _0x3a76ed[_0xf9e7('0x1b')]==='undefined';var _0x5a43d1=_0x4eef8b[_0xf9e7('0x1c')];var _0x478aee=_0x210b25?0x0:_0x3a76ed[_0xf9e7('0x1a')];var _0x5cc798=_0x210b25?_0x4eef8b[_0xf9e7('0x1c')]:_0x3a76ed['offset']+_0x3a76ed['limit'];var _0x3b4f6d;if(_0x5cc798>=_0x5a43d1){_0x5cc798=_0x5a43d1;_0x3b4f6d=0xc8;}else{_0x3b4f6d=0xce;}_0x2eb997[_0xf9e7('0x19')](_0x3b4f6d);return _0x2eb997[_0xf9e7('0x1d')](_0xf9e7('0x1e'),_0x478aee+'-'+_0x5cc798+'/'+_0x5a43d1)['json'](_0x4eef8b);}return null;};}function patchUpdates(_0x520f18){return function(_0x422d91){try{jsonpatch[_0xf9e7('0x1f')](_0x422d91,_0x520f18,!![]);}catch(_0x28c0f5){return BPromise[_0xf9e7('0x20')](_0x28c0f5);}return _0x422d91[_0xf9e7('0x21')]();};}function saveUpdates(_0x378099,_0xe636ca){return function(_0x30da96){if(_0x30da96){return _0x30da96['update'](_0x378099)[_0xf9e7('0x22')](function(_0x5b0032){return _0x5b0032;});}return null;};}function removeEntity(_0x3752c9,_0x14e732){return function(_0x42465b){if(_0x42465b){return _0x42465b[_0xf9e7('0x23')]()[_0xf9e7('0x22')](function(){_0x3752c9['status'](0xcc)[_0xf9e7('0x24')]();});}};}function handleEntityNotFound(_0x2fbab1,_0xad2506){return function(_0x5e6919){if(!_0x5e6919){_0x2fbab1[_0xf9e7('0x25')](0x194);}return _0x5e6919;};}function handleError(_0x3b279a,_0x549d6e){_0x549d6e=_0x549d6e||0x1f4;return function(_0x14bf1d){logger['error'](_0x14bf1d['stack']);if(_0x14bf1d[_0xf9e7('0x26')]){delete _0x14bf1d['name'];}_0x3b279a['status'](_0x549d6e)[_0xf9e7('0x27')](_0x14bf1d);};}exports[_0xf9e7('0x28')]=function(_0x55e1a3,_0x1c7798){var _0x84dae3={},_0x2997c6={},_0x56208c={'count':0x0,'rows':[]};var _0x5bd9a4=_[_0xf9e7('0x29')](db[_0xf9e7('0x2a')][_0xf9e7('0x2b')],function(_0x96cd9f){return{'name':_0x96cd9f[_0xf9e7('0x2c')],'type':_0x96cd9f[_0xf9e7('0x2d')][_0xf9e7('0x2e')]};});_0x2997c6['model']=_[_0xf9e7('0x29')](_0x5bd9a4,_0xf9e7('0x26'));_0x2997c6[_0xf9e7('0x2f')]=_[_0xf9e7('0x30')](_0x55e1a3[_0xf9e7('0x2f')]);_0x2997c6[_0xf9e7('0x31')]=_[_0xf9e7('0x32')](_0x2997c6[_0xf9e7('0x33')],_0x2997c6[_0xf9e7('0x2f')]);_0x84dae3[_0xf9e7('0x34')]=_[_0xf9e7('0x32')](_0x2997c6[_0xf9e7('0x33')],qs['fields'](_0x55e1a3[_0xf9e7('0x2f')][_0xf9e7('0x35')]));_0x84dae3[_0xf9e7('0x34')]=_0x84dae3[_0xf9e7('0x34')][_0xf9e7('0x36')]?_0x84dae3[_0xf9e7('0x34')]:_0x2997c6[_0xf9e7('0x33')];if(!_0x55e1a3[_0xf9e7('0x2f')][_0xf9e7('0x37')]('nolimit')){_0x84dae3[_0xf9e7('0x1b')]=qs[_0xf9e7('0x1b')](_0x55e1a3[_0xf9e7('0x2f')][_0xf9e7('0x1b')]);_0x84dae3[_0xf9e7('0x1a')]=qs['offset'](_0x55e1a3['query'][_0xf9e7('0x1a')]);}_0x84dae3[_0xf9e7('0x38')]=qs[_0xf9e7('0x39')](_0x55e1a3[_0xf9e7('0x2f')][_0xf9e7('0x39')]);_0x84dae3[_0xf9e7('0x3a')]=qs[_0xf9e7('0x31')](_['pick'](_0x55e1a3[_0xf9e7('0x2f')],_0x2997c6[_0xf9e7('0x31')]),_0x5bd9a4);if(_0x55e1a3[_0xf9e7('0x2f')][_0xf9e7('0x3b')]){_0x84dae3[_0xf9e7('0x3a')]=_[_0xf9e7('0x3c')](_0x84dae3[_0xf9e7('0x3a')],{'$or':_[_0xf9e7('0x29')](_0x5bd9a4,function(_0x357a9b){if(_0x357a9b[_0xf9e7('0x2d')]!==_0xf9e7('0x3d')){var _0x2df45c={};_0x2df45c[_0x357a9b[_0xf9e7('0x26')]]={'$like':'%'+_0x55e1a3['query'][_0xf9e7('0x3b')]+'%'};return _0x2df45c;}})});}_0x84dae3=_[_0xf9e7('0x3c')]({},_0x84dae3,_0x55e1a3[_0xf9e7('0x3e')]);var _0xc669aa={'where':_0x84dae3[_0xf9e7('0x3a')]};return db[_0xf9e7('0x2a')][_0xf9e7('0x1c')](_0xc669aa)[_0xf9e7('0x22')](function(_0x183d34){_0x56208c[_0xf9e7('0x1c')]=_0x183d34;if(_0x55e1a3[_0xf9e7('0x2f')][_0xf9e7('0x3f')]){_0x84dae3[_0xf9e7('0x40')]=[{'all':!![]}];}return db[_0xf9e7('0x2a')][_0xf9e7('0x41')](_0x84dae3);})['then'](function(_0x396c12){_0x56208c[_0xf9e7('0x42')]=_0x396c12;return _0x56208c;})[_0xf9e7('0x22')](respondWithFilteredResult(_0x1c7798,_0x84dae3))[_0xf9e7('0x43')](handleError(_0x1c7798,null));};exports[_0xf9e7('0x44')]=function(_0x28b99d,_0x220b40){var _0x2045df={'raw':!![],'where':{'id':_0x28b99d[_0xf9e7('0x45')]['id']}},_0x10da17={};_0x10da17[_0xf9e7('0x33')]=_[_0xf9e7('0x30')](db[_0xf9e7('0x2a')][_0xf9e7('0x2b')]);_0x10da17['query']=_[_0xf9e7('0x30')](_0x28b99d['query']);_0x10da17['filters']=_[_0xf9e7('0x32')](_0x10da17[_0xf9e7('0x33')],_0x10da17[_0xf9e7('0x2f')]);_0x2045df[_0xf9e7('0x34')]=_['intersection'](_0x10da17['model'],qs['fields'](_0x28b99d['query'][_0xf9e7('0x35')]));_0x2045df[_0xf9e7('0x34')]=_0x2045df[_0xf9e7('0x34')]['length']?_0x2045df[_0xf9e7('0x34')]:_0x10da17[_0xf9e7('0x33')];if(_0x28b99d['query'][_0xf9e7('0x3f')]){_0x2045df[_0xf9e7('0x40')]=[{'all':!![]}];}_0x2045df=_[_0xf9e7('0x3c')]({},_0x2045df,_0x28b99d[_0xf9e7('0x3e')]);return db[_0xf9e7('0x2a')][_0xf9e7('0x46')](_0x2045df)[_0xf9e7('0x22')](handleEntityNotFound(_0x220b40,null))[_0xf9e7('0x22')](respondWithResult(_0x220b40,null))[_0xf9e7('0x43')](handleError(_0x220b40,null));};exports['update']=function(_0x3e4f40,_0x130d03){if(_0x3e4f40[_0xf9e7('0x47')]['id']){delete _0x3e4f40[_0xf9e7('0x47')]['id'];}return db['CmHopperBlack']['find']({'where':{'id':_0x3e4f40['params']['id']}})[_0xf9e7('0x22')](handleEntityNotFound(_0x130d03,null))[_0xf9e7('0x22')](saveUpdates(_0x3e4f40['body'],null))[_0xf9e7('0x22')](respondWithResult(_0x130d03,null))[_0xf9e7('0x43')](handleError(_0x130d03,null));};exports[_0xf9e7('0x23')]=function(_0x4cfef2,_0x2ed4db){return db[_0xf9e7('0x2a')][_0xf9e7('0x46')]({'where':{'id':_0x4cfef2[_0xf9e7('0x45')]['id']}})[_0xf9e7('0x22')](handleEntityNotFound(_0x2ed4db,null))[_0xf9e7('0x22')](removeEntity(_0x2ed4db,null))[_0xf9e7('0x43')](handleError(_0x2ed4db,null));};exports[_0xf9e7('0x48')]=function(_0x1295f2,_0x2d0968){return db[_0xf9e7('0x2a')][_0xf9e7('0x48')]()['then'](respondWithResult(_0x2d0968,null))[_0xf9e7('0x43')](handleError(_0x2d0968,null));};
\ No newline at end of file
+var _0x8872=['keys','filters','intersection','attributes','fields','length','query','nolimit','sort','where','pick','merge','type','filter','options','includeAll','include','findAll','rows','catch','show','body','params','find','describe','rimraf','request-promise','bluebird','mustache','util','path','sox','to-csv','lodash','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','json','apply','save','then','destroy','error','stack','name','send','index','map','CmHopperBlack','rawAttributes','fieldName','key','model'];(function(_0x52de48,_0x5bc748){var _0x18f4c0=function(_0x44459e){while(--_0x44459e){_0x52de48['push'](_0x52de48['shift']());}};_0x18f4c0(++_0x5bc748);}(_0x8872,0x131));var _0x2887=function(_0x27b140,_0x4ca036){_0x27b140=_0x27b140-0x0;var _0x3c7eb6=_0x8872[_0x27b140];return _0x3c7eb6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2887('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x2887('0x1'));var moment=require('moment');var BPromise=require(_0x2887('0x2'));var Mustache=require(_0x2887('0x3'));var util=require(_0x2887('0x4'));var path=require(_0x2887('0x5'));var sox=require(_0x2887('0x6'));var csv=require(_0x2887('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2887('0x8'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x2887('0x9'));var deskjs=require(_0x2887('0xa'));var toCsv=require(_0x2887('0x7'));var querystring=require(_0x2887('0xb'));var Papa=require(_0x2887('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x2887('0xd'));var as=require(_0x2887('0xe'));var hardwareService=require(_0x2887('0xf'));var logger=require('../../config/logger')(_0x2887('0x10'));var utils=require(_0x2887('0x11'));var config=require(_0x2887('0x12'));var licenseUtil=require(_0x2887('0x13'));var db=require(_0x2887('0x14'))['db'];function respondWithStatusCode(_0xa0fd93,_0x323497){_0x323497=_0x323497||0xcc;return function(_0x928683){if(_0x928683){return _0xa0fd93[_0x2887('0x15')](_0x323497);}return _0xa0fd93[_0x2887('0x16')](_0x323497)[_0x2887('0x17')]();};}function respondWithResult(_0x1ff94d,_0x54ed72){_0x54ed72=_0x54ed72||0xc8;return function(_0x286d5c){if(_0x286d5c){return _0x1ff94d[_0x2887('0x16')](_0x54ed72)['json'](_0x286d5c);}};}function respondWithFilteredResult(_0x8a972f,_0x2ee74a){return function(_0x48311e){if(_0x48311e){var _0x287870=typeof _0x2ee74a['offset']===_0x2887('0x18')&&typeof _0x2ee74a[_0x2887('0x19')]===_0x2887('0x18');var _0x5d7eb7=_0x48311e[_0x2887('0x1a')];var _0x3ce6e8=_0x287870?0x0:_0x2ee74a['offset'];var _0xe409b4=_0x287870?_0x48311e[_0x2887('0x1a')]:_0x2ee74a[_0x2887('0x1b')]+_0x2ee74a[_0x2887('0x19')];var _0x537d7c;if(_0xe409b4>=_0x5d7eb7){_0xe409b4=_0x5d7eb7;_0x537d7c=0xc8;}else{_0x537d7c=0xce;}_0x8a972f[_0x2887('0x16')](_0x537d7c);return _0x8a972f[_0x2887('0x1c')]('Content-Range',_0x3ce6e8+'-'+_0xe409b4+'/'+_0x5d7eb7)[_0x2887('0x1d')](_0x48311e);}return null;};}function patchUpdates(_0x2e084e){return function(_0x157bbd){try{jsonpatch[_0x2887('0x1e')](_0x157bbd,_0x2e084e,!![]);}catch(_0x2ad0bb){return BPromise['reject'](_0x2ad0bb);}return _0x157bbd[_0x2887('0x1f')]();};}function saveUpdates(_0x1795be,_0x4e2a1f){return function(_0x22d42f){if(_0x22d42f){return _0x22d42f['update'](_0x1795be)[_0x2887('0x20')](function(_0x376bd3){return _0x376bd3;});}return null;};}function removeEntity(_0x52c048,_0x547b44){return function(_0xc8dc6c){if(_0xc8dc6c){return _0xc8dc6c[_0x2887('0x21')]()[_0x2887('0x20')](function(){_0x52c048['status'](0xcc)[_0x2887('0x17')]();});}};}function handleEntityNotFound(_0xd94ea4,_0x1449cb){return function(_0x5b671f){if(!_0x5b671f){_0xd94ea4[_0x2887('0x15')](0x194);}return _0x5b671f;};}function handleError(_0xd970b7,_0x36ad91){_0x36ad91=_0x36ad91||0x1f4;return function(_0x335632){logger[_0x2887('0x22')](_0x335632[_0x2887('0x23')]);if(_0x335632[_0x2887('0x24')]){delete _0x335632['name'];}_0xd970b7[_0x2887('0x16')](_0x36ad91)[_0x2887('0x25')](_0x335632);};}exports[_0x2887('0x26')]=function(_0x2f2881,_0xa12057){var _0x69ff35={},_0x5c1a4f={},_0x21fadd={'count':0x0,'rows':[]};var _0x288f6c=_[_0x2887('0x27')](db[_0x2887('0x28')][_0x2887('0x29')],function(_0x13ead4){return{'name':_0x13ead4[_0x2887('0x2a')],'type':_0x13ead4['type'][_0x2887('0x2b')]};});_0x5c1a4f[_0x2887('0x2c')]=_[_0x2887('0x27')](_0x288f6c,_0x2887('0x24'));_0x5c1a4f['query']=_[_0x2887('0x2d')](_0x2f2881['query']);_0x5c1a4f[_0x2887('0x2e')]=_[_0x2887('0x2f')](_0x5c1a4f[_0x2887('0x2c')],_0x5c1a4f['query']);_0x69ff35[_0x2887('0x30')]=_[_0x2887('0x2f')](_0x5c1a4f['model'],qs[_0x2887('0x31')](_0x2f2881['query'][_0x2887('0x31')]));_0x69ff35[_0x2887('0x30')]=_0x69ff35[_0x2887('0x30')][_0x2887('0x32')]?_0x69ff35[_0x2887('0x30')]:_0x5c1a4f[_0x2887('0x2c')];if(!_0x2f2881[_0x2887('0x33')]['hasOwnProperty'](_0x2887('0x34'))){_0x69ff35[_0x2887('0x19')]=qs[_0x2887('0x19')](_0x2f2881['query'][_0x2887('0x19')]);_0x69ff35[_0x2887('0x1b')]=qs[_0x2887('0x1b')](_0x2f2881[_0x2887('0x33')][_0x2887('0x1b')]);}_0x69ff35['order']=qs[_0x2887('0x35')](_0x2f2881[_0x2887('0x33')][_0x2887('0x35')]);_0x69ff35[_0x2887('0x36')]=qs['filters'](_[_0x2887('0x37')](_0x2f2881[_0x2887('0x33')],_0x5c1a4f['filters']),_0x288f6c);if(_0x2f2881['query']['filter']){_0x69ff35['where']=_[_0x2887('0x38')](_0x69ff35[_0x2887('0x36')],{'$or':_[_0x2887('0x27')](_0x288f6c,function(_0x2a2106){if(_0x2a2106[_0x2887('0x39')]!=='VIRTUAL'){var _0x2cd25f={};_0x2cd25f[_0x2a2106[_0x2887('0x24')]]={'$like':'%'+_0x2f2881[_0x2887('0x33')][_0x2887('0x3a')]+'%'};return _0x2cd25f;}})});}_0x69ff35=_[_0x2887('0x38')]({},_0x69ff35,_0x2f2881[_0x2887('0x3b')]);var _0x131e80={'where':_0x69ff35[_0x2887('0x36')]};return db[_0x2887('0x28')][_0x2887('0x1a')](_0x131e80)[_0x2887('0x20')](function(_0x2ad704){_0x21fadd[_0x2887('0x1a')]=_0x2ad704;if(_0x2f2881[_0x2887('0x33')][_0x2887('0x3c')]){_0x69ff35[_0x2887('0x3d')]=[{'all':!![]}];}return db['CmHopperBlack'][_0x2887('0x3e')](_0x69ff35);})[_0x2887('0x20')](function(_0x4bb82c){_0x21fadd[_0x2887('0x3f')]=_0x4bb82c;return _0x21fadd;})[_0x2887('0x20')](respondWithFilteredResult(_0xa12057,_0x69ff35))[_0x2887('0x40')](handleError(_0xa12057,null));};exports[_0x2887('0x41')]=function(_0xba30c3,_0x32acb8){var _0xf5fa4={'raw':!![],'where':{'id':_0xba30c3['params']['id']}},_0x51f66c={};_0x51f66c['model']=_[_0x2887('0x2d')](db[_0x2887('0x28')][_0x2887('0x29')]);_0x51f66c[_0x2887('0x33')]=_[_0x2887('0x2d')](_0xba30c3[_0x2887('0x33')]);_0x51f66c[_0x2887('0x2e')]=_[_0x2887('0x2f')](_0x51f66c[_0x2887('0x2c')],_0x51f66c[_0x2887('0x33')]);_0xf5fa4['attributes']=_['intersection'](_0x51f66c[_0x2887('0x2c')],qs[_0x2887('0x31')](_0xba30c3[_0x2887('0x33')][_0x2887('0x31')]));_0xf5fa4['attributes']=_0xf5fa4['attributes'][_0x2887('0x32')]?_0xf5fa4[_0x2887('0x30')]:_0x51f66c[_0x2887('0x2c')];if(_0xba30c3[_0x2887('0x33')][_0x2887('0x3c')]){_0xf5fa4[_0x2887('0x3d')]=[{'all':!![]}];}_0xf5fa4=_['merge']({},_0xf5fa4,_0xba30c3[_0x2887('0x3b')]);return db[_0x2887('0x28')]['find'](_0xf5fa4)['then'](handleEntityNotFound(_0x32acb8,null))[_0x2887('0x20')](respondWithResult(_0x32acb8,null))[_0x2887('0x40')](handleError(_0x32acb8,null));};exports['update']=function(_0x1d0f22,_0x4ed12e){if(_0x1d0f22['body']['id']){delete _0x1d0f22[_0x2887('0x42')]['id'];}return db[_0x2887('0x28')]['find']({'where':{'id':_0x1d0f22[_0x2887('0x43')]['id']}})[_0x2887('0x20')](handleEntityNotFound(_0x4ed12e,null))[_0x2887('0x20')](saveUpdates(_0x1d0f22['body'],null))[_0x2887('0x20')](respondWithResult(_0x4ed12e,null))['catch'](handleError(_0x4ed12e,null));};exports[_0x2887('0x21')]=function(_0x4f5a25,_0x1b2c69){return db[_0x2887('0x28')][_0x2887('0x44')]({'where':{'id':_0x4f5a25[_0x2887('0x43')]['id']}})[_0x2887('0x20')](handleEntityNotFound(_0x1b2c69,null))[_0x2887('0x20')](removeEntity(_0x1b2c69,null))[_0x2887('0x40')](handleError(_0x1b2c69,null));};exports['describe']=function(_0x4e2cde,_0x488c52){return db[_0x2887('0x28')][_0x2887('0x45')]()[_0x2887('0x20')](respondWithResult(_0x488c52,null))[_0x2887('0x40')](handleError(_0x488c52,null));};
\ No newline at end of file
index 76192c8..b7a8a4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b46=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','CmHopperBlack','util','../../config/logger'];(function(_0x36dd8e,_0x502347){var _0x527151=function(_0x1a209b){while(--_0x1a209b){_0x36dd8e['push'](_0x36dd8e['shift']());}};_0x527151(++_0x502347);}(_0x0b46,0x169));var _0x60b4=function(_0x104a84,_0x285970){_0x104a84=_0x104a84-0x0;var _0x4973ff=_0x0b46[_0x104a84];return _0x4973ff;};'use strict';var _=require('lodash');var util=require(_0x60b4('0x0'));var logger=require(_0x60b4('0x1'))(_0x60b4('0x2'));var moment=require(_0x60b4('0x3'));var BPromise=require(_0x60b4('0x4'));var rp=require(_0x60b4('0x5'));var fs=require('fs');var path=require(_0x60b4('0x6'));var rimraf=require(_0x60b4('0x7'));var config=require(_0x60b4('0x8'));var attributes=require('./cmHopperBlack.attributes');module['exports']=function(_0x31a1dc,_0x27f3f8){return _0x31a1dc[_0x60b4('0x9')](_0x60b4('0xa'),attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8950=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperBlack.attributes','exports','define','CmHopperBlack','cm_hopper_black','lodash'];(function(_0x3d8d0a,_0x11bb87){var _0x5b9df5=function(_0x3ecba2){while(--_0x3ecba2){_0x3d8d0a['push'](_0x3d8d0a['shift']());}};_0x5b9df5(++_0x11bb87);}(_0x8950,0xa7));var _0x0895=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x8950[_0x432682];return _0x463d05;};'use strict';var _=require(_0x0895('0x0'));var util=require(_0x0895('0x1'));var logger=require(_0x0895('0x2'))(_0x0895('0x3'));var moment=require('moment');var BPromise=require(_0x0895('0x4'));var rp=require(_0x0895('0x5'));var fs=require('fs');var path=require(_0x0895('0x6'));var rimraf=require(_0x0895('0x7'));var config=require(_0x0895('0x8'));var attributes=require(_0x0895('0x9'));module[_0x0895('0xa')]=function(_0x2612b8,_0x1929cd){return _0x2612b8[_0x0895('0xb')](_0x0895('0xc'),attributes,{'tableName':_0x0895('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3384770..93b9d82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb60=['CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','GetCmHopperBlack','findAll','options','where','limit','include','map','model','attributes','UpdateCmHopperBlack','update','body','raw','catch','DestroyCmHopperBlack','CmHopperBlack','destroy','debug','lodash','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','then','info','CmHopperBlack,\x20%s,\x20%s'];(function(_0x5a2b55,_0x37acd0){var _0x388b10=function(_0x214bb2){while(--_0x214bb2){_0x5a2b55['push'](_0x5a2b55['shift']());}};_0x388b10(++_0x37acd0);}(_0xeb60,0x88));var _0x0eb6=function(_0x5da5d7,_0x196b51){_0x5da5d7=_0x5da5d7-0x0;var _0x5ddc2c=_0xeb60[_0x5da5d7];return _0x5ddc2c;};'use strict';var _=require(_0x0eb6('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x0eb6('0x1'));var rs=require(_0x0eb6('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0eb6('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x0eb6('0x4'))(_0x0eb6('0x5'));var config=require(_0x0eb6('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x0eb6('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2beb57,_0x3a2c18,_0x23a4e1){return new BPromise(function(_0x41c906,_0x4a934f){return client[_0x0eb6('0x8')](_0x2beb57,_0x23a4e1)[_0x0eb6('0x9')](function(_0x5b03f7){logger[_0x0eb6('0xa')](_0x0eb6('0xb'),_0x3a2c18,'request\x20sent');logger['debug'](_0x0eb6('0xc'),_0x3a2c18,'request\x20sent',JSON[_0x0eb6('0xd')](_0x5b03f7));if(_0x5b03f7[_0x0eb6('0xe')]){if(_0x5b03f7[_0x0eb6('0xe')][_0x0eb6('0xf')]===0x1f4){logger[_0x0eb6('0xe')]('CmHopperBlack,\x20%s,\x20%s',_0x3a2c18,_0x5b03f7['error']['message']);return _0x4a934f(_0x5b03f7['error']['message']);}logger[_0x0eb6('0xe')](_0x0eb6('0xb'),_0x3a2c18,_0x5b03f7[_0x0eb6('0xe')]['message']);return _0x41c906(_0x5b03f7['error'][_0x0eb6('0x10')]);}else{logger[_0x0eb6('0xa')]('CmHopperBlack,\x20%s,\x20%s',_0x3a2c18,_0x0eb6('0x11'));_0x41c906(_0x5b03f7[_0x0eb6('0x12')]['message']);}})['catch'](function(_0x21c6ad){logger[_0x0eb6('0xe')](_0x0eb6('0xb'),_0x3a2c18,_0x21c6ad);_0x4a934f(_0x21c6ad);});});}exports[_0x0eb6('0x13')]=function(_0x8d4aa5){var _0x20ee10=this;return new Promise(function(_0x33cf7c,_0x421fae){return db['CmHopperBlack'][_0x0eb6('0x14')]({'raw':_0x8d4aa5[_0x0eb6('0x15')]?_0x8d4aa5[_0x0eb6('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x8d4aa5[_0x0eb6('0x15')]?_0x8d4aa5[_0x0eb6('0x15')][_0x0eb6('0x16')]||null:null,'attributes':_0x8d4aa5[_0x0eb6('0x15')]?_0x8d4aa5[_0x0eb6('0x15')]['attributes']||null:null,'limit':_0x8d4aa5[_0x0eb6('0x15')]?_0x8d4aa5[_0x0eb6('0x15')][_0x0eb6('0x17')]||null:null,'include':_0x8d4aa5[_0x0eb6('0x15')]?_0x8d4aa5[_0x0eb6('0x15')][_0x0eb6('0x18')]?_[_0x0eb6('0x19')](_0x8d4aa5['options'][_0x0eb6('0x18')],function(_0x3196c0){return{'model':db[_0x3196c0[_0x0eb6('0x1a')]],'as':_0x3196c0['as'],'attributes':_0x3196c0[_0x0eb6('0x1b')],'include':_0x3196c0[_0x0eb6('0x18')]?_[_0x0eb6('0x19')](_0x3196c0[_0x0eb6('0x18')],function(_0x4195c4){return{'model':db[_0x4195c4[_0x0eb6('0x1a')]],'as':_0x4195c4['as'],'attributes':_0x4195c4[_0x0eb6('0x1b')],'include':_0x4195c4['include']?_[_0x0eb6('0x19')](_0x4195c4[_0x0eb6('0x18')],function(_0x3d1d7a){return{'model':db[_0x3d1d7a[_0x0eb6('0x1a')]],'as':_0x3d1d7a['as'],'attributes':_0x3d1d7a['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x40f751){logger[_0x0eb6('0xa')]('GetCmHopperBlack',_0x8d4aa5);logger['debug'](_0x0eb6('0x13'),_0x8d4aa5,JSON[_0x0eb6('0xd')](_0x40f751));_0x33cf7c(_0x40f751);})['catch'](function(_0x20a61e){logger[_0x0eb6('0xe')](_0x0eb6('0x13'),_0x20a61e[_0x0eb6('0x10')],_0x8d4aa5);_0x421fae(_0x20ee10[_0x0eb6('0xe')](0x1f4,_0x20a61e[_0x0eb6('0x10')]));});});};exports[_0x0eb6('0x1c')]=function(_0x20e7d5){var _0x449c81=this;return new Promise(function(_0x7a461a,_0x58ca18){return db['CmHopperBlack'][_0x0eb6('0x1d')](_0x20e7d5[_0x0eb6('0x1e')],{'raw':_0x20e7d5[_0x0eb6('0x15')]?_0x20e7d5[_0x0eb6('0x15')][_0x0eb6('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x20e7d5[_0x0eb6('0x15')]?_0x20e7d5['options'][_0x0eb6('0x16')]||null:null,'attributes':_0x20e7d5[_0x0eb6('0x15')]?_0x20e7d5[_0x0eb6('0x15')]['attributes']||null:null,'limit':_0x20e7d5[_0x0eb6('0x15')]?_0x20e7d5['options'][_0x0eb6('0x17')]||null:null})[_0x0eb6('0x9')](function(_0x3fa28a){logger[_0x0eb6('0xa')](_0x0eb6('0x1c'),_0x20e7d5);logger['debug']('UpdateCmHopperBlack',_0x20e7d5,JSON[_0x0eb6('0xd')](_0x3fa28a));_0x7a461a(_0x3fa28a);})[_0x0eb6('0x20')](function(_0xa45f3e){logger['error']('UpdateCmHopperBlack',_0xa45f3e['message'],_0x20e7d5);_0x58ca18(_0x449c81[_0x0eb6('0xe')](0x1f4,_0xa45f3e['message']));});});};exports[_0x0eb6('0x21')]=function(_0x518960){var _0x4bf908=this;return new Promise(function(_0x15be55,_0x49b2e9){return db[_0x0eb6('0x22')][_0x0eb6('0x23')]({'where':_0x518960[_0x0eb6('0x15')]?_0x518960['options'][_0x0eb6('0x16')]||null:null})[_0x0eb6('0x9')](function(_0x87a4a8){logger[_0x0eb6('0xa')](_0x0eb6('0x21'),_0x518960);logger[_0x0eb6('0x24')](_0x0eb6('0x21'),_0x518960,JSON['stringify'](_0x87a4a8));_0x15be55(_0x87a4a8);})[_0x0eb6('0x20')](function(_0x35d522){logger[_0x0eb6('0xe')]('DestroyCmHopperBlack',_0x35d522[_0x0eb6('0x10')],_0x518960);_0x49b2e9(_0x4bf908['error'](0x1f4,_0x35d522[_0x0eb6('0x10')]));});});};
\ No newline at end of file
+var _0x950b=['lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','code','error','message','catch','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','attributes','limit','map','model','include','stringify','UpdateCmHopperBlack','update','where','DestroyCmHopperBlack'];(function(_0x28ee82,_0x5c252f){var _0x13cd70=function(_0x2b6762){while(--_0x2b6762){_0x28ee82['push'](_0x28ee82['shift']());}};_0x13cd70(++_0x5c252f);}(_0x950b,0x1e1));var _0xb950=function(_0x23bed6,_0x45f84f){_0x23bed6=_0x23bed6-0x0;var _0x1f9d5b=_0x950b[_0x23bed6];return _0x1f9d5b;};'use strict';var _=require(_0xb950('0x0'));var util=require(_0xb950('0x1'));var moment=require(_0xb950('0x2'));var BPromise=require(_0xb950('0x3'));var rs=require(_0xb950('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb950('0x5'));var logger=require(_0xb950('0x6'))(_0xb950('0x7'));var config=require(_0xb950('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xb950('0x9')][_0xb950('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3059ac,_0xe770f6,_0x3b7494){return new BPromise(function(_0x1756d9,_0x49d8b9){return client[_0xb950('0xb')](_0x3059ac,_0x3b7494)[_0xb950('0xc')](function(_0x5c47a4){logger[_0xb950('0xd')](_0xb950('0xe'),_0xe770f6,_0xb950('0xf'));logger[_0xb950('0x10')](_0xb950('0x11'),_0xe770f6,'request\x20sent',JSON['stringify'](_0x5c47a4));if(_0x5c47a4['error']){if(_0x5c47a4['error'][_0xb950('0x12')]===0x1f4){logger[_0xb950('0x13')]('CmHopperBlack,\x20%s,\x20%s',_0xe770f6,_0x5c47a4[_0xb950('0x13')][_0xb950('0x14')]);return _0x49d8b9(_0x5c47a4['error'][_0xb950('0x14')]);}logger[_0xb950('0x13')](_0xb950('0xe'),_0xe770f6,_0x5c47a4['error'][_0xb950('0x14')]);return _0x1756d9(_0x5c47a4[_0xb950('0x13')][_0xb950('0x14')]);}else{logger['info']('CmHopperBlack,\x20%s,\x20%s',_0xe770f6,_0xb950('0xf'));_0x1756d9(_0x5c47a4['result'][_0xb950('0x14')]);}})[_0xb950('0x15')](function(_0x57cd42){logger[_0xb950('0x13')](_0xb950('0xe'),_0xe770f6,_0x57cd42);_0x49d8b9(_0x57cd42);});});}exports[_0xb950('0x16')]=function(_0xfc714c){var _0x1136de=this;return new Promise(function(_0x4f5e83,_0x32e024){return db[_0xb950('0x17')][_0xb950('0x18')]({'raw':_0xfc714c['options']?_0xfc714c[_0xb950('0x19')][_0xb950('0x1a')]===undefined?!![]:![]:!![],'where':_0xfc714c[_0xb950('0x19')]?_0xfc714c[_0xb950('0x19')]['where']||null:null,'attributes':_0xfc714c[_0xb950('0x19')]?_0xfc714c[_0xb950('0x19')][_0xb950('0x1b')]||null:null,'limit':_0xfc714c[_0xb950('0x19')]?_0xfc714c[_0xb950('0x19')][_0xb950('0x1c')]||null:null,'include':_0xfc714c[_0xb950('0x19')]?_0xfc714c[_0xb950('0x19')]['include']?_[_0xb950('0x1d')](_0xfc714c['options']['include'],function(_0x1b2266){return{'model':db[_0x1b2266[_0xb950('0x1e')]],'as':_0x1b2266['as'],'attributes':_0x1b2266[_0xb950('0x1b')],'include':_0x1b2266['include']?_['map'](_0x1b2266[_0xb950('0x1f')],function(_0x239fd2){return{'model':db[_0x239fd2[_0xb950('0x1e')]],'as':_0x239fd2['as'],'attributes':_0x239fd2[_0xb950('0x1b')],'include':_0x239fd2[_0xb950('0x1f')]?_[_0xb950('0x1d')](_0x239fd2[_0xb950('0x1f')],function(_0x22ff22){return{'model':db[_0x22ff22[_0xb950('0x1e')]],'as':_0x22ff22['as'],'attributes':_0x22ff22[_0xb950('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x10ce45){logger[_0xb950('0xd')](_0xb950('0x16'),_0xfc714c);logger[_0xb950('0x10')](_0xb950('0x16'),_0xfc714c,JSON[_0xb950('0x20')](_0x10ce45));_0x4f5e83(_0x10ce45);})[_0xb950('0x15')](function(_0x59cec9){logger[_0xb950('0x13')]('GetCmHopperBlack',_0x59cec9[_0xb950('0x14')],_0xfc714c);_0x32e024(_0x1136de[_0xb950('0x13')](0x1f4,_0x59cec9[_0xb950('0x14')]));});});};exports[_0xb950('0x21')]=function(_0x76e540){var _0x135a50=this;return new Promise(function(_0x2fce70,_0x3392e9){return db[_0xb950('0x17')][_0xb950('0x22')](_0x76e540['body'],{'raw':_0x76e540['options']?_0x76e540['options'][_0xb950('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x76e540[_0xb950('0x19')]?_0x76e540['options'][_0xb950('0x23')]||null:null,'attributes':_0x76e540[_0xb950('0x19')]?_0x76e540[_0xb950('0x19')][_0xb950('0x1b')]||null:null,'limit':_0x76e540['options']?_0x76e540[_0xb950('0x19')][_0xb950('0x1c')]||null:null})['then'](function(_0x56530d){logger[_0xb950('0xd')](_0xb950('0x21'),_0x76e540);logger[_0xb950('0x10')](_0xb950('0x21'),_0x76e540,JSON[_0xb950('0x20')](_0x56530d));_0x2fce70(_0x56530d);})[_0xb950('0x15')](function(_0x42656e){logger[_0xb950('0x13')]('UpdateCmHopperBlack',_0x42656e[_0xb950('0x14')],_0x76e540);_0x3392e9(_0x135a50[_0xb950('0x13')](0x1f4,_0x42656e[_0xb950('0x14')]));});});};exports[_0xb950('0x24')]=function(_0x3b3588){var _0x31de39=this;return new Promise(function(_0x4f3bcf,_0x184845){return db[_0xb950('0x17')]['destroy']({'where':_0x3b3588[_0xb950('0x19')]?_0x3b3588[_0xb950('0x19')][_0xb950('0x23')]||null:null})[_0xb950('0xc')](function(_0x521b7b){logger[_0xb950('0xd')](_0xb950('0x24'),_0x3b3588);logger[_0xb950('0x10')](_0xb950('0x24'),_0x3b3588,JSON[_0xb950('0x20')](_0x521b7b));_0x4f3bcf(_0x521b7b);})[_0xb950('0x15')](function(_0x26113e){logger['error'](_0xb950('0x24'),_0x26113e[_0xb950('0x14')],_0x3b3588);_0x184845(_0x31de39[_0xb950('0x13')](0x1f4,_0x26113e[_0xb950('0x14')]));});});};
\ No newline at end of file
index 2c4331f..47641a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4745=['isAuthenticated','/:id','show','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','index'];(function(_0x430140,_0x3c915b){var _0x569416=function(_0x3126a3){while(--_0x3126a3){_0x430140['push'](_0x430140['shift']());}};_0x569416(++_0x3c915b);}(_0x4745,0x1e7));var _0x5474=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0x4745[_0x4dbaad];return _0x226c72;};'use strict';var multer=require(_0x5474('0x0'));var util=require(_0x5474('0x1'));var path=require(_0x5474('0x2'));var timeout=require(_0x5474('0x3'));var express=require(_0x5474('0x4'));var router=express[_0x5474('0x5')]();var fs_extra=require(_0x5474('0x6'));var auth=require(_0x5474('0x7'));var interaction=require(_0x5474('0x8'));var config=require(_0x5474('0x9'));var controller=require(_0x5474('0xa'));router[_0x5474('0xb')]('/',auth['isAuthenticated'](),controller[_0x5474('0xc')]);router[_0x5474('0xb')]('/describe',auth[_0x5474('0xd')](),controller['describe']);router[_0x5474('0xb')](_0x5474('0xe'),auth['isAuthenticated'](),controller[_0x5474('0xf')]);router[_0x5474('0x10')](_0x5474('0xe'),auth[_0x5474('0xd')](),controller[_0x5474('0x11')]);router[_0x5474('0x12')](_0x5474('0xe'),auth[_0x5474('0xd')](),controller['destroy']);module[_0x5474('0x13')]=router;
\ No newline at end of file
+var _0x9a5a=['put','/:id','update','delete','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','index','/describe','isAuthenticated','describe','show'];(function(_0x18f8a0,_0x138e26){var _0x87be41=function(_0x5e2ceb){while(--_0x5e2ceb){_0x18f8a0['push'](_0x18f8a0['shift']());}};_0x87be41(++_0x138e26);}(_0x9a5a,0x194));var _0xa9a5=function(_0xa71760,_0x1e026c){_0xa71760=_0xa71760-0x0;var _0x15cb79=_0x9a5a[_0xa71760];return _0x15cb79;};'use strict';var multer=require(_0xa9a5('0x0'));var util=require(_0xa9a5('0x1'));var path=require(_0xa9a5('0x2'));var timeout=require(_0xa9a5('0x3'));var express=require(_0xa9a5('0x4'));var router=express['Router']();var fs_extra=require(_0xa9a5('0x5'));var auth=require(_0xa9a5('0x6'));var interaction=require(_0xa9a5('0x7'));var config=require(_0xa9a5('0x8'));var controller=require(_0xa9a5('0x9'));router[_0xa9a5('0xa')]('/',auth['isAuthenticated'](),controller[_0xa9a5('0xb')]);router[_0xa9a5('0xa')](_0xa9a5('0xc'),auth[_0xa9a5('0xd')](),controller[_0xa9a5('0xe')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xa9a5('0xf')]);router[_0xa9a5('0x10')](_0xa9a5('0x11'),auth[_0xa9a5('0xd')](),controller[_0xa9a5('0x12')]);router[_0xa9a5('0x13')](_0xa9a5('0x11'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index d8a480f..1df1c06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5871=['seconds','BOOLEAN','sequelize','moment','exports','INTEGER','STRING','DATE','getDataValue','endtime','setDataValue','followuptime','diff'];(function(_0x29ce14,_0x334166){var _0x48f289=function(_0x288d11){while(--_0x288d11){_0x29ce14['push'](_0x29ce14['shift']());}};_0x48f289(++_0x334166);}(_0x5871,0x1e3));var _0x1587=function(_0x267abd,_0x43f3a8){_0x267abd=_0x267abd-0x0;var _0x8e9562=_0x5871[_0x267abd];return _0x8e9562;};'use strict';var Sequelize=require(_0x1587('0x0'));var moment=require(_0x1587('0x1'));module[_0x1587('0x2')]={'state':{'type':Sequelize[_0x1587('0x3')](0x2)},'statedesc':{'type':Sequelize[_0x1587('0x4')]},'scheduledat':{'type':Sequelize[_0x1587('0x5')]},'countbusyretry':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x1587('0x4')]},'originatecalleridnum':{'type':Sequelize[_0x1587('0x4')]},'originatecalleridname':{'type':Sequelize[_0x1587('0x4')]},'calleridnum':{'type':Sequelize[_0x1587('0x4')]},'calleridname':{'type':Sequelize[_0x1587('0x4')]},'starttime':{'type':Sequelize[_0x1587('0x5')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0x1587('0x5')]},'droptime':{'type':Sequelize[_0x1587('0x5')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x1587('0x4')]},'campaign':{'type':Sequelize[_0x1587('0x4')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x1587('0x4')]},'disposition':{'type':Sequelize[_0x1587('0x4')]},'secondDisposition':{'type':Sequelize[_0x1587('0x4')]},'thirdDisposition':{'type':Sequelize[_0x1587('0x4')]},'dispositionat':{'type':Sequelize[_0x1587('0x5')],'set':function(_0x5d5a20){var _0x365a70=this[_0x1587('0x6')](_0x1587('0x7'));if(_0x365a70&&_0x5d5a20){this[_0x1587('0x8')](_0x1587('0x9'),moment(_0x5d5a20)[_0x1587('0xa')](moment(_0x365a70),_0x1587('0xb')));}}},'amd':{'type':Sequelize[_0x1587('0xc')],'defaultValue':![]},'fax':{'type':Sequelize[_0x1587('0xc')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x1587('0xc')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize[_0x1587('0xc')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x1587('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x1587('0x5')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize[_0x1587('0x5')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agiafterat':{'type':Sequelize['DATE']},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x1587('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xcfea=['diff','seconds','BOOLEAN','sequelize','moment','exports','STRING','DATE','INTEGER','endtime','setDataValue','followuptime'];(function(_0x160b75,_0x18988e){var _0x3fb871=function(_0x29eb90){while(--_0x29eb90){_0x160b75['push'](_0x160b75['shift']());}};_0x3fb871(++_0x18988e);}(_0xcfea,0x19b));var _0xacfe=function(_0x241d51,_0x49b7f7){_0x241d51=_0x241d51-0x0;var _0x3c4c93=_0xcfea[_0x241d51];return _0x3c4c93;};'use strict';var Sequelize=require(_0xacfe('0x0'));var moment=require(_0xacfe('0x1'));module[_0xacfe('0x2')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xacfe('0x3')]},'scheduledat':{'type':Sequelize[_0xacfe('0x4')]},'countbusyretry':{'type':Sequelize[_0xacfe('0x5')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xacfe('0x5')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xacfe('0x3')]},'originatecalleridnum':{'type':Sequelize[_0xacfe('0x3')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xacfe('0x3')]},'starttime':{'type':Sequelize[_0xacfe('0x4')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xacfe('0x4')]},'droptime':{'type':Sequelize[_0xacfe('0x4')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xacfe('0x5')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xacfe('0x5')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xacfe('0x5')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xacfe('0x3')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0xacfe('0x3')]},'secondDisposition':{'type':Sequelize[_0xacfe('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x3efbb5){var _0x41373b=this['getDataValue'](_0xacfe('0x6'));if(_0x41373b&&_0x3efbb5){this[_0xacfe('0x7')](_0xacfe('0x8'),moment(_0x3efbb5)[_0xacfe('0x9')](moment(_0x41373b),_0xacfe('0xa')));}}},'amd':{'type':Sequelize[_0xacfe('0xb')],'defaultValue':![]},'fax':{'type':Sequelize[_0xacfe('0xb')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xacfe('0xb')],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xacfe('0x4')]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xacfe('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize[_0xacfe('0x4')]},'recallme':{'type':Sequelize[_0xacfe('0xb')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xacfe('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0xacfe('0x5')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xacfe('0x5')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xacfe('0x5')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xacfe('0x5')],'defaultValue':0x0}};
\ No newline at end of file
index ec7bdfe..fc8ca74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d17=['ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','VoiceQueueId','from','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20NOT\x20IN\x20(?)','cm_hopper','state\x20=\x204','moveContactsIvrCampaignHopperFinal','into','CampaignId','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','calleridnum','group','checkContactHopper','findOne','eml-format','rimraf','request-promise','moment','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','name','send','index','CmHopperFinal','rawAttributes','fieldName','type','model','map','query','intersection','attributes','fields','length','nolimit','sort','where','filters','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','describe','update','body','uniqueid','find','countContactsQueueCampaignHopperFinal','COUNT','sequelize','`state`\x20=\x200,\x201,\x20null','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','literal','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','answeringMachine','countContactsIvrCampaignHopperFinal','congestionContacts','moveContactsQueueCampaignHopperFinal','VoiceQueue','insert','fromQuery','scheduledAt','ContactId','ListId','createdAt','updatedAt','select','field','ANY_VALUE(calleridnum)','phone','NOW()'];(function(_0x265003,_0xf0f023){var _0x33c743=function(_0x326a5d){while(--_0x326a5d){_0x265003['push'](_0x265003['shift']());}};_0x33c743(++_0xf0f023);}(_0x5d17,0x114));var _0x75d1=function(_0x180297,_0x56bb6d){_0x180297=_0x180297-0x0;var _0x1f7aae=_0x5d17[_0x180297];return _0x1f7aae;};'use strict';var emlformat=require(_0x75d1('0x0'));var rimraf=require(_0x75d1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x75d1('0x2'));var moment=require(_0x75d1('0x3'));var BPromise=require(_0x75d1('0x4'));var Mustache=require('mustache');var util=require(_0x75d1('0x5'));var path=require(_0x75d1('0x6'));var sox=require(_0x75d1('0x7'));var csv=require(_0x75d1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x75d1('0x9'));var _=require(_0x75d1('0xa'));var squel=require(_0x75d1('0xb'));var crypto=require(_0x75d1('0xc'));var jsforce=require(_0x75d1('0xd'));var deskjs=require(_0x75d1('0xe'));var toCsv=require(_0x75d1('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x75d1('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x75d1('0x10'));var hardwareService=require(_0x75d1('0x11'));var logger=require('../../config/logger')(_0x75d1('0x12'));var utils=require(_0x75d1('0x13'));var config=require(_0x75d1('0x14'));var licenseUtil=require(_0x75d1('0x15'));var db=require(_0x75d1('0x16'))['db'];function respondWithStatusCode(_0xd089cf,_0x49667a){_0x49667a=_0x49667a||0xcc;return function(_0x19e825){if(_0x19e825){return _0xd089cf[_0x75d1('0x17')](_0x49667a);}return _0xd089cf[_0x75d1('0x18')](_0x49667a)[_0x75d1('0x19')]();};}function respondWithResult(_0x49d723,_0x553697){_0x553697=_0x553697||0xc8;return function(_0x55b8a0){if(_0x55b8a0){return _0x49d723[_0x75d1('0x18')](_0x553697)[_0x75d1('0x1a')](_0x55b8a0);}};}function respondWithFilteredResult(_0x2fd022,_0x52e649){return function(_0x1f9620){if(_0x1f9620){var _0x3fff9b=typeof _0x52e649[_0x75d1('0x1b')]===_0x75d1('0x1c')&&typeof _0x52e649[_0x75d1('0x1d')]===_0x75d1('0x1c');var _0x2845bc=_0x1f9620[_0x75d1('0x1e')];var _0x1bc5de=_0x3fff9b?0x0:_0x52e649[_0x75d1('0x1b')];var _0x2c2a6d=_0x3fff9b?_0x1f9620['count']:_0x52e649['offset']+_0x52e649[_0x75d1('0x1d')];var _0x42b7ac;if(_0x2c2a6d>=_0x2845bc){_0x2c2a6d=_0x2845bc;_0x42b7ac=0xc8;}else{_0x42b7ac=0xce;}_0x2fd022['status'](_0x42b7ac);return _0x2fd022[_0x75d1('0x1f')](_0x75d1('0x20'),_0x1bc5de+'-'+_0x2c2a6d+'/'+_0x2845bc)[_0x75d1('0x1a')](_0x1f9620);}return null;};}function patchUpdates(_0xf6cc70){return function(_0xa42dbe){try{jsonpatch[_0x75d1('0x21')](_0xa42dbe,_0xf6cc70,!![]);}catch(_0x51d3b0){return BPromise[_0x75d1('0x22')](_0x51d3b0);}return _0xa42dbe[_0x75d1('0x23')]();};}function saveUpdates(_0x501cc7,_0x1cb58c){return function(_0x641ea4){if(_0x641ea4){return _0x641ea4['update'](_0x501cc7)[_0x75d1('0x24')](function(_0x5e70ec){return _0x5e70ec;});}return null;};}function removeEntity(_0x3a85c0,_0xc256af){return function(_0x345cf5){if(_0x345cf5){return _0x345cf5['destroy']()['then'](function(){_0x3a85c0[_0x75d1('0x18')](0xcc)[_0x75d1('0x19')]();});}};}function handleEntityNotFound(_0x315ce5,_0x18184b){return function(_0x51d043){if(!_0x51d043){_0x315ce5[_0x75d1('0x17')](0x194);}return _0x51d043;};}function handleError(_0x2b5848,_0x367238){_0x367238=_0x367238||0x1f4;return function(_0x51138e){logger['error'](_0x51138e['stack']);if(_0x51138e[_0x75d1('0x25')]){delete _0x51138e[_0x75d1('0x25')];}_0x2b5848[_0x75d1('0x18')](_0x367238)[_0x75d1('0x26')](_0x51138e);};}exports[_0x75d1('0x27')]=function(_0x519ceb,_0x4d292e){var _0x410e16={},_0x197f52={},_0x4967b5={'count':0x0,'rows':[]};var _0x2408b6=_['map'](db[_0x75d1('0x28')][_0x75d1('0x29')],function(_0x91e7c9){return{'name':_0x91e7c9[_0x75d1('0x2a')],'type':_0x91e7c9[_0x75d1('0x2b')]['key']};});_0x197f52[_0x75d1('0x2c')]=_[_0x75d1('0x2d')](_0x2408b6,_0x75d1('0x25'));_0x197f52[_0x75d1('0x2e')]=_['keys'](_0x519ceb[_0x75d1('0x2e')]);_0x197f52['filters']=_[_0x75d1('0x2f')](_0x197f52[_0x75d1('0x2c')],_0x197f52['query']);_0x410e16[_0x75d1('0x30')]=_[_0x75d1('0x2f')](_0x197f52[_0x75d1('0x2c')],qs[_0x75d1('0x31')](_0x519ceb[_0x75d1('0x2e')]['fields']));_0x410e16[_0x75d1('0x30')]=_0x410e16[_0x75d1('0x30')][_0x75d1('0x32')]?_0x410e16[_0x75d1('0x30')]:_0x197f52['model'];if(!_0x519ceb['query']['hasOwnProperty'](_0x75d1('0x33'))){_0x410e16[_0x75d1('0x1d')]=qs[_0x75d1('0x1d')](_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x1d')]);_0x410e16[_0x75d1('0x1b')]=qs[_0x75d1('0x1b')](_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x1b')]);}_0x410e16['order']=qs[_0x75d1('0x34')](_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x34')]);_0x410e16[_0x75d1('0x35')]=qs[_0x75d1('0x36')](_['pick'](_0x519ceb['query'],_0x197f52['filters']),_0x2408b6);if(_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x37')]){_0x410e16[_0x75d1('0x35')]=_[_0x75d1('0x38')](_0x410e16[_0x75d1('0x35')],{'$or':_[_0x75d1('0x2d')](_0x2408b6,function(_0x48f9f3){if(_0x48f9f3['type']!=='VIRTUAL'){var _0x3f2569={};_0x3f2569[_0x48f9f3['name']]={'$like':'%'+_0x519ceb['query'][_0x75d1('0x37')]+'%'};return _0x3f2569;}})});}_0x410e16=_[_0x75d1('0x38')]({},_0x410e16,_0x519ceb[_0x75d1('0x39')]);var _0x46854c={'where':_0x410e16['where']};return db[_0x75d1('0x28')][_0x75d1('0x1e')](_0x46854c)[_0x75d1('0x24')](function(_0x3d4137){_0x4967b5[_0x75d1('0x1e')]=_0x3d4137;if(_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x3a')]){_0x410e16[_0x75d1('0x3b')]=[{'all':!![]}];}return db[_0x75d1('0x28')][_0x75d1('0x3c')](_0x410e16);})[_0x75d1('0x24')](function(_0x93922f){_0x4967b5[_0x75d1('0x3d')]=_0x93922f;return _0x4967b5;})[_0x75d1('0x24')](respondWithFilteredResult(_0x4d292e,_0x410e16))[_0x75d1('0x3e')](handleError(_0x4d292e,null));};exports[_0x75d1('0x3f')]=function(_0x25f689,_0x2ad3ef){var _0x42c18c={'raw':!![],'where':{'id':_0x25f689[_0x75d1('0x40')]['id']}},_0x2384aa={};_0x2384aa[_0x75d1('0x2c')]=_['keys'](db['CmHopperFinal'][_0x75d1('0x29')]);_0x2384aa[_0x75d1('0x2e')]=_[_0x75d1('0x41')](_0x25f689[_0x75d1('0x2e')]);_0x2384aa['filters']=_[_0x75d1('0x2f')](_0x2384aa[_0x75d1('0x2c')],_0x2384aa[_0x75d1('0x2e')]);_0x42c18c[_0x75d1('0x30')]=_['intersection'](_0x2384aa[_0x75d1('0x2c')],qs[_0x75d1('0x31')](_0x25f689[_0x75d1('0x2e')][_0x75d1('0x31')]));_0x42c18c['attributes']=_0x42c18c[_0x75d1('0x30')]['length']?_0x42c18c[_0x75d1('0x30')]:_0x2384aa[_0x75d1('0x2c')];if(_0x25f689[_0x75d1('0x2e')][_0x75d1('0x3a')]){_0x42c18c[_0x75d1('0x3b')]=[{'all':!![]}];}_0x42c18c=_[_0x75d1('0x38')]({},_0x42c18c,_0x25f689['options']);return db[_0x75d1('0x28')]['find'](_0x42c18c)['then'](handleEntityNotFound(_0x2ad3ef,null))[_0x75d1('0x24')](respondWithResult(_0x2ad3ef,null))[_0x75d1('0x3e')](handleError(_0x2ad3ef,null));};exports[_0x75d1('0x42')]=function(_0x12bd67,_0x16f744){return db[_0x75d1('0x28')][_0x75d1('0x42')]()['then'](respondWithResult(_0x16f744,null))['catch'](handleError(_0x16f744,null));};exports[_0x75d1('0x43')]=function(_0x8ce3d2,_0x50def3){if(_0x8ce3d2[_0x75d1('0x44')][_0x75d1('0x45')]){delete _0x8ce3d2[_0x75d1('0x44')]['uniqueid'];}return db[_0x75d1('0x28')][_0x75d1('0x46')]({'where':{'uniqueid':_0x8ce3d2[_0x75d1('0x40')]['id']}})[_0x75d1('0x24')](handleEntityNotFound(_0x50def3,null))[_0x75d1('0x24')](saveUpdates(_0x8ce3d2[_0x75d1('0x44')],null))[_0x75d1('0x24')](respondWithResult(_0x50def3,null))['catch'](handleError(_0x50def3,null));};exports[_0x75d1('0x47')]=function(_0x382195,_0x16b3c0,_0x395e0b){return db[_0x75d1('0x28')][_0x75d1('0x3c')]({'raw':![],'where':{'VoiceQueueId':_0x382195[_0x75d1('0x40')]['id']},'attributes':[[db['sequelize']['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db[_0x75d1('0x49')]['literal'](_0x75d1('0x4a')))),_0x75d1('0x4b')],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db[_0x75d1('0x49')]['literal'](_0x75d1('0x4c')))),_0x75d1('0x4d')],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db[_0x75d1('0x49')][_0x75d1('0x4e')](_0x75d1('0x4f')))),_0x75d1('0x50')],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db['sequelize']['literal'](_0x75d1('0x51')))),'congestionContacts'],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db['sequelize']['fn']('IF',db[_0x75d1('0x49')][_0x75d1('0x4e')](_0x75d1('0x52')))),_0x75d1('0x53')],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db['sequelize'][_0x75d1('0x4e')](_0x75d1('0x54')))),_0x75d1('0x55')],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db[_0x75d1('0x49')][_0x75d1('0x4e')](_0x75d1('0x56')))),_0x75d1('0x57')],[db['sequelize']['fn']('COUNT',db[_0x75d1('0x49')]['fn']('IF',db[_0x75d1('0x49')][_0x75d1('0x4e')]('`state`\x20=\x2019,\x201,\x20null'))),_0x75d1('0x58')]]})['then'](handleEntityNotFound(_0x16b3c0,null))[_0x75d1('0x24')](respondWithResult(_0x16b3c0,null))[_0x75d1('0x3e')](handleError(_0x16b3c0,null));};exports[_0x75d1('0x59')]=function(_0x16cc70,_0x5d2219,_0x22ce12){return db['CmHopperFinal']['findAll']({'raw':![],'where':{'CampaignId':_0x16cc70[_0x75d1('0x40')]['id']},'attributes':[[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db['sequelize']['literal'](_0x75d1('0x4a')))),_0x75d1('0x4b')],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db['sequelize'][_0x75d1('0x4e')](_0x75d1('0x4c')))),_0x75d1('0x4d')],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db[_0x75d1('0x49')][_0x75d1('0x4e')](_0x75d1('0x4f')))),_0x75d1('0x50')],[db[_0x75d1('0x49')]['fn']('COUNT',db[_0x75d1('0x49')]['fn']('IF',db[_0x75d1('0x49')][_0x75d1('0x4e')](_0x75d1('0x51')))),_0x75d1('0x5a')],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db['sequelize']['fn']('IF',db['sequelize'][_0x75d1('0x4e')](_0x75d1('0x52')))),_0x75d1('0x53')],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db['sequelize']['fn']('IF',db['sequelize'][_0x75d1('0x4e')](_0x75d1('0x54')))),'abandonedContacts'],[db[_0x75d1('0x49')]['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db[_0x75d1('0x49')][_0x75d1('0x4e')](_0x75d1('0x56')))),'reCallContacts'],[db['sequelize']['fn'](_0x75d1('0x48'),db[_0x75d1('0x49')]['fn']('IF',db['sequelize'][_0x75d1('0x4e')]('`state`\x20=\x2019,\x201,\x20null'))),_0x75d1('0x58')]]})[_0x75d1('0x24')](handleEntityNotFound(_0x5d2219,null))[_0x75d1('0x24')](respondWithResult(_0x5d2219,null))['catch'](handleError(_0x5d2219,null));};exports[_0x75d1('0x5b')]=function(_0x1f9ac2,_0x290587,_0x1baaca){return db[_0x75d1('0x5c')]['find']({'where':{'id':_0x1f9ac2['params']['id']}})[_0x75d1('0x24')](handleEntityNotFound(_0x290587,null))['then'](function(_0x3f15f3){var _0xf29a9f;if(_0x3f15f3){_0xf29a9f=squel[_0x75d1('0x5d')]()['into']('cm_hopper')[_0x75d1('0x5e')](['phone',_0x75d1('0x5f'),_0x75d1('0x60'),_0x75d1('0x61'),'VoiceQueueId',_0x75d1('0x62'),_0x75d1('0x63')],squel[_0x75d1('0x64')]()[_0x75d1('0x65')](_0x75d1('0x66'),_0x75d1('0x67'))[_0x75d1('0x65')](_0x75d1('0x68'),_0x75d1('0x5f'))[_0x75d1('0x65')](_0x75d1('0x69'),_0x75d1('0x60'))[_0x75d1('0x65')](_0x75d1('0x6a'),'ListId')['field'](_0x75d1('0x6b'),_0x75d1('0x6c'))['field'](_0x75d1('0x68'),'createdAt')['field']('NOW()',_0x75d1('0x63'))[_0x75d1('0x6d')](_0x75d1('0x6e'))[_0x75d1('0x35')](_0x75d1('0x6f'),_0x1f9ac2['params']['id'][_0x75d1('0x70')]())[_0x75d1('0x35')](_0x75d1('0x71'),_0x1f9ac2[_0x75d1('0x44')][_0x75d1('0x72')]['toString']())[_0x75d1('0x35')]('calleridnum\x20IS\x20NOT\x20NULL')[_0x75d1('0x35')](_0x75d1('0x73'),squel[_0x75d1('0x64')]()['field']('phone')['from'](_0x75d1('0x74'))[_0x75d1('0x35')](_0x75d1('0x6f'),_0x1f9ac2[_0x75d1('0x40')]['id'][_0x75d1('0x70')]()))[_0x75d1('0x35')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x75d1('0x64')]()[_0x75d1('0x65')]('calleridnum')[_0x75d1('0x6d')]('cm_hopper_final')['where']('VoiceQueueId\x20=\x20?',_0x1f9ac2[_0x75d1('0x40')]['id']['toString']())['where'](_0x75d1('0x75')))['group'](_0x75d1('0x60')))[_0x75d1('0x70')]();return db[_0x75d1('0x49')][_0x75d1('0x2e')](_0xf29a9f);}return[];})[_0x75d1('0x24')](respondWithResult(_0x290587,null))[_0x75d1('0x3e')](handleError(_0x290587,null));};exports[_0x75d1('0x76')]=function(_0x217347,_0x51b682,_0x195a0a){return db['Campaign'][_0x75d1('0x46')]({'where':{'id':_0x217347[_0x75d1('0x40')]['id']}})[_0x75d1('0x24')](handleEntityNotFound(_0x51b682,null))['then'](function(_0x10bc92){var _0x150735;if(_0x10bc92){_0x150735=squel[_0x75d1('0x5d')]()[_0x75d1('0x77')](_0x75d1('0x74'))[_0x75d1('0x5e')]([_0x75d1('0x67'),'scheduledAt',_0x75d1('0x60'),_0x75d1('0x61'),_0x75d1('0x78'),_0x75d1('0x62'),_0x75d1('0x63')],squel['select']()['field'](_0x75d1('0x66'),'phone')[_0x75d1('0x65')](_0x75d1('0x68'),_0x75d1('0x5f'))[_0x75d1('0x65')]('ANY_VALUE(ContactId)','ContactId')[_0x75d1('0x65')](_0x75d1('0x6a'),_0x75d1('0x61'))[_0x75d1('0x65')](_0x75d1('0x79'),'CampaignId')[_0x75d1('0x65')](_0x75d1('0x68'),'createdAt')[_0x75d1('0x65')](_0x75d1('0x68'),_0x75d1('0x63'))[_0x75d1('0x6d')](_0x75d1('0x6e'))[_0x75d1('0x35')]('CampaignId\x20=\x20?',_0x217347[_0x75d1('0x40')]['id'][_0x75d1('0x70')]())[_0x75d1('0x35')](_0x75d1('0x71'),_0x217347[_0x75d1('0x44')][_0x75d1('0x72')]['toString']())[_0x75d1('0x35')]('calleridnum\x20IS\x20NOT\x20NULL')[_0x75d1('0x35')](_0x75d1('0x73'),squel[_0x75d1('0x64')]()[_0x75d1('0x65')](_0x75d1('0x67'))[_0x75d1('0x6d')]('cm_hopper')[_0x75d1('0x35')](_0x75d1('0x7a'),_0x217347[_0x75d1('0x40')]['id']['toString']()))[_0x75d1('0x35')](_0x75d1('0x73'),squel['select']()[_0x75d1('0x65')](_0x75d1('0x7b'))[_0x75d1('0x6d')](_0x75d1('0x6e'))[_0x75d1('0x35')](_0x75d1('0x7a'),_0x217347[_0x75d1('0x40')]['id'][_0x75d1('0x70')]())[_0x75d1('0x35')]('state\x20=\x204'))[_0x75d1('0x7c')](_0x75d1('0x60')))['toString']();return db[_0x75d1('0x49')][_0x75d1('0x2e')](_0x150735);}return[];})['then'](respondWithResult(_0x51b682,null))['catch'](handleError(_0x51b682,null));};exports[_0x75d1('0x7d')]=function(_0x44a017,_0x4d8e5d,_0x1f3a7e){return db['CmHopper'][_0x75d1('0x7e')]({'where':{'VoiceQueueId':_0x44a017['body'][_0x75d1('0x6c')],'CampaignId':_0x44a017[_0x75d1('0x44')][_0x75d1('0x78')],'ContactId':_0x44a017[_0x75d1('0x44')][_0x75d1('0x60')]}})[_0x75d1('0x24')](handleEntityNotFound(_0x4d8e5d,null))[_0x75d1('0x24')](function(_0x205e82){if(_0x205e82){return _0x205e82;}return null;})[_0x75d1('0x24')](respondWithResult(_0x4d8e5d,null))[_0x75d1('0x3e')](handleError(_0x4d8e5d,null));};
\ No newline at end of file
+var _0x187d=['state\x20=\x20?','calleridnum\x20NOT\x20IN\x20(?)','select','from','cm_hopper','calleridnum','cm_hopper_final','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','insert','into','CampaignId','CampaignId\x20=\x20?','state','checkContactHopper','CmHopper','findOne','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','update','destroy','error','stack','name','index','map','CmHopperFinal','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','length','hasOwnProperty','where','filter','merge','includeAll','include','findAll','then','rows','catch','show','params','fields','options','find','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','COUNT','sequelize','literal','noSuchContacts','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x200,\x201,\x20null','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2022,\x201,\x20null','moveContactsQueueCampaignHopperFinal','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','ANY_VALUE(VoiceQueueId)','VoiceQueueId\x20=\x20?','toString'];(function(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0x187d,0x93));var _0xd187=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x187d[_0x397e5f];return _0x5302b8;};'use strict';var emlformat=require(_0xd187('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd187('0x1'));var jsonpatch=require(_0xd187('0x2'));var rp=require(_0xd187('0x3'));var moment=require(_0xd187('0x4'));var BPromise=require(_0xd187('0x5'));var Mustache=require(_0xd187('0x6'));var util=require('util');var path=require(_0xd187('0x7'));var sox=require(_0xd187('0x8'));var csv=require('to-csv');var ejs=require(_0xd187('0x9'));var fs=require('fs');var fs_extra=require(_0xd187('0xa'));var _=require(_0xd187('0xb'));var squel=require(_0xd187('0xc'));var crypto=require(_0xd187('0xd'));var jsforce=require(_0xd187('0xe'));var deskjs=require(_0xd187('0xf'));var toCsv=require(_0xd187('0x10'));var querystring=require('querystring');var Papa=require(_0xd187('0x11'));var Redis=require(_0xd187('0x12'));var authService=require(_0xd187('0x13'));var qs=require(_0xd187('0x14'));var as=require(_0xd187('0x15'));var hardwareService=require(_0xd187('0x16'));var logger=require('../../config/logger')(_0xd187('0x17'));var utils=require(_0xd187('0x18'));var config=require(_0xd187('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xd187('0x1a'))['db'];function respondWithStatusCode(_0x4545cf,_0x32ba07){_0x32ba07=_0x32ba07||0xcc;return function(_0x59ee4a){if(_0x59ee4a){return _0x4545cf[_0xd187('0x1b')](_0x32ba07);}return _0x4545cf[_0xd187('0x1c')](_0x32ba07)[_0xd187('0x1d')]();};}function respondWithResult(_0x126d1a,_0x517b25){_0x517b25=_0x517b25||0xc8;return function(_0x39a927){if(_0x39a927){return _0x126d1a[_0xd187('0x1c')](_0x517b25)[_0xd187('0x1e')](_0x39a927);}};}function respondWithFilteredResult(_0x188cfe,_0x4c8f68){return function(_0x245d3e){if(_0x245d3e){var _0x52a208=typeof _0x4c8f68['offset']===_0xd187('0x1f')&&typeof _0x4c8f68['limit']==='undefined';var _0x207b36=_0x245d3e[_0xd187('0x20')];var _0x374fe0=_0x52a208?0x0:_0x4c8f68[_0xd187('0x21')];var _0x21df74=_0x52a208?_0x245d3e[_0xd187('0x20')]:_0x4c8f68[_0xd187('0x21')]+_0x4c8f68[_0xd187('0x22')];var _0x4f2f88;if(_0x21df74>=_0x207b36){_0x21df74=_0x207b36;_0x4f2f88=0xc8;}else{_0x4f2f88=0xce;}_0x188cfe[_0xd187('0x1c')](_0x4f2f88);return _0x188cfe[_0xd187('0x23')](_0xd187('0x24'),_0x374fe0+'-'+_0x21df74+'/'+_0x207b36)[_0xd187('0x1e')](_0x245d3e);}return null;};}function patchUpdates(_0x5204ee){return function(_0x2f7fb3){try{jsonpatch[_0xd187('0x25')](_0x2f7fb3,_0x5204ee,!![]);}catch(_0xc5bba5){return BPromise['reject'](_0xc5bba5);}return _0x2f7fb3['save']();};}function saveUpdates(_0x57cf1d,_0x435d94){return function(_0x33741d){if(_0x33741d){return _0x33741d[_0xd187('0x26')](_0x57cf1d)['then'](function(_0x2c07c8){return _0x2c07c8;});}return null;};}function removeEntity(_0x57186b,_0x145771){return function(_0x5a7a23){if(_0x5a7a23){return _0x5a7a23[_0xd187('0x27')]()['then'](function(){_0x57186b['status'](0xcc)[_0xd187('0x1d')]();});}};}function handleEntityNotFound(_0x4d992b,_0x12da33){return function(_0x598aa4){if(!_0x598aa4){_0x4d992b['sendStatus'](0x194);}return _0x598aa4;};}function handleError(_0x4eac6a,_0x848ddd){_0x848ddd=_0x848ddd||0x1f4;return function(_0xeff822){logger[_0xd187('0x28')](_0xeff822[_0xd187('0x29')]);if(_0xeff822['name']){delete _0xeff822[_0xd187('0x2a')];}_0x4eac6a[_0xd187('0x1c')](_0x848ddd)['send'](_0xeff822);};}exports[_0xd187('0x2b')]=function(_0x1c87ee,_0x34febe){var _0x4c50a5={},_0x15e2e8={},_0x56e292={'count':0x0,'rows':[]};var _0x263e31=_[_0xd187('0x2c')](db[_0xd187('0x2d')][_0xd187('0x2e')],function(_0x489f2e){return{'name':_0x489f2e[_0xd187('0x2f')],'type':_0x489f2e[_0xd187('0x30')]['key']};});_0x15e2e8['model']=_[_0xd187('0x2c')](_0x263e31,_0xd187('0x2a'));_0x15e2e8[_0xd187('0x31')]=_[_0xd187('0x32')](_0x1c87ee[_0xd187('0x31')]);_0x15e2e8[_0xd187('0x33')]=_[_0xd187('0x34')](_0x15e2e8[_0xd187('0x35')],_0x15e2e8['query']);_0x4c50a5[_0xd187('0x36')]=_[_0xd187('0x34')](_0x15e2e8[_0xd187('0x35')],qs['fields'](_0x1c87ee[_0xd187('0x31')]['fields']));_0x4c50a5[_0xd187('0x36')]=_0x4c50a5[_0xd187('0x36')][_0xd187('0x37')]?_0x4c50a5['attributes']:_0x15e2e8['model'];if(!_0x1c87ee[_0xd187('0x31')][_0xd187('0x38')]('nolimit')){_0x4c50a5[_0xd187('0x22')]=qs[_0xd187('0x22')](_0x1c87ee[_0xd187('0x31')]['limit']);_0x4c50a5['offset']=qs[_0xd187('0x21')](_0x1c87ee[_0xd187('0x31')]['offset']);}_0x4c50a5['order']=qs['sort'](_0x1c87ee[_0xd187('0x31')]['sort']);_0x4c50a5[_0xd187('0x39')]=qs[_0xd187('0x33')](_['pick'](_0x1c87ee[_0xd187('0x31')],_0x15e2e8['filters']),_0x263e31);if(_0x1c87ee[_0xd187('0x31')][_0xd187('0x3a')]){_0x4c50a5['where']=_[_0xd187('0x3b')](_0x4c50a5[_0xd187('0x39')],{'$or':_['map'](_0x263e31,function(_0x4399a5){if(_0x4399a5['type']!=='VIRTUAL'){var _0x26b06d={};_0x26b06d[_0x4399a5[_0xd187('0x2a')]]={'$like':'%'+_0x1c87ee[_0xd187('0x31')][_0xd187('0x3a')]+'%'};return _0x26b06d;}})});}_0x4c50a5=_[_0xd187('0x3b')]({},_0x4c50a5,_0x1c87ee['options']);var _0x8860c={'where':_0x4c50a5[_0xd187('0x39')]};return db[_0xd187('0x2d')]['count'](_0x8860c)['then'](function(_0x538c05){_0x56e292['count']=_0x538c05;if(_0x1c87ee[_0xd187('0x31')][_0xd187('0x3c')]){_0x4c50a5[_0xd187('0x3d')]=[{'all':!![]}];}return db[_0xd187('0x2d')][_0xd187('0x3e')](_0x4c50a5);})[_0xd187('0x3f')](function(_0x4699e1){_0x56e292[_0xd187('0x40')]=_0x4699e1;return _0x56e292;})['then'](respondWithFilteredResult(_0x34febe,_0x4c50a5))[_0xd187('0x41')](handleError(_0x34febe,null));};exports[_0xd187('0x42')]=function(_0x31d9d2,_0x51c7fc){var _0x21cbf6={'raw':!![],'where':{'id':_0x31d9d2[_0xd187('0x43')]['id']}},_0x48c100={};_0x48c100[_0xd187('0x35')]=_[_0xd187('0x32')](db[_0xd187('0x2d')][_0xd187('0x2e')]);_0x48c100['query']=_[_0xd187('0x32')](_0x31d9d2[_0xd187('0x31')]);_0x48c100[_0xd187('0x33')]=_[_0xd187('0x34')](_0x48c100['model'],_0x48c100[_0xd187('0x31')]);_0x21cbf6[_0xd187('0x36')]=_['intersection'](_0x48c100[_0xd187('0x35')],qs[_0xd187('0x44')](_0x31d9d2['query']['fields']));_0x21cbf6[_0xd187('0x36')]=_0x21cbf6[_0xd187('0x36')]['length']?_0x21cbf6['attributes']:_0x48c100['model'];if(_0x31d9d2[_0xd187('0x31')][_0xd187('0x3c')]){_0x21cbf6[_0xd187('0x3d')]=[{'all':!![]}];}_0x21cbf6=_[_0xd187('0x3b')]({},_0x21cbf6,_0x31d9d2[_0xd187('0x45')]);return db[_0xd187('0x2d')][_0xd187('0x46')](_0x21cbf6)['then'](handleEntityNotFound(_0x51c7fc,null))[_0xd187('0x3f')](respondWithResult(_0x51c7fc,null))[_0xd187('0x41')](handleError(_0x51c7fc,null));};exports[_0xd187('0x47')]=function(_0x3ce4a1,_0x3f5def){return db[_0xd187('0x2d')][_0xd187('0x47')]()[_0xd187('0x3f')](respondWithResult(_0x3f5def,null))['catch'](handleError(_0x3f5def,null));};exports[_0xd187('0x26')]=function(_0x2657be,_0x4523c8){if(_0x2657be[_0xd187('0x48')][_0xd187('0x49')]){delete _0x2657be['body'][_0xd187('0x49')];}return db[_0xd187('0x2d')]['find']({'where':{'uniqueid':_0x2657be[_0xd187('0x43')]['id']}})[_0xd187('0x3f')](handleEntityNotFound(_0x4523c8,null))['then'](saveUpdates(_0x2657be['body'],null))['then'](respondWithResult(_0x4523c8,null))['catch'](handleError(_0x4523c8,null));};exports[_0xd187('0x4a')]=function(_0x22f432,_0x12d448,_0x1bcc3a){return db[_0xd187('0x2d')][_0xd187('0x3e')]({'raw':![],'where':{'VoiceQueueId':_0x22f432[_0xd187('0x43')]['id']},'attributes':[[db['sequelize']['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')]('`state`\x20=\x200,\x201,\x20null'))),_0xd187('0x4e')],[db['sequelize']['fn']('COUNT',db[_0xd187('0x4c')]['fn']('IF',db['sequelize'][_0xd187('0x4d')](_0xd187('0x4f')))),_0xd187('0x50')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x51')))),'busyContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x52')))),'congestionContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0xd187('0x53')],[db['sequelize']['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x54')))),_0xd187('0x55')],[db[_0xd187('0x4c')]['fn']('COUNT',db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')]('`state`\x20=\x2022,\x201,\x20null'))),_0xd187('0x56')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x57')))),_0xd187('0x58')]]})[_0xd187('0x3f')](handleEntityNotFound(_0x12d448,null))[_0xd187('0x3f')](respondWithResult(_0x12d448,null))[_0xd187('0x41')](handleError(_0x12d448,null));};exports[_0xd187('0x59')]=function(_0x23271b,_0x288a04,_0x39934c){return db[_0xd187('0x2d')][_0xd187('0x3e')]({'raw':![],'where':{'CampaignId':_0x23271b[_0xd187('0x43')]['id']},'attributes':[[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db[_0xd187('0x4c')]['literal'](_0xd187('0x5a')))),_0xd187('0x4e')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')]('`state`\x20=\x203,\x201,\x20null'))),'noAnswerContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')]['literal'](_0xd187('0x51')))),'busyContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')]['literal'](_0xd187('0x52')))),_0xd187('0x5b')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db['sequelize']['literal'](_0xd187('0x5c')))),_0xd187('0x53')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db[_0xd187('0x4c')][_0xd187('0x4d')](_0xd187('0x54')))),_0xd187('0x55')],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db[_0xd187('0x4c')]['fn']('IF',db['sequelize'][_0xd187('0x4d')](_0xd187('0x5d')))),'reCallContacts'],[db[_0xd187('0x4c')]['fn'](_0xd187('0x4b'),db['sequelize']['fn']('IF',db['sequelize'][_0xd187('0x4d')](_0xd187('0x57')))),_0xd187('0x58')]]})[_0xd187('0x3f')](handleEntityNotFound(_0x288a04,null))['then'](respondWithResult(_0x288a04,null))[_0xd187('0x41')](handleError(_0x288a04,null));};exports[_0xd187('0x5e')]=function(_0x52e364,_0x569959,_0x3bca83){return db['VoiceQueue'][_0xd187('0x46')]({'where':{'id':_0x52e364[_0xd187('0x43')]['id']}})['then'](handleEntityNotFound(_0x569959,null))[_0xd187('0x3f')](function(_0x570c1c){var _0x317bc3;if(_0x570c1c){_0x317bc3=squel['insert']()['into']('cm_hopper')[_0xd187('0x5f')]([_0xd187('0x60'),_0xd187('0x61'),_0xd187('0x62'),_0xd187('0x63'),_0xd187('0x64'),_0xd187('0x65'),_0xd187('0x66')],squel['select']()[_0xd187('0x67')](_0xd187('0x68'),_0xd187('0x60'))['field'](_0xd187('0x69'),_0xd187('0x61'))[_0xd187('0x67')](_0xd187('0x6a'),'ContactId')[_0xd187('0x67')](_0xd187('0x6b'),'ListId')[_0xd187('0x67')](_0xd187('0x6c'),_0xd187('0x64'))[_0xd187('0x67')]('NOW()',_0xd187('0x65'))[_0xd187('0x67')]('NOW()',_0xd187('0x66'))['from']('cm_hopper_final')['where'](_0xd187('0x6d'),_0x52e364[_0xd187('0x43')]['id'][_0xd187('0x6e')]())[_0xd187('0x39')](_0xd187('0x6f'),_0x52e364[_0xd187('0x48')]['state'][_0xd187('0x6e')]())[_0xd187('0x39')]('calleridnum\x20IS\x20NOT\x20NULL')['where'](_0xd187('0x70'),squel[_0xd187('0x71')]()[_0xd187('0x67')](_0xd187('0x60'))[_0xd187('0x72')](_0xd187('0x73'))['where'](_0xd187('0x6d'),_0x52e364[_0xd187('0x43')]['id'][_0xd187('0x6e')]()))[_0xd187('0x39')](_0xd187('0x70'),squel[_0xd187('0x71')]()[_0xd187('0x67')](_0xd187('0x74'))[_0xd187('0x72')](_0xd187('0x75'))[_0xd187('0x39')](_0xd187('0x6d'),_0x52e364['params']['id']['toString']())[_0xd187('0x39')](_0xd187('0x76')))[_0xd187('0x77')](_0xd187('0x62')))[_0xd187('0x6e')]();return db[_0xd187('0x4c')]['query'](_0x317bc3);}return[];})[_0xd187('0x3f')](respondWithResult(_0x569959,null))['catch'](handleError(_0x569959,null));};exports[_0xd187('0x78')]=function(_0x520f86,_0x5cbfa6,_0x304117){return db['Campaign'][_0xd187('0x46')]({'where':{'id':_0x520f86[_0xd187('0x43')]['id']}})[_0xd187('0x3f')](handleEntityNotFound(_0x5cbfa6,null))[_0xd187('0x3f')](function(_0x1b93db){var _0x13a362;if(_0x1b93db){_0x13a362=squel[_0xd187('0x79')]()[_0xd187('0x7a')](_0xd187('0x73'))[_0xd187('0x5f')]([_0xd187('0x60'),_0xd187('0x61'),_0xd187('0x62'),_0xd187('0x63'),_0xd187('0x7b'),'createdAt',_0xd187('0x66')],squel[_0xd187('0x71')]()[_0xd187('0x67')](_0xd187('0x68'),'phone')[_0xd187('0x67')](_0xd187('0x69'),'scheduledAt')['field'](_0xd187('0x6a'),_0xd187('0x62'))[_0xd187('0x67')](_0xd187('0x6b'),_0xd187('0x63'))[_0xd187('0x67')]('ANY_VALUE(CampaignId)',_0xd187('0x7b'))[_0xd187('0x67')]('NOW()',_0xd187('0x65'))[_0xd187('0x67')](_0xd187('0x69'),_0xd187('0x66'))['from']('cm_hopper_final')[_0xd187('0x39')](_0xd187('0x7c'),_0x520f86[_0xd187('0x43')]['id']['toString']())[_0xd187('0x39')](_0xd187('0x6f'),_0x520f86[_0xd187('0x48')][_0xd187('0x7d')]['toString']())[_0xd187('0x39')]('calleridnum\x20IS\x20NOT\x20NULL')['where']('calleridnum\x20NOT\x20IN\x20(?)',squel['select']()['field']('phone')['from'](_0xd187('0x73'))[_0xd187('0x39')]('CampaignId\x20=\x20?',_0x520f86[_0xd187('0x43')]['id'][_0xd187('0x6e')]()))[_0xd187('0x39')](_0xd187('0x70'),squel[_0xd187('0x71')]()['field'](_0xd187('0x74'))['from'](_0xd187('0x75'))[_0xd187('0x39')](_0xd187('0x7c'),_0x520f86[_0xd187('0x43')]['id'][_0xd187('0x6e')]())[_0xd187('0x39')](_0xd187('0x76')))['group'](_0xd187('0x62')))[_0xd187('0x6e')]();return db['sequelize'][_0xd187('0x31')](_0x13a362);}return[];})[_0xd187('0x3f')](respondWithResult(_0x5cbfa6,null))['catch'](handleError(_0x5cbfa6,null));};exports[_0xd187('0x7e')]=function(_0x3bd1d8,_0x224312,_0x45b522){return db[_0xd187('0x7f')][_0xd187('0x80')]({'where':{'VoiceQueueId':_0x3bd1d8[_0xd187('0x48')][_0xd187('0x64')],'CampaignId':_0x3bd1d8['body'][_0xd187('0x7b')],'ContactId':_0x3bd1d8[_0xd187('0x48')][_0xd187('0x62')]}})[_0xd187('0x3f')](handleEntityNotFound(_0x224312,null))[_0xd187('0x3f')](function(_0x400a9){if(_0x400a9){return _0x400a9;}return null;})['then'](respondWithResult(_0x224312,null))['catch'](handleError(_0x224312,null));};
\ No newline at end of file
index 8725343..fd91646 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cb1=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','../../config/logger'];(function(_0x331b2f,_0x109eca){var _0x1e375d=function(_0x5af3ad){while(--_0x5af3ad){_0x331b2f['push'](_0x331b2f['shift']());}};_0x1e375d(++_0x109eca);}(_0x9cb1,0x11c));var _0x19cb=function(_0x120161,_0x42f759){_0x120161=_0x120161-0x0;var _0x23cf0f=_0x9cb1[_0x120161];return _0x23cf0f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x19cb('0x0'))(_0x19cb('0x1'));var moment=require(_0x19cb('0x2'));var BPromise=require(_0x19cb('0x3'));var rp=require(_0x19cb('0x4'));var fs=require('fs');var path=require(_0x19cb('0x5'));var rimraf=require(_0x19cb('0x6'));var config=require(_0x19cb('0x7'));var attributes=require(_0x19cb('0x8'));module[_0x19cb('0x9')]=function(_0x7420e4,_0x1d3eb5){return _0x7420e4[_0x19cb('0xa')](_0x19cb('0xb'),attributes,{'tableName':_0x19cb('0xc'),'paranoid':![],'indexes':[{'name':_0x19cb('0xd'),'fields':[_0x19cb('0xd')]},{'name':_0x19cb('0xe'),'fields':[_0x19cb('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7315=['./cmHopperFinal.attributes','exports','define','cm_hopper_final','calleridnum','uniqueid','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7315,0x156));var _0x5731=function(_0x54a8ce,_0x58d6fa){_0x54a8ce=_0x54a8ce-0x0;var _0x1b26e3=_0x7315[_0x54a8ce];return _0x1b26e3;};'use strict';var _=require('lodash');var util=require(_0x5731('0x0'));var logger=require(_0x5731('0x1'))(_0x5731('0x2'));var moment=require(_0x5731('0x3'));var BPromise=require('bluebird');var rp=require(_0x5731('0x4'));var fs=require('fs');var path=require(_0x5731('0x5'));var rimraf=require(_0x5731('0x6'));var config=require(_0x5731('0x7'));var attributes=require(_0x5731('0x8'));module[_0x5731('0x9')]=function(_0x4be3a9,_0x3a2de6){return _0x4be3a9[_0x5731('0xa')]('CmHopperFinal',attributes,{'tableName':_0x5731('0xb'),'paranoid':![],'indexes':[{'name':_0x5731('0xc'),'fields':['calleridnum']},{'name':_0x5731('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 84680ad..a8a44a6 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(_0x4b0747,_0x2b3de0){var _0x1c16c3=function(_0x29a695){while(--_0x29a695){_0x4b0747['push'](_0x4b0747['shift']());}};_0x1c16c3(++_0x2b3de0);}(_0xb10b,0x12a));var _0xbb10=function(_0x340380,_0x4bd2a8){_0x340380=_0x340380-0x0;var _0x49ce1c=_0xb10b[_0x340380];return _0x49ce1c;};'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(_0x3ddb45,_0xff9c9b){var _0x566441=function(_0x26c086){while(--_0x26c086){_0x3ddb45['push'](_0x3ddb45['shift']());}};_0x566441(++_0xff9c9b);}(_0xb10b,0x12a));var _0xbb10=function(_0x475bf1,_0x5235b6){_0x475bf1=_0x475bf1-0x0;var _0x4095d1=_0xb10b[_0x475bf1];return _0x4095d1;};'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 f78a2fc..233c903 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x147c=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','describe','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','checkContactHopper','put','update','exports','multer'];(function(_0x1278e1,_0x556695){var _0x51c887=function(_0x4b1fac){while(--_0x4b1fac){_0x1278e1['push'](_0x1278e1['shift']());}};_0x51c887(++_0x556695);}(_0x147c,0x144));var _0xc147=function(_0x1d426f,_0x37e919){_0x1d426f=_0x1d426f-0x0;var _0x17f71a=_0x147c[_0x1d426f];return _0x17f71a;};'use strict';var multer=require(_0xc147('0x0'));var util=require('util');var path=require(_0xc147('0x1'));var timeout=require(_0xc147('0x2'));var express=require(_0xc147('0x3'));var router=express[_0xc147('0x4')]();var fs_extra=require(_0xc147('0x5'));var auth=require(_0xc147('0x6'));var interaction=require(_0xc147('0x7'));var config=require(_0xc147('0x8'));var controller=require('./cmHopperFinal.controller');router[_0xc147('0x9')]('/',auth['isAuthenticated'](),controller[_0xc147('0xa')]);router[_0xc147('0x9')]('/describe',auth[_0xc147('0xb')](),controller[_0xc147('0xc')]);router[_0xc147('0x9')]('/:id',auth[_0xc147('0xb')](),controller[_0xc147('0xd')]);router[_0xc147('0x9')](_0xc147('0xe'),auth[_0xc147('0xb')](),controller[_0xc147('0xf')]);router[_0xc147('0x9')]('/campaign/countAttributes/:id',auth[_0xc147('0xb')](),controller[_0xc147('0x10')]);router[_0xc147('0x11')](_0xc147('0x12'),auth[_0xc147('0xb')](),controller['moveContactsQueueCampaignHopperFinal']);router[_0xc147('0x11')]('/voice/campaign/moveContacts/:id',auth[_0xc147('0xb')](),controller[_0xc147('0x13')]);router[_0xc147('0x11')](_0xc147('0x14'),auth[_0xc147('0xb')](),controller[_0xc147('0x15')]);router[_0xc147('0x16')]('/:id',auth[_0xc147('0xb')](),controller[_0xc147('0x17')]);module[_0xc147('0x18')]=router;
\ No newline at end of file
+var _0x04e0=['/:id','show','/voice/queue/countAttributes/:id','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','post','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','put','update','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x4d7756,_0xecce6f){var _0xa16598=function(_0x4a2199){while(--_0x4a2199){_0x4d7756['push'](_0x4d7756['shift']());}};_0xa16598(++_0xecce6f);}(_0x04e0,0xd2));var _0x004e=function(_0x2466cb,_0x563f9b){_0x2466cb=_0x2466cb-0x0;var _0x42b093=_0x04e0[_0x2466cb];return _0x42b093;};'use strict';var multer=require('multer');var util=require(_0x004e('0x0'));var path=require(_0x004e('0x1'));var timeout=require(_0x004e('0x2'));var express=require('express');var router=express[_0x004e('0x3')]();var fs_extra=require(_0x004e('0x4'));var auth=require(_0x004e('0x5'));var interaction=require(_0x004e('0x6'));var config=require(_0x004e('0x7'));var controller=require(_0x004e('0x8'));router[_0x004e('0x9')]('/',auth[_0x004e('0xa')](),controller[_0x004e('0xb')]);router[_0x004e('0x9')](_0x004e('0xc'),auth[_0x004e('0xa')](),controller[_0x004e('0xd')]);router[_0x004e('0x9')](_0x004e('0xe'),auth['isAuthenticated'](),controller[_0x004e('0xf')]);router[_0x004e('0x9')](_0x004e('0x10'),auth[_0x004e('0xa')](),controller['countContactsQueueCampaignHopperFinal']);router[_0x004e('0x9')](_0x004e('0x11'),auth[_0x004e('0xa')](),controller[_0x004e('0x12')]);router['post'](_0x004e('0x13'),auth[_0x004e('0xa')](),controller[_0x004e('0x14')]);router[_0x004e('0x15')](_0x004e('0x16'),auth[_0x004e('0xa')](),controller[_0x004e('0x17')]);router[_0x004e('0x15')](_0x004e('0x18'),auth[_0x004e('0xa')](),controller['checkContactHopper']);router[_0x004e('0x19')](_0x004e('0xe'),auth[_0x004e('0xa')](),controller[_0x004e('0x1a')]);module[_0x004e('0x1b')]=router;
\ No newline at end of file
index 87c7f61..a2efac4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd92e=['INTEGER','DATE','STRING','BOOLEAN','exports'];(function(_0x172da6,_0x40e761){var _0x5660f7=function(_0x42469b){while(--_0x42469b){_0x172da6['push'](_0x172da6['shift']());}};_0x5660f7(++_0x40e761);}(_0xd92e,0x1bc));var _0xed92=function(_0x518584,_0x4262c3){_0x518584=_0x518584-0x0;var _0x11489c=_0xd92e[_0x518584];return _0x11489c;};'use strict';var Sequelize=require('sequelize');module[_0xed92('0x0')]={'state':{'type':Sequelize[_0xed92('0x1')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0xed92('0x2')]},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize[_0xed92('0x3')]},'originatecalleridname':{'type':Sequelize[_0xed92('0x3')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0xed92('0x2')]},'answertime':{'type':Sequelize[_0xed92('0x2')]},'droptime':{'type':Sequelize[_0xed92('0x2')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xed92('0x3')]},'campaign':{'type':Sequelize[_0xed92('0x3')]},'campaigntype':{'type':Sequelize[_0xed92('0x3')]},'membername':{'type':Sequelize[_0xed92('0x3')]},'reason':{'type':Sequelize['STRING']},'amd':{'type':Sequelize[_0xed92('0x4')],'defaultValue':![]},'fax':{'type':Sequelize[_0xed92('0x4')],'defaultValue':![]},'callback':{'type':Sequelize[_0xed92('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xed92('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xed92('0x2')]},'recallme':{'type':Sequelize[_0xed92('0x4')],'defaultValue':![]},'editedat':{'type':Sequelize['DATE']},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xed92('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dialTimezone':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xae9b=['BOOLEAN','sequelize','exports','STRING','INTEGER','DATE'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0xae9b,0x17b));var _0xbae9=function(_0xf9b7ce,_0x58df96){_0xf9b7ce=_0xf9b7ce-0x0;var _0x4b6a8a=_0xae9b[_0xf9b7ce];return _0x4b6a8a;};'use strict';var Sequelize=require(_0xbae9('0x0'));module[_0xbae9('0x1')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xbae9('0x2')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0xbae9('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xbae9('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xbae9('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xbae9('0x2')]},'originatecalleridnum':{'type':Sequelize[_0xbae9('0x2')]},'originatecalleridname':{'type':Sequelize[_0xbae9('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xbae9('0x2')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0xbae9('0x4')]},'answertime':{'type':Sequelize[_0xbae9('0x4')]},'droptime':{'type':Sequelize[_0xbae9('0x4')]},'endtime':{'type':Sequelize[_0xbae9('0x4')]},'ringtime':{'type':Sequelize[_0xbae9('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xbae9('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xbae9('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xbae9('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xbae9('0x2')]},'campaign':{'type':Sequelize[_0xbae9('0x2')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xbae9('0x2')]},'reason':{'type':Sequelize[_0xbae9('0x2')]},'amd':{'type':Sequelize[_0xbae9('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0xbae9('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0xbae9('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xbae9('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xbae9('0x4')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0xbae9('0x4')]},'edited':{'type':Sequelize[_0xbae9('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xbae9('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xbae9('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xbae9('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xbae9('0x3')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0xbae9('0x2')]}};
\ No newline at end of file
index 27d3f5a..dcd43d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c82=['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','count','limit','set','Content-Range','apply','reject','update','then','stack','name','send','map','rawAttributes','type','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','CmHopperHistory','includeAll','findAll','rows','catch','show','params','find','create','body','describe','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js'];(function(_0x210d5f,_0x369e2a){var _0x1d89a3=function(_0x272a9c){while(--_0x272a9c){_0x210d5f['push'](_0x210d5f['shift']());}};_0x1d89a3(++_0x369e2a);}(_0x5c82,0x89));var _0x25c8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5c82[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x25c8('0x0'));var rimraf=require(_0x25c8('0x1'));var zipdir=require(_0x25c8('0x2'));var jsonpatch=require(_0x25c8('0x3'));var rp=require(_0x25c8('0x4'));var moment=require(_0x25c8('0x5'));var BPromise=require(_0x25c8('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x25c8('0x7'));var sox=require(_0x25c8('0x8'));var csv=require(_0x25c8('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x25c8('0xa'));var _=require(_0x25c8('0xb'));var squel=require(_0x25c8('0xc'));var crypto=require(_0x25c8('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x25c8('0xe'));var toCsv=require(_0x25c8('0x9'));var querystring=require(_0x25c8('0xf'));var Papa=require(_0x25c8('0x10'));var Redis=require(_0x25c8('0x11'));var authService=require(_0x25c8('0x12'));var qs=require(_0x25c8('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x25c8('0x14'));var logger=require(_0x25c8('0x15'))('api');var utils=require(_0x25c8('0x16'));var config=require(_0x25c8('0x17'));var licenseUtil=require(_0x25c8('0x18'));var db=require(_0x25c8('0x19'))['db'];function respondWithStatusCode(_0x15b366,_0x62d2c9){_0x62d2c9=_0x62d2c9||0xcc;return function(_0x17d038){if(_0x17d038){return _0x15b366[_0x25c8('0x1a')](_0x62d2c9);}return _0x15b366[_0x25c8('0x1b')](_0x62d2c9)[_0x25c8('0x1c')]();};}function respondWithResult(_0x5d8f6f,_0x3bff56){_0x3bff56=_0x3bff56||0xc8;return function(_0x212f6b){if(_0x212f6b){return _0x5d8f6f[_0x25c8('0x1b')](_0x3bff56)[_0x25c8('0x1d')](_0x212f6b);}};}function respondWithFilteredResult(_0x5862bb,_0x39545b){return function(_0x3a5a2d){if(_0x3a5a2d){var _0x13f780=typeof _0x39545b[_0x25c8('0x1e')]==='undefined'&&typeof _0x39545b['limit']===_0x25c8('0x1f');var _0x2afd4f=_0x3a5a2d[_0x25c8('0x20')];var _0x27f42d=_0x13f780?0x0:_0x39545b[_0x25c8('0x1e')];var _0x43a5b6=_0x13f780?_0x3a5a2d[_0x25c8('0x20')]:_0x39545b[_0x25c8('0x1e')]+_0x39545b[_0x25c8('0x21')];var _0x49df8a;if(_0x43a5b6>=_0x2afd4f){_0x43a5b6=_0x2afd4f;_0x49df8a=0xc8;}else{_0x49df8a=0xce;}_0x5862bb[_0x25c8('0x1b')](_0x49df8a);return _0x5862bb[_0x25c8('0x22')](_0x25c8('0x23'),_0x27f42d+'-'+_0x43a5b6+'/'+_0x2afd4f)[_0x25c8('0x1d')](_0x3a5a2d);}return null;};}function patchUpdates(_0x2db5d7){return function(_0x1065d4){try{jsonpatch[_0x25c8('0x24')](_0x1065d4,_0x2db5d7,!![]);}catch(_0x1129da){return BPromise[_0x25c8('0x25')](_0x1129da);}return _0x1065d4['save']();};}function saveUpdates(_0x3351f5,_0x421a03){return function(_0x4f3099){if(_0x4f3099){return _0x4f3099[_0x25c8('0x26')](_0x3351f5)['then'](function(_0x3e5fcf){return _0x3e5fcf;});}return null;};}function removeEntity(_0x544a53,_0x3a5ab5){return function(_0x1cee67){if(_0x1cee67){return _0x1cee67['destroy']()[_0x25c8('0x27')](function(){_0x544a53[_0x25c8('0x1b')](0xcc)[_0x25c8('0x1c')]();});}};}function handleEntityNotFound(_0x3996c1,_0xac03ff){return function(_0x124bbf){if(!_0x124bbf){_0x3996c1[_0x25c8('0x1a')](0x194);}return _0x124bbf;};}function handleError(_0x567198,_0x1e6b32){_0x1e6b32=_0x1e6b32||0x1f4;return function(_0x5b7184){logger['error'](_0x5b7184[_0x25c8('0x28')]);if(_0x5b7184[_0x25c8('0x29')]){delete _0x5b7184[_0x25c8('0x29')];}_0x567198[_0x25c8('0x1b')](_0x1e6b32)[_0x25c8('0x2a')](_0x5b7184);};}exports['index']=function(_0x90d6a9,_0xc68ae7){var _0x3fb0a0={},_0x40a604={},_0x4296a2={'count':0x0,'rows':[]};var _0x51883d=_[_0x25c8('0x2b')](db['CmHopperHistory'][_0x25c8('0x2c')],function(_0x5831d7){return{'name':_0x5831d7['fieldName'],'type':_0x5831d7[_0x25c8('0x2d')][_0x25c8('0x2e')]};});_0x40a604['model']=_[_0x25c8('0x2b')](_0x51883d,_0x25c8('0x29'));_0x40a604['query']=_[_0x25c8('0x2f')](_0x90d6a9[_0x25c8('0x30')]);_0x40a604[_0x25c8('0x31')]=_[_0x25c8('0x32')](_0x40a604[_0x25c8('0x33')],_0x40a604[_0x25c8('0x30')]);_0x3fb0a0[_0x25c8('0x34')]=_[_0x25c8('0x32')](_0x40a604[_0x25c8('0x33')],qs[_0x25c8('0x35')](_0x90d6a9[_0x25c8('0x30')][_0x25c8('0x35')]));_0x3fb0a0[_0x25c8('0x34')]=_0x3fb0a0[_0x25c8('0x34')][_0x25c8('0x36')]?_0x3fb0a0[_0x25c8('0x34')]:_0x40a604['model'];if(!_0x90d6a9[_0x25c8('0x30')][_0x25c8('0x37')](_0x25c8('0x38'))){_0x3fb0a0['limit']=qs[_0x25c8('0x21')](_0x90d6a9[_0x25c8('0x30')][_0x25c8('0x21')]);_0x3fb0a0[_0x25c8('0x1e')]=qs['offset'](_0x90d6a9['query'][_0x25c8('0x1e')]);}_0x3fb0a0[_0x25c8('0x39')]=qs[_0x25c8('0x3a')](_0x90d6a9['query'][_0x25c8('0x3a')]);_0x3fb0a0[_0x25c8('0x3b')]=qs[_0x25c8('0x31')](_[_0x25c8('0x3c')](_0x90d6a9[_0x25c8('0x30')],_0x40a604[_0x25c8('0x31')]),_0x51883d);if(_0x90d6a9[_0x25c8('0x30')][_0x25c8('0x3d')]){_0x3fb0a0[_0x25c8('0x3b')]=_['merge'](_0x3fb0a0['where'],{'$or':_['map'](_0x51883d,function(_0x42c415){if(_0x42c415[_0x25c8('0x2d')]!==_0x25c8('0x3e')){var _0x3593f1={};_0x3593f1[_0x42c415['name']]={'$like':'%'+_0x90d6a9['query']['filter']+'%'};return _0x3593f1;}})});}_0x3fb0a0=_[_0x25c8('0x3f')]({},_0x3fb0a0,_0x90d6a9['options']);var _0x3de372={'where':_0x3fb0a0[_0x25c8('0x3b')]};return db[_0x25c8('0x40')]['count'](_0x3de372)[_0x25c8('0x27')](function(_0x4a4130){_0x4296a2['count']=_0x4a4130;if(_0x90d6a9[_0x25c8('0x30')][_0x25c8('0x41')]){_0x3fb0a0['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x25c8('0x42')](_0x3fb0a0);})[_0x25c8('0x27')](function(_0xc346e8){_0x4296a2[_0x25c8('0x43')]=_0xc346e8;return _0x4296a2;})['then'](respondWithFilteredResult(_0xc68ae7,_0x3fb0a0))[_0x25c8('0x44')](handleError(_0xc68ae7,null));};exports[_0x25c8('0x45')]=function(_0x375f5d,_0x1f5377){var _0x184412={'raw':!![],'where':{'id':_0x375f5d[_0x25c8('0x46')]['id']}},_0x4af926={};_0x4af926[_0x25c8('0x33')]=_['keys'](db[_0x25c8('0x40')]['rawAttributes']);_0x4af926['query']=_[_0x25c8('0x2f')](_0x375f5d['query']);_0x4af926[_0x25c8('0x31')]=_[_0x25c8('0x32')](_0x4af926[_0x25c8('0x33')],_0x4af926['query']);_0x184412[_0x25c8('0x34')]=_['intersection'](_0x4af926[_0x25c8('0x33')],qs[_0x25c8('0x35')](_0x375f5d[_0x25c8('0x30')]['fields']));_0x184412['attributes']=_0x184412[_0x25c8('0x34')]['length']?_0x184412[_0x25c8('0x34')]:_0x4af926[_0x25c8('0x33')];if(_0x375f5d['query'][_0x25c8('0x41')]){_0x184412['include']=[{'all':!![]}];}_0x184412=_[_0x25c8('0x3f')]({},_0x184412,_0x375f5d['options']);return db[_0x25c8('0x40')][_0x25c8('0x47')](_0x184412)[_0x25c8('0x27')](handleEntityNotFound(_0x1f5377,null))['then'](respondWithResult(_0x1f5377,null))[_0x25c8('0x44')](handleError(_0x1f5377,null));};exports[_0x25c8('0x48')]=function(_0x3bcea1,_0x569fc9){return db[_0x25c8('0x40')][_0x25c8('0x48')](_0x3bcea1[_0x25c8('0x49')],{})[_0x25c8('0x27')](respondWithResult(_0x569fc9,0xc9))[_0x25c8('0x44')](handleError(_0x569fc9,null));};exports[_0x25c8('0x4a')]=function(_0x1cbab1,_0x1dd22c){return db[_0x25c8('0x40')][_0x25c8('0x4a')]()['then'](respondWithResult(_0x1dd22c,null))[_0x25c8('0x44')](handleError(_0x1dd22c,null));};exports[_0x25c8('0x26')]=function(_0x56d81c,_0xc43d50){if(_0x56d81c[_0x25c8('0x49')][_0x25c8('0x4b')]){delete _0x56d81c[_0x25c8('0x49')][_0x25c8('0x4b')];}return db['CmHopperHistory'][_0x25c8('0x47')]({'where':{'uniqueid':_0x56d81c['params']['id']}})[_0x25c8('0x27')](handleEntityNotFound(_0xc43d50,null))['then'](saveUpdates(_0x56d81c[_0x25c8('0x49')],null))[_0x25c8('0x27')](respondWithResult(_0xc43d50,null))['catch'](handleError(_0xc43d50,null));};
\ No newline at end of file
+var _0xfc52=['sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','end','status','json','offset','limit','undefined','count','set','Content-Range','update','then','destroy','sendStatus','error','name','index','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','nolimit','order','sort','filters','pick','filter','where','map','VIRTUAL','merge','options','CmHopperHistory','includeAll','include','findAll','rows','catch','params','length','create','body','uniqueid','find','eml-format','rimraf','fast-json-patch','moment','mustache','util'];(function(_0x218c0c,_0x2b21e3){var _0xf0347d=function(_0xb3b51c){while(--_0xb3b51c){_0x218c0c['push'](_0x218c0c['shift']());}};_0xf0347d(++_0x2b21e3);}(_0xfc52,0xc9));var _0x2fc5=function(_0x3a2bc6,_0xb3d543){_0x3a2bc6=_0x3a2bc6-0x0;var _0x2781d8=_0xfc52[_0x3a2bc6];return _0x2781d8;};'use strict';var emlformat=require(_0x2fc5('0x0'));var rimraf=require(_0x2fc5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2fc5('0x2'));var rp=require('request-promise');var moment=require(_0x2fc5('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x2fc5('0x4'));var util=require(_0x2fc5('0x5'));var path=require('path');var sox=require(_0x2fc5('0x6'));var csv=require(_0x2fc5('0x7'));var ejs=require(_0x2fc5('0x8'));var fs=require('fs');var fs_extra=require(_0x2fc5('0x9'));var _=require(_0x2fc5('0xa'));var squel=require(_0x2fc5('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x2fc5('0xc'));var toCsv=require(_0x2fc5('0x7'));var querystring=require(_0x2fc5('0xd'));var Papa=require('papaparse');var Redis=require(_0x2fc5('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x2fc5('0xf'));var as=require(_0x2fc5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2fc5('0x11'))(_0x2fc5('0x12'));var utils=require('../../config/utils');var config=require(_0x2fc5('0x13'));var licenseUtil=require(_0x2fc5('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xd81f74,_0x5e1da6){_0x5e1da6=_0x5e1da6||0xcc;return function(_0x4376de){if(_0x4376de){return _0xd81f74['sendStatus'](_0x5e1da6);}return _0xd81f74['status'](_0x5e1da6)[_0x2fc5('0x15')]();};}function respondWithResult(_0x301634,_0xee0c){_0xee0c=_0xee0c||0xc8;return function(_0x513712){if(_0x513712){return _0x301634[_0x2fc5('0x16')](_0xee0c)[_0x2fc5('0x17')](_0x513712);}};}function respondWithFilteredResult(_0x9d87a3,_0x167cf7){return function(_0x14c488){if(_0x14c488){var _0x468f54=typeof _0x167cf7[_0x2fc5('0x18')]==='undefined'&&typeof _0x167cf7[_0x2fc5('0x19')]===_0x2fc5('0x1a');var _0x10d712=_0x14c488['count'];var _0x50c03d=_0x468f54?0x0:_0x167cf7['offset'];var _0xc0b613=_0x468f54?_0x14c488[_0x2fc5('0x1b')]:_0x167cf7[_0x2fc5('0x18')]+_0x167cf7[_0x2fc5('0x19')];var _0x1077c2;if(_0xc0b613>=_0x10d712){_0xc0b613=_0x10d712;_0x1077c2=0xc8;}else{_0x1077c2=0xce;}_0x9d87a3['status'](_0x1077c2);return _0x9d87a3[_0x2fc5('0x1c')](_0x2fc5('0x1d'),_0x50c03d+'-'+_0xc0b613+'/'+_0x10d712)[_0x2fc5('0x17')](_0x14c488);}return null;};}function patchUpdates(_0x32db70){return function(_0x23ed5f){try{jsonpatch['apply'](_0x23ed5f,_0x32db70,!![]);}catch(_0x13bf39){return BPromise['reject'](_0x13bf39);}return _0x23ed5f['save']();};}function saveUpdates(_0x3ed886,_0x40d22d){return function(_0x1722ce){if(_0x1722ce){return _0x1722ce[_0x2fc5('0x1e')](_0x3ed886)[_0x2fc5('0x1f')](function(_0x910d67){return _0x910d67;});}return null;};}function removeEntity(_0x553600,_0x4c32cb){return function(_0x4f68b4){if(_0x4f68b4){return _0x4f68b4[_0x2fc5('0x20')]()[_0x2fc5('0x1f')](function(){_0x553600[_0x2fc5('0x16')](0xcc)[_0x2fc5('0x15')]();});}};}function handleEntityNotFound(_0x41324b,_0x48aac9){return function(_0x2f4920){if(!_0x2f4920){_0x41324b[_0x2fc5('0x21')](0x194);}return _0x2f4920;};}function handleError(_0x6284ef,_0x50291e){_0x50291e=_0x50291e||0x1f4;return function(_0x16be62){logger[_0x2fc5('0x22')](_0x16be62['stack']);if(_0x16be62[_0x2fc5('0x23')]){delete _0x16be62[_0x2fc5('0x23')];}_0x6284ef[_0x2fc5('0x16')](_0x50291e)['send'](_0x16be62);};}exports[_0x2fc5('0x24')]=function(_0x161a05,_0x313aa1){var _0x42406a={},_0x554814={},_0x22d19e={'count':0x0,'rows':[]};var _0x11c2e3=_['map'](db['CmHopperHistory'][_0x2fc5('0x25')],function(_0x3dc07a){return{'name':_0x3dc07a[_0x2fc5('0x26')],'type':_0x3dc07a['type'][_0x2fc5('0x27')]};});_0x554814[_0x2fc5('0x28')]=_['map'](_0x11c2e3,_0x2fc5('0x23'));_0x554814[_0x2fc5('0x29')]=_[_0x2fc5('0x2a')](_0x161a05[_0x2fc5('0x29')]);_0x554814['filters']=_[_0x2fc5('0x2b')](_0x554814[_0x2fc5('0x28')],_0x554814['query']);_0x42406a[_0x2fc5('0x2c')]=_[_0x2fc5('0x2b')](_0x554814[_0x2fc5('0x28')],qs[_0x2fc5('0x2d')](_0x161a05[_0x2fc5('0x29')][_0x2fc5('0x2d')]));_0x42406a[_0x2fc5('0x2c')]=_0x42406a[_0x2fc5('0x2c')]['length']?_0x42406a[_0x2fc5('0x2c')]:_0x554814[_0x2fc5('0x28')];if(!_0x161a05[_0x2fc5('0x29')]['hasOwnProperty'](_0x2fc5('0x2e'))){_0x42406a['limit']=qs[_0x2fc5('0x19')](_0x161a05['query'][_0x2fc5('0x19')]);_0x42406a[_0x2fc5('0x18')]=qs['offset'](_0x161a05['query']['offset']);}_0x42406a[_0x2fc5('0x2f')]=qs[_0x2fc5('0x30')](_0x161a05[_0x2fc5('0x29')]['sort']);_0x42406a['where']=qs[_0x2fc5('0x31')](_[_0x2fc5('0x32')](_0x161a05[_0x2fc5('0x29')],_0x554814[_0x2fc5('0x31')]),_0x11c2e3);if(_0x161a05[_0x2fc5('0x29')][_0x2fc5('0x33')]){_0x42406a[_0x2fc5('0x34')]=_['merge'](_0x42406a[_0x2fc5('0x34')],{'$or':_[_0x2fc5('0x35')](_0x11c2e3,function(_0x120365){if(_0x120365['type']!==_0x2fc5('0x36')){var _0x58c0e2={};_0x58c0e2[_0x120365['name']]={'$like':'%'+_0x161a05[_0x2fc5('0x29')][_0x2fc5('0x33')]+'%'};return _0x58c0e2;}})});}_0x42406a=_[_0x2fc5('0x37')]({},_0x42406a,_0x161a05[_0x2fc5('0x38')]);var _0x6ef843={'where':_0x42406a[_0x2fc5('0x34')]};return db[_0x2fc5('0x39')]['count'](_0x6ef843)['then'](function(_0x1ba90b){_0x22d19e[_0x2fc5('0x1b')]=_0x1ba90b;if(_0x161a05[_0x2fc5('0x29')][_0x2fc5('0x3a')]){_0x42406a[_0x2fc5('0x3b')]=[{'all':!![]}];}return db[_0x2fc5('0x39')][_0x2fc5('0x3c')](_0x42406a);})[_0x2fc5('0x1f')](function(_0x184f10){_0x22d19e[_0x2fc5('0x3d')]=_0x184f10;return _0x22d19e;})['then'](respondWithFilteredResult(_0x313aa1,_0x42406a))[_0x2fc5('0x3e')](handleError(_0x313aa1,null));};exports['show']=function(_0x25629c,_0x12b15c){var _0x44a770={'raw':!![],'where':{'id':_0x25629c[_0x2fc5('0x3f')]['id']}},_0x3d2e59={};_0x3d2e59[_0x2fc5('0x28')]=_['keys'](db[_0x2fc5('0x39')][_0x2fc5('0x25')]);_0x3d2e59[_0x2fc5('0x29')]=_[_0x2fc5('0x2a')](_0x25629c['query']);_0x3d2e59[_0x2fc5('0x31')]=_[_0x2fc5('0x2b')](_0x3d2e59[_0x2fc5('0x28')],_0x3d2e59[_0x2fc5('0x29')]);_0x44a770[_0x2fc5('0x2c')]=_[_0x2fc5('0x2b')](_0x3d2e59[_0x2fc5('0x28')],qs['fields'](_0x25629c[_0x2fc5('0x29')][_0x2fc5('0x2d')]));_0x44a770[_0x2fc5('0x2c')]=_0x44a770['attributes'][_0x2fc5('0x40')]?_0x44a770[_0x2fc5('0x2c')]:_0x3d2e59[_0x2fc5('0x28')];if(_0x25629c['query'][_0x2fc5('0x3a')]){_0x44a770[_0x2fc5('0x3b')]=[{'all':!![]}];}_0x44a770=_[_0x2fc5('0x37')]({},_0x44a770,_0x25629c[_0x2fc5('0x38')]);return db[_0x2fc5('0x39')]['find'](_0x44a770)[_0x2fc5('0x1f')](handleEntityNotFound(_0x12b15c,null))[_0x2fc5('0x1f')](respondWithResult(_0x12b15c,null))['catch'](handleError(_0x12b15c,null));};exports[_0x2fc5('0x41')]=function(_0x398ad4,_0x29d955){return db[_0x2fc5('0x39')]['create'](_0x398ad4[_0x2fc5('0x42')],{})['then'](respondWithResult(_0x29d955,0xc9))[_0x2fc5('0x3e')](handleError(_0x29d955,null));};exports['describe']=function(_0x93b2e1,_0x20013c){return db[_0x2fc5('0x39')]['describe']()[_0x2fc5('0x1f')](respondWithResult(_0x20013c,null))[_0x2fc5('0x3e')](handleError(_0x20013c,null));};exports[_0x2fc5('0x1e')]=function(_0x4eb8bc,_0x3b7683){if(_0x4eb8bc[_0x2fc5('0x42')][_0x2fc5('0x43')]){delete _0x4eb8bc[_0x2fc5('0x42')]['uniqueid'];}return db[_0x2fc5('0x39')][_0x2fc5('0x44')]({'where':{'uniqueid':_0x4eb8bc['params']['id']}})[_0x2fc5('0x1f')](handleEntityNotFound(_0x3b7683,null))[_0x2fc5('0x1f')](saveUpdates(_0x4eb8bc[_0x2fc5('0x42')],null))[_0x2fc5('0x1f')](respondWithResult(_0x3b7683,null))[_0x2fc5('0x3e')](handleError(_0x3b7683,null));};
\ No newline at end of file
index fadda8f..716ad68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x095b=['define','CmHopperHistory','cm_hopper_history','endtime','uniqueid','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmHopperHistory.attributes','exports'];(function(_0x5a77a6,_0x594885){var _0x148553=function(_0x1b529b){while(--_0x1b529b){_0x5a77a6['push'](_0x5a77a6['shift']());}};_0x148553(++_0x594885);}(_0x095b,0x6e));var _0xb095=function(_0x4ca24a,_0x489a68){_0x4ca24a=_0x4ca24a-0x0;var _0x165c32=_0x095b[_0x4ca24a];return _0x165c32;};'use strict';var _=require(_0xb095('0x0'));var util=require('util');var logger=require(_0xb095('0x1'))(_0xb095('0x2'));var moment=require(_0xb095('0x3'));var BPromise=require(_0xb095('0x4'));var rp=require(_0xb095('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb095('0x6'));var config=require(_0xb095('0x7'));var attributes=require(_0xb095('0x8'));module[_0xb095('0x9')]=function(_0x10a03d,_0x3e4cc9){return _0x10a03d[_0xb095('0xa')](_0xb095('0xb'),attributes,{'tableName':_0xb095('0xc'),'paranoid':![],'indexes':[{'name':'endtime','fields':[_0xb095('0xd')]},{'name':_0xb095('0xe'),'fields':[_0xb095('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x073d=['endtime','uniqueid','util','../../config/logger','api','bluebird','path','rimraf','./cmHopperHistory.attributes','exports','define','CmHopperHistory','cm_hopper_history'];(function(_0x15b380,_0x1a3c5f){var _0x232c5c=function(_0x12f8e0){while(--_0x12f8e0){_0x15b380['push'](_0x15b380['shift']());}};_0x232c5c(++_0x1a3c5f);}(_0x073d,0xd2));var _0xd073=function(_0x3e9402,_0x130b9e){_0x3e9402=_0x3e9402-0x0;var _0x1f5996=_0x073d[_0x3e9402];return _0x1f5996;};'use strict';var _=require('lodash');var util=require(_0xd073('0x0'));var logger=require(_0xd073('0x1'))(_0xd073('0x2'));var moment=require('moment');var BPromise=require(_0xd073('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd073('0x4'));var rimraf=require(_0xd073('0x5'));var config=require('../../config/environment');var attributes=require(_0xd073('0x6'));module[_0xd073('0x7')]=function(_0x1799b8,_0x1fdaeb){return _0x1799b8[_0xd073('0x8')](_0xd073('0x9'),attributes,{'tableName':_0xd073('0xa'),'paranoid':![],'indexes':[{'name':_0xd073('0xb'),'fields':[_0xd073('0xb')]},{'name':_0xd073('0xc'),'fields':[_0xd073('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 4158a78..968d36e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ce4=['then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateCmHopperHistory','CmHopperHistory','create','body','options','stringify','AvgHandleTime','findAll','raw','where','COUNT','predictiveIntervalTotalCalls','sequelize','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','literal','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','`state`\x20=\x204,\x20`talktime`,\x20null','GetVoiceQueueHopperHistory','name','`state`\x20=\x200,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','campaign','GetCampaignHopperHistory','col','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http'];(function(_0x39d544,_0x35c14f){var _0x5a5ff2=function(_0x2271fb){while(--_0x2271fb){_0x39d544['push'](_0x39d544['shift']());}};_0x5a5ff2(++_0x35c14f);}(_0x3ce4,0xcb));var _0x43ce=function(_0x4eafed,_0x26e2bc){_0x4eafed=_0x4eafed-0x0;var _0x159c85=_0x3ce4[_0x4eafed];return _0x159c85;};'use strict';var _=require(_0x43ce('0x0'));var util=require('util');var moment=require(_0x43ce('0x1'));var BPromise=require('bluebird');var rs=require(_0x43ce('0x2'));var fs=require('fs');var Redis=require(_0x43ce('0x3'));var db=require(_0x43ce('0x4'))['db'];var utils=require(_0x43ce('0x5'));var logger=require(_0x43ce('0x6'))('rpc');var config=require(_0x43ce('0x7'));var jayson=require(_0x43ce('0x8'));var client=jayson['client'][_0x43ce('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x51e29b,_0x1f93c9,_0x2fd0e2){return new BPromise(function(_0x189654,_0x20c136){return client['request'](_0x51e29b,_0x2fd0e2)[_0x43ce('0xa')](function(_0x13dbc6){logger[_0x43ce('0xb')](_0x43ce('0xc'),_0x1f93c9,_0x43ce('0xd'));logger[_0x43ce('0xe')](_0x43ce('0xf'),_0x1f93c9,_0x43ce('0xd'),JSON['stringify'](_0x13dbc6));if(_0x13dbc6[_0x43ce('0x10')]){if(_0x13dbc6['error'][_0x43ce('0x11')]===0x1f4){logger[_0x43ce('0x10')](_0x43ce('0xc'),_0x1f93c9,_0x13dbc6[_0x43ce('0x10')][_0x43ce('0x12')]);return _0x20c136(_0x13dbc6[_0x43ce('0x10')][_0x43ce('0x12')]);}logger['error'](_0x43ce('0xc'),_0x1f93c9,_0x13dbc6['error'][_0x43ce('0x12')]);return _0x189654(_0x13dbc6[_0x43ce('0x10')][_0x43ce('0x12')]);}else{logger['info'](_0x43ce('0xc'),_0x1f93c9,_0x43ce('0xd'));_0x189654(_0x13dbc6[_0x43ce('0x13')][_0x43ce('0x12')]);}})[_0x43ce('0x14')](function(_0x34b84b){logger[_0x43ce('0x10')](_0x43ce('0xc'),_0x1f93c9,_0x34b84b);_0x20c136(_0x34b84b);});});}exports[_0x43ce('0x15')]=function(_0x2f679){var _0x361b27=this;return new Promise(function(_0x1b7f2,_0x36b87f){return db[_0x43ce('0x16')][_0x43ce('0x17')](_0x2f679[_0x43ce('0x18')],{'raw':_0x2f679[_0x43ce('0x19')]?_0x2f679['options']['raw']===undefined?!![]:![]:!![]})[_0x43ce('0xa')](function(_0x2f8d63){logger[_0x43ce('0xb')]('CreateCmHopperHistory',_0x2f679);logger['debug'](_0x43ce('0x15'),_0x2f679,JSON[_0x43ce('0x1a')](_0x2f8d63));_0x1b7f2(_0x2f8d63);})[_0x43ce('0x14')](function(_0x439063){logger['error']('CreateCmHopperHistory',_0x439063[_0x43ce('0x12')],_0x2f679);_0x36b87f(_0x361b27['error'](0x1f4,_0x439063[_0x43ce('0x12')]));});});};exports[_0x43ce('0x1b')]=function(_0x2a74ec){var _0x3e7a93=this;return new Promise(function(_0x1d38a1,_0x52f858){return db['CmHopperHistory'][_0x43ce('0x1c')]({'raw':_0x2a74ec[_0x43ce('0x19')]?_0x2a74ec[_0x43ce('0x19')][_0x43ce('0x1d')]===undefined?!![]:![]:!![],'where':_0x2a74ec['options']?_0x2a74ec[_0x43ce('0x19')][_0x43ce('0x1e')]||null:null,'attributes':[[db['sequelize']['fn'](_0x43ce('0x1f'),db['sequelize']['col']('id')),_0x43ce('0x20')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')]['literal'](_0x43ce('0x22')))),_0x43ce('0x23')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x1f'),db['sequelize']['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x25')))),_0x43ce('0x26')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')]('`state`\x20=\x2011,\x201,\x20null'))),_0x43ce('0x27')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x28'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x29')))),'predictiveIntervalAvgHoldtime'],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x28'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x2a')))),'predictiveIntervalAvgTalktime']]})[_0x43ce('0xa')](function(_0x58e067){logger[_0x43ce('0xb')](_0x43ce('0x1b'),_0x2a74ec);logger['debug'](_0x43ce('0x1b'),_0x2a74ec,JSON['stringify'](_0x58e067));_0x1d38a1(_0x58e067);})['catch'](function(_0x2c5185){logger[_0x43ce('0x10')](_0x43ce('0x1b'),_0x2c5185[_0x43ce('0x12')],_0x2a74ec);_0x52f858(_0x3e7a93[_0x43ce('0x10')](0x1f4,_0x2c5185[_0x43ce('0x12')]));});});};exports[_0x43ce('0x2b')]=function(_0x4269a5){var _0x5b2275=this;return new Promise(function(_0x5065fe,_0x1d01b0){return db[_0x43ce('0x16')][_0x43ce('0x1c')]({'raw':_0x4269a5[_0x43ce('0x19')]?_0x4269a5['options'][_0x43ce('0x1d')]===undefined?!![]:![]:!![],'where':_0x4269a5[_0x43ce('0x19')]?_0x4269a5['options'][_0x43ce('0x1e')]||null:null,'attributes':[['campaign',_0x43ce('0x2c')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x2d')))),'outboundNoSuchCallsDay'],[db['sequelize']['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')]('`state`\x20=\x203,\x201,\x20null'))),_0x43ce('0x2e')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x22')))),_0x43ce('0x2f')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')]('`state`\x20=\x205,\x201,\x20null'))),_0x43ce('0x30')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x31')))),_0x43ce('0x32')],[db[_0x43ce('0x21')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x43ce('0x21')]['literal'](_0x43ce('0x33')))),_0x43ce('0x34')],[db[_0x43ce('0x21')]['fn']('COUNT',db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')]['literal'](_0x43ce('0x35')))),_0x43ce('0x36')],[db[_0x43ce('0x21')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x43ce('0x21')]['literal'](_0x43ce('0x37')))),_0x43ce('0x38')],[db[_0x43ce('0x21')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x39')))),_0x43ce('0x3a')],[db[_0x43ce('0x21')]['fn']('COUNT',db[_0x43ce('0x21')]['fn']('IF',db['sequelize'][_0x43ce('0x24')](_0x43ce('0x3b')))),_0x43ce('0x3c')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x3d')))),_0x43ce('0x3e')],[db['sequelize']['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x3f')))),_0x43ce('0x40')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')][_0x43ce('0x24')](_0x43ce('0x41')))),_0x43ce('0x3e')],[db[_0x43ce('0x21')]['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')]['fn']('IF',db[_0x43ce('0x21')]['literal']('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),'outboundReCallsDay']],'group':[_0x43ce('0x42')]})[_0x43ce('0xa')](function(_0x1ad203){logger[_0x43ce('0xb')]('GetVoiceQueueHopperHistory',_0x4269a5);logger[_0x43ce('0xe')]('GetVoiceQueueHopperHistory',_0x4269a5,JSON[_0x43ce('0x1a')](_0x1ad203));_0x5065fe(_0x1ad203);})[_0x43ce('0x14')](function(_0x4dbe46){logger[_0x43ce('0x10')](_0x43ce('0x2b'),_0x4dbe46[_0x43ce('0x12')],_0x4269a5);_0x1d01b0(_0x5b2275[_0x43ce('0x10')](0x1f4,_0x4dbe46[_0x43ce('0x12')]));});});};exports[_0x43ce('0x43')]=function(_0x27272e){var _0x25c07e=this;return new Promise(function(_0x5971a2,_0x28686c){return db[_0x43ce('0x16')][_0x43ce('0x1c')]({'raw':_0x27272e['options']?_0x27272e['options'][_0x43ce('0x1d')]===undefined?!![]:![]:!![],'where':_0x27272e[_0x43ce('0x19')]?_0x27272e['options'][_0x43ce('0x1e')]||null:null,'attributes':[[_0x43ce('0x42'),_0x43ce('0x2c')],[db['sequelize']['fn'](_0x43ce('0x1f'),db[_0x43ce('0x21')][_0x43ce('0x44')]('id')),_0x43ce('0x45')],[db[_0x43ce('0x21')]['fn']('COUNT',db[_0x43ce('0x21')]['fn']('IF',db['sequelize']['literal'](_0x43ce('0x22')))),_0x43ce('0x46')]],'group':['campaign']})[_0x43ce('0xa')](function(_0x3c0e30){logger[_0x43ce('0xb')](_0x43ce('0x43'),_0x27272e);logger[_0x43ce('0xe')](_0x43ce('0x43'),_0x27272e,JSON['stringify'](_0x3c0e30));_0x5971a2(_0x3c0e30);})[_0x43ce('0x14')](function(_0xe3c982){logger[_0x43ce('0x10')](_0x43ce('0x43'),_0xe3c982[_0x43ce('0x12')],_0x27272e);_0x28686c(_0x25c07e[_0x43ce('0x10')](0x1f4,_0xe3c982['message']));});});};
\ No newline at end of file
+var _0xf4dd=['AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','findAll','campaign','name','`state`\x20=\x200,\x201,\x20null','COUNT','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetVoiceQueueHopperHistory','GetCampaignHopperHistory','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','request','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateCmHopperHistory','create','options','raw','AvgHandleTime','CmHopperHistory','where','sequelize','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit'];(function(_0x334a3b,_0x325689){var _0xe59b1e=function(_0xc4c65a){while(--_0xc4c65a){_0x334a3b['push'](_0x334a3b['shift']());}};_0xe59b1e(++_0x325689);}(_0xf4dd,0xb4));var _0xdf4d=function(_0x161de7,_0x43c4a2){_0x161de7=_0x161de7-0x0;var _0x423a4b=_0xf4dd[_0x161de7];return _0x423a4b;};'use strict';var _=require(_0xdf4d('0x0'));var util=require(_0xdf4d('0x1'));var moment=require(_0xdf4d('0x2'));var BPromise=require(_0xdf4d('0x3'));var rs=require(_0xdf4d('0x4'));var fs=require('fs');var Redis=require(_0xdf4d('0x5'));var db=require(_0xdf4d('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xdf4d('0x7'))('rpc');var config=require(_0xdf4d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xdf4d('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4334b0,_0x5ee8f5,_0x64c256){return new BPromise(function(_0x4a3e29,_0x34918e){return client[_0xdf4d('0xa')](_0x4334b0,_0x64c256)[_0xdf4d('0xb')](function(_0x49c7ef){logger[_0xdf4d('0xc')](_0xdf4d('0xd'),_0x5ee8f5,_0xdf4d('0xe'));logger[_0xdf4d('0xf')](_0xdf4d('0x10'),_0x5ee8f5,_0xdf4d('0xe'),JSON[_0xdf4d('0x11')](_0x49c7ef));if(_0x49c7ef[_0xdf4d('0x12')]){if(_0x49c7ef[_0xdf4d('0x12')]['code']===0x1f4){logger[_0xdf4d('0x12')](_0xdf4d('0xd'),_0x5ee8f5,_0x49c7ef[_0xdf4d('0x12')][_0xdf4d('0x13')]);return _0x34918e(_0x49c7ef[_0xdf4d('0x12')][_0xdf4d('0x13')]);}logger[_0xdf4d('0x12')](_0xdf4d('0xd'),_0x5ee8f5,_0x49c7ef[_0xdf4d('0x12')][_0xdf4d('0x13')]);return _0x4a3e29(_0x49c7ef[_0xdf4d('0x12')][_0xdf4d('0x13')]);}else{logger[_0xdf4d('0xc')](_0xdf4d('0xd'),_0x5ee8f5,_0xdf4d('0xe'));_0x4a3e29(_0x49c7ef[_0xdf4d('0x14')][_0xdf4d('0x13')]);}})[_0xdf4d('0x15')](function(_0x357a70){logger['error']('CmHopperHistory,\x20%s,\x20%s',_0x5ee8f5,_0x357a70);_0x34918e(_0x357a70);});});}exports[_0xdf4d('0x16')]=function(_0x95b106){var _0x4f88c3=this;return new Promise(function(_0x4e02f8,_0x48aca2){return db['CmHopperHistory'][_0xdf4d('0x17')](_0x95b106['body'],{'raw':_0x95b106[_0xdf4d('0x18')]?_0x95b106[_0xdf4d('0x18')][_0xdf4d('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1a9031){logger[_0xdf4d('0xc')](_0xdf4d('0x16'),_0x95b106);logger[_0xdf4d('0xf')](_0xdf4d('0x16'),_0x95b106,JSON[_0xdf4d('0x11')](_0x1a9031));_0x4e02f8(_0x1a9031);})[_0xdf4d('0x15')](function(_0x3acc2d){logger[_0xdf4d('0x12')](_0xdf4d('0x16'),_0x3acc2d[_0xdf4d('0x13')],_0x95b106);_0x48aca2(_0x4f88c3[_0xdf4d('0x12')](0x1f4,_0x3acc2d[_0xdf4d('0x13')]));});});};exports[_0xdf4d('0x1a')]=function(_0x150096){var _0x546cc6=this;return new Promise(function(_0x3448fa,_0x4d0e23){return db[_0xdf4d('0x1b')]['findAll']({'raw':_0x150096[_0xdf4d('0x18')]?_0x150096['options']['raw']===undefined?!![]:![]:!![],'where':_0x150096[_0xdf4d('0x18')]?_0x150096[_0xdf4d('0x18')][_0xdf4d('0x1c')]||null:null,'attributes':[[db[_0xdf4d('0x1d')]['fn']('COUNT',db[_0xdf4d('0x1d')][_0xdf4d('0x1e')]('id')),_0xdf4d('0x1f')],[db[_0xdf4d('0x1d')]['fn']('COUNT',db[_0xdf4d('0x1d')]['fn']('IF',db[_0xdf4d('0x1d')][_0xdf4d('0x20')](_0xdf4d('0x21')))),_0xdf4d('0x22')],[db[_0xdf4d('0x1d')]['fn']('COUNT',db[_0xdf4d('0x1d')]['fn']('IF',db[_0xdf4d('0x1d')][_0xdf4d('0x20')](_0xdf4d('0x23')))),_0xdf4d('0x24')],[db['sequelize']['fn']('COUNT',db[_0xdf4d('0x1d')]['fn']('IF',db[_0xdf4d('0x1d')][_0xdf4d('0x20')](_0xdf4d('0x25')))),_0xdf4d('0x26')],[db['sequelize']['fn'](_0xdf4d('0x27'),db[_0xdf4d('0x1d')]['fn']('IF',db[_0xdf4d('0x1d')][_0xdf4d('0x20')](_0xdf4d('0x28')))),_0xdf4d('0x29')],[db['sequelize']['fn'](_0xdf4d('0x27'),db[_0xdf4d('0x1d')]['fn']('IF',db[_0xdf4d('0x1d')][_0xdf4d('0x20')](_0xdf4d('0x2a')))),_0xdf4d('0x2b')]]})[_0xdf4d('0xb')](function(_0xff5b90){logger['info'](_0xdf4d('0x1a'),_0x150096);logger[_0xdf4d('0xf')](_0xdf4d('0x1a'),_0x150096,JSON[_0xdf4d('0x11')](_0xff5b90));_0x3448fa(_0xff5b90);})['catch'](function(_0x1dc36d){logger[_0xdf4d('0x12')]('AvgHandleTime',_0x1dc36d[_0xdf4d('0x13')],_0x150096);_0x4d0e23(_0x546cc6[_0xdf4d('0x12')](0x1f4,_0x1dc36d[_0xdf4d('0x13')]));});});};exports['GetVoiceQueueHopperHistory']=function(_0x1693b6){var _0x1cb4d2=this;return new Promise(function(_0x44ca76,_0x567291){return db[_0xdf4d('0x1b')][_0xdf4d('0x2c')]({'raw':_0x1693b6[_0xdf4d('0x18')]?_0x1693b6['options'][_0xdf4d('0x19')]===undefined?!![]:![]:!![],'where':_0x1693b6[_0xdf4d('0x18')]?_0x1693b6[_0xdf4d('0x18')][_0xdf4d('0x1c')]||null:null,'attributes':[[_0xdf4d('0x2d'),_0xdf4d('0x2e')],[db['sequelize']['fn']('COUNT',db[_0xdf4d('0x1d')]['fn']('IF',db[_0xdf4d('0x1d')][_0xdf4d('0x20')](_0xdf4d('0x2f')))),'outboundNoSuchCallsDay'],[db[_0xdf4d('0x1d')]['fn'](_0xdf4d('0x30'),db[_0xdf4d('0x1d')]['fn']('IF',db[_0xdf4d('0x1d')][_0xdf4d('0x20')](_0xdf4d('0x31')))),_0xdf4d('0x32')],[db['sequelize']['fn'](_0xdf4d('0x30'),db[_0xdf4d('0x1d')]['fn']('IF',db[_0xdf4d('0x1d')]['literal'](_0xdf4d('0x21')))),_0xdf4d('0x33')],[db['sequelize']['fn'](_0xdf4d('0x30'),db[_0xdf4d('0x1d')]['fn']('IF',db[_0xdf4d('0x1d')]['literal'](_0xdf4d('0x34')))),_0xdf4d('0x35')],[db[_0xdf4d('0x1d')]['fn'](_0xdf4d('0x30'),db[_0xdf4d('0x1d')]['fn']('IF',db[_0xdf4d('0x1d')]['literal'](_0xdf4d('0x36')))),'outboundCongestionCallsDay'],[db[_0xdf4d('0x1d')]['fn'](_0xdf4d('0x30'),db[_0xdf4d('0x1d')]['fn']('IF',db['sequelize'][_0xdf4d('0x20')](_0xdf4d('0x37')))),_0xdf4d('0x38')],[db[_0xdf4d('0x1d')]['fn']('COUNT',db[_0xdf4d('0x1d')]['fn']('IF',db[_0xdf4d('0x1d')]['literal'](_0xdf4d('0x39')))),'outboundDropCallsDayCallersExit'],[db[_0xdf4d('0x1d')]['fn'](_0xdf4d('0x30'),db['sequelize']['fn']('IF',db['sequelize'][_0xdf4d('0x20')](_0xdf4d('0x3a')))),_0xdf4d('0x3b')],[db[_0xdf4d('0x1d')]['fn'](_0xdf4d('0x30'),db[_0xdf4d('0x1d')]['fn']('IF',db[_0xdf4d('0x1d')][_0xdf4d('0x20')]('`state`\x20=\x2013,\x201,\x20null'))),'outboundBlacklistCallsDay'],[db[_0xdf4d('0x1d')]['fn'](_0xdf4d('0x30'),db['sequelize']['fn']('IF',db[_0xdf4d('0x1d')][_0xdf4d('0x20')](_0xdf4d('0x3c')))),_0xdf4d('0x3d')],[db[_0xdf4d('0x1d')]['fn'](_0xdf4d('0x30'),db[_0xdf4d('0x1d')]['fn']('IF',db['sequelize']['literal'](_0xdf4d('0x3e')))),_0xdf4d('0x3f')],[db['sequelize']['fn'](_0xdf4d('0x30'),db['sequelize']['fn']('IF',db[_0xdf4d('0x1d')][_0xdf4d('0x20')](_0xdf4d('0x40')))),_0xdf4d('0x41')],[db[_0xdf4d('0x1d')]['fn'](_0xdf4d('0x30'),db[_0xdf4d('0x1d')]['fn']('IF',db['sequelize'][_0xdf4d('0x20')](_0xdf4d('0x42')))),_0xdf4d('0x3f')],[db[_0xdf4d('0x1d')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xdf4d('0x1d')][_0xdf4d('0x20')](_0xdf4d('0x43')))),_0xdf4d('0x44')]],'group':[_0xdf4d('0x2d')]})['then'](function(_0x307c32){logger[_0xdf4d('0xc')](_0xdf4d('0x45'),_0x1693b6);logger[_0xdf4d('0xf')](_0xdf4d('0x45'),_0x1693b6,JSON['stringify'](_0x307c32));_0x44ca76(_0x307c32);})[_0xdf4d('0x15')](function(_0x2845aa){logger[_0xdf4d('0x12')](_0xdf4d('0x45'),_0x2845aa[_0xdf4d('0x13')],_0x1693b6);_0x567291(_0x1cb4d2[_0xdf4d('0x12')](0x1f4,_0x2845aa[_0xdf4d('0x13')]));});});};exports[_0xdf4d('0x46')]=function(_0xe706d7){var _0x4f251f=this;return new Promise(function(_0x49b683,_0x52ca60){return db[_0xdf4d('0x1b')][_0xdf4d('0x2c')]({'raw':_0xe706d7[_0xdf4d('0x18')]?_0xe706d7[_0xdf4d('0x18')][_0xdf4d('0x19')]===undefined?!![]:![]:!![],'where':_0xe706d7['options']?_0xe706d7[_0xdf4d('0x18')][_0xdf4d('0x1c')]||null:null,'attributes':[['campaign',_0xdf4d('0x2e')],[db['sequelize']['fn'](_0xdf4d('0x30'),db[_0xdf4d('0x1d')][_0xdf4d('0x1e')]('id')),_0xdf4d('0x47')],[db[_0xdf4d('0x1d')]['fn'](_0xdf4d('0x30'),db['sequelize']['fn']('IF',db[_0xdf4d('0x1d')][_0xdf4d('0x20')](_0xdf4d('0x21')))),_0xdf4d('0x48')]],'group':['campaign']})[_0xdf4d('0xb')](function(_0x2b2298){logger['info'](_0xdf4d('0x46'),_0xe706d7);logger[_0xdf4d('0xf')](_0xdf4d('0x46'),_0xe706d7,JSON[_0xdf4d('0x11')](_0x2b2298));_0x49b683(_0x2b2298);})['catch'](function(_0x56cc1e){logger[_0xdf4d('0x12')](_0xdf4d('0x46'),_0x56cc1e[_0xdf4d('0x13')],_0xe706d7);_0x52ca60(_0x4f251f[_0xdf4d('0x12')](0x1f4,_0x56cc1e['message']));});});};
\ No newline at end of file
index 8b520fe..722462d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6070=['exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','isAuthenticated','index','get','/describe','/:id','show','post','create','put','update'];(function(_0x28c8fe,_0x250255){var _0x148bbf=function(_0x15f66d){while(--_0x15f66d){_0x28c8fe['push'](_0x28c8fe['shift']());}};_0x148bbf(++_0x250255);}(_0x6070,0xdd));var _0x0607=function(_0x590b46,_0x5522cb){_0x590b46=_0x590b46-0x0;var _0x3f4805=_0x6070[_0x590b46];return _0x3f4805;};'use strict';var multer=require(_0x0607('0x0'));var util=require(_0x0607('0x1'));var path=require('path');var timeout=require(_0x0607('0x2'));var express=require('express');var router=express[_0x0607('0x3')]();var fs_extra=require(_0x0607('0x4'));var auth=require(_0x0607('0x5'));var interaction=require(_0x0607('0x6'));var config=require(_0x0607('0x7'));var controller=require(_0x0607('0x8'));router['get']('/',auth[_0x0607('0x9')](),controller[_0x0607('0xa')]);router[_0x0607('0xb')](_0x0607('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x0607('0xb')](_0x0607('0xd'),auth[_0x0607('0x9')](),controller[_0x0607('0xe')]);router[_0x0607('0xf')]('/',auth[_0x0607('0x9')](),controller[_0x0607('0x10')]);router[_0x0607('0x11')](_0x0607('0xd'),auth['isAuthenticated'](),controller[_0x0607('0x12')]);module[_0x0607('0x13')]=router;
\ No newline at end of file
+var _0x440d=['isAuthenticated','/:id','show','create','put','update','exports','multer','util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get'];(function(_0x466f51,_0x1393ed){var _0x2db305=function(_0x126ae3){while(--_0x126ae3){_0x466f51['push'](_0x466f51['shift']());}};_0x2db305(++_0x1393ed);}(_0x440d,0x187));var _0xd440=function(_0x33a0a7,_0xab4c3e){_0x33a0a7=_0x33a0a7-0x0;var _0x2fd532=_0x440d[_0x33a0a7];return _0x2fd532;};'use strict';var multer=require(_0xd440('0x0'));var util=require(_0xd440('0x1'));var path=require(_0xd440('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd440('0x3')]();var fs_extra=require(_0xd440('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xd440('0x5'));var config=require(_0xd440('0x6'));var controller=require(_0xd440('0x7'));router[_0xd440('0x8')]('/',auth[_0xd440('0x9')](),controller['index']);router['get']('/describe',auth[_0xd440('0x9')](),controller['describe']);router[_0xd440('0x8')](_0xd440('0xa'),auth['isAuthenticated'](),controller[_0xd440('0xb')]);router['post']('/',auth[_0xd440('0x9')](),controller[_0xd440('0xc')]);router[_0xd440('0xd')](_0xd440('0xa'),auth[_0xd440('0x9')](),controller[_0xd440('0xe')]);module[_0xd440('0xf')]=router;
\ No newline at end of file
index 749c367..7bed5ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5c7=['name','exports','STRING'];(function(_0x554259,_0x3ef649){var _0x12832a=function(_0x23ec4a){while(--_0x23ec4a){_0x554259['push'](_0x554259['shift']());}};_0x12832a(++_0x3ef649);}(_0xc5c7,0x1cf));var _0x7c5c=function(_0x5480f4,_0xc86b4b){_0x5480f4=_0x5480f4-0x0;var _0x150aaf=_0xc5c7[_0x5480f4];return _0x150aaf;};'use strict';var Sequelize=require('sequelize');module[_0x7c5c('0x0')]={'name':{'type':Sequelize[_0x7c5c('0x1')],'unique':_0x7c5c('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x7c5c('0x1')]},'dialPrefix':{'type':Sequelize[_0x7c5c('0x1')]}};
\ No newline at end of file
+var _0xd6bb=['name','sequelize','STRING'];(function(_0x5ee270,_0x396a92){var _0x3db8e5=function(_0x1272b0){while(--_0x1272b0){_0x5ee270['push'](_0x5ee270['shift']());}};_0x3db8e5(++_0x396a92);}(_0xd6bb,0x1cc));var _0xbd6b=function(_0x4404ff,_0x13d7a9){_0x4404ff=_0x4404ff-0x0;var _0x5e7b19=_0xd6bb[_0x4404ff];return _0x5e7b19;};'use strict';var Sequelize=require(_0xbd6b('0x0'));module['exports']={'name':{'type':Sequelize[_0xbd6b('0x1')],'unique':_0xbd6b('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xbd6b('0x1')]},'dialPrefix':{'type':Sequelize[_0xbd6b('0x1')]}};
\ No newline at end of file
index 277ed81..c2df29f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d12=['fieldName','type','key','query','keys','filters','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','limit','sort','where','pick','merge','filter','include','findAll','rows','catch','show','params','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','describe','getDispositions','findOne','Disposition','order','ListId','includeAll','removeDispositions','ids','addContacts','CmContact','tags','isArray','push','each','omit','success','dataValues','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','cf_%d','raw','getContactsCsv','ContactItemType','OrderBy','alias','select','cm_contacts','c.ListId\x20=\x20?','c.deletedAt\x20is\x20null','distinct','field','customField_','item','cm_contact_has_items','additionalPhone_','description','from','ItemTypeId\x20=\x20?','CmContactId\x20=\x20c.id','description_additionalPhone_','toString','isEmpty','now','writeFileSync','/tmp/list_%d_%s.csv','Content-disposition','attachment;\x20filename=','text/csv','addCustomField','transaction','addCustomFields','Sequelize','TEXT','number','INTEGER','switch','defaultValue','sequelize','queryInterface','addColumn','cf_%s','getCustomFields','findAndCountAll','addAgents','spread','userCmList:save','removeAgents','emit','userCmList:remove','getAgents','User','info','eml-format','rimraf','zip-dir','moment','mustache','util','path','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','end','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','Lists','error','stack','name','index','map','CmList','rawAttributes'];(function(_0x1e2080,_0x53283b){var _0x260111=function(_0x15da5e){while(--_0x15da5e){_0x1e2080['push'](_0x1e2080['shift']());}};_0x260111(++_0x53283b);}(_0x8d12,0x73));var _0x28d1=function(_0x4d0662,_0x145963){_0x4d0662=_0x4d0662-0x0;var _0x6eea6d=_0x8d12[_0x4d0662];return _0x6eea6d;};'use strict';var emlformat=require(_0x28d1('0x0'));var rimraf=require(_0x28d1('0x1'));var zipdir=require(_0x28d1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x28d1('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x28d1('0x4'));var util=require(_0x28d1('0x5'));var path=require(_0x28d1('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x28d1('0x7'));var _=require(_0x28d1('0x8'));var squel=require(_0x28d1('0x9'));var crypto=require(_0x28d1('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x28d1('0xb'));var toCsv=require(_0x28d1('0xc'));var querystring=require(_0x28d1('0xd'));var Papa=require(_0x28d1('0xe'));var Redis=require('ioredis');var authService=require(_0x28d1('0xf'));var qs=require(_0x28d1('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x28d1('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x28d1('0x12'))['db'];var csv_results;config[_0x28d1('0x13')]=_[_0x28d1('0x14')](config[_0x28d1('0x13')],{'host':_0x28d1('0x15'),'port':0x18eb});var socket=require(_0x28d1('0x16'))(new Redis(config[_0x28d1('0x13')]));require(_0x28d1('0x17'))[_0x28d1('0x18')](socket);function respondWithStatusCode(_0x42a40e,_0x3bef32){_0x3bef32=_0x3bef32||0xcc;return function(_0x2d7cb4){if(_0x2d7cb4){return _0x42a40e[_0x28d1('0x19')](_0x3bef32);}return _0x42a40e['status'](_0x3bef32)[_0x28d1('0x1a')]();};}function respondWithResult(_0xb2ecc9,_0x5cdf02){_0x5cdf02=_0x5cdf02||0xc8;return function(_0x525948){if(_0x525948){return _0xb2ecc9[_0x28d1('0x1b')](_0x5cdf02)[_0x28d1('0x1c')](_0x525948);}};}function respondWithFilteredResult(_0x1f6f49,_0x2fe834){return function(_0x3f1639){if(_0x3f1639){var _0x55e61c=typeof _0x2fe834[_0x28d1('0x1d')]===_0x28d1('0x1e')&&typeof _0x2fe834['limit']===_0x28d1('0x1e');var _0x5c80ab=_0x3f1639['count'];var _0x20ac2b=_0x55e61c?0x0:_0x2fe834[_0x28d1('0x1d')];var _0x59d042=_0x55e61c?_0x3f1639[_0x28d1('0x1f')]:_0x2fe834[_0x28d1('0x1d')]+_0x2fe834['limit'];var _0x2fc0f6;if(_0x59d042>=_0x5c80ab){_0x59d042=_0x5c80ab;_0x2fc0f6=0xc8;}else{_0x2fc0f6=0xce;}_0x1f6f49['status'](_0x2fc0f6);return _0x1f6f49[_0x28d1('0x20')](_0x28d1('0x21'),_0x20ac2b+'-'+_0x59d042+'/'+_0x5c80ab)[_0x28d1('0x1c')](_0x3f1639);}return null;};}function patchUpdates(_0x335f67){return function(_0x41b940){try{jsonpatch[_0x28d1('0x22')](_0x41b940,_0x335f67,!![]);}catch(_0x3f6c3a){return BPromise[_0x28d1('0x23')](_0x3f6c3a);}return _0x41b940[_0x28d1('0x24')]();};}function saveUpdates(_0x1f3a35,_0x27b27d){return function(_0xc76818){if(_0xc76818){return _0xc76818[_0x28d1('0x25')](_0x1f3a35)[_0x28d1('0x26')](function(_0x598b87){return _0x598b87;});}return null;};}function removeEntity(_0xc18d4d,_0x3011ac){return function(_0x3ca812){if(_0x3ca812){return _0x3ca812[_0x28d1('0x27')]()[_0x28d1('0x26')](function(){var _0x438fe5=_0x3ca812['get']({'plain':!![]});var _0x91e7dc=_0x28d1('0x28');return db['UserProfileResource'][_0x28d1('0x27')]({'where':{'type':_0x91e7dc,'resourceId':_0x438fe5['id']}})['then'](function(){return _0x3ca812;});})[_0x28d1('0x26')](function(){_0xc18d4d[_0x28d1('0x1b')](0xcc)[_0x28d1('0x1a')]();});}};}function handleEntityNotFound(_0x216892,_0x2ed446){return function(_0x14b7ce){if(!_0x14b7ce){_0x216892[_0x28d1('0x19')](0x194);}return _0x14b7ce;};}function handleError(_0xbe4693,_0x325220){_0x325220=_0x325220||0x1f4;return function(_0x52ee0d){logger[_0x28d1('0x29')](_0x52ee0d[_0x28d1('0x2a')]);if(_0x52ee0d['name']){delete _0x52ee0d[_0x28d1('0x2b')];}_0xbe4693[_0x28d1('0x1b')](_0x325220)['send'](_0x52ee0d);};}exports[_0x28d1('0x2c')]=function(_0x567443,_0x578759){var _0xa28603={},_0x17c99e={},_0x1eee54={'count':0x0,'rows':[]};var _0x42d6ed=_[_0x28d1('0x2d')](db[_0x28d1('0x2e')][_0x28d1('0x2f')],function(_0x1e54df){return{'name':_0x1e54df[_0x28d1('0x30')],'type':_0x1e54df[_0x28d1('0x31')][_0x28d1('0x32')]};});_0x17c99e['model']=_[_0x28d1('0x2d')](_0x42d6ed,_0x28d1('0x2b'));_0x17c99e[_0x28d1('0x33')]=_[_0x28d1('0x34')](_0x567443[_0x28d1('0x33')]);_0x17c99e[_0x28d1('0x35')]=_[_0x28d1('0x36')](_0x17c99e['model'],_0x17c99e['query']);_0xa28603[_0x28d1('0x37')]=_[_0x28d1('0x36')](_0x17c99e['model'],qs[_0x28d1('0x38')](_0x567443[_0x28d1('0x33')][_0x28d1('0x38')]));_0xa28603[_0x28d1('0x37')]=_0xa28603[_0x28d1('0x37')][_0x28d1('0x39')]?_0xa28603[_0x28d1('0x37')]:_0x17c99e[_0x28d1('0x3a')];if(!_0x567443[_0x28d1('0x33')][_0x28d1('0x3b')](_0x28d1('0x3c'))){_0xa28603[_0x28d1('0x3d')]=qs[_0x28d1('0x3d')](_0x567443[_0x28d1('0x33')][_0x28d1('0x3d')]);_0xa28603[_0x28d1('0x1d')]=qs[_0x28d1('0x1d')](_0x567443[_0x28d1('0x33')][_0x28d1('0x1d')]);}_0xa28603['order']=qs['sort'](_0x567443[_0x28d1('0x33')][_0x28d1('0x3e')]);_0xa28603[_0x28d1('0x3f')]=qs[_0x28d1('0x35')](_[_0x28d1('0x40')](_0x567443[_0x28d1('0x33')],_0x17c99e[_0x28d1('0x35')]),_0x42d6ed);if(_0x567443[_0x28d1('0x33')]['filter']){_0xa28603[_0x28d1('0x3f')]=_[_0x28d1('0x41')](_0xa28603[_0x28d1('0x3f')],{'$or':_[_0x28d1('0x2d')](_0x42d6ed,function(_0x198cde){if(_0x198cde[_0x28d1('0x31')]!=='VIRTUAL'){var _0x213493={};_0x213493[_0x198cde[_0x28d1('0x2b')]]={'$like':'%'+_0x567443['query'][_0x28d1('0x42')]+'%'};return _0x213493;}})});}_0xa28603=_['merge']({},_0xa28603,_0x567443['options']);var _0x427c41={'where':_0xa28603[_0x28d1('0x3f')]};return db[_0x28d1('0x2e')][_0x28d1('0x1f')](_0x427c41)[_0x28d1('0x26')](function(_0x570796){_0x1eee54['count']=_0x570796;if(_0x567443[_0x28d1('0x33')]['includeAll']){_0xa28603[_0x28d1('0x43')]=[{'all':!![]}];}return db['CmList'][_0x28d1('0x44')](_0xa28603);})[_0x28d1('0x26')](function(_0x2ab3c7){_0x1eee54[_0x28d1('0x45')]=_0x2ab3c7;return _0x1eee54;})['then'](respondWithFilteredResult(_0x578759,_0xa28603))[_0x28d1('0x46')](handleError(_0x578759,null));};exports[_0x28d1('0x47')]=function(_0x305d14,_0x1b3893){var _0x508176={'raw':![],'where':{'id':_0x305d14[_0x28d1('0x48')]['id']}},_0x52625f={};_0x52625f[_0x28d1('0x3a')]=_['keys'](db[_0x28d1('0x2e')][_0x28d1('0x2f')]);_0x52625f[_0x28d1('0x33')]=_['keys'](_0x305d14[_0x28d1('0x33')]);_0x52625f[_0x28d1('0x35')]=_[_0x28d1('0x36')](_0x52625f[_0x28d1('0x3a')],_0x52625f[_0x28d1('0x33')]);_0x508176[_0x28d1('0x37')]=_[_0x28d1('0x36')](_0x52625f['model'],qs['fields'](_0x305d14[_0x28d1('0x33')]['fields']));_0x508176[_0x28d1('0x37')]=_0x508176['attributes']['length']?_0x508176['attributes']:_0x52625f[_0x28d1('0x3a')];if(_0x305d14[_0x28d1('0x33')]['includeAll']){_0x508176[_0x28d1('0x43')]=[{'all':!![]}];}_0x508176=_[_0x28d1('0x41')]({},_0x508176,_0x305d14[_0x28d1('0x49')]);return db['CmList']['find'](_0x508176)[_0x28d1('0x26')](handleEntityNotFound(_0x1b3893,null))[_0x28d1('0x26')](respondWithResult(_0x1b3893,null))[_0x28d1('0x46')](handleError(_0x1b3893,null));};exports[_0x28d1('0x4a')]=function(_0x2b8136,_0x302f2f){return db['CmList'][_0x28d1('0x4a')](_0x2b8136[_0x28d1('0x4b')],{})['then'](function(_0x411016){var _0x78dcb5=_0x2b8136[_0x28d1('0x4c')]['get']({'plain':!![]});if(!_0x78dcb5)throw new Error(_0x28d1('0x4d'));if(_0x78dcb5[_0x28d1('0x4e')]===_0x28d1('0x4c')){var _0x156cce=_0x411016[_0x28d1('0x4f')]({'plain':!![]});var _0x3b83c4=_0x28d1('0x28');return db['UserProfileSection']['find']({'where':{'name':_0x3b83c4,'userProfileId':_0x78dcb5[_0x28d1('0x50')]},'raw':!![]})['then'](function(_0x2f9e0d){if(_0x2f9e0d&&_0x2f9e0d[_0x28d1('0x51')]===0x0){return db['UserProfileResource'][_0x28d1('0x4a')]({'name':_0x156cce[_0x28d1('0x2b')],'resourceId':_0x156cce['id'],'type':_0x2f9e0d[_0x28d1('0x2b')],'sectionId':_0x2f9e0d['id']},{})['then'](function(){return _0x411016;});}else{return _0x411016;}})['catch'](function(_0x42de4f){logger[_0x28d1('0x29')](_0x28d1('0x52'),_0x42de4f);throw _0x42de4f;});}return _0x411016;})[_0x28d1('0x26')](respondWithResult(_0x302f2f,0xc9))[_0x28d1('0x46')](handleError(_0x302f2f,null));};exports[_0x28d1('0x25')]=function(_0x330cbe,_0x5d9672){if(_0x330cbe[_0x28d1('0x4b')]['id']){delete _0x330cbe[_0x28d1('0x4b')]['id'];}return db[_0x28d1('0x2e')][_0x28d1('0x53')]({'where':{'id':_0x330cbe[_0x28d1('0x48')]['id']}})['then'](handleEntityNotFound(_0x5d9672,null))[_0x28d1('0x26')](saveUpdates(_0x330cbe['body'],null))[_0x28d1('0x26')](respondWithResult(_0x5d9672,null))['catch'](handleError(_0x5d9672,null));};exports[_0x28d1('0x27')]=function(_0x381faf,_0x247ae4){return db[_0x28d1('0x2e')][_0x28d1('0x53')]({'where':{'id':_0x381faf[_0x28d1('0x48')]['id']}})[_0x28d1('0x26')](handleEntityNotFound(_0x247ae4,null))[_0x28d1('0x26')](removeEntity(_0x247ae4,null))[_0x28d1('0x46')](handleError(_0x247ae4,null));};exports[_0x28d1('0x54')]=function(_0x98f181,_0x28bfbd){return db['CmList']['describe']()['then'](respondWithResult(_0x28bfbd,null))['catch'](handleError(_0x28bfbd,null));};exports['addDisposition']=function(_0x43241c,_0x5d3abb,_0x2745ea){if(_0x43241c[_0x28d1('0x4b')]['id']){delete _0x43241c[_0x28d1('0x4b')]['id'];}return db['CmList']['find']({'where':{'id':_0x43241c['params']['id']}})['then'](handleEntityNotFound(_0x5d3abb,null))['then'](function(_0x59fa78){if(_0x59fa78){_0x43241c[_0x28d1('0x4b')]['ListId']=_0x59fa78['id'];return db['Disposition']['create'](_0x43241c['body']);}})[_0x28d1('0x26')](respondWithResult(_0x5d3abb,null))[_0x28d1('0x46')](handleError(_0x5d3abb,null));};exports[_0x28d1('0x55')]=function(_0x5ea19d,_0x49d237,_0x19f671){var _0x5d307b={'raw':![],'where':{}};var _0x5c77b8={};var _0x36bb98={'count':0x0,'rows':[]};return db[_0x28d1('0x2e')][_0x28d1('0x56')]({'where':{'id':_0x5ea19d[_0x28d1('0x48')]['id']}})['then'](handleEntityNotFound(_0x49d237,null))[_0x28d1('0x26')](function(_0x5743c9){if(_0x5743c9){_0x5c77b8['model']=_[_0x28d1('0x34')](db[_0x28d1('0x57')][_0x28d1('0x2f')]);_0x5c77b8['query']=_[_0x28d1('0x34')](_0x5ea19d[_0x28d1('0x33')]);_0x5c77b8[_0x28d1('0x35')]=_[_0x28d1('0x36')](_0x5c77b8[_0x28d1('0x3a')],_0x5c77b8[_0x28d1('0x33')]);_0x5d307b[_0x28d1('0x37')]=_[_0x28d1('0x36')](_0x5c77b8[_0x28d1('0x3a')],qs[_0x28d1('0x38')](_0x5ea19d['query'][_0x28d1('0x38')]));_0x5d307b[_0x28d1('0x37')]=_0x5d307b[_0x28d1('0x37')][_0x28d1('0x39')]?_0x5d307b[_0x28d1('0x37')]:_0x5c77b8['model'];if(!_0x5ea19d[_0x28d1('0x33')]['hasOwnProperty'](_0x28d1('0x3c'))){_0x5d307b[_0x28d1('0x3d')]=qs[_0x28d1('0x3d')](_0x5ea19d[_0x28d1('0x33')]['limit']);_0x5d307b[_0x28d1('0x1d')]=qs[_0x28d1('0x1d')](_0x5ea19d[_0x28d1('0x33')][_0x28d1('0x1d')]);}_0x5d307b[_0x28d1('0x58')]=qs[_0x28d1('0x3e')](_0x5ea19d[_0x28d1('0x33')]['sort']);_0x5d307b['where']=qs['filters'](_['pick'](_0x5ea19d[_0x28d1('0x33')],_0x5c77b8[_0x28d1('0x35')]));_0x5d307b['where'][_0x28d1('0x59')]=_0x5743c9['id'];if(_0x5ea19d['query'][_0x28d1('0x42')]){_0x5d307b[_0x28d1('0x3f')]=_[_0x28d1('0x41')](_0x5d307b['where'],{'$or':_[_0x28d1('0x2d')](_0x5d307b['attributes'],function(_0x7a46cc){var _0x3044a8={};_0x3044a8[_0x7a46cc]={'$like':'%'+_0x5ea19d[_0x28d1('0x33')][_0x28d1('0x42')]+'%'};return _0x3044a8;})});}_0x5d307b=_[_0x28d1('0x41')]({},_0x5d307b,_0x5ea19d[_0x28d1('0x49')]);return db[_0x28d1('0x57')][_0x28d1('0x1f')]({'where':_0x5d307b['where']})[_0x28d1('0x26')](function(_0x95fc3c){_0x36bb98[_0x28d1('0x1f')]=_0x95fc3c;if(_0x5ea19d[_0x28d1('0x33')][_0x28d1('0x5a')]){_0x5d307b[_0x28d1('0x43')]=[{'all':!![]}];}return db['Disposition'][_0x28d1('0x44')](_0x5d307b);})[_0x28d1('0x26')](function(_0x187ecd){_0x36bb98[_0x28d1('0x45')]=_0x187ecd;return _0x36bb98;});}})[_0x28d1('0x26')](respondWithFilteredResult(_0x49d237,_0x5d307b))[_0x28d1('0x46')](handleError(_0x49d237,null));};exports[_0x28d1('0x5b')]=function(_0x1b63b4,_0x359ee0,_0x189e0a){return db[_0x28d1('0x2e')][_0x28d1('0x53')]({'where':{'id':_0x1b63b4[_0x28d1('0x48')]['id']}})['then'](handleEntityNotFound(_0x359ee0,null))[_0x28d1('0x26')](function(_0x43bd47){if(_0x43bd47){return _0x43bd47['removeDispositions'](_0x1b63b4[_0x28d1('0x33')][_0x28d1('0x5c')]);}})[_0x28d1('0x26')](respondWithStatusCode(_0x359ee0,null))[_0x28d1('0x46')](handleError(_0x359ee0,null));};exports[_0x28d1('0x5d')]=function(_0x84a941,_0x5bd7d5,_0x24a504){return db[_0x28d1('0x2e')][_0x28d1('0x53')]({'where':{'id':_0x84a941['params']['id']}})['then'](handleEntityNotFound(_0x5bd7d5,null))[_0x28d1('0x26')](function(_0x47a1a3){if(_0x47a1a3){var _0x4c51bb=[];var _0x5d5014={'success':[],'errors':[]};return db[_0x28d1('0x5e')]['describe']()['then'](function(_0x344704){if(_0x84a941[_0x28d1('0x4b')][_0x28d1('0x5f')]&&_[_0x28d1('0x60')](_0x84a941[_0x28d1('0x4b')][_0x28d1('0x5f')])){if(_0x84a941[_0x28d1('0x4b')][_0x28d1('0x5f')][_0x28d1('0x39')]){_0x84a941['body'][_0x28d1('0x5f')]=_0x84a941[_0x28d1('0x4b')]['tags']['join'](';')+';';}else{_0x84a941[_0x28d1('0x4b')][_0x28d1('0x5f')]=null;}}else{_0x84a941['body'][_0x28d1('0x5f')]=null;}if(_0x84a941[_0x28d1('0x4b')]&&_[_0x28d1('0x60')](_0x84a941[_0x28d1('0x4b')])){for(var _0x300b88=0x0;_0x300b88<_0x84a941['body'][_0x28d1('0x39')];_0x300b88+=0x1){_0x84a941[_0x28d1('0x4b')][_0x300b88][_0x28d1('0x59')]=_0x84a941[_0x28d1('0x48')]['id'];_0x4c51bb[_0x28d1('0x61')](_0x84a941['body'][_0x300b88]);}return BPromise[_0x28d1('0x62')](_0x4c51bb,function(_0x2f3128){return db[_0x28d1('0x5e')]['create'](_[_0x28d1('0x63')](_0x2f3128,[_0x28d1('0x5c'),'id'])||{},{'fields':_['keys'](_0x344704),'raw':!![]})['then'](function(_0x3f7ca3){_0x5d5014[_0x28d1('0x64')]['push'](_0x3f7ca3[_0x28d1('0x65')]);})[_0x28d1('0x46')](function(_0x258f68){_0x5d5014[_0x28d1('0x66')][_0x28d1('0x61')]({'data':_0x2f3128,'error':_0x258f68[_0x28d1('0x67')]});});})[_0x28d1('0x26')](function(_0x1f5de8){return _0x5d5014;})[_0x28d1('0x46')](function(_0x502bf3){return _0x502bf3;});}else{_0x5bd7d5[_0x28d1('0x1b')](0x190)['json']({'message':_0x28d1('0x68')});}});}})['then'](respondWithResult(_0x5bd7d5,null))[_0x28d1('0x46')](handleError(_0x5bd7d5,null));};exports[_0x28d1('0x69')]=function(_0x165699,_0x238a26,_0x208337){var _0x136b10;return db[_0x28d1('0x2e')]['find']({'where':{'id':_0x165699[_0x28d1('0x48')]['id']},'include':[{'model':db[_0x28d1('0x6a')],'as':_0x28d1('0x6b')}]})[_0x28d1('0x26')](handleEntityNotFound(_0x238a26,null))[_0x28d1('0x26')](function(_0x1bda69){if(_0x1bda69){_0x136b10=_0x1bda69;return db['CmContact'][_0x28d1('0x2f')];}})[_0x28d1('0x26')](function(_0xcd5de9){if(_0xcd5de9){var _0x57fe8d={};var _0xee4b82={};_0xee4b82[_0x28d1('0x3a')]=_[_0x28d1('0x6c')](_[_0x28d1('0x34')](_0xcd5de9),_['map'](_0x136b10[_0x28d1('0x6b')],function(_0x12d09d){return util[_0x28d1('0x6d')](_0x28d1('0x6e'),_0x12d09d['id']);}));_0xee4b82[_0x28d1('0x33')]=_[_0x28d1('0x34')](_0x165699['query']);_0xee4b82[_0x28d1('0x35')]=_[_0x28d1('0x36')](_0xee4b82[_0x28d1('0x3a')],_0xee4b82[_0x28d1('0x33')]);_0x57fe8d[_0x28d1('0x37')]=_[_0x28d1('0x36')](_0xee4b82['model'],qs[_0x28d1('0x38')](_0x165699['query']['fields']));_0x57fe8d[_0x28d1('0x37')]=_0x57fe8d[_0x28d1('0x37')][_0x28d1('0x39')]?_0x57fe8d[_0x28d1('0x37')]:_0xee4b82[_0x28d1('0x3a')];if(!_0x165699[_0x28d1('0x33')][_0x28d1('0x3b')](_0x28d1('0x3c'))){_0x57fe8d['limit']=qs['limit'](_0x165699[_0x28d1('0x33')]['limit']);_0x57fe8d['offset']=qs[_0x28d1('0x1d')](_0x165699[_0x28d1('0x33')]['offset']);}_0x57fe8d[_0x28d1('0x58')]=qs[_0x28d1('0x3e')](_0x165699[_0x28d1('0x33')][_0x28d1('0x3e')]);_0x57fe8d[_0x28d1('0x3f')]=qs[_0x28d1('0x35')](_[_0x28d1('0x40')](_0x165699[_0x28d1('0x33')],_0xee4b82[_0x28d1('0x35')]));_0x57fe8d[_0x28d1('0x6f')]=!![];if(_0x165699[_0x28d1('0x33')][_0x28d1('0x42')]){_0x57fe8d['where']=_[_0x28d1('0x41')](_0x57fe8d['where'],{'$or':_['map'](_0x57fe8d[_0x28d1('0x37')],function(_0x4446fa){var _0x4d4a99={};_0x4d4a99[_0x4446fa]={'$like':'%'+_0x165699[_0x28d1('0x33')][_0x28d1('0x42')]+'%'};return _0x4d4a99;})});}_0x57fe8d=_['merge']({},_0x57fe8d,_0x165699[_0x28d1('0x49')]);return _0x136b10[_0x28d1('0x69')](_0x57fe8d);}})[_0x28d1('0x26')](respondWithResult(_0x238a26,null))[_0x28d1('0x46')](handleError(_0x238a26,null));};exports[_0x28d1('0x70')]=function(_0x1b9c4b,_0x30e606,_0x52abb9){var _0x5850e9;var _0x16dce3;var _0x51268e;var _0x1fa141=_0x1b9c4b[_0x28d1('0x48')]['id'];csv_results=[];return db[_0x28d1('0x71')][_0x28d1('0x44')]({'attributes':['id',_0x28d1('0x2b')],'raw':!![],'order':[_0x28d1('0x72')]})[_0x28d1('0x26')](function(_0x4371bf){_0x5850e9=_0x4371bf;var _0x590e32=_[_0x28d1('0x34')](db[_0x28d1('0x5e')][_0x28d1('0x2f')]);return db[_0x28d1('0x6a')][_0x28d1('0x44')]({'raw':!![],'attributes':['id',_0x28d1('0x73')]})['then'](function(_0x290636){_0x16dce3=_0x290636;var _0x2e7943=squel[_0x28d1('0x74')]()['fields'](_0x590e32)['from'](_0x28d1('0x75'),'c')[_0x28d1('0x3f')](_0x28d1('0x76'),_0x1fa141)[_0x28d1('0x3f')](_0x28d1('0x77'))[_0x28d1('0x78')]();for(var _0x12f02a=0x0;_0x12f02a<_0x16dce3[_0x28d1('0x39')];_0x12f02a++){_0x2e7943[_0x28d1('0x79')]('c.cf_'+_0x16dce3[_0x12f02a]['id'],_0x28d1('0x7a')+_0x16dce3[_0x12f02a]['alias']);}for(var _0x12f02a=0x0;_0x12f02a<_0x5850e9[_0x28d1('0x39')];_0x12f02a++){_0x2e7943['field'](squel['select']()['field'](_0x28d1('0x7b'))['from'](_0x28d1('0x7c'))[_0x28d1('0x3f')]('ItemTypeId\x20=\x20?',_0x5850e9[_0x12f02a]['id'])[_0x28d1('0x3f')]('CmContactId\x20=\x20c.id'),_0x28d1('0x7d')+_0x5850e9[_0x12f02a][_0x28d1('0x2b')]);_0x2e7943[_0x28d1('0x79')](squel[_0x28d1('0x74')]()[_0x28d1('0x79')](_0x28d1('0x7e'))[_0x28d1('0x7f')]('cm_contact_has_items')[_0x28d1('0x3f')](_0x28d1('0x80'),_0x5850e9[_0x12f02a]['id'])[_0x28d1('0x3f')](_0x28d1('0x81')),_0x28d1('0x82')+_0x5850e9[_0x12f02a][_0x28d1('0x2b')]);}var _0x4eb653=[];_0x4eb653['push'](_0x2e7943[_0x28d1('0x83')]());BPromise['each'](_0x4eb653,handleQuery)[_0x28d1('0x26')](function(_0x1d2b60){handleQuery(_0x2e7943[_0x28d1('0x83')]());var _0x4d83c8=csv_results[0x0];if(!_[_0x28d1('0x84')](_0x4d83c8)){var _0x512f6b=toCsv(_0x4d83c8);var _0x498275=Date[_0x28d1('0x85')]();fs[_0x28d1('0x86')](util['format'](_0x28d1('0x87'),_0x1fa141,_0x498275),_0x512f6b);_0x30e606['setHeader'](_0x28d1('0x88'),_0x28d1('0x89')+util[_0x28d1('0x6d')]('list_%d_%s.csv',_0x1fa141,_0x498275));_0x30e606['setHeader']('Content-type',_0x28d1('0x8a'));return _0x30e606['download'](util[_0x28d1('0x6d')](_0x28d1('0x87'),_0x1fa141,_0x498275));}else{return _0x30e606['sendStatus'](0xcc);}});});});};exports[_0x28d1('0x8b')]=function(_0x5ae7a5,_0x23c411,_0xe2bfed){var _0x59914f;delete _0x5ae7a5[_0x28d1('0x4b')]['id'];return db[_0x28d1('0x2e')][_0x28d1('0x56')]({'where':{'id':_0x5ae7a5[_0x28d1('0x48')]['id']}})['then'](handleEntityNotFound(_0x23c411,null))[_0x28d1('0x26')](function(_0x4b30b8){if(_0x4b30b8){return db['sequelize'][_0x28d1('0x8c')](function(_0x39cbf0){return db['CmCustomField'][_0x28d1('0x4a')](_0x5ae7a5['body'],{'transaction':_0x39cbf0})[_0x28d1('0x26')](function(_0x34884e){_0x59914f=_0x34884e;return _0x4b30b8[_0x28d1('0x8d')](_0x34884e,{'transaction':_0x39cbf0});})[_0x28d1('0x26')](function(){var _0x54775e={'type':db[_0x28d1('0x8e')][_0x28d1('0x8f')],'transaction':_0x39cbf0};switch(_0x5ae7a5[_0x28d1('0x4b')][_0x28d1('0x31')]){case'text':_0x54775e[_0x28d1('0x31')]=db['Sequelize'][_0x28d1('0x8f')];break;case _0x28d1('0x90'):_0x54775e[_0x28d1('0x31')]=db[_0x28d1('0x8e')][_0x28d1('0x91')];break;case _0x28d1('0x92'):_0x54775e[_0x28d1('0x31')]=db[_0x28d1('0x8e')]['BOOLEAN'];_0x54775e[_0x28d1('0x93')]=![];break;default:}return db[_0x28d1('0x94')][_0x28d1('0x95')][_0x28d1('0x96')]('cm_contacts',util[_0x28d1('0x6d')](_0x28d1('0x97'),_0x59914f['id']),_0x54775e);})['then'](function(){return _0x59914f;});});}})[_0x28d1('0x26')](respondWithResult(_0x23c411,null))[_0x28d1('0x46')](handleError(_0x23c411,null));};exports[_0x28d1('0x98')]=function(_0x30a2a5,_0x29e16a,_0x3c1ad2){var _0x60d892={};var _0x18f877={};var _0x2afc4b;var _0x21b481;return db[_0x28d1('0x2e')][_0x28d1('0x56')]({'where':{'id':_0x30a2a5[_0x28d1('0x48')]['id']}})[_0x28d1('0x26')](handleEntityNotFound(_0x29e16a,null))[_0x28d1('0x26')](function(_0x25a172){if(_0x25a172){_0x2afc4b=_0x25a172;_0x18f877[_0x28d1('0x3a')]=_['keys'](db[_0x28d1('0x6a')][_0x28d1('0x2f')]);_0x18f877[_0x28d1('0x33')]=_[_0x28d1('0x34')](_0x30a2a5[_0x28d1('0x33')]);_0x18f877[_0x28d1('0x35')]=_[_0x28d1('0x36')](_0x18f877[_0x28d1('0x3a')],_0x18f877[_0x28d1('0x33')]);_0x60d892[_0x28d1('0x37')]=_['intersection'](_0x18f877['model'],qs['fields'](_0x30a2a5[_0x28d1('0x33')][_0x28d1('0x38')]));_0x60d892[_0x28d1('0x37')]=_0x60d892[_0x28d1('0x37')][_0x28d1('0x39')]?_0x60d892[_0x28d1('0x37')]:_0x18f877['model'];_0x60d892[_0x28d1('0x58')]=qs['sort'](_0x30a2a5[_0x28d1('0x33')]['sort']);_0x60d892[_0x28d1('0x3f')]=qs[_0x28d1('0x35')](_['pick'](_0x30a2a5[_0x28d1('0x33')],_0x18f877[_0x28d1('0x35')]));_0x60d892[_0x28d1('0x3f')]=_[_0x28d1('0x41')](_0x60d892[_0x28d1('0x3f')],{'$or':[{'ListId':_0x25a172['id']},{'ListId':null}]});if(_0x30a2a5[_0x28d1('0x33')]['filter']){_0x60d892['where']=_[_0x28d1('0x41')](_0x60d892[_0x28d1('0x3f')],{'$or':_[_0x28d1('0x2d')](_0x60d892['attributes'],function(_0x3dc8fc){var _0x1f55ec={};_0x1f55ec[_0x3dc8fc]={'$like':'%'+_0x30a2a5['query']['filter']+'%'};return _0x1f55ec;})});}_0x60d892=_['merge']({},_0x60d892,_0x30a2a5[_0x28d1('0x49')]);return db[_0x28d1('0x6a')][_0x28d1('0x99')](_0x60d892);}})[_0x28d1('0x26')](respondWithResult(_0x29e16a,null))[_0x28d1('0x46')](handleError(_0x29e16a,null));};exports['getGlobalCustomFields']=function(_0x44883c,_0x3a062f){return db[_0x28d1('0x6a')][_0x28d1('0x99')]({'where':{'ListId':null}})[_0x28d1('0x26')](handleEntityNotFound(_0x3a062f,null))[_0x28d1('0x26')](function(_0x2d2713){return _0x2d2713;})[_0x28d1('0x26')](respondWithResult(_0x3a062f,null))[_0x28d1('0x46')](handleError(_0x3a062f,null));};exports[_0x28d1('0x9a')]=function(_0x188afc,_0x15c9dc,_0x5131fe){return db[_0x28d1('0x2e')][_0x28d1('0x53')]({'where':{'id':_0x188afc[_0x28d1('0x48')]['id']}})['then'](handleEntityNotFound(_0x15c9dc,null))[_0x28d1('0x26')](function(_0x1c9eb5){if(_0x1c9eb5){return _0x1c9eb5[_0x28d1('0x9a')](_0x188afc[_0x28d1('0x4b')][_0x28d1('0x5c')],_['omit'](_0x188afc['body'],[_0x28d1('0x5c'),'id'])||{})[_0x28d1('0x9b')](function(_0x3d2251){for(var _0x58e362=0x0;_0x58e362<_0x188afc[_0x28d1('0x4b')][_0x28d1('0x5c')][_0x28d1('0x39')];_0x58e362+=0x1){socket['emit'](_0x28d1('0x9c'),{'UserId':Number(_0x188afc[_0x28d1('0x4b')][_0x28d1('0x5c')][_0x58e362]),'CmListId':Number(_0x188afc[_0x28d1('0x48')]['id'])});}return _0x3d2251;});}})[_0x28d1('0x26')](respondWithResult(_0x15c9dc,null))[_0x28d1('0x46')](handleError(_0x15c9dc,null));};exports[_0x28d1('0x9d')]=function(_0x2123c3,_0x14d422,_0x4a60fc){return db[_0x28d1('0x2e')][_0x28d1('0x53')]({'where':{'id':_0x2123c3['params']['id']}})[_0x28d1('0x26')](handleEntityNotFound(_0x14d422,null))['then'](function(_0x4d3757){if(_0x4d3757){return _0x4d3757['removeAgents'](_0x2123c3[_0x28d1('0x33')][_0x28d1('0x5c')])[_0x28d1('0x26')](function(){if(_['isArray'](_0x2123c3[_0x28d1('0x33')]['ids'])){for(var _0x31492c=0x0;_0x31492c<_0x2123c3[_0x28d1('0x33')][_0x28d1('0x5c')]['length'];_0x31492c+=0x1){socket[_0x28d1('0x9e')](_0x28d1('0x9f'),{'UserId':Number(_0x2123c3[_0x28d1('0x33')][_0x28d1('0x5c')][_0x31492c]),'CmListId':Number(_0x2123c3[_0x28d1('0x48')]['id'])});}}else{socket[_0x28d1('0x9e')]('userCmList:remove',{'UserId':Number(_0x2123c3[_0x28d1('0x33')]['ids']),'CmListId':Number(_0x2123c3['params']['id'])});}});}})[_0x28d1('0x26')](respondWithStatusCode(_0x14d422,null))['catch'](handleError(_0x14d422,null));};exports[_0x28d1('0xa0')]=function(_0x87aaf3,_0x284f06,_0xa2f840){var _0x50cf1f={};var _0x53f9dd={};var _0x2cdc48;var _0x3fdf06;return db[_0x28d1('0x2e')]['findOne']({'where':{'id':_0x87aaf3[_0x28d1('0x48')]['id']}})['then'](handleEntityNotFound(_0x284f06,null))[_0x28d1('0x26')](function(_0x5f232e){if(_0x5f232e){_0x2cdc48=_0x5f232e;_0x53f9dd[_0x28d1('0x3a')]=_[_0x28d1('0x34')](db[_0x28d1('0xa1')][_0x28d1('0x2f')]);_0x53f9dd[_0x28d1('0x33')]=_['keys'](_0x87aaf3['query']);_0x53f9dd[_0x28d1('0x35')]=_[_0x28d1('0x36')](_0x53f9dd['model'],_0x53f9dd['query']);_0x50cf1f[_0x28d1('0x37')]=_[_0x28d1('0x36')](_0x53f9dd['model'],qs['fields'](_0x87aaf3[_0x28d1('0x33')][_0x28d1('0x38')]));_0x50cf1f[_0x28d1('0x37')]=_0x50cf1f[_0x28d1('0x37')]['length']?_0x50cf1f[_0x28d1('0x37')]:_0x53f9dd[_0x28d1('0x3a')];_0x50cf1f[_0x28d1('0x58')]=qs[_0x28d1('0x3e')](_0x87aaf3[_0x28d1('0x33')][_0x28d1('0x3e')]);_0x50cf1f[_0x28d1('0x3f')]=qs['filters'](_[_0x28d1('0x40')](_0x87aaf3[_0x28d1('0x33')],_0x53f9dd['filters']));if(_0x87aaf3['query']['filter']){_0x50cf1f['where']=_[_0x28d1('0x41')](_0x50cf1f[_0x28d1('0x3f')],{'$or':_['map'](_0x50cf1f[_0x28d1('0x37')],function(_0x554e9e){var _0x2962d8={};_0x2962d8[_0x554e9e]={'$like':'%'+_0x87aaf3[_0x28d1('0x33')][_0x28d1('0x42')]+'%'};return _0x2962d8;})});}_0x50cf1f=_[_0x28d1('0x41')]({},_0x50cf1f,_0x87aaf3[_0x28d1('0x49')]);return _0x2cdc48[_0x28d1('0xa0')](_0x50cf1f);}})['then'](function(_0x18f5df){if(_0x18f5df){_0x3fdf06=_0x18f5df[_0x28d1('0x39')];if(!_0x87aaf3[_0x28d1('0x33')][_0x28d1('0x3b')]('nolimit')){_0x50cf1f[_0x28d1('0x3d')]=qs[_0x28d1('0x3d')](_0x87aaf3['query'][_0x28d1('0x3d')]);_0x50cf1f[_0x28d1('0x1d')]=qs[_0x28d1('0x1d')](_0x87aaf3['query'][_0x28d1('0x1d')]);}return _0x2cdc48[_0x28d1('0xa0')](_0x50cf1f);}})[_0x28d1('0x26')](function(_0x3f187c){if(_0x3f187c){return _0x3f187c?{'count':_0x3fdf06,'rows':_0x3f187c}:null;}})['then'](respondWithResult(_0x284f06,null))[_0x28d1('0x46')](handleError(_0x284f06,null));};function handleQuery(_0x3818b5){logger[_0x28d1('0xa2')](_0x3818b5);return db[_0x28d1('0x94')]['query'](_0x3818b5)['spread'](function(_0x9da2a4){csv_results['push'](_0x9da2a4);})[_0x28d1('0x46')](function(_0x44bed5){logger[_0x28d1('0x29')](_0x44bed5[_0x28d1('0x67')]);});}
\ No newline at end of file
+var _0x3564=['getContactsCsv','ContactItemType','findAll','OrderBy','alias','from','cm_contacts','c.deletedAt\x20is\x20null','distinct','field','c.cf_','select','item','cm_contact_has_items','ItemTypeId\x20=\x20?','description','CmContactId\x20=\x20c.id','description_additionalPhone_','toString','now','writeFileSync','setHeader','Content-disposition','list_%d_%s.csv','text/csv','download','/tmp/list_%d_%s.csv','addCustomField','sequelize','transaction','CmCustomField','addCustomFields','Sequelize','TEXT','INTEGER','switch','BOOLEAN','defaultValue','cf_%s','getCustomFields','findAndCountAll','getGlobalCustomFields','omit','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','info','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','redis','socket.io-emitter','./cmList.socket','sendStatus','status','end','json','offset','undefined','count','limit','apply','save','update','then','destroy','get','Lists','UserProfileResource','error','stack','name','send','index','map','CmList','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','filter','merge','VIRTUAL','include','rows','params','keys','includeAll','options','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ListId','findOne','Disposition','pick','removeDispositions','tags','isArray','push','each','CmContact','ids','success','dataValues','errors','Malformed\x20request\x20syntax','getContacts','CustomFields','concat','format','cf_%d','sort'];(function(_0x49c81d,_0x212f74){var _0x21559f=function(_0x59cd61){while(--_0x59cd61){_0x49c81d['push'](_0x49c81d['shift']());}};_0x21559f(++_0x212f74);}(_0x3564,0xce));var _0x4356=function(_0x56be77,_0x3a79b7){_0x56be77=_0x56be77-0x0;var _0x463180=_0x3564[_0x56be77];return _0x463180;};'use strict';var emlformat=require(_0x4356('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4356('0x1'));var jsonpatch=require(_0x4356('0x2'));var rp=require(_0x4356('0x3'));var moment=require(_0x4356('0x4'));var BPromise=require(_0x4356('0x5'));var Mustache=require('mustache');var util=require(_0x4356('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x4356('0x7'));var ejs=require(_0x4356('0x8'));var fs=require('fs');var fs_extra=require(_0x4356('0x9'));var _=require(_0x4356('0xa'));var squel=require(_0x4356('0xb'));var crypto=require(_0x4356('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x4356('0xd'));var toCsv=require(_0x4356('0x7'));var querystring=require(_0x4356('0xe'));var Papa=require('papaparse');var Redis=require(_0x4356('0xf'));var authService=require(_0x4356('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x4356('0x11'));var hardwareService=require(_0x4356('0x12'));var logger=require(_0x4356('0x13'))(_0x4356('0x14'));var utils=require(_0x4356('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var csv_results;config[_0x4356('0x16')]=_['defaults'](config[_0x4356('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0x4356('0x17'))(new Redis(config[_0x4356('0x16')]));require(_0x4356('0x18'))['register'](socket);function respondWithStatusCode(_0x18d4cd,_0x10289c){_0x10289c=_0x10289c||0xcc;return function(_0x4c5461){if(_0x4c5461){return _0x18d4cd[_0x4356('0x19')](_0x10289c);}return _0x18d4cd[_0x4356('0x1a')](_0x10289c)[_0x4356('0x1b')]();};}function respondWithResult(_0x370647,_0x550476){_0x550476=_0x550476||0xc8;return function(_0x5cb37d){if(_0x5cb37d){return _0x370647[_0x4356('0x1a')](_0x550476)[_0x4356('0x1c')](_0x5cb37d);}};}function respondWithFilteredResult(_0x599698,_0x12dc5e){return function(_0x3c9366){if(_0x3c9366){var _0x19b611=typeof _0x12dc5e[_0x4356('0x1d')]===_0x4356('0x1e')&&typeof _0x12dc5e['limit']===_0x4356('0x1e');var _0x48a8c3=_0x3c9366[_0x4356('0x1f')];var _0xfacbce=_0x19b611?0x0:_0x12dc5e['offset'];var _0x4d3700=_0x19b611?_0x3c9366['count']:_0x12dc5e[_0x4356('0x1d')]+_0x12dc5e[_0x4356('0x20')];var _0x30d6e3;if(_0x4d3700>=_0x48a8c3){_0x4d3700=_0x48a8c3;_0x30d6e3=0xc8;}else{_0x30d6e3=0xce;}_0x599698[_0x4356('0x1a')](_0x30d6e3);return _0x599698['set']('Content-Range',_0xfacbce+'-'+_0x4d3700+'/'+_0x48a8c3)[_0x4356('0x1c')](_0x3c9366);}return null;};}function patchUpdates(_0x5bb3f8){return function(_0x554146){try{jsonpatch[_0x4356('0x21')](_0x554146,_0x5bb3f8,!![]);}catch(_0x4dd4ad){return BPromise['reject'](_0x4dd4ad);}return _0x554146[_0x4356('0x22')]();};}function saveUpdates(_0x4fd76f,_0x1ebbd2){return function(_0x174ff3){if(_0x174ff3){return _0x174ff3[_0x4356('0x23')](_0x4fd76f)[_0x4356('0x24')](function(_0x2beb6d){return _0x2beb6d;});}return null;};}function removeEntity(_0x5d074f,_0x2504b2){return function(_0x105a4e){if(_0x105a4e){return _0x105a4e[_0x4356('0x25')]()['then'](function(){var _0x2bcca8=_0x105a4e[_0x4356('0x26')]({'plain':!![]});var _0x2da5a1=_0x4356('0x27');return db[_0x4356('0x28')][_0x4356('0x25')]({'where':{'type':_0x2da5a1,'resourceId':_0x2bcca8['id']}})[_0x4356('0x24')](function(){return _0x105a4e;});})['then'](function(){_0x5d074f['status'](0xcc)[_0x4356('0x1b')]();});}};}function handleEntityNotFound(_0xe9b67d,_0x519ff1){return function(_0x51ea27){if(!_0x51ea27){_0xe9b67d['sendStatus'](0x194);}return _0x51ea27;};}function handleError(_0x2a77a7,_0x43eaa2){_0x43eaa2=_0x43eaa2||0x1f4;return function(_0x1eef60){logger[_0x4356('0x29')](_0x1eef60[_0x4356('0x2a')]);if(_0x1eef60['name']){delete _0x1eef60[_0x4356('0x2b')];}_0x2a77a7[_0x4356('0x1a')](_0x43eaa2)[_0x4356('0x2c')](_0x1eef60);};}exports[_0x4356('0x2d')]=function(_0x4504db,_0x45b1fb){var _0x387daa={},_0x4fb143={},_0x2a37ce={'count':0x0,'rows':[]};var _0x259d05=_[_0x4356('0x2e')](db[_0x4356('0x2f')][_0x4356('0x30')],function(_0x1acc36){return{'name':_0x1acc36[_0x4356('0x31')],'type':_0x1acc36[_0x4356('0x32')][_0x4356('0x33')]};});_0x4fb143[_0x4356('0x34')]=_[_0x4356('0x2e')](_0x259d05,_0x4356('0x2b'));_0x4fb143[_0x4356('0x35')]=_['keys'](_0x4504db['query']);_0x4fb143[_0x4356('0x36')]=_[_0x4356('0x37')](_0x4fb143[_0x4356('0x34')],_0x4fb143[_0x4356('0x35')]);_0x387daa[_0x4356('0x38')]=_[_0x4356('0x37')](_0x4fb143[_0x4356('0x34')],qs[_0x4356('0x39')](_0x4504db[_0x4356('0x35')]['fields']));_0x387daa[_0x4356('0x38')]=_0x387daa[_0x4356('0x38')][_0x4356('0x3a')]?_0x387daa[_0x4356('0x38')]:_0x4fb143[_0x4356('0x34')];if(!_0x4504db[_0x4356('0x35')][_0x4356('0x3b')](_0x4356('0x3c'))){_0x387daa['limit']=qs[_0x4356('0x20')](_0x4504db[_0x4356('0x35')][_0x4356('0x20')]);_0x387daa[_0x4356('0x1d')]=qs[_0x4356('0x1d')](_0x4504db[_0x4356('0x35')][_0x4356('0x1d')]);}_0x387daa[_0x4356('0x3d')]=qs['sort'](_0x4504db[_0x4356('0x35')]['sort']);_0x387daa[_0x4356('0x3e')]=qs['filters'](_['pick'](_0x4504db[_0x4356('0x35')],_0x4fb143['filters']),_0x259d05);if(_0x4504db[_0x4356('0x35')][_0x4356('0x3f')]){_0x387daa[_0x4356('0x3e')]=_[_0x4356('0x40')](_0x387daa[_0x4356('0x3e')],{'$or':_[_0x4356('0x2e')](_0x259d05,function(_0x3d1d44){if(_0x3d1d44['type']!==_0x4356('0x41')){var _0x12c351={};_0x12c351[_0x3d1d44[_0x4356('0x2b')]]={'$like':'%'+_0x4504db['query'][_0x4356('0x3f')]+'%'};return _0x12c351;}})});}_0x387daa=_['merge']({},_0x387daa,_0x4504db['options']);var _0x4bc82d={'where':_0x387daa[_0x4356('0x3e')]};return db[_0x4356('0x2f')][_0x4356('0x1f')](_0x4bc82d)[_0x4356('0x24')](function(_0x34503b){_0x2a37ce[_0x4356('0x1f')]=_0x34503b;if(_0x4504db['query']['includeAll']){_0x387daa[_0x4356('0x42')]=[{'all':!![]}];}return db['CmList']['findAll'](_0x387daa);})[_0x4356('0x24')](function(_0x4e48c2){_0x2a37ce[_0x4356('0x43')]=_0x4e48c2;return _0x2a37ce;})[_0x4356('0x24')](respondWithFilteredResult(_0x45b1fb,_0x387daa))['catch'](handleError(_0x45b1fb,null));};exports['show']=function(_0x597a13,_0x1faa99){var _0x13d7fc={'raw':![],'where':{'id':_0x597a13[_0x4356('0x44')]['id']}},_0x347eaa={};_0x347eaa[_0x4356('0x34')]=_['keys'](db[_0x4356('0x2f')]['rawAttributes']);_0x347eaa[_0x4356('0x35')]=_[_0x4356('0x45')](_0x597a13[_0x4356('0x35')]);_0x347eaa[_0x4356('0x36')]=_['intersection'](_0x347eaa[_0x4356('0x34')],_0x347eaa['query']);_0x13d7fc['attributes']=_[_0x4356('0x37')](_0x347eaa[_0x4356('0x34')],qs[_0x4356('0x39')](_0x597a13[_0x4356('0x35')][_0x4356('0x39')]));_0x13d7fc[_0x4356('0x38')]=_0x13d7fc[_0x4356('0x38')][_0x4356('0x3a')]?_0x13d7fc[_0x4356('0x38')]:_0x347eaa[_0x4356('0x34')];if(_0x597a13['query'][_0x4356('0x46')]){_0x13d7fc[_0x4356('0x42')]=[{'all':!![]}];}_0x13d7fc=_[_0x4356('0x40')]({},_0x13d7fc,_0x597a13[_0x4356('0x47')]);return db['CmList']['find'](_0x13d7fc)[_0x4356('0x24')](handleEntityNotFound(_0x1faa99,null))['then'](respondWithResult(_0x1faa99,null))[_0x4356('0x48')](handleError(_0x1faa99,null));};exports[_0x4356('0x49')]=function(_0x5d3686,_0x28fc56){return db[_0x4356('0x2f')][_0x4356('0x49')](_0x5d3686[_0x4356('0x4a')],{})[_0x4356('0x24')](function(_0xaeae72){var _0x939936=_0x5d3686[_0x4356('0x4b')][_0x4356('0x26')]({'plain':!![]});if(!_0x939936)throw new Error(_0x4356('0x4c'));if(_0x939936[_0x4356('0x4d')]===_0x4356('0x4b')){var _0x285092=_0xaeae72[_0x4356('0x26')]({'plain':!![]});var _0x2317e7=_0x4356('0x27');return db[_0x4356('0x4e')][_0x4356('0x4f')]({'where':{'name':_0x2317e7,'userProfileId':_0x939936[_0x4356('0x50')]},'raw':!![]})[_0x4356('0x24')](function(_0x199fac){if(_0x199fac&&_0x199fac[_0x4356('0x51')]===0x0){return db['UserProfileResource'][_0x4356('0x49')]({'name':_0x285092[_0x4356('0x2b')],'resourceId':_0x285092['id'],'type':_0x199fac[_0x4356('0x2b')],'sectionId':_0x199fac['id']},{})[_0x4356('0x24')](function(){return _0xaeae72;});}else{return _0xaeae72;}})[_0x4356('0x48')](function(_0x96b1cf){logger[_0x4356('0x29')](_0x4356('0x52'),_0x96b1cf);throw _0x96b1cf;});}return _0xaeae72;})[_0x4356('0x24')](respondWithResult(_0x28fc56,0xc9))[_0x4356('0x48')](handleError(_0x28fc56,null));};exports[_0x4356('0x23')]=function(_0x2270ac,_0x118ec1){if(_0x2270ac[_0x4356('0x4a')]['id']){delete _0x2270ac[_0x4356('0x4a')]['id'];}return db[_0x4356('0x2f')][_0x4356('0x4f')]({'where':{'id':_0x2270ac[_0x4356('0x44')]['id']}})[_0x4356('0x24')](handleEntityNotFound(_0x118ec1,null))[_0x4356('0x24')](saveUpdates(_0x2270ac[_0x4356('0x4a')],null))[_0x4356('0x24')](respondWithResult(_0x118ec1,null))[_0x4356('0x48')](handleError(_0x118ec1,null));};exports[_0x4356('0x25')]=function(_0x3f625b,_0xdfd29d){return db[_0x4356('0x2f')]['find']({'where':{'id':_0x3f625b[_0x4356('0x44')]['id']}})[_0x4356('0x24')](handleEntityNotFound(_0xdfd29d,null))[_0x4356('0x24')](removeEntity(_0xdfd29d,null))['catch'](handleError(_0xdfd29d,null));};exports['describe']=function(_0x3d9c63,_0x573ffd){return db[_0x4356('0x2f')][_0x4356('0x53')]()[_0x4356('0x24')](respondWithResult(_0x573ffd,null))[_0x4356('0x48')](handleError(_0x573ffd,null));};exports[_0x4356('0x54')]=function(_0xf16df4,_0x8a21ba,_0x375e81){if(_0xf16df4[_0x4356('0x4a')]['id']){delete _0xf16df4['body']['id'];}return db['CmList'][_0x4356('0x4f')]({'where':{'id':_0xf16df4[_0x4356('0x44')]['id']}})[_0x4356('0x24')](handleEntityNotFound(_0x8a21ba,null))['then'](function(_0x519ca3){if(_0x519ca3){_0xf16df4[_0x4356('0x4a')][_0x4356('0x55')]=_0x519ca3['id'];return db['Disposition'][_0x4356('0x49')](_0xf16df4[_0x4356('0x4a')]);}})[_0x4356('0x24')](respondWithResult(_0x8a21ba,null))['catch'](handleError(_0x8a21ba,null));};exports['getDispositions']=function(_0x4b79ad,_0x488cb3,_0x749ec3){var _0xf9f714={'raw':![],'where':{}};var _0x15b35e={};var _0x27176f={'count':0x0,'rows':[]};return db['CmList'][_0x4356('0x56')]({'where':{'id':_0x4b79ad[_0x4356('0x44')]['id']}})['then'](handleEntityNotFound(_0x488cb3,null))['then'](function(_0x3377fd){if(_0x3377fd){_0x15b35e[_0x4356('0x34')]=_[_0x4356('0x45')](db[_0x4356('0x57')]['rawAttributes']);_0x15b35e[_0x4356('0x35')]=_[_0x4356('0x45')](_0x4b79ad[_0x4356('0x35')]);_0x15b35e[_0x4356('0x36')]=_['intersection'](_0x15b35e[_0x4356('0x34')],_0x15b35e[_0x4356('0x35')]);_0xf9f714[_0x4356('0x38')]=_[_0x4356('0x37')](_0x15b35e[_0x4356('0x34')],qs[_0x4356('0x39')](_0x4b79ad[_0x4356('0x35')]['fields']));_0xf9f714[_0x4356('0x38')]=_0xf9f714['attributes'][_0x4356('0x3a')]?_0xf9f714[_0x4356('0x38')]:_0x15b35e[_0x4356('0x34')];if(!_0x4b79ad[_0x4356('0x35')][_0x4356('0x3b')](_0x4356('0x3c'))){_0xf9f714[_0x4356('0x20')]=qs[_0x4356('0x20')](_0x4b79ad[_0x4356('0x35')]['limit']);_0xf9f714['offset']=qs['offset'](_0x4b79ad[_0x4356('0x35')]['offset']);}_0xf9f714[_0x4356('0x3d')]=qs['sort'](_0x4b79ad[_0x4356('0x35')]['sort']);_0xf9f714[_0x4356('0x3e')]=qs[_0x4356('0x36')](_[_0x4356('0x58')](_0x4b79ad['query'],_0x15b35e[_0x4356('0x36')]));_0xf9f714['where'][_0x4356('0x55')]=_0x3377fd['id'];if(_0x4b79ad[_0x4356('0x35')][_0x4356('0x3f')]){_0xf9f714[_0x4356('0x3e')]=_[_0x4356('0x40')](_0xf9f714[_0x4356('0x3e')],{'$or':_[_0x4356('0x2e')](_0xf9f714[_0x4356('0x38')],function(_0x5ce947){var _0x2c9fb7={};_0x2c9fb7[_0x5ce947]={'$like':'%'+_0x4b79ad['query']['filter']+'%'};return _0x2c9fb7;})});}_0xf9f714=_[_0x4356('0x40')]({},_0xf9f714,_0x4b79ad[_0x4356('0x47')]);return db[_0x4356('0x57')][_0x4356('0x1f')]({'where':_0xf9f714[_0x4356('0x3e')]})[_0x4356('0x24')](function(_0x198f81){_0x27176f[_0x4356('0x1f')]=_0x198f81;if(_0x4b79ad[_0x4356('0x35')][_0x4356('0x46')]){_0xf9f714['include']=[{'all':!![]}];}return db['Disposition']['findAll'](_0xf9f714);})['then'](function(_0x47b079){_0x27176f['rows']=_0x47b079;return _0x27176f;});}})['then'](respondWithFilteredResult(_0x488cb3,_0xf9f714))['catch'](handleError(_0x488cb3,null));};exports['removeDispositions']=function(_0x41a9b3,_0x2acc0c,_0x598f2a){return db['CmList'][_0x4356('0x4f')]({'where':{'id':_0x41a9b3[_0x4356('0x44')]['id']}})[_0x4356('0x24')](handleEntityNotFound(_0x2acc0c,null))[_0x4356('0x24')](function(_0x5542e6){if(_0x5542e6){return _0x5542e6[_0x4356('0x59')](_0x41a9b3[_0x4356('0x35')]['ids']);}})[_0x4356('0x24')](respondWithStatusCode(_0x2acc0c,null))[_0x4356('0x48')](handleError(_0x2acc0c,null));};exports['addContacts']=function(_0x4b6c4f,_0x5c1569,_0x22ac61){return db['CmList'][_0x4356('0x4f')]({'where':{'id':_0x4b6c4f['params']['id']}})[_0x4356('0x24')](handleEntityNotFound(_0x5c1569,null))[_0x4356('0x24')](function(_0x135a4c){if(_0x135a4c){var _0xa69e17=[];var _0x49607d={'success':[],'errors':[]};return db['CmContact'][_0x4356('0x53')]()[_0x4356('0x24')](function(_0x39eb47){if(_0x4b6c4f[_0x4356('0x4a')][_0x4356('0x5a')]&&_[_0x4356('0x5b')](_0x4b6c4f[_0x4356('0x4a')][_0x4356('0x5a')])){if(_0x4b6c4f[_0x4356('0x4a')][_0x4356('0x5a')]['length']){_0x4b6c4f[_0x4356('0x4a')][_0x4356('0x5a')]=_0x4b6c4f[_0x4356('0x4a')][_0x4356('0x5a')]['join'](';')+';';}else{_0x4b6c4f[_0x4356('0x4a')][_0x4356('0x5a')]=null;}}else{_0x4b6c4f[_0x4356('0x4a')][_0x4356('0x5a')]=null;}if(_0x4b6c4f['body']&&_['isArray'](_0x4b6c4f['body'])){for(var _0x5a8bff=0x0;_0x5a8bff<_0x4b6c4f[_0x4356('0x4a')][_0x4356('0x3a')];_0x5a8bff+=0x1){_0x4b6c4f[_0x4356('0x4a')][_0x5a8bff]['ListId']=_0x4b6c4f[_0x4356('0x44')]['id'];_0xa69e17[_0x4356('0x5c')](_0x4b6c4f[_0x4356('0x4a')][_0x5a8bff]);}return BPromise[_0x4356('0x5d')](_0xa69e17,function(_0x48c3e6){return db[_0x4356('0x5e')][_0x4356('0x49')](_['omit'](_0x48c3e6,[_0x4356('0x5f'),'id'])||{},{'fields':_[_0x4356('0x45')](_0x39eb47),'raw':!![]})[_0x4356('0x24')](function(_0x2d2c32){_0x49607d[_0x4356('0x60')][_0x4356('0x5c')](_0x2d2c32[_0x4356('0x61')]);})[_0x4356('0x48')](function(_0x31107c){_0x49607d[_0x4356('0x62')]['push']({'data':_0x48c3e6,'error':_0x31107c['message']});});})[_0x4356('0x24')](function(_0x1fc403){return _0x49607d;})[_0x4356('0x48')](function(_0x231633){return _0x231633;});}else{_0x5c1569[_0x4356('0x1a')](0x190)[_0x4356('0x1c')]({'message':_0x4356('0x63')});}});}})[_0x4356('0x24')](respondWithResult(_0x5c1569,null))[_0x4356('0x48')](handleError(_0x5c1569,null));};exports[_0x4356('0x64')]=function(_0x435a18,_0x1c5443,_0x4b7da5){var _0x105f99;return db[_0x4356('0x2f')]['find']({'where':{'id':_0x435a18[_0x4356('0x44')]['id']},'include':[{'model':db['CmCustomField'],'as':_0x4356('0x65')}]})['then'](handleEntityNotFound(_0x1c5443,null))['then'](function(_0x24db66){if(_0x24db66){_0x105f99=_0x24db66;return db[_0x4356('0x5e')]['rawAttributes'];}})[_0x4356('0x24')](function(_0xf0dbe5){if(_0xf0dbe5){var _0x239448={};var _0x5b44d6={};_0x5b44d6[_0x4356('0x34')]=_[_0x4356('0x66')](_[_0x4356('0x45')](_0xf0dbe5),_[_0x4356('0x2e')](_0x105f99[_0x4356('0x65')],function(_0x5c0334){return util[_0x4356('0x67')](_0x4356('0x68'),_0x5c0334['id']);}));_0x5b44d6[_0x4356('0x35')]=_[_0x4356('0x45')](_0x435a18[_0x4356('0x35')]);_0x5b44d6['filters']=_[_0x4356('0x37')](_0x5b44d6[_0x4356('0x34')],_0x5b44d6[_0x4356('0x35')]);_0x239448[_0x4356('0x38')]=_[_0x4356('0x37')](_0x5b44d6[_0x4356('0x34')],qs[_0x4356('0x39')](_0x435a18[_0x4356('0x35')][_0x4356('0x39')]));_0x239448['attributes']=_0x239448['attributes'][_0x4356('0x3a')]?_0x239448['attributes']:_0x5b44d6[_0x4356('0x34')];if(!_0x435a18[_0x4356('0x35')]['hasOwnProperty']('nolimit')){_0x239448[_0x4356('0x20')]=qs[_0x4356('0x20')](_0x435a18[_0x4356('0x35')]['limit']);_0x239448[_0x4356('0x1d')]=qs[_0x4356('0x1d')](_0x435a18[_0x4356('0x35')][_0x4356('0x1d')]);}_0x239448[_0x4356('0x3d')]=qs[_0x4356('0x69')](_0x435a18[_0x4356('0x35')]['sort']);_0x239448[_0x4356('0x3e')]=qs[_0x4356('0x36')](_[_0x4356('0x58')](_0x435a18['query'],_0x5b44d6[_0x4356('0x36')]));_0x239448['raw']=!![];if(_0x435a18[_0x4356('0x35')][_0x4356('0x3f')]){_0x239448[_0x4356('0x3e')]=_['merge'](_0x239448[_0x4356('0x3e')],{'$or':_[_0x4356('0x2e')](_0x239448[_0x4356('0x38')],function(_0x4fbd25){var _0x58af6f={};_0x58af6f[_0x4fbd25]={'$like':'%'+_0x435a18['query'][_0x4356('0x3f')]+'%'};return _0x58af6f;})});}_0x239448=_[_0x4356('0x40')]({},_0x239448,_0x435a18[_0x4356('0x47')]);return _0x105f99[_0x4356('0x64')](_0x239448);}})[_0x4356('0x24')](respondWithResult(_0x1c5443,null))[_0x4356('0x48')](handleError(_0x1c5443,null));};exports[_0x4356('0x6a')]=function(_0x41d016,_0x51ff4f,_0x106bbd){var _0x411b03;var _0x2a0cc2;var _0x473fca;var _0x2731d4=_0x41d016[_0x4356('0x44')]['id'];csv_results=[];return db[_0x4356('0x6b')][_0x4356('0x6c')]({'attributes':['id',_0x4356('0x2b')],'raw':!![],'order':[_0x4356('0x6d')]})[_0x4356('0x24')](function(_0x173773){_0x411b03=_0x173773;var _0x59a88d=_[_0x4356('0x45')](db[_0x4356('0x5e')]['rawAttributes']);return db['CmCustomField'][_0x4356('0x6c')]({'raw':!![],'attributes':['id',_0x4356('0x6e')]})[_0x4356('0x24')](function(_0x46bb58){_0x2a0cc2=_0x46bb58;var _0x248632=squel['select']()[_0x4356('0x39')](_0x59a88d)[_0x4356('0x6f')](_0x4356('0x70'),'c')[_0x4356('0x3e')]('c.ListId\x20=\x20?',_0x2731d4)[_0x4356('0x3e')](_0x4356('0x71'))[_0x4356('0x72')]();for(var _0x12144d=0x0;_0x12144d<_0x2a0cc2[_0x4356('0x3a')];_0x12144d++){_0x248632[_0x4356('0x73')](_0x4356('0x74')+_0x2a0cc2[_0x12144d]['id'],'customField_'+_0x2a0cc2[_0x12144d][_0x4356('0x6e')]);}for(var _0x12144d=0x0;_0x12144d<_0x411b03['length'];_0x12144d++){_0x248632[_0x4356('0x73')](squel[_0x4356('0x75')]()[_0x4356('0x73')](_0x4356('0x76'))[_0x4356('0x6f')](_0x4356('0x77'))[_0x4356('0x3e')](_0x4356('0x78'),_0x411b03[_0x12144d]['id'])[_0x4356('0x3e')]('CmContactId\x20=\x20c.id'),'additionalPhone_'+_0x411b03[_0x12144d][_0x4356('0x2b')]);_0x248632[_0x4356('0x73')](squel[_0x4356('0x75')]()[_0x4356('0x73')](_0x4356('0x79'))[_0x4356('0x6f')](_0x4356('0x77'))['where'](_0x4356('0x78'),_0x411b03[_0x12144d]['id'])['where'](_0x4356('0x7a')),_0x4356('0x7b')+_0x411b03[_0x12144d][_0x4356('0x2b')]);}var _0x5ac7dc=[];_0x5ac7dc[_0x4356('0x5c')](_0x248632[_0x4356('0x7c')]());BPromise['each'](_0x5ac7dc,handleQuery)[_0x4356('0x24')](function(_0xc3e90f){handleQuery(_0x248632[_0x4356('0x7c')]());var _0x4c1cfd=csv_results[0x0];if(!_['isEmpty'](_0x4c1cfd)){var _0x505cf9=toCsv(_0x4c1cfd);var _0x1ed6d6=Date[_0x4356('0x7d')]();fs[_0x4356('0x7e')](util[_0x4356('0x67')]('/tmp/list_%d_%s.csv',_0x2731d4,_0x1ed6d6),_0x505cf9);_0x51ff4f[_0x4356('0x7f')](_0x4356('0x80'),'attachment;\x20filename='+util[_0x4356('0x67')](_0x4356('0x81'),_0x2731d4,_0x1ed6d6));_0x51ff4f['setHeader']('Content-type',_0x4356('0x82'));return _0x51ff4f[_0x4356('0x83')](util[_0x4356('0x67')](_0x4356('0x84'),_0x2731d4,_0x1ed6d6));}else{return _0x51ff4f[_0x4356('0x19')](0xcc);}});});});};exports[_0x4356('0x85')]=function(_0x3dee9e,_0x2a10c0,_0x54a1c0){var _0x1b1333;delete _0x3dee9e[_0x4356('0x4a')]['id'];return db[_0x4356('0x2f')][_0x4356('0x56')]({'where':{'id':_0x3dee9e[_0x4356('0x44')]['id']}})[_0x4356('0x24')](handleEntityNotFound(_0x2a10c0,null))[_0x4356('0x24')](function(_0x1470c1){if(_0x1470c1){return db[_0x4356('0x86')][_0x4356('0x87')](function(_0x3df033){return db[_0x4356('0x88')][_0x4356('0x49')](_0x3dee9e[_0x4356('0x4a')],{'transaction':_0x3df033})[_0x4356('0x24')](function(_0x2cb9ed){_0x1b1333=_0x2cb9ed;return _0x1470c1[_0x4356('0x89')](_0x2cb9ed,{'transaction':_0x3df033});})['then'](function(){var _0x813e14={'type':db[_0x4356('0x8a')][_0x4356('0x8b')],'transaction':_0x3df033};switch(_0x3dee9e[_0x4356('0x4a')][_0x4356('0x32')]){case'text':_0x813e14[_0x4356('0x32')]=db[_0x4356('0x8a')][_0x4356('0x8b')];break;case'number':_0x813e14[_0x4356('0x32')]=db[_0x4356('0x8a')][_0x4356('0x8c')];break;case _0x4356('0x8d'):_0x813e14[_0x4356('0x32')]=db[_0x4356('0x8a')][_0x4356('0x8e')];_0x813e14[_0x4356('0x8f')]=![];break;default:}return db[_0x4356('0x86')]['queryInterface']['addColumn'](_0x4356('0x70'),util[_0x4356('0x67')](_0x4356('0x90'),_0x1b1333['id']),_0x813e14);})[_0x4356('0x24')](function(){return _0x1b1333;});});}})[_0x4356('0x24')](respondWithResult(_0x2a10c0,null))['catch'](handleError(_0x2a10c0,null));};exports[_0x4356('0x91')]=function(_0x49c6be,_0x47e924,_0x491d44){var _0x4089a5={};var _0x429877={};var _0x2361d0;var _0x4c3666;return db[_0x4356('0x2f')][_0x4356('0x56')]({'where':{'id':_0x49c6be['params']['id']}})[_0x4356('0x24')](handleEntityNotFound(_0x47e924,null))['then'](function(_0x317ec9){if(_0x317ec9){_0x2361d0=_0x317ec9;_0x429877[_0x4356('0x34')]=_['keys'](db[_0x4356('0x88')][_0x4356('0x30')]);_0x429877[_0x4356('0x35')]=_[_0x4356('0x45')](_0x49c6be[_0x4356('0x35')]);_0x429877[_0x4356('0x36')]=_['intersection'](_0x429877[_0x4356('0x34')],_0x429877[_0x4356('0x35')]);_0x4089a5[_0x4356('0x38')]=_[_0x4356('0x37')](_0x429877['model'],qs[_0x4356('0x39')](_0x49c6be['query']['fields']));_0x4089a5[_0x4356('0x38')]=_0x4089a5[_0x4356('0x38')]['length']?_0x4089a5['attributes']:_0x429877[_0x4356('0x34')];_0x4089a5[_0x4356('0x3d')]=qs[_0x4356('0x69')](_0x49c6be[_0x4356('0x35')][_0x4356('0x69')]);_0x4089a5['where']=qs[_0x4356('0x36')](_[_0x4356('0x58')](_0x49c6be[_0x4356('0x35')],_0x429877['filters']));_0x4089a5[_0x4356('0x3e')]=_[_0x4356('0x40')](_0x4089a5[_0x4356('0x3e')],{'$or':[{'ListId':_0x317ec9['id']},{'ListId':null}]});if(_0x49c6be[_0x4356('0x35')]['filter']){_0x4089a5[_0x4356('0x3e')]=_['merge'](_0x4089a5['where'],{'$or':_[_0x4356('0x2e')](_0x4089a5[_0x4356('0x38')],function(_0xb4f7e7){var _0x20121f={};_0x20121f[_0xb4f7e7]={'$like':'%'+_0x49c6be[_0x4356('0x35')]['filter']+'%'};return _0x20121f;})});}_0x4089a5=_[_0x4356('0x40')]({},_0x4089a5,_0x49c6be[_0x4356('0x47')]);return db[_0x4356('0x88')][_0x4356('0x92')](_0x4089a5);}})[_0x4356('0x24')](respondWithResult(_0x47e924,null))[_0x4356('0x48')](handleError(_0x47e924,null));};exports[_0x4356('0x93')]=function(_0x2bbd57,_0x596087){return db['CmCustomField']['findAndCountAll']({'where':{'ListId':null}})[_0x4356('0x24')](handleEntityNotFound(_0x596087,null))[_0x4356('0x24')](function(_0xd03739){return _0xd03739;})[_0x4356('0x24')](respondWithResult(_0x596087,null))[_0x4356('0x48')](handleError(_0x596087,null));};exports['addAgents']=function(_0x1eb392,_0x2c1d0c,_0x2c882c){return db[_0x4356('0x2f')][_0x4356('0x4f')]({'where':{'id':_0x1eb392[_0x4356('0x44')]['id']}})[_0x4356('0x24')](handleEntityNotFound(_0x2c1d0c,null))[_0x4356('0x24')](function(_0x1eae3a){if(_0x1eae3a){return _0x1eae3a['addAgents'](_0x1eb392[_0x4356('0x4a')]['ids'],_[_0x4356('0x94')](_0x1eb392[_0x4356('0x4a')],[_0x4356('0x5f'),'id'])||{})[_0x4356('0x95')](function(_0x130cea){for(var _0x26e157=0x0;_0x26e157<_0x1eb392[_0x4356('0x4a')][_0x4356('0x5f')][_0x4356('0x3a')];_0x26e157+=0x1){socket[_0x4356('0x96')](_0x4356('0x97'),{'UserId':Number(_0x1eb392[_0x4356('0x4a')][_0x4356('0x5f')][_0x26e157]),'CmListId':Number(_0x1eb392[_0x4356('0x44')]['id'])});}return _0x130cea;});}})[_0x4356('0x24')](respondWithResult(_0x2c1d0c,null))[_0x4356('0x48')](handleError(_0x2c1d0c,null));};exports[_0x4356('0x98')]=function(_0x29dafa,_0x4bd433,_0x46b61e){return db[_0x4356('0x2f')][_0x4356('0x4f')]({'where':{'id':_0x29dafa[_0x4356('0x44')]['id']}})[_0x4356('0x24')](handleEntityNotFound(_0x4bd433,null))[_0x4356('0x24')](function(_0x1b27e7){if(_0x1b27e7){return _0x1b27e7['removeAgents'](_0x29dafa['query'][_0x4356('0x5f')])[_0x4356('0x24')](function(){if(_[_0x4356('0x5b')](_0x29dafa['query'][_0x4356('0x5f')])){for(var _0xc4dda=0x0;_0xc4dda<_0x29dafa['query'][_0x4356('0x5f')]['length'];_0xc4dda+=0x1){socket[_0x4356('0x96')]('userCmList:remove',{'UserId':Number(_0x29dafa[_0x4356('0x35')]['ids'][_0xc4dda]),'CmListId':Number(_0x29dafa['params']['id'])});}}else{socket[_0x4356('0x96')](_0x4356('0x99'),{'UserId':Number(_0x29dafa['query'][_0x4356('0x5f')]),'CmListId':Number(_0x29dafa[_0x4356('0x44')]['id'])});}});}})[_0x4356('0x24')](respondWithStatusCode(_0x4bd433,null))['catch'](handleError(_0x4bd433,null));};exports['getAgents']=function(_0x9bface,_0x18da61,_0x5e6166){var _0x6de43={};var _0x580343={};var _0x1975f7;var _0x4e16b5;return db['CmList'][_0x4356('0x56')]({'where':{'id':_0x9bface[_0x4356('0x44')]['id']}})[_0x4356('0x24')](handleEntityNotFound(_0x18da61,null))[_0x4356('0x24')](function(_0x2d442e){if(_0x2d442e){_0x1975f7=_0x2d442e;_0x580343[_0x4356('0x34')]=_[_0x4356('0x45')](db['User'][_0x4356('0x30')]);_0x580343[_0x4356('0x35')]=_[_0x4356('0x45')](_0x9bface[_0x4356('0x35')]);_0x580343['filters']=_[_0x4356('0x37')](_0x580343['model'],_0x580343[_0x4356('0x35')]);_0x6de43['attributes']=_[_0x4356('0x37')](_0x580343[_0x4356('0x34')],qs[_0x4356('0x39')](_0x9bface[_0x4356('0x35')][_0x4356('0x39')]));_0x6de43[_0x4356('0x38')]=_0x6de43['attributes'][_0x4356('0x3a')]?_0x6de43[_0x4356('0x38')]:_0x580343['model'];_0x6de43[_0x4356('0x3d')]=qs['sort'](_0x9bface['query']['sort']);_0x6de43[_0x4356('0x3e')]=qs[_0x4356('0x36')](_['pick'](_0x9bface[_0x4356('0x35')],_0x580343[_0x4356('0x36')]));if(_0x9bface[_0x4356('0x35')]['filter']){_0x6de43[_0x4356('0x3e')]=_[_0x4356('0x40')](_0x6de43['where'],{'$or':_[_0x4356('0x2e')](_0x6de43[_0x4356('0x38')],function(_0x54cf0a){var _0x51f309={};_0x51f309[_0x54cf0a]={'$like':'%'+_0x9bface[_0x4356('0x35')][_0x4356('0x3f')]+'%'};return _0x51f309;})});}_0x6de43=_['merge']({},_0x6de43,_0x9bface[_0x4356('0x47')]);return _0x1975f7['getAgents'](_0x6de43);}})[_0x4356('0x24')](function(_0x2719f3){if(_0x2719f3){_0x4e16b5=_0x2719f3['length'];if(!_0x9bface[_0x4356('0x35')]['hasOwnProperty'](_0x4356('0x3c'))){_0x6de43[_0x4356('0x20')]=qs[_0x4356('0x20')](_0x9bface[_0x4356('0x35')][_0x4356('0x20')]);_0x6de43[_0x4356('0x1d')]=qs[_0x4356('0x1d')](_0x9bface['query'][_0x4356('0x1d')]);}return _0x1975f7[_0x4356('0x9a')](_0x6de43);}})[_0x4356('0x24')](function(_0x33bb88){if(_0x33bb88){return _0x33bb88?{'count':_0x4e16b5,'rows':_0x33bb88}:null;}})[_0x4356('0x24')](respondWithResult(_0x18da61,null))[_0x4356('0x48')](handleError(_0x18da61,null));};function handleQuery(_0x12f442){logger[_0x4356('0x9b')](_0x12f442);return db[_0x4356('0x86')][_0x4356('0x35')](_0x12f442)['spread'](function(_0x33ed6d){csv_results['push'](_0x33ed6d);})[_0x4356('0x48')](function(_0xf62401){logger[_0x4356('0x29')](_0xf62401['message']);});}
\ No newline at end of file
index 64fbc35..9c1a29d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['emit','hasOwnProperty','hook','exports','events','CmList','setMaxListeners','save','update','remove'];(function(_0x2c7780,_0x100f4a){var _0x580bc8=function(_0x3d435c){while(--_0x3d435c){_0x2c7780['push'](_0x2c7780['shift']());}};_0x580bc8(++_0x100f4a);}(_0x7217,0x19e));var _0x7721=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0x7217[_0x139a3c];return _0x2b375b;};'use strict';var EventEmitter=require(_0x7721('0x0'));var CmList=require('../../mysqldb')['db'][_0x7721('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x7721('0x2')](0x0);var events={'afterCreate':_0x7721('0x3'),'afterUpdate':_0x7721('0x4'),'afterDestroy':_0x7721('0x5')};function emitEvent(_0x4d6446){return function(_0x5bf160,_0x472a96,_0xce17f9){CmListEvents[_0x7721('0x6')](_0x4d6446+':'+_0x5bf160['id'],_0x5bf160);CmListEvents[_0x7721('0x6')](_0x4d6446,_0x5bf160);_0xce17f9(null);};}for(var e in events){if(events[_0x7721('0x7')](e)){var event=events[e];CmList[_0x7721('0x8')](e,emitEvent(event));}}module[_0x7721('0x9')]=CmListEvents;
\ No newline at end of file
+var _0x7217=['emit','hasOwnProperty','hook','exports','events','CmList','setMaxListeners','save','update','remove'];(function(_0x56a871,_0x18b7fe){var _0x124954=function(_0x39b7a1){while(--_0x39b7a1){_0x56a871['push'](_0x56a871['shift']());}};_0x124954(++_0x18b7fe);}(_0x7217,0x19e));var _0x7721=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0x7217[_0x34bc30];return _0x5706de;};'use strict';var EventEmitter=require(_0x7721('0x0'));var CmList=require('../../mysqldb')['db'][_0x7721('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x7721('0x2')](0x0);var events={'afterCreate':_0x7721('0x3'),'afterUpdate':_0x7721('0x4'),'afterDestroy':_0x7721('0x5')};function emitEvent(_0x4d6446){return function(_0x5bf160,_0x472a96,_0xce17f9){CmListEvents[_0x7721('0x6')](_0x4d6446+':'+_0x5bf160['id'],_0x5bf160);CmListEvents[_0x7721('0x6')](_0x4d6446,_0x5bf160);_0xce17f9(null);};}for(var e in events){if(events[_0x7721('0x7')](e)){var event=events[e];CmList[_0x7721('0x8')](e,emitEvent(event));}}module[_0x7721('0x9')]=CmListEvents;
\ No newline at end of file
index c68b99f..51a7141 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c81=['moment','../../config/environment','./cmList.attributes','exports','define','CmList','lodash','util','api'];(function(_0x323fd3,_0x5ca5a4){var _0x526412=function(_0x12d765){while(--_0x12d765){_0x323fd3['push'](_0x323fd3['shift']());}};_0x526412(++_0x5ca5a4);}(_0x3c81,0x102));var _0x13c8=function(_0x51bbb7,_0x32f055){_0x51bbb7=_0x51bbb7-0x0;var _0x1ea30b=_0x3c81[_0x51bbb7];return _0x1ea30b;};'use strict';var _=require(_0x13c8('0x0'));var util=require(_0x13c8('0x1'));var logger=require('../../config/logger')(_0x13c8('0x2'));var moment=require(_0x13c8('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x13c8('0x4'));var attributes=require(_0x13c8('0x5'));module[_0x13c8('0x6')]=function(_0x1c16f1,_0x2a4d66){return _0x1c16f1[_0x13c8('0x7')](_0x13c8('0x8'),attributes,{'tableName':'cm_lists','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa8a8=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./cmList.attributes','exports','define','CmList','cm_lists','lodash','util'];(function(_0x34b072,_0x883879){var _0xce6e47=function(_0xdffbe){while(--_0xdffbe){_0x34b072['push'](_0x34b072['shift']());}};_0xce6e47(++_0x883879);}(_0xa8a8,0xec));var _0x8a8a=function(_0x40fd80,_0x3eb392){_0x40fd80=_0x40fd80-0x0;var _0x38b9d0=_0xa8a8[_0x40fd80];return _0x38b9d0;};'use strict';var _=require(_0x8a8a('0x0'));var util=require(_0x8a8a('0x1'));var logger=require(_0x8a8a('0x2'))(_0x8a8a('0x3'));var moment=require('moment');var BPromise=require(_0x8a8a('0x4'));var rp=require(_0x8a8a('0x5'));var fs=require('fs');var path=require(_0x8a8a('0x6'));var rimraf=require(_0x8a8a('0x7'));var config=require(_0x8a8a('0x8'));var attributes=require(_0x8a8a('0x9'));module[_0x8a8a('0xa')]=function(_0x12db82,_0x2e8193){return _0x12db82[_0x8a8a('0xb')](_0x8a8a('0xc'),attributes,{'tableName':_0x8a8a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1cd75b4..45ffdfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12a5=['util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./cmList.socket','register','request','then','info','CmList,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x12a5,0x1af));var _0x512a=function(_0x4c73f2,_0x5160fb){_0x4c73f2=_0x4c73f2-0x0;var _0x259697=_0x12a5[_0x4c73f2];return _0x259697;};'use strict';var _=require(_0x512a('0x0'));var util=require(_0x512a('0x1'));var moment=require('moment');var BPromise=require(_0x512a('0x2'));var rs=require(_0x512a('0x3'));var fs=require('fs');var Redis=require(_0x512a('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x512a('0x5'));var logger=require(_0x512a('0x6'))(_0x512a('0x7'));var config=require('../../config/environment');var jayson=require(_0x512a('0x8'));var client=jayson['client'][_0x512a('0x9')]({'port':0x232a});config[_0x512a('0xa')]=_[_0x512a('0xb')](config['redis'],{'host':_0x512a('0xc'),'port':0x18eb});var socket=require(_0x512a('0xd'))(new Redis(config[_0x512a('0xa')]));require(_0x512a('0xe'))[_0x512a('0xf')](socket);function respondWithRpcPromise(_0x286667,_0x1d2bd8,_0x110b21){return new BPromise(function(_0x59c44b,_0x42d892){return client[_0x512a('0x10')](_0x286667,_0x110b21)[_0x512a('0x11')](function(_0x171f1d){logger[_0x512a('0x12')](_0x512a('0x13'),_0x1d2bd8,'request\x20sent');logger[_0x512a('0x14')]('CmList,\x20%s,\x20%s,\x20%s',_0x1d2bd8,_0x512a('0x15'),JSON[_0x512a('0x16')](_0x171f1d));if(_0x171f1d[_0x512a('0x17')]){if(_0x171f1d[_0x512a('0x17')][_0x512a('0x18')]===0x1f4){logger['error'](_0x512a('0x13'),_0x1d2bd8,_0x171f1d['error'][_0x512a('0x19')]);return _0x42d892(_0x171f1d[_0x512a('0x17')][_0x512a('0x19')]);}logger[_0x512a('0x17')](_0x512a('0x13'),_0x1d2bd8,_0x171f1d[_0x512a('0x17')][_0x512a('0x19')]);return _0x59c44b(_0x171f1d[_0x512a('0x17')][_0x512a('0x19')]);}else{logger[_0x512a('0x12')](_0x512a('0x13'),_0x1d2bd8,_0x512a('0x15'));_0x59c44b(_0x171f1d['result']['message']);}})[_0x512a('0x1a')](function(_0x539e7c){logger[_0x512a('0x17')]('CmList,\x20%s,\x20%s',_0x1d2bd8,_0x539e7c);_0x42d892(_0x539e7c);});});}
\ No newline at end of file
+var _0x4dfc=['moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','info','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CmList,\x20%s,\x20%s','request\x20sent','result','lodash','util'];(function(_0x5b3b9b,_0x1c71b0){var _0x47c1d7=function(_0x34c20b){while(--_0x34c20b){_0x5b3b9b['push'](_0x5b3b9b['shift']());}};_0x47c1d7(++_0x1c71b0);}(_0x4dfc,0x19e));var _0xc4df=function(_0x212579,_0xdb4d5a){_0x212579=_0x212579-0x0;var _0x55d50e=_0x4dfc[_0x212579];return _0x55d50e;};'use strict';var _=require(_0xc4df('0x0'));var util=require(_0xc4df('0x1'));var moment=require(_0xc4df('0x2'));var BPromise=require(_0xc4df('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc4df('0x4'));var db=require(_0xc4df('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc4df('0x6'));var config=require(_0xc4df('0x7'));var jayson=require(_0xc4df('0x8'));var client=jayson[_0xc4df('0x9')][_0xc4df('0xa')]({'port':0x232a});config[_0xc4df('0xb')]=_[_0xc4df('0xc')](config[_0xc4df('0xb')],{'host':_0xc4df('0xd'),'port':0x18eb});var socket=require(_0xc4df('0xe'))(new Redis(config['redis']));require('./cmList.socket')[_0xc4df('0xf')](socket);function respondWithRpcPromise(_0x43bbfb,_0x3cef08,_0x2a767f){return new BPromise(function(_0x304a4b,_0x407286){return client['request'](_0x43bbfb,_0x2a767f)['then'](function(_0x5517dc){logger[_0xc4df('0x10')]('CmList,\x20%s,\x20%s',_0x3cef08,'request\x20sent');logger[_0xc4df('0x11')](_0xc4df('0x12'),_0x3cef08,'request\x20sent',JSON[_0xc4df('0x13')](_0x5517dc));if(_0x5517dc[_0xc4df('0x14')]){if(_0x5517dc['error'][_0xc4df('0x15')]===0x1f4){logger['error']('CmList,\x20%s,\x20%s',_0x3cef08,_0x5517dc[_0xc4df('0x14')]['message']);return _0x407286(_0x5517dc[_0xc4df('0x14')][_0xc4df('0x16')]);}logger[_0xc4df('0x14')](_0xc4df('0x17'),_0x3cef08,_0x5517dc[_0xc4df('0x14')][_0xc4df('0x16')]);return _0x304a4b(_0x5517dc[_0xc4df('0x14')][_0xc4df('0x16')]);}else{logger[_0xc4df('0x10')](_0xc4df('0x17'),_0x3cef08,_0xc4df('0x18'));_0x304a4b(_0x5517dc[_0xc4df('0x19')]['message']);}})['catch'](function(_0x27447){logger[_0xc4df('0x14')](_0xc4df('0x17'),_0x3cef08,_0x27447);_0x407286(_0x27447);});});}
\ No newline at end of file
index e981de3..562b82c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25bc=['save','remove','register','length','./cmList.events'];(function(_0x1d17a7,_0x49670a){var _0x491e32=function(_0x1e88fa){while(--_0x1e88fa){_0x1d17a7['push'](_0x1d17a7['shift']());}};_0x491e32(++_0x49670a);}(_0x25bc,0x13f));var _0xc25b=function(_0x204093,_0x2549bb){_0x204093=_0x204093-0x0;var _0x31a20b=_0x25bc[_0x204093];return _0x31a20b;};'use strict';var CmListEvents=require(_0xc25b('0x0'));var events=[_0xc25b('0x1'),_0xc25b('0x2'),'update'];function createListener(_0x47b90d,_0x4f2684){return function(_0x3c652b){_0x4f2684['emit'](_0x47b90d,_0x3c652b);};}function removeListener(_0x3082af,_0x1c18e0){return function(){CmListEvents['removeListener'](_0x3082af,_0x1c18e0);};}exports[_0xc25b('0x3')]=function(_0x34e1cd){for(var _0x5394af=0x0,_0x461d9a=events[_0xc25b('0x4')];_0x5394af<_0x461d9a;_0x5394af++){var _0x256ea2=events[_0x5394af];var _0x38a855=createListener('cmList:'+_0x256ea2,_0x34e1cd);CmListEvents['on'](_0x256ea2,_0x38a855);}};
\ No newline at end of file
+var _0x8cd2=['update','emit','removeListener','register','length','save','remove'];(function(_0x36c5b0,_0x5001da){var _0xf19333=function(_0x1e880a){while(--_0x1e880a){_0x36c5b0['push'](_0x36c5b0['shift']());}};_0xf19333(++_0x5001da);}(_0x8cd2,0x14e));var _0x28cd=function(_0x1fe7bf,_0x24493f){_0x1fe7bf=_0x1fe7bf-0x0;var _0x340e1f=_0x8cd2[_0x1fe7bf];return _0x340e1f;};'use strict';var CmListEvents=require('./cmList.events');var events=[_0x28cd('0x0'),_0x28cd('0x1'),_0x28cd('0x2')];function createListener(_0x1d2d5,_0x5d1691){return function(_0x17a74b){_0x5d1691[_0x28cd('0x3')](_0x1d2d5,_0x17a74b);};}function removeListener(_0x9923b0,_0x459f9e){return function(){CmListEvents[_0x28cd('0x4')](_0x9923b0,_0x459f9e);};}exports[_0x28cd('0x5')]=function(_0x52d39b){for(var _0x361b39=0x0,_0x4aacc8=events[_0x28cd('0x6')];_0x361b39<_0x4aacc8;_0x361b39++){var _0x4a7412=events[_0x361b39];var _0x42712e=createListener('cmList:'+_0x4a7412,_0x52d39b);CmListEvents['on'](_0x4a7412,_0x42712e);}};
\ No newline at end of file
index 849d6e9..87ea33c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0384=['isAuthenticated','/describe','describe','/global_fields','getGlobalCustomFields','/:id','show','/:id/dispositions','/:id/contacts','getContactsCsv','/:id/fields','getCustomFields','/:id/users','getAgents','post','create','addContacts','addCustomField','addAgents','destroy','delete','removeDispositions','removeAgents','multer','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./cmList.controller','get'];(function(_0x2751d3,_0xf6726a){var _0x587c44=function(_0x49a41d){while(--_0x49a41d){_0x2751d3['push'](_0x2751d3['shift']());}};_0x587c44(++_0xf6726a);}(_0x0384,0xb2));var _0x4038=function(_0x3fa568,_0x1a33bb){_0x3fa568=_0x3fa568-0x0;var _0x29ea0c=_0x0384[_0x3fa568];return _0x29ea0c;};'use strict';var multer=require(_0x4038('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x4038('0x1'));var express=require(_0x4038('0x2'));var router=express[_0x4038('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x4038('0x4'));var config=require(_0x4038('0x5'));var controller=require(_0x4038('0x6'));router[_0x4038('0x7')]('/',auth[_0x4038('0x8')](),controller['index']);router[_0x4038('0x7')](_0x4038('0x9'),auth['isAuthenticated'](),controller[_0x4038('0xa')]);router[_0x4038('0x7')](_0x4038('0xb'),auth[_0x4038('0x8')](),controller[_0x4038('0xc')]);router[_0x4038('0x7')](_0x4038('0xd'),auth[_0x4038('0x8')](),controller[_0x4038('0xe')]);router[_0x4038('0x7')](_0x4038('0xf'),auth['isAuthenticated'](),controller['getDispositions']);router[_0x4038('0x7')](_0x4038('0x10'),auth[_0x4038('0x8')](),controller['getContacts']);router[_0x4038('0x7')]('/:id/contacts/csv',auth['isAuthenticated'](),controller[_0x4038('0x11')]);router[_0x4038('0x7')](_0x4038('0x12'),auth['isAuthenticated'](),controller[_0x4038('0x13')]);router[_0x4038('0x7')](_0x4038('0x14'),auth[_0x4038('0x8')](),controller[_0x4038('0x15')]);router[_0x4038('0x16')]('/',auth[_0x4038('0x8')](),controller[_0x4038('0x17')]);router[_0x4038('0x16')](_0x4038('0xf'),auth[_0x4038('0x8')](),controller['addDisposition']);router[_0x4038('0x16')]('/:id/contacts',auth['isAuthenticated'](),controller[_0x4038('0x18')]);router['post'](_0x4038('0x12'),auth[_0x4038('0x8')](),controller[_0x4038('0x19')]);router['post'](_0x4038('0x14'),auth[_0x4038('0x8')](),controller[_0x4038('0x1a')]);router['put'](_0x4038('0xd'),auth[_0x4038('0x8')](),controller['update']);router['delete'](_0x4038('0xd'),auth['isAuthenticated'](),controller[_0x4038('0x1b')]);router[_0x4038('0x1c')](_0x4038('0xf'),auth[_0x4038('0x8')](),controller[_0x4038('0x1d')]);router[_0x4038('0x1c')](_0x4038('0x14'),auth['isAuthenticated'](),controller[_0x4038('0x1e')]);module['exports']=router;
\ No newline at end of file
+var _0x2488=['put','destroy','delete','removeDispositions','/:id/users','removeAgents','exports','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmList.controller','isAuthenticated','index','get','describe','/:id','show','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','/:id/fields','getCustomFields','create','/:id/dispositions','addDisposition','post','addContacts','addCustomField','addAgents'];(function(_0x3cb3ca,_0x44d697){var _0x214366=function(_0x6b38e1){while(--_0x6b38e1){_0x3cb3ca['push'](_0x3cb3ca['shift']());}};_0x214366(++_0x44d697);}(_0x2488,0xac));var _0x8248=function(_0x5b7d6a,_0x63e6a2){_0x5b7d6a=_0x5b7d6a-0x0;var _0x992adf=_0x2488[_0x5b7d6a];return _0x992adf;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x8248('0x0'));var express=require(_0x8248('0x1'));var router=express[_0x8248('0x2')]();var fs_extra=require(_0x8248('0x3'));var auth=require(_0x8248('0x4'));var interaction=require(_0x8248('0x5'));var config=require('../../config/environment');var controller=require(_0x8248('0x6'));router['get']('/',auth[_0x8248('0x7')](),controller[_0x8248('0x8')]);router[_0x8248('0x9')]('/describe',auth[_0x8248('0x7')](),controller[_0x8248('0xa')]);router[_0x8248('0x9')]('/global_fields',auth[_0x8248('0x7')](),controller['getGlobalCustomFields']);router['get'](_0x8248('0xb'),auth['isAuthenticated'](),controller[_0x8248('0xc')]);router[_0x8248('0x9')]('/:id/dispositions',auth[_0x8248('0x7')](),controller[_0x8248('0xd')]);router[_0x8248('0x9')](_0x8248('0xe'),auth[_0x8248('0x7')](),controller[_0x8248('0xf')]);router['get'](_0x8248('0x10'),auth['isAuthenticated'](),controller['getContactsCsv']);router['get'](_0x8248('0x11'),auth['isAuthenticated'](),controller[_0x8248('0x12')]);router[_0x8248('0x9')]('/:id/users',auth[_0x8248('0x7')](),controller['getAgents']);router['post']('/',auth[_0x8248('0x7')](),controller[_0x8248('0x13')]);router['post'](_0x8248('0x14'),auth[_0x8248('0x7')](),controller[_0x8248('0x15')]);router[_0x8248('0x16')](_0x8248('0xe'),auth[_0x8248('0x7')](),controller[_0x8248('0x17')]);router['post'](_0x8248('0x11'),auth[_0x8248('0x7')](),controller[_0x8248('0x18')]);router[_0x8248('0x16')]('/:id/users',auth[_0x8248('0x7')](),controller[_0x8248('0x19')]);router[_0x8248('0x1a')](_0x8248('0xb'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x8248('0x7')](),controller[_0x8248('0x1b')]);router[_0x8248('0x1c')](_0x8248('0x14'),auth['isAuthenticated'](),controller[_0x8248('0x1d')]);router[_0x8248('0x1c')](_0x8248('0x1e'),auth[_0x8248('0x7')](),controller[_0x8248('0x1f')]);module[_0x8248('0x20')]=router;
\ No newline at end of file
index 2bf5cd7..ba82be8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0d7=['getDataValue','field','STRING','sequelize','exports','VIRTUAL'];(function(_0x582f72,_0x886d8){var _0x4cd5fe=function(_0x4ac1c7){while(--_0x4ac1c7){_0x582f72['push'](_0x582f72['shift']());}};_0x4cd5fe(++_0x886d8);}(_0xc0d7,0xcf));var _0x7c0d=function(_0x43c086,_0xd5d01d){_0x43c086=_0x43c086-0x0;var _0x227708=_0xc0d7[_0x43c086];return _0x227708;};'use strict';var Sequelize=require(_0x7c0d('0x0'));module[_0x7c0d('0x1')]={'name':{'type':Sequelize[_0x7c0d('0x2')],'get':function(_0x3448ec){return this[_0x7c0d('0x3')](_0x7c0d('0x4'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0x7c0d('0x5')],'allowNull':![]},'value':{'type':Sequelize[_0x7c0d('0x5')],'allowNull':![]}};
\ No newline at end of file
+var _0x04b6=['sequelize','exports','VIRTUAL','getDataValue','STRING'];(function(_0x28509b,_0x5831ff){var _0x1e0b6=function(_0x37d8a2){while(--_0x37d8a2){_0x28509b['push'](_0x28509b['shift']());}};_0x1e0b6(++_0x5831ff);}(_0x04b6,0x181));var _0x604b=function(_0x48f7cf,_0x4baa04){_0x48f7cf=_0x48f7cf-0x0;var _0xc201c0=_0x04b6[_0x48f7cf];return _0xc201c0;};'use strict';var Sequelize=require(_0x604b('0x0'));module[_0x604b('0x1')]={'name':{'type':Sequelize[_0x604b('0x2')],'get':function(_0x5a5807){return this[_0x604b('0x3')]('field');}},'field':{'type':Sequelize[_0x604b('0x4')],'allowNull':![]},'operator':{'type':Sequelize[_0x604b('0x4')],'allowNull':![]},'value':{'type':Sequelize[_0x604b('0x4')],'allowNull':![]}};
\ No newline at end of file
index b50b7db..3661237 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_0x5c5753,_0x283b8a){var _0x90a11a=function(_0xe84baf){while(--_0xe84baf){_0x5c5753['push'](_0x5c5753['shift']());}};_0x90a11a(++_0x283b8a);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
+var _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0x373119,_0x2fb17a){var _0x3bc0c3=function(_0x46b004){while(--_0x46b004){_0x373119['push'](_0x373119['shift']());}};_0x3bc0c3(++_0x2fb17a);}(_0x7a54,0x106));var _0x47a5=function(_0x5c5b15,_0x56c716){_0x5c5b15=_0x5c5b15-0x0;var _0x3ad712=_0x7a54[_0x5c5b15];return _0x3ad712;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
index 2fa6056..61a9071 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc96=['bluebird','request-promise','rimraf','../../config/environment','exports','define','tools_conditions','api','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfc96,0x1db));var _0x6fc9=function(_0x20d360,_0x5a14a1){_0x20d360=_0x20d360-0x0;var _0x1acec0=_0xfc96[_0x20d360];return _0x1acec0;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x6fc9('0x0'));var moment=require(_0x6fc9('0x1'));var BPromise=require(_0x6fc9('0x2'));var rp=require(_0x6fc9('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6fc9('0x4'));var config=require(_0x6fc9('0x5'));var attributes=require('./condition.attributes');module[_0x6fc9('0x6')]=function(_0x3d173c,_0x296a81){return _0x3d173c[_0x6fc9('0x7')]('Condition',attributes,{'tableName':_0x6fc9('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2e5f=['lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./condition.attributes','exports','define','Condition','tools_conditions'];(function(_0x4b174a,_0x33a017){var _0x3cd7bf=function(_0x44ccd9){while(--_0x44ccd9){_0x4b174a['push'](_0x4b174a['shift']());}};_0x3cd7bf(++_0x33a017);}(_0x2e5f,0xe0));var _0xf2e5=function(_0x40d4f8,_0xff7cab){_0x40d4f8=_0x40d4f8-0x0;var _0x11e286=_0x2e5f[_0x40d4f8];return _0x11e286;};'use strict';var _=require(_0xf2e5('0x0'));var util=require(_0xf2e5('0x1'));var logger=require('../../config/logger')(_0xf2e5('0x2'));var moment=require(_0xf2e5('0x3'));var BPromise=require(_0xf2e5('0x4'));var rp=require(_0xf2e5('0x5'));var fs=require('fs');var path=require(_0xf2e5('0x6'));var rimraf=require(_0xf2e5('0x7'));var config=require(_0xf2e5('0x8'));var attributes=require(_0xf2e5('0x9'));module[_0xf2e5('0xa')]=function(_0x3bb07f,_0x517352){return _0x3bb07f[_0xf2e5('0xb')](_0xf2e5('0xc'),attributes,{'tableName':_0xf2e5('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 349e6d7..0fc5773 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5921=['code','message','result','catch','lodash','moment','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','Condition,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x38ced4,_0x24263f){var _0x547c07=function(_0x279fc4){while(--_0x279fc4){_0x38ced4['push'](_0x38ced4['shift']());}};_0x547c07(++_0x24263f);}(_0x5921,0xf4));var _0x1592=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x5921[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x1592('0x0'));var util=require('util');var moment=require(_0x1592('0x1'));var BPromise=require('bluebird');var rs=require(_0x1592('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1592('0x3'));var logger=require(_0x1592('0x4'))('rpc');var config=require(_0x1592('0x5'));var jayson=require(_0x1592('0x6'));var client=jayson['client'][_0x1592('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x13e8a7,_0x1a0ad,_0x227682){return new BPromise(function(_0x25d9de,_0x514e77){return client[_0x1592('0x8')](_0x13e8a7,_0x227682)[_0x1592('0x9')](function(_0x379508){logger[_0x1592('0xa')](_0x1592('0xb'),_0x1a0ad,_0x1592('0xc'));logger['debug'](_0x1592('0xd'),_0x1a0ad,_0x1592('0xc'),JSON[_0x1592('0xe')](_0x379508));if(_0x379508[_0x1592('0xf')]){if(_0x379508['error'][_0x1592('0x10')]===0x1f4){logger[_0x1592('0xf')](_0x1592('0xb'),_0x1a0ad,_0x379508[_0x1592('0xf')][_0x1592('0x11')]);return _0x514e77(_0x379508[_0x1592('0xf')][_0x1592('0x11')]);}logger['error']('Condition,\x20%s,\x20%s',_0x1a0ad,_0x379508[_0x1592('0xf')][_0x1592('0x11')]);return _0x25d9de(_0x379508[_0x1592('0xf')][_0x1592('0x11')]);}else{logger[_0x1592('0xa')]('Condition,\x20%s,\x20%s',_0x1a0ad,_0x1592('0xc'));_0x25d9de(_0x379508[_0x1592('0x12')][_0x1592('0x11')]);}})[_0x1592('0x13')](function(_0x44dd2c){logger['error'](_0x1592('0xb'),_0x1a0ad,_0x44dd2c);_0x514e77(_0x44dd2c);});});}
\ No newline at end of file
+var _0x273e=['Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','info'];(function(_0x28e3a1,_0x2e97d4){var _0x11e8b1=function(_0x26ce79){while(--_0x26ce79){_0x28e3a1['push'](_0x28e3a1['shift']());}};_0x11e8b1(++_0x2e97d4);}(_0x273e,0x135));var _0xe273=function(_0x458a50,_0x2ff6e0){_0x458a50=_0x458a50-0x0;var _0x4a2ab=_0x273e[_0x458a50];return _0x4a2ab;};'use strict';var _=require(_0xe273('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xe273('0x1'));var rs=require(_0xe273('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe273('0x3'))['db'];var utils=require(_0xe273('0x4'));var logger=require('../../config/logger')(_0xe273('0x5'));var config=require(_0xe273('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xe273('0x7')][_0xe273('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3b8dd8,_0x2191fe,_0x7e6c4f){return new BPromise(function(_0x44bdb6,_0x56c350){return client[_0xe273('0x9')](_0x3b8dd8,_0x7e6c4f)['then'](function(_0xff9fb0){logger[_0xe273('0xa')](_0xe273('0xb'),_0x2191fe,_0xe273('0xc'));logger[_0xe273('0xd')](_0xe273('0xe'),_0x2191fe,_0xe273('0xc'),JSON[_0xe273('0xf')](_0xff9fb0));if(_0xff9fb0[_0xe273('0x10')]){if(_0xff9fb0[_0xe273('0x10')]['code']===0x1f4){logger[_0xe273('0x10')](_0xe273('0xb'),_0x2191fe,_0xff9fb0['error'][_0xe273('0x11')]);return _0x56c350(_0xff9fb0[_0xe273('0x10')]['message']);}logger[_0xe273('0x10')](_0xe273('0xb'),_0x2191fe,_0xff9fb0['error'][_0xe273('0x11')]);return _0x44bdb6(_0xff9fb0['error']['message']);}else{logger[_0xe273('0xa')](_0xe273('0xb'),_0x2191fe,_0xe273('0xc'));_0x44bdb6(_0xff9fb0[_0xe273('0x12')][_0xe273('0x11')]);}})[_0xe273('0x13')](function(_0x4cc81d){logger[_0xe273('0x10')](_0xe273('0xb'),_0x2191fe,_0x4cc81d);_0x56c350(_0x4cc81d);});});}
\ No newline at end of file
index fff861a..d6c7862 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe839=['isAuthenticated','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./condition.controller','put','update','delete'];(function(_0xe1b5f6,_0x210c09){var _0x44636e=function(_0x3a3212){while(--_0x3a3212){_0xe1b5f6['push'](_0xe1b5f6['shift']());}};_0x44636e(++_0x210c09);}(_0xe839,0x1b3));var _0x9e83=function(_0x31a371,_0x50828e){_0x31a371=_0x31a371-0x0;var _0x2a5bd6=_0xe839[_0x31a371];return _0x2a5bd6;};'use strict';var multer=require(_0x9e83('0x0'));var util=require(_0x9e83('0x1'));var path=require(_0x9e83('0x2'));var timeout=require(_0x9e83('0x3'));var express=require('express');var router=express[_0x9e83('0x4')]();var fs_extra=require(_0x9e83('0x5'));var auth=require(_0x9e83('0x6'));var interaction=require(_0x9e83('0x7'));var config=require(_0x9e83('0x8'));var controller=require(_0x9e83('0x9'));router[_0x9e83('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x9e83('0xb')]);router[_0x9e83('0xc')]('/:id',auth[_0x9e83('0xd')](),controller[_0x9e83('0xe')]);module[_0x9e83('0xf')]=router;
\ No newline at end of file
+var _0x54d0=['../../config/environment','put','/:id','isAuthenticated','update','delete','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x3c2e28,_0x1e31d9){var _0x2e2fd2=function(_0x569450){while(--_0x569450){_0x3c2e28['push'](_0x3c2e28['shift']());}};_0x2e2fd2(++_0x1e31d9);}(_0x54d0,0x80));var _0x054d=function(_0x2ceedb,_0x3d4af3){_0x2ceedb=_0x2ceedb-0x0;var _0x1eef5c=_0x54d0[_0x2ceedb];return _0x1eef5c;};'use strict';var multer=require(_0x054d('0x0'));var util=require(_0x054d('0x1'));var path=require(_0x054d('0x2'));var timeout=require(_0x054d('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x054d('0x4'));var auth=require(_0x054d('0x5'));var interaction=require(_0x054d('0x6'));var config=require(_0x054d('0x7'));var controller=require('./condition.controller');router[_0x054d('0x8')](_0x054d('0x9'),auth[_0x054d('0xa')](),controller[_0x054d('0xb')]);router[_0x054d('0xc')](_0x054d('0x9'),auth[_0x054d('0xa')](),controller[_0x054d('0xd')]);module[_0x054d('0xe')]=router;
\ No newline at end of file
index 565771a..40bb41a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb23f=['INTEGER','sequelize','exports','STRING'];(function(_0x33912e,_0x5715ed){var _0x11f95b=function(_0x399c0e){while(--_0x399c0e){_0x33912e['push'](_0x33912e['shift']());}};_0x11f95b(++_0x5715ed);}(_0xb23f,0xad));var _0xfb23=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xb23f[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0xfb23('0x0'));module[_0xfb23('0x1')]={'name':{'type':Sequelize[_0xfb23('0x2')],'allowNull':![],'unique':'name'},'OrderBy':{'type':Sequelize[_0xfb23('0x3')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0xfb23('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x15c9=['exports','sequelize'];(function(_0x5e77db,_0x356d1c){var _0x34b675=function(_0x4914b5){while(--_0x4914b5){_0x5e77db['push'](_0x5e77db['shift']());}};_0x34b675(++_0x356d1c);}(_0x15c9,0x83));var _0x915c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x15c9[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x915c('0x0'));module[_0x915c('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
index e731285..0b93993 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','undefined','offset','limit','set','json','apply','reject','save','then','destroy','UserProfileResource','stack','name','send','index','map','ContactItemType','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','count','includeAll','include','findAll','catch','params','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','error','update','find','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce'];(function(_0x58795b,_0x303bfc){var _0x58bba2=function(_0x5ac9b2){while(--_0x5ac9b2){_0x58795b['push'](_0x58795b['shift']());}};_0x58bba2(++_0x303bfc);}(_0x0b0e,0x187));var _0xe0b0=function(_0x18ae6d,_0x255d00){_0x18ae6d=_0x18ae6d-0x0;var _0x3deb94=_0x0b0e[_0x18ae6d];return _0x3deb94;};'use strict';var emlformat=require(_0xe0b0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe0b0('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe0b0('0x2'));var moment=require(_0xe0b0('0x3'));var BPromise=require(_0xe0b0('0x4'));var Mustache=require(_0xe0b0('0x5'));var util=require(_0xe0b0('0x6'));var path=require(_0xe0b0('0x7'));var sox=require(_0xe0b0('0x8'));var csv=require(_0xe0b0('0x9'));var ejs=require(_0xe0b0('0xa'));var fs=require('fs');var fs_extra=require(_0xe0b0('0xb'));var _=require(_0xe0b0('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xe0b0('0xd'));var deskjs=require(_0xe0b0('0xe'));var toCsv=require(_0xe0b0('0x9'));var querystring=require(_0xe0b0('0xf'));var Papa=require('papaparse');var Redis=require(_0xe0b0('0x10'));var authService=require(_0xe0b0('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xe0b0('0x12'));var hardwareService=require(_0xe0b0('0x13'));var logger=require('../../config/logger')(_0xe0b0('0x14'));var utils=require(_0xe0b0('0x15'));var config=require(_0xe0b0('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xe0b0('0x17'))['db'];function respondWithStatusCode(_0x1c358a,_0x3cc19a){_0x3cc19a=_0x3cc19a||0xcc;return function(_0x45f914){if(_0x45f914){return _0x1c358a[_0xe0b0('0x18')](_0x3cc19a);}return _0x1c358a['status'](_0x3cc19a)[_0xe0b0('0x19')]();};}function respondWithResult(_0x154de6,_0x743318){_0x743318=_0x743318||0xc8;return function(_0x24babd){if(_0x24babd){return _0x154de6[_0xe0b0('0x1a')](_0x743318)['json'](_0x24babd);}};}function respondWithFilteredResult(_0x41a7e2,_0x5adb01){return function(_0x35cb40){if(_0x35cb40){var _0xadee6e=typeof _0x5adb01['offset']===_0xe0b0('0x1b')&&typeof _0x5adb01['limit']===_0xe0b0('0x1b');var _0x100204=_0x35cb40['count'];var _0x54a3eb=_0xadee6e?0x0:_0x5adb01[_0xe0b0('0x1c')];var _0x50a441=_0xadee6e?_0x35cb40['count']:_0x5adb01['offset']+_0x5adb01[_0xe0b0('0x1d')];var _0x50fa4a;if(_0x50a441>=_0x100204){_0x50a441=_0x100204;_0x50fa4a=0xc8;}else{_0x50fa4a=0xce;}_0x41a7e2['status'](_0x50fa4a);return _0x41a7e2[_0xe0b0('0x1e')]('Content-Range',_0x54a3eb+'-'+_0x50a441+'/'+_0x100204)[_0xe0b0('0x1f')](_0x35cb40);}return null;};}function patchUpdates(_0x5dba2f){return function(_0x2c84cc){try{jsonpatch[_0xe0b0('0x20')](_0x2c84cc,_0x5dba2f,!![]);}catch(_0x3e10b3){return BPromise[_0xe0b0('0x21')](_0x3e10b3);}return _0x2c84cc[_0xe0b0('0x22')]();};}function saveUpdates(_0x58b804,_0x4cae54){return function(_0x2fa820){if(_0x2fa820){return _0x2fa820['update'](_0x58b804)[_0xe0b0('0x23')](function(_0x31b5f8){return _0x31b5f8;});}return null;};}function removeEntity(_0x513e63,_0x170ad8){return function(_0x503883){if(_0x503883){return _0x503883[_0xe0b0('0x24')]()['then'](function(){var _0x28586d=_0x503883['get']({'plain':!![]});var _0x3e5c88='ContactItemTypes';return db[_0xe0b0('0x25')]['destroy']({'where':{'type':_0x3e5c88,'resourceId':_0x28586d['id']}})[_0xe0b0('0x23')](function(){return _0x503883;});})['then'](function(){_0x513e63[_0xe0b0('0x1a')](0xcc)[_0xe0b0('0x19')]();});}};}function handleEntityNotFound(_0x1f1ebd,_0x1d91ad){return function(_0x3ec2){if(!_0x3ec2){_0x1f1ebd[_0xe0b0('0x18')](0x194);}return _0x3ec2;};}function handleError(_0x5200a6,_0x1444b9){_0x1444b9=_0x1444b9||0x1f4;return function(_0x1b8aa8){logger['error'](_0x1b8aa8[_0xe0b0('0x26')]);if(_0x1b8aa8[_0xe0b0('0x27')]){delete _0x1b8aa8[_0xe0b0('0x27')];}_0x5200a6[_0xe0b0('0x1a')](_0x1444b9)[_0xe0b0('0x28')](_0x1b8aa8);};}exports[_0xe0b0('0x29')]=function(_0x136bd4,_0x4fb3b7){var _0x1854b8={},_0x3c0109={},_0x48a9b5={'count':0x0,'rows':[]};var _0x4fe400=_[_0xe0b0('0x2a')](db[_0xe0b0('0x2b')][_0xe0b0('0x2c')],function(_0x3f81d5){return{'name':_0x3f81d5[_0xe0b0('0x2d')],'type':_0x3f81d5['type'][_0xe0b0('0x2e')]};});_0x3c0109[_0xe0b0('0x2f')]=_[_0xe0b0('0x2a')](_0x4fe400,_0xe0b0('0x27'));_0x3c0109[_0xe0b0('0x30')]=_['keys'](_0x136bd4[_0xe0b0('0x30')]);_0x3c0109[_0xe0b0('0x31')]=_[_0xe0b0('0x32')](_0x3c0109[_0xe0b0('0x2f')],_0x3c0109[_0xe0b0('0x30')]);_0x1854b8[_0xe0b0('0x33')]=_[_0xe0b0('0x32')](_0x3c0109[_0xe0b0('0x2f')],qs[_0xe0b0('0x34')](_0x136bd4[_0xe0b0('0x30')][_0xe0b0('0x34')]));_0x1854b8[_0xe0b0('0x33')]=_0x1854b8[_0xe0b0('0x33')][_0xe0b0('0x35')]?_0x1854b8[_0xe0b0('0x33')]:_0x3c0109['model'];if(!_0x136bd4[_0xe0b0('0x30')][_0xe0b0('0x36')](_0xe0b0('0x37'))){_0x1854b8[_0xe0b0('0x1d')]=qs[_0xe0b0('0x1d')](_0x136bd4[_0xe0b0('0x30')][_0xe0b0('0x1d')]);_0x1854b8['offset']=qs['offset'](_0x136bd4['query']['offset']);}_0x1854b8[_0xe0b0('0x38')]=qs[_0xe0b0('0x39')](_0x136bd4[_0xe0b0('0x30')]['sort']);_0x1854b8[_0xe0b0('0x3a')]=qs[_0xe0b0('0x31')](_[_0xe0b0('0x3b')](_0x136bd4[_0xe0b0('0x30')],_0x3c0109['filters']),_0x4fe400);if(_0x136bd4[_0xe0b0('0x30')][_0xe0b0('0x3c')]){_0x1854b8[_0xe0b0('0x3a')]=_[_0xe0b0('0x3d')](_0x1854b8[_0xe0b0('0x3a')],{'$or':_[_0xe0b0('0x2a')](_0x4fe400,function(_0x8b745){if(_0x8b745[_0xe0b0('0x3e')]!==_0xe0b0('0x3f')){var _0x54f251={};_0x54f251[_0x8b745[_0xe0b0('0x27')]]={'$like':'%'+_0x136bd4['query'][_0xe0b0('0x3c')]+'%'};return _0x54f251;}})});}_0x1854b8=_[_0xe0b0('0x3d')]({},_0x1854b8,_0x136bd4[_0xe0b0('0x40')]);var _0x74f3fa={'where':_0x1854b8['where']};return db[_0xe0b0('0x2b')][_0xe0b0('0x41')](_0x74f3fa)[_0xe0b0('0x23')](function(_0x402a0e){_0x48a9b5[_0xe0b0('0x41')]=_0x402a0e;if(_0x136bd4[_0xe0b0('0x30')][_0xe0b0('0x42')]){_0x1854b8[_0xe0b0('0x43')]=[{'all':!![]}];}return db['ContactItemType'][_0xe0b0('0x44')](_0x1854b8);})[_0xe0b0('0x23')](function(_0x528818){_0x48a9b5['rows']=_0x528818;return _0x48a9b5;})[_0xe0b0('0x23')](respondWithFilteredResult(_0x4fb3b7,_0x1854b8))[_0xe0b0('0x45')](handleError(_0x4fb3b7,null));};exports['show']=function(_0x18a59d,_0x285d61){var _0x6bca5c={'raw':!![],'where':{'id':_0x18a59d[_0xe0b0('0x46')]['id']}},_0x1c869d={};_0x1c869d['model']=_['keys'](db['ContactItemType'][_0xe0b0('0x2c')]);_0x1c869d[_0xe0b0('0x30')]=_['keys'](_0x18a59d[_0xe0b0('0x30')]);_0x1c869d[_0xe0b0('0x31')]=_[_0xe0b0('0x32')](_0x1c869d[_0xe0b0('0x2f')],_0x1c869d[_0xe0b0('0x30')]);_0x6bca5c['attributes']=_['intersection'](_0x1c869d[_0xe0b0('0x2f')],qs[_0xe0b0('0x34')](_0x18a59d[_0xe0b0('0x30')][_0xe0b0('0x34')]));_0x6bca5c[_0xe0b0('0x33')]=_0x6bca5c['attributes'][_0xe0b0('0x35')]?_0x6bca5c[_0xe0b0('0x33')]:_0x1c869d['model'];if(_0x18a59d['query']['includeAll']){_0x6bca5c[_0xe0b0('0x43')]=[{'all':!![]}];}_0x6bca5c=_[_0xe0b0('0x3d')]({},_0x6bca5c,_0x18a59d[_0xe0b0('0x40')]);return db[_0xe0b0('0x2b')]['find'](_0x6bca5c)[_0xe0b0('0x23')](handleEntityNotFound(_0x285d61,null))[_0xe0b0('0x23')](respondWithResult(_0x285d61,null))['catch'](handleError(_0x285d61,null));};exports['create']=function(_0x2365be,_0x1bc6e0){return db['ContactItemType'][_0xe0b0('0x47')](_0x2365be[_0xe0b0('0x48')],{})['then'](function(_0x5cb2b6){var _0x123ad2=_0x2365be['user'][_0xe0b0('0x49')]({'plain':!![]});if(!_0x123ad2)throw new Error(_0xe0b0('0x4a'));if(_0x123ad2[_0xe0b0('0x4b')]===_0xe0b0('0x4c')){var _0x19ee71=_0x5cb2b6[_0xe0b0('0x49')]({'plain':!![]});var _0x5f5486='ContactItemTypes';return db[_0xe0b0('0x4d')]['find']({'where':{'name':_0x5f5486,'userProfileId':_0x123ad2['userProfileId']},'raw':!![]})[_0xe0b0('0x23')](function(_0x222174){if(_0x222174&&_0x222174['autoAssociation']===0x0){return db['UserProfileResource'][_0xe0b0('0x47')]({'name':_0x19ee71[_0xe0b0('0x27')],'resourceId':_0x19ee71['id'],'type':_0x222174[_0xe0b0('0x27')],'sectionId':_0x222174['id']},{})[_0xe0b0('0x23')](function(){return _0x5cb2b6;});}else{return _0x5cb2b6;}})[_0xe0b0('0x45')](function(_0x24115f){logger[_0xe0b0('0x4e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x24115f);throw _0x24115f;});}return _0x5cb2b6;})[_0xe0b0('0x23')](respondWithResult(_0x1bc6e0,0xc9))['catch'](handleError(_0x1bc6e0,null));};exports[_0xe0b0('0x4f')]=function(_0x54106c,_0x5b2055){if(_0x54106c[_0xe0b0('0x48')]['id']){delete _0x54106c[_0xe0b0('0x48')]['id'];}return db[_0xe0b0('0x2b')][_0xe0b0('0x50')]({'where':{'id':_0x54106c[_0xe0b0('0x46')]['id']}})[_0xe0b0('0x23')](handleEntityNotFound(_0x5b2055,null))[_0xe0b0('0x23')](saveUpdates(_0x54106c[_0xe0b0('0x48')],null))[_0xe0b0('0x23')](respondWithResult(_0x5b2055,null))['catch'](handleError(_0x5b2055,null));};exports[_0xe0b0('0x24')]=function(_0x57ccc9,_0x2b5553){return db[_0xe0b0('0x2b')][_0xe0b0('0x50')]({'where':{'id':_0x57ccc9[_0xe0b0('0x46')]['id']}})[_0xe0b0('0x23')](handleEntityNotFound(_0x2b5553,null))[_0xe0b0('0x23')](db['CmContactHasItem'][_0xe0b0('0x4f')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x57ccc9[_0xe0b0('0x46')]['id']}}))[_0xe0b0('0x23')](removeEntity(_0x2b5553,null))[_0xe0b0('0x45')](handleError(_0x2b5553,null));};
\ No newline at end of file
+var _0x6a95=['get','ContactItemTypes','error','name','send','map','ContactItemType','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','show','keys','includeAll','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','params','CmContactHasItem','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','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','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','save','update','then','destroy'];(function(_0x3b75dd,_0x2f380a){var _0x23cdf5=function(_0x12c91e){while(--_0x12c91e){_0x3b75dd['push'](_0x3b75dd['shift']());}};_0x23cdf5(++_0x2f380a);}(_0x6a95,0x1db));var _0x56a9=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0x6a95[_0x3ce3c];return _0x55a2c9;};'use strict';var emlformat=require(_0x56a9('0x0'));var rimraf=require(_0x56a9('0x1'));var zipdir=require(_0x56a9('0x2'));var jsonpatch=require(_0x56a9('0x3'));var rp=require(_0x56a9('0x4'));var moment=require(_0x56a9('0x5'));var BPromise=require(_0x56a9('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x56a9('0x7'));var sox=require(_0x56a9('0x8'));var csv=require(_0x56a9('0x9'));var ejs=require(_0x56a9('0xa'));var fs=require('fs');var fs_extra=require(_0x56a9('0xb'));var _=require(_0x56a9('0xc'));var squel=require(_0x56a9('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x56a9('0xe'));var toCsv=require(_0x56a9('0x9'));var querystring=require('querystring');var Papa=require(_0x56a9('0xf'));var Redis=require(_0x56a9('0x10'));var authService=require(_0x56a9('0x11'));var qs=require(_0x56a9('0x12'));var as=require(_0x56a9('0x13'));var hardwareService=require(_0x56a9('0x14'));var logger=require(_0x56a9('0x15'))(_0x56a9('0x16'));var utils=require(_0x56a9('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x56a9('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b2c7f,_0x4552ce){_0x4552ce=_0x4552ce||0xcc;return function(_0x420667){if(_0x420667){return _0x2b2c7f[_0x56a9('0x19')](_0x4552ce);}return _0x2b2c7f[_0x56a9('0x1a')](_0x4552ce)[_0x56a9('0x1b')]();};}function respondWithResult(_0x124ab8,_0x1a2eb4){_0x1a2eb4=_0x1a2eb4||0xc8;return function(_0x40b2cb){if(_0x40b2cb){return _0x124ab8['status'](_0x1a2eb4)['json'](_0x40b2cb);}};}function respondWithFilteredResult(_0x2e0dfd,_0x2a0714){return function(_0x42007b){if(_0x42007b){var _0x46f854=typeof _0x2a0714['offset']===_0x56a9('0x1c')&&typeof _0x2a0714['limit']==='undefined';var _0x4e292f=_0x42007b[_0x56a9('0x1d')];var _0x576bdf=_0x46f854?0x0:_0x2a0714[_0x56a9('0x1e')];var _0x105fe5=_0x46f854?_0x42007b[_0x56a9('0x1d')]:_0x2a0714[_0x56a9('0x1e')]+_0x2a0714[_0x56a9('0x1f')];var _0xbfeb1a;if(_0x105fe5>=_0x4e292f){_0x105fe5=_0x4e292f;_0xbfeb1a=0xc8;}else{_0xbfeb1a=0xce;}_0x2e0dfd[_0x56a9('0x1a')](_0xbfeb1a);return _0x2e0dfd[_0x56a9('0x20')](_0x56a9('0x21'),_0x576bdf+'-'+_0x105fe5+'/'+_0x4e292f)[_0x56a9('0x22')](_0x42007b);}return null;};}function patchUpdates(_0x5f145f){return function(_0x5bc03a){try{jsonpatch[_0x56a9('0x23')](_0x5bc03a,_0x5f145f,!![]);}catch(_0x16f9de){return BPromise[_0x56a9('0x24')](_0x16f9de);}return _0x5bc03a[_0x56a9('0x25')]();};}function saveUpdates(_0x4a09e5,_0x6100fe){return function(_0x3355c4){if(_0x3355c4){return _0x3355c4[_0x56a9('0x26')](_0x4a09e5)[_0x56a9('0x27')](function(_0x5a82e0){return _0x5a82e0;});}return null;};}function removeEntity(_0x44762e,_0x32839b){return function(_0x21ab38){if(_0x21ab38){return _0x21ab38[_0x56a9('0x28')]()[_0x56a9('0x27')](function(){var _0x52016c=_0x21ab38[_0x56a9('0x29')]({'plain':!![]});var _0x217bda=_0x56a9('0x2a');return db['UserProfileResource'][_0x56a9('0x28')]({'where':{'type':_0x217bda,'resourceId':_0x52016c['id']}})['then'](function(){return _0x21ab38;});})[_0x56a9('0x27')](function(){_0x44762e[_0x56a9('0x1a')](0xcc)[_0x56a9('0x1b')]();});}};}function handleEntityNotFound(_0x20432a,_0x45f38c){return function(_0x1afe8a){if(!_0x1afe8a){_0x20432a[_0x56a9('0x19')](0x194);}return _0x1afe8a;};}function handleError(_0xff5f55,_0x51fd64){_0x51fd64=_0x51fd64||0x1f4;return function(_0x437ccf){logger[_0x56a9('0x2b')](_0x437ccf['stack']);if(_0x437ccf[_0x56a9('0x2c')]){delete _0x437ccf['name'];}_0xff5f55['status'](_0x51fd64)[_0x56a9('0x2d')](_0x437ccf);};}exports['index']=function(_0x2f933a,_0x11002a){var _0x2fbd5d={},_0x2c1c3d={},_0x5879db={'count':0x0,'rows':[]};var _0x332707=_[_0x56a9('0x2e')](db[_0x56a9('0x2f')][_0x56a9('0x30')],function(_0xbbb47d){return{'name':_0xbbb47d[_0x56a9('0x31')],'type':_0xbbb47d[_0x56a9('0x32')][_0x56a9('0x33')]};});_0x2c1c3d[_0x56a9('0x34')]=_[_0x56a9('0x2e')](_0x332707,_0x56a9('0x2c'));_0x2c1c3d[_0x56a9('0x35')]=_['keys'](_0x2f933a[_0x56a9('0x35')]);_0x2c1c3d[_0x56a9('0x36')]=_[_0x56a9('0x37')](_0x2c1c3d['model'],_0x2c1c3d[_0x56a9('0x35')]);_0x2fbd5d['attributes']=_['intersection'](_0x2c1c3d['model'],qs[_0x56a9('0x38')](_0x2f933a[_0x56a9('0x35')]['fields']));_0x2fbd5d['attributes']=_0x2fbd5d[_0x56a9('0x39')][_0x56a9('0x3a')]?_0x2fbd5d[_0x56a9('0x39')]:_0x2c1c3d[_0x56a9('0x34')];if(!_0x2f933a[_0x56a9('0x35')][_0x56a9('0x3b')](_0x56a9('0x3c'))){_0x2fbd5d[_0x56a9('0x1f')]=qs[_0x56a9('0x1f')](_0x2f933a[_0x56a9('0x35')]['limit']);_0x2fbd5d['offset']=qs['offset'](_0x2f933a['query'][_0x56a9('0x1e')]);}_0x2fbd5d[_0x56a9('0x3d')]=qs['sort'](_0x2f933a[_0x56a9('0x35')][_0x56a9('0x3e')]);_0x2fbd5d[_0x56a9('0x3f')]=qs[_0x56a9('0x36')](_[_0x56a9('0x40')](_0x2f933a[_0x56a9('0x35')],_0x2c1c3d[_0x56a9('0x36')]),_0x332707);if(_0x2f933a['query'][_0x56a9('0x41')]){_0x2fbd5d[_0x56a9('0x3f')]=_['merge'](_0x2fbd5d['where'],{'$or':_[_0x56a9('0x2e')](_0x332707,function(_0x1180c6){if(_0x1180c6[_0x56a9('0x32')]!==_0x56a9('0x42')){var _0x158504={};_0x158504[_0x1180c6[_0x56a9('0x2c')]]={'$like':'%'+_0x2f933a[_0x56a9('0x35')][_0x56a9('0x41')]+'%'};return _0x158504;}})});}_0x2fbd5d=_[_0x56a9('0x43')]({},_0x2fbd5d,_0x2f933a[_0x56a9('0x44')]);var _0x9f24ea={'where':_0x2fbd5d[_0x56a9('0x3f')]};return db[_0x56a9('0x2f')][_0x56a9('0x1d')](_0x9f24ea)[_0x56a9('0x27')](function(_0xe57cfb){_0x5879db[_0x56a9('0x1d')]=_0xe57cfb;if(_0x2f933a[_0x56a9('0x35')]['includeAll']){_0x2fbd5d[_0x56a9('0x45')]=[{'all':!![]}];}return db[_0x56a9('0x2f')][_0x56a9('0x46')](_0x2fbd5d);})['then'](function(_0x1f8b30){_0x5879db['rows']=_0x1f8b30;return _0x5879db;})[_0x56a9('0x27')](respondWithFilteredResult(_0x11002a,_0x2fbd5d))['catch'](handleError(_0x11002a,null));};exports[_0x56a9('0x47')]=function(_0x39c445,_0x3998f1){var _0x49286b={'raw':!![],'where':{'id':_0x39c445['params']['id']}},_0x5192d8={};_0x5192d8['model']=_[_0x56a9('0x48')](db[_0x56a9('0x2f')][_0x56a9('0x30')]);_0x5192d8[_0x56a9('0x35')]=_[_0x56a9('0x48')](_0x39c445[_0x56a9('0x35')]);_0x5192d8[_0x56a9('0x36')]=_[_0x56a9('0x37')](_0x5192d8[_0x56a9('0x34')],_0x5192d8[_0x56a9('0x35')]);_0x49286b[_0x56a9('0x39')]=_[_0x56a9('0x37')](_0x5192d8[_0x56a9('0x34')],qs[_0x56a9('0x38')](_0x39c445['query'][_0x56a9('0x38')]));_0x49286b[_0x56a9('0x39')]=_0x49286b[_0x56a9('0x39')]['length']?_0x49286b[_0x56a9('0x39')]:_0x5192d8[_0x56a9('0x34')];if(_0x39c445['query'][_0x56a9('0x49')]){_0x49286b[_0x56a9('0x45')]=[{'all':!![]}];}_0x49286b=_[_0x56a9('0x43')]({},_0x49286b,_0x39c445[_0x56a9('0x44')]);return db['ContactItemType'][_0x56a9('0x4a')](_0x49286b)[_0x56a9('0x27')](handleEntityNotFound(_0x3998f1,null))[_0x56a9('0x27')](respondWithResult(_0x3998f1,null))[_0x56a9('0x4b')](handleError(_0x3998f1,null));};exports[_0x56a9('0x4c')]=function(_0x3942d8,_0x31aaf5){return db[_0x56a9('0x2f')][_0x56a9('0x4c')](_0x3942d8[_0x56a9('0x4d')],{})[_0x56a9('0x27')](function(_0x500656){var _0x58d370=_0x3942d8[_0x56a9('0x4e')][_0x56a9('0x29')]({'plain':!![]});if(!_0x58d370)throw new Error(_0x56a9('0x4f'));if(_0x58d370[_0x56a9('0x50')]==='user'){var _0x1986f2=_0x500656[_0x56a9('0x29')]({'plain':!![]});var _0x26ad3e=_0x56a9('0x2a');return db['UserProfileSection'][_0x56a9('0x4a')]({'where':{'name':_0x26ad3e,'userProfileId':_0x58d370[_0x56a9('0x51')]},'raw':!![]})['then'](function(_0x1ff42f){if(_0x1ff42f&&_0x1ff42f[_0x56a9('0x52')]===0x0){return db['UserProfileResource'][_0x56a9('0x4c')]({'name':_0x1986f2[_0x56a9('0x2c')],'resourceId':_0x1986f2['id'],'type':_0x1ff42f[_0x56a9('0x2c')],'sectionId':_0x1ff42f['id']},{})[_0x56a9('0x27')](function(){return _0x500656;});}else{return _0x500656;}})['catch'](function(_0x4938d6){logger[_0x56a9('0x2b')](_0x56a9('0x53'),_0x4938d6);throw _0x4938d6;});}return _0x500656;})[_0x56a9('0x27')](respondWithResult(_0x31aaf5,0xc9))[_0x56a9('0x4b')](handleError(_0x31aaf5,null));};exports[_0x56a9('0x26')]=function(_0xce9dc0,_0x798b4e){if(_0xce9dc0[_0x56a9('0x4d')]['id']){delete _0xce9dc0[_0x56a9('0x4d')]['id'];}return db[_0x56a9('0x2f')]['find']({'where':{'id':_0xce9dc0[_0x56a9('0x54')]['id']}})[_0x56a9('0x27')](handleEntityNotFound(_0x798b4e,null))[_0x56a9('0x27')](saveUpdates(_0xce9dc0[_0x56a9('0x4d')],null))[_0x56a9('0x27')](respondWithResult(_0x798b4e,null))[_0x56a9('0x4b')](handleError(_0x798b4e,null));};exports[_0x56a9('0x28')]=function(_0x488577,_0x870aa5){return db[_0x56a9('0x2f')][_0x56a9('0x4a')]({'where':{'id':_0x488577[_0x56a9('0x54')]['id']}})[_0x56a9('0x27')](handleEntityNotFound(_0x870aa5,null))[_0x56a9('0x27')](db[_0x56a9('0x55')]['update']({'ItemTypeId':null},{'where':{'ItemTypeId':_0x488577[_0x56a9('0x54')]['id']}}))['then'](removeEntity(_0x870aa5,null))['catch'](handleError(_0x870aa5,null));};
\ No newline at end of file
index 98bf2be..c852594 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd76b=['api','bluebird','request-promise','path','rimraf','../../config/environment','./contactItemType.attributes','exports','define','ContactItemType','tools_contact_item_types','lodash','util'];(function(_0x66edea,_0x27b874){var _0x1b8b3e=function(_0x48033d){while(--_0x48033d){_0x66edea['push'](_0x66edea['shift']());}};_0x1b8b3e(++_0x27b874);}(_0xd76b,0x102));var _0xbd76=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0xd76b[_0x565c49];return _0x20ca34;};'use strict';var _=require(_0xbd76('0x0'));var util=require(_0xbd76('0x1'));var logger=require('../../config/logger')(_0xbd76('0x2'));var moment=require('moment');var BPromise=require(_0xbd76('0x3'));var rp=require(_0xbd76('0x4'));var fs=require('fs');var path=require(_0xbd76('0x5'));var rimraf=require(_0xbd76('0x6'));var config=require(_0xbd76('0x7'));var attributes=require(_0xbd76('0x8'));module[_0xbd76('0x9')]=function(_0x4113c3,_0x337db2){return _0x4113c3[_0xbd76('0xa')](_0xbd76('0xb'),attributes,{'tableName':_0xbd76('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0536=['../../config/environment','exports','define','ContactItemType','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x5c25f7,_0x3a69dc){var _0x1d51d1=function(_0x284c00){while(--_0x284c00){_0x5c25f7['push'](_0x5c25f7['shift']());}};_0x1d51d1(++_0x3a69dc);}(_0x0536,0xe0));var _0x6053=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x0536[_0xa464c9];return _0x3d73c4;};'use strict';var _=require('lodash');var util=require(_0x6053('0x0'));var logger=require(_0x6053('0x1'))(_0x6053('0x2'));var moment=require(_0x6053('0x3'));var BPromise=require(_0x6053('0x4'));var rp=require(_0x6053('0x5'));var fs=require('fs');var path=require(_0x6053('0x6'));var rimraf=require('rimraf');var config=require(_0x6053('0x7'));var attributes=require('./contactItemType.attributes');module[_0x6053('0x8')]=function(_0xfdc9c7,_0x1b8c2a){return _0xfdc9c7[_0x6053('0x9')](_0x6053('0xa'),attributes,{'tableName':'tools_contact_item_types','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9f35877..4e68f02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x819f=['code','ContactItemType,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','request\x20sent','debug','stringify','error'];(function(_0x14e48d,_0x3a9c35){var _0x5ca176=function(_0x4b6cbc){while(--_0x4b6cbc){_0x14e48d['push'](_0x14e48d['shift']());}};_0x5ca176(++_0x3a9c35);}(_0x819f,0x1bd));var _0xf819=function(_0x500c0,_0xdb6a03){_0x500c0=_0x500c0-0x0;var _0xdd146f=_0x819f[_0x500c0];return _0xdd146f;};'use strict';var _=require(_0xf819('0x0'));var util=require(_0xf819('0x1'));var moment=require(_0xf819('0x2'));var BPromise=require(_0xf819('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf819('0x4'))['db'];var utils=require(_0xf819('0x5'));var logger=require(_0xf819('0x6'))(_0xf819('0x7'));var config=require('../../config/environment');var jayson=require(_0xf819('0x8'));var client=jayson[_0xf819('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x590f19,_0x27d578,_0x4c5042){return new BPromise(function(_0x447fc3,_0x525099){return client[_0xf819('0xa')](_0x590f19,_0x4c5042)[_0xf819('0xb')](function(_0x49d106){logger[_0xf819('0xc')]('ContactItemType,\x20%s,\x20%s',_0x27d578,_0xf819('0xd'));logger[_0xf819('0xe')]('ContactItemType,\x20%s,\x20%s,\x20%s',_0x27d578,'request\x20sent',JSON[_0xf819('0xf')](_0x49d106));if(_0x49d106[_0xf819('0x10')]){if(_0x49d106['error'][_0xf819('0x11')]===0x1f4){logger[_0xf819('0x10')](_0xf819('0x12'),_0x27d578,_0x49d106[_0xf819('0x10')][_0xf819('0x13')]);return _0x525099(_0x49d106[_0xf819('0x10')]['message']);}logger[_0xf819('0x10')](_0xf819('0x12'),_0x27d578,_0x49d106[_0xf819('0x10')]['message']);return _0x447fc3(_0x49d106[_0xf819('0x10')][_0xf819('0x13')]);}else{logger['info'](_0xf819('0x12'),_0x27d578,_0xf819('0xd'));_0x447fc3(_0x49d106[_0xf819('0x14')][_0xf819('0x13')]);}})[_0xf819('0x15')](function(_0x15b7bb){logger[_0xf819('0x10')]('ContactItemType,\x20%s,\x20%s',_0x27d578,_0x15b7bb);_0x525099(_0x15b7bb);});});}
\ No newline at end of file
+var _0x0c87=['info','ContactItemType,\x20%s,\x20%s','request\x20sent','debug','ContactItemType,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then'];(function(_0x3badbd,_0x29efa8){var _0x54e5af=function(_0x45a9c4){while(--_0x45a9c4){_0x3badbd['push'](_0x3badbd['shift']());}};_0x54e5af(++_0x29efa8);}(_0x0c87,0x1d5));var _0x70c8=function(_0x390b46,_0x310e77){_0x390b46=_0x390b46-0x0;var _0x5ee529=_0x0c87[_0x390b46];return _0x5ee529;};'use strict';var _=require(_0x70c8('0x0'));var util=require(_0x70c8('0x1'));var moment=require(_0x70c8('0x2'));var BPromise=require(_0x70c8('0x3'));var rs=require(_0x70c8('0x4'));var fs=require('fs');var Redis=require(_0x70c8('0x5'));var db=require(_0x70c8('0x6'))['db'];var utils=require(_0x70c8('0x7'));var logger=require(_0x70c8('0x8'))('rpc');var config=require(_0x70c8('0x9'));var jayson=require(_0x70c8('0xa'));var client=jayson['client'][_0x70c8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x308372,_0x30a150,_0x162501){return new BPromise(function(_0x440f68,_0x4e7f1d){return client[_0x70c8('0xc')](_0x308372,_0x162501)[_0x70c8('0xd')](function(_0x143af2){logger[_0x70c8('0xe')](_0x70c8('0xf'),_0x30a150,_0x70c8('0x10'));logger[_0x70c8('0x11')](_0x70c8('0x12'),_0x30a150,'request\x20sent',JSON['stringify'](_0x143af2));if(_0x143af2[_0x70c8('0x13')]){if(_0x143af2[_0x70c8('0x13')][_0x70c8('0x14')]===0x1f4){logger[_0x70c8('0x13')](_0x70c8('0xf'),_0x30a150,_0x143af2[_0x70c8('0x13')][_0x70c8('0x15')]);return _0x4e7f1d(_0x143af2[_0x70c8('0x13')]['message']);}logger[_0x70c8('0x13')](_0x70c8('0xf'),_0x30a150,_0x143af2[_0x70c8('0x13')][_0x70c8('0x15')]);return _0x440f68(_0x143af2[_0x70c8('0x13')]['message']);}else{logger[_0x70c8('0xe')](_0x70c8('0xf'),_0x30a150,_0x70c8('0x10'));_0x440f68(_0x143af2[_0x70c8('0x16')][_0x70c8('0x15')]);}})['catch'](function(_0x1cc343){logger[_0x70c8('0x13')](_0x70c8('0xf'),_0x30a150,_0x1cc343);_0x4e7f1d(_0x1cc343);});});}
\ No newline at end of file
index d9ed5f5..8879b9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ac6=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','post','create','put','update','delete','destroy'];(function(_0x819464,_0x46fc91){var _0x49dcc0=function(_0x36b2b2){while(--_0x36b2b2){_0x819464['push'](_0x819464['shift']());}};_0x49dcc0(++_0x46fc91);}(_0x9ac6,0x1c8));var _0x69ac=function(_0x940f1d,_0x193aff){_0x940f1d=_0x940f1d-0x0;var _0x1f15aa=_0x9ac6[_0x940f1d];return _0x1f15aa;};'use strict';var multer=require(_0x69ac('0x0'));var util=require('util');var path=require(_0x69ac('0x1'));var timeout=require(_0x69ac('0x2'));var express=require(_0x69ac('0x3'));var router=express[_0x69ac('0x4')]();var fs_extra=require(_0x69ac('0x5'));var auth=require(_0x69ac('0x6'));var interaction=require(_0x69ac('0x7'));var config=require(_0x69ac('0x8'));var controller=require('./contactItemType.controller');router[_0x69ac('0x9')]('/',auth['isAuthenticated'](),controller[_0x69ac('0xa')]);router[_0x69ac('0x9')](_0x69ac('0xb'),auth[_0x69ac('0xc')](),controller['show']);router[_0x69ac('0xd')]('/',auth[_0x69ac('0xc')](),controller[_0x69ac('0xe')]);router[_0x69ac('0xf')](_0x69ac('0xb'),auth[_0x69ac('0xc')](),controller[_0x69ac('0x10')]);router[_0x69ac('0x11')](_0x69ac('0xb'),auth[_0x69ac('0xc')](),controller[_0x69ac('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xe13a=['express','Router','../../components/interaction/service','./contactItemType.controller','get','index','/:id','isAuthenticated','show','post','create','update','delete','exports','multer','util','path'];(function(_0x3c9c05,_0x31f740){var _0x2f1d51=function(_0x123a10){while(--_0x123a10){_0x3c9c05['push'](_0x3c9c05['shift']());}};_0x2f1d51(++_0x31f740);}(_0xe13a,0x1a6));var _0xae13=function(_0x376123,_0x4481a2){_0x376123=_0x376123-0x0;var _0x5387c6=_0xe13a[_0x376123];return _0x5387c6;};'use strict';var multer=require(_0xae13('0x0'));var util=require(_0xae13('0x1'));var path=require(_0xae13('0x2'));var timeout=require('connect-timeout');var express=require(_0xae13('0x3'));var router=express[_0xae13('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xae13('0x5'));var config=require('../../config/environment');var controller=require(_0xae13('0x6'));router[_0xae13('0x7')]('/',auth['isAuthenticated'](),controller[_0xae13('0x8')]);router['get'](_0xae13('0x9'),auth[_0xae13('0xa')](),controller[_0xae13('0xb')]);router[_0xae13('0xc')]('/',auth['isAuthenticated'](),controller[_0xae13('0xd')]);router['put'](_0xae13('0x9'),auth[_0xae13('0xa')](),controller[_0xae13('0xe')]);router[_0xae13('0xf')](_0xae13('0x9'),auth['isAuthenticated'](),controller['destroy']);module[_0xae13('0x10')]=router;
\ No newline at end of file
index 47b3edc..1e2d27e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['STRING','sequelize'];(function(_0x2d34d6,_0x397ff9){var _0x1d3d12=function(_0x558800){while(--_0x558800){_0x2d34d6['push'](_0x2d34d6['shift']());}};_0x1d3d12(++_0x397ff9);}(_0xb7e7,0x121));var _0x7b7e=function(_0x1a36a5,_0x746928){_0x1a36a5=_0x1a36a5-0x0;var _0x746243=_0xb7e7[_0x1a36a5];return _0x746243;};'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
+var _0x757a=['exports','STRING'];(function(_0x62a56f,_0x4cedeb){var _0x156be0=function(_0x1bd40f){while(--_0x1bd40f){_0x62a56f['push'](_0x62a56f['shift']());}};_0x156be0(++_0x4cedeb);}(_0x757a,0xde));var _0xa757=function(_0x1bdc1f,_0x57ffbd){_0x1bdc1f=_0x1bdc1f-0x0;var _0x366ced=_0x757a[_0x1bdc1f];return _0x366ced;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'name':{'type':Sequelize[_0xa757('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index b2f895b..1994734 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6744=['fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','clone','params','rawAttributes','include','omit','createdAt','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','attrUrl','attrs','value','https://','custom','clock','attrHourFormat','attrTimezone','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','voice','attrEmailAccounts','web-report','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','getItems','findOne','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','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','localhost','./dashboard.socket','register','sendStatus','status','json','offset','undefined','count','limit','set','reject','update','then','destroy','get','CustomDashboards','UserProfileResource','end','stack','name','send','index','map','Dashboard','fieldName','type','key','model','query','keys','intersection','attributes'];(function(_0x3c312e,_0x94260){var _0x5ddb51=function(_0x1708dd){while(--_0x1708dd){_0x3c312e['push'](_0x3c312e['shift']());}};_0x5ddb51(++_0x94260);}(_0x6744,0x14f));var _0x4674=function(_0x228e72,_0x4b679d){_0x228e72=_0x228e72-0x0;var _0x410025=_0x6744[_0x228e72];return _0x410025;};'use strict';var emlformat=require(_0x4674('0x0'));var rimraf=require(_0x4674('0x1'));var zipdir=require(_0x4674('0x2'));var jsonpatch=require(_0x4674('0x3'));var rp=require(_0x4674('0x4'));var moment=require(_0x4674('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x4674('0x6'));var util=require(_0x4674('0x7'));var path=require(_0x4674('0x8'));var sox=require('sox');var csv=require(_0x4674('0x9'));var ejs=require(_0x4674('0xa'));var fs=require('fs');var fs_extra=require(_0x4674('0xb'));var _=require(_0x4674('0xc'));var squel=require(_0x4674('0xd'));var crypto=require(_0x4674('0xe'));var jsforce=require(_0x4674('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x4674('0x9'));var querystring=require(_0x4674('0x10'));var Papa=require(_0x4674('0x11'));var Redis=require('ioredis');var authService=require(_0x4674('0x12'));var qs=require(_0x4674('0x13'));var as=require(_0x4674('0x14'));var hardwareService=require(_0x4674('0x15'));var logger=require('../../config/logger')(_0x4674('0x16'));var utils=require(_0x4674('0x17'));var config=require(_0x4674('0x18'));var licenseUtil=require(_0x4674('0x19'));var db=require('../../mysqldb')['db'];config[_0x4674('0x1a')]=_[_0x4674('0x1b')](config[_0x4674('0x1a')],{'host':_0x4674('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4674('0x1a')]));require(_0x4674('0x1d'))[_0x4674('0x1e')](socket);function respondWithStatusCode(_0x1a9146,_0x26160b){_0x26160b=_0x26160b||0xcc;return function(_0x26b99b){if(_0x26b99b){return _0x1a9146[_0x4674('0x1f')](_0x26160b);}return _0x1a9146['status'](_0x26160b)['end']();};}function respondWithResult(_0x14446c,_0x5c2c19){_0x5c2c19=_0x5c2c19||0xc8;return function(_0x40981f){if(_0x40981f){return _0x14446c[_0x4674('0x20')](_0x5c2c19)[_0x4674('0x21')](_0x40981f);}};}function respondWithFilteredResult(_0x2e29b2,_0x4ac110){return function(_0x3fb262){if(_0x3fb262){var _0x1bcff6=typeof _0x4ac110[_0x4674('0x22')]===_0x4674('0x23')&&typeof _0x4ac110['limit']===_0x4674('0x23');var _0xdc2f3d=_0x3fb262[_0x4674('0x24')];var _0x2188f4=_0x1bcff6?0x0:_0x4ac110[_0x4674('0x22')];var _0x294011=_0x1bcff6?_0x3fb262[_0x4674('0x24')]:_0x4ac110[_0x4674('0x22')]+_0x4ac110[_0x4674('0x25')];var _0x3ffd9e;if(_0x294011>=_0xdc2f3d){_0x294011=_0xdc2f3d;_0x3ffd9e=0xc8;}else{_0x3ffd9e=0xce;}_0x2e29b2[_0x4674('0x20')](_0x3ffd9e);return _0x2e29b2[_0x4674('0x26')]('Content-Range',_0x2188f4+'-'+_0x294011+'/'+_0xdc2f3d)['json'](_0x3fb262);}return null;};}function patchUpdates(_0x5e00f3){return function(_0x460363){try{jsonpatch['apply'](_0x460363,_0x5e00f3,!![]);}catch(_0x2a1831){return BPromise[_0x4674('0x27')](_0x2a1831);}return _0x460363['save']();};}function saveUpdates(_0x3b7495,_0x3cde8b){return function(_0x304668){if(_0x304668){return _0x304668[_0x4674('0x28')](_0x3b7495)[_0x4674('0x29')](function(_0x5ab55d){return _0x5ab55d;});}return null;};}function removeEntity(_0x3df71c,_0x2bbe5d){return function(_0x5987b3){if(_0x5987b3){return _0x5987b3[_0x4674('0x2a')]()[_0x4674('0x29')](function(){var _0x5321ea=_0x5987b3[_0x4674('0x2b')]({'plain':!![]});var _0x2d3d44=_0x4674('0x2c');return db[_0x4674('0x2d')][_0x4674('0x2a')]({'where':{'type':_0x2d3d44,'resourceId':_0x5321ea['id']}})[_0x4674('0x29')](function(){return _0x5987b3;});})[_0x4674('0x29')](function(){_0x3df71c['status'](0xcc)[_0x4674('0x2e')]();});}};}function handleEntityNotFound(_0x12bbf0,_0x408b12){return function(_0x125f7c){if(!_0x125f7c){_0x12bbf0['sendStatus'](0x194);}return _0x125f7c;};}function handleError(_0x31574f,_0x479119){_0x479119=_0x479119||0x1f4;return function(_0x279ac4){logger['error'](_0x279ac4[_0x4674('0x2f')]);if(_0x279ac4[_0x4674('0x30')]){delete _0x279ac4[_0x4674('0x30')];}_0x31574f['status'](_0x479119)[_0x4674('0x31')](_0x279ac4);};}exports[_0x4674('0x32')]=function(_0x360238,_0x4bc110){var _0xe9ab34={},_0x35d7ca={},_0x3d1496={'count':0x0,'rows':[]};var _0x327f60=_[_0x4674('0x33')](db[_0x4674('0x34')]['rawAttributes'],function(_0x186094){return{'name':_0x186094[_0x4674('0x35')],'type':_0x186094[_0x4674('0x36')][_0x4674('0x37')]};});_0x35d7ca[_0x4674('0x38')]=_['map'](_0x327f60,_0x4674('0x30'));_0x35d7ca[_0x4674('0x39')]=_[_0x4674('0x3a')](_0x360238['query']);_0x35d7ca['filters']=_[_0x4674('0x3b')](_0x35d7ca[_0x4674('0x38')],_0x35d7ca[_0x4674('0x39')]);_0xe9ab34[_0x4674('0x3c')]=_['intersection'](_0x35d7ca[_0x4674('0x38')],qs[_0x4674('0x3d')](_0x360238[_0x4674('0x39')][_0x4674('0x3d')]));_0xe9ab34[_0x4674('0x3c')]=_0xe9ab34[_0x4674('0x3c')][_0x4674('0x3e')]?_0xe9ab34[_0x4674('0x3c')]:_0x35d7ca[_0x4674('0x38')];if(!_0x360238[_0x4674('0x39')][_0x4674('0x3f')]('nolimit')){_0xe9ab34['limit']=qs[_0x4674('0x25')](_0x360238['query']['limit']);_0xe9ab34['offset']=qs[_0x4674('0x22')](_0x360238[_0x4674('0x39')][_0x4674('0x22')]);}_0xe9ab34[_0x4674('0x40')]=qs[_0x4674('0x41')](_0x360238['query']['sort']);_0xe9ab34[_0x4674('0x42')]=qs[_0x4674('0x43')](_[_0x4674('0x44')](_0x360238[_0x4674('0x39')],_0x35d7ca[_0x4674('0x43')]),_0x327f60);if(_0x360238[_0x4674('0x39')][_0x4674('0x45')]){_0xe9ab34[_0x4674('0x42')]=_[_0x4674('0x46')](_0xe9ab34['where'],{'$or':_[_0x4674('0x33')](_0x327f60,function(_0x583063){if(_0x583063[_0x4674('0x36')]!==_0x4674('0x47')){var _0x13eb64={};_0x13eb64[_0x583063[_0x4674('0x30')]]={'$like':'%'+_0x360238['query'][_0x4674('0x45')]+'%'};return _0x13eb64;}})});}_0xe9ab34=_[_0x4674('0x46')]({},_0xe9ab34,_0x360238[_0x4674('0x48')]);var _0x39c447={'where':_0xe9ab34['where']};return db['Dashboard'][_0x4674('0x24')](_0x39c447)[_0x4674('0x29')](function(_0x4a4ee5){_0x3d1496[_0x4674('0x24')]=_0x4a4ee5;if(_0x360238['query'][_0x4674('0x49')]){_0xe9ab34['include']=[{'all':!![]}];}return db['Dashboard'][_0x4674('0x4a')](_0xe9ab34);})[_0x4674('0x29')](function(_0x4b1e0b){_0x3d1496[_0x4674('0x4b')]=_0x4b1e0b;return _0x3d1496;})[_0x4674('0x29')](respondWithFilteredResult(_0x4bc110,_0xe9ab34))[_0x4674('0x4c')](handleError(_0x4bc110,null));};exports[_0x4674('0x4d')]=function(_0x12ae93,_0x404746){var _0x41e001={'raw':![],'where':{'id':_0x12ae93['params']['id']}},_0x41aafd={};_0x41aafd[_0x4674('0x38')]=_[_0x4674('0x3a')](db[_0x4674('0x34')]['rawAttributes']);_0x41aafd[_0x4674('0x39')]=_[_0x4674('0x3a')](_0x12ae93['query']);_0x41aafd[_0x4674('0x43')]=_['intersection'](_0x41aafd['model'],_0x41aafd[_0x4674('0x39')]);_0x41e001[_0x4674('0x3c')]=_[_0x4674('0x3b')](_0x41aafd['model'],qs['fields'](_0x12ae93[_0x4674('0x39')][_0x4674('0x3d')]));_0x41e001['attributes']=_0x41e001[_0x4674('0x3c')][_0x4674('0x3e')]?_0x41e001[_0x4674('0x3c')]:_0x41aafd[_0x4674('0x38')];if(_0x12ae93['query'][_0x4674('0x49')]){_0x41e001['include']=[{'all':!![]}];}_0x41e001=_[_0x4674('0x46')]({},_0x41e001,_0x12ae93[_0x4674('0x48')]);return db[_0x4674('0x34')][_0x4674('0x4e')](_0x41e001)[_0x4674('0x29')](handleEntityNotFound(_0x404746,null))['then'](respondWithResult(_0x404746,null))[_0x4674('0x4c')](handleError(_0x404746,null));};exports['create']=function(_0x594f97,_0x53eac8){return db[_0x4674('0x34')][_0x4674('0x4f')](_0x594f97[_0x4674('0x50')],{})[_0x4674('0x29')](function(_0x30f2c4){var _0x2d5b37=_0x594f97[_0x4674('0x51')]['get']({'plain':!![]});if(!_0x2d5b37)throw new Error(_0x4674('0x52'));if(_0x2d5b37[_0x4674('0x53')]==='user'){var _0x180529=_0x30f2c4['get']({'plain':!![]});var _0xad0f7d='CustomDashboards';return db[_0x4674('0x54')]['find']({'where':{'name':_0xad0f7d,'userProfileId':_0x2d5b37[_0x4674('0x55')]},'raw':!![]})['then'](function(_0x570d0a){if(_0x570d0a&&_0x570d0a[_0x4674('0x56')]===0x0){return db[_0x4674('0x2d')]['create']({'name':_0x180529[_0x4674('0x30')],'resourceId':_0x180529['id'],'type':_0x570d0a[_0x4674('0x30')],'sectionId':_0x570d0a['id']},{})['then'](function(){return _0x30f2c4;});}else{return _0x30f2c4;}})[_0x4674('0x4c')](function(_0x5f5291){logger[_0x4674('0x57')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5f5291);throw _0x5f5291;});}return _0x30f2c4;})['then'](respondWithResult(_0x53eac8,0xc9))[_0x4674('0x4c')](handleError(_0x53eac8,null));};exports[_0x4674('0x58')]=function(_0x20044e,_0x186ec8){var _0x567e80={'where':{'id':_0x20044e[_0x4674('0x59')]['id']}},_0x256391={};_0x256391['model']=_[_0x4674('0x3a')](db['Dashboard'][_0x4674('0x5a')]);_0x567e80[_0x4674('0x3c')]=_[_0x4674('0x3b')](_0x256391['model'],qs[_0x4674('0x3d')](_0x20044e[_0x4674('0x39')][_0x4674('0x3d')]));_0x567e80[_0x4674('0x3c')]=_0x567e80[_0x4674('0x3c')][_0x4674('0x3e')]?_0x567e80[_0x4674('0x3c')]:_0x256391[_0x4674('0x38')];if(_0x20044e[_0x4674('0x39')][_0x4674('0x49')]){_0x567e80[_0x4674('0x5b')]=[{'all':!![]}];}_0x567e80=_[_0x4674('0x46')]({},_0x567e80,_0x20044e[_0x4674('0x48')]);return db[_0x4674('0x34')][_0x4674('0x4e')](_0x567e80)[_0x4674('0x29')](handleEntityNotFound(_0x186ec8,null))[_0x4674('0x29')](function(_0x3f37d){if(_0x3f37d){var _0x5ca71c=_0x3f37d[_0x4674('0x2b')]({'plain':!![]});_0x5ca71c=qs[_0x4674('0x5c')](_0x5ca71c,['id',_0x4674('0x5d'),'updatedAt']);_0x20044e[_0x4674('0x50')]=_[_0x4674('0x5c')](_0x20044e[_0x4674('0x50')],['id','createdAt','updatedAt']);return db['Dashboard'][_0x4674('0x4f')](_[_0x4674('0x46')](_0x5ca71c,_0x20044e[_0x4674('0x50')]),{'include':_0x20044e[_0x4674('0x39')][_0x4674('0x49')]?[{'all':!![]}]:undefined})['then'](function(_0x1499c4){var _0x3ea809=_0x20044e[_0x4674('0x51')][_0x4674('0x2b')]({'plain':!![]});if(!_0x3ea809)throw new Error(_0x4674('0x52'));if(_0x3ea809[_0x4674('0x53')]===_0x4674('0x51')){var _0x37fb4b=_0x1499c4[_0x4674('0x2b')]({'plain':!![]});var _0x4390e8=_0x4674('0x2c');return db[_0x4674('0x54')]['find']({'where':{'name':_0x4390e8,'userProfileId':_0x3ea809[_0x4674('0x55')]},'raw':!![]})['then'](function(_0x3dbaaa){if(_0x3dbaaa&&_0x3dbaaa['autoAssociation']===0x0){return db[_0x4674('0x2d')][_0x4674('0x4f')]({'name':_0x37fb4b['name'],'resourceId':_0x37fb4b['id'],'type':_0x3dbaaa['name'],'sectionId':_0x3dbaaa['id']},{})['then'](function(){return _0x1499c4;});}else{return _0x1499c4;}})[_0x4674('0x4c')](function(_0x30905b){logger[_0x4674('0x57')](_0x4674('0x5e'),_0x30905b);throw _0x30905b;});}return _0x1499c4;});}})['then'](respondWithResult(_0x186ec8,0xc9))[_0x4674('0x4c')](handleError(_0x186ec8,null));};exports[_0x4674('0x28')]=function(_0x44a484,_0x887896){if(_0x44a484[_0x4674('0x50')]['id']){delete _0x44a484[_0x4674('0x50')]['id'];}return db[_0x4674('0x34')]['find']({'where':{'id':_0x44a484[_0x4674('0x59')]['id']}})[_0x4674('0x29')](handleEntityNotFound(_0x887896,null))[_0x4674('0x29')](saveUpdates(_0x44a484[_0x4674('0x50')],null))[_0x4674('0x29')](respondWithResult(_0x887896,null))[_0x4674('0x4c')](handleError(_0x887896,null));};exports['destroy']=function(_0x4d29f2,_0x5c78c2){return db[_0x4674('0x34')][_0x4674('0x4e')]({'where':{'id':_0x4d29f2['params']['id']}})[_0x4674('0x29')](handleEntityNotFound(_0x5c78c2,null))['then'](removeEntity(_0x5c78c2,null))[_0x4674('0x4c')](handleError(_0x5c78c2,null));};function widgetAttributes(_0x4d0a7a){try{switch(_0x4d0a7a[_0x4674('0x36')]){case'iframe':return[{'name':'attrUrl','value':_0x4d0a7a[_0x4674('0x5f')]||(_0x4d0a7a['attrs']&&_0x4d0a7a[_0x4674('0x60')][0x0]?_0x4d0a7a[_0x4674('0x60')][0x0][_0x4674('0x61')]:undefined)||_0x4674('0x62')}];case _0x4674('0x63'):return[{'name':'attrPath','value':_0x4d0a7a['attrPath']||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x0]?_0x4d0a7a[_0x4674('0x60')][0x0][_0x4674('0x61')]:undefined)||''}];case _0x4674('0x64'):return[{'name':_0x4674('0x65'),'value':_0x4d0a7a['attrHourFormat']||(_0x4d0a7a['attrs']&&_0x4d0a7a[_0x4674('0x60')][0x0]?_0x4d0a7a[_0x4674('0x60')][0x0][_0x4674('0x61')]:undefined)||'HH:mm:ss'},{'name':_0x4674('0x66'),'value':_0x4d0a7a[_0x4674('0x66')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x1]?_0x4d0a7a[_0x4674('0x60')][0x1][_0x4674('0x61')]:undefined)||'0.00'},{'name':_0x4674('0x67'),'value':_0x4d0a7a[_0x4674('0x67')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x2]?_0x4d0a7a[_0x4674('0x60')][0x2][_0x4674('0x61')]:undefined)||0xc}];case _0x4674('0x68'):return[{'name':'attrMetric','value':_0x4d0a7a[_0x4674('0x69')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x0]?_0x4d0a7a[_0x4674('0x60')][0x0][_0x4674('0x61')]:undefined)||_0x4674('0x6a')},{'name':_0x4674('0x6b'),'value':_0x4d0a7a[_0x4674('0x6b')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x1]?_0x4d0a7a[_0x4674('0x60')][0x1][_0x4674('0x61')]:undefined)||[]},{'name':'attrFontSize','value':_0x4d0a7a[_0x4674('0x67')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x2]?_0x4d0a7a['attrs'][0x2][_0x4674('0x61')]:undefined)||0x14},{'name':'attrChannel','value':_0x4d0a7a[_0x4674('0x6c')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x3]?_0x4d0a7a[_0x4674('0x60')][0x3][_0x4674('0x61')]:undefined)||'voice'},{'name':'attrEmailAccounts','value':_0x4d0a7a['attrEmailAccounts']||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x4]?_0x4d0a7a[_0x4674('0x60')][0x4][_0x4674('0x61')]:undefined)||''},{'name':_0x4674('0x6d'),'value':_0x4d0a7a[_0x4674('0x6d')]||(_0x4d0a7a['attrs']&&_0x4d0a7a[_0x4674('0x60')][0x5]?_0x4d0a7a[_0x4674('0x60')][0x5][_0x4674('0x61')]:undefined)||''},{'name':_0x4674('0x6e'),'value':_0x4d0a7a[_0x4674('0x6e')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x6]?_0x4d0a7a[_0x4674('0x60')][0x6][_0x4674('0x61')]:undefined)||''},{'name':_0x4674('0x6f'),'value':_0x4d0a7a[_0x4674('0x6f')]||(_0x4d0a7a['attrs']&&_0x4d0a7a[_0x4674('0x60')][0x7]?_0x4d0a7a['attrs'][0x7][_0x4674('0x61')]:undefined)||''},{'name':_0x4674('0x70'),'value':_0x4d0a7a[_0x4674('0x70')]||(_0x4d0a7a['attrs']&&_0x4d0a7a[_0x4674('0x60')][0x8]?_0x4d0a7a['attrs'][0x8][_0x4674('0x61')]:undefined)||''},{'name':_0x4674('0x71'),'value':_0x4d0a7a[_0x4674('0x71')]||(_0x4d0a7a['attrs']&&_0x4d0a7a[_0x4674('0x60')][0x9]?_0x4d0a7a[_0x4674('0x60')][0x9][_0x4674('0x61')]:undefined)||''}];case _0x4674('0x72'):case _0x4674('0x73'):return[{'name':_0x4674('0x74'),'value':_0x4d0a7a[_0x4674('0x74')]||(_0x4d0a7a['attrs']&&_0x4d0a7a[_0x4674('0x60')][0x0]?_0x4d0a7a[_0x4674('0x60')][0x0][_0x4674('0x61')]:undefined)||_0x4674('0x6a')},{'name':_0x4674('0x75'),'value':_0x4d0a7a[_0x4674('0x75')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x1]?_0x4d0a7a[_0x4674('0x60')][0x1]['value']:undefined)||null},{'name':_0x4674('0x76'),'value':_0x4d0a7a['attrSerie3']||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x2]?_0x4d0a7a[_0x4674('0x60')][0x2][_0x4674('0x61')]:undefined)||null},{'name':_0x4674('0x6b'),'value':_0x4d0a7a['attrVoiceQueues']||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x3]?_0x4d0a7a['attrs'][0x3][_0x4674('0x61')]:undefined)||[]},{'name':_0x4674('0x6c'),'value':_0x4d0a7a[_0x4674('0x6c')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x4]?_0x4d0a7a[_0x4674('0x60')][0x4]['value']:undefined)||_0x4674('0x77')},{'name':'attrEmailAccounts','value':_0x4d0a7a[_0x4674('0x78')]||(_0x4d0a7a['attrs']&&_0x4d0a7a['attrs'][0x5]?_0x4d0a7a[_0x4674('0x60')][0x5][_0x4674('0x61')]:undefined)||''},{'name':_0x4674('0x6d'),'value':_0x4d0a7a[_0x4674('0x6d')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a['attrs'][0x6]?_0x4d0a7a['attrs'][0x6][_0x4674('0x61')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x4d0a7a[_0x4674('0x6e')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x7]?_0x4d0a7a['attrs'][0x7][_0x4674('0x61')]:undefined)||''},{'name':_0x4674('0x6f'),'value':_0x4d0a7a[_0x4674('0x6f')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a['attrs'][0x8]?_0x4d0a7a['attrs'][0x8][_0x4674('0x61')]:undefined)||''},{'name':_0x4674('0x70'),'value':_0x4d0a7a[_0x4674('0x70')]||(_0x4d0a7a['attrs']&&_0x4d0a7a[_0x4674('0x60')][0x9]?_0x4d0a7a[_0x4674('0x60')][0x9][_0x4674('0x61')]:undefined)||''},{'name':_0x4674('0x71'),'value':_0x4d0a7a[_0x4674('0x71')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0xa]?_0x4d0a7a['attrs'][0xa][_0x4674('0x61')]:undefined)||''}];case _0x4674('0x79'):return[{'name':'attrReport','type':_0x4d0a7a['reportType']||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x0]?_0x4d0a7a['attrs'][0x0][_0x4674('0x36')]:undefined)||null,'value':_0x4d0a7a[_0x4674('0x7a')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x0]?_0x4d0a7a[_0x4674('0x60')][0x0]['value']:undefined)||null},{'name':_0x4674('0x7b'),'value':_0x4d0a7a[_0x4674('0x7b')]||(_0x4d0a7a[_0x4674('0x60')]&&_0x4d0a7a[_0x4674('0x60')][0x1]?_0x4d0a7a[_0x4674('0x60')][0x1][_0x4674('0x61')]:undefined)||0x0}];default:return[];}}catch(_0x4e56b8){logger[_0x4674('0x57')](_0x4674('0x7c'),JSON[_0x4674('0x7d')](_0x4e56b8));return[];}}exports[_0x4674('0x7e')]=function(_0x21ffac,_0x2145e1,_0x2d39a2){if(_0x21ffac[_0x4674('0x50')]['id']){delete _0x21ffac[_0x4674('0x50')]['id'];}return db['Dashboard']['find']({'where':{'id':_0x21ffac['params']['id']}})[_0x4674('0x29')](handleEntityNotFound(_0x2145e1,null))[_0x4674('0x29')](function(_0x419ea4){if(_0x419ea4){_0x21ffac[_0x4674('0x50')][_0x4674('0x7f')]=_0x419ea4['id'];_0x21ffac[_0x4674('0x50')]['attrs']=widgetAttributes(_0x21ffac[_0x4674('0x50')]);return db[_0x4674('0x80')][_0x4674('0x4f')](_0x21ffac[_0x4674('0x50')]);}})[_0x4674('0x29')](respondWithResult(_0x2145e1,null))[_0x4674('0x4c')](handleError(_0x2145e1,null));};exports[_0x4674('0x81')]=function(_0x54d2c2,_0x3d0994,_0x18c3cb){var _0x1ebb37={};var _0x1484ef={};var _0xfa819;var _0x265889;return db[_0x4674('0x34')][_0x4674('0x82')]({'where':{'id':_0x54d2c2[_0x4674('0x59')]['id']}})[_0x4674('0x29')](handleEntityNotFound(_0x3d0994,null))[_0x4674('0x29')](function(_0x434a21){if(_0x434a21){_0xfa819=_0x434a21;_0x1484ef[_0x4674('0x38')]=_['keys'](db[_0x4674('0x80')][_0x4674('0x5a')]);_0x1484ef[_0x4674('0x39')]=_[_0x4674('0x3a')](_0x54d2c2['query']);_0x1484ef[_0x4674('0x43')]=_['intersection'](_0x1484ef[_0x4674('0x38')],_0x1484ef['query']);_0x1ebb37[_0x4674('0x3c')]=_[_0x4674('0x3b')](_0x1484ef[_0x4674('0x38')],qs[_0x4674('0x3d')](_0x54d2c2[_0x4674('0x39')][_0x4674('0x3d')]));_0x1ebb37['attributes']=_0x1ebb37['attributes'][_0x4674('0x3e')]?_0x1ebb37[_0x4674('0x3c')]:_0x1484ef['model'];_0x1ebb37['order']=qs['sort'](_0x54d2c2[_0x4674('0x39')][_0x4674('0x41')]);_0x1ebb37['where']=qs[_0x4674('0x43')](_[_0x4674('0x44')](_0x54d2c2[_0x4674('0x39')],_0x1484ef['filters']));if(_0x54d2c2[_0x4674('0x39')][_0x4674('0x45')]){_0x1ebb37[_0x4674('0x42')]=_[_0x4674('0x46')](_0x1ebb37['where'],{'$or':_[_0x4674('0x33')](_0x1ebb37['attributes'],function(_0x25390f){var _0x3aa346={};_0x3aa346[_0x25390f]={'$like':'%'+_0x54d2c2[_0x4674('0x39')][_0x4674('0x45')]+'%'};return _0x3aa346;})});}_0x1ebb37=_[_0x4674('0x46')]({},_0x1ebb37,_0x54d2c2[_0x4674('0x48')]);return _0xfa819[_0x4674('0x81')](_0x1ebb37);}})[_0x4674('0x29')](function(_0x433dac){if(_0x433dac){_0x265889=_0x433dac[_0x4674('0x3e')];if(!_0x54d2c2[_0x4674('0x39')][_0x4674('0x3f')](_0x4674('0x83'))){_0x1ebb37['limit']=qs[_0x4674('0x25')](_0x54d2c2['query'][_0x4674('0x25')]);_0x1ebb37['offset']=qs[_0x4674('0x22')](_0x54d2c2['query']['offset']);}return _0xfa819[_0x4674('0x81')](_0x1ebb37);}})[_0x4674('0x29')](function(_0x34930e){if(_0x34930e){return _0x34930e?{'count':_0x265889,'rows':_0x34930e}:null;}})['then'](respondWithResult(_0x3d0994,null))[_0x4674('0x4c')](handleError(_0x3d0994,null));};
\ No newline at end of file
+var _0xb7fc=['destroy','CustomDashboards','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','count','include','Dashboard','rows','catch','params','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','UserProfileSection','userProfileId','clone','createdAt','updatedAt','body','omit','role','autoAssociation','iframe','attrUrl','attrs','custom','attrPath','attrHourFormat','value','HH:mm:ss','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrFaxAccounts','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','addItem','DashboardId','DashboardItem','getItems','findOne','eml-format','request-promise','moment','mustache','path','sox','lodash','squel','crypto','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','set','apply','save','update','then'];(function(_0x5b34f6,_0x5329df){var _0x3240e0=function(_0x235028){while(--_0x235028){_0x5b34f6['push'](_0x5b34f6['shift']());}};_0x3240e0(++_0x5329df);}(_0xb7fc,0xd0));var _0xcb7f=function(_0x3f9f39,_0x39d8c2){_0x3f9f39=_0x3f9f39-0x0;var _0x3de0b8=_0xb7fc[_0x3f9f39];return _0x3de0b8;};'use strict';var emlformat=require(_0xcb7f('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xcb7f('0x1'));var moment=require(_0xcb7f('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xcb7f('0x3'));var util=require('util');var path=require(_0xcb7f('0x4'));var sox=require(_0xcb7f('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xcb7f('0x6'));var squel=require(_0xcb7f('0x7'));var crypto=require(_0xcb7f('0x8'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xcb7f('0x9'));var querystring=require(_0xcb7f('0xa'));var Papa=require(_0xcb7f('0xb'));var Redis=require('ioredis');var authService=require(_0xcb7f('0xc'));var qs=require(_0xcb7f('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcb7f('0xe'));var logger=require(_0xcb7f('0xf'))('api');var utils=require('../../config/utils');var config=require(_0xcb7f('0x10'));var licenseUtil=require(_0xcb7f('0x11'));var db=require(_0xcb7f('0x12'))['db'];config['redis']=_[_0xcb7f('0x13')](config[_0xcb7f('0x14')],{'host':_0xcb7f('0x15'),'port':0x18eb});var socket=require(_0xcb7f('0x16'))(new Redis(config['redis']));require('./dashboard.socket')[_0xcb7f('0x17')](socket);function respondWithStatusCode(_0x4294d9,_0x1ea053){_0x1ea053=_0x1ea053||0xcc;return function(_0x19da2b){if(_0x19da2b){return _0x4294d9[_0xcb7f('0x18')](_0x1ea053);}return _0x4294d9[_0xcb7f('0x19')](_0x1ea053)[_0xcb7f('0x1a')]();};}function respondWithResult(_0x30c034,_0x38043e){_0x38043e=_0x38043e||0xc8;return function(_0x2f7859){if(_0x2f7859){return _0x30c034['status'](_0x38043e)[_0xcb7f('0x1b')](_0x2f7859);}};}function respondWithFilteredResult(_0x1cdeef,_0x30f334){return function(_0x143ab0){if(_0x143ab0){var _0x49a0bf=typeof _0x30f334[_0xcb7f('0x1c')]===_0xcb7f('0x1d')&&typeof _0x30f334['limit']==='undefined';var _0x405783=_0x143ab0['count'];var _0x13317a=_0x49a0bf?0x0:_0x30f334[_0xcb7f('0x1c')];var _0xf6c857=_0x49a0bf?_0x143ab0['count']:_0x30f334[_0xcb7f('0x1c')]+_0x30f334[_0xcb7f('0x1e')];var _0x578fd8;if(_0xf6c857>=_0x405783){_0xf6c857=_0x405783;_0x578fd8=0xc8;}else{_0x578fd8=0xce;}_0x1cdeef[_0xcb7f('0x19')](_0x578fd8);return _0x1cdeef[_0xcb7f('0x1f')]('Content-Range',_0x13317a+'-'+_0xf6c857+'/'+_0x405783)[_0xcb7f('0x1b')](_0x143ab0);}return null;};}function patchUpdates(_0x3c0f1a){return function(_0x4e1081){try{jsonpatch[_0xcb7f('0x20')](_0x4e1081,_0x3c0f1a,!![]);}catch(_0x3cef1b){return BPromise['reject'](_0x3cef1b);}return _0x4e1081[_0xcb7f('0x21')]();};}function saveUpdates(_0x45e7fd,_0x2ac095){return function(_0x1bfc82){if(_0x1bfc82){return _0x1bfc82[_0xcb7f('0x22')](_0x45e7fd)[_0xcb7f('0x23')](function(_0x51a97a){return _0x51a97a;});}return null;};}function removeEntity(_0x2a2b36,_0x3bad31){return function(_0x9e25ee){if(_0x9e25ee){return _0x9e25ee[_0xcb7f('0x24')]()[_0xcb7f('0x23')](function(){var _0x4e4f45=_0x9e25ee['get']({'plain':!![]});var _0xd19b0=_0xcb7f('0x25');return db[_0xcb7f('0x26')]['destroy']({'where':{'type':_0xd19b0,'resourceId':_0x4e4f45['id']}})['then'](function(){return _0x9e25ee;});})[_0xcb7f('0x23')](function(){_0x2a2b36['status'](0xcc)[_0xcb7f('0x1a')]();});}};}function handleEntityNotFound(_0x1518a6,_0x4a4559){return function(_0x489444){if(!_0x489444){_0x1518a6[_0xcb7f('0x18')](0x194);}return _0x489444;};}function handleError(_0x2ce4f7,_0x334f02){_0x334f02=_0x334f02||0x1f4;return function(_0x58cd1d){logger[_0xcb7f('0x27')](_0x58cd1d[_0xcb7f('0x28')]);if(_0x58cd1d[_0xcb7f('0x29')]){delete _0x58cd1d[_0xcb7f('0x29')];}_0x2ce4f7[_0xcb7f('0x19')](_0x334f02)[_0xcb7f('0x2a')](_0x58cd1d);};}exports[_0xcb7f('0x2b')]=function(_0x43563a,_0x56baa2){var _0x3c986a={},_0x458e7b={},_0x201372={'count':0x0,'rows':[]};var _0x1a4c68=_[_0xcb7f('0x2c')](db['Dashboard'][_0xcb7f('0x2d')],function(_0x21331a){return{'name':_0x21331a[_0xcb7f('0x2e')],'type':_0x21331a['type'][_0xcb7f('0x2f')]};});_0x458e7b[_0xcb7f('0x30')]=_[_0xcb7f('0x2c')](_0x1a4c68,_0xcb7f('0x29'));_0x458e7b[_0xcb7f('0x31')]=_[_0xcb7f('0x32')](_0x43563a[_0xcb7f('0x31')]);_0x458e7b[_0xcb7f('0x33')]=_[_0xcb7f('0x34')](_0x458e7b[_0xcb7f('0x30')],_0x458e7b[_0xcb7f('0x31')]);_0x3c986a[_0xcb7f('0x35')]=_[_0xcb7f('0x34')](_0x458e7b['model'],qs['fields'](_0x43563a[_0xcb7f('0x31')][_0xcb7f('0x36')]));_0x3c986a[_0xcb7f('0x35')]=_0x3c986a[_0xcb7f('0x35')][_0xcb7f('0x37')]?_0x3c986a[_0xcb7f('0x35')]:_0x458e7b[_0xcb7f('0x30')];if(!_0x43563a[_0xcb7f('0x31')][_0xcb7f('0x38')](_0xcb7f('0x39'))){_0x3c986a[_0xcb7f('0x1e')]=qs[_0xcb7f('0x1e')](_0x43563a[_0xcb7f('0x31')][_0xcb7f('0x1e')]);_0x3c986a[_0xcb7f('0x1c')]=qs[_0xcb7f('0x1c')](_0x43563a['query'][_0xcb7f('0x1c')]);}_0x3c986a[_0xcb7f('0x3a')]=qs[_0xcb7f('0x3b')](_0x43563a[_0xcb7f('0x31')][_0xcb7f('0x3b')]);_0x3c986a[_0xcb7f('0x3c')]=qs[_0xcb7f('0x33')](_[_0xcb7f('0x3d')](_0x43563a[_0xcb7f('0x31')],_0x458e7b[_0xcb7f('0x33')]),_0x1a4c68);if(_0x43563a[_0xcb7f('0x31')][_0xcb7f('0x3e')]){_0x3c986a[_0xcb7f('0x3c')]=_[_0xcb7f('0x3f')](_0x3c986a[_0xcb7f('0x3c')],{'$or':_[_0xcb7f('0x2c')](_0x1a4c68,function(_0x38c5c9){if(_0x38c5c9[_0xcb7f('0x40')]!=='VIRTUAL'){var _0x4fe78f={};_0x4fe78f[_0x38c5c9[_0xcb7f('0x29')]]={'$like':'%'+_0x43563a[_0xcb7f('0x31')][_0xcb7f('0x3e')]+'%'};return _0x4fe78f;}})});}_0x3c986a=_['merge']({},_0x3c986a,_0x43563a[_0xcb7f('0x41')]);var _0x5755bf={'where':_0x3c986a[_0xcb7f('0x3c')]};return db['Dashboard'][_0xcb7f('0x42')](_0x5755bf)[_0xcb7f('0x23')](function(_0x161e0d){_0x201372[_0xcb7f('0x42')]=_0x161e0d;if(_0x43563a[_0xcb7f('0x31')]['includeAll']){_0x3c986a[_0xcb7f('0x43')]=[{'all':!![]}];}return db[_0xcb7f('0x44')]['findAll'](_0x3c986a);})[_0xcb7f('0x23')](function(_0x4a7951){_0x201372[_0xcb7f('0x45')]=_0x4a7951;return _0x201372;})[_0xcb7f('0x23')](respondWithFilteredResult(_0x56baa2,_0x3c986a))[_0xcb7f('0x46')](handleError(_0x56baa2,null));};exports['show']=function(_0x3eeb4c,_0x470a2f){var _0x2a13d7={'raw':![],'where':{'id':_0x3eeb4c[_0xcb7f('0x47')]['id']}},_0xe6de79={};_0xe6de79[_0xcb7f('0x30')]=_['keys'](db[_0xcb7f('0x44')][_0xcb7f('0x2d')]);_0xe6de79[_0xcb7f('0x31')]=_[_0xcb7f('0x32')](_0x3eeb4c[_0xcb7f('0x31')]);_0xe6de79[_0xcb7f('0x33')]=_[_0xcb7f('0x34')](_0xe6de79[_0xcb7f('0x30')],_0xe6de79[_0xcb7f('0x31')]);_0x2a13d7['attributes']=_[_0xcb7f('0x34')](_0xe6de79[_0xcb7f('0x30')],qs[_0xcb7f('0x36')](_0x3eeb4c[_0xcb7f('0x31')][_0xcb7f('0x36')]));_0x2a13d7[_0xcb7f('0x35')]=_0x2a13d7[_0xcb7f('0x35')][_0xcb7f('0x37')]?_0x2a13d7[_0xcb7f('0x35')]:_0xe6de79[_0xcb7f('0x30')];if(_0x3eeb4c[_0xcb7f('0x31')][_0xcb7f('0x48')]){_0x2a13d7['include']=[{'all':!![]}];}_0x2a13d7=_[_0xcb7f('0x3f')]({},_0x2a13d7,_0x3eeb4c[_0xcb7f('0x41')]);return db['Dashboard'][_0xcb7f('0x49')](_0x2a13d7)[_0xcb7f('0x23')](handleEntityNotFound(_0x470a2f,null))[_0xcb7f('0x23')](respondWithResult(_0x470a2f,null))['catch'](handleError(_0x470a2f,null));};exports[_0xcb7f('0x4a')]=function(_0x1ad2b0,_0x1635d7){return db['Dashboard'][_0xcb7f('0x4a')](_0x1ad2b0['body'],{})['then'](function(_0x294116){var _0x1842f9=_0x1ad2b0[_0xcb7f('0x4b')]['get']({'plain':!![]});if(!_0x1842f9)throw new Error(_0xcb7f('0x4c'));if(_0x1842f9['role']===_0xcb7f('0x4b')){var _0x1c019e=_0x294116[_0xcb7f('0x4d')]({'plain':!![]});var _0x1e870c=_0xcb7f('0x25');return db[_0xcb7f('0x4e')][_0xcb7f('0x49')]({'where':{'name':_0x1e870c,'userProfileId':_0x1842f9[_0xcb7f('0x4f')]},'raw':!![]})[_0xcb7f('0x23')](function(_0x31de34){if(_0x31de34&&_0x31de34['autoAssociation']===0x0){return db[_0xcb7f('0x26')][_0xcb7f('0x4a')]({'name':_0x1c019e[_0xcb7f('0x29')],'resourceId':_0x1c019e['id'],'type':_0x31de34[_0xcb7f('0x29')],'sectionId':_0x31de34['id']},{})[_0xcb7f('0x23')](function(){return _0x294116;});}else{return _0x294116;}})[_0xcb7f('0x46')](function(_0x2a0bf8){logger[_0xcb7f('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2a0bf8);throw _0x2a0bf8;});}return _0x294116;})[_0xcb7f('0x23')](respondWithResult(_0x1635d7,0xc9))[_0xcb7f('0x46')](handleError(_0x1635d7,null));};exports[_0xcb7f('0x50')]=function(_0x4b9f68,_0x40c4cf){var _0x3e58a0={'where':{'id':_0x4b9f68[_0xcb7f('0x47')]['id']}},_0x154f69={};_0x154f69['model']=_[_0xcb7f('0x32')](db[_0xcb7f('0x44')][_0xcb7f('0x2d')]);_0x3e58a0[_0xcb7f('0x35')]=_[_0xcb7f('0x34')](_0x154f69[_0xcb7f('0x30')],qs[_0xcb7f('0x36')](_0x4b9f68[_0xcb7f('0x31')]['fields']));_0x3e58a0[_0xcb7f('0x35')]=_0x3e58a0['attributes'][_0xcb7f('0x37')]?_0x3e58a0[_0xcb7f('0x35')]:_0x154f69[_0xcb7f('0x30')];if(_0x4b9f68[_0xcb7f('0x31')][_0xcb7f('0x48')]){_0x3e58a0['include']=[{'all':!![]}];}_0x3e58a0=_[_0xcb7f('0x3f')]({},_0x3e58a0,_0x4b9f68[_0xcb7f('0x41')]);return db[_0xcb7f('0x44')]['find'](_0x3e58a0)[_0xcb7f('0x23')](handleEntityNotFound(_0x40c4cf,null))[_0xcb7f('0x23')](function(_0x52afd1){if(_0x52afd1){var _0x286878=_0x52afd1[_0xcb7f('0x4d')]({'plain':!![]});_0x286878=qs['omit'](_0x286878,['id',_0xcb7f('0x51'),_0xcb7f('0x52')]);_0x4b9f68[_0xcb7f('0x53')]=_[_0xcb7f('0x54')](_0x4b9f68[_0xcb7f('0x53')],['id',_0xcb7f('0x51'),'updatedAt']);return db[_0xcb7f('0x44')][_0xcb7f('0x4a')](_['merge'](_0x286878,_0x4b9f68[_0xcb7f('0x53')]),{'include':_0x4b9f68['query']['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x89e370){var _0x2560e6=_0x4b9f68[_0xcb7f('0x4b')][_0xcb7f('0x4d')]({'plain':!![]});if(!_0x2560e6)throw new Error(_0xcb7f('0x4c'));if(_0x2560e6[_0xcb7f('0x55')]==='user'){var _0x42c7bc=_0x89e370[_0xcb7f('0x4d')]({'plain':!![]});var _0x1b27a2='CustomDashboards';return db[_0xcb7f('0x4e')][_0xcb7f('0x49')]({'where':{'name':_0x1b27a2,'userProfileId':_0x2560e6['userProfileId']},'raw':!![]})[_0xcb7f('0x23')](function(_0x2a58da){if(_0x2a58da&&_0x2a58da[_0xcb7f('0x56')]===0x0){return db['UserProfileResource'][_0xcb7f('0x4a')]({'name':_0x42c7bc['name'],'resourceId':_0x42c7bc['id'],'type':_0x2a58da[_0xcb7f('0x29')],'sectionId':_0x2a58da['id']},{})[_0xcb7f('0x23')](function(){return _0x89e370;});}else{return _0x89e370;}})[_0xcb7f('0x46')](function(_0x62552d){logger[_0xcb7f('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x62552d);throw _0x62552d;});}return _0x89e370;});}})[_0xcb7f('0x23')](respondWithResult(_0x40c4cf,0xc9))[_0xcb7f('0x46')](handleError(_0x40c4cf,null));};exports[_0xcb7f('0x22')]=function(_0x24870a,_0x2928e2){if(_0x24870a[_0xcb7f('0x53')]['id']){delete _0x24870a['body']['id'];}return db['Dashboard'][_0xcb7f('0x49')]({'where':{'id':_0x24870a[_0xcb7f('0x47')]['id']}})['then'](handleEntityNotFound(_0x2928e2,null))[_0xcb7f('0x23')](saveUpdates(_0x24870a[_0xcb7f('0x53')],null))[_0xcb7f('0x23')](respondWithResult(_0x2928e2,null))[_0xcb7f('0x46')](handleError(_0x2928e2,null));};exports['destroy']=function(_0x129084,_0x240ded){return db[_0xcb7f('0x44')][_0xcb7f('0x49')]({'where':{'id':_0x129084['params']['id']}})[_0xcb7f('0x23')](handleEntityNotFound(_0x240ded,null))[_0xcb7f('0x23')](removeEntity(_0x240ded,null))[_0xcb7f('0x46')](handleError(_0x240ded,null));};function widgetAttributes(_0x37aaca){try{switch(_0x37aaca[_0xcb7f('0x40')]){case _0xcb7f('0x57'):return[{'name':_0xcb7f('0x58'),'value':_0x37aaca[_0xcb7f('0x58')]||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca['attrs'][0x0]?_0x37aaca[_0xcb7f('0x59')][0x0]['value']:undefined)||'https://'}];case _0xcb7f('0x5a'):return[{'name':_0xcb7f('0x5b'),'value':_0x37aaca[_0xcb7f('0x5b')]||(_0x37aaca['attrs']&&_0x37aaca['attrs'][0x0]?_0x37aaca[_0xcb7f('0x59')][0x0]['value']:undefined)||''}];case'clock':return[{'name':'attrHourFormat','value':_0x37aaca[_0xcb7f('0x5c')]||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0x0]?_0x37aaca['attrs'][0x0][_0xcb7f('0x5d')]:undefined)||_0xcb7f('0x5e')},{'name':'attrTimezone','value':_0x37aaca['attrTimezone']||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0x1]?_0x37aaca[_0xcb7f('0x59')][0x1][_0xcb7f('0x5d')]:undefined)||_0xcb7f('0x5f')},{'name':_0xcb7f('0x60'),'value':_0x37aaca['attrFontSize']||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0x2]?_0x37aaca['attrs'][0x2][_0xcb7f('0x5d')]:undefined)||0xc}];case'counter':return[{'name':_0xcb7f('0x61'),'value':_0x37aaca['attrMetric']||(_0x37aaca['attrs']&&_0x37aaca[_0xcb7f('0x59')][0x0]?_0x37aaca['attrs'][0x0]['value']:undefined)||_0xcb7f('0x62')},{'name':_0xcb7f('0x63'),'value':_0x37aaca['attrVoiceQueues']||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca['attrs'][0x1]?_0x37aaca[_0xcb7f('0x59')][0x1]['value']:undefined)||[]},{'name':'attrFontSize','value':_0x37aaca[_0xcb7f('0x60')]||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca['attrs'][0x2]?_0x37aaca['attrs'][0x2]['value']:undefined)||0x14},{'name':_0xcb7f('0x64'),'value':_0x37aaca['attrChannel']||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0x3]?_0x37aaca[_0xcb7f('0x59')][0x3][_0xcb7f('0x5d')]:undefined)||_0xcb7f('0x65')},{'name':_0xcb7f('0x66'),'value':_0x37aaca['attrEmailAccounts']||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0x4]?_0x37aaca['attrs'][0x4]['value']:undefined)||''},{'name':'attrFaxAccounts','value':_0x37aaca['attrFaxAccounts']||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0x5]?_0x37aaca[_0xcb7f('0x59')][0x5][_0xcb7f('0x5d')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x37aaca[_0xcb7f('0x67')]||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0x6]?_0x37aaca['attrs'][0x6]['value']:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x37aaca[_0xcb7f('0x68')]||(_0x37aaca['attrs']&&_0x37aaca[_0xcb7f('0x59')][0x7]?_0x37aaca['attrs'][0x7]['value']:undefined)||''},{'name':_0xcb7f('0x69'),'value':_0x37aaca['attrWhatsappAccounts']||(_0x37aaca['attrs']&&_0x37aaca[_0xcb7f('0x59')][0x8]?_0x37aaca[_0xcb7f('0x59')][0x8][_0xcb7f('0x5d')]:undefined)||''},{'name':_0xcb7f('0x6a'),'value':_0x37aaca[_0xcb7f('0x6a')]||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0x9]?_0x37aaca[_0xcb7f('0x59')][0x9][_0xcb7f('0x5d')]:undefined)||''}];case'multibar-chart':case _0xcb7f('0x6b'):return[{'name':_0xcb7f('0x6c'),'value':_0x37aaca[_0xcb7f('0x6c')]||(_0x37aaca['attrs']&&_0x37aaca[_0xcb7f('0x59')][0x0]?_0x37aaca[_0xcb7f('0x59')][0x0][_0xcb7f('0x5d')]:undefined)||_0xcb7f('0x62')},{'name':_0xcb7f('0x6d'),'value':_0x37aaca[_0xcb7f('0x6d')]||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0x1]?_0x37aaca[_0xcb7f('0x59')][0x1][_0xcb7f('0x5d')]:undefined)||null},{'name':_0xcb7f('0x6e'),'value':_0x37aaca[_0xcb7f('0x6e')]||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0x2]?_0x37aaca[_0xcb7f('0x59')][0x2][_0xcb7f('0x5d')]:undefined)||null},{'name':_0xcb7f('0x63'),'value':_0x37aaca['attrVoiceQueues']||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0x3]?_0x37aaca['attrs'][0x3][_0xcb7f('0x5d')]:undefined)||[]},{'name':_0xcb7f('0x64'),'value':_0x37aaca[_0xcb7f('0x64')]||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0x4]?_0x37aaca[_0xcb7f('0x59')][0x4]['value']:undefined)||_0xcb7f('0x65')},{'name':_0xcb7f('0x66'),'value':_0x37aaca[_0xcb7f('0x66')]||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0x5]?_0x37aaca[_0xcb7f('0x59')][0x5]['value']:undefined)||''},{'name':_0xcb7f('0x6f'),'value':_0x37aaca[_0xcb7f('0x6f')]||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0x6]?_0x37aaca[_0xcb7f('0x59')][0x6][_0xcb7f('0x5d')]:undefined)||''},{'name':_0xcb7f('0x67'),'value':_0x37aaca[_0xcb7f('0x67')]||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0x7]?_0x37aaca[_0xcb7f('0x59')][0x7][_0xcb7f('0x5d')]:undefined)||''},{'name':_0xcb7f('0x68'),'value':_0x37aaca[_0xcb7f('0x68')]||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0x8]?_0x37aaca[_0xcb7f('0x59')][0x8][_0xcb7f('0x5d')]:undefined)||''},{'name':_0xcb7f('0x69'),'value':_0x37aaca[_0xcb7f('0x69')]||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca['attrs'][0x9]?_0x37aaca['attrs'][0x9][_0xcb7f('0x5d')]:undefined)||''},{'name':_0xcb7f('0x6a'),'value':_0x37aaca[_0xcb7f('0x6a')]||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0xa]?_0x37aaca[_0xcb7f('0x59')][0xa]['value']:undefined)||''}];case _0xcb7f('0x70'):return[{'name':_0xcb7f('0x71'),'type':_0x37aaca[_0xcb7f('0x72')]||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0x0]?_0x37aaca[_0xcb7f('0x59')][0x0][_0xcb7f('0x40')]:undefined)||null,'value':_0x37aaca[_0xcb7f('0x71')]||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca[_0xcb7f('0x59')][0x0]?_0x37aaca[_0xcb7f('0x59')][0x0][_0xcb7f('0x5d')]:undefined)||null},{'name':_0xcb7f('0x73'),'value':_0x37aaca[_0xcb7f('0x73')]||(_0x37aaca[_0xcb7f('0x59')]&&_0x37aaca['attrs'][0x1]?_0x37aaca['attrs'][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x65a078){logger[_0xcb7f('0x27')](_0xcb7f('0x74'),JSON['stringify'](_0x65a078));return[];}}exports[_0xcb7f('0x75')]=function(_0x33695e,_0x5d25d9,_0x3c13e7){if(_0x33695e[_0xcb7f('0x53')]['id']){delete _0x33695e[_0xcb7f('0x53')]['id'];}return db[_0xcb7f('0x44')][_0xcb7f('0x49')]({'where':{'id':_0x33695e['params']['id']}})['then'](handleEntityNotFound(_0x5d25d9,null))[_0xcb7f('0x23')](function(_0x3aec9a){if(_0x3aec9a){_0x33695e['body'][_0xcb7f('0x76')]=_0x3aec9a['id'];_0x33695e[_0xcb7f('0x53')][_0xcb7f('0x59')]=widgetAttributes(_0x33695e['body']);return db[_0xcb7f('0x77')][_0xcb7f('0x4a')](_0x33695e[_0xcb7f('0x53')]);}})[_0xcb7f('0x23')](respondWithResult(_0x5d25d9,null))[_0xcb7f('0x46')](handleError(_0x5d25d9,null));};exports[_0xcb7f('0x78')]=function(_0x1b95cf,_0x1fb85f,_0x33605d){var _0x10d0da={};var _0x4e1899={};var _0x2996de;var _0x48a1c6;return db[_0xcb7f('0x44')][_0xcb7f('0x79')]({'where':{'id':_0x1b95cf[_0xcb7f('0x47')]['id']}})[_0xcb7f('0x23')](handleEntityNotFound(_0x1fb85f,null))[_0xcb7f('0x23')](function(_0x1a82fe){if(_0x1a82fe){_0x2996de=_0x1a82fe;_0x4e1899[_0xcb7f('0x30')]=_['keys'](db[_0xcb7f('0x77')][_0xcb7f('0x2d')]);_0x4e1899[_0xcb7f('0x31')]=_[_0xcb7f('0x32')](_0x1b95cf[_0xcb7f('0x31')]);_0x4e1899[_0xcb7f('0x33')]=_[_0xcb7f('0x34')](_0x4e1899[_0xcb7f('0x30')],_0x4e1899[_0xcb7f('0x31')]);_0x10d0da[_0xcb7f('0x35')]=_[_0xcb7f('0x34')](_0x4e1899['model'],qs[_0xcb7f('0x36')](_0x1b95cf[_0xcb7f('0x31')][_0xcb7f('0x36')]));_0x10d0da[_0xcb7f('0x35')]=_0x10d0da['attributes'][_0xcb7f('0x37')]?_0x10d0da['attributes']:_0x4e1899[_0xcb7f('0x30')];_0x10d0da['order']=qs[_0xcb7f('0x3b')](_0x1b95cf[_0xcb7f('0x31')]['sort']);_0x10d0da[_0xcb7f('0x3c')]=qs[_0xcb7f('0x33')](_['pick'](_0x1b95cf['query'],_0x4e1899['filters']));if(_0x1b95cf[_0xcb7f('0x31')][_0xcb7f('0x3e')]){_0x10d0da['where']=_[_0xcb7f('0x3f')](_0x10d0da[_0xcb7f('0x3c')],{'$or':_[_0xcb7f('0x2c')](_0x10d0da['attributes'],function(_0x4d3a8c){var _0x3124f3={};_0x3124f3[_0x4d3a8c]={'$like':'%'+_0x1b95cf['query'][_0xcb7f('0x3e')]+'%'};return _0x3124f3;})});}_0x10d0da=_[_0xcb7f('0x3f')]({},_0x10d0da,_0x1b95cf[_0xcb7f('0x41')]);return _0x2996de[_0xcb7f('0x78')](_0x10d0da);}})[_0xcb7f('0x23')](function(_0x337e20){if(_0x337e20){_0x48a1c6=_0x337e20[_0xcb7f('0x37')];if(!_0x1b95cf[_0xcb7f('0x31')][_0xcb7f('0x38')](_0xcb7f('0x39'))){_0x10d0da['limit']=qs[_0xcb7f('0x1e')](_0x1b95cf['query'][_0xcb7f('0x1e')]);_0x10d0da[_0xcb7f('0x1c')]=qs[_0xcb7f('0x1c')](_0x1b95cf[_0xcb7f('0x31')][_0xcb7f('0x1c')]);}return _0x2996de[_0xcb7f('0x78')](_0x10d0da);}})[_0xcb7f('0x23')](function(_0x170a1d){if(_0x170a1d){return _0x170a1d?{'count':_0x48a1c6,'rows':_0x170a1d}:null;}})[_0xcb7f('0x23')](respondWithResult(_0x1fb85f,null))[_0xcb7f('0x46')](handleError(_0x1fb85f,null));};
\ No newline at end of file
index aaea578..6832a55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfa2=['Dashboard','setMaxListeners','update','remove','emit','hook','exports','events','../../mysqldb'];(function(_0x18672d,_0x7eb9a5){var _0x21f0cb=function(_0x488899){while(--_0x488899){_0x18672d['push'](_0x18672d['shift']());}};_0x21f0cb(++_0x7eb9a5);}(_0xbfa2,0xf1));var _0x2bfa=function(_0x416bca,_0x42668b){_0x416bca=_0x416bca-0x0;var _0x448e0c=_0xbfa2[_0x416bca];return _0x448e0c;};'use strict';var EventEmitter=require(_0x2bfa('0x0'));var Dashboard=require(_0x2bfa('0x1'))['db'][_0x2bfa('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x2bfa('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2bfa('0x4'),'afterDestroy':_0x2bfa('0x5')};function emitEvent(_0x53ab7b){return function(_0x4ac5e4,_0x35ce6e,_0x3dab4b){DashboardEvents[_0x2bfa('0x6')](_0x53ab7b+':'+_0x4ac5e4['id'],_0x4ac5e4);DashboardEvents[_0x2bfa('0x6')](_0x53ab7b,_0x4ac5e4);_0x3dab4b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0x2bfa('0x7')](e,emitEvent(event));}}module[_0x2bfa('0x8')]=DashboardEvents;
\ No newline at end of file
+var _0xacf5=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','Dashboard'];(function(_0x326c81,_0x5d4c25){var _0x1e8c49=function(_0x56a73e){while(--_0x56a73e){_0x326c81['push'](_0x326c81['shift']());}};_0x1e8c49(++_0x5d4c25);}(_0xacf5,0x110));var _0x5acf=function(_0x5162e9,_0x55c047){_0x5162e9=_0x5162e9-0x0;var _0xea59da=_0xacf5[_0x5162e9];return _0xea59da;};'use strict';var EventEmitter=require(_0x5acf('0x0'));var Dashboard=require(_0x5acf('0x1'))['db'][_0x5acf('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x5acf('0x3')](0x0);var events={'afterCreate':_0x5acf('0x4'),'afterUpdate':_0x5acf('0x5'),'afterDestroy':_0x5acf('0x6')};function emitEvent(_0x17bf56){return function(_0xe57842,_0x40302f,_0x58e205){DashboardEvents[_0x5acf('0x7')](_0x17bf56+':'+_0xe57842['id'],_0xe57842);DashboardEvents[_0x5acf('0x7')](_0x17bf56,_0xe57842);_0x58e205(null);};}for(var e in events){if(events[_0x5acf('0x8')](e)){var event=events[e];Dashboard[_0x5acf('0x9')](e,emitEvent(event));}}module[_0x5acf('0xa')]=DashboardEvents;
\ No newline at end of file
index c22a89d..5f18b42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73a4=['dashboards','lodash','util','../../config/logger','moment','bluebird','./dashboard.attributes','exports','define','Dashboard'];(function(_0x38ced4,_0x24263f){var _0x547c07=function(_0x279fc4){while(--_0x279fc4){_0x38ced4['push'](_0x38ced4['shift']());}};_0x547c07(++_0x24263f);}(_0x73a4,0xd3));var _0x473a=function(_0x3bc994,_0x21628e){_0x3bc994=_0x3bc994-0x0;var _0xf14048=_0x73a4[_0x3bc994];return _0xf14048;};'use strict';var _=require(_0x473a('0x0'));var util=require(_0x473a('0x1'));var logger=require(_0x473a('0x2'))('api');var moment=require(_0x473a('0x3'));var BPromise=require(_0x473a('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(_0x473a('0x5'));module[_0x473a('0x6')]=function(_0x44c3d7,_0x1a81d8){return _0x44c3d7[_0x473a('0x7')](_0x473a('0x8'),attributes,{'tableName':_0x473a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6a78=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./dashboard.attributes','exports','define','Dashboard','dashboards'];(function(_0x588dae,_0x472c79){var _0x1fc3a6=function(_0x4a298a){while(--_0x4a298a){_0x588dae['push'](_0x588dae['shift']());}};_0x1fc3a6(++_0x472c79);}(_0x6a78,0xea));var _0x86a7=function(_0x390184,_0x58c979){_0x390184=_0x390184-0x0;var _0x5ad8ad=_0x6a78[_0x390184];return _0x5ad8ad;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x86a7('0x0'))(_0x86a7('0x1'));var moment=require(_0x86a7('0x2'));var BPromise=require(_0x86a7('0x3'));var rp=require(_0x86a7('0x4'));var fs=require('fs');var path=require(_0x86a7('0x5'));var rimraf=require(_0x86a7('0x6'));var config=require(_0x86a7('0x7'));var attributes=require(_0x86a7('0x8'));module[_0x86a7('0x9')]=function(_0x1f15fd,_0x424449){return _0x1f15fd[_0x86a7('0xa')](_0x86a7('0xb'),attributes,{'tableName':_0x86a7('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4859e76..05f135f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4db0=['request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','defaults','redis','socket.io-emitter','./dashboard.socket','register','request','then','Dashboard,\x20%s,\x20%s'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x4db0,0x96));var _0x04db=function(_0x75ce5b,_0x3b582f){_0x75ce5b=_0x75ce5b-0x0;var _0x22195e=_0x4db0[_0x75ce5b];return _0x22195e;};'use strict';var _=require(_0x04db('0x0'));var util=require(_0x04db('0x1'));var moment=require(_0x04db('0x2'));var BPromise=require('bluebird');var rs=require(_0x04db('0x3'));var fs=require('fs');var Redis=require(_0x04db('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x04db('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x04db('0x6'));var jayson=require(_0x04db('0x7'));var client=jayson[_0x04db('0x8')][_0x04db('0x9')]({'port':0x232a});config['redis']=_[_0x04db('0xa')](config[_0x04db('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x04db('0xc'))(new Redis(config[_0x04db('0xb')]));require(_0x04db('0xd'))[_0x04db('0xe')](socket);function respondWithRpcPromise(_0x1e2e50,_0x3fc789,_0xe1b071){return new BPromise(function(_0x2f051f,_0x27f6e3){return client[_0x04db('0xf')](_0x1e2e50,_0xe1b071)[_0x04db('0x10')](function(_0x533dae){logger['info'](_0x04db('0x11'),_0x3fc789,_0x04db('0x12'));logger[_0x04db('0x13')](_0x04db('0x14'),_0x3fc789,_0x04db('0x12'),JSON[_0x04db('0x15')](_0x533dae));if(_0x533dae[_0x04db('0x16')]){if(_0x533dae[_0x04db('0x16')][_0x04db('0x17')]===0x1f4){logger['error'](_0x04db('0x11'),_0x3fc789,_0x533dae[_0x04db('0x16')][_0x04db('0x18')]);return _0x27f6e3(_0x533dae[_0x04db('0x16')][_0x04db('0x18')]);}logger['error']('Dashboard,\x20%s,\x20%s',_0x3fc789,_0x533dae[_0x04db('0x16')][_0x04db('0x18')]);return _0x2f051f(_0x533dae[_0x04db('0x16')][_0x04db('0x18')]);}else{logger[_0x04db('0x19')](_0x04db('0x11'),_0x3fc789,_0x04db('0x12'));_0x2f051f(_0x533dae[_0x04db('0x1a')][_0x04db('0x18')]);}})[_0x04db('0x1b')](function(_0x3be66e){logger['error'](_0x04db('0x11'),_0x3fc789,_0x3be66e);_0x27f6e3(_0x3be66e);});});}
\ No newline at end of file
+var _0x3e44=['then','info','request\x20sent','debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','code','Dashboard,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','redis','socket.io-emitter','./dashboard.socket'];(function(_0x5cb398,_0x1868bb){var _0x10cd09=function(_0x5a5ab6){while(--_0x5a5ab6){_0x5cb398['push'](_0x5cb398['shift']());}};_0x10cd09(++_0x1868bb);}(_0x3e44,0x186));var _0x43e4=function(_0x5f4959,_0x5cb188){_0x5f4959=_0x5f4959-0x0;var _0x4054f2=_0x3e44[_0x5f4959];return _0x4054f2;};'use strict';var _=require(_0x43e4('0x0'));var util=require(_0x43e4('0x1'));var moment=require(_0x43e4('0x2'));var BPromise=require(_0x43e4('0x3'));var rs=require(_0x43e4('0x4'));var fs=require('fs');var Redis=require(_0x43e4('0x5'));var db=require(_0x43e4('0x6'))['db'];var utils=require(_0x43e4('0x7'));var logger=require('../../config/logger')(_0x43e4('0x8'));var config=require(_0x43e4('0x9'));var jayson=require(_0x43e4('0xa'));var client=jayson[_0x43e4('0xb')]['http']({'port':0x232a});config[_0x43e4('0xc')]=_['defaults'](config[_0x43e4('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x43e4('0xd'))(new Redis(config[_0x43e4('0xc')]));require(_0x43e4('0xe'))['register'](socket);function respondWithRpcPromise(_0x2df9b5,_0x2be110,_0x248eea){return new BPromise(function(_0x1bd78a,_0xe9655){return client['request'](_0x2df9b5,_0x248eea)[_0x43e4('0xf')](function(_0x252c74){logger[_0x43e4('0x10')]('Dashboard,\x20%s,\x20%s',_0x2be110,_0x43e4('0x11'));logger[_0x43e4('0x12')](_0x43e4('0x13'),_0x2be110,'request\x20sent',JSON[_0x43e4('0x14')](_0x252c74));if(_0x252c74[_0x43e4('0x15')]){if(_0x252c74['error'][_0x43e4('0x16')]===0x1f4){logger[_0x43e4('0x15')](_0x43e4('0x17'),_0x2be110,_0x252c74[_0x43e4('0x15')][_0x43e4('0x18')]);return _0xe9655(_0x252c74[_0x43e4('0x15')][_0x43e4('0x18')]);}logger[_0x43e4('0x15')](_0x43e4('0x17'),_0x2be110,_0x252c74['error']['message']);return _0x1bd78a(_0x252c74[_0x43e4('0x15')][_0x43e4('0x18')]);}else{logger['info'](_0x43e4('0x17'),_0x2be110,'request\x20sent');_0x1bd78a(_0x252c74[_0x43e4('0x19')]['message']);}})[_0x43e4('0x1a')](function(_0x42f9e9){logger[_0x43e4('0x15')](_0x43e4('0x17'),_0x2be110,_0x42f9e9);_0xe9655(_0x42f9e9);});});}
\ No newline at end of file
index 669906c..ee6f4ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fb0=['./dashboard.events','save','update','removeListener','register','length','dashboard:'];(function(_0x20589d,_0x55d5bf){var _0x422de9=function(_0x44cbbb){while(--_0x44cbbb){_0x20589d['push'](_0x20589d['shift']());}};_0x422de9(++_0x55d5bf);}(_0x9fb0,0x1b9));var _0x09fb=function(_0xe66cf2,_0x32ba5f){_0xe66cf2=_0xe66cf2-0x0;var _0x2d84e7=_0x9fb0[_0xe66cf2];return _0x2d84e7;};'use strict';var DashboardEvents=require(_0x09fb('0x0'));var events=[_0x09fb('0x1'),'remove',_0x09fb('0x2')];function createListener(_0x55f83b,_0x1a69d5){return function(_0x588494){_0x1a69d5['emit'](_0x55f83b,_0x588494);};}function removeListener(_0x329207,_0xa5d016){return function(){DashboardEvents[_0x09fb('0x3')](_0x329207,_0xa5d016);};}exports[_0x09fb('0x4')]=function(_0x3eecc9){for(var _0x157c66=0x0,_0x15fac9=events[_0x09fb('0x5')];_0x157c66<_0x15fac9;_0x157c66++){var _0x4c26b3=events[_0x157c66];var _0x3c0b27=createListener(_0x09fb('0x6')+_0x4c26b3,_0x3eecc9);DashboardEvents['on'](_0x4c26b3,_0x3c0b27);}};
\ No newline at end of file
+var _0xe224=['removeListener','register','length','dashboard:','remove'];(function(_0x5dee2a,_0x47d02a){var _0x31e98e=function(_0x48b1e9){while(--_0x48b1e9){_0x5dee2a['push'](_0x5dee2a['shift']());}};_0x31e98e(++_0x47d02a);}(_0xe224,0x18a));var _0x4e22=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xe224[_0x20a584];return _0x4b41a8;};'use strict';var DashboardEvents=require('./dashboard.events');var events=['save',_0x4e22('0x0'),'update'];function createListener(_0x40c070,_0x5d87d3){return function(_0xa76508){_0x5d87d3['emit'](_0x40c070,_0xa76508);};}function removeListener(_0x25b2a9,_0x3a281b){return function(){DashboardEvents[_0x4e22('0x1')](_0x25b2a9,_0x3a281b);};}exports[_0x4e22('0x2')]=function(_0x1e9f76){for(var _0x1f525f=0x0,_0x4a5767=events[_0x4e22('0x3')];_0x1f525f<_0x4a5767;_0x1f525f++){var _0x1f79ff=events[_0x1f525f];var _0x14bc73=createListener(_0x4e22('0x4')+_0x1f79ff,_0x1e9f76);DashboardEvents['on'](_0x1f79ff,_0x14bc73);}};
\ No newline at end of file
index cd18fa2..2dec3d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0490=['isAuthenticated','get','/:id','show','/:id/items','post','create','/:id/clone','clone','addItem','delete','destroy','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller'];(function(_0x3abb36,_0x20012d){var _0x53be8b=function(_0x3e6f2e){while(--_0x3e6f2e){_0x3abb36['push'](_0x3abb36['shift']());}};_0x53be8b(++_0x20012d);}(_0x0490,0x8a));var _0x0049=function(_0x53b8d6,_0x29cfd9){_0x53b8d6=_0x53b8d6-0x0;var _0x3f1df6=_0x0490[_0x53b8d6];return _0x3f1df6;};'use strict';var multer=require(_0x0049('0x0'));var util=require(_0x0049('0x1'));var path=require('path');var timeout=require(_0x0049('0x2'));var express=require('express');var router=express[_0x0049('0x3')]();var fs_extra=require(_0x0049('0x4'));var auth=require(_0x0049('0x5'));var interaction=require(_0x0049('0x6'));var config=require(_0x0049('0x7'));var controller=require(_0x0049('0x8'));router['get']('/',auth[_0x0049('0x9')](),controller['index']);router[_0x0049('0xa')](_0x0049('0xb'),auth[_0x0049('0x9')](),controller[_0x0049('0xc')]);router[_0x0049('0xa')](_0x0049('0xd'),auth['isAuthenticated'](),controller['getItems']);router[_0x0049('0xe')]('/',auth[_0x0049('0x9')](),controller[_0x0049('0xf')]);router[_0x0049('0xe')](_0x0049('0x10'),auth[_0x0049('0x9')](),controller[_0x0049('0x11')]);router[_0x0049('0xe')](_0x0049('0xd'),auth[_0x0049('0x9')](),controller[_0x0049('0x12')]);router['put'](_0x0049('0xb'),auth[_0x0049('0x9')](),controller['update']);router[_0x0049('0x13')]('/:id',auth[_0x0049('0x9')](),controller[_0x0049('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xb86f=['../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','get','isAuthenticated','show','post','/:id/clone','clone','/:id/items','addItem','update','/:id','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x48eb9d,_0x3cffa8){var _0x86bfd1=function(_0x27f0db){while(--_0x27f0db){_0x48eb9d['push'](_0x48eb9d['shift']());}};_0x86bfd1(++_0x3cffa8);}(_0xb86f,0x1f3));var _0xfb86=function(_0x3ad4fd,_0x32cc6b){_0x3ad4fd=_0x3ad4fd-0x0;var _0x5d18ab=_0xb86f[_0x3ad4fd];return _0x5d18ab;};'use strict';var multer=require(_0xfb86('0x0'));var util=require(_0xfb86('0x1'));var path=require(_0xfb86('0x2'));var timeout=require(_0xfb86('0x3'));var express=require(_0xfb86('0x4'));var router=express[_0xfb86('0x5')]();var fs_extra=require(_0xfb86('0x6'));var auth=require(_0xfb86('0x7'));var interaction=require(_0xfb86('0x8'));var config=require(_0xfb86('0x9'));var controller=require(_0xfb86('0xa'));router[_0xfb86('0xb')]('/',auth[_0xfb86('0xc')](),controller['index']);router[_0xfb86('0xb')]('/:id',auth[_0xfb86('0xc')](),controller[_0xfb86('0xd')]);router[_0xfb86('0xb')]('/:id/items',auth[_0xfb86('0xc')](),controller['getItems']);router[_0xfb86('0xe')]('/',auth[_0xfb86('0xc')](),controller['create']);router['post'](_0xfb86('0xf'),auth[_0xfb86('0xc')](),controller[_0xfb86('0x10')]);router[_0xfb86('0xe')](_0xfb86('0x11'),auth[_0xfb86('0xc')](),controller[_0xfb86('0x12')]);router['put']('/:id',auth[_0xfb86('0xc')](),controller[_0xfb86('0x13')]);router['delete'](_0xfb86('0x14'),auth[_0xfb86('0xc')](),controller['destroy']);module[_0xfb86('0x15')]=router;
\ No newline at end of file
index c739640..3068b4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90b1=['#2196f3','sequelize','squel','lodash','STRING','TEXT','long','parse','setDataValue','attrs','stringify','INTEGER','#ffffff'];(function(_0x22be6d,_0x90876b){var _0x1985e1=function(_0x4a8921){while(--_0x4a8921){_0x22be6d['push'](_0x22be6d['shift']());}};_0x1985e1(++_0x90876b);}(_0x90b1,0x1bb));var _0x190b=function(_0x5d2f39,_0x11e2f4){_0x5d2f39=_0x5d2f39-0x0;var _0x3df8f6=_0x90b1[_0x5d2f39];return _0x3df8f6;};'use strict';var Sequelize=require(_0x190b('0x0'));var squel=require(_0x190b('0x1'));var _=require(_0x190b('0x2'));module['exports']={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x190b('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x190b('0x4')](_0x190b('0x5')),'get':function(){try{return JSON[_0x190b('0x6')](this['getDataValue']('attrs'));}catch(_0x5cbebb){return[];}},'set':function(_0x5da9c1){try{this[_0x190b('0x7')](_0x190b('0x8'),JSON[_0x190b('0x9')](_0x5da9c1));}catch(_0x626aa1){this[_0x190b('0x7')](_0x190b('0x8'),JSON[_0x190b('0x9')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x190b('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x190b('0xa')]},'col':{'type':Sequelize[_0x190b('0xa')]},'background':{'type':Sequelize[_0x190b('0x3')],'allowNull':![],'defaultValue':_0x190b('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x190b('0x3')],'allowNull':![],'defaultValue':_0x190b('0xc'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x190b('0x3')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
+var _0x687b=['sequelize','squel','lodash','exports','TEXT','long','parse','getDataValue','attrs','setDataValue','stringify','INTEGER','STRING','#ffffff','#2196f3'];(function(_0x2d6a5c,_0x4105c4){var _0x36a171=function(_0x3bbc00){while(--_0x3bbc00){_0x2d6a5c['push'](_0x2d6a5c['shift']());}};_0x36a171(++_0x4105c4);}(_0x687b,0x14a));var _0xb687=function(_0x2bd8a6,_0x5b9211){_0x2bd8a6=_0x2bd8a6-0x0;var _0x1e037a=_0x687b[_0x2bd8a6];return _0x1e037a;};'use strict';var Sequelize=require(_0xb687('0x0'));var squel=require(_0xb687('0x1'));var _=require(_0xb687('0x2'));module[_0xb687('0x3')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['STRING'](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0xb687('0x4')](_0xb687('0x5')),'get':function(){try{return JSON[_0xb687('0x6')](this[_0xb687('0x7')](_0xb687('0x8')));}catch(_0x194c55){return[];}},'set':function(_0x16ccf3){try{this[_0xb687('0x9')](_0xb687('0x8'),JSON[_0xb687('0xa')](_0x16ccf3));}catch(_0x48942b){this[_0xb687('0x9')](_0xb687('0x8'),JSON['stringify']([]));}}},'sizeX':{'type':Sequelize[_0xb687('0xb')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0xb687('0xb')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0xb687('0xb')]},'col':{'type':Sequelize[_0xb687('0xb')]},'background':{'type':Sequelize[_0xb687('0xc')],'allowNull':![],'defaultValue':_0xb687('0xd'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0xb687('0xc')],'allowNull':![],'defaultValue':_0xb687('0xe'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0xb687('0xc')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
index bb7a2ec..113477d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9829=['request-promise','bluebird','mustache','util','sox','to-csv','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','./dashboardItem.socket','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','show','params','model','DashboardItem','rawAttributes','query','keys','filters','attributes','intersection','fields','length','includeAll','merge','find','catch','type','attrUrl','attrs','attrPath','value','clock','attrHourFormat','HH:mm:ss','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','error','widgetAttributes:\x20%s','stringify','body','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x3f86bd,_0x571513){var _0xa1bcc3=function(_0x214a4e){while(--_0x214a4e){_0x3f86bd['push'](_0x3f86bd['shift']());}};_0xa1bcc3(++_0x571513);}(_0x9829,0xc4));var _0x9982=function(_0xc8db6b,_0x320abd){_0xc8db6b=_0xc8db6b-0x0;var _0x12cb81=_0x9829[_0xc8db6b];return _0x12cb81;};'use strict';var emlformat=require(_0x9982('0x0'));var rimraf=require(_0x9982('0x1'));var zipdir=require(_0x9982('0x2'));var jsonpatch=require(_0x9982('0x3'));var rp=require(_0x9982('0x4'));var moment=require('moment');var BPromise=require(_0x9982('0x5'));var Mustache=require(_0x9982('0x6'));var util=require(_0x9982('0x7'));var path=require('path');var sox=require(_0x9982('0x8'));var csv=require(_0x9982('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9982('0xa'));var squel=require(_0x9982('0xb'));var crypto=require('crypto');var jsforce=require(_0x9982('0xc'));var deskjs=require(_0x9982('0xd'));var toCsv=require(_0x9982('0x9'));var querystring=require(_0x9982('0xe'));var Papa=require(_0x9982('0xf'));var Redis=require(_0x9982('0x10'));var authService=require(_0x9982('0x11'));var qs=require(_0x9982('0x12'));var as=require(_0x9982('0x13'));var hardwareService=require(_0x9982('0x14'));var logger=require(_0x9982('0x15'))(_0x9982('0x16'));var utils=require(_0x9982('0x17'));var config=require(_0x9982('0x18'));var licenseUtil=require(_0x9982('0x19'));var db=require(_0x9982('0x1a'))['db'];config[_0x9982('0x1b')]=_[_0x9982('0x1c')](config['redis'],{'host':_0x9982('0x1d'),'port':0x18eb});var socket=require(_0x9982('0x1e'))(new Redis(config['redis']));require(_0x9982('0x1f'))['register'](socket);function respondWithStatusCode(_0x39d32c,_0xbf0d32){_0xbf0d32=_0xbf0d32||0xcc;return function(_0xca7c34){if(_0xca7c34){return _0x39d32c[_0x9982('0x20')](_0xbf0d32);}return _0x39d32c[_0x9982('0x21')](_0xbf0d32)[_0x9982('0x22')]();};}function respondWithResult(_0x2883f6,_0xca588d){_0xca588d=_0xca588d||0xc8;return function(_0x1b8ecd){if(_0x1b8ecd){return _0x2883f6['status'](_0xca588d)[_0x9982('0x23')](_0x1b8ecd);}};}function respondWithFilteredResult(_0x5385cc,_0x3fd557){return function(_0x44b5ed){if(_0x44b5ed){var _0x51fc02=typeof _0x3fd557[_0x9982('0x24')]===_0x9982('0x25')&&typeof _0x3fd557[_0x9982('0x26')]===_0x9982('0x25');var _0x1297d7=_0x44b5ed[_0x9982('0x27')];var _0x4e1066=_0x51fc02?0x0:_0x3fd557[_0x9982('0x24')];var _0x3802d4=_0x51fc02?_0x44b5ed['count']:_0x3fd557[_0x9982('0x24')]+_0x3fd557[_0x9982('0x26')];var _0x6523c0;if(_0x3802d4>=_0x1297d7){_0x3802d4=_0x1297d7;_0x6523c0=0xc8;}else{_0x6523c0=0xce;}_0x5385cc[_0x9982('0x21')](_0x6523c0);return _0x5385cc[_0x9982('0x28')](_0x9982('0x29'),_0x4e1066+'-'+_0x3802d4+'/'+_0x1297d7)[_0x9982('0x23')](_0x44b5ed);}return null;};}function patchUpdates(_0x541cc8){return function(_0x3f6125){try{jsonpatch[_0x9982('0x2a')](_0x3f6125,_0x541cc8,!![]);}catch(_0x11a7e8){return BPromise[_0x9982('0x2b')](_0x11a7e8);}return _0x3f6125[_0x9982('0x2c')]();};}function saveUpdates(_0x4a27d6,_0x865a6d){return function(_0x5a5d57){if(_0x5a5d57){return _0x5a5d57[_0x9982('0x2d')](_0x4a27d6)[_0x9982('0x2e')](function(_0x2d4622){return _0x2d4622;});}return null;};}function removeEntity(_0x39747a,_0x3c129a){return function(_0x30b79e){if(_0x30b79e){return _0x30b79e[_0x9982('0x2f')]()[_0x9982('0x2e')](function(){_0x39747a[_0x9982('0x21')](0xcc)[_0x9982('0x22')]();});}};}function handleEntityNotFound(_0x1eab54,_0x2dc1ba){return function(_0x14d49c){if(!_0x14d49c){_0x1eab54[_0x9982('0x20')](0x194);}return _0x14d49c;};}function handleError(_0x13449e,_0x2f56f2){_0x2f56f2=_0x2f56f2||0x1f4;return function(_0x50d976){logger['error'](_0x50d976[_0x9982('0x30')]);if(_0x50d976[_0x9982('0x31')]){delete _0x50d976[_0x9982('0x31')];}_0x13449e[_0x9982('0x21')](_0x2f56f2)[_0x9982('0x32')](_0x50d976);};}exports[_0x9982('0x33')]=function(_0x3b90e9,_0x3337e2){var _0x1a1d91={'raw':![],'where':{'id':_0x3b90e9[_0x9982('0x34')]['id']}},_0x26a999={};_0x26a999[_0x9982('0x35')]=_['keys'](db[_0x9982('0x36')][_0x9982('0x37')]);_0x26a999[_0x9982('0x38')]=_[_0x9982('0x39')](_0x3b90e9[_0x9982('0x38')]);_0x26a999[_0x9982('0x3a')]=_['intersection'](_0x26a999[_0x9982('0x35')],_0x26a999['query']);_0x1a1d91[_0x9982('0x3b')]=_[_0x9982('0x3c')](_0x26a999[_0x9982('0x35')],qs[_0x9982('0x3d')](_0x3b90e9[_0x9982('0x38')][_0x9982('0x3d')]));_0x1a1d91[_0x9982('0x3b')]=_0x1a1d91['attributes'][_0x9982('0x3e')]?_0x1a1d91[_0x9982('0x3b')]:_0x26a999[_0x9982('0x35')];if(_0x3b90e9[_0x9982('0x38')][_0x9982('0x3f')]){_0x1a1d91['include']=[{'all':!![]}];}_0x1a1d91=_[_0x9982('0x40')]({},_0x1a1d91,_0x3b90e9['options']);return db['DashboardItem'][_0x9982('0x41')](_0x1a1d91)[_0x9982('0x2e')](handleEntityNotFound(_0x3337e2,null))['then'](respondWithResult(_0x3337e2,null))[_0x9982('0x42')](handleError(_0x3337e2,null));};exports[_0x9982('0x2f')]=function(_0x1db893,_0x342f9f){return db[_0x9982('0x36')][_0x9982('0x41')]({'where':{'id':_0x1db893[_0x9982('0x34')]['id']}})[_0x9982('0x2e')](handleEntityNotFound(_0x342f9f,null))[_0x9982('0x2e')](removeEntity(_0x342f9f,null))[_0x9982('0x42')](handleError(_0x342f9f,null));};function widgetAttributes(_0x3770f1){try{switch(_0x3770f1[_0x9982('0x43')]){case'iframe':return[{'name':_0x9982('0x44'),'value':_0x3770f1[_0x9982('0x44')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x0]?_0x3770f1[_0x9982('0x45')][0x0]['value']:undefined)||'https://'}];case'custom':return[{'name':_0x9982('0x46'),'value':_0x3770f1[_0x9982('0x46')]||(_0x3770f1['attrs']&&_0x3770f1[_0x9982('0x45')][0x0]?_0x3770f1[_0x9982('0x45')][0x0][_0x9982('0x47')]:undefined)||''}];case _0x9982('0x48'):return[{'name':'attrHourFormat','value':_0x3770f1[_0x9982('0x49')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x0]?_0x3770f1[_0x9982('0x45')][0x0][_0x9982('0x47')]:undefined)||_0x9982('0x4a')},{'name':'attrTimezone','value':_0x3770f1['attrTimezone']||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x1]?_0x3770f1[_0x9982('0x45')][0x1]['value']:undefined)||_0x9982('0x4b')},{'name':_0x9982('0x4c'),'value':_0x3770f1[_0x9982('0x4c')]||(_0x3770f1['attrs']&&_0x3770f1['attrs'][0x2]?_0x3770f1['attrs'][0x2]['value']:undefined)||0xc}];case'counter':return[{'name':_0x9982('0x4d'),'value':_0x3770f1['attrMetric']||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x0]?_0x3770f1['attrs'][0x0][_0x9982('0x47')]:undefined)||_0x9982('0x4e')},{'name':_0x9982('0x4f'),'value':_0x3770f1[_0x9982('0x4f')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1['attrs'][0x1]?_0x3770f1[_0x9982('0x45')][0x1][_0x9982('0x47')]:undefined)||[]},{'name':_0x9982('0x4c'),'value':_0x3770f1[_0x9982('0x4c')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x2]?_0x3770f1[_0x9982('0x45')][0x2][_0x9982('0x47')]:undefined)||0x14},{'name':_0x9982('0x50'),'value':_0x3770f1['attrChannel']||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1['attrs'][0x3]?_0x3770f1['attrs'][0x3][_0x9982('0x47')]:undefined)||_0x9982('0x51')},{'name':'attrEmailAccounts','value':_0x3770f1[_0x9982('0x52')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x4]?_0x3770f1[_0x9982('0x45')][0x4][_0x9982('0x47')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x3770f1[_0x9982('0x53')]||(_0x3770f1['attrs']&&_0x3770f1[_0x9982('0x45')][0x5]?_0x3770f1[_0x9982('0x45')][0x5]['value']:undefined)||''},{'name':_0x9982('0x54'),'value':_0x3770f1[_0x9982('0x54')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x6]?_0x3770f1[_0x9982('0x45')][0x6]['value']:undefined)||''},{'name':_0x9982('0x55'),'value':_0x3770f1[_0x9982('0x55')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1['attrs'][0x7]?_0x3770f1['attrs'][0x7]['value']:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x3770f1[_0x9982('0x56')]||(_0x3770f1['attrs']&&_0x3770f1[_0x9982('0x45')][0x8]?_0x3770f1[_0x9982('0x45')][0x8]['value']:undefined)||''},{'name':'attrChatWebsites','value':_0x3770f1[_0x9982('0x57')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x9]?_0x3770f1[_0x9982('0x45')][0x9][_0x9982('0x47')]:undefined)||''}];case _0x9982('0x58'):case'pie-chart':return[{'name':_0x9982('0x59'),'value':_0x3770f1[_0x9982('0x59')]||(_0x3770f1['attrs']&&_0x3770f1[_0x9982('0x45')][0x0]?_0x3770f1['attrs'][0x0][_0x9982('0x47')]:undefined)||_0x9982('0x4e')},{'name':'attrSerie2','value':_0x3770f1[_0x9982('0x5a')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x1]?_0x3770f1[_0x9982('0x45')][0x1][_0x9982('0x47')]:undefined)||null},{'name':_0x9982('0x5b'),'value':_0x3770f1[_0x9982('0x5b')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x2]?_0x3770f1[_0x9982('0x45')][0x2][_0x9982('0x47')]:undefined)||null},{'name':_0x9982('0x4f'),'value':_0x3770f1[_0x9982('0x4f')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1['attrs'][0x3]?_0x3770f1[_0x9982('0x45')][0x3][_0x9982('0x47')]:undefined)||[]},{'name':_0x9982('0x50'),'value':_0x3770f1['attrChannel']||(_0x3770f1['attrs']&&_0x3770f1['attrs'][0x4]?_0x3770f1[_0x9982('0x45')][0x4][_0x9982('0x47')]:undefined)||_0x9982('0x51')},{'name':'attrEmailAccounts','value':_0x3770f1[_0x9982('0x52')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1['attrs'][0x5]?_0x3770f1[_0x9982('0x45')][0x5][_0x9982('0x47')]:undefined)||''},{'name':_0x9982('0x53'),'value':_0x3770f1[_0x9982('0x53')]||(_0x3770f1['attrs']&&_0x3770f1[_0x9982('0x45')][0x6]?_0x3770f1[_0x9982('0x45')][0x6][_0x9982('0x47')]:undefined)||''},{'name':_0x9982('0x54'),'value':_0x3770f1['attrSmsAccounts']||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x7]?_0x3770f1[_0x9982('0x45')][0x7][_0x9982('0x47')]:undefined)||''},{'name':_0x9982('0x55'),'value':_0x3770f1[_0x9982('0x55')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1['attrs'][0x8]?_0x3770f1[_0x9982('0x45')][0x8]['value']:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x3770f1[_0x9982('0x56')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x9]?_0x3770f1[_0x9982('0x45')][0x9][_0x9982('0x47')]:undefined)||''},{'name':_0x9982('0x57'),'value':_0x3770f1[_0x9982('0x57')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0xa]?_0x3770f1[_0x9982('0x45')][0xa]['value']:undefined)||''}];case _0x9982('0x5c'):return[{'name':_0x9982('0x5d'),'type':_0x3770f1[_0x9982('0x5e')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x0]?_0x3770f1[_0x9982('0x45')][0x0]['type']:undefined)||null,'value':_0x3770f1['attrReport']||(_0x3770f1['attrs']&&_0x3770f1[_0x9982('0x45')][0x0]?_0x3770f1['attrs'][0x0][_0x9982('0x47')]:undefined)||null},{'name':'attrRefresh','value':_0x3770f1[_0x9982('0x5f')]||(_0x3770f1[_0x9982('0x45')]&&_0x3770f1[_0x9982('0x45')][0x1]?_0x3770f1['attrs'][0x1][_0x9982('0x47')]:undefined)||0x0}];default:return[];}}catch(_0x3f06f7){logger[_0x9982('0x60')](_0x9982('0x61'),JSON[_0x9982('0x62')](_0x3f06f7));return[];}}exports['create']=function(_0x294f10,_0x5bdbd4){if(_0x294f10[_0x9982('0x63')]){_0x294f10[_0x9982('0x63')][_0x9982('0x45')]=widgetAttributes(_0x294f10['body']);}return db['DashboardItem']['create'](_0x294f10[_0x9982('0x63')],{})['then'](respondWithResult(_0x5bdbd4,0xc9))[_0x9982('0x42')](handleError(_0x5bdbd4,null));};exports['update']=function(_0x278fe2,_0x4bfbca){if(_0x278fe2[_0x9982('0x63')]['id']){delete _0x278fe2[_0x9982('0x63')]['id'];}_0x278fe2[_0x9982('0x63')]['attrs']=widgetAttributes(_0x278fe2[_0x9982('0x63')]);return db['DashboardItem'][_0x9982('0x41')]({'where':{'id':_0x278fe2[_0x9982('0x34')]['id']}})[_0x9982('0x2e')](handleEntityNotFound(_0x4bfbca,null))[_0x9982('0x2e')](saveUpdates(_0x278fe2[_0x9982('0x63')],null))['then'](respondWithResult(_0x4bfbca,null))['catch'](handleError(_0x4bfbca,null));};
\ No newline at end of file
+var _0x30bc=['attributes','intersection','fields','length','includeAll','DashboardItem','find','catch','type','iframe','attrUrl','attrs','attrPath','value','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','error','widgetAttributes:\x20%s','stringify','body','create','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','status','end','json','undefined','limit','count','offset','set','then','destroy','sendStatus','name','send','show','params','model','keys','rawAttributes','query','filters'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x30bc,0x149));var _0xc30b=function(_0x1fbdd1,_0x17323f){_0x1fbdd1=_0x1fbdd1-0x0;var _0x3319a2=_0x30bc[_0x1fbdd1];return _0x3319a2;};'use strict';var emlformat=require(_0xc30b('0x0'));var rimraf=require(_0xc30b('0x1'));var zipdir=require(_0xc30b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc30b('0x3'));var moment=require(_0xc30b('0x4'));var BPromise=require(_0xc30b('0x5'));var Mustache=require(_0xc30b('0x6'));var util=require(_0xc30b('0x7'));var path=require(_0xc30b('0x8'));var sox=require(_0xc30b('0x9'));var csv=require(_0xc30b('0xa'));var ejs=require(_0xc30b('0xb'));var fs=require('fs');var fs_extra=require(_0xc30b('0xc'));var _=require('lodash');var squel=require(_0xc30b('0xd'));var crypto=require(_0xc30b('0xe'));var jsforce=require(_0xc30b('0xf'));var deskjs=require(_0xc30b('0x10'));var toCsv=require('to-csv');var querystring=require(_0xc30b('0x11'));var Papa=require('papaparse');var Redis=require(_0xc30b('0x12'));var authService=require(_0xc30b('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc30b('0x14'));var logger=require(_0xc30b('0x15'))(_0xc30b('0x16'));var utils=require(_0xc30b('0x17'));var config=require(_0xc30b('0x18'));var licenseUtil=require(_0xc30b('0x19'));var db=require('../../mysqldb')['db'];config[_0xc30b('0x1a')]=_[_0xc30b('0x1b')](config['redis'],{'host':_0xc30b('0x1c'),'port':0x18eb});var socket=require(_0xc30b('0x1d'))(new Redis(config['redis']));require(_0xc30b('0x1e'))['register'](socket);function respondWithStatusCode(_0x58fb81,_0x4d7725){_0x4d7725=_0x4d7725||0xcc;return function(_0xe74dd5){if(_0xe74dd5){return _0x58fb81['sendStatus'](_0x4d7725);}return _0x58fb81[_0xc30b('0x1f')](_0x4d7725)[_0xc30b('0x20')]();};}function respondWithResult(_0x19571d,_0x2bfbcf){_0x2bfbcf=_0x2bfbcf||0xc8;return function(_0x4e5193){if(_0x4e5193){return _0x19571d[_0xc30b('0x1f')](_0x2bfbcf)[_0xc30b('0x21')](_0x4e5193);}};}function respondWithFilteredResult(_0x1cd5de,_0x4a46b){return function(_0x1ce7eb){if(_0x1ce7eb){var _0x23b45f=typeof _0x4a46b['offset']===_0xc30b('0x22')&&typeof _0x4a46b[_0xc30b('0x23')]===_0xc30b('0x22');var _0x6b485=_0x1ce7eb[_0xc30b('0x24')];var _0x3db4eb=_0x23b45f?0x0:_0x4a46b[_0xc30b('0x25')];var _0x5994be=_0x23b45f?_0x1ce7eb[_0xc30b('0x24')]:_0x4a46b['offset']+_0x4a46b[_0xc30b('0x23')];var _0x1cc79a;if(_0x5994be>=_0x6b485){_0x5994be=_0x6b485;_0x1cc79a=0xc8;}else{_0x1cc79a=0xce;}_0x1cd5de[_0xc30b('0x1f')](_0x1cc79a);return _0x1cd5de[_0xc30b('0x26')]('Content-Range',_0x3db4eb+'-'+_0x5994be+'/'+_0x6b485)[_0xc30b('0x21')](_0x1ce7eb);}return null;};}function patchUpdates(_0x34bc55){return function(_0x565f36){try{jsonpatch['apply'](_0x565f36,_0x34bc55,!![]);}catch(_0x451aaa){return BPromise['reject'](_0x451aaa);}return _0x565f36['save']();};}function saveUpdates(_0x1f415a,_0x1fd902){return function(_0x14b6ed){if(_0x14b6ed){return _0x14b6ed['update'](_0x1f415a)[_0xc30b('0x27')](function(_0x2e987e){return _0x2e987e;});}return null;};}function removeEntity(_0x1949ed,_0x575318){return function(_0x3fabd8){if(_0x3fabd8){return _0x3fabd8[_0xc30b('0x28')]()[_0xc30b('0x27')](function(){_0x1949ed[_0xc30b('0x1f')](0xcc)[_0xc30b('0x20')]();});}};}function handleEntityNotFound(_0x241f30,_0x56c8fe){return function(_0x46a2a5){if(!_0x46a2a5){_0x241f30[_0xc30b('0x29')](0x194);}return _0x46a2a5;};}function handleError(_0x482b03,_0x4793cf){_0x4793cf=_0x4793cf||0x1f4;return function(_0x37c5ae){logger['error'](_0x37c5ae['stack']);if(_0x37c5ae[_0xc30b('0x2a')]){delete _0x37c5ae['name'];}_0x482b03[_0xc30b('0x1f')](_0x4793cf)[_0xc30b('0x2b')](_0x37c5ae);};}exports[_0xc30b('0x2c')]=function(_0x1a8c58,_0x5f2c40){var _0x12679a={'raw':![],'where':{'id':_0x1a8c58[_0xc30b('0x2d')]['id']}},_0x109693={};_0x109693[_0xc30b('0x2e')]=_[_0xc30b('0x2f')](db['DashboardItem'][_0xc30b('0x30')]);_0x109693[_0xc30b('0x31')]=_[_0xc30b('0x2f')](_0x1a8c58[_0xc30b('0x31')]);_0x109693[_0xc30b('0x32')]=_['intersection'](_0x109693[_0xc30b('0x2e')],_0x109693[_0xc30b('0x31')]);_0x12679a[_0xc30b('0x33')]=_[_0xc30b('0x34')](_0x109693['model'],qs[_0xc30b('0x35')](_0x1a8c58[_0xc30b('0x31')][_0xc30b('0x35')]));_0x12679a['attributes']=_0x12679a[_0xc30b('0x33')][_0xc30b('0x36')]?_0x12679a['attributes']:_0x109693[_0xc30b('0x2e')];if(_0x1a8c58['query'][_0xc30b('0x37')]){_0x12679a['include']=[{'all':!![]}];}_0x12679a=_['merge']({},_0x12679a,_0x1a8c58['options']);return db[_0xc30b('0x38')][_0xc30b('0x39')](_0x12679a)['then'](handleEntityNotFound(_0x5f2c40,null))[_0xc30b('0x27')](respondWithResult(_0x5f2c40,null))[_0xc30b('0x3a')](handleError(_0x5f2c40,null));};exports[_0xc30b('0x28')]=function(_0x14afd0,_0xb2380){return db['DashboardItem'][_0xc30b('0x39')]({'where':{'id':_0x14afd0[_0xc30b('0x2d')]['id']}})[_0xc30b('0x27')](handleEntityNotFound(_0xb2380,null))[_0xc30b('0x27')](removeEntity(_0xb2380,null))[_0xc30b('0x3a')](handleError(_0xb2380,null));};function widgetAttributes(_0x4c780a){try{switch(_0x4c780a[_0xc30b('0x3b')]){case _0xc30b('0x3c'):return[{'name':_0xc30b('0x3d'),'value':_0x4c780a[_0xc30b('0x3d')]||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a[_0xc30b('0x3e')][0x0]?_0x4c780a[_0xc30b('0x3e')][0x0]['value']:undefined)||'https://'}];case'custom':return[{'name':_0xc30b('0x3f'),'value':_0x4c780a[_0xc30b('0x3f')]||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a[_0xc30b('0x3e')][0x0]?_0x4c780a[_0xc30b('0x3e')][0x0][_0xc30b('0x40')]:undefined)||''}];case'clock':return[{'name':_0xc30b('0x41'),'value':_0x4c780a['attrHourFormat']||(_0x4c780a['attrs']&&_0x4c780a[_0xc30b('0x3e')][0x0]?_0x4c780a['attrs'][0x0][_0xc30b('0x40')]:undefined)||_0xc30b('0x42')},{'name':_0xc30b('0x43'),'value':_0x4c780a['attrTimezone']||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a['attrs'][0x1]?_0x4c780a['attrs'][0x1][_0xc30b('0x40')]:undefined)||_0xc30b('0x44')},{'name':_0xc30b('0x45'),'value':_0x4c780a[_0xc30b('0x45')]||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a[_0xc30b('0x3e')][0x2]?_0x4c780a['attrs'][0x2][_0xc30b('0x40')]:undefined)||0xc}];case _0xc30b('0x46'):return[{'name':_0xc30b('0x47'),'value':_0x4c780a[_0xc30b('0x47')]||(_0x4c780a['attrs']&&_0x4c780a[_0xc30b('0x3e')][0x0]?_0x4c780a[_0xc30b('0x3e')][0x0][_0xc30b('0x40')]:undefined)||_0xc30b('0x48')},{'name':_0xc30b('0x49'),'value':_0x4c780a['attrVoiceQueues']||(_0x4c780a['attrs']&&_0x4c780a[_0xc30b('0x3e')][0x1]?_0x4c780a[_0xc30b('0x3e')][0x1]['value']:undefined)||[]},{'name':_0xc30b('0x45'),'value':_0x4c780a[_0xc30b('0x45')]||(_0x4c780a['attrs']&&_0x4c780a[_0xc30b('0x3e')][0x2]?_0x4c780a[_0xc30b('0x3e')][0x2]['value']:undefined)||0x14},{'name':_0xc30b('0x4a'),'value':_0x4c780a[_0xc30b('0x4a')]||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a[_0xc30b('0x3e')][0x3]?_0x4c780a['attrs'][0x3][_0xc30b('0x40')]:undefined)||'voice'},{'name':_0xc30b('0x4b'),'value':_0x4c780a['attrEmailAccounts']||(_0x4c780a['attrs']&&_0x4c780a[_0xc30b('0x3e')][0x4]?_0x4c780a[_0xc30b('0x3e')][0x4]['value']:undefined)||''},{'name':_0xc30b('0x4c'),'value':_0x4c780a[_0xc30b('0x4c')]||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a['attrs'][0x5]?_0x4c780a['attrs'][0x5][_0xc30b('0x40')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x4c780a[_0xc30b('0x4d')]||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a[_0xc30b('0x3e')][0x6]?_0x4c780a[_0xc30b('0x3e')][0x6][_0xc30b('0x40')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x4c780a[_0xc30b('0x4e')]||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a[_0xc30b('0x3e')][0x7]?_0x4c780a['attrs'][0x7][_0xc30b('0x40')]:undefined)||''},{'name':_0xc30b('0x4f'),'value':_0x4c780a[_0xc30b('0x4f')]||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a[_0xc30b('0x3e')][0x8]?_0x4c780a[_0xc30b('0x3e')][0x8][_0xc30b('0x40')]:undefined)||''},{'name':'attrChatWebsites','value':_0x4c780a[_0xc30b('0x50')]||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a['attrs'][0x9]?_0x4c780a[_0xc30b('0x3e')][0x9][_0xc30b('0x40')]:undefined)||''}];case _0xc30b('0x51'):case'pie-chart':return[{'name':_0xc30b('0x52'),'value':_0x4c780a[_0xc30b('0x52')]||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a['attrs'][0x0]?_0x4c780a[_0xc30b('0x3e')][0x0][_0xc30b('0x40')]:undefined)||'total'},{'name':'attrSerie2','value':_0x4c780a[_0xc30b('0x53')]||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a[_0xc30b('0x3e')][0x1]?_0x4c780a[_0xc30b('0x3e')][0x1]['value']:undefined)||null},{'name':_0xc30b('0x54'),'value':_0x4c780a['attrSerie3']||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a['attrs'][0x2]?_0x4c780a[_0xc30b('0x3e')][0x2][_0xc30b('0x40')]:undefined)||null},{'name':_0xc30b('0x49'),'value':_0x4c780a[_0xc30b('0x49')]||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a['attrs'][0x3]?_0x4c780a[_0xc30b('0x3e')][0x3][_0xc30b('0x40')]:undefined)||[]},{'name':_0xc30b('0x4a'),'value':_0x4c780a['attrChannel']||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a['attrs'][0x4]?_0x4c780a[_0xc30b('0x3e')][0x4][_0xc30b('0x40')]:undefined)||'voice'},{'name':'attrEmailAccounts','value':_0x4c780a['attrEmailAccounts']||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a['attrs'][0x5]?_0x4c780a[_0xc30b('0x3e')][0x5][_0xc30b('0x40')]:undefined)||''},{'name':_0xc30b('0x4c'),'value':_0x4c780a['attrFaxAccounts']||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a[_0xc30b('0x3e')][0x6]?_0x4c780a[_0xc30b('0x3e')][0x6][_0xc30b('0x40')]:undefined)||''},{'name':_0xc30b('0x4d'),'value':_0x4c780a[_0xc30b('0x4d')]||(_0x4c780a['attrs']&&_0x4c780a['attrs'][0x7]?_0x4c780a['attrs'][0x7][_0xc30b('0x40')]:undefined)||''},{'name':_0xc30b('0x4e'),'value':_0x4c780a['attrOpenchannelAccounts']||(_0x4c780a['attrs']&&_0x4c780a[_0xc30b('0x3e')][0x8]?_0x4c780a[_0xc30b('0x3e')][0x8][_0xc30b('0x40')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x4c780a[_0xc30b('0x4f')]||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a[_0xc30b('0x3e')][0x9]?_0x4c780a['attrs'][0x9][_0xc30b('0x40')]:undefined)||''},{'name':_0xc30b('0x50'),'value':_0x4c780a[_0xc30b('0x50')]||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a['attrs'][0xa]?_0x4c780a[_0xc30b('0x3e')][0xa][_0xc30b('0x40')]:undefined)||''}];case _0xc30b('0x55'):return[{'name':_0xc30b('0x56'),'type':_0x4c780a[_0xc30b('0x57')]||(_0x4c780a['attrs']&&_0x4c780a[_0xc30b('0x3e')][0x0]?_0x4c780a['attrs'][0x0]['type']:undefined)||null,'value':_0x4c780a['attrReport']||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a[_0xc30b('0x3e')][0x0]?_0x4c780a[_0xc30b('0x3e')][0x0][_0xc30b('0x40')]:undefined)||null},{'name':_0xc30b('0x58'),'value':_0x4c780a[_0xc30b('0x58')]||(_0x4c780a[_0xc30b('0x3e')]&&_0x4c780a[_0xc30b('0x3e')][0x1]?_0x4c780a[_0xc30b('0x3e')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0xcb3c4b){logger[_0xc30b('0x59')](_0xc30b('0x5a'),JSON[_0xc30b('0x5b')](_0xcb3c4b));return[];}}exports['create']=function(_0x47697c,_0x54419c){if(_0x47697c[_0xc30b('0x5c')]){_0x47697c[_0xc30b('0x5c')][_0xc30b('0x3e')]=widgetAttributes(_0x47697c['body']);}return db[_0xc30b('0x38')][_0xc30b('0x5d')](_0x47697c[_0xc30b('0x5c')],{})[_0xc30b('0x27')](respondWithResult(_0x54419c,0xc9))[_0xc30b('0x3a')](handleError(_0x54419c,null));};exports[_0xc30b('0x5e')]=function(_0x4f7429,_0x4adc2e){if(_0x4f7429[_0xc30b('0x5c')]['id']){delete _0x4f7429['body']['id'];}_0x4f7429[_0xc30b('0x5c')][_0xc30b('0x3e')]=widgetAttributes(_0x4f7429[_0xc30b('0x5c')]);return db[_0xc30b('0x38')][_0xc30b('0x39')]({'where':{'id':_0x4f7429[_0xc30b('0x2d')]['id']}})[_0xc30b('0x27')](handleEntityNotFound(_0x4adc2e,null))['then'](saveUpdates(_0x4f7429[_0xc30b('0x5c')],null))[_0xc30b('0x27')](respondWithResult(_0x4adc2e,null))[_0xc30b('0x3a')](handleError(_0x4adc2e,null));};
\ No newline at end of file
index a6d009b..ef9acc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e6e=['save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','DashboardItem','setMaxListeners'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x5e6e,0x74));var _0xe5e6=function(_0x457e57,_0x2ab6e0){_0x457e57=_0x457e57-0x0;var _0x5e5a19=_0x5e6e[_0x457e57];return _0x5e5a19;};'use strict';var EventEmitter=require(_0xe5e6('0x0'));var DashboardItem=require(_0xe5e6('0x1'))['db'][_0xe5e6('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xe5e6('0x3')](0x0);var events={'afterCreate':_0xe5e6('0x4'),'afterUpdate':_0xe5e6('0x5'),'afterDestroy':_0xe5e6('0x6')};function emitEvent(_0x2df215){return function(_0x5a09a3,_0x301b71,_0x1a8b1c){DashboardItemEvents[_0xe5e6('0x7')](_0x2df215+':'+_0x5a09a3['id'],_0x5a09a3);DashboardItemEvents[_0xe5e6('0x7')](_0x2df215,_0x5a09a3);_0x1a8b1c(null);};}for(var e in events){if(events[_0xe5e6('0x8')](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module[_0xe5e6('0x9')]=DashboardItemEvents;
\ No newline at end of file
+var _0x5822=['update','remove','emit','hasOwnProperty','../../mysqldb','DashboardItem','setMaxListeners','save'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0x5822,0x1e4));var _0x2582=function(_0x413b4d,_0xa3459c){_0x413b4d=_0x413b4d-0x0;var _0x8b810a=_0x5822[_0x413b4d];return _0x8b810a;};'use strict';var EventEmitter=require('events');var DashboardItem=require(_0x2582('0x0'))['db'][_0x2582('0x1')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x2582('0x2')](0x0);var events={'afterCreate':_0x2582('0x3'),'afterUpdate':_0x2582('0x4'),'afterDestroy':_0x2582('0x5')};function emitEvent(_0x1397bd){return function(_0x2e5b33,_0x14939d,_0x2a2c19){DashboardItemEvents['emit'](_0x1397bd+':'+_0x2e5b33['id'],_0x2e5b33);DashboardItemEvents[_0x2582('0x6')](_0x1397bd,_0x2e5b33);_0x2a2c19(null);};}for(var e in events){if(events[_0x2582('0x7')](e)){var event=events[e];DashboardItem['hook'](e,emitEvent(event));}}module['exports']=DashboardItemEvents;
\ No newline at end of file
index 23ea421..4ddfeea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3045=['bluebird','request-promise','path','DashboardItem','lodash','util','../../config/logger','moment'];(function(_0x58ba3f,_0x32f6d3){var _0xb2c31e=function(_0x9ac79a){while(--_0x9ac79a){_0x58ba3f['push'](_0x58ba3f['shift']());}};_0xb2c31e(++_0x32f6d3);}(_0x3045,0x134));var _0x5304=function(_0x5d2a66,_0x35797f){_0x5d2a66=_0x5d2a66-0x0;var _0x3da62d=_0x3045[_0x5d2a66];return _0x3da62d;};'use strict';var _=require(_0x5304('0x0'));var util=require(_0x5304('0x1'));var logger=require(_0x5304('0x2'))('api');var moment=require(_0x5304('0x3'));var BPromise=require(_0x5304('0x4'));var rp=require(_0x5304('0x5'));var fs=require('fs');var path=require(_0x5304('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./dashboardItem.attributes');module['exports']=function(_0x373e94,_0x38684a){return _0x373e94['define'](_0x5304('0x7'),attributes,{'tableName':'dashboard_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5ecc=['path','rimraf','../../config/environment','DashboardItem','dashboard_items','lodash','util','../../config/logger','api','moment'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0x5ecc,0x177));var _0xc5ec=function(_0x3d6d51,_0x12ebd9){_0x3d6d51=_0x3d6d51-0x0;var _0x275338=_0x5ecc[_0x3d6d51];return _0x275338;};'use strict';var _=require(_0xc5ec('0x0'));var util=require(_0xc5ec('0x1'));var logger=require(_0xc5ec('0x2'))(_0xc5ec('0x3'));var moment=require(_0xc5ec('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xc5ec('0x5'));var rimraf=require(_0xc5ec('0x6'));var config=require(_0xc5ec('0x7'));var attributes=require('./dashboardItem.attributes');module['exports']=function(_0x69f9f1,_0x542393){return _0x69f9f1['define'](_0xc5ec('0x8'),attributes,{'tableName':_0xc5ec('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a094398..5c36169 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23cc=['randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','register','request','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','bluebird'];(function(_0x22aa7e,_0x2a985c){var _0x2caee2=function(_0x5e90fe){while(--_0x5e90fe){_0x22aa7e['push'](_0x22aa7e['shift']());}};_0x2caee2(++_0x2a985c);}(_0x23cc,0x9a));var _0xc23c=function(_0x4b97fc,_0x3e0f5e){_0x4b97fc=_0x4b97fc-0x0;var _0x2a9252=_0x23cc[_0x4b97fc];return _0x2a9252;};'use strict';var _=require(_0xc23c('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc23c('0x1'));var rs=require(_0xc23c('0x2'));var fs=require('fs');var Redis=require(_0xc23c('0x3'));var db=require(_0xc23c('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc23c('0x5'));var config=require(_0xc23c('0x6'));var jayson=require(_0xc23c('0x7'));var client=jayson[_0xc23c('0x8')][_0xc23c('0x9')]({'port':0x232a});config[_0xc23c('0xa')]=_[_0xc23c('0xb')](config['redis'],{'host':_0xc23c('0xc'),'port':0x18eb});var socket=require(_0xc23c('0xd'))(new Redis(config['redis']));require(_0xc23c('0xe'))[_0xc23c('0xf')](socket);function respondWithRpcPromise(_0x5f03a0,_0x5a69c2,_0x2ad212){return new BPromise(function(_0x4a8902,_0x52d8f2){return client[_0xc23c('0x10')](_0x5f03a0,_0x2ad212)[_0xc23c('0x11')](function(_0x359c2e){logger[_0xc23c('0x12')](_0xc23c('0x13'),_0x5a69c2,_0xc23c('0x14'));logger['debug']('DashboardItem,\x20%s,\x20%s,\x20%s',_0x5a69c2,_0xc23c('0x14'),JSON[_0xc23c('0x15')](_0x359c2e));if(_0x359c2e['error']){if(_0x359c2e[_0xc23c('0x16')]['code']===0x1f4){logger[_0xc23c('0x16')](_0xc23c('0x13'),_0x5a69c2,_0x359c2e['error'][_0xc23c('0x17')]);return _0x52d8f2(_0x359c2e[_0xc23c('0x16')][_0xc23c('0x17')]);}logger[_0xc23c('0x16')](_0xc23c('0x13'),_0x5a69c2,_0x359c2e['error'][_0xc23c('0x17')]);return _0x4a8902(_0x359c2e['error'][_0xc23c('0x17')]);}else{logger[_0xc23c('0x12')](_0xc23c('0x13'),_0x5a69c2,_0xc23c('0x14'));_0x4a8902(_0x359c2e[_0xc23c('0x18')][_0xc23c('0x17')]);}})[_0xc23c('0x19')](function(_0x2cb0d5){logger['error'](_0xc23c('0x13'),_0x5a69c2,_0x2cb0d5);_0x52d8f2(_0x2cb0d5);});});}
\ No newline at end of file
+var _0x35fb=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','debug','DashboardItem,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','util','moment'];(function(_0x3abb66,_0x49170d){var _0x2b27cf=function(_0x12ce25){while(--_0x12ce25){_0x3abb66['push'](_0x3abb66['shift']());}};_0x2b27cf(++_0x49170d);}(_0x35fb,0x132));var _0xb35f=function(_0x1f5a63,_0x511504){_0x1f5a63=_0x1f5a63-0x0;var _0x30bb7a=_0x35fb[_0x1f5a63];return _0x30bb7a;};'use strict';var _=require('lodash');var util=require(_0xb35f('0x0'));var moment=require(_0xb35f('0x1'));var BPromise=require(_0xb35f('0x2'));var rs=require(_0xb35f('0x3'));var fs=require('fs');var Redis=require(_0xb35f('0x4'));var db=require(_0xb35f('0x5'))['db'];var utils=require(_0xb35f('0x6'));var logger=require('../../config/logger')(_0xb35f('0x7'));var config=require(_0xb35f('0x8'));var jayson=require(_0xb35f('0x9'));var client=jayson[_0xb35f('0xa')][_0xb35f('0xb')]({'port':0x232a});config[_0xb35f('0xc')]=_[_0xb35f('0xd')](config[_0xb35f('0xc')],{'host':_0xb35f('0xe'),'port':0x18eb});var socket=require(_0xb35f('0xf'))(new Redis(config['redis']));require('./dashboardItem.socket')[_0xb35f('0x10')](socket);function respondWithRpcPromise(_0x3685ba,_0x2c9bd8,_0x1583ab){return new BPromise(function(_0x5d7e6b,_0x1597cc){return client[_0xb35f('0x11')](_0x3685ba,_0x1583ab)[_0xb35f('0x12')](function(_0x507108){logger[_0xb35f('0x13')]('DashboardItem,\x20%s,\x20%s',_0x2c9bd8,'request\x20sent');logger[_0xb35f('0x14')](_0xb35f('0x15'),_0x2c9bd8,_0xb35f('0x16'),JSON['stringify'](_0x507108));if(_0x507108[_0xb35f('0x17')]){if(_0x507108[_0xb35f('0x17')][_0xb35f('0x18')]===0x1f4){logger['error']('DashboardItem,\x20%s,\x20%s',_0x2c9bd8,_0x507108[_0xb35f('0x17')][_0xb35f('0x19')]);return _0x1597cc(_0x507108[_0xb35f('0x17')]['message']);}logger[_0xb35f('0x17')]('DashboardItem,\x20%s,\x20%s',_0x2c9bd8,_0x507108[_0xb35f('0x17')]['message']);return _0x5d7e6b(_0x507108[_0xb35f('0x17')]['message']);}else{logger[_0xb35f('0x13')]('DashboardItem,\x20%s,\x20%s',_0x2c9bd8,_0xb35f('0x16'));_0x5d7e6b(_0x507108[_0xb35f('0x1a')][_0xb35f('0x19')]);}})[_0xb35f('0x1b')](function(_0x39631c){logger[_0xb35f('0x17')]('DashboardItem,\x20%s,\x20%s',_0x2c9bd8,_0x39631c);_0x1597cc(_0x39631c);});});}
\ No newline at end of file
index ad86984..e57a4b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2840=['dashboardItem:','./dashboardItem.events','save','remove','update','emit','removeListener','register','length'];(function(_0x375fab,_0x49af77){var _0x1e8e34=function(_0x38d861){while(--_0x38d861){_0x375fab['push'](_0x375fab['shift']());}};_0x1e8e34(++_0x49af77);}(_0x2840,0x133));var _0x0284=function(_0x15ed84,_0x589521){_0x15ed84=_0x15ed84-0x0;var _0x426d2b=_0x2840[_0x15ed84];return _0x426d2b;};'use strict';var DashboardItemEvents=require(_0x0284('0x0'));var events=[_0x0284('0x1'),_0x0284('0x2'),_0x0284('0x3')];function createListener(_0x41d9db,_0x22367c){return function(_0x1545ae){_0x22367c[_0x0284('0x4')](_0x41d9db,_0x1545ae);};}function removeListener(_0x50f63d,_0x4fe836){return function(){DashboardItemEvents[_0x0284('0x5')](_0x50f63d,_0x4fe836);};}exports[_0x0284('0x6')]=function(_0x4fdcd3){for(var _0x25e5ef=0x0,_0x5f5bb7=events[_0x0284('0x7')];_0x25e5ef<_0x5f5bb7;_0x25e5ef++){var _0x1a5de2=events[_0x25e5ef];var _0x4f6979=createListener(_0x0284('0x8')+_0x1a5de2,_0x4fdcd3);DashboardItemEvents['on'](_0x1a5de2,_0x4f6979);}};
\ No newline at end of file
+var _0xa06c=['dashboardItem:','./dashboardItem.events','save','remove','update','emit','removeListener','register','length'];(function(_0x5cab5b,_0x490d6e){var _0x61f3ea=function(_0x1e4b77){while(--_0x1e4b77){_0x5cab5b['push'](_0x5cab5b['shift']());}};_0x61f3ea(++_0x490d6e);}(_0xa06c,0x76));var _0xca06=function(_0x21143d,_0x36f8f5){_0x21143d=_0x21143d-0x0;var _0x2ba7ff=_0xa06c[_0x21143d];return _0x2ba7ff;};'use strict';var DashboardItemEvents=require(_0xca06('0x0'));var events=[_0xca06('0x1'),_0xca06('0x2'),_0xca06('0x3')];function createListener(_0x1b88d3,_0x471d4d){return function(_0x4db054){_0x471d4d[_0xca06('0x4')](_0x1b88d3,_0x4db054);};}function removeListener(_0x44d697,_0x43bf47){return function(){DashboardItemEvents[_0xca06('0x5')](_0x44d697,_0x43bf47);};}exports[_0xca06('0x6')]=function(_0x6b69cb){for(var _0x293609=0x0,_0x5b0482=events[_0xca06('0x7')];_0x293609<_0x5b0482;_0x293609++){var _0x2629dd=events[_0x293609];var _0x225d66=createListener(_0xca06('0x8')+_0x2629dd,_0x6b69cb);DashboardItemEvents['on'](_0x2629dd,_0x225d66);}};
\ No newline at end of file
index ec05fa6..16dc0ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x902c=['exports','multer','path','Router','fs-extra','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','show','post','put','delete','destroy'];(function(_0x475067,_0x1217db){var _0x182f2a=function(_0x1845c1){while(--_0x1845c1){_0x475067['push'](_0x475067['shift']());}};_0x182f2a(++_0x1217db);}(_0x902c,0xf1));var _0xc902=function(_0x5b5dbf,_0x87aba4){_0x5b5dbf=_0x5b5dbf-0x0;var _0xdcf771=_0x902c[_0x5b5dbf];return _0xdcf771;};'use strict';var multer=require(_0xc902('0x0'));var util=require('util');var path=require(_0xc902('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc902('0x2')]();var fs_extra=require(_0xc902('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xc902('0x4'));var config=require(_0xc902('0x5'));var controller=require(_0xc902('0x6'));router[_0xc902('0x7')](_0xc902('0x8'),auth[_0xc902('0x9')](),controller[_0xc902('0xa')]);router[_0xc902('0xb')]('/',auth[_0xc902('0x9')](),controller['create']);router[_0xc902('0xc')](_0xc902('0x8'),auth[_0xc902('0x9')](),controller['update']);router[_0xc902('0xd')](_0xc902('0x8'),auth[_0xc902('0x9')](),controller[_0xc902('0xe')]);module[_0xc902('0xf')]=router;
\ No newline at end of file
+var _0x9392=['path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','show','post','create','update','delete','destroy','exports','util'];(function(_0x48a06f,_0x152e72){var _0x3e75e4=function(_0x8f522f){while(--_0x8f522f){_0x48a06f['push'](_0x48a06f['shift']());}};_0x3e75e4(++_0x152e72);}(_0x9392,0x7d));var _0x2939=function(_0x5a4ef0,_0xe3b81){_0x5a4ef0=_0x5a4ef0-0x0;var _0xbfafd1=_0x9392[_0x5a4ef0];return _0xbfafd1;};'use strict';var multer=require('multer');var util=require(_0x2939('0x0'));var path=require(_0x2939('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x2939('0x2')]();var fs_extra=require(_0x2939('0x3'));var auth=require(_0x2939('0x4'));var interaction=require(_0x2939('0x5'));var config=require(_0x2939('0x6'));var controller=require(_0x2939('0x7'));router[_0x2939('0x8')](_0x2939('0x9'),auth[_0x2939('0xa')](),controller[_0x2939('0xb')]);router[_0x2939('0xc')]('/',auth['isAuthenticated'](),controller[_0x2939('0xd')]);router['put'](_0x2939('0x9'),auth[_0x2939('0xa')](),controller[_0x2939('0xe')]);router[_0x2939('0xf')](_0x2939('0x9'),auth[_0x2939('0xa')](),controller[_0x2939('0x10')]);module[_0x2939('0x11')]=router;
\ No newline at end of file
index 1321c74..8d264e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc54e=['exports','STRING','second','third'];(function(_0x5af0b8,_0xaeaecf){var _0x358c88=function(_0x4aa008){while(--_0x4aa008){_0x5af0b8['push'](_0x5af0b8['shift']());}};_0x358c88(++_0xaeaecf);}(_0xc54e,0xcc));var _0xec54=function(_0x2892da,_0x191a40){_0x2892da=_0x2892da-0x0;var _0x28cff2=_0xc54e[_0x2892da];return _0x28cff2;};'use strict';var Sequelize=require('sequelize');module[_0xec54('0x0')]={'name':{'type':Sequelize[_0xec54('0x1')],'allowNull':![]},'level':{'type':Sequelize['ENUM']('first',_0xec54('0x2'),_0xec54('0x3')),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize[_0xec54('0x1')]}};
\ No newline at end of file
+var _0x23ef=['STRING','ENUM','first','third','sequelize','exports'];(function(_0x1ae5ab,_0xc5d441){var _0x1ce001=function(_0x5ef96d){while(--_0x5ef96d){_0x1ae5ab['push'](_0x1ae5ab['shift']());}};_0x1ce001(++_0xc5d441);}(_0x23ef,0x1d8));var _0xf23e=function(_0x2c92fe,_0x97deef){_0x2c92fe=_0x2c92fe-0x0;var _0x9a7e3a=_0x23ef[_0x2c92fe];return _0x9a7e3a;};'use strict';var Sequelize=require(_0xf23e('0x0'));module[_0xf23e('0x1')]={'name':{'type':Sequelize[_0xf23e('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0xf23e('0x3')](_0xf23e('0x4'),'second',_0xf23e('0x5')),'allowNull':![],'defaultValue':_0xf23e('0x4')},'description':{'type':Sequelize[_0xf23e('0x2')]}};
\ No newline at end of file
index c84fd6b..62bd36c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb501=['get','Dispositions','UserProfileResource','error','name','send','index','Disposition','fieldName','type','key','model','map','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','count','includeAll','include','rows','catch','show','params','keys','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','set','apply','reject','save','update','then'];(function(_0x5c0979,_0x287854){var _0x309972=function(_0x17defd){while(--_0x17defd){_0x5c0979['push'](_0x5c0979['shift']());}};_0x309972(++_0x287854);}(_0xb501,0x1ce));var _0x1b50=function(_0x49127c,_0xbc47af){_0x49127c=_0x49127c-0x0;var _0x3ab7d2=_0xb501[_0x49127c];return _0x3ab7d2;};'use strict';var emlformat=require(_0x1b50('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1b50('0x1'));var jsonpatch=require(_0x1b50('0x2'));var rp=require('request-promise');var moment=require(_0x1b50('0x3'));var BPromise=require(_0x1b50('0x4'));var Mustache=require(_0x1b50('0x5'));var util=require('util');var path=require('path');var sox=require(_0x1b50('0x6'));var csv=require(_0x1b50('0x7'));var ejs=require(_0x1b50('0x8'));var fs=require('fs');var fs_extra=require(_0x1b50('0x9'));var _=require('lodash');var squel=require(_0x1b50('0xa'));var crypto=require(_0x1b50('0xb'));var jsforce=require(_0x1b50('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x1b50('0x7'));var querystring=require(_0x1b50('0xd'));var Papa=require(_0x1b50('0xe'));var Redis=require(_0x1b50('0xf'));var authService=require(_0x1b50('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x1b50('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1b50('0x12'))(_0x1b50('0x13'));var utils=require(_0x1b50('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x1b50('0x15'));var db=require(_0x1b50('0x16'))['db'];function respondWithStatusCode(_0x5890c4,_0x2c4816){_0x2c4816=_0x2c4816||0xcc;return function(_0x472be5){if(_0x472be5){return _0x5890c4[_0x1b50('0x17')](_0x2c4816);}return _0x5890c4['status'](_0x2c4816)[_0x1b50('0x18')]();};}function respondWithResult(_0x5c0fbf,_0x1b4ad9){_0x1b4ad9=_0x1b4ad9||0xc8;return function(_0x342738){if(_0x342738){return _0x5c0fbf[_0x1b50('0x19')](_0x1b4ad9)[_0x1b50('0x1a')](_0x342738);}};}function respondWithFilteredResult(_0x4403f1,_0x248854){return function(_0x4e4b2f){if(_0x4e4b2f){var _0x1ee1e4=typeof _0x248854[_0x1b50('0x1b')]==='undefined'&&typeof _0x248854[_0x1b50('0x1c')]===_0x1b50('0x1d');var _0x344b0d=_0x4e4b2f['count'];var _0x17c3e2=_0x1ee1e4?0x0:_0x248854[_0x1b50('0x1b')];var _0xb4c09=_0x1ee1e4?_0x4e4b2f['count']:_0x248854[_0x1b50('0x1b')]+_0x248854[_0x1b50('0x1c')];var _0x549130;if(_0xb4c09>=_0x344b0d){_0xb4c09=_0x344b0d;_0x549130=0xc8;}else{_0x549130=0xce;}_0x4403f1['status'](_0x549130);return _0x4403f1[_0x1b50('0x1e')]('Content-Range',_0x17c3e2+'-'+_0xb4c09+'/'+_0x344b0d)['json'](_0x4e4b2f);}return null;};}function patchUpdates(_0x479864){return function(_0x2c413e){try{jsonpatch[_0x1b50('0x1f')](_0x2c413e,_0x479864,!![]);}catch(_0x664701){return BPromise[_0x1b50('0x20')](_0x664701);}return _0x2c413e[_0x1b50('0x21')]();};}function saveUpdates(_0x52afb6,_0xa30306){return function(_0x2901e8){if(_0x2901e8){return _0x2901e8[_0x1b50('0x22')](_0x52afb6)[_0x1b50('0x23')](function(_0x4f0e55){return _0x4f0e55;});}return null;};}function removeEntity(_0x2c3e65,_0x4fb649){return function(_0x155cb1){if(_0x155cb1){return _0x155cb1['destroy']()[_0x1b50('0x23')](function(){var _0x3d28dd=_0x155cb1[_0x1b50('0x24')]({'plain':!![]});var _0x56c0af=_0x1b50('0x25');return db[_0x1b50('0x26')]['destroy']({'where':{'type':_0x56c0af,'resourceId':_0x3d28dd['id']}})[_0x1b50('0x23')](function(){return _0x155cb1;});})[_0x1b50('0x23')](function(){_0x2c3e65[_0x1b50('0x19')](0xcc)[_0x1b50('0x18')]();});}};}function handleEntityNotFound(_0x3bc4bc,_0x46b864){return function(_0x20500b){if(!_0x20500b){_0x3bc4bc['sendStatus'](0x194);}return _0x20500b;};}function handleError(_0x35a730,_0x1a7e40){_0x1a7e40=_0x1a7e40||0x1f4;return function(_0x4fd651){logger[_0x1b50('0x27')](_0x4fd651['stack']);if(_0x4fd651[_0x1b50('0x28')]){delete _0x4fd651[_0x1b50('0x28')];}_0x35a730[_0x1b50('0x19')](_0x1a7e40)[_0x1b50('0x29')](_0x4fd651);};}exports[_0x1b50('0x2a')]=function(_0x24b09e,_0x31281b){var _0xc7d157={},_0x558266={},_0x3bc10e={'count':0x0,'rows':[]};var _0x34b14a=_['map'](db[_0x1b50('0x2b')]['rawAttributes'],function(_0x5d590c){return{'name':_0x5d590c[_0x1b50('0x2c')],'type':_0x5d590c[_0x1b50('0x2d')][_0x1b50('0x2e')]};});_0x558266[_0x1b50('0x2f')]=_[_0x1b50('0x30')](_0x34b14a,_0x1b50('0x28'));_0x558266['query']=_['keys'](_0x24b09e[_0x1b50('0x31')]);_0x558266[_0x1b50('0x32')]=_['intersection'](_0x558266[_0x1b50('0x2f')],_0x558266[_0x1b50('0x31')]);_0xc7d157[_0x1b50('0x33')]=_[_0x1b50('0x34')](_0x558266[_0x1b50('0x2f')],qs[_0x1b50('0x35')](_0x24b09e[_0x1b50('0x31')]['fields']));_0xc7d157['attributes']=_0xc7d157[_0x1b50('0x33')][_0x1b50('0x36')]?_0xc7d157[_0x1b50('0x33')]:_0x558266[_0x1b50('0x2f')];if(!_0x24b09e[_0x1b50('0x31')][_0x1b50('0x37')](_0x1b50('0x38'))){_0xc7d157['limit']=qs[_0x1b50('0x1c')](_0x24b09e[_0x1b50('0x31')]['limit']);_0xc7d157['offset']=qs[_0x1b50('0x1b')](_0x24b09e[_0x1b50('0x31')][_0x1b50('0x1b')]);}_0xc7d157['order']=qs[_0x1b50('0x39')](_0x24b09e[_0x1b50('0x31')][_0x1b50('0x39')]);_0xc7d157[_0x1b50('0x3a')]=qs[_0x1b50('0x32')](_[_0x1b50('0x3b')](_0x24b09e[_0x1b50('0x31')],_0x558266[_0x1b50('0x32')]),_0x34b14a);if(_0x24b09e[_0x1b50('0x31')]['filter']){_0xc7d157[_0x1b50('0x3a')]=_[_0x1b50('0x3c')](_0xc7d157[_0x1b50('0x3a')],{'$or':_[_0x1b50('0x30')](_0x34b14a,function(_0x437bf0){if(_0x437bf0[_0x1b50('0x2d')]!==_0x1b50('0x3d')){var _0x2880aa={};_0x2880aa[_0x437bf0[_0x1b50('0x28')]]={'$like':'%'+_0x24b09e[_0x1b50('0x31')][_0x1b50('0x3e')]+'%'};return _0x2880aa;}})});}_0xc7d157=_[_0x1b50('0x3c')]({},_0xc7d157,_0x24b09e[_0x1b50('0x3f')]);var _0x30ac3d={'where':_0xc7d157[_0x1b50('0x3a')]};return db[_0x1b50('0x2b')][_0x1b50('0x40')](_0x30ac3d)['then'](function(_0x3ed8a9){_0x3bc10e[_0x1b50('0x40')]=_0x3ed8a9;if(_0x24b09e[_0x1b50('0x31')][_0x1b50('0x41')]){_0xc7d157[_0x1b50('0x42')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0xc7d157);})[_0x1b50('0x23')](function(_0x35ad99){_0x3bc10e[_0x1b50('0x43')]=_0x35ad99;return _0x3bc10e;})[_0x1b50('0x23')](respondWithFilteredResult(_0x31281b,_0xc7d157))[_0x1b50('0x44')](handleError(_0x31281b,null));};exports[_0x1b50('0x45')]=function(_0x453e04,_0x1cb0d0){var _0x215f09={'raw':!![],'where':{'id':_0x453e04[_0x1b50('0x46')]['id']}},_0x92e14f={};_0x92e14f['model']=_[_0x1b50('0x47')](db['Disposition'][_0x1b50('0x48')]);_0x92e14f[_0x1b50('0x31')]=_[_0x1b50('0x47')](_0x453e04[_0x1b50('0x31')]);_0x92e14f['filters']=_[_0x1b50('0x34')](_0x92e14f[_0x1b50('0x2f')],_0x92e14f[_0x1b50('0x31')]);_0x215f09[_0x1b50('0x33')]=_[_0x1b50('0x34')](_0x92e14f['model'],qs[_0x1b50('0x35')](_0x453e04['query']['fields']));_0x215f09[_0x1b50('0x33')]=_0x215f09[_0x1b50('0x33')][_0x1b50('0x36')]?_0x215f09['attributes']:_0x92e14f['model'];if(_0x453e04[_0x1b50('0x31')][_0x1b50('0x41')]){_0x215f09[_0x1b50('0x42')]=[{'all':!![]}];}_0x215f09=_[_0x1b50('0x3c')]({},_0x215f09,_0x453e04['options']);return db[_0x1b50('0x2b')][_0x1b50('0x49')](_0x215f09)[_0x1b50('0x23')](handleEntityNotFound(_0x1cb0d0,null))['then'](respondWithResult(_0x1cb0d0,null))[_0x1b50('0x44')](handleError(_0x1cb0d0,null));};exports[_0x1b50('0x4a')]=function(_0x502a21,_0x15bfc){return db[_0x1b50('0x2b')][_0x1b50('0x4a')](_0x502a21[_0x1b50('0x4b')],{})[_0x1b50('0x23')](function(_0x2e14b4){var _0x3067d8=_0x502a21[_0x1b50('0x4c')][_0x1b50('0x24')]({'plain':!![]});if(!_0x3067d8)throw new Error(_0x1b50('0x4d'));if(_0x3067d8['role']===_0x1b50('0x4c')){var _0x1ca1a0=_0x2e14b4[_0x1b50('0x24')]({'plain':!![]});var _0x9e2e67=_0x1b50('0x25');return db[_0x1b50('0x4e')][_0x1b50('0x49')]({'where':{'name':_0x9e2e67,'userProfileId':_0x3067d8[_0x1b50('0x4f')]},'raw':!![]})[_0x1b50('0x23')](function(_0x236011){if(_0x236011&&_0x236011[_0x1b50('0x50')]===0x0){return db[_0x1b50('0x26')][_0x1b50('0x4a')]({'name':_0x1ca1a0[_0x1b50('0x28')],'resourceId':_0x1ca1a0['id'],'type':_0x236011[_0x1b50('0x28')],'sectionId':_0x236011['id']},{})[_0x1b50('0x23')](function(){return _0x2e14b4;});}else{return _0x2e14b4;}})['catch'](function(_0x155453){logger[_0x1b50('0x27')](_0x1b50('0x51'),_0x155453);throw _0x155453;});}return _0x2e14b4;})[_0x1b50('0x23')](respondWithResult(_0x15bfc,0xc9))[_0x1b50('0x44')](handleError(_0x15bfc,null));};exports[_0x1b50('0x22')]=function(_0x17c1f1,_0x160f08){if(_0x17c1f1[_0x1b50('0x4b')]['id']){delete _0x17c1f1[_0x1b50('0x4b')]['id'];}return db['Disposition'][_0x1b50('0x49')]({'where':{'id':_0x17c1f1['params']['id']}})[_0x1b50('0x23')](handleEntityNotFound(_0x160f08,null))['then'](saveUpdates(_0x17c1f1['body'],null))['then'](respondWithResult(_0x160f08,null))[_0x1b50('0x44')](handleError(_0x160f08,null));};exports[_0x1b50('0x52')]=function(_0x3e7108,_0x10a863){return db[_0x1b50('0x2b')][_0x1b50('0x49')]({'where':{'id':_0x3e7108[_0x1b50('0x46')]['id']}})['then'](handleEntityNotFound(_0x10a863,null))[_0x1b50('0x23')](removeEntity(_0x10a863,null))[_0x1b50('0x44')](handleError(_0x10a863,null));};
\ No newline at end of file
+var _0x6fb5=['Disposition','includeAll','include','findAll','rows','catch','show','params','length','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','body','eml-format','zip-dir','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','apply','reject','save','update','destroy','then','get','Dispositions','UserProfileResource','error','stack','name','send','index','map','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL'];(function(_0x36d6de,_0x1d303d){var _0x3f60d8=function(_0x7a8dcc){while(--_0x7a8dcc){_0x36d6de['push'](_0x36d6de['shift']());}};_0x3f60d8(++_0x1d303d);}(_0x6fb5,0x10c));var _0x56fb=function(_0x45f3bd,_0x387fbe){_0x45f3bd=_0x45f3bd-0x0;var _0x5590fb=_0x6fb5[_0x45f3bd];return _0x5590fb;};'use strict';var emlformat=require(_0x56fb('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x56fb('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x56fb('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x56fb('0x3'));var path=require(_0x56fb('0x4'));var sox=require(_0x56fb('0x5'));var csv=require(_0x56fb('0x6'));var ejs=require(_0x56fb('0x7'));var fs=require('fs');var fs_extra=require(_0x56fb('0x8'));var _=require(_0x56fb('0x9'));var squel=require(_0x56fb('0xa'));var crypto=require(_0x56fb('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x56fb('0xc'));var toCsv=require(_0x56fb('0x6'));var querystring=require(_0x56fb('0xd'));var Papa=require(_0x56fb('0xe'));var Redis=require(_0x56fb('0xf'));var authService=require(_0x56fb('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x56fb('0x11'));var hardwareService=require(_0x56fb('0x12'));var logger=require(_0x56fb('0x13'))('api');var utils=require(_0x56fb('0x14'));var config=require(_0x56fb('0x15'));var licenseUtil=require(_0x56fb('0x16'));var db=require(_0x56fb('0x17'))['db'];function respondWithStatusCode(_0x1a0273,_0x2275e2){_0x2275e2=_0x2275e2||0xcc;return function(_0x11d333){if(_0x11d333){return _0x1a0273[_0x56fb('0x18')](_0x2275e2);}return _0x1a0273[_0x56fb('0x19')](_0x2275e2)[_0x56fb('0x1a')]();};}function respondWithResult(_0x440889,_0x1d0a34){_0x1d0a34=_0x1d0a34||0xc8;return function(_0x486c7a){if(_0x486c7a){return _0x440889[_0x56fb('0x19')](_0x1d0a34)[_0x56fb('0x1b')](_0x486c7a);}};}function respondWithFilteredResult(_0x5b3c6e,_0x4f410b){return function(_0x464eca){if(_0x464eca){var _0x17bdc8=typeof _0x4f410b['offset']===_0x56fb('0x1c')&&typeof _0x4f410b['limit']===_0x56fb('0x1c');var _0x5d2591=_0x464eca[_0x56fb('0x1d')];var _0x1444b3=_0x17bdc8?0x0:_0x4f410b[_0x56fb('0x1e')];var _0x18acc0=_0x17bdc8?_0x464eca[_0x56fb('0x1d')]:_0x4f410b[_0x56fb('0x1e')]+_0x4f410b[_0x56fb('0x1f')];var _0x3c503a;if(_0x18acc0>=_0x5d2591){_0x18acc0=_0x5d2591;_0x3c503a=0xc8;}else{_0x3c503a=0xce;}_0x5b3c6e['status'](_0x3c503a);return _0x5b3c6e['set']('Content-Range',_0x1444b3+'-'+_0x18acc0+'/'+_0x5d2591)[_0x56fb('0x1b')](_0x464eca);}return null;};}function patchUpdates(_0x3e946c){return function(_0x200314){try{jsonpatch[_0x56fb('0x20')](_0x200314,_0x3e946c,!![]);}catch(_0x440c9a){return BPromise[_0x56fb('0x21')](_0x440c9a);}return _0x200314[_0x56fb('0x22')]();};}function saveUpdates(_0x51e171,_0x5e1fea){return function(_0x56dbee){if(_0x56dbee){return _0x56dbee[_0x56fb('0x23')](_0x51e171)['then'](function(_0x2159bf){return _0x2159bf;});}return null;};}function removeEntity(_0x381be9,_0x698e20){return function(_0x19ce01){if(_0x19ce01){return _0x19ce01[_0x56fb('0x24')]()[_0x56fb('0x25')](function(){var _0x4929e7=_0x19ce01[_0x56fb('0x26')]({'plain':!![]});var _0x52242b=_0x56fb('0x27');return db[_0x56fb('0x28')][_0x56fb('0x24')]({'where':{'type':_0x52242b,'resourceId':_0x4929e7['id']}})[_0x56fb('0x25')](function(){return _0x19ce01;});})[_0x56fb('0x25')](function(){_0x381be9[_0x56fb('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x44bcde,_0x57bf1e){return function(_0x3028ea){if(!_0x3028ea){_0x44bcde[_0x56fb('0x18')](0x194);}return _0x3028ea;};}function handleError(_0x5caf2b,_0x1baec5){_0x1baec5=_0x1baec5||0x1f4;return function(_0x1e230c){logger[_0x56fb('0x29')](_0x1e230c[_0x56fb('0x2a')]);if(_0x1e230c[_0x56fb('0x2b')]){delete _0x1e230c[_0x56fb('0x2b')];}_0x5caf2b[_0x56fb('0x19')](_0x1baec5)[_0x56fb('0x2c')](_0x1e230c);};}exports[_0x56fb('0x2d')]=function(_0xc8ba3b,_0x4b4ddb){var _0x40ef6a={},_0x5f6464={},_0x547b3d={'count':0x0,'rows':[]};var _0x5ccdd3=_[_0x56fb('0x2e')](db['Disposition']['rawAttributes'],function(_0x19e9ba){return{'name':_0x19e9ba['fieldName'],'type':_0x19e9ba[_0x56fb('0x2f')][_0x56fb('0x30')]};});_0x5f6464[_0x56fb('0x31')]=_['map'](_0x5ccdd3,'name');_0x5f6464[_0x56fb('0x32')]=_[_0x56fb('0x33')](_0xc8ba3b[_0x56fb('0x32')]);_0x5f6464[_0x56fb('0x34')]=_[_0x56fb('0x35')](_0x5f6464[_0x56fb('0x31')],_0x5f6464[_0x56fb('0x32')]);_0x40ef6a[_0x56fb('0x36')]=_[_0x56fb('0x35')](_0x5f6464[_0x56fb('0x31')],qs[_0x56fb('0x37')](_0xc8ba3b[_0x56fb('0x32')][_0x56fb('0x37')]));_0x40ef6a[_0x56fb('0x36')]=_0x40ef6a[_0x56fb('0x36')]['length']?_0x40ef6a[_0x56fb('0x36')]:_0x5f6464[_0x56fb('0x31')];if(!_0xc8ba3b['query'][_0x56fb('0x38')](_0x56fb('0x39'))){_0x40ef6a[_0x56fb('0x1f')]=qs[_0x56fb('0x1f')](_0xc8ba3b[_0x56fb('0x32')]['limit']);_0x40ef6a[_0x56fb('0x1e')]=qs[_0x56fb('0x1e')](_0xc8ba3b[_0x56fb('0x32')]['offset']);}_0x40ef6a[_0x56fb('0x3a')]=qs['sort'](_0xc8ba3b[_0x56fb('0x32')][_0x56fb('0x3b')]);_0x40ef6a[_0x56fb('0x3c')]=qs[_0x56fb('0x34')](_['pick'](_0xc8ba3b[_0x56fb('0x32')],_0x5f6464[_0x56fb('0x34')]),_0x5ccdd3);if(_0xc8ba3b['query'][_0x56fb('0x3d')]){_0x40ef6a['where']=_[_0x56fb('0x3e')](_0x40ef6a[_0x56fb('0x3c')],{'$or':_[_0x56fb('0x2e')](_0x5ccdd3,function(_0x2784d1){if(_0x2784d1[_0x56fb('0x2f')]!==_0x56fb('0x3f')){var _0x765c1d={};_0x765c1d[_0x2784d1[_0x56fb('0x2b')]]={'$like':'%'+_0xc8ba3b[_0x56fb('0x32')][_0x56fb('0x3d')]+'%'};return _0x765c1d;}})});}_0x40ef6a=_[_0x56fb('0x3e')]({},_0x40ef6a,_0xc8ba3b['options']);var _0x3b69a9={'where':_0x40ef6a['where']};return db[_0x56fb('0x40')][_0x56fb('0x1d')](_0x3b69a9)['then'](function(_0xe918f){_0x547b3d[_0x56fb('0x1d')]=_0xe918f;if(_0xc8ba3b[_0x56fb('0x32')][_0x56fb('0x41')]){_0x40ef6a[_0x56fb('0x42')]=[{'all':!![]}];}return db['Disposition'][_0x56fb('0x43')](_0x40ef6a);})[_0x56fb('0x25')](function(_0x33d1f2){_0x547b3d[_0x56fb('0x44')]=_0x33d1f2;return _0x547b3d;})[_0x56fb('0x25')](respondWithFilteredResult(_0x4b4ddb,_0x40ef6a))[_0x56fb('0x45')](handleError(_0x4b4ddb,null));};exports[_0x56fb('0x46')]=function(_0x47c928,_0xafe8e1){var _0x2a0ef1={'raw':!![],'where':{'id':_0x47c928[_0x56fb('0x47')]['id']}},_0x2dcc6a={};_0x2dcc6a[_0x56fb('0x31')]=_[_0x56fb('0x33')](db[_0x56fb('0x40')]['rawAttributes']);_0x2dcc6a['query']=_[_0x56fb('0x33')](_0x47c928['query']);_0x2dcc6a[_0x56fb('0x34')]=_[_0x56fb('0x35')](_0x2dcc6a[_0x56fb('0x31')],_0x2dcc6a['query']);_0x2a0ef1[_0x56fb('0x36')]=_[_0x56fb('0x35')](_0x2dcc6a[_0x56fb('0x31')],qs[_0x56fb('0x37')](_0x47c928[_0x56fb('0x32')][_0x56fb('0x37')]));_0x2a0ef1[_0x56fb('0x36')]=_0x2a0ef1[_0x56fb('0x36')][_0x56fb('0x48')]?_0x2a0ef1[_0x56fb('0x36')]:_0x2dcc6a[_0x56fb('0x31')];if(_0x47c928['query'][_0x56fb('0x41')]){_0x2a0ef1[_0x56fb('0x42')]=[{'all':!![]}];}_0x2a0ef1=_[_0x56fb('0x3e')]({},_0x2a0ef1,_0x47c928[_0x56fb('0x49')]);return db['Disposition'][_0x56fb('0x4a')](_0x2a0ef1)[_0x56fb('0x25')](handleEntityNotFound(_0xafe8e1,null))[_0x56fb('0x25')](respondWithResult(_0xafe8e1,null))[_0x56fb('0x45')](handleError(_0xafe8e1,null));};exports[_0x56fb('0x4b')]=function(_0x2f8bb4,_0x5f2e02){return db[_0x56fb('0x40')][_0x56fb('0x4b')](_0x2f8bb4['body'],{})['then'](function(_0x4693a9){var _0x468aa6=_0x2f8bb4[_0x56fb('0x4c')][_0x56fb('0x26')]({'plain':!![]});if(!_0x468aa6)throw new Error(_0x56fb('0x4d'));if(_0x468aa6[_0x56fb('0x4e')]===_0x56fb('0x4c')){var _0x2d3464=_0x4693a9['get']({'plain':!![]});var _0x2bb97c='Dispositions';return db[_0x56fb('0x4f')][_0x56fb('0x4a')]({'where':{'name':_0x2bb97c,'userProfileId':_0x468aa6[_0x56fb('0x50')]},'raw':!![]})[_0x56fb('0x25')](function(_0x3231c6){if(_0x3231c6&&_0x3231c6[_0x56fb('0x51')]===0x0){return db['UserProfileResource'][_0x56fb('0x4b')]({'name':_0x2d3464['name'],'resourceId':_0x2d3464['id'],'type':_0x3231c6[_0x56fb('0x2b')],'sectionId':_0x3231c6['id']},{})[_0x56fb('0x25')](function(){return _0x4693a9;});}else{return _0x4693a9;}})[_0x56fb('0x45')](function(_0x218c10){logger[_0x56fb('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x218c10);throw _0x218c10;});}return _0x4693a9;})['then'](respondWithResult(_0x5f2e02,0xc9))[_0x56fb('0x45')](handleError(_0x5f2e02,null));};exports[_0x56fb('0x23')]=function(_0x508b64,_0x3916fd){if(_0x508b64['body']['id']){delete _0x508b64[_0x56fb('0x52')]['id'];}return db[_0x56fb('0x40')][_0x56fb('0x4a')]({'where':{'id':_0x508b64[_0x56fb('0x47')]['id']}})[_0x56fb('0x25')](handleEntityNotFound(_0x3916fd,null))['then'](saveUpdates(_0x508b64[_0x56fb('0x52')],null))[_0x56fb('0x25')](respondWithResult(_0x3916fd,null))[_0x56fb('0x45')](handleError(_0x3916fd,null));};exports['destroy']=function(_0x852a19,_0x399e6c){return db[_0x56fb('0x40')]['find']({'where':{'id':_0x852a19['params']['id']}})['then'](handleEntityNotFound(_0x399e6c,null))[_0x56fb('0x25')](removeEntity(_0x399e6c,null))['catch'](handleError(_0x399e6c,null));};
\ No newline at end of file
index c7ecf06..637383b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bcf=['SmsAccountId','name_fax','FaxAccountId','name_openchannel','name_whatsapp','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./disposition.attributes','define','Disposition','tools_dispositions','name_voice','ListId','name_chat','name','name_mail','MailAccountId'];(function(_0x12936c,_0x5a922d){var _0xd2d595=function(_0x1df8b4){while(--_0x1df8b4){_0x12936c['push'](_0x12936c['shift']());}};_0xd2d595(++_0x5a922d);}(_0x3bcf,0xdd));var _0xf3bc=function(_0x10085c,_0x50086f){_0x10085c=_0x10085c-0x0;var _0x34389c=_0x3bcf[_0x10085c];return _0x34389c;};'use strict';var _=require(_0xf3bc('0x0'));var util=require(_0xf3bc('0x1'));var logger=require(_0xf3bc('0x2'))(_0xf3bc('0x3'));var moment=require(_0xf3bc('0x4'));var BPromise=require(_0xf3bc('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf3bc('0x6'));var rimraf=require(_0xf3bc('0x7'));var config=require(_0xf3bc('0x8'));var attributes=require(_0xf3bc('0x9'));module['exports']=function(_0x403472,_0x3456d0){return _0x403472[_0xf3bc('0xa')](_0xf3bc('0xb'),attributes,{'tableName':_0xf3bc('0xc'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xf3bc('0xd'),'fields':['name',_0xf3bc('0xe')]},{'unique':!![],'name':_0xf3bc('0xf'),'fields':[_0xf3bc('0x10'),'ChatWebsiteId']},{'unique':!![],'name':_0xf3bc('0x11'),'fields':[_0xf3bc('0x10'),_0xf3bc('0x12')]},{'unique':!![],'name':'name_sms','fields':[_0xf3bc('0x10'),_0xf3bc('0x13')]},{'unique':!![],'name':_0xf3bc('0x14'),'fields':[_0xf3bc('0x10'),_0xf3bc('0x15')]},{'unique':!![],'name':_0xf3bc('0x16'),'fields':[_0xf3bc('0x10'),'OpenchannelAccountId']},{'unique':!![],'name':_0xf3bc('0x17'),'fields':['name','WhatsappAccountId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd1c2=['name','name_chat','ChatWebsiteId','name_mail','SmsAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','./disposition.attributes','exports','Disposition','tools_dispositions'];(function(_0x408552,_0x45579e){var _0x18a87b=function(_0x17b762){while(--_0x17b762){_0x408552['push'](_0x408552['shift']());}};_0x18a87b(++_0x45579e);}(_0xd1c2,0x80));var _0x2d1c=function(_0xba32b5,_0x300109){_0xba32b5=_0xba32b5-0x0;var _0x32dc5a=_0xd1c2[_0xba32b5];return _0x32dc5a;};'use strict';var _=require(_0x2d1c('0x0'));var util=require(_0x2d1c('0x1'));var logger=require('../../config/logger')(_0x2d1c('0x2'));var moment=require(_0x2d1c('0x3'));var BPromise=require(_0x2d1c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2d1c('0x5'));var rimraf=require(_0x2d1c('0x6'));var config=require(_0x2d1c('0x7'));var attributes=require(_0x2d1c('0x8'));module[_0x2d1c('0x9')]=function(_0x38af8e,_0x4eb3f0){return _0x38af8e['define'](_0x2d1c('0xa'),attributes,{'tableName':_0x2d1c('0xb'),'paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':[_0x2d1c('0xc'),'ListId']},{'unique':!![],'name':_0x2d1c('0xd'),'fields':[_0x2d1c('0xc'),_0x2d1c('0xe')]},{'unique':!![],'name':_0x2d1c('0xf'),'fields':['name','MailAccountId']},{'unique':!![],'name':'name_sms','fields':[_0x2d1c('0xc'),_0x2d1c('0x10')]},{'unique':!![],'name':'name_fax','fields':[_0x2d1c('0xc'),'FaxAccountId']},{'unique':!![],'name':_0x2d1c('0x11'),'fields':['name',_0x2d1c('0x12')]},{'unique':!![],'name':_0x2d1c('0x13'),'fields':[_0x2d1c('0xc'),'WhatsappAccountId']}],'timestamps':!![]});};
\ No newline at end of file
index 5a9333f..23578d8 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(_0xce77f5,_0x189ffe){var _0x22f1c2=function(_0x47e79e){while(--_0x47e79e){_0xce77f5['push'](_0xce77f5['shift']());}};_0x22f1c2(++_0x189ffe);}(_0xa9e0,0x123));var _0x0a9e=function(_0x29b609,_0x19d388){_0x29b609=_0x29b609-0x0;var _0x54c952=_0xa9e0[_0x29b609];return _0x54c952;};'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(_0x184128,_0x1976ff){var _0x3bff88=function(_0x469745){while(--_0x469745){_0x184128['push'](_0x184128['shift']());}};_0x3bff88(++_0x1976ff);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xa9e0[_0x5b561d];return _0x431060;};'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 1894879..9756d85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc68d=['util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','show','post','put','update','/:id','destroy','exports','multer'];(function(_0x50341b,_0x5a4eee){var _0x11ec2f=function(_0x74d143){while(--_0x74d143){_0x50341b['push'](_0x50341b['shift']());}};_0x11ec2f(++_0x5a4eee);}(_0xc68d,0xfe));var _0xdc68=function(_0x1f8209,_0x17a332){_0x1f8209=_0x1f8209-0x0;var _0x298915=_0xc68d[_0x1f8209];return _0x298915;};'use strict';var multer=require(_0xdc68('0x0'));var util=require(_0xdc68('0x1'));var path=require(_0xdc68('0x2'));var timeout=require(_0xdc68('0x3'));var express=require(_0xdc68('0x4'));var router=express[_0xdc68('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xdc68('0x6'));var interaction=require(_0xdc68('0x7'));var config=require('../../config/environment');var controller=require('./disposition.controller');router[_0xdc68('0x8')]('/',auth[_0xdc68('0x9')](),controller['index']);router[_0xdc68('0x8')]('/:id',auth[_0xdc68('0x9')](),controller[_0xdc68('0xa')]);router[_0xdc68('0xb')]('/',auth[_0xdc68('0x9')](),controller['create']);router[_0xdc68('0xc')]('/:id',auth[_0xdc68('0x9')](),controller[_0xdc68('0xd')]);router['delete'](_0xdc68('0xe'),auth[_0xdc68('0x9')](),controller[_0xdc68('0xf')]);module[_0xdc68('0x10')]=router;
\ No newline at end of file
+var _0x34f4=['connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./disposition.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','delete','destroy','multer','util'];(function(_0x3e6d5d,_0x264c7a){var _0x238923=function(_0x201b19){while(--_0x201b19){_0x3e6d5d['push'](_0x3e6d5d['shift']());}};_0x238923(++_0x264c7a);}(_0x34f4,0x1e4));var _0x434f=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0x34f4[_0xa1e3e3];return _0xc980e9;};'use strict';var multer=require(_0x434f('0x0'));var util=require(_0x434f('0x1'));var path=require('path');var timeout=require(_0x434f('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x434f('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x434f('0x4'));var config=require(_0x434f('0x5'));var controller=require(_0x434f('0x6'));router['get']('/',auth[_0x434f('0x7')](),controller[_0x434f('0x8')]);router[_0x434f('0x9')](_0x434f('0xa'),auth[_0x434f('0x7')](),controller[_0x434f('0xb')]);router[_0x434f('0xc')]('/',auth['isAuthenticated'](),controller[_0x434f('0xd')]);router[_0x434f('0xe')](_0x434f('0xa'),auth['isAuthenticated'](),controller[_0x434f('0xf')]);router[_0x434f('0x10')](_0x434f('0xa'),auth[_0x434f('0x7')](),controller[_0x434f('0x11')]);module['exports']=router;
\ No newline at end of file
index 626fc1b..02b468b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15ef=['setDataValue','mandatoryDisposition','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','localstationid','7200','9600','14400','2400','4800','INTEGER','SIP','DADHI','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x59054f,_0x154a28){var _0xe391c0=function(_0x13ad54){while(--_0x13ad54){_0x59054f['push'](_0x59054f['shift']());}};_0xe391c0(++_0x154a28);}(_0x15ef,0x80));var _0xf15e=function(_0x5f2be7,_0x55ae49){_0x5f2be7=_0x5f2be7-0x0;var _0x2e5a50=_0x15ef[_0x5f2be7];return _0x2e5a50;};'use strict';var Sequelize=require('sequelize');module[_0xf15e('0x0')]={'name':{'type':Sequelize[_0xf15e('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'ecm':{'type':Sequelize[_0xf15e('0x2')](_0xf15e('0x3'),'no'),'defaultValue':_0xf15e('0x3')},'headerinfo':{'type':Sequelize[_0xf15e('0x1')],'defaultValue':_0xf15e('0x4')},'localstationid':{'type':Sequelize['STRING'],'unique':_0xf15e('0x5')},'minrate':{'type':Sequelize[_0xf15e('0x2')]('2400','4800',_0xf15e('0x6'),_0xf15e('0x7'),'12000',_0xf15e('0x8')),'defaultValue':'4800'},'maxrate':{'type':Sequelize[_0xf15e('0x2')](_0xf15e('0x9'),_0xf15e('0xa'),_0xf15e('0x6'),'9600','12000','14400'),'defaultValue':_0xf15e('0x8')},'modem':{'type':Sequelize[_0xf15e('0x1')],'defaultValue':'v17,v27,v29'},'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[_0xf15e('0xb')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xf15e('0x2')](_0xf15e('0xc'),'IAX',_0xf15e('0xd'),_0xf15e('0xe')),'defaultValue':_0xf15e('0xc')},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xf15e('0xf')],'defaultValue':function(){return _0xf15e('0x10');}},'notificationSound':{'type':Sequelize[_0xf15e('0x11')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xf15e('0x11')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xf15e('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0xf15e('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xf15e('0x11')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xf15e('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xf15e('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf15e('0xb')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xf15e('0x11')],'defaultValue':![],'comment':_0xf15e('0x12'),'set':function(_0x45e418){if(!_0x45e418)this['setDataValue']('mandatoryDispositionPauseId',null);this[_0xf15e('0x13')](_0xf15e('0x14'),_0x45e418);}}};
\ No newline at end of file
+var _0xfd2e=['localstationid','4800','12000','2400','7200','9600','14400','v17,v27,v29','INTEGER','SIP','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax'];(function(_0x1fc772,_0x376734){var _0x725ba3=function(_0x58f195){while(--_0x58f195){_0x1fc772['push'](_0x1fc772['shift']());}};_0x725ba3(++_0x376734);}(_0xfd2e,0x6e));var _0xefd2=function(_0x3fcf48,_0x4df528){_0x3fcf48=_0x3fcf48-0x0;var _0xb384a1=_0xfd2e[_0x3fcf48];return _0xb384a1;};'use strict';var Sequelize=require(_0xefd2('0x0'));module['exports']={'name':{'type':Sequelize[_0xefd2('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'ecm':{'type':Sequelize[_0xefd2('0x2')]('yes','no'),'defaultValue':_0xefd2('0x3')},'headerinfo':{'type':Sequelize[_0xefd2('0x1')],'defaultValue':_0xefd2('0x4')},'localstationid':{'type':Sequelize[_0xefd2('0x1')],'unique':_0xefd2('0x5')},'minrate':{'type':Sequelize['ENUM']('2400',_0xefd2('0x6'),'7200','9600',_0xefd2('0x7'),'14400'),'defaultValue':_0xefd2('0x6')},'maxrate':{'type':Sequelize[_0xefd2('0x2')](_0xefd2('0x8'),_0xefd2('0x6'),_0xefd2('0x9'),_0xefd2('0xa'),_0xefd2('0x7'),'14400'),'defaultValue':_0xefd2('0xb')},'modem':{'type':Sequelize[_0xefd2('0x1')],'defaultValue':_0xefd2('0xc')},'gateway':{'type':Sequelize[_0xefd2('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xefd2('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xefd2('0xd')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xefd2('0x2')](_0xefd2('0xe'),'IAX','DADHI',_0xefd2('0xf')),'defaultValue':'SIP'},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xefd2('0x10')],'defaultValue':function(){return _0xefd2('0x11');}},'notificationSound':{'type':Sequelize[_0xefd2('0x12')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xefd2('0x12')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xefd2('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xefd2('0x12')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xefd2('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xefd2('0x12')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xefd2('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xefd2('0xd')],'allowNull':!![],'defaultValue':null,'comment':_0xefd2('0x13')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0xd75a31){if(!_0xd75a31)this[_0xefd2('0x14')](_0xefd2('0x15'),null);this[_0xefd2('0x14')](_0xefd2('0x16'),_0xd75a31);}}};
\ No newline at end of file
index 80b11ff..89e2102 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab0b=['Send\x20Fax\x20failed','Messages','spread','out','filename','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','userFaxAccount:save','removeAgents','isArray','emit','userFaxAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','defaults','redis','localhost','socket.io-emitter','./faxAccount.socket','register','jayson/promise','client','request','then','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','status','end','json','limit','count','set','Content-Range','apply','reject','save','destroy','get','FaxAccounts','sendStatus','stack','name','send','map','FaxAccount','fieldName','type','key','model','keys','query','intersection','attributes','fields','hasOwnProperty','offset','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','rows','catch','show','params','rawAttributes','length','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','Pause','addDisposition','FaxAccountId','Disposition','getDispositions','filters','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','findOne','nolimit','findAll','removeAnswers','addInteraction','FaxInteraction','getInteractions','CmContact','Contact','User','Owner','fullname','Tag','Tags','tag','addApplications','transaction','sequelize','Transaction','READ_COMMITTED','bulkCreate','FaxApplication','findAndCountAll','priority','finally','getApplications','context','from-voip-provider','exten','app','description','Fax\x20Extension','push','Answer','CDR(type)=inbound-fax','Set','localstationid','gateway','faxdetect','minrate','modem','t38timeout','ReceiveFax','addAccountApplications','VoiceExtension','omit','tech','updatedAt','TrunkId','findById','getMessages','$gte','split','format','FaxMessage','CmList','List','Contacts','DESC','attachments','join','server/files/attachments','basename','CheckAfterSend','isNil','from','\x22%s\x22\x20<%s>','fax'];(function(_0x1d5352,_0x4f7974){var _0x3395c2=function(_0x1f062a){while(--_0x1f062a){_0x1d5352['push'](_0x1d5352['shift']());}};_0x3395c2(++_0x4f7974);}(_0xab0b,0x19c));var _0xbab0=function(_0x596cdd,_0x939916){_0x596cdd=_0x596cdd-0x0;var _0x5b65ab=_0xab0b[_0x596cdd];return _0x5b65ab;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbab0('0x0'));var zipdir=require(_0xbab0('0x1'));var jsonpatch=require(_0xbab0('0x2'));var rp=require(_0xbab0('0x3'));var moment=require(_0xbab0('0x4'));var BPromise=require(_0xbab0('0x5'));var Mustache=require(_0xbab0('0x6'));var util=require(_0xbab0('0x7'));var path=require(_0xbab0('0x8'));var sox=require(_0xbab0('0x9'));var csv=require(_0xbab0('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbab0('0xb'));var _=require(_0xbab0('0xc'));var squel=require(_0xbab0('0xd'));var crypto=require(_0xbab0('0xe'));var jsforce=require(_0xbab0('0xf'));var deskjs=require(_0xbab0('0x10'));var toCsv=require(_0xbab0('0xa'));var querystring=require(_0xbab0('0x11'));var Papa=require(_0xbab0('0x12'));var Redis=require(_0xbab0('0x13'));var authService=require(_0xbab0('0x14'));var qs=require(_0xbab0('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbab0('0x16'));var logger=require(_0xbab0('0x17'))(_0xbab0('0x18'));var utils=require(_0xbab0('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_[_0xbab0('0x1a')](config[_0xbab0('0x1b')],{'host':_0xbab0('0x1c'),'port':0x18eb});var socket=require(_0xbab0('0x1d'))(new Redis(config[_0xbab0('0x1b')]));require(_0xbab0('0x1e'))[_0xbab0('0x1f')](socket);var jayson=require(_0xbab0('0x20'));var client=jayson[_0xbab0('0x21')]['http']({'port':0x232c});var client9002=jayson[_0xbab0('0x21')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1ead53,_0x219eb5,_0x459bb6,_0x15ed61){return new BPromise(function(_0x477192,_0x20b2ad){var _0x3bb2cc=_0x15ed61||client;return _0x3bb2cc[_0xbab0('0x22')](_0x1ead53,_0x459bb6)[_0xbab0('0x23')](function(_0x3805c8){logger['info'](_0xbab0('0x24'),_0x219eb5,_0xbab0('0x25'));logger[_0xbab0('0x26')](_0xbab0('0x27'),_0x219eb5,'request\x20sent',JSON[_0xbab0('0x28')](_0x3805c8));if(_0x3805c8[_0xbab0('0x29')]){if(_0x3805c8[_0xbab0('0x29')]['code']===0x1f4){logger['error'](_0xbab0('0x24'),_0x219eb5,_0x3805c8['error'][_0xbab0('0x2a')]);return _0x20b2ad(_0x3805c8['error'][_0xbab0('0x2a')]);}logger[_0xbab0('0x29')]('FaxAccount,\x20%s,\x20%s',_0x219eb5,_0x3805c8[_0xbab0('0x29')][_0xbab0('0x2a')]);return _0x477192(_0x3805c8['error']['message']);}else{logger[_0xbab0('0x2b')]('FaxAccount,\x20%s,\x20%s',_0x219eb5,_0xbab0('0x25'));_0x477192(_0x3805c8[_0xbab0('0x2c')][_0xbab0('0x2a')]);}})['catch'](function(_0x565ff2){logger[_0xbab0('0x29')](_0xbab0('0x24'),_0x219eb5,_0x565ff2);_0x20b2ad(_0x565ff2);});});}function respondWithStatusCode(_0x3609e4,_0x215ea6){_0x215ea6=_0x215ea6||0xcc;return function(_0x2256d1){if(_0x2256d1){return _0x3609e4['sendStatus'](_0x215ea6);}return _0x3609e4[_0xbab0('0x2d')](_0x215ea6)[_0xbab0('0x2e')]();};}function respondWithResult(_0x51d418,_0x362eee){_0x362eee=_0x362eee||0xc8;return function(_0x4bb03c){if(_0x4bb03c){return _0x51d418['status'](_0x362eee)[_0xbab0('0x2f')](_0x4bb03c);}};}function respondWithFilteredResult(_0x38fa4e,_0x35e67c){return function(_0x228899){if(_0x228899){var _0x379e52=typeof _0x35e67c['offset']==='undefined'&&typeof _0x35e67c[_0xbab0('0x30')]==='undefined';var _0x3271ba=_0x228899[_0xbab0('0x31')];var _0x2fa9b9=_0x379e52?0x0:_0x35e67c['offset'];var _0x26f1bc=_0x379e52?_0x228899[_0xbab0('0x31')]:_0x35e67c['offset']+_0x35e67c[_0xbab0('0x30')];var _0x419cf7;if(_0x26f1bc>=_0x3271ba){_0x26f1bc=_0x3271ba;_0x419cf7=0xc8;}else{_0x419cf7=0xce;}_0x38fa4e[_0xbab0('0x2d')](_0x419cf7);return _0x38fa4e[_0xbab0('0x32')](_0xbab0('0x33'),_0x2fa9b9+'-'+_0x26f1bc+'/'+_0x3271ba)[_0xbab0('0x2f')](_0x228899);}return null;};}function patchUpdates(_0x387f69){return function(_0x49e834){try{jsonpatch[_0xbab0('0x34')](_0x49e834,_0x387f69,!![]);}catch(_0x249035){return BPromise[_0xbab0('0x35')](_0x249035);}return _0x49e834[_0xbab0('0x36')]();};}function saveUpdates(_0x41054a,_0x145107){return function(_0x430408){if(_0x430408){return _0x430408['update'](_0x41054a)[_0xbab0('0x23')](function(_0x1e1040){return _0x1e1040;});}return null;};}function removeEntity(_0xd295ea,_0x567db6){return function(_0x4ce1ae){if(_0x4ce1ae){return _0x4ce1ae[_0xbab0('0x37')]()[_0xbab0('0x23')](function(){var _0x1af3ff=_0x4ce1ae[_0xbab0('0x38')]({'plain':!![]});var _0x2fb192=_0xbab0('0x39');return db['UserProfileResource'][_0xbab0('0x37')]({'where':{'type':_0x2fb192,'resourceId':_0x1af3ff['id']}})[_0xbab0('0x23')](function(){return _0x4ce1ae;});})[_0xbab0('0x23')](function(){_0xd295ea[_0xbab0('0x2d')](0xcc)[_0xbab0('0x2e')]();});}};}function handleEntityNotFound(_0x4fd543,_0x42fd5b){return function(_0x170342){if(!_0x170342){_0x4fd543[_0xbab0('0x3a')](0x194);}return _0x170342;};}function handleError(_0x50de66,_0x17cb50){_0x17cb50=_0x17cb50||0x1f4;return function(_0x596a7b){logger['error'](_0x596a7b[_0xbab0('0x3b')]);if(_0x596a7b[_0xbab0('0x3c')]){delete _0x596a7b['name'];}_0x50de66['status'](_0x17cb50)[_0xbab0('0x3d')](_0x596a7b);};}exports['index']=function(_0x58ea0e,_0xc9bd1){var _0x28eafc={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x32cfd7={},_0x444d76={'count':0x0,'rows':[]};var _0xf5a87f=_[_0xbab0('0x3e')](db[_0xbab0('0x3f')]['rawAttributes'],function(_0x2961ad){return{'name':_0x2961ad[_0xbab0('0x40')],'type':_0x2961ad[_0xbab0('0x41')][_0xbab0('0x42')]};});_0x32cfd7[_0xbab0('0x43')]=_[_0xbab0('0x3e')](_0xf5a87f,_0xbab0('0x3c'));_0x32cfd7['query']=_[_0xbab0('0x44')](_0x58ea0e[_0xbab0('0x45')]);_0x32cfd7['filters']=_[_0xbab0('0x46')](_0x32cfd7['model'],_0x32cfd7[_0xbab0('0x45')]);_0x28eafc[_0xbab0('0x47')]=_['intersection'](_0x32cfd7[_0xbab0('0x43')],qs[_0xbab0('0x48')](_0x58ea0e[_0xbab0('0x45')]['fields']));_0x28eafc['attributes']=_0x28eafc[_0xbab0('0x47')]['length']?_0x28eafc[_0xbab0('0x47')]:_0x32cfd7[_0xbab0('0x43')];if(!_0x58ea0e[_0xbab0('0x45')][_0xbab0('0x49')]('nolimit')){_0x28eafc[_0xbab0('0x30')]=qs[_0xbab0('0x30')](_0x58ea0e[_0xbab0('0x45')]['limit']);_0x28eafc[_0xbab0('0x4a')]=qs[_0xbab0('0x4a')](_0x58ea0e['query']['offset']);}_0x28eafc[_0xbab0('0x4b')]=qs[_0xbab0('0x4c')](_0x58ea0e[_0xbab0('0x45')][_0xbab0('0x4c')]);_0x28eafc[_0xbab0('0x4d')]=qs['filters'](_[_0xbab0('0x4e')](_0x58ea0e['query'],_0x32cfd7['filters']),_0xf5a87f);if(_0x58ea0e[_0xbab0('0x45')][_0xbab0('0x4f')]){_0x28eafc[_0xbab0('0x4d')]=_[_0xbab0('0x50')](_0x28eafc[_0xbab0('0x4d')],{'$or':_['map'](_0xf5a87f,function(_0x5cebbb){if(_0x5cebbb['type']!==_0xbab0('0x51')){var _0x24f341={};_0x24f341[_0x5cebbb[_0xbab0('0x3c')]]={'$like':'%'+_0x58ea0e[_0xbab0('0x45')][_0xbab0('0x4f')]+'%'};return _0x24f341;}})});}_0x28eafc=_[_0xbab0('0x50')]({},_0x28eafc,_0x58ea0e['options']);var _0x4ded75={'where':_0x28eafc[_0xbab0('0x4d')]};return db[_0xbab0('0x3f')][_0xbab0('0x31')](_0x4ded75)[_0xbab0('0x23')](function(_0x1e9b60){_0x444d76[_0xbab0('0x31')]=_0x1e9b60;if(_0x58ea0e[_0xbab0('0x45')][_0xbab0('0x52')]){_0x28eafc[_0xbab0('0x53')]=[{'all':!![]}];}return db[_0xbab0('0x3f')]['findAll'](_0x28eafc);})[_0xbab0('0x23')](function(_0x2ebf5b){_0x444d76[_0xbab0('0x54')]=_0x2ebf5b;return _0x444d76;})['then'](respondWithFilteredResult(_0xc9bd1,_0x28eafc))[_0xbab0('0x55')](handleError(_0xc9bd1,null));};exports[_0xbab0('0x56')]=function(_0x1e50b0,_0x4c116d){var _0xd71cd1={'raw':![],'where':{'id':_0x1e50b0[_0xbab0('0x57')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x22a642={};_0x22a642[_0xbab0('0x43')]=_[_0xbab0('0x44')](db[_0xbab0('0x3f')][_0xbab0('0x58')]);_0x22a642['query']=_[_0xbab0('0x44')](_0x1e50b0[_0xbab0('0x45')]);_0x22a642['filters']=_['intersection'](_0x22a642[_0xbab0('0x43')],_0x22a642[_0xbab0('0x45')]);_0xd71cd1['attributes']=_[_0xbab0('0x46')](_0x22a642[_0xbab0('0x43')],qs[_0xbab0('0x48')](_0x1e50b0[_0xbab0('0x45')][_0xbab0('0x48')]));_0xd71cd1[_0xbab0('0x47')]=_0xd71cd1[_0xbab0('0x47')][_0xbab0('0x59')]?_0xd71cd1[_0xbab0('0x47')]:_0x22a642[_0xbab0('0x43')];if(_0x1e50b0[_0xbab0('0x45')][_0xbab0('0x52')]){_0xd71cd1['include']=[{'all':!![]}];}_0xd71cd1=_['merge']({},_0xd71cd1,_0x1e50b0[_0xbab0('0x5a')]);return db[_0xbab0('0x3f')][_0xbab0('0x5b')](_0xd71cd1)[_0xbab0('0x23')](handleEntityNotFound(_0x4c116d,null))[_0xbab0('0x23')](respondWithResult(_0x4c116d,null))[_0xbab0('0x55')](handleError(_0x4c116d,null));};exports[_0xbab0('0x5c')]=function(_0x2340c2,_0x9441e2){return db['FaxAccount'][_0xbab0('0x5c')](_0x2340c2[_0xbab0('0x5d')],{})[_0xbab0('0x23')](function(_0x4d5f48){var _0x5b669a=_0x2340c2[_0xbab0('0x5e')][_0xbab0('0x38')]({'plain':!![]});if(!_0x5b669a)throw new Error(_0xbab0('0x5f'));if(_0x5b669a[_0xbab0('0x60')]===_0xbab0('0x5e')){var _0x438c8f=_0x4d5f48[_0xbab0('0x38')]({'plain':!![]});var _0x465d1e=_0xbab0('0x39');return db[_0xbab0('0x61')][_0xbab0('0x5b')]({'where':{'name':_0x465d1e,'userProfileId':_0x5b669a[_0xbab0('0x62')]},'raw':!![]})[_0xbab0('0x23')](function(_0x434961){if(_0x434961&&_0x434961[_0xbab0('0x63')]===0x0){return db[_0xbab0('0x64')][_0xbab0('0x5c')]({'name':_0x438c8f[_0xbab0('0x3c')],'resourceId':_0x438c8f['id'],'type':_0x434961[_0xbab0('0x3c')],'sectionId':_0x434961['id']},{})[_0xbab0('0x23')](function(){return _0x4d5f48;});}else{return _0x4d5f48;}})[_0xbab0('0x55')](function(_0x117711){logger[_0xbab0('0x29')](_0xbab0('0x65'),_0x117711);throw _0x117711;});}return _0x4d5f48;})[_0xbab0('0x23')](respondWithResult(_0x9441e2,0xc9))[_0xbab0('0x55')](handleError(_0x9441e2,null));};exports[_0xbab0('0x66')]=function(_0x587a15,_0x2e1b5b){if(_0x587a15[_0xbab0('0x5d')]['id']){delete _0x587a15[_0xbab0('0x5d')]['id'];}return db[_0xbab0('0x3f')][_0xbab0('0x5b')]({'where':{'id':_0x587a15[_0xbab0('0x57')]['id']},'include':[{'model':db[_0xbab0('0x67')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x2e1b5b,null))['then'](saveUpdates(_0x587a15[_0xbab0('0x5d')],null))[_0xbab0('0x23')](respondWithResult(_0x2e1b5b,null))[_0xbab0('0x55')](handleError(_0x2e1b5b,null));};exports[_0xbab0('0x37')]=function(_0x11ff5b,_0x8697ee){return db[_0xbab0('0x3f')]['find']({'where':{'id':_0x11ff5b[_0xbab0('0x57')]['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x8697ee,null))['then'](removeEntity(_0x8697ee,null))['catch'](handleError(_0x8697ee,null));};exports['describe']=function(_0xe5e385,_0x1f8269){return db[_0xbab0('0x3f')]['describe']()[_0xbab0('0x23')](respondWithResult(_0x1f8269,null))[_0xbab0('0x55')](handleError(_0x1f8269,null));};exports[_0xbab0('0x68')]=function(_0x28ad9f,_0x2b7e26,_0x2a9288){if(_0x28ad9f[_0xbab0('0x5d')]['id']){delete _0x28ad9f[_0xbab0('0x5d')]['id'];}return db[_0xbab0('0x3f')][_0xbab0('0x5b')]({'where':{'id':_0x28ad9f[_0xbab0('0x57')]['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x2b7e26,null))[_0xbab0('0x23')](function(_0x3899e4){if(_0x3899e4){_0x28ad9f['body'][_0xbab0('0x69')]=_0x3899e4['id'];return db[_0xbab0('0x6a')][_0xbab0('0x5c')](_0x28ad9f[_0xbab0('0x5d')]);}})[_0xbab0('0x23')](respondWithResult(_0x2b7e26,null))[_0xbab0('0x55')](handleError(_0x2b7e26,null));};exports[_0xbab0('0x6b')]=function(_0x134477,_0x365d1e,_0x24a6a1){var _0x395169={'raw':![],'where':{}};var _0x2e7743={};var _0x2b2861={'count':0x0,'rows':[]};return db[_0xbab0('0x3f')]['findOne']({'where':{'id':_0x134477['params']['id']}})['then'](handleEntityNotFound(_0x365d1e,null))[_0xbab0('0x23')](function(_0x5bb4){if(_0x5bb4){_0x2e7743['model']=_[_0xbab0('0x44')](db[_0xbab0('0x6a')]['rawAttributes']);_0x2e7743[_0xbab0('0x45')]=_[_0xbab0('0x44')](_0x134477[_0xbab0('0x45')]);_0x2e7743[_0xbab0('0x6c')]=_[_0xbab0('0x46')](_0x2e7743['model'],_0x2e7743['query']);_0x395169[_0xbab0('0x47')]=_[_0xbab0('0x46')](_0x2e7743[_0xbab0('0x43')],qs[_0xbab0('0x48')](_0x134477[_0xbab0('0x45')]['fields']));_0x395169[_0xbab0('0x47')]=_0x395169[_0xbab0('0x47')]['length']?_0x395169[_0xbab0('0x47')]:_0x2e7743[_0xbab0('0x43')];if(!_0x134477['query'][_0xbab0('0x49')]('nolimit')){_0x395169[_0xbab0('0x30')]=qs[_0xbab0('0x30')](_0x134477[_0xbab0('0x45')]['limit']);_0x395169[_0xbab0('0x4a')]=qs['offset'](_0x134477[_0xbab0('0x45')][_0xbab0('0x4a')]);}_0x395169[_0xbab0('0x4b')]=qs[_0xbab0('0x4c')](_0x134477[_0xbab0('0x45')][_0xbab0('0x4c')]);_0x395169[_0xbab0('0x4d')]=qs[_0xbab0('0x6c')](_[_0xbab0('0x4e')](_0x134477[_0xbab0('0x45')],_0x2e7743[_0xbab0('0x6c')]));_0x395169[_0xbab0('0x4d')][_0xbab0('0x69')]=_0x5bb4['id'];if(_0x134477[_0xbab0('0x45')]['filter']){_0x395169['where']=_[_0xbab0('0x50')](_0x395169[_0xbab0('0x4d')],{'$or':_[_0xbab0('0x3e')](_0x395169[_0xbab0('0x47')],function(_0x182eab){var _0x1005fb={};_0x1005fb[_0x182eab]={'$like':'%'+_0x134477[_0xbab0('0x45')][_0xbab0('0x4f')]+'%'};return _0x1005fb;})});}_0x395169=_[_0xbab0('0x50')]({},_0x395169,_0x134477[_0xbab0('0x5a')]);return db[_0xbab0('0x6a')][_0xbab0('0x31')]({'where':_0x395169[_0xbab0('0x4d')]})[_0xbab0('0x23')](function(_0x28e95e){_0x2b2861[_0xbab0('0x31')]=_0x28e95e;if(_0x134477[_0xbab0('0x45')][_0xbab0('0x52')]){_0x395169[_0xbab0('0x53')]=[{'all':!![]}];}return db[_0xbab0('0x6a')]['findAll'](_0x395169);})[_0xbab0('0x23')](function(_0x17726b){_0x2b2861[_0xbab0('0x54')]=_0x17726b;return _0x2b2861;});}})[_0xbab0('0x23')](respondWithFilteredResult(_0x365d1e,_0x395169))[_0xbab0('0x55')](handleError(_0x365d1e,null));};exports['removeDispositions']=function(_0x49cf92,_0x3cf4e1,_0x220ddb){return db['FaxAccount'][_0xbab0('0x5b')]({'where':{'id':_0x49cf92[_0xbab0('0x57')]['id']}})['then'](handleEntityNotFound(_0x3cf4e1,null))[_0xbab0('0x23')](function(_0x2cf19a){if(_0x2cf19a){return _0x2cf19a[_0xbab0('0x6d')](_0x49cf92[_0xbab0('0x45')][_0xbab0('0x6e')]);}})[_0xbab0('0x23')](respondWithStatusCode(_0x3cf4e1,null))[_0xbab0('0x55')](handleError(_0x3cf4e1,null));};exports[_0xbab0('0x6f')]=function(_0x425d0a,_0x3292bc,_0x18fb83){if(_0x425d0a['body']['id']){delete _0x425d0a[_0xbab0('0x5d')]['id'];}return db[_0xbab0('0x3f')][_0xbab0('0x5b')]({'where':{'id':_0x425d0a[_0xbab0('0x57')]['id']}})['then'](handleEntityNotFound(_0x3292bc,null))['then'](function(_0x12617a){if(_0x12617a){_0x425d0a[_0xbab0('0x5d')][_0xbab0('0x69')]=_0x12617a['id'];return db[_0xbab0('0x70')][_0xbab0('0x5c')](_0x425d0a[_0xbab0('0x5d')]);}})[_0xbab0('0x23')](respondWithResult(_0x3292bc,null))[_0xbab0('0x55')](handleError(_0x3292bc,null));};exports[_0xbab0('0x71')]=function(_0x83e4a7,_0x9bc4a2,_0x4d665a){var _0x1f18da={'raw':![],'where':{}};var _0x241eba={};var _0x382488={'count':0x0,'rows':[]};return db['FaxAccount'][_0xbab0('0x72')]({'where':{'id':_0x83e4a7[_0xbab0('0x57')]['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x9bc4a2,null))[_0xbab0('0x23')](function(_0x4ed4b6){if(_0x4ed4b6){_0x241eba[_0xbab0('0x43')]=_['keys'](db[_0xbab0('0x70')]['rawAttributes']);_0x241eba['query']=_[_0xbab0('0x44')](_0x83e4a7['query']);_0x241eba[_0xbab0('0x6c')]=_[_0xbab0('0x46')](_0x241eba['model'],_0x241eba[_0xbab0('0x45')]);_0x1f18da['attributes']=_[_0xbab0('0x46')](_0x241eba[_0xbab0('0x43')],qs['fields'](_0x83e4a7[_0xbab0('0x45')]['fields']));_0x1f18da[_0xbab0('0x47')]=_0x1f18da[_0xbab0('0x47')][_0xbab0('0x59')]?_0x1f18da[_0xbab0('0x47')]:_0x241eba['model'];if(!_0x83e4a7[_0xbab0('0x45')]['hasOwnProperty'](_0xbab0('0x73'))){_0x1f18da[_0xbab0('0x30')]=qs[_0xbab0('0x30')](_0x83e4a7[_0xbab0('0x45')][_0xbab0('0x30')]);_0x1f18da[_0xbab0('0x4a')]=qs[_0xbab0('0x4a')](_0x83e4a7[_0xbab0('0x45')][_0xbab0('0x4a')]);}_0x1f18da[_0xbab0('0x4b')]=qs[_0xbab0('0x4c')](_0x83e4a7[_0xbab0('0x45')][_0xbab0('0x4c')]);_0x1f18da['where']=qs[_0xbab0('0x6c')](_[_0xbab0('0x4e')](_0x83e4a7['query'],_0x241eba[_0xbab0('0x6c')]));_0x1f18da[_0xbab0('0x4d')]['FaxAccountId']=_0x4ed4b6['id'];if(_0x83e4a7[_0xbab0('0x45')]['filter']){_0x1f18da[_0xbab0('0x4d')]=_[_0xbab0('0x50')](_0x1f18da[_0xbab0('0x4d')],{'$or':_['map'](_0x1f18da['attributes'],function(_0xe70f22){var _0x2c5927={};_0x2c5927[_0xe70f22]={'$like':'%'+_0x83e4a7[_0xbab0('0x45')][_0xbab0('0x4f')]+'%'};return _0x2c5927;})});}_0x1f18da=_['merge']({},_0x1f18da,_0x83e4a7['options']);return db[_0xbab0('0x70')][_0xbab0('0x31')]({'where':_0x1f18da[_0xbab0('0x4d')]})[_0xbab0('0x23')](function(_0x42f214){_0x382488[_0xbab0('0x31')]=_0x42f214;if(_0x83e4a7[_0xbab0('0x45')][_0xbab0('0x52')]){_0x1f18da[_0xbab0('0x53')]=[{'all':!![]}];}return db['CannedAnswer'][_0xbab0('0x74')](_0x1f18da);})[_0xbab0('0x23')](function(_0x334b77){_0x382488[_0xbab0('0x54')]=_0x334b77;return _0x382488;});}})[_0xbab0('0x23')](respondWithFilteredResult(_0x9bc4a2,_0x1f18da))['catch'](handleError(_0x9bc4a2,null));};exports['removeAnswers']=function(_0x2122bc,_0x33b0ff,_0x557144){return db[_0xbab0('0x3f')][_0xbab0('0x5b')]({'where':{'id':_0x2122bc['params']['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x33b0ff,null))['then'](function(_0x1a5a7c){if(_0x1a5a7c){return _0x1a5a7c[_0xbab0('0x75')](_0x2122bc[_0xbab0('0x45')][_0xbab0('0x6e')]);}})[_0xbab0('0x23')](respondWithStatusCode(_0x33b0ff,null))[_0xbab0('0x55')](handleError(_0x33b0ff,null));};exports[_0xbab0('0x76')]=function(_0x24e8c9,_0x3dd0f4,_0x56bd10){return db[_0xbab0('0x77')][_0xbab0('0x5b')]({'where':{'id':_0x24e8c9['params']['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x3dd0f4,null))[_0xbab0('0x23')](function(_0xf3e69){if(_0xf3e69){return _0xf3e69['addInteraction'](_0x24e8c9[_0xbab0('0x5d')][_0xbab0('0x6e')],_['omit'](_0x24e8c9['body'],['ids','id'])||{});}})[_0xbab0('0x23')](respondWithResult(_0x3dd0f4,null))[_0xbab0('0x55')](handleError(_0x3dd0f4,null));};exports[_0xbab0('0x78')]=function(_0x12725d,_0x18f92a,_0x7b6d07){var _0x346ccf={'raw':![],'where':{}};var _0x58cbb4={};var _0x5379af={'count':0x0,'rows':[]};return db[_0xbab0('0x3f')][_0xbab0('0x72')]({'where':{'id':_0x12725d['params']['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x18f92a,null))[_0xbab0('0x23')](function(_0x10ceb5){if(_0x10ceb5){_0x58cbb4['model']=_[_0xbab0('0x44')](db[_0xbab0('0x77')]['rawAttributes']);_0x58cbb4[_0xbab0('0x45')]=_[_0xbab0('0x44')](_0x12725d[_0xbab0('0x45')]);_0x58cbb4[_0xbab0('0x6c')]=_[_0xbab0('0x46')](_0x58cbb4[_0xbab0('0x43')],_0x58cbb4[_0xbab0('0x45')]);_0x346ccf[_0xbab0('0x47')]=_[_0xbab0('0x46')](_0x58cbb4['model'],qs[_0xbab0('0x48')](_0x12725d['query'][_0xbab0('0x48')]));_0x346ccf[_0xbab0('0x47')]=_0x346ccf['attributes'][_0xbab0('0x59')]?_0x346ccf[_0xbab0('0x47')]:_0x58cbb4['model'];if(!_0x12725d[_0xbab0('0x45')][_0xbab0('0x49')](_0xbab0('0x73'))){_0x346ccf[_0xbab0('0x30')]=qs[_0xbab0('0x30')](_0x12725d[_0xbab0('0x45')][_0xbab0('0x30')]);_0x346ccf[_0xbab0('0x4a')]=qs[_0xbab0('0x4a')](_0x12725d[_0xbab0('0x45')][_0xbab0('0x4a')]);}_0x346ccf[_0xbab0('0x4b')]=qs[_0xbab0('0x4c')](_0x12725d['query'][_0xbab0('0x4c')]);_0x346ccf[_0xbab0('0x4d')]=qs[_0xbab0('0x6c')](_['pick'](_0x12725d[_0xbab0('0x45')],_0x58cbb4['filters']));_0x346ccf[_0xbab0('0x4d')][_0xbab0('0x69')]=_0x10ceb5['id'];if(_0x12725d[_0xbab0('0x45')]['filter']){_0x346ccf['where']=_[_0xbab0('0x50')](_0x346ccf[_0xbab0('0x4d')],{'$or':_[_0xbab0('0x3e')](_0x346ccf[_0xbab0('0x47')],function(_0x487643){var _0x1adb3c={};_0x1adb3c[_0x487643]={'$like':'%'+_0x12725d[_0xbab0('0x45')][_0xbab0('0x4f')]+'%'};return _0x1adb3c;})});}_0x346ccf=_[_0xbab0('0x50')]({},_0x346ccf,_0x12725d[_0xbab0('0x5a')]);return db[_0xbab0('0x77')][_0xbab0('0x31')]({'where':_0x346ccf[_0xbab0('0x4d')]})[_0xbab0('0x23')](function(_0x2255be){_0x5379af['count']=_0x2255be;if(_0x12725d[_0xbab0('0x45')][_0xbab0('0x52')]){_0x346ccf[_0xbab0('0x53')]=[{'model':db[_0xbab0('0x79')],'as':_0xbab0('0x7a'),'required':![]},{'model':db[_0xbab0('0x7b')],'as':_0xbab0('0x7c'),'attributes':[_0xbab0('0x3c'),_0xbab0('0x7d'),'internal'],'required':![]},{'model':db[_0xbab0('0x7e')],'as':_0xbab0('0x7f'),'attributes':['id','name','color'],'where':_0x12725d[_0xbab0('0x45')][_0xbab0('0x80')]?{'id':_0x12725d['query'][_0xbab0('0x80')]}:undefined,'required':_0x12725d['query'][_0xbab0('0x80')]?!![]:![]}];}return db['FaxInteraction'][_0xbab0('0x74')](_0x346ccf);})['then'](function(_0x3f141a){_0x5379af[_0xbab0('0x54')]=_0x3f141a;return _0x5379af;});}})[_0xbab0('0x23')](respondWithFilteredResult(_0x18f92a,_0x346ccf))[_0xbab0('0x55')](handleError(_0x18f92a,null));};exports[_0xbab0('0x81')]=function(_0x16c310,_0x3af3d5){var _0x34e505=_0x16c310['params']['id'];var _0x3c6d47=_0x16c310[_0xbab0('0x5d')];var _0x32d881=0xc8;var _0x4418aa=null;return db['sequelize'][_0xbab0('0x82')]({'isolationLevel':db[_0xbab0('0x83')][_0xbab0('0x84')]['ISOLATION_LEVELS'][_0xbab0('0x85')]},function(_0x57d9c6){return db['FaxAccount'][_0xbab0('0x72')]({'where':{'id':_0x34e505},'transaction':_0x57d9c6})[_0xbab0('0x23')](function(_0x2d21f9){if(_0x2d21f9){return db['FaxApplication'][_0xbab0('0x37')]({'where':{'FaxAccountId':_0x34e505},'transaction':_0x57d9c6})[_0xbab0('0x23')](function(){var _0x5dc9af=_['map'](_0x3c6d47,function(_0x87c255){_0x87c255[_0xbab0('0x69')]=_0x34e505;return _0x87c255;});return db['FaxApplication'][_0xbab0('0x86')](_0x5dc9af,{'transaction':_0x57d9c6});});}else{_0x32d881=0x194;_0x4418aa=[];}});})[_0xbab0('0x23')](function(){if(_0x32d881!==0x194){return db[_0xbab0('0x87')][_0xbab0('0x88')]({'where':{'FaxAccountId':_0x34e505},'order':_0xbab0('0x89')})[_0xbab0('0x23')](function(_0x367b68){_0x4418aa=_0x367b68;});}})[_0xbab0('0x55')](function(_0x27a341){_0x32d881=0x1f4;logger[_0xbab0('0x29')](_0x27a341[_0xbab0('0x3b')]);if(_0x27a341[_0xbab0('0x3c')]){delete _0x27a341['name'];}_0x4418aa=_0x27a341;})[_0xbab0('0x8a')](function(){if(_0x4418aa===null){_0x3af3d5[_0xbab0('0x3a')](_0x32d881);}else{if(_0x32d881===0x1f4){_0x3af3d5[_0xbab0('0x2d')](_0x32d881)[_0xbab0('0x3d')](_0x4418aa);}else{_0x3af3d5[_0xbab0('0x2d')](_0x32d881)['json'](_0x4418aa);}}});};exports['getApplications']=function(_0x34f331,_0x506e46,_0x10a14f){var _0x1027f7={};var _0x56fb2c={};var _0x17e7b3;var _0x4d7d73;return db['FaxAccount'][_0xbab0('0x72')]({'where':{'id':_0x34f331[_0xbab0('0x57')]['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x506e46,null))['then'](function(_0x43e8ba){if(_0x43e8ba){_0x17e7b3=_0x43e8ba;_0x56fb2c[_0xbab0('0x43')]=_['keys'](db['FaxApplication'][_0xbab0('0x58')]);_0x56fb2c[_0xbab0('0x45')]=_[_0xbab0('0x44')](_0x34f331[_0xbab0('0x45')]);_0x56fb2c[_0xbab0('0x6c')]=_[_0xbab0('0x46')](_0x56fb2c[_0xbab0('0x43')],_0x56fb2c[_0xbab0('0x45')]);_0x1027f7[_0xbab0('0x47')]=_[_0xbab0('0x46')](_0x56fb2c[_0xbab0('0x43')],qs['fields'](_0x34f331['query']['fields']));_0x1027f7[_0xbab0('0x47')]=_0x1027f7[_0xbab0('0x47')]['length']?_0x1027f7[_0xbab0('0x47')]:_0x56fb2c[_0xbab0('0x43')];_0x1027f7[_0xbab0('0x4b')]=qs['sort'](_0x34f331[_0xbab0('0x45')][_0xbab0('0x4c')]);_0x1027f7['where']=qs[_0xbab0('0x6c')](_[_0xbab0('0x4e')](_0x34f331['query'],_0x56fb2c[_0xbab0('0x6c')]));if(_0x34f331[_0xbab0('0x45')][_0xbab0('0x4f')]){_0x1027f7[_0xbab0('0x4d')]=_['merge'](_0x1027f7['where'],{'$or':_[_0xbab0('0x3e')](_0x1027f7[_0xbab0('0x47')],function(_0x1d7c83){var _0x5c80c9={};_0x5c80c9[_0x1d7c83]={'$like':'%'+_0x34f331[_0xbab0('0x45')][_0xbab0('0x4f')]+'%'};return _0x5c80c9;})});}_0x1027f7=_['merge']({},_0x1027f7,_0x34f331[_0xbab0('0x5a')]);return _0x17e7b3[_0xbab0('0x8b')](_0x1027f7);}})[_0xbab0('0x23')](function(_0x76b146){if(_0x76b146){_0x4d7d73=_0x76b146['length'];if(!_0x34f331[_0xbab0('0x45')][_0xbab0('0x49')](_0xbab0('0x73'))){_0x1027f7[_0xbab0('0x30')]=qs[_0xbab0('0x30')](_0x34f331['query'][_0xbab0('0x30')]);_0x1027f7[_0xbab0('0x4a')]=qs[_0xbab0('0x4a')](_0x34f331[_0xbab0('0x45')][_0xbab0('0x4a')]);}return _0x17e7b3[_0xbab0('0x8b')](_0x1027f7);}})['then'](function(_0x142d9b){if(_0x142d9b){return _0x142d9b?{'count':_0x4d7d73,'rows':_0x142d9b}:null;}})[_0xbab0('0x23')](respondWithResult(_0x506e46,null))['catch'](handleError(_0x506e46,null));};function Extension(_0x10400e,_0x2441da,_0x555c1d,_0x5a3d52){this[_0xbab0('0x8c')]=_0xbab0('0x8d');this[_0xbab0('0x8e')]=_0x10400e['localstationid'];this[_0xbab0('0x8f')]=_0x5a3d52;this[_0xbab0('0x41')]='system';this[_0xbab0('0x90')]=_0xbab0('0x91');this['FaxAccountId']=_0x10400e['id'];this[_0xbab0('0x89')]=_0x2441da;this['appdata']=_0x555c1d;}function createExtensionsReciveFax(_0x4d5834){var _0x273284=0x1;var _0x20c0c3=[];_0x20c0c3[_0xbab0('0x92')](new Extension(_0x4d5834,_0x273284,'',_0xbab0('0x93')));_0x273284+=0x1;_0x20c0c3[_0xbab0('0x92')](new Extension(_0x4d5834,_0x273284,_0xbab0('0x94'),_0xbab0('0x95')));_0x273284+=0x1;for(var _0x4a4c7a in _0x4d5834){if(_0x4d5834['hasOwnProperty'](_0x4a4c7a)&&(_0x4a4c7a==='ecm'||_0x4a4c7a===_0xbab0('0x96')||_0x4a4c7a===_0xbab0('0x97')||_0x4a4c7a===_0xbab0('0x98')||_0x4a4c7a==='headerinfo'||_0x4a4c7a==='maxrate'||_0x4a4c7a===_0xbab0('0x99')||_0x4a4c7a===_0xbab0('0x9a')||_0x4a4c7a===_0xbab0('0x9b'))){_0x20c0c3[_0xbab0('0x92')](new Extension(_0x4d5834,_0x273284,'FAXOPT('+_0x4a4c7a+')='+_0x4d5834[_0x4a4c7a],_0xbab0('0x95')));_0x273284+=0x1;}}_0x20c0c3[_0xbab0('0x92')](new Extension(_0x4d5834,_0x273284,'6','Wait'));_0x273284+=0x1;_0x20c0c3[_0xbab0('0x92')](new Extension(_0x4d5834,_0x273284,'/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',_0xbab0('0x9c')));_0x273284=0x0;return _0x20c0c3;}exports[_0xbab0('0x9d')]=function(_0x3c567f,_0x390934,_0x4a4d95){var _0x362b45;return db['sequelize'][_0xbab0('0x82')](function(_0xc87c27){return db[_0xbab0('0x3f')][_0xbab0('0x5c')](_0x3c567f[_0xbab0('0x5d')],{'transaction':_0xc87c27})[_0xbab0('0x23')](function(_0x4cddc3){_0x362b45=_0x4cddc3['get']({'plain':!![]});return db[_0xbab0('0x9e')]['bulkCreate'](createExtensionsReciveFax(_0x362b45),{'transaction':_0xc87c27});});})[_0xbab0('0x23')](function(){return _0x362b45;})[_0xbab0('0x23')](respondWithResult(_0x390934,null))['catch'](handleError(_0x390934,null));};exports['updateAccountApplications']=function(_0x56320e,_0x1d87e8,_0x55590f){var _0xcdb889;return db[_0xbab0('0x83')][_0xbab0('0x82')](function(_0x47b6fc){return db[_0xbab0('0x3f')][_0xbab0('0x66')](_0x56320e[_0xbab0('0x5d')],{'where':{'id':_0x56320e['body']['id']},'transaction':_0x47b6fc})[_0xbab0('0x23')](function(_0x3e34a4){return db[_0xbab0('0x9e')][_0xbab0('0x37')]({'where':{'FaxAccountId':_0x56320e[_0xbab0('0x5d')]['id']},'transaction':_0x47b6fc})[_0xbab0('0x23')](function(_0x38e052){return db[_0xbab0('0x9e')][_0xbab0('0x86')](createExtensionsReciveFax(_[_0xbab0('0x9f')](_0x56320e[_0xbab0('0x5d')],[_0xbab0('0xa0'),_0xbab0('0x42'),'createdAt',_0xbab0('0xa1'),_0xbab0('0xa2'),'ListId'])),{'transaction':_0x47b6fc});});});})[_0xbab0('0x23')](function(){return db[_0xbab0('0x3f')][_0xbab0('0xa3')](_0x56320e['body']['id']);})[_0xbab0('0x23')](respondWithResult(_0x1d87e8,null))['catch'](handleError(_0x1d87e8,null));};exports[_0xbab0('0xa4')]=function(_0x194a10,_0x27d861,_0x473333){var _0x61f8d0={'raw':!![],'where':{}};var _0x46cc72={};var _0x5aa510={'count':0x0,'rows':[]};return db['FaxAccount'][_0xbab0('0x72')]({'where':{'id':_0x194a10[_0xbab0('0x57')]['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x27d861,null))[_0xbab0('0x23')](function(_0x31c803){if(_0x31c803){_0x46cc72[_0xbab0('0x43')]=_[_0xbab0('0x44')](db['FaxMessage'][_0xbab0('0x58')]);_0x46cc72['query']=_[_0xbab0('0x44')](_0x194a10[_0xbab0('0x45')]);_0x46cc72[_0xbab0('0x6c')]=_['intersection'](_0x46cc72[_0xbab0('0x43')],_0x46cc72[_0xbab0('0x45')]);_0x61f8d0['attributes']=_['intersection'](_0x46cc72[_0xbab0('0x43')],qs[_0xbab0('0x48')](_0x194a10['query'][_0xbab0('0x48')]));_0x61f8d0['attributes']=_0x61f8d0[_0xbab0('0x47')][_0xbab0('0x59')]?_0x61f8d0[_0xbab0('0x47')]:_0x46cc72['model'];if(!_0x194a10['query'][_0xbab0('0x49')](_0xbab0('0x73'))){_0x61f8d0[_0xbab0('0x30')]=qs[_0xbab0('0x30')](_0x194a10['query']['limit']);_0x61f8d0[_0xbab0('0x4a')]=qs[_0xbab0('0x4a')](_0x194a10[_0xbab0('0x45')][_0xbab0('0x4a')]);}_0x61f8d0[_0xbab0('0x4b')]=qs[_0xbab0('0x4c')](_0x194a10[_0xbab0('0x45')][_0xbab0('0x4c')]);_0x61f8d0[_0xbab0('0x4d')]=qs['filters'](_[_0xbab0('0x4e')](_0x194a10[_0xbab0('0x45')],_0x46cc72[_0xbab0('0x6c')]));_0x61f8d0[_0xbab0('0x4d')][_0xbab0('0x69')]=_0x31c803['id'];if(_0x194a10[_0xbab0('0x45')][_0xbab0('0x4f')]){_0x61f8d0[_0xbab0('0x4d')]=_[_0xbab0('0x50')](_0x61f8d0['where'],{'$or':_[_0xbab0('0x3e')](_0x61f8d0[_0xbab0('0x47')],function(_0x42688e){var _0x42082c={};_0x42082c[_0x42688e]={'$like':'%'+_0x194a10[_0xbab0('0x45')]['filter']+'%'};return _0x42082c;})});}if(_0x194a10['query']['$gte']){var _0x434894=_0x194a10[_0xbab0('0x45')][_0xbab0('0xa5')][_0xbab0('0xa6')](',');var _0x54251a={};_0x54251a[_0x434894[0x0]]={'$gte':moment(_0x434894[0x1])[_0xbab0('0xa7')]('YYYY-MM-DD\x20HH:mm:ss')};_0x61f8d0[_0xbab0('0x4d')]=_[_0xbab0('0x50')](_0x61f8d0['where'],_0x54251a);}_0x61f8d0=_[_0xbab0('0x50')]({},_0x61f8d0,_0x194a10[_0xbab0('0x5a')]);return db[_0xbab0('0xa8')][_0xbab0('0x31')]({'where':_0x61f8d0[_0xbab0('0x4d')]})['then'](function(_0x2e9c9c){_0x5aa510[_0xbab0('0x31')]=_0x2e9c9c;if(_0x194a10[_0xbab0('0x45')]['includeAll']){_0x61f8d0[_0xbab0('0x53')]=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x61f8d0);})[_0xbab0('0x23')](function(_0x541c5d){_0x5aa510['rows']=_0x541c5d;return _0x5aa510;});}})[_0xbab0('0x23')](respondWithFilteredResult(_0x27d861,_0x61f8d0))[_0xbab0('0x55')](handleError(_0x27d861,null));};exports['send']=function(_0x182023,_0x250a99,_0x2c38aa){var _0x5e88a5,_0x3c342d={},_0x318102;if(_0x182023['body']['to']){_0x318102=_0x182023[_0xbab0('0x5d')]['to'][0x0];}return db[_0xbab0('0x3f')][_0xbab0('0x5b')]({'where':{'id':_0x182023[_0xbab0('0x57')]['id']},'include':[{'model':db[_0xbab0('0xa9')],'as':_0xbab0('0xaa'),'include':[{'model':db['CmContact'],'as':_0xbab0('0xab'),'where':{'fax':_0x318102},'limit':0x1,'order':[[_0xbab0('0xa1'),_0xbab0('0xac')]]}]}]})[_0xbab0('0x23')](handleEntityNotFound(_0x250a99,null))['then'](function(_0x29f90c){_0x5e88a5=_0x29f90c;if(_0x182023['body'][_0xbab0('0xad')]&&_0x182023[_0xbab0('0x5d')]['attachments'][_0xbab0('0x59')]){for(var _0x36be49=0x0;_0x36be49<_0x182023[_0xbab0('0x5d')]['attachments'][_0xbab0('0x59')];_0x36be49+=0x1){_0x182023[_0xbab0('0x5d')]['attachments'][_0x36be49]={'filename':_0x182023[_0xbab0('0x5d')]['attachments'][_0x36be49]['name'],'id':_0x182023['body'][_0xbab0('0xad')][_0x36be49]['id'],'path':path[_0xbab0('0xae')](config['root'],_0xbab0('0xaf'),_0x182023[_0xbab0('0x5d')][_0xbab0('0xad')][_0x36be49][_0xbab0('0xb0')])};}}return respondWithRpcPromise(_0xbab0('0xb1'),_0xbab0('0xb1'),{'FaxAccountId':_['isNil'](_0x182023[_0xbab0('0x57')]['id'])?undefined:_0x182023[_0xbab0('0x57')]['id'],'path':_[_0xbab0('0xb2')](_0x182023['body'][_0xbab0('0xad')][0x0][_0xbab0('0x8')])?undefined:_0x182023['body']['attachments'][0x0][_0xbab0('0x8')],'fax':_[_0xbab0('0xb2')](_0x182023[_0xbab0('0x5d')]['to'][0x0])?undefined:_0x182023[_0xbab0('0x5d')]['to'][0x0]},client9002);})['then'](function(){if(_0x5e88a5){if(_[_0xbab0('0xb2')](_0x182023[_0xbab0('0x5d')][_0xbab0('0xb3')])){_0x182023[_0xbab0('0x5d')][_0xbab0('0xb3')]=util[_0xbab0('0xa7')](_0xbab0('0xb4'),_0x5e88a5['name'],_0x5e88a5[_0xbab0('0xb5')]);}if(_0x5e88a5[_0xbab0('0xaa')]){if(_0x5e88a5[_0xbab0('0xaa')][_0xbab0('0xab')][_0xbab0('0x59')]){return _0x5e88a5['List'][_0xbab0('0xab')][0x0];}else{return db[_0xbab0('0x79')][_0xbab0('0x5c')](_[_0xbab0('0x1a')](_0x182023[_0xbab0('0x5d')],{'firstName':_0x182023[_0xbab0('0x5d')]['to'][0x0],'phone':_0x182023[_0xbab0('0x5d')]['to'][0x0],'fax':_0x182023[_0xbab0('0x5d')]['to'][0x0],'ListId':_0x5e88a5['ListId']}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error(_0xbab0('0xb6'));}})[_0xbab0('0x23')](function(_0xf5a0b4){if(_0xf5a0b4){return db[_0xbab0('0x77')]['find']({'where':{'ContactId':_0xf5a0b4['id'],'closed':![],'FaxAccountId':_0x5e88a5['id']}})[_0xbab0('0x23')](function(_0x49d255){if(_0x49d255){return[_0x49d255,![]];}return db['FaxInteraction']['create']({'UserId':_0x182023[_0xbab0('0x5e')]['id'],'ContactId':_0xf5a0b4['id'],'FaxAccountId':_0x5e88a5['id'],'fax':_0x182023[_0xbab0('0x5d')]['to'][0x0],'firstMsgDirection':'out','Messages':[_['merge'](_0x182023[_0xbab0('0x5d')],{'read':![],'body':_0x182023[_0xbab0('0x5d')][_0xbab0('0xad')][0x0]['filename'],'FaxAccountId':_0x5e88a5['id'],'UserId':_0x182023[_0xbab0('0x5e')]['id'],'ContactId':_0xf5a0b4['id'],'AttachmentId':_0x182023['body'][_0xbab0('0xad')][0x0]['id']})]},{'include':[{'model':db[_0xbab0('0xa8')],'as':_0xbab0('0xb7')}]})[_0xbab0('0x23')](function(_0x16b147){return[_0x16b147,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xbab0('0xb8')](function(_0x1da6f8,_0x38937f){if(_0x38937f){return _0x1da6f8;}return db['FaxMessage']['create']({'direction':_0xbab0('0xb9'),'read':![],'body':_0x182023[_0xbab0('0x5d')][_0xbab0('0xad')][0x0][_0xbab0('0xba')],'FaxAccountId':_0x5e88a5['id'],'FaxInteractionId':_0x1da6f8['id'],'UserId':_0x182023[_0xbab0('0x5e')]['id'],'ContactId':_0x1da6f8[_0xbab0('0xbb')],'AttachmentId':_0x182023[_0xbab0('0x5d')]['attachments'][0x0]['id']})[_0xbab0('0x23')](function(_0x504ffd){_0x1da6f8[_0xbab0('0xbc')][_0xbab0('0xb7')]=[];_0x1da6f8[_0xbab0('0xbc')]['Messages']['push'](_0x504ffd[_0xbab0('0xbc')]);return _0x1da6f8;});})[_0xbab0('0x23')](function(_0x212b05){respondWithRpcPromise(_0xbab0('0xbd'),_0xbab0('0xbd'),{'FaxAccountId':_[_0xbab0('0xb2')](_0x182023['params']['id'])?undefined:_0x182023[_0xbab0('0x57')]['id'],'path':_['isNil'](_0x182023['body']['attachments'][0x0][_0xbab0('0x8')])?undefined:_0x182023[_0xbab0('0x5d')]['attachments'][0x0][_0xbab0('0x8')],'fax':_[_0xbab0('0xb2')](_0x182023[_0xbab0('0x5d')]['to'][0x0])?undefined:_0x182023[_0xbab0('0x5d')]['to'][0x0],'AttachmentId':_0x182023['body']['attachments'][0x0]['id']},client9002)['then'](function(_0x35a393){logger[_0xbab0('0x2b')](_0xbab0('0xbe'),_0x35a393);})[_0xbab0('0x55')](function(_0x4bb92b){logger['info'](_0xbab0('0xbe'),_0x4bb92b);});return _0x212b05;})[_0xbab0('0x23')](respondWithResult(_0x250a99,null))[_0xbab0('0x55')](handleError(_0x250a99,null));};exports['addAgents']=function(_0x46fcc0,_0x21c9f6,_0x1648c7){return db[_0xbab0('0x3f')][_0xbab0('0x5b')]({'where':{'id':_0x46fcc0[_0xbab0('0x57')]['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x21c9f6,null))[_0xbab0('0x23')](function(_0x4a41b6){if(_0x4a41b6){return _0x4a41b6[_0xbab0('0xbf')](_0x46fcc0[_0xbab0('0x5d')][_0xbab0('0x6e')],_[_0xbab0('0x9f')](_0x46fcc0['body'],[_0xbab0('0x6e'),'id'])||{})[_0xbab0('0xb8')](function(_0x14b45c){for(var _0x9c8fb4=0x0;_0x9c8fb4<_0x46fcc0['body'][_0xbab0('0x6e')]['length'];_0x9c8fb4+=0x1){socket['emit'](_0xbab0('0xc0'),{'UserId':Number(_0x46fcc0[_0xbab0('0x5d')][_0xbab0('0x6e')][_0x9c8fb4]),'FaxAccountId':Number(_0x46fcc0['params']['id'])});}return _0x14b45c;});}})[_0xbab0('0x23')](respondWithResult(_0x21c9f6,null))[_0xbab0('0x55')](handleError(_0x21c9f6,null));};exports[_0xbab0('0xc1')]=function(_0x205c3d,_0x4918a9,_0x5d954b){return db['FaxAccount']['find']({'where':{'id':_0x205c3d['params']['id']}})[_0xbab0('0x23')](handleEntityNotFound(_0x4918a9,null))[_0xbab0('0x23')](function(_0xe56181){if(_0xe56181){return _0xe56181[_0xbab0('0xc1')](_0x205c3d[_0xbab0('0x45')][_0xbab0('0x6e')])['then'](function(){if(_[_0xbab0('0xc2')](_0x205c3d[_0xbab0('0x45')]['ids'])){for(var _0xc8f37a=0x0;_0xc8f37a<_0x205c3d[_0xbab0('0x45')][_0xbab0('0x6e')][_0xbab0('0x59')];_0xc8f37a+=0x1){socket[_0xbab0('0xc3')](_0xbab0('0xc4'),{'UserId':Number(_0x205c3d['query'][_0xbab0('0x6e')][_0xc8f37a]),'FaxAccountId':Number(_0x205c3d[_0xbab0('0x57')]['id'])});}}else{socket[_0xbab0('0xc3')](_0xbab0('0xc4'),{'UserId':Number(_0x205c3d['query'][_0xbab0('0x6e')]),'FaxAccountId':Number(_0x205c3d[_0xbab0('0x57')]['id'])});}});}})[_0xbab0('0x23')](respondWithStatusCode(_0x4918a9,null))[_0xbab0('0x55')](handleError(_0x4918a9,null));};exports['getAgents']=function(_0x41e722,_0x48ad11,_0x33099b){var _0x2d7332={};var _0x8fe6c8={};var _0x27ed2b;var _0x26b931;return db[_0xbab0('0x3f')]['findOne']({'where':{'id':_0x41e722['params']['id']}})['then'](handleEntityNotFound(_0x48ad11,null))[_0xbab0('0x23')](function(_0x1ae6c1){if(_0x1ae6c1){_0x27ed2b=_0x1ae6c1;_0x8fe6c8['model']=_[_0xbab0('0x44')](db['User'][_0xbab0('0x58')]);_0x8fe6c8['query']=_[_0xbab0('0x44')](_0x41e722['query']);_0x8fe6c8['filters']=_[_0xbab0('0x46')](_0x8fe6c8[_0xbab0('0x43')],_0x8fe6c8[_0xbab0('0x45')]);_0x2d7332[_0xbab0('0x47')]=_[_0xbab0('0x46')](_0x8fe6c8[_0xbab0('0x43')],qs['fields'](_0x41e722[_0xbab0('0x45')][_0xbab0('0x48')]));_0x2d7332[_0xbab0('0x47')]=_0x2d7332['attributes']['length']?_0x2d7332[_0xbab0('0x47')]:_0x8fe6c8['model'];_0x2d7332[_0xbab0('0x4b')]=qs[_0xbab0('0x4c')](_0x41e722[_0xbab0('0x45')][_0xbab0('0x4c')]);_0x2d7332[_0xbab0('0x4d')]=qs[_0xbab0('0x6c')](_[_0xbab0('0x4e')](_0x41e722[_0xbab0('0x45')],_0x8fe6c8[_0xbab0('0x6c')]));if(_0x41e722['query'][_0xbab0('0x4f')]){_0x2d7332[_0xbab0('0x4d')]=_[_0xbab0('0x50')](_0x2d7332['where'],{'$or':_[_0xbab0('0x3e')](_0x2d7332['attributes'],function(_0x40ba79){var _0x160c79={};_0x160c79[_0x40ba79]={'$like':'%'+_0x41e722['query'][_0xbab0('0x4f')]+'%'};return _0x160c79;})});}_0x2d7332=_[_0xbab0('0x50')]({},_0x2d7332,_0x41e722[_0xbab0('0x5a')]);return _0x27ed2b['getAgents'](_0x2d7332);}})[_0xbab0('0x23')](function(_0x4ef958){if(_0x4ef958){_0x26b931=_0x4ef958[_0xbab0('0x59')];if(!_0x41e722[_0xbab0('0x45')][_0xbab0('0x49')]('nolimit')){_0x2d7332[_0xbab0('0x30')]=qs[_0xbab0('0x30')](_0x41e722[_0xbab0('0x45')][_0xbab0('0x30')]);_0x2d7332['offset']=qs[_0xbab0('0x4a')](_0x41e722['query']['offset']);}return _0x27ed2b[_0xbab0('0xc5')](_0x2d7332);}})['then'](function(_0x40b31a){if(_0x40b31a){return _0x40b31a?{'count':_0x26b931,'rows':_0x40b31a}:null;}})[_0xbab0('0x23')](respondWithResult(_0x48ad11,null))[_0xbab0('0x55')](handleError(_0x48ad11,null));};
\ No newline at end of file
+var _0xd20f=['updateAccountApplications','tech','createdAt','TrunkId','ListId','findById','getMessages','FaxMessage','$gte','split','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','updatedAt','DESC','attachments','join','root','server/files/attachments','CheckAfterSend','isNil','from','format','\x22%s\x22\x20<%s>','defaults','out','filename','Messages','Contact\x20not\x20found','spread','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','userFaxAccount:remove','getAgents','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','./faxAccount.socket','register','jayson/promise','http','client','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','mandatoryDispositionPause','map','FaxAccount','rawAttributes','fieldName','type','key','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','options','includeAll','include','findAll','rows','params','Pause','keys','intersection','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','FaxAccounts','UserProfileSection','find','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','FaxAccountId','Disposition','filter','removeDispositions','CannedAnswer','getAnswers','findOne','removeAnswers','ids','addInteraction','omit','getInteractions','FaxInteraction','CmContact','Contact','User','Owner','internal','Tag','color','tag','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','context','from-voip-provider','exten','localstationid','app','system','description','Fax\x20Extension','appdata','push','Set','ecm','faxdetect','headerinfo','maxrate','minrate','t38timeout','Wait','addAccountApplications','VoiceExtension'];(function(_0x872b02,_0x4f4458){var _0x1a6b24=function(_0x1dfb4e){while(--_0x1dfb4e){_0x872b02['push'](_0x872b02['shift']());}};_0x1a6b24(++_0x4f4458);}(_0xd20f,0xee));var _0xfd20=function(_0x3809ca,_0x4ce023){_0x3809ca=_0x3809ca-0x0;var _0x4e85e2=_0xd20f[_0x3809ca];return _0x4e85e2;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xfd20('0x0'));var jsonpatch=require(_0xfd20('0x1'));var rp=require('request-promise');var moment=require(_0xfd20('0x2'));var BPromise=require(_0xfd20('0x3'));var Mustache=require(_0xfd20('0x4'));var util=require(_0xfd20('0x5'));var path=require(_0xfd20('0x6'));var sox=require('sox');var csv=require(_0xfd20('0x7'));var ejs=require(_0xfd20('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfd20('0x9'));var squel=require(_0xfd20('0xa'));var crypto=require(_0xfd20('0xb'));var jsforce=require(_0xfd20('0xc'));var deskjs=require(_0xfd20('0xd'));var toCsv=require(_0xfd20('0x7'));var querystring=require(_0xfd20('0xe'));var Papa=require(_0xfd20('0xf'));var Redis=require(_0xfd20('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xfd20('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfd20('0x12'));var logger=require(_0xfd20('0x13'))(_0xfd20('0x14'));var utils=require(_0xfd20('0x15'));var config=require(_0xfd20('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xfd20('0x17'))['db'];config[_0xfd20('0x18')]=_['defaults'](config[_0xfd20('0x18')],{'host':_0xfd20('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfd20('0x18')]));require(_0xfd20('0x1a'))[_0xfd20('0x1b')](socket);var jayson=require(_0xfd20('0x1c'));var client=jayson['client'][_0xfd20('0x1d')]({'port':0x232c});var client9002=jayson[_0xfd20('0x1e')][_0xfd20('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x454971,_0x1bd291,_0x347597,_0x57d1cb){return new BPromise(function(_0x342987,_0x3a2771){var _0x417b6d=_0x57d1cb||client;return _0x417b6d[_0xfd20('0x1f')](_0x454971,_0x347597)[_0xfd20('0x20')](function(_0x5831e2){logger[_0xfd20('0x21')](_0xfd20('0x22'),_0x1bd291,_0xfd20('0x23'));logger[_0xfd20('0x24')](_0xfd20('0x25'),_0x1bd291,_0xfd20('0x23'),JSON[_0xfd20('0x26')](_0x5831e2));if(_0x5831e2[_0xfd20('0x27')]){if(_0x5831e2[_0xfd20('0x27')]['code']===0x1f4){logger[_0xfd20('0x27')](_0xfd20('0x22'),_0x1bd291,_0x5831e2['error']['message']);return _0x3a2771(_0x5831e2[_0xfd20('0x27')][_0xfd20('0x28')]);}logger[_0xfd20('0x27')](_0xfd20('0x22'),_0x1bd291,_0x5831e2['error']['message']);return _0x342987(_0x5831e2[_0xfd20('0x27')][_0xfd20('0x28')]);}else{logger[_0xfd20('0x21')](_0xfd20('0x22'),_0x1bd291,_0xfd20('0x23'));_0x342987(_0x5831e2['result'][_0xfd20('0x28')]);}})[_0xfd20('0x29')](function(_0x43794a){logger[_0xfd20('0x27')](_0xfd20('0x22'),_0x1bd291,_0x43794a);_0x3a2771(_0x43794a);});});}function respondWithStatusCode(_0x37871f,_0x820714){_0x820714=_0x820714||0xcc;return function(_0xb19cee){if(_0xb19cee){return _0x37871f[_0xfd20('0x2a')](_0x820714);}return _0x37871f[_0xfd20('0x2b')](_0x820714)[_0xfd20('0x2c')]();};}function respondWithResult(_0x1f4722,_0x1452b0){_0x1452b0=_0x1452b0||0xc8;return function(_0x4fcf36){if(_0x4fcf36){return _0x1f4722[_0xfd20('0x2b')](_0x1452b0)[_0xfd20('0x2d')](_0x4fcf36);}};}function respondWithFilteredResult(_0x31aee2,_0x9e68d3){return function(_0x3c3b4a){if(_0x3c3b4a){var _0x193c0c=typeof _0x9e68d3['offset']===_0xfd20('0x2e')&&typeof _0x9e68d3[_0xfd20('0x2f')]===_0xfd20('0x2e');var _0x553bba=_0x3c3b4a[_0xfd20('0x30')];var _0x3f8013=_0x193c0c?0x0:_0x9e68d3['offset'];var _0x344d42=_0x193c0c?_0x3c3b4a[_0xfd20('0x30')]:_0x9e68d3[_0xfd20('0x31')]+_0x9e68d3[_0xfd20('0x2f')];var _0x3f9ab4;if(_0x344d42>=_0x553bba){_0x344d42=_0x553bba;_0x3f9ab4=0xc8;}else{_0x3f9ab4=0xce;}_0x31aee2[_0xfd20('0x2b')](_0x3f9ab4);return _0x31aee2[_0xfd20('0x32')](_0xfd20('0x33'),_0x3f8013+'-'+_0x344d42+'/'+_0x553bba)[_0xfd20('0x2d')](_0x3c3b4a);}return null;};}function patchUpdates(_0x2925a0){return function(_0x3d1eee){try{jsonpatch[_0xfd20('0x34')](_0x3d1eee,_0x2925a0,!![]);}catch(_0x44f321){return BPromise[_0xfd20('0x35')](_0x44f321);}return _0x3d1eee[_0xfd20('0x36')]();};}function saveUpdates(_0x2e2d0f,_0x53ff6b){return function(_0x362f24){if(_0x362f24){return _0x362f24[_0xfd20('0x37')](_0x2e2d0f)[_0xfd20('0x20')](function(_0x51029e){return _0x51029e;});}return null;};}function removeEntity(_0x153d90,_0x308368){return function(_0x462d5f){if(_0x462d5f){return _0x462d5f[_0xfd20('0x38')]()[_0xfd20('0x20')](function(){var _0x752e1f=_0x462d5f['get']({'plain':!![]});var _0x4b7984='FaxAccounts';return db['UserProfileResource']['destroy']({'where':{'type':_0x4b7984,'resourceId':_0x752e1f['id']}})[_0xfd20('0x20')](function(){return _0x462d5f;});})[_0xfd20('0x20')](function(){_0x153d90['status'](0xcc)[_0xfd20('0x2c')]();});}};}function handleEntityNotFound(_0x614fe6,_0x3bdd4e){return function(_0x2e04e1){if(!_0x2e04e1){_0x614fe6[_0xfd20('0x2a')](0x194);}return _0x2e04e1;};}function handleError(_0x56b582,_0x1be250){_0x1be250=_0x1be250||0x1f4;return function(_0x3a086d){logger['error'](_0x3a086d[_0xfd20('0x39')]);if(_0x3a086d[_0xfd20('0x3a')]){delete _0x3a086d[_0xfd20('0x3a')];}_0x56b582['status'](_0x1be250)[_0xfd20('0x3b')](_0x3a086d);};}exports['index']=function(_0x508c02,_0x532524){var _0x22cfa6={'include':[{'model':db['Pause'],'as':_0xfd20('0x3c')}]},_0x13e46f={},_0x29b13c={'count':0x0,'rows':[]};var _0x5eece5=_[_0xfd20('0x3d')](db[_0xfd20('0x3e')][_0xfd20('0x3f')],function(_0x45b004){return{'name':_0x45b004[_0xfd20('0x40')],'type':_0x45b004[_0xfd20('0x41')][_0xfd20('0x42')]};});_0x13e46f[_0xfd20('0x43')]=_[_0xfd20('0x3d')](_0x5eece5,_0xfd20('0x3a'));_0x13e46f['query']=_['keys'](_0x508c02[_0xfd20('0x44')]);_0x13e46f[_0xfd20('0x45')]=_['intersection'](_0x13e46f[_0xfd20('0x43')],_0x13e46f[_0xfd20('0x44')]);_0x22cfa6[_0xfd20('0x46')]=_['intersection'](_0x13e46f[_0xfd20('0x43')],qs[_0xfd20('0x47')](_0x508c02['query']['fields']));_0x22cfa6[_0xfd20('0x46')]=_0x22cfa6[_0xfd20('0x46')][_0xfd20('0x48')]?_0x22cfa6[_0xfd20('0x46')]:_0x13e46f['model'];if(!_0x508c02['query'][_0xfd20('0x49')](_0xfd20('0x4a'))){_0x22cfa6['limit']=qs['limit'](_0x508c02[_0xfd20('0x44')][_0xfd20('0x2f')]);_0x22cfa6[_0xfd20('0x31')]=qs[_0xfd20('0x31')](_0x508c02['query'][_0xfd20('0x31')]);}_0x22cfa6[_0xfd20('0x4b')]=qs[_0xfd20('0x4c')](_0x508c02[_0xfd20('0x44')][_0xfd20('0x4c')]);_0x22cfa6['where']=qs[_0xfd20('0x45')](_[_0xfd20('0x4d')](_0x508c02[_0xfd20('0x44')],_0x13e46f[_0xfd20('0x45')]),_0x5eece5);if(_0x508c02[_0xfd20('0x44')]['filter']){_0x22cfa6[_0xfd20('0x4e')]=_['merge'](_0x22cfa6[_0xfd20('0x4e')],{'$or':_[_0xfd20('0x3d')](_0x5eece5,function(_0x5e5856){if(_0x5e5856[_0xfd20('0x41')]!=='VIRTUAL'){var _0xb511a8={};_0xb511a8[_0x5e5856['name']]={'$like':'%'+_0x508c02[_0xfd20('0x44')]['filter']+'%'};return _0xb511a8;}})});}_0x22cfa6=_[_0xfd20('0x4f')]({},_0x22cfa6,_0x508c02[_0xfd20('0x50')]);var _0x1618f0={'where':_0x22cfa6[_0xfd20('0x4e')]};return db[_0xfd20('0x3e')]['count'](_0x1618f0)[_0xfd20('0x20')](function(_0x18131e){_0x29b13c[_0xfd20('0x30')]=_0x18131e;if(_0x508c02[_0xfd20('0x44')][_0xfd20('0x51')]){_0x22cfa6[_0xfd20('0x52')]=[{'all':!![]}];}return db[_0xfd20('0x3e')][_0xfd20('0x53')](_0x22cfa6);})[_0xfd20('0x20')](function(_0x1dcfa0){_0x29b13c[_0xfd20('0x54')]=_0x1dcfa0;return _0x29b13c;})['then'](respondWithFilteredResult(_0x532524,_0x22cfa6))[_0xfd20('0x29')](handleError(_0x532524,null));};exports['show']=function(_0x266c23,_0x3f6d89){var _0x5bb871={'raw':![],'where':{'id':_0x266c23[_0xfd20('0x55')]['id']},'include':[{'model':db[_0xfd20('0x56')],'as':_0xfd20('0x3c')}]},_0x46e39d={};_0x46e39d[_0xfd20('0x43')]=_[_0xfd20('0x57')](db[_0xfd20('0x3e')]['rawAttributes']);_0x46e39d[_0xfd20('0x44')]=_['keys'](_0x266c23[_0xfd20('0x44')]);_0x46e39d[_0xfd20('0x45')]=_[_0xfd20('0x58')](_0x46e39d[_0xfd20('0x43')],_0x46e39d[_0xfd20('0x44')]);_0x5bb871['attributes']=_['intersection'](_0x46e39d[_0xfd20('0x43')],qs[_0xfd20('0x47')](_0x266c23[_0xfd20('0x44')]['fields']));_0x5bb871[_0xfd20('0x46')]=_0x5bb871[_0xfd20('0x46')][_0xfd20('0x48')]?_0x5bb871['attributes']:_0x46e39d[_0xfd20('0x43')];if(_0x266c23[_0xfd20('0x44')][_0xfd20('0x51')]){_0x5bb871['include']=[{'all':!![]}];}_0x5bb871=_[_0xfd20('0x4f')]({},_0x5bb871,_0x266c23[_0xfd20('0x50')]);return db[_0xfd20('0x3e')]['find'](_0x5bb871)['then'](handleEntityNotFound(_0x3f6d89,null))['then'](respondWithResult(_0x3f6d89,null))[_0xfd20('0x29')](handleError(_0x3f6d89,null));};exports['create']=function(_0x201eea,_0x2267b9){return db[_0xfd20('0x3e')][_0xfd20('0x59')](_0x201eea[_0xfd20('0x5a')],{})['then'](function(_0x12aecd){var _0x25bb50=_0x201eea[_0xfd20('0x5b')][_0xfd20('0x5c')]({'plain':!![]});if(!_0x25bb50)throw new Error(_0xfd20('0x5d'));if(_0x25bb50[_0xfd20('0x5e')]===_0xfd20('0x5b')){var _0xb2fe26=_0x12aecd[_0xfd20('0x5c')]({'plain':!![]});var _0x20c332=_0xfd20('0x5f');return db[_0xfd20('0x60')][_0xfd20('0x61')]({'where':{'name':_0x20c332,'userProfileId':_0x25bb50[_0xfd20('0x62')]},'raw':!![]})['then'](function(_0x39e17c){if(_0x39e17c&&_0x39e17c['autoAssociation']===0x0){return db[_0xfd20('0x63')][_0xfd20('0x59')]({'name':_0xb2fe26['name'],'resourceId':_0xb2fe26['id'],'type':_0x39e17c['name'],'sectionId':_0x39e17c['id']},{})['then'](function(){return _0x12aecd;});}else{return _0x12aecd;}})[_0xfd20('0x29')](function(_0x3317ec){logger['error'](_0xfd20('0x64'),_0x3317ec);throw _0x3317ec;});}return _0x12aecd;})[_0xfd20('0x20')](respondWithResult(_0x2267b9,0xc9))['catch'](handleError(_0x2267b9,null));};exports[_0xfd20('0x37')]=function(_0x3d2099,_0x49271a){if(_0x3d2099[_0xfd20('0x5a')]['id']){delete _0x3d2099[_0xfd20('0x5a')]['id'];}return db[_0xfd20('0x3e')][_0xfd20('0x61')]({'where':{'id':_0x3d2099[_0xfd20('0x55')]['id']},'include':[{'model':db[_0xfd20('0x56')],'as':_0xfd20('0x3c')}]})[_0xfd20('0x20')](handleEntityNotFound(_0x49271a,null))['then'](saveUpdates(_0x3d2099[_0xfd20('0x5a')],null))[_0xfd20('0x20')](respondWithResult(_0x49271a,null))['catch'](handleError(_0x49271a,null));};exports['destroy']=function(_0x14318f,_0x5b6058){return db[_0xfd20('0x3e')]['find']({'where':{'id':_0x14318f[_0xfd20('0x55')]['id']}})[_0xfd20('0x20')](handleEntityNotFound(_0x5b6058,null))['then'](removeEntity(_0x5b6058,null))[_0xfd20('0x29')](handleError(_0x5b6058,null));};exports[_0xfd20('0x65')]=function(_0x1b93e1,_0xe40c53){return db[_0xfd20('0x3e')]['describe']()[_0xfd20('0x20')](respondWithResult(_0xe40c53,null))[_0xfd20('0x29')](handleError(_0xe40c53,null));};exports[_0xfd20('0x66')]=function(_0x575f80,_0x34269c,_0x42ea99){if(_0x575f80['body']['id']){delete _0x575f80['body']['id'];}return db['FaxAccount'][_0xfd20('0x61')]({'where':{'id':_0x575f80['params']['id']}})[_0xfd20('0x20')](handleEntityNotFound(_0x34269c,null))[_0xfd20('0x20')](function(_0x206fa2){if(_0x206fa2){_0x575f80[_0xfd20('0x5a')][_0xfd20('0x67')]=_0x206fa2['id'];return db[_0xfd20('0x68')][_0xfd20('0x59')](_0x575f80[_0xfd20('0x5a')]);}})[_0xfd20('0x20')](respondWithResult(_0x34269c,null))[_0xfd20('0x29')](handleError(_0x34269c,null));};exports['getDispositions']=function(_0x41b221,_0x138282,_0xbc16c6){var _0x2eec96={'raw':![],'where':{}};var _0x230792={};var _0x350b7c={'count':0x0,'rows':[]};return db[_0xfd20('0x3e')]['findOne']({'where':{'id':_0x41b221['params']['id']}})[_0xfd20('0x20')](handleEntityNotFound(_0x138282,null))[_0xfd20('0x20')](function(_0x2005bc){if(_0x2005bc){_0x230792[_0xfd20('0x43')]=_['keys'](db['Disposition'][_0xfd20('0x3f')]);_0x230792[_0xfd20('0x44')]=_[_0xfd20('0x57')](_0x41b221['query']);_0x230792['filters']=_[_0xfd20('0x58')](_0x230792['model'],_0x230792[_0xfd20('0x44')]);_0x2eec96[_0xfd20('0x46')]=_[_0xfd20('0x58')](_0x230792['model'],qs[_0xfd20('0x47')](_0x41b221['query'][_0xfd20('0x47')]));_0x2eec96[_0xfd20('0x46')]=_0x2eec96[_0xfd20('0x46')][_0xfd20('0x48')]?_0x2eec96[_0xfd20('0x46')]:_0x230792[_0xfd20('0x43')];if(!_0x41b221[_0xfd20('0x44')][_0xfd20('0x49')]('nolimit')){_0x2eec96[_0xfd20('0x2f')]=qs[_0xfd20('0x2f')](_0x41b221[_0xfd20('0x44')][_0xfd20('0x2f')]);_0x2eec96['offset']=qs[_0xfd20('0x31')](_0x41b221['query']['offset']);}_0x2eec96[_0xfd20('0x4b')]=qs[_0xfd20('0x4c')](_0x41b221[_0xfd20('0x44')]['sort']);_0x2eec96[_0xfd20('0x4e')]=qs[_0xfd20('0x45')](_['pick'](_0x41b221['query'],_0x230792[_0xfd20('0x45')]));_0x2eec96[_0xfd20('0x4e')][_0xfd20('0x67')]=_0x2005bc['id'];if(_0x41b221['query']['filter']){_0x2eec96[_0xfd20('0x4e')]=_[_0xfd20('0x4f')](_0x2eec96[_0xfd20('0x4e')],{'$or':_[_0xfd20('0x3d')](_0x2eec96[_0xfd20('0x46')],function(_0xefd3dd){var _0x511b72={};_0x511b72[_0xefd3dd]={'$like':'%'+_0x41b221[_0xfd20('0x44')][_0xfd20('0x69')]+'%'};return _0x511b72;})});}_0x2eec96=_[_0xfd20('0x4f')]({},_0x2eec96,_0x41b221[_0xfd20('0x50')]);return db[_0xfd20('0x68')][_0xfd20('0x30')]({'where':_0x2eec96[_0xfd20('0x4e')]})['then'](function(_0x5e8b65){_0x350b7c[_0xfd20('0x30')]=_0x5e8b65;if(_0x41b221[_0xfd20('0x44')]['includeAll']){_0x2eec96[_0xfd20('0x52')]=[{'all':!![]}];}return db[_0xfd20('0x68')][_0xfd20('0x53')](_0x2eec96);})[_0xfd20('0x20')](function(_0x21a954){_0x350b7c[_0xfd20('0x54')]=_0x21a954;return _0x350b7c;});}})['then'](respondWithFilteredResult(_0x138282,_0x2eec96))['catch'](handleError(_0x138282,null));};exports[_0xfd20('0x6a')]=function(_0x5d6c96,_0x962b0,_0x2e069d){return db[_0xfd20('0x3e')][_0xfd20('0x61')]({'where':{'id':_0x5d6c96['params']['id']}})[_0xfd20('0x20')](handleEntityNotFound(_0x962b0,null))['then'](function(_0x8ff53e){if(_0x8ff53e){return _0x8ff53e[_0xfd20('0x6a')](_0x5d6c96[_0xfd20('0x44')]['ids']);}})[_0xfd20('0x20')](respondWithStatusCode(_0x962b0,null))[_0xfd20('0x29')](handleError(_0x962b0,null));};exports['addAnswer']=function(_0x4b97f2,_0x5918c8,_0x2db346){if(_0x4b97f2[_0xfd20('0x5a')]['id']){delete _0x4b97f2['body']['id'];}return db[_0xfd20('0x3e')][_0xfd20('0x61')]({'where':{'id':_0x4b97f2[_0xfd20('0x55')]['id']}})['then'](handleEntityNotFound(_0x5918c8,null))[_0xfd20('0x20')](function(_0x4e163a){if(_0x4e163a){_0x4b97f2['body'][_0xfd20('0x67')]=_0x4e163a['id'];return db[_0xfd20('0x6b')]['create'](_0x4b97f2[_0xfd20('0x5a')]);}})['then'](respondWithResult(_0x5918c8,null))[_0xfd20('0x29')](handleError(_0x5918c8,null));};exports[_0xfd20('0x6c')]=function(_0x5c81b6,_0x527bd2,_0x1be6f7){var _0x1621e1={'raw':![],'where':{}};var _0x3ff6a6={};var _0x44b42b={'count':0x0,'rows':[]};return db[_0xfd20('0x3e')][_0xfd20('0x6d')]({'where':{'id':_0x5c81b6[_0xfd20('0x55')]['id']}})[_0xfd20('0x20')](handleEntityNotFound(_0x527bd2,null))[_0xfd20('0x20')](function(_0x2621ee){if(_0x2621ee){_0x3ff6a6[_0xfd20('0x43')]=_[_0xfd20('0x57')](db['CannedAnswer'][_0xfd20('0x3f')]);_0x3ff6a6[_0xfd20('0x44')]=_['keys'](_0x5c81b6[_0xfd20('0x44')]);_0x3ff6a6[_0xfd20('0x45')]=_[_0xfd20('0x58')](_0x3ff6a6[_0xfd20('0x43')],_0x3ff6a6['query']);_0x1621e1[_0xfd20('0x46')]=_[_0xfd20('0x58')](_0x3ff6a6[_0xfd20('0x43')],qs['fields'](_0x5c81b6['query'][_0xfd20('0x47')]));_0x1621e1[_0xfd20('0x46')]=_0x1621e1[_0xfd20('0x46')]['length']?_0x1621e1[_0xfd20('0x46')]:_0x3ff6a6[_0xfd20('0x43')];if(!_0x5c81b6[_0xfd20('0x44')][_0xfd20('0x49')](_0xfd20('0x4a'))){_0x1621e1[_0xfd20('0x2f')]=qs[_0xfd20('0x2f')](_0x5c81b6[_0xfd20('0x44')][_0xfd20('0x2f')]);_0x1621e1[_0xfd20('0x31')]=qs[_0xfd20('0x31')](_0x5c81b6[_0xfd20('0x44')][_0xfd20('0x31')]);}_0x1621e1['order']=qs['sort'](_0x5c81b6[_0xfd20('0x44')]['sort']);_0x1621e1[_0xfd20('0x4e')]=qs[_0xfd20('0x45')](_[_0xfd20('0x4d')](_0x5c81b6[_0xfd20('0x44')],_0x3ff6a6[_0xfd20('0x45')]));_0x1621e1[_0xfd20('0x4e')][_0xfd20('0x67')]=_0x2621ee['id'];if(_0x5c81b6[_0xfd20('0x44')][_0xfd20('0x69')]){_0x1621e1['where']=_[_0xfd20('0x4f')](_0x1621e1[_0xfd20('0x4e')],{'$or':_[_0xfd20('0x3d')](_0x1621e1[_0xfd20('0x46')],function(_0x1122b9){var _0x2dd7e6={};_0x2dd7e6[_0x1122b9]={'$like':'%'+_0x5c81b6[_0xfd20('0x44')]['filter']+'%'};return _0x2dd7e6;})});}_0x1621e1=_[_0xfd20('0x4f')]({},_0x1621e1,_0x5c81b6[_0xfd20('0x50')]);return db[_0xfd20('0x6b')][_0xfd20('0x30')]({'where':_0x1621e1[_0xfd20('0x4e')]})[_0xfd20('0x20')](function(_0x388854){_0x44b42b[_0xfd20('0x30')]=_0x388854;if(_0x5c81b6[_0xfd20('0x44')][_0xfd20('0x51')]){_0x1621e1['include']=[{'all':!![]}];}return db[_0xfd20('0x6b')]['findAll'](_0x1621e1);})[_0xfd20('0x20')](function(_0x18980a){_0x44b42b[_0xfd20('0x54')]=_0x18980a;return _0x44b42b;});}})[_0xfd20('0x20')](respondWithFilteredResult(_0x527bd2,_0x1621e1))[_0xfd20('0x29')](handleError(_0x527bd2,null));};exports[_0xfd20('0x6e')]=function(_0x31b6aa,_0x5d4f20,_0x395c94){return db[_0xfd20('0x3e')]['find']({'where':{'id':_0x31b6aa[_0xfd20('0x55')]['id']}})['then'](handleEntityNotFound(_0x5d4f20,null))['then'](function(_0x4dd2c4){if(_0x4dd2c4){return _0x4dd2c4[_0xfd20('0x6e')](_0x31b6aa['query'][_0xfd20('0x6f')]);}})[_0xfd20('0x20')](respondWithStatusCode(_0x5d4f20,null))[_0xfd20('0x29')](handleError(_0x5d4f20,null));};exports['addInteraction']=function(_0x16cea4,_0x239cf7,_0x39cbca){return db['FaxInteraction'][_0xfd20('0x61')]({'where':{'id':_0x16cea4[_0xfd20('0x55')]['id']}})[_0xfd20('0x20')](handleEntityNotFound(_0x239cf7,null))[_0xfd20('0x20')](function(_0x5274b9){if(_0x5274b9){return _0x5274b9[_0xfd20('0x70')](_0x16cea4[_0xfd20('0x5a')][_0xfd20('0x6f')],_[_0xfd20('0x71')](_0x16cea4[_0xfd20('0x5a')],[_0xfd20('0x6f'),'id'])||{});}})[_0xfd20('0x20')](respondWithResult(_0x239cf7,null))[_0xfd20('0x29')](handleError(_0x239cf7,null));};exports[_0xfd20('0x72')]=function(_0x6c3fa5,_0x481497,_0x4958c9){var _0x604ee7={'raw':![],'where':{}};var _0x2c372c={};var _0x109f86={'count':0x0,'rows':[]};return db[_0xfd20('0x3e')][_0xfd20('0x6d')]({'where':{'id':_0x6c3fa5['params']['id']}})[_0xfd20('0x20')](handleEntityNotFound(_0x481497,null))[_0xfd20('0x20')](function(_0x2dd123){if(_0x2dd123){_0x2c372c[_0xfd20('0x43')]=_[_0xfd20('0x57')](db[_0xfd20('0x73')][_0xfd20('0x3f')]);_0x2c372c[_0xfd20('0x44')]=_['keys'](_0x6c3fa5[_0xfd20('0x44')]);_0x2c372c[_0xfd20('0x45')]=_[_0xfd20('0x58')](_0x2c372c[_0xfd20('0x43')],_0x2c372c[_0xfd20('0x44')]);_0x604ee7[_0xfd20('0x46')]=_[_0xfd20('0x58')](_0x2c372c[_0xfd20('0x43')],qs[_0xfd20('0x47')](_0x6c3fa5[_0xfd20('0x44')]['fields']));_0x604ee7[_0xfd20('0x46')]=_0x604ee7[_0xfd20('0x46')][_0xfd20('0x48')]?_0x604ee7[_0xfd20('0x46')]:_0x2c372c[_0xfd20('0x43')];if(!_0x6c3fa5[_0xfd20('0x44')][_0xfd20('0x49')](_0xfd20('0x4a'))){_0x604ee7[_0xfd20('0x2f')]=qs['limit'](_0x6c3fa5[_0xfd20('0x44')]['limit']);_0x604ee7[_0xfd20('0x31')]=qs[_0xfd20('0x31')](_0x6c3fa5[_0xfd20('0x44')][_0xfd20('0x31')]);}_0x604ee7[_0xfd20('0x4b')]=qs['sort'](_0x6c3fa5[_0xfd20('0x44')]['sort']);_0x604ee7[_0xfd20('0x4e')]=qs['filters'](_[_0xfd20('0x4d')](_0x6c3fa5[_0xfd20('0x44')],_0x2c372c[_0xfd20('0x45')]));_0x604ee7[_0xfd20('0x4e')]['FaxAccountId']=_0x2dd123['id'];if(_0x6c3fa5[_0xfd20('0x44')][_0xfd20('0x69')]){_0x604ee7[_0xfd20('0x4e')]=_[_0xfd20('0x4f')](_0x604ee7[_0xfd20('0x4e')],{'$or':_[_0xfd20('0x3d')](_0x604ee7[_0xfd20('0x46')],function(_0x41cda5){var _0x4151a3={};_0x4151a3[_0x41cda5]={'$like':'%'+_0x6c3fa5['query'][_0xfd20('0x69')]+'%'};return _0x4151a3;})});}_0x604ee7=_[_0xfd20('0x4f')]({},_0x604ee7,_0x6c3fa5['options']);return db[_0xfd20('0x73')][_0xfd20('0x30')]({'where':_0x604ee7[_0xfd20('0x4e')]})[_0xfd20('0x20')](function(_0x587cfe){_0x109f86['count']=_0x587cfe;if(_0x6c3fa5[_0xfd20('0x44')][_0xfd20('0x51')]){_0x604ee7[_0xfd20('0x52')]=[{'model':db[_0xfd20('0x74')],'as':_0xfd20('0x75'),'required':![]},{'model':db[_0xfd20('0x76')],'as':_0xfd20('0x77'),'attributes':['name','fullname',_0xfd20('0x78')],'required':![]},{'model':db[_0xfd20('0x79')],'as':'Tags','attributes':['id',_0xfd20('0x3a'),_0xfd20('0x7a')],'where':_0x6c3fa5['query'][_0xfd20('0x7b')]?{'id':_0x6c3fa5['query']['tag']}:undefined,'required':_0x6c3fa5['query'][_0xfd20('0x7b')]?!![]:![]}];}return db['FaxInteraction']['findAll'](_0x604ee7);})[_0xfd20('0x20')](function(_0x4c4f16){_0x109f86[_0xfd20('0x54')]=_0x4c4f16;return _0x109f86;});}})['then'](respondWithFilteredResult(_0x481497,_0x604ee7))[_0xfd20('0x29')](handleError(_0x481497,null));};exports[_0xfd20('0x7c')]=function(_0x29a934,_0xe30a22){var _0x1d28d6=_0x29a934[_0xfd20('0x55')]['id'];var _0x3901b1=_0x29a934[_0xfd20('0x5a')];var _0x1bb1b8=0xc8;var _0xf1d018=null;return db[_0xfd20('0x7d')][_0xfd20('0x7e')]({'isolationLevel':db['sequelize'][_0xfd20('0x7f')][_0xfd20('0x80')][_0xfd20('0x81')]},function(_0x1f7684){return db[_0xfd20('0x3e')]['findOne']({'where':{'id':_0x1d28d6},'transaction':_0x1f7684})[_0xfd20('0x20')](function(_0xf0c240){if(_0xf0c240){return db[_0xfd20('0x82')][_0xfd20('0x38')]({'where':{'FaxAccountId':_0x1d28d6},'transaction':_0x1f7684})[_0xfd20('0x20')](function(){var _0x3f7d86=_[_0xfd20('0x3d')](_0x3901b1,function(_0x3e7019){_0x3e7019[_0xfd20('0x67')]=_0x1d28d6;return _0x3e7019;});return db[_0xfd20('0x82')][_0xfd20('0x83')](_0x3f7d86,{'transaction':_0x1f7684});});}else{_0x1bb1b8=0x194;_0xf1d018=[];}});})[_0xfd20('0x20')](function(){if(_0x1bb1b8!==0x194){return db[_0xfd20('0x82')][_0xfd20('0x84')]({'where':{'FaxAccountId':_0x1d28d6},'order':_0xfd20('0x85')})[_0xfd20('0x20')](function(_0x50d746){_0xf1d018=_0x50d746;});}})[_0xfd20('0x29')](function(_0x5b2a4a){_0x1bb1b8=0x1f4;logger[_0xfd20('0x27')](_0x5b2a4a[_0xfd20('0x39')]);if(_0x5b2a4a[_0xfd20('0x3a')]){delete _0x5b2a4a[_0xfd20('0x3a')];}_0xf1d018=_0x5b2a4a;})[_0xfd20('0x86')](function(){if(_0xf1d018===null){_0xe30a22['sendStatus'](_0x1bb1b8);}else{if(_0x1bb1b8===0x1f4){_0xe30a22[_0xfd20('0x2b')](_0x1bb1b8)['send'](_0xf1d018);}else{_0xe30a22[_0xfd20('0x2b')](_0x1bb1b8)[_0xfd20('0x2d')](_0xf1d018);}}});};exports[_0xfd20('0x87')]=function(_0x3ae700,_0x20a6ff,_0x5e363d){var _0x556374={};var _0x29ae2b={};var _0x359e88;var _0xc446f;return db[_0xfd20('0x3e')]['findOne']({'where':{'id':_0x3ae700[_0xfd20('0x55')]['id']}})[_0xfd20('0x20')](handleEntityNotFound(_0x20a6ff,null))[_0xfd20('0x20')](function(_0x5f2edf){if(_0x5f2edf){_0x359e88=_0x5f2edf;_0x29ae2b['model']=_[_0xfd20('0x57')](db['FaxApplication'][_0xfd20('0x3f')]);_0x29ae2b[_0xfd20('0x44')]=_[_0xfd20('0x57')](_0x3ae700[_0xfd20('0x44')]);_0x29ae2b[_0xfd20('0x45')]=_['intersection'](_0x29ae2b['model'],_0x29ae2b[_0xfd20('0x44')]);_0x556374[_0xfd20('0x46')]=_['intersection'](_0x29ae2b[_0xfd20('0x43')],qs[_0xfd20('0x47')](_0x3ae700[_0xfd20('0x44')][_0xfd20('0x47')]));_0x556374[_0xfd20('0x46')]=_0x556374[_0xfd20('0x46')][_0xfd20('0x48')]?_0x556374[_0xfd20('0x46')]:_0x29ae2b[_0xfd20('0x43')];_0x556374['order']=qs[_0xfd20('0x4c')](_0x3ae700['query'][_0xfd20('0x4c')]);_0x556374[_0xfd20('0x4e')]=qs['filters'](_[_0xfd20('0x4d')](_0x3ae700[_0xfd20('0x44')],_0x29ae2b['filters']));if(_0x3ae700[_0xfd20('0x44')][_0xfd20('0x69')]){_0x556374[_0xfd20('0x4e')]=_[_0xfd20('0x4f')](_0x556374[_0xfd20('0x4e')],{'$or':_[_0xfd20('0x3d')](_0x556374[_0xfd20('0x46')],function(_0x49f15b){var _0x36a412={};_0x36a412[_0x49f15b]={'$like':'%'+_0x3ae700['query']['filter']+'%'};return _0x36a412;})});}_0x556374=_['merge']({},_0x556374,_0x3ae700[_0xfd20('0x50')]);return _0x359e88[_0xfd20('0x87')](_0x556374);}})['then'](function(_0x5a2bfe){if(_0x5a2bfe){_0xc446f=_0x5a2bfe[_0xfd20('0x48')];if(!_0x3ae700[_0xfd20('0x44')][_0xfd20('0x49')](_0xfd20('0x4a'))){_0x556374[_0xfd20('0x2f')]=qs['limit'](_0x3ae700['query'][_0xfd20('0x2f')]);_0x556374['offset']=qs['offset'](_0x3ae700['query'][_0xfd20('0x31')]);}return _0x359e88[_0xfd20('0x87')](_0x556374);}})[_0xfd20('0x20')](function(_0xb64ecb){if(_0xb64ecb){return _0xb64ecb?{'count':_0xc446f,'rows':_0xb64ecb}:null;}})[_0xfd20('0x20')](respondWithResult(_0x20a6ff,null))[_0xfd20('0x29')](handleError(_0x20a6ff,null));};function Extension(_0x29976a,_0x3a7f18,_0x406ee1,_0x387ec2){this[_0xfd20('0x88')]=_0xfd20('0x89');this[_0xfd20('0x8a')]=_0x29976a[_0xfd20('0x8b')];this[_0xfd20('0x8c')]=_0x387ec2;this['type']=_0xfd20('0x8d');this[_0xfd20('0x8e')]=_0xfd20('0x8f');this['FaxAccountId']=_0x29976a['id'];this[_0xfd20('0x85')]=_0x3a7f18;this[_0xfd20('0x90')]=_0x406ee1;}function createExtensionsReciveFax(_0x3a4e9f){var _0x3e48a2=0x1;var _0x37865a=[];_0x37865a[_0xfd20('0x91')](new Extension(_0x3a4e9f,_0x3e48a2,'','Answer'));_0x3e48a2+=0x1;_0x37865a[_0xfd20('0x91')](new Extension(_0x3a4e9f,_0x3e48a2,'CDR(type)=inbound-fax',_0xfd20('0x92')));_0x3e48a2+=0x1;for(var _0x1c89d9 in _0x3a4e9f){if(_0x3a4e9f[_0xfd20('0x49')](_0x1c89d9)&&(_0x1c89d9===_0xfd20('0x93')||_0x1c89d9===_0xfd20('0x8b')||_0x1c89d9==='gateway'||_0x1c89d9===_0xfd20('0x94')||_0x1c89d9===_0xfd20('0x95')||_0x1c89d9===_0xfd20('0x96')||_0x1c89d9===_0xfd20('0x97')||_0x1c89d9==='modem'||_0x1c89d9===_0xfd20('0x98'))){_0x37865a['push'](new Extension(_0x3a4e9f,_0x3e48a2,'FAXOPT('+_0x1c89d9+')='+_0x3a4e9f[_0x1c89d9],'Set'));_0x3e48a2+=0x1;}}_0x37865a['push'](new Extension(_0x3a4e9f,_0x3e48a2,'6',_0xfd20('0x99')));_0x3e48a2+=0x1;_0x37865a['push'](new Extension(_0x3a4e9f,_0x3e48a2,'/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'));_0x3e48a2=0x0;return _0x37865a;}exports[_0xfd20('0x9a')]=function(_0x4bb7a4,_0x1921fd,_0x572607){var _0x16903e;return db[_0xfd20('0x7d')][_0xfd20('0x7e')](function(_0x465f40){return db[_0xfd20('0x3e')][_0xfd20('0x59')](_0x4bb7a4[_0xfd20('0x5a')],{'transaction':_0x465f40})[_0xfd20('0x20')](function(_0x1f5321){_0x16903e=_0x1f5321[_0xfd20('0x5c')]({'plain':!![]});return db[_0xfd20('0x9b')][_0xfd20('0x83')](createExtensionsReciveFax(_0x16903e),{'transaction':_0x465f40});});})[_0xfd20('0x20')](function(){return _0x16903e;})[_0xfd20('0x20')](respondWithResult(_0x1921fd,null))['catch'](handleError(_0x1921fd,null));};exports[_0xfd20('0x9c')]=function(_0x4d79d4,_0x4ade50,_0x565e71){var _0x4857bc;return db[_0xfd20('0x7d')][_0xfd20('0x7e')](function(_0x2c0627){return db[_0xfd20('0x3e')][_0xfd20('0x37')](_0x4d79d4[_0xfd20('0x5a')],{'where':{'id':_0x4d79d4[_0xfd20('0x5a')]['id']},'transaction':_0x2c0627})[_0xfd20('0x20')](function(_0x33bd56){return db['VoiceExtension']['destroy']({'where':{'FaxAccountId':_0x4d79d4[_0xfd20('0x5a')]['id']},'transaction':_0x2c0627})[_0xfd20('0x20')](function(_0x15f300){return db[_0xfd20('0x9b')][_0xfd20('0x83')](createExtensionsReciveFax(_[_0xfd20('0x71')](_0x4d79d4[_0xfd20('0x5a')],[_0xfd20('0x9d'),_0xfd20('0x42'),_0xfd20('0x9e'),'updatedAt',_0xfd20('0x9f'),_0xfd20('0xa0')])),{'transaction':_0x2c0627});});});})['then'](function(){return db[_0xfd20('0x3e')][_0xfd20('0xa1')](_0x4d79d4[_0xfd20('0x5a')]['id']);})[_0xfd20('0x20')](respondWithResult(_0x4ade50,null))[_0xfd20('0x29')](handleError(_0x4ade50,null));};exports[_0xfd20('0xa2')]=function(_0x298d41,_0x8c7c09,_0x3aae96){var _0x12a208={'raw':!![],'where':{}};var _0x29fe47={};var _0xb44ca7={'count':0x0,'rows':[]};return db['FaxAccount'][_0xfd20('0x6d')]({'where':{'id':_0x298d41[_0xfd20('0x55')]['id']}})[_0xfd20('0x20')](handleEntityNotFound(_0x8c7c09,null))[_0xfd20('0x20')](function(_0x489e39){if(_0x489e39){_0x29fe47[_0xfd20('0x43')]=_[_0xfd20('0x57')](db[_0xfd20('0xa3')][_0xfd20('0x3f')]);_0x29fe47[_0xfd20('0x44')]=_[_0xfd20('0x57')](_0x298d41['query']);_0x29fe47['filters']=_[_0xfd20('0x58')](_0x29fe47['model'],_0x29fe47[_0xfd20('0x44')]);_0x12a208[_0xfd20('0x46')]=_[_0xfd20('0x58')](_0x29fe47[_0xfd20('0x43')],qs[_0xfd20('0x47')](_0x298d41[_0xfd20('0x44')][_0xfd20('0x47')]));_0x12a208[_0xfd20('0x46')]=_0x12a208['attributes']['length']?_0x12a208[_0xfd20('0x46')]:_0x29fe47[_0xfd20('0x43')];if(!_0x298d41[_0xfd20('0x44')][_0xfd20('0x49')](_0xfd20('0x4a'))){_0x12a208[_0xfd20('0x2f')]=qs[_0xfd20('0x2f')](_0x298d41[_0xfd20('0x44')][_0xfd20('0x2f')]);_0x12a208[_0xfd20('0x31')]=qs[_0xfd20('0x31')](_0x298d41[_0xfd20('0x44')]['offset']);}_0x12a208[_0xfd20('0x4b')]=qs['sort'](_0x298d41['query'][_0xfd20('0x4c')]);_0x12a208['where']=qs[_0xfd20('0x45')](_['pick'](_0x298d41[_0xfd20('0x44')],_0x29fe47[_0xfd20('0x45')]));_0x12a208[_0xfd20('0x4e')]['FaxAccountId']=_0x489e39['id'];if(_0x298d41['query'][_0xfd20('0x69')]){_0x12a208[_0xfd20('0x4e')]=_[_0xfd20('0x4f')](_0x12a208[_0xfd20('0x4e')],{'$or':_[_0xfd20('0x3d')](_0x12a208['attributes'],function(_0x53b921){var _0x158f61={};_0x158f61[_0x53b921]={'$like':'%'+_0x298d41['query']['filter']+'%'};return _0x158f61;})});}if(_0x298d41[_0xfd20('0x44')][_0xfd20('0xa4')]){var _0x2e3b2e=_0x298d41[_0xfd20('0x44')][_0xfd20('0xa4')][_0xfd20('0xa5')](',');var _0x4c8575={};_0x4c8575[_0x2e3b2e[0x0]]={'$gte':moment(_0x2e3b2e[0x1])['format'](_0xfd20('0xa6'))};_0x12a208[_0xfd20('0x4e')]=_[_0xfd20('0x4f')](_0x12a208[_0xfd20('0x4e')],_0x4c8575);}_0x12a208=_[_0xfd20('0x4f')]({},_0x12a208,_0x298d41[_0xfd20('0x50')]);return db[_0xfd20('0xa3')][_0xfd20('0x30')]({'where':_0x12a208[_0xfd20('0x4e')]})['then'](function(_0x2f41a5){_0xb44ca7['count']=_0x2f41a5;if(_0x298d41[_0xfd20('0x44')][_0xfd20('0x51')]){_0x12a208[_0xfd20('0x52')]=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x12a208);})['then'](function(_0x53772e){_0xb44ca7[_0xfd20('0x54')]=_0x53772e;return _0xb44ca7;});}})[_0xfd20('0x20')](respondWithFilteredResult(_0x8c7c09,_0x12a208))[_0xfd20('0x29')](handleError(_0x8c7c09,null));};exports[_0xfd20('0x3b')]=function(_0x39fff8,_0x47bf4f,_0xb1e1c3){var _0x308650,_0x1caba8={},_0x62ef6f;if(_0x39fff8[_0xfd20('0x5a')]['to']){_0x62ef6f=_0x39fff8['body']['to'][0x0];}return db[_0xfd20('0x3e')][_0xfd20('0x61')]({'where':{'id':_0x39fff8['params']['id']},'include':[{'model':db[_0xfd20('0xa7')],'as':_0xfd20('0xa8'),'include':[{'model':db['CmContact'],'as':_0xfd20('0xa9'),'where':{'fax':_0x62ef6f},'limit':0x1,'order':[[_0xfd20('0xaa'),_0xfd20('0xab')]]}]}]})[_0xfd20('0x20')](handleEntityNotFound(_0x47bf4f,null))[_0xfd20('0x20')](function(_0x5a3e1e){_0x308650=_0x5a3e1e;if(_0x39fff8['body'][_0xfd20('0xac')]&&_0x39fff8['body'][_0xfd20('0xac')]['length']){for(var _0x1041c0=0x0;_0x1041c0<_0x39fff8[_0xfd20('0x5a')][_0xfd20('0xac')][_0xfd20('0x48')];_0x1041c0+=0x1){_0x39fff8[_0xfd20('0x5a')][_0xfd20('0xac')][_0x1041c0]={'filename':_0x39fff8[_0xfd20('0x5a')][_0xfd20('0xac')][_0x1041c0][_0xfd20('0x3a')],'id':_0x39fff8['body'][_0xfd20('0xac')][_0x1041c0]['id'],'path':path[_0xfd20('0xad')](config[_0xfd20('0xae')],_0xfd20('0xaf'),_0x39fff8[_0xfd20('0x5a')][_0xfd20('0xac')][_0x1041c0]['basename'])};}}return respondWithRpcPromise(_0xfd20('0xb0'),_0xfd20('0xb0'),{'FaxAccountId':_[_0xfd20('0xb1')](_0x39fff8[_0xfd20('0x55')]['id'])?undefined:_0x39fff8[_0xfd20('0x55')]['id'],'path':_[_0xfd20('0xb1')](_0x39fff8[_0xfd20('0x5a')][_0xfd20('0xac')][0x0][_0xfd20('0x6')])?undefined:_0x39fff8[_0xfd20('0x5a')][_0xfd20('0xac')][0x0][_0xfd20('0x6')],'fax':_['isNil'](_0x39fff8[_0xfd20('0x5a')]['to'][0x0])?undefined:_0x39fff8['body']['to'][0x0]},client9002);})['then'](function(){if(_0x308650){if(_[_0xfd20('0xb1')](_0x39fff8[_0xfd20('0x5a')][_0xfd20('0xb2')])){_0x39fff8['body'][_0xfd20('0xb2')]=util[_0xfd20('0xb3')](_0xfd20('0xb4'),_0x308650[_0xfd20('0x3a')],_0x308650['fax']);}if(_0x308650[_0xfd20('0xa8')]){if(_0x308650[_0xfd20('0xa8')][_0xfd20('0xa9')]['length']){return _0x308650['List'][_0xfd20('0xa9')][0x0];}else{return db[_0xfd20('0x74')][_0xfd20('0x59')](_[_0xfd20('0xb5')](_0x39fff8['body'],{'firstName':_0x39fff8[_0xfd20('0x5a')]['to'][0x0],'phone':_0x39fff8[_0xfd20('0x5a')]['to'][0x0],'fax':_0x39fff8[_0xfd20('0x5a')]['to'][0x0],'ListId':_0x308650[_0xfd20('0xa0')]}));}}else{throw new Error('List\x20not\x20found');}}else{throw new Error('Send\x20Fax\x20failed');}})['then'](function(_0x9dd037){if(_0x9dd037){return db[_0xfd20('0x73')]['find']({'where':{'ContactId':_0x9dd037['id'],'closed':![],'FaxAccountId':_0x308650['id']}})[_0xfd20('0x20')](function(_0x192fff){if(_0x192fff){return[_0x192fff,![]];}return db[_0xfd20('0x73')][_0xfd20('0x59')]({'UserId':_0x39fff8[_0xfd20('0x5b')]['id'],'ContactId':_0x9dd037['id'],'FaxAccountId':_0x308650['id'],'fax':_0x39fff8[_0xfd20('0x5a')]['to'][0x0],'firstMsgDirection':_0xfd20('0xb6'),'Messages':[_[_0xfd20('0x4f')](_0x39fff8[_0xfd20('0x5a')],{'read':![],'body':_0x39fff8[_0xfd20('0x5a')][_0xfd20('0xac')][0x0][_0xfd20('0xb7')],'FaxAccountId':_0x308650['id'],'UserId':_0x39fff8[_0xfd20('0x5b')]['id'],'ContactId':_0x9dd037['id'],'AttachmentId':_0x39fff8['body'][_0xfd20('0xac')][0x0]['id']})]},{'include':[{'model':db['FaxMessage'],'as':_0xfd20('0xb8')}]})[_0xfd20('0x20')](function(_0x4f08b2){return[_0x4f08b2,!![]];});});}else{throw new Error(_0xfd20('0xb9'));}})[_0xfd20('0xba')](function(_0x55298c,_0x5b49a8){if(_0x5b49a8){return _0x55298c;}return db[_0xfd20('0xa3')][_0xfd20('0x59')]({'direction':'out','read':![],'body':_0x39fff8[_0xfd20('0x5a')][_0xfd20('0xac')][0x0][_0xfd20('0xb7')],'FaxAccountId':_0x308650['id'],'FaxInteractionId':_0x55298c['id'],'UserId':_0x39fff8['user']['id'],'ContactId':_0x55298c[_0xfd20('0xbb')],'AttachmentId':_0x39fff8[_0xfd20('0x5a')][_0xfd20('0xac')][0x0]['id']})[_0xfd20('0x20')](function(_0x1a8abf){_0x55298c[_0xfd20('0xbc')]['Messages']=[];_0x55298c['dataValues'][_0xfd20('0xb8')]['push'](_0x1a8abf['dataValues']);return _0x55298c;});})[_0xfd20('0x20')](function(_0x2cae68){respondWithRpcPromise(_0xfd20('0xbd'),_0xfd20('0xbd'),{'FaxAccountId':_[_0xfd20('0xb1')](_0x39fff8[_0xfd20('0x55')]['id'])?undefined:_0x39fff8[_0xfd20('0x55')]['id'],'path':_[_0xfd20('0xb1')](_0x39fff8['body'][_0xfd20('0xac')][0x0][_0xfd20('0x6')])?undefined:_0x39fff8[_0xfd20('0x5a')][_0xfd20('0xac')][0x0]['path'],'fax':_['isNil'](_0x39fff8[_0xfd20('0x5a')]['to'][0x0])?undefined:_0x39fff8[_0xfd20('0x5a')]['to'][0x0],'AttachmentId':_0x39fff8['body'][_0xfd20('0xac')][0x0]['id']},client9002)[_0xfd20('0x20')](function(_0x167d34){logger[_0xfd20('0x21')](_0xfd20('0xbe'),_0x167d34);})[_0xfd20('0x29')](function(_0x4d5631){logger[_0xfd20('0x21')](_0xfd20('0xbe'),_0x4d5631);});return _0x2cae68;})[_0xfd20('0x20')](respondWithResult(_0x47bf4f,null))[_0xfd20('0x29')](handleError(_0x47bf4f,null));};exports['addAgents']=function(_0x53ff6c,_0x475720,_0x16aa73){return db[_0xfd20('0x3e')][_0xfd20('0x61')]({'where':{'id':_0x53ff6c['params']['id']}})[_0xfd20('0x20')](handleEntityNotFound(_0x475720,null))[_0xfd20('0x20')](function(_0x10fe4d){if(_0x10fe4d){return _0x10fe4d[_0xfd20('0xbf')](_0x53ff6c['body'][_0xfd20('0x6f')],_[_0xfd20('0x71')](_0x53ff6c[_0xfd20('0x5a')],[_0xfd20('0x6f'),'id'])||{})[_0xfd20('0xba')](function(_0x4ca4a1){for(var _0x32ac02=0x0;_0x32ac02<_0x53ff6c[_0xfd20('0x5a')]['ids']['length'];_0x32ac02+=0x1){socket[_0xfd20('0xc0')](_0xfd20('0xc1'),{'UserId':Number(_0x53ff6c['body'][_0xfd20('0x6f')][_0x32ac02]),'FaxAccountId':Number(_0x53ff6c[_0xfd20('0x55')]['id'])});}return _0x4ca4a1;});}})[_0xfd20('0x20')](respondWithResult(_0x475720,null))[_0xfd20('0x29')](handleError(_0x475720,null));};exports[_0xfd20('0xc2')]=function(_0x1366fb,_0x1ca50f,_0x57fc76){return db[_0xfd20('0x3e')][_0xfd20('0x61')]({'where':{'id':_0x1366fb['params']['id']}})[_0xfd20('0x20')](handleEntityNotFound(_0x1ca50f,null))['then'](function(_0x3a5c54){if(_0x3a5c54){return _0x3a5c54[_0xfd20('0xc2')](_0x1366fb[_0xfd20('0x44')][_0xfd20('0x6f')])[_0xfd20('0x20')](function(){if(_['isArray'](_0x1366fb[_0xfd20('0x44')][_0xfd20('0x6f')])){for(var _0x1d452a=0x0;_0x1d452a<_0x1366fb[_0xfd20('0x44')]['ids'][_0xfd20('0x48')];_0x1d452a+=0x1){socket[_0xfd20('0xc0')](_0xfd20('0xc3'),{'UserId':Number(_0x1366fb[_0xfd20('0x44')][_0xfd20('0x6f')][_0x1d452a]),'FaxAccountId':Number(_0x1366fb['params']['id'])});}}else{socket[_0xfd20('0xc0')](_0xfd20('0xc3'),{'UserId':Number(_0x1366fb['query'][_0xfd20('0x6f')]),'FaxAccountId':Number(_0x1366fb['params']['id'])});}});}})[_0xfd20('0x20')](respondWithStatusCode(_0x1ca50f,null))[_0xfd20('0x29')](handleError(_0x1ca50f,null));};exports[_0xfd20('0xc4')]=function(_0x1ae830,_0x302d44,_0x54703c){var _0x1c2b58={};var _0x1207b1={};var _0x58db4b;var _0x1d41c3;return db[_0xfd20('0x3e')][_0xfd20('0x6d')]({'where':{'id':_0x1ae830['params']['id']}})[_0xfd20('0x20')](handleEntityNotFound(_0x302d44,null))['then'](function(_0x4c2b93){if(_0x4c2b93){_0x58db4b=_0x4c2b93;_0x1207b1[_0xfd20('0x43')]=_[_0xfd20('0x57')](db[_0xfd20('0x76')][_0xfd20('0x3f')]);_0x1207b1['query']=_[_0xfd20('0x57')](_0x1ae830[_0xfd20('0x44')]);_0x1207b1['filters']=_[_0xfd20('0x58')](_0x1207b1[_0xfd20('0x43')],_0x1207b1[_0xfd20('0x44')]);_0x1c2b58[_0xfd20('0x46')]=_[_0xfd20('0x58')](_0x1207b1[_0xfd20('0x43')],qs[_0xfd20('0x47')](_0x1ae830[_0xfd20('0x44')][_0xfd20('0x47')]));_0x1c2b58[_0xfd20('0x46')]=_0x1c2b58[_0xfd20('0x46')][_0xfd20('0x48')]?_0x1c2b58[_0xfd20('0x46')]:_0x1207b1[_0xfd20('0x43')];_0x1c2b58[_0xfd20('0x4b')]=qs[_0xfd20('0x4c')](_0x1ae830[_0xfd20('0x44')]['sort']);_0x1c2b58['where']=qs['filters'](_[_0xfd20('0x4d')](_0x1ae830[_0xfd20('0x44')],_0x1207b1['filters']));if(_0x1ae830[_0xfd20('0x44')][_0xfd20('0x69')]){_0x1c2b58['where']=_[_0xfd20('0x4f')](_0x1c2b58[_0xfd20('0x4e')],{'$or':_[_0xfd20('0x3d')](_0x1c2b58[_0xfd20('0x46')],function(_0x56ed40){var _0x24029c={};_0x24029c[_0x56ed40]={'$like':'%'+_0x1ae830[_0xfd20('0x44')][_0xfd20('0x69')]+'%'};return _0x24029c;})});}_0x1c2b58=_[_0xfd20('0x4f')]({},_0x1c2b58,_0x1ae830[_0xfd20('0x50')]);return _0x58db4b[_0xfd20('0xc4')](_0x1c2b58);}})[_0xfd20('0x20')](function(_0x179f02){if(_0x179f02){_0x1d41c3=_0x179f02['length'];if(!_0x1ae830[_0xfd20('0x44')][_0xfd20('0x49')](_0xfd20('0x4a'))){_0x1c2b58['limit']=qs[_0xfd20('0x2f')](_0x1ae830['query'][_0xfd20('0x2f')]);_0x1c2b58[_0xfd20('0x31')]=qs[_0xfd20('0x31')](_0x1ae830[_0xfd20('0x44')][_0xfd20('0x31')]);}return _0x58db4b[_0xfd20('0xc4')](_0x1c2b58);}})[_0xfd20('0x20')](function(_0x2e7bb8){if(_0x2e7bb8){return _0x2e7bb8?{'count':_0x1d41c3,'rows':_0x2e7bb8}:null;}})[_0xfd20('0x20')](respondWithResult(_0x302d44,null))['catch'](handleError(_0x302d44,null));};
\ No newline at end of file
index 4f87395..b4c1751 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2539=['emit','hasOwnProperty','exports','events','../../mysqldb','FaxAccount','setMaxListeners','save','update'];(function(_0x93ad9f,_0x1f6c4f){var _0x25ecea=function(_0x33fcb9){while(--_0x33fcb9){_0x93ad9f['push'](_0x93ad9f['shift']());}};_0x25ecea(++_0x1f6c4f);}(_0x2539,0x147));var _0x9253=function(_0x1eba27,_0x5021ec){_0x1eba27=_0x1eba27-0x0;var _0x19d345=_0x2539[_0x1eba27];return _0x19d345;};'use strict';var EventEmitter=require(_0x9253('0x0'));var FaxAccount=require(_0x9253('0x1'))['db'][_0x9253('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x9253('0x3')](0x0);var events={'afterCreate':_0x9253('0x4'),'afterUpdate':_0x9253('0x5'),'afterDestroy':'remove'};function emitEvent(_0x2a18dc){return function(_0xecd5e9,_0x4cea82,_0x5db41e){FaxAccountEvents[_0x9253('0x6')](_0x2a18dc+':'+_0xecd5e9['id'],_0xecd5e9);FaxAccountEvents['emit'](_0x2a18dc,_0xecd5e9);_0x5db41e(null);};}for(var e in events){if(events[_0x9253('0x7')](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module[_0x9253('0x8')]=FaxAccountEvents;
\ No newline at end of file
+var _0x0965=['save','update','remove','emit','events','../../mysqldb','setMaxListeners'];(function(_0x24336d,_0x455abe){var _0x4125ac=function(_0x994cbf){while(--_0x994cbf){_0x24336d['push'](_0x24336d['shift']());}};_0x4125ac(++_0x455abe);}(_0x0965,0x138));var _0x5096=function(_0x3eb024,_0x3df2ab){_0x3eb024=_0x3eb024-0x0;var _0x457316=_0x0965[_0x3eb024];return _0x457316;};'use strict';var EventEmitter=require(_0x5096('0x0'));var FaxAccount=require(_0x5096('0x1'))['db']['FaxAccount'];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x5096('0x2')](0x0);var events={'afterCreate':_0x5096('0x3'),'afterUpdate':_0x5096('0x4'),'afterDestroy':_0x5096('0x5')};function emitEvent(_0x1e9e34){return function(_0x2ed206,_0x17a996,_0x2c39cf){FaxAccountEvents['emit'](_0x1e9e34+':'+_0x2ed206['id'],_0x2ed206);FaxAccountEvents[_0x5096('0x6')](_0x1e9e34,_0x2ed206);_0x2c39cf(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 6ed999f..ef9712d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12c1=['define','FaxAccount','fax_accounts','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./faxAccount.attributes'];(function(_0x4715fb,_0x38585f){var _0x3b6f7e=function(_0x3074a2){while(--_0x3074a2){_0x4715fb['push'](_0x4715fb['shift']());}};_0x3b6f7e(++_0x38585f);}(_0x12c1,0x177));var _0x112c=function(_0x27e08a,_0x49d986){_0x27e08a=_0x27e08a-0x0;var _0x52cb80=_0x12c1[_0x27e08a];return _0x52cb80;};'use strict';var _=require(_0x112c('0x0'));var util=require(_0x112c('0x1'));var logger=require(_0x112c('0x2'))('api');var moment=require('moment');var BPromise=require(_0x112c('0x3'));var rp=require(_0x112c('0x4'));var fs=require('fs');var path=require(_0x112c('0x5'));var rimraf=require(_0x112c('0x6'));var config=require(_0x112c('0x7'));var attributes=require(_0x112c('0x8'));module['exports']=function(_0x2a41fb,_0x3dffa7){return _0x2a41fb[_0x112c('0x9')](_0x112c('0xa'),attributes,{'tableName':_0x112c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe3da=['define','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','./faxAccount.attributes','exports'];(function(_0x1eda20,_0x1149f4){var _0x31b953=function(_0x25f0d8){while(--_0x25f0d8){_0x1eda20['push'](_0x1eda20['shift']());}};_0x31b953(++_0x1149f4);}(_0xe3da,0x16c));var _0xae3d=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xe3da[_0x2641f9];return _0x585741;};'use strict';var _=require(_0xae3d('0x0'));var util=require(_0xae3d('0x1'));var logger=require('../../config/logger')(_0xae3d('0x2'));var moment=require(_0xae3d('0x3'));var BPromise=require(_0xae3d('0x4'));var rp=require(_0xae3d('0x5'));var fs=require('fs');var path=require(_0xae3d('0x6'));var rimraf=require('rimraf');var config=require(_0xae3d('0x7'));var attributes=require(_0xae3d('0x8'));module[_0xae3d('0x9')]=function(_0x1b4655,_0x398628){return _0x1b4655[_0xae3d('0xa')]('FaxAccount',attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dd29d59..e4d1b1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c0a=['FaxInteraction','spread','autoclose','push','close','unmanaged','interaction','ContactId','UserId','agent','name','FaxQueue','unshift','queue','waitForTheAssignedQueue','Start','startRouting','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','redis','defaults','socket.io-emitter','./faxAccount.socket','register','request','info','FaxAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetFaxAccount','findAll','options','raw','attributes','limit','include','model','map','debug','NotifyFaxAccount','body','CmContact','then','Sequelize','ValidationError','difference','createdAt','updatedAt','keys','CompanyId','ListId','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','from','FaxAccount','account','CmList','Contacts','DESC','FaxApplication','Applications','get','applications','list','List','orderBy','priority','asc','length','create','find'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x2c0a,0x1c4));var _0xa2c0=function(_0x473738,_0x15ea31){_0x473738=_0x473738-0x0;var _0x1df4ae=_0x2c0a[_0x473738];return _0x1df4ae;};'use strict';var _=require(_0xa2c0('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa2c0('0x1'));var fs=require('fs');var Redis=require(_0xa2c0('0x2'));var db=require(_0xa2c0('0x3'))['db'];var utils=require(_0xa2c0('0x4'));var logger=require(_0xa2c0('0x5'))(_0xa2c0('0x6'));var config=require('../../config/environment');var jayson=require(_0xa2c0('0x7'));var client=jayson['client'][_0xa2c0('0x8')]({'port':0x232c});config[_0xa2c0('0x9')]=_[_0xa2c0('0xa')](config[_0xa2c0('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xa2c0('0xb'))(new Redis(config[_0xa2c0('0x9')]));require(_0xa2c0('0xc'))[_0xa2c0('0xd')](socket);function respondWithRpcPromise(_0x1e1f20,_0xa1394a,_0x3a385e){return new BPromise(function(_0x486673,_0x10289f){return client[_0xa2c0('0xe')](_0x1e1f20,_0x3a385e)['then'](function(_0x223456){logger[_0xa2c0('0xf')](_0xa2c0('0x10'),_0xa1394a,'request\x20sent');logger['debug']('FaxAccount,\x20%s,\x20%s,\x20%s',_0xa1394a,_0xa2c0('0x11'),JSON[_0xa2c0('0x12')](_0x223456));if(_0x223456[_0xa2c0('0x13')]){if(_0x223456[_0xa2c0('0x13')][_0xa2c0('0x14')]===0x1f4){logger[_0xa2c0('0x13')]('FaxAccount,\x20%s,\x20%s',_0xa1394a,_0x223456[_0xa2c0('0x13')][_0xa2c0('0x15')]);return _0x10289f(_0x223456[_0xa2c0('0x13')]['message']);}logger[_0xa2c0('0x13')]('FaxAccount,\x20%s,\x20%s',_0xa1394a,_0x223456['error']['message']);return _0x486673(_0x223456[_0xa2c0('0x13')][_0xa2c0('0x15')]);}else{logger[_0xa2c0('0xf')](_0xa2c0('0x10'),_0xa1394a,_0xa2c0('0x11'));_0x486673(_0x223456[_0xa2c0('0x16')][_0xa2c0('0x15')]);}})[_0xa2c0('0x17')](function(_0x303799){logger['error'](_0xa2c0('0x10'),_0xa1394a,_0x303799);_0x10289f(_0x303799);});});}exports[_0xa2c0('0x18')]=function(_0x1b05f8){var _0x433d19=this;return new Promise(function(_0x23f6db,_0x1124fb){return db['FaxAccount'][_0xa2c0('0x19')]({'raw':_0x1b05f8[_0xa2c0('0x1a')]?_0x1b05f8[_0xa2c0('0x1a')][_0xa2c0('0x1b')]===undefined?!![]:![]:!![],'where':_0x1b05f8[_0xa2c0('0x1a')]?_0x1b05f8[_0xa2c0('0x1a')]['where']||null:null,'attributes':_0x1b05f8[_0xa2c0('0x1a')]?_0x1b05f8[_0xa2c0('0x1a')][_0xa2c0('0x1c')]||null:null,'limit':_0x1b05f8[_0xa2c0('0x1a')]?_0x1b05f8[_0xa2c0('0x1a')][_0xa2c0('0x1d')]||null:null,'include':_0x1b05f8[_0xa2c0('0x1a')]?_0x1b05f8[_0xa2c0('0x1a')][_0xa2c0('0x1e')]?_['map'](_0x1b05f8['options'][_0xa2c0('0x1e')],function(_0x4b018b){return{'model':db[_0x4b018b[_0xa2c0('0x1f')]],'as':_0x4b018b['as'],'attributes':_0x4b018b[_0xa2c0('0x1c')],'include':_0x4b018b[_0xa2c0('0x1e')]?_[_0xa2c0('0x20')](_0x4b018b['include'],function(_0x1956a8){return{'model':db[_0x1956a8[_0xa2c0('0x1f')]],'as':_0x1956a8['as'],'attributes':_0x1956a8[_0xa2c0('0x1c')],'include':_0x1956a8['include']?_[_0xa2c0('0x20')](_0x1956a8[_0xa2c0('0x1e')],function(_0x41d02c){return{'model':db[_0x41d02c['model']],'as':_0x41d02c['as'],'attributes':_0x41d02c['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x5d242a){logger[_0xa2c0('0xf')](_0xa2c0('0x18'),_0x1b05f8);logger[_0xa2c0('0x21')](_0xa2c0('0x18'),_0x1b05f8,JSON[_0xa2c0('0x12')](_0x5d242a));_0x23f6db(_0x5d242a);})[_0xa2c0('0x17')](function(_0x54a82f){logger[_0xa2c0('0x13')](_0xa2c0('0x18'),_0x54a82f[_0xa2c0('0x15')],_0x1b05f8);_0x1124fb(_0x433d19[_0xa2c0('0x13')](0x1f4,_0x54a82f[_0xa2c0('0x15')]));});});};exports[_0xa2c0('0x22')]=function(_0x43ab2d,_0x259f4a,_0x3754eb){var _0x20cf4e=this;return new Promise(function(_0x55ce71,_0x37df9e){var _0x1ffb15={'body':_0x43ab2d[_0xa2c0('0x23')],'channel':'fax'};var _0x56c099=[];var _0x5b9825=[];var _0x113dbd={};return db[_0xa2c0('0x24')]['describe']()[_0xa2c0('0x25')](function(_0x18e20d){if(!_0x18e20d){throw new db[(_0xa2c0('0x26'))][(_0xa2c0('0x27'))]('no\x20available\x20attributes');}_0x56c099=_[_0xa2c0('0x28')](_['keys'](_0x18e20d),[_0xa2c0('0x29'),_0xa2c0('0x2a')]);_0x5b9825=_[_0xa2c0('0x28')](_[_0xa2c0('0x2b')](_0x18e20d),[_0xa2c0('0x29'),_0xa2c0('0x2a'),_0xa2c0('0x2c'),_0xa2c0('0x2d')]);if(_0x43ab2d[_0xa2c0('0x23')]['id']){delete _0x43ab2d[_0xa2c0('0x23')]['id'];}if(_[_0xa2c0('0x2e')](_0x43ab2d[_0xa2c0('0x23')]['from'])){throw new db[(_0xa2c0('0x26'))][(_0xa2c0('0x27'))](_0xa2c0('0x2f'));}if(_['isNil'](_0x43ab2d[_0xa2c0('0x23')][_0xa2c0('0x23')])||_0x43ab2d['body']['body']===''){throw new db[(_0xa2c0('0x26'))][(_0xa2c0('0x27'))](_0xa2c0('0x30'));}if(_['isNil'](_0x43ab2d[_0xa2c0('0x23')]['mapKey'])){throw new db[(_0xa2c0('0x26'))][(_0xa2c0('0x27'))](_0xa2c0('0x31')+_0x5b9825);}if(!_['includes'](_0x5b9825,_0x43ab2d[_0xa2c0('0x23')]['mapKey'])){throw new db[(_0xa2c0('0x26'))][(_0xa2c0('0x27'))](_0xa2c0('0x32')+_0x5b9825);}_0x113dbd[_0x43ab2d['body'][_0xa2c0('0x33')]]=_0x43ab2d[_0xa2c0('0x23')][_0xa2c0('0x34')];})['then'](function(){return db[_0xa2c0('0x35')]['find']({'where':{'id':_0x43ab2d[_0xa2c0('0x36')]['id']},'include':[{'model':db[_0xa2c0('0x37')],'as':'List','include':[{'model':db[_0xa2c0('0x24')],'as':_0xa2c0('0x38'),'where':_0x113dbd,'limit':0x1,'order':[[_0xa2c0('0x2a'),_0xa2c0('0x39')]]}]},{'model':db[_0xa2c0('0x3a')],'as':_0xa2c0('0x3b')}]});})[_0xa2c0('0x25')](function(_0x52852b){if(_0x52852b&&_0x52852b['List']){var _0x150cb9=_0x52852b[_0xa2c0('0x3c')]({'plain':!![]});_0x1ffb15[_0xa2c0('0x36')]=_0x150cb9;_0x1ffb15[_0xa2c0('0x3d')]=_0x150cb9[_0xa2c0('0x3b')];_0x1ffb15[_0xa2c0('0x3e')]=_0x150cb9[_0xa2c0('0x3f')];_0x1ffb15[_0xa2c0('0x3d')]=_[_0xa2c0('0x40')](_0x1ffb15['applications'],[_0xa2c0('0x41')],[_0xa2c0('0x42')]);if(_0x1ffb15['account']['Applications']){delete _0x1ffb15[_0xa2c0('0x36')][_0xa2c0('0x3b')];}if(_0x1ffb15[_0xa2c0('0x36')][_0xa2c0('0x3f')]&&_0x1ffb15[_0xa2c0('0x36')][_0xa2c0('0x3f')][_0xa2c0('0x38')][_0xa2c0('0x43')]){return _0x1ffb15[_0xa2c0('0x36')][_0xa2c0('0x3f')][_0xa2c0('0x38')][0x0];}var _0x19cb4d=_[_0xa2c0('0xa')](_0x43ab2d['body'],{'firstName':_0x43ab2d['body']['from'],'ListId':_0x150cb9[_0xa2c0('0x2d')]});_0x19cb4d[_0x43ab2d['body']['mapKey']]=_0x43ab2d[_0xa2c0('0x23')][_0xa2c0('0x34')];return db[_0xa2c0('0x24')][_0xa2c0('0x44')](_0x19cb4d,{'fields':_0x56c099,'raw':!![]});}})[_0xa2c0('0x25')](function(_0x3c3c6e){_0x1ffb15['contact']=_0x3c3c6e;if(_0x3c3c6e){var _0x187a1b={'ContactId':_0x3c3c6e['id'],'FaxAccountId':_0x43ab2d[_0xa2c0('0x36')]['id'],'fax':_0x3c3c6e['fax']};return db['FaxInteraction'][_0xa2c0('0x45')]({'where':{'ContactId':_0x3c3c6e['id'],'closed':![],'FaxAccountId':_0x43ab2d[_0xa2c0('0x36')]['id']}})['then'](function(_0x41653a){if(_0x41653a){return[_0x41653a,![]];}return db[_0xa2c0('0x46')][_0xa2c0('0x44')](_0x187a1b)[_0xa2c0('0x25')](function(_0x2f18f0){return[_0x2f18f0,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0xa2c0('0x47')](function(_0x5ab124,_0x11e41c){var _0xbd7b9d=_0x5ab124[_0xa2c0('0x3c')]({'plain':!![]});if(_0x11e41c){if(_0x1ffb15[_0xa2c0('0x36')][_0xa2c0('0x48')]){_0x1ffb15['applications'][_0xa2c0('0x49')]({'id':0x0,'priority':_0x1ffb15['applications'][_0xa2c0('0x43')]+0x1,'app':_0xa2c0('0x4a'),'appdata':_0xa2c0('0x4b'),'interval':'*,*,*,*'});}_0xbd7b9d['created']=!![];}else{_0xbd7b9d['created']=![];}_0x1ffb15[_0xa2c0('0x4c')]=_0xbd7b9d;return db['FaxMessage'][_0xa2c0('0x44')]({'body':_0x43ab2d[_0xa2c0('0x23')][_0xa2c0('0x23')],'FaxAccountId':_0x43ab2d[_0xa2c0('0x36')]['id'],'FaxInteractionId':_0x5ab124['id'],'direction':'in','ContactId':_0x5ab124[_0xa2c0('0x4d')],'AttachmentId':_0x43ab2d['body']['AttachmentId']});})['then'](function(_0x2cf59c){_0x1ffb15[_0xa2c0('0x15')]=_0x2cf59c;if(!_0x1ffb15[_0xa2c0('0x4c')][_0xa2c0('0x4e')])return;return db['User'][_0xa2c0('0x45')]({'attributes':['id','name'],'where':{'id':_0x1ffb15[_0xa2c0('0x4c')][_0xa2c0('0x4e')]}});})[_0xa2c0('0x25')](function(_0x46805b){if(_0x46805b){_0x1ffb15['applications']['unshift']({'id':0x0,'priority':0x0,'app':_0xa2c0('0x4f'),'appdata':_0x46805b[_0xa2c0('0x50')]+','+(_0x1ffb15[_0xa2c0('0x36')]['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});}if(!_0x1ffb15[_0xa2c0('0x4c')]['queueId'])return;return db[_0xa2c0('0x51')][_0xa2c0('0x45')]({'attributes':['id',_0xa2c0('0x50')],'where':{'id':_0x1ffb15['interaction']['queueId']}});})['then'](function(_0x36668c){if(_0x36668c){_0x1ffb15[_0xa2c0('0x3d')][_0xa2c0('0x52')]({'id':0x0,'priority':0x1,'app':_0xa2c0('0x53'),'appdata':_0x36668c[_0xa2c0('0x50')]+','+(_0x1ffb15[_0xa2c0('0x36')][_0xa2c0('0x54')]||0x12c),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xa2c0('0x55'),_0xa2c0('0x56'),_0x1ffb15);})[_0xa2c0('0x25')](function(_0x254b62){_0x55ce71(_0x254b62);})[_0xa2c0('0x17')](function(_0x54f5bb){_0x37df9e(_0x20cf4e[_0xa2c0('0x13')](0x1f4,_0x54f5bb[_0xa2c0('0x15')]));});});};
\ No newline at end of file
+var _0x5b31=['waitForTheAssignedQueue','Start','startRouting','catch','lodash','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./faxAccount.socket','register','request','then','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','FaxAccount','findAll','options','raw','where','attributes','limit','include','map','model','GetFaxAccount','NotifyFaxAccount','body','fax','describe','ValidationError','keys','createdAt','updatedAt','difference','CompanyId','ListId','isNil','from\x20is\x20mandatory','Sequelize','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','find','account','CmList','CmContact','Contacts','DESC','List','applications','Applications','list','orderBy','priority','asc','length','create','contact','FaxInteraction','spread','get','autoclose','push','close','*,*,*,*','created','FaxMessage','ContactId','interaction','User','name','UserId','unshift','agent','waitForTheAssignedAgent','queueId','queue'];(function(_0x23622e,_0x506fe2){var _0x252266=function(_0x3bead5){while(--_0x3bead5){_0x23622e['push'](_0x23622e['shift']());}};_0x252266(++_0x506fe2);}(_0x5b31,0x64));var _0x15b3=function(_0x7677c0,_0x32b2d4){_0x7677c0=_0x7677c0-0x0;var _0x205783=_0x5b31[_0x7677c0];return _0x205783;};'use strict';var _=require(_0x15b3('0x0'));var util=require('util');var moment=require(_0x15b3('0x1'));var BPromise=require(_0x15b3('0x2'));var rs=require(_0x15b3('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x15b3('0x4'));var logger=require('../../config/logger')(_0x15b3('0x5'));var config=require(_0x15b3('0x6'));var jayson=require(_0x15b3('0x7'));var client=jayson['client'][_0x15b3('0x8')]({'port':0x232c});config[_0x15b3('0x9')]=_[_0x15b3('0xa')](config['redis'],{'host':_0x15b3('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x15b3('0x9')]));require(_0x15b3('0xc'))[_0x15b3('0xd')](socket);function respondWithRpcPromise(_0x2c4f12,_0x170613,_0x35bc91){return new BPromise(function(_0x3a4b0a,_0x156fd9){return client[_0x15b3('0xe')](_0x2c4f12,_0x35bc91)[_0x15b3('0xf')](function(_0x2b53ac){logger['info'](_0x15b3('0x10'),_0x170613,_0x15b3('0x11'));logger[_0x15b3('0x12')](_0x15b3('0x13'),_0x170613,_0x15b3('0x11'),JSON[_0x15b3('0x14')](_0x2b53ac));if(_0x2b53ac[_0x15b3('0x15')]){if(_0x2b53ac['error'][_0x15b3('0x16')]===0x1f4){logger[_0x15b3('0x15')]('FaxAccount,\x20%s,\x20%s',_0x170613,_0x2b53ac[_0x15b3('0x15')][_0x15b3('0x17')]);return _0x156fd9(_0x2b53ac['error']['message']);}logger[_0x15b3('0x15')]('FaxAccount,\x20%s,\x20%s',_0x170613,_0x2b53ac['error'][_0x15b3('0x17')]);return _0x3a4b0a(_0x2b53ac[_0x15b3('0x15')]['message']);}else{logger[_0x15b3('0x18')]('FaxAccount,\x20%s,\x20%s',_0x170613,'request\x20sent');_0x3a4b0a(_0x2b53ac[_0x15b3('0x19')][_0x15b3('0x17')]);}})['catch'](function(_0x16638a){logger[_0x15b3('0x15')](_0x15b3('0x10'),_0x170613,_0x16638a);_0x156fd9(_0x16638a);});});}exports['GetFaxAccount']=function(_0x3ce30a){var _0x20042c=this;return new Promise(function(_0x12f6fd,_0x4da0b8){return db[_0x15b3('0x1a')][_0x15b3('0x1b')]({'raw':_0x3ce30a[_0x15b3('0x1c')]?_0x3ce30a['options'][_0x15b3('0x1d')]===undefined?!![]:![]:!![],'where':_0x3ce30a[_0x15b3('0x1c')]?_0x3ce30a[_0x15b3('0x1c')][_0x15b3('0x1e')]||null:null,'attributes':_0x3ce30a[_0x15b3('0x1c')]?_0x3ce30a[_0x15b3('0x1c')][_0x15b3('0x1f')]||null:null,'limit':_0x3ce30a[_0x15b3('0x1c')]?_0x3ce30a['options'][_0x15b3('0x20')]||null:null,'include':_0x3ce30a[_0x15b3('0x1c')]?_0x3ce30a[_0x15b3('0x1c')][_0x15b3('0x21')]?_['map'](_0x3ce30a[_0x15b3('0x1c')][_0x15b3('0x21')],function(_0x5da87e){return{'model':db[_0x5da87e['model']],'as':_0x5da87e['as'],'attributes':_0x5da87e[_0x15b3('0x1f')],'include':_0x5da87e[_0x15b3('0x21')]?_[_0x15b3('0x22')](_0x5da87e[_0x15b3('0x21')],function(_0x2ad4f4){return{'model':db[_0x2ad4f4[_0x15b3('0x23')]],'as':_0x2ad4f4['as'],'attributes':_0x2ad4f4[_0x15b3('0x1f')],'include':_0x2ad4f4[_0x15b3('0x21')]?_[_0x15b3('0x22')](_0x2ad4f4['include'],function(_0x522f89){return{'model':db[_0x522f89[_0x15b3('0x23')]],'as':_0x522f89['as'],'attributes':_0x522f89[_0x15b3('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x15b3('0xf')](function(_0x238726){logger[_0x15b3('0x18')]('GetFaxAccount',_0x3ce30a);logger[_0x15b3('0x12')](_0x15b3('0x24'),_0x3ce30a,JSON['stringify'](_0x238726));_0x12f6fd(_0x238726);})['catch'](function(_0x20b492){logger[_0x15b3('0x15')]('GetFaxAccount',_0x20b492[_0x15b3('0x17')],_0x3ce30a);_0x4da0b8(_0x20042c[_0x15b3('0x15')](0x1f4,_0x20b492[_0x15b3('0x17')]));});});};exports[_0x15b3('0x25')]=function(_0x4e7c7a,_0x3e230e,_0x257eae){var _0x605466=this;return new Promise(function(_0x400edc,_0x486053){var _0x10fc90={'body':_0x4e7c7a[_0x15b3('0x26')],'channel':_0x15b3('0x27')};var _0x5ab002=[];var _0x7c36e2=[];var _0x25de6b={};return db['CmContact'][_0x15b3('0x28')]()[_0x15b3('0xf')](function(_0x2b8520){if(!_0x2b8520){throw new db['Sequelize'][(_0x15b3('0x29'))]('no\x20available\x20attributes');}_0x5ab002=_['difference'](_[_0x15b3('0x2a')](_0x2b8520),[_0x15b3('0x2b'),_0x15b3('0x2c')]);_0x7c36e2=_[_0x15b3('0x2d')](_['keys'](_0x2b8520),[_0x15b3('0x2b'),_0x15b3('0x2c'),_0x15b3('0x2e'),_0x15b3('0x2f')]);if(_0x4e7c7a[_0x15b3('0x26')]['id']){delete _0x4e7c7a[_0x15b3('0x26')]['id'];}if(_[_0x15b3('0x30')](_0x4e7c7a[_0x15b3('0x26')]['from'])){throw new db['Sequelize'][(_0x15b3('0x29'))](_0x15b3('0x31'));}if(_[_0x15b3('0x30')](_0x4e7c7a[_0x15b3('0x26')][_0x15b3('0x26')])||_0x4e7c7a[_0x15b3('0x26')][_0x15b3('0x26')]===''){throw new db[(_0x15b3('0x32'))][(_0x15b3('0x29'))](_0x15b3('0x33'));}if(_['isNil'](_0x4e7c7a[_0x15b3('0x26')][_0x15b3('0x34')])){throw new db[(_0x15b3('0x32'))]['ValidationError'](_0x15b3('0x35')+_0x7c36e2);}if(!_[_0x15b3('0x36')](_0x7c36e2,_0x4e7c7a[_0x15b3('0x26')]['mapKey'])){throw new db[(_0x15b3('0x32'))][(_0x15b3('0x29'))](_0x15b3('0x37')+_0x7c36e2);}_0x25de6b[_0x4e7c7a[_0x15b3('0x26')][_0x15b3('0x34')]]=_0x4e7c7a[_0x15b3('0x26')][_0x15b3('0x38')];})[_0x15b3('0xf')](function(){return db['FaxAccount'][_0x15b3('0x39')]({'where':{'id':_0x4e7c7a[_0x15b3('0x3a')]['id']},'include':[{'model':db[_0x15b3('0x3b')],'as':'List','include':[{'model':db[_0x15b3('0x3c')],'as':_0x15b3('0x3d'),'where':_0x25de6b,'limit':0x1,'order':[[_0x15b3('0x2c'),_0x15b3('0x3e')]]}]},{'model':db['FaxApplication'],'as':'Applications'}]});})[_0x15b3('0xf')](function(_0x435add){if(_0x435add&&_0x435add[_0x15b3('0x3f')]){var _0xa745b2=_0x435add['get']({'plain':!![]});_0x10fc90[_0x15b3('0x3a')]=_0xa745b2;_0x10fc90[_0x15b3('0x40')]=_0xa745b2[_0x15b3('0x41')];_0x10fc90[_0x15b3('0x42')]=_0xa745b2['List'];_0x10fc90[_0x15b3('0x40')]=_[_0x15b3('0x43')](_0x10fc90[_0x15b3('0x40')],[_0x15b3('0x44')],[_0x15b3('0x45')]);if(_0x10fc90['account'][_0x15b3('0x41')]){delete _0x10fc90[_0x15b3('0x3a')]['Applications'];}if(_0x10fc90[_0x15b3('0x3a')]['List']&&_0x10fc90['account'][_0x15b3('0x3f')]['Contacts'][_0x15b3('0x46')]){return _0x10fc90[_0x15b3('0x3a')][_0x15b3('0x3f')][_0x15b3('0x3d')][0x0];}var _0x26f5df=_[_0x15b3('0xa')](_0x4e7c7a[_0x15b3('0x26')],{'firstName':_0x4e7c7a[_0x15b3('0x26')][_0x15b3('0x38')],'ListId':_0xa745b2[_0x15b3('0x2f')]});_0x26f5df[_0x4e7c7a[_0x15b3('0x26')][_0x15b3('0x34')]]=_0x4e7c7a['body'][_0x15b3('0x38')];return db[_0x15b3('0x3c')][_0x15b3('0x47')](_0x26f5df,{'fields':_0x5ab002,'raw':!![]});}})[_0x15b3('0xf')](function(_0x40aeb2){_0x10fc90[_0x15b3('0x48')]=_0x40aeb2;if(_0x40aeb2){var _0x5084b6={'ContactId':_0x40aeb2['id'],'FaxAccountId':_0x4e7c7a[_0x15b3('0x3a')]['id'],'fax':_0x40aeb2[_0x15b3('0x27')]};return db[_0x15b3('0x49')]['find']({'where':{'ContactId':_0x40aeb2['id'],'closed':![],'FaxAccountId':_0x4e7c7a[_0x15b3('0x3a')]['id']}})[_0x15b3('0xf')](function(_0x2f8b3c){if(_0x2f8b3c){return[_0x2f8b3c,![]];}return db['FaxInteraction'][_0x15b3('0x47')](_0x5084b6)[_0x15b3('0xf')](function(_0x4fc4ca){return[_0x4fc4ca,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x15b3('0x4a')](function(_0x33f169,_0x363320){var _0x26b1b5=_0x33f169[_0x15b3('0x4b')]({'plain':!![]});if(_0x363320){if(_0x10fc90[_0x15b3('0x3a')][_0x15b3('0x4c')]){_0x10fc90[_0x15b3('0x40')][_0x15b3('0x4d')]({'id':0x0,'priority':_0x10fc90[_0x15b3('0x40')]['length']+0x1,'app':_0x15b3('0x4e'),'appdata':'unmanaged','interval':_0x15b3('0x4f')});}_0x26b1b5[_0x15b3('0x50')]=!![];}else{_0x26b1b5[_0x15b3('0x50')]=![];}_0x10fc90['interaction']=_0x26b1b5;return db[_0x15b3('0x51')]['create']({'body':_0x4e7c7a['body'][_0x15b3('0x26')],'FaxAccountId':_0x4e7c7a['account']['id'],'FaxInteractionId':_0x33f169['id'],'direction':'in','ContactId':_0x33f169[_0x15b3('0x52')],'AttachmentId':_0x4e7c7a['body']['AttachmentId']});})['then'](function(_0x20b3b1){_0x10fc90['message']=_0x20b3b1;if(!_0x10fc90[_0x15b3('0x53')]['UserId'])return;return db[_0x15b3('0x54')]['find']({'attributes':['id',_0x15b3('0x55')],'where':{'id':_0x10fc90[_0x15b3('0x53')][_0x15b3('0x56')]}});})[_0x15b3('0xf')](function(_0x4f548d){if(_0x4f548d){_0x10fc90[_0x15b3('0x40')][_0x15b3('0x57')]({'id':0x0,'priority':0x0,'app':_0x15b3('0x58'),'appdata':_0x4f548d[_0x15b3('0x55')]+','+(_0x10fc90[_0x15b3('0x3a')][_0x15b3('0x59')]||0xa),'interval':_0x15b3('0x4f')});}if(!_0x10fc90[_0x15b3('0x53')]['queueId'])return;return db['FaxQueue'][_0x15b3('0x39')]({'attributes':['id',_0x15b3('0x55')],'where':{'id':_0x10fc90['interaction'][_0x15b3('0x5a')]}});})['then'](function(_0x1fe74a){if(_0x1fe74a){_0x10fc90[_0x15b3('0x40')][_0x15b3('0x57')]({'id':0x0,'priority':0x1,'app':_0x15b3('0x5b'),'appdata':_0x1fe74a[_0x15b3('0x55')]+','+(_0x10fc90['account'][_0x15b3('0x5c')]||0x12c),'interval':_0x15b3('0x4f')});}return respondWithRpcPromise(_0x15b3('0x5d'),_0x15b3('0x5e'),_0x10fc90);})[_0x15b3('0xf')](function(_0x873ff3){_0x400edc(_0x873ff3);})[_0x15b3('0x5f')](function(_0x375c09){_0x486053(_0x605466['error'](0x1f4,_0x375c09[_0x15b3('0x17')]));});});};
\ No newline at end of file
index 4e761cb..bf27604 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x629c=['update','emit','removeListener','register','length','faxAccount:','./faxAccount.events','save','remove'];(function(_0x36020b,_0x2c3db5){var _0x176661=function(_0x445e66){while(--_0x445e66){_0x36020b['push'](_0x36020b['shift']());}};_0x176661(++_0x2c3db5);}(_0x629c,0x1da));var _0xc629=function(_0x146a5c,_0x426cc1){_0x146a5c=_0x146a5c-0x0;var _0x3f2f2d=_0x629c[_0x146a5c];return _0x3f2f2d;};'use strict';var FaxAccountEvents=require(_0xc629('0x0'));var events=[_0xc629('0x1'),_0xc629('0x2'),_0xc629('0x3')];function createListener(_0x532648,_0x33da2c){return function(_0x20de56){_0x33da2c[_0xc629('0x4')](_0x532648,_0x20de56);};}function removeListener(_0x3b2eeb,_0x1560aa){return function(){FaxAccountEvents[_0xc629('0x5')](_0x3b2eeb,_0x1560aa);};}exports[_0xc629('0x6')]=function(_0x1ed98f){for(var _0x53788f=0x0,_0x49eaf9=events[_0xc629('0x7')];_0x53788f<_0x49eaf9;_0x53788f++){var _0x57d7a5=events[_0x53788f];var _0x92909=createListener(_0xc629('0x8')+_0x57d7a5,_0x1ed98f);FaxAccountEvents['on'](_0x57d7a5,_0x92909);}};
\ No newline at end of file
+var _0xd287=['register','length','faxAccount:','./faxAccount.events','update','emit','removeListener'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0xd287,0xd5));var _0x7d28=function(_0x6021c6,_0x197237){_0x6021c6=_0x6021c6-0x0;var _0x5ca926=_0xd287[_0x6021c6];return _0x5ca926;};'use strict';var FaxAccountEvents=require(_0x7d28('0x0'));var events=['save','remove',_0x7d28('0x1')];function createListener(_0x5d44d8,_0x25235f){return function(_0x3ee73b){_0x25235f[_0x7d28('0x2')](_0x5d44d8,_0x3ee73b);};}function removeListener(_0x4e0120,_0x894d59){return function(){FaxAccountEvents[_0x7d28('0x3')](_0x4e0120,_0x894d59);};}exports[_0x7d28('0x4')]=function(_0x3e8b30){for(var _0x3c50c5=0x0,_0x53beaf=events[_0x7d28('0x5')];_0x3c50c5<_0x53beaf;_0x3c50c5++){var _0x2c8e03=events[_0x3c50c5];var _0x466023=createListener(_0x7d28('0x6')+_0x2c8e03,_0x3e8b30);FaxAccountEvents['on'](_0x2c8e03,_0x466023);}};
\ No newline at end of file
index 6f95584..18a42a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x702c=['update','delete','removeDispositions','removeAnswers','removeAgents','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./faxAccount.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getInteractions','/:id/applications','getApplications','getMessages','/:id/users','getAgents','post','create','addDisposition','addAnswer','/:id/interactions','addApplications','/addaccountapplications','/updateaccountapplications','updateAccountApplications','/:id/send','send','addAgents','put'];(function(_0x334b2b,_0x4b8144){var _0x10d7ec=function(_0x2b0718){while(--_0x2b0718){_0x334b2b['push'](_0x334b2b['shift']());}};_0x10d7ec(++_0x4b8144);}(_0x702c,0x102));var _0xc702=function(_0xbee3c0,_0x417d90){_0xbee3c0=_0xbee3c0-0x0;var _0x301e00=_0x702c[_0xbee3c0];return _0x301e00;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xc702('0x0'));var timeout=require(_0xc702('0x1'));var express=require(_0xc702('0x2'));var router=express[_0xc702('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc702('0x4'));var interaction=require(_0xc702('0x5'));var config=require('../../config/environment');var controller=require(_0xc702('0x6'));router[_0xc702('0x7')]('/',auth[_0xc702('0x8')](),controller[_0xc702('0x9')]);router[_0xc702('0x7')](_0xc702('0xa'),auth[_0xc702('0x8')](),controller['describe']);router[_0xc702('0x7')](_0xc702('0xb'),auth[_0xc702('0x8')](),controller[_0xc702('0xc')]);router[_0xc702('0x7')](_0xc702('0xd'),auth[_0xc702('0x8')](),controller[_0xc702('0xe')]);router[_0xc702('0x7')](_0xc702('0xf'),auth[_0xc702('0x8')](),controller[_0xc702('0x10')]);router[_0xc702('0x7')]('/:id/interactions',auth[_0xc702('0x8')](),controller[_0xc702('0x11')]);router[_0xc702('0x7')](_0xc702('0x12'),auth['isAuthenticated'](),controller[_0xc702('0x13')]);router[_0xc702('0x7')]('/:id/messages',auth[_0xc702('0x8')](),controller[_0xc702('0x14')]);router['get'](_0xc702('0x15'),auth[_0xc702('0x8')](),controller[_0xc702('0x16')]);router[_0xc702('0x17')]('/',auth[_0xc702('0x8')](),controller[_0xc702('0x18')]);router[_0xc702('0x17')](_0xc702('0xd'),auth[_0xc702('0x8')](),controller[_0xc702('0x19')]);router[_0xc702('0x17')](_0xc702('0xf'),auth[_0xc702('0x8')](),controller[_0xc702('0x1a')]);router[_0xc702('0x17')](_0xc702('0x1b'),auth[_0xc702('0x8')](),controller['addInteraction']);router['post'](_0xc702('0x12'),auth['isAuthenticated'](),controller[_0xc702('0x1c')]);router['post'](_0xc702('0x1d'),auth['isAuthenticated'](),controller['addAccountApplications']);router[_0xc702('0x17')](_0xc702('0x1e'),auth[_0xc702('0x8')](),controller[_0xc702('0x1f')]);router[_0xc702('0x17')](_0xc702('0x20'),auth[_0xc702('0x8')](),controller[_0xc702('0x21')]);router[_0xc702('0x17')](_0xc702('0x15'),auth[_0xc702('0x8')](),controller[_0xc702('0x22')]);router[_0xc702('0x23')]('/:id',auth[_0xc702('0x8')](),controller[_0xc702('0x24')]);router[_0xc702('0x25')](_0xc702('0xb'),auth['isAuthenticated'](),controller['destroy']);router['delete'](_0xc702('0xd'),auth['isAuthenticated'](),controller[_0xc702('0x26')]);router[_0xc702('0x25')](_0xc702('0xf'),auth['isAuthenticated'](),controller[_0xc702('0x27')]);router[_0xc702('0x25')](_0xc702('0x15'),auth[_0xc702('0x8')](),controller[_0xc702('0x28')]);module[_0xc702('0x29')]=router;
\ No newline at end of file
+var _0x183b=['getInteractions','/:id/applications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addInteraction','addApplications','updateAccountApplications','/:id/send','send','addAgents','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxAccount.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/dispositions','/:id/interactions'];(function(_0x565a3d,_0x3563cd){var _0x1ad15b=function(_0x188d38){while(--_0x188d38){_0x565a3d['push'](_0x565a3d['shift']());}};_0x1ad15b(++_0x3563cd);}(_0x183b,0xda));var _0xb183=function(_0x570b40,_0x1df642){_0x570b40=_0x570b40-0x0;var _0x17f7d8=_0x183b[_0x570b40];return _0x17f7d8;};'use strict';var multer=require(_0xb183('0x0'));var util=require('util');var path=require(_0xb183('0x1'));var timeout=require('connect-timeout');var express=require(_0xb183('0x2'));var router=express[_0xb183('0x3')]();var fs_extra=require(_0xb183('0x4'));var auth=require(_0xb183('0x5'));var interaction=require(_0xb183('0x6'));var config=require('../../config/environment');var controller=require(_0xb183('0x7'));router[_0xb183('0x8')]('/',auth[_0xb183('0x9')](),controller['index']);router[_0xb183('0x8')](_0xb183('0xa'),auth[_0xb183('0x9')](),controller[_0xb183('0xb')]);router[_0xb183('0x8')](_0xb183('0xc'),auth[_0xb183('0x9')](),controller[_0xb183('0xd')]);router[_0xb183('0x8')](_0xb183('0xe'),auth[_0xb183('0x9')](),controller['getDispositions']);router[_0xb183('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0xb183('0xf'),auth[_0xb183('0x9')](),controller[_0xb183('0x10')]);router[_0xb183('0x8')](_0xb183('0x11'),auth[_0xb183('0x9')](),controller['getApplications']);router['get'](_0xb183('0x12'),auth[_0xb183('0x9')](),controller[_0xb183('0x13')]);router[_0xb183('0x8')](_0xb183('0x14'),auth[_0xb183('0x9')](),controller[_0xb183('0x15')]);router[_0xb183('0x16')]('/',auth[_0xb183('0x9')](),controller['create']);router[_0xb183('0x16')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0xb183('0x17')]);router[_0xb183('0x16')](_0xb183('0x18'),auth[_0xb183('0x9')](),controller['addAnswer']);router[_0xb183('0x16')](_0xb183('0xf'),auth[_0xb183('0x9')](),controller[_0xb183('0x19')]);router[_0xb183('0x16')]('/:id/applications',auth[_0xb183('0x9')](),controller[_0xb183('0x1a')]);router[_0xb183('0x16')]('/addaccountapplications',auth['isAuthenticated'](),controller['addAccountApplications']);router[_0xb183('0x16')]('/updateaccountapplications',auth[_0xb183('0x9')](),controller[_0xb183('0x1b')]);router[_0xb183('0x16')](_0xb183('0x1c'),auth['isAuthenticated'](),controller[_0xb183('0x1d')]);router['post']('/:id/users',auth[_0xb183('0x9')](),controller[_0xb183('0x1e')]);router[_0xb183('0x1f')]('/:id',auth[_0xb183('0x9')](),controller[_0xb183('0x20')]);router[_0xb183('0x21')](_0xb183('0xc'),auth[_0xb183('0x9')](),controller[_0xb183('0x22')]);router['delete'](_0xb183('0xe'),auth[_0xb183('0x9')](),controller[_0xb183('0x23')]);router[_0xb183('0x21')]('/:id/canned_answers',auth[_0xb183('0x9')](),controller[_0xb183('0x24')]);router['delete'](_0xb183('0x14'),auth['isAuthenticated'](),controller[_0xb183('0x25')]);module[_0xb183('0x26')]=router;
\ No newline at end of file
index 3eb1651..77ba5d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc92e=['STRING','noop','*,*,*,*','exports'];(function(_0x473b87,_0x3fb8d3){var _0x41e241=function(_0x3a4da4){while(--_0x3a4da4){_0x473b87['push'](_0x473b87['shift']());}};_0x41e241(++_0x3fb8d3);}(_0xc92e,0x8f));var _0xec92=function(_0x56e775,_0x468827){_0x56e775=_0x56e775-0x0;var _0x37dacd=_0xc92e[_0x56e775];return _0x37dacd;};'use strict';var Sequelize=require('sequelize');module[_0xec92('0x0')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xec92('0x1')],'allowNull':![],'defaultValue':_0xec92('0x2')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xec92('0x1')],'defaultValue':_0xec92('0x3')}};
\ No newline at end of file
+var _0x7bfc=['TEXT','*,*,*,*','sequelize','exports','INTEGER','STRING','noop'];(function(_0x1349be,_0x50d323){var _0x49c99a=function(_0x59502a){while(--_0x59502a){_0x1349be['push'](_0x1349be['shift']());}};_0x49c99a(++_0x50d323);}(_0x7bfc,0x64));var _0xc7bf=function(_0x4a6526,_0x30fd37){_0x4a6526=_0x4a6526-0x0;var _0x31d021=_0x7bfc[_0x4a6526];return _0x31d021;};'use strict';var Sequelize=require(_0xc7bf('0x0'));module[_0xc7bf('0x1')]={'priority':{'type':Sequelize[_0xc7bf('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xc7bf('0x3')],'allowNull':![],'defaultValue':_0xc7bf('0x4')},'appdata':{'type':Sequelize[_0xc7bf('0x5')]()},'description':{'type':Sequelize[_0xc7bf('0x3')]},'interval':{'type':Sequelize[_0xc7bf('0x3')],'defaultValue':_0xc7bf('0x6')}};
\ No newline at end of file
index 8c43e14..d13f9b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c1a=['type','key','model','map','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','FaxApplication','includeAll','include','findAll','show','params','keys','catch','create','body','find','request-promise','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','count','offset','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','rawAttributes'];(function(_0x2b2325,_0x2400fb){var _0x37b7f2=function(_0x47b4ed){while(--_0x47b4ed){_0x2b2325['push'](_0x2b2325['shift']());}};_0x37b7f2(++_0x2400fb);}(_0x3c1a,0x1d4));var _0xa3c1=function(_0x5eef05,_0x1be989){_0x5eef05=_0x5eef05-0x0;var _0x56d4b8=_0x3c1a[_0x5eef05];return _0x56d4b8;};'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(_0xa3c1('0x0'));var moment=require('moment');var BPromise=require(_0xa3c1('0x1'));var Mustache=require(_0xa3c1('0x2'));var util=require(_0xa3c1('0x3'));var path=require('path');var sox=require(_0xa3c1('0x4'));var csv=require(_0xa3c1('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa3c1('0x6'));var _=require(_0xa3c1('0x7'));var squel=require(_0xa3c1('0x8'));var crypto=require('crypto');var jsforce=require(_0xa3c1('0x9'));var deskjs=require(_0xa3c1('0xa'));var toCsv=require(_0xa3c1('0x5'));var querystring=require('querystring');var Papa=require(_0xa3c1('0xb'));var Redis=require(_0xa3c1('0xc'));var authService=require(_0xa3c1('0xd'));var qs=require(_0xa3c1('0xe'));var as=require(_0xa3c1('0xf'));var hardwareService=require(_0xa3c1('0x10'));var logger=require(_0xa3c1('0x11'))(_0xa3c1('0x12'));var utils=require(_0xa3c1('0x13'));var config=require(_0xa3c1('0x14'));var licenseUtil=require(_0xa3c1('0x15'));var db=require(_0xa3c1('0x16'))['db'];function respondWithStatusCode(_0xa1e31b,_0x28a0ee){_0x28a0ee=_0x28a0ee||0xcc;return function(_0x156230){if(_0x156230){return _0xa1e31b[_0xa3c1('0x17')](_0x28a0ee);}return _0xa1e31b[_0xa3c1('0x18')](_0x28a0ee)[_0xa3c1('0x19')]();};}function respondWithResult(_0x1043de,_0x4bb6d6){_0x4bb6d6=_0x4bb6d6||0xc8;return function(_0x2e8ab2){if(_0x2e8ab2){return _0x1043de[_0xa3c1('0x18')](_0x4bb6d6)[_0xa3c1('0x1a')](_0x2e8ab2);}};}function respondWithFilteredResult(_0x43425e,_0x55b45d){return function(_0x1ec10d){if(_0x1ec10d){var _0x160f53=typeof _0x55b45d['offset']==='undefined'&&typeof _0x55b45d[_0xa3c1('0x1b')]==='undefined';var _0x41b0b7=_0x1ec10d[_0xa3c1('0x1c')];var _0x4e90fd=_0x160f53?0x0:_0x55b45d[_0xa3c1('0x1d')];var _0x4c5e8f=_0x160f53?_0x1ec10d['count']:_0x55b45d[_0xa3c1('0x1d')]+_0x55b45d[_0xa3c1('0x1b')];var _0x478885;if(_0x4c5e8f>=_0x41b0b7){_0x4c5e8f=_0x41b0b7;_0x478885=0xc8;}else{_0x478885=0xce;}_0x43425e['status'](_0x478885);return _0x43425e[_0xa3c1('0x1e')](_0xa3c1('0x1f'),_0x4e90fd+'-'+_0x4c5e8f+'/'+_0x41b0b7)[_0xa3c1('0x1a')](_0x1ec10d);}return null;};}function patchUpdates(_0x4ba9da){return function(_0x3632da){try{jsonpatch[_0xa3c1('0x20')](_0x3632da,_0x4ba9da,!![]);}catch(_0x541c2b){return BPromise['reject'](_0x541c2b);}return _0x3632da[_0xa3c1('0x21')]();};}function saveUpdates(_0x5d91bb,_0xb8cd1e){return function(_0x3c0d0d){if(_0x3c0d0d){return _0x3c0d0d[_0xa3c1('0x22')](_0x5d91bb)[_0xa3c1('0x23')](function(_0xed7e7a){return _0xed7e7a;});}return null;};}function removeEntity(_0x144656,_0x3c416f){return function(_0x1231f1){if(_0x1231f1){return _0x1231f1[_0xa3c1('0x24')]()[_0xa3c1('0x23')](function(){_0x144656['status'](0xcc)[_0xa3c1('0x19')]();});}};}function handleEntityNotFound(_0x50cd18,_0x58b8f9){return function(_0x1bf018){if(!_0x1bf018){_0x50cd18['sendStatus'](0x194);}return _0x1bf018;};}function handleError(_0x472272,_0x3a6bf9){_0x3a6bf9=_0x3a6bf9||0x1f4;return function(_0x5ee1fc){logger[_0xa3c1('0x25')](_0x5ee1fc[_0xa3c1('0x26')]);if(_0x5ee1fc[_0xa3c1('0x27')]){delete _0x5ee1fc['name'];}_0x472272[_0xa3c1('0x18')](_0x3a6bf9)[_0xa3c1('0x28')](_0x5ee1fc);};}exports[_0xa3c1('0x29')]=function(_0x4ae49f,_0x1b0f33){var _0x4a517c={},_0x36bef4={},_0x38b6f2={'count':0x0,'rows':[]};var _0x2b6184=_['map'](db['FaxApplication'][_0xa3c1('0x2a')],function(_0x525bda){return{'name':_0x525bda['fieldName'],'type':_0x525bda[_0xa3c1('0x2b')][_0xa3c1('0x2c')]};});_0x36bef4[_0xa3c1('0x2d')]=_[_0xa3c1('0x2e')](_0x2b6184,_0xa3c1('0x27'));_0x36bef4['query']=_['keys'](_0x4ae49f[_0xa3c1('0x2f')]);_0x36bef4[_0xa3c1('0x30')]=_[_0xa3c1('0x31')](_0x36bef4['model'],_0x36bef4[_0xa3c1('0x2f')]);_0x4a517c['attributes']=_[_0xa3c1('0x31')](_0x36bef4[_0xa3c1('0x2d')],qs[_0xa3c1('0x32')](_0x4ae49f['query'][_0xa3c1('0x32')]));_0x4a517c['attributes']=_0x4a517c[_0xa3c1('0x33')][_0xa3c1('0x34')]?_0x4a517c[_0xa3c1('0x33')]:_0x36bef4[_0xa3c1('0x2d')];if(!_0x4ae49f['query']['hasOwnProperty'](_0xa3c1('0x35'))){_0x4a517c[_0xa3c1('0x1b')]=qs['limit'](_0x4ae49f['query']['limit']);_0x4a517c[_0xa3c1('0x1d')]=qs[_0xa3c1('0x1d')](_0x4ae49f[_0xa3c1('0x2f')][_0xa3c1('0x1d')]);}_0x4a517c[_0xa3c1('0x36')]=qs[_0xa3c1('0x37')](_0x4ae49f[_0xa3c1('0x2f')][_0xa3c1('0x37')]);_0x4a517c[_0xa3c1('0x38')]=qs[_0xa3c1('0x30')](_[_0xa3c1('0x39')](_0x4ae49f[_0xa3c1('0x2f')],_0x36bef4[_0xa3c1('0x30')]),_0x2b6184);if(_0x4ae49f[_0xa3c1('0x2f')][_0xa3c1('0x3a')]){_0x4a517c[_0xa3c1('0x38')]=_[_0xa3c1('0x3b')](_0x4a517c[_0xa3c1('0x38')],{'$or':_[_0xa3c1('0x2e')](_0x2b6184,function(_0x4d2955){if(_0x4d2955[_0xa3c1('0x2b')]!==_0xa3c1('0x3c')){var _0x51a50f={};_0x51a50f[_0x4d2955[_0xa3c1('0x27')]]={'$like':'%'+_0x4ae49f['query'][_0xa3c1('0x3a')]+'%'};return _0x51a50f;}})});}_0x4a517c=_[_0xa3c1('0x3b')]({},_0x4a517c,_0x4ae49f[_0xa3c1('0x3d')]);var _0x115090={'where':_0x4a517c['where']};return db[_0xa3c1('0x3e')][_0xa3c1('0x1c')](_0x115090)[_0xa3c1('0x23')](function(_0x595a8c){_0x38b6f2[_0xa3c1('0x1c')]=_0x595a8c;if(_0x4ae49f[_0xa3c1('0x2f')][_0xa3c1('0x3f')]){_0x4a517c[_0xa3c1('0x40')]=[{'all':!![]}];}return db[_0xa3c1('0x3e')][_0xa3c1('0x41')](_0x4a517c);})['then'](function(_0xe66f2e){_0x38b6f2['rows']=_0xe66f2e;return _0x38b6f2;})[_0xa3c1('0x23')](respondWithFilteredResult(_0x1b0f33,_0x4a517c))['catch'](handleError(_0x1b0f33,null));};exports[_0xa3c1('0x42')]=function(_0x105c95,_0x509664){var _0x32542f={'raw':!![],'where':{'id':_0x105c95[_0xa3c1('0x43')]['id']}},_0x97edcd={};_0x97edcd[_0xa3c1('0x2d')]=_[_0xa3c1('0x44')](db[_0xa3c1('0x3e')]['rawAttributes']);_0x97edcd[_0xa3c1('0x2f')]=_['keys'](_0x105c95[_0xa3c1('0x2f')]);_0x97edcd[_0xa3c1('0x30')]=_['intersection'](_0x97edcd['model'],_0x97edcd['query']);_0x32542f['attributes']=_[_0xa3c1('0x31')](_0x97edcd[_0xa3c1('0x2d')],qs['fields'](_0x105c95[_0xa3c1('0x2f')][_0xa3c1('0x32')]));_0x32542f['attributes']=_0x32542f['attributes'][_0xa3c1('0x34')]?_0x32542f[_0xa3c1('0x33')]:_0x97edcd[_0xa3c1('0x2d')];if(_0x105c95[_0xa3c1('0x2f')][_0xa3c1('0x3f')]){_0x32542f[_0xa3c1('0x40')]=[{'all':!![]}];}_0x32542f=_[_0xa3c1('0x3b')]({},_0x32542f,_0x105c95['options']);return db[_0xa3c1('0x3e')]['find'](_0x32542f)[_0xa3c1('0x23')](handleEntityNotFound(_0x509664,null))['then'](respondWithResult(_0x509664,null))[_0xa3c1('0x45')](handleError(_0x509664,null));};exports[_0xa3c1('0x46')]=function(_0xe31f02,_0x267293){return db[_0xa3c1('0x3e')][_0xa3c1('0x46')](_0xe31f02[_0xa3c1('0x47')],{})[_0xa3c1('0x23')](respondWithResult(_0x267293,0xc9))['catch'](handleError(_0x267293,null));};exports[_0xa3c1('0x22')]=function(_0x2d9bea,_0x20ceb1){if(_0x2d9bea[_0xa3c1('0x47')]['id']){delete _0x2d9bea['body']['id'];}return db[_0xa3c1('0x3e')][_0xa3c1('0x48')]({'where':{'id':_0x2d9bea[_0xa3c1('0x43')]['id']}})['then'](handleEntityNotFound(_0x20ceb1,null))[_0xa3c1('0x23')](saveUpdates(_0x2d9bea['body'],null))[_0xa3c1('0x23')](respondWithResult(_0x20ceb1,null))['catch'](handleError(_0x20ceb1,null));};exports[_0xa3c1('0x24')]=function(_0x1bfe97,_0x41c72e){return db[_0xa3c1('0x3e')][_0xa3c1('0x48')]({'where':{'id':_0x1bfe97[_0xa3c1('0x43')]['id']}})[_0xa3c1('0x23')](handleEntityNotFound(_0x41c72e,null))['then'](removeEntity(_0x41c72e,null))['catch'](handleError(_0x41c72e,null));};
\ No newline at end of file
+var _0x6e2d=['findAll','rows','catch','params','include','merge','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','to-csv','ejs','fs-extra','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','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','reject','save','update','then','destroy','end','error','stack','name','send','index','map','FaxApplication','rawAttributes','fieldName','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll'];(function(_0x265aa2,_0x220072){var _0x447a3a=function(_0x1512cc){while(--_0x1512cc){_0x265aa2['push'](_0x265aa2['shift']());}};_0x447a3a(++_0x220072);}(_0x6e2d,0x131));var _0xd6e2=function(_0x46451c,_0x88ddd){_0x46451c=_0x46451c-0x0;var _0x12dce4=_0x6e2d[_0x46451c];return _0x12dce4;};'use strict';var emlformat=require(_0xd6e2('0x0'));var rimraf=require(_0xd6e2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd6e2('0x2'));var rp=require(_0xd6e2('0x3'));var moment=require(_0xd6e2('0x4'));var BPromise=require(_0xd6e2('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xd6e2('0x6'));var ejs=require(_0xd6e2('0x7'));var fs=require('fs');var fs_extra=require(_0xd6e2('0x8'));var _=require('lodash');var squel=require(_0xd6e2('0x9'));var crypto=require(_0xd6e2('0xa'));var jsforce=require(_0xd6e2('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xd6e2('0x6'));var querystring=require(_0xd6e2('0xc'));var Papa=require(_0xd6e2('0xd'));var Redis=require('ioredis');var authService=require(_0xd6e2('0xe'));var qs=require(_0xd6e2('0xf'));var as=require(_0xd6e2('0x10'));var hardwareService=require(_0xd6e2('0x11'));var logger=require(_0xd6e2('0x12'))(_0xd6e2('0x13'));var utils=require(_0xd6e2('0x14'));var config=require(_0xd6e2('0x15'));var licenseUtil=require(_0xd6e2('0x16'));var db=require(_0xd6e2('0x17'))['db'];function respondWithStatusCode(_0x4ba129,_0x97fe63){_0x97fe63=_0x97fe63||0xcc;return function(_0x2ee99d){if(_0x2ee99d){return _0x4ba129[_0xd6e2('0x18')](_0x97fe63);}return _0x4ba129[_0xd6e2('0x19')](_0x97fe63)['end']();};}function respondWithResult(_0x4c893c,_0x11f316){_0x11f316=_0x11f316||0xc8;return function(_0xfb0c68){if(_0xfb0c68){return _0x4c893c[_0xd6e2('0x19')](_0x11f316)[_0xd6e2('0x1a')](_0xfb0c68);}};}function respondWithFilteredResult(_0x5cc2b9,_0x4b7182){return function(_0x517c30){if(_0x517c30){var _0xe59154=typeof _0x4b7182[_0xd6e2('0x1b')]==='undefined'&&typeof _0x4b7182[_0xd6e2('0x1c')]===_0xd6e2('0x1d');var _0x5a7221=_0x517c30[_0xd6e2('0x1e')];var _0x1cccdc=_0xe59154?0x0:_0x4b7182[_0xd6e2('0x1b')];var _0x1828f7=_0xe59154?_0x517c30[_0xd6e2('0x1e')]:_0x4b7182['offset']+_0x4b7182[_0xd6e2('0x1c')];var _0x178fa9;if(_0x1828f7>=_0x5a7221){_0x1828f7=_0x5a7221;_0x178fa9=0xc8;}else{_0x178fa9=0xce;}_0x5cc2b9[_0xd6e2('0x19')](_0x178fa9);return _0x5cc2b9[_0xd6e2('0x1f')]('Content-Range',_0x1cccdc+'-'+_0x1828f7+'/'+_0x5a7221)[_0xd6e2('0x1a')](_0x517c30);}return null;};}function patchUpdates(_0x606245){return function(_0x1e8009){try{jsonpatch['apply'](_0x1e8009,_0x606245,!![]);}catch(_0x59e7b4){return BPromise[_0xd6e2('0x20')](_0x59e7b4);}return _0x1e8009[_0xd6e2('0x21')]();};}function saveUpdates(_0x46d03e,_0x313e4b){return function(_0x284bf3){if(_0x284bf3){return _0x284bf3[_0xd6e2('0x22')](_0x46d03e)[_0xd6e2('0x23')](function(_0x435a8e){return _0x435a8e;});}return null;};}function removeEntity(_0x19813d,_0xd13305){return function(_0x190b24){if(_0x190b24){return _0x190b24[_0xd6e2('0x24')]()['then'](function(){_0x19813d['status'](0xcc)[_0xd6e2('0x25')]();});}};}function handleEntityNotFound(_0x20f958,_0xa5bd9e){return function(_0x86342b){if(!_0x86342b){_0x20f958[_0xd6e2('0x18')](0x194);}return _0x86342b;};}function handleError(_0x8b05c,_0x4193c9){_0x4193c9=_0x4193c9||0x1f4;return function(_0x44be63){logger[_0xd6e2('0x26')](_0x44be63[_0xd6e2('0x27')]);if(_0x44be63['name']){delete _0x44be63[_0xd6e2('0x28')];}_0x8b05c[_0xd6e2('0x19')](_0x4193c9)[_0xd6e2('0x29')](_0x44be63);};}exports[_0xd6e2('0x2a')]=function(_0x45eae9,_0x4d23a9){var _0x425078={},_0x549ce0={},_0x2a4061={'count':0x0,'rows':[]};var _0x89c355=_[_0xd6e2('0x2b')](db[_0xd6e2('0x2c')][_0xd6e2('0x2d')],function(_0x1e2aa6){return{'name':_0x1e2aa6[_0xd6e2('0x2e')],'type':_0x1e2aa6['type']['key']};});_0x549ce0['model']=_[_0xd6e2('0x2b')](_0x89c355,'name');_0x549ce0[_0xd6e2('0x2f')]=_[_0xd6e2('0x30')](_0x45eae9[_0xd6e2('0x2f')]);_0x549ce0[_0xd6e2('0x31')]=_[_0xd6e2('0x32')](_0x549ce0[_0xd6e2('0x33')],_0x549ce0[_0xd6e2('0x2f')]);_0x425078[_0xd6e2('0x34')]=_['intersection'](_0x549ce0[_0xd6e2('0x33')],qs[_0xd6e2('0x35')](_0x45eae9[_0xd6e2('0x2f')][_0xd6e2('0x35')]));_0x425078[_0xd6e2('0x34')]=_0x425078[_0xd6e2('0x34')][_0xd6e2('0x36')]?_0x425078[_0xd6e2('0x34')]:_0x549ce0[_0xd6e2('0x33')];if(!_0x45eae9['query'][_0xd6e2('0x37')](_0xd6e2('0x38'))){_0x425078['limit']=qs['limit'](_0x45eae9['query']['limit']);_0x425078[_0xd6e2('0x1b')]=qs[_0xd6e2('0x1b')](_0x45eae9[_0xd6e2('0x2f')][_0xd6e2('0x1b')]);}_0x425078[_0xd6e2('0x39')]=qs['sort'](_0x45eae9[_0xd6e2('0x2f')][_0xd6e2('0x3a')]);_0x425078[_0xd6e2('0x3b')]=qs['filters'](_[_0xd6e2('0x3c')](_0x45eae9[_0xd6e2('0x2f')],_0x549ce0['filters']),_0x89c355);if(_0x45eae9[_0xd6e2('0x2f')][_0xd6e2('0x3d')]){_0x425078[_0xd6e2('0x3b')]=_['merge'](_0x425078[_0xd6e2('0x3b')],{'$or':_[_0xd6e2('0x2b')](_0x89c355,function(_0x2ab2c1){if(_0x2ab2c1['type']!==_0xd6e2('0x3e')){var _0x479d49={};_0x479d49[_0x2ab2c1['name']]={'$like':'%'+_0x45eae9[_0xd6e2('0x2f')]['filter']+'%'};return _0x479d49;}})});}_0x425078=_['merge']({},_0x425078,_0x45eae9[_0xd6e2('0x3f')]);var _0x1c703c={'where':_0x425078[_0xd6e2('0x3b')]};return db['FaxApplication'][_0xd6e2('0x1e')](_0x1c703c)[_0xd6e2('0x23')](function(_0x467a11){_0x2a4061[_0xd6e2('0x1e')]=_0x467a11;if(_0x45eae9[_0xd6e2('0x2f')][_0xd6e2('0x40')]){_0x425078['include']=[{'all':!![]}];}return db[_0xd6e2('0x2c')][_0xd6e2('0x41')](_0x425078);})[_0xd6e2('0x23')](function(_0x4883d9){_0x2a4061[_0xd6e2('0x42')]=_0x4883d9;return _0x2a4061;})[_0xd6e2('0x23')](respondWithFilteredResult(_0x4d23a9,_0x425078))[_0xd6e2('0x43')](handleError(_0x4d23a9,null));};exports['show']=function(_0x3f3f94,_0x2522f0){var _0x586765={'raw':!![],'where':{'id':_0x3f3f94[_0xd6e2('0x44')]['id']}},_0x1760e8={};_0x1760e8[_0xd6e2('0x33')]=_[_0xd6e2('0x30')](db[_0xd6e2('0x2c')]['rawAttributes']);_0x1760e8['query']=_['keys'](_0x3f3f94[_0xd6e2('0x2f')]);_0x1760e8[_0xd6e2('0x31')]=_[_0xd6e2('0x32')](_0x1760e8[_0xd6e2('0x33')],_0x1760e8[_0xd6e2('0x2f')]);_0x586765['attributes']=_[_0xd6e2('0x32')](_0x1760e8[_0xd6e2('0x33')],qs['fields'](_0x3f3f94[_0xd6e2('0x2f')][_0xd6e2('0x35')]));_0x586765[_0xd6e2('0x34')]=_0x586765[_0xd6e2('0x34')][_0xd6e2('0x36')]?_0x586765['attributes']:_0x1760e8[_0xd6e2('0x33')];if(_0x3f3f94[_0xd6e2('0x2f')][_0xd6e2('0x40')]){_0x586765[_0xd6e2('0x45')]=[{'all':!![]}];}_0x586765=_[_0xd6e2('0x46')]({},_0x586765,_0x3f3f94[_0xd6e2('0x3f')]);return db[_0xd6e2('0x2c')][_0xd6e2('0x47')](_0x586765)[_0xd6e2('0x23')](handleEntityNotFound(_0x2522f0,null))[_0xd6e2('0x23')](respondWithResult(_0x2522f0,null))[_0xd6e2('0x43')](handleError(_0x2522f0,null));};exports[_0xd6e2('0x48')]=function(_0x2e2449,_0xd4ab04){return db['FaxApplication'][_0xd6e2('0x48')](_0x2e2449[_0xd6e2('0x49')],{})[_0xd6e2('0x23')](respondWithResult(_0xd4ab04,0xc9))[_0xd6e2('0x43')](handleError(_0xd4ab04,null));};exports['update']=function(_0x37250a,_0x2439e6){if(_0x37250a[_0xd6e2('0x49')]['id']){delete _0x37250a[_0xd6e2('0x49')]['id'];}return db[_0xd6e2('0x2c')][_0xd6e2('0x47')]({'where':{'id':_0x37250a[_0xd6e2('0x44')]['id']}})['then'](handleEntityNotFound(_0x2439e6,null))[_0xd6e2('0x23')](saveUpdates(_0x37250a[_0xd6e2('0x49')],null))[_0xd6e2('0x23')](respondWithResult(_0x2439e6,null))[_0xd6e2('0x43')](handleError(_0x2439e6,null));};exports[_0xd6e2('0x24')]=function(_0x171c17,_0x142290){return db['FaxApplication'][_0xd6e2('0x47')]({'where':{'id':_0x171c17[_0xd6e2('0x44')]['id']}})[_0xd6e2('0x23')](handleEntityNotFound(_0x142290,null))[_0xd6e2('0x23')](removeEntity(_0x142290,null))['catch'](handleError(_0x142290,null));};
\ No newline at end of file
index 1204eef..3eba94e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc91b=['path','rimraf','../../config/environment','./faxApplication.attributes','exports','define','FaxApplication','fax_applications','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','bluebird'];(function(_0x578275,_0xe7ae46){var _0xf78041=function(_0x13148c){while(--_0x13148c){_0x578275['push'](_0x578275['shift']());}};_0xf78041(++_0xe7ae46);}(_0xc91b,0x101));var _0xbc91=function(_0x151685,_0x10a578){_0x151685=_0x151685-0x0;var _0x4fb1a4=_0xc91b[_0x151685];return _0x4fb1a4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xbc91('0x0'))(_0xbc91('0x1'));var moment=require('moment');var BPromise=require(_0xbc91('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbc91('0x3'));var rimraf=require(_0xbc91('0x4'));var config=require(_0xbc91('0x5'));var attributes=require(_0xbc91('0x6'));module[_0xbc91('0x7')]=function(_0x5027d4,_0x58c41f){return _0x5027d4[_0xbc91('0x8')](_0xbc91('0x9'),attributes,{'tableName':_0xbc91('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xbc91('0xb'),'collate':_0xbc91('0xc')});};
\ No newline at end of file
+var _0xf24f=['../../config/environment','exports','define','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x24cf6b,_0x157392){var _0x331ab1=function(_0x31bf99){while(--_0x31bf99){_0x24cf6b['push'](_0x24cf6b['shift']());}};_0x331ab1(++_0x157392);}(_0xf24f,0x1b2));var _0xff24=function(_0x4a7e98,_0x250137){_0x4a7e98=_0x4a7e98-0x0;var _0x27d10d=_0xf24f[_0x4a7e98];return _0x27d10d;};'use strict';var _=require('lodash');var util=require(_0xff24('0x0'));var logger=require(_0xff24('0x1'))(_0xff24('0x2'));var moment=require(_0xff24('0x3'));var BPromise=require(_0xff24('0x4'));var rp=require(_0xff24('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xff24('0x6'));var attributes=require('./faxApplication.attributes');module[_0xff24('0x7')]=function(_0x27bb1f,_0x44c04c){return _0x27bb1f[_0xff24('0x8')]('FaxApplication',attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xff24('0x9'),'collate':_0xff24('0xa')});};
\ No newline at end of file
index 569a95a..3d86dc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb000=['debug','FaxApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateFaxApplication','FaxApplication','update','body','options','raw','where','attributes','lodash','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','then','info','FaxApplication,\x20%s,\x20%s'];(function(_0x54f52d,_0x5bc394){var _0x1b483e=function(_0x2e34fe){while(--_0x2e34fe){_0x54f52d['push'](_0x54f52d['shift']());}};_0x1b483e(++_0x5bc394);}(_0xb000,0x1a7));var _0x0b00=function(_0xdefbc3,_0x1ea49a){_0xdefbc3=_0xdefbc3-0x0;var _0x367798=_0xb000[_0xdefbc3];return _0x367798;};'use strict';var _=require(_0x0b00('0x0'));var util=require('util');var moment=require(_0x0b00('0x1'));var BPromise=require(_0x0b00('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0b00('0x3'));var db=require(_0x0b00('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x0b00('0x5'));var config=require(_0x0b00('0x6'));var jayson=require(_0x0b00('0x7'));var client=jayson[_0x0b00('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x24f76b,_0x37bd48,_0x1b4523){return new BPromise(function(_0x34fabe,_0x5145af){return client['request'](_0x24f76b,_0x1b4523)[_0x0b00('0x9')](function(_0x19d76b){logger[_0x0b00('0xa')](_0x0b00('0xb'),_0x37bd48,'request\x20sent');logger[_0x0b00('0xc')](_0x0b00('0xd'),_0x37bd48,_0x0b00('0xe'),JSON[_0x0b00('0xf')](_0x19d76b));if(_0x19d76b[_0x0b00('0x10')]){if(_0x19d76b[_0x0b00('0x10')][_0x0b00('0x11')]===0x1f4){logger['error'](_0x0b00('0xb'),_0x37bd48,_0x19d76b[_0x0b00('0x10')][_0x0b00('0x12')]);return _0x5145af(_0x19d76b['error'][_0x0b00('0x12')]);}logger[_0x0b00('0x10')](_0x0b00('0xb'),_0x37bd48,_0x19d76b[_0x0b00('0x10')][_0x0b00('0x12')]);return _0x34fabe(_0x19d76b[_0x0b00('0x10')][_0x0b00('0x12')]);}else{logger[_0x0b00('0xa')](_0x0b00('0xb'),_0x37bd48,_0x0b00('0xe'));_0x34fabe(_0x19d76b[_0x0b00('0x13')][_0x0b00('0x12')]);}})[_0x0b00('0x14')](function(_0x1aca85){logger[_0x0b00('0x10')](_0x0b00('0xb'),_0x37bd48,_0x1aca85);_0x5145af(_0x1aca85);});});}exports[_0x0b00('0x15')]=function(_0x45cf82){var _0x5d5f19=this;return new Promise(function(_0x61554a,_0x29969f){return db[_0x0b00('0x16')][_0x0b00('0x17')](_0x45cf82[_0x0b00('0x18')],{'raw':_0x45cf82[_0x0b00('0x19')]?_0x45cf82[_0x0b00('0x19')][_0x0b00('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x45cf82['options']?_0x45cf82[_0x0b00('0x19')][_0x0b00('0x1b')]||null:null,'attributes':_0x45cf82[_0x0b00('0x19')]?_0x45cf82[_0x0b00('0x19')][_0x0b00('0x1c')]||null:null,'limit':_0x45cf82['options']?_0x45cf82['options']['limit']||null:null})['then'](function(_0x165566){logger['info'](_0x0b00('0x15'),_0x45cf82);logger[_0x0b00('0xc')]('UpdateFaxApplication',_0x45cf82,JSON[_0x0b00('0xf')](_0x165566));_0x61554a(_0x165566);})[_0x0b00('0x14')](function(_0x54a01f){logger[_0x0b00('0x10')](_0x0b00('0x15'),_0x54a01f['message'],_0x45cf82);_0x29969f(_0x5d5f19[_0x0b00('0x10')](0x1f4,_0x54a01f[_0x0b00('0x12')]));});});};
\ No newline at end of file
+var _0x7094=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','UpdateFaxApplication','FaxApplication','update','body','options','where','attributes','limit','info','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x437546,_0x334f47){var _0x36b04f=function(_0x1d580a){while(--_0x1d580a){_0x437546['push'](_0x437546['shift']());}};_0x36b04f(++_0x334f47);}(_0x7094,0xda));var _0x4709=function(_0x14825c,_0x58a278){_0x14825c=_0x14825c-0x0;var _0x5e133e=_0x7094[_0x14825c];return _0x5e133e;};'use strict';var _=require(_0x4709('0x0'));var util=require(_0x4709('0x1'));var moment=require(_0x4709('0x2'));var BPromise=require(_0x4709('0x3'));var rs=require(_0x4709('0x4'));var fs=require('fs');var Redis=require(_0x4709('0x5'));var db=require(_0x4709('0x6'))['db'];var utils=require(_0x4709('0x7'));var logger=require(_0x4709('0x8'))('rpc');var config=require(_0x4709('0x9'));var jayson=require(_0x4709('0xa'));var client=jayson['client'][_0x4709('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x263039,_0x194a7b,_0x5d1d8a){return new BPromise(function(_0x5efdb4,_0x44d286){return client[_0x4709('0xc')](_0x263039,_0x5d1d8a)[_0x4709('0xd')](function(_0x3ebda1){logger['info'](_0x4709('0xe'),_0x194a7b,_0x4709('0xf'));logger[_0x4709('0x10')](_0x4709('0x11'),_0x194a7b,_0x4709('0xf'),JSON[_0x4709('0x12')](_0x3ebda1));if(_0x3ebda1['error']){if(_0x3ebda1[_0x4709('0x13')]['code']===0x1f4){logger[_0x4709('0x13')]('FaxApplication,\x20%s,\x20%s',_0x194a7b,_0x3ebda1[_0x4709('0x13')]['message']);return _0x44d286(_0x3ebda1[_0x4709('0x13')][_0x4709('0x14')]);}logger['error'](_0x4709('0xe'),_0x194a7b,_0x3ebda1['error'][_0x4709('0x14')]);return _0x5efdb4(_0x3ebda1[_0x4709('0x13')][_0x4709('0x14')]);}else{logger['info'](_0x4709('0xe'),_0x194a7b,_0x4709('0xf'));_0x5efdb4(_0x3ebda1[_0x4709('0x15')][_0x4709('0x14')]);}})[_0x4709('0x16')](function(_0x5b48a3){logger[_0x4709('0x13')](_0x4709('0xe'),_0x194a7b,_0x5b48a3);_0x44d286(_0x5b48a3);});});}exports[_0x4709('0x17')]=function(_0x286ab4){var _0x41363d=this;return new Promise(function(_0x34bfec,_0x4998af){return db[_0x4709('0x18')][_0x4709('0x19')](_0x286ab4[_0x4709('0x1a')],{'raw':_0x286ab4[_0x4709('0x1b')]?_0x286ab4[_0x4709('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x286ab4['options']?_0x286ab4[_0x4709('0x1b')][_0x4709('0x1c')]||null:null,'attributes':_0x286ab4['options']?_0x286ab4[_0x4709('0x1b')][_0x4709('0x1d')]||null:null,'limit':_0x286ab4[_0x4709('0x1b')]?_0x286ab4['options'][_0x4709('0x1e')]||null:null})[_0x4709('0xd')](function(_0x3bc245){logger[_0x4709('0x1f')]('UpdateFaxApplication',_0x286ab4);logger[_0x4709('0x10')](_0x4709('0x17'),_0x286ab4,JSON['stringify'](_0x3bc245));_0x34bfec(_0x3bc245);})[_0x4709('0x16')](function(_0x48230f){logger[_0x4709('0x13')](_0x4709('0x17'),_0x48230f[_0x4709('0x14')],_0x286ab4);_0x4998af(_0x41363d[_0x4709('0x13')](0x1f4,_0x48230f[_0x4709('0x14')]));});});};
\ No newline at end of file
index 383c797..aec0300 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea28=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./faxApplication.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','destroy','exports','multer'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xea28,0x13a));var _0x8ea2=function(_0x44ff64,_0xdd7040){_0x44ff64=_0x44ff64-0x0;var _0x147e19=_0xea28[_0x44ff64];return _0x147e19;};'use strict';var multer=require(_0x8ea2('0x0'));var util=require(_0x8ea2('0x1'));var path=require(_0x8ea2('0x2'));var timeout=require(_0x8ea2('0x3'));var express=require(_0x8ea2('0x4'));var router=express[_0x8ea2('0x5')]();var fs_extra=require(_0x8ea2('0x6'));var auth=require(_0x8ea2('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x8ea2('0x8'));var controller=require(_0x8ea2('0x9'));router[_0x8ea2('0xa')]('/',auth['isAuthenticated'](),controller[_0x8ea2('0xb')]);router[_0x8ea2('0xa')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0xe')]);router[_0x8ea2('0xf')]('/',auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x10')]);router[_0x8ea2('0x11')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x12')]);router['delete']('/:id',auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x13')]);module[_0x8ea2('0x14')]=router;
\ No newline at end of file
+var _0xda2d=['isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../config/environment','./faxApplication.controller','get'];(function(_0x3c86b4,_0x431782){var _0x268334=function(_0x77a2cc){while(--_0x77a2cc){_0x3c86b4['push'](_0x3c86b4['shift']());}};_0x268334(++_0x431782);}(_0xda2d,0x102));var _0xdda2=function(_0x10828f,_0x298e00){_0x10828f=_0x10828f-0x0;var _0x1ff406=_0xda2d[_0x10828f];return _0x1ff406;};'use strict';var multer=require('multer');var util=require(_0xdda2('0x0'));var path=require(_0xdda2('0x1'));var timeout=require(_0xdda2('0x2'));var express=require(_0xdda2('0x3'));var router=express[_0xdda2('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xdda2('0x5'));var controller=require(_0xdda2('0x6'));router[_0xdda2('0x7')]('/',auth[_0xdda2('0x8')](),controller[_0xdda2('0x9')]);router[_0xdda2('0x7')](_0xdda2('0xa'),auth[_0xdda2('0x8')](),controller[_0xdda2('0xb')]);router[_0xdda2('0xc')]('/',auth['isAuthenticated'](),controller[_0xdda2('0xd')]);router[_0xdda2('0xe')]('/:id',auth[_0xdda2('0x8')](),controller[_0xdda2('0xf')]);router[_0xdda2('0x10')](_0xdda2('0xa'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x11')]);module[_0xdda2('0x12')]=router;
\ No newline at end of file
index bdbb61c..5602aed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8952=['DATE','STRING','out','ENUM','exports','BOOLEAN'];(function(_0x93942f,_0xb48547){var _0x23fcd8=function(_0x4728be){while(--_0x4728be){_0x93942f['push'](_0x93942f['shift']());}};_0x23fcd8(++_0xb48547);}(_0x8952,0x17e));var _0x2895=function(_0x2f2148,_0xc2ff2){_0x2f2148=_0x2f2148-0x0;var _0x3e1996=_0x8952[_0x2f2148];return _0x3e1996;};'use strict';var Sequelize=require('sequelize');module[_0x2895('0x0')]={'closed':{'type':Sequelize[_0x2895('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x2895('0x2')]},'disposition':{'type':Sequelize[_0x2895('0x3')]},'secondDisposition':{'type':Sequelize[_0x2895('0x3')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x2895('0x3')]},'read1stAt':{'type':Sequelize[_0x2895('0x2')]},'fax':{'type':Sequelize[_0x2895('0x3')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x2895('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x2895('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x2895('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'queueId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x5fdc=['out','sequelize','exports','BOOLEAN','DATE','STRING','ENUM'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x5fdc,0x127));var _0xc5fd=function(_0x24785e,_0x344bf3){_0x24785e=_0x24785e-0x0;var _0x24e256=_0x5fdc[_0x24785e];return _0x24e256;};'use strict';var Sequelize=require(_0xc5fd('0x0'));module[_0xc5fd('0x1')]={'closed':{'type':Sequelize[_0xc5fd('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xc5fd('0x3')]},'disposition':{'type':Sequelize[_0xc5fd('0x4')]},'secondDisposition':{'type':Sequelize[_0xc5fd('0x4')]},'thirdDisposition':{'type':Sequelize[_0xc5fd('0x4')]},'note':{'type':Sequelize[_0xc5fd('0x4')]},'read1stAt':{'type':Sequelize[_0xc5fd('0x3')]},'fax':{'type':Sequelize[_0xc5fd('0x4')]},'firstMsgDirection':{'type':Sequelize[_0xc5fd('0x5')]('in',_0xc5fd('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xc5fd('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xc5fd('0x5')]('in',_0xc5fd('0x6')),'defaultValue':'in','allowNull':![]},'queueId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index c7a23ec..dc00122 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x494b=['include','addTags','setTags','spread','faxInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','push','Attachment','Messages','createdAt','get','basename','createReadStream','createWriteStream','resolve','err','unlinkSync','zip-dir','bluebird','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','update','destroy','error','stack','send','index','map','FaxInteraction','rawAttributes','fieldName','type','getOptions','findAll','query','user','catch','show','params','model','keys','intersection','attributes','merge','options','find','then','create','body','describe','addMessage','FaxMessage','ids','omit','fields','length','hasOwnProperty','order','sort','where','pick','filters','FaxInteractionId','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','includeAll'];(function(_0x38ac0c,_0x5b11ec){var _0x173e56=function(_0x5bd697){while(--_0x5bd697){_0x38ac0c['push'](_0x38ac0c['shift']());}};_0x173e56(++_0x5b11ec);}(_0x494b,0x146));var _0xb494=function(_0xbaf094,_0x2f86ad){_0xbaf094=_0xbaf094-0x0;var _0x3974fd=_0x494b[_0xbaf094];return _0x3974fd;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xb494('0x0'));var moment=require('moment');var BPromise=require(_0xb494('0x1'));var util=require(_0xb494('0x2'));var path=require(_0xb494('0x3'));var fs=require('fs');var _=require(_0xb494('0x4'));var Redis=require(_0xb494('0x5'));var interaction=require(_0xb494('0x6'));var qs=require(_0xb494('0x7'));var logger=require(_0xb494('0x8'))(_0xb494('0x9'));var config=require(_0xb494('0xa'));var db=require(_0xb494('0xb'))['db'];config[_0xb494('0xc')]=_['defaults'](config[_0xb494('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xb494('0xd'))(new Redis(config[_0xb494('0xc')]));require(_0xb494('0xe'))[_0xb494('0xf')](socket);function respondWithStatusCode(_0x265dcb,_0x3f96dd){_0x3f96dd=_0x3f96dd||0xcc;return function(_0x546f4c){if(_0x546f4c){return _0x265dcb[_0xb494('0x10')](_0x3f96dd);}return _0x265dcb[_0xb494('0x11')](_0x3f96dd)[_0xb494('0x12')]();};}function respondWithResult(_0x159f46,_0x2a2538){_0x2a2538=_0x2a2538||0xc8;return function(_0x30c7b7){if(_0x30c7b7){return _0x159f46[_0xb494('0x11')](_0x2a2538)[_0xb494('0x13')](_0x30c7b7);}};}function respondWithFilteredResult(_0x535919,_0x2cd061){return function(_0x560c57){if(_0x560c57){var _0x2d547b=typeof _0x2cd061[_0xb494('0x14')]==='undefined'&&typeof _0x2cd061[_0xb494('0x15')]===_0xb494('0x16');var _0x5ecb97=_0x560c57['count'];var _0x1b61c4=_0x2d547b?0x0:_0x2cd061[_0xb494('0x14')];var _0x3d23be=_0x2d547b?_0x560c57[_0xb494('0x17')]:_0x2cd061[_0xb494('0x14')]+_0x2cd061['limit'];var _0x2a19c0;if(_0x3d23be>=_0x5ecb97){_0x3d23be=_0x5ecb97;_0x2a19c0=0xc8;}else{_0x2a19c0=0xce;}_0x535919['status'](_0x2a19c0);return _0x535919[_0xb494('0x18')](_0xb494('0x19'),_0x1b61c4+'-'+_0x3d23be+'/'+_0x5ecb97)[_0xb494('0x13')](_0x560c57);}return null;};}function saveUpdates(_0x49bf25){return function(_0x375145){if(_0x375145){return _0x375145[_0xb494('0x1a')](_0x49bf25)['then'](function(_0x1d6469){return _0x1d6469;});}return null;};}function removeEntity(_0x4d6376){return function(_0x555d63){if(_0x555d63){return _0x555d63[_0xb494('0x1b')]()['then'](function(){_0x4d6376[_0xb494('0x11')](0xcc)[_0xb494('0x12')]();});}};}function handleEntityNotFound(_0x501588){return function(_0xe0b596){if(!_0xe0b596){_0x501588[_0xb494('0x10')](0x194);}return _0xe0b596;};}function handleError(_0x1dbb0d,_0x43143e){_0x43143e=_0x43143e||0x1f4;return function(_0x4720d6){logger[_0xb494('0x1c')](_0x4720d6[_0xb494('0x1d')]);if(_0x4720d6['name']){delete _0x4720d6['name'];}_0x1dbb0d['status'](_0x43143e)[_0xb494('0x1e')](_0x4720d6);};}exports[_0xb494('0x1f')]=function(_0x319d3d,_0x4a7dc9){var _0x1b1615={};var _0x4642ac=_[_0xb494('0x20')](db[_0xb494('0x21')][_0xb494('0x22')],function(_0x20210f){return{'name':_0x20210f[_0xb494('0x23')],'type':_0x20210f[_0xb494('0x24')]['key']};});_0x1b1615=qs[_0xb494('0x25')](_0x4642ac,_0x319d3d);return interaction[_0xb494('0x26')]('fax',_0x319d3d[_0xb494('0x27')],_0x319d3d[_0xb494('0x28')],_0x1b1615,_0x4642ac)['then'](respondWithFilteredResult(_0x4a7dc9,_0x1b1615))[_0xb494('0x29')](handleError(_0x4a7dc9,null));};exports[_0xb494('0x2a')]=function(_0x42ae14,_0x52f878){var _0x478639={'raw':![],'where':{'id':_0x42ae14[_0xb494('0x2b')]['id']}},_0x287e8c={};_0x287e8c[_0xb494('0x2c')]=_[_0xb494('0x2d')](db['FaxInteraction'][_0xb494('0x22')]);_0x287e8c['query']=_['keys'](_0x42ae14[_0xb494('0x27')]);_0x287e8c['filters']=_[_0xb494('0x2e')](_0x287e8c[_0xb494('0x2c')],_0x287e8c[_0xb494('0x27')]);_0x478639[_0xb494('0x2f')]=_[_0xb494('0x2e')](_0x287e8c['model'],qs['fields'](_0x42ae14[_0xb494('0x27')]['fields']));_0x478639['attributes']=_0x478639[_0xb494('0x2f')]['length']?_0x478639[_0xb494('0x2f')]:_0x287e8c[_0xb494('0x2c')];if(_0x42ae14[_0xb494('0x27')]['includeAll']){_0x478639['include']=[{'all':!![]}];}_0x478639=_[_0xb494('0x30')]({},_0x478639,_0x42ae14[_0xb494('0x31')]);return db['FaxInteraction'][_0xb494('0x32')](_0x478639)[_0xb494('0x33')](handleEntityNotFound(_0x52f878,null))[_0xb494('0x33')](respondWithResult(_0x52f878,null))['catch'](handleError(_0x52f878,null));};exports[_0xb494('0x34')]=function(_0x2406c4,_0x45590e){return db[_0xb494('0x21')]['create'](_0x2406c4['body'],{})[_0xb494('0x33')](respondWithResult(_0x45590e,0xc9))[_0xb494('0x29')](handleError(_0x45590e,null));};exports[_0xb494('0x1a')]=function(_0x9436f6,_0x4a87bd){if(_0x9436f6[_0xb494('0x35')]['id']){delete _0x9436f6[_0xb494('0x35')]['id'];}return db[_0xb494('0x21')][_0xb494('0x32')]({'where':{'id':_0x9436f6[_0xb494('0x2b')]['id']}})['then'](handleEntityNotFound(_0x4a87bd,null))[_0xb494('0x33')](saveUpdates(_0x9436f6[_0xb494('0x35')],null))[_0xb494('0x33')](respondWithResult(_0x4a87bd,null))['catch'](handleError(_0x4a87bd,null));};exports[_0xb494('0x1b')]=function(_0x162284,_0x5e3486){return db[_0xb494('0x21')][_0xb494('0x32')]({'where':{'id':_0x162284[_0xb494('0x2b')]['id']}})[_0xb494('0x33')](handleEntityNotFound(_0x5e3486,null))['then'](removeEntity(_0x5e3486,null))[_0xb494('0x29')](handleError(_0x5e3486,null));};exports['describe']=function(_0x591aaa,_0x395edb){return db[_0xb494('0x21')][_0xb494('0x36')]()[_0xb494('0x33')](respondWithResult(_0x395edb,null))[_0xb494('0x29')](handleError(_0x395edb,null));};exports[_0xb494('0x37')]=function(_0x7dcdd5,_0x597392){return db[_0xb494('0x38')]['find']({'where':{'id':_0x7dcdd5['params']['id']}})[_0xb494('0x33')](handleEntityNotFound(_0x597392,null))['then'](function(_0x421d2e){if(_0x421d2e){return _0x421d2e[_0xb494('0x37')](_0x7dcdd5['body'][_0xb494('0x39')],_[_0xb494('0x3a')](_0x7dcdd5['body'],[_0xb494('0x39'),'id'])||{});}})[_0xb494('0x33')](respondWithResult(_0x597392,null))[_0xb494('0x29')](handleError(_0x597392,null));};exports['getMessages']=function(_0x4fd1ab,_0x178bcd){var _0x1242dd={'raw':![],'where':{}};var _0x244c43={};var _0xc57fe9={'count':0x0,'rows':[]};return db[_0xb494('0x21')]['findOne']({'where':{'id':_0x4fd1ab[_0xb494('0x2b')]['id']}})['then'](handleEntityNotFound(_0x178bcd,null))['then'](function(_0x3cfd93){if(_0x3cfd93){_0x244c43[_0xb494('0x2c')]=_[_0xb494('0x2d')](db[_0xb494('0x38')][_0xb494('0x22')]);_0x244c43[_0xb494('0x27')]=_['keys'](_0x4fd1ab[_0xb494('0x27')]);_0x244c43['filters']=_['intersection'](_0x244c43[_0xb494('0x2c')],_0x244c43[_0xb494('0x27')]);_0x1242dd[_0xb494('0x2f')]=_[_0xb494('0x2e')](_0x244c43['model'],qs[_0xb494('0x3b')](_0x4fd1ab[_0xb494('0x27')][_0xb494('0x3b')]));_0x1242dd[_0xb494('0x2f')]=_0x1242dd['attributes'][_0xb494('0x3c')]?_0x1242dd[_0xb494('0x2f')]:_0x244c43[_0xb494('0x2c')];if(!_0x4fd1ab[_0xb494('0x27')][_0xb494('0x3d')]('nolimit')){_0x1242dd[_0xb494('0x15')]=qs[_0xb494('0x15')](_0x4fd1ab['query'][_0xb494('0x15')]);_0x1242dd[_0xb494('0x14')]=qs['offset'](_0x4fd1ab[_0xb494('0x27')][_0xb494('0x14')]);}_0x1242dd[_0xb494('0x3e')]=qs[_0xb494('0x3f')](_0x4fd1ab[_0xb494('0x27')][_0xb494('0x3f')]);_0x1242dd[_0xb494('0x40')]=qs['filters'](_[_0xb494('0x41')](_0x4fd1ab[_0xb494('0x27')],_0x244c43[_0xb494('0x42')]));_0x1242dd[_0xb494('0x40')][_0xb494('0x43')]=_0x3cfd93['id'];if(_0x4fd1ab[_0xb494('0x27')][_0xb494('0x44')]){_0x1242dd[_0xb494('0x40')]=_[_0xb494('0x30')](_0x1242dd['where'],{'$or':_[_0xb494('0x20')](_0x1242dd[_0xb494('0x2f')],function(_0x4f9fd7){var _0xb27609={};_0xb27609[_0x4f9fd7]={'$like':'%'+_0x4fd1ab[_0xb494('0x27')][_0xb494('0x44')]+'%'};return _0xb27609;})});}if(_0x4fd1ab['query'][_0xb494('0x45')]){var _0x13ab69=_0x4fd1ab['query'][_0xb494('0x45')][_0xb494('0x46')](',');var _0x53224d={};_0x53224d[_0x13ab69[0x0]]={'$gte':moment(_0x13ab69[0x1])[_0xb494('0x47')](_0xb494('0x48'))};_0x1242dd[_0xb494('0x40')]=_[_0xb494('0x30')](_0x1242dd['where'],_0x53224d);}_0x1242dd=_[_0xb494('0x30')]({},_0x1242dd,_0x4fd1ab['options']);return db[_0xb494('0x38')][_0xb494('0x17')]({'where':_0x1242dd['where']})[_0xb494('0x33')](function(_0x22b853){_0xc57fe9['count']=_0x22b853;if(_0x4fd1ab['query'][_0xb494('0x49')]){_0x1242dd[_0xb494('0x4a')]=[{'all':!![]}];}return db[_0xb494('0x38')]['findAll'](_0x1242dd);})[_0xb494('0x33')](function(_0x524c07){_0xc57fe9['rows']=_0x524c07;return _0xc57fe9;});}})[_0xb494('0x33')](respondWithFilteredResult(_0x178bcd,_0x1242dd))['catch'](handleError(_0x178bcd,null));};exports[_0xb494('0x4b')]=function(_0x1a5e6a,_0x1a2153){return db[_0xb494('0x21')][_0xb494('0x32')]({'where':{'id':_0x1a5e6a[_0xb494('0x2b')]['id']}})['then'](handleEntityNotFound(_0x1a2153,null))[_0xb494('0x33')](function(_0x339a7e){if(_0x339a7e){return _0x339a7e[_0xb494('0x4c')](_0x1a5e6a['body']['ids'],_[_0xb494('0x3a')](_0x1a5e6a[_0xb494('0x35')],[_0xb494('0x39'),'id'])||{})[_0xb494('0x4d')](function(){return db['Tag']['findAll']({'attributes':['id','name','color'],'where':{'id':_0x1a5e6a[_0xb494('0x35')]['ids']}});})[_0xb494('0x33')](function(_0x4b9de4){socket['emit'](_0xb494('0x4e'),{'id':Number(_0x1a5e6a[_0xb494('0x2b')]['id']),'tags':_0x4b9de4||[]});return{'id':Number(_0x1a5e6a[_0xb494('0x2b')]['id']),'tags':_0x4b9de4||[]};});}})['then'](respondWithResult(_0x1a2153,null))[_0xb494('0x29')](handleError(_0x1a2153,null));};exports['removeTags']=function(_0x57e179,_0x1452de){return db[_0xb494('0x21')][_0xb494('0x32')]({'where':{'id':_0x57e179[_0xb494('0x2b')]['id']}})[_0xb494('0x33')](handleEntityNotFound(_0x1452de,null))[_0xb494('0x33')](function(_0x45f3af){if(_0x45f3af){return _0x45f3af[_0xb494('0x4f')](_0x57e179[_0xb494('0x27')][_0xb494('0x39')]);}})[_0xb494('0x33')](respondWithStatusCode(_0x1452de,null))['catch'](handleError(_0x1452de,null));};exports[_0xb494('0x50')]=function(_0x41636d,_0x24e788){var _0x4b4a47=moment()[_0xb494('0x51')]()['toString']();var _0x9acfb8=path[_0xb494('0x52')](config[_0xb494('0x53')],_0xb494('0x54'),_0xb494('0x55'),_0xb494('0x56'));var _0x29a2dc=path[_0xb494('0x52')](config[_0xb494('0x53')],_0xb494('0x54'),'files',_0xb494('0x57'));var _0x31f93f=path['join'](_0x9acfb8,_0x4b4a47);var _0x114e1c=util[_0xb494('0x47')](_0xb494('0x58'),_0x41636d[_0xb494('0x2b')]['id'],_0x4b4a47);var _0x3890f8=path[_0xb494('0x52')](_0x9acfb8,_0x114e1c);var _0x28b543=[];_0x28b543[_0xb494('0x59')]({'model':db['Attachment'],'as':_0xb494('0x5a'),'raw':!![]});var _0x5e98bb=[{'model':db[_0xb494('0x38')],'as':_0xb494('0x5b'),'attributes':['id',_0xb494('0x35'),_0xb494('0x5c')],'include':_0x28b543}];return db[_0xb494('0x21')][_0xb494('0x32')]({'where':{'id':_0x41636d[_0xb494('0x2b')]['id']},'include':_0x5e98bb})['then'](handleEntityNotFound(_0x24e788,null))[_0xb494('0x33')](function(_0x4d0f66){if(_0x4d0f66&&_0x4d0f66[_0xb494('0x5b')]){var _0x2b0bf1=_0x4d0f66[_0xb494('0x5d')]({'plain':!![]});fs['mkdirSync'](_0x31f93f);for(var _0xced468=0x0;_0xced468<_0x2b0bf1[_0xb494('0x5b')]['length'];_0xced468++){var _0x19e830=_0x2b0bf1[_0xb494('0x5b')][_0xced468]['Attachment'];if(_0x19e830){var _0x12e290=path[_0xb494('0x52')](_0x29a2dc,_0x19e830[_0xb494('0x5e')]);if(fs['existsSync'](_0x12e290)){fs[_0xb494('0x5f')](_0x12e290)['pipe'](fs[_0xb494('0x60')](path[_0xb494('0x52')](_0x31f93f,_0x19e830['basename'])));}}}return BPromise[_0xb494('0x61')]()[_0xb494('0x33')](function(){return new BPromise(function(_0x2586d3,_0xfdc152){zipdir(_0x31f93f,{'saveTo':_0x3890f8},function(_0x1196a5,_0x75b616){if(_0x1196a5)return _0xfdc152(_0x1196a5);return _0x2586d3(_0x75b616);});})['then'](function(){return new BPromise(function(_0x404ffe,_0x25756f){rimraf(_0x31f93f,function(_0x3ae404){if(_0x3ae404)_0x25756f(_0x3ae404);return _0x404ffe();});});})['then'](function(){return _0x24e788[_0xb494('0x50')](_0x3890f8,_0x114e1c,function(_0x27b6b2){if(_0x27b6b2){console['log'](_0xb494('0x62'),_0x27b6b2);}else{fs[_0xb494('0x63')](_0x3890f8);}});});});}else{return _0x24e788['sendStatus'](0xc8);}})[_0xb494('0x29')](handleError(_0x24e788,null));};
\ No newline at end of file
+var _0x13a9=['sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','update','then','error','name','send','index','map','rawAttributes','getOptions','findAll','fax','query','user','catch','show','params','model','FaxInteraction','keys','intersection','attributes','fields','length','includeAll','include','options','find','create','body','destroy','describe','addMessage','ids','omit','getMessages','filters','nolimit','order','sort','where','pick','filter','split','format','YYYY-MM-DD\x20HH:mm:ss','merge','FaxMessage','setTags','spread','color','faxInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','tmp','attachments','push','Attachment','Messages','get','basename','pipe','createWriteStream','resolve','log','err','unlinkSync','zip-dir','moment','bluebird','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter'];(function(_0x16cd43,_0x5b9601){var _0x2e37e2=function(_0x25e974){while(--_0x25e974){_0x16cd43['push'](_0x16cd43['shift']());}};_0x2e37e2(++_0x5b9601);}(_0x13a9,0xb2));var _0x913a=function(_0x7995ce,_0x5494fe){_0x7995ce=_0x7995ce-0x0;var _0x1b233d=_0x13a9[_0x7995ce];return _0x1b233d;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x913a('0x0'));var moment=require(_0x913a('0x1'));var BPromise=require(_0x913a('0x2'));var util=require(_0x913a('0x3'));var path=require(_0x913a('0x4'));var fs=require('fs');var _=require(_0x913a('0x5'));var Redis=require(_0x913a('0x6'));var interaction=require(_0x913a('0x7'));var qs=require(_0x913a('0x8'));var logger=require(_0x913a('0x9'))(_0x913a('0xa'));var config=require(_0x913a('0xb'));var db=require('../../mysqldb')['db'];config[_0x913a('0xc')]=_[_0x913a('0xd')](config[_0x913a('0xc')],{'host':_0x913a('0xe'),'port':0x18eb});var socket=require(_0x913a('0xf'))(new Redis(config[_0x913a('0xc')]));require('./faxInteraction.socket')['register'](socket);function respondWithStatusCode(_0x4ee3a2,_0x17f435){_0x17f435=_0x17f435||0xcc;return function(_0x4857a4){if(_0x4857a4){return _0x4ee3a2[_0x913a('0x10')](_0x17f435);}return _0x4ee3a2[_0x913a('0x11')](_0x17f435)[_0x913a('0x12')]();};}function respondWithResult(_0x235d01,_0x17e86c){_0x17e86c=_0x17e86c||0xc8;return function(_0x400d24){if(_0x400d24){return _0x235d01[_0x913a('0x11')](_0x17e86c)[_0x913a('0x13')](_0x400d24);}};}function respondWithFilteredResult(_0x2eb4b5,_0x2c9cbd){return function(_0xb1e9f3){if(_0xb1e9f3){var _0x3c96c3=typeof _0x2c9cbd['offset']===_0x913a('0x14')&&typeof _0x2c9cbd[_0x913a('0x15')]===_0x913a('0x14');var _0x3e4c1e=_0xb1e9f3[_0x913a('0x16')];var _0x21c356=_0x3c96c3?0x0:_0x2c9cbd[_0x913a('0x17')];var _0x46e746=_0x3c96c3?_0xb1e9f3[_0x913a('0x16')]:_0x2c9cbd[_0x913a('0x17')]+_0x2c9cbd[_0x913a('0x15')];var _0x134e79;if(_0x46e746>=_0x3e4c1e){_0x46e746=_0x3e4c1e;_0x134e79=0xc8;}else{_0x134e79=0xce;}_0x2eb4b5['status'](_0x134e79);return _0x2eb4b5['set'](_0x913a('0x18'),_0x21c356+'-'+_0x46e746+'/'+_0x3e4c1e)[_0x913a('0x13')](_0xb1e9f3);}return null;};}function saveUpdates(_0x289891){return function(_0xfdc39e){if(_0xfdc39e){return _0xfdc39e[_0x913a('0x19')](_0x289891)[_0x913a('0x1a')](function(_0x9d110f){return _0x9d110f;});}return null;};}function removeEntity(_0x47d012){return function(_0x3572b9){if(_0x3572b9){return _0x3572b9['destroy']()[_0x913a('0x1a')](function(){_0x47d012[_0x913a('0x11')](0xcc)[_0x913a('0x12')]();});}};}function handleEntityNotFound(_0x1f9427){return function(_0x28714c){if(!_0x28714c){_0x1f9427[_0x913a('0x10')](0x194);}return _0x28714c;};}function handleError(_0xb766a1,_0x55222d){_0x55222d=_0x55222d||0x1f4;return function(_0xb20908){logger[_0x913a('0x1b')](_0xb20908['stack']);if(_0xb20908[_0x913a('0x1c')]){delete _0xb20908[_0x913a('0x1c')];}_0xb766a1[_0x913a('0x11')](_0x55222d)[_0x913a('0x1d')](_0xb20908);};}exports[_0x913a('0x1e')]=function(_0x2d4afd,_0x754342){var _0x267c4b={};var _0x48bb06=_[_0x913a('0x1f')](db['FaxInteraction'][_0x913a('0x20')],function(_0xb07dfd){return{'name':_0xb07dfd['fieldName'],'type':_0xb07dfd['type']['key']};});_0x267c4b=qs[_0x913a('0x21')](_0x48bb06,_0x2d4afd);return interaction[_0x913a('0x22')](_0x913a('0x23'),_0x2d4afd[_0x913a('0x24')],_0x2d4afd[_0x913a('0x25')],_0x267c4b,_0x48bb06)[_0x913a('0x1a')](respondWithFilteredResult(_0x754342,_0x267c4b))[_0x913a('0x26')](handleError(_0x754342,null));};exports[_0x913a('0x27')]=function(_0x2644ec,_0x19a3c7){var _0x2152fd={'raw':![],'where':{'id':_0x2644ec[_0x913a('0x28')]['id']}},_0xe42360={};_0xe42360[_0x913a('0x29')]=_['keys'](db[_0x913a('0x2a')][_0x913a('0x20')]);_0xe42360[_0x913a('0x24')]=_[_0x913a('0x2b')](_0x2644ec['query']);_0xe42360['filters']=_[_0x913a('0x2c')](_0xe42360[_0x913a('0x29')],_0xe42360[_0x913a('0x24')]);_0x2152fd[_0x913a('0x2d')]=_[_0x913a('0x2c')](_0xe42360[_0x913a('0x29')],qs[_0x913a('0x2e')](_0x2644ec[_0x913a('0x24')]['fields']));_0x2152fd[_0x913a('0x2d')]=_0x2152fd[_0x913a('0x2d')][_0x913a('0x2f')]?_0x2152fd[_0x913a('0x2d')]:_0xe42360[_0x913a('0x29')];if(_0x2644ec['query'][_0x913a('0x30')]){_0x2152fd[_0x913a('0x31')]=[{'all':!![]}];}_0x2152fd=_['merge']({},_0x2152fd,_0x2644ec[_0x913a('0x32')]);return db[_0x913a('0x2a')][_0x913a('0x33')](_0x2152fd)[_0x913a('0x1a')](handleEntityNotFound(_0x19a3c7,null))[_0x913a('0x1a')](respondWithResult(_0x19a3c7,null))[_0x913a('0x26')](handleError(_0x19a3c7,null));};exports[_0x913a('0x34')]=function(_0x3c6270,_0xe494ed){return db[_0x913a('0x2a')]['create'](_0x3c6270['body'],{})['then'](respondWithResult(_0xe494ed,0xc9))['catch'](handleError(_0xe494ed,null));};exports['update']=function(_0x2f902e,_0x55d302){if(_0x2f902e[_0x913a('0x35')]['id']){delete _0x2f902e['body']['id'];}return db['FaxInteraction'][_0x913a('0x33')]({'where':{'id':_0x2f902e['params']['id']}})['then'](handleEntityNotFound(_0x55d302,null))[_0x913a('0x1a')](saveUpdates(_0x2f902e[_0x913a('0x35')],null))['then'](respondWithResult(_0x55d302,null))[_0x913a('0x26')](handleError(_0x55d302,null));};exports[_0x913a('0x36')]=function(_0x1ed7a9,_0xece6f3){return db[_0x913a('0x2a')]['find']({'where':{'id':_0x1ed7a9[_0x913a('0x28')]['id']}})[_0x913a('0x1a')](handleEntityNotFound(_0xece6f3,null))[_0x913a('0x1a')](removeEntity(_0xece6f3,null))[_0x913a('0x26')](handleError(_0xece6f3,null));};exports['describe']=function(_0x519826,_0x57a365){return db['FaxInteraction'][_0x913a('0x37')]()['then'](respondWithResult(_0x57a365,null))['catch'](handleError(_0x57a365,null));};exports[_0x913a('0x38')]=function(_0x44e565,_0x5574d6){return db['FaxMessage'][_0x913a('0x33')]({'where':{'id':_0x44e565[_0x913a('0x28')]['id']}})['then'](handleEntityNotFound(_0x5574d6,null))[_0x913a('0x1a')](function(_0x334bf9){if(_0x334bf9){return _0x334bf9['addMessage'](_0x44e565[_0x913a('0x35')][_0x913a('0x39')],_[_0x913a('0x3a')](_0x44e565['body'],[_0x913a('0x39'),'id'])||{});}})[_0x913a('0x1a')](respondWithResult(_0x5574d6,null))[_0x913a('0x26')](handleError(_0x5574d6,null));};exports[_0x913a('0x3b')]=function(_0x5a04da,_0x52d985){var _0x539487={'raw':![],'where':{}};var _0x4b9521={};var _0x5af522={'count':0x0,'rows':[]};return db[_0x913a('0x2a')]['findOne']({'where':{'id':_0x5a04da[_0x913a('0x28')]['id']}})[_0x913a('0x1a')](handleEntityNotFound(_0x52d985,null))[_0x913a('0x1a')](function(_0x2b3fa9){if(_0x2b3fa9){_0x4b9521[_0x913a('0x29')]=_[_0x913a('0x2b')](db['FaxMessage']['rawAttributes']);_0x4b9521[_0x913a('0x24')]=_[_0x913a('0x2b')](_0x5a04da[_0x913a('0x24')]);_0x4b9521[_0x913a('0x3c')]=_[_0x913a('0x2c')](_0x4b9521[_0x913a('0x29')],_0x4b9521[_0x913a('0x24')]);_0x539487[_0x913a('0x2d')]=_['intersection'](_0x4b9521[_0x913a('0x29')],qs[_0x913a('0x2e')](_0x5a04da[_0x913a('0x24')]['fields']));_0x539487[_0x913a('0x2d')]=_0x539487[_0x913a('0x2d')][_0x913a('0x2f')]?_0x539487[_0x913a('0x2d')]:_0x4b9521[_0x913a('0x29')];if(!_0x5a04da[_0x913a('0x24')]['hasOwnProperty'](_0x913a('0x3d'))){_0x539487[_0x913a('0x15')]=qs[_0x913a('0x15')](_0x5a04da[_0x913a('0x24')][_0x913a('0x15')]);_0x539487[_0x913a('0x17')]=qs[_0x913a('0x17')](_0x5a04da['query'][_0x913a('0x17')]);}_0x539487[_0x913a('0x3e')]=qs[_0x913a('0x3f')](_0x5a04da[_0x913a('0x24')][_0x913a('0x3f')]);_0x539487[_0x913a('0x40')]=qs['filters'](_[_0x913a('0x41')](_0x5a04da[_0x913a('0x24')],_0x4b9521[_0x913a('0x3c')]));_0x539487[_0x913a('0x40')]['FaxInteractionId']=_0x2b3fa9['id'];if(_0x5a04da[_0x913a('0x24')][_0x913a('0x42')]){_0x539487[_0x913a('0x40')]=_['merge'](_0x539487[_0x913a('0x40')],{'$or':_[_0x913a('0x1f')](_0x539487[_0x913a('0x2d')],function(_0x59cc20){var _0x5eaf65={};_0x5eaf65[_0x59cc20]={'$like':'%'+_0x5a04da[_0x913a('0x24')]['filter']+'%'};return _0x5eaf65;})});}if(_0x5a04da[_0x913a('0x24')]['$gte']){var _0x444b89=_0x5a04da[_0x913a('0x24')]['$gte'][_0x913a('0x43')](',');var _0x4f3da4={};_0x4f3da4[_0x444b89[0x0]]={'$gte':moment(_0x444b89[0x1])[_0x913a('0x44')](_0x913a('0x45'))};_0x539487[_0x913a('0x40')]=_['merge'](_0x539487[_0x913a('0x40')],_0x4f3da4);}_0x539487=_[_0x913a('0x46')]({},_0x539487,_0x5a04da[_0x913a('0x32')]);return db[_0x913a('0x47')]['count']({'where':_0x539487[_0x913a('0x40')]})['then'](function(_0xf3f4fe){_0x5af522[_0x913a('0x16')]=_0xf3f4fe;if(_0x5a04da['query']['includeAll']){_0x539487['include']=[{'all':!![]}];}return db['FaxMessage'][_0x913a('0x22')](_0x539487);})['then'](function(_0xabf8c6){_0x5af522['rows']=_0xabf8c6;return _0x5af522;});}})[_0x913a('0x1a')](respondWithFilteredResult(_0x52d985,_0x539487))[_0x913a('0x26')](handleError(_0x52d985,null));};exports['addTags']=function(_0x5ebc93,_0x6c39a4){return db[_0x913a('0x2a')][_0x913a('0x33')]({'where':{'id':_0x5ebc93[_0x913a('0x28')]['id']}})[_0x913a('0x1a')](handleEntityNotFound(_0x6c39a4,null))[_0x913a('0x1a')](function(_0x468f9c){if(_0x468f9c){return _0x468f9c[_0x913a('0x48')](_0x5ebc93[_0x913a('0x35')]['ids'],_[_0x913a('0x3a')](_0x5ebc93['body'],['ids','id'])||{})[_0x913a('0x49')](function(){return db['Tag'][_0x913a('0x22')]({'attributes':['id',_0x913a('0x1c'),_0x913a('0x4a')],'where':{'id':_0x5ebc93[_0x913a('0x35')][_0x913a('0x39')]}});})[_0x913a('0x1a')](function(_0x4105c8){socket['emit'](_0x913a('0x4b'),{'id':Number(_0x5ebc93[_0x913a('0x28')]['id']),'tags':_0x4105c8||[]});return{'id':Number(_0x5ebc93[_0x913a('0x28')]['id']),'tags':_0x4105c8||[]};});}})[_0x913a('0x1a')](respondWithResult(_0x6c39a4,null))['catch'](handleError(_0x6c39a4,null));};exports[_0x913a('0x4c')]=function(_0x41ab76,_0x26a7c8){return db[_0x913a('0x2a')][_0x913a('0x33')]({'where':{'id':_0x41ab76[_0x913a('0x28')]['id']}})[_0x913a('0x1a')](handleEntityNotFound(_0x26a7c8,null))[_0x913a('0x1a')](function(_0x2e5a6d){if(_0x2e5a6d){return _0x2e5a6d['removeTags'](_0x41ab76['query'][_0x913a('0x39')]);}})['then'](respondWithStatusCode(_0x26a7c8,null))[_0x913a('0x26')](handleError(_0x26a7c8,null));};exports[_0x913a('0x4d')]=function(_0x6392cc,_0x2ea12d){var _0x5180a1=moment()[_0x913a('0x4e')]()[_0x913a('0x4f')]();var _0x379f3e=path[_0x913a('0x50')](config[_0x913a('0x51')],_0x913a('0x52'),_0x913a('0x53'),_0x913a('0x54'));var _0x4cb9ae=path[_0x913a('0x50')](config[_0x913a('0x51')],'server',_0x913a('0x53'),_0x913a('0x55'));var _0x2d9e15=path['join'](_0x379f3e,_0x5180a1);var _0x3d4303=util['format']('transcript-%d-%s.zip',_0x6392cc[_0x913a('0x28')]['id'],_0x5180a1);var _0x56dbac=path['join'](_0x379f3e,_0x3d4303);var _0x12b8a1=[];_0x12b8a1[_0x913a('0x56')]({'model':db[_0x913a('0x57')],'as':_0x913a('0x57'),'raw':!![]});var _0x17595e=[{'model':db['FaxMessage'],'as':_0x913a('0x58'),'attributes':['id',_0x913a('0x35'),'createdAt'],'include':_0x12b8a1}];return db[_0x913a('0x2a')][_0x913a('0x33')]({'where':{'id':_0x6392cc[_0x913a('0x28')]['id']},'include':_0x17595e})['then'](handleEntityNotFound(_0x2ea12d,null))[_0x913a('0x1a')](function(_0x1bc604){if(_0x1bc604&&_0x1bc604[_0x913a('0x58')]){var _0x21f562=_0x1bc604[_0x913a('0x59')]({'plain':!![]});fs['mkdirSync'](_0x2d9e15);for(var _0x43301d=0x0;_0x43301d<_0x21f562[_0x913a('0x58')][_0x913a('0x2f')];_0x43301d++){var _0x10b5be=_0x21f562[_0x913a('0x58')][_0x43301d][_0x913a('0x57')];if(_0x10b5be){var _0x1a5c36=path['join'](_0x4cb9ae,_0x10b5be[_0x913a('0x5a')]);if(fs['existsSync'](_0x1a5c36)){fs['createReadStream'](_0x1a5c36)[_0x913a('0x5b')](fs[_0x913a('0x5c')](path[_0x913a('0x50')](_0x2d9e15,_0x10b5be['basename'])));}}}return BPromise[_0x913a('0x5d')]()[_0x913a('0x1a')](function(){return new BPromise(function(_0x549f8e,_0x33bd80){zipdir(_0x2d9e15,{'saveTo':_0x56dbac},function(_0x2225f8,_0x15b89f){if(_0x2225f8)return _0x33bd80(_0x2225f8);return _0x549f8e(_0x15b89f);});})[_0x913a('0x1a')](function(){return new BPromise(function(_0x5a86ec,_0x1fc98a){rimraf(_0x2d9e15,function(_0x38f034){if(_0x38f034)_0x1fc98a(_0x38f034);return _0x5a86ec();});});})[_0x913a('0x1a')](function(){return _0x2ea12d[_0x913a('0x4d')](_0x56dbac,_0x3d4303,function(_0x175459){if(_0x175459){console[_0x913a('0x5e')](_0x913a('0x5f'),_0x175459);}else{fs[_0x913a('0x60')](_0x56dbac);}});});});}else{return _0x2ea12d[_0x913a('0x10')](0xc8);}})[_0x913a('0x26')](handleError(_0x2ea12d,null));};
\ No newline at end of file
index 227723a..4746a3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70a4=['length','emit','catch','hasOwnProperty','exports','../../mysqldb','FaxInteraction','FaxMessage','setMaxListeners','update','remove','getUsers','then','Users','map','setDataValue','unreadMessages'];(function(_0x25c465,_0x4e1875){var _0x507037=function(_0x45b978){while(--_0x45b978){_0x25c465['push'](_0x25c465['shift']());}};_0x507037(++_0x4e1875);}(_0x70a4,0x1d0));var _0x470a=function(_0x225f77,_0x3f05b7){_0x225f77=_0x225f77-0x0;var _0x1ff15a=_0x70a4[_0x225f77];return _0x1ff15a;};'use strict';var EventEmitter=require('events');var FaxInteraction=require(_0x470a('0x0'))['db'][_0x470a('0x1')];var FaxMessage=require('../../mysqldb')['db'][_0x470a('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x470a('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x470a('0x4'),'afterDestroy':_0x470a('0x5')};function emitEvent(_0x4c26a5){return function(_0x1e1fa8,_0x4ec301,_0x5a0053){_0x1e1fa8[_0x470a('0x6')]({'attributes':['id'],'raw':!![]})[_0x470a('0x7')](function(_0x35c317){_0x1e1fa8['setDataValue'](_0x470a('0x8'),_0x35c317[_0x470a('0x9')](function(_0x1c50aa){return{'id':_0x1c50aa['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x1e1fa8['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x12c296){_0x1e1fa8[_0x470a('0xa')](_0x470a('0xb'),_0x12c296[_0x470a('0xc')]);FaxInteractionEvents[_0x470a('0xd')](_0x4c26a5+':'+_0x1e1fa8['id'],_0x1e1fa8);FaxInteractionEvents[_0x470a('0xd')](_0x4c26a5,_0x1e1fa8);_0x5a0053(null);})[_0x470a('0xe')](_0x5a0053(null));};}for(var e in events){if(events[_0x470a('0xf')](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module[_0x470a('0x10')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x145e=['hook','exports','events','../../mysqldb','FaxMessage','setMaxListeners','save','update','getUsers','then','Users','map','setDataValue','length','emit','catch','hasOwnProperty'];(function(_0x199a8d,_0x35f3ce){var _0x5565ff=function(_0x5aad01){while(--_0x5aad01){_0x199a8d['push'](_0x199a8d['shift']());}};_0x5565ff(++_0x35f3ce);}(_0x145e,0x79));var _0xe145=function(_0x56f2e4,_0x453f62){_0x56f2e4=_0x56f2e4-0x0;var _0x311606=_0x145e[_0x56f2e4];return _0x311606;};'use strict';var EventEmitter=require(_0xe145('0x0'));var FaxInteraction=require(_0xe145('0x1'))['db']['FaxInteraction'];var FaxMessage=require('../../mysqldb')['db'][_0xe145('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xe145('0x3')](0x0);var events={'afterCreate':_0xe145('0x4'),'afterUpdate':_0xe145('0x5'),'afterDestroy':'remove'};function emitEvent(_0x39ee9f){return function(_0x3fdd8c,_0x43da70,_0x20c38e){_0x3fdd8c[_0xe145('0x6')]({'attributes':['id'],'raw':!![]})[_0xe145('0x7')](function(_0x112439){_0x3fdd8c['setDataValue'](_0xe145('0x8'),_0x112439[_0xe145('0x9')](function(_0x463932){return{'id':_0x463932['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x3fdd8c['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe145('0x7')](function(_0x4b32b7){_0x3fdd8c[_0xe145('0xa')]('unreadMessages',_0x4b32b7[_0xe145('0xb')]);FaxInteractionEvents[_0xe145('0xc')](_0x39ee9f+':'+_0x3fdd8c['id'],_0x3fdd8c);FaxInteractionEvents[_0xe145('0xc')](_0x39ee9f,_0x3fdd8c);_0x20c38e(null);})[_0xe145('0xd')](_0x20c38e(null));};}for(var e in events){if(events[_0xe145('0xe')](e)){var event=events[e];FaxInteraction[_0xe145('0xf')](e,emitEvent(event));}}module[_0xe145('0x10')]=FaxInteractionEvents;
\ No newline at end of file
index 21129be..935a1f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0ea=['path','rimraf','./faxInteraction.attributes','define','fax_interactions','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','util','bluebird','request-promise'];(function(_0x4f8d8e,_0x550df1){var _0x54344e=function(_0x13776c){while(--_0x13776c){_0x4f8d8e['push'](_0x4f8d8e['shift']());}};_0x54344e(++_0x550df1);}(_0xf0ea,0x10e));var _0xaf0e=function(_0x3d224a,_0x47d2bd){_0x3d224a=_0x3d224a-0x0;var _0x353923=_0xf0ea[_0x3d224a];return _0x353923;};'use strict';var _=require('lodash');var util=require(_0xaf0e('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xaf0e('0x1'));var rp=require(_0xaf0e('0x2'));var fs=require('fs');var path=require(_0xaf0e('0x3'));var rimraf=require(_0xaf0e('0x4'));var config=require('../../config/environment');var attributes=require(_0xaf0e('0x5'));module['exports']=function(_0x272f88,_0x3f71bb){return _0x272f88[_0xaf0e('0x6')]('FaxInteraction',attributes,{'tableName':_0xaf0e('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x54ec87,_0x5d1235,_0x57285c){if(_0x54ec87[_0xaf0e('0x8')](_0xaf0e('0x9'))){_0x54ec87[_0xaf0e('0xa')]=moment()[_0xaf0e('0xb')](_0xaf0e('0xc'));}_0x57285c(null,_0x54ec87);}}});};
\ No newline at end of file
+var _0xa8f3=['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','FaxInteraction','changed','closed'];(function(_0x141fd3,_0x506781){var _0x353b97=function(_0x4da04a){while(--_0x4da04a){_0x141fd3['push'](_0x141fd3['shift']());}};_0x353b97(++_0x506781);}(_0xa8f3,0xc1));var _0x3a8f=function(_0x30feee,_0x3a703f){_0x30feee=_0x30feee-0x0;var _0x5b9b1e=_0xa8f3[_0x30feee];return _0x5b9b1e;};'use strict';var _=require(_0x3a8f('0x0'));var util=require(_0x3a8f('0x1'));var logger=require(_0x3a8f('0x2'))(_0x3a8f('0x3'));var moment=require(_0x3a8f('0x4'));var BPromise=require(_0x3a8f('0x5'));var rp=require(_0x3a8f('0x6'));var fs=require('fs');var path=require(_0x3a8f('0x7'));var rimraf=require(_0x3a8f('0x8'));var config=require(_0x3a8f('0x9'));var attributes=require(_0x3a8f('0xa'));module[_0x3a8f('0xb')]=function(_0x362dc3,_0x1d01db){return _0x362dc3[_0x3a8f('0xc')](_0x3a8f('0xd'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1cfd4b,_0x649b72,_0xca2281){if(_0x1cfd4b[_0x3a8f('0xe')](_0x3a8f('0xf'))){_0x1cfd4b[_0x3a8f('0x10')]=moment()[_0x3a8f('0x11')](_0x3a8f('0x12'));}_0xca2281(null,_0x1cfd4b);}}});};
\ No newline at end of file
index 268c359..a6f14f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e51=['options','where','attributes','limit','then','catch','find','addTags','body','ids','omit','AddTags','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','request','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','UpdateFaxInteraction','FaxInteraction'];(function(_0x233385,_0x2bc576){var _0x4d016a=function(_0x5deb73){while(--_0x5deb73){_0x233385['push'](_0x233385['shift']());}};_0x4d016a(++_0x2bc576);}(_0x4e51,0xb8));var _0x14e5=function(_0x562362,_0x5d54f4){_0x562362=_0x562362-0x0;var _0x3a18ce=_0x4e51[_0x562362];return _0x3a18ce;};'use strict';var _=require(_0x14e5('0x0'));var util=require(_0x14e5('0x1'));var moment=require('moment');var BPromise=require(_0x14e5('0x2'));var rs=require(_0x14e5('0x3'));var fs=require('fs');var Redis=require(_0x14e5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x14e5('0x5'));var logger=require(_0x14e5('0x6'))(_0x14e5('0x7'));var config=require(_0x14e5('0x8'));var jayson=require(_0x14e5('0x9'));var client=jayson[_0x14e5('0xa')][_0x14e5('0xb')]({'port':0x232a});config[_0x14e5('0xc')]=_[_0x14e5('0xd')](config[_0x14e5('0xc')],{'host':_0x14e5('0xe'),'port':0x18eb});var socket=require(_0x14e5('0xf'))(new Redis(config[_0x14e5('0xc')]));require(_0x14e5('0x10'))[_0x14e5('0x11')](socket);function respondWithRpcPromise(_0x3e2047,_0x5efd31,_0x14f510){return new BPromise(function(_0x322af8,_0x2bf7a9){return client[_0x14e5('0x12')](_0x3e2047,_0x14f510)['then'](function(_0x2205df){logger['info'](_0x14e5('0x13'),_0x5efd31,_0x14e5('0x14'));logger[_0x14e5('0x15')](_0x14e5('0x16'),_0x5efd31,'request\x20sent',JSON[_0x14e5('0x17')](_0x2205df));if(_0x2205df[_0x14e5('0x18')]){if(_0x2205df[_0x14e5('0x18')][_0x14e5('0x19')]===0x1f4){logger['error'](_0x14e5('0x13'),_0x5efd31,_0x2205df[_0x14e5('0x18')]['message']);return _0x2bf7a9(_0x2205df[_0x14e5('0x18')][_0x14e5('0x1a')]);}logger[_0x14e5('0x18')]('FaxInteraction,\x20%s,\x20%s',_0x5efd31,_0x2205df['error'][_0x14e5('0x1a')]);return _0x322af8(_0x2205df['error'][_0x14e5('0x1a')]);}else{logger[_0x14e5('0x1b')](_0x14e5('0x13'),_0x5efd31,_0x14e5('0x14'));_0x322af8(_0x2205df[_0x14e5('0x1c')][_0x14e5('0x1a')]);}})['catch'](function(_0xc67ba2){logger['error'](_0x14e5('0x13'),_0x5efd31,_0xc67ba2);_0x2bf7a9(_0xc67ba2);});});}exports[_0x14e5('0x1d')]=function(_0x16b2d8){var _0x5df6c9=this;return new Promise(function(_0x35741f,_0x534d5a){return db[_0x14e5('0x1e')]['update'](_0x16b2d8['body'],{'raw':_0x16b2d8[_0x14e5('0x1f')]?_0x16b2d8[_0x14e5('0x1f')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x16b2d8['options']?_0x16b2d8[_0x14e5('0x1f')][_0x14e5('0x20')]||null:null,'attributes':_0x16b2d8[_0x14e5('0x1f')]?_0x16b2d8['options'][_0x14e5('0x21')]||null:null,'limit':_0x16b2d8[_0x14e5('0x1f')]?_0x16b2d8[_0x14e5('0x1f')][_0x14e5('0x22')]||null:null})[_0x14e5('0x23')](function(_0x14cd8b){logger[_0x14e5('0x1b')](_0x14e5('0x1d'),_0x16b2d8);logger[_0x14e5('0x15')]('UpdateFaxInteraction',_0x16b2d8,JSON[_0x14e5('0x17')](_0x14cd8b));_0x35741f(_0x14cd8b);})[_0x14e5('0x24')](function(_0x4c0003){logger['error'](_0x14e5('0x1d'),_0x4c0003[_0x14e5('0x1a')],_0x16b2d8);_0x534d5a(_0x5df6c9[_0x14e5('0x18')](0x1f4,_0x4c0003[_0x14e5('0x1a')]));});});};exports['AddTagsToFaxInteraction']=function(_0x10ca57){return new Promise(function(_0x54fba0,_0x252468){return db[_0x14e5('0x1e')][_0x14e5('0x25')]({'where':_0x10ca57[_0x14e5('0x1f')]?_0x10ca57[_0x14e5('0x1f')][_0x14e5('0x20')]||null:null})['then'](function(_0x403f4c){if(_0x403f4c){return _0x403f4c[_0x14e5('0x26')](_0x10ca57[_0x14e5('0x27')][_0x14e5('0x28')],_[_0x14e5('0x29')](_0x10ca57['body'],[_0x14e5('0x28'),'id'])||{});}})['spread'](function(_0xe5d291){logger[_0x14e5('0x1b')](_0x14e5('0x2a'),_0x10ca57);logger[_0x14e5('0x15')](_0x14e5('0x2a'),_0x10ca57,JSON[_0x14e5('0x17')](_0xe5d291));_0x54fba0(_0xe5d291);})[_0x14e5('0x24')](function(_0x19c246){logger[_0x14e5('0x18')](_0x14e5('0x2a'),_0x19c246[_0x14e5('0x1a')],_0x10ca57);_0x252468(_this[_0x14e5('0x18')](0x1f4,_0x19c246['message']));});});};
\ No newline at end of file
+var _0x6c41=['../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','./faxInteraction.socket','register','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','UpdateFaxInteraction','FaxInteraction','update','options','raw','attributes','limit','AddTagsToFaxInteraction','find','where','addTags','omit','body','ids','spread','AddTags','util','randomstring'];(function(_0x29e371,_0xf3d8c9){var _0x478324=function(_0x4cfd01){while(--_0x4cfd01){_0x29e371['push'](_0x29e371['shift']());}};_0x478324(++_0xf3d8c9);}(_0x6c41,0x1b6));var _0x16c4=function(_0x553a87,_0x1d621f){_0x553a87=_0x553a87-0x0;var _0x12d1e6=_0x6c41[_0x553a87];return _0x12d1e6;};'use strict';var _=require('lodash');var util=require(_0x16c4('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x16c4('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x16c4('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x16c4('0x3'))(_0x16c4('0x4'));var config=require('../../config/environment');var jayson=require(_0x16c4('0x5'));var client=jayson[_0x16c4('0x6')][_0x16c4('0x7')]({'port':0x232a});config[_0x16c4('0x8')]=_[_0x16c4('0x9')](config['redis'],{'host':_0x16c4('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x16c4('0x8')]));require(_0x16c4('0xb'))[_0x16c4('0xc')](socket);function respondWithRpcPromise(_0x424716,_0x1668b4,_0x21392d){return new BPromise(function(_0x17433d,_0x4a6039){return client['request'](_0x424716,_0x21392d)[_0x16c4('0xd')](function(_0x25134a){logger[_0x16c4('0xe')](_0x16c4('0xf'),_0x1668b4,_0x16c4('0x10'));logger[_0x16c4('0x11')]('FaxInteraction,\x20%s,\x20%s,\x20%s',_0x1668b4,_0x16c4('0x10'),JSON[_0x16c4('0x12')](_0x25134a));if(_0x25134a[_0x16c4('0x13')]){if(_0x25134a[_0x16c4('0x13')][_0x16c4('0x14')]===0x1f4){logger[_0x16c4('0x13')]('FaxInteraction,\x20%s,\x20%s',_0x1668b4,_0x25134a[_0x16c4('0x13')][_0x16c4('0x15')]);return _0x4a6039(_0x25134a[_0x16c4('0x13')][_0x16c4('0x15')]);}logger['error']('FaxInteraction,\x20%s,\x20%s',_0x1668b4,_0x25134a[_0x16c4('0x13')][_0x16c4('0x15')]);return _0x17433d(_0x25134a['error'][_0x16c4('0x15')]);}else{logger[_0x16c4('0xe')](_0x16c4('0xf'),_0x1668b4,'request\x20sent');_0x17433d(_0x25134a[_0x16c4('0x16')]['message']);}})[_0x16c4('0x17')](function(_0x4d0262){logger[_0x16c4('0x13')](_0x16c4('0xf'),_0x1668b4,_0x4d0262);_0x4a6039(_0x4d0262);});});}exports[_0x16c4('0x18')]=function(_0x3a88d1){var _0x532fbf=this;return new Promise(function(_0x3d89c9,_0x1a247f){return db[_0x16c4('0x19')][_0x16c4('0x1a')](_0x3a88d1['body'],{'raw':_0x3a88d1[_0x16c4('0x1b')]?_0x3a88d1[_0x16c4('0x1b')][_0x16c4('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3a88d1['options']?_0x3a88d1['options']['where']||null:null,'attributes':_0x3a88d1['options']?_0x3a88d1[_0x16c4('0x1b')][_0x16c4('0x1d')]||null:null,'limit':_0x3a88d1[_0x16c4('0x1b')]?_0x3a88d1[_0x16c4('0x1b')][_0x16c4('0x1e')]||null:null})[_0x16c4('0xd')](function(_0x15471c){logger[_0x16c4('0xe')](_0x16c4('0x18'),_0x3a88d1);logger['debug'](_0x16c4('0x18'),_0x3a88d1,JSON[_0x16c4('0x12')](_0x15471c));_0x3d89c9(_0x15471c);})[_0x16c4('0x17')](function(_0x338527){logger['error'](_0x16c4('0x18'),_0x338527[_0x16c4('0x15')],_0x3a88d1);_0x1a247f(_0x532fbf[_0x16c4('0x13')](0x1f4,_0x338527[_0x16c4('0x15')]));});});};exports[_0x16c4('0x1f')]=function(_0x59f59d){return new Promise(function(_0xf2ba4b,_0x24be12){return db[_0x16c4('0x19')][_0x16c4('0x20')]({'where':_0x59f59d['options']?_0x59f59d[_0x16c4('0x1b')][_0x16c4('0x21')]||null:null})['then'](function(_0x2d8401){if(_0x2d8401){return _0x2d8401[_0x16c4('0x22')](_0x59f59d['body']['ids'],_[_0x16c4('0x23')](_0x59f59d[_0x16c4('0x24')],[_0x16c4('0x25'),'id'])||{});}})[_0x16c4('0x26')](function(_0x438712){logger[_0x16c4('0xe')](_0x16c4('0x27'),_0x59f59d);logger[_0x16c4('0x11')](_0x16c4('0x27'),_0x59f59d,JSON[_0x16c4('0x12')](_0x438712));_0xf2ba4b(_0x438712);})[_0x16c4('0x17')](function(_0x587011){logger[_0x16c4('0x13')](_0x16c4('0x27'),_0x587011[_0x16c4('0x15')],_0x59f59d);_0x24be12(_this[_0x16c4('0x13')](0x1f4,_0x587011[_0x16c4('0x15')]));});});};
\ No newline at end of file
index 45635d7..e2f77b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70c6=['register','./faxInteraction.events','save','update','emit','removeListener'];(function(_0x3b92e6,_0x41b21d){var _0x269f4d=function(_0x5b2e7f){while(--_0x5b2e7f){_0x3b92e6['push'](_0x3b92e6['shift']());}};_0x269f4d(++_0x41b21d);}(_0x70c6,0xf1));var _0x670c=function(_0x59ee6f,_0x450239){_0x59ee6f=_0x59ee6f-0x0;var _0x4c0979=_0x70c6[_0x59ee6f];return _0x4c0979;};'use strict';var FaxInteractionEvents=require(_0x670c('0x0'));var events=[_0x670c('0x1'),'remove',_0x670c('0x2')];function createListener(_0x57606c,_0x34a259){return function(_0x53c814){_0x34a259[_0x670c('0x3')](_0x57606c,_0x53c814);};}function removeListener(_0x17a369,_0x25fbe0){return function(){FaxInteractionEvents[_0x670c('0x4')](_0x17a369,_0x25fbe0);};}exports[_0x670c('0x5')]=function(_0x119b56){for(var _0x17cec9=0x0,_0x3d34f1=events['length'];_0x17cec9<_0x3d34f1;_0x17cec9++){var _0x2ded42=events[_0x17cec9];var _0x485805=createListener('faxInteraction:'+_0x2ded42,_0x119b56);FaxInteractionEvents['on'](_0x2ded42,_0x485805);}};
\ No newline at end of file
+var _0x63bd=['register','length','faxInteraction:','./faxInteraction.events','remove','update','emit'];(function(_0xc5129,_0x287062){var _0x489414=function(_0xb5fe5b){while(--_0xb5fe5b){_0xc5129['push'](_0xc5129['shift']());}};_0x489414(++_0x287062);}(_0x63bd,0x1d8));var _0xd63b=function(_0x106e0b,_0x40e877){_0x106e0b=_0x106e0b-0x0;var _0x498de0=_0x63bd[_0x106e0b];return _0x498de0;};'use strict';var FaxInteractionEvents=require(_0xd63b('0x0'));var events=['save',_0xd63b('0x1'),_0xd63b('0x2')];function createListener(_0x1588e9,_0x16ea1f){return function(_0xb24b5b){_0x16ea1f[_0xd63b('0x3')](_0x1588e9,_0xb24b5b);};}function removeListener(_0x351a83,_0x2d6da8){return function(){FaxInteractionEvents['removeListener'](_0x351a83,_0x2d6da8);};}exports[_0xd63b('0x4')]=function(_0x519984){for(var _0x163bb2=0x0,_0x4f2641=events[_0xd63b('0x5')];_0x163bb2<_0x4f2641;_0x163bb2++){var _0x42bc9d=events[_0x163bb2];var _0x583cee=createListener(_0xd63b('0x6')+_0x42bc9d,_0x519984);FaxInteractionEvents['on'](_0x42bc9d,_0x583cee);}};
\ No newline at end of file
index 0636146..1125bdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ff=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxInteraction.controller','isAuthenticated','index','/describe','get','/:id','show','/:id/messages','getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked','faxinteraction:addtags','addTags','put','fax','faxinteraction:update','update','faxinteraction:destroy','delete','removeTags','exports','multer','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x24ff,0x64));var _0xf24f=function(_0x3f81bb,_0x89b302){_0x3f81bb=_0x3f81bb-0x0;var _0x12eeb0=_0x24ff[_0x3f81bb];return _0x12eeb0;};'use strict';var multer=require(_0xf24f('0x0'));var util=require(_0xf24f('0x1'));var path=require('path');var timeout=require(_0xf24f('0x2'));var express=require(_0xf24f('0x3'));var router=express[_0xf24f('0x4')]();var fs_extra=require(_0xf24f('0x5'));var auth=require(_0xf24f('0x6'));var interaction=require(_0xf24f('0x7'));var config=require(_0xf24f('0x8'));var controller=require(_0xf24f('0x9'));router['get']('/',auth[_0xf24f('0xa')](),controller[_0xf24f('0xb')]);router['get'](_0xf24f('0xc'),auth[_0xf24f('0xa')](),controller['describe']);router[_0xf24f('0xd')](_0xf24f('0xe'),auth['isAuthenticated'](),controller[_0xf24f('0xf')]);router[_0xf24f('0xd')](_0xf24f('0x10'),auth[_0xf24f('0xa')](),controller[_0xf24f('0x11')]);router[_0xf24f('0xd')](_0xf24f('0x12'),auth[_0xf24f('0xa')](),controller[_0xf24f('0x13')]);router[_0xf24f('0x14')]('/',auth['isAuthenticated'](),controller['create']);router[_0xf24f('0x14')](_0xf24f('0x10'),auth[_0xf24f('0xa')](),controller[_0xf24f('0x15')]);router[_0xf24f('0x14')](_0xf24f('0x16'),auth[_0xf24f('0xa')](),interaction[_0xf24f('0x17')]('fax',_0xf24f('0x18')),controller[_0xf24f('0x19')]);router[_0xf24f('0x1a')](_0xf24f('0xe'),auth[_0xf24f('0xa')](),interaction[_0xf24f('0x17')](_0xf24f('0x1b'),_0xf24f('0x1c')),controller[_0xf24f('0x1d')]);router['delete'](_0xf24f('0xe'),auth[_0xf24f('0xa')](),interaction[_0xf24f('0x17')](_0xf24f('0x1b'),_0xf24f('0x1e')),controller['destroy']);router[_0xf24f('0x1f')](_0xf24f('0x16'),auth['isAuthenticated'](),controller[_0xf24f('0x20')]);module[_0xf24f('0x21')]=router;
\ No newline at end of file
+var _0xb4b7=['./faxInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','tracked','fax','put','update','faxinteraction:destroy','/:id/tags','removeTags','multer','path','express','Router','fs-extra','../../components/interaction/service'];(function(_0x598713,_0x37a3b6){var _0x2aef5a=function(_0x38469f){while(--_0x38469f){_0x598713['push'](_0x598713['shift']());}};_0x2aef5a(++_0x37a3b6);}(_0xb4b7,0x6a));var _0x7b4b=function(_0x2234f6,_0x3ae996){_0x2234f6=_0x2234f6-0x0;var _0x30cb38=_0xb4b7[_0x2234f6];return _0x30cb38;};'use strict';var multer=require(_0x7b4b('0x0'));var util=require('util');var path=require(_0x7b4b('0x1'));var timeout=require('connect-timeout');var express=require(_0x7b4b('0x2'));var router=express[_0x7b4b('0x3')]();var fs_extra=require(_0x7b4b('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x7b4b('0x5'));var config=require('../../config/environment');var controller=require(_0x7b4b('0x6'));router[_0x7b4b('0x7')]('/',auth[_0x7b4b('0x8')](),controller[_0x7b4b('0x9')]);router[_0x7b4b('0x7')](_0x7b4b('0xa'),auth[_0x7b4b('0x8')](),controller[_0x7b4b('0xb')]);router[_0x7b4b('0x7')](_0x7b4b('0xc'),auth[_0x7b4b('0x8')](),controller[_0x7b4b('0xd')]);router[_0x7b4b('0x7')](_0x7b4b('0xe'),auth[_0x7b4b('0x8')](),controller[_0x7b4b('0xf')]);router['get'](_0x7b4b('0x10'),auth[_0x7b4b('0x8')](),controller[_0x7b4b('0x11')]);router[_0x7b4b('0x12')]('/',auth[_0x7b4b('0x8')](),controller[_0x7b4b('0x13')]);router[_0x7b4b('0x12')](_0x7b4b('0xe'),auth[_0x7b4b('0x8')](),controller[_0x7b4b('0x14')]);router[_0x7b4b('0x12')]('/:id/tags',auth[_0x7b4b('0x8')](),interaction[_0x7b4b('0x15')](_0x7b4b('0x16'),'faxinteraction:addtags'),controller['addTags']);router[_0x7b4b('0x17')](_0x7b4b('0xc'),auth['isAuthenticated'](),interaction[_0x7b4b('0x15')](_0x7b4b('0x16'),'faxinteraction:update'),controller[_0x7b4b('0x18')]);router['delete'](_0x7b4b('0xc'),auth[_0x7b4b('0x8')](),interaction[_0x7b4b('0x15')]('fax',_0x7b4b('0x19')),controller['destroy']);router['delete'](_0x7b4b('0x1a'),auth['isAuthenticated'](),controller[_0x7b4b('0x1b')]);module['exports']=router;
\ No newline at end of file
index 2fb8e7c..08dd17e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4944=['out','sequelize','TEXT','medium','BOOLEAN','ENUM'];(function(_0x4e9a52,_0x25b20d){var _0x2d425f=function(_0x4f2157){while(--_0x4f2157){_0x4e9a52['push'](_0x4e9a52['shift']());}};_0x2d425f(++_0x25b20d);}(_0x4944,0x6d));var _0x4494=function(_0x3d6b15,_0x410af6){_0x3d6b15=_0x3d6b15-0x0;var _0x31b069=_0x4944[_0x3d6b15];return _0x31b069;};'use strict';var Sequelize=require(_0x4494('0x0'));module['exports']={'body':{'type':Sequelize[_0x4494('0x1')](_0x4494('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x4494('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x4494('0x4')]('in',_0x4494('0x5')),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize[_0x4494('0x1')],'defaultValue':null},'readAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0x54f3=['exports','TEXT','medium','BOOLEAN','ENUM','DATE'];(function(_0x190f72,_0x3b3137){var _0x481856=function(_0x12daf9){while(--_0x12daf9){_0x190f72['push'](_0x190f72['shift']());}};_0x481856(++_0x3b3137);}(_0x54f3,0x120));var _0x354f=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x54f3[_0xfae23b];return _0x200640;};'use strict';var Sequelize=require('sequelize');module[_0x354f('0x0')]={'body':{'type':Sequelize[_0x354f('0x1')](_0x354f('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x354f('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x354f('0x4')]('in','out'),'defaultValue':'out','allowNull':![]},'failMessage':{'type':Sequelize[_0x354f('0x1')],'defaultValue':null},'readAt':{'type':Sequelize[_0x354f('0x5')]}};
\ No newline at end of file
index 8fd0e07..753f2d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6449=['fs-extra','lodash','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','info','request\x20sent','error','code','FaxMessage,\x20%s,\x20%s','message','result','catch','sendStatus','status','json','offset','undefined','count','limit','Content-Range','save','then','destroy','end','stack','name','send','index','map','rawAttributes','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','sort','where','pick','merge','VIRTUAL','filter','options','FaxMessage','includeAll','include','findAll','rows','show','params','find','update','body','describe','fax-interactions','read','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','FaxInteraction','isNil','format','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','stringify','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','User','fullname','email','internal','SIP/%s','channel','motionChannel','accept','EventManager','acceptmessage','reject','fax','FaxInteractionId','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','contact','interface','event','create','CmContact','findOne','Attachment','AttachmentId','SendFax','/var/opt/motion2/server/files/attachments/%s','basename','download','join','root','server','files','attachments','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs'];(function(_0x523597,_0x234653){var _0x1d190c=function(_0x23dfe7){while(--_0x23dfe7){_0x523597['push'](_0x523597['shift']());}};_0x1d190c(++_0x234653);}(_0x6449,0x1a2));var _0x9644=function(_0x243217,_0x522951){_0x243217=_0x243217-0x0;var _0x478029=_0x6449[_0x243217];return _0x478029;};'use strict';var emlformat=require(_0x9644('0x0'));var rimraf=require(_0x9644('0x1'));var zipdir=require(_0x9644('0x2'));var jsonpatch=require(_0x9644('0x3'));var rp=require(_0x9644('0x4'));var moment=require(_0x9644('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9644('0x6'));var util=require(_0x9644('0x7'));var path=require('path');var sox=require(_0x9644('0x8'));var csv=require(_0x9644('0x9'));var ejs=require(_0x9644('0xa'));var fs=require('fs');var fs_extra=require(_0x9644('0xb'));var _=require(_0x9644('0xc'));var squel=require('squel');var crypto=require(_0x9644('0xd'));var jsforce=require(_0x9644('0xe'));var deskjs=require(_0x9644('0xf'));var toCsv=require(_0x9644('0x9'));var querystring=require(_0x9644('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x9644('0x11'));var qs=require(_0x9644('0x12'));var as=require(_0x9644('0x13'));var hardwareService=require(_0x9644('0x14'));var logger=require(_0x9644('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x9644('0x16'));var licenseUtil=require(_0x9644('0x17'));var db=require(_0x9644('0x18'))['db'];config[_0x9644('0x19')]=_[_0x9644('0x1a')](config[_0x9644('0x19')],{'host':_0x9644('0x1b'),'port':0x18eb});var socket=require(_0x9644('0x1c'))(new Redis(config[_0x9644('0x19')]));require('./faxMessage.socket')[_0x9644('0x1d')](socket);var jayson=require(_0x9644('0x1e'));var client=jayson[_0x9644('0x1f')]['http']({'port':0x232c});var client9002=jayson[_0x9644('0x1f')][_0x9644('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x32af45,_0x105972,_0x54162a,_0x229543){return new BPromise(function(_0x178952,_0x142f8d){var _0x3a366b=_0x229543||client;return _0x3a366b[_0x9644('0x21')](_0x32af45,_0x54162a)['then'](function(_0x30b46a){logger[_0x9644('0x22')]('FaxMessage,\x20%s,\x20%s',_0x105972,_0x9644('0x23'));logger['debug']('FaxMessage,\x20%s,\x20%s,\x20%s',_0x105972,_0x9644('0x23'),JSON['stringify'](_0x30b46a));if(_0x30b46a[_0x9644('0x24')]){if(_0x30b46a[_0x9644('0x24')][_0x9644('0x25')]===0x1f4){logger[_0x9644('0x24')]('FaxMessage,\x20%s,\x20%s',_0x105972,_0x30b46a['error']['message']);return _0x142f8d(_0x30b46a['error']['message']);}logger[_0x9644('0x24')](_0x9644('0x26'),_0x105972,_0x30b46a[_0x9644('0x24')][_0x9644('0x27')]);return _0x178952(_0x30b46a[_0x9644('0x24')][_0x9644('0x27')]);}else{logger[_0x9644('0x22')](_0x9644('0x26'),_0x105972,_0x9644('0x23'));_0x178952(_0x30b46a[_0x9644('0x28')][_0x9644('0x27')]);}})[_0x9644('0x29')](function(_0x4d8269){logger[_0x9644('0x24')](_0x9644('0x26'),_0x105972,_0x4d8269);_0x142f8d(_0x4d8269);});});}function respondWithStatusCode(_0x1a64c2,_0x2adc74){_0x2adc74=_0x2adc74||0xcc;return function(_0x4d6188){if(_0x4d6188){return _0x1a64c2[_0x9644('0x2a')](_0x2adc74);}return _0x1a64c2[_0x9644('0x2b')](_0x2adc74)['end']();};}function respondWithResult(_0x2e8ca8,_0x5b21ca){_0x5b21ca=_0x5b21ca||0xc8;return function(_0x568128){if(_0x568128){return _0x2e8ca8['status'](_0x5b21ca)[_0x9644('0x2c')](_0x568128);}};}function respondWithFilteredResult(_0x45c201,_0x32879c){return function(_0x1f4727){if(_0x1f4727){var _0x4c7dbd=typeof _0x32879c[_0x9644('0x2d')]===_0x9644('0x2e')&&typeof _0x32879c['limit']==='undefined';var _0x44660e=_0x1f4727[_0x9644('0x2f')];var _0x298cd3=_0x4c7dbd?0x0:_0x32879c[_0x9644('0x2d')];var _0x26fab3=_0x4c7dbd?_0x1f4727[_0x9644('0x2f')]:_0x32879c['offset']+_0x32879c[_0x9644('0x30')];var _0x1684c5;if(_0x26fab3>=_0x44660e){_0x26fab3=_0x44660e;_0x1684c5=0xc8;}else{_0x1684c5=0xce;}_0x45c201[_0x9644('0x2b')](_0x1684c5);return _0x45c201['set'](_0x9644('0x31'),_0x298cd3+'-'+_0x26fab3+'/'+_0x44660e)[_0x9644('0x2c')](_0x1f4727);}return null;};}function patchUpdates(_0xaf5200){return function(_0x78d393){try{jsonpatch['apply'](_0x78d393,_0xaf5200,!![]);}catch(_0x54a269){return BPromise['reject'](_0x54a269);}return _0x78d393[_0x9644('0x32')]();};}function saveUpdates(_0x4dab02,_0x5f5942){return function(_0x1edf3b){if(_0x1edf3b){return _0x1edf3b['update'](_0x4dab02)[_0x9644('0x33')](function(_0x34381b){return _0x34381b;});}return null;};}function removeEntity(_0xaff650,_0x3f5c28){return function(_0x1a219b){if(_0x1a219b){return _0x1a219b[_0x9644('0x34')]()[_0x9644('0x33')](function(){_0xaff650[_0x9644('0x2b')](0xcc)[_0x9644('0x35')]();});}};}function handleEntityNotFound(_0x282e7a,_0x37c949){return function(_0x446852){if(!_0x446852){_0x282e7a['sendStatus'](0x194);}return _0x446852;};}function handleError(_0x1783e2,_0x566ebe){_0x566ebe=_0x566ebe||0x1f4;return function(_0x1e880d){logger[_0x9644('0x24')](_0x1e880d[_0x9644('0x36')]);if(_0x1e880d['name']){delete _0x1e880d[_0x9644('0x37')];}_0x1783e2[_0x9644('0x2b')](_0x566ebe)[_0x9644('0x38')](_0x1e880d);};}exports[_0x9644('0x39')]=function(_0x12539b,_0x4080e5){var _0x1a5d4b={},_0x2ce628={},_0x2685aa={'count':0x0,'rows':[]};var _0x308e33=_[_0x9644('0x3a')](db['FaxMessage'][_0x9644('0x3b')],function(_0x5927ca){return{'name':_0x5927ca['fieldName'],'type':_0x5927ca[_0x9644('0x3c')]['key']};});_0x2ce628[_0x9644('0x3d')]=_[_0x9644('0x3a')](_0x308e33,'name');_0x2ce628[_0x9644('0x3e')]=_[_0x9644('0x3f')](_0x12539b[_0x9644('0x3e')]);_0x2ce628[_0x9644('0x40')]=_['intersection'](_0x2ce628[_0x9644('0x3d')],_0x2ce628[_0x9644('0x3e')]);_0x1a5d4b[_0x9644('0x41')]=_[_0x9644('0x42')](_0x2ce628[_0x9644('0x3d')],qs[_0x9644('0x43')](_0x12539b[_0x9644('0x3e')][_0x9644('0x43')]));_0x1a5d4b[_0x9644('0x41')]=_0x1a5d4b[_0x9644('0x41')][_0x9644('0x44')]?_0x1a5d4b[_0x9644('0x41')]:_0x2ce628[_0x9644('0x3d')];if(!_0x12539b['query'][_0x9644('0x45')]('nolimit')){_0x1a5d4b[_0x9644('0x30')]=qs[_0x9644('0x30')](_0x12539b['query'][_0x9644('0x30')]);_0x1a5d4b[_0x9644('0x2d')]=qs[_0x9644('0x2d')](_0x12539b[_0x9644('0x3e')][_0x9644('0x2d')]);}_0x1a5d4b['order']=qs[_0x9644('0x46')](_0x12539b[_0x9644('0x3e')]['sort']);_0x1a5d4b[_0x9644('0x47')]=qs[_0x9644('0x40')](_[_0x9644('0x48')](_0x12539b[_0x9644('0x3e')],_0x2ce628['filters']),_0x308e33);if(_0x12539b[_0x9644('0x3e')]['filter']){_0x1a5d4b[_0x9644('0x47')]=_[_0x9644('0x49')](_0x1a5d4b['where'],{'$or':_[_0x9644('0x3a')](_0x308e33,function(_0x14c2e7){if(_0x14c2e7[_0x9644('0x3c')]!==_0x9644('0x4a')){var _0x358258={};_0x358258[_0x14c2e7[_0x9644('0x37')]]={'$like':'%'+_0x12539b['query'][_0x9644('0x4b')]+'%'};return _0x358258;}})});}_0x1a5d4b=_[_0x9644('0x49')]({},_0x1a5d4b,_0x12539b[_0x9644('0x4c')]);var _0x3b8e33={'where':_0x1a5d4b[_0x9644('0x47')]};return db[_0x9644('0x4d')][_0x9644('0x2f')](_0x3b8e33)['then'](function(_0x8211e3){_0x2685aa[_0x9644('0x2f')]=_0x8211e3;if(_0x12539b['query'][_0x9644('0x4e')]){_0x1a5d4b[_0x9644('0x4f')]=[{'all':!![]}];}return db[_0x9644('0x4d')][_0x9644('0x50')](_0x1a5d4b);})[_0x9644('0x33')](function(_0x34a1e1){_0x2685aa[_0x9644('0x51')]=_0x34a1e1;return _0x2685aa;})[_0x9644('0x33')](respondWithFilteredResult(_0x4080e5,_0x1a5d4b))[_0x9644('0x29')](handleError(_0x4080e5,null));};exports[_0x9644('0x52')]=function(_0x65e0f8,_0x2ba7e2){var _0x41313f={'raw':!![],'where':{'id':_0x65e0f8[_0x9644('0x53')]['id']}},_0x12255c={};_0x12255c['model']=_[_0x9644('0x3f')](db[_0x9644('0x4d')][_0x9644('0x3b')]);_0x12255c[_0x9644('0x3e')]=_['keys'](_0x65e0f8[_0x9644('0x3e')]);_0x12255c['filters']=_[_0x9644('0x42')](_0x12255c[_0x9644('0x3d')],_0x12255c[_0x9644('0x3e')]);_0x41313f[_0x9644('0x41')]=_[_0x9644('0x42')](_0x12255c['model'],qs[_0x9644('0x43')](_0x65e0f8[_0x9644('0x3e')]['fields']));_0x41313f[_0x9644('0x41')]=_0x41313f[_0x9644('0x41')][_0x9644('0x44')]?_0x41313f['attributes']:_0x12255c[_0x9644('0x3d')];if(_0x65e0f8[_0x9644('0x3e')][_0x9644('0x4e')]){_0x41313f[_0x9644('0x4f')]=[{'all':!![]}];}_0x41313f=_[_0x9644('0x49')]({},_0x41313f,_0x65e0f8[_0x9644('0x4c')]);return db[_0x9644('0x4d')][_0x9644('0x54')](_0x41313f)['then'](handleEntityNotFound(_0x2ba7e2,null))['then'](respondWithResult(_0x2ba7e2,null))[_0x9644('0x29')](handleError(_0x2ba7e2,null));};exports[_0x9644('0x55')]=function(_0xfa0824,_0x2f6448){if(_0xfa0824[_0x9644('0x56')]['id']){delete _0xfa0824[_0x9644('0x56')]['id'];}return db[_0x9644('0x4d')]['find']({'where':{'id':_0xfa0824['params']['id']}})[_0x9644('0x33')](handleEntityNotFound(_0x2f6448,null))[_0x9644('0x33')](saveUpdates(_0xfa0824['body'],null))['then'](respondWithResult(_0x2f6448,null))[_0x9644('0x29')](handleError(_0x2f6448,null));};exports['destroy']=function(_0x47e78f,_0x3779df){return db[_0x9644('0x4d')][_0x9644('0x54')]({'where':{'id':_0x47e78f[_0x9644('0x53')]['id']}})[_0x9644('0x33')](handleEntityNotFound(_0x3779df,null))['then'](removeEntity(_0x3779df,null))['catch'](handleError(_0x3779df,null));};exports[_0x9644('0x57')]=function(_0x446f17,_0x24046c){return db[_0x9644('0x4d')]['describe']()[_0x9644('0x33')](respondWithResult(_0x24046c,null))[_0x9644('0x29')](handleError(_0x24046c,null));};var interaction_log=require(_0x9644('0x15'))(_0x9644('0x58'));exports['accept']=function(_0x16ea54,_0x4d3442,_0x357d14){var _0x3c4dd1={'agent':{},'channel':'fax'};if(_0x16ea54[_0x9644('0x56')]['id']){delete _0x16ea54[_0x9644('0x56')]['id'];}_0x16ea54[_0x9644('0x56')][_0x9644('0x59')]=!![];_0x16ea54[_0x9644('0x56')]['readAt']=moment()['format'](_0x9644('0x5a'));_0x16ea54[_0x9644('0x56')]['UserId']=_0x16ea54[_0x9644('0x56')][_0x9644('0x5b')]||_0x16ea54[_0x9644('0x5c')]['id'];_0x3c4dd1[_0x9644('0x5d')]['id']=_0x16ea54[_0x9644('0x56')][_0x9644('0x5b')];return db[_0x9644('0x4d')][_0x9644('0x54')]({'where':{'id':_0x16ea54[_0x9644('0x53')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x4d3442,null))['then'](saveUpdates(_0x16ea54[_0x9644('0x56')],null))[_0x9644('0x33')](function(_0x136d1a){if(_0x136d1a){_0x3c4dd1[_0x9644('0x27')]=_0x136d1a[_0x9644('0x5e')]({'plain':!![]});return db[_0x9644('0x5f')][_0x9644('0x54')]({'where':{'id':_0x136d1a['FaxInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x4d3442,null))[_0x9644('0x33')](function(_0x45e935){if(_0x45e935){return _0x45e935[_0x9644('0x55')]({'UserId':_0x16ea54[_0x9644('0x56')][_0x9644('0x5b')],'read1stAt':_[_0x9644('0x60')](_0x45e935['read1stAt'])?moment()[_0x9644('0x61')](_0x9644('0x5a')):undefined});}return null;})['then'](function(_0x4438e7){if(_0x4438e7){_0x3c4dd1[_0x9644('0x62')]=_0x4438e7[_0x9644('0x5e')]({'plain':!![]});interaction_log[_0x9644('0x22')](_0x9644('0x63'),_0x16ea54[_0x9644('0x5c')]['id'],_0x16ea54[_0x9644('0x5c')][_0x9644('0x37')],_0x16ea54[_0x9644('0x5c')][_0x9644('0x64')],_0x3c4dd1[_0x9644('0x62')]['id'],_0x16ea54['body']?JSON[_0x9644('0x65')](_0x16ea54[_0x9644('0x56')]):_0x9644('0x66'));return respondWithRpcPromise(_0x9644('0x67'),_0x9644('0x68'),_0x3c4dd1);}return null;})[_0x9644('0x33')](function(_0x277ecb){var _0x457c39=_0x9644('0x69')+_0x277ecb[_0x9644('0x27')][_0x9644('0x6a')];return db[_0x9644('0x6b')][_0x9644('0x3e')](_0x457c39,{'type':db[_0x9644('0x6c')][_0x9644('0x6d')][_0x9644('0x6e')],'raw':!![]})[_0x9644('0x33')](function(_0x501836){return _0x501836;});})[_0x9644('0x33')](function(_0x30eeb6){if(_0x30eeb6){_0x3c4dd1['message']['contact']=_0x30eeb6[0x0];if(!_0x16ea54['body'][_0x9644('0x5b')])return;return db[_0x9644('0x6f')]['find']({'where':{'id':_0x16ea54[_0x9644('0x56')]['UserId'],'role':'agent'},'attributes':['id',_0x9644('0x37'),_0x9644('0x70'),_0x9644('0x71'),_0x9644('0x72')],'raw':!![]});}return null;})[_0x9644('0x33')](function(_0x237555){if(!_0x237555)return null;_0x3c4dd1['message'][_0x9644('0x5d')]=_0x237555;return _0x3c4dd1;})[_0x9644('0x33')](function(_0x21242e){if(_0x21242e){if(_0x16ea54['body']['manual']){_0x3c4dd1[_0x9644('0x27')]['interface']=util[_0x9644('0x61')](_0x9644('0x73'),_0x16ea54[_0x9644('0x5c')]['name']);_0x3c4dd1[_0x9644('0x27')][_0x9644('0x74')]=_0x3c4dd1[_0x9644('0x74')];_0x3c4dd1['message'][_0x9644('0x75')]=_0x3c4dd1[_0x9644('0x74')];_0x3c4dd1[_0x9644('0x27')]['event']=_0x9644('0x76');return respondWithRpcPromise('EventManager',_0x9644('0x77'),{'event':_0x9644('0x78'),'message':_0x3c4dd1[_0x9644('0x27')]},client9002)[_0x9644('0x33')](function(){return _0x3c4dd1;});}return _0x3c4dd1;}return null;})['then'](respondWithResult(_0x4d3442,null))[_0x9644('0x29')](handleError(_0x4d3442,null));};var interaction_log=require('../../config/logger')(_0x9644('0x58'));exports[_0x9644('0x79')]=function(_0x199cd8,_0x26dfd4,_0x2c345d){var _0x3f0a61={'agent':{},'channel':_0x9644('0x7a')};if(_0x199cd8[_0x9644('0x56')]['id']){delete _0x199cd8[_0x9644('0x56')]['id'];}_0x199cd8['body']['UserId']=_0x199cd8['body']['UserId']||_0x199cd8['user']['id'];_0x3f0a61[_0x9644('0x5d')]['id']=_0x199cd8[_0x9644('0x56')][_0x9644('0x5b')];return db[_0x9644('0x4d')]['find']({'where':{'id':_0x199cd8[_0x9644('0x53')]['id'],'UserId':null}})[_0x9644('0x33')](handleEntityNotFound(_0x26dfd4,null))[_0x9644('0x33')](function(_0x43a1a4){if(_0x43a1a4){_0x3f0a61['message']=_0x43a1a4[_0x9644('0x5e')]({'plain':!![]});return db['FaxInteraction']['find']({'where':{'id':_0x43a1a4[_0x9644('0x7b')]}});}return null;})[_0x9644('0x33')](handleEntityNotFound(_0x26dfd4,null))[_0x9644('0x33')](function(_0x1b8ca5){if(_0x1b8ca5){_0x3f0a61[_0x9644('0x62')]=_0x1b8ca5[_0x9644('0x5e')]({'plain':!![]});interaction_log[_0x9644('0x22')](_0x9644('0x7c'),_0x199cd8[_0x9644('0x5c')]['id'],_0x199cd8['user'][_0x9644('0x37')],_0x199cd8['user'][_0x9644('0x64')],_0x3f0a61['interaction']['id'],_0x199cd8[_0x9644('0x56')]?JSON['stringify'](_0x199cd8[_0x9644('0x56')]):_0x9644('0x66'));return respondWithRpcPromise(_0x9644('0x7d'),'rejectMessage',_0x3f0a61);}return null;})[_0x9644('0x33')](function(_0x21e652){var _0x339279=_0x9644('0x69')+_0x21e652['message']['ContactId'];return db[_0x9644('0x6b')]['query'](_0x339279,{'type':db[_0x9644('0x6c')]['QueryTypes']['SELECT'],'raw':!![]})[_0x9644('0x33')](function(_0x399b8e){return _0x399b8e;});})[_0x9644('0x33')](function(_0x133bd2){if(_0x133bd2){_0x3f0a61[_0x9644('0x27')][_0x9644('0x7e')]=_0x133bd2[0x0];if(!_0x199cd8['body'][_0x9644('0x5b')])return;return db[_0x9644('0x6f')][_0x9644('0x54')]({'where':{'id':_0x199cd8['body']['UserId'],'role':_0x9644('0x5d')},'attributes':['id',_0x9644('0x37'),_0x9644('0x70'),_0x9644('0x71'),_0x9644('0x72')],'raw':!![]});}return null;})[_0x9644('0x33')](function(_0x7cd6c2){if(!_0x7cd6c2)return null;_0x3f0a61[_0x9644('0x27')]['agent']=_0x7cd6c2;return _0x3f0a61;})['then'](function(_0x4b12ca){if(_0x4b12ca){_0x4b12ca[_0x9644('0x27')][_0x9644('0x7f')]=util[_0x9644('0x61')]('SIP/%s',_0x199cd8[_0x9644('0x5c')][_0x9644('0x37')]);_0x4b12ca[_0x9644('0x27')][_0x9644('0x74')]=_0x3f0a61[_0x9644('0x74')];_0x4b12ca['message'][_0x9644('0x75')]=_0x3f0a61[_0x9644('0x74')];_0x4b12ca[_0x9644('0x27')][_0x9644('0x80')]=_0x9644('0x79');respondWithRpcPromise(_0x9644('0x77'),_0x9644('0x77'),{'event':'rejectmessage','message':_0x4b12ca[_0x9644('0x27')]},client9002);return _0x3f0a61;}return null;})['then'](respondWithResult(_0x26dfd4,null))[_0x9644('0x29')](handleError(_0x26dfd4,null));};exports[_0x9644('0x81')]=function(_0x1e5818,_0x26ab95){var _0x11dfa7;return db['FaxMessage']['create'](_0x1e5818[_0x9644('0x56')],{})[_0x9644('0x33')](function(_0x405873){_0x11dfa7=_0x405873;return db[_0x9644('0x82')][_0x9644('0x83')]({'where':{'id':_0x11dfa7['ContactId']}});})['then'](function(_0x515f84){if(_[_0x9644('0x60')](_0x515f84)){return;}else{_0x11dfa7[_0x9644('0x7a')]=_0x515f84[_0x9644('0x7a')];return db[_0x9644('0x84')][_0x9644('0x83')]({'where':{'id':_0x11dfa7[_0x9644('0x85')]}});}})[_0x9644('0x33')](function(_0x3fc16f){return respondWithRpcPromise(_0x9644('0x86'),'SendFax',{'FaxAccountId':_['isNil'](_0x1e5818['body'])?undefined:_0x1e5818[_0x9644('0x56')]['FaxAccountId'],'path':_[_0x9644('0x60')](_0x3fc16f)?undefined:util['format'](_0x9644('0x87'),_0x3fc16f[_0x9644('0x88')]),'fax':_['isNil'](_0x11dfa7['fax'])?undefined:_0x11dfa7[_0x9644('0x7a')],'AttachmentId':_0x11dfa7[_0x9644('0x85')]},client9002);})[_0x9644('0x33')](respondWithResult(_0x26ab95,0xc9))[_0x9644('0x29')](handleError(_0x26ab95,null));};exports[_0x9644('0x89')]=function(_0x13de07,_0x46cc93){var _0x43fd1a=path[_0x9644('0x8a')](config[_0x9644('0x8b')],_0x9644('0x8c'),_0x9644('0x8d'),_0x9644('0x8e'));return db[_0x9644('0x4d')]['find']({'where':{'id':_0x13de07[_0x9644('0x53')]['id']},'include':[{'model':db[_0x9644('0x84')],'as':_0x9644('0x84')}]})['then'](handleEntityNotFound(_0x46cc93,null))[_0x9644('0x33')](function(_0x3060de){if(_0x3060de){return _0x46cc93[_0x9644('0x89')](path[_0x9644('0x8a')](_0x43fd1a,_0x3060de[_0x9644('0x84')]['basename']));}})[_0x9644('0x29')](handleError(_0x46cc93,null));};
\ No newline at end of file
+var _0xa13e=['FaxMessage,\x20%s,\x20%s','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','info','request\x20sent','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','destroy','name','send','index','map','FaxMessage','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','rows','show','includeAll','options','find','update','body','params','describe','fax-interactions','accept','fax','readAt','format','UserId','user','get','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','role','null','AcceptMessage','ContactId','sequelize','Sequelize','fullname','email','agent','manual','SIP/%s','channel','event','EventManager','FaxInteraction','FaxInteractionId','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','QueryTypes','contact','User','internal','interface','motionChannel','rejectmessage','create','findOne','Attachment','AttachmentId','SendFax','FaxAccountId','/var/opt/motion2/server/files/attachments/%s','basename','download','root','files','attachments','join','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','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/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./faxMessage.socket','register','jayson/promise','client','http','request','then'];(function(_0x47fca7,_0x10b190){var _0x1b852d=function(_0xee4cde){while(--_0xee4cde){_0x47fca7['push'](_0x47fca7['shift']());}};_0x1b852d(++_0x10b190);}(_0xa13e,0x192));var _0xea13=function(_0x4c4eee,_0x4cacf2){_0x4c4eee=_0x4c4eee-0x0;var _0xaf5b09=_0xa13e[_0x4c4eee];return _0xaf5b09;};'use strict';var emlformat=require(_0xea13('0x0'));var rimraf=require(_0xea13('0x1'));var zipdir=require(_0xea13('0x2'));var jsonpatch=require(_0xea13('0x3'));var rp=require(_0xea13('0x4'));var moment=require(_0xea13('0x5'));var BPromise=require(_0xea13('0x6'));var Mustache=require('mustache');var util=require(_0xea13('0x7'));var path=require(_0xea13('0x8'));var sox=require(_0xea13('0x9'));var csv=require(_0xea13('0xa'));var ejs=require(_0xea13('0xb'));var fs=require('fs');var fs_extra=require(_0xea13('0xc'));var _=require('lodash');var squel=require(_0xea13('0xd'));var crypto=require(_0xea13('0xe'));var jsforce=require(_0xea13('0xf'));var deskjs=require(_0xea13('0x10'));var toCsv=require('to-csv');var querystring=require(_0xea13('0x11'));var Papa=require(_0xea13('0x12'));var Redis=require('ioredis');var authService=require(_0xea13('0x13'));var qs=require(_0xea13('0x14'));var as=require(_0xea13('0x15'));var hardwareService=require(_0xea13('0x16'));var logger=require(_0xea13('0x17'))(_0xea13('0x18'));var utils=require(_0xea13('0x19'));var config=require(_0xea13('0x1a'));var licenseUtil=require(_0xea13('0x1b'));var db=require(_0xea13('0x1c'))['db'];config[_0xea13('0x1d')]=_['defaults'](config[_0xea13('0x1d')],{'host':_0xea13('0x1e'),'port':0x18eb});var socket=require(_0xea13('0x1f'))(new Redis(config[_0xea13('0x1d')]));require(_0xea13('0x20'))[_0xea13('0x21')](socket);var jayson=require(_0xea13('0x22'));var client=jayson[_0xea13('0x23')][_0xea13('0x24')]({'port':0x232c});var client9002=jayson[_0xea13('0x23')][_0xea13('0x24')]({'port':0x232a});function respondWithRpcPromise(_0x5a839e,_0x1f9d6e,_0x58f1f0,_0x3a0ad8){return new BPromise(function(_0x4469f2,_0x524f05){var _0x1ce865=_0x3a0ad8||client;return _0x1ce865[_0xea13('0x25')](_0x5a839e,_0x58f1f0)[_0xea13('0x26')](function(_0xe9d201){logger['info'](_0xea13('0x27'),_0x1f9d6e,'request\x20sent');logger[_0xea13('0x28')](_0xea13('0x29'),_0x1f9d6e,'request\x20sent',JSON[_0xea13('0x2a')](_0xe9d201));if(_0xe9d201[_0xea13('0x2b')]){if(_0xe9d201['error']['code']===0x1f4){logger[_0xea13('0x2b')](_0xea13('0x27'),_0x1f9d6e,_0xe9d201[_0xea13('0x2b')]['message']);return _0x524f05(_0xe9d201[_0xea13('0x2b')][_0xea13('0x2c')]);}logger['error'](_0xea13('0x27'),_0x1f9d6e,_0xe9d201[_0xea13('0x2b')][_0xea13('0x2c')]);return _0x4469f2(_0xe9d201[_0xea13('0x2b')]['message']);}else{logger[_0xea13('0x2d')]('FaxMessage,\x20%s,\x20%s',_0x1f9d6e,_0xea13('0x2e'));_0x4469f2(_0xe9d201[_0xea13('0x2f')][_0xea13('0x2c')]);}})[_0xea13('0x30')](function(_0x36f7ec){logger[_0xea13('0x2b')](_0xea13('0x27'),_0x1f9d6e,_0x36f7ec);_0x524f05(_0x36f7ec);});});}function respondWithStatusCode(_0x493f9e,_0x3fd559){_0x3fd559=_0x3fd559||0xcc;return function(_0x33f5bd){if(_0x33f5bd){return _0x493f9e[_0xea13('0x31')](_0x3fd559);}return _0x493f9e[_0xea13('0x32')](_0x3fd559)[_0xea13('0x33')]();};}function respondWithResult(_0x8e81cd,_0x1bcbb1){_0x1bcbb1=_0x1bcbb1||0xc8;return function(_0xea01f8){if(_0xea01f8){return _0x8e81cd[_0xea13('0x32')](_0x1bcbb1)[_0xea13('0x34')](_0xea01f8);}};}function respondWithFilteredResult(_0x229fa8,_0x5f1094){return function(_0x50d2b8){if(_0x50d2b8){var _0x3b998f=typeof _0x5f1094[_0xea13('0x35')]===_0xea13('0x36')&&typeof _0x5f1094[_0xea13('0x37')]==='undefined';var _0x3c172d=_0x50d2b8[_0xea13('0x38')];var _0x536527=_0x3b998f?0x0:_0x5f1094['offset'];var _0x70ca26=_0x3b998f?_0x50d2b8[_0xea13('0x38')]:_0x5f1094[_0xea13('0x35')]+_0x5f1094['limit'];var _0x449fba;if(_0x70ca26>=_0x3c172d){_0x70ca26=_0x3c172d;_0x449fba=0xc8;}else{_0x449fba=0xce;}_0x229fa8['status'](_0x449fba);return _0x229fa8[_0xea13('0x39')](_0xea13('0x3a'),_0x536527+'-'+_0x70ca26+'/'+_0x3c172d)[_0xea13('0x34')](_0x50d2b8);}return null;};}function patchUpdates(_0x4dc8f0){return function(_0x2b74bc){try{jsonpatch[_0xea13('0x3b')](_0x2b74bc,_0x4dc8f0,!![]);}catch(_0x342a23){return BPromise[_0xea13('0x3c')](_0x342a23);}return _0x2b74bc['save']();};}function saveUpdates(_0x1b825a,_0x345280){return function(_0x236ae0){if(_0x236ae0){return _0x236ae0['update'](_0x1b825a)[_0xea13('0x26')](function(_0x2d06f9){return _0x2d06f9;});}return null;};}function removeEntity(_0x33982c,_0x165a80){return function(_0x45bffc){if(_0x45bffc){return _0x45bffc[_0xea13('0x3d')]()[_0xea13('0x26')](function(){_0x33982c[_0xea13('0x32')](0xcc)[_0xea13('0x33')]();});}};}function handleEntityNotFound(_0x290ba9,_0x304ca3){return function(_0x161a39){if(!_0x161a39){_0x290ba9[_0xea13('0x31')](0x194);}return _0x161a39;};}function handleError(_0x5ab7d4,_0xe39858){_0xe39858=_0xe39858||0x1f4;return function(_0x2ce2c3){logger['error'](_0x2ce2c3['stack']);if(_0x2ce2c3['name']){delete _0x2ce2c3[_0xea13('0x3e')];}_0x5ab7d4[_0xea13('0x32')](_0xe39858)[_0xea13('0x3f')](_0x2ce2c3);};}exports[_0xea13('0x40')]=function(_0x4d9d76,_0x208435){var _0x3fcbf2={},_0xd3426e={},_0x45d7f4={'count':0x0,'rows':[]};var _0x4540d8=_[_0xea13('0x41')](db[_0xea13('0x42')][_0xea13('0x43')],function(_0x1702f0){return{'name':_0x1702f0['fieldName'],'type':_0x1702f0[_0xea13('0x44')][_0xea13('0x45')]};});_0xd3426e[_0xea13('0x46')]=_[_0xea13('0x41')](_0x4540d8,_0xea13('0x3e'));_0xd3426e[_0xea13('0x47')]=_[_0xea13('0x48')](_0x4d9d76['query']);_0xd3426e[_0xea13('0x49')]=_[_0xea13('0x4a')](_0xd3426e[_0xea13('0x46')],_0xd3426e[_0xea13('0x47')]);_0x3fcbf2[_0xea13('0x4b')]=_['intersection'](_0xd3426e[_0xea13('0x46')],qs[_0xea13('0x4c')](_0x4d9d76[_0xea13('0x47')]['fields']));_0x3fcbf2['attributes']=_0x3fcbf2[_0xea13('0x4b')][_0xea13('0x4d')]?_0x3fcbf2['attributes']:_0xd3426e[_0xea13('0x46')];if(!_0x4d9d76[_0xea13('0x47')][_0xea13('0x4e')](_0xea13('0x4f'))){_0x3fcbf2[_0xea13('0x37')]=qs[_0xea13('0x37')](_0x4d9d76[_0xea13('0x47')]['limit']);_0x3fcbf2[_0xea13('0x35')]=qs[_0xea13('0x35')](_0x4d9d76['query'][_0xea13('0x35')]);}_0x3fcbf2[_0xea13('0x50')]=qs[_0xea13('0x51')](_0x4d9d76[_0xea13('0x47')]['sort']);_0x3fcbf2[_0xea13('0x52')]=qs[_0xea13('0x49')](_[_0xea13('0x53')](_0x4d9d76[_0xea13('0x47')],_0xd3426e[_0xea13('0x49')]),_0x4540d8);if(_0x4d9d76['query'][_0xea13('0x54')]){_0x3fcbf2[_0xea13('0x52')]=_[_0xea13('0x55')](_0x3fcbf2[_0xea13('0x52')],{'$or':_['map'](_0x4540d8,function(_0x2972b7){if(_0x2972b7[_0xea13('0x44')]!==_0xea13('0x56')){var _0x57f25={};_0x57f25[_0x2972b7[_0xea13('0x3e')]]={'$like':'%'+_0x4d9d76[_0xea13('0x47')][_0xea13('0x54')]+'%'};return _0x57f25;}})});}_0x3fcbf2=_[_0xea13('0x55')]({},_0x3fcbf2,_0x4d9d76['options']);var _0x4c339f={'where':_0x3fcbf2[_0xea13('0x52')]};return db[_0xea13('0x42')][_0xea13('0x38')](_0x4c339f)[_0xea13('0x26')](function(_0x3c5c62){_0x45d7f4['count']=_0x3c5c62;if(_0x4d9d76['query']['includeAll']){_0x3fcbf2[_0xea13('0x57')]=[{'all':!![]}];}return db['FaxMessage']['findAll'](_0x3fcbf2);})[_0xea13('0x26')](function(_0x2eaee6){_0x45d7f4[_0xea13('0x58')]=_0x2eaee6;return _0x45d7f4;})[_0xea13('0x26')](respondWithFilteredResult(_0x208435,_0x3fcbf2))[_0xea13('0x30')](handleError(_0x208435,null));};exports[_0xea13('0x59')]=function(_0x21f54b,_0x5283d4){var _0xfeeb79={'raw':!![],'where':{'id':_0x21f54b['params']['id']}},_0x2784b5={};_0x2784b5[_0xea13('0x46')]=_[_0xea13('0x48')](db['FaxMessage'][_0xea13('0x43')]);_0x2784b5['query']=_['keys'](_0x21f54b[_0xea13('0x47')]);_0x2784b5[_0xea13('0x49')]=_[_0xea13('0x4a')](_0x2784b5['model'],_0x2784b5[_0xea13('0x47')]);_0xfeeb79['attributes']=_[_0xea13('0x4a')](_0x2784b5[_0xea13('0x46')],qs['fields'](_0x21f54b[_0xea13('0x47')]['fields']));_0xfeeb79[_0xea13('0x4b')]=_0xfeeb79[_0xea13('0x4b')][_0xea13('0x4d')]?_0xfeeb79['attributes']:_0x2784b5[_0xea13('0x46')];if(_0x21f54b['query'][_0xea13('0x5a')]){_0xfeeb79[_0xea13('0x57')]=[{'all':!![]}];}_0xfeeb79=_[_0xea13('0x55')]({},_0xfeeb79,_0x21f54b[_0xea13('0x5b')]);return db[_0xea13('0x42')][_0xea13('0x5c')](_0xfeeb79)['then'](handleEntityNotFound(_0x5283d4,null))[_0xea13('0x26')](respondWithResult(_0x5283d4,null))[_0xea13('0x30')](handleError(_0x5283d4,null));};exports[_0xea13('0x5d')]=function(_0x370533,_0x41f331){if(_0x370533[_0xea13('0x5e')]['id']){delete _0x370533[_0xea13('0x5e')]['id'];}return db['FaxMessage'][_0xea13('0x5c')]({'where':{'id':_0x370533[_0xea13('0x5f')]['id']}})['then'](handleEntityNotFound(_0x41f331,null))[_0xea13('0x26')](saveUpdates(_0x370533[_0xea13('0x5e')],null))[_0xea13('0x26')](respondWithResult(_0x41f331,null))[_0xea13('0x30')](handleError(_0x41f331,null));};exports[_0xea13('0x3d')]=function(_0x44bad7,_0x5486a5){return db[_0xea13('0x42')][_0xea13('0x5c')]({'where':{'id':_0x44bad7[_0xea13('0x5f')]['id']}})['then'](handleEntityNotFound(_0x5486a5,null))[_0xea13('0x26')](removeEntity(_0x5486a5,null))[_0xea13('0x30')](handleError(_0x5486a5,null));};exports[_0xea13('0x60')]=function(_0x2f422a,_0x5f3d75){return db[_0xea13('0x42')][_0xea13('0x60')]()['then'](respondWithResult(_0x5f3d75,null))[_0xea13('0x30')](handleError(_0x5f3d75,null));};var interaction_log=require(_0xea13('0x17'))(_0xea13('0x61'));exports[_0xea13('0x62')]=function(_0x2b59ac,_0x4a3c4d,_0x6841bf){var _0x255c4b={'agent':{},'channel':_0xea13('0x63')};if(_0x2b59ac['body']['id']){delete _0x2b59ac[_0xea13('0x5e')]['id'];}_0x2b59ac['body']['read']=!![];_0x2b59ac[_0xea13('0x5e')][_0xea13('0x64')]=moment()[_0xea13('0x65')]('YYYY-MM-DD\x20HH:mm:ss');_0x2b59ac[_0xea13('0x5e')][_0xea13('0x66')]=_0x2b59ac[_0xea13('0x5e')][_0xea13('0x66')]||_0x2b59ac[_0xea13('0x67')]['id'];_0x255c4b['agent']['id']=_0x2b59ac[_0xea13('0x5e')][_0xea13('0x66')];return db['FaxMessage'][_0xea13('0x5c')]({'where':{'id':_0x2b59ac[_0xea13('0x5f')]['id'],'UserId':null}})[_0xea13('0x26')](handleEntityNotFound(_0x4a3c4d,null))[_0xea13('0x26')](saveUpdates(_0x2b59ac[_0xea13('0x5e')],null))['then'](function(_0x61837b){if(_0x61837b){_0x255c4b[_0xea13('0x2c')]=_0x61837b[_0xea13('0x68')]({'plain':!![]});return db['FaxInteraction']['find']({'where':{'id':_0x61837b['FaxInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x4a3c4d,null))[_0xea13('0x26')](function(_0x22abd2){if(_0x22abd2){return _0x22abd2[_0xea13('0x5d')]({'UserId':_0x2b59ac[_0xea13('0x5e')][_0xea13('0x66')],'read1stAt':_[_0xea13('0x69')](_0x22abd2[_0xea13('0x6a')])?moment()[_0xea13('0x65')](_0xea13('0x6b')):undefined});}return null;})[_0xea13('0x26')](function(_0x5b097c){if(_0x5b097c){_0x255c4b[_0xea13('0x6c')]=_0x5b097c[_0xea13('0x68')]({'plain':!![]});interaction_log[_0xea13('0x2d')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2b59ac[_0xea13('0x67')]['id'],_0x2b59ac[_0xea13('0x67')][_0xea13('0x3e')],_0x2b59ac[_0xea13('0x67')][_0xea13('0x6d')],_0x255c4b[_0xea13('0x6c')]['id'],_0x2b59ac['body']?JSON[_0xea13('0x2a')](_0x2b59ac[_0xea13('0x5e')]):_0xea13('0x6e'));return respondWithRpcPromise(_0xea13('0x6f'),'acceptMessage',_0x255c4b);}return null;})['then'](function(_0x10b5d6){var _0x2770dc='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x10b5d6[_0xea13('0x2c')][_0xea13('0x70')];return db[_0xea13('0x71')][_0xea13('0x47')](_0x2770dc,{'type':db[_0xea13('0x72')]['QueryTypes']['SELECT'],'raw':!![]})[_0xea13('0x26')](function(_0x3d22b5){return _0x3d22b5;});})[_0xea13('0x26')](function(_0x1b01b3){if(_0x1b01b3){_0x255c4b[_0xea13('0x2c')]['contact']=_0x1b01b3[0x0];if(!_0x2b59ac[_0xea13('0x5e')][_0xea13('0x66')])return;return db['User'][_0xea13('0x5c')]({'where':{'id':_0x2b59ac[_0xea13('0x5e')]['UserId'],'role':'agent'},'attributes':['id','name',_0xea13('0x73'),_0xea13('0x74'),'internal'],'raw':!![]});}return null;})[_0xea13('0x26')](function(_0x12111b){if(!_0x12111b)return null;_0x255c4b[_0xea13('0x2c')][_0xea13('0x75')]=_0x12111b;return _0x255c4b;})[_0xea13('0x26')](function(_0x717eb){if(_0x717eb){if(_0x2b59ac[_0xea13('0x5e')][_0xea13('0x76')]){_0x255c4b['message']['interface']=util['format'](_0xea13('0x77'),_0x2b59ac[_0xea13('0x67')]['name']);_0x255c4b[_0xea13('0x2c')]['channel']=_0x255c4b[_0xea13('0x78')];_0x255c4b[_0xea13('0x2c')]['motionChannel']=_0x255c4b[_0xea13('0x78')];_0x255c4b[_0xea13('0x2c')][_0xea13('0x79')]='accept';return respondWithRpcPromise(_0xea13('0x7a'),'EventManager',{'event':'acceptmessage','message':_0x255c4b[_0xea13('0x2c')]},client9002)['then'](function(){return _0x255c4b;});}return _0x255c4b;}return null;})['then'](respondWithResult(_0x4a3c4d,null))[_0xea13('0x30')](handleError(_0x4a3c4d,null));};var interaction_log=require('../../config/logger')('fax-interactions');exports[_0xea13('0x3c')]=function(_0x10cec2,_0x5012b7,_0x3f0f2e){var _0x5087b7={'agent':{},'channel':_0xea13('0x63')};if(_0x10cec2['body']['id']){delete _0x10cec2['body']['id'];}_0x10cec2[_0xea13('0x5e')][_0xea13('0x66')]=_0x10cec2[_0xea13('0x5e')][_0xea13('0x66')]||_0x10cec2['user']['id'];_0x5087b7['agent']['id']=_0x10cec2['body'][_0xea13('0x66')];return db[_0xea13('0x42')][_0xea13('0x5c')]({'where':{'id':_0x10cec2[_0xea13('0x5f')]['id'],'UserId':null}})[_0xea13('0x26')](handleEntityNotFound(_0x5012b7,null))[_0xea13('0x26')](function(_0x33d927){if(_0x33d927){_0x5087b7[_0xea13('0x2c')]=_0x33d927[_0xea13('0x68')]({'plain':!![]});return db[_0xea13('0x7b')]['find']({'where':{'id':_0x33d927[_0xea13('0x7c')]}});}return null;})[_0xea13('0x26')](handleEntityNotFound(_0x5012b7,null))[_0xea13('0x26')](function(_0x1bb2f3){if(_0x1bb2f3){_0x5087b7[_0xea13('0x6c')]=_0x1bb2f3['get']({'plain':!![]});interaction_log[_0xea13('0x2d')]('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x10cec2['user']['id'],_0x10cec2[_0xea13('0x67')][_0xea13('0x3e')],_0x10cec2['user'][_0xea13('0x6d')],_0x5087b7[_0xea13('0x6c')]['id'],_0x10cec2['body']?JSON[_0xea13('0x2a')](_0x10cec2[_0xea13('0x5e')]):_0xea13('0x6e'));return respondWithRpcPromise(_0xea13('0x7d'),'rejectMessage',_0x5087b7);}return null;})[_0xea13('0x26')](function(_0x21b38a){var _0x4d00de=_0xea13('0x7e')+_0x21b38a[_0xea13('0x2c')][_0xea13('0x70')];return db[_0xea13('0x71')][_0xea13('0x47')](_0x4d00de,{'type':db[_0xea13('0x72')][_0xea13('0x7f')]['SELECT'],'raw':!![]})['then'](function(_0x4b68f3){return _0x4b68f3;});})[_0xea13('0x26')](function(_0x268167){if(_0x268167){_0x5087b7['message'][_0xea13('0x80')]=_0x268167[0x0];if(!_0x10cec2['body'][_0xea13('0x66')])return;return db[_0xea13('0x81')][_0xea13('0x5c')]({'where':{'id':_0x10cec2[_0xea13('0x5e')]['UserId'],'role':_0xea13('0x75')},'attributes':['id',_0xea13('0x3e'),_0xea13('0x73'),_0xea13('0x74'),_0xea13('0x82')],'raw':!![]});}return null;})['then'](function(_0x5bbc95){if(!_0x5bbc95)return null;_0x5087b7[_0xea13('0x2c')]['agent']=_0x5bbc95;return _0x5087b7;})[_0xea13('0x26')](function(_0x2d7df8){if(_0x2d7df8){_0x2d7df8[_0xea13('0x2c')][_0xea13('0x83')]=util[_0xea13('0x65')](_0xea13('0x77'),_0x10cec2['user'][_0xea13('0x3e')]);_0x2d7df8['message'][_0xea13('0x78')]=_0x5087b7['channel'];_0x2d7df8[_0xea13('0x2c')][_0xea13('0x84')]=_0x5087b7[_0xea13('0x78')];_0x2d7df8[_0xea13('0x2c')][_0xea13('0x79')]=_0xea13('0x3c');respondWithRpcPromise(_0xea13('0x7a'),_0xea13('0x7a'),{'event':_0xea13('0x85'),'message':_0x2d7df8[_0xea13('0x2c')]},client9002);return _0x5087b7;}return null;})['then'](respondWithResult(_0x5012b7,null))[_0xea13('0x30')](handleError(_0x5012b7,null));};exports['create']=function(_0x28242b,_0x750bb5){var _0x50b269;return db[_0xea13('0x42')][_0xea13('0x86')](_0x28242b[_0xea13('0x5e')],{})[_0xea13('0x26')](function(_0x5d037b){_0x50b269=_0x5d037b;return db['CmContact'][_0xea13('0x87')]({'where':{'id':_0x50b269[_0xea13('0x70')]}});})[_0xea13('0x26')](function(_0x15b644){if(_['isNil'](_0x15b644)){return;}else{_0x50b269[_0xea13('0x63')]=_0x15b644[_0xea13('0x63')];return db[_0xea13('0x88')][_0xea13('0x87')]({'where':{'id':_0x50b269[_0xea13('0x89')]}});}})[_0xea13('0x26')](function(_0x415cab){return respondWithRpcPromise(_0xea13('0x8a'),'SendFax',{'FaxAccountId':_['isNil'](_0x28242b['body'])?undefined:_0x28242b[_0xea13('0x5e')][_0xea13('0x8b')],'path':_['isNil'](_0x415cab)?undefined:util[_0xea13('0x65')](_0xea13('0x8c'),_0x415cab[_0xea13('0x8d')]),'fax':_[_0xea13('0x69')](_0x50b269['fax'])?undefined:_0x50b269[_0xea13('0x63')],'AttachmentId':_0x50b269[_0xea13('0x89')]},client9002);})['then'](respondWithResult(_0x750bb5,0xc9))[_0xea13('0x30')](handleError(_0x750bb5,null));};exports[_0xea13('0x8e')]=function(_0x1167e1,_0x249bae){var _0x22f0db=path['join'](config[_0xea13('0x8f')],'server',_0xea13('0x90'),_0xea13('0x91'));return db['FaxMessage'][_0xea13('0x5c')]({'where':{'id':_0x1167e1[_0xea13('0x5f')]['id']},'include':[{'model':db[_0xea13('0x88')],'as':_0xea13('0x88')}]})[_0xea13('0x26')](handleEntityNotFound(_0x249bae,null))[_0xea13('0x26')](function(_0x32a155){if(_0x32a155){return _0x249bae[_0xea13('0x8e')](path[_0xea13('0x92')](_0x22f0db,_0x32a155[_0xea13('0x88')][_0xea13('0x8d')]));}})['catch'](handleError(_0x249bae,null));};
\ No newline at end of file
index a37e70f..5fab03f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5334=['../../mysqldb','FaxMessage','setMaxListeners','save','remove','hasOwnProperty','events'];(function(_0x151418,_0x2cbffa){var _0x40e29a=function(_0xec4d7){while(--_0xec4d7){_0x151418['push'](_0x151418['shift']());}};_0x40e29a(++_0x2cbffa);}(_0x5334,0x84));var _0x4533=function(_0xeffb20,_0x32af68){_0xeffb20=_0xeffb20-0x0;var _0x4ec0f8=_0x5334[_0xeffb20];return _0x4ec0f8;};'use strict';var EventEmitter=require(_0x4533('0x0'));var FaxMessage=require(_0x4533('0x1'))['db'][_0x4533('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x4533('0x3')](0x0);var events={'afterCreate':_0x4533('0x4'),'afterUpdate':'update','afterDestroy':_0x4533('0x5')};function emitEvent(_0x5176b5){return function(_0x42184d,_0x11ce61,_0x5cbca4){FaxMessageEvents['emit'](_0x5176b5+':'+_0x42184d['id'],_0x42184d);FaxMessageEvents['emit'](_0x5176b5,_0x42184d);_0x5cbca4(null);};}for(var e in events){if(events[_0x4533('0x6')](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
+var _0xbb61=['FaxMessage','setMaxListeners','save','update','remove','emit','hook','exports','events'];(function(_0x457f4e,_0x2d1d0a){var _0x241e9a=function(_0x5d81e8){while(--_0x5d81e8){_0x457f4e['push'](_0x457f4e['shift']());}};_0x241e9a(++_0x2d1d0a);}(_0xbb61,0x131));var _0x1bb6=function(_0x231e16,_0x67347b){_0x231e16=_0x231e16-0x0;var _0x570a7c=_0xbb61[_0x231e16];return _0x570a7c;};'use strict';var EventEmitter=require(_0x1bb6('0x0'));var FaxMessage=require('../../mysqldb')['db'][_0x1bb6('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x1bb6('0x2')](0x0);var events={'afterCreate':_0x1bb6('0x3'),'afterUpdate':_0x1bb6('0x4'),'afterDestroy':_0x1bb6('0x5')};function emitEvent(_0xb6f0ac){return function(_0x329b00,_0x56b9f8,_0x110fce){FaxMessageEvents[_0x1bb6('0x6')](_0xb6f0ac+':'+_0x329b00['id'],_0x329b00);FaxMessageEvents[_0x1bb6('0x6')](_0xb6f0ac,_0x329b00);_0x110fce(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxMessage[_0x1bb6('0x7')](e,emitEvent(event));}}module[_0x1bb6('0x8')]=FaxMessageEvents;
\ No newline at end of file
index f9d60ac..4e7044a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34f2=['FaxInteractionId','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','request-promise','path','rimraf','../../config/environment','exports','define','FaxMessage','fax_messages','fti_fax_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','FaxInteraction'];(function(_0x1ec05e,_0x4feae2){var _0x979be9=function(_0x425f76){while(--_0x425f76){_0x1ec05e['push'](_0x1ec05e['shift']());}};_0x979be9(++_0x4feae2);}(_0x34f2,0x1c9));var _0x234f=function(_0x5b9219,_0x53cb1b){_0x5b9219=_0x5b9219-0x0;var _0x3e0097=_0x34f2[_0x5b9219];return _0x3e0097;};'use strict';var _=require(_0x234f('0x0'));var util=require(_0x234f('0x1'));var logger=require('../../config/logger')(_0x234f('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x234f('0x3'));var fs=require('fs');var path=require(_0x234f('0x4'));var rimraf=require(_0x234f('0x5'));var config=require(_0x234f('0x6'));var attributes=require('./faxMessage.attributes');module[_0x234f('0x7')]=function(_0x1c691d,_0x4ebbc8){return _0x1c691d[_0x234f('0x8')](_0x234f('0x9'),attributes,{'tableName':_0x234f('0xa'),'paranoid':![],'indexes':[{'name':_0x234f('0xb'),'fields':[_0x234f('0xc')],'type':_0x234f('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x44e105,_0x24556f,_0x13a3e7){var _0x1364a1=_0x1c691d[_0x234f('0xe')];var _0x30ef7e=_0x44e105[_0x234f('0xf')]({'plain':!![]});if(_0x30ef7e[_0x234f('0x10')][_0x234f('0x11')]()==='in'||_0x30ef7e[_0x234f('0x10')]['toLowerCase']()===_0x234f('0x12')&&!_0x30ef7e[_0x234f('0x13')]&&!_[_0x234f('0x14')](_0x30ef7e[_0x234f('0x15')])){_0x1364a1[_0x234f('0x16')]['findOne']({'where':{'id':_0x30ef7e[_0x234f('0x17')]}})['then'](function(_0x4ae54d){if(_0x4ae54d){_0x4ae54d[_0x234f('0x18')]({'lastMsgAt':_0x30ef7e[_0x234f('0x19')],'lastMsgDirection':_0x30ef7e['direction'][_0x234f('0x11')]()});}})[_0x234f('0x1a')](function(_0x4fc42e){console[_0x234f('0x1b')](_0x4fc42e);});}_0x13a3e7();}},'charset':_0x234f('0x1c'),'collate':_0x234f('0x1d')});};
\ No newline at end of file
+var _0xeb88=['./faxMessage.attributes','define','fax_messages','fti_fax_messages','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','FaxInteraction','findOne','FaxInteractionId','then','update','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x1e6dba,_0x5686ce){var _0xb3a0f=function(_0x175356){while(--_0x175356){_0x1e6dba['push'](_0x1e6dba['shift']());}};_0xb3a0f(++_0x5686ce);}(_0xeb88,0x157));var _0x8eb8=function(_0x4d7056,_0x387505){_0x4d7056=_0x4d7056-0x0;var _0x19553a=_0xeb88[_0x4d7056];return _0x19553a;};'use strict';var _=require('lodash');var util=require(_0x8eb8('0x0'));var logger=require(_0x8eb8('0x1'))(_0x8eb8('0x2'));var moment=require('moment');var BPromise=require(_0x8eb8('0x3'));var rp=require(_0x8eb8('0x4'));var fs=require('fs');var path=require(_0x8eb8('0x5'));var rimraf=require(_0x8eb8('0x6'));var config=require(_0x8eb8('0x7'));var attributes=require(_0x8eb8('0x8'));module['exports']=function(_0xcca1a4,_0x463d61){return _0xcca1a4[_0x8eb8('0x9')]('FaxMessage',attributes,{'tableName':_0x8eb8('0xa'),'paranoid':![],'indexes':[{'name':_0x8eb8('0xb'),'fields':['body'],'type':_0x8eb8('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5c6c8b,_0x2f1676,_0x41b32f){var _0x34b334=_0xcca1a4[_0x8eb8('0xd')];var _0x35be82=_0x5c6c8b[_0x8eb8('0xe')]({'plain':!![]});if(_0x35be82[_0x8eb8('0xf')][_0x8eb8('0x10')]()==='in'||_0x35be82[_0x8eb8('0xf')][_0x8eb8('0x10')]()===_0x8eb8('0x11')&&!_0x35be82[_0x8eb8('0x12')]&&!_[_0x8eb8('0x13')](_0x35be82['UserId'])){_0x34b334[_0x8eb8('0x14')][_0x8eb8('0x15')]({'where':{'id':_0x35be82[_0x8eb8('0x16')]}})[_0x8eb8('0x17')](function(_0x240939){if(_0x240939){_0x240939[_0x8eb8('0x18')]({'lastMsgAt':_0x35be82['createdAt'],'lastMsgDirection':_0x35be82[_0x8eb8('0xf')]['toLowerCase']()});}})['catch'](function(_0x2ba82f){console['error'](_0x2ba82f);});}_0x41b32f();}},'charset':_0x8eb8('0x19'),'collate':_0x8eb8('0x1a')});};
\ No newline at end of file
index 339c68b..719c9f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d6=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','then','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxMessage,\x20%s,\x20%s','message','result','catch','FaxMessage','create','body','options','raw','info','CreateFaxMessage','update','where','limit','UpdateFaxMessage'];(function(_0x5f4dcd,_0xce4f33){var _0x55ea8e=function(_0x3264e2){while(--_0x3264e2){_0x5f4dcd['push'](_0x5f4dcd['shift']());}};_0x55ea8e(++_0xce4f33);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x28830a,_0x1e3ac6){_0x28830a=_0x28830a-0x0;var _0x378c00=_0xd6d6[_0x28830a];return _0x378c00;};'use strict';var _=require(_0x6d6d('0x0'));var util=require(_0x6d6d('0x1'));var moment=require(_0x6d6d('0x2'));var BPromise=require(_0x6d6d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6d6d('0x4'));var db=require(_0x6d6d('0x5'))['db'];var utils=require(_0x6d6d('0x6'));var logger=require(_0x6d6d('0x7'))(_0x6d6d('0x8'));var config=require(_0x6d6d('0x9'));var jayson=require(_0x6d6d('0xa'));var client=jayson['client'][_0x6d6d('0xb')]({'port':0x232a});config[_0x6d6d('0xc')]=_[_0x6d6d('0xd')](config[_0x6d6d('0xc')],{'host':_0x6d6d('0xe'),'port':0x18eb});var socket=require(_0x6d6d('0xf'))(new Redis(config[_0x6d6d('0xc')]));require('./faxMessage.socket')['register'](socket);function respondWithRpcPromise(_0x404c88,_0x1fa46d,_0x23b18a){return new BPromise(function(_0x290dfb,_0xf84314){return client['request'](_0x404c88,_0x23b18a)[_0x6d6d('0x10')](function(_0x158f82){logger['info']('FaxMessage,\x20%s,\x20%s',_0x1fa46d,_0x6d6d('0x11'));logger[_0x6d6d('0x12')](_0x6d6d('0x13'),_0x1fa46d,_0x6d6d('0x11'),JSON[_0x6d6d('0x14')](_0x158f82));if(_0x158f82[_0x6d6d('0x15')]){if(_0x158f82[_0x6d6d('0x15')][_0x6d6d('0x16')]===0x1f4){logger['error'](_0x6d6d('0x17'),_0x1fa46d,_0x158f82[_0x6d6d('0x15')][_0x6d6d('0x18')]);return _0xf84314(_0x158f82[_0x6d6d('0x15')][_0x6d6d('0x18')]);}logger['error'](_0x6d6d('0x17'),_0x1fa46d,_0x158f82['error'][_0x6d6d('0x18')]);return _0x290dfb(_0x158f82[_0x6d6d('0x15')][_0x6d6d('0x18')]);}else{logger['info']('FaxMessage,\x20%s,\x20%s',_0x1fa46d,_0x6d6d('0x11'));_0x290dfb(_0x158f82[_0x6d6d('0x19')][_0x6d6d('0x18')]);}})[_0x6d6d('0x1a')](function(_0x51fff6){logger['error'](_0x6d6d('0x17'),_0x1fa46d,_0x51fff6);_0xf84314(_0x51fff6);});});}exports['CreateFaxMessage']=function(_0x26f631){var _0xb8590d=this;return new Promise(function(_0x30d87d,_0x450352){return db[_0x6d6d('0x1b')][_0x6d6d('0x1c')](_0x26f631[_0x6d6d('0x1d')],{'raw':_0x26f631[_0x6d6d('0x1e')]?_0x26f631[_0x6d6d('0x1e')][_0x6d6d('0x1f')]===undefined?!![]:![]:!![]})[_0x6d6d('0x10')](function(_0x6e58e3){logger[_0x6d6d('0x20')](_0x6d6d('0x21'),_0x26f631);logger[_0x6d6d('0x12')](_0x6d6d('0x21'),_0x26f631,JSON[_0x6d6d('0x14')](_0x6e58e3));_0x30d87d(_0x6e58e3);})['catch'](function(_0x3b73e5){logger[_0x6d6d('0x15')](_0x6d6d('0x21'),_0x3b73e5[_0x6d6d('0x18')],_0x26f631);_0x450352(_0xb8590d[_0x6d6d('0x15')](0x1f4,_0x3b73e5[_0x6d6d('0x18')]));});});};exports['UpdateFaxMessage']=function(_0x2851dd){var _0x2b5e31=this;return new Promise(function(_0x235451,_0x126ac8){return db[_0x6d6d('0x1b')][_0x6d6d('0x22')](_0x2851dd[_0x6d6d('0x1d')],{'raw':_0x2851dd['options']?_0x2851dd[_0x6d6d('0x1e')][_0x6d6d('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2851dd['options']?_0x2851dd['options'][_0x6d6d('0x23')]||null:null,'attributes':_0x2851dd[_0x6d6d('0x1e')]?_0x2851dd[_0x6d6d('0x1e')]['attributes']||null:null,'limit':_0x2851dd[_0x6d6d('0x1e')]?_0x2851dd[_0x6d6d('0x1e')][_0x6d6d('0x24')]||null:null})[_0x6d6d('0x10')](function(_0x64d1f7){logger[_0x6d6d('0x20')](_0x6d6d('0x25'),_0x2851dd);logger[_0x6d6d('0x12')](_0x6d6d('0x25'),_0x2851dd,JSON[_0x6d6d('0x14')](_0x64d1f7));_0x235451(_0x64d1f7);})['catch'](function(_0x1f9469){logger['error'](_0x6d6d('0x25'),_0x1f9469[_0x6d6d('0x18')],_0x2851dd);_0x126ac8(_0x2b5e31[_0x6d6d('0x15')](0x1f4,_0x1f9469[_0x6d6d('0x18')]));});});};
\ No newline at end of file
+var _0x7bae=['request\x20sent','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','FaxMessage,\x20%s,\x20%s','create','body','options','raw','CreateFaxMessage','debug','FaxMessage','update','where','limit','UpdateFaxMessage','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','request','then','info'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x7bae,0x13b));var _0xe7ba=function(_0x33032e,_0x31411a){_0x33032e=_0x33032e-0x0;var _0x13316b=_0x7bae[_0x33032e];return _0x13316b;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe7ba('0x0'));var BPromise=require(_0xe7ba('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe7ba('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xe7ba('0x3'));var logger=require(_0xe7ba('0x4'))(_0xe7ba('0x5'));var config=require(_0xe7ba('0x6'));var jayson=require(_0xe7ba('0x7'));var client=jayson[_0xe7ba('0x8')][_0xe7ba('0x9')]({'port':0x232a});config[_0xe7ba('0xa')]=_[_0xe7ba('0xb')](config[_0xe7ba('0xa')],{'host':_0xe7ba('0xc'),'port':0x18eb});var socket=require(_0xe7ba('0xd'))(new Redis(config[_0xe7ba('0xa')]));require(_0xe7ba('0xe'))['register'](socket);function respondWithRpcPromise(_0x3df8bf,_0xe57e33,_0x375ebb){return new BPromise(function(_0x276bc3,_0x15083a){return client[_0xe7ba('0xf')](_0x3df8bf,_0x375ebb)[_0xe7ba('0x10')](function(_0x448bcc){logger[_0xe7ba('0x11')]('FaxMessage,\x20%s,\x20%s',_0xe57e33,_0xe7ba('0x12'));logger['debug'](_0xe7ba('0x13'),_0xe57e33,_0xe7ba('0x12'),JSON[_0xe7ba('0x14')](_0x448bcc));if(_0x448bcc[_0xe7ba('0x15')]){if(_0x448bcc[_0xe7ba('0x15')][_0xe7ba('0x16')]===0x1f4){logger['error']('FaxMessage,\x20%s,\x20%s',_0xe57e33,_0x448bcc[_0xe7ba('0x15')][_0xe7ba('0x17')]);return _0x15083a(_0x448bcc[_0xe7ba('0x15')]['message']);}logger[_0xe7ba('0x15')]('FaxMessage,\x20%s,\x20%s',_0xe57e33,_0x448bcc['error']['message']);return _0x276bc3(_0x448bcc[_0xe7ba('0x15')]['message']);}else{logger[_0xe7ba('0x11')]('FaxMessage,\x20%s,\x20%s',_0xe57e33,'request\x20sent');_0x276bc3(_0x448bcc['result'][_0xe7ba('0x17')]);}})[_0xe7ba('0x18')](function(_0x39ca38){logger[_0xe7ba('0x15')](_0xe7ba('0x19'),_0xe57e33,_0x39ca38);_0x15083a(_0x39ca38);});});}exports['CreateFaxMessage']=function(_0x149c62){var _0x20c653=this;return new Promise(function(_0x3b40fb,_0x136ec6){return db['FaxMessage'][_0xe7ba('0x1a')](_0x149c62[_0xe7ba('0x1b')],{'raw':_0x149c62['options']?_0x149c62[_0xe7ba('0x1c')][_0xe7ba('0x1d')]===undefined?!![]:![]:!![]})[_0xe7ba('0x10')](function(_0x7ab9e4){logger[_0xe7ba('0x11')](_0xe7ba('0x1e'),_0x149c62);logger[_0xe7ba('0x1f')](_0xe7ba('0x1e'),_0x149c62,JSON[_0xe7ba('0x14')](_0x7ab9e4));_0x3b40fb(_0x7ab9e4);})[_0xe7ba('0x18')](function(_0x58cf43){logger['error']('CreateFaxMessage',_0x58cf43['message'],_0x149c62);_0x136ec6(_0x20c653[_0xe7ba('0x15')](0x1f4,_0x58cf43['message']));});});};exports['UpdateFaxMessage']=function(_0x5ece11){var _0x255def=this;return new Promise(function(_0x32cc00,_0xe32862){return db[_0xe7ba('0x20')][_0xe7ba('0x21')](_0x5ece11[_0xe7ba('0x1b')],{'raw':_0x5ece11[_0xe7ba('0x1c')]?_0x5ece11[_0xe7ba('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5ece11[_0xe7ba('0x1c')]?_0x5ece11['options'][_0xe7ba('0x22')]||null:null,'attributes':_0x5ece11[_0xe7ba('0x1c')]?_0x5ece11[_0xe7ba('0x1c')]['attributes']||null:null,'limit':_0x5ece11['options']?_0x5ece11[_0xe7ba('0x1c')][_0xe7ba('0x23')]||null:null})[_0xe7ba('0x10')](function(_0x20b6cd){logger[_0xe7ba('0x11')]('UpdateFaxMessage',_0x5ece11);logger[_0xe7ba('0x1f')](_0xe7ba('0x24'),_0x5ece11,JSON['stringify'](_0x20b6cd));_0x32cc00(_0x20b6cd);})[_0xe7ba('0x18')](function(_0x530227){logger['error'](_0xe7ba('0x24'),_0x530227[_0xe7ba('0x17')],_0x5ece11);_0xe32862(_0x255def[_0xe7ba('0x15')](0x1f4,_0x530227['message']));});});};
\ No newline at end of file
index cd88a5f..3d7531d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x617e=['length','faxMessage:','./faxMessage.events','remove','update','emit','removeListener','register'];(function(_0x4322c6,_0x28f126){var _0x4e7537=function(_0x3cf272){while(--_0x3cf272){_0x4322c6['push'](_0x4322c6['shift']());}};_0x4e7537(++_0x28f126);}(_0x617e,0xda));var _0xe617=function(_0x75fecf,_0x1f2410){_0x75fecf=_0x75fecf-0x0;var _0x3666a6=_0x617e[_0x75fecf];return _0x3666a6;};'use strict';var FaxMessageEvents=require(_0xe617('0x0'));var events=['save',_0xe617('0x1'),_0xe617('0x2')];function createListener(_0x34bc32,_0x366e08){return function(_0x4a20e6){_0x366e08[_0xe617('0x3')](_0x34bc32,_0x4a20e6);};}function removeListener(_0x461ebb,_0xe9dc98){return function(){FaxMessageEvents[_0xe617('0x4')](_0x461ebb,_0xe9dc98);};}exports[_0xe617('0x5')]=function(_0x5ddef0){for(var _0x30574d=0x0,_0x545341=events[_0xe617('0x6')];_0x30574d<_0x545341;_0x30574d++){var _0x2ea8fd=events[_0x30574d];var _0xc6d8a=createListener(_0xe617('0x7')+_0x2ea8fd,_0x5ddef0);FaxMessageEvents['on'](_0x2ea8fd,_0xc6d8a);}};
\ No newline at end of file
+var _0xbb34=['faxMessage:','save','remove','update','emit','removeListener','register'];(function(_0x407e38,_0x30e1cb){var _0x996a91=function(_0x58a6cc){while(--_0x58a6cc){_0x407e38['push'](_0x407e38['shift']());}};_0x996a91(++_0x30e1cb);}(_0xbb34,0x1ba));var _0x4bb3=function(_0x355ca3,_0xd3e1e7){_0x355ca3=_0x355ca3-0x0;var _0x55edba=_0xbb34[_0x355ca3];return _0x55edba;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=[_0x4bb3('0x0'),_0x4bb3('0x1'),_0x4bb3('0x2')];function createListener(_0x463057,_0x3dd309){return function(_0x53c628){_0x3dd309[_0x4bb3('0x3')](_0x463057,_0x53c628);};}function removeListener(_0x52eed4,_0x36a548){return function(){FaxMessageEvents[_0x4bb3('0x4')](_0x52eed4,_0x36a548);};}exports[_0x4bb3('0x5')]=function(_0x7f7d50){for(var _0x4c67ba=0x0,_0x575882=events['length'];_0x4c67ba<_0x575882;_0x4c67ba++){var _0x35c64=events[_0x4c67ba];var _0x174f24=createListener(_0x4bb3('0x6')+_0x35c64,_0x7f7d50);FaxMessageEvents['on'](_0x35c64,_0x174f24);}};
\ No newline at end of file
index d6bc0a8..c386729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b02=['put','/:id','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','/describe','describe','show','download','post','tracked','fax','faxmessage:create','create'];(function(_0x47f767,_0x46732a){var _0x5ad748=function(_0x46322b){while(--_0x46322b){_0x47f767['push'](_0x47f767['shift']());}};_0x5ad748(++_0x46732a);}(_0x5b02,0xe9));var _0x25b0=function(_0x4246bc,_0x294e38){_0x4246bc=_0x4246bc-0x0;var _0x1ddae0=_0x5b02[_0x4246bc];return _0x1ddae0;};'use strict';var multer=require(_0x25b0('0x0'));var util=require(_0x25b0('0x1'));var path=require(_0x25b0('0x2'));var timeout=require(_0x25b0('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x25b0('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x25b0('0x5'));var config=require(_0x25b0('0x6'));var controller=require(_0x25b0('0x7'));router[_0x25b0('0x8')]('/',auth[_0x25b0('0x9')](),controller['index']);router[_0x25b0('0x8')](_0x25b0('0xa'),auth['isAuthenticated'](),controller[_0x25b0('0xb')]);router['get']('/:id',auth[_0x25b0('0x9')](),controller[_0x25b0('0xc')]);router[_0x25b0('0x8')]('/:id/download',auth[_0x25b0('0x9')](),controller[_0x25b0('0xd')]);router[_0x25b0('0xe')]('/',auth[_0x25b0('0x9')](),interaction[_0x25b0('0xf')](_0x25b0('0x10'),_0x25b0('0x11')),controller[_0x25b0('0x12')]);router[_0x25b0('0x13')](_0x25b0('0x14'),auth[_0x25b0('0x9')](),controller[_0x25b0('0x15')]);router[_0x25b0('0x13')](_0x25b0('0x16'),auth[_0x25b0('0x9')](),controller[_0x25b0('0x17')]);router[_0x25b0('0x13')](_0x25b0('0x18'),auth[_0x25b0('0x9')](),controller[_0x25b0('0x19')]);router[_0x25b0('0x1a')]('/:id',auth['isAuthenticated'](),controller[_0x25b0('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0xb58b=['Router','fs-extra','../../components/interaction/service','./faxMessage.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/download','post','tracked','fax','faxmessage:create','create','put','/:id/accept','accept','reject','destroy','exports','util','path','connect-timeout'];(function(_0x1a02a9,_0xa7a2fc){var _0x3fb729=function(_0x52a969){while(--_0x52a969){_0x1a02a9['push'](_0x1a02a9['shift']());}};_0x3fb729(++_0xa7a2fc);}(_0xb58b,0x1f1));var _0xbb58=function(_0x338356,_0x169289){_0x338356=_0x338356-0x0;var _0x45a531=_0xb58b[_0x338356];return _0x45a531;};'use strict';var multer=require('multer');var util=require(_0xbb58('0x0'));var path=require(_0xbb58('0x1'));var timeout=require(_0xbb58('0x2'));var express=require('express');var router=express[_0xbb58('0x3')]();var fs_extra=require(_0xbb58('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xbb58('0x5'));var config=require('../../config/environment');var controller=require(_0xbb58('0x6'));router[_0xbb58('0x7')]('/',auth[_0xbb58('0x8')](),controller['index']);router[_0xbb58('0x7')](_0xbb58('0x9'),auth[_0xbb58('0x8')](),controller[_0xbb58('0xa')]);router[_0xbb58('0x7')](_0xbb58('0xb'),auth[_0xbb58('0x8')](),controller[_0xbb58('0xc')]);router[_0xbb58('0x7')](_0xbb58('0xd'),auth[_0xbb58('0x8')](),controller['download']);router[_0xbb58('0xe')]('/',auth['isAuthenticated'](),interaction[_0xbb58('0xf')](_0xbb58('0x10'),_0xbb58('0x11')),controller[_0xbb58('0x12')]);router['put'](_0xbb58('0xb'),auth[_0xbb58('0x8')](),controller['update']);router[_0xbb58('0x13')](_0xbb58('0x14'),auth[_0xbb58('0x8')](),controller[_0xbb58('0x15')]);router[_0xbb58('0x13')]('/:id/reject',auth[_0xbb58('0x8')](),controller[_0xbb58('0x16')]);router['delete']('/:id',auth[_0xbb58('0x8')](),controller[_0xbb58('0x17')]);module[_0xbb58('0x18')]=router;
\ No newline at end of file
index a05c090..27fcfb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x752c=['STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','exports'];(function(_0x98a7f4,_0x26a940){var _0x1d8a5a=function(_0x47c3a8){while(--_0x47c3a8){_0x98a7f4['push'](_0x98a7f4['shift']());}};_0x1d8a5a(++_0x26a940);}(_0x752c,0x10e));var _0xc752=function(_0x21a8fa,_0x37c5b5){_0x21a8fa=_0x21a8fa-0x0;var _0x17361b=_0x752c[_0x21a8fa];return _0x17361b;};'use strict';var Sequelize=require(_0xc752('0x0'));module[_0xc752('0x1')]={'name':{'type':Sequelize[_0xc752('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xc752('0x2')]},'timeout':{'type':Sequelize[_0xc752('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xc752('0x4')](_0xc752('0x5'),_0xc752('0x6'),_0xc752('0x7')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xc752('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x3189=['INTEGER','ENUM','beepall','roundrobin','sequelize','STRING','name'];(function(_0x5def4f,_0x522580){var _0x52317e=function(_0xf1ecf7){while(--_0xf1ecf7){_0x5def4f['push'](_0x5def4f['shift']());}};_0x52317e(++_0x522580);}(_0x3189,0x19a));var _0x9318=function(_0x35f85d,_0x1810c4){_0x35f85d=_0x35f85d-0x0;var _0x48a0d4=_0x3189[_0x35f85d];return _0x48a0d4;};'use strict';var Sequelize=require(_0x9318('0x0'));module['exports']={'name':{'type':Sequelize[_0x9318('0x1')],'unique':_0x9318('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x9318('0x1')]},'timeout':{'type':Sequelize[_0x9318('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x9318('0x4')]('rrmemory',_0x9318('0x5'),_0x9318('0x6')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x9318('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index cf08369..0405d50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6bb=['includeAll','merge','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','update','find','params','describe','getMembers','findOne','UserFaxQueue','rawAttributes','nolimit','limit','order','sort','where','FaxQueueId','filter','findAll','User','findAndCountAll','UserId','updatedAt','createdAt','format','SIP','faxPause','getTeams','Team','pick','hasOwnProperty','addTeams','ids','Agents','online','interface','flatMap','sequelize','findOrCreate','emit','userFaxQueue:save','select','from','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','TeamId','all','union','removeTeams','isEmpty','forEach','userFaxQueue:remove','addAgents','omit','spread','removeAgents','getAgents','util','lodash','squel','ioredis','../../components/parsers/qs','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./faxQueue.socket','sendStatus','status','end','undefined','count','offset','json','destroy','then','get','UserProfileResource','error','stack','name','map','FaxQueue','fieldName','type','getOptions','include','rows','catch','show','keys','query','filters','intersection','model','attributes','fields','length'];(function(_0x419a10,_0x57d49b){var _0x20b9d2=function(_0x53530a){while(--_0x53530a){_0x419a10['push'](_0x419a10['shift']());}};_0x20b9d2(++_0x57d49b);}(_0xa6bb,0x12c));var _0xba6b=function(_0x530fa2,_0x3bf466){_0x530fa2=_0x530fa2-0x0;var _0x2c1c89=_0xa6bb[_0x530fa2];return _0x2c1c89;};'use strict';var BPromise=require('bluebird');var util=require(_0xba6b('0x0'));var _=require(_0xba6b('0x1'));var squel=require(_0xba6b('0x2'));var Redis=require(_0xba6b('0x3'));var qs=require(_0xba6b('0x4'));var logger=require('../../config/logger')('api');var config=require(_0xba6b('0x5'));var db=require(_0xba6b('0x6'))['db'];config[_0xba6b('0x7')]=_[_0xba6b('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xba6b('0x9'))(new Redis(config[_0xba6b('0x7')]));require(_0xba6b('0xa'))['register'](socket);function respondWithStatusCode(_0x55f5c3,_0x135892){_0x135892=_0x135892||0xcc;return function(_0x16bfde){if(_0x16bfde){return _0x55f5c3[_0xba6b('0xb')](_0x135892);}return _0x55f5c3[_0xba6b('0xc')](_0x135892)[_0xba6b('0xd')]();};}function respondWithResult(_0x534849,_0x17e6c8){_0x17e6c8=_0x17e6c8||0xc8;return function(_0x297f02){if(_0x297f02){return _0x534849[_0xba6b('0xc')](_0x17e6c8)['json'](_0x297f02);}};}function respondWithFilteredResult(_0x16fd15,_0x35e23d){return function(_0x3bf240){if(_0x3bf240){var _0x11bcb9=typeof _0x35e23d['offset']===_0xba6b('0xe')&&typeof _0x35e23d['limit']===_0xba6b('0xe');var _0x1adc27=_0x3bf240[_0xba6b('0xf')];var _0x15d4e2=_0x11bcb9?0x0:_0x35e23d[_0xba6b('0x10')];var _0x53ec00=_0x11bcb9?_0x3bf240[_0xba6b('0xf')]:_0x35e23d[_0xba6b('0x10')]+_0x35e23d['limit'];var _0x16c3d0;if(_0x53ec00>=_0x1adc27){_0x53ec00=_0x1adc27;_0x16c3d0=0xc8;}else{_0x16c3d0=0xce;}_0x16fd15[_0xba6b('0xc')](_0x16c3d0);return _0x16fd15['set']('Content-Range',_0x15d4e2+'-'+_0x53ec00+'/'+_0x1adc27)[_0xba6b('0x11')](_0x3bf240);}return null;};}function saveUpdates(_0x5b32cd){return function(_0x5d5a6c){if(_0x5d5a6c){return _0x5d5a6c['update'](_0x5b32cd)['then'](function(_0x4be059){return _0x4be059;});}return null;};}function removeEntity(_0x16b130){return function(_0x34aa97){if(_0x34aa97){return _0x34aa97[_0xba6b('0x12')]()[_0xba6b('0x13')](function(){var _0x300399=_0x34aa97[_0xba6b('0x14')]({'plain':!![]});var _0x44a7a3='FaxQueues';return db[_0xba6b('0x15')]['destroy']({'where':{'type':_0x44a7a3,'resourceId':_0x300399['id']}})['then'](function(){return _0x34aa97;});})[_0xba6b('0x13')](function(){_0x16b130[_0xba6b('0xc')](0xcc)[_0xba6b('0xd')]();});}};}function handleEntityNotFound(_0x1751f3){return function(_0x47b615){if(!_0x47b615){_0x1751f3[_0xba6b('0xb')](0x194);}return _0x47b615;};}function handleError(_0x436623,_0x548c1b){_0x548c1b=_0x548c1b||0x1f4;return function(_0x38c46a){logger[_0xba6b('0x16')](_0x38c46a[_0xba6b('0x17')]);if(_0x38c46a[_0xba6b('0x18')]){delete _0x38c46a[_0xba6b('0x18')];}_0x436623['status'](_0x548c1b)['send'](_0x38c46a);};}exports['index']=function(_0x5d9163,_0x211434){var _0x2525f8={};var _0x2f5343={'count':0x0,'rows':[]};var _0x39f052=_[_0xba6b('0x19')](db[_0xba6b('0x1a')]['rawAttributes'],function(_0x876e58){return{'name':_0x876e58[_0xba6b('0x1b')],'type':_0x876e58[_0xba6b('0x1c')]['key']};});_0x2525f8=qs[_0xba6b('0x1d')](_0x39f052,_0x5d9163);var _0x131830={'where':_0x2525f8['where']};return db[_0xba6b('0x1a')][_0xba6b('0xf')](_0x131830)[_0xba6b('0x13')](function(_0x41a0e0){_0x2f5343[_0xba6b('0xf')]=_0x41a0e0;_0x2525f8['include']=qs[_0xba6b('0x1e')](_0x5d9163['query']);return db[_0xba6b('0x1a')]['findAll'](_0x2525f8);})[_0xba6b('0x13')](function(_0x53649d){_0x2f5343[_0xba6b('0x1f')]=_0x53649d;return _0x2f5343;})['then'](respondWithFilteredResult(_0x211434,_0x2525f8))[_0xba6b('0x20')](handleError(_0x211434,null));};exports[_0xba6b('0x21')]=function(_0xc20433,_0x474cc7){var _0x5e87ed={'raw':!![],'where':{'id':_0xc20433['params']['id']}},_0x2e9bda={};_0x2e9bda['model']=_[_0xba6b('0x22')](db[_0xba6b('0x1a')]['rawAttributes']);_0x2e9bda[_0xba6b('0x23')]=_['keys'](_0xc20433['query']);_0x2e9bda[_0xba6b('0x24')]=_[_0xba6b('0x25')](_0x2e9bda[_0xba6b('0x26')],_0x2e9bda[_0xba6b('0x23')]);_0x5e87ed[_0xba6b('0x27')]=_['intersection'](_0x2e9bda[_0xba6b('0x26')],qs[_0xba6b('0x28')](_0xc20433[_0xba6b('0x23')][_0xba6b('0x28')]));_0x5e87ed[_0xba6b('0x27')]=_0x5e87ed[_0xba6b('0x27')][_0xba6b('0x29')]?_0x5e87ed[_0xba6b('0x27')]:_0x2e9bda[_0xba6b('0x26')];if(_0xc20433['query'][_0xba6b('0x2a')]){_0x5e87ed[_0xba6b('0x1e')]=[{'all':!![]}];}_0x5e87ed=_[_0xba6b('0x2b')]({},_0x5e87ed,_0xc20433[_0xba6b('0x2c')]);return db['FaxQueue']['find'](_0x5e87ed)[_0xba6b('0x13')](handleEntityNotFound(_0x474cc7,null))[_0xba6b('0x13')](respondWithResult(_0x474cc7,null))[_0xba6b('0x20')](handleError(_0x474cc7,null));};exports[_0xba6b('0x2d')]=function(_0x4a3386,_0x3ed42a){return db[_0xba6b('0x1a')]['create'](_0x4a3386[_0xba6b('0x2e')],{})['then'](function(_0x142eb0){var _0x36df21=_0x4a3386[_0xba6b('0x2f')]['get']({'plain':!![]});if(!_0x36df21)throw new Error(_0xba6b('0x30'));if(_0x36df21[_0xba6b('0x31')]==='user'){var _0x2ecbb7=_0x142eb0['get']({'plain':!![]});var _0x87884b='FaxQueues';return db[_0xba6b('0x32')]['find']({'where':{'name':_0x87884b,'userProfileId':_0x36df21[_0xba6b('0x33')]},'raw':!![]})['then'](function(_0x37dcb6){if(_0x37dcb6&&_0x37dcb6[_0xba6b('0x34')]===0x0){return db[_0xba6b('0x15')][_0xba6b('0x2d')]({'name':_0x2ecbb7['name'],'resourceId':_0x2ecbb7['id'],'type':_0x37dcb6[_0xba6b('0x18')],'sectionId':_0x37dcb6['id']},{})[_0xba6b('0x13')](function(){return _0x142eb0;});}else{return _0x142eb0;}})[_0xba6b('0x20')](function(_0x31fe5a){logger[_0xba6b('0x16')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x31fe5a);throw _0x31fe5a;});}return _0x142eb0;})[_0xba6b('0x13')](respondWithResult(_0x3ed42a,0xc9))['catch'](handleError(_0x3ed42a,null));};exports[_0xba6b('0x35')]=function(_0x7cb298,_0x5b710a){if(_0x7cb298['body']['id']){delete _0x7cb298[_0xba6b('0x2e')]['id'];}return db[_0xba6b('0x1a')][_0xba6b('0x36')]({'where':{'id':_0x7cb298[_0xba6b('0x37')]['id']}})['then'](handleEntityNotFound(_0x5b710a,null))[_0xba6b('0x13')](saveUpdates(_0x7cb298[_0xba6b('0x2e')],null))[_0xba6b('0x13')](respondWithResult(_0x5b710a,null))[_0xba6b('0x20')](handleError(_0x5b710a,null));};exports['destroy']=function(_0x25d208,_0x1029b6){return db[_0xba6b('0x1a')][_0xba6b('0x36')]({'where':{'id':_0x25d208[_0xba6b('0x37')]['id']}})[_0xba6b('0x13')](handleEntityNotFound(_0x1029b6,null))['then'](removeEntity(_0x1029b6,null))[_0xba6b('0x20')](handleError(_0x1029b6,null));};exports[_0xba6b('0x38')]=function(_0x652c9a,_0x4c166e){return db[_0xba6b('0x1a')][_0xba6b('0x38')]()[_0xba6b('0x13')](respondWithResult(_0x4c166e,null))[_0xba6b('0x20')](handleError(_0x4c166e,null));};exports[_0xba6b('0x39')]=function(_0x3e1071,_0x29bbad){var _0x37c4a4={'raw':!![],'where':{}},_0x4f2e50={},_0x15e3c5;return db[_0xba6b('0x1a')][_0xba6b('0x3a')]({'where':{'id':_0x3e1071['params']['id']}})[_0xba6b('0x13')](handleEntityNotFound(_0x29bbad,null))[_0xba6b('0x13')](function(_0x268e05){if(_0x268e05){_0x15e3c5=_0x268e05[_0xba6b('0x14')]({'plain':!![]});_0x4f2e50[_0xba6b('0x26')]=_[_0xba6b('0x22')](db[_0xba6b('0x3b')][_0xba6b('0x3c')]);_0x4f2e50[_0xba6b('0x23')]=_['keys'](_0x3e1071[_0xba6b('0x23')]);_0x4f2e50[_0xba6b('0x24')]=_[_0xba6b('0x25')](_0x4f2e50[_0xba6b('0x26')],_0x4f2e50[_0xba6b('0x23')]);_0x37c4a4[_0xba6b('0x27')]=_[_0xba6b('0x25')](_0x4f2e50[_0xba6b('0x26')],qs[_0xba6b('0x28')](_0x3e1071[_0xba6b('0x23')]['fields']));_0x37c4a4[_0xba6b('0x27')]=_0x37c4a4[_0xba6b('0x27')]['length']?_0x37c4a4[_0xba6b('0x27')]:_0x4f2e50[_0xba6b('0x26')];if(!_0x3e1071[_0xba6b('0x23')]['hasOwnProperty'](_0xba6b('0x3d'))){_0x37c4a4[_0xba6b('0x3e')]=qs[_0xba6b('0x3e')](_0x3e1071['query'][_0xba6b('0x3e')]);_0x37c4a4['offset']=qs['offset'](_0x3e1071['query']['offset']);}_0x37c4a4[_0xba6b('0x3f')]=qs[_0xba6b('0x40')](_0x3e1071[_0xba6b('0x23')]['sort']);_0x37c4a4[_0xba6b('0x41')]=qs['filters'](_['pick'](_0x3e1071[_0xba6b('0x23')],_0x4f2e50[_0xba6b('0x24')]));_0x37c4a4[_0xba6b('0x41')][_0xba6b('0x42')]=_0x268e05['id'];if(_0x3e1071[_0xba6b('0x23')]['filter']){_0x37c4a4['where']=_[_0xba6b('0x2b')](_0x37c4a4[_0xba6b('0x41')],{'$or':_['map'](_0x37c4a4[_0xba6b('0x27')],function(_0x5ac0fe){var _0x3f59de={};_0x3f59de[_0x5ac0fe]={'$like':'%'+_0x3e1071[_0xba6b('0x23')][_0xba6b('0x43')]+'%'};return _0x3f59de;})});}_0x37c4a4=_[_0xba6b('0x2b')]({},_0x37c4a4,_0x3e1071['options']);return db[_0xba6b('0x3b')][_0xba6b('0x44')](_0x37c4a4);}})['then'](function(_0x2731fe){if(_0x2731fe){return db[_0xba6b('0x45')][_0xba6b('0x46')]({'where':{'id':_['map'](_0x2731fe,_0xba6b('0x47')),'role':'agent'},'attributes':['id','name','faxPause',_0xba6b('0x48'),_0xba6b('0x49')]});}})['then'](function(_0xdd7a79){if(_0xdd7a79){return{'count':_0xdd7a79[_0xba6b('0xf')],'rows':_[_0xba6b('0x19')](_0xdd7a79[_0xba6b('0x1f')],function(_0x587aa6){return{'membername':_0x587aa6[_0xba6b('0x18')],'UserId':_0x587aa6['id'],'queue_name':_0x15e3c5[_0xba6b('0x18')],'FaxQueueId':_0x15e3c5['id'],'interface':util[_0xba6b('0x4a')]('%s/%s',_0xba6b('0x4b'),_0x587aa6['name']),'penalty':0x0,'paused':_0x587aa6[_0xba6b('0x4c')],'createdAt':_0x587aa6[_0xba6b('0x49')],'updatedAt':_0x587aa6[_0xba6b('0x48')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xba6b('0x13')](respondWithFilteredResult(_0x29bbad,_0x37c4a4))[_0xba6b('0x20')](handleError(_0x29bbad,null));};exports[_0xba6b('0x4d')]=function(_0x21e692,_0x326ebd){var _0x2056bc={};var _0x54efaf={};var _0x2072bc;var _0x37bfa8;return db[_0xba6b('0x1a')][_0xba6b('0x3a')]({'where':{'id':_0x21e692[_0xba6b('0x37')]['id']}})[_0xba6b('0x13')](handleEntityNotFound(_0x326ebd,null))[_0xba6b('0x13')](function(_0x1442a4){if(_0x1442a4){_0x2072bc=_0x1442a4;_0x54efaf[_0xba6b('0x26')]=_[_0xba6b('0x22')](db[_0xba6b('0x4e')][_0xba6b('0x3c')]);_0x54efaf[_0xba6b('0x23')]=_['keys'](_0x21e692['query']);_0x54efaf[_0xba6b('0x24')]=_[_0xba6b('0x25')](_0x54efaf['model'],_0x54efaf[_0xba6b('0x23')]);_0x2056bc[_0xba6b('0x27')]=_[_0xba6b('0x25')](_0x54efaf[_0xba6b('0x26')],qs[_0xba6b('0x28')](_0x21e692['query'][_0xba6b('0x28')]));_0x2056bc[_0xba6b('0x27')]=_0x2056bc[_0xba6b('0x27')]['length']?_0x2056bc['attributes']:_0x54efaf[_0xba6b('0x26')];_0x2056bc['order']=qs[_0xba6b('0x40')](_0x21e692['query'][_0xba6b('0x40')]);_0x2056bc['where']=qs[_0xba6b('0x24')](_[_0xba6b('0x4f')](_0x21e692['query'],_0x54efaf['filters']));if(_0x21e692[_0xba6b('0x23')]['filter']){_0x2056bc[_0xba6b('0x41')]=_[_0xba6b('0x2b')](_0x2056bc[_0xba6b('0x41')],{'$or':_[_0xba6b('0x19')](_0x2056bc[_0xba6b('0x27')],function(_0x56ae09){var _0xe11c3d={};_0xe11c3d[_0x56ae09]={'$like':'%'+_0x21e692[_0xba6b('0x23')]['filter']+'%'};return _0xe11c3d;})});}_0x2056bc=_[_0xba6b('0x2b')]({},_0x2056bc,_0x21e692[_0xba6b('0x2c')]);return _0x2072bc['getTeams'](_0x2056bc);}})['then'](function(_0x3b4837){if(_0x3b4837){_0x37bfa8=_0x3b4837[_0xba6b('0x29')];if(!_0x21e692['query'][_0xba6b('0x50')]('nolimit')){_0x2056bc[_0xba6b('0x3e')]=qs['limit'](_0x21e692[_0xba6b('0x23')][_0xba6b('0x3e')]);_0x2056bc['offset']=qs[_0xba6b('0x10')](_0x21e692[_0xba6b('0x23')][_0xba6b('0x10')]);}return _0x2072bc[_0xba6b('0x4d')](_0x2056bc);}})['then'](function(_0x166df4){if(_0x166df4){return _0x166df4?{'count':_0x37bfa8,'rows':_0x166df4}:null;}})[_0xba6b('0x13')](respondWithResult(_0x326ebd,null))['catch'](handleError(_0x326ebd,null));};exports[_0xba6b('0x51')]=function(_0x4f0ea3,_0x2c9db2){var _0x573407=_0x4f0ea3[_0xba6b('0x2e')][_0xba6b('0x52')];return db['Team']['findAll']({'where':{'id':_0x573407},'attributes':['id'],'include':[{'model':db['User'],'as':_0xba6b('0x53'),'attributes':['id',_0xba6b('0x18'),_0xba6b('0x54'),'voicePause',_0xba6b('0x55')],'raw':!![]}]})[_0xba6b('0x13')](function(_0x25f58b){if(_0x25f58b){var _0x21d5b7=_[_0xba6b('0x56')](_0x25f58b,function(_0x523279){var _0x110ec0=_0x523279[_0xba6b('0x14')]({'plain':!![]});return _0x110ec0['Agents'];});return db[_0xba6b('0x1a')][_0xba6b('0x36')]({'where':{'id':_0x4f0ea3[_0xba6b('0x37')]['id']}})[_0xba6b('0x13')](function(_0x30506e){return db[_0xba6b('0x57')]['transaction'](function(_0x2ad609){return _0x30506e[_0xba6b('0x51')](_0x573407,{'transaction':_0x2ad609})[_0xba6b('0x13')](function(){return BPromise['each'](_0x21d5b7,function(_0x4f2faa){return db[_0xba6b('0x3b')][_0xba6b('0x58')]({'where':{'UserId':_0x4f2faa['id'],'FaxQueueId':_0x4f0ea3[_0xba6b('0x37')]['id']},'transaction':_0x2ad609});});})[_0xba6b('0x13')](function(){_0x21d5b7['forEach'](function(_0xf85bb6){socket[_0xba6b('0x59')](_0xba6b('0x5a'),{'UserId':_0xf85bb6['id'],'FaxQueueId':_0x30506e['id']});});});});});}})[_0xba6b('0x13')](respondWithStatusCode(_0x2c9db2,null))[_0xba6b('0x20')](handleError(_0x2c9db2,null));};exports['removeTeams']=function(_0x214954,_0x270e4c){return db['Team'][_0xba6b('0x44')]({'where':{'id':_0x214954['query'][_0xba6b('0x52')]},'attributes':['id'],'include':[{'model':db[_0xba6b('0x45')],'as':_0xba6b('0x53'),'attributes':['id'],'raw':!![]}]})[_0xba6b('0x13')](handleEntityNotFound(_0x270e4c,null))[_0xba6b('0x13')](function(_0x3b6ce6){var _0x2f1a44=_[_0xba6b('0x19')](_0x3b6ce6,'id');var _0x276696=[];var _0x309cc1=[];var _0x59b6ea=squel[_0xba6b('0x5b')]();_0x59b6ea['field']('tq.TeamId')[_0xba6b('0x5c')](_0xba6b('0x5d'),'tq')[_0xba6b('0x5e')](_0xba6b('0x5f'),'ut',_0xba6b('0x60'))[_0xba6b('0x41')]('FaxQueueId\x20=\x20?',_0x214954[_0xba6b('0x37')]['id']);for(var _0x3a003d=0x0;_0x3a003d<_0x3b6ce6[_0xba6b('0x29')];_0x3a003d+=0x1){let _0x86fa58=_0x3b6ce6[_0x3a003d];for(var _0x2e4297=0x0;_0x2e4297<_0x86fa58[_0xba6b('0x53')][_0xba6b('0x29')];_0x2e4297+=0x1){let _0x475c57=_0x86fa58['Agents'][_0x2e4297];var _0xa063f6=_0x59b6ea[_0xba6b('0x61')]();_0xa063f6[_0xba6b('0x41')](_0xba6b('0x62'),_0x475c57['id']);_0x309cc1[_0xba6b('0x63')](db[_0xba6b('0x57')][_0xba6b('0x23')](_0xa063f6[_0xba6b('0x64')](),{'type':db[_0xba6b('0x57')][_0xba6b('0x65')]['SELECT']})[_0xba6b('0x13')](function(_0x35521e){if(_0x35521e[_0xba6b('0x29')]===0x1){return _0x475c57['id'];}else{var _0x55e141=_['every'](_[_0xba6b('0x19')](_0x35521e,_0xba6b('0x66')),function(_0x428f9f){return _['includes'](_0x2f1a44,_0x428f9f);});if(_0x55e141){return _0x475c57['id'];}}}));}}return BPromise[_0xba6b('0x67')](_0x309cc1)[_0xba6b('0x13')](function(_0x1d5a33){_0x276696=_(_0x276696)[_0xba6b('0x68')](_0x1d5a33)['compact']()['value']();return db[_0xba6b('0x1a')]['find']({'where':{'id':_0x214954[_0xba6b('0x37')]['id']}})['then'](function(_0x2597b8){return db[_0xba6b('0x57')]['transaction'](function(_0x279c89){return _0x2597b8[_0xba6b('0x69')](_0x214954[_0xba6b('0x23')][_0xba6b('0x52')],{'transaction':_0x279c89})[_0xba6b('0x13')](function(){if(!_[_0xba6b('0x6a')](_0x276696)){return _0x2597b8['removeAgents'](_0x276696,{'transaction':_0x279c89});}})['then'](function(){_0x276696[_0xba6b('0x6b')](function(_0x5ee33d){socket[_0xba6b('0x59')](_0xba6b('0x6c'),{'UserId':_0x5ee33d,'FaxQueueId':_0x2597b8['id']});});});});});});})[_0xba6b('0x13')](respondWithStatusCode(_0x270e4c,null))['catch'](handleError(_0x270e4c,null));};exports[_0xba6b('0x6d')]=function(_0x2d8590,_0x8244cf){return db[_0xba6b('0x1a')][_0xba6b('0x36')]({'where':{'id':_0x2d8590['params']['id']}})[_0xba6b('0x13')](handleEntityNotFound(_0x8244cf,null))[_0xba6b('0x13')](function(_0x69582a){if(_0x69582a){return _0x69582a[_0xba6b('0x6d')](_0x2d8590[_0xba6b('0x2e')][_0xba6b('0x52')],_[_0xba6b('0x6e')](_0x2d8590[_0xba6b('0x2e')],['ids','id'])||{})[_0xba6b('0x6f')](function(_0x1ec6d5){for(var _0x2b82cc=0x0;_0x2b82cc<_0x2d8590[_0xba6b('0x2e')][_0xba6b('0x52')][_0xba6b('0x29')];_0x2b82cc+=0x1){socket[_0xba6b('0x59')](_0xba6b('0x5a'),{'UserId':Number(_0x2d8590[_0xba6b('0x2e')][_0xba6b('0x52')][_0x2b82cc]),'FaxQueueId':Number(_0x2d8590[_0xba6b('0x37')]['id'])});}return _0x1ec6d5;});}})[_0xba6b('0x13')](respondWithResult(_0x8244cf,null))[_0xba6b('0x20')](handleError(_0x8244cf,null));};exports[_0xba6b('0x70')]=function(_0x50aa25,_0x4fa4ef){return db['FaxQueue']['find']({'where':{'id':_0x50aa25['params']['id']}})[_0xba6b('0x13')](handleEntityNotFound(_0x4fa4ef,null))[_0xba6b('0x13')](function(_0x297ab8){if(_0x297ab8){return _0x297ab8[_0xba6b('0x70')](_0x50aa25[_0xba6b('0x23')]['ids'])[_0xba6b('0x13')](function(){if(_['isArray'](_0x50aa25['query']['ids'])){for(var _0x677b76=0x0;_0x677b76<_0x50aa25[_0xba6b('0x23')][_0xba6b('0x52')]['length'];_0x677b76+=0x1){socket['emit'](_0xba6b('0x6c'),{'UserId':Number(_0x50aa25[_0xba6b('0x23')][_0xba6b('0x52')][_0x677b76]),'FaxQueueId':Number(_0x50aa25['params']['id'])});}}else{socket[_0xba6b('0x59')](_0xba6b('0x6c'),{'UserId':Number(_0x50aa25['query'][_0xba6b('0x52')]),'FaxQueueId':Number(_0x50aa25['params']['id'])});}});}})[_0xba6b('0x13')](respondWithStatusCode(_0x4fa4ef,null))[_0xba6b('0x20')](handleError(_0x4fa4ef,null));};exports[_0xba6b('0x71')]=function(_0x33f7ce,_0xf93a0d){var _0x51a44e={};var _0x11ee0b={};var _0x53b63a;var _0x3b172b;return db[_0xba6b('0x1a')]['findOne']({'where':{'id':_0x33f7ce[_0xba6b('0x37')]['id']}})['then'](handleEntityNotFound(_0xf93a0d,null))[_0xba6b('0x13')](function(_0x671948){if(_0x671948){_0x53b63a=_0x671948;_0x11ee0b['model']=_[_0xba6b('0x22')](db[_0xba6b('0x45')]['rawAttributes']);_0x11ee0b[_0xba6b('0x23')]=_[_0xba6b('0x22')](_0x33f7ce[_0xba6b('0x23')]);_0x11ee0b[_0xba6b('0x24')]=_[_0xba6b('0x25')](_0x11ee0b[_0xba6b('0x26')],_0x11ee0b[_0xba6b('0x23')]);_0x51a44e['attributes']=_['intersection'](_0x11ee0b[_0xba6b('0x26')],qs[_0xba6b('0x28')](_0x33f7ce[_0xba6b('0x23')][_0xba6b('0x28')]));_0x51a44e[_0xba6b('0x27')]=_0x51a44e['attributes'][_0xba6b('0x29')]?_0x51a44e[_0xba6b('0x27')]:_0x11ee0b[_0xba6b('0x26')];_0x51a44e[_0xba6b('0x3f')]=qs[_0xba6b('0x40')](_0x33f7ce['query']['sort']);_0x51a44e[_0xba6b('0x41')]=qs[_0xba6b('0x24')](_[_0xba6b('0x4f')](_0x33f7ce[_0xba6b('0x23')],_0x11ee0b[_0xba6b('0x24')]));if(_0x33f7ce['query'][_0xba6b('0x43')]){_0x51a44e['where']=_['merge'](_0x51a44e[_0xba6b('0x41')],{'$or':_[_0xba6b('0x19')](_0x51a44e[_0xba6b('0x27')],function(_0x23c320){var _0x51fa51={};_0x51fa51[_0x23c320]={'$like':'%'+_0x33f7ce['query'][_0xba6b('0x43')]+'%'};return _0x51fa51;})});}_0x51a44e=_[_0xba6b('0x2b')]({},_0x51a44e,_0x33f7ce['options']);return _0x53b63a[_0xba6b('0x71')](_0x51a44e);}})['then'](function(_0x44ecea){if(_0x44ecea){_0x3b172b=_0x44ecea[_0xba6b('0x29')];if(!_0x33f7ce['query']['hasOwnProperty'](_0xba6b('0x3d'))){_0x51a44e[_0xba6b('0x3e')]=qs[_0xba6b('0x3e')](_0x33f7ce[_0xba6b('0x23')]['limit']);_0x51a44e['offset']=qs[_0xba6b('0x10')](_0x33f7ce['query']['offset']);}return _0x53b63a[_0xba6b('0x71')](_0x51a44e);}})[_0xba6b('0x13')](function(_0x2eee24){if(_0x2eee24){return _0x2eee24?{'count':_0x3b172b,'rows':_0x2eee24}:null;}})['then'](respondWithResult(_0xf93a0d,null))[_0xba6b('0x20')](handleError(_0xf93a0d,null));};
\ No newline at end of file
+var _0xbd0a=['rows','catch','show','params','model','keys','filters','intersection','attributes','fields','length','includeAll','merge','options','create','body','user','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','hasOwnProperty','order','sort','pick','FaxQueueId','filter','UserFaxQueue','findAll','findAndCountAll','agent','faxPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','nolimit','ids','Agents','online','voicePause','interface','sequelize','transaction','addTeams','each','findOrCreate','forEach','emit','userFaxQueue:save','removeTeams','User','field','tq.TeamId','from','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','all','union','isEmpty','removeAgents','userFaxQueue:remove','addAgents','getAgents','bluebird','lodash','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','status','end','offset','undefined','count','limit','set','Content-Range','json','update','destroy','then','get','FaxQueues','UserProfileResource','sendStatus','error','stack','name','send','index','map','FaxQueue','rawAttributes','fieldName','type','key','getOptions','where','include','query'];(function(_0x21bee1,_0x1bc743){var _0x40df80=function(_0x160abc){while(--_0x160abc){_0x21bee1['push'](_0x21bee1['shift']());}};_0x40df80(++_0x1bc743);}(_0xbd0a,0x1b9));var _0xabd0=function(_0x274b23,_0x50401b){_0x274b23=_0x274b23-0x0;var _0x4f1c5d=_0xbd0a[_0x274b23];return _0x4f1c5d;};'use strict';var BPromise=require(_0xabd0('0x0'));var util=require('util');var _=require(_0xabd0('0x1'));var squel=require('squel');var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0xabd0('0x2'))(_0xabd0('0x3'));var config=require(_0xabd0('0x4'));var db=require(_0xabd0('0x5'))['db'];config[_0xabd0('0x6')]=_[_0xabd0('0x7')](config[_0xabd0('0x6')],{'host':_0xabd0('0x8'),'port':0x18eb});var socket=require(_0xabd0('0x9'))(new Redis(config['redis']));require(_0xabd0('0xa'))[_0xabd0('0xb')](socket);function respondWithStatusCode(_0x2b50c1,_0x57f735){_0x57f735=_0x57f735||0xcc;return function(_0x37cc47){if(_0x37cc47){return _0x2b50c1['sendStatus'](_0x57f735);}return _0x2b50c1[_0xabd0('0xc')](_0x57f735)[_0xabd0('0xd')]();};}function respondWithResult(_0x2c31c9,_0x3dc0ab){_0x3dc0ab=_0x3dc0ab||0xc8;return function(_0x50fc2d){if(_0x50fc2d){return _0x2c31c9[_0xabd0('0xc')](_0x3dc0ab)['json'](_0x50fc2d);}};}function respondWithFilteredResult(_0x1b78e2,_0x3779fa){return function(_0x1ad151){if(_0x1ad151){var _0x14a91b=typeof _0x3779fa[_0xabd0('0xe')]===_0xabd0('0xf')&&typeof _0x3779fa['limit']===_0xabd0('0xf');var _0x4d8e19=_0x1ad151[_0xabd0('0x10')];var _0x145f76=_0x14a91b?0x0:_0x3779fa['offset'];var _0x56ba31=_0x14a91b?_0x1ad151['count']:_0x3779fa['offset']+_0x3779fa[_0xabd0('0x11')];var _0x26d8fd;if(_0x56ba31>=_0x4d8e19){_0x56ba31=_0x4d8e19;_0x26d8fd=0xc8;}else{_0x26d8fd=0xce;}_0x1b78e2[_0xabd0('0xc')](_0x26d8fd);return _0x1b78e2[_0xabd0('0x12')](_0xabd0('0x13'),_0x145f76+'-'+_0x56ba31+'/'+_0x4d8e19)[_0xabd0('0x14')](_0x1ad151);}return null;};}function saveUpdates(_0x389e1e){return function(_0x38f37d){if(_0x38f37d){return _0x38f37d[_0xabd0('0x15')](_0x389e1e)['then'](function(_0x3a0ace){return _0x3a0ace;});}return null;};}function removeEntity(_0x5de1df){return function(_0x579dcd){if(_0x579dcd){return _0x579dcd[_0xabd0('0x16')]()[_0xabd0('0x17')](function(){var _0x3c5886=_0x579dcd[_0xabd0('0x18')]({'plain':!![]});var _0x495c6d=_0xabd0('0x19');return db[_0xabd0('0x1a')]['destroy']({'where':{'type':_0x495c6d,'resourceId':_0x3c5886['id']}})['then'](function(){return _0x579dcd;});})[_0xabd0('0x17')](function(){_0x5de1df[_0xabd0('0xc')](0xcc)['end']();});}};}function handleEntityNotFound(_0x345b45){return function(_0x41718f){if(!_0x41718f){_0x345b45[_0xabd0('0x1b')](0x194);}return _0x41718f;};}function handleError(_0x1e077e,_0x4c9f3a){_0x4c9f3a=_0x4c9f3a||0x1f4;return function(_0x1b1079){logger[_0xabd0('0x1c')](_0x1b1079[_0xabd0('0x1d')]);if(_0x1b1079[_0xabd0('0x1e')]){delete _0x1b1079[_0xabd0('0x1e')];}_0x1e077e[_0xabd0('0xc')](_0x4c9f3a)[_0xabd0('0x1f')](_0x1b1079);};}exports[_0xabd0('0x20')]=function(_0x187fc5,_0x20b73d){var _0x52c8be={};var _0x369dd0={'count':0x0,'rows':[]};var _0x2699c4=_[_0xabd0('0x21')](db[_0xabd0('0x22')][_0xabd0('0x23')],function(_0x399996){return{'name':_0x399996[_0xabd0('0x24')],'type':_0x399996[_0xabd0('0x25')][_0xabd0('0x26')]};});_0x52c8be=qs[_0xabd0('0x27')](_0x2699c4,_0x187fc5);var _0x9db198={'where':_0x52c8be[_0xabd0('0x28')]};return db[_0xabd0('0x22')][_0xabd0('0x10')](_0x9db198)[_0xabd0('0x17')](function(_0x15096f){_0x369dd0['count']=_0x15096f;_0x52c8be[_0xabd0('0x29')]=qs[_0xabd0('0x29')](_0x187fc5[_0xabd0('0x2a')]);return db[_0xabd0('0x22')]['findAll'](_0x52c8be);})[_0xabd0('0x17')](function(_0x30c608){_0x369dd0[_0xabd0('0x2b')]=_0x30c608;return _0x369dd0;})['then'](respondWithFilteredResult(_0x20b73d,_0x52c8be))[_0xabd0('0x2c')](handleError(_0x20b73d,null));};exports[_0xabd0('0x2d')]=function(_0x5b6ea7,_0xd6d0c2){var _0x5368eb={'raw':!![],'where':{'id':_0x5b6ea7[_0xabd0('0x2e')]['id']}},_0x1540d6={};_0x1540d6[_0xabd0('0x2f')]=_[_0xabd0('0x30')](db[_0xabd0('0x22')][_0xabd0('0x23')]);_0x1540d6['query']=_[_0xabd0('0x30')](_0x5b6ea7[_0xabd0('0x2a')]);_0x1540d6[_0xabd0('0x31')]=_[_0xabd0('0x32')](_0x1540d6[_0xabd0('0x2f')],_0x1540d6[_0xabd0('0x2a')]);_0x5368eb[_0xabd0('0x33')]=_[_0xabd0('0x32')](_0x1540d6[_0xabd0('0x2f')],qs[_0xabd0('0x34')](_0x5b6ea7[_0xabd0('0x2a')][_0xabd0('0x34')]));_0x5368eb[_0xabd0('0x33')]=_0x5368eb[_0xabd0('0x33')][_0xabd0('0x35')]?_0x5368eb['attributes']:_0x1540d6['model'];if(_0x5b6ea7['query'][_0xabd0('0x36')]){_0x5368eb[_0xabd0('0x29')]=[{'all':!![]}];}_0x5368eb=_[_0xabd0('0x37')]({},_0x5368eb,_0x5b6ea7[_0xabd0('0x38')]);return db[_0xabd0('0x22')]['find'](_0x5368eb)['then'](handleEntityNotFound(_0xd6d0c2,null))['then'](respondWithResult(_0xd6d0c2,null))[_0xabd0('0x2c')](handleError(_0xd6d0c2,null));};exports['create']=function(_0x3dca6d,_0x2acff1){return db[_0xabd0('0x22')][_0xabd0('0x39')](_0x3dca6d[_0xabd0('0x3a')],{})[_0xabd0('0x17')](function(_0x69329a){var _0x42e86e=_0x3dca6d['user'][_0xabd0('0x18')]({'plain':!![]});if(!_0x42e86e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x42e86e['role']===_0xabd0('0x3b')){var _0x2841f2=_0x69329a[_0xabd0('0x18')]({'plain':!![]});var _0x3176c0=_0xabd0('0x19');return db['UserProfileSection'][_0xabd0('0x3c')]({'where':{'name':_0x3176c0,'userProfileId':_0x42e86e[_0xabd0('0x3d')]},'raw':!![]})[_0xabd0('0x17')](function(_0x2e0bdf){if(_0x2e0bdf&&_0x2e0bdf['autoAssociation']===0x0){return db[_0xabd0('0x1a')][_0xabd0('0x39')]({'name':_0x2841f2[_0xabd0('0x1e')],'resourceId':_0x2841f2['id'],'type':_0x2e0bdf[_0xabd0('0x1e')],'sectionId':_0x2e0bdf['id']},{})[_0xabd0('0x17')](function(){return _0x69329a;});}else{return _0x69329a;}})[_0xabd0('0x2c')](function(_0x2aa5a9){logger[_0xabd0('0x1c')](_0xabd0('0x3e'),_0x2aa5a9);throw _0x2aa5a9;});}return _0x69329a;})[_0xabd0('0x17')](respondWithResult(_0x2acff1,0xc9))[_0xabd0('0x2c')](handleError(_0x2acff1,null));};exports[_0xabd0('0x15')]=function(_0x237a33,_0x514ea3){if(_0x237a33[_0xabd0('0x3a')]['id']){delete _0x237a33[_0xabd0('0x3a')]['id'];}return db[_0xabd0('0x22')]['find']({'where':{'id':_0x237a33['params']['id']}})[_0xabd0('0x17')](handleEntityNotFound(_0x514ea3,null))[_0xabd0('0x17')](saveUpdates(_0x237a33[_0xabd0('0x3a')],null))[_0xabd0('0x17')](respondWithResult(_0x514ea3,null))[_0xabd0('0x2c')](handleError(_0x514ea3,null));};exports['destroy']=function(_0x564fe1,_0x3171d7){return db[_0xabd0('0x22')][_0xabd0('0x3c')]({'where':{'id':_0x564fe1[_0xabd0('0x2e')]['id']}})[_0xabd0('0x17')](handleEntityNotFound(_0x3171d7,null))['then'](removeEntity(_0x3171d7,null))[_0xabd0('0x2c')](handleError(_0x3171d7,null));};exports[_0xabd0('0x3f')]=function(_0x46bbf8,_0x47b98e){return db[_0xabd0('0x22')][_0xabd0('0x3f')]()[_0xabd0('0x17')](respondWithResult(_0x47b98e,null))[_0xabd0('0x2c')](handleError(_0x47b98e,null));};exports['getMembers']=function(_0x2d8778,_0x3196b8){var _0x1f620c={'raw':!![],'where':{}},_0x13421c={},_0x4ca72b;return db[_0xabd0('0x22')][_0xabd0('0x40')]({'where':{'id':_0x2d8778[_0xabd0('0x2e')]['id']}})[_0xabd0('0x17')](handleEntityNotFound(_0x3196b8,null))[_0xabd0('0x17')](function(_0x174cf2){if(_0x174cf2){_0x4ca72b=_0x174cf2['get']({'plain':!![]});_0x13421c['model']=_[_0xabd0('0x30')](db['UserFaxQueue']['rawAttributes']);_0x13421c[_0xabd0('0x2a')]=_[_0xabd0('0x30')](_0x2d8778[_0xabd0('0x2a')]);_0x13421c[_0xabd0('0x31')]=_['intersection'](_0x13421c[_0xabd0('0x2f')],_0x13421c[_0xabd0('0x2a')]);_0x1f620c[_0xabd0('0x33')]=_[_0xabd0('0x32')](_0x13421c['model'],qs['fields'](_0x2d8778[_0xabd0('0x2a')][_0xabd0('0x34')]));_0x1f620c[_0xabd0('0x33')]=_0x1f620c[_0xabd0('0x33')][_0xabd0('0x35')]?_0x1f620c[_0xabd0('0x33')]:_0x13421c[_0xabd0('0x2f')];if(!_0x2d8778[_0xabd0('0x2a')][_0xabd0('0x41')]('nolimit')){_0x1f620c[_0xabd0('0x11')]=qs[_0xabd0('0x11')](_0x2d8778['query'][_0xabd0('0x11')]);_0x1f620c[_0xabd0('0xe')]=qs[_0xabd0('0xe')](_0x2d8778[_0xabd0('0x2a')][_0xabd0('0xe')]);}_0x1f620c[_0xabd0('0x42')]=qs['sort'](_0x2d8778[_0xabd0('0x2a')][_0xabd0('0x43')]);_0x1f620c['where']=qs[_0xabd0('0x31')](_[_0xabd0('0x44')](_0x2d8778['query'],_0x13421c[_0xabd0('0x31')]));_0x1f620c[_0xabd0('0x28')][_0xabd0('0x45')]=_0x174cf2['id'];if(_0x2d8778[_0xabd0('0x2a')][_0xabd0('0x46')]){_0x1f620c[_0xabd0('0x28')]=_['merge'](_0x1f620c[_0xabd0('0x28')],{'$or':_['map'](_0x1f620c[_0xabd0('0x33')],function(_0x395542){var _0x2a0dd4={};_0x2a0dd4[_0x395542]={'$like':'%'+_0x2d8778[_0xabd0('0x2a')][_0xabd0('0x46')]+'%'};return _0x2a0dd4;})});}_0x1f620c=_[_0xabd0('0x37')]({},_0x1f620c,_0x2d8778[_0xabd0('0x38')]);return db[_0xabd0('0x47')][_0xabd0('0x48')](_0x1f620c);}})[_0xabd0('0x17')](function(_0x200e09){if(_0x200e09){return db['User'][_0xabd0('0x49')]({'where':{'id':_[_0xabd0('0x21')](_0x200e09,'UserId'),'role':_0xabd0('0x4a')},'attributes':['id','name',_0xabd0('0x4b'),_0xabd0('0x4c'),_0xabd0('0x4d')]});}})[_0xabd0('0x17')](function(_0x2c4fe2){if(_0x2c4fe2){return{'count':_0x2c4fe2[_0xabd0('0x10')],'rows':_['map'](_0x2c4fe2[_0xabd0('0x2b')],function(_0x11ad7d){return{'membername':_0x11ad7d['name'],'UserId':_0x11ad7d['id'],'queue_name':_0x4ca72b[_0xabd0('0x1e')],'FaxQueueId':_0x4ca72b['id'],'interface':util[_0xabd0('0x4e')](_0xabd0('0x4f'),_0xabd0('0x50'),_0x11ad7d[_0xabd0('0x1e')]),'penalty':0x0,'paused':_0x11ad7d[_0xabd0('0x4b')],'createdAt':_0x11ad7d['createdAt'],'updatedAt':_0x11ad7d[_0xabd0('0x4c')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x3196b8,_0x1f620c))[_0xabd0('0x2c')](handleError(_0x3196b8,null));};exports[_0xabd0('0x51')]=function(_0x4698d1,_0x42c603){var _0x1de0dd={};var _0x5ca26a={};var _0x3a918a;var _0xee6add;return db['FaxQueue']['findOne']({'where':{'id':_0x4698d1[_0xabd0('0x2e')]['id']}})['then'](handleEntityNotFound(_0x42c603,null))['then'](function(_0x3e25c0){if(_0x3e25c0){_0x3a918a=_0x3e25c0;_0x5ca26a[_0xabd0('0x2f')]=_[_0xabd0('0x30')](db[_0xabd0('0x52')]['rawAttributes']);_0x5ca26a[_0xabd0('0x2a')]=_['keys'](_0x4698d1[_0xabd0('0x2a')]);_0x5ca26a[_0xabd0('0x31')]=_[_0xabd0('0x32')](_0x5ca26a[_0xabd0('0x2f')],_0x5ca26a[_0xabd0('0x2a')]);_0x1de0dd[_0xabd0('0x33')]=_['intersection'](_0x5ca26a[_0xabd0('0x2f')],qs[_0xabd0('0x34')](_0x4698d1[_0xabd0('0x2a')]['fields']));_0x1de0dd[_0xabd0('0x33')]=_0x1de0dd[_0xabd0('0x33')][_0xabd0('0x35')]?_0x1de0dd['attributes']:_0x5ca26a[_0xabd0('0x2f')];_0x1de0dd[_0xabd0('0x42')]=qs['sort'](_0x4698d1['query'][_0xabd0('0x43')]);_0x1de0dd[_0xabd0('0x28')]=qs[_0xabd0('0x31')](_['pick'](_0x4698d1['query'],_0x5ca26a[_0xabd0('0x31')]));if(_0x4698d1['query'][_0xabd0('0x46')]){_0x1de0dd[_0xabd0('0x28')]=_[_0xabd0('0x37')](_0x1de0dd[_0xabd0('0x28')],{'$or':_[_0xabd0('0x21')](_0x1de0dd[_0xabd0('0x33')],function(_0x1bd291){var _0x33f80f={};_0x33f80f[_0x1bd291]={'$like':'%'+_0x4698d1[_0xabd0('0x2a')][_0xabd0('0x46')]+'%'};return _0x33f80f;})});}_0x1de0dd=_['merge']({},_0x1de0dd,_0x4698d1[_0xabd0('0x38')]);return _0x3a918a[_0xabd0('0x51')](_0x1de0dd);}})[_0xabd0('0x17')](function(_0x57b8c2){if(_0x57b8c2){_0xee6add=_0x57b8c2[_0xabd0('0x35')];if(!_0x4698d1['query']['hasOwnProperty'](_0xabd0('0x53'))){_0x1de0dd[_0xabd0('0x11')]=qs[_0xabd0('0x11')](_0x4698d1[_0xabd0('0x2a')]['limit']);_0x1de0dd[_0xabd0('0xe')]=qs['offset'](_0x4698d1[_0xabd0('0x2a')]['offset']);}return _0x3a918a[_0xabd0('0x51')](_0x1de0dd);}})[_0xabd0('0x17')](function(_0x276e2c){if(_0x276e2c){return _0x276e2c?{'count':_0xee6add,'rows':_0x276e2c}:null;}})['then'](respondWithResult(_0x42c603,null))[_0xabd0('0x2c')](handleError(_0x42c603,null));};exports['addTeams']=function(_0x14383c,_0x2d7bcc){var _0x2ced6c=_0x14383c['body'][_0xabd0('0x54')];return db[_0xabd0('0x52')][_0xabd0('0x48')]({'where':{'id':_0x2ced6c},'attributes':['id'],'include':[{'model':db['User'],'as':_0xabd0('0x55'),'attributes':['id',_0xabd0('0x1e'),_0xabd0('0x56'),_0xabd0('0x57'),_0xabd0('0x58')],'raw':!![]}]})[_0xabd0('0x17')](function(_0x456409){if(_0x456409){var _0x4f014e=_['flatMap'](_0x456409,function(_0x202233){var _0x19dc00=_0x202233[_0xabd0('0x18')]({'plain':!![]});return _0x19dc00[_0xabd0('0x55')];});return db[_0xabd0('0x22')][_0xabd0('0x3c')]({'where':{'id':_0x14383c[_0xabd0('0x2e')]['id']}})['then'](function(_0x2504e2){return db[_0xabd0('0x59')][_0xabd0('0x5a')](function(_0x29bc1d){return _0x2504e2[_0xabd0('0x5b')](_0x2ced6c,{'transaction':_0x29bc1d})[_0xabd0('0x17')](function(){return BPromise[_0xabd0('0x5c')](_0x4f014e,function(_0x144d40){return db[_0xabd0('0x47')][_0xabd0('0x5d')]({'where':{'UserId':_0x144d40['id'],'FaxQueueId':_0x14383c[_0xabd0('0x2e')]['id']},'transaction':_0x29bc1d});});})[_0xabd0('0x17')](function(){_0x4f014e[_0xabd0('0x5e')](function(_0x4c3344){socket[_0xabd0('0x5f')](_0xabd0('0x60'),{'UserId':_0x4c3344['id'],'FaxQueueId':_0x2504e2['id']});});});});});}})[_0xabd0('0x17')](respondWithStatusCode(_0x2d7bcc,null))[_0xabd0('0x2c')](handleError(_0x2d7bcc,null));};exports[_0xabd0('0x61')]=function(_0x56358c,_0x23d629){return db[_0xabd0('0x52')][_0xabd0('0x48')]({'where':{'id':_0x56358c[_0xabd0('0x2a')]['ids']},'attributes':['id'],'include':[{'model':db[_0xabd0('0x62')],'as':_0xabd0('0x55'),'attributes':['id'],'raw':!![]}]})[_0xabd0('0x17')](handleEntityNotFound(_0x23d629,null))[_0xabd0('0x17')](function(_0x6e6566){var _0x5454fb=_[_0xabd0('0x21')](_0x6e6566,'id');var _0x112b1e=[];var _0x379fb5=[];var _0x4e876d=squel['select']();_0x4e876d[_0xabd0('0x63')](_0xabd0('0x64'))[_0xabd0('0x65')](_0xabd0('0x66'),'tq')[_0xabd0('0x67')](_0xabd0('0x68'),'ut',_0xabd0('0x69'))[_0xabd0('0x28')](_0xabd0('0x6a'),_0x56358c['params']['id']);for(var _0x2c7c03=0x0;_0x2c7c03<_0x6e6566[_0xabd0('0x35')];_0x2c7c03+=0x1){let _0x536555=_0x6e6566[_0x2c7c03];for(var _0x1d83d4=0x0;_0x1d83d4<_0x536555['Agents']['length'];_0x1d83d4+=0x1){let _0x15b740=_0x536555['Agents'][_0x1d83d4];var _0x36cf3d=_0x4e876d[_0xabd0('0x6b')]();_0x36cf3d[_0xabd0('0x28')](_0xabd0('0x6c'),_0x15b740['id']);_0x379fb5[_0xabd0('0x6d')](db['sequelize']['query'](_0x36cf3d[_0xabd0('0x6e')](),{'type':db[_0xabd0('0x59')][_0xabd0('0x6f')][_0xabd0('0x70')]})[_0xabd0('0x17')](function(_0x313ff9){if(_0x313ff9['length']===0x1){return _0x15b740['id'];}else{var _0x3919f1=_[_0xabd0('0x71')](_[_0xabd0('0x21')](_0x313ff9,'TeamId'),function(_0x40dcf2){return _['includes'](_0x5454fb,_0x40dcf2);});if(_0x3919f1){return _0x15b740['id'];}}}));}}return BPromise[_0xabd0('0x72')](_0x379fb5)[_0xabd0('0x17')](function(_0x1f7ec4){_0x112b1e=_(_0x112b1e)[_0xabd0('0x73')](_0x1f7ec4)['compact']()['value']();return db[_0xabd0('0x22')][_0xabd0('0x3c')]({'where':{'id':_0x56358c['params']['id']}})[_0xabd0('0x17')](function(_0x42003f){return db[_0xabd0('0x59')]['transaction'](function(_0x2ff4fb){return _0x42003f['removeTeams'](_0x56358c[_0xabd0('0x2a')]['ids'],{'transaction':_0x2ff4fb})[_0xabd0('0x17')](function(){if(!_[_0xabd0('0x74')](_0x112b1e)){return _0x42003f[_0xabd0('0x75')](_0x112b1e,{'transaction':_0x2ff4fb});}})[_0xabd0('0x17')](function(){_0x112b1e[_0xabd0('0x5e')](function(_0x31f166){socket[_0xabd0('0x5f')](_0xabd0('0x76'),{'UserId':_0x31f166,'FaxQueueId':_0x42003f['id']});});});});});});})[_0xabd0('0x17')](respondWithStatusCode(_0x23d629,null))[_0xabd0('0x2c')](handleError(_0x23d629,null));};exports[_0xabd0('0x77')]=function(_0x3a895f,_0x1c3fdd){return db['FaxQueue'][_0xabd0('0x3c')]({'where':{'id':_0x3a895f[_0xabd0('0x2e')]['id']}})[_0xabd0('0x17')](handleEntityNotFound(_0x1c3fdd,null))['then'](function(_0x364f77){if(_0x364f77){return _0x364f77[_0xabd0('0x77')](_0x3a895f[_0xabd0('0x3a')][_0xabd0('0x54')],_['omit'](_0x3a895f['body'],[_0xabd0('0x54'),'id'])||{})['spread'](function(_0x2fb793){for(var _0x29cfda=0x0;_0x29cfda<_0x3a895f[_0xabd0('0x3a')][_0xabd0('0x54')][_0xabd0('0x35')];_0x29cfda+=0x1){socket[_0xabd0('0x5f')](_0xabd0('0x60'),{'UserId':Number(_0x3a895f['body'][_0xabd0('0x54')][_0x29cfda]),'FaxQueueId':Number(_0x3a895f[_0xabd0('0x2e')]['id'])});}return _0x2fb793;});}})[_0xabd0('0x17')](respondWithResult(_0x1c3fdd,null))[_0xabd0('0x2c')](handleError(_0x1c3fdd,null));};exports['removeAgents']=function(_0x261131,_0x2862c1){return db['FaxQueue'][_0xabd0('0x3c')]({'where':{'id':_0x261131[_0xabd0('0x2e')]['id']}})[_0xabd0('0x17')](handleEntityNotFound(_0x2862c1,null))[_0xabd0('0x17')](function(_0x46f7f8){if(_0x46f7f8){return _0x46f7f8[_0xabd0('0x75')](_0x261131['query'][_0xabd0('0x54')])['then'](function(){if(_['isArray'](_0x261131['query'][_0xabd0('0x54')])){for(var _0x4dc968=0x0;_0x4dc968<_0x261131[_0xabd0('0x2a')][_0xabd0('0x54')][_0xabd0('0x35')];_0x4dc968+=0x1){socket[_0xabd0('0x5f')](_0xabd0('0x76'),{'UserId':Number(_0x261131['query'][_0xabd0('0x54')][_0x4dc968]),'FaxQueueId':Number(_0x261131[_0xabd0('0x2e')]['id'])});}}else{socket[_0xabd0('0x5f')]('userFaxQueue:remove',{'UserId':Number(_0x261131[_0xabd0('0x2a')][_0xabd0('0x54')]),'FaxQueueId':Number(_0x261131['params']['id'])});}});}})[_0xabd0('0x17')](respondWithStatusCode(_0x2862c1,null))[_0xabd0('0x2c')](handleError(_0x2862c1,null));};exports['getAgents']=function(_0x47d36a,_0x30dea4){var _0x5b894e={};var _0x57c19b={};var _0x1af4df;var _0x5cdbb2;return db[_0xabd0('0x22')][_0xabd0('0x40')]({'where':{'id':_0x47d36a[_0xabd0('0x2e')]['id']}})[_0xabd0('0x17')](handleEntityNotFound(_0x30dea4,null))[_0xabd0('0x17')](function(_0x179311){if(_0x179311){_0x1af4df=_0x179311;_0x57c19b[_0xabd0('0x2f')]=_[_0xabd0('0x30')](db[_0xabd0('0x62')]['rawAttributes']);_0x57c19b[_0xabd0('0x2a')]=_[_0xabd0('0x30')](_0x47d36a[_0xabd0('0x2a')]);_0x57c19b[_0xabd0('0x31')]=_[_0xabd0('0x32')](_0x57c19b['model'],_0x57c19b[_0xabd0('0x2a')]);_0x5b894e[_0xabd0('0x33')]=_[_0xabd0('0x32')](_0x57c19b[_0xabd0('0x2f')],qs[_0xabd0('0x34')](_0x47d36a[_0xabd0('0x2a')][_0xabd0('0x34')]));_0x5b894e[_0xabd0('0x33')]=_0x5b894e[_0xabd0('0x33')]['length']?_0x5b894e[_0xabd0('0x33')]:_0x57c19b[_0xabd0('0x2f')];_0x5b894e[_0xabd0('0x42')]=qs[_0xabd0('0x43')](_0x47d36a[_0xabd0('0x2a')][_0xabd0('0x43')]);_0x5b894e[_0xabd0('0x28')]=qs[_0xabd0('0x31')](_['pick'](_0x47d36a['query'],_0x57c19b[_0xabd0('0x31')]));if(_0x47d36a['query'][_0xabd0('0x46')]){_0x5b894e['where']=_[_0xabd0('0x37')](_0x5b894e[_0xabd0('0x28')],{'$or':_['map'](_0x5b894e['attributes'],function(_0x258ad8){var _0x3f744b={};_0x3f744b[_0x258ad8]={'$like':'%'+_0x47d36a[_0xabd0('0x2a')]['filter']+'%'};return _0x3f744b;})});}_0x5b894e=_[_0xabd0('0x37')]({},_0x5b894e,_0x47d36a['options']);return _0x1af4df[_0xabd0('0x78')](_0x5b894e);}})['then'](function(_0x33eba5){if(_0x33eba5){_0x5cdbb2=_0x33eba5[_0xabd0('0x35')];if(!_0x47d36a[_0xabd0('0x2a')]['hasOwnProperty']('nolimit')){_0x5b894e['limit']=qs[_0xabd0('0x11')](_0x47d36a[_0xabd0('0x2a')][_0xabd0('0x11')]);_0x5b894e['offset']=qs[_0xabd0('0xe')](_0x47d36a['query'][_0xabd0('0xe')]);}return _0x1af4df[_0xabd0('0x78')](_0x5b894e);}})[_0xabd0('0x17')](function(_0x1c64c7){if(_0x1c64c7){return _0x1c64c7?{'count':_0x5cdbb2,'rows':_0x1c64c7}:null;}})[_0xabd0('0x17')](respondWithResult(_0x30dea4,null))[_0xabd0('0x2c')](handleError(_0x30dea4,null));};
\ No newline at end of file
index abf5b39..1c27f7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d1f=['save','update','emit','hasOwnProperty','exports','events','FaxQueue','setMaxListeners'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x7d1f,0x185));var _0xf7d1=function(_0x510e5f,_0x50fa5b){_0x510e5f=_0x510e5f-0x0;var _0x3f4815=_0x7d1f[_0x510e5f];return _0x3f4815;};'use strict';var EventEmitter=require(_0xf7d1('0x0'));var FaxQueue=require('../../mysqldb')['db'][_0xf7d1('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xf7d1('0x2')](0x0);var events={'afterCreate':_0xf7d1('0x3'),'afterUpdate':_0xf7d1('0x4'),'afterDestroy':'remove'};function emitEvent(_0x4cef7b){return function(_0x96f18a,_0x42bc64,_0x1302f4){FaxQueueEvents[_0xf7d1('0x5')](_0x4cef7b+':'+_0x96f18a['id'],_0x96f18a);FaxQueueEvents[_0xf7d1('0x5')](_0x4cef7b,_0x96f18a);_0x1302f4(null);};}for(var e in events){if(events[_0xf7d1('0x6')](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module[_0xf7d1('0x7')]=FaxQueueEvents;
\ No newline at end of file
+var _0xec3a=['FaxQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x487693,_0x5f1edd){var _0x33c2cb=function(_0x2f2055){while(--_0x2f2055){_0x487693['push'](_0x487693['shift']());}};_0x33c2cb(++_0x5f1edd);}(_0xec3a,0x1d4));var _0xaec3=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0xec3a[_0x255d5b];return _0x3e141a;};'use strict';var EventEmitter=require(_0xaec3('0x0'));var FaxQueue=require(_0xaec3('0x1'))['db'][_0xaec3('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xaec3('0x3')](0x0);var events={'afterCreate':_0xaec3('0x4'),'afterUpdate':_0xaec3('0x5'),'afterDestroy':_0xaec3('0x6')};function emitEvent(_0x5053fc){return function(_0x35c09b,_0x12d16a,_0x16fab4){FaxQueueEvents[_0xaec3('0x7')](_0x5053fc+':'+_0x35c09b['id'],_0x35c09b);FaxQueueEvents[_0xaec3('0x7')](_0x5053fc,_0x35c09b);_0x16fab4(null);};}for(var e in events){if(events[_0xaec3('0x8')](e)){var event=events[e];FaxQueue[_0xaec3('0x9')](e,emitEvent(event));}}module['exports']=FaxQueueEvents;
\ No newline at end of file
index 2ce61f2..2f8827f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x858b=['./faxQueue.attributes','exports','define','FaxQueue','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x858b,0xd4));var _0xb858=function(_0x599c94,_0x464f0e){_0x599c94=_0x599c94-0x0;var _0x34e215=_0x858b[_0x599c94];return _0x34e215;};'use strict';var _=require(_0xb858('0x0'));var util=require(_0xb858('0x1'));var logger=require(_0xb858('0x2'))('api');var moment=require(_0xb858('0x3'));var BPromise=require(_0xb858('0x4'));var rp=require(_0xb858('0x5'));var fs=require('fs');var path=require(_0xb858('0x6'));var rimraf=require(_0xb858('0x7'));var config=require(_0xb858('0x8'));var attributes=require(_0xb858('0x9'));module[_0xb858('0xa')]=function(_0x597562,_0x38f2db){return _0x597562[_0xb858('0xb')](_0xb858('0xc'),attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4a41=['bluebird','request-promise','path','rimraf','../../config/environment','./faxQueue.attributes','exports','define','FaxQueue','fax_queues','lodash','util','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4a41,0xe7));var _0x14a4=function(_0x89fffe,_0x1ef3ba){_0x89fffe=_0x89fffe-0x0;var _0x4a9fad=_0x4a41[_0x89fffe];return _0x4a9fad;};'use strict';var _=require(_0x14a4('0x0'));var util=require(_0x14a4('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x14a4('0x2'));var BPromise=require(_0x14a4('0x3'));var rp=require(_0x14a4('0x4'));var fs=require('fs');var path=require(_0x14a4('0x5'));var rimraf=require(_0x14a4('0x6'));var config=require(_0x14a4('0x7'));var attributes=require(_0x14a4('0x8'));module[_0x14a4('0x9')]=function(_0x58d9ae,_0x134d6e){return _0x58d9ae[_0x14a4('0xa')](_0x14a4('0xb'),attributes,{'tableName':_0x14a4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9fef409..7c678b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab75=['include','model','catch','find','ShowFaxQueue','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./faxQueue.socket','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetFaxQueue','FaxQueue','findAll','options','raw','where','attributes','limit','map'];(function(_0x3bda86,_0x3c45e5){var _0x4d7ffa=function(_0x15185d){while(--_0x15185d){_0x3bda86['push'](_0x3bda86['shift']());}};_0x4d7ffa(++_0x3c45e5);}(_0xab75,0x13d));var _0x5ab7=function(_0x291231,_0x266872){_0x291231=_0x291231-0x0;var _0x566418=_0xab75[_0x291231];return _0x566418;};'use strict';var _=require(_0x5ab7('0x0'));var util=require('util');var moment=require(_0x5ab7('0x1'));var BPromise=require(_0x5ab7('0x2'));var rs=require(_0x5ab7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5ab7('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x5ab7('0x5'))(_0x5ab7('0x6'));var config=require('../../config/environment');var jayson=require(_0x5ab7('0x7'));var client=jayson['client'][_0x5ab7('0x8')]({'port':0x232a});config[_0x5ab7('0x9')]=_[_0x5ab7('0xa')](config['redis'],{'host':_0x5ab7('0xb'),'port':0x18eb});var socket=require(_0x5ab7('0xc'))(new Redis(config[_0x5ab7('0x9')]));require(_0x5ab7('0xd'))['register'](socket);function respondWithRpcPromise(_0x2c93f6,_0x3862f0,_0x1359d6){return new BPromise(function(_0x2b8212,_0x2ffafe){return client[_0x5ab7('0xe')](_0x2c93f6,_0x1359d6)[_0x5ab7('0xf')](function(_0x16f0cd){logger[_0x5ab7('0x10')](_0x5ab7('0x11'),_0x3862f0,_0x5ab7('0x12'));logger[_0x5ab7('0x13')](_0x5ab7('0x14'),_0x3862f0,_0x5ab7('0x12'),JSON[_0x5ab7('0x15')](_0x16f0cd));if(_0x16f0cd[_0x5ab7('0x16')]){if(_0x16f0cd[_0x5ab7('0x16')][_0x5ab7('0x17')]===0x1f4){logger[_0x5ab7('0x16')](_0x5ab7('0x11'),_0x3862f0,_0x16f0cd['error']['message']);return _0x2ffafe(_0x16f0cd[_0x5ab7('0x16')][_0x5ab7('0x18')]);}logger['error']('FaxQueue,\x20%s,\x20%s',_0x3862f0,_0x16f0cd['error']['message']);return _0x2b8212(_0x16f0cd[_0x5ab7('0x16')][_0x5ab7('0x18')]);}else{logger[_0x5ab7('0x10')](_0x5ab7('0x11'),_0x3862f0,_0x5ab7('0x12'));_0x2b8212(_0x16f0cd['result'][_0x5ab7('0x18')]);}})['catch'](function(_0x58d3e7){logger[_0x5ab7('0x16')](_0x5ab7('0x11'),_0x3862f0,_0x58d3e7);_0x2ffafe(_0x58d3e7);});});}exports[_0x5ab7('0x19')]=function(_0x514f37){var _0x49a08c=this;return new Promise(function(_0x8130c3,_0x11cdcf){return db[_0x5ab7('0x1a')][_0x5ab7('0x1b')]({'raw':_0x514f37[_0x5ab7('0x1c')]?_0x514f37[_0x5ab7('0x1c')][_0x5ab7('0x1d')]===undefined?!![]:![]:!![],'where':_0x514f37[_0x5ab7('0x1c')]?_0x514f37[_0x5ab7('0x1c')][_0x5ab7('0x1e')]||null:null,'attributes':_0x514f37[_0x5ab7('0x1c')]?_0x514f37['options'][_0x5ab7('0x1f')]||null:null,'limit':_0x514f37[_0x5ab7('0x1c')]?_0x514f37['options'][_0x5ab7('0x20')]||null:null,'include':_0x514f37[_0x5ab7('0x1c')]?_0x514f37['options']['include']?_[_0x5ab7('0x21')](_0x514f37[_0x5ab7('0x1c')][_0x5ab7('0x22')],function(_0xd69a04){return{'model':db[_0xd69a04['model']],'as':_0xd69a04['as'],'attributes':_0xd69a04[_0x5ab7('0x1f')],'include':_0xd69a04[_0x5ab7('0x22')]?_['map'](_0xd69a04['include'],function(_0xbf6baa){return{'model':db[_0xbf6baa[_0x5ab7('0x23')]],'as':_0xbf6baa['as'],'attributes':_0xbf6baa['attributes'],'include':_0xbf6baa['include']?_[_0x5ab7('0x21')](_0xbf6baa[_0x5ab7('0x22')],function(_0x1fdaab){return{'model':db[_0x1fdaab['model']],'as':_0x1fdaab['as'],'attributes':_0x1fdaab[_0x5ab7('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1c16e9){logger[_0x5ab7('0x10')](_0x5ab7('0x19'),_0x514f37);logger['debug'](_0x5ab7('0x19'),_0x514f37,JSON[_0x5ab7('0x15')](_0x1c16e9));_0x8130c3(_0x1c16e9);})[_0x5ab7('0x24')](function(_0x306c39){logger[_0x5ab7('0x16')](_0x5ab7('0x19'),_0x306c39[_0x5ab7('0x18')],_0x514f37);_0x11cdcf(_0x49a08c[_0x5ab7('0x16')](0x1f4,_0x306c39[_0x5ab7('0x18')]));});});};exports['ShowFaxQueue']=function(_0xfd8c59){var _0x3986b5=this;return new Promise(function(_0x542795,_0x4b5246){return db['FaxQueue'][_0x5ab7('0x25')]({'raw':_0xfd8c59[_0x5ab7('0x1c')]?_0xfd8c59[_0x5ab7('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0xfd8c59['options']?_0xfd8c59['options']['where']||null:null,'attributes':_0xfd8c59[_0x5ab7('0x1c')]?_0xfd8c59[_0x5ab7('0x1c')][_0x5ab7('0x1f')]||null:null,'include':_0xfd8c59[_0x5ab7('0x1c')]?_0xfd8c59[_0x5ab7('0x1c')][_0x5ab7('0x22')]?_[_0x5ab7('0x21')](_0xfd8c59[_0x5ab7('0x1c')]['include'],function(_0x5c235f){return{'model':db[_0x5c235f['model']],'as':_0x5c235f['as'],'attributes':_0x5c235f[_0x5ab7('0x1f')],'include':_0x5c235f[_0x5ab7('0x22')]?_[_0x5ab7('0x21')](_0x5c235f[_0x5ab7('0x22')],function(_0x2de257){return{'model':db[_0x2de257[_0x5ab7('0x23')]],'as':_0x2de257['as'],'attributes':_0x2de257['attributes'],'include':_0x2de257[_0x5ab7('0x22')]?_[_0x5ab7('0x21')](_0x2de257[_0x5ab7('0x22')],function(_0xb3ac99){return{'model':db[_0xb3ac99['model']],'as':_0xb3ac99['as'],'attributes':_0xb3ac99[_0x5ab7('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x612754){logger['info'](_0x5ab7('0x26'),_0xfd8c59);logger['debug'](_0x5ab7('0x26'),_0xfd8c59,JSON[_0x5ab7('0x15')](_0x612754));_0x542795(_0x612754);})['catch'](function(_0x9f26e6){logger[_0x5ab7('0x16')]('ShowFaxQueue',_0x9f26e6[_0x5ab7('0x18')],_0xfd8c59);_0x4b5246(_0x3986b5[_0x5ab7('0x16')](0x1f4,_0x9f26e6[_0x5ab7('0x18')]));});});};
\ No newline at end of file
+var _0x9a73=['moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','socket.io-emitter','./faxQueue.socket','register','info','FaxQueue,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','GetFaxQueue','FaxQueue','findAll','raw','options','where','limit','include','map','attributes','model','then','find','ShowFaxQueue','lodash'];(function(_0x35ec01,_0x5c44ac){var _0x4f75d5=function(_0x23ea8f){while(--_0x23ea8f){_0x35ec01['push'](_0x35ec01['shift']());}};_0x4f75d5(++_0x5c44ac);}(_0x9a73,0x137));var _0x39a7=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x9a73[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0x39a7('0x0'));var util=require('util');var moment=require(_0x39a7('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x39a7('0x2'));var db=require(_0x39a7('0x3'))['db'];var utils=require(_0x39a7('0x4'));var logger=require(_0x39a7('0x5'))(_0x39a7('0x6'));var config=require(_0x39a7('0x7'));var jayson=require(_0x39a7('0x8'));var client=jayson[_0x39a7('0x9')][_0x39a7('0xa')]({'port':0x232a});config['redis']=_[_0x39a7('0xb')](config['redis'],{'host':_0x39a7('0xc'),'port':0x18eb});var socket=require(_0x39a7('0xd'))(new Redis(config['redis']));require(_0x39a7('0xe'))[_0x39a7('0xf')](socket);function respondWithRpcPromise(_0x1f2ab3,_0x5b035e,_0x4163af){return new BPromise(function(_0x2b2196,_0x118138){return client['request'](_0x1f2ab3,_0x4163af)['then'](function(_0x44863b){logger[_0x39a7('0x10')](_0x39a7('0x11'),_0x5b035e,'request\x20sent');logger[_0x39a7('0x12')]('FaxQueue,\x20%s,\x20%s,\x20%s',_0x5b035e,_0x39a7('0x13'),JSON[_0x39a7('0x14')](_0x44863b));if(_0x44863b[_0x39a7('0x15')]){if(_0x44863b[_0x39a7('0x15')][_0x39a7('0x16')]===0x1f4){logger[_0x39a7('0x15')](_0x39a7('0x11'),_0x5b035e,_0x44863b[_0x39a7('0x15')][_0x39a7('0x17')]);return _0x118138(_0x44863b['error'][_0x39a7('0x17')]);}logger[_0x39a7('0x15')](_0x39a7('0x11'),_0x5b035e,_0x44863b[_0x39a7('0x15')][_0x39a7('0x17')]);return _0x2b2196(_0x44863b[_0x39a7('0x15')]['message']);}else{logger[_0x39a7('0x10')]('FaxQueue,\x20%s,\x20%s',_0x5b035e,'request\x20sent');_0x2b2196(_0x44863b['result'][_0x39a7('0x17')]);}})[_0x39a7('0x18')](function(_0x21a70d){logger['error']('FaxQueue,\x20%s,\x20%s',_0x5b035e,_0x21a70d);_0x118138(_0x21a70d);});});}exports[_0x39a7('0x19')]=function(_0x185731){var _0x58b83e=this;return new Promise(function(_0x16a328,_0x1e0aa0){return db[_0x39a7('0x1a')][_0x39a7('0x1b')]({'raw':_0x185731['options']?_0x185731['options'][_0x39a7('0x1c')]===undefined?!![]:![]:!![],'where':_0x185731[_0x39a7('0x1d')]?_0x185731[_0x39a7('0x1d')][_0x39a7('0x1e')]||null:null,'attributes':_0x185731[_0x39a7('0x1d')]?_0x185731[_0x39a7('0x1d')]['attributes']||null:null,'limit':_0x185731[_0x39a7('0x1d')]?_0x185731[_0x39a7('0x1d')][_0x39a7('0x1f')]||null:null,'include':_0x185731[_0x39a7('0x1d')]?_0x185731[_0x39a7('0x1d')][_0x39a7('0x20')]?_[_0x39a7('0x21')](_0x185731[_0x39a7('0x1d')][_0x39a7('0x20')],function(_0x57df67){return{'model':db[_0x57df67['model']],'as':_0x57df67['as'],'attributes':_0x57df67[_0x39a7('0x22')],'include':_0x57df67[_0x39a7('0x20')]?_[_0x39a7('0x21')](_0x57df67[_0x39a7('0x20')],function(_0x355254){return{'model':db[_0x355254[_0x39a7('0x23')]],'as':_0x355254['as'],'attributes':_0x355254[_0x39a7('0x22')],'include':_0x355254['include']?_['map'](_0x355254[_0x39a7('0x20')],function(_0x5b8907){return{'model':db[_0x5b8907[_0x39a7('0x23')]],'as':_0x5b8907['as'],'attributes':_0x5b8907[_0x39a7('0x22')]};}):[]};}):[]};}):[]:[]})[_0x39a7('0x24')](function(_0x1ad7e4){logger[_0x39a7('0x10')](_0x39a7('0x19'),_0x185731);logger['debug'](_0x39a7('0x19'),_0x185731,JSON['stringify'](_0x1ad7e4));_0x16a328(_0x1ad7e4);})[_0x39a7('0x18')](function(_0x3456b1){logger[_0x39a7('0x15')](_0x39a7('0x19'),_0x3456b1[_0x39a7('0x17')],_0x185731);_0x1e0aa0(_0x58b83e[_0x39a7('0x15')](0x1f4,_0x3456b1[_0x39a7('0x17')]));});});};exports['ShowFaxQueue']=function(_0x50ab1b){var _0x262048=this;return new Promise(function(_0x5d9150,_0x207420){return db['FaxQueue'][_0x39a7('0x25')]({'raw':_0x50ab1b['options']?_0x50ab1b[_0x39a7('0x1d')][_0x39a7('0x1c')]===undefined?!![]:![]:!![],'where':_0x50ab1b[_0x39a7('0x1d')]?_0x50ab1b[_0x39a7('0x1d')][_0x39a7('0x1e')]||null:null,'attributes':_0x50ab1b[_0x39a7('0x1d')]?_0x50ab1b['options'][_0x39a7('0x22')]||null:null,'include':_0x50ab1b[_0x39a7('0x1d')]?_0x50ab1b['options'][_0x39a7('0x20')]?_['map'](_0x50ab1b[_0x39a7('0x1d')][_0x39a7('0x20')],function(_0x2de404){return{'model':db[_0x2de404['model']],'as':_0x2de404['as'],'attributes':_0x2de404['attributes'],'include':_0x2de404['include']?_['map'](_0x2de404[_0x39a7('0x20')],function(_0x49ce53){return{'model':db[_0x49ce53[_0x39a7('0x23')]],'as':_0x49ce53['as'],'attributes':_0x49ce53['attributes'],'include':_0x49ce53[_0x39a7('0x20')]?_[_0x39a7('0x21')](_0x49ce53['include'],function(_0x478d70){return{'model':db[_0x478d70[_0x39a7('0x23')]],'as':_0x478d70['as'],'attributes':_0x478d70['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x3a32b0){logger[_0x39a7('0x10')](_0x39a7('0x26'),_0x50ab1b);logger[_0x39a7('0x12')](_0x39a7('0x26'),_0x50ab1b,JSON['stringify'](_0x3a32b0));_0x5d9150(_0x3a32b0);})[_0x39a7('0x18')](function(_0x39332e){logger['error'](_0x39a7('0x26'),_0x39332e[_0x39a7('0x17')],_0x50ab1b);_0x207420(_0x262048[_0x39a7('0x15')](0x1f4,_0x39332e[_0x39a7('0x17')]));});});};
\ No newline at end of file
index bbe6120..990137e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f2b=['remove','update','length','faxQueue:','./faxQueue.events','save'];(function(_0x1be614,_0x4ab816){var _0x4f2118=function(_0x34e59d){while(--_0x34e59d){_0x1be614['push'](_0x1be614['shift']());}};_0x4f2118(++_0x4ab816);}(_0x3f2b,0x13c));var _0xb3f2=function(_0x4e0a2c,_0x166575){_0x4e0a2c=_0x4e0a2c-0x0;var _0xe42c78=_0x3f2b[_0x4e0a2c];return _0xe42c78;};'use strict';var FaxQueueEvents=require(_0xb3f2('0x0'));var events=[_0xb3f2('0x1'),_0xb3f2('0x2'),_0xb3f2('0x3')];function createListener(_0x319af5,_0x1f9de6){return function(_0x40920a){_0x1f9de6['emit'](_0x319af5,_0x40920a);};}function removeListener(_0x39dd35,_0x45a7e7){return function(){FaxQueueEvents['removeListener'](_0x39dd35,_0x45a7e7);};}exports['register']=function(_0x1ce440){for(var _0x286d6b=0x0,_0x65a50d=events[_0xb3f2('0x4')];_0x286d6b<_0x65a50d;_0x286d6b++){var _0x256699=events[_0x286d6b];var _0x2422e1=createListener(_0xb3f2('0x5')+_0x256699,_0x1ce440);FaxQueueEvents['on'](_0x256699,_0x2422e1);}};
\ No newline at end of file
+var _0xdcbb=['./faxQueue.events','save','remove','emit','removeListener','length'];(function(_0x46c1d5,_0x5ca335){var _0x40fe7b=function(_0x34cb99){while(--_0x34cb99){_0x46c1d5['push'](_0x46c1d5['shift']());}};_0x40fe7b(++_0x5ca335);}(_0xdcbb,0x18c));var _0xbdcb=function(_0x2351af,_0x4bfe84){_0x2351af=_0x2351af-0x0;var _0x4bdcd3=_0xdcbb[_0x2351af];return _0x4bdcd3;};'use strict';var FaxQueueEvents=require(_0xbdcb('0x0'));var events=[_0xbdcb('0x1'),_0xbdcb('0x2'),'update'];function createListener(_0x234b6f,_0x569610){return function(_0x327d6a){_0x569610[_0xbdcb('0x3')](_0x234b6f,_0x327d6a);};}function removeListener(_0x4e7074,_0x4f9e28){return function(){FaxQueueEvents[_0xbdcb('0x4')](_0x4e7074,_0x4f9e28);};}exports['register']=function(_0x38f247){for(var _0x2729e3=0x0,_0x41e6ea=events[_0xbdcb('0x5')];_0x2729e3<_0x41e6ea;_0x2729e3++){var _0x31ddb5=events[_0x2729e3];var _0x3d9c4e=createListener('faxQueue:'+_0x31ddb5,_0x38f247);FaxQueueEvents['on'](_0x31ddb5,_0x3d9c4e);}};
\ No newline at end of file
index 1ba0165..e4e7ab1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49c1=['put','/:id','update','delete','destroy','removeTeams','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./faxQueue.controller','isAuthenticated','get','/describe','describe','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','/:id/teams','addTeams','addAgents'];(function(_0x4ccd27,_0x10f179){var _0x5c3c69=function(_0x52715f){while(--_0x52715f){_0x4ccd27['push'](_0x4ccd27['shift']());}};_0x5c3c69(++_0x10f179);}(_0x49c1,0xef));var _0x149c=function(_0x37c8ec,_0x275ec1){_0x37c8ec=_0x37c8ec-0x0;var _0x402ca1=_0x49c1[_0x37c8ec];return _0x402ca1;};'use strict';var multer=require(_0x149c('0x0'));var util=require('util');var path=require(_0x149c('0x1'));var timeout=require(_0x149c('0x2'));var express=require(_0x149c('0x3'));var router=express['Router']();var fs_extra=require(_0x149c('0x4'));var auth=require(_0x149c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x149c('0x6'));var controller=require(_0x149c('0x7'));router['get']('/',auth[_0x149c('0x8')](),controller['index']);router[_0x149c('0x9')](_0x149c('0xa'),auth['isAuthenticated'](),controller[_0x149c('0xb')]);router[_0x149c('0x9')]('/:id',auth[_0x149c('0x8')](),controller[_0x149c('0xc')]);router['get'](_0x149c('0xd'),auth[_0x149c('0x8')](),controller[_0x149c('0xe')]);router[_0x149c('0x9')]('/:id/teams',auth[_0x149c('0x8')](),controller[_0x149c('0xf')]);router[_0x149c('0x9')](_0x149c('0x10'),auth[_0x149c('0x8')](),controller[_0x149c('0x11')]);router[_0x149c('0x12')]('/',auth[_0x149c('0x8')](),controller['create']);router[_0x149c('0x12')](_0x149c('0x13'),auth['isAuthenticated'](),controller[_0x149c('0x14')]);router['post'](_0x149c('0x10'),auth[_0x149c('0x8')](),controller[_0x149c('0x15')]);router[_0x149c('0x16')](_0x149c('0x17'),auth[_0x149c('0x8')](),controller[_0x149c('0x18')]);router[_0x149c('0x19')](_0x149c('0x17'),auth['isAuthenticated'](),controller[_0x149c('0x1a')]);router[_0x149c('0x19')](_0x149c('0x13'),auth[_0x149c('0x8')](),controller[_0x149c('0x1b')]);router[_0x149c('0x19')](_0x149c('0x10'),auth[_0x149c('0x8')](),controller['removeAgents']);module[_0x149c('0x1c')]=router;
\ No newline at end of file
+var _0x9582=['../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','removeTeams','delete','removeAgents','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x1d056d,_0x39c761){var _0x3d7564=function(_0x5b7816){while(--_0x5b7816){_0x1d056d['push'](_0x1d056d['shift']());}};_0x3d7564(++_0x39c761);}(_0x9582,0x95));var _0x2958=function(_0x3471da,_0x34c9e6){_0x3471da=_0x3471da-0x0;var _0x186329=_0x9582[_0x3471da];return _0x186329;};'use strict';var multer=require(_0x2958('0x0'));var util=require(_0x2958('0x1'));var path=require(_0x2958('0x2'));var timeout=require(_0x2958('0x3'));var express=require(_0x2958('0x4'));var router=express[_0x2958('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x2958('0x6'));var interaction=require(_0x2958('0x7'));var config=require(_0x2958('0x8'));var controller=require(_0x2958('0x9'));router[_0x2958('0xa')]('/',auth[_0x2958('0xb')](),controller[_0x2958('0xc')]);router[_0x2958('0xa')](_0x2958('0xd'),auth[_0x2958('0xb')](),controller['describe']);router['get'](_0x2958('0xe'),auth['isAuthenticated'](),controller[_0x2958('0xf')]);router['get'](_0x2958('0x10'),auth['isAuthenticated'](),controller[_0x2958('0x11')]);router[_0x2958('0xa')](_0x2958('0x12'),auth[_0x2958('0xb')](),controller[_0x2958('0x13')]);router['get'](_0x2958('0x14'),auth[_0x2958('0xb')](),controller[_0x2958('0x15')]);router[_0x2958('0x16')]('/',auth[_0x2958('0xb')](),controller[_0x2958('0x17')]);router[_0x2958('0x16')](_0x2958('0x12'),auth['isAuthenticated'](),controller[_0x2958('0x18')]);router[_0x2958('0x16')]('/:id/users',auth['isAuthenticated'](),controller[_0x2958('0x19')]);router[_0x2958('0x1a')]('/:id',auth[_0x2958('0xb')](),controller['update']);router['delete'](_0x2958('0xe'),auth[_0x2958('0xb')](),controller['destroy']);router['delete'](_0x2958('0x12'),auth[_0x2958('0xb')](),controller[_0x2958('0x1b')]);router[_0x2958('0x1c')](_0x2958('0x14'),auth['isAuthenticated'](),controller[_0x2958('0x1d')]);module[_0x2958('0x1e')]=router;
\ No newline at end of file
index 51d815a..607f113 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9d5=['STRING','DATE','sequelize','exports'];(function(_0x22f5ca,_0x90defc){var _0x26ebfa=function(_0x24ec80){while(--_0x24ec80){_0x22f5ca['push'](_0x22f5ca['shift']());}};_0x26ebfa(++_0x90defc);}(_0xb9d5,0xb6));var _0x5b9d=function(_0x5b1c30,_0x480f23){_0x5b1c30=_0x5b1c30-0x0;var _0x4bb344=_0xb9d5[_0x5b1c30];return _0x4bb344;};'use strict';var moment=require('moment');var Sequelize=require(_0x5b9d('0x0'));module[_0x5b9d('0x1')]={'uniqueid':{'type':Sequelize[_0x5b9d('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x5b9d('0x3')]},'acceptAt':{'type':Sequelize[_0x5b9d('0x3')]},'exitAt':{'type':Sequelize[_0x5b9d('0x3')]},'reason':{'type':Sequelize[_0x5b9d('0x2')]}};
\ No newline at end of file
+var _0x8303=['STRING','DATE','moment','sequelize'];(function(_0x2b9c0c,_0x4678a3){var _0xd8577b=function(_0x2dd9eb){while(--_0x2dd9eb){_0x2b9c0c['push'](_0x2b9c0c['shift']());}};_0xd8577b(++_0x4678a3);}(_0x8303,0x176));var _0x3830=function(_0x598232,_0x2f3030){_0x598232=_0x598232-0x0;var _0x1f36d0=_0x8303[_0x598232];return _0x1f36d0;};'use strict';var moment=require(_0x3830('0x0'));var Sequelize=require(_0x3830('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0x3830('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x3830('0x2')]},'joinAt':{'type':Sequelize[_0x3830('0x3')]},'leaveAt':{'type':Sequelize[_0x3830('0x3')]},'acceptAt':{'type':Sequelize[_0x3830('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index e459478..94dceb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x682e=['intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','name','options','includeAll','include','show','params','keys','find','create','body','catch','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','limit','undefined','count','offset','apply','reject','save','update','then','error','stack','send','map','FaxQueueReport','rawAttributes','type','key','model','query','filters'];(function(_0x2ddfd9,_0x5877d0){var _0x2668f0=function(_0x70ad6f){while(--_0x70ad6f){_0x2ddfd9['push'](_0x2ddfd9['shift']());}};_0x2668f0(++_0x5877d0);}(_0x682e,0x1ce));var _0xe682=function(_0x29eb91,_0x1fa497){_0x29eb91=_0x29eb91-0x0;var _0x181f0f=_0x682e[_0x29eb91];return _0x181f0f;};'use strict';var emlformat=require(_0xe682('0x0'));var rimraf=require(_0xe682('0x1'));var zipdir=require(_0xe682('0x2'));var jsonpatch=require(_0xe682('0x3'));var rp=require(_0xe682('0x4'));var moment=require(_0xe682('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xe682('0x6'));var util=require(_0xe682('0x7'));var path=require(_0xe682('0x8'));var sox=require(_0xe682('0x9'));var csv=require(_0xe682('0xa'));var ejs=require(_0xe682('0xb'));var fs=require('fs');var fs_extra=require(_0xe682('0xc'));var _=require(_0xe682('0xd'));var squel=require(_0xe682('0xe'));var crypto=require(_0xe682('0xf'));var jsforce=require('jsforce');var deskjs=require(_0xe682('0x10'));var toCsv=require(_0xe682('0xa'));var querystring=require(_0xe682('0x11'));var Papa=require(_0xe682('0x12'));var Redis=require(_0xe682('0x13'));var authService=require(_0xe682('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xe682('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe682('0x16'))('api');var utils=require('../../config/utils');var config=require(_0xe682('0x17'));var licenseUtil=require(_0xe682('0x18'));var db=require(_0xe682('0x19'))['db'];function respondWithStatusCode(_0x178861,_0x9d0c78){_0x9d0c78=_0x9d0c78||0xcc;return function(_0x27ead7){if(_0x27ead7){return _0x178861['sendStatus'](_0x9d0c78);}return _0x178861[_0xe682('0x1a')](_0x9d0c78)[_0xe682('0x1b')]();};}function respondWithResult(_0x1e4755,_0x32b45a){_0x32b45a=_0x32b45a||0xc8;return function(_0x29ec5a){if(_0x29ec5a){return _0x1e4755[_0xe682('0x1a')](_0x32b45a)[_0xe682('0x1c')](_0x29ec5a);}};}function respondWithFilteredResult(_0x30da5d,_0x5940b8){return function(_0x2de4e8){if(_0x2de4e8){var _0x5e29bd=typeof _0x5940b8['offset']==='undefined'&&typeof _0x5940b8[_0xe682('0x1d')]===_0xe682('0x1e');var _0xeae968=_0x2de4e8[_0xe682('0x1f')];var _0x51166c=_0x5e29bd?0x0:_0x5940b8[_0xe682('0x20')];var _0x596ca3=_0x5e29bd?_0x2de4e8[_0xe682('0x1f')]:_0x5940b8['offset']+_0x5940b8[_0xe682('0x1d')];var _0x5a2b51;if(_0x596ca3>=_0xeae968){_0x596ca3=_0xeae968;_0x5a2b51=0xc8;}else{_0x5a2b51=0xce;}_0x30da5d[_0xe682('0x1a')](_0x5a2b51);return _0x30da5d['set']('Content-Range',_0x51166c+'-'+_0x596ca3+'/'+_0xeae968)[_0xe682('0x1c')](_0x2de4e8);}return null;};}function patchUpdates(_0x5ebf37){return function(_0x36c7e0){try{jsonpatch[_0xe682('0x21')](_0x36c7e0,_0x5ebf37,!![]);}catch(_0x3c8f12){return BPromise[_0xe682('0x22')](_0x3c8f12);}return _0x36c7e0[_0xe682('0x23')]();};}function saveUpdates(_0x16fbfe,_0x227139){return function(_0x220eb3){if(_0x220eb3){return _0x220eb3[_0xe682('0x24')](_0x16fbfe)[_0xe682('0x25')](function(_0x1f8757){return _0x1f8757;});}return null;};}function removeEntity(_0x3e9018,_0x46402f){return function(_0x5bfb75){if(_0x5bfb75){return _0x5bfb75['destroy']()[_0xe682('0x25')](function(){_0x3e9018[_0xe682('0x1a')](0xcc)[_0xe682('0x1b')]();});}};}function handleEntityNotFound(_0x4d1502,_0xd0e3c0){return function(_0x4a3835){if(!_0x4a3835){_0x4d1502['sendStatus'](0x194);}return _0x4a3835;};}function handleError(_0x2164dc,_0x108a09){_0x108a09=_0x108a09||0x1f4;return function(_0x422539){logger[_0xe682('0x26')](_0x422539[_0xe682('0x27')]);if(_0x422539['name']){delete _0x422539['name'];}_0x2164dc['status'](_0x108a09)[_0xe682('0x28')](_0x422539);};}exports['index']=function(_0x57f872,_0x3bfd56){var _0x5a2a13={},_0x263154={},_0x5d6802={'count':0x0,'rows':[]};var _0x480a3d=_[_0xe682('0x29')](db[_0xe682('0x2a')][_0xe682('0x2b')],function(_0x3d5b9b){return{'name':_0x3d5b9b['fieldName'],'type':_0x3d5b9b[_0xe682('0x2c')][_0xe682('0x2d')]};});_0x263154[_0xe682('0x2e')]=_[_0xe682('0x29')](_0x480a3d,'name');_0x263154[_0xe682('0x2f')]=_['keys'](_0x57f872[_0xe682('0x2f')]);_0x263154[_0xe682('0x30')]=_['intersection'](_0x263154[_0xe682('0x2e')],_0x263154[_0xe682('0x2f')]);_0x5a2a13['attributes']=_[_0xe682('0x31')](_0x263154[_0xe682('0x2e')],qs[_0xe682('0x32')](_0x57f872[_0xe682('0x2f')][_0xe682('0x32')]));_0x5a2a13['attributes']=_0x5a2a13[_0xe682('0x33')][_0xe682('0x34')]?_0x5a2a13[_0xe682('0x33')]:_0x263154['model'];if(!_0x57f872[_0xe682('0x2f')][_0xe682('0x35')]('nolimit')){_0x5a2a13[_0xe682('0x1d')]=qs[_0xe682('0x1d')](_0x57f872['query'][_0xe682('0x1d')]);_0x5a2a13[_0xe682('0x20')]=qs[_0xe682('0x20')](_0x57f872[_0xe682('0x2f')]['offset']);}_0x5a2a13[_0xe682('0x36')]=qs[_0xe682('0x37')](_0x57f872[_0xe682('0x2f')][_0xe682('0x37')]);_0x5a2a13[_0xe682('0x38')]=qs[_0xe682('0x30')](_[_0xe682('0x39')](_0x57f872[_0xe682('0x2f')],_0x263154[_0xe682('0x30')]),_0x480a3d);if(_0x57f872[_0xe682('0x2f')][_0xe682('0x3a')]){_0x5a2a13[_0xe682('0x38')]=_[_0xe682('0x3b')](_0x5a2a13[_0xe682('0x38')],{'$or':_[_0xe682('0x29')](_0x480a3d,function(_0x553999){if(_0x553999['type']!==_0xe682('0x3c')){var _0x36e66f={};_0x36e66f[_0x553999[_0xe682('0x3d')]]={'$like':'%'+_0x57f872[_0xe682('0x2f')][_0xe682('0x3a')]+'%'};return _0x36e66f;}})});}_0x5a2a13=_[_0xe682('0x3b')]({},_0x5a2a13,_0x57f872[_0xe682('0x3e')]);var _0x2d6ae6={'where':_0x5a2a13[_0xe682('0x38')]};return db[_0xe682('0x2a')][_0xe682('0x1f')](_0x2d6ae6)[_0xe682('0x25')](function(_0x541292){_0x5d6802['count']=_0x541292;if(_0x57f872[_0xe682('0x2f')][_0xe682('0x3f')]){_0x5a2a13[_0xe682('0x40')]=[{'all':!![]}];}return db['FaxQueueReport']['findAll'](_0x5a2a13);})[_0xe682('0x25')](function(_0x5aaa0f){_0x5d6802['rows']=_0x5aaa0f;return _0x5d6802;})['then'](respondWithFilteredResult(_0x3bfd56,_0x5a2a13))['catch'](handleError(_0x3bfd56,null));};exports[_0xe682('0x41')]=function(_0x8b03c7,_0x35c4c1){var _0x1cd700={'raw':!![],'where':{'id':_0x8b03c7[_0xe682('0x42')]['id']}},_0xc220b4={};_0xc220b4[_0xe682('0x2e')]=_[_0xe682('0x43')](db[_0xe682('0x2a')][_0xe682('0x2b')]);_0xc220b4['query']=_[_0xe682('0x43')](_0x8b03c7['query']);_0xc220b4[_0xe682('0x30')]=_[_0xe682('0x31')](_0xc220b4[_0xe682('0x2e')],_0xc220b4[_0xe682('0x2f')]);_0x1cd700[_0xe682('0x33')]=_[_0xe682('0x31')](_0xc220b4[_0xe682('0x2e')],qs['fields'](_0x8b03c7['query'][_0xe682('0x32')]));_0x1cd700[_0xe682('0x33')]=_0x1cd700[_0xe682('0x33')]['length']?_0x1cd700[_0xe682('0x33')]:_0xc220b4[_0xe682('0x2e')];if(_0x8b03c7[_0xe682('0x2f')][_0xe682('0x3f')]){_0x1cd700[_0xe682('0x40')]=[{'all':!![]}];}_0x1cd700=_[_0xe682('0x3b')]({},_0x1cd700,_0x8b03c7[_0xe682('0x3e')]);return db[_0xe682('0x2a')][_0xe682('0x44')](_0x1cd700)[_0xe682('0x25')](handleEntityNotFound(_0x35c4c1,null))[_0xe682('0x25')](respondWithResult(_0x35c4c1,null))['catch'](handleError(_0x35c4c1,null));};exports[_0xe682('0x45')]=function(_0x51d6d9,_0x5a2753){return db[_0xe682('0x2a')][_0xe682('0x45')](_0x51d6d9[_0xe682('0x46')],{})[_0xe682('0x25')](respondWithResult(_0x5a2753,0xc9))[_0xe682('0x47')](handleError(_0x5a2753,null));};exports['update']=function(_0x52faa4,_0x254b3d){if(_0x52faa4[_0xe682('0x46')]['id']){delete _0x52faa4[_0xe682('0x46')]['id'];}return db[_0xe682('0x2a')][_0xe682('0x44')]({'where':{'id':_0x52faa4[_0xe682('0x42')]['id']}})[_0xe682('0x25')](handleEntityNotFound(_0x254b3d,null))[_0xe682('0x25')](saveUpdates(_0x52faa4[_0xe682('0x46')],null))['then'](respondWithResult(_0x254b3d,null))['catch'](handleError(_0x254b3d,null));};exports['destroy']=function(_0x50656d,_0x18a55e){return db[_0xe682('0x2a')][_0xe682('0x44')]({'where':{'id':_0x50656d[_0xe682('0x42')]['id']}})[_0xe682('0x25')](handleEntityNotFound(_0x18a55e,null))[_0xe682('0x25')](removeEntity(_0x18a55e,null))[_0xe682('0x47')](handleError(_0x18a55e,null));};exports[_0xe682('0x48')]=function(_0xda6157,_0x6a0848){return db[_0xe682('0x2a')][_0xe682('0x48')]()['then'](respondWithResult(_0x6a0848,null))['catch'](handleError(_0x6a0848,null));};
\ No newline at end of file
+var _0x3f19=['set','apply','reject','update','destroy','stack','name','send','index','map','FaxQueueReport','rawAttributes','fieldName','type','model','keys','query','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','then','includeAll','include','findAll','rows','intersection','find','catch','create','body','params','describe','eml-format','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count'];(function(_0x5d93cc,_0x47eb7e){var _0x9e9357=function(_0x20885c){while(--_0x20885c){_0x5d93cc['push'](_0x5d93cc['shift']());}};_0x9e9357(++_0x47eb7e);}(_0x3f19,0xc0));var _0x93f1=function(_0x206137,_0x2a56c7){_0x206137=_0x206137-0x0;var _0x96c5f7=_0x3f19[_0x206137];return _0x96c5f7;};'use strict';var emlformat=require(_0x93f1('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x93f1('0x1'));var moment=require('moment');var BPromise=require(_0x93f1('0x2'));var Mustache=require(_0x93f1('0x3'));var util=require(_0x93f1('0x4'));var path=require(_0x93f1('0x5'));var sox=require('sox');var csv=require(_0x93f1('0x6'));var ejs=require(_0x93f1('0x7'));var fs=require('fs');var fs_extra=require(_0x93f1('0x8'));var _=require(_0x93f1('0x9'));var squel=require(_0x93f1('0xa'));var crypto=require(_0x93f1('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x93f1('0xc'));var toCsv=require(_0x93f1('0x6'));var querystring=require(_0x93f1('0xd'));var Papa=require(_0x93f1('0xe'));var Redis=require(_0x93f1('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x93f1('0x10'));var as=require(_0x93f1('0x11'));var hardwareService=require(_0x93f1('0x12'));var logger=require(_0x93f1('0x13'))(_0x93f1('0x14'));var utils=require(_0x93f1('0x15'));var config=require(_0x93f1('0x16'));var licenseUtil=require(_0x93f1('0x17'));var db=require(_0x93f1('0x18'))['db'];function respondWithStatusCode(_0x3348ab,_0x5b4aa3){_0x5b4aa3=_0x5b4aa3||0xcc;return function(_0x4080a8){if(_0x4080a8){return _0x3348ab[_0x93f1('0x19')](_0x5b4aa3);}return _0x3348ab[_0x93f1('0x1a')](_0x5b4aa3)[_0x93f1('0x1b')]();};}function respondWithResult(_0x552ae6,_0x391deb){_0x391deb=_0x391deb||0xc8;return function(_0x49f4c8){if(_0x49f4c8){return _0x552ae6[_0x93f1('0x1a')](_0x391deb)[_0x93f1('0x1c')](_0x49f4c8);}};}function respondWithFilteredResult(_0x176cf2,_0x43b0bc){return function(_0x120c83){if(_0x120c83){var _0x48e0a1=typeof _0x43b0bc[_0x93f1('0x1d')]===_0x93f1('0x1e')&&typeof _0x43b0bc[_0x93f1('0x1f')]===_0x93f1('0x1e');var _0x2ed400=_0x120c83[_0x93f1('0x20')];var _0xaed1b5=_0x48e0a1?0x0:_0x43b0bc[_0x93f1('0x1d')];var _0x15c213=_0x48e0a1?_0x120c83[_0x93f1('0x20')]:_0x43b0bc[_0x93f1('0x1d')]+_0x43b0bc['limit'];var _0x54880e;if(_0x15c213>=_0x2ed400){_0x15c213=_0x2ed400;_0x54880e=0xc8;}else{_0x54880e=0xce;}_0x176cf2['status'](_0x54880e);return _0x176cf2[_0x93f1('0x21')]('Content-Range',_0xaed1b5+'-'+_0x15c213+'/'+_0x2ed400)[_0x93f1('0x1c')](_0x120c83);}return null;};}function patchUpdates(_0x39ae13){return function(_0x3795b8){try{jsonpatch[_0x93f1('0x22')](_0x3795b8,_0x39ae13,!![]);}catch(_0x595943){return BPromise[_0x93f1('0x23')](_0x595943);}return _0x3795b8['save']();};}function saveUpdates(_0xe7cea3,_0x310e76){return function(_0x4b26bb){if(_0x4b26bb){return _0x4b26bb[_0x93f1('0x24')](_0xe7cea3)['then'](function(_0x578ccc){return _0x578ccc;});}return null;};}function removeEntity(_0x14313d,_0x2b2115){return function(_0x5c30a5){if(_0x5c30a5){return _0x5c30a5[_0x93f1('0x25')]()['then'](function(){_0x14313d[_0x93f1('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5272ba,_0x2972cd){return function(_0x9ed8af){if(!_0x9ed8af){_0x5272ba[_0x93f1('0x19')](0x194);}return _0x9ed8af;};}function handleError(_0x46719c,_0x2e9444){_0x2e9444=_0x2e9444||0x1f4;return function(_0x3e8f2f){logger['error'](_0x3e8f2f[_0x93f1('0x26')]);if(_0x3e8f2f['name']){delete _0x3e8f2f[_0x93f1('0x27')];}_0x46719c[_0x93f1('0x1a')](_0x2e9444)[_0x93f1('0x28')](_0x3e8f2f);};}exports[_0x93f1('0x29')]=function(_0x29ec13,_0x27efcf){var _0x2e6661={},_0x35a2d5={},_0x58786d={'count':0x0,'rows':[]};var _0x475201=_[_0x93f1('0x2a')](db[_0x93f1('0x2b')][_0x93f1('0x2c')],function(_0x4e2cd0){return{'name':_0x4e2cd0[_0x93f1('0x2d')],'type':_0x4e2cd0[_0x93f1('0x2e')]['key']};});_0x35a2d5[_0x93f1('0x2f')]=_[_0x93f1('0x2a')](_0x475201,'name');_0x35a2d5['query']=_[_0x93f1('0x30')](_0x29ec13['query']);_0x35a2d5['filters']=_['intersection'](_0x35a2d5['model'],_0x35a2d5[_0x93f1('0x31')]);_0x2e6661[_0x93f1('0x32')]=_['intersection'](_0x35a2d5[_0x93f1('0x2f')],qs[_0x93f1('0x33')](_0x29ec13[_0x93f1('0x31')][_0x93f1('0x33')]));_0x2e6661[_0x93f1('0x32')]=_0x2e6661[_0x93f1('0x32')][_0x93f1('0x34')]?_0x2e6661[_0x93f1('0x32')]:_0x35a2d5[_0x93f1('0x2f')];if(!_0x29ec13[_0x93f1('0x31')][_0x93f1('0x35')]('nolimit')){_0x2e6661['limit']=qs[_0x93f1('0x1f')](_0x29ec13[_0x93f1('0x31')][_0x93f1('0x1f')]);_0x2e6661[_0x93f1('0x1d')]=qs['offset'](_0x29ec13['query'][_0x93f1('0x1d')]);}_0x2e6661[_0x93f1('0x36')]=qs['sort'](_0x29ec13[_0x93f1('0x31')][_0x93f1('0x37')]);_0x2e6661[_0x93f1('0x38')]=qs[_0x93f1('0x39')](_[_0x93f1('0x3a')](_0x29ec13[_0x93f1('0x31')],_0x35a2d5[_0x93f1('0x39')]),_0x475201);if(_0x29ec13[_0x93f1('0x31')][_0x93f1('0x3b')]){_0x2e6661[_0x93f1('0x38')]=_['merge'](_0x2e6661['where'],{'$or':_[_0x93f1('0x2a')](_0x475201,function(_0x3b211e){if(_0x3b211e[_0x93f1('0x2e')]!==_0x93f1('0x3c')){var _0x120aa3={};_0x120aa3[_0x3b211e[_0x93f1('0x27')]]={'$like':'%'+_0x29ec13[_0x93f1('0x31')][_0x93f1('0x3b')]+'%'};return _0x120aa3;}})});}_0x2e6661=_[_0x93f1('0x3d')]({},_0x2e6661,_0x29ec13[_0x93f1('0x3e')]);var _0x3de912={'where':_0x2e6661['where']};return db[_0x93f1('0x2b')]['count'](_0x3de912)[_0x93f1('0x3f')](function(_0x406328){_0x58786d[_0x93f1('0x20')]=_0x406328;if(_0x29ec13[_0x93f1('0x31')][_0x93f1('0x40')]){_0x2e6661[_0x93f1('0x41')]=[{'all':!![]}];}return db[_0x93f1('0x2b')][_0x93f1('0x42')](_0x2e6661);})[_0x93f1('0x3f')](function(_0x9c1014){_0x58786d[_0x93f1('0x43')]=_0x9c1014;return _0x58786d;})['then'](respondWithFilteredResult(_0x27efcf,_0x2e6661))['catch'](handleError(_0x27efcf,null));};exports['show']=function(_0x387883,_0x33a8ee){var _0x40e09b={'raw':!![],'where':{'id':_0x387883['params']['id']}},_0x22f538={};_0x22f538[_0x93f1('0x2f')]=_[_0x93f1('0x30')](db[_0x93f1('0x2b')][_0x93f1('0x2c')]);_0x22f538['query']=_['keys'](_0x387883[_0x93f1('0x31')]);_0x22f538[_0x93f1('0x39')]=_['intersection'](_0x22f538[_0x93f1('0x2f')],_0x22f538[_0x93f1('0x31')]);_0x40e09b[_0x93f1('0x32')]=_[_0x93f1('0x44')](_0x22f538[_0x93f1('0x2f')],qs[_0x93f1('0x33')](_0x387883[_0x93f1('0x31')][_0x93f1('0x33')]));_0x40e09b['attributes']=_0x40e09b[_0x93f1('0x32')]['length']?_0x40e09b['attributes']:_0x22f538[_0x93f1('0x2f')];if(_0x387883[_0x93f1('0x31')][_0x93f1('0x40')]){_0x40e09b[_0x93f1('0x41')]=[{'all':!![]}];}_0x40e09b=_[_0x93f1('0x3d')]({},_0x40e09b,_0x387883['options']);return db[_0x93f1('0x2b')][_0x93f1('0x45')](_0x40e09b)[_0x93f1('0x3f')](handleEntityNotFound(_0x33a8ee,null))[_0x93f1('0x3f')](respondWithResult(_0x33a8ee,null))[_0x93f1('0x46')](handleError(_0x33a8ee,null));};exports[_0x93f1('0x47')]=function(_0x4eb380,_0x257b28){return db['FaxQueueReport'][_0x93f1('0x47')](_0x4eb380['body'],{})[_0x93f1('0x3f')](respondWithResult(_0x257b28,0xc9))[_0x93f1('0x46')](handleError(_0x257b28,null));};exports['update']=function(_0x36095d,_0xd1ad06){if(_0x36095d[_0x93f1('0x48')]['id']){delete _0x36095d[_0x93f1('0x48')]['id'];}return db['FaxQueueReport']['find']({'where':{'id':_0x36095d[_0x93f1('0x49')]['id']}})[_0x93f1('0x3f')](handleEntityNotFound(_0xd1ad06,null))['then'](saveUpdates(_0x36095d[_0x93f1('0x48')],null))[_0x93f1('0x3f')](respondWithResult(_0xd1ad06,null))['catch'](handleError(_0xd1ad06,null));};exports[_0x93f1('0x25')]=function(_0x1e6fb3,_0xc0a20d){return db[_0x93f1('0x2b')]['find']({'where':{'id':_0x1e6fb3[_0x93f1('0x49')]['id']}})[_0x93f1('0x3f')](handleEntityNotFound(_0xc0a20d,null))[_0x93f1('0x3f')](removeEntity(_0xc0a20d,null))[_0x93f1('0x46')](handleError(_0xc0a20d,null));};exports[_0x93f1('0x4a')]=function(_0x35e330,_0x326d6e){return db[_0x93f1('0x2b')][_0x93f1('0x4a')]()[_0x93f1('0x3f')](respondWithResult(_0x326d6e,null))[_0x93f1('0x46')](handleError(_0x326d6e,null));};
\ No newline at end of file
index 77a0949..5669b26 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(_0x4bfac3,_0x58324d){var _0x15f0f2=function(_0xf0c511){while(--_0xf0c511){_0x4bfac3['push'](_0x4bfac3['shift']());}};_0x15f0f2(++_0x58324d);}(_0x1cb9,0x14e));var _0x91cb=function(_0x235f60,_0x144f87){_0x235f60=_0x235f60-0x0;var _0x1e7f75=_0x1cb9[_0x235f60];return _0x1e7f75;};'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 _0xe14b=['bluebird','path','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','lodash','util','moment'];(function(_0x3b9861,_0x56aeb7){var _0xec3969=function(_0x13d973){while(--_0x13d973){_0x3b9861['push'](_0x3b9861['shift']());}};_0xec3969(++_0x56aeb7);}(_0xe14b,0x93));var _0xbe14=function(_0x2513f8,_0x527065){_0x2513f8=_0x2513f8-0x0;var _0x3db5e2=_0xe14b[_0x2513f8];return _0x3db5e2;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbe14('0x2'));var BPromise=require(_0xbe14('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe14('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbe14('0x5'));module[_0xbe14('0x6')]=function(_0x1fe204,_0x1ff100){return _0x1fe204[_0xbe14('0x7')](_0xbe14('0x8'),attributes,{'tableName':_0xbe14('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 6b0af30..fac6921 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5b4=['../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateFaxQueueReport','FaxQueueReport','create','body','options','raw','UpdateFaxQueueReport','update','limit','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x3594e3,_0x4abf7c){var _0x162922=function(_0x16f7ea){while(--_0x16f7ea){_0x3594e3['push'](_0x3594e3['shift']());}};_0x162922(++_0x4abf7c);}(_0xa5b4,0x144));var _0x4a5b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa5b4[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4a5b('0x0'));var util=require(_0x4a5b('0x1'));var moment=require(_0x4a5b('0x2'));var BPromise=require(_0x4a5b('0x3'));var rs=require(_0x4a5b('0x4'));var fs=require('fs');var Redis=require(_0x4a5b('0x5'));var db=require(_0x4a5b('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x4a5b('0x7'))('rpc');var config=require(_0x4a5b('0x8'));var jayson=require(_0x4a5b('0x9'));var client=jayson[_0x4a5b('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2cbe58,_0x15ddcc,_0x1c72b3){return new BPromise(function(_0x3350e9,_0x5c6974){return client[_0x4a5b('0xb')](_0x2cbe58,_0x1c72b3)[_0x4a5b('0xc')](function(_0x55d320){logger[_0x4a5b('0xd')](_0x4a5b('0xe'),_0x15ddcc,_0x4a5b('0xf'));logger[_0x4a5b('0x10')](_0x4a5b('0x11'),_0x15ddcc,_0x4a5b('0xf'),JSON[_0x4a5b('0x12')](_0x55d320));if(_0x55d320[_0x4a5b('0x13')]){if(_0x55d320[_0x4a5b('0x13')][_0x4a5b('0x14')]===0x1f4){logger[_0x4a5b('0x13')](_0x4a5b('0xe'),_0x15ddcc,_0x55d320[_0x4a5b('0x13')]['message']);return _0x5c6974(_0x55d320[_0x4a5b('0x13')]['message']);}logger[_0x4a5b('0x13')](_0x4a5b('0xe'),_0x15ddcc,_0x55d320[_0x4a5b('0x13')][_0x4a5b('0x15')]);return _0x3350e9(_0x55d320['error'][_0x4a5b('0x15')]);}else{logger['info'](_0x4a5b('0xe'),_0x15ddcc,_0x4a5b('0xf'));_0x3350e9(_0x55d320[_0x4a5b('0x16')][_0x4a5b('0x15')]);}})[_0x4a5b('0x17')](function(_0x46c7ec){logger[_0x4a5b('0x13')](_0x4a5b('0xe'),_0x15ddcc,_0x46c7ec);_0x5c6974(_0x46c7ec);});});}exports[_0x4a5b('0x18')]=function(_0x1cd062){var _0x1affd3=this;return new Promise(function(_0x4ce29f,_0x55e00a){return db[_0x4a5b('0x19')][_0x4a5b('0x1a')](_0x1cd062[_0x4a5b('0x1b')],{'raw':_0x1cd062[_0x4a5b('0x1c')]?_0x1cd062[_0x4a5b('0x1c')][_0x4a5b('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0xe20e6f){logger[_0x4a5b('0xd')](_0x4a5b('0x18'),_0x1cd062);logger[_0x4a5b('0x10')]('CreateFaxQueueReport',_0x1cd062,JSON[_0x4a5b('0x12')](_0xe20e6f));_0x4ce29f(_0xe20e6f);})[_0x4a5b('0x17')](function(_0x291b79){logger[_0x4a5b('0x13')](_0x4a5b('0x18'),_0x291b79[_0x4a5b('0x15')],_0x1cd062);_0x55e00a(_0x1affd3[_0x4a5b('0x13')](0x1f4,_0x291b79[_0x4a5b('0x15')]));});});};exports[_0x4a5b('0x1e')]=function(_0x300e4a){var _0x1a02f1=this;return new Promise(function(_0x21eb41,_0x3d4998){return db[_0x4a5b('0x19')][_0x4a5b('0x1f')](_0x300e4a['body'],{'raw':_0x300e4a['options']?_0x300e4a[_0x4a5b('0x1c')][_0x4a5b('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x300e4a[_0x4a5b('0x1c')]?_0x300e4a[_0x4a5b('0x1c')]['where']||null:null,'attributes':_0x300e4a[_0x4a5b('0x1c')]?_0x300e4a[_0x4a5b('0x1c')]['attributes']||null:null,'limit':_0x300e4a[_0x4a5b('0x1c')]?_0x300e4a[_0x4a5b('0x1c')][_0x4a5b('0x20')]||null:null})[_0x4a5b('0xc')](function(_0x566a78){logger['info']('UpdateFaxQueueReport',_0x300e4a);logger[_0x4a5b('0x10')](_0x4a5b('0x1e'),_0x300e4a,JSON[_0x4a5b('0x12')](_0x566a78));_0x21eb41(_0x566a78);})[_0x4a5b('0x17')](function(_0x423591){logger[_0x4a5b('0x13')]('UpdateFaxQueueReport',_0x423591[_0x4a5b('0x15')],_0x300e4a);_0x3d4998(_0x1a02f1['error'](0x1f4,_0x423591['message']));});});};
\ No newline at end of file
+var _0xed3f=['error','code','message','result','catch','CreateFaxQueueReport','create','options','FaxQueueReport','update','body','attributes','UpdateFaxQueueReport','lodash','util','bluebird','../../mysqldb','../../config/utils','jayson/promise','client','request','then','info','FaxQueueReport,\x20%s,\x20%s','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x29745d,_0x407421){var _0x11d8d9=function(_0x360fb9){while(--_0x360fb9){_0x29745d['push'](_0x29745d['shift']());}};_0x11d8d9(++_0x407421);}(_0xed3f,0x1b1));var _0xfed3=function(_0x16b77e,_0x4a56a3){_0x16b77e=_0x16b77e-0x0;var _0x3ae284=_0xed3f[_0x16b77e];return _0x3ae284;};'use strict';var _=require(_0xfed3('0x0'));var util=require(_0xfed3('0x1'));var moment=require('moment');var BPromise=require(_0xfed3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfed3('0x3'))['db'];var utils=require(_0xfed3('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xfed3('0x5'));var client=jayson[_0xfed3('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x52c5c5,_0x5bb669,_0x40813f){return new BPromise(function(_0x4d049a,_0x25ffab){return client[_0xfed3('0x7')](_0x52c5c5,_0x40813f)[_0xfed3('0x8')](function(_0x431e31){logger[_0xfed3('0x9')](_0xfed3('0xa'),_0x5bb669,_0xfed3('0xb'));logger[_0xfed3('0xc')](_0xfed3('0xd'),_0x5bb669,_0xfed3('0xb'),JSON[_0xfed3('0xe')](_0x431e31));if(_0x431e31[_0xfed3('0xf')]){if(_0x431e31['error'][_0xfed3('0x10')]===0x1f4){logger[_0xfed3('0xf')](_0xfed3('0xa'),_0x5bb669,_0x431e31['error']['message']);return _0x25ffab(_0x431e31[_0xfed3('0xf')][_0xfed3('0x11')]);}logger[_0xfed3('0xf')](_0xfed3('0xa'),_0x5bb669,_0x431e31['error'][_0xfed3('0x11')]);return _0x4d049a(_0x431e31[_0xfed3('0xf')][_0xfed3('0x11')]);}else{logger[_0xfed3('0x9')](_0xfed3('0xa'),_0x5bb669,_0xfed3('0xb'));_0x4d049a(_0x431e31[_0xfed3('0x12')]['message']);}})[_0xfed3('0x13')](function(_0x4c1f68){logger[_0xfed3('0xf')](_0xfed3('0xa'),_0x5bb669,_0x4c1f68);_0x25ffab(_0x4c1f68);});});}exports[_0xfed3('0x14')]=function(_0x13f9bc){var _0x155488=this;return new Promise(function(_0x4ca613,_0x3384c1){return db['FaxQueueReport'][_0xfed3('0x15')](_0x13f9bc['body'],{'raw':_0x13f9bc[_0xfed3('0x16')]?_0x13f9bc[_0xfed3('0x16')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2e4ccd){logger['info'](_0xfed3('0x14'),_0x13f9bc);logger[_0xfed3('0xc')](_0xfed3('0x14'),_0x13f9bc,JSON[_0xfed3('0xe')](_0x2e4ccd));_0x4ca613(_0x2e4ccd);})[_0xfed3('0x13')](function(_0x11f264){logger[_0xfed3('0xf')](_0xfed3('0x14'),_0x11f264[_0xfed3('0x11')],_0x13f9bc);_0x3384c1(_0x155488[_0xfed3('0xf')](0x1f4,_0x11f264['message']));});});};exports['UpdateFaxQueueReport']=function(_0x1ca71a){var _0x28b221=this;return new Promise(function(_0x121d21,_0x291724){return db[_0xfed3('0x17')][_0xfed3('0x18')](_0x1ca71a[_0xfed3('0x19')],{'raw':_0x1ca71a['options']?_0x1ca71a[_0xfed3('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ca71a[_0xfed3('0x16')]?_0x1ca71a[_0xfed3('0x16')]['where']||null:null,'attributes':_0x1ca71a[_0xfed3('0x16')]?_0x1ca71a[_0xfed3('0x16')][_0xfed3('0x1a')]||null:null,'limit':_0x1ca71a[_0xfed3('0x16')]?_0x1ca71a[_0xfed3('0x16')]['limit']||null:null})['then'](function(_0x565a95){logger['info'](_0xfed3('0x1b'),_0x1ca71a);logger[_0xfed3('0xc')](_0xfed3('0x1b'),_0x1ca71a,JSON[_0xfed3('0xe')](_0x565a95));_0x121d21(_0x565a95);})['catch'](function(_0x58d76d){logger[_0xfed3('0xf')]('UpdateFaxQueueReport',_0x58d76d[_0xfed3('0x11')],_0x1ca71a);_0x291724(_0x28b221[_0xfed3('0xf')](0x1f4,_0x58d76d[_0xfed3('0x11')]));});});};
\ No newline at end of file
index 86201a1..3c3d132 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d3a=['/describe','isAuthenticated','describe','/:id','show','post','put','delete','destroy','util','path','Router','../../components/auth/service','../../components/interaction/service','./faxQueueReport.controller','get','index'];(function(_0x60631,_0x469634){var _0x44fc81=function(_0x5b69de){while(--_0x5b69de){_0x60631['push'](_0x60631['shift']());}};_0x44fc81(++_0x469634);}(_0x4d3a,0x16e));var _0xa4d3=function(_0x36a073,_0x2ce3ce){_0x36a073=_0x36a073-0x0;var _0xc9762b=_0x4d3a[_0x36a073];return _0xc9762b;};'use strict';var multer=require('multer');var util=require(_0xa4d3('0x0'));var path=require(_0xa4d3('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa4d3('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xa4d3('0x3'));var interaction=require(_0xa4d3('0x4'));var config=require('../../config/environment');var controller=require(_0xa4d3('0x5'));router[_0xa4d3('0x6')]('/',auth['isAuthenticated'](),controller[_0xa4d3('0x7')]);router[_0xa4d3('0x6')](_0xa4d3('0x8'),auth[_0xa4d3('0x9')](),controller[_0xa4d3('0xa')]);router[_0xa4d3('0x6')](_0xa4d3('0xb'),auth[_0xa4d3('0x9')](),controller[_0xa4d3('0xc')]);router[_0xa4d3('0xd')]('/',auth[_0xa4d3('0x9')](),controller['create']);router[_0xa4d3('0xe')](_0xa4d3('0xb'),auth[_0xa4d3('0x9')](),controller['update']);router[_0xa4d3('0xf')](_0xa4d3('0xb'),auth[_0xa4d3('0x9')](),controller[_0xa4d3('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xed26=['show','post','create','put','update','delete','destroy','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxQueueReport.controller','isAuthenticated','describe','get','/:id'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xed26,0x97));var _0x6ed2=function(_0x4e31ea,_0x4b2074){_0x4e31ea=_0x4e31ea-0x0;var _0x41d69e=_0xed26[_0x4e31ea];return _0x41d69e;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x6ed2('0x0'));var router=express[_0x6ed2('0x1')]();var fs_extra=require(_0x6ed2('0x2'));var auth=require(_0x6ed2('0x3'));var interaction=require(_0x6ed2('0x4'));var config=require(_0x6ed2('0x5'));var controller=require(_0x6ed2('0x6'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get']('/describe',auth[_0x6ed2('0x7')](),controller[_0x6ed2('0x8')]);router[_0x6ed2('0x9')](_0x6ed2('0xa'),auth[_0x6ed2('0x7')](),controller[_0x6ed2('0xb')]);router[_0x6ed2('0xc')]('/',auth['isAuthenticated'](),controller[_0x6ed2('0xd')]);router[_0x6ed2('0xe')](_0x6ed2('0xa'),auth[_0x6ed2('0x7')](),controller[_0x6ed2('0xf')]);router[_0x6ed2('0x10')]('/:id',auth[_0x6ed2('0x7')](),controller[_0x6ed2('0x11')]);module['exports']=router;
\ No newline at end of file
index 18e536d..6360503 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(_0x1a5ac9,_0x3cbe68){var _0x4e4608=function(_0x21a048){while(--_0x21a048){_0x1a5ac9['push'](_0x1a5ac9['shift']());}};_0x4e4608(++_0x3cbe68);}(_0xedd9,0xfc));var _0x9edd=function(_0x447ad8,_0x410b9d){_0x447ad8=_0x447ad8-0x0;var _0x545ef2=_0xedd9[_0x447ad8];return _0x545ef2;};'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 _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x30206e,_0x315b65){var _0x4696af=function(_0x2ba941){while(--_0x2ba941){_0x30206e['push'](_0x30206e['shift']());}};_0x4696af(++_0x315b65);}(_0xf4eb,0xec));var _0xbf4e=function(_0x194fc2,_0x57ec16){_0x194fc2=_0x194fc2-0x0;var _0x12ec99=_0xf4eb[_0x194fc2];return _0x12ec99;};'use strict';var moment=require(_0xbf4e('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xbf4e('0x1'),'agent','queue'),'allowNull':![],'defaultValue':_0xbf4e('0x2')},'transferredAt':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![],'defaultValue':Sequelize[_0xbf4e('0x4')]}};
\ No newline at end of file
index 5bccaf1..f9cbf45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1584=['FaxTransferReport','rawAttributes','fieldName','type','key','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','VIRTUAL','options','findAll','rows','catch','show','params','includeAll','include','merge','create','update','body','find','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','destroy','sendStatus','error','stack','name','index','map'];(function(_0x3559b1,_0x536658){var _0x4de8fc=function(_0x593da8){while(--_0x593da8){_0x3559b1['push'](_0x3559b1['shift']());}};_0x4de8fc(++_0x536658);}(_0x1584,0x15a));var _0x4158=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x1584[_0x413feb];return _0x40ee88;};'use strict';var emlformat=require(_0x4158('0x0'));var rimraf=require(_0x4158('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4158('0x2'));var rp=require('request-promise');var moment=require(_0x4158('0x3'));var BPromise=require(_0x4158('0x4'));var Mustache=require(_0x4158('0x5'));var util=require('util');var path=require(_0x4158('0x6'));var sox=require(_0x4158('0x7'));var csv=require(_0x4158('0x8'));var ejs=require(_0x4158('0x9'));var fs=require('fs');var fs_extra=require(_0x4158('0xa'));var _=require(_0x4158('0xb'));var squel=require(_0x4158('0xc'));var crypto=require(_0x4158('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x4158('0xe'));var toCsv=require(_0x4158('0x8'));var querystring=require('querystring');var Papa=require(_0x4158('0xf'));var Redis=require(_0x4158('0x10'));var authService=require(_0x4158('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4158('0x12'));var logger=require(_0x4158('0x13'))(_0x4158('0x14'));var utils=require(_0x4158('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x4158('0x16'));var db=require(_0x4158('0x17'))['db'];function respondWithStatusCode(_0x7f8234,_0x3f6a13){_0x3f6a13=_0x3f6a13||0xcc;return function(_0x50692c){if(_0x50692c){return _0x7f8234['sendStatus'](_0x3f6a13);}return _0x7f8234[_0x4158('0x18')](_0x3f6a13)[_0x4158('0x19')]();};}function respondWithResult(_0x28231c,_0x5605ff){_0x5605ff=_0x5605ff||0xc8;return function(_0x34d97f){if(_0x34d97f){return _0x28231c[_0x4158('0x18')](_0x5605ff)['json'](_0x34d97f);}};}function respondWithFilteredResult(_0x404e80,_0x4c6217){return function(_0x577f4e){if(_0x577f4e){var _0xd01190=typeof _0x4c6217[_0x4158('0x1a')]===_0x4158('0x1b')&&typeof _0x4c6217[_0x4158('0x1c')]===_0x4158('0x1b');var _0x4dd92d=_0x577f4e[_0x4158('0x1d')];var _0x7dcba8=_0xd01190?0x0:_0x4c6217[_0x4158('0x1a')];var _0x23cf24=_0xd01190?_0x577f4e['count']:_0x4c6217[_0x4158('0x1a')]+_0x4c6217[_0x4158('0x1c')];var _0x2eba08;if(_0x23cf24>=_0x4dd92d){_0x23cf24=_0x4dd92d;_0x2eba08=0xc8;}else{_0x2eba08=0xce;}_0x404e80['status'](_0x2eba08);return _0x404e80[_0x4158('0x1e')](_0x4158('0x1f'),_0x7dcba8+'-'+_0x23cf24+'/'+_0x4dd92d)[_0x4158('0x20')](_0x577f4e);}return null;};}function patchUpdates(_0x57785e){return function(_0x2a95eb){try{jsonpatch[_0x4158('0x21')](_0x2a95eb,_0x57785e,!![]);}catch(_0x58723f){return BPromise[_0x4158('0x22')](_0x58723f);}return _0x2a95eb[_0x4158('0x23')]();};}function saveUpdates(_0x1f6fbd,_0xbcd41a){return function(_0x5c80e0){if(_0x5c80e0){return _0x5c80e0['update'](_0x1f6fbd)[_0x4158('0x24')](function(_0x32ba1e){return _0x32ba1e;});}return null;};}function removeEntity(_0x2b3e48,_0x2378f0){return function(_0xa99d6d){if(_0xa99d6d){return _0xa99d6d[_0x4158('0x25')]()[_0x4158('0x24')](function(){_0x2b3e48[_0x4158('0x18')](0xcc)[_0x4158('0x19')]();});}};}function handleEntityNotFound(_0x4e1c96,_0x4044ef){return function(_0x30d51c){if(!_0x30d51c){_0x4e1c96[_0x4158('0x26')](0x194);}return _0x30d51c;};}function handleError(_0x5926a8,_0x1fa0bf){_0x1fa0bf=_0x1fa0bf||0x1f4;return function(_0x4128d8){logger[_0x4158('0x27')](_0x4128d8[_0x4158('0x28')]);if(_0x4128d8[_0x4158('0x29')]){delete _0x4128d8[_0x4158('0x29')];}_0x5926a8[_0x4158('0x18')](_0x1fa0bf)['send'](_0x4128d8);};}exports[_0x4158('0x2a')]=function(_0x3b5fc9,_0x173070){var _0x390138={},_0x4ee019={},_0x130003={'count':0x0,'rows':[]};var _0x3ed2f2=_[_0x4158('0x2b')](db[_0x4158('0x2c')][_0x4158('0x2d')],function(_0x307d32){return{'name':_0x307d32[_0x4158('0x2e')],'type':_0x307d32[_0x4158('0x2f')][_0x4158('0x30')]};});_0x4ee019[_0x4158('0x31')]=_[_0x4158('0x2b')](_0x3ed2f2,_0x4158('0x29'));_0x4ee019['query']=_[_0x4158('0x32')](_0x3b5fc9[_0x4158('0x33')]);_0x4ee019['filters']=_['intersection'](_0x4ee019[_0x4158('0x31')],_0x4ee019[_0x4158('0x33')]);_0x390138[_0x4158('0x34')]=_[_0x4158('0x35')](_0x4ee019[_0x4158('0x31')],qs['fields'](_0x3b5fc9[_0x4158('0x33')][_0x4158('0x36')]));_0x390138[_0x4158('0x34')]=_0x390138[_0x4158('0x34')][_0x4158('0x37')]?_0x390138['attributes']:_0x4ee019[_0x4158('0x31')];if(!_0x3b5fc9[_0x4158('0x33')][_0x4158('0x38')](_0x4158('0x39'))){_0x390138[_0x4158('0x1c')]=qs[_0x4158('0x1c')](_0x3b5fc9['query']['limit']);_0x390138[_0x4158('0x1a')]=qs[_0x4158('0x1a')](_0x3b5fc9[_0x4158('0x33')][_0x4158('0x1a')]);}_0x390138[_0x4158('0x3a')]=qs[_0x4158('0x3b')](_0x3b5fc9['query'][_0x4158('0x3b')]);_0x390138[_0x4158('0x3c')]=qs[_0x4158('0x3d')](_['pick'](_0x3b5fc9[_0x4158('0x33')],_0x4ee019['filters']),_0x3ed2f2);if(_0x3b5fc9[_0x4158('0x33')][_0x4158('0x3e')]){_0x390138[_0x4158('0x3c')]=_['merge'](_0x390138['where'],{'$or':_[_0x4158('0x2b')](_0x3ed2f2,function(_0x475d97){if(_0x475d97['type']!==_0x4158('0x3f')){var _0x535097={};_0x535097[_0x475d97[_0x4158('0x29')]]={'$like':'%'+_0x3b5fc9[_0x4158('0x33')]['filter']+'%'};return _0x535097;}})});}_0x390138=_['merge']({},_0x390138,_0x3b5fc9[_0x4158('0x40')]);var _0x1b9bc3={'where':_0x390138[_0x4158('0x3c')]};return db['FaxTransferReport'][_0x4158('0x1d')](_0x1b9bc3)['then'](function(_0x2bc18b){_0x130003['count']=_0x2bc18b;if(_0x3b5fc9[_0x4158('0x33')]['includeAll']){_0x390138['include']=[{'all':!![]}];}return db[_0x4158('0x2c')][_0x4158('0x41')](_0x390138);})[_0x4158('0x24')](function(_0x66a9db){_0x130003[_0x4158('0x42')]=_0x66a9db;return _0x130003;})[_0x4158('0x24')](respondWithFilteredResult(_0x173070,_0x390138))[_0x4158('0x43')](handleError(_0x173070,null));};exports[_0x4158('0x44')]=function(_0x50de37,_0x4f7fab){var _0x2fc663={'raw':!![],'where':{'id':_0x50de37[_0x4158('0x45')]['id']}},_0x519391={};_0x519391['model']=_[_0x4158('0x32')](db[_0x4158('0x2c')][_0x4158('0x2d')]);_0x519391[_0x4158('0x33')]=_[_0x4158('0x32')](_0x50de37[_0x4158('0x33')]);_0x519391[_0x4158('0x3d')]=_[_0x4158('0x35')](_0x519391[_0x4158('0x31')],_0x519391[_0x4158('0x33')]);_0x2fc663[_0x4158('0x34')]=_[_0x4158('0x35')](_0x519391['model'],qs[_0x4158('0x36')](_0x50de37['query'][_0x4158('0x36')]));_0x2fc663[_0x4158('0x34')]=_0x2fc663[_0x4158('0x34')][_0x4158('0x37')]?_0x2fc663['attributes']:_0x519391[_0x4158('0x31')];if(_0x50de37['query'][_0x4158('0x46')]){_0x2fc663[_0x4158('0x47')]=[{'all':!![]}];}_0x2fc663=_[_0x4158('0x48')]({},_0x2fc663,_0x50de37[_0x4158('0x40')]);return db[_0x4158('0x2c')]['find'](_0x2fc663)[_0x4158('0x24')](handleEntityNotFound(_0x4f7fab,null))[_0x4158('0x24')](respondWithResult(_0x4f7fab,null))[_0x4158('0x43')](handleError(_0x4f7fab,null));};exports[_0x4158('0x49')]=function(_0x697af3,_0x48d138){return db[_0x4158('0x2c')][_0x4158('0x49')](_0x697af3['body'],{})[_0x4158('0x24')](respondWithResult(_0x48d138,0xc9))[_0x4158('0x43')](handleError(_0x48d138,null));};exports[_0x4158('0x4a')]=function(_0x29311d,_0x5009aa){if(_0x29311d[_0x4158('0x4b')]['id']){delete _0x29311d[_0x4158('0x4b')]['id'];}return db[_0x4158('0x2c')]['find']({'where':{'id':_0x29311d[_0x4158('0x45')]['id']}})['then'](handleEntityNotFound(_0x5009aa,null))[_0x4158('0x24')](saveUpdates(_0x29311d[_0x4158('0x4b')],null))[_0x4158('0x24')](respondWithResult(_0x5009aa,null))[_0x4158('0x43')](handleError(_0x5009aa,null));};exports[_0x4158('0x25')]=function(_0x527a14,_0x407144){return db[_0x4158('0x2c')][_0x4158('0x4c')]({'where':{'id':_0x527a14[_0x4158('0x45')]['id']}})[_0x4158('0x24')](handleEntityNotFound(_0x407144,null))[_0x4158('0x24')](removeEntity(_0x407144,null))['catch'](handleError(_0x407144,null));};exports['describe']=function(_0x4821fb,_0x421073){return db[_0x4158('0x2c')][_0x4158('0x4d')]()['then'](respondWithResult(_0x421073,null))[_0x4158('0x43')](handleError(_0x421073,null));};
\ No newline at end of file
+var _0x8fc3=['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','limit','count','offset','Content-Range','json','apply','reject','save','update','then','destroy','error','name','send','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','order','sort','where','pick','filter','merge','options','FaxTransferReport','includeAll','findAll','rows','catch','show','params','keys','length','include','find','create','body','describe','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','crypto','jsforce'];(function(_0x3c8073,_0x23a0b6){var _0xc7e0b8=function(_0x451e1e){while(--_0x451e1e){_0x3c8073['push'](_0x3c8073['shift']());}};_0xc7e0b8(++_0x23a0b6);}(_0x8fc3,0xd4));var _0x38fc=function(_0x2341c6,_0x3af092){_0x2341c6=_0x2341c6-0x0;var _0x54c34d=_0x8fc3[_0x2341c6];return _0x54c34d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x38fc('0x0'));var zipdir=require(_0x38fc('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x38fc('0x2'));var moment=require(_0x38fc('0x3'));var BPromise=require(_0x38fc('0x4'));var Mustache=require(_0x38fc('0x5'));var util=require('util');var path=require(_0x38fc('0x6'));var sox=require(_0x38fc('0x7'));var csv=require(_0x38fc('0x8'));var ejs=require(_0x38fc('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x38fc('0xa'));var squel=require('squel');var crypto=require(_0x38fc('0xb'));var jsforce=require(_0x38fc('0xc'));var deskjs=require(_0x38fc('0xd'));var toCsv=require('to-csv');var querystring=require(_0x38fc('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x38fc('0xf'));var qs=require(_0x38fc('0x10'));var as=require(_0x38fc('0x11'));var hardwareService=require(_0x38fc('0x12'));var logger=require(_0x38fc('0x13'))(_0x38fc('0x14'));var utils=require(_0x38fc('0x15'));var config=require(_0x38fc('0x16'));var licenseUtil=require(_0x38fc('0x17'));var db=require(_0x38fc('0x18'))['db'];function respondWithStatusCode(_0x535db0,_0x1edc2b){_0x1edc2b=_0x1edc2b||0xcc;return function(_0x362d4b){if(_0x362d4b){return _0x535db0[_0x38fc('0x19')](_0x1edc2b);}return _0x535db0[_0x38fc('0x1a')](_0x1edc2b)[_0x38fc('0x1b')]();};}function respondWithResult(_0x26a05f,_0x2ab2eb){_0x2ab2eb=_0x2ab2eb||0xc8;return function(_0xdd7a9c){if(_0xdd7a9c){return _0x26a05f['status'](_0x2ab2eb)['json'](_0xdd7a9c);}};}function respondWithFilteredResult(_0x36f117,_0x1c0b24){return function(_0x1883c0){if(_0x1883c0){var _0x48f042=typeof _0x1c0b24['offset']==='undefined'&&typeof _0x1c0b24[_0x38fc('0x1c')]==='undefined';var _0x5b707=_0x1883c0[_0x38fc('0x1d')];var _0x5a976c=_0x48f042?0x0:_0x1c0b24[_0x38fc('0x1e')];var _0x1a3be1=_0x48f042?_0x1883c0[_0x38fc('0x1d')]:_0x1c0b24['offset']+_0x1c0b24[_0x38fc('0x1c')];var _0x2a7e9b;if(_0x1a3be1>=_0x5b707){_0x1a3be1=_0x5b707;_0x2a7e9b=0xc8;}else{_0x2a7e9b=0xce;}_0x36f117['status'](_0x2a7e9b);return _0x36f117['set'](_0x38fc('0x1f'),_0x5a976c+'-'+_0x1a3be1+'/'+_0x5b707)[_0x38fc('0x20')](_0x1883c0);}return null;};}function patchUpdates(_0x76772f){return function(_0x1caa19){try{jsonpatch[_0x38fc('0x21')](_0x1caa19,_0x76772f,!![]);}catch(_0x5c5982){return BPromise[_0x38fc('0x22')](_0x5c5982);}return _0x1caa19[_0x38fc('0x23')]();};}function saveUpdates(_0x4a17c7,_0x1b64cb){return function(_0x56bc10){if(_0x56bc10){return _0x56bc10[_0x38fc('0x24')](_0x4a17c7)[_0x38fc('0x25')](function(_0x442756){return _0x442756;});}return null;};}function removeEntity(_0x55c8f6,_0x5df992){return function(_0xfca0b9){if(_0xfca0b9){return _0xfca0b9[_0x38fc('0x26')]()[_0x38fc('0x25')](function(){_0x55c8f6[_0x38fc('0x1a')](0xcc)[_0x38fc('0x1b')]();});}};}function handleEntityNotFound(_0x213390,_0x54b1fa){return function(_0x1fd657){if(!_0x1fd657){_0x213390[_0x38fc('0x19')](0x194);}return _0x1fd657;};}function handleError(_0x2b071a,_0x345dec){_0x345dec=_0x345dec||0x1f4;return function(_0x2e7989){logger[_0x38fc('0x27')](_0x2e7989['stack']);if(_0x2e7989[_0x38fc('0x28')]){delete _0x2e7989[_0x38fc('0x28')];}_0x2b071a[_0x38fc('0x1a')](_0x345dec)[_0x38fc('0x29')](_0x2e7989);};}exports[_0x38fc('0x2a')]=function(_0x440e16,_0x3f9d87){var _0x52092e={},_0x12757f={},_0x228110={'count':0x0,'rows':[]};var _0x3f5f6b=_[_0x38fc('0x2b')](db['FaxTransferReport'][_0x38fc('0x2c')],function(_0xdb353){return{'name':_0xdb353[_0x38fc('0x2d')],'type':_0xdb353[_0x38fc('0x2e')][_0x38fc('0x2f')]};});_0x12757f['model']=_['map'](_0x3f5f6b,_0x38fc('0x28'));_0x12757f[_0x38fc('0x30')]=_['keys'](_0x440e16[_0x38fc('0x30')]);_0x12757f[_0x38fc('0x31')]=_[_0x38fc('0x32')](_0x12757f[_0x38fc('0x33')],_0x12757f[_0x38fc('0x30')]);_0x52092e[_0x38fc('0x34')]=_['intersection'](_0x12757f[_0x38fc('0x33')],qs['fields'](_0x440e16[_0x38fc('0x30')][_0x38fc('0x35')]));_0x52092e[_0x38fc('0x34')]=_0x52092e[_0x38fc('0x34')]['length']?_0x52092e['attributes']:_0x12757f['model'];if(!_0x440e16['query']['hasOwnProperty']('nolimit')){_0x52092e['limit']=qs[_0x38fc('0x1c')](_0x440e16[_0x38fc('0x30')]['limit']);_0x52092e['offset']=qs[_0x38fc('0x1e')](_0x440e16[_0x38fc('0x30')][_0x38fc('0x1e')]);}_0x52092e[_0x38fc('0x36')]=qs[_0x38fc('0x37')](_0x440e16[_0x38fc('0x30')][_0x38fc('0x37')]);_0x52092e[_0x38fc('0x38')]=qs[_0x38fc('0x31')](_[_0x38fc('0x39')](_0x440e16[_0x38fc('0x30')],_0x12757f[_0x38fc('0x31')]),_0x3f5f6b);if(_0x440e16['query'][_0x38fc('0x3a')]){_0x52092e['where']=_[_0x38fc('0x3b')](_0x52092e[_0x38fc('0x38')],{'$or':_[_0x38fc('0x2b')](_0x3f5f6b,function(_0x3333b8){if(_0x3333b8[_0x38fc('0x2e')]!=='VIRTUAL'){var _0x2f171f={};_0x2f171f[_0x3333b8[_0x38fc('0x28')]]={'$like':'%'+_0x440e16[_0x38fc('0x30')][_0x38fc('0x3a')]+'%'};return _0x2f171f;}})});}_0x52092e=_[_0x38fc('0x3b')]({},_0x52092e,_0x440e16[_0x38fc('0x3c')]);var _0x49ee1f={'where':_0x52092e[_0x38fc('0x38')]};return db[_0x38fc('0x3d')]['count'](_0x49ee1f)[_0x38fc('0x25')](function(_0x523eeb){_0x228110[_0x38fc('0x1d')]=_0x523eeb;if(_0x440e16[_0x38fc('0x30')][_0x38fc('0x3e')]){_0x52092e['include']=[{'all':!![]}];}return db[_0x38fc('0x3d')][_0x38fc('0x3f')](_0x52092e);})[_0x38fc('0x25')](function(_0x4422b5){_0x228110[_0x38fc('0x40')]=_0x4422b5;return _0x228110;})['then'](respondWithFilteredResult(_0x3f9d87,_0x52092e))[_0x38fc('0x41')](handleError(_0x3f9d87,null));};exports[_0x38fc('0x42')]=function(_0x2c5482,_0x4f5d54){var _0x574cf8={'raw':!![],'where':{'id':_0x2c5482[_0x38fc('0x43')]['id']}},_0x563fea={};_0x563fea[_0x38fc('0x33')]=_[_0x38fc('0x44')](db[_0x38fc('0x3d')][_0x38fc('0x2c')]);_0x563fea[_0x38fc('0x30')]=_[_0x38fc('0x44')](_0x2c5482['query']);_0x563fea[_0x38fc('0x31')]=_[_0x38fc('0x32')](_0x563fea['model'],_0x563fea[_0x38fc('0x30')]);_0x574cf8[_0x38fc('0x34')]=_[_0x38fc('0x32')](_0x563fea[_0x38fc('0x33')],qs[_0x38fc('0x35')](_0x2c5482[_0x38fc('0x30')][_0x38fc('0x35')]));_0x574cf8[_0x38fc('0x34')]=_0x574cf8[_0x38fc('0x34')][_0x38fc('0x45')]?_0x574cf8[_0x38fc('0x34')]:_0x563fea[_0x38fc('0x33')];if(_0x2c5482['query'][_0x38fc('0x3e')]){_0x574cf8[_0x38fc('0x46')]=[{'all':!![]}];}_0x574cf8=_[_0x38fc('0x3b')]({},_0x574cf8,_0x2c5482[_0x38fc('0x3c')]);return db['FaxTransferReport'][_0x38fc('0x47')](_0x574cf8)['then'](handleEntityNotFound(_0x4f5d54,null))[_0x38fc('0x25')](respondWithResult(_0x4f5d54,null))[_0x38fc('0x41')](handleError(_0x4f5d54,null));};exports['create']=function(_0x44d23d,_0x4e89d3){return db['FaxTransferReport'][_0x38fc('0x48')](_0x44d23d[_0x38fc('0x49')],{})[_0x38fc('0x25')](respondWithResult(_0x4e89d3,0xc9))[_0x38fc('0x41')](handleError(_0x4e89d3,null));};exports[_0x38fc('0x24')]=function(_0x5f274b,_0x3e49cc){if(_0x5f274b[_0x38fc('0x49')]['id']){delete _0x5f274b[_0x38fc('0x49')]['id'];}return db[_0x38fc('0x3d')][_0x38fc('0x47')]({'where':{'id':_0x5f274b[_0x38fc('0x43')]['id']}})[_0x38fc('0x25')](handleEntityNotFound(_0x3e49cc,null))[_0x38fc('0x25')](saveUpdates(_0x5f274b[_0x38fc('0x49')],null))['then'](respondWithResult(_0x3e49cc,null))[_0x38fc('0x41')](handleError(_0x3e49cc,null));};exports[_0x38fc('0x26')]=function(_0x2cc344,_0x42cf06){return db[_0x38fc('0x3d')]['find']({'where':{'id':_0x2cc344[_0x38fc('0x43')]['id']}})[_0x38fc('0x25')](handleEntityNotFound(_0x42cf06,null))[_0x38fc('0x25')](removeEntity(_0x42cf06,null))['catch'](handleError(_0x42cf06,null));};exports[_0x38fc('0x4a')]=function(_0x5193c7,_0x5ca5e7){return db[_0x38fc('0x3d')][_0x38fc('0x4a')]()[_0x38fc('0x25')](respondWithResult(_0x5ca5e7,null))[_0x38fc('0x41')](handleError(_0x5ca5e7,null));};
\ No newline at end of file
index 027040c..b9d4810 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3c0=['request-promise','rimraf','../../config/environment','./faxTransferReport.attributes','define','FaxTransferReport','report_fax_transfer','uniqueid','api'];(function(_0x1b57d1,_0x262371){var _0x34b6e0=function(_0x1d2030){while(--_0x1d2030){_0x1b57d1['push'](_0x1b57d1['shift']());}};_0x34b6e0(++_0x262371);}(_0xa3c0,0x11f));var _0x0a3c=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xa3c0[_0x2160a9];return _0xa88cf7;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x0a3c('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x0a3c('0x1'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0a3c('0x2'));var config=require(_0x0a3c('0x3'));var attributes=require(_0x0a3c('0x4'));module['exports']=function(_0x42d8af,_0x2af764){return _0x42d8af[_0x0a3c('0x5')](_0x0a3c('0x6'),attributes,{'tableName':_0x0a3c('0x7'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0a3c('0x8')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6ce4=['exports','define','FaxTransferReport','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x388e61,_0x1d6f5f){var _0x2fd2e9=function(_0x2da6ae){while(--_0x2da6ae){_0x388e61['push'](_0x388e61['shift']());}};_0x2fd2e9(++_0x1d6f5f);}(_0x6ce4,0x87));var _0x46ce=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6ce4[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x46ce('0x0'));var util=require(_0x46ce('0x1'));var logger=require(_0x46ce('0x2'))(_0x46ce('0x3'));var moment=require(_0x46ce('0x4'));var BPromise=require(_0x46ce('0x5'));var rp=require(_0x46ce('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x46ce('0x7'));var config=require('../../config/environment');var attributes=require('./faxTransferReport.attributes');module[_0x46ce('0x8')]=function(_0x141438,_0x372d55){return _0x141438[_0x46ce('0x9')](_0x46ce('0xa'),attributes,{'tableName':'report_fax_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 8994124..f0c0e57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe061=['FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info'];(function(_0x29e83d,_0x24d678){var _0x4aeeb6=function(_0x4b3edc){while(--_0x4b3edc){_0x29e83d['push'](_0x29e83d['shift']());}};_0x4aeeb6(++_0x24d678);}(_0xe061,0x190));var _0x1e06=function(_0x56a499,_0x3cc9a9){_0x56a499=_0x56a499-0x0;var _0x2c6db5=_0xe061[_0x56a499];return _0x2c6db5;};'use strict';var _=require(_0x1e06('0x0'));var util=require(_0x1e06('0x1'));var moment=require(_0x1e06('0x2'));var BPromise=require(_0x1e06('0x3'));var rs=require(_0x1e06('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1e06('0x5'))['db'];var utils=require(_0x1e06('0x6'));var logger=require(_0x1e06('0x7'))(_0x1e06('0x8'));var config=require(_0x1e06('0x9'));var jayson=require(_0x1e06('0xa'));var client=jayson['client'][_0x1e06('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3500f5,_0x3a042c,_0xbfb483){return new BPromise(function(_0x36a740,_0x27523b){return client[_0x1e06('0xc')](_0x3500f5,_0xbfb483)['then'](function(_0x4f75bb){logger[_0x1e06('0xd')](_0x1e06('0xe'),_0x3a042c,_0x1e06('0xf'));logger[_0x1e06('0x10')](_0x1e06('0x11'),_0x3a042c,_0x1e06('0xf'),JSON['stringify'](_0x4f75bb));if(_0x4f75bb[_0x1e06('0x12')]){if(_0x4f75bb[_0x1e06('0x12')][_0x1e06('0x13')]===0x1f4){logger[_0x1e06('0x12')](_0x1e06('0xe'),_0x3a042c,_0x4f75bb[_0x1e06('0x12')][_0x1e06('0x14')]);return _0x27523b(_0x4f75bb[_0x1e06('0x12')]['message']);}logger['error'](_0x1e06('0xe'),_0x3a042c,_0x4f75bb[_0x1e06('0x12')][_0x1e06('0x14')]);return _0x36a740(_0x4f75bb[_0x1e06('0x12')]['message']);}else{logger[_0x1e06('0xd')](_0x1e06('0xe'),_0x3a042c,_0x1e06('0xf'));_0x36a740(_0x4f75bb[_0x1e06('0x15')]['message']);}})[_0x1e06('0x16')](function(_0x192f22){logger['error'](_0x1e06('0xe'),_0x3a042c,_0x192f22);_0x27523b(_0x192f22);});});}
\ No newline at end of file
+var _0x26e2=['request\x20sent','debug','stringify','error','code','message','FaxTransferReport,\x20%s,\x20%s','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','http','info'];(function(_0xf8f51b,_0x11821b){var _0x226b78=function(_0x5da338){while(--_0x5da338){_0xf8f51b['push'](_0xf8f51b['shift']());}};_0x226b78(++_0x11821b);}(_0x26e2,0x1e3));var _0x226e=function(_0x13c6e9,_0x26be05){_0x13c6e9=_0x13c6e9-0x0;var _0x490bec=_0x26e2[_0x13c6e9];return _0x490bec;};'use strict';var _=require(_0x226e('0x0'));var util=require(_0x226e('0x1'));var moment=require(_0x226e('0x2'));var BPromise=require(_0x226e('0x3'));var rs=require(_0x226e('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x226e('0x5'))['db'];var utils=require(_0x226e('0x6'));var logger=require('../../config/logger')(_0x226e('0x7'));var config=require('../../config/environment');var jayson=require(_0x226e('0x8'));var client=jayson['client'][_0x226e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xd1809,_0x3ad4c2,_0x10b218){return new BPromise(function(_0x1493df,_0x1a8fe9){return client['request'](_0xd1809,_0x10b218)['then'](function(_0x15d800){logger[_0x226e('0xa')]('FaxTransferReport,\x20%s,\x20%s',_0x3ad4c2,_0x226e('0xb'));logger[_0x226e('0xc')]('FaxTransferReport,\x20%s,\x20%s,\x20%s',_0x3ad4c2,_0x226e('0xb'),JSON[_0x226e('0xd')](_0x15d800));if(_0x15d800[_0x226e('0xe')]){if(_0x15d800['error'][_0x226e('0xf')]===0x1f4){logger[_0x226e('0xe')]('FaxTransferReport,\x20%s,\x20%s',_0x3ad4c2,_0x15d800[_0x226e('0xe')][_0x226e('0x10')]);return _0x1a8fe9(_0x15d800[_0x226e('0xe')][_0x226e('0x10')]);}logger[_0x226e('0xe')](_0x226e('0x11'),_0x3ad4c2,_0x15d800[_0x226e('0xe')]['message']);return _0x1493df(_0x15d800[_0x226e('0xe')][_0x226e('0x10')]);}else{logger['info'](_0x226e('0x11'),_0x3ad4c2,_0x226e('0xb'));_0x1493df(_0x15d800[_0x226e('0x12')][_0x226e('0x10')]);}})['catch'](function(_0x1c354a){logger['error']('FaxTransferReport,\x20%s,\x20%s',_0x3ad4c2,_0x1c354a);_0x1a8fe9(_0x1c354a);});});}
\ No newline at end of file
index 27593f1..d93cbc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76f4=['get','describe','show','post','create','put','/:id','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','isAuthenticated','index'];(function(_0x581182,_0x4d140b){var _0x27eed2=function(_0x221e8f){while(--_0x221e8f){_0x581182['push'](_0x581182['shift']());}};_0x27eed2(++_0x4d140b);}(_0x76f4,0xd9));var _0x476f=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x76f4[_0x24061a];return _0x82054e;};'use strict';var multer=require(_0x476f('0x0'));var util=require(_0x476f('0x1'));var path=require(_0x476f('0x2'));var timeout=require(_0x476f('0x3'));var express=require(_0x476f('0x4'));var router=express[_0x476f('0x5')]();var fs_extra=require(_0x476f('0x6'));var auth=require(_0x476f('0x7'));var interaction=require(_0x476f('0x8'));var config=require(_0x476f('0x9'));var controller=require(_0x476f('0xa'));router['get']('/',auth[_0x476f('0xb')](),controller[_0x476f('0xc')]);router[_0x476f('0xd')]('/describe',auth['isAuthenticated'](),controller[_0x476f('0xe')]);router['get']('/:id',auth[_0x476f('0xb')](),controller[_0x476f('0xf')]);router[_0x476f('0x10')]('/',auth[_0x476f('0xb')](),controller[_0x476f('0x11')]);router[_0x476f('0x12')](_0x476f('0x13'),auth[_0x476f('0xb')](),controller[_0x476f('0x14')]);router[_0x476f('0x15')](_0x476f('0x13'),auth[_0x476f('0xb')](),controller['destroy']);module[_0x476f('0x16')]=router;
\ No newline at end of file
+var _0xd34e=['update','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','post','create','put','/:id'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xd34e,0x111));var _0xed34=function(_0x195014,_0x563d3b){_0x195014=_0x195014-0x0;var _0x342d70=_0xd34e[_0x195014];return _0x342d70;};'use strict';var multer=require(_0xed34('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xed34('0x1'));var express=require(_0xed34('0x2'));var router=express[_0xed34('0x3')]();var fs_extra=require(_0xed34('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xed34('0x5'));var config=require(_0xed34('0x6'));var controller=require('./faxTransferReport.controller');router[_0xed34('0x7')]('/',auth[_0xed34('0x8')](),controller[_0xed34('0x9')]);router[_0xed34('0x7')](_0xed34('0xa'),auth[_0xed34('0x8')](),controller['describe']);router[_0xed34('0x7')]('/:id',auth[_0xed34('0x8')](),controller['show']);router[_0xed34('0xb')]('/',auth['isAuthenticated'](),controller[_0xed34('0xc')]);router[_0xed34('0xd')](_0xed34('0xe'),auth[_0xed34('0x8')](),controller[_0xed34('0xf')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xed34('0x10')]);module[_0xed34('0x11')]=router;
\ No newline at end of file
index 3dfd1aa..c588c7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77ec=['/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','multer','util','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/configurations','getConfigurations'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x77ec,0x7c));var _0xc77e=function(_0x28d0ca,_0x8f0cef){_0x28d0ca=_0x28d0ca-0x0;var _0x27ae0c=_0x77ec[_0x28d0ca];return _0x27ae0c;};'use strict';var multer=require(_0xc77e('0x0'));var util=require(_0xc77e('0x1'));var path=require(_0xc77e('0x2'));var timeout=require('connect-timeout');var express=require(_0xc77e('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xc77e('0x4'));var interaction=require(_0xc77e('0x5'));var config=require(_0xc77e('0x6'));var controller=require('./intDeskAccount.controller');router['get']('/',auth[_0xc77e('0x7')](),controller[_0xc77e('0x8')]);router[_0xc77e('0x9')](_0xc77e('0xa'),auth[_0xc77e('0x7')](),controller[_0xc77e('0xb')]);router[_0xc77e('0x9')](_0xc77e('0xc'),auth[_0xc77e('0x7')](),controller[_0xc77e('0xd')]);router[_0xc77e('0x9')](_0xc77e('0xe'),auth[_0xc77e('0x7')](),controller[_0xc77e('0xf')]);router[_0xc77e('0x10')]('/',auth['isAuthenticated'](),controller[_0xc77e('0x11')]);router[_0xc77e('0x10')](_0xc77e('0xc'),auth[_0xc77e('0x7')](),controller[_0xc77e('0x12')]);router[_0xc77e('0x13')](_0xc77e('0xa'),auth[_0xc77e('0x7')](),controller[_0xc77e('0x14')]);router[_0xc77e('0x15')](_0xc77e('0xa'),auth[_0xc77e('0x7')](),controller[_0xc77e('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x8161=['getFields','post','create','put','delete','destroy','exports','multer','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields'];(function(_0x147a21,_0x2cbe2e){var _0x1516fc=function(_0x5513b1){while(--_0x5513b1){_0x147a21['push'](_0x147a21['shift']());}};_0x1516fc(++_0x2cbe2e);}(_0x8161,0x11b));var _0x1816=function(_0x530eb8,_0x4c2d9){_0x530eb8=_0x530eb8-0x0;var _0xee2b84=_0x8161[_0x530eb8];return _0xee2b84;};'use strict';var multer=require(_0x1816('0x0'));var util=require(_0x1816('0x1'));var path=require(_0x1816('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x1816('0x3'));var auth=require(_0x1816('0x4'));var interaction=require(_0x1816('0x5'));var config=require(_0x1816('0x6'));var controller=require(_0x1816('0x7'));router[_0x1816('0x8')]('/',auth[_0x1816('0x9')](),controller[_0x1816('0xa')]);router[_0x1816('0x8')](_0x1816('0xb'),auth[_0x1816('0x9')](),controller[_0x1816('0xc')]);router[_0x1816('0x8')](_0x1816('0xd'),auth['isAuthenticated'](),controller[_0x1816('0xe')]);router[_0x1816('0x8')](_0x1816('0xf'),auth[_0x1816('0x9')](),controller[_0x1816('0x10')]);router[_0x1816('0x11')]('/',auth[_0x1816('0x9')](),controller[_0x1816('0x12')]);router[_0x1816('0x11')](_0x1816('0xd'),auth[_0x1816('0x9')](),controller['addConfiguration']);router[_0x1816('0x13')](_0x1816('0xb'),auth[_0x1816('0x9')](),controller['update']);router[_0x1816('0x14')](_0x1816('0xb'),auth[_0x1816('0x9')](),controller[_0x1816('0x15')]);module[_0x1816('0x16')]=router;
\ No newline at end of file
index 44b89dc..e05379a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6061=['integrationTab','newTab','STRING','basic','ENUM'];(function(_0x51b362,_0x19a740){var _0x49116c=function(_0x3e818b){while(--_0x3e818b){_0x51b362['push'](_0x51b362['shift']());}};_0x49116c(++_0x19a740);}(_0x6061,0x1bf));var _0x1606=function(_0x499a36,_0x4af5a2){_0x499a36=_0x499a36-0x0;var _0x56c4c5=_0x6061[_0x499a36];return _0x56c4c5;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x1606('0x0')]},'description':{'type':Sequelize[_0x1606('0x0')]},'username':{'type':Sequelize[_0x1606('0x0')]},'remoteUri':{'type':Sequelize[_0x1606('0x0')]},'authType':{'type':Sequelize['ENUM'](_0x1606('0x1')),'defaultValue':'basic'},'password':{'type':Sequelize['STRING']},'consumerKey':{'type':Sequelize[_0x1606('0x0')]},'consumerSecret':{'type':Sequelize[_0x1606('0x0')]},'token':{'type':Sequelize[_0x1606('0x0')]},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x1606('0x2')](_0x1606('0x3'),_0x1606('0x4')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0xa0bc=['integrationTab','newTab','sequelize','exports','STRING','basic'];(function(_0x1db47e,_0x3d7b80){var _0x4628fb=function(_0x2a765b){while(--_0x2a765b){_0x1db47e['push'](_0x1db47e['shift']());}};_0x4628fb(++_0x3d7b80);}(_0xa0bc,0x1b8));var _0xca0b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa0bc[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xca0b('0x0'));module[_0xca0b('0x1')]={'name':{'type':Sequelize[_0xca0b('0x2')]},'description':{'type':Sequelize[_0xca0b('0x2')]},'username':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xca0b('0x2')]},'authType':{'type':Sequelize['ENUM'](_0xca0b('0x3')),'defaultValue':_0xca0b('0x3')},'password':{'type':Sequelize[_0xca0b('0x2')]},'consumerKey':{'type':Sequelize[_0xca0b('0x2')]},'consumerSecret':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0xca0b('0x2')]},'tokenSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xca0b('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xca0b('0x4'),_0xca0b('0x5')),'defaultValue':_0xca0b('0x4')}};
\ No newline at end of file
index 70717d3..b75f874 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94c1=['sox','ejs','fs-extra','squel','jsforce','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','save','update','then','destroy','error','stack','name','send','index','map','DeskAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','where','merge','filter','options','includeAll','include','findAll','show','params','length','catch','create','body','find','getConfigurations','findOne','DeskConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','DeskField','Descriptions','getFields','priority','remoteUri','authType','username','consumerKey','tokenSecret','substring','lastIndexOf','GET','format','%s/custom_fields','application/json','basic','headers','Authorization','Basic\x20%s','%s:%s','toString','concat','_embedded','entries','active','label','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util'];(function(_0x21a0cb,_0x5a4cc5){var _0x2e9bb4=function(_0x3b47cf){while(--_0x3b47cf){_0x21a0cb['push'](_0x21a0cb['shift']());}};_0x2e9bb4(++_0x5a4cc5);}(_0x94c1,0x68));var _0x194c=function(_0xdfd6a7,_0x43e58f){_0xdfd6a7=_0xdfd6a7-0x0;var _0x190173=_0x94c1[_0xdfd6a7];return _0x190173;};'use strict';var emlformat=require(_0x194c('0x0'));var rimraf=require(_0x194c('0x1'));var zipdir=require(_0x194c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x194c('0x3'));var moment=require(_0x194c('0x4'));var BPromise=require(_0x194c('0x5'));var Mustache=require(_0x194c('0x6'));var util=require(_0x194c('0x7'));var path=require('path');var sox=require(_0x194c('0x8'));var csv=require('to-csv');var ejs=require(_0x194c('0x9'));var fs=require('fs');var fs_extra=require(_0x194c('0xa'));var _=require('lodash');var squel=require(_0x194c('0xb'));var crypto=require('crypto');var jsforce=require(_0x194c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x194c('0xd'));var querystring=require(_0x194c('0xe'));var Papa=require(_0x194c('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x194c('0x10'));var as=require(_0x194c('0x11'));var hardwareService=require(_0x194c('0x12'));var logger=require('../../config/logger')(_0x194c('0x13'));var utils=require(_0x194c('0x14'));var config=require(_0x194c('0x15'));var licenseUtil=require(_0x194c('0x16'));var db=require(_0x194c('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x30207f,_0x271164){_0x271164=_0x271164||0xcc;return function(_0x456625){if(_0x456625){return _0x30207f[_0x194c('0x18')](_0x271164);}return _0x30207f[_0x194c('0x19')](_0x271164)['end']();};}function respondWithResult(_0x3b01c7,_0x482779){_0x482779=_0x482779||0xc8;return function(_0x315000){if(_0x315000){return _0x3b01c7['status'](_0x482779)[_0x194c('0x1a')](_0x315000);}};}function respondWithFilteredResult(_0x1f1ed3,_0x2977c1){return function(_0x242d85){if(_0x242d85){var _0x5c13d5=typeof _0x2977c1[_0x194c('0x1b')]==='undefined'&&typeof _0x2977c1[_0x194c('0x1c')]===_0x194c('0x1d');var _0x322689=_0x242d85[_0x194c('0x1e')];var _0x17cfb3=_0x5c13d5?0x0:_0x2977c1[_0x194c('0x1b')];var _0x33e13f=_0x5c13d5?_0x242d85['count']:_0x2977c1[_0x194c('0x1b')]+_0x2977c1[_0x194c('0x1c')];var _0x2e3c4;if(_0x33e13f>=_0x322689){_0x33e13f=_0x322689;_0x2e3c4=0xc8;}else{_0x2e3c4=0xce;}_0x1f1ed3['status'](_0x2e3c4);return _0x1f1ed3[_0x194c('0x1f')](_0x194c('0x20'),_0x17cfb3+'-'+_0x33e13f+'/'+_0x322689)[_0x194c('0x1a')](_0x242d85);}return null;};}function patchUpdates(_0x566948){return function(_0x572965){try{jsonpatch[_0x194c('0x21')](_0x572965,_0x566948,!![]);}catch(_0x301695){return BPromise['reject'](_0x301695);}return _0x572965[_0x194c('0x22')]();};}function saveUpdates(_0x331c4b,_0x3d56d8){return function(_0x426c6a){if(_0x426c6a){return _0x426c6a[_0x194c('0x23')](_0x331c4b)[_0x194c('0x24')](function(_0x1784e3){return _0x1784e3;});}return null;};}function removeEntity(_0x3ef909,_0x257271){return function(_0x53701f){if(_0x53701f){return _0x53701f[_0x194c('0x25')]()[_0x194c('0x24')](function(){_0x3ef909[_0x194c('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x21d7d3,_0xa1e953){return function(_0x5a84db){if(!_0x5a84db){_0x21d7d3[_0x194c('0x18')](0x194);}return _0x5a84db;};}function handleError(_0x2e4701,_0x477a77){_0x477a77=_0x477a77||0x1f4;return function(_0x8910ff){logger[_0x194c('0x26')](_0x8910ff[_0x194c('0x27')]);if(_0x8910ff[_0x194c('0x28')]){delete _0x8910ff[_0x194c('0x28')];}_0x2e4701[_0x194c('0x19')](_0x477a77)[_0x194c('0x29')](_0x8910ff);};}exports[_0x194c('0x2a')]=function(_0x65495,_0x4102c6){var _0x498e19={},_0x29c00b={},_0x5c354c={'count':0x0,'rows':[]};var _0x20aadb=_[_0x194c('0x2b')](db[_0x194c('0x2c')][_0x194c('0x2d')],function(_0x585c96){return{'name':_0x585c96[_0x194c('0x2e')],'type':_0x585c96[_0x194c('0x2f')]['key']};});_0x29c00b[_0x194c('0x30')]=_[_0x194c('0x2b')](_0x20aadb,'name');_0x29c00b[_0x194c('0x31')]=_[_0x194c('0x32')](_0x65495['query']);_0x29c00b[_0x194c('0x33')]=_[_0x194c('0x34')](_0x29c00b['model'],_0x29c00b[_0x194c('0x31')]);_0x498e19[_0x194c('0x35')]=_[_0x194c('0x34')](_0x29c00b[_0x194c('0x30')],qs[_0x194c('0x36')](_0x65495[_0x194c('0x31')]['fields']));_0x498e19[_0x194c('0x35')]=_0x498e19[_0x194c('0x35')]['length']?_0x498e19['attributes']:_0x29c00b[_0x194c('0x30')];if(!_0x65495[_0x194c('0x31')][_0x194c('0x37')](_0x194c('0x38'))){_0x498e19[_0x194c('0x1c')]=qs[_0x194c('0x1c')](_0x65495[_0x194c('0x31')]['limit']);_0x498e19[_0x194c('0x1b')]=qs[_0x194c('0x1b')](_0x65495[_0x194c('0x31')][_0x194c('0x1b')]);}_0x498e19[_0x194c('0x39')]=qs['sort'](_0x65495[_0x194c('0x31')][_0x194c('0x3a')]);_0x498e19['where']=qs['filters'](_[_0x194c('0x3b')](_0x65495[_0x194c('0x31')],_0x29c00b[_0x194c('0x33')]),_0x20aadb);if(_0x65495[_0x194c('0x31')]['filter']){_0x498e19[_0x194c('0x3c')]=_[_0x194c('0x3d')](_0x498e19[_0x194c('0x3c')],{'$or':_['map'](_0x20aadb,function(_0x1b8017){if(_0x1b8017[_0x194c('0x2f')]!=='VIRTUAL'){var _0x1ceddf={};_0x1ceddf[_0x1b8017[_0x194c('0x28')]]={'$like':'%'+_0x65495['query'][_0x194c('0x3e')]+'%'};return _0x1ceddf;}})});}_0x498e19=_['merge']({},_0x498e19,_0x65495[_0x194c('0x3f')]);var _0x45bdcd={'where':_0x498e19[_0x194c('0x3c')]};return db['DeskAccount'][_0x194c('0x1e')](_0x45bdcd)['then'](function(_0x9c2cb2){_0x5c354c['count']=_0x9c2cb2;if(_0x65495[_0x194c('0x31')][_0x194c('0x40')]){_0x498e19[_0x194c('0x41')]=[{'all':!![]}];}return db[_0x194c('0x2c')][_0x194c('0x42')](_0x498e19);})['then'](function(_0x5f1fa1){_0x5c354c['rows']=_0x5f1fa1;return _0x5c354c;})[_0x194c('0x24')](respondWithFilteredResult(_0x4102c6,_0x498e19))['catch'](handleError(_0x4102c6,null));};exports[_0x194c('0x43')]=function(_0x41f35d,_0x39c77f){var _0x2367e4={'raw':![],'where':{'id':_0x41f35d[_0x194c('0x44')]['id']}},_0x31786f={};_0x31786f[_0x194c('0x30')]=_[_0x194c('0x32')](db['DeskAccount'][_0x194c('0x2d')]);_0x31786f[_0x194c('0x31')]=_[_0x194c('0x32')](_0x41f35d[_0x194c('0x31')]);_0x31786f[_0x194c('0x33')]=_[_0x194c('0x34')](_0x31786f[_0x194c('0x30')],_0x31786f['query']);_0x2367e4[_0x194c('0x35')]=_[_0x194c('0x34')](_0x31786f[_0x194c('0x30')],qs[_0x194c('0x36')](_0x41f35d[_0x194c('0x31')][_0x194c('0x36')]));_0x2367e4[_0x194c('0x35')]=_0x2367e4[_0x194c('0x35')][_0x194c('0x45')]?_0x2367e4[_0x194c('0x35')]:_0x31786f['model'];if(_0x41f35d[_0x194c('0x31')][_0x194c('0x40')]){_0x2367e4[_0x194c('0x41')]=[{'all':!![]}];}_0x2367e4=_[_0x194c('0x3d')]({},_0x2367e4,_0x41f35d[_0x194c('0x3f')]);return db[_0x194c('0x2c')]['find'](_0x2367e4)[_0x194c('0x24')](handleEntityNotFound(_0x39c77f,null))['then'](respondWithResult(_0x39c77f,null))[_0x194c('0x46')](handleError(_0x39c77f,null));};exports[_0x194c('0x47')]=function(_0x2751e7,_0x39e5d4){return db[_0x194c('0x2c')][_0x194c('0x47')](_0x2751e7[_0x194c('0x48')],{})[_0x194c('0x24')](respondWithResult(_0x39e5d4,0xc9))['catch'](handleError(_0x39e5d4,null));};exports[_0x194c('0x23')]=function(_0x995c10,_0x3892b4){if(_0x995c10['body']['id']){delete _0x995c10['body']['id'];}return db['DeskAccount'][_0x194c('0x49')]({'where':{'id':_0x995c10[_0x194c('0x44')]['id']}})[_0x194c('0x24')](handleEntityNotFound(_0x3892b4,null))[_0x194c('0x24')](saveUpdates(_0x995c10[_0x194c('0x48')],null))['then'](respondWithResult(_0x3892b4,null))['catch'](handleError(_0x3892b4,null));};exports[_0x194c('0x25')]=function(_0x1b4ad0,_0x109136){return db[_0x194c('0x2c')][_0x194c('0x49')]({'where':{'id':_0x1b4ad0['params']['id']}})[_0x194c('0x24')](handleEntityNotFound(_0x109136,null))[_0x194c('0x24')](removeEntity(_0x109136,null))[_0x194c('0x46')](handleError(_0x109136,null));};exports[_0x194c('0x4a')]=function(_0x38f334,_0x142f9e,_0x4a0eef){var _0x40f739={};var _0x4b82b6={};var _0x1a6db1;var _0x25f352;return db['DeskAccount'][_0x194c('0x4b')]({'where':{'id':_0x38f334[_0x194c('0x44')]['id']}})[_0x194c('0x24')](handleEntityNotFound(_0x142f9e,null))['then'](function(_0x1e66dd){if(_0x1e66dd){_0x1a6db1=_0x1e66dd;_0x4b82b6['model']=_['keys'](db[_0x194c('0x4c')][_0x194c('0x2d')]);_0x4b82b6['query']=_[_0x194c('0x32')](_0x38f334[_0x194c('0x31')]);_0x4b82b6['filters']=_['intersection'](_0x4b82b6[_0x194c('0x30')],_0x4b82b6['query']);_0x40f739[_0x194c('0x35')]=_[_0x194c('0x34')](_0x4b82b6['model'],qs[_0x194c('0x36')](_0x38f334[_0x194c('0x31')]['fields']));_0x40f739['attributes']=_0x40f739[_0x194c('0x35')]['length']?_0x40f739['attributes']:_0x4b82b6[_0x194c('0x30')];_0x40f739['order']=qs[_0x194c('0x3a')](_0x38f334[_0x194c('0x31')][_0x194c('0x3a')]);_0x40f739[_0x194c('0x3c')]=qs[_0x194c('0x33')](_[_0x194c('0x3b')](_0x38f334[_0x194c('0x31')],_0x4b82b6['filters']));if(_0x38f334[_0x194c('0x31')][_0x194c('0x3e')]){_0x40f739[_0x194c('0x3c')]=_[_0x194c('0x3d')](_0x40f739[_0x194c('0x3c')],{'$or':_[_0x194c('0x2b')](_0x40f739[_0x194c('0x35')],function(_0x133d07){var _0x5ac482={};_0x5ac482[_0x133d07]={'$like':'%'+_0x38f334['query']['filter']+'%'};return _0x5ac482;})});}_0x40f739=_[_0x194c('0x3d')]({},_0x40f739,_0x38f334['options']);return _0x1a6db1[_0x194c('0x4a')](_0x40f739);}})[_0x194c('0x24')](function(_0x4ed910){if(_0x4ed910){_0x25f352=_0x4ed910['length'];if(!_0x38f334[_0x194c('0x31')][_0x194c('0x37')](_0x194c('0x38'))){_0x40f739[_0x194c('0x1c')]=qs[_0x194c('0x1c')](_0x38f334[_0x194c('0x31')][_0x194c('0x1c')]);_0x40f739[_0x194c('0x1b')]=qs[_0x194c('0x1b')](_0x38f334[_0x194c('0x31')][_0x194c('0x1b')]);}return _0x1a6db1[_0x194c('0x4a')](_0x40f739);}})['then'](function(_0x43ded5){if(_0x43ded5){return _0x43ded5?{'count':_0x25f352,'rows':_0x43ded5}:null;}})['then'](respondWithResult(_0x142f9e,null))['catch'](handleError(_0x142f9e,null));};exports[_0x194c('0x4d')]=function(_0x245d28,_0x36892a,_0x11acbb){if(_0x245d28['body']['id']){delete _0x245d28[_0x194c('0x48')]['id'];}return db[_0x194c('0x2c')][_0x194c('0x4b')]({'where':{'id':_0x245d28[_0x194c('0x44')]['id']}})[_0x194c('0x24')](handleEntityNotFound(_0x36892a,null))['then'](function(_0x59db83){if(_0x59db83){_0x245d28['body'][_0x194c('0x4e')]=_0x59db83['id'];_0x245d28['body'][_0x194c('0x4f')]=integrations[_0x194c('0x50')](_0x245d28[_0x194c('0x48')][_0x194c('0x51')],_0x245d28['body'][_0x194c('0x2f')]);_0x245d28['body']['Descriptions']=integrations['getDescriptions'](_0x245d28[_0x194c('0x48')][_0x194c('0x51')],_0x245d28[_0x194c('0x48')][_0x194c('0x2f')]);return db[_0x194c('0x4c')]['create'](_0x245d28['body'],{'include':[{'model':db[_0x194c('0x52')],'as':_0x194c('0x4f')},{'model':db[_0x194c('0x52')],'as':_0x194c('0x53')}]});}return null;})['then'](respondWithResult(_0x36892a,null))['catch'](handleError(_0x36892a,null));};exports[_0x194c('0x54')]=function(_0x170ef1,_0x473e6e,_0x15b6c7){var _0x36b119=[{'name':_0x194c('0x55'),'label':'priority','custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x2d9f25='';return db[_0x194c('0x2c')][_0x194c('0x4b')]({'where':{'id':_0x170ef1[_0x194c('0x44')]['id']},'attributes':['id',_0x194c('0x56'),_0x194c('0x57'),_0x194c('0x58'),'password',_0x194c('0x59'),'consumerSecret','token',_0x194c('0x5a')]})[_0x194c('0x24')](handleEntityNotFound(_0x473e6e,null))['then'](function(_0xdcc5ba){if(_0xdcc5ba){_0x2d9f25=_0xdcc5ba[_0x194c('0x56')];var _0x2b5f3a=_0x2d9f25['slice'](-0x1);if(_0x2b5f3a==='/'){_0x2d9f25=_0x2d9f25[_0x194c('0x5b')](0x0,_0x2d9f25[_0x194c('0x5c')](_0x2b5f3a));}var _0x5666ac={'method':_0x194c('0x5d'),'uri':util[_0x194c('0x5e')](_0x194c('0x5f'),_0x2d9f25),'headers':{'Content-Type':_0x194c('0x60'),'Accept':_0x194c('0x60')},'json':!![]};if(_0xdcc5ba[_0x194c('0x57')]===_0x194c('0x61')){_0x5666ac[_0x194c('0x62')][_0x194c('0x63')]=util[_0x194c('0x5e')](_0x194c('0x64'),new Buffer(util['format'](_0x194c('0x65'),_0xdcc5ba[_0x194c('0x58')],_0xdcc5ba['password']))[_0x194c('0x66')]('base64'));}return rp(_0x5666ac)[_0x194c('0x24')](function(_0x357661){return _0x36b119[_0x194c('0x67')](_[_0x194c('0x2b')](_0x357661[_0x194c('0x68')][_0x194c('0x69')],function(_0x4fae51){return{'id':_0x4fae51[_0x194c('0x28')],'name':_0x4fae51[_0x194c('0x28')],'type':_0x4fae51[_0x194c('0x2f')],'active':_0x4fae51[_0x194c('0x6a')],'label':_0x4fae51[_0x194c('0x6b')],'custom':!![]};}));});}})[_0x194c('0x24')](function(_0x2c9883){return{'count':_0x2c9883[_0x194c('0x45')],'rows':_0x2c9883};})[_0x194c('0x24')](respondWithResult(_0x473e6e,null))[_0x194c('0x46')](function(_0x37aa77){var _0x5e231f=_0x170ef1[_0x194c('0x31')][_0x194c('0x6c')]?0x1f4:_0x37aa77[_0x194c('0x6d')]||0x1f4;logger[_0x194c('0x26')]('getFields,\x20%s,\x20%s,\x20%s',_0x194c('0x54'),_0x5e231f,JSON[_0x194c('0x6e')](_0x37aa77));delete _0x37aa77['name'];if(_0x5e231f===0x191){_0x5e231f=0x190;}_0x473e6e[_0x194c('0x19')](_0x5e231f)[_0x194c('0x29')](_0x170ef1[_0x194c('0x31')][_0x194c('0x6c')]?{'message':_0x194c('0x6f'),'statusCode':_0x37aa77[_0x194c('0x6d')]}:_0x37aa77);});};
\ No newline at end of file
+var _0x8cd8=['to-csv','ejs','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','limit','undefined','offset','count','set','json','reject','update','then','destroy','end','stack','name','send','index','map','DeskAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','find','create','catch','body','getConfigurations','findOne','DeskConfiguration','order','addConfiguration','AccountId','Subjects','channel','getDescriptions','DeskField','Descriptions','getFields','priority','remoteUri','username','consumerKey','token','tokenSecret','slice','substring','lastIndexOf','GET','application/json','authType','basic','headers','Authorization','Basic\x20%s','%s:%s','password','base64','concat','entries','active','label','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path'];(function(_0x2adce1,_0x15b499){var _0x1f2f5d=function(_0x28aa97){while(--_0x28aa97){_0x2adce1['push'](_0x2adce1['shift']());}};_0x1f2f5d(++_0x15b499);}(_0x8cd8,0x6a));var _0x88cd=function(_0x42eb1b,_0x4c0b4f){_0x42eb1b=_0x42eb1b-0x0;var _0x27f9db=_0x8cd8[_0x42eb1b];return _0x27f9db;};'use strict';var emlformat=require(_0x88cd('0x0'));var rimraf=require(_0x88cd('0x1'));var zipdir=require(_0x88cd('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x88cd('0x3'));var moment=require(_0x88cd('0x4'));var BPromise=require(_0x88cd('0x5'));var Mustache=require(_0x88cd('0x6'));var util=require(_0x88cd('0x7'));var path=require(_0x88cd('0x8'));var sox=require('sox');var csv=require(_0x88cd('0x9'));var ejs=require(_0x88cd('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x88cd('0xb'));var squel=require(_0x88cd('0xc'));var crypto=require(_0x88cd('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x88cd('0xe'));var toCsv=require(_0x88cd('0x9'));var querystring=require(_0x88cd('0xf'));var Papa=require(_0x88cd('0x10'));var Redis=require(_0x88cd('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x88cd('0x12'));var as=require(_0x88cd('0x13'));var hardwareService=require(_0x88cd('0x14'));var logger=require(_0x88cd('0x15'))(_0x88cd('0x16'));var utils=require('../../config/utils');var config=require(_0x88cd('0x17'));var licenseUtil=require(_0x88cd('0x18'));var db=require(_0x88cd('0x19'))['db'];var integrations=require(_0x88cd('0x1a'));function respondWithStatusCode(_0x39bd6a,_0x4cdd82){_0x4cdd82=_0x4cdd82||0xcc;return function(_0x3b99c1){if(_0x3b99c1){return _0x39bd6a[_0x88cd('0x1b')](_0x4cdd82);}return _0x39bd6a[_0x88cd('0x1c')](_0x4cdd82)['end']();};}function respondWithResult(_0x161582,_0x13f1e5){_0x13f1e5=_0x13f1e5||0xc8;return function(_0x4728e7){if(_0x4728e7){return _0x161582[_0x88cd('0x1c')](_0x13f1e5)['json'](_0x4728e7);}};}function respondWithFilteredResult(_0x455b0,_0x567c83){return function(_0x1a4a98){if(_0x1a4a98){var _0x5a5a1d=typeof _0x567c83['offset']==='undefined'&&typeof _0x567c83[_0x88cd('0x1d')]===_0x88cd('0x1e');var _0x4c94da=_0x1a4a98['count'];var _0x1f6778=_0x5a5a1d?0x0:_0x567c83[_0x88cd('0x1f')];var _0x3c2db8=_0x5a5a1d?_0x1a4a98[_0x88cd('0x20')]:_0x567c83['offset']+_0x567c83[_0x88cd('0x1d')];var _0x33fef6;if(_0x3c2db8>=_0x4c94da){_0x3c2db8=_0x4c94da;_0x33fef6=0xc8;}else{_0x33fef6=0xce;}_0x455b0[_0x88cd('0x1c')](_0x33fef6);return _0x455b0[_0x88cd('0x21')]('Content-Range',_0x1f6778+'-'+_0x3c2db8+'/'+_0x4c94da)[_0x88cd('0x22')](_0x1a4a98);}return null;};}function patchUpdates(_0x259eb2){return function(_0x39d28e){try{jsonpatch['apply'](_0x39d28e,_0x259eb2,!![]);}catch(_0x142474){return BPromise[_0x88cd('0x23')](_0x142474);}return _0x39d28e['save']();};}function saveUpdates(_0x171c37,_0xdb1f98){return function(_0x7ba85a){if(_0x7ba85a){return _0x7ba85a[_0x88cd('0x24')](_0x171c37)[_0x88cd('0x25')](function(_0x2748db){return _0x2748db;});}return null;};}function removeEntity(_0x549bd2,_0x3dd4df){return function(_0x251008){if(_0x251008){return _0x251008[_0x88cd('0x26')]()[_0x88cd('0x25')](function(){_0x549bd2[_0x88cd('0x1c')](0xcc)[_0x88cd('0x27')]();});}};}function handleEntityNotFound(_0x2fe8e0,_0x37a0f7){return function(_0x3deeb0){if(!_0x3deeb0){_0x2fe8e0[_0x88cd('0x1b')](0x194);}return _0x3deeb0;};}function handleError(_0x3e9f0d,_0x1ee603){_0x1ee603=_0x1ee603||0x1f4;return function(_0x1e970d){logger['error'](_0x1e970d[_0x88cd('0x28')]);if(_0x1e970d['name']){delete _0x1e970d[_0x88cd('0x29')];}_0x3e9f0d[_0x88cd('0x1c')](_0x1ee603)[_0x88cd('0x2a')](_0x1e970d);};}exports[_0x88cd('0x2b')]=function(_0x2b9fb1,_0x54efad){var _0xad6c6f={},_0x110949={},_0x120ab6={'count':0x0,'rows':[]};var _0x2a8e6f=_[_0x88cd('0x2c')](db[_0x88cd('0x2d')][_0x88cd('0x2e')],function(_0x4372c8){return{'name':_0x4372c8[_0x88cd('0x2f')],'type':_0x4372c8[_0x88cd('0x30')]['key']};});_0x110949[_0x88cd('0x31')]=_[_0x88cd('0x2c')](_0x2a8e6f,_0x88cd('0x29'));_0x110949[_0x88cd('0x32')]=_[_0x88cd('0x33')](_0x2b9fb1['query']);_0x110949[_0x88cd('0x34')]=_[_0x88cd('0x35')](_0x110949[_0x88cd('0x31')],_0x110949[_0x88cd('0x32')]);_0xad6c6f[_0x88cd('0x36')]=_[_0x88cd('0x35')](_0x110949['model'],qs['fields'](_0x2b9fb1[_0x88cd('0x32')][_0x88cd('0x37')]));_0xad6c6f[_0x88cd('0x36')]=_0xad6c6f[_0x88cd('0x36')][_0x88cd('0x38')]?_0xad6c6f[_0x88cd('0x36')]:_0x110949[_0x88cd('0x31')];if(!_0x2b9fb1[_0x88cd('0x32')][_0x88cd('0x39')]('nolimit')){_0xad6c6f[_0x88cd('0x1d')]=qs[_0x88cd('0x1d')](_0x2b9fb1[_0x88cd('0x32')]['limit']);_0xad6c6f['offset']=qs[_0x88cd('0x1f')](_0x2b9fb1[_0x88cd('0x32')][_0x88cd('0x1f')]);}_0xad6c6f['order']=qs[_0x88cd('0x3a')](_0x2b9fb1[_0x88cd('0x32')]['sort']);_0xad6c6f[_0x88cd('0x3b')]=qs['filters'](_[_0x88cd('0x3c')](_0x2b9fb1[_0x88cd('0x32')],_0x110949[_0x88cd('0x34')]),_0x2a8e6f);if(_0x2b9fb1[_0x88cd('0x32')][_0x88cd('0x3d')]){_0xad6c6f[_0x88cd('0x3b')]=_[_0x88cd('0x3e')](_0xad6c6f[_0x88cd('0x3b')],{'$or':_[_0x88cd('0x2c')](_0x2a8e6f,function(_0x399ffe){if(_0x399ffe['type']!==_0x88cd('0x3f')){var _0x12daa7={};_0x12daa7[_0x399ffe[_0x88cd('0x29')]]={'$like':'%'+_0x2b9fb1['query'][_0x88cd('0x3d')]+'%'};return _0x12daa7;}})});}_0xad6c6f=_[_0x88cd('0x3e')]({},_0xad6c6f,_0x2b9fb1[_0x88cd('0x40')]);var _0x4b2fcf={'where':_0xad6c6f[_0x88cd('0x3b')]};return db[_0x88cd('0x2d')][_0x88cd('0x20')](_0x4b2fcf)[_0x88cd('0x25')](function(_0x1ece31){_0x120ab6[_0x88cd('0x20')]=_0x1ece31;if(_0x2b9fb1[_0x88cd('0x32')][_0x88cd('0x41')]){_0xad6c6f[_0x88cd('0x42')]=[{'all':!![]}];}return db[_0x88cd('0x2d')][_0x88cd('0x43')](_0xad6c6f);})[_0x88cd('0x25')](function(_0xf5f52d){_0x120ab6['rows']=_0xf5f52d;return _0x120ab6;})[_0x88cd('0x25')](respondWithFilteredResult(_0x54efad,_0xad6c6f))['catch'](handleError(_0x54efad,null));};exports[_0x88cd('0x44')]=function(_0x5a60a0,_0x113c3b){var _0x2fa178={'raw':![],'where':{'id':_0x5a60a0[_0x88cd('0x45')]['id']}},_0x4fd301={};_0x4fd301[_0x88cd('0x31')]=_[_0x88cd('0x33')](db[_0x88cd('0x2d')][_0x88cd('0x2e')]);_0x4fd301[_0x88cd('0x32')]=_[_0x88cd('0x33')](_0x5a60a0[_0x88cd('0x32')]);_0x4fd301[_0x88cd('0x34')]=_[_0x88cd('0x35')](_0x4fd301[_0x88cd('0x31')],_0x4fd301['query']);_0x2fa178[_0x88cd('0x36')]=_[_0x88cd('0x35')](_0x4fd301[_0x88cd('0x31')],qs[_0x88cd('0x37')](_0x5a60a0['query'][_0x88cd('0x37')]));_0x2fa178[_0x88cd('0x36')]=_0x2fa178[_0x88cd('0x36')][_0x88cd('0x38')]?_0x2fa178['attributes']:_0x4fd301['model'];if(_0x5a60a0['query'][_0x88cd('0x41')]){_0x2fa178[_0x88cd('0x42')]=[{'all':!![]}];}_0x2fa178=_[_0x88cd('0x3e')]({},_0x2fa178,_0x5a60a0[_0x88cd('0x40')]);return db[_0x88cd('0x2d')][_0x88cd('0x46')](_0x2fa178)['then'](handleEntityNotFound(_0x113c3b,null))[_0x88cd('0x25')](respondWithResult(_0x113c3b,null))['catch'](handleError(_0x113c3b,null));};exports[_0x88cd('0x47')]=function(_0x210d97,_0x3c4e30){return db['DeskAccount'][_0x88cd('0x47')](_0x210d97['body'],{})[_0x88cd('0x25')](respondWithResult(_0x3c4e30,0xc9))[_0x88cd('0x48')](handleError(_0x3c4e30,null));};exports[_0x88cd('0x24')]=function(_0x489e34,_0x554a81){if(_0x489e34[_0x88cd('0x49')]['id']){delete _0x489e34['body']['id'];}return db[_0x88cd('0x2d')][_0x88cd('0x46')]({'where':{'id':_0x489e34[_0x88cd('0x45')]['id']}})['then'](handleEntityNotFound(_0x554a81,null))[_0x88cd('0x25')](saveUpdates(_0x489e34[_0x88cd('0x49')],null))['then'](respondWithResult(_0x554a81,null))[_0x88cd('0x48')](handleError(_0x554a81,null));};exports[_0x88cd('0x26')]=function(_0x45ac74,_0x38be38){return db['DeskAccount'][_0x88cd('0x46')]({'where':{'id':_0x45ac74[_0x88cd('0x45')]['id']}})[_0x88cd('0x25')](handleEntityNotFound(_0x38be38,null))[_0x88cd('0x25')](removeEntity(_0x38be38,null))['catch'](handleError(_0x38be38,null));};exports[_0x88cd('0x4a')]=function(_0x21956b,_0x14ca5b,_0x22a5bd){var _0x4f9ab7={};var _0x282608={};var _0x2b63b0;var _0x58002e;return db['DeskAccount'][_0x88cd('0x4b')]({'where':{'id':_0x21956b['params']['id']}})['then'](handleEntityNotFound(_0x14ca5b,null))[_0x88cd('0x25')](function(_0x270754){if(_0x270754){_0x2b63b0=_0x270754;_0x282608[_0x88cd('0x31')]=_[_0x88cd('0x33')](db[_0x88cd('0x4c')][_0x88cd('0x2e')]);_0x282608[_0x88cd('0x32')]=_[_0x88cd('0x33')](_0x21956b[_0x88cd('0x32')]);_0x282608[_0x88cd('0x34')]=_[_0x88cd('0x35')](_0x282608[_0x88cd('0x31')],_0x282608[_0x88cd('0x32')]);_0x4f9ab7[_0x88cd('0x36')]=_[_0x88cd('0x35')](_0x282608[_0x88cd('0x31')],qs['fields'](_0x21956b['query'][_0x88cd('0x37')]));_0x4f9ab7['attributes']=_0x4f9ab7['attributes']['length']?_0x4f9ab7[_0x88cd('0x36')]:_0x282608[_0x88cd('0x31')];_0x4f9ab7[_0x88cd('0x4d')]=qs[_0x88cd('0x3a')](_0x21956b[_0x88cd('0x32')][_0x88cd('0x3a')]);_0x4f9ab7[_0x88cd('0x3b')]=qs[_0x88cd('0x34')](_[_0x88cd('0x3c')](_0x21956b[_0x88cd('0x32')],_0x282608['filters']));if(_0x21956b[_0x88cd('0x32')]['filter']){_0x4f9ab7[_0x88cd('0x3b')]=_['merge'](_0x4f9ab7[_0x88cd('0x3b')],{'$or':_[_0x88cd('0x2c')](_0x4f9ab7[_0x88cd('0x36')],function(_0x54cc9d){var _0x1c3105={};_0x1c3105[_0x54cc9d]={'$like':'%'+_0x21956b[_0x88cd('0x32')][_0x88cd('0x3d')]+'%'};return _0x1c3105;})});}_0x4f9ab7=_[_0x88cd('0x3e')]({},_0x4f9ab7,_0x21956b['options']);return _0x2b63b0[_0x88cd('0x4a')](_0x4f9ab7);}})[_0x88cd('0x25')](function(_0x438ab6){if(_0x438ab6){_0x58002e=_0x438ab6[_0x88cd('0x38')];if(!_0x21956b[_0x88cd('0x32')]['hasOwnProperty']('nolimit')){_0x4f9ab7[_0x88cd('0x1d')]=qs[_0x88cd('0x1d')](_0x21956b[_0x88cd('0x32')][_0x88cd('0x1d')]);_0x4f9ab7['offset']=qs[_0x88cd('0x1f')](_0x21956b[_0x88cd('0x32')][_0x88cd('0x1f')]);}return _0x2b63b0[_0x88cd('0x4a')](_0x4f9ab7);}})['then'](function(_0x5cc2d8){if(_0x5cc2d8){return _0x5cc2d8?{'count':_0x58002e,'rows':_0x5cc2d8}:null;}})[_0x88cd('0x25')](respondWithResult(_0x14ca5b,null))['catch'](handleError(_0x14ca5b,null));};exports[_0x88cd('0x4e')]=function(_0x16328b,_0x43732c,_0x15ad05){if(_0x16328b[_0x88cd('0x49')]['id']){delete _0x16328b[_0x88cd('0x49')]['id'];}return db[_0x88cd('0x2d')][_0x88cd('0x4b')]({'where':{'id':_0x16328b['params']['id']}})['then'](handleEntityNotFound(_0x43732c,null))[_0x88cd('0x25')](function(_0x1af0e6){if(_0x1af0e6){_0x16328b[_0x88cd('0x49')][_0x88cd('0x4f')]=_0x1af0e6['id'];_0x16328b[_0x88cd('0x49')][_0x88cd('0x50')]=integrations['getSubjects'](_0x16328b[_0x88cd('0x49')][_0x88cd('0x51')],_0x16328b[_0x88cd('0x49')][_0x88cd('0x30')]);_0x16328b[_0x88cd('0x49')]['Descriptions']=integrations[_0x88cd('0x52')](_0x16328b['body'][_0x88cd('0x51')],_0x16328b[_0x88cd('0x49')]['type']);return db['DeskConfiguration'][_0x88cd('0x47')](_0x16328b[_0x88cd('0x49')],{'include':[{'model':db[_0x88cd('0x53')],'as':_0x88cd('0x50')},{'model':db[_0x88cd('0x53')],'as':_0x88cd('0x54')}]});}return null;})['then'](respondWithResult(_0x43732c,null))[_0x88cd('0x48')](handleError(_0x43732c,null));};exports[_0x88cd('0x55')]=function(_0x39a5d1,_0x52bbe1,_0x4f34fa){var _0xaffa34=[{'name':_0x88cd('0x56'),'label':'priority','custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x4f28da='';return db['DeskAccount'][_0x88cd('0x4b')]({'where':{'id':_0x39a5d1['params']['id']},'attributes':['id',_0x88cd('0x57'),'authType',_0x88cd('0x58'),'password',_0x88cd('0x59'),'consumerSecret',_0x88cd('0x5a'),_0x88cd('0x5b')]})[_0x88cd('0x25')](handleEntityNotFound(_0x52bbe1,null))['then'](function(_0x13078f){if(_0x13078f){_0x4f28da=_0x13078f[_0x88cd('0x57')];var _0x7b69d4=_0x4f28da[_0x88cd('0x5c')](-0x1);if(_0x7b69d4==='/'){_0x4f28da=_0x4f28da[_0x88cd('0x5d')](0x0,_0x4f28da[_0x88cd('0x5e')](_0x7b69d4));}var _0xc6c079={'method':_0x88cd('0x5f'),'uri':util['format']('%s/custom_fields',_0x4f28da),'headers':{'Content-Type':_0x88cd('0x60'),'Accept':_0x88cd('0x60')},'json':!![]};if(_0x13078f[_0x88cd('0x61')]===_0x88cd('0x62')){_0xc6c079[_0x88cd('0x63')][_0x88cd('0x64')]=util['format'](_0x88cd('0x65'),new Buffer(util['format'](_0x88cd('0x66'),_0x13078f[_0x88cd('0x58')],_0x13078f[_0x88cd('0x67')]))['toString'](_0x88cd('0x68')));}return rp(_0xc6c079)[_0x88cd('0x25')](function(_0x4dee33){return _0xaffa34[_0x88cd('0x69')](_['map'](_0x4dee33['_embedded'][_0x88cd('0x6a')],function(_0xece3bd){return{'id':_0xece3bd[_0x88cd('0x29')],'name':_0xece3bd[_0x88cd('0x29')],'type':_0xece3bd[_0x88cd('0x30')],'active':_0xece3bd[_0x88cd('0x6b')],'label':_0xece3bd[_0x88cd('0x6c')],'custom':!![]};}));});}})[_0x88cd('0x25')](function(_0x5bed2c){return{'count':_0x5bed2c[_0x88cd('0x38')],'rows':_0x5bed2c};})[_0x88cd('0x25')](respondWithResult(_0x52bbe1,null))[_0x88cd('0x48')](function(_0x5243fb){var _0x5ee0e7=_0x39a5d1[_0x88cd('0x32')][_0x88cd('0x6d')]?0x1f4:_0x5243fb[_0x88cd('0x6e')]||0x1f4;logger[_0x88cd('0x6f')](_0x88cd('0x70'),_0x88cd('0x55'),_0x5ee0e7,JSON[_0x88cd('0x71')](_0x5243fb));delete _0x5243fb[_0x88cd('0x29')];if(_0x5ee0e7===0x191){_0x5ee0e7=0x190;}_0x52bbe1[_0x88cd('0x1c')](_0x5ee0e7)[_0x88cd('0x2a')](_0x39a5d1[_0x88cd('0x32')][_0x88cd('0x6d')]?{'message':_0x88cd('0x72'),'statusCode':_0x5243fb[_0x88cd('0x6e')]}:_0x5243fb);});};
\ No newline at end of file
index c4c6838..c779431 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x779a=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','exports','int_desk_accounts','lodash','util','../../config/logger','api'];(function(_0x150abc,_0x4cf93c){var _0x1dc4d4=function(_0x10dee2){while(--_0x10dee2){_0x150abc['push'](_0x150abc['shift']());}};_0x1dc4d4(++_0x4cf93c);}(_0x779a,0xf8));var _0xa779=function(_0x283abb,_0x43010c){_0x283abb=_0x283abb-0x0;var _0x4644b4=_0x779a[_0x283abb];return _0x4644b4;};'use strict';var _=require(_0xa779('0x0'));var util=require(_0xa779('0x1'));var logger=require(_0xa779('0x2'))(_0xa779('0x3'));var moment=require(_0xa779('0x4'));var BPromise=require(_0xa779('0x5'));var rp=require(_0xa779('0x6'));var fs=require('fs');var path=require(_0xa779('0x7'));var rimraf=require(_0xa779('0x8'));var config=require(_0xa779('0x9'));var attributes=require(_0xa779('0xa'));var integrations=require(_0xa779('0xb'));module[_0xa779('0xc')]=function(_0x39dbf5,_0x476322){return _0x39dbf5['define']('DeskAccount',attributes,{'tableName':_0xa779('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x149b=['api','bluebird','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','DeskAccount','int_desk_accounts','lodash'];(function(_0x3356fd,_0x365121){var _0x5cafa2=function(_0x441110){while(--_0x441110){_0x3356fd['push'](_0x3356fd['shift']());}};_0x5cafa2(++_0x365121);}(_0x149b,0x121));var _0xb149=function(_0x3f9e16,_0x4298a7){_0x3f9e16=_0x3f9e16-0x0;var _0x22d0bf=_0x149b[_0x3f9e16];return _0x22d0bf;};'use strict';var _=require(_0xb149('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb149('0x1'));var moment=require('moment');var BPromise=require(_0xb149('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb149('0x3'));var config=require(_0xb149('0x4'));var attributes=require('./intDeskAccount.attributes');var integrations=require(_0xb149('0x5'));module[_0xb149('0x6')]=function(_0x297f80,_0x5293ab){return _0x297f80[_0xb149('0x7')](_0xb149('0x8'),attributes,{'tableName':_0xb149('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8afba66..793bdb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf60c=['jayson/promise','client','http','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','DeskAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','GetDeskAccount','DeskAccount','options','raw','where','map','include','model','attributes','debug','catch','ShowDeskAccount','stringify','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x276468,_0x29685a){var _0x36dc3a=function(_0x291f0a){while(--_0x291f0a){_0x276468['push'](_0x276468['shift']());}};_0x36dc3a(++_0x29685a);}(_0xf60c,0x139));var _0xcf60=function(_0x2df8e3,_0x40ad2c){_0x2df8e3=_0x2df8e3-0x0;var _0x3e0c90=_0xf60c[_0x2df8e3];return _0x3e0c90;};'use strict';var _=require('lodash');var util=require(_0xcf60('0x0'));var moment=require('moment');var BPromise=require(_0xcf60('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcf60('0x2'));var db=require(_0xcf60('0x3'))['db'];var utils=require(_0xcf60('0x4'));var logger=require(_0xcf60('0x5'))('rpc');var config=require(_0xcf60('0x6'));var jayson=require(_0xcf60('0x7'));var client=jayson[_0xcf60('0x8')][_0xcf60('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4761f0,_0x250df2,_0x2ff2ce){return new BPromise(function(_0xd0f517,_0x92cfc4){return client['request'](_0x4761f0,_0x2ff2ce)[_0xcf60('0xa')](function(_0x30fedf){logger[_0xcf60('0xb')](_0xcf60('0xc'),_0x250df2,_0xcf60('0xd'));logger['debug'](_0xcf60('0xe'),_0x250df2,_0xcf60('0xd'),JSON['stringify'](_0x30fedf));if(_0x30fedf[_0xcf60('0xf')]){if(_0x30fedf['error'][_0xcf60('0x10')]===0x1f4){logger['error'](_0xcf60('0xc'),_0x250df2,_0x30fedf['error'][_0xcf60('0x11')]);return _0x92cfc4(_0x30fedf[_0xcf60('0xf')][_0xcf60('0x11')]);}logger['error'](_0xcf60('0xc'),_0x250df2,_0x30fedf['error'][_0xcf60('0x11')]);return _0xd0f517(_0x30fedf[_0xcf60('0xf')][_0xcf60('0x11')]);}else{logger[_0xcf60('0xb')]('DeskAccount,\x20%s,\x20%s',_0x250df2,_0xcf60('0xd'));_0xd0f517(_0x30fedf[_0xcf60('0x12')][_0xcf60('0x11')]);}})['catch'](function(_0x58a1bc){logger[_0xcf60('0xf')](_0xcf60('0xc'),_0x250df2,_0x58a1bc);_0x92cfc4(_0x58a1bc);});});}exports[_0xcf60('0x13')]=function(_0x248ce1){var _0x1326c7=this;return new Promise(function(_0x4cba76,_0x3c356a){return db[_0xcf60('0x14')]['findAll']({'raw':_0x248ce1['options']?_0x248ce1[_0xcf60('0x15')][_0xcf60('0x16')]===undefined?!![]:![]:!![],'where':_0x248ce1[_0xcf60('0x15')]?_0x248ce1[_0xcf60('0x15')][_0xcf60('0x17')]||null:null,'attributes':_0x248ce1[_0xcf60('0x15')]?_0x248ce1['options']['attributes']||null:null,'limit':_0x248ce1[_0xcf60('0x15')]?_0x248ce1[_0xcf60('0x15')]['limit']||null:null,'include':_0x248ce1['options']?_0x248ce1[_0xcf60('0x15')]['include']?_[_0xcf60('0x18')](_0x248ce1[_0xcf60('0x15')][_0xcf60('0x19')],function(_0x3bb402){return{'model':db[_0x3bb402[_0xcf60('0x1a')]],'as':_0x3bb402['as'],'attributes':_0x3bb402[_0xcf60('0x1b')],'include':_0x3bb402['include']?_[_0xcf60('0x18')](_0x3bb402[_0xcf60('0x19')],function(_0x4812e8){return{'model':db[_0x4812e8['model']],'as':_0x4812e8['as'],'attributes':_0x4812e8[_0xcf60('0x1b')],'include':_0x4812e8[_0xcf60('0x19')]?_[_0xcf60('0x18')](_0x4812e8[_0xcf60('0x19')],function(_0x343ec1){return{'model':db[_0x343ec1[_0xcf60('0x1a')]],'as':_0x343ec1['as'],'attributes':_0x343ec1[_0xcf60('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xcf60('0xa')](function(_0x42d518){logger['info'](_0xcf60('0x13'),_0x248ce1);logger[_0xcf60('0x1c')](_0xcf60('0x13'),_0x248ce1,JSON['stringify'](_0x42d518));_0x4cba76(_0x42d518);})[_0xcf60('0x1d')](function(_0x258200){logger[_0xcf60('0xf')](_0xcf60('0x13'),_0x258200[_0xcf60('0x11')],_0x248ce1);_0x3c356a(_0x1326c7[_0xcf60('0xf')](0x1f4,_0x258200['message']));});});};exports[_0xcf60('0x1e')]=function(_0x22c50d){var _0x12c2c6=this;return new Promise(function(_0x8e0c79,_0x4ce381){return db['DeskAccount']['find']({'raw':_0x22c50d['options']?_0x22c50d['options']['raw']===undefined?!![]:![]:!![],'where':_0x22c50d[_0xcf60('0x15')]?_0x22c50d[_0xcf60('0x15')][_0xcf60('0x17')]||null:null,'attributes':_0x22c50d[_0xcf60('0x15')]?_0x22c50d[_0xcf60('0x15')][_0xcf60('0x1b')]||null:null,'include':_0x22c50d[_0xcf60('0x15')]?_0x22c50d[_0xcf60('0x15')][_0xcf60('0x19')]?_[_0xcf60('0x18')](_0x22c50d[_0xcf60('0x15')][_0xcf60('0x19')],function(_0x51124a){return{'model':db[_0x51124a[_0xcf60('0x1a')]],'as':_0x51124a['as'],'attributes':_0x51124a['attributes'],'include':_0x51124a[_0xcf60('0x19')]?_[_0xcf60('0x18')](_0x51124a[_0xcf60('0x19')],function(_0x43d688){return{'model':db[_0x43d688['model']],'as':_0x43d688['as'],'attributes':_0x43d688[_0xcf60('0x1b')],'include':_0x43d688['include']?_[_0xcf60('0x18')](_0x43d688['include'],function(_0x34895d){return{'model':db[_0x34895d['model']],'as':_0x34895d['as'],'attributes':_0x34895d[_0xcf60('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xcf60('0xa')](function(_0x594adb){logger[_0xcf60('0xb')](_0xcf60('0x1e'),_0x22c50d);logger[_0xcf60('0x1c')](_0xcf60('0x1e'),_0x22c50d,JSON[_0xcf60('0x1f')](_0x594adb));_0x8e0c79(_0x594adb);})[_0xcf60('0x1d')](function(_0x3006b1){logger['error'](_0xcf60('0x1e'),_0x3006b1[_0xcf60('0x11')],_0x22c50d);_0x4ce381(_0x12c2c6[_0xcf60('0xf')](0x1f4,_0x3006b1[_0xcf60('0x11')]));});});};
\ No newline at end of file
+var _0xa19a=['request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','DeskAccount','findAll','options','raw','attributes','include','model','map','GetDeskAccount','ShowDeskAccount','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','DeskAccount,\x20%s,\x20%s'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0xa19a,0x153));var _0xaa19=function(_0x2f16,_0xd6ad82){_0x2f16=_0x2f16-0x0;var _0x2d34c7=_0xa19a[_0x2f16];return _0x2d34c7;};'use strict';var _=require(_0xaa19('0x0'));var util=require(_0xaa19('0x1'));var moment=require('moment');var BPromise=require(_0xaa19('0x2'));var rs=require(_0xaa19('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaa19('0x4'))['db'];var utils=require(_0xaa19('0x5'));var logger=require(_0xaa19('0x6'))('rpc');var config=require(_0xaa19('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xaa19('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x227d70,_0x5a1d9d,_0x35a595){return new BPromise(function(_0x402358,_0x448623){return client[_0xaa19('0x9')](_0x227d70,_0x35a595)[_0xaa19('0xa')](function(_0x1055c5){logger[_0xaa19('0xb')](_0xaa19('0xc'),_0x5a1d9d,_0xaa19('0xd'));logger[_0xaa19('0xe')](_0xaa19('0xf'),_0x5a1d9d,_0xaa19('0xd'),JSON[_0xaa19('0x10')](_0x1055c5));if(_0x1055c5[_0xaa19('0x11')]){if(_0x1055c5[_0xaa19('0x11')][_0xaa19('0x12')]===0x1f4){logger['error'](_0xaa19('0xc'),_0x5a1d9d,_0x1055c5[_0xaa19('0x11')][_0xaa19('0x13')]);return _0x448623(_0x1055c5['error'][_0xaa19('0x13')]);}logger[_0xaa19('0x11')](_0xaa19('0xc'),_0x5a1d9d,_0x1055c5[_0xaa19('0x11')][_0xaa19('0x13')]);return _0x402358(_0x1055c5[_0xaa19('0x11')][_0xaa19('0x13')]);}else{logger[_0xaa19('0xb')](_0xaa19('0xc'),_0x5a1d9d,_0xaa19('0xd'));_0x402358(_0x1055c5[_0xaa19('0x14')][_0xaa19('0x13')]);}})[_0xaa19('0x15')](function(_0x3ff046){logger[_0xaa19('0x11')](_0xaa19('0xc'),_0x5a1d9d,_0x3ff046);_0x448623(_0x3ff046);});});}exports['GetDeskAccount']=function(_0x3bf896){var _0xff8ed1=this;return new Promise(function(_0x270d9a,_0x53f4f1){return db[_0xaa19('0x16')][_0xaa19('0x17')]({'raw':_0x3bf896[_0xaa19('0x18')]?_0x3bf896['options'][_0xaa19('0x19')]===undefined?!![]:![]:!![],'where':_0x3bf896['options']?_0x3bf896[_0xaa19('0x18')]['where']||null:null,'attributes':_0x3bf896['options']?_0x3bf896[_0xaa19('0x18')][_0xaa19('0x1a')]||null:null,'limit':_0x3bf896[_0xaa19('0x18')]?_0x3bf896['options']['limit']||null:null,'include':_0x3bf896['options']?_0x3bf896[_0xaa19('0x18')]['include']?_['map'](_0x3bf896[_0xaa19('0x18')][_0xaa19('0x1b')],function(_0x3c4714){return{'model':db[_0x3c4714[_0xaa19('0x1c')]],'as':_0x3c4714['as'],'attributes':_0x3c4714[_0xaa19('0x1a')],'include':_0x3c4714[_0xaa19('0x1b')]?_[_0xaa19('0x1d')](_0x3c4714['include'],function(_0x3b9094){return{'model':db[_0x3b9094[_0xaa19('0x1c')]],'as':_0x3b9094['as'],'attributes':_0x3b9094['attributes'],'include':_0x3b9094[_0xaa19('0x1b')]?_['map'](_0x3b9094['include'],function(_0x25d40d){return{'model':db[_0x25d40d[_0xaa19('0x1c')]],'as':_0x25d40d['as'],'attributes':_0x25d40d[_0xaa19('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xaa19('0xa')](function(_0x408fdd){logger[_0xaa19('0xb')](_0xaa19('0x1e'),_0x3bf896);logger['debug'](_0xaa19('0x1e'),_0x3bf896,JSON[_0xaa19('0x10')](_0x408fdd));_0x270d9a(_0x408fdd);})[_0xaa19('0x15')](function(_0x3b10f2){logger[_0xaa19('0x11')](_0xaa19('0x1e'),_0x3b10f2[_0xaa19('0x13')],_0x3bf896);_0x53f4f1(_0xff8ed1[_0xaa19('0x11')](0x1f4,_0x3b10f2[_0xaa19('0x13')]));});});};exports[_0xaa19('0x1f')]=function(_0x20acc){var _0x2e2d1b=this;return new Promise(function(_0x300112,_0x237ec9){return db[_0xaa19('0x16')]['find']({'raw':_0x20acc[_0xaa19('0x18')]?_0x20acc['options'][_0xaa19('0x19')]===undefined?!![]:![]:!![],'where':_0x20acc[_0xaa19('0x18')]?_0x20acc[_0xaa19('0x18')]['where']||null:null,'attributes':_0x20acc[_0xaa19('0x18')]?_0x20acc['options'][_0xaa19('0x1a')]||null:null,'include':_0x20acc[_0xaa19('0x18')]?_0x20acc[_0xaa19('0x18')][_0xaa19('0x1b')]?_[_0xaa19('0x1d')](_0x20acc[_0xaa19('0x18')][_0xaa19('0x1b')],function(_0x65c801){return{'model':db[_0x65c801[_0xaa19('0x1c')]],'as':_0x65c801['as'],'attributes':_0x65c801['attributes'],'include':_0x65c801[_0xaa19('0x1b')]?_[_0xaa19('0x1d')](_0x65c801[_0xaa19('0x1b')],function(_0x2716ef){return{'model':db[_0x2716ef[_0xaa19('0x1c')]],'as':_0x2716ef['as'],'attributes':_0x2716ef[_0xaa19('0x1a')],'include':_0x2716ef['include']?_[_0xaa19('0x1d')](_0x2716ef[_0xaa19('0x1b')],function(_0x559d4f){return{'model':db[_0x559d4f[_0xaa19('0x1c')]],'as':_0x559d4f['as'],'attributes':_0x559d4f[_0xaa19('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x238152){logger[_0xaa19('0xb')]('ShowDeskAccount',_0x20acc);logger['debug']('ShowDeskAccount',_0x20acc,JSON['stringify'](_0x238152));_0x300112(_0x238152);})[_0xaa19('0x15')](function(_0x471108){logger[_0xaa19('0x11')](_0xaa19('0x1f'),_0x471108[_0xaa19('0x13')],_0x20acc);_0x237ec9(_0x2e2d1b['error'](0x1f4,_0x471108[_0xaa19('0x13')]));});});};
\ No newline at end of file
index 68d49ab..7c1fe6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','setTags','put','/:id','update','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service'];(function(_0x2a276d,_0x482b0c){var _0x2914cd=function(_0x452b8b){while(--_0x452b8b){_0x2a276d['push'](_0x2a276d['shift']());}};_0x2914cd(++_0x482b0c);}(_0x55ca,0x126));var _0xa55c=function(_0x4a53d,_0x58a95e){_0x4a53d=_0x4a53d-0x0;var _0x27410e=_0x55ca[_0x4a53d];return _0x27410e;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['get'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller['getFields']);router['get'](_0xa55c('0xc'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xd')]);router[_0xa55c('0x7')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);router[_0xa55c('0x7')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller['getTags']);router['post']('/',auth[_0xa55c('0x8')](),controller['create']);router['post']('/:id/tags',auth[_0xa55c('0x8')](),controller[_0xa55c('0x11')]);router[_0xa55c('0x12')](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x14')]);router['delete'](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x15')]);module[_0xa55c('0x16')]=router;
\ No newline at end of file
+var _0x3e74=['show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','getTags','post','/:id/tags','setTags','update','delete','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id'];(function(_0x516ae9,_0x5c0035){var _0x299b06=function(_0x3c686e){while(--_0x3c686e){_0x516ae9['push'](_0x516ae9['shift']());}};_0x299b06(++_0x5c0035);}(_0x3e74,0x175));var _0x43e7=function(_0x28bd54,_0x524155){_0x28bd54=_0x28bd54-0x0;var _0x56dd13=_0x3e74[_0x28bd54];return _0x56dd13;};'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/subjects',auth[_0x43e7('0x8')](),controller[_0x43e7('0xe')]);router['get'](_0x43e7('0xf'),auth['isAuthenticated'](),controller[_0x43e7('0x10')]);router[_0x43e7('0x7')]('/:id/tags',auth[_0x43e7('0x8')](),controller[_0x43e7('0x11')]);router[_0x43e7('0x12')]('/',auth[_0x43e7('0x8')](),controller['create']);router['post'](_0x43e7('0x13'),auth[_0x43e7('0x8')](),controller[_0x43e7('0x14')]);router['put']('/:id',auth[_0x43e7('0x8')](),controller[_0x43e7('0x15')]);router[_0x43e7('0x16')](_0x43e7('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x43e7('0x17')]=router;
\ No newline at end of file
index acb90b0..d883d4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7403=['STRING','sequelize','exports'];(function(_0x46e161,_0x1b2cff){var _0x294c3d=function(_0x5214a4){while(--_0x5214a4){_0x46e161['push'](_0x46e161['shift']());}};_0x294c3d(++_0x1b2cff);}(_0x7403,0x88));var _0x3740=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7403[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x3740('0x0'));module[_0x3740('0x1')]={'name':{'type':Sequelize[_0x3740('0x2')]},'description':{'type':Sequelize[_0x3740('0x2')]}};
\ No newline at end of file
+var _0x578b=['exports','STRING','sequelize'];(function(_0x5bcd55,_0x3d365e){var _0x463e4d=function(_0x587d98){while(--_0x587d98){_0x5bcd55['push'](_0x5bcd55['shift']());}};_0x463e4d(++_0x3d365e);}(_0x578b,0x1d3));var _0xb578=function(_0x3ced9d,_0x18daa5){_0x3ced9d=_0x3ced9d-0x0;var _0xa06cbb=_0x578b[_0x3ced9d];return _0xa06cbb;};'use strict';var Sequelize=require(_0xb578('0x0'));module[_0xb578('0x1')]={'name':{'type':Sequelize[_0xb578('0x2')]},'description':{'type':Sequelize[_0xb578('0x2')]}};
\ No newline at end of file
index 9a14652..d48bf4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x295c=['show','params','rawAttributes','length','find','create','body','getFields','nolimit','getSubjects','findOne','DeskField','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','DeskConfiguration','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','order','sort','filters','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','catch'];(function(_0x1b6f32,_0x1b4424){var _0x2b1bf6=function(_0x501f9f){while(--_0x501f9f){_0x1b6f32['push'](_0x1b6f32['shift']());}};_0x2b1bf6(++_0x1b4424);}(_0x295c,0x116));var _0xc295=function(_0x49d8f2,_0x49469e){_0x49d8f2=_0x49d8f2-0x0;var _0x24083b=_0x295c[_0x49d8f2];return _0x24083b;};'use strict';var emlformat=require(_0xc295('0x0'));var rimraf=require(_0xc295('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc295('0x2'));var rp=require(_0xc295('0x3'));var moment=require('moment');var BPromise=require(_0xc295('0x4'));var Mustache=require(_0xc295('0x5'));var util=require('util');var path=require(_0xc295('0x6'));var sox=require(_0xc295('0x7'));var csv=require(_0xc295('0x8'));var ejs=require(_0xc295('0x9'));var fs=require('fs');var fs_extra=require(_0xc295('0xa'));var _=require(_0xc295('0xb'));var squel=require(_0xc295('0xc'));var crypto=require('crypto');var jsforce=require(_0xc295('0xd'));var deskjs=require(_0xc295('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc295('0xf'));var Redis=require(_0xc295('0x10'));var authService=require(_0xc295('0x11'));var qs=require(_0xc295('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc295('0x13'));var logger=require(_0xc295('0x14'))('api');var utils=require(_0xc295('0x15'));var config=require(_0xc295('0x16'));var licenseUtil=require(_0xc295('0x17'));var db=require(_0xc295('0x18'))['db'];function respondWithStatusCode(_0x281206,_0x517cc4){_0x517cc4=_0x517cc4||0xcc;return function(_0x5f40df){if(_0x5f40df){return _0x281206['sendStatus'](_0x517cc4);}return _0x281206[_0xc295('0x19')](_0x517cc4)[_0xc295('0x1a')]();};}function respondWithResult(_0x390515,_0x52170b){_0x52170b=_0x52170b||0xc8;return function(_0x1de243){if(_0x1de243){return _0x390515[_0xc295('0x19')](_0x52170b)[_0xc295('0x1b')](_0x1de243);}};}function respondWithFilteredResult(_0x41eb4a,_0x1ce4a5){return function(_0x1a45e1){if(_0x1a45e1){var _0x2f7911=typeof _0x1ce4a5[_0xc295('0x1c')]===_0xc295('0x1d')&&typeof _0x1ce4a5[_0xc295('0x1e')]===_0xc295('0x1d');var _0x186d41=_0x1a45e1['count'];var _0x40f308=_0x2f7911?0x0:_0x1ce4a5[_0xc295('0x1c')];var _0x262bf7=_0x2f7911?_0x1a45e1[_0xc295('0x1f')]:_0x1ce4a5[_0xc295('0x1c')]+_0x1ce4a5[_0xc295('0x1e')];var _0x3a30bb;if(_0x262bf7>=_0x186d41){_0x262bf7=_0x186d41;_0x3a30bb=0xc8;}else{_0x3a30bb=0xce;}_0x41eb4a[_0xc295('0x19')](_0x3a30bb);return _0x41eb4a[_0xc295('0x20')](_0xc295('0x21'),_0x40f308+'-'+_0x262bf7+'/'+_0x186d41)[_0xc295('0x1b')](_0x1a45e1);}return null;};}function patchUpdates(_0x4f9386){return function(_0x2aea9e){try{jsonpatch[_0xc295('0x22')](_0x2aea9e,_0x4f9386,!![]);}catch(_0x1d9106){return BPromise[_0xc295('0x23')](_0x1d9106);}return _0x2aea9e[_0xc295('0x24')]();};}function saveUpdates(_0x19492b,_0x47abf6){return function(_0x5d5632){if(_0x5d5632){return _0x5d5632[_0xc295('0x25')](_0x19492b)[_0xc295('0x26')](function(_0x4712c1){return _0x4712c1;});}return null;};}function removeEntity(_0x563cab,_0x27598c){return function(_0x15322d){if(_0x15322d){return _0x15322d[_0xc295('0x27')]()[_0xc295('0x26')](function(){_0x563cab[_0xc295('0x19')](0xcc)[_0xc295('0x1a')]();});}};}function handleEntityNotFound(_0x322566,_0x1a9807){return function(_0x350af5){if(!_0x350af5){_0x322566['sendStatus'](0x194);}return _0x350af5;};}function handleError(_0x4fd8dc,_0x327972){_0x327972=_0x327972||0x1f4;return function(_0x57c220){logger[_0xc295('0x28')](_0x57c220[_0xc295('0x29')]);if(_0x57c220['name']){delete _0x57c220[_0xc295('0x2a')];}_0x4fd8dc[_0xc295('0x19')](_0x327972)[_0xc295('0x2b')](_0x57c220);};}exports[_0xc295('0x2c')]=function(_0x6666cd,_0x242cae){var _0x2d04ea={},_0x3a6ed2={},_0x5467a8={'count':0x0,'rows':[]};var _0x4574d1=_[_0xc295('0x2d')](db[_0xc295('0x2e')]['rawAttributes'],function(_0xa88a47){return{'name':_0xa88a47['fieldName'],'type':_0xa88a47[_0xc295('0x2f')][_0xc295('0x30')]};});_0x3a6ed2[_0xc295('0x31')]=_[_0xc295('0x2d')](_0x4574d1,_0xc295('0x2a'));_0x3a6ed2[_0xc295('0x32')]=_[_0xc295('0x33')](_0x6666cd[_0xc295('0x32')]);_0x3a6ed2['filters']=_[_0xc295('0x34')](_0x3a6ed2['model'],_0x3a6ed2['query']);_0x2d04ea['attributes']=_['intersection'](_0x3a6ed2[_0xc295('0x31')],qs[_0xc295('0x35')](_0x6666cd[_0xc295('0x32')][_0xc295('0x35')]));_0x2d04ea[_0xc295('0x36')]=_0x2d04ea[_0xc295('0x36')]['length']?_0x2d04ea[_0xc295('0x36')]:_0x3a6ed2['model'];if(!_0x6666cd[_0xc295('0x32')][_0xc295('0x37')]('nolimit')){_0x2d04ea[_0xc295('0x1e')]=qs['limit'](_0x6666cd[_0xc295('0x32')]['limit']);_0x2d04ea[_0xc295('0x1c')]=qs['offset'](_0x6666cd[_0xc295('0x32')]['offset']);}_0x2d04ea[_0xc295('0x38')]=qs[_0xc295('0x39')](_0x6666cd['query'][_0xc295('0x39')]);_0x2d04ea['where']=qs[_0xc295('0x3a')](_[_0xc295('0x3b')](_0x6666cd[_0xc295('0x32')],_0x3a6ed2[_0xc295('0x3a')]),_0x4574d1);if(_0x6666cd[_0xc295('0x32')][_0xc295('0x3c')]){_0x2d04ea['where']=_[_0xc295('0x3d')](_0x2d04ea[_0xc295('0x3e')],{'$or':_[_0xc295('0x2d')](_0x4574d1,function(_0x2944a5){if(_0x2944a5[_0xc295('0x2f')]!==_0xc295('0x3f')){var _0x1434a2={};_0x1434a2[_0x2944a5['name']]={'$like':'%'+_0x6666cd[_0xc295('0x32')][_0xc295('0x3c')]+'%'};return _0x1434a2;}})});}_0x2d04ea=_['merge']({},_0x2d04ea,_0x6666cd[_0xc295('0x40')]);var _0x5abd55={'where':_0x2d04ea[_0xc295('0x3e')]};return db['DeskConfiguration'][_0xc295('0x1f')](_0x5abd55)[_0xc295('0x26')](function(_0x5b2843){_0x5467a8[_0xc295('0x1f')]=_0x5b2843;if(_0x6666cd['query'][_0xc295('0x41')]){_0x2d04ea[_0xc295('0x42')]=[{'all':!![]}];}return db[_0xc295('0x2e')][_0xc295('0x43')](_0x2d04ea);})['then'](function(_0xf220ac){_0x5467a8[_0xc295('0x44')]=_0xf220ac;return _0x5467a8;})[_0xc295('0x26')](respondWithFilteredResult(_0x242cae,_0x2d04ea))[_0xc295('0x45')](handleError(_0x242cae,null));};exports[_0xc295('0x46')]=function(_0x40fe8f,_0x5efdad){var _0x19db62={'raw':![],'where':{'id':_0x40fe8f[_0xc295('0x47')]['id']}},_0x3c662d={};_0x3c662d['model']=_['keys'](db['DeskConfiguration'][_0xc295('0x48')]);_0x3c662d[_0xc295('0x32')]=_[_0xc295('0x33')](_0x40fe8f[_0xc295('0x32')]);_0x3c662d[_0xc295('0x3a')]=_[_0xc295('0x34')](_0x3c662d[_0xc295('0x31')],_0x3c662d['query']);_0x19db62[_0xc295('0x36')]=_['intersection'](_0x3c662d[_0xc295('0x31')],qs[_0xc295('0x35')](_0x40fe8f[_0xc295('0x32')]['fields']));_0x19db62[_0xc295('0x36')]=_0x19db62[_0xc295('0x36')][_0xc295('0x49')]?_0x19db62['attributes']:_0x3c662d[_0xc295('0x31')];if(_0x40fe8f[_0xc295('0x32')][_0xc295('0x41')]){_0x19db62[_0xc295('0x42')]=[{'all':!![]}];}_0x19db62=_['merge']({},_0x19db62,_0x40fe8f[_0xc295('0x40')]);return db['DeskConfiguration'][_0xc295('0x4a')](_0x19db62)['then'](handleEntityNotFound(_0x5efdad,null))['then'](respondWithResult(_0x5efdad,null))['catch'](handleError(_0x5efdad,null));};exports['create']=function(_0x27cc8d,_0x3a9e42){return db['DeskConfiguration'][_0xc295('0x4b')](_0x27cc8d['body'],{})[_0xc295('0x26')](respondWithResult(_0x3a9e42,0xc9))[_0xc295('0x45')](handleError(_0x3a9e42,null));};exports['update']=function(_0x46548c,_0x2c8092){if(_0x46548c[_0xc295('0x4c')]['id']){delete _0x46548c[_0xc295('0x4c')]['id'];}return db['DeskConfiguration'][_0xc295('0x4a')]({'where':{'id':_0x46548c[_0xc295('0x47')]['id']}})[_0xc295('0x26')](handleEntityNotFound(_0x2c8092,null))['then'](saveUpdates(_0x46548c[_0xc295('0x4c')],null))[_0xc295('0x26')](respondWithResult(_0x2c8092,null))['catch'](handleError(_0x2c8092,null));};exports[_0xc295('0x27')]=function(_0x198daf,_0x350a62){return db['DeskConfiguration'][_0xc295('0x4a')]({'where':{'id':_0x198daf[_0xc295('0x47')]['id']}})[_0xc295('0x26')](handleEntityNotFound(_0x350a62,null))['then'](removeEntity(_0x350a62,null))['catch'](handleError(_0x350a62,null));};exports[_0xc295('0x4d')]=function(_0x2f726e,_0x205a2e,_0xa331bb){var _0x437f9a={};var _0x2e24b0={};var _0x310b9b;var _0x5a0f51;return db[_0xc295('0x2e')]['findOne']({'where':{'id':_0x2f726e[_0xc295('0x47')]['id']}})[_0xc295('0x26')](handleEntityNotFound(_0x205a2e,null))[_0xc295('0x26')](function(_0x5c8cf6){if(_0x5c8cf6){_0x310b9b=_0x5c8cf6;_0x2e24b0[_0xc295('0x31')]=_[_0xc295('0x33')](db['DeskField'][_0xc295('0x48')]);_0x2e24b0[_0xc295('0x32')]=_[_0xc295('0x33')](_0x2f726e['query']);_0x2e24b0['filters']=_[_0xc295('0x34')](_0x2e24b0[_0xc295('0x31')],_0x2e24b0[_0xc295('0x32')]);_0x437f9a[_0xc295('0x36')]=_[_0xc295('0x34')](_0x2e24b0[_0xc295('0x31')],qs[_0xc295('0x35')](_0x2f726e['query'][_0xc295('0x35')]));_0x437f9a[_0xc295('0x36')]=_0x437f9a['attributes'][_0xc295('0x49')]?_0x437f9a[_0xc295('0x36')]:_0x2e24b0['model'];_0x437f9a[_0xc295('0x38')]=qs[_0xc295('0x39')](_0x2f726e[_0xc295('0x32')]['sort']);_0x437f9a[_0xc295('0x3e')]=qs[_0xc295('0x3a')](_[_0xc295('0x3b')](_0x2f726e[_0xc295('0x32')],_0x2e24b0['filters']));if(_0x2f726e[_0xc295('0x32')][_0xc295('0x3c')]){_0x437f9a[_0xc295('0x3e')]=_[_0xc295('0x3d')](_0x437f9a['where'],{'$or':_['map'](_0x437f9a[_0xc295('0x36')],function(_0x23e041){var _0xbc2464={};_0xbc2464[_0x23e041]={'$like':'%'+_0x2f726e['query'][_0xc295('0x3c')]+'%'};return _0xbc2464;})});}_0x437f9a=_[_0xc295('0x3d')]({},_0x437f9a,_0x2f726e[_0xc295('0x40')]);return _0x310b9b[_0xc295('0x4d')](_0x437f9a);}})['then'](function(_0x37ea90){if(_0x37ea90){_0x5a0f51=_0x37ea90['length'];if(!_0x2f726e[_0xc295('0x32')][_0xc295('0x37')](_0xc295('0x4e'))){_0x437f9a[_0xc295('0x1e')]=qs[_0xc295('0x1e')](_0x2f726e['query'][_0xc295('0x1e')]);_0x437f9a['offset']=qs[_0xc295('0x1c')](_0x2f726e[_0xc295('0x32')][_0xc295('0x1c')]);}return _0x310b9b[_0xc295('0x4d')](_0x437f9a);}})[_0xc295('0x26')](function(_0x1d0fd8){if(_0x1d0fd8){return _0x1d0fd8?{'count':_0x5a0f51,'rows':_0x1d0fd8}:null;}})[_0xc295('0x26')](respondWithResult(_0x205a2e,null))[_0xc295('0x45')](handleError(_0x205a2e,null));};exports[_0xc295('0x4f')]=function(_0x241cf8,_0x207bf3,_0x33e7ab){var _0x509af6={};var _0x4f0198={};var _0x3030a6;var _0x493cff;return db[_0xc295('0x2e')][_0xc295('0x50')]({'where':{'id':_0x241cf8['params']['id']}})[_0xc295('0x26')](handleEntityNotFound(_0x207bf3,null))[_0xc295('0x26')](function(_0x2c5806){if(_0x2c5806){_0x3030a6=_0x2c5806;_0x4f0198[_0xc295('0x31')]=_[_0xc295('0x33')](db[_0xc295('0x51')][_0xc295('0x48')]);_0x4f0198[_0xc295('0x32')]=_[_0xc295('0x33')](_0x241cf8[_0xc295('0x32')]);_0x4f0198[_0xc295('0x3a')]=_[_0xc295('0x34')](_0x4f0198[_0xc295('0x31')],_0x4f0198[_0xc295('0x32')]);_0x509af6['attributes']=_[_0xc295('0x34')](_0x4f0198[_0xc295('0x31')],qs['fields'](_0x241cf8[_0xc295('0x32')][_0xc295('0x35')]));_0x509af6['attributes']=_0x509af6[_0xc295('0x36')][_0xc295('0x49')]?_0x509af6[_0xc295('0x36')]:_0x4f0198[_0xc295('0x31')];_0x509af6[_0xc295('0x38')]=qs[_0xc295('0x39')](_0x241cf8[_0xc295('0x32')][_0xc295('0x39')]);_0x509af6[_0xc295('0x3e')]=qs['filters'](_[_0xc295('0x3b')](_0x241cf8[_0xc295('0x32')],_0x4f0198[_0xc295('0x3a')]));if(_0x241cf8['query'][_0xc295('0x3c')]){_0x509af6[_0xc295('0x3e')]=_[_0xc295('0x3d')](_0x509af6[_0xc295('0x3e')],{'$or':_['map'](_0x509af6[_0xc295('0x36')],function(_0x5d0f8e){var _0x5c7a75={};_0x5c7a75[_0x5d0f8e]={'$like':'%'+_0x241cf8[_0xc295('0x32')][_0xc295('0x3c')]+'%'};return _0x5c7a75;})});}_0x509af6=_[_0xc295('0x3d')]({},_0x509af6,_0x241cf8[_0xc295('0x40')]);return _0x3030a6[_0xc295('0x4f')](_0x509af6);}})[_0xc295('0x26')](function(_0x1f7415){if(_0x1f7415){_0x493cff=_0x1f7415[_0xc295('0x49')];if(!_0x241cf8[_0xc295('0x32')][_0xc295('0x37')](_0xc295('0x4e'))){_0x509af6[_0xc295('0x1e')]=qs[_0xc295('0x1e')](_0x241cf8['query'][_0xc295('0x1e')]);_0x509af6[_0xc295('0x1c')]=qs[_0xc295('0x1c')](_0x241cf8['query'][_0xc295('0x1c')]);}return _0x3030a6[_0xc295('0x4f')](_0x509af6);}})['then'](function(_0x5d74a1){if(_0x5d74a1){return _0x5d74a1?{'count':_0x493cff,'rows':_0x5d74a1}:null;}})[_0xc295('0x26')](respondWithResult(_0x207bf3,null))['catch'](handleError(_0x207bf3,null));};exports[_0xc295('0x52')]=function(_0x2ba7cf,_0x32607e,_0x5aeafd){var _0x3148ed={};var _0x1567e6={};var _0x511965;var _0x1d9e49;return db[_0xc295('0x2e')][_0xc295('0x50')]({'where':{'id':_0x2ba7cf[_0xc295('0x47')]['id']}})['then'](handleEntityNotFound(_0x32607e,null))[_0xc295('0x26')](function(_0x26b373){if(_0x26b373){_0x511965=_0x26b373;_0x1567e6[_0xc295('0x31')]=_[_0xc295('0x33')](db[_0xc295('0x51')][_0xc295('0x48')]);_0x1567e6[_0xc295('0x32')]=_[_0xc295('0x33')](_0x2ba7cf[_0xc295('0x32')]);_0x1567e6[_0xc295('0x3a')]=_[_0xc295('0x34')](_0x1567e6[_0xc295('0x31')],_0x1567e6[_0xc295('0x32')]);_0x3148ed[_0xc295('0x36')]=_[_0xc295('0x34')](_0x1567e6[_0xc295('0x31')],qs['fields'](_0x2ba7cf[_0xc295('0x32')][_0xc295('0x35')]));_0x3148ed[_0xc295('0x36')]=_0x3148ed[_0xc295('0x36')]['length']?_0x3148ed[_0xc295('0x36')]:_0x1567e6[_0xc295('0x31')];_0x3148ed[_0xc295('0x38')]=qs[_0xc295('0x39')](_0x2ba7cf[_0xc295('0x32')][_0xc295('0x39')]);_0x3148ed[_0xc295('0x3e')]=qs[_0xc295('0x3a')](_['pick'](_0x2ba7cf['query'],_0x1567e6[_0xc295('0x3a')]));if(_0x2ba7cf[_0xc295('0x32')][_0xc295('0x3c')]){_0x3148ed['where']=_['merge'](_0x3148ed[_0xc295('0x3e')],{'$or':_['map'](_0x3148ed['attributes'],function(_0x132d6d){var _0x1a53ef={};_0x1a53ef[_0x132d6d]={'$like':'%'+_0x2ba7cf['query'][_0xc295('0x3c')]+'%'};return _0x1a53ef;})});}_0x3148ed=_[_0xc295('0x3d')]({},_0x3148ed,_0x2ba7cf['options']);return _0x511965[_0xc295('0x52')](_0x3148ed);}})[_0xc295('0x26')](function(_0x32e6ee){if(_0x32e6ee){_0x1d9e49=_0x32e6ee[_0xc295('0x49')];if(!_0x2ba7cf['query']['hasOwnProperty'](_0xc295('0x4e'))){_0x3148ed[_0xc295('0x1e')]=qs[_0xc295('0x1e')](_0x2ba7cf[_0xc295('0x32')][_0xc295('0x1e')]);_0x3148ed['offset']=qs[_0xc295('0x1c')](_0x2ba7cf[_0xc295('0x32')][_0xc295('0x1c')]);}return _0x511965[_0xc295('0x52')](_0x3148ed);}})[_0xc295('0x26')](function(_0x21206f){if(_0x21206f){return _0x21206f?{'count':_0x1d9e49,'rows':_0x21206f}:null;}})[_0xc295('0x26')](respondWithResult(_0x32607e,null))[_0xc295('0x45')](handleError(_0x32607e,null));};exports[_0xc295('0x53')]=function(_0x519c99,_0x486ac8,_0x1a90f8){var _0x3acfd6={};var _0x257bdc={};var _0x4c5c13;var _0x5c9e5d;return db[_0xc295('0x2e')][_0xc295('0x50')]({'where':{'id':_0x519c99[_0xc295('0x47')]['id']}})[_0xc295('0x26')](handleEntityNotFound(_0x486ac8,null))[_0xc295('0x26')](function(_0x49271c){if(_0x49271c){_0x4c5c13=_0x49271c;_0x257bdc[_0xc295('0x31')]=_[_0xc295('0x33')](db[_0xc295('0x54')][_0xc295('0x48')]);_0x257bdc[_0xc295('0x32')]=_['keys'](_0x519c99[_0xc295('0x32')]);_0x257bdc['filters']=_[_0xc295('0x34')](_0x257bdc[_0xc295('0x31')],_0x257bdc['query']);_0x3acfd6[_0xc295('0x36')]=_[_0xc295('0x34')](_0x257bdc[_0xc295('0x31')],qs[_0xc295('0x35')](_0x519c99[_0xc295('0x32')][_0xc295('0x35')]));_0x3acfd6[_0xc295('0x36')]=_0x3acfd6[_0xc295('0x36')][_0xc295('0x49')]?_0x3acfd6[_0xc295('0x36')]:_0x257bdc['model'];_0x3acfd6[_0xc295('0x38')]=qs[_0xc295('0x39')](_0x519c99[_0xc295('0x32')][_0xc295('0x39')]);_0x3acfd6[_0xc295('0x3e')]=qs[_0xc295('0x3a')](_[_0xc295('0x3b')](_0x519c99[_0xc295('0x32')],_0x257bdc['filters']));if(_0x519c99[_0xc295('0x32')]['filter']){_0x3acfd6[_0xc295('0x3e')]=_[_0xc295('0x3d')](_0x3acfd6[_0xc295('0x3e')],{'$or':_[_0xc295('0x2d')](_0x3acfd6['attributes'],function(_0x2ad589){var _0x4f8fa9={};_0x4f8fa9[_0x2ad589]={'$like':'%'+_0x519c99[_0xc295('0x32')][_0xc295('0x3c')]+'%'};return _0x4f8fa9;})});}_0x3acfd6=_[_0xc295('0x3d')]({},_0x3acfd6,_0x519c99['options']);return _0x4c5c13[_0xc295('0x53')](_0x3acfd6);}})['then'](function(_0x10013d){if(_0x10013d){_0x5c9e5d=_0x10013d[_0xc295('0x49')];if(!_0x519c99[_0xc295('0x32')][_0xc295('0x37')]('nolimit')){_0x3acfd6['limit']=qs['limit'](_0x519c99[_0xc295('0x32')][_0xc295('0x1e')]);_0x3acfd6['offset']=qs[_0xc295('0x1c')](_0x519c99[_0xc295('0x32')][_0xc295('0x1c')]);}return _0x4c5c13[_0xc295('0x53')](_0x3acfd6);}})[_0xc295('0x26')](function(_0x1184ab){if(_0x1184ab){return _0x1184ab?{'count':_0x5c9e5d,'rows':_0x1184ab}:null;}})['then'](respondWithResult(_0x486ac8,null))[_0xc295('0x45')](handleError(_0x486ac8,null));};exports['setTags']=function(_0x30a08c,_0x50545e,_0xbc5f18){if(_0x30a08c['body']['id']){delete _0x30a08c['body']['id'];}return db['DeskConfiguration'][_0xc295('0x50')]({'where':{'id':_0x30a08c[_0xc295('0x47')]['id']}})[_0xc295('0x26')](handleEntityNotFound(_0x50545e,null))[_0xc295('0x26')](function(_0x1f8e61){if(_0x1f8e61){return _0x1f8e61[_0xc295('0x55')](_0x30a08c['body'][_0xc295('0x56')]||[]);}return null;})[_0xc295('0x26')](respondWithResult(_0x50545e,null))[_0xc295('0x45')](handleError(_0x50545e,null));};
\ No newline at end of file
+var _0x4132=['length','hasOwnProperty','sort','where','pick','filter','map','VIRTUAL','merge','options','DeskConfiguration','includeAll','include','findAll','catch','show','params','find','create','body','DeskField','order','filters','getFields','nolimit','getSubjects','findOne','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','destroy','then','end','error','stack','name','send','rawAttributes','fieldName','type','key','query','keys','intersection','model','fields','attributes'];(function(_0x8c8176,_0x5360a1){var _0x4dc47b=function(_0x1a7f65){while(--_0x1a7f65){_0x8c8176['push'](_0x8c8176['shift']());}};_0x4dc47b(++_0x5360a1);}(_0x4132,0x118));var _0x2413=function(_0x2ba0ab,_0x5ace10){_0x2ba0ab=_0x2ba0ab-0x0;var _0x4c1cb1=_0x4132[_0x2ba0ab];return _0x4c1cb1;};'use strict';var emlformat=require(_0x2413('0x0'));var rimraf=require(_0x2413('0x1'));var zipdir=require(_0x2413('0x2'));var jsonpatch=require(_0x2413('0x3'));var rp=require(_0x2413('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x2413('0x5'));var util=require(_0x2413('0x6'));var path=require(_0x2413('0x7'));var sox=require(_0x2413('0x8'));var csv=require(_0x2413('0x9'));var ejs=require(_0x2413('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2413('0xb'));var squel=require(_0x2413('0xc'));var crypto=require(_0x2413('0xd'));var jsforce=require(_0x2413('0xe'));var deskjs=require(_0x2413('0xf'));var toCsv=require(_0x2413('0x9'));var querystring=require('querystring');var Papa=require(_0x2413('0x10'));var Redis=require(_0x2413('0x11'));var authService=require(_0x2413('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x2413('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2413('0x14'))(_0x2413('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2413('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x117d46,_0x10e555){_0x10e555=_0x10e555||0xcc;return function(_0x3f0670){if(_0x3f0670){return _0x117d46[_0x2413('0x17')](_0x10e555);}return _0x117d46[_0x2413('0x18')](_0x10e555)['end']();};}function respondWithResult(_0x219981,_0x4e66e2){_0x4e66e2=_0x4e66e2||0xc8;return function(_0x4f9449){if(_0x4f9449){return _0x219981[_0x2413('0x18')](_0x4e66e2)[_0x2413('0x19')](_0x4f9449);}};}function respondWithFilteredResult(_0x4af182,_0x20b4d2){return function(_0x1eff00){if(_0x1eff00){var _0x53c47e=typeof _0x20b4d2[_0x2413('0x1a')]===_0x2413('0x1b')&&typeof _0x20b4d2['limit']===_0x2413('0x1b');var _0x344407=_0x1eff00[_0x2413('0x1c')];var _0x3275fc=_0x53c47e?0x0:_0x20b4d2[_0x2413('0x1a')];var _0x45a355=_0x53c47e?_0x1eff00[_0x2413('0x1c')]:_0x20b4d2[_0x2413('0x1a')]+_0x20b4d2[_0x2413('0x1d')];var _0x592534;if(_0x45a355>=_0x344407){_0x45a355=_0x344407;_0x592534=0xc8;}else{_0x592534=0xce;}_0x4af182[_0x2413('0x18')](_0x592534);return _0x4af182[_0x2413('0x1e')](_0x2413('0x1f'),_0x3275fc+'-'+_0x45a355+'/'+_0x344407)['json'](_0x1eff00);}return null;};}function patchUpdates(_0x351a2f){return function(_0x338998){try{jsonpatch[_0x2413('0x20')](_0x338998,_0x351a2f,!![]);}catch(_0xa16ed6){return BPromise['reject'](_0xa16ed6);}return _0x338998[_0x2413('0x21')]();};}function saveUpdates(_0xfaec91,_0x384470){return function(_0x1e8fec){if(_0x1e8fec){return _0x1e8fec[_0x2413('0x22')](_0xfaec91)['then'](function(_0x4d8571){return _0x4d8571;});}return null;};}function removeEntity(_0x560241,_0x2f9e17){return function(_0x5eb341){if(_0x5eb341){return _0x5eb341[_0x2413('0x23')]()[_0x2413('0x24')](function(){_0x560241[_0x2413('0x18')](0xcc)[_0x2413('0x25')]();});}};}function handleEntityNotFound(_0x366095,_0x2b9cab){return function(_0x2878b6){if(!_0x2878b6){_0x366095['sendStatus'](0x194);}return _0x2878b6;};}function handleError(_0x52874a,_0x5ea7b5){_0x5ea7b5=_0x5ea7b5||0x1f4;return function(_0x3ece2e){logger[_0x2413('0x26')](_0x3ece2e[_0x2413('0x27')]);if(_0x3ece2e[_0x2413('0x28')]){delete _0x3ece2e['name'];}_0x52874a[_0x2413('0x18')](_0x5ea7b5)[_0x2413('0x29')](_0x3ece2e);};}exports['index']=function(_0x1a2a7b,_0x179023){var _0x606045={},_0x25df5c={},_0x44b426={'count':0x0,'rows':[]};var _0xbf756b=_['map'](db['DeskConfiguration'][_0x2413('0x2a')],function(_0xafd87){return{'name':_0xafd87[_0x2413('0x2b')],'type':_0xafd87[_0x2413('0x2c')][_0x2413('0x2d')]};});_0x25df5c['model']=_['map'](_0xbf756b,_0x2413('0x28'));_0x25df5c[_0x2413('0x2e')]=_[_0x2413('0x2f')](_0x1a2a7b['query']);_0x25df5c['filters']=_[_0x2413('0x30')](_0x25df5c[_0x2413('0x31')],_0x25df5c[_0x2413('0x2e')]);_0x606045['attributes']=_[_0x2413('0x30')](_0x25df5c['model'],qs['fields'](_0x1a2a7b['query'][_0x2413('0x32')]));_0x606045[_0x2413('0x33')]=_0x606045[_0x2413('0x33')][_0x2413('0x34')]?_0x606045['attributes']:_0x25df5c[_0x2413('0x31')];if(!_0x1a2a7b[_0x2413('0x2e')][_0x2413('0x35')]('nolimit')){_0x606045[_0x2413('0x1d')]=qs[_0x2413('0x1d')](_0x1a2a7b['query']['limit']);_0x606045['offset']=qs[_0x2413('0x1a')](_0x1a2a7b[_0x2413('0x2e')][_0x2413('0x1a')]);}_0x606045['order']=qs[_0x2413('0x36')](_0x1a2a7b[_0x2413('0x2e')][_0x2413('0x36')]);_0x606045[_0x2413('0x37')]=qs['filters'](_[_0x2413('0x38')](_0x1a2a7b['query'],_0x25df5c['filters']),_0xbf756b);if(_0x1a2a7b['query'][_0x2413('0x39')]){_0x606045[_0x2413('0x37')]=_['merge'](_0x606045[_0x2413('0x37')],{'$or':_[_0x2413('0x3a')](_0xbf756b,function(_0x222979){if(_0x222979['type']!==_0x2413('0x3b')){var _0x33010d={};_0x33010d[_0x222979['name']]={'$like':'%'+_0x1a2a7b[_0x2413('0x2e')][_0x2413('0x39')]+'%'};return _0x33010d;}})});}_0x606045=_[_0x2413('0x3c')]({},_0x606045,_0x1a2a7b[_0x2413('0x3d')]);var _0x49386a={'where':_0x606045['where']};return db[_0x2413('0x3e')][_0x2413('0x1c')](_0x49386a)[_0x2413('0x24')](function(_0x338788){_0x44b426[_0x2413('0x1c')]=_0x338788;if(_0x1a2a7b[_0x2413('0x2e')][_0x2413('0x3f')]){_0x606045[_0x2413('0x40')]=[{'all':!![]}];}return db['DeskConfiguration'][_0x2413('0x41')](_0x606045);})[_0x2413('0x24')](function(_0x5ec5d0){_0x44b426['rows']=_0x5ec5d0;return _0x44b426;})[_0x2413('0x24')](respondWithFilteredResult(_0x179023,_0x606045))[_0x2413('0x42')](handleError(_0x179023,null));};exports[_0x2413('0x43')]=function(_0x48786b,_0x156c42){var _0x36b9e6={'raw':![],'where':{'id':_0x48786b[_0x2413('0x44')]['id']}},_0x9bb043={};_0x9bb043['model']=_['keys'](db['DeskConfiguration']['rawAttributes']);_0x9bb043[_0x2413('0x2e')]=_['keys'](_0x48786b[_0x2413('0x2e')]);_0x9bb043['filters']=_[_0x2413('0x30')](_0x9bb043['model'],_0x9bb043[_0x2413('0x2e')]);_0x36b9e6['attributes']=_[_0x2413('0x30')](_0x9bb043[_0x2413('0x31')],qs['fields'](_0x48786b[_0x2413('0x2e')][_0x2413('0x32')]));_0x36b9e6[_0x2413('0x33')]=_0x36b9e6[_0x2413('0x33')][_0x2413('0x34')]?_0x36b9e6[_0x2413('0x33')]:_0x9bb043[_0x2413('0x31')];if(_0x48786b['query'][_0x2413('0x3f')]){_0x36b9e6['include']=[{'all':!![]}];}_0x36b9e6=_[_0x2413('0x3c')]({},_0x36b9e6,_0x48786b['options']);return db['DeskConfiguration'][_0x2413('0x45')](_0x36b9e6)[_0x2413('0x24')](handleEntityNotFound(_0x156c42,null))[_0x2413('0x24')](respondWithResult(_0x156c42,null))[_0x2413('0x42')](handleError(_0x156c42,null));};exports[_0x2413('0x46')]=function(_0x5c60d2,_0x3cfd32){return db[_0x2413('0x3e')][_0x2413('0x46')](_0x5c60d2[_0x2413('0x47')],{})[_0x2413('0x24')](respondWithResult(_0x3cfd32,0xc9))[_0x2413('0x42')](handleError(_0x3cfd32,null));};exports[_0x2413('0x22')]=function(_0x3decab,_0x410481){if(_0x3decab[_0x2413('0x47')]['id']){delete _0x3decab[_0x2413('0x47')]['id'];}return db[_0x2413('0x3e')][_0x2413('0x45')]({'where':{'id':_0x3decab['params']['id']}})[_0x2413('0x24')](handleEntityNotFound(_0x410481,null))[_0x2413('0x24')](saveUpdates(_0x3decab[_0x2413('0x47')],null))[_0x2413('0x24')](respondWithResult(_0x410481,null))[_0x2413('0x42')](handleError(_0x410481,null));};exports['destroy']=function(_0x2c8e08,_0x32fc07){return db['DeskConfiguration'][_0x2413('0x45')]({'where':{'id':_0x2c8e08[_0x2413('0x44')]['id']}})[_0x2413('0x24')](handleEntityNotFound(_0x32fc07,null))['then'](removeEntity(_0x32fc07,null))[_0x2413('0x42')](handleError(_0x32fc07,null));};exports['getFields']=function(_0x5b30ba,_0x1223bd,_0x173e32){var _0x92a76d={};var _0x5277aa={};var _0x5f011f;var _0x527883;return db[_0x2413('0x3e')]['findOne']({'where':{'id':_0x5b30ba['params']['id']}})[_0x2413('0x24')](handleEntityNotFound(_0x1223bd,null))[_0x2413('0x24')](function(_0x2f07a2){if(_0x2f07a2){_0x5f011f=_0x2f07a2;_0x5277aa[_0x2413('0x31')]=_['keys'](db[_0x2413('0x48')][_0x2413('0x2a')]);_0x5277aa[_0x2413('0x2e')]=_[_0x2413('0x2f')](_0x5b30ba[_0x2413('0x2e')]);_0x5277aa['filters']=_[_0x2413('0x30')](_0x5277aa[_0x2413('0x31')],_0x5277aa[_0x2413('0x2e')]);_0x92a76d[_0x2413('0x33')]=_['intersection'](_0x5277aa['model'],qs['fields'](_0x5b30ba[_0x2413('0x2e')]['fields']));_0x92a76d[_0x2413('0x33')]=_0x92a76d['attributes'][_0x2413('0x34')]?_0x92a76d['attributes']:_0x5277aa['model'];_0x92a76d[_0x2413('0x49')]=qs[_0x2413('0x36')](_0x5b30ba[_0x2413('0x2e')][_0x2413('0x36')]);_0x92a76d['where']=qs[_0x2413('0x4a')](_['pick'](_0x5b30ba[_0x2413('0x2e')],_0x5277aa[_0x2413('0x4a')]));if(_0x5b30ba[_0x2413('0x2e')]['filter']){_0x92a76d[_0x2413('0x37')]=_['merge'](_0x92a76d[_0x2413('0x37')],{'$or':_[_0x2413('0x3a')](_0x92a76d['attributes'],function(_0x5ba64e){var _0x4dca47={};_0x4dca47[_0x5ba64e]={'$like':'%'+_0x5b30ba[_0x2413('0x2e')][_0x2413('0x39')]+'%'};return _0x4dca47;})});}_0x92a76d=_[_0x2413('0x3c')]({},_0x92a76d,_0x5b30ba['options']);return _0x5f011f[_0x2413('0x4b')](_0x92a76d);}})[_0x2413('0x24')](function(_0xb429b7){if(_0xb429b7){_0x527883=_0xb429b7[_0x2413('0x34')];if(!_0x5b30ba['query'][_0x2413('0x35')](_0x2413('0x4c'))){_0x92a76d[_0x2413('0x1d')]=qs[_0x2413('0x1d')](_0x5b30ba['query'][_0x2413('0x1d')]);_0x92a76d[_0x2413('0x1a')]=qs[_0x2413('0x1a')](_0x5b30ba['query'][_0x2413('0x1a')]);}return _0x5f011f[_0x2413('0x4b')](_0x92a76d);}})['then'](function(_0x5ceda9){if(_0x5ceda9){return _0x5ceda9?{'count':_0x527883,'rows':_0x5ceda9}:null;}})[_0x2413('0x24')](respondWithResult(_0x1223bd,null))[_0x2413('0x42')](handleError(_0x1223bd,null));};exports[_0x2413('0x4d')]=function(_0x3fb642,_0x1d57cc,_0x20555c){var _0x4fe943={};var _0x4b3afc={};var _0x11e13a;var _0x539024;return db[_0x2413('0x3e')][_0x2413('0x4e')]({'where':{'id':_0x3fb642[_0x2413('0x44')]['id']}})['then'](handleEntityNotFound(_0x1d57cc,null))[_0x2413('0x24')](function(_0x25ca32){if(_0x25ca32){_0x11e13a=_0x25ca32;_0x4b3afc[_0x2413('0x31')]=_[_0x2413('0x2f')](db[_0x2413('0x48')][_0x2413('0x2a')]);_0x4b3afc[_0x2413('0x2e')]=_['keys'](_0x3fb642[_0x2413('0x2e')]);_0x4b3afc['filters']=_[_0x2413('0x30')](_0x4b3afc['model'],_0x4b3afc[_0x2413('0x2e')]);_0x4fe943[_0x2413('0x33')]=_[_0x2413('0x30')](_0x4b3afc[_0x2413('0x31')],qs[_0x2413('0x32')](_0x3fb642['query']['fields']));_0x4fe943['attributes']=_0x4fe943[_0x2413('0x33')][_0x2413('0x34')]?_0x4fe943[_0x2413('0x33')]:_0x4b3afc[_0x2413('0x31')];_0x4fe943[_0x2413('0x49')]=qs['sort'](_0x3fb642[_0x2413('0x2e')][_0x2413('0x36')]);_0x4fe943[_0x2413('0x37')]=qs[_0x2413('0x4a')](_[_0x2413('0x38')](_0x3fb642[_0x2413('0x2e')],_0x4b3afc[_0x2413('0x4a')]));if(_0x3fb642[_0x2413('0x2e')][_0x2413('0x39')]){_0x4fe943[_0x2413('0x37')]=_[_0x2413('0x3c')](_0x4fe943[_0x2413('0x37')],{'$or':_[_0x2413('0x3a')](_0x4fe943[_0x2413('0x33')],function(_0x12fdeb){var _0x4480c8={};_0x4480c8[_0x12fdeb]={'$like':'%'+_0x3fb642[_0x2413('0x2e')]['filter']+'%'};return _0x4480c8;})});}_0x4fe943=_[_0x2413('0x3c')]({},_0x4fe943,_0x3fb642[_0x2413('0x3d')]);return _0x11e13a[_0x2413('0x4d')](_0x4fe943);}})[_0x2413('0x24')](function(_0x5cac85){if(_0x5cac85){_0x539024=_0x5cac85[_0x2413('0x34')];if(!_0x3fb642[_0x2413('0x2e')][_0x2413('0x35')](_0x2413('0x4c'))){_0x4fe943['limit']=qs[_0x2413('0x1d')](_0x3fb642[_0x2413('0x2e')]['limit']);_0x4fe943[_0x2413('0x1a')]=qs[_0x2413('0x1a')](_0x3fb642[_0x2413('0x2e')]['offset']);}return _0x11e13a[_0x2413('0x4d')](_0x4fe943);}})[_0x2413('0x24')](function(_0x2145cc){if(_0x2145cc){return _0x2145cc?{'count':_0x539024,'rows':_0x2145cc}:null;}})[_0x2413('0x24')](respondWithResult(_0x1d57cc,null))[_0x2413('0x42')](handleError(_0x1d57cc,null));};exports[_0x2413('0x4f')]=function(_0x5195da,_0x42d3ca,_0x1ab5f0){var _0x32a642={};var _0x89d6ac={};var _0x2ef233;var _0xd37c33;return db[_0x2413('0x3e')][_0x2413('0x4e')]({'where':{'id':_0x5195da[_0x2413('0x44')]['id']}})['then'](handleEntityNotFound(_0x42d3ca,null))['then'](function(_0x3f0375){if(_0x3f0375){_0x2ef233=_0x3f0375;_0x89d6ac[_0x2413('0x31')]=_[_0x2413('0x2f')](db[_0x2413('0x48')][_0x2413('0x2a')]);_0x89d6ac[_0x2413('0x2e')]=_[_0x2413('0x2f')](_0x5195da[_0x2413('0x2e')]);_0x89d6ac[_0x2413('0x4a')]=_['intersection'](_0x89d6ac[_0x2413('0x31')],_0x89d6ac[_0x2413('0x2e')]);_0x32a642[_0x2413('0x33')]=_[_0x2413('0x30')](_0x89d6ac[_0x2413('0x31')],qs['fields'](_0x5195da['query'][_0x2413('0x32')]));_0x32a642[_0x2413('0x33')]=_0x32a642[_0x2413('0x33')][_0x2413('0x34')]?_0x32a642['attributes']:_0x89d6ac['model'];_0x32a642['order']=qs[_0x2413('0x36')](_0x5195da['query']['sort']);_0x32a642['where']=qs[_0x2413('0x4a')](_[_0x2413('0x38')](_0x5195da[_0x2413('0x2e')],_0x89d6ac[_0x2413('0x4a')]));if(_0x5195da[_0x2413('0x2e')][_0x2413('0x39')]){_0x32a642[_0x2413('0x37')]=_[_0x2413('0x3c')](_0x32a642[_0x2413('0x37')],{'$or':_[_0x2413('0x3a')](_0x32a642[_0x2413('0x33')],function(_0x46295d){var _0x32633e={};_0x32633e[_0x46295d]={'$like':'%'+_0x5195da[_0x2413('0x2e')][_0x2413('0x39')]+'%'};return _0x32633e;})});}_0x32a642=_[_0x2413('0x3c')]({},_0x32a642,_0x5195da[_0x2413('0x3d')]);return _0x2ef233[_0x2413('0x4f')](_0x32a642);}})[_0x2413('0x24')](function(_0x563ae8){if(_0x563ae8){_0xd37c33=_0x563ae8[_0x2413('0x34')];if(!_0x5195da['query']['hasOwnProperty']('nolimit')){_0x32a642[_0x2413('0x1d')]=qs[_0x2413('0x1d')](_0x5195da[_0x2413('0x2e')]['limit']);_0x32a642['offset']=qs[_0x2413('0x1a')](_0x5195da[_0x2413('0x2e')][_0x2413('0x1a')]);}return _0x2ef233[_0x2413('0x4f')](_0x32a642);}})[_0x2413('0x24')](function(_0x5dff3a){if(_0x5dff3a){return _0x5dff3a?{'count':_0xd37c33,'rows':_0x5dff3a}:null;}})['then'](respondWithResult(_0x42d3ca,null))[_0x2413('0x42')](handleError(_0x42d3ca,null));};exports[_0x2413('0x50')]=function(_0x55e5c4,_0x22cb05,_0x5bb7f4){var _0x26d085={};var _0x56dc80={};var _0x19bddb;var _0x269f39;return db['DeskConfiguration'][_0x2413('0x4e')]({'where':{'id':_0x55e5c4[_0x2413('0x44')]['id']}})[_0x2413('0x24')](handleEntityNotFound(_0x22cb05,null))[_0x2413('0x24')](function(_0x110dfd){if(_0x110dfd){_0x19bddb=_0x110dfd;_0x56dc80[_0x2413('0x31')]=_[_0x2413('0x2f')](db[_0x2413('0x51')][_0x2413('0x2a')]);_0x56dc80['query']=_[_0x2413('0x2f')](_0x55e5c4['query']);_0x56dc80['filters']=_[_0x2413('0x30')](_0x56dc80[_0x2413('0x31')],_0x56dc80[_0x2413('0x2e')]);_0x26d085['attributes']=_['intersection'](_0x56dc80[_0x2413('0x31')],qs['fields'](_0x55e5c4['query'][_0x2413('0x32')]));_0x26d085[_0x2413('0x33')]=_0x26d085[_0x2413('0x33')][_0x2413('0x34')]?_0x26d085[_0x2413('0x33')]:_0x56dc80['model'];_0x26d085['order']=qs['sort'](_0x55e5c4[_0x2413('0x2e')][_0x2413('0x36')]);_0x26d085[_0x2413('0x37')]=qs['filters'](_[_0x2413('0x38')](_0x55e5c4[_0x2413('0x2e')],_0x56dc80['filters']));if(_0x55e5c4[_0x2413('0x2e')][_0x2413('0x39')]){_0x26d085['where']=_[_0x2413('0x3c')](_0x26d085[_0x2413('0x37')],{'$or':_[_0x2413('0x3a')](_0x26d085[_0x2413('0x33')],function(_0x3cd98a){var _0x52d421={};_0x52d421[_0x3cd98a]={'$like':'%'+_0x55e5c4['query'][_0x2413('0x39')]+'%'};return _0x52d421;})});}_0x26d085=_[_0x2413('0x3c')]({},_0x26d085,_0x55e5c4[_0x2413('0x3d')]);return _0x19bddb[_0x2413('0x50')](_0x26d085);}})[_0x2413('0x24')](function(_0x5c652f){if(_0x5c652f){_0x269f39=_0x5c652f['length'];if(!_0x55e5c4[_0x2413('0x2e')][_0x2413('0x35')](_0x2413('0x4c'))){_0x26d085['limit']=qs[_0x2413('0x1d')](_0x55e5c4[_0x2413('0x2e')][_0x2413('0x1d')]);_0x26d085[_0x2413('0x1a')]=qs['offset'](_0x55e5c4[_0x2413('0x2e')][_0x2413('0x1a')]);}return _0x19bddb[_0x2413('0x50')](_0x26d085);}})[_0x2413('0x24')](function(_0x2c56c6){if(_0x2c56c6){return _0x2c56c6?{'count':_0x269f39,'rows':_0x2c56c6}:null;}})[_0x2413('0x24')](respondWithResult(_0x22cb05,null))[_0x2413('0x42')](handleError(_0x22cb05,null));};exports[_0x2413('0x52')]=function(_0x2291a2,_0x877e2c,_0x50f241){if(_0x2291a2[_0x2413('0x47')]['id']){delete _0x2291a2['body']['id'];}return db[_0x2413('0x3e')][_0x2413('0x4e')]({'where':{'id':_0x2291a2[_0x2413('0x44')]['id']}})['then'](handleEntityNotFound(_0x877e2c,null))['then'](function(_0x25f7e6){if(_0x25f7e6){return _0x25f7e6[_0x2413('0x52')](_0x2291a2[_0x2413('0x47')]['ids']||[]);}return null;})[_0x2413('0x24')](respondWithResult(_0x877e2c,null))[_0x2413('0x42')](handleError(_0x877e2c,null));};
\ No newline at end of file
index fb6d09a..be7a7ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87ee=['DeskConfiguration','int_desk_configurations','lodash','moment','bluebird','request-promise','rimraf','../../config/environment','./intDeskConfiguration.attributes','exports','define'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0x87ee,0x120));var _0xe87e=function(_0x256b72,_0x340985){_0x256b72=_0x256b72-0x0;var _0x2183e3=_0x87ee[_0x256b72];return _0x2183e3;};'use strict';var _=require(_0xe87e('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xe87e('0x1'));var BPromise=require(_0xe87e('0x2'));var rp=require(_0xe87e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe87e('0x4'));var config=require(_0xe87e('0x5'));var attributes=require(_0xe87e('0x6'));module[_0xe87e('0x7')]=function(_0x182f26,_0x434657){return _0x182f26[_0xe87e('0x8')](_0xe87e('0x9'),attributes,{'tableName':_0xe87e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe069=['path','rimraf','../../config/environment','./intDeskConfiguration.attributes','exports','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x2ee2d0,_0x591529){var _0x55e9a2=function(_0xd8f551){while(--_0xd8f551){_0x2ee2d0['push'](_0x2ee2d0['shift']());}};_0x55e9a2(++_0x591529);}(_0xe069,0x19a));var _0x9e06=function(_0x5c6bca,_0x454e24){_0x5c6bca=_0x5c6bca-0x0;var _0xc53808=_0xe069[_0x5c6bca];return _0xc53808;};'use strict';var _=require(_0x9e06('0x0'));var util=require(_0x9e06('0x1'));var logger=require(_0x9e06('0x2'))('api');var moment=require(_0x9e06('0x3'));var BPromise=require(_0x9e06('0x4'));var rp=require(_0x9e06('0x5'));var fs=require('fs');var path=require(_0x9e06('0x6'));var rimraf=require(_0x9e06('0x7'));var config=require(_0x9e06('0x8'));var attributes=require(_0x9e06('0x9'));module[_0x9e06('0xa')]=function(_0x97b3e0,_0x57fb5a){return _0x97b3e0['define'](_0x9e06('0xb'),attributes,{'tableName':_0x9e06('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 377922a..df8d2ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbac6=['stringify','error','code','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','http','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent'];(function(_0x263d9f,_0x3585d1){var _0x1247fc=function(_0x4d7b6d){while(--_0x4d7b6d){_0x263d9f['push'](_0x263d9f['shift']());}};_0x1247fc(++_0x3585d1);}(_0xbac6,0x1ec));var _0x6bac=function(_0x136d26,_0x21e897){_0x136d26=_0x136d26-0x0;var _0x513067=_0xbac6[_0x136d26];return _0x513067;};'use strict';var _=require(_0x6bac('0x0'));var util=require(_0x6bac('0x1'));var moment=require(_0x6bac('0x2'));var BPromise=require('bluebird');var rs=require(_0x6bac('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6bac('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6bac('0x5'))(_0x6bac('0x6'));var config=require('../../config/environment');var jayson=require(_0x6bac('0x7'));var client=jayson['client'][_0x6bac('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x51c942,_0x438bcb,_0x359216){return new BPromise(function(_0x4add39,_0x4ba90b){return client['request'](_0x51c942,_0x359216)['then'](function(_0x4e65ce){logger[_0x6bac('0x9')](_0x6bac('0xa'),_0x438bcb,'request\x20sent');logger['debug']('DeskConfiguration,\x20%s,\x20%s,\x20%s',_0x438bcb,_0x6bac('0xb'),JSON[_0x6bac('0xc')](_0x4e65ce));if(_0x4e65ce[_0x6bac('0xd')]){if(_0x4e65ce[_0x6bac('0xd')][_0x6bac('0xe')]===0x1f4){logger['error'](_0x6bac('0xa'),_0x438bcb,_0x4e65ce[_0x6bac('0xd')]['message']);return _0x4ba90b(_0x4e65ce[_0x6bac('0xd')]['message']);}logger['error'](_0x6bac('0xa'),_0x438bcb,_0x4e65ce[_0x6bac('0xd')][_0x6bac('0xf')]);return _0x4add39(_0x4e65ce['error'][_0x6bac('0xf')]);}else{logger[_0x6bac('0x9')]('DeskConfiguration,\x20%s,\x20%s',_0x438bcb,'request\x20sent');_0x4add39(_0x4e65ce[_0x6bac('0x10')][_0x6bac('0xf')]);}})[_0x6bac('0x11')](function(_0x5dc6e5){logger[_0x6bac('0xd')](_0x6bac('0xa'),_0x438bcb,_0x5dc6e5);_0x4ba90b(_0x5dc6e5);});});}
\ No newline at end of file
+var _0x9ab9=['../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x3b3d10,_0x41f6ae){var _0x399421=function(_0x1a7623){while(--_0x1a7623){_0x3b3d10['push'](_0x3b3d10['shift']());}};_0x399421(++_0x41f6ae);}(_0x9ab9,0x19d));var _0x99ab=function(_0x4320f2,_0x4304af){_0x4320f2=_0x4320f2-0x0;var _0xebce2e=_0x9ab9[_0x4320f2];return _0xebce2e;};'use strict';var _=require(_0x99ab('0x0'));var util=require(_0x99ab('0x1'));var moment=require(_0x99ab('0x2'));var BPromise=require(_0x99ab('0x3'));var rs=require(_0x99ab('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x99ab('0x5'))['db'];var utils=require(_0x99ab('0x6'));var logger=require('../../config/logger')(_0x99ab('0x7'));var config=require('../../config/environment');var jayson=require(_0x99ab('0x8'));var client=jayson[_0x99ab('0x9')][_0x99ab('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x249c1f,_0x1d2cb7,_0x513653){return new BPromise(function(_0x5762c1,_0x3f5a2c){return client[_0x99ab('0xb')](_0x249c1f,_0x513653)['then'](function(_0x14d083){logger[_0x99ab('0xc')](_0x99ab('0xd'),_0x1d2cb7,_0x99ab('0xe'));logger[_0x99ab('0xf')](_0x99ab('0x10'),_0x1d2cb7,'request\x20sent',JSON[_0x99ab('0x11')](_0x14d083));if(_0x14d083[_0x99ab('0x12')]){if(_0x14d083[_0x99ab('0x12')]['code']===0x1f4){logger['error'](_0x99ab('0xd'),_0x1d2cb7,_0x14d083[_0x99ab('0x12')][_0x99ab('0x13')]);return _0x3f5a2c(_0x14d083[_0x99ab('0x12')][_0x99ab('0x13')]);}logger[_0x99ab('0x12')]('DeskConfiguration,\x20%s,\x20%s',_0x1d2cb7,_0x14d083[_0x99ab('0x12')][_0x99ab('0x13')]);return _0x5762c1(_0x14d083['error'][_0x99ab('0x13')]);}else{logger[_0x99ab('0xc')](_0x99ab('0xd'),_0x1d2cb7,'request\x20sent');_0x5762c1(_0x14d083[_0x99ab('0x14')][_0x99ab('0x13')]);}})[_0x99ab('0x15')](function(_0x31b340){logger[_0x99ab('0x12')](_0x99ab('0xd'),_0x1d2cb7,_0x31b340);_0x3f5a2c(_0x31b340);});});}
\ No newline at end of file
index 0e724ec..6e66036 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5098=['connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller','get','isAuthenticated','index','/:id','show','create','put','delete','exports','multer','path'];(function(_0x57f79e,_0x19db41){var _0x4ea17f=function(_0x487ee2){while(--_0x487ee2){_0x57f79e['push'](_0x57f79e['shift']());}};_0x4ea17f(++_0x19db41);}(_0x5098,0x6a));var _0x8509=function(_0x24af16,_0x25545e){_0x24af16=_0x24af16-0x0;var _0xc00e4e=_0x5098[_0x24af16];return _0xc00e4e;};'use strict';var multer=require(_0x8509('0x0'));var util=require('util');var path=require(_0x8509('0x1'));var timeout=require(_0x8509('0x2'));var express=require(_0x8509('0x3'));var router=express[_0x8509('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8509('0x5'));var interaction=require(_0x8509('0x6'));var config=require(_0x8509('0x7'));var controller=require(_0x8509('0x8'));router[_0x8509('0x9')]('/',auth[_0x8509('0xa')](),controller[_0x8509('0xb')]);router[_0x8509('0x9')](_0x8509('0xc'),auth['isAuthenticated'](),controller[_0x8509('0xd')]);router['post']('/',auth[_0x8509('0xa')](),controller[_0x8509('0xe')]);router[_0x8509('0xf')]('/:id',auth[_0x8509('0xa')](),controller['update']);router[_0x8509('0x10')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x8509('0x11')]=router;
\ No newline at end of file
+var _0xba6f=['update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller','get','isAuthenticated','index','show','put','/:id'];(function(_0x2dbad2,_0x4902c2){var _0x36568f=function(_0x30c98b){while(--_0x30c98b){_0x2dbad2['push'](_0x2dbad2['shift']());}};_0x36568f(++_0x4902c2);}(_0xba6f,0x1d0));var _0xfba6=function(_0xe04ebf,_0x5b44cd){_0xe04ebf=_0xe04ebf-0x0;var _0x36256f=_0xba6f[_0xe04ebf];return _0x36256f;};'use strict';var multer=require(_0xfba6('0x0'));var util=require('util');var path=require(_0xfba6('0x1'));var timeout=require(_0xfba6('0x2'));var express=require(_0xfba6('0x3'));var router=express[_0xfba6('0x4')]();var fs_extra=require(_0xfba6('0x5'));var auth=require(_0xfba6('0x6'));var interaction=require(_0xfba6('0x7'));var config=require(_0xfba6('0x8'));var controller=require(_0xfba6('0x9'));router[_0xfba6('0xa')]('/',auth[_0xfba6('0xb')](),controller[_0xfba6('0xc')]);router[_0xfba6('0xa')]('/:id',auth[_0xfba6('0xb')](),controller[_0xfba6('0xd')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xfba6('0xe')](_0xfba6('0xf'),auth[_0xfba6('0xb')](),controller[_0xfba6('0x10')]);router[_0xfba6('0x11')](_0xfba6('0xf'),auth[_0xfba6('0xb')](),controller[_0xfba6('0x12')]);module[_0xfba6('0x13')]=router;
\ No newline at end of file
index f3ed1bd..1d3a65d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bf5=['picklist','STRING','BOOLEAN','sequelize','ENUM','string','variable','customVariable'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x4bf5,0x1db));var _0x54bf=function(_0x5c7773,_0x2ef8c2){_0x5c7773=_0x5c7773-0x0;var _0x536bf0=_0x4bf5[_0x5c7773];return _0x536bf0;};'use strict';var Sequelize=require(_0x54bf('0x0'));module['exports']={'type':{'type':Sequelize[_0x54bf('0x1')](_0x54bf('0x2'),_0x54bf('0x3'),_0x54bf('0x4'),'keyValue',_0x54bf('0x5')),'defaultValue':_0x54bf('0x2')},'content':{'type':Sequelize[_0x54bf('0x6')]},'key':{'type':Sequelize[_0x54bf('0x6')]},'keyType':{'type':Sequelize['ENUM']('string',_0x54bf('0x3'),_0x54bf('0x4'))},'keyContent':{'type':Sequelize[_0x54bf('0x6')]},'idField':{'type':Sequelize[_0x54bf('0x6')]},'nameField':{'type':Sequelize[_0x54bf('0x6')]},'customField':{'type':Sequelize[_0x54bf('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x798b=['variable','STRING','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0x15c9f8,_0x1cc5f2){var _0x52b276=function(_0x31c250){while(--_0x31c250){_0x15c9f8['push'](_0x15c9f8['shift']());}};_0x52b276(++_0x1cc5f2);}(_0x798b,0x1ed));var _0xb798=function(_0x45a637,_0x24df71){_0x45a637=_0x45a637-0x0;var _0x4cacf6=_0x798b[_0x45a637];return _0x4cacf6;};'use strict';var Sequelize=require(_0xb798('0x0'));module[_0xb798('0x1')]={'type':{'type':Sequelize[_0xb798('0x2')](_0xb798('0x3'),_0xb798('0x4'),'customVariable','keyValue','picklist'),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xb798('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0xb798('0x3'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0xb798('0x5')]},'idField':{'type':Sequelize[_0xb798('0x5')]},'nameField':{'type':Sequelize[_0xb798('0x5')]},'customField':{'type':Sequelize[_0xb798('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 464291f..519deec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01db=['to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','undefined','limit','offset','set','Content-Range','apply','reject','save','update','then','end','sendStatus','error','name','index','map','DeskField','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','count','includeAll','findAll','rows','catch','show','params','rawAttributes','include','options','create','body','find','destroy','eml-format','fast-json-patch','request-promise','moment','mustache','sox'];(function(_0x3ef509,_0x46d9ca){var _0x5e1aed=function(_0x115b29){while(--_0x115b29){_0x3ef509['push'](_0x3ef509['shift']());}};_0x5e1aed(++_0x46d9ca);}(_0x01db,0x171));var _0xb01d=function(_0x348449,_0x3c7c58){_0x348449=_0x348449-0x0;var _0x11f11f=_0x01db[_0x348449];return _0x11f11f;};'use strict';var emlformat=require(_0xb01d('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xb01d('0x1'));var rp=require(_0xb01d('0x2'));var moment=require(_0xb01d('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb01d('0x4'));var util=require('util');var path=require('path');var sox=require(_0xb01d('0x5'));var csv=require(_0xb01d('0x6'));var ejs=require(_0xb01d('0x7'));var fs=require('fs');var fs_extra=require(_0xb01d('0x8'));var _=require(_0xb01d('0x9'));var squel=require(_0xb01d('0xa'));var crypto=require(_0xb01d('0xb'));var jsforce=require(_0xb01d('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb01d('0xd'));var Papa=require(_0xb01d('0xe'));var Redis=require(_0xb01d('0xf'));var authService=require(_0xb01d('0x10'));var qs=require(_0xb01d('0x11'));var as=require(_0xb01d('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb01d('0x13'));var utils=require(_0xb01d('0x14'));var config=require(_0xb01d('0x15'));var licenseUtil=require(_0xb01d('0x16'));var db=require(_0xb01d('0x17'))['db'];function respondWithStatusCode(_0x447479,_0xbcc293){_0xbcc293=_0xbcc293||0xcc;return function(_0x48b905){if(_0x48b905){return _0x447479['sendStatus'](_0xbcc293);}return _0x447479[_0xb01d('0x18')](_0xbcc293)['end']();};}function respondWithResult(_0x246537,_0x2e1ec7){_0x2e1ec7=_0x2e1ec7||0xc8;return function(_0x4a7641){if(_0x4a7641){return _0x246537[_0xb01d('0x18')](_0x2e1ec7)[_0xb01d('0x19')](_0x4a7641);}};}function respondWithFilteredResult(_0x286c13,_0x219327){return function(_0x515789){if(_0x515789){var _0x135604=typeof _0x219327['offset']===_0xb01d('0x1a')&&typeof _0x219327[_0xb01d('0x1b')]===_0xb01d('0x1a');var _0x2009a2=_0x515789['count'];var _0xe47874=_0x135604?0x0:_0x219327[_0xb01d('0x1c')];var _0x39eaaf=_0x135604?_0x515789['count']:_0x219327[_0xb01d('0x1c')]+_0x219327['limit'];var _0x42961b;if(_0x39eaaf>=_0x2009a2){_0x39eaaf=_0x2009a2;_0x42961b=0xc8;}else{_0x42961b=0xce;}_0x286c13[_0xb01d('0x18')](_0x42961b);return _0x286c13[_0xb01d('0x1d')](_0xb01d('0x1e'),_0xe47874+'-'+_0x39eaaf+'/'+_0x2009a2)[_0xb01d('0x19')](_0x515789);}return null;};}function patchUpdates(_0x4d517e){return function(_0x2528ac){try{jsonpatch[_0xb01d('0x1f')](_0x2528ac,_0x4d517e,!![]);}catch(_0x149b50){return BPromise[_0xb01d('0x20')](_0x149b50);}return _0x2528ac[_0xb01d('0x21')]();};}function saveUpdates(_0x7de0a2,_0x28f643){return function(_0x42064d){if(_0x42064d){return _0x42064d[_0xb01d('0x22')](_0x7de0a2)[_0xb01d('0x23')](function(_0x1151ea){return _0x1151ea;});}return null;};}function removeEntity(_0x19ef37,_0x515d52){return function(_0x446824){if(_0x446824){return _0x446824['destroy']()[_0xb01d('0x23')](function(){_0x19ef37[_0xb01d('0x18')](0xcc)[_0xb01d('0x24')]();});}};}function handleEntityNotFound(_0x3ce3f8,_0xf92ae7){return function(_0x1d8f04){if(!_0x1d8f04){_0x3ce3f8[_0xb01d('0x25')](0x194);}return _0x1d8f04;};}function handleError(_0x1dcbcd,_0xe9e66e){_0xe9e66e=_0xe9e66e||0x1f4;return function(_0x1236c2){logger[_0xb01d('0x26')](_0x1236c2['stack']);if(_0x1236c2[_0xb01d('0x27')]){delete _0x1236c2[_0xb01d('0x27')];}_0x1dcbcd[_0xb01d('0x18')](_0xe9e66e)['send'](_0x1236c2);};}exports[_0xb01d('0x28')]=function(_0x1bd8d2,_0x1659fa){var _0x58b452={},_0x29b32c={},_0x5007d1={'count':0x0,'rows':[]};var _0x13345a=_[_0xb01d('0x29')](db[_0xb01d('0x2a')]['rawAttributes'],function(_0x2f3046){return{'name':_0x2f3046[_0xb01d('0x2b')],'type':_0x2f3046[_0xb01d('0x2c')][_0xb01d('0x2d')]};});_0x29b32c[_0xb01d('0x2e')]=_[_0xb01d('0x29')](_0x13345a,'name');_0x29b32c[_0xb01d('0x2f')]=_[_0xb01d('0x30')](_0x1bd8d2[_0xb01d('0x2f')]);_0x29b32c['filters']=_[_0xb01d('0x31')](_0x29b32c['model'],_0x29b32c['query']);_0x58b452[_0xb01d('0x32')]=_[_0xb01d('0x31')](_0x29b32c['model'],qs['fields'](_0x1bd8d2[_0xb01d('0x2f')][_0xb01d('0x33')]));_0x58b452[_0xb01d('0x32')]=_0x58b452[_0xb01d('0x32')][_0xb01d('0x34')]?_0x58b452[_0xb01d('0x32')]:_0x29b32c[_0xb01d('0x2e')];if(!_0x1bd8d2[_0xb01d('0x2f')][_0xb01d('0x35')]('nolimit')){_0x58b452[_0xb01d('0x1b')]=qs[_0xb01d('0x1b')](_0x1bd8d2[_0xb01d('0x2f')][_0xb01d('0x1b')]);_0x58b452['offset']=qs[_0xb01d('0x1c')](_0x1bd8d2['query'][_0xb01d('0x1c')]);}_0x58b452[_0xb01d('0x36')]=qs[_0xb01d('0x37')](_0x1bd8d2[_0xb01d('0x2f')]['sort']);_0x58b452[_0xb01d('0x38')]=qs[_0xb01d('0x39')](_[_0xb01d('0x3a')](_0x1bd8d2[_0xb01d('0x2f')],_0x29b32c[_0xb01d('0x39')]),_0x13345a);if(_0x1bd8d2['query'][_0xb01d('0x3b')]){_0x58b452[_0xb01d('0x38')]=_[_0xb01d('0x3c')](_0x58b452[_0xb01d('0x38')],{'$or':_[_0xb01d('0x29')](_0x13345a,function(_0x25c283){if(_0x25c283[_0xb01d('0x2c')]!=='VIRTUAL'){var _0x4b93f0={};_0x4b93f0[_0x25c283[_0xb01d('0x27')]]={'$like':'%'+_0x1bd8d2['query'][_0xb01d('0x3b')]+'%'};return _0x4b93f0;}})});}_0x58b452=_[_0xb01d('0x3c')]({},_0x58b452,_0x1bd8d2['options']);var _0x847853={'where':_0x58b452[_0xb01d('0x38')]};return db[_0xb01d('0x2a')][_0xb01d('0x3d')](_0x847853)['then'](function(_0x459f4a){_0x5007d1[_0xb01d('0x3d')]=_0x459f4a;if(_0x1bd8d2['query'][_0xb01d('0x3e')]){_0x58b452['include']=[{'all':!![]}];}return db[_0xb01d('0x2a')][_0xb01d('0x3f')](_0x58b452);})[_0xb01d('0x23')](function(_0x59023b){_0x5007d1[_0xb01d('0x40')]=_0x59023b;return _0x5007d1;})['then'](respondWithFilteredResult(_0x1659fa,_0x58b452))[_0xb01d('0x41')](handleError(_0x1659fa,null));};exports[_0xb01d('0x42')]=function(_0x2d29ad,_0x2f582f){var _0x5087cb={'raw':!![],'where':{'id':_0x2d29ad[_0xb01d('0x43')]['id']}},_0x502880={};_0x502880[_0xb01d('0x2e')]=_[_0xb01d('0x30')](db[_0xb01d('0x2a')][_0xb01d('0x44')]);_0x502880[_0xb01d('0x2f')]=_[_0xb01d('0x30')](_0x2d29ad[_0xb01d('0x2f')]);_0x502880[_0xb01d('0x39')]=_['intersection'](_0x502880['model'],_0x502880['query']);_0x5087cb[_0xb01d('0x32')]=_[_0xb01d('0x31')](_0x502880['model'],qs[_0xb01d('0x33')](_0x2d29ad['query']['fields']));_0x5087cb[_0xb01d('0x32')]=_0x5087cb[_0xb01d('0x32')]['length']?_0x5087cb[_0xb01d('0x32')]:_0x502880[_0xb01d('0x2e')];if(_0x2d29ad[_0xb01d('0x2f')][_0xb01d('0x3e')]){_0x5087cb[_0xb01d('0x45')]=[{'all':!![]}];}_0x5087cb=_[_0xb01d('0x3c')]({},_0x5087cb,_0x2d29ad[_0xb01d('0x46')]);return db['DeskField']['find'](_0x5087cb)[_0xb01d('0x23')](handleEntityNotFound(_0x2f582f,null))['then'](respondWithResult(_0x2f582f,null))['catch'](handleError(_0x2f582f,null));};exports[_0xb01d('0x47')]=function(_0x75b2e7,_0x361acb){return db['DeskField'][_0xb01d('0x47')](_0x75b2e7[_0xb01d('0x48')],{})[_0xb01d('0x23')](respondWithResult(_0x361acb,0xc9))['catch'](handleError(_0x361acb,null));};exports[_0xb01d('0x22')]=function(_0x500bff,_0x494b9c){if(_0x500bff[_0xb01d('0x48')]['id']){delete _0x500bff[_0xb01d('0x48')]['id'];}return db[_0xb01d('0x2a')][_0xb01d('0x49')]({'where':{'id':_0x500bff[_0xb01d('0x43')]['id']}})[_0xb01d('0x23')](handleEntityNotFound(_0x494b9c,null))[_0xb01d('0x23')](saveUpdates(_0x500bff[_0xb01d('0x48')],null))[_0xb01d('0x23')](respondWithResult(_0x494b9c,null))[_0xb01d('0x41')](handleError(_0x494b9c,null));};exports[_0xb01d('0x4a')]=function(_0x403786,_0xe9e895){return db[_0xb01d('0x2a')][_0xb01d('0x49')]({'where':{'id':_0x403786['params']['id']}})[_0xb01d('0x23')](handleEntityNotFound(_0xe9e895,null))[_0xb01d('0x23')](removeEntity(_0xe9e895,null))[_0xb01d('0x41')](handleError(_0xe9e895,null));};
\ No newline at end of file
+var _0xc6c0=['filter','merge','VIRTUAL','options','DeskField','then','include','rows','catch','show','params','create','body','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','destroy','error','name','index','map','rawAttributes','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x48531d,_0x2fc156){var _0x1d67ac=function(_0x12b415){while(--_0x12b415){_0x48531d['push'](_0x48531d['shift']());}};_0x1d67ac(++_0x2fc156);}(_0xc6c0,0x13e));var _0x0c6c=function(_0x3a9635,_0x1ab817){_0x3a9635=_0x3a9635-0x0;var _0x10d08c=_0xc6c0[_0x3a9635];return _0x10d08c;};'use strict';var emlformat=require(_0x0c6c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0c6c('0x1'));var jsonpatch=require(_0x0c6c('0x2'));var rp=require(_0x0c6c('0x3'));var moment=require(_0x0c6c('0x4'));var BPromise=require(_0x0c6c('0x5'));var Mustache=require(_0x0c6c('0x6'));var util=require(_0x0c6c('0x7'));var path=require(_0x0c6c('0x8'));var sox=require(_0x0c6c('0x9'));var csv=require(_0x0c6c('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0c6c('0xb'));var squel=require(_0x0c6c('0xc'));var crypto=require(_0x0c6c('0xd'));var jsforce=require(_0x0c6c('0xe'));var deskjs=require(_0x0c6c('0xf'));var toCsv=require(_0x0c6c('0xa'));var querystring=require(_0x0c6c('0x10'));var Papa=require(_0x0c6c('0x11'));var Redis=require(_0x0c6c('0x12'));var authService=require(_0x0c6c('0x13'));var qs=require(_0x0c6c('0x14'));var as=require(_0x0c6c('0x15'));var hardwareService=require(_0x0c6c('0x16'));var logger=require(_0x0c6c('0x17'))(_0x0c6c('0x18'));var utils=require('../../config/utils');var config=require(_0x0c6c('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x0c6c('0x1a'))['db'];function respondWithStatusCode(_0x39e583,_0x596d84){_0x596d84=_0x596d84||0xcc;return function(_0x245faf){if(_0x245faf){return _0x39e583[_0x0c6c('0x1b')](_0x596d84);}return _0x39e583[_0x0c6c('0x1c')](_0x596d84)[_0x0c6c('0x1d')]();};}function respondWithResult(_0x33d675,_0x538b89){_0x538b89=_0x538b89||0xc8;return function(_0xcbf4a9){if(_0xcbf4a9){return _0x33d675[_0x0c6c('0x1c')](_0x538b89)[_0x0c6c('0x1e')](_0xcbf4a9);}};}function respondWithFilteredResult(_0x380d82,_0x5051c2){return function(_0xe9545e){if(_0xe9545e){var _0x2a8819=typeof _0x5051c2['offset']===_0x0c6c('0x1f')&&typeof _0x5051c2['limit']==='undefined';var _0x502597=_0xe9545e[_0x0c6c('0x20')];var _0x530333=_0x2a8819?0x0:_0x5051c2[_0x0c6c('0x21')];var _0x50be43=_0x2a8819?_0xe9545e[_0x0c6c('0x20')]:_0x5051c2[_0x0c6c('0x21')]+_0x5051c2[_0x0c6c('0x22')];var _0x40ad85;if(_0x50be43>=_0x502597){_0x50be43=_0x502597;_0x40ad85=0xc8;}else{_0x40ad85=0xce;}_0x380d82['status'](_0x40ad85);return _0x380d82[_0x0c6c('0x23')](_0x0c6c('0x24'),_0x530333+'-'+_0x50be43+'/'+_0x502597)[_0x0c6c('0x1e')](_0xe9545e);}return null;};}function patchUpdates(_0x1280fb){return function(_0x473344){try{jsonpatch[_0x0c6c('0x25')](_0x473344,_0x1280fb,!![]);}catch(_0x1d5536){return BPromise[_0x0c6c('0x26')](_0x1d5536);}return _0x473344[_0x0c6c('0x27')]();};}function saveUpdates(_0x566632,_0x323854){return function(_0xc33069){if(_0xc33069){return _0xc33069[_0x0c6c('0x28')](_0x566632)['then'](function(_0x4681eb){return _0x4681eb;});}return null;};}function removeEntity(_0x5364ba,_0x76992){return function(_0x35f4ad){if(_0x35f4ad){return _0x35f4ad[_0x0c6c('0x29')]()['then'](function(){_0x5364ba[_0x0c6c('0x1c')](0xcc)[_0x0c6c('0x1d')]();});}};}function handleEntityNotFound(_0x200a47,_0x99b725){return function(_0xb46694){if(!_0xb46694){_0x200a47[_0x0c6c('0x1b')](0x194);}return _0xb46694;};}function handleError(_0x8c5dcc,_0x2ebd25){_0x2ebd25=_0x2ebd25||0x1f4;return function(_0x194637){logger[_0x0c6c('0x2a')](_0x194637['stack']);if(_0x194637[_0x0c6c('0x2b')]){delete _0x194637['name'];}_0x8c5dcc[_0x0c6c('0x1c')](_0x2ebd25)['send'](_0x194637);};}exports[_0x0c6c('0x2c')]=function(_0x45fcad,_0x184252){var _0xba7b3={},_0x2cbfc7={},_0x2910f3={'count':0x0,'rows':[]};var _0x2047ab=_[_0x0c6c('0x2d')](db['DeskField'][_0x0c6c('0x2e')],function(_0x1d86bc){return{'name':_0x1d86bc['fieldName'],'type':_0x1d86bc[_0x0c6c('0x2f')]['key']};});_0x2cbfc7[_0x0c6c('0x30')]=_[_0x0c6c('0x2d')](_0x2047ab,_0x0c6c('0x2b'));_0x2cbfc7[_0x0c6c('0x31')]=_[_0x0c6c('0x32')](_0x45fcad[_0x0c6c('0x31')]);_0x2cbfc7[_0x0c6c('0x33')]=_[_0x0c6c('0x34')](_0x2cbfc7[_0x0c6c('0x30')],_0x2cbfc7['query']);_0xba7b3['attributes']=_[_0x0c6c('0x34')](_0x2cbfc7[_0x0c6c('0x30')],qs[_0x0c6c('0x35')](_0x45fcad[_0x0c6c('0x31')][_0x0c6c('0x35')]));_0xba7b3[_0x0c6c('0x36')]=_0xba7b3['attributes'][_0x0c6c('0x37')]?_0xba7b3['attributes']:_0x2cbfc7[_0x0c6c('0x30')];if(!_0x45fcad['query'][_0x0c6c('0x38')](_0x0c6c('0x39'))){_0xba7b3['limit']=qs['limit'](_0x45fcad[_0x0c6c('0x31')][_0x0c6c('0x22')]);_0xba7b3[_0x0c6c('0x21')]=qs[_0x0c6c('0x21')](_0x45fcad['query'][_0x0c6c('0x21')]);}_0xba7b3[_0x0c6c('0x3a')]=qs['sort'](_0x45fcad[_0x0c6c('0x31')][_0x0c6c('0x3b')]);_0xba7b3[_0x0c6c('0x3c')]=qs['filters'](_[_0x0c6c('0x3d')](_0x45fcad[_0x0c6c('0x31')],_0x2cbfc7[_0x0c6c('0x33')]),_0x2047ab);if(_0x45fcad[_0x0c6c('0x31')][_0x0c6c('0x3e')]){_0xba7b3[_0x0c6c('0x3c')]=_[_0x0c6c('0x3f')](_0xba7b3[_0x0c6c('0x3c')],{'$or':_[_0x0c6c('0x2d')](_0x2047ab,function(_0x371c0b){if(_0x371c0b[_0x0c6c('0x2f')]!==_0x0c6c('0x40')){var _0x3514a0={};_0x3514a0[_0x371c0b[_0x0c6c('0x2b')]]={'$like':'%'+_0x45fcad[_0x0c6c('0x31')][_0x0c6c('0x3e')]+'%'};return _0x3514a0;}})});}_0xba7b3=_[_0x0c6c('0x3f')]({},_0xba7b3,_0x45fcad[_0x0c6c('0x41')]);var _0x42ce5c={'where':_0xba7b3[_0x0c6c('0x3c')]};return db[_0x0c6c('0x42')][_0x0c6c('0x20')](_0x42ce5c)[_0x0c6c('0x43')](function(_0x39b640){_0x2910f3[_0x0c6c('0x20')]=_0x39b640;if(_0x45fcad[_0x0c6c('0x31')]['includeAll']){_0xba7b3[_0x0c6c('0x44')]=[{'all':!![]}];}return db[_0x0c6c('0x42')]['findAll'](_0xba7b3);})[_0x0c6c('0x43')](function(_0x12278f){_0x2910f3[_0x0c6c('0x45')]=_0x12278f;return _0x2910f3;})[_0x0c6c('0x43')](respondWithFilteredResult(_0x184252,_0xba7b3))[_0x0c6c('0x46')](handleError(_0x184252,null));};exports[_0x0c6c('0x47')]=function(_0x3c4010,_0x485c32){var _0x5cda22={'raw':!![],'where':{'id':_0x3c4010[_0x0c6c('0x48')]['id']}},_0x11db08={};_0x11db08[_0x0c6c('0x30')]=_[_0x0c6c('0x32')](db[_0x0c6c('0x42')]['rawAttributes']);_0x11db08[_0x0c6c('0x31')]=_[_0x0c6c('0x32')](_0x3c4010[_0x0c6c('0x31')]);_0x11db08[_0x0c6c('0x33')]=_[_0x0c6c('0x34')](_0x11db08[_0x0c6c('0x30')],_0x11db08[_0x0c6c('0x31')]);_0x5cda22['attributes']=_[_0x0c6c('0x34')](_0x11db08[_0x0c6c('0x30')],qs['fields'](_0x3c4010[_0x0c6c('0x31')]['fields']));_0x5cda22[_0x0c6c('0x36')]=_0x5cda22[_0x0c6c('0x36')]['length']?_0x5cda22[_0x0c6c('0x36')]:_0x11db08[_0x0c6c('0x30')];if(_0x3c4010[_0x0c6c('0x31')]['includeAll']){_0x5cda22[_0x0c6c('0x44')]=[{'all':!![]}];}_0x5cda22=_[_0x0c6c('0x3f')]({},_0x5cda22,_0x3c4010[_0x0c6c('0x41')]);return db[_0x0c6c('0x42')]['find'](_0x5cda22)['then'](handleEntityNotFound(_0x485c32,null))[_0x0c6c('0x43')](respondWithResult(_0x485c32,null))[_0x0c6c('0x46')](handleError(_0x485c32,null));};exports[_0x0c6c('0x49')]=function(_0x46b231,_0x2bf8b8){return db[_0x0c6c('0x42')][_0x0c6c('0x49')](_0x46b231[_0x0c6c('0x4a')],{})[_0x0c6c('0x43')](respondWithResult(_0x2bf8b8,0xc9))['catch'](handleError(_0x2bf8b8,null));};exports[_0x0c6c('0x28')]=function(_0x4169a1,_0x35416a){if(_0x4169a1[_0x0c6c('0x4a')]['id']){delete _0x4169a1[_0x0c6c('0x4a')]['id'];}return db[_0x0c6c('0x42')][_0x0c6c('0x4b')]({'where':{'id':_0x4169a1[_0x0c6c('0x48')]['id']}})[_0x0c6c('0x43')](handleEntityNotFound(_0x35416a,null))[_0x0c6c('0x43')](saveUpdates(_0x4169a1[_0x0c6c('0x4a')],null))[_0x0c6c('0x43')](respondWithResult(_0x35416a,null))[_0x0c6c('0x46')](handleError(_0x35416a,null));};exports[_0x0c6c('0x29')]=function(_0x55d76f,_0x32202b){return db[_0x0c6c('0x42')][_0x0c6c('0x4b')]({'where':{'id':_0x55d76f['params']['id']}})[_0x0c6c('0x43')](handleEntityNotFound(_0x32202b,null))[_0x0c6c('0x43')](removeEntity(_0x32202b,null))[_0x0c6c('0x46')](handleError(_0x32202b,null));};
\ No newline at end of file
index bd982a7..4cca460 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d18=['idField','FieldId','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./intDeskField.attributes','exports','define','DeskField','int_desk_fields','desk_unique_index'];(function(_0x4b4e87,_0x4bf51a){var _0x145237=function(_0x1452af){while(--_0x1452af){_0x4b4e87['push'](_0x4b4e87['shift']());}};_0x145237(++_0x4bf51a);}(_0x5d18,0xc6));var _0x85d1=function(_0x3408bf,_0xa0617){_0x3408bf=_0x3408bf-0x0;var _0x3b5365=_0x5d18[_0x3408bf];return _0x3b5365;};'use strict';var _=require('lodash');var util=require(_0x85d1('0x0'));var logger=require(_0x85d1('0x1'))('api');var moment=require('moment');var BPromise=require(_0x85d1('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x85d1('0x3'));var rimraf=require(_0x85d1('0x4'));var config=require(_0x85d1('0x5'));var attributes=require(_0x85d1('0x6'));module[_0x85d1('0x7')]=function(_0x254f87,_0x44d28d){return _0x254f87[_0x85d1('0x8')](_0x85d1('0x9'),attributes,{'tableName':_0x85d1('0xa'),'paranoid':![],'indexes':[{'name':_0x85d1('0xb'),'fields':[_0x85d1('0xc'),_0x85d1('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7260=['path','rimraf','../../config/environment','./intDeskField.attributes','exports','define','DeskField','int_desk_fields','desk_unique_index','idField','FieldId','lodash','../../config/logger','api','moment','request-promise'];(function(_0x1dce01,_0x2fede7){var _0x14850c=function(_0x3643ae){while(--_0x3643ae){_0x1dce01['push'](_0x1dce01['shift']());}};_0x14850c(++_0x2fede7);}(_0x7260,0x1cb));var _0x0726=function(_0x16e74f,_0x51b505){_0x16e74f=_0x16e74f-0x0;var _0x4502cc=_0x7260[_0x16e74f];return _0x4502cc;};'use strict';var _=require(_0x0726('0x0'));var util=require('util');var logger=require(_0x0726('0x1'))(_0x0726('0x2'));var moment=require(_0x0726('0x3'));var BPromise=require('bluebird');var rp=require(_0x0726('0x4'));var fs=require('fs');var path=require(_0x0726('0x5'));var rimraf=require(_0x0726('0x6'));var config=require(_0x0726('0x7'));var attributes=require(_0x0726('0x8'));module[_0x0726('0x9')]=function(_0x438e6d,_0x5e7fcc){return _0x438e6d[_0x0726('0xa')](_0x0726('0xb'),attributes,{'tableName':_0x0726('0xc'),'paranoid':![],'indexes':[{'name':_0x0726('0xd'),'fields':[_0x0726('0xe'),_0x0726('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index c8251c2..b5da5fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59de=['client','http','request','then','info','DeskField,\x20%s,\x20%s','debug','DeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0xbe200f,_0x4b50eb){var _0x192597=function(_0x106cfd){while(--_0x106cfd){_0xbe200f['push'](_0xbe200f['shift']());}};_0x192597(++_0x4b50eb);}(_0x59de,0x115));var _0xe59d=function(_0xe73dee,_0x3d8750){_0xe73dee=_0xe73dee-0x0;var _0x4483d7=_0x59de[_0xe73dee];return _0x4483d7;};'use strict';var _=require('lodash');var util=require(_0xe59d('0x0'));var moment=require(_0xe59d('0x1'));var BPromise=require('bluebird');var rs=require(_0xe59d('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe59d('0x3'))['db'];var utils=require(_0xe59d('0x4'));var logger=require(_0xe59d('0x5'))(_0xe59d('0x6'));var config=require(_0xe59d('0x7'));var jayson=require(_0xe59d('0x8'));var client=jayson[_0xe59d('0x9')][_0xe59d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2e8371,_0x89fcaf,_0x46ba8d){return new BPromise(function(_0x5d1331,_0x5b539b){return client[_0xe59d('0xb')](_0x2e8371,_0x46ba8d)[_0xe59d('0xc')](function(_0x2dddfa){logger[_0xe59d('0xd')](_0xe59d('0xe'),_0x89fcaf,'request\x20sent');logger[_0xe59d('0xf')](_0xe59d('0x10'),_0x89fcaf,_0xe59d('0x11'),JSON[_0xe59d('0x12')](_0x2dddfa));if(_0x2dddfa[_0xe59d('0x13')]){if(_0x2dddfa[_0xe59d('0x13')]['code']===0x1f4){logger['error'](_0xe59d('0xe'),_0x89fcaf,_0x2dddfa[_0xe59d('0x13')][_0xe59d('0x14')]);return _0x5b539b(_0x2dddfa[_0xe59d('0x13')][_0xe59d('0x14')]);}logger[_0xe59d('0x13')](_0xe59d('0xe'),_0x89fcaf,_0x2dddfa[_0xe59d('0x13')][_0xe59d('0x14')]);return _0x5d1331(_0x2dddfa[_0xe59d('0x13')][_0xe59d('0x14')]);}else{logger['info'](_0xe59d('0xe'),_0x89fcaf,'request\x20sent');_0x5d1331(_0x2dddfa[_0xe59d('0x15')]['message']);}})['catch'](function(_0x41c72f){logger[_0xe59d('0x13')](_0xe59d('0xe'),_0x89fcaf,_0x41c72f);_0x5b539b(_0x41c72f);});});}
\ No newline at end of file
+var _0xf09f=['../../mysqldb','../../config/utils','../../config/logger','client','http','request','then','info','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','DeskField,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis'];(function(_0xd3dfe4,_0x535d40){var _0x388861=function(_0x4f8787){while(--_0x4f8787){_0xd3dfe4['push'](_0xd3dfe4['shift']());}};_0x388861(++_0x535d40);}(_0xf09f,0x1c9));var _0xff09=function(_0x3bf67b,_0x29e8fd){_0x3bf67b=_0x3bf67b-0x0;var _0x2bcd72=_0xf09f[_0x3bf67b];return _0x2bcd72;};'use strict';var _=require(_0xff09('0x0'));var util=require('util');var moment=require(_0xff09('0x1'));var BPromise=require(_0xff09('0x2'));var rs=require(_0xff09('0x3'));var fs=require('fs');var Redis=require(_0xff09('0x4'));var db=require(_0xff09('0x5'))['db'];var utils=require(_0xff09('0x6'));var logger=require(_0xff09('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xff09('0x8')][_0xff09('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xbdf5a7,_0x139c71,_0x5d8f4a){return new BPromise(function(_0x3fb63b,_0x218194){return client[_0xff09('0xa')](_0xbdf5a7,_0x5d8f4a)[_0xff09('0xb')](function(_0x2e1799){logger[_0xff09('0xc')]('DeskField,\x20%s,\x20%s',_0x139c71,_0xff09('0xd'));logger[_0xff09('0xe')](_0xff09('0xf'),_0x139c71,_0xff09('0xd'),JSON[_0xff09('0x10')](_0x2e1799));if(_0x2e1799[_0xff09('0x11')]){if(_0x2e1799['error']['code']===0x1f4){logger[_0xff09('0x11')](_0xff09('0x12'),_0x139c71,_0x2e1799[_0xff09('0x11')][_0xff09('0x13')]);return _0x218194(_0x2e1799[_0xff09('0x11')]['message']);}logger[_0xff09('0x11')](_0xff09('0x12'),_0x139c71,_0x2e1799[_0xff09('0x11')]['message']);return _0x3fb63b(_0x2e1799[_0xff09('0x11')]['message']);}else{logger[_0xff09('0xc')](_0xff09('0x12'),_0x139c71,_0xff09('0xd'));_0x3fb63b(_0x2e1799[_0xff09('0x14')]['message']);}})[_0xff09('0x15')](function(_0x11dd8a){logger[_0xff09('0x11')](_0xff09('0x12'),_0x139c71,_0x11dd8a);_0x218194(_0x11dd8a);});});}
\ No newline at end of file
index b3c5274..58545ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6d0=['addConfiguration','put','/:id','update','exports','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id/configurations','getConfigurations','/:id/fields','post'];(function(_0x3cdfdd,_0x158cf4){var _0x265958=function(_0x40c06e){while(--_0x40c06e){_0x3cdfdd['push'](_0x3cdfdd['shift']());}};_0x265958(++_0x158cf4);}(_0xb6d0,0xc3));var _0x0b6d=function(_0xdfc87d,_0x28e1a5){_0xdfc87d=_0xdfc87d-0x0;var _0x4e2a5e=_0xb6d0[_0xdfc87d];return _0x4e2a5e;};'use strict';var multer=require('multer');var util=require(_0x0b6d('0x0'));var path=require('path');var timeout=require(_0x0b6d('0x1'));var express=require(_0x0b6d('0x2'));var router=express[_0x0b6d('0x3')]();var fs_extra=require(_0x0b6d('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x0b6d('0x5'));var config=require(_0x0b6d('0x6'));var controller=require('./intDynamics365Account.controller');router[_0x0b6d('0x7')]('/',auth[_0x0b6d('0x8')](),controller[_0x0b6d('0x9')]);router[_0x0b6d('0x7')]('/:id',auth[_0x0b6d('0x8')](),controller['show']);router['get'](_0x0b6d('0xa'),auth[_0x0b6d('0x8')](),controller[_0x0b6d('0xb')]);router[_0x0b6d('0x7')](_0x0b6d('0xc'),auth[_0x0b6d('0x8')](),controller['getFields']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x0b6d('0xd')]('/:id/configurations',auth[_0x0b6d('0x8')](),controller[_0x0b6d('0xe')]);router[_0x0b6d('0xf')](_0x0b6d('0x10'),auth['isAuthenticated'](),controller[_0x0b6d('0x11')]);router['delete'](_0x0b6d('0x10'),auth[_0x0b6d('0x8')](),controller['destroy']);module[_0x0b6d('0x12')]=router;
\ No newline at end of file
+var _0x5ba5=['/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','isAuthenticated','index','get','/:id'];(function(_0x395283,_0x4ce40e){var _0x57a286=function(_0x491cdc){while(--_0x491cdc){_0x395283['push'](_0x395283['shift']());}};_0x57a286(++_0x4ce40e);}(_0x5ba5,0xd8));var _0x55ba=function(_0x246508,_0x4716f7){_0x246508=_0x246508-0x0;var _0x3f6f41=_0x5ba5[_0x246508];return _0x3f6f41;};'use strict';var multer=require(_0x55ba('0x0'));var util=require(_0x55ba('0x1'));var path=require(_0x55ba('0x2'));var timeout=require(_0x55ba('0x3'));var express=require(_0x55ba('0x4'));var router=express[_0x55ba('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x55ba('0x6'));var interaction=require(_0x55ba('0x7'));var config=require(_0x55ba('0x8'));var controller=require(_0x55ba('0x9'));router['get']('/',auth[_0x55ba('0xa')](),controller[_0x55ba('0xb')]);router[_0x55ba('0xc')](_0x55ba('0xd'),auth['isAuthenticated'](),controller['show']);router['get'](_0x55ba('0xe'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0x55ba('0xc')](_0x55ba('0xf'),auth[_0x55ba('0xa')](),controller[_0x55ba('0x10')]);router[_0x55ba('0x11')]('/',auth[_0x55ba('0xa')](),controller[_0x55ba('0x12')]);router[_0x55ba('0x11')](_0x55ba('0xe'),auth[_0x55ba('0xa')](),controller[_0x55ba('0x13')]);router['put'](_0x55ba('0xd'),auth[_0x55ba('0xa')](),controller['update']);router[_0x55ba('0x14')](_0x55ba('0xd'),auth[_0x55ba('0xa')](),controller[_0x55ba('0x15')]);module[_0x55ba('0x16')]=router;
\ No newline at end of file
index 1639ade..f4e39af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f1c=['sequelize','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3f1c,0xd4));var _0xc3f1=function(_0x1c32ca,_0x372bef){_0x1c32ca=_0x1c32ca-0x0;var _0x5c6a18=_0x3f1c[_0x1c32ca];return _0x5c6a18;};'use strict';var Sequelize=require(_0xc3f1('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xc3f1('0x1')]},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize['STRING']},'tenantId':{'type':Sequelize[_0xc3f1('0x1')]},'clientId':{'type':Sequelize[_0xc3f1('0x1')]},'clientSecret':{'type':Sequelize[_0xc3f1('0x1')]},'serverUrl':{'type':Sequelize[_0xc3f1('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xc3f1('0x1')]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x308a=['STRING','BOOLEAN','sequelize'];(function(_0xebb59a,_0x3e69c1){var _0x818667=function(_0x1992ce){while(--_0x1992ce){_0xebb59a['push'](_0xebb59a['shift']());}};_0x818667(++_0x3e69c1);}(_0x308a,0x71));var _0xa308=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x308a[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xa308('0x0'));module['exports']={'name':{'type':Sequelize[_0xa308('0x1')]},'username':{'type':Sequelize[_0xa308('0x1')]},'password':{'type':Sequelize[_0xa308('0x1')]},'remoteUri':{'type':Sequelize[_0xa308('0x1')]},'tenantId':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0xa308('0x1')]},'serverUrl':{'type':Sequelize[_0xa308('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xa308('0x1')]},'modernAuthentication':{'type':Sequelize[_0xa308('0x2')],'defaultValue':!![]}};
\ No newline at end of file
index 427f128..c9ed776 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d07=['slaname','socialprofileidname','statuscode','subjectidname','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','concat','remoteUri','tenantId','clientId','clientSecret','modernAuthentication','CloudProvider','data5','data7','access_token','username','password','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','4.0','remove','includes','forEach','@odata.type','PicklistAttributeMetadata','push','isNil','BooleanAttributeMetadata','all','StringAttributeMetadata','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','test','statusCode','Wrong\x20credentials',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','Value','LogicalName','DisplayName','UserLocalizedLabel',')/Attributes(',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','true','FalseOption',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','util','lodash','../../components/parsers/qs','api','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined','limit','count','set','Content-Range','then','sendStatus','error','stack','name','send','index','map','Dynamics365Account','type','key','query','keys','intersection','model','attributes','fields','length','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','rawAttributes','options','create','body','find','destroy','params','findOne','Dynamics365Configuration','order','getConfigurations','hasOwnProperty','AccountId','Subjects','channel','Descriptions','Dynamics365Field','slice','substring','lastIndexOf','format','getFields','ticketType','incident','Incident','PhoneCall','title','customerid','ownerid','caseorigincode','subject','phonenumber','directioncode','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidyominame','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyname','createdbyyominame','createdon','createdonbehalfbyname','customeridname','customeridtype','emailaddress','entitlementidname','entityimage_timestamp','escalatedon','exchangerate','firstresponsebykpiidname','followupby','influencescore','kbarticleidname','lastonholdtime','masteridname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedon','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridyominame','parentcaseidname','primarycontactidname','prioritycodename','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname'];(function(_0xf02cfa,_0x37b69f){var _0x325506=function(_0x2859e3){while(--_0x2859e3){_0xf02cfa['push'](_0xf02cfa['shift']());}};_0x325506(++_0x37b69f);}(_0x1d07,0x100));var _0x71d0=function(_0x565ed7,_0x398228){_0x565ed7=_0x565ed7-0x0;var _0x183ad7=_0x1d07[_0x565ed7];return _0x183ad7;};'use strict';var rp=require('request-promise');var util=require(_0x71d0('0x0'));var _=require(_0x71d0('0x1'));var qs=require(_0x71d0('0x2'));var logger=require('../../config/logger')(_0x71d0('0x3'));var db=require(_0x71d0('0x4'))['db'];var integrations=require(_0x71d0('0x5'));function respondWithResult(_0x1756b9,_0x405c6e){_0x405c6e=_0x405c6e||0xc8;return function(_0x3fd895){if(_0x3fd895){return _0x1756b9[_0x71d0('0x6')](_0x405c6e)[_0x71d0('0x7')](_0x3fd895);}};}function respondWithFilteredResult(_0x15d0c8,_0x52a6db){return function(_0x2d7aa0){if(_0x2d7aa0){var _0x106f10=typeof _0x52a6db[_0x71d0('0x8')]===_0x71d0('0x9')&&typeof _0x52a6db[_0x71d0('0xa')]===_0x71d0('0x9');var _0x552aab=_0x2d7aa0[_0x71d0('0xb')];var _0x51082e=_0x106f10?0x0:_0x52a6db[_0x71d0('0x8')];var _0x337a49=_0x106f10?_0x2d7aa0[_0x71d0('0xb')]:_0x52a6db[_0x71d0('0x8')]+_0x52a6db['limit'];var _0xf154ae;if(_0x337a49>=_0x552aab){_0x337a49=_0x552aab;_0xf154ae=0xc8;}else{_0xf154ae=0xce;}_0x15d0c8[_0x71d0('0x6')](_0xf154ae);return _0x15d0c8[_0x71d0('0xc')](_0x71d0('0xd'),_0x51082e+'-'+_0x337a49+'/'+_0x552aab)['json'](_0x2d7aa0);}return null;};}function saveUpdates(_0xb104f6){return function(_0x1b52bd){if(_0x1b52bd){return _0x1b52bd['update'](_0xb104f6)[_0x71d0('0xe')](function(_0x18127b){return _0x18127b;});}return null;};}function removeEntity(_0x2397fc){return function(_0x7cee56){if(_0x7cee56){return _0x7cee56['destroy']()['then'](function(){_0x2397fc[_0x71d0('0x6')](0xcc)['end']();});}};}function handleEntityNotFound(_0x537ea7){return function(_0x14cc20){if(!_0x14cc20){_0x537ea7[_0x71d0('0xf')](0x194);}return _0x14cc20;};}function handleError(_0x458f46,_0x1fcd65){_0x1fcd65=_0x1fcd65||0x1f4;return function(_0x35879a){logger[_0x71d0('0x10')](_0x35879a[_0x71d0('0x11')]);if(_0x35879a[_0x71d0('0x12')]){delete _0x35879a['name'];}_0x458f46[_0x71d0('0x6')](_0x1fcd65)[_0x71d0('0x13')](_0x35879a);};}exports[_0x71d0('0x14')]=function(_0x33e63c,_0x369f70){var _0x3bf72d={},_0x127f2c={},_0x27f444={'count':0x0,'rows':[]};var _0x331449=_[_0x71d0('0x15')](db[_0x71d0('0x16')]['rawAttributes'],function(_0x34c414){return{'name':_0x34c414['fieldName'],'type':_0x34c414[_0x71d0('0x17')][_0x71d0('0x18')]};});_0x127f2c['model']=_[_0x71d0('0x15')](_0x331449,_0x71d0('0x12'));_0x127f2c[_0x71d0('0x19')]=_[_0x71d0('0x1a')](_0x33e63c[_0x71d0('0x19')]);_0x127f2c['filters']=_[_0x71d0('0x1b')](_0x127f2c[_0x71d0('0x1c')],_0x127f2c[_0x71d0('0x19')]);_0x3bf72d[_0x71d0('0x1d')]=_[_0x71d0('0x1b')](_0x127f2c[_0x71d0('0x1c')],qs[_0x71d0('0x1e')](_0x33e63c[_0x71d0('0x19')][_0x71d0('0x1e')]));_0x3bf72d['attributes']=_0x3bf72d[_0x71d0('0x1d')][_0x71d0('0x1f')]?_0x3bf72d[_0x71d0('0x1d')]:_0x127f2c[_0x71d0('0x1c')];if(!_0x33e63c[_0x71d0('0x19')]['hasOwnProperty'](_0x71d0('0x20'))){_0x3bf72d[_0x71d0('0xa')]=qs['limit'](_0x33e63c[_0x71d0('0x19')]['limit']);_0x3bf72d['offset']=qs['offset'](_0x33e63c[_0x71d0('0x19')][_0x71d0('0x8')]);}_0x3bf72d['order']=qs[_0x71d0('0x21')](_0x33e63c[_0x71d0('0x19')][_0x71d0('0x21')]);_0x3bf72d[_0x71d0('0x22')]=qs[_0x71d0('0x23')](_[_0x71d0('0x24')](_0x33e63c['query'],_0x127f2c[_0x71d0('0x23')]),_0x331449);if(_0x33e63c[_0x71d0('0x19')][_0x71d0('0x25')]){_0x3bf72d[_0x71d0('0x22')]=_[_0x71d0('0x26')](_0x3bf72d['where'],{'$or':_[_0x71d0('0x15')](_0x331449,function(_0x5ba31f){if(_0x5ba31f[_0x71d0('0x17')]!==_0x71d0('0x27')){var _0x1cff34={};_0x1cff34[_0x5ba31f[_0x71d0('0x12')]]={'$like':'%'+_0x33e63c[_0x71d0('0x19')][_0x71d0('0x25')]+'%'};return _0x1cff34;}})});}_0x3bf72d=_[_0x71d0('0x26')]({},_0x3bf72d,_0x33e63c['options']);var _0x1c5ee3={'where':_0x3bf72d['where']};return db[_0x71d0('0x16')]['count'](_0x1c5ee3)[_0x71d0('0xe')](function(_0x42ea88){_0x27f444[_0x71d0('0xb')]=_0x42ea88;if(_0x33e63c[_0x71d0('0x19')][_0x71d0('0x28')]){_0x3bf72d[_0x71d0('0x29')]=[{'all':!![]}];}return db[_0x71d0('0x16')][_0x71d0('0x2a')](_0x3bf72d);})[_0x71d0('0xe')](function(_0x4a8f54){_0x27f444[_0x71d0('0x2b')]=_0x4a8f54;return _0x27f444;})[_0x71d0('0xe')](respondWithFilteredResult(_0x369f70,_0x3bf72d))[_0x71d0('0x2c')](handleError(_0x369f70,null));};exports['show']=function(_0x48a02d,_0x1b6e11){var _0x1d52c2={'raw':![],'where':{'id':_0x48a02d['params']['id']}},_0x25e398={};_0x25e398[_0x71d0('0x1c')]=_[_0x71d0('0x1a')](db[_0x71d0('0x16')][_0x71d0('0x2d')]);_0x25e398[_0x71d0('0x19')]=_[_0x71d0('0x1a')](_0x48a02d[_0x71d0('0x19')]);_0x25e398[_0x71d0('0x23')]=_[_0x71d0('0x1b')](_0x25e398[_0x71d0('0x1c')],_0x25e398[_0x71d0('0x19')]);_0x1d52c2[_0x71d0('0x1d')]=_[_0x71d0('0x1b')](_0x25e398[_0x71d0('0x1c')],qs['fields'](_0x48a02d[_0x71d0('0x19')][_0x71d0('0x1e')]));_0x1d52c2['attributes']=_0x1d52c2[_0x71d0('0x1d')]['length']?_0x1d52c2['attributes']:_0x25e398[_0x71d0('0x1c')];if(_0x48a02d[_0x71d0('0x19')]['includeAll']){_0x1d52c2[_0x71d0('0x29')]=[{'all':!![]}];}_0x1d52c2=_[_0x71d0('0x26')]({},_0x1d52c2,_0x48a02d[_0x71d0('0x2e')]);return db['Dynamics365Account']['find'](_0x1d52c2)[_0x71d0('0xe')](handleEntityNotFound(_0x1b6e11,null))['then'](respondWithResult(_0x1b6e11,null))['catch'](handleError(_0x1b6e11,null));};exports[_0x71d0('0x2f')]=function(_0x3e9b1f,_0x595fc4){return db[_0x71d0('0x16')][_0x71d0('0x2f')](_0x3e9b1f[_0x71d0('0x30')],{})['then'](respondWithResult(_0x595fc4,0xc9))[_0x71d0('0x2c')](handleError(_0x595fc4,null));};exports['update']=function(_0x37b55b,_0x4c89d8){if(_0x37b55b['body']['id']){delete _0x37b55b[_0x71d0('0x30')]['id'];}return db[_0x71d0('0x16')][_0x71d0('0x31')]({'where':{'id':_0x37b55b['params']['id']}})[_0x71d0('0xe')](handleEntityNotFound(_0x4c89d8,null))[_0x71d0('0xe')](saveUpdates(_0x37b55b[_0x71d0('0x30')],null))[_0x71d0('0xe')](respondWithResult(_0x4c89d8,null))[_0x71d0('0x2c')](handleError(_0x4c89d8,null));};exports[_0x71d0('0x32')]=function(_0x2ba936,_0x59a822){return db[_0x71d0('0x16')][_0x71d0('0x31')]({'where':{'id':_0x2ba936[_0x71d0('0x33')]['id']}})[_0x71d0('0xe')](handleEntityNotFound(_0x59a822,null))[_0x71d0('0xe')](removeEntity(_0x59a822,null))[_0x71d0('0x2c')](handleError(_0x59a822,null));};exports['getConfigurations']=function(_0x16f46a,_0xc1e4ec){var _0x2e70f1={};var _0x595978={};var _0x26cebb;var _0x424e76;return db[_0x71d0('0x16')][_0x71d0('0x34')]({'where':{'id':_0x16f46a[_0x71d0('0x33')]['id']}})[_0x71d0('0xe')](handleEntityNotFound(_0xc1e4ec,null))[_0x71d0('0xe')](function(_0x457f93){if(_0x457f93){_0x26cebb=_0x457f93;_0x595978[_0x71d0('0x1c')]=_['keys'](db[_0x71d0('0x35')]['rawAttributes']);_0x595978[_0x71d0('0x19')]=_[_0x71d0('0x1a')](_0x16f46a['query']);_0x595978[_0x71d0('0x23')]=_[_0x71d0('0x1b')](_0x595978['model'],_0x595978[_0x71d0('0x19')]);_0x2e70f1['attributes']=_[_0x71d0('0x1b')](_0x595978[_0x71d0('0x1c')],qs[_0x71d0('0x1e')](_0x16f46a[_0x71d0('0x19')][_0x71d0('0x1e')]));_0x2e70f1[_0x71d0('0x1d')]=_0x2e70f1[_0x71d0('0x1d')][_0x71d0('0x1f')]?_0x2e70f1['attributes']:_0x595978['model'];_0x2e70f1[_0x71d0('0x36')]=qs['sort'](_0x16f46a[_0x71d0('0x19')][_0x71d0('0x21')]);_0x2e70f1[_0x71d0('0x22')]=qs[_0x71d0('0x23')](_[_0x71d0('0x24')](_0x16f46a[_0x71d0('0x19')],_0x595978[_0x71d0('0x23')]));if(_0x16f46a['query']['filter']){_0x2e70f1[_0x71d0('0x22')]=_[_0x71d0('0x26')](_0x2e70f1[_0x71d0('0x22')],{'$or':_['map'](_0x2e70f1[_0x71d0('0x1d')],function(_0x2aeaab){var _0x47d805={};_0x47d805[_0x2aeaab]={'$like':'%'+_0x16f46a[_0x71d0('0x19')][_0x71d0('0x25')]+'%'};return _0x47d805;})});}_0x2e70f1=_[_0x71d0('0x26')]({},_0x2e70f1,_0x16f46a[_0x71d0('0x2e')]);return _0x26cebb[_0x71d0('0x37')](_0x2e70f1);}})[_0x71d0('0xe')](function(_0x5aff62){if(_0x5aff62){_0x424e76=_0x5aff62[_0x71d0('0x1f')];if(!_0x16f46a[_0x71d0('0x19')][_0x71d0('0x38')](_0x71d0('0x20'))){_0x2e70f1['limit']=qs['limit'](_0x16f46a[_0x71d0('0x19')][_0x71d0('0xa')]);_0x2e70f1[_0x71d0('0x8')]=qs['offset'](_0x16f46a['query'][_0x71d0('0x8')]);}return _0x26cebb[_0x71d0('0x37')](_0x2e70f1);}})[_0x71d0('0xe')](function(_0x3da4e1){if(_0x3da4e1){return _0x3da4e1?{'count':_0x424e76,'rows':_0x3da4e1}:null;}})[_0x71d0('0xe')](respondWithResult(_0xc1e4ec,null))['catch'](handleError(_0xc1e4ec,null));};exports['addConfiguration']=function(_0x31eec5,_0x2fd9c4){if(_0x31eec5[_0x71d0('0x30')]['id']){delete _0x31eec5[_0x71d0('0x30')]['id'];}return db[_0x71d0('0x16')][_0x71d0('0x34')]({'where':{'id':_0x31eec5[_0x71d0('0x33')]['id']}})[_0x71d0('0xe')](handleEntityNotFound(_0x2fd9c4,null))[_0x71d0('0xe')](function(_0x3b7b11){if(_0x3b7b11){_0x31eec5[_0x71d0('0x30')][_0x71d0('0x39')]=_0x3b7b11['id'];_0x31eec5[_0x71d0('0x30')][_0x71d0('0x3a')]=integrations['getSubjects'](_0x31eec5[_0x71d0('0x30')][_0x71d0('0x3b')],_0x31eec5[_0x71d0('0x30')][_0x71d0('0x17')]);_0x31eec5[_0x71d0('0x30')][_0x71d0('0x3c')]=integrations['getDescriptions'](_0x31eec5[_0x71d0('0x30')][_0x71d0('0x3b')],_0x31eec5[_0x71d0('0x30')]['type']);return db['Dynamics365Configuration'][_0x71d0('0x2f')](_0x31eec5['body'],{'include':[{'model':db[_0x71d0('0x3d')],'as':_0x71d0('0x3a')},{'model':db[_0x71d0('0x3d')],'as':'Descriptions'}]});}return null;})[_0x71d0('0xe')](respondWithResult(_0x2fd9c4,null))[_0x71d0('0x2c')](handleError(_0x2fd9c4,null));};function sanitizeRemoteUri(_0x41af26){var _0x1eb6db=_0x41af26[_0x71d0('0x3e')](-0x1);if(_0x1eb6db==='/')return _0x41af26[_0x71d0('0x3f')](0x0,_0x41af26[_0x71d0('0x40')](_0x1eb6db));return _0x41af26;}function getWebApiUrl(_0x53527a){return util[_0x71d0('0x41')]('%s/api/data/v9.0/',_0x53527a);}exports[_0x71d0('0x42')]=function(_0x9a8631,_0x4a9404){var _0x4506b2=_0x9a8631[_0x71d0('0x19')][_0x71d0('0x43')];var _0x189a80=_0x4506b2===_0x71d0('0x44')?_0x71d0('0x45'):_0x71d0('0x46');var _0x32c4ab='';var _0x549d98='';var _0xfab4bc='';var _0x4a0f9e='';var _0x42c912='';var _0x3e7442='';var _0x158d29='';var _0x21b0ba='';var _0x2ee9f5=[_0x71d0('0x47'),'description',_0x71d0('0x48'),_0x71d0('0x49'),_0x71d0('0x4a'),_0x71d0('0x4b'),_0x71d0('0x4c'),'regardingobjectid',_0x71d0('0x4d'),'phonecall_activity_parties'];var _0x203e72=[_0x71d0('0x4e'),_0x71d0('0x4f'),_0x71d0('0x50'),_0x71d0('0x51'),'contactidname',_0x71d0('0x52'),_0x71d0('0x53'),_0x71d0('0x54'),_0x71d0('0x55'),'createdbyexternalpartyyominame',_0x71d0('0x56'),_0x71d0('0x57'),_0x71d0('0x58'),_0x71d0('0x59'),'createdonbehalfbyyominame',_0x71d0('0x5a'),_0x71d0('0x5b'),'customeridyominame',_0x71d0('0x5c'),_0x71d0('0x5d'),_0x71d0('0x5e'),'entityimage_url',_0x71d0('0x5f'),_0x71d0('0x60'),_0x71d0('0x61'),_0x71d0('0x62'),'importsequencenumber',_0x71d0('0x63'),_0x71d0('0x64'),_0x71d0('0x65'),_0x71d0('0x66'),'modifiedbyexternalpartyname',_0x71d0('0x67'),_0x71d0('0x68'),'modifiedbyyominame',_0x71d0('0x69'),'modifiedonbehalfbyname',_0x71d0('0x6a'),_0x71d0('0x6b'),_0x71d0('0x6c'),_0x71d0('0x6d'),_0x71d0('0x6e'),_0x71d0('0x6f'),_0x71d0('0x70'),'owneridtype',_0x71d0('0x71'),_0x71d0('0x72'),_0x71d0('0x73'),'primarycontactidyominame',_0x71d0('0x74'),'productidname','productserialnumber',_0x71d0('0x75'),_0x71d0('0x76'),_0x71d0('0x77'),_0x71d0('0x78'),_0x71d0('0x79'),_0x71d0('0x7a'),_0x71d0('0x7b'),_0x71d0('0x7c'),_0x71d0('0x7d'),'statecode',_0x71d0('0x7e'),_0x71d0('0x7f'),'ticketnumber',_0x71d0('0x80'),_0x71d0('0x81'),_0x71d0('0x82'),_0x71d0('0x83'),_0x71d0('0x84')];var _0x323728=_0x2ee9f5[_0x71d0('0x85')](_0x203e72);return db[_0x71d0('0x16')][_0x71d0('0x34')]({'where':{'id':_0x9a8631[_0x71d0('0x33')]['id']},'attributes':['id','username','password',_0x71d0('0x86'),_0x71d0('0x87'),_0x71d0('0x88'),_0x71d0('0x89'),_0x71d0('0x8a')],'include':[{'model':db[_0x71d0('0x8b')],'as':'CloudProvider','attributes':['id',_0x71d0('0x8c'),_0x71d0('0x8d')]}]})[_0x71d0('0xe')](handleEntityNotFound(_0x4a9404,null))['then'](function(_0x41829c){if(_0x41829c){if(_0x41829c[_0x71d0('0x8a')]){_0x41829c[_0x71d0('0x8e')]=_0x41829c[_0x71d0('0x8b')][_0x71d0('0x8c')];_0x21b0ba=sanitizeRemoteUri(_0x41829c[_0x71d0('0x8b')][_0x71d0('0x8d')]);_0x158d29=getWebApiUrl(_0x21b0ba);return _0x41829c;}_0x21b0ba=sanitizeRemoteUri(_0x41829c['remoteUri']);_0x158d29=getWebApiUrl(_0x21b0ba);var _0x6f3108={'method':'POST','uri':'https://login.microsoftonline.com/'+_0x41829c[_0x71d0('0x87')]+'/oauth2/token','form':{'client_id':_0x41829c[_0x71d0('0x88')],'resource':_0x21b0ba,'username':_0x41829c[_0x71d0('0x8f')],'password':_0x41829c['password'],'grant_type':_0x71d0('0x90'),'client_secret':_0x41829c[_0x71d0('0x89')]},'json':!![]};return rp(_0x6f3108);}})[_0x71d0('0xe')](function(_0x539443){_0x3e7442=_0x539443[_0x71d0('0x8e')];var _0x1ec216={'method':_0x71d0('0x91'),'uri':encodeURI(_0x158d29+_0x71d0('0x92')+_0x189a80+'\x27'),'headers':{'Authorization':_0x71d0('0x93')+_0x3e7442,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x1ec216);})[_0x71d0('0xe')](function(_0x321b3f){var _0x4a8e0b=_0x321b3f[_0x71d0('0x94')][0x0];var _0x5c5e27=_0x4a8e0b[_0x71d0('0x95')];var _0x2775f6={'method':_0x71d0('0x91'),'uri':_0x158d29+_0x71d0('0x96')+_0x5c5e27+_0x71d0('0x97'),'headers':{'Authorization':_0x71d0('0x93')+_0x3e7442,'If-None-Match':null,'OData-Version':_0x71d0('0x98')},'json':!![]};return rp(_0x2775f6);})[_0x71d0('0xe')](function(_0x108e6d){_0x32c4ab=_0x108e6d;_0x549d98=_0x32c4ab['Attributes'];_0x549d98=_[_0x71d0('0x99')](_0x549d98,function(_0x5fde2f){return!_0x323728[_0x71d0('0x9a')](_0x5fde2f['LogicalName']);});var _0x3ff7c1=[];var _0x2a15c7=[];_0x549d98[_0x71d0('0x9b')](function(_0x538041){if(_0x538041[_0x71d0('0x9c')]){var _0x50c7fd=_0x538041['@odata.type'][_0x71d0('0x3f')](_0x538041[_0x71d0('0x9c')][_0x71d0('0x40')]('.')+0x1);if(_0x50c7fd===_0x71d0('0x9d')){_0x3ff7c1[_0x71d0('0x9e')](getSelectList(_0x158d29,_0x4506b2,_0x2a15c7,_0x32c4ab['MetadataId'],_0x538041[_0x71d0('0x95')],_0x3e7442));}}});return Promise['all'](_0x3ff7c1);})[_0x71d0('0xe')](function(_0xb3756e){_0xfab4bc=_0xb3756e[0x0];var _0x468c73=[];var _0x597878=[];_0x549d98[_0x71d0('0x9b')](function(_0x258972){if(!_[_0x71d0('0x9f')](_0x258972['@odata.type'])){var _0x9f6525=_0x258972['@odata.type']['substring'](_0x258972[_0x71d0('0x9c')][_0x71d0('0x40')]('.')+0x1);if(_0x9f6525===_0x71d0('0xa0')){_0x468c73[_0x71d0('0x9e')](getBooleanList(_0x158d29,_0x4506b2,_0x597878,_0x32c4ab[_0x71d0('0x95')],_0x258972[_0x71d0('0x95')],_0x3e7442));}}});return Promise[_0x71d0('0xa1')](_0x468c73);})[_0x71d0('0xe')](function(_0x5ca001){_0x4a0f9e=_0x5ca001[0x0];var _0x14faaa=[];var _0x3821c5=[];_0x549d98[_0x71d0('0x9b')](function(_0x236940){if(_0x236940[_0x71d0('0x9c')]){var _0xee194f=_0x236940['@odata.type'][_0x71d0('0x3f')](_0x236940[_0x71d0('0x9c')][_0x71d0('0x40')]('.')+0x1);if(_0xee194f===_0x71d0('0xa2')||_0xee194f===_0x71d0('0xa3')||_0xee194f===_0x71d0('0xa4')||_0xee194f===_0x71d0('0xa5')||_0xee194f===_0x71d0('0xa6')||_0xee194f===_0x71d0('0xa7')||_0xee194f===_0x71d0('0xa8')||_0xee194f===_0x71d0('0xa9')||_0xee194f===_0x71d0('0xaa')||_0xee194f===_0x71d0('0xab')){_0x14faaa[_0x71d0('0x9e')](getInputList(_0x158d29,_0x4506b2,_0xee194f,_0x3821c5,_0x32c4ab[_0x71d0('0x95')],_0x236940['MetadataId'],_0x3e7442));}}});return Promise[_0x71d0('0xa1')](_0x14faaa);})['then'](function(_0xad8ab3){_0x42c912=_0xad8ab3[0x0];var _0x23746c=_0xfab4bc['concat'](_0x4a0f9e)['concat'](_0x42c912);var _0x2ede43={'count':_0x23746c[_0x71d0('0x1f')],'rows':_0x23746c};return _0x2ede43;})[_0x71d0('0xe')](respondWithResult(_0x4a9404,null))['catch'](function(_0x41ef31){var _0x472d1d=_0x9a8631[_0x71d0('0x19')][_0x71d0('0xac')]?0x1f4:_0x41ef31[_0x71d0('0xad')]||0x1f4;logger[_0x71d0('0x10')](_0x41ef31[_0x71d0('0x11')]);delete _0x41ef31['name'];if(_0x472d1d===0x191){_0x472d1d=0x190;}_0x4a9404[_0x71d0('0x6')](_0x472d1d)[_0x71d0('0x13')](_0x9a8631[_0x71d0('0x19')][_0x71d0('0xac')]?{'message':_0x71d0('0xae'),'statusCode':_0x41ef31[_0x71d0('0xad')]}:_0x41ef31);});};function getSelectList(_0x4dd3ad,_0x448cea,_0x30274d,_0x4d6fe3,_0x203c0e,_0x5c4194){var _0x7d76d9={'method':_0x71d0('0x91'),'uri':_0x4dd3ad+_0x71d0('0x96')+_0x4d6fe3+')/Attributes('+_0x203c0e+_0x71d0('0xaf')+_0x71d0('0xb0'),'headers':{'Authorization':_0x71d0('0x93')+_0x5c4194,'If-None-Match':null,'OData-Version':_0x71d0('0x98')},'json':!![]};return rp(_0x7d76d9)[_0x71d0('0xe')](function(_0x2a0809){var _0x1f903d=[];var _0x3b6b63=_0x2a0809[_0x71d0('0xb1')][_0x71d0('0xb2')];_0x3b6b63[_0x71d0('0x9b')](function(_0xe7f4ed){_0x1f903d[_0x71d0('0x9e')]({'name':_0xe7f4ed[_0x71d0('0xb3')]['UserLocalizedLabel'][_0x71d0('0xb3')],'value':String(_0xe7f4ed[_0x71d0('0xb4')])});});var _0x4e6104={'id':_0x448cea+'_'+_0x2a0809[_0x71d0('0xb5')],'name':_0x2a0809[_0x71d0('0xb6')][_0x71d0('0xb7')][_0x71d0('0xb3')],'custom':![],'options':_0x1f903d};_0x30274d[_0x71d0('0x9e')](_0x4e6104);return _0x30274d;});}function getBooleanList(_0xc03633,_0x162a38,_0x431721,_0x3c14aa,_0x48445a,_0x3193d0){var _0x4ddace={'method':_0x71d0('0x91'),'uri':_0xc03633+'EntityDefinitions('+_0x3c14aa+_0x71d0('0xb8')+_0x48445a+_0x71d0('0xb9'),'headers':{'Authorization':_0x71d0('0x93')+_0x3193d0,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x4ddace)[_0x71d0('0xe')](function(_0x459634){var _0x4fd444=[];_0x4fd444['push']({'name':_0x459634[_0x71d0('0xb1')]['TrueOption'][_0x71d0('0xb3')][_0x71d0('0xb7')][_0x71d0('0xb3')],'value':_0x71d0('0xba')},{'name':_0x459634[_0x71d0('0xb1')][_0x71d0('0xbb')][_0x71d0('0xb3')][_0x71d0('0xb7')][_0x71d0('0xb3')],'value':'false'});var _0x3bed03={'id':_0x162a38+'_'+_0x459634[_0x71d0('0xb5')],'name':_0x459634[_0x71d0('0xb6')][_0x71d0('0xb7')][_0x71d0('0xb3')],'custom':![],'options':_0x4fd444};_0x431721[_0x71d0('0x9e')](_0x3bed03);return _0x431721;});}function getInputList(_0x22b5f4,_0x3ab76f,_0x5ce6a2,_0x40b695,_0x20a5ce,_0x455b3a,_0xd20362){var _0x2f7bea={'method':_0x71d0('0x91'),'uri':_0x22b5f4+'EntityDefinitions('+_0x20a5ce+')/Attributes('+_0x455b3a+_0x71d0('0xbc')+_0x5ce6a2+_0x71d0('0xbd'),'headers':{'Authorization':'Bearer\x20'+_0xd20362,'If-None-Match':null,'OData-Version':_0x71d0('0x98')},'json':!![]};return rp(_0x2f7bea)['then'](function(_0x52d5b6){var _0xb0d0f1={'id':_0x3ab76f+'_'+_0x52d5b6['LogicalName'],'name':_0x52d5b6['DisplayName'][_0x71d0('0xb7')]?_0x52d5b6[_0x71d0('0xb6')]['UserLocalizedLabel'][_0x71d0('0xb3')]:_0x52d5b6[_0x71d0('0xb5')],'custom':![],'options':[]};_0x40b695[_0x71d0('0x9e')](_0xb0d0f1);return _0x40b695;});}
\ No newline at end of file
+var _0x2164=['owneridtype','owneridyominame','parentcaseidname','primarycontactidname','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','statecode','ticketnumber','timezoneruleversionnumber','traversedpath','utcconversiontimezonecode','concat','password','remoteUri','tenantId','clientId','clientSecret','modernAuthentication','CloudProvider','data7','access_token','data5','https://login.microsoftonline.com/','/oauth2/token','username','GET','Bearer\x20','4.0','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','forEach','@odata.type','PicklistAttributeMetadata','all','isNil','push','BigIntAttributeMetadata','MemoAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','DecimalAttributeMetadata','test','send','Wrong\x20credentials','statusCode',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','OptionSet','Options','Label','UserLocalizedLabel','Value','LogicalName','DisplayName',')/Attributes(',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','true','FalseOption','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','request-promise','util','lodash','../../components/parsers/qs','api','status','json','offset','undefined','limit','count','set','Content-Range','update','then','end','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','sort','pick','where','VIRTUAL','filter','merge','options','Dynamics365Account','includeAll','findAll','rows','catch','show','keys','include','find','create','body','params','findOne','Dynamics365Configuration','getConfigurations','nolimit','addConfiguration','AccountId','getSubjects','channel','getDescriptions','Dynamics365Field','Subjects','Descriptions','slice','substring','lastIndexOf','getFields','ticketType','incident','title','ownerid','caseorigincode','phonenumber','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contractdetailidname','contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdonbehalfbyname','createdonbehalfbyyominame','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','entityimage_url','escalatedon','firstresponsebykpiidname','followupby','lastonholdtime','modifiedbyname','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','onholdtime','owneridname'];(function(_0x10c40c,_0x5093e7){var _0x2dbd72=function(_0x36c6df){while(--_0x36c6df){_0x10c40c['push'](_0x10c40c['shift']());}};_0x2dbd72(++_0x5093e7);}(_0x2164,0xf9));var _0x4216=function(_0x2d42ed,_0xb8e6c3){_0x2d42ed=_0x2d42ed-0x0;var _0xb224df=_0x2164[_0x2d42ed];return _0xb224df;};'use strict';var rp=require(_0x4216('0x0'));var util=require(_0x4216('0x1'));var _=require(_0x4216('0x2'));var qs=require(_0x4216('0x3'));var logger=require('../../config/logger')(_0x4216('0x4'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithResult(_0x54c319,_0x49dda3){_0x49dda3=_0x49dda3||0xc8;return function(_0x2970a3){if(_0x2970a3){return _0x54c319[_0x4216('0x5')](_0x49dda3)[_0x4216('0x6')](_0x2970a3);}};}function respondWithFilteredResult(_0x979f19,_0x55d593){return function(_0x563ed1){if(_0x563ed1){var _0x419078=typeof _0x55d593[_0x4216('0x7')]===_0x4216('0x8')&&typeof _0x55d593[_0x4216('0x9')]===_0x4216('0x8');var _0x2565c4=_0x563ed1[_0x4216('0xa')];var _0xb67811=_0x419078?0x0:_0x55d593[_0x4216('0x7')];var _0x50506e=_0x419078?_0x563ed1[_0x4216('0xa')]:_0x55d593[_0x4216('0x7')]+_0x55d593[_0x4216('0x9')];var _0x2fa3ea;if(_0x50506e>=_0x2565c4){_0x50506e=_0x2565c4;_0x2fa3ea=0xc8;}else{_0x2fa3ea=0xce;}_0x979f19['status'](_0x2fa3ea);return _0x979f19[_0x4216('0xb')](_0x4216('0xc'),_0xb67811+'-'+_0x50506e+'/'+_0x2565c4)[_0x4216('0x6')](_0x563ed1);}return null;};}function saveUpdates(_0x2339e1){return function(_0x2879f9){if(_0x2879f9){return _0x2879f9[_0x4216('0xd')](_0x2339e1)[_0x4216('0xe')](function(_0x15475c){return _0x15475c;});}return null;};}function removeEntity(_0x51caf4){return function(_0x43be68){if(_0x43be68){return _0x43be68['destroy']()['then'](function(){_0x51caf4[_0x4216('0x5')](0xcc)[_0x4216('0xf')]();});}};}function handleEntityNotFound(_0x1e0097){return function(_0x1464d6){if(!_0x1464d6){_0x1e0097['sendStatus'](0x194);}return _0x1464d6;};}function handleError(_0x4ddf16,_0x72cfdb){_0x72cfdb=_0x72cfdb||0x1f4;return function(_0x436607){logger[_0x4216('0x10')](_0x436607[_0x4216('0x11')]);if(_0x436607[_0x4216('0x12')]){delete _0x436607[_0x4216('0x12')];}_0x4ddf16[_0x4216('0x5')](_0x72cfdb)['send'](_0x436607);};}exports[_0x4216('0x13')]=function(_0x7b8980,_0x27c05a){var _0x4986c0={},_0x3f9578={},_0x4364a8={'count':0x0,'rows':[]};var _0x278168=_[_0x4216('0x14')](db['Dynamics365Account'][_0x4216('0x15')],function(_0x36230a){return{'name':_0x36230a[_0x4216('0x16')],'type':_0x36230a[_0x4216('0x17')][_0x4216('0x18')]};});_0x3f9578[_0x4216('0x19')]=_[_0x4216('0x14')](_0x278168,_0x4216('0x12'));_0x3f9578[_0x4216('0x1a')]=_['keys'](_0x7b8980['query']);_0x3f9578[_0x4216('0x1b')]=_[_0x4216('0x1c')](_0x3f9578[_0x4216('0x19')],_0x3f9578[_0x4216('0x1a')]);_0x4986c0['attributes']=_['intersection'](_0x3f9578[_0x4216('0x19')],qs[_0x4216('0x1d')](_0x7b8980[_0x4216('0x1a')][_0x4216('0x1d')]));_0x4986c0[_0x4216('0x1e')]=_0x4986c0['attributes'][_0x4216('0x1f')]?_0x4986c0[_0x4216('0x1e')]:_0x3f9578[_0x4216('0x19')];if(!_0x7b8980[_0x4216('0x1a')][_0x4216('0x20')]('nolimit')){_0x4986c0[_0x4216('0x9')]=qs[_0x4216('0x9')](_0x7b8980[_0x4216('0x1a')]['limit']);_0x4986c0[_0x4216('0x7')]=qs[_0x4216('0x7')](_0x7b8980[_0x4216('0x1a')]['offset']);}_0x4986c0['order']=qs[_0x4216('0x21')](_0x7b8980['query'][_0x4216('0x21')]);_0x4986c0['where']=qs[_0x4216('0x1b')](_[_0x4216('0x22')](_0x7b8980[_0x4216('0x1a')],_0x3f9578[_0x4216('0x1b')]),_0x278168);if(_0x7b8980['query']['filter']){_0x4986c0[_0x4216('0x23')]=_['merge'](_0x4986c0[_0x4216('0x23')],{'$or':_[_0x4216('0x14')](_0x278168,function(_0x3752f2){if(_0x3752f2[_0x4216('0x17')]!==_0x4216('0x24')){var _0x1b05dd={};_0x1b05dd[_0x3752f2[_0x4216('0x12')]]={'$like':'%'+_0x7b8980[_0x4216('0x1a')][_0x4216('0x25')]+'%'};return _0x1b05dd;}})});}_0x4986c0=_[_0x4216('0x26')]({},_0x4986c0,_0x7b8980[_0x4216('0x27')]);var _0x3bc191={'where':_0x4986c0[_0x4216('0x23')]};return db[_0x4216('0x28')]['count'](_0x3bc191)[_0x4216('0xe')](function(_0x5e6196){_0x4364a8['count']=_0x5e6196;if(_0x7b8980[_0x4216('0x1a')][_0x4216('0x29')]){_0x4986c0['include']=[{'all':!![]}];}return db[_0x4216('0x28')][_0x4216('0x2a')](_0x4986c0);})[_0x4216('0xe')](function(_0x5940b5){_0x4364a8[_0x4216('0x2b')]=_0x5940b5;return _0x4364a8;})['then'](respondWithFilteredResult(_0x27c05a,_0x4986c0))[_0x4216('0x2c')](handleError(_0x27c05a,null));};exports[_0x4216('0x2d')]=function(_0x7a1d24,_0x53c25d){var _0x1959bd={'raw':![],'where':{'id':_0x7a1d24['params']['id']}},_0x1abac8={};_0x1abac8[_0x4216('0x19')]=_[_0x4216('0x2e')](db[_0x4216('0x28')][_0x4216('0x15')]);_0x1abac8[_0x4216('0x1a')]=_[_0x4216('0x2e')](_0x7a1d24['query']);_0x1abac8['filters']=_[_0x4216('0x1c')](_0x1abac8[_0x4216('0x19')],_0x1abac8[_0x4216('0x1a')]);_0x1959bd['attributes']=_['intersection'](_0x1abac8[_0x4216('0x19')],qs[_0x4216('0x1d')](_0x7a1d24[_0x4216('0x1a')][_0x4216('0x1d')]));_0x1959bd[_0x4216('0x1e')]=_0x1959bd[_0x4216('0x1e')][_0x4216('0x1f')]?_0x1959bd[_0x4216('0x1e')]:_0x1abac8[_0x4216('0x19')];if(_0x7a1d24['query'][_0x4216('0x29')]){_0x1959bd[_0x4216('0x2f')]=[{'all':!![]}];}_0x1959bd=_[_0x4216('0x26')]({},_0x1959bd,_0x7a1d24[_0x4216('0x27')]);return db[_0x4216('0x28')][_0x4216('0x30')](_0x1959bd)['then'](handleEntityNotFound(_0x53c25d,null))['then'](respondWithResult(_0x53c25d,null))['catch'](handleError(_0x53c25d,null));};exports[_0x4216('0x31')]=function(_0xd17709,_0x40e001){return db[_0x4216('0x28')]['create'](_0xd17709[_0x4216('0x32')],{})[_0x4216('0xe')](respondWithResult(_0x40e001,0xc9))[_0x4216('0x2c')](handleError(_0x40e001,null));};exports[_0x4216('0xd')]=function(_0x5c61d0,_0x59040f){if(_0x5c61d0['body']['id']){delete _0x5c61d0[_0x4216('0x32')]['id'];}return db[_0x4216('0x28')][_0x4216('0x30')]({'where':{'id':_0x5c61d0[_0x4216('0x33')]['id']}})[_0x4216('0xe')](handleEntityNotFound(_0x59040f,null))['then'](saveUpdates(_0x5c61d0[_0x4216('0x32')],null))[_0x4216('0xe')](respondWithResult(_0x59040f,null))[_0x4216('0x2c')](handleError(_0x59040f,null));};exports['destroy']=function(_0x47d93c,_0x2480f0){return db['Dynamics365Account'][_0x4216('0x30')]({'where':{'id':_0x47d93c['params']['id']}})[_0x4216('0xe')](handleEntityNotFound(_0x2480f0,null))[_0x4216('0xe')](removeEntity(_0x2480f0,null))[_0x4216('0x2c')](handleError(_0x2480f0,null));};exports['getConfigurations']=function(_0x212f80,_0x1cbf75){var _0x4a41a0={};var _0x2ea18b={};var _0x13b0f7;var _0x11623a;return db['Dynamics365Account'][_0x4216('0x34')]({'where':{'id':_0x212f80[_0x4216('0x33')]['id']}})[_0x4216('0xe')](handleEntityNotFound(_0x1cbf75,null))['then'](function(_0xe96e53){if(_0xe96e53){_0x13b0f7=_0xe96e53;_0x2ea18b[_0x4216('0x19')]=_[_0x4216('0x2e')](db[_0x4216('0x35')][_0x4216('0x15')]);_0x2ea18b[_0x4216('0x1a')]=_[_0x4216('0x2e')](_0x212f80[_0x4216('0x1a')]);_0x2ea18b[_0x4216('0x1b')]=_[_0x4216('0x1c')](_0x2ea18b[_0x4216('0x19')],_0x2ea18b[_0x4216('0x1a')]);_0x4a41a0[_0x4216('0x1e')]=_[_0x4216('0x1c')](_0x2ea18b[_0x4216('0x19')],qs['fields'](_0x212f80[_0x4216('0x1a')]['fields']));_0x4a41a0['attributes']=_0x4a41a0[_0x4216('0x1e')]['length']?_0x4a41a0['attributes']:_0x2ea18b[_0x4216('0x19')];_0x4a41a0['order']=qs[_0x4216('0x21')](_0x212f80[_0x4216('0x1a')][_0x4216('0x21')]);_0x4a41a0[_0x4216('0x23')]=qs[_0x4216('0x1b')](_[_0x4216('0x22')](_0x212f80[_0x4216('0x1a')],_0x2ea18b['filters']));if(_0x212f80['query'][_0x4216('0x25')]){_0x4a41a0[_0x4216('0x23')]=_[_0x4216('0x26')](_0x4a41a0['where'],{'$or':_[_0x4216('0x14')](_0x4a41a0[_0x4216('0x1e')],function(_0x3a9bb0){var _0x5577b1={};_0x5577b1[_0x3a9bb0]={'$like':'%'+_0x212f80[_0x4216('0x1a')]['filter']+'%'};return _0x5577b1;})});}_0x4a41a0=_[_0x4216('0x26')]({},_0x4a41a0,_0x212f80[_0x4216('0x27')]);return _0x13b0f7[_0x4216('0x36')](_0x4a41a0);}})[_0x4216('0xe')](function(_0x209f72){if(_0x209f72){_0x11623a=_0x209f72[_0x4216('0x1f')];if(!_0x212f80[_0x4216('0x1a')][_0x4216('0x20')](_0x4216('0x37'))){_0x4a41a0['limit']=qs[_0x4216('0x9')](_0x212f80[_0x4216('0x1a')][_0x4216('0x9')]);_0x4a41a0[_0x4216('0x7')]=qs[_0x4216('0x7')](_0x212f80[_0x4216('0x1a')]['offset']);}return _0x13b0f7[_0x4216('0x36')](_0x4a41a0);}})[_0x4216('0xe')](function(_0x49c945){if(_0x49c945){return _0x49c945?{'count':_0x11623a,'rows':_0x49c945}:null;}})['then'](respondWithResult(_0x1cbf75,null))['catch'](handleError(_0x1cbf75,null));};exports[_0x4216('0x38')]=function(_0x759c89,_0x319648){if(_0x759c89['body']['id']){delete _0x759c89[_0x4216('0x32')]['id'];}return db[_0x4216('0x28')][_0x4216('0x34')]({'where':{'id':_0x759c89[_0x4216('0x33')]['id']}})[_0x4216('0xe')](handleEntityNotFound(_0x319648,null))[_0x4216('0xe')](function(_0x40f95c){if(_0x40f95c){_0x759c89['body'][_0x4216('0x39')]=_0x40f95c['id'];_0x759c89[_0x4216('0x32')]['Subjects']=integrations[_0x4216('0x3a')](_0x759c89[_0x4216('0x32')][_0x4216('0x3b')],_0x759c89[_0x4216('0x32')][_0x4216('0x17')]);_0x759c89[_0x4216('0x32')]['Descriptions']=integrations[_0x4216('0x3c')](_0x759c89[_0x4216('0x32')][_0x4216('0x3b')],_0x759c89[_0x4216('0x32')][_0x4216('0x17')]);return db[_0x4216('0x35')][_0x4216('0x31')](_0x759c89[_0x4216('0x32')],{'include':[{'model':db[_0x4216('0x3d')],'as':_0x4216('0x3e')},{'model':db['Dynamics365Field'],'as':_0x4216('0x3f')}]});}return null;})['then'](respondWithResult(_0x319648,null))['catch'](handleError(_0x319648,null));};function sanitizeRemoteUri(_0x427f98){var _0xb7551b=_0x427f98[_0x4216('0x40')](-0x1);if(_0xb7551b==='/')return _0x427f98[_0x4216('0x41')](0x0,_0x427f98[_0x4216('0x42')](_0xb7551b));return _0x427f98;}function getWebApiUrl(_0x2faae2){return util['format']('%s/api/data/v9.0/',_0x2faae2);}exports[_0x4216('0x43')]=function(_0x94aa5e,_0x284502){var _0x8f1eb0=_0x94aa5e[_0x4216('0x1a')][_0x4216('0x44')];var _0xcbb38b=_0x8f1eb0===_0x4216('0x45')?'Incident':'PhoneCall';var _0x36f413='';var _0x52e2ef='';var _0x153d1d='';var _0x594ec4='';var _0x1916c1='';var _0x32e306='';var _0x2d012a='';var _0x12feab='';var _0x4871a9=[_0x4216('0x46'),'description','customerid',_0x4216('0x47'),_0x4216('0x48'),'subject',_0x4216('0x49'),_0x4216('0x4a'),_0x4216('0x4b'),_0x4216('0x4c')];var _0x396cf3=[_0x4216('0x4d'),_0x4216('0x4e'),_0x4216('0x4f'),_0x4216('0x50'),_0x4216('0x51'),'contactidyominame',_0x4216('0x52'),_0x4216('0x53'),_0x4216('0x54'),_0x4216('0x55'),_0x4216('0x56'),_0x4216('0x57'),'createdon',_0x4216('0x58'),_0x4216('0x59'),'customeridname',_0x4216('0x5a'),_0x4216('0x5b'),_0x4216('0x5c'),_0x4216('0x5d'),_0x4216('0x5e'),_0x4216('0x5f'),_0x4216('0x60'),'exchangerate',_0x4216('0x61'),_0x4216('0x62'),'importsequencenumber','influencescore','kbarticleidname',_0x4216('0x63'),'masteridname','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame',_0x4216('0x64'),'modifiedbyyominame',_0x4216('0x65'),_0x4216('0x66'),_0x4216('0x67'),_0x4216('0x68'),'msdyn_iotalertname','numberofchildincidents',_0x4216('0x69'),'overriddencreatedon',_0x4216('0x6a'),_0x4216('0x6b'),_0x4216('0x6c'),_0x4216('0x6d'),_0x4216('0x6e'),'primarycontactidyominame','prioritycodename',_0x4216('0x6f'),_0x4216('0x70'),_0x4216('0x71'),_0x4216('0x72'),_0x4216('0x73'),_0x4216('0x74'),_0x4216('0x75'),_0x4216('0x76'),_0x4216('0x77'),_0x4216('0x78'),'socialprofileidname',_0x4216('0x79'),'statuscode','subjectidname',_0x4216('0x7a'),_0x4216('0x7b'),'transactioncurrencyidname',_0x4216('0x7c'),_0x4216('0x7d'),'versionnumber'];var _0x4d9597=_0x4871a9[_0x4216('0x7e')](_0x396cf3);return db['Dynamics365Account']['findOne']({'where':{'id':_0x94aa5e['params']['id']},'attributes':['id','username',_0x4216('0x7f'),_0x4216('0x80'),_0x4216('0x81'),_0x4216('0x82'),_0x4216('0x83'),_0x4216('0x84')],'include':[{'model':db[_0x4216('0x85')],'as':_0x4216('0x85'),'attributes':['id','data5',_0x4216('0x86')]}]})[_0x4216('0xe')](handleEntityNotFound(_0x284502,null))[_0x4216('0xe')](function(_0x5a6f13){if(_0x5a6f13){if(_0x5a6f13[_0x4216('0x84')]){_0x5a6f13[_0x4216('0x87')]=_0x5a6f13[_0x4216('0x85')][_0x4216('0x88')];_0x12feab=sanitizeRemoteUri(_0x5a6f13[_0x4216('0x85')][_0x4216('0x86')]);_0x2d012a=getWebApiUrl(_0x12feab);return _0x5a6f13;}_0x12feab=sanitizeRemoteUri(_0x5a6f13[_0x4216('0x80')]);_0x2d012a=getWebApiUrl(_0x12feab);var _0x3ab876={'method':'POST','uri':_0x4216('0x89')+_0x5a6f13['tenantId']+_0x4216('0x8a'),'form':{'client_id':_0x5a6f13[_0x4216('0x82')],'resource':_0x12feab,'username':_0x5a6f13[_0x4216('0x8b')],'password':_0x5a6f13[_0x4216('0x7f')],'grant_type':_0x4216('0x7f'),'client_secret':_0x5a6f13[_0x4216('0x83')]},'json':!![]};return rp(_0x3ab876);}})[_0x4216('0xe')](function(_0x3a456a){_0x32e306=_0x3a456a[_0x4216('0x87')];var _0x40104b={'method':_0x4216('0x8c'),'uri':encodeURI(_0x2d012a+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0xcbb38b+'\x27'),'headers':{'Authorization':_0x4216('0x8d')+_0x32e306,'If-None-Match':null,'OData-Version':_0x4216('0x8e')},'json':!![]};return rp(_0x40104b);})['then'](function(_0x155b93){var _0x66907d=_0x155b93[_0x4216('0x8f')][0x0];var _0x560a9c=_0x66907d[_0x4216('0x90')];var _0x253aaf={'method':_0x4216('0x8c'),'uri':_0x2d012a+_0x4216('0x91')+_0x560a9c+_0x4216('0x92'),'headers':{'Authorization':_0x4216('0x8d')+_0x32e306,'If-None-Match':null,'OData-Version':_0x4216('0x8e')},'json':!![]};return rp(_0x253aaf);})[_0x4216('0xe')](function(_0x42a99b){_0x36f413=_0x42a99b;_0x52e2ef=_0x36f413['Attributes'];_0x52e2ef=_['remove'](_0x52e2ef,function(_0x449cb9){return!_0x4d9597['includes'](_0x449cb9['LogicalName']);});var _0x1b015e=[];var _0x530f03=[];_0x52e2ef[_0x4216('0x93')](function(_0x3ccda2){if(_0x3ccda2['@odata.type']){var _0xbc070e=_0x3ccda2['@odata.type']['substring'](_0x3ccda2[_0x4216('0x94')][_0x4216('0x42')]('.')+0x1);if(_0xbc070e===_0x4216('0x95')){_0x1b015e['push'](getSelectList(_0x2d012a,_0x8f1eb0,_0x530f03,_0x36f413[_0x4216('0x90')],_0x3ccda2[_0x4216('0x90')],_0x32e306));}}});return Promise[_0x4216('0x96')](_0x1b015e);})['then'](function(_0xc15f76){_0x153d1d=_0xc15f76[0x0];var _0x3fdb4e=[];var _0x3da8b9=[];_0x52e2ef[_0x4216('0x93')](function(_0x340077){if(!_[_0x4216('0x97')](_0x340077[_0x4216('0x94')])){var _0x4d1fa1=_0x340077['@odata.type'][_0x4216('0x41')](_0x340077['@odata.type']['lastIndexOf']('.')+0x1);if(_0x4d1fa1==='BooleanAttributeMetadata'){_0x3fdb4e[_0x4216('0x98')](getBooleanList(_0x2d012a,_0x8f1eb0,_0x3da8b9,_0x36f413[_0x4216('0x90')],_0x340077[_0x4216('0x90')],_0x32e306));}}});return Promise[_0x4216('0x96')](_0x3fdb4e);})[_0x4216('0xe')](function(_0x174947){_0x594ec4=_0x174947[0x0];var _0x4b6830=[];var _0x25306f=[];_0x52e2ef['forEach'](function(_0x55cf0d){if(_0x55cf0d[_0x4216('0x94')]){var _0x3a9c43=_0x55cf0d[_0x4216('0x94')][_0x4216('0x41')](_0x55cf0d[_0x4216('0x94')]['lastIndexOf']('.')+0x1);if(_0x3a9c43==='StringAttributeMetadata'||_0x3a9c43==='DoubleAttributeMetadata'||_0x3a9c43===_0x4216('0x99')||_0x3a9c43==='IntegerAttributeMetadata'||_0x3a9c43===_0x4216('0x9a')||_0x3a9c43==='DateTimeAttributeMetadata'||_0x3a9c43===_0x4216('0x9b')||_0x3a9c43===_0x4216('0x9c')||_0x3a9c43==='StateAttributeMetadata'||_0x3a9c43===_0x4216('0x9d')){_0x4b6830[_0x4216('0x98')](getInputList(_0x2d012a,_0x8f1eb0,_0x3a9c43,_0x25306f,_0x36f413[_0x4216('0x90')],_0x55cf0d[_0x4216('0x90')],_0x32e306));}}});return Promise['all'](_0x4b6830);})['then'](function(_0x3602db){_0x1916c1=_0x3602db[0x0];var _0x2faec1=_0x153d1d['concat'](_0x594ec4)['concat'](_0x1916c1);var _0x5e6768={'count':_0x2faec1['length'],'rows':_0x2faec1};return _0x5e6768;})[_0x4216('0xe')](respondWithResult(_0x284502,null))[_0x4216('0x2c')](function(_0x385d5e){var _0x8ae7a1=_0x94aa5e['query'][_0x4216('0x9e')]?0x1f4:_0x385d5e['statusCode']||0x1f4;logger['error'](_0x385d5e[_0x4216('0x11')]);delete _0x385d5e[_0x4216('0x12')];if(_0x8ae7a1===0x191){_0x8ae7a1=0x190;}_0x284502[_0x4216('0x5')](_0x8ae7a1)[_0x4216('0x9f')](_0x94aa5e[_0x4216('0x1a')]['test']?{'message':_0x4216('0xa0'),'statusCode':_0x385d5e[_0x4216('0xa1')]}:_0x385d5e);});};function getSelectList(_0xfe50d0,_0x5272a6,_0x37f576,_0x4801c0,_0x30f08f,_0x23e7f3){var _0x26ef2a={'method':_0x4216('0x8c'),'uri':_0xfe50d0+'EntityDefinitions('+_0x4801c0+')/Attributes('+_0x30f08f+_0x4216('0xa2')+'$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','headers':{'Authorization':_0x4216('0x8d')+_0x23e7f3,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x26ef2a)[_0x4216('0xe')](function(_0x147f6a){var _0x5a4473=[];var _0x4cffa2=_0x147f6a[_0x4216('0xa3')][_0x4216('0xa4')];_0x4cffa2['forEach'](function(_0x5cde37){_0x5a4473[_0x4216('0x98')]({'name':_0x5cde37[_0x4216('0xa5')][_0x4216('0xa6')][_0x4216('0xa5')],'value':String(_0x5cde37[_0x4216('0xa7')])});});var _0x587ad6={'id':_0x5272a6+'_'+_0x147f6a[_0x4216('0xa8')],'name':_0x147f6a[_0x4216('0xa9')][_0x4216('0xa6')][_0x4216('0xa5')],'custom':![],'options':_0x5a4473};_0x37f576['push'](_0x587ad6);return _0x37f576;});}function getBooleanList(_0xf6e452,_0x108f7e,_0x5e4741,_0x53a3ff,_0x2078f0,_0x25b2a8){var _0x498873={'method':_0x4216('0x8c'),'uri':_0xf6e452+'EntityDefinitions('+_0x53a3ff+_0x4216('0xaa')+_0x2078f0+_0x4216('0xab'),'headers':{'Authorization':_0x4216('0x8d')+_0x25b2a8,'If-None-Match':null,'OData-Version':_0x4216('0x8e')},'json':!![]};return rp(_0x498873)[_0x4216('0xe')](function(_0x7abc09){var _0x36324b=[];_0x36324b[_0x4216('0x98')]({'name':_0x7abc09[_0x4216('0xa3')][_0x4216('0xac')][_0x4216('0xa5')][_0x4216('0xa6')][_0x4216('0xa5')],'value':_0x4216('0xad')},{'name':_0x7abc09[_0x4216('0xa3')][_0x4216('0xae')][_0x4216('0xa5')]['UserLocalizedLabel']['Label'],'value':_0x4216('0xaf')});var _0x2b4c64={'id':_0x108f7e+'_'+_0x7abc09['LogicalName'],'name':_0x7abc09['DisplayName']['UserLocalizedLabel'][_0x4216('0xa5')],'custom':![],'options':_0x36324b};_0x5e4741[_0x4216('0x98')](_0x2b4c64);return _0x5e4741;});}function getInputList(_0x367e3a,_0x18e850,_0x4cb38d,_0x336f26,_0x4c25f5,_0x113dbf,_0x18503a){var _0x3321c1={'method':'GET','uri':_0x367e3a+_0x4216('0x91')+_0x4c25f5+_0x4216('0xaa')+_0x113dbf+_0x4216('0xb0')+_0x4cb38d+_0x4216('0xb1'),'headers':{'Authorization':_0x4216('0x8d')+_0x18503a,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x3321c1)[_0x4216('0xe')](function(_0x8f9f93){var _0x14639e={'id':_0x18e850+'_'+_0x8f9f93['LogicalName'],'name':_0x8f9f93[_0x4216('0xa9')]['UserLocalizedLabel']?_0x8f9f93[_0x4216('0xa9')][_0x4216('0xa6')][_0x4216('0xa5')]:_0x8f9f93['LogicalName'],'custom':![],'options':[]};_0x336f26[_0x4216('0x98')](_0x14639e);return _0x336f26;});}
\ No newline at end of file
index 14ee5f1..79538e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['int_dynamics365_accounts','lodash','../../config/logger','moment','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','define'];(function(_0x85e0e2,_0x85f164){var _0x3a96d2=function(_0x308d32){while(--_0x308d32){_0x85e0e2['push'](_0x85e0e2['shift']());}};_0x3a96d2(++_0x85f164);}(_0xb7e7,0x121));var _0x7b7e=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0xb7e7[_0xaa0309];return _0x5de7ce;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x333fa4,_0x372bde){return _0x333fa4[_0x7b7e('0x7')]('Dynamics365Account',attributes,{'tableName':_0x7b7e('0x8'),'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(_0x4e1643,_0x122206){var _0x171ac2=function(_0x6433ad){while(--_0x6433ad){_0x4e1643['push'](_0x4e1643['shift']());}};_0x171ac2(++_0x122206);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0xcb91[_0x4b055c];return _0x4b62bb;};'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 70c3b99..759d1ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99d8=['http','then','Dynamics365Account,\x20%s,\x20%s','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','where','attributes','limit','include','map','model','ShowDynamics365Account','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x333f8b,_0x4a5186){var _0x3f9d03=function(_0xf2055c){while(--_0xf2055c){_0x333f8b['push'](_0x333f8b['shift']());}};_0x3f9d03(++_0x4a5186);}(_0x99d8,0x178));var _0x899d=function(_0x5a2285,_0x3212d1){_0x5a2285=_0x5a2285-0x0;var _0x48f6ed=_0x99d8[_0x5a2285];return _0x48f6ed;};'use strict';var _=require(_0x899d('0x0'));var util=require(_0x899d('0x1'));var moment=require('moment');var BPromise=require(_0x899d('0x2'));var rs=require(_0x899d('0x3'));var fs=require('fs');var Redis=require(_0x899d('0x4'));var db=require(_0x899d('0x5'))['db'];var utils=require(_0x899d('0x6'));var logger=require(_0x899d('0x7'))(_0x899d('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x899d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x369ad4,_0x1473d6,_0x3e0fe0){return new BPromise(function(_0x283918,_0x3d0cac){return client['request'](_0x369ad4,_0x3e0fe0)[_0x899d('0xa')](function(_0x53e320){logger['info'](_0x899d('0xb'),_0x1473d6,'request\x20sent');logger[_0x899d('0xc')](_0x899d('0xd'),_0x1473d6,_0x899d('0xe'),JSON[_0x899d('0xf')](_0x53e320));if(_0x53e320['error']){if(_0x53e320[_0x899d('0x10')][_0x899d('0x11')]===0x1f4){logger[_0x899d('0x10')](_0x899d('0xb'),_0x1473d6,_0x53e320[_0x899d('0x10')][_0x899d('0x12')]);return _0x3d0cac(_0x53e320[_0x899d('0x10')][_0x899d('0x12')]);}logger['error'](_0x899d('0xb'),_0x1473d6,_0x53e320['error']['message']);return _0x283918(_0x53e320['error'][_0x899d('0x12')]);}else{logger[_0x899d('0x13')]('Dynamics365Account,\x20%s,\x20%s',_0x1473d6,_0x899d('0xe'));_0x283918(_0x53e320[_0x899d('0x14')]['message']);}})[_0x899d('0x15')](function(_0x195b5b){logger['error'](_0x899d('0xb'),_0x1473d6,_0x195b5b);_0x3d0cac(_0x195b5b);});});}exports[_0x899d('0x16')]=function(_0x26fb43){var _0xfe6dba=this;return new Promise(function(_0x50d0fc,_0x40120f){return db[_0x899d('0x17')][_0x899d('0x18')]({'raw':_0x26fb43[_0x899d('0x19')]?_0x26fb43[_0x899d('0x19')][_0x899d('0x1a')]===undefined?!![]:![]:!![],'where':_0x26fb43[_0x899d('0x19')]?_0x26fb43['options'][_0x899d('0x1b')]||null:null,'attributes':_0x26fb43[_0x899d('0x19')]?_0x26fb43[_0x899d('0x19')][_0x899d('0x1c')]||null:null,'limit':_0x26fb43[_0x899d('0x19')]?_0x26fb43[_0x899d('0x19')][_0x899d('0x1d')]||null:null,'include':_0x26fb43['options']?_0x26fb43[_0x899d('0x19')][_0x899d('0x1e')]?_[_0x899d('0x1f')](_0x26fb43[_0x899d('0x19')]['include'],function(_0x5e52c7){return{'model':db[_0x5e52c7[_0x899d('0x20')]],'as':_0x5e52c7['as'],'attributes':_0x5e52c7[_0x899d('0x1c')],'include':_0x5e52c7[_0x899d('0x1e')]?_[_0x899d('0x1f')](_0x5e52c7[_0x899d('0x1e')],function(_0x1d21e3){return{'model':db[_0x1d21e3[_0x899d('0x20')]],'as':_0x1d21e3['as'],'attributes':_0x1d21e3[_0x899d('0x1c')],'include':_0x1d21e3[_0x899d('0x1e')]?_[_0x899d('0x1f')](_0x1d21e3[_0x899d('0x1e')],function(_0x406219){return{'model':db[_0x406219[_0x899d('0x20')]],'as':_0x406219['as'],'attributes':_0x406219[_0x899d('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2469d3){logger['info'](_0x899d('0x16'),_0x26fb43);logger[_0x899d('0xc')](_0x899d('0x16'),_0x26fb43,JSON[_0x899d('0xf')](_0x2469d3));_0x50d0fc(_0x2469d3);})[_0x899d('0x15')](function(_0x477986){logger[_0x899d('0x10')]('GetDynamics365Account',_0x477986[_0x899d('0x12')],_0x26fb43);_0x40120f(_0xfe6dba[_0x899d('0x10')](0x1f4,_0x477986[_0x899d('0x12')]));});});};exports[_0x899d('0x21')]=function(_0x508ac7){var _0xb975d3=this;return new Promise(function(_0x158809,_0x1e9015){return db[_0x899d('0x17')][_0x899d('0x22')]({'raw':_0x508ac7[_0x899d('0x19')]?_0x508ac7[_0x899d('0x19')][_0x899d('0x1a')]===undefined?!![]:![]:!![],'where':_0x508ac7[_0x899d('0x19')]?_0x508ac7['options'][_0x899d('0x1b')]||null:null,'attributes':_0x508ac7['options']?_0x508ac7['options'][_0x899d('0x1c')]||null:null,'include':_0x508ac7[_0x899d('0x19')]?_0x508ac7[_0x899d('0x19')][_0x899d('0x1e')]?_[_0x899d('0x1f')](_0x508ac7[_0x899d('0x19')][_0x899d('0x1e')],function(_0x14460e){return{'model':db[_0x14460e[_0x899d('0x20')]],'as':_0x14460e['as'],'attributes':_0x14460e['attributes'],'include':_0x14460e['include']?_[_0x899d('0x1f')](_0x14460e[_0x899d('0x1e')],function(_0x561742){return{'model':db[_0x561742[_0x899d('0x20')]],'as':_0x561742['as'],'attributes':_0x561742['attributes'],'include':_0x561742['include']?_['map'](_0x561742[_0x899d('0x1e')],function(_0x33e560){return{'model':db[_0x33e560[_0x899d('0x20')]],'as':_0x33e560['as'],'attributes':_0x33e560[_0x899d('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x899d('0xa')](function(_0x2aff80){logger['info'](_0x899d('0x21'),_0x508ac7);logger[_0x899d('0xc')](_0x899d('0x21'),_0x508ac7,JSON[_0x899d('0xf')](_0x2aff80));_0x158809(_0x2aff80);})[_0x899d('0x15')](function(_0x495246){logger[_0x899d('0x10')](_0x899d('0x21'),_0x495246[_0x899d('0x12')],_0x508ac7);_0x1e9015(_0xb975d3['error'](0x1f4,_0x495246[_0x899d('0x12')]));});});};
\ No newline at end of file
+var _0x287a=['limit','map','model','include','stringify','ShowDynamics365Account','Dynamics365Account','find','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','Dynamics365Account,\x20%s,\x20%s','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','error','code','message','info','request\x20sent','result','catch','GetDynamics365Account','findAll','options','where','attributes'];(function(_0x2c27ee,_0x1f05de){var _0x3a0603=function(_0x2f6259){while(--_0x2f6259){_0x2c27ee['push'](_0x2c27ee['shift']());}};_0x3a0603(++_0x1f05de);}(_0x287a,0xda));var _0xa287=function(_0x587b49,_0x209994){_0x587b49=_0x587b49-0x0;var _0x53f9bf=_0x287a[_0x587b49];return _0x53f9bf;};'use strict';var _=require(_0xa287('0x0'));var util=require(_0xa287('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa287('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa287('0x3'))['db'];var utils=require(_0xa287('0x4'));var logger=require(_0xa287('0x5'))(_0xa287('0x6'));var config=require('../../config/environment');var jayson=require(_0xa287('0x7'));var client=jayson[_0xa287('0x8')][_0xa287('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x457194,_0x1e9518,_0x5a7b2e){return new BPromise(function(_0x2b1564,_0x518ded){return client[_0xa287('0xa')](_0x457194,_0x5a7b2e)[_0xa287('0xb')](function(_0x503b18){logger['info'](_0xa287('0xc'),_0x1e9518,'request\x20sent');logger[_0xa287('0xd')](_0xa287('0xe'),_0x1e9518,'request\x20sent',JSON['stringify'](_0x503b18));if(_0x503b18[_0xa287('0xf')]){if(_0x503b18[_0xa287('0xf')][_0xa287('0x10')]===0x1f4){logger[_0xa287('0xf')](_0xa287('0xc'),_0x1e9518,_0x503b18['error']['message']);return _0x518ded(_0x503b18[_0xa287('0xf')][_0xa287('0x11')]);}logger[_0xa287('0xf')](_0xa287('0xc'),_0x1e9518,_0x503b18[_0xa287('0xf')]['message']);return _0x2b1564(_0x503b18['error'][_0xa287('0x11')]);}else{logger[_0xa287('0x12')](_0xa287('0xc'),_0x1e9518,_0xa287('0x13'));_0x2b1564(_0x503b18[_0xa287('0x14')][_0xa287('0x11')]);}})[_0xa287('0x15')](function(_0x110f14){logger['error'](_0xa287('0xc'),_0x1e9518,_0x110f14);_0x518ded(_0x110f14);});});}exports[_0xa287('0x16')]=function(_0x3a985f){var _0x13d24f=this;return new Promise(function(_0x535b9b,_0xeefe79){return db['Dynamics365Account'][_0xa287('0x17')]({'raw':_0x3a985f['options']?_0x3a985f[_0xa287('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x3a985f[_0xa287('0x18')]?_0x3a985f[_0xa287('0x18')][_0xa287('0x19')]||null:null,'attributes':_0x3a985f[_0xa287('0x18')]?_0x3a985f['options'][_0xa287('0x1a')]||null:null,'limit':_0x3a985f[_0xa287('0x18')]?_0x3a985f[_0xa287('0x18')][_0xa287('0x1b')]||null:null,'include':_0x3a985f[_0xa287('0x18')]?_0x3a985f[_0xa287('0x18')]['include']?_[_0xa287('0x1c')](_0x3a985f[_0xa287('0x18')]['include'],function(_0x3c81a3){return{'model':db[_0x3c81a3[_0xa287('0x1d')]],'as':_0x3c81a3['as'],'attributes':_0x3c81a3['attributes'],'include':_0x3c81a3[_0xa287('0x1e')]?_[_0xa287('0x1c')](_0x3c81a3[_0xa287('0x1e')],function(_0x4f151e){return{'model':db[_0x4f151e[_0xa287('0x1d')]],'as':_0x4f151e['as'],'attributes':_0x4f151e[_0xa287('0x1a')],'include':_0x4f151e[_0xa287('0x1e')]?_['map'](_0x4f151e['include'],function(_0x4b4636){return{'model':db[_0x4b4636[_0xa287('0x1d')]],'as':_0x4b4636['as'],'attributes':_0x4b4636[_0xa287('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xa287('0xb')](function(_0xa11cf0){logger['info'](_0xa287('0x16'),_0x3a985f);logger[_0xa287('0xd')](_0xa287('0x16'),_0x3a985f,JSON[_0xa287('0x1f')](_0xa11cf0));_0x535b9b(_0xa11cf0);})[_0xa287('0x15')](function(_0x222eba){logger[_0xa287('0xf')]('GetDynamics365Account',_0x222eba[_0xa287('0x11')],_0x3a985f);_0xeefe79(_0x13d24f[_0xa287('0xf')](0x1f4,_0x222eba['message']));});});};exports[_0xa287('0x20')]=function(_0x4fddf7){var _0x2cb194=this;return new Promise(function(_0x11873b,_0x710a45){return db[_0xa287('0x21')][_0xa287('0x22')]({'raw':_0x4fddf7['options']?_0x4fddf7[_0xa287('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x4fddf7[_0xa287('0x18')]?_0x4fddf7[_0xa287('0x18')][_0xa287('0x19')]||null:null,'attributes':_0x4fddf7[_0xa287('0x18')]?_0x4fddf7[_0xa287('0x18')][_0xa287('0x1a')]||null:null,'include':_0x4fddf7['options']?_0x4fddf7[_0xa287('0x18')]['include']?_['map'](_0x4fddf7[_0xa287('0x18')][_0xa287('0x1e')],function(_0x5d907b){return{'model':db[_0x5d907b[_0xa287('0x1d')]],'as':_0x5d907b['as'],'attributes':_0x5d907b[_0xa287('0x1a')],'include':_0x5d907b[_0xa287('0x1e')]?_[_0xa287('0x1c')](_0x5d907b[_0xa287('0x1e')],function(_0x122fbb){return{'model':db[_0x122fbb['model']],'as':_0x122fbb['as'],'attributes':_0x122fbb['attributes'],'include':_0x122fbb['include']?_[_0xa287('0x1c')](_0x122fbb[_0xa287('0x1e')],function(_0x4e430a){return{'model':db[_0x4e430a[_0xa287('0x1d')]],'as':_0x4e430a['as'],'attributes':_0x4e430a['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x27300d){logger['info'](_0xa287('0x20'),_0x4fddf7);logger['debug'](_0xa287('0x20'),_0x4fddf7,JSON[_0xa287('0x1f')](_0x27300d));_0x11873b(_0x27300d);})[_0xa287('0x15')](function(_0x411689){logger[_0xa287('0xf')](_0xa287('0x20'),_0x411689[_0xa287('0x11')],_0x4fddf7);_0x710a45(_0x2cb194[_0xa287('0xf')](0x1f4,_0x411689[_0xa287('0x11')]));});});};
\ No newline at end of file
index 5260ed2..a829820 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e63=['/:id/descriptions','getDescriptions','post','create','put','/:id','delete','destroy','exports','util','express','../../components/auth/service','../../components/interaction/service','./intDynamics365Configuration.controller','get','isAuthenticated','index','show','getFields','/:id/subjects','getSubjects'];(function(_0x4e460c,_0x538c1d){var _0x30bf75=function(_0x17c0f3){while(--_0x17c0f3){_0x4e460c['push'](_0x4e460c['shift']());}};_0x30bf75(++_0x538c1d);}(_0x4e63,0x1ad));var _0x34e6=function(_0x42dbd1,_0x45450a){_0x42dbd1=_0x42dbd1-0x0;var _0x445ce3=_0x4e63[_0x42dbd1];return _0x445ce3;};'use strict';var multer=require('multer');var util=require(_0x34e6('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x34e6('0x1'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x34e6('0x2'));var interaction=require(_0x34e6('0x3'));var config=require('../../config/environment');var controller=require(_0x34e6('0x4'));router[_0x34e6('0x5')]('/',auth[_0x34e6('0x6')](),controller[_0x34e6('0x7')]);router[_0x34e6('0x5')]('/:id',auth[_0x34e6('0x6')](),controller[_0x34e6('0x8')]);router[_0x34e6('0x5')]('/:id/fields',auth[_0x34e6('0x6')](),controller[_0x34e6('0x9')]);router['get'](_0x34e6('0xa'),auth['isAuthenticated'](),controller[_0x34e6('0xb')]);router[_0x34e6('0x5')](_0x34e6('0xc'),auth[_0x34e6('0x6')](),controller[_0x34e6('0xd')]);router[_0x34e6('0xe')]('/',auth[_0x34e6('0x6')](),controller[_0x34e6('0xf')]);router[_0x34e6('0x10')](_0x34e6('0x11'),auth[_0x34e6('0x6')](),controller['update']);router[_0x34e6('0x12')](_0x34e6('0x11'),auth[_0x34e6('0x6')](),controller[_0x34e6('0x13')]);module[_0x34e6('0x14')]=router;
\ No newline at end of file
+var _0xceef=['getDescriptions','post','create','put','delete','exports','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./intDynamics365Configuration.controller','get','/:id','isAuthenticated','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions'];(function(_0x50ba84,_0x4652ad){var _0x286f41=function(_0x32627d){while(--_0x32627d){_0x50ba84['push'](_0x50ba84['shift']());}};_0x286f41(++_0x4652ad);}(_0xceef,0xf6));var _0xfcee=function(_0x42e9c2,_0xf71604){_0x42e9c2=_0x42e9c2-0x0;var _0x1e7c80=_0xceef[_0x42e9c2];return _0x1e7c80;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xfcee('0x0'));var timeout=require(_0xfcee('0x1'));var express=require('express');var router=express[_0xfcee('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xfcee('0x3'));var interaction=require(_0xfcee('0x4'));var config=require('../../config/environment');var controller=require(_0xfcee('0x5'));router[_0xfcee('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0xfcee('0x6')](_0xfcee('0x7'),auth[_0xfcee('0x8')](),controller['show']);router['get'](_0xfcee('0x9'),auth[_0xfcee('0x8')](),controller[_0xfcee('0xa')]);router[_0xfcee('0x6')](_0xfcee('0xb'),auth[_0xfcee('0x8')](),controller[_0xfcee('0xc')]);router['get'](_0xfcee('0xd'),auth[_0xfcee('0x8')](),controller[_0xfcee('0xe')]);router[_0xfcee('0xf')]('/',auth[_0xfcee('0x8')](),controller[_0xfcee('0x10')]);router[_0xfcee('0x11')](_0xfcee('0x7'),auth[_0xfcee('0x8')](),controller['update']);router[_0xfcee('0x12')](_0xfcee('0x7'),auth['isAuthenticated'](),controller['destroy']);module[_0xfcee('0x13')]=router;
\ No newline at end of file
index 317773a..fbb9aa0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5814=['BOOLEAN','STRING','ENUM','incident','contact'];(function(_0x5dc3da,_0x31d4cb){var _0x3c266f=function(_0x1f8e41){while(--_0x1f8e41){_0x5dc3da['push'](_0x5dc3da['shift']());}};_0x3c266f(++_0x31d4cb);}(_0x5814,0x83));var _0x4581=function(_0x7b3993,_0x52168b){_0x7b3993=_0x7b3993-0x0;var _0x566195=_0x5814[_0x7b3993];return _0x566195;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x4581('0x0')]},'description':{'type':Sequelize[_0x4581('0x0')]},'ticketType':{'type':Sequelize[_0x4581('0x1')](_0x4581('0x2'),'phonecall'),'defaultValue':_0x4581('0x2')},'moduleCreate':{'type':Sequelize[_0x4581('0x1')](_0x4581('0x3'),'nothing'),'defaultValue':_0x4581('0x3'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0x4581('0x0')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0x4581('0x4')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x2f02=['BOOLEAN','sequelize','exports','STRING','ENUM','incident','phonecall','contact','nothing'];(function(_0x5db994,_0xf28684){var _0x3aa49d=function(_0x3bafee){while(--_0x3bafee){_0x5db994['push'](_0x5db994['shift']());}};_0x3aa49d(++_0xf28684);}(_0x2f02,0xeb));var _0x22f0=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0x2f02[_0x387777];return _0x3f84c0;};'use strict';var Sequelize=require(_0x22f0('0x0'));module[_0x22f0('0x1')]={'name':{'type':Sequelize[_0x22f0('0x2')]},'description':{'type':Sequelize[_0x22f0('0x2')]},'ticketType':{'type':Sequelize[_0x22f0('0x3')](_0x22f0('0x4'),_0x22f0('0x5')),'defaultValue':_0x22f0('0x4')},'moduleCreate':{'type':Sequelize['ENUM'](_0x22f0('0x6'),_0x22f0('0x7')),'defaultValue':'contact','allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0x22f0('0x2')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0x22f0('0x8')],'defaultValue':!![]}};
\ No newline at end of file
index 9cef329..c6a79ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60be=['rows','catch','show','params','length','include','find','create','body','getFields','findOne','getSubjects','getDescriptions','eml-format','zip-dir','request-promise','moment','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','set','Content-Range','apply','reject','save','update','destroy','then','end','error','name','map','Dynamics365Configuration','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','count','includeAll'];(function(_0x19c57a,_0x5c9c7c){var _0x576a08=function(_0x929c62){while(--_0x929c62){_0x19c57a['push'](_0x19c57a['shift']());}};_0x576a08(++_0x5c9c7c);}(_0x60be,0xa7));var _0xe60b=function(_0x5eb7c4,_0xa4a571){_0x5eb7c4=_0x5eb7c4-0x0;var _0x55df44=_0x60be[_0x5eb7c4];return _0x55df44;};'use strict';var emlformat=require(_0xe60b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xe60b('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe60b('0x2'));var moment=require(_0xe60b('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xe60b('0x4'));var util=require(_0xe60b('0x5'));var path=require('path');var sox=require(_0xe60b('0x6'));var csv=require('to-csv');var ejs=require(_0xe60b('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe60b('0x8'));var squel=require(_0xe60b('0x9'));var crypto=require(_0xe60b('0xa'));var jsforce=require(_0xe60b('0xb'));var deskjs=require(_0xe60b('0xc'));var toCsv=require('to-csv');var querystring=require(_0xe60b('0xd'));var Papa=require(_0xe60b('0xe'));var Redis=require(_0xe60b('0xf'));var authService=require(_0xe60b('0x10'));var qs=require(_0xe60b('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe60b('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xe60b('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xe60b('0x14'));var db=require(_0xe60b('0x15'))['db'];function respondWithStatusCode(_0xc93b56,_0x4bbf01){_0x4bbf01=_0x4bbf01||0xcc;return function(_0x4a562f){if(_0x4a562f){return _0xc93b56[_0xe60b('0x16')](_0x4bbf01);}return _0xc93b56[_0xe60b('0x17')](_0x4bbf01)['end']();};}function respondWithResult(_0x1d6103,_0x2a4f76){_0x2a4f76=_0x2a4f76||0xc8;return function(_0x4d3efd){if(_0x4d3efd){return _0x1d6103[_0xe60b('0x17')](_0x2a4f76)[_0xe60b('0x18')](_0x4d3efd);}};}function respondWithFilteredResult(_0x2d4cd9,_0xb7685b){return function(_0x4ec9b9){if(_0x4ec9b9){var _0x15a363=typeof _0xb7685b[_0xe60b('0x19')]===_0xe60b('0x1a')&&typeof _0xb7685b['limit']===_0xe60b('0x1a');var _0x22fef5=_0x4ec9b9['count'];var _0xd45cb1=_0x15a363?0x0:_0xb7685b[_0xe60b('0x19')];var _0x15901c=_0x15a363?_0x4ec9b9['count']:_0xb7685b[_0xe60b('0x19')]+_0xb7685b['limit'];var _0x5882c7;if(_0x15901c>=_0x22fef5){_0x15901c=_0x22fef5;_0x5882c7=0xc8;}else{_0x5882c7=0xce;}_0x2d4cd9[_0xe60b('0x17')](_0x5882c7);return _0x2d4cd9[_0xe60b('0x1b')](_0xe60b('0x1c'),_0xd45cb1+'-'+_0x15901c+'/'+_0x22fef5)['json'](_0x4ec9b9);}return null;};}function patchUpdates(_0x1de382){return function(_0x42ae7c){try{jsonpatch[_0xe60b('0x1d')](_0x42ae7c,_0x1de382,!![]);}catch(_0x2b3c90){return BPromise[_0xe60b('0x1e')](_0x2b3c90);}return _0x42ae7c[_0xe60b('0x1f')]();};}function saveUpdates(_0x5eb99e,_0x4d4a74){return function(_0x5b6781){if(_0x5b6781){return _0x5b6781[_0xe60b('0x20')](_0x5eb99e)['then'](function(_0x5edb8f){return _0x5edb8f;});}return null;};}function removeEntity(_0x218a2d,_0x46b517){return function(_0x30f926){if(_0x30f926){return _0x30f926[_0xe60b('0x21')]()[_0xe60b('0x22')](function(){_0x218a2d[_0xe60b('0x17')](0xcc)[_0xe60b('0x23')]();});}};}function handleEntityNotFound(_0x640ac9,_0x67886f){return function(_0x8f8d92){if(!_0x8f8d92){_0x640ac9['sendStatus'](0x194);}return _0x8f8d92;};}function handleError(_0x225ec5,_0x2f9c88){_0x2f9c88=_0x2f9c88||0x1f4;return function(_0x1262a1){logger[_0xe60b('0x24')](_0x1262a1['stack']);if(_0x1262a1[_0xe60b('0x25')]){delete _0x1262a1[_0xe60b('0x25')];}_0x225ec5['status'](_0x2f9c88)['send'](_0x1262a1);};}exports['index']=function(_0x37efa7,_0x47fa42){var _0x380f34={},_0x27ca8f={},_0x2fb36c={'count':0x0,'rows':[]};var _0x311960=_[_0xe60b('0x26')](db[_0xe60b('0x27')][_0xe60b('0x28')],function(_0x3b5e8f){return{'name':_0x3b5e8f[_0xe60b('0x29')],'type':_0x3b5e8f['type'][_0xe60b('0x2a')]};});_0x27ca8f[_0xe60b('0x2b')]=_[_0xe60b('0x26')](_0x311960,'name');_0x27ca8f[_0xe60b('0x2c')]=_[_0xe60b('0x2d')](_0x37efa7[_0xe60b('0x2c')]);_0x27ca8f[_0xe60b('0x2e')]=_[_0xe60b('0x2f')](_0x27ca8f[_0xe60b('0x2b')],_0x27ca8f[_0xe60b('0x2c')]);_0x380f34[_0xe60b('0x30')]=_[_0xe60b('0x2f')](_0x27ca8f[_0xe60b('0x2b')],qs[_0xe60b('0x31')](_0x37efa7[_0xe60b('0x2c')][_0xe60b('0x31')]));_0x380f34[_0xe60b('0x30')]=_0x380f34[_0xe60b('0x30')]['length']?_0x380f34[_0xe60b('0x30')]:_0x27ca8f[_0xe60b('0x2b')];if(!_0x37efa7['query'][_0xe60b('0x32')](_0xe60b('0x33'))){_0x380f34[_0xe60b('0x34')]=qs[_0xe60b('0x34')](_0x37efa7[_0xe60b('0x2c')]['limit']);_0x380f34[_0xe60b('0x19')]=qs['offset'](_0x37efa7[_0xe60b('0x2c')]['offset']);}_0x380f34[_0xe60b('0x35')]=qs[_0xe60b('0x36')](_0x37efa7[_0xe60b('0x2c')][_0xe60b('0x36')]);_0x380f34[_0xe60b('0x37')]=qs[_0xe60b('0x2e')](_[_0xe60b('0x38')](_0x37efa7['query'],_0x27ca8f[_0xe60b('0x2e')]),_0x311960);if(_0x37efa7[_0xe60b('0x2c')]['filter']){_0x380f34[_0xe60b('0x37')]=_[_0xe60b('0x39')](_0x380f34[_0xe60b('0x37')],{'$or':_[_0xe60b('0x26')](_0x311960,function(_0x410b83){if(_0x410b83[_0xe60b('0x3a')]!==_0xe60b('0x3b')){var _0x4294ce={};_0x4294ce[_0x410b83[_0xe60b('0x25')]]={'$like':'%'+_0x37efa7[_0xe60b('0x2c')][_0xe60b('0x3c')]+'%'};return _0x4294ce;}})});}_0x380f34=_[_0xe60b('0x39')]({},_0x380f34,_0x37efa7[_0xe60b('0x3d')]);var _0x5d43f9={'where':_0x380f34['where']};return db['Dynamics365Configuration'][_0xe60b('0x3e')](_0x5d43f9)[_0xe60b('0x22')](function(_0x405d49){_0x2fb36c['count']=_0x405d49;if(_0x37efa7[_0xe60b('0x2c')][_0xe60b('0x3f')]){_0x380f34['include']=[{'all':!![]}];}return db[_0xe60b('0x27')]['findAll'](_0x380f34);})[_0xe60b('0x22')](function(_0x14d22d){_0x2fb36c[_0xe60b('0x40')]=_0x14d22d;return _0x2fb36c;})[_0xe60b('0x22')](respondWithFilteredResult(_0x47fa42,_0x380f34))[_0xe60b('0x41')](handleError(_0x47fa42,null));};exports[_0xe60b('0x42')]=function(_0x4c3b27,_0x537792){var _0x1693cf={'raw':![],'where':{'id':_0x4c3b27[_0xe60b('0x43')]['id']}},_0x520377={};_0x520377[_0xe60b('0x2b')]=_[_0xe60b('0x2d')](db[_0xe60b('0x27')][_0xe60b('0x28')]);_0x520377[_0xe60b('0x2c')]=_[_0xe60b('0x2d')](_0x4c3b27['query']);_0x520377[_0xe60b('0x2e')]=_[_0xe60b('0x2f')](_0x520377[_0xe60b('0x2b')],_0x520377[_0xe60b('0x2c')]);_0x1693cf['attributes']=_[_0xe60b('0x2f')](_0x520377[_0xe60b('0x2b')],qs['fields'](_0x4c3b27['query']['fields']));_0x1693cf[_0xe60b('0x30')]=_0x1693cf[_0xe60b('0x30')][_0xe60b('0x44')]?_0x1693cf[_0xe60b('0x30')]:_0x520377[_0xe60b('0x2b')];if(_0x4c3b27[_0xe60b('0x2c')][_0xe60b('0x3f')]){_0x1693cf[_0xe60b('0x45')]=[{'all':!![]}];}_0x1693cf=_[_0xe60b('0x39')]({},_0x1693cf,_0x4c3b27[_0xe60b('0x3d')]);return db[_0xe60b('0x27')][_0xe60b('0x46')](_0x1693cf)[_0xe60b('0x22')](handleEntityNotFound(_0x537792,null))['then'](respondWithResult(_0x537792,null))[_0xe60b('0x41')](handleError(_0x537792,null));};exports['create']=function(_0x530c4d,_0x32e8ad){return db[_0xe60b('0x27')][_0xe60b('0x47')](_0x530c4d['body'],{})[_0xe60b('0x22')](respondWithResult(_0x32e8ad,0xc9))[_0xe60b('0x41')](handleError(_0x32e8ad,null));};exports['update']=function(_0x1f2039,_0xb995a0){if(_0x1f2039[_0xe60b('0x48')]['id']){delete _0x1f2039[_0xe60b('0x48')]['id'];}return db['Dynamics365Configuration'][_0xe60b('0x46')]({'where':{'id':_0x1f2039[_0xe60b('0x43')]['id']}})[_0xe60b('0x22')](handleEntityNotFound(_0xb995a0,null))[_0xe60b('0x22')](saveUpdates(_0x1f2039[_0xe60b('0x48')],null))['then'](respondWithResult(_0xb995a0,null))[_0xe60b('0x41')](handleError(_0xb995a0,null));};exports[_0xe60b('0x21')]=function(_0x2d7b35,_0x23ca08){return db[_0xe60b('0x27')][_0xe60b('0x46')]({'where':{'id':_0x2d7b35[_0xe60b('0x43')]['id']}})[_0xe60b('0x22')](handleEntityNotFound(_0x23ca08,null))[_0xe60b('0x22')](removeEntity(_0x23ca08,null))[_0xe60b('0x41')](handleError(_0x23ca08,null));};exports[_0xe60b('0x49')]=function(_0x2647e1,_0x1688f9,_0x19bc52){var _0xe972cf={};var _0x5efa9f={};var _0x207b66;var _0x591f8f;return db[_0xe60b('0x27')][_0xe60b('0x4a')]({'where':{'id':_0x2647e1['params']['id']}})[_0xe60b('0x22')](handleEntityNotFound(_0x1688f9,null))[_0xe60b('0x22')](function(_0x5168ad){if(_0x5168ad){_0x207b66=_0x5168ad;_0x5efa9f[_0xe60b('0x2b')]=_['keys'](db['Dynamics365Field'][_0xe60b('0x28')]);_0x5efa9f[_0xe60b('0x2c')]=_[_0xe60b('0x2d')](_0x2647e1[_0xe60b('0x2c')]);_0x5efa9f[_0xe60b('0x2e')]=_[_0xe60b('0x2f')](_0x5efa9f[_0xe60b('0x2b')],_0x5efa9f['query']);_0xe972cf[_0xe60b('0x30')]=_['intersection'](_0x5efa9f[_0xe60b('0x2b')],qs[_0xe60b('0x31')](_0x2647e1[_0xe60b('0x2c')]['fields']));_0xe972cf[_0xe60b('0x30')]=_0xe972cf[_0xe60b('0x30')]['length']?_0xe972cf[_0xe60b('0x30')]:_0x5efa9f[_0xe60b('0x2b')];_0xe972cf[_0xe60b('0x35')]=qs['sort'](_0x2647e1[_0xe60b('0x2c')][_0xe60b('0x36')]);_0xe972cf[_0xe60b('0x37')]=qs[_0xe60b('0x2e')](_[_0xe60b('0x38')](_0x2647e1[_0xe60b('0x2c')],_0x5efa9f[_0xe60b('0x2e')]));if(_0x2647e1['query'][_0xe60b('0x3c')]){_0xe972cf[_0xe60b('0x37')]=_[_0xe60b('0x39')](_0xe972cf[_0xe60b('0x37')],{'$or':_['map'](_0xe972cf[_0xe60b('0x30')],function(_0x20ef51){var _0x5f3bf8={};_0x5f3bf8[_0x20ef51]={'$like':'%'+_0x2647e1[_0xe60b('0x2c')]['filter']+'%'};return _0x5f3bf8;})});}_0xe972cf=_[_0xe60b('0x39')]({},_0xe972cf,_0x2647e1[_0xe60b('0x3d')]);return _0x207b66[_0xe60b('0x49')](_0xe972cf);}})['then'](function(_0x7286d1){if(_0x7286d1){_0x591f8f=_0x7286d1['length'];if(!_0x2647e1[_0xe60b('0x2c')][_0xe60b('0x32')](_0xe60b('0x33'))){_0xe972cf['limit']=qs['limit'](_0x2647e1['query'][_0xe60b('0x34')]);_0xe972cf['offset']=qs[_0xe60b('0x19')](_0x2647e1[_0xe60b('0x2c')]['offset']);}return _0x207b66[_0xe60b('0x49')](_0xe972cf);}})[_0xe60b('0x22')](function(_0x1cdc40){if(_0x1cdc40){return _0x1cdc40?{'count':_0x591f8f,'rows':_0x1cdc40}:null;}})[_0xe60b('0x22')](respondWithResult(_0x1688f9,null))[_0xe60b('0x41')](handleError(_0x1688f9,null));};exports[_0xe60b('0x4b')]=function(_0x25952d,_0x4722b2,_0x5492c4){var _0x29fe75={};var _0x4ff37d={};var _0x565aba;var _0x24a492;return db[_0xe60b('0x27')][_0xe60b('0x4a')]({'where':{'id':_0x25952d[_0xe60b('0x43')]['id']}})[_0xe60b('0x22')](handleEntityNotFound(_0x4722b2,null))[_0xe60b('0x22')](function(_0x263576){if(_0x263576){_0x565aba=_0x263576;_0x4ff37d[_0xe60b('0x2b')]=_[_0xe60b('0x2d')](db['Dynamics365Field'][_0xe60b('0x28')]);_0x4ff37d['query']=_[_0xe60b('0x2d')](_0x25952d[_0xe60b('0x2c')]);_0x4ff37d[_0xe60b('0x2e')]=_['intersection'](_0x4ff37d[_0xe60b('0x2b')],_0x4ff37d[_0xe60b('0x2c')]);_0x29fe75[_0xe60b('0x30')]=_[_0xe60b('0x2f')](_0x4ff37d[_0xe60b('0x2b')],qs[_0xe60b('0x31')](_0x25952d[_0xe60b('0x2c')][_0xe60b('0x31')]));_0x29fe75[_0xe60b('0x30')]=_0x29fe75[_0xe60b('0x30')]['length']?_0x29fe75[_0xe60b('0x30')]:_0x4ff37d[_0xe60b('0x2b')];_0x29fe75['order']=qs[_0xe60b('0x36')](_0x25952d[_0xe60b('0x2c')][_0xe60b('0x36')]);_0x29fe75[_0xe60b('0x37')]=qs[_0xe60b('0x2e')](_[_0xe60b('0x38')](_0x25952d[_0xe60b('0x2c')],_0x4ff37d['filters']));if(_0x25952d[_0xe60b('0x2c')][_0xe60b('0x3c')]){_0x29fe75['where']=_[_0xe60b('0x39')](_0x29fe75[_0xe60b('0x37')],{'$or':_['map'](_0x29fe75[_0xe60b('0x30')],function(_0x4314f4){var _0x46a523={};_0x46a523[_0x4314f4]={'$like':'%'+_0x25952d[_0xe60b('0x2c')]['filter']+'%'};return _0x46a523;})});}_0x29fe75=_[_0xe60b('0x39')]({},_0x29fe75,_0x25952d['options']);return _0x565aba[_0xe60b('0x4b')](_0x29fe75);}})[_0xe60b('0x22')](function(_0x3fd067){if(_0x3fd067){_0x24a492=_0x3fd067[_0xe60b('0x44')];if(!_0x25952d['query'][_0xe60b('0x32')](_0xe60b('0x33'))){_0x29fe75['limit']=qs['limit'](_0x25952d[_0xe60b('0x2c')][_0xe60b('0x34')]);_0x29fe75[_0xe60b('0x19')]=qs[_0xe60b('0x19')](_0x25952d['query']['offset']);}return _0x565aba[_0xe60b('0x4b')](_0x29fe75);}})['then'](function(_0x10ed37){if(_0x10ed37){return _0x10ed37?{'count':_0x24a492,'rows':_0x10ed37}:null;}})[_0xe60b('0x22')](respondWithResult(_0x4722b2,null))[_0xe60b('0x41')](handleError(_0x4722b2,null));};exports[_0xe60b('0x4c')]=function(_0x3c7928,_0x5da7b1,_0x1ee819){var _0x4377a4={};var _0x2a8cd0={};var _0x3d0a65;var _0x4bdc63;return db['Dynamics365Configuration']['findOne']({'where':{'id':_0x3c7928[_0xe60b('0x43')]['id']}})['then'](handleEntityNotFound(_0x5da7b1,null))[_0xe60b('0x22')](function(_0x1a6cd1){if(_0x1a6cd1){_0x3d0a65=_0x1a6cd1;_0x2a8cd0[_0xe60b('0x2b')]=_[_0xe60b('0x2d')](db['Dynamics365Field'][_0xe60b('0x28')]);_0x2a8cd0[_0xe60b('0x2c')]=_[_0xe60b('0x2d')](_0x3c7928[_0xe60b('0x2c')]);_0x2a8cd0[_0xe60b('0x2e')]=_[_0xe60b('0x2f')](_0x2a8cd0[_0xe60b('0x2b')],_0x2a8cd0[_0xe60b('0x2c')]);_0x4377a4['attributes']=_['intersection'](_0x2a8cd0[_0xe60b('0x2b')],qs[_0xe60b('0x31')](_0x3c7928['query'][_0xe60b('0x31')]));_0x4377a4[_0xe60b('0x30')]=_0x4377a4[_0xe60b('0x30')][_0xe60b('0x44')]?_0x4377a4[_0xe60b('0x30')]:_0x2a8cd0[_0xe60b('0x2b')];_0x4377a4[_0xe60b('0x35')]=qs['sort'](_0x3c7928[_0xe60b('0x2c')][_0xe60b('0x36')]);_0x4377a4[_0xe60b('0x37')]=qs[_0xe60b('0x2e')](_['pick'](_0x3c7928[_0xe60b('0x2c')],_0x2a8cd0[_0xe60b('0x2e')]));if(_0x3c7928[_0xe60b('0x2c')]['filter']){_0x4377a4[_0xe60b('0x37')]=_['merge'](_0x4377a4[_0xe60b('0x37')],{'$or':_[_0xe60b('0x26')](_0x4377a4[_0xe60b('0x30')],function(_0x285b86){var _0x42e679={};_0x42e679[_0x285b86]={'$like':'%'+_0x3c7928[_0xe60b('0x2c')][_0xe60b('0x3c')]+'%'};return _0x42e679;})});}_0x4377a4=_[_0xe60b('0x39')]({},_0x4377a4,_0x3c7928[_0xe60b('0x3d')]);return _0x3d0a65['getDescriptions'](_0x4377a4);}})[_0xe60b('0x22')](function(_0x3585e6){if(_0x3585e6){_0x4bdc63=_0x3585e6[_0xe60b('0x44')];if(!_0x3c7928[_0xe60b('0x2c')][_0xe60b('0x32')](_0xe60b('0x33'))){_0x4377a4['limit']=qs[_0xe60b('0x34')](_0x3c7928[_0xe60b('0x2c')][_0xe60b('0x34')]);_0x4377a4[_0xe60b('0x19')]=qs['offset'](_0x3c7928[_0xe60b('0x2c')][_0xe60b('0x19')]);}return _0x3d0a65[_0xe60b('0x4c')](_0x4377a4);}})[_0xe60b('0x22')](function(_0x219570){if(_0x219570){return _0x219570?{'count':_0x4bdc63,'rows':_0x219570}:null;}})[_0xe60b('0x22')](respondWithResult(_0x5da7b1,null))['catch'](handleError(_0x5da7b1,null));};
\ No newline at end of file
+var _0xd203=['squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','limit','undefined','count','offset','set','Content-Range','reject','save','update','destroy','then','error','stack','name','send','index','map','Dynamics365Configuration','rawAttributes','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','getFields','findOne','getSubjects','nolimit','getDescriptions','Dynamics365Field','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash'];(function(_0x256b72,_0x340985){var _0x2183e3=function(_0xf7fd37){while(--_0xf7fd37){_0x256b72['push'](_0x256b72['shift']());}};_0x2183e3(++_0x340985);}(_0xd203,0x18d));var _0x3d20=function(_0x3230b9,_0x49f9e9){_0x3230b9=_0x3230b9-0x0;var _0x24cec2=_0xd203[_0x3230b9];return _0x24cec2;};'use strict';var emlformat=require(_0x3d20('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3d20('0x1'));var jsonpatch=require(_0x3d20('0x2'));var rp=require(_0x3d20('0x3'));var moment=require(_0x3d20('0x4'));var BPromise=require(_0x3d20('0x5'));var Mustache=require(_0x3d20('0x6'));var util=require(_0x3d20('0x7'));var path=require(_0x3d20('0x8'));var sox=require(_0x3d20('0x9'));var csv=require(_0x3d20('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3d20('0xb'));var _=require(_0x3d20('0xc'));var squel=require(_0x3d20('0xd'));var crypto=require(_0x3d20('0xe'));var jsforce=require(_0x3d20('0xf'));var deskjs=require(_0x3d20('0x10'));var toCsv=require(_0x3d20('0xa'));var querystring=require(_0x3d20('0x11'));var Papa=require('papaparse');var Redis=require(_0x3d20('0x12'));var authService=require(_0x3d20('0x13'));var qs=require(_0x3d20('0x14'));var as=require(_0x3d20('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3d20('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x3d20('0x17'));var licenseUtil=require(_0x3d20('0x18'));var db=require(_0x3d20('0x19'))['db'];function respondWithStatusCode(_0xca8524,_0x286546){_0x286546=_0x286546||0xcc;return function(_0x3ff9b0){if(_0x3ff9b0){return _0xca8524[_0x3d20('0x1a')](_0x286546);}return _0xca8524['status'](_0x286546)[_0x3d20('0x1b')]();};}function respondWithResult(_0x5e3592,_0x2b1409){_0x2b1409=_0x2b1409||0xc8;return function(_0x2d17a4){if(_0x2d17a4){return _0x5e3592[_0x3d20('0x1c')](_0x2b1409)[_0x3d20('0x1d')](_0x2d17a4);}};}function respondWithFilteredResult(_0x2badd3,_0x43be68){return function(_0x4f385c){if(_0x4f385c){var _0x370bc3=typeof _0x43be68['offset']==='undefined'&&typeof _0x43be68[_0x3d20('0x1e')]===_0x3d20('0x1f');var _0x2a6280=_0x4f385c[_0x3d20('0x20')];var _0x13ca9c=_0x370bc3?0x0:_0x43be68[_0x3d20('0x21')];var _0x124adb=_0x370bc3?_0x4f385c[_0x3d20('0x20')]:_0x43be68['offset']+_0x43be68[_0x3d20('0x1e')];var _0x9094e8;if(_0x124adb>=_0x2a6280){_0x124adb=_0x2a6280;_0x9094e8=0xc8;}else{_0x9094e8=0xce;}_0x2badd3[_0x3d20('0x1c')](_0x9094e8);return _0x2badd3[_0x3d20('0x22')](_0x3d20('0x23'),_0x13ca9c+'-'+_0x124adb+'/'+_0x2a6280)[_0x3d20('0x1d')](_0x4f385c);}return null;};}function patchUpdates(_0x4275f6){return function(_0x5b0d42){try{jsonpatch['apply'](_0x5b0d42,_0x4275f6,!![]);}catch(_0x3242e3){return BPromise[_0x3d20('0x24')](_0x3242e3);}return _0x5b0d42[_0x3d20('0x25')]();};}function saveUpdates(_0xe62e0b,_0xbfe34b){return function(_0x16c4f6){if(_0x16c4f6){return _0x16c4f6[_0x3d20('0x26')](_0xe62e0b)['then'](function(_0x505ce4){return _0x505ce4;});}return null;};}function removeEntity(_0x5ea698,_0x537ca4){return function(_0x504e0b){if(_0x504e0b){return _0x504e0b[_0x3d20('0x27')]()[_0x3d20('0x28')](function(){_0x5ea698[_0x3d20('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1c1980,_0x32764c){return function(_0xe1e7bb){if(!_0xe1e7bb){_0x1c1980[_0x3d20('0x1a')](0x194);}return _0xe1e7bb;};}function handleError(_0x35deb8,_0x3c89d4){_0x3c89d4=_0x3c89d4||0x1f4;return function(_0x13439c){logger[_0x3d20('0x29')](_0x13439c[_0x3d20('0x2a')]);if(_0x13439c[_0x3d20('0x2b')]){delete _0x13439c[_0x3d20('0x2b')];}_0x35deb8['status'](_0x3c89d4)[_0x3d20('0x2c')](_0x13439c);};}exports[_0x3d20('0x2d')]=function(_0x595de8,_0x3d492c){var _0xea373c={},_0x401e9c={},_0x2b571c={'count':0x0,'rows':[]};var _0x1ef667=_[_0x3d20('0x2e')](db[_0x3d20('0x2f')][_0x3d20('0x30')],function(_0x20123c){return{'name':_0x20123c['fieldName'],'type':_0x20123c['type']['key']};});_0x401e9c[_0x3d20('0x31')]=_[_0x3d20('0x2e')](_0x1ef667,_0x3d20('0x2b'));_0x401e9c['query']=_[_0x3d20('0x32')](_0x595de8['query']);_0x401e9c[_0x3d20('0x33')]=_[_0x3d20('0x34')](_0x401e9c[_0x3d20('0x31')],_0x401e9c[_0x3d20('0x35')]);_0xea373c[_0x3d20('0x36')]=_[_0x3d20('0x34')](_0x401e9c[_0x3d20('0x31')],qs['fields'](_0x595de8[_0x3d20('0x35')][_0x3d20('0x37')]));_0xea373c[_0x3d20('0x36')]=_0xea373c[_0x3d20('0x36')][_0x3d20('0x38')]?_0xea373c[_0x3d20('0x36')]:_0x401e9c['model'];if(!_0x595de8['query'][_0x3d20('0x39')]('nolimit')){_0xea373c[_0x3d20('0x1e')]=qs[_0x3d20('0x1e')](_0x595de8[_0x3d20('0x35')][_0x3d20('0x1e')]);_0xea373c['offset']=qs[_0x3d20('0x21')](_0x595de8['query'][_0x3d20('0x21')]);}_0xea373c[_0x3d20('0x3a')]=qs[_0x3d20('0x3b')](_0x595de8[_0x3d20('0x35')][_0x3d20('0x3b')]);_0xea373c['where']=qs[_0x3d20('0x33')](_[_0x3d20('0x3c')](_0x595de8[_0x3d20('0x35')],_0x401e9c[_0x3d20('0x33')]),_0x1ef667);if(_0x595de8[_0x3d20('0x35')][_0x3d20('0x3d')]){_0xea373c[_0x3d20('0x3e')]=_[_0x3d20('0x3f')](_0xea373c['where'],{'$or':_[_0x3d20('0x2e')](_0x1ef667,function(_0x16a4eb){if(_0x16a4eb[_0x3d20('0x40')]!==_0x3d20('0x41')){var _0x36c182={};_0x36c182[_0x16a4eb['name']]={'$like':'%'+_0x595de8[_0x3d20('0x35')][_0x3d20('0x3d')]+'%'};return _0x36c182;}})});}_0xea373c=_['merge']({},_0xea373c,_0x595de8[_0x3d20('0x42')]);var _0x225578={'where':_0xea373c[_0x3d20('0x3e')]};return db[_0x3d20('0x2f')][_0x3d20('0x20')](_0x225578)[_0x3d20('0x28')](function(_0x2f28f4){_0x2b571c[_0x3d20('0x20')]=_0x2f28f4;if(_0x595de8[_0x3d20('0x35')][_0x3d20('0x43')]){_0xea373c[_0x3d20('0x44')]=[{'all':!![]}];}return db[_0x3d20('0x2f')]['findAll'](_0xea373c);})['then'](function(_0x2bf78b){_0x2b571c[_0x3d20('0x45')]=_0x2bf78b;return _0x2b571c;})[_0x3d20('0x28')](respondWithFilteredResult(_0x3d492c,_0xea373c))[_0x3d20('0x46')](handleError(_0x3d492c,null));};exports[_0x3d20('0x47')]=function(_0x59a5f2,_0x139542){var _0x19c56e={'raw':![],'where':{'id':_0x59a5f2[_0x3d20('0x48')]['id']}},_0xeb483b={};_0xeb483b['model']=_['keys'](db[_0x3d20('0x2f')]['rawAttributes']);_0xeb483b[_0x3d20('0x35')]=_[_0x3d20('0x32')](_0x59a5f2[_0x3d20('0x35')]);_0xeb483b[_0x3d20('0x33')]=_['intersection'](_0xeb483b[_0x3d20('0x31')],_0xeb483b[_0x3d20('0x35')]);_0x19c56e[_0x3d20('0x36')]=_[_0x3d20('0x34')](_0xeb483b[_0x3d20('0x31')],qs['fields'](_0x59a5f2['query'][_0x3d20('0x37')]));_0x19c56e[_0x3d20('0x36')]=_0x19c56e[_0x3d20('0x36')][_0x3d20('0x38')]?_0x19c56e[_0x3d20('0x36')]:_0xeb483b['model'];if(_0x59a5f2['query'][_0x3d20('0x43')]){_0x19c56e[_0x3d20('0x44')]=[{'all':!![]}];}_0x19c56e=_[_0x3d20('0x3f')]({},_0x19c56e,_0x59a5f2[_0x3d20('0x42')]);return db['Dynamics365Configuration'][_0x3d20('0x49')](_0x19c56e)[_0x3d20('0x28')](handleEntityNotFound(_0x139542,null))[_0x3d20('0x28')](respondWithResult(_0x139542,null))[_0x3d20('0x46')](handleError(_0x139542,null));};exports[_0x3d20('0x4a')]=function(_0x28921d,_0x4ccf2){return db['Dynamics365Configuration'][_0x3d20('0x4a')](_0x28921d[_0x3d20('0x4b')],{})[_0x3d20('0x28')](respondWithResult(_0x4ccf2,0xc9))['catch'](handleError(_0x4ccf2,null));};exports[_0x3d20('0x26')]=function(_0x1efb4c,_0x5da28c){if(_0x1efb4c[_0x3d20('0x4b')]['id']){delete _0x1efb4c[_0x3d20('0x4b')]['id'];}return db[_0x3d20('0x2f')][_0x3d20('0x49')]({'where':{'id':_0x1efb4c[_0x3d20('0x48')]['id']}})[_0x3d20('0x28')](handleEntityNotFound(_0x5da28c,null))[_0x3d20('0x28')](saveUpdates(_0x1efb4c['body'],null))['then'](respondWithResult(_0x5da28c,null))[_0x3d20('0x46')](handleError(_0x5da28c,null));};exports['destroy']=function(_0x30597f,_0x411328){return db[_0x3d20('0x2f')][_0x3d20('0x49')]({'where':{'id':_0x30597f[_0x3d20('0x48')]['id']}})['then'](handleEntityNotFound(_0x411328,null))[_0x3d20('0x28')](removeEntity(_0x411328,null))[_0x3d20('0x46')](handleError(_0x411328,null));};exports[_0x3d20('0x4c')]=function(_0x119f8e,_0x2575e2,_0x503381){var _0x4057a1={};var _0x2069d9={};var _0x432742;var _0x34e456;return db['Dynamics365Configuration'][_0x3d20('0x4d')]({'where':{'id':_0x119f8e[_0x3d20('0x48')]['id']}})['then'](handleEntityNotFound(_0x2575e2,null))[_0x3d20('0x28')](function(_0x5cbd1a){if(_0x5cbd1a){_0x432742=_0x5cbd1a;_0x2069d9[_0x3d20('0x31')]=_[_0x3d20('0x32')](db['Dynamics365Field']['rawAttributes']);_0x2069d9[_0x3d20('0x35')]=_[_0x3d20('0x32')](_0x119f8e[_0x3d20('0x35')]);_0x2069d9[_0x3d20('0x33')]=_[_0x3d20('0x34')](_0x2069d9[_0x3d20('0x31')],_0x2069d9[_0x3d20('0x35')]);_0x4057a1[_0x3d20('0x36')]=_[_0x3d20('0x34')](_0x2069d9[_0x3d20('0x31')],qs[_0x3d20('0x37')](_0x119f8e[_0x3d20('0x35')]['fields']));_0x4057a1[_0x3d20('0x36')]=_0x4057a1[_0x3d20('0x36')][_0x3d20('0x38')]?_0x4057a1[_0x3d20('0x36')]:_0x2069d9[_0x3d20('0x31')];_0x4057a1[_0x3d20('0x3a')]=qs['sort'](_0x119f8e[_0x3d20('0x35')][_0x3d20('0x3b')]);_0x4057a1[_0x3d20('0x3e')]=qs[_0x3d20('0x33')](_[_0x3d20('0x3c')](_0x119f8e['query'],_0x2069d9[_0x3d20('0x33')]));if(_0x119f8e[_0x3d20('0x35')][_0x3d20('0x3d')]){_0x4057a1[_0x3d20('0x3e')]=_[_0x3d20('0x3f')](_0x4057a1[_0x3d20('0x3e')],{'$or':_[_0x3d20('0x2e')](_0x4057a1[_0x3d20('0x36')],function(_0x4c2947){var _0x2019d5={};_0x2019d5[_0x4c2947]={'$like':'%'+_0x119f8e[_0x3d20('0x35')][_0x3d20('0x3d')]+'%'};return _0x2019d5;})});}_0x4057a1=_[_0x3d20('0x3f')]({},_0x4057a1,_0x119f8e['options']);return _0x432742['getFields'](_0x4057a1);}})['then'](function(_0x3ca685){if(_0x3ca685){_0x34e456=_0x3ca685[_0x3d20('0x38')];if(!_0x119f8e['query'][_0x3d20('0x39')]('nolimit')){_0x4057a1[_0x3d20('0x1e')]=qs[_0x3d20('0x1e')](_0x119f8e[_0x3d20('0x35')]['limit']);_0x4057a1['offset']=qs[_0x3d20('0x21')](_0x119f8e[_0x3d20('0x35')]['offset']);}return _0x432742[_0x3d20('0x4c')](_0x4057a1);}})[_0x3d20('0x28')](function(_0x45525a){if(_0x45525a){return _0x45525a?{'count':_0x34e456,'rows':_0x45525a}:null;}})[_0x3d20('0x28')](respondWithResult(_0x2575e2,null))['catch'](handleError(_0x2575e2,null));};exports[_0x3d20('0x4e')]=function(_0x21adeb,_0x4a5c8f,_0x56d30e){var _0xb4ec84={};var _0x4071f2={};var _0x41f31d;var _0x585e89;return db[_0x3d20('0x2f')][_0x3d20('0x4d')]({'where':{'id':_0x21adeb['params']['id']}})[_0x3d20('0x28')](handleEntityNotFound(_0x4a5c8f,null))[_0x3d20('0x28')](function(_0x221b27){if(_0x221b27){_0x41f31d=_0x221b27;_0x4071f2[_0x3d20('0x31')]=_['keys'](db['Dynamics365Field'][_0x3d20('0x30')]);_0x4071f2[_0x3d20('0x35')]=_[_0x3d20('0x32')](_0x21adeb[_0x3d20('0x35')]);_0x4071f2[_0x3d20('0x33')]=_[_0x3d20('0x34')](_0x4071f2[_0x3d20('0x31')],_0x4071f2[_0x3d20('0x35')]);_0xb4ec84['attributes']=_[_0x3d20('0x34')](_0x4071f2[_0x3d20('0x31')],qs['fields'](_0x21adeb['query'][_0x3d20('0x37')]));_0xb4ec84[_0x3d20('0x36')]=_0xb4ec84[_0x3d20('0x36')][_0x3d20('0x38')]?_0xb4ec84[_0x3d20('0x36')]:_0x4071f2[_0x3d20('0x31')];_0xb4ec84[_0x3d20('0x3a')]=qs[_0x3d20('0x3b')](_0x21adeb[_0x3d20('0x35')][_0x3d20('0x3b')]);_0xb4ec84[_0x3d20('0x3e')]=qs['filters'](_[_0x3d20('0x3c')](_0x21adeb[_0x3d20('0x35')],_0x4071f2[_0x3d20('0x33')]));if(_0x21adeb[_0x3d20('0x35')]['filter']){_0xb4ec84[_0x3d20('0x3e')]=_['merge'](_0xb4ec84[_0x3d20('0x3e')],{'$or':_['map'](_0xb4ec84[_0x3d20('0x36')],function(_0x79d419){var _0x1469f9={};_0x1469f9[_0x79d419]={'$like':'%'+_0x21adeb[_0x3d20('0x35')][_0x3d20('0x3d')]+'%'};return _0x1469f9;})});}_0xb4ec84=_['merge']({},_0xb4ec84,_0x21adeb[_0x3d20('0x42')]);return _0x41f31d[_0x3d20('0x4e')](_0xb4ec84);}})['then'](function(_0x40298a){if(_0x40298a){_0x585e89=_0x40298a[_0x3d20('0x38')];if(!_0x21adeb[_0x3d20('0x35')][_0x3d20('0x39')](_0x3d20('0x4f'))){_0xb4ec84[_0x3d20('0x1e')]=qs[_0x3d20('0x1e')](_0x21adeb[_0x3d20('0x35')]['limit']);_0xb4ec84['offset']=qs['offset'](_0x21adeb['query'][_0x3d20('0x21')]);}return _0x41f31d[_0x3d20('0x4e')](_0xb4ec84);}})[_0x3d20('0x28')](function(_0x11a5cf){if(_0x11a5cf){return _0x11a5cf?{'count':_0x585e89,'rows':_0x11a5cf}:null;}})[_0x3d20('0x28')](respondWithResult(_0x4a5c8f,null))['catch'](handleError(_0x4a5c8f,null));};exports[_0x3d20('0x50')]=function(_0x458e12,_0x56b7f9,_0x3b477d){var _0x2823c1={};var _0x56b760={};var _0x256710;var _0x306b9b;return db[_0x3d20('0x2f')]['findOne']({'where':{'id':_0x458e12[_0x3d20('0x48')]['id']}})['then'](handleEntityNotFound(_0x56b7f9,null))[_0x3d20('0x28')](function(_0x4eaab0){if(_0x4eaab0){_0x256710=_0x4eaab0;_0x56b760['model']=_[_0x3d20('0x32')](db[_0x3d20('0x51')]['rawAttributes']);_0x56b760[_0x3d20('0x35')]=_[_0x3d20('0x32')](_0x458e12['query']);_0x56b760[_0x3d20('0x33')]=_['intersection'](_0x56b760['model'],_0x56b760[_0x3d20('0x35')]);_0x2823c1[_0x3d20('0x36')]=_[_0x3d20('0x34')](_0x56b760[_0x3d20('0x31')],qs[_0x3d20('0x37')](_0x458e12['query'][_0x3d20('0x37')]));_0x2823c1[_0x3d20('0x36')]=_0x2823c1[_0x3d20('0x36')]['length']?_0x2823c1[_0x3d20('0x36')]:_0x56b760[_0x3d20('0x31')];_0x2823c1[_0x3d20('0x3a')]=qs[_0x3d20('0x3b')](_0x458e12[_0x3d20('0x35')][_0x3d20('0x3b')]);_0x2823c1[_0x3d20('0x3e')]=qs[_0x3d20('0x33')](_[_0x3d20('0x3c')](_0x458e12[_0x3d20('0x35')],_0x56b760[_0x3d20('0x33')]));if(_0x458e12[_0x3d20('0x35')][_0x3d20('0x3d')]){_0x2823c1[_0x3d20('0x3e')]=_[_0x3d20('0x3f')](_0x2823c1[_0x3d20('0x3e')],{'$or':_[_0x3d20('0x2e')](_0x2823c1[_0x3d20('0x36')],function(_0x3904ba){var _0x2f9d52={};_0x2f9d52[_0x3904ba]={'$like':'%'+_0x458e12[_0x3d20('0x35')][_0x3d20('0x3d')]+'%'};return _0x2f9d52;})});}_0x2823c1=_[_0x3d20('0x3f')]({},_0x2823c1,_0x458e12[_0x3d20('0x42')]);return _0x256710[_0x3d20('0x50')](_0x2823c1);}})[_0x3d20('0x28')](function(_0xb7d7cf){if(_0xb7d7cf){_0x306b9b=_0xb7d7cf[_0x3d20('0x38')];if(!_0x458e12[_0x3d20('0x35')][_0x3d20('0x39')](_0x3d20('0x4f'))){_0x2823c1[_0x3d20('0x1e')]=qs['limit'](_0x458e12[_0x3d20('0x35')][_0x3d20('0x1e')]);_0x2823c1[_0x3d20('0x21')]=qs['offset'](_0x458e12[_0x3d20('0x35')][_0x3d20('0x21')]);}return _0x256710[_0x3d20('0x50')](_0x2823c1);}})['then'](function(_0x1be31c){if(_0x1be31c){return _0x1be31c?{'count':_0x306b9b,'rows':_0x1be31c}:null;}})[_0x3d20('0x28')](respondWithResult(_0x56b7f9,null))[_0x3d20('0x46')](handleError(_0x56b7f9,null));};
\ No newline at end of file
index 83cbc65..9d8c348 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6d6=['path','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define','Dynamics365Configuration','int_dynamics365_configurations','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0xfc7f6c,_0x231989){var _0x5367b4=function(_0x153e44){while(--_0x153e44){_0xfc7f6c['push'](_0xfc7f6c['shift']());}};_0x5367b4(++_0x231989);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x409052,_0x3f63a4){_0x409052=_0x409052-0x0;var _0x41c4d5=_0xd6d6[_0x409052];return _0x41c4d5;};'use strict';var _=require(_0x6d6d('0x0'));var util=require(_0x6d6d('0x1'));var logger=require(_0x6d6d('0x2'))(_0x6d6d('0x3'));var moment=require('moment');var BPromise=require(_0x6d6d('0x4'));var rp=require(_0x6d6d('0x5'));var fs=require('fs');var path=require(_0x6d6d('0x6'));var rimraf=require(_0x6d6d('0x7'));var config=require(_0x6d6d('0x8'));var attributes=require(_0x6d6d('0x9'));module[_0x6d6d('0xa')]=function(_0x5702dc,_0x210ff7){return _0x5702dc[_0x6d6d('0xb')](_0x6d6d('0xc'),attributes,{'tableName':_0x6d6d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3e74=['exports','Dynamics365Configuration','int_dynamics365_configurations','lodash','../../config/logger','api','moment','path','../../config/environment','./intDynamics365Configuration.attributes'];(function(_0x3b59d5,_0x1e23f2){var _0x30cc91=function(_0x54815d){while(--_0x54815d){_0x3b59d5['push'](_0x3b59d5['shift']());}};_0x30cc91(++_0x1e23f2);}(_0x3e74,0x175));var _0x43e7=function(_0x23b66a,_0x13f8a4){_0x23b66a=_0x23b66a-0x0;var _0x577570=_0x3e74[_0x23b66a];return _0x577570;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var logger=require(_0x43e7('0x1'))(_0x43e7('0x2'));var moment=require(_0x43e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x43e7('0x4'));var rimraf=require('rimraf');var config=require(_0x43e7('0x5'));var attributes=require(_0x43e7('0x6'));module[_0x43e7('0x7')]=function(_0x1c503b,_0xc98b9c){return _0x1c503b['define'](_0x43e7('0x8'),attributes,{'tableName':_0x43e7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6a11d59..ef9398f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe3c=['Dynamics365Configuration,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x10e366,_0x40af9b){var _0x18d440=function(_0x4a446b){while(--_0x4a446b){_0x10e366['push'](_0x10e366['shift']());}};_0x18d440(++_0x40af9b);}(_0xfe3c,0x1d3));var _0xcfe3=function(_0x3baa76,_0x218473){_0x3baa76=_0x3baa76-0x0;var _0x45c339=_0xfe3c[_0x3baa76];return _0x45c339;};'use strict';var _=require(_0xcfe3('0x0'));var util=require('util');var moment=require(_0xcfe3('0x1'));var BPromise=require(_0xcfe3('0x2'));var rs=require(_0xcfe3('0x3'));var fs=require('fs');var Redis=require(_0xcfe3('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xcfe3('0x5'));var logger=require(_0xcfe3('0x6'))(_0xcfe3('0x7'));var config=require(_0xcfe3('0x8'));var jayson=require(_0xcfe3('0x9'));var client=jayson[_0xcfe3('0xa')][_0xcfe3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x512664,_0x3ad459,_0x4c7f68){return new BPromise(function(_0x25c71b,_0x444971){return client['request'](_0x512664,_0x4c7f68)[_0xcfe3('0xc')](function(_0x4eae6a){logger[_0xcfe3('0xd')](_0xcfe3('0xe'),_0x3ad459,_0xcfe3('0xf'));logger[_0xcfe3('0x10')](_0xcfe3('0x11'),_0x3ad459,'request\x20sent',JSON['stringify'](_0x4eae6a));if(_0x4eae6a[_0xcfe3('0x12')]){if(_0x4eae6a['error']['code']===0x1f4){logger['error'](_0xcfe3('0xe'),_0x3ad459,_0x4eae6a[_0xcfe3('0x12')][_0xcfe3('0x13')]);return _0x444971(_0x4eae6a[_0xcfe3('0x12')][_0xcfe3('0x13')]);}logger[_0xcfe3('0x12')](_0xcfe3('0xe'),_0x3ad459,_0x4eae6a[_0xcfe3('0x12')][_0xcfe3('0x13')]);return _0x25c71b(_0x4eae6a[_0xcfe3('0x12')]['message']);}else{logger[_0xcfe3('0xd')](_0xcfe3('0xe'),_0x3ad459,'request\x20sent');_0x25c71b(_0x4eae6a[_0xcfe3('0x14')]['message']);}})[_0xcfe3('0x15')](function(_0x4a025b){logger[_0xcfe3('0x12')]('Dynamics365Configuration,\x20%s,\x20%s',_0x3ad459,_0x4a025b);_0x444971(_0x4a025b);});});}
\ No newline at end of file
+var _0x51a6=['request\x20sent','error','code','message','catch','lodash','moment','ioredis','../../config/utils','jayson/promise','client','http','request','then','info','Dynamics365Configuration,\x20%s,\x20%s','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s'];(function(_0x510b98,_0x4c4cbb){var _0x45e775=function(_0x29ec11){while(--_0x29ec11){_0x510b98['push'](_0x510b98['shift']());}};_0x45e775(++_0x4c4cbb);}(_0x51a6,0x125));var _0x651a=function(_0x43b487,_0x21893a){_0x43b487=_0x43b487-0x0;var _0x2f707a=_0x51a6[_0x43b487];return _0x2f707a;};'use strict';var _=require(_0x651a('0x0'));var util=require('util');var moment=require(_0x651a('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x651a('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x651a('0x3'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x651a('0x4'));var client=jayson[_0x651a('0x5')][_0x651a('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x2a9f4c,_0x5ce333,_0x40c09b){return new BPromise(function(_0x47396a,_0x342e74){return client[_0x651a('0x7')](_0x2a9f4c,_0x40c09b)[_0x651a('0x8')](function(_0x5c95c4){logger[_0x651a('0x9')](_0x651a('0xa'),_0x5ce333,'request\x20sent');logger[_0x651a('0xb')](_0x651a('0xc'),_0x5ce333,_0x651a('0xd'),JSON['stringify'](_0x5c95c4));if(_0x5c95c4[_0x651a('0xe')]){if(_0x5c95c4[_0x651a('0xe')][_0x651a('0xf')]===0x1f4){logger[_0x651a('0xe')](_0x651a('0xa'),_0x5ce333,_0x5c95c4['error'][_0x651a('0x10')]);return _0x342e74(_0x5c95c4[_0x651a('0xe')][_0x651a('0x10')]);}logger[_0x651a('0xe')](_0x651a('0xa'),_0x5ce333,_0x5c95c4['error'][_0x651a('0x10')]);return _0x47396a(_0x5c95c4[_0x651a('0xe')][_0x651a('0x10')]);}else{logger[_0x651a('0x9')](_0x651a('0xa'),_0x5ce333,_0x651a('0xd'));_0x47396a(_0x5c95c4['result'][_0x651a('0x10')]);}})[_0x651a('0x11')](function(_0x33c571){logger['error'](_0x651a('0xa'),_0x5ce333,_0x33c571);_0x342e74(_0x33c571);});});}
\ No newline at end of file
index 036eb5d..bdaae44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8fe=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','isAuthenticated','index','get','/:id','show','post','put','delete','destroy','multer','util','connect-timeout','fs-extra'];(function(_0x1603dd,_0x30fd63){var _0x25089a=function(_0x42040c){while(--_0x42040c){_0x1603dd['push'](_0x1603dd['shift']());}};_0x25089a(++_0x30fd63);}(_0xa8fe,0x194));var _0xea8f=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0xa8fe[_0x19950b];return _0x3c6b41;};'use strict';var multer=require(_0xea8f('0x0'));var util=require(_0xea8f('0x1'));var path=require('path');var timeout=require(_0xea8f('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xea8f('0x3'));var auth=require(_0xea8f('0x4'));var interaction=require(_0xea8f('0x5'));var config=require(_0xea8f('0x6'));var controller=require(_0xea8f('0x7'));router['get']('/',auth[_0xea8f('0x8')](),controller[_0xea8f('0x9')]);router[_0xea8f('0xa')](_0xea8f('0xb'),auth['isAuthenticated'](),controller[_0xea8f('0xc')]);router[_0xea8f('0xd')]('/',auth[_0xea8f('0x8')](),controller['create']);router[_0xea8f('0xe')](_0xea8f('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xea8f('0xf')](_0xea8f('0xb'),auth[_0xea8f('0x8')](),controller[_0xea8f('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x44fb=['util','path','express','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','show','post','create','put','/:id','update','delete','destroy','multer'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x44fb,0x131));var _0xb44f=function(_0x3e3396,_0x21acc5){_0x3e3396=_0x3e3396-0x0;var _0x33e770=_0x44fb[_0x3e3396];return _0x33e770;};'use strict';var multer=require(_0xb44f('0x0'));var util=require(_0xb44f('0x1'));var path=require(_0xb44f('0x2'));var timeout=require('connect-timeout');var express=require(_0xb44f('0x3'));var router=express['Router']();var fs_extra=require(_0xb44f('0x4'));var auth=require(_0xb44f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xb44f('0x6'));var controller=require('./intDynamics365Field.controller');router[_0xb44f('0x7')]('/',auth[_0xb44f('0x8')](),controller[_0xb44f('0x9')]);router[_0xb44f('0x7')]('/:id',auth[_0xb44f('0x8')](),controller[_0xb44f('0xa')]);router[_0xb44f('0xb')]('/',auth[_0xb44f('0x8')](),controller[_0xb44f('0xc')]);router[_0xb44f('0xd')](_0xb44f('0xe'),auth[_0xb44f('0x8')](),controller[_0xb44f('0xf')]);router[_0xb44f('0x10')]('/:id',auth[_0xb44f('0x8')](),controller[_0xb44f('0x11')]);module['exports']=router;
\ No newline at end of file
index 236321a..56e1b8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd298=['keyValue','picklist','STRING','customVariable','BOOLEAN','exports','ENUM','string'];(function(_0x506cfa,_0x2e301){var _0x23c230=function(_0x271e21){while(--_0x271e21){_0x506cfa['push'](_0x506cfa['shift']());}};_0x23c230(++_0x2e301);}(_0xd298,0x10d));var _0x8d29=function(_0x265ff5,_0x1aafd5){_0x265ff5=_0x265ff5-0x0;var _0x4715f1=_0xd298[_0x265ff5];return _0x4715f1;};'use strict';var Sequelize=require('sequelize');module[_0x8d29('0x0')]={'type':{'type':Sequelize[_0x8d29('0x1')](_0x8d29('0x2'),'variable','customVariable',_0x8d29('0x3'),_0x8d29('0x4')),'defaultValue':_0x8d29('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x8d29('0x5')]},'keyType':{'type':Sequelize['ENUM']('string','variable',_0x8d29('0x6'))},'keyContent':{'type':Sequelize[_0x8d29('0x5')]},'idField':{'type':Sequelize[_0x8d29('0x5')]},'nameField':{'type':Sequelize[_0x8d29('0x5')]},'customField':{'type':Sequelize[_0x8d29('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8d29('0x5')]}};
\ No newline at end of file
+var _0x377b=['BOOLEAN','exports','string','variable','customVariable','picklist','STRING','ENUM'];(function(_0x2c5c05,_0x39b729){var _0x51e261=function(_0x211c3a){while(--_0x211c3a){_0x2c5c05['push'](_0x2c5c05['shift']());}};_0x51e261(++_0x39b729);}(_0x377b,0x151));var _0xb377=function(_0xe57813,_0xdd6d2){_0xe57813=_0xe57813-0x0;var _0x2eba86=_0x377b[_0xe57813];return _0x2eba86;};'use strict';var Sequelize=require('sequelize');module[_0xb377('0x0')]={'type':{'type':Sequelize['ENUM'](_0xb377('0x1'),_0xb377('0x2'),_0xb377('0x3'),'keyValue',_0xb377('0x4')),'defaultValue':_0xb377('0x1')},'content':{'type':Sequelize[_0xb377('0x5')]},'key':{'type':Sequelize[_0xb377('0x5')]},'keyType':{'type':Sequelize[_0xb377('0x6')](_0xb377('0x1'),_0xb377('0x2'),_0xb377('0x3'))},'keyContent':{'type':Sequelize[_0xb377('0x5')]},'idField':{'type':Sequelize[_0xb377('0x5')]},'nameField':{'type':Sequelize[_0xb377('0x5')]},'customField':{'type':Sequelize[_0xb377('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb377('0x5')]}};
\ No newline at end of file
index 359f25e..cbd4d65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0017=['send','index','Dynamics365Field','rawAttributes','type','key','model','map','query','keys','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','filters','filter','where','VIRTUAL','merge','options','count','includeAll','findAll','rows','catch','show','params','length','include','find','create','body','eml-format','zip-dir','fast-json-patch','moment','bluebird','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','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','offset','set','Content-Range','apply','update','then','destroy','end','error','stack','name'];(function(_0x512bd6,_0x3bd340){var _0x2bb5dd=function(_0x1b0196){while(--_0x1b0196){_0x512bd6['push'](_0x512bd6['shift']());}};_0x2bb5dd(++_0x3bd340);}(_0x0017,0x1a9));var _0x7001=function(_0x20cb20,_0x256051){_0x20cb20=_0x20cb20-0x0;var _0x2fcf4b=_0x0017[_0x20cb20];return _0x2fcf4b;};'use strict';var emlformat=require(_0x7001('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7001('0x1'));var jsonpatch=require(_0x7001('0x2'));var rp=require('request-promise');var moment=require(_0x7001('0x3'));var BPromise=require(_0x7001('0x4'));var Mustache=require(_0x7001('0x5'));var util=require(_0x7001('0x6'));var path=require('path');var sox=require(_0x7001('0x7'));var csv=require(_0x7001('0x8'));var ejs=require(_0x7001('0x9'));var fs=require('fs');var fs_extra=require(_0x7001('0xa'));var _=require(_0x7001('0xb'));var squel=require(_0x7001('0xc'));var crypto=require(_0x7001('0xd'));var jsforce=require(_0x7001('0xe'));var deskjs=require(_0x7001('0xf'));var toCsv=require(_0x7001('0x8'));var querystring=require(_0x7001('0x10'));var Papa=require(_0x7001('0x11'));var Redis=require('ioredis');var authService=require(_0x7001('0x12'));var qs=require(_0x7001('0x13'));var as=require(_0x7001('0x14'));var hardwareService=require(_0x7001('0x15'));var logger=require('../../config/logger')(_0x7001('0x16'));var utils=require(_0x7001('0x17'));var config=require(_0x7001('0x18'));var licenseUtil=require(_0x7001('0x19'));var db=require(_0x7001('0x1a'))['db'];function respondWithStatusCode(_0x11725a,_0x25cbcb){_0x25cbcb=_0x25cbcb||0xcc;return function(_0x33cf3a){if(_0x33cf3a){return _0x11725a[_0x7001('0x1b')](_0x25cbcb);}return _0x11725a['status'](_0x25cbcb)['end']();};}function respondWithResult(_0x356a26,_0x108150){_0x108150=_0x108150||0xc8;return function(_0x394e05){if(_0x394e05){return _0x356a26[_0x7001('0x1c')](_0x108150)[_0x7001('0x1d')](_0x394e05);}};}function respondWithFilteredResult(_0xbb9584,_0xc365fc){return function(_0x3433a2){if(_0x3433a2){var _0x433bea=typeof _0xc365fc['offset']===_0x7001('0x1e')&&typeof _0xc365fc[_0x7001('0x1f')]===_0x7001('0x1e');var _0x1cd958=_0x3433a2['count'];var _0x4d6fd3=_0x433bea?0x0:_0xc365fc['offset'];var _0x198d6b=_0x433bea?_0x3433a2['count']:_0xc365fc[_0x7001('0x20')]+_0xc365fc['limit'];var _0x730153;if(_0x198d6b>=_0x1cd958){_0x198d6b=_0x1cd958;_0x730153=0xc8;}else{_0x730153=0xce;}_0xbb9584[_0x7001('0x1c')](_0x730153);return _0xbb9584[_0x7001('0x21')](_0x7001('0x22'),_0x4d6fd3+'-'+_0x198d6b+'/'+_0x1cd958)[_0x7001('0x1d')](_0x3433a2);}return null;};}function patchUpdates(_0x3f8c7a){return function(_0x5914ef){try{jsonpatch[_0x7001('0x23')](_0x5914ef,_0x3f8c7a,!![]);}catch(_0x4162f6){return BPromise['reject'](_0x4162f6);}return _0x5914ef['save']();};}function saveUpdates(_0x376bf9,_0x231506){return function(_0x12388f){if(_0x12388f){return _0x12388f[_0x7001('0x24')](_0x376bf9)[_0x7001('0x25')](function(_0x6bae2d){return _0x6bae2d;});}return null;};}function removeEntity(_0x5c8505,_0x2dcf7c){return function(_0x10c8c9){if(_0x10c8c9){return _0x10c8c9[_0x7001('0x26')]()['then'](function(){_0x5c8505[_0x7001('0x1c')](0xcc)[_0x7001('0x27')]();});}};}function handleEntityNotFound(_0x850a39,_0x533801){return function(_0x1aa860){if(!_0x1aa860){_0x850a39[_0x7001('0x1b')](0x194);}return _0x1aa860;};}function handleError(_0x1a4840,_0x301a3d){_0x301a3d=_0x301a3d||0x1f4;return function(_0x2222ac){logger[_0x7001('0x28')](_0x2222ac[_0x7001('0x29')]);if(_0x2222ac[_0x7001('0x2a')]){delete _0x2222ac[_0x7001('0x2a')];}_0x1a4840[_0x7001('0x1c')](_0x301a3d)[_0x7001('0x2b')](_0x2222ac);};}exports[_0x7001('0x2c')]=function(_0x4f3d0a,_0x30b36b){var _0x49e6a8={},_0x27de1c={},_0x59f661={'count':0x0,'rows':[]};var _0x14a034=_['map'](db[_0x7001('0x2d')][_0x7001('0x2e')],function(_0xac4bc8){return{'name':_0xac4bc8['fieldName'],'type':_0xac4bc8[_0x7001('0x2f')][_0x7001('0x30')]};});_0x27de1c[_0x7001('0x31')]=_[_0x7001('0x32')](_0x14a034,_0x7001('0x2a'));_0x27de1c[_0x7001('0x33')]=_[_0x7001('0x34')](_0x4f3d0a['query']);_0x27de1c['filters']=_['intersection'](_0x27de1c[_0x7001('0x31')],_0x27de1c[_0x7001('0x33')]);_0x49e6a8[_0x7001('0x35')]=_[_0x7001('0x36')](_0x27de1c[_0x7001('0x31')],qs[_0x7001('0x37')](_0x4f3d0a[_0x7001('0x33')][_0x7001('0x37')]));_0x49e6a8[_0x7001('0x35')]=_0x49e6a8[_0x7001('0x35')]['length']?_0x49e6a8[_0x7001('0x35')]:_0x27de1c[_0x7001('0x31')];if(!_0x4f3d0a[_0x7001('0x33')][_0x7001('0x38')](_0x7001('0x39'))){_0x49e6a8[_0x7001('0x1f')]=qs[_0x7001('0x1f')](_0x4f3d0a[_0x7001('0x33')][_0x7001('0x1f')]);_0x49e6a8[_0x7001('0x20')]=qs['offset'](_0x4f3d0a['query'][_0x7001('0x20')]);}_0x49e6a8[_0x7001('0x3a')]=qs[_0x7001('0x3b')](_0x4f3d0a[_0x7001('0x33')][_0x7001('0x3b')]);_0x49e6a8['where']=qs[_0x7001('0x3c')](_['pick'](_0x4f3d0a['query'],_0x27de1c[_0x7001('0x3c')]),_0x14a034);if(_0x4f3d0a[_0x7001('0x33')][_0x7001('0x3d')]){_0x49e6a8[_0x7001('0x3e')]=_['merge'](_0x49e6a8['where'],{'$or':_['map'](_0x14a034,function(_0x175dfb){if(_0x175dfb[_0x7001('0x2f')]!==_0x7001('0x3f')){var _0x507f7d={};_0x507f7d[_0x175dfb[_0x7001('0x2a')]]={'$like':'%'+_0x4f3d0a[_0x7001('0x33')]['filter']+'%'};return _0x507f7d;}})});}_0x49e6a8=_[_0x7001('0x40')]({},_0x49e6a8,_0x4f3d0a[_0x7001('0x41')]);var _0x5125={'where':_0x49e6a8[_0x7001('0x3e')]};return db[_0x7001('0x2d')]['count'](_0x5125)[_0x7001('0x25')](function(_0xcb4017){_0x59f661[_0x7001('0x42')]=_0xcb4017;if(_0x4f3d0a['query'][_0x7001('0x43')]){_0x49e6a8['include']=[{'all':!![]}];}return db[_0x7001('0x2d')][_0x7001('0x44')](_0x49e6a8);})['then'](function(_0x129e74){_0x59f661[_0x7001('0x45')]=_0x129e74;return _0x59f661;})[_0x7001('0x25')](respondWithFilteredResult(_0x30b36b,_0x49e6a8))[_0x7001('0x46')](handleError(_0x30b36b,null));};exports[_0x7001('0x47')]=function(_0x36f04b,_0x5798de){var _0x37e2de={'raw':!![],'where':{'id':_0x36f04b[_0x7001('0x48')]['id']}},_0x5d4a39={};_0x5d4a39[_0x7001('0x31')]=_[_0x7001('0x34')](db[_0x7001('0x2d')][_0x7001('0x2e')]);_0x5d4a39[_0x7001('0x33')]=_[_0x7001('0x34')](_0x36f04b['query']);_0x5d4a39[_0x7001('0x3c')]=_[_0x7001('0x36')](_0x5d4a39[_0x7001('0x31')],_0x5d4a39['query']);_0x37e2de['attributes']=_['intersection'](_0x5d4a39[_0x7001('0x31')],qs['fields'](_0x36f04b['query'][_0x7001('0x37')]));_0x37e2de[_0x7001('0x35')]=_0x37e2de[_0x7001('0x35')][_0x7001('0x49')]?_0x37e2de['attributes']:_0x5d4a39[_0x7001('0x31')];if(_0x36f04b[_0x7001('0x33')][_0x7001('0x43')]){_0x37e2de[_0x7001('0x4a')]=[{'all':!![]}];}_0x37e2de=_[_0x7001('0x40')]({},_0x37e2de,_0x36f04b[_0x7001('0x41')]);return db[_0x7001('0x2d')][_0x7001('0x4b')](_0x37e2de)[_0x7001('0x25')](handleEntityNotFound(_0x5798de,null))[_0x7001('0x25')](respondWithResult(_0x5798de,null))[_0x7001('0x46')](handleError(_0x5798de,null));};exports[_0x7001('0x4c')]=function(_0x206a43,_0x3b4583){return db[_0x7001('0x2d')][_0x7001('0x4c')](_0x206a43[_0x7001('0x4d')],{})['then'](respondWithResult(_0x3b4583,0xc9))[_0x7001('0x46')](handleError(_0x3b4583,null));};exports[_0x7001('0x24')]=function(_0x41cead,_0x4128bc){if(_0x41cead[_0x7001('0x4d')]['id']){delete _0x41cead[_0x7001('0x4d')]['id'];}return db[_0x7001('0x2d')][_0x7001('0x4b')]({'where':{'id':_0x41cead[_0x7001('0x48')]['id']}})[_0x7001('0x25')](handleEntityNotFound(_0x4128bc,null))['then'](saveUpdates(_0x41cead[_0x7001('0x4d')],null))[_0x7001('0x25')](respondWithResult(_0x4128bc,null))[_0x7001('0x46')](handleError(_0x4128bc,null));};exports[_0x7001('0x26')]=function(_0x2ae618,_0x2a7b29){return db[_0x7001('0x2d')]['find']({'where':{'id':_0x2ae618[_0x7001('0x48')]['id']}})[_0x7001('0x25')](handleEntityNotFound(_0x2a7b29,null))[_0x7001('0x25')](removeEntity(_0x2a7b29,null))[_0x7001('0x46')](handleError(_0x2a7b29,null));};
\ No newline at end of file
+var _0x51f9=['params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','fs-extra','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','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','reject','update','then','destroy','name','send','map','rawAttributes','key','query','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','type','VIRTUAL','filter','merge','options','Dynamics365Field','includeAll','include','findAll','catch','keys','create','body','find'];(function(_0x2128bf,_0x5b5e9f){var _0x6adb88=function(_0x4422cd){while(--_0x4422cd){_0x2128bf['push'](_0x2128bf['shift']());}};_0x6adb88(++_0x5b5e9f);}(_0x51f9,0x15f));var _0x951f=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0x51f9[_0x138f59];return _0x3d114d;};'use strict';var emlformat=require(_0x951f('0x0'));var rimraf=require(_0x951f('0x1'));var zipdir=require(_0x951f('0x2'));var jsonpatch=require(_0x951f('0x3'));var rp=require(_0x951f('0x4'));var moment=require(_0x951f('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x951f('0x6'));var util=require(_0x951f('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x951f('0x8'));var _=require(_0x951f('0x9'));var squel=require('squel');var crypto=require(_0x951f('0xa'));var jsforce=require(_0x951f('0xb'));var deskjs=require(_0x951f('0xc'));var toCsv=require(_0x951f('0xd'));var querystring=require(_0x951f('0xe'));var Papa=require(_0x951f('0xf'));var Redis=require(_0x951f('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x951f('0x11'));var as=require(_0x951f('0x12'));var hardwareService=require(_0x951f('0x13'));var logger=require(_0x951f('0x14'))(_0x951f('0x15'));var utils=require(_0x951f('0x16'));var config=require(_0x951f('0x17'));var licenseUtil=require(_0x951f('0x18'));var db=require(_0x951f('0x19'))['db'];function respondWithStatusCode(_0x132231,_0x412168){_0x412168=_0x412168||0xcc;return function(_0x2c958a){if(_0x2c958a){return _0x132231[_0x951f('0x1a')](_0x412168);}return _0x132231[_0x951f('0x1b')](_0x412168)[_0x951f('0x1c')]();};}function respondWithResult(_0x56e724,_0x270790){_0x270790=_0x270790||0xc8;return function(_0x175365){if(_0x175365){return _0x56e724['status'](_0x270790)[_0x951f('0x1d')](_0x175365);}};}function respondWithFilteredResult(_0x1e83c5,_0x1e27ed){return function(_0x6c74f8){if(_0x6c74f8){var _0xf4ac4f=typeof _0x1e27ed['offset']===_0x951f('0x1e')&&typeof _0x1e27ed[_0x951f('0x1f')]===_0x951f('0x1e');var _0x5e82c9=_0x6c74f8['count'];var _0x2a2132=_0xf4ac4f?0x0:_0x1e27ed[_0x951f('0x20')];var _0x125962=_0xf4ac4f?_0x6c74f8[_0x951f('0x21')]:_0x1e27ed[_0x951f('0x20')]+_0x1e27ed[_0x951f('0x1f')];var _0x29e2aa;if(_0x125962>=_0x5e82c9){_0x125962=_0x5e82c9;_0x29e2aa=0xc8;}else{_0x29e2aa=0xce;}_0x1e83c5[_0x951f('0x1b')](_0x29e2aa);return _0x1e83c5['set']('Content-Range',_0x2a2132+'-'+_0x125962+'/'+_0x5e82c9)[_0x951f('0x1d')](_0x6c74f8);}return null;};}function patchUpdates(_0x35d74b){return function(_0x42c9d3){try{jsonpatch['apply'](_0x42c9d3,_0x35d74b,!![]);}catch(_0x5cf57b){return BPromise[_0x951f('0x22')](_0x5cf57b);}return _0x42c9d3['save']();};}function saveUpdates(_0x32a85f,_0x2a0af8){return function(_0x48524b){if(_0x48524b){return _0x48524b[_0x951f('0x23')](_0x32a85f)[_0x951f('0x24')](function(_0x2efb97){return _0x2efb97;});}return null;};}function removeEntity(_0x1ac369,_0x4cf67a){return function(_0x3ef5d1){if(_0x3ef5d1){return _0x3ef5d1[_0x951f('0x25')]()[_0x951f('0x24')](function(){_0x1ac369[_0x951f('0x1b')](0xcc)[_0x951f('0x1c')]();});}};}function handleEntityNotFound(_0x690dea,_0x4a3630){return function(_0x2c462b){if(!_0x2c462b){_0x690dea[_0x951f('0x1a')](0x194);}return _0x2c462b;};}function handleError(_0x5b9937,_0x1b15a7){_0x1b15a7=_0x1b15a7||0x1f4;return function(_0x446ca1){logger['error'](_0x446ca1['stack']);if(_0x446ca1['name']){delete _0x446ca1[_0x951f('0x26')];}_0x5b9937[_0x951f('0x1b')](_0x1b15a7)[_0x951f('0x27')](_0x446ca1);};}exports['index']=function(_0x3971f9,_0xde9eff){var _0x5ee7ad={},_0x5e9b9f={},_0x36cb49={'count':0x0,'rows':[]};var _0xbb749d=_[_0x951f('0x28')](db['Dynamics365Field'][_0x951f('0x29')],function(_0x5885cf){return{'name':_0x5885cf['fieldName'],'type':_0x5885cf['type'][_0x951f('0x2a')]};});_0x5e9b9f['model']=_['map'](_0xbb749d,_0x951f('0x26'));_0x5e9b9f[_0x951f('0x2b')]=_['keys'](_0x3971f9[_0x951f('0x2b')]);_0x5e9b9f['filters']=_[_0x951f('0x2c')](_0x5e9b9f[_0x951f('0x2d')],_0x5e9b9f[_0x951f('0x2b')]);_0x5ee7ad[_0x951f('0x2e')]=_['intersection'](_0x5e9b9f['model'],qs[_0x951f('0x2f')](_0x3971f9[_0x951f('0x2b')]['fields']));_0x5ee7ad['attributes']=_0x5ee7ad[_0x951f('0x2e')]['length']?_0x5ee7ad[_0x951f('0x2e')]:_0x5e9b9f[_0x951f('0x2d')];if(!_0x3971f9[_0x951f('0x2b')][_0x951f('0x30')](_0x951f('0x31'))){_0x5ee7ad[_0x951f('0x1f')]=qs[_0x951f('0x1f')](_0x3971f9[_0x951f('0x2b')]['limit']);_0x5ee7ad['offset']=qs[_0x951f('0x20')](_0x3971f9[_0x951f('0x2b')][_0x951f('0x20')]);}_0x5ee7ad[_0x951f('0x32')]=qs['sort'](_0x3971f9[_0x951f('0x2b')][_0x951f('0x33')]);_0x5ee7ad[_0x951f('0x34')]=qs[_0x951f('0x35')](_[_0x951f('0x36')](_0x3971f9[_0x951f('0x2b')],_0x5e9b9f[_0x951f('0x35')]),_0xbb749d);if(_0x3971f9[_0x951f('0x2b')]['filter']){_0x5ee7ad[_0x951f('0x34')]=_['merge'](_0x5ee7ad[_0x951f('0x34')],{'$or':_[_0x951f('0x28')](_0xbb749d,function(_0x30aa8a){if(_0x30aa8a[_0x951f('0x37')]!==_0x951f('0x38')){var _0x1239a6={};_0x1239a6[_0x30aa8a[_0x951f('0x26')]]={'$like':'%'+_0x3971f9[_0x951f('0x2b')][_0x951f('0x39')]+'%'};return _0x1239a6;}})});}_0x5ee7ad=_[_0x951f('0x3a')]({},_0x5ee7ad,_0x3971f9[_0x951f('0x3b')]);var _0x59253c={'where':_0x5ee7ad[_0x951f('0x34')]};return db[_0x951f('0x3c')][_0x951f('0x21')](_0x59253c)[_0x951f('0x24')](function(_0x1c3fa2){_0x36cb49['count']=_0x1c3fa2;if(_0x3971f9[_0x951f('0x2b')][_0x951f('0x3d')]){_0x5ee7ad[_0x951f('0x3e')]=[{'all':!![]}];}return db[_0x951f('0x3c')][_0x951f('0x3f')](_0x5ee7ad);})[_0x951f('0x24')](function(_0x221a8d){_0x36cb49['rows']=_0x221a8d;return _0x36cb49;})[_0x951f('0x24')](respondWithFilteredResult(_0xde9eff,_0x5ee7ad))[_0x951f('0x40')](handleError(_0xde9eff,null));};exports['show']=function(_0x145cd9,_0x209dc6){var _0x237b8b={'raw':!![],'where':{'id':_0x145cd9['params']['id']}},_0x522580={};_0x522580[_0x951f('0x2d')]=_[_0x951f('0x41')](db[_0x951f('0x3c')]['rawAttributes']);_0x522580[_0x951f('0x2b')]=_[_0x951f('0x41')](_0x145cd9[_0x951f('0x2b')]);_0x522580['filters']=_[_0x951f('0x2c')](_0x522580['model'],_0x522580[_0x951f('0x2b')]);_0x237b8b[_0x951f('0x2e')]=_[_0x951f('0x2c')](_0x522580['model'],qs[_0x951f('0x2f')](_0x145cd9[_0x951f('0x2b')][_0x951f('0x2f')]));_0x237b8b[_0x951f('0x2e')]=_0x237b8b[_0x951f('0x2e')]['length']?_0x237b8b[_0x951f('0x2e')]:_0x522580[_0x951f('0x2d')];if(_0x145cd9[_0x951f('0x2b')][_0x951f('0x3d')]){_0x237b8b['include']=[{'all':!![]}];}_0x237b8b=_[_0x951f('0x3a')]({},_0x237b8b,_0x145cd9[_0x951f('0x3b')]);return db[_0x951f('0x3c')]['find'](_0x237b8b)['then'](handleEntityNotFound(_0x209dc6,null))['then'](respondWithResult(_0x209dc6,null))[_0x951f('0x40')](handleError(_0x209dc6,null));};exports[_0x951f('0x42')]=function(_0x24e870,_0x1dfdad){return db[_0x951f('0x3c')]['create'](_0x24e870['body'],{})[_0x951f('0x24')](respondWithResult(_0x1dfdad,0xc9))[_0x951f('0x40')](handleError(_0x1dfdad,null));};exports[_0x951f('0x23')]=function(_0x404f54,_0x3a6738){if(_0x404f54[_0x951f('0x43')]['id']){delete _0x404f54[_0x951f('0x43')]['id'];}return db[_0x951f('0x3c')][_0x951f('0x44')]({'where':{'id':_0x404f54[_0x951f('0x45')]['id']}})[_0x951f('0x24')](handleEntityNotFound(_0x3a6738,null))[_0x951f('0x24')](saveUpdates(_0x404f54[_0x951f('0x43')],null))[_0x951f('0x24')](respondWithResult(_0x3a6738,null))[_0x951f('0x40')](handleError(_0x3a6738,null));};exports[_0x951f('0x25')]=function(_0x355dae,_0x3ca1ba){return db[_0x951f('0x3c')][_0x951f('0x44')]({'where':{'id':_0x355dae[_0x951f('0x45')]['id']}})[_0x951f('0x24')](handleEntityNotFound(_0x3ca1ba,null))[_0x951f('0x24')](removeEntity(_0x3ca1ba,null))[_0x951f('0x40')](handleError(_0x3ca1ba,null));};
\ No newline at end of file
index 7a3f3a8..9048240 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x312d=['moment','bluebird','path','../../config/environment','./intDynamics365Field.attributes','exports','define','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','idField','FieldId','util','../../config/logger','api'];(function(_0x47f1b9,_0x4553d3){var _0x5c67ac=function(_0x44b5b0){while(--_0x44b5b0){_0x47f1b9['push'](_0x47f1b9['shift']());}};_0x5c67ac(++_0x4553d3);}(_0x312d,0x174));var _0xd312=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0x312d[_0xdea41a];return _0x15d0d8;};'use strict';var _=require('lodash');var util=require(_0xd312('0x0'));var logger=require(_0xd312('0x1'))(_0xd312('0x2'));var moment=require(_0xd312('0x3'));var BPromise=require(_0xd312('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd312('0x5'));var rimraf=require('rimraf');var config=require(_0xd312('0x6'));var attributes=require(_0xd312('0x7'));module[_0xd312('0x8')]=function(_0x4e6b26,_0x35f6c2){return _0x4e6b26[_0xd312('0x9')](_0xd312('0xa'),attributes,{'tableName':_0xd312('0xb'),'paranoid':![],'indexes':[{'name':_0xd312('0xc'),'fields':[_0xd312('0xd'),_0xd312('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2107=['path','rimraf','./intDynamics365Field.attributes','Dynamics365Field','int_dynamics365_fields','dynamics365_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0xea0ee0,_0x2c282a){var _0x1682bf=function(_0x474d49){while(--_0x474d49){_0xea0ee0['push'](_0xea0ee0['shift']());}};_0x1682bf(++_0x2c282a);}(_0x2107,0x17f));var _0x7210=function(_0x173f10,_0x35db61){_0x173f10=_0x173f10-0x0;var _0x53142d=_0x2107[_0x173f10];return _0x53142d;};'use strict';var _=require(_0x7210('0x0'));var util=require(_0x7210('0x1'));var logger=require(_0x7210('0x2'))(_0x7210('0x3'));var moment=require(_0x7210('0x4'));var BPromise=require(_0x7210('0x5'));var rp=require(_0x7210('0x6'));var fs=require('fs');var path=require(_0x7210('0x7'));var rimraf=require(_0x7210('0x8'));var config=require('../../config/environment');var attributes=require(_0x7210('0x9'));module['exports']=function(_0x510e2f,_0x5c6e91){return _0x510e2f['define'](_0x7210('0xa'),attributes,{'tableName':_0x7210('0xb'),'paranoid':![],'indexes':[{'name':_0x7210('0xc'),'fields':[_0x7210('0xd'),_0x7210('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 8949036..59dfb4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a2a=['request','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x140273,_0x104cde){var _0x1daf44=function(_0x46e64e){while(--_0x46e64e){_0x140273['push'](_0x140273['shift']());}};_0x1daf44(++_0x104cde);}(_0x4a2a,0x181));var _0xa4a2=function(_0x58a10c,_0x3f0cb8){_0x58a10c=_0x58a10c-0x0;var _0x3c7e7b=_0x4a2a[_0x58a10c];return _0x3c7e7b;};'use strict';var _=require(_0xa4a2('0x0'));var util=require(_0xa4a2('0x1'));var moment=require(_0xa4a2('0x2'));var BPromise=require(_0xa4a2('0x3'));var rs=require(_0xa4a2('0x4'));var fs=require('fs');var Redis=require(_0xa4a2('0x5'));var db=require(_0xa4a2('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xa4a2('0x7'))(_0xa4a2('0x8'));var config=require(_0xa4a2('0x9'));var jayson=require(_0xa4a2('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3d4c15,_0x1ac88d,_0x3a3d85){return new BPromise(function(_0xe4d455,_0x13bbf1){return client[_0xa4a2('0xb')](_0x3d4c15,_0x3a3d85)['then'](function(_0x38abd1){logger[_0xa4a2('0xc')](_0xa4a2('0xd'),_0x1ac88d,_0xa4a2('0xe'));logger[_0xa4a2('0xf')](_0xa4a2('0x10'),_0x1ac88d,'request\x20sent',JSON[_0xa4a2('0x11')](_0x38abd1));if(_0x38abd1[_0xa4a2('0x12')]){if(_0x38abd1[_0xa4a2('0x12')][_0xa4a2('0x13')]===0x1f4){logger['error'](_0xa4a2('0xd'),_0x1ac88d,_0x38abd1[_0xa4a2('0x12')][_0xa4a2('0x14')]);return _0x13bbf1(_0x38abd1[_0xa4a2('0x12')][_0xa4a2('0x14')]);}logger[_0xa4a2('0x12')](_0xa4a2('0xd'),_0x1ac88d,_0x38abd1[_0xa4a2('0x12')][_0xa4a2('0x14')]);return _0xe4d455(_0x38abd1['error']['message']);}else{logger[_0xa4a2('0xc')]('Dynamics365Field,\x20%s,\x20%s',_0x1ac88d,_0xa4a2('0xe'));_0xe4d455(_0x38abd1[_0xa4a2('0x15')][_0xa4a2('0x14')]);}})['catch'](function(_0x140f83){logger[_0xa4a2('0x12')](_0xa4a2('0xd'),_0x1ac88d,_0x140f83);_0x13bbf1(_0x140f83);});});}
\ No newline at end of file
+var _0x8123=['catch','util','moment','bluebird','randomstring','../../config/utils','jayson/promise','client','http','request','then','info','Dynamics365Field,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result'];(function(_0x49b73b,_0x49456b){var _0x391e11=function(_0x111b67){while(--_0x111b67){_0x49b73b['push'](_0x49b73b['shift']());}};_0x391e11(++_0x49456b);}(_0x8123,0x1dc));var _0x3812=function(_0x2fc012,_0x503e5b){_0x2fc012=_0x2fc012-0x0;var _0x2891f9=_0x8123[_0x2fc012];return _0x2891f9;};'use strict';var _=require('lodash');var util=require(_0x3812('0x0'));var moment=require(_0x3812('0x1'));var BPromise=require(_0x3812('0x2'));var rs=require(_0x3812('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3812('0x4'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x3812('0x5'));var client=jayson[_0x3812('0x6')][_0x3812('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x25d65c,_0x11ffbe,_0x14737f){return new BPromise(function(_0x4e2c52,_0x29913d){return client[_0x3812('0x8')](_0x25d65c,_0x14737f)[_0x3812('0x9')](function(_0x55f951){logger[_0x3812('0xa')](_0x3812('0xb'),_0x11ffbe,'request\x20sent');logger[_0x3812('0xc')]('Dynamics365Field,\x20%s,\x20%s,\x20%s',_0x11ffbe,_0x3812('0xd'),JSON[_0x3812('0xe')](_0x55f951));if(_0x55f951[_0x3812('0xf')]){if(_0x55f951[_0x3812('0xf')]['code']===0x1f4){logger[_0x3812('0xf')](_0x3812('0xb'),_0x11ffbe,_0x55f951[_0x3812('0xf')]['message']);return _0x29913d(_0x55f951[_0x3812('0xf')][_0x3812('0x10')]);}logger[_0x3812('0xf')](_0x3812('0xb'),_0x11ffbe,_0x55f951[_0x3812('0xf')][_0x3812('0x10')]);return _0x4e2c52(_0x55f951[_0x3812('0xf')][_0x3812('0x10')]);}else{logger[_0x3812('0xa')]('Dynamics365Field,\x20%s,\x20%s',_0x11ffbe,'request\x20sent');_0x4e2c52(_0x55f951[_0x3812('0x11')]['message']);}})[_0x3812('0x12')](function(_0x37aeac){logger[_0x3812('0xf')](_0x3812('0xb'),_0x11ffbe,_0x37aeac);_0x29913d(_0x37aeac);});});}
\ No newline at end of file
index 83b86b8..5e037bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8d7=['show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','update','destroy','multer','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id'];(function(_0x42c41a,_0x1c6537){var _0x400fa2=function(_0x4f89e9){while(--_0x4f89e9){_0x42c41a['push'](_0x42c41a['shift']());}};_0x400fa2(++_0x1c6537);}(_0xe8d7,0xfc));var _0x7e8d=function(_0x24a956,_0x1a7a4f){_0x24a956=_0x24a956-0x0;var _0x38aac9=_0xe8d7[_0x24a956];return _0x38aac9;};'use strict';var multer=require(_0x7e8d('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x7e8d('0x1'));var router=express[_0x7e8d('0x2')]();var fs_extra=require(_0x7e8d('0x3'));var auth=require(_0x7e8d('0x4'));var interaction=require(_0x7e8d('0x5'));var config=require(_0x7e8d('0x6'));var controller=require(_0x7e8d('0x7'));router[_0x7e8d('0x8')]('/',auth[_0x7e8d('0x9')](),controller[_0x7e8d('0xa')]);router['get'](_0x7e8d('0xb'),auth['isAuthenticated'](),controller[_0x7e8d('0xc')]);router[_0x7e8d('0x8')](_0x7e8d('0xd'),auth['isAuthenticated'](),controller[_0x7e8d('0xe')]);router[_0x7e8d('0x8')](_0x7e8d('0xf'),auth[_0x7e8d('0x9')](),controller[_0x7e8d('0x10')]);router[_0x7e8d('0x11')]('/',auth[_0x7e8d('0x9')](),controller[_0x7e8d('0x12')]);router[_0x7e8d('0x11')](_0x7e8d('0xd'),auth['isAuthenticated'](),controller[_0x7e8d('0x13')]);router['put'](_0x7e8d('0xb'),auth['isAuthenticated'](),controller[_0x7e8d('0x14')]);router['delete'](_0x7e8d('0xb'),auth[_0x7e8d('0x9')](),controller[_0x7e8d('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0x2082=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update','destroy','exports','util','path','connect-timeout','express','Router'];(function(_0x4c6bca,_0x3de390){var _0x29d58e=function(_0x1ac871){while(--_0x1ac871){_0x4c6bca['push'](_0x4c6bca['shift']());}};_0x29d58e(++_0x3de390);}(_0x2082,0x12f));var _0x2208=function(_0x58a4ac,_0x43fd42){_0x58a4ac=_0x58a4ac-0x0;var _0x545810=_0x2082[_0x58a4ac];return _0x545810;};'use strict';var multer=require('multer');var util=require(_0x2208('0x0'));var path=require(_0x2208('0x1'));var timeout=require(_0x2208('0x2'));var express=require(_0x2208('0x3'));var router=express[_0x2208('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x2208('0x5'));var interaction=require(_0x2208('0x6'));var config=require(_0x2208('0x7'));var controller=require('./intFreshdeskAccount.controller');router[_0x2208('0x8')]('/',auth[_0x2208('0x9')](),controller[_0x2208('0xa')]);router[_0x2208('0x8')](_0x2208('0xb'),auth['isAuthenticated'](),controller[_0x2208('0xc')]);router[_0x2208('0x8')]('/:id/configurations',auth[_0x2208('0x9')](),controller[_0x2208('0xd')]);router['get'](_0x2208('0xe'),auth['isAuthenticated'](),controller[_0x2208('0xf')]);router[_0x2208('0x10')]('/',auth[_0x2208('0x9')](),controller['create']);router['post']('/:id/configurations',auth[_0x2208('0x9')](),controller[_0x2208('0x11')]);router[_0x2208('0x12')](_0x2208('0xb'),auth[_0x2208('0x9')](),controller[_0x2208('0x13')]);router['delete'](_0x2208('0xb'),auth[_0x2208('0x9')](),controller[_0x2208('0x14')]);module[_0x2208('0x15')]=router;
\ No newline at end of file
index 4637e68..4c1075e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd4f=['username','remoteUri','sequelize','STRING'];(function(_0x25de09,_0x96ed5a){var _0x3eda1e=function(_0x5e879c){while(--_0x5e879c){_0x25de09['push'](_0x25de09['shift']());}};_0x3eda1e(++_0x96ed5a);}(_0xdd4f,0x1ce));var _0xfdd4=function(_0x21b7ab,_0x597223){_0x21b7ab=_0x21b7ab-0x0;var _0x280f5e=_0xdd4f[_0x21b7ab];return _0x280f5e;};'use strict';var Sequelize=require(_0xfdd4('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xfdd4('0x1')],'unique':_0xfdd4('0x2')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xfdd4('0x1')],'unique':_0xfdd4('0x3')},'serverUrl':{'type':Sequelize[_0xfdd4('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x7096=['exports','STRING','username','remoteUri'];(function(_0x1d1326,_0x368060){var _0x664929=function(_0x2e7512){while(--_0x2e7512){_0x1d1326['push'](_0x1d1326['shift']());}};_0x664929(++_0x368060);}(_0x7096,0x10c));var _0x6709=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0x7096[_0x4baae2];return _0x1a2285;};'use strict';var Sequelize=require('sequelize');module[_0x6709('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x6709('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x6709('0x2')},'apiKey':{'type':Sequelize[_0x6709('0x1')]},'remoteUri':{'type':Sequelize[_0x6709('0x1')],'unique':_0x6709('0x3')},'serverUrl':{'type':Sequelize[_0x6709('0x1')],'allowNull':![]}};
\ No newline at end of file
index f810a56..04bac1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77f1=['find','getConfigurations','findOne','FreshdeskConfiguration','length','sort','pick','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','FreshdeskField','getFields','remoteUri','apiKey','slice','lastIndexOf','format','%s/%s','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','base64','agent','description','priority','group','company','remove','includes','default','choices','capitalize','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','papaparse','../../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','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','FreshdeskAccount','fieldName','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','where','filter','type','VIRTUAL','merge','options','includeAll','catch','params','rawAttributes','body'];(function(_0x71773d,_0xc8e022){var _0x56684b=function(_0x5f3f17){while(--_0x5f3f17){_0x71773d['push'](_0x71773d['shift']());}};_0x56684b(++_0xc8e022);}(_0x77f1,0x1dd));var _0x177f=function(_0x5341df,_0x1a5a5e){_0x5341df=_0x5341df-0x0;var _0x5462e6=_0x77f1[_0x5341df];return _0x5462e6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x177f('0x0'));var zipdir=require(_0x177f('0x1'));var jsonpatch=require(_0x177f('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x177f('0x3'));var util=require(_0x177f('0x4'));var path=require('path');var sox=require(_0x177f('0x5'));var csv=require(_0x177f('0x6'));var ejs=require(_0x177f('0x7'));var fs=require('fs');var fs_extra=require(_0x177f('0x8'));var _=require(_0x177f('0x9'));var squel=require('squel');var crypto=require(_0x177f('0xa'));var jsforce=require(_0x177f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x177f('0x6'));var querystring=require('querystring');var Papa=require(_0x177f('0xc'));var Redis=require('ioredis');var authService=require(_0x177f('0xd'));var qs=require(_0x177f('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x177f('0xf'));var logger=require(_0x177f('0x10'))(_0x177f('0x11'));var utils=require(_0x177f('0x12'));var config=require(_0x177f('0x13'));var licenseUtil=require(_0x177f('0x14'));var db=require(_0x177f('0x15'))['db'];var integrations=require(_0x177f('0x16'));function respondWithStatusCode(_0x564f48,_0x2d1299){_0x2d1299=_0x2d1299||0xcc;return function(_0xb74829){if(_0xb74829){return _0x564f48[_0x177f('0x17')](_0x2d1299);}return _0x564f48[_0x177f('0x18')](_0x2d1299)['end']();};}function respondWithResult(_0x34ba83,_0x578d19){_0x578d19=_0x578d19||0xc8;return function(_0x1c947f){if(_0x1c947f){return _0x34ba83['status'](_0x578d19)['json'](_0x1c947f);}};}function respondWithFilteredResult(_0x2366ba,_0x2f9446){return function(_0x457d8b){if(_0x457d8b){var _0x3eefd9=typeof _0x2f9446[_0x177f('0x19')]===_0x177f('0x1a')&&typeof _0x2f9446[_0x177f('0x1b')]===_0x177f('0x1a');var _0x2389d5=_0x457d8b[_0x177f('0x1c')];var _0x4d8aa3=_0x3eefd9?0x0:_0x2f9446[_0x177f('0x19')];var _0xac6972=_0x3eefd9?_0x457d8b['count']:_0x2f9446[_0x177f('0x19')]+_0x2f9446[_0x177f('0x1b')];var _0xbb58a2;if(_0xac6972>=_0x2389d5){_0xac6972=_0x2389d5;_0xbb58a2=0xc8;}else{_0xbb58a2=0xce;}_0x2366ba[_0x177f('0x18')](_0xbb58a2);return _0x2366ba[_0x177f('0x1d')](_0x177f('0x1e'),_0x4d8aa3+'-'+_0xac6972+'/'+_0x2389d5)[_0x177f('0x1f')](_0x457d8b);}return null;};}function patchUpdates(_0x3d3daf){return function(_0x3d48eb){try{jsonpatch[_0x177f('0x20')](_0x3d48eb,_0x3d3daf,!![]);}catch(_0x573548){return BPromise[_0x177f('0x21')](_0x573548);}return _0x3d48eb[_0x177f('0x22')]();};}function saveUpdates(_0x15d38a,_0x34eeb9){return function(_0x2880e6){if(_0x2880e6){return _0x2880e6[_0x177f('0x23')](_0x15d38a)[_0x177f('0x24')](function(_0x5eeffa){return _0x5eeffa;});}return null;};}function removeEntity(_0x59f00f,_0x298d75){return function(_0x148c17){if(_0x148c17){return _0x148c17[_0x177f('0x25')]()[_0x177f('0x24')](function(){_0x59f00f[_0x177f('0x18')](0xcc)[_0x177f('0x26')]();});}};}function handleEntityNotFound(_0x56f885,_0x248e4c){return function(_0x13aed6){if(!_0x13aed6){_0x56f885[_0x177f('0x17')](0x194);}return _0x13aed6;};}function handleError(_0x1e9851,_0xd0463){_0xd0463=_0xd0463||0x1f4;return function(_0x13735f){logger[_0x177f('0x27')](_0x13735f[_0x177f('0x28')]);if(_0x13735f[_0x177f('0x29')]){delete _0x13735f[_0x177f('0x29')];}_0x1e9851[_0x177f('0x18')](_0xd0463)[_0x177f('0x2a')](_0x13735f);};}exports[_0x177f('0x2b')]=function(_0x30655b,_0xdf7bd){var _0x4a1b02={},_0xfa8ad0={},_0x1df4e4={'count':0x0,'rows':[]};var _0x4b9c40=_[_0x177f('0x2c')](db[_0x177f('0x2d')]['rawAttributes'],function(_0x3a83c9){return{'name':_0x3a83c9[_0x177f('0x2e')],'type':_0x3a83c9['type']['key']};});_0xfa8ad0['model']=_['map'](_0x4b9c40,_0x177f('0x29'));_0xfa8ad0[_0x177f('0x2f')]=_[_0x177f('0x30')](_0x30655b[_0x177f('0x2f')]);_0xfa8ad0[_0x177f('0x31')]=_[_0x177f('0x32')](_0xfa8ad0[_0x177f('0x33')],_0xfa8ad0[_0x177f('0x2f')]);_0x4a1b02[_0x177f('0x34')]=_[_0x177f('0x32')](_0xfa8ad0['model'],qs[_0x177f('0x35')](_0x30655b[_0x177f('0x2f')]['fields']));_0x4a1b02[_0x177f('0x34')]=_0x4a1b02[_0x177f('0x34')]['length']?_0x4a1b02['attributes']:_0xfa8ad0[_0x177f('0x33')];if(!_0x30655b[_0x177f('0x2f')][_0x177f('0x36')](_0x177f('0x37'))){_0x4a1b02['limit']=qs['limit'](_0x30655b[_0x177f('0x2f')][_0x177f('0x1b')]);_0x4a1b02[_0x177f('0x19')]=qs[_0x177f('0x19')](_0x30655b[_0x177f('0x2f')][_0x177f('0x19')]);}_0x4a1b02[_0x177f('0x38')]=qs['sort'](_0x30655b[_0x177f('0x2f')]['sort']);_0x4a1b02[_0x177f('0x39')]=qs[_0x177f('0x31')](_['pick'](_0x30655b[_0x177f('0x2f')],_0xfa8ad0[_0x177f('0x31')]),_0x4b9c40);if(_0x30655b[_0x177f('0x2f')][_0x177f('0x3a')]){_0x4a1b02['where']=_['merge'](_0x4a1b02['where'],{'$or':_[_0x177f('0x2c')](_0x4b9c40,function(_0x1244b2){if(_0x1244b2[_0x177f('0x3b')]!==_0x177f('0x3c')){var _0x3cdd8f={};_0x3cdd8f[_0x1244b2[_0x177f('0x29')]]={'$like':'%'+_0x30655b[_0x177f('0x2f')][_0x177f('0x3a')]+'%'};return _0x3cdd8f;}})});}_0x4a1b02=_[_0x177f('0x3d')]({},_0x4a1b02,_0x30655b[_0x177f('0x3e')]);var _0x21aa43={'where':_0x4a1b02['where']};return db[_0x177f('0x2d')][_0x177f('0x1c')](_0x21aa43)[_0x177f('0x24')](function(_0xd8263f){_0x1df4e4[_0x177f('0x1c')]=_0xd8263f;if(_0x30655b[_0x177f('0x2f')][_0x177f('0x3f')]){_0x4a1b02['include']=[{'all':!![]}];}return db[_0x177f('0x2d')]['findAll'](_0x4a1b02);})[_0x177f('0x24')](function(_0x38dd5f){_0x1df4e4['rows']=_0x38dd5f;return _0x1df4e4;})[_0x177f('0x24')](respondWithFilteredResult(_0xdf7bd,_0x4a1b02))[_0x177f('0x40')](handleError(_0xdf7bd,null));};exports['show']=function(_0xa98e63,_0x52b522){var _0x4bdff5={'raw':![],'where':{'id':_0xa98e63[_0x177f('0x41')]['id']}},_0x224a44={};_0x224a44[_0x177f('0x33')]=_['keys'](db[_0x177f('0x2d')][_0x177f('0x42')]);_0x224a44[_0x177f('0x2f')]=_[_0x177f('0x30')](_0xa98e63['query']);_0x224a44[_0x177f('0x31')]=_[_0x177f('0x32')](_0x224a44['model'],_0x224a44[_0x177f('0x2f')]);_0x4bdff5['attributes']=_[_0x177f('0x32')](_0x224a44['model'],qs[_0x177f('0x35')](_0xa98e63[_0x177f('0x2f')][_0x177f('0x35')]));_0x4bdff5[_0x177f('0x34')]=_0x4bdff5[_0x177f('0x34')]['length']?_0x4bdff5[_0x177f('0x34')]:_0x224a44[_0x177f('0x33')];if(_0xa98e63[_0x177f('0x2f')][_0x177f('0x3f')]){_0x4bdff5['include']=[{'all':!![]}];}_0x4bdff5=_[_0x177f('0x3d')]({},_0x4bdff5,_0xa98e63[_0x177f('0x3e')]);return db['FreshdeskAccount']['find'](_0x4bdff5)[_0x177f('0x24')](handleEntityNotFound(_0x52b522,null))[_0x177f('0x24')](respondWithResult(_0x52b522,null))[_0x177f('0x40')](handleError(_0x52b522,null));};exports['create']=function(_0xfdb9da,_0x389a60){return db[_0x177f('0x2d')]['create'](_0xfdb9da[_0x177f('0x43')],{})[_0x177f('0x24')](respondWithResult(_0x389a60,0xc9))[_0x177f('0x40')](handleError(_0x389a60,null));};exports[_0x177f('0x23')]=function(_0x3db125,_0x1b0951){if(_0x3db125[_0x177f('0x43')]['id']){delete _0x3db125[_0x177f('0x43')]['id'];}return db[_0x177f('0x2d')][_0x177f('0x44')]({'where':{'id':_0x3db125[_0x177f('0x41')]['id']}})[_0x177f('0x24')](handleEntityNotFound(_0x1b0951,null))[_0x177f('0x24')](saveUpdates(_0x3db125[_0x177f('0x43')],null))[_0x177f('0x24')](respondWithResult(_0x1b0951,null))[_0x177f('0x40')](handleError(_0x1b0951,null));};exports[_0x177f('0x25')]=function(_0x5b9f31,_0x47eff6){return db[_0x177f('0x2d')][_0x177f('0x44')]({'where':{'id':_0x5b9f31[_0x177f('0x41')]['id']}})[_0x177f('0x24')](handleEntityNotFound(_0x47eff6,null))['then'](removeEntity(_0x47eff6,null))[_0x177f('0x40')](handleError(_0x47eff6,null));};exports[_0x177f('0x45')]=function(_0x8a0594,_0x2199d7,_0x2f9481){var _0x1bc536={};var _0x153163={};var _0x28f106;var _0x24bca6;return db[_0x177f('0x2d')][_0x177f('0x46')]({'where':{'id':_0x8a0594[_0x177f('0x41')]['id']}})[_0x177f('0x24')](handleEntityNotFound(_0x2199d7,null))[_0x177f('0x24')](function(_0x154f6c){if(_0x154f6c){_0x28f106=_0x154f6c;_0x153163[_0x177f('0x33')]=_['keys'](db[_0x177f('0x47')]['rawAttributes']);_0x153163[_0x177f('0x2f')]=_[_0x177f('0x30')](_0x8a0594['query']);_0x153163['filters']=_['intersection'](_0x153163[_0x177f('0x33')],_0x153163['query']);_0x1bc536[_0x177f('0x34')]=_['intersection'](_0x153163['model'],qs[_0x177f('0x35')](_0x8a0594[_0x177f('0x2f')]['fields']));_0x1bc536[_0x177f('0x34')]=_0x1bc536[_0x177f('0x34')][_0x177f('0x48')]?_0x1bc536['attributes']:_0x153163[_0x177f('0x33')];_0x1bc536[_0x177f('0x38')]=qs[_0x177f('0x49')](_0x8a0594[_0x177f('0x2f')][_0x177f('0x49')]);_0x1bc536[_0x177f('0x39')]=qs[_0x177f('0x31')](_[_0x177f('0x4a')](_0x8a0594[_0x177f('0x2f')],_0x153163[_0x177f('0x31')]));if(_0x8a0594[_0x177f('0x2f')][_0x177f('0x3a')]){_0x1bc536['where']=_[_0x177f('0x3d')](_0x1bc536[_0x177f('0x39')],{'$or':_[_0x177f('0x2c')](_0x1bc536[_0x177f('0x34')],function(_0x367f72){var _0x4a8dd8={};_0x4a8dd8[_0x367f72]={'$like':'%'+_0x8a0594[_0x177f('0x2f')][_0x177f('0x3a')]+'%'};return _0x4a8dd8;})});}_0x1bc536=_['merge']({},_0x1bc536,_0x8a0594[_0x177f('0x3e')]);return _0x28f106[_0x177f('0x45')](_0x1bc536);}})[_0x177f('0x24')](function(_0x599399){if(_0x599399){_0x24bca6=_0x599399['length'];if(!_0x8a0594[_0x177f('0x2f')][_0x177f('0x36')]('nolimit')){_0x1bc536[_0x177f('0x1b')]=qs[_0x177f('0x1b')](_0x8a0594['query'][_0x177f('0x1b')]);_0x1bc536[_0x177f('0x19')]=qs[_0x177f('0x19')](_0x8a0594[_0x177f('0x2f')]['offset']);}return _0x28f106[_0x177f('0x45')](_0x1bc536);}})[_0x177f('0x24')](function(_0x5f6df6){if(_0x5f6df6){return _0x5f6df6?{'count':_0x24bca6,'rows':_0x5f6df6}:null;}})[_0x177f('0x24')](respondWithResult(_0x2199d7,null))[_0x177f('0x40')](handleError(_0x2199d7,null));};exports[_0x177f('0x4b')]=function(_0x36a2b6,_0xc2bee,_0x549c7a){if(_0x36a2b6['body']['id']){delete _0x36a2b6[_0x177f('0x43')]['id'];}return db[_0x177f('0x2d')][_0x177f('0x46')]({'where':{'id':_0x36a2b6['params']['id']}})[_0x177f('0x24')](handleEntityNotFound(_0xc2bee,null))[_0x177f('0x24')](function(_0xda1af6){if(_0xda1af6){_0x36a2b6['body'][_0x177f('0x4c')]=_0xda1af6['id'];_0x36a2b6[_0x177f('0x43')][_0x177f('0x4d')]=integrations[_0x177f('0x4e')](_0x36a2b6['body']['channel'],_0x36a2b6['body'][_0x177f('0x3b')]);_0x36a2b6[_0x177f('0x43')][_0x177f('0x4f')]=integrations[_0x177f('0x50')](_0x36a2b6[_0x177f('0x43')]['channel'],_0x36a2b6[_0x177f('0x43')]['type']);return db[_0x177f('0x47')]['create'](_0x36a2b6['body'],{'include':[{'model':db[_0x177f('0x51')],'as':_0x177f('0x4d')},{'model':db[_0x177f('0x51')],'as':_0x177f('0x4f')}]});}return null;})['then'](respondWithResult(_0xc2bee,null))[_0x177f('0x40')](handleError(_0xc2bee,null));};exports[_0x177f('0x52')]=function(_0x2d6f21,_0x171f01,_0x2aae5a){var _0x2ddb26='';return db[_0x177f('0x2d')][_0x177f('0x46')]({'where':{'id':_0x2d6f21[_0x177f('0x41')]['id']},'attributes':['id',_0x177f('0x53'),_0x177f('0x54')]})[_0x177f('0x24')](handleEntityNotFound(_0x171f01,null))[_0x177f('0x24')](function(_0x14c10a){if(_0x14c10a){_0x2ddb26=_0x14c10a['remoteUri'];var _0x3289ee=_0x2ddb26[_0x177f('0x55')](-0x1);if(_0x3289ee==='/'){_0x2ddb26=_0x2ddb26['substring'](0x0,_0x2ddb26[_0x177f('0x56')](_0x3289ee));}return rp({'method':'GET','uri':util[_0x177f('0x57')](_0x177f('0x58'),_0x2ddb26,_0x177f('0x59')),'headers':{'Authorization':util['format'](_0x177f('0x5a'),new Buffer(util[_0x177f('0x57')](_0x177f('0x5b'),_0x14c10a[_0x177f('0x54')]))[_0x177f('0x5c')](_0x177f('0x5d')))},'json':!![]});}})[_0x177f('0x24')](function(_0x481c23){if(_0x481c23){var _0x1a124f=['requester','subject',_0x177f('0x5e'),_0x177f('0x5f'),_0x177f('0x18'),_0x177f('0x60'),_0x177f('0x61'),'source','ticket_type',_0x177f('0x61'),_0x177f('0x62')];_[_0x177f('0x63')](_0x481c23,function(_0x51fadf){return _0x1a124f[_0x177f('0x64')](_0x51fadf[_0x177f('0x29')])||!_0x51fadf[_0x177f('0x65')]&&_0x51fadf[_0x177f('0x3b')]!=='custom_text'&&_0x51fadf['type']!=='custom_dropdown';});return{'count':_0x481c23[_0x177f('0x48')],'rows':_[_0x177f('0x2c')](_0x481c23,function(_0x261784){return{'id':_0x261784[_0x177f('0x29')],'name':_0x261784['label'],'custom':!_0x261784['default'],'options':_0x261784[_0x177f('0x66')]?_[_0x177f('0x2c')](_0x261784['choices'],function(_0x4f3c1c){return{'name':_[_0x177f('0x67')](_0x4f3c1c),'value':_0x4f3c1c};}):[]};})};}})[_0x177f('0x24')](respondWithResult(_0x171f01,null))[_0x177f('0x40')](function(_0x273f09){var _0x115279=_0x2d6f21[_0x177f('0x2f')]['test']?0x1f4:_0x273f09[_0x177f('0x68')]||0x1f4;logger[_0x177f('0x27')](_0x177f('0x69'),_0x177f('0x52'),_0x115279,JSON[_0x177f('0x6a')](_0x273f09));delete _0x273f09[_0x177f('0x29')];if(_0x115279===0x191){_0x115279=0x190;}_0x171f01[_0x177f('0x18')](_0x115279)[_0x177f('0x2a')](_0x2d6f21[_0x177f('0x2f')][_0x177f('0x6b')]?{'message':_0x177f('0x6c'),'statusCode':_0x273f09['statusCode']}:_0x273f09);});};
\ No newline at end of file
+var _0xb469=['fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','limit','undefined','offset','set','apply','save','then','destroy','error','stack','name','send','index','map','FreshdeskAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','options','count','includeAll','show','params','find','create','catch','update','body','getConfigurations','findOne','FreshdeskConfiguration','sort','getSubjects','channel','Descriptions','getDescriptions','getFields','remoteUri','apiKey','slice','substring','lastIndexOf','%s/%s','format','Basic\x20%s','toString','requester','subject','description','priority','ticket_type','group','company','includes','default','custom_text','label','choices','capitalize','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir'];(function(_0x7564d,_0x40270f){var _0x1e520d=function(_0x5ed10f){while(--_0x5ed10f){_0x7564d['push'](_0x7564d['shift']());}};_0x1e520d(++_0x40270f);}(_0xb469,0x13b));var _0x9b46=function(_0x4256ec,_0x1a21cf){_0x4256ec=_0x4256ec-0x0;var _0x31fc71=_0xb469[_0x4256ec];return _0x31fc71;};'use strict';var emlformat=require(_0x9b46('0x0'));var rimraf=require(_0x9b46('0x1'));var zipdir=require(_0x9b46('0x2'));var jsonpatch=require(_0x9b46('0x3'));var rp=require(_0x9b46('0x4'));var moment=require(_0x9b46('0x5'));var BPromise=require(_0x9b46('0x6'));var Mustache=require('mustache');var util=require(_0x9b46('0x7'));var path=require(_0x9b46('0x8'));var sox=require('sox');var csv=require(_0x9b46('0x9'));var ejs=require(_0x9b46('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9b46('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9b46('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x9b46('0x9'));var querystring=require(_0x9b46('0xd'));var Papa=require(_0x9b46('0xe'));var Redis=require('ioredis');var authService=require(_0x9b46('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x9b46('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9b46('0x11'))('api');var utils=require(_0x9b46('0x12'));var config=require(_0x9b46('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x9b46('0x14'))['db'];var integrations=require(_0x9b46('0x15'));function respondWithStatusCode(_0x5b65c2,_0x14362a){_0x14362a=_0x14362a||0xcc;return function(_0x2cfb35){if(_0x2cfb35){return _0x5b65c2[_0x9b46('0x16')](_0x14362a);}return _0x5b65c2[_0x9b46('0x17')](_0x14362a)[_0x9b46('0x18')]();};}function respondWithResult(_0x35c5c1,_0x2136bc){_0x2136bc=_0x2136bc||0xc8;return function(_0x2e70c3){if(_0x2e70c3){return _0x35c5c1[_0x9b46('0x17')](_0x2136bc)[_0x9b46('0x19')](_0x2e70c3);}};}function respondWithFilteredResult(_0xbc1ba6,_0x135cc2){return function(_0x1e6911){if(_0x1e6911){var _0x559bdf=typeof _0x135cc2['offset']==='undefined'&&typeof _0x135cc2[_0x9b46('0x1a')]===_0x9b46('0x1b');var _0x29fec9=_0x1e6911['count'];var _0x5dd7bd=_0x559bdf?0x0:_0x135cc2[_0x9b46('0x1c')];var _0x4ccfd0=_0x559bdf?_0x1e6911['count']:_0x135cc2[_0x9b46('0x1c')]+_0x135cc2[_0x9b46('0x1a')];var _0x5a0d25;if(_0x4ccfd0>=_0x29fec9){_0x4ccfd0=_0x29fec9;_0x5a0d25=0xc8;}else{_0x5a0d25=0xce;}_0xbc1ba6[_0x9b46('0x17')](_0x5a0d25);return _0xbc1ba6[_0x9b46('0x1d')]('Content-Range',_0x5dd7bd+'-'+_0x4ccfd0+'/'+_0x29fec9)['json'](_0x1e6911);}return null;};}function patchUpdates(_0xbec2ea){return function(_0x137bfd){try{jsonpatch[_0x9b46('0x1e')](_0x137bfd,_0xbec2ea,!![]);}catch(_0x4e4c7d){return BPromise['reject'](_0x4e4c7d);}return _0x137bfd[_0x9b46('0x1f')]();};}function saveUpdates(_0x51d2ca,_0x21dacb){return function(_0x3c76f2){if(_0x3c76f2){return _0x3c76f2['update'](_0x51d2ca)[_0x9b46('0x20')](function(_0x5182b1){return _0x5182b1;});}return null;};}function removeEntity(_0x141cb6,_0x2b6f72){return function(_0x4d3b1b){if(_0x4d3b1b){return _0x4d3b1b[_0x9b46('0x21')]()[_0x9b46('0x20')](function(){_0x141cb6[_0x9b46('0x17')](0xcc)[_0x9b46('0x18')]();});}};}function handleEntityNotFound(_0x33ea06,_0x3e4899){return function(_0x22d63e){if(!_0x22d63e){_0x33ea06['sendStatus'](0x194);}return _0x22d63e;};}function handleError(_0xdd756c,_0x3ac37e){_0x3ac37e=_0x3ac37e||0x1f4;return function(_0x478105){logger[_0x9b46('0x22')](_0x478105[_0x9b46('0x23')]);if(_0x478105[_0x9b46('0x24')]){delete _0x478105[_0x9b46('0x24')];}_0xdd756c['status'](_0x3ac37e)[_0x9b46('0x25')](_0x478105);};}exports[_0x9b46('0x26')]=function(_0x3630bf,_0x376ccc){var _0x28b289={},_0x869993={},_0xc062ec={'count':0x0,'rows':[]};var _0x17ba3d=_[_0x9b46('0x27')](db[_0x9b46('0x28')][_0x9b46('0x29')],function(_0x5ab8b7){return{'name':_0x5ab8b7[_0x9b46('0x2a')],'type':_0x5ab8b7[_0x9b46('0x2b')][_0x9b46('0x2c')]};});_0x869993[_0x9b46('0x2d')]=_[_0x9b46('0x27')](_0x17ba3d,_0x9b46('0x24'));_0x869993[_0x9b46('0x2e')]=_[_0x9b46('0x2f')](_0x3630bf[_0x9b46('0x2e')]);_0x869993[_0x9b46('0x30')]=_[_0x9b46('0x31')](_0x869993['model'],_0x869993[_0x9b46('0x2e')]);_0x28b289['attributes']=_[_0x9b46('0x31')](_0x869993[_0x9b46('0x2d')],qs[_0x9b46('0x32')](_0x3630bf['query'][_0x9b46('0x32')]));_0x28b289[_0x9b46('0x33')]=_0x28b289[_0x9b46('0x33')][_0x9b46('0x34')]?_0x28b289[_0x9b46('0x33')]:_0x869993['model'];if(!_0x3630bf['query'][_0x9b46('0x35')](_0x9b46('0x36'))){_0x28b289[_0x9b46('0x1a')]=qs[_0x9b46('0x1a')](_0x3630bf['query'][_0x9b46('0x1a')]);_0x28b289['offset']=qs[_0x9b46('0x1c')](_0x3630bf[_0x9b46('0x2e')][_0x9b46('0x1c')]);}_0x28b289[_0x9b46('0x37')]=qs['sort'](_0x3630bf[_0x9b46('0x2e')]['sort']);_0x28b289[_0x9b46('0x38')]=qs[_0x9b46('0x30')](_[_0x9b46('0x39')](_0x3630bf[_0x9b46('0x2e')],_0x869993[_0x9b46('0x30')]),_0x17ba3d);if(_0x3630bf[_0x9b46('0x2e')][_0x9b46('0x3a')]){_0x28b289[_0x9b46('0x38')]=_[_0x9b46('0x3b')](_0x28b289[_0x9b46('0x38')],{'$or':_[_0x9b46('0x27')](_0x17ba3d,function(_0x4970df){if(_0x4970df[_0x9b46('0x2b')]!=='VIRTUAL'){var _0x28aa51={};_0x28aa51[_0x4970df[_0x9b46('0x24')]]={'$like':'%'+_0x3630bf['query'][_0x9b46('0x3a')]+'%'};return _0x28aa51;}})});}_0x28b289=_['merge']({},_0x28b289,_0x3630bf[_0x9b46('0x3c')]);var _0x493b0f={'where':_0x28b289[_0x9b46('0x38')]};return db[_0x9b46('0x28')][_0x9b46('0x3d')](_0x493b0f)[_0x9b46('0x20')](function(_0x272b){_0xc062ec['count']=_0x272b;if(_0x3630bf['query'][_0x9b46('0x3e')]){_0x28b289['include']=[{'all':!![]}];}return db['FreshdeskAccount']['findAll'](_0x28b289);})['then'](function(_0x40e2b5){_0xc062ec['rows']=_0x40e2b5;return _0xc062ec;})[_0x9b46('0x20')](respondWithFilteredResult(_0x376ccc,_0x28b289))['catch'](handleError(_0x376ccc,null));};exports[_0x9b46('0x3f')]=function(_0xe807bf,_0x2e92aa){var _0xa14b={'raw':![],'where':{'id':_0xe807bf[_0x9b46('0x40')]['id']}},_0x3ca76a={};_0x3ca76a[_0x9b46('0x2d')]=_[_0x9b46('0x2f')](db[_0x9b46('0x28')]['rawAttributes']);_0x3ca76a[_0x9b46('0x2e')]=_[_0x9b46('0x2f')](_0xe807bf[_0x9b46('0x2e')]);_0x3ca76a[_0x9b46('0x30')]=_[_0x9b46('0x31')](_0x3ca76a[_0x9b46('0x2d')],_0x3ca76a[_0x9b46('0x2e')]);_0xa14b[_0x9b46('0x33')]=_[_0x9b46('0x31')](_0x3ca76a[_0x9b46('0x2d')],qs[_0x9b46('0x32')](_0xe807bf[_0x9b46('0x2e')][_0x9b46('0x32')]));_0xa14b[_0x9b46('0x33')]=_0xa14b['attributes']['length']?_0xa14b[_0x9b46('0x33')]:_0x3ca76a[_0x9b46('0x2d')];if(_0xe807bf[_0x9b46('0x2e')]['includeAll']){_0xa14b['include']=[{'all':!![]}];}_0xa14b=_[_0x9b46('0x3b')]({},_0xa14b,_0xe807bf[_0x9b46('0x3c')]);return db[_0x9b46('0x28')][_0x9b46('0x41')](_0xa14b)[_0x9b46('0x20')](handleEntityNotFound(_0x2e92aa,null))[_0x9b46('0x20')](respondWithResult(_0x2e92aa,null))['catch'](handleError(_0x2e92aa,null));};exports[_0x9b46('0x42')]=function(_0x32e34d,_0x11b732){return db['FreshdeskAccount'][_0x9b46('0x42')](_0x32e34d['body'],{})[_0x9b46('0x20')](respondWithResult(_0x11b732,0xc9))[_0x9b46('0x43')](handleError(_0x11b732,null));};exports[_0x9b46('0x44')]=function(_0x566bad,_0x194979){if(_0x566bad[_0x9b46('0x45')]['id']){delete _0x566bad[_0x9b46('0x45')]['id'];}return db[_0x9b46('0x28')][_0x9b46('0x41')]({'where':{'id':_0x566bad[_0x9b46('0x40')]['id']}})['then'](handleEntityNotFound(_0x194979,null))[_0x9b46('0x20')](saveUpdates(_0x566bad[_0x9b46('0x45')],null))[_0x9b46('0x20')](respondWithResult(_0x194979,null))[_0x9b46('0x43')](handleError(_0x194979,null));};exports[_0x9b46('0x21')]=function(_0x36a492,_0x4a1df0){return db[_0x9b46('0x28')]['find']({'where':{'id':_0x36a492[_0x9b46('0x40')]['id']}})[_0x9b46('0x20')](handleEntityNotFound(_0x4a1df0,null))[_0x9b46('0x20')](removeEntity(_0x4a1df0,null))[_0x9b46('0x43')](handleError(_0x4a1df0,null));};exports[_0x9b46('0x46')]=function(_0x5f5ce9,_0x15dbb0,_0x1c7e5d){var _0x3d65ad={};var _0x29964b={};var _0x3f6b2f;var _0x14080e;return db[_0x9b46('0x28')][_0x9b46('0x47')]({'where':{'id':_0x5f5ce9[_0x9b46('0x40')]['id']}})[_0x9b46('0x20')](handleEntityNotFound(_0x15dbb0,null))[_0x9b46('0x20')](function(_0x4d473f){if(_0x4d473f){_0x3f6b2f=_0x4d473f;_0x29964b['model']=_['keys'](db[_0x9b46('0x48')]['rawAttributes']);_0x29964b[_0x9b46('0x2e')]=_['keys'](_0x5f5ce9[_0x9b46('0x2e')]);_0x29964b['filters']=_[_0x9b46('0x31')](_0x29964b[_0x9b46('0x2d')],_0x29964b[_0x9b46('0x2e')]);_0x3d65ad[_0x9b46('0x33')]=_[_0x9b46('0x31')](_0x29964b['model'],qs[_0x9b46('0x32')](_0x5f5ce9[_0x9b46('0x2e')][_0x9b46('0x32')]));_0x3d65ad[_0x9b46('0x33')]=_0x3d65ad[_0x9b46('0x33')]['length']?_0x3d65ad['attributes']:_0x29964b[_0x9b46('0x2d')];_0x3d65ad[_0x9b46('0x37')]=qs[_0x9b46('0x49')](_0x5f5ce9[_0x9b46('0x2e')][_0x9b46('0x49')]);_0x3d65ad[_0x9b46('0x38')]=qs[_0x9b46('0x30')](_[_0x9b46('0x39')](_0x5f5ce9['query'],_0x29964b[_0x9b46('0x30')]));if(_0x5f5ce9[_0x9b46('0x2e')][_0x9b46('0x3a')]){_0x3d65ad['where']=_[_0x9b46('0x3b')](_0x3d65ad[_0x9b46('0x38')],{'$or':_[_0x9b46('0x27')](_0x3d65ad[_0x9b46('0x33')],function(_0x3aceb0){var _0x143c02={};_0x143c02[_0x3aceb0]={'$like':'%'+_0x5f5ce9['query'][_0x9b46('0x3a')]+'%'};return _0x143c02;})});}_0x3d65ad=_[_0x9b46('0x3b')]({},_0x3d65ad,_0x5f5ce9[_0x9b46('0x3c')]);return _0x3f6b2f[_0x9b46('0x46')](_0x3d65ad);}})[_0x9b46('0x20')](function(_0x19951b){if(_0x19951b){_0x14080e=_0x19951b['length'];if(!_0x5f5ce9[_0x9b46('0x2e')]['hasOwnProperty'](_0x9b46('0x36'))){_0x3d65ad['limit']=qs[_0x9b46('0x1a')](_0x5f5ce9[_0x9b46('0x2e')]['limit']);_0x3d65ad[_0x9b46('0x1c')]=qs[_0x9b46('0x1c')](_0x5f5ce9[_0x9b46('0x2e')][_0x9b46('0x1c')]);}return _0x3f6b2f[_0x9b46('0x46')](_0x3d65ad);}})['then'](function(_0x10e84f){if(_0x10e84f){return _0x10e84f?{'count':_0x14080e,'rows':_0x10e84f}:null;}})[_0x9b46('0x20')](respondWithResult(_0x15dbb0,null))['catch'](handleError(_0x15dbb0,null));};exports['addConfiguration']=function(_0x3aca4b,_0x2801bb,_0x30fc49){if(_0x3aca4b[_0x9b46('0x45')]['id']){delete _0x3aca4b[_0x9b46('0x45')]['id'];}return db[_0x9b46('0x28')][_0x9b46('0x47')]({'where':{'id':_0x3aca4b[_0x9b46('0x40')]['id']}})['then'](handleEntityNotFound(_0x2801bb,null))['then'](function(_0x2ef80c){if(_0x2ef80c){_0x3aca4b[_0x9b46('0x45')]['AccountId']=_0x2ef80c['id'];_0x3aca4b[_0x9b46('0x45')]['Subjects']=integrations[_0x9b46('0x4a')](_0x3aca4b['body'][_0x9b46('0x4b')],_0x3aca4b[_0x9b46('0x45')][_0x9b46('0x2b')]);_0x3aca4b['body'][_0x9b46('0x4c')]=integrations[_0x9b46('0x4d')](_0x3aca4b[_0x9b46('0x45')]['channel'],_0x3aca4b[_0x9b46('0x45')][_0x9b46('0x2b')]);return db[_0x9b46('0x48')][_0x9b46('0x42')](_0x3aca4b[_0x9b46('0x45')],{'include':[{'model':db['FreshdeskField'],'as':'Subjects'},{'model':db['FreshdeskField'],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x2801bb,null))[_0x9b46('0x43')](handleError(_0x2801bb,null));};exports[_0x9b46('0x4e')]=function(_0x11243a,_0x378c2f,_0x368cd2){var _0x471ebf='';return db[_0x9b46('0x28')][_0x9b46('0x47')]({'where':{'id':_0x11243a['params']['id']},'attributes':['id',_0x9b46('0x4f'),_0x9b46('0x50')]})['then'](handleEntityNotFound(_0x378c2f,null))[_0x9b46('0x20')](function(_0x4ea405){if(_0x4ea405){_0x471ebf=_0x4ea405[_0x9b46('0x4f')];var _0x3d75d0=_0x471ebf[_0x9b46('0x51')](-0x1);if(_0x3d75d0==='/'){_0x471ebf=_0x471ebf[_0x9b46('0x52')](0x0,_0x471ebf[_0x9b46('0x53')](_0x3d75d0));}return rp({'method':'GET','uri':util['format'](_0x9b46('0x54'),_0x471ebf,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0x9b46('0x55')](_0x9b46('0x56'),new Buffer(util['format']('%s:X',_0x4ea405['apiKey']))[_0x9b46('0x57')]('base64'))},'json':!![]});}})['then'](function(_0x22b6b8){if(_0x22b6b8){var _0x176039=[_0x9b46('0x58'),_0x9b46('0x59'),'agent',_0x9b46('0x5a'),_0x9b46('0x17'),_0x9b46('0x5b'),'group','source',_0x9b46('0x5c'),_0x9b46('0x5d'),_0x9b46('0x5e')];_['remove'](_0x22b6b8,function(_0x2f60a3){return _0x176039[_0x9b46('0x5f')](_0x2f60a3['name'])||!_0x2f60a3[_0x9b46('0x60')]&&_0x2f60a3[_0x9b46('0x2b')]!==_0x9b46('0x61')&&_0x2f60a3[_0x9b46('0x2b')]!=='custom_dropdown';});return{'count':_0x22b6b8['length'],'rows':_[_0x9b46('0x27')](_0x22b6b8,function(_0x4ab79b){return{'id':_0x4ab79b[_0x9b46('0x24')],'name':_0x4ab79b[_0x9b46('0x62')],'custom':!_0x4ab79b['default'],'options':_0x4ab79b['choices']?_['map'](_0x4ab79b[_0x9b46('0x63')],function(_0x4b9a38){return{'name':_[_0x9b46('0x64')](_0x4b9a38),'value':_0x4b9a38};}):[]};})};}})[_0x9b46('0x20')](respondWithResult(_0x378c2f,null))[_0x9b46('0x43')](function(_0x18006a){var _0x5f56da=_0x11243a[_0x9b46('0x2e')][_0x9b46('0x65')]?0x1f4:_0x18006a[_0x9b46('0x66')]||0x1f4;logger[_0x9b46('0x22')](_0x9b46('0x67'),'getFields',_0x5f56da,JSON[_0x9b46('0x68')](_0x18006a));delete _0x18006a['name'];if(_0x5f56da===0x191){_0x5f56da=0x190;}_0x378c2f[_0x9b46('0x17')](_0x5f56da)[_0x9b46('0x25')](_0x11243a['query'][_0x9b46('0x65')]?{'message':_0x9b46('0x69'),'statusCode':_0x18006a[_0x9b46('0x66')]}:_0x18006a);});};
\ No newline at end of file
index 40536a4..97b9f52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ca2=['../../components/integrations/configuration','exports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intFreshdeskAccount.attributes'];(function(_0x394f68,_0x198543){var _0x487357=function(_0x204f28){while(--_0x204f28){_0x394f68['push'](_0x394f68['shift']());}};_0x487357(++_0x198543);}(_0x6ca2,0x18e));var _0x26ca=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6ca2[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x26ca('0x0'));var util=require(_0x26ca('0x1'));var logger=require(_0x26ca('0x2'))(_0x26ca('0x3'));var moment=require(_0x26ca('0x4'));var BPromise=require(_0x26ca('0x5'));var rp=require(_0x26ca('0x6'));var fs=require('fs');var path=require(_0x26ca('0x7'));var rimraf=require(_0x26ca('0x8'));var config=require('../../config/environment');var attributes=require(_0x26ca('0x9'));var integrations=require(_0x26ca('0xa'));module[_0x26ca('0xb')]=function(_0xd5b4b,_0x38409b){return _0xd5b4b['define']('FreshdeskAccount',attributes,{'tableName':'int_freshdesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe95b=['define','FreshdeskAccount','int_freshdesk_accounts','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','../../components/integrations/configuration','exports'];(function(_0x4d4d92,_0x14e3a8){var _0x293b80=function(_0x50f272){while(--_0x50f272){_0x4d4d92['push'](_0x4d4d92['shift']());}};_0x293b80(++_0x14e3a8);}(_0xe95b,0x1b3));var _0xbe95=function(_0x39ed66,_0x2e0b22){_0x39ed66=_0x39ed66-0x0;var _0x2861da=_0xe95b[_0x39ed66];return _0x2861da;};'use strict';var _=require('lodash');var util=require(_0xbe95('0x0'));var logger=require(_0xbe95('0x1'))('api');var moment=require(_0xbe95('0x2'));var BPromise=require(_0xbe95('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe95('0x4'));var rimraf=require(_0xbe95('0x5'));var config=require(_0xbe95('0x6'));var attributes=require('./intFreshdeskAccount.attributes');var integrations=require(_0xbe95('0x7'));module[_0xbe95('0x8')]=function(_0x1bf8fa,_0x134169){return _0x1bf8fa[_0xbe95('0x9')](_0xbe95('0xa'),attributes,{'tableName':_0xbe95('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d215532..fd16ed8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26ed=['include','map','model','ShowFreshdeskAccount','find','debug','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','FreshdeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','where','attributes','limit'];(function(_0x5eb4c1,_0x13834f){var _0x206e6e=function(_0x1b0806){while(--_0x1b0806){_0x5eb4c1['push'](_0x5eb4c1['shift']());}};_0x206e6e(++_0x13834f);}(_0x26ed,0x1f0));var _0xd26e=function(_0x47adb8,_0x591ccc){_0x47adb8=_0x47adb8-0x0;var _0x4689a8=_0x26ed[_0x47adb8];return _0x4689a8;};'use strict';var _=require(_0xd26e('0x0'));var util=require('util');var moment=require(_0xd26e('0x1'));var BPromise=require(_0xd26e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd26e('0x3'));var db=require(_0xd26e('0x4'))['db'];var utils=require(_0xd26e('0x5'));var logger=require(_0xd26e('0x6'))(_0xd26e('0x7'));var config=require(_0xd26e('0x8'));var jayson=require(_0xd26e('0x9'));var client=jayson[_0xd26e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x8a8e71,_0x366e1f,_0x2b12ae){return new BPromise(function(_0x2bca8d,_0x291a74){return client['request'](_0x8a8e71,_0x2b12ae)[_0xd26e('0xb')](function(_0x3383b3){logger[_0xd26e('0xc')](_0xd26e('0xd'),_0x366e1f,_0xd26e('0xe'));logger['debug'](_0xd26e('0xf'),_0x366e1f,'request\x20sent',JSON[_0xd26e('0x10')](_0x3383b3));if(_0x3383b3[_0xd26e('0x11')]){if(_0x3383b3[_0xd26e('0x11')]['code']===0x1f4){logger[_0xd26e('0x11')](_0xd26e('0xd'),_0x366e1f,_0x3383b3[_0xd26e('0x11')][_0xd26e('0x12')]);return _0x291a74(_0x3383b3[_0xd26e('0x11')][_0xd26e('0x12')]);}logger[_0xd26e('0x11')](_0xd26e('0xd'),_0x366e1f,_0x3383b3[_0xd26e('0x11')][_0xd26e('0x12')]);return _0x2bca8d(_0x3383b3[_0xd26e('0x11')][_0xd26e('0x12')]);}else{logger[_0xd26e('0xc')](_0xd26e('0xd'),_0x366e1f,'request\x20sent');_0x2bca8d(_0x3383b3[_0xd26e('0x13')][_0xd26e('0x12')]);}})[_0xd26e('0x14')](function(_0x29737c){logger[_0xd26e('0x11')](_0xd26e('0xd'),_0x366e1f,_0x29737c);_0x291a74(_0x29737c);});});}exports[_0xd26e('0x15')]=function(_0x38609e){var _0x332442=this;return new Promise(function(_0x148b3f,_0x382979){return db[_0xd26e('0x16')][_0xd26e('0x17')]({'raw':_0x38609e[_0xd26e('0x18')]?_0x38609e[_0xd26e('0x18')][_0xd26e('0x19')]===undefined?!![]:![]:!![],'where':_0x38609e[_0xd26e('0x18')]?_0x38609e[_0xd26e('0x18')][_0xd26e('0x1a')]||null:null,'attributes':_0x38609e[_0xd26e('0x18')]?_0x38609e[_0xd26e('0x18')][_0xd26e('0x1b')]||null:null,'limit':_0x38609e[_0xd26e('0x18')]?_0x38609e[_0xd26e('0x18')][_0xd26e('0x1c')]||null:null,'include':_0x38609e[_0xd26e('0x18')]?_0x38609e[_0xd26e('0x18')][_0xd26e('0x1d')]?_[_0xd26e('0x1e')](_0x38609e['options'][_0xd26e('0x1d')],function(_0x17e197){return{'model':db[_0x17e197['model']],'as':_0x17e197['as'],'attributes':_0x17e197['attributes'],'include':_0x17e197[_0xd26e('0x1d')]?_['map'](_0x17e197[_0xd26e('0x1d')],function(_0x53e751){return{'model':db[_0x53e751[_0xd26e('0x1f')]],'as':_0x53e751['as'],'attributes':_0x53e751[_0xd26e('0x1b')],'include':_0x53e751[_0xd26e('0x1d')]?_[_0xd26e('0x1e')](_0x53e751[_0xd26e('0x1d')],function(_0x38f208){return{'model':db[_0x38f208[_0xd26e('0x1f')]],'as':_0x38f208['as'],'attributes':_0x38f208[_0xd26e('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xd26e('0xb')](function(_0x59f34f){logger[_0xd26e('0xc')](_0xd26e('0x15'),_0x38609e);logger['debug'](_0xd26e('0x15'),_0x38609e,JSON[_0xd26e('0x10')](_0x59f34f));_0x148b3f(_0x59f34f);})['catch'](function(_0x304356){logger['error'](_0xd26e('0x15'),_0x304356[_0xd26e('0x12')],_0x38609e);_0x382979(_0x332442[_0xd26e('0x11')](0x1f4,_0x304356[_0xd26e('0x12')]));});});};exports[_0xd26e('0x20')]=function(_0x5386e8){var _0x13d8db=this;return new Promise(function(_0x387a2d,_0x171c6d){return db['FreshdeskAccount'][_0xd26e('0x21')]({'raw':_0x5386e8[_0xd26e('0x18')]?_0x5386e8['options'][_0xd26e('0x19')]===undefined?!![]:![]:!![],'where':_0x5386e8['options']?_0x5386e8[_0xd26e('0x18')][_0xd26e('0x1a')]||null:null,'attributes':_0x5386e8[_0xd26e('0x18')]?_0x5386e8[_0xd26e('0x18')][_0xd26e('0x1b')]||null:null,'include':_0x5386e8[_0xd26e('0x18')]?_0x5386e8[_0xd26e('0x18')][_0xd26e('0x1d')]?_['map'](_0x5386e8[_0xd26e('0x18')][_0xd26e('0x1d')],function(_0x31c687){return{'model':db[_0x31c687[_0xd26e('0x1f')]],'as':_0x31c687['as'],'attributes':_0x31c687[_0xd26e('0x1b')],'include':_0x31c687[_0xd26e('0x1d')]?_['map'](_0x31c687['include'],function(_0x4a730b){return{'model':db[_0x4a730b[_0xd26e('0x1f')]],'as':_0x4a730b['as'],'attributes':_0x4a730b[_0xd26e('0x1b')],'include':_0x4a730b[_0xd26e('0x1d')]?_[_0xd26e('0x1e')](_0x4a730b['include'],function(_0x11c777){return{'model':db[_0x11c777[_0xd26e('0x1f')]],'as':_0x11c777['as'],'attributes':_0x11c777['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x152748){logger[_0xd26e('0xc')](_0xd26e('0x20'),_0x5386e8);logger[_0xd26e('0x22')](_0xd26e('0x20'),_0x5386e8,JSON['stringify'](_0x152748));_0x387a2d(_0x152748);})[_0xd26e('0x14')](function(_0xff832c){logger['error']('ShowFreshdeskAccount',_0xff832c['message'],_0x5386e8);_0x171c6d(_0x13d8db[_0xd26e('0x11')](0x1f4,_0xff832c['message']));});});};
\ No newline at end of file
+var _0x7889=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','where','attributes','limit','include','map','model','ShowFreshdeskAccount','find','stringify','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0xf820fe,_0x165aef){var _0x445f08=function(_0x1f9649){while(--_0x1f9649){_0xf820fe['push'](_0xf820fe['shift']());}};_0x445f08(++_0x165aef);}(_0x7889,0xf7));var _0x9788=function(_0x44278b,_0x52ace2){_0x44278b=_0x44278b-0x0;var _0x2eb58f=_0x7889[_0x44278b];return _0x2eb58f;};'use strict';var _=require('lodash');var util=require(_0x9788('0x0'));var moment=require(_0x9788('0x1'));var BPromise=require('bluebird');var rs=require(_0x9788('0x2'));var fs=require('fs');var Redis=require(_0x9788('0x3'));var db=require(_0x9788('0x4'))['db'];var utils=require(_0x9788('0x5'));var logger=require(_0x9788('0x6'))(_0x9788('0x7'));var config=require(_0x9788('0x8'));var jayson=require(_0x9788('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x28991b,_0x50fea0,_0x21761e){return new BPromise(function(_0x3cf526,_0x367094){return client[_0x9788('0xa')](_0x28991b,_0x21761e)[_0x9788('0xb')](function(_0x534d7a){logger[_0x9788('0xc')](_0x9788('0xd'),_0x50fea0,_0x9788('0xe'));logger[_0x9788('0xf')](_0x9788('0x10'),_0x50fea0,'request\x20sent',JSON['stringify'](_0x534d7a));if(_0x534d7a['error']){if(_0x534d7a[_0x9788('0x11')][_0x9788('0x12')]===0x1f4){logger[_0x9788('0x11')]('FreshdeskAccount,\x20%s,\x20%s',_0x50fea0,_0x534d7a['error'][_0x9788('0x13')]);return _0x367094(_0x534d7a[_0x9788('0x11')]['message']);}logger[_0x9788('0x11')](_0x9788('0xd'),_0x50fea0,_0x534d7a[_0x9788('0x11')][_0x9788('0x13')]);return _0x3cf526(_0x534d7a[_0x9788('0x11')][_0x9788('0x13')]);}else{logger[_0x9788('0xc')](_0x9788('0xd'),_0x50fea0,_0x9788('0xe'));_0x3cf526(_0x534d7a[_0x9788('0x14')][_0x9788('0x13')]);}})[_0x9788('0x15')](function(_0x3849a7){logger['error'](_0x9788('0xd'),_0x50fea0,_0x3849a7);_0x367094(_0x3849a7);});});}exports[_0x9788('0x16')]=function(_0x50a963){var _0x39cd54=this;return new Promise(function(_0x3e32ea,_0x46de73){return db[_0x9788('0x17')][_0x9788('0x18')]({'raw':_0x50a963[_0x9788('0x19')]?_0x50a963[_0x9788('0x19')][_0x9788('0x1a')]===undefined?!![]:![]:!![],'where':_0x50a963[_0x9788('0x19')]?_0x50a963['options'][_0x9788('0x1b')]||null:null,'attributes':_0x50a963[_0x9788('0x19')]?_0x50a963[_0x9788('0x19')][_0x9788('0x1c')]||null:null,'limit':_0x50a963['options']?_0x50a963[_0x9788('0x19')][_0x9788('0x1d')]||null:null,'include':_0x50a963[_0x9788('0x19')]?_0x50a963[_0x9788('0x19')][_0x9788('0x1e')]?_[_0x9788('0x1f')](_0x50a963['options'][_0x9788('0x1e')],function(_0x55be9c){return{'model':db[_0x55be9c[_0x9788('0x20')]],'as':_0x55be9c['as'],'attributes':_0x55be9c['attributes'],'include':_0x55be9c[_0x9788('0x1e')]?_[_0x9788('0x1f')](_0x55be9c[_0x9788('0x1e')],function(_0x5f152c){return{'model':db[_0x5f152c[_0x9788('0x20')]],'as':_0x5f152c['as'],'attributes':_0x5f152c[_0x9788('0x1c')],'include':_0x5f152c['include']?_[_0x9788('0x1f')](_0x5f152c[_0x9788('0x1e')],function(_0x5bcb6b){return{'model':db[_0x5bcb6b['model']],'as':_0x5bcb6b['as'],'attributes':_0x5bcb6b['attributes']};}):[]};}):[]};}):[]:[]})[_0x9788('0xb')](function(_0x5d5fcc){logger['info'](_0x9788('0x16'),_0x50a963);logger[_0x9788('0xf')]('GetFreshdeskAccount',_0x50a963,JSON['stringify'](_0x5d5fcc));_0x3e32ea(_0x5d5fcc);})[_0x9788('0x15')](function(_0x5e968f){logger[_0x9788('0x11')](_0x9788('0x16'),_0x5e968f[_0x9788('0x13')],_0x50a963);_0x46de73(_0x39cd54[_0x9788('0x11')](0x1f4,_0x5e968f['message']));});});};exports[_0x9788('0x21')]=function(_0x4ca6ac){var _0x122168=this;return new Promise(function(_0x4115eb,_0x2a1c87){return db['FreshdeskAccount'][_0x9788('0x22')]({'raw':_0x4ca6ac[_0x9788('0x19')]?_0x4ca6ac['options'][_0x9788('0x1a')]===undefined?!![]:![]:!![],'where':_0x4ca6ac[_0x9788('0x19')]?_0x4ca6ac[_0x9788('0x19')][_0x9788('0x1b')]||null:null,'attributes':_0x4ca6ac['options']?_0x4ca6ac[_0x9788('0x19')][_0x9788('0x1c')]||null:null,'include':_0x4ca6ac['options']?_0x4ca6ac[_0x9788('0x19')]['include']?_[_0x9788('0x1f')](_0x4ca6ac[_0x9788('0x19')][_0x9788('0x1e')],function(_0x2bc258){return{'model':db[_0x2bc258[_0x9788('0x20')]],'as':_0x2bc258['as'],'attributes':_0x2bc258[_0x9788('0x1c')],'include':_0x2bc258['include']?_['map'](_0x2bc258[_0x9788('0x1e')],function(_0x3b12df){return{'model':db[_0x3b12df['model']],'as':_0x3b12df['as'],'attributes':_0x3b12df[_0x9788('0x1c')],'include':_0x3b12df['include']?_[_0x9788('0x1f')](_0x3b12df['include'],function(_0x255608){return{'model':db[_0x255608[_0x9788('0x20')]],'as':_0x255608['as'],'attributes':_0x255608['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x222a7d){logger[_0x9788('0xc')](_0x9788('0x21'),_0x4ca6ac);logger[_0x9788('0xf')](_0x9788('0x21'),_0x4ca6ac,JSON[_0x9788('0x23')](_0x222a7d));_0x4115eb(_0x222a7d);})[_0x9788('0x15')](function(_0x3c58b7){logger[_0x9788('0x11')](_0x9788('0x21'),_0x3c58b7[_0x9788('0x13')],_0x4ca6ac);_0x2a1c87(_0x122168[_0x9788('0x11')](0x1f4,_0x3c58b7[_0x9788('0x13')]));});});};
\ No newline at end of file
index f5eacef..26da577 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a9e=['/:id/tags','post','put','/:id','update','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','get','index','isAuthenticated','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7a9e,0x1a8));var _0xe7a9=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x7a9e[_0xfae23b];return _0x200640;};'use strict';var multer=require(_0xe7a9('0x0'));var util=require('util');var path=require(_0xe7a9('0x1'));var timeout=require(_0xe7a9('0x2'));var express=require(_0xe7a9('0x3'));var router=express[_0xe7a9('0x4')]();var fs_extra=require(_0xe7a9('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xe7a9('0x6'));var config=require(_0xe7a9('0x7'));var controller=require(_0xe7a9('0x8'));router[_0xe7a9('0x9')]('/',auth['isAuthenticated'](),controller[_0xe7a9('0xa')]);router[_0xe7a9('0x9')]('/:id',auth[_0xe7a9('0xb')](),controller['show']);router[_0xe7a9('0x9')]('/:id/fields',auth[_0xe7a9('0xb')](),controller['getFields']);router[_0xe7a9('0x9')](_0xe7a9('0xc'),auth[_0xe7a9('0xb')](),controller[_0xe7a9('0xd')]);router[_0xe7a9('0x9')](_0xe7a9('0xe'),auth[_0xe7a9('0xb')](),controller[_0xe7a9('0xf')]);router[_0xe7a9('0x9')](_0xe7a9('0x10'),auth[_0xe7a9('0xb')](),controller['getTags']);router[_0xe7a9('0x11')]('/',auth[_0xe7a9('0xb')](),controller['create']);router[_0xe7a9('0x11')](_0xe7a9('0x10'),auth[_0xe7a9('0xb')](),controller['setTags']);router[_0xe7a9('0x12')](_0xe7a9('0x13'),auth['isAuthenticated'](),controller[_0xe7a9('0x14')]);router['delete'](_0xe7a9('0x13'),auth['isAuthenticated'](),controller['destroy']);module[_0xe7a9('0x15')]=router;
\ No newline at end of file
+var _0x4b3f=['/:id/descriptions','getDescriptions','/:id/tags','getTags','post','update','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskConfiguration.controller','isAuthenticated','index','/:id','show','get','/:id/fields','getFields','getSubjects'];(function(_0x11dacd,_0x2bc85a){var _0x145867=function(_0x338066){while(--_0x338066){_0x11dacd['push'](_0x11dacd['shift']());}};_0x145867(++_0x2bc85a);}(_0x4b3f,0x165));var _0xf4b3=function(_0x3a94fd,_0x4cf647){_0x3a94fd=_0x3a94fd-0x0;var _0x5ab5e6=_0x4b3f[_0x3a94fd];return _0x5ab5e6;};'use strict';var multer=require(_0xf4b3('0x0'));var util=require(_0xf4b3('0x1'));var path=require(_0xf4b3('0x2'));var timeout=require(_0xf4b3('0x3'));var express=require('express');var router=express[_0xf4b3('0x4')]();var fs_extra=require(_0xf4b3('0x5'));var auth=require(_0xf4b3('0x6'));var interaction=require(_0xf4b3('0x7'));var config=require(_0xf4b3('0x8'));var controller=require(_0xf4b3('0x9'));router['get']('/',auth[_0xf4b3('0xa')](),controller[_0xf4b3('0xb')]);router['get'](_0xf4b3('0xc'),auth['isAuthenticated'](),controller[_0xf4b3('0xd')]);router[_0xf4b3('0xe')](_0xf4b3('0xf'),auth[_0xf4b3('0xa')](),controller[_0xf4b3('0x10')]);router['get']('/:id/subjects',auth[_0xf4b3('0xa')](),controller[_0xf4b3('0x11')]);router[_0xf4b3('0xe')](_0xf4b3('0x12'),auth[_0xf4b3('0xa')](),controller[_0xf4b3('0x13')]);router['get'](_0xf4b3('0x14'),auth[_0xf4b3('0xa')](),controller[_0xf4b3('0x15')]);router[_0xf4b3('0x16')]('/',auth[_0xf4b3('0xa')](),controller['create']);router[_0xf4b3('0x16')](_0xf4b3('0x14'),auth[_0xf4b3('0xa')](),controller['setTags']);router['put'](_0xf4b3('0xc'),auth[_0xf4b3('0xa')](),controller[_0xf4b3('0x17')]);router['delete'](_0xf4b3('0xc'),auth[_0xf4b3('0xa')](),controller[_0xf4b3('0x18')]);module['exports']=router;
\ No newline at end of file
index b31fff3..0ea70b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d84=['sequelize','STRING'];(function(_0x1d326a,_0x89b53){var _0x5804d5=function(_0x19376c){while(--_0x19376c){_0x1d326a['push'](_0x1d326a['shift']());}};_0x5804d5(++_0x89b53);}(_0x7d84,0x1f4));var _0x47d8=function(_0x350aeb,_0x3d265a){_0x350aeb=_0x350aeb-0x0;var _0x3c5273=_0x7d84[_0x350aeb];return _0x3c5273;};'use strict';var Sequelize=require(_0x47d8('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x47d8('0x1')]}};
\ No newline at end of file
+var _0x17d2=['sequelize'];(function(_0x3d7652,_0x3afc26){var _0x496a7a=function(_0x30f934){while(--_0x30f934){_0x3d7652['push'](_0x3d7652['shift']());}};_0x496a7a(++_0x3afc26);}(_0x17d2,0x12d));var _0x217d=function(_0x2e4f00,_0x4bda64){_0x2e4f00=_0x2e4f00-0x0;var _0x35e745=_0x17d2[_0x2e4f00];return _0x35e745;};'use strict';var Sequelize=require(_0x217d('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 3c31655..387fe88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ceb=['create','body','update','getFields','findOne','getSubjects','getDescriptions','FreshdeskField','Tag','getTags','setTags','ids','eml-format','zip-dir','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','then','destroy','error','stack','name','send','index','map','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','FreshdeskConfiguration','includeAll','include','findAll','rows','params','rawAttributes','filters','find','catch'];(function(_0x207e20,_0x1852f0){var _0x12ad0e=function(_0x5c3a12){while(--_0x5c3a12){_0x207e20['push'](_0x207e20['shift']());}};_0x12ad0e(++_0x1852f0);}(_0x2ceb,0x150));var _0xb2ce=function(_0x25fa25,_0x26b171){_0x25fa25=_0x25fa25-0x0;var _0x1a9bbd=_0x2ceb[_0x25fa25];return _0x1a9bbd;};'use strict';var emlformat=require(_0xb2ce('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb2ce('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xb2ce('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xb2ce('0x3'));var util=require(_0xb2ce('0x4'));var path=require('path');var sox=require(_0xb2ce('0x5'));var csv=require(_0xb2ce('0x6'));var ejs=require(_0xb2ce('0x7'));var fs=require('fs');var fs_extra=require(_0xb2ce('0x8'));var _=require(_0xb2ce('0x9'));var squel=require(_0xb2ce('0xa'));var crypto=require(_0xb2ce('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb2ce('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xb2ce('0xd'));var qs=require(_0xb2ce('0xe'));var as=require(_0xb2ce('0xf'));var hardwareService=require(_0xb2ce('0x10'));var logger=require(_0xb2ce('0x11'))(_0xb2ce('0x12'));var utils=require('../../config/utils');var config=require(_0xb2ce('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x57b11c,_0x1629f9){_0x1629f9=_0x1629f9||0xcc;return function(_0x49124c){if(_0x49124c){return _0x57b11c[_0xb2ce('0x14')](_0x1629f9);}return _0x57b11c[_0xb2ce('0x15')](_0x1629f9)[_0xb2ce('0x16')]();};}function respondWithResult(_0x3626c8,_0x25827b){_0x25827b=_0x25827b||0xc8;return function(_0x2bcccb){if(_0x2bcccb){return _0x3626c8[_0xb2ce('0x15')](_0x25827b)[_0xb2ce('0x17')](_0x2bcccb);}};}function respondWithFilteredResult(_0x28325f,_0xff214e){return function(_0x803a85){if(_0x803a85){var _0x332039=typeof _0xff214e['offset']===_0xb2ce('0x18')&&typeof _0xff214e[_0xb2ce('0x19')]===_0xb2ce('0x18');var _0x182303=_0x803a85[_0xb2ce('0x1a')];var _0x167e85=_0x332039?0x0:_0xff214e['offset'];var _0x3b6b14=_0x332039?_0x803a85[_0xb2ce('0x1a')]:_0xff214e[_0xb2ce('0x1b')]+_0xff214e[_0xb2ce('0x19')];var _0x2e7532;if(_0x3b6b14>=_0x182303){_0x3b6b14=_0x182303;_0x2e7532=0xc8;}else{_0x2e7532=0xce;}_0x28325f['status'](_0x2e7532);return _0x28325f[_0xb2ce('0x1c')](_0xb2ce('0x1d'),_0x167e85+'-'+_0x3b6b14+'/'+_0x182303)['json'](_0x803a85);}return null;};}function patchUpdates(_0x36cea1){return function(_0x145226){try{jsonpatch[_0xb2ce('0x1e')](_0x145226,_0x36cea1,!![]);}catch(_0x53f707){return BPromise['reject'](_0x53f707);}return _0x145226[_0xb2ce('0x1f')]();};}function saveUpdates(_0xad930f,_0x4e930b){return function(_0x4eaa75){if(_0x4eaa75){return _0x4eaa75['update'](_0xad930f)[_0xb2ce('0x20')](function(_0x1d6156){return _0x1d6156;});}return null;};}function removeEntity(_0x4f7763,_0x41ffc6){return function(_0x1b6a87){if(_0x1b6a87){return _0x1b6a87[_0xb2ce('0x21')]()['then'](function(){_0x4f7763[_0xb2ce('0x15')](0xcc)[_0xb2ce('0x16')]();});}};}function handleEntityNotFound(_0x418ff4,_0xa381f3){return function(_0x8e0dc8){if(!_0x8e0dc8){_0x418ff4['sendStatus'](0x194);}return _0x8e0dc8;};}function handleError(_0x2d8d12,_0x3c1264){_0x3c1264=_0x3c1264||0x1f4;return function(_0x4d9d88){logger[_0xb2ce('0x22')](_0x4d9d88[_0xb2ce('0x23')]);if(_0x4d9d88[_0xb2ce('0x24')]){delete _0x4d9d88[_0xb2ce('0x24')];}_0x2d8d12[_0xb2ce('0x15')](_0x3c1264)[_0xb2ce('0x25')](_0x4d9d88);};}exports[_0xb2ce('0x26')]=function(_0x123648,_0x70e774){var _0x4bfbcd={},_0x461a92={},_0xb0c3ae={'count':0x0,'rows':[]};var _0x317b78=_[_0xb2ce('0x27')](db['FreshdeskConfiguration']['rawAttributes'],function(_0x2551f2){return{'name':_0x2551f2[_0xb2ce('0x28')],'type':_0x2551f2[_0xb2ce('0x29')][_0xb2ce('0x2a')]};});_0x461a92[_0xb2ce('0x2b')]=_[_0xb2ce('0x27')](_0x317b78,'name');_0x461a92[_0xb2ce('0x2c')]=_[_0xb2ce('0x2d')](_0x123648['query']);_0x461a92['filters']=_[_0xb2ce('0x2e')](_0x461a92[_0xb2ce('0x2b')],_0x461a92[_0xb2ce('0x2c')]);_0x4bfbcd['attributes']=_['intersection'](_0x461a92[_0xb2ce('0x2b')],qs[_0xb2ce('0x2f')](_0x123648[_0xb2ce('0x2c')]['fields']));_0x4bfbcd[_0xb2ce('0x30')]=_0x4bfbcd[_0xb2ce('0x30')][_0xb2ce('0x31')]?_0x4bfbcd[_0xb2ce('0x30')]:_0x461a92[_0xb2ce('0x2b')];if(!_0x123648[_0xb2ce('0x2c')][_0xb2ce('0x32')](_0xb2ce('0x33'))){_0x4bfbcd[_0xb2ce('0x19')]=qs[_0xb2ce('0x19')](_0x123648['query'][_0xb2ce('0x19')]);_0x4bfbcd[_0xb2ce('0x1b')]=qs[_0xb2ce('0x1b')](_0x123648[_0xb2ce('0x2c')][_0xb2ce('0x1b')]);}_0x4bfbcd[_0xb2ce('0x34')]=qs[_0xb2ce('0x35')](_0x123648[_0xb2ce('0x2c')][_0xb2ce('0x35')]);_0x4bfbcd[_0xb2ce('0x36')]=qs['filters'](_[_0xb2ce('0x37')](_0x123648[_0xb2ce('0x2c')],_0x461a92['filters']),_0x317b78);if(_0x123648['query'][_0xb2ce('0x38')]){_0x4bfbcd['where']=_[_0xb2ce('0x39')](_0x4bfbcd[_0xb2ce('0x36')],{'$or':_[_0xb2ce('0x27')](_0x317b78,function(_0x5b355d){if(_0x5b355d[_0xb2ce('0x29')]!=='VIRTUAL'){var _0x4ed3fb={};_0x4ed3fb[_0x5b355d[_0xb2ce('0x24')]]={'$like':'%'+_0x123648[_0xb2ce('0x2c')]['filter']+'%'};return _0x4ed3fb;}})});}_0x4bfbcd=_[_0xb2ce('0x39')]({},_0x4bfbcd,_0x123648[_0xb2ce('0x3a')]);var _0x12ff04={'where':_0x4bfbcd['where']};return db[_0xb2ce('0x3b')][_0xb2ce('0x1a')](_0x12ff04)[_0xb2ce('0x20')](function(_0x1bac9b){_0xb0c3ae['count']=_0x1bac9b;if(_0x123648['query'][_0xb2ce('0x3c')]){_0x4bfbcd[_0xb2ce('0x3d')]=[{'all':!![]}];}return db[_0xb2ce('0x3b')][_0xb2ce('0x3e')](_0x4bfbcd);})[_0xb2ce('0x20')](function(_0x4b3e99){_0xb0c3ae[_0xb2ce('0x3f')]=_0x4b3e99;return _0xb0c3ae;})[_0xb2ce('0x20')](respondWithFilteredResult(_0x70e774,_0x4bfbcd))['catch'](handleError(_0x70e774,null));};exports['show']=function(_0x362705,_0x19a7dd){var _0x288a8d={'raw':![],'where':{'id':_0x362705[_0xb2ce('0x40')]['id']}},_0xf966cb={};_0xf966cb[_0xb2ce('0x2b')]=_[_0xb2ce('0x2d')](db['FreshdeskConfiguration'][_0xb2ce('0x41')]);_0xf966cb['query']=_[_0xb2ce('0x2d')](_0x362705[_0xb2ce('0x2c')]);_0xf966cb[_0xb2ce('0x42')]=_[_0xb2ce('0x2e')](_0xf966cb[_0xb2ce('0x2b')],_0xf966cb['query']);_0x288a8d[_0xb2ce('0x30')]=_['intersection'](_0xf966cb['model'],qs[_0xb2ce('0x2f')](_0x362705[_0xb2ce('0x2c')][_0xb2ce('0x2f')]));_0x288a8d['attributes']=_0x288a8d[_0xb2ce('0x30')][_0xb2ce('0x31')]?_0x288a8d['attributes']:_0xf966cb[_0xb2ce('0x2b')];if(_0x362705[_0xb2ce('0x2c')][_0xb2ce('0x3c')]){_0x288a8d[_0xb2ce('0x3d')]=[{'all':!![]}];}_0x288a8d=_['merge']({},_0x288a8d,_0x362705[_0xb2ce('0x3a')]);return db[_0xb2ce('0x3b')][_0xb2ce('0x43')](_0x288a8d)['then'](handleEntityNotFound(_0x19a7dd,null))[_0xb2ce('0x20')](respondWithResult(_0x19a7dd,null))[_0xb2ce('0x44')](handleError(_0x19a7dd,null));};exports[_0xb2ce('0x45')]=function(_0x6d6803,_0x4db717){return db[_0xb2ce('0x3b')][_0xb2ce('0x45')](_0x6d6803[_0xb2ce('0x46')],{})[_0xb2ce('0x20')](respondWithResult(_0x4db717,0xc9))['catch'](handleError(_0x4db717,null));};exports[_0xb2ce('0x47')]=function(_0x1b6cd4,_0x26eb0b){if(_0x1b6cd4[_0xb2ce('0x46')]['id']){delete _0x1b6cd4[_0xb2ce('0x46')]['id'];}return db[_0xb2ce('0x3b')][_0xb2ce('0x43')]({'where':{'id':_0x1b6cd4[_0xb2ce('0x40')]['id']}})['then'](handleEntityNotFound(_0x26eb0b,null))[_0xb2ce('0x20')](saveUpdates(_0x1b6cd4[_0xb2ce('0x46')],null))[_0xb2ce('0x20')](respondWithResult(_0x26eb0b,null))[_0xb2ce('0x44')](handleError(_0x26eb0b,null));};exports[_0xb2ce('0x21')]=function(_0x25bcac,_0x3f43a9){return db[_0xb2ce('0x3b')]['find']({'where':{'id':_0x25bcac[_0xb2ce('0x40')]['id']}})[_0xb2ce('0x20')](handleEntityNotFound(_0x3f43a9,null))[_0xb2ce('0x20')](removeEntity(_0x3f43a9,null))[_0xb2ce('0x44')](handleError(_0x3f43a9,null));};exports[_0xb2ce('0x48')]=function(_0x1e635e,_0x41d0a7,_0x55490a){var _0x104f30={};var _0x37f30e={};var _0xf877f4;var _0x26ac7d;return db[_0xb2ce('0x3b')][_0xb2ce('0x49')]({'where':{'id':_0x1e635e[_0xb2ce('0x40')]['id']}})[_0xb2ce('0x20')](handleEntityNotFound(_0x41d0a7,null))[_0xb2ce('0x20')](function(_0x865715){if(_0x865715){_0xf877f4=_0x865715;_0x37f30e[_0xb2ce('0x2b')]=_[_0xb2ce('0x2d')](db['FreshdeskField'][_0xb2ce('0x41')]);_0x37f30e['query']=_[_0xb2ce('0x2d')](_0x1e635e[_0xb2ce('0x2c')]);_0x37f30e[_0xb2ce('0x42')]=_['intersection'](_0x37f30e[_0xb2ce('0x2b')],_0x37f30e['query']);_0x104f30['attributes']=_[_0xb2ce('0x2e')](_0x37f30e[_0xb2ce('0x2b')],qs[_0xb2ce('0x2f')](_0x1e635e[_0xb2ce('0x2c')][_0xb2ce('0x2f')]));_0x104f30[_0xb2ce('0x30')]=_0x104f30[_0xb2ce('0x30')][_0xb2ce('0x31')]?_0x104f30['attributes']:_0x37f30e['model'];_0x104f30[_0xb2ce('0x34')]=qs['sort'](_0x1e635e[_0xb2ce('0x2c')]['sort']);_0x104f30['where']=qs['filters'](_[_0xb2ce('0x37')](_0x1e635e[_0xb2ce('0x2c')],_0x37f30e[_0xb2ce('0x42')]));if(_0x1e635e[_0xb2ce('0x2c')][_0xb2ce('0x38')]){_0x104f30[_0xb2ce('0x36')]=_[_0xb2ce('0x39')](_0x104f30[_0xb2ce('0x36')],{'$or':_['map'](_0x104f30[_0xb2ce('0x30')],function(_0x463035){var _0x20a446={};_0x20a446[_0x463035]={'$like':'%'+_0x1e635e[_0xb2ce('0x2c')]['filter']+'%'};return _0x20a446;})});}_0x104f30=_[_0xb2ce('0x39')]({},_0x104f30,_0x1e635e[_0xb2ce('0x3a')]);return _0xf877f4[_0xb2ce('0x48')](_0x104f30);}})[_0xb2ce('0x20')](function(_0x37f3c5){if(_0x37f3c5){_0x26ac7d=_0x37f3c5[_0xb2ce('0x31')];if(!_0x1e635e[_0xb2ce('0x2c')]['hasOwnProperty'](_0xb2ce('0x33'))){_0x104f30['limit']=qs[_0xb2ce('0x19')](_0x1e635e[_0xb2ce('0x2c')]['limit']);_0x104f30['offset']=qs[_0xb2ce('0x1b')](_0x1e635e[_0xb2ce('0x2c')][_0xb2ce('0x1b')]);}return _0xf877f4[_0xb2ce('0x48')](_0x104f30);}})[_0xb2ce('0x20')](function(_0x30c20f){if(_0x30c20f){return _0x30c20f?{'count':_0x26ac7d,'rows':_0x30c20f}:null;}})['then'](respondWithResult(_0x41d0a7,null))[_0xb2ce('0x44')](handleError(_0x41d0a7,null));};exports[_0xb2ce('0x4a')]=function(_0xe19f0a,_0x4937d5,_0x29c0f3){var _0x3b03a2={};var _0x160471={};var _0x378b11;var _0x548959;return db[_0xb2ce('0x3b')][_0xb2ce('0x49')]({'where':{'id':_0xe19f0a['params']['id']}})[_0xb2ce('0x20')](handleEntityNotFound(_0x4937d5,null))['then'](function(_0x3af738){if(_0x3af738){_0x378b11=_0x3af738;_0x160471['model']=_[_0xb2ce('0x2d')](db['FreshdeskField']['rawAttributes']);_0x160471[_0xb2ce('0x2c')]=_[_0xb2ce('0x2d')](_0xe19f0a[_0xb2ce('0x2c')]);_0x160471['filters']=_['intersection'](_0x160471['model'],_0x160471[_0xb2ce('0x2c')]);_0x3b03a2[_0xb2ce('0x30')]=_['intersection'](_0x160471[_0xb2ce('0x2b')],qs['fields'](_0xe19f0a['query'][_0xb2ce('0x2f')]));_0x3b03a2['attributes']=_0x3b03a2[_0xb2ce('0x30')]['length']?_0x3b03a2[_0xb2ce('0x30')]:_0x160471[_0xb2ce('0x2b')];_0x3b03a2[_0xb2ce('0x34')]=qs['sort'](_0xe19f0a[_0xb2ce('0x2c')][_0xb2ce('0x35')]);_0x3b03a2['where']=qs[_0xb2ce('0x42')](_[_0xb2ce('0x37')](_0xe19f0a['query'],_0x160471[_0xb2ce('0x42')]));if(_0xe19f0a[_0xb2ce('0x2c')][_0xb2ce('0x38')]){_0x3b03a2[_0xb2ce('0x36')]=_[_0xb2ce('0x39')](_0x3b03a2[_0xb2ce('0x36')],{'$or':_[_0xb2ce('0x27')](_0x3b03a2[_0xb2ce('0x30')],function(_0x33a1b9){var _0x37fdd9={};_0x37fdd9[_0x33a1b9]={'$like':'%'+_0xe19f0a[_0xb2ce('0x2c')][_0xb2ce('0x38')]+'%'};return _0x37fdd9;})});}_0x3b03a2=_[_0xb2ce('0x39')]({},_0x3b03a2,_0xe19f0a['options']);return _0x378b11[_0xb2ce('0x4a')](_0x3b03a2);}})[_0xb2ce('0x20')](function(_0x515198){if(_0x515198){_0x548959=_0x515198['length'];if(!_0xe19f0a['query'][_0xb2ce('0x32')](_0xb2ce('0x33'))){_0x3b03a2[_0xb2ce('0x19')]=qs[_0xb2ce('0x19')](_0xe19f0a[_0xb2ce('0x2c')][_0xb2ce('0x19')]);_0x3b03a2['offset']=qs[_0xb2ce('0x1b')](_0xe19f0a[_0xb2ce('0x2c')][_0xb2ce('0x1b')]);}return _0x378b11[_0xb2ce('0x4a')](_0x3b03a2);}})[_0xb2ce('0x20')](function(_0xbc45ea){if(_0xbc45ea){return _0xbc45ea?{'count':_0x548959,'rows':_0xbc45ea}:null;}})[_0xb2ce('0x20')](respondWithResult(_0x4937d5,null))['catch'](handleError(_0x4937d5,null));};exports[_0xb2ce('0x4b')]=function(_0x492a48,_0x26d4c0,_0x501384){var _0x52dff3={};var _0x6cf8e9={};var _0x517d3b;var _0x3547d9;return db[_0xb2ce('0x3b')][_0xb2ce('0x49')]({'where':{'id':_0x492a48[_0xb2ce('0x40')]['id']}})[_0xb2ce('0x20')](handleEntityNotFound(_0x26d4c0,null))[_0xb2ce('0x20')](function(_0x39e28e){if(_0x39e28e){_0x517d3b=_0x39e28e;_0x6cf8e9[_0xb2ce('0x2b')]=_['keys'](db[_0xb2ce('0x4c')][_0xb2ce('0x41')]);_0x6cf8e9[_0xb2ce('0x2c')]=_[_0xb2ce('0x2d')](_0x492a48[_0xb2ce('0x2c')]);_0x6cf8e9[_0xb2ce('0x42')]=_[_0xb2ce('0x2e')](_0x6cf8e9[_0xb2ce('0x2b')],_0x6cf8e9[_0xb2ce('0x2c')]);_0x52dff3[_0xb2ce('0x30')]=_[_0xb2ce('0x2e')](_0x6cf8e9[_0xb2ce('0x2b')],qs['fields'](_0x492a48[_0xb2ce('0x2c')][_0xb2ce('0x2f')]));_0x52dff3[_0xb2ce('0x30')]=_0x52dff3['attributes']['length']?_0x52dff3[_0xb2ce('0x30')]:_0x6cf8e9[_0xb2ce('0x2b')];_0x52dff3['order']=qs[_0xb2ce('0x35')](_0x492a48[_0xb2ce('0x2c')][_0xb2ce('0x35')]);_0x52dff3[_0xb2ce('0x36')]=qs[_0xb2ce('0x42')](_[_0xb2ce('0x37')](_0x492a48[_0xb2ce('0x2c')],_0x6cf8e9[_0xb2ce('0x42')]));if(_0x492a48[_0xb2ce('0x2c')]['filter']){_0x52dff3[_0xb2ce('0x36')]=_[_0xb2ce('0x39')](_0x52dff3[_0xb2ce('0x36')],{'$or':_[_0xb2ce('0x27')](_0x52dff3[_0xb2ce('0x30')],function(_0x2b6a2b){var _0x3e7ff9={};_0x3e7ff9[_0x2b6a2b]={'$like':'%'+_0x492a48['query']['filter']+'%'};return _0x3e7ff9;})});}_0x52dff3=_['merge']({},_0x52dff3,_0x492a48[_0xb2ce('0x3a')]);return _0x517d3b[_0xb2ce('0x4b')](_0x52dff3);}})[_0xb2ce('0x20')](function(_0x1097f3){if(_0x1097f3){_0x3547d9=_0x1097f3[_0xb2ce('0x31')];if(!_0x492a48['query'][_0xb2ce('0x32')](_0xb2ce('0x33'))){_0x52dff3['limit']=qs[_0xb2ce('0x19')](_0x492a48[_0xb2ce('0x2c')][_0xb2ce('0x19')]);_0x52dff3['offset']=qs['offset'](_0x492a48['query']['offset']);}return _0x517d3b['getDescriptions'](_0x52dff3);}})[_0xb2ce('0x20')](function(_0x524148){if(_0x524148){return _0x524148?{'count':_0x3547d9,'rows':_0x524148}:null;}})[_0xb2ce('0x20')](respondWithResult(_0x26d4c0,null))[_0xb2ce('0x44')](handleError(_0x26d4c0,null));};exports['getTags']=function(_0x3e6876,_0x2d6386,_0x2809c6){var _0x31ee50={};var _0xd2a0ed={};var _0x15052b;var _0x3a8e9b;return db['FreshdeskConfiguration']['findOne']({'where':{'id':_0x3e6876[_0xb2ce('0x40')]['id']}})[_0xb2ce('0x20')](handleEntityNotFound(_0x2d6386,null))[_0xb2ce('0x20')](function(_0x41a6e9){if(_0x41a6e9){_0x15052b=_0x41a6e9;_0xd2a0ed[_0xb2ce('0x2b')]=_[_0xb2ce('0x2d')](db[_0xb2ce('0x4d')][_0xb2ce('0x41')]);_0xd2a0ed[_0xb2ce('0x2c')]=_['keys'](_0x3e6876[_0xb2ce('0x2c')]);_0xd2a0ed[_0xb2ce('0x42')]=_[_0xb2ce('0x2e')](_0xd2a0ed[_0xb2ce('0x2b')],_0xd2a0ed[_0xb2ce('0x2c')]);_0x31ee50['attributes']=_['intersection'](_0xd2a0ed[_0xb2ce('0x2b')],qs[_0xb2ce('0x2f')](_0x3e6876[_0xb2ce('0x2c')][_0xb2ce('0x2f')]));_0x31ee50[_0xb2ce('0x30')]=_0x31ee50[_0xb2ce('0x30')][_0xb2ce('0x31')]?_0x31ee50[_0xb2ce('0x30')]:_0xd2a0ed[_0xb2ce('0x2b')];_0x31ee50['order']=qs[_0xb2ce('0x35')](_0x3e6876[_0xb2ce('0x2c')][_0xb2ce('0x35')]);_0x31ee50['where']=qs[_0xb2ce('0x42')](_[_0xb2ce('0x37')](_0x3e6876['query'],_0xd2a0ed['filters']));if(_0x3e6876[_0xb2ce('0x2c')][_0xb2ce('0x38')]){_0x31ee50[_0xb2ce('0x36')]=_[_0xb2ce('0x39')](_0x31ee50[_0xb2ce('0x36')],{'$or':_[_0xb2ce('0x27')](_0x31ee50[_0xb2ce('0x30')],function(_0x4e1413){var _0x3ac0ef={};_0x3ac0ef[_0x4e1413]={'$like':'%'+_0x3e6876[_0xb2ce('0x2c')]['filter']+'%'};return _0x3ac0ef;})});}_0x31ee50=_[_0xb2ce('0x39')]({},_0x31ee50,_0x3e6876[_0xb2ce('0x3a')]);return _0x15052b['getTags'](_0x31ee50);}})[_0xb2ce('0x20')](function(_0x4ca97d){if(_0x4ca97d){_0x3a8e9b=_0x4ca97d['length'];if(!_0x3e6876[_0xb2ce('0x2c')][_0xb2ce('0x32')]('nolimit')){_0x31ee50[_0xb2ce('0x19')]=qs[_0xb2ce('0x19')](_0x3e6876[_0xb2ce('0x2c')]['limit']);_0x31ee50[_0xb2ce('0x1b')]=qs[_0xb2ce('0x1b')](_0x3e6876[_0xb2ce('0x2c')][_0xb2ce('0x1b')]);}return _0x15052b[_0xb2ce('0x4e')](_0x31ee50);}})[_0xb2ce('0x20')](function(_0x13b143){if(_0x13b143){return _0x13b143?{'count':_0x3a8e9b,'rows':_0x13b143}:null;}})[_0xb2ce('0x20')](respondWithResult(_0x2d6386,null))[_0xb2ce('0x44')](handleError(_0x2d6386,null));};exports[_0xb2ce('0x4f')]=function(_0x3ce34f,_0x3f5ce7,_0x132c8f){if(_0x3ce34f[_0xb2ce('0x46')]['id']){delete _0x3ce34f['body']['id'];}return db[_0xb2ce('0x3b')][_0xb2ce('0x49')]({'where':{'id':_0x3ce34f[_0xb2ce('0x40')]['id']}})[_0xb2ce('0x20')](handleEntityNotFound(_0x3f5ce7,null))['then'](function(_0x278ff9){if(_0x278ff9){return _0x278ff9[_0xb2ce('0x4f')](_0x3ce34f[_0xb2ce('0x46')][_0xb2ce('0x50')]||[]);}return null;})[_0xb2ce('0x20')](respondWithResult(_0x3f5ce7,null))[_0xb2ce('0x44')](handleError(_0x3f5ce7,null));};
\ No newline at end of file
+var _0x57ba=['undefined','limit','count','offset','set','Content-Range','apply','reject','update','then','error','name','send','index','map','rawAttributes','fieldName','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','merge','type','filter','options','FreshdeskConfiguration','include','findAll','rows','catch','params','length','includeAll','create','body','find','destroy','findOne','FreshdeskField','pick','getFields','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','status','end','json'];(function(_0xa77b43,_0xd3ad7d){var _0x5b584c=function(_0x1c483b){while(--_0x1c483b){_0xa77b43['push'](_0xa77b43['shift']());}};_0x5b584c(++_0xd3ad7d);}(_0x57ba,0x8c));var _0xa57b=function(_0x142a65,_0x36217d){_0x142a65=_0x142a65-0x0;var _0x13676f=_0x57ba[_0x142a65];return _0x13676f;};'use strict';var emlformat=require(_0xa57b('0x0'));var rimraf=require(_0xa57b('0x1'));var zipdir=require(_0xa57b('0x2'));var jsonpatch=require(_0xa57b('0x3'));var rp=require(_0xa57b('0x4'));var moment=require(_0xa57b('0x5'));var BPromise=require(_0xa57b('0x6'));var Mustache=require(_0xa57b('0x7'));var util=require('util');var path=require(_0xa57b('0x8'));var sox=require(_0xa57b('0x9'));var csv=require(_0xa57b('0xa'));var ejs=require(_0xa57b('0xb'));var fs=require('fs');var fs_extra=require(_0xa57b('0xc'));var _=require(_0xa57b('0xd'));var squel=require(_0xa57b('0xe'));var crypto=require(_0xa57b('0xf'));var jsforce=require(_0xa57b('0x10'));var deskjs=require(_0xa57b('0x11'));var toCsv=require(_0xa57b('0xa'));var querystring=require('querystring');var Papa=require(_0xa57b('0x12'));var Redis=require(_0xa57b('0x13'));var authService=require(_0xa57b('0x14'));var qs=require(_0xa57b('0x15'));var as=require(_0xa57b('0x16'));var hardwareService=require(_0xa57b('0x17'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa57b('0x18'));var db=require(_0xa57b('0x19'))['db'];function respondWithStatusCode(_0xf10290,_0x37579f){_0x37579f=_0x37579f||0xcc;return function(_0x2a7155){if(_0x2a7155){return _0xf10290[_0xa57b('0x1a')](_0x37579f);}return _0xf10290[_0xa57b('0x1b')](_0x37579f)[_0xa57b('0x1c')]();};}function respondWithResult(_0x524912,_0x4a8c11){_0x4a8c11=_0x4a8c11||0xc8;return function(_0x59a20a){if(_0x59a20a){return _0x524912[_0xa57b('0x1b')](_0x4a8c11)[_0xa57b('0x1d')](_0x59a20a);}};}function respondWithFilteredResult(_0x4f7d1d,_0x43d4e8){return function(_0x118f8a){if(_0x118f8a){var _0x31416b=typeof _0x43d4e8['offset']===_0xa57b('0x1e')&&typeof _0x43d4e8[_0xa57b('0x1f')]===_0xa57b('0x1e');var _0x4ab590=_0x118f8a[_0xa57b('0x20')];var _0xee3705=_0x31416b?0x0:_0x43d4e8[_0xa57b('0x21')];var _0x1713c4=_0x31416b?_0x118f8a[_0xa57b('0x20')]:_0x43d4e8['offset']+_0x43d4e8[_0xa57b('0x1f')];var _0x388102;if(_0x1713c4>=_0x4ab590){_0x1713c4=_0x4ab590;_0x388102=0xc8;}else{_0x388102=0xce;}_0x4f7d1d[_0xa57b('0x1b')](_0x388102);return _0x4f7d1d[_0xa57b('0x22')](_0xa57b('0x23'),_0xee3705+'-'+_0x1713c4+'/'+_0x4ab590)[_0xa57b('0x1d')](_0x118f8a);}return null;};}function patchUpdates(_0x495e11){return function(_0x3918eb){try{jsonpatch[_0xa57b('0x24')](_0x3918eb,_0x495e11,!![]);}catch(_0x2e9674){return BPromise[_0xa57b('0x25')](_0x2e9674);}return _0x3918eb['save']();};}function saveUpdates(_0x14f56b,_0x137c12){return function(_0x1ff651){if(_0x1ff651){return _0x1ff651[_0xa57b('0x26')](_0x14f56b)[_0xa57b('0x27')](function(_0x5a8bbb){return _0x5a8bbb;});}return null;};}function removeEntity(_0x296be0,_0x40ce7e){return function(_0x502def){if(_0x502def){return _0x502def['destroy']()[_0xa57b('0x27')](function(){_0x296be0[_0xa57b('0x1b')](0xcc)[_0xa57b('0x1c')]();});}};}function handleEntityNotFound(_0x4c3c86,_0x30d210){return function(_0x4bb292){if(!_0x4bb292){_0x4c3c86[_0xa57b('0x1a')](0x194);}return _0x4bb292;};}function handleError(_0x3d0254,_0x3be373){_0x3be373=_0x3be373||0x1f4;return function(_0x305091){logger[_0xa57b('0x28')](_0x305091['stack']);if(_0x305091['name']){delete _0x305091[_0xa57b('0x29')];}_0x3d0254[_0xa57b('0x1b')](_0x3be373)[_0xa57b('0x2a')](_0x305091);};}exports[_0xa57b('0x2b')]=function(_0x360204,_0x2165d6){var _0x12488f={},_0x2bbe9e={},_0x498a70={'count':0x0,'rows':[]};var _0x50812e=_[_0xa57b('0x2c')](db['FreshdeskConfiguration'][_0xa57b('0x2d')],function(_0x549ab7){return{'name':_0x549ab7[_0xa57b('0x2e')],'type':_0x549ab7['type']['key']};});_0x2bbe9e[_0xa57b('0x2f')]=_[_0xa57b('0x2c')](_0x50812e,'name');_0x2bbe9e[_0xa57b('0x30')]=_[_0xa57b('0x31')](_0x360204[_0xa57b('0x30')]);_0x2bbe9e['filters']=_[_0xa57b('0x32')](_0x2bbe9e['model'],_0x2bbe9e[_0xa57b('0x30')]);_0x12488f[_0xa57b('0x33')]=_[_0xa57b('0x32')](_0x2bbe9e[_0xa57b('0x2f')],qs[_0xa57b('0x34')](_0x360204[_0xa57b('0x30')]['fields']));_0x12488f['attributes']=_0x12488f[_0xa57b('0x33')]['length']?_0x12488f['attributes']:_0x2bbe9e['model'];if(!_0x360204['query'][_0xa57b('0x35')](_0xa57b('0x36'))){_0x12488f[_0xa57b('0x1f')]=qs[_0xa57b('0x1f')](_0x360204[_0xa57b('0x30')][_0xa57b('0x1f')]);_0x12488f['offset']=qs['offset'](_0x360204['query'][_0xa57b('0x21')]);}_0x12488f[_0xa57b('0x37')]=qs[_0xa57b('0x38')](_0x360204[_0xa57b('0x30')][_0xa57b('0x38')]);_0x12488f[_0xa57b('0x39')]=qs['filters'](_['pick'](_0x360204[_0xa57b('0x30')],_0x2bbe9e[_0xa57b('0x3a')]),_0x50812e);if(_0x360204[_0xa57b('0x30')]['filter']){_0x12488f['where']=_[_0xa57b('0x3b')](_0x12488f[_0xa57b('0x39')],{'$or':_[_0xa57b('0x2c')](_0x50812e,function(_0x36af1e){if(_0x36af1e[_0xa57b('0x3c')]!=='VIRTUAL'){var _0x546b4d={};_0x546b4d[_0x36af1e[_0xa57b('0x29')]]={'$like':'%'+_0x360204[_0xa57b('0x30')][_0xa57b('0x3d')]+'%'};return _0x546b4d;}})});}_0x12488f=_[_0xa57b('0x3b')]({},_0x12488f,_0x360204[_0xa57b('0x3e')]);var _0x5a6968={'where':_0x12488f[_0xa57b('0x39')]};return db[_0xa57b('0x3f')][_0xa57b('0x20')](_0x5a6968)['then'](function(_0x40b68b){_0x498a70[_0xa57b('0x20')]=_0x40b68b;if(_0x360204[_0xa57b('0x30')]['includeAll']){_0x12488f[_0xa57b('0x40')]=[{'all':!![]}];}return db[_0xa57b('0x3f')][_0xa57b('0x41')](_0x12488f);})[_0xa57b('0x27')](function(_0x5e6580){_0x498a70[_0xa57b('0x42')]=_0x5e6580;return _0x498a70;})['then'](respondWithFilteredResult(_0x2165d6,_0x12488f))[_0xa57b('0x43')](handleError(_0x2165d6,null));};exports['show']=function(_0x2565c3,_0x398463){var _0x31c343={'raw':![],'where':{'id':_0x2565c3[_0xa57b('0x44')]['id']}},_0x2c87bb={};_0x2c87bb[_0xa57b('0x2f')]=_[_0xa57b('0x31')](db[_0xa57b('0x3f')]['rawAttributes']);_0x2c87bb[_0xa57b('0x30')]=_['keys'](_0x2565c3[_0xa57b('0x30')]);_0x2c87bb[_0xa57b('0x3a')]=_[_0xa57b('0x32')](_0x2c87bb[_0xa57b('0x2f')],_0x2c87bb['query']);_0x31c343[_0xa57b('0x33')]=_[_0xa57b('0x32')](_0x2c87bb[_0xa57b('0x2f')],qs[_0xa57b('0x34')](_0x2565c3['query'][_0xa57b('0x34')]));_0x31c343[_0xa57b('0x33')]=_0x31c343[_0xa57b('0x33')][_0xa57b('0x45')]?_0x31c343['attributes']:_0x2c87bb[_0xa57b('0x2f')];if(_0x2565c3['query'][_0xa57b('0x46')]){_0x31c343[_0xa57b('0x40')]=[{'all':!![]}];}_0x31c343=_[_0xa57b('0x3b')]({},_0x31c343,_0x2565c3[_0xa57b('0x3e')]);return db[_0xa57b('0x3f')]['find'](_0x31c343)['then'](handleEntityNotFound(_0x398463,null))['then'](respondWithResult(_0x398463,null))['catch'](handleError(_0x398463,null));};exports[_0xa57b('0x47')]=function(_0x47826d,_0x203cad){return db['FreshdeskConfiguration'][_0xa57b('0x47')](_0x47826d[_0xa57b('0x48')],{})[_0xa57b('0x27')](respondWithResult(_0x203cad,0xc9))[_0xa57b('0x43')](handleError(_0x203cad,null));};exports['update']=function(_0x348d92,_0x3ab242){if(_0x348d92[_0xa57b('0x48')]['id']){delete _0x348d92[_0xa57b('0x48')]['id'];}return db[_0xa57b('0x3f')][_0xa57b('0x49')]({'where':{'id':_0x348d92['params']['id']}})[_0xa57b('0x27')](handleEntityNotFound(_0x3ab242,null))[_0xa57b('0x27')](saveUpdates(_0x348d92[_0xa57b('0x48')],null))['then'](respondWithResult(_0x3ab242,null))[_0xa57b('0x43')](handleError(_0x3ab242,null));};exports[_0xa57b('0x4a')]=function(_0x51b27d,_0x436fe9){return db[_0xa57b('0x3f')][_0xa57b('0x49')]({'where':{'id':_0x51b27d[_0xa57b('0x44')]['id']}})[_0xa57b('0x27')](handleEntityNotFound(_0x436fe9,null))['then'](removeEntity(_0x436fe9,null))[_0xa57b('0x43')](handleError(_0x436fe9,null));};exports['getFields']=function(_0x8821cd,_0x3c568f,_0xc33422){var _0x281fa1={};var _0x4606b4={};var _0x3c58a0;var _0x7a3947;return db[_0xa57b('0x3f')][_0xa57b('0x4b')]({'where':{'id':_0x8821cd[_0xa57b('0x44')]['id']}})[_0xa57b('0x27')](handleEntityNotFound(_0x3c568f,null))[_0xa57b('0x27')](function(_0x453020){if(_0x453020){_0x3c58a0=_0x453020;_0x4606b4[_0xa57b('0x2f')]=_[_0xa57b('0x31')](db[_0xa57b('0x4c')][_0xa57b('0x2d')]);_0x4606b4[_0xa57b('0x30')]=_[_0xa57b('0x31')](_0x8821cd[_0xa57b('0x30')]);_0x4606b4[_0xa57b('0x3a')]=_['intersection'](_0x4606b4[_0xa57b('0x2f')],_0x4606b4[_0xa57b('0x30')]);_0x281fa1[_0xa57b('0x33')]=_[_0xa57b('0x32')](_0x4606b4[_0xa57b('0x2f')],qs[_0xa57b('0x34')](_0x8821cd[_0xa57b('0x30')]['fields']));_0x281fa1['attributes']=_0x281fa1['attributes'][_0xa57b('0x45')]?_0x281fa1[_0xa57b('0x33')]:_0x4606b4[_0xa57b('0x2f')];_0x281fa1[_0xa57b('0x37')]=qs[_0xa57b('0x38')](_0x8821cd[_0xa57b('0x30')][_0xa57b('0x38')]);_0x281fa1[_0xa57b('0x39')]=qs['filters'](_[_0xa57b('0x4d')](_0x8821cd[_0xa57b('0x30')],_0x4606b4['filters']));if(_0x8821cd['query'][_0xa57b('0x3d')]){_0x281fa1[_0xa57b('0x39')]=_[_0xa57b('0x3b')](_0x281fa1[_0xa57b('0x39')],{'$or':_[_0xa57b('0x2c')](_0x281fa1[_0xa57b('0x33')],function(_0x37d112){var _0x393431={};_0x393431[_0x37d112]={'$like':'%'+_0x8821cd[_0xa57b('0x30')]['filter']+'%'};return _0x393431;})});}_0x281fa1=_[_0xa57b('0x3b')]({},_0x281fa1,_0x8821cd['options']);return _0x3c58a0[_0xa57b('0x4e')](_0x281fa1);}})[_0xa57b('0x27')](function(_0x18aef4){if(_0x18aef4){_0x7a3947=_0x18aef4[_0xa57b('0x45')];if(!_0x8821cd[_0xa57b('0x30')][_0xa57b('0x35')](_0xa57b('0x36'))){_0x281fa1[_0xa57b('0x1f')]=qs[_0xa57b('0x1f')](_0x8821cd[_0xa57b('0x30')][_0xa57b('0x1f')]);_0x281fa1['offset']=qs['offset'](_0x8821cd[_0xa57b('0x30')][_0xa57b('0x21')]);}return _0x3c58a0[_0xa57b('0x4e')](_0x281fa1);}})[_0xa57b('0x27')](function(_0x21821a){if(_0x21821a){return _0x21821a?{'count':_0x7a3947,'rows':_0x21821a}:null;}})[_0xa57b('0x27')](respondWithResult(_0x3c568f,null))['catch'](handleError(_0x3c568f,null));};exports[_0xa57b('0x4f')]=function(_0x53d943,_0x119b32,_0x416ea7){var _0x5a7c07={};var _0x3904b0={};var _0x25da53;var _0x428a00;return db[_0xa57b('0x3f')][_0xa57b('0x4b')]({'where':{'id':_0x53d943[_0xa57b('0x44')]['id']}})[_0xa57b('0x27')](handleEntityNotFound(_0x119b32,null))[_0xa57b('0x27')](function(_0x2f4fe0){if(_0x2f4fe0){_0x25da53=_0x2f4fe0;_0x3904b0[_0xa57b('0x2f')]=_['keys'](db['FreshdeskField'][_0xa57b('0x2d')]);_0x3904b0['query']=_['keys'](_0x53d943[_0xa57b('0x30')]);_0x3904b0[_0xa57b('0x3a')]=_[_0xa57b('0x32')](_0x3904b0[_0xa57b('0x2f')],_0x3904b0[_0xa57b('0x30')]);_0x5a7c07['attributes']=_[_0xa57b('0x32')](_0x3904b0[_0xa57b('0x2f')],qs['fields'](_0x53d943[_0xa57b('0x30')]['fields']));_0x5a7c07[_0xa57b('0x33')]=_0x5a7c07['attributes']['length']?_0x5a7c07[_0xa57b('0x33')]:_0x3904b0[_0xa57b('0x2f')];_0x5a7c07[_0xa57b('0x37')]=qs[_0xa57b('0x38')](_0x53d943[_0xa57b('0x30')][_0xa57b('0x38')]);_0x5a7c07['where']=qs['filters'](_[_0xa57b('0x4d')](_0x53d943[_0xa57b('0x30')],_0x3904b0['filters']));if(_0x53d943['query'][_0xa57b('0x3d')]){_0x5a7c07[_0xa57b('0x39')]=_['merge'](_0x5a7c07['where'],{'$or':_[_0xa57b('0x2c')](_0x5a7c07[_0xa57b('0x33')],function(_0x4315cc){var _0x1fa882={};_0x1fa882[_0x4315cc]={'$like':'%'+_0x53d943[_0xa57b('0x30')]['filter']+'%'};return _0x1fa882;})});}_0x5a7c07=_[_0xa57b('0x3b')]({},_0x5a7c07,_0x53d943[_0xa57b('0x3e')]);return _0x25da53[_0xa57b('0x4f')](_0x5a7c07);}})[_0xa57b('0x27')](function(_0x45574f){if(_0x45574f){_0x428a00=_0x45574f['length'];if(!_0x53d943[_0xa57b('0x30')]['hasOwnProperty'](_0xa57b('0x36'))){_0x5a7c07[_0xa57b('0x1f')]=qs[_0xa57b('0x1f')](_0x53d943['query'][_0xa57b('0x1f')]);_0x5a7c07[_0xa57b('0x21')]=qs[_0xa57b('0x21')](_0x53d943[_0xa57b('0x30')][_0xa57b('0x21')]);}return _0x25da53[_0xa57b('0x4f')](_0x5a7c07);}})['then'](function(_0x2430de){if(_0x2430de){return _0x2430de?{'count':_0x428a00,'rows':_0x2430de}:null;}})[_0xa57b('0x27')](respondWithResult(_0x119b32,null))[_0xa57b('0x43')](handleError(_0x119b32,null));};exports[_0xa57b('0x50')]=function(_0xf95db5,_0x5505d4,_0x69ea8e){var _0x19fea9={};var _0x3664b0={};var _0x47c6c5;var _0x28e220;return db[_0xa57b('0x3f')][_0xa57b('0x4b')]({'where':{'id':_0xf95db5['params']['id']}})[_0xa57b('0x27')](handleEntityNotFound(_0x5505d4,null))[_0xa57b('0x27')](function(_0x214c5a){if(_0x214c5a){_0x47c6c5=_0x214c5a;_0x3664b0[_0xa57b('0x2f')]=_[_0xa57b('0x31')](db['FreshdeskField'][_0xa57b('0x2d')]);_0x3664b0[_0xa57b('0x30')]=_['keys'](_0xf95db5[_0xa57b('0x30')]);_0x3664b0['filters']=_['intersection'](_0x3664b0[_0xa57b('0x2f')],_0x3664b0[_0xa57b('0x30')]);_0x19fea9['attributes']=_[_0xa57b('0x32')](_0x3664b0[_0xa57b('0x2f')],qs['fields'](_0xf95db5[_0xa57b('0x30')][_0xa57b('0x34')]));_0x19fea9[_0xa57b('0x33')]=_0x19fea9[_0xa57b('0x33')][_0xa57b('0x45')]?_0x19fea9[_0xa57b('0x33')]:_0x3664b0['model'];_0x19fea9[_0xa57b('0x37')]=qs[_0xa57b('0x38')](_0xf95db5[_0xa57b('0x30')]['sort']);_0x19fea9[_0xa57b('0x39')]=qs[_0xa57b('0x3a')](_[_0xa57b('0x4d')](_0xf95db5['query'],_0x3664b0[_0xa57b('0x3a')]));if(_0xf95db5['query'][_0xa57b('0x3d')]){_0x19fea9[_0xa57b('0x39')]=_[_0xa57b('0x3b')](_0x19fea9[_0xa57b('0x39')],{'$or':_[_0xa57b('0x2c')](_0x19fea9['attributes'],function(_0x5b8772){var _0x5bf03f={};_0x5bf03f[_0x5b8772]={'$like':'%'+_0xf95db5[_0xa57b('0x30')]['filter']+'%'};return _0x5bf03f;})});}_0x19fea9=_[_0xa57b('0x3b')]({},_0x19fea9,_0xf95db5[_0xa57b('0x3e')]);return _0x47c6c5['getDescriptions'](_0x19fea9);}})[_0xa57b('0x27')](function(_0x459b16){if(_0x459b16){_0x28e220=_0x459b16[_0xa57b('0x45')];if(!_0xf95db5[_0xa57b('0x30')]['hasOwnProperty'](_0xa57b('0x36'))){_0x19fea9[_0xa57b('0x1f')]=qs['limit'](_0xf95db5[_0xa57b('0x30')][_0xa57b('0x1f')]);_0x19fea9[_0xa57b('0x21')]=qs[_0xa57b('0x21')](_0xf95db5[_0xa57b('0x30')]['offset']);}return _0x47c6c5[_0xa57b('0x50')](_0x19fea9);}})[_0xa57b('0x27')](function(_0x3a4f4d){if(_0x3a4f4d){return _0x3a4f4d?{'count':_0x28e220,'rows':_0x3a4f4d}:null;}})[_0xa57b('0x27')](respondWithResult(_0x5505d4,null))['catch'](handleError(_0x5505d4,null));};exports[_0xa57b('0x51')]=function(_0x3a392c,_0x53d606,_0x3866ae){var _0x359cbb={};var _0x3b6233={};var _0x3c7146;var _0x2b2505;return db[_0xa57b('0x3f')]['findOne']({'where':{'id':_0x3a392c['params']['id']}})['then'](handleEntityNotFound(_0x53d606,null))[_0xa57b('0x27')](function(_0x34a04a){if(_0x34a04a){_0x3c7146=_0x34a04a;_0x3b6233[_0xa57b('0x2f')]=_['keys'](db[_0xa57b('0x52')][_0xa57b('0x2d')]);_0x3b6233[_0xa57b('0x30')]=_[_0xa57b('0x31')](_0x3a392c[_0xa57b('0x30')]);_0x3b6233[_0xa57b('0x3a')]=_[_0xa57b('0x32')](_0x3b6233['model'],_0x3b6233[_0xa57b('0x30')]);_0x359cbb[_0xa57b('0x33')]=_['intersection'](_0x3b6233[_0xa57b('0x2f')],qs[_0xa57b('0x34')](_0x3a392c[_0xa57b('0x30')][_0xa57b('0x34')]));_0x359cbb[_0xa57b('0x33')]=_0x359cbb[_0xa57b('0x33')][_0xa57b('0x45')]?_0x359cbb['attributes']:_0x3b6233[_0xa57b('0x2f')];_0x359cbb[_0xa57b('0x37')]=qs['sort'](_0x3a392c['query']['sort']);_0x359cbb[_0xa57b('0x39')]=qs[_0xa57b('0x3a')](_[_0xa57b('0x4d')](_0x3a392c[_0xa57b('0x30')],_0x3b6233['filters']));if(_0x3a392c[_0xa57b('0x30')][_0xa57b('0x3d')]){_0x359cbb[_0xa57b('0x39')]=_[_0xa57b('0x3b')](_0x359cbb[_0xa57b('0x39')],{'$or':_[_0xa57b('0x2c')](_0x359cbb['attributes'],function(_0x255de7){var _0x59e646={};_0x59e646[_0x255de7]={'$like':'%'+_0x3a392c[_0xa57b('0x30')][_0xa57b('0x3d')]+'%'};return _0x59e646;})});}_0x359cbb=_[_0xa57b('0x3b')]({},_0x359cbb,_0x3a392c[_0xa57b('0x3e')]);return _0x3c7146['getTags'](_0x359cbb);}})[_0xa57b('0x27')](function(_0x16142b){if(_0x16142b){_0x2b2505=_0x16142b[_0xa57b('0x45')];if(!_0x3a392c[_0xa57b('0x30')][_0xa57b('0x35')](_0xa57b('0x36'))){_0x359cbb[_0xa57b('0x1f')]=qs[_0xa57b('0x1f')](_0x3a392c[_0xa57b('0x30')][_0xa57b('0x1f')]);_0x359cbb[_0xa57b('0x21')]=qs[_0xa57b('0x21')](_0x3a392c[_0xa57b('0x30')][_0xa57b('0x21')]);}return _0x3c7146[_0xa57b('0x51')](_0x359cbb);}})[_0xa57b('0x27')](function(_0x790647){if(_0x790647){return _0x790647?{'count':_0x2b2505,'rows':_0x790647}:null;}})[_0xa57b('0x27')](respondWithResult(_0x53d606,null))[_0xa57b('0x43')](handleError(_0x53d606,null));};exports[_0xa57b('0x53')]=function(_0x22e92e,_0x343d1d,_0x1e9da6){if(_0x22e92e[_0xa57b('0x48')]['id']){delete _0x22e92e[_0xa57b('0x48')]['id'];}return db['FreshdeskConfiguration'][_0xa57b('0x4b')]({'where':{'id':_0x22e92e['params']['id']}})['then'](handleEntityNotFound(_0x343d1d,null))[_0xa57b('0x27')](function(_0x1b9aeb){if(_0x1b9aeb){return _0x1b9aeb[_0xa57b('0x53')](_0x22e92e[_0xa57b('0x48')][_0xa57b('0x54')]||[]);}return null;})[_0xa57b('0x27')](respondWithResult(_0x343d1d,null))[_0xa57b('0x43')](handleError(_0x343d1d,null));};
\ No newline at end of file
index 05c7d2f..4ef10bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5c3=['request-promise','rimraf','./intFreshdeskConfiguration.attributes','exports','define','FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','api','moment'];(function(_0x4c2c73,_0x208f85){var _0x53e82a=function(_0x3269a5){while(--_0x3269a5){_0x4c2c73['push'](_0x4c2c73['shift']());}};_0x53e82a(++_0x208f85);}(_0xa5c3,0x75));var _0x3a5c=function(_0x4addec,_0x4b90ae){_0x4addec=_0x4addec-0x0;var _0xc4f5ca=_0xa5c3[_0x4addec];return _0xc4f5ca;};'use strict';var _=require(_0x3a5c('0x0'));var util=require(_0x3a5c('0x1'));var logger=require('../../config/logger')(_0x3a5c('0x2'));var moment=require(_0x3a5c('0x3'));var BPromise=require('bluebird');var rp=require(_0x3a5c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3a5c('0x5'));var config=require('../../config/environment');var attributes=require(_0x3a5c('0x6'));module[_0x3a5c('0x7')]=function(_0x1ee09c,_0x243941){return _0x1ee09c[_0x3a5c('0x8')](_0x3a5c('0x9'),attributes,{'tableName':_0x3a5c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb1ed=['request-promise','path','rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','define','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x33fb17,_0x1a992c){var _0x4a015c=function(_0x71d47d){while(--_0x71d47d){_0x33fb17['push'](_0x33fb17['shift']());}};_0x4a015c(++_0x1a992c);}(_0xb1ed,0x11a));var _0xdb1e=function(_0x15718e,_0x2f5096){_0x15718e=_0x15718e-0x0;var _0xf3b1d2=_0xb1ed[_0x15718e];return _0xf3b1d2;};'use strict';var _=require(_0xdb1e('0x0'));var util=require(_0xdb1e('0x1'));var logger=require(_0xdb1e('0x2'))(_0xdb1e('0x3'));var moment=require(_0xdb1e('0x4'));var BPromise=require(_0xdb1e('0x5'));var rp=require(_0xdb1e('0x6'));var fs=require('fs');var path=require(_0xdb1e('0x7'));var rimraf=require(_0xdb1e('0x8'));var config=require(_0xdb1e('0x9'));var attributes=require(_0xdb1e('0xa'));module['exports']=function(_0x5149a4,_0x434646){return _0x5149a4[_0xdb1e('0xb')]('FreshdeskConfiguration',attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 88c80ac..8b41edf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f79=['http','request','then','info','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0x6f79,0x1d9));var _0x96f7=function(_0x39eb24,_0x18cf5e){_0x39eb24=_0x39eb24-0x0;var _0x6fbcb8=_0x6f79[_0x39eb24];return _0x6fbcb8;};'use strict';var _=require(_0x96f7('0x0'));var util=require(_0x96f7('0x1'));var moment=require(_0x96f7('0x2'));var BPromise=require(_0x96f7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x96f7('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x96f7('0x5'))(_0x96f7('0x6'));var config=require(_0x96f7('0x7'));var jayson=require(_0x96f7('0x8'));var client=jayson[_0x96f7('0x9')][_0x96f7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5c8b99,_0x51b2dd,_0x1cba30){return new BPromise(function(_0xa41ccd,_0x5f3d59){return client[_0x96f7('0xb')](_0x5c8b99,_0x1cba30)[_0x96f7('0xc')](function(_0xef48c1){logger[_0x96f7('0xd')](_0x96f7('0xe'),_0x51b2dd,_0x96f7('0xf'));logger['debug'](_0x96f7('0x10'),_0x51b2dd,_0x96f7('0xf'),JSON[_0x96f7('0x11')](_0xef48c1));if(_0xef48c1[_0x96f7('0x12')]){if(_0xef48c1[_0x96f7('0x12')]['code']===0x1f4){logger[_0x96f7('0x12')](_0x96f7('0xe'),_0x51b2dd,_0xef48c1[_0x96f7('0x12')][_0x96f7('0x13')]);return _0x5f3d59(_0xef48c1[_0x96f7('0x12')][_0x96f7('0x13')]);}logger[_0x96f7('0x12')](_0x96f7('0xe'),_0x51b2dd,_0xef48c1[_0x96f7('0x12')][_0x96f7('0x13')]);return _0xa41ccd(_0xef48c1[_0x96f7('0x12')][_0x96f7('0x13')]);}else{logger[_0x96f7('0xd')](_0x96f7('0xe'),_0x51b2dd,'request\x20sent');_0xa41ccd(_0xef48c1[_0x96f7('0x14')][_0x96f7('0x13')]);}})['catch'](function(_0x24e237){logger[_0x96f7('0x12')](_0x96f7('0xe'),_0x51b2dd,_0x24e237);_0x5f3d59(_0x24e237);});});}
\ No newline at end of file
+var _0x4f67=['ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','then','info','FreshdeskConfiguration,\x20%s,\x20%s','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','lodash','moment','bluebird','randomstring'];(function(_0x3f0042,_0x28f8af){var _0x52554c=function(_0x197e76){while(--_0x197e76){_0x3f0042['push'](_0x3f0042['shift']());}};_0x52554c(++_0x28f8af);}(_0x4f67,0x94));var _0x74f6=function(_0x51d71a,_0x596fda){_0x51d71a=_0x51d71a-0x0;var _0xff01f1=_0x4f67[_0x51d71a];return _0xff01f1;};'use strict';var _=require(_0x74f6('0x0'));var util=require('util');var moment=require(_0x74f6('0x1'));var BPromise=require(_0x74f6('0x2'));var rs=require(_0x74f6('0x3'));var fs=require('fs');var Redis=require(_0x74f6('0x4'));var db=require(_0x74f6('0x5'))['db'];var utils=require(_0x74f6('0x6'));var logger=require('../../config/logger')(_0x74f6('0x7'));var config=require(_0x74f6('0x8'));var jayson=require(_0x74f6('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x445b92,_0x9451ee,_0x17b564){return new BPromise(function(_0x32adff,_0x4610b2){return client['request'](_0x445b92,_0x17b564)[_0x74f6('0xa')](function(_0x3ad2c9){logger[_0x74f6('0xb')](_0x74f6('0xc'),_0x9451ee,'request\x20sent');logger[_0x74f6('0xd')](_0x74f6('0xe'),_0x9451ee,_0x74f6('0xf'),JSON['stringify'](_0x3ad2c9));if(_0x3ad2c9[_0x74f6('0x10')]){if(_0x3ad2c9[_0x74f6('0x10')]['code']===0x1f4){logger[_0x74f6('0x10')](_0x74f6('0xc'),_0x9451ee,_0x3ad2c9[_0x74f6('0x10')][_0x74f6('0x11')]);return _0x4610b2(_0x3ad2c9[_0x74f6('0x10')]['message']);}logger[_0x74f6('0x10')](_0x74f6('0xc'),_0x9451ee,_0x3ad2c9[_0x74f6('0x10')][_0x74f6('0x11')]);return _0x32adff(_0x3ad2c9[_0x74f6('0x10')][_0x74f6('0x11')]);}else{logger[_0x74f6('0xb')](_0x74f6('0xc'),_0x9451ee,_0x74f6('0xf'));_0x32adff(_0x3ad2c9[_0x74f6('0x12')][_0x74f6('0x11')]);}})['catch'](function(_0x86afc0){logger[_0x74f6('0x10')](_0x74f6('0xc'),_0x9451ee,_0x86afc0);_0x4610b2(_0x86afc0);});});}
\ No newline at end of file
index 373c380..f7177a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb04=['put','delete','destroy','exports','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','isAuthenticated','index','get','/:id','post'];(function(_0x3e590f,_0x2e6c17){var _0x9d1468=function(_0xad754a){while(--_0xad754a){_0x3e590f['push'](_0x3e590f['shift']());}};_0x9d1468(++_0x2e6c17);}(_0xcb04,0x1b4));var _0x4cb0=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xcb04[_0x14add3];return _0x4a174f;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x4cb0('0x0'));var router=express[_0x4cb0('0x1')]();var fs_extra=require(_0x4cb0('0x2'));var auth=require(_0x4cb0('0x3'));var interaction=require(_0x4cb0('0x4'));var config=require(_0x4cb0('0x5'));var controller=require(_0x4cb0('0x6'));router['get']('/',auth[_0x4cb0('0x7')](),controller[_0x4cb0('0x8')]);router[_0x4cb0('0x9')](_0x4cb0('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x4cb0('0xb')]('/',auth[_0x4cb0('0x7')](),controller['create']);router[_0x4cb0('0xc')](_0x4cb0('0xa'),auth[_0x4cb0('0x7')](),controller['update']);router[_0x4cb0('0xd')]('/:id',auth[_0x4cb0('0x7')](),controller[_0x4cb0('0xe')]);module[_0x4cb0('0xf')]=router;
\ No newline at end of file
+var _0x0187=['index','/:id','post','create','put','update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get','isAuthenticated'];(function(_0x200276,_0x3a39b5){var _0x496325=function(_0x36551d){while(--_0x36551d){_0x200276['push'](_0x200276['shift']());}};_0x496325(++_0x3a39b5);}(_0x0187,0x148));var _0x7018=function(_0x56756b,_0x3e8cc7){_0x56756b=_0x56756b-0x0;var _0xa3002=_0x0187[_0x56756b];return _0xa3002;};'use strict';var multer=require(_0x7018('0x0'));var util=require(_0x7018('0x1'));var path=require(_0x7018('0x2'));var timeout=require(_0x7018('0x3'));var express=require(_0x7018('0x4'));var router=express['Router']();var fs_extra=require(_0x7018('0x5'));var auth=require(_0x7018('0x6'));var interaction=require(_0x7018('0x7'));var config=require(_0x7018('0x8'));var controller=require(_0x7018('0x9'));router[_0x7018('0xa')]('/',auth[_0x7018('0xb')](),controller[_0x7018('0xc')]);router[_0x7018('0xa')](_0x7018('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x7018('0xe')]('/',auth[_0x7018('0xb')](),controller[_0x7018('0xf')]);router[_0x7018('0x10')](_0x7018('0xd'),auth[_0x7018('0xb')](),controller[_0x7018('0x11')]);router[_0x7018('0x12')](_0x7018('0xd'),auth[_0x7018('0xb')](),controller[_0x7018('0x13')]);module['exports']=router;
\ No newline at end of file
index 16639cb..ae11cb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48db=['picklist','STRING','ENUM','customVariable','sequelize','exports','string','variable','keyValue'];(function(_0x3387a0,_0x10ad95){var _0x2dddb2=function(_0x8289e5){while(--_0x8289e5){_0x3387a0['push'](_0x3387a0['shift']());}};_0x2dddb2(++_0x10ad95);}(_0x48db,0xee));var _0xb48d=function(_0x200b72,_0x51d00b){_0x200b72=_0x200b72-0x0;var _0x3bf594=_0x48db[_0x200b72];return _0x3bf594;};'use strict';var Sequelize=require(_0xb48d('0x0'));module[_0xb48d('0x1')]={'type':{'type':Sequelize['ENUM'](_0xb48d('0x2'),_0xb48d('0x3'),'customVariable',_0xb48d('0x4'),_0xb48d('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0xb48d('0x6')]},'key':{'type':Sequelize[_0xb48d('0x6')]},'keyType':{'type':Sequelize[_0xb48d('0x7')](_0xb48d('0x2'),'variable',_0xb48d('0x8'))},'keyContent':{'type':Sequelize[_0xb48d('0x6')]},'idField':{'type':Sequelize[_0xb48d('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb48d('0x6')]}};
\ No newline at end of file
+var _0x0ceb=['variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string'];(function(_0x2b8d11,_0x21a34f){var _0x14f706=function(_0x3611cd){while(--_0x3611cd){_0x2b8d11['push'](_0x2b8d11['shift']());}};_0x14f706(++_0x21a34f);}(_0x0ceb,0xc4));var _0xb0ce=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x0ceb[_0x42cae2];return _0x5f256f;};'use strict';var Sequelize=require(_0xb0ce('0x0'));module[_0xb0ce('0x1')]={'type':{'type':Sequelize[_0xb0ce('0x2')](_0xb0ce('0x3'),_0xb0ce('0x4'),_0xb0ce('0x5'),_0xb0ce('0x6'),_0xb0ce('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0xb0ce('0x8')]},'key':{'type':Sequelize[_0xb0ce('0x8')]},'keyType':{'type':Sequelize[_0xb0ce('0x2')](_0xb0ce('0x3'),'variable',_0xb0ce('0x5'))},'keyContent':{'type':Sequelize[_0xb0ce('0x8')]},'idField':{'type':Sequelize[_0xb0ce('0x8')]},'nameField':{'type':Sequelize[_0xb0ce('0x8')]},'customField':{'type':Sequelize[_0xb0ce('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb0ce('0x8')]}};
\ No newline at end of file
index 9b6c07a..1ba12b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9a7=['merge','VIRTUAL','name','options','includeAll','include','rows','catch','show','params','rawAttributes','intersection','create','body','rimraf','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','count','set','Content-Range','save','update','then','destroy','stack','map','FreshdeskField','fieldName','type','key','model','keys','query','filters','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter'];(function(_0x46d0c9,_0x526bfa){var _0x174506=function(_0x654bc6){while(--_0x654bc6){_0x46d0c9['push'](_0x46d0c9['shift']());}};_0x174506(++_0x526bfa);}(_0xb9a7,0x112));var _0x7b9a=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xb9a7[_0x4b369d];return _0x571a98;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7b9a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7b9a('0x1'));var BPromise=require('bluebird');var Mustache=require(_0x7b9a('0x2'));var util=require(_0x7b9a('0x3'));var path=require(_0x7b9a('0x4'));var sox=require(_0x7b9a('0x5'));var csv=require(_0x7b9a('0x6'));var ejs=require(_0x7b9a('0x7'));var fs=require('fs');var fs_extra=require(_0x7b9a('0x8'));var _=require(_0x7b9a('0x9'));var squel=require(_0x7b9a('0xa'));var crypto=require(_0x7b9a('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7b9a('0xc'));var toCsv=require(_0x7b9a('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7b9a('0xd'));var qs=require(_0x7b9a('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7b9a('0xf'));var logger=require('../../config/logger')(_0x7b9a('0x10'));var utils=require('../../config/utils');var config=require(_0x7b9a('0x11'));var licenseUtil=require(_0x7b9a('0x12'));var db=require(_0x7b9a('0x13'))['db'];function respondWithStatusCode(_0x5948ca,_0x32f616){_0x32f616=_0x32f616||0xcc;return function(_0xec5949){if(_0xec5949){return _0x5948ca['sendStatus'](_0x32f616);}return _0x5948ca[_0x7b9a('0x14')](_0x32f616)[_0x7b9a('0x15')]();};}function respondWithResult(_0x4b7ec0,_0xb157e5){_0xb157e5=_0xb157e5||0xc8;return function(_0xde180d){if(_0xde180d){return _0x4b7ec0[_0x7b9a('0x14')](_0xb157e5)[_0x7b9a('0x16')](_0xde180d);}};}function respondWithFilteredResult(_0x344fa7,_0x346daa){return function(_0x22a7e4){if(_0x22a7e4){var _0x35e602=typeof _0x346daa[_0x7b9a('0x17')]==='undefined'&&typeof _0x346daa[_0x7b9a('0x18')]==='undefined';var _0x123921=_0x22a7e4[_0x7b9a('0x19')];var _0x271263=_0x35e602?0x0:_0x346daa[_0x7b9a('0x17')];var _0x44a232=_0x35e602?_0x22a7e4[_0x7b9a('0x19')]:_0x346daa[_0x7b9a('0x17')]+_0x346daa[_0x7b9a('0x18')];var _0x2064a0;if(_0x44a232>=_0x123921){_0x44a232=_0x123921;_0x2064a0=0xc8;}else{_0x2064a0=0xce;}_0x344fa7[_0x7b9a('0x14')](_0x2064a0);return _0x344fa7[_0x7b9a('0x1a')](_0x7b9a('0x1b'),_0x271263+'-'+_0x44a232+'/'+_0x123921)[_0x7b9a('0x16')](_0x22a7e4);}return null;};}function patchUpdates(_0x58aed7){return function(_0x993048){try{jsonpatch['apply'](_0x993048,_0x58aed7,!![]);}catch(_0x1eacbc){return BPromise['reject'](_0x1eacbc);}return _0x993048[_0x7b9a('0x1c')]();};}function saveUpdates(_0x331ae6,_0x23d812){return function(_0x54fda7){if(_0x54fda7){return _0x54fda7[_0x7b9a('0x1d')](_0x331ae6)[_0x7b9a('0x1e')](function(_0x5705b2){return _0x5705b2;});}return null;};}function removeEntity(_0x35aca7,_0x374dca){return function(_0x269c07){if(_0x269c07){return _0x269c07[_0x7b9a('0x1f')]()[_0x7b9a('0x1e')](function(){_0x35aca7['status'](0xcc)[_0x7b9a('0x15')]();});}};}function handleEntityNotFound(_0x23219e,_0x5809f5){return function(_0x39b7ec){if(!_0x39b7ec){_0x23219e['sendStatus'](0x194);}return _0x39b7ec;};}function handleError(_0x31eb67,_0x3091ab){_0x3091ab=_0x3091ab||0x1f4;return function(_0x4c2271){logger['error'](_0x4c2271[_0x7b9a('0x20')]);if(_0x4c2271['name']){delete _0x4c2271['name'];}_0x31eb67[_0x7b9a('0x14')](_0x3091ab)['send'](_0x4c2271);};}exports['index']=function(_0x3847b4,_0x4d5880){var _0x5c89b6={},_0x314b6d={},_0x4fee38={'count':0x0,'rows':[]};var _0x1553ae=_[_0x7b9a('0x21')](db[_0x7b9a('0x22')]['rawAttributes'],function(_0x45ccf5){return{'name':_0x45ccf5[_0x7b9a('0x23')],'type':_0x45ccf5[_0x7b9a('0x24')][_0x7b9a('0x25')]};});_0x314b6d[_0x7b9a('0x26')]=_[_0x7b9a('0x21')](_0x1553ae,'name');_0x314b6d['query']=_[_0x7b9a('0x27')](_0x3847b4[_0x7b9a('0x28')]);_0x314b6d[_0x7b9a('0x29')]=_['intersection'](_0x314b6d[_0x7b9a('0x26')],_0x314b6d[_0x7b9a('0x28')]);_0x5c89b6['attributes']=_['intersection'](_0x314b6d[_0x7b9a('0x26')],qs[_0x7b9a('0x2a')](_0x3847b4['query'][_0x7b9a('0x2a')]));_0x5c89b6[_0x7b9a('0x2b')]=_0x5c89b6[_0x7b9a('0x2b')][_0x7b9a('0x2c')]?_0x5c89b6[_0x7b9a('0x2b')]:_0x314b6d['model'];if(!_0x3847b4[_0x7b9a('0x28')][_0x7b9a('0x2d')](_0x7b9a('0x2e'))){_0x5c89b6[_0x7b9a('0x18')]=qs[_0x7b9a('0x18')](_0x3847b4[_0x7b9a('0x28')]['limit']);_0x5c89b6['offset']=qs[_0x7b9a('0x17')](_0x3847b4[_0x7b9a('0x28')]['offset']);}_0x5c89b6[_0x7b9a('0x2f')]=qs[_0x7b9a('0x30')](_0x3847b4[_0x7b9a('0x28')]['sort']);_0x5c89b6[_0x7b9a('0x31')]=qs[_0x7b9a('0x29')](_['pick'](_0x3847b4['query'],_0x314b6d[_0x7b9a('0x29')]),_0x1553ae);if(_0x3847b4[_0x7b9a('0x28')][_0x7b9a('0x32')]){_0x5c89b6[_0x7b9a('0x31')]=_[_0x7b9a('0x33')](_0x5c89b6[_0x7b9a('0x31')],{'$or':_[_0x7b9a('0x21')](_0x1553ae,function(_0x380f4b){if(_0x380f4b['type']!==_0x7b9a('0x34')){var _0x5ac175={};_0x5ac175[_0x380f4b[_0x7b9a('0x35')]]={'$like':'%'+_0x3847b4[_0x7b9a('0x28')][_0x7b9a('0x32')]+'%'};return _0x5ac175;}})});}_0x5c89b6=_[_0x7b9a('0x33')]({},_0x5c89b6,_0x3847b4[_0x7b9a('0x36')]);var _0x89951b={'where':_0x5c89b6['where']};return db[_0x7b9a('0x22')][_0x7b9a('0x19')](_0x89951b)[_0x7b9a('0x1e')](function(_0x1bc1f0){_0x4fee38['count']=_0x1bc1f0;if(_0x3847b4[_0x7b9a('0x28')][_0x7b9a('0x37')]){_0x5c89b6[_0x7b9a('0x38')]=[{'all':!![]}];}return db[_0x7b9a('0x22')]['findAll'](_0x5c89b6);})[_0x7b9a('0x1e')](function(_0x53d89a){_0x4fee38[_0x7b9a('0x39')]=_0x53d89a;return _0x4fee38;})[_0x7b9a('0x1e')](respondWithFilteredResult(_0x4d5880,_0x5c89b6))[_0x7b9a('0x3a')](handleError(_0x4d5880,null));};exports[_0x7b9a('0x3b')]=function(_0x43fad0,_0x41f541){var _0x56e274={'raw':!![],'where':{'id':_0x43fad0[_0x7b9a('0x3c')]['id']}},_0x33edc6={};_0x33edc6[_0x7b9a('0x26')]=_['keys'](db['FreshdeskField'][_0x7b9a('0x3d')]);_0x33edc6[_0x7b9a('0x28')]=_[_0x7b9a('0x27')](_0x43fad0[_0x7b9a('0x28')]);_0x33edc6[_0x7b9a('0x29')]=_[_0x7b9a('0x3e')](_0x33edc6['model'],_0x33edc6['query']);_0x56e274['attributes']=_[_0x7b9a('0x3e')](_0x33edc6[_0x7b9a('0x26')],qs['fields'](_0x43fad0[_0x7b9a('0x28')][_0x7b9a('0x2a')]));_0x56e274[_0x7b9a('0x2b')]=_0x56e274['attributes'][_0x7b9a('0x2c')]?_0x56e274['attributes']:_0x33edc6[_0x7b9a('0x26')];if(_0x43fad0[_0x7b9a('0x28')][_0x7b9a('0x37')]){_0x56e274[_0x7b9a('0x38')]=[{'all':!![]}];}_0x56e274=_[_0x7b9a('0x33')]({},_0x56e274,_0x43fad0['options']);return db[_0x7b9a('0x22')]['find'](_0x56e274)[_0x7b9a('0x1e')](handleEntityNotFound(_0x41f541,null))['then'](respondWithResult(_0x41f541,null))['catch'](handleError(_0x41f541,null));};exports[_0x7b9a('0x3f')]=function(_0x3727ef,_0x717d08){return db[_0x7b9a('0x22')][_0x7b9a('0x3f')](_0x3727ef[_0x7b9a('0x40')],{})[_0x7b9a('0x1e')](respondWithResult(_0x717d08,0xc9))[_0x7b9a('0x3a')](handleError(_0x717d08,null));};exports[_0x7b9a('0x1d')]=function(_0x5088c7,_0x1d7957){if(_0x5088c7[_0x7b9a('0x40')]['id']){delete _0x5088c7['body']['id'];}return db['FreshdeskField']['find']({'where':{'id':_0x5088c7[_0x7b9a('0x3c')]['id']}})[_0x7b9a('0x1e')](handleEntityNotFound(_0x1d7957,null))[_0x7b9a('0x1e')](saveUpdates(_0x5088c7[_0x7b9a('0x40')],null))['then'](respondWithResult(_0x1d7957,null))[_0x7b9a('0x3a')](handleError(_0x1d7957,null));};exports[_0x7b9a('0x1f')]=function(_0x287dea,_0x33b200){return db[_0x7b9a('0x22')]['find']({'where':{'id':_0x287dea[_0x7b9a('0x3c')]['id']}})['then'](handleEntityNotFound(_0x33b200,null))[_0x7b9a('0x1e')](removeEntity(_0x33b200,null))[_0x7b9a('0x3a')](handleError(_0x33b200,null));};
\ No newline at end of file
+var _0xb469=['undefined','count','limit','set','Content-Range','apply','update','then','error','stack','name','index','map','FreshdeskField','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','offset','order','sort','pick','filter','where','merge','VIRTUAL','include','rows','catch','params','includeAll','options','find','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json'];(function(_0x56c4de,_0xf1c874){var _0xd799af=function(_0x30fb9){while(--_0x30fb9){_0x56c4de['push'](_0x56c4de['shift']());}};_0xd799af(++_0xf1c874);}(_0xb469,0x13b));var _0x9b46=function(_0x2de3cc,_0x5859ac){_0x2de3cc=_0x2de3cc-0x0;var _0x1a642e=_0xb469[_0x2de3cc];return _0x1a642e;};'use strict';var emlformat=require(_0x9b46('0x0'));var rimraf=require(_0x9b46('0x1'));var zipdir=require(_0x9b46('0x2'));var jsonpatch=require(_0x9b46('0x3'));var rp=require(_0x9b46('0x4'));var moment=require(_0x9b46('0x5'));var BPromise=require(_0x9b46('0x6'));var Mustache=require('mustache');var util=require(_0x9b46('0x7'));var path=require(_0x9b46('0x8'));var sox=require('sox');var csv=require(_0x9b46('0x9'));var ejs=require(_0x9b46('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9b46('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9b46('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x9b46('0x9'));var querystring=require(_0x9b46('0xd'));var Papa=require(_0x9b46('0xe'));var Redis=require('ioredis');var authService=require(_0x9b46('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x9b46('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9b46('0x11'))('api');var utils=require(_0x9b46('0x12'));var config=require(_0x9b46('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x9b46('0x14'))['db'];function respondWithStatusCode(_0x417df5,_0x5b65c2){_0x5b65c2=_0x5b65c2||0xcc;return function(_0x14362a){if(_0x14362a){return _0x417df5[_0x9b46('0x15')](_0x5b65c2);}return _0x417df5[_0x9b46('0x16')](_0x5b65c2)[_0x9b46('0x17')]();};}function respondWithResult(_0xa8f4ac,_0x35c5c1){_0x35c5c1=_0x35c5c1||0xc8;return function(_0x2136bc){if(_0x2136bc){return _0xa8f4ac[_0x9b46('0x16')](_0x35c5c1)[_0x9b46('0x18')](_0x2136bc);}};}function respondWithFilteredResult(_0x178293,_0xbc1ba6){return function(_0x135cc2){if(_0x135cc2){var _0x1e6911=typeof _0xbc1ba6['offset']==='undefined'&&typeof _0xbc1ba6['limit']===_0x9b46('0x19');var _0x5a380c=_0x135cc2[_0x9b46('0x1a')];var _0x5c5cc9=_0x1e6911?0x0:_0xbc1ba6['offset'];var _0x3d9efa=_0x1e6911?_0x135cc2['count']:_0xbc1ba6['offset']+_0xbc1ba6[_0x9b46('0x1b')];var _0x3a15cc;if(_0x3d9efa>=_0x5a380c){_0x3d9efa=_0x5a380c;_0x3a15cc=0xc8;}else{_0x3a15cc=0xce;}_0x178293['status'](_0x3a15cc);return _0x178293[_0x9b46('0x1c')](_0x9b46('0x1d'),_0x5c5cc9+'-'+_0x3d9efa+'/'+_0x5a380c)['json'](_0x135cc2);}return null;};}function patchUpdates(_0x55aece){return function(_0xbec2ea){try{jsonpatch[_0x9b46('0x1e')](_0xbec2ea,_0x55aece,!![]);}catch(_0x204098){return BPromise['reject'](_0x204098);}return _0xbec2ea['save']();};}function saveUpdates(_0x2b3440,_0x51d2ca){return function(_0x21dacb){if(_0x21dacb){return _0x21dacb[_0x9b46('0x1f')](_0x2b3440)['then'](function(_0xadff19){return _0xadff19;});}return null;};}function removeEntity(_0x5182b1,_0x141cb6){return function(_0x2b6f72){if(_0x2b6f72){return _0x2b6f72['destroy']()[_0x9b46('0x20')](function(){_0x5182b1[_0x9b46('0x16')](0xcc)[_0x9b46('0x17')]();});}};}function handleEntityNotFound(_0x319930,_0x33ea06){return function(_0x3e4899){if(!_0x3e4899){_0x319930[_0x9b46('0x15')](0x194);}return _0x3e4899;};}function handleError(_0x5dc377,_0xdd756c){_0xdd756c=_0xdd756c||0x1f4;return function(_0x3ac37e){logger[_0x9b46('0x21')](_0x3ac37e[_0x9b46('0x22')]);if(_0x3ac37e[_0x9b46('0x23')]){delete _0x3ac37e[_0x9b46('0x23')];}_0x5dc377[_0x9b46('0x16')](_0xdd756c)['send'](_0x3ac37e);};}exports[_0x9b46('0x24')]=function(_0xee519e,_0x3630bf){var _0x376ccc={},_0x28b289={},_0x869993={'count':0x0,'rows':[]};var _0xc062ec=_[_0x9b46('0x25')](db[_0x9b46('0x26')][_0x9b46('0x27')],function(_0x2e1c51){return{'name':_0x2e1c51['fieldName'],'type':_0x2e1c51[_0x9b46('0x28')][_0x9b46('0x29')]};});_0x28b289[_0x9b46('0x2a')]=_[_0x9b46('0x25')](_0xc062ec,_0x9b46('0x23'));_0x28b289[_0x9b46('0x2b')]=_[_0x9b46('0x2c')](_0xee519e[_0x9b46('0x2b')]);_0x28b289[_0x9b46('0x2d')]=_[_0x9b46('0x2e')](_0x28b289[_0x9b46('0x2a')],_0x28b289['query']);_0x376ccc[_0x9b46('0x2f')]=_['intersection'](_0x28b289[_0x9b46('0x2a')],qs[_0x9b46('0x30')](_0xee519e[_0x9b46('0x2b')]['fields']));_0x376ccc[_0x9b46('0x2f')]=_0x376ccc[_0x9b46('0x2f')][_0x9b46('0x31')]?_0x376ccc[_0x9b46('0x2f')]:_0x28b289[_0x9b46('0x2a')];if(!_0xee519e['query']['hasOwnProperty'](_0x9b46('0x32'))){_0x376ccc[_0x9b46('0x1b')]=qs[_0x9b46('0x1b')](_0xee519e[_0x9b46('0x2b')]['limit']);_0x376ccc[_0x9b46('0x33')]=qs['offset'](_0xee519e[_0x9b46('0x2b')][_0x9b46('0x33')]);}_0x376ccc[_0x9b46('0x34')]=qs[_0x9b46('0x35')](_0xee519e['query'][_0x9b46('0x35')]);_0x376ccc['where']=qs[_0x9b46('0x2d')](_[_0x9b46('0x36')](_0xee519e[_0x9b46('0x2b')],_0x28b289[_0x9b46('0x2d')]),_0xc062ec);if(_0xee519e[_0x9b46('0x2b')][_0x9b46('0x37')]){_0x376ccc[_0x9b46('0x38')]=_[_0x9b46('0x39')](_0x376ccc[_0x9b46('0x38')],{'$or':_[_0x9b46('0x25')](_0xc062ec,function(_0x1c4147){if(_0x1c4147['type']!==_0x9b46('0x3a')){var _0x5aac02={};_0x5aac02[_0x1c4147[_0x9b46('0x23')]]={'$like':'%'+_0xee519e[_0x9b46('0x2b')]['filter']+'%'};return _0x5aac02;}})});}_0x376ccc=_[_0x9b46('0x39')]({},_0x376ccc,_0xee519e['options']);var _0x416538={'where':_0x376ccc['where']};return db[_0x9b46('0x26')][_0x9b46('0x1a')](_0x416538)[_0x9b46('0x20')](function(_0x22ab5d){_0x869993[_0x9b46('0x1a')]=_0x22ab5d;if(_0xee519e['query']['includeAll']){_0x376ccc[_0x9b46('0x3b')]=[{'all':!![]}];}return db['FreshdeskField']['findAll'](_0x376ccc);})['then'](function(_0x4e1911){_0x869993[_0x9b46('0x3c')]=_0x4e1911;return _0x869993;})['then'](respondWithFilteredResult(_0x3630bf,_0x376ccc))[_0x9b46('0x3d')](handleError(_0x3630bf,null));};exports['show']=function(_0x3fa46c,_0xe807bf){var _0x2e92aa={'raw':!![],'where':{'id':_0x3fa46c[_0x9b46('0x3e')]['id']}},_0xa14b={};_0xa14b[_0x9b46('0x2a')]=_[_0x9b46('0x2c')](db[_0x9b46('0x26')][_0x9b46('0x27')]);_0xa14b['query']=_[_0x9b46('0x2c')](_0x3fa46c[_0x9b46('0x2b')]);_0xa14b[_0x9b46('0x2d')]=_[_0x9b46('0x2e')](_0xa14b[_0x9b46('0x2a')],_0xa14b[_0x9b46('0x2b')]);_0x2e92aa[_0x9b46('0x2f')]=_[_0x9b46('0x2e')](_0xa14b[_0x9b46('0x2a')],qs[_0x9b46('0x30')](_0x3fa46c[_0x9b46('0x2b')][_0x9b46('0x30')]));_0x2e92aa[_0x9b46('0x2f')]=_0x2e92aa[_0x9b46('0x2f')]['length']?_0x2e92aa['attributes']:_0xa14b[_0x9b46('0x2a')];if(_0x3fa46c[_0x9b46('0x2b')][_0x9b46('0x3f')]){_0x2e92aa['include']=[{'all':!![]}];}_0x2e92aa=_['merge']({},_0x2e92aa,_0x3fa46c[_0x9b46('0x40')]);return db[_0x9b46('0x26')][_0x9b46('0x41')](_0x2e92aa)[_0x9b46('0x20')](handleEntityNotFound(_0xe807bf,null))[_0x9b46('0x20')](respondWithResult(_0xe807bf,null))[_0x9b46('0x3d')](handleError(_0xe807bf,null));};exports['create']=function(_0x6d1e73,_0x32e34d){return db[_0x9b46('0x26')]['create'](_0x6d1e73[_0x9b46('0x42')],{})['then'](respondWithResult(_0x32e34d,0xc9))[_0x9b46('0x3d')](handleError(_0x32e34d,null));};exports[_0x9b46('0x1f')]=function(_0x16e6d8,_0x566bad){if(_0x16e6d8[_0x9b46('0x42')]['id']){delete _0x16e6d8[_0x9b46('0x42')]['id'];}return db[_0x9b46('0x26')][_0x9b46('0x41')]({'where':{'id':_0x16e6d8[_0x9b46('0x3e')]['id']}})[_0x9b46('0x20')](handleEntityNotFound(_0x566bad,null))['then'](saveUpdates(_0x16e6d8[_0x9b46('0x42')],null))[_0x9b46('0x20')](respondWithResult(_0x566bad,null))[_0x9b46('0x3d')](handleError(_0x566bad,null));};exports[_0x9b46('0x43')]=function(_0x362311,_0x36a492){return db['FreshdeskField'][_0x9b46('0x41')]({'where':{'id':_0x362311['params']['id']}})[_0x9b46('0x20')](handleEntityNotFound(_0x36a492,null))[_0x9b46('0x20')](removeEntity(_0x36a492,null))[_0x9b46('0x3d')](handleError(_0x36a492,null));};
\ No newline at end of file
index 7c14481..b7e3929 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffa2=['moment','bluebird','request-promise','rimraf','../../config/environment','./intFreshdeskField.attributes','exports','define','FreshdeskField','idField','FieldId','lodash','util'];(function(_0x106b21,_0x22cefc){var _0x5b079f=function(_0x5b99aa){while(--_0x5b99aa){_0x106b21['push'](_0x106b21['shift']());}};_0x5b079f(++_0x22cefc);}(_0xffa2,0x150));var _0x2ffa=function(_0x464ba3,_0x118494){_0x464ba3=_0x464ba3-0x0;var _0xc0cbf2=_0xffa2[_0x464ba3];return _0xc0cbf2;};'use strict';var _=require(_0x2ffa('0x0'));var util=require(_0x2ffa('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x2ffa('0x2'));var BPromise=require(_0x2ffa('0x3'));var rp=require(_0x2ffa('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2ffa('0x5'));var config=require(_0x2ffa('0x6'));var attributes=require(_0x2ffa('0x7'));module[_0x2ffa('0x8')]=function(_0x3c092b,_0x595e10){return _0x3c092b[_0x2ffa('0x9')](_0x2ffa('0xa'),attributes,{'tableName':'int_freshdesk_fields','paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':[_0x2ffa('0xb'),_0x2ffa('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x238f=['int_freshdesk_fields','freshdesk_unique_index','idField','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskField.attributes','FreshdeskField'];(function(_0x7b2e43,_0x31185e){var _0x84f9bc=function(_0x43be0f){while(--_0x43be0f){_0x7b2e43['push'](_0x7b2e43['shift']());}};_0x84f9bc(++_0x31185e);}(_0x238f,0x1d4));var _0xf238=function(_0x3a6c94,_0x340e7e){_0x3a6c94=_0x3a6c94-0x0;var _0x4cdbea=_0x238f[_0x3a6c94];return _0x4cdbea;};'use strict';var _=require(_0xf238('0x0'));var util=require(_0xf238('0x1'));var logger=require(_0xf238('0x2'))(_0xf238('0x3'));var moment=require(_0xf238('0x4'));var BPromise=require(_0xf238('0x5'));var rp=require(_0xf238('0x6'));var fs=require('fs');var path=require(_0xf238('0x7'));var rimraf=require(_0xf238('0x8'));var config=require(_0xf238('0x9'));var attributes=require(_0xf238('0xa'));module['exports']=function(_0x174e62,_0x47ff7b){return _0x174e62['define'](_0xf238('0xb'),attributes,{'tableName':_0xf238('0xc'),'paranoid':![],'indexes':[{'name':_0xf238('0xd'),'fields':[_0xf238('0xe'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 4d854b1..63e80e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31fe=['info','FreshdeskField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','FreshdeskField,\x20%s,\x20%s','message','result','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x1a9bdf,_0x43130a){var _0x61a042=function(_0x13fdf5){while(--_0x13fdf5){_0x1a9bdf['push'](_0x1a9bdf['shift']());}};_0x61a042(++_0x43130a);}(_0x31fe,0xc1));var _0xe31f=function(_0x587625,_0x52912b){_0x587625=_0x587625-0x0;var _0x2b8bdd=_0x31fe[_0x587625];return _0x2b8bdd;};'use strict';var _=require(_0xe31f('0x0'));var util=require(_0xe31f('0x1'));var moment=require('moment');var BPromise=require(_0xe31f('0x2'));var rs=require(_0xe31f('0x3'));var fs=require('fs');var Redis=require(_0xe31f('0x4'));var db=require(_0xe31f('0x5'))['db'];var utils=require(_0xe31f('0x6'));var logger=require(_0xe31f('0x7'))('rpc');var config=require(_0xe31f('0x8'));var jayson=require(_0xe31f('0x9'));var client=jayson[_0xe31f('0xa')][_0xe31f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x387930,_0x4baec4,_0x523df2){return new BPromise(function(_0x1acd93,_0x237d67){return client[_0xe31f('0xc')](_0x387930,_0x523df2)[_0xe31f('0xd')](function(_0x14afb2){logger[_0xe31f('0xe')]('FreshdeskField,\x20%s,\x20%s',_0x4baec4,'request\x20sent');logger['debug'](_0xe31f('0xf'),_0x4baec4,_0xe31f('0x10'),JSON[_0xe31f('0x11')](_0x14afb2));if(_0x14afb2[_0xe31f('0x12')]){if(_0x14afb2[_0xe31f('0x12')][_0xe31f('0x13')]===0x1f4){logger[_0xe31f('0x12')](_0xe31f('0x14'),_0x4baec4,_0x14afb2['error'][_0xe31f('0x15')]);return _0x237d67(_0x14afb2[_0xe31f('0x12')][_0xe31f('0x15')]);}logger['error'](_0xe31f('0x14'),_0x4baec4,_0x14afb2[_0xe31f('0x12')][_0xe31f('0x15')]);return _0x1acd93(_0x14afb2[_0xe31f('0x12')][_0xe31f('0x15')]);}else{logger[_0xe31f('0xe')](_0xe31f('0x14'),_0x4baec4,'request\x20sent');_0x1acd93(_0x14afb2[_0xe31f('0x16')]['message']);}})['catch'](function(_0xd5b257){logger[_0xe31f('0x12')](_0xe31f('0x14'),_0x4baec4,_0xd5b257);_0x237d67(_0xd5b257);});});}
\ No newline at end of file
+var _0x2361=['ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird'];(function(_0x221ce9,_0x1362cd){var _0x344b4d=function(_0x3630be){while(--_0x3630be){_0x221ce9['push'](_0x221ce9['shift']());}};_0x344b4d(++_0x1362cd);}(_0x2361,0xd5));var _0x1236=function(_0x59caba,_0x33c018){_0x59caba=_0x59caba-0x0;var _0x103e6d=_0x2361[_0x59caba];return _0x103e6d;};'use strict';var _=require(_0x1236('0x0'));var util=require('util');var moment=require(_0x1236('0x1'));var BPromise=require(_0x1236('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1236('0x3'));var db=require(_0x1236('0x4'))['db'];var utils=require(_0x1236('0x5'));var logger=require('../../config/logger')(_0x1236('0x6'));var config=require(_0x1236('0x7'));var jayson=require(_0x1236('0x8'));var client=jayson[_0x1236('0x9')][_0x1236('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4b7c38,_0x4a4793,_0xe6aef){return new BPromise(function(_0xace1b6,_0x44ef08){return client[_0x1236('0xb')](_0x4b7c38,_0xe6aef)[_0x1236('0xc')](function(_0x2a48c5){logger['info'](_0x1236('0xd'),_0x4a4793,_0x1236('0xe'));logger[_0x1236('0xf')](_0x1236('0x10'),_0x4a4793,_0x1236('0xe'),JSON[_0x1236('0x11')](_0x2a48c5));if(_0x2a48c5[_0x1236('0x12')]){if(_0x2a48c5[_0x1236('0x12')][_0x1236('0x13')]===0x1f4){logger[_0x1236('0x12')]('FreshdeskField,\x20%s,\x20%s',_0x4a4793,_0x2a48c5[_0x1236('0x12')][_0x1236('0x14')]);return _0x44ef08(_0x2a48c5['error'][_0x1236('0x14')]);}logger[_0x1236('0x12')](_0x1236('0xd'),_0x4a4793,_0x2a48c5[_0x1236('0x12')][_0x1236('0x14')]);return _0xace1b6(_0x2a48c5[_0x1236('0x12')][_0x1236('0x14')]);}else{logger[_0x1236('0x15')](_0x1236('0xd'),_0x4a4793,_0x1236('0xe'));_0xace1b6(_0x2a48c5[_0x1236('0x16')][_0x1236('0x14')]);}})[_0x1236('0x17')](function(_0x5cfb3e){logger[_0x1236('0x12')](_0x1236('0xd'),_0x4a4793,_0x5cfb3e);_0x44ef08(_0x5cfb3e);});});}
\ No newline at end of file
index 89e1b26..96a42da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7af2=['getConfigurations','/:id/configurations','addConfiguration','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','show'];(function(_0x25e7cb,_0x3579b7){var _0x375d92=function(_0xe8cf3b){while(--_0xe8cf3b){_0x25e7cb['push'](_0x25e7cb['shift']());}};_0x375d92(++_0x3579b7);}(_0x7af2,0x119));var _0x27af=function(_0x457765,_0x209aa8){_0x457765=_0x457765-0x0;var _0x1b8561=_0x7af2[_0x457765];return _0x1b8561;};'use strict';var multer=require('multer');var util=require(_0x27af('0x0'));var path=require(_0x27af('0x1'));var timeout=require(_0x27af('0x2'));var express=require(_0x27af('0x3'));var router=express['Router']();var fs_extra=require(_0x27af('0x4'));var auth=require(_0x27af('0x5'));var interaction=require(_0x27af('0x6'));var config=require(_0x27af('0x7'));var controller=require(_0x27af('0x8'));router[_0x27af('0x9')]('/',auth[_0x27af('0xa')](),controller[_0x27af('0xb')]);router[_0x27af('0x9')]('/:id',auth[_0x27af('0xa')](),controller[_0x27af('0xc')]);router[_0x27af('0x9')]('/:id/configurations',auth[_0x27af('0xa')](),controller[_0x27af('0xd')]);router[_0x27af('0x9')]('/:id/fields',auth[_0x27af('0xa')](),controller['getFields']);router['post']('/',auth[_0x27af('0xa')](),controller['create']);router['post'](_0x27af('0xe'),auth['isAuthenticated'](),controller[_0x27af('0xf')]);router['put'](_0x27af('0x10'),auth[_0x27af('0xa')](),controller[_0x27af('0x11')]);router[_0x27af('0x12')](_0x27af('0x10'),auth[_0x27af('0xa')](),controller[_0x27af('0x13')]);module[_0x27af('0x14')]=router;
\ No newline at end of file
+var _0x6f7a=['../../components/interaction/service','../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','put','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x165ece,_0x1f0a42){var _0x545fe6=function(_0x1ac8e9){while(--_0x1ac8e9){_0x165ece['push'](_0x165ece['shift']());}};_0x545fe6(++_0x1f0a42);}(_0x6f7a,0x1ae));var _0xa6f7=function(_0x39a9fa,_0x376288){_0x39a9fa=_0x39a9fa-0x0;var _0x445a60=_0x6f7a[_0x39a9fa];return _0x445a60;};'use strict';var multer=require(_0xa6f7('0x0'));var util=require(_0xa6f7('0x1'));var path=require(_0xa6f7('0x2'));var timeout=require(_0xa6f7('0x3'));var express=require('express');var router=express[_0xa6f7('0x4')]();var fs_extra=require(_0xa6f7('0x5'));var auth=require(_0xa6f7('0x6'));var interaction=require(_0xa6f7('0x7'));var config=require(_0xa6f7('0x8'));var controller=require(_0xa6f7('0x9'));router[_0xa6f7('0xa')]('/',auth[_0xa6f7('0xb')](),controller[_0xa6f7('0xc')]);router[_0xa6f7('0xa')](_0xa6f7('0xd'),auth['isAuthenticated'](),controller['show']);router[_0xa6f7('0xa')](_0xa6f7('0xe'),auth[_0xa6f7('0xb')](),controller[_0xa6f7('0xf')]);router[_0xa6f7('0xa')]('/:id/fields',auth['isAuthenticated'](),controller[_0xa6f7('0x10')]);router[_0xa6f7('0x11')]('/',auth['isAuthenticated'](),controller[_0xa6f7('0x12')]);router['post'](_0xa6f7('0xe'),auth[_0xa6f7('0xb')](),controller[_0xa6f7('0x13')]);router[_0xa6f7('0x14')]('/:id',auth[_0xa6f7('0xb')](),controller['update']);router[_0xa6f7('0x15')](_0xa6f7('0xd'),auth[_0xa6f7('0xb')](),controller['destroy']);module[_0xa6f7('0x16')]=router;
\ No newline at end of file
index e0bb4a4..8607276 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4a2=['STRING','username','sequelize'];(function(_0x2288e0,_0x12fb10){var _0x53a916=function(_0x3f62cf){while(--_0x3f62cf){_0x2288e0['push'](_0x2288e0['shift']());}};_0x53a916(++_0x12fb10);}(_0xd4a2,0x173));var _0x2d4a=function(_0x84a25d,_0x116152){_0x84a25d=_0x84a25d-0x0;var _0x8f7482=_0xd4a2[_0x84a25d];return _0x8f7482;};'use strict';var Sequelize=require(_0x2d4a('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x2d4a('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x2d4a('0x2')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x2d4a('0x1')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x2d4a('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x4888=['exports','STRING','username'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x4888,0x198));var _0x8488=function(_0x38af48,_0x400460){_0x38af48=_0x38af48-0x0;var _0x445384=_0x4888[_0x38af48];return _0x445384;};'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 803ff70..419c4ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbba9=['status','json','limit','undefined','count','offset','set','apply','save','update','then','error','stack','name','index','map','FreshsalesAccount','rawAttributes','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','destroy','FreshsalesConfiguration','addConfiguration','Subjects','getSubjects','Descriptions','channel','FreshsalesField','findOne','username','remoteUri','apiKey','substring','lastIndexOf','GET','format','/api/selector/owners','Requested\x20Resource\x20not\x20Found','test','statusCode','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xbba9,0xa6));var _0x9bba=function(_0x4c319c,_0x1b9e47){_0x4c319c=_0x4c319c-0x0;var _0x2d76a2=_0xbba9[_0x4c319c];return _0x2d76a2;};'use strict';var emlformat=require(_0x9bba('0x0'));var rimraf=require(_0x9bba('0x1'));var zipdir=require(_0x9bba('0x2'));var jsonpatch=require(_0x9bba('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x9bba('0x4'));var util=require(_0x9bba('0x5'));var path=require(_0x9bba('0x6'));var sox=require('sox');var csv=require(_0x9bba('0x7'));var ejs=require(_0x9bba('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9bba('0x9'));var squel=require(_0x9bba('0xa'));var crypto=require('crypto');var jsforce=require(_0x9bba('0xb'));var deskjs=require(_0x9bba('0xc'));var toCsv=require(_0x9bba('0x7'));var querystring=require(_0x9bba('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9bba('0xe'));var as=require(_0x9bba('0xf'));var hardwareService=require(_0x9bba('0x10'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x9bba('0x11'));var db=require(_0x9bba('0x12'))['db'];var integrations=require(_0x9bba('0x13'));function respondWithStatusCode(_0x92cbcc,_0x124338){_0x124338=_0x124338||0xcc;return function(_0xc228e7){if(_0xc228e7){return _0x92cbcc[_0x9bba('0x14')](_0x124338);}return _0x92cbcc['status'](_0x124338)[_0x9bba('0x15')]();};}function respondWithResult(_0x56ed42,_0x4aee0e){_0x4aee0e=_0x4aee0e||0xc8;return function(_0x56a5a7){if(_0x56a5a7){return _0x56ed42[_0x9bba('0x16')](_0x4aee0e)[_0x9bba('0x17')](_0x56a5a7);}};}function respondWithFilteredResult(_0x4b1deb,_0x3dbecd){return function(_0x38c794){if(_0x38c794){var _0x58f559=typeof _0x3dbecd['offset']==='undefined'&&typeof _0x3dbecd[_0x9bba('0x18')]===_0x9bba('0x19');var _0x58297f=_0x38c794[_0x9bba('0x1a')];var _0x1185cc=_0x58f559?0x0:_0x3dbecd[_0x9bba('0x1b')];var _0x2ef062=_0x58f559?_0x38c794[_0x9bba('0x1a')]:_0x3dbecd[_0x9bba('0x1b')]+_0x3dbecd[_0x9bba('0x18')];var _0x163aa4;if(_0x2ef062>=_0x58297f){_0x2ef062=_0x58297f;_0x163aa4=0xc8;}else{_0x163aa4=0xce;}_0x4b1deb[_0x9bba('0x16')](_0x163aa4);return _0x4b1deb[_0x9bba('0x1c')]('Content-Range',_0x1185cc+'-'+_0x2ef062+'/'+_0x58297f)['json'](_0x38c794);}return null;};}function patchUpdates(_0x3cc723){return function(_0x537584){try{jsonpatch[_0x9bba('0x1d')](_0x537584,_0x3cc723,!![]);}catch(_0x47a291){return BPromise['reject'](_0x47a291);}return _0x537584[_0x9bba('0x1e')]();};}function saveUpdates(_0x54ff00,_0x2ee6ba){return function(_0x4da775){if(_0x4da775){return _0x4da775[_0x9bba('0x1f')](_0x54ff00)[_0x9bba('0x20')](function(_0x29a1de){return _0x29a1de;});}return null;};}function removeEntity(_0x10790f,_0x234eae){return function(_0x1b40cf){if(_0x1b40cf){return _0x1b40cf['destroy']()['then'](function(){_0x10790f[_0x9bba('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3495dd,_0x2a563f){return function(_0x5b8c79){if(!_0x5b8c79){_0x3495dd[_0x9bba('0x14')](0x194);}return _0x5b8c79;};}function handleError(_0x4ef1f7,_0x4b1bbd){_0x4b1bbd=_0x4b1bbd||0x1f4;return function(_0x4857b5){logger[_0x9bba('0x21')](_0x4857b5[_0x9bba('0x22')]);if(_0x4857b5['name']){delete _0x4857b5[_0x9bba('0x23')];}_0x4ef1f7[_0x9bba('0x16')](_0x4b1bbd)['send'](_0x4857b5);};}exports[_0x9bba('0x24')]=function(_0x6c5dc4,_0x1efd9c){var _0x5ddae2={},_0x21de55={},_0x533ae4={'count':0x0,'rows':[]};var _0x50dc28=_[_0x9bba('0x25')](db[_0x9bba('0x26')][_0x9bba('0x27')],function(_0x1d2012){return{'name':_0x1d2012[_0x9bba('0x28')],'type':_0x1d2012['type'][_0x9bba('0x29')]};});_0x21de55[_0x9bba('0x2a')]=_['map'](_0x50dc28,_0x9bba('0x23'));_0x21de55[_0x9bba('0x2b')]=_['keys'](_0x6c5dc4[_0x9bba('0x2b')]);_0x21de55[_0x9bba('0x2c')]=_[_0x9bba('0x2d')](_0x21de55[_0x9bba('0x2a')],_0x21de55[_0x9bba('0x2b')]);_0x5ddae2['attributes']=_[_0x9bba('0x2d')](_0x21de55[_0x9bba('0x2a')],qs[_0x9bba('0x2e')](_0x6c5dc4[_0x9bba('0x2b')][_0x9bba('0x2e')]));_0x5ddae2[_0x9bba('0x2f')]=_0x5ddae2[_0x9bba('0x2f')][_0x9bba('0x30')]?_0x5ddae2[_0x9bba('0x2f')]:_0x21de55['model'];if(!_0x6c5dc4[_0x9bba('0x2b')][_0x9bba('0x31')](_0x9bba('0x32'))){_0x5ddae2[_0x9bba('0x18')]=qs[_0x9bba('0x18')](_0x6c5dc4[_0x9bba('0x2b')][_0x9bba('0x18')]);_0x5ddae2[_0x9bba('0x1b')]=qs[_0x9bba('0x1b')](_0x6c5dc4[_0x9bba('0x2b')][_0x9bba('0x1b')]);}_0x5ddae2[_0x9bba('0x33')]=qs[_0x9bba('0x34')](_0x6c5dc4['query'][_0x9bba('0x34')]);_0x5ddae2[_0x9bba('0x35')]=qs[_0x9bba('0x2c')](_[_0x9bba('0x36')](_0x6c5dc4[_0x9bba('0x2b')],_0x21de55[_0x9bba('0x2c')]),_0x50dc28);if(_0x6c5dc4[_0x9bba('0x2b')][_0x9bba('0x37')]){_0x5ddae2[_0x9bba('0x35')]=_[_0x9bba('0x38')](_0x5ddae2[_0x9bba('0x35')],{'$or':_['map'](_0x50dc28,function(_0x51a023){if(_0x51a023[_0x9bba('0x39')]!==_0x9bba('0x3a')){var _0x18b88f={};_0x18b88f[_0x51a023['name']]={'$like':'%'+_0x6c5dc4[_0x9bba('0x2b')][_0x9bba('0x37')]+'%'};return _0x18b88f;}})});}_0x5ddae2=_['merge']({},_0x5ddae2,_0x6c5dc4[_0x9bba('0x3b')]);var _0x201fd3={'where':_0x5ddae2[_0x9bba('0x35')]};return db['FreshsalesAccount'][_0x9bba('0x1a')](_0x201fd3)[_0x9bba('0x20')](function(_0x4240d0){_0x533ae4[_0x9bba('0x1a')]=_0x4240d0;if(_0x6c5dc4[_0x9bba('0x2b')][_0x9bba('0x3c')]){_0x5ddae2[_0x9bba('0x3d')]=[{'all':!![]}];}return db['FreshsalesAccount'][_0x9bba('0x3e')](_0x5ddae2);})['then'](function(_0x2f1146){_0x533ae4[_0x9bba('0x3f')]=_0x2f1146;return _0x533ae4;})['then'](respondWithFilteredResult(_0x1efd9c,_0x5ddae2))[_0x9bba('0x40')](handleError(_0x1efd9c,null));};exports[_0x9bba('0x41')]=function(_0x444c96,_0x283bba){var _0x43b163={'raw':![],'where':{'id':_0x444c96[_0x9bba('0x42')]['id']}},_0x34ae6d={};_0x34ae6d['model']=_[_0x9bba('0x43')](db[_0x9bba('0x26')][_0x9bba('0x27')]);_0x34ae6d['query']=_[_0x9bba('0x43')](_0x444c96[_0x9bba('0x2b')]);_0x34ae6d['filters']=_[_0x9bba('0x2d')](_0x34ae6d[_0x9bba('0x2a')],_0x34ae6d[_0x9bba('0x2b')]);_0x43b163[_0x9bba('0x2f')]=_['intersection'](_0x34ae6d[_0x9bba('0x2a')],qs[_0x9bba('0x2e')](_0x444c96[_0x9bba('0x2b')][_0x9bba('0x2e')]));_0x43b163[_0x9bba('0x2f')]=_0x43b163[_0x9bba('0x2f')][_0x9bba('0x30')]?_0x43b163['attributes']:_0x34ae6d[_0x9bba('0x2a')];if(_0x444c96[_0x9bba('0x2b')][_0x9bba('0x3c')]){_0x43b163[_0x9bba('0x3d')]=[{'all':!![]}];}_0x43b163=_[_0x9bba('0x38')]({},_0x43b163,_0x444c96[_0x9bba('0x3b')]);return db['FreshsalesAccount'][_0x9bba('0x44')](_0x43b163)['then'](handleEntityNotFound(_0x283bba,null))[_0x9bba('0x20')](respondWithResult(_0x283bba,null))[_0x9bba('0x40')](handleError(_0x283bba,null));};exports[_0x9bba('0x45')]=function(_0x305a38,_0x1a3d14){return db[_0x9bba('0x26')][_0x9bba('0x45')](_0x305a38[_0x9bba('0x46')],{})[_0x9bba('0x20')](respondWithResult(_0x1a3d14,0xc9))[_0x9bba('0x40')](handleError(_0x1a3d14,null));};exports[_0x9bba('0x1f')]=function(_0x350c93,_0x29d694){if(_0x350c93[_0x9bba('0x46')]['id']){delete _0x350c93[_0x9bba('0x46')]['id'];}return db['FreshsalesAccount']['find']({'where':{'id':_0x350c93[_0x9bba('0x42')]['id']}})[_0x9bba('0x20')](handleEntityNotFound(_0x29d694,null))['then'](saveUpdates(_0x350c93[_0x9bba('0x46')],null))[_0x9bba('0x20')](respondWithResult(_0x29d694,null))[_0x9bba('0x40')](handleError(_0x29d694,null));};exports[_0x9bba('0x47')]=function(_0x4d98fd,_0x108f6a){return db[_0x9bba('0x26')][_0x9bba('0x44')]({'where':{'id':_0x4d98fd[_0x9bba('0x42')]['id']}})[_0x9bba('0x20')](handleEntityNotFound(_0x108f6a,null))['then'](removeEntity(_0x108f6a,null))[_0x9bba('0x40')](handleError(_0x108f6a,null));};exports['getConfigurations']=function(_0x4d2ccd,_0x30a94a,_0x461c90){var _0x242945={};var _0x355b0f={};var _0x414d94;var _0x5b3415;return db[_0x9bba('0x26')]['findOne']({'where':{'id':_0x4d2ccd[_0x9bba('0x42')]['id']}})['then'](handleEntityNotFound(_0x30a94a,null))[_0x9bba('0x20')](function(_0x4f50b2){if(_0x4f50b2){_0x414d94=_0x4f50b2;_0x355b0f[_0x9bba('0x2a')]=_[_0x9bba('0x43')](db[_0x9bba('0x48')][_0x9bba('0x27')]);_0x355b0f[_0x9bba('0x2b')]=_[_0x9bba('0x43')](_0x4d2ccd['query']);_0x355b0f[_0x9bba('0x2c')]=_[_0x9bba('0x2d')](_0x355b0f[_0x9bba('0x2a')],_0x355b0f[_0x9bba('0x2b')]);_0x242945[_0x9bba('0x2f')]=_[_0x9bba('0x2d')](_0x355b0f[_0x9bba('0x2a')],qs[_0x9bba('0x2e')](_0x4d2ccd[_0x9bba('0x2b')]['fields']));_0x242945[_0x9bba('0x2f')]=_0x242945['attributes'][_0x9bba('0x30')]?_0x242945[_0x9bba('0x2f')]:_0x355b0f[_0x9bba('0x2a')];_0x242945[_0x9bba('0x33')]=qs[_0x9bba('0x34')](_0x4d2ccd[_0x9bba('0x2b')][_0x9bba('0x34')]);_0x242945['where']=qs['filters'](_[_0x9bba('0x36')](_0x4d2ccd[_0x9bba('0x2b')],_0x355b0f[_0x9bba('0x2c')]));if(_0x4d2ccd['query']['filter']){_0x242945[_0x9bba('0x35')]=_[_0x9bba('0x38')](_0x242945['where'],{'$or':_['map'](_0x242945[_0x9bba('0x2f')],function(_0x91029d){var _0x1a24ad={};_0x1a24ad[_0x91029d]={'$like':'%'+_0x4d2ccd[_0x9bba('0x2b')][_0x9bba('0x37')]+'%'};return _0x1a24ad;})});}_0x242945=_[_0x9bba('0x38')]({},_0x242945,_0x4d2ccd[_0x9bba('0x3b')]);return _0x414d94['getConfigurations'](_0x242945);}})[_0x9bba('0x20')](function(_0x47bfbf){if(_0x47bfbf){_0x5b3415=_0x47bfbf[_0x9bba('0x30')];if(!_0x4d2ccd[_0x9bba('0x2b')][_0x9bba('0x31')](_0x9bba('0x32'))){_0x242945[_0x9bba('0x18')]=qs[_0x9bba('0x18')](_0x4d2ccd[_0x9bba('0x2b')]['limit']);_0x242945[_0x9bba('0x1b')]=qs['offset'](_0x4d2ccd['query'][_0x9bba('0x1b')]);}return _0x414d94['getConfigurations'](_0x242945);}})[_0x9bba('0x20')](function(_0x36ad23){if(_0x36ad23){return _0x36ad23?{'count':_0x5b3415,'rows':_0x36ad23}:null;}})[_0x9bba('0x20')](respondWithResult(_0x30a94a,null))[_0x9bba('0x40')](handleError(_0x30a94a,null));};exports[_0x9bba('0x49')]=function(_0x56c1f5,_0x2c3adf,_0x1550d5){if(_0x56c1f5[_0x9bba('0x46')]['id']){delete _0x56c1f5[_0x9bba('0x46')]['id'];}return db['FreshsalesAccount']['findOne']({'where':{'id':_0x56c1f5['params']['id']}})[_0x9bba('0x20')](handleEntityNotFound(_0x2c3adf,null))[_0x9bba('0x20')](function(_0xd1e6eb){if(_0xd1e6eb){_0x56c1f5[_0x9bba('0x46')]['AccountId']=_0xd1e6eb['id'];_0x56c1f5[_0x9bba('0x46')][_0x9bba('0x4a')]=integrations[_0x9bba('0x4b')](_0x56c1f5['body']['channel'],_0x56c1f5[_0x9bba('0x46')][_0x9bba('0x39')]);_0x56c1f5['body'][_0x9bba('0x4c')]=integrations['getDescriptions'](_0x56c1f5[_0x9bba('0x46')][_0x9bba('0x4d')],_0x56c1f5['body']['type']);return db[_0x9bba('0x48')]['create'](_0x56c1f5[_0x9bba('0x46')],{'include':[{'model':db[_0x9bba('0x4e')],'as':_0x9bba('0x4a')},{'model':db[_0x9bba('0x4e')],'as':_0x9bba('0x4c')}]});}return null;})['then'](respondWithResult(_0x2c3adf,null))[_0x9bba('0x40')](handleError(_0x2c3adf,null));};exports['getFields']=function(_0x489d8e,_0x320dce,_0x39b5e2){var _0x1440f2='';var _0x188d9b='';return db['FreshsalesAccount'][_0x9bba('0x4f')]({'where':{'id':_0x489d8e[_0x9bba('0x42')]['id']},'attributes':['id',_0x9bba('0x50'),_0x9bba('0x51'),_0x9bba('0x52')]})['then'](handleEntityNotFound(_0x320dce,null))[_0x9bba('0x20')](function(_0x22f559){if(_0x22f559){_0x188d9b=_0x22f559[_0x9bba('0x50')];_0x1440f2=_0x22f559[_0x9bba('0x51')];var _0x58a12c=_0x22f559['remoteUri']['slice'](-0x1);if(_0x58a12c==='/'){_0x1440f2=_0x1440f2[_0x9bba('0x53')](0x0,_0x1440f2[_0x9bba('0x54')](_0x58a12c));}return rp({'method':_0x9bba('0x55'),'uri':util[_0x9bba('0x56')]('%s%s',_0x1440f2,_0x9bba('0x57')),'headers':{'Authorization':'Token\x20token='+_0x22f559[_0x9bba('0x52')]},'json':!![]});}})[_0x9bba('0x20')](function(_0x13f488){if(_0x13f488){var _0x1e243b=_0x13f488['users'];var _0x1fb766=![];var _0x283ef6=null;for(_0x283ef6=0x0;_0x283ef6<_0x1e243b[_0x9bba('0x30')];_0x283ef6++){if(_0x1e243b[_0x283ef6]['email']===_0x188d9b){_0x1fb766=!![];}}if(_0x1fb766){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x9bba('0x58')});}}})['then'](respondWithResult(_0x320dce,null))[_0x9bba('0x40')](function(_0x592ef0){var _0x2e7f4d=_0x489d8e[_0x9bba('0x2b')][_0x9bba('0x59')]?0x1f4:_0x592ef0[_0x9bba('0x5a')]||0x1f4;logger[_0x9bba('0x21')]('getFields,\x20%s,\x20%s,\x20%s',_0x9bba('0x5b'),_0x2e7f4d,JSON[_0x9bba('0x5c')](_0x592ef0));delete _0x592ef0[_0x9bba('0x23')];if(_0x2e7f4d===0x191){_0x2e7f4d=0x190;}_0x320dce['status'](_0x2e7f4d)['send'](_0x489d8e['query'][_0x9bba('0x59')]?{'message':_0x9bba('0x5d'),'statusCode':_0x592ef0['statusCode']}:_0x592ef0);});};
\ No newline at end of file
+var _0x9cd3=['/api/selector/owners','Token\x20token=','users','email','Requested\x20Resource\x20not\x20Found','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','reject','update','then','destroy','end','error','name','send','index','map','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','sort','where','pick','filter','merge','VIRTUAL','includeAll','FreshsalesAccount','findAll','keys','length','include','options','find','create','catch','body','params','getConfigurations','findOne','FreshsalesConfiguration','order','hasOwnProperty','nolimit','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','FreshsalesField','username','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','%s%s'];(function(_0x78d885,_0x19dec7){var _0x317585=function(_0x3da287){while(--_0x3da287){_0x78d885['push'](_0x78d885['shift']());}};_0x317585(++_0x19dec7);}(_0x9cd3,0xe0));var _0x39cd=function(_0x2a7c2a,_0x37cc9e){_0x2a7c2a=_0x2a7c2a-0x0;var _0x195732=_0x9cd3[_0x2a7c2a];return _0x195732;};'use strict';var emlformat=require(_0x39cd('0x0'));var rimraf=require(_0x39cd('0x1'));var zipdir=require(_0x39cd('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x39cd('0x3'));var moment=require(_0x39cd('0x4'));var BPromise=require(_0x39cd('0x5'));var Mustache=require(_0x39cd('0x6'));var util=require('util');var path=require(_0x39cd('0x7'));var sox=require(_0x39cd('0x8'));var csv=require('to-csv');var ejs=require(_0x39cd('0x9'));var fs=require('fs');var fs_extra=require(_0x39cd('0xa'));var _=require(_0x39cd('0xb'));var squel=require(_0x39cd('0xc'));var crypto=require(_0x39cd('0xd'));var jsforce=require(_0x39cd('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x39cd('0xf'));var querystring=require(_0x39cd('0x10'));var Papa=require(_0x39cd('0x11'));var Redis=require(_0x39cd('0x12'));var authService=require(_0x39cd('0x13'));var qs=require(_0x39cd('0x14'));var as=require(_0x39cd('0x15'));var hardwareService=require(_0x39cd('0x16'));var logger=require(_0x39cd('0x17'))(_0x39cd('0x18'));var utils=require(_0x39cd('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x39cd('0x1a'));var db=require(_0x39cd('0x1b'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x528f4f,_0x1ffcb6){_0x1ffcb6=_0x1ffcb6||0xcc;return function(_0x8a3d52){if(_0x8a3d52){return _0x528f4f[_0x39cd('0x1c')](_0x1ffcb6);}return _0x528f4f[_0x39cd('0x1d')](_0x1ffcb6)['end']();};}function respondWithResult(_0x50c763,_0x16d280){_0x16d280=_0x16d280||0xc8;return function(_0x351f86){if(_0x351f86){return _0x50c763[_0x39cd('0x1d')](_0x16d280)[_0x39cd('0x1e')](_0x351f86);}};}function respondWithFilteredResult(_0x31bd59,_0xe25efe){return function(_0x574694){if(_0x574694){var _0x2be56f=typeof _0xe25efe['offset']===_0x39cd('0x1f')&&typeof _0xe25efe[_0x39cd('0x20')]==='undefined';var _0x41d96c=_0x574694[_0x39cd('0x21')];var _0x1d7399=_0x2be56f?0x0:_0xe25efe[_0x39cd('0x22')];var _0x40749c=_0x2be56f?_0x574694[_0x39cd('0x21')]:_0xe25efe[_0x39cd('0x22')]+_0xe25efe[_0x39cd('0x20')];var _0x2cf32f;if(_0x40749c>=_0x41d96c){_0x40749c=_0x41d96c;_0x2cf32f=0xc8;}else{_0x2cf32f=0xce;}_0x31bd59['status'](_0x2cf32f);return _0x31bd59[_0x39cd('0x23')](_0x39cd('0x24'),_0x1d7399+'-'+_0x40749c+'/'+_0x41d96c)[_0x39cd('0x1e')](_0x574694);}return null;};}function patchUpdates(_0x206137){return function(_0x3a1c13){try{jsonpatch['apply'](_0x3a1c13,_0x206137,!![]);}catch(_0x17cea7){return BPromise[_0x39cd('0x25')](_0x17cea7);}return _0x3a1c13['save']();};}function saveUpdates(_0x554663,_0x1be02f){return function(_0x203cdb){if(_0x203cdb){return _0x203cdb[_0x39cd('0x26')](_0x554663)[_0x39cd('0x27')](function(_0x20b133){return _0x20b133;});}return null;};}function removeEntity(_0x1a829e,_0x19b817){return function(_0xc79967){if(_0xc79967){return _0xc79967[_0x39cd('0x28')]()[_0x39cd('0x27')](function(){_0x1a829e['status'](0xcc)[_0x39cd('0x29')]();});}};}function handleEntityNotFound(_0x490dba,_0x4c1203){return function(_0x3fd383){if(!_0x3fd383){_0x490dba[_0x39cd('0x1c')](0x194);}return _0x3fd383;};}function handleError(_0x1905dc,_0xb029df){_0xb029df=_0xb029df||0x1f4;return function(_0x3a983b){logger[_0x39cd('0x2a')](_0x3a983b['stack']);if(_0x3a983b[_0x39cd('0x2b')]){delete _0x3a983b[_0x39cd('0x2b')];}_0x1905dc[_0x39cd('0x1d')](_0xb029df)[_0x39cd('0x2c')](_0x3a983b);};}exports[_0x39cd('0x2d')]=function(_0x16e223,_0xbc2193){var _0x2bf6fd={},_0x326b66={},_0x876cb8={'count':0x0,'rows':[]};var _0x20682d=_[_0x39cd('0x2e')](db['FreshsalesAccount'][_0x39cd('0x2f')],function(_0x279416){return{'name':_0x279416[_0x39cd('0x30')],'type':_0x279416[_0x39cd('0x31')][_0x39cd('0x32')]};});_0x326b66['model']=_[_0x39cd('0x2e')](_0x20682d,_0x39cd('0x2b'));_0x326b66[_0x39cd('0x33')]=_['keys'](_0x16e223[_0x39cd('0x33')]);_0x326b66[_0x39cd('0x34')]=_[_0x39cd('0x35')](_0x326b66[_0x39cd('0x36')],_0x326b66[_0x39cd('0x33')]);_0x2bf6fd[_0x39cd('0x37')]=_[_0x39cd('0x35')](_0x326b66[_0x39cd('0x36')],qs['fields'](_0x16e223[_0x39cd('0x33')][_0x39cd('0x38')]));_0x2bf6fd[_0x39cd('0x37')]=_0x2bf6fd[_0x39cd('0x37')]['length']?_0x2bf6fd[_0x39cd('0x37')]:_0x326b66[_0x39cd('0x36')];if(!_0x16e223[_0x39cd('0x33')]['hasOwnProperty']('nolimit')){_0x2bf6fd['limit']=qs[_0x39cd('0x20')](_0x16e223['query'][_0x39cd('0x20')]);_0x2bf6fd[_0x39cd('0x22')]=qs[_0x39cd('0x22')](_0x16e223[_0x39cd('0x33')][_0x39cd('0x22')]);}_0x2bf6fd['order']=qs['sort'](_0x16e223[_0x39cd('0x33')][_0x39cd('0x39')]);_0x2bf6fd[_0x39cd('0x3a')]=qs[_0x39cd('0x34')](_[_0x39cd('0x3b')](_0x16e223[_0x39cd('0x33')],_0x326b66['filters']),_0x20682d);if(_0x16e223[_0x39cd('0x33')][_0x39cd('0x3c')]){_0x2bf6fd[_0x39cd('0x3a')]=_[_0x39cd('0x3d')](_0x2bf6fd['where'],{'$or':_['map'](_0x20682d,function(_0x5c9591){if(_0x5c9591['type']!==_0x39cd('0x3e')){var _0x349c32={};_0x349c32[_0x5c9591['name']]={'$like':'%'+_0x16e223[_0x39cd('0x33')][_0x39cd('0x3c')]+'%'};return _0x349c32;}})});}_0x2bf6fd=_['merge']({},_0x2bf6fd,_0x16e223['options']);var _0x38d23e={'where':_0x2bf6fd[_0x39cd('0x3a')]};return db['FreshsalesAccount'][_0x39cd('0x21')](_0x38d23e)[_0x39cd('0x27')](function(_0x3ac465){_0x876cb8[_0x39cd('0x21')]=_0x3ac465;if(_0x16e223[_0x39cd('0x33')][_0x39cd('0x3f')]){_0x2bf6fd['include']=[{'all':!![]}];}return db[_0x39cd('0x40')][_0x39cd('0x41')](_0x2bf6fd);})[_0x39cd('0x27')](function(_0xb7ef21){_0x876cb8['rows']=_0xb7ef21;return _0x876cb8;})[_0x39cd('0x27')](respondWithFilteredResult(_0xbc2193,_0x2bf6fd))['catch'](handleError(_0xbc2193,null));};exports['show']=function(_0x17169d,_0x686d58){var _0x46845c={'raw':![],'where':{'id':_0x17169d['params']['id']}},_0x46ca7a={};_0x46ca7a['model']=_['keys'](db[_0x39cd('0x40')][_0x39cd('0x2f')]);_0x46ca7a[_0x39cd('0x33')]=_[_0x39cd('0x42')](_0x17169d[_0x39cd('0x33')]);_0x46ca7a[_0x39cd('0x34')]=_[_0x39cd('0x35')](_0x46ca7a[_0x39cd('0x36')],_0x46ca7a[_0x39cd('0x33')]);_0x46845c[_0x39cd('0x37')]=_[_0x39cd('0x35')](_0x46ca7a[_0x39cd('0x36')],qs[_0x39cd('0x38')](_0x17169d['query'][_0x39cd('0x38')]));_0x46845c['attributes']=_0x46845c['attributes'][_0x39cd('0x43')]?_0x46845c['attributes']:_0x46ca7a[_0x39cd('0x36')];if(_0x17169d[_0x39cd('0x33')][_0x39cd('0x3f')]){_0x46845c[_0x39cd('0x44')]=[{'all':!![]}];}_0x46845c=_[_0x39cd('0x3d')]({},_0x46845c,_0x17169d[_0x39cd('0x45')]);return db[_0x39cd('0x40')][_0x39cd('0x46')](_0x46845c)[_0x39cd('0x27')](handleEntityNotFound(_0x686d58,null))[_0x39cd('0x27')](respondWithResult(_0x686d58,null))['catch'](handleError(_0x686d58,null));};exports[_0x39cd('0x47')]=function(_0x5b023a,_0x54c47c){return db['FreshsalesAccount'][_0x39cd('0x47')](_0x5b023a['body'],{})['then'](respondWithResult(_0x54c47c,0xc9))[_0x39cd('0x48')](handleError(_0x54c47c,null));};exports[_0x39cd('0x26')]=function(_0x315e2d,_0x5b2838){if(_0x315e2d[_0x39cd('0x49')]['id']){delete _0x315e2d[_0x39cd('0x49')]['id'];}return db[_0x39cd('0x40')][_0x39cd('0x46')]({'where':{'id':_0x315e2d[_0x39cd('0x4a')]['id']}})[_0x39cd('0x27')](handleEntityNotFound(_0x5b2838,null))[_0x39cd('0x27')](saveUpdates(_0x315e2d[_0x39cd('0x49')],null))[_0x39cd('0x27')](respondWithResult(_0x5b2838,null))[_0x39cd('0x48')](handleError(_0x5b2838,null));};exports[_0x39cd('0x28')]=function(_0x392283,_0x3210e4){return db['FreshsalesAccount']['find']({'where':{'id':_0x392283[_0x39cd('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3210e4,null))[_0x39cd('0x27')](removeEntity(_0x3210e4,null))[_0x39cd('0x48')](handleError(_0x3210e4,null));};exports[_0x39cd('0x4b')]=function(_0x33dc32,_0xbd9507,_0x137cd7){var _0x1e06ba={};var _0x51dd9e={};var _0x494bc5;var _0x25d480;return db[_0x39cd('0x40')][_0x39cd('0x4c')]({'where':{'id':_0x33dc32[_0x39cd('0x4a')]['id']}})[_0x39cd('0x27')](handleEntityNotFound(_0xbd9507,null))[_0x39cd('0x27')](function(_0x5556e7){if(_0x5556e7){_0x494bc5=_0x5556e7;_0x51dd9e[_0x39cd('0x36')]=_[_0x39cd('0x42')](db[_0x39cd('0x4d')][_0x39cd('0x2f')]);_0x51dd9e[_0x39cd('0x33')]=_['keys'](_0x33dc32[_0x39cd('0x33')]);_0x51dd9e[_0x39cd('0x34')]=_[_0x39cd('0x35')](_0x51dd9e['model'],_0x51dd9e[_0x39cd('0x33')]);_0x1e06ba[_0x39cd('0x37')]=_[_0x39cd('0x35')](_0x51dd9e[_0x39cd('0x36')],qs[_0x39cd('0x38')](_0x33dc32[_0x39cd('0x33')][_0x39cd('0x38')]));_0x1e06ba[_0x39cd('0x37')]=_0x1e06ba[_0x39cd('0x37')][_0x39cd('0x43')]?_0x1e06ba[_0x39cd('0x37')]:_0x51dd9e[_0x39cd('0x36')];_0x1e06ba[_0x39cd('0x4e')]=qs[_0x39cd('0x39')](_0x33dc32[_0x39cd('0x33')][_0x39cd('0x39')]);_0x1e06ba[_0x39cd('0x3a')]=qs[_0x39cd('0x34')](_[_0x39cd('0x3b')](_0x33dc32['query'],_0x51dd9e[_0x39cd('0x34')]));if(_0x33dc32[_0x39cd('0x33')][_0x39cd('0x3c')]){_0x1e06ba['where']=_[_0x39cd('0x3d')](_0x1e06ba[_0x39cd('0x3a')],{'$or':_[_0x39cd('0x2e')](_0x1e06ba[_0x39cd('0x37')],function(_0x4a4460){var _0x3b18ce={};_0x3b18ce[_0x4a4460]={'$like':'%'+_0x33dc32[_0x39cd('0x33')]['filter']+'%'};return _0x3b18ce;})});}_0x1e06ba=_[_0x39cd('0x3d')]({},_0x1e06ba,_0x33dc32['options']);return _0x494bc5[_0x39cd('0x4b')](_0x1e06ba);}})['then'](function(_0x63f702){if(_0x63f702){_0x25d480=_0x63f702[_0x39cd('0x43')];if(!_0x33dc32[_0x39cd('0x33')][_0x39cd('0x4f')](_0x39cd('0x50'))){_0x1e06ba[_0x39cd('0x20')]=qs[_0x39cd('0x20')](_0x33dc32[_0x39cd('0x33')][_0x39cd('0x20')]);_0x1e06ba['offset']=qs[_0x39cd('0x22')](_0x33dc32['query']['offset']);}return _0x494bc5[_0x39cd('0x4b')](_0x1e06ba);}})[_0x39cd('0x27')](function(_0x77f425){if(_0x77f425){return _0x77f425?{'count':_0x25d480,'rows':_0x77f425}:null;}})['then'](respondWithResult(_0xbd9507,null))[_0x39cd('0x48')](handleError(_0xbd9507,null));};exports['addConfiguration']=function(_0x5214d2,_0x55c883,_0x42775c){if(_0x5214d2['body']['id']){delete _0x5214d2['body']['id'];}return db['FreshsalesAccount'][_0x39cd('0x4c')]({'where':{'id':_0x5214d2['params']['id']}})[_0x39cd('0x27')](handleEntityNotFound(_0x55c883,null))['then'](function(_0x466d8b){if(_0x466d8b){_0x5214d2[_0x39cd('0x49')][_0x39cd('0x51')]=_0x466d8b['id'];_0x5214d2[_0x39cd('0x49')][_0x39cd('0x52')]=integrations[_0x39cd('0x53')](_0x5214d2['body'][_0x39cd('0x54')],_0x5214d2[_0x39cd('0x49')][_0x39cd('0x31')]);_0x5214d2[_0x39cd('0x49')][_0x39cd('0x55')]=integrations[_0x39cd('0x56')](_0x5214d2['body'][_0x39cd('0x54')],_0x5214d2['body'][_0x39cd('0x31')]);return db['FreshsalesConfiguration'][_0x39cd('0x47')](_0x5214d2[_0x39cd('0x49')],{'include':[{'model':db[_0x39cd('0x57')],'as':_0x39cd('0x52')},{'model':db[_0x39cd('0x57')],'as':_0x39cd('0x55')}]});}return null;})[_0x39cd('0x27')](respondWithResult(_0x55c883,null))[_0x39cd('0x48')](handleError(_0x55c883,null));};exports['getFields']=function(_0x3b8ff1,_0x429ea0,_0x424d06){var _0x1d48b7='';var _0x36675f='';return db[_0x39cd('0x40')]['findOne']({'where':{'id':_0x3b8ff1[_0x39cd('0x4a')]['id']},'attributes':['id',_0x39cd('0x58'),_0x39cd('0x59'),_0x39cd('0x5a')]})[_0x39cd('0x27')](handleEntityNotFound(_0x429ea0,null))[_0x39cd('0x27')](function(_0x2fc239){if(_0x2fc239){_0x36675f=_0x2fc239[_0x39cd('0x58')];_0x1d48b7=_0x2fc239[_0x39cd('0x59')];var _0x5f20c5=_0x2fc239[_0x39cd('0x59')][_0x39cd('0x5b')](-0x1);if(_0x5f20c5==='/'){_0x1d48b7=_0x1d48b7[_0x39cd('0x5c')](0x0,_0x1d48b7[_0x39cd('0x5d')](_0x5f20c5));}return rp({'method':_0x39cd('0x5e'),'uri':util[_0x39cd('0x5f')](_0x39cd('0x60'),_0x1d48b7,_0x39cd('0x61')),'headers':{'Authorization':_0x39cd('0x62')+_0x2fc239[_0x39cd('0x5a')]},'json':!![]});}})['then'](function(_0x393340){if(_0x393340){var _0xd75bed=_0x393340[_0x39cd('0x63')];var _0x236917=![];var _0x510869=null;for(_0x510869=0x0;_0x510869<_0xd75bed[_0x39cd('0x43')];_0x510869++){if(_0xd75bed[_0x510869][_0x39cd('0x64')]===_0x36675f){_0x236917=!![];}}if(_0x236917){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x39cd('0x65')});}}})[_0x39cd('0x27')](respondWithResult(_0x429ea0,null))[_0x39cd('0x48')](function(_0x361743){var _0x47337f=_0x3b8ff1['query'][_0x39cd('0x66')]?0x1f4:_0x361743[_0x39cd('0x67')]||0x1f4;logger[_0x39cd('0x2a')](_0x39cd('0x68'),'getFields',_0x47337f,JSON[_0x39cd('0x69')](_0x361743));delete _0x361743[_0x39cd('0x2b')];if(_0x47337f===0x191){_0x47337f=0x190;}_0x429ea0['status'](_0x47337f)[_0x39cd('0x2c')](_0x3b8ff1['query'][_0x39cd('0x66')]?{'message':_0x39cd('0x6a'),'statusCode':_0x361743[_0x39cd('0x67')]}:_0x361743);});};
\ No newline at end of file
index 2c34213..2e216de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeda8=['path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','FreshsalesAccount','int_freshsales_accounts','lodash','util','api','moment','bluebird','request-promise'];(function(_0x1aa75c,_0x5f2182){var _0x68fbf2=function(_0x433a4e){while(--_0x433a4e){_0x1aa75c['push'](_0x1aa75c['shift']());}};_0x68fbf2(++_0x5f2182);}(_0xeda8,0x104));var _0x8eda=function(_0x1ed5aa,_0x44c06a){_0x1ed5aa=_0x1ed5aa-0x0;var _0x172968=_0xeda8[_0x1ed5aa];return _0x172968;};'use strict';var _=require(_0x8eda('0x0'));var util=require(_0x8eda('0x1'));var logger=require('../../config/logger')(_0x8eda('0x2'));var moment=require(_0x8eda('0x3'));var BPromise=require(_0x8eda('0x4'));var rp=require(_0x8eda('0x5'));var fs=require('fs');var path=require(_0x8eda('0x6'));var rimraf=require(_0x8eda('0x7'));var config=require(_0x8eda('0x8'));var attributes=require(_0x8eda('0x9'));var integrations=require(_0x8eda('0xa'));module[_0x8eda('0xb')]=function(_0x349361,_0x32abe8){return _0x349361['define'](_0x8eda('0xc'),attributes,{'tableName':_0x8eda('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x25e7=['request-promise','path','rimraf','../../config/environment','exports','define','FreshsalesAccount','int_freshsales_accounts','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x188971,_0x4ce39a){var _0x201588=function(_0x3a56ed){while(--_0x3a56ed){_0x188971['push'](_0x188971['shift']());}};_0x201588(++_0x4ce39a);}(_0x25e7,0x1d6));var _0x725e=function(_0x1d7cc3,_0x5dfffe){_0x1d7cc3=_0x1d7cc3-0x0;var _0x4468ae=_0x25e7[_0x1d7cc3];return _0x4468ae;};'use strict';var _=require(_0x725e('0x0'));var util=require(_0x725e('0x1'));var logger=require(_0x725e('0x2'))(_0x725e('0x3'));var moment=require(_0x725e('0x4'));var BPromise=require(_0x725e('0x5'));var rp=require(_0x725e('0x6'));var fs=require('fs');var path=require(_0x725e('0x7'));var rimraf=require(_0x725e('0x8'));var config=require(_0x725e('0x9'));var attributes=require('./intFreshsalesAccount.attributes');var integrations=require('../../components/integrations/configuration');module[_0x725e('0xa')]=function(_0x480945,_0x481316){return _0x480945[_0x725e('0xb')](_0x725e('0xc'),attributes,{'tableName':_0x725e('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c615c76..272899c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fdc=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','FreshsalesAccount,\x20%s,\x20%s','info','GetFreshsalesAccount','FreshsalesAccount','options','raw','attributes','include','map','model','ShowFreshsalesAccount','find','where','catch','lodash'];(function(_0x845fcc,_0x518cfb){var _0x3a0e79=function(_0x240732){while(--_0x240732){_0x845fcc['push'](_0x845fcc['shift']());}};_0x3a0e79(++_0x518cfb);}(_0x5fdc,0x127));var _0xc5fd=function(_0x3dbe2c,_0x1d7db8){_0x3dbe2c=_0x3dbe2c-0x0;var _0x483981=_0x5fdc[_0x3dbe2c];return _0x483981;};'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']('FreshsalesAccount,\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']('FreshsalesAccount,\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')]['findAll']({'raw':_0x27f611[_0xc5fd('0x1b')]?_0x27f611[_0xc5fd('0x1b')][_0xc5fd('0x1c')]===undefined?!![]:![]:!![],'where':_0x27f611[_0xc5fd('0x1b')]?_0x27f611[_0xc5fd('0x1b')]['where']||null:null,'attributes':_0x27f611[_0xc5fd('0x1b')]?_0x27f611[_0xc5fd('0x1b')][_0xc5fd('0x1d')]||null:null,'limit':_0x27f611[_0xc5fd('0x1b')]?_0x27f611['options']['limit']||null:null,'include':_0x27f611[_0xc5fd('0x1b')]?_0x27f611[_0xc5fd('0x1b')][_0xc5fd('0x1e')]?_[_0xc5fd('0x1f')](_0x27f611[_0xc5fd('0x1b')][_0xc5fd('0x1e')],function(_0x56d473){return{'model':db[_0x56d473[_0xc5fd('0x20')]],'as':_0x56d473['as'],'attributes':_0x56d473[_0xc5fd('0x1d')],'include':_0x56d473[_0xc5fd('0x1e')]?_[_0xc5fd('0x1f')](_0x56d473[_0xc5fd('0x1e')],function(_0x4020af){return{'model':db[_0x4020af[_0xc5fd('0x20')]],'as':_0x4020af['as'],'attributes':_0x4020af['attributes'],'include':_0x4020af[_0xc5fd('0x1e')]?_['map'](_0x4020af[_0xc5fd('0x1e')],function(_0x231368){return{'model':db[_0x231368[_0xc5fd('0x20')]],'as':_0x231368['as'],'attributes':_0x231368[_0xc5fd('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x176313){logger[_0xc5fd('0x18')](_0xc5fd('0x19'),_0x27f611);logger[_0xc5fd('0x11')](_0xc5fd('0x19'),_0x27f611,JSON[_0xc5fd('0x13')](_0x176313));_0x2ee392(_0x176313);})['catch'](function(_0x412ef7){logger['error']('GetFreshsalesAccount',_0x412ef7[_0xc5fd('0x16')],_0x27f611);_0x3f981f(_0xd0a9f1[_0xc5fd('0x14')](0x1f4,_0x412ef7[_0xc5fd('0x16')]));});});};exports[_0xc5fd('0x21')]=function(_0x7693c4){var _0x85fa81=this;return new Promise(function(_0x2a891d,_0x321eea){return db['FreshsalesAccount'][_0xc5fd('0x22')]({'raw':_0x7693c4[_0xc5fd('0x1b')]?_0x7693c4[_0xc5fd('0x1b')][_0xc5fd('0x1c')]===undefined?!![]:![]:!![],'where':_0x7693c4[_0xc5fd('0x1b')]?_0x7693c4[_0xc5fd('0x1b')][_0xc5fd('0x23')]||null:null,'attributes':_0x7693c4[_0xc5fd('0x1b')]?_0x7693c4[_0xc5fd('0x1b')][_0xc5fd('0x1d')]||null:null,'include':_0x7693c4[_0xc5fd('0x1b')]?_0x7693c4[_0xc5fd('0x1b')]['include']?_[_0xc5fd('0x1f')](_0x7693c4[_0xc5fd('0x1b')][_0xc5fd('0x1e')],function(_0x1fa329){return{'model':db[_0x1fa329[_0xc5fd('0x20')]],'as':_0x1fa329['as'],'attributes':_0x1fa329[_0xc5fd('0x1d')],'include':_0x1fa329[_0xc5fd('0x1e')]?_[_0xc5fd('0x1f')](_0x1fa329[_0xc5fd('0x1e')],function(_0x545bfc){return{'model':db[_0x545bfc[_0xc5fd('0x20')]],'as':_0x545bfc['as'],'attributes':_0x545bfc[_0xc5fd('0x1d')],'include':_0x545bfc[_0xc5fd('0x1e')]?_[_0xc5fd('0x1f')](_0x545bfc[_0xc5fd('0x1e')],function(_0x52267e){return{'model':db[_0x52267e[_0xc5fd('0x20')]],'as':_0x52267e['as'],'attributes':_0x52267e['attributes']};}):[]};}):[]};}):[]:[]})[_0xc5fd('0xf')](function(_0xac7c40){logger['info'](_0xc5fd('0x21'),_0x7693c4);logger['debug'](_0xc5fd('0x21'),_0x7693c4,JSON[_0xc5fd('0x13')](_0xac7c40));_0x2a891d(_0xac7c40);})[_0xc5fd('0x24')](function(_0x4cafb1){logger[_0xc5fd('0x14')](_0xc5fd('0x21'),_0x4cafb1['message'],_0x7693c4);_0x321eea(_0x85fa81[_0xc5fd('0x14')](0x1f4,_0x4cafb1[_0xc5fd('0x16')]));});});};
\ No newline at end of file
+var _0xffd6=['options','raw','limit','include','model','attributes','ShowFreshsalesAccount','FreshsalesAccount','find','where','map','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetFreshsalesAccount','findAll'];(function(_0x57a670,_0x30e402){var _0x41ce21=function(_0x11bd34){while(--_0x11bd34){_0x57a670['push'](_0x57a670['shift']());}};_0x41ce21(++_0x30e402);}(_0xffd6,0x97));var _0x6ffd=function(_0x17928f,_0x4ad33f){_0x17928f=_0x17928f-0x0;var _0x500b63=_0xffd6[_0x17928f];return _0x500b63;};'use strict';var _=require(_0x6ffd('0x0'));var util=require(_0x6ffd('0x1'));var moment=require(_0x6ffd('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6ffd('0x3'));var db=require(_0x6ffd('0x4'))['db'];var utils=require(_0x6ffd('0x5'));var logger=require('../../config/logger')(_0x6ffd('0x6'));var config=require(_0x6ffd('0x7'));var jayson=require(_0x6ffd('0x8'));var client=jayson[_0x6ffd('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x122b71,_0xeefe34,_0x2445a0){return new BPromise(function(_0x1fbbe6,_0x1d8b50){return client['request'](_0x122b71,_0x2445a0)[_0x6ffd('0xa')](function(_0x417f34){logger['info'](_0x6ffd('0xb'),_0xeefe34,_0x6ffd('0xc'));logger[_0x6ffd('0xd')](_0x6ffd('0xe'),_0xeefe34,_0x6ffd('0xc'),JSON[_0x6ffd('0xf')](_0x417f34));if(_0x417f34[_0x6ffd('0x10')]){if(_0x417f34['error'][_0x6ffd('0x11')]===0x1f4){logger[_0x6ffd('0x10')]('FreshsalesAccount,\x20%s,\x20%s',_0xeefe34,_0x417f34[_0x6ffd('0x10')][_0x6ffd('0x12')]);return _0x1d8b50(_0x417f34[_0x6ffd('0x10')][_0x6ffd('0x12')]);}logger['error'](_0x6ffd('0xb'),_0xeefe34,_0x417f34['error'][_0x6ffd('0x12')]);return _0x1fbbe6(_0x417f34['error'][_0x6ffd('0x12')]);}else{logger[_0x6ffd('0x13')](_0x6ffd('0xb'),_0xeefe34,'request\x20sent');_0x1fbbe6(_0x417f34[_0x6ffd('0x14')][_0x6ffd('0x12')]);}})[_0x6ffd('0x15')](function(_0x3394b2){logger[_0x6ffd('0x10')](_0x6ffd('0xb'),_0xeefe34,_0x3394b2);_0x1d8b50(_0x3394b2);});});}exports[_0x6ffd('0x16')]=function(_0x889a4b){var _0x545576=this;return new Promise(function(_0x11a609,_0x56c541){return db['FreshsalesAccount'][_0x6ffd('0x17')]({'raw':_0x889a4b[_0x6ffd('0x18')]?_0x889a4b['options'][_0x6ffd('0x19')]===undefined?!![]:![]:!![],'where':_0x889a4b[_0x6ffd('0x18')]?_0x889a4b['options']['where']||null:null,'attributes':_0x889a4b[_0x6ffd('0x18')]?_0x889a4b[_0x6ffd('0x18')]['attributes']||null:null,'limit':_0x889a4b[_0x6ffd('0x18')]?_0x889a4b[_0x6ffd('0x18')][_0x6ffd('0x1a')]||null:null,'include':_0x889a4b['options']?_0x889a4b[_0x6ffd('0x18')][_0x6ffd('0x1b')]?_['map'](_0x889a4b[_0x6ffd('0x18')][_0x6ffd('0x1b')],function(_0x50c19a){return{'model':db[_0x50c19a[_0x6ffd('0x1c')]],'as':_0x50c19a['as'],'attributes':_0x50c19a[_0x6ffd('0x1d')],'include':_0x50c19a[_0x6ffd('0x1b')]?_['map'](_0x50c19a[_0x6ffd('0x1b')],function(_0x3e5726){return{'model':db[_0x3e5726[_0x6ffd('0x1c')]],'as':_0x3e5726['as'],'attributes':_0x3e5726['attributes'],'include':_0x3e5726[_0x6ffd('0x1b')]?_['map'](_0x3e5726[_0x6ffd('0x1b')],function(_0x43269c){return{'model':db[_0x43269c['model']],'as':_0x43269c['as'],'attributes':_0x43269c['attributes']};}):[]};}):[]};}):[]:[]})[_0x6ffd('0xa')](function(_0x2a0391){logger[_0x6ffd('0x13')]('GetFreshsalesAccount',_0x889a4b);logger['debug'](_0x6ffd('0x16'),_0x889a4b,JSON['stringify'](_0x2a0391));_0x11a609(_0x2a0391);})[_0x6ffd('0x15')](function(_0x20c007){logger['error'](_0x6ffd('0x16'),_0x20c007[_0x6ffd('0x12')],_0x889a4b);_0x56c541(_0x545576[_0x6ffd('0x10')](0x1f4,_0x20c007[_0x6ffd('0x12')]));});});};exports[_0x6ffd('0x1e')]=function(_0x31c609){var _0x225c66=this;return new Promise(function(_0xccb8c,_0x17f627){return db[_0x6ffd('0x1f')][_0x6ffd('0x20')]({'raw':_0x31c609[_0x6ffd('0x18')]?_0x31c609[_0x6ffd('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x31c609['options']?_0x31c609['options'][_0x6ffd('0x21')]||null:null,'attributes':_0x31c609[_0x6ffd('0x18')]?_0x31c609[_0x6ffd('0x18')][_0x6ffd('0x1d')]||null:null,'include':_0x31c609[_0x6ffd('0x18')]?_0x31c609[_0x6ffd('0x18')][_0x6ffd('0x1b')]?_[_0x6ffd('0x22')](_0x31c609[_0x6ffd('0x18')][_0x6ffd('0x1b')],function(_0x26394c){return{'model':db[_0x26394c[_0x6ffd('0x1c')]],'as':_0x26394c['as'],'attributes':_0x26394c[_0x6ffd('0x1d')],'include':_0x26394c['include']?_[_0x6ffd('0x22')](_0x26394c[_0x6ffd('0x1b')],function(_0x2efc20){return{'model':db[_0x2efc20[_0x6ffd('0x1c')]],'as':_0x2efc20['as'],'attributes':_0x2efc20['attributes'],'include':_0x2efc20[_0x6ffd('0x1b')]?_['map'](_0x2efc20['include'],function(_0x617d52){return{'model':db[_0x617d52[_0x6ffd('0x1c')]],'as':_0x617d52['as'],'attributes':_0x617d52[_0x6ffd('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6ffd('0xa')](function(_0x55e9b4){logger[_0x6ffd('0x13')]('ShowFreshsalesAccount',_0x31c609);logger[_0x6ffd('0xd')](_0x6ffd('0x1e'),_0x31c609,JSON[_0x6ffd('0xf')](_0x55e9b4));_0xccb8c(_0x55e9b4);})[_0x6ffd('0x15')](function(_0x23fae4){logger['error']('ShowFreshsalesAccount',_0x23fae4[_0x6ffd('0x12')],_0x31c609);_0x17f627(_0x225c66['error'](0x1f4,_0x23fae4[_0x6ffd('0x12')]));});});};
\ No newline at end of file
index 1224572..48e3b49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x836c=['destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','isAuthenticated','get','/:id','show','/:id/subjects','/:id/descriptions','getDescriptions','post','create','put','update','delete'];(function(_0x3bae3c,_0x4bf839){var _0x24ea62=function(_0x56b813){while(--_0x56b813){_0x3bae3c['push'](_0x3bae3c['shift']());}};_0x24ea62(++_0x4bf839);}(_0x836c,0x1ce));var _0xc836=function(_0x439143,_0x45cdb2){_0x439143=_0x439143-0x0;var _0x4aac6d=_0x836c[_0x439143];return _0x4aac6d;};'use strict';var multer=require(_0xc836('0x0'));var util=require(_0xc836('0x1'));var path=require('path');var timeout=require(_0xc836('0x2'));var express=require(_0xc836('0x3'));var router=express['Router']();var fs_extra=require(_0xc836('0x4'));var auth=require(_0xc836('0x5'));var interaction=require(_0xc836('0x6'));var config=require(_0xc836('0x7'));var controller=require(_0xc836('0x8'));router['get']('/',auth[_0xc836('0x9')](),controller['index']);router[_0xc836('0xa')](_0xc836('0xb'),auth[_0xc836('0x9')](),controller[_0xc836('0xc')]);router[_0xc836('0xa')](_0xc836('0xd'),auth['isAuthenticated'](),controller['getSubjects']);router[_0xc836('0xa')](_0xc836('0xe'),auth[_0xc836('0x9')](),controller[_0xc836('0xf')]);router[_0xc836('0xa')]('/:id/fields',auth[_0xc836('0x9')](),controller['getFields']);router[_0xc836('0x10')]('/',auth[_0xc836('0x9')](),controller[_0xc836('0x11')]);router[_0xc836('0x12')](_0xc836('0xb'),auth[_0xc836('0x9')](),controller[_0xc836('0x13')]);router[_0xc836('0x14')](_0xc836('0xb'),auth[_0xc836('0x9')](),controller[_0xc836('0x15')]);module[_0xc836('0x16')]=router;
\ No newline at end of file
+var _0x469a=['getDescriptions','/:id/fields','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/:id','show','/:id/subjects','/:id/descriptions'];(function(_0x4bd5e0,_0x21d7ae){var _0x1f9f6c=function(_0x29f37c){while(--_0x29f37c){_0x4bd5e0['push'](_0x4bd5e0['shift']());}};_0x1f9f6c(++_0x21d7ae);}(_0x469a,0x147));var _0xa469=function(_0x6a0266,_0x1552d6){_0x6a0266=_0x6a0266-0x0;var _0x309e00=_0x469a[_0x6a0266];return _0x309e00;};'use strict';var multer=require(_0xa469('0x0'));var util=require('util');var path=require(_0xa469('0x1'));var timeout=require(_0xa469('0x2'));var express=require(_0xa469('0x3'));var router=express[_0xa469('0x4')]();var fs_extra=require(_0xa469('0x5'));var auth=require(_0xa469('0x6'));var interaction=require(_0xa469('0x7'));var config=require('../../config/environment');var controller=require('./intFreshsalesConfiguration.controller');router['get']('/',auth[_0xa469('0x8')](),controller[_0xa469('0x9')]);router[_0xa469('0xa')](_0xa469('0xb'),auth[_0xa469('0x8')](),controller[_0xa469('0xc')]);router[_0xa469('0xa')](_0xa469('0xd'),auth[_0xa469('0x8')](),controller['getSubjects']);router[_0xa469('0xa')](_0xa469('0xe'),auth[_0xa469('0x8')](),controller[_0xa469('0xf')]);router[_0xa469('0xa')](_0xa469('0x10'),auth[_0xa469('0x8')](),controller['getFields']);router['post']('/',auth[_0xa469('0x8')](),controller['create']);router['put'](_0xa469('0xb'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xa469('0xb'),auth[_0xa469('0x8')](),controller[_0xa469('0x11')]);module[_0xa469('0x12')]=router;
\ No newline at end of file
index a1a7ca0..c470660 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe38f=['STRING','sequelize','exports'];(function(_0x3b4719,_0x18ce78){var _0x23fe5b=function(_0x4ea206){while(--_0x4ea206){_0x3b4719['push'](_0x3b4719['shift']());}};_0x23fe5b(++_0x18ce78);}(_0xe38f,0x1d5));var _0xfe38=function(_0x4982ac,_0x495cd8){_0x4982ac=_0x4982ac-0x0;var _0x39e2d1=_0xe38f[_0x4982ac];return _0x39e2d1;};'use strict';var Sequelize=require(_0xfe38('0x0'));module[_0xfe38('0x1')]={'name':{'type':Sequelize[_0xfe38('0x2')]},'description':{'type':Sequelize[_0xfe38('0x2')]}};
\ No newline at end of file
+var _0x9a4b=['STRING','sequelize'];(function(_0x57385c,_0x109268){var _0x4b82be=function(_0x255237){while(--_0x255237){_0x57385c['push'](_0x57385c['shift']());}};_0x4b82be(++_0x109268);}(_0x9a4b,0x1a7));var _0xb9a4=function(_0x2dc735,_0x5b3890){_0x2dc735=_0x2dc735-0x0;var _0x1c3693=_0x9a4b[_0x2dc735];return _0x1c3693;};'use strict';var Sequelize=require(_0xb9a4('0x0'));module['exports']={'name':{'type':Sequelize[_0xb9a4('0x1')]},'description':{'type':Sequelize[_0xb9a4('0x1')]}};
\ No newline at end of file
index 0588d5f..7eb4b63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe515=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','map','FreshsalesConfiguration','rawAttributes','type','key','query','filters','intersection','model','attributes','fields','length','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','show','params','keys','find','create','body','update','getSubjects','findOne','FreshsalesField','order','hasOwnProperty','nolimit','getDescriptions','getFields','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x4ded76,_0x28f948){var _0x1b101f=function(_0x39b9c5){while(--_0x39b9c5){_0x4ded76['push'](_0x4ded76['shift']());}};_0x1b101f(++_0x28f948);}(_0xe515,0x194));var _0x5e51=function(_0x1e2d7b,_0x33ee06){_0x1e2d7b=_0x1e2d7b-0x0;var _0x3a7aeb=_0xe515[_0x1e2d7b];return _0x3a7aeb;};'use strict';var emlformat=require(_0x5e51('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5e51('0x1'));var jsonpatch=require(_0x5e51('0x2'));var rp=require(_0x5e51('0x3'));var moment=require(_0x5e51('0x4'));var BPromise=require(_0x5e51('0x5'));var Mustache=require(_0x5e51('0x6'));var util=require(_0x5e51('0x7'));var path=require('path');var sox=require(_0x5e51('0x8'));var csv=require(_0x5e51('0x9'));var ejs=require(_0x5e51('0xa'));var fs=require('fs');var fs_extra=require(_0x5e51('0xb'));var _=require(_0x5e51('0xc'));var squel=require(_0x5e51('0xd'));var crypto=require('crypto');var jsforce=require(_0x5e51('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x5e51('0x9'));var querystring=require(_0x5e51('0xf'));var Papa=require(_0x5e51('0x10'));var Redis=require(_0x5e51('0x11'));var authService=require(_0x5e51('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x5e51('0x13'));var hardwareService=require(_0x5e51('0x14'));var logger=require(_0x5e51('0x15'))(_0x5e51('0x16'));var utils=require(_0x5e51('0x17'));var config=require(_0x5e51('0x18'));var licenseUtil=require(_0x5e51('0x19'));var db=require(_0x5e51('0x1a'))['db'];function respondWithStatusCode(_0x472d00,_0x10780a){_0x10780a=_0x10780a||0xcc;return function(_0x5778ee){if(_0x5778ee){return _0x472d00[_0x5e51('0x1b')](_0x10780a);}return _0x472d00[_0x5e51('0x1c')](_0x10780a)[_0x5e51('0x1d')]();};}function respondWithResult(_0x51faa5,_0x56e840){_0x56e840=_0x56e840||0xc8;return function(_0x36589b){if(_0x36589b){return _0x51faa5[_0x5e51('0x1c')](_0x56e840)[_0x5e51('0x1e')](_0x36589b);}};}function respondWithFilteredResult(_0x87730f,_0x33b028){return function(_0x195d32){if(_0x195d32){var _0x1ac083=typeof _0x33b028['offset']===_0x5e51('0x1f')&&typeof _0x33b028['limit']===_0x5e51('0x1f');var _0x216e3c=_0x195d32[_0x5e51('0x20')];var _0x3e889a=_0x1ac083?0x0:_0x33b028['offset'];var _0x5eb951=_0x1ac083?_0x195d32[_0x5e51('0x20')]:_0x33b028[_0x5e51('0x21')]+_0x33b028[_0x5e51('0x22')];var _0xbc390b;if(_0x5eb951>=_0x216e3c){_0x5eb951=_0x216e3c;_0xbc390b=0xc8;}else{_0xbc390b=0xce;}_0x87730f[_0x5e51('0x1c')](_0xbc390b);return _0x87730f[_0x5e51('0x23')](_0x5e51('0x24'),_0x3e889a+'-'+_0x5eb951+'/'+_0x216e3c)['json'](_0x195d32);}return null;};}function patchUpdates(_0x4629a8){return function(_0x273666){try{jsonpatch[_0x5e51('0x25')](_0x273666,_0x4629a8,!![]);}catch(_0x56628d){return BPromise[_0x5e51('0x26')](_0x56628d);}return _0x273666[_0x5e51('0x27')]();};}function saveUpdates(_0x19da23,_0x295a46){return function(_0x3ab6c7){if(_0x3ab6c7){return _0x3ab6c7['update'](_0x19da23)[_0x5e51('0x28')](function(_0x594c79){return _0x594c79;});}return null;};}function removeEntity(_0x32c9d7,_0x536318){return function(_0x3f2929){if(_0x3f2929){return _0x3f2929[_0x5e51('0x29')]()[_0x5e51('0x28')](function(){_0x32c9d7[_0x5e51('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4e9983,_0x56541d){return function(_0x13ada6){if(!_0x13ada6){_0x4e9983[_0x5e51('0x1b')](0x194);}return _0x13ada6;};}function handleError(_0x3fc1ca,_0x505833){_0x505833=_0x505833||0x1f4;return function(_0x254488){logger[_0x5e51('0x2a')](_0x254488[_0x5e51('0x2b')]);if(_0x254488[_0x5e51('0x2c')]){delete _0x254488[_0x5e51('0x2c')];}_0x3fc1ca[_0x5e51('0x1c')](_0x505833)[_0x5e51('0x2d')](_0x254488);};}exports[_0x5e51('0x2e')]=function(_0x11df8c,_0x5714cd){var _0x30275c={},_0x419815={},_0x3d00f6={'count':0x0,'rows':[]};var _0x405c93=_[_0x5e51('0x2f')](db[_0x5e51('0x30')][_0x5e51('0x31')],function(_0x5e4273){return{'name':_0x5e4273['fieldName'],'type':_0x5e4273[_0x5e51('0x32')][_0x5e51('0x33')]};});_0x419815['model']=_['map'](_0x405c93,_0x5e51('0x2c'));_0x419815[_0x5e51('0x34')]=_['keys'](_0x11df8c[_0x5e51('0x34')]);_0x419815[_0x5e51('0x35')]=_[_0x5e51('0x36')](_0x419815[_0x5e51('0x37')],_0x419815['query']);_0x30275c[_0x5e51('0x38')]=_['intersection'](_0x419815['model'],qs[_0x5e51('0x39')](_0x11df8c['query'][_0x5e51('0x39')]));_0x30275c[_0x5e51('0x38')]=_0x30275c['attributes'][_0x5e51('0x3a')]?_0x30275c[_0x5e51('0x38')]:_0x419815[_0x5e51('0x37')];if(!_0x11df8c[_0x5e51('0x34')]['hasOwnProperty']('nolimit')){_0x30275c[_0x5e51('0x22')]=qs[_0x5e51('0x22')](_0x11df8c['query']['limit']);_0x30275c[_0x5e51('0x21')]=qs[_0x5e51('0x21')](_0x11df8c[_0x5e51('0x34')][_0x5e51('0x21')]);}_0x30275c['order']=qs[_0x5e51('0x3b')](_0x11df8c['query']['sort']);_0x30275c[_0x5e51('0x3c')]=qs[_0x5e51('0x35')](_[_0x5e51('0x3d')](_0x11df8c[_0x5e51('0x34')],_0x419815['filters']),_0x405c93);if(_0x11df8c[_0x5e51('0x34')][_0x5e51('0x3e')]){_0x30275c[_0x5e51('0x3c')]=_['merge'](_0x30275c[_0x5e51('0x3c')],{'$or':_[_0x5e51('0x2f')](_0x405c93,function(_0x4c6c87){if(_0x4c6c87['type']!==_0x5e51('0x3f')){var _0xd30719={};_0xd30719[_0x4c6c87[_0x5e51('0x2c')]]={'$like':'%'+_0x11df8c[_0x5e51('0x34')]['filter']+'%'};return _0xd30719;}})});}_0x30275c=_[_0x5e51('0x40')]({},_0x30275c,_0x11df8c[_0x5e51('0x41')]);var _0x1c8084={'where':_0x30275c[_0x5e51('0x3c')]};return db[_0x5e51('0x30')]['count'](_0x1c8084)[_0x5e51('0x28')](function(_0x32017b){_0x3d00f6[_0x5e51('0x20')]=_0x32017b;if(_0x11df8c[_0x5e51('0x34')][_0x5e51('0x42')]){_0x30275c[_0x5e51('0x43')]=[{'all':!![]}];}return db[_0x5e51('0x30')][_0x5e51('0x44')](_0x30275c);})['then'](function(_0xa17b11){_0x3d00f6['rows']=_0xa17b11;return _0x3d00f6;})[_0x5e51('0x28')](respondWithFilteredResult(_0x5714cd,_0x30275c))[_0x5e51('0x45')](handleError(_0x5714cd,null));};exports[_0x5e51('0x46')]=function(_0xa36f84,_0x29874d){var _0x413910={'raw':![],'where':{'id':_0xa36f84[_0x5e51('0x47')]['id']}},_0x2ea197={};_0x2ea197[_0x5e51('0x37')]=_[_0x5e51('0x48')](db[_0x5e51('0x30')][_0x5e51('0x31')]);_0x2ea197[_0x5e51('0x34')]=_[_0x5e51('0x48')](_0xa36f84[_0x5e51('0x34')]);_0x2ea197[_0x5e51('0x35')]=_[_0x5e51('0x36')](_0x2ea197[_0x5e51('0x37')],_0x2ea197['query']);_0x413910[_0x5e51('0x38')]=_[_0x5e51('0x36')](_0x2ea197[_0x5e51('0x37')],qs['fields'](_0xa36f84[_0x5e51('0x34')][_0x5e51('0x39')]));_0x413910[_0x5e51('0x38')]=_0x413910[_0x5e51('0x38')]['length']?_0x413910['attributes']:_0x2ea197[_0x5e51('0x37')];if(_0xa36f84[_0x5e51('0x34')][_0x5e51('0x42')]){_0x413910[_0x5e51('0x43')]=[{'all':!![]}];}_0x413910=_['merge']({},_0x413910,_0xa36f84['options']);return db[_0x5e51('0x30')][_0x5e51('0x49')](_0x413910)[_0x5e51('0x28')](handleEntityNotFound(_0x29874d,null))['then'](respondWithResult(_0x29874d,null))['catch'](handleError(_0x29874d,null));};exports[_0x5e51('0x4a')]=function(_0x389751,_0x5ef4bd){return db[_0x5e51('0x30')][_0x5e51('0x4a')](_0x389751[_0x5e51('0x4b')],{})[_0x5e51('0x28')](respondWithResult(_0x5ef4bd,0xc9))[_0x5e51('0x45')](handleError(_0x5ef4bd,null));};exports[_0x5e51('0x4c')]=function(_0x4bcc5c,_0x395db1){if(_0x4bcc5c[_0x5e51('0x4b')]['id']){delete _0x4bcc5c[_0x5e51('0x4b')]['id'];}return db[_0x5e51('0x30')]['find']({'where':{'id':_0x4bcc5c[_0x5e51('0x47')]['id']}})[_0x5e51('0x28')](handleEntityNotFound(_0x395db1,null))[_0x5e51('0x28')](saveUpdates(_0x4bcc5c[_0x5e51('0x4b')],null))[_0x5e51('0x28')](respondWithResult(_0x395db1,null))[_0x5e51('0x45')](handleError(_0x395db1,null));};exports[_0x5e51('0x29')]=function(_0x3dfa7a,_0x442a22){return db[_0x5e51('0x30')][_0x5e51('0x49')]({'where':{'id':_0x3dfa7a[_0x5e51('0x47')]['id']}})['then'](handleEntityNotFound(_0x442a22,null))[_0x5e51('0x28')](removeEntity(_0x442a22,null))['catch'](handleError(_0x442a22,null));};exports[_0x5e51('0x4d')]=function(_0x5bb9b6,_0x43183e,_0x57e5ff){var _0x4d9b13={};var _0x34a6b3={};var _0x423410;var _0x2fe8ac;return db[_0x5e51('0x30')][_0x5e51('0x4e')]({'where':{'id':_0x5bb9b6[_0x5e51('0x47')]['id']}})[_0x5e51('0x28')](handleEntityNotFound(_0x43183e,null))[_0x5e51('0x28')](function(_0x4809f8){if(_0x4809f8){_0x423410=_0x4809f8;_0x34a6b3[_0x5e51('0x37')]=_[_0x5e51('0x48')](db[_0x5e51('0x4f')][_0x5e51('0x31')]);_0x34a6b3[_0x5e51('0x34')]=_[_0x5e51('0x48')](_0x5bb9b6[_0x5e51('0x34')]);_0x34a6b3[_0x5e51('0x35')]=_[_0x5e51('0x36')](_0x34a6b3['model'],_0x34a6b3[_0x5e51('0x34')]);_0x4d9b13[_0x5e51('0x38')]=_[_0x5e51('0x36')](_0x34a6b3['model'],qs[_0x5e51('0x39')](_0x5bb9b6[_0x5e51('0x34')]['fields']));_0x4d9b13[_0x5e51('0x38')]=_0x4d9b13['attributes'][_0x5e51('0x3a')]?_0x4d9b13[_0x5e51('0x38')]:_0x34a6b3[_0x5e51('0x37')];_0x4d9b13[_0x5e51('0x50')]=qs[_0x5e51('0x3b')](_0x5bb9b6['query']['sort']);_0x4d9b13['where']=qs[_0x5e51('0x35')](_[_0x5e51('0x3d')](_0x5bb9b6[_0x5e51('0x34')],_0x34a6b3['filters']));if(_0x5bb9b6[_0x5e51('0x34')]['filter']){_0x4d9b13[_0x5e51('0x3c')]=_[_0x5e51('0x40')](_0x4d9b13[_0x5e51('0x3c')],{'$or':_[_0x5e51('0x2f')](_0x4d9b13[_0x5e51('0x38')],function(_0x244391){var _0x232a6e={};_0x232a6e[_0x244391]={'$like':'%'+_0x5bb9b6[_0x5e51('0x34')]['filter']+'%'};return _0x232a6e;})});}_0x4d9b13=_[_0x5e51('0x40')]({},_0x4d9b13,_0x5bb9b6[_0x5e51('0x41')]);return _0x423410[_0x5e51('0x4d')](_0x4d9b13);}})[_0x5e51('0x28')](function(_0x27cb21){if(_0x27cb21){_0x2fe8ac=_0x27cb21[_0x5e51('0x3a')];if(!_0x5bb9b6[_0x5e51('0x34')][_0x5e51('0x51')](_0x5e51('0x52'))){_0x4d9b13[_0x5e51('0x22')]=qs['limit'](_0x5bb9b6[_0x5e51('0x34')]['limit']);_0x4d9b13[_0x5e51('0x21')]=qs['offset'](_0x5bb9b6[_0x5e51('0x34')]['offset']);}return _0x423410['getSubjects'](_0x4d9b13);}})[_0x5e51('0x28')](function(_0x3868d4){if(_0x3868d4){return _0x3868d4?{'count':_0x2fe8ac,'rows':_0x3868d4}:null;}})[_0x5e51('0x28')](respondWithResult(_0x43183e,null))['catch'](handleError(_0x43183e,null));};exports[_0x5e51('0x53')]=function(_0x3544a3,_0x3ffb2a,_0x2913df){var _0x2e9861={};var _0x2fe583={};var _0x3d3778;var _0x16eb85;return db[_0x5e51('0x30')]['findOne']({'where':{'id':_0x3544a3[_0x5e51('0x47')]['id']}})['then'](handleEntityNotFound(_0x3ffb2a,null))[_0x5e51('0x28')](function(_0x5ac8f5){if(_0x5ac8f5){_0x3d3778=_0x5ac8f5;_0x2fe583[_0x5e51('0x37')]=_[_0x5e51('0x48')](db['FreshsalesField'][_0x5e51('0x31')]);_0x2fe583[_0x5e51('0x34')]=_[_0x5e51('0x48')](_0x3544a3[_0x5e51('0x34')]);_0x2fe583['filters']=_['intersection'](_0x2fe583[_0x5e51('0x37')],_0x2fe583[_0x5e51('0x34')]);_0x2e9861[_0x5e51('0x38')]=_[_0x5e51('0x36')](_0x2fe583['model'],qs[_0x5e51('0x39')](_0x3544a3['query']['fields']));_0x2e9861[_0x5e51('0x38')]=_0x2e9861[_0x5e51('0x38')][_0x5e51('0x3a')]?_0x2e9861[_0x5e51('0x38')]:_0x2fe583[_0x5e51('0x37')];_0x2e9861[_0x5e51('0x50')]=qs['sort'](_0x3544a3['query'][_0x5e51('0x3b')]);_0x2e9861[_0x5e51('0x3c')]=qs['filters'](_['pick'](_0x3544a3[_0x5e51('0x34')],_0x2fe583[_0x5e51('0x35')]));if(_0x3544a3[_0x5e51('0x34')]['filter']){_0x2e9861[_0x5e51('0x3c')]=_[_0x5e51('0x40')](_0x2e9861[_0x5e51('0x3c')],{'$or':_[_0x5e51('0x2f')](_0x2e9861[_0x5e51('0x38')],function(_0x290100){var _0x3d5d9e={};_0x3d5d9e[_0x290100]={'$like':'%'+_0x3544a3[_0x5e51('0x34')][_0x5e51('0x3e')]+'%'};return _0x3d5d9e;})});}_0x2e9861=_[_0x5e51('0x40')]({},_0x2e9861,_0x3544a3[_0x5e51('0x41')]);return _0x3d3778[_0x5e51('0x53')](_0x2e9861);}})[_0x5e51('0x28')](function(_0x33a2d0){if(_0x33a2d0){_0x16eb85=_0x33a2d0[_0x5e51('0x3a')];if(!_0x3544a3['query'][_0x5e51('0x51')](_0x5e51('0x52'))){_0x2e9861[_0x5e51('0x22')]=qs[_0x5e51('0x22')](_0x3544a3['query']['limit']);_0x2e9861['offset']=qs[_0x5e51('0x21')](_0x3544a3[_0x5e51('0x34')][_0x5e51('0x21')]);}return _0x3d3778[_0x5e51('0x53')](_0x2e9861);}})[_0x5e51('0x28')](function(_0x4d7933){if(_0x4d7933){return _0x4d7933?{'count':_0x16eb85,'rows':_0x4d7933}:null;}})['then'](respondWithResult(_0x3ffb2a,null))[_0x5e51('0x45')](handleError(_0x3ffb2a,null));};exports[_0x5e51('0x54')]=function(_0x49a6fa,_0x3e953c,_0x2f920d){var _0xca53e={};var _0x11ef25={};var _0x37b153;var _0x273a3f;return db['FreshsalesConfiguration'][_0x5e51('0x4e')]({'where':{'id':_0x49a6fa[_0x5e51('0x47')]['id']}})[_0x5e51('0x28')](handleEntityNotFound(_0x3e953c,null))[_0x5e51('0x28')](function(_0x2acdc2){if(_0x2acdc2){_0x37b153=_0x2acdc2;_0x11ef25[_0x5e51('0x37')]=_['keys'](db[_0x5e51('0x4f')][_0x5e51('0x31')]);_0x11ef25[_0x5e51('0x34')]=_[_0x5e51('0x48')](_0x49a6fa[_0x5e51('0x34')]);_0x11ef25[_0x5e51('0x35')]=_[_0x5e51('0x36')](_0x11ef25['model'],_0x11ef25[_0x5e51('0x34')]);_0xca53e[_0x5e51('0x38')]=_[_0x5e51('0x36')](_0x11ef25['model'],qs[_0x5e51('0x39')](_0x49a6fa[_0x5e51('0x34')][_0x5e51('0x39')]));_0xca53e[_0x5e51('0x38')]=_0xca53e['attributes']['length']?_0xca53e[_0x5e51('0x38')]:_0x11ef25[_0x5e51('0x37')];_0xca53e[_0x5e51('0x50')]=qs[_0x5e51('0x3b')](_0x49a6fa[_0x5e51('0x34')][_0x5e51('0x3b')]);_0xca53e['where']=qs['filters'](_[_0x5e51('0x3d')](_0x49a6fa[_0x5e51('0x34')],_0x11ef25[_0x5e51('0x35')]));if(_0x49a6fa['query']['filter']){_0xca53e[_0x5e51('0x3c')]=_[_0x5e51('0x40')](_0xca53e[_0x5e51('0x3c')],{'$or':_[_0x5e51('0x2f')](_0xca53e[_0x5e51('0x38')],function(_0x5ea1ff){var _0x1bda55={};_0x1bda55[_0x5ea1ff]={'$like':'%'+_0x49a6fa[_0x5e51('0x34')][_0x5e51('0x3e')]+'%'};return _0x1bda55;})});}_0xca53e=_[_0x5e51('0x40')]({},_0xca53e,_0x49a6fa[_0x5e51('0x41')]);return _0x37b153['getFields'](_0xca53e);}})['then'](function(_0x473029){if(_0x473029){_0x273a3f=_0x473029['length'];if(!_0x49a6fa[_0x5e51('0x34')][_0x5e51('0x51')](_0x5e51('0x52'))){_0xca53e['limit']=qs[_0x5e51('0x22')](_0x49a6fa[_0x5e51('0x34')][_0x5e51('0x22')]);_0xca53e[_0x5e51('0x21')]=qs[_0x5e51('0x21')](_0x49a6fa[_0x5e51('0x34')][_0x5e51('0x21')]);}return _0x37b153[_0x5e51('0x54')](_0xca53e);}})[_0x5e51('0x28')](function(_0x573f49){if(_0x573f49){return _0x573f49?{'count':_0x273a3f,'rows':_0x573f49}:null;}})['then'](respondWithResult(_0x3e953c,null))['catch'](handleError(_0x3e953c,null));};
\ No newline at end of file
+var _0x7f94=['fields','length','hasOwnProperty','order','sort','pick','where','filter','merge','options','include','findAll','rows','catch','find','create','body','params','getSubjects','findOne','nolimit','getDescriptions','FreshsalesField','getFields','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','update','then','destroy','error','stack','name','send','index','map','FreshsalesConfiguration','rawAttributes','fieldName','type','keys','query','filters','intersection','model','attributes'];(function(_0xcad0c5,_0x46b60b){var _0x69578f=function(_0x594d19){while(--_0x594d19){_0xcad0c5['push'](_0xcad0c5['shift']());}};_0x69578f(++_0x46b60b);}(_0x7f94,0x65));var _0x47f9=function(_0x1e75d7,_0x21107d){_0x1e75d7=_0x1e75d7-0x0;var _0x2c8df1=_0x7f94[_0x1e75d7];return _0x2c8df1;};'use strict';var emlformat=require(_0x47f9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x47f9('0x1'));var jsonpatch=require(_0x47f9('0x2'));var rp=require(_0x47f9('0x3'));var moment=require(_0x47f9('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47f9('0x5'));var util=require(_0x47f9('0x6'));var path=require(_0x47f9('0x7'));var sox=require(_0x47f9('0x8'));var csv=require(_0x47f9('0x9'));var ejs=require(_0x47f9('0xa'));var fs=require('fs');var fs_extra=require(_0x47f9('0xb'));var _=require('lodash');var squel=require(_0x47f9('0xc'));var crypto=require(_0x47f9('0xd'));var jsforce=require(_0x47f9('0xe'));var deskjs=require(_0x47f9('0xf'));var toCsv=require(_0x47f9('0x9'));var querystring=require(_0x47f9('0x10'));var Papa=require(_0x47f9('0x11'));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(_0x47f9('0x12'));var logger=require(_0x47f9('0x13'))(_0x47f9('0x14'));var utils=require(_0x47f9('0x15'));var config=require(_0x47f9('0x16'));var licenseUtil=require(_0x47f9('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5a8bac,_0x1002f7){_0x1002f7=_0x1002f7||0xcc;return function(_0x49c33c){if(_0x49c33c){return _0x5a8bac['sendStatus'](_0x1002f7);}return _0x5a8bac['status'](_0x1002f7)[_0x47f9('0x18')]();};}function respondWithResult(_0x43e4db,_0x4d44dd){_0x4d44dd=_0x4d44dd||0xc8;return function(_0x166860){if(_0x166860){return _0x43e4db[_0x47f9('0x19')](_0x4d44dd)[_0x47f9('0x1a')](_0x166860);}};}function respondWithFilteredResult(_0x2a6444,_0x48cc81){return function(_0x3320d1){if(_0x3320d1){var _0x3703e1=typeof _0x48cc81[_0x47f9('0x1b')]===_0x47f9('0x1c')&&typeof _0x48cc81[_0x47f9('0x1d')]==='undefined';var _0x56775f=_0x3320d1['count'];var _0xd80474=_0x3703e1?0x0:_0x48cc81[_0x47f9('0x1b')];var _0x32bb57=_0x3703e1?_0x3320d1[_0x47f9('0x1e')]:_0x48cc81[_0x47f9('0x1b')]+_0x48cc81[_0x47f9('0x1d')];var _0x29700e;if(_0x32bb57>=_0x56775f){_0x32bb57=_0x56775f;_0x29700e=0xc8;}else{_0x29700e=0xce;}_0x2a6444[_0x47f9('0x19')](_0x29700e);return _0x2a6444[_0x47f9('0x1f')](_0x47f9('0x20'),_0xd80474+'-'+_0x32bb57+'/'+_0x56775f)[_0x47f9('0x1a')](_0x3320d1);}return null;};}function patchUpdates(_0x328d14){return function(_0x397dd5){try{jsonpatch['apply'](_0x397dd5,_0x328d14,!![]);}catch(_0x4d35bf){return BPromise[_0x47f9('0x21')](_0x4d35bf);}return _0x397dd5['save']();};}function saveUpdates(_0x2e2b69,_0x29b7f8){return function(_0x2ecf99){if(_0x2ecf99){return _0x2ecf99[_0x47f9('0x22')](_0x2e2b69)[_0x47f9('0x23')](function(_0x11ef91){return _0x11ef91;});}return null;};}function removeEntity(_0x6a49d,_0x3c4778){return function(_0x4fd2b1){if(_0x4fd2b1){return _0x4fd2b1[_0x47f9('0x24')]()[_0x47f9('0x23')](function(){_0x6a49d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x26bd84,_0x4c16e0){return function(_0x76077d){if(!_0x76077d){_0x26bd84['sendStatus'](0x194);}return _0x76077d;};}function handleError(_0x26174a,_0x1a8c4b){_0x1a8c4b=_0x1a8c4b||0x1f4;return function(_0x5dbdda){logger[_0x47f9('0x25')](_0x5dbdda[_0x47f9('0x26')]);if(_0x5dbdda[_0x47f9('0x27')]){delete _0x5dbdda[_0x47f9('0x27')];}_0x26174a[_0x47f9('0x19')](_0x1a8c4b)[_0x47f9('0x28')](_0x5dbdda);};}exports[_0x47f9('0x29')]=function(_0x52927a,_0x53e951){var _0x4c37d2={},_0x481ccb={},_0x1a5b58={'count':0x0,'rows':[]};var _0x5818a6=_[_0x47f9('0x2a')](db[_0x47f9('0x2b')][_0x47f9('0x2c')],function(_0xaf0fea){return{'name':_0xaf0fea[_0x47f9('0x2d')],'type':_0xaf0fea[_0x47f9('0x2e')]['key']};});_0x481ccb['model']=_[_0x47f9('0x2a')](_0x5818a6,_0x47f9('0x27'));_0x481ccb['query']=_[_0x47f9('0x2f')](_0x52927a[_0x47f9('0x30')]);_0x481ccb[_0x47f9('0x31')]=_[_0x47f9('0x32')](_0x481ccb[_0x47f9('0x33')],_0x481ccb[_0x47f9('0x30')]);_0x4c37d2[_0x47f9('0x34')]=_[_0x47f9('0x32')](_0x481ccb[_0x47f9('0x33')],qs[_0x47f9('0x35')](_0x52927a[_0x47f9('0x30')][_0x47f9('0x35')]));_0x4c37d2[_0x47f9('0x34')]=_0x4c37d2['attributes'][_0x47f9('0x36')]?_0x4c37d2[_0x47f9('0x34')]:_0x481ccb['model'];if(!_0x52927a[_0x47f9('0x30')][_0x47f9('0x37')]('nolimit')){_0x4c37d2[_0x47f9('0x1d')]=qs['limit'](_0x52927a[_0x47f9('0x30')][_0x47f9('0x1d')]);_0x4c37d2[_0x47f9('0x1b')]=qs['offset'](_0x52927a[_0x47f9('0x30')][_0x47f9('0x1b')]);}_0x4c37d2[_0x47f9('0x38')]=qs[_0x47f9('0x39')](_0x52927a[_0x47f9('0x30')]['sort']);_0x4c37d2['where']=qs['filters'](_[_0x47f9('0x3a')](_0x52927a[_0x47f9('0x30')],_0x481ccb[_0x47f9('0x31')]),_0x5818a6);if(_0x52927a['query']['filter']){_0x4c37d2[_0x47f9('0x3b')]=_['merge'](_0x4c37d2[_0x47f9('0x3b')],{'$or':_['map'](_0x5818a6,function(_0x563492){if(_0x563492[_0x47f9('0x2e')]!=='VIRTUAL'){var _0xfe4480={};_0xfe4480[_0x563492[_0x47f9('0x27')]]={'$like':'%'+_0x52927a[_0x47f9('0x30')][_0x47f9('0x3c')]+'%'};return _0xfe4480;}})});}_0x4c37d2=_[_0x47f9('0x3d')]({},_0x4c37d2,_0x52927a[_0x47f9('0x3e')]);var _0x27ca33={'where':_0x4c37d2['where']};return db['FreshsalesConfiguration'][_0x47f9('0x1e')](_0x27ca33)[_0x47f9('0x23')](function(_0x118db1){_0x1a5b58[_0x47f9('0x1e')]=_0x118db1;if(_0x52927a[_0x47f9('0x30')]['includeAll']){_0x4c37d2[_0x47f9('0x3f')]=[{'all':!![]}];}return db[_0x47f9('0x2b')][_0x47f9('0x40')](_0x4c37d2);})[_0x47f9('0x23')](function(_0x3128bc){_0x1a5b58[_0x47f9('0x41')]=_0x3128bc;return _0x1a5b58;})[_0x47f9('0x23')](respondWithFilteredResult(_0x53e951,_0x4c37d2))[_0x47f9('0x42')](handleError(_0x53e951,null));};exports['show']=function(_0x311975,_0xc61254){var _0x55443d={'raw':![],'where':{'id':_0x311975['params']['id']}},_0x587a7f={};_0x587a7f[_0x47f9('0x33')]=_[_0x47f9('0x2f')](db[_0x47f9('0x2b')][_0x47f9('0x2c')]);_0x587a7f[_0x47f9('0x30')]=_[_0x47f9('0x2f')](_0x311975[_0x47f9('0x30')]);_0x587a7f[_0x47f9('0x31')]=_[_0x47f9('0x32')](_0x587a7f[_0x47f9('0x33')],_0x587a7f['query']);_0x55443d['attributes']=_['intersection'](_0x587a7f[_0x47f9('0x33')],qs['fields'](_0x311975[_0x47f9('0x30')][_0x47f9('0x35')]));_0x55443d['attributes']=_0x55443d[_0x47f9('0x34')][_0x47f9('0x36')]?_0x55443d['attributes']:_0x587a7f[_0x47f9('0x33')];if(_0x311975[_0x47f9('0x30')]['includeAll']){_0x55443d[_0x47f9('0x3f')]=[{'all':!![]}];}_0x55443d=_[_0x47f9('0x3d')]({},_0x55443d,_0x311975[_0x47f9('0x3e')]);return db[_0x47f9('0x2b')][_0x47f9('0x43')](_0x55443d)[_0x47f9('0x23')](handleEntityNotFound(_0xc61254,null))[_0x47f9('0x23')](respondWithResult(_0xc61254,null))[_0x47f9('0x42')](handleError(_0xc61254,null));};exports[_0x47f9('0x44')]=function(_0x411695,_0x38d61d){return db[_0x47f9('0x2b')][_0x47f9('0x44')](_0x411695[_0x47f9('0x45')],{})[_0x47f9('0x23')](respondWithResult(_0x38d61d,0xc9))['catch'](handleError(_0x38d61d,null));};exports[_0x47f9('0x22')]=function(_0x1c6e21,_0x58fc09){if(_0x1c6e21[_0x47f9('0x45')]['id']){delete _0x1c6e21[_0x47f9('0x45')]['id'];}return db[_0x47f9('0x2b')]['find']({'where':{'id':_0x1c6e21['params']['id']}})[_0x47f9('0x23')](handleEntityNotFound(_0x58fc09,null))['then'](saveUpdates(_0x1c6e21[_0x47f9('0x45')],null))['then'](respondWithResult(_0x58fc09,null))['catch'](handleError(_0x58fc09,null));};exports[_0x47f9('0x24')]=function(_0x2bd2c7,_0x1b1029){return db[_0x47f9('0x2b')]['find']({'where':{'id':_0x2bd2c7[_0x47f9('0x46')]['id']}})['then'](handleEntityNotFound(_0x1b1029,null))['then'](removeEntity(_0x1b1029,null))[_0x47f9('0x42')](handleError(_0x1b1029,null));};exports[_0x47f9('0x47')]=function(_0x43eb5b,_0x3d796c,_0x28db84){var _0x2495c1={};var _0x578f44={};var _0x231d56;var _0x109343;return db[_0x47f9('0x2b')][_0x47f9('0x48')]({'where':{'id':_0x43eb5b[_0x47f9('0x46')]['id']}})[_0x47f9('0x23')](handleEntityNotFound(_0x3d796c,null))[_0x47f9('0x23')](function(_0x1e45ac){if(_0x1e45ac){_0x231d56=_0x1e45ac;_0x578f44[_0x47f9('0x33')]=_[_0x47f9('0x2f')](db['FreshsalesField'][_0x47f9('0x2c')]);_0x578f44[_0x47f9('0x30')]=_['keys'](_0x43eb5b[_0x47f9('0x30')]);_0x578f44[_0x47f9('0x31')]=_[_0x47f9('0x32')](_0x578f44[_0x47f9('0x33')],_0x578f44[_0x47f9('0x30')]);_0x2495c1[_0x47f9('0x34')]=_[_0x47f9('0x32')](_0x578f44[_0x47f9('0x33')],qs[_0x47f9('0x35')](_0x43eb5b[_0x47f9('0x30')][_0x47f9('0x35')]));_0x2495c1['attributes']=_0x2495c1[_0x47f9('0x34')][_0x47f9('0x36')]?_0x2495c1[_0x47f9('0x34')]:_0x578f44[_0x47f9('0x33')];_0x2495c1['order']=qs[_0x47f9('0x39')](_0x43eb5b['query']['sort']);_0x2495c1[_0x47f9('0x3b')]=qs[_0x47f9('0x31')](_[_0x47f9('0x3a')](_0x43eb5b[_0x47f9('0x30')],_0x578f44['filters']));if(_0x43eb5b['query']['filter']){_0x2495c1[_0x47f9('0x3b')]=_[_0x47f9('0x3d')](_0x2495c1[_0x47f9('0x3b')],{'$or':_[_0x47f9('0x2a')](_0x2495c1[_0x47f9('0x34')],function(_0x48bbb2){var _0x1a28ec={};_0x1a28ec[_0x48bbb2]={'$like':'%'+_0x43eb5b[_0x47f9('0x30')][_0x47f9('0x3c')]+'%'};return _0x1a28ec;})});}_0x2495c1=_[_0x47f9('0x3d')]({},_0x2495c1,_0x43eb5b[_0x47f9('0x3e')]);return _0x231d56[_0x47f9('0x47')](_0x2495c1);}})[_0x47f9('0x23')](function(_0xa9396){if(_0xa9396){_0x109343=_0xa9396[_0x47f9('0x36')];if(!_0x43eb5b[_0x47f9('0x30')]['hasOwnProperty'](_0x47f9('0x49'))){_0x2495c1['limit']=qs['limit'](_0x43eb5b[_0x47f9('0x30')]['limit']);_0x2495c1[_0x47f9('0x1b')]=qs[_0x47f9('0x1b')](_0x43eb5b[_0x47f9('0x30')][_0x47f9('0x1b')]);}return _0x231d56[_0x47f9('0x47')](_0x2495c1);}})[_0x47f9('0x23')](function(_0x409c87){if(_0x409c87){return _0x409c87?{'count':_0x109343,'rows':_0x409c87}:null;}})[_0x47f9('0x23')](respondWithResult(_0x3d796c,null))[_0x47f9('0x42')](handleError(_0x3d796c,null));};exports[_0x47f9('0x4a')]=function(_0x98face,_0x4e4980,_0x228a0d){var _0x45eefd={};var _0x12d935={};var _0x1d6e79;var _0x38901f;return db[_0x47f9('0x2b')][_0x47f9('0x48')]({'where':{'id':_0x98face[_0x47f9('0x46')]['id']}})['then'](handleEntityNotFound(_0x4e4980,null))['then'](function(_0x231dd6){if(_0x231dd6){_0x1d6e79=_0x231dd6;_0x12d935[_0x47f9('0x33')]=_[_0x47f9('0x2f')](db[_0x47f9('0x4b')][_0x47f9('0x2c')]);_0x12d935[_0x47f9('0x30')]=_[_0x47f9('0x2f')](_0x98face[_0x47f9('0x30')]);_0x12d935['filters']=_['intersection'](_0x12d935[_0x47f9('0x33')],_0x12d935[_0x47f9('0x30')]);_0x45eefd['attributes']=_[_0x47f9('0x32')](_0x12d935[_0x47f9('0x33')],qs['fields'](_0x98face[_0x47f9('0x30')]['fields']));_0x45eefd[_0x47f9('0x34')]=_0x45eefd[_0x47f9('0x34')][_0x47f9('0x36')]?_0x45eefd[_0x47f9('0x34')]:_0x12d935['model'];_0x45eefd[_0x47f9('0x38')]=qs[_0x47f9('0x39')](_0x98face[_0x47f9('0x30')][_0x47f9('0x39')]);_0x45eefd[_0x47f9('0x3b')]=qs[_0x47f9('0x31')](_[_0x47f9('0x3a')](_0x98face['query'],_0x12d935[_0x47f9('0x31')]));if(_0x98face['query'][_0x47f9('0x3c')]){_0x45eefd[_0x47f9('0x3b')]=_[_0x47f9('0x3d')](_0x45eefd[_0x47f9('0x3b')],{'$or':_['map'](_0x45eefd['attributes'],function(_0x1208f6){var _0x548f1f={};_0x548f1f[_0x1208f6]={'$like':'%'+_0x98face[_0x47f9('0x30')][_0x47f9('0x3c')]+'%'};return _0x548f1f;})});}_0x45eefd=_[_0x47f9('0x3d')]({},_0x45eefd,_0x98face[_0x47f9('0x3e')]);return _0x1d6e79[_0x47f9('0x4a')](_0x45eefd);}})[_0x47f9('0x23')](function(_0x2c8b80){if(_0x2c8b80){_0x38901f=_0x2c8b80[_0x47f9('0x36')];if(!_0x98face[_0x47f9('0x30')]['hasOwnProperty'](_0x47f9('0x49'))){_0x45eefd[_0x47f9('0x1d')]=qs[_0x47f9('0x1d')](_0x98face[_0x47f9('0x30')][_0x47f9('0x1d')]);_0x45eefd[_0x47f9('0x1b')]=qs['offset'](_0x98face[_0x47f9('0x30')][_0x47f9('0x1b')]);}return _0x1d6e79[_0x47f9('0x4a')](_0x45eefd);}})[_0x47f9('0x23')](function(_0x59a842){if(_0x59a842){return _0x59a842?{'count':_0x38901f,'rows':_0x59a842}:null;}})[_0x47f9('0x23')](respondWithResult(_0x4e4980,null))[_0x47f9('0x42')](handleError(_0x4e4980,null));};exports[_0x47f9('0x4c')]=function(_0x5c0b3f,_0x27b004,_0x43811e){var _0x2ac353={};var _0x52e0fa={};var _0x444d3e;var _0x36382b;return db[_0x47f9('0x2b')][_0x47f9('0x48')]({'where':{'id':_0x5c0b3f[_0x47f9('0x46')]['id']}})[_0x47f9('0x23')](handleEntityNotFound(_0x27b004,null))[_0x47f9('0x23')](function(_0x2a1ea7){if(_0x2a1ea7){_0x444d3e=_0x2a1ea7;_0x52e0fa['model']=_[_0x47f9('0x2f')](db[_0x47f9('0x4b')]['rawAttributes']);_0x52e0fa[_0x47f9('0x30')]=_[_0x47f9('0x2f')](_0x5c0b3f[_0x47f9('0x30')]);_0x52e0fa[_0x47f9('0x31')]=_[_0x47f9('0x32')](_0x52e0fa[_0x47f9('0x33')],_0x52e0fa[_0x47f9('0x30')]);_0x2ac353[_0x47f9('0x34')]=_[_0x47f9('0x32')](_0x52e0fa[_0x47f9('0x33')],qs[_0x47f9('0x35')](_0x5c0b3f[_0x47f9('0x30')]['fields']));_0x2ac353['attributes']=_0x2ac353['attributes'][_0x47f9('0x36')]?_0x2ac353['attributes']:_0x52e0fa[_0x47f9('0x33')];_0x2ac353[_0x47f9('0x38')]=qs[_0x47f9('0x39')](_0x5c0b3f[_0x47f9('0x30')][_0x47f9('0x39')]);_0x2ac353[_0x47f9('0x3b')]=qs[_0x47f9('0x31')](_[_0x47f9('0x3a')](_0x5c0b3f[_0x47f9('0x30')],_0x52e0fa[_0x47f9('0x31')]));if(_0x5c0b3f[_0x47f9('0x30')][_0x47f9('0x3c')]){_0x2ac353[_0x47f9('0x3b')]=_[_0x47f9('0x3d')](_0x2ac353[_0x47f9('0x3b')],{'$or':_[_0x47f9('0x2a')](_0x2ac353[_0x47f9('0x34')],function(_0x17cadc){var _0x4a06cf={};_0x4a06cf[_0x17cadc]={'$like':'%'+_0x5c0b3f[_0x47f9('0x30')]['filter']+'%'};return _0x4a06cf;})});}_0x2ac353=_[_0x47f9('0x3d')]({},_0x2ac353,_0x5c0b3f[_0x47f9('0x3e')]);return _0x444d3e[_0x47f9('0x4c')](_0x2ac353);}})[_0x47f9('0x23')](function(_0x3ac4c9){if(_0x3ac4c9){_0x36382b=_0x3ac4c9[_0x47f9('0x36')];if(!_0x5c0b3f[_0x47f9('0x30')]['hasOwnProperty'](_0x47f9('0x49'))){_0x2ac353[_0x47f9('0x1d')]=qs[_0x47f9('0x1d')](_0x5c0b3f[_0x47f9('0x30')][_0x47f9('0x1d')]);_0x2ac353[_0x47f9('0x1b')]=qs['offset'](_0x5c0b3f[_0x47f9('0x30')][_0x47f9('0x1b')]);}return _0x444d3e[_0x47f9('0x4c')](_0x2ac353);}})['then'](function(_0x4cb084){if(_0x4cb084){return _0x4cb084?{'count':_0x36382b,'rows':_0x4cb084}:null;}})['then'](respondWithResult(_0x27b004,null))[_0x47f9('0x42')](handleError(_0x27b004,null));};
\ No newline at end of file
index 7a809dc..bd0dde1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2756=['path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports','FreshsalesConfiguration','int_freshsales_configurations','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x82d00a,_0x3477e3){var _0x3c093e=function(_0x4c5328){while(--_0x4c5328){_0x82d00a['push'](_0x82d00a['shift']());}};_0x3c093e(++_0x3477e3);}(_0x2756,0xa3));var _0x6275=function(_0x289e64,_0x5adb3c){_0x289e64=_0x289e64-0x0;var _0x30246c=_0x2756[_0x289e64];return _0x30246c;};'use strict';var _=require(_0x6275('0x0'));var util=require(_0x6275('0x1'));var logger=require(_0x6275('0x2'))(_0x6275('0x3'));var moment=require(_0x6275('0x4'));var BPromise=require(_0x6275('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6275('0x6'));var rimraf=require(_0x6275('0x7'));var config=require(_0x6275('0x8'));var attributes=require(_0x6275('0x9'));module[_0x6275('0xa')]=function(_0x1c06a2,_0x2207c1){return _0x1c06a2['define'](_0x6275('0xb'),attributes,{'tableName':_0x6275('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa96e=['lodash','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','FreshsalesConfiguration'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0xa96e,0x78));var _0xea96=function(_0x264926,_0x42d6ad){_0x264926=_0x264926-0x0;var _0x1a1471=_0xa96e[_0x264926];return _0x1a1471;};'use strict';var _=require(_0xea96('0x0'));var util=require('util');var logger=require(_0xea96('0x1'))('api');var moment=require(_0xea96('0x2'));var BPromise=require(_0xea96('0x3'));var rp=require(_0xea96('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xea96('0x5'));var config=require(_0xea96('0x6'));var attributes=require('./intFreshsalesConfiguration.attributes');module[_0xea96('0x7')]=function(_0x157565,_0x5606a7){return _0x157565[_0xea96('0x8')](_0xea96('0x9'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 743b0db..f89dbcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ce2=['result','message','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x361aa1,_0x35e472){var _0x3c436b=function(_0x55834c){while(--_0x55834c){_0x361aa1['push'](_0x361aa1['shift']());}};_0x3c436b(++_0x35e472);}(_0x4ce2,0x13d));var _0x24ce=function(_0xefaad,_0x338701){_0xefaad=_0xefaad-0x0;var _0x5b431e=_0x4ce2[_0xefaad];return _0x5b431e;};'use strict';var _=require(_0x24ce('0x0'));var util=require('util');var moment=require(_0x24ce('0x1'));var BPromise=require('bluebird');var rs=require(_0x24ce('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x24ce('0x3'))['db'];var utils=require(_0x24ce('0x4'));var logger=require(_0x24ce('0x5'))(_0x24ce('0x6'));var config=require(_0x24ce('0x7'));var jayson=require(_0x24ce('0x8'));var client=jayson[_0x24ce('0x9')][_0x24ce('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x334d20,_0x3419a8,_0x26e2bc){return new BPromise(function(_0x14bde1,_0x5ddf0a){return client['request'](_0x334d20,_0x26e2bc)['then'](function(_0x5d0734){logger[_0x24ce('0xb')](_0x24ce('0xc'),_0x3419a8,_0x24ce('0xd'));logger[_0x24ce('0xe')](_0x24ce('0xf'),_0x3419a8,_0x24ce('0xd'),JSON[_0x24ce('0x10')](_0x5d0734));if(_0x5d0734[_0x24ce('0x11')]){if(_0x5d0734[_0x24ce('0x11')][_0x24ce('0x12')]===0x1f4){logger[_0x24ce('0x11')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x3419a8,_0x5d0734[_0x24ce('0x11')]['message']);return _0x5ddf0a(_0x5d0734[_0x24ce('0x11')]['message']);}logger['error'](_0x24ce('0xc'),_0x3419a8,_0x5d0734['error']['message']);return _0x14bde1(_0x5d0734[_0x24ce('0x11')]['message']);}else{logger[_0x24ce('0xb')](_0x24ce('0xc'),_0x3419a8,_0x24ce('0xd'));_0x14bde1(_0x5d0734[_0x24ce('0x13')][_0x24ce('0x14')]);}})['catch'](function(_0x337c9a){logger['error'](_0x24ce('0xc'),_0x3419a8,_0x337c9a);_0x5ddf0a(_0x337c9a);});});}
\ No newline at end of file
+var _0x151d=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','error','code','FreshsalesConfiguration,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','util','moment'];(function(_0x134b5a,_0x12a79c){var _0x24b69a=function(_0x1f5deb){while(--_0x1f5deb){_0x134b5a['push'](_0x134b5a['shift']());}};_0x24b69a(++_0x12a79c);}(_0x151d,0x1b2));var _0xd151=function(_0x2dd2bf,_0x10ab08){_0x2dd2bf=_0x2dd2bf-0x0;var _0x5f3f20=_0x151d[_0x2dd2bf];return _0x5f3f20;};'use strict';var _=require(_0xd151('0x0'));var util=require(_0xd151('0x1'));var moment=require(_0xd151('0x2'));var BPromise=require(_0xd151('0x3'));var rs=require(_0xd151('0x4'));var fs=require('fs');var Redis=require(_0xd151('0x5'));var db=require(_0xd151('0x6'))['db'];var utils=require(_0xd151('0x7'));var logger=require(_0xd151('0x8'))('rpc');var config=require(_0xd151('0x9'));var jayson=require(_0xd151('0xa'));var client=jayson[_0xd151('0xb')][_0xd151('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1b5122,_0x1a1984,_0x502498){return new BPromise(function(_0x8caec8,_0x21ae9b){return client[_0xd151('0xd')](_0x1b5122,_0x502498)['then'](function(_0x24f839){logger[_0xd151('0xe')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x1a1984,'request\x20sent');logger['debug'](_0xd151('0xf'),_0x1a1984,'request\x20sent',JSON['stringify'](_0x24f839));if(_0x24f839[_0xd151('0x10')]){if(_0x24f839[_0xd151('0x10')][_0xd151('0x11')]===0x1f4){logger[_0xd151('0x10')](_0xd151('0x12'),_0x1a1984,_0x24f839['error']['message']);return _0x21ae9b(_0x24f839['error'][_0xd151('0x13')]);}logger['error']('FreshsalesConfiguration,\x20%s,\x20%s',_0x1a1984,_0x24f839[_0xd151('0x10')]['message']);return _0x8caec8(_0x24f839['error'][_0xd151('0x13')]);}else{logger['info'](_0xd151('0x12'),_0x1a1984,_0xd151('0x14'));_0x8caec8(_0x24f839[_0xd151('0x15')][_0xd151('0x13')]);}})[_0xd151('0x16')](function(_0x58a713){logger[_0xd151('0x10')](_0xd151('0x12'),_0x1a1984,_0x58a713);_0x21ae9b(_0x58a713);});});}
\ No newline at end of file
index 51083b8..056ebd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4522=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','destroy','exports','path','connect-timeout'];(function(_0x21a0cb,_0x5a4cc5){var _0x2e9bb4=function(_0x3b47cf){while(--_0x3b47cf){_0x21a0cb['push'](_0x21a0cb['shift']());}};_0x2e9bb4(++_0x5a4cc5);}(_0x4522,0x1a0));var _0x2452=function(_0x44608c,_0x55fcff){_0x44608c=_0x44608c-0x0;var _0x4ffaf2=_0x4522[_0x44608c];return _0x4ffaf2;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x2452('0x0'));var timeout=require(_0x2452('0x1'));var express=require(_0x2452('0x2'));var router=express['Router']();var fs_extra=require(_0x2452('0x3'));var auth=require(_0x2452('0x4'));var interaction=require(_0x2452('0x5'));var config=require(_0x2452('0x6'));var controller=require(_0x2452('0x7'));router[_0x2452('0x8')]('/',auth[_0x2452('0x9')](),controller[_0x2452('0xa')]);router[_0x2452('0x8')](_0x2452('0xb'),auth[_0x2452('0x9')](),controller[_0x2452('0xc')]);router[_0x2452('0xd')]('/',auth[_0x2452('0x9')](),controller[_0x2452('0xe')]);router[_0x2452('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x2452('0x10')]);router['delete']('/:id',auth[_0x2452('0x9')](),controller[_0x2452('0x11')]);module[_0x2452('0x12')]=router;
\ No newline at end of file
+var _0x80df=['post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','index','show'];(function(_0x2ee333,_0x7bd45d){var _0x4bba7b=function(_0x24401a){while(--_0x24401a){_0x2ee333['push'](_0x2ee333['shift']());}};_0x4bba7b(++_0x7bd45d);}(_0x80df,0x17e));var _0xf80d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x80df[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0xf80d('0x0'));var util=require(_0xf80d('0x1'));var path=require(_0xf80d('0x2'));var timeout=require(_0xf80d('0x3'));var express=require('express');var router=express[_0xf80d('0x4')]();var fs_extra=require(_0xf80d('0x5'));var auth=require(_0xf80d('0x6'));var interaction=require(_0xf80d('0x7'));var config=require(_0xf80d('0x8'));var controller=require(_0xf80d('0x9'));router[_0xf80d('0xa')]('/',auth[_0xf80d('0xb')](),controller[_0xf80d('0xc')]);router[_0xf80d('0xa')]('/:id',auth[_0xf80d('0xb')](),controller[_0xf80d('0xd')]);router[_0xf80d('0xe')]('/',auth[_0xf80d('0xb')](),controller[_0xf80d('0xf')]);router[_0xf80d('0x10')](_0xf80d('0x11'),auth[_0xf80d('0xb')](),controller[_0xf80d('0x12')]);router[_0xf80d('0x13')](_0xf80d('0x11'),auth[_0xf80d('0xb')](),controller[_0xf80d('0x14')]);module[_0xf80d('0x15')]=router;
\ No newline at end of file
index 7cb5b42..4d229a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4516=['STRING','ENUM','sequelize','exports','string','variable','customVariable','keyValue'];(function(_0x845264,_0x5bc246){var _0x57f583=function(_0x5c0079){while(--_0x5c0079){_0x845264['push'](_0x845264['shift']());}};_0x57f583(++_0x5bc246);}(_0x4516,0xa2));var _0x6451=function(_0x381eec,_0x165e28){_0x381eec=_0x381eec-0x0;var _0xdba11e=_0x4516[_0x381eec];return _0xdba11e;};'use strict';var Sequelize=require(_0x6451('0x0'));module[_0x6451('0x1')]={'type':{'type':Sequelize['ENUM'](_0x6451('0x2'),_0x6451('0x3'),_0x6451('0x4'),_0x6451('0x5'),'picklist'),'defaultValue':_0x6451('0x2')},'content':{'type':Sequelize[_0x6451('0x6')]},'key':{'type':Sequelize[_0x6451('0x6')]},'keyType':{'type':Sequelize[_0x6451('0x7')](_0x6451('0x2'),_0x6451('0x3'),_0x6451('0x4'))},'keyContent':{'type':Sequelize[_0x6451('0x6')]},'idField':{'type':Sequelize[_0x6451('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x6451('0x6')]}};
\ No newline at end of file
+var _0xb99c=['string','variable','keyValue','picklist','STRING','customVariable','BOOLEAN','exports','ENUM'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xb99c,0x127));var _0xcb99=function(_0x570818,_0x1012d2){_0x570818=_0x570818-0x0;var _0x5c4734=_0xb99c[_0x570818];return _0x5c4734;};'use strict';var Sequelize=require('sequelize');module[_0xcb99('0x0')]={'type':{'type':Sequelize[_0xcb99('0x1')](_0xcb99('0x2'),_0xcb99('0x3'),'customVariable',_0xcb99('0x4'),_0xcb99('0x5')),'defaultValue':_0xcb99('0x2')},'content':{'type':Sequelize[_0xcb99('0x6')]},'key':{'type':Sequelize[_0xcb99('0x6')]},'keyType':{'type':Sequelize[_0xcb99('0x1')](_0xcb99('0x2'),_0xcb99('0x3'),_0xcb99('0x7'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0xcb99('0x6')]},'customField':{'type':Sequelize[_0xcb99('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xcb99('0x6')]}};
\ No newline at end of file
index eb65929..3bcd35e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b89=['sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','error','name','send','index','map','FreshsalesField','type','key','query','keys','filters','intersection','model','fields','attributes','nolimit','sort','where','filter','merge','options','includeAll','include','findAll','show','rawAttributes','find','catch','create','body','update','params','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0x9b89,0x136));var _0x99b8=function(_0xe78b7f,_0x54e807){_0xe78b7f=_0xe78b7f-0x0;var _0x144429=_0x9b89[_0xe78b7f];return _0x144429;};'use strict';var emlformat=require(_0x99b8('0x0'));var rimraf=require(_0x99b8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x99b8('0x2'));var rp=require(_0x99b8('0x3'));var moment=require('moment');var BPromise=require(_0x99b8('0x4'));var Mustache=require(_0x99b8('0x5'));var util=require('util');var path=require(_0x99b8('0x6'));var sox=require(_0x99b8('0x7'));var csv=require(_0x99b8('0x8'));var ejs=require(_0x99b8('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x99b8('0xa'));var squel=require('squel');var crypto=require(_0x99b8('0xb'));var jsforce=require(_0x99b8('0xc'));var deskjs=require(_0x99b8('0xd'));var toCsv=require(_0x99b8('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x99b8('0xe'));var logger=require(_0x99b8('0xf'))(_0x99b8('0x10'));var utils=require(_0x99b8('0x11'));var config=require(_0x99b8('0x12'));var licenseUtil=require(_0x99b8('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5c7247,_0x467c95){_0x467c95=_0x467c95||0xcc;return function(_0x5f0639){if(_0x5f0639){return _0x5c7247[_0x99b8('0x14')](_0x467c95);}return _0x5c7247[_0x99b8('0x15')](_0x467c95)[_0x99b8('0x16')]();};}function respondWithResult(_0x344c46,_0x466c9e){_0x466c9e=_0x466c9e||0xc8;return function(_0x4f3042){if(_0x4f3042){return _0x344c46['status'](_0x466c9e)[_0x99b8('0x17')](_0x4f3042);}};}function respondWithFilteredResult(_0x11e24f,_0x1f7198){return function(_0x771f32){if(_0x771f32){var _0x3b551a=typeof _0x1f7198[_0x99b8('0x18')]===_0x99b8('0x19')&&typeof _0x1f7198[_0x99b8('0x1a')]===_0x99b8('0x19');var _0x58aaf7=_0x771f32[_0x99b8('0x1b')];var _0x2b4882=_0x3b551a?0x0:_0x1f7198[_0x99b8('0x18')];var _0xa5858b=_0x3b551a?_0x771f32[_0x99b8('0x1b')]:_0x1f7198[_0x99b8('0x18')]+_0x1f7198[_0x99b8('0x1a')];var _0x312325;if(_0xa5858b>=_0x58aaf7){_0xa5858b=_0x58aaf7;_0x312325=0xc8;}else{_0x312325=0xce;}_0x11e24f['status'](_0x312325);return _0x11e24f[_0x99b8('0x1c')](_0x99b8('0x1d'),_0x2b4882+'-'+_0xa5858b+'/'+_0x58aaf7)[_0x99b8('0x17')](_0x771f32);}return null;};}function patchUpdates(_0x4e2bfd){return function(_0x2bee0a){try{jsonpatch['apply'](_0x2bee0a,_0x4e2bfd,!![]);}catch(_0x898fa4){return BPromise[_0x99b8('0x1e')](_0x898fa4);}return _0x2bee0a[_0x99b8('0x1f')]();};}function saveUpdates(_0x146146,_0x14dd31){return function(_0x3c4b6f){if(_0x3c4b6f){return _0x3c4b6f['update'](_0x146146)[_0x99b8('0x20')](function(_0x162d5c){return _0x162d5c;});}return null;};}function removeEntity(_0x47fb1b,_0xe2d12c){return function(_0x31a3dd){if(_0x31a3dd){return _0x31a3dd[_0x99b8('0x21')]()[_0x99b8('0x20')](function(){_0x47fb1b[_0x99b8('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x9855f8,_0x4adf4d){return function(_0xb2533){if(!_0xb2533){_0x9855f8[_0x99b8('0x14')](0x194);}return _0xb2533;};}function handleError(_0x1fb504,_0x17937f){_0x17937f=_0x17937f||0x1f4;return function(_0x1e557f){logger[_0x99b8('0x22')](_0x1e557f['stack']);if(_0x1e557f['name']){delete _0x1e557f[_0x99b8('0x23')];}_0x1fb504[_0x99b8('0x15')](_0x17937f)[_0x99b8('0x24')](_0x1e557f);};}exports[_0x99b8('0x25')]=function(_0x67fc00,_0x4a608d){var _0x374e51={},_0x2b846f={},_0x1b174e={'count':0x0,'rows':[]};var _0x29c62b=_[_0x99b8('0x26')](db[_0x99b8('0x27')]['rawAttributes'],function(_0x227d20){return{'name':_0x227d20['fieldName'],'type':_0x227d20[_0x99b8('0x28')][_0x99b8('0x29')]};});_0x2b846f['model']=_[_0x99b8('0x26')](_0x29c62b,_0x99b8('0x23'));_0x2b846f[_0x99b8('0x2a')]=_[_0x99b8('0x2b')](_0x67fc00['query']);_0x2b846f[_0x99b8('0x2c')]=_[_0x99b8('0x2d')](_0x2b846f[_0x99b8('0x2e')],_0x2b846f[_0x99b8('0x2a')]);_0x374e51['attributes']=_[_0x99b8('0x2d')](_0x2b846f[_0x99b8('0x2e')],qs[_0x99b8('0x2f')](_0x67fc00['query'][_0x99b8('0x2f')]));_0x374e51[_0x99b8('0x30')]=_0x374e51['attributes']['length']?_0x374e51[_0x99b8('0x30')]:_0x2b846f[_0x99b8('0x2e')];if(!_0x67fc00[_0x99b8('0x2a')]['hasOwnProperty'](_0x99b8('0x31'))){_0x374e51[_0x99b8('0x1a')]=qs[_0x99b8('0x1a')](_0x67fc00['query']['limit']);_0x374e51[_0x99b8('0x18')]=qs['offset'](_0x67fc00['query'][_0x99b8('0x18')]);}_0x374e51['order']=qs[_0x99b8('0x32')](_0x67fc00[_0x99b8('0x2a')][_0x99b8('0x32')]);_0x374e51[_0x99b8('0x33')]=qs['filters'](_['pick'](_0x67fc00[_0x99b8('0x2a')],_0x2b846f[_0x99b8('0x2c')]),_0x29c62b);if(_0x67fc00['query'][_0x99b8('0x34')]){_0x374e51[_0x99b8('0x33')]=_['merge'](_0x374e51[_0x99b8('0x33')],{'$or':_[_0x99b8('0x26')](_0x29c62b,function(_0x30f15f){if(_0x30f15f[_0x99b8('0x28')]!=='VIRTUAL'){var _0x716a15={};_0x716a15[_0x30f15f[_0x99b8('0x23')]]={'$like':'%'+_0x67fc00[_0x99b8('0x2a')]['filter']+'%'};return _0x716a15;}})});}_0x374e51=_[_0x99b8('0x35')]({},_0x374e51,_0x67fc00[_0x99b8('0x36')]);var _0x4cff1a={'where':_0x374e51['where']};return db[_0x99b8('0x27')][_0x99b8('0x1b')](_0x4cff1a)[_0x99b8('0x20')](function(_0x49657d){_0x1b174e[_0x99b8('0x1b')]=_0x49657d;if(_0x67fc00[_0x99b8('0x2a')][_0x99b8('0x37')]){_0x374e51[_0x99b8('0x38')]=[{'all':!![]}];}return db[_0x99b8('0x27')][_0x99b8('0x39')](_0x374e51);})[_0x99b8('0x20')](function(_0x1f2f46){_0x1b174e['rows']=_0x1f2f46;return _0x1b174e;})[_0x99b8('0x20')](respondWithFilteredResult(_0x4a608d,_0x374e51))['catch'](handleError(_0x4a608d,null));};exports[_0x99b8('0x3a')]=function(_0x565c33,_0x1bd280){var _0x11a06c={'raw':!![],'where':{'id':_0x565c33['params']['id']}},_0x57e69a={};_0x57e69a[_0x99b8('0x2e')]=_['keys'](db['FreshsalesField'][_0x99b8('0x3b')]);_0x57e69a[_0x99b8('0x2a')]=_['keys'](_0x565c33[_0x99b8('0x2a')]);_0x57e69a[_0x99b8('0x2c')]=_[_0x99b8('0x2d')](_0x57e69a[_0x99b8('0x2e')],_0x57e69a[_0x99b8('0x2a')]);_0x11a06c['attributes']=_['intersection'](_0x57e69a[_0x99b8('0x2e')],qs[_0x99b8('0x2f')](_0x565c33[_0x99b8('0x2a')]['fields']));_0x11a06c[_0x99b8('0x30')]=_0x11a06c['attributes']['length']?_0x11a06c[_0x99b8('0x30')]:_0x57e69a[_0x99b8('0x2e')];if(_0x565c33[_0x99b8('0x2a')]['includeAll']){_0x11a06c['include']=[{'all':!![]}];}_0x11a06c=_[_0x99b8('0x35')]({},_0x11a06c,_0x565c33[_0x99b8('0x36')]);return db[_0x99b8('0x27')][_0x99b8('0x3c')](_0x11a06c)['then'](handleEntityNotFound(_0x1bd280,null))['then'](respondWithResult(_0x1bd280,null))[_0x99b8('0x3d')](handleError(_0x1bd280,null));};exports[_0x99b8('0x3e')]=function(_0x394889,_0x282ec0){return db[_0x99b8('0x27')][_0x99b8('0x3e')](_0x394889[_0x99b8('0x3f')],{})['then'](respondWithResult(_0x282ec0,0xc9))['catch'](handleError(_0x282ec0,null));};exports[_0x99b8('0x40')]=function(_0x13c01e,_0x38ff39){if(_0x13c01e[_0x99b8('0x3f')]['id']){delete _0x13c01e['body']['id'];}return db[_0x99b8('0x27')][_0x99b8('0x3c')]({'where':{'id':_0x13c01e[_0x99b8('0x41')]['id']}})[_0x99b8('0x20')](handleEntityNotFound(_0x38ff39,null))[_0x99b8('0x20')](saveUpdates(_0x13c01e[_0x99b8('0x3f')],null))[_0x99b8('0x20')](respondWithResult(_0x38ff39,null))[_0x99b8('0x3d')](handleError(_0x38ff39,null));};exports[_0x99b8('0x21')]=function(_0x24a6a9,_0x5d0be4){return db['FreshsalesField'][_0x99b8('0x3c')]({'where':{'id':_0x24a6a9[_0x99b8('0x41')]['id']}})[_0x99b8('0x20')](handleEntityNotFound(_0x5d0be4,null))[_0x99b8('0x20')](removeEntity(_0x5d0be4,null))[_0x99b8('0x3d')](handleError(_0x5d0be4,null));};
\ No newline at end of file
+var _0x1f7d=['show','params','rawAttributes','include','find','create','body','catch','update','destroy','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','then','name','send','map','FreshsalesField','fieldName','type','key','model','query','filters','intersection','attributes','fields','nolimit','sort','where','pick','filter','merge','options','includeAll','findAll'];(function(_0x55d25b,_0x26638a){var _0x21d5ae=function(_0x3d3faa){while(--_0x3d3faa){_0x55d25b['push'](_0x55d25b['shift']());}};_0x21d5ae(++_0x26638a);}(_0x1f7d,0x1ae));var _0xd1f7=function(_0x13a80a,_0x1863b3){_0x13a80a=_0x13a80a-0x0;var _0x390a30=_0x1f7d[_0x13a80a];return _0x390a30;};'use strict';var emlformat=require(_0xd1f7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd1f7('0x1'));var jsonpatch=require(_0xd1f7('0x2'));var rp=require(_0xd1f7('0x3'));var moment=require(_0xd1f7('0x4'));var BPromise=require(_0xd1f7('0x5'));var Mustache=require(_0xd1f7('0x6'));var util=require(_0xd1f7('0x7'));var path=require('path');var sox=require(_0xd1f7('0x8'));var csv=require(_0xd1f7('0x9'));var ejs=require(_0xd1f7('0xa'));var fs=require('fs');var fs_extra=require(_0xd1f7('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xd1f7('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xd1f7('0xd'));var toCsv=require('to-csv');var querystring=require(_0xd1f7('0xe'));var Papa=require(_0xd1f7('0xf'));var Redis=require(_0xd1f7('0x10'));var authService=require(_0xd1f7('0x11'));var qs=require(_0xd1f7('0x12'));var as=require(_0xd1f7('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd1f7('0x14'))(_0xd1f7('0x15'));var utils=require('../../config/utils');var config=require(_0xd1f7('0x16'));var licenseUtil=require(_0xd1f7('0x17'));var db=require(_0xd1f7('0x18'))['db'];function respondWithStatusCode(_0x249e2e,_0x544308){_0x544308=_0x544308||0xcc;return function(_0x3bbfc3){if(_0x3bbfc3){return _0x249e2e[_0xd1f7('0x19')](_0x544308);}return _0x249e2e[_0xd1f7('0x1a')](_0x544308)[_0xd1f7('0x1b')]();};}function respondWithResult(_0x5a28a5,_0x57214e){_0x57214e=_0x57214e||0xc8;return function(_0x353491){if(_0x353491){return _0x5a28a5[_0xd1f7('0x1a')](_0x57214e)[_0xd1f7('0x1c')](_0x353491);}};}function respondWithFilteredResult(_0xca4fb6,_0x34060a){return function(_0x80a332){if(_0x80a332){var _0x483bf5=typeof _0x34060a[_0xd1f7('0x1d')]===_0xd1f7('0x1e')&&typeof _0x34060a['limit']==='undefined';var _0x48ae8a=_0x80a332[_0xd1f7('0x1f')];var _0x4617e7=_0x483bf5?0x0:_0x34060a['offset'];var _0x2c3f90=_0x483bf5?_0x80a332['count']:_0x34060a['offset']+_0x34060a[_0xd1f7('0x20')];var _0x16c209;if(_0x2c3f90>=_0x48ae8a){_0x2c3f90=_0x48ae8a;_0x16c209=0xc8;}else{_0x16c209=0xce;}_0xca4fb6[_0xd1f7('0x1a')](_0x16c209);return _0xca4fb6[_0xd1f7('0x21')](_0xd1f7('0x22'),_0x4617e7+'-'+_0x2c3f90+'/'+_0x48ae8a)[_0xd1f7('0x1c')](_0x80a332);}return null;};}function patchUpdates(_0xdcc3cd){return function(_0xcf3188){try{jsonpatch[_0xd1f7('0x23')](_0xcf3188,_0xdcc3cd,!![]);}catch(_0xfa45cd){return BPromise['reject'](_0xfa45cd);}return _0xcf3188[_0xd1f7('0x24')]();};}function saveUpdates(_0xfb845c,_0x3319d3){return function(_0x2e3016){if(_0x2e3016){return _0x2e3016['update'](_0xfb845c)[_0xd1f7('0x25')](function(_0x52cbe7){return _0x52cbe7;});}return null;};}function removeEntity(_0x11fbb5,_0x4ca4ee){return function(_0x4a442f){if(_0x4a442f){return _0x4a442f['destroy']()['then'](function(){_0x11fbb5[_0xd1f7('0x1a')](0xcc)[_0xd1f7('0x1b')]();});}};}function handleEntityNotFound(_0x11bd32,_0x188ca5){return function(_0x6f4eb9){if(!_0x6f4eb9){_0x11bd32[_0xd1f7('0x19')](0x194);}return _0x6f4eb9;};}function handleError(_0x29f947,_0x1ee86f){_0x1ee86f=_0x1ee86f||0x1f4;return function(_0x48991a){logger['error'](_0x48991a['stack']);if(_0x48991a[_0xd1f7('0x26')]){delete _0x48991a[_0xd1f7('0x26')];}_0x29f947[_0xd1f7('0x1a')](_0x1ee86f)[_0xd1f7('0x27')](_0x48991a);};}exports['index']=function(_0x5ddf9b,_0x11418e){var _0xcdb4ce={},_0x59ee6e={},_0x7442ef={'count':0x0,'rows':[]};var _0x38fa82=_[_0xd1f7('0x28')](db[_0xd1f7('0x29')]['rawAttributes'],function(_0x509761){return{'name':_0x509761[_0xd1f7('0x2a')],'type':_0x509761[_0xd1f7('0x2b')][_0xd1f7('0x2c')]};});_0x59ee6e[_0xd1f7('0x2d')]=_[_0xd1f7('0x28')](_0x38fa82,'name');_0x59ee6e[_0xd1f7('0x2e')]=_['keys'](_0x5ddf9b['query']);_0x59ee6e[_0xd1f7('0x2f')]=_[_0xd1f7('0x30')](_0x59ee6e[_0xd1f7('0x2d')],_0x59ee6e[_0xd1f7('0x2e')]);_0xcdb4ce[_0xd1f7('0x31')]=_[_0xd1f7('0x30')](_0x59ee6e[_0xd1f7('0x2d')],qs['fields'](_0x5ddf9b[_0xd1f7('0x2e')][_0xd1f7('0x32')]));_0xcdb4ce[_0xd1f7('0x31')]=_0xcdb4ce[_0xd1f7('0x31')]['length']?_0xcdb4ce[_0xd1f7('0x31')]:_0x59ee6e[_0xd1f7('0x2d')];if(!_0x5ddf9b[_0xd1f7('0x2e')]['hasOwnProperty'](_0xd1f7('0x33'))){_0xcdb4ce[_0xd1f7('0x20')]=qs[_0xd1f7('0x20')](_0x5ddf9b[_0xd1f7('0x2e')][_0xd1f7('0x20')]);_0xcdb4ce[_0xd1f7('0x1d')]=qs[_0xd1f7('0x1d')](_0x5ddf9b['query'][_0xd1f7('0x1d')]);}_0xcdb4ce['order']=qs[_0xd1f7('0x34')](_0x5ddf9b[_0xd1f7('0x2e')]['sort']);_0xcdb4ce[_0xd1f7('0x35')]=qs[_0xd1f7('0x2f')](_[_0xd1f7('0x36')](_0x5ddf9b[_0xd1f7('0x2e')],_0x59ee6e[_0xd1f7('0x2f')]),_0x38fa82);if(_0x5ddf9b['query'][_0xd1f7('0x37')]){_0xcdb4ce[_0xd1f7('0x35')]=_[_0xd1f7('0x38')](_0xcdb4ce[_0xd1f7('0x35')],{'$or':_[_0xd1f7('0x28')](_0x38fa82,function(_0x27f374){if(_0x27f374[_0xd1f7('0x2b')]!=='VIRTUAL'){var _0x3131aa={};_0x3131aa[_0x27f374[_0xd1f7('0x26')]]={'$like':'%'+_0x5ddf9b[_0xd1f7('0x2e')][_0xd1f7('0x37')]+'%'};return _0x3131aa;}})});}_0xcdb4ce=_[_0xd1f7('0x38')]({},_0xcdb4ce,_0x5ddf9b[_0xd1f7('0x39')]);var _0x5d7156={'where':_0xcdb4ce['where']};return db[_0xd1f7('0x29')]['count'](_0x5d7156)[_0xd1f7('0x25')](function(_0x277653){_0x7442ef[_0xd1f7('0x1f')]=_0x277653;if(_0x5ddf9b[_0xd1f7('0x2e')][_0xd1f7('0x3a')]){_0xcdb4ce['include']=[{'all':!![]}];}return db[_0xd1f7('0x29')][_0xd1f7('0x3b')](_0xcdb4ce);})['then'](function(_0x41563c){_0x7442ef['rows']=_0x41563c;return _0x7442ef;})['then'](respondWithFilteredResult(_0x11418e,_0xcdb4ce))['catch'](handleError(_0x11418e,null));};exports[_0xd1f7('0x3c')]=function(_0x31cbd5,_0x1ab9e9){var _0x132b0e={'raw':!![],'where':{'id':_0x31cbd5[_0xd1f7('0x3d')]['id']}},_0x2a5c4f={};_0x2a5c4f['model']=_['keys'](db[_0xd1f7('0x29')][_0xd1f7('0x3e')]);_0x2a5c4f[_0xd1f7('0x2e')]=_['keys'](_0x31cbd5[_0xd1f7('0x2e')]);_0x2a5c4f[_0xd1f7('0x2f')]=_[_0xd1f7('0x30')](_0x2a5c4f[_0xd1f7('0x2d')],_0x2a5c4f['query']);_0x132b0e['attributes']=_[_0xd1f7('0x30')](_0x2a5c4f[_0xd1f7('0x2d')],qs[_0xd1f7('0x32')](_0x31cbd5[_0xd1f7('0x2e')][_0xd1f7('0x32')]));_0x132b0e[_0xd1f7('0x31')]=_0x132b0e['attributes']['length']?_0x132b0e[_0xd1f7('0x31')]:_0x2a5c4f[_0xd1f7('0x2d')];if(_0x31cbd5[_0xd1f7('0x2e')]['includeAll']){_0x132b0e[_0xd1f7('0x3f')]=[{'all':!![]}];}_0x132b0e=_[_0xd1f7('0x38')]({},_0x132b0e,_0x31cbd5[_0xd1f7('0x39')]);return db[_0xd1f7('0x29')][_0xd1f7('0x40')](_0x132b0e)[_0xd1f7('0x25')](handleEntityNotFound(_0x1ab9e9,null))[_0xd1f7('0x25')](respondWithResult(_0x1ab9e9,null))['catch'](handleError(_0x1ab9e9,null));};exports[_0xd1f7('0x41')]=function(_0x42898f,_0x2d24a4){return db[_0xd1f7('0x29')]['create'](_0x42898f[_0xd1f7('0x42')],{})[_0xd1f7('0x25')](respondWithResult(_0x2d24a4,0xc9))[_0xd1f7('0x43')](handleError(_0x2d24a4,null));};exports[_0xd1f7('0x44')]=function(_0x382072,_0x2eac40){if(_0x382072[_0xd1f7('0x42')]['id']){delete _0x382072[_0xd1f7('0x42')]['id'];}return db[_0xd1f7('0x29')][_0xd1f7('0x40')]({'where':{'id':_0x382072['params']['id']}})[_0xd1f7('0x25')](handleEntityNotFound(_0x2eac40,null))[_0xd1f7('0x25')](saveUpdates(_0x382072[_0xd1f7('0x42')],null))[_0xd1f7('0x25')](respondWithResult(_0x2eac40,null))['catch'](handleError(_0x2eac40,null));};exports[_0xd1f7('0x45')]=function(_0x465525,_0x160b07){return db[_0xd1f7('0x29')][_0xd1f7('0x40')]({'where':{'id':_0x465525[_0xd1f7('0x3d')]['id']}})['then'](handleEntityNotFound(_0x160b07,null))[_0xd1f7('0x25')](removeEntity(_0x160b07,null))['catch'](handleError(_0x160b07,null));};
\ No newline at end of file
index f0f167c..14b889c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e6b=['../../config/environment','exports','FreshsalesField','FieldId','lodash','util','api','request-promise','path','rimraf'];(function(_0x45d5c3,_0x316484){var _0x3b7eb5=function(_0x2c88a8){while(--_0x2c88a8){_0x45d5c3['push'](_0x45d5c3['shift']());}};_0x3b7eb5(++_0x316484);}(_0x9e6b,0x11c));var _0xb9e6=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x9e6b[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xb9e6('0x0'));var util=require(_0xb9e6('0x1'));var logger=require('../../config/logger')(_0xb9e6('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb9e6('0x3'));var fs=require('fs');var path=require(_0xb9e6('0x4'));var rimraf=require(_0xb9e6('0x5'));var config=require(_0xb9e6('0x6'));var attributes=require('./intFreshsalesField.attributes');module[_0xb9e6('0x7')]=function(_0x1a6a4f,_0x1b9eed){return _0x1a6a4f['define'](_0xb9e6('0x8'),attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':['idField',_0xb9e6('0x9')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x42f4=['moment','bluebird','request-promise','./intFreshsalesField.attributes','exports','define','FreshsalesField','int_freshsales_fields','freshsales_unique_index','idField','lodash','../../config/logger','api'];(function(_0x4ad82e,_0x4d7e60){var _0x3cc50e=function(_0x1f4e0a){while(--_0x1f4e0a){_0x4ad82e['push'](_0x4ad82e['shift']());}};_0x3cc50e(++_0x4d7e60);}(_0x42f4,0x19d));var _0x442f=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0x42f4[_0x2763f2];return _0x3ef471;};'use strict';var _=require(_0x442f('0x0'));var util=require('util');var logger=require(_0x442f('0x1'))(_0x442f('0x2'));var moment=require(_0x442f('0x3'));var BPromise=require(_0x442f('0x4'));var rp=require(_0x442f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x442f('0x6'));module[_0x442f('0x7')]=function(_0x545b7b,_0x3ed622){return _0x545b7b[_0x442f('0x8')](_0x442f('0x9'),attributes,{'tableName':_0x442f('0xa'),'paranoid':![],'indexes':[{'name':_0x442f('0xb'),'fields':[_0x442f('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 6fb62ab..7ca489b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c09=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','then','info','FreshsalesField,\x20%s,\x20%s','FreshsalesField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment'];(function(_0x44edb0,_0x7a1d21){var _0x38dbd0=function(_0xcc1e93){while(--_0xcc1e93){_0x44edb0['push'](_0x44edb0['shift']());}};_0x38dbd0(++_0x7a1d21);}(_0x7c09,0x102));var _0x97c0=function(_0x10ed23,_0x235c5d){_0x10ed23=_0x10ed23-0x0;var _0x3bddce=_0x7c09[_0x10ed23];return _0x3bddce;};'use strict';var _=require('lodash');var util=require(_0x97c0('0x0'));var moment=require(_0x97c0('0x1'));var BPromise=require('bluebird');var rs=require(_0x97c0('0x2'));var fs=require('fs');var Redis=require(_0x97c0('0x3'));var db=require(_0x97c0('0x4'))['db'];var utils=require(_0x97c0('0x5'));var logger=require(_0x97c0('0x6'))(_0x97c0('0x7'));var config=require(_0x97c0('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x46fdd9,_0x42c6c7,_0x2c19fa){return new BPromise(function(_0x109bc8,_0x293785){return client['request'](_0x46fdd9,_0x2c19fa)[_0x97c0('0x9')](function(_0x4ac5f1){logger[_0x97c0('0xa')](_0x97c0('0xb'),_0x42c6c7,'request\x20sent');logger['debug'](_0x97c0('0xc'),_0x42c6c7,_0x97c0('0xd'),JSON[_0x97c0('0xe')](_0x4ac5f1));if(_0x4ac5f1[_0x97c0('0xf')]){if(_0x4ac5f1[_0x97c0('0xf')][_0x97c0('0x10')]===0x1f4){logger[_0x97c0('0xf')](_0x97c0('0xb'),_0x42c6c7,_0x4ac5f1[_0x97c0('0xf')][_0x97c0('0x11')]);return _0x293785(_0x4ac5f1[_0x97c0('0xf')][_0x97c0('0x11')]);}logger[_0x97c0('0xf')]('FreshsalesField,\x20%s,\x20%s',_0x42c6c7,_0x4ac5f1[_0x97c0('0xf')][_0x97c0('0x11')]);return _0x109bc8(_0x4ac5f1[_0x97c0('0xf')]['message']);}else{logger[_0x97c0('0xa')](_0x97c0('0xb'),_0x42c6c7,_0x97c0('0xd'));_0x109bc8(_0x4ac5f1[_0x97c0('0x12')][_0x97c0('0x11')]);}})[_0x97c0('0x13')](function(_0x49c0d9){logger[_0x97c0('0xf')](_0x97c0('0xb'),_0x42c6c7,_0x49c0d9);_0x293785(_0x49c0d9);});});}
\ No newline at end of file
+var _0xe3da=['stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s'];(function(_0x342bc3,_0x2e8f79){var _0x1aee84=function(_0x3c7f05){while(--_0x3c7f05){_0x342bc3['push'](_0x342bc3['shift']());}};_0x1aee84(++_0x2e8f79);}(_0xe3da,0x1cd));var _0xae3d=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xe3da[_0xfae23b];return _0x200640;};'use strict';var _=require(_0xae3d('0x0'));var util=require(_0xae3d('0x1'));var moment=require(_0xae3d('0x2'));var BPromise=require(_0xae3d('0x3'));var rs=require(_0xae3d('0x4'));var fs=require('fs');var Redis=require(_0xae3d('0x5'));var db=require(_0xae3d('0x6'))['db'];var utils=require(_0xae3d('0x7'));var logger=require(_0xae3d('0x8'))(_0xae3d('0x9'));var config=require(_0xae3d('0xa'));var jayson=require(_0xae3d('0xb'));var client=jayson[_0xae3d('0xc')][_0xae3d('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x476579,_0x33c089,_0x583b98){return new BPromise(function(_0x2a5c45,_0x3d6650){return client['request'](_0x476579,_0x583b98)['then'](function(_0x459592){logger[_0xae3d('0xe')](_0xae3d('0xf'),_0x33c089,_0xae3d('0x10'));logger[_0xae3d('0x11')](_0xae3d('0x12'),_0x33c089,'request\x20sent',JSON[_0xae3d('0x13')](_0x459592));if(_0x459592['error']){if(_0x459592[_0xae3d('0x14')][_0xae3d('0x15')]===0x1f4){logger[_0xae3d('0x14')](_0xae3d('0xf'),_0x33c089,_0x459592['error'][_0xae3d('0x16')]);return _0x3d6650(_0x459592[_0xae3d('0x14')][_0xae3d('0x16')]);}logger[_0xae3d('0x14')](_0xae3d('0xf'),_0x33c089,_0x459592[_0xae3d('0x14')][_0xae3d('0x16')]);return _0x2a5c45(_0x459592['error'][_0xae3d('0x16')]);}else{logger[_0xae3d('0xe')](_0xae3d('0xf'),_0x33c089,_0xae3d('0x10'));_0x2a5c45(_0x459592[_0xae3d('0x17')][_0xae3d('0x16')]);}})['catch'](function(_0xe925fd){logger[_0xae3d('0x14')](_0xae3d('0xf'),_0x33c089,_0xe925fd);_0x3d6650(_0xe925fd);});});}
\ No newline at end of file
index 92516f7..fa75b0e 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','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x3604c8,_0x43919c){var _0x43fb3e=function(_0x3b836c){while(--_0x3b836c){_0x3604c8['push'](_0x3604c8['shift']());}};_0x43fb3e(++_0x43919c);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x53345e,_0xaf3ffe){var _0x5a6279=function(_0x22fa1c){while(--_0x22fa1c){_0x53345e['push'](_0x53345e['shift']());}};_0x5a6279(++_0xaf3ffe);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/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 3e64685..ddc2dd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d62=['STRING','username','ENUM','sequelize'];(function(_0x2d8df3,_0x448f7e){var _0xb343bc=function(_0xec21c6){while(--_0xec21c6){_0x2d8df3['push'](_0x2d8df3['shift']());}};_0xb343bc(++_0x448f7e);}(_0x0d62,0x1df));var _0x20d6=function(_0x3ee1fe,_0x59f2a1){_0x3ee1fe=_0x3ee1fe-0x0;var _0x1ae57a=_0x0d62[_0x3ee1fe];return _0x1ae57a;};'use strict';var Sequelize=require(_0x20d6('0x0'));module['exports']={'name':{'type':Sequelize[_0x20d6('0x1')]},'description':{'type':Sequelize[_0x20d6('0x1')]},'username':{'type':Sequelize['STRING'],'unique':_0x20d6('0x2')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x20d6('0x1')]},'clientId':{'type':Sequelize[_0x20d6('0x1')]},'clientSecret':{'type':Sequelize[_0x20d6('0x1')]},'securityToken':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x20d6('0x3')]('integrationTab','newTab'),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0xb98e=['STRING','username','ENUM','newTab','sequelize','exports'];(function(_0x4f7fc8,_0x867eb){var _0x1d6309=function(_0x3221de){while(--_0x3221de){_0x4f7fc8['push'](_0x4f7fc8['shift']());}};_0x1d6309(++_0x867eb);}(_0xb98e,0x184));var _0xeb98=function(_0x320379,_0x413a0a){_0x320379=_0x320379-0x0;var _0x53c1e0=_0xb98e[_0x320379];return _0x53c1e0;};'use strict';var Sequelize=require(_0xeb98('0x0'));module[_0xeb98('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xeb98('0x2')],'unique':_0xeb98('0x3')},'remoteUri':{'type':Sequelize[_0xeb98('0x2')]},'password':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xeb98('0x2')]},'clientSecret':{'type':Sequelize[_0xeb98('0x2')]},'securityToken':{'type':Sequelize[_0xeb98('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xeb98('0x4')]('integrationTab',_0xeb98('0x5')),'defaultValue':'integrationTab'}};
\ No newline at end of file
index afb6a73..58c19e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b60=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','../../components/integrations/configuration','status','json','offset','count','limit','Content-Range','reject','save','then','destroy','end','sendStatus','error','stack','name','send','index','SalesforceAccount','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','length','order','sort','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','rawAttributes','options','find','create','body','update','getConfigurations','pick','hasOwnProperty','nolimit','addConfiguration','findOne','channel','Descriptions','getDescriptions','SalesforceField','Task','clientId','clientSecret','username','remoteUri','slice','substring','lastIndexOf','password','concat','securityToken','isNil','describe','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','string','int','picklist','boolean','email','textarea','phone','remove','includes','custom','picklistValues','label','True','true','false','getFields','Wrong\x20credentials','statusCode','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js'];(function(_0x52826c,_0x3c3896){var _0x1b8c9b=function(_0x1aa6f5){while(--_0x1aa6f5){_0x52826c['push'](_0x52826c['shift']());}};_0x1b8c9b(++_0x3c3896);}(_0x9b60,0x6a));var _0x09b6=function(_0x41aec,_0x5c7f88){_0x41aec=_0x41aec-0x0;var _0x5e3e69=_0x9b60[_0x41aec];return _0x5e3e69;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x09b6('0x0'));var zipdir=require(_0x09b6('0x1'));var jsonpatch=require(_0x09b6('0x2'));var rp=require(_0x09b6('0x3'));var moment=require('moment');var BPromise=require(_0x09b6('0x4'));var Mustache=require('mustache');var util=require(_0x09b6('0x5'));var path=require(_0x09b6('0x6'));var sox=require(_0x09b6('0x7'));var csv=require(_0x09b6('0x8'));var ejs=require(_0x09b6('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x09b6('0xa'));var squel=require(_0x09b6('0xb'));var crypto=require(_0x09b6('0xc'));var jsforce=require(_0x09b6('0xd'));var deskjs=require(_0x09b6('0xe'));var toCsv=require(_0x09b6('0x8'));var querystring=require(_0x09b6('0xf'));var Papa=require(_0x09b6('0x10'));var Redis=require(_0x09b6('0x11'));var authService=require(_0x09b6('0x12'));var qs=require(_0x09b6('0x13'));var as=require(_0x09b6('0x14'));var hardwareService=require(_0x09b6('0x15'));var logger=require(_0x09b6('0x16'))('api');var utils=require(_0x09b6('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x09b6('0x18'))['db'];var integrations=require(_0x09b6('0x19'));function respondWithStatusCode(_0x830fb5,_0x225493){_0x225493=_0x225493||0xcc;return function(_0x3a6636){if(_0x3a6636){return _0x830fb5['sendStatus'](_0x225493);}return _0x830fb5[_0x09b6('0x1a')](_0x225493)['end']();};}function respondWithResult(_0x5a4de9,_0x383d62){_0x383d62=_0x383d62||0xc8;return function(_0x4f6c87){if(_0x4f6c87){return _0x5a4de9[_0x09b6('0x1a')](_0x383d62)[_0x09b6('0x1b')](_0x4f6c87);}};}function respondWithFilteredResult(_0x40b0ed,_0x67e179){return function(_0x15bed3){if(_0x15bed3){var _0x2461e3=typeof _0x67e179[_0x09b6('0x1c')]==='undefined'&&typeof _0x67e179['limit']==='undefined';var _0x4d9578=_0x15bed3['count'];var _0x399547=_0x2461e3?0x0:_0x67e179[_0x09b6('0x1c')];var _0x5263fe=_0x2461e3?_0x15bed3[_0x09b6('0x1d')]:_0x67e179['offset']+_0x67e179[_0x09b6('0x1e')];var _0x145446;if(_0x5263fe>=_0x4d9578){_0x5263fe=_0x4d9578;_0x145446=0xc8;}else{_0x145446=0xce;}_0x40b0ed['status'](_0x145446);return _0x40b0ed['set'](_0x09b6('0x1f'),_0x399547+'-'+_0x5263fe+'/'+_0x4d9578)[_0x09b6('0x1b')](_0x15bed3);}return null;};}function patchUpdates(_0x4fe193){return function(_0x5db4ac){try{jsonpatch['apply'](_0x5db4ac,_0x4fe193,!![]);}catch(_0x3c0e60){return BPromise[_0x09b6('0x20')](_0x3c0e60);}return _0x5db4ac[_0x09b6('0x21')]();};}function saveUpdates(_0xdf4f23,_0x2b7df6){return function(_0x2885e1){if(_0x2885e1){return _0x2885e1['update'](_0xdf4f23)[_0x09b6('0x22')](function(_0x5a64bb){return _0x5a64bb;});}return null;};}function removeEntity(_0x44a5aa,_0x5ed280){return function(_0x48b82e){if(_0x48b82e){return _0x48b82e[_0x09b6('0x23')]()[_0x09b6('0x22')](function(){_0x44a5aa['status'](0xcc)[_0x09b6('0x24')]();});}};}function handleEntityNotFound(_0x309808,_0x1ea422){return function(_0x576e3a){if(!_0x576e3a){_0x309808[_0x09b6('0x25')](0x194);}return _0x576e3a;};}function handleError(_0x2a62c9,_0x3905b4){_0x3905b4=_0x3905b4||0x1f4;return function(_0x1cfc0d){logger[_0x09b6('0x26')](_0x1cfc0d[_0x09b6('0x27')]);if(_0x1cfc0d[_0x09b6('0x28')]){delete _0x1cfc0d['name'];}_0x2a62c9[_0x09b6('0x1a')](_0x3905b4)[_0x09b6('0x29')](_0x1cfc0d);};}exports[_0x09b6('0x2a')]=function(_0x3180d3,_0xc7cc86){var _0x4b18ae={},_0x1e9438={},_0x1bccdd={'count':0x0,'rows':[]};var _0x5c0458=_['map'](db[_0x09b6('0x2b')]['rawAttributes'],function(_0x297e57){return{'name':_0x297e57[_0x09b6('0x2c')],'type':_0x297e57[_0x09b6('0x2d')][_0x09b6('0x2e')]};});_0x1e9438[_0x09b6('0x2f')]=_[_0x09b6('0x30')](_0x5c0458,'name');_0x1e9438['query']=_[_0x09b6('0x31')](_0x3180d3[_0x09b6('0x32')]);_0x1e9438[_0x09b6('0x33')]=_[_0x09b6('0x34')](_0x1e9438[_0x09b6('0x2f')],_0x1e9438[_0x09b6('0x32')]);_0x4b18ae[_0x09b6('0x35')]=_['intersection'](_0x1e9438[_0x09b6('0x2f')],qs[_0x09b6('0x36')](_0x3180d3['query']['fields']));_0x4b18ae[_0x09b6('0x35')]=_0x4b18ae[_0x09b6('0x35')][_0x09b6('0x37')]?_0x4b18ae['attributes']:_0x1e9438[_0x09b6('0x2f')];if(!_0x3180d3[_0x09b6('0x32')]['hasOwnProperty']('nolimit')){_0x4b18ae[_0x09b6('0x1e')]=qs[_0x09b6('0x1e')](_0x3180d3[_0x09b6('0x32')][_0x09b6('0x1e')]);_0x4b18ae[_0x09b6('0x1c')]=qs[_0x09b6('0x1c')](_0x3180d3['query']['offset']);}_0x4b18ae[_0x09b6('0x38')]=qs[_0x09b6('0x39')](_0x3180d3[_0x09b6('0x32')][_0x09b6('0x39')]);_0x4b18ae['where']=qs[_0x09b6('0x33')](_['pick'](_0x3180d3[_0x09b6('0x32')],_0x1e9438[_0x09b6('0x33')]),_0x5c0458);if(_0x3180d3[_0x09b6('0x32')][_0x09b6('0x3a')]){_0x4b18ae[_0x09b6('0x3b')]=_[_0x09b6('0x3c')](_0x4b18ae[_0x09b6('0x3b')],{'$or':_[_0x09b6('0x30')](_0x5c0458,function(_0x3d8ba1){if(_0x3d8ba1[_0x09b6('0x2d')]!==_0x09b6('0x3d')){var _0x56c3eb={};_0x56c3eb[_0x3d8ba1[_0x09b6('0x28')]]={'$like':'%'+_0x3180d3[_0x09b6('0x32')][_0x09b6('0x3a')]+'%'};return _0x56c3eb;}})});}_0x4b18ae=_[_0x09b6('0x3c')]({},_0x4b18ae,_0x3180d3['options']);var _0x2328a5={'where':_0x4b18ae[_0x09b6('0x3b')]};return db[_0x09b6('0x2b')]['count'](_0x2328a5)[_0x09b6('0x22')](function(_0x1fc5d4){_0x1bccdd['count']=_0x1fc5d4;if(_0x3180d3[_0x09b6('0x32')][_0x09b6('0x3e')]){_0x4b18ae[_0x09b6('0x3f')]=[{'all':!![]}];}return db[_0x09b6('0x2b')][_0x09b6('0x40')](_0x4b18ae);})[_0x09b6('0x22')](function(_0x3edce4){_0x1bccdd[_0x09b6('0x41')]=_0x3edce4;return _0x1bccdd;})['then'](respondWithFilteredResult(_0xc7cc86,_0x4b18ae))[_0x09b6('0x42')](handleError(_0xc7cc86,null));};exports[_0x09b6('0x43')]=function(_0x4f67d4,_0xb08e45){var _0x324dcc={'raw':![],'where':{'id':_0x4f67d4[_0x09b6('0x44')]['id']}},_0x43c833={};_0x43c833[_0x09b6('0x2f')]=_[_0x09b6('0x31')](db[_0x09b6('0x2b')][_0x09b6('0x45')]);_0x43c833[_0x09b6('0x32')]=_[_0x09b6('0x31')](_0x4f67d4['query']);_0x43c833[_0x09b6('0x33')]=_[_0x09b6('0x34')](_0x43c833[_0x09b6('0x2f')],_0x43c833[_0x09b6('0x32')]);_0x324dcc[_0x09b6('0x35')]=_[_0x09b6('0x34')](_0x43c833[_0x09b6('0x2f')],qs[_0x09b6('0x36')](_0x4f67d4[_0x09b6('0x32')][_0x09b6('0x36')]));_0x324dcc['attributes']=_0x324dcc[_0x09b6('0x35')]['length']?_0x324dcc[_0x09b6('0x35')]:_0x43c833['model'];if(_0x4f67d4[_0x09b6('0x32')][_0x09b6('0x3e')]){_0x324dcc[_0x09b6('0x3f')]=[{'all':!![]}];}_0x324dcc=_['merge']({},_0x324dcc,_0x4f67d4[_0x09b6('0x46')]);return db[_0x09b6('0x2b')][_0x09b6('0x47')](_0x324dcc)[_0x09b6('0x22')](handleEntityNotFound(_0xb08e45,null))['then'](respondWithResult(_0xb08e45,null))['catch'](handleError(_0xb08e45,null));};exports[_0x09b6('0x48')]=function(_0x39f7e6,_0x30ba35){return db[_0x09b6('0x2b')][_0x09b6('0x48')](_0x39f7e6[_0x09b6('0x49')],{})['then'](respondWithResult(_0x30ba35,0xc9))['catch'](handleError(_0x30ba35,null));};exports[_0x09b6('0x4a')]=function(_0x3efc5a,_0x2d6bcd){if(_0x3efc5a[_0x09b6('0x49')]['id']){delete _0x3efc5a['body']['id'];}return db['SalesforceAccount']['find']({'where':{'id':_0x3efc5a[_0x09b6('0x44')]['id']}})['then'](handleEntityNotFound(_0x2d6bcd,null))[_0x09b6('0x22')](saveUpdates(_0x3efc5a[_0x09b6('0x49')],null))[_0x09b6('0x22')](respondWithResult(_0x2d6bcd,null))[_0x09b6('0x42')](handleError(_0x2d6bcd,null));};exports[_0x09b6('0x23')]=function(_0x57edbb,_0x435d55){return db['SalesforceAccount'][_0x09b6('0x47')]({'where':{'id':_0x57edbb[_0x09b6('0x44')]['id']}})['then'](handleEntityNotFound(_0x435d55,null))[_0x09b6('0x22')](removeEntity(_0x435d55,null))[_0x09b6('0x42')](handleError(_0x435d55,null));};exports[_0x09b6('0x4b')]=function(_0x59716c,_0x22cc7e,_0x43c881){var _0x508848={};var _0x3c5cc1={};var _0x5bbb5d;var _0x1a346b;return db[_0x09b6('0x2b')]['findOne']({'where':{'id':_0x59716c['params']['id']}})[_0x09b6('0x22')](handleEntityNotFound(_0x22cc7e,null))['then'](function(_0x12b020){if(_0x12b020){_0x5bbb5d=_0x12b020;_0x3c5cc1[_0x09b6('0x2f')]=_[_0x09b6('0x31')](db['SalesforceConfiguration'][_0x09b6('0x45')]);_0x3c5cc1[_0x09b6('0x32')]=_[_0x09b6('0x31')](_0x59716c[_0x09b6('0x32')]);_0x3c5cc1[_0x09b6('0x33')]=_[_0x09b6('0x34')](_0x3c5cc1[_0x09b6('0x2f')],_0x3c5cc1[_0x09b6('0x32')]);_0x508848[_0x09b6('0x35')]=_['intersection'](_0x3c5cc1[_0x09b6('0x2f')],qs[_0x09b6('0x36')](_0x59716c[_0x09b6('0x32')]['fields']));_0x508848[_0x09b6('0x35')]=_0x508848['attributes'][_0x09b6('0x37')]?_0x508848[_0x09b6('0x35')]:_0x3c5cc1[_0x09b6('0x2f')];_0x508848[_0x09b6('0x38')]=qs[_0x09b6('0x39')](_0x59716c['query'][_0x09b6('0x39')]);_0x508848[_0x09b6('0x3b')]=qs[_0x09b6('0x33')](_[_0x09b6('0x4c')](_0x59716c['query'],_0x3c5cc1[_0x09b6('0x33')]));if(_0x59716c[_0x09b6('0x32')][_0x09b6('0x3a')]){_0x508848[_0x09b6('0x3b')]=_['merge'](_0x508848[_0x09b6('0x3b')],{'$or':_['map'](_0x508848['attributes'],function(_0x22ee62){var _0xe661ef={};_0xe661ef[_0x22ee62]={'$like':'%'+_0x59716c['query'][_0x09b6('0x3a')]+'%'};return _0xe661ef;})});}_0x508848=_[_0x09b6('0x3c')]({},_0x508848,_0x59716c[_0x09b6('0x46')]);return _0x5bbb5d[_0x09b6('0x4b')](_0x508848);}})[_0x09b6('0x22')](function(_0x50652b){if(_0x50652b){_0x1a346b=_0x50652b[_0x09b6('0x37')];if(!_0x59716c[_0x09b6('0x32')][_0x09b6('0x4d')](_0x09b6('0x4e'))){_0x508848[_0x09b6('0x1e')]=qs[_0x09b6('0x1e')](_0x59716c['query'][_0x09b6('0x1e')]);_0x508848['offset']=qs['offset'](_0x59716c[_0x09b6('0x32')][_0x09b6('0x1c')]);}return _0x5bbb5d['getConfigurations'](_0x508848);}})[_0x09b6('0x22')](function(_0x5d2420){if(_0x5d2420){return _0x5d2420?{'count':_0x1a346b,'rows':_0x5d2420}:null;}})[_0x09b6('0x22')](respondWithResult(_0x22cc7e,null))[_0x09b6('0x42')](handleError(_0x22cc7e,null));};exports[_0x09b6('0x4f')]=function(_0x35e2eb,_0x805240,_0x501e32){if(_0x35e2eb[_0x09b6('0x49')]['id']){delete _0x35e2eb['body']['id'];}return db[_0x09b6('0x2b')][_0x09b6('0x50')]({'where':{'id':_0x35e2eb[_0x09b6('0x44')]['id']}})[_0x09b6('0x22')](handleEntityNotFound(_0x805240,null))[_0x09b6('0x22')](function(_0x3d7431){if(_0x3d7431){_0x35e2eb[_0x09b6('0x49')]['AccountId']=_0x3d7431['id'];_0x35e2eb['body']['Subjects']=integrations['getSubjects'](_0x35e2eb['body'][_0x09b6('0x51')],_0x35e2eb['body'][_0x09b6('0x2d')]);_0x35e2eb[_0x09b6('0x49')][_0x09b6('0x52')]=integrations[_0x09b6('0x53')](_0x35e2eb[_0x09b6('0x49')][_0x09b6('0x51')],_0x35e2eb['body'][_0x09b6('0x2d')]);return db['SalesforceConfiguration'][_0x09b6('0x48')](_0x35e2eb['body'],{'include':[{'model':db['SalesforceField'],'as':'Subjects'},{'model':db[_0x09b6('0x54')],'as':'Descriptions'}]});}return null;})[_0x09b6('0x22')](respondWithResult(_0x805240,null))[_0x09b6('0x42')](handleError(_0x805240,null));};exports['getFields']=function(_0x365076,_0x3d7e07,_0x5e801f){var _0x4261e5;var _0x3f642d='';var _0x35dd97=_0x09b6('0x55');return db[_0x09b6('0x2b')]['findOne']({'where':{'id':_0x365076[_0x09b6('0x44')]['id']},'attributes':['id','remoteUri',_0x09b6('0x56'),_0x09b6('0x57'),_0x09b6('0x58'),'password','securityToken']})[_0x09b6('0x22')](handleEntityNotFound(_0x3d7e07,null))['then'](function(_0x2721c8){if(_0x2721c8){_0x3f642d=_0x2721c8[_0x09b6('0x59')];var _0xbb8a37=_0x3f642d[_0x09b6('0x5a')](-0x1);if(_0xbb8a37==='/'){_0x3f642d=_0x3f642d[_0x09b6('0x5b')](0x0,_0x3f642d[_0x09b6('0x5c')](_0xbb8a37));}_0x4261e5=new jsforce['Connection']({'oauth2':{'loginUrl':_0x3f642d,'clientId':_0x2721c8['clientId'],'clientSecret':_0x2721c8[_0x09b6('0x57')]}});return _0x4261e5['login'](_0x2721c8[_0x09b6('0x58')],_0x2721c8[_0x09b6('0x5d')][_0x09b6('0x5e')](_0x2721c8[_0x09b6('0x5f')]));}})[_0x09b6('0x22')](function(_0x38682b){if(_0x38682b){if(!_[_0x09b6('0x60')](_0x365076['query']['ticketType'])){_0x35dd97=_0x365076[_0x09b6('0x32')]['ticketType'];}return _0x4261e5['sobject'](_0x35dd97)[_0x09b6('0x61')]();}})[_0x09b6('0x22')](function(_0x139852){var _0x266289=['OwnerId',_0x09b6('0x62'),_0x09b6('0x63'),_0x09b6('0x64'),_0x09b6('0x65'),_0x09b6('0x66')];var _0x5e3241=[_0x09b6('0x67'),_0x09b6('0x68'),_0x09b6('0x69'),_0x09b6('0x6a'),_0x09b6('0x6b'),_0x09b6('0x6c'),_0x09b6('0x6d')];if(_0x139852){_[_0x09b6('0x6e')](_0x139852['fields'],function(_0x22adeb){return _0x266289[_0x09b6('0x6f')](_0x22adeb[_0x09b6('0x28')])||!_0x5e3241[_0x09b6('0x6f')](_0x22adeb['type']);});return{'count':_0x139852[_0x09b6('0x36')][_0x09b6('0x37')],'rows':_[_0x09b6('0x30')](_0x139852[_0x09b6('0x36')],function(_0x35ce91){return{'id':_0x35ce91[_0x09b6('0x28')],'name':_0x35ce91['label'],'custom':_0x35ce91[_0x09b6('0x70')],'options':_0x35ce91[_0x09b6('0x71')][_0x09b6('0x37')]>0x0?_[_0x09b6('0x30')](_0x35ce91[_0x09b6('0x71')],function(_0xb6249){return{'name':_0xb6249[_0x09b6('0x72')],'value':_0xb6249['value']};}):_0x35ce91[_0x09b6('0x2d')]=='boolean'?[{'name':_0x09b6('0x73'),'value':_0x09b6('0x74')},{'name':'False','value':_0x09b6('0x75')}]:[]};})};}})[_0x09b6('0x22')](respondWithResult(_0x3d7e07,null))[_0x09b6('0x42')](function(_0x48e280){var _0x113cf3=_0x365076[_0x09b6('0x32')]['test']?0x1f4:_0x48e280['statusCode']||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x09b6('0x76'),_0x113cf3,JSON['stringify'](_0x48e280));delete _0x48e280[_0x09b6('0x28')];if(_0x113cf3===0x191){_0x113cf3=0x190;}_0x3d7e07[_0x09b6('0x1a')](_0x113cf3)[_0x09b6('0x29')](_0x365076[_0x09b6('0x32')]['test']?{'message':_0x09b6('0x77'),'statusCode':_0x48e280[_0x09b6('0x78')]}:_0x48e280);});};
\ No newline at end of file
+var _0x8e8a=['False','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','reject','save','update','destroy','then','error','stack','name','send','index','map','SalesforceAccount','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','pick','filter','merge','where','type','VIRTUAL','options','includeAll','rows','catch','show','find','body','params','getConfigurations','findOne','SalesforceConfiguration','hasOwnProperty','Subjects','getSubjects','Descriptions','channel','create','SalesforceField','getFields','Task','remoteUri','clientId','clientSecret','username','securityToken','slice','substring','lastIndexOf','login','password','concat','isNil','ticketType','sobject','ActivityDate','IsRecurrence','Subject','Description','string','picklist','boolean','email','phone','remove','includes','label','custom','picklistValues','True','true'];(function(_0x47c951,_0x147d17){var _0xede685=function(_0x42d8f0){while(--_0x42d8f0){_0x47c951['push'](_0x47c951['shift']());}};_0xede685(++_0x147d17);}(_0x8e8a,0x7d));var _0xa8e8=function(_0x10e5a7,_0x33fd7c){_0x10e5a7=_0x10e5a7-0x0;var _0x1b8b6d=_0x8e8a[_0x10e5a7];return _0x1b8b6d;};'use strict';var emlformat=require(_0xa8e8('0x0'));var rimraf=require(_0xa8e8('0x1'));var zipdir=require(_0xa8e8('0x2'));var jsonpatch=require(_0xa8e8('0x3'));var rp=require(_0xa8e8('0x4'));var moment=require(_0xa8e8('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xa8e8('0x6'));var util=require('util');var path=require('path');var sox=require(_0xa8e8('0x7'));var csv=require(_0xa8e8('0x8'));var ejs=require(_0xa8e8('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa8e8('0xa'));var squel=require('squel');var crypto=require(_0xa8e8('0xb'));var jsforce=require(_0xa8e8('0xc'));var deskjs=require(_0xa8e8('0xd'));var toCsv=require(_0xa8e8('0x8'));var querystring=require(_0xa8e8('0xe'));var Papa=require(_0xa8e8('0xf'));var Redis=require(_0xa8e8('0x10'));var authService=require(_0xa8e8('0x11'));var qs=require(_0xa8e8('0x12'));var as=require(_0xa8e8('0x13'));var hardwareService=require(_0xa8e8('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xa8e8('0x15'));var config=require(_0xa8e8('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xa8e8('0x17'))['db'];var integrations=require(_0xa8e8('0x18'));function respondWithStatusCode(_0x4296b7,_0x58910a){_0x58910a=_0x58910a||0xcc;return function(_0x415f18){if(_0x415f18){return _0x4296b7[_0xa8e8('0x19')](_0x58910a);}return _0x4296b7[_0xa8e8('0x1a')](_0x58910a)[_0xa8e8('0x1b')]();};}function respondWithResult(_0x21faf8,_0x3b9586){_0x3b9586=_0x3b9586||0xc8;return function(_0xf030c4){if(_0xf030c4){return _0x21faf8['status'](_0x3b9586)[_0xa8e8('0x1c')](_0xf030c4);}};}function respondWithFilteredResult(_0x5dc3c4,_0x16629a){return function(_0x11170a){if(_0x11170a){var _0x3c789a=typeof _0x16629a['offset']===_0xa8e8('0x1d')&&typeof _0x16629a[_0xa8e8('0x1e')]==='undefined';var _0x7af896=_0x11170a[_0xa8e8('0x1f')];var _0x3f94f2=_0x3c789a?0x0:_0x16629a[_0xa8e8('0x20')];var _0x323796=_0x3c789a?_0x11170a[_0xa8e8('0x1f')]:_0x16629a[_0xa8e8('0x20')]+_0x16629a[_0xa8e8('0x1e')];var _0x5bf2e9;if(_0x323796>=_0x7af896){_0x323796=_0x7af896;_0x5bf2e9=0xc8;}else{_0x5bf2e9=0xce;}_0x5dc3c4['status'](_0x5bf2e9);return _0x5dc3c4['set'](_0xa8e8('0x21'),_0x3f94f2+'-'+_0x323796+'/'+_0x7af896)[_0xa8e8('0x1c')](_0x11170a);}return null;};}function patchUpdates(_0x1f45ca){return function(_0x57bb9f){try{jsonpatch['apply'](_0x57bb9f,_0x1f45ca,!![]);}catch(_0x1273d9){return BPromise[_0xa8e8('0x22')](_0x1273d9);}return _0x57bb9f[_0xa8e8('0x23')]();};}function saveUpdates(_0x41ca39,_0x9da4a2){return function(_0x159440){if(_0x159440){return _0x159440[_0xa8e8('0x24')](_0x41ca39)['then'](function(_0x3d406c){return _0x3d406c;});}return null;};}function removeEntity(_0x2610cf,_0x312c6e){return function(_0x589e5d){if(_0x589e5d){return _0x589e5d[_0xa8e8('0x25')]()[_0xa8e8('0x26')](function(){_0x2610cf[_0xa8e8('0x1a')](0xcc)[_0xa8e8('0x1b')]();});}};}function handleEntityNotFound(_0xe2faa,_0x397099){return function(_0x1115b1){if(!_0x1115b1){_0xe2faa['sendStatus'](0x194);}return _0x1115b1;};}function handleError(_0x4e5f3b,_0xcfe098){_0xcfe098=_0xcfe098||0x1f4;return function(_0x580f7f){logger[_0xa8e8('0x27')](_0x580f7f[_0xa8e8('0x28')]);if(_0x580f7f[_0xa8e8('0x29')]){delete _0x580f7f[_0xa8e8('0x29')];}_0x4e5f3b[_0xa8e8('0x1a')](_0xcfe098)[_0xa8e8('0x2a')](_0x580f7f);};}exports[_0xa8e8('0x2b')]=function(_0x4db56d,_0x78db0b){var _0x4df11b={},_0x34952a={},_0x2a81e6={'count':0x0,'rows':[]};var _0xcd0e5e=_[_0xa8e8('0x2c')](db[_0xa8e8('0x2d')][_0xa8e8('0x2e')],function(_0xb7bc49){return{'name':_0xb7bc49[_0xa8e8('0x2f')],'type':_0xb7bc49['type'][_0xa8e8('0x30')]};});_0x34952a[_0xa8e8('0x31')]=_[_0xa8e8('0x2c')](_0xcd0e5e,_0xa8e8('0x29'));_0x34952a[_0xa8e8('0x32')]=_[_0xa8e8('0x33')](_0x4db56d[_0xa8e8('0x32')]);_0x34952a[_0xa8e8('0x34')]=_[_0xa8e8('0x35')](_0x34952a['model'],_0x34952a[_0xa8e8('0x32')]);_0x4df11b[_0xa8e8('0x36')]=_[_0xa8e8('0x35')](_0x34952a['model'],qs[_0xa8e8('0x37')](_0x4db56d['query']['fields']));_0x4df11b[_0xa8e8('0x36')]=_0x4df11b[_0xa8e8('0x36')][_0xa8e8('0x38')]?_0x4df11b['attributes']:_0x34952a['model'];if(!_0x4db56d[_0xa8e8('0x32')]['hasOwnProperty']('nolimit')){_0x4df11b[_0xa8e8('0x1e')]=qs['limit'](_0x4db56d[_0xa8e8('0x32')][_0xa8e8('0x1e')]);_0x4df11b[_0xa8e8('0x20')]=qs[_0xa8e8('0x20')](_0x4db56d[_0xa8e8('0x32')][_0xa8e8('0x20')]);}_0x4df11b[_0xa8e8('0x39')]=qs[_0xa8e8('0x3a')](_0x4db56d[_0xa8e8('0x32')][_0xa8e8('0x3a')]);_0x4df11b['where']=qs[_0xa8e8('0x34')](_[_0xa8e8('0x3b')](_0x4db56d[_0xa8e8('0x32')],_0x34952a[_0xa8e8('0x34')]),_0xcd0e5e);if(_0x4db56d[_0xa8e8('0x32')][_0xa8e8('0x3c')]){_0x4df11b['where']=_[_0xa8e8('0x3d')](_0x4df11b[_0xa8e8('0x3e')],{'$or':_[_0xa8e8('0x2c')](_0xcd0e5e,function(_0x45c9bf){if(_0x45c9bf[_0xa8e8('0x3f')]!==_0xa8e8('0x40')){var _0x2ea0d7={};_0x2ea0d7[_0x45c9bf['name']]={'$like':'%'+_0x4db56d['query'][_0xa8e8('0x3c')]+'%'};return _0x2ea0d7;}})});}_0x4df11b=_[_0xa8e8('0x3d')]({},_0x4df11b,_0x4db56d[_0xa8e8('0x41')]);var _0x254989={'where':_0x4df11b[_0xa8e8('0x3e')]};return db[_0xa8e8('0x2d')][_0xa8e8('0x1f')](_0x254989)[_0xa8e8('0x26')](function(_0x5e77b1){_0x2a81e6[_0xa8e8('0x1f')]=_0x5e77b1;if(_0x4db56d[_0xa8e8('0x32')][_0xa8e8('0x42')]){_0x4df11b['include']=[{'all':!![]}];}return db[_0xa8e8('0x2d')]['findAll'](_0x4df11b);})[_0xa8e8('0x26')](function(_0x3494b0){_0x2a81e6[_0xa8e8('0x43')]=_0x3494b0;return _0x2a81e6;})[_0xa8e8('0x26')](respondWithFilteredResult(_0x78db0b,_0x4df11b))[_0xa8e8('0x44')](handleError(_0x78db0b,null));};exports[_0xa8e8('0x45')]=function(_0x54c32c,_0x49da9b){var _0x2189d5={'raw':![],'where':{'id':_0x54c32c['params']['id']}},_0x54fcd9={};_0x54fcd9[_0xa8e8('0x31')]=_[_0xa8e8('0x33')](db['SalesforceAccount'][_0xa8e8('0x2e')]);_0x54fcd9[_0xa8e8('0x32')]=_[_0xa8e8('0x33')](_0x54c32c[_0xa8e8('0x32')]);_0x54fcd9[_0xa8e8('0x34')]=_[_0xa8e8('0x35')](_0x54fcd9['model'],_0x54fcd9[_0xa8e8('0x32')]);_0x2189d5[_0xa8e8('0x36')]=_['intersection'](_0x54fcd9[_0xa8e8('0x31')],qs['fields'](_0x54c32c[_0xa8e8('0x32')][_0xa8e8('0x37')]));_0x2189d5[_0xa8e8('0x36')]=_0x2189d5['attributes'][_0xa8e8('0x38')]?_0x2189d5[_0xa8e8('0x36')]:_0x54fcd9[_0xa8e8('0x31')];if(_0x54c32c[_0xa8e8('0x32')]['includeAll']){_0x2189d5['include']=[{'all':!![]}];}_0x2189d5=_[_0xa8e8('0x3d')]({},_0x2189d5,_0x54c32c[_0xa8e8('0x41')]);return db[_0xa8e8('0x2d')][_0xa8e8('0x46')](_0x2189d5)[_0xa8e8('0x26')](handleEntityNotFound(_0x49da9b,null))[_0xa8e8('0x26')](respondWithResult(_0x49da9b,null))[_0xa8e8('0x44')](handleError(_0x49da9b,null));};exports['create']=function(_0x187f72,_0x3ffc9f){return db[_0xa8e8('0x2d')]['create'](_0x187f72['body'],{})[_0xa8e8('0x26')](respondWithResult(_0x3ffc9f,0xc9))[_0xa8e8('0x44')](handleError(_0x3ffc9f,null));};exports['update']=function(_0x5cae6b,_0x7c32ba){if(_0x5cae6b['body']['id']){delete _0x5cae6b[_0xa8e8('0x47')]['id'];}return db[_0xa8e8('0x2d')]['find']({'where':{'id':_0x5cae6b[_0xa8e8('0x48')]['id']}})[_0xa8e8('0x26')](handleEntityNotFound(_0x7c32ba,null))[_0xa8e8('0x26')](saveUpdates(_0x5cae6b[_0xa8e8('0x47')],null))['then'](respondWithResult(_0x7c32ba,null))['catch'](handleError(_0x7c32ba,null));};exports[_0xa8e8('0x25')]=function(_0x864dc6,_0xab9b07){return db[_0xa8e8('0x2d')][_0xa8e8('0x46')]({'where':{'id':_0x864dc6[_0xa8e8('0x48')]['id']}})[_0xa8e8('0x26')](handleEntityNotFound(_0xab9b07,null))['then'](removeEntity(_0xab9b07,null))[_0xa8e8('0x44')](handleError(_0xab9b07,null));};exports[_0xa8e8('0x49')]=function(_0x5343d9,_0x191e43,_0x4e5b5e){var _0x8f0ac7={};var _0x22af30={};var _0x229606;var _0x2b2564;return db['SalesforceAccount'][_0xa8e8('0x4a')]({'where':{'id':_0x5343d9[_0xa8e8('0x48')]['id']}})['then'](handleEntityNotFound(_0x191e43,null))[_0xa8e8('0x26')](function(_0x4e9988){if(_0x4e9988){_0x229606=_0x4e9988;_0x22af30[_0xa8e8('0x31')]=_[_0xa8e8('0x33')](db[_0xa8e8('0x4b')][_0xa8e8('0x2e')]);_0x22af30[_0xa8e8('0x32')]=_[_0xa8e8('0x33')](_0x5343d9[_0xa8e8('0x32')]);_0x22af30[_0xa8e8('0x34')]=_['intersection'](_0x22af30[_0xa8e8('0x31')],_0x22af30['query']);_0x8f0ac7['attributes']=_['intersection'](_0x22af30[_0xa8e8('0x31')],qs[_0xa8e8('0x37')](_0x5343d9[_0xa8e8('0x32')][_0xa8e8('0x37')]));_0x8f0ac7[_0xa8e8('0x36')]=_0x8f0ac7[_0xa8e8('0x36')]['length']?_0x8f0ac7[_0xa8e8('0x36')]:_0x22af30['model'];_0x8f0ac7[_0xa8e8('0x39')]=qs['sort'](_0x5343d9[_0xa8e8('0x32')][_0xa8e8('0x3a')]);_0x8f0ac7[_0xa8e8('0x3e')]=qs['filters'](_[_0xa8e8('0x3b')](_0x5343d9['query'],_0x22af30[_0xa8e8('0x34')]));if(_0x5343d9[_0xa8e8('0x32')][_0xa8e8('0x3c')]){_0x8f0ac7[_0xa8e8('0x3e')]=_[_0xa8e8('0x3d')](_0x8f0ac7[_0xa8e8('0x3e')],{'$or':_[_0xa8e8('0x2c')](_0x8f0ac7[_0xa8e8('0x36')],function(_0x14949b){var _0x49d16d={};_0x49d16d[_0x14949b]={'$like':'%'+_0x5343d9[_0xa8e8('0x32')][_0xa8e8('0x3c')]+'%'};return _0x49d16d;})});}_0x8f0ac7=_[_0xa8e8('0x3d')]({},_0x8f0ac7,_0x5343d9[_0xa8e8('0x41')]);return _0x229606[_0xa8e8('0x49')](_0x8f0ac7);}})[_0xa8e8('0x26')](function(_0x5b5701){if(_0x5b5701){_0x2b2564=_0x5b5701[_0xa8e8('0x38')];if(!_0x5343d9[_0xa8e8('0x32')][_0xa8e8('0x4c')]('nolimit')){_0x8f0ac7['limit']=qs['limit'](_0x5343d9[_0xa8e8('0x32')]['limit']);_0x8f0ac7[_0xa8e8('0x20')]=qs['offset'](_0x5343d9['query'][_0xa8e8('0x20')]);}return _0x229606[_0xa8e8('0x49')](_0x8f0ac7);}})[_0xa8e8('0x26')](function(_0x81ebdf){if(_0x81ebdf){return _0x81ebdf?{'count':_0x2b2564,'rows':_0x81ebdf}:null;}})[_0xa8e8('0x26')](respondWithResult(_0x191e43,null))[_0xa8e8('0x44')](handleError(_0x191e43,null));};exports['addConfiguration']=function(_0x3137f8,_0x195221,_0x3d3b04){if(_0x3137f8['body']['id']){delete _0x3137f8['body']['id'];}return db[_0xa8e8('0x2d')]['findOne']({'where':{'id':_0x3137f8[_0xa8e8('0x48')]['id']}})['then'](handleEntityNotFound(_0x195221,null))[_0xa8e8('0x26')](function(_0x140b7f){if(_0x140b7f){_0x3137f8[_0xa8e8('0x47')]['AccountId']=_0x140b7f['id'];_0x3137f8[_0xa8e8('0x47')][_0xa8e8('0x4d')]=integrations[_0xa8e8('0x4e')](_0x3137f8[_0xa8e8('0x47')]['channel'],_0x3137f8[_0xa8e8('0x47')][_0xa8e8('0x3f')]);_0x3137f8[_0xa8e8('0x47')][_0xa8e8('0x4f')]=integrations['getDescriptions'](_0x3137f8[_0xa8e8('0x47')][_0xa8e8('0x50')],_0x3137f8[_0xa8e8('0x47')][_0xa8e8('0x3f')]);return db[_0xa8e8('0x4b')][_0xa8e8('0x51')](_0x3137f8[_0xa8e8('0x47')],{'include':[{'model':db[_0xa8e8('0x52')],'as':_0xa8e8('0x4d')},{'model':db[_0xa8e8('0x52')],'as':_0xa8e8('0x4f')}]});}return null;})[_0xa8e8('0x26')](respondWithResult(_0x195221,null))[_0xa8e8('0x44')](handleError(_0x195221,null));};exports[_0xa8e8('0x53')]=function(_0x49e72f,_0x4d429c,_0xada192){var _0x41e186;var _0x62b128='';var _0x54e7cb=_0xa8e8('0x54');return db[_0xa8e8('0x2d')]['findOne']({'where':{'id':_0x49e72f[_0xa8e8('0x48')]['id']},'attributes':['id',_0xa8e8('0x55'),_0xa8e8('0x56'),_0xa8e8('0x57'),_0xa8e8('0x58'),'password',_0xa8e8('0x59')]})[_0xa8e8('0x26')](handleEntityNotFound(_0x4d429c,null))['then'](function(_0x5f4cbd){if(_0x5f4cbd){_0x62b128=_0x5f4cbd['remoteUri'];var _0x1e3932=_0x62b128[_0xa8e8('0x5a')](-0x1);if(_0x1e3932==='/'){_0x62b128=_0x62b128[_0xa8e8('0x5b')](0x0,_0x62b128[_0xa8e8('0x5c')](_0x1e3932));}_0x41e186=new jsforce['Connection']({'oauth2':{'loginUrl':_0x62b128,'clientId':_0x5f4cbd['clientId'],'clientSecret':_0x5f4cbd[_0xa8e8('0x57')]}});return _0x41e186[_0xa8e8('0x5d')](_0x5f4cbd[_0xa8e8('0x58')],_0x5f4cbd[_0xa8e8('0x5e')][_0xa8e8('0x5f')](_0x5f4cbd[_0xa8e8('0x59')]));}})[_0xa8e8('0x26')](function(_0x1f719b){if(_0x1f719b){if(!_[_0xa8e8('0x60')](_0x49e72f['query'][_0xa8e8('0x61')])){_0x54e7cb=_0x49e72f[_0xa8e8('0x32')][_0xa8e8('0x61')];}return _0x41e186[_0xa8e8('0x62')](_0x54e7cb)['describe']();}})[_0xa8e8('0x26')](function(_0xeedd47){var _0x2f83dc=['OwnerId',_0xa8e8('0x63'),'IsReminderSet',_0xa8e8('0x64'),_0xa8e8('0x65'),_0xa8e8('0x66')];var _0x542608=[_0xa8e8('0x67'),'int',_0xa8e8('0x68'),_0xa8e8('0x69'),_0xa8e8('0x6a'),'textarea',_0xa8e8('0x6b')];if(_0xeedd47){_[_0xa8e8('0x6c')](_0xeedd47[_0xa8e8('0x37')],function(_0xa68ff8){return _0x2f83dc[_0xa8e8('0x6d')](_0xa68ff8['name'])||!_0x542608[_0xa8e8('0x6d')](_0xa68ff8[_0xa8e8('0x3f')]);});return{'count':_0xeedd47[_0xa8e8('0x37')][_0xa8e8('0x38')],'rows':_[_0xa8e8('0x2c')](_0xeedd47[_0xa8e8('0x37')],function(_0x5df129){return{'id':_0x5df129[_0xa8e8('0x29')],'name':_0x5df129[_0xa8e8('0x6e')],'custom':_0x5df129[_0xa8e8('0x6f')],'options':_0x5df129[_0xa8e8('0x70')][_0xa8e8('0x38')]>0x0?_[_0xa8e8('0x2c')](_0x5df129[_0xa8e8('0x70')],function(_0x5e7f7a){return{'name':_0x5e7f7a[_0xa8e8('0x6e')],'value':_0x5e7f7a['value']};}):_0x5df129[_0xa8e8('0x3f')]=='boolean'?[{'name':_0xa8e8('0x71'),'value':_0xa8e8('0x72')},{'name':_0xa8e8('0x73'),'value':'false'}]:[]};})};}})[_0xa8e8('0x26')](respondWithResult(_0x4d429c,null))['catch'](function(_0x46ae45){var _0x101074=_0x49e72f[_0xa8e8('0x32')][_0xa8e8('0x74')]?0x1f4:_0x46ae45[_0xa8e8('0x75')]||0x1f4;logger[_0xa8e8('0x27')](_0xa8e8('0x76'),_0xa8e8('0x53'),_0x101074,JSON[_0xa8e8('0x77')](_0x46ae45));delete _0x46ae45[_0xa8e8('0x29')];if(_0x101074===0x191){_0x101074=0x190;}_0x4d429c[_0xa8e8('0x1a')](_0x101074)[_0xa8e8('0x2a')](_0x49e72f['query'][_0xa8e8('0x74')]?{'message':'Wrong\x20credentials','statusCode':_0x46ae45[_0xa8e8('0x75')]}:_0x46ae45);});};
\ No newline at end of file
index ce20406..4f7b4e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x264f=['request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','SalesforceAccount','int_salesforce_accounts','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x20e0fe,_0x820e8){var _0x237d20=function(_0x3df04f){while(--_0x3df04f){_0x20e0fe['push'](_0x20e0fe['shift']());}};_0x237d20(++_0x820e8);}(_0x264f,0x19e));var _0xf264=function(_0x142d34,_0x2864c6){_0x142d34=_0x142d34-0x0;var _0x93006=_0x264f[_0x142d34];return _0x93006;};'use strict';var _=require(_0xf264('0x0'));var util=require(_0xf264('0x1'));var logger=require(_0xf264('0x2'))(_0xf264('0x3'));var moment=require(_0xf264('0x4'));var BPromise=require(_0xf264('0x5'));var rp=require(_0xf264('0x6'));var fs=require('fs');var path=require(_0xf264('0x7'));var rimraf=require(_0xf264('0x8'));var config=require(_0xf264('0x9'));var attributes=require('./intSalesforceAccount.attributes');var integrations=require(_0xf264('0xa'));module[_0xf264('0xb')]=function(_0x30375d,_0x5e1aba){return _0x30375d[_0xf264('0xc')](_0xf264('0xd'),attributes,{'tableName':_0xf264('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9e25=['../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./intSalesforceAccount.attributes','exports','define','SalesforceAccount','lodash','util'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x9e25,0x82));var _0x59e2=function(_0x20b191,_0x1adcc9){_0x20b191=_0x20b191-0x0;var _0x51cdff=_0x9e25[_0x20b191];return _0x51cdff;};'use strict';var _=require(_0x59e2('0x0'));var util=require(_0x59e2('0x1'));var logger=require(_0x59e2('0x2'))(_0x59e2('0x3'));var moment=require(_0x59e2('0x4'));var BPromise=require(_0x59e2('0x5'));var rp=require(_0x59e2('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x59e2('0x7'));var attributes=require(_0x59e2('0x8'));var integrations=require('../../components/integrations/configuration');module[_0x59e2('0x9')]=function(_0x7f1155,_0x590aac){return _0x7f1155[_0x59e2('0xa')](_0x59e2('0xb'),attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dff0f24..85acf22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b9b=['where','attributes','limit','include','map','model','stringify','catch','ShowSalesforceAccount','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','error','code','SalesforceAccount,\x20%s,\x20%s','message','result','GetSalesforceAccount','SalesforceAccount','findAll','options','raw'];(function(_0x5c46e6,_0x7cd7ed){var _0x29df26=function(_0x4485cf){while(--_0x4485cf){_0x5c46e6['push'](_0x5c46e6['shift']());}};_0x29df26(++_0x7cd7ed);}(_0x7b9b,0x72));var _0xb7b9=function(_0x14f43b,_0x482b01){_0x14f43b=_0x14f43b-0x0;var _0x36700c=_0x7b9b[_0x14f43b];return _0x36700c;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xb7b9('0x0'));var BPromise=require(_0xb7b9('0x1'));var rs=require(_0xb7b9('0x2'));var fs=require('fs');var Redis=require(_0xb7b9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb7b9('0x4'));var logger=require(_0xb7b9('0x5'))('rpc');var config=require(_0xb7b9('0x6'));var jayson=require(_0xb7b9('0x7'));var client=jayson[_0xb7b9('0x8')][_0xb7b9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x28854f,_0x4ed5a7,_0x24d4e5){return new BPromise(function(_0x5f2ece,_0x36f316){return client[_0xb7b9('0xa')](_0x28854f,_0x24d4e5)[_0xb7b9('0xb')](function(_0x19c384){logger[_0xb7b9('0xc')]('SalesforceAccount,\x20%s,\x20%s',_0x4ed5a7,_0xb7b9('0xd'));logger[_0xb7b9('0xe')](_0xb7b9('0xf'),_0x4ed5a7,_0xb7b9('0xd'),JSON['stringify'](_0x19c384));if(_0x19c384[_0xb7b9('0x10')]){if(_0x19c384['error'][_0xb7b9('0x11')]===0x1f4){logger[_0xb7b9('0x10')](_0xb7b9('0x12'),_0x4ed5a7,_0x19c384[_0xb7b9('0x10')]['message']);return _0x36f316(_0x19c384['error'][_0xb7b9('0x13')]);}logger[_0xb7b9('0x10')](_0xb7b9('0x12'),_0x4ed5a7,_0x19c384['error'][_0xb7b9('0x13')]);return _0x5f2ece(_0x19c384[_0xb7b9('0x10')][_0xb7b9('0x13')]);}else{logger['info'](_0xb7b9('0x12'),_0x4ed5a7,_0xb7b9('0xd'));_0x5f2ece(_0x19c384[_0xb7b9('0x14')][_0xb7b9('0x13')]);}})['catch'](function(_0x3b569b){logger[_0xb7b9('0x10')](_0xb7b9('0x12'),_0x4ed5a7,_0x3b569b);_0x36f316(_0x3b569b);});});}exports[_0xb7b9('0x15')]=function(_0x52781e){var _0x2667c6=this;return new Promise(function(_0x5db7ad,_0x64ad28){return db[_0xb7b9('0x16')][_0xb7b9('0x17')]({'raw':_0x52781e[_0xb7b9('0x18')]?_0x52781e[_0xb7b9('0x18')][_0xb7b9('0x19')]===undefined?!![]:![]:!![],'where':_0x52781e[_0xb7b9('0x18')]?_0x52781e[_0xb7b9('0x18')][_0xb7b9('0x1a')]||null:null,'attributes':_0x52781e['options']?_0x52781e[_0xb7b9('0x18')][_0xb7b9('0x1b')]||null:null,'limit':_0x52781e['options']?_0x52781e[_0xb7b9('0x18')][_0xb7b9('0x1c')]||null:null,'include':_0x52781e[_0xb7b9('0x18')]?_0x52781e['options'][_0xb7b9('0x1d')]?_[_0xb7b9('0x1e')](_0x52781e[_0xb7b9('0x18')][_0xb7b9('0x1d')],function(_0x2b79e5){return{'model':db[_0x2b79e5[_0xb7b9('0x1f')]],'as':_0x2b79e5['as'],'attributes':_0x2b79e5[_0xb7b9('0x1b')],'include':_0x2b79e5[_0xb7b9('0x1d')]?_[_0xb7b9('0x1e')](_0x2b79e5['include'],function(_0x27b484){return{'model':db[_0x27b484[_0xb7b9('0x1f')]],'as':_0x27b484['as'],'attributes':_0x27b484[_0xb7b9('0x1b')],'include':_0x27b484[_0xb7b9('0x1d')]?_[_0xb7b9('0x1e')](_0x27b484[_0xb7b9('0x1d')],function(_0x5a96ae){return{'model':db[_0x5a96ae[_0xb7b9('0x1f')]],'as':_0x5a96ae['as'],'attributes':_0x5a96ae['attributes']};}):[]};}):[]};}):[]:[]})[_0xb7b9('0xb')](function(_0x5c57c4){logger[_0xb7b9('0xc')](_0xb7b9('0x15'),_0x52781e);logger[_0xb7b9('0xe')]('GetSalesforceAccount',_0x52781e,JSON[_0xb7b9('0x20')](_0x5c57c4));_0x5db7ad(_0x5c57c4);})[_0xb7b9('0x21')](function(_0x4d5c7f){logger[_0xb7b9('0x10')](_0xb7b9('0x15'),_0x4d5c7f[_0xb7b9('0x13')],_0x52781e);_0x64ad28(_0x2667c6[_0xb7b9('0x10')](0x1f4,_0x4d5c7f[_0xb7b9('0x13')]));});});};exports[_0xb7b9('0x22')]=function(_0x580287){var _0x5e8b9a=this;return new Promise(function(_0x3603a6,_0x2ab528){return db[_0xb7b9('0x16')]['find']({'raw':_0x580287['options']?_0x580287[_0xb7b9('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x580287[_0xb7b9('0x18')]?_0x580287['options'][_0xb7b9('0x1a')]||null:null,'attributes':_0x580287['options']?_0x580287[_0xb7b9('0x18')][_0xb7b9('0x1b')]||null:null,'include':_0x580287[_0xb7b9('0x18')]?_0x580287['options'][_0xb7b9('0x1d')]?_[_0xb7b9('0x1e')](_0x580287['options'][_0xb7b9('0x1d')],function(_0x446af5){return{'model':db[_0x446af5[_0xb7b9('0x1f')]],'as':_0x446af5['as'],'attributes':_0x446af5[_0xb7b9('0x1b')],'include':_0x446af5[_0xb7b9('0x1d')]?_[_0xb7b9('0x1e')](_0x446af5[_0xb7b9('0x1d')],function(_0x37e9c3){return{'model':db[_0x37e9c3[_0xb7b9('0x1f')]],'as':_0x37e9c3['as'],'attributes':_0x37e9c3[_0xb7b9('0x1b')],'include':_0x37e9c3[_0xb7b9('0x1d')]?_[_0xb7b9('0x1e')](_0x37e9c3[_0xb7b9('0x1d')],function(_0x471584){return{'model':db[_0x471584[_0xb7b9('0x1f')]],'as':_0x471584['as'],'attributes':_0x471584[_0xb7b9('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xb7b9('0xb')](function(_0x5c8f64){logger[_0xb7b9('0xc')](_0xb7b9('0x22'),_0x580287);logger[_0xb7b9('0xe')](_0xb7b9('0x22'),_0x580287,JSON[_0xb7b9('0x20')](_0x5c8f64));_0x3603a6(_0x5c8f64);})[_0xb7b9('0x21')](function(_0x2b2aee){logger[_0xb7b9('0x10')](_0xb7b9('0x22'),_0x2b2aee[_0xb7b9('0x13')],_0x580287);_0x2ab528(_0x5e8b9a[_0xb7b9('0x10')](0x1f4,_0x2b2aee[_0xb7b9('0x13')]));});});};
\ No newline at end of file
+var _0xe0ae=['ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SalesforceAccount,\x20%s,\x20%s','message','info','result','catch','findAll','options','raw','where','attributes','limit','map','include','model','GetSalesforceAccount','ShowSalesforceAccount','SalesforceAccount','find','lodash','moment','randomstring'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xe0ae,0x1a1));var _0xee0a=function(_0x9fb081,_0x48f480){_0x9fb081=_0x9fb081-0x0;var _0x43f8b0=_0xe0ae[_0x9fb081];return _0x43f8b0;};'use strict';var _=require(_0xee0a('0x0'));var util=require('util');var moment=require(_0xee0a('0x1'));var BPromise=require('bluebird');var rs=require(_0xee0a('0x2'));var fs=require('fs');var Redis=require(_0xee0a('0x3'));var db=require(_0xee0a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xee0a('0x5'))('rpc');var config=require(_0xee0a('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xee0a('0x7')][_0xee0a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x29e4e7,_0x3cbeae,_0x3fc69e){return new BPromise(function(_0x6bd13b,_0x4834b9){return client[_0xee0a('0x9')](_0x29e4e7,_0x3fc69e)[_0xee0a('0xa')](function(_0x56c49e){logger['info']('SalesforceAccount,\x20%s,\x20%s',_0x3cbeae,_0xee0a('0xb'));logger[_0xee0a('0xc')](_0xee0a('0xd'),_0x3cbeae,_0xee0a('0xb'),JSON[_0xee0a('0xe')](_0x56c49e));if(_0x56c49e[_0xee0a('0xf')]){if(_0x56c49e[_0xee0a('0xf')][_0xee0a('0x10')]===0x1f4){logger[_0xee0a('0xf')](_0xee0a('0x11'),_0x3cbeae,_0x56c49e['error'][_0xee0a('0x12')]);return _0x4834b9(_0x56c49e['error'][_0xee0a('0x12')]);}logger['error'](_0xee0a('0x11'),_0x3cbeae,_0x56c49e[_0xee0a('0xf')][_0xee0a('0x12')]);return _0x6bd13b(_0x56c49e[_0xee0a('0xf')][_0xee0a('0x12')]);}else{logger[_0xee0a('0x13')]('SalesforceAccount,\x20%s,\x20%s',_0x3cbeae,_0xee0a('0xb'));_0x6bd13b(_0x56c49e[_0xee0a('0x14')][_0xee0a('0x12')]);}})[_0xee0a('0x15')](function(_0x2c3b7c){logger[_0xee0a('0xf')](_0xee0a('0x11'),_0x3cbeae,_0x2c3b7c);_0x4834b9(_0x2c3b7c);});});}exports['GetSalesforceAccount']=function(_0x568e43){var _0x7500f2=this;return new Promise(function(_0x16d037,_0x2e9129){return db['SalesforceAccount'][_0xee0a('0x16')]({'raw':_0x568e43[_0xee0a('0x17')]?_0x568e43[_0xee0a('0x17')][_0xee0a('0x18')]===undefined?!![]:![]:!![],'where':_0x568e43[_0xee0a('0x17')]?_0x568e43[_0xee0a('0x17')][_0xee0a('0x19')]||null:null,'attributes':_0x568e43[_0xee0a('0x17')]?_0x568e43['options'][_0xee0a('0x1a')]||null:null,'limit':_0x568e43['options']?_0x568e43['options'][_0xee0a('0x1b')]||null:null,'include':_0x568e43['options']?_0x568e43['options']['include']?_[_0xee0a('0x1c')](_0x568e43[_0xee0a('0x17')]['include'],function(_0x454c8d){return{'model':db[_0x454c8d['model']],'as':_0x454c8d['as'],'attributes':_0x454c8d[_0xee0a('0x1a')],'include':_0x454c8d['include']?_[_0xee0a('0x1c')](_0x454c8d[_0xee0a('0x1d')],function(_0x2ae72e){return{'model':db[_0x2ae72e[_0xee0a('0x1e')]],'as':_0x2ae72e['as'],'attributes':_0x2ae72e[_0xee0a('0x1a')],'include':_0x2ae72e[_0xee0a('0x1d')]?_[_0xee0a('0x1c')](_0x2ae72e[_0xee0a('0x1d')],function(_0x53ad22){return{'model':db[_0x53ad22[_0xee0a('0x1e')]],'as':_0x53ad22['as'],'attributes':_0x53ad22[_0xee0a('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45f730){logger[_0xee0a('0x13')](_0xee0a('0x1f'),_0x568e43);logger['debug'](_0xee0a('0x1f'),_0x568e43,JSON[_0xee0a('0xe')](_0x45f730));_0x16d037(_0x45f730);})[_0xee0a('0x15')](function(_0x186f72){logger[_0xee0a('0xf')](_0xee0a('0x1f'),_0x186f72[_0xee0a('0x12')],_0x568e43);_0x2e9129(_0x7500f2['error'](0x1f4,_0x186f72[_0xee0a('0x12')]));});});};exports[_0xee0a('0x20')]=function(_0x59e1b9){var _0xd87f86=this;return new Promise(function(_0x4d698e,_0x429c22){return db[_0xee0a('0x21')][_0xee0a('0x22')]({'raw':_0x59e1b9['options']?_0x59e1b9[_0xee0a('0x17')][_0xee0a('0x18')]===undefined?!![]:![]:!![],'where':_0x59e1b9[_0xee0a('0x17')]?_0x59e1b9[_0xee0a('0x17')][_0xee0a('0x19')]||null:null,'attributes':_0x59e1b9[_0xee0a('0x17')]?_0x59e1b9[_0xee0a('0x17')][_0xee0a('0x1a')]||null:null,'include':_0x59e1b9['options']?_0x59e1b9[_0xee0a('0x17')][_0xee0a('0x1d')]?_[_0xee0a('0x1c')](_0x59e1b9['options'][_0xee0a('0x1d')],function(_0x4a24c7){return{'model':db[_0x4a24c7[_0xee0a('0x1e')]],'as':_0x4a24c7['as'],'attributes':_0x4a24c7[_0xee0a('0x1a')],'include':_0x4a24c7['include']?_[_0xee0a('0x1c')](_0x4a24c7[_0xee0a('0x1d')],function(_0x4073e7){return{'model':db[_0x4073e7[_0xee0a('0x1e')]],'as':_0x4073e7['as'],'attributes':_0x4073e7[_0xee0a('0x1a')],'include':_0x4073e7[_0xee0a('0x1d')]?_[_0xee0a('0x1c')](_0x4073e7[_0xee0a('0x1d')],function(_0x58f180){return{'model':db[_0x58f180[_0xee0a('0x1e')]],'as':_0x58f180['as'],'attributes':_0x58f180[_0xee0a('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xee0a('0xa')](function(_0x3a6b6a){logger['info'](_0xee0a('0x20'),_0x59e1b9);logger[_0xee0a('0xc')](_0xee0a('0x20'),_0x59e1b9,JSON[_0xee0a('0xe')](_0x3a6b6a));_0x4d698e(_0x3a6b6a);})[_0xee0a('0x15')](function(_0x3e861f){logger[_0xee0a('0xf')]('ShowSalesforceAccount',_0x3e861f[_0xee0a('0x12')],_0x59e1b9);_0x429c22(_0xd87f86['error'](0x1f4,_0x3e861f[_0xee0a('0x12')]));});});};
\ No newline at end of file
index af6570b..5ce0797 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['getSubjects','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','index','/:id','isAuthenticated','/:id/subjects'];(function(_0x5a8c9e,_0x587ee4){var _0x2149fc=function(_0x4cff43){while(--_0x4cff43){_0x5a8c9e['push'](_0x5a8c9e['shift']());}};_0x2149fc(++_0x587ee4);}(_0x7a54,0x106));var _0x47a5=function(_0x3ab294,_0x57f951){_0x3ab294=_0x3ab294-0x0;var _0x362dfb=_0x7a54[_0x3ab294];return _0x362dfb;};'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('0x9')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x47a5('0x9')](_0x47a5('0xd'),auth['isAuthenticated'](),controller[_0x47a5('0xe')]);router['get']('/:id/descriptions',auth[_0x47a5('0xc')](),controller[_0x47a5('0xf')]);router[_0x47a5('0x10')]('/',auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);router[_0x47a5('0x12')](_0x47a5('0xb'),auth['isAuthenticated'](),controller[_0x47a5('0x13')]);router[_0x47a5('0x14')](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x15')]);module[_0x47a5('0x16')]=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(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0xdb28,0x106));var _0x8db2=function(_0x3e0cf4,_0x4b0dac){_0x3e0cf4=_0x3e0cf4-0x0;var _0x469605=_0xdb28[_0x3e0cf4];return _0x469605;};'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 fd860d9..32e18dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaac7=['account','nothing','sequelize','exports','STRING','Task','Case','ENUM','contact_lead','contact','lead','account_contact_lead'];(function(_0x4a806e,_0x5d47a8){var _0x29aa5b=function(_0x3b7627){while(--_0x3b7627){_0x4a806e['push'](_0x4a806e['shift']());}};_0x29aa5b(++_0x5d47a8);}(_0xaac7,0x122));var _0x7aac=function(_0x383356,_0x33d2f5){_0x383356=_0x383356-0x0;var _0x32ee5a=_0xaac7[_0x383356];return _0x32ee5a;};'use strict';var Sequelize=require(_0x7aac('0x0'));module[_0x7aac('0x1')]={'name':{'type':Sequelize[_0x7aac('0x2')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize['ENUM'](_0x7aac('0x3'),_0x7aac('0x4')),'defaultValue':_0x7aac('0x3')},'moduleSearch':{'type':Sequelize[_0x7aac('0x5')](_0x7aac('0x6'),_0x7aac('0x7'),_0x7aac('0x8'),_0x7aac('0x9'),_0x7aac('0xa')),'defaultValue':_0x7aac('0x6')},'moduleCreate':{'type':Sequelize[_0x7aac('0x5')](_0x7aac('0xb'),_0x7aac('0x7'),'lead',_0x7aac('0xa')),'defaultValue':_0x7aac('0x8')},'leadId':{'type':Sequelize[_0x7aac('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0x7aac('0x2')]},'additionalSearchContact':{'type':Sequelize[_0x7aac('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x7aac('0x2')]}};
\ No newline at end of file
+var _0xb69f=['ENUM','Task','Case','contact_lead','contact','lead','account_contact_lead','account','nothing','sequelize','exports','STRING'];(function(_0x3bcd8,_0x32be75){var _0x110034=function(_0x5e323d){while(--_0x5e323d){_0x3bcd8['push'](_0x3bcd8['shift']());}};_0x110034(++_0x32be75);}(_0xb69f,0x81));var _0xfb69=function(_0x4126e5,_0x385b21){_0x4126e5=_0x4126e5-0x0;var _0x2d1b2e=_0xb69f[_0x4126e5];return _0x2d1b2e;};'use strict';var Sequelize=require(_0xfb69('0x0'));module[_0xfb69('0x1')]={'name':{'type':Sequelize[_0xfb69('0x2')]},'description':{'type':Sequelize[_0xfb69('0x2')]},'ticketType':{'type':Sequelize[_0xfb69('0x3')](_0xfb69('0x4'),_0xfb69('0x5')),'defaultValue':_0xfb69('0x4')},'moduleSearch':{'type':Sequelize['ENUM'](_0xfb69('0x6'),_0xfb69('0x7'),_0xfb69('0x8'),_0xfb69('0x9'),_0xfb69('0xa')),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize['ENUM'](_0xfb69('0xb'),_0xfb69('0x7'),_0xfb69('0x8'),_0xfb69('0xa')),'defaultValue':_0xfb69('0x8')},'leadId':{'type':Sequelize[_0xfb69('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0xfb69('0x2')]},'additionalSearchContact':{'type':Sequelize[_0xfb69('0x2')]},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
index bca9484..e0740ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe927=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','status','end','undefined','limit','count','offset','Content-Range','json','apply','reject','save','update','then','sendStatus','error','stack','name','index','fieldName','type','map','query','keys','filters','attributes','model','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','SalesforceConfiguration','includeAll','include','catch','show','params','intersection','fields','find','create','body','destroy','getFields','findOne','SalesforceField','rawAttributes','pick','getSubjects','getDescriptions','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xe927,0x88));var _0x7e92=function(_0x5de214,_0x107e9d){_0x5de214=_0x5de214-0x0;var _0x4df627=_0xe927[_0x5de214];return _0x4df627;};'use strict';var emlformat=require(_0x7e92('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7e92('0x1'));var jsonpatch=require(_0x7e92('0x2'));var rp=require(_0x7e92('0x3'));var moment=require(_0x7e92('0x4'));var BPromise=require(_0x7e92('0x5'));var Mustache=require('mustache');var util=require(_0x7e92('0x6'));var path=require(_0x7e92('0x7'));var sox=require(_0x7e92('0x8'));var csv=require(_0x7e92('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7e92('0xa'));var squel=require(_0x7e92('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x7e92('0xc'));var toCsv=require(_0x7e92('0x9'));var querystring=require('querystring');var Papa=require(_0x7e92('0xd'));var Redis=require(_0x7e92('0xe'));var authService=require(_0x7e92('0xf'));var qs=require(_0x7e92('0x10'));var as=require(_0x7e92('0x11'));var hardwareService=require(_0x7e92('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0x7e92('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x7e92('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xc6adc,_0x2f883a){_0x2f883a=_0x2f883a||0xcc;return function(_0x3b5677){if(_0x3b5677){return _0xc6adc['sendStatus'](_0x2f883a);}return _0xc6adc[_0x7e92('0x15')](_0x2f883a)[_0x7e92('0x16')]();};}function respondWithResult(_0xaecd6,_0x1262e9){_0x1262e9=_0x1262e9||0xc8;return function(_0x2e07ad){if(_0x2e07ad){return _0xaecd6[_0x7e92('0x15')](_0x1262e9)['json'](_0x2e07ad);}};}function respondWithFilteredResult(_0x2eaeaf,_0x1239f8){return function(_0x5bb9f9){if(_0x5bb9f9){var _0xa2a1b7=typeof _0x1239f8['offset']===_0x7e92('0x17')&&typeof _0x1239f8[_0x7e92('0x18')]===_0x7e92('0x17');var _0xccd7dc=_0x5bb9f9[_0x7e92('0x19')];var _0x54b7b8=_0xa2a1b7?0x0:_0x1239f8[_0x7e92('0x1a')];var _0xff6612=_0xa2a1b7?_0x5bb9f9[_0x7e92('0x19')]:_0x1239f8['offset']+_0x1239f8['limit'];var _0x30593b;if(_0xff6612>=_0xccd7dc){_0xff6612=_0xccd7dc;_0x30593b=0xc8;}else{_0x30593b=0xce;}_0x2eaeaf[_0x7e92('0x15')](_0x30593b);return _0x2eaeaf['set'](_0x7e92('0x1b'),_0x54b7b8+'-'+_0xff6612+'/'+_0xccd7dc)[_0x7e92('0x1c')](_0x5bb9f9);}return null;};}function patchUpdates(_0x5b649b){return function(_0xf93a22){try{jsonpatch[_0x7e92('0x1d')](_0xf93a22,_0x5b649b,!![]);}catch(_0x5c648b){return BPromise[_0x7e92('0x1e')](_0x5c648b);}return _0xf93a22[_0x7e92('0x1f')]();};}function saveUpdates(_0xcd1974,_0x1d928b){return function(_0x2cf5f1){if(_0x2cf5f1){return _0x2cf5f1[_0x7e92('0x20')](_0xcd1974)[_0x7e92('0x21')](function(_0x5d8817){return _0x5d8817;});}return null;};}function removeEntity(_0x2dfa35,_0xf8914){return function(_0x1f1045){if(_0x1f1045){return _0x1f1045['destroy']()[_0x7e92('0x21')](function(){_0x2dfa35[_0x7e92('0x15')](0xcc)[_0x7e92('0x16')]();});}};}function handleEntityNotFound(_0x377bcd,_0x4e8ed0){return function(_0x1e9636){if(!_0x1e9636){_0x377bcd[_0x7e92('0x22')](0x194);}return _0x1e9636;};}function handleError(_0x50dadd,_0x3cf9b1){_0x3cf9b1=_0x3cf9b1||0x1f4;return function(_0x144979){logger[_0x7e92('0x23')](_0x144979[_0x7e92('0x24')]);if(_0x144979[_0x7e92('0x25')]){delete _0x144979[_0x7e92('0x25')];}_0x50dadd['status'](_0x3cf9b1)['send'](_0x144979);};}exports[_0x7e92('0x26')]=function(_0x5f21bd,_0x40ee73){var _0x297361={},_0x2a8e78={},_0x4d5e22={'count':0x0,'rows':[]};var _0x5bc9b4=_['map'](db['SalesforceConfiguration']['rawAttributes'],function(_0x29f594){return{'name':_0x29f594[_0x7e92('0x27')],'type':_0x29f594[_0x7e92('0x28')]['key']};});_0x2a8e78['model']=_[_0x7e92('0x29')](_0x5bc9b4,_0x7e92('0x25'));_0x2a8e78[_0x7e92('0x2a')]=_[_0x7e92('0x2b')](_0x5f21bd[_0x7e92('0x2a')]);_0x2a8e78[_0x7e92('0x2c')]=_['intersection'](_0x2a8e78['model'],_0x2a8e78[_0x7e92('0x2a')]);_0x297361[_0x7e92('0x2d')]=_['intersection'](_0x2a8e78[_0x7e92('0x2e')],qs['fields'](_0x5f21bd[_0x7e92('0x2a')]['fields']));_0x297361[_0x7e92('0x2d')]=_0x297361[_0x7e92('0x2d')][_0x7e92('0x2f')]?_0x297361[_0x7e92('0x2d')]:_0x2a8e78[_0x7e92('0x2e')];if(!_0x5f21bd['query'][_0x7e92('0x30')](_0x7e92('0x31'))){_0x297361[_0x7e92('0x18')]=qs['limit'](_0x5f21bd[_0x7e92('0x2a')][_0x7e92('0x18')]);_0x297361[_0x7e92('0x1a')]=qs[_0x7e92('0x1a')](_0x5f21bd[_0x7e92('0x2a')]['offset']);}_0x297361[_0x7e92('0x32')]=qs['sort'](_0x5f21bd[_0x7e92('0x2a')][_0x7e92('0x33')]);_0x297361[_0x7e92('0x34')]=qs[_0x7e92('0x2c')](_['pick'](_0x5f21bd[_0x7e92('0x2a')],_0x2a8e78[_0x7e92('0x2c')]),_0x5bc9b4);if(_0x5f21bd[_0x7e92('0x2a')][_0x7e92('0x35')]){_0x297361['where']=_[_0x7e92('0x36')](_0x297361[_0x7e92('0x34')],{'$or':_['map'](_0x5bc9b4,function(_0x142729){if(_0x142729['type']!==_0x7e92('0x37')){var _0x391bf5={};_0x391bf5[_0x142729[_0x7e92('0x25')]]={'$like':'%'+_0x5f21bd[_0x7e92('0x2a')]['filter']+'%'};return _0x391bf5;}})});}_0x297361=_[_0x7e92('0x36')]({},_0x297361,_0x5f21bd[_0x7e92('0x38')]);var _0x463793={'where':_0x297361[_0x7e92('0x34')]};return db[_0x7e92('0x39')]['count'](_0x463793)[_0x7e92('0x21')](function(_0x1a3e58){_0x4d5e22[_0x7e92('0x19')]=_0x1a3e58;if(_0x5f21bd[_0x7e92('0x2a')][_0x7e92('0x3a')]){_0x297361[_0x7e92('0x3b')]=[{'all':!![]}];}return db[_0x7e92('0x39')]['findAll'](_0x297361);})['then'](function(_0x6ceafa){_0x4d5e22['rows']=_0x6ceafa;return _0x4d5e22;})[_0x7e92('0x21')](respondWithFilteredResult(_0x40ee73,_0x297361))[_0x7e92('0x3c')](handleError(_0x40ee73,null));};exports[_0x7e92('0x3d')]=function(_0x3d269d,_0x391bf7){var _0x216f6b={'raw':![],'where':{'id':_0x3d269d[_0x7e92('0x3e')]['id']}},_0x3dab65={};_0x3dab65[_0x7e92('0x2e')]=_[_0x7e92('0x2b')](db[_0x7e92('0x39')]['rawAttributes']);_0x3dab65['query']=_['keys'](_0x3d269d[_0x7e92('0x2a')]);_0x3dab65[_0x7e92('0x2c')]=_[_0x7e92('0x3f')](_0x3dab65['model'],_0x3dab65['query']);_0x216f6b['attributes']=_[_0x7e92('0x3f')](_0x3dab65['model'],qs[_0x7e92('0x40')](_0x3d269d[_0x7e92('0x2a')][_0x7e92('0x40')]));_0x216f6b[_0x7e92('0x2d')]=_0x216f6b[_0x7e92('0x2d')][_0x7e92('0x2f')]?_0x216f6b['attributes']:_0x3dab65[_0x7e92('0x2e')];if(_0x3d269d['query'][_0x7e92('0x3a')]){_0x216f6b[_0x7e92('0x3b')]=[{'all':!![]}];}_0x216f6b=_['merge']({},_0x216f6b,_0x3d269d[_0x7e92('0x38')]);return db[_0x7e92('0x39')][_0x7e92('0x41')](_0x216f6b)['then'](handleEntityNotFound(_0x391bf7,null))[_0x7e92('0x21')](respondWithResult(_0x391bf7,null))[_0x7e92('0x3c')](handleError(_0x391bf7,null));};exports[_0x7e92('0x42')]=function(_0x31d531,_0x2fee72){return db[_0x7e92('0x39')][_0x7e92('0x42')](_0x31d531[_0x7e92('0x43')],{})[_0x7e92('0x21')](respondWithResult(_0x2fee72,0xc9))['catch'](handleError(_0x2fee72,null));};exports[_0x7e92('0x20')]=function(_0x220077,_0x3f7a90){if(_0x220077['body']['id']){delete _0x220077[_0x7e92('0x43')]['id'];}return db[_0x7e92('0x39')][_0x7e92('0x41')]({'where':{'id':_0x220077[_0x7e92('0x3e')]['id']}})[_0x7e92('0x21')](handleEntityNotFound(_0x3f7a90,null))[_0x7e92('0x21')](saveUpdates(_0x220077[_0x7e92('0x43')],null))['then'](respondWithResult(_0x3f7a90,null))[_0x7e92('0x3c')](handleError(_0x3f7a90,null));};exports[_0x7e92('0x44')]=function(_0x290c73,_0xa92cc3){return db[_0x7e92('0x39')][_0x7e92('0x41')]({'where':{'id':_0x290c73[_0x7e92('0x3e')]['id']}})[_0x7e92('0x21')](handleEntityNotFound(_0xa92cc3,null))[_0x7e92('0x21')](removeEntity(_0xa92cc3,null))[_0x7e92('0x3c')](handleError(_0xa92cc3,null));};exports[_0x7e92('0x45')]=function(_0x10ac1e,_0x3f3ab8,_0x2dd857){var _0x53a0ee={};var _0x516685={};var _0x4069b0;var _0x5ebe74;return db[_0x7e92('0x39')][_0x7e92('0x46')]({'where':{'id':_0x10ac1e[_0x7e92('0x3e')]['id']}})[_0x7e92('0x21')](handleEntityNotFound(_0x3f3ab8,null))['then'](function(_0x5899bc){if(_0x5899bc){_0x4069b0=_0x5899bc;_0x516685[_0x7e92('0x2e')]=_[_0x7e92('0x2b')](db['SalesforceField']['rawAttributes']);_0x516685['query']=_[_0x7e92('0x2b')](_0x10ac1e['query']);_0x516685['filters']=_[_0x7e92('0x3f')](_0x516685[_0x7e92('0x2e')],_0x516685['query']);_0x53a0ee['attributes']=_[_0x7e92('0x3f')](_0x516685['model'],qs['fields'](_0x10ac1e[_0x7e92('0x2a')][_0x7e92('0x40')]));_0x53a0ee[_0x7e92('0x2d')]=_0x53a0ee['attributes'][_0x7e92('0x2f')]?_0x53a0ee['attributes']:_0x516685[_0x7e92('0x2e')];_0x53a0ee[_0x7e92('0x32')]=qs[_0x7e92('0x33')](_0x10ac1e[_0x7e92('0x2a')][_0x7e92('0x33')]);_0x53a0ee[_0x7e92('0x34')]=qs[_0x7e92('0x2c')](_['pick'](_0x10ac1e[_0x7e92('0x2a')],_0x516685[_0x7e92('0x2c')]));if(_0x10ac1e['query']['filter']){_0x53a0ee['where']=_[_0x7e92('0x36')](_0x53a0ee[_0x7e92('0x34')],{'$or':_[_0x7e92('0x29')](_0x53a0ee[_0x7e92('0x2d')],function(_0x371382){var _0x1f16bc={};_0x1f16bc[_0x371382]={'$like':'%'+_0x10ac1e['query'][_0x7e92('0x35')]+'%'};return _0x1f16bc;})});}_0x53a0ee=_[_0x7e92('0x36')]({},_0x53a0ee,_0x10ac1e[_0x7e92('0x38')]);return _0x4069b0[_0x7e92('0x45')](_0x53a0ee);}})['then'](function(_0x168b81){if(_0x168b81){_0x5ebe74=_0x168b81[_0x7e92('0x2f')];if(!_0x10ac1e[_0x7e92('0x2a')][_0x7e92('0x30')](_0x7e92('0x31'))){_0x53a0ee[_0x7e92('0x18')]=qs[_0x7e92('0x18')](_0x10ac1e[_0x7e92('0x2a')][_0x7e92('0x18')]);_0x53a0ee[_0x7e92('0x1a')]=qs['offset'](_0x10ac1e['query'][_0x7e92('0x1a')]);}return _0x4069b0[_0x7e92('0x45')](_0x53a0ee);}})['then'](function(_0x283784){if(_0x283784){return _0x283784?{'count':_0x5ebe74,'rows':_0x283784}:null;}})[_0x7e92('0x21')](respondWithResult(_0x3f3ab8,null))[_0x7e92('0x3c')](handleError(_0x3f3ab8,null));};exports['getSubjects']=function(_0x29eb93,_0x4a9b7c,_0x1ec5b9){var _0x470375={};var _0x15eb35={};var _0x1f74d3;var _0xf50e38;return db[_0x7e92('0x39')][_0x7e92('0x46')]({'where':{'id':_0x29eb93[_0x7e92('0x3e')]['id']}})[_0x7e92('0x21')](handleEntityNotFound(_0x4a9b7c,null))[_0x7e92('0x21')](function(_0x47a834){if(_0x47a834){_0x1f74d3=_0x47a834;_0x15eb35[_0x7e92('0x2e')]=_['keys'](db[_0x7e92('0x47')][_0x7e92('0x48')]);_0x15eb35[_0x7e92('0x2a')]=_[_0x7e92('0x2b')](_0x29eb93['query']);_0x15eb35[_0x7e92('0x2c')]=_['intersection'](_0x15eb35['model'],_0x15eb35[_0x7e92('0x2a')]);_0x470375[_0x7e92('0x2d')]=_[_0x7e92('0x3f')](_0x15eb35['model'],qs[_0x7e92('0x40')](_0x29eb93[_0x7e92('0x2a')]['fields']));_0x470375['attributes']=_0x470375[_0x7e92('0x2d')][_0x7e92('0x2f')]?_0x470375[_0x7e92('0x2d')]:_0x15eb35[_0x7e92('0x2e')];_0x470375[_0x7e92('0x32')]=qs[_0x7e92('0x33')](_0x29eb93[_0x7e92('0x2a')][_0x7e92('0x33')]);_0x470375['where']=qs[_0x7e92('0x2c')](_[_0x7e92('0x49')](_0x29eb93['query'],_0x15eb35['filters']));if(_0x29eb93['query'][_0x7e92('0x35')]){_0x470375['where']=_[_0x7e92('0x36')](_0x470375[_0x7e92('0x34')],{'$or':_[_0x7e92('0x29')](_0x470375[_0x7e92('0x2d')],function(_0x4ede03){var _0x203353={};_0x203353[_0x4ede03]={'$like':'%'+_0x29eb93[_0x7e92('0x2a')][_0x7e92('0x35')]+'%'};return _0x203353;})});}_0x470375=_[_0x7e92('0x36')]({},_0x470375,_0x29eb93['options']);return _0x1f74d3[_0x7e92('0x4a')](_0x470375);}})['then'](function(_0x14a28c){if(_0x14a28c){_0xf50e38=_0x14a28c[_0x7e92('0x2f')];if(!_0x29eb93['query'][_0x7e92('0x30')](_0x7e92('0x31'))){_0x470375[_0x7e92('0x18')]=qs[_0x7e92('0x18')](_0x29eb93[_0x7e92('0x2a')][_0x7e92('0x18')]);_0x470375[_0x7e92('0x1a')]=qs[_0x7e92('0x1a')](_0x29eb93[_0x7e92('0x2a')][_0x7e92('0x1a')]);}return _0x1f74d3[_0x7e92('0x4a')](_0x470375);}})['then'](function(_0x1fd2b1){if(_0x1fd2b1){return _0x1fd2b1?{'count':_0xf50e38,'rows':_0x1fd2b1}:null;}})[_0x7e92('0x21')](respondWithResult(_0x4a9b7c,null))['catch'](handleError(_0x4a9b7c,null));};exports['getDescriptions']=function(_0x372c1b,_0xab6e40,_0x55c930){var _0xc7ff59={};var _0x483c1d={};var _0x2625dc;var _0x308932;return db[_0x7e92('0x39')][_0x7e92('0x46')]({'where':{'id':_0x372c1b[_0x7e92('0x3e')]['id']}})[_0x7e92('0x21')](handleEntityNotFound(_0xab6e40,null))[_0x7e92('0x21')](function(_0x47cbf2){if(_0x47cbf2){_0x2625dc=_0x47cbf2;_0x483c1d[_0x7e92('0x2e')]=_[_0x7e92('0x2b')](db[_0x7e92('0x47')][_0x7e92('0x48')]);_0x483c1d['query']=_[_0x7e92('0x2b')](_0x372c1b['query']);_0x483c1d['filters']=_['intersection'](_0x483c1d[_0x7e92('0x2e')],_0x483c1d[_0x7e92('0x2a')]);_0xc7ff59[_0x7e92('0x2d')]=_['intersection'](_0x483c1d[_0x7e92('0x2e')],qs[_0x7e92('0x40')](_0x372c1b[_0x7e92('0x2a')]['fields']));_0xc7ff59[_0x7e92('0x2d')]=_0xc7ff59[_0x7e92('0x2d')][_0x7e92('0x2f')]?_0xc7ff59[_0x7e92('0x2d')]:_0x483c1d[_0x7e92('0x2e')];_0xc7ff59[_0x7e92('0x32')]=qs[_0x7e92('0x33')](_0x372c1b[_0x7e92('0x2a')][_0x7e92('0x33')]);_0xc7ff59['where']=qs[_0x7e92('0x2c')](_[_0x7e92('0x49')](_0x372c1b[_0x7e92('0x2a')],_0x483c1d[_0x7e92('0x2c')]));if(_0x372c1b[_0x7e92('0x2a')][_0x7e92('0x35')]){_0xc7ff59[_0x7e92('0x34')]=_[_0x7e92('0x36')](_0xc7ff59['where'],{'$or':_[_0x7e92('0x29')](_0xc7ff59[_0x7e92('0x2d')],function(_0x5003f6){var _0x3d86fb={};_0x3d86fb[_0x5003f6]={'$like':'%'+_0x372c1b[_0x7e92('0x2a')][_0x7e92('0x35')]+'%'};return _0x3d86fb;})});}_0xc7ff59=_[_0x7e92('0x36')]({},_0xc7ff59,_0x372c1b[_0x7e92('0x38')]);return _0x2625dc[_0x7e92('0x4b')](_0xc7ff59);}})[_0x7e92('0x21')](function(_0x144f08){if(_0x144f08){_0x308932=_0x144f08[_0x7e92('0x2f')];if(!_0x372c1b['query'][_0x7e92('0x30')](_0x7e92('0x31'))){_0xc7ff59[_0x7e92('0x18')]=qs[_0x7e92('0x18')](_0x372c1b[_0x7e92('0x2a')][_0x7e92('0x18')]);_0xc7ff59['offset']=qs[_0x7e92('0x1a')](_0x372c1b[_0x7e92('0x2a')][_0x7e92('0x1a')]);}return _0x2625dc['getDescriptions'](_0xc7ff59);}})[_0x7e92('0x21')](function(_0x4f45d0){if(_0x4f45d0){return _0x4f45d0?{'count':_0x308932,'rows':_0x4f45d0}:null;}})[_0x7e92('0x21')](respondWithResult(_0xab6e40,null))['catch'](handleError(_0xab6e40,null));};
\ No newline at end of file
+var _0x8d4d=['util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','sendStatus','status','json','offset','undefined','limit','Content-Range','apply','reject','update','then','destroy','end','error','stack','name','send','map','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','SalesforceConfiguration','count','includeAll','findAll','rows','catch','show','params','rawAttributes','include','find','create','body','getFields','findOne','SalesforceField','hasOwnProperty','getSubjects','pick','getDescriptions','rimraf','fast-json-patch','moment','bluebird','mustache'];(function(_0x107f31,_0x1bcd53){var _0x10560c=function(_0x5e1fc4){while(--_0x5e1fc4){_0x107f31['push'](_0x107f31['shift']());}};_0x10560c(++_0x1bcd53);}(_0x8d4d,0x177));var _0xd8d4=function(_0x526010,_0x1788c8){_0x526010=_0x526010-0x0;var _0x46ed17=_0x8d4d[_0x526010];return _0x46ed17;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd8d4('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd8d4('0x1'));var rp=require('request-promise');var moment=require(_0xd8d4('0x2'));var BPromise=require(_0xd8d4('0x3'));var Mustache=require(_0xd8d4('0x4'));var util=require(_0xd8d4('0x5'));var path=require(_0xd8d4('0x6'));var sox=require(_0xd8d4('0x7'));var csv=require(_0xd8d4('0x8'));var ejs=require(_0xd8d4('0x9'));var fs=require('fs');var fs_extra=require(_0xd8d4('0xa'));var _=require(_0xd8d4('0xb'));var squel=require('squel');var crypto=require(_0xd8d4('0xc'));var jsforce=require(_0xd8d4('0xd'));var deskjs=require(_0xd8d4('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xd8d4('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd8d4('0x10'));var logger=require('../../config/logger')(_0xd8d4('0x11'));var utils=require(_0xd8d4('0x12'));var config=require(_0xd8d4('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xe4998c,_0x599b38){_0x599b38=_0x599b38||0xcc;return function(_0x3c45b0){if(_0x3c45b0){return _0xe4998c[_0xd8d4('0x14')](_0x599b38);}return _0xe4998c[_0xd8d4('0x15')](_0x599b38)['end']();};}function respondWithResult(_0x2af977,_0x4fb85d){_0x4fb85d=_0x4fb85d||0xc8;return function(_0x29ff01){if(_0x29ff01){return _0x2af977[_0xd8d4('0x15')](_0x4fb85d)[_0xd8d4('0x16')](_0x29ff01);}};}function respondWithFilteredResult(_0x5694f3,_0x1c83dd){return function(_0x37b320){if(_0x37b320){var _0x4eb0be=typeof _0x1c83dd[_0xd8d4('0x17')]===_0xd8d4('0x18')&&typeof _0x1c83dd[_0xd8d4('0x19')]==='undefined';var _0x38823c=_0x37b320['count'];var _0x4b28f6=_0x4eb0be?0x0:_0x1c83dd[_0xd8d4('0x17')];var _0x17dd4d=_0x4eb0be?_0x37b320['count']:_0x1c83dd['offset']+_0x1c83dd[_0xd8d4('0x19')];var _0x6fa43e;if(_0x17dd4d>=_0x38823c){_0x17dd4d=_0x38823c;_0x6fa43e=0xc8;}else{_0x6fa43e=0xce;}_0x5694f3[_0xd8d4('0x15')](_0x6fa43e);return _0x5694f3['set'](_0xd8d4('0x1a'),_0x4b28f6+'-'+_0x17dd4d+'/'+_0x38823c)['json'](_0x37b320);}return null;};}function patchUpdates(_0x4601f4){return function(_0xda4e7e){try{jsonpatch[_0xd8d4('0x1b')](_0xda4e7e,_0x4601f4,!![]);}catch(_0x5e89bf){return BPromise[_0xd8d4('0x1c')](_0x5e89bf);}return _0xda4e7e['save']();};}function saveUpdates(_0x1bbba8,_0x2f78a2){return function(_0x273e10){if(_0x273e10){return _0x273e10[_0xd8d4('0x1d')](_0x1bbba8)[_0xd8d4('0x1e')](function(_0x2bffe4){return _0x2bffe4;});}return null;};}function removeEntity(_0x2ab098,_0x822c34){return function(_0xfd1af7){if(_0xfd1af7){return _0xfd1af7[_0xd8d4('0x1f')]()[_0xd8d4('0x1e')](function(){_0x2ab098[_0xd8d4('0x15')](0xcc)[_0xd8d4('0x20')]();});}};}function handleEntityNotFound(_0x21230a,_0x113b64){return function(_0xe9e743){if(!_0xe9e743){_0x21230a['sendStatus'](0x194);}return _0xe9e743;};}function handleError(_0x5b3ff7,_0x96215c){_0x96215c=_0x96215c||0x1f4;return function(_0x41fba8){logger[_0xd8d4('0x21')](_0x41fba8[_0xd8d4('0x22')]);if(_0x41fba8[_0xd8d4('0x23')]){delete _0x41fba8[_0xd8d4('0x23')];}_0x5b3ff7['status'](_0x96215c)[_0xd8d4('0x24')](_0x41fba8);};}exports['index']=function(_0x5bd2e1,_0xbb3941){var _0x5d769b={},_0x582002={},_0x252dda={'count':0x0,'rows':[]};var _0xce58f1=_[_0xd8d4('0x25')](db['SalesforceConfiguration']['rawAttributes'],function(_0x20c04c){return{'name':_0x20c04c[_0xd8d4('0x26')],'type':_0x20c04c[_0xd8d4('0x27')]['key']};});_0x582002[_0xd8d4('0x28')]=_[_0xd8d4('0x25')](_0xce58f1,_0xd8d4('0x23'));_0x582002[_0xd8d4('0x29')]=_[_0xd8d4('0x2a')](_0x5bd2e1[_0xd8d4('0x29')]);_0x582002[_0xd8d4('0x2b')]=_[_0xd8d4('0x2c')](_0x582002[_0xd8d4('0x28')],_0x582002[_0xd8d4('0x29')]);_0x5d769b[_0xd8d4('0x2d')]=_['intersection'](_0x582002[_0xd8d4('0x28')],qs[_0xd8d4('0x2e')](_0x5bd2e1[_0xd8d4('0x29')][_0xd8d4('0x2e')]));_0x5d769b['attributes']=_0x5d769b[_0xd8d4('0x2d')][_0xd8d4('0x2f')]?_0x5d769b['attributes']:_0x582002['model'];if(!_0x5bd2e1[_0xd8d4('0x29')]['hasOwnProperty'](_0xd8d4('0x30'))){_0x5d769b['limit']=qs[_0xd8d4('0x19')](_0x5bd2e1[_0xd8d4('0x29')][_0xd8d4('0x19')]);_0x5d769b[_0xd8d4('0x17')]=qs['offset'](_0x5bd2e1[_0xd8d4('0x29')][_0xd8d4('0x17')]);}_0x5d769b[_0xd8d4('0x31')]=qs[_0xd8d4('0x32')](_0x5bd2e1[_0xd8d4('0x29')][_0xd8d4('0x32')]);_0x5d769b[_0xd8d4('0x33')]=qs[_0xd8d4('0x2b')](_['pick'](_0x5bd2e1[_0xd8d4('0x29')],_0x582002[_0xd8d4('0x2b')]),_0xce58f1);if(_0x5bd2e1['query'][_0xd8d4('0x34')]){_0x5d769b[_0xd8d4('0x33')]=_[_0xd8d4('0x35')](_0x5d769b[_0xd8d4('0x33')],{'$or':_['map'](_0xce58f1,function(_0x4a3749){if(_0x4a3749[_0xd8d4('0x27')]!==_0xd8d4('0x36')){var _0x52e6d8={};_0x52e6d8[_0x4a3749[_0xd8d4('0x23')]]={'$like':'%'+_0x5bd2e1[_0xd8d4('0x29')]['filter']+'%'};return _0x52e6d8;}})});}_0x5d769b=_[_0xd8d4('0x35')]({},_0x5d769b,_0x5bd2e1[_0xd8d4('0x37')]);var _0x4b9004={'where':_0x5d769b[_0xd8d4('0x33')]};return db[_0xd8d4('0x38')][_0xd8d4('0x39')](_0x4b9004)[_0xd8d4('0x1e')](function(_0x4f85ba){_0x252dda[_0xd8d4('0x39')]=_0x4f85ba;if(_0x5bd2e1[_0xd8d4('0x29')][_0xd8d4('0x3a')]){_0x5d769b['include']=[{'all':!![]}];}return db['SalesforceConfiguration'][_0xd8d4('0x3b')](_0x5d769b);})[_0xd8d4('0x1e')](function(_0x3534ea){_0x252dda[_0xd8d4('0x3c')]=_0x3534ea;return _0x252dda;})['then'](respondWithFilteredResult(_0xbb3941,_0x5d769b))[_0xd8d4('0x3d')](handleError(_0xbb3941,null));};exports[_0xd8d4('0x3e')]=function(_0x1a556d,_0x250a3e){var _0x441b46={'raw':![],'where':{'id':_0x1a556d[_0xd8d4('0x3f')]['id']}},_0x197357={};_0x197357[_0xd8d4('0x28')]=_['keys'](db[_0xd8d4('0x38')][_0xd8d4('0x40')]);_0x197357[_0xd8d4('0x29')]=_['keys'](_0x1a556d['query']);_0x197357[_0xd8d4('0x2b')]=_[_0xd8d4('0x2c')](_0x197357[_0xd8d4('0x28')],_0x197357[_0xd8d4('0x29')]);_0x441b46[_0xd8d4('0x2d')]=_[_0xd8d4('0x2c')](_0x197357['model'],qs[_0xd8d4('0x2e')](_0x1a556d['query'][_0xd8d4('0x2e')]));_0x441b46['attributes']=_0x441b46[_0xd8d4('0x2d')]['length']?_0x441b46['attributes']:_0x197357['model'];if(_0x1a556d[_0xd8d4('0x29')][_0xd8d4('0x3a')]){_0x441b46[_0xd8d4('0x41')]=[{'all':!![]}];}_0x441b46=_[_0xd8d4('0x35')]({},_0x441b46,_0x1a556d['options']);return db[_0xd8d4('0x38')][_0xd8d4('0x42')](_0x441b46)['then'](handleEntityNotFound(_0x250a3e,null))[_0xd8d4('0x1e')](respondWithResult(_0x250a3e,null))[_0xd8d4('0x3d')](handleError(_0x250a3e,null));};exports[_0xd8d4('0x43')]=function(_0x3b167b,_0x230ebe){return db[_0xd8d4('0x38')][_0xd8d4('0x43')](_0x3b167b['body'],{})['then'](respondWithResult(_0x230ebe,0xc9))['catch'](handleError(_0x230ebe,null));};exports['update']=function(_0x32cd86,_0x312163){if(_0x32cd86[_0xd8d4('0x44')]['id']){delete _0x32cd86['body']['id'];}return db['SalesforceConfiguration'][_0xd8d4('0x42')]({'where':{'id':_0x32cd86[_0xd8d4('0x3f')]['id']}})[_0xd8d4('0x1e')](handleEntityNotFound(_0x312163,null))[_0xd8d4('0x1e')](saveUpdates(_0x32cd86['body'],null))[_0xd8d4('0x1e')](respondWithResult(_0x312163,null))[_0xd8d4('0x3d')](handleError(_0x312163,null));};exports[_0xd8d4('0x1f')]=function(_0x460418,_0x2ee068){return db[_0xd8d4('0x38')][_0xd8d4('0x42')]({'where':{'id':_0x460418['params']['id']}})[_0xd8d4('0x1e')](handleEntityNotFound(_0x2ee068,null))[_0xd8d4('0x1e')](removeEntity(_0x2ee068,null))[_0xd8d4('0x3d')](handleError(_0x2ee068,null));};exports[_0xd8d4('0x45')]=function(_0x28023f,_0x56767f,_0x20af08){var _0x3c497e={};var _0x224396={};var _0x56fadc;var _0xeae213;return db[_0xd8d4('0x38')][_0xd8d4('0x46')]({'where':{'id':_0x28023f['params']['id']}})[_0xd8d4('0x1e')](handleEntityNotFound(_0x56767f,null))[_0xd8d4('0x1e')](function(_0x1d603c){if(_0x1d603c){_0x56fadc=_0x1d603c;_0x224396[_0xd8d4('0x28')]=_['keys'](db[_0xd8d4('0x47')]['rawAttributes']);_0x224396[_0xd8d4('0x29')]=_[_0xd8d4('0x2a')](_0x28023f[_0xd8d4('0x29')]);_0x224396[_0xd8d4('0x2b')]=_[_0xd8d4('0x2c')](_0x224396[_0xd8d4('0x28')],_0x224396[_0xd8d4('0x29')]);_0x3c497e[_0xd8d4('0x2d')]=_[_0xd8d4('0x2c')](_0x224396['model'],qs['fields'](_0x28023f[_0xd8d4('0x29')][_0xd8d4('0x2e')]));_0x3c497e[_0xd8d4('0x2d')]=_0x3c497e[_0xd8d4('0x2d')][_0xd8d4('0x2f')]?_0x3c497e[_0xd8d4('0x2d')]:_0x224396[_0xd8d4('0x28')];_0x3c497e[_0xd8d4('0x31')]=qs['sort'](_0x28023f[_0xd8d4('0x29')]['sort']);_0x3c497e['where']=qs[_0xd8d4('0x2b')](_['pick'](_0x28023f[_0xd8d4('0x29')],_0x224396[_0xd8d4('0x2b')]));if(_0x28023f[_0xd8d4('0x29')][_0xd8d4('0x34')]){_0x3c497e['where']=_['merge'](_0x3c497e[_0xd8d4('0x33')],{'$or':_['map'](_0x3c497e['attributes'],function(_0x4c7bc){var _0x5038e7={};_0x5038e7[_0x4c7bc]={'$like':'%'+_0x28023f['query']['filter']+'%'};return _0x5038e7;})});}_0x3c497e=_['merge']({},_0x3c497e,_0x28023f[_0xd8d4('0x37')]);return _0x56fadc[_0xd8d4('0x45')](_0x3c497e);}})[_0xd8d4('0x1e')](function(_0x4e7cc1){if(_0x4e7cc1){_0xeae213=_0x4e7cc1['length'];if(!_0x28023f[_0xd8d4('0x29')][_0xd8d4('0x48')](_0xd8d4('0x30'))){_0x3c497e[_0xd8d4('0x19')]=qs['limit'](_0x28023f[_0xd8d4('0x29')][_0xd8d4('0x19')]);_0x3c497e[_0xd8d4('0x17')]=qs[_0xd8d4('0x17')](_0x28023f[_0xd8d4('0x29')][_0xd8d4('0x17')]);}return _0x56fadc[_0xd8d4('0x45')](_0x3c497e);}})[_0xd8d4('0x1e')](function(_0x445a4a){if(_0x445a4a){return _0x445a4a?{'count':_0xeae213,'rows':_0x445a4a}:null;}})[_0xd8d4('0x1e')](respondWithResult(_0x56767f,null))[_0xd8d4('0x3d')](handleError(_0x56767f,null));};exports[_0xd8d4('0x49')]=function(_0x2071f4,_0x2c2700,_0x59522f){var _0x27236c={};var _0x3069e9={};var _0x360e06;var _0x2827fa;return db[_0xd8d4('0x38')][_0xd8d4('0x46')]({'where':{'id':_0x2071f4[_0xd8d4('0x3f')]['id']}})[_0xd8d4('0x1e')](handleEntityNotFound(_0x2c2700,null))[_0xd8d4('0x1e')](function(_0x5ad1e5){if(_0x5ad1e5){_0x360e06=_0x5ad1e5;_0x3069e9['model']=_[_0xd8d4('0x2a')](db[_0xd8d4('0x47')][_0xd8d4('0x40')]);_0x3069e9['query']=_[_0xd8d4('0x2a')](_0x2071f4[_0xd8d4('0x29')]);_0x3069e9[_0xd8d4('0x2b')]=_[_0xd8d4('0x2c')](_0x3069e9[_0xd8d4('0x28')],_0x3069e9[_0xd8d4('0x29')]);_0x27236c[_0xd8d4('0x2d')]=_[_0xd8d4('0x2c')](_0x3069e9[_0xd8d4('0x28')],qs['fields'](_0x2071f4[_0xd8d4('0x29')][_0xd8d4('0x2e')]));_0x27236c[_0xd8d4('0x2d')]=_0x27236c['attributes'][_0xd8d4('0x2f')]?_0x27236c[_0xd8d4('0x2d')]:_0x3069e9[_0xd8d4('0x28')];_0x27236c[_0xd8d4('0x31')]=qs['sort'](_0x2071f4[_0xd8d4('0x29')][_0xd8d4('0x32')]);_0x27236c[_0xd8d4('0x33')]=qs[_0xd8d4('0x2b')](_[_0xd8d4('0x4a')](_0x2071f4[_0xd8d4('0x29')],_0x3069e9[_0xd8d4('0x2b')]));if(_0x2071f4[_0xd8d4('0x29')][_0xd8d4('0x34')]){_0x27236c[_0xd8d4('0x33')]=_[_0xd8d4('0x35')](_0x27236c[_0xd8d4('0x33')],{'$or':_['map'](_0x27236c[_0xd8d4('0x2d')],function(_0x45b366){var _0x535652={};_0x535652[_0x45b366]={'$like':'%'+_0x2071f4[_0xd8d4('0x29')][_0xd8d4('0x34')]+'%'};return _0x535652;})});}_0x27236c=_[_0xd8d4('0x35')]({},_0x27236c,_0x2071f4[_0xd8d4('0x37')]);return _0x360e06[_0xd8d4('0x49')](_0x27236c);}})[_0xd8d4('0x1e')](function(_0x3b1fa9){if(_0x3b1fa9){_0x2827fa=_0x3b1fa9[_0xd8d4('0x2f')];if(!_0x2071f4[_0xd8d4('0x29')][_0xd8d4('0x48')]('nolimit')){_0x27236c['limit']=qs[_0xd8d4('0x19')](_0x2071f4[_0xd8d4('0x29')][_0xd8d4('0x19')]);_0x27236c[_0xd8d4('0x17')]=qs[_0xd8d4('0x17')](_0x2071f4[_0xd8d4('0x29')]['offset']);}return _0x360e06[_0xd8d4('0x49')](_0x27236c);}})[_0xd8d4('0x1e')](function(_0x50ce70){if(_0x50ce70){return _0x50ce70?{'count':_0x2827fa,'rows':_0x50ce70}:null;}})[_0xd8d4('0x1e')](respondWithResult(_0x2c2700,null))[_0xd8d4('0x3d')](handleError(_0x2c2700,null));};exports['getDescriptions']=function(_0x550253,_0x15e0ef,_0x1ec0e0){var _0x537044={};var _0x31b437={};var _0x226f5a;var _0x93dc03;return db[_0xd8d4('0x38')][_0xd8d4('0x46')]({'where':{'id':_0x550253[_0xd8d4('0x3f')]['id']}})['then'](handleEntityNotFound(_0x15e0ef,null))[_0xd8d4('0x1e')](function(_0x137013){if(_0x137013){_0x226f5a=_0x137013;_0x31b437[_0xd8d4('0x28')]=_[_0xd8d4('0x2a')](db['SalesforceField'][_0xd8d4('0x40')]);_0x31b437['query']=_[_0xd8d4('0x2a')](_0x550253[_0xd8d4('0x29')]);_0x31b437[_0xd8d4('0x2b')]=_[_0xd8d4('0x2c')](_0x31b437[_0xd8d4('0x28')],_0x31b437[_0xd8d4('0x29')]);_0x537044[_0xd8d4('0x2d')]=_[_0xd8d4('0x2c')](_0x31b437[_0xd8d4('0x28')],qs[_0xd8d4('0x2e')](_0x550253[_0xd8d4('0x29')][_0xd8d4('0x2e')]));_0x537044['attributes']=_0x537044[_0xd8d4('0x2d')][_0xd8d4('0x2f')]?_0x537044[_0xd8d4('0x2d')]:_0x31b437[_0xd8d4('0x28')];_0x537044[_0xd8d4('0x31')]=qs[_0xd8d4('0x32')](_0x550253['query']['sort']);_0x537044[_0xd8d4('0x33')]=qs[_0xd8d4('0x2b')](_[_0xd8d4('0x4a')](_0x550253[_0xd8d4('0x29')],_0x31b437['filters']));if(_0x550253[_0xd8d4('0x29')]['filter']){_0x537044[_0xd8d4('0x33')]=_[_0xd8d4('0x35')](_0x537044[_0xd8d4('0x33')],{'$or':_[_0xd8d4('0x25')](_0x537044['attributes'],function(_0x2cdf0a){var _0x437b33={};_0x437b33[_0x2cdf0a]={'$like':'%'+_0x550253[_0xd8d4('0x29')][_0xd8d4('0x34')]+'%'};return _0x437b33;})});}_0x537044=_[_0xd8d4('0x35')]({},_0x537044,_0x550253[_0xd8d4('0x37')]);return _0x226f5a[_0xd8d4('0x4b')](_0x537044);}})[_0xd8d4('0x1e')](function(_0x402c0c){if(_0x402c0c){_0x93dc03=_0x402c0c[_0xd8d4('0x2f')];if(!_0x550253['query'][_0xd8d4('0x48')]('nolimit')){_0x537044[_0xd8d4('0x19')]=qs[_0xd8d4('0x19')](_0x550253['query'][_0xd8d4('0x19')]);_0x537044[_0xd8d4('0x17')]=qs['offset'](_0x550253['query'][_0xd8d4('0x17')]);}return _0x226f5a[_0xd8d4('0x4b')](_0x537044);}})['then'](function(_0x482c46){if(_0x482c46){return _0x482c46?{'count':_0x93dc03,'rows':_0x482c46}:null;}})['then'](respondWithResult(_0x15e0ef,null))[_0xd8d4('0x3d')](handleError(_0x15e0ef,null));};
\ No newline at end of file
index 0bf43e8..45e819d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43f0=['exports','SalesforceConfiguration','int_salesforce_configurations','lodash','util','api','bluebird','request-promise','rimraf','../../config/environment','./intSalesforceConfiguration.attributes'];(function(_0x3638f7,_0xe7afda){var _0x1f37b6=function(_0x3e8420){while(--_0x3e8420){_0x3638f7['push'](_0x3638f7['shift']());}};_0x1f37b6(++_0xe7afda);}(_0x43f0,0x1f2));var _0x043f=function(_0xe6b54c,_0x526e78){_0xe6b54c=_0xe6b54c-0x0;var _0xaa6c80=_0x43f0[_0xe6b54c];return _0xaa6c80;};'use strict';var _=require(_0x043f('0x0'));var util=require(_0x043f('0x1'));var logger=require('../../config/logger')(_0x043f('0x2'));var moment=require('moment');var BPromise=require(_0x043f('0x3'));var rp=require(_0x043f('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x043f('0x5'));var config=require(_0x043f('0x6'));var attributes=require(_0x043f('0x7'));module[_0x043f('0x8')]=function(_0x167afd,_0x4e432f){return _0x167afd['define'](_0x043f('0x9'),attributes,{'tableName':_0x043f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbf81=['../../config/environment','define','int_salesforce_configurations','../../config/logger','moment','bluebird','request-promise','rimraf'];(function(_0xc3c4b0,_0x19dc88){var _0x10651f=function(_0x28a00f){while(--_0x28a00f){_0xc3c4b0['push'](_0xc3c4b0['shift']());}};_0x10651f(++_0x19dc88);}(_0xbf81,0xd3));var _0x1bf8=function(_0x344179,_0xb1c8a7){_0x344179=_0x344179-0x0;var _0x38fb32=_0xbf81[_0x344179];return _0x38fb32;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1bf8('0x0'))('api');var moment=require(_0x1bf8('0x1'));var BPromise=require(_0x1bf8('0x2'));var rp=require(_0x1bf8('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1bf8('0x4'));var config=require(_0x1bf8('0x5'));var attributes=require('./intSalesforceConfiguration.attributes');module['exports']=function(_0x7a5e54,_0x35f609){return _0x7a5e54[_0x1bf8('0x6')]('SalesforceConfiguration',attributes,{'tableName':_0x1bf8('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cacd0ea..648d1bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefda=['SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../config/logger','rpc','client','request','then','info'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xefda,0x15a));var _0xaefd=function(_0x45fb8b,_0x37c90b){_0x45fb8b=_0x45fb8b-0x0;var _0x57552e=_0xefda[_0x45fb8b];return _0x57552e;};'use strict';var _=require(_0xaefd('0x0'));var util=require(_0xaefd('0x1'));var moment=require(_0xaefd('0x2'));var BPromise=require('bluebird');var rs=require(_0xaefd('0x3'));var fs=require('fs');var Redis=require(_0xaefd('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xaefd('0x5'))(_0xaefd('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xaefd('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x140259,_0x56cb59,_0x2284e0){return new BPromise(function(_0x3392c8,_0x2246d8){return client[_0xaefd('0x8')](_0x140259,_0x2284e0)[_0xaefd('0x9')](function(_0x138563){logger[_0xaefd('0xa')](_0xaefd('0xb'),_0x56cb59,_0xaefd('0xc'));logger[_0xaefd('0xd')](_0xaefd('0xe'),_0x56cb59,_0xaefd('0xc'),JSON[_0xaefd('0xf')](_0x138563));if(_0x138563[_0xaefd('0x10')]){if(_0x138563[_0xaefd('0x10')][_0xaefd('0x11')]===0x1f4){logger[_0xaefd('0x10')]('SalesforceConfiguration,\x20%s,\x20%s',_0x56cb59,_0x138563[_0xaefd('0x10')]['message']);return _0x2246d8(_0x138563[_0xaefd('0x10')][_0xaefd('0x12')]);}logger['error'](_0xaefd('0xb'),_0x56cb59,_0x138563['error'][_0xaefd('0x12')]);return _0x3392c8(_0x138563['error'][_0xaefd('0x12')]);}else{logger['info'](_0xaefd('0xb'),_0x56cb59,_0xaefd('0xc'));_0x3392c8(_0x138563[_0xaefd('0x13')]['message']);}})[_0xaefd('0x14')](function(_0x370586){logger['error'](_0xaefd('0xb'),_0x56cb59,_0x370586);_0x2246d8(_0x370586);});});}
\ No newline at end of file
+var _0x302f=['../../config/environment','jayson/promise','client','request','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger'];(function(_0xdf11e,_0x35d44e){var _0x35e650=function(_0x223f91){while(--_0x223f91){_0xdf11e['push'](_0xdf11e['shift']());}};_0x35e650(++_0x35d44e);}(_0x302f,0x14d));var _0xf302=function(_0x41777c,_0x4215c0){_0x41777c=_0x41777c-0x0;var _0x5e802e=_0x302f[_0x41777c];return _0x5e802e;};'use strict';var _=require(_0xf302('0x0'));var util=require(_0xf302('0x1'));var moment=require(_0xf302('0x2'));var BPromise=require(_0xf302('0x3'));var rs=require(_0xf302('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf302('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf302('0x6'))('rpc');var config=require(_0xf302('0x7'));var jayson=require(_0xf302('0x8'));var client=jayson[_0xf302('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1365b7,_0x25f913,_0x12064f){return new BPromise(function(_0x4f948b,_0x1f71ee){return client[_0xf302('0xa')](_0x1365b7,_0x12064f)['then'](function(_0x28ef12){logger[_0xf302('0xb')](_0xf302('0xc'),_0x25f913,_0xf302('0xd'));logger[_0xf302('0xe')](_0xf302('0xf'),_0x25f913,_0xf302('0xd'),JSON[_0xf302('0x10')](_0x28ef12));if(_0x28ef12[_0xf302('0x11')]){if(_0x28ef12[_0xf302('0x11')]['code']===0x1f4){logger[_0xf302('0x11')](_0xf302('0xc'),_0x25f913,_0x28ef12[_0xf302('0x11')]['message']);return _0x1f71ee(_0x28ef12['error']['message']);}logger['error'](_0xf302('0xc'),_0x25f913,_0x28ef12[_0xf302('0x11')][_0xf302('0x12')]);return _0x4f948b(_0x28ef12[_0xf302('0x11')][_0xf302('0x12')]);}else{logger['info']('SalesforceConfiguration,\x20%s,\x20%s',_0x25f913,_0xf302('0xd'));_0x4f948b(_0x28ef12['result'][_0xf302('0x12')]);}})[_0xf302('0x13')](function(_0x41dc53){logger[_0xf302('0x11')]('SalesforceConfiguration,\x20%s,\x20%s',_0x25f913,_0x41dc53);_0x1f71ee(_0x41dc53);});});}
\ No newline at end of file
index 6262955..f492180 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a7e=['put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','get','index','/:id','isAuthenticated','show','post'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0x1a7e,0x16c));var _0xe1a7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1a7e[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xe1a7('0x0'));var util=require(_0xe1a7('0x1'));var path=require(_0xe1a7('0x2'));var timeout=require(_0xe1a7('0x3'));var express=require(_0xe1a7('0x4'));var router=express[_0xe1a7('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xe1a7('0x6'));var interaction=require(_0xe1a7('0x7'));var config=require(_0xe1a7('0x8'));var controller=require(_0xe1a7('0x9'));router[_0xe1a7('0xa')]('/',auth['isAuthenticated'](),controller[_0xe1a7('0xb')]);router[_0xe1a7('0xa')](_0xe1a7('0xc'),auth[_0xe1a7('0xd')](),controller[_0xe1a7('0xe')]);router[_0xe1a7('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xe1a7('0x10')](_0xe1a7('0xc'),auth[_0xe1a7('0xd')](),controller[_0xe1a7('0x11')]);router['delete']('/:id',auth[_0xe1a7('0xd')](),controller[_0xe1a7('0x12')]);module[_0xe1a7('0x13')]=router;
\ No newline at end of file
+var _0x1eff=['../../components/auth/service','../../config/environment','./intSalesforceField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x1ab7f9,_0x3ae61b){var _0x342e29=function(_0x40634d){while(--_0x40634d){_0x1ab7f9['push'](_0x1ab7f9['shift']());}};_0x342e29(++_0x3ae61b);}(_0x1eff,0x174));var _0xf1ef=function(_0x5dbad3,_0x57f93d){_0x5dbad3=_0x5dbad3-0x0;var _0x17258e=_0x1eff[_0x5dbad3];return _0x17258e;};'use strict';var multer=require(_0xf1ef('0x0'));var util=require(_0xf1ef('0x1'));var path=require(_0xf1ef('0x2'));var timeout=require(_0xf1ef('0x3'));var express=require(_0xf1ef('0x4'));var router=express[_0xf1ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xf1ef('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xf1ef('0x7'));var controller=require(_0xf1ef('0x8'));router[_0xf1ef('0x9')]('/',auth[_0xf1ef('0xa')](),controller[_0xf1ef('0xb')]);router[_0xf1ef('0x9')](_0xf1ef('0xc'),auth['isAuthenticated'](),controller[_0xf1ef('0xd')]);router[_0xf1ef('0xe')]('/',auth[_0xf1ef('0xa')](),controller[_0xf1ef('0xf')]);router[_0xf1ef('0x10')]('/:id',auth[_0xf1ef('0xa')](),controller[_0xf1ef('0x11')]);router[_0xf1ef('0x12')](_0xf1ef('0xc'),auth[_0xf1ef('0xa')](),controller[_0xf1ef('0x13')]);module[_0xf1ef('0x14')]=router;
\ No newline at end of file
index b6a7cd6..f09f381 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef00=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','sequelize','exports'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0xef00,0xdf));var _0x0ef0=function(_0x5a14dd,_0x55e143){_0x5a14dd=_0x5a14dd-0x0;var _0x43d8f6=_0xef00[_0x5a14dd];return _0x43d8f6;};'use strict';var Sequelize=require(_0x0ef0('0x0'));module[_0x0ef0('0x1')]={'type':{'type':Sequelize[_0x0ef0('0x2')](_0x0ef0('0x3'),_0x0ef0('0x4'),_0x0ef0('0x5'),_0x0ef0('0x6'),_0x0ef0('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0x0ef0('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x0ef0('0x2')](_0x0ef0('0x3'),_0x0ef0('0x4'),_0x0ef0('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize[_0x0ef0('0x8')]}};
\ No newline at end of file
+var _0x622a=['picklist','STRING','ENUM','variable','customVariable','sequelize','string','keyValue'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x622a,0x1dd));var _0xa622=function(_0x5e04b2,_0x43fb21){_0x5e04b2=_0x5e04b2-0x0;var _0xe90c3e=_0x622a[_0x5e04b2];return _0xe90c3e;};'use strict';var Sequelize=require(_0xa622('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0xa622('0x1'),'variable','customVariable',_0xa622('0x2'),_0xa622('0x3')),'defaultValue':_0xa622('0x1')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xa622('0x4')]},'keyType':{'type':Sequelize[_0xa622('0x5')](_0xa622('0x1'),_0xa622('0x6'),_0xa622('0x7'))},'keyContent':{'type':Sequelize[_0xa622('0x4')]},'idField':{'type':Sequelize[_0xa622('0x4')]},'variableName':{'type':Sequelize[_0xa622('0x4')]}};
\ No newline at end of file
index def2026..ff2147c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ebd=['fieldName','key','map','keys','query','filters','intersection','model','fields','attributes','length','nolimit','limit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','include','create','body','update','find','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','reject','save','then','destroy','error','name','send','index','SalesforceField','rawAttributes'];(function(_0x15acaf,_0x4b720e){var _0x400770=function(_0x576aa3){while(--_0x576aa3){_0x15acaf['push'](_0x15acaf['shift']());}};_0x400770(++_0x4b720e);}(_0x5ebd,0x149));var _0xd5eb=function(_0x45d70b,_0x1c74b7){_0x45d70b=_0x45d70b-0x0;var _0x20e2d6=_0x5ebd[_0x45d70b];return _0x20e2d6;};'use strict';var emlformat=require(_0xd5eb('0x0'));var rimraf=require(_0xd5eb('0x1'));var zipdir=require(_0xd5eb('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd5eb('0x3'));var moment=require(_0xd5eb('0x4'));var BPromise=require(_0xd5eb('0x5'));var Mustache=require('mustache');var util=require(_0xd5eb('0x6'));var path=require(_0xd5eb('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd5eb('0x8'));var fs=require('fs');var fs_extra=require(_0xd5eb('0x9'));var _=require(_0xd5eb('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xd5eb('0xb'));var deskjs=require(_0xd5eb('0xc'));var toCsv=require(_0xd5eb('0xd'));var querystring=require(_0xd5eb('0xe'));var Papa=require(_0xd5eb('0xf'));var Redis=require(_0xd5eb('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd5eb('0x11'));var logger=require('../../config/logger')(_0xd5eb('0x12'));var utils=require(_0xd5eb('0x13'));var config=require(_0xd5eb('0x14'));var licenseUtil=require(_0xd5eb('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x267d36,_0x550a6c){_0x550a6c=_0x550a6c||0xcc;return function(_0xfc5499){if(_0xfc5499){return _0x267d36[_0xd5eb('0x16')](_0x550a6c);}return _0x267d36[_0xd5eb('0x17')](_0x550a6c)[_0xd5eb('0x18')]();};}function respondWithResult(_0x22198b,_0x4fe979){_0x4fe979=_0x4fe979||0xc8;return function(_0xccf94a){if(_0xccf94a){return _0x22198b[_0xd5eb('0x17')](_0x4fe979)[_0xd5eb('0x19')](_0xccf94a);}};}function respondWithFilteredResult(_0x45b1df,_0x16eaad){return function(_0x2eab99){if(_0x2eab99){var _0x8bf1e5=typeof _0x16eaad[_0xd5eb('0x1a')]===_0xd5eb('0x1b')&&typeof _0x16eaad['limit']===_0xd5eb('0x1b');var _0x536579=_0x2eab99[_0xd5eb('0x1c')];var _0x2a1795=_0x8bf1e5?0x0:_0x16eaad[_0xd5eb('0x1a')];var _0x35b740=_0x8bf1e5?_0x2eab99['count']:_0x16eaad[_0xd5eb('0x1a')]+_0x16eaad['limit'];var _0x1096eb;if(_0x35b740>=_0x536579){_0x35b740=_0x536579;_0x1096eb=0xc8;}else{_0x1096eb=0xce;}_0x45b1df[_0xd5eb('0x17')](_0x1096eb);return _0x45b1df[_0xd5eb('0x1d')](_0xd5eb('0x1e'),_0x2a1795+'-'+_0x35b740+'/'+_0x536579)[_0xd5eb('0x19')](_0x2eab99);}return null;};}function patchUpdates(_0x4db315){return function(_0xc4dcf8){try{jsonpatch['apply'](_0xc4dcf8,_0x4db315,!![]);}catch(_0x5c7654){return BPromise[_0xd5eb('0x1f')](_0x5c7654);}return _0xc4dcf8[_0xd5eb('0x20')]();};}function saveUpdates(_0x15804b,_0x55a8e0){return function(_0x267a60){if(_0x267a60){return _0x267a60['update'](_0x15804b)[_0xd5eb('0x21')](function(_0x2dbeab){return _0x2dbeab;});}return null;};}function removeEntity(_0x4bc0bc,_0x546d45){return function(_0x51bcc4){if(_0x51bcc4){return _0x51bcc4[_0xd5eb('0x22')]()[_0xd5eb('0x21')](function(){_0x4bc0bc['status'](0xcc)[_0xd5eb('0x18')]();});}};}function handleEntityNotFound(_0x59b81a,_0x4a9d30){return function(_0x10ce91){if(!_0x10ce91){_0x59b81a[_0xd5eb('0x16')](0x194);}return _0x10ce91;};}function handleError(_0x2c33e1,_0x267e60){_0x267e60=_0x267e60||0x1f4;return function(_0x5ed717){logger[_0xd5eb('0x23')](_0x5ed717['stack']);if(_0x5ed717['name']){delete _0x5ed717[_0xd5eb('0x24')];}_0x2c33e1[_0xd5eb('0x17')](_0x267e60)[_0xd5eb('0x25')](_0x5ed717);};}exports[_0xd5eb('0x26')]=function(_0x1e3992,_0x366acc){var _0x1fc16e={},_0x47fbdf={},_0x351bb0={'count':0x0,'rows':[]};var _0x5a938f=_['map'](db[_0xd5eb('0x27')][_0xd5eb('0x28')],function(_0x131c14){return{'name':_0x131c14[_0xd5eb('0x29')],'type':_0x131c14['type'][_0xd5eb('0x2a')]};});_0x47fbdf['model']=_[_0xd5eb('0x2b')](_0x5a938f,'name');_0x47fbdf['query']=_[_0xd5eb('0x2c')](_0x1e3992[_0xd5eb('0x2d')]);_0x47fbdf[_0xd5eb('0x2e')]=_[_0xd5eb('0x2f')](_0x47fbdf[_0xd5eb('0x30')],_0x47fbdf[_0xd5eb('0x2d')]);_0x1fc16e['attributes']=_['intersection'](_0x47fbdf[_0xd5eb('0x30')],qs[_0xd5eb('0x31')](_0x1e3992[_0xd5eb('0x2d')][_0xd5eb('0x31')]));_0x1fc16e[_0xd5eb('0x32')]=_0x1fc16e['attributes'][_0xd5eb('0x33')]?_0x1fc16e[_0xd5eb('0x32')]:_0x47fbdf[_0xd5eb('0x30')];if(!_0x1e3992[_0xd5eb('0x2d')]['hasOwnProperty'](_0xd5eb('0x34'))){_0x1fc16e[_0xd5eb('0x35')]=qs['limit'](_0x1e3992[_0xd5eb('0x2d')][_0xd5eb('0x35')]);_0x1fc16e[_0xd5eb('0x1a')]=qs['offset'](_0x1e3992[_0xd5eb('0x2d')]['offset']);}_0x1fc16e[_0xd5eb('0x36')]=qs[_0xd5eb('0x37')](_0x1e3992[_0xd5eb('0x2d')][_0xd5eb('0x37')]);_0x1fc16e[_0xd5eb('0x38')]=qs[_0xd5eb('0x2e')](_[_0xd5eb('0x39')](_0x1e3992[_0xd5eb('0x2d')],_0x47fbdf[_0xd5eb('0x2e')]),_0x5a938f);if(_0x1e3992[_0xd5eb('0x2d')][_0xd5eb('0x3a')]){_0x1fc16e['where']=_[_0xd5eb('0x3b')](_0x1fc16e[_0xd5eb('0x38')],{'$or':_['map'](_0x5a938f,function(_0xe0f31d){if(_0xe0f31d[_0xd5eb('0x3c')]!==_0xd5eb('0x3d')){var _0x42570f={};_0x42570f[_0xe0f31d[_0xd5eb('0x24')]]={'$like':'%'+_0x1e3992[_0xd5eb('0x2d')]['filter']+'%'};return _0x42570f;}})});}_0x1fc16e=_['merge']({},_0x1fc16e,_0x1e3992[_0xd5eb('0x3e')]);var _0x5b1e0d={'where':_0x1fc16e[_0xd5eb('0x38')]};return db[_0xd5eb('0x27')][_0xd5eb('0x1c')](_0x5b1e0d)[_0xd5eb('0x21')](function(_0x122d7f){_0x351bb0['count']=_0x122d7f;if(_0x1e3992[_0xd5eb('0x2d')][_0xd5eb('0x3f')]){_0x1fc16e['include']=[{'all':!![]}];}return db[_0xd5eb('0x27')][_0xd5eb('0x40')](_0x1fc16e);})[_0xd5eb('0x21')](function(_0x2eedc1){_0x351bb0[_0xd5eb('0x41')]=_0x2eedc1;return _0x351bb0;})[_0xd5eb('0x21')](respondWithFilteredResult(_0x366acc,_0x1fc16e))[_0xd5eb('0x42')](handleError(_0x366acc,null));};exports[_0xd5eb('0x43')]=function(_0x360162,_0x1b8f6f){var _0xf8b827={'raw':!![],'where':{'id':_0x360162[_0xd5eb('0x44')]['id']}},_0x1ddb2f={};_0x1ddb2f[_0xd5eb('0x30')]=_[_0xd5eb('0x2c')](db[_0xd5eb('0x27')][_0xd5eb('0x28')]);_0x1ddb2f['query']=_[_0xd5eb('0x2c')](_0x360162[_0xd5eb('0x2d')]);_0x1ddb2f[_0xd5eb('0x2e')]=_[_0xd5eb('0x2f')](_0x1ddb2f[_0xd5eb('0x30')],_0x1ddb2f[_0xd5eb('0x2d')]);_0xf8b827[_0xd5eb('0x32')]=_[_0xd5eb('0x2f')](_0x1ddb2f['model'],qs[_0xd5eb('0x31')](_0x360162[_0xd5eb('0x2d')][_0xd5eb('0x31')]));_0xf8b827[_0xd5eb('0x32')]=_0xf8b827[_0xd5eb('0x32')]['length']?_0xf8b827['attributes']:_0x1ddb2f['model'];if(_0x360162[_0xd5eb('0x2d')]['includeAll']){_0xf8b827[_0xd5eb('0x45')]=[{'all':!![]}];}_0xf8b827=_[_0xd5eb('0x3b')]({},_0xf8b827,_0x360162['options']);return db[_0xd5eb('0x27')]['find'](_0xf8b827)[_0xd5eb('0x21')](handleEntityNotFound(_0x1b8f6f,null))[_0xd5eb('0x21')](respondWithResult(_0x1b8f6f,null))[_0xd5eb('0x42')](handleError(_0x1b8f6f,null));};exports[_0xd5eb('0x46')]=function(_0x705621,_0x428448){return db[_0xd5eb('0x27')][_0xd5eb('0x46')](_0x705621[_0xd5eb('0x47')],{})['then'](respondWithResult(_0x428448,0xc9))['catch'](handleError(_0x428448,null));};exports[_0xd5eb('0x48')]=function(_0x2f6235,_0x49f746){if(_0x2f6235[_0xd5eb('0x47')]['id']){delete _0x2f6235['body']['id'];}return db[_0xd5eb('0x27')]['find']({'where':{'id':_0x2f6235[_0xd5eb('0x44')]['id']}})[_0xd5eb('0x21')](handleEntityNotFound(_0x49f746,null))[_0xd5eb('0x21')](saveUpdates(_0x2f6235[_0xd5eb('0x47')],null))[_0xd5eb('0x21')](respondWithResult(_0x49f746,null))[_0xd5eb('0x42')](handleError(_0x49f746,null));};exports[_0xd5eb('0x22')]=function(_0x1a9455,_0x31e4bb){return db[_0xd5eb('0x27')][_0xd5eb('0x49')]({'where':{'id':_0x1a9455['params']['id']}})[_0xd5eb('0x21')](handleEntityNotFound(_0x31e4bb,null))['then'](removeEntity(_0x31e4bb,null))[_0xd5eb('0x42')](handleError(_0x31e4bb,null));};
\ No newline at end of file
+var _0xf7fe=['papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','limit','count','Content-Range','apply','reject','update','destroy','then','end','sendStatus','stack','name','send','map','rawAttributes','fieldName','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','options','SalesforceField','includeAll','include','rows','catch','show','params','keys','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','querystring'];(function(_0x509103,_0x4d05ee){var _0x350e47=function(_0xd92b3c){while(--_0xd92b3c){_0x509103['push'](_0x509103['shift']());}};_0x350e47(++_0x4d05ee);}(_0xf7fe,0xc3));var _0xef7f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf7fe[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xef7f('0x0'));var rimraf=require(_0xef7f('0x1'));var zipdir=require(_0xef7f('0x2'));var jsonpatch=require(_0xef7f('0x3'));var rp=require(_0xef7f('0x4'));var moment=require(_0xef7f('0x5'));var BPromise=require(_0xef7f('0x6'));var Mustache=require('mustache');var util=require(_0xef7f('0x7'));var path=require(_0xef7f('0x8'));var sox=require(_0xef7f('0x9'));var csv=require(_0xef7f('0xa'));var ejs=require(_0xef7f('0xb'));var fs=require('fs');var fs_extra=require(_0xef7f('0xc'));var _=require('lodash');var squel=require(_0xef7f('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xef7f('0xa'));var querystring=require(_0xef7f('0xe'));var Papa=require(_0xef7f('0xf'));var Redis=require(_0xef7f('0x10'));var authService=require(_0xef7f('0x11'));var qs=require(_0xef7f('0x12'));var as=require(_0xef7f('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xef7f('0x14'));var utils=require(_0xef7f('0x15'));var config=require(_0xef7f('0x16'));var licenseUtil=require(_0xef7f('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x43ef2d,_0x132f44){_0x132f44=_0x132f44||0xcc;return function(_0x47c045){if(_0x47c045){return _0x43ef2d['sendStatus'](_0x132f44);}return _0x43ef2d[_0xef7f('0x18')](_0x132f44)['end']();};}function respondWithResult(_0x5f167c,_0x370b84){_0x370b84=_0x370b84||0xc8;return function(_0x3b8310){if(_0x3b8310){return _0x5f167c['status'](_0x370b84)[_0xef7f('0x19')](_0x3b8310);}};}function respondWithFilteredResult(_0x40e4a4,_0x502902){return function(_0x356d34){if(_0x356d34){var _0x59c3aa=typeof _0x502902[_0xef7f('0x1a')]==='undefined'&&typeof _0x502902[_0xef7f('0x1b')]==='undefined';var _0x3e813d=_0x356d34[_0xef7f('0x1c')];var _0x2c5067=_0x59c3aa?0x0:_0x502902[_0xef7f('0x1a')];var _0x17cad7=_0x59c3aa?_0x356d34[_0xef7f('0x1c')]:_0x502902[_0xef7f('0x1a')]+_0x502902[_0xef7f('0x1b')];var _0x417957;if(_0x17cad7>=_0x3e813d){_0x17cad7=_0x3e813d;_0x417957=0xc8;}else{_0x417957=0xce;}_0x40e4a4[_0xef7f('0x18')](_0x417957);return _0x40e4a4['set'](_0xef7f('0x1d'),_0x2c5067+'-'+_0x17cad7+'/'+_0x3e813d)[_0xef7f('0x19')](_0x356d34);}return null;};}function patchUpdates(_0xe8c5be){return function(_0x5d6833){try{jsonpatch[_0xef7f('0x1e')](_0x5d6833,_0xe8c5be,!![]);}catch(_0x228ccf){return BPromise[_0xef7f('0x1f')](_0x228ccf);}return _0x5d6833['save']();};}function saveUpdates(_0x39678d,_0x3e2633){return function(_0x1e8ce6){if(_0x1e8ce6){return _0x1e8ce6[_0xef7f('0x20')](_0x39678d)['then'](function(_0x27f783){return _0x27f783;});}return null;};}function removeEntity(_0x2ac77d,_0x97cfac){return function(_0x379834){if(_0x379834){return _0x379834[_0xef7f('0x21')]()[_0xef7f('0x22')](function(){_0x2ac77d[_0xef7f('0x18')](0xcc)[_0xef7f('0x23')]();});}};}function handleEntityNotFound(_0x24b5c6,_0x324839){return function(_0x4bebd9){if(!_0x4bebd9){_0x24b5c6[_0xef7f('0x24')](0x194);}return _0x4bebd9;};}function handleError(_0x5167c7,_0x447a26){_0x447a26=_0x447a26||0x1f4;return function(_0x53736f){logger['error'](_0x53736f[_0xef7f('0x25')]);if(_0x53736f[_0xef7f('0x26')]){delete _0x53736f[_0xef7f('0x26')];}_0x5167c7[_0xef7f('0x18')](_0x447a26)[_0xef7f('0x27')](_0x53736f);};}exports['index']=function(_0x3dd0e9,_0x593a2c){var _0xfc2b2e={},_0xc90e2={},_0x2b9c04={'count':0x0,'rows':[]};var _0x508688=_[_0xef7f('0x28')](db['SalesforceField'][_0xef7f('0x29')],function(_0x444070){return{'name':_0x444070[_0xef7f('0x2a')],'type':_0x444070['type']['key']};});_0xc90e2['model']=_[_0xef7f('0x28')](_0x508688,_0xef7f('0x26'));_0xc90e2[_0xef7f('0x2b')]=_['keys'](_0x3dd0e9[_0xef7f('0x2b')]);_0xc90e2[_0xef7f('0x2c')]=_[_0xef7f('0x2d')](_0xc90e2[_0xef7f('0x2e')],_0xc90e2[_0xef7f('0x2b')]);_0xfc2b2e['attributes']=_[_0xef7f('0x2d')](_0xc90e2[_0xef7f('0x2e')],qs[_0xef7f('0x2f')](_0x3dd0e9[_0xef7f('0x2b')][_0xef7f('0x2f')]));_0xfc2b2e[_0xef7f('0x30')]=_0xfc2b2e[_0xef7f('0x30')][_0xef7f('0x31')]?_0xfc2b2e[_0xef7f('0x30')]:_0xc90e2['model'];if(!_0x3dd0e9[_0xef7f('0x2b')][_0xef7f('0x32')](_0xef7f('0x33'))){_0xfc2b2e['limit']=qs['limit'](_0x3dd0e9['query'][_0xef7f('0x1b')]);_0xfc2b2e['offset']=qs[_0xef7f('0x1a')](_0x3dd0e9[_0xef7f('0x2b')][_0xef7f('0x1a')]);}_0xfc2b2e['order']=qs[_0xef7f('0x34')](_0x3dd0e9[_0xef7f('0x2b')][_0xef7f('0x34')]);_0xfc2b2e[_0xef7f('0x35')]=qs[_0xef7f('0x2c')](_[_0xef7f('0x36')](_0x3dd0e9['query'],_0xc90e2['filters']),_0x508688);if(_0x3dd0e9[_0xef7f('0x2b')][_0xef7f('0x37')]){_0xfc2b2e['where']=_[_0xef7f('0x38')](_0xfc2b2e['where'],{'$or':_[_0xef7f('0x28')](_0x508688,function(_0x1002f9){if(_0x1002f9[_0xef7f('0x39')]!=='VIRTUAL'){var _0x5443c1={};_0x5443c1[_0x1002f9[_0xef7f('0x26')]]={'$like':'%'+_0x3dd0e9[_0xef7f('0x2b')][_0xef7f('0x37')]+'%'};return _0x5443c1;}})});}_0xfc2b2e=_[_0xef7f('0x38')]({},_0xfc2b2e,_0x3dd0e9[_0xef7f('0x3a')]);var _0x446ad3={'where':_0xfc2b2e[_0xef7f('0x35')]};return db[_0xef7f('0x3b')][_0xef7f('0x1c')](_0x446ad3)[_0xef7f('0x22')](function(_0x2f2116){_0x2b9c04[_0xef7f('0x1c')]=_0x2f2116;if(_0x3dd0e9[_0xef7f('0x2b')][_0xef7f('0x3c')]){_0xfc2b2e[_0xef7f('0x3d')]=[{'all':!![]}];}return db[_0xef7f('0x3b')]['findAll'](_0xfc2b2e);})[_0xef7f('0x22')](function(_0x34e621){_0x2b9c04[_0xef7f('0x3e')]=_0x34e621;return _0x2b9c04;})['then'](respondWithFilteredResult(_0x593a2c,_0xfc2b2e))[_0xef7f('0x3f')](handleError(_0x593a2c,null));};exports[_0xef7f('0x40')]=function(_0xfc89d7,_0x5b939c){var _0x1fa160={'raw':!![],'where':{'id':_0xfc89d7[_0xef7f('0x41')]['id']}},_0x19cabe={};_0x19cabe[_0xef7f('0x2e')]=_[_0xef7f('0x42')](db[_0xef7f('0x3b')]['rawAttributes']);_0x19cabe[_0xef7f('0x2b')]=_[_0xef7f('0x42')](_0xfc89d7[_0xef7f('0x2b')]);_0x19cabe[_0xef7f('0x2c')]=_[_0xef7f('0x2d')](_0x19cabe[_0xef7f('0x2e')],_0x19cabe['query']);_0x1fa160[_0xef7f('0x30')]=_[_0xef7f('0x2d')](_0x19cabe[_0xef7f('0x2e')],qs[_0xef7f('0x2f')](_0xfc89d7[_0xef7f('0x2b')][_0xef7f('0x2f')]));_0x1fa160[_0xef7f('0x30')]=_0x1fa160[_0xef7f('0x30')][_0xef7f('0x31')]?_0x1fa160[_0xef7f('0x30')]:_0x19cabe[_0xef7f('0x2e')];if(_0xfc89d7['query']['includeAll']){_0x1fa160[_0xef7f('0x3d')]=[{'all':!![]}];}_0x1fa160=_['merge']({},_0x1fa160,_0xfc89d7['options']);return db[_0xef7f('0x3b')][_0xef7f('0x43')](_0x1fa160)[_0xef7f('0x22')](handleEntityNotFound(_0x5b939c,null))[_0xef7f('0x22')](respondWithResult(_0x5b939c,null))[_0xef7f('0x3f')](handleError(_0x5b939c,null));};exports[_0xef7f('0x44')]=function(_0x25db9b,_0x3dcd58){return db[_0xef7f('0x3b')]['create'](_0x25db9b[_0xef7f('0x45')],{})[_0xef7f('0x22')](respondWithResult(_0x3dcd58,0xc9))[_0xef7f('0x3f')](handleError(_0x3dcd58,null));};exports[_0xef7f('0x20')]=function(_0x4ff988,_0x32e0a6){if(_0x4ff988[_0xef7f('0x45')]['id']){delete _0x4ff988[_0xef7f('0x45')]['id'];}return db['SalesforceField'][_0xef7f('0x43')]({'where':{'id':_0x4ff988[_0xef7f('0x41')]['id']}})['then'](handleEntityNotFound(_0x32e0a6,null))[_0xef7f('0x22')](saveUpdates(_0x4ff988[_0xef7f('0x45')],null))[_0xef7f('0x22')](respondWithResult(_0x32e0a6,null))[_0xef7f('0x3f')](handleError(_0x32e0a6,null));};exports['destroy']=function(_0x1de716,_0x258f40){return db[_0xef7f('0x3b')][_0xef7f('0x43')]({'where':{'id':_0x1de716[_0xef7f('0x41')]['id']}})[_0xef7f('0x22')](handleEntityNotFound(_0x258f40,null))[_0xef7f('0x22')](removeEntity(_0x258f40,null))['catch'](handleError(_0x258f40,null));};
\ No newline at end of file
index bedfe36..61c9530 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4683=['util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intSalesforceField.attributes','exports','define','SalesforceField','salesforce_unique_index','FieldId'];(function(_0x352108,_0xb5cdc3){var _0x2c901c=function(_0x4e0a61){while(--_0x4e0a61){_0x352108['push'](_0x352108['shift']());}};_0x2c901c(++_0xb5cdc3);}(_0x4683,0x1ce));var _0x3468=function(_0x3d3947,_0xd4de34){_0x3d3947=_0x3d3947-0x0;var _0x48d859=_0x4683[_0x3d3947];return _0x48d859;};'use strict';var _=require('lodash');var util=require(_0x3468('0x0'));var logger=require(_0x3468('0x1'))(_0x3468('0x2'));var moment=require(_0x3468('0x3'));var BPromise=require(_0x3468('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x3468('0x5'));var rimraf=require(_0x3468('0x6'));var config=require(_0x3468('0x7'));var attributes=require(_0x3468('0x8'));module[_0x3468('0x9')]=function(_0x304fea,_0x28884d){return _0x304fea[_0x3468('0xa')](_0x3468('0xb'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0x3468('0xc'),'fields':['idField',_0x3468('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6569=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','int_salesforce_fields','salesforce_unique_index','idField','FieldId','lodash','util'];(function(_0x3e0eaa,_0x48210f){var _0x32047a=function(_0x7761b1){while(--_0x7761b1){_0x3e0eaa['push'](_0x3e0eaa['shift']());}};_0x32047a(++_0x48210f);}(_0x6569,0x10c));var _0x9656=function(_0x25c5a4,_0xad5960){_0x25c5a4=_0x25c5a4-0x0;var _0x271216=_0x6569[_0x25c5a4];return _0x271216;};'use strict';var _=require(_0x9656('0x0'));var util=require(_0x9656('0x1'));var logger=require(_0x9656('0x2'))(_0x9656('0x3'));var moment=require('moment');var BPromise=require(_0x9656('0x4'));var rp=require(_0x9656('0x5'));var fs=require('fs');var path=require(_0x9656('0x6'));var rimraf=require(_0x9656('0x7'));var config=require(_0x9656('0x8'));var attributes=require('./intSalesforceField.attributes');module[_0x9656('0x9')]=function(_0x4385e6,_0x356763){return _0x4385e6[_0x9656('0xa')]('SalesforceField',attributes,{'tableName':_0x9656('0xb'),'paranoid':![],'indexes':[{'name':_0x9656('0xc'),'fields':[_0x9656('0xd'),_0x9656('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 4491d46..d2846d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1933=['request','then','info','SalesforceField,\x20%s,\x20%s','debug','SalesforceField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x2875e6,_0x36c81e){var _0x24c4b7=function(_0x53c480){while(--_0x53c480){_0x2875e6['push'](_0x2875e6['shift']());}};_0x24c4b7(++_0x36c81e);}(_0x1933,0x1ec));var _0x3193=function(_0x2cfbce,_0x1357d7){_0x2cfbce=_0x2cfbce-0x0;var _0x2d8301=_0x1933[_0x2cfbce];return _0x2d8301;};'use strict';var _=require(_0x3193('0x0'));var util=require(_0x3193('0x1'));var moment=require(_0x3193('0x2'));var BPromise=require('bluebird');var rs=require(_0x3193('0x3'));var fs=require('fs');var Redis=require(_0x3193('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3193('0x5'));var logger=require(_0x3193('0x6'))(_0x3193('0x7'));var config=require(_0x3193('0x8'));var jayson=require(_0x3193('0x9'));var client=jayson[_0x3193('0xa')][_0x3193('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbc639c,_0x63e36f,_0x16d1fa){return new BPromise(function(_0x391ab6,_0x172fa0){return client[_0x3193('0xc')](_0xbc639c,_0x16d1fa)[_0x3193('0xd')](function(_0x14af22){logger[_0x3193('0xe')](_0x3193('0xf'),_0x63e36f,'request\x20sent');logger[_0x3193('0x10')](_0x3193('0x11'),_0x63e36f,_0x3193('0x12'),JSON[_0x3193('0x13')](_0x14af22));if(_0x14af22[_0x3193('0x14')]){if(_0x14af22[_0x3193('0x14')]['code']===0x1f4){logger[_0x3193('0x14')]('SalesforceField,\x20%s,\x20%s',_0x63e36f,_0x14af22['error'][_0x3193('0x15')]);return _0x172fa0(_0x14af22[_0x3193('0x14')]['message']);}logger[_0x3193('0x14')](_0x3193('0xf'),_0x63e36f,_0x14af22[_0x3193('0x14')][_0x3193('0x15')]);return _0x391ab6(_0x14af22['error']['message']);}else{logger[_0x3193('0xe')](_0x3193('0xf'),_0x63e36f,'request\x20sent');_0x391ab6(_0x14af22[_0x3193('0x16')]['message']);}})[_0x3193('0x17')](function(_0x42a1ce){logger[_0x3193('0x14')](_0x3193('0xf'),_0x63e36f,_0x42a1ce);_0x172fa0(_0x42a1ce);});});}
\ No newline at end of file
+var _0x5ecf=['error','code','message','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x1f1305,_0x2435f5){var _0x571a9d=function(_0x411dfc){while(--_0x411dfc){_0x1f1305['push'](_0x1f1305['shift']());}};_0x571a9d(++_0x2435f5);}(_0x5ecf,0x1b9));var _0xf5ec=function(_0xe12ff9,_0x4833b0){_0xe12ff9=_0xe12ff9-0x0;var _0x4358cc=_0x5ecf[_0xe12ff9];return _0x4358cc;};'use strict';var _=require('lodash');var util=require(_0xf5ec('0x0'));var moment=require(_0xf5ec('0x1'));var BPromise=require(_0xf5ec('0x2'));var rs=require(_0xf5ec('0x3'));var fs=require('fs');var Redis=require(_0xf5ec('0x4'));var db=require(_0xf5ec('0x5'))['db'];var utils=require(_0xf5ec('0x6'));var logger=require(_0xf5ec('0x7'))('rpc');var config=require(_0xf5ec('0x8'));var jayson=require(_0xf5ec('0x9'));var client=jayson[_0xf5ec('0xa')][_0xf5ec('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1c0ce7,_0x297e42,_0x38f3ff){return new BPromise(function(_0xcdfbed,_0x1441a2){return client[_0xf5ec('0xc')](_0x1c0ce7,_0x38f3ff)[_0xf5ec('0xd')](function(_0x3881b0){logger[_0xf5ec('0xe')](_0xf5ec('0xf'),_0x297e42,_0xf5ec('0x10'));logger[_0xf5ec('0x11')]('SalesforceField,\x20%s,\x20%s,\x20%s',_0x297e42,_0xf5ec('0x10'),JSON[_0xf5ec('0x12')](_0x3881b0));if(_0x3881b0[_0xf5ec('0x13')]){if(_0x3881b0[_0xf5ec('0x13')][_0xf5ec('0x14')]===0x1f4){logger[_0xf5ec('0x13')]('SalesforceField,\x20%s,\x20%s',_0x297e42,_0x3881b0[_0xf5ec('0x13')][_0xf5ec('0x15')]);return _0x1441a2(_0x3881b0[_0xf5ec('0x13')][_0xf5ec('0x15')]);}logger[_0xf5ec('0x13')]('SalesforceField,\x20%s,\x20%s',_0x297e42,_0x3881b0[_0xf5ec('0x13')][_0xf5ec('0x15')]);return _0xcdfbed(_0x3881b0[_0xf5ec('0x13')][_0xf5ec('0x15')]);}else{logger[_0xf5ec('0xe')](_0xf5ec('0xf'),_0x297e42,_0xf5ec('0x10'));_0xcdfbed(_0x3881b0[_0xf5ec('0x16')]['message']);}})['catch'](function(_0x698a38){logger[_0xf5ec('0x13')](_0xf5ec('0xf'),_0x297e42,_0x698a38);_0x1441a2(_0x698a38);});});}
\ No newline at end of file
index dbcd4ed..ddcd136 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f49=['exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields','create','post','addConfiguration','put','update','destroy'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x3f49,0x11f));var _0x93f4=function(_0x286dab,_0x34f0ff){_0x286dab=_0x286dab-0x0;var _0x2c91a5=_0x3f49[_0x286dab];return _0x2c91a5;};'use strict';var multer=require(_0x93f4('0x0'));var util=require(_0x93f4('0x1'));var path=require('path');var timeout=require(_0x93f4('0x2'));var express=require(_0x93f4('0x3'));var router=express[_0x93f4('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x93f4('0x5'));var interaction=require(_0x93f4('0x6'));var config=require('../../config/environment');var controller=require('./intServicenowAccount.controller');router[_0x93f4('0x7')]('/',auth[_0x93f4('0x8')](),controller[_0x93f4('0x9')]);router['get'](_0x93f4('0xa'),auth['isAuthenticated'](),controller[_0x93f4('0xb')]);router[_0x93f4('0x7')](_0x93f4('0xc'),auth[_0x93f4('0x8')](),controller[_0x93f4('0xd')]);router[_0x93f4('0x7')](_0x93f4('0xe'),auth[_0x93f4('0x8')](),controller['getFields']);router['post']('/',auth[_0x93f4('0x8')](),controller[_0x93f4('0xf')]);router[_0x93f4('0x10')](_0x93f4('0xc'),auth[_0x93f4('0x8')](),controller[_0x93f4('0x11')]);router[_0x93f4('0x12')](_0x93f4('0xa'),auth['isAuthenticated'](),controller[_0x93f4('0x13')]);router['delete']('/:id',auth[_0x93f4('0x8')](),controller[_0x93f4('0x14')]);module[_0x93f4('0x15')]=router;
\ No newline at end of file
+var _0xc116=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','/:id','show','getConfigurations','/:id/fields','getFields','post','/:id/configurations','put','exports','multer'];(function(_0xff307d,_0x32f885){var _0x1c96dd=function(_0x534c33){while(--_0x534c33){_0xff307d['push'](_0xff307d['shift']());}};_0x1c96dd(++_0x32f885);}(_0xc116,0x164));var _0x6c11=function(_0x1dfa1c,_0x5a3fb9){_0x1dfa1c=_0x1dfa1c-0x0;var _0x588515=_0xc116[_0x1dfa1c];return _0x588515;};'use strict';var multer=require(_0x6c11('0x0'));var util=require(_0x6c11('0x1'));var path=require(_0x6c11('0x2'));var timeout=require(_0x6c11('0x3'));var express=require(_0x6c11('0x4'));var router=express[_0x6c11('0x5')]();var fs_extra=require(_0x6c11('0x6'));var auth=require(_0x6c11('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x6c11('0x8'));var controller=require(_0x6c11('0x9'));router[_0x6c11('0xa')]('/',auth[_0x6c11('0xb')](),controller['index']);router[_0x6c11('0xa')](_0x6c11('0xc'),auth['isAuthenticated'](),controller[_0x6c11('0xd')]);router['get']('/:id/configurations',auth[_0x6c11('0xb')](),controller[_0x6c11('0xe')]);router[_0x6c11('0xa')](_0x6c11('0xf'),auth[_0x6c11('0xb')](),controller[_0x6c11('0x10')]);router['post']('/',auth[_0x6c11('0xb')](),controller['create']);router[_0x6c11('0x11')](_0x6c11('0x12'),auth[_0x6c11('0xb')](),controller['addConfiguration']);router[_0x6c11('0x13')](_0x6c11('0xc'),auth[_0x6c11('0xb')](),controller['update']);router['delete'](_0x6c11('0xc'),auth[_0x6c11('0xb')](),controller['destroy']);module[_0x6c11('0x14')]=router;
\ No newline at end of file
index c080057..61a5cc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6a7=['sequelize','STRING','remoteUri'];(function(_0x45d55e,_0x2fede3){var _0x29812a=function(_0x3c6830){while(--_0x3c6830){_0x45d55e['push'](_0x45d55e['shift']());}};_0x29812a(++_0x2fede3);}(_0xe6a7,0xe1));var _0x7e6a=function(_0x126193,_0x47bf8c){_0x126193=_0x126193-0x0;var _0x19bf08=_0xe6a7[_0x126193];return _0x19bf08;};'use strict';var Sequelize=require(_0x7e6a('0x0'));module['exports']={'name':{'type':Sequelize[_0x7e6a('0x1')]},'description':{'type':Sequelize[_0x7e6a('0x1')]},'username':{'type':Sequelize['STRING'],'unique':'username'},'password':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x7e6a('0x1')],'unique':_0x7e6a('0x2')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x491b=['remoteUri','sequelize','exports','STRING','username'];(function(_0x20389e,_0x2f239a){var _0x144edb=function(_0x1f433b){while(--_0x1f433b){_0x20389e['push'](_0x20389e['shift']());}};_0x144edb(++_0x2f239a);}(_0x491b,0xe2));var _0xb491=function(_0x629e43,_0x47bbc1){_0x629e43=_0x629e43-0x0;var _0x1b796e=_0x491b[_0x629e43];return _0x1b796e;};'use strict';var Sequelize=require(_0xb491('0x0'));module[_0xb491('0x1')]={'name':{'type':Sequelize[_0xb491('0x2')]},'description':{'type':Sequelize[_0xb491('0x2')]},'username':{'type':Sequelize[_0xb491('0x2')],'unique':_0xb491('0x3')},'password':{'type':Sequelize[_0xb491('0x2')]},'email':{'type':Sequelize[_0xb491('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0xb491('0x4')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 66f4302..7805292 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b6b=['length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','includeAll','rows','catch','params','rawAttributes','include','find','create','body','update','getConfigurations','findOne','ServicenowConfiguration','addConfiguration','AccountId','getSubjects','channel','getDescriptions','Subjects','ServicenowField','Descriptions','made_sla','knowledge','subcategory','incident_state','severity','category','parent','watch_list','upon_reject','child_incidents','approval_history','number','sys_updated_by','opened_by','sys_created_on','sys_domain','sys_created_by','closed_at','cmdb_ci','delivery_plan','business_service','sys_domain_path','time_worked','opened_at','business_duration','group_list','resolved_at','work_notes','close_code','correlation_display','delivery_task','work_start','assignment_group','additional_assignee_list','description','calendar_duration','notify','sys_class_name','close_notes','closed_by','follow_up','sys_id','reopened_by','urgency','problem_id','activity_due','assigned_to','comments','sla_due','approval','due_date','sys_tags','escalation','upon_approval','location','username','password','email','remoteUri','slice','substring','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','includes','forEach','label','all','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','push','concat','statusCode','Wrong\x20credentials','options','True','False','false','value','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','desk.js','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','destroy','then','error','stack','name','index','map','ServicenowAccount','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields'];(function(_0x3a2630,_0x205e7c){var _0x4b3b09=function(_0x55841e){while(--_0x55841e){_0x3a2630['push'](_0x3a2630['shift']());}};_0x4b3b09(++_0x205e7c);}(_0x5b6b,0x1bb));var _0xb5b6=function(_0x45e957,_0x3dd9dc){_0x45e957=_0x45e957-0x0;var _0x212ba4=_0x5b6b[_0x45e957];return _0x212ba4;};'use strict';var emlformat=require(_0xb5b6('0x0'));var rimraf=require(_0xb5b6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb5b6('0x2'));var rp=require(_0xb5b6('0x3'));var moment=require(_0xb5b6('0x4'));var BPromise=require(_0xb5b6('0x5'));var Mustache=require(_0xb5b6('0x6'));var util=require(_0xb5b6('0x7'));var path=require(_0xb5b6('0x8'));var sox=require('sox');var csv=require(_0xb5b6('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb5b6('0xa'));var _=require(_0xb5b6('0xb'));var squel=require(_0xb5b6('0xc'));var crypto=require(_0xb5b6('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xb5b6('0xe'));var toCsv=require(_0xb5b6('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb5b6('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xb5b6('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb5b6('0x11'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xb5b6('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xb5b6('0x13'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x62a33d,_0x320c21){_0x320c21=_0x320c21||0xcc;return function(_0x5acd61){if(_0x5acd61){return _0x62a33d[_0xb5b6('0x14')](_0x320c21);}return _0x62a33d[_0xb5b6('0x15')](_0x320c21)[_0xb5b6('0x16')]();};}function respondWithResult(_0x5ede00,_0x31d144){_0x31d144=_0x31d144||0xc8;return function(_0x1fd4e7){if(_0x1fd4e7){return _0x5ede00[_0xb5b6('0x15')](_0x31d144)[_0xb5b6('0x17')](_0x1fd4e7);}};}function respondWithFilteredResult(_0x1d4578,_0x257580){return function(_0x5cc2f5){if(_0x5cc2f5){var _0x49c54b=typeof _0x257580[_0xb5b6('0x18')]==='undefined'&&typeof _0x257580[_0xb5b6('0x19')]===_0xb5b6('0x1a');var _0x171f34=_0x5cc2f5[_0xb5b6('0x1b')];var _0x29366e=_0x49c54b?0x0:_0x257580[_0xb5b6('0x18')];var _0x7dd3e5=_0x49c54b?_0x5cc2f5[_0xb5b6('0x1b')]:_0x257580['offset']+_0x257580[_0xb5b6('0x19')];var _0x46397c;if(_0x7dd3e5>=_0x171f34){_0x7dd3e5=_0x171f34;_0x46397c=0xc8;}else{_0x46397c=0xce;}_0x1d4578[_0xb5b6('0x15')](_0x46397c);return _0x1d4578[_0xb5b6('0x1c')](_0xb5b6('0x1d'),_0x29366e+'-'+_0x7dd3e5+'/'+_0x171f34)[_0xb5b6('0x17')](_0x5cc2f5);}return null;};}function patchUpdates(_0x13abdd){return function(_0x8338ab){try{jsonpatch['apply'](_0x8338ab,_0x13abdd,!![]);}catch(_0x524f57){return BPromise[_0xb5b6('0x1e')](_0x524f57);}return _0x8338ab['save']();};}function saveUpdates(_0x5c340e,_0xd23674){return function(_0x53bd3f){if(_0x53bd3f){return _0x53bd3f['update'](_0x5c340e)['then'](function(_0x1ba840){return _0x1ba840;});}return null;};}function removeEntity(_0x4f1f8b,_0x103d2e){return function(_0x35328d){if(_0x35328d){return _0x35328d[_0xb5b6('0x1f')]()[_0xb5b6('0x20')](function(){_0x4f1f8b[_0xb5b6('0x15')](0xcc)[_0xb5b6('0x16')]();});}};}function handleEntityNotFound(_0x484aa9,_0x9d37d6){return function(_0x1babf4){if(!_0x1babf4){_0x484aa9[_0xb5b6('0x14')](0x194);}return _0x1babf4;};}function handleError(_0x175ddc,_0x3026a3){_0x3026a3=_0x3026a3||0x1f4;return function(_0x2de315){logger[_0xb5b6('0x21')](_0x2de315[_0xb5b6('0x22')]);if(_0x2de315[_0xb5b6('0x23')]){delete _0x2de315[_0xb5b6('0x23')];}_0x175ddc[_0xb5b6('0x15')](_0x3026a3)['send'](_0x2de315);};}exports[_0xb5b6('0x24')]=function(_0x4d7401,_0x53de77){var _0x8dad27={},_0x557c56={},_0x5a9ff9={'count':0x0,'rows':[]};var _0xa8f336=_[_0xb5b6('0x25')](db[_0xb5b6('0x26')]['rawAttributes'],function(_0x22617c){return{'name':_0x22617c[_0xb5b6('0x27')],'type':_0x22617c[_0xb5b6('0x28')][_0xb5b6('0x29')]};});_0x557c56[_0xb5b6('0x2a')]=_[_0xb5b6('0x25')](_0xa8f336,_0xb5b6('0x23'));_0x557c56[_0xb5b6('0x2b')]=_[_0xb5b6('0x2c')](_0x4d7401['query']);_0x557c56[_0xb5b6('0x2d')]=_['intersection'](_0x557c56[_0xb5b6('0x2a')],_0x557c56['query']);_0x8dad27[_0xb5b6('0x2e')]=_[_0xb5b6('0x2f')](_0x557c56[_0xb5b6('0x2a')],qs[_0xb5b6('0x30')](_0x4d7401[_0xb5b6('0x2b')]['fields']));_0x8dad27[_0xb5b6('0x2e')]=_0x8dad27[_0xb5b6('0x2e')][_0xb5b6('0x31')]?_0x8dad27[_0xb5b6('0x2e')]:_0x557c56[_0xb5b6('0x2a')];if(!_0x4d7401[_0xb5b6('0x2b')][_0xb5b6('0x32')](_0xb5b6('0x33'))){_0x8dad27[_0xb5b6('0x19')]=qs[_0xb5b6('0x19')](_0x4d7401[_0xb5b6('0x2b')]['limit']);_0x8dad27['offset']=qs[_0xb5b6('0x18')](_0x4d7401[_0xb5b6('0x2b')][_0xb5b6('0x18')]);}_0x8dad27[_0xb5b6('0x34')]=qs['sort'](_0x4d7401[_0xb5b6('0x2b')][_0xb5b6('0x35')]);_0x8dad27[_0xb5b6('0x36')]=qs['filters'](_[_0xb5b6('0x37')](_0x4d7401[_0xb5b6('0x2b')],_0x557c56[_0xb5b6('0x2d')]),_0xa8f336);if(_0x4d7401['query'][_0xb5b6('0x38')]){_0x8dad27[_0xb5b6('0x36')]=_[_0xb5b6('0x39')](_0x8dad27[_0xb5b6('0x36')],{'$or':_[_0xb5b6('0x25')](_0xa8f336,function(_0x29bce1){if(_0x29bce1['type']!=='VIRTUAL'){var _0xc9bc1={};_0xc9bc1[_0x29bce1[_0xb5b6('0x23')]]={'$like':'%'+_0x4d7401[_0xb5b6('0x2b')][_0xb5b6('0x38')]+'%'};return _0xc9bc1;}})});}_0x8dad27=_['merge']({},_0x8dad27,_0x4d7401['options']);var _0x306fa3={'where':_0x8dad27[_0xb5b6('0x36')]};return db[_0xb5b6('0x26')][_0xb5b6('0x1b')](_0x306fa3)[_0xb5b6('0x20')](function(_0x669492){_0x5a9ff9['count']=_0x669492;if(_0x4d7401['query'][_0xb5b6('0x3a')]){_0x8dad27['include']=[{'all':!![]}];}return db[_0xb5b6('0x26')]['findAll'](_0x8dad27);})['then'](function(_0x3fbf84){_0x5a9ff9[_0xb5b6('0x3b')]=_0x3fbf84;return _0x5a9ff9;})[_0xb5b6('0x20')](respondWithFilteredResult(_0x53de77,_0x8dad27))[_0xb5b6('0x3c')](handleError(_0x53de77,null));};exports['show']=function(_0x1ab5fa,_0x1005ec){var _0x30b007={'raw':![],'where':{'id':_0x1ab5fa[_0xb5b6('0x3d')]['id']}},_0x558dd8={};_0x558dd8[_0xb5b6('0x2a')]=_['keys'](db[_0xb5b6('0x26')][_0xb5b6('0x3e')]);_0x558dd8[_0xb5b6('0x2b')]=_[_0xb5b6('0x2c')](_0x1ab5fa[_0xb5b6('0x2b')]);_0x558dd8[_0xb5b6('0x2d')]=_[_0xb5b6('0x2f')](_0x558dd8[_0xb5b6('0x2a')],_0x558dd8[_0xb5b6('0x2b')]);_0x30b007[_0xb5b6('0x2e')]=_[_0xb5b6('0x2f')](_0x558dd8[_0xb5b6('0x2a')],qs['fields'](_0x1ab5fa[_0xb5b6('0x2b')][_0xb5b6('0x30')]));_0x30b007['attributes']=_0x30b007[_0xb5b6('0x2e')][_0xb5b6('0x31')]?_0x30b007[_0xb5b6('0x2e')]:_0x558dd8[_0xb5b6('0x2a')];if(_0x1ab5fa[_0xb5b6('0x2b')][_0xb5b6('0x3a')]){_0x30b007[_0xb5b6('0x3f')]=[{'all':!![]}];}_0x30b007=_[_0xb5b6('0x39')]({},_0x30b007,_0x1ab5fa['options']);return db[_0xb5b6('0x26')][_0xb5b6('0x40')](_0x30b007)[_0xb5b6('0x20')](handleEntityNotFound(_0x1005ec,null))[_0xb5b6('0x20')](respondWithResult(_0x1005ec,null))[_0xb5b6('0x3c')](handleError(_0x1005ec,null));};exports['create']=function(_0x4f0ac5,_0x13aa95){return db[_0xb5b6('0x26')][_0xb5b6('0x41')](_0x4f0ac5[_0xb5b6('0x42')],{})[_0xb5b6('0x20')](respondWithResult(_0x13aa95,0xc9))[_0xb5b6('0x3c')](handleError(_0x13aa95,null));};exports[_0xb5b6('0x43')]=function(_0x4014e7,_0x18bd93){if(_0x4014e7[_0xb5b6('0x42')]['id']){delete _0x4014e7[_0xb5b6('0x42')]['id'];}return db[_0xb5b6('0x26')]['find']({'where':{'id':_0x4014e7[_0xb5b6('0x3d')]['id']}})[_0xb5b6('0x20')](handleEntityNotFound(_0x18bd93,null))[_0xb5b6('0x20')](saveUpdates(_0x4014e7[_0xb5b6('0x42')],null))['then'](respondWithResult(_0x18bd93,null))['catch'](handleError(_0x18bd93,null));};exports[_0xb5b6('0x1f')]=function(_0x449542,_0x3079e1){return db['ServicenowAccount'][_0xb5b6('0x40')]({'where':{'id':_0x449542['params']['id']}})[_0xb5b6('0x20')](handleEntityNotFound(_0x3079e1,null))[_0xb5b6('0x20')](removeEntity(_0x3079e1,null))[_0xb5b6('0x3c')](handleError(_0x3079e1,null));};exports[_0xb5b6('0x44')]=function(_0x282969,_0x3ea983,_0x13b0a3){var _0x321f00={};var _0x42c928={};var _0x3bea99;var _0x40ea98;return db['ServicenowAccount'][_0xb5b6('0x45')]({'where':{'id':_0x282969[_0xb5b6('0x3d')]['id']}})[_0xb5b6('0x20')](handleEntityNotFound(_0x3ea983,null))[_0xb5b6('0x20')](function(_0x1206ac){if(_0x1206ac){_0x3bea99=_0x1206ac;_0x42c928[_0xb5b6('0x2a')]=_[_0xb5b6('0x2c')](db[_0xb5b6('0x46')][_0xb5b6('0x3e')]);_0x42c928['query']=_[_0xb5b6('0x2c')](_0x282969[_0xb5b6('0x2b')]);_0x42c928[_0xb5b6('0x2d')]=_['intersection'](_0x42c928[_0xb5b6('0x2a')],_0x42c928[_0xb5b6('0x2b')]);_0x321f00[_0xb5b6('0x2e')]=_[_0xb5b6('0x2f')](_0x42c928[_0xb5b6('0x2a')],qs[_0xb5b6('0x30')](_0x282969[_0xb5b6('0x2b')][_0xb5b6('0x30')]));_0x321f00[_0xb5b6('0x2e')]=_0x321f00[_0xb5b6('0x2e')][_0xb5b6('0x31')]?_0x321f00['attributes']:_0x42c928['model'];_0x321f00[_0xb5b6('0x34')]=qs['sort'](_0x282969[_0xb5b6('0x2b')]['sort']);_0x321f00[_0xb5b6('0x36')]=qs['filters'](_['pick'](_0x282969[_0xb5b6('0x2b')],_0x42c928[_0xb5b6('0x2d')]));if(_0x282969[_0xb5b6('0x2b')]['filter']){_0x321f00[_0xb5b6('0x36')]=_['merge'](_0x321f00[_0xb5b6('0x36')],{'$or':_[_0xb5b6('0x25')](_0x321f00['attributes'],function(_0x86ceba){var _0x4e2442={};_0x4e2442[_0x86ceba]={'$like':'%'+_0x282969[_0xb5b6('0x2b')]['filter']+'%'};return _0x4e2442;})});}_0x321f00=_[_0xb5b6('0x39')]({},_0x321f00,_0x282969['options']);return _0x3bea99['getConfigurations'](_0x321f00);}})['then'](function(_0x30ff5e){if(_0x30ff5e){_0x40ea98=_0x30ff5e[_0xb5b6('0x31')];if(!_0x282969[_0xb5b6('0x2b')][_0xb5b6('0x32')]('nolimit')){_0x321f00[_0xb5b6('0x19')]=qs['limit'](_0x282969[_0xb5b6('0x2b')][_0xb5b6('0x19')]);_0x321f00[_0xb5b6('0x18')]=qs[_0xb5b6('0x18')](_0x282969['query'][_0xb5b6('0x18')]);}return _0x3bea99['getConfigurations'](_0x321f00);}})[_0xb5b6('0x20')](function(_0x24deff){if(_0x24deff){return _0x24deff?{'count':_0x40ea98,'rows':_0x24deff}:null;}})[_0xb5b6('0x20')](respondWithResult(_0x3ea983,null))['catch'](handleError(_0x3ea983,null));};exports[_0xb5b6('0x47')]=function(_0x268f78,_0xaf05be,_0x46fa80){if(_0x268f78['body']['id']){delete _0x268f78['body']['id'];}return db['ServicenowAccount']['findOne']({'where':{'id':_0x268f78['params']['id']}})[_0xb5b6('0x20')](handleEntityNotFound(_0xaf05be,null))[_0xb5b6('0x20')](function(_0x3f3bfb){if(_0x3f3bfb){_0x268f78[_0xb5b6('0x42')][_0xb5b6('0x48')]=_0x3f3bfb['id'];_0x268f78[_0xb5b6('0x42')]['Subjects']=integrations[_0xb5b6('0x49')](_0x268f78[_0xb5b6('0x42')][_0xb5b6('0x4a')],_0x268f78[_0xb5b6('0x42')][_0xb5b6('0x28')]);_0x268f78[_0xb5b6('0x42')]['Descriptions']=integrations[_0xb5b6('0x4b')](_0x268f78[_0xb5b6('0x42')]['channel'],_0x268f78['body'][_0xb5b6('0x28')]);return db[_0xb5b6('0x46')][_0xb5b6('0x41')](_0x268f78[_0xb5b6('0x42')],{'include':[{'model':db['ServicenowField'],'as':_0xb5b6('0x4c')},{'model':db[_0xb5b6('0x4d')],'as':_0xb5b6('0x4e')}]});}return null;})[_0xb5b6('0x20')](respondWithResult(_0xaf05be,null))[_0xb5b6('0x3c')](handleError(_0xaf05be,null));};exports['getFields']=function(_0x4a08c8,_0x559b86,_0x422621){var _0x101639=[_0xb5b6('0x4f'),'hold_reason',_0xb5b6('0x50'),_0xb5b6('0x51'),'close_code','notify',_0xb5b6('0x52'),_0xb5b6('0x53'),_0xb5b6('0x54')];var _0x19fe1b=[_0xb5b6('0x55'),_0xb5b6('0x4f'),'caused_by',_0xb5b6('0x56'),_0xb5b6('0x57'),'sys_updated_on',_0xb5b6('0x58'),'hold_reason',_0xb5b6('0x59'),_0xb5b6('0x5a'),'resolved_by',_0xb5b6('0x5b'),_0xb5b6('0x5c'),'user_input',_0xb5b6('0x5d'),_0xb5b6('0x5e'),'state',_0xb5b6('0x5f'),_0xb5b6('0x50'),_0xb5b6('0x34'),'calendar_stc',_0xb5b6('0x60'),_0xb5b6('0x61'),_0xb5b6('0x62'),'impact','active','work_notes_list',_0xb5b6('0x63'),'priority',_0xb5b6('0x64'),'rfc',_0xb5b6('0x65'),'expected_start',_0xb5b6('0x66'),_0xb5b6('0x67'),_0xb5b6('0x68'),'work_end','reopened_time',_0xb5b6('0x69'),'caller_id','approval_set',_0xb5b6('0x51'),_0xb5b6('0x6a'),'short_description',_0xb5b6('0x6b'),_0xb5b6('0x6c'),_0xb5b6('0x6d'),_0xb5b6('0x6e'),_0xb5b6('0x6f'),'business_stc',_0xb5b6('0x70'),_0xb5b6('0x71'),_0xb5b6('0x72'),_0xb5b6('0x73'),_0xb5b6('0x74'),_0xb5b6('0x75'),_0xb5b6('0x76'),_0xb5b6('0x77'),'parent_incident',_0xb5b6('0x78'),'contact_type',_0xb5b6('0x79'),_0xb5b6('0x52'),_0xb5b6('0x7a'),_0xb5b6('0x7b'),'company','reassignment_count',_0xb5b6('0x7c'),_0xb5b6('0x7d'),_0xb5b6('0x53'),_0xb5b6('0x7e'),_0xb5b6('0x7f'),_0xb5b6('0x80'),'comments_and_work_notes',_0xb5b6('0x81'),'sys_mod_count','reopen_count',_0xb5b6('0x82'),_0xb5b6('0x83'),_0xb5b6('0x84'),'correlation_id',_0xb5b6('0x85'),_0xb5b6('0x54')];var _0x4673ca='';var _0x58efef='';var _0x1be1c4=[];var _0x2ab347='';var _0x1398a4='';var _0x4cc061=[];var _0x24677f='';var _0x43c817='';var _0x571c40={};var _0x1f44c8='';return db[_0xb5b6('0x26')][_0xb5b6('0x45')]({'where':{'id':_0x4a08c8['params']['id']},'attributes':['id',_0xb5b6('0x86'),_0xb5b6('0x87'),_0xb5b6('0x88'),_0xb5b6('0x89'),'serverUrl']})[_0xb5b6('0x20')](handleEntityNotFound(_0x559b86,null))[_0xb5b6('0x20')](function(_0x71741f){if(_0x71741f){_0x1f44c8=_0x71741f[_0xb5b6('0x89')];var _0x254439=_0x1f44c8[_0xb5b6('0x8a')](-0x1);if(_0x254439==='/'){_0x1f44c8=_0x1f44c8[_0xb5b6('0x8b')](0x0,_0x1f44c8[_0xb5b6('0x8c')](_0x254439));}_0x43c817=util[_0xb5b6('0x8d')](_0xb5b6('0x8e'),_0x1f44c8);_0x24677f=util['format'](_0xb5b6('0x8f'),_0x1f44c8);_0x571c40={'user':_0x71741f[_0xb5b6('0x86')],'pass':_0x71741f[_0xb5b6('0x87')]};var _0x33a06e={'method':'GET','uri':_0x43c817+_0xb5b6('0x90'),'auth':_0x571c40,'json':!![]};return rp(_0x33a06e);}})[_0xb5b6('0x20')](function(_0x411473){if(_0x411473[_0xb5b6('0x91')][_0xb5b6('0x31')]>0x0){_0x4673ca=_0x411473['result'];}console[_0xb5b6('0x92')](_0xb5b6('0x93'),_0x4673ca);_0x4cc061=[];_0x58efef=Object[_0xb5b6('0x94')]([],_0x4673ca);_[_0xb5b6('0x95')](_0x58efef,function(_0x5d5620){return!_0x101639[_0xb5b6('0x96')](_0x5d5620[_0xb5b6('0x23')]);});_0x58efef[_0xb5b6('0x97')](function(_0xf16524){var _0x35b499=createFieldObject(_0x24677f,_0x571c40,_0xf16524['internalType'],_0xf16524[_0xb5b6('0x23')],_0xf16524[_0xb5b6('0x98')],![]);_0x4cc061['push'](_0x35b499);});return Promise[_0xb5b6('0x99')](_0x4cc061);})[_0xb5b6('0x20')](function(_0x8ad3ee){_0x1be1c4=_0x8ad3ee;_0x2ab347=Object[_0xb5b6('0x94')]([],_0x4673ca);console['log']('TCL:\x20_object',_0x4673ca);_[_0xb5b6('0x95')](_0x2ab347,function(_0x4e14f6){return _0x19fe1b[_0xb5b6('0x96')](_0x4e14f6['name']);});console['log'](_0xb5b6('0x9a'),_0x2ab347);_0x4cc061=[];_0x2ab347[_0xb5b6('0x97')](function(_0x33fdab){var _0x3f563b=createFieldObject(_0x24677f,_0x571c40,_0x33fdab['internalType'],_0x33fdab['name'],_0x33fdab[_0xb5b6('0x98')],!![]);_0x4cc061[_0xb5b6('0x9b')](_0x3f563b);});return Promise[_0xb5b6('0x99')](_0x4cc061);})[_0xb5b6('0x20')](function(_0x39c980){_0x1398a4=_0x39c980;var _0x15f8ad=_0x1be1c4[_0xb5b6('0x9c')](_0x1398a4);return{'count':_0x15f8ad[_0xb5b6('0x31')],'rows':_0x15f8ad};})[_0xb5b6('0x20')](respondWithResult(_0x559b86,null))[_0xb5b6('0x3c')](function(_0x1f0430){console[_0xb5b6('0x92')]('ServiceNow\x20error:\x20'+_0x1f0430);var _0x20f239=_0x4a08c8[_0xb5b6('0x2b')]['test']?0x1f4:_0x1f0430[_0xb5b6('0x9d')]||0x1f4;logger[_0xb5b6('0x21')](_0x1f0430[_0xb5b6('0x22')]);delete _0x1f0430[_0xb5b6('0x23')];if(_0x20f239===0x191){_0x20f239=0x190;}_0x559b86[_0xb5b6('0x15')](_0x20f239)['send'](_0x4a08c8[_0xb5b6('0x2b')]['test']?{'message':_0xb5b6('0x9e'),'statusCode':_0x1f0430[_0xb5b6('0x9d')]}:_0x1f0430);});};function createFieldObject(_0x4a40cb,_0x2fe3f6,_0xeb7e4d,_0x45f309,_0x336fc0,_0x7d0e44){return new Promise(function(_0x1a35fc,_0x122a5e){var _0x3efd33={'id':_0x45f309,'name':_0x336fc0,'custom':_0x7d0e44};if(_0xeb7e4d==='boolean'){_0x3efd33[_0xb5b6('0x9f')]=[{'name':_0xb5b6('0xa0'),'value':'true'},{'name':_0xb5b6('0xa1'),'value':_0xb5b6('0xa2')}];_0x1a35fc(_0x3efd33);}else{var _0x45946b={'method':'GET','uri':_0x4a40cb+'sys_choice?sysparm_query=name=incident^element='+_0x45f309,'auth':_0x2fe3f6,'json':!![]};return rp(_0x45946b)['then'](function(_0x21b3d5){var _0x52bfd8=[];if(_0x21b3d5['result'][_0xb5b6('0x31')]>0x0){_0x21b3d5[_0xb5b6('0x91')][_0xb5b6('0x97')](function(_0x2ad828){if(_0x2ad828['inactive']==='false'){var _0x1f8a85={'name':_0x2ad828['label'],'value':_0x2ad828[_0xb5b6('0xa3')]};_0x52bfd8[_0xb5b6('0x9b')](_0x1f8a85);}});}_0x3efd33[_0xb5b6('0x9f')]=_0x52bfd8;if(_0x3efd33[_0xb5b6('0x9f')][_0xb5b6('0x31')]>0x0){_0x1a35fc(_0x3efd33);}else{if(_0x7d0e44==![]){_0x1a35fc();}else{_0x1a35fc(_0x3efd33);}}});}});}
\ No newline at end of file
+var _0xe2d6=['create','body','destroy','getConfigurations','findOne','ServicenowConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','ServicenowField','getFields','made_sla','hold_reason','subcategory','close_code','notify','incident_state','severity','category','caused_by','watch_list','upon_reject','sys_updated_on','child_incidents','approval_history','number','resolved_by','sys_updated_by','opened_by','user_input','sys_created_on','sys_domain','state','sys_created_by','knowledge','calendar_stc','closed_at','cmdb_ci','delivery_plan','impact','active','work_notes_list','business_service','priority','sys_domain_path','expected_start','opened_at','business_duration','group_list','work_end','reopened_time','resolved_at','caller_id','correlation_display','delivery_task','assignment_group','business_stc','additional_assignee_list','description','close_notes','sys_id','contact_type','reopened_by','urgency','problem_id','company','reassignment_count','activity_due','assigned_to','comments','sla_due','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','upon_approval','location','username','email','remoteUri','serverUrl','slice','lastIndexOf','%s/api/now/table/','password','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','includes','internalType','label','push','all','TCL:\x20_object','remove','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','forEach','concat','test','stack','Wrong\x20credentials','statusCode','boolean','True','true','False','inactive','false','value','zip-dir','fast-json-patch','request-promise','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','error','name','send','ServicenowAccount','fieldName','type','key','map','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','params','rawAttributes','find','catch'];(function(_0x41582d,_0x291b1c){var _0x59c504=function(_0x4d967e){while(--_0x4d967e){_0x41582d['push'](_0x41582d['shift']());}};_0x59c504(++_0x291b1c);}(_0xe2d6,0x12f));var _0x6e2d=function(_0x2132a3,_0x4639e9){_0x2132a3=_0x2132a3-0x0;var _0x21890c=_0xe2d6[_0x2132a3];return _0x21890c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6e2d('0x0'));var jsonpatch=require(_0x6e2d('0x1'));var rp=require(_0x6e2d('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x6e2d('0x3'));var util=require(_0x6e2d('0x4'));var path=require('path');var sox=require(_0x6e2d('0x5'));var csv=require(_0x6e2d('0x6'));var ejs=require(_0x6e2d('0x7'));var fs=require('fs');var fs_extra=require(_0x6e2d('0x8'));var _=require(_0x6e2d('0x9'));var squel=require(_0x6e2d('0xa'));var crypto=require(_0x6e2d('0xb'));var jsforce=require(_0x6e2d('0xc'));var deskjs=require(_0x6e2d('0xd'));var toCsv=require(_0x6e2d('0x6'));var querystring=require('querystring');var Papa=require(_0x6e2d('0xe'));var Redis=require(_0x6e2d('0xf'));var authService=require(_0x6e2d('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x6e2d('0x11'));var hardwareService=require(_0x6e2d('0x12'));var logger=require(_0x6e2d('0x13'))('api');var utils=require(_0x6e2d('0x14'));var config=require(_0x6e2d('0x15'));var licenseUtil=require(_0x6e2d('0x16'));var db=require(_0x6e2d('0x17'))['db'];var integrations=require(_0x6e2d('0x18'));function respondWithStatusCode(_0x237962,_0xfc01cd){_0xfc01cd=_0xfc01cd||0xcc;return function(_0x5f2c7a){if(_0x5f2c7a){return _0x237962[_0x6e2d('0x19')](_0xfc01cd);}return _0x237962['status'](_0xfc01cd)[_0x6e2d('0x1a')]();};}function respondWithResult(_0x29b689,_0x3698ef){_0x3698ef=_0x3698ef||0xc8;return function(_0x451cf9){if(_0x451cf9){return _0x29b689[_0x6e2d('0x1b')](_0x3698ef)[_0x6e2d('0x1c')](_0x451cf9);}};}function respondWithFilteredResult(_0x514922,_0x3aceea){return function(_0xae261a){if(_0xae261a){var _0x47805e=typeof _0x3aceea[_0x6e2d('0x1d')]===_0x6e2d('0x1e')&&typeof _0x3aceea[_0x6e2d('0x1f')]===_0x6e2d('0x1e');var _0x201e79=_0xae261a['count'];var _0x520e6e=_0x47805e?0x0:_0x3aceea['offset'];var _0x581bf1=_0x47805e?_0xae261a['count']:_0x3aceea[_0x6e2d('0x1d')]+_0x3aceea[_0x6e2d('0x1f')];var _0x583c0e;if(_0x581bf1>=_0x201e79){_0x581bf1=_0x201e79;_0x583c0e=0xc8;}else{_0x583c0e=0xce;}_0x514922[_0x6e2d('0x1b')](_0x583c0e);return _0x514922[_0x6e2d('0x20')](_0x6e2d('0x21'),_0x520e6e+'-'+_0x581bf1+'/'+_0x201e79)[_0x6e2d('0x1c')](_0xae261a);}return null;};}function patchUpdates(_0x5d3b1f){return function(_0x403605){try{jsonpatch[_0x6e2d('0x22')](_0x403605,_0x5d3b1f,!![]);}catch(_0x1cd860){return BPromise[_0x6e2d('0x23')](_0x1cd860);}return _0x403605[_0x6e2d('0x24')]();};}function saveUpdates(_0x44e0fe,_0x329f0e){return function(_0x1a6ce5){if(_0x1a6ce5){return _0x1a6ce5[_0x6e2d('0x25')](_0x44e0fe)[_0x6e2d('0x26')](function(_0x13d5fa){return _0x13d5fa;});}return null;};}function removeEntity(_0x9c6c04,_0x3dc687){return function(_0x23c940){if(_0x23c940){return _0x23c940['destroy']()[_0x6e2d('0x26')](function(){_0x9c6c04[_0x6e2d('0x1b')](0xcc)[_0x6e2d('0x1a')]();});}};}function handleEntityNotFound(_0x197fc5,_0x4b5539){return function(_0x286ef6){if(!_0x286ef6){_0x197fc5['sendStatus'](0x194);}return _0x286ef6;};}function handleError(_0x32ac03,_0x18946c){_0x18946c=_0x18946c||0x1f4;return function(_0x294bd1){logger[_0x6e2d('0x27')](_0x294bd1['stack']);if(_0x294bd1[_0x6e2d('0x28')]){delete _0x294bd1[_0x6e2d('0x28')];}_0x32ac03[_0x6e2d('0x1b')](_0x18946c)[_0x6e2d('0x29')](_0x294bd1);};}exports['index']=function(_0x254687,_0x4dd8d3){var _0x2e2be9={},_0x522a7e={},_0x330526={'count':0x0,'rows':[]};var _0xbc66ed=_['map'](db[_0x6e2d('0x2a')]['rawAttributes'],function(_0x107755){return{'name':_0x107755[_0x6e2d('0x2b')],'type':_0x107755[_0x6e2d('0x2c')][_0x6e2d('0x2d')]};});_0x522a7e['model']=_[_0x6e2d('0x2e')](_0xbc66ed,'name');_0x522a7e[_0x6e2d('0x2f')]=_[_0x6e2d('0x30')](_0x254687[_0x6e2d('0x2f')]);_0x522a7e['filters']=_[_0x6e2d('0x31')](_0x522a7e[_0x6e2d('0x32')],_0x522a7e[_0x6e2d('0x2f')]);_0x2e2be9['attributes']=_[_0x6e2d('0x31')](_0x522a7e['model'],qs[_0x6e2d('0x33')](_0x254687[_0x6e2d('0x2f')][_0x6e2d('0x33')]));_0x2e2be9[_0x6e2d('0x34')]=_0x2e2be9[_0x6e2d('0x34')][_0x6e2d('0x35')]?_0x2e2be9[_0x6e2d('0x34')]:_0x522a7e[_0x6e2d('0x32')];if(!_0x254687[_0x6e2d('0x2f')][_0x6e2d('0x36')](_0x6e2d('0x37'))){_0x2e2be9[_0x6e2d('0x1f')]=qs['limit'](_0x254687[_0x6e2d('0x2f')]['limit']);_0x2e2be9[_0x6e2d('0x1d')]=qs[_0x6e2d('0x1d')](_0x254687[_0x6e2d('0x2f')][_0x6e2d('0x1d')]);}_0x2e2be9[_0x6e2d('0x38')]=qs[_0x6e2d('0x39')](_0x254687[_0x6e2d('0x2f')][_0x6e2d('0x39')]);_0x2e2be9[_0x6e2d('0x3a')]=qs[_0x6e2d('0x3b')](_[_0x6e2d('0x3c')](_0x254687['query'],_0x522a7e[_0x6e2d('0x3b')]),_0xbc66ed);if(_0x254687[_0x6e2d('0x2f')][_0x6e2d('0x3d')]){_0x2e2be9['where']=_[_0x6e2d('0x3e')](_0x2e2be9['where'],{'$or':_[_0x6e2d('0x2e')](_0xbc66ed,function(_0x4408ae){if(_0x4408ae[_0x6e2d('0x2c')]!==_0x6e2d('0x3f')){var _0x2a6486={};_0x2a6486[_0x4408ae['name']]={'$like':'%'+_0x254687[_0x6e2d('0x2f')][_0x6e2d('0x3d')]+'%'};return _0x2a6486;}})});}_0x2e2be9=_['merge']({},_0x2e2be9,_0x254687[_0x6e2d('0x40')]);var _0x301e34={'where':_0x2e2be9[_0x6e2d('0x3a')]};return db['ServicenowAccount'][_0x6e2d('0x41')](_0x301e34)[_0x6e2d('0x26')](function(_0xe5fe69){_0x330526[_0x6e2d('0x41')]=_0xe5fe69;if(_0x254687[_0x6e2d('0x2f')][_0x6e2d('0x42')]){_0x2e2be9[_0x6e2d('0x43')]=[{'all':!![]}];}return db[_0x6e2d('0x2a')][_0x6e2d('0x44')](_0x2e2be9);})[_0x6e2d('0x26')](function(_0x211f44){_0x330526['rows']=_0x211f44;return _0x330526;})['then'](respondWithFilteredResult(_0x4dd8d3,_0x2e2be9))['catch'](handleError(_0x4dd8d3,null));};exports['show']=function(_0xd5c022,_0x307927){var _0x139e44={'raw':![],'where':{'id':_0xd5c022[_0x6e2d('0x45')]['id']}},_0x52f19a={};_0x52f19a[_0x6e2d('0x32')]=_[_0x6e2d('0x30')](db['ServicenowAccount'][_0x6e2d('0x46')]);_0x52f19a[_0x6e2d('0x2f')]=_[_0x6e2d('0x30')](_0xd5c022['query']);_0x52f19a[_0x6e2d('0x3b')]=_[_0x6e2d('0x31')](_0x52f19a[_0x6e2d('0x32')],_0x52f19a[_0x6e2d('0x2f')]);_0x139e44[_0x6e2d('0x34')]=_[_0x6e2d('0x31')](_0x52f19a[_0x6e2d('0x32')],qs[_0x6e2d('0x33')](_0xd5c022[_0x6e2d('0x2f')][_0x6e2d('0x33')]));_0x139e44[_0x6e2d('0x34')]=_0x139e44[_0x6e2d('0x34')]['length']?_0x139e44[_0x6e2d('0x34')]:_0x52f19a['model'];if(_0xd5c022[_0x6e2d('0x2f')][_0x6e2d('0x42')]){_0x139e44[_0x6e2d('0x43')]=[{'all':!![]}];}_0x139e44=_[_0x6e2d('0x3e')]({},_0x139e44,_0xd5c022['options']);return db['ServicenowAccount'][_0x6e2d('0x47')](_0x139e44)[_0x6e2d('0x26')](handleEntityNotFound(_0x307927,null))[_0x6e2d('0x26')](respondWithResult(_0x307927,null))[_0x6e2d('0x48')](handleError(_0x307927,null));};exports[_0x6e2d('0x49')]=function(_0x1c1897,_0x288080){return db['ServicenowAccount'][_0x6e2d('0x49')](_0x1c1897[_0x6e2d('0x4a')],{})[_0x6e2d('0x26')](respondWithResult(_0x288080,0xc9))['catch'](handleError(_0x288080,null));};exports[_0x6e2d('0x25')]=function(_0x5008dc,_0x533ddf){if(_0x5008dc[_0x6e2d('0x4a')]['id']){delete _0x5008dc[_0x6e2d('0x4a')]['id'];}return db[_0x6e2d('0x2a')][_0x6e2d('0x47')]({'where':{'id':_0x5008dc['params']['id']}})[_0x6e2d('0x26')](handleEntityNotFound(_0x533ddf,null))[_0x6e2d('0x26')](saveUpdates(_0x5008dc[_0x6e2d('0x4a')],null))[_0x6e2d('0x26')](respondWithResult(_0x533ddf,null))[_0x6e2d('0x48')](handleError(_0x533ddf,null));};exports[_0x6e2d('0x4b')]=function(_0x367a1a,_0x234c96){return db[_0x6e2d('0x2a')]['find']({'where':{'id':_0x367a1a[_0x6e2d('0x45')]['id']}})['then'](handleEntityNotFound(_0x234c96,null))[_0x6e2d('0x26')](removeEntity(_0x234c96,null))['catch'](handleError(_0x234c96,null));};exports[_0x6e2d('0x4c')]=function(_0x4309f4,_0xb82f55,_0x5c987d){var _0x59be64={};var _0x30fc97={};var _0xc9c970;var _0x20ec5d;return db['ServicenowAccount'][_0x6e2d('0x4d')]({'where':{'id':_0x4309f4[_0x6e2d('0x45')]['id']}})[_0x6e2d('0x26')](handleEntityNotFound(_0xb82f55,null))['then'](function(_0x19f74e){if(_0x19f74e){_0xc9c970=_0x19f74e;_0x30fc97[_0x6e2d('0x32')]=_[_0x6e2d('0x30')](db[_0x6e2d('0x4e')][_0x6e2d('0x46')]);_0x30fc97['query']=_['keys'](_0x4309f4[_0x6e2d('0x2f')]);_0x30fc97['filters']=_[_0x6e2d('0x31')](_0x30fc97[_0x6e2d('0x32')],_0x30fc97[_0x6e2d('0x2f')]);_0x59be64[_0x6e2d('0x34')]=_[_0x6e2d('0x31')](_0x30fc97['model'],qs[_0x6e2d('0x33')](_0x4309f4[_0x6e2d('0x2f')][_0x6e2d('0x33')]));_0x59be64[_0x6e2d('0x34')]=_0x59be64['attributes'][_0x6e2d('0x35')]?_0x59be64[_0x6e2d('0x34')]:_0x30fc97['model'];_0x59be64[_0x6e2d('0x38')]=qs[_0x6e2d('0x39')](_0x4309f4[_0x6e2d('0x2f')][_0x6e2d('0x39')]);_0x59be64['where']=qs[_0x6e2d('0x3b')](_['pick'](_0x4309f4['query'],_0x30fc97[_0x6e2d('0x3b')]));if(_0x4309f4[_0x6e2d('0x2f')][_0x6e2d('0x3d')]){_0x59be64[_0x6e2d('0x3a')]=_[_0x6e2d('0x3e')](_0x59be64[_0x6e2d('0x3a')],{'$or':_[_0x6e2d('0x2e')](_0x59be64['attributes'],function(_0x2fa3db){var _0xe08921={};_0xe08921[_0x2fa3db]={'$like':'%'+_0x4309f4[_0x6e2d('0x2f')][_0x6e2d('0x3d')]+'%'};return _0xe08921;})});}_0x59be64=_[_0x6e2d('0x3e')]({},_0x59be64,_0x4309f4['options']);return _0xc9c970[_0x6e2d('0x4c')](_0x59be64);}})['then'](function(_0x316300){if(_0x316300){_0x20ec5d=_0x316300['length'];if(!_0x4309f4[_0x6e2d('0x2f')][_0x6e2d('0x36')]('nolimit')){_0x59be64['limit']=qs['limit'](_0x4309f4['query']['limit']);_0x59be64[_0x6e2d('0x1d')]=qs[_0x6e2d('0x1d')](_0x4309f4['query'][_0x6e2d('0x1d')]);}return _0xc9c970[_0x6e2d('0x4c')](_0x59be64);}})['then'](function(_0x51e570){if(_0x51e570){return _0x51e570?{'count':_0x20ec5d,'rows':_0x51e570}:null;}})[_0x6e2d('0x26')](respondWithResult(_0xb82f55,null))[_0x6e2d('0x48')](handleError(_0xb82f55,null));};exports['addConfiguration']=function(_0x47b9b0,_0x572760,_0x1ea03e){if(_0x47b9b0[_0x6e2d('0x4a')]['id']){delete _0x47b9b0['body']['id'];}return db[_0x6e2d('0x2a')]['findOne']({'where':{'id':_0x47b9b0[_0x6e2d('0x45')]['id']}})[_0x6e2d('0x26')](handleEntityNotFound(_0x572760,null))[_0x6e2d('0x26')](function(_0x157580){if(_0x157580){_0x47b9b0[_0x6e2d('0x4a')][_0x6e2d('0x4f')]=_0x157580['id'];_0x47b9b0[_0x6e2d('0x4a')][_0x6e2d('0x50')]=integrations[_0x6e2d('0x51')](_0x47b9b0[_0x6e2d('0x4a')][_0x6e2d('0x52')],_0x47b9b0[_0x6e2d('0x4a')][_0x6e2d('0x2c')]);_0x47b9b0[_0x6e2d('0x4a')]['Descriptions']=integrations[_0x6e2d('0x53')](_0x47b9b0[_0x6e2d('0x4a')]['channel'],_0x47b9b0[_0x6e2d('0x4a')][_0x6e2d('0x2c')]);return db[_0x6e2d('0x4e')][_0x6e2d('0x49')](_0x47b9b0['body'],{'include':[{'model':db[_0x6e2d('0x54')],'as':_0x6e2d('0x50')},{'model':db['ServicenowField'],'as':'Descriptions'}]});}return null;})[_0x6e2d('0x26')](respondWithResult(_0x572760,null))[_0x6e2d('0x48')](handleError(_0x572760,null));};exports[_0x6e2d('0x55')]=function(_0x47d99c,_0x55118e,_0x503a11){var _0x5d3609=[_0x6e2d('0x56'),_0x6e2d('0x57'),'knowledge',_0x6e2d('0x58'),_0x6e2d('0x59'),_0x6e2d('0x5a'),_0x6e2d('0x5b'),_0x6e2d('0x5c'),_0x6e2d('0x5d')];var _0x5e2fe0=['parent',_0x6e2d('0x56'),_0x6e2d('0x5e'),_0x6e2d('0x5f'),_0x6e2d('0x60'),_0x6e2d('0x61'),_0x6e2d('0x62'),_0x6e2d('0x57'),_0x6e2d('0x63'),_0x6e2d('0x64'),_0x6e2d('0x65'),_0x6e2d('0x66'),_0x6e2d('0x67'),_0x6e2d('0x68'),_0x6e2d('0x69'),_0x6e2d('0x6a'),_0x6e2d('0x6b'),_0x6e2d('0x6c'),_0x6e2d('0x6d'),'order',_0x6e2d('0x6e'),_0x6e2d('0x6f'),_0x6e2d('0x70'),_0x6e2d('0x71'),_0x6e2d('0x72'),_0x6e2d('0x73'),_0x6e2d('0x74'),_0x6e2d('0x75'),_0x6e2d('0x76'),_0x6e2d('0x77'),'rfc','time_worked',_0x6e2d('0x78'),_0x6e2d('0x79'),_0x6e2d('0x7a'),_0x6e2d('0x7b'),_0x6e2d('0x7c'),_0x6e2d('0x7d'),_0x6e2d('0x7e'),_0x6e2d('0x7f'),'approval_set',_0x6e2d('0x58'),'work_notes','short_description',_0x6e2d('0x59'),_0x6e2d('0x80'),_0x6e2d('0x81'),'work_start',_0x6e2d('0x82'),_0x6e2d('0x83'),_0x6e2d('0x84'),_0x6e2d('0x85'),'calendar_duration',_0x6e2d('0x5a'),'sys_class_name',_0x6e2d('0x86'),'closed_by','follow_up','parent_incident',_0x6e2d('0x87'),_0x6e2d('0x88'),_0x6e2d('0x89'),_0x6e2d('0x5b'),_0x6e2d('0x8a'),_0x6e2d('0x8b'),_0x6e2d('0x8c'),_0x6e2d('0x8d'),_0x6e2d('0x8e'),_0x6e2d('0x8f'),_0x6e2d('0x5c'),_0x6e2d('0x90'),_0x6e2d('0x91'),'approval',_0x6e2d('0x92'),_0x6e2d('0x93'),_0x6e2d('0x94'),_0x6e2d('0x95'),_0x6e2d('0x96'),'escalation',_0x6e2d('0x97'),'correlation_id',_0x6e2d('0x98'),_0x6e2d('0x5d')];var _0x5caf93='';var _0x3ab3c6='';var _0x1949d9=[];var _0x984a25='';var _0x1f1211='';var _0x4c9033=[];var _0x1f00b4='';var _0x2108d8='';var _0x4317ac={};var _0x159244='';return db[_0x6e2d('0x2a')]['findOne']({'where':{'id':_0x47d99c[_0x6e2d('0x45')]['id']},'attributes':['id',_0x6e2d('0x99'),'password',_0x6e2d('0x9a'),_0x6e2d('0x9b'),_0x6e2d('0x9c')]})['then'](handleEntityNotFound(_0x55118e,null))[_0x6e2d('0x26')](function(_0x79a0ce){if(_0x79a0ce){_0x159244=_0x79a0ce[_0x6e2d('0x9b')];var _0x436f7c=_0x159244[_0x6e2d('0x9d')](-0x1);if(_0x436f7c==='/'){_0x159244=_0x159244['substring'](0x0,_0x159244[_0x6e2d('0x9e')](_0x436f7c));}_0x2108d8=util['format']('%s/api/now/doc/table/schema/',_0x159244);_0x1f00b4=util['format'](_0x6e2d('0x9f'),_0x159244);_0x4317ac={'user':_0x79a0ce[_0x6e2d('0x99')],'pass':_0x79a0ce[_0x6e2d('0xa0')]};var _0x550070={'method':_0x6e2d('0xa1'),'uri':_0x2108d8+_0x6e2d('0xa2'),'auth':_0x4317ac,'json':!![]};return rp(_0x550070);}})[_0x6e2d('0x26')](function(_0x45dd2c){if(_0x45dd2c[_0x6e2d('0xa3')][_0x6e2d('0x35')]>0x0){_0x5caf93=_0x45dd2c['result'];}console[_0x6e2d('0xa4')](_0x6e2d('0xa5'),_0x5caf93);_0x4c9033=[];_0x3ab3c6=Object[_0x6e2d('0xa6')]([],_0x5caf93);_['remove'](_0x3ab3c6,function(_0x30b33d){return!_0x5d3609[_0x6e2d('0xa7')](_0x30b33d[_0x6e2d('0x28')]);});_0x3ab3c6['forEach'](function(_0x4d9230){var _0x474191=createFieldObject(_0x1f00b4,_0x4317ac,_0x4d9230[_0x6e2d('0xa8')],_0x4d9230['name'],_0x4d9230[_0x6e2d('0xa9')],![]);_0x4c9033[_0x6e2d('0xaa')](_0x474191);});return Promise[_0x6e2d('0xab')](_0x4c9033);})[_0x6e2d('0x26')](function(_0x21708b){_0x1949d9=_0x21708b;_0x984a25=Object[_0x6e2d('0xa6')]([],_0x5caf93);console['log'](_0x6e2d('0xac'),_0x5caf93);_[_0x6e2d('0xad')](_0x984a25,function(_0x5af5b4){return _0x5e2fe0[_0x6e2d('0xa7')](_0x5af5b4['name']);});console[_0x6e2d('0xa4')](_0x6e2d('0xae'),_0x984a25);_0x4c9033=[];_0x984a25[_0x6e2d('0xaf')](function(_0x359dec){var _0x5f119d=createFieldObject(_0x1f00b4,_0x4317ac,_0x359dec[_0x6e2d('0xa8')],_0x359dec[_0x6e2d('0x28')],_0x359dec[_0x6e2d('0xa9')],!![]);_0x4c9033[_0x6e2d('0xaa')](_0x5f119d);});return Promise[_0x6e2d('0xab')](_0x4c9033);})[_0x6e2d('0x26')](function(_0x4d14a1){_0x1f1211=_0x4d14a1;var _0x31e642=_0x1949d9[_0x6e2d('0xb0')](_0x1f1211);return{'count':_0x31e642[_0x6e2d('0x35')],'rows':_0x31e642};})[_0x6e2d('0x26')](respondWithResult(_0x55118e,null))[_0x6e2d('0x48')](function(_0x270b6a){console['log']('ServiceNow\x20error:\x20'+_0x270b6a);var _0x2e8163=_0x47d99c[_0x6e2d('0x2f')][_0x6e2d('0xb1')]?0x1f4:_0x270b6a['statusCode']||0x1f4;logger[_0x6e2d('0x27')](_0x270b6a[_0x6e2d('0xb2')]);delete _0x270b6a[_0x6e2d('0x28')];if(_0x2e8163===0x191){_0x2e8163=0x190;}_0x55118e[_0x6e2d('0x1b')](_0x2e8163)[_0x6e2d('0x29')](_0x47d99c[_0x6e2d('0x2f')][_0x6e2d('0xb1')]?{'message':_0x6e2d('0xb3'),'statusCode':_0x270b6a[_0x6e2d('0xb4')]}:_0x270b6a);});};function createFieldObject(_0x4d7b3f,_0x3472ef,_0x5445f8,_0x3d32f5,_0x49ae23,_0x2623d0){return new Promise(function(_0x58586f,_0x7cdb4d){var _0x296b2a={'id':_0x3d32f5,'name':_0x49ae23,'custom':_0x2623d0};if(_0x5445f8===_0x6e2d('0xb5')){_0x296b2a[_0x6e2d('0x40')]=[{'name':_0x6e2d('0xb6'),'value':_0x6e2d('0xb7')},{'name':_0x6e2d('0xb8'),'value':'false'}];_0x58586f(_0x296b2a);}else{var _0x1cabdc={'method':_0x6e2d('0xa1'),'uri':_0x4d7b3f+'sys_choice?sysparm_query=name=incident^element='+_0x3d32f5,'auth':_0x3472ef,'json':!![]};return rp(_0x1cabdc)[_0x6e2d('0x26')](function(_0xe5eb16){var _0x16132b=[];if(_0xe5eb16['result'][_0x6e2d('0x35')]>0x0){_0xe5eb16[_0x6e2d('0xa3')][_0x6e2d('0xaf')](function(_0x50208a){if(_0x50208a[_0x6e2d('0xb9')]===_0x6e2d('0xba')){var _0x383bc5={'name':_0x50208a[_0x6e2d('0xa9')],'value':_0x50208a[_0x6e2d('0xbb')]};_0x16132b[_0x6e2d('0xaa')](_0x383bc5);}});}_0x296b2a[_0x6e2d('0x40')]=_0x16132b;if(_0x296b2a[_0x6e2d('0x40')]['length']>0x0){_0x58586f(_0x296b2a);}else{if(_0x2623d0==![]){_0x58586f();}else{_0x58586f(_0x296b2a);}}});}});}
\ No newline at end of file
index 3569e51..703227e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intServicenowAccount.attributes','../../components/integrations/configuration','exports','define','ServicenowAccount','int_servicenow_accounts','lodash'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x326f,0xd1));var _0xf326=function(_0x815f87,_0x4ca49d){_0x815f87=_0x815f87-0x0;var _0x401562=_0x326f[_0x815f87];return _0x401562;};'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'));var integrations=require(_0xf326('0x9'));module[_0xf326('0xa')]=function(_0x4c2249,_0x3c254d){return _0x4c2249[_0xf326('0xb')](_0xf326('0xc'),attributes,{'tableName':_0xf326('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8958=['exports','define','ServicenowAccount','util','request-promise','rimraf','../../config/environment','./intServicenowAccount.attributes'];(function(_0xb36ea0,_0x3ec0a4){var _0x434003=function(_0x58b8c4){while(--_0x58b8c4){_0xb36ea0['push'](_0xb36ea0['shift']());}};_0x434003(++_0x3ec0a4);}(_0x8958,0x93));var _0x8895=function(_0x46b832,_0x454e18){_0x46b832=_0x46b832-0x0;var _0x42b328=_0x8958[_0x46b832];return _0x42b328;};'use strict';var _=require('lodash');var util=require(_0x8895('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8895('0x1'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8895('0x2'));var config=require(_0x8895('0x3'));var attributes=require(_0x8895('0x4'));var integrations=require('../../components/integrations/configuration');module[_0x8895('0x5')]=function(_0x2f03ad,_0x124e1e){return _0x2f03ad[_0x8895('0x6')](_0x8895('0x7'),attributes,{'tableName':'int_servicenow_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cea05a0..cb7aadb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa811=['map','model','ShowServicenowAccount','find','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','ServicenowAccount,\x20%s,\x20%s','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','GetServicenowAccount','options','raw','where','attributes','limit','include'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xa811,0xb8));var _0x1a81=function(_0x48d7c5,_0xda1470){_0x48d7c5=_0x48d7c5-0x0;var _0x4a5df1=_0xa811[_0x48d7c5];return _0x4a5df1;};'use strict';var _=require(_0x1a81('0x0'));var util=require(_0x1a81('0x1'));var moment=require(_0x1a81('0x2'));var BPromise=require(_0x1a81('0x3'));var rs=require(_0x1a81('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1a81('0x5'))['db'];var utils=require(_0x1a81('0x6'));var logger=require(_0x1a81('0x7'))(_0x1a81('0x8'));var config=require(_0x1a81('0x9'));var jayson=require(_0x1a81('0xa'));var client=jayson[_0x1a81('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x359969,_0x32ce34,_0x3ba4d3){return new BPromise(function(_0x302fb3,_0xe628f){return client[_0x1a81('0xc')](_0x359969,_0x3ba4d3)[_0x1a81('0xd')](function(_0x18d623){logger[_0x1a81('0xe')](_0x1a81('0xf'),_0x32ce34,'request\x20sent');logger[_0x1a81('0x10')](_0x1a81('0x11'),_0x32ce34,'request\x20sent',JSON[_0x1a81('0x12')](_0x18d623));if(_0x18d623[_0x1a81('0x13')]){if(_0x18d623[_0x1a81('0x13')][_0x1a81('0x14')]===0x1f4){logger[_0x1a81('0x13')](_0x1a81('0xf'),_0x32ce34,_0x18d623[_0x1a81('0x13')][_0x1a81('0x15')]);return _0xe628f(_0x18d623[_0x1a81('0x13')][_0x1a81('0x15')]);}logger[_0x1a81('0x13')]('ServicenowAccount,\x20%s,\x20%s',_0x32ce34,_0x18d623[_0x1a81('0x13')][_0x1a81('0x15')]);return _0x302fb3(_0x18d623[_0x1a81('0x13')][_0x1a81('0x15')]);}else{logger[_0x1a81('0xe')]('ServicenowAccount,\x20%s,\x20%s',_0x32ce34,_0x1a81('0x16'));_0x302fb3(_0x18d623[_0x1a81('0x17')]['message']);}})[_0x1a81('0x18')](function(_0x3b2d5c){logger[_0x1a81('0x13')](_0x1a81('0xf'),_0x32ce34,_0x3b2d5c);_0xe628f(_0x3b2d5c);});});}exports[_0x1a81('0x19')]=function(_0x2969c3){var _0x56536d=this;return new Promise(function(_0x3cf884,_0x360dad){return db['ServicenowAccount']['findAll']({'raw':_0x2969c3[_0x1a81('0x1a')]?_0x2969c3['options'][_0x1a81('0x1b')]===undefined?!![]:![]:!![],'where':_0x2969c3[_0x1a81('0x1a')]?_0x2969c3['options'][_0x1a81('0x1c')]||null:null,'attributes':_0x2969c3[_0x1a81('0x1a')]?_0x2969c3[_0x1a81('0x1a')][_0x1a81('0x1d')]||null:null,'limit':_0x2969c3[_0x1a81('0x1a')]?_0x2969c3[_0x1a81('0x1a')][_0x1a81('0x1e')]||null:null,'include':_0x2969c3[_0x1a81('0x1a')]?_0x2969c3[_0x1a81('0x1a')][_0x1a81('0x1f')]?_[_0x1a81('0x20')](_0x2969c3[_0x1a81('0x1a')]['include'],function(_0x5e32f7){return{'model':db[_0x5e32f7['model']],'as':_0x5e32f7['as'],'attributes':_0x5e32f7[_0x1a81('0x1d')],'include':_0x5e32f7[_0x1a81('0x1f')]?_[_0x1a81('0x20')](_0x5e32f7[_0x1a81('0x1f')],function(_0xa20b87){return{'model':db[_0xa20b87[_0x1a81('0x21')]],'as':_0xa20b87['as'],'attributes':_0xa20b87[_0x1a81('0x1d')],'include':_0xa20b87[_0x1a81('0x1f')]?_[_0x1a81('0x20')](_0xa20b87[_0x1a81('0x1f')],function(_0x583ab2){return{'model':db[_0x583ab2[_0x1a81('0x21')]],'as':_0x583ab2['as'],'attributes':_0x583ab2[_0x1a81('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4d50ce){logger[_0x1a81('0xe')](_0x1a81('0x19'),_0x2969c3);logger['debug'](_0x1a81('0x19'),_0x2969c3,JSON[_0x1a81('0x12')](_0x4d50ce));_0x3cf884(_0x4d50ce);})['catch'](function(_0x2dd6c8){logger[_0x1a81('0x13')](_0x1a81('0x19'),_0x2dd6c8[_0x1a81('0x15')],_0x2969c3);_0x360dad(_0x56536d[_0x1a81('0x13')](0x1f4,_0x2dd6c8['message']));});});};exports[_0x1a81('0x22')]=function(_0x92251f){var _0x31c389=this;return new Promise(function(_0x3d5e74,_0x4636c5){return db['ServicenowAccount'][_0x1a81('0x23')]({'raw':_0x92251f['options']?_0x92251f[_0x1a81('0x1a')][_0x1a81('0x1b')]===undefined?!![]:![]:!![],'where':_0x92251f[_0x1a81('0x1a')]?_0x92251f['options']['where']||null:null,'attributes':_0x92251f[_0x1a81('0x1a')]?_0x92251f['options'][_0x1a81('0x1d')]||null:null,'include':_0x92251f[_0x1a81('0x1a')]?_0x92251f[_0x1a81('0x1a')][_0x1a81('0x1f')]?_[_0x1a81('0x20')](_0x92251f[_0x1a81('0x1a')][_0x1a81('0x1f')],function(_0x114b9f){return{'model':db[_0x114b9f[_0x1a81('0x21')]],'as':_0x114b9f['as'],'attributes':_0x114b9f[_0x1a81('0x1d')],'include':_0x114b9f[_0x1a81('0x1f')]?_['map'](_0x114b9f[_0x1a81('0x1f')],function(_0x30c10b){return{'model':db[_0x30c10b['model']],'as':_0x30c10b['as'],'attributes':_0x30c10b['attributes'],'include':_0x30c10b[_0x1a81('0x1f')]?_['map'](_0x30c10b[_0x1a81('0x1f')],function(_0x42b993){return{'model':db[_0x42b993['model']],'as':_0x42b993['as'],'attributes':_0x42b993['attributes']};}):[]};}):[]};}):[]:[]})[_0x1a81('0xd')](function(_0x403885){logger[_0x1a81('0xe')](_0x1a81('0x22'),_0x92251f);logger['debug'](_0x1a81('0x22'),_0x92251f,JSON[_0x1a81('0x12')](_0x403885));_0x3d5e74(_0x403885);})[_0x1a81('0x18')](function(_0x33ce9e){logger[_0x1a81('0x13')](_0x1a81('0x22'),_0x33ce9e['message'],_0x92251f);_0x4636c5(_0x31c389[_0x1a81('0x13')](0x1f4,_0x33ce9e[_0x1a81('0x15')]));});});};
\ No newline at end of file
+var _0xa468=['map','ShowServicenowAccount','find','raw','util','moment','bluebird','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','info','ServicenowAccount,\x20%s,\x20%s','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetServicenowAccount','options','where','attributes','limit','include','model'];(function(_0x4d6bfd,_0x8d79ff){var _0x243a46=function(_0x3883b1){while(--_0x3883b1){_0x4d6bfd['push'](_0x4d6bfd['shift']());}};_0x243a46(++_0x8d79ff);}(_0xa468,0x9f));var _0x8a46=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xa468[_0x3b380d];return _0x54502b;};'use strict';var _=require('lodash');var util=require(_0x8a46('0x0'));var moment=require(_0x8a46('0x1'));var BPromise=require(_0x8a46('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8a46('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x8a46('0x4'))('rpc');var config=require(_0x8a46('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x8a46('0x6')][_0x8a46('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1e8878,_0x32e678,_0x3b7cb1){return new BPromise(function(_0x55d7cb,_0x43d0c8){return client[_0x8a46('0x8')](_0x1e8878,_0x3b7cb1)[_0x8a46('0x9')](function(_0x275f13){logger[_0x8a46('0xa')](_0x8a46('0xb'),_0x32e678,'request\x20sent');logger[_0x8a46('0xc')](_0x8a46('0xd'),_0x32e678,_0x8a46('0xe'),JSON[_0x8a46('0xf')](_0x275f13));if(_0x275f13[_0x8a46('0x10')]){if(_0x275f13[_0x8a46('0x10')][_0x8a46('0x11')]===0x1f4){logger[_0x8a46('0x10')](_0x8a46('0xb'),_0x32e678,_0x275f13['error'][_0x8a46('0x12')]);return _0x43d0c8(_0x275f13[_0x8a46('0x10')]['message']);}logger[_0x8a46('0x10')](_0x8a46('0xb'),_0x32e678,_0x275f13['error'][_0x8a46('0x12')]);return _0x55d7cb(_0x275f13[_0x8a46('0x10')][_0x8a46('0x12')]);}else{logger[_0x8a46('0xa')](_0x8a46('0xb'),_0x32e678,_0x8a46('0xe'));_0x55d7cb(_0x275f13['result'][_0x8a46('0x12')]);}})[_0x8a46('0x13')](function(_0x501c8c){logger[_0x8a46('0x10')](_0x8a46('0xb'),_0x32e678,_0x501c8c);_0x43d0c8(_0x501c8c);});});}exports[_0x8a46('0x14')]=function(_0x45f153){var _0x2a3f21=this;return new Promise(function(_0x26f586,_0x196db2){return db['ServicenowAccount']['findAll']({'raw':_0x45f153[_0x8a46('0x15')]?_0x45f153['options']['raw']===undefined?!![]:![]:!![],'where':_0x45f153[_0x8a46('0x15')]?_0x45f153[_0x8a46('0x15')][_0x8a46('0x16')]||null:null,'attributes':_0x45f153[_0x8a46('0x15')]?_0x45f153[_0x8a46('0x15')][_0x8a46('0x17')]||null:null,'limit':_0x45f153[_0x8a46('0x15')]?_0x45f153[_0x8a46('0x15')][_0x8a46('0x18')]||null:null,'include':_0x45f153[_0x8a46('0x15')]?_0x45f153[_0x8a46('0x15')][_0x8a46('0x19')]?_['map'](_0x45f153['options']['include'],function(_0x1af76e){return{'model':db[_0x1af76e[_0x8a46('0x1a')]],'as':_0x1af76e['as'],'attributes':_0x1af76e[_0x8a46('0x17')],'include':_0x1af76e['include']?_[_0x8a46('0x1b')](_0x1af76e[_0x8a46('0x19')],function(_0x5a5f72){return{'model':db[_0x5a5f72['model']],'as':_0x5a5f72['as'],'attributes':_0x5a5f72[_0x8a46('0x17')],'include':_0x5a5f72[_0x8a46('0x19')]?_[_0x8a46('0x1b')](_0x5a5f72[_0x8a46('0x19')],function(_0x185bc3){return{'model':db[_0x185bc3['model']],'as':_0x185bc3['as'],'attributes':_0x185bc3[_0x8a46('0x17')]};}):[]};}):[]};}):[]:[]})[_0x8a46('0x9')](function(_0x388ce1){logger[_0x8a46('0xa')](_0x8a46('0x14'),_0x45f153);logger[_0x8a46('0xc')](_0x8a46('0x14'),_0x45f153,JSON[_0x8a46('0xf')](_0x388ce1));_0x26f586(_0x388ce1);})['catch'](function(_0x1adf5e){logger[_0x8a46('0x10')](_0x8a46('0x14'),_0x1adf5e['message'],_0x45f153);_0x196db2(_0x2a3f21[_0x8a46('0x10')](0x1f4,_0x1adf5e[_0x8a46('0x12')]));});});};exports[_0x8a46('0x1c')]=function(_0x4c1322){var _0x1b9891=this;return new Promise(function(_0xd37729,_0x561476){return db['ServicenowAccount'][_0x8a46('0x1d')]({'raw':_0x4c1322[_0x8a46('0x15')]?_0x4c1322[_0x8a46('0x15')][_0x8a46('0x1e')]===undefined?!![]:![]:!![],'where':_0x4c1322[_0x8a46('0x15')]?_0x4c1322[_0x8a46('0x15')][_0x8a46('0x16')]||null:null,'attributes':_0x4c1322[_0x8a46('0x15')]?_0x4c1322['options'][_0x8a46('0x17')]||null:null,'include':_0x4c1322['options']?_0x4c1322[_0x8a46('0x15')][_0x8a46('0x19')]?_[_0x8a46('0x1b')](_0x4c1322[_0x8a46('0x15')][_0x8a46('0x19')],function(_0x20e018){return{'model':db[_0x20e018[_0x8a46('0x1a')]],'as':_0x20e018['as'],'attributes':_0x20e018[_0x8a46('0x17')],'include':_0x20e018[_0x8a46('0x19')]?_[_0x8a46('0x1b')](_0x20e018['include'],function(_0x11664b){return{'model':db[_0x11664b['model']],'as':_0x11664b['as'],'attributes':_0x11664b['attributes'],'include':_0x11664b[_0x8a46('0x19')]?_[_0x8a46('0x1b')](_0x11664b['include'],function(_0x5a9a0c){return{'model':db[_0x5a9a0c[_0x8a46('0x1a')]],'as':_0x5a9a0c['as'],'attributes':_0x5a9a0c['attributes']};}):[]};}):[]};}):[]:[]})[_0x8a46('0x9')](function(_0xef74a3){logger['info'](_0x8a46('0x1c'),_0x4c1322);logger['debug'](_0x8a46('0x1c'),_0x4c1322,JSON[_0x8a46('0xf')](_0xef74a3));_0xd37729(_0xef74a3);})[_0x8a46('0x13')](function(_0x4bf9cd){logger[_0x8a46('0x10')](_0x8a46('0x1c'),_0x4bf9cd[_0x8a46('0x12')],_0x4c1322);_0x561476(_0x1b9891[_0x8a46('0x10')](0x1f4,_0x4bf9cd['message']));});});};
\ No newline at end of file
index 5cbabf0..0ff2d13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd79=['../../components/auth/service','../../components/interaction/service','./intServicenowConfiguration.controller','get','isAuthenticated','index','getFields','getDescriptions','post','update','delete','/:id','destroy','exports','connect-timeout','Router'];(function(_0x4fd020,_0x3b5df3){var _0x50e5d3=function(_0x1da3e4){while(--_0x1da3e4){_0x4fd020['push'](_0x4fd020['shift']());}};_0x50e5d3(++_0x3b5df3);}(_0xfd79,0x17e));var _0x9fd7=function(_0x953124,_0x318370){_0x953124=_0x953124-0x0;var _0x5a0757=_0xfd79[_0x953124];return _0x5a0757;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x9fd7('0x0'));var express=require('express');var router=express[_0x9fd7('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0x9fd7('0x2'));var interaction=require(_0x9fd7('0x3'));var config=require('../../config/environment');var controller=require(_0x9fd7('0x4'));router[_0x9fd7('0x5')]('/',auth[_0x9fd7('0x6')](),controller[_0x9fd7('0x7')]);router[_0x9fd7('0x5')]('/:id',auth[_0x9fd7('0x6')](),controller['show']);router['get']('/:id/fields',auth[_0x9fd7('0x6')](),controller[_0x9fd7('0x8')]);router[_0x9fd7('0x5')]('/:id/subjects',auth[_0x9fd7('0x6')](),controller['getSubjects']);router[_0x9fd7('0x5')]('/:id/descriptions',auth[_0x9fd7('0x6')](),controller[_0x9fd7('0x9')]);router[_0x9fd7('0xa')]('/',auth[_0x9fd7('0x6')](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x9fd7('0xb')]);router[_0x9fd7('0xc')](_0x9fd7('0xd'),auth['isAuthenticated'](),controller[_0x9fd7('0xe')]);module[_0x9fd7('0xf')]=router;
\ No newline at end of file
+var _0x082d=['getFields','/:id/descriptions','post','create','put','update','delete','exports','multer','util','path','connect-timeout','express','../../config/environment','./intServicenowConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x082d,0x197));var _0xd082=function(_0x1203f,_0x554bbc){_0x1203f=_0x1203f-0x0;var _0x365f0a=_0x082d[_0x1203f];return _0x365f0a;};'use strict';var multer=require(_0xd082('0x0'));var util=require(_0xd082('0x1'));var path=require(_0xd082('0x2'));var timeout=require(_0xd082('0x3'));var express=require(_0xd082('0x4'));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(_0xd082('0x5'));var controller=require(_0xd082('0x6'));router[_0xd082('0x7')]('/',auth['isAuthenticated'](),controller[_0xd082('0x8')]);router[_0xd082('0x7')](_0xd082('0x9'),auth[_0xd082('0xa')](),controller[_0xd082('0xb')]);router[_0xd082('0x7')](_0xd082('0xc'),auth[_0xd082('0xa')](),controller[_0xd082('0xd')]);router['get']('/:id/subjects',auth[_0xd082('0xa')](),controller['getSubjects']);router[_0xd082('0x7')](_0xd082('0xe'),auth[_0xd082('0xa')](),controller['getDescriptions']);router[_0xd082('0xf')]('/',auth[_0xd082('0xa')](),controller[_0xd082('0x10')]);router[_0xd082('0x11')]('/:id',auth['isAuthenticated'](),controller[_0xd082('0x12')]);router[_0xd082('0x13')](_0xd082('0x9'),auth['isAuthenticated'](),controller['destroy']);module[_0xd082('0x14')]=router;
\ No newline at end of file
index 037797b..fdb23d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad29=['STRING','sequelize'];(function(_0x5db940,_0x953359){var _0x3ac3fa=function(_0x2270f1){while(--_0x2270f1){_0x5db940['push'](_0x5db940['shift']());}};_0x3ac3fa(++_0x953359);}(_0xad29,0x9b));var _0x9ad2=function(_0x21d0c3,_0x16c71c){_0x21d0c3=_0x21d0c3-0x0;var _0x4df18e=_0xad29[_0x21d0c3];return _0x4df18e;};'use strict';var Sequelize=require(_0x9ad2('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x9ad2('0x1')]}};
\ No newline at end of file
+var _0x7ce9=['sequelize','exports','STRING'];(function(_0x1739ec,_0x297362){var _0x5cf0ca=function(_0x31b931){while(--_0x31b931){_0x1739ec['push'](_0x1739ec['shift']());}};_0x5cf0ca(++_0x297362);}(_0x7ce9,0x174));var _0x97ce=function(_0x455893,_0x909838){_0x455893=_0x455893-0x0;var _0x3851e8=_0x7ce9[_0x455893];return _0x3851e8;};'use strict';var Sequelize=require(_0x97ce('0x0'));module[_0x97ce('0x1')]={'name':{'type':Sequelize[_0x97ce('0x2')]},'description':{'type':Sequelize[_0x97ce('0x2')]}};
\ No newline at end of file
index 092978f..a9a1076 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x722a=['params','keys','rawAttributes','includeAll','include','find','catch','create','body','getFields','ServicenowField','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','destroy','error','stack','name','send','ServicenowConfiguration','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','findAll','then','rows'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0x722a,0x161));var _0xa722=function(_0x24ea27,_0x2968b8){_0x24ea27=_0x24ea27-0x0;var _0x28d872=_0x722a[_0x24ea27];return _0x28d872;};'use strict';var emlformat=require(_0xa722('0x0'));var rimraf=require(_0xa722('0x1'));var zipdir=require(_0xa722('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa722('0x3'));var moment=require(_0xa722('0x4'));var BPromise=require(_0xa722('0x5'));var Mustache=require(_0xa722('0x6'));var util=require('util');var path=require(_0xa722('0x7'));var sox=require(_0xa722('0x8'));var csv=require(_0xa722('0x9'));var ejs=require(_0xa722('0xa'));var fs=require('fs');var fs_extra=require(_0xa722('0xb'));var _=require(_0xa722('0xc'));var squel=require(_0xa722('0xd'));var crypto=require(_0xa722('0xe'));var jsforce=require(_0xa722('0xf'));var deskjs=require(_0xa722('0x10'));var toCsv=require(_0xa722('0x9'));var querystring=require(_0xa722('0x11'));var Papa=require('papaparse');var Redis=require(_0xa722('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xa722('0x13'));var as=require(_0xa722('0x14'));var hardwareService=require(_0xa722('0x15'));var logger=require(_0xa722('0x16'))(_0xa722('0x17'));var utils=require(_0xa722('0x18'));var config=require(_0xa722('0x19'));var licenseUtil=require(_0xa722('0x1a'));var db=require(_0xa722('0x1b'))['db'];function respondWithStatusCode(_0x46d699,_0x303570){_0x303570=_0x303570||0xcc;return function(_0x256f41){if(_0x256f41){return _0x46d699[_0xa722('0x1c')](_0x303570);}return _0x46d699[_0xa722('0x1d')](_0x303570)[_0xa722('0x1e')]();};}function respondWithResult(_0x1a410e,_0x3ade47){_0x3ade47=_0x3ade47||0xc8;return function(_0x1cd08c){if(_0x1cd08c){return _0x1a410e[_0xa722('0x1d')](_0x3ade47)[_0xa722('0x1f')](_0x1cd08c);}};}function respondWithFilteredResult(_0x25cc5a,_0x15ade5){return function(_0x5873f7){if(_0x5873f7){var _0x12ade9=typeof _0x15ade5['offset']===_0xa722('0x20')&&typeof _0x15ade5[_0xa722('0x21')]===_0xa722('0x20');var _0x16869e=_0x5873f7['count'];var _0x5cf0e=_0x12ade9?0x0:_0x15ade5[_0xa722('0x22')];var _0x1d02bd=_0x12ade9?_0x5873f7[_0xa722('0x23')]:_0x15ade5[_0xa722('0x22')]+_0x15ade5[_0xa722('0x21')];var _0x4a1b95;if(_0x1d02bd>=_0x16869e){_0x1d02bd=_0x16869e;_0x4a1b95=0xc8;}else{_0x4a1b95=0xce;}_0x25cc5a['status'](_0x4a1b95);return _0x25cc5a[_0xa722('0x24')](_0xa722('0x25'),_0x5cf0e+'-'+_0x1d02bd+'/'+_0x16869e)[_0xa722('0x1f')](_0x5873f7);}return null;};}function patchUpdates(_0x5108e4){return function(_0x33070b){try{jsonpatch[_0xa722('0x26')](_0x33070b,_0x5108e4,!![]);}catch(_0x464251){return BPromise[_0xa722('0x27')](_0x464251);}return _0x33070b[_0xa722('0x28')]();};}function saveUpdates(_0x25ff5f,_0x51ff01){return function(_0x2400e6){if(_0x2400e6){return _0x2400e6[_0xa722('0x29')](_0x25ff5f)['then'](function(_0x28635e){return _0x28635e;});}return null;};}function removeEntity(_0x111a87,_0xba8151){return function(_0x46a97b){if(_0x46a97b){return _0x46a97b[_0xa722('0x2a')]()['then'](function(){_0x111a87['status'](0xcc)[_0xa722('0x1e')]();});}};}function handleEntityNotFound(_0x1bf2c6,_0x43f489){return function(_0x49803c){if(!_0x49803c){_0x1bf2c6['sendStatus'](0x194);}return _0x49803c;};}function handleError(_0x5cab96,_0x14d464){_0x14d464=_0x14d464||0x1f4;return function(_0x53f611){logger[_0xa722('0x2b')](_0x53f611[_0xa722('0x2c')]);if(_0x53f611[_0xa722('0x2d')]){delete _0x53f611[_0xa722('0x2d')];}_0x5cab96['status'](_0x14d464)[_0xa722('0x2e')](_0x53f611);};}exports['index']=function(_0x2dadf8,_0x87e036){var _0x527abc={},_0x7945d0={},_0x4a68ed={'count':0x0,'rows':[]};var _0x2727db=_['map'](db[_0xa722('0x2f')]['rawAttributes'],function(_0x5e0e2b){return{'name':_0x5e0e2b[_0xa722('0x30')],'type':_0x5e0e2b[_0xa722('0x31')][_0xa722('0x32')]};});_0x7945d0[_0xa722('0x33')]=_[_0xa722('0x34')](_0x2727db,_0xa722('0x2d'));_0x7945d0[_0xa722('0x35')]=_['keys'](_0x2dadf8[_0xa722('0x35')]);_0x7945d0[_0xa722('0x36')]=_[_0xa722('0x37')](_0x7945d0['model'],_0x7945d0[_0xa722('0x35')]);_0x527abc[_0xa722('0x38')]=_[_0xa722('0x37')](_0x7945d0[_0xa722('0x33')],qs[_0xa722('0x39')](_0x2dadf8['query'][_0xa722('0x39')]));_0x527abc[_0xa722('0x38')]=_0x527abc[_0xa722('0x38')][_0xa722('0x3a')]?_0x527abc[_0xa722('0x38')]:_0x7945d0['model'];if(!_0x2dadf8[_0xa722('0x35')][_0xa722('0x3b')](_0xa722('0x3c'))){_0x527abc['limit']=qs[_0xa722('0x21')](_0x2dadf8['query'][_0xa722('0x21')]);_0x527abc[_0xa722('0x22')]=qs[_0xa722('0x22')](_0x2dadf8[_0xa722('0x35')]['offset']);}_0x527abc[_0xa722('0x3d')]=qs[_0xa722('0x3e')](_0x2dadf8[_0xa722('0x35')]['sort']);_0x527abc[_0xa722('0x3f')]=qs['filters'](_[_0xa722('0x40')](_0x2dadf8[_0xa722('0x35')],_0x7945d0['filters']),_0x2727db);if(_0x2dadf8[_0xa722('0x35')][_0xa722('0x41')]){_0x527abc[_0xa722('0x3f')]=_['merge'](_0x527abc['where'],{'$or':_['map'](_0x2727db,function(_0x59bf68){if(_0x59bf68[_0xa722('0x31')]!==_0xa722('0x42')){var _0x4b31f7={};_0x4b31f7[_0x59bf68[_0xa722('0x2d')]]={'$like':'%'+_0x2dadf8[_0xa722('0x35')]['filter']+'%'};return _0x4b31f7;}})});}_0x527abc=_[_0xa722('0x43')]({},_0x527abc,_0x2dadf8[_0xa722('0x44')]);var _0x1caeed={'where':_0x527abc['where']};return db[_0xa722('0x2f')]['count'](_0x1caeed)['then'](function(_0x1ca646){_0x4a68ed[_0xa722('0x23')]=_0x1ca646;if(_0x2dadf8[_0xa722('0x35')]['includeAll']){_0x527abc['include']=[{'all':!![]}];}return db['ServicenowConfiguration'][_0xa722('0x45')](_0x527abc);})[_0xa722('0x46')](function(_0xf19cd2){_0x4a68ed[_0xa722('0x47')]=_0xf19cd2;return _0x4a68ed;})['then'](respondWithFilteredResult(_0x87e036,_0x527abc))['catch'](handleError(_0x87e036,null));};exports['show']=function(_0x2921d5,_0x194931){var _0x2050f1={'raw':![],'where':{'id':_0x2921d5[_0xa722('0x48')]['id']}},_0x33a89c={};_0x33a89c[_0xa722('0x33')]=_[_0xa722('0x49')](db['ServicenowConfiguration'][_0xa722('0x4a')]);_0x33a89c[_0xa722('0x35')]=_[_0xa722('0x49')](_0x2921d5[_0xa722('0x35')]);_0x33a89c[_0xa722('0x36')]=_[_0xa722('0x37')](_0x33a89c[_0xa722('0x33')],_0x33a89c[_0xa722('0x35')]);_0x2050f1[_0xa722('0x38')]=_[_0xa722('0x37')](_0x33a89c[_0xa722('0x33')],qs[_0xa722('0x39')](_0x2921d5[_0xa722('0x35')][_0xa722('0x39')]));_0x2050f1[_0xa722('0x38')]=_0x2050f1[_0xa722('0x38')]['length']?_0x2050f1[_0xa722('0x38')]:_0x33a89c[_0xa722('0x33')];if(_0x2921d5[_0xa722('0x35')][_0xa722('0x4b')]){_0x2050f1[_0xa722('0x4c')]=[{'all':!![]}];}_0x2050f1=_[_0xa722('0x43')]({},_0x2050f1,_0x2921d5[_0xa722('0x44')]);return db[_0xa722('0x2f')][_0xa722('0x4d')](_0x2050f1)[_0xa722('0x46')](handleEntityNotFound(_0x194931,null))[_0xa722('0x46')](respondWithResult(_0x194931,null))[_0xa722('0x4e')](handleError(_0x194931,null));};exports[_0xa722('0x4f')]=function(_0x14e4d2,_0x9bb4e2){return db[_0xa722('0x2f')][_0xa722('0x4f')](_0x14e4d2['body'],{})[_0xa722('0x46')](respondWithResult(_0x9bb4e2,0xc9))[_0xa722('0x4e')](handleError(_0x9bb4e2,null));};exports['update']=function(_0x5005f4,_0x55e779){if(_0x5005f4[_0xa722('0x50')]['id']){delete _0x5005f4['body']['id'];}return db[_0xa722('0x2f')][_0xa722('0x4d')]({'where':{'id':_0x5005f4['params']['id']}})[_0xa722('0x46')](handleEntityNotFound(_0x55e779,null))[_0xa722('0x46')](saveUpdates(_0x5005f4[_0xa722('0x50')],null))[_0xa722('0x46')](respondWithResult(_0x55e779,null))['catch'](handleError(_0x55e779,null));};exports[_0xa722('0x2a')]=function(_0x47af76,_0x5aed0a){return db[_0xa722('0x2f')][_0xa722('0x4d')]({'where':{'id':_0x47af76[_0xa722('0x48')]['id']}})[_0xa722('0x46')](handleEntityNotFound(_0x5aed0a,null))[_0xa722('0x46')](removeEntity(_0x5aed0a,null))[_0xa722('0x4e')](handleError(_0x5aed0a,null));};exports[_0xa722('0x51')]=function(_0x15900,_0x15e6e6,_0x321d53){var _0x5bb741={};var _0x4bbcb1={};var _0x5c7a0c;var _0x1295ea;return db['ServicenowConfiguration']['findOne']({'where':{'id':_0x15900['params']['id']}})['then'](handleEntityNotFound(_0x15e6e6,null))['then'](function(_0x479b8e){if(_0x479b8e){_0x5c7a0c=_0x479b8e;_0x4bbcb1['model']=_['keys'](db[_0xa722('0x52')][_0xa722('0x4a')]);_0x4bbcb1['query']=_[_0xa722('0x49')](_0x15900[_0xa722('0x35')]);_0x4bbcb1['filters']=_['intersection'](_0x4bbcb1['model'],_0x4bbcb1[_0xa722('0x35')]);_0x5bb741['attributes']=_[_0xa722('0x37')](_0x4bbcb1[_0xa722('0x33')],qs[_0xa722('0x39')](_0x15900[_0xa722('0x35')][_0xa722('0x39')]));_0x5bb741[_0xa722('0x38')]=_0x5bb741['attributes'][_0xa722('0x3a')]?_0x5bb741[_0xa722('0x38')]:_0x4bbcb1['model'];_0x5bb741[_0xa722('0x3d')]=qs[_0xa722('0x3e')](_0x15900[_0xa722('0x35')][_0xa722('0x3e')]);_0x5bb741['where']=qs[_0xa722('0x36')](_[_0xa722('0x40')](_0x15900['query'],_0x4bbcb1['filters']));if(_0x15900['query']['filter']){_0x5bb741[_0xa722('0x3f')]=_[_0xa722('0x43')](_0x5bb741[_0xa722('0x3f')],{'$or':_[_0xa722('0x34')](_0x5bb741[_0xa722('0x38')],function(_0x22e065){var _0x362fc4={};_0x362fc4[_0x22e065]={'$like':'%'+_0x15900[_0xa722('0x35')][_0xa722('0x41')]+'%'};return _0x362fc4;})});}_0x5bb741=_['merge']({},_0x5bb741,_0x15900['options']);return _0x5c7a0c['getFields'](_0x5bb741);}})[_0xa722('0x46')](function(_0x645553){if(_0x645553){_0x1295ea=_0x645553['length'];if(!_0x15900[_0xa722('0x35')][_0xa722('0x3b')](_0xa722('0x3c'))){_0x5bb741[_0xa722('0x21')]=qs[_0xa722('0x21')](_0x15900[_0xa722('0x35')]['limit']);_0x5bb741[_0xa722('0x22')]=qs['offset'](_0x15900[_0xa722('0x35')][_0xa722('0x22')]);}return _0x5c7a0c[_0xa722('0x51')](_0x5bb741);}})[_0xa722('0x46')](function(_0x510cde){if(_0x510cde){return _0x510cde?{'count':_0x1295ea,'rows':_0x510cde}:null;}})[_0xa722('0x46')](respondWithResult(_0x15e6e6,null))[_0xa722('0x4e')](handleError(_0x15e6e6,null));};exports[_0xa722('0x53')]=function(_0x25f09b,_0x3dbd82,_0x2cd0bd){var _0x425d91={};var _0x3ffdc9={};var _0x4a5be7;var _0x220025;return db[_0xa722('0x2f')]['findOne']({'where':{'id':_0x25f09b[_0xa722('0x48')]['id']}})[_0xa722('0x46')](handleEntityNotFound(_0x3dbd82,null))[_0xa722('0x46')](function(_0x4f1e54){if(_0x4f1e54){_0x4a5be7=_0x4f1e54;_0x3ffdc9[_0xa722('0x33')]=_['keys'](db[_0xa722('0x52')][_0xa722('0x4a')]);_0x3ffdc9[_0xa722('0x35')]=_['keys'](_0x25f09b[_0xa722('0x35')]);_0x3ffdc9[_0xa722('0x36')]=_[_0xa722('0x37')](_0x3ffdc9[_0xa722('0x33')],_0x3ffdc9[_0xa722('0x35')]);_0x425d91['attributes']=_['intersection'](_0x3ffdc9['model'],qs[_0xa722('0x39')](_0x25f09b[_0xa722('0x35')][_0xa722('0x39')]));_0x425d91[_0xa722('0x38')]=_0x425d91['attributes'][_0xa722('0x3a')]?_0x425d91[_0xa722('0x38')]:_0x3ffdc9[_0xa722('0x33')];_0x425d91[_0xa722('0x3d')]=qs[_0xa722('0x3e')](_0x25f09b[_0xa722('0x35')]['sort']);_0x425d91[_0xa722('0x3f')]=qs[_0xa722('0x36')](_[_0xa722('0x40')](_0x25f09b['query'],_0x3ffdc9[_0xa722('0x36')]));if(_0x25f09b['query']['filter']){_0x425d91['where']=_['merge'](_0x425d91[_0xa722('0x3f')],{'$or':_[_0xa722('0x34')](_0x425d91[_0xa722('0x38')],function(_0x5b91ee){var _0x94ce2a={};_0x94ce2a[_0x5b91ee]={'$like':'%'+_0x25f09b['query']['filter']+'%'};return _0x94ce2a;})});}_0x425d91=_[_0xa722('0x43')]({},_0x425d91,_0x25f09b[_0xa722('0x44')]);return _0x4a5be7[_0xa722('0x53')](_0x425d91);}})[_0xa722('0x46')](function(_0x2580c3){if(_0x2580c3){_0x220025=_0x2580c3[_0xa722('0x3a')];if(!_0x25f09b['query'][_0xa722('0x3b')]('nolimit')){_0x425d91[_0xa722('0x21')]=qs[_0xa722('0x21')](_0x25f09b[_0xa722('0x35')][_0xa722('0x21')]);_0x425d91['offset']=qs['offset'](_0x25f09b[_0xa722('0x35')]['offset']);}return _0x4a5be7[_0xa722('0x53')](_0x425d91);}})[_0xa722('0x46')](function(_0x38d4f0){if(_0x38d4f0){return _0x38d4f0?{'count':_0x220025,'rows':_0x38d4f0}:null;}})['then'](respondWithResult(_0x3dbd82,null))[_0xa722('0x4e')](handleError(_0x3dbd82,null));};exports[_0xa722('0x54')]=function(_0x4275d4,_0x178518,_0x164258){var _0x3ec8cd={};var _0x5c3f77={};var _0x3a6a57;var _0x524f18;return db['ServicenowConfiguration']['findOne']({'where':{'id':_0x4275d4[_0xa722('0x48')]['id']}})[_0xa722('0x46')](handleEntityNotFound(_0x178518,null))[_0xa722('0x46')](function(_0x2c4a22){if(_0x2c4a22){_0x3a6a57=_0x2c4a22;_0x5c3f77[_0xa722('0x33')]=_[_0xa722('0x49')](db[_0xa722('0x52')][_0xa722('0x4a')]);_0x5c3f77['query']=_[_0xa722('0x49')](_0x4275d4[_0xa722('0x35')]);_0x5c3f77['filters']=_[_0xa722('0x37')](_0x5c3f77['model'],_0x5c3f77[_0xa722('0x35')]);_0x3ec8cd[_0xa722('0x38')]=_[_0xa722('0x37')](_0x5c3f77[_0xa722('0x33')],qs[_0xa722('0x39')](_0x4275d4[_0xa722('0x35')]['fields']));_0x3ec8cd[_0xa722('0x38')]=_0x3ec8cd[_0xa722('0x38')][_0xa722('0x3a')]?_0x3ec8cd[_0xa722('0x38')]:_0x5c3f77[_0xa722('0x33')];_0x3ec8cd[_0xa722('0x3d')]=qs['sort'](_0x4275d4[_0xa722('0x35')]['sort']);_0x3ec8cd[_0xa722('0x3f')]=qs[_0xa722('0x36')](_[_0xa722('0x40')](_0x4275d4['query'],_0x5c3f77[_0xa722('0x36')]));if(_0x4275d4['query']['filter']){_0x3ec8cd[_0xa722('0x3f')]=_[_0xa722('0x43')](_0x3ec8cd[_0xa722('0x3f')],{'$or':_[_0xa722('0x34')](_0x3ec8cd[_0xa722('0x38')],function(_0x20ae99){var _0x4eea5a={};_0x4eea5a[_0x20ae99]={'$like':'%'+_0x4275d4['query'][_0xa722('0x41')]+'%'};return _0x4eea5a;})});}_0x3ec8cd=_[_0xa722('0x43')]({},_0x3ec8cd,_0x4275d4['options']);return _0x3a6a57[_0xa722('0x54')](_0x3ec8cd);}})[_0xa722('0x46')](function(_0x2bbf83){if(_0x2bbf83){_0x524f18=_0x2bbf83['length'];if(!_0x4275d4[_0xa722('0x35')][_0xa722('0x3b')]('nolimit')){_0x3ec8cd[_0xa722('0x21')]=qs[_0xa722('0x21')](_0x4275d4['query'][_0xa722('0x21')]);_0x3ec8cd['offset']=qs['offset'](_0x4275d4['query'][_0xa722('0x22')]);}return _0x3a6a57[_0xa722('0x54')](_0x3ec8cd);}})['then'](function(_0xd94f4f){if(_0xd94f4f){return _0xd94f4f?{'count':_0x524f18,'rows':_0xd94f4f}:null;}})[_0xa722('0x46')](respondWithResult(_0x178518,null))[_0xa722('0x4e')](handleError(_0x178518,null));};
\ No newline at end of file
+var _0x998a=['attributes','length','sort','pick','filter','merge','where','type','VIRTUAL','options','includeAll','findAll','rows','show','params','find','create','body','catch','update','findOne','order','getFields','hasOwnProperty','getSubjects','ServicenowField','getDescriptions','nolimit','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','to-csv','fs-extra','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','sendStatus','status','offset','undefined','count','limit','Content-Range','json','reject','save','destroy','then','error','stack','name','send','index','map','ServicenowConfiguration','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields'];(function(_0x4b979f,_0x535874){var _0x5b002e=function(_0x49c5e1){while(--_0x49c5e1){_0x4b979f['push'](_0x4b979f['shift']());}};_0x5b002e(++_0x535874);}(_0x998a,0xb8));var _0xa998=function(_0x47c95c,_0x5ae306){_0x47c95c=_0x47c95c-0x0;var _0x5c21e0=_0x998a[_0x47c95c];return _0x5c21e0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa998('0x0'));var zipdir=require(_0xa998('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa998('0x2'));var moment=require('moment');var BPromise=require(_0xa998('0x3'));var Mustache=require(_0xa998('0x4'));var util=require('util');var path=require(_0xa998('0x5'));var sox=require(_0xa998('0x6'));var csv=require(_0xa998('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa998('0x8'));var _=require('lodash');var squel=require(_0xa998('0x9'));var crypto=require(_0xa998('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xa998('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xa998('0xc'));var Redis=require(_0xa998('0xd'));var authService=require(_0xa998('0xe'));var qs=require(_0xa998('0xf'));var as=require(_0xa998('0x10'));var hardwareService=require(_0xa998('0x11'));var logger=require('../../config/logger')(_0xa998('0x12'));var utils=require(_0xa998('0x13'));var config=require(_0xa998('0x14'));var licenseUtil=require(_0xa998('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4d23fc,_0x13e1f3){_0x13e1f3=_0x13e1f3||0xcc;return function(_0x12e179){if(_0x12e179){return _0x4d23fc[_0xa998('0x16')](_0x13e1f3);}return _0x4d23fc['status'](_0x13e1f3)['end']();};}function respondWithResult(_0x1ecd8e,_0x605c8){_0x605c8=_0x605c8||0xc8;return function(_0x3eccdb){if(_0x3eccdb){return _0x1ecd8e[_0xa998('0x17')](_0x605c8)['json'](_0x3eccdb);}};}function respondWithFilteredResult(_0x357323,_0x5b406c){return function(_0x2f9d8b){if(_0x2f9d8b){var _0x388765=typeof _0x5b406c[_0xa998('0x18')]==='undefined'&&typeof _0x5b406c['limit']===_0xa998('0x19');var _0x1ada8e=_0x2f9d8b[_0xa998('0x1a')];var _0x21b30f=_0x388765?0x0:_0x5b406c[_0xa998('0x18')];var _0x5b4892=_0x388765?_0x2f9d8b[_0xa998('0x1a')]:_0x5b406c[_0xa998('0x18')]+_0x5b406c[_0xa998('0x1b')];var _0x2e8e46;if(_0x5b4892>=_0x1ada8e){_0x5b4892=_0x1ada8e;_0x2e8e46=0xc8;}else{_0x2e8e46=0xce;}_0x357323[_0xa998('0x17')](_0x2e8e46);return _0x357323['set'](_0xa998('0x1c'),_0x21b30f+'-'+_0x5b4892+'/'+_0x1ada8e)[_0xa998('0x1d')](_0x2f9d8b);}return null;};}function patchUpdates(_0x498654){return function(_0x3f54b3){try{jsonpatch['apply'](_0x3f54b3,_0x498654,!![]);}catch(_0x522d92){return BPromise[_0xa998('0x1e')](_0x522d92);}return _0x3f54b3[_0xa998('0x1f')]();};}function saveUpdates(_0x1a1d7c,_0x31ce11){return function(_0x4af876){if(_0x4af876){return _0x4af876['update'](_0x1a1d7c)['then'](function(_0x4566a1){return _0x4566a1;});}return null;};}function removeEntity(_0x1a4945,_0x3fda50){return function(_0x4c0328){if(_0x4c0328){return _0x4c0328[_0xa998('0x20')]()[_0xa998('0x21')](function(){_0x1a4945[_0xa998('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1402a4,_0x136bd2){return function(_0x283e18){if(!_0x283e18){_0x1402a4[_0xa998('0x16')](0x194);}return _0x283e18;};}function handleError(_0x2f036e,_0x2ca2ae){_0x2ca2ae=_0x2ca2ae||0x1f4;return function(_0x46c40a){logger[_0xa998('0x22')](_0x46c40a[_0xa998('0x23')]);if(_0x46c40a['name']){delete _0x46c40a[_0xa998('0x24')];}_0x2f036e[_0xa998('0x17')](_0x2ca2ae)[_0xa998('0x25')](_0x46c40a);};}exports[_0xa998('0x26')]=function(_0x13259f,_0x406e6a){var _0x1b11f7={},_0x279294={},_0x549103={'count':0x0,'rows':[]};var _0x4dff2f=_[_0xa998('0x27')](db[_0xa998('0x28')][_0xa998('0x29')],function(_0x1cfe1e){return{'name':_0x1cfe1e[_0xa998('0x2a')],'type':_0x1cfe1e['type'][_0xa998('0x2b')]};});_0x279294[_0xa998('0x2c')]=_[_0xa998('0x27')](_0x4dff2f,'name');_0x279294[_0xa998('0x2d')]=_[_0xa998('0x2e')](_0x13259f[_0xa998('0x2d')]);_0x279294[_0xa998('0x2f')]=_[_0xa998('0x30')](_0x279294[_0xa998('0x2c')],_0x279294[_0xa998('0x2d')]);_0x1b11f7['attributes']=_[_0xa998('0x30')](_0x279294['model'],qs['fields'](_0x13259f[_0xa998('0x2d')][_0xa998('0x31')]));_0x1b11f7[_0xa998('0x32')]=_0x1b11f7[_0xa998('0x32')][_0xa998('0x33')]?_0x1b11f7[_0xa998('0x32')]:_0x279294['model'];if(!_0x13259f[_0xa998('0x2d')]['hasOwnProperty']('nolimit')){_0x1b11f7[_0xa998('0x1b')]=qs['limit'](_0x13259f['query']['limit']);_0x1b11f7[_0xa998('0x18')]=qs[_0xa998('0x18')](_0x13259f[_0xa998('0x2d')]['offset']);}_0x1b11f7['order']=qs['sort'](_0x13259f[_0xa998('0x2d')][_0xa998('0x34')]);_0x1b11f7['where']=qs[_0xa998('0x2f')](_[_0xa998('0x35')](_0x13259f['query'],_0x279294[_0xa998('0x2f')]),_0x4dff2f);if(_0x13259f['query'][_0xa998('0x36')]){_0x1b11f7['where']=_[_0xa998('0x37')](_0x1b11f7[_0xa998('0x38')],{'$or':_[_0xa998('0x27')](_0x4dff2f,function(_0xc3274f){if(_0xc3274f[_0xa998('0x39')]!==_0xa998('0x3a')){var _0x550a70={};_0x550a70[_0xc3274f['name']]={'$like':'%'+_0x13259f[_0xa998('0x2d')][_0xa998('0x36')]+'%'};return _0x550a70;}})});}_0x1b11f7=_['merge']({},_0x1b11f7,_0x13259f[_0xa998('0x3b')]);var _0x308957={'where':_0x1b11f7[_0xa998('0x38')]};return db[_0xa998('0x28')][_0xa998('0x1a')](_0x308957)[_0xa998('0x21')](function(_0x4724c7){_0x549103[_0xa998('0x1a')]=_0x4724c7;if(_0x13259f['query'][_0xa998('0x3c')]){_0x1b11f7['include']=[{'all':!![]}];}return db['ServicenowConfiguration'][_0xa998('0x3d')](_0x1b11f7);})[_0xa998('0x21')](function(_0x989676){_0x549103[_0xa998('0x3e')]=_0x989676;return _0x549103;})[_0xa998('0x21')](respondWithFilteredResult(_0x406e6a,_0x1b11f7))['catch'](handleError(_0x406e6a,null));};exports[_0xa998('0x3f')]=function(_0x50d900,_0x44585d){var _0x3cc9a2={'raw':![],'where':{'id':_0x50d900[_0xa998('0x40')]['id']}},_0x184928={};_0x184928[_0xa998('0x2c')]=_['keys'](db[_0xa998('0x28')][_0xa998('0x29')]);_0x184928[_0xa998('0x2d')]=_['keys'](_0x50d900['query']);_0x184928[_0xa998('0x2f')]=_[_0xa998('0x30')](_0x184928['model'],_0x184928[_0xa998('0x2d')]);_0x3cc9a2[_0xa998('0x32')]=_[_0xa998('0x30')](_0x184928[_0xa998('0x2c')],qs[_0xa998('0x31')](_0x50d900[_0xa998('0x2d')][_0xa998('0x31')]));_0x3cc9a2['attributes']=_0x3cc9a2[_0xa998('0x32')][_0xa998('0x33')]?_0x3cc9a2[_0xa998('0x32')]:_0x184928[_0xa998('0x2c')];if(_0x50d900[_0xa998('0x2d')][_0xa998('0x3c')]){_0x3cc9a2['include']=[{'all':!![]}];}_0x3cc9a2=_['merge']({},_0x3cc9a2,_0x50d900[_0xa998('0x3b')]);return db[_0xa998('0x28')][_0xa998('0x41')](_0x3cc9a2)[_0xa998('0x21')](handleEntityNotFound(_0x44585d,null))[_0xa998('0x21')](respondWithResult(_0x44585d,null))['catch'](handleError(_0x44585d,null));};exports['create']=function(_0x5d0478,_0x6ffd20){return db[_0xa998('0x28')][_0xa998('0x42')](_0x5d0478[_0xa998('0x43')],{})[_0xa998('0x21')](respondWithResult(_0x6ffd20,0xc9))[_0xa998('0x44')](handleError(_0x6ffd20,null));};exports[_0xa998('0x45')]=function(_0x7452c0,_0x360828){if(_0x7452c0[_0xa998('0x43')]['id']){delete _0x7452c0[_0xa998('0x43')]['id'];}return db['ServicenowConfiguration'][_0xa998('0x41')]({'where':{'id':_0x7452c0['params']['id']}})[_0xa998('0x21')](handleEntityNotFound(_0x360828,null))[_0xa998('0x21')](saveUpdates(_0x7452c0[_0xa998('0x43')],null))[_0xa998('0x21')](respondWithResult(_0x360828,null))['catch'](handleError(_0x360828,null));};exports[_0xa998('0x20')]=function(_0x75c073,_0x18c26f){return db[_0xa998('0x28')][_0xa998('0x41')]({'where':{'id':_0x75c073[_0xa998('0x40')]['id']}})[_0xa998('0x21')](handleEntityNotFound(_0x18c26f,null))[_0xa998('0x21')](removeEntity(_0x18c26f,null))['catch'](handleError(_0x18c26f,null));};exports['getFields']=function(_0x352526,_0x1fb59f,_0x31b756){var _0x5e0dee={};var _0xb742a4={};var _0x2ba1a5;var _0x52b25f;return db['ServicenowConfiguration'][_0xa998('0x46')]({'where':{'id':_0x352526[_0xa998('0x40')]['id']}})[_0xa998('0x21')](handleEntityNotFound(_0x1fb59f,null))[_0xa998('0x21')](function(_0xcb9e62){if(_0xcb9e62){_0x2ba1a5=_0xcb9e62;_0xb742a4['model']=_[_0xa998('0x2e')](db['ServicenowField'][_0xa998('0x29')]);_0xb742a4['query']=_['keys'](_0x352526[_0xa998('0x2d')]);_0xb742a4[_0xa998('0x2f')]=_['intersection'](_0xb742a4[_0xa998('0x2c')],_0xb742a4['query']);_0x5e0dee['attributes']=_[_0xa998('0x30')](_0xb742a4[_0xa998('0x2c')],qs['fields'](_0x352526[_0xa998('0x2d')][_0xa998('0x31')]));_0x5e0dee[_0xa998('0x32')]=_0x5e0dee[_0xa998('0x32')]['length']?_0x5e0dee[_0xa998('0x32')]:_0xb742a4[_0xa998('0x2c')];_0x5e0dee[_0xa998('0x47')]=qs['sort'](_0x352526[_0xa998('0x2d')]['sort']);_0x5e0dee[_0xa998('0x38')]=qs[_0xa998('0x2f')](_[_0xa998('0x35')](_0x352526[_0xa998('0x2d')],_0xb742a4[_0xa998('0x2f')]));if(_0x352526[_0xa998('0x2d')][_0xa998('0x36')]){_0x5e0dee[_0xa998('0x38')]=_[_0xa998('0x37')](_0x5e0dee[_0xa998('0x38')],{'$or':_['map'](_0x5e0dee[_0xa998('0x32')],function(_0x4e6e12){var _0xd5b053={};_0xd5b053[_0x4e6e12]={'$like':'%'+_0x352526[_0xa998('0x2d')][_0xa998('0x36')]+'%'};return _0xd5b053;})});}_0x5e0dee=_[_0xa998('0x37')]({},_0x5e0dee,_0x352526[_0xa998('0x3b')]);return _0x2ba1a5[_0xa998('0x48')](_0x5e0dee);}})[_0xa998('0x21')](function(_0x1c531f){if(_0x1c531f){_0x52b25f=_0x1c531f[_0xa998('0x33')];if(!_0x352526[_0xa998('0x2d')][_0xa998('0x49')]('nolimit')){_0x5e0dee[_0xa998('0x1b')]=qs[_0xa998('0x1b')](_0x352526[_0xa998('0x2d')][_0xa998('0x1b')]);_0x5e0dee[_0xa998('0x18')]=qs[_0xa998('0x18')](_0x352526[_0xa998('0x2d')]['offset']);}return _0x2ba1a5[_0xa998('0x48')](_0x5e0dee);}})['then'](function(_0x27ef85){if(_0x27ef85){return _0x27ef85?{'count':_0x52b25f,'rows':_0x27ef85}:null;}})['then'](respondWithResult(_0x1fb59f,null))[_0xa998('0x44')](handleError(_0x1fb59f,null));};exports[_0xa998('0x4a')]=function(_0x375540,_0x4ab348,_0x18714a){var _0x42563b={};var _0x18262e={};var _0x52b11e;var _0x500df1;return db[_0xa998('0x28')][_0xa998('0x46')]({'where':{'id':_0x375540['params']['id']}})['then'](handleEntityNotFound(_0x4ab348,null))['then'](function(_0x398990){if(_0x398990){_0x52b11e=_0x398990;_0x18262e[_0xa998('0x2c')]=_[_0xa998('0x2e')](db[_0xa998('0x4b')][_0xa998('0x29')]);_0x18262e[_0xa998('0x2d')]=_['keys'](_0x375540['query']);_0x18262e[_0xa998('0x2f')]=_['intersection'](_0x18262e[_0xa998('0x2c')],_0x18262e['query']);_0x42563b[_0xa998('0x32')]=_['intersection'](_0x18262e[_0xa998('0x2c')],qs['fields'](_0x375540[_0xa998('0x2d')][_0xa998('0x31')]));_0x42563b[_0xa998('0x32')]=_0x42563b[_0xa998('0x32')][_0xa998('0x33')]?_0x42563b[_0xa998('0x32')]:_0x18262e[_0xa998('0x2c')];_0x42563b[_0xa998('0x47')]=qs[_0xa998('0x34')](_0x375540[_0xa998('0x2d')][_0xa998('0x34')]);_0x42563b[_0xa998('0x38')]=qs[_0xa998('0x2f')](_[_0xa998('0x35')](_0x375540[_0xa998('0x2d')],_0x18262e[_0xa998('0x2f')]));if(_0x375540[_0xa998('0x2d')][_0xa998('0x36')]){_0x42563b[_0xa998('0x38')]=_[_0xa998('0x37')](_0x42563b[_0xa998('0x38')],{'$or':_[_0xa998('0x27')](_0x42563b[_0xa998('0x32')],function(_0x2a74d3){var _0x11424b={};_0x11424b[_0x2a74d3]={'$like':'%'+_0x375540[_0xa998('0x2d')][_0xa998('0x36')]+'%'};return _0x11424b;})});}_0x42563b=_[_0xa998('0x37')]({},_0x42563b,_0x375540[_0xa998('0x3b')]);return _0x52b11e[_0xa998('0x4a')](_0x42563b);}})['then'](function(_0x1e4be1){if(_0x1e4be1){_0x500df1=_0x1e4be1[_0xa998('0x33')];if(!_0x375540['query'][_0xa998('0x49')]('nolimit')){_0x42563b['limit']=qs[_0xa998('0x1b')](_0x375540['query']['limit']);_0x42563b[_0xa998('0x18')]=qs[_0xa998('0x18')](_0x375540[_0xa998('0x2d')][_0xa998('0x18')]);}return _0x52b11e[_0xa998('0x4a')](_0x42563b);}})[_0xa998('0x21')](function(_0x5be599){if(_0x5be599){return _0x5be599?{'count':_0x500df1,'rows':_0x5be599}:null;}})[_0xa998('0x21')](respondWithResult(_0x4ab348,null))[_0xa998('0x44')](handleError(_0x4ab348,null));};exports[_0xa998('0x4c')]=function(_0x1ff982,_0x17fea8,_0x435cd6){var _0x2afee2={};var _0x237393={};var _0x4205dd;var _0x1c5b4d;return db[_0xa998('0x28')][_0xa998('0x46')]({'where':{'id':_0x1ff982[_0xa998('0x40')]['id']}})[_0xa998('0x21')](handleEntityNotFound(_0x17fea8,null))[_0xa998('0x21')](function(_0x359656){if(_0x359656){_0x4205dd=_0x359656;_0x237393[_0xa998('0x2c')]=_[_0xa998('0x2e')](db[_0xa998('0x4b')][_0xa998('0x29')]);_0x237393[_0xa998('0x2d')]=_[_0xa998('0x2e')](_0x1ff982['query']);_0x237393[_0xa998('0x2f')]=_[_0xa998('0x30')](_0x237393['model'],_0x237393[_0xa998('0x2d')]);_0x2afee2[_0xa998('0x32')]=_[_0xa998('0x30')](_0x237393['model'],qs[_0xa998('0x31')](_0x1ff982[_0xa998('0x2d')][_0xa998('0x31')]));_0x2afee2[_0xa998('0x32')]=_0x2afee2[_0xa998('0x32')][_0xa998('0x33')]?_0x2afee2['attributes']:_0x237393[_0xa998('0x2c')];_0x2afee2[_0xa998('0x47')]=qs[_0xa998('0x34')](_0x1ff982[_0xa998('0x2d')][_0xa998('0x34')]);_0x2afee2[_0xa998('0x38')]=qs[_0xa998('0x2f')](_[_0xa998('0x35')](_0x1ff982[_0xa998('0x2d')],_0x237393[_0xa998('0x2f')]));if(_0x1ff982['query'][_0xa998('0x36')]){_0x2afee2[_0xa998('0x38')]=_[_0xa998('0x37')](_0x2afee2['where'],{'$or':_[_0xa998('0x27')](_0x2afee2['attributes'],function(_0x349b0b){var _0x25edd={};_0x25edd[_0x349b0b]={'$like':'%'+_0x1ff982[_0xa998('0x2d')][_0xa998('0x36')]+'%'};return _0x25edd;})});}_0x2afee2=_['merge']({},_0x2afee2,_0x1ff982[_0xa998('0x3b')]);return _0x4205dd[_0xa998('0x4c')](_0x2afee2);}})[_0xa998('0x21')](function(_0x4c6f4e){if(_0x4c6f4e){_0x1c5b4d=_0x4c6f4e[_0xa998('0x33')];if(!_0x1ff982['query'][_0xa998('0x49')](_0xa998('0x4d'))){_0x2afee2['limit']=qs['limit'](_0x1ff982[_0xa998('0x2d')][_0xa998('0x1b')]);_0x2afee2[_0xa998('0x18')]=qs[_0xa998('0x18')](_0x1ff982[_0xa998('0x2d')][_0xa998('0x18')]);}return _0x4205dd[_0xa998('0x4c')](_0x2afee2);}})[_0xa998('0x21')](function(_0x3ea863){if(_0x3ea863){return _0x3ea863?{'count':_0x1c5b4d,'rows':_0x3ea863}:null;}})[_0xa998('0x21')](respondWithResult(_0x17fea8,null))[_0xa998('0x44')](handleError(_0x17fea8,null));};
\ No newline at end of file
index 04e39e9..7783a00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84a0=['define','ServicenowConfiguration','int_servicenow_configurations','lodash','util','../../config/logger','api','bluebird','request-promise','../../config/environment','./intServicenowConfiguration.attributes'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x84a0,0x66));var _0x084a=function(_0x137bdd,_0x43a31f){_0x137bdd=_0x137bdd-0x0;var _0x2656a5=_0x84a0[_0x137bdd];return _0x2656a5;};'use strict';var _=require(_0x084a('0x0'));var util=require(_0x084a('0x1'));var logger=require(_0x084a('0x2'))(_0x084a('0x3'));var moment=require('moment');var BPromise=require(_0x084a('0x4'));var rp=require(_0x084a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x084a('0x6'));var attributes=require(_0x084a('0x7'));module['exports']=function(_0x16f8a7,_0x4325ce){return _0x16f8a7[_0x084a('0x8')](_0x084a('0x9'),attributes,{'tableName':_0x084a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xee4e=['./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x2cef86,_0xbae0a6){var _0x46dfd6=function(_0x52e464){while(--_0x52e464){_0x2cef86['push'](_0x2cef86['shift']());}};_0x46dfd6(++_0xbae0a6);}(_0xee4e,0x122));var _0xeee4=function(_0xaa0309,_0x1c8008){_0xaa0309=_0xaa0309-0x0;var _0x5de7ce=_0xee4e[_0xaa0309];return _0x5de7ce;};'use strict';var _=require(_0xeee4('0x0'));var util=require(_0xeee4('0x1'));var logger=require(_0xeee4('0x2'))('api');var moment=require(_0xeee4('0x3'));var BPromise=require(_0xeee4('0x4'));var rp=require(_0xeee4('0x5'));var fs=require('fs');var path=require(_0xeee4('0x6'));var rimraf=require(_0xeee4('0x7'));var config=require(_0xeee4('0x8'));var attributes=require(_0xeee4('0x9'));module[_0xeee4('0xa')]=function(_0x5564f7,_0xcf3bbd){return _0x5564f7[_0xeee4('0xb')](_0xeee4('0xc'),attributes,{'tableName':'int_servicenow_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7c6a25f..b358e5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89ab=['../../config/logger','jayson/promise','client','http','request','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x421cf8,_0x23152c){var _0x145c48=function(_0x565862){while(--_0x565862){_0x421cf8['push'](_0x421cf8['shift']());}};_0x145c48(++_0x23152c);}(_0x89ab,0x16f));var _0xb89a=function(_0x1d0a48,_0x377cff){_0x1d0a48=_0x1d0a48-0x0;var _0x463677=_0x89ab[_0x1d0a48];return _0x463677;};'use strict';var _=require(_0xb89a('0x0'));var util=require(_0xb89a('0x1'));var moment=require(_0xb89a('0x2'));var BPromise=require(_0xb89a('0x3'));var rs=require(_0xb89a('0x4'));var fs=require('fs');var Redis=require(_0xb89a('0x5'));var db=require(_0xb89a('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xb89a('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xb89a('0x8'));var client=jayson[_0xb89a('0x9')][_0xb89a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x19fd43,_0x57a1bd,_0x5dea27){return new BPromise(function(_0x8fa297,_0x21ac83){return client[_0xb89a('0xb')](_0x19fd43,_0x5dea27)['then'](function(_0x5cde1f){logger[_0xb89a('0xc')](_0xb89a('0xd'),_0x57a1bd,_0xb89a('0xe'));logger[_0xb89a('0xf')](_0xb89a('0x10'),_0x57a1bd,_0xb89a('0xe'),JSON[_0xb89a('0x11')](_0x5cde1f));if(_0x5cde1f[_0xb89a('0x12')]){if(_0x5cde1f['error']['code']===0x1f4){logger[_0xb89a('0x12')]('ServicenowConfiguration,\x20%s,\x20%s',_0x57a1bd,_0x5cde1f[_0xb89a('0x12')]['message']);return _0x21ac83(_0x5cde1f['error'][_0xb89a('0x13')]);}logger[_0xb89a('0x12')](_0xb89a('0xd'),_0x57a1bd,_0x5cde1f[_0xb89a('0x12')]['message']);return _0x8fa297(_0x5cde1f['error'][_0xb89a('0x13')]);}else{logger[_0xb89a('0xc')](_0xb89a('0xd'),_0x57a1bd,_0xb89a('0xe'));_0x8fa297(_0x5cde1f[_0xb89a('0x14')]['message']);}})[_0xb89a('0x15')](function(_0x298d59){logger[_0xb89a('0x12')](_0xb89a('0xd'),_0x57a1bd,_0x298d59);_0x21ac83(_0x298d59);});});}
\ No newline at end of file
+var _0x40eb=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','info','request\x20sent','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','ServicenowConfiguration,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring'];(function(_0x2263b9,_0x262363){var _0x578168=function(_0x445630){while(--_0x445630){_0x2263b9['push'](_0x2263b9['shift']());}};_0x578168(++_0x262363);}(_0x40eb,0xb0));var _0xb40e=function(_0x23f4ad,_0xb1c02f){_0x23f4ad=_0x23f4ad-0x0;var _0x42e2ec=_0x40eb[_0x23f4ad];return _0x42e2ec;};'use strict';var _=require(_0xb40e('0x0'));var util=require(_0xb40e('0x1'));var moment=require('moment');var BPromise=require(_0xb40e('0x2'));var rs=require(_0xb40e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb40e('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xb40e('0x5'))(_0xb40e('0x6'));var config=require(_0xb40e('0x7'));var jayson=require(_0xb40e('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5ab000,_0x4b6be0,_0x3a50f1){return new BPromise(function(_0x360878,_0x3de0bc){return client[_0xb40e('0x9')](_0x5ab000,_0x3a50f1)['then'](function(_0x53eaf6){logger[_0xb40e('0xa')]('ServicenowConfiguration,\x20%s,\x20%s',_0x4b6be0,_0xb40e('0xb'));logger[_0xb40e('0xc')](_0xb40e('0xd'),_0x4b6be0,_0xb40e('0xb'),JSON[_0xb40e('0xe')](_0x53eaf6));if(_0x53eaf6['error']){if(_0x53eaf6['error']['code']===0x1f4){logger[_0xb40e('0xf')]('ServicenowConfiguration,\x20%s,\x20%s',_0x4b6be0,_0x53eaf6['error'][_0xb40e('0x10')]);return _0x3de0bc(_0x53eaf6[_0xb40e('0xf')][_0xb40e('0x10')]);}logger[_0xb40e('0xf')](_0xb40e('0x11'),_0x4b6be0,_0x53eaf6['error']['message']);return _0x360878(_0x53eaf6['error'][_0xb40e('0x10')]);}else{logger[_0xb40e('0xa')](_0xb40e('0x11'),_0x4b6be0,_0xb40e('0xb'));_0x360878(_0x53eaf6[_0xb40e('0x12')]['message']);}})[_0xb40e('0x13')](function(_0xe81e4a){logger[_0xb40e('0xf')]('ServicenowConfiguration,\x20%s,\x20%s',_0x4b6be0,_0xe81e4a);_0x3de0bc(_0xe81e4a);});});}
\ No newline at end of file
index d079a2f..64d438a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46fe=['index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get'];(function(_0x4b2aba,_0x34ddfc){var _0x24e29b=function(_0x175849){while(--_0x175849){_0x4b2aba['push'](_0x4b2aba['shift']());}};_0x24e29b(++_0x34ddfc);}(_0x46fe,0x1d9));var _0xe46f=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0x46fe[_0x209941];return _0x1e8729;};'use strict';var multer=require(_0xe46f('0x0'));var util=require('util');var path=require(_0xe46f('0x1'));var timeout=require(_0xe46f('0x2'));var express=require(_0xe46f('0x3'));var router=express[_0xe46f('0x4')]();var fs_extra=require(_0xe46f('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xe46f('0x6'));var config=require(_0xe46f('0x7'));var controller=require(_0xe46f('0x8'));router[_0xe46f('0x9')]('/',auth['isAuthenticated'](),controller[_0xe46f('0xa')]);router['get'](_0xe46f('0xb'),auth[_0xe46f('0xc')](),controller[_0xe46f('0xd')]);router[_0xe46f('0xe')]('/',auth['isAuthenticated'](),controller[_0xe46f('0xf')]);router[_0xe46f('0x10')](_0xe46f('0xb'),auth['isAuthenticated'](),controller[_0xe46f('0x11')]);router[_0xe46f('0x12')](_0xe46f('0xb'),auth[_0xe46f('0xc')](),controller[_0xe46f('0x13')]);module[_0xe46f('0x14')]=router;
\ No newline at end of file
+var _0x8265=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','util','express','fs-extra'];(function(_0x4e3bde,_0x35e03e){var _0x46677a=function(_0x441056){while(--_0x441056){_0x4e3bde['push'](_0x4e3bde['shift']());}};_0x46677a(++_0x35e03e);}(_0x8265,0x12c));var _0x5826=function(_0x2a6489,_0xfef43e){_0x2a6489=_0x2a6489-0x0;var _0x1aaef4=_0x8265[_0x2a6489];return _0x1aaef4;};'use strict';var multer=require(_0x5826('0x0'));var util=require(_0x5826('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x5826('0x2'));var router=express['Router']();var fs_extra=require(_0x5826('0x3'));var auth=require(_0x5826('0x4'));var interaction=require(_0x5826('0x5'));var config=require(_0x5826('0x6'));var controller=require(_0x5826('0x7'));router[_0x5826('0x8')]('/',auth[_0x5826('0x9')](),controller[_0x5826('0xa')]);router[_0x5826('0x8')](_0x5826('0xb'),auth[_0x5826('0x9')](),controller[_0x5826('0xc')]);router[_0x5826('0xd')]('/',auth[_0x5826('0x9')](),controller[_0x5826('0xe')]);router[_0x5826('0xf')]('/:id',auth[_0x5826('0x9')](),controller['update']);router[_0x5826('0x10')](_0x5826('0xb'),auth[_0x5826('0x9')](),controller[_0x5826('0x11')]);module[_0x5826('0x12')]=router;
\ No newline at end of file
index a75b344..7f3d225 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb62e=['string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','ENUM'];(function(_0x65ae41,_0x3e1ecb){var _0x19bf4f=function(_0x3dc40c){while(--_0x3dc40c){_0x65ae41['push'](_0x65ae41['shift']());}};_0x19bf4f(++_0x3e1ecb);}(_0xb62e,0x130));var _0xeb62=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0xb62e[_0x160c73];return _0xd9302;};'use strict';var Sequelize=require(_0xeb62('0x0'));module['exports']={'type':{'type':Sequelize[_0xeb62('0x1')](_0xeb62('0x2'),_0xeb62('0x3'),_0xeb62('0x4'),_0xeb62('0x5'),_0xeb62('0x6')),'defaultValue':_0xeb62('0x2')},'content':{'type':Sequelize[_0xeb62('0x7')]},'key':{'type':Sequelize[_0xeb62('0x7')]},'keyType':{'type':Sequelize[_0xeb62('0x1')](_0xeb62('0x2'),_0xeb62('0x3'),_0xeb62('0x4'))},'keyContent':{'type':Sequelize[_0xeb62('0x7')]},'idField':{'type':Sequelize[_0xeb62('0x7')]},'nameField':{'type':Sequelize[_0xeb62('0x7')]},'customField':{'type':Sequelize[_0xeb62('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xeb62('0x7')]}};
\ No newline at end of file
+var _0xfe33=['STRING','BOOLEAN','exports','string','customVariable','picklist','ENUM','variable'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xfe33,0x1e2));var _0x3fe3=function(_0x35a9fd,_0x540c82){_0x35a9fd=_0x35a9fd-0x0;var _0x26242e=_0xfe33[_0x35a9fd];return _0x26242e;};'use strict';var Sequelize=require('sequelize');module[_0x3fe3('0x0')]={'type':{'type':Sequelize['ENUM'](_0x3fe3('0x1'),'variable',_0x3fe3('0x2'),'keyValue',_0x3fe3('0x3')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x3fe3('0x4')](_0x3fe3('0x1'),_0x3fe3('0x5'),_0x3fe3('0x2'))},'keyContent':{'type':Sequelize[_0x3fe3('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x3fe3('0x6')]},'customField':{'type':Sequelize[_0x3fe3('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index dfef0cd..96621d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40c3=['options','then','include','findAll','show','params','keys','includeAll','catch','create','body','find','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','json','offset','limit','count','set','Content-Range','apply','reject','save','update','end','sendStatus','error','stack','name','send','index','ServicenowField','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','filters','filter','merge','where','VIRTUAL'];(function(_0x46de0b,_0x6b9313){var _0x5e8fa9=function(_0x28e0b5){while(--_0x28e0b5){_0x46de0b['push'](_0x46de0b['shift']());}};_0x5e8fa9(++_0x6b9313);}(_0x40c3,0x188));var _0x340c=function(_0x1ccdf7,_0x215d5a){_0x1ccdf7=_0x1ccdf7-0x0;var _0x52a0ae=_0x40c3[_0x1ccdf7];return _0x52a0ae;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x340c('0x0'));var zipdir=require(_0x340c('0x1'));var jsonpatch=require(_0x340c('0x2'));var rp=require(_0x340c('0x3'));var moment=require(_0x340c('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x340c('0x5'));var util=require(_0x340c('0x6'));var path=require(_0x340c('0x7'));var sox=require(_0x340c('0x8'));var csv=require(_0x340c('0x9'));var ejs=require(_0x340c('0xa'));var fs=require('fs');var fs_extra=require(_0x340c('0xb'));var _=require(_0x340c('0xc'));var squel=require(_0x340c('0xd'));var crypto=require(_0x340c('0xe'));var jsforce=require(_0x340c('0xf'));var deskjs=require(_0x340c('0x10'));var toCsv=require('to-csv');var querystring=require(_0x340c('0x11'));var Papa=require(_0x340c('0x12'));var Redis=require(_0x340c('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x340c('0x14'));var as=require(_0x340c('0x15'));var hardwareService=require(_0x340c('0x16'));var logger=require(_0x340c('0x17'))(_0x340c('0x18'));var utils=require(_0x340c('0x19'));var config=require(_0x340c('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b8f45,_0x3b4622){_0x3b4622=_0x3b4622||0xcc;return function(_0x2911f4){if(_0x2911f4){return _0x2b8f45['sendStatus'](_0x3b4622);}return _0x2b8f45[_0x340c('0x1b')](_0x3b4622)['end']();};}function respondWithResult(_0x138038,_0x6e44e5){_0x6e44e5=_0x6e44e5||0xc8;return function(_0x1a79c1){if(_0x1a79c1){return _0x138038['status'](_0x6e44e5)[_0x340c('0x1c')](_0x1a79c1);}};}function respondWithFilteredResult(_0x1176cd,_0x18b8f9){return function(_0x55950d){if(_0x55950d){var _0x4535fa=typeof _0x18b8f9[_0x340c('0x1d')]==='undefined'&&typeof _0x18b8f9[_0x340c('0x1e')]==='undefined';var _0x59de45=_0x55950d[_0x340c('0x1f')];var _0x45761e=_0x4535fa?0x0:_0x18b8f9['offset'];var _0x194425=_0x4535fa?_0x55950d['count']:_0x18b8f9[_0x340c('0x1d')]+_0x18b8f9[_0x340c('0x1e')];var _0x47dcde;if(_0x194425>=_0x59de45){_0x194425=_0x59de45;_0x47dcde=0xc8;}else{_0x47dcde=0xce;}_0x1176cd['status'](_0x47dcde);return _0x1176cd[_0x340c('0x20')](_0x340c('0x21'),_0x45761e+'-'+_0x194425+'/'+_0x59de45)[_0x340c('0x1c')](_0x55950d);}return null;};}function patchUpdates(_0x3d9613){return function(_0x2bb2a4){try{jsonpatch[_0x340c('0x22')](_0x2bb2a4,_0x3d9613,!![]);}catch(_0x63bc20){return BPromise[_0x340c('0x23')](_0x63bc20);}return _0x2bb2a4[_0x340c('0x24')]();};}function saveUpdates(_0x145b89,_0x32b2e5){return function(_0x27d581){if(_0x27d581){return _0x27d581[_0x340c('0x25')](_0x145b89)['then'](function(_0x1693c9){return _0x1693c9;});}return null;};}function removeEntity(_0x39b498,_0x25cefd){return function(_0x691bbc){if(_0x691bbc){return _0x691bbc['destroy']()['then'](function(){_0x39b498[_0x340c('0x1b')](0xcc)[_0x340c('0x26')]();});}};}function handleEntityNotFound(_0xdb53fe,_0x49e05c){return function(_0x458a8b){if(!_0x458a8b){_0xdb53fe[_0x340c('0x27')](0x194);}return _0x458a8b;};}function handleError(_0x24b501,_0x24a32d){_0x24a32d=_0x24a32d||0x1f4;return function(_0x2e1275){logger[_0x340c('0x28')](_0x2e1275[_0x340c('0x29')]);if(_0x2e1275[_0x340c('0x2a')]){delete _0x2e1275[_0x340c('0x2a')];}_0x24b501[_0x340c('0x1b')](_0x24a32d)[_0x340c('0x2b')](_0x2e1275);};}exports[_0x340c('0x2c')]=function(_0x3134ba,_0x12fa32){var _0x40184a={},_0x37e161={},_0x556c75={'count':0x0,'rows':[]};var _0x4a1cfb=_['map'](db[_0x340c('0x2d')][_0x340c('0x2e')],function(_0x1e1625){return{'name':_0x1e1625[_0x340c('0x2f')],'type':_0x1e1625[_0x340c('0x30')][_0x340c('0x31')]};});_0x37e161[_0x340c('0x32')]=_['map'](_0x4a1cfb,_0x340c('0x2a'));_0x37e161[_0x340c('0x33')]=_['keys'](_0x3134ba[_0x340c('0x33')]);_0x37e161['filters']=_[_0x340c('0x34')](_0x37e161[_0x340c('0x32')],_0x37e161[_0x340c('0x33')]);_0x40184a[_0x340c('0x35')]=_[_0x340c('0x34')](_0x37e161['model'],qs['fields'](_0x3134ba[_0x340c('0x33')][_0x340c('0x36')]));_0x40184a[_0x340c('0x35')]=_0x40184a[_0x340c('0x35')][_0x340c('0x37')]?_0x40184a[_0x340c('0x35')]:_0x37e161[_0x340c('0x32')];if(!_0x3134ba['query'][_0x340c('0x38')](_0x340c('0x39'))){_0x40184a[_0x340c('0x1e')]=qs[_0x340c('0x1e')](_0x3134ba[_0x340c('0x33')]['limit']);_0x40184a[_0x340c('0x1d')]=qs[_0x340c('0x1d')](_0x3134ba[_0x340c('0x33')]['offset']);}_0x40184a[_0x340c('0x3a')]=qs['sort'](_0x3134ba[_0x340c('0x33')]['sort']);_0x40184a['where']=qs[_0x340c('0x3b')](_['pick'](_0x3134ba[_0x340c('0x33')],_0x37e161[_0x340c('0x3b')]),_0x4a1cfb);if(_0x3134ba['query'][_0x340c('0x3c')]){_0x40184a['where']=_[_0x340c('0x3d')](_0x40184a[_0x340c('0x3e')],{'$or':_['map'](_0x4a1cfb,function(_0xf84443){if(_0xf84443[_0x340c('0x30')]!==_0x340c('0x3f')){var _0x2b4a85={};_0x2b4a85[_0xf84443['name']]={'$like':'%'+_0x3134ba[_0x340c('0x33')]['filter']+'%'};return _0x2b4a85;}})});}_0x40184a=_[_0x340c('0x3d')]({},_0x40184a,_0x3134ba[_0x340c('0x40')]);var _0x250e76={'where':_0x40184a[_0x340c('0x3e')]};return db[_0x340c('0x2d')][_0x340c('0x1f')](_0x250e76)[_0x340c('0x41')](function(_0x30b921){_0x556c75['count']=_0x30b921;if(_0x3134ba[_0x340c('0x33')]['includeAll']){_0x40184a[_0x340c('0x42')]=[{'all':!![]}];}return db[_0x340c('0x2d')][_0x340c('0x43')](_0x40184a);})[_0x340c('0x41')](function(_0x29f22d){_0x556c75['rows']=_0x29f22d;return _0x556c75;})['then'](respondWithFilteredResult(_0x12fa32,_0x40184a))['catch'](handleError(_0x12fa32,null));};exports[_0x340c('0x44')]=function(_0x363308,_0x19875a){var _0x5b4eed={'raw':!![],'where':{'id':_0x363308[_0x340c('0x45')]['id']}},_0x45f15d={};_0x45f15d[_0x340c('0x32')]=_[_0x340c('0x46')](db['ServicenowField'][_0x340c('0x2e')]);_0x45f15d['query']=_['keys'](_0x363308[_0x340c('0x33')]);_0x45f15d[_0x340c('0x3b')]=_[_0x340c('0x34')](_0x45f15d[_0x340c('0x32')],_0x45f15d[_0x340c('0x33')]);_0x5b4eed['attributes']=_['intersection'](_0x45f15d[_0x340c('0x32')],qs[_0x340c('0x36')](_0x363308[_0x340c('0x33')][_0x340c('0x36')]));_0x5b4eed[_0x340c('0x35')]=_0x5b4eed[_0x340c('0x35')][_0x340c('0x37')]?_0x5b4eed[_0x340c('0x35')]:_0x45f15d[_0x340c('0x32')];if(_0x363308[_0x340c('0x33')][_0x340c('0x47')]){_0x5b4eed['include']=[{'all':!![]}];}_0x5b4eed=_[_0x340c('0x3d')]({},_0x5b4eed,_0x363308[_0x340c('0x40')]);return db[_0x340c('0x2d')]['find'](_0x5b4eed)[_0x340c('0x41')](handleEntityNotFound(_0x19875a,null))[_0x340c('0x41')](respondWithResult(_0x19875a,null))[_0x340c('0x48')](handleError(_0x19875a,null));};exports['create']=function(_0x2a3bfa,_0x5d56fb){return db['ServicenowField'][_0x340c('0x49')](_0x2a3bfa[_0x340c('0x4a')],{})['then'](respondWithResult(_0x5d56fb,0xc9))['catch'](handleError(_0x5d56fb,null));};exports[_0x340c('0x25')]=function(_0x4d827c,_0x50de54){if(_0x4d827c[_0x340c('0x4a')]['id']){delete _0x4d827c[_0x340c('0x4a')]['id'];}return db[_0x340c('0x2d')]['find']({'where':{'id':_0x4d827c[_0x340c('0x45')]['id']}})[_0x340c('0x41')](handleEntityNotFound(_0x50de54,null))['then'](saveUpdates(_0x4d827c[_0x340c('0x4a')],null))[_0x340c('0x41')](respondWithResult(_0x50de54,null))[_0x340c('0x48')](handleError(_0x50de54,null));};exports['destroy']=function(_0x18c538,_0x13b920){return db['ServicenowField'][_0x340c('0x4b')]({'where':{'id':_0x18c538['params']['id']}})['then'](handleEntityNotFound(_0x13b920,null))['then'](removeEntity(_0x13b920,null))[_0x340c('0x48')](handleError(_0x13b920,null));};
\ No newline at end of file
+var _0x2172=['sort','where','filter','merge','options','ServicenowField','includeAll','include','rows','show','params','find','catch','create','body','update','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','error','name','send','index','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x2c7377,_0x32ade5){var _0x35e181=function(_0x1be1e6){while(--_0x1be1e6){_0x2c7377['push'](_0x2c7377['shift']());}};_0x35e181(++_0x32ade5);}(_0x2172,0xa0));var _0x2217=function(_0x2dc790,_0xaaed00){_0x2dc790=_0x2dc790-0x0;var _0x4c9757=_0x2172[_0x2dc790];return _0x4c9757;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2217('0x0'));var zipdir=require(_0x2217('0x1'));var jsonpatch=require(_0x2217('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2217('0x3'));var Mustache=require(_0x2217('0x4'));var util=require(_0x2217('0x5'));var path=require(_0x2217('0x6'));var sox=require(_0x2217('0x7'));var csv=require(_0x2217('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2217('0x9'));var _=require('lodash');var squel=require(_0x2217('0xa'));var crypto=require(_0x2217('0xb'));var jsforce=require(_0x2217('0xc'));var deskjs=require(_0x2217('0xd'));var toCsv=require(_0x2217('0x8'));var querystring=require(_0x2217('0xe'));var Papa=require(_0x2217('0xf'));var Redis=require('ioredis');var authService=require(_0x2217('0x10'));var qs=require(_0x2217('0x11'));var as=require(_0x2217('0x12'));var hardwareService=require(_0x2217('0x13'));var logger=require(_0x2217('0x14'))(_0x2217('0x15'));var utils=require(_0x2217('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2217('0x17'))['db'];function respondWithStatusCode(_0x21a44c,_0x37a69a){_0x37a69a=_0x37a69a||0xcc;return function(_0x19624a){if(_0x19624a){return _0x21a44c[_0x2217('0x18')](_0x37a69a);}return _0x21a44c[_0x2217('0x19')](_0x37a69a)[_0x2217('0x1a')]();};}function respondWithResult(_0x5c0269,_0x215a09){_0x215a09=_0x215a09||0xc8;return function(_0x300217){if(_0x300217){return _0x5c0269[_0x2217('0x19')](_0x215a09)[_0x2217('0x1b')](_0x300217);}};}function respondWithFilteredResult(_0x49046a,_0x170a76){return function(_0x1c3602){if(_0x1c3602){var _0x2708a0=typeof _0x170a76[_0x2217('0x1c')]===_0x2217('0x1d')&&typeof _0x170a76[_0x2217('0x1e')]===_0x2217('0x1d');var _0x1fae06=_0x1c3602[_0x2217('0x1f')];var _0x4f1767=_0x2708a0?0x0:_0x170a76[_0x2217('0x1c')];var _0xba6a66=_0x2708a0?_0x1c3602['count']:_0x170a76[_0x2217('0x1c')]+_0x170a76['limit'];var _0x4ccb73;if(_0xba6a66>=_0x1fae06){_0xba6a66=_0x1fae06;_0x4ccb73=0xc8;}else{_0x4ccb73=0xce;}_0x49046a['status'](_0x4ccb73);return _0x49046a[_0x2217('0x20')](_0x2217('0x21'),_0x4f1767+'-'+_0xba6a66+'/'+_0x1fae06)[_0x2217('0x1b')](_0x1c3602);}return null;};}function patchUpdates(_0x223afc){return function(_0x211189){try{jsonpatch[_0x2217('0x22')](_0x211189,_0x223afc,!![]);}catch(_0x2a30d2){return BPromise[_0x2217('0x23')](_0x2a30d2);}return _0x211189[_0x2217('0x24')]();};}function saveUpdates(_0x3abffc,_0x3e9856){return function(_0x53cbd0){if(_0x53cbd0){return _0x53cbd0['update'](_0x3abffc)['then'](function(_0x59cc41){return _0x59cc41;});}return null;};}function removeEntity(_0x32a365,_0x5b9498){return function(_0x3e4711){if(_0x3e4711){return _0x3e4711['destroy']()[_0x2217('0x25')](function(){_0x32a365[_0x2217('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xde2b17,_0xc85225){return function(_0xf8c39f){if(!_0xf8c39f){_0xde2b17[_0x2217('0x18')](0x194);}return _0xf8c39f;};}function handleError(_0x2285ed,_0x247f52){_0x247f52=_0x247f52||0x1f4;return function(_0x57ca11){logger[_0x2217('0x26')](_0x57ca11['stack']);if(_0x57ca11['name']){delete _0x57ca11[_0x2217('0x27')];}_0x2285ed[_0x2217('0x19')](_0x247f52)[_0x2217('0x28')](_0x57ca11);};}exports[_0x2217('0x29')]=function(_0x10a973,_0x4ff471){var _0x835472={},_0x2e3e77={},_0x1d09b8={'count':0x0,'rows':[]};var _0x393058=_['map'](db['ServicenowField'][_0x2217('0x2a')],function(_0x4e1702){return{'name':_0x4e1702[_0x2217('0x2b')],'type':_0x4e1702['type'][_0x2217('0x2c')]};});_0x2e3e77[_0x2217('0x2d')]=_[_0x2217('0x2e')](_0x393058,_0x2217('0x27'));_0x2e3e77[_0x2217('0x2f')]=_[_0x2217('0x30')](_0x10a973[_0x2217('0x2f')]);_0x2e3e77[_0x2217('0x31')]=_[_0x2217('0x32')](_0x2e3e77[_0x2217('0x2d')],_0x2e3e77[_0x2217('0x2f')]);_0x835472[_0x2217('0x33')]=_[_0x2217('0x32')](_0x2e3e77['model'],qs[_0x2217('0x34')](_0x10a973['query'][_0x2217('0x34')]));_0x835472[_0x2217('0x33')]=_0x835472[_0x2217('0x33')][_0x2217('0x35')]?_0x835472[_0x2217('0x33')]:_0x2e3e77['model'];if(!_0x10a973[_0x2217('0x2f')][_0x2217('0x36')](_0x2217('0x37'))){_0x835472[_0x2217('0x1e')]=qs[_0x2217('0x1e')](_0x10a973[_0x2217('0x2f')][_0x2217('0x1e')]);_0x835472[_0x2217('0x1c')]=qs[_0x2217('0x1c')](_0x10a973[_0x2217('0x2f')][_0x2217('0x1c')]);}_0x835472['order']=qs['sort'](_0x10a973['query'][_0x2217('0x38')]);_0x835472[_0x2217('0x39')]=qs[_0x2217('0x31')](_['pick'](_0x10a973[_0x2217('0x2f')],_0x2e3e77[_0x2217('0x31')]),_0x393058);if(_0x10a973['query'][_0x2217('0x3a')]){_0x835472[_0x2217('0x39')]=_[_0x2217('0x3b')](_0x835472[_0x2217('0x39')],{'$or':_[_0x2217('0x2e')](_0x393058,function(_0x1dfc69){if(_0x1dfc69['type']!=='VIRTUAL'){var _0x9b1a7={};_0x9b1a7[_0x1dfc69[_0x2217('0x27')]]={'$like':'%'+_0x10a973['query'][_0x2217('0x3a')]+'%'};return _0x9b1a7;}})});}_0x835472=_['merge']({},_0x835472,_0x10a973[_0x2217('0x3c')]);var _0x347a99={'where':_0x835472['where']};return db[_0x2217('0x3d')][_0x2217('0x1f')](_0x347a99)[_0x2217('0x25')](function(_0x1dddc2){_0x1d09b8[_0x2217('0x1f')]=_0x1dddc2;if(_0x10a973[_0x2217('0x2f')][_0x2217('0x3e')]){_0x835472[_0x2217('0x3f')]=[{'all':!![]}];}return db[_0x2217('0x3d')]['findAll'](_0x835472);})[_0x2217('0x25')](function(_0x4a447b){_0x1d09b8[_0x2217('0x40')]=_0x4a447b;return _0x1d09b8;})['then'](respondWithFilteredResult(_0x4ff471,_0x835472))['catch'](handleError(_0x4ff471,null));};exports[_0x2217('0x41')]=function(_0x10fd38,_0x1a6a04){var _0xb5eb77={'raw':!![],'where':{'id':_0x10fd38[_0x2217('0x42')]['id']}},_0x14f1f9={};_0x14f1f9[_0x2217('0x2d')]=_['keys'](db['ServicenowField'][_0x2217('0x2a')]);_0x14f1f9[_0x2217('0x2f')]=_[_0x2217('0x30')](_0x10fd38[_0x2217('0x2f')]);_0x14f1f9['filters']=_['intersection'](_0x14f1f9[_0x2217('0x2d')],_0x14f1f9[_0x2217('0x2f')]);_0xb5eb77[_0x2217('0x33')]=_[_0x2217('0x32')](_0x14f1f9['model'],qs[_0x2217('0x34')](_0x10fd38[_0x2217('0x2f')][_0x2217('0x34')]));_0xb5eb77[_0x2217('0x33')]=_0xb5eb77['attributes'][_0x2217('0x35')]?_0xb5eb77[_0x2217('0x33')]:_0x14f1f9[_0x2217('0x2d')];if(_0x10fd38[_0x2217('0x2f')][_0x2217('0x3e')]){_0xb5eb77[_0x2217('0x3f')]=[{'all':!![]}];}_0xb5eb77=_[_0x2217('0x3b')]({},_0xb5eb77,_0x10fd38[_0x2217('0x3c')]);return db[_0x2217('0x3d')][_0x2217('0x43')](_0xb5eb77)[_0x2217('0x25')](handleEntityNotFound(_0x1a6a04,null))[_0x2217('0x25')](respondWithResult(_0x1a6a04,null))[_0x2217('0x44')](handleError(_0x1a6a04,null));};exports[_0x2217('0x45')]=function(_0x4a2072,_0x1c688c){return db[_0x2217('0x3d')][_0x2217('0x45')](_0x4a2072[_0x2217('0x46')],{})[_0x2217('0x25')](respondWithResult(_0x1c688c,0xc9))[_0x2217('0x44')](handleError(_0x1c688c,null));};exports[_0x2217('0x47')]=function(_0x3f74bf,_0x4ece7b){if(_0x3f74bf[_0x2217('0x46')]['id']){delete _0x3f74bf[_0x2217('0x46')]['id'];}return db[_0x2217('0x3d')][_0x2217('0x43')]({'where':{'id':_0x3f74bf[_0x2217('0x42')]['id']}})['then'](handleEntityNotFound(_0x4ece7b,null))[_0x2217('0x25')](saveUpdates(_0x3f74bf[_0x2217('0x46')],null))[_0x2217('0x25')](respondWithResult(_0x4ece7b,null))[_0x2217('0x44')](handleError(_0x4ece7b,null));};exports['destroy']=function(_0x3f07a3,_0x6d572b){return db[_0x2217('0x3d')][_0x2217('0x43')]({'where':{'id':_0x3f07a3[_0x2217('0x42')]['id']}})['then'](handleEntityNotFound(_0x6d572b,null))['then'](removeEntity(_0x6d572b,null))[_0x2217('0x44')](handleError(_0x6d572b,null));};
\ No newline at end of file
index a911671..b3d781b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85d8=['exports','ServicenowField','int_servicenow_fields','servicenow_unique_index','lodash','util','moment','bluebird','request-promise','rimraf','../../config/environment','./intServicenowField.attributes'];(function(_0x31bd65,_0x77e2bc){var _0x164271=function(_0x54acfb){while(--_0x54acfb){_0x31bd65['push'](_0x31bd65['shift']());}};_0x164271(++_0x77e2bc);}(_0x85d8,0x13c));var _0x885d=function(_0x17387b,_0x4ae492){_0x17387b=_0x17387b-0x0;var _0x519ebf=_0x85d8[_0x17387b];return _0x519ebf;};'use strict';var _=require(_0x885d('0x0'));var util=require(_0x885d('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x885d('0x2'));var BPromise=require(_0x885d('0x3'));var rp=require(_0x885d('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x885d('0x5'));var config=require(_0x885d('0x6'));var attributes=require(_0x885d('0x7'));module[_0x885d('0x8')]=function(_0x2d5cda,_0x13bbd2){return _0x2d5cda['define'](_0x885d('0x9'),attributes,{'tableName':_0x885d('0xa'),'paranoid':![],'indexes':[{'name':_0x885d('0xb'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x54c4=['rimraf','../../config/environment','./intServicenowField.attributes','exports','servicenow_unique_index','lodash','../../config/logger','api','path'];(function(_0x5a91a5,_0x1eb099){var _0x8f99de=function(_0x579b28){while(--_0x579b28){_0x5a91a5['push'](_0x5a91a5['shift']());}};_0x8f99de(++_0x1eb099);}(_0x54c4,0xdd));var _0x454c=function(_0x5cfb3c,_0x5d884a){_0x5cfb3c=_0x5cfb3c-0x0;var _0x4e89c9=_0x54c4[_0x5cfb3c];return _0x4e89c9;};'use strict';var _=require(_0x454c('0x0'));var util=require('util');var logger=require(_0x454c('0x1'))(_0x454c('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x454c('0x3'));var rimraf=require(_0x454c('0x4'));var config=require(_0x454c('0x5'));var attributes=require(_0x454c('0x6'));module[_0x454c('0x7')]=function(_0x4f56de,_0x4d85a1){return _0x4f56de['define']('ServicenowField',attributes,{'tableName':'int_servicenow_fields','paranoid':![],'indexes':[{'name':_0x454c('0x8'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 629d242..05486e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x3d2a31,_0x1b576f){var _0x1bcb1a=function(_0x3601fb){while(--_0x3601fb){_0x3d2a31['push'](_0x3d2a31['shift']());}};_0x1bcb1a(++_0x1b576f);}(_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 moment=require(_0x3071('0x0'));var BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('ServicenowField,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('ServicenowField,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('ServicenowField,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
+var _0xac4a=['ServicenowField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','then','info','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0xac4a,0x13f));var _0xaac4=function(_0x432664,_0x4edf2e){_0x432664=_0x432664-0x0;var _0x3338b3=_0xac4a[_0x432664];return _0x3338b3;};'use strict';var _=require(_0xaac4('0x0'));var util=require(_0xaac4('0x1'));var moment=require(_0xaac4('0x2'));var BPromise=require(_0xaac4('0x3'));var rs=require(_0xaac4('0x4'));var fs=require('fs');var Redis=require(_0xaac4('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xaac4('0x6'))(_0xaac4('0x7'));var config=require(_0xaac4('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xaac4('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1cdfc5,_0x5870e8,_0x1e4283){return new BPromise(function(_0x27354c,_0x567295){return client['request'](_0x1cdfc5,_0x1e4283)[_0xaac4('0xa')](function(_0x50d114){logger[_0xaac4('0xb')]('ServicenowField,\x20%s,\x20%s',_0x5870e8,'request\x20sent');logger[_0xaac4('0xc')](_0xaac4('0xd'),_0x5870e8,_0xaac4('0xe'),JSON[_0xaac4('0xf')](_0x50d114));if(_0x50d114[_0xaac4('0x10')]){if(_0x50d114['error']['code']===0x1f4){logger[_0xaac4('0x10')](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')]['message']);return _0x567295(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}logger['error'](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);return _0x27354c(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}else{logger[_0xaac4('0xb')](_0xaac4('0x11'),_0x5870e8,_0xaac4('0xe'));_0x27354c(_0x50d114[_0xaac4('0x13')][_0xaac4('0x12')]);}})[_0xaac4('0x14')](function(_0x1766c2){logger[_0xaac4('0x10')]('ServicenowField,\x20%s,\x20%s',_0x5870e8,_0x1766c2);_0x567295(_0x1766c2);});});}
\ No newline at end of file
index dd2815c..94462e4 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(_0x11e8d7,_0x92a74e){var _0x344c3a=function(_0x3c6964){while(--_0x3c6964){_0x11e8d7['push'](_0x11e8d7['shift']());}};_0x344c3a(++_0x92a74e);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'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(_0x23a229,_0x35eece){var _0x4f00fd=function(_0x12c867){while(--_0x12c867){_0x23a229['push'](_0x23a229['shift']());}};_0x4f00fd(++_0x35eece);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('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 f15d598..0bbc3b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x11c638,_0xca59a6){var _0x301cd3=function(_0x369e22){while(--_0x369e22){_0x11c638['push'](_0x11c638['shift']());}};_0x301cd3(++_0xca59a6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xa9e0[_0x9df060];return _0x338dfe;};'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(_0x5c1744,_0x4c55e3){var _0xd2ee9c=function(_0x3405d6){while(--_0x3405d6){_0x5c1744['push'](_0x5c1744['shift']());}};_0xd2ee9c(++_0x4c55e3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'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 a5ee03e..ac366f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb35a=['crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined','limit','count','set','apply','reject','save','destroy','then','end','error','stack','name','send','map','SugarcrmAccount','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','update','getConfigurations','findOne','SugarcrmConfiguration','AccountId','Subjects','getSubjects','Descriptions','channel','SugarcrmField','getFields','assigned_user_id','created_by','date_start','duration_minutes','parent_id','parent_type','parent_name','direction','username','password','remoteUri','substring','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','JSON','stringify','xCALLY\x20Motion\x20Integration','Password\x20Expired','Calls','values','module_fields','remove','includes','endsWith','value','test','statusCode','Wrong\x20credentials','eml-format','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x1f9f37,_0x18776e){var _0x21c080=function(_0x4acb93){while(--_0x4acb93){_0x1f9f37['push'](_0x1f9f37['shift']());}};_0x21c080(++_0x18776e);}(_0xb35a,0x1d7));var _0xab35=function(_0x19ac6d,_0x3fe806){_0x19ac6d=_0x19ac6d-0x0;var _0x11a628=_0xb35a[_0x19ac6d];return _0x11a628;};'use strict';var emlformat=require(_0xab35('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xab35('0x1'));var rp=require('request-promise');var moment=require(_0xab35('0x2'));var BPromise=require(_0xab35('0x3'));var Mustache=require(_0xab35('0x4'));var util=require(_0xab35('0x5'));var path=require(_0xab35('0x6'));var sox=require(_0xab35('0x7'));var csv=require(_0xab35('0x8'));var ejs=require(_0xab35('0x9'));var fs=require('fs');var fs_extra=require(_0xab35('0xa'));var _=require(_0xab35('0xb'));var squel=require(_0xab35('0xc'));var crypto=require(_0xab35('0xd'));var jsforce=require(_0xab35('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xab35('0xf'));var Papa=require(_0xab35('0x10'));var Redis=require(_0xab35('0x11'));var authService=require(_0xab35('0x12'));var qs=require(_0xab35('0x13'));var as=require(_0xab35('0x14'));var hardwareService=require(_0xab35('0x15'));var logger=require(_0xab35('0x16'))(_0xab35('0x17'));var utils=require(_0xab35('0x18'));var config=require(_0xab35('0x19'));var licenseUtil=require(_0xab35('0x1a'));var db=require(_0xab35('0x1b'))['db'];var integrations=require(_0xab35('0x1c'));function respondWithStatusCode(_0x1d994f,_0x1f74d2){_0x1f74d2=_0x1f74d2||0xcc;return function(_0x354ef5){if(_0x354ef5){return _0x1d994f['sendStatus'](_0x1f74d2);}return _0x1d994f['status'](_0x1f74d2)['end']();};}function respondWithResult(_0x389621,_0x2990eb){_0x2990eb=_0x2990eb||0xc8;return function(_0x51b143){if(_0x51b143){return _0x389621[_0xab35('0x1d')](_0x2990eb)[_0xab35('0x1e')](_0x51b143);}};}function respondWithFilteredResult(_0x580e3b,_0x23a40f){return function(_0x54de24){if(_0x54de24){var _0x6705=typeof _0x23a40f[_0xab35('0x1f')]===_0xab35('0x20')&&typeof _0x23a40f[_0xab35('0x21')]===_0xab35('0x20');var _0x2e69c9=_0x54de24[_0xab35('0x22')];var _0x3ae42c=_0x6705?0x0:_0x23a40f[_0xab35('0x1f')];var _0x55ea92=_0x6705?_0x54de24[_0xab35('0x22')]:_0x23a40f[_0xab35('0x1f')]+_0x23a40f[_0xab35('0x21')];var _0x14c98f;if(_0x55ea92>=_0x2e69c9){_0x55ea92=_0x2e69c9;_0x14c98f=0xc8;}else{_0x14c98f=0xce;}_0x580e3b[_0xab35('0x1d')](_0x14c98f);return _0x580e3b[_0xab35('0x23')]('Content-Range',_0x3ae42c+'-'+_0x55ea92+'/'+_0x2e69c9)[_0xab35('0x1e')](_0x54de24);}return null;};}function patchUpdates(_0x86a012){return function(_0x2159d7){try{jsonpatch[_0xab35('0x24')](_0x2159d7,_0x86a012,!![]);}catch(_0x24ffa4){return BPromise[_0xab35('0x25')](_0x24ffa4);}return _0x2159d7[_0xab35('0x26')]();};}function saveUpdates(_0x56b9b1,_0x15d9cf){return function(_0x575e68){if(_0x575e68){return _0x575e68['update'](_0x56b9b1)['then'](function(_0x4b74d2){return _0x4b74d2;});}return null;};}function removeEntity(_0x46b47f,_0x3663de){return function(_0x52ace4){if(_0x52ace4){return _0x52ace4[_0xab35('0x27')]()[_0xab35('0x28')](function(){_0x46b47f[_0xab35('0x1d')](0xcc)[_0xab35('0x29')]();});}};}function handleEntityNotFound(_0x19ccc6,_0x272ebf){return function(_0x322192){if(!_0x322192){_0x19ccc6['sendStatus'](0x194);}return _0x322192;};}function handleError(_0x28ddc5,_0x5305a4){_0x5305a4=_0x5305a4||0x1f4;return function(_0x51dbd5){logger[_0xab35('0x2a')](_0x51dbd5[_0xab35('0x2b')]);if(_0x51dbd5['name']){delete _0x51dbd5[_0xab35('0x2c')];}_0x28ddc5[_0xab35('0x1d')](_0x5305a4)[_0xab35('0x2d')](_0x51dbd5);};}exports['index']=function(_0x42dff7,_0x48d0d1){var _0x1254f5={},_0x229b77={},_0xe3c060={'count':0x0,'rows':[]};var _0x363357=_[_0xab35('0x2e')](db[_0xab35('0x2f')]['rawAttributes'],function(_0x483e67){return{'name':_0x483e67[_0xab35('0x30')],'type':_0x483e67[_0xab35('0x31')][_0xab35('0x32')]};});_0x229b77[_0xab35('0x33')]=_[_0xab35('0x2e')](_0x363357,_0xab35('0x2c'));_0x229b77[_0xab35('0x34')]=_[_0xab35('0x35')](_0x42dff7[_0xab35('0x34')]);_0x229b77['filters']=_[_0xab35('0x36')](_0x229b77[_0xab35('0x33')],_0x229b77['query']);_0x1254f5[_0xab35('0x37')]=_[_0xab35('0x36')](_0x229b77[_0xab35('0x33')],qs[_0xab35('0x38')](_0x42dff7['query'][_0xab35('0x38')]));_0x1254f5[_0xab35('0x37')]=_0x1254f5[_0xab35('0x37')][_0xab35('0x39')]?_0x1254f5['attributes']:_0x229b77[_0xab35('0x33')];if(!_0x42dff7['query'][_0xab35('0x3a')](_0xab35('0x3b'))){_0x1254f5[_0xab35('0x21')]=qs[_0xab35('0x21')](_0x42dff7[_0xab35('0x34')][_0xab35('0x21')]);_0x1254f5['offset']=qs[_0xab35('0x1f')](_0x42dff7[_0xab35('0x34')]['offset']);}_0x1254f5[_0xab35('0x3c')]=qs['sort'](_0x42dff7[_0xab35('0x34')][_0xab35('0x3d')]);_0x1254f5['where']=qs[_0xab35('0x3e')](_[_0xab35('0x3f')](_0x42dff7[_0xab35('0x34')],_0x229b77[_0xab35('0x3e')]),_0x363357);if(_0x42dff7[_0xab35('0x34')][_0xab35('0x40')]){_0x1254f5[_0xab35('0x41')]=_[_0xab35('0x42')](_0x1254f5[_0xab35('0x41')],{'$or':_[_0xab35('0x2e')](_0x363357,function(_0x46b5f2){if(_0x46b5f2['type']!=='VIRTUAL'){var _0x132372={};_0x132372[_0x46b5f2['name']]={'$like':'%'+_0x42dff7[_0xab35('0x34')][_0xab35('0x40')]+'%'};return _0x132372;}})});}_0x1254f5=_[_0xab35('0x42')]({},_0x1254f5,_0x42dff7[_0xab35('0x43')]);var _0x369152={'where':_0x1254f5['where']};return db[_0xab35('0x2f')][_0xab35('0x22')](_0x369152)['then'](function(_0x9bd658){_0xe3c060['count']=_0x9bd658;if(_0x42dff7[_0xab35('0x34')][_0xab35('0x44')]){_0x1254f5[_0xab35('0x45')]=[{'all':!![]}];}return db[_0xab35('0x2f')][_0xab35('0x46')](_0x1254f5);})['then'](function(_0x3d7bad){_0xe3c060[_0xab35('0x47')]=_0x3d7bad;return _0xe3c060;})[_0xab35('0x28')](respondWithFilteredResult(_0x48d0d1,_0x1254f5))[_0xab35('0x48')](handleError(_0x48d0d1,null));};exports[_0xab35('0x49')]=function(_0x3e6628,_0x3afab3){var _0x322a22={'raw':![],'where':{'id':_0x3e6628[_0xab35('0x4a')]['id']}},_0x3052fc={};_0x3052fc['model']=_[_0xab35('0x35')](db[_0xab35('0x2f')][_0xab35('0x4b')]);_0x3052fc[_0xab35('0x34')]=_[_0xab35('0x35')](_0x3e6628['query']);_0x3052fc[_0xab35('0x3e')]=_[_0xab35('0x36')](_0x3052fc[_0xab35('0x33')],_0x3052fc['query']);_0x322a22[_0xab35('0x37')]=_['intersection'](_0x3052fc[_0xab35('0x33')],qs[_0xab35('0x38')](_0x3e6628[_0xab35('0x34')]['fields']));_0x322a22[_0xab35('0x37')]=_0x322a22[_0xab35('0x37')][_0xab35('0x39')]?_0x322a22[_0xab35('0x37')]:_0x3052fc[_0xab35('0x33')];if(_0x3e6628[_0xab35('0x34')][_0xab35('0x44')]){_0x322a22[_0xab35('0x45')]=[{'all':!![]}];}_0x322a22=_[_0xab35('0x42')]({},_0x322a22,_0x3e6628[_0xab35('0x43')]);return db[_0xab35('0x2f')][_0xab35('0x4c')](_0x322a22)['then'](handleEntityNotFound(_0x3afab3,null))[_0xab35('0x28')](respondWithResult(_0x3afab3,null))['catch'](handleError(_0x3afab3,null));};exports[_0xab35('0x4d')]=function(_0x11cafe,_0x21a95f){return db[_0xab35('0x2f')][_0xab35('0x4d')](_0x11cafe[_0xab35('0x4e')],{})[_0xab35('0x28')](respondWithResult(_0x21a95f,0xc9))[_0xab35('0x48')](handleError(_0x21a95f,null));};exports[_0xab35('0x4f')]=function(_0x496dd7,_0x36a268){if(_0x496dd7[_0xab35('0x4e')]['id']){delete _0x496dd7[_0xab35('0x4e')]['id'];}return db[_0xab35('0x2f')][_0xab35('0x4c')]({'where':{'id':_0x496dd7[_0xab35('0x4a')]['id']}})[_0xab35('0x28')](handleEntityNotFound(_0x36a268,null))[_0xab35('0x28')](saveUpdates(_0x496dd7[_0xab35('0x4e')],null))[_0xab35('0x28')](respondWithResult(_0x36a268,null))[_0xab35('0x48')](handleError(_0x36a268,null));};exports[_0xab35('0x27')]=function(_0x44dbe7,_0x3fbb39){return db[_0xab35('0x2f')][_0xab35('0x4c')]({'where':{'id':_0x44dbe7[_0xab35('0x4a')]['id']}})[_0xab35('0x28')](handleEntityNotFound(_0x3fbb39,null))[_0xab35('0x28')](removeEntity(_0x3fbb39,null))['catch'](handleError(_0x3fbb39,null));};exports[_0xab35('0x50')]=function(_0x5cfc59,_0x504717,_0x574c0d){var _0x4b76f4={};var _0x56f2cb={};var _0x13a826;var _0x45faae;return db[_0xab35('0x2f')][_0xab35('0x51')]({'where':{'id':_0x5cfc59[_0xab35('0x4a')]['id']}})[_0xab35('0x28')](handleEntityNotFound(_0x504717,null))['then'](function(_0x3e944a){if(_0x3e944a){_0x13a826=_0x3e944a;_0x56f2cb[_0xab35('0x33')]=_[_0xab35('0x35')](db[_0xab35('0x52')][_0xab35('0x4b')]);_0x56f2cb[_0xab35('0x34')]=_[_0xab35('0x35')](_0x5cfc59[_0xab35('0x34')]);_0x56f2cb['filters']=_[_0xab35('0x36')](_0x56f2cb[_0xab35('0x33')],_0x56f2cb[_0xab35('0x34')]);_0x4b76f4['attributes']=_[_0xab35('0x36')](_0x56f2cb[_0xab35('0x33')],qs[_0xab35('0x38')](_0x5cfc59['query']['fields']));_0x4b76f4[_0xab35('0x37')]=_0x4b76f4[_0xab35('0x37')][_0xab35('0x39')]?_0x4b76f4[_0xab35('0x37')]:_0x56f2cb['model'];_0x4b76f4[_0xab35('0x3c')]=qs[_0xab35('0x3d')](_0x5cfc59['query']['sort']);_0x4b76f4[_0xab35('0x41')]=qs[_0xab35('0x3e')](_[_0xab35('0x3f')](_0x5cfc59[_0xab35('0x34')],_0x56f2cb[_0xab35('0x3e')]));if(_0x5cfc59[_0xab35('0x34')][_0xab35('0x40')]){_0x4b76f4[_0xab35('0x41')]=_[_0xab35('0x42')](_0x4b76f4['where'],{'$or':_[_0xab35('0x2e')](_0x4b76f4[_0xab35('0x37')],function(_0xd8dd31){var _0x3e0773={};_0x3e0773[_0xd8dd31]={'$like':'%'+_0x5cfc59[_0xab35('0x34')][_0xab35('0x40')]+'%'};return _0x3e0773;})});}_0x4b76f4=_[_0xab35('0x42')]({},_0x4b76f4,_0x5cfc59['options']);return _0x13a826[_0xab35('0x50')](_0x4b76f4);}})['then'](function(_0x76ad63){if(_0x76ad63){_0x45faae=_0x76ad63[_0xab35('0x39')];if(!_0x5cfc59[_0xab35('0x34')][_0xab35('0x3a')]('nolimit')){_0x4b76f4[_0xab35('0x21')]=qs[_0xab35('0x21')](_0x5cfc59[_0xab35('0x34')]['limit']);_0x4b76f4[_0xab35('0x1f')]=qs[_0xab35('0x1f')](_0x5cfc59[_0xab35('0x34')]['offset']);}return _0x13a826[_0xab35('0x50')](_0x4b76f4);}})[_0xab35('0x28')](function(_0x1a37e2){if(_0x1a37e2){return _0x1a37e2?{'count':_0x45faae,'rows':_0x1a37e2}:null;}})['then'](respondWithResult(_0x504717,null))['catch'](handleError(_0x504717,null));};exports['addConfiguration']=function(_0x2ebb8e,_0xcb10a9,_0x3b19ac){if(_0x2ebb8e[_0xab35('0x4e')]['id']){delete _0x2ebb8e[_0xab35('0x4e')]['id'];}return db[_0xab35('0x2f')][_0xab35('0x51')]({'where':{'id':_0x2ebb8e[_0xab35('0x4a')]['id']}})['then'](handleEntityNotFound(_0xcb10a9,null))[_0xab35('0x28')](function(_0x53da29){if(_0x53da29){_0x2ebb8e[_0xab35('0x4e')][_0xab35('0x53')]=_0x53da29['id'];_0x2ebb8e[_0xab35('0x4e')][_0xab35('0x54')]=integrations[_0xab35('0x55')](_0x2ebb8e[_0xab35('0x4e')]['channel'],_0x2ebb8e[_0xab35('0x4e')][_0xab35('0x31')]);_0x2ebb8e[_0xab35('0x4e')][_0xab35('0x56')]=integrations['getDescriptions'](_0x2ebb8e[_0xab35('0x4e')][_0xab35('0x57')],_0x2ebb8e['body'][_0xab35('0x31')]);return db[_0xab35('0x52')]['create'](_0x2ebb8e[_0xab35('0x4e')],{'include':[{'model':db[_0xab35('0x58')],'as':_0xab35('0x54')},{'model':db['SugarcrmField'],'as':_0xab35('0x56')}]});}return null;})['then'](respondWithResult(_0xcb10a9,null))[_0xab35('0x48')](handleError(_0xcb10a9,null));};exports[_0xab35('0x59')]=function(_0x572218,_0x347831,_0xcb03c4){var _0x329245='';var _0x2fb581=['id',_0xab35('0x2c'),_0xab35('0x5a'),_0xab35('0x5b'),'description',_0xab35('0x5c'),'duration_hours',_0xab35('0x5d'),_0xab35('0x5e'),_0xab35('0x5f'),_0xab35('0x60'),_0xab35('0x61')];return db[_0xab35('0x2f')]['findOne']({'where':{'id':_0x572218[_0xab35('0x4a')]['id']},'attributes':['id',_0xab35('0x62'),_0xab35('0x63'),_0xab35('0x64')]})[_0xab35('0x28')](handleEntityNotFound(_0x347831,null))[_0xab35('0x28')](function(_0x12cbeb){if(_0x12cbeb){_0x329245=_0x12cbeb['remoteUri'];var _0x540728=_0x329245['slice'](-0x1);if(_0x540728==='/'){_0x329245=_0x329245[_0xab35('0x65')](0x0,_0x329245[_0xab35('0x66')](_0x540728));}return rp({'method':_0xab35('0x67'),'uri':util[_0xab35('0x68')](_0xab35('0x69'),_0x329245,_0xab35('0x6a')),'json':!![],'form':{'method':'login','input_type':_0xab35('0x6b'),'response_type':_0xab35('0x6b'),'rest_data':JSON[_0xab35('0x6c')]({'user_auth':{'user_name':_0x12cbeb[_0xab35('0x62')],'password':_0x12cbeb[_0xab35('0x63')],'encryption':'PLAIN'},'application':_0xab35('0x6d')})}});}})['then'](function(_0x56167d){if(_0x56167d&&_0x56167d[_0xab35('0x2c')]!=='Invalid\x20Login'&&_0x56167d[_0xab35('0x2c')]!==_0xab35('0x6e')){return rp({'method':_0xab35('0x67'),'uri':util['format'](_0xab35('0x69'),_0x329245,_0xab35('0x6a')),'json':!![],'form':{'method':'get_module_fields','input_type':_0xab35('0x6b'),'response_type':_0xab35('0x6b'),'rest_data':JSON[_0xab35('0x6c')]({'session':_0x56167d['id'],'module_name':_0xab35('0x6f')})}})[_0xab35('0x28')](function(_0x196a3e){if(_0x196a3e){var _0xcc185c=_[_0xab35('0x70')](_0x196a3e[_0xab35('0x71')]);_[_0xab35('0x72')](_0xcc185c,function(_0x5048de){return _0x2fb581[_0xab35('0x73')](_0x5048de[_0xab35('0x2c')]);});return{'count':_0xcc185c[_0xab35('0x39')],'rows':_['map'](_0xcc185c,function(_0x2c1746){return{'id':_0x2c1746[_0xab35('0x2c')],'name':_0x2c1746['label'],'custom':_[_0xab35('0x74')](_0x2c1746[_0xab35('0x2c')],'_c')?!![]:![],'options':_0x2c1746[_0xab35('0x43')]?_[_0xab35('0x2e')](_['values'](_0x2c1746[_0xab35('0x43')]),function(_0x21c225){return{'name':_0x21c225[_0xab35('0x75')],'value':_0x21c225['name']};}):[]};})};}})['then'](respondWithResult(_0x347831,null))[_0xab35('0x48')](function(_0x31988a){var _0x5dc533=_0x572218[_0xab35('0x34')][_0xab35('0x76')]?0x1f4:_0x31988a[_0xab35('0x77')]||0x1f4;logger[_0xab35('0x2a')]('getFields,\x20%s,\x20%s,\x20%s',_0xab35('0x59'),_0x5dc533,JSON[_0xab35('0x6c')](_0x31988a));delete _0x31988a[_0xab35('0x2c')];if(_0x5dc533===0x191){_0x5dc533=0x190;}_0x347831[_0xab35('0x1d')](_0x5dc533)['send'](_0x572218['query'][_0xab35('0x76')]?{'message':_0xab35('0x78'),'statusCode':_0x31988a[_0xab35('0x77')]}:_0x31988a);});}else{var _0xcb27b3=0x1f4;_0x347831[_0xab35('0x1d')](_0xcb27b3)[_0xab35('0x2d')]({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
+var _0x6b94=['rimraf','request-promise','moment','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','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','offset','count','set','save','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filter','merge','VIRTUAL','options','SugarcrmAccount','include','findAll','rows','show','params','includeAll','find','create','body','catch','update','destroy','SugarcrmConfiguration','getConfigurations','nolimit','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','getDescriptions','SugarcrmField','Descriptions','getFields','assigned_user_id','created_by','description','date_start','duration_hours','parent_id','parent_type','parent_name','direction','password','remoteUri','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','JSON','stringify','username','PLAIN','xCALLY\x20Motion\x20Integration','Password\x20Expired','get_module_fields','Calls','module_fields','remove','includes','label','endsWith','value','statusCode','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','eml-format'];(function(_0x46f006,_0x24b210){var _0x41f20e=function(_0xf6f84d){while(--_0xf6f84d){_0x46f006['push'](_0x46f006['shift']());}};_0x41f20e(++_0x24b210);}(_0x6b94,0x78));var _0x46b9=function(_0x5940b8,_0x209a9b){_0x5940b8=_0x5940b8-0x0;var _0x3e0976=_0x6b94[_0x5940b8];return _0x3e0976;};'use strict';var emlformat=require(_0x46b9('0x0'));var rimraf=require(_0x46b9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x46b9('0x2'));var moment=require(_0x46b9('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x46b9('0x4'));var util=require(_0x46b9('0x5'));var path=require('path');var sox=require(_0x46b9('0x6'));var csv=require(_0x46b9('0x7'));var ejs=require(_0x46b9('0x8'));var fs=require('fs');var fs_extra=require(_0x46b9('0x9'));var _=require(_0x46b9('0xa'));var squel=require(_0x46b9('0xb'));var crypto=require(_0x46b9('0xc'));var jsforce=require(_0x46b9('0xd'));var deskjs=require(_0x46b9('0xe'));var toCsv=require(_0x46b9('0x7'));var querystring=require(_0x46b9('0xf'));var Papa=require(_0x46b9('0x10'));var Redis=require('ioredis');var authService=require(_0x46b9('0x11'));var qs=require(_0x46b9('0x12'));var as=require(_0x46b9('0x13'));var hardwareService=require(_0x46b9('0x14'));var logger=require(_0x46b9('0x15'))('api');var utils=require(_0x46b9('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x46b9('0x17'));var db=require(_0x46b9('0x18'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x2bb478,_0x3493c5){_0x3493c5=_0x3493c5||0xcc;return function(_0x5ab3b2){if(_0x5ab3b2){return _0x2bb478[_0x46b9('0x19')](_0x3493c5);}return _0x2bb478[_0x46b9('0x1a')](_0x3493c5)[_0x46b9('0x1b')]();};}function respondWithResult(_0x382f45,_0xd1e63c){_0xd1e63c=_0xd1e63c||0xc8;return function(_0x4e29ed){if(_0x4e29ed){return _0x382f45[_0x46b9('0x1a')](_0xd1e63c)[_0x46b9('0x1c')](_0x4e29ed);}};}function respondWithFilteredResult(_0x4930e9,_0x3a9622){return function(_0x51045f){if(_0x51045f){var _0x3998db=typeof _0x3a9622['offset']==='undefined'&&typeof _0x3a9622[_0x46b9('0x1d')]==='undefined';var _0x111d32=_0x51045f['count'];var _0x4bda55=_0x3998db?0x0:_0x3a9622[_0x46b9('0x1e')];var _0x548dba=_0x3998db?_0x51045f[_0x46b9('0x1f')]:_0x3a9622[_0x46b9('0x1e')]+_0x3a9622[_0x46b9('0x1d')];var _0x24d870;if(_0x548dba>=_0x111d32){_0x548dba=_0x111d32;_0x24d870=0xc8;}else{_0x24d870=0xce;}_0x4930e9['status'](_0x24d870);return _0x4930e9[_0x46b9('0x20')]('Content-Range',_0x4bda55+'-'+_0x548dba+'/'+_0x111d32)[_0x46b9('0x1c')](_0x51045f);}return null;};}function patchUpdates(_0x43baa8){return function(_0x20a7a){try{jsonpatch['apply'](_0x20a7a,_0x43baa8,!![]);}catch(_0x37d945){return BPromise['reject'](_0x37d945);}return _0x20a7a[_0x46b9('0x21')]();};}function saveUpdates(_0x48ff4a,_0x2e330b){return function(_0x56640a){if(_0x56640a){return _0x56640a['update'](_0x48ff4a)[_0x46b9('0x22')](function(_0x403539){return _0x403539;});}return null;};}function removeEntity(_0x1ed735,_0xd44bd4){return function(_0x3fa297){if(_0x3fa297){return _0x3fa297['destroy']()[_0x46b9('0x22')](function(){_0x1ed735[_0x46b9('0x1a')](0xcc)[_0x46b9('0x1b')]();});}};}function handleEntityNotFound(_0x48de72,_0x3c18af){return function(_0x5c1f7b){if(!_0x5c1f7b){_0x48de72['sendStatus'](0x194);}return _0x5c1f7b;};}function handleError(_0x590892,_0x53438d){_0x53438d=_0x53438d||0x1f4;return function(_0x2d9ea8){logger[_0x46b9('0x23')](_0x2d9ea8[_0x46b9('0x24')]);if(_0x2d9ea8['name']){delete _0x2d9ea8[_0x46b9('0x25')];}_0x590892[_0x46b9('0x1a')](_0x53438d)[_0x46b9('0x26')](_0x2d9ea8);};}exports[_0x46b9('0x27')]=function(_0x2c04c4,_0x28cd7a){var _0xca4204={},_0x57d7a7={},_0x806378={'count':0x0,'rows':[]};var _0x337cb7=_[_0x46b9('0x28')](db['SugarcrmAccount'][_0x46b9('0x29')],function(_0x53755a){return{'name':_0x53755a[_0x46b9('0x2a')],'type':_0x53755a[_0x46b9('0x2b')][_0x46b9('0x2c')]};});_0x57d7a7[_0x46b9('0x2d')]=_[_0x46b9('0x28')](_0x337cb7,_0x46b9('0x25'));_0x57d7a7[_0x46b9('0x2e')]=_[_0x46b9('0x2f')](_0x2c04c4['query']);_0x57d7a7[_0x46b9('0x30')]=_['intersection'](_0x57d7a7[_0x46b9('0x2d')],_0x57d7a7[_0x46b9('0x2e')]);_0xca4204['attributes']=_[_0x46b9('0x31')](_0x57d7a7[_0x46b9('0x2d')],qs['fields'](_0x2c04c4[_0x46b9('0x2e')][_0x46b9('0x32')]));_0xca4204['attributes']=_0xca4204[_0x46b9('0x33')][_0x46b9('0x34')]?_0xca4204[_0x46b9('0x33')]:_0x57d7a7[_0x46b9('0x2d')];if(!_0x2c04c4[_0x46b9('0x2e')][_0x46b9('0x35')]('nolimit')){_0xca4204[_0x46b9('0x1d')]=qs['limit'](_0x2c04c4['query'][_0x46b9('0x1d')]);_0xca4204[_0x46b9('0x1e')]=qs[_0x46b9('0x1e')](_0x2c04c4['query'][_0x46b9('0x1e')]);}_0xca4204[_0x46b9('0x36')]=qs[_0x46b9('0x37')](_0x2c04c4[_0x46b9('0x2e')][_0x46b9('0x37')]);_0xca4204[_0x46b9('0x38')]=qs[_0x46b9('0x30')](_['pick'](_0x2c04c4['query'],_0x57d7a7['filters']),_0x337cb7);if(_0x2c04c4[_0x46b9('0x2e')][_0x46b9('0x39')]){_0xca4204[_0x46b9('0x38')]=_[_0x46b9('0x3a')](_0xca4204[_0x46b9('0x38')],{'$or':_['map'](_0x337cb7,function(_0x1942b6){if(_0x1942b6[_0x46b9('0x2b')]!==_0x46b9('0x3b')){var _0x1b7a85={};_0x1b7a85[_0x1942b6[_0x46b9('0x25')]]={'$like':'%'+_0x2c04c4[_0x46b9('0x2e')][_0x46b9('0x39')]+'%'};return _0x1b7a85;}})});}_0xca4204=_[_0x46b9('0x3a')]({},_0xca4204,_0x2c04c4[_0x46b9('0x3c')]);var _0x34898c={'where':_0xca4204[_0x46b9('0x38')]};return db[_0x46b9('0x3d')][_0x46b9('0x1f')](_0x34898c)['then'](function(_0x2c2bff){_0x806378['count']=_0x2c2bff;if(_0x2c04c4[_0x46b9('0x2e')]['includeAll']){_0xca4204[_0x46b9('0x3e')]=[{'all':!![]}];}return db[_0x46b9('0x3d')][_0x46b9('0x3f')](_0xca4204);})['then'](function(_0x2b86cb){_0x806378[_0x46b9('0x40')]=_0x2b86cb;return _0x806378;})['then'](respondWithFilteredResult(_0x28cd7a,_0xca4204))['catch'](handleError(_0x28cd7a,null));};exports[_0x46b9('0x41')]=function(_0x35df54,_0x173450){var _0x63e4cf={'raw':![],'where':{'id':_0x35df54[_0x46b9('0x42')]['id']}},_0x1ddf90={};_0x1ddf90[_0x46b9('0x2d')]=_[_0x46b9('0x2f')](db['SugarcrmAccount'][_0x46b9('0x29')]);_0x1ddf90[_0x46b9('0x2e')]=_['keys'](_0x35df54[_0x46b9('0x2e')]);_0x1ddf90[_0x46b9('0x30')]=_[_0x46b9('0x31')](_0x1ddf90['model'],_0x1ddf90[_0x46b9('0x2e')]);_0x63e4cf[_0x46b9('0x33')]=_['intersection'](_0x1ddf90[_0x46b9('0x2d')],qs[_0x46b9('0x32')](_0x35df54[_0x46b9('0x2e')]['fields']));_0x63e4cf[_0x46b9('0x33')]=_0x63e4cf[_0x46b9('0x33')][_0x46b9('0x34')]?_0x63e4cf[_0x46b9('0x33')]:_0x1ddf90['model'];if(_0x35df54[_0x46b9('0x2e')][_0x46b9('0x43')]){_0x63e4cf[_0x46b9('0x3e')]=[{'all':!![]}];}_0x63e4cf=_['merge']({},_0x63e4cf,_0x35df54[_0x46b9('0x3c')]);return db[_0x46b9('0x3d')][_0x46b9('0x44')](_0x63e4cf)['then'](handleEntityNotFound(_0x173450,null))[_0x46b9('0x22')](respondWithResult(_0x173450,null))['catch'](handleError(_0x173450,null));};exports[_0x46b9('0x45')]=function(_0x4a5f37,_0x5c7f7d){return db[_0x46b9('0x3d')][_0x46b9('0x45')](_0x4a5f37[_0x46b9('0x46')],{})['then'](respondWithResult(_0x5c7f7d,0xc9))[_0x46b9('0x47')](handleError(_0x5c7f7d,null));};exports[_0x46b9('0x48')]=function(_0x1df74c,_0x3b0a80){if(_0x1df74c['body']['id']){delete _0x1df74c[_0x46b9('0x46')]['id'];}return db[_0x46b9('0x3d')]['find']({'where':{'id':_0x1df74c[_0x46b9('0x42')]['id']}})[_0x46b9('0x22')](handleEntityNotFound(_0x3b0a80,null))[_0x46b9('0x22')](saveUpdates(_0x1df74c[_0x46b9('0x46')],null))['then'](respondWithResult(_0x3b0a80,null))[_0x46b9('0x47')](handleError(_0x3b0a80,null));};exports[_0x46b9('0x49')]=function(_0x84b5ff,_0x13e3b3){return db['SugarcrmAccount'][_0x46b9('0x44')]({'where':{'id':_0x84b5ff['params']['id']}})['then'](handleEntityNotFound(_0x13e3b3,null))['then'](removeEntity(_0x13e3b3,null))['catch'](handleError(_0x13e3b3,null));};exports['getConfigurations']=function(_0x5dc3a7,_0x50bfb0,_0x47261e){var _0x3613a6={};var _0x2a9f75={};var _0x12660e;var _0x28d381;return db[_0x46b9('0x3d')]['findOne']({'where':{'id':_0x5dc3a7[_0x46b9('0x42')]['id']}})[_0x46b9('0x22')](handleEntityNotFound(_0x50bfb0,null))[_0x46b9('0x22')](function(_0x2e2791){if(_0x2e2791){_0x12660e=_0x2e2791;_0x2a9f75[_0x46b9('0x2d')]=_[_0x46b9('0x2f')](db[_0x46b9('0x4a')][_0x46b9('0x29')]);_0x2a9f75[_0x46b9('0x2e')]=_[_0x46b9('0x2f')](_0x5dc3a7[_0x46b9('0x2e')]);_0x2a9f75[_0x46b9('0x30')]=_[_0x46b9('0x31')](_0x2a9f75[_0x46b9('0x2d')],_0x2a9f75['query']);_0x3613a6[_0x46b9('0x33')]=_['intersection'](_0x2a9f75[_0x46b9('0x2d')],qs['fields'](_0x5dc3a7[_0x46b9('0x2e')]['fields']));_0x3613a6[_0x46b9('0x33')]=_0x3613a6[_0x46b9('0x33')][_0x46b9('0x34')]?_0x3613a6['attributes']:_0x2a9f75[_0x46b9('0x2d')];_0x3613a6[_0x46b9('0x36')]=qs[_0x46b9('0x37')](_0x5dc3a7['query']['sort']);_0x3613a6[_0x46b9('0x38')]=qs[_0x46b9('0x30')](_['pick'](_0x5dc3a7[_0x46b9('0x2e')],_0x2a9f75[_0x46b9('0x30')]));if(_0x5dc3a7[_0x46b9('0x2e')][_0x46b9('0x39')]){_0x3613a6[_0x46b9('0x38')]=_[_0x46b9('0x3a')](_0x3613a6[_0x46b9('0x38')],{'$or':_[_0x46b9('0x28')](_0x3613a6[_0x46b9('0x33')],function(_0x4f7d79){var _0x290e32={};_0x290e32[_0x4f7d79]={'$like':'%'+_0x5dc3a7[_0x46b9('0x2e')][_0x46b9('0x39')]+'%'};return _0x290e32;})});}_0x3613a6=_[_0x46b9('0x3a')]({},_0x3613a6,_0x5dc3a7[_0x46b9('0x3c')]);return _0x12660e[_0x46b9('0x4b')](_0x3613a6);}})[_0x46b9('0x22')](function(_0x53e6eb){if(_0x53e6eb){_0x28d381=_0x53e6eb[_0x46b9('0x34')];if(!_0x5dc3a7[_0x46b9('0x2e')]['hasOwnProperty'](_0x46b9('0x4c'))){_0x3613a6[_0x46b9('0x1d')]=qs['limit'](_0x5dc3a7['query']['limit']);_0x3613a6[_0x46b9('0x1e')]=qs['offset'](_0x5dc3a7[_0x46b9('0x2e')][_0x46b9('0x1e')]);}return _0x12660e[_0x46b9('0x4b')](_0x3613a6);}})[_0x46b9('0x22')](function(_0x163a57){if(_0x163a57){return _0x163a57?{'count':_0x28d381,'rows':_0x163a57}:null;}})['then'](respondWithResult(_0x50bfb0,null))['catch'](handleError(_0x50bfb0,null));};exports[_0x46b9('0x4d')]=function(_0xc5ca48,_0x3f9c4f,_0x3f8d9e){if(_0xc5ca48[_0x46b9('0x46')]['id']){delete _0xc5ca48[_0x46b9('0x46')]['id'];}return db['SugarcrmAccount'][_0x46b9('0x4e')]({'where':{'id':_0xc5ca48[_0x46b9('0x42')]['id']}})[_0x46b9('0x22')](handleEntityNotFound(_0x3f9c4f,null))[_0x46b9('0x22')](function(_0x5b283e){if(_0x5b283e){_0xc5ca48['body'][_0x46b9('0x4f')]=_0x5b283e['id'];_0xc5ca48[_0x46b9('0x46')][_0x46b9('0x50')]=integrations[_0x46b9('0x51')](_0xc5ca48['body'][_0x46b9('0x52')],_0xc5ca48['body'][_0x46b9('0x2b')]);_0xc5ca48[_0x46b9('0x46')]['Descriptions']=integrations[_0x46b9('0x53')](_0xc5ca48[_0x46b9('0x46')][_0x46b9('0x52')],_0xc5ca48[_0x46b9('0x46')]['type']);return db[_0x46b9('0x4a')][_0x46b9('0x45')](_0xc5ca48['body'],{'include':[{'model':db[_0x46b9('0x54')],'as':_0x46b9('0x50')},{'model':db[_0x46b9('0x54')],'as':_0x46b9('0x55')}]});}return null;})['then'](respondWithResult(_0x3f9c4f,null))[_0x46b9('0x47')](handleError(_0x3f9c4f,null));};exports[_0x46b9('0x56')]=function(_0x11ea9b,_0x38e178,_0x7deec6){var _0x548194='';var _0x440f61=['id','name',_0x46b9('0x57'),_0x46b9('0x58'),_0x46b9('0x59'),_0x46b9('0x5a'),_0x46b9('0x5b'),'duration_minutes',_0x46b9('0x5c'),_0x46b9('0x5d'),_0x46b9('0x5e'),_0x46b9('0x5f')];return db[_0x46b9('0x3d')]['findOne']({'where':{'id':_0x11ea9b[_0x46b9('0x42')]['id']},'attributes':['id','username',_0x46b9('0x60'),'remoteUri']})[_0x46b9('0x22')](handleEntityNotFound(_0x38e178,null))[_0x46b9('0x22')](function(_0x26199a){if(_0x26199a){_0x548194=_0x26199a[_0x46b9('0x61')];var _0xd9e8ff=_0x548194['slice'](-0x1);if(_0xd9e8ff==='/'){_0x548194=_0x548194['substring'](0x0,_0x548194[_0x46b9('0x62')](_0xd9e8ff));}return rp({'method':_0x46b9('0x63'),'uri':util[_0x46b9('0x64')](_0x46b9('0x65'),_0x548194,_0x46b9('0x66')),'json':!![],'form':{'method':'login','input_type':'JSON','response_type':_0x46b9('0x67'),'rest_data':JSON[_0x46b9('0x68')]({'user_auth':{'user_name':_0x26199a[_0x46b9('0x69')],'password':_0x26199a[_0x46b9('0x60')],'encryption':_0x46b9('0x6a')},'application':_0x46b9('0x6b')})}});}})['then'](function(_0x24c8e2){if(_0x24c8e2&&_0x24c8e2['name']!=='Invalid\x20Login'&&_0x24c8e2[_0x46b9('0x25')]!==_0x46b9('0x6c')){return rp({'method':'POST','uri':util['format']('%s%s',_0x548194,_0x46b9('0x66')),'json':!![],'form':{'method':_0x46b9('0x6d'),'input_type':_0x46b9('0x67'),'response_type':_0x46b9('0x67'),'rest_data':JSON['stringify']({'session':_0x24c8e2['id'],'module_name':_0x46b9('0x6e')})}})[_0x46b9('0x22')](function(_0x1ab420){if(_0x1ab420){var _0xac5557=_['values'](_0x1ab420[_0x46b9('0x6f')]);_[_0x46b9('0x70')](_0xac5557,function(_0x18702c){return _0x440f61[_0x46b9('0x71')](_0x18702c[_0x46b9('0x25')]);});return{'count':_0xac5557[_0x46b9('0x34')],'rows':_[_0x46b9('0x28')](_0xac5557,function(_0x1083b9){return{'id':_0x1083b9[_0x46b9('0x25')],'name':_0x1083b9[_0x46b9('0x72')],'custom':_[_0x46b9('0x73')](_0x1083b9[_0x46b9('0x25')],'_c')?!![]:![],'options':_0x1083b9[_0x46b9('0x3c')]?_[_0x46b9('0x28')](_['values'](_0x1083b9['options']),function(_0xf352c5){return{'name':_0xf352c5[_0x46b9('0x74')],'value':_0xf352c5[_0x46b9('0x25')]};}):[]};})};}})['then'](respondWithResult(_0x38e178,null))[_0x46b9('0x47')](function(_0x4c34b3){var _0x1bb6c6=_0x11ea9b[_0x46b9('0x2e')]['test']?0x1f4:_0x4c34b3[_0x46b9('0x75')]||0x1f4;logger[_0x46b9('0x23')](_0x46b9('0x76'),_0x46b9('0x56'),_0x1bb6c6,JSON['stringify'](_0x4c34b3));delete _0x4c34b3[_0x46b9('0x25')];if(_0x1bb6c6===0x191){_0x1bb6c6=0x190;}_0x38e178[_0x46b9('0x1a')](_0x1bb6c6)['send'](_0x11ea9b[_0x46b9('0x2e')][_0x46b9('0x77')]?{'message':_0x46b9('0x78'),'statusCode':_0x4c34b3[_0x46b9('0x75')]}:_0x4c34b3);});}else{var _0xe152fb=0x1f4;_0x38e178[_0x46b9('0x1a')](_0xe152fb)[_0x46b9('0x26')]({'message':_0x46b9('0x78'),'statusCode':0x190});}});};
\ No newline at end of file
index 23d5e1f..0363397 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa8ce=['./intSugarcrmAccount.attributes','exports','define','SugarcrmAccount','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x1962e8,_0x4d5163){var _0x1fa5e9=function(_0x512d4a){while(--_0x512d4a){_0x1962e8['push'](_0x1962e8['shift']());}};_0x1fa5e9(++_0x4d5163);}(_0xa8ce,0x1d8));var _0xea8c=function(_0x112a03,_0x55667e){_0x112a03=_0x112a03-0x0;var _0x373ee3=_0xa8ce[_0x112a03];return _0x373ee3;};'use strict';var _=require('lodash');var util=require(_0xea8c('0x0'));var logger=require(_0xea8c('0x1'))(_0xea8c('0x2'));var moment=require(_0xea8c('0x3'));var BPromise=require(_0xea8c('0x4'));var rp=require(_0xea8c('0x5'));var fs=require('fs');var path=require(_0xea8c('0x6'));var rimraf=require(_0xea8c('0x7'));var config=require('../../config/environment');var attributes=require(_0xea8c('0x8'));var integrations=require('../../components/integrations/configuration');module[_0xea8c('0x9')]=function(_0x1333da,_0x4b0d04){return _0x1333da[_0xea8c('0xa')](_0xea8c('0xb'),attributes,{'tableName':'int_sugarcrm_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3bb8=['int_sugarcrm_accounts','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./intSugarcrmAccount.attributes'];(function(_0x1926a4,_0x3f30df){var _0x454f5c=function(_0x706951){while(--_0x706951){_0x1926a4['push'](_0x1926a4['shift']());}};_0x454f5c(++_0x3f30df);}(_0x3bb8,0x173));var _0x83bb=function(_0x1e172a,_0x52102b){_0x1e172a=_0x1e172a-0x0;var _0x96338b=_0x3bb8[_0x1e172a];return _0x96338b;};'use strict';var _=require(_0x83bb('0x0'));var util=require(_0x83bb('0x1'));var logger=require(_0x83bb('0x2'))(_0x83bb('0x3'));var moment=require(_0x83bb('0x4'));var BPromise=require('bluebird');var rp=require(_0x83bb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x83bb('0x6'));var config=require(_0x83bb('0x7'));var attributes=require(_0x83bb('0x8'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x353d9b,_0x3bdf48){return _0x353d9b['define']('SugarcrmAccount',attributes,{'tableName':_0x83bb('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2b90253..4f24182 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a2d=['catch','ShowSugarcrmAccount','find','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','request\x20sent','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SugarcrmAccount,\x20%s,\x20%s','message','SugarcrmAccount','findAll','options','raw','attributes','limit','include','map','model','GetSugarcrmAccount','debug'];(function(_0x499bc4,_0x48c949){var _0x3377a2=function(_0x161b6b){while(--_0x161b6b){_0x499bc4['push'](_0x499bc4['shift']());}};_0x3377a2(++_0x48c949);}(_0x7a2d,0xd5));var _0xd7a2=function(_0x16d30e,_0x308c0b){_0x16d30e=_0x16d30e-0x0;var _0x307bcc=_0x7a2d[_0x16d30e];return _0x307bcc;};'use strict';var _=require(_0xd7a2('0x0'));var util=require(_0xd7a2('0x1'));var moment=require(_0xd7a2('0x2'));var BPromise=require(_0xd7a2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd7a2('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xd7a2('0x5'));var logger=require(_0xd7a2('0x6'))(_0xd7a2('0x7'));var config=require(_0xd7a2('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd7a2('0x9')][_0xd7a2('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3c7ee6,_0x5492e3,_0x364d0e){return new BPromise(function(_0x1cee48,_0x5860bd){return client[_0xd7a2('0xb')](_0x3c7ee6,_0x364d0e)[_0xd7a2('0xc')](function(_0x4ea1e1){logger[_0xd7a2('0xd')]('SugarcrmAccount,\x20%s,\x20%s',_0x5492e3,_0xd7a2('0xe'));logger['debug'](_0xd7a2('0xf'),_0x5492e3,'request\x20sent',JSON[_0xd7a2('0x10')](_0x4ea1e1));if(_0x4ea1e1[_0xd7a2('0x11')]){if(_0x4ea1e1[_0xd7a2('0x11')][_0xd7a2('0x12')]===0x1f4){logger[_0xd7a2('0x11')]('SugarcrmAccount,\x20%s,\x20%s',_0x5492e3,_0x4ea1e1[_0xd7a2('0x11')]['message']);return _0x5860bd(_0x4ea1e1[_0xd7a2('0x11')]['message']);}logger[_0xd7a2('0x11')](_0xd7a2('0x13'),_0x5492e3,_0x4ea1e1['error'][_0xd7a2('0x14')]);return _0x1cee48(_0x4ea1e1['error']['message']);}else{logger[_0xd7a2('0xd')](_0xd7a2('0x13'),_0x5492e3,_0xd7a2('0xe'));_0x1cee48(_0x4ea1e1['result'][_0xd7a2('0x14')]);}})['catch'](function(_0x5937f5){logger[_0xd7a2('0x11')](_0xd7a2('0x13'),_0x5492e3,_0x5937f5);_0x5860bd(_0x5937f5);});});}exports['GetSugarcrmAccount']=function(_0x500a08){var _0x394c7c=this;return new Promise(function(_0x19b02f,_0x332b26){return db[_0xd7a2('0x15')][_0xd7a2('0x16')]({'raw':_0x500a08[_0xd7a2('0x17')]?_0x500a08[_0xd7a2('0x17')][_0xd7a2('0x18')]===undefined?!![]:![]:!![],'where':_0x500a08[_0xd7a2('0x17')]?_0x500a08['options']['where']||null:null,'attributes':_0x500a08[_0xd7a2('0x17')]?_0x500a08[_0xd7a2('0x17')][_0xd7a2('0x19')]||null:null,'limit':_0x500a08[_0xd7a2('0x17')]?_0x500a08[_0xd7a2('0x17')][_0xd7a2('0x1a')]||null:null,'include':_0x500a08[_0xd7a2('0x17')]?_0x500a08['options'][_0xd7a2('0x1b')]?_[_0xd7a2('0x1c')](_0x500a08['options'][_0xd7a2('0x1b')],function(_0x14d40b){return{'model':db[_0x14d40b[_0xd7a2('0x1d')]],'as':_0x14d40b['as'],'attributes':_0x14d40b['attributes'],'include':_0x14d40b[_0xd7a2('0x1b')]?_[_0xd7a2('0x1c')](_0x14d40b['include'],function(_0x4fddaa){return{'model':db[_0x4fddaa['model']],'as':_0x4fddaa['as'],'attributes':_0x4fddaa[_0xd7a2('0x19')],'include':_0x4fddaa['include']?_['map'](_0x4fddaa['include'],function(_0x212097){return{'model':db[_0x212097[_0xd7a2('0x1d')]],'as':_0x212097['as'],'attributes':_0x212097[_0xd7a2('0x19')]};}):[]};}):[]};}):[]:[]})[_0xd7a2('0xc')](function(_0x4cb44e){logger['info'](_0xd7a2('0x1e'),_0x500a08);logger[_0xd7a2('0x1f')](_0xd7a2('0x1e'),_0x500a08,JSON['stringify'](_0x4cb44e));_0x19b02f(_0x4cb44e);})[_0xd7a2('0x20')](function(_0x1a5e68){logger['error']('GetSugarcrmAccount',_0x1a5e68[_0xd7a2('0x14')],_0x500a08);_0x332b26(_0x394c7c[_0xd7a2('0x11')](0x1f4,_0x1a5e68[_0xd7a2('0x14')]));});});};exports[_0xd7a2('0x21')]=function(_0x50aebe){var _0x40a189=this;return new Promise(function(_0x3cf88d,_0x46d590){return db['SugarcrmAccount'][_0xd7a2('0x22')]({'raw':_0x50aebe[_0xd7a2('0x17')]?_0x50aebe['options'][_0xd7a2('0x18')]===undefined?!![]:![]:!![],'where':_0x50aebe[_0xd7a2('0x17')]?_0x50aebe[_0xd7a2('0x17')]['where']||null:null,'attributes':_0x50aebe['options']?_0x50aebe[_0xd7a2('0x17')]['attributes']||null:null,'include':_0x50aebe[_0xd7a2('0x17')]?_0x50aebe['options']['include']?_[_0xd7a2('0x1c')](_0x50aebe[_0xd7a2('0x17')]['include'],function(_0x26931d){return{'model':db[_0x26931d[_0xd7a2('0x1d')]],'as':_0x26931d['as'],'attributes':_0x26931d[_0xd7a2('0x19')],'include':_0x26931d[_0xd7a2('0x1b')]?_[_0xd7a2('0x1c')](_0x26931d[_0xd7a2('0x1b')],function(_0x37cef4){return{'model':db[_0x37cef4[_0xd7a2('0x1d')]],'as':_0x37cef4['as'],'attributes':_0x37cef4[_0xd7a2('0x19')],'include':_0x37cef4[_0xd7a2('0x1b')]?_['map'](_0x37cef4[_0xd7a2('0x1b')],function(_0x454d9d){return{'model':db[_0x454d9d['model']],'as':_0x454d9d['as'],'attributes':_0x454d9d[_0xd7a2('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5de384){logger[_0xd7a2('0xd')]('ShowSugarcrmAccount',_0x50aebe);logger[_0xd7a2('0x1f')](_0xd7a2('0x21'),_0x50aebe,JSON[_0xd7a2('0x10')](_0x5de384));_0x3cf88d(_0x5de384);})[_0xd7a2('0x20')](function(_0x7f09f5){logger['error'](_0xd7a2('0x21'),_0x7f09f5[_0xd7a2('0x14')],_0x50aebe);_0x46d590(_0x40a189['error'](0x1f4,_0x7f09f5[_0xd7a2('0x14')]));});});};
\ No newline at end of file
+var _0x173d=['SugarcrmAccount,\x20%s,\x20%s','message','result','GetSugarcrmAccount','SugarcrmAccount','options','raw','attributes','limit','include','model','map','then','find','ShowSugarcrmAccount','catch','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','info','request\x20sent','debug','stringify','error','code'];(function(_0x1f62c3,_0x1ff95b){var _0x385c1c=function(_0x1db580){while(--_0x1db580){_0x1f62c3['push'](_0x1f62c3['shift']());}};_0x385c1c(++_0x1ff95b);}(_0x173d,0x108));var _0xd173=function(_0x252809,_0x28c040){_0x252809=_0x252809-0x0;var _0x4d39f8=_0x173d[_0x252809];return _0x4d39f8;};'use strict';var _=require('lodash');var util=require(_0xd173('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xd173('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd173('0x2'))['db'];var utils=require(_0xd173('0x3'));var logger=require(_0xd173('0x4'))(_0xd173('0x5'));var config=require(_0xd173('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xd173('0x7')][_0xd173('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x454bfa,_0x5dc244,_0x239a90){return new BPromise(function(_0x5229ad,_0x3a1529){return client['request'](_0x454bfa,_0x239a90)['then'](function(_0x2e5ecc){logger[_0xd173('0x9')]('SugarcrmAccount,\x20%s,\x20%s',_0x5dc244,_0xd173('0xa'));logger[_0xd173('0xb')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x5dc244,_0xd173('0xa'),JSON[_0xd173('0xc')](_0x2e5ecc));if(_0x2e5ecc[_0xd173('0xd')]){if(_0x2e5ecc[_0xd173('0xd')][_0xd173('0xe')]===0x1f4){logger[_0xd173('0xd')](_0xd173('0xf'),_0x5dc244,_0x2e5ecc[_0xd173('0xd')][_0xd173('0x10')]);return _0x3a1529(_0x2e5ecc[_0xd173('0xd')][_0xd173('0x10')]);}logger[_0xd173('0xd')]('SugarcrmAccount,\x20%s,\x20%s',_0x5dc244,_0x2e5ecc[_0xd173('0xd')]['message']);return _0x5229ad(_0x2e5ecc[_0xd173('0xd')][_0xd173('0x10')]);}else{logger['info'](_0xd173('0xf'),_0x5dc244,_0xd173('0xa'));_0x5229ad(_0x2e5ecc[_0xd173('0x11')][_0xd173('0x10')]);}})['catch'](function(_0x5b96e1){logger[_0xd173('0xd')](_0xd173('0xf'),_0x5dc244,_0x5b96e1);_0x3a1529(_0x5b96e1);});});}exports[_0xd173('0x12')]=function(_0x58d7d8){var _0x3d76b6=this;return new Promise(function(_0x352d17,_0x14ba01){return db[_0xd173('0x13')]['findAll']({'raw':_0x58d7d8['options']?_0x58d7d8[_0xd173('0x14')][_0xd173('0x15')]===undefined?!![]:![]:!![],'where':_0x58d7d8[_0xd173('0x14')]?_0x58d7d8[_0xd173('0x14')]['where']||null:null,'attributes':_0x58d7d8['options']?_0x58d7d8[_0xd173('0x14')][_0xd173('0x16')]||null:null,'limit':_0x58d7d8['options']?_0x58d7d8[_0xd173('0x14')][_0xd173('0x17')]||null:null,'include':_0x58d7d8['options']?_0x58d7d8[_0xd173('0x14')][_0xd173('0x18')]?_['map'](_0x58d7d8[_0xd173('0x14')][_0xd173('0x18')],function(_0x564127){return{'model':db[_0x564127[_0xd173('0x19')]],'as':_0x564127['as'],'attributes':_0x564127[_0xd173('0x16')],'include':_0x564127[_0xd173('0x18')]?_[_0xd173('0x1a')](_0x564127[_0xd173('0x18')],function(_0x10e966){return{'model':db[_0x10e966['model']],'as':_0x10e966['as'],'attributes':_0x10e966['attributes'],'include':_0x10e966[_0xd173('0x18')]?_[_0xd173('0x1a')](_0x10e966[_0xd173('0x18')],function(_0x24181c){return{'model':db[_0x24181c[_0xd173('0x19')]],'as':_0x24181c['as'],'attributes':_0x24181c[_0xd173('0x16')]};}):[]};}):[]};}):[]:[]})[_0xd173('0x1b')](function(_0x4191e2){logger['info']('GetSugarcrmAccount',_0x58d7d8);logger[_0xd173('0xb')](_0xd173('0x12'),_0x58d7d8,JSON['stringify'](_0x4191e2));_0x352d17(_0x4191e2);})['catch'](function(_0x25da07){logger[_0xd173('0xd')](_0xd173('0x12'),_0x25da07[_0xd173('0x10')],_0x58d7d8);_0x14ba01(_0x3d76b6[_0xd173('0xd')](0x1f4,_0x25da07[_0xd173('0x10')]));});});};exports['ShowSugarcrmAccount']=function(_0x5a56e0){var _0x142273=this;return new Promise(function(_0x3b034b,_0x49c73b){return db[_0xd173('0x13')][_0xd173('0x1c')]({'raw':_0x5a56e0[_0xd173('0x14')]?_0x5a56e0[_0xd173('0x14')][_0xd173('0x15')]===undefined?!![]:![]:!![],'where':_0x5a56e0['options']?_0x5a56e0[_0xd173('0x14')]['where']||null:null,'attributes':_0x5a56e0[_0xd173('0x14')]?_0x5a56e0[_0xd173('0x14')]['attributes']||null:null,'include':_0x5a56e0[_0xd173('0x14')]?_0x5a56e0[_0xd173('0x14')][_0xd173('0x18')]?_[_0xd173('0x1a')](_0x5a56e0[_0xd173('0x14')]['include'],function(_0x6d2eb7){return{'model':db[_0x6d2eb7[_0xd173('0x19')]],'as':_0x6d2eb7['as'],'attributes':_0x6d2eb7[_0xd173('0x16')],'include':_0x6d2eb7[_0xd173('0x18')]?_[_0xd173('0x1a')](_0x6d2eb7[_0xd173('0x18')],function(_0x5c07c6){return{'model':db[_0x5c07c6[_0xd173('0x19')]],'as':_0x5c07c6['as'],'attributes':_0x5c07c6[_0xd173('0x16')],'include':_0x5c07c6[_0xd173('0x18')]?_['map'](_0x5c07c6['include'],function(_0x172cf2){return{'model':db[_0x172cf2[_0xd173('0x19')]],'as':_0x172cf2['as'],'attributes':_0x172cf2[_0xd173('0x16')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1d0931){logger[_0xd173('0x9')](_0xd173('0x1d'),_0x5a56e0);logger[_0xd173('0xb')](_0xd173('0x1d'),_0x5a56e0,JSON['stringify'](_0x1d0931));_0x3b034b(_0x1d0931);})[_0xd173('0x1e')](function(_0x557a3e){logger[_0xd173('0xd')](_0xd173('0x1d'),_0x557a3e[_0xd173('0x10')],_0x5a56e0);_0x49c73b(_0x142273['error'](0x1f4,_0x557a3e['message']));});});};
\ No newline at end of file
index 92e1666..e801a99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb324=['/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','put','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','/:id'];(function(_0x48258d,_0x42537b){var _0x220f0b=function(_0x5e1d64){while(--_0x5e1d64){_0x48258d['push'](_0x48258d['shift']());}};_0x220f0b(++_0x42537b);}(_0xb324,0x11f));var _0x4b32=function(_0x9c802a,_0x1eb813){_0x9c802a=_0x9c802a-0x0;var _0x1bac75=_0xb324[_0x9c802a];return _0x1bac75;};'use strict';var multer=require(_0x4b32('0x0'));var util=require(_0x4b32('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x4b32('0x2'));var router=express[_0x4b32('0x3')]();var fs_extra=require(_0x4b32('0x4'));var auth=require(_0x4b32('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x4b32('0x6'));var controller=require(_0x4b32('0x7'));router[_0x4b32('0x8')]('/',auth[_0x4b32('0x9')](),controller[_0x4b32('0xa')]);router['get'](_0x4b32('0xb'),auth[_0x4b32('0x9')](),controller['show']);router[_0x4b32('0x8')](_0x4b32('0xc'),auth[_0x4b32('0x9')](),controller[_0x4b32('0xd')]);router[_0x4b32('0x8')](_0x4b32('0xe'),auth[_0x4b32('0x9')](),controller[_0x4b32('0xf')]);router[_0x4b32('0x8')](_0x4b32('0x10'),auth[_0x4b32('0x9')](),controller[_0x4b32('0x11')]);router[_0x4b32('0x12')]('/',auth['isAuthenticated'](),controller['create']);router[_0x4b32('0x13')](_0x4b32('0xb'),auth[_0x4b32('0x9')](),controller['update']);router[_0x4b32('0x14')](_0x4b32('0xb'),auth[_0x4b32('0x9')](),controller[_0x4b32('0x15')]);module[_0x4b32('0x16')]=router;
\ No newline at end of file
+var _0xde79=['/:id/descriptions','post','create','put','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','/:id/fields','getFields','getSubjects'];(function(_0x4748d1,_0x461023){var _0xfd98f=function(_0x39502e){while(--_0x39502e){_0x4748d1['push'](_0x4748d1['shift']());}};_0xfd98f(++_0x461023);}(_0xde79,0xaf));var _0x9de7=function(_0x37d1ae,_0x23563a){_0x37d1ae=_0x37d1ae-0x0;var _0xa58fb3=_0xde79[_0x37d1ae];return _0xa58fb3;};'use strict';var multer=require('multer');var util=require(_0x9de7('0x0'));var path=require(_0x9de7('0x1'));var timeout=require(_0x9de7('0x2'));var express=require(_0x9de7('0x3'));var router=express[_0x9de7('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9de7('0x5'));var interaction=require(_0x9de7('0x6'));var config=require('../../config/environment');var controller=require('./intSugarcrmConfiguration.controller');router[_0x9de7('0x7')]('/',auth[_0x9de7('0x8')](),controller[_0x9de7('0x9')]);router[_0x9de7('0x7')](_0x9de7('0xa'),auth['isAuthenticated'](),controller['show']);router['get'](_0x9de7('0xb'),auth[_0x9de7('0x8')](),controller[_0x9de7('0xc')]);router[_0x9de7('0x7')]('/:id/subjects',auth[_0x9de7('0x8')](),controller[_0x9de7('0xd')]);router[_0x9de7('0x7')](_0x9de7('0xe'),auth[_0x9de7('0x8')](),controller['getDescriptions']);router[_0x9de7('0xf')]('/',auth[_0x9de7('0x8')](),controller[_0x9de7('0x10')]);router[_0x9de7('0x11')](_0x9de7('0xa'),auth[_0x9de7('0x8')](),controller['update']);router[_0x9de7('0x12')](_0x9de7('0xa'),auth[_0x9de7('0x8')](),controller[_0x9de7('0x13')]);module[_0x9de7('0x14')]=router;
\ No newline at end of file
index 3864190..57062a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc604=['STRING','sequelize','exports'];(function(_0x1f5f2f,_0x5aaf8c){var _0x392a67=function(_0x3148a6){while(--_0x3148a6){_0x1f5f2f['push'](_0x1f5f2f['shift']());}};_0x392a67(++_0x5aaf8c);}(_0xc604,0x88));var _0x4c60=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc604[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x4c60('0x0'));module[_0x4c60('0x1')]={'name':{'type':Sequelize[_0x4c60('0x2')]},'description':{'type':Sequelize[_0x4c60('0x2')]}};
\ No newline at end of file
+var _0x6535=['exports','STRING','sequelize'];(function(_0x14a125,_0x25c528){var _0x5ea00d=function(_0x2a0329){while(--_0x2a0329){_0x14a125['push'](_0x14a125['shift']());}};_0x5ea00d(++_0x25c528);}(_0x6535,0xa4));var _0x5653=function(_0x4792c8,_0x5158a1){_0x4792c8=_0x4792c8-0x0;var _0x35edb1=_0x6535[_0x4792c8];return _0x35edb1;};'use strict';var Sequelize=require(_0x5653('0x0'));module[_0x5653('0x1')]={'name':{'type':Sequelize[_0x5653('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index ea54ee4..6f45d24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8ec=['intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','include','rows','catch','show','params','find','body','update','destroy','SugarcrmField','filters','options','getFields','getSubjects','findOne','getDescriptions','zip-dir','fast-json-patch','request-promise','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','limit','offset','count','Content-Range','apply','reject','then','end','error','stack','name','send','index','map','SugarcrmConfiguration','rawAttributes','fieldName','model','query','keys','attributes'];(function(_0x488dd7,_0x4d7797){var _0x2bf4ca=function(_0x39cad6){while(--_0x39cad6){_0x488dd7['push'](_0x488dd7['shift']());}};_0x2bf4ca(++_0x4d7797);}(_0xe8ec,0xb5));var _0xce8e=function(_0x3f65ff,_0x6660fa){_0x3f65ff=_0x3f65ff-0x0;var _0x1fcf9a=_0xe8ec[_0x3f65ff];return _0x1fcf9a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xce8e('0x0'));var jsonpatch=require(_0xce8e('0x1'));var rp=require(_0xce8e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xce8e('0x3'));var util=require('util');var path=require(_0xce8e('0x4'));var sox=require(_0xce8e('0x5'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xce8e('0x6'));var _=require(_0xce8e('0x7'));var squel=require(_0xce8e('0x8'));var crypto=require(_0xce8e('0x9'));var jsforce=require(_0xce8e('0xa'));var deskjs=require(_0xce8e('0xb'));var toCsv=require(_0xce8e('0xc'));var querystring=require(_0xce8e('0xd'));var Papa=require(_0xce8e('0xe'));var Redis=require(_0xce8e('0xf'));var authService=require(_0xce8e('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0xce8e('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xce8e('0x12'))(_0xce8e('0x13'));var utils=require('../../config/utils');var config=require(_0xce8e('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xce8e('0x15'))['db'];function respondWithStatusCode(_0x5853d5,_0x541fa9){_0x541fa9=_0x541fa9||0xcc;return function(_0x2052a9){if(_0x2052a9){return _0x5853d5[_0xce8e('0x16')](_0x541fa9);}return _0x5853d5[_0xce8e('0x17')](_0x541fa9)['end']();};}function respondWithResult(_0x211efd,_0x9bff2f){_0x9bff2f=_0x9bff2f||0xc8;return function(_0x1acaf0){if(_0x1acaf0){return _0x211efd[_0xce8e('0x17')](_0x9bff2f)[_0xce8e('0x18')](_0x1acaf0);}};}function respondWithFilteredResult(_0x32fb7d,_0x15986d){return function(_0x5b2e68){if(_0x5b2e68){var _0x354a29=typeof _0x15986d['offset']===_0xce8e('0x19')&&typeof _0x15986d[_0xce8e('0x1a')]===_0xce8e('0x19');var _0x1a21dc=_0x5b2e68['count'];var _0x2c1abd=_0x354a29?0x0:_0x15986d[_0xce8e('0x1b')];var _0x55a20c=_0x354a29?_0x5b2e68[_0xce8e('0x1c')]:_0x15986d[_0xce8e('0x1b')]+_0x15986d[_0xce8e('0x1a')];var _0x334077;if(_0x55a20c>=_0x1a21dc){_0x55a20c=_0x1a21dc;_0x334077=0xc8;}else{_0x334077=0xce;}_0x32fb7d[_0xce8e('0x17')](_0x334077);return _0x32fb7d['set'](_0xce8e('0x1d'),_0x2c1abd+'-'+_0x55a20c+'/'+_0x1a21dc)[_0xce8e('0x18')](_0x5b2e68);}return null;};}function patchUpdates(_0x8783ab){return function(_0x3dd590){try{jsonpatch[_0xce8e('0x1e')](_0x3dd590,_0x8783ab,!![]);}catch(_0x594d0a){return BPromise[_0xce8e('0x1f')](_0x594d0a);}return _0x3dd590['save']();};}function saveUpdates(_0x349368,_0x59ff49){return function(_0xc5c02c){if(_0xc5c02c){return _0xc5c02c['update'](_0x349368)[_0xce8e('0x20')](function(_0x5117e5){return _0x5117e5;});}return null;};}function removeEntity(_0x241e3d,_0x18ab11){return function(_0x5a99b3){if(_0x5a99b3){return _0x5a99b3['destroy']()[_0xce8e('0x20')](function(){_0x241e3d[_0xce8e('0x17')](0xcc)[_0xce8e('0x21')]();});}};}function handleEntityNotFound(_0x5d96ed,_0x71f09d){return function(_0x4974ce){if(!_0x4974ce){_0x5d96ed['sendStatus'](0x194);}return _0x4974ce;};}function handleError(_0xdc5bd4,_0x5a2a2d){_0x5a2a2d=_0x5a2a2d||0x1f4;return function(_0x5094e5){logger[_0xce8e('0x22')](_0x5094e5[_0xce8e('0x23')]);if(_0x5094e5['name']){delete _0x5094e5[_0xce8e('0x24')];}_0xdc5bd4[_0xce8e('0x17')](_0x5a2a2d)[_0xce8e('0x25')](_0x5094e5);};}exports[_0xce8e('0x26')]=function(_0x5bca32,_0x96bd7a){var _0xfca4={},_0x45272f={},_0x21df5d={'count':0x0,'rows':[]};var _0x3cc99c=_[_0xce8e('0x27')](db[_0xce8e('0x28')][_0xce8e('0x29')],function(_0x4864dd){return{'name':_0x4864dd[_0xce8e('0x2a')],'type':_0x4864dd['type']['key']};});_0x45272f[_0xce8e('0x2b')]=_[_0xce8e('0x27')](_0x3cc99c,'name');_0x45272f[_0xce8e('0x2c')]=_[_0xce8e('0x2d')](_0x5bca32[_0xce8e('0x2c')]);_0x45272f['filters']=_['intersection'](_0x45272f[_0xce8e('0x2b')],_0x45272f['query']);_0xfca4[_0xce8e('0x2e')]=_[_0xce8e('0x2f')](_0x45272f[_0xce8e('0x2b')],qs[_0xce8e('0x30')](_0x5bca32['query'][_0xce8e('0x30')]));_0xfca4['attributes']=_0xfca4[_0xce8e('0x2e')][_0xce8e('0x31')]?_0xfca4[_0xce8e('0x2e')]:_0x45272f['model'];if(!_0x5bca32[_0xce8e('0x2c')][_0xce8e('0x32')](_0xce8e('0x33'))){_0xfca4['limit']=qs[_0xce8e('0x1a')](_0x5bca32[_0xce8e('0x2c')][_0xce8e('0x1a')]);_0xfca4['offset']=qs[_0xce8e('0x1b')](_0x5bca32[_0xce8e('0x2c')]['offset']);}_0xfca4[_0xce8e('0x34')]=qs[_0xce8e('0x35')](_0x5bca32['query'][_0xce8e('0x35')]);_0xfca4[_0xce8e('0x36')]=qs['filters'](_[_0xce8e('0x37')](_0x5bca32['query'],_0x45272f['filters']),_0x3cc99c);if(_0x5bca32[_0xce8e('0x2c')][_0xce8e('0x38')]){_0xfca4[_0xce8e('0x36')]=_[_0xce8e('0x39')](_0xfca4[_0xce8e('0x36')],{'$or':_['map'](_0x3cc99c,function(_0x525329){if(_0x525329[_0xce8e('0x3a')]!==_0xce8e('0x3b')){var _0x4e07b9={};_0x4e07b9[_0x525329[_0xce8e('0x24')]]={'$like':'%'+_0x5bca32['query'][_0xce8e('0x38')]+'%'};return _0x4e07b9;}})});}_0xfca4=_[_0xce8e('0x39')]({},_0xfca4,_0x5bca32['options']);var _0xc42f56={'where':_0xfca4[_0xce8e('0x36')]};return db[_0xce8e('0x28')][_0xce8e('0x1c')](_0xc42f56)[_0xce8e('0x20')](function(_0x3046ca){_0x21df5d['count']=_0x3046ca;if(_0x5bca32['query']['includeAll']){_0xfca4[_0xce8e('0x3c')]=[{'all':!![]}];}return db['SugarcrmConfiguration']['findAll'](_0xfca4);})[_0xce8e('0x20')](function(_0x691bda){_0x21df5d[_0xce8e('0x3d')]=_0x691bda;return _0x21df5d;})[_0xce8e('0x20')](respondWithFilteredResult(_0x96bd7a,_0xfca4))[_0xce8e('0x3e')](handleError(_0x96bd7a,null));};exports[_0xce8e('0x3f')]=function(_0x5c7848,_0x27486b){var _0x3e3db5={'raw':![],'where':{'id':_0x5c7848[_0xce8e('0x40')]['id']}},_0x4f8dd0={};_0x4f8dd0[_0xce8e('0x2b')]=_[_0xce8e('0x2d')](db['SugarcrmConfiguration'][_0xce8e('0x29')]);_0x4f8dd0[_0xce8e('0x2c')]=_[_0xce8e('0x2d')](_0x5c7848[_0xce8e('0x2c')]);_0x4f8dd0['filters']=_[_0xce8e('0x2f')](_0x4f8dd0[_0xce8e('0x2b')],_0x4f8dd0[_0xce8e('0x2c')]);_0x3e3db5['attributes']=_[_0xce8e('0x2f')](_0x4f8dd0[_0xce8e('0x2b')],qs['fields'](_0x5c7848[_0xce8e('0x2c')][_0xce8e('0x30')]));_0x3e3db5[_0xce8e('0x2e')]=_0x3e3db5[_0xce8e('0x2e')][_0xce8e('0x31')]?_0x3e3db5[_0xce8e('0x2e')]:_0x4f8dd0[_0xce8e('0x2b')];if(_0x5c7848[_0xce8e('0x2c')]['includeAll']){_0x3e3db5[_0xce8e('0x3c')]=[{'all':!![]}];}_0x3e3db5=_[_0xce8e('0x39')]({},_0x3e3db5,_0x5c7848['options']);return db[_0xce8e('0x28')][_0xce8e('0x41')](_0x3e3db5)[_0xce8e('0x20')](handleEntityNotFound(_0x27486b,null))['then'](respondWithResult(_0x27486b,null))[_0xce8e('0x3e')](handleError(_0x27486b,null));};exports['create']=function(_0x7c2303,_0x269f29){return db[_0xce8e('0x28')]['create'](_0x7c2303[_0xce8e('0x42')],{})['then'](respondWithResult(_0x269f29,0xc9))[_0xce8e('0x3e')](handleError(_0x269f29,null));};exports[_0xce8e('0x43')]=function(_0x3c64c6,_0x7ac0dd){if(_0x3c64c6[_0xce8e('0x42')]['id']){delete _0x3c64c6['body']['id'];}return db[_0xce8e('0x28')]['find']({'where':{'id':_0x3c64c6[_0xce8e('0x40')]['id']}})[_0xce8e('0x20')](handleEntityNotFound(_0x7ac0dd,null))['then'](saveUpdates(_0x3c64c6[_0xce8e('0x42')],null))[_0xce8e('0x20')](respondWithResult(_0x7ac0dd,null))[_0xce8e('0x3e')](handleError(_0x7ac0dd,null));};exports[_0xce8e('0x44')]=function(_0x50fb69,_0x327465){return db[_0xce8e('0x28')]['find']({'where':{'id':_0x50fb69[_0xce8e('0x40')]['id']}})[_0xce8e('0x20')](handleEntityNotFound(_0x327465,null))['then'](removeEntity(_0x327465,null))['catch'](handleError(_0x327465,null));};exports['getFields']=function(_0x416ee8,_0x286b3e,_0x37ef3a){var _0xee918e={};var _0x5e2db6={};var _0x4f432c;var _0x389ee2;return db['SugarcrmConfiguration']['findOne']({'where':{'id':_0x416ee8[_0xce8e('0x40')]['id']}})[_0xce8e('0x20')](handleEntityNotFound(_0x286b3e,null))[_0xce8e('0x20')](function(_0x2b8616){if(_0x2b8616){_0x4f432c=_0x2b8616;_0x5e2db6[_0xce8e('0x2b')]=_[_0xce8e('0x2d')](db[_0xce8e('0x45')][_0xce8e('0x29')]);_0x5e2db6[_0xce8e('0x2c')]=_['keys'](_0x416ee8[_0xce8e('0x2c')]);_0x5e2db6[_0xce8e('0x46')]=_[_0xce8e('0x2f')](_0x5e2db6['model'],_0x5e2db6[_0xce8e('0x2c')]);_0xee918e[_0xce8e('0x2e')]=_[_0xce8e('0x2f')](_0x5e2db6[_0xce8e('0x2b')],qs[_0xce8e('0x30')](_0x416ee8[_0xce8e('0x2c')][_0xce8e('0x30')]));_0xee918e[_0xce8e('0x2e')]=_0xee918e[_0xce8e('0x2e')][_0xce8e('0x31')]?_0xee918e[_0xce8e('0x2e')]:_0x5e2db6[_0xce8e('0x2b')];_0xee918e['order']=qs[_0xce8e('0x35')](_0x416ee8['query']['sort']);_0xee918e['where']=qs[_0xce8e('0x46')](_['pick'](_0x416ee8[_0xce8e('0x2c')],_0x5e2db6[_0xce8e('0x46')]));if(_0x416ee8[_0xce8e('0x2c')]['filter']){_0xee918e[_0xce8e('0x36')]=_[_0xce8e('0x39')](_0xee918e[_0xce8e('0x36')],{'$or':_['map'](_0xee918e[_0xce8e('0x2e')],function(_0x4f6dff){var _0x50db5f={};_0x50db5f[_0x4f6dff]={'$like':'%'+_0x416ee8[_0xce8e('0x2c')]['filter']+'%'};return _0x50db5f;})});}_0xee918e=_[_0xce8e('0x39')]({},_0xee918e,_0x416ee8[_0xce8e('0x47')]);return _0x4f432c[_0xce8e('0x48')](_0xee918e);}})[_0xce8e('0x20')](function(_0x43d423){if(_0x43d423){_0x389ee2=_0x43d423['length'];if(!_0x416ee8[_0xce8e('0x2c')][_0xce8e('0x32')](_0xce8e('0x33'))){_0xee918e['limit']=qs[_0xce8e('0x1a')](_0x416ee8['query'][_0xce8e('0x1a')]);_0xee918e[_0xce8e('0x1b')]=qs[_0xce8e('0x1b')](_0x416ee8[_0xce8e('0x2c')][_0xce8e('0x1b')]);}return _0x4f432c[_0xce8e('0x48')](_0xee918e);}})[_0xce8e('0x20')](function(_0x19b9b6){if(_0x19b9b6){return _0x19b9b6?{'count':_0x389ee2,'rows':_0x19b9b6}:null;}})[_0xce8e('0x20')](respondWithResult(_0x286b3e,null))[_0xce8e('0x3e')](handleError(_0x286b3e,null));};exports[_0xce8e('0x49')]=function(_0x959a98,_0x6e0a5c,_0x532b29){var _0x56ba8d={};var _0x229a52={};var _0x57d6a2;var _0x4b4190;return db[_0xce8e('0x28')][_0xce8e('0x4a')]({'where':{'id':_0x959a98[_0xce8e('0x40')]['id']}})[_0xce8e('0x20')](handleEntityNotFound(_0x6e0a5c,null))[_0xce8e('0x20')](function(_0x374cad){if(_0x374cad){_0x57d6a2=_0x374cad;_0x229a52[_0xce8e('0x2b')]=_[_0xce8e('0x2d')](db[_0xce8e('0x45')][_0xce8e('0x29')]);_0x229a52[_0xce8e('0x2c')]=_['keys'](_0x959a98[_0xce8e('0x2c')]);_0x229a52[_0xce8e('0x46')]=_['intersection'](_0x229a52['model'],_0x229a52['query']);_0x56ba8d['attributes']=_['intersection'](_0x229a52[_0xce8e('0x2b')],qs[_0xce8e('0x30')](_0x959a98[_0xce8e('0x2c')][_0xce8e('0x30')]));_0x56ba8d[_0xce8e('0x2e')]=_0x56ba8d[_0xce8e('0x2e')][_0xce8e('0x31')]?_0x56ba8d[_0xce8e('0x2e')]:_0x229a52[_0xce8e('0x2b')];_0x56ba8d[_0xce8e('0x34')]=qs[_0xce8e('0x35')](_0x959a98[_0xce8e('0x2c')][_0xce8e('0x35')]);_0x56ba8d[_0xce8e('0x36')]=qs[_0xce8e('0x46')](_[_0xce8e('0x37')](_0x959a98[_0xce8e('0x2c')],_0x229a52[_0xce8e('0x46')]));if(_0x959a98['query']['filter']){_0x56ba8d[_0xce8e('0x36')]=_[_0xce8e('0x39')](_0x56ba8d[_0xce8e('0x36')],{'$or':_[_0xce8e('0x27')](_0x56ba8d[_0xce8e('0x2e')],function(_0x3188f5){var _0x39f9a0={};_0x39f9a0[_0x3188f5]={'$like':'%'+_0x959a98['query'][_0xce8e('0x38')]+'%'};return _0x39f9a0;})});}_0x56ba8d=_[_0xce8e('0x39')]({},_0x56ba8d,_0x959a98['options']);return _0x57d6a2['getSubjects'](_0x56ba8d);}})['then'](function(_0x23ebf8){if(_0x23ebf8){_0x4b4190=_0x23ebf8[_0xce8e('0x31')];if(!_0x959a98[_0xce8e('0x2c')][_0xce8e('0x32')](_0xce8e('0x33'))){_0x56ba8d[_0xce8e('0x1a')]=qs['limit'](_0x959a98[_0xce8e('0x2c')][_0xce8e('0x1a')]);_0x56ba8d[_0xce8e('0x1b')]=qs[_0xce8e('0x1b')](_0x959a98['query'][_0xce8e('0x1b')]);}return _0x57d6a2[_0xce8e('0x49')](_0x56ba8d);}})['then'](function(_0x370c2b){if(_0x370c2b){return _0x370c2b?{'count':_0x4b4190,'rows':_0x370c2b}:null;}})[_0xce8e('0x20')](respondWithResult(_0x6e0a5c,null))[_0xce8e('0x3e')](handleError(_0x6e0a5c,null));};exports[_0xce8e('0x4b')]=function(_0x4e70af,_0x534793,_0x1a73d6){var _0xcaf2b3={};var _0x35abef={};var _0x23b295;var _0x4d6f5b;return db['SugarcrmConfiguration'][_0xce8e('0x4a')]({'where':{'id':_0x4e70af[_0xce8e('0x40')]['id']}})[_0xce8e('0x20')](handleEntityNotFound(_0x534793,null))['then'](function(_0x11d53f){if(_0x11d53f){_0x23b295=_0x11d53f;_0x35abef['model']=_['keys'](db[_0xce8e('0x45')]['rawAttributes']);_0x35abef[_0xce8e('0x2c')]=_[_0xce8e('0x2d')](_0x4e70af[_0xce8e('0x2c')]);_0x35abef['filters']=_['intersection'](_0x35abef['model'],_0x35abef[_0xce8e('0x2c')]);_0xcaf2b3[_0xce8e('0x2e')]=_[_0xce8e('0x2f')](_0x35abef[_0xce8e('0x2b')],qs['fields'](_0x4e70af[_0xce8e('0x2c')]['fields']));_0xcaf2b3[_0xce8e('0x2e')]=_0xcaf2b3[_0xce8e('0x2e')][_0xce8e('0x31')]?_0xcaf2b3[_0xce8e('0x2e')]:_0x35abef[_0xce8e('0x2b')];_0xcaf2b3[_0xce8e('0x34')]=qs[_0xce8e('0x35')](_0x4e70af[_0xce8e('0x2c')]['sort']);_0xcaf2b3[_0xce8e('0x36')]=qs[_0xce8e('0x46')](_[_0xce8e('0x37')](_0x4e70af[_0xce8e('0x2c')],_0x35abef['filters']));if(_0x4e70af['query'][_0xce8e('0x38')]){_0xcaf2b3[_0xce8e('0x36')]=_[_0xce8e('0x39')](_0xcaf2b3[_0xce8e('0x36')],{'$or':_[_0xce8e('0x27')](_0xcaf2b3[_0xce8e('0x2e')],function(_0x5a0a97){var _0x26619b={};_0x26619b[_0x5a0a97]={'$like':'%'+_0x4e70af[_0xce8e('0x2c')]['filter']+'%'};return _0x26619b;})});}_0xcaf2b3=_[_0xce8e('0x39')]({},_0xcaf2b3,_0x4e70af[_0xce8e('0x47')]);return _0x23b295['getDescriptions'](_0xcaf2b3);}})[_0xce8e('0x20')](function(_0x2bbba4){if(_0x2bbba4){_0x4d6f5b=_0x2bbba4[_0xce8e('0x31')];if(!_0x4e70af[_0xce8e('0x2c')][_0xce8e('0x32')](_0xce8e('0x33'))){_0xcaf2b3['limit']=qs[_0xce8e('0x1a')](_0x4e70af[_0xce8e('0x2c')][_0xce8e('0x1a')]);_0xcaf2b3[_0xce8e('0x1b')]=qs[_0xce8e('0x1b')](_0x4e70af[_0xce8e('0x2c')]['offset']);}return _0x23b295[_0xce8e('0x4b')](_0xcaf2b3);}})[_0xce8e('0x20')](function(_0x37cd2){if(_0x37cd2){return _0x37cd2?{'count':_0x4d6f5b,'rows':_0x37cd2}:null;}})[_0xce8e('0x20')](respondWithResult(_0x534793,null))['catch'](handleError(_0x534793,null));};
\ No newline at end of file
+var _0x7a39=['../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','destroy','then','end','error','stack','name','index','SugarcrmConfiguration','type','key','query','filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','filter','where','map','VIRTUAL','options','findAll','rows','catch','show','params','keys','rawAttributes','length','include','merge','create','body','update','find','findOne','SugarcrmField','getFields','pick','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils'];(function(_0x68c979,_0x431cff){var _0x4f0001=function(_0xa7595d){while(--_0xa7595d){_0x68c979['push'](_0x68c979['shift']());}};_0x4f0001(++_0x431cff);}(_0x7a39,0x182));var _0x97a3=function(_0x462654,_0x47097b){_0x462654=_0x462654-0x0;var _0x9845ae=_0x7a39[_0x462654];return _0x9845ae;};'use strict';var emlformat=require(_0x97a3('0x0'));var rimraf=require(_0x97a3('0x1'));var zipdir=require(_0x97a3('0x2'));var jsonpatch=require(_0x97a3('0x3'));var rp=require(_0x97a3('0x4'));var moment=require(_0x97a3('0x5'));var BPromise=require(_0x97a3('0x6'));var Mustache=require(_0x97a3('0x7'));var util=require(_0x97a3('0x8'));var path=require(_0x97a3('0x9'));var sox=require(_0x97a3('0xa'));var csv=require(_0x97a3('0xb'));var ejs=require(_0x97a3('0xc'));var fs=require('fs');var fs_extra=require(_0x97a3('0xd'));var _=require(_0x97a3('0xe'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x97a3('0xf'));var deskjs=require(_0x97a3('0x10'));var toCsv=require(_0x97a3('0xb'));var querystring=require(_0x97a3('0x11'));var Papa=require('papaparse');var Redis=require(_0x97a3('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x97a3('0x13'));var as=require(_0x97a3('0x14'));var hardwareService=require(_0x97a3('0x15'));var logger=require('../../config/logger')(_0x97a3('0x16'));var utils=require(_0x97a3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x97a3('0x18'));var db=require(_0x97a3('0x19'))['db'];function respondWithStatusCode(_0x6c8555,_0x5152e5){_0x5152e5=_0x5152e5||0xcc;return function(_0x3780ec){if(_0x3780ec){return _0x6c8555['sendStatus'](_0x5152e5);}return _0x6c8555[_0x97a3('0x1a')](_0x5152e5)['end']();};}function respondWithResult(_0x3255a0,_0x16dc62){_0x16dc62=_0x16dc62||0xc8;return function(_0x55a139){if(_0x55a139){return _0x3255a0[_0x97a3('0x1a')](_0x16dc62)[_0x97a3('0x1b')](_0x55a139);}};}function respondWithFilteredResult(_0x1db174,_0x1c4bbe){return function(_0x58bd4d){if(_0x58bd4d){var _0x51edf1=typeof _0x1c4bbe[_0x97a3('0x1c')]===_0x97a3('0x1d')&&typeof _0x1c4bbe['limit']===_0x97a3('0x1d');var _0x271f7f=_0x58bd4d['count'];var _0x5de087=_0x51edf1?0x0:_0x1c4bbe[_0x97a3('0x1c')];var _0x5a6170=_0x51edf1?_0x58bd4d[_0x97a3('0x1e')]:_0x1c4bbe[_0x97a3('0x1c')]+_0x1c4bbe[_0x97a3('0x1f')];var _0x2539b4;if(_0x5a6170>=_0x271f7f){_0x5a6170=_0x271f7f;_0x2539b4=0xc8;}else{_0x2539b4=0xce;}_0x1db174['status'](_0x2539b4);return _0x1db174[_0x97a3('0x20')](_0x97a3('0x21'),_0x5de087+'-'+_0x5a6170+'/'+_0x271f7f)[_0x97a3('0x1b')](_0x58bd4d);}return null;};}function patchUpdates(_0x381e33){return function(_0x42ade1){try{jsonpatch[_0x97a3('0x22')](_0x42ade1,_0x381e33,!![]);}catch(_0x4e0324){return BPromise[_0x97a3('0x23')](_0x4e0324);}return _0x42ade1[_0x97a3('0x24')]();};}function saveUpdates(_0x15d109,_0xd4659c){return function(_0xbf3907){if(_0xbf3907){return _0xbf3907['update'](_0x15d109)['then'](function(_0xae0591){return _0xae0591;});}return null;};}function removeEntity(_0x1c751a,_0x1d4f1a){return function(_0x18294e){if(_0x18294e){return _0x18294e[_0x97a3('0x25')]()[_0x97a3('0x26')](function(){_0x1c751a[_0x97a3('0x1a')](0xcc)[_0x97a3('0x27')]();});}};}function handleEntityNotFound(_0x5ce5cd,_0x3198f6){return function(_0x49a219){if(!_0x49a219){_0x5ce5cd['sendStatus'](0x194);}return _0x49a219;};}function handleError(_0x6d0806,_0x14abfa){_0x14abfa=_0x14abfa||0x1f4;return function(_0x1a0b05){logger[_0x97a3('0x28')](_0x1a0b05[_0x97a3('0x29')]);if(_0x1a0b05[_0x97a3('0x2a')]){delete _0x1a0b05[_0x97a3('0x2a')];}_0x6d0806[_0x97a3('0x1a')](_0x14abfa)['send'](_0x1a0b05);};}exports[_0x97a3('0x2b')]=function(_0x3580d3,_0x4675da){var _0x4a781f={},_0x46557e={},_0x5555c5={'count':0x0,'rows':[]};var _0x31809a=_['map'](db[_0x97a3('0x2c')]['rawAttributes'],function(_0x18b164){return{'name':_0x18b164['fieldName'],'type':_0x18b164[_0x97a3('0x2d')][_0x97a3('0x2e')]};});_0x46557e['model']=_['map'](_0x31809a,_0x97a3('0x2a'));_0x46557e[_0x97a3('0x2f')]=_['keys'](_0x3580d3[_0x97a3('0x2f')]);_0x46557e[_0x97a3('0x30')]=_[_0x97a3('0x31')](_0x46557e[_0x97a3('0x32')],_0x46557e['query']);_0x4a781f['attributes']=_[_0x97a3('0x31')](_0x46557e['model'],qs[_0x97a3('0x33')](_0x3580d3[_0x97a3('0x2f')][_0x97a3('0x33')]));_0x4a781f[_0x97a3('0x34')]=_0x4a781f[_0x97a3('0x34')]['length']?_0x4a781f[_0x97a3('0x34')]:_0x46557e[_0x97a3('0x32')];if(!_0x3580d3['query'][_0x97a3('0x35')](_0x97a3('0x36'))){_0x4a781f[_0x97a3('0x1f')]=qs[_0x97a3('0x1f')](_0x3580d3['query']['limit']);_0x4a781f[_0x97a3('0x1c')]=qs[_0x97a3('0x1c')](_0x3580d3[_0x97a3('0x2f')]['offset']);}_0x4a781f[_0x97a3('0x37')]=qs[_0x97a3('0x38')](_0x3580d3[_0x97a3('0x2f')][_0x97a3('0x38')]);_0x4a781f['where']=qs[_0x97a3('0x30')](_['pick'](_0x3580d3[_0x97a3('0x2f')],_0x46557e[_0x97a3('0x30')]),_0x31809a);if(_0x3580d3[_0x97a3('0x2f')][_0x97a3('0x39')]){_0x4a781f[_0x97a3('0x3a')]=_['merge'](_0x4a781f[_0x97a3('0x3a')],{'$or':_[_0x97a3('0x3b')](_0x31809a,function(_0x422693){if(_0x422693[_0x97a3('0x2d')]!==_0x97a3('0x3c')){var _0x1bd6af={};_0x1bd6af[_0x422693[_0x97a3('0x2a')]]={'$like':'%'+_0x3580d3[_0x97a3('0x2f')][_0x97a3('0x39')]+'%'};return _0x1bd6af;}})});}_0x4a781f=_['merge']({},_0x4a781f,_0x3580d3[_0x97a3('0x3d')]);var _0x4ffa20={'where':_0x4a781f['where']};return db[_0x97a3('0x2c')][_0x97a3('0x1e')](_0x4ffa20)[_0x97a3('0x26')](function(_0x4732e1){_0x5555c5[_0x97a3('0x1e')]=_0x4732e1;if(_0x3580d3['query']['includeAll']){_0x4a781f['include']=[{'all':!![]}];}return db[_0x97a3('0x2c')][_0x97a3('0x3e')](_0x4a781f);})[_0x97a3('0x26')](function(_0xf4e8bd){_0x5555c5[_0x97a3('0x3f')]=_0xf4e8bd;return _0x5555c5;})[_0x97a3('0x26')](respondWithFilteredResult(_0x4675da,_0x4a781f))[_0x97a3('0x40')](handleError(_0x4675da,null));};exports[_0x97a3('0x41')]=function(_0x4fe730,_0x354b93){var _0x313cd7={'raw':![],'where':{'id':_0x4fe730[_0x97a3('0x42')]['id']}},_0x3fc747={};_0x3fc747[_0x97a3('0x32')]=_[_0x97a3('0x43')](db[_0x97a3('0x2c')][_0x97a3('0x44')]);_0x3fc747[_0x97a3('0x2f')]=_[_0x97a3('0x43')](_0x4fe730['query']);_0x3fc747[_0x97a3('0x30')]=_[_0x97a3('0x31')](_0x3fc747[_0x97a3('0x32')],_0x3fc747[_0x97a3('0x2f')]);_0x313cd7[_0x97a3('0x34')]=_[_0x97a3('0x31')](_0x3fc747['model'],qs['fields'](_0x4fe730[_0x97a3('0x2f')][_0x97a3('0x33')]));_0x313cd7[_0x97a3('0x34')]=_0x313cd7[_0x97a3('0x34')][_0x97a3('0x45')]?_0x313cd7[_0x97a3('0x34')]:_0x3fc747[_0x97a3('0x32')];if(_0x4fe730['query']['includeAll']){_0x313cd7[_0x97a3('0x46')]=[{'all':!![]}];}_0x313cd7=_[_0x97a3('0x47')]({},_0x313cd7,_0x4fe730[_0x97a3('0x3d')]);return db[_0x97a3('0x2c')]['find'](_0x313cd7)['then'](handleEntityNotFound(_0x354b93,null))[_0x97a3('0x26')](respondWithResult(_0x354b93,null))[_0x97a3('0x40')](handleError(_0x354b93,null));};exports['create']=function(_0x2730e0,_0x4759d5){return db[_0x97a3('0x2c')][_0x97a3('0x48')](_0x2730e0[_0x97a3('0x49')],{})[_0x97a3('0x26')](respondWithResult(_0x4759d5,0xc9))[_0x97a3('0x40')](handleError(_0x4759d5,null));};exports[_0x97a3('0x4a')]=function(_0x1673c1,_0x12009e){if(_0x1673c1[_0x97a3('0x49')]['id']){delete _0x1673c1['body']['id'];}return db[_0x97a3('0x2c')][_0x97a3('0x4b')]({'where':{'id':_0x1673c1[_0x97a3('0x42')]['id']}})[_0x97a3('0x26')](handleEntityNotFound(_0x12009e,null))[_0x97a3('0x26')](saveUpdates(_0x1673c1[_0x97a3('0x49')],null))[_0x97a3('0x26')](respondWithResult(_0x12009e,null))[_0x97a3('0x40')](handleError(_0x12009e,null));};exports[_0x97a3('0x25')]=function(_0x321157,_0x3e5cab){return db['SugarcrmConfiguration']['find']({'where':{'id':_0x321157[_0x97a3('0x42')]['id']}})[_0x97a3('0x26')](handleEntityNotFound(_0x3e5cab,null))['then'](removeEntity(_0x3e5cab,null))['catch'](handleError(_0x3e5cab,null));};exports['getFields']=function(_0x36034a,_0x4a53cd,_0xd7d4d1){var _0x1f090a={};var _0x511caa={};var _0x1317b5;var _0x2e3e79;return db[_0x97a3('0x2c')][_0x97a3('0x4c')]({'where':{'id':_0x36034a[_0x97a3('0x42')]['id']}})['then'](handleEntityNotFound(_0x4a53cd,null))[_0x97a3('0x26')](function(_0x1f96ee){if(_0x1f96ee){_0x1317b5=_0x1f96ee;_0x511caa['model']=_[_0x97a3('0x43')](db[_0x97a3('0x4d')]['rawAttributes']);_0x511caa[_0x97a3('0x2f')]=_['keys'](_0x36034a[_0x97a3('0x2f')]);_0x511caa[_0x97a3('0x30')]=_['intersection'](_0x511caa[_0x97a3('0x32')],_0x511caa['query']);_0x1f090a[_0x97a3('0x34')]=_[_0x97a3('0x31')](_0x511caa['model'],qs[_0x97a3('0x33')](_0x36034a['query']['fields']));_0x1f090a[_0x97a3('0x34')]=_0x1f090a['attributes']['length']?_0x1f090a['attributes']:_0x511caa[_0x97a3('0x32')];_0x1f090a[_0x97a3('0x37')]=qs[_0x97a3('0x38')](_0x36034a['query']['sort']);_0x1f090a[_0x97a3('0x3a')]=qs['filters'](_['pick'](_0x36034a[_0x97a3('0x2f')],_0x511caa[_0x97a3('0x30')]));if(_0x36034a[_0x97a3('0x2f')]['filter']){_0x1f090a[_0x97a3('0x3a')]=_[_0x97a3('0x47')](_0x1f090a['where'],{'$or':_[_0x97a3('0x3b')](_0x1f090a[_0x97a3('0x34')],function(_0x551845){var _0x237bc6={};_0x237bc6[_0x551845]={'$like':'%'+_0x36034a[_0x97a3('0x2f')][_0x97a3('0x39')]+'%'};return _0x237bc6;})});}_0x1f090a=_[_0x97a3('0x47')]({},_0x1f090a,_0x36034a[_0x97a3('0x3d')]);return _0x1317b5[_0x97a3('0x4e')](_0x1f090a);}})[_0x97a3('0x26')](function(_0x1824b8){if(_0x1824b8){_0x2e3e79=_0x1824b8[_0x97a3('0x45')];if(!_0x36034a['query']['hasOwnProperty']('nolimit')){_0x1f090a[_0x97a3('0x1f')]=qs[_0x97a3('0x1f')](_0x36034a[_0x97a3('0x2f')][_0x97a3('0x1f')]);_0x1f090a[_0x97a3('0x1c')]=qs[_0x97a3('0x1c')](_0x36034a[_0x97a3('0x2f')][_0x97a3('0x1c')]);}return _0x1317b5[_0x97a3('0x4e')](_0x1f090a);}})[_0x97a3('0x26')](function(_0x45f2e3){if(_0x45f2e3){return _0x45f2e3?{'count':_0x2e3e79,'rows':_0x45f2e3}:null;}})[_0x97a3('0x26')](respondWithResult(_0x4a53cd,null))['catch'](handleError(_0x4a53cd,null));};exports['getSubjects']=function(_0x178fae,_0xe7f5ad,_0x376bac){var _0x54a5f8={};var _0x5ca178={};var _0x5e01a8;var _0x376632;return db[_0x97a3('0x2c')]['findOne']({'where':{'id':_0x178fae[_0x97a3('0x42')]['id']}})['then'](handleEntityNotFound(_0xe7f5ad,null))[_0x97a3('0x26')](function(_0x37c2b6){if(_0x37c2b6){_0x5e01a8=_0x37c2b6;_0x5ca178[_0x97a3('0x32')]=_[_0x97a3('0x43')](db[_0x97a3('0x4d')][_0x97a3('0x44')]);_0x5ca178[_0x97a3('0x2f')]=_[_0x97a3('0x43')](_0x178fae[_0x97a3('0x2f')]);_0x5ca178['filters']=_[_0x97a3('0x31')](_0x5ca178['model'],_0x5ca178['query']);_0x54a5f8['attributes']=_[_0x97a3('0x31')](_0x5ca178[_0x97a3('0x32')],qs[_0x97a3('0x33')](_0x178fae['query'][_0x97a3('0x33')]));_0x54a5f8['attributes']=_0x54a5f8[_0x97a3('0x34')]['length']?_0x54a5f8[_0x97a3('0x34')]:_0x5ca178[_0x97a3('0x32')];_0x54a5f8['order']=qs['sort'](_0x178fae[_0x97a3('0x2f')][_0x97a3('0x38')]);_0x54a5f8[_0x97a3('0x3a')]=qs[_0x97a3('0x30')](_[_0x97a3('0x4f')](_0x178fae[_0x97a3('0x2f')],_0x5ca178[_0x97a3('0x30')]));if(_0x178fae['query'][_0x97a3('0x39')]){_0x54a5f8['where']=_['merge'](_0x54a5f8[_0x97a3('0x3a')],{'$or':_[_0x97a3('0x3b')](_0x54a5f8[_0x97a3('0x34')],function(_0x566f9c){var _0x5cdf96={};_0x5cdf96[_0x566f9c]={'$like':'%'+_0x178fae[_0x97a3('0x2f')]['filter']+'%'};return _0x5cdf96;})});}_0x54a5f8=_['merge']({},_0x54a5f8,_0x178fae[_0x97a3('0x3d')]);return _0x5e01a8[_0x97a3('0x50')](_0x54a5f8);}})['then'](function(_0x2a6a05){if(_0x2a6a05){_0x376632=_0x2a6a05[_0x97a3('0x45')];if(!_0x178fae[_0x97a3('0x2f')][_0x97a3('0x35')](_0x97a3('0x36'))){_0x54a5f8[_0x97a3('0x1f')]=qs[_0x97a3('0x1f')](_0x178fae[_0x97a3('0x2f')][_0x97a3('0x1f')]);_0x54a5f8[_0x97a3('0x1c')]=qs[_0x97a3('0x1c')](_0x178fae[_0x97a3('0x2f')][_0x97a3('0x1c')]);}return _0x5e01a8[_0x97a3('0x50')](_0x54a5f8);}})['then'](function(_0x2cc284){if(_0x2cc284){return _0x2cc284?{'count':_0x376632,'rows':_0x2cc284}:null;}})[_0x97a3('0x26')](respondWithResult(_0xe7f5ad,null))[_0x97a3('0x40')](handleError(_0xe7f5ad,null));};exports[_0x97a3('0x51')]=function(_0x37194a,_0x3fc092,_0x1c9491){var _0x234041={};var _0x34dfd1={};var _0xe20032;var _0x3102bf;return db[_0x97a3('0x2c')][_0x97a3('0x4c')]({'where':{'id':_0x37194a[_0x97a3('0x42')]['id']}})['then'](handleEntityNotFound(_0x3fc092,null))[_0x97a3('0x26')](function(_0x458d83){if(_0x458d83){_0xe20032=_0x458d83;_0x34dfd1[_0x97a3('0x32')]=_[_0x97a3('0x43')](db[_0x97a3('0x4d')][_0x97a3('0x44')]);_0x34dfd1[_0x97a3('0x2f')]=_['keys'](_0x37194a[_0x97a3('0x2f')]);_0x34dfd1['filters']=_[_0x97a3('0x31')](_0x34dfd1[_0x97a3('0x32')],_0x34dfd1[_0x97a3('0x2f')]);_0x234041['attributes']=_[_0x97a3('0x31')](_0x34dfd1['model'],qs['fields'](_0x37194a[_0x97a3('0x2f')][_0x97a3('0x33')]));_0x234041[_0x97a3('0x34')]=_0x234041[_0x97a3('0x34')]['length']?_0x234041[_0x97a3('0x34')]:_0x34dfd1['model'];_0x234041[_0x97a3('0x37')]=qs['sort'](_0x37194a[_0x97a3('0x2f')][_0x97a3('0x38')]);_0x234041['where']=qs[_0x97a3('0x30')](_[_0x97a3('0x4f')](_0x37194a[_0x97a3('0x2f')],_0x34dfd1['filters']));if(_0x37194a[_0x97a3('0x2f')]['filter']){_0x234041[_0x97a3('0x3a')]=_[_0x97a3('0x47')](_0x234041['where'],{'$or':_[_0x97a3('0x3b')](_0x234041['attributes'],function(_0x23721c){var _0x1513a3={};_0x1513a3[_0x23721c]={'$like':'%'+_0x37194a[_0x97a3('0x2f')][_0x97a3('0x39')]+'%'};return _0x1513a3;})});}_0x234041=_['merge']({},_0x234041,_0x37194a[_0x97a3('0x3d')]);return _0xe20032['getDescriptions'](_0x234041);}})['then'](function(_0x169514){if(_0x169514){_0x3102bf=_0x169514['length'];if(!_0x37194a[_0x97a3('0x2f')]['hasOwnProperty'](_0x97a3('0x36'))){_0x234041[_0x97a3('0x1f')]=qs[_0x97a3('0x1f')](_0x37194a[_0x97a3('0x2f')][_0x97a3('0x1f')]);_0x234041['offset']=qs[_0x97a3('0x1c')](_0x37194a[_0x97a3('0x2f')][_0x97a3('0x1c')]);}return _0xe20032[_0x97a3('0x51')](_0x234041);}})[_0x97a3('0x26')](function(_0x4b35cd){if(_0x4b35cd){return _0x4b35cd?{'count':_0x3102bf,'rows':_0x4b35cd}:null;}})[_0x97a3('0x26')](respondWithResult(_0x3fc092,null))[_0x97a3('0x40')](handleError(_0x3fc092,null));};
\ No newline at end of file
index 8aa8a54..c5a2cf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b09=['exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment'];(function(_0x37af2e,_0x41b6d7){var _0x54c46f=function(_0x1de05f){while(--_0x1de05f){_0x37af2e['push'](_0x37af2e['shift']());}};_0x54c46f(++_0x41b6d7);}(_0x4b09,0x1cc));var _0x94b0=function(_0x1c8c28,_0x3ee093){_0x1c8c28=_0x1c8c28-0x0;var _0x1f59b4=_0x4b09[_0x1c8c28];return _0x1f59b4;};'use strict';var _=require(_0x94b0('0x0'));var util=require(_0x94b0('0x1'));var logger=require(_0x94b0('0x2'))(_0x94b0('0x3'));var moment=require(_0x94b0('0x4'));var BPromise=require('bluebird');var rp=require(_0x94b0('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x94b0('0x6'));var config=require(_0x94b0('0x7'));var attributes=require('./intSugarcrmConfiguration.attributes');module[_0x94b0('0x8')]=function(_0x35155b,_0x1f34ed){return _0x35155b[_0x94b0('0x9')](_0x94b0('0xa'),attributes,{'tableName':_0x94b0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1925=['path','rimraf','../../config/environment','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','api','moment','bluebird','request-promise'];(function(_0x59079e,_0x490062){var _0x5d4800=function(_0x2f1a27){while(--_0x2f1a27){_0x59079e['push'](_0x59079e['shift']());}};_0x5d4800(++_0x490062);}(_0x1925,0x13f));var _0x5192=function(_0x186376,_0x5d988a){_0x186376=_0x186376-0x0;var _0x2dbdd9=_0x1925[_0x186376];return _0x2dbdd9;};'use strict';var _=require(_0x5192('0x0'));var util=require(_0x5192('0x1'));var logger=require('../../config/logger')(_0x5192('0x2'));var moment=require(_0x5192('0x3'));var BPromise=require(_0x5192('0x4'));var rp=require(_0x5192('0x5'));var fs=require('fs');var path=require(_0x5192('0x6'));var rimraf=require(_0x5192('0x7'));var config=require(_0x5192('0x8'));var attributes=require('./intSugarcrmConfiguration.attributes');module[_0x5192('0x9')]=function(_0x56e31a,_0x133068){return _0x56e31a[_0x5192('0xa')](_0x5192('0xb'),attributes,{'tableName':_0x5192('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e14dfa1..bb331c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf07=['../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0xbf07,0xe0));var _0x7bf0=function(_0x19dd7a,_0x51de21){_0x19dd7a=_0x19dd7a-0x0;var _0x3feb6a=_0xbf07[_0x19dd7a];return _0x3feb6a;};'use strict';var _=require('lodash');var util=require(_0x7bf0('0x0'));var moment=require(_0x7bf0('0x1'));var BPromise=require(_0x7bf0('0x2'));var rs=require(_0x7bf0('0x3'));var fs=require('fs');var Redis=require(_0x7bf0('0x4'));var db=require(_0x7bf0('0x5'))['db'];var utils=require(_0x7bf0('0x6'));var logger=require(_0x7bf0('0x7'))(_0x7bf0('0x8'));var config=require(_0x7bf0('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7bf0('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x171015,_0x5b9f28,_0x3f788a){return new BPromise(function(_0x9a2aad,_0x214210){return client[_0x7bf0('0xb')](_0x171015,_0x3f788a)[_0x7bf0('0xc')](function(_0x1e9042){logger[_0x7bf0('0xd')](_0x7bf0('0xe'),_0x5b9f28,_0x7bf0('0xf'));logger[_0x7bf0('0x10')](_0x7bf0('0x11'),_0x5b9f28,_0x7bf0('0xf'),JSON['stringify'](_0x1e9042));if(_0x1e9042[_0x7bf0('0x12')]){if(_0x1e9042[_0x7bf0('0x12')][_0x7bf0('0x13')]===0x1f4){logger['error']('SugarcrmConfiguration,\x20%s,\x20%s',_0x5b9f28,_0x1e9042[_0x7bf0('0x12')][_0x7bf0('0x14')]);return _0x214210(_0x1e9042['error']['message']);}logger[_0x7bf0('0x12')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x5b9f28,_0x1e9042['error'][_0x7bf0('0x14')]);return _0x9a2aad(_0x1e9042[_0x7bf0('0x12')][_0x7bf0('0x14')]);}else{logger[_0x7bf0('0xd')](_0x7bf0('0xe'),_0x5b9f28,'request\x20sent');_0x9a2aad(_0x1e9042[_0x7bf0('0x15')]['message']);}})[_0x7bf0('0x16')](function(_0xdde2f8){logger[_0x7bf0('0x12')](_0x7bf0('0xe'),_0x5b9f28,_0xdde2f8);_0x214210(_0xdde2f8);});});}
\ No newline at end of file
+var _0x8d22=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','moment'];(function(_0x11a3c2,_0xb7f165){var _0x846cea=function(_0x303f79){while(--_0x303f79){_0x11a3c2['push'](_0x11a3c2['shift']());}};_0x846cea(++_0xb7f165);}(_0x8d22,0x6d));var _0x28d2=function(_0x4daa8,_0x2edb74){_0x4daa8=_0x4daa8-0x0;var _0x431529=_0x8d22[_0x4daa8];return _0x431529;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x28d2('0x0'));var BPromise=require(_0x28d2('0x1'));var rs=require(_0x28d2('0x2'));var fs=require('fs');var Redis=require(_0x28d2('0x3'));var db=require(_0x28d2('0x4'))['db'];var utils=require(_0x28d2('0x5'));var logger=require(_0x28d2('0x6'))(_0x28d2('0x7'));var config=require(_0x28d2('0x8'));var jayson=require(_0x28d2('0x9'));var client=jayson[_0x28d2('0xa')][_0x28d2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x16c857,_0x544b3a,_0x47579a){return new BPromise(function(_0x874397,_0x2d0d5d){return client[_0x28d2('0xc')](_0x16c857,_0x47579a)['then'](function(_0x25fe4c){logger[_0x28d2('0xd')](_0x28d2('0xe'),_0x544b3a,_0x28d2('0xf'));logger[_0x28d2('0x10')](_0x28d2('0x11'),_0x544b3a,_0x28d2('0xf'),JSON[_0x28d2('0x12')](_0x25fe4c));if(_0x25fe4c[_0x28d2('0x13')]){if(_0x25fe4c[_0x28d2('0x13')]['code']===0x1f4){logger['error'](_0x28d2('0xe'),_0x544b3a,_0x25fe4c['error'][_0x28d2('0x14')]);return _0x2d0d5d(_0x25fe4c['error'][_0x28d2('0x14')]);}logger['error'](_0x28d2('0xe'),_0x544b3a,_0x25fe4c[_0x28d2('0x13')][_0x28d2('0x14')]);return _0x874397(_0x25fe4c[_0x28d2('0x13')][_0x28d2('0x14')]);}else{logger[_0x28d2('0xd')](_0x28d2('0xe'),_0x544b3a,_0x28d2('0xf'));_0x874397(_0x25fe4c[_0x28d2('0x15')][_0x28d2('0x14')]);}})['catch'](function(_0x6c951e){logger['error']('SugarcrmConfiguration,\x20%s,\x20%s',_0x544b3a,_0x6c951e);_0x2d0d5d(_0x6c951e);});});}
\ No newline at end of file
index 3125c7b..137e720 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacaa=['path','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','put','/:id','update','delete','destroy','exports','multer'];(function(_0x542cba,_0x2ac46e){var _0x26406b=function(_0x5d2ac8){while(--_0x5d2ac8){_0x542cba['push'](_0x542cba['shift']());}};_0x26406b(++_0x2ac46e);}(_0xacaa,0xbf));var _0xaaca=function(_0x409557,_0x1caae1){_0x409557=_0x409557-0x0;var _0x275469=_0xacaa[_0x409557];return _0x275469;};'use strict';var multer=require(_0xaaca('0x0'));var util=require('util');var path=require(_0xaaca('0x1'));var timeout=require('connect-timeout');var express=require(_0xaaca('0x2'));var router=express[_0xaaca('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xaaca('0x4'));var config=require(_0xaaca('0x5'));var controller=require('./intSugarcrmField.controller');router[_0xaaca('0x6')]('/',auth[_0xaaca('0x7')](),controller[_0xaaca('0x8')]);router['get']('/:id',auth[_0xaaca('0x7')](),controller[_0xaaca('0x9')]);router['post']('/',auth[_0xaaca('0x7')](),controller['create']);router[_0xaaca('0xa')](_0xaaca('0xb'),auth[_0xaaca('0x7')](),controller[_0xaaca('0xc')]);router[_0xaaca('0xd')](_0xaaca('0xb'),auth['isAuthenticated'](),controller[_0xaaca('0xe')]);module[_0xaaca('0xf')]=router;
\ No newline at end of file
+var _0x3d16=['../../components/interaction/service','./intSugarcrmField.controller','get','isAuthenticated','index','/:id','create','put','update','delete','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x3d16,0x19b));var _0x63d1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3d16[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x63d1('0x0'));var util=require('util');var path=require(_0x63d1('0x1'));var timeout=require(_0x63d1('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x63d1('0x3'));var auth=require(_0x63d1('0x4'));var interaction=require(_0x63d1('0x5'));var config=require('../../config/environment');var controller=require(_0x63d1('0x6'));router[_0x63d1('0x7')]('/',auth[_0x63d1('0x8')](),controller[_0x63d1('0x9')]);router[_0x63d1('0x7')](_0x63d1('0xa'),auth[_0x63d1('0x8')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x63d1('0xb')]);router[_0x63d1('0xc')]('/:id',auth[_0x63d1('0x8')](),controller[_0x63d1('0xd')]);router[_0x63d1('0xe')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x63d1('0xf')]=router;
\ No newline at end of file
index ed89591..18074e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x669b=['string','variable','keyValue','picklist','STRING','customVariable','BOOLEAN','sequelize','exports','ENUM'];(function(_0x27ea8e,_0x254f53){var _0x4459f9=function(_0x1e2bef){while(--_0x1e2bef){_0x27ea8e['push'](_0x27ea8e['shift']());}};_0x4459f9(++_0x254f53);}(_0x669b,0xed));var _0xb669=function(_0x25e509,_0x246456){_0x25e509=_0x25e509-0x0;var _0x342ab7=_0x669b[_0x25e509];return _0x342ab7;};'use strict';var Sequelize=require(_0xb669('0x0'));module[_0xb669('0x1')]={'type':{'type':Sequelize[_0xb669('0x2')](_0xb669('0x3'),_0xb669('0x4'),'customVariable',_0xb669('0x5'),_0xb669('0x6')),'defaultValue':_0xb669('0x3')},'content':{'type':Sequelize[_0xb669('0x7')]},'key':{'type':Sequelize[_0xb669('0x7')]},'keyType':{'type':Sequelize[_0xb669('0x2')](_0xb669('0x3'),'variable',_0xb669('0x8'))},'keyContent':{'type':Sequelize[_0xb669('0x7')]},'idField':{'type':Sequelize[_0xb669('0x7')]},'nameField':{'type':Sequelize[_0xb669('0x7')]},'customField':{'type':Sequelize[_0xb669('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xb669('0x7')]}};
\ No newline at end of file
+var _0x7ece=['variable','customVariable','STRING','string','sequelize','ENUM'];(function(_0x8ea52b,_0x123913){var _0x5b4d40=function(_0xdfb370){while(--_0xdfb370){_0x8ea52b['push'](_0x8ea52b['shift']());}};_0x5b4d40(++_0x123913);}(_0x7ece,0x154));var _0xe7ec=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0x7ece[_0x17b6e3];return _0x3906f3;};'use strict';var Sequelize=require(_0xe7ec('0x0'));module['exports']={'type':{'type':Sequelize[_0xe7ec('0x1')]('string',_0xe7ec('0x2'),_0xe7ec('0x3'),'keyValue','picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0xe7ec('0x4')]},'key':{'type':Sequelize[_0xe7ec('0x4')]},'keyType':{'type':Sequelize[_0xe7ec('0x1')](_0xe7ec('0x5'),_0xe7ec('0x2'),'customVariable')},'keyContent':{'type':Sequelize[_0xe7ec('0x4')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 7995e2c..f3acd77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf04=['lodash','squel','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','status','end','json','offset','undefined','limit','count','reject','save','update','then','destroy','sendStatus','error','stack','name','index','map','SugarcrmField','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','filters','pick','filter','where','merge','includeAll','include','rows','catch','show','params','options','create','body','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra'];(function(_0x161c0b,_0x22a73f){var _0x29bcab=function(_0x167778){while(--_0x167778){_0x161c0b['push'](_0x161c0b['shift']());}};_0x29bcab(++_0x22a73f);}(_0xbf04,0xd5));var _0x4bf0=function(_0x57850b,_0x40c735){_0x57850b=_0x57850b-0x0;var _0x399b17=_0xbf04[_0x57850b];return _0x399b17;};'use strict';var emlformat=require(_0x4bf0('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4bf0('0x1'));var jsonpatch=require(_0x4bf0('0x2'));var rp=require(_0x4bf0('0x3'));var moment=require(_0x4bf0('0x4'));var BPromise=require(_0x4bf0('0x5'));var Mustache=require(_0x4bf0('0x6'));var util=require('util');var path=require(_0x4bf0('0x7'));var sox=require(_0x4bf0('0x8'));var csv=require(_0x4bf0('0x9'));var ejs=require(_0x4bf0('0xa'));var fs=require('fs');var fs_extra=require(_0x4bf0('0xb'));var _=require(_0x4bf0('0xc'));var squel=require(_0x4bf0('0xd'));var crypto=require(_0x4bf0('0xe'));var jsforce=require(_0x4bf0('0xf'));var deskjs=require(_0x4bf0('0x10'));var toCsv=require(_0x4bf0('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x4bf0('0x11'));var qs=require(_0x4bf0('0x12'));var as=require(_0x4bf0('0x13'));var hardwareService=require(_0x4bf0('0x14'));var logger=require(_0x4bf0('0x15'))(_0x4bf0('0x16'));var utils=require(_0x4bf0('0x17'));var config=require(_0x4bf0('0x18'));var licenseUtil=require(_0x4bf0('0x19'));var db=require(_0x4bf0('0x1a'))['db'];function respondWithStatusCode(_0x455d0b,_0x5a7eb4){_0x5a7eb4=_0x5a7eb4||0xcc;return function(_0x523db7){if(_0x523db7){return _0x455d0b['sendStatus'](_0x5a7eb4);}return _0x455d0b[_0x4bf0('0x1b')](_0x5a7eb4)[_0x4bf0('0x1c')]();};}function respondWithResult(_0x13c636,_0x4a8762){_0x4a8762=_0x4a8762||0xc8;return function(_0x351a5c){if(_0x351a5c){return _0x13c636[_0x4bf0('0x1b')](_0x4a8762)[_0x4bf0('0x1d')](_0x351a5c);}};}function respondWithFilteredResult(_0x3e0559,_0x4d6272){return function(_0x535aa0){if(_0x535aa0){var _0x13b5f9=typeof _0x4d6272[_0x4bf0('0x1e')]===_0x4bf0('0x1f')&&typeof _0x4d6272[_0x4bf0('0x20')]===_0x4bf0('0x1f');var _0x3205fe=_0x535aa0[_0x4bf0('0x21')];var _0x58edbf=_0x13b5f9?0x0:_0x4d6272[_0x4bf0('0x1e')];var _0x468f04=_0x13b5f9?_0x535aa0[_0x4bf0('0x21')]:_0x4d6272[_0x4bf0('0x1e')]+_0x4d6272[_0x4bf0('0x20')];var _0x56d27e;if(_0x468f04>=_0x3205fe){_0x468f04=_0x3205fe;_0x56d27e=0xc8;}else{_0x56d27e=0xce;}_0x3e0559[_0x4bf0('0x1b')](_0x56d27e);return _0x3e0559['set']('Content-Range',_0x58edbf+'-'+_0x468f04+'/'+_0x3205fe)[_0x4bf0('0x1d')](_0x535aa0);}return null;};}function patchUpdates(_0x31d1c1){return function(_0xe24a72){try{jsonpatch['apply'](_0xe24a72,_0x31d1c1,!![]);}catch(_0x488e50){return BPromise[_0x4bf0('0x22')](_0x488e50);}return _0xe24a72[_0x4bf0('0x23')]();};}function saveUpdates(_0x4643fc,_0x28db8c){return function(_0x5b5e9f){if(_0x5b5e9f){return _0x5b5e9f[_0x4bf0('0x24')](_0x4643fc)[_0x4bf0('0x25')](function(_0x43f347){return _0x43f347;});}return null;};}function removeEntity(_0x1ff53b,_0x5a82f9){return function(_0x314468){if(_0x314468){return _0x314468[_0x4bf0('0x26')]()[_0x4bf0('0x25')](function(){_0x1ff53b[_0x4bf0('0x1b')](0xcc)[_0x4bf0('0x1c')]();});}};}function handleEntityNotFound(_0x30fc42,_0x2c0157){return function(_0x2544c8){if(!_0x2544c8){_0x30fc42[_0x4bf0('0x27')](0x194);}return _0x2544c8;};}function handleError(_0x1c4e0b,_0x407c75){_0x407c75=_0x407c75||0x1f4;return function(_0x251493){logger[_0x4bf0('0x28')](_0x251493[_0x4bf0('0x29')]);if(_0x251493[_0x4bf0('0x2a')]){delete _0x251493[_0x4bf0('0x2a')];}_0x1c4e0b[_0x4bf0('0x1b')](_0x407c75)['send'](_0x251493);};}exports[_0x4bf0('0x2b')]=function(_0x2ce9b0,_0x24ad3a){var _0x570d5b={},_0x4a4df2={},_0x3356d8={'count':0x0,'rows':[]};var _0x7cd777=_[_0x4bf0('0x2c')](db[_0x4bf0('0x2d')][_0x4bf0('0x2e')],function(_0x33646a){return{'name':_0x33646a[_0x4bf0('0x2f')],'type':_0x33646a[_0x4bf0('0x30')][_0x4bf0('0x31')]};});_0x4a4df2[_0x4bf0('0x32')]=_[_0x4bf0('0x2c')](_0x7cd777,_0x4bf0('0x2a'));_0x4a4df2[_0x4bf0('0x33')]=_[_0x4bf0('0x34')](_0x2ce9b0[_0x4bf0('0x33')]);_0x4a4df2['filters']=_[_0x4bf0('0x35')](_0x4a4df2[_0x4bf0('0x32')],_0x4a4df2['query']);_0x570d5b['attributes']=_[_0x4bf0('0x35')](_0x4a4df2[_0x4bf0('0x32')],qs[_0x4bf0('0x36')](_0x2ce9b0[_0x4bf0('0x33')]['fields']));_0x570d5b[_0x4bf0('0x37')]=_0x570d5b[_0x4bf0('0x37')][_0x4bf0('0x38')]?_0x570d5b['attributes']:_0x4a4df2[_0x4bf0('0x32')];if(!_0x2ce9b0[_0x4bf0('0x33')][_0x4bf0('0x39')](_0x4bf0('0x3a'))){_0x570d5b[_0x4bf0('0x20')]=qs[_0x4bf0('0x20')](_0x2ce9b0[_0x4bf0('0x33')][_0x4bf0('0x20')]);_0x570d5b[_0x4bf0('0x1e')]=qs[_0x4bf0('0x1e')](_0x2ce9b0[_0x4bf0('0x33')][_0x4bf0('0x1e')]);}_0x570d5b['order']=qs['sort'](_0x2ce9b0['query'][_0x4bf0('0x3b')]);_0x570d5b['where']=qs[_0x4bf0('0x3c')](_[_0x4bf0('0x3d')](_0x2ce9b0[_0x4bf0('0x33')],_0x4a4df2['filters']),_0x7cd777);if(_0x2ce9b0[_0x4bf0('0x33')][_0x4bf0('0x3e')]){_0x570d5b[_0x4bf0('0x3f')]=_[_0x4bf0('0x40')](_0x570d5b[_0x4bf0('0x3f')],{'$or':_[_0x4bf0('0x2c')](_0x7cd777,function(_0x57b513){if(_0x57b513[_0x4bf0('0x30')]!=='VIRTUAL'){var _0x4e5cac={};_0x4e5cac[_0x57b513[_0x4bf0('0x2a')]]={'$like':'%'+_0x2ce9b0[_0x4bf0('0x33')][_0x4bf0('0x3e')]+'%'};return _0x4e5cac;}})});}_0x570d5b=_[_0x4bf0('0x40')]({},_0x570d5b,_0x2ce9b0['options']);var _0x38cc49={'where':_0x570d5b['where']};return db[_0x4bf0('0x2d')][_0x4bf0('0x21')](_0x38cc49)['then'](function(_0x3191db){_0x3356d8[_0x4bf0('0x21')]=_0x3191db;if(_0x2ce9b0['query'][_0x4bf0('0x41')]){_0x570d5b[_0x4bf0('0x42')]=[{'all':!![]}];}return db[_0x4bf0('0x2d')]['findAll'](_0x570d5b);})[_0x4bf0('0x25')](function(_0x38cefb){_0x3356d8[_0x4bf0('0x43')]=_0x38cefb;return _0x3356d8;})[_0x4bf0('0x25')](respondWithFilteredResult(_0x24ad3a,_0x570d5b))[_0x4bf0('0x44')](handleError(_0x24ad3a,null));};exports[_0x4bf0('0x45')]=function(_0x15fd6d,_0x3ac691){var _0x26e28e={'raw':!![],'where':{'id':_0x15fd6d[_0x4bf0('0x46')]['id']}},_0x59972f={};_0x59972f[_0x4bf0('0x32')]=_[_0x4bf0('0x34')](db[_0x4bf0('0x2d')]['rawAttributes']);_0x59972f[_0x4bf0('0x33')]=_[_0x4bf0('0x34')](_0x15fd6d[_0x4bf0('0x33')]);_0x59972f[_0x4bf0('0x3c')]=_[_0x4bf0('0x35')](_0x59972f[_0x4bf0('0x32')],_0x59972f[_0x4bf0('0x33')]);_0x26e28e[_0x4bf0('0x37')]=_[_0x4bf0('0x35')](_0x59972f['model'],qs['fields'](_0x15fd6d[_0x4bf0('0x33')][_0x4bf0('0x36')]));_0x26e28e[_0x4bf0('0x37')]=_0x26e28e[_0x4bf0('0x37')][_0x4bf0('0x38')]?_0x26e28e[_0x4bf0('0x37')]:_0x59972f['model'];if(_0x15fd6d[_0x4bf0('0x33')][_0x4bf0('0x41')]){_0x26e28e['include']=[{'all':!![]}];}_0x26e28e=_['merge']({},_0x26e28e,_0x15fd6d[_0x4bf0('0x47')]);return db[_0x4bf0('0x2d')]['find'](_0x26e28e)[_0x4bf0('0x25')](handleEntityNotFound(_0x3ac691,null))[_0x4bf0('0x25')](respondWithResult(_0x3ac691,null))[_0x4bf0('0x44')](handleError(_0x3ac691,null));};exports[_0x4bf0('0x48')]=function(_0x2dd823,_0x4927c2){return db['SugarcrmField'][_0x4bf0('0x48')](_0x2dd823[_0x4bf0('0x49')],{})['then'](respondWithResult(_0x4927c2,0xc9))[_0x4bf0('0x44')](handleError(_0x4927c2,null));};exports[_0x4bf0('0x24')]=function(_0x144cfd,_0x68c6d1){if(_0x144cfd[_0x4bf0('0x49')]['id']){delete _0x144cfd[_0x4bf0('0x49')]['id'];}return db[_0x4bf0('0x2d')][_0x4bf0('0x4a')]({'where':{'id':_0x144cfd['params']['id']}})['then'](handleEntityNotFound(_0x68c6d1,null))[_0x4bf0('0x25')](saveUpdates(_0x144cfd['body'],null))[_0x4bf0('0x25')](respondWithResult(_0x68c6d1,null))[_0x4bf0('0x44')](handleError(_0x68c6d1,null));};exports[_0x4bf0('0x26')]=function(_0x56042e,_0x3f51ce){return db[_0x4bf0('0x2d')][_0x4bf0('0x4a')]({'where':{'id':_0x56042e[_0x4bf0('0x46')]['id']}})[_0x4bf0('0x25')](handleEntityNotFound(_0x3f51ce,null))[_0x4bf0('0x25')](removeEntity(_0x3f51ce,null))[_0x4bf0('0x44')](handleError(_0x3f51ce,null));};
\ No newline at end of file
+var _0x5cfd=['then','destroy','sendStatus','name','send','index','map','SugarcrmField','rawAttributes','fieldName','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','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','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update'];(function(_0x17da5e,_0x4ff39c){var _0x3a5217=function(_0x164c3e){while(--_0x164c3e){_0x17da5e['push'](_0x17da5e['shift']());}};_0x3a5217(++_0x4ff39c);}(_0x5cfd,0xbe));var _0xd5cf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5cfd[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xd5cf('0x0'));var rimraf=require(_0xd5cf('0x1'));var zipdir=require(_0xd5cf('0x2'));var jsonpatch=require(_0xd5cf('0x3'));var rp=require(_0xd5cf('0x4'));var moment=require('moment');var BPromise=require(_0xd5cf('0x5'));var Mustache=require(_0xd5cf('0x6'));var util=require(_0xd5cf('0x7'));var path=require(_0xd5cf('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd5cf('0x9'));var _=require(_0xd5cf('0xa'));var squel=require(_0xd5cf('0xb'));var crypto=require(_0xd5cf('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xd5cf('0xd'));var toCsv=require('to-csv');var querystring=require(_0xd5cf('0xe'));var Papa=require(_0xd5cf('0xf'));var Redis=require(_0xd5cf('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xd5cf('0x11'));var as=require(_0xd5cf('0x12'));var hardwareService=require(_0xd5cf('0x13'));var logger=require(_0xd5cf('0x14'))('api');var utils=require(_0xd5cf('0x15'));var config=require(_0xd5cf('0x16'));var licenseUtil=require(_0xd5cf('0x17'));var db=require(_0xd5cf('0x18'))['db'];function respondWithStatusCode(_0x4adc23,_0x2fe26d){_0x2fe26d=_0x2fe26d||0xcc;return function(_0x1bbc9a){if(_0x1bbc9a){return _0x4adc23['sendStatus'](_0x2fe26d);}return _0x4adc23[_0xd5cf('0x19')](_0x2fe26d)[_0xd5cf('0x1a')]();};}function respondWithResult(_0x3b67cc,_0x466281){_0x466281=_0x466281||0xc8;return function(_0xc81d89){if(_0xc81d89){return _0x3b67cc[_0xd5cf('0x19')](_0x466281)[_0xd5cf('0x1b')](_0xc81d89);}};}function respondWithFilteredResult(_0x27c525,_0x1b8e17){return function(_0x39192e){if(_0x39192e){var _0x1a7e37=typeof _0x1b8e17[_0xd5cf('0x1c')]==='undefined'&&typeof _0x1b8e17[_0xd5cf('0x1d')]===_0xd5cf('0x1e');var _0x5dc2c0=_0x39192e[_0xd5cf('0x1f')];var _0x26a730=_0x1a7e37?0x0:_0x1b8e17[_0xd5cf('0x1c')];var _0x4f932f=_0x1a7e37?_0x39192e[_0xd5cf('0x1f')]:_0x1b8e17[_0xd5cf('0x1c')]+_0x1b8e17[_0xd5cf('0x1d')];var _0x1006d7;if(_0x4f932f>=_0x5dc2c0){_0x4f932f=_0x5dc2c0;_0x1006d7=0xc8;}else{_0x1006d7=0xce;}_0x27c525[_0xd5cf('0x19')](_0x1006d7);return _0x27c525[_0xd5cf('0x20')](_0xd5cf('0x21'),_0x26a730+'-'+_0x4f932f+'/'+_0x5dc2c0)[_0xd5cf('0x1b')](_0x39192e);}return null;};}function patchUpdates(_0xb94664){return function(_0x3bb572){try{jsonpatch[_0xd5cf('0x22')](_0x3bb572,_0xb94664,!![]);}catch(_0x2b968a){return BPromise[_0xd5cf('0x23')](_0x2b968a);}return _0x3bb572[_0xd5cf('0x24')]();};}function saveUpdates(_0xe3a4b3,_0x5c10b4){return function(_0x2791d8){if(_0x2791d8){return _0x2791d8[_0xd5cf('0x25')](_0xe3a4b3)[_0xd5cf('0x26')](function(_0x450370){return _0x450370;});}return null;};}function removeEntity(_0x8a1ab4,_0x43fa96){return function(_0x4ebff3){if(_0x4ebff3){return _0x4ebff3[_0xd5cf('0x27')]()[_0xd5cf('0x26')](function(){_0x8a1ab4[_0xd5cf('0x19')](0xcc)[_0xd5cf('0x1a')]();});}};}function handleEntityNotFound(_0x467b76,_0x7c488c){return function(_0x27575e){if(!_0x27575e){_0x467b76[_0xd5cf('0x28')](0x194);}return _0x27575e;};}function handleError(_0x4cc0ed,_0x33d5f2){_0x33d5f2=_0x33d5f2||0x1f4;return function(_0x3ba5b8){logger['error'](_0x3ba5b8['stack']);if(_0x3ba5b8['name']){delete _0x3ba5b8[_0xd5cf('0x29')];}_0x4cc0ed['status'](_0x33d5f2)[_0xd5cf('0x2a')](_0x3ba5b8);};}exports[_0xd5cf('0x2b')]=function(_0x32a27e,_0x22c6e1){var _0x58a3f1={},_0x20cc0e={},_0x1d2aca={'count':0x0,'rows':[]};var _0x54edcf=_[_0xd5cf('0x2c')](db[_0xd5cf('0x2d')][_0xd5cf('0x2e')],function(_0x4c1b82){return{'name':_0x4c1b82[_0xd5cf('0x2f')],'type':_0x4c1b82['type']['key']};});_0x20cc0e[_0xd5cf('0x30')]=_[_0xd5cf('0x2c')](_0x54edcf,_0xd5cf('0x29'));_0x20cc0e[_0xd5cf('0x31')]=_[_0xd5cf('0x32')](_0x32a27e[_0xd5cf('0x31')]);_0x20cc0e[_0xd5cf('0x33')]=_['intersection'](_0x20cc0e[_0xd5cf('0x30')],_0x20cc0e['query']);_0x58a3f1[_0xd5cf('0x34')]=_[_0xd5cf('0x35')](_0x20cc0e[_0xd5cf('0x30')],qs['fields'](_0x32a27e[_0xd5cf('0x31')][_0xd5cf('0x36')]));_0x58a3f1[_0xd5cf('0x34')]=_0x58a3f1[_0xd5cf('0x34')][_0xd5cf('0x37')]?_0x58a3f1[_0xd5cf('0x34')]:_0x20cc0e['model'];if(!_0x32a27e[_0xd5cf('0x31')][_0xd5cf('0x38')](_0xd5cf('0x39'))){_0x58a3f1[_0xd5cf('0x1d')]=qs[_0xd5cf('0x1d')](_0x32a27e[_0xd5cf('0x31')][_0xd5cf('0x1d')]);_0x58a3f1[_0xd5cf('0x1c')]=qs[_0xd5cf('0x1c')](_0x32a27e[_0xd5cf('0x31')]['offset']);}_0x58a3f1[_0xd5cf('0x3a')]=qs[_0xd5cf('0x3b')](_0x32a27e[_0xd5cf('0x31')][_0xd5cf('0x3b')]);_0x58a3f1[_0xd5cf('0x3c')]=qs['filters'](_[_0xd5cf('0x3d')](_0x32a27e[_0xd5cf('0x31')],_0x20cc0e[_0xd5cf('0x33')]),_0x54edcf);if(_0x32a27e[_0xd5cf('0x31')][_0xd5cf('0x3e')]){_0x58a3f1[_0xd5cf('0x3c')]=_[_0xd5cf('0x3f')](_0x58a3f1[_0xd5cf('0x3c')],{'$or':_['map'](_0x54edcf,function(_0x3a1422){if(_0x3a1422[_0xd5cf('0x40')]!==_0xd5cf('0x41')){var _0x314d86={};_0x314d86[_0x3a1422['name']]={'$like':'%'+_0x32a27e['query'][_0xd5cf('0x3e')]+'%'};return _0x314d86;}})});}_0x58a3f1=_['merge']({},_0x58a3f1,_0x32a27e[_0xd5cf('0x42')]);var _0x1fd527={'where':_0x58a3f1[_0xd5cf('0x3c')]};return db['SugarcrmField'][_0xd5cf('0x1f')](_0x1fd527)[_0xd5cf('0x26')](function(_0x176cae){_0x1d2aca['count']=_0x176cae;if(_0x32a27e[_0xd5cf('0x31')][_0xd5cf('0x43')]){_0x58a3f1[_0xd5cf('0x44')]=[{'all':!![]}];}return db[_0xd5cf('0x2d')][_0xd5cf('0x45')](_0x58a3f1);})[_0xd5cf('0x26')](function(_0x61ae4d){_0x1d2aca[_0xd5cf('0x46')]=_0x61ae4d;return _0x1d2aca;})[_0xd5cf('0x26')](respondWithFilteredResult(_0x22c6e1,_0x58a3f1))[_0xd5cf('0x47')](handleError(_0x22c6e1,null));};exports[_0xd5cf('0x48')]=function(_0x5ec73b,_0x3fbcde){var _0x202456={'raw':!![],'where':{'id':_0x5ec73b[_0xd5cf('0x49')]['id']}},_0x52e5b1={};_0x52e5b1[_0xd5cf('0x30')]=_[_0xd5cf('0x32')](db[_0xd5cf('0x2d')]['rawAttributes']);_0x52e5b1[_0xd5cf('0x31')]=_[_0xd5cf('0x32')](_0x5ec73b[_0xd5cf('0x31')]);_0x52e5b1['filters']=_[_0xd5cf('0x35')](_0x52e5b1['model'],_0x52e5b1[_0xd5cf('0x31')]);_0x202456[_0xd5cf('0x34')]=_[_0xd5cf('0x35')](_0x52e5b1[_0xd5cf('0x30')],qs[_0xd5cf('0x36')](_0x5ec73b['query'][_0xd5cf('0x36')]));_0x202456['attributes']=_0x202456['attributes']['length']?_0x202456[_0xd5cf('0x34')]:_0x52e5b1[_0xd5cf('0x30')];if(_0x5ec73b['query'][_0xd5cf('0x43')]){_0x202456['include']=[{'all':!![]}];}_0x202456=_[_0xd5cf('0x3f')]({},_0x202456,_0x5ec73b[_0xd5cf('0x42')]);return db['SugarcrmField']['find'](_0x202456)[_0xd5cf('0x26')](handleEntityNotFound(_0x3fbcde,null))[_0xd5cf('0x26')](respondWithResult(_0x3fbcde,null))[_0xd5cf('0x47')](handleError(_0x3fbcde,null));};exports['create']=function(_0x196348,_0x33515d){return db['SugarcrmField']['create'](_0x196348['body'],{})[_0xd5cf('0x26')](respondWithResult(_0x33515d,0xc9))[_0xd5cf('0x47')](handleError(_0x33515d,null));};exports['update']=function(_0xef9b25,_0x4b6f2f){if(_0xef9b25[_0xd5cf('0x4a')]['id']){delete _0xef9b25['body']['id'];}return db[_0xd5cf('0x2d')]['find']({'where':{'id':_0xef9b25['params']['id']}})['then'](handleEntityNotFound(_0x4b6f2f,null))[_0xd5cf('0x26')](saveUpdates(_0xef9b25[_0xd5cf('0x4a')],null))[_0xd5cf('0x26')](respondWithResult(_0x4b6f2f,null))['catch'](handleError(_0x4b6f2f,null));};exports[_0xd5cf('0x27')]=function(_0x2468c4,_0x2750c5){return db[_0xd5cf('0x2d')][_0xd5cf('0x4b')]({'where':{'id':_0x2468c4[_0xd5cf('0x49')]['id']}})[_0xd5cf('0x26')](handleEntityNotFound(_0x2750c5,null))[_0xd5cf('0x26')](removeEntity(_0x2750c5,null))[_0xd5cf('0x47')](handleError(_0x2750c5,null));};
\ No newline at end of file
index 42097d5..939744e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3024=['api','bluebird','request-promise','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','define','SugarcrmField','int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','lodash','util','../../config/logger'];(function(_0x196f02,_0x5265c0){var _0x153425=function(_0x8851a8){while(--_0x8851a8){_0x196f02['push'](_0x196f02['shift']());}};_0x153425(++_0x5265c0);}(_0x3024,0x17d));var _0x4302=function(_0x598598,_0x55c524){_0x598598=_0x598598-0x0;var _0x4d8a3b=_0x3024[_0x598598];return _0x4d8a3b;};'use strict';var _=require(_0x4302('0x0'));var util=require(_0x4302('0x1'));var logger=require(_0x4302('0x2'))(_0x4302('0x3'));var moment=require('moment');var BPromise=require(_0x4302('0x4'));var rp=require(_0x4302('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4302('0x6'));var config=require(_0x4302('0x7'));var attributes=require(_0x4302('0x8'));module[_0x4302('0x9')]=function(_0x354f64,_0x28a737){return _0x354f64[_0x4302('0xa')](_0x4302('0xb'),attributes,{'tableName':_0x4302('0xc'),'paranoid':![],'indexes':[{'name':_0x4302('0xd'),'fields':[_0x4302('0xe'),_0x4302('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xeeb0=['api','moment','bluebird','request-promise','../../config/environment','./intSugarcrmField.attributes','define','int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','../../config/logger'];(function(_0x326db2,_0x3316d5){var _0x1bd74f=function(_0x5ac2fa){while(--_0x5ac2fa){_0x326db2['push'](_0x326db2['shift']());}};_0x1bd74f(++_0x3316d5);}(_0xeeb0,0x1a3));var _0x0eeb=function(_0xdbc93e,_0x4fcd8e){_0xdbc93e=_0xdbc93e-0x0;var _0x29df2c=_0xeeb0[_0xdbc93e];return _0x29df2c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0eeb('0x0'))(_0x0eeb('0x1'));var moment=require(_0x0eeb('0x2'));var BPromise=require(_0x0eeb('0x3'));var rp=require(_0x0eeb('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x0eeb('0x5'));var attributes=require(_0x0eeb('0x6'));module['exports']=function(_0x3b7927,_0x563dfb){return _0x3b7927[_0x0eeb('0x7')]('SugarcrmField',attributes,{'tableName':_0x0eeb('0x8'),'paranoid':![],'indexes':[{'name':_0x0eeb('0x9'),'fields':[_0x0eeb('0xa'),_0x0eeb('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index d9fe715..84b40ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0a6=['client','request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x2b4411,_0x2625ed){var _0x8e41ef=function(_0x2aa8c1){while(--_0x2aa8c1){_0x2b4411['push'](_0x2b4411['shift']());}};_0x8e41ef(++_0x2625ed);}(_0xd0a6,0x1c4));var _0x6d0a=function(_0x346df0,_0x475c3e){_0x346df0=_0x346df0-0x0;var _0x2b0187=_0xd0a6[_0x346df0];return _0x2b0187;};'use strict';var _=require(_0x6d0a('0x0'));var util=require(_0x6d0a('0x1'));var moment=require(_0x6d0a('0x2'));var BPromise=require(_0x6d0a('0x3'));var rs=require(_0x6d0a('0x4'));var fs=require('fs');var Redis=require(_0x6d0a('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x6d0a('0x6'));var logger=require(_0x6d0a('0x7'))(_0x6d0a('0x8'));var config=require('../../config/environment');var jayson=require(_0x6d0a('0x9'));var client=jayson[_0x6d0a('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3daeab,_0x557d83,_0x7a2e7a){return new BPromise(function(_0x566411,_0x16d0c3){return client[_0x6d0a('0xb')](_0x3daeab,_0x7a2e7a)[_0x6d0a('0xc')](function(_0x5b619f){logger[_0x6d0a('0xd')](_0x6d0a('0xe'),_0x557d83,_0x6d0a('0xf'));logger['debug'](_0x6d0a('0x10'),_0x557d83,_0x6d0a('0xf'),JSON[_0x6d0a('0x11')](_0x5b619f));if(_0x5b619f['error']){if(_0x5b619f[_0x6d0a('0x12')][_0x6d0a('0x13')]===0x1f4){logger[_0x6d0a('0x12')](_0x6d0a('0xe'),_0x557d83,_0x5b619f[_0x6d0a('0x12')][_0x6d0a('0x14')]);return _0x16d0c3(_0x5b619f[_0x6d0a('0x12')][_0x6d0a('0x14')]);}logger[_0x6d0a('0x12')](_0x6d0a('0xe'),_0x557d83,_0x5b619f['error'][_0x6d0a('0x14')]);return _0x566411(_0x5b619f['error'][_0x6d0a('0x14')]);}else{logger['info'](_0x6d0a('0xe'),_0x557d83,_0x6d0a('0xf'));_0x566411(_0x5b619f['result'][_0x6d0a('0x14')]);}})['catch'](function(_0x131831){logger['error'](_0x6d0a('0xe'),_0x557d83,_0x131831);_0x16d0c3(_0x131831);});});}
\ No newline at end of file
+var _0xd308=['result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','request\x20sent','debug','stringify','error','code','message','info','SugarcrmField,\x20%s,\x20%s'];(function(_0x2118c6,_0x1450e6){var _0x35e88e=function(_0x113099){while(--_0x113099){_0x2118c6['push'](_0x2118c6['shift']());}};_0x35e88e(++_0x1450e6);}(_0xd308,0x75));var _0x8d30=function(_0x31561b,_0x3e6047){_0x31561b=_0x31561b-0x0;var _0x226f3c=_0xd308[_0x31561b];return _0x226f3c;};'use strict';var _=require(_0x8d30('0x0'));var util=require(_0x8d30('0x1'));var moment=require(_0x8d30('0x2'));var BPromise=require('bluebird');var rs=require(_0x8d30('0x3'));var fs=require('fs');var Redis=require(_0x8d30('0x4'));var db=require(_0x8d30('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8d30('0x6'))(_0x8d30('0x7'));var config=require('../../config/environment');var jayson=require(_0x8d30('0x8'));var client=jayson[_0x8d30('0x9')][_0x8d30('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x558178,_0xe4049f,_0x1a462f){return new BPromise(function(_0x2bb246,_0x4979a4){return client[_0x8d30('0xb')](_0x558178,_0x1a462f)[_0x8d30('0xc')](function(_0x2369e8){logger['info']('SugarcrmField,\x20%s,\x20%s',_0xe4049f,_0x8d30('0xd'));logger[_0x8d30('0xe')]('SugarcrmField,\x20%s,\x20%s,\x20%s',_0xe4049f,_0x8d30('0xd'),JSON[_0x8d30('0xf')](_0x2369e8));if(_0x2369e8[_0x8d30('0x10')]){if(_0x2369e8[_0x8d30('0x10')][_0x8d30('0x11')]===0x1f4){logger[_0x8d30('0x10')]('SugarcrmField,\x20%s,\x20%s',_0xe4049f,_0x2369e8['error'][_0x8d30('0x12')]);return _0x4979a4(_0x2369e8[_0x8d30('0x10')][_0x8d30('0x12')]);}logger['error']('SugarcrmField,\x20%s,\x20%s',_0xe4049f,_0x2369e8[_0x8d30('0x10')][_0x8d30('0x12')]);return _0x2bb246(_0x2369e8[_0x8d30('0x10')]['message']);}else{logger[_0x8d30('0x13')](_0x8d30('0x14'),_0xe4049f,_0x8d30('0xd'));_0x2bb246(_0x2369e8[_0x8d30('0x15')]['message']);}})[_0x8d30('0x16')](function(_0x2201d7){logger['error']('SugarcrmField,\x20%s,\x20%s',_0xe4049f,_0x2201d7);_0x4979a4(_0x2201d7);});});}
\ No newline at end of file
index 26b1cf4..14ac7ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eca=['getFields','post','addConfiguration','put','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','/:id/fields'];(function(_0x43ee6c,_0x2d5f79){var _0x3c4386=function(_0x3d371f){while(--_0x3d371f){_0x43ee6c['push'](_0x43ee6c['shift']());}};_0x3c4386(++_0x2d5f79);}(_0x3eca,0x17e));var _0xa3ec=function(_0x7ad123,_0xeeeef3){_0x7ad123=_0x7ad123-0x0;var _0x37d073=_0x3eca[_0x7ad123];return _0x37d073;};'use strict';var multer=require(_0xa3ec('0x0'));var util=require(_0xa3ec('0x1'));var path=require('path');var timeout=require(_0xa3ec('0x2'));var express=require(_0xa3ec('0x3'));var router=express[_0xa3ec('0x4')]();var fs_extra=require(_0xa3ec('0x5'));var auth=require(_0xa3ec('0x6'));var interaction=require(_0xa3ec('0x7'));var config=require(_0xa3ec('0x8'));var controller=require(_0xa3ec('0x9'));router[_0xa3ec('0xa')]('/',auth[_0xa3ec('0xb')](),controller[_0xa3ec('0xc')]);router[_0xa3ec('0xa')](_0xa3ec('0xd'),auth[_0xa3ec('0xb')](),controller[_0xa3ec('0xe')]);router[_0xa3ec('0xa')](_0xa3ec('0xf'),auth[_0xa3ec('0xb')](),controller[_0xa3ec('0x10')]);router[_0xa3ec('0xa')](_0xa3ec('0x11'),auth[_0xa3ec('0xb')](),controller[_0xa3ec('0x12')]);router['post']('/',auth[_0xa3ec('0xb')](),controller['create']);router[_0xa3ec('0x13')](_0xa3ec('0xf'),auth[_0xa3ec('0xb')](),controller[_0xa3ec('0x14')]);router[_0xa3ec('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xa3ec('0x16')]);router[_0xa3ec('0x17')](_0xa3ec('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xa3ec('0x18')]=router;
\ No newline at end of file
+var _0xc737=['show','getConfigurations','getFields','post','/:id/configurations','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./intVtigerAccount.controller','index','get','isAuthenticated'];(function(_0x217540,_0xf3e634){var _0x91304f=function(_0x1e288c){while(--_0x1e288c){_0x217540['push'](_0x217540['shift']());}};_0x91304f(++_0xf3e634);}(_0xc737,0x154));var _0x7c73=function(_0x10b506,_0x5c871e){_0x10b506=_0x10b506-0x0;var _0x2f8306=_0xc737[_0x10b506];return _0x2f8306;};'use strict';var multer=require(_0x7c73('0x0'));var util=require(_0x7c73('0x1'));var path=require(_0x7c73('0x2'));var timeout=require(_0x7c73('0x3'));var express=require('express');var router=express[_0x7c73('0x4')]();var fs_extra=require(_0x7c73('0x5'));var auth=require(_0x7c73('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x7c73('0x7'));var controller=require(_0x7c73('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x7c73('0x9')]);router[_0x7c73('0xa')]('/:id',auth[_0x7c73('0xb')](),controller[_0x7c73('0xc')]);router['get']('/:id/configurations',auth[_0x7c73('0xb')](),controller[_0x7c73('0xd')]);router[_0x7c73('0xa')]('/:id/fields',auth[_0x7c73('0xb')](),controller[_0x7c73('0xe')]);router['post']('/',auth[_0x7c73('0xb')](),controller['create']);router[_0x7c73('0xf')](_0x7c73('0x10'),auth[_0x7c73('0xb')](),controller['addConfiguration']);router[_0x7c73('0x11')](_0x7c73('0x12'),auth[_0x7c73('0xb')](),controller[_0x7c73('0x13')]);router['delete'](_0x7c73('0x12'),auth['isAuthenticated'](),controller[_0x7c73('0x14')]);module[_0x7c73('0x15')]=router;
\ No newline at end of file
index 53ace1d..b453286 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6210=['STRING','HelpDesk','exports'];(function(_0x58c390,_0x1bb83c){var _0x12bad8=function(_0xe915f9){while(--_0xe915f9){_0x58c390['push'](_0x58c390['shift']());}};_0x12bad8(++_0x1bb83c);}(_0x6210,0xd1));var _0x0621=function(_0x5cb1af,_0x4bdc8c){_0x5cb1af=_0x5cb1af-0x0;var _0x8d7940=_0x6210[_0x5cb1af];return _0x8d7940;};'use strict';var Sequelize=require('sequelize');module[_0x0621('0x0')]={'name':{'type':Sequelize[_0x0621('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x0621('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x0621('0x2')},'remoteUri':{'type':Sequelize[_0x0621('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x0621('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x0621('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x862a=['exports','STRING','HelpDesk'];(function(_0x263f9d,_0x3d854e){var _0x4c4efa=function(_0x48d506){while(--_0x48d506){_0x263f9d['push'](_0x263f9d['shift']());}};_0x4c4efa(++_0x3d854e);}(_0x862a,0x141));var _0xa862=function(_0x2b1551,_0x1776fe){_0x2b1551=_0x2b1551-0x0;var _0x2fc2a1=_0x862a[_0x2b1551];return _0x2fc2a1;};'use strict';var Sequelize=require('sequelize');module[_0xa862('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xa862('0x1')]},'username':{'type':Sequelize[_0xa862('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize[_0xa862('0x1')],'allowNull':![],'defaultValue':_0xa862('0x2')},'remoteUri':{'type':Sequelize[_0xa862('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0xa862('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0xa862('0x1')],'allowNull':![]}};
\ No newline at end of file
index ce64412..3e0a041 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaffa=['keys','rawAttributes','include','create','body','update','getConfigurations','findOne','VtigerConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','VtigerField','getFields','username','description','moduleName','remoteUri','serverUrl','accessKey','slice','substring','lastIndexOf','format','%s/webservice.php','GET','getchallenge','success','POST','login','result','token','autogenerated','reference','owner','remove','includes','editable','false','label','startsWith','cf_','picklist','picklistValues','log','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','then','destroy','error','stack','name','send','index','VtigerAccount','fieldName','type','model','map','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params'];(function(_0x542963,_0x2495fe){var _0x5c0f6b=function(_0x513714){while(--_0x513714){_0x542963['push'](_0x542963['shift']());}};_0x5c0f6b(++_0x2495fe);}(_0xaffa,0x1a0));var _0xaaff=function(_0x26f0c8,_0x1fd298){_0x26f0c8=_0x26f0c8-0x0;var _0x401dce=_0xaffa[_0x26f0c8];return _0x401dce;};'use strict';var emlformat=require(_0xaaff('0x0'));var rimraf=require(_0xaaff('0x1'));var zipdir=require(_0xaaff('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xaaff('0x3'));var moment=require(_0xaaff('0x4'));var BPromise=require(_0xaaff('0x5'));var Mustache=require(_0xaaff('0x6'));var util=require(_0xaaff('0x7'));var path=require(_0xaaff('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xaaff('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaaff('0xa'));var squel=require(_0xaaff('0xb'));var crypto=require(_0xaaff('0xc'));var jsforce=require(_0xaaff('0xd'));var deskjs=require(_0xaaff('0xe'));var toCsv=require(_0xaaff('0xf'));var querystring=require(_0xaaff('0x10'));var Papa=require(_0xaaff('0x11'));var Redis=require(_0xaaff('0x12'));var authService=require(_0xaaff('0x13'));var qs=require(_0xaaff('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xaaff('0x15'));var db=require(_0xaaff('0x16'))['db'];var integrations=require(_0xaaff('0x17'));function respondWithStatusCode(_0x4f7c89,_0x2d8604){_0x2d8604=_0x2d8604||0xcc;return function(_0x56a3f6){if(_0x56a3f6){return _0x4f7c89[_0xaaff('0x18')](_0x2d8604);}return _0x4f7c89[_0xaaff('0x19')](_0x2d8604)[_0xaaff('0x1a')]();};}function respondWithResult(_0x375bd1,_0x5040c5){_0x5040c5=_0x5040c5||0xc8;return function(_0x4d0ab4){if(_0x4d0ab4){return _0x375bd1[_0xaaff('0x19')](_0x5040c5)[_0xaaff('0x1b')](_0x4d0ab4);}};}function respondWithFilteredResult(_0x2eeebc,_0x4a486b){return function(_0x1383e5){if(_0x1383e5){var _0xb9e9c1=typeof _0x4a486b[_0xaaff('0x1c')]===_0xaaff('0x1d')&&typeof _0x4a486b[_0xaaff('0x1e')]===_0xaaff('0x1d');var _0x594fdd=_0x1383e5[_0xaaff('0x1f')];var _0x3a5fa4=_0xb9e9c1?0x0:_0x4a486b[_0xaaff('0x1c')];var _0xd5d936=_0xb9e9c1?_0x1383e5[_0xaaff('0x1f')]:_0x4a486b[_0xaaff('0x1c')]+_0x4a486b[_0xaaff('0x1e')];var _0x3e1a3c;if(_0xd5d936>=_0x594fdd){_0xd5d936=_0x594fdd;_0x3e1a3c=0xc8;}else{_0x3e1a3c=0xce;}_0x2eeebc[_0xaaff('0x19')](_0x3e1a3c);return _0x2eeebc['set']('Content-Range',_0x3a5fa4+'-'+_0xd5d936+'/'+_0x594fdd)[_0xaaff('0x1b')](_0x1383e5);}return null;};}function patchUpdates(_0x4a0615){return function(_0x446bb3){try{jsonpatch[_0xaaff('0x20')](_0x446bb3,_0x4a0615,!![]);}catch(_0x5db890){return BPromise[_0xaaff('0x21')](_0x5db890);}return _0x446bb3[_0xaaff('0x22')]();};}function saveUpdates(_0xf5d522,_0x3bc92f){return function(_0x2d38f0){if(_0x2d38f0){return _0x2d38f0['update'](_0xf5d522)[_0xaaff('0x23')](function(_0x424e77){return _0x424e77;});}return null;};}function removeEntity(_0x62acbf,_0x404619){return function(_0x796ebf){if(_0x796ebf){return _0x796ebf[_0xaaff('0x24')]()['then'](function(){_0x62acbf[_0xaaff('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x86e812,_0x448145){return function(_0x4eeeeb){if(!_0x4eeeeb){_0x86e812[_0xaaff('0x18')](0x194);}return _0x4eeeeb;};}function handleError(_0x2d74f6,_0x2e928c){_0x2e928c=_0x2e928c||0x1f4;return function(_0x16c193){logger[_0xaaff('0x25')](_0x16c193[_0xaaff('0x26')]);if(_0x16c193['name']){delete _0x16c193[_0xaaff('0x27')];}_0x2d74f6[_0xaaff('0x19')](_0x2e928c)[_0xaaff('0x28')](_0x16c193);};}exports[_0xaaff('0x29')]=function(_0x3ab5a3,_0x4c8c01){var _0x21117d={},_0x56aba8={},_0x39747a={'count':0x0,'rows':[]};var _0x31ca95=_['map'](db[_0xaaff('0x2a')]['rawAttributes'],function(_0x5d99b1){return{'name':_0x5d99b1[_0xaaff('0x2b')],'type':_0x5d99b1[_0xaaff('0x2c')]['key']};});_0x56aba8[_0xaaff('0x2d')]=_[_0xaaff('0x2e')](_0x31ca95,_0xaaff('0x27'));_0x56aba8['query']=_['keys'](_0x3ab5a3[_0xaaff('0x2f')]);_0x56aba8['filters']=_[_0xaaff('0x30')](_0x56aba8[_0xaaff('0x2d')],_0x56aba8[_0xaaff('0x2f')]);_0x21117d[_0xaaff('0x31')]=_[_0xaaff('0x30')](_0x56aba8[_0xaaff('0x2d')],qs[_0xaaff('0x32')](_0x3ab5a3[_0xaaff('0x2f')]['fields']));_0x21117d[_0xaaff('0x31')]=_0x21117d['attributes'][_0xaaff('0x33')]?_0x21117d[_0xaaff('0x31')]:_0x56aba8[_0xaaff('0x2d')];if(!_0x3ab5a3['query'][_0xaaff('0x34')]('nolimit')){_0x21117d['limit']=qs[_0xaaff('0x1e')](_0x3ab5a3['query']['limit']);_0x21117d[_0xaaff('0x1c')]=qs['offset'](_0x3ab5a3[_0xaaff('0x2f')]['offset']);}_0x21117d[_0xaaff('0x35')]=qs[_0xaaff('0x36')](_0x3ab5a3['query'][_0xaaff('0x36')]);_0x21117d[_0xaaff('0x37')]=qs[_0xaaff('0x38')](_[_0xaaff('0x39')](_0x3ab5a3[_0xaaff('0x2f')],_0x56aba8[_0xaaff('0x38')]),_0x31ca95);if(_0x3ab5a3['query'][_0xaaff('0x3a')]){_0x21117d[_0xaaff('0x37')]=_[_0xaaff('0x3b')](_0x21117d['where'],{'$or':_['map'](_0x31ca95,function(_0x46200f){if(_0x46200f['type']!==_0xaaff('0x3c')){var _0x40ee46={};_0x40ee46[_0x46200f[_0xaaff('0x27')]]={'$like':'%'+_0x3ab5a3['query'][_0xaaff('0x3a')]+'%'};return _0x40ee46;}})});}_0x21117d=_[_0xaaff('0x3b')]({},_0x21117d,_0x3ab5a3[_0xaaff('0x3d')]);var _0x3413fa={'where':_0x21117d[_0xaaff('0x37')]};return db[_0xaaff('0x2a')]['count'](_0x3413fa)['then'](function(_0x4c4531){_0x39747a[_0xaaff('0x1f')]=_0x4c4531;if(_0x3ab5a3[_0xaaff('0x2f')][_0xaaff('0x3e')]){_0x21117d['include']=[{'all':!![]}];}return db[_0xaaff('0x2a')][_0xaaff('0x3f')](_0x21117d);})[_0xaaff('0x23')](function(_0x22537a){_0x39747a[_0xaaff('0x40')]=_0x22537a;return _0x39747a;})[_0xaaff('0x23')](respondWithFilteredResult(_0x4c8c01,_0x21117d))[_0xaaff('0x41')](handleError(_0x4c8c01,null));};exports[_0xaaff('0x42')]=function(_0x3f78c6,_0x1538c9){var _0x348a25={'raw':![],'where':{'id':_0x3f78c6[_0xaaff('0x43')]['id']}},_0x33ac8f={};_0x33ac8f[_0xaaff('0x2d')]=_[_0xaaff('0x44')](db[_0xaaff('0x2a')][_0xaaff('0x45')]);_0x33ac8f[_0xaaff('0x2f')]=_[_0xaaff('0x44')](_0x3f78c6['query']);_0x33ac8f['filters']=_[_0xaaff('0x30')](_0x33ac8f[_0xaaff('0x2d')],_0x33ac8f['query']);_0x348a25[_0xaaff('0x31')]=_[_0xaaff('0x30')](_0x33ac8f[_0xaaff('0x2d')],qs[_0xaaff('0x32')](_0x3f78c6[_0xaaff('0x2f')][_0xaaff('0x32')]));_0x348a25['attributes']=_0x348a25[_0xaaff('0x31')]['length']?_0x348a25[_0xaaff('0x31')]:_0x33ac8f[_0xaaff('0x2d')];if(_0x3f78c6[_0xaaff('0x2f')][_0xaaff('0x3e')]){_0x348a25[_0xaaff('0x46')]=[{'all':!![]}];}_0x348a25=_[_0xaaff('0x3b')]({},_0x348a25,_0x3f78c6['options']);return db[_0xaaff('0x2a')]['find'](_0x348a25)[_0xaaff('0x23')](handleEntityNotFound(_0x1538c9,null))[_0xaaff('0x23')](respondWithResult(_0x1538c9,null))[_0xaaff('0x41')](handleError(_0x1538c9,null));};exports['create']=function(_0x578cc0,_0x3621f3){return db['VtigerAccount'][_0xaaff('0x47')](_0x578cc0[_0xaaff('0x48')],{})[_0xaaff('0x23')](respondWithResult(_0x3621f3,0xc9))[_0xaaff('0x41')](handleError(_0x3621f3,null));};exports[_0xaaff('0x49')]=function(_0x3f4cb4,_0x3d3e20){if(_0x3f4cb4['body']['id']){delete _0x3f4cb4[_0xaaff('0x48')]['id'];}return db[_0xaaff('0x2a')]['find']({'where':{'id':_0x3f4cb4[_0xaaff('0x43')]['id']}})[_0xaaff('0x23')](handleEntityNotFound(_0x3d3e20,null))[_0xaaff('0x23')](saveUpdates(_0x3f4cb4[_0xaaff('0x48')],null))[_0xaaff('0x23')](respondWithResult(_0x3d3e20,null))[_0xaaff('0x41')](handleError(_0x3d3e20,null));};exports[_0xaaff('0x24')]=function(_0xdc4cc9,_0x4a17f4){return db[_0xaaff('0x2a')]['find']({'where':{'id':_0xdc4cc9['params']['id']}})[_0xaaff('0x23')](handleEntityNotFound(_0x4a17f4,null))[_0xaaff('0x23')](removeEntity(_0x4a17f4,null))[_0xaaff('0x41')](handleError(_0x4a17f4,null));};exports[_0xaaff('0x4a')]=function(_0xae79ee,_0x42401c,_0x52e9c2){var _0x197db6={};var _0xe108d4={};var _0x19e163;var _0x120f74;return db[_0xaaff('0x2a')][_0xaaff('0x4b')]({'where':{'id':_0xae79ee[_0xaaff('0x43')]['id']}})['then'](handleEntityNotFound(_0x42401c,null))[_0xaaff('0x23')](function(_0xa83282){if(_0xa83282){_0x19e163=_0xa83282;_0xe108d4['model']=_['keys'](db[_0xaaff('0x4c')][_0xaaff('0x45')]);_0xe108d4[_0xaaff('0x2f')]=_['keys'](_0xae79ee['query']);_0xe108d4[_0xaaff('0x38')]=_['intersection'](_0xe108d4[_0xaaff('0x2d')],_0xe108d4[_0xaaff('0x2f')]);_0x197db6[_0xaaff('0x31')]=_['intersection'](_0xe108d4[_0xaaff('0x2d')],qs['fields'](_0xae79ee[_0xaaff('0x2f')][_0xaaff('0x32')]));_0x197db6[_0xaaff('0x31')]=_0x197db6[_0xaaff('0x31')]['length']?_0x197db6[_0xaaff('0x31')]:_0xe108d4['model'];_0x197db6[_0xaaff('0x35')]=qs['sort'](_0xae79ee[_0xaaff('0x2f')]['sort']);_0x197db6[_0xaaff('0x37')]=qs[_0xaaff('0x38')](_[_0xaaff('0x39')](_0xae79ee[_0xaaff('0x2f')],_0xe108d4[_0xaaff('0x38')]));if(_0xae79ee[_0xaaff('0x2f')][_0xaaff('0x3a')]){_0x197db6[_0xaaff('0x37')]=_[_0xaaff('0x3b')](_0x197db6[_0xaaff('0x37')],{'$or':_[_0xaaff('0x2e')](_0x197db6[_0xaaff('0x31')],function(_0x4ceb49){var _0x54409f={};_0x54409f[_0x4ceb49]={'$like':'%'+_0xae79ee[_0xaaff('0x2f')]['filter']+'%'};return _0x54409f;})});}_0x197db6=_[_0xaaff('0x3b')]({},_0x197db6,_0xae79ee[_0xaaff('0x3d')]);return _0x19e163[_0xaaff('0x4a')](_0x197db6);}})['then'](function(_0x3aab5f){if(_0x3aab5f){_0x120f74=_0x3aab5f[_0xaaff('0x33')];if(!_0xae79ee[_0xaaff('0x2f')][_0xaaff('0x34')]('nolimit')){_0x197db6[_0xaaff('0x1e')]=qs['limit'](_0xae79ee[_0xaaff('0x2f')]['limit']);_0x197db6[_0xaaff('0x1c')]=qs[_0xaaff('0x1c')](_0xae79ee[_0xaaff('0x2f')][_0xaaff('0x1c')]);}return _0x19e163[_0xaaff('0x4a')](_0x197db6);}})[_0xaaff('0x23')](function(_0x4443d0){if(_0x4443d0){return _0x4443d0?{'count':_0x120f74,'rows':_0x4443d0}:null;}})['then'](respondWithResult(_0x42401c,null))[_0xaaff('0x41')](handleError(_0x42401c,null));};exports[_0xaaff('0x4d')]=function(_0x1fd807,_0x7a2275,_0x16322d){if(_0x1fd807[_0xaaff('0x48')]['id']){delete _0x1fd807[_0xaaff('0x48')]['id'];}return db[_0xaaff('0x2a')][_0xaaff('0x4b')]({'where':{'id':_0x1fd807[_0xaaff('0x43')]['id']}})['then'](handleEntityNotFound(_0x7a2275,null))[_0xaaff('0x23')](function(_0x47f860){if(_0x47f860){_0x1fd807[_0xaaff('0x48')][_0xaaff('0x4e')]=_0x47f860['id'];_0x1fd807[_0xaaff('0x48')][_0xaaff('0x4f')]=integrations[_0xaaff('0x50')](_0x1fd807['body'][_0xaaff('0x51')],_0x1fd807[_0xaaff('0x48')]['type']);_0x1fd807[_0xaaff('0x48')][_0xaaff('0x52')]=integrations[_0xaaff('0x53')](_0x1fd807['body']['channel'],_0x1fd807[_0xaaff('0x48')][_0xaaff('0x2c')]);return db['VtigerConfiguration']['create'](_0x1fd807[_0xaaff('0x48')],{'include':[{'model':db[_0xaaff('0x54')],'as':'Subjects'},{'model':db['VtigerField'],'as':'Descriptions'}]});}return null;})[_0xaaff('0x23')](respondWithResult(_0x7a2275,null))['catch'](handleError(_0x7a2275,null));};var md5=require('md5');exports[_0xaaff('0x55')]=function(_0x12ccb,_0x5ca9f2,_0x430b70){var _0x1a4bc1=null;var _0x5b9984=null;var _0x287304=null;var _0x193ff6=null;var _0x50f85b='';return db[_0xaaff('0x2a')][_0xaaff('0x4b')]({'where':{'id':_0x12ccb[_0xaaff('0x43')]['id']},'attributes':['id',_0xaaff('0x27'),_0xaaff('0x56'),_0xaaff('0x57'),_0xaaff('0x58'),_0xaaff('0x59'),_0xaaff('0x5a'),_0xaaff('0x5b')]})[_0xaaff('0x23')](handleEntityNotFound(_0x5ca9f2,null))[_0xaaff('0x23')](function(_0x1ffc2f){if(_0x1ffc2f){_0x1a4bc1=_0x1ffc2f['username'];_0x5b9984=_0x1ffc2f[_0xaaff('0x5b')];_0x287304=_0x1ffc2f['moduleName'];_0x50f85b=_0x1ffc2f[_0xaaff('0x59')];var _0x3cdbfd=_0x50f85b[_0xaaff('0x5c')](-0x1);if(_0x3cdbfd==='/'){_0x50f85b=_0x50f85b[_0xaaff('0x5d')](0x0,_0x50f85b[_0xaaff('0x5e')](_0x3cdbfd));}_0x193ff6=util[_0xaaff('0x5f')](_0xaaff('0x60'),_0x50f85b);var _0x18e262={'method':_0xaaff('0x61'),'uri':_0x193ff6,'qs':{'operation':_0xaaff('0x62'),'username':_0x1ffc2f[_0xaaff('0x56')]},'json':!![]};return rp(_0x18e262);}})[_0xaaff('0x23')](function(_0x56960f){if(_0x56960f[_0xaaff('0x63')]){var _0x58da2e={'method':_0xaaff('0x64'),'uri':_0x193ff6,'form':{'operation':_0xaaff('0x65'),'username':_0x1a4bc1,'accessKey':md5(_0x56960f[_0xaaff('0x66')][_0xaaff('0x67')]+_0x5b9984)},'json':!![]};return rp(_0x58da2e);}})[_0xaaff('0x23')](function(_0x2e2b1e){if(_0x2e2b1e[_0xaaff('0x63')]){var _0x5bbb84={'method':'GET','uri':_0x193ff6,'qs':{'operation':'describe','username':_0x1a4bc1,'sessionName':_0x2e2b1e['result']['sessionName'],'elementType':_0x287304},'json':!![]};return rp(_0x5bbb84);}})['then'](function(_0x1d7fde){if(_0x1d7fde[_0xaaff('0x63')]){var _0x10c718=[_0xaaff('0x68'),_0xaaff('0x69'),_0xaaff('0x6a')];_[_0xaaff('0x6b')](_0x1d7fde[_0xaaff('0x66')][_0xaaff('0x32')],function(_0x5c0053){return _0x10c718[_0xaaff('0x6c')](_0x5c0053[_0xaaff('0x2c')][_0xaaff('0x27')]);});_[_0xaaff('0x6b')](_0x1d7fde[_0xaaff('0x66')][_0xaaff('0x32')],function(_0xe69792){return _0xe69792[_0xaaff('0x6d')]===_0xaaff('0x6e');});return{'count':_0x1d7fde['result'][_0xaaff('0x32')][_0xaaff('0x33')],'rows':_[_0xaaff('0x2e')](_0x1d7fde['result']['fields'],function(_0xe70cbc){return{'id':_0xe70cbc[_0xaaff('0x27')],'name':_0xe70cbc[_0xaaff('0x6f')],'custom':_[_0xaaff('0x70')](_0xe70cbc[_0xaaff('0x27')],_0xaaff('0x71'))?!![]:![],'options':_0xe70cbc[_0xaaff('0x2c')][_0xaaff('0x27')]===_0xaaff('0x72')&&_0xe70cbc['type'][_0xaaff('0x73')][_0xaaff('0x33')]>0x0?_['map'](_0xe70cbc[_0xaaff('0x2c')][_0xaaff('0x73')],function(_0x2f5b64){return{'name':_0x2f5b64[_0xaaff('0x6f')],'value':_0x2f5b64['value']};}):[]};})};}})['then'](respondWithResult(_0x5ca9f2,null))[_0xaaff('0x41')](function(_0x5784fb){console[_0xaaff('0x74')]('vTiger\x20error:\x20'+_0x5784fb);var _0x336abc=_0x12ccb[_0xaaff('0x2f')]['test']?0x1f4:_0x5784fb[_0xaaff('0x75')]||0x1f4;logger[_0xaaff('0x25')](_0xaaff('0x76'),_0xaaff('0x55'),_0x336abc,JSON[_0xaaff('0x77')](_0x5784fb));delete _0x5784fb[_0xaaff('0x27')];if(_0x336abc===0x191){_0x336abc=0x190;}_0x5ca9f2[_0xaaff('0x19')](_0x336abc)[_0xaaff('0x28')](_0x12ccb[_0xaaff('0x2f')]['test']?{'message':_0xaaff('0x78'),'statusCode':_0x5784fb[_0xaaff('0x75')]}:_0x5784fb);});};
\ No newline at end of file
+var _0x8811=['undefined','limit','count','Content-Range','json','apply','save','update','then','error','name','index','rawAttributes','fieldName','type','key','model','map','keys','query','filters','attributes','intersection','fields','length','nolimit','order','sort','filter','merge','where','VIRTUAL','VtigerAccount','includeAll','include','findAll','rows','catch','show','params','find','create','body','destroy','getConfigurations','findOne','VtigerConfiguration','pick','AccountId','Subjects','getSubjects','channel','Descriptions','VtigerField','getFields','description','moduleName','serverUrl','accessKey','username','substring','format','%s/webservice.php','GET','getchallenge','login','token','result','sessionName','success','autogenerated','reference','owner','includes','remove','label','startsWith','picklist','picklistValues','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset'];(function(_0x49d6d1,_0x415cf6){var _0x5ac7f9=function(_0x35c16e){while(--_0x35c16e){_0x49d6d1['push'](_0x49d6d1['shift']());}};_0x5ac7f9(++_0x415cf6);}(_0x8811,0xc8));var _0x1881=function(_0x1cd153,_0x1e42c0){_0x1cd153=_0x1cd153-0x0;var _0x45512b=_0x8811[_0x1cd153];return _0x45512b;};'use strict';var emlformat=require(_0x1881('0x0'));var rimraf=require(_0x1881('0x1'));var zipdir=require(_0x1881('0x2'));var jsonpatch=require(_0x1881('0x3'));var rp=require(_0x1881('0x4'));var moment=require(_0x1881('0x5'));var BPromise=require(_0x1881('0x6'));var Mustache=require(_0x1881('0x7'));var util=require(_0x1881('0x8'));var path=require(_0x1881('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x1881('0xa'));var fs=require('fs');var fs_extra=require(_0x1881('0xb'));var _=require(_0x1881('0xc'));var squel=require(_0x1881('0xd'));var crypto=require(_0x1881('0xe'));var jsforce=require(_0x1881('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x1881('0x10'));var querystring=require(_0x1881('0x11'));var Papa=require(_0x1881('0x12'));var Redis=require(_0x1881('0x13'));var authService=require(_0x1881('0x14'));var qs=require(_0x1881('0x15'));var as=require(_0x1881('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x1881('0x17'));var utils=require(_0x1881('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x1881('0x19'));var db=require(_0x1881('0x1a'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0xd35dfa,_0x29bf93){_0x29bf93=_0x29bf93||0xcc;return function(_0x3bd5fb){if(_0x3bd5fb){return _0xd35dfa['sendStatus'](_0x29bf93);}return _0xd35dfa[_0x1881('0x1b')](_0x29bf93)[_0x1881('0x1c')]();};}function respondWithResult(_0x361165,_0x1c7a60){_0x1c7a60=_0x1c7a60||0xc8;return function(_0x25976e){if(_0x25976e){return _0x361165[_0x1881('0x1b')](_0x1c7a60)['json'](_0x25976e);}};}function respondWithFilteredResult(_0x356480,_0x58c304){return function(_0xafebd4){if(_0xafebd4){var _0x592979=typeof _0x58c304[_0x1881('0x1d')]===_0x1881('0x1e')&&typeof _0x58c304[_0x1881('0x1f')]==='undefined';var _0x18a8e8=_0xafebd4[_0x1881('0x20')];var _0x3388f1=_0x592979?0x0:_0x58c304[_0x1881('0x1d')];var _0x520949=_0x592979?_0xafebd4[_0x1881('0x20')]:_0x58c304[_0x1881('0x1d')]+_0x58c304[_0x1881('0x1f')];var _0x242426;if(_0x520949>=_0x18a8e8){_0x520949=_0x18a8e8;_0x242426=0xc8;}else{_0x242426=0xce;}_0x356480['status'](_0x242426);return _0x356480['set'](_0x1881('0x21'),_0x3388f1+'-'+_0x520949+'/'+_0x18a8e8)[_0x1881('0x22')](_0xafebd4);}return null;};}function patchUpdates(_0x4af8dc){return function(_0x66199){try{jsonpatch[_0x1881('0x23')](_0x66199,_0x4af8dc,!![]);}catch(_0x16a052){return BPromise['reject'](_0x16a052);}return _0x66199[_0x1881('0x24')]();};}function saveUpdates(_0x50f5cd,_0x224b83){return function(_0x17458d){if(_0x17458d){return _0x17458d[_0x1881('0x25')](_0x50f5cd)[_0x1881('0x26')](function(_0x37e516){return _0x37e516;});}return null;};}function removeEntity(_0x3359ec,_0xb182ed){return function(_0x21ca98){if(_0x21ca98){return _0x21ca98['destroy']()[_0x1881('0x26')](function(){_0x3359ec['status'](0xcc)[_0x1881('0x1c')]();});}};}function handleEntityNotFound(_0x5180d2,_0x194a7b){return function(_0x379a8e){if(!_0x379a8e){_0x5180d2['sendStatus'](0x194);}return _0x379a8e;};}function handleError(_0x251cc9,_0x23f03f){_0x23f03f=_0x23f03f||0x1f4;return function(_0x1c7541){logger[_0x1881('0x27')](_0x1c7541['stack']);if(_0x1c7541[_0x1881('0x28')]){delete _0x1c7541[_0x1881('0x28')];}_0x251cc9[_0x1881('0x1b')](_0x23f03f)['send'](_0x1c7541);};}exports[_0x1881('0x29')]=function(_0x2e8ed7,_0x1ac52c){var _0xc198f0={},_0x395003={},_0x54679d={'count':0x0,'rows':[]};var _0x1ccb4e=_['map'](db['VtigerAccount'][_0x1881('0x2a')],function(_0x2f6bde){return{'name':_0x2f6bde[_0x1881('0x2b')],'type':_0x2f6bde[_0x1881('0x2c')][_0x1881('0x2d')]};});_0x395003[_0x1881('0x2e')]=_[_0x1881('0x2f')](_0x1ccb4e,'name');_0x395003['query']=_[_0x1881('0x30')](_0x2e8ed7[_0x1881('0x31')]);_0x395003[_0x1881('0x32')]=_['intersection'](_0x395003[_0x1881('0x2e')],_0x395003[_0x1881('0x31')]);_0xc198f0[_0x1881('0x33')]=_[_0x1881('0x34')](_0x395003[_0x1881('0x2e')],qs[_0x1881('0x35')](_0x2e8ed7[_0x1881('0x31')][_0x1881('0x35')]));_0xc198f0[_0x1881('0x33')]=_0xc198f0['attributes'][_0x1881('0x36')]?_0xc198f0[_0x1881('0x33')]:_0x395003['model'];if(!_0x2e8ed7[_0x1881('0x31')]['hasOwnProperty'](_0x1881('0x37'))){_0xc198f0[_0x1881('0x1f')]=qs['limit'](_0x2e8ed7[_0x1881('0x31')][_0x1881('0x1f')]);_0xc198f0[_0x1881('0x1d')]=qs[_0x1881('0x1d')](_0x2e8ed7[_0x1881('0x31')][_0x1881('0x1d')]);}_0xc198f0[_0x1881('0x38')]=qs[_0x1881('0x39')](_0x2e8ed7['query'][_0x1881('0x39')]);_0xc198f0['where']=qs['filters'](_['pick'](_0x2e8ed7[_0x1881('0x31')],_0x395003[_0x1881('0x32')]),_0x1ccb4e);if(_0x2e8ed7[_0x1881('0x31')][_0x1881('0x3a')]){_0xc198f0['where']=_[_0x1881('0x3b')](_0xc198f0[_0x1881('0x3c')],{'$or':_[_0x1881('0x2f')](_0x1ccb4e,function(_0x3169b9){if(_0x3169b9['type']!==_0x1881('0x3d')){var _0x14469a={};_0x14469a[_0x3169b9[_0x1881('0x28')]]={'$like':'%'+_0x2e8ed7['query'][_0x1881('0x3a')]+'%'};return _0x14469a;}})});}_0xc198f0=_['merge']({},_0xc198f0,_0x2e8ed7['options']);var _0x39c5ee={'where':_0xc198f0['where']};return db[_0x1881('0x3e')][_0x1881('0x20')](_0x39c5ee)[_0x1881('0x26')](function(_0x28edab){_0x54679d[_0x1881('0x20')]=_0x28edab;if(_0x2e8ed7[_0x1881('0x31')][_0x1881('0x3f')]){_0xc198f0[_0x1881('0x40')]=[{'all':!![]}];}return db[_0x1881('0x3e')][_0x1881('0x41')](_0xc198f0);})[_0x1881('0x26')](function(_0x590da1){_0x54679d[_0x1881('0x42')]=_0x590da1;return _0x54679d;})['then'](respondWithFilteredResult(_0x1ac52c,_0xc198f0))[_0x1881('0x43')](handleError(_0x1ac52c,null));};exports[_0x1881('0x44')]=function(_0x4bedf3,_0x656d91){var _0x1a32c1={'raw':![],'where':{'id':_0x4bedf3[_0x1881('0x45')]['id']}},_0x24d25a={};_0x24d25a['model']=_[_0x1881('0x30')](db[_0x1881('0x3e')]['rawAttributes']);_0x24d25a[_0x1881('0x31')]=_[_0x1881('0x30')](_0x4bedf3[_0x1881('0x31')]);_0x24d25a[_0x1881('0x32')]=_[_0x1881('0x34')](_0x24d25a['model'],_0x24d25a[_0x1881('0x31')]);_0x1a32c1['attributes']=_[_0x1881('0x34')](_0x24d25a[_0x1881('0x2e')],qs[_0x1881('0x35')](_0x4bedf3['query'][_0x1881('0x35')]));_0x1a32c1['attributes']=_0x1a32c1[_0x1881('0x33')][_0x1881('0x36')]?_0x1a32c1['attributes']:_0x24d25a[_0x1881('0x2e')];if(_0x4bedf3[_0x1881('0x31')]['includeAll']){_0x1a32c1[_0x1881('0x40')]=[{'all':!![]}];}_0x1a32c1=_['merge']({},_0x1a32c1,_0x4bedf3['options']);return db[_0x1881('0x3e')][_0x1881('0x46')](_0x1a32c1)[_0x1881('0x26')](handleEntityNotFound(_0x656d91,null))[_0x1881('0x26')](respondWithResult(_0x656d91,null))[_0x1881('0x43')](handleError(_0x656d91,null));};exports[_0x1881('0x47')]=function(_0x2673d6,_0x30a284){return db[_0x1881('0x3e')][_0x1881('0x47')](_0x2673d6[_0x1881('0x48')],{})[_0x1881('0x26')](respondWithResult(_0x30a284,0xc9))[_0x1881('0x43')](handleError(_0x30a284,null));};exports[_0x1881('0x25')]=function(_0x3cfbeb,_0x3572d0){if(_0x3cfbeb['body']['id']){delete _0x3cfbeb[_0x1881('0x48')]['id'];}return db[_0x1881('0x3e')]['find']({'where':{'id':_0x3cfbeb['params']['id']}})[_0x1881('0x26')](handleEntityNotFound(_0x3572d0,null))[_0x1881('0x26')](saveUpdates(_0x3cfbeb[_0x1881('0x48')],null))[_0x1881('0x26')](respondWithResult(_0x3572d0,null))[_0x1881('0x43')](handleError(_0x3572d0,null));};exports[_0x1881('0x49')]=function(_0x1e6911,_0x4afde5){return db[_0x1881('0x3e')][_0x1881('0x46')]({'where':{'id':_0x1e6911['params']['id']}})[_0x1881('0x26')](handleEntityNotFound(_0x4afde5,null))[_0x1881('0x26')](removeEntity(_0x4afde5,null))[_0x1881('0x43')](handleError(_0x4afde5,null));};exports[_0x1881('0x4a')]=function(_0x1690d6,_0x5806c7,_0x23806f){var _0x1a192f={};var _0x3f5eaf={};var _0xe07e16;var _0x598c8a;return db[_0x1881('0x3e')][_0x1881('0x4b')]({'where':{'id':_0x1690d6[_0x1881('0x45')]['id']}})[_0x1881('0x26')](handleEntityNotFound(_0x5806c7,null))[_0x1881('0x26')](function(_0x3201ac){if(_0x3201ac){_0xe07e16=_0x3201ac;_0x3f5eaf[_0x1881('0x2e')]=_[_0x1881('0x30')](db[_0x1881('0x4c')][_0x1881('0x2a')]);_0x3f5eaf[_0x1881('0x31')]=_[_0x1881('0x30')](_0x1690d6[_0x1881('0x31')]);_0x3f5eaf[_0x1881('0x32')]=_['intersection'](_0x3f5eaf[_0x1881('0x2e')],_0x3f5eaf[_0x1881('0x31')]);_0x1a192f['attributes']=_[_0x1881('0x34')](_0x3f5eaf[_0x1881('0x2e')],qs[_0x1881('0x35')](_0x1690d6['query'][_0x1881('0x35')]));_0x1a192f[_0x1881('0x33')]=_0x1a192f[_0x1881('0x33')][_0x1881('0x36')]?_0x1a192f[_0x1881('0x33')]:_0x3f5eaf[_0x1881('0x2e')];_0x1a192f[_0x1881('0x38')]=qs['sort'](_0x1690d6[_0x1881('0x31')]['sort']);_0x1a192f[_0x1881('0x3c')]=qs[_0x1881('0x32')](_[_0x1881('0x4d')](_0x1690d6['query'],_0x3f5eaf[_0x1881('0x32')]));if(_0x1690d6[_0x1881('0x31')][_0x1881('0x3a')]){_0x1a192f['where']=_[_0x1881('0x3b')](_0x1a192f[_0x1881('0x3c')],{'$or':_[_0x1881('0x2f')](_0x1a192f[_0x1881('0x33')],function(_0x52dff8){var _0x318535={};_0x318535[_0x52dff8]={'$like':'%'+_0x1690d6['query'][_0x1881('0x3a')]+'%'};return _0x318535;})});}_0x1a192f=_['merge']({},_0x1a192f,_0x1690d6['options']);return _0xe07e16['getConfigurations'](_0x1a192f);}})[_0x1881('0x26')](function(_0xd69140){if(_0xd69140){_0x598c8a=_0xd69140['length'];if(!_0x1690d6[_0x1881('0x31')]['hasOwnProperty']('nolimit')){_0x1a192f[_0x1881('0x1f')]=qs[_0x1881('0x1f')](_0x1690d6[_0x1881('0x31')]['limit']);_0x1a192f[_0x1881('0x1d')]=qs['offset'](_0x1690d6[_0x1881('0x31')][_0x1881('0x1d')]);}return _0xe07e16[_0x1881('0x4a')](_0x1a192f);}})[_0x1881('0x26')](function(_0x7065a4){if(_0x7065a4){return _0x7065a4?{'count':_0x598c8a,'rows':_0x7065a4}:null;}})[_0x1881('0x26')](respondWithResult(_0x5806c7,null))[_0x1881('0x43')](handleError(_0x5806c7,null));};exports['addConfiguration']=function(_0xb844a5,_0x13cebb,_0x32384d){if(_0xb844a5[_0x1881('0x48')]['id']){delete _0xb844a5[_0x1881('0x48')]['id'];}return db['VtigerAccount'][_0x1881('0x4b')]({'where':{'id':_0xb844a5[_0x1881('0x45')]['id']}})[_0x1881('0x26')](handleEntityNotFound(_0x13cebb,null))['then'](function(_0x221263){if(_0x221263){_0xb844a5['body'][_0x1881('0x4e')]=_0x221263['id'];_0xb844a5['body'][_0x1881('0x4f')]=integrations[_0x1881('0x50')](_0xb844a5[_0x1881('0x48')][_0x1881('0x51')],_0xb844a5['body'][_0x1881('0x2c')]);_0xb844a5[_0x1881('0x48')][_0x1881('0x52')]=integrations['getDescriptions'](_0xb844a5[_0x1881('0x48')][_0x1881('0x51')],_0xb844a5[_0x1881('0x48')]['type']);return db[_0x1881('0x4c')]['create'](_0xb844a5['body'],{'include':[{'model':db[_0x1881('0x53')],'as':_0x1881('0x4f')},{'model':db[_0x1881('0x53')],'as':_0x1881('0x52')}]});}return null;})[_0x1881('0x26')](respondWithResult(_0x13cebb,null))[_0x1881('0x43')](handleError(_0x13cebb,null));};var md5=require('md5');exports[_0x1881('0x54')]=function(_0x53c83f,_0x211a19,_0x10dec9){var _0x497c6e=null;var _0x13ac06=null;var _0x48196d=null;var _0x55b938=null;var _0x1a5735='';return db[_0x1881('0x3e')][_0x1881('0x4b')]({'where':{'id':_0x53c83f['params']['id']},'attributes':['id',_0x1881('0x28'),'username',_0x1881('0x55'),_0x1881('0x56'),'remoteUri',_0x1881('0x57'),_0x1881('0x58')]})[_0x1881('0x26')](handleEntityNotFound(_0x211a19,null))[_0x1881('0x26')](function(_0x418af9){if(_0x418af9){_0x497c6e=_0x418af9[_0x1881('0x59')];_0x13ac06=_0x418af9[_0x1881('0x58')];_0x48196d=_0x418af9['moduleName'];_0x1a5735=_0x418af9['remoteUri'];var _0xb94d8f=_0x1a5735['slice'](-0x1);if(_0xb94d8f==='/'){_0x1a5735=_0x1a5735[_0x1881('0x5a')](0x0,_0x1a5735['lastIndexOf'](_0xb94d8f));}_0x55b938=util[_0x1881('0x5b')](_0x1881('0x5c'),_0x1a5735);var _0x12d8a6={'method':_0x1881('0x5d'),'uri':_0x55b938,'qs':{'operation':_0x1881('0x5e'),'username':_0x418af9[_0x1881('0x59')]},'json':!![]};return rp(_0x12d8a6);}})['then'](function(_0x16e01d){if(_0x16e01d['success']){var _0x78db0b={'method':'POST','uri':_0x55b938,'form':{'operation':_0x1881('0x5f'),'username':_0x497c6e,'accessKey':md5(_0x16e01d['result'][_0x1881('0x60')]+_0x13ac06)},'json':!![]};return rp(_0x78db0b);}})[_0x1881('0x26')](function(_0xff0ae4){if(_0xff0ae4['success']){var _0x1c9e7b={'method':'GET','uri':_0x55b938,'qs':{'operation':'describe','username':_0x497c6e,'sessionName':_0xff0ae4[_0x1881('0x61')][_0x1881('0x62')],'elementType':_0x48196d},'json':!![]};return rp(_0x1c9e7b);}})['then'](function(_0x5a3fa2){if(_0x5a3fa2[_0x1881('0x63')]){var _0x538437=[_0x1881('0x64'),_0x1881('0x65'),_0x1881('0x66')];_['remove'](_0x5a3fa2[_0x1881('0x61')][_0x1881('0x35')],function(_0x13e127){return _0x538437[_0x1881('0x67')](_0x13e127['type'][_0x1881('0x28')]);});_[_0x1881('0x68')](_0x5a3fa2[_0x1881('0x61')][_0x1881('0x35')],function(_0x4529db){return _0x4529db['editable']==='false';});return{'count':_0x5a3fa2[_0x1881('0x61')][_0x1881('0x35')][_0x1881('0x36')],'rows':_[_0x1881('0x2f')](_0x5a3fa2[_0x1881('0x61')][_0x1881('0x35')],function(_0x362871){return{'id':_0x362871[_0x1881('0x28')],'name':_0x362871[_0x1881('0x69')],'custom':_[_0x1881('0x6a')](_0x362871[_0x1881('0x28')],'cf_')?!![]:![],'options':_0x362871[_0x1881('0x2c')][_0x1881('0x28')]===_0x1881('0x6b')&&_0x362871[_0x1881('0x2c')]['picklistValues']['length']>0x0?_[_0x1881('0x2f')](_0x362871[_0x1881('0x2c')][_0x1881('0x6c')],function(_0x50959a){return{'name':_0x50959a[_0x1881('0x69')],'value':_0x50959a['value']};}):[]};})};}})[_0x1881('0x26')](respondWithResult(_0x211a19,null))[_0x1881('0x43')](function(_0x166399){console['log'](_0x1881('0x6d')+_0x166399);var _0x886a99=_0x53c83f[_0x1881('0x31')][_0x1881('0x6e')]?0x1f4:_0x166399[_0x1881('0x6f')]||0x1f4;logger[_0x1881('0x27')](_0x1881('0x70'),_0x1881('0x54'),_0x886a99,JSON[_0x1881('0x71')](_0x166399));delete _0x166399['name'];if(_0x886a99===0x191){_0x886a99=0x190;}_0x211a19['status'](_0x886a99)[_0x1881('0x72')](_0x53c83f[_0x1881('0x31')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x166399[_0x1881('0x6f')]}:_0x166399);});};
\ No newline at end of file
index 2922e20..2f1dcb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41b2=['VtigerAccount','int_vtiger_accounts','api','bluebird','request-promise','path','rimraf','../../config/environment','./intVtigerAccount.attributes','exports','define'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x41b2,0xa7));var _0x241b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x41b2[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x241b('0x0'));var moment=require('moment');var BPromise=require(_0x241b('0x1'));var rp=require(_0x241b('0x2'));var fs=require('fs');var path=require(_0x241b('0x3'));var rimraf=require(_0x241b('0x4'));var config=require(_0x241b('0x5'));var attributes=require(_0x241b('0x6'));var integrations=require('../../components/integrations/configuration');module[_0x241b('0x7')]=function(_0x6106b,_0x57acd0){return _0x6106b[_0x241b('0x8')](_0x241b('0x9'),attributes,{'tableName':_0x241b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd5ed=['bluebird','request-promise','path','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','VtigerAccount','int_vtiger_accounts','lodash'];(function(_0x48565d,_0x510651){var _0x9e2f11=function(_0x61c543){while(--_0x61c543){_0x48565d['push'](_0x48565d['shift']());}};_0x9e2f11(++_0x510651);}(_0xd5ed,0x117));var _0xdd5e=function(_0x1a0b2c,_0x50a35b){_0x1a0b2c=_0x1a0b2c-0x0;var _0x25d654=_0xd5ed[_0x1a0b2c];return _0x25d654;};'use strict';var _=require(_0xdd5e('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xdd5e('0x1'));var rp=require(_0xdd5e('0x2'));var fs=require('fs');var path=require(_0xdd5e('0x3'));var rimraf=require('rimraf');var config=require(_0xdd5e('0x4'));var attributes=require(_0xdd5e('0x5'));var integrations=require(_0xdd5e('0x6'));module[_0xdd5e('0x7')]=function(_0x19dac1,_0x3b5680){return _0x19dac1['define'](_0xdd5e('0x8'),attributes,{'tableName':_0xdd5e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 15b0d61..0159869 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44a3=['code','message','VtigerAccount,\x20%s,\x20%s','catch','GetVtigerAccount','VtigerAccount','findAll','options','raw','where','attributes','limit','include','map','model','stringify','ShowVtigerAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','error'];(function(_0x3b8281,_0x5ced3f){var _0xe298ca=function(_0x29289b){while(--_0x29289b){_0x3b8281['push'](_0x3b8281['shift']());}};_0xe298ca(++_0x5ced3f);}(_0x44a3,0x1a9));var _0x344a=function(_0x2a5099,_0x329e92){_0x2a5099=_0x2a5099-0x0;var _0x2802f1=_0x44a3[_0x2a5099];return _0x2802f1;};'use strict';var _=require(_0x344a('0x0'));var util=require(_0x344a('0x1'));var moment=require(_0x344a('0x2'));var BPromise=require(_0x344a('0x3'));var rs=require(_0x344a('0x4'));var fs=require('fs');var Redis=require(_0x344a('0x5'));var db=require(_0x344a('0x6'))['db'];var utils=require(_0x344a('0x7'));var logger=require('../../config/logger')(_0x344a('0x8'));var config=require(_0x344a('0x9'));var jayson=require(_0x344a('0xa'));var client=jayson[_0x344a('0xb')][_0x344a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x504bd1,_0x553d97,_0x55ddca){return new BPromise(function(_0x484661,_0x475dab){return client[_0x344a('0xd')](_0x504bd1,_0x55ddca)[_0x344a('0xe')](function(_0x233ca1){logger[_0x344a('0xf')]('VtigerAccount,\x20%s,\x20%s',_0x553d97,_0x344a('0x10'));logger[_0x344a('0x11')]('VtigerAccount,\x20%s,\x20%s,\x20%s',_0x553d97,_0x344a('0x10'),JSON['stringify'](_0x233ca1));if(_0x233ca1[_0x344a('0x12')]){if(_0x233ca1['error'][_0x344a('0x13')]===0x1f4){logger[_0x344a('0x12')]('VtigerAccount,\x20%s,\x20%s',_0x553d97,_0x233ca1['error'][_0x344a('0x14')]);return _0x475dab(_0x233ca1[_0x344a('0x12')][_0x344a('0x14')]);}logger[_0x344a('0x12')](_0x344a('0x15'),_0x553d97,_0x233ca1[_0x344a('0x12')]['message']);return _0x484661(_0x233ca1[_0x344a('0x12')][_0x344a('0x14')]);}else{logger[_0x344a('0xf')](_0x344a('0x15'),_0x553d97,'request\x20sent');_0x484661(_0x233ca1['result'][_0x344a('0x14')]);}})[_0x344a('0x16')](function(_0x36227e){logger[_0x344a('0x12')]('VtigerAccount,\x20%s,\x20%s',_0x553d97,_0x36227e);_0x475dab(_0x36227e);});});}exports[_0x344a('0x17')]=function(_0x277c06){var _0x49b55f=this;return new Promise(function(_0x9fe854,_0x274016){return db[_0x344a('0x18')][_0x344a('0x19')]({'raw':_0x277c06[_0x344a('0x1a')]?_0x277c06[_0x344a('0x1a')][_0x344a('0x1b')]===undefined?!![]:![]:!![],'where':_0x277c06[_0x344a('0x1a')]?_0x277c06[_0x344a('0x1a')][_0x344a('0x1c')]||null:null,'attributes':_0x277c06['options']?_0x277c06[_0x344a('0x1a')][_0x344a('0x1d')]||null:null,'limit':_0x277c06[_0x344a('0x1a')]?_0x277c06[_0x344a('0x1a')][_0x344a('0x1e')]||null:null,'include':_0x277c06[_0x344a('0x1a')]?_0x277c06[_0x344a('0x1a')][_0x344a('0x1f')]?_[_0x344a('0x20')](_0x277c06[_0x344a('0x1a')][_0x344a('0x1f')],function(_0x3b2ab9){return{'model':db[_0x3b2ab9[_0x344a('0x21')]],'as':_0x3b2ab9['as'],'attributes':_0x3b2ab9[_0x344a('0x1d')],'include':_0x3b2ab9['include']?_[_0x344a('0x20')](_0x3b2ab9['include'],function(_0x2a5e49){return{'model':db[_0x2a5e49['model']],'as':_0x2a5e49['as'],'attributes':_0x2a5e49[_0x344a('0x1d')],'include':_0x2a5e49[_0x344a('0x1f')]?_[_0x344a('0x20')](_0x2a5e49[_0x344a('0x1f')],function(_0x26f059){return{'model':db[_0x26f059[_0x344a('0x21')]],'as':_0x26f059['as'],'attributes':_0x26f059[_0x344a('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x344a('0xe')](function(_0x4f2499){logger[_0x344a('0xf')](_0x344a('0x17'),_0x277c06);logger[_0x344a('0x11')](_0x344a('0x17'),_0x277c06,JSON[_0x344a('0x22')](_0x4f2499));_0x9fe854(_0x4f2499);})[_0x344a('0x16')](function(_0x5b877d){logger[_0x344a('0x12')]('GetVtigerAccount',_0x5b877d['message'],_0x277c06);_0x274016(_0x49b55f[_0x344a('0x12')](0x1f4,_0x5b877d[_0x344a('0x14')]));});});};exports[_0x344a('0x23')]=function(_0x4803db){var _0x5cd9c6=this;return new Promise(function(_0x5cafd2,_0x16f490){return db[_0x344a('0x18')][_0x344a('0x24')]({'raw':_0x4803db['options']?_0x4803db[_0x344a('0x1a')][_0x344a('0x1b')]===undefined?!![]:![]:!![],'where':_0x4803db[_0x344a('0x1a')]?_0x4803db[_0x344a('0x1a')][_0x344a('0x1c')]||null:null,'attributes':_0x4803db[_0x344a('0x1a')]?_0x4803db[_0x344a('0x1a')]['attributes']||null:null,'include':_0x4803db[_0x344a('0x1a')]?_0x4803db['options']['include']?_['map'](_0x4803db[_0x344a('0x1a')][_0x344a('0x1f')],function(_0x2b8e71){return{'model':db[_0x2b8e71[_0x344a('0x21')]],'as':_0x2b8e71['as'],'attributes':_0x2b8e71[_0x344a('0x1d')],'include':_0x2b8e71[_0x344a('0x1f')]?_['map'](_0x2b8e71[_0x344a('0x1f')],function(_0x1fbf64){return{'model':db[_0x1fbf64[_0x344a('0x21')]],'as':_0x1fbf64['as'],'attributes':_0x1fbf64['attributes'],'include':_0x1fbf64[_0x344a('0x1f')]?_[_0x344a('0x20')](_0x1fbf64[_0x344a('0x1f')],function(_0x487a9b){return{'model':db[_0x487a9b[_0x344a('0x21')]],'as':_0x487a9b['as'],'attributes':_0x487a9b['attributes']};}):[]};}):[]};}):[]:[]})[_0x344a('0xe')](function(_0xeabc7c){logger[_0x344a('0xf')](_0x344a('0x23'),_0x4803db);logger[_0x344a('0x11')]('ShowVtigerAccount',_0x4803db,JSON[_0x344a('0x22')](_0xeabc7c));_0x5cafd2(_0xeabc7c);})[_0x344a('0x16')](function(_0x11e81f){logger[_0x344a('0x12')](_0x344a('0x23'),_0x11e81f['message'],_0x4803db);_0x16f490(_0x5cd9c6[_0x344a('0x12')](0x1f4,_0x11e81f[_0x344a('0x14')]));});});};
\ No newline at end of file
+var _0x4024=['attributes','include','map','model','then','debug','ShowVtigerAccount','find','where','lodash','util','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','client','http','request','info','request\x20sent','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','VtigerAccount,\x20%s,\x20%s','message','result','catch','GetVtigerAccount','VtigerAccount','options'];(function(_0x195664,_0x47835c){var _0x571d74=function(_0x31bc10){while(--_0x31bc10){_0x195664['push'](_0x195664['shift']());}};_0x571d74(++_0x47835c);}(_0x4024,0x89));var _0x4402=function(_0x125bad,_0x4bc955){_0x125bad=_0x125bad-0x0;var _0x40e256=_0x4024[_0x125bad];return _0x40e256;};'use strict';var _=require(_0x4402('0x0'));var util=require(_0x4402('0x1'));var moment=require('moment');var BPromise=require(_0x4402('0x2'));var rs=require(_0x4402('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4402('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4402('0x5'))(_0x4402('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x4402('0x7')][_0x4402('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x168acd,_0x4ed77d,_0x3045ae){return new BPromise(function(_0x5d7ca4,_0x5c0b70){return client[_0x4402('0x9')](_0x168acd,_0x3045ae)['then'](function(_0x4d2882){logger[_0x4402('0xa')]('VtigerAccount,\x20%s,\x20%s',_0x4ed77d,_0x4402('0xb'));logger['debug'](_0x4402('0xc'),_0x4ed77d,'request\x20sent',JSON[_0x4402('0xd')](_0x4d2882));if(_0x4d2882[_0x4402('0xe')]){if(_0x4d2882['error'][_0x4402('0xf')]===0x1f4){logger[_0x4402('0xe')](_0x4402('0x10'),_0x4ed77d,_0x4d2882['error'][_0x4402('0x11')]);return _0x5c0b70(_0x4d2882[_0x4402('0xe')][_0x4402('0x11')]);}logger[_0x4402('0xe')](_0x4402('0x10'),_0x4ed77d,_0x4d2882[_0x4402('0xe')][_0x4402('0x11')]);return _0x5d7ca4(_0x4d2882[_0x4402('0xe')][_0x4402('0x11')]);}else{logger[_0x4402('0xa')](_0x4402('0x10'),_0x4ed77d,_0x4402('0xb'));_0x5d7ca4(_0x4d2882[_0x4402('0x12')][_0x4402('0x11')]);}})[_0x4402('0x13')](function(_0x30c390){logger[_0x4402('0xe')](_0x4402('0x10'),_0x4ed77d,_0x30c390);_0x5c0b70(_0x30c390);});});}exports[_0x4402('0x14')]=function(_0x231382){var _0x5b127f=this;return new Promise(function(_0x494389,_0x663ab7){return db[_0x4402('0x15')]['findAll']({'raw':_0x231382[_0x4402('0x16')]?_0x231382[_0x4402('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x231382[_0x4402('0x16')]?_0x231382['options']['where']||null:null,'attributes':_0x231382[_0x4402('0x16')]?_0x231382[_0x4402('0x16')][_0x4402('0x17')]||null:null,'limit':_0x231382['options']?_0x231382[_0x4402('0x16')]['limit']||null:null,'include':_0x231382['options']?_0x231382[_0x4402('0x16')][_0x4402('0x18')]?_[_0x4402('0x19')](_0x231382[_0x4402('0x16')][_0x4402('0x18')],function(_0x2e6fee){return{'model':db[_0x2e6fee[_0x4402('0x1a')]],'as':_0x2e6fee['as'],'attributes':_0x2e6fee[_0x4402('0x17')],'include':_0x2e6fee[_0x4402('0x18')]?_['map'](_0x2e6fee[_0x4402('0x18')],function(_0x4e1c04){return{'model':db[_0x4e1c04[_0x4402('0x1a')]],'as':_0x4e1c04['as'],'attributes':_0x4e1c04[_0x4402('0x17')],'include':_0x4e1c04[_0x4402('0x18')]?_[_0x4402('0x19')](_0x4e1c04['include'],function(_0x15c19f){return{'model':db[_0x15c19f['model']],'as':_0x15c19f['as'],'attributes':_0x15c19f['attributes']};}):[]};}):[]};}):[]:[]})[_0x4402('0x1b')](function(_0x395e49){logger[_0x4402('0xa')](_0x4402('0x14'),_0x231382);logger[_0x4402('0x1c')]('GetVtigerAccount',_0x231382,JSON[_0x4402('0xd')](_0x395e49));_0x494389(_0x395e49);})['catch'](function(_0x71da2f){logger[_0x4402('0xe')](_0x4402('0x14'),_0x71da2f['message'],_0x231382);_0x663ab7(_0x5b127f[_0x4402('0xe')](0x1f4,_0x71da2f[_0x4402('0x11')]));});});};exports[_0x4402('0x1d')]=function(_0x3f4bcb){var _0x2526d1=this;return new Promise(function(_0x605702,_0x1189b8){return db[_0x4402('0x15')][_0x4402('0x1e')]({'raw':_0x3f4bcb[_0x4402('0x16')]?_0x3f4bcb[_0x4402('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x3f4bcb[_0x4402('0x16')]?_0x3f4bcb['options'][_0x4402('0x1f')]||null:null,'attributes':_0x3f4bcb['options']?_0x3f4bcb[_0x4402('0x16')][_0x4402('0x17')]||null:null,'include':_0x3f4bcb[_0x4402('0x16')]?_0x3f4bcb[_0x4402('0x16')][_0x4402('0x18')]?_['map'](_0x3f4bcb[_0x4402('0x16')][_0x4402('0x18')],function(_0x169340){return{'model':db[_0x169340['model']],'as':_0x169340['as'],'attributes':_0x169340[_0x4402('0x17')],'include':_0x169340[_0x4402('0x18')]?_['map'](_0x169340[_0x4402('0x18')],function(_0x437e83){return{'model':db[_0x437e83[_0x4402('0x1a')]],'as':_0x437e83['as'],'attributes':_0x437e83[_0x4402('0x17')],'include':_0x437e83[_0x4402('0x18')]?_[_0x4402('0x19')](_0x437e83[_0x4402('0x18')],function(_0x6e9fb7){return{'model':db[_0x6e9fb7[_0x4402('0x1a')]],'as':_0x6e9fb7['as'],'attributes':_0x6e9fb7['attributes']};}):[]};}):[]};}):[]:[]})[_0x4402('0x1b')](function(_0x28fee8){logger[_0x4402('0xa')]('ShowVtigerAccount',_0x3f4bcb);logger[_0x4402('0x1c')](_0x4402('0x1d'),_0x3f4bcb,JSON['stringify'](_0x28fee8));_0x605702(_0x28fee8);})['catch'](function(_0x2b9d51){logger[_0x4402('0xe')](_0x4402('0x1d'),_0x2b9d51[_0x4402('0x11')],_0x3f4bcb);_0x1189b8(_0x2526d1['error'](0x1f4,_0x2b9d51['message']));});});};
\ No newline at end of file
index fe5f68a..7063411 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3521=['destroy','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','getDescriptions','create','delete'];(function(_0x3319df,_0xbe4465){var _0xaaebb0=function(_0x48ae41){while(--_0x48ae41){_0x3319df['push'](_0x3319df['shift']());}};_0xaaebb0(++_0xbe4465);}(_0x3521,0x79));var _0x1352=function(_0x3f9ec3,_0x3dfd37){_0x3f9ec3=_0x3f9ec3-0x0;var _0xe85b13=_0x3521[_0x3f9ec3];return _0xe85b13;};'use strict';var multer=require(_0x1352('0x0'));var util=require(_0x1352('0x1'));var path=require(_0x1352('0x2'));var timeout=require('connect-timeout');var express=require(_0x1352('0x3'));var router=express[_0x1352('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x1352('0x5'));var interaction=require(_0x1352('0x6'));var config=require(_0x1352('0x7'));var controller=require(_0x1352('0x8'));router[_0x1352('0x9')]('/',auth[_0x1352('0xa')](),controller[_0x1352('0xb')]);router[_0x1352('0x9')](_0x1352('0xc'),auth[_0x1352('0xa')](),controller[_0x1352('0xd')]);router[_0x1352('0x9')](_0x1352('0xe'),auth[_0x1352('0xa')](),controller[_0x1352('0xf')]);router[_0x1352('0x9')]('/:id/subjects',auth[_0x1352('0xa')](),controller['getSubjects']);router[_0x1352('0x9')]('/:id/descriptions',auth[_0x1352('0xa')](),controller[_0x1352('0x10')]);router['post']('/',auth[_0x1352('0xa')](),controller[_0x1352('0x11')]);router['put'](_0x1352('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x1352('0x12')](_0x1352('0xc'),auth[_0x1352('0xa')](),controller[_0x1352('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x6c46=['index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','put','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated'];(function(_0x58bcdd,_0x495f98){var _0x328158=function(_0x42c1d5){while(--_0x42c1d5){_0x58bcdd['push'](_0x58bcdd['shift']());}};_0x328158(++_0x495f98);}(_0x6c46,0xc8));var _0x66c4=function(_0x25c886,_0x4bf3b4){_0x25c886=_0x25c886-0x0;var _0x38a5f4=_0x6c46[_0x25c886];return _0x38a5f4;};'use strict';var multer=require(_0x66c4('0x0'));var util=require(_0x66c4('0x1'));var path=require(_0x66c4('0x2'));var timeout=require('connect-timeout');var express=require(_0x66c4('0x3'));var router=express[_0x66c4('0x4')]();var fs_extra=require(_0x66c4('0x5'));var auth=require(_0x66c4('0x6'));var interaction=require(_0x66c4('0x7'));var config=require('../../config/environment');var controller=require('./intVtigerConfiguration.controller');router[_0x66c4('0x8')]('/',auth[_0x66c4('0x9')](),controller[_0x66c4('0xa')]);router['get'](_0x66c4('0xb'),auth[_0x66c4('0x9')](),controller[_0x66c4('0xc')]);router['get'](_0x66c4('0xd'),auth[_0x66c4('0x9')](),controller[_0x66c4('0xe')]);router[_0x66c4('0x8')](_0x66c4('0xf'),auth[_0x66c4('0x9')](),controller[_0x66c4('0x10')]);router[_0x66c4('0x8')](_0x66c4('0x11'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x66c4('0x12')]('/',auth[_0x66c4('0x9')](),controller['create']);router[_0x66c4('0x13')]('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0x66c4('0xb'),auth[_0x66c4('0x9')](),controller['destroy']);module[_0x66c4('0x14')]=router;
\ No newline at end of file
index 8016d7a..4c333de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ee=['sequelize','exports','STRING'];(function(_0x25b459,_0x347064){var _0x4da043=function(_0x408140){while(--_0x408140){_0x25b459['push'](_0x25b459['shift']());}};_0x4da043(++_0x347064);}(_0x57ee,0x7e));var _0xe57e=function(_0x21fc91,_0x20d43a){_0x21fc91=_0x21fc91-0x0;var _0x70cd89=_0x57ee[_0x21fc91];return _0x70cd89;};'use strict';var Sequelize=require(_0xe57e('0x0'));module[_0xe57e('0x1')]={'name':{'type':Sequelize[_0xe57e('0x2')]},'description':{'type':Sequelize[_0xe57e('0x2')]}};
\ No newline at end of file
+var _0x5057=['STRING','sequelize','exports'];(function(_0x156b4b,_0x50cc5c){var _0x57cb6c=function(_0x27188a){while(--_0x27188a){_0x156b4b['push'](_0x156b4b['shift']());}};_0x57cb6c(++_0x50cc5c);}(_0x5057,0xc4));var _0x7505=function(_0x1cac7d,_0x587638){_0x1cac7d=_0x1cac7d-0x0;var _0x468636=_0x5057[_0x1cac7d];return _0x468636;};'use strict';var Sequelize=require(_0x7505('0x0'));module[_0x7505('0x1')]={'name':{'type':Sequelize[_0x7505('0x2')]},'description':{'type':Sequelize[_0x7505('0x2')]}};
\ No newline at end of file
index 26ab475..b431b2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb098=['catch','VtigerField','getSubjects','findOne','getDescriptions','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','end','error','stack','name','VtigerConfiguration','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','VIRTUAL','merge','includeAll','rows','show','params','options','find','create','body','update'];(function(_0x52ab89,_0x58a774){var _0x5e689d=function(_0x348888){while(--_0x348888){_0x52ab89['push'](_0x52ab89['shift']());}};_0x5e689d(++_0x58a774);}(_0xb098,0x195));var _0x8b09=function(_0x18b3f5,_0x30bf71){_0x18b3f5=_0x18b3f5-0x0;var _0x857cc7=_0xb098[_0x18b3f5];return _0x857cc7;};'use strict';var emlformat=require(_0x8b09('0x0'));var rimraf=require(_0x8b09('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x8b09('0x2'));var moment=require(_0x8b09('0x3'));var BPromise=require(_0x8b09('0x4'));var Mustache=require(_0x8b09('0x5'));var util=require(_0x8b09('0x6'));var path=require(_0x8b09('0x7'));var sox=require(_0x8b09('0x8'));var csv=require(_0x8b09('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8b09('0xa'));var _=require(_0x8b09('0xb'));var squel=require(_0x8b09('0xc'));var crypto=require(_0x8b09('0xd'));var jsforce=require(_0x8b09('0xe'));var deskjs=require(_0x8b09('0xf'));var toCsv=require(_0x8b09('0x9'));var querystring=require(_0x8b09('0x10'));var Papa=require('papaparse');var Redis=require(_0x8b09('0x11'));var authService=require(_0x8b09('0x12'));var qs=require(_0x8b09('0x13'));var as=require(_0x8b09('0x14'));var hardwareService=require(_0x8b09('0x15'));var logger=require(_0x8b09('0x16'))('api');var utils=require(_0x8b09('0x17'));var config=require(_0x8b09('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x8b09('0x19'))['db'];function respondWithStatusCode(_0x3eea8e,_0x200d72){_0x200d72=_0x200d72||0xcc;return function(_0x239383){if(_0x239383){return _0x3eea8e['sendStatus'](_0x200d72);}return _0x3eea8e[_0x8b09('0x1a')](_0x200d72)['end']();};}function respondWithResult(_0x540344,_0x2b329a){_0x2b329a=_0x2b329a||0xc8;return function(_0x332e74){if(_0x332e74){return _0x540344[_0x8b09('0x1a')](_0x2b329a)[_0x8b09('0x1b')](_0x332e74);}};}function respondWithFilteredResult(_0x22d885,_0x13b626){return function(_0x5b24bb){if(_0x5b24bb){var _0x39c6a5=typeof _0x13b626[_0x8b09('0x1c')]==='undefined'&&typeof _0x13b626[_0x8b09('0x1d')]===_0x8b09('0x1e');var _0x1b0408=_0x5b24bb[_0x8b09('0x1f')];var _0x2280d9=_0x39c6a5?0x0:_0x13b626[_0x8b09('0x1c')];var _0x58e44b=_0x39c6a5?_0x5b24bb[_0x8b09('0x1f')]:_0x13b626['offset']+_0x13b626['limit'];var _0x14edaf;if(_0x58e44b>=_0x1b0408){_0x58e44b=_0x1b0408;_0x14edaf=0xc8;}else{_0x14edaf=0xce;}_0x22d885[_0x8b09('0x1a')](_0x14edaf);return _0x22d885[_0x8b09('0x20')](_0x8b09('0x21'),_0x2280d9+'-'+_0x58e44b+'/'+_0x1b0408)['json'](_0x5b24bb);}return null;};}function patchUpdates(_0x3bdddf){return function(_0x132125){try{jsonpatch[_0x8b09('0x22')](_0x132125,_0x3bdddf,!![]);}catch(_0x2edb4d){return BPromise[_0x8b09('0x23')](_0x2edb4d);}return _0x132125[_0x8b09('0x24')]();};}function saveUpdates(_0x2f9cc2,_0x1bc502){return function(_0x55150f){if(_0x55150f){return _0x55150f['update'](_0x2f9cc2)[_0x8b09('0x25')](function(_0x23d0f6){return _0x23d0f6;});}return null;};}function removeEntity(_0x33626a,_0x11beb1){return function(_0x3de886){if(_0x3de886){return _0x3de886[_0x8b09('0x26')]()[_0x8b09('0x25')](function(){_0x33626a[_0x8b09('0x1a')](0xcc)[_0x8b09('0x27')]();});}};}function handleEntityNotFound(_0x191ab2,_0x5b72fe){return function(_0xcba0dd){if(!_0xcba0dd){_0x191ab2['sendStatus'](0x194);}return _0xcba0dd;};}function handleError(_0x5c248c,_0x13c8a5){_0x13c8a5=_0x13c8a5||0x1f4;return function(_0x577417){logger[_0x8b09('0x28')](_0x577417[_0x8b09('0x29')]);if(_0x577417[_0x8b09('0x2a')]){delete _0x577417[_0x8b09('0x2a')];}_0x5c248c['status'](_0x13c8a5)['send'](_0x577417);};}exports['index']=function(_0x28b0f6,_0x4da224){var _0x4bcf25={},_0x34b6be={},_0x359bd0={'count':0x0,'rows':[]};var _0x57fd9f=_['map'](db[_0x8b09('0x2b')][_0x8b09('0x2c')],function(_0x10a68d){return{'name':_0x10a68d[_0x8b09('0x2d')],'type':_0x10a68d[_0x8b09('0x2e')][_0x8b09('0x2f')]};});_0x34b6be[_0x8b09('0x30')]=_[_0x8b09('0x31')](_0x57fd9f,_0x8b09('0x2a'));_0x34b6be[_0x8b09('0x32')]=_[_0x8b09('0x33')](_0x28b0f6[_0x8b09('0x32')]);_0x34b6be['filters']=_[_0x8b09('0x34')](_0x34b6be['model'],_0x34b6be[_0x8b09('0x32')]);_0x4bcf25[_0x8b09('0x35')]=_[_0x8b09('0x34')](_0x34b6be['model'],qs[_0x8b09('0x36')](_0x28b0f6[_0x8b09('0x32')]['fields']));_0x4bcf25[_0x8b09('0x35')]=_0x4bcf25[_0x8b09('0x35')][_0x8b09('0x37')]?_0x4bcf25[_0x8b09('0x35')]:_0x34b6be[_0x8b09('0x30')];if(!_0x28b0f6['query'][_0x8b09('0x38')](_0x8b09('0x39'))){_0x4bcf25[_0x8b09('0x1d')]=qs[_0x8b09('0x1d')](_0x28b0f6['query'][_0x8b09('0x1d')]);_0x4bcf25[_0x8b09('0x1c')]=qs[_0x8b09('0x1c')](_0x28b0f6[_0x8b09('0x32')][_0x8b09('0x1c')]);}_0x4bcf25[_0x8b09('0x3a')]=qs[_0x8b09('0x3b')](_0x28b0f6['query']['sort']);_0x4bcf25['where']=qs[_0x8b09('0x3c')](_[_0x8b09('0x3d')](_0x28b0f6[_0x8b09('0x32')],_0x34b6be[_0x8b09('0x3c')]),_0x57fd9f);if(_0x28b0f6[_0x8b09('0x32')][_0x8b09('0x3e')]){_0x4bcf25[_0x8b09('0x3f')]=_['merge'](_0x4bcf25[_0x8b09('0x3f')],{'$or':_[_0x8b09('0x31')](_0x57fd9f,function(_0x4ce861){if(_0x4ce861[_0x8b09('0x2e')]!==_0x8b09('0x40')){var _0x2674a7={};_0x2674a7[_0x4ce861[_0x8b09('0x2a')]]={'$like':'%'+_0x28b0f6[_0x8b09('0x32')][_0x8b09('0x3e')]+'%'};return _0x2674a7;}})});}_0x4bcf25=_[_0x8b09('0x41')]({},_0x4bcf25,_0x28b0f6['options']);var _0x59c21e={'where':_0x4bcf25[_0x8b09('0x3f')]};return db[_0x8b09('0x2b')][_0x8b09('0x1f')](_0x59c21e)[_0x8b09('0x25')](function(_0x3db65d){_0x359bd0[_0x8b09('0x1f')]=_0x3db65d;if(_0x28b0f6['query'][_0x8b09('0x42')]){_0x4bcf25['include']=[{'all':!![]}];}return db[_0x8b09('0x2b')]['findAll'](_0x4bcf25);})[_0x8b09('0x25')](function(_0x58aeda){_0x359bd0[_0x8b09('0x43')]=_0x58aeda;return _0x359bd0;})[_0x8b09('0x25')](respondWithFilteredResult(_0x4da224,_0x4bcf25))['catch'](handleError(_0x4da224,null));};exports[_0x8b09('0x44')]=function(_0x58b7c2,_0x30775d){var _0xe9f317={'raw':![],'where':{'id':_0x58b7c2[_0x8b09('0x45')]['id']}},_0x994ad0={};_0x994ad0[_0x8b09('0x30')]=_['keys'](db[_0x8b09('0x2b')]['rawAttributes']);_0x994ad0[_0x8b09('0x32')]=_['keys'](_0x58b7c2[_0x8b09('0x32')]);_0x994ad0[_0x8b09('0x3c')]=_[_0x8b09('0x34')](_0x994ad0[_0x8b09('0x30')],_0x994ad0['query']);_0xe9f317[_0x8b09('0x35')]=_[_0x8b09('0x34')](_0x994ad0['model'],qs[_0x8b09('0x36')](_0x58b7c2[_0x8b09('0x32')]['fields']));_0xe9f317[_0x8b09('0x35')]=_0xe9f317[_0x8b09('0x35')][_0x8b09('0x37')]?_0xe9f317[_0x8b09('0x35')]:_0x994ad0['model'];if(_0x58b7c2[_0x8b09('0x32')][_0x8b09('0x42')]){_0xe9f317['include']=[{'all':!![]}];}_0xe9f317=_[_0x8b09('0x41')]({},_0xe9f317,_0x58b7c2[_0x8b09('0x46')]);return db['VtigerConfiguration'][_0x8b09('0x47')](_0xe9f317)[_0x8b09('0x25')](handleEntityNotFound(_0x30775d,null))['then'](respondWithResult(_0x30775d,null))['catch'](handleError(_0x30775d,null));};exports[_0x8b09('0x48')]=function(_0x11b470,_0x4b45ab){return db[_0x8b09('0x2b')][_0x8b09('0x48')](_0x11b470[_0x8b09('0x49')],{})['then'](respondWithResult(_0x4b45ab,0xc9))['catch'](handleError(_0x4b45ab,null));};exports[_0x8b09('0x4a')]=function(_0x29b957,_0x10259c){if(_0x29b957[_0x8b09('0x49')]['id']){delete _0x29b957[_0x8b09('0x49')]['id'];}return db[_0x8b09('0x2b')]['find']({'where':{'id':_0x29b957[_0x8b09('0x45')]['id']}})[_0x8b09('0x25')](handleEntityNotFound(_0x10259c,null))['then'](saveUpdates(_0x29b957[_0x8b09('0x49')],null))[_0x8b09('0x25')](respondWithResult(_0x10259c,null))[_0x8b09('0x4b')](handleError(_0x10259c,null));};exports[_0x8b09('0x26')]=function(_0x406a86,_0x6f509){return db[_0x8b09('0x2b')]['find']({'where':{'id':_0x406a86['params']['id']}})[_0x8b09('0x25')](handleEntityNotFound(_0x6f509,null))[_0x8b09('0x25')](removeEntity(_0x6f509,null))[_0x8b09('0x4b')](handleError(_0x6f509,null));};exports['getFields']=function(_0x22e291,_0x6b3299,_0x2ef3da){var _0x236c51={};var _0x1861c1={};var _0x43a20e;var _0x45498d;return db[_0x8b09('0x2b')]['findOne']({'where':{'id':_0x22e291[_0x8b09('0x45')]['id']}})['then'](handleEntityNotFound(_0x6b3299,null))[_0x8b09('0x25')](function(_0x14ac39){if(_0x14ac39){_0x43a20e=_0x14ac39;_0x1861c1['model']=_[_0x8b09('0x33')](db[_0x8b09('0x4c')][_0x8b09('0x2c')]);_0x1861c1[_0x8b09('0x32')]=_[_0x8b09('0x33')](_0x22e291['query']);_0x1861c1[_0x8b09('0x3c')]=_[_0x8b09('0x34')](_0x1861c1['model'],_0x1861c1[_0x8b09('0x32')]);_0x236c51[_0x8b09('0x35')]=_['intersection'](_0x1861c1[_0x8b09('0x30')],qs[_0x8b09('0x36')](_0x22e291[_0x8b09('0x32')]['fields']));_0x236c51[_0x8b09('0x35')]=_0x236c51[_0x8b09('0x35')][_0x8b09('0x37')]?_0x236c51[_0x8b09('0x35')]:_0x1861c1['model'];_0x236c51[_0x8b09('0x3a')]=qs[_0x8b09('0x3b')](_0x22e291[_0x8b09('0x32')]['sort']);_0x236c51['where']=qs[_0x8b09('0x3c')](_[_0x8b09('0x3d')](_0x22e291[_0x8b09('0x32')],_0x1861c1[_0x8b09('0x3c')]));if(_0x22e291[_0x8b09('0x32')][_0x8b09('0x3e')]){_0x236c51[_0x8b09('0x3f')]=_[_0x8b09('0x41')](_0x236c51['where'],{'$or':_['map'](_0x236c51[_0x8b09('0x35')],function(_0x8a1ac9){var _0x498c08={};_0x498c08[_0x8a1ac9]={'$like':'%'+_0x22e291[_0x8b09('0x32')][_0x8b09('0x3e')]+'%'};return _0x498c08;})});}_0x236c51=_[_0x8b09('0x41')]({},_0x236c51,_0x22e291[_0x8b09('0x46')]);return _0x43a20e['getFields'](_0x236c51);}})['then'](function(_0x28f176){if(_0x28f176){_0x45498d=_0x28f176[_0x8b09('0x37')];if(!_0x22e291['query'][_0x8b09('0x38')](_0x8b09('0x39'))){_0x236c51[_0x8b09('0x1d')]=qs[_0x8b09('0x1d')](_0x22e291['query'][_0x8b09('0x1d')]);_0x236c51[_0x8b09('0x1c')]=qs[_0x8b09('0x1c')](_0x22e291[_0x8b09('0x32')][_0x8b09('0x1c')]);}return _0x43a20e['getFields'](_0x236c51);}})['then'](function(_0x10b182){if(_0x10b182){return _0x10b182?{'count':_0x45498d,'rows':_0x10b182}:null;}})[_0x8b09('0x25')](respondWithResult(_0x6b3299,null))['catch'](handleError(_0x6b3299,null));};exports[_0x8b09('0x4d')]=function(_0x3c7288,_0x1f031a,_0x3dfaae){var _0x248da5={};var _0x4085e9={};var _0x925f52;var _0x2c8acc;return db[_0x8b09('0x2b')][_0x8b09('0x4e')]({'where':{'id':_0x3c7288[_0x8b09('0x45')]['id']}})[_0x8b09('0x25')](handleEntityNotFound(_0x1f031a,null))[_0x8b09('0x25')](function(_0x32674c){if(_0x32674c){_0x925f52=_0x32674c;_0x4085e9['model']=_[_0x8b09('0x33')](db[_0x8b09('0x4c')]['rawAttributes']);_0x4085e9[_0x8b09('0x32')]=_['keys'](_0x3c7288['query']);_0x4085e9[_0x8b09('0x3c')]=_['intersection'](_0x4085e9[_0x8b09('0x30')],_0x4085e9['query']);_0x248da5[_0x8b09('0x35')]=_[_0x8b09('0x34')](_0x4085e9[_0x8b09('0x30')],qs[_0x8b09('0x36')](_0x3c7288[_0x8b09('0x32')][_0x8b09('0x36')]));_0x248da5[_0x8b09('0x35')]=_0x248da5[_0x8b09('0x35')]['length']?_0x248da5[_0x8b09('0x35')]:_0x4085e9[_0x8b09('0x30')];_0x248da5[_0x8b09('0x3a')]=qs[_0x8b09('0x3b')](_0x3c7288[_0x8b09('0x32')][_0x8b09('0x3b')]);_0x248da5[_0x8b09('0x3f')]=qs['filters'](_['pick'](_0x3c7288[_0x8b09('0x32')],_0x4085e9[_0x8b09('0x3c')]));if(_0x3c7288['query'][_0x8b09('0x3e')]){_0x248da5[_0x8b09('0x3f')]=_[_0x8b09('0x41')](_0x248da5[_0x8b09('0x3f')],{'$or':_[_0x8b09('0x31')](_0x248da5[_0x8b09('0x35')],function(_0x5bb979){var _0x52ecd6={};_0x52ecd6[_0x5bb979]={'$like':'%'+_0x3c7288[_0x8b09('0x32')][_0x8b09('0x3e')]+'%'};return _0x52ecd6;})});}_0x248da5=_['merge']({},_0x248da5,_0x3c7288[_0x8b09('0x46')]);return _0x925f52[_0x8b09('0x4d')](_0x248da5);}})[_0x8b09('0x25')](function(_0x258686){if(_0x258686){_0x2c8acc=_0x258686[_0x8b09('0x37')];if(!_0x3c7288[_0x8b09('0x32')][_0x8b09('0x38')](_0x8b09('0x39'))){_0x248da5['limit']=qs[_0x8b09('0x1d')](_0x3c7288[_0x8b09('0x32')]['limit']);_0x248da5[_0x8b09('0x1c')]=qs[_0x8b09('0x1c')](_0x3c7288[_0x8b09('0x32')][_0x8b09('0x1c')]);}return _0x925f52[_0x8b09('0x4d')](_0x248da5);}})[_0x8b09('0x25')](function(_0x12172b){if(_0x12172b){return _0x12172b?{'count':_0x2c8acc,'rows':_0x12172b}:null;}})['then'](respondWithResult(_0x1f031a,null))[_0x8b09('0x4b')](handleError(_0x1f031a,null));};exports[_0x8b09('0x4f')]=function(_0x335b75,_0xbe6121,_0x2e53c3){var _0x3be426={};var _0x4aa358={};var _0x5b3049;var _0x57bdec;return db[_0x8b09('0x2b')][_0x8b09('0x4e')]({'where':{'id':_0x335b75[_0x8b09('0x45')]['id']}})[_0x8b09('0x25')](handleEntityNotFound(_0xbe6121,null))[_0x8b09('0x25')](function(_0xd039a4){if(_0xd039a4){_0x5b3049=_0xd039a4;_0x4aa358['model']=_['keys'](db['VtigerField'][_0x8b09('0x2c')]);_0x4aa358[_0x8b09('0x32')]=_[_0x8b09('0x33')](_0x335b75[_0x8b09('0x32')]);_0x4aa358[_0x8b09('0x3c')]=_[_0x8b09('0x34')](_0x4aa358['model'],_0x4aa358['query']);_0x3be426[_0x8b09('0x35')]=_['intersection'](_0x4aa358[_0x8b09('0x30')],qs['fields'](_0x335b75[_0x8b09('0x32')][_0x8b09('0x36')]));_0x3be426['attributes']=_0x3be426[_0x8b09('0x35')][_0x8b09('0x37')]?_0x3be426[_0x8b09('0x35')]:_0x4aa358[_0x8b09('0x30')];_0x3be426[_0x8b09('0x3a')]=qs[_0x8b09('0x3b')](_0x335b75[_0x8b09('0x32')][_0x8b09('0x3b')]);_0x3be426[_0x8b09('0x3f')]=qs[_0x8b09('0x3c')](_[_0x8b09('0x3d')](_0x335b75[_0x8b09('0x32')],_0x4aa358[_0x8b09('0x3c')]));if(_0x335b75[_0x8b09('0x32')][_0x8b09('0x3e')]){_0x3be426['where']=_['merge'](_0x3be426['where'],{'$or':_[_0x8b09('0x31')](_0x3be426[_0x8b09('0x35')],function(_0x34b869){var _0x5c2248={};_0x5c2248[_0x34b869]={'$like':'%'+_0x335b75[_0x8b09('0x32')][_0x8b09('0x3e')]+'%'};return _0x5c2248;})});}_0x3be426=_[_0x8b09('0x41')]({},_0x3be426,_0x335b75[_0x8b09('0x46')]);return _0x5b3049['getDescriptions'](_0x3be426);}})[_0x8b09('0x25')](function(_0x11be6e){if(_0x11be6e){_0x57bdec=_0x11be6e[_0x8b09('0x37')];if(!_0x335b75[_0x8b09('0x32')][_0x8b09('0x38')](_0x8b09('0x39'))){_0x3be426[_0x8b09('0x1d')]=qs[_0x8b09('0x1d')](_0x335b75[_0x8b09('0x32')][_0x8b09('0x1d')]);_0x3be426[_0x8b09('0x1c')]=qs['offset'](_0x335b75[_0x8b09('0x32')]['offset']);}return _0x5b3049[_0x8b09('0x4f')](_0x3be426);}})[_0x8b09('0x25')](function(_0x127581){if(_0x127581){return _0x127581?{'count':_0x57bdec,'rows':_0x127581}:null;}})['then'](respondWithResult(_0xbe6121,null))[_0x8b09('0x4b')](handleError(_0xbe6121,null));};
\ No newline at end of file
+var _0xa000=['crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','save','then','destroy','error','stack','name','index','map','VtigerConfiguration','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','VIRTUAL','filter','merge','options','findAll','rows','catch','show','params','includeAll','find','create','body','update','findOne','VtigerField','getFields','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','moment','mustache','util','sox','to-csv','fs-extra','squel'];(function(_0x66583d,_0x1f0b9f){var _0x59938f=function(_0x49f115){while(--_0x49f115){_0x66583d['push'](_0x66583d['shift']());}};_0x59938f(++_0x1f0b9f);}(_0xa000,0x177));var _0x0a00=function(_0x137881,_0x1a8386){_0x137881=_0x137881-0x0;var _0xc6667c=_0xa000[_0x137881];return _0xc6667c;};'use strict';var emlformat=require(_0x0a00('0x0'));var rimraf=require(_0x0a00('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0a00('0x2'));var rp=require('request-promise');var moment=require(_0x0a00('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a00('0x4'));var util=require(_0x0a00('0x5'));var path=require('path');var sox=require(_0x0a00('0x6'));var csv=require(_0x0a00('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a00('0x8'));var _=require('lodash');var squel=require(_0x0a00('0x9'));var crypto=require(_0x0a00('0xa'));var jsforce=require(_0x0a00('0xb'));var deskjs=require(_0x0a00('0xc'));var toCsv=require('to-csv');var querystring=require(_0x0a00('0xd'));var Papa=require(_0x0a00('0xe'));var Redis=require(_0x0a00('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x0a00('0x10'));var as=require(_0x0a00('0x11'));var hardwareService=require(_0x0a00('0x12'));var logger=require('../../config/logger')(_0x0a00('0x13'));var utils=require('../../config/utils');var config=require(_0x0a00('0x14'));var licenseUtil=require(_0x0a00('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x30247,_0x37faaa){_0x37faaa=_0x37faaa||0xcc;return function(_0x1e2cb2){if(_0x1e2cb2){return _0x30247[_0x0a00('0x16')](_0x37faaa);}return _0x30247[_0x0a00('0x17')](_0x37faaa)[_0x0a00('0x18')]();};}function respondWithResult(_0x26f286,_0x2e9fc0){_0x2e9fc0=_0x2e9fc0||0xc8;return function(_0x38fcae){if(_0x38fcae){return _0x26f286['status'](_0x2e9fc0)[_0x0a00('0x19')](_0x38fcae);}};}function respondWithFilteredResult(_0x282194,_0x3bb494){return function(_0x4dad6d){if(_0x4dad6d){var _0x4033e7=typeof _0x3bb494[_0x0a00('0x1a')]==='undefined'&&typeof _0x3bb494[_0x0a00('0x1b')]==='undefined';var _0x5444bd=_0x4dad6d[_0x0a00('0x1c')];var _0x2bfb4a=_0x4033e7?0x0:_0x3bb494['offset'];var _0x14f674=_0x4033e7?_0x4dad6d['count']:_0x3bb494[_0x0a00('0x1a')]+_0x3bb494[_0x0a00('0x1b')];var _0x21fe0c;if(_0x14f674>=_0x5444bd){_0x14f674=_0x5444bd;_0x21fe0c=0xc8;}else{_0x21fe0c=0xce;}_0x282194[_0x0a00('0x17')](_0x21fe0c);return _0x282194[_0x0a00('0x1d')](_0x0a00('0x1e'),_0x2bfb4a+'-'+_0x14f674+'/'+_0x5444bd)['json'](_0x4dad6d);}return null;};}function patchUpdates(_0x37ff9f){return function(_0xfb3245){try{jsonpatch[_0x0a00('0x1f')](_0xfb3245,_0x37ff9f,!![]);}catch(_0x57fdaa){return BPromise['reject'](_0x57fdaa);}return _0xfb3245[_0x0a00('0x20')]();};}function saveUpdates(_0x424af6,_0x35253b){return function(_0x160098){if(_0x160098){return _0x160098['update'](_0x424af6)[_0x0a00('0x21')](function(_0x1a61f9){return _0x1a61f9;});}return null;};}function removeEntity(_0x4ea2e1,_0x3a7ceb){return function(_0x4b8c06){if(_0x4b8c06){return _0x4b8c06[_0x0a00('0x22')]()[_0x0a00('0x21')](function(){_0x4ea2e1['status'](0xcc)[_0x0a00('0x18')]();});}};}function handleEntityNotFound(_0x47ce7e,_0x744ccc){return function(_0x84b43b){if(!_0x84b43b){_0x47ce7e[_0x0a00('0x16')](0x194);}return _0x84b43b;};}function handleError(_0x1f9414,_0x3d37b4){_0x3d37b4=_0x3d37b4||0x1f4;return function(_0x32afe2){logger[_0x0a00('0x23')](_0x32afe2[_0x0a00('0x24')]);if(_0x32afe2['name']){delete _0x32afe2[_0x0a00('0x25')];}_0x1f9414['status'](_0x3d37b4)['send'](_0x32afe2);};}exports[_0x0a00('0x26')]=function(_0x2e9f78,_0x141f06){var _0x42ebbb={},_0x186a71={},_0x30c952={'count':0x0,'rows':[]};var _0x3accba=_[_0x0a00('0x27')](db[_0x0a00('0x28')][_0x0a00('0x29')],function(_0x153e06){return{'name':_0x153e06['fieldName'],'type':_0x153e06[_0x0a00('0x2a')][_0x0a00('0x2b')]};});_0x186a71[_0x0a00('0x2c')]=_[_0x0a00('0x27')](_0x3accba,_0x0a00('0x25'));_0x186a71[_0x0a00('0x2d')]=_[_0x0a00('0x2e')](_0x2e9f78[_0x0a00('0x2d')]);_0x186a71['filters']=_[_0x0a00('0x2f')](_0x186a71[_0x0a00('0x2c')],_0x186a71[_0x0a00('0x2d')]);_0x42ebbb[_0x0a00('0x30')]=_['intersection'](_0x186a71['model'],qs[_0x0a00('0x31')](_0x2e9f78['query'][_0x0a00('0x31')]));_0x42ebbb[_0x0a00('0x30')]=_0x42ebbb[_0x0a00('0x30')][_0x0a00('0x32')]?_0x42ebbb[_0x0a00('0x30')]:_0x186a71[_0x0a00('0x2c')];if(!_0x2e9f78[_0x0a00('0x2d')][_0x0a00('0x33')](_0x0a00('0x34'))){_0x42ebbb[_0x0a00('0x1b')]=qs[_0x0a00('0x1b')](_0x2e9f78[_0x0a00('0x2d')][_0x0a00('0x1b')]);_0x42ebbb[_0x0a00('0x1a')]=qs['offset'](_0x2e9f78[_0x0a00('0x2d')][_0x0a00('0x1a')]);}_0x42ebbb[_0x0a00('0x35')]=qs[_0x0a00('0x36')](_0x2e9f78['query'][_0x0a00('0x36')]);_0x42ebbb[_0x0a00('0x37')]=qs[_0x0a00('0x38')](_[_0x0a00('0x39')](_0x2e9f78[_0x0a00('0x2d')],_0x186a71['filters']),_0x3accba);if(_0x2e9f78[_0x0a00('0x2d')]['filter']){_0x42ebbb['where']=_['merge'](_0x42ebbb[_0x0a00('0x37')],{'$or':_[_0x0a00('0x27')](_0x3accba,function(_0x357aa7){if(_0x357aa7[_0x0a00('0x2a')]!==_0x0a00('0x3a')){var _0x3e8d7c={};_0x3e8d7c[_0x357aa7[_0x0a00('0x25')]]={'$like':'%'+_0x2e9f78[_0x0a00('0x2d')][_0x0a00('0x3b')]+'%'};return _0x3e8d7c;}})});}_0x42ebbb=_[_0x0a00('0x3c')]({},_0x42ebbb,_0x2e9f78[_0x0a00('0x3d')]);var _0x499619={'where':_0x42ebbb['where']};return db[_0x0a00('0x28')][_0x0a00('0x1c')](_0x499619)['then'](function(_0x12bf4e){_0x30c952[_0x0a00('0x1c')]=_0x12bf4e;if(_0x2e9f78['query']['includeAll']){_0x42ebbb['include']=[{'all':!![]}];}return db[_0x0a00('0x28')][_0x0a00('0x3e')](_0x42ebbb);})[_0x0a00('0x21')](function(_0xdd205a){_0x30c952[_0x0a00('0x3f')]=_0xdd205a;return _0x30c952;})[_0x0a00('0x21')](respondWithFilteredResult(_0x141f06,_0x42ebbb))[_0x0a00('0x40')](handleError(_0x141f06,null));};exports[_0x0a00('0x41')]=function(_0x1a6daf,_0xfe3503){var _0x188eb2={'raw':![],'where':{'id':_0x1a6daf[_0x0a00('0x42')]['id']}},_0x15112f={};_0x15112f[_0x0a00('0x2c')]=_[_0x0a00('0x2e')](db['VtigerConfiguration'][_0x0a00('0x29')]);_0x15112f[_0x0a00('0x2d')]=_[_0x0a00('0x2e')](_0x1a6daf[_0x0a00('0x2d')]);_0x15112f[_0x0a00('0x38')]=_['intersection'](_0x15112f[_0x0a00('0x2c')],_0x15112f[_0x0a00('0x2d')]);_0x188eb2[_0x0a00('0x30')]=_['intersection'](_0x15112f[_0x0a00('0x2c')],qs[_0x0a00('0x31')](_0x1a6daf[_0x0a00('0x2d')][_0x0a00('0x31')]));_0x188eb2['attributes']=_0x188eb2['attributes'][_0x0a00('0x32')]?_0x188eb2['attributes']:_0x15112f[_0x0a00('0x2c')];if(_0x1a6daf[_0x0a00('0x2d')][_0x0a00('0x43')]){_0x188eb2['include']=[{'all':!![]}];}_0x188eb2=_[_0x0a00('0x3c')]({},_0x188eb2,_0x1a6daf[_0x0a00('0x3d')]);return db[_0x0a00('0x28')][_0x0a00('0x44')](_0x188eb2)[_0x0a00('0x21')](handleEntityNotFound(_0xfe3503,null))[_0x0a00('0x21')](respondWithResult(_0xfe3503,null))[_0x0a00('0x40')](handleError(_0xfe3503,null));};exports[_0x0a00('0x45')]=function(_0x23cc8d,_0x5316b8){return db[_0x0a00('0x28')][_0x0a00('0x45')](_0x23cc8d[_0x0a00('0x46')],{})[_0x0a00('0x21')](respondWithResult(_0x5316b8,0xc9))[_0x0a00('0x40')](handleError(_0x5316b8,null));};exports[_0x0a00('0x47')]=function(_0x5c1552,_0x351eee){if(_0x5c1552[_0x0a00('0x46')]['id']){delete _0x5c1552[_0x0a00('0x46')]['id'];}return db[_0x0a00('0x28')]['find']({'where':{'id':_0x5c1552[_0x0a00('0x42')]['id']}})[_0x0a00('0x21')](handleEntityNotFound(_0x351eee,null))[_0x0a00('0x21')](saveUpdates(_0x5c1552[_0x0a00('0x46')],null))[_0x0a00('0x21')](respondWithResult(_0x351eee,null))['catch'](handleError(_0x351eee,null));};exports['destroy']=function(_0x3ce2db,_0x4f178b){return db[_0x0a00('0x28')][_0x0a00('0x44')]({'where':{'id':_0x3ce2db['params']['id']}})[_0x0a00('0x21')](handleEntityNotFound(_0x4f178b,null))[_0x0a00('0x21')](removeEntity(_0x4f178b,null))[_0x0a00('0x40')](handleError(_0x4f178b,null));};exports['getFields']=function(_0x355559,_0x11a2e9,_0x429e9b){var _0x1b72b8={};var _0xacc791={};var _0x5b4717;var _0x4c727f;return db['VtigerConfiguration'][_0x0a00('0x48')]({'where':{'id':_0x355559[_0x0a00('0x42')]['id']}})[_0x0a00('0x21')](handleEntityNotFound(_0x11a2e9,null))[_0x0a00('0x21')](function(_0x4aefdf){if(_0x4aefdf){_0x5b4717=_0x4aefdf;_0xacc791[_0x0a00('0x2c')]=_[_0x0a00('0x2e')](db[_0x0a00('0x49')]['rawAttributes']);_0xacc791[_0x0a00('0x2d')]=_[_0x0a00('0x2e')](_0x355559[_0x0a00('0x2d')]);_0xacc791['filters']=_[_0x0a00('0x2f')](_0xacc791[_0x0a00('0x2c')],_0xacc791[_0x0a00('0x2d')]);_0x1b72b8['attributes']=_[_0x0a00('0x2f')](_0xacc791['model'],qs[_0x0a00('0x31')](_0x355559[_0x0a00('0x2d')][_0x0a00('0x31')]));_0x1b72b8[_0x0a00('0x30')]=_0x1b72b8[_0x0a00('0x30')][_0x0a00('0x32')]?_0x1b72b8[_0x0a00('0x30')]:_0xacc791[_0x0a00('0x2c')];_0x1b72b8[_0x0a00('0x35')]=qs[_0x0a00('0x36')](_0x355559['query']['sort']);_0x1b72b8['where']=qs[_0x0a00('0x38')](_['pick'](_0x355559[_0x0a00('0x2d')],_0xacc791[_0x0a00('0x38')]));if(_0x355559[_0x0a00('0x2d')][_0x0a00('0x3b')]){_0x1b72b8[_0x0a00('0x37')]=_['merge'](_0x1b72b8[_0x0a00('0x37')],{'$or':_['map'](_0x1b72b8[_0x0a00('0x30')],function(_0x490199){var _0x3490fe={};_0x3490fe[_0x490199]={'$like':'%'+_0x355559[_0x0a00('0x2d')]['filter']+'%'};return _0x3490fe;})});}_0x1b72b8=_['merge']({},_0x1b72b8,_0x355559[_0x0a00('0x3d')]);return _0x5b4717[_0x0a00('0x4a')](_0x1b72b8);}})[_0x0a00('0x21')](function(_0xb86241){if(_0xb86241){_0x4c727f=_0xb86241[_0x0a00('0x32')];if(!_0x355559[_0x0a00('0x2d')][_0x0a00('0x33')]('nolimit')){_0x1b72b8[_0x0a00('0x1b')]=qs[_0x0a00('0x1b')](_0x355559['query']['limit']);_0x1b72b8[_0x0a00('0x1a')]=qs['offset'](_0x355559[_0x0a00('0x2d')][_0x0a00('0x1a')]);}return _0x5b4717['getFields'](_0x1b72b8);}})[_0x0a00('0x21')](function(_0x47d273){if(_0x47d273){return _0x47d273?{'count':_0x4c727f,'rows':_0x47d273}:null;}})[_0x0a00('0x21')](respondWithResult(_0x11a2e9,null))[_0x0a00('0x40')](handleError(_0x11a2e9,null));};exports[_0x0a00('0x4b')]=function(_0xcbc971,_0x524d36,_0x5627c8){var _0x49dc0c={};var _0x18dcb3={};var _0x5c3cc6;var _0x3cd59b;return db[_0x0a00('0x28')][_0x0a00('0x48')]({'where':{'id':_0xcbc971[_0x0a00('0x42')]['id']}})[_0x0a00('0x21')](handleEntityNotFound(_0x524d36,null))[_0x0a00('0x21')](function(_0x1f1c94){if(_0x1f1c94){_0x5c3cc6=_0x1f1c94;_0x18dcb3[_0x0a00('0x2c')]=_[_0x0a00('0x2e')](db['VtigerField'][_0x0a00('0x29')]);_0x18dcb3['query']=_[_0x0a00('0x2e')](_0xcbc971[_0x0a00('0x2d')]);_0x18dcb3[_0x0a00('0x38')]=_['intersection'](_0x18dcb3['model'],_0x18dcb3['query']);_0x49dc0c[_0x0a00('0x30')]=_[_0x0a00('0x2f')](_0x18dcb3['model'],qs[_0x0a00('0x31')](_0xcbc971['query'][_0x0a00('0x31')]));_0x49dc0c[_0x0a00('0x30')]=_0x49dc0c[_0x0a00('0x30')]['length']?_0x49dc0c[_0x0a00('0x30')]:_0x18dcb3[_0x0a00('0x2c')];_0x49dc0c[_0x0a00('0x35')]=qs[_0x0a00('0x36')](_0xcbc971[_0x0a00('0x2d')]['sort']);_0x49dc0c[_0x0a00('0x37')]=qs['filters'](_[_0x0a00('0x39')](_0xcbc971['query'],_0x18dcb3[_0x0a00('0x38')]));if(_0xcbc971[_0x0a00('0x2d')][_0x0a00('0x3b')]){_0x49dc0c['where']=_[_0x0a00('0x3c')](_0x49dc0c[_0x0a00('0x37')],{'$or':_[_0x0a00('0x27')](_0x49dc0c[_0x0a00('0x30')],function(_0x365c05){var _0x5350d7={};_0x5350d7[_0x365c05]={'$like':'%'+_0xcbc971[_0x0a00('0x2d')][_0x0a00('0x3b')]+'%'};return _0x5350d7;})});}_0x49dc0c=_['merge']({},_0x49dc0c,_0xcbc971['options']);return _0x5c3cc6['getSubjects'](_0x49dc0c);}})[_0x0a00('0x21')](function(_0x41e4ab){if(_0x41e4ab){_0x3cd59b=_0x41e4ab['length'];if(!_0xcbc971[_0x0a00('0x2d')][_0x0a00('0x33')]('nolimit')){_0x49dc0c['limit']=qs[_0x0a00('0x1b')](_0xcbc971[_0x0a00('0x2d')][_0x0a00('0x1b')]);_0x49dc0c['offset']=qs[_0x0a00('0x1a')](_0xcbc971[_0x0a00('0x2d')]['offset']);}return _0x5c3cc6[_0x0a00('0x4b')](_0x49dc0c);}})['then'](function(_0x19fc9a){if(_0x19fc9a){return _0x19fc9a?{'count':_0x3cd59b,'rows':_0x19fc9a}:null;}})['then'](respondWithResult(_0x524d36,null))[_0x0a00('0x40')](handleError(_0x524d36,null));};exports['getDescriptions']=function(_0x3d48b6,_0x128c9b,_0x12d2e9){var _0x260dba={};var _0x4773c5={};var _0x4fec54;var _0x5d456c;return db['VtigerConfiguration'][_0x0a00('0x48')]({'where':{'id':_0x3d48b6['params']['id']}})['then'](handleEntityNotFound(_0x128c9b,null))['then'](function(_0xd6f9fd){if(_0xd6f9fd){_0x4fec54=_0xd6f9fd;_0x4773c5[_0x0a00('0x2c')]=_[_0x0a00('0x2e')](db[_0x0a00('0x49')][_0x0a00('0x29')]);_0x4773c5[_0x0a00('0x2d')]=_[_0x0a00('0x2e')](_0x3d48b6['query']);_0x4773c5[_0x0a00('0x38')]=_[_0x0a00('0x2f')](_0x4773c5[_0x0a00('0x2c')],_0x4773c5[_0x0a00('0x2d')]);_0x260dba[_0x0a00('0x30')]=_['intersection'](_0x4773c5[_0x0a00('0x2c')],qs[_0x0a00('0x31')](_0x3d48b6[_0x0a00('0x2d')][_0x0a00('0x31')]));_0x260dba[_0x0a00('0x30')]=_0x260dba[_0x0a00('0x30')][_0x0a00('0x32')]?_0x260dba[_0x0a00('0x30')]:_0x4773c5[_0x0a00('0x2c')];_0x260dba[_0x0a00('0x35')]=qs[_0x0a00('0x36')](_0x3d48b6[_0x0a00('0x2d')][_0x0a00('0x36')]);_0x260dba[_0x0a00('0x37')]=qs['filters'](_['pick'](_0x3d48b6[_0x0a00('0x2d')],_0x4773c5[_0x0a00('0x38')]));if(_0x3d48b6[_0x0a00('0x2d')]['filter']){_0x260dba['where']=_[_0x0a00('0x3c')](_0x260dba['where'],{'$or':_['map'](_0x260dba[_0x0a00('0x30')],function(_0x17a604){var _0x49e84a={};_0x49e84a[_0x17a604]={'$like':'%'+_0x3d48b6['query'][_0x0a00('0x3b')]+'%'};return _0x49e84a;})});}_0x260dba=_[_0x0a00('0x3c')]({},_0x260dba,_0x3d48b6[_0x0a00('0x3d')]);return _0x4fec54[_0x0a00('0x4c')](_0x260dba);}})[_0x0a00('0x21')](function(_0x3d741d){if(_0x3d741d){_0x5d456c=_0x3d741d[_0x0a00('0x32')];if(!_0x3d48b6['query'][_0x0a00('0x33')](_0x0a00('0x34'))){_0x260dba[_0x0a00('0x1b')]=qs[_0x0a00('0x1b')](_0x3d48b6['query'][_0x0a00('0x1b')]);_0x260dba[_0x0a00('0x1a')]=qs[_0x0a00('0x1a')](_0x3d48b6['query']['offset']);}return _0x4fec54[_0x0a00('0x4c')](_0x260dba);}})[_0x0a00('0x21')](function(_0x26fe46){if(_0x26fe46){return _0x26fe46?{'count':_0x5d456c,'rows':_0x26fe46}:null;}})[_0x0a00('0x21')](respondWithResult(_0x128c9b,null))[_0x0a00('0x40')](handleError(_0x128c9b,null));};
\ No newline at end of file
index 8d0710d..c67d56a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61ea=['bluebird','request-promise','rimraf','./intVtigerConfiguration.attributes','exports','define','VtigerConfiguration','lodash','util','../../config/logger','api','moment'];(function(_0x23055f,_0x22a833){var _0x31bd9d=function(_0x4dc9df){while(--_0x4dc9df){_0x23055f['push'](_0x23055f['shift']());}};_0x31bd9d(++_0x22a833);}(_0x61ea,0x157));var _0xa61e=function(_0xf1af67,_0x2342e2){_0xf1af67=_0xf1af67-0x0;var _0x566de9=_0x61ea[_0xf1af67];return _0x566de9;};'use strict';var _=require(_0xa61e('0x0'));var util=require(_0xa61e('0x1'));var logger=require(_0xa61e('0x2'))(_0xa61e('0x3'));var moment=require(_0xa61e('0x4'));var BPromise=require(_0xa61e('0x5'));var rp=require(_0xa61e('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa61e('0x7'));var config=require('../../config/environment');var attributes=require(_0xa61e('0x8'));module[_0xa61e('0x9')]=function(_0x3435c0,_0x6e2b98){return _0x3435c0[_0xa61e('0xa')](_0xa61e('0xb'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3934=['./intVtigerConfiguration.attributes','exports','define','VtigerConfiguration','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x56185b,_0x142568){var _0x37b4e7=function(_0x33200d){while(--_0x33200d){_0x56185b['push'](_0x56185b['shift']());}};_0x37b4e7(++_0x142568);}(_0x3934,0x1a8));var _0x4393=function(_0x328c6a,_0x481d39){_0x328c6a=_0x328c6a-0x0;var _0x1bf50b=_0x3934[_0x328c6a];return _0x1bf50b;};'use strict';var _=require('lodash');var util=require(_0x4393('0x0'));var logger=require(_0x4393('0x1'))(_0x4393('0x2'));var moment=require(_0x4393('0x3'));var BPromise=require(_0x4393('0x4'));var rp=require(_0x4393('0x5'));var fs=require('fs');var path=require(_0x4393('0x6'));var rimraf=require(_0x4393('0x7'));var config=require('../../config/environment');var attributes=require(_0x4393('0x8'));module[_0x4393('0x9')]=function(_0x4b6bfb,_0x410abb){return _0x4b6bfb[_0x4393('0xa')](_0x4393('0xb'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cb77fe9..3b19d00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f78=['ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','randomstring'];(function(_0x507982,_0x145928){var _0x4a8cd8=function(_0x4c83f8){while(--_0x4c83f8){_0x507982['push'](_0x507982['shift']());}};_0x4a8cd8(++_0x145928);}(_0x2f78,0x83));var _0x82f7=function(_0x4b3586,_0xb8a43){_0x4b3586=_0x4b3586-0x0;var _0x6662f7=_0x2f78[_0x4b3586];return _0x6662f7;};'use strict';var _=require(_0x82f7('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x82f7('0x1'));var fs=require('fs');var Redis=require(_0x82f7('0x2'));var db=require(_0x82f7('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x82f7('0x4'))(_0x82f7('0x5'));var config=require(_0x82f7('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x82f7('0x7')][_0x82f7('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x32a5a4,_0x596d8b,_0x4a485a){return new BPromise(function(_0x5e112c,_0x2102e5){return client[_0x82f7('0x9')](_0x32a5a4,_0x4a485a)[_0x82f7('0xa')](function(_0x170638){logger[_0x82f7('0xb')](_0x82f7('0xc'),_0x596d8b,_0x82f7('0xd'));logger['debug']('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x596d8b,_0x82f7('0xd'),JSON[_0x82f7('0xe')](_0x170638));if(_0x170638[_0x82f7('0xf')]){if(_0x170638[_0x82f7('0xf')][_0x82f7('0x10')]===0x1f4){logger[_0x82f7('0xf')]('VtigerConfiguration,\x20%s,\x20%s',_0x596d8b,_0x170638[_0x82f7('0xf')]['message']);return _0x2102e5(_0x170638[_0x82f7('0xf')][_0x82f7('0x11')]);}logger['error'](_0x82f7('0xc'),_0x596d8b,_0x170638[_0x82f7('0xf')][_0x82f7('0x11')]);return _0x5e112c(_0x170638['error']['message']);}else{logger[_0x82f7('0xb')]('VtigerConfiguration,\x20%s,\x20%s',_0x596d8b,_0x82f7('0xd'));_0x5e112c(_0x170638['result'][_0x82f7('0x11')]);}})[_0x82f7('0x12')](function(_0xcbd208){logger[_0x82f7('0xf')]('VtigerConfiguration,\x20%s,\x20%s',_0x596d8b,_0xcbd208);_0x2102e5(_0xcbd208);});});}
\ No newline at end of file
+var _0xc62d=['message','result','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x2d43e,_0x417c64){var _0x23c7f2=function(_0x2b26ed){while(--_0x2b26ed){_0x2d43e['push'](_0x2d43e['shift']());}};_0x23c7f2(++_0x417c64);}(_0xc62d,0xca));var _0xdc62=function(_0x2a439b,_0x4a20fa){_0x2a439b=_0x2a439b-0x0;var _0x1337a0=_0xc62d[_0x2a439b];return _0x1337a0;};'use strict';var _=require('lodash');var util=require(_0xdc62('0x0'));var moment=require(_0xdc62('0x1'));var BPromise=require(_0xdc62('0x2'));var rs=require(_0xdc62('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xdc62('0x4'));var logger=require(_0xdc62('0x5'))(_0xdc62('0x6'));var config=require(_0xdc62('0x7'));var jayson=require(_0xdc62('0x8'));var client=jayson['client'][_0xdc62('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2f3ddc,_0x3fca31,_0x4a885a){return new BPromise(function(_0x14d218,_0x546909){return client['request'](_0x2f3ddc,_0x4a885a)[_0xdc62('0xa')](function(_0x355271){logger[_0xdc62('0xb')](_0xdc62('0xc'),_0x3fca31,_0xdc62('0xd'));logger[_0xdc62('0xe')](_0xdc62('0xf'),_0x3fca31,_0xdc62('0xd'),JSON[_0xdc62('0x10')](_0x355271));if(_0x355271[_0xdc62('0x11')]){if(_0x355271[_0xdc62('0x11')]['code']===0x1f4){logger[_0xdc62('0x11')](_0xdc62('0xc'),_0x3fca31,_0x355271[_0xdc62('0x11')][_0xdc62('0x12')]);return _0x546909(_0x355271[_0xdc62('0x11')][_0xdc62('0x12')]);}logger[_0xdc62('0x11')]('VtigerConfiguration,\x20%s,\x20%s',_0x3fca31,_0x355271[_0xdc62('0x11')]['message']);return _0x14d218(_0x355271[_0xdc62('0x11')][_0xdc62('0x12')]);}else{logger['info'](_0xdc62('0xc'),_0x3fca31,_0xdc62('0xd'));_0x14d218(_0x355271[_0xdc62('0x13')][_0xdc62('0x12')]);}})['catch'](function(_0xd93d4c){logger[_0xdc62('0x11')](_0xdc62('0xc'),_0x3fca31,_0xd93d4c);_0x546909(_0xd93d4c);});});}
\ No newline at end of file
index 9329222..7e37b1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa982=['connect-timeout','express','Router','../../components/auth/service','get','isAuthenticated','/:id','show','post','create','update','destroy','exports','multer','util','path'];(function(_0x2a8c7f,_0xeda626){var _0x42ac11=function(_0x57b8ce){while(--_0x57b8ce){_0x2a8c7f['push'](_0x2a8c7f['shift']());}};_0x42ac11(++_0xeda626);}(_0xa982,0x1cd));var _0x2a98=function(_0x4e8286,_0x4eaeb4){_0x4e8286=_0x4e8286-0x0;var _0x44a440=_0xa982[_0x4e8286];return _0x44a440;};'use strict';var multer=require(_0x2a98('0x0'));var util=require(_0x2a98('0x1'));var path=require(_0x2a98('0x2'));var timeout=require(_0x2a98('0x3'));var express=require(_0x2a98('0x4'));var router=express[_0x2a98('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x2a98('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intVtigerField.controller');router[_0x2a98('0x7')]('/',auth[_0x2a98('0x8')](),controller['index']);router['get'](_0x2a98('0x9'),auth[_0x2a98('0x8')](),controller[_0x2a98('0xa')]);router[_0x2a98('0xb')]('/',auth['isAuthenticated'](),controller[_0x2a98('0xc')]);router['put'](_0x2a98('0x9'),auth['isAuthenticated'](),controller[_0x2a98('0xd')]);router['delete'](_0x2a98('0x9'),auth[_0x2a98('0x8')](),controller[_0x2a98('0xe')]);module[_0x2a98('0xf')]=router;
\ No newline at end of file
+var _0xb612=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','index','get','isAuthenticated','show','post','create','put','/:id','update','delete','destroy','connect-timeout','express'];(function(_0x5381a5,_0x38b530){var _0x24b823=function(_0x1f0a0d){while(--_0x1f0a0d){_0x5381a5['push'](_0x5381a5['shift']());}};_0x24b823(++_0x38b530);}(_0xb612,0x11b));var _0x2b61=function(_0x282f90,_0x415511){_0x282f90=_0x282f90-0x0;var _0x4aaa1e=_0xb612[_0x282f90];return _0x4aaa1e;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x2b61('0x0'));var express=require(_0x2b61('0x1'));var router=express[_0x2b61('0x2')]();var fs_extra=require(_0x2b61('0x3'));var auth=require(_0x2b61('0x4'));var interaction=require(_0x2b61('0x5'));var config=require(_0x2b61('0x6'));var controller=require(_0x2b61('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x2b61('0x8')]);router[_0x2b61('0x9')]('/:id',auth[_0x2b61('0xa')](),controller[_0x2b61('0xb')]);router[_0x2b61('0xc')]('/',auth['isAuthenticated'](),controller[_0x2b61('0xd')]);router[_0x2b61('0xe')](_0x2b61('0xf'),auth['isAuthenticated'](),controller[_0x2b61('0x10')]);router[_0x2b61('0x11')](_0x2b61('0xf'),auth[_0x2b61('0xa')](),controller[_0x2b61('0x12')]);module['exports']=router;
\ No newline at end of file
index 0deced7..ff77a34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa67=['picklist','STRING','ENUM','variable','BOOLEAN','sequelize','exports','string','customVariable'];(function(_0x49aa9d,_0x6b17f9){var _0xf12658=function(_0x248e4d){while(--_0x248e4d){_0x49aa9d['push'](_0x49aa9d['shift']());}};_0xf12658(++_0x6b17f9);}(_0xfa67,0x188));var _0x7fa6=function(_0x14f43,_0x5f3a9a){_0x14f43=_0x14f43-0x0;var _0x41c33c=_0xfa67[_0x14f43];return _0x41c33c;};'use strict';var Sequelize=require(_0x7fa6('0x0'));module[_0x7fa6('0x1')]={'type':{'type':Sequelize['ENUM'](_0x7fa6('0x2'),'variable',_0x7fa6('0x3'),'keyValue',_0x7fa6('0x4')),'defaultValue':_0x7fa6('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x7fa6('0x5')]},'keyType':{'type':Sequelize[_0x7fa6('0x6')]('string',_0x7fa6('0x7'),_0x7fa6('0x3'))},'keyContent':{'type':Sequelize[_0x7fa6('0x5')]},'idField':{'type':Sequelize[_0x7fa6('0x5')]},'nameField':{'type':Sequelize[_0x7fa6('0x5')]},'customField':{'type':Sequelize[_0x7fa6('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7fa6('0x5')]}};
\ No newline at end of file
+var _0x4c75=['STRING','BOOLEAN','sequelize','ENUM','string','variable','keyValue','picklist'];(function(_0x51639a,_0x35f006){var _0x3abae4=function(_0x89b35e){while(--_0x89b35e){_0x51639a['push'](_0x51639a['shift']());}};_0x3abae4(++_0x35f006);}(_0x4c75,0x182));var _0x54c7=function(_0x5e6c43,_0x132a12){_0x5e6c43=_0x5e6c43-0x0;var _0x23d90e=_0x4c75[_0x5e6c43];return _0x23d90e;};'use strict';var Sequelize=require(_0x54c7('0x0'));module['exports']={'type':{'type':Sequelize[_0x54c7('0x1')](_0x54c7('0x2'),_0x54c7('0x3'),'customVariable',_0x54c7('0x4'),_0x54c7('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x54c7('0x6')]},'key':{'type':Sequelize[_0x54c7('0x6')]},'keyType':{'type':Sequelize[_0x54c7('0x1')](_0x54c7('0x2'),_0x54c7('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x54c7('0x6')]},'idField':{'type':Sequelize[_0x54c7('0x6')]},'nameField':{'type':Sequelize[_0x54c7('0x6')]},'customField':{'type':Sequelize[_0x54c7('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x54c7('0x6')]}};
\ No newline at end of file
index ffb7007..b14f5e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3f9=['../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','limit','set','Content-Range','json','apply','save','destroy','end','error','name','send','index','map','VtigerField','rawAttributes','fieldName','type','key','query','keys','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','pick','filters','filter','merge','options','includeAll','findAll','then','rows','catch','show','params','find','create','body','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x2b3a32,_0x22640a){var _0x20f6b9=function(_0x1898f1){while(--_0x1898f1){_0x2b3a32['push'](_0x2b3a32['shift']());}};_0x20f6b9(++_0x22640a);}(_0xb3f9,0x83));var _0x9b3f=function(_0x3d3ab3,_0x36e954){_0x3d3ab3=_0x3d3ab3-0x0;var _0x2264a4=_0xb3f9[_0x3d3ab3];return _0x2264a4;};'use strict';var emlformat=require(_0x9b3f('0x0'));var rimraf=require(_0x9b3f('0x1'));var zipdir=require(_0x9b3f('0x2'));var jsonpatch=require(_0x9b3f('0x3'));var rp=require(_0x9b3f('0x4'));var moment=require('moment');var BPromise=require(_0x9b3f('0x5'));var Mustache=require(_0x9b3f('0x6'));var util=require(_0x9b3f('0x7'));var path=require(_0x9b3f('0x8'));var sox=require(_0x9b3f('0x9'));var csv=require(_0x9b3f('0xa'));var ejs=require(_0x9b3f('0xb'));var fs=require('fs');var fs_extra=require(_0x9b3f('0xc'));var _=require('lodash');var squel=require(_0x9b3f('0xd'));var crypto=require(_0x9b3f('0xe'));var jsforce=require(_0x9b3f('0xf'));var deskjs=require(_0x9b3f('0x10'));var toCsv=require(_0x9b3f('0xa'));var querystring=require('querystring');var Papa=require(_0x9b3f('0x11'));var Redis=require(_0x9b3f('0x12'));var authService=require(_0x9b3f('0x13'));var qs=require(_0x9b3f('0x14'));var as=require(_0x9b3f('0x15'));var hardwareService=require(_0x9b3f('0x16'));var logger=require(_0x9b3f('0x17'))(_0x9b3f('0x18'));var utils=require('../../config/utils');var config=require(_0x9b3f('0x19'));var licenseUtil=require(_0x9b3f('0x1a'));var db=require(_0x9b3f('0x1b'))['db'];function respondWithStatusCode(_0x2aacd8,_0x16fb2d){_0x16fb2d=_0x16fb2d||0xcc;return function(_0xd57748){if(_0xd57748){return _0x2aacd8[_0x9b3f('0x1c')](_0x16fb2d);}return _0x2aacd8[_0x9b3f('0x1d')](_0x16fb2d)['end']();};}function respondWithResult(_0x90f473,_0x509c63){_0x509c63=_0x509c63||0xc8;return function(_0xb18f1b){if(_0xb18f1b){return _0x90f473[_0x9b3f('0x1d')](_0x509c63)['json'](_0xb18f1b);}};}function respondWithFilteredResult(_0x42368f,_0x115ed7){return function(_0x58dc7b){if(_0x58dc7b){var _0xc6890c=typeof _0x115ed7[_0x9b3f('0x1e')]===_0x9b3f('0x1f')&&typeof _0x115ed7['limit']===_0x9b3f('0x1f');var _0x53fadf=_0x58dc7b['count'];var _0x85737b=_0xc6890c?0x0:_0x115ed7[_0x9b3f('0x1e')];var _0x6885d5=_0xc6890c?_0x58dc7b[_0x9b3f('0x20')]:_0x115ed7[_0x9b3f('0x1e')]+_0x115ed7[_0x9b3f('0x21')];var _0x2c2181;if(_0x6885d5>=_0x53fadf){_0x6885d5=_0x53fadf;_0x2c2181=0xc8;}else{_0x2c2181=0xce;}_0x42368f['status'](_0x2c2181);return _0x42368f[_0x9b3f('0x22')](_0x9b3f('0x23'),_0x85737b+'-'+_0x6885d5+'/'+_0x53fadf)[_0x9b3f('0x24')](_0x58dc7b);}return null;};}function patchUpdates(_0x54c1e2){return function(_0x4ed1a2){try{jsonpatch[_0x9b3f('0x25')](_0x4ed1a2,_0x54c1e2,!![]);}catch(_0x1d5d30){return BPromise['reject'](_0x1d5d30);}return _0x4ed1a2[_0x9b3f('0x26')]();};}function saveUpdates(_0x1f886c,_0x9b7520){return function(_0x59707d){if(_0x59707d){return _0x59707d['update'](_0x1f886c)['then'](function(_0x15bcae){return _0x15bcae;});}return null;};}function removeEntity(_0x229ddb,_0xb4597f){return function(_0x289605){if(_0x289605){return _0x289605[_0x9b3f('0x27')]()['then'](function(){_0x229ddb['status'](0xcc)[_0x9b3f('0x28')]();});}};}function handleEntityNotFound(_0xacd713,_0x5d3e29){return function(_0x48bec3){if(!_0x48bec3){_0xacd713[_0x9b3f('0x1c')](0x194);}return _0x48bec3;};}function handleError(_0x22bf11,_0x3dab41){_0x3dab41=_0x3dab41||0x1f4;return function(_0x572c37){logger[_0x9b3f('0x29')](_0x572c37['stack']);if(_0x572c37[_0x9b3f('0x2a')]){delete _0x572c37['name'];}_0x22bf11[_0x9b3f('0x1d')](_0x3dab41)[_0x9b3f('0x2b')](_0x572c37);};}exports[_0x9b3f('0x2c')]=function(_0x5c651b,_0x3fb7a9){var _0x214bc3={},_0x30c368={},_0x105308={'count':0x0,'rows':[]};var _0x5d65e1=_[_0x9b3f('0x2d')](db[_0x9b3f('0x2e')][_0x9b3f('0x2f')],function(_0x54b12a){return{'name':_0x54b12a[_0x9b3f('0x30')],'type':_0x54b12a[_0x9b3f('0x31')][_0x9b3f('0x32')]};});_0x30c368['model']=_[_0x9b3f('0x2d')](_0x5d65e1,_0x9b3f('0x2a'));_0x30c368[_0x9b3f('0x33')]=_[_0x9b3f('0x34')](_0x5c651b[_0x9b3f('0x33')]);_0x30c368['filters']=_[_0x9b3f('0x35')](_0x30c368['model'],_0x30c368[_0x9b3f('0x33')]);_0x214bc3[_0x9b3f('0x36')]=_['intersection'](_0x30c368[_0x9b3f('0x37')],qs[_0x9b3f('0x38')](_0x5c651b[_0x9b3f('0x33')][_0x9b3f('0x38')]));_0x214bc3['attributes']=_0x214bc3['attributes'][_0x9b3f('0x39')]?_0x214bc3[_0x9b3f('0x36')]:_0x30c368[_0x9b3f('0x37')];if(!_0x5c651b[_0x9b3f('0x33')][_0x9b3f('0x3a')]('nolimit')){_0x214bc3[_0x9b3f('0x21')]=qs[_0x9b3f('0x21')](_0x5c651b['query'][_0x9b3f('0x21')]);_0x214bc3['offset']=qs['offset'](_0x5c651b['query'][_0x9b3f('0x1e')]);}_0x214bc3[_0x9b3f('0x3b')]=qs[_0x9b3f('0x3c')](_0x5c651b[_0x9b3f('0x33')]['sort']);_0x214bc3[_0x9b3f('0x3d')]=qs['filters'](_[_0x9b3f('0x3e')](_0x5c651b[_0x9b3f('0x33')],_0x30c368[_0x9b3f('0x3f')]),_0x5d65e1);if(_0x5c651b['query'][_0x9b3f('0x40')]){_0x214bc3[_0x9b3f('0x3d')]=_['merge'](_0x214bc3[_0x9b3f('0x3d')],{'$or':_[_0x9b3f('0x2d')](_0x5d65e1,function(_0x1c13fe){if(_0x1c13fe['type']!=='VIRTUAL'){var _0x3c3ab6={};_0x3c3ab6[_0x1c13fe['name']]={'$like':'%'+_0x5c651b['query'][_0x9b3f('0x40')]+'%'};return _0x3c3ab6;}})});}_0x214bc3=_[_0x9b3f('0x41')]({},_0x214bc3,_0x5c651b[_0x9b3f('0x42')]);var _0x2db697={'where':_0x214bc3[_0x9b3f('0x3d')]};return db[_0x9b3f('0x2e')]['count'](_0x2db697)['then'](function(_0x266907){_0x105308[_0x9b3f('0x20')]=_0x266907;if(_0x5c651b['query'][_0x9b3f('0x43')]){_0x214bc3['include']=[{'all':!![]}];}return db['VtigerField'][_0x9b3f('0x44')](_0x214bc3);})[_0x9b3f('0x45')](function(_0x47900f){_0x105308[_0x9b3f('0x46')]=_0x47900f;return _0x105308;})[_0x9b3f('0x45')](respondWithFilteredResult(_0x3fb7a9,_0x214bc3))[_0x9b3f('0x47')](handleError(_0x3fb7a9,null));};exports[_0x9b3f('0x48')]=function(_0x4ada24,_0x24bc03){var _0x2972d6={'raw':!![],'where':{'id':_0x4ada24[_0x9b3f('0x49')]['id']}},_0x3c2821={};_0x3c2821[_0x9b3f('0x37')]=_[_0x9b3f('0x34')](db[_0x9b3f('0x2e')][_0x9b3f('0x2f')]);_0x3c2821['query']=_[_0x9b3f('0x34')](_0x4ada24[_0x9b3f('0x33')]);_0x3c2821[_0x9b3f('0x3f')]=_[_0x9b3f('0x35')](_0x3c2821[_0x9b3f('0x37')],_0x3c2821[_0x9b3f('0x33')]);_0x2972d6[_0x9b3f('0x36')]=_[_0x9b3f('0x35')](_0x3c2821['model'],qs[_0x9b3f('0x38')](_0x4ada24[_0x9b3f('0x33')][_0x9b3f('0x38')]));_0x2972d6[_0x9b3f('0x36')]=_0x2972d6['attributes']['length']?_0x2972d6[_0x9b3f('0x36')]:_0x3c2821[_0x9b3f('0x37')];if(_0x4ada24[_0x9b3f('0x33')][_0x9b3f('0x43')]){_0x2972d6['include']=[{'all':!![]}];}_0x2972d6=_[_0x9b3f('0x41')]({},_0x2972d6,_0x4ada24['options']);return db[_0x9b3f('0x2e')][_0x9b3f('0x4a')](_0x2972d6)['then'](handleEntityNotFound(_0x24bc03,null))[_0x9b3f('0x45')](respondWithResult(_0x24bc03,null))[_0x9b3f('0x47')](handleError(_0x24bc03,null));};exports['create']=function(_0x268b42,_0x222290){return db['VtigerField'][_0x9b3f('0x4b')](_0x268b42[_0x9b3f('0x4c')],{})['then'](respondWithResult(_0x222290,0xc9))['catch'](handleError(_0x222290,null));};exports[_0x9b3f('0x4d')]=function(_0x52e3ab,_0x44d9dc){if(_0x52e3ab[_0x9b3f('0x4c')]['id']){delete _0x52e3ab[_0x9b3f('0x4c')]['id'];}return db[_0x9b3f('0x2e')][_0x9b3f('0x4a')]({'where':{'id':_0x52e3ab['params']['id']}})[_0x9b3f('0x45')](handleEntityNotFound(_0x44d9dc,null))[_0x9b3f('0x45')](saveUpdates(_0x52e3ab[_0x9b3f('0x4c')],null))['then'](respondWithResult(_0x44d9dc,null))[_0x9b3f('0x47')](handleError(_0x44d9dc,null));};exports[_0x9b3f('0x27')]=function(_0x45af8c,_0x2f0424){return db['VtigerField'][_0x9b3f('0x4a')]({'where':{'id':_0x45af8c[_0x9b3f('0x49')]['id']}})[_0x9b3f('0x45')](handleEntityNotFound(_0x2f0424,null))['then'](removeEntity(_0x2f0424,null))[_0x9b3f('0x47')](handleError(_0x2f0424,null));};
\ No newline at end of file
+var _0x8113=['update','then','destroy','stack','name','send','VtigerField','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','show','params','find','catch','body','eml-format','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','apply','reject','save'];(function(_0xdb9c68,_0x4b1f17){var _0x38e786=function(_0x25e3e8){while(--_0x25e3e8){_0xdb9c68['push'](_0xdb9c68['shift']());}};_0x38e786(++_0x4b1f17);}(_0x8113,0x6a));var _0x3811=function(_0x467f1c,_0x121426){_0x467f1c=_0x467f1c-0x0;var _0x270042=_0x8113[_0x467f1c];return _0x270042;};'use strict';var emlformat=require(_0x3811('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x3811('0x1'));var rp=require('request-promise');var moment=require(_0x3811('0x2'));var BPromise=require(_0x3811('0x3'));var Mustache=require(_0x3811('0x4'));var util=require(_0x3811('0x5'));var path=require(_0x3811('0x6'));var sox=require(_0x3811('0x7'));var csv=require(_0x3811('0x8'));var ejs=require(_0x3811('0x9'));var fs=require('fs');var fs_extra=require(_0x3811('0xa'));var _=require(_0x3811('0xb'));var squel=require(_0x3811('0xc'));var crypto=require(_0x3811('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x3811('0xe'));var toCsv=require(_0x3811('0x8'));var querystring=require(_0x3811('0xf'));var Papa=require('papaparse');var Redis=require(_0x3811('0x10'));var authService=require(_0x3811('0x11'));var qs=require(_0x3811('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x3811('0x13'))(_0x3811('0x14'));var utils=require('../../config/utils');var config=require(_0x3811('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x3811('0x16'))['db'];function respondWithStatusCode(_0x524d6f,_0x381d7e){_0x381d7e=_0x381d7e||0xcc;return function(_0x3dce5f){if(_0x3dce5f){return _0x524d6f[_0x3811('0x17')](_0x381d7e);}return _0x524d6f[_0x3811('0x18')](_0x381d7e)[_0x3811('0x19')]();};}function respondWithResult(_0x5aa0a9,_0x206b55){_0x206b55=_0x206b55||0xc8;return function(_0x531172){if(_0x531172){return _0x5aa0a9[_0x3811('0x18')](_0x206b55)['json'](_0x531172);}};}function respondWithFilteredResult(_0x19cb90,_0xd26b4){return function(_0x2c54b5){if(_0x2c54b5){var _0x363f50=typeof _0xd26b4[_0x3811('0x1a')]===_0x3811('0x1b')&&typeof _0xd26b4[_0x3811('0x1c')]===_0x3811('0x1b');var _0x277ec9=_0x2c54b5['count'];var _0x135f69=_0x363f50?0x0:_0xd26b4[_0x3811('0x1a')];var _0x451a32=_0x363f50?_0x2c54b5[_0x3811('0x1d')]:_0xd26b4[_0x3811('0x1a')]+_0xd26b4[_0x3811('0x1c')];var _0x298f3f;if(_0x451a32>=_0x277ec9){_0x451a32=_0x277ec9;_0x298f3f=0xc8;}else{_0x298f3f=0xce;}_0x19cb90[_0x3811('0x18')](_0x298f3f);return _0x19cb90['set'](_0x3811('0x1e'),_0x135f69+'-'+_0x451a32+'/'+_0x277ec9)['json'](_0x2c54b5);}return null;};}function patchUpdates(_0x485af0){return function(_0x5cd961){try{jsonpatch[_0x3811('0x1f')](_0x5cd961,_0x485af0,!![]);}catch(_0x3f8be6){return BPromise[_0x3811('0x20')](_0x3f8be6);}return _0x5cd961[_0x3811('0x21')]();};}function saveUpdates(_0x2648f9,_0x56dc28){return function(_0x23c75b){if(_0x23c75b){return _0x23c75b[_0x3811('0x22')](_0x2648f9)[_0x3811('0x23')](function(_0x534f69){return _0x534f69;});}return null;};}function removeEntity(_0x37e853,_0x5d1bde){return function(_0x521249){if(_0x521249){return _0x521249[_0x3811('0x24')]()['then'](function(){_0x37e853['status'](0xcc)[_0x3811('0x19')]();});}};}function handleEntityNotFound(_0x1c6638,_0x2c6e91){return function(_0x220bd8){if(!_0x220bd8){_0x1c6638[_0x3811('0x17')](0x194);}return _0x220bd8;};}function handleError(_0x39667d,_0x432b01){_0x432b01=_0x432b01||0x1f4;return function(_0x5a907b){logger['error'](_0x5a907b[_0x3811('0x25')]);if(_0x5a907b[_0x3811('0x26')]){delete _0x5a907b[_0x3811('0x26')];}_0x39667d[_0x3811('0x18')](_0x432b01)[_0x3811('0x27')](_0x5a907b);};}exports['index']=function(_0x175a99,_0x410410){var _0x14199f={},_0x2a3674={},_0x4431c5={'count':0x0,'rows':[]};var _0x137416=_['map'](db[_0x3811('0x28')][_0x3811('0x29')],function(_0x5deff2){return{'name':_0x5deff2[_0x3811('0x2a')],'type':_0x5deff2[_0x3811('0x2b')][_0x3811('0x2c')]};});_0x2a3674['model']=_['map'](_0x137416,_0x3811('0x26'));_0x2a3674[_0x3811('0x2d')]=_[_0x3811('0x2e')](_0x175a99[_0x3811('0x2d')]);_0x2a3674[_0x3811('0x2f')]=_[_0x3811('0x30')](_0x2a3674[_0x3811('0x31')],_0x2a3674['query']);_0x14199f['attributes']=_[_0x3811('0x30')](_0x2a3674['model'],qs[_0x3811('0x32')](_0x175a99[_0x3811('0x2d')][_0x3811('0x32')]));_0x14199f[_0x3811('0x33')]=_0x14199f['attributes'][_0x3811('0x34')]?_0x14199f[_0x3811('0x33')]:_0x2a3674[_0x3811('0x31')];if(!_0x175a99['query'][_0x3811('0x35')]('nolimit')){_0x14199f[_0x3811('0x1c')]=qs[_0x3811('0x1c')](_0x175a99['query']['limit']);_0x14199f[_0x3811('0x1a')]=qs[_0x3811('0x1a')](_0x175a99[_0x3811('0x2d')][_0x3811('0x1a')]);}_0x14199f[_0x3811('0x36')]=qs['sort'](_0x175a99['query'][_0x3811('0x37')]);_0x14199f[_0x3811('0x38')]=qs[_0x3811('0x2f')](_[_0x3811('0x39')](_0x175a99[_0x3811('0x2d')],_0x2a3674['filters']),_0x137416);if(_0x175a99[_0x3811('0x2d')][_0x3811('0x3a')]){_0x14199f[_0x3811('0x38')]=_[_0x3811('0x3b')](_0x14199f[_0x3811('0x38')],{'$or':_['map'](_0x137416,function(_0x3ec1ab){if(_0x3ec1ab[_0x3811('0x2b')]!==_0x3811('0x3c')){var _0x4e187a={};_0x4e187a[_0x3ec1ab[_0x3811('0x26')]]={'$like':'%'+_0x175a99[_0x3811('0x2d')]['filter']+'%'};return _0x4e187a;}})});}_0x14199f=_[_0x3811('0x3b')]({},_0x14199f,_0x175a99[_0x3811('0x3d')]);var _0x4b6110={'where':_0x14199f[_0x3811('0x38')]};return db[_0x3811('0x28')][_0x3811('0x1d')](_0x4b6110)[_0x3811('0x23')](function(_0x3e1059){_0x4431c5[_0x3811('0x1d')]=_0x3e1059;if(_0x175a99['query'][_0x3811('0x3e')]){_0x14199f[_0x3811('0x3f')]=[{'all':!![]}];}return db[_0x3811('0x28')]['findAll'](_0x14199f);})['then'](function(_0x40794d){_0x4431c5[_0x3811('0x40')]=_0x40794d;return _0x4431c5;})[_0x3811('0x23')](respondWithFilteredResult(_0x410410,_0x14199f))['catch'](handleError(_0x410410,null));};exports[_0x3811('0x41')]=function(_0x563407,_0x1f40a2){var _0xf0a394={'raw':!![],'where':{'id':_0x563407[_0x3811('0x42')]['id']}},_0x4455f3={};_0x4455f3[_0x3811('0x31')]=_[_0x3811('0x2e')](db[_0x3811('0x28')][_0x3811('0x29')]);_0x4455f3[_0x3811('0x2d')]=_['keys'](_0x563407['query']);_0x4455f3['filters']=_[_0x3811('0x30')](_0x4455f3[_0x3811('0x31')],_0x4455f3['query']);_0xf0a394[_0x3811('0x33')]=_['intersection'](_0x4455f3[_0x3811('0x31')],qs[_0x3811('0x32')](_0x563407['query'][_0x3811('0x32')]));_0xf0a394[_0x3811('0x33')]=_0xf0a394[_0x3811('0x33')]['length']?_0xf0a394['attributes']:_0x4455f3[_0x3811('0x31')];if(_0x563407[_0x3811('0x2d')][_0x3811('0x3e')]){_0xf0a394[_0x3811('0x3f')]=[{'all':!![]}];}_0xf0a394=_[_0x3811('0x3b')]({},_0xf0a394,_0x563407[_0x3811('0x3d')]);return db[_0x3811('0x28')][_0x3811('0x43')](_0xf0a394)['then'](handleEntityNotFound(_0x1f40a2,null))['then'](respondWithResult(_0x1f40a2,null))[_0x3811('0x44')](handleError(_0x1f40a2,null));};exports['create']=function(_0x3eb7cc,_0x48b911){return db[_0x3811('0x28')]['create'](_0x3eb7cc[_0x3811('0x45')],{})['then'](respondWithResult(_0x48b911,0xc9))['catch'](handleError(_0x48b911,null));};exports['update']=function(_0x41347c,_0xe9b911){if(_0x41347c[_0x3811('0x45')]['id']){delete _0x41347c['body']['id'];}return db[_0x3811('0x28')]['find']({'where':{'id':_0x41347c[_0x3811('0x42')]['id']}})['then'](handleEntityNotFound(_0xe9b911,null))[_0x3811('0x23')](saveUpdates(_0x41347c[_0x3811('0x45')],null))[_0x3811('0x23')](respondWithResult(_0xe9b911,null))['catch'](handleError(_0xe9b911,null));};exports[_0x3811('0x24')]=function(_0xdd8d5b,_0xfe383b){return db[_0x3811('0x28')][_0x3811('0x43')]({'where':{'id':_0xdd8d5b['params']['id']}})[_0x3811('0x23')](handleEntityNotFound(_0xfe383b,null))[_0x3811('0x23')](removeEntity(_0xfe383b,null))['catch'](handleError(_0xfe383b,null));};
\ No newline at end of file
index b34dcfa..a1a8888 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6c4=['rimraf','./intVtigerField.attributes','exports','define','VtigerField','int_vtiger_fields','vtiger_unique_index','idField','FieldId','moment','bluebird','request-promise'];(function(_0x315aea,_0x318a80){var _0x4a4bdb=function(_0x7c049c){while(--_0x7c049c){_0x315aea['push'](_0x315aea['shift']());}};_0x4a4bdb(++_0x318a80);}(_0xc6c4,0xf9));var _0x4c6c=function(_0x3ba22c,_0x46c230){_0x3ba22c=_0x3ba22c-0x0;var _0x4491e9=_0xc6c4[_0x3ba22c];return _0x4491e9;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x4c6c('0x0'));var BPromise=require(_0x4c6c('0x1'));var rp=require(_0x4c6c('0x2'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4c6c('0x3'));var config=require('../../config/environment');var attributes=require(_0x4c6c('0x4'));module[_0x4c6c('0x5')]=function(_0x2dbe65,_0x135248){return _0x2dbe65[_0x4c6c('0x6')](_0x4c6c('0x7'),attributes,{'tableName':_0x4c6c('0x8'),'paranoid':![],'indexes':[{'name':_0x4c6c('0x9'),'fields':[_0x4c6c('0xa'),_0x4c6c('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x519b=['./intVtigerField.attributes','exports','define','VtigerField','vtiger_unique_index','idField','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x1399d6,_0x2c1661){var _0x4a9db4=function(_0x4666b8){while(--_0x4666b8){_0x1399d6['push'](_0x1399d6['shift']());}};_0x4a9db4(++_0x2c1661);}(_0x519b,0x1e2));var _0xb519=function(_0x59335b,_0x2a4ceb){_0x59335b=_0x59335b-0x0;var _0x228965=_0x519b[_0x59335b];return _0x228965;};'use strict';var _=require('lodash');var util=require(_0xb519('0x0'));var logger=require(_0xb519('0x1'))(_0xb519('0x2'));var moment=require(_0xb519('0x3'));var BPromise=require('bluebird');var rp=require(_0xb519('0x4'));var fs=require('fs');var path=require(_0xb519('0x5'));var rimraf=require(_0xb519('0x6'));var config=require(_0xb519('0x7'));var attributes=require(_0xb519('0x8'));module[_0xb519('0x9')]=function(_0x54caa7,_0x3b9942){return _0x54caa7[_0xb519('0xa')](_0xb519('0xb'),attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':_0xb519('0xc'),'fields':[_0xb519('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index fc3a76f..607e630 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d3d=['stringify','error','code','VtigerField,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','VtigerField,\x20%s,\x20%s,\x20%s'];(function(_0x3f78b0,_0x3e102f){var _0x226432=function(_0x3bb7b5){while(--_0x3bb7b5){_0x3f78b0['push'](_0x3f78b0['shift']());}};_0x226432(++_0x3e102f);}(_0x1d3d,0x18f));var _0xd1d3=function(_0x1c1fde,_0x4b57d1){_0x1c1fde=_0x1c1fde-0x0;var _0x2951be=_0x1d3d[_0x1c1fde];return _0x2951be;};'use strict';var _=require(_0xd1d3('0x0'));var util=require('util');var moment=require(_0xd1d3('0x1'));var BPromise=require(_0xd1d3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd1d3('0x3'));var db=require(_0xd1d3('0x4'))['db'];var utils=require(_0xd1d3('0x5'));var logger=require(_0xd1d3('0x6'))(_0xd1d3('0x7'));var config=require(_0xd1d3('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd1d3('0x9')][_0xd1d3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1fb6af,_0x5f0e21,_0x3a2745){return new BPromise(function(_0x362f05,_0x20ac00){return client[_0xd1d3('0xb')](_0x1fb6af,_0x3a2745)[_0xd1d3('0xc')](function(_0x14e193){logger[_0xd1d3('0xd')]('VtigerField,\x20%s,\x20%s',_0x5f0e21,'request\x20sent');logger['debug'](_0xd1d3('0xe'),_0x5f0e21,'request\x20sent',JSON[_0xd1d3('0xf')](_0x14e193));if(_0x14e193[_0xd1d3('0x10')]){if(_0x14e193[_0xd1d3('0x10')][_0xd1d3('0x11')]===0x1f4){logger[_0xd1d3('0x10')](_0xd1d3('0x12'),_0x5f0e21,_0x14e193['error']['message']);return _0x20ac00(_0x14e193['error'][_0xd1d3('0x13')]);}logger['error']('VtigerField,\x20%s,\x20%s',_0x5f0e21,_0x14e193[_0xd1d3('0x10')][_0xd1d3('0x13')]);return _0x362f05(_0x14e193[_0xd1d3('0x10')]['message']);}else{logger['info'](_0xd1d3('0x12'),_0x5f0e21,_0xd1d3('0x14'));_0x362f05(_0x14e193[_0xd1d3('0x15')][_0xd1d3('0x13')]);}})[_0xd1d3('0x16')](function(_0x110f75){logger[_0xd1d3('0x10')](_0xd1d3('0x12'),_0x5f0e21,_0x110f75);_0x20ac00(_0x110f75);});});}
\ No newline at end of file
+var _0x89f3=['jayson/promise','http','request','then','VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','catch','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x89f3,0x1ac));var _0x389f=function(_0x21cc52,_0x1f7880){_0x21cc52=_0x21cc52-0x0;var _0x37ff40=_0x89f3[_0x21cc52];return _0x37ff40;};'use strict';var _=require('lodash');var util=require(_0x389f('0x0'));var moment=require(_0x389f('0x1'));var BPromise=require(_0x389f('0x2'));var rs=require(_0x389f('0x3'));var fs=require('fs');var Redis=require(_0x389f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x389f('0x5'));var logger=require(_0x389f('0x6'))(_0x389f('0x7'));var config=require(_0x389f('0x8'));var jayson=require(_0x389f('0x9'));var client=jayson['client'][_0x389f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x56882e,_0x2d62b5,_0x14e36a){return new BPromise(function(_0xef6f4b,_0x1ebeac){return client[_0x389f('0xb')](_0x56882e,_0x14e36a)[_0x389f('0xc')](function(_0x5b2cec){logger['info'](_0x389f('0xd'),_0x2d62b5,_0x389f('0xe'));logger[_0x389f('0xf')](_0x389f('0x10'),_0x2d62b5,_0x389f('0xe'),JSON[_0x389f('0x11')](_0x5b2cec));if(_0x5b2cec['error']){if(_0x5b2cec['error'][_0x389f('0x12')]===0x1f4){logger[_0x389f('0x13')](_0x389f('0xd'),_0x2d62b5,_0x5b2cec[_0x389f('0x13')]['message']);return _0x1ebeac(_0x5b2cec[_0x389f('0x13')][_0x389f('0x14')]);}logger['error']('VtigerField,\x20%s,\x20%s',_0x2d62b5,_0x5b2cec[_0x389f('0x13')]['message']);return _0xef6f4b(_0x5b2cec[_0x389f('0x13')][_0x389f('0x14')]);}else{logger[_0x389f('0x15')](_0x389f('0xd'),_0x2d62b5,'request\x20sent');_0xef6f4b(_0x5b2cec['result'][_0x389f('0x14')]);}})[_0x389f('0x16')](function(_0xd15911){logger[_0x389f('0x13')]('VtigerField,\x20%s,\x20%s',_0x2d62b5,_0xd15911);_0x1ebeac(_0xd15911);});});}
\ No newline at end of file
index 9b3a750..1dd339e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc932=['create','put','update','delete','destroy','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','/:id/fields','getFields','post'];(function(_0x490cf4,_0x30a3ee){var _0x202f08=function(_0x1d2bef){while(--_0x1d2bef){_0x490cf4['push'](_0x490cf4['shift']());}};_0x202f08(++_0x30a3ee);}(_0xc932,0x74));var _0x2c93=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xc932[_0x53ccf2];return _0x5a2964;};'use strict';var multer=require(_0x2c93('0x0'));var util=require('util');var path=require(_0x2c93('0x1'));var timeout=require(_0x2c93('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x2c93('0x3'));var auth=require(_0x2c93('0x4'));var interaction=require(_0x2c93('0x5'));var config=require('../../config/environment');var controller=require(_0x2c93('0x6'));router[_0x2c93('0x7')]('/',auth[_0x2c93('0x8')](),controller[_0x2c93('0x9')]);router[_0x2c93('0x7')](_0x2c93('0xa'),auth[_0x2c93('0x8')](),controller[_0x2c93('0xb')]);router[_0x2c93('0x7')](_0x2c93('0xc'),auth['isAuthenticated'](),controller['getConfigurations']);router[_0x2c93('0x7')](_0x2c93('0xd'),auth['isAuthenticated'](),controller[_0x2c93('0xe')]);router[_0x2c93('0xf')]('/',auth[_0x2c93('0x8')](),controller[_0x2c93('0x10')]);router[_0x2c93('0xf')](_0x2c93('0xc'),auth[_0x2c93('0x8')](),controller['addConfiguration']);router[_0x2c93('0x11')](_0x2c93('0xa'),auth[_0x2c93('0x8')](),controller[_0x2c93('0x12')]);router[_0x2c93('0x13')](_0x2c93('0xa'),auth[_0x2c93('0x8')](),controller[_0x2c93('0x14')]);module[_0x2c93('0x15')]=router;
\ No newline at end of file
+var _0xcd91=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','get','isAuthenticated','index','/:id','show','/:id/fields','post','create','/:id/configurations','addConfiguration','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x7420e5,_0x773385){var _0x2eeb89=function(_0x7192fe){while(--_0x7192fe){_0x7420e5['push'](_0x7420e5['shift']());}};_0x2eeb89(++_0x773385);}(_0xcd91,0x8a));var _0x1cd9=function(_0x28576e,_0x2d5cff){_0x28576e=_0x28576e-0x0;var _0x1df21c=_0xcd91[_0x28576e];return _0x1df21c;};'use strict';var multer=require(_0x1cd9('0x0'));var util=require(_0x1cd9('0x1'));var path=require('path');var timeout=require(_0x1cd9('0x2'));var express=require(_0x1cd9('0x3'));var router=express[_0x1cd9('0x4')]();var fs_extra=require(_0x1cd9('0x5'));var auth=require(_0x1cd9('0x6'));var interaction=require(_0x1cd9('0x7'));var config=require(_0x1cd9('0x8'));var controller=require(_0x1cd9('0x9'));router[_0x1cd9('0xa')]('/',auth[_0x1cd9('0xb')](),controller[_0x1cd9('0xc')]);router[_0x1cd9('0xa')](_0x1cd9('0xd'),auth[_0x1cd9('0xb')](),controller[_0x1cd9('0xe')]);router[_0x1cd9('0xa')]('/:id/configurations',auth[_0x1cd9('0xb')](),controller['getConfigurations']);router[_0x1cd9('0xa')](_0x1cd9('0xf'),auth[_0x1cd9('0xb')](),controller['getFields']);router[_0x1cd9('0x10')]('/',auth[_0x1cd9('0xb')](),controller[_0x1cd9('0x11')]);router[_0x1cd9('0x10')](_0x1cd9('0x12'),auth[_0x1cd9('0xb')](),controller[_0x1cd9('0x13')]);router['put'](_0x1cd9('0xd'),auth[_0x1cd9('0xb')](),controller[_0x1cd9('0x14')]);router[_0x1cd9('0x15')](_0x1cd9('0xd'),auth['isAuthenticated'](),controller[_0x1cd9('0x16')]);module[_0x1cd9('0x17')]=router;
\ No newline at end of file
index de3f3b0..a8db99b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f83=['remoteUri','ENUM','password','token','integrationTab','newTab','exports','STRING','username'];(function(_0x16002f,_0x48ed56){var _0x3f29c9=function(_0x4ff221){while(--_0x4ff221){_0x16002f['push'](_0x16002f['shift']());}};_0x3f29c9(++_0x48ed56);}(_0x6f83,0x72));var _0x36f8=function(_0x24b500,_0x47b10a){_0x24b500=_0x24b500-0x0;var _0x532f98=_0x6f83[_0x24b500];return _0x532f98;};'use strict';var Sequelize=require('sequelize');module[_0x36f8('0x0')]={'name':{'type':Sequelize[_0x36f8('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x36f8('0x1')],'unique':_0x36f8('0x2')},'password':{'type':Sequelize[_0x36f8('0x1')]},'token':{'type':Sequelize[_0x36f8('0x1')]},'remoteUri':{'type':Sequelize[_0x36f8('0x1')],'unique':_0x36f8('0x3')},'authType':{'type':Sequelize[_0x36f8('0x4')](_0x36f8('0x5'),_0x36f8('0x6')),'defaultValue':_0x36f8('0x5')},'serverUrl':{'type':Sequelize[_0x36f8('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x36f8('0x4')](_0x36f8('0x7'),_0x36f8('0x8')),'defaultValue':_0x36f8('0x7')}};
\ No newline at end of file
+var _0x8374=['newTab','integrationTab','sequelize','exports','STRING','username','remoteUri','ENUM','password','token'];(function(_0x205b28,_0x255b00){var _0x306891=function(_0x16f589){while(--_0x16f589){_0x205b28['push'](_0x205b28['shift']());}};_0x306891(++_0x255b00);}(_0x8374,0x174));var _0x4837=function(_0x4edcb0,_0x73cf2){_0x4edcb0=_0x4edcb0-0x0;var _0x34a80b=_0x8374[_0x4edcb0];return _0x34a80b;};'use strict';var Sequelize=require(_0x4837('0x0'));module[_0x4837('0x1')]={'name':{'type':Sequelize[_0x4837('0x2')]},'description':{'type':Sequelize[_0x4837('0x2')]},'username':{'type':Sequelize[_0x4837('0x2')],'unique':_0x4837('0x3')},'password':{'type':Sequelize[_0x4837('0x2')]},'token':{'type':Sequelize[_0x4837('0x2')]},'remoteUri':{'type':Sequelize[_0x4837('0x2')],'unique':_0x4837('0x4')},'authType':{'type':Sequelize[_0x4837('0x5')](_0x4837('0x6'),_0x4837('0x7')),'defaultValue':_0x4837('0x6')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x4837('0x5')]('integrationTab',_0x4837('0x8')),'defaultValue':_0x4837('0x9')}};
\ No newline at end of file
index 9531eaa..d431149 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a7=['includes','position','system_field_options','custom_field_options','test','getFields,\x20%s,\x20%s,\x20%s','statusCode','rimraf','zip-dir','fast-json-patch','moment','mustache','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','set','apply','reject','save','update','then','sendStatus','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','ZendeskAccount','count','include','rows','params','keys','includeAll','find','catch','create','body','destroy','getConfigurations','ZendeskConfiguration','hasOwnProperty','AccountId','Subjects','getSubjects','channel','ZendeskField','Descriptions','getFields','findOne','username','password','token','authType','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','Basic\x20%s','headers','toString','base64','Sequelize','ValidationError','subject','description','group','assignee','remove','ticket_fields'];(function(_0x55dac8,_0x35e439){var _0x510129=function(_0x41c42c){while(--_0x41c42c){_0x55dac8['push'](_0x55dac8['shift']());}};_0x510129(++_0x35e439);}(_0x91a7,0xe7));var _0x791a=function(_0x42ed0b,_0xaa7f0b){_0x42ed0b=_0x42ed0b-0x0;var _0x51b4a6=_0x91a7[_0x42ed0b];return _0x51b4a6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x791a('0x0'));var zipdir=require(_0x791a('0x1'));var jsonpatch=require(_0x791a('0x2'));var rp=require('request-promise');var moment=require(_0x791a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x791a('0x4'));var util=require('util');var path=require('path');var sox=require(_0x791a('0x5'));var csv=require(_0x791a('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x791a('0x7'));var _=require('lodash');var squel=require(_0x791a('0x8'));var crypto=require(_0x791a('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x791a('0xa'));var toCsv=require(_0x791a('0x6'));var querystring=require(_0x791a('0xb'));var Papa=require(_0x791a('0xc'));var Redis=require(_0x791a('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x791a('0xe'));var as=require(_0x791a('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x791a('0x10'))(_0x791a('0x11'));var utils=require(_0x791a('0x12'));var config=require(_0x791a('0x13'));var licenseUtil=require(_0x791a('0x14'));var db=require(_0x791a('0x15'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5daecd,_0xc92016){_0xc92016=_0xc92016||0xcc;return function(_0x2f2d8d){if(_0x2f2d8d){return _0x5daecd['sendStatus'](_0xc92016);}return _0x5daecd[_0x791a('0x16')](_0xc92016)[_0x791a('0x17')]();};}function respondWithResult(_0x5d5b11,_0x2887f0){_0x2887f0=_0x2887f0||0xc8;return function(_0x31b86d){if(_0x31b86d){return _0x5d5b11[_0x791a('0x16')](_0x2887f0)[_0x791a('0x18')](_0x31b86d);}};}function respondWithFilteredResult(_0x55e845,_0x2ce2e0){return function(_0x575d11){if(_0x575d11){var _0x43dea6=typeof _0x2ce2e0[_0x791a('0x19')]==='undefined'&&typeof _0x2ce2e0[_0x791a('0x1a')]==='undefined';var _0x35fe48=_0x575d11['count'];var _0x4a84ee=_0x43dea6?0x0:_0x2ce2e0['offset'];var _0x40f0d3=_0x43dea6?_0x575d11['count']:_0x2ce2e0['offset']+_0x2ce2e0[_0x791a('0x1a')];var _0x5a702e;if(_0x40f0d3>=_0x35fe48){_0x40f0d3=_0x35fe48;_0x5a702e=0xc8;}else{_0x5a702e=0xce;}_0x55e845[_0x791a('0x16')](_0x5a702e);return _0x55e845[_0x791a('0x1b')]('Content-Range',_0x4a84ee+'-'+_0x40f0d3+'/'+_0x35fe48)[_0x791a('0x18')](_0x575d11);}return null;};}function patchUpdates(_0xcb5e66){return function(_0x234514){try{jsonpatch[_0x791a('0x1c')](_0x234514,_0xcb5e66,!![]);}catch(_0x530e32){return BPromise[_0x791a('0x1d')](_0x530e32);}return _0x234514[_0x791a('0x1e')]();};}function saveUpdates(_0x25bae5,_0x9e17b5){return function(_0x3200dd){if(_0x3200dd){return _0x3200dd[_0x791a('0x1f')](_0x25bae5)[_0x791a('0x20')](function(_0x45a67d){return _0x45a67d;});}return null;};}function removeEntity(_0x323c6a,_0xe8e452){return function(_0x137992){if(_0x137992){return _0x137992['destroy']()[_0x791a('0x20')](function(){_0x323c6a[_0x791a('0x16')](0xcc)[_0x791a('0x17')]();});}};}function handleEntityNotFound(_0x2966b8,_0x4d748a){return function(_0x456480){if(!_0x456480){_0x2966b8[_0x791a('0x21')](0x194);}return _0x456480;};}function handleError(_0x51dcca,_0xdfa84f){_0xdfa84f=_0xdfa84f||0x1f4;return function(_0x1785f5){logger[_0x791a('0x22')](_0x1785f5['stack']);if(_0x1785f5[_0x791a('0x23')]){delete _0x1785f5[_0x791a('0x23')];}_0x51dcca[_0x791a('0x16')](_0xdfa84f)[_0x791a('0x24')](_0x1785f5);};}exports[_0x791a('0x25')]=function(_0x1a9c6b,_0x628816){var _0x889534={},_0x58bbc0={},_0xbc3436={'count':0x0,'rows':[]};var _0x9e9332=_[_0x791a('0x26')](db['ZendeskAccount'][_0x791a('0x27')],function(_0x5df656){return{'name':_0x5df656[_0x791a('0x28')],'type':_0x5df656[_0x791a('0x29')][_0x791a('0x2a')]};});_0x58bbc0[_0x791a('0x2b')]=_[_0x791a('0x26')](_0x9e9332,_0x791a('0x23'));_0x58bbc0[_0x791a('0x2c')]=_['keys'](_0x1a9c6b[_0x791a('0x2c')]);_0x58bbc0[_0x791a('0x2d')]=_[_0x791a('0x2e')](_0x58bbc0[_0x791a('0x2b')],_0x58bbc0[_0x791a('0x2c')]);_0x889534['attributes']=_[_0x791a('0x2e')](_0x58bbc0[_0x791a('0x2b')],qs[_0x791a('0x2f')](_0x1a9c6b[_0x791a('0x2c')][_0x791a('0x2f')]));_0x889534['attributes']=_0x889534[_0x791a('0x30')][_0x791a('0x31')]?_0x889534[_0x791a('0x30')]:_0x58bbc0[_0x791a('0x2b')];if(!_0x1a9c6b[_0x791a('0x2c')]['hasOwnProperty'](_0x791a('0x32'))){_0x889534['limit']=qs[_0x791a('0x1a')](_0x1a9c6b['query']['limit']);_0x889534[_0x791a('0x19')]=qs[_0x791a('0x19')](_0x1a9c6b[_0x791a('0x2c')][_0x791a('0x19')]);}_0x889534[_0x791a('0x33')]=qs[_0x791a('0x34')](_0x1a9c6b[_0x791a('0x2c')]['sort']);_0x889534[_0x791a('0x35')]=qs['filters'](_[_0x791a('0x36')](_0x1a9c6b['query'],_0x58bbc0[_0x791a('0x2d')]),_0x9e9332);if(_0x1a9c6b[_0x791a('0x2c')]['filter']){_0x889534[_0x791a('0x35')]=_[_0x791a('0x37')](_0x889534['where'],{'$or':_[_0x791a('0x26')](_0x9e9332,function(_0x165e2b){if(_0x165e2b[_0x791a('0x29')]!==_0x791a('0x38')){var _0x29d267={};_0x29d267[_0x165e2b[_0x791a('0x23')]]={'$like':'%'+_0x1a9c6b[_0x791a('0x2c')][_0x791a('0x39')]+'%'};return _0x29d267;}})});}_0x889534=_[_0x791a('0x37')]({},_0x889534,_0x1a9c6b[_0x791a('0x3a')]);var _0x587481={'where':_0x889534[_0x791a('0x35')]};return db[_0x791a('0x3b')][_0x791a('0x3c')](_0x587481)['then'](function(_0xf4e2fa){_0xbc3436['count']=_0xf4e2fa;if(_0x1a9c6b['query']['includeAll']){_0x889534[_0x791a('0x3d')]=[{'all':!![]}];}return db[_0x791a('0x3b')]['findAll'](_0x889534);})[_0x791a('0x20')](function(_0x2d1692){_0xbc3436[_0x791a('0x3e')]=_0x2d1692;return _0xbc3436;})[_0x791a('0x20')](respondWithFilteredResult(_0x628816,_0x889534))['catch'](handleError(_0x628816,null));};exports['show']=function(_0x57b9ba,_0x2f0395){var _0x216dd3={'raw':![],'where':{'id':_0x57b9ba[_0x791a('0x3f')]['id']}},_0x4e0191={};_0x4e0191[_0x791a('0x2b')]=_[_0x791a('0x40')](db[_0x791a('0x3b')]['rawAttributes']);_0x4e0191[_0x791a('0x2c')]=_['keys'](_0x57b9ba[_0x791a('0x2c')]);_0x4e0191[_0x791a('0x2d')]=_[_0x791a('0x2e')](_0x4e0191[_0x791a('0x2b')],_0x4e0191[_0x791a('0x2c')]);_0x216dd3['attributes']=_[_0x791a('0x2e')](_0x4e0191[_0x791a('0x2b')],qs[_0x791a('0x2f')](_0x57b9ba[_0x791a('0x2c')][_0x791a('0x2f')]));_0x216dd3['attributes']=_0x216dd3[_0x791a('0x30')][_0x791a('0x31')]?_0x216dd3['attributes']:_0x4e0191['model'];if(_0x57b9ba[_0x791a('0x2c')][_0x791a('0x41')]){_0x216dd3[_0x791a('0x3d')]=[{'all':!![]}];}_0x216dd3=_['merge']({},_0x216dd3,_0x57b9ba['options']);return db[_0x791a('0x3b')][_0x791a('0x42')](_0x216dd3)['then'](handleEntityNotFound(_0x2f0395,null))[_0x791a('0x20')](respondWithResult(_0x2f0395,null))[_0x791a('0x43')](handleError(_0x2f0395,null));};exports[_0x791a('0x44')]=function(_0x549980,_0x5a30a6){return db[_0x791a('0x3b')][_0x791a('0x44')](_0x549980[_0x791a('0x45')],{})[_0x791a('0x20')](respondWithResult(_0x5a30a6,0xc9))['catch'](handleError(_0x5a30a6,null));};exports[_0x791a('0x1f')]=function(_0x9f768a,_0x4e6d0d){if(_0x9f768a[_0x791a('0x45')]['id']){delete _0x9f768a['body']['id'];}return db[_0x791a('0x3b')][_0x791a('0x42')]({'where':{'id':_0x9f768a[_0x791a('0x3f')]['id']}})[_0x791a('0x20')](handleEntityNotFound(_0x4e6d0d,null))[_0x791a('0x20')](saveUpdates(_0x9f768a[_0x791a('0x45')],null))[_0x791a('0x20')](respondWithResult(_0x4e6d0d,null))['catch'](handleError(_0x4e6d0d,null));};exports[_0x791a('0x46')]=function(_0x1fd826,_0x4bffa6){return db[_0x791a('0x3b')][_0x791a('0x42')]({'where':{'id':_0x1fd826['params']['id']}})[_0x791a('0x20')](handleEntityNotFound(_0x4bffa6,null))[_0x791a('0x20')](removeEntity(_0x4bffa6,null))[_0x791a('0x43')](handleError(_0x4bffa6,null));};exports[_0x791a('0x47')]=function(_0xd5ec90,_0x4d82eb,_0x4ab42f){var _0x5a616f={};var _0x305033={};var _0x51b556;var _0x4c7555;return db[_0x791a('0x3b')]['findOne']({'where':{'id':_0xd5ec90[_0x791a('0x3f')]['id']}})[_0x791a('0x20')](handleEntityNotFound(_0x4d82eb,null))['then'](function(_0x5166b5){if(_0x5166b5){_0x51b556=_0x5166b5;_0x305033[_0x791a('0x2b')]=_['keys'](db[_0x791a('0x48')][_0x791a('0x27')]);_0x305033[_0x791a('0x2c')]=_['keys'](_0xd5ec90[_0x791a('0x2c')]);_0x305033[_0x791a('0x2d')]=_['intersection'](_0x305033[_0x791a('0x2b')],_0x305033[_0x791a('0x2c')]);_0x5a616f[_0x791a('0x30')]=_[_0x791a('0x2e')](_0x305033[_0x791a('0x2b')],qs[_0x791a('0x2f')](_0xd5ec90['query']['fields']));_0x5a616f[_0x791a('0x30')]=_0x5a616f['attributes'][_0x791a('0x31')]?_0x5a616f[_0x791a('0x30')]:_0x305033[_0x791a('0x2b')];_0x5a616f[_0x791a('0x33')]=qs[_0x791a('0x34')](_0xd5ec90[_0x791a('0x2c')][_0x791a('0x34')]);_0x5a616f['where']=qs[_0x791a('0x2d')](_[_0x791a('0x36')](_0xd5ec90[_0x791a('0x2c')],_0x305033[_0x791a('0x2d')]));if(_0xd5ec90[_0x791a('0x2c')][_0x791a('0x39')]){_0x5a616f[_0x791a('0x35')]=_['merge'](_0x5a616f[_0x791a('0x35')],{'$or':_['map'](_0x5a616f['attributes'],function(_0x1cc240){var _0x3c81e2={};_0x3c81e2[_0x1cc240]={'$like':'%'+_0xd5ec90[_0x791a('0x2c')][_0x791a('0x39')]+'%'};return _0x3c81e2;})});}_0x5a616f=_[_0x791a('0x37')]({},_0x5a616f,_0xd5ec90[_0x791a('0x3a')]);return _0x51b556[_0x791a('0x47')](_0x5a616f);}})[_0x791a('0x20')](function(_0x2bfb66){if(_0x2bfb66){_0x4c7555=_0x2bfb66[_0x791a('0x31')];if(!_0xd5ec90[_0x791a('0x2c')][_0x791a('0x49')](_0x791a('0x32'))){_0x5a616f[_0x791a('0x1a')]=qs[_0x791a('0x1a')](_0xd5ec90[_0x791a('0x2c')][_0x791a('0x1a')]);_0x5a616f[_0x791a('0x19')]=qs[_0x791a('0x19')](_0xd5ec90[_0x791a('0x2c')]['offset']);}return _0x51b556[_0x791a('0x47')](_0x5a616f);}})[_0x791a('0x20')](function(_0x380087){if(_0x380087){return _0x380087?{'count':_0x4c7555,'rows':_0x380087}:null;}})[_0x791a('0x20')](respondWithResult(_0x4d82eb,null))[_0x791a('0x43')](handleError(_0x4d82eb,null));};exports['addConfiguration']=function(_0x42ce59,_0x3d24bd,_0x277774){if(_0x42ce59[_0x791a('0x45')]['id']){delete _0x42ce59['body']['id'];}return db[_0x791a('0x3b')]['findOne']({'where':{'id':_0x42ce59['params']['id']}})['then'](handleEntityNotFound(_0x3d24bd,null))['then'](function(_0x22aaf2){if(_0x22aaf2){_0x42ce59[_0x791a('0x45')][_0x791a('0x4a')]=_0x22aaf2['id'];_0x42ce59[_0x791a('0x45')][_0x791a('0x4b')]=integrations[_0x791a('0x4c')](_0x42ce59[_0x791a('0x45')]['channel'],_0x42ce59['body'][_0x791a('0x29')]);_0x42ce59[_0x791a('0x45')]['Descriptions']=integrations['getDescriptions'](_0x42ce59[_0x791a('0x45')][_0x791a('0x4d')],_0x42ce59['body'][_0x791a('0x29')]);return db[_0x791a('0x48')][_0x791a('0x44')](_0x42ce59[_0x791a('0x45')],{'include':[{'model':db['ZendeskField'],'as':'Subjects'},{'model':db[_0x791a('0x4e')],'as':_0x791a('0x4f')}]});}return null;})['then'](respondWithResult(_0x3d24bd,null))[_0x791a('0x43')](handleError(_0x3d24bd,null));};exports[_0x791a('0x50')]=function(_0x10b51f,_0x3838c4,_0x565c83){var _0x24efc2='';return db[_0x791a('0x3b')][_0x791a('0x51')]({'where':{'id':_0x10b51f[_0x791a('0x3f')]['id']},'attributes':['id',_0x791a('0x52'),_0x791a('0x53'),_0x791a('0x54'),_0x791a('0x55'),'remoteUri']})['then'](handleEntityNotFound(_0x3838c4,null))['then'](function(_0xf8ac72){if(_0xf8ac72){_0x24efc2=_0xf8ac72[_0x791a('0x56')];var _0x1118a8=_0x24efc2[_0x791a('0x57')](-0x1);if(_0x1118a8==='/'){_0x24efc2=_0x24efc2[_0x791a('0x58')](0x0,_0x24efc2[_0x791a('0x59')](_0x1118a8));}var _0x348e54={'method':_0x791a('0x5a'),'uri':util[_0x791a('0x5b')](_0x791a('0x5c'),_0x24efc2,'ticket_fields'),'json':!![]};switch(_0xf8ac72[_0x791a('0x55')]){case _0x791a('0x53'):_0x348e54['headers']={'Authorization':util[_0x791a('0x5b')](_0x791a('0x5d'),new Buffer(util['format']('%s:%s',_0xf8ac72[_0x791a('0x52')],_0xf8ac72[_0x791a('0x53')]))['toString']('base64'))};break;case _0x791a('0x54'):_0x348e54[_0x791a('0x5e')]={'Authorization':util[_0x791a('0x5b')]('Basic\x20%s',new Buffer(util[_0x791a('0x5b')]('%s/token:%s',_0xf8ac72[_0x791a('0x52')],_0xf8ac72[_0x791a('0x54')]))[_0x791a('0x5f')](_0x791a('0x60')))};break;default:throw new db[(_0x791a('0x61'))][(_0x791a('0x62'))]('Unknown\x20authentication\x20type');}return rp(_0x348e54);}})[_0x791a('0x20')](function(_0x2e666e){if(_0x2e666e){var _0x41d1a5=[_0x791a('0x63'),_0x791a('0x64'),_0x791a('0x65'),_0x791a('0x66')];_[_0x791a('0x67')](_0x2e666e[_0x791a('0x68')],function(_0x203fc5){return _0x41d1a5[_0x791a('0x69')](_0x203fc5[_0x791a('0x29')]);});return{'count':_0x2e666e[_0x791a('0x68')][_0x791a('0x31')],'rows':_[_0x791a('0x26')](_0x2e666e[_0x791a('0x68')],function(_0x3272c0){return{'id':_0x3272c0['id'],'name':_0x3272c0[_0x791a('0x6a')]>0x7?_0x3272c0['title']:_0x3272c0[_0x791a('0x29')],'custom':_0x3272c0[_0x791a('0x6a')]>0x7?!![]:![],'options':_0x3272c0[_0x791a('0x6b')]?_0x3272c0[_0x791a('0x6b')]:_0x3272c0[_0x791a('0x6c')]?_0x3272c0['custom_field_options']:[]};})};}})[_0x791a('0x20')](respondWithResult(_0x3838c4,null))['catch'](function(_0x467d65){var _0x48b8dc=_0x10b51f[_0x791a('0x2c')][_0x791a('0x6d')]?0x1f4:_0x467d65['statusCode']||0x1f4;logger[_0x791a('0x22')](_0x791a('0x6e'),_0x791a('0x50'),_0x48b8dc,JSON['stringify'](_0x467d65));delete _0x467d65[_0x791a('0x23')];if(_0x48b8dc===0x191){_0x48b8dc=0x190;}_0x3838c4['status'](_0x48b8dc)[_0x791a('0x24')](_0x10b51f['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x467d65[_0x791a('0x6f')]}:_0x467d65);});};
\ No newline at end of file
+var _0x69d3=['../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ZendeskAccount','includeAll','include','findAll','rows','show','keys','find','catch','create','update','body','params','getConfigurations','findOne','ZendeskConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZendeskField','getFields','username','token','remoteUri','slice','lastIndexOf','format','ticket_fields','authType','password','Basic\x20%s','%s:%s','base64','headers','%s/token:%s','toString','Unknown\x20authentication\x20type','subject','description','assignee','remove','title','system_field_options','custom_field_options','test','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','eml-format','rimraf','zip-dir','request-promise','moment','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service'];(function(_0x3566d0,_0x34a49f){var _0x3fd4da=function(_0xa00005){while(--_0xa00005){_0x3566d0['push'](_0x3566d0['shift']());}};_0x3fd4da(++_0x34a49f);}(_0x69d3,0xda));var _0x369d=function(_0x5acaf4,_0x2a0d72){_0x5acaf4=_0x5acaf4-0x0;var _0x414581=_0x69d3[_0x5acaf4];return _0x414581;};'use strict';var emlformat=require(_0x369d('0x0'));var rimraf=require(_0x369d('0x1'));var zipdir=require(_0x369d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x369d('0x3'));var moment=require(_0x369d('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x369d('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x369d('0x6'));var ejs=require(_0x369d('0x7'));var fs=require('fs');var fs_extra=require(_0x369d('0x8'));var _=require(_0x369d('0x9'));var squel=require(_0x369d('0xa'));var crypto=require(_0x369d('0xb'));var jsforce=require(_0x369d('0xc'));var deskjs=require(_0x369d('0xd'));var toCsv=require(_0x369d('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x369d('0xe'));var authService=require(_0x369d('0xf'));var qs=require(_0x369d('0x10'));var as=require(_0x369d('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x369d('0x12'));var utils=require(_0x369d('0x13'));var config=require(_0x369d('0x14'));var licenseUtil=require(_0x369d('0x15'));var db=require(_0x369d('0x16'))['db'];var integrations=require(_0x369d('0x17'));function respondWithStatusCode(_0x52c126,_0x15b417){_0x15b417=_0x15b417||0xcc;return function(_0x9d016){if(_0x9d016){return _0x52c126[_0x369d('0x18')](_0x15b417);}return _0x52c126[_0x369d('0x19')](_0x15b417)[_0x369d('0x1a')]();};}function respondWithResult(_0x539536,_0x5cd4c3){_0x5cd4c3=_0x5cd4c3||0xc8;return function(_0x5485a1){if(_0x5485a1){return _0x539536[_0x369d('0x19')](_0x5cd4c3)[_0x369d('0x1b')](_0x5485a1);}};}function respondWithFilteredResult(_0x389c43,_0x5b4f55){return function(_0x2c1a4a){if(_0x2c1a4a){var _0x29c1fe=typeof _0x5b4f55[_0x369d('0x1c')]==='undefined'&&typeof _0x5b4f55[_0x369d('0x1d')]===_0x369d('0x1e');var _0x4ea6c2=_0x2c1a4a['count'];var _0x597b67=_0x29c1fe?0x0:_0x5b4f55[_0x369d('0x1c')];var _0x4494b3=_0x29c1fe?_0x2c1a4a[_0x369d('0x1f')]:_0x5b4f55['offset']+_0x5b4f55[_0x369d('0x1d')];var _0x24dfff;if(_0x4494b3>=_0x4ea6c2){_0x4494b3=_0x4ea6c2;_0x24dfff=0xc8;}else{_0x24dfff=0xce;}_0x389c43[_0x369d('0x19')](_0x24dfff);return _0x389c43[_0x369d('0x20')](_0x369d('0x21'),_0x597b67+'-'+_0x4494b3+'/'+_0x4ea6c2)['json'](_0x2c1a4a);}return null;};}function patchUpdates(_0x5c9fdd){return function(_0x448e6e){try{jsonpatch[_0x369d('0x22')](_0x448e6e,_0x5c9fdd,!![]);}catch(_0x11ac1d){return BPromise[_0x369d('0x23')](_0x11ac1d);}return _0x448e6e[_0x369d('0x24')]();};}function saveUpdates(_0x15fbef,_0x1b262a){return function(_0x54a42e){if(_0x54a42e){return _0x54a42e['update'](_0x15fbef)[_0x369d('0x25')](function(_0xed16e){return _0xed16e;});}return null;};}function removeEntity(_0xf7bc3a,_0xcae58){return function(_0x30e7c5){if(_0x30e7c5){return _0x30e7c5[_0x369d('0x26')]()[_0x369d('0x25')](function(){_0xf7bc3a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x16145e,_0x46de2b){return function(_0x15cd81){if(!_0x15cd81){_0x16145e[_0x369d('0x18')](0x194);}return _0x15cd81;};}function handleError(_0x8aa521,_0x41e0cf){_0x41e0cf=_0x41e0cf||0x1f4;return function(_0x8090b0){logger['error'](_0x8090b0[_0x369d('0x27')]);if(_0x8090b0[_0x369d('0x28')]){delete _0x8090b0[_0x369d('0x28')];}_0x8aa521[_0x369d('0x19')](_0x41e0cf)[_0x369d('0x29')](_0x8090b0);};}exports[_0x369d('0x2a')]=function(_0x3d1ce0,_0x4d42ea){var _0x157291={},_0x56efb1={},_0x57b94c={'count':0x0,'rows':[]};var _0x38feda=_[_0x369d('0x2b')](db['ZendeskAccount'][_0x369d('0x2c')],function(_0x5a14ce){return{'name':_0x5a14ce[_0x369d('0x2d')],'type':_0x5a14ce[_0x369d('0x2e')][_0x369d('0x2f')]};});_0x56efb1[_0x369d('0x30')]=_[_0x369d('0x2b')](_0x38feda,_0x369d('0x28'));_0x56efb1[_0x369d('0x31')]=_['keys'](_0x3d1ce0[_0x369d('0x31')]);_0x56efb1[_0x369d('0x32')]=_[_0x369d('0x33')](_0x56efb1[_0x369d('0x30')],_0x56efb1[_0x369d('0x31')]);_0x157291[_0x369d('0x34')]=_[_0x369d('0x33')](_0x56efb1[_0x369d('0x30')],qs['fields'](_0x3d1ce0[_0x369d('0x31')][_0x369d('0x35')]));_0x157291[_0x369d('0x34')]=_0x157291[_0x369d('0x34')][_0x369d('0x36')]?_0x157291['attributes']:_0x56efb1[_0x369d('0x30')];if(!_0x3d1ce0[_0x369d('0x31')][_0x369d('0x37')](_0x369d('0x38'))){_0x157291[_0x369d('0x1d')]=qs[_0x369d('0x1d')](_0x3d1ce0['query'][_0x369d('0x1d')]);_0x157291[_0x369d('0x1c')]=qs[_0x369d('0x1c')](_0x3d1ce0[_0x369d('0x31')][_0x369d('0x1c')]);}_0x157291[_0x369d('0x39')]=qs[_0x369d('0x3a')](_0x3d1ce0[_0x369d('0x31')][_0x369d('0x3a')]);_0x157291[_0x369d('0x3b')]=qs[_0x369d('0x32')](_[_0x369d('0x3c')](_0x3d1ce0[_0x369d('0x31')],_0x56efb1[_0x369d('0x32')]),_0x38feda);if(_0x3d1ce0[_0x369d('0x31')][_0x369d('0x3d')]){_0x157291[_0x369d('0x3b')]=_[_0x369d('0x3e')](_0x157291[_0x369d('0x3b')],{'$or':_[_0x369d('0x2b')](_0x38feda,function(_0x10c5b6){if(_0x10c5b6[_0x369d('0x2e')]!==_0x369d('0x3f')){var _0xd58366={};_0xd58366[_0x10c5b6['name']]={'$like':'%'+_0x3d1ce0['query'][_0x369d('0x3d')]+'%'};return _0xd58366;}})});}_0x157291=_[_0x369d('0x3e')]({},_0x157291,_0x3d1ce0[_0x369d('0x40')]);var _0x401bc7={'where':_0x157291[_0x369d('0x3b')]};return db[_0x369d('0x41')][_0x369d('0x1f')](_0x401bc7)[_0x369d('0x25')](function(_0x46c940){_0x57b94c['count']=_0x46c940;if(_0x3d1ce0[_0x369d('0x31')][_0x369d('0x42')]){_0x157291[_0x369d('0x43')]=[{'all':!![]}];}return db[_0x369d('0x41')][_0x369d('0x44')](_0x157291);})[_0x369d('0x25')](function(_0x28803c){_0x57b94c[_0x369d('0x45')]=_0x28803c;return _0x57b94c;})['then'](respondWithFilteredResult(_0x4d42ea,_0x157291))['catch'](handleError(_0x4d42ea,null));};exports[_0x369d('0x46')]=function(_0x3222ce,_0x30909a){var _0x4dad71={'raw':![],'where':{'id':_0x3222ce['params']['id']}},_0x4d07ac={};_0x4d07ac[_0x369d('0x30')]=_[_0x369d('0x47')](db['ZendeskAccount'][_0x369d('0x2c')]);_0x4d07ac[_0x369d('0x31')]=_[_0x369d('0x47')](_0x3222ce[_0x369d('0x31')]);_0x4d07ac['filters']=_[_0x369d('0x33')](_0x4d07ac['model'],_0x4d07ac[_0x369d('0x31')]);_0x4dad71['attributes']=_[_0x369d('0x33')](_0x4d07ac[_0x369d('0x30')],qs[_0x369d('0x35')](_0x3222ce['query']['fields']));_0x4dad71[_0x369d('0x34')]=_0x4dad71[_0x369d('0x34')][_0x369d('0x36')]?_0x4dad71['attributes']:_0x4d07ac[_0x369d('0x30')];if(_0x3222ce[_0x369d('0x31')][_0x369d('0x42')]){_0x4dad71[_0x369d('0x43')]=[{'all':!![]}];}_0x4dad71=_[_0x369d('0x3e')]({},_0x4dad71,_0x3222ce[_0x369d('0x40')]);return db[_0x369d('0x41')][_0x369d('0x48')](_0x4dad71)[_0x369d('0x25')](handleEntityNotFound(_0x30909a,null))['then'](respondWithResult(_0x30909a,null))[_0x369d('0x49')](handleError(_0x30909a,null));};exports[_0x369d('0x4a')]=function(_0xcc1465,_0x257c3d){return db[_0x369d('0x41')][_0x369d('0x4a')](_0xcc1465['body'],{})[_0x369d('0x25')](respondWithResult(_0x257c3d,0xc9))[_0x369d('0x49')](handleError(_0x257c3d,null));};exports[_0x369d('0x4b')]=function(_0x44a357,_0x1b04d9){if(_0x44a357[_0x369d('0x4c')]['id']){delete _0x44a357[_0x369d('0x4c')]['id'];}return db[_0x369d('0x41')][_0x369d('0x48')]({'where':{'id':_0x44a357[_0x369d('0x4d')]['id']}})[_0x369d('0x25')](handleEntityNotFound(_0x1b04d9,null))[_0x369d('0x25')](saveUpdates(_0x44a357['body'],null))[_0x369d('0x25')](respondWithResult(_0x1b04d9,null))[_0x369d('0x49')](handleError(_0x1b04d9,null));};exports[_0x369d('0x26')]=function(_0x85edd6,_0x648a0d){return db['ZendeskAccount'][_0x369d('0x48')]({'where':{'id':_0x85edd6['params']['id']}})[_0x369d('0x25')](handleEntityNotFound(_0x648a0d,null))[_0x369d('0x25')](removeEntity(_0x648a0d,null))[_0x369d('0x49')](handleError(_0x648a0d,null));};exports[_0x369d('0x4e')]=function(_0x46c62c,_0x1bd31c,_0x22e2d4){var _0x418cab={};var _0x1cdeca={};var _0x9f1544;var _0x4d582a;return db['ZendeskAccount'][_0x369d('0x4f')]({'where':{'id':_0x46c62c[_0x369d('0x4d')]['id']}})[_0x369d('0x25')](handleEntityNotFound(_0x1bd31c,null))[_0x369d('0x25')](function(_0x347df4){if(_0x347df4){_0x9f1544=_0x347df4;_0x1cdeca['model']=_['keys'](db[_0x369d('0x50')][_0x369d('0x2c')]);_0x1cdeca['query']=_[_0x369d('0x47')](_0x46c62c['query']);_0x1cdeca[_0x369d('0x32')]=_[_0x369d('0x33')](_0x1cdeca[_0x369d('0x30')],_0x1cdeca['query']);_0x418cab[_0x369d('0x34')]=_[_0x369d('0x33')](_0x1cdeca[_0x369d('0x30')],qs[_0x369d('0x35')](_0x46c62c['query']['fields']));_0x418cab[_0x369d('0x34')]=_0x418cab[_0x369d('0x34')][_0x369d('0x36')]?_0x418cab['attributes']:_0x1cdeca[_0x369d('0x30')];_0x418cab[_0x369d('0x39')]=qs[_0x369d('0x3a')](_0x46c62c['query']['sort']);_0x418cab[_0x369d('0x3b')]=qs[_0x369d('0x32')](_[_0x369d('0x3c')](_0x46c62c[_0x369d('0x31')],_0x1cdeca['filters']));if(_0x46c62c[_0x369d('0x31')][_0x369d('0x3d')]){_0x418cab[_0x369d('0x3b')]=_[_0x369d('0x3e')](_0x418cab[_0x369d('0x3b')],{'$or':_['map'](_0x418cab[_0x369d('0x34')],function(_0x304a9e){var _0x28b752={};_0x28b752[_0x304a9e]={'$like':'%'+_0x46c62c['query'][_0x369d('0x3d')]+'%'};return _0x28b752;})});}_0x418cab=_['merge']({},_0x418cab,_0x46c62c[_0x369d('0x40')]);return _0x9f1544['getConfigurations'](_0x418cab);}})['then'](function(_0x5f440e){if(_0x5f440e){_0x4d582a=_0x5f440e['length'];if(!_0x46c62c[_0x369d('0x31')]['hasOwnProperty'](_0x369d('0x38'))){_0x418cab['limit']=qs[_0x369d('0x1d')](_0x46c62c[_0x369d('0x31')][_0x369d('0x1d')]);_0x418cab['offset']=qs[_0x369d('0x1c')](_0x46c62c[_0x369d('0x31')][_0x369d('0x1c')]);}return _0x9f1544[_0x369d('0x4e')](_0x418cab);}})[_0x369d('0x25')](function(_0xe63e0f){if(_0xe63e0f){return _0xe63e0f?{'count':_0x4d582a,'rows':_0xe63e0f}:null;}})['then'](respondWithResult(_0x1bd31c,null))[_0x369d('0x49')](handleError(_0x1bd31c,null));};exports['addConfiguration']=function(_0x5706be,_0x56c98e,_0x36e990){if(_0x5706be[_0x369d('0x4c')]['id']){delete _0x5706be[_0x369d('0x4c')]['id'];}return db[_0x369d('0x41')][_0x369d('0x4f')]({'where':{'id':_0x5706be[_0x369d('0x4d')]['id']}})[_0x369d('0x25')](handleEntityNotFound(_0x56c98e,null))[_0x369d('0x25')](function(_0x1c9683){if(_0x1c9683){_0x5706be[_0x369d('0x4c')][_0x369d('0x51')]=_0x1c9683['id'];_0x5706be[_0x369d('0x4c')][_0x369d('0x52')]=integrations[_0x369d('0x53')](_0x5706be[_0x369d('0x4c')][_0x369d('0x54')],_0x5706be['body'][_0x369d('0x2e')]);_0x5706be['body'][_0x369d('0x55')]=integrations[_0x369d('0x56')](_0x5706be[_0x369d('0x4c')][_0x369d('0x54')],_0x5706be[_0x369d('0x4c')]['type']);return db[_0x369d('0x50')]['create'](_0x5706be['body'],{'include':[{'model':db[_0x369d('0x57')],'as':_0x369d('0x52')},{'model':db[_0x369d('0x57')],'as':_0x369d('0x55')}]});}return null;})[_0x369d('0x25')](respondWithResult(_0x56c98e,null))[_0x369d('0x49')](handleError(_0x56c98e,null));};exports[_0x369d('0x58')]=function(_0x11ac7d,_0x55a811,_0x461782){var _0x24e70d='';return db['ZendeskAccount'][_0x369d('0x4f')]({'where':{'id':_0x11ac7d[_0x369d('0x4d')]['id']},'attributes':['id',_0x369d('0x59'),'password',_0x369d('0x5a'),'authType',_0x369d('0x5b')]})[_0x369d('0x25')](handleEntityNotFound(_0x55a811,null))[_0x369d('0x25')](function(_0x369199){if(_0x369199){_0x24e70d=_0x369199[_0x369d('0x5b')];var _0x1a9a01=_0x24e70d[_0x369d('0x5c')](-0x1);if(_0x1a9a01==='/'){_0x24e70d=_0x24e70d['substring'](0x0,_0x24e70d[_0x369d('0x5d')](_0x1a9a01));}var _0x7e8d08={'method':'GET','uri':util[_0x369d('0x5e')]('%s/%s',_0x24e70d,_0x369d('0x5f')),'json':!![]};switch(_0x369199[_0x369d('0x60')]){case _0x369d('0x61'):_0x7e8d08['headers']={'Authorization':util[_0x369d('0x5e')](_0x369d('0x62'),new Buffer(util['format'](_0x369d('0x63'),_0x369199[_0x369d('0x59')],_0x369199[_0x369d('0x61')]))['toString'](_0x369d('0x64')))};break;case _0x369d('0x5a'):_0x7e8d08[_0x369d('0x65')]={'Authorization':util[_0x369d('0x5e')](_0x369d('0x62'),new Buffer(util['format'](_0x369d('0x66'),_0x369199[_0x369d('0x59')],_0x369199[_0x369d('0x5a')]))[_0x369d('0x67')](_0x369d('0x64')))};break;default:throw new db['Sequelize']['ValidationError'](_0x369d('0x68'));}return rp(_0x7e8d08);}})[_0x369d('0x25')](function(_0x2307fc){if(_0x2307fc){var _0x11b348=[_0x369d('0x69'),_0x369d('0x6a'),'group',_0x369d('0x6b')];_[_0x369d('0x6c')](_0x2307fc['ticket_fields'],function(_0x6c8235){return _0x11b348['includes'](_0x6c8235[_0x369d('0x2e')]);});return{'count':_0x2307fc['ticket_fields'][_0x369d('0x36')],'rows':_[_0x369d('0x2b')](_0x2307fc['ticket_fields'],function(_0x4148a9){return{'id':_0x4148a9['id'],'name':_0x4148a9['position']>0x7?_0x4148a9[_0x369d('0x6d')]:_0x4148a9['type'],'custom':_0x4148a9['position']>0x7?!![]:![],'options':_0x4148a9[_0x369d('0x6e')]?_0x4148a9[_0x369d('0x6e')]:_0x4148a9[_0x369d('0x6f')]?_0x4148a9[_0x369d('0x6f')]:[]};})};}})[_0x369d('0x25')](respondWithResult(_0x55a811,null))['catch'](function(_0x28ec32){var _0xaff7cc=_0x11ac7d[_0x369d('0x31')][_0x369d('0x70')]?0x1f4:_0x28ec32[_0x369d('0x71')]||0x1f4;logger[_0x369d('0x72')](_0x369d('0x73'),_0x369d('0x58'),_0xaff7cc,JSON[_0x369d('0x74')](_0x28ec32));delete _0x28ec32['name'];if(_0xaff7cc===0x191){_0xaff7cc=0x190;}_0x55a811[_0x369d('0x19')](_0xaff7cc)[_0x369d('0x29')](_0x11ac7d[_0x369d('0x31')][_0x369d('0x70')]?{'message':'Wrong\x20credentials','statusCode':_0x28ec32[_0x369d('0x71')]}:_0x28ec32);});};
\ No newline at end of file
index 8a23a05..f19df78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffca=['lodash','util','../../config/logger','moment','bluebird','request-promise','../../components/integrations/configuration','exports','ZendeskAccount','int_zendesk_accounts'];(function(_0x32fe49,_0xd229c7){var _0x5492a1=function(_0x4e7447){while(--_0x4e7447){_0x32fe49['push'](_0x32fe49['shift']());}};_0x5492a1(++_0xd229c7);}(_0xffca,0x78));var _0xaffc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xffca[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xaffc('0x0'));var util=require(_0xaffc('0x1'));var logger=require(_0xaffc('0x2'))('api');var moment=require(_0xaffc('0x3'));var BPromise=require(_0xaffc('0x4'));var rp=require(_0xaffc('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0xaffc('0x6'));module[_0xaffc('0x7')]=function(_0x2d141c,_0x42bc3c){return _0x2d141c['define'](_0xaffc('0x8'),attributes,{'tableName':_0xaffc('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9a37=['../../config/environment','../../components/integrations/configuration','ZendeskAccount','int_zendesk_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x45b2ed,_0xc271d9){var _0x4797fb=function(_0x58fed5){while(--_0x58fed5){_0x45b2ed['push'](_0x45b2ed['shift']());}};_0x4797fb(++_0xc271d9);}(_0x9a37,0x17d));var _0x79a3=function(_0x1c4409,_0x3b2e8f){_0x1c4409=_0x1c4409-0x0;var _0x356d8f=_0x9a37[_0x1c4409];return _0x356d8f;};'use strict';var _=require(_0x79a3('0x0'));var util=require(_0x79a3('0x1'));var logger=require(_0x79a3('0x2'))(_0x79a3('0x3'));var moment=require(_0x79a3('0x4'));var BPromise=require(_0x79a3('0x5'));var rp=require(_0x79a3('0x6'));var fs=require('fs');var path=require(_0x79a3('0x7'));var rimraf=require(_0x79a3('0x8'));var config=require(_0x79a3('0x9'));var attributes=require('./intZendeskAccount.attributes');var integrations=require(_0x79a3('0xa'));module['exports']=function(_0xb857de,_0x460ad2){return _0xb857de['define'](_0x79a3('0xb'),attributes,{'tableName':_0x79a3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6b7af82..5fe9afd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd4a=['bluebird','ioredis','../../config/logger','rpc','../../config/environment','http','then','ZendeskAccount,\x20%s,\x20%s','request\x20sent','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetZendeskAccount','ZendeskAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','ShowZendeskAccount','find','lodash','util','moment'];(function(_0x59f1de,_0x461fdf){var _0x24e927=function(_0x1bad9b){while(--_0x1bad9b){_0x59f1de['push'](_0x59f1de['shift']());}};_0x24e927(++_0x461fdf);}(_0xbd4a,0xeb));var _0xabd4=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xbd4a[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0xabd4('0x0'));var util=require(_0xabd4('0x1'));var moment=require(_0xabd4('0x2'));var BPromise=require(_0xabd4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xabd4('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xabd4('0x5'))(_0xabd4('0x6'));var config=require(_0xabd4('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xabd4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x117dd1,_0x1b7e31,_0x23dbac){return new BPromise(function(_0x494a4f,_0x1e62c8){return client['request'](_0x117dd1,_0x23dbac)[_0xabd4('0x9')](function(_0x2684de){logger['info'](_0xabd4('0xa'),_0x1b7e31,_0xabd4('0xb'));logger['debug'](_0xabd4('0xc'),_0x1b7e31,_0xabd4('0xb'),JSON[_0xabd4('0xd')](_0x2684de));if(_0x2684de['error']){if(_0x2684de[_0xabd4('0xe')][_0xabd4('0xf')]===0x1f4){logger['error']('ZendeskAccount,\x20%s,\x20%s',_0x1b7e31,_0x2684de[_0xabd4('0xe')]['message']);return _0x1e62c8(_0x2684de[_0xabd4('0xe')][_0xabd4('0x10')]);}logger[_0xabd4('0xe')](_0xabd4('0xa'),_0x1b7e31,_0x2684de['error'][_0xabd4('0x10')]);return _0x494a4f(_0x2684de[_0xabd4('0xe')][_0xabd4('0x10')]);}else{logger[_0xabd4('0x11')](_0xabd4('0xa'),_0x1b7e31,_0xabd4('0xb'));_0x494a4f(_0x2684de[_0xabd4('0x12')][_0xabd4('0x10')]);}})[_0xabd4('0x13')](function(_0x448542){logger[_0xabd4('0xe')](_0xabd4('0xa'),_0x1b7e31,_0x448542);_0x1e62c8(_0x448542);});});}exports[_0xabd4('0x14')]=function(_0x4b4eea){var _0x2c2462=this;return new Promise(function(_0x33b6c5,_0x287f3c){return db[_0xabd4('0x15')][_0xabd4('0x16')]({'raw':_0x4b4eea[_0xabd4('0x17')]?_0x4b4eea[_0xabd4('0x17')][_0xabd4('0x18')]===undefined?!![]:![]:!![],'where':_0x4b4eea[_0xabd4('0x17')]?_0x4b4eea[_0xabd4('0x17')][_0xabd4('0x19')]||null:null,'attributes':_0x4b4eea[_0xabd4('0x17')]?_0x4b4eea['options'][_0xabd4('0x1a')]||null:null,'limit':_0x4b4eea['options']?_0x4b4eea[_0xabd4('0x17')][_0xabd4('0x1b')]||null:null,'include':_0x4b4eea['options']?_0x4b4eea['options'][_0xabd4('0x1c')]?_[_0xabd4('0x1d')](_0x4b4eea[_0xabd4('0x17')]['include'],function(_0x78fc65){return{'model':db[_0x78fc65['model']],'as':_0x78fc65['as'],'attributes':_0x78fc65[_0xabd4('0x1a')],'include':_0x78fc65[_0xabd4('0x1c')]?_[_0xabd4('0x1d')](_0x78fc65[_0xabd4('0x1c')],function(_0x49c6da){return{'model':db[_0x49c6da[_0xabd4('0x1e')]],'as':_0x49c6da['as'],'attributes':_0x49c6da[_0xabd4('0x1a')],'include':_0x49c6da['include']?_[_0xabd4('0x1d')](_0x49c6da[_0xabd4('0x1c')],function(_0xcb56e7){return{'model':db[_0xcb56e7['model']],'as':_0xcb56e7['as'],'attributes':_0xcb56e7[_0xabd4('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xabd4('0x9')](function(_0x21ca4f){logger[_0xabd4('0x11')](_0xabd4('0x14'),_0x4b4eea);logger[_0xabd4('0x1f')](_0xabd4('0x14'),_0x4b4eea,JSON['stringify'](_0x21ca4f));_0x33b6c5(_0x21ca4f);})[_0xabd4('0x13')](function(_0x19697b){logger['error'](_0xabd4('0x14'),_0x19697b[_0xabd4('0x10')],_0x4b4eea);_0x287f3c(_0x2c2462['error'](0x1f4,_0x19697b[_0xabd4('0x10')]));});});};exports[_0xabd4('0x20')]=function(_0x1baf2e){var _0xb936d=this;return new Promise(function(_0x1e52ef,_0x1c3eaa){return db[_0xabd4('0x15')][_0xabd4('0x21')]({'raw':_0x1baf2e[_0xabd4('0x17')]?_0x1baf2e[_0xabd4('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x1baf2e['options']?_0x1baf2e[_0xabd4('0x17')][_0xabd4('0x19')]||null:null,'attributes':_0x1baf2e[_0xabd4('0x17')]?_0x1baf2e['options'][_0xabd4('0x1a')]||null:null,'include':_0x1baf2e[_0xabd4('0x17')]?_0x1baf2e['options'][_0xabd4('0x1c')]?_[_0xabd4('0x1d')](_0x1baf2e['options'][_0xabd4('0x1c')],function(_0x5aff77){return{'model':db[_0x5aff77[_0xabd4('0x1e')]],'as':_0x5aff77['as'],'attributes':_0x5aff77[_0xabd4('0x1a')],'include':_0x5aff77[_0xabd4('0x1c')]?_[_0xabd4('0x1d')](_0x5aff77[_0xabd4('0x1c')],function(_0x231dba){return{'model':db[_0x231dba['model']],'as':_0x231dba['as'],'attributes':_0x231dba[_0xabd4('0x1a')],'include':_0x231dba[_0xabd4('0x1c')]?_['map'](_0x231dba[_0xabd4('0x1c')],function(_0x3e7831){return{'model':db[_0x3e7831[_0xabd4('0x1e')]],'as':_0x3e7831['as'],'attributes':_0x3e7831[_0xabd4('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xabd4('0x9')](function(_0x389bee){logger[_0xabd4('0x11')](_0xabd4('0x20'),_0x1baf2e);logger[_0xabd4('0x1f')](_0xabd4('0x20'),_0x1baf2e,JSON['stringify'](_0x389bee));_0x1e52ef(_0x389bee);})[_0xabd4('0x13')](function(_0x2fc2b2){logger[_0xabd4('0xe')](_0xabd4('0x20'),_0x2fc2b2[_0xabd4('0x10')],_0x1baf2e);_0x1c3eaa(_0xb936d[_0xabd4('0xe')](0x1f4,_0x2fc2b2[_0xabd4('0x10')]));});});};
\ No newline at end of file
+var _0xdb69=['message','result','catch','GetZendeskAccount','findAll','options','raw','where','attributes','limit','include','map','model','ShowZendeskAccount','find','debug','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x11d829,_0x48a146){var _0x5e0817=function(_0xe1897){while(--_0xe1897){_0x11d829['push'](_0x11d829['shift']());}};_0x5e0817(++_0x48a146);}(_0xdb69,0xba));var _0x9db6=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xdb69[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x9db6('0x0'));var util=require(_0x9db6('0x1'));var moment=require(_0x9db6('0x2'));var BPromise=require(_0x9db6('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9db6('0x4'))['db'];var utils=require(_0x9db6('0x5'));var logger=require(_0x9db6('0x6'))('rpc');var config=require(_0x9db6('0x7'));var jayson=require(_0x9db6('0x8'));var client=jayson[_0x9db6('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0xbb533,_0xc85173,_0x10feb6){return new BPromise(function(_0x2d83ba,_0xe7cca5){return client[_0x9db6('0xa')](_0xbb533,_0x10feb6)[_0x9db6('0xb')](function(_0x173e6f){logger[_0x9db6('0xc')](_0x9db6('0xd'),_0xc85173,_0x9db6('0xe'));logger['debug']('ZendeskAccount,\x20%s,\x20%s,\x20%s',_0xc85173,_0x9db6('0xe'),JSON[_0x9db6('0xf')](_0x173e6f));if(_0x173e6f['error']){if(_0x173e6f[_0x9db6('0x10')][_0x9db6('0x11')]===0x1f4){logger[_0x9db6('0x10')](_0x9db6('0xd'),_0xc85173,_0x173e6f[_0x9db6('0x10')]['message']);return _0xe7cca5(_0x173e6f[_0x9db6('0x10')][_0x9db6('0x12')]);}logger['error'](_0x9db6('0xd'),_0xc85173,_0x173e6f['error'][_0x9db6('0x12')]);return _0x2d83ba(_0x173e6f[_0x9db6('0x10')][_0x9db6('0x12')]);}else{logger[_0x9db6('0xc')](_0x9db6('0xd'),_0xc85173,'request\x20sent');_0x2d83ba(_0x173e6f[_0x9db6('0x13')][_0x9db6('0x12')]);}})[_0x9db6('0x14')](function(_0x4d8f43){logger[_0x9db6('0x10')]('ZendeskAccount,\x20%s,\x20%s',_0xc85173,_0x4d8f43);_0xe7cca5(_0x4d8f43);});});}exports[_0x9db6('0x15')]=function(_0x4429af){var _0x473373=this;return new Promise(function(_0x3198f2,_0x552bd2){return db['ZendeskAccount'][_0x9db6('0x16')]({'raw':_0x4429af[_0x9db6('0x17')]?_0x4429af[_0x9db6('0x17')][_0x9db6('0x18')]===undefined?!![]:![]:!![],'where':_0x4429af[_0x9db6('0x17')]?_0x4429af[_0x9db6('0x17')][_0x9db6('0x19')]||null:null,'attributes':_0x4429af['options']?_0x4429af[_0x9db6('0x17')][_0x9db6('0x1a')]||null:null,'limit':_0x4429af[_0x9db6('0x17')]?_0x4429af[_0x9db6('0x17')][_0x9db6('0x1b')]||null:null,'include':_0x4429af[_0x9db6('0x17')]?_0x4429af[_0x9db6('0x17')][_0x9db6('0x1c')]?_[_0x9db6('0x1d')](_0x4429af['options'][_0x9db6('0x1c')],function(_0x3df5f8){return{'model':db[_0x3df5f8[_0x9db6('0x1e')]],'as':_0x3df5f8['as'],'attributes':_0x3df5f8['attributes'],'include':_0x3df5f8[_0x9db6('0x1c')]?_['map'](_0x3df5f8[_0x9db6('0x1c')],function(_0x23cc73){return{'model':db[_0x23cc73[_0x9db6('0x1e')]],'as':_0x23cc73['as'],'attributes':_0x23cc73['attributes'],'include':_0x23cc73[_0x9db6('0x1c')]?_['map'](_0x23cc73[_0x9db6('0x1c')],function(_0x2d45ce){return{'model':db[_0x2d45ce[_0x9db6('0x1e')]],'as':_0x2d45ce['as'],'attributes':_0x2d45ce[_0x9db6('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x9db6('0xb')](function(_0x47f4ae){logger[_0x9db6('0xc')](_0x9db6('0x15'),_0x4429af);logger['debug'](_0x9db6('0x15'),_0x4429af,JSON[_0x9db6('0xf')](_0x47f4ae));_0x3198f2(_0x47f4ae);})['catch'](function(_0x251e09){logger[_0x9db6('0x10')](_0x9db6('0x15'),_0x251e09['message'],_0x4429af);_0x552bd2(_0x473373[_0x9db6('0x10')](0x1f4,_0x251e09['message']));});});};exports[_0x9db6('0x1f')]=function(_0x490f59){var _0x5cc2c1=this;return new Promise(function(_0x1e5b48,_0x4a29a8){return db['ZendeskAccount'][_0x9db6('0x20')]({'raw':_0x490f59['options']?_0x490f59[_0x9db6('0x17')][_0x9db6('0x18')]===undefined?!![]:![]:!![],'where':_0x490f59[_0x9db6('0x17')]?_0x490f59[_0x9db6('0x17')][_0x9db6('0x19')]||null:null,'attributes':_0x490f59[_0x9db6('0x17')]?_0x490f59['options'][_0x9db6('0x1a')]||null:null,'include':_0x490f59[_0x9db6('0x17')]?_0x490f59[_0x9db6('0x17')][_0x9db6('0x1c')]?_['map'](_0x490f59[_0x9db6('0x17')][_0x9db6('0x1c')],function(_0x527869){return{'model':db[_0x527869[_0x9db6('0x1e')]],'as':_0x527869['as'],'attributes':_0x527869[_0x9db6('0x1a')],'include':_0x527869[_0x9db6('0x1c')]?_['map'](_0x527869[_0x9db6('0x1c')],function(_0x12417d){return{'model':db[_0x12417d[_0x9db6('0x1e')]],'as':_0x12417d['as'],'attributes':_0x12417d[_0x9db6('0x1a')],'include':_0x12417d[_0x9db6('0x1c')]?_['map'](_0x12417d[_0x9db6('0x1c')],function(_0x28d529){return{'model':db[_0x28d529[_0x9db6('0x1e')]],'as':_0x28d529['as'],'attributes':_0x28d529[_0x9db6('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x558aee){logger['info'](_0x9db6('0x1f'),_0x490f59);logger[_0x9db6('0x21')]('ShowZendeskAccount',_0x490f59,JSON[_0x9db6('0xf')](_0x558aee));_0x1e5b48(_0x558aee);})[_0x9db6('0x14')](function(_0x25d5eb){logger[_0x9db6('0x10')](_0x9db6('0x1f'),_0x25d5eb[_0x9db6('0x12')],_0x490f59);_0x4a29a8(_0x5cc2c1[_0x9db6('0x10')](0x1f4,_0x25d5eb['message']));});});};
\ No newline at end of file
index 2db5664..44967bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['isAuthenticated','index','/:id','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','getTags','post','create','/:id/tags','setTags','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get'];(function(_0x56e2ad,_0x4f99c9){var _0x1561d6=function(_0x15f86d){while(--_0x15f86d){_0x56e2ad['push'](_0x56e2ad['shift']());}};_0x1561d6(++_0x4f99c9);}(_0xbaf0,0x12a));var _0x0baf=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xbaf0[_0x6131cd];return _0x47e916;};'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('0x9')]('/:id/fields',auth[_0x0baf('0xa')](),controller[_0x0baf('0xd')]);router[_0x0baf('0x9')](_0x0baf('0xe'),auth[_0x0baf('0xa')](),controller[_0x0baf('0xf')]);router[_0x0baf('0x9')](_0x0baf('0x10'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x11')]);router[_0x0baf('0x9')]('/:id/tags',auth['isAuthenticated'](),controller[_0x0baf('0x12')]);router[_0x0baf('0x13')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0x14')]);router['post'](_0x0baf('0x15'),auth['isAuthenticated'](),controller[_0x0baf('0x16')]);router[_0x0baf('0x17')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x18')]);router[_0x0baf('0x19')]('/:id',auth['isAuthenticated'](),controller[_0x0baf('0x1a')]);module[_0x0baf('0x1b')]=router;
\ No newline at end of file
+var _0x757a=['index','isAuthenticated','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','post','setTags','put','/:id','update','delete','destroy','exports','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZendeskConfiguration.controller','get'];(function(_0x4a16de,_0xa9590f){var _0x5c872b=function(_0x1adf2d){while(--_0x1adf2d){_0x4a16de['push'](_0x4a16de['shift']());}};_0x5c872b(++_0xa9590f);}(_0x757a,0xde));var _0xa757=function(_0xf5048,_0xa03364){_0xf5048=_0xf5048-0x0;var _0x282047=_0x757a[_0xf5048];return _0x282047;};'use strict';var multer=require('multer');var util=require(_0xa757('0x0'));var path=require(_0xa757('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xa757('0x2'));var auth=require(_0xa757('0x3'));var interaction=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var controller=require(_0xa757('0x6'));router[_0xa757('0x7')]('/',auth['isAuthenticated'](),controller[_0xa757('0x8')]);router[_0xa757('0x7')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0xa')]);router[_0xa757('0x7')](_0xa757('0xb'),auth[_0xa757('0x9')](),controller['getFields']);router[_0xa757('0x7')](_0xa757('0xc'),auth[_0xa757('0x9')](),controller[_0xa757('0xd')]);router[_0xa757('0x7')](_0xa757('0xe'),auth[_0xa757('0x9')](),controller['getDescriptions']);router['get']('/:id/tags',auth['isAuthenticated'](),controller['getTags']);router[_0xa757('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xa757('0xf')]('/:id/tags',auth['isAuthenticated'](),controller[_0xa757('0x10')]);router[_0xa757('0x11')](_0xa757('0x12'),auth[_0xa757('0x9')](),controller[_0xa757('0x13')]);router[_0xa757('0x14')](_0xa757('0x12'),auth[_0xa757('0x9')](),controller[_0xa757('0x15')]);module[_0xa757('0x16')]=router;
\ No newline at end of file
index f93d633..5e5fc51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20a0=['STRING','exports'];(function(_0x1fc53b,_0x427327){var _0x452762=function(_0x3a31f0){while(--_0x3a31f0){_0x1fc53b['push'](_0x1fc53b['shift']());}};_0x452762(++_0x427327);}(_0x20a0,0x1ef));var _0x020a=function(_0x59c8f2,_0x22cd5d){_0x59c8f2=_0x59c8f2-0x0;var _0x576a46=_0x20a0[_0x59c8f2];return _0x576a46;};'use strict';var Sequelize=require('sequelize');module[_0x020a('0x0')]={'name':{'type':Sequelize[_0x020a('0x1')]},'description':{'type':Sequelize[_0x020a('0x1')]}};
\ No newline at end of file
+var _0x7222=['sequelize','exports','STRING'];(function(_0x54a2e4,_0x1ff92c){var _0x4742d0=function(_0x147a6f){while(--_0x147a6f){_0x54a2e4['push'](_0x54a2e4['shift']());}};_0x4742d0(++_0x1ff92c);}(_0x7222,0x189));var _0x2722=function(_0x5e1855,_0x17161e){_0x5e1855=_0x5e1855-0x0;var _0x4faf68=_0x7222[_0x5e1855];return _0x4faf68;};'use strict';var Sequelize=require(_0x2722('0x0'));module[_0x2722('0x1')]={'name':{'type':Sequelize[_0x2722('0x2')]},'description':{'type':Sequelize[_0x2722('0x2')]}};
\ No newline at end of file
index 33c42a3..99bd4e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6225=['ZendeskConfiguration','intersection','find','create','body','update','getFields','ZendeskField','nolimit','findOne','getSubjects','getDescriptions','getTags','Tag','setTags','ids','rimraf','zip-dir','request-promise','moment','bluebird','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','end','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params'];(function(_0x246119,_0x30a4f3){var _0x59c74f=function(_0x313fb5){while(--_0x313fb5){_0x246119['push'](_0x246119['shift']());}};_0x59c74f(++_0x30a4f3);}(_0x6225,0x109));var _0x5622=function(_0x5f5c59,_0x169b7c){_0x5f5c59=_0x5f5c59-0x0;var _0x5a5f48=_0x6225[_0x5f5c59];return _0x5a5f48;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5622('0x0'));var zipdir=require(_0x5622('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5622('0x2'));var moment=require(_0x5622('0x3'));var BPromise=require(_0x5622('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x5622('0x5'));var sox=require(_0x5622('0x6'));var csv=require(_0x5622('0x7'));var ejs=require(_0x5622('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5622('0x9'));var squel=require(_0x5622('0xa'));var crypto=require(_0x5622('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x5622('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x5622('0xd'));var Redis=require('ioredis');var authService=require(_0x5622('0xe'));var qs=require(_0x5622('0xf'));var as=require(_0x5622('0x10'));var hardwareService=require(_0x5622('0x11'));var logger=require('../../config/logger')(_0x5622('0x12'));var utils=require(_0x5622('0x13'));var config=require(_0x5622('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x5622('0x15'))['db'];function respondWithStatusCode(_0xec9a57,_0x2fa488){_0x2fa488=_0x2fa488||0xcc;return function(_0x3e4f3e){if(_0x3e4f3e){return _0xec9a57[_0x5622('0x16')](_0x2fa488);}return _0xec9a57[_0x5622('0x17')](_0x2fa488)['end']();};}function respondWithResult(_0x263f60,_0x46dac7){_0x46dac7=_0x46dac7||0xc8;return function(_0x16619f){if(_0x16619f){return _0x263f60['status'](_0x46dac7)[_0x5622('0x18')](_0x16619f);}};}function respondWithFilteredResult(_0x27a32,_0xb17a5d){return function(_0x1ec413){if(_0x1ec413){var _0x2d5ce7=typeof _0xb17a5d[_0x5622('0x19')]===_0x5622('0x1a')&&typeof _0xb17a5d[_0x5622('0x1b')]===_0x5622('0x1a');var _0x235451=_0x1ec413[_0x5622('0x1c')];var _0x27b383=_0x2d5ce7?0x0:_0xb17a5d[_0x5622('0x19')];var _0x1162ac=_0x2d5ce7?_0x1ec413['count']:_0xb17a5d['offset']+_0xb17a5d[_0x5622('0x1b')];var _0x3793c5;if(_0x1162ac>=_0x235451){_0x1162ac=_0x235451;_0x3793c5=0xc8;}else{_0x3793c5=0xce;}_0x27a32['status'](_0x3793c5);return _0x27a32[_0x5622('0x1d')](_0x5622('0x1e'),_0x27b383+'-'+_0x1162ac+'/'+_0x235451)[_0x5622('0x18')](_0x1ec413);}return null;};}function patchUpdates(_0xe4b22c){return function(_0x4f9ea6){try{jsonpatch[_0x5622('0x1f')](_0x4f9ea6,_0xe4b22c,!![]);}catch(_0x2fb193){return BPromise[_0x5622('0x20')](_0x2fb193);}return _0x4f9ea6['save']();};}function saveUpdates(_0x4eeb36,_0x15341f){return function(_0x550794){if(_0x550794){return _0x550794['update'](_0x4eeb36)[_0x5622('0x21')](function(_0x51dbb6){return _0x51dbb6;});}return null;};}function removeEntity(_0x4f865d,_0x43dd41){return function(_0x1a61d7){if(_0x1a61d7){return _0x1a61d7[_0x5622('0x22')]()['then'](function(){_0x4f865d[_0x5622('0x17')](0xcc)[_0x5622('0x23')]();});}};}function handleEntityNotFound(_0x5c95c6,_0x592bc7){return function(_0x1d1f23){if(!_0x1d1f23){_0x5c95c6[_0x5622('0x16')](0x194);}return _0x1d1f23;};}function handleError(_0x4ae0a7,_0x3ac4b0){_0x3ac4b0=_0x3ac4b0||0x1f4;return function(_0x4c0e32){logger[_0x5622('0x24')](_0x4c0e32['stack']);if(_0x4c0e32[_0x5622('0x25')]){delete _0x4c0e32[_0x5622('0x25')];}_0x4ae0a7['status'](_0x3ac4b0)[_0x5622('0x26')](_0x4c0e32);};}exports[_0x5622('0x27')]=function(_0x2d7f3d,_0x1ec06c){var _0x4aa055={},_0x405868={},_0x3872c9={'count':0x0,'rows':[]};var _0x118071=_[_0x5622('0x28')](db['ZendeskConfiguration'][_0x5622('0x29')],function(_0x2c4917){return{'name':_0x2c4917[_0x5622('0x2a')],'type':_0x2c4917[_0x5622('0x2b')][_0x5622('0x2c')]};});_0x405868[_0x5622('0x2d')]=_[_0x5622('0x28')](_0x118071,_0x5622('0x25'));_0x405868[_0x5622('0x2e')]=_[_0x5622('0x2f')](_0x2d7f3d['query']);_0x405868[_0x5622('0x30')]=_['intersection'](_0x405868[_0x5622('0x2d')],_0x405868[_0x5622('0x2e')]);_0x4aa055[_0x5622('0x31')]=_['intersection'](_0x405868['model'],qs[_0x5622('0x32')](_0x2d7f3d['query']['fields']));_0x4aa055['attributes']=_0x4aa055[_0x5622('0x31')][_0x5622('0x33')]?_0x4aa055[_0x5622('0x31')]:_0x405868['model'];if(!_0x2d7f3d['query'][_0x5622('0x34')]('nolimit')){_0x4aa055[_0x5622('0x1b')]=qs[_0x5622('0x1b')](_0x2d7f3d[_0x5622('0x2e')]['limit']);_0x4aa055[_0x5622('0x19')]=qs[_0x5622('0x19')](_0x2d7f3d['query'][_0x5622('0x19')]);}_0x4aa055[_0x5622('0x35')]=qs[_0x5622('0x36')](_0x2d7f3d['query'][_0x5622('0x36')]);_0x4aa055[_0x5622('0x37')]=qs['filters'](_[_0x5622('0x38')](_0x2d7f3d['query'],_0x405868[_0x5622('0x30')]),_0x118071);if(_0x2d7f3d[_0x5622('0x2e')]['filter']){_0x4aa055[_0x5622('0x37')]=_[_0x5622('0x39')](_0x4aa055[_0x5622('0x37')],{'$or':_[_0x5622('0x28')](_0x118071,function(_0x128476){if(_0x128476['type']!==_0x5622('0x3a')){var _0x28dc8e={};_0x28dc8e[_0x128476[_0x5622('0x25')]]={'$like':'%'+_0x2d7f3d[_0x5622('0x2e')][_0x5622('0x3b')]+'%'};return _0x28dc8e;}})});}_0x4aa055=_[_0x5622('0x39')]({},_0x4aa055,_0x2d7f3d[_0x5622('0x3c')]);var _0x133be7={'where':_0x4aa055[_0x5622('0x37')]};return db['ZendeskConfiguration'][_0x5622('0x1c')](_0x133be7)['then'](function(_0x29d99a){_0x3872c9['count']=_0x29d99a;if(_0x2d7f3d[_0x5622('0x2e')][_0x5622('0x3d')]){_0x4aa055[_0x5622('0x3e')]=[{'all':!![]}];}return db['ZendeskConfiguration']['findAll'](_0x4aa055);})[_0x5622('0x21')](function(_0x5342c9){_0x3872c9[_0x5622('0x3f')]=_0x5342c9;return _0x3872c9;})['then'](respondWithFilteredResult(_0x1ec06c,_0x4aa055))[_0x5622('0x40')](handleError(_0x1ec06c,null));};exports[_0x5622('0x41')]=function(_0x577e06,_0x12f525){var _0x276ff7={'raw':![],'where':{'id':_0x577e06[_0x5622('0x42')]['id']}},_0x4e2555={};_0x4e2555['model']=_['keys'](db[_0x5622('0x43')][_0x5622('0x29')]);_0x4e2555['query']=_['keys'](_0x577e06[_0x5622('0x2e')]);_0x4e2555[_0x5622('0x30')]=_[_0x5622('0x44')](_0x4e2555[_0x5622('0x2d')],_0x4e2555[_0x5622('0x2e')]);_0x276ff7[_0x5622('0x31')]=_['intersection'](_0x4e2555['model'],qs[_0x5622('0x32')](_0x577e06[_0x5622('0x2e')][_0x5622('0x32')]));_0x276ff7[_0x5622('0x31')]=_0x276ff7[_0x5622('0x31')][_0x5622('0x33')]?_0x276ff7['attributes']:_0x4e2555[_0x5622('0x2d')];if(_0x577e06[_0x5622('0x2e')][_0x5622('0x3d')]){_0x276ff7[_0x5622('0x3e')]=[{'all':!![]}];}_0x276ff7=_[_0x5622('0x39')]({},_0x276ff7,_0x577e06[_0x5622('0x3c')]);return db[_0x5622('0x43')][_0x5622('0x45')](_0x276ff7)['then'](handleEntityNotFound(_0x12f525,null))[_0x5622('0x21')](respondWithResult(_0x12f525,null))[_0x5622('0x40')](handleError(_0x12f525,null));};exports[_0x5622('0x46')]=function(_0x390cd1,_0x12c8a7){return db[_0x5622('0x43')][_0x5622('0x46')](_0x390cd1[_0x5622('0x47')],{})[_0x5622('0x21')](respondWithResult(_0x12c8a7,0xc9))[_0x5622('0x40')](handleError(_0x12c8a7,null));};exports[_0x5622('0x48')]=function(_0x17e9d9,_0x88956f){if(_0x17e9d9[_0x5622('0x47')]['id']){delete _0x17e9d9['body']['id'];}return db[_0x5622('0x43')][_0x5622('0x45')]({'where':{'id':_0x17e9d9['params']['id']}})['then'](handleEntityNotFound(_0x88956f,null))[_0x5622('0x21')](saveUpdates(_0x17e9d9[_0x5622('0x47')],null))[_0x5622('0x21')](respondWithResult(_0x88956f,null))[_0x5622('0x40')](handleError(_0x88956f,null));};exports[_0x5622('0x22')]=function(_0x63c55a,_0x5ec748){return db[_0x5622('0x43')]['find']({'where':{'id':_0x63c55a[_0x5622('0x42')]['id']}})['then'](handleEntityNotFound(_0x5ec748,null))[_0x5622('0x21')](removeEntity(_0x5ec748,null))['catch'](handleError(_0x5ec748,null));};exports[_0x5622('0x49')]=function(_0xa383c3,_0x5427a0,_0x5332fe){var _0x234ef1={};var _0x520d92={};var _0x470d03;var _0x207bbc;return db[_0x5622('0x43')]['findOne']({'where':{'id':_0xa383c3[_0x5622('0x42')]['id']}})[_0x5622('0x21')](handleEntityNotFound(_0x5427a0,null))['then'](function(_0x1bf62b){if(_0x1bf62b){_0x470d03=_0x1bf62b;_0x520d92[_0x5622('0x2d')]=_[_0x5622('0x2f')](db[_0x5622('0x4a')]['rawAttributes']);_0x520d92[_0x5622('0x2e')]=_[_0x5622('0x2f')](_0xa383c3[_0x5622('0x2e')]);_0x520d92[_0x5622('0x30')]=_[_0x5622('0x44')](_0x520d92[_0x5622('0x2d')],_0x520d92[_0x5622('0x2e')]);_0x234ef1['attributes']=_['intersection'](_0x520d92[_0x5622('0x2d')],qs['fields'](_0xa383c3[_0x5622('0x2e')]['fields']));_0x234ef1[_0x5622('0x31')]=_0x234ef1[_0x5622('0x31')]['length']?_0x234ef1[_0x5622('0x31')]:_0x520d92['model'];_0x234ef1[_0x5622('0x35')]=qs[_0x5622('0x36')](_0xa383c3[_0x5622('0x2e')][_0x5622('0x36')]);_0x234ef1[_0x5622('0x37')]=qs[_0x5622('0x30')](_['pick'](_0xa383c3[_0x5622('0x2e')],_0x520d92[_0x5622('0x30')]));if(_0xa383c3[_0x5622('0x2e')][_0x5622('0x3b')]){_0x234ef1[_0x5622('0x37')]=_[_0x5622('0x39')](_0x234ef1[_0x5622('0x37')],{'$or':_[_0x5622('0x28')](_0x234ef1[_0x5622('0x31')],function(_0x3e8122){var _0x445c0e={};_0x445c0e[_0x3e8122]={'$like':'%'+_0xa383c3[_0x5622('0x2e')][_0x5622('0x3b')]+'%'};return _0x445c0e;})});}_0x234ef1=_[_0x5622('0x39')]({},_0x234ef1,_0xa383c3['options']);return _0x470d03['getFields'](_0x234ef1);}})[_0x5622('0x21')](function(_0x465d41){if(_0x465d41){_0x207bbc=_0x465d41[_0x5622('0x33')];if(!_0xa383c3[_0x5622('0x2e')][_0x5622('0x34')](_0x5622('0x4b'))){_0x234ef1[_0x5622('0x1b')]=qs[_0x5622('0x1b')](_0xa383c3[_0x5622('0x2e')][_0x5622('0x1b')]);_0x234ef1[_0x5622('0x19')]=qs['offset'](_0xa383c3[_0x5622('0x2e')][_0x5622('0x19')]);}return _0x470d03['getFields'](_0x234ef1);}})[_0x5622('0x21')](function(_0x4111fe){if(_0x4111fe){return _0x4111fe?{'count':_0x207bbc,'rows':_0x4111fe}:null;}})['then'](respondWithResult(_0x5427a0,null))[_0x5622('0x40')](handleError(_0x5427a0,null));};exports['getSubjects']=function(_0x25d2cc,_0x2ed1a8,_0x593e5b){var _0x3c6021={};var _0xdfdee0={};var _0x4fa016;var _0x28d180;return db['ZendeskConfiguration'][_0x5622('0x4c')]({'where':{'id':_0x25d2cc[_0x5622('0x42')]['id']}})[_0x5622('0x21')](handleEntityNotFound(_0x2ed1a8,null))[_0x5622('0x21')](function(_0x52805d){if(_0x52805d){_0x4fa016=_0x52805d;_0xdfdee0[_0x5622('0x2d')]=_['keys'](db[_0x5622('0x4a')]['rawAttributes']);_0xdfdee0[_0x5622('0x2e')]=_[_0x5622('0x2f')](_0x25d2cc[_0x5622('0x2e')]);_0xdfdee0[_0x5622('0x30')]=_[_0x5622('0x44')](_0xdfdee0['model'],_0xdfdee0['query']);_0x3c6021[_0x5622('0x31')]=_[_0x5622('0x44')](_0xdfdee0[_0x5622('0x2d')],qs[_0x5622('0x32')](_0x25d2cc[_0x5622('0x2e')][_0x5622('0x32')]));_0x3c6021[_0x5622('0x31')]=_0x3c6021[_0x5622('0x31')][_0x5622('0x33')]?_0x3c6021[_0x5622('0x31')]:_0xdfdee0[_0x5622('0x2d')];_0x3c6021[_0x5622('0x35')]=qs[_0x5622('0x36')](_0x25d2cc[_0x5622('0x2e')][_0x5622('0x36')]);_0x3c6021['where']=qs['filters'](_[_0x5622('0x38')](_0x25d2cc[_0x5622('0x2e')],_0xdfdee0[_0x5622('0x30')]));if(_0x25d2cc['query'][_0x5622('0x3b')]){_0x3c6021[_0x5622('0x37')]=_[_0x5622('0x39')](_0x3c6021[_0x5622('0x37')],{'$or':_[_0x5622('0x28')](_0x3c6021['attributes'],function(_0x237387){var _0x2baad8={};_0x2baad8[_0x237387]={'$like':'%'+_0x25d2cc['query'][_0x5622('0x3b')]+'%'};return _0x2baad8;})});}_0x3c6021=_[_0x5622('0x39')]({},_0x3c6021,_0x25d2cc['options']);return _0x4fa016[_0x5622('0x4d')](_0x3c6021);}})[_0x5622('0x21')](function(_0xacfd51){if(_0xacfd51){_0x28d180=_0xacfd51[_0x5622('0x33')];if(!_0x25d2cc['query'][_0x5622('0x34')](_0x5622('0x4b'))){_0x3c6021['limit']=qs['limit'](_0x25d2cc[_0x5622('0x2e')][_0x5622('0x1b')]);_0x3c6021[_0x5622('0x19')]=qs[_0x5622('0x19')](_0x25d2cc[_0x5622('0x2e')][_0x5622('0x19')]);}return _0x4fa016['getSubjects'](_0x3c6021);}})[_0x5622('0x21')](function(_0x2c7d11){if(_0x2c7d11){return _0x2c7d11?{'count':_0x28d180,'rows':_0x2c7d11}:null;}})[_0x5622('0x21')](respondWithResult(_0x2ed1a8,null))[_0x5622('0x40')](handleError(_0x2ed1a8,null));};exports[_0x5622('0x4e')]=function(_0x2b3ac3,_0x5a882a,_0x514366){var _0x34529e={};var _0x44bce3={};var _0x364c39;var _0x2f66f9;return db[_0x5622('0x43')][_0x5622('0x4c')]({'where':{'id':_0x2b3ac3[_0x5622('0x42')]['id']}})[_0x5622('0x21')](handleEntityNotFound(_0x5a882a,null))[_0x5622('0x21')](function(_0x1415e9){if(_0x1415e9){_0x364c39=_0x1415e9;_0x44bce3['model']=_[_0x5622('0x2f')](db[_0x5622('0x4a')]['rawAttributes']);_0x44bce3[_0x5622('0x2e')]=_[_0x5622('0x2f')](_0x2b3ac3[_0x5622('0x2e')]);_0x44bce3[_0x5622('0x30')]=_[_0x5622('0x44')](_0x44bce3['model'],_0x44bce3['query']);_0x34529e[_0x5622('0x31')]=_[_0x5622('0x44')](_0x44bce3[_0x5622('0x2d')],qs['fields'](_0x2b3ac3[_0x5622('0x2e')][_0x5622('0x32')]));_0x34529e[_0x5622('0x31')]=_0x34529e[_0x5622('0x31')][_0x5622('0x33')]?_0x34529e['attributes']:_0x44bce3[_0x5622('0x2d')];_0x34529e[_0x5622('0x35')]=qs[_0x5622('0x36')](_0x2b3ac3[_0x5622('0x2e')]['sort']);_0x34529e[_0x5622('0x37')]=qs[_0x5622('0x30')](_[_0x5622('0x38')](_0x2b3ac3['query'],_0x44bce3[_0x5622('0x30')]));if(_0x2b3ac3[_0x5622('0x2e')]['filter']){_0x34529e[_0x5622('0x37')]=_[_0x5622('0x39')](_0x34529e['where'],{'$or':_[_0x5622('0x28')](_0x34529e[_0x5622('0x31')],function(_0x15c7b6){var _0x105fe0={};_0x105fe0[_0x15c7b6]={'$like':'%'+_0x2b3ac3[_0x5622('0x2e')][_0x5622('0x3b')]+'%'};return _0x105fe0;})});}_0x34529e=_[_0x5622('0x39')]({},_0x34529e,_0x2b3ac3[_0x5622('0x3c')]);return _0x364c39[_0x5622('0x4e')](_0x34529e);}})['then'](function(_0x56908b){if(_0x56908b){_0x2f66f9=_0x56908b['length'];if(!_0x2b3ac3['query']['hasOwnProperty']('nolimit')){_0x34529e[_0x5622('0x1b')]=qs[_0x5622('0x1b')](_0x2b3ac3[_0x5622('0x2e')][_0x5622('0x1b')]);_0x34529e[_0x5622('0x19')]=qs[_0x5622('0x19')](_0x2b3ac3[_0x5622('0x2e')]['offset']);}return _0x364c39[_0x5622('0x4e')](_0x34529e);}})[_0x5622('0x21')](function(_0x175e0){if(_0x175e0){return _0x175e0?{'count':_0x2f66f9,'rows':_0x175e0}:null;}})[_0x5622('0x21')](respondWithResult(_0x5a882a,null))[_0x5622('0x40')](handleError(_0x5a882a,null));};exports[_0x5622('0x4f')]=function(_0x570895,_0x4ea85e,_0x3d4f76){var _0x1eb849={};var _0x4c8c33={};var _0x5b5574;var _0x8982fb;return db[_0x5622('0x43')][_0x5622('0x4c')]({'where':{'id':_0x570895['params']['id']}})['then'](handleEntityNotFound(_0x4ea85e,null))['then'](function(_0x14d385){if(_0x14d385){_0x5b5574=_0x14d385;_0x4c8c33[_0x5622('0x2d')]=_[_0x5622('0x2f')](db[_0x5622('0x50')]['rawAttributes']);_0x4c8c33[_0x5622('0x2e')]=_[_0x5622('0x2f')](_0x570895[_0x5622('0x2e')]);_0x4c8c33[_0x5622('0x30')]=_[_0x5622('0x44')](_0x4c8c33[_0x5622('0x2d')],_0x4c8c33[_0x5622('0x2e')]);_0x1eb849[_0x5622('0x31')]=_[_0x5622('0x44')](_0x4c8c33[_0x5622('0x2d')],qs[_0x5622('0x32')](_0x570895[_0x5622('0x2e')][_0x5622('0x32')]));_0x1eb849[_0x5622('0x31')]=_0x1eb849[_0x5622('0x31')][_0x5622('0x33')]?_0x1eb849['attributes']:_0x4c8c33[_0x5622('0x2d')];_0x1eb849[_0x5622('0x35')]=qs[_0x5622('0x36')](_0x570895[_0x5622('0x2e')][_0x5622('0x36')]);_0x1eb849['where']=qs[_0x5622('0x30')](_[_0x5622('0x38')](_0x570895[_0x5622('0x2e')],_0x4c8c33['filters']));if(_0x570895[_0x5622('0x2e')][_0x5622('0x3b')]){_0x1eb849['where']=_['merge'](_0x1eb849['where'],{'$or':_[_0x5622('0x28')](_0x1eb849[_0x5622('0x31')],function(_0x3f9d95){var _0x39d86e={};_0x39d86e[_0x3f9d95]={'$like':'%'+_0x570895[_0x5622('0x2e')][_0x5622('0x3b')]+'%'};return _0x39d86e;})});}_0x1eb849=_[_0x5622('0x39')]({},_0x1eb849,_0x570895[_0x5622('0x3c')]);return _0x5b5574[_0x5622('0x4f')](_0x1eb849);}})['then'](function(_0x50e80e){if(_0x50e80e){_0x8982fb=_0x50e80e['length'];if(!_0x570895[_0x5622('0x2e')][_0x5622('0x34')](_0x5622('0x4b'))){_0x1eb849[_0x5622('0x1b')]=qs[_0x5622('0x1b')](_0x570895[_0x5622('0x2e')][_0x5622('0x1b')]);_0x1eb849[_0x5622('0x19')]=qs[_0x5622('0x19')](_0x570895['query'][_0x5622('0x19')]);}return _0x5b5574[_0x5622('0x4f')](_0x1eb849);}})[_0x5622('0x21')](function(_0x323702){if(_0x323702){return _0x323702?{'count':_0x8982fb,'rows':_0x323702}:null;}})[_0x5622('0x21')](respondWithResult(_0x4ea85e,null))[_0x5622('0x40')](handleError(_0x4ea85e,null));};exports[_0x5622('0x51')]=function(_0x540fed,_0x3df76c,_0x2077bf){if(_0x540fed[_0x5622('0x47')]['id']){delete _0x540fed[_0x5622('0x47')]['id'];}return db[_0x5622('0x43')]['findOne']({'where':{'id':_0x540fed[_0x5622('0x42')]['id']}})['then'](handleEntityNotFound(_0x3df76c,null))[_0x5622('0x21')](function(_0x1c1779){if(_0x1c1779){return _0x1c1779[_0x5622('0x51')](_0x540fed[_0x5622('0x47')][_0x5622('0x52')]||[]);}return null;})[_0x5622('0x21')](respondWithResult(_0x3df76c,null))[_0x5622('0x40')](handleError(_0x3df76c,null));};
\ No newline at end of file
+var _0x7191=['fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ZendeskConfiguration','includeAll','include','rows','catch','params','rawAttributes','find','create','body','findOne','ZendeskField','getFields','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','end','stack','name','send','index','type','key','model','map','keys','query','filters','intersection','attributes'];(function(_0x12f5c4,_0x111d1d){var _0x1e91cc=function(_0x32de03){while(--_0x32de03){_0x12f5c4['push'](_0x12f5c4['shift']());}};_0x1e91cc(++_0x111d1d);}(_0x7191,0x121));var _0x1719=function(_0x293285,_0x28ad7a){_0x293285=_0x293285-0x0;var _0x1909eb=_0x7191[_0x293285];return _0x1909eb;};'use strict';var emlformat=require(_0x1719('0x0'));var rimraf=require(_0x1719('0x1'));var zipdir=require(_0x1719('0x2'));var jsonpatch=require(_0x1719('0x3'));var rp=require(_0x1719('0x4'));var moment=require(_0x1719('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x1719('0x6'));var util=require('util');var path=require(_0x1719('0x7'));var sox=require(_0x1719('0x8'));var csv=require('to-csv');var ejs=require(_0x1719('0x9'));var fs=require('fs');var fs_extra=require(_0x1719('0xa'));var _=require(_0x1719('0xb'));var squel=require(_0x1719('0xc'));var crypto=require(_0x1719('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1719('0xe'));var toCsv=require(_0x1719('0xf'));var querystring=require(_0x1719('0x10'));var Papa=require(_0x1719('0x11'));var Redis=require(_0x1719('0x12'));var authService=require(_0x1719('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x1719('0x14'));var hardwareService=require(_0x1719('0x15'));var logger=require(_0x1719('0x16'))(_0x1719('0x17'));var utils=require(_0x1719('0x18'));var config=require(_0x1719('0x19'));var licenseUtil=require(_0x1719('0x1a'));var db=require(_0x1719('0x1b'))['db'];function respondWithStatusCode(_0x23d787,_0x3b7369){_0x3b7369=_0x3b7369||0xcc;return function(_0x5d084b){if(_0x5d084b){return _0x23d787['sendStatus'](_0x3b7369);}return _0x23d787[_0x1719('0x1c')](_0x3b7369)['end']();};}function respondWithResult(_0x2e66cc,_0xc888b8){_0xc888b8=_0xc888b8||0xc8;return function(_0x4fd5b0){if(_0x4fd5b0){return _0x2e66cc[_0x1719('0x1c')](_0xc888b8)[_0x1719('0x1d')](_0x4fd5b0);}};}function respondWithFilteredResult(_0x5aed00,_0x37db9c){return function(_0x526c0b){if(_0x526c0b){var _0x2a90e9=typeof _0x37db9c[_0x1719('0x1e')]===_0x1719('0x1f')&&typeof _0x37db9c[_0x1719('0x20')]==='undefined';var _0x266755=_0x526c0b[_0x1719('0x21')];var _0x2842bb=_0x2a90e9?0x0:_0x37db9c['offset'];var _0x4f3781=_0x2a90e9?_0x526c0b[_0x1719('0x21')]:_0x37db9c[_0x1719('0x1e')]+_0x37db9c[_0x1719('0x20')];var _0x322a19;if(_0x4f3781>=_0x266755){_0x4f3781=_0x266755;_0x322a19=0xc8;}else{_0x322a19=0xce;}_0x5aed00[_0x1719('0x1c')](_0x322a19);return _0x5aed00[_0x1719('0x22')](_0x1719('0x23'),_0x2842bb+'-'+_0x4f3781+'/'+_0x266755)[_0x1719('0x1d')](_0x526c0b);}return null;};}function patchUpdates(_0x420106){return function(_0x16914d){try{jsonpatch[_0x1719('0x24')](_0x16914d,_0x420106,!![]);}catch(_0x4f8687){return BPromise['reject'](_0x4f8687);}return _0x16914d[_0x1719('0x25')]();};}function saveUpdates(_0x4e0f6f,_0x4e97df){return function(_0x33db65){if(_0x33db65){return _0x33db65[_0x1719('0x26')](_0x4e0f6f)[_0x1719('0x27')](function(_0x1eae79){return _0x1eae79;});}return null;};}function removeEntity(_0x4a978b,_0x29df82){return function(_0x1f66eb){if(_0x1f66eb){return _0x1f66eb[_0x1719('0x28')]()[_0x1719('0x27')](function(){_0x4a978b[_0x1719('0x1c')](0xcc)[_0x1719('0x29')]();});}};}function handleEntityNotFound(_0x3ca721,_0x5e6045){return function(_0x1bad04){if(!_0x1bad04){_0x3ca721['sendStatus'](0x194);}return _0x1bad04;};}function handleError(_0xac8bfe,_0x4e3a99){_0x4e3a99=_0x4e3a99||0x1f4;return function(_0x274038){logger['error'](_0x274038[_0x1719('0x2a')]);if(_0x274038['name']){delete _0x274038[_0x1719('0x2b')];}_0xac8bfe['status'](_0x4e3a99)[_0x1719('0x2c')](_0x274038);};}exports[_0x1719('0x2d')]=function(_0x48c125,_0x2a5849){var _0x3d065c={},_0x27ec7b={},_0x3c2804={'count':0x0,'rows':[]};var _0x54c954=_['map'](db['ZendeskConfiguration']['rawAttributes'],function(_0x43e623){return{'name':_0x43e623['fieldName'],'type':_0x43e623[_0x1719('0x2e')][_0x1719('0x2f')]};});_0x27ec7b[_0x1719('0x30')]=_[_0x1719('0x31')](_0x54c954,_0x1719('0x2b'));_0x27ec7b['query']=_[_0x1719('0x32')](_0x48c125[_0x1719('0x33')]);_0x27ec7b[_0x1719('0x34')]=_[_0x1719('0x35')](_0x27ec7b[_0x1719('0x30')],_0x27ec7b[_0x1719('0x33')]);_0x3d065c[_0x1719('0x36')]=_[_0x1719('0x35')](_0x27ec7b[_0x1719('0x30')],qs[_0x1719('0x37')](_0x48c125[_0x1719('0x33')]['fields']));_0x3d065c['attributes']=_0x3d065c[_0x1719('0x36')][_0x1719('0x38')]?_0x3d065c['attributes']:_0x27ec7b[_0x1719('0x30')];if(!_0x48c125[_0x1719('0x33')][_0x1719('0x39')](_0x1719('0x3a'))){_0x3d065c[_0x1719('0x20')]=qs[_0x1719('0x20')](_0x48c125[_0x1719('0x33')][_0x1719('0x20')]);_0x3d065c[_0x1719('0x1e')]=qs[_0x1719('0x1e')](_0x48c125[_0x1719('0x33')][_0x1719('0x1e')]);}_0x3d065c[_0x1719('0x3b')]=qs[_0x1719('0x3c')](_0x48c125[_0x1719('0x33')][_0x1719('0x3c')]);_0x3d065c[_0x1719('0x3d')]=qs[_0x1719('0x34')](_[_0x1719('0x3e')](_0x48c125['query'],_0x27ec7b[_0x1719('0x34')]),_0x54c954);if(_0x48c125['query'][_0x1719('0x3f')]){_0x3d065c[_0x1719('0x3d')]=_[_0x1719('0x40')](_0x3d065c[_0x1719('0x3d')],{'$or':_[_0x1719('0x31')](_0x54c954,function(_0x369a4c){if(_0x369a4c['type']!==_0x1719('0x41')){var _0x11ffb4={};_0x11ffb4[_0x369a4c[_0x1719('0x2b')]]={'$like':'%'+_0x48c125['query'][_0x1719('0x3f')]+'%'};return _0x11ffb4;}})});}_0x3d065c=_[_0x1719('0x40')]({},_0x3d065c,_0x48c125[_0x1719('0x42')]);var _0x10fe62={'where':_0x3d065c[_0x1719('0x3d')]};return db[_0x1719('0x43')][_0x1719('0x21')](_0x10fe62)[_0x1719('0x27')](function(_0x274d1d){_0x3c2804[_0x1719('0x21')]=_0x274d1d;if(_0x48c125['query'][_0x1719('0x44')]){_0x3d065c[_0x1719('0x45')]=[{'all':!![]}];}return db[_0x1719('0x43')]['findAll'](_0x3d065c);})['then'](function(_0x252c94){_0x3c2804[_0x1719('0x46')]=_0x252c94;return _0x3c2804;})[_0x1719('0x27')](respondWithFilteredResult(_0x2a5849,_0x3d065c))[_0x1719('0x47')](handleError(_0x2a5849,null));};exports['show']=function(_0x2ab64e,_0xb4784b){var _0x114af9={'raw':![],'where':{'id':_0x2ab64e[_0x1719('0x48')]['id']}},_0x18f72c={};_0x18f72c[_0x1719('0x30')]=_[_0x1719('0x32')](db[_0x1719('0x43')][_0x1719('0x49')]);_0x18f72c[_0x1719('0x33')]=_[_0x1719('0x32')](_0x2ab64e['query']);_0x18f72c[_0x1719('0x34')]=_[_0x1719('0x35')](_0x18f72c[_0x1719('0x30')],_0x18f72c[_0x1719('0x33')]);_0x114af9[_0x1719('0x36')]=_[_0x1719('0x35')](_0x18f72c[_0x1719('0x30')],qs[_0x1719('0x37')](_0x2ab64e[_0x1719('0x33')][_0x1719('0x37')]));_0x114af9[_0x1719('0x36')]=_0x114af9['attributes'][_0x1719('0x38')]?_0x114af9[_0x1719('0x36')]:_0x18f72c[_0x1719('0x30')];if(_0x2ab64e[_0x1719('0x33')]['includeAll']){_0x114af9[_0x1719('0x45')]=[{'all':!![]}];}_0x114af9=_[_0x1719('0x40')]({},_0x114af9,_0x2ab64e['options']);return db['ZendeskConfiguration'][_0x1719('0x4a')](_0x114af9)[_0x1719('0x27')](handleEntityNotFound(_0xb4784b,null))[_0x1719('0x27')](respondWithResult(_0xb4784b,null))[_0x1719('0x47')](handleError(_0xb4784b,null));};exports[_0x1719('0x4b')]=function(_0x576978,_0x7d13df){return db['ZendeskConfiguration'][_0x1719('0x4b')](_0x576978[_0x1719('0x4c')],{})['then'](respondWithResult(_0x7d13df,0xc9))['catch'](handleError(_0x7d13df,null));};exports[_0x1719('0x26')]=function(_0x20bfde,_0x459950){if(_0x20bfde[_0x1719('0x4c')]['id']){delete _0x20bfde[_0x1719('0x4c')]['id'];}return db['ZendeskConfiguration']['find']({'where':{'id':_0x20bfde[_0x1719('0x48')]['id']}})[_0x1719('0x27')](handleEntityNotFound(_0x459950,null))['then'](saveUpdates(_0x20bfde[_0x1719('0x4c')],null))[_0x1719('0x27')](respondWithResult(_0x459950,null))[_0x1719('0x47')](handleError(_0x459950,null));};exports[_0x1719('0x28')]=function(_0x51eacd,_0x34f6e4){return db[_0x1719('0x43')][_0x1719('0x4a')]({'where':{'id':_0x51eacd['params']['id']}})['then'](handleEntityNotFound(_0x34f6e4,null))[_0x1719('0x27')](removeEntity(_0x34f6e4,null))['catch'](handleError(_0x34f6e4,null));};exports['getFields']=function(_0x27b991,_0xbf0cbe,_0x512f71){var _0x4585bb={};var _0x566766={};var _0x16d684;var _0x32dabe;return db['ZendeskConfiguration'][_0x1719('0x4d')]({'where':{'id':_0x27b991[_0x1719('0x48')]['id']}})[_0x1719('0x27')](handleEntityNotFound(_0xbf0cbe,null))[_0x1719('0x27')](function(_0x5afc27){if(_0x5afc27){_0x16d684=_0x5afc27;_0x566766['model']=_[_0x1719('0x32')](db[_0x1719('0x4e')]['rawAttributes']);_0x566766[_0x1719('0x33')]=_['keys'](_0x27b991['query']);_0x566766['filters']=_[_0x1719('0x35')](_0x566766[_0x1719('0x30')],_0x566766[_0x1719('0x33')]);_0x4585bb[_0x1719('0x36')]=_['intersection'](_0x566766[_0x1719('0x30')],qs[_0x1719('0x37')](_0x27b991[_0x1719('0x33')][_0x1719('0x37')]));_0x4585bb['attributes']=_0x4585bb[_0x1719('0x36')][_0x1719('0x38')]?_0x4585bb[_0x1719('0x36')]:_0x566766[_0x1719('0x30')];_0x4585bb[_0x1719('0x3b')]=qs[_0x1719('0x3c')](_0x27b991[_0x1719('0x33')][_0x1719('0x3c')]);_0x4585bb[_0x1719('0x3d')]=qs[_0x1719('0x34')](_[_0x1719('0x3e')](_0x27b991[_0x1719('0x33')],_0x566766[_0x1719('0x34')]));if(_0x27b991[_0x1719('0x33')][_0x1719('0x3f')]){_0x4585bb['where']=_[_0x1719('0x40')](_0x4585bb['where'],{'$or':_[_0x1719('0x31')](_0x4585bb[_0x1719('0x36')],function(_0x49580d){var _0x536e04={};_0x536e04[_0x49580d]={'$like':'%'+_0x27b991[_0x1719('0x33')]['filter']+'%'};return _0x536e04;})});}_0x4585bb=_[_0x1719('0x40')]({},_0x4585bb,_0x27b991[_0x1719('0x42')]);return _0x16d684[_0x1719('0x4f')](_0x4585bb);}})[_0x1719('0x27')](function(_0x5d4b79){if(_0x5d4b79){_0x32dabe=_0x5d4b79[_0x1719('0x38')];if(!_0x27b991[_0x1719('0x33')][_0x1719('0x39')]('nolimit')){_0x4585bb[_0x1719('0x20')]=qs[_0x1719('0x20')](_0x27b991[_0x1719('0x33')][_0x1719('0x20')]);_0x4585bb[_0x1719('0x1e')]=qs[_0x1719('0x1e')](_0x27b991[_0x1719('0x33')][_0x1719('0x1e')]);}return _0x16d684[_0x1719('0x4f')](_0x4585bb);}})['then'](function(_0x3ee51f){if(_0x3ee51f){return _0x3ee51f?{'count':_0x32dabe,'rows':_0x3ee51f}:null;}})[_0x1719('0x27')](respondWithResult(_0xbf0cbe,null))[_0x1719('0x47')](handleError(_0xbf0cbe,null));};exports[_0x1719('0x50')]=function(_0x309cdd,_0x46d92f,_0x46db0e){var _0x2dfbe5={};var _0x5b518d={};var _0xf8b595;var _0x12ab32;return db['ZendeskConfiguration'][_0x1719('0x4d')]({'where':{'id':_0x309cdd[_0x1719('0x48')]['id']}})[_0x1719('0x27')](handleEntityNotFound(_0x46d92f,null))[_0x1719('0x27')](function(_0x1a4863){if(_0x1a4863){_0xf8b595=_0x1a4863;_0x5b518d['model']=_[_0x1719('0x32')](db[_0x1719('0x4e')][_0x1719('0x49')]);_0x5b518d[_0x1719('0x33')]=_[_0x1719('0x32')](_0x309cdd[_0x1719('0x33')]);_0x5b518d['filters']=_[_0x1719('0x35')](_0x5b518d[_0x1719('0x30')],_0x5b518d['query']);_0x2dfbe5[_0x1719('0x36')]=_[_0x1719('0x35')](_0x5b518d['model'],qs['fields'](_0x309cdd['query']['fields']));_0x2dfbe5[_0x1719('0x36')]=_0x2dfbe5[_0x1719('0x36')][_0x1719('0x38')]?_0x2dfbe5[_0x1719('0x36')]:_0x5b518d[_0x1719('0x30')];_0x2dfbe5[_0x1719('0x3b')]=qs[_0x1719('0x3c')](_0x309cdd[_0x1719('0x33')][_0x1719('0x3c')]);_0x2dfbe5[_0x1719('0x3d')]=qs[_0x1719('0x34')](_[_0x1719('0x3e')](_0x309cdd[_0x1719('0x33')],_0x5b518d[_0x1719('0x34')]));if(_0x309cdd[_0x1719('0x33')][_0x1719('0x3f')]){_0x2dfbe5[_0x1719('0x3d')]=_[_0x1719('0x40')](_0x2dfbe5[_0x1719('0x3d')],{'$or':_['map'](_0x2dfbe5['attributes'],function(_0x4ce86f){var _0x243170={};_0x243170[_0x4ce86f]={'$like':'%'+_0x309cdd[_0x1719('0x33')][_0x1719('0x3f')]+'%'};return _0x243170;})});}_0x2dfbe5=_['merge']({},_0x2dfbe5,_0x309cdd['options']);return _0xf8b595['getSubjects'](_0x2dfbe5);}})[_0x1719('0x27')](function(_0x48356d){if(_0x48356d){_0x12ab32=_0x48356d[_0x1719('0x38')];if(!_0x309cdd[_0x1719('0x33')][_0x1719('0x39')](_0x1719('0x3a'))){_0x2dfbe5[_0x1719('0x20')]=qs[_0x1719('0x20')](_0x309cdd['query']['limit']);_0x2dfbe5[_0x1719('0x1e')]=qs[_0x1719('0x1e')](_0x309cdd['query'][_0x1719('0x1e')]);}return _0xf8b595['getSubjects'](_0x2dfbe5);}})[_0x1719('0x27')](function(_0x144d0d){if(_0x144d0d){return _0x144d0d?{'count':_0x12ab32,'rows':_0x144d0d}:null;}})[_0x1719('0x27')](respondWithResult(_0x46d92f,null))['catch'](handleError(_0x46d92f,null));};exports['getDescriptions']=function(_0x2232be,_0x1e2af2,_0xd6438d){var _0x40c291={};var _0x3e4ec6={};var _0x121f2d;var _0xd43b1d;return db[_0x1719('0x43')]['findOne']({'where':{'id':_0x2232be[_0x1719('0x48')]['id']}})[_0x1719('0x27')](handleEntityNotFound(_0x1e2af2,null))['then'](function(_0x57ea7b){if(_0x57ea7b){_0x121f2d=_0x57ea7b;_0x3e4ec6[_0x1719('0x30')]=_[_0x1719('0x32')](db[_0x1719('0x4e')][_0x1719('0x49')]);_0x3e4ec6[_0x1719('0x33')]=_[_0x1719('0x32')](_0x2232be[_0x1719('0x33')]);_0x3e4ec6[_0x1719('0x34')]=_['intersection'](_0x3e4ec6['model'],_0x3e4ec6['query']);_0x40c291[_0x1719('0x36')]=_[_0x1719('0x35')](_0x3e4ec6[_0x1719('0x30')],qs[_0x1719('0x37')](_0x2232be[_0x1719('0x33')][_0x1719('0x37')]));_0x40c291['attributes']=_0x40c291[_0x1719('0x36')][_0x1719('0x38')]?_0x40c291[_0x1719('0x36')]:_0x3e4ec6[_0x1719('0x30')];_0x40c291[_0x1719('0x3b')]=qs[_0x1719('0x3c')](_0x2232be[_0x1719('0x33')][_0x1719('0x3c')]);_0x40c291['where']=qs[_0x1719('0x34')](_[_0x1719('0x3e')](_0x2232be[_0x1719('0x33')],_0x3e4ec6[_0x1719('0x34')]));if(_0x2232be[_0x1719('0x33')][_0x1719('0x3f')]){_0x40c291[_0x1719('0x3d')]=_['merge'](_0x40c291[_0x1719('0x3d')],{'$or':_[_0x1719('0x31')](_0x40c291['attributes'],function(_0x17d3cb){var _0x159749={};_0x159749[_0x17d3cb]={'$like':'%'+_0x2232be['query']['filter']+'%'};return _0x159749;})});}_0x40c291=_[_0x1719('0x40')]({},_0x40c291,_0x2232be[_0x1719('0x42')]);return _0x121f2d[_0x1719('0x51')](_0x40c291);}})[_0x1719('0x27')](function(_0x18d10f){if(_0x18d10f){_0xd43b1d=_0x18d10f['length'];if(!_0x2232be['query']['hasOwnProperty'](_0x1719('0x3a'))){_0x40c291[_0x1719('0x20')]=qs['limit'](_0x2232be[_0x1719('0x33')][_0x1719('0x20')]);_0x40c291['offset']=qs['offset'](_0x2232be[_0x1719('0x33')][_0x1719('0x1e')]);}return _0x121f2d['getDescriptions'](_0x40c291);}})[_0x1719('0x27')](function(_0x478a85){if(_0x478a85){return _0x478a85?{'count':_0xd43b1d,'rows':_0x478a85}:null;}})[_0x1719('0x27')](respondWithResult(_0x1e2af2,null))[_0x1719('0x47')](handleError(_0x1e2af2,null));};exports[_0x1719('0x52')]=function(_0x5b195c,_0x1914c7,_0x15cc00){var _0x27090a={};var _0x4f473b={};var _0x35dce4;var _0x4e15fc;return db[_0x1719('0x43')][_0x1719('0x4d')]({'where':{'id':_0x5b195c[_0x1719('0x48')]['id']}})[_0x1719('0x27')](handleEntityNotFound(_0x1914c7,null))[_0x1719('0x27')](function(_0x2542cd){if(_0x2542cd){_0x35dce4=_0x2542cd;_0x4f473b[_0x1719('0x30')]=_[_0x1719('0x32')](db[_0x1719('0x53')][_0x1719('0x49')]);_0x4f473b['query']=_['keys'](_0x5b195c[_0x1719('0x33')]);_0x4f473b['filters']=_[_0x1719('0x35')](_0x4f473b['model'],_0x4f473b[_0x1719('0x33')]);_0x27090a[_0x1719('0x36')]=_[_0x1719('0x35')](_0x4f473b[_0x1719('0x30')],qs[_0x1719('0x37')](_0x5b195c[_0x1719('0x33')][_0x1719('0x37')]));_0x27090a[_0x1719('0x36')]=_0x27090a[_0x1719('0x36')][_0x1719('0x38')]?_0x27090a[_0x1719('0x36')]:_0x4f473b[_0x1719('0x30')];_0x27090a['order']=qs[_0x1719('0x3c')](_0x5b195c['query'][_0x1719('0x3c')]);_0x27090a[_0x1719('0x3d')]=qs[_0x1719('0x34')](_[_0x1719('0x3e')](_0x5b195c['query'],_0x4f473b[_0x1719('0x34')]));if(_0x5b195c[_0x1719('0x33')]['filter']){_0x27090a['where']=_[_0x1719('0x40')](_0x27090a['where'],{'$or':_[_0x1719('0x31')](_0x27090a['attributes'],function(_0x27555d){var _0x443111={};_0x443111[_0x27555d]={'$like':'%'+_0x5b195c[_0x1719('0x33')][_0x1719('0x3f')]+'%'};return _0x443111;})});}_0x27090a=_[_0x1719('0x40')]({},_0x27090a,_0x5b195c[_0x1719('0x42')]);return _0x35dce4[_0x1719('0x52')](_0x27090a);}})['then'](function(_0xe70874){if(_0xe70874){_0x4e15fc=_0xe70874['length'];if(!_0x5b195c[_0x1719('0x33')][_0x1719('0x39')](_0x1719('0x3a'))){_0x27090a[_0x1719('0x20')]=qs[_0x1719('0x20')](_0x5b195c[_0x1719('0x33')][_0x1719('0x20')]);_0x27090a[_0x1719('0x1e')]=qs['offset'](_0x5b195c[_0x1719('0x33')][_0x1719('0x1e')]);}return _0x35dce4['getTags'](_0x27090a);}})[_0x1719('0x27')](function(_0x4aa86c){if(_0x4aa86c){return _0x4aa86c?{'count':_0x4e15fc,'rows':_0x4aa86c}:null;}})[_0x1719('0x27')](respondWithResult(_0x1914c7,null))[_0x1719('0x47')](handleError(_0x1914c7,null));};exports['setTags']=function(_0x3a2502,_0x2308a6,_0x4920a9){if(_0x3a2502[_0x1719('0x4c')]['id']){delete _0x3a2502['body']['id'];}return db[_0x1719('0x43')][_0x1719('0x4d')]({'where':{'id':_0x3a2502[_0x1719('0x48')]['id']}})[_0x1719('0x27')](handleEntityNotFound(_0x2308a6,null))[_0x1719('0x27')](function(_0x3ab727){if(_0x3ab727){return _0x3ab727[_0x1719('0x54')](_0x3a2502[_0x1719('0x4c')][_0x1719('0x55')]||[]);}return null;})['then'](respondWithResult(_0x2308a6,null))[_0x1719('0x47')](handleError(_0x2308a6,null));};
\ No newline at end of file
index 3aa469b..3000bc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4f4=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskConfiguration.attributes','define','ZendeskConfiguration','int_zendesk_configurations','lodash'];(function(_0x53c256,_0x382a24){var _0x25feb6=function(_0x2652fd){while(--_0x2652fd){_0x53c256['push'](_0x53c256['shift']());}};_0x25feb6(++_0x382a24);}(_0xd4f4,0x8b));var _0x4d4f=function(_0x1460ae,_0x2ad9d6){_0x1460ae=_0x1460ae-0x0;var _0x243535=_0xd4f4[_0x1460ae];return _0x243535;};'use strict';var _=require(_0x4d4f('0x0'));var util=require(_0x4d4f('0x1'));var logger=require(_0x4d4f('0x2'))(_0x4d4f('0x3'));var moment=require(_0x4d4f('0x4'));var BPromise=require(_0x4d4f('0x5'));var rp=require(_0x4d4f('0x6'));var fs=require('fs');var path=require(_0x4d4f('0x7'));var rimraf=require(_0x4d4f('0x8'));var config=require(_0x4d4f('0x9'));var attributes=require(_0x4d4f('0xa'));module['exports']=function(_0x5f451b,_0x5e38d2){return _0x5f451b[_0x4d4f('0xb')](_0x4d4f('0xc'),attributes,{'tableName':_0x4d4f('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xed3c=['util','../../config/logger','api','bluebird','request-promise','path','./intZendeskConfiguration.attributes','exports','lodash'];(function(_0x32e97a,_0x2cdc3b){var _0x520ed5=function(_0x2efe9d){while(--_0x2efe9d){_0x32e97a['push'](_0x32e97a['shift']());}};_0x520ed5(++_0x2cdc3b);}(_0xed3c,0x1a6));var _0xced3=function(_0xcdfdb2,_0x151157){_0xcdfdb2=_0xcdfdb2-0x0;var _0x21f715=_0xed3c[_0xcdfdb2];return _0x21f715;};'use strict';var _=require(_0xced3('0x0'));var util=require(_0xced3('0x1'));var logger=require(_0xced3('0x2'))(_0xced3('0x3'));var moment=require('moment');var BPromise=require(_0xced3('0x4'));var rp=require(_0xced3('0x5'));var fs=require('fs');var path=require(_0xced3('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xced3('0x7'));module[_0xced3('0x8')]=function(_0x2f92f8,_0x1cd694){return _0x2f92f8['define']('ZendeskConfiguration',attributes,{'tableName':'int_zendesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ef01bee..561b1b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe3b=['then','ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x40bdbe,_0x1940f2){var _0x307043=function(_0xdea328){while(--_0xdea328){_0x40bdbe['push'](_0x40bdbe['shift']());}};_0x307043(++_0x1940f2);}(_0xfe3b,0x1eb));var _0xbfe3=function(_0x40c62b,_0x2c2efe){_0x40c62b=_0x40c62b-0x0;var _0x568cf0=_0xfe3b[_0x40c62b];return _0x568cf0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xbfe3('0x0'));var BPromise=require(_0xbfe3('0x1'));var rs=require(_0xbfe3('0x2'));var fs=require('fs');var Redis=require(_0xbfe3('0x3'));var db=require(_0xbfe3('0x4'))['db'];var utils=require(_0xbfe3('0x5'));var logger=require(_0xbfe3('0x6'))(_0xbfe3('0x7'));var config=require(_0xbfe3('0x8'));var jayson=require(_0xbfe3('0x9'));var client=jayson[_0xbfe3('0xa')][_0xbfe3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xb9467,_0x2dd23a,_0x2b786e){return new BPromise(function(_0x3673a6,_0x38075f){return client[_0xbfe3('0xc')](_0xb9467,_0x2b786e)[_0xbfe3('0xd')](function(_0x1b1743){logger['info'](_0xbfe3('0xe'),_0x2dd23a,_0xbfe3('0xf'));logger['debug'](_0xbfe3('0x10'),_0x2dd23a,_0xbfe3('0xf'),JSON[_0xbfe3('0x11')](_0x1b1743));if(_0x1b1743[_0xbfe3('0x12')]){if(_0x1b1743[_0xbfe3('0x12')][_0xbfe3('0x13')]===0x1f4){logger[_0xbfe3('0x12')]('ZendeskConfiguration,\x20%s,\x20%s',_0x2dd23a,_0x1b1743[_0xbfe3('0x12')]['message']);return _0x38075f(_0x1b1743['error'][_0xbfe3('0x14')]);}logger['error'](_0xbfe3('0xe'),_0x2dd23a,_0x1b1743[_0xbfe3('0x12')]['message']);return _0x3673a6(_0x1b1743['error'][_0xbfe3('0x14')]);}else{logger[_0xbfe3('0x15')](_0xbfe3('0xe'),_0x2dd23a,_0xbfe3('0xf'));_0x3673a6(_0x1b1743[_0xbfe3('0x16')]['message']);}})[_0xbfe3('0x17')](function(_0x22ccca){logger[_0xbfe3('0x12')](_0xbfe3('0xe'),_0x2dd23a,_0x22ccca);_0x38075f(_0x22ccca);});});}
\ No newline at end of file
+var _0x0ae8=['info','ZendeskConfiguration,\x20%s,\x20%s','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','http','request'];(function(_0x3f7adf,_0x583273){var _0x170994=function(_0x159058){while(--_0x159058){_0x3f7adf['push'](_0x3f7adf['shift']());}};_0x170994(++_0x583273);}(_0x0ae8,0xfb));var _0x80ae=function(_0x52d5df,_0x3a6baa){_0x52d5df=_0x52d5df-0x0;var _0x374a89=_0x0ae8[_0x52d5df];return _0x374a89;};'use strict';var _=require(_0x80ae('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x80ae('0x1'));var rs=require(_0x80ae('0x2'));var fs=require('fs');var Redis=require(_0x80ae('0x3'));var db=require(_0x80ae('0x4'))['db'];var utils=require(_0x80ae('0x5'));var logger=require(_0x80ae('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x80ae('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x352b3d,_0x36753a,_0x339775){return new BPromise(function(_0x4be08b,_0x3616a1){return client[_0x80ae('0x8')](_0x352b3d,_0x339775)['then'](function(_0x3d74f5){logger[_0x80ae('0x9')](_0x80ae('0xa'),_0x36753a,'request\x20sent');logger[_0x80ae('0xb')](_0x80ae('0xc'),_0x36753a,_0x80ae('0xd'),JSON[_0x80ae('0xe')](_0x3d74f5));if(_0x3d74f5[_0x80ae('0xf')]){if(_0x3d74f5['error'][_0x80ae('0x10')]===0x1f4){logger[_0x80ae('0xf')](_0x80ae('0xa'),_0x36753a,_0x3d74f5['error'][_0x80ae('0x11')]);return _0x3616a1(_0x3d74f5['error'][_0x80ae('0x11')]);}logger[_0x80ae('0xf')](_0x80ae('0xa'),_0x36753a,_0x3d74f5[_0x80ae('0xf')]['message']);return _0x4be08b(_0x3d74f5['error']['message']);}else{logger['info']('ZendeskConfiguration,\x20%s,\x20%s',_0x36753a,_0x80ae('0xd'));_0x4be08b(_0x3d74f5[_0x80ae('0x12')][_0x80ae('0x11')]);}})[_0x80ae('0x13')](function(_0x5a23d6){logger[_0x80ae('0xf')](_0x80ae('0xa'),_0x36753a,_0x5a23d6);_0x3616a1(_0x5a23d6);});});}
\ No newline at end of file
index 1eccfc6..9a5e320 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3147=['/:id','post','create','put','update','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get'];(function(_0x2b90e2,_0x3c0729){var _0x1431e6=function(_0x1766de){while(--_0x1766de){_0x2b90e2['push'](_0x2b90e2['shift']());}};_0x1431e6(++_0x3c0729);}(_0x3147,0xd9));var _0x7314=function(_0x1a57d1,_0x28ae42){_0x1a57d1=_0x1a57d1-0x0;var _0x900b6f=_0x3147[_0x1a57d1];return _0x900b6f;};'use strict';var multer=require(_0x7314('0x0'));var util=require(_0x7314('0x1'));var path=require(_0x7314('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x7314('0x3')]();var fs_extra=require(_0x7314('0x4'));var auth=require(_0x7314('0x5'));var interaction=require(_0x7314('0x6'));var config=require(_0x7314('0x7'));var controller=require('./intZendeskField.controller');router['get']('/',auth[_0x7314('0x8')](),controller[_0x7314('0x9')]);router[_0x7314('0xa')](_0x7314('0xb'),auth[_0x7314('0x8')](),controller['show']);router[_0x7314('0xc')]('/',auth[_0x7314('0x8')](),controller[_0x7314('0xd')]);router[_0x7314('0xe')](_0x7314('0xb'),auth['isAuthenticated'](),controller[_0x7314('0xf')]);router[_0x7314('0x10')](_0x7314('0xb'),auth[_0x7314('0x8')](),controller[_0x7314('0x11')]);module[_0x7314('0x12')]=router;
\ No newline at end of file
+var _0x5304=['multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy'];(function(_0x52a005,_0x8e066c){var _0x553f0f=function(_0x4cec83){while(--_0x4cec83){_0x52a005['push'](_0x52a005['shift']());}};_0x553f0f(++_0x8e066c);}(_0x5304,0x118));var _0x4530=function(_0x4cfc1d,_0x2c0927){_0x4cfc1d=_0x4cfc1d-0x0;var _0x1c01a0=_0x5304[_0x4cfc1d];return _0x1c01a0;};'use strict';var multer=require(_0x4530('0x0'));var util=require(_0x4530('0x1'));var path=require(_0x4530('0x2'));var timeout=require(_0x4530('0x3'));var express=require(_0x4530('0x4'));var router=express['Router']();var fs_extra=require(_0x4530('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4530('0x6'));var config=require(_0x4530('0x7'));var controller=require(_0x4530('0x8'));router[_0x4530('0x9')]('/',auth[_0x4530('0xa')](),controller[_0x4530('0xb')]);router['get'](_0x4530('0xc'),auth[_0x4530('0xa')](),controller[_0x4530('0xd')]);router[_0x4530('0xe')]('/',auth[_0x4530('0xa')](),controller[_0x4530('0xf')]);router[_0x4530('0x10')]('/:id',auth[_0x4530('0xa')](),controller[_0x4530('0x11')]);router[_0x4530('0x12')]('/:id',auth[_0x4530('0xa')](),controller[_0x4530('0x13')]);module['exports']=router;
\ No newline at end of file
index 40ecb8c..9aa09f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4c4=['ENUM','BOOLEAN','string','variable','customVariable','keyValue','STRING'];(function(_0xa1d623,_0x3e1f5d){var _0x4426c7=function(_0x51cfb2){while(--_0x51cfb2){_0xa1d623['push'](_0xa1d623['shift']());}};_0x4426c7(++_0x3e1f5d);}(_0xc4c4,0x11a));var _0x4c4c=function(_0x50ffbb,_0x21a925){_0x50ffbb=_0x50ffbb-0x0;var _0x576a1c=_0xc4c4[_0x50ffbb];return _0x576a1c;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize['ENUM'](_0x4c4c('0x0'),_0x4c4c('0x1'),_0x4c4c('0x2'),_0x4c4c('0x3'),'picklist'),'defaultValue':_0x4c4c('0x0')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x4c4c('0x4')]},'keyType':{'type':Sequelize[_0x4c4c('0x5')](_0x4c4c('0x0'),'variable',_0x4c4c('0x2'))},'keyContent':{'type':Sequelize[_0x4c4c('0x4')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x4c4c('0x4')]},'customField':{'type':Sequelize[_0x4c4c('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xffd7=['exports','ENUM','string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize'];(function(_0x15d18f,_0x126b0e){var _0xd12bf7=function(_0x19e661){while(--_0x19e661){_0x15d18f['push'](_0x15d18f['shift']());}};_0xd12bf7(++_0x126b0e);}(_0xffd7,0x1b7));var _0x7ffd=function(_0x2013f5,_0x30964a){_0x2013f5=_0x2013f5-0x0;var _0x47c240=_0xffd7[_0x2013f5];return _0x47c240;};'use strict';var Sequelize=require(_0x7ffd('0x0'));module[_0x7ffd('0x1')]={'type':{'type':Sequelize[_0x7ffd('0x2')](_0x7ffd('0x3'),_0x7ffd('0x4'),_0x7ffd('0x5'),_0x7ffd('0x6'),_0x7ffd('0x7')),'defaultValue':_0x7ffd('0x3')},'content':{'type':Sequelize[_0x7ffd('0x8')]},'key':{'type':Sequelize[_0x7ffd('0x8')]},'keyType':{'type':Sequelize[_0x7ffd('0x2')]('string',_0x7ffd('0x4'),_0x7ffd('0x5'))},'keyContent':{'type':Sequelize[_0x7ffd('0x8')]},'idField':{'type':Sequelize[_0x7ffd('0x8')]},'nameField':{'type':Sequelize[_0x7ffd('0x8')]},'customField':{'type':Sequelize[_0x7ffd('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7ffd('0x8')]}};
\ No newline at end of file
index 0d4a187..45bd1d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2444=['attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','then','includeAll','include','findAll','rows','show','params','merge','find','catch','create','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','set','apply','reject','save','update','destroy','end','sendStatus','stack','name','send','index','map','ZendeskField','rawAttributes','fieldName','type','query','keys','filters','intersection','model','fields'];(function(_0x34ef08,_0x3490fc){var _0x161a4f=function(_0x47f7a1){while(--_0x47f7a1){_0x34ef08['push'](_0x34ef08['shift']());}};_0x161a4f(++_0x3490fc);}(_0x2444,0x153));var _0x4244=function(_0x3b705c,_0x3b10ac){_0x3b705c=_0x3b705c-0x0;var _0x55fdb1=_0x2444[_0x3b705c];return _0x55fdb1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4244('0x0'));var zipdir=require(_0x4244('0x1'));var jsonpatch=require(_0x4244('0x2'));var rp=require(_0x4244('0x3'));var moment=require(_0x4244('0x4'));var BPromise=require(_0x4244('0x5'));var Mustache=require(_0x4244('0x6'));var util=require('util');var path=require(_0x4244('0x7'));var sox=require(_0x4244('0x8'));var csv=require(_0x4244('0x9'));var ejs=require(_0x4244('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4244('0xb'));var squel=require(_0x4244('0xc'));var crypto=require(_0x4244('0xd'));var jsforce=require(_0x4244('0xe'));var deskjs=require(_0x4244('0xf'));var toCsv=require(_0x4244('0x9'));var querystring=require(_0x4244('0x10'));var Papa=require(_0x4244('0x11'));var Redis=require(_0x4244('0x12'));var authService=require(_0x4244('0x13'));var qs=require(_0x4244('0x14'));var as=require(_0x4244('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4244('0x16'))(_0x4244('0x17'));var utils=require(_0x4244('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x4244('0x19'));var db=require(_0x4244('0x1a'))['db'];function respondWithStatusCode(_0x401b79,_0x1af793){_0x1af793=_0x1af793||0xcc;return function(_0x2a5e3b){if(_0x2a5e3b){return _0x401b79['sendStatus'](_0x1af793);}return _0x401b79[_0x4244('0x1b')](_0x1af793)['end']();};}function respondWithResult(_0xb34aad,_0x5d86ae){_0x5d86ae=_0x5d86ae||0xc8;return function(_0x3b6f09){if(_0x3b6f09){return _0xb34aad['status'](_0x5d86ae)[_0x4244('0x1c')](_0x3b6f09);}};}function respondWithFilteredResult(_0x3749c3,_0x16b1f0){return function(_0x2de618){if(_0x2de618){var _0x4379f2=typeof _0x16b1f0[_0x4244('0x1d')]===_0x4244('0x1e')&&typeof _0x16b1f0['limit']===_0x4244('0x1e');var _0x127744=_0x2de618[_0x4244('0x1f')];var _0x5625ed=_0x4379f2?0x0:_0x16b1f0['offset'];var _0x2f0b10=_0x4379f2?_0x2de618[_0x4244('0x1f')]:_0x16b1f0[_0x4244('0x1d')]+_0x16b1f0[_0x4244('0x20')];var _0x49fdf1;if(_0x2f0b10>=_0x127744){_0x2f0b10=_0x127744;_0x49fdf1=0xc8;}else{_0x49fdf1=0xce;}_0x3749c3[_0x4244('0x1b')](_0x49fdf1);return _0x3749c3[_0x4244('0x21')]('Content-Range',_0x5625ed+'-'+_0x2f0b10+'/'+_0x127744)['json'](_0x2de618);}return null;};}function patchUpdates(_0xfc2587){return function(_0x5edfd2){try{jsonpatch[_0x4244('0x22')](_0x5edfd2,_0xfc2587,!![]);}catch(_0x1a2685){return BPromise[_0x4244('0x23')](_0x1a2685);}return _0x5edfd2[_0x4244('0x24')]();};}function saveUpdates(_0x5ec463,_0x6539cf){return function(_0x201f06){if(_0x201f06){return _0x201f06[_0x4244('0x25')](_0x5ec463)['then'](function(_0x386e83){return _0x386e83;});}return null;};}function removeEntity(_0x390f46,_0x12801f){return function(_0x45271a){if(_0x45271a){return _0x45271a[_0x4244('0x26')]()['then'](function(){_0x390f46[_0x4244('0x1b')](0xcc)[_0x4244('0x27')]();});}};}function handleEntityNotFound(_0x136c6c,_0x1a0b34){return function(_0x4f79d1){if(!_0x4f79d1){_0x136c6c[_0x4244('0x28')](0x194);}return _0x4f79d1;};}function handleError(_0x29db24,_0x2e14d1){_0x2e14d1=_0x2e14d1||0x1f4;return function(_0x4b358f){logger['error'](_0x4b358f[_0x4244('0x29')]);if(_0x4b358f['name']){delete _0x4b358f[_0x4244('0x2a')];}_0x29db24[_0x4244('0x1b')](_0x2e14d1)[_0x4244('0x2b')](_0x4b358f);};}exports[_0x4244('0x2c')]=function(_0x35f139,_0x2c66c7){var _0x1b9b6f={},_0x22d2b1={},_0x559545={'count':0x0,'rows':[]};var _0x4f06e7=_[_0x4244('0x2d')](db[_0x4244('0x2e')][_0x4244('0x2f')],function(_0x318d21){return{'name':_0x318d21[_0x4244('0x30')],'type':_0x318d21[_0x4244('0x31')]['key']};});_0x22d2b1['model']=_['map'](_0x4f06e7,_0x4244('0x2a'));_0x22d2b1[_0x4244('0x32')]=_[_0x4244('0x33')](_0x35f139['query']);_0x22d2b1[_0x4244('0x34')]=_[_0x4244('0x35')](_0x22d2b1[_0x4244('0x36')],_0x22d2b1[_0x4244('0x32')]);_0x1b9b6f['attributes']=_[_0x4244('0x35')](_0x22d2b1[_0x4244('0x36')],qs[_0x4244('0x37')](_0x35f139[_0x4244('0x32')][_0x4244('0x37')]));_0x1b9b6f[_0x4244('0x38')]=_0x1b9b6f[_0x4244('0x38')][_0x4244('0x39')]?_0x1b9b6f[_0x4244('0x38')]:_0x22d2b1['model'];if(!_0x35f139[_0x4244('0x32')][_0x4244('0x3a')](_0x4244('0x3b'))){_0x1b9b6f[_0x4244('0x20')]=qs[_0x4244('0x20')](_0x35f139[_0x4244('0x32')][_0x4244('0x20')]);_0x1b9b6f[_0x4244('0x1d')]=qs[_0x4244('0x1d')](_0x35f139[_0x4244('0x32')][_0x4244('0x1d')]);}_0x1b9b6f[_0x4244('0x3c')]=qs[_0x4244('0x3d')](_0x35f139['query'][_0x4244('0x3d')]);_0x1b9b6f[_0x4244('0x3e')]=qs[_0x4244('0x34')](_[_0x4244('0x3f')](_0x35f139[_0x4244('0x32')],_0x22d2b1['filters']),_0x4f06e7);if(_0x35f139[_0x4244('0x32')][_0x4244('0x40')]){_0x1b9b6f[_0x4244('0x3e')]=_['merge'](_0x1b9b6f[_0x4244('0x3e')],{'$or':_[_0x4244('0x2d')](_0x4f06e7,function(_0x439b00){if(_0x439b00['type']!==_0x4244('0x41')){var _0x1dad55={};_0x1dad55[_0x439b00['name']]={'$like':'%'+_0x35f139[_0x4244('0x32')][_0x4244('0x40')]+'%'};return _0x1dad55;}})});}_0x1b9b6f=_['merge']({},_0x1b9b6f,_0x35f139[_0x4244('0x42')]);var _0x23d9c9={'where':_0x1b9b6f[_0x4244('0x3e')]};return db['ZendeskField'][_0x4244('0x1f')](_0x23d9c9)[_0x4244('0x43')](function(_0x2bd32c){_0x559545[_0x4244('0x1f')]=_0x2bd32c;if(_0x35f139['query'][_0x4244('0x44')]){_0x1b9b6f[_0x4244('0x45')]=[{'all':!![]}];}return db['ZendeskField'][_0x4244('0x46')](_0x1b9b6f);})[_0x4244('0x43')](function(_0x3ef801){_0x559545[_0x4244('0x47')]=_0x3ef801;return _0x559545;})[_0x4244('0x43')](respondWithFilteredResult(_0x2c66c7,_0x1b9b6f))['catch'](handleError(_0x2c66c7,null));};exports[_0x4244('0x48')]=function(_0x3bc38f,_0x1b6bbb){var _0x17f962={'raw':!![],'where':{'id':_0x3bc38f[_0x4244('0x49')]['id']}},_0x44c3ed={};_0x44c3ed[_0x4244('0x36')]=_[_0x4244('0x33')](db[_0x4244('0x2e')][_0x4244('0x2f')]);_0x44c3ed['query']=_[_0x4244('0x33')](_0x3bc38f['query']);_0x44c3ed[_0x4244('0x34')]=_[_0x4244('0x35')](_0x44c3ed[_0x4244('0x36')],_0x44c3ed['query']);_0x17f962[_0x4244('0x38')]=_['intersection'](_0x44c3ed[_0x4244('0x36')],qs['fields'](_0x3bc38f[_0x4244('0x32')][_0x4244('0x37')]));_0x17f962[_0x4244('0x38')]=_0x17f962[_0x4244('0x38')][_0x4244('0x39')]?_0x17f962[_0x4244('0x38')]:_0x44c3ed[_0x4244('0x36')];if(_0x3bc38f['query'][_0x4244('0x44')]){_0x17f962[_0x4244('0x45')]=[{'all':!![]}];}_0x17f962=_[_0x4244('0x4a')]({},_0x17f962,_0x3bc38f[_0x4244('0x42')]);return db[_0x4244('0x2e')][_0x4244('0x4b')](_0x17f962)[_0x4244('0x43')](handleEntityNotFound(_0x1b6bbb,null))[_0x4244('0x43')](respondWithResult(_0x1b6bbb,null))[_0x4244('0x4c')](handleError(_0x1b6bbb,null));};exports[_0x4244('0x4d')]=function(_0x300f02,_0x2caa21){return db[_0x4244('0x2e')][_0x4244('0x4d')](_0x300f02[_0x4244('0x4e')],{})[_0x4244('0x43')](respondWithResult(_0x2caa21,0xc9))['catch'](handleError(_0x2caa21,null));};exports[_0x4244('0x25')]=function(_0x2b4251,_0x38462c){if(_0x2b4251['body']['id']){delete _0x2b4251[_0x4244('0x4e')]['id'];}return db[_0x4244('0x2e')][_0x4244('0x4b')]({'where':{'id':_0x2b4251['params']['id']}})[_0x4244('0x43')](handleEntityNotFound(_0x38462c,null))[_0x4244('0x43')](saveUpdates(_0x2b4251[_0x4244('0x4e')],null))[_0x4244('0x43')](respondWithResult(_0x38462c,null))['catch'](handleError(_0x38462c,null));};exports['destroy']=function(_0x18150e,_0x43863e){return db['ZendeskField'][_0x4244('0x4b')]({'where':{'id':_0x18150e[_0x4244('0x49')]['id']}})[_0x4244('0x43')](handleEntityNotFound(_0x43863e,null))[_0x4244('0x43')](removeEntity(_0x43863e,null))[_0x4244('0x4c')](handleError(_0x43863e,null));};
\ No newline at end of file
+var _0x7055=['destroy','error','stack','name','send','index','rawAttributes','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','sort','pick','filter','where','VIRTUAL','merge','options','ZendeskField','includeAll','include','findAll','rows','show','params','find','create','body','catch','eml-format','zip-dir','fast-json-patch','mustache','util','sox','to-csv','ejs','fs-extra','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','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then'];(function(_0x485b5a,_0x2b289b){var _0xd2b34d=function(_0x34dcbd){while(--_0x34dcbd){_0x485b5a['push'](_0x485b5a['shift']());}};_0xd2b34d(++_0x2b289b);}(_0x7055,0x1a8));var _0x5705=function(_0x51b1a5,_0x285a4f){_0x51b1a5=_0x51b1a5-0x0;var _0x15c738=_0x7055[_0x51b1a5];return _0x15c738;};'use strict';var emlformat=require(_0x5705('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5705('0x1'));var jsonpatch=require(_0x5705('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x5705('0x3'));var util=require(_0x5705('0x4'));var path=require('path');var sox=require(_0x5705('0x5'));var csv=require(_0x5705('0x6'));var ejs=require(_0x5705('0x7'));var fs=require('fs');var fs_extra=require(_0x5705('0x8'));var _=require('lodash');var squel=require(_0x5705('0x9'));var crypto=require(_0x5705('0xa'));var jsforce=require(_0x5705('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x5705('0x6'));var querystring=require(_0x5705('0xc'));var Papa=require(_0x5705('0xd'));var Redis=require('ioredis');var authService=require(_0x5705('0xe'));var qs=require(_0x5705('0xf'));var as=require(_0x5705('0x10'));var hardwareService=require(_0x5705('0x11'));var logger=require(_0x5705('0x12'))(_0x5705('0x13'));var utils=require(_0x5705('0x14'));var config=require(_0x5705('0x15'));var licenseUtil=require(_0x5705('0x16'));var db=require(_0x5705('0x17'))['db'];function respondWithStatusCode(_0x4a477c,_0x25f98b){_0x25f98b=_0x25f98b||0xcc;return function(_0x80e1b2){if(_0x80e1b2){return _0x4a477c[_0x5705('0x18')](_0x25f98b);}return _0x4a477c[_0x5705('0x19')](_0x25f98b)[_0x5705('0x1a')]();};}function respondWithResult(_0x62b7c2,_0x28ead0){_0x28ead0=_0x28ead0||0xc8;return function(_0x290480){if(_0x290480){return _0x62b7c2[_0x5705('0x19')](_0x28ead0)[_0x5705('0x1b')](_0x290480);}};}function respondWithFilteredResult(_0xfd2bf,_0x5070af){return function(_0x4e6c61){if(_0x4e6c61){var _0x6fabf2=typeof _0x5070af[_0x5705('0x1c')]===_0x5705('0x1d')&&typeof _0x5070af['limit']===_0x5705('0x1d');var _0x45991e=_0x4e6c61[_0x5705('0x1e')];var _0x2c20b2=_0x6fabf2?0x0:_0x5070af[_0x5705('0x1c')];var _0x58d1fb=_0x6fabf2?_0x4e6c61[_0x5705('0x1e')]:_0x5070af[_0x5705('0x1c')]+_0x5070af['limit'];var _0x46fb7d;if(_0x58d1fb>=_0x45991e){_0x58d1fb=_0x45991e;_0x46fb7d=0xc8;}else{_0x46fb7d=0xce;}_0xfd2bf[_0x5705('0x19')](_0x46fb7d);return _0xfd2bf[_0x5705('0x1f')](_0x5705('0x20'),_0x2c20b2+'-'+_0x58d1fb+'/'+_0x45991e)['json'](_0x4e6c61);}return null;};}function patchUpdates(_0x42db3c){return function(_0x3d8fde){try{jsonpatch[_0x5705('0x21')](_0x3d8fde,_0x42db3c,!![]);}catch(_0x778e1c){return BPromise[_0x5705('0x22')](_0x778e1c);}return _0x3d8fde[_0x5705('0x23')]();};}function saveUpdates(_0x152b1a,_0x1a7860){return function(_0x1a77b4){if(_0x1a77b4){return _0x1a77b4[_0x5705('0x24')](_0x152b1a)[_0x5705('0x25')](function(_0x4af306){return _0x4af306;});}return null;};}function removeEntity(_0xd0b63a,_0x1b7abd){return function(_0x2c5ee8){if(_0x2c5ee8){return _0x2c5ee8[_0x5705('0x26')]()[_0x5705('0x25')](function(){_0xd0b63a[_0x5705('0x19')](0xcc)[_0x5705('0x1a')]();});}};}function handleEntityNotFound(_0x1836ef,_0x392162){return function(_0xf44d2a){if(!_0xf44d2a){_0x1836ef['sendStatus'](0x194);}return _0xf44d2a;};}function handleError(_0x7ce21c,_0x53f7e3){_0x53f7e3=_0x53f7e3||0x1f4;return function(_0x41732e){logger[_0x5705('0x27')](_0x41732e[_0x5705('0x28')]);if(_0x41732e[_0x5705('0x29')]){delete _0x41732e[_0x5705('0x29')];}_0x7ce21c[_0x5705('0x19')](_0x53f7e3)[_0x5705('0x2a')](_0x41732e);};}exports[_0x5705('0x2b')]=function(_0x34194c,_0x43678d){var _0x3f18d8={},_0x2c0541={},_0x1b37c4={'count':0x0,'rows':[]};var _0x31f9ec=_['map'](db['ZendeskField'][_0x5705('0x2c')],function(_0x344bbf){return{'name':_0x344bbf['fieldName'],'type':_0x344bbf[_0x5705('0x2d')][_0x5705('0x2e')]};});_0x2c0541[_0x5705('0x2f')]=_[_0x5705('0x30')](_0x31f9ec,'name');_0x2c0541[_0x5705('0x31')]=_[_0x5705('0x32')](_0x34194c[_0x5705('0x31')]);_0x2c0541[_0x5705('0x33')]=_['intersection'](_0x2c0541['model'],_0x2c0541['query']);_0x3f18d8[_0x5705('0x34')]=_[_0x5705('0x35')](_0x2c0541[_0x5705('0x2f')],qs[_0x5705('0x36')](_0x34194c[_0x5705('0x31')][_0x5705('0x36')]));_0x3f18d8[_0x5705('0x34')]=_0x3f18d8[_0x5705('0x34')][_0x5705('0x37')]?_0x3f18d8[_0x5705('0x34')]:_0x2c0541[_0x5705('0x2f')];if(!_0x34194c[_0x5705('0x31')][_0x5705('0x38')](_0x5705('0x39'))){_0x3f18d8[_0x5705('0x3a')]=qs[_0x5705('0x3a')](_0x34194c[_0x5705('0x31')]['limit']);_0x3f18d8[_0x5705('0x1c')]=qs[_0x5705('0x1c')](_0x34194c[_0x5705('0x31')]['offset']);}_0x3f18d8['order']=qs[_0x5705('0x3b')](_0x34194c[_0x5705('0x31')][_0x5705('0x3b')]);_0x3f18d8['where']=qs[_0x5705('0x33')](_[_0x5705('0x3c')](_0x34194c[_0x5705('0x31')],_0x2c0541['filters']),_0x31f9ec);if(_0x34194c[_0x5705('0x31')][_0x5705('0x3d')]){_0x3f18d8['where']=_['merge'](_0x3f18d8[_0x5705('0x3e')],{'$or':_['map'](_0x31f9ec,function(_0x7a2d0e){if(_0x7a2d0e[_0x5705('0x2d')]!==_0x5705('0x3f')){var _0x921d68={};_0x921d68[_0x7a2d0e['name']]={'$like':'%'+_0x34194c['query'][_0x5705('0x3d')]+'%'};return _0x921d68;}})});}_0x3f18d8=_[_0x5705('0x40')]({},_0x3f18d8,_0x34194c[_0x5705('0x41')]);var _0x5c1093={'where':_0x3f18d8[_0x5705('0x3e')]};return db[_0x5705('0x42')]['count'](_0x5c1093)['then'](function(_0x18d566){_0x1b37c4[_0x5705('0x1e')]=_0x18d566;if(_0x34194c[_0x5705('0x31')][_0x5705('0x43')]){_0x3f18d8[_0x5705('0x44')]=[{'all':!![]}];}return db[_0x5705('0x42')][_0x5705('0x45')](_0x3f18d8);})['then'](function(_0x13ec3d){_0x1b37c4[_0x5705('0x46')]=_0x13ec3d;return _0x1b37c4;})[_0x5705('0x25')](respondWithFilteredResult(_0x43678d,_0x3f18d8))['catch'](handleError(_0x43678d,null));};exports[_0x5705('0x47')]=function(_0x56bb09,_0x1ec1fb){var _0x4916fb={'raw':!![],'where':{'id':_0x56bb09[_0x5705('0x48')]['id']}},_0xeaa744={};_0xeaa744[_0x5705('0x2f')]=_[_0x5705('0x32')](db[_0x5705('0x42')][_0x5705('0x2c')]);_0xeaa744[_0x5705('0x31')]=_[_0x5705('0x32')](_0x56bb09[_0x5705('0x31')]);_0xeaa744[_0x5705('0x33')]=_['intersection'](_0xeaa744[_0x5705('0x2f')],_0xeaa744[_0x5705('0x31')]);_0x4916fb[_0x5705('0x34')]=_['intersection'](_0xeaa744[_0x5705('0x2f')],qs[_0x5705('0x36')](_0x56bb09['query'][_0x5705('0x36')]));_0x4916fb[_0x5705('0x34')]=_0x4916fb[_0x5705('0x34')][_0x5705('0x37')]?_0x4916fb['attributes']:_0xeaa744['model'];if(_0x56bb09[_0x5705('0x31')][_0x5705('0x43')]){_0x4916fb[_0x5705('0x44')]=[{'all':!![]}];}_0x4916fb=_[_0x5705('0x40')]({},_0x4916fb,_0x56bb09[_0x5705('0x41')]);return db['ZendeskField'][_0x5705('0x49')](_0x4916fb)[_0x5705('0x25')](handleEntityNotFound(_0x1ec1fb,null))[_0x5705('0x25')](respondWithResult(_0x1ec1fb,null))['catch'](handleError(_0x1ec1fb,null));};exports['create']=function(_0x28b628,_0x81c4a5){return db[_0x5705('0x42')][_0x5705('0x4a')](_0x28b628[_0x5705('0x4b')],{})[_0x5705('0x25')](respondWithResult(_0x81c4a5,0xc9))[_0x5705('0x4c')](handleError(_0x81c4a5,null));};exports['update']=function(_0x5e22ca,_0x3db080){if(_0x5e22ca['body']['id']){delete _0x5e22ca[_0x5705('0x4b')]['id'];}return db[_0x5705('0x42')][_0x5705('0x49')]({'where':{'id':_0x5e22ca['params']['id']}})['then'](handleEntityNotFound(_0x3db080,null))['then'](saveUpdates(_0x5e22ca['body'],null))[_0x5705('0x25')](respondWithResult(_0x3db080,null))[_0x5705('0x4c')](handleError(_0x3db080,null));};exports[_0x5705('0x26')]=function(_0xfd4c49,_0xee4fa8){return db[_0x5705('0x42')][_0x5705('0x49')]({'where':{'id':_0xfd4c49['params']['id']}})[_0x5705('0x25')](handleEntityNotFound(_0xee4fa8,null))[_0x5705('0x25')](removeEntity(_0xee4fa8,null))[_0x5705('0x4c')](handleError(_0xee4fa8,null));};
\ No newline at end of file
index 525c72e..7687f05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd786=['./intZendeskField.attributes','exports','define','ZendeskField','int_zendesk_fields','zendesk_unique_index','idField','FieldId','../../config/logger','api','moment','bluebird','request-promise','../../config/environment'];(function(_0x2a75cd,_0x247962){var _0x2319bc=function(_0x47d0c5){while(--_0x47d0c5){_0x2a75cd['push'](_0x2a75cd['shift']());}};_0x2319bc(++_0x247962);}(_0xd786,0x104));var _0x6d78=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xd786[_0x4154a6];return _0x3b2786;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x6d78('0x0'))(_0x6d78('0x1'));var moment=require(_0x6d78('0x2'));var BPromise=require(_0x6d78('0x3'));var rp=require(_0x6d78('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x6d78('0x5'));var attributes=require(_0x6d78('0x6'));module[_0x6d78('0x7')]=function(_0xe6eed,_0x15c8c7){return _0xe6eed[_0x6d78('0x8')](_0x6d78('0x9'),attributes,{'tableName':_0x6d78('0xa'),'paranoid':![],'indexes':[{'name':_0x6d78('0xb'),'fields':[_0x6d78('0xc'),_0x6d78('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xeee1=['FieldId','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intZendeskField.attributes','exports','define','ZendeskField','zendesk_unique_index','idField'];(function(_0x32f7d7,_0x54231b){var _0x133d09=function(_0x41a7ab){while(--_0x41a7ab){_0x32f7d7['push'](_0x32f7d7['shift']());}};_0x133d09(++_0x54231b);}(_0xeee1,0xb5));var _0x1eee=function(_0x414409,_0x3315f1){_0x414409=_0x414409-0x0;var _0x224025=_0xeee1[_0x414409];return _0x224025;};'use strict';var _=require('lodash');var util=require(_0x1eee('0x0'));var logger=require(_0x1eee('0x1'))(_0x1eee('0x2'));var moment=require(_0x1eee('0x3'));var BPromise=require(_0x1eee('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1eee('0x5'));var rimraf=require(_0x1eee('0x6'));var config=require(_0x1eee('0x7'));var attributes=require(_0x1eee('0x8'));module[_0x1eee('0x9')]=function(_0x382fd0,_0x97230a){return _0x382fd0[_0x1eee('0xa')](_0x1eee('0xb'),attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':_0x1eee('0xc'),'fields':[_0x1eee('0xd'),_0x1eee('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 53d3509..4c07a97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x391d=['../../config/environment','jayson/promise','http','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x4305db,_0x2812a2){var _0x432b2d=function(_0x2dd41b){while(--_0x2dd41b){_0x4305db['push'](_0x4305db['shift']());}};_0x432b2d(++_0x2812a2);}(_0x391d,0x148));var _0xd391=function(_0x9fce47,_0x38c3e6){_0x9fce47=_0x9fce47-0x0;var _0x29e671=_0x391d[_0x9fce47];return _0x29e671;};'use strict';var _=require(_0xd391('0x0'));var util=require('util');var moment=require(_0xd391('0x1'));var BPromise=require(_0xd391('0x2'));var rs=require(_0xd391('0x3'));var fs=require('fs');var Redis=require(_0xd391('0x4'));var db=require(_0xd391('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd391('0x6'))(_0xd391('0x7'));var config=require(_0xd391('0x8'));var jayson=require(_0xd391('0x9'));var client=jayson['client'][_0xd391('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x376a20,_0x20d0ce,_0x376fae){return new BPromise(function(_0x215718,_0x215ecf){return client['request'](_0x376a20,_0x376fae)[_0xd391('0xb')](function(_0x3723e4){logger[_0xd391('0xc')](_0xd391('0xd'),_0x20d0ce,_0xd391('0xe'));logger['debug'](_0xd391('0xf'),_0x20d0ce,_0xd391('0xe'),JSON[_0xd391('0x10')](_0x3723e4));if(_0x3723e4[_0xd391('0x11')]){if(_0x3723e4[_0xd391('0x11')][_0xd391('0x12')]===0x1f4){logger[_0xd391('0x11')](_0xd391('0xd'),_0x20d0ce,_0x3723e4[_0xd391('0x11')]['message']);return _0x215ecf(_0x3723e4[_0xd391('0x11')][_0xd391('0x13')]);}logger['error'](_0xd391('0xd'),_0x20d0ce,_0x3723e4[_0xd391('0x11')][_0xd391('0x13')]);return _0x215718(_0x3723e4[_0xd391('0x11')][_0xd391('0x13')]);}else{logger[_0xd391('0xc')](_0xd391('0xd'),_0x20d0ce,_0xd391('0xe'));_0x215718(_0x3723e4[_0xd391('0x14')][_0xd391('0x13')]);}})['catch'](function(_0x6b4a13){logger[_0xd391('0x11')](_0xd391('0xd'),_0x20d0ce,_0x6b4a13);_0x215ecf(_0x6b4a13);});});}
\ No newline at end of file
+var _0x1a29=['../../config/environment','jayson/promise','client','http','request','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x57b3df,_0x445081){var _0x206656=function(_0x16aeb3){while(--_0x16aeb3){_0x57b3df['push'](_0x57b3df['shift']());}};_0x206656(++_0x445081);}(_0x1a29,0x6f));var _0x91a2=function(_0x524514,_0x6281c3){_0x524514=_0x524514-0x0;var _0x2a843b=_0x1a29[_0x524514];return _0x2a843b;};'use strict';var _=require(_0x91a2('0x0'));var util=require(_0x91a2('0x1'));var moment=require(_0x91a2('0x2'));var BPromise=require(_0x91a2('0x3'));var rs=require(_0x91a2('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x91a2('0x5'))['db'];var utils=require(_0x91a2('0x6'));var logger=require(_0x91a2('0x7'))(_0x91a2('0x8'));var config=require(_0x91a2('0x9'));var jayson=require(_0x91a2('0xa'));var client=jayson[_0x91a2('0xb')][_0x91a2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x7038d3,_0x385ead,_0x3c32e2){return new BPromise(function(_0x18d68b,_0x18c1bb){return client[_0x91a2('0xd')](_0x7038d3,_0x3c32e2)[_0x91a2('0xe')](function(_0x5d5e42){logger[_0x91a2('0xf')](_0x91a2('0x10'),_0x385ead,_0x91a2('0x11'));logger['debug'](_0x91a2('0x12'),_0x385ead,_0x91a2('0x11'),JSON[_0x91a2('0x13')](_0x5d5e42));if(_0x5d5e42[_0x91a2('0x14')]){if(_0x5d5e42[_0x91a2('0x14')]['code']===0x1f4){logger['error']('ZendeskField,\x20%s,\x20%s',_0x385ead,_0x5d5e42[_0x91a2('0x14')][_0x91a2('0x15')]);return _0x18c1bb(_0x5d5e42[_0x91a2('0x14')]['message']);}logger['error'](_0x91a2('0x10'),_0x385ead,_0x5d5e42[_0x91a2('0x14')][_0x91a2('0x15')]);return _0x18d68b(_0x5d5e42[_0x91a2('0x14')][_0x91a2('0x15')]);}else{logger[_0x91a2('0xf')]('ZendeskField,\x20%s,\x20%s',_0x385ead,_0x91a2('0x11'));_0x18d68b(_0x5d5e42[_0x91a2('0x16')][_0x91a2('0x15')]);}})[_0x91a2('0x17')](function(_0x3aaa1a){logger[_0x91a2('0x14')](_0x91a2('0x10'),_0x385ead,_0x3aaa1a);_0x18c1bb(_0x3aaa1a);});});}
\ No newline at end of file
index 13e5c07..630fc1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce79=['/:id/configurations','addConfiguration','delete','destroy','exports','multer','util','connect-timeout','express','Router','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','index','/:id','getConfigurations','/:id/fields','getFields','post','create'];(function(_0x424a9a,_0x2dd9af){var _0xa7831c=function(_0x512534){while(--_0x512534){_0x424a9a['push'](_0x424a9a['shift']());}};_0xa7831c(++_0x2dd9af);}(_0xce79,0xc2));var _0x9ce7=function(_0x188d31,_0x576e87){_0x188d31=_0x188d31-0x0;var _0x30ed33=_0xce79[_0x188d31];return _0x30ed33;};'use strict';var multer=require(_0x9ce7('0x0'));var util=require(_0x9ce7('0x1'));var path=require('path');var timeout=require(_0x9ce7('0x2'));var express=require(_0x9ce7('0x3'));var router=express[_0x9ce7('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9ce7('0x5'));var controller=require(_0x9ce7('0x6'));router[_0x9ce7('0x7')]('/',auth[_0x9ce7('0x8')](),controller[_0x9ce7('0x9')]);router['get'](_0x9ce7('0xa'),auth[_0x9ce7('0x8')](),controller['show']);router['get']('/:id/configurations',auth[_0x9ce7('0x8')](),controller[_0x9ce7('0xb')]);router[_0x9ce7('0x7')](_0x9ce7('0xc'),auth['isAuthenticated'](),controller[_0x9ce7('0xd')]);router[_0x9ce7('0xe')]('/',auth['isAuthenticated'](),controller[_0x9ce7('0xf')]);router[_0x9ce7('0xe')](_0x9ce7('0x10'),auth[_0x9ce7('0x8')](),controller[_0x9ce7('0x11')]);router['put'](_0x9ce7('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x9ce7('0x12')](_0x9ce7('0xa'),auth[_0x9ce7('0x8')](),controller[_0x9ce7('0x13')]);module[_0x9ce7('0x14')]=router;
\ No newline at end of file
+var _0xa9eb=['get','index','/:id','isAuthenticated','show','/:id/fields','getFields','post','create','/:id/configurations','addConfiguration','put','update','delete','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intZohoAccount.controller'];(function(_0x1ccdf7,_0x215d5a){var _0x52a0ae=function(_0x40324a){while(--_0x40324a){_0x1ccdf7['push'](_0x1ccdf7['shift']());}};_0x52a0ae(++_0x215d5a);}(_0xa9eb,0x1f1));var _0xba9e=function(_0x403c20,_0x4a7b99){_0x403c20=_0x403c20-0x0;var _0x2b271a=_0xa9eb[_0x403c20];return _0x2b271a;};'use strict';var multer=require(_0xba9e('0x0'));var util=require(_0xba9e('0x1'));var path=require(_0xba9e('0x2'));var timeout=require(_0xba9e('0x3'));var express=require(_0xba9e('0x4'));var router=express[_0xba9e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xba9e('0x6'));var interaction=require(_0xba9e('0x7'));var config=require('../../config/environment');var controller=require(_0xba9e('0x8'));router[_0xba9e('0x9')]('/',auth['isAuthenticated'](),controller[_0xba9e('0xa')]);router[_0xba9e('0x9')](_0xba9e('0xb'),auth[_0xba9e('0xc')](),controller[_0xba9e('0xd')]);router[_0xba9e('0x9')]('/:id/configurations',auth[_0xba9e('0xc')](),controller['getConfigurations']);router[_0xba9e('0x9')](_0xba9e('0xe'),auth['isAuthenticated'](),controller[_0xba9e('0xf')]);router[_0xba9e('0x10')]('/',auth[_0xba9e('0xc')](),controller[_0xba9e('0x11')]);router['post'](_0xba9e('0x12'),auth[_0xba9e('0xc')](),controller[_0xba9e('0x13')]);router[_0xba9e('0x14')](_0xba9e('0xb'),auth[_0xba9e('0xc')](),controller[_0xba9e('0x15')]);router[_0xba9e('0x16')](_0xba9e('0xb'),auth[_0xba9e('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 280fe00..62d6179 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41bb=['exports','STRING','sequelize'];(function(_0x96ad7d,_0x1017ba){var _0x32d63a=function(_0xb47ad9){while(--_0xb47ad9){_0x96ad7d['push'](_0x96ad7d['shift']());}};_0x32d63a(++_0x1017ba);}(_0x41bb,0xc5));var _0xb41b=function(_0x5b9398,_0x4e5e78){_0x5b9398=_0x5b9398-0x0;var _0x54ccab=_0x41bb[_0x5b9398];return _0x54ccab;};'use strict';var Sequelize=require(_0xb41b('0x0'));module[_0xb41b('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb41b('0x2')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0xb41b('0x2')]},'clientId':{'type':Sequelize[_0xb41b('0x2')]},'clientSecret':{'type':Sequelize[_0xb41b('0x2')]},'serverUrl':{'type':Sequelize[_0xb41b('0x2')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0xb41b('0x2')]}};
\ No newline at end of file
+var _0x9c44=['STRING'];(function(_0x4a93bb,_0x495404){var _0x208468=function(_0x1d82b7){while(--_0x1d82b7){_0x4a93bb['push'](_0x4a93bb['shift']());}};_0x208468(++_0x495404);}(_0x9c44,0x178));var _0x49c4=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0x9c44[_0x16b9ed];return _0x66b1f8;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x49c4('0x0')]},'description':{'type':Sequelize[_0x49c4('0x0')]},'host':{'type':Sequelize[_0x49c4('0x0')]},'zone':{'type':Sequelize[_0x49c4('0x0')]},'clientId':{'type':Sequelize[_0x49c4('0x0')]},'clientSecret':{'type':Sequelize[_0x49c4('0x0')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0x49c4('0x0')]}};
\ No newline at end of file
index 80f54d4..29be132 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bcb=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','sort','pick','filter','where','merge','ZohoAccount','findAll','rows','catch','params','includeAll','include','find','body','findOne','ZohoConfiguration','order','options','getConfigurations','addConfiguration','Subjects','getSubjects','Descriptions','getDescriptions','channel','create','ZohoField','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','/oauth/v2/token','clientId','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','zone','clientSecret','serverUrl','code','zoho.eu','com','substring','lastIndexOf','refreshToken','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','response','Owner','Subject','Description','WhoId','Call_Duration','Call_Result','Call_Start_Time','Call_Type','remove','includes','api_name','system_mandatory','push','display_label','custom_field','data_type','pick_list_values','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x7bcb,0x179));var _0xb7bc=function(_0x329cde,_0x1d23b7){_0x329cde=_0x329cde-0x0;var _0x29cb1c=_0x7bcb[_0x329cde];return _0x29cb1c;};'use strict';var emlformat=require(_0xb7bc('0x0'));var rimraf=require(_0xb7bc('0x1'));var zipdir=require(_0xb7bc('0x2'));var jsonpatch=require(_0xb7bc('0x3'));var rp=require('request-promise');var moment=require(_0xb7bc('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xb7bc('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb7bc('0x6'));var _=require(_0xb7bc('0x7'));var squel=require(_0xb7bc('0x8'));var crypto=require(_0xb7bc('0x9'));var jsforce=require(_0xb7bc('0xa'));var deskjs=require(_0xb7bc('0xb'));var toCsv=require(_0xb7bc('0x5'));var querystring=require(_0xb7bc('0xc'));var Papa=require(_0xb7bc('0xd'));var Redis=require(_0xb7bc('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xb7bc('0xf'));var as=require(_0xb7bc('0x10'));var hardwareService=require(_0xb7bc('0x11'));var logger=require(_0xb7bc('0x12'))(_0xb7bc('0x13'));var utils=require(_0xb7bc('0x14'));var config=require(_0xb7bc('0x15'));var licenseUtil=require(_0xb7bc('0x16'));var db=require(_0xb7bc('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x5a96f6,_0x1e08e2){_0x1e08e2=_0x1e08e2||0xcc;return function(_0x1651d4){if(_0x1651d4){return _0x5a96f6[_0xb7bc('0x18')](_0x1e08e2);}return _0x5a96f6[_0xb7bc('0x19')](_0x1e08e2)[_0xb7bc('0x1a')]();};}function respondWithResult(_0x319038,_0x979d5a){_0x979d5a=_0x979d5a||0xc8;return function(_0x3e82ab){if(_0x3e82ab){return _0x319038[_0xb7bc('0x19')](_0x979d5a)[_0xb7bc('0x1b')](_0x3e82ab);}};}function respondWithFilteredResult(_0x3caa34,_0x9a2665){return function(_0x5d7831){if(_0x5d7831){var _0x3c209c=typeof _0x9a2665['offset']==='undefined'&&typeof _0x9a2665[_0xb7bc('0x1c')]===_0xb7bc('0x1d');var _0x53fed5=_0x5d7831[_0xb7bc('0x1e')];var _0x4a9f7b=_0x3c209c?0x0:_0x9a2665['offset'];var _0x56169b=_0x3c209c?_0x5d7831[_0xb7bc('0x1e')]:_0x9a2665[_0xb7bc('0x1f')]+_0x9a2665['limit'];var _0x41051e;if(_0x56169b>=_0x53fed5){_0x56169b=_0x53fed5;_0x41051e=0xc8;}else{_0x41051e=0xce;}_0x3caa34[_0xb7bc('0x19')](_0x41051e);return _0x3caa34[_0xb7bc('0x20')](_0xb7bc('0x21'),_0x4a9f7b+'-'+_0x56169b+'/'+_0x53fed5)[_0xb7bc('0x1b')](_0x5d7831);}return null;};}function patchUpdates(_0x55bb8e){return function(_0x562890){try{jsonpatch['apply'](_0x562890,_0x55bb8e,!![]);}catch(_0x355fb1){return BPromise[_0xb7bc('0x22')](_0x355fb1);}return _0x562890[_0xb7bc('0x23')]();};}function saveUpdates(_0x1ca689,_0x592494){return function(_0x5a121c){if(_0x5a121c){return _0x5a121c[_0xb7bc('0x24')](_0x1ca689)[_0xb7bc('0x25')](function(_0x25293e){return _0x25293e;});}return null;};}function removeEntity(_0x8c62da,_0x22cb15){return function(_0x1cc036){if(_0x1cc036){return _0x1cc036[_0xb7bc('0x26')]()[_0xb7bc('0x25')](function(){_0x8c62da[_0xb7bc('0x19')](0xcc)[_0xb7bc('0x1a')]();});}};}function handleEntityNotFound(_0x589974,_0x4b75e2){return function(_0x45a488){if(!_0x45a488){_0x589974[_0xb7bc('0x18')](0x194);}return _0x45a488;};}function handleError(_0x276e7d,_0x55088f){_0x55088f=_0x55088f||0x1f4;return function(_0x5c0325){logger[_0xb7bc('0x27')](_0x5c0325[_0xb7bc('0x28')]);if(_0x5c0325[_0xb7bc('0x29')]){delete _0x5c0325[_0xb7bc('0x29')];}_0x276e7d[_0xb7bc('0x19')](_0x55088f)[_0xb7bc('0x2a')](_0x5c0325);};}exports[_0xb7bc('0x2b')]=function(_0xf99f6b,_0x341897){var _0x3c2c59={},_0x405385={},_0x214a8b={'count':0x0,'rows':[]};var _0xa91274=_[_0xb7bc('0x2c')](db['ZohoAccount'][_0xb7bc('0x2d')],function(_0x598fe9){return{'name':_0x598fe9[_0xb7bc('0x2e')],'type':_0x598fe9[_0xb7bc('0x2f')][_0xb7bc('0x30')]};});_0x405385[_0xb7bc('0x31')]=_['map'](_0xa91274,'name');_0x405385[_0xb7bc('0x32')]=_[_0xb7bc('0x33')](_0xf99f6b[_0xb7bc('0x32')]);_0x405385[_0xb7bc('0x34')]=_[_0xb7bc('0x35')](_0x405385[_0xb7bc('0x31')],_0x405385['query']);_0x3c2c59[_0xb7bc('0x36')]=_['intersection'](_0x405385['model'],qs[_0xb7bc('0x37')](_0xf99f6b[_0xb7bc('0x32')][_0xb7bc('0x37')]));_0x3c2c59[_0xb7bc('0x36')]=_0x3c2c59[_0xb7bc('0x36')][_0xb7bc('0x38')]?_0x3c2c59[_0xb7bc('0x36')]:_0x405385['model'];if(!_0xf99f6b['query'][_0xb7bc('0x39')]('nolimit')){_0x3c2c59['limit']=qs['limit'](_0xf99f6b[_0xb7bc('0x32')][_0xb7bc('0x1c')]);_0x3c2c59[_0xb7bc('0x1f')]=qs[_0xb7bc('0x1f')](_0xf99f6b[_0xb7bc('0x32')][_0xb7bc('0x1f')]);}_0x3c2c59['order']=qs['sort'](_0xf99f6b['query'][_0xb7bc('0x3a')]);_0x3c2c59['where']=qs[_0xb7bc('0x34')](_[_0xb7bc('0x3b')](_0xf99f6b[_0xb7bc('0x32')],_0x405385[_0xb7bc('0x34')]),_0xa91274);if(_0xf99f6b[_0xb7bc('0x32')][_0xb7bc('0x3c')]){_0x3c2c59[_0xb7bc('0x3d')]=_['merge'](_0x3c2c59[_0xb7bc('0x3d')],{'$or':_[_0xb7bc('0x2c')](_0xa91274,function(_0x1b377b){if(_0x1b377b[_0xb7bc('0x2f')]!=='VIRTUAL'){var _0x2a0c18={};_0x2a0c18[_0x1b377b[_0xb7bc('0x29')]]={'$like':'%'+_0xf99f6b[_0xb7bc('0x32')][_0xb7bc('0x3c')]+'%'};return _0x2a0c18;}})});}_0x3c2c59=_[_0xb7bc('0x3e')]({},_0x3c2c59,_0xf99f6b['options']);var _0x2ed39c={'where':_0x3c2c59['where']};return db[_0xb7bc('0x3f')]['count'](_0x2ed39c)[_0xb7bc('0x25')](function(_0x2eb2d0){_0x214a8b[_0xb7bc('0x1e')]=_0x2eb2d0;if(_0xf99f6b[_0xb7bc('0x32')]['includeAll']){_0x3c2c59['include']=[{'all':!![]}];}return db[_0xb7bc('0x3f')][_0xb7bc('0x40')](_0x3c2c59);})[_0xb7bc('0x25')](function(_0x5c9c73){_0x214a8b[_0xb7bc('0x41')]=_0x5c9c73;return _0x214a8b;})[_0xb7bc('0x25')](respondWithFilteredResult(_0x341897,_0x3c2c59))[_0xb7bc('0x42')](handleError(_0x341897,null));};exports['show']=function(_0x39493a,_0x2d394b){var _0x9c2bd7={'raw':![],'where':{'id':_0x39493a[_0xb7bc('0x43')]['id']}},_0x12a85d={};_0x12a85d[_0xb7bc('0x31')]=_[_0xb7bc('0x33')](db[_0xb7bc('0x3f')][_0xb7bc('0x2d')]);_0x12a85d[_0xb7bc('0x32')]=_['keys'](_0x39493a['query']);_0x12a85d[_0xb7bc('0x34')]=_[_0xb7bc('0x35')](_0x12a85d[_0xb7bc('0x31')],_0x12a85d['query']);_0x9c2bd7[_0xb7bc('0x36')]=_['intersection'](_0x12a85d[_0xb7bc('0x31')],qs[_0xb7bc('0x37')](_0x39493a[_0xb7bc('0x32')][_0xb7bc('0x37')]));_0x9c2bd7['attributes']=_0x9c2bd7[_0xb7bc('0x36')][_0xb7bc('0x38')]?_0x9c2bd7[_0xb7bc('0x36')]:_0x12a85d[_0xb7bc('0x31')];if(_0x39493a[_0xb7bc('0x32')][_0xb7bc('0x44')]){_0x9c2bd7[_0xb7bc('0x45')]=[{'all':!![]}];}_0x9c2bd7=_['merge']({},_0x9c2bd7,_0x39493a['options']);return db[_0xb7bc('0x3f')][_0xb7bc('0x46')](_0x9c2bd7)['then'](handleEntityNotFound(_0x2d394b,null))[_0xb7bc('0x25')](respondWithResult(_0x2d394b,null))[_0xb7bc('0x42')](handleError(_0x2d394b,null));};exports['create']=function(_0x50f113,_0x424e75){return db[_0xb7bc('0x3f')]['create'](_0x50f113[_0xb7bc('0x47')],{})[_0xb7bc('0x25')](respondWithResult(_0x424e75,0xc9))[_0xb7bc('0x42')](handleError(_0x424e75,null));};exports[_0xb7bc('0x24')]=function(_0x55bb5f,_0x854e00){if(_0x55bb5f[_0xb7bc('0x47')]['id']){delete _0x55bb5f[_0xb7bc('0x47')]['id'];}return db['ZohoAccount']['find']({'where':{'id':_0x55bb5f[_0xb7bc('0x43')]['id']}})[_0xb7bc('0x25')](handleEntityNotFound(_0x854e00,null))[_0xb7bc('0x25')](saveUpdates(_0x55bb5f[_0xb7bc('0x47')],null))['then'](respondWithResult(_0x854e00,null))[_0xb7bc('0x42')](handleError(_0x854e00,null));};exports[_0xb7bc('0x26')]=function(_0x3d6818,_0x1a9ef5){return db[_0xb7bc('0x3f')]['find']({'where':{'id':_0x3d6818[_0xb7bc('0x43')]['id']}})[_0xb7bc('0x25')](handleEntityNotFound(_0x1a9ef5,null))[_0xb7bc('0x25')](removeEntity(_0x1a9ef5,null))[_0xb7bc('0x42')](handleError(_0x1a9ef5,null));};exports['getConfigurations']=function(_0x565710,_0x28aad8,_0x2c4b0e){var _0x1b054b={};var _0x25a0be={};var _0x5726e9;var _0x35f479;return db[_0xb7bc('0x3f')][_0xb7bc('0x48')]({'where':{'id':_0x565710[_0xb7bc('0x43')]['id']}})[_0xb7bc('0x25')](handleEntityNotFound(_0x28aad8,null))[_0xb7bc('0x25')](function(_0x2398b2){if(_0x2398b2){_0x5726e9=_0x2398b2;_0x25a0be[_0xb7bc('0x31')]=_[_0xb7bc('0x33')](db[_0xb7bc('0x49')]['rawAttributes']);_0x25a0be[_0xb7bc('0x32')]=_['keys'](_0x565710[_0xb7bc('0x32')]);_0x25a0be[_0xb7bc('0x34')]=_[_0xb7bc('0x35')](_0x25a0be['model'],_0x25a0be['query']);_0x1b054b[_0xb7bc('0x36')]=_[_0xb7bc('0x35')](_0x25a0be[_0xb7bc('0x31')],qs[_0xb7bc('0x37')](_0x565710[_0xb7bc('0x32')]['fields']));_0x1b054b['attributes']=_0x1b054b['attributes'][_0xb7bc('0x38')]?_0x1b054b['attributes']:_0x25a0be[_0xb7bc('0x31')];_0x1b054b[_0xb7bc('0x4a')]=qs[_0xb7bc('0x3a')](_0x565710[_0xb7bc('0x32')][_0xb7bc('0x3a')]);_0x1b054b[_0xb7bc('0x3d')]=qs['filters'](_[_0xb7bc('0x3b')](_0x565710['query'],_0x25a0be['filters']));if(_0x565710['query'][_0xb7bc('0x3c')]){_0x1b054b[_0xb7bc('0x3d')]=_['merge'](_0x1b054b[_0xb7bc('0x3d')],{'$or':_[_0xb7bc('0x2c')](_0x1b054b['attributes'],function(_0x4a074d){var _0x4106a7={};_0x4106a7[_0x4a074d]={'$like':'%'+_0x565710['query'][_0xb7bc('0x3c')]+'%'};return _0x4106a7;})});}_0x1b054b=_[_0xb7bc('0x3e')]({},_0x1b054b,_0x565710[_0xb7bc('0x4b')]);return _0x5726e9[_0xb7bc('0x4c')](_0x1b054b);}})['then'](function(_0x100d71){if(_0x100d71){_0x35f479=_0x100d71[_0xb7bc('0x38')];if(!_0x565710[_0xb7bc('0x32')]['hasOwnProperty']('nolimit')){_0x1b054b[_0xb7bc('0x1c')]=qs[_0xb7bc('0x1c')](_0x565710[_0xb7bc('0x32')]['limit']);_0x1b054b[_0xb7bc('0x1f')]=qs['offset'](_0x565710[_0xb7bc('0x32')]['offset']);}return _0x5726e9[_0xb7bc('0x4c')](_0x1b054b);}})[_0xb7bc('0x25')](function(_0x48756e){if(_0x48756e){return _0x48756e?{'count':_0x35f479,'rows':_0x48756e}:null;}})[_0xb7bc('0x25')](respondWithResult(_0x28aad8,null))[_0xb7bc('0x42')](handleError(_0x28aad8,null));};exports[_0xb7bc('0x4d')]=function(_0x1bb891,_0x17679e,_0x969609){if(_0x1bb891[_0xb7bc('0x47')]['id']){delete _0x1bb891['body']['id'];}return db[_0xb7bc('0x3f')][_0xb7bc('0x48')]({'where':{'id':_0x1bb891['params']['id']}})[_0xb7bc('0x25')](handleEntityNotFound(_0x17679e,null))[_0xb7bc('0x25')](function(_0x531934){if(_0x531934){_0x1bb891[_0xb7bc('0x47')]['AccountId']=_0x531934['id'];_0x1bb891[_0xb7bc('0x47')][_0xb7bc('0x4e')]=integrations[_0xb7bc('0x4f')](_0x1bb891[_0xb7bc('0x47')]['channel'],_0x1bb891['body'][_0xb7bc('0x2f')]);_0x1bb891[_0xb7bc('0x47')][_0xb7bc('0x50')]=integrations[_0xb7bc('0x51')](_0x1bb891[_0xb7bc('0x47')][_0xb7bc('0x52')],_0x1bb891['body'][_0xb7bc('0x2f')]);return db[_0xb7bc('0x49')][_0xb7bc('0x53')](_0x1bb891['body'],{'include':[{'model':db[_0xb7bc('0x54')],'as':_0xb7bc('0x4e')},{'model':db[_0xb7bc('0x54')],'as':_0xb7bc('0x50')}]});}return null;})[_0xb7bc('0x25')](respondWithResult(_0x17679e,null))['catch'](handleError(_0x17679e,null));};function getAccessToken(_0x5953e7){return new Promise(function(_0x417666,_0x12f064){var _0x3c732d;switch(_0x5953e7['zone']){case'US':_0x3c732d=_0xb7bc('0x55');break;case'AU':_0x3c732d=_0xb7bc('0x56');break;case'EU':_0x3c732d=_0xb7bc('0x57');break;case'IN':_0x3c732d=_0xb7bc('0x58');break;case'CN':_0x3c732d=_0xb7bc('0x59');break;default:_0x3c732d=_0xb7bc('0x57');break;}var _0x3fd69d={'method':'POST','uri':_0x3c732d+_0xb7bc('0x5a'),'qs':{'refresh_token':_0x5953e7['refreshToken'],'client_id':_0x5953e7[_0xb7bc('0x5b')],'client_secret':_0x5953e7['clientSecret'],'grant_type':'refresh_token'},'json':!![]};return rp(_0x3fd69d)[_0xb7bc('0x25')](function(_0x55e15d){if(_0x55e15d[_0xb7bc('0x5c')]){_0x417666(_0x55e15d[_0xb7bc('0x5c')]);}else{_0x12f064(_0xb7bc('0x5d'));}})['catch'](function(_0x8f7bcf){_0x12f064(_0x8f7bcf);});});}exports[_0xb7bc('0x5e')]=function(_0x3fa963,_0x49f462,_0x5ce313){var _0x2d6fdc,_0x2ce483,_0x1ba446,_0x5def30,_0x432f1b;return db['ZohoAccount'][_0xb7bc('0x48')]({'where':{'id':_0x3fa963[_0xb7bc('0x43')]['id']},'attributes':['id',_0xb7bc('0x5f'),_0xb7bc('0x60'),'clientId',_0xb7bc('0x61'),_0xb7bc('0x62'),_0xb7bc('0x63'),'refreshToken']})[_0xb7bc('0x25')](handleEntityNotFound(_0x49f462,null))[_0xb7bc('0x25')](function(_0xbe6603){_0x432f1b=_0xbe6603;_0x2d6fdc=_0x432f1b[_0xb7bc('0x5f')];_0x2ce483=_0x2d6fdc===_0xb7bc('0x64')?'eu':_0xb7bc('0x65');_0x1ba446=_0x432f1b[_0xb7bc('0x62')];var _0x2527ee=_0x1ba446['slice'](-0x1);if(_0x2527ee==='/'||_0x2527ee==='\x5c'||_0x2527ee===':'){_0x1ba446=_0x1ba446[_0xb7bc('0x66')](0x0,_0x1ba446[_0xb7bc('0x67')](_0x2527ee));}if(!_0x432f1b[_0xb7bc('0x68')]){throw new Error(_0xb7bc('0x69'));}return getAccessToken(_0x432f1b);})[_0xb7bc('0x25')](function(_0x25a831){if(_0x25a831){return rp({'method':_0xb7bc('0x6a'),'uri':util[_0xb7bc('0x6b')](_0xb7bc('0x6c'),_0x2ce483),'qs':{'module':_0xb7bc('0x6d')},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x25a831},'json':!![]});}})['then'](function(_0x564218){if(_0x564218){if(_0x564218[_0xb7bc('0x6e')]&&_0x564218[_0xb7bc('0x6e')][_0xb7bc('0x27')]){throw new Error(_0x564218[_0xb7bc('0x6e')][_0xb7bc('0x27')]['message']);}var _0x11aa01=[];var _0x4e3b31=[];var _0xeb7b70=[_0xb7bc('0x6f'),_0xb7bc('0x70'),_0xb7bc('0x71'),_0xb7bc('0x72'),_0xb7bc('0x73'),_0xb7bc('0x74'),_0xb7bc('0x75'),_0xb7bc('0x76')];_0x4e3b31=_[_0xb7bc('0x77')](_0x564218[_0xb7bc('0x37')],function(_0x4f8862){return _0xeb7b70[_0xb7bc('0x78')](_0x4f8862[_0xb7bc('0x79')]);});for(var _0x5e5b41=0x0;_0x5e5b41<_0x4e3b31[_0xb7bc('0x38')];_0x5e5b41++){if(_0x4e3b31[_0x5e5b41][_0xb7bc('0x7a')]===![]){_0x11aa01[_0xb7bc('0x7b')]({'id':_0x4e3b31[_0x5e5b41]['id'],'name':_0x4e3b31[_0x5e5b41][_0xb7bc('0x7c')],'custom':_0x4e3b31[_0x5e5b41][_0xb7bc('0x7d')],'options':_0x4e3b31[_0x5e5b41][_0xb7bc('0x7e')]==='picklist'&&_0x4e3b31[_0x5e5b41][_0xb7bc('0x7f')][_0xb7bc('0x38')]>-0x1?_[_0xb7bc('0x2c')](_0x4e3b31[_0x5e5b41]['pick_list_values'],function(_0x428bc6){return{'name':_0x428bc6,'value':_0x428bc6};}):[]});}}return{'count':_0x11aa01[_0xb7bc('0x38')],'rows':_0x11aa01};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x49f462,null))['catch'](function(_0x9a48f6){var _0x3d0e85=_0x3fa963[_0xb7bc('0x32')]['test']?0x1f4:_0x9a48f6[_0xb7bc('0x80')]||0x1f4;logger[_0xb7bc('0x27')](_0xb7bc('0x81'),_0xb7bc('0x5e'),_0x3d0e85,JSON[_0xb7bc('0x82')](_0x9a48f6));delete _0x9a48f6[_0xb7bc('0x29')];if(_0x3d0e85===0x191){_0x3d0e85=0x190;}_0x49f462[_0xb7bc('0x19')](_0x3d0e85)[_0xb7bc('0x2a')](_0x3fa963['query']['test']?{'message':_0xb7bc('0x83'),'statusCode':_0x9a48f6['statusCode']}:_0x9a48f6);});};
\ No newline at end of file
+var _0x1533=['status','json','undefined','limit','count','offset','set','Content-Range','apply','update','then','end','stack','name','send','index','map','rawAttributes','type','query','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','ZohoAccount','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','destroy','findOne','getConfigurations','length','nolimit','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','clientId','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','serverUrl','refreshToken','zoho.eu','com','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','Owner','Subject','WhoId','Call_Duration','Call_Result','Call_Type','remove','includes','api_name','system_mandatory','push','display_label','custom_field','data_type','pick_list_values','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../mysqldb','../../components/integrations/configuration','sendStatus'];(function(_0x23bf3b,_0x1345d8){var _0x3b1cd4=function(_0x2919e4){while(--_0x2919e4){_0x23bf3b['push'](_0x23bf3b['shift']());}};_0x3b1cd4(++_0x1345d8);}(_0x1533,0x1ef));var _0x3153=function(_0x14d08c,_0x5b7091){_0x14d08c=_0x14d08c-0x0;var _0x5f5bd9=_0x1533[_0x14d08c];return _0x5f5bd9;};'use strict';var emlformat=require(_0x3153('0x0'));var rimraf=require(_0x3153('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3153('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3153('0x3'));var Mustache=require(_0x3153('0x4'));var util=require(_0x3153('0x5'));var path=require(_0x3153('0x6'));var sox=require(_0x3153('0x7'));var csv=require('to-csv');var ejs=require(_0x3153('0x8'));var fs=require('fs');var fs_extra=require(_0x3153('0x9'));var _=require(_0x3153('0xa'));var squel=require(_0x3153('0xb'));var crypto=require(_0x3153('0xc'));var jsforce=require(_0x3153('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x3153('0xe'));var querystring=require(_0x3153('0xf'));var Papa=require('papaparse');var Redis=require(_0x3153('0x10'));var authService=require(_0x3153('0x11'));var qs=require(_0x3153('0x12'));var as=require(_0x3153('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3153('0x14'))(_0x3153('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3153('0x16'))['db'];var integrations=require(_0x3153('0x17'));function respondWithStatusCode(_0x5c307e,_0xbbb481){_0xbbb481=_0xbbb481||0xcc;return function(_0x495f71){if(_0x495f71){return _0x5c307e[_0x3153('0x18')](_0xbbb481);}return _0x5c307e[_0x3153('0x19')](_0xbbb481)['end']();};}function respondWithResult(_0x5e32bc,_0xc5bf79){_0xc5bf79=_0xc5bf79||0xc8;return function(_0x3e2cb6){if(_0x3e2cb6){return _0x5e32bc[_0x3153('0x19')](_0xc5bf79)[_0x3153('0x1a')](_0x3e2cb6);}};}function respondWithFilteredResult(_0x344841,_0x3ea226){return function(_0x3b7e3b){if(_0x3b7e3b){var _0x53beb9=typeof _0x3ea226['offset']===_0x3153('0x1b')&&typeof _0x3ea226[_0x3153('0x1c')]===_0x3153('0x1b');var _0x4d684a=_0x3b7e3b[_0x3153('0x1d')];var _0x4cd69e=_0x53beb9?0x0:_0x3ea226['offset'];var _0x292edf=_0x53beb9?_0x3b7e3b[_0x3153('0x1d')]:_0x3ea226[_0x3153('0x1e')]+_0x3ea226[_0x3153('0x1c')];var _0x2a29c4;if(_0x292edf>=_0x4d684a){_0x292edf=_0x4d684a;_0x2a29c4=0xc8;}else{_0x2a29c4=0xce;}_0x344841[_0x3153('0x19')](_0x2a29c4);return _0x344841[_0x3153('0x1f')](_0x3153('0x20'),_0x4cd69e+'-'+_0x292edf+'/'+_0x4d684a)['json'](_0x3b7e3b);}return null;};}function patchUpdates(_0x5285fd){return function(_0x425944){try{jsonpatch[_0x3153('0x21')](_0x425944,_0x5285fd,!![]);}catch(_0x1c8e48){return BPromise['reject'](_0x1c8e48);}return _0x425944['save']();};}function saveUpdates(_0x2f6f62,_0x156d76){return function(_0x4072a6){if(_0x4072a6){return _0x4072a6[_0x3153('0x22')](_0x2f6f62)[_0x3153('0x23')](function(_0x5a41f7){return _0x5a41f7;});}return null;};}function removeEntity(_0x51af20,_0xdada4f){return function(_0x5bc522){if(_0x5bc522){return _0x5bc522['destroy']()[_0x3153('0x23')](function(){_0x51af20[_0x3153('0x19')](0xcc)[_0x3153('0x24')]();});}};}function handleEntityNotFound(_0x21556e,_0x344a85){return function(_0x54e3d8){if(!_0x54e3d8){_0x21556e[_0x3153('0x18')](0x194);}return _0x54e3d8;};}function handleError(_0x50fc6a,_0x5e791b){_0x5e791b=_0x5e791b||0x1f4;return function(_0x296445){logger['error'](_0x296445[_0x3153('0x25')]);if(_0x296445[_0x3153('0x26')]){delete _0x296445[_0x3153('0x26')];}_0x50fc6a[_0x3153('0x19')](_0x5e791b)[_0x3153('0x27')](_0x296445);};}exports[_0x3153('0x28')]=function(_0x17f38d,_0x3044a7){var _0x1fc906={},_0x2cd050={},_0x457ce6={'count':0x0,'rows':[]};var _0x2d6c81=_[_0x3153('0x29')](db['ZohoAccount'][_0x3153('0x2a')],function(_0x2398ef){return{'name':_0x2398ef['fieldName'],'type':_0x2398ef[_0x3153('0x2b')]['key']};});_0x2cd050['model']=_['map'](_0x2d6c81,_0x3153('0x26'));_0x2cd050[_0x3153('0x2c')]=_['keys'](_0x17f38d['query']);_0x2cd050[_0x3153('0x2d')]=_[_0x3153('0x2e')](_0x2cd050[_0x3153('0x2f')],_0x2cd050['query']);_0x1fc906[_0x3153('0x30')]=_[_0x3153('0x2e')](_0x2cd050[_0x3153('0x2f')],qs[_0x3153('0x31')](_0x17f38d['query'][_0x3153('0x31')]));_0x1fc906[_0x3153('0x30')]=_0x1fc906[_0x3153('0x30')]['length']?_0x1fc906['attributes']:_0x2cd050[_0x3153('0x2f')];if(!_0x17f38d[_0x3153('0x2c')][_0x3153('0x32')]('nolimit')){_0x1fc906['limit']=qs[_0x3153('0x1c')](_0x17f38d[_0x3153('0x2c')][_0x3153('0x1c')]);_0x1fc906[_0x3153('0x1e')]=qs['offset'](_0x17f38d['query']['offset']);}_0x1fc906[_0x3153('0x33')]=qs[_0x3153('0x34')](_0x17f38d[_0x3153('0x2c')][_0x3153('0x34')]);_0x1fc906[_0x3153('0x35')]=qs[_0x3153('0x2d')](_[_0x3153('0x36')](_0x17f38d[_0x3153('0x2c')],_0x2cd050[_0x3153('0x2d')]),_0x2d6c81);if(_0x17f38d[_0x3153('0x2c')][_0x3153('0x37')]){_0x1fc906[_0x3153('0x35')]=_[_0x3153('0x38')](_0x1fc906[_0x3153('0x35')],{'$or':_['map'](_0x2d6c81,function(_0x5d3efb){if(_0x5d3efb[_0x3153('0x2b')]!==_0x3153('0x39')){var _0x119286={};_0x119286[_0x5d3efb[_0x3153('0x26')]]={'$like':'%'+_0x17f38d[_0x3153('0x2c')][_0x3153('0x37')]+'%'};return _0x119286;}})});}_0x1fc906=_[_0x3153('0x38')]({},_0x1fc906,_0x17f38d[_0x3153('0x3a')]);var _0x4a6a27={'where':_0x1fc906[_0x3153('0x35')]};return db[_0x3153('0x3b')][_0x3153('0x1d')](_0x4a6a27)[_0x3153('0x23')](function(_0x3ac981){_0x457ce6[_0x3153('0x1d')]=_0x3ac981;if(_0x17f38d[_0x3153('0x2c')][_0x3153('0x3c')]){_0x1fc906[_0x3153('0x3d')]=[{'all':!![]}];}return db[_0x3153('0x3b')][_0x3153('0x3e')](_0x1fc906);})[_0x3153('0x23')](function(_0x282ad2){_0x457ce6[_0x3153('0x3f')]=_0x282ad2;return _0x457ce6;})[_0x3153('0x23')](respondWithFilteredResult(_0x3044a7,_0x1fc906))[_0x3153('0x40')](handleError(_0x3044a7,null));};exports[_0x3153('0x41')]=function(_0x3c7403,_0x37acbb){var _0x34972b={'raw':![],'where':{'id':_0x3c7403[_0x3153('0x42')]['id']}},_0x4bd34f={};_0x4bd34f[_0x3153('0x2f')]=_[_0x3153('0x43')](db[_0x3153('0x3b')][_0x3153('0x2a')]);_0x4bd34f[_0x3153('0x2c')]=_['keys'](_0x3c7403['query']);_0x4bd34f[_0x3153('0x2d')]=_[_0x3153('0x2e')](_0x4bd34f[_0x3153('0x2f')],_0x4bd34f[_0x3153('0x2c')]);_0x34972b[_0x3153('0x30')]=_[_0x3153('0x2e')](_0x4bd34f[_0x3153('0x2f')],qs[_0x3153('0x31')](_0x3c7403[_0x3153('0x2c')][_0x3153('0x31')]));_0x34972b[_0x3153('0x30')]=_0x34972b[_0x3153('0x30')]['length']?_0x34972b['attributes']:_0x4bd34f['model'];if(_0x3c7403[_0x3153('0x2c')]['includeAll']){_0x34972b['include']=[{'all':!![]}];}_0x34972b=_[_0x3153('0x38')]({},_0x34972b,_0x3c7403['options']);return db[_0x3153('0x3b')][_0x3153('0x44')](_0x34972b)[_0x3153('0x23')](handleEntityNotFound(_0x37acbb,null))['then'](respondWithResult(_0x37acbb,null))[_0x3153('0x40')](handleError(_0x37acbb,null));};exports[_0x3153('0x45')]=function(_0x15128c,_0xbbbc08){return db[_0x3153('0x3b')][_0x3153('0x45')](_0x15128c[_0x3153('0x46')],{})[_0x3153('0x23')](respondWithResult(_0xbbbc08,0xc9))[_0x3153('0x40')](handleError(_0xbbbc08,null));};exports[_0x3153('0x22')]=function(_0x2beb7c,_0xc7ed55){if(_0x2beb7c[_0x3153('0x46')]['id']){delete _0x2beb7c[_0x3153('0x46')]['id'];}return db['ZohoAccount'][_0x3153('0x44')]({'where':{'id':_0x2beb7c[_0x3153('0x42')]['id']}})[_0x3153('0x23')](handleEntityNotFound(_0xc7ed55,null))[_0x3153('0x23')](saveUpdates(_0x2beb7c[_0x3153('0x46')],null))[_0x3153('0x23')](respondWithResult(_0xc7ed55,null))[_0x3153('0x40')](handleError(_0xc7ed55,null));};exports[_0x3153('0x47')]=function(_0x3d76bc,_0x4cbad7){return db['ZohoAccount']['find']({'where':{'id':_0x3d76bc['params']['id']}})['then'](handleEntityNotFound(_0x4cbad7,null))['then'](removeEntity(_0x4cbad7,null))['catch'](handleError(_0x4cbad7,null));};exports['getConfigurations']=function(_0x30b91b,_0x2b8f3c,_0x28936c){var _0x295ac0={};var _0x413899={};var _0x33dfba;var _0x5970b1;return db[_0x3153('0x3b')][_0x3153('0x48')]({'where':{'id':_0x30b91b[_0x3153('0x42')]['id']}})[_0x3153('0x23')](handleEntityNotFound(_0x2b8f3c,null))[_0x3153('0x23')](function(_0x9142a3){if(_0x9142a3){_0x33dfba=_0x9142a3;_0x413899[_0x3153('0x2f')]=_[_0x3153('0x43')](db['ZohoConfiguration'][_0x3153('0x2a')]);_0x413899[_0x3153('0x2c')]=_[_0x3153('0x43')](_0x30b91b[_0x3153('0x2c')]);_0x413899[_0x3153('0x2d')]=_[_0x3153('0x2e')](_0x413899[_0x3153('0x2f')],_0x413899[_0x3153('0x2c')]);_0x295ac0['attributes']=_['intersection'](_0x413899[_0x3153('0x2f')],qs[_0x3153('0x31')](_0x30b91b[_0x3153('0x2c')][_0x3153('0x31')]));_0x295ac0['attributes']=_0x295ac0[_0x3153('0x30')]['length']?_0x295ac0[_0x3153('0x30')]:_0x413899['model'];_0x295ac0[_0x3153('0x33')]=qs[_0x3153('0x34')](_0x30b91b[_0x3153('0x2c')]['sort']);_0x295ac0[_0x3153('0x35')]=qs[_0x3153('0x2d')](_['pick'](_0x30b91b[_0x3153('0x2c')],_0x413899[_0x3153('0x2d')]));if(_0x30b91b[_0x3153('0x2c')][_0x3153('0x37')]){_0x295ac0[_0x3153('0x35')]=_[_0x3153('0x38')](_0x295ac0[_0x3153('0x35')],{'$or':_[_0x3153('0x29')](_0x295ac0[_0x3153('0x30')],function(_0x25eeda){var _0x1cac0b={};_0x1cac0b[_0x25eeda]={'$like':'%'+_0x30b91b[_0x3153('0x2c')][_0x3153('0x37')]+'%'};return _0x1cac0b;})});}_0x295ac0=_[_0x3153('0x38')]({},_0x295ac0,_0x30b91b[_0x3153('0x3a')]);return _0x33dfba[_0x3153('0x49')](_0x295ac0);}})[_0x3153('0x23')](function(_0x341637){if(_0x341637){_0x5970b1=_0x341637[_0x3153('0x4a')];if(!_0x30b91b[_0x3153('0x2c')][_0x3153('0x32')](_0x3153('0x4b'))){_0x295ac0[_0x3153('0x1c')]=qs['limit'](_0x30b91b[_0x3153('0x2c')][_0x3153('0x1c')]);_0x295ac0[_0x3153('0x1e')]=qs[_0x3153('0x1e')](_0x30b91b[_0x3153('0x2c')][_0x3153('0x1e')]);}return _0x33dfba[_0x3153('0x49')](_0x295ac0);}})['then'](function(_0x45bf9e){if(_0x45bf9e){return _0x45bf9e?{'count':_0x5970b1,'rows':_0x45bf9e}:null;}})['then'](respondWithResult(_0x2b8f3c,null))['catch'](handleError(_0x2b8f3c,null));};exports[_0x3153('0x4c')]=function(_0x726fa9,_0x512093,_0x586da9){if(_0x726fa9[_0x3153('0x46')]['id']){delete _0x726fa9[_0x3153('0x46')]['id'];}return db[_0x3153('0x3b')][_0x3153('0x48')]({'where':{'id':_0x726fa9[_0x3153('0x42')]['id']}})[_0x3153('0x23')](handleEntityNotFound(_0x512093,null))[_0x3153('0x23')](function(_0x35a713){if(_0x35a713){_0x726fa9[_0x3153('0x46')][_0x3153('0x4d')]=_0x35a713['id'];_0x726fa9[_0x3153('0x46')][_0x3153('0x4e')]=integrations[_0x3153('0x4f')](_0x726fa9[_0x3153('0x46')][_0x3153('0x50')],_0x726fa9[_0x3153('0x46')][_0x3153('0x2b')]);_0x726fa9[_0x3153('0x46')][_0x3153('0x51')]=integrations['getDescriptions'](_0x726fa9[_0x3153('0x46')][_0x3153('0x50')],_0x726fa9[_0x3153('0x46')][_0x3153('0x2b')]);return db['ZohoConfiguration'][_0x3153('0x45')](_0x726fa9[_0x3153('0x46')],{'include':[{'model':db['ZohoField'],'as':'Subjects'},{'model':db[_0x3153('0x52')],'as':_0x3153('0x51')}]});}return null;})[_0x3153('0x23')](respondWithResult(_0x512093,null))[_0x3153('0x40')](handleError(_0x512093,null));};function getAccessToken(_0x1e9379){return new Promise(function(_0x26451a,_0x21f0f5){var _0xbf8725;switch(_0x1e9379[_0x3153('0x53')]){case'US':_0xbf8725=_0x3153('0x54');break;case'AU':_0xbf8725=_0x3153('0x55');break;case'EU':_0xbf8725=_0x3153('0x56');break;case'IN':_0xbf8725=_0x3153('0x57');break;case'CN':_0xbf8725=_0x3153('0x58');break;default:_0xbf8725=_0x3153('0x56');break;}var _0x4030b0={'method':'POST','uri':_0xbf8725+'/oauth/v2/token','qs':{'refresh_token':_0x1e9379['refreshToken'],'client_id':_0x1e9379[_0x3153('0x59')],'client_secret':_0x1e9379[_0x3153('0x5a')],'grant_type':_0x3153('0x5b')},'json':!![]};return rp(_0x4030b0)[_0x3153('0x23')](function(_0x4680dc){if(_0x4680dc[_0x3153('0x5c')]){_0x26451a(_0x4680dc['access_token']);}else{_0x21f0f5(_0x3153('0x5d'));}})['catch'](function(_0x534cec){_0x21f0f5(_0x534cec);});});}exports[_0x3153('0x5e')]=function(_0x496c64,_0x33ff86,_0x496a7f){var _0x1347a7,_0x4c6cf5,_0x16dbd2,_0x1e72a8,_0x4e3e6e;return db['ZohoAccount']['findOne']({'where':{'id':_0x496c64[_0x3153('0x42')]['id']},'attributes':['id',_0x3153('0x5f'),_0x3153('0x53'),_0x3153('0x59'),'clientSecret',_0x3153('0x60'),'code',_0x3153('0x61')]})['then'](handleEntityNotFound(_0x33ff86,null))[_0x3153('0x23')](function(_0x51b609){_0x4e3e6e=_0x51b609;_0x1347a7=_0x4e3e6e[_0x3153('0x5f')];_0x4c6cf5=_0x1347a7===_0x3153('0x62')?'eu':_0x3153('0x63');_0x16dbd2=_0x4e3e6e[_0x3153('0x60')];var _0x15e558=_0x16dbd2[_0x3153('0x64')](-0x1);if(_0x15e558==='/'||_0x15e558==='\x5c'||_0x15e558===':'){_0x16dbd2=_0x16dbd2[_0x3153('0x65')](0x0,_0x16dbd2[_0x3153('0x66')](_0x15e558));}if(!_0x4e3e6e[_0x3153('0x61')]){throw new Error(_0x3153('0x67'));}return getAccessToken(_0x4e3e6e);})[_0x3153('0x23')](function(_0x549057){if(_0x549057){return rp({'method':'GET','uri':util[_0x3153('0x68')](_0x3153('0x69'),_0x4c6cf5),'qs':{'module':_0x3153('0x6a')},'headers':{'Authorization':_0x3153('0x6b')+_0x549057},'json':!![]});}})[_0x3153('0x23')](function(_0x4d9f31){if(_0x4d9f31){if(_0x4d9f31[_0x3153('0x6c')]&&_0x4d9f31[_0x3153('0x6c')]['error']){throw new Error(_0x4d9f31[_0x3153('0x6c')]['error']['message']);}var _0x340248=[];var _0x5abfb2=[];var _0x5c073c=[_0x3153('0x6d'),_0x3153('0x6e'),'Description',_0x3153('0x6f'),_0x3153('0x70'),_0x3153('0x71'),'Call_Start_Time',_0x3153('0x72')];_0x5abfb2=_[_0x3153('0x73')](_0x4d9f31[_0x3153('0x31')],function(_0x4dbc46){return _0x5c073c[_0x3153('0x74')](_0x4dbc46[_0x3153('0x75')]);});for(var _0x1a02e0=0x0;_0x1a02e0<_0x5abfb2['length'];_0x1a02e0++){if(_0x5abfb2[_0x1a02e0][_0x3153('0x76')]===![]){_0x340248[_0x3153('0x77')]({'id':_0x5abfb2[_0x1a02e0]['id'],'name':_0x5abfb2[_0x1a02e0][_0x3153('0x78')],'custom':_0x5abfb2[_0x1a02e0][_0x3153('0x79')],'options':_0x5abfb2[_0x1a02e0][_0x3153('0x7a')]==='picklist'&&_0x5abfb2[_0x1a02e0][_0x3153('0x7b')][_0x3153('0x4a')]>-0x1?_[_0x3153('0x29')](_0x5abfb2[_0x1a02e0]['pick_list_values'],function(_0x20e13a){return{'name':_0x20e13a,'value':_0x20e13a};}):[]});}}return{'count':_0x340248['length'],'rows':_0x340248};}else{return{'count':0x0,'rows':[]};}})[_0x3153('0x23')](respondWithResult(_0x33ff86,null))[_0x3153('0x40')](function(_0x4ee7b0){var _0x42b4b3=_0x496c64['query']['test']?0x1f4:_0x4ee7b0[_0x3153('0x7c')]||0x1f4;logger[_0x3153('0x7d')](_0x3153('0x7e'),_0x3153('0x5e'),_0x42b4b3,JSON[_0x3153('0x7f')](_0x4ee7b0));delete _0x4ee7b0['name'];if(_0x42b4b3===0x191){_0x42b4b3=0x190;}_0x33ff86['status'](_0x42b4b3)[_0x3153('0x27')](_0x496c64[_0x3153('0x2c')][_0x3153('0x80')]?{'message':_0x3153('0x81'),'statusCode':_0x4ee7b0['statusCode']}:_0x4ee7b0);});};
\ No newline at end of file
index 24fbeba..2aeb29d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae4b=['changed','serverUrl','clientId','clientSecret','host','slice','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.eu','/oauth/v2/token','authorization_code','code','application/x-www-form-urlencoded','then','refreshToken','refresh_token','info','name','format','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','error','https://accounts.zoho.com.cn','POST','parse','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','lodash','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','zone'];(function(_0x36c5b0,_0x5001da){var _0xf19333=function(_0x1e880a){while(--_0x1e880a){_0x36c5b0['push'](_0x36c5b0['shift']());}};_0xf19333(++_0x5001da);}(_0xae4b,0x17e));var _0xbae4=function(_0x305be6,_0x16bafd){_0x305be6=_0x305be6-0x0;var _0x572a4b=_0xae4b[_0x305be6];return _0x572a4b;};'use strict';var _=require(_0xbae4('0x0'));var util=require('util');var logger=require(_0xbae4('0x1'))(_0xbae4('0x2'));var moment=require(_0xbae4('0x3'));var BPromise=require(_0xbae4('0x4'));var rp=require(_0xbae4('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xbae4('0x6'));var attributes=require(_0xbae4('0x7'));var integrations=require(_0xbae4('0x8'));module[_0xbae4('0x9')]=function(_0x472346,_0x5d644b){return _0x472346[_0xbae4('0xa')](_0xbae4('0xb'),attributes,{'tableName':_0xbae4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x3c3f1e,_0x194079,_0x159d13){if(_0x3c3f1e['changed'](_0xbae4('0xd'))||_0x3c3f1e[_0xbae4('0xe')](_0xbae4('0xf'))||_0x3c3f1e[_0xbae4('0xe')](_0xbae4('0x10'))||_0x3c3f1e['changed'](_0xbae4('0x11'))||_0x3c3f1e[_0xbae4('0xe')]('code')||_0x3c3f1e[_0xbae4('0xe')](_0xbae4('0x12'))){var _0x17086a,_0x43b3c4;_0x17086a=_0x3c3f1e[_0xbae4('0xf')];var _0x2b0b5f=_0x17086a[_0xbae4('0x13')](-0x1);if(_0x2b0b5f==='/'||_0x2b0b5f==='\x5c'||_0x2b0b5f===':'){_0x17086a=_0x17086a[_0xbae4('0x14')](0x0,_0x17086a[_0xbae4('0x15')](_0x2b0b5f));}switch(_0x3c3f1e[_0xbae4('0xd')]){case'US':_0x43b3c4=_0xbae4('0x16');break;case'AU':_0x43b3c4=_0xbae4('0x17');break;case'IN':_0x43b3c4=_0xbae4('0x18');break;case'CN':_0x43b3c4='https://accounts.zoho.com.cn';break;default:_0x43b3c4=_0xbae4('0x19');break;}var _0x4d47a2={'method':'POST','uri':_0x43b3c4+_0xbae4('0x1a'),'form':{'grant_type':_0xbae4('0x1b'),'client_id':_0x3c3f1e['clientId'],'client_secret':_0x3c3f1e['clientSecret'],'redirect_uri':_0x3c3f1e['serverUrl'],'code':_0x3c3f1e[_0xbae4('0x1c')]},'headers':{'Content-Type':_0xbae4('0x1d')}};return rp(_0x4d47a2)[_0xbae4('0x1e')](function(_0x28df41){var _0x419777=JSON['parse'](_0x28df41);if(_0x419777['refresh_token']){_0x3c3f1e[_0xbae4('0x1f')]=_0x419777[_0xbae4('0x20')];logger[_0xbae4('0x21')](util['format']('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x3c3f1e[_0xbae4('0x22')],_0x3c3f1e['id']));}else{logger['error'](util[_0xbae4('0x23')](_0xbae4('0x24'),_0x3c3f1e['name'],_0x3c3f1e['id']),util[_0xbae4('0x25')](_0x419777,{'showHidden':![],'depth':null}));}return _0x159d13(null,_0x194079);})[_0xbae4('0x26')](function(_0x4a9d36){logger[_0xbae4('0x27')](util[_0xbae4('0x23')](_0xbae4('0x24'),_0x3c3f1e['name'],_0x3c3f1e['id']),util[_0xbae4('0x25')](parsedResult,{'showHidden':![],'depth':null}));return _0x159d13(_0x4a9d36);});}else{return _0x159d13(null,_0x194079);}},'beforeUpdate':function(_0x1a6661,_0x59b270,_0x439b67){if(_0x1a6661['changed'](_0xbae4('0xd'))||_0x1a6661[_0xbae4('0xe')](_0xbae4('0xf'))||_0x1a6661['changed'](_0xbae4('0x10'))||_0x1a6661['changed'](_0xbae4('0x11'))||_0x1a6661[_0xbae4('0xe')](_0xbae4('0x1c'))||_0x1a6661[_0xbae4('0xe')](_0xbae4('0x12'))){var _0x2e8631,_0x2ccbd7;_0x2e8631=_0x1a6661['serverUrl'];var _0x499489=_0x2e8631[_0xbae4('0x13')](-0x1);if(_0x499489==='/'||_0x499489==='\x5c'||_0x499489===':'){_0x2e8631=_0x2e8631[_0xbae4('0x14')](0x0,_0x2e8631[_0xbae4('0x15')](_0x499489));}switch(_0x1a6661[_0xbae4('0xd')]){case'US':_0x2ccbd7=_0xbae4('0x16');break;case'AU':_0x2ccbd7=_0xbae4('0x17');break;case'IN':_0x2ccbd7=_0xbae4('0x18');break;case'CN':_0x2ccbd7=_0xbae4('0x28');break;default:_0x2ccbd7=_0xbae4('0x19');break;}var _0x3152a8={'method':_0xbae4('0x29'),'uri':_0x2ccbd7+'/oauth/v2/token','form':{'grant_type':'authorization_code','client_id':_0x1a6661[_0xbae4('0x10')],'client_secret':_0x1a6661[_0xbae4('0x11')],'redirect_uri':_0x1a6661[_0xbae4('0xf')],'code':_0x1a6661[_0xbae4('0x1c')]},'headers':{'Content-Type':_0xbae4('0x1d')}};return rp(_0x3152a8)['then'](function(_0x3f69b5){var _0x24e946=JSON[_0xbae4('0x2a')](_0x3f69b5);if(_0x24e946['refresh_token']){_0x1a6661[_0xbae4('0x1f')]=_0x24e946[_0xbae4('0x20')];logger[_0xbae4('0x21')](util[_0xbae4('0x23')](_0xbae4('0x2b'),_0x1a6661[_0xbae4('0x22')],_0x1a6661['id']));}else{logger[_0xbae4('0x27')](util[_0xbae4('0x23')](_0xbae4('0x24'),_0x1a6661[_0xbae4('0x22')],_0x1a6661['id']),util['inspect'](_0x24e946,{'showHidden':![],'depth':null}));}return _0x439b67(null,_0x59b270);})[_0xbae4('0x26')](function(_0x3dab61){logger[_0xbae4('0x27')](util[_0xbae4('0x23')](_0xbae4('0x24'),_0x1a6661['name'],_0x1a6661['id']),util[_0xbae4('0x25')](parsedResult,{'showHidden':![],'depth':null}));return _0x439b67(_0x3dab61);});}else{return _0x439b67(null,_0x59b270);}}}});};
\ No newline at end of file
+var _0x473e=['lodash','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','ZohoAccount','int_zoho_accounts','changed','serverUrl','clientId','code','slice','substring','lastIndexOf','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','then','parse','refresh_token','refreshToken','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','inspect','clientSecret','host','https://accounts.zoho.com.cn','application/x-www-form-urlencoded','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','catch'];(function(_0xc5a490,_0x217ba9){var _0x20e3e5=function(_0x2cb605){while(--_0x2cb605){_0xc5a490['push'](_0xc5a490['shift']());}};_0x20e3e5(++_0x217ba9);}(_0x473e,0x158));var _0xe473=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x473e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe473('0x0'));var util=require('util');var logger=require(_0xe473('0x1'))('api');var moment=require(_0xe473('0x2'));var BPromise=require(_0xe473('0x3'));var rp=require(_0xe473('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe473('0x5'));var config=require(_0xe473('0x6'));var attributes=require('./intZohoAccount.attributes');var integrations=require(_0xe473('0x7'));module[_0xe473('0x8')]=function(_0x449abe,_0x9d20d4){return _0x449abe[_0xe473('0x9')](_0xe473('0xa'),attributes,{'tableName':_0xe473('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2376da,_0xf1317f,_0x4a4c63){if(_0x2376da[_0xe473('0xc')]('zone')||_0x2376da[_0xe473('0xc')](_0xe473('0xd'))||_0x2376da[_0xe473('0xc')](_0xe473('0xe'))||_0x2376da['changed']('clientSecret')||_0x2376da['changed'](_0xe473('0xf'))||_0x2376da[_0xe473('0xc')]('host')){var _0x4891ac,_0x54adad;_0x4891ac=_0x2376da[_0xe473('0xd')];var _0x16b2ac=_0x4891ac[_0xe473('0x10')](-0x1);if(_0x16b2ac==='/'||_0x16b2ac==='\x5c'||_0x16b2ac===':'){_0x4891ac=_0x4891ac[_0xe473('0x11')](0x0,_0x4891ac[_0xe473('0x12')](_0x16b2ac));}switch(_0x2376da[_0xe473('0x13')]){case'US':_0x54adad=_0xe473('0x14');break;case'AU':_0x54adad=_0xe473('0x15');break;case'IN':_0x54adad=_0xe473('0x16');break;case'CN':_0x54adad='https://accounts.zoho.com.cn';break;default:_0x54adad=_0xe473('0x17');break;}var _0x419387={'method':_0xe473('0x18'),'uri':_0x54adad+_0xe473('0x19'),'form':{'grant_type':_0xe473('0x1a'),'client_id':_0x2376da[_0xe473('0xe')],'client_secret':_0x2376da['clientSecret'],'redirect_uri':_0x2376da[_0xe473('0xd')],'code':_0x2376da[_0xe473('0xf')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x419387)[_0xe473('0x1b')](function(_0x1b6d64){var _0x19866c=JSON[_0xe473('0x1c')](_0x1b6d64);if(_0x19866c[_0xe473('0x1d')]){_0x2376da[_0xe473('0x1e')]=_0x19866c[_0xe473('0x1d')];logger[_0xe473('0x1f')](util[_0xe473('0x20')](_0xe473('0x21'),_0x2376da[_0xe473('0x22')],_0x2376da['id']));}else{logger[_0xe473('0x23')](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2376da[_0xe473('0x22')],_0x2376da['id']),util[_0xe473('0x24')](_0x19866c,{'showHidden':![],'depth':null}));}return _0x4a4c63(null,_0xf1317f);})['catch'](function(_0x2eaf5b){logger['error'](util[_0xe473('0x20')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2376da[_0xe473('0x22')],_0x2376da['id']),util[_0xe473('0x24')](parsedResult,{'showHidden':![],'depth':null}));return _0x4a4c63(_0x2eaf5b);});}else{return _0x4a4c63(null,_0xf1317f);}},'beforeUpdate':function(_0x518567,_0x2b852a,_0x21ed03){if(_0x518567[_0xe473('0xc')](_0xe473('0x13'))||_0x518567[_0xe473('0xc')](_0xe473('0xd'))||_0x518567[_0xe473('0xc')](_0xe473('0xe'))||_0x518567[_0xe473('0xc')](_0xe473('0x25'))||_0x518567[_0xe473('0xc')](_0xe473('0xf'))||_0x518567[_0xe473('0xc')](_0xe473('0x26'))){var _0x2263df,_0x356b2e;_0x2263df=_0x518567[_0xe473('0xd')];var _0x25b93f=_0x2263df['slice'](-0x1);if(_0x25b93f==='/'||_0x25b93f==='\x5c'||_0x25b93f===':'){_0x2263df=_0x2263df[_0xe473('0x11')](0x0,_0x2263df[_0xe473('0x12')](_0x25b93f));}switch(_0x518567[_0xe473('0x13')]){case'US':_0x356b2e=_0xe473('0x14');break;case'AU':_0x356b2e=_0xe473('0x15');break;case'IN':_0x356b2e='https://accounts.zoho.in';break;case'CN':_0x356b2e=_0xe473('0x27');break;default:_0x356b2e=_0xe473('0x17');break;}var _0x39527c={'method':_0xe473('0x18'),'uri':_0x356b2e+_0xe473('0x19'),'form':{'grant_type':_0xe473('0x1a'),'client_id':_0x518567[_0xe473('0xe')],'client_secret':_0x518567[_0xe473('0x25')],'redirect_uri':_0x518567[_0xe473('0xd')],'code':_0x518567[_0xe473('0xf')]},'headers':{'Content-Type':_0xe473('0x28')}};return rp(_0x39527c)[_0xe473('0x1b')](function(_0x4da6e8){var _0x4728fb=JSON['parse'](_0x4da6e8);if(_0x4728fb['refresh_token']){_0x518567[_0xe473('0x1e')]=_0x4728fb[_0xe473('0x1d')];logger[_0xe473('0x1f')](util[_0xe473('0x20')](_0xe473('0x21'),_0x518567['name'],_0x518567['id']));}else{logger[_0xe473('0x23')](util[_0xe473('0x20')](_0xe473('0x29'),_0x518567[_0xe473('0x22')],_0x518567['id']),util[_0xe473('0x24')](_0x4728fb,{'showHidden':![],'depth':null}));}return _0x21ed03(null,_0x2b852a);})[_0xe473('0x2a')](function(_0x4d8c78){logger[_0xe473('0x23')](util[_0xe473('0x20')](_0xe473('0x29'),_0x518567[_0xe473('0x22')],_0x518567['id']),util['inspect'](parsedResult,{'showHidden':![],'depth':null}));return _0x21ed03(_0x4d8c78);});}else{return _0x21ed03(null,_0x2b852a);}}}});};
\ No newline at end of file
index 6babf7a..5787685 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9541=['message','catch','GetZohoAccount','ZohoAccount','findAll','options','raw','attributes','include','map','model','stringify','ShowZohoAccount','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','error','result'];(function(_0x478557,_0x470e58){var _0x43b61f=function(_0x5814a1){while(--_0x5814a1){_0x478557['push'](_0x478557['shift']());}};_0x43b61f(++_0x470e58);}(_0x9541,0xb3));var _0x1954=function(_0x91fdfa,_0x5a5b90){_0x91fdfa=_0x91fdfa-0x0;var _0x3110ef=_0x9541[_0x91fdfa];return _0x3110ef;};'use strict';var _=require(_0x1954('0x0'));var util=require(_0x1954('0x1'));var moment=require(_0x1954('0x2'));var BPromise=require(_0x1954('0x3'));var rs=require(_0x1954('0x4'));var fs=require('fs');var Redis=require(_0x1954('0x5'));var db=require(_0x1954('0x6'))['db'];var utils=require(_0x1954('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x1954('0x8'));var jayson=require(_0x1954('0x9'));var client=jayson['client'][_0x1954('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x21ceca,_0x30beea,_0x2ccff8){return new BPromise(function(_0xda7a2f,_0xa7a784){return client['request'](_0x21ceca,_0x2ccff8)[_0x1954('0xb')](function(_0x2f2c4b){logger[_0x1954('0xc')](_0x1954('0xd'),_0x30beea,_0x1954('0xe'));logger[_0x1954('0xf')](_0x1954('0x10'),_0x30beea,_0x1954('0xe'),JSON['stringify'](_0x2f2c4b));if(_0x2f2c4b[_0x1954('0x11')]){if(_0x2f2c4b[_0x1954('0x11')]['code']===0x1f4){logger[_0x1954('0x11')]('ZohoAccount,\x20%s,\x20%s',_0x30beea,_0x2f2c4b[_0x1954('0x11')]['message']);return _0xa7a784(_0x2f2c4b['error']['message']);}logger[_0x1954('0x11')](_0x1954('0xd'),_0x30beea,_0x2f2c4b[_0x1954('0x11')]['message']);return _0xda7a2f(_0x2f2c4b[_0x1954('0x11')]['message']);}else{logger['info'](_0x1954('0xd'),_0x30beea,_0x1954('0xe'));_0xda7a2f(_0x2f2c4b[_0x1954('0x12')][_0x1954('0x13')]);}})[_0x1954('0x14')](function(_0x37f4fc){logger[_0x1954('0x11')](_0x1954('0xd'),_0x30beea,_0x37f4fc);_0xa7a784(_0x37f4fc);});});}exports[_0x1954('0x15')]=function(_0xb9c2cd){var _0xc8cb0b=this;return new Promise(function(_0x3da757,_0x16b8b1){return db[_0x1954('0x16')][_0x1954('0x17')]({'raw':_0xb9c2cd[_0x1954('0x18')]?_0xb9c2cd[_0x1954('0x18')][_0x1954('0x19')]===undefined?!![]:![]:!![],'where':_0xb9c2cd[_0x1954('0x18')]?_0xb9c2cd[_0x1954('0x18')]['where']||null:null,'attributes':_0xb9c2cd[_0x1954('0x18')]?_0xb9c2cd[_0x1954('0x18')][_0x1954('0x1a')]||null:null,'limit':_0xb9c2cd[_0x1954('0x18')]?_0xb9c2cd[_0x1954('0x18')]['limit']||null:null,'include':_0xb9c2cd[_0x1954('0x18')]?_0xb9c2cd[_0x1954('0x18')][_0x1954('0x1b')]?_[_0x1954('0x1c')](_0xb9c2cd[_0x1954('0x18')]['include'],function(_0x4d1b25){return{'model':db[_0x4d1b25[_0x1954('0x1d')]],'as':_0x4d1b25['as'],'attributes':_0x4d1b25[_0x1954('0x1a')],'include':_0x4d1b25[_0x1954('0x1b')]?_[_0x1954('0x1c')](_0x4d1b25['include'],function(_0x21f395){return{'model':db[_0x21f395[_0x1954('0x1d')]],'as':_0x21f395['as'],'attributes':_0x21f395[_0x1954('0x1a')],'include':_0x21f395[_0x1954('0x1b')]?_[_0x1954('0x1c')](_0x21f395[_0x1954('0x1b')],function(_0x46fdc1){return{'model':db[_0x46fdc1['model']],'as':_0x46fdc1['as'],'attributes':_0x46fdc1[_0x1954('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x1954('0xb')](function(_0x513917){logger[_0x1954('0xc')](_0x1954('0x15'),_0xb9c2cd);logger[_0x1954('0xf')](_0x1954('0x15'),_0xb9c2cd,JSON[_0x1954('0x1e')](_0x513917));_0x3da757(_0x513917);})[_0x1954('0x14')](function(_0x41b143){logger[_0x1954('0x11')](_0x1954('0x15'),_0x41b143[_0x1954('0x13')],_0xb9c2cd);_0x16b8b1(_0xc8cb0b[_0x1954('0x11')](0x1f4,_0x41b143[_0x1954('0x13')]));});});};exports[_0x1954('0x1f')]=function(_0x22509c){var _0x228a57=this;return new Promise(function(_0x26b1db,_0x24cc47){return db[_0x1954('0x16')][_0x1954('0x20')]({'raw':_0x22509c[_0x1954('0x18')]?_0x22509c[_0x1954('0x18')][_0x1954('0x19')]===undefined?!![]:![]:!![],'where':_0x22509c[_0x1954('0x18')]?_0x22509c[_0x1954('0x18')]['where']||null:null,'attributes':_0x22509c['options']?_0x22509c[_0x1954('0x18')]['attributes']||null:null,'include':_0x22509c[_0x1954('0x18')]?_0x22509c[_0x1954('0x18')]['include']?_[_0x1954('0x1c')](_0x22509c[_0x1954('0x18')]['include'],function(_0x55ec43){return{'model':db[_0x55ec43[_0x1954('0x1d')]],'as':_0x55ec43['as'],'attributes':_0x55ec43[_0x1954('0x1a')],'include':_0x55ec43[_0x1954('0x1b')]?_[_0x1954('0x1c')](_0x55ec43[_0x1954('0x1b')],function(_0x316dc8){return{'model':db[_0x316dc8[_0x1954('0x1d')]],'as':_0x316dc8['as'],'attributes':_0x316dc8['attributes'],'include':_0x316dc8['include']?_[_0x1954('0x1c')](_0x316dc8[_0x1954('0x1b')],function(_0x1bbe28){return{'model':db[_0x1bbe28[_0x1954('0x1d')]],'as':_0x1bbe28['as'],'attributes':_0x1bbe28[_0x1954('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x1954('0xb')](function(_0x5d235f){logger[_0x1954('0xc')](_0x1954('0x1f'),_0x22509c);logger['debug'](_0x1954('0x1f'),_0x22509c,JSON[_0x1954('0x1e')](_0x5d235f));_0x26b1db(_0x5d235f);})['catch'](function(_0x580990){logger[_0x1954('0x11')](_0x1954('0x1f'),_0x580990['message'],_0x22509c);_0x24cc47(_0x228a57[_0x1954('0x11')](0x1f4,_0x580990[_0x1954('0x13')]));});});};
\ No newline at end of file
+var _0xee9c=['info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetZohoAccount','ZohoAccount','findAll','options','raw','limit','include','map','attributes','model','ShowZohoAccount','find','then','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','jayson/promise','http','request'];(function(_0x2963c3,_0x2a61a0){var _0x2adef3=function(_0x223745){while(--_0x223745){_0x2963c3['push'](_0x2963c3['shift']());}};_0x2adef3(++_0x2a61a0);}(_0xee9c,0x1e6));var _0xcee9=function(_0x1ca890,_0x21d0d3){_0x1ca890=_0x1ca890-0x0;var _0x3f8e01=_0xee9c[_0x1ca890];return _0x3f8e01;};'use strict';var _=require('lodash');var util=require(_0xcee9('0x0'));var moment=require(_0xcee9('0x1'));var BPromise=require(_0xcee9('0x2'));var rs=require(_0xcee9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xcee9('0x4'));var logger=require(_0xcee9('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xcee9('0x6'));var client=jayson['client'][_0xcee9('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2bc2cb,_0x34819a,_0x58636f){return new BPromise(function(_0x4d1f9a,_0x2b14da){return client[_0xcee9('0x8')](_0x2bc2cb,_0x58636f)['then'](function(_0x7c80be){logger[_0xcee9('0x9')](_0xcee9('0xa'),_0x34819a,_0xcee9('0xb'));logger[_0xcee9('0xc')](_0xcee9('0xd'),_0x34819a,'request\x20sent',JSON[_0xcee9('0xe')](_0x7c80be));if(_0x7c80be[_0xcee9('0xf')]){if(_0x7c80be['error'][_0xcee9('0x10')]===0x1f4){logger[_0xcee9('0xf')](_0xcee9('0xa'),_0x34819a,_0x7c80be['error'][_0xcee9('0x11')]);return _0x2b14da(_0x7c80be[_0xcee9('0xf')][_0xcee9('0x11')]);}logger[_0xcee9('0xf')](_0xcee9('0xa'),_0x34819a,_0x7c80be['error']['message']);return _0x4d1f9a(_0x7c80be[_0xcee9('0xf')][_0xcee9('0x11')]);}else{logger[_0xcee9('0x9')](_0xcee9('0xa'),_0x34819a,_0xcee9('0xb'));_0x4d1f9a(_0x7c80be[_0xcee9('0x12')][_0xcee9('0x11')]);}})[_0xcee9('0x13')](function(_0x1adcc9){logger[_0xcee9('0xf')](_0xcee9('0xa'),_0x34819a,_0x1adcc9);_0x2b14da(_0x1adcc9);});});}exports[_0xcee9('0x14')]=function(_0x552ca1){var _0x10e6b5=this;return new Promise(function(_0x414032,_0x39f0dc){return db[_0xcee9('0x15')][_0xcee9('0x16')]({'raw':_0x552ca1['options']?_0x552ca1[_0xcee9('0x17')][_0xcee9('0x18')]===undefined?!![]:![]:!![],'where':_0x552ca1[_0xcee9('0x17')]?_0x552ca1[_0xcee9('0x17')]['where']||null:null,'attributes':_0x552ca1[_0xcee9('0x17')]?_0x552ca1[_0xcee9('0x17')]['attributes']||null:null,'limit':_0x552ca1['options']?_0x552ca1[_0xcee9('0x17')][_0xcee9('0x19')]||null:null,'include':_0x552ca1[_0xcee9('0x17')]?_0x552ca1['options'][_0xcee9('0x1a')]?_[_0xcee9('0x1b')](_0x552ca1[_0xcee9('0x17')]['include'],function(_0x2c219){return{'model':db[_0x2c219['model']],'as':_0x2c219['as'],'attributes':_0x2c219[_0xcee9('0x1c')],'include':_0x2c219[_0xcee9('0x1a')]?_[_0xcee9('0x1b')](_0x2c219[_0xcee9('0x1a')],function(_0xef4b0a){return{'model':db[_0xef4b0a[_0xcee9('0x1d')]],'as':_0xef4b0a['as'],'attributes':_0xef4b0a[_0xcee9('0x1c')],'include':_0xef4b0a[_0xcee9('0x1a')]?_[_0xcee9('0x1b')](_0xef4b0a[_0xcee9('0x1a')],function(_0x4cc9a1){return{'model':db[_0x4cc9a1['model']],'as':_0x4cc9a1['as'],'attributes':_0x4cc9a1[_0xcee9('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4593bc){logger[_0xcee9('0x9')](_0xcee9('0x14'),_0x552ca1);logger[_0xcee9('0xc')]('GetZohoAccount',_0x552ca1,JSON[_0xcee9('0xe')](_0x4593bc));_0x414032(_0x4593bc);})[_0xcee9('0x13')](function(_0x3e88cd){logger['error'](_0xcee9('0x14'),_0x3e88cd[_0xcee9('0x11')],_0x552ca1);_0x39f0dc(_0x10e6b5[_0xcee9('0xf')](0x1f4,_0x3e88cd['message']));});});};exports[_0xcee9('0x1e')]=function(_0x6bfe80){var _0x423287=this;return new Promise(function(_0x2e44dc,_0x4de639){return db[_0xcee9('0x15')][_0xcee9('0x1f')]({'raw':_0x6bfe80['options']?_0x6bfe80[_0xcee9('0x17')][_0xcee9('0x18')]===undefined?!![]:![]:!![],'where':_0x6bfe80[_0xcee9('0x17')]?_0x6bfe80[_0xcee9('0x17')]['where']||null:null,'attributes':_0x6bfe80['options']?_0x6bfe80[_0xcee9('0x17')][_0xcee9('0x1c')]||null:null,'include':_0x6bfe80[_0xcee9('0x17')]?_0x6bfe80[_0xcee9('0x17')][_0xcee9('0x1a')]?_[_0xcee9('0x1b')](_0x6bfe80[_0xcee9('0x17')]['include'],function(_0x12169c){return{'model':db[_0x12169c[_0xcee9('0x1d')]],'as':_0x12169c['as'],'attributes':_0x12169c[_0xcee9('0x1c')],'include':_0x12169c['include']?_[_0xcee9('0x1b')](_0x12169c[_0xcee9('0x1a')],function(_0x944ea1){return{'model':db[_0x944ea1[_0xcee9('0x1d')]],'as':_0x944ea1['as'],'attributes':_0x944ea1[_0xcee9('0x1c')],'include':_0x944ea1['include']?_['map'](_0x944ea1[_0xcee9('0x1a')],function(_0x1a2af9){return{'model':db[_0x1a2af9[_0xcee9('0x1d')]],'as':_0x1a2af9['as'],'attributes':_0x1a2af9['attributes']};}):[]};}):[]};}):[]:[]})[_0xcee9('0x20')](function(_0x2f17c5){logger[_0xcee9('0x9')](_0xcee9('0x1e'),_0x6bfe80);logger[_0xcee9('0xc')](_0xcee9('0x1e'),_0x6bfe80,JSON['stringify'](_0x2f17c5));_0x2e44dc(_0x2f17c5);})[_0xcee9('0x13')](function(_0x6f2506){logger[_0xcee9('0xf')](_0xcee9('0x1e'),_0x6f2506['message'],_0x6bfe80);_0x4de639(_0x423287['error'](0x1f4,_0x6f2506[_0xcee9('0x11')]));});});};
\ No newline at end of file
index d2d4ba5..ce8468e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e31=['/:id/fields','getFields','getSubjects','getDescriptions','post','create','put','delete','multer','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','index','/:id'];(function(_0x392799,_0x2fb776){var _0x528345=function(_0x563157){while(--_0x563157){_0x392799['push'](_0x392799['shift']());}};_0x528345(++_0x2fb776);}(_0x9e31,0x170));var _0x19e3=function(_0x13e36c,_0x5029c){_0x13e36c=_0x13e36c-0x0;var _0x12f4b6=_0x9e31[_0x13e36c];return _0x12f4b6;};'use strict';var multer=require(_0x19e3('0x0'));var util=require('util');var path=require(_0x19e3('0x1'));var timeout=require('connect-timeout');var express=require(_0x19e3('0x2'));var router=express[_0x19e3('0x3')]();var fs_extra=require(_0x19e3('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x19e3('0x5'));var config=require(_0x19e3('0x6'));var controller=require(_0x19e3('0x7'));router[_0x19e3('0x8')]('/',auth[_0x19e3('0x9')](),controller[_0x19e3('0xa')]);router[_0x19e3('0x8')](_0x19e3('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x19e3('0x8')](_0x19e3('0xc'),auth['isAuthenticated'](),controller[_0x19e3('0xd')]);router['get']('/:id/subjects',auth[_0x19e3('0x9')](),controller[_0x19e3('0xe')]);router[_0x19e3('0x8')]('/:id/descriptions',auth[_0x19e3('0x9')](),controller[_0x19e3('0xf')]);router[_0x19e3('0x10')]('/',auth[_0x19e3('0x9')](),controller[_0x19e3('0x11')]);router[_0x19e3('0x12')](_0x19e3('0xb'),auth[_0x19e3('0x9')](),controller['update']);router[_0x19e3('0x13')]('/:id',auth[_0x19e3('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x635c=['fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','post','create','put','update','delete','multer','util','path','connect-timeout','Router'];(function(_0x4fe2d0,_0x556631){var _0x3c6b15=function(_0x5b75fa){while(--_0x5b75fa){_0x4fe2d0['push'](_0x4fe2d0['shift']());}};_0x3c6b15(++_0x556631);}(_0x635c,0x10f));var _0xc635=function(_0x2e7ba6,_0x3c1af0){_0x2e7ba6=_0x2e7ba6-0x0;var _0x509c63=_0x635c[_0x2e7ba6];return _0x509c63;};'use strict';var multer=require(_0xc635('0x0'));var util=require(_0xc635('0x1'));var path=require(_0xc635('0x2'));var timeout=require(_0xc635('0x3'));var express=require('express');var router=express[_0xc635('0x4')]();var fs_extra=require(_0xc635('0x5'));var auth=require(_0xc635('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc635('0x7'));var controller=require('./intZohoConfiguration.controller');router['get']('/',auth[_0xc635('0x8')](),controller[_0xc635('0x9')]);router[_0xc635('0xa')](_0xc635('0xb'),auth[_0xc635('0x8')](),controller[_0xc635('0xc')]);router[_0xc635('0xa')](_0xc635('0xd'),auth['isAuthenticated'](),controller[_0xc635('0xe')]);router[_0xc635('0xa')](_0xc635('0xf'),auth[_0xc635('0x8')](),controller['getSubjects']);router[_0xc635('0xa')](_0xc635('0x10'),auth[_0xc635('0x8')](),controller[_0xc635('0x11')]);router[_0xc635('0x12')]('/',auth[_0xc635('0x8')](),controller[_0xc635('0x13')]);router[_0xc635('0x14')](_0xc635('0xb'),auth[_0xc635('0x8')](),controller[_0xc635('0x15')]);router[_0xc635('0x16')](_0xc635('0xb'),auth[_0xc635('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 78e8b39..02aa229 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x118c=['lead','contact','nothing','contact_lead','sequelize','exports','STRING','ENUM'];(function(_0x1be4ff,_0x258969){var _0x9cbf=function(_0x25bda8){while(--_0x25bda8){_0x1be4ff['push'](_0x1be4ff['shift']());}};_0x9cbf(++_0x258969);}(_0x118c,0x1ec));var _0xc118=function(_0x1ce6a7,_0xeaa892){_0x1ce6a7=_0x1ce6a7-0x0;var _0x3095a7=_0x118c[_0x1ce6a7];return _0x3095a7;};'use strict';var Sequelize=require(_0xc118('0x0'));module[_0xc118('0x1')]={'name':{'type':Sequelize[_0xc118('0x2')]},'moduleCreate':{'type':Sequelize[_0xc118('0x3')](_0xc118('0x4'),_0xc118('0x5'),_0xc118('0x6')),'defaultValue':_0xc118('0x4')},'moduleSearch':{'type':Sequelize[_0xc118('0x3')](_0xc118('0x7'),_0xc118('0x5'),_0xc118('0x4')),'defaultValue':_0xc118('0x7')},'description':{'type':Sequelize[_0xc118('0x2')]}};
\ No newline at end of file
+var _0x92d6=['lead','contact','contact_lead','STRING','sequelize','ENUM'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x92d6,0x17e));var _0x692d=function(_0x81d65b,_0x1b7f14){_0x81d65b=_0x81d65b-0x0;var _0x37cebd=_0x92d6[_0x81d65b];return _0x37cebd;};'use strict';var Sequelize=require(_0x692d('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'moduleCreate':{'type':Sequelize[_0x692d('0x1')](_0x692d('0x2'),_0x692d('0x3'),'nothing'),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0x692d('0x1')](_0x692d('0x4'),_0x692d('0x3'),_0x692d('0x2')),'defaultValue':_0x692d('0x4')},'description':{'type':Sequelize[_0x692d('0x5')]}};
\ No newline at end of file
index 87532e4..ee3062e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc59e=['hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','findAll','then','catch','show','includeAll','include','create','body','find','params','getFields','findOne','length','ZohoField','getSubjects','getDescriptions','rimraf','request-promise','moment','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','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','end','error','name','send','index','map','ZohoConfiguration','rawAttributes','fieldName','key','query','keys','filters','intersection','model','fields','attributes'];(function(_0x2890c3,_0x4807ac){var _0x316fa7=function(_0x1fada6){while(--_0x1fada6){_0x2890c3['push'](_0x2890c3['shift']());}};_0x316fa7(++_0x4807ac);}(_0xc59e,0x6e));var _0xec59=function(_0x38ccb4,_0x1897b8){_0x38ccb4=_0x38ccb4-0x0;var _0x4bc3db=_0xc59e[_0x38ccb4];return _0x4bc3db;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xec59('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xec59('0x1'));var moment=require(_0xec59('0x2'));var BPromise=require(_0xec59('0x3'));var Mustache=require(_0xec59('0x4'));var util=require(_0xec59('0x5'));var path=require(_0xec59('0x6'));var sox=require(_0xec59('0x7'));var csv=require(_0xec59('0x8'));var ejs=require(_0xec59('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xec59('0xa'));var squel=require(_0xec59('0xb'));var crypto=require(_0xec59('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xec59('0xd'));var toCsv=require('to-csv');var querystring=require(_0xec59('0xe'));var Papa=require(_0xec59('0xf'));var Redis=require(_0xec59('0x10'));var authService=require(_0xec59('0x11'));var qs=require(_0xec59('0x12'));var as=require(_0xec59('0x13'));var hardwareService=require(_0xec59('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xec59('0x15'));var config=require(_0xec59('0x16'));var licenseUtil=require(_0xec59('0x17'));var db=require(_0xec59('0x18'))['db'];function respondWithStatusCode(_0x1c4941,_0x38be1e){_0x38be1e=_0x38be1e||0xcc;return function(_0x1200b7){if(_0x1200b7){return _0x1c4941[_0xec59('0x19')](_0x38be1e);}return _0x1c4941[_0xec59('0x1a')](_0x38be1e)['end']();};}function respondWithResult(_0x4c7b8d,_0x34cf49){_0x34cf49=_0x34cf49||0xc8;return function(_0x56f21b){if(_0x56f21b){return _0x4c7b8d[_0xec59('0x1a')](_0x34cf49)[_0xec59('0x1b')](_0x56f21b);}};}function respondWithFilteredResult(_0x2d3072,_0x469491){return function(_0x13e2aa){if(_0x13e2aa){var _0x35a154=typeof _0x469491[_0xec59('0x1c')]===_0xec59('0x1d')&&typeof _0x469491[_0xec59('0x1e')]==='undefined';var _0x47d16e=_0x13e2aa[_0xec59('0x1f')];var _0x5f4f57=_0x35a154?0x0:_0x469491[_0xec59('0x1c')];var _0x30f842=_0x35a154?_0x13e2aa[_0xec59('0x1f')]:_0x469491[_0xec59('0x1c')]+_0x469491[_0xec59('0x1e')];var _0x3f3e26;if(_0x30f842>=_0x47d16e){_0x30f842=_0x47d16e;_0x3f3e26=0xc8;}else{_0x3f3e26=0xce;}_0x2d3072[_0xec59('0x1a')](_0x3f3e26);return _0x2d3072[_0xec59('0x20')](_0xec59('0x21'),_0x5f4f57+'-'+_0x30f842+'/'+_0x47d16e)[_0xec59('0x1b')](_0x13e2aa);}return null;};}function patchUpdates(_0x26ac8b){return function(_0x36a286){try{jsonpatch[_0xec59('0x22')](_0x36a286,_0x26ac8b,!![]);}catch(_0x429381){return BPromise[_0xec59('0x23')](_0x429381);}return _0x36a286[_0xec59('0x24')]();};}function saveUpdates(_0x284df9,_0x89e07f){return function(_0x425f24){if(_0x425f24){return _0x425f24[_0xec59('0x25')](_0x284df9)['then'](function(_0x221571){return _0x221571;});}return null;};}function removeEntity(_0x35b80a,_0x45a95d){return function(_0x21fa13){if(_0x21fa13){return _0x21fa13[_0xec59('0x26')]()['then'](function(){_0x35b80a[_0xec59('0x1a')](0xcc)[_0xec59('0x27')]();});}};}function handleEntityNotFound(_0x4a6eb8,_0x368d61){return function(_0xc0615a){if(!_0xc0615a){_0x4a6eb8[_0xec59('0x19')](0x194);}return _0xc0615a;};}function handleError(_0x26db2b,_0x57a9d2){_0x57a9d2=_0x57a9d2||0x1f4;return function(_0x44c32a){logger[_0xec59('0x28')](_0x44c32a['stack']);if(_0x44c32a['name']){delete _0x44c32a[_0xec59('0x29')];}_0x26db2b[_0xec59('0x1a')](_0x57a9d2)[_0xec59('0x2a')](_0x44c32a);};}exports[_0xec59('0x2b')]=function(_0x4952e1,_0x4856be){var _0xa388e0={},_0xa7363c={},_0x1f8828={'count':0x0,'rows':[]};var _0x42bf23=_[_0xec59('0x2c')](db[_0xec59('0x2d')][_0xec59('0x2e')],function(_0x37dd1e){return{'name':_0x37dd1e[_0xec59('0x2f')],'type':_0x37dd1e['type'][_0xec59('0x30')]};});_0xa7363c['model']=_[_0xec59('0x2c')](_0x42bf23,_0xec59('0x29'));_0xa7363c[_0xec59('0x31')]=_[_0xec59('0x32')](_0x4952e1[_0xec59('0x31')]);_0xa7363c[_0xec59('0x33')]=_[_0xec59('0x34')](_0xa7363c[_0xec59('0x35')],_0xa7363c[_0xec59('0x31')]);_0xa388e0['attributes']=_[_0xec59('0x34')](_0xa7363c[_0xec59('0x35')],qs[_0xec59('0x36')](_0x4952e1[_0xec59('0x31')][_0xec59('0x36')]));_0xa388e0['attributes']=_0xa388e0[_0xec59('0x37')]['length']?_0xa388e0[_0xec59('0x37')]:_0xa7363c['model'];if(!_0x4952e1[_0xec59('0x31')][_0xec59('0x38')](_0xec59('0x39'))){_0xa388e0[_0xec59('0x1e')]=qs['limit'](_0x4952e1[_0xec59('0x31')][_0xec59('0x1e')]);_0xa388e0[_0xec59('0x1c')]=qs[_0xec59('0x1c')](_0x4952e1[_0xec59('0x31')]['offset']);}_0xa388e0[_0xec59('0x3a')]=qs[_0xec59('0x3b')](_0x4952e1[_0xec59('0x31')][_0xec59('0x3b')]);_0xa388e0[_0xec59('0x3c')]=qs[_0xec59('0x33')](_[_0xec59('0x3d')](_0x4952e1['query'],_0xa7363c[_0xec59('0x33')]),_0x42bf23);if(_0x4952e1[_0xec59('0x31')][_0xec59('0x3e')]){_0xa388e0['where']=_[_0xec59('0x3f')](_0xa388e0[_0xec59('0x3c')],{'$or':_[_0xec59('0x2c')](_0x42bf23,function(_0x59d335){if(_0x59d335[_0xec59('0x40')]!==_0xec59('0x41')){var _0x2be3b0={};_0x2be3b0[_0x59d335[_0xec59('0x29')]]={'$like':'%'+_0x4952e1[_0xec59('0x31')][_0xec59('0x3e')]+'%'};return _0x2be3b0;}})});}_0xa388e0=_[_0xec59('0x3f')]({},_0xa388e0,_0x4952e1[_0xec59('0x42')]);var _0x20938e={'where':_0xa388e0[_0xec59('0x3c')]};return db[_0xec59('0x2d')][_0xec59('0x1f')](_0x20938e)['then'](function(_0x3b3007){_0x1f8828[_0xec59('0x1f')]=_0x3b3007;if(_0x4952e1[_0xec59('0x31')]['includeAll']){_0xa388e0['include']=[{'all':!![]}];}return db[_0xec59('0x2d')][_0xec59('0x43')](_0xa388e0);})[_0xec59('0x44')](function(_0x35435e){_0x1f8828['rows']=_0x35435e;return _0x1f8828;})[_0xec59('0x44')](respondWithFilteredResult(_0x4856be,_0xa388e0))[_0xec59('0x45')](handleError(_0x4856be,null));};exports[_0xec59('0x46')]=function(_0x2af403,_0x3eea64){var _0x4069d0={'raw':![],'where':{'id':_0x2af403['params']['id']}},_0x162394={};_0x162394[_0xec59('0x35')]=_['keys'](db['ZohoConfiguration'][_0xec59('0x2e')]);_0x162394['query']=_[_0xec59('0x32')](_0x2af403[_0xec59('0x31')]);_0x162394[_0xec59('0x33')]=_[_0xec59('0x34')](_0x162394['model'],_0x162394['query']);_0x4069d0['attributes']=_[_0xec59('0x34')](_0x162394[_0xec59('0x35')],qs[_0xec59('0x36')](_0x2af403[_0xec59('0x31')][_0xec59('0x36')]));_0x4069d0['attributes']=_0x4069d0[_0xec59('0x37')]['length']?_0x4069d0[_0xec59('0x37')]:_0x162394[_0xec59('0x35')];if(_0x2af403[_0xec59('0x31')][_0xec59('0x47')]){_0x4069d0[_0xec59('0x48')]=[{'all':!![]}];}_0x4069d0=_[_0xec59('0x3f')]({},_0x4069d0,_0x2af403[_0xec59('0x42')]);return db['ZohoConfiguration']['find'](_0x4069d0)['then'](handleEntityNotFound(_0x3eea64,null))[_0xec59('0x44')](respondWithResult(_0x3eea64,null))[_0xec59('0x45')](handleError(_0x3eea64,null));};exports[_0xec59('0x49')]=function(_0x3de678,_0x27f6eb){return db[_0xec59('0x2d')][_0xec59('0x49')](_0x3de678[_0xec59('0x4a')],{})[_0xec59('0x44')](respondWithResult(_0x27f6eb,0xc9))['catch'](handleError(_0x27f6eb,null));};exports[_0xec59('0x25')]=function(_0x34bcb2,_0x4bcdb9){if(_0x34bcb2['body']['id']){delete _0x34bcb2['body']['id'];}return db['ZohoConfiguration'][_0xec59('0x4b')]({'where':{'id':_0x34bcb2[_0xec59('0x4c')]['id']}})[_0xec59('0x44')](handleEntityNotFound(_0x4bcdb9,null))[_0xec59('0x44')](saveUpdates(_0x34bcb2['body'],null))[_0xec59('0x44')](respondWithResult(_0x4bcdb9,null))[_0xec59('0x45')](handleError(_0x4bcdb9,null));};exports['destroy']=function(_0x17ce03,_0x520541){return db[_0xec59('0x2d')][_0xec59('0x4b')]({'where':{'id':_0x17ce03['params']['id']}})['then'](handleEntityNotFound(_0x520541,null))[_0xec59('0x44')](removeEntity(_0x520541,null))[_0xec59('0x45')](handleError(_0x520541,null));};exports[_0xec59('0x4d')]=function(_0x2c7508,_0x560263,_0x23f48a){var _0x5a3dc7={};var _0x15a075={};var _0x7e9881;var _0x3d88a7;return db[_0xec59('0x2d')][_0xec59('0x4e')]({'where':{'id':_0x2c7508[_0xec59('0x4c')]['id']}})[_0xec59('0x44')](handleEntityNotFound(_0x560263,null))[_0xec59('0x44')](function(_0x55022d){if(_0x55022d){_0x7e9881=_0x55022d;_0x15a075[_0xec59('0x35')]=_[_0xec59('0x32')](db['ZohoField'][_0xec59('0x2e')]);_0x15a075[_0xec59('0x31')]=_[_0xec59('0x32')](_0x2c7508[_0xec59('0x31')]);_0x15a075[_0xec59('0x33')]=_[_0xec59('0x34')](_0x15a075[_0xec59('0x35')],_0x15a075[_0xec59('0x31')]);_0x5a3dc7[_0xec59('0x37')]=_[_0xec59('0x34')](_0x15a075[_0xec59('0x35')],qs[_0xec59('0x36')](_0x2c7508[_0xec59('0x31')]['fields']));_0x5a3dc7['attributes']=_0x5a3dc7[_0xec59('0x37')][_0xec59('0x4f')]?_0x5a3dc7[_0xec59('0x37')]:_0x15a075[_0xec59('0x35')];_0x5a3dc7[_0xec59('0x3a')]=qs[_0xec59('0x3b')](_0x2c7508['query'][_0xec59('0x3b')]);_0x5a3dc7[_0xec59('0x3c')]=qs[_0xec59('0x33')](_[_0xec59('0x3d')](_0x2c7508[_0xec59('0x31')],_0x15a075['filters']));if(_0x2c7508[_0xec59('0x31')]['filter']){_0x5a3dc7['where']=_[_0xec59('0x3f')](_0x5a3dc7['where'],{'$or':_[_0xec59('0x2c')](_0x5a3dc7['attributes'],function(_0x439b67){var _0x4b7b7f={};_0x4b7b7f[_0x439b67]={'$like':'%'+_0x2c7508[_0xec59('0x31')]['filter']+'%'};return _0x4b7b7f;})});}_0x5a3dc7=_['merge']({},_0x5a3dc7,_0x2c7508[_0xec59('0x42')]);return _0x7e9881[_0xec59('0x4d')](_0x5a3dc7);}})[_0xec59('0x44')](function(_0x78b8d5){if(_0x78b8d5){_0x3d88a7=_0x78b8d5[_0xec59('0x4f')];if(!_0x2c7508[_0xec59('0x31')]['hasOwnProperty'](_0xec59('0x39'))){_0x5a3dc7[_0xec59('0x1e')]=qs[_0xec59('0x1e')](_0x2c7508[_0xec59('0x31')][_0xec59('0x1e')]);_0x5a3dc7[_0xec59('0x1c')]=qs[_0xec59('0x1c')](_0x2c7508[_0xec59('0x31')][_0xec59('0x1c')]);}return _0x7e9881[_0xec59('0x4d')](_0x5a3dc7);}})[_0xec59('0x44')](function(_0x46dbae){if(_0x46dbae){return _0x46dbae?{'count':_0x3d88a7,'rows':_0x46dbae}:null;}})[_0xec59('0x44')](respondWithResult(_0x560263,null))[_0xec59('0x45')](handleError(_0x560263,null));};exports['getSubjects']=function(_0x1678e0,_0x5c6308,_0x4d5dc9){var _0x4bd0b9={};var _0x29c23f={};var _0x14388e;var _0x47426b;return db[_0xec59('0x2d')][_0xec59('0x4e')]({'where':{'id':_0x1678e0[_0xec59('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5c6308,null))[_0xec59('0x44')](function(_0x4a0281){if(_0x4a0281){_0x14388e=_0x4a0281;_0x29c23f['model']=_[_0xec59('0x32')](db[_0xec59('0x50')]['rawAttributes']);_0x29c23f[_0xec59('0x31')]=_[_0xec59('0x32')](_0x1678e0['query']);_0x29c23f[_0xec59('0x33')]=_[_0xec59('0x34')](_0x29c23f['model'],_0x29c23f['query']);_0x4bd0b9[_0xec59('0x37')]=_['intersection'](_0x29c23f[_0xec59('0x35')],qs[_0xec59('0x36')](_0x1678e0[_0xec59('0x31')][_0xec59('0x36')]));_0x4bd0b9[_0xec59('0x37')]=_0x4bd0b9[_0xec59('0x37')]['length']?_0x4bd0b9[_0xec59('0x37')]:_0x29c23f[_0xec59('0x35')];_0x4bd0b9['order']=qs['sort'](_0x1678e0[_0xec59('0x31')][_0xec59('0x3b')]);_0x4bd0b9[_0xec59('0x3c')]=qs[_0xec59('0x33')](_[_0xec59('0x3d')](_0x1678e0[_0xec59('0x31')],_0x29c23f[_0xec59('0x33')]));if(_0x1678e0[_0xec59('0x31')]['filter']){_0x4bd0b9['where']=_[_0xec59('0x3f')](_0x4bd0b9['where'],{'$or':_[_0xec59('0x2c')](_0x4bd0b9[_0xec59('0x37')],function(_0x3bd145){var _0x734c97={};_0x734c97[_0x3bd145]={'$like':'%'+_0x1678e0['query'][_0xec59('0x3e')]+'%'};return _0x734c97;})});}_0x4bd0b9=_[_0xec59('0x3f')]({},_0x4bd0b9,_0x1678e0[_0xec59('0x42')]);return _0x14388e[_0xec59('0x51')](_0x4bd0b9);}})[_0xec59('0x44')](function(_0x2d2876){if(_0x2d2876){_0x47426b=_0x2d2876['length'];if(!_0x1678e0['query'][_0xec59('0x38')](_0xec59('0x39'))){_0x4bd0b9[_0xec59('0x1e')]=qs[_0xec59('0x1e')](_0x1678e0[_0xec59('0x31')]['limit']);_0x4bd0b9[_0xec59('0x1c')]=qs[_0xec59('0x1c')](_0x1678e0[_0xec59('0x31')]['offset']);}return _0x14388e[_0xec59('0x51')](_0x4bd0b9);}})[_0xec59('0x44')](function(_0x376f02){if(_0x376f02){return _0x376f02?{'count':_0x47426b,'rows':_0x376f02}:null;}})['then'](respondWithResult(_0x5c6308,null))['catch'](handleError(_0x5c6308,null));};exports[_0xec59('0x52')]=function(_0x2716ed,_0x4e6af7,_0x508efc){var _0x313075={};var _0x339fca={};var _0x45bac8;var _0xc38d58;return db[_0xec59('0x2d')][_0xec59('0x4e')]({'where':{'id':_0x2716ed[_0xec59('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4e6af7,null))['then'](function(_0x408c4a){if(_0x408c4a){_0x45bac8=_0x408c4a;_0x339fca[_0xec59('0x35')]=_[_0xec59('0x32')](db[_0xec59('0x50')]['rawAttributes']);_0x339fca[_0xec59('0x31')]=_[_0xec59('0x32')](_0x2716ed[_0xec59('0x31')]);_0x339fca[_0xec59('0x33')]=_[_0xec59('0x34')](_0x339fca['model'],_0x339fca['query']);_0x313075[_0xec59('0x37')]=_[_0xec59('0x34')](_0x339fca[_0xec59('0x35')],qs[_0xec59('0x36')](_0x2716ed[_0xec59('0x31')][_0xec59('0x36')]));_0x313075[_0xec59('0x37')]=_0x313075[_0xec59('0x37')]['length']?_0x313075[_0xec59('0x37')]:_0x339fca[_0xec59('0x35')];_0x313075[_0xec59('0x3a')]=qs[_0xec59('0x3b')](_0x2716ed[_0xec59('0x31')][_0xec59('0x3b')]);_0x313075[_0xec59('0x3c')]=qs['filters'](_[_0xec59('0x3d')](_0x2716ed[_0xec59('0x31')],_0x339fca['filters']));if(_0x2716ed[_0xec59('0x31')][_0xec59('0x3e')]){_0x313075[_0xec59('0x3c')]=_[_0xec59('0x3f')](_0x313075[_0xec59('0x3c')],{'$or':_[_0xec59('0x2c')](_0x313075[_0xec59('0x37')],function(_0x390c32){var _0x28bb5c={};_0x28bb5c[_0x390c32]={'$like':'%'+_0x2716ed[_0xec59('0x31')]['filter']+'%'};return _0x28bb5c;})});}_0x313075=_[_0xec59('0x3f')]({},_0x313075,_0x2716ed[_0xec59('0x42')]);return _0x45bac8[_0xec59('0x52')](_0x313075);}})['then'](function(_0x4dcd78){if(_0x4dcd78){_0xc38d58=_0x4dcd78[_0xec59('0x4f')];if(!_0x2716ed[_0xec59('0x31')][_0xec59('0x38')](_0xec59('0x39'))){_0x313075[_0xec59('0x1e')]=qs[_0xec59('0x1e')](_0x2716ed[_0xec59('0x31')][_0xec59('0x1e')]);_0x313075['offset']=qs[_0xec59('0x1c')](_0x2716ed[_0xec59('0x31')]['offset']);}return _0x45bac8[_0xec59('0x52')](_0x313075);}})[_0xec59('0x44')](function(_0xa48c9){if(_0xa48c9){return _0xa48c9?{'count':_0xc38d58,'rows':_0xa48c9}:null;}})[_0xec59('0x44')](respondWithResult(_0x4e6af7,null))['catch'](handleError(_0x4e6af7,null));};
\ No newline at end of file
+var _0x2547=['Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','ZohoConfiguration','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','where','options','includeAll','include','findAll','catch','params','rawAttributes','create','body','getFields','ZohoField','getSubjects','findOne','getDescriptions','eml-format','zip-dir','fast-json-patch','moment','mustache','path','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set'];(function(_0x403648,_0x2b5229){var _0x1b09d3=function(_0x46defa){while(--_0x46defa){_0x403648['push'](_0x403648['shift']());}};_0x1b09d3(++_0x2b5229);}(_0x2547,0x11f));var _0x7254=function(_0x245af9,_0x111825){_0x245af9=_0x245af9-0x0;var _0x3de03f=_0x2547[_0x245af9];return _0x3de03f;};'use strict';var emlformat=require(_0x7254('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7254('0x1'));var jsonpatch=require(_0x7254('0x2'));var rp=require('request-promise');var moment=require(_0x7254('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x7254('0x4'));var util=require('util');var path=require(_0x7254('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7254('0x6'));var _=require(_0x7254('0x7'));var squel=require(_0x7254('0x8'));var crypto=require(_0x7254('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x7254('0xa'));var toCsv=require(_0x7254('0xb'));var querystring=require(_0x7254('0xc'));var Papa=require(_0x7254('0xd'));var Redis=require(_0x7254('0xe'));var authService=require(_0x7254('0xf'));var qs=require(_0x7254('0x10'));var as=require(_0x7254('0x11'));var hardwareService=require(_0x7254('0x12'));var logger=require(_0x7254('0x13'))(_0x7254('0x14'));var utils=require('../../config/utils');var config=require(_0x7254('0x15'));var licenseUtil=require(_0x7254('0x16'));var db=require(_0x7254('0x17'))['db'];function respondWithStatusCode(_0x10568f,_0x5b1fd7){_0x5b1fd7=_0x5b1fd7||0xcc;return function(_0x4a57af){if(_0x4a57af){return _0x10568f[_0x7254('0x18')](_0x5b1fd7);}return _0x10568f[_0x7254('0x19')](_0x5b1fd7)[_0x7254('0x1a')]();};}function respondWithResult(_0xa48dc,_0x53a1c4){_0x53a1c4=_0x53a1c4||0xc8;return function(_0x3b4ec0){if(_0x3b4ec0){return _0xa48dc[_0x7254('0x19')](_0x53a1c4)[_0x7254('0x1b')](_0x3b4ec0);}};}function respondWithFilteredResult(_0x1b45a2,_0x2086b6){return function(_0x1bb82b){if(_0x1bb82b){var _0x40a3a0=typeof _0x2086b6[_0x7254('0x1c')]===_0x7254('0x1d')&&typeof _0x2086b6[_0x7254('0x1e')]===_0x7254('0x1d');var _0x31b78e=_0x1bb82b['count'];var _0xfcbe19=_0x40a3a0?0x0:_0x2086b6[_0x7254('0x1c')];var _0x3b8f02=_0x40a3a0?_0x1bb82b[_0x7254('0x1f')]:_0x2086b6[_0x7254('0x1c')]+_0x2086b6[_0x7254('0x1e')];var _0x12edad;if(_0x3b8f02>=_0x31b78e){_0x3b8f02=_0x31b78e;_0x12edad=0xc8;}else{_0x12edad=0xce;}_0x1b45a2[_0x7254('0x19')](_0x12edad);return _0x1b45a2[_0x7254('0x20')](_0x7254('0x21'),_0xfcbe19+'-'+_0x3b8f02+'/'+_0x31b78e)[_0x7254('0x1b')](_0x1bb82b);}return null;};}function patchUpdates(_0x44db68){return function(_0x55e98a){try{jsonpatch[_0x7254('0x22')](_0x55e98a,_0x44db68,!![]);}catch(_0x308210){return BPromise[_0x7254('0x23')](_0x308210);}return _0x55e98a[_0x7254('0x24')]();};}function saveUpdates(_0x51652e,_0xa664c5){return function(_0x17e544){if(_0x17e544){return _0x17e544[_0x7254('0x25')](_0x51652e)[_0x7254('0x26')](function(_0x1ee53e){return _0x1ee53e;});}return null;};}function removeEntity(_0x39f1ed,_0x486f98){return function(_0x2217c0){if(_0x2217c0){return _0x2217c0[_0x7254('0x27')]()[_0x7254('0x26')](function(){_0x39f1ed[_0x7254('0x19')](0xcc)[_0x7254('0x1a')]();});}};}function handleEntityNotFound(_0x1d7fb4,_0x32bf2a){return function(_0x56d361){if(!_0x56d361){_0x1d7fb4[_0x7254('0x18')](0x194);}return _0x56d361;};}function handleError(_0x37ffe3,_0x3280d5){_0x3280d5=_0x3280d5||0x1f4;return function(_0x5d9c26){logger[_0x7254('0x28')](_0x5d9c26[_0x7254('0x29')]);if(_0x5d9c26[_0x7254('0x2a')]){delete _0x5d9c26[_0x7254('0x2a')];}_0x37ffe3[_0x7254('0x19')](_0x3280d5)[_0x7254('0x2b')](_0x5d9c26);};}exports[_0x7254('0x2c')]=function(_0xc919c,_0x1a8fb8){var _0x933339={},_0xb0a4a5={},_0x11e5f3={'count':0x0,'rows':[]};var _0x4b8ea6=_[_0x7254('0x2d')](db[_0x7254('0x2e')]['rawAttributes'],function(_0x2f8b72){return{'name':_0x2f8b72[_0x7254('0x2f')],'type':_0x2f8b72[_0x7254('0x30')][_0x7254('0x31')]};});_0xb0a4a5[_0x7254('0x32')]=_['map'](_0x4b8ea6,'name');_0xb0a4a5[_0x7254('0x33')]=_[_0x7254('0x34')](_0xc919c[_0x7254('0x33')]);_0xb0a4a5[_0x7254('0x35')]=_['intersection'](_0xb0a4a5[_0x7254('0x32')],_0xb0a4a5[_0x7254('0x33')]);_0x933339[_0x7254('0x36')]=_[_0x7254('0x37')](_0xb0a4a5[_0x7254('0x32')],qs['fields'](_0xc919c[_0x7254('0x33')][_0x7254('0x38')]));_0x933339['attributes']=_0x933339['attributes'][_0x7254('0x39')]?_0x933339[_0x7254('0x36')]:_0xb0a4a5[_0x7254('0x32')];if(!_0xc919c['query'][_0x7254('0x3a')](_0x7254('0x3b'))){_0x933339[_0x7254('0x1e')]=qs['limit'](_0xc919c[_0x7254('0x33')][_0x7254('0x1e')]);_0x933339['offset']=qs[_0x7254('0x1c')](_0xc919c['query']['offset']);}_0x933339[_0x7254('0x3c')]=qs[_0x7254('0x3d')](_0xc919c[_0x7254('0x33')][_0x7254('0x3d')]);_0x933339['where']=qs[_0x7254('0x35')](_[_0x7254('0x3e')](_0xc919c['query'],_0xb0a4a5[_0x7254('0x35')]),_0x4b8ea6);if(_0xc919c[_0x7254('0x33')][_0x7254('0x3f')]){_0x933339['where']=_[_0x7254('0x40')](_0x933339[_0x7254('0x41')],{'$or':_['map'](_0x4b8ea6,function(_0x1a2c06){if(_0x1a2c06[_0x7254('0x30')]!=='VIRTUAL'){var _0x405753={};_0x405753[_0x1a2c06['name']]={'$like':'%'+_0xc919c[_0x7254('0x33')][_0x7254('0x3f')]+'%'};return _0x405753;}})});}_0x933339=_[_0x7254('0x40')]({},_0x933339,_0xc919c[_0x7254('0x42')]);var _0x9e13fd={'where':_0x933339[_0x7254('0x41')]};return db[_0x7254('0x2e')][_0x7254('0x1f')](_0x9e13fd)[_0x7254('0x26')](function(_0x288a53){_0x11e5f3['count']=_0x288a53;if(_0xc919c[_0x7254('0x33')][_0x7254('0x43')]){_0x933339[_0x7254('0x44')]=[{'all':!![]}];}return db[_0x7254('0x2e')][_0x7254('0x45')](_0x933339);})['then'](function(_0x439979){_0x11e5f3['rows']=_0x439979;return _0x11e5f3;})[_0x7254('0x26')](respondWithFilteredResult(_0x1a8fb8,_0x933339))[_0x7254('0x46')](handleError(_0x1a8fb8,null));};exports['show']=function(_0xce1426,_0x22b2b4){var _0x13fb8a={'raw':![],'where':{'id':_0xce1426[_0x7254('0x47')]['id']}},_0x50532b={};_0x50532b['model']=_[_0x7254('0x34')](db[_0x7254('0x2e')][_0x7254('0x48')]);_0x50532b[_0x7254('0x33')]=_[_0x7254('0x34')](_0xce1426[_0x7254('0x33')]);_0x50532b[_0x7254('0x35')]=_[_0x7254('0x37')](_0x50532b[_0x7254('0x32')],_0x50532b[_0x7254('0x33')]);_0x13fb8a[_0x7254('0x36')]=_[_0x7254('0x37')](_0x50532b[_0x7254('0x32')],qs[_0x7254('0x38')](_0xce1426['query'][_0x7254('0x38')]));_0x13fb8a[_0x7254('0x36')]=_0x13fb8a[_0x7254('0x36')][_0x7254('0x39')]?_0x13fb8a[_0x7254('0x36')]:_0x50532b[_0x7254('0x32')];if(_0xce1426[_0x7254('0x33')][_0x7254('0x43')]){_0x13fb8a[_0x7254('0x44')]=[{'all':!![]}];}_0x13fb8a=_[_0x7254('0x40')]({},_0x13fb8a,_0xce1426['options']);return db['ZohoConfiguration']['find'](_0x13fb8a)[_0x7254('0x26')](handleEntityNotFound(_0x22b2b4,null))['then'](respondWithResult(_0x22b2b4,null))[_0x7254('0x46')](handleError(_0x22b2b4,null));};exports[_0x7254('0x49')]=function(_0x54e549,_0x208ac0){return db[_0x7254('0x2e')][_0x7254('0x49')](_0x54e549[_0x7254('0x4a')],{})[_0x7254('0x26')](respondWithResult(_0x208ac0,0xc9))[_0x7254('0x46')](handleError(_0x208ac0,null));};exports[_0x7254('0x25')]=function(_0x5721e5,_0x2da511){if(_0x5721e5['body']['id']){delete _0x5721e5['body']['id'];}return db['ZohoConfiguration']['find']({'where':{'id':_0x5721e5[_0x7254('0x47')]['id']}})['then'](handleEntityNotFound(_0x2da511,null))['then'](saveUpdates(_0x5721e5[_0x7254('0x4a')],null))[_0x7254('0x26')](respondWithResult(_0x2da511,null))[_0x7254('0x46')](handleError(_0x2da511,null));};exports[_0x7254('0x27')]=function(_0x3fea4a,_0x8bbb5c){return db[_0x7254('0x2e')]['find']({'where':{'id':_0x3fea4a[_0x7254('0x47')]['id']}})[_0x7254('0x26')](handleEntityNotFound(_0x8bbb5c,null))[_0x7254('0x26')](removeEntity(_0x8bbb5c,null))['catch'](handleError(_0x8bbb5c,null));};exports[_0x7254('0x4b')]=function(_0x1aebae,_0xac0e35,_0x43fe7a){var _0x385c23={};var _0x3d9347={};var _0x5c962f;var _0x148bb8;return db['ZohoConfiguration']['findOne']({'where':{'id':_0x1aebae['params']['id']}})[_0x7254('0x26')](handleEntityNotFound(_0xac0e35,null))[_0x7254('0x26')](function(_0x44df52){if(_0x44df52){_0x5c962f=_0x44df52;_0x3d9347[_0x7254('0x32')]=_[_0x7254('0x34')](db[_0x7254('0x4c')]['rawAttributes']);_0x3d9347[_0x7254('0x33')]=_['keys'](_0x1aebae[_0x7254('0x33')]);_0x3d9347[_0x7254('0x35')]=_['intersection'](_0x3d9347[_0x7254('0x32')],_0x3d9347[_0x7254('0x33')]);_0x385c23[_0x7254('0x36')]=_['intersection'](_0x3d9347[_0x7254('0x32')],qs['fields'](_0x1aebae['query'][_0x7254('0x38')]));_0x385c23['attributes']=_0x385c23[_0x7254('0x36')]['length']?_0x385c23[_0x7254('0x36')]:_0x3d9347[_0x7254('0x32')];_0x385c23[_0x7254('0x3c')]=qs[_0x7254('0x3d')](_0x1aebae[_0x7254('0x33')][_0x7254('0x3d')]);_0x385c23[_0x7254('0x41')]=qs[_0x7254('0x35')](_[_0x7254('0x3e')](_0x1aebae['query'],_0x3d9347['filters']));if(_0x1aebae['query'][_0x7254('0x3f')]){_0x385c23[_0x7254('0x41')]=_[_0x7254('0x40')](_0x385c23[_0x7254('0x41')],{'$or':_[_0x7254('0x2d')](_0x385c23[_0x7254('0x36')],function(_0x176ec5){var _0x37333e={};_0x37333e[_0x176ec5]={'$like':'%'+_0x1aebae[_0x7254('0x33')][_0x7254('0x3f')]+'%'};return _0x37333e;})});}_0x385c23=_['merge']({},_0x385c23,_0x1aebae[_0x7254('0x42')]);return _0x5c962f['getFields'](_0x385c23);}})[_0x7254('0x26')](function(_0x35eae5){if(_0x35eae5){_0x148bb8=_0x35eae5[_0x7254('0x39')];if(!_0x1aebae[_0x7254('0x33')][_0x7254('0x3a')]('nolimit')){_0x385c23[_0x7254('0x1e')]=qs['limit'](_0x1aebae[_0x7254('0x33')]['limit']);_0x385c23['offset']=qs[_0x7254('0x1c')](_0x1aebae[_0x7254('0x33')]['offset']);}return _0x5c962f[_0x7254('0x4b')](_0x385c23);}})['then'](function(_0x126b85){if(_0x126b85){return _0x126b85?{'count':_0x148bb8,'rows':_0x126b85}:null;}})[_0x7254('0x26')](respondWithResult(_0xac0e35,null))['catch'](handleError(_0xac0e35,null));};exports[_0x7254('0x4d')]=function(_0x1c19f7,_0x504388,_0x3dd905){var _0x1fe6bb={};var _0x2ef150={};var _0x537b5d;var _0x4970a0;return db[_0x7254('0x2e')][_0x7254('0x4e')]({'where':{'id':_0x1c19f7[_0x7254('0x47')]['id']}})[_0x7254('0x26')](handleEntityNotFound(_0x504388,null))[_0x7254('0x26')](function(_0x1d07e0){if(_0x1d07e0){_0x537b5d=_0x1d07e0;_0x2ef150[_0x7254('0x32')]=_[_0x7254('0x34')](db[_0x7254('0x4c')]['rawAttributes']);_0x2ef150['query']=_[_0x7254('0x34')](_0x1c19f7[_0x7254('0x33')]);_0x2ef150['filters']=_[_0x7254('0x37')](_0x2ef150[_0x7254('0x32')],_0x2ef150[_0x7254('0x33')]);_0x1fe6bb['attributes']=_[_0x7254('0x37')](_0x2ef150['model'],qs[_0x7254('0x38')](_0x1c19f7[_0x7254('0x33')][_0x7254('0x38')]));_0x1fe6bb[_0x7254('0x36')]=_0x1fe6bb[_0x7254('0x36')][_0x7254('0x39')]?_0x1fe6bb[_0x7254('0x36')]:_0x2ef150['model'];_0x1fe6bb[_0x7254('0x3c')]=qs[_0x7254('0x3d')](_0x1c19f7[_0x7254('0x33')]['sort']);_0x1fe6bb[_0x7254('0x41')]=qs[_0x7254('0x35')](_[_0x7254('0x3e')](_0x1c19f7[_0x7254('0x33')],_0x2ef150[_0x7254('0x35')]));if(_0x1c19f7[_0x7254('0x33')][_0x7254('0x3f')]){_0x1fe6bb[_0x7254('0x41')]=_[_0x7254('0x40')](_0x1fe6bb[_0x7254('0x41')],{'$or':_[_0x7254('0x2d')](_0x1fe6bb[_0x7254('0x36')],function(_0xdb9350){var _0x717d7d={};_0x717d7d[_0xdb9350]={'$like':'%'+_0x1c19f7[_0x7254('0x33')]['filter']+'%'};return _0x717d7d;})});}_0x1fe6bb=_[_0x7254('0x40')]({},_0x1fe6bb,_0x1c19f7[_0x7254('0x42')]);return _0x537b5d[_0x7254('0x4d')](_0x1fe6bb);}})[_0x7254('0x26')](function(_0x4c7213){if(_0x4c7213){_0x4970a0=_0x4c7213[_0x7254('0x39')];if(!_0x1c19f7[_0x7254('0x33')]['hasOwnProperty'](_0x7254('0x3b'))){_0x1fe6bb[_0x7254('0x1e')]=qs[_0x7254('0x1e')](_0x1c19f7['query'][_0x7254('0x1e')]);_0x1fe6bb[_0x7254('0x1c')]=qs[_0x7254('0x1c')](_0x1c19f7['query'][_0x7254('0x1c')]);}return _0x537b5d[_0x7254('0x4d')](_0x1fe6bb);}})[_0x7254('0x26')](function(_0x3e1fbd){if(_0x3e1fbd){return _0x3e1fbd?{'count':_0x4970a0,'rows':_0x3e1fbd}:null;}})[_0x7254('0x26')](respondWithResult(_0x504388,null))[_0x7254('0x46')](handleError(_0x504388,null));};exports['getDescriptions']=function(_0x576289,_0x3a611b,_0x645f0f){var _0x4fe35d={};var _0xf0f5bd={};var _0x1d60ed;var _0x20c10e;return db[_0x7254('0x2e')][_0x7254('0x4e')]({'where':{'id':_0x576289[_0x7254('0x47')]['id']}})[_0x7254('0x26')](handleEntityNotFound(_0x3a611b,null))[_0x7254('0x26')](function(_0x2dc866){if(_0x2dc866){_0x1d60ed=_0x2dc866;_0xf0f5bd[_0x7254('0x32')]=_['keys'](db[_0x7254('0x4c')]['rawAttributes']);_0xf0f5bd[_0x7254('0x33')]=_[_0x7254('0x34')](_0x576289[_0x7254('0x33')]);_0xf0f5bd['filters']=_['intersection'](_0xf0f5bd['model'],_0xf0f5bd[_0x7254('0x33')]);_0x4fe35d[_0x7254('0x36')]=_[_0x7254('0x37')](_0xf0f5bd[_0x7254('0x32')],qs['fields'](_0x576289[_0x7254('0x33')][_0x7254('0x38')]));_0x4fe35d[_0x7254('0x36')]=_0x4fe35d[_0x7254('0x36')]['length']?_0x4fe35d['attributes']:_0xf0f5bd[_0x7254('0x32')];_0x4fe35d[_0x7254('0x3c')]=qs[_0x7254('0x3d')](_0x576289[_0x7254('0x33')][_0x7254('0x3d')]);_0x4fe35d[_0x7254('0x41')]=qs[_0x7254('0x35')](_[_0x7254('0x3e')](_0x576289[_0x7254('0x33')],_0xf0f5bd[_0x7254('0x35')]));if(_0x576289[_0x7254('0x33')][_0x7254('0x3f')]){_0x4fe35d[_0x7254('0x41')]=_[_0x7254('0x40')](_0x4fe35d[_0x7254('0x41')],{'$or':_[_0x7254('0x2d')](_0x4fe35d['attributes'],function(_0x5eae2e){var _0x270c18={};_0x270c18[_0x5eae2e]={'$like':'%'+_0x576289[_0x7254('0x33')][_0x7254('0x3f')]+'%'};return _0x270c18;})});}_0x4fe35d=_[_0x7254('0x40')]({},_0x4fe35d,_0x576289[_0x7254('0x42')]);return _0x1d60ed[_0x7254('0x4f')](_0x4fe35d);}})['then'](function(_0x51a013){if(_0x51a013){_0x20c10e=_0x51a013[_0x7254('0x39')];if(!_0x576289['query'][_0x7254('0x3a')](_0x7254('0x3b'))){_0x4fe35d['limit']=qs[_0x7254('0x1e')](_0x576289[_0x7254('0x33')][_0x7254('0x1e')]);_0x4fe35d[_0x7254('0x1c')]=qs[_0x7254('0x1c')](_0x576289[_0x7254('0x33')][_0x7254('0x1c')]);}return _0x1d60ed['getDescriptions'](_0x4fe35d);}})['then'](function(_0x3e479a){if(_0x3e479a){return _0x3e479a?{'count':_0x20c10e,'rows':_0x3e479a}:null;}})[_0x7254('0x26')](respondWithResult(_0x3a611b,null))[_0x7254('0x46')](handleError(_0x3a611b,null));};
\ No newline at end of file
index a170241..4754da8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7cf=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./intZohoConfiguration.attributes','exports','define','ZohoConfiguration','int_zoho_configurations','lodash','util'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xd7cf,0xc2));var _0xfd7c=function(_0x21bb2f,_0x4199b9){_0x21bb2f=_0x21bb2f-0x0;var _0x279b0e=_0xd7cf[_0x21bb2f];return _0x279b0e;};'use strict';var _=require(_0xfd7c('0x0'));var util=require(_0xfd7c('0x1'));var logger=require(_0xfd7c('0x2'))(_0xfd7c('0x3'));var moment=require(_0xfd7c('0x4'));var BPromise=require(_0xfd7c('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfd7c('0x6'));var rimraf=require(_0xfd7c('0x7'));var config=require(_0xfd7c('0x8'));var attributes=require(_0xfd7c('0x9'));module[_0xfd7c('0xa')]=function(_0x2a8090,_0x1b8dc1){return _0x2a8090[_0xfd7c('0xb')](_0xfd7c('0xc'),attributes,{'tableName':_0xfd7c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x099c=['../../config/environment','./intZohoConfiguration.attributes','exports','define','ZohoConfiguration','int_zoho_configurations','util','../../config/logger','api','moment','bluebird','path','rimraf'];(function(_0x5d43c2,_0x55b5ba){var _0x3a1ccc=function(_0x202c4e){while(--_0x202c4e){_0x5d43c2['push'](_0x5d43c2['shift']());}};_0x3a1ccc(++_0x55b5ba);}(_0x099c,0xbc));var _0xc099=function(_0x1b828b,_0x344400){_0x1b828b=_0x1b828b-0x0;var _0x98da1a=_0x099c[_0x1b828b];return _0x98da1a;};'use strict';var _=require('lodash');var util=require(_0xc099('0x0'));var logger=require(_0xc099('0x1'))(_0xc099('0x2'));var moment=require(_0xc099('0x3'));var BPromise=require(_0xc099('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc099('0x5'));var rimraf=require(_0xc099('0x6'));var config=require(_0xc099('0x7'));var attributes=require(_0xc099('0x8'));module[_0xc099('0x9')]=function(_0x38eda5,_0x2efbf9){return _0x38eda5[_0xc099('0xa')](_0xc099('0xb'),attributes,{'tableName':_0xc099('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 26fac52..e395b7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28d4=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ZohoConfiguration,\x20%s,\x20%s','result'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x28d4,0x126));var _0x428d=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x28d4[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0x428d('0x0'));var util=require(_0x428d('0x1'));var moment=require(_0x428d('0x2'));var BPromise=require(_0x428d('0x3'));var rs=require(_0x428d('0x4'));var fs=require('fs');var Redis=require(_0x428d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x428d('0x6'));var logger=require(_0x428d('0x7'))(_0x428d('0x8'));var config=require(_0x428d('0x9'));var jayson=require(_0x428d('0xa'));var client=jayson['client'][_0x428d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x57986a,_0xb2bb4,_0x25531f){return new BPromise(function(_0x1a3d21,_0x1a24e6){return client[_0x428d('0xc')](_0x57986a,_0x25531f)['then'](function(_0x427eb6){logger[_0x428d('0xd')]('ZohoConfiguration,\x20%s,\x20%s',_0xb2bb4,'request\x20sent');logger['debug'](_0x428d('0xe'),_0xb2bb4,'request\x20sent',JSON[_0x428d('0xf')](_0x427eb6));if(_0x427eb6['error']){if(_0x427eb6[_0x428d('0x10')][_0x428d('0x11')]===0x1f4){logger['error']('ZohoConfiguration,\x20%s,\x20%s',_0xb2bb4,_0x427eb6[_0x428d('0x10')][_0x428d('0x12')]);return _0x1a24e6(_0x427eb6[_0x428d('0x10')]['message']);}logger[_0x428d('0x10')](_0x428d('0x13'),_0xb2bb4,_0x427eb6['error'][_0x428d('0x12')]);return _0x1a3d21(_0x427eb6[_0x428d('0x10')]['message']);}else{logger['info'](_0x428d('0x13'),_0xb2bb4,'request\x20sent');_0x1a3d21(_0x427eb6[_0x428d('0x14')]['message']);}})['catch'](function(_0x4e37d9){logger[_0x428d('0x10')](_0x428d('0x13'),_0xb2bb4,_0x4e37d9);_0x1a24e6(_0x4e37d9);});});}
\ No newline at end of file
+var _0x8f88=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','ZohoConfiguration,\x20%s,\x20%s','ZohoConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash'];(function(_0x3804a0,_0x3ee3e8){var _0x11fb0b=function(_0xa74547){while(--_0xa74547){_0x3804a0['push'](_0x3804a0['shift']());}};_0x11fb0b(++_0x3ee3e8);}(_0x8f88,0xfc));var _0x88f8=function(_0x2b8fc4,_0x215c68){_0x2b8fc4=_0x2b8fc4-0x0;var _0x3ac8b8=_0x8f88[_0x2b8fc4];return _0x3ac8b8;};'use strict';var _=require(_0x88f8('0x0'));var util=require(_0x88f8('0x1'));var moment=require(_0x88f8('0x2'));var BPromise=require(_0x88f8('0x3'));var rs=require(_0x88f8('0x4'));var fs=require('fs');var Redis=require(_0x88f8('0x5'));var db=require(_0x88f8('0x6'))['db'];var utils=require(_0x88f8('0x7'));var logger=require(_0x88f8('0x8'))(_0x88f8('0x9'));var config=require('../../config/environment');var jayson=require(_0x88f8('0xa'));var client=jayson[_0x88f8('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0xe008c5,_0xf34364,_0x34afd0){return new BPromise(function(_0x6d3659,_0x3c8371){return client[_0x88f8('0xc')](_0xe008c5,_0x34afd0)[_0x88f8('0xd')](function(_0x5f2497){logger[_0x88f8('0xe')](_0x88f8('0xf'),_0xf34364,'request\x20sent');logger['debug'](_0x88f8('0x10'),_0xf34364,_0x88f8('0x11'),JSON[_0x88f8('0x12')](_0x5f2497));if(_0x5f2497[_0x88f8('0x13')]){if(_0x5f2497['error'][_0x88f8('0x14')]===0x1f4){logger['error'](_0x88f8('0xf'),_0xf34364,_0x5f2497['error'][_0x88f8('0x15')]);return _0x3c8371(_0x5f2497[_0x88f8('0x13')][_0x88f8('0x15')]);}logger[_0x88f8('0x13')](_0x88f8('0xf'),_0xf34364,_0x5f2497[_0x88f8('0x13')]['message']);return _0x6d3659(_0x5f2497['error']['message']);}else{logger['info'](_0x88f8('0xf'),_0xf34364,_0x88f8('0x11'));_0x6d3659(_0x5f2497[_0x88f8('0x16')][_0x88f8('0x15')]);}})['catch'](function(_0xa0a389){logger[_0x88f8('0x13')](_0x88f8('0xf'),_0xf34364,_0xa0a389);_0x3c8371(_0xa0a389);});});}
\ No newline at end of file
index d8cfb61..0c7c25a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x168d=['index','post','create','/:id','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoField.controller','get','isAuthenticated'];(function(_0x57ed38,_0x2a9812){var _0x3b1dc2=function(_0x10f2a0){while(--_0x10f2a0){_0x57ed38['push'](_0x57ed38['shift']());}};_0x3b1dc2(++_0x2a9812);}(_0x168d,0x124));var _0xd168=function(_0x32f7d7,_0x54231b){_0x32f7d7=_0x32f7d7-0x0;var _0x133d09=_0x168d[_0x32f7d7];return _0x133d09;};'use strict';var multer=require(_0xd168('0x0'));var util=require(_0xd168('0x1'));var path=require('path');var timeout=require(_0xd168('0x2'));var express=require(_0xd168('0x3'));var router=express[_0xd168('0x4')]();var fs_extra=require(_0xd168('0x5'));var auth=require(_0xd168('0x6'));var interaction=require(_0xd168('0x7'));var config=require(_0xd168('0x8'));var controller=require(_0xd168('0x9'));router[_0xd168('0xa')]('/',auth[_0xd168('0xb')](),controller[_0xd168('0xc')]);router[_0xd168('0xa')]('/:id',auth[_0xd168('0xb')](),controller['show']);router[_0xd168('0xd')]('/',auth[_0xd168('0xb')](),controller[_0xd168('0xe')]);router['put'](_0xd168('0xf'),auth['isAuthenticated'](),controller[_0xd168('0x10')]);router[_0xd168('0x11')](_0xd168('0xf'),auth[_0xd168('0xb')](),controller['destroy']);module[_0xd168('0x12')]=router;
\ No newline at end of file
+var _0xa740=['multer','util','path','express','fs-extra','../../components/auth/service','../../config/environment','./intZohoField.controller','get','isAuthenticated','index','/:id','show','post','create','update','delete','destroy','exports'];(function(_0x51b486,_0x12a202){var _0x2e7a85=function(_0x140b61){while(--_0x140b61){_0x51b486['push'](_0x51b486['shift']());}};_0x2e7a85(++_0x12a202);}(_0xa740,0x85));var _0x0a74=function(_0x2d7c29,_0x48be56){_0x2d7c29=_0x2d7c29-0x0;var _0x891916=_0xa740[_0x2d7c29];return _0x891916;};'use strict';var multer=require(_0x0a74('0x0'));var util=require(_0x0a74('0x1'));var path=require(_0x0a74('0x2'));var timeout=require('connect-timeout');var express=require(_0x0a74('0x3'));var router=express['Router']();var fs_extra=require(_0x0a74('0x4'));var auth=require(_0x0a74('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x0a74('0x6'));var controller=require(_0x0a74('0x7'));router[_0x0a74('0x8')]('/',auth[_0x0a74('0x9')](),controller[_0x0a74('0xa')]);router[_0x0a74('0x8')](_0x0a74('0xb'),auth[_0x0a74('0x9')](),controller[_0x0a74('0xc')]);router[_0x0a74('0xd')]('/',auth[_0x0a74('0x9')](),controller[_0x0a74('0xe')]);router['put'](_0x0a74('0xb'),auth[_0x0a74('0x9')](),controller[_0x0a74('0xf')]);router[_0x0a74('0x10')](_0x0a74('0xb'),auth[_0x0a74('0x9')](),controller[_0x0a74('0x11')]);module[_0x0a74('0x12')]=router;
\ No newline at end of file
index 429dce5..ca4c8d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde84=['BOOLEAN','sequelize','exports','string','variable','customVariable','picklist','STRING','ENUM'];(function(_0x4b7b62,_0x4920a9){var _0x2280df=function(_0x21e1f8){while(--_0x21e1f8){_0x4b7b62['push'](_0x4b7b62['shift']());}};_0x2280df(++_0x4920a9);}(_0xde84,0xac));var _0x4de8=function(_0x56be8c,_0x550373){_0x56be8c=_0x56be8c-0x0;var _0x485355=_0xde84[_0x56be8c];return _0x485355;};'use strict';var Sequelize=require(_0x4de8('0x0'));module[_0x4de8('0x1')]={'type':{'type':Sequelize['ENUM'](_0x4de8('0x2'),_0x4de8('0x3'),_0x4de8('0x4'),'keyValue',_0x4de8('0x5')),'defaultValue':_0x4de8('0x2')},'content':{'type':Sequelize[_0x4de8('0x6')]},'key':{'type':Sequelize[_0x4de8('0x6')]},'keyType':{'type':Sequelize[_0x4de8('0x7')](_0x4de8('0x2'),_0x4de8('0x3'),_0x4de8('0x4'))},'keyContent':{'type':Sequelize[_0x4de8('0x6')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x4de8('0x6')]},'customField':{'type':Sequelize[_0x4de8('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4de8('0x6')]}};
\ No newline at end of file
+var _0xcc79=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','sequelize','exports'];(function(_0x3a90b6,_0x258d6b){var _0x1da466=function(_0x3c0f35){while(--_0x3c0f35){_0x3a90b6['push'](_0x3a90b6['shift']());}};_0x1da466(++_0x258d6b);}(_0xcc79,0x14b));var _0x9cc7=function(_0x10ca2b,_0x3143fd){_0x10ca2b=_0x10ca2b-0x0;var _0x1b3eaf=_0xcc79[_0x10ca2b];return _0x1b3eaf;};'use strict';var Sequelize=require(_0x9cc7('0x0'));module[_0x9cc7('0x1')]={'type':{'type':Sequelize[_0x9cc7('0x2')](_0x9cc7('0x3'),_0x9cc7('0x4'),_0x9cc7('0x5'),_0x9cc7('0x6'),_0x9cc7('0x7')),'defaultValue':_0x9cc7('0x3')},'content':{'type':Sequelize[_0x9cc7('0x8')]},'key':{'type':Sequelize[_0x9cc7('0x8')]},'keyType':{'type':Sequelize[_0x9cc7('0x2')](_0x9cc7('0x3'),_0x9cc7('0x4'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x9cc7('0x8')]},'nameField':{'type':Sequelize[_0x9cc7('0x8')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9cc7('0x8')]}};
\ No newline at end of file
index 6f82348..2b0afd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa683=['pick','merge','type','filter','then','includeAll','findAll','rows','catch','show','params','include','options','create','body','find','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','destroy','sendStatus','error','name','send','index','map','ZohoField','rawAttributes','fieldName','model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where'];(function(_0x5bdf15,_0x39f070){var _0x1c7939=function(_0x2895e9){while(--_0x2895e9){_0x5bdf15['push'](_0x5bdf15['shift']());}};_0x1c7939(++_0x39f070);}(_0xa683,0x1de));var _0x3a68=function(_0x137325,_0x14354d){_0x137325=_0x137325-0x0;var _0xdaa0c9=_0xa683[_0x137325];return _0xdaa0c9;};'use strict';var emlformat=require(_0x3a68('0x0'));var rimraf=require(_0x3a68('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3a68('0x2'));var rp=require(_0x3a68('0x3'));var moment=require(_0x3a68('0x4'));var BPromise=require(_0x3a68('0x5'));var Mustache=require(_0x3a68('0x6'));var util=require(_0x3a68('0x7'));var path=require(_0x3a68('0x8'));var sox=require('sox');var csv=require(_0x3a68('0x9'));var ejs=require(_0x3a68('0xa'));var fs=require('fs');var fs_extra=require(_0x3a68('0xb'));var _=require(_0x3a68('0xc'));var squel=require(_0x3a68('0xd'));var crypto=require(_0x3a68('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x3a68('0x9'));var querystring=require(_0x3a68('0xf'));var Papa=require(_0x3a68('0x10'));var Redis=require(_0x3a68('0x11'));var authService=require(_0x3a68('0x12'));var qs=require(_0x3a68('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3a68('0x14'));var logger=require('../../config/logger')(_0x3a68('0x15'));var utils=require(_0x3a68('0x16'));var config=require(_0x3a68('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x3a68('0x18'))['db'];function respondWithStatusCode(_0x48b1ba,_0x379105){_0x379105=_0x379105||0xcc;return function(_0x279bf0){if(_0x279bf0){return _0x48b1ba['sendStatus'](_0x379105);}return _0x48b1ba[_0x3a68('0x19')](_0x379105)[_0x3a68('0x1a')]();};}function respondWithResult(_0x3d8916,_0x7e2604){_0x7e2604=_0x7e2604||0xc8;return function(_0x10e864){if(_0x10e864){return _0x3d8916[_0x3a68('0x19')](_0x7e2604)['json'](_0x10e864);}};}function respondWithFilteredResult(_0x4aa37f,_0x2b8043){return function(_0x394f8d){if(_0x394f8d){var _0x5e9760=typeof _0x2b8043[_0x3a68('0x1b')]===_0x3a68('0x1c')&&typeof _0x2b8043['limit']==='undefined';var _0x45fdaf=_0x394f8d[_0x3a68('0x1d')];var _0x5afbf6=_0x5e9760?0x0:_0x2b8043['offset'];var _0x13bd17=_0x5e9760?_0x394f8d['count']:_0x2b8043[_0x3a68('0x1b')]+_0x2b8043[_0x3a68('0x1e')];var _0x399c79;if(_0x13bd17>=_0x45fdaf){_0x13bd17=_0x45fdaf;_0x399c79=0xc8;}else{_0x399c79=0xce;}_0x4aa37f['status'](_0x399c79);return _0x4aa37f[_0x3a68('0x1f')](_0x3a68('0x20'),_0x5afbf6+'-'+_0x13bd17+'/'+_0x45fdaf)[_0x3a68('0x21')](_0x394f8d);}return null;};}function patchUpdates(_0xdd9aba){return function(_0xa846f8){try{jsonpatch[_0x3a68('0x22')](_0xa846f8,_0xdd9aba,!![]);}catch(_0x3013fc){return BPromise[_0x3a68('0x23')](_0x3013fc);}return _0xa846f8[_0x3a68('0x24')]();};}function saveUpdates(_0x346b4d,_0x2c6bca){return function(_0x1b5162){if(_0x1b5162){return _0x1b5162[_0x3a68('0x25')](_0x346b4d)['then'](function(_0x1f8355){return _0x1f8355;});}return null;};}function removeEntity(_0x4c3cbe,_0x8234e8){return function(_0x34efa5){if(_0x34efa5){return _0x34efa5[_0x3a68('0x26')]()['then'](function(){_0x4c3cbe[_0x3a68('0x19')](0xcc)[_0x3a68('0x1a')]();});}};}function handleEntityNotFound(_0x55d81d,_0x3dc250){return function(_0x166ecd){if(!_0x166ecd){_0x55d81d[_0x3a68('0x27')](0x194);}return _0x166ecd;};}function handleError(_0x283c0d,_0x5a08ae){_0x5a08ae=_0x5a08ae||0x1f4;return function(_0x1f41ec){logger[_0x3a68('0x28')](_0x1f41ec['stack']);if(_0x1f41ec[_0x3a68('0x29')]){delete _0x1f41ec[_0x3a68('0x29')];}_0x283c0d[_0x3a68('0x19')](_0x5a08ae)[_0x3a68('0x2a')](_0x1f41ec);};}exports[_0x3a68('0x2b')]=function(_0x399f53,_0x74b306){var _0x265c24={},_0x56f0ab={},_0x578089={'count':0x0,'rows':[]};var _0xe10bca=_[_0x3a68('0x2c')](db[_0x3a68('0x2d')][_0x3a68('0x2e')],function(_0x2fc696){return{'name':_0x2fc696[_0x3a68('0x2f')],'type':_0x2fc696['type']['key']};});_0x56f0ab[_0x3a68('0x30')]=_[_0x3a68('0x2c')](_0xe10bca,_0x3a68('0x29'));_0x56f0ab[_0x3a68('0x31')]=_[_0x3a68('0x32')](_0x399f53[_0x3a68('0x31')]);_0x56f0ab[_0x3a68('0x33')]=_[_0x3a68('0x34')](_0x56f0ab[_0x3a68('0x30')],_0x56f0ab[_0x3a68('0x31')]);_0x265c24['attributes']=_[_0x3a68('0x34')](_0x56f0ab[_0x3a68('0x30')],qs[_0x3a68('0x35')](_0x399f53['query'][_0x3a68('0x35')]));_0x265c24['attributes']=_0x265c24['attributes'][_0x3a68('0x36')]?_0x265c24[_0x3a68('0x37')]:_0x56f0ab[_0x3a68('0x30')];if(!_0x399f53['query'][_0x3a68('0x38')](_0x3a68('0x39'))){_0x265c24[_0x3a68('0x1e')]=qs[_0x3a68('0x1e')](_0x399f53[_0x3a68('0x31')][_0x3a68('0x1e')]);_0x265c24['offset']=qs[_0x3a68('0x1b')](_0x399f53[_0x3a68('0x31')]['offset']);}_0x265c24[_0x3a68('0x3a')]=qs[_0x3a68('0x3b')](_0x399f53['query'][_0x3a68('0x3b')]);_0x265c24[_0x3a68('0x3c')]=qs[_0x3a68('0x33')](_[_0x3a68('0x3d')](_0x399f53[_0x3a68('0x31')],_0x56f0ab[_0x3a68('0x33')]),_0xe10bca);if(_0x399f53[_0x3a68('0x31')]['filter']){_0x265c24[_0x3a68('0x3c')]=_[_0x3a68('0x3e')](_0x265c24[_0x3a68('0x3c')],{'$or':_[_0x3a68('0x2c')](_0xe10bca,function(_0x3cb61c){if(_0x3cb61c[_0x3a68('0x3f')]!=='VIRTUAL'){var _0x54fbb2={};_0x54fbb2[_0x3cb61c['name']]={'$like':'%'+_0x399f53[_0x3a68('0x31')][_0x3a68('0x40')]+'%'};return _0x54fbb2;}})});}_0x265c24=_[_0x3a68('0x3e')]({},_0x265c24,_0x399f53['options']);var _0xf9f6f6={'where':_0x265c24['where']};return db[_0x3a68('0x2d')][_0x3a68('0x1d')](_0xf9f6f6)[_0x3a68('0x41')](function(_0x4e4a11){_0x578089['count']=_0x4e4a11;if(_0x399f53[_0x3a68('0x31')][_0x3a68('0x42')]){_0x265c24['include']=[{'all':!![]}];}return db[_0x3a68('0x2d')][_0x3a68('0x43')](_0x265c24);})[_0x3a68('0x41')](function(_0xbc668e){_0x578089[_0x3a68('0x44')]=_0xbc668e;return _0x578089;})[_0x3a68('0x41')](respondWithFilteredResult(_0x74b306,_0x265c24))[_0x3a68('0x45')](handleError(_0x74b306,null));};exports[_0x3a68('0x46')]=function(_0x498be6,_0x2c02be){var _0x2e3170={'raw':!![],'where':{'id':_0x498be6[_0x3a68('0x47')]['id']}},_0x4548b6={};_0x4548b6['model']=_[_0x3a68('0x32')](db[_0x3a68('0x2d')][_0x3a68('0x2e')]);_0x4548b6[_0x3a68('0x31')]=_[_0x3a68('0x32')](_0x498be6['query']);_0x4548b6['filters']=_[_0x3a68('0x34')](_0x4548b6[_0x3a68('0x30')],_0x4548b6[_0x3a68('0x31')]);_0x2e3170[_0x3a68('0x37')]=_['intersection'](_0x4548b6[_0x3a68('0x30')],qs[_0x3a68('0x35')](_0x498be6['query'][_0x3a68('0x35')]));_0x2e3170[_0x3a68('0x37')]=_0x2e3170[_0x3a68('0x37')][_0x3a68('0x36')]?_0x2e3170['attributes']:_0x4548b6[_0x3a68('0x30')];if(_0x498be6['query'][_0x3a68('0x42')]){_0x2e3170[_0x3a68('0x48')]=[{'all':!![]}];}_0x2e3170=_[_0x3a68('0x3e')]({},_0x2e3170,_0x498be6[_0x3a68('0x49')]);return db[_0x3a68('0x2d')]['find'](_0x2e3170)['then'](handleEntityNotFound(_0x2c02be,null))[_0x3a68('0x41')](respondWithResult(_0x2c02be,null))[_0x3a68('0x45')](handleError(_0x2c02be,null));};exports[_0x3a68('0x4a')]=function(_0x385219,_0x5d072f){return db['ZohoField'][_0x3a68('0x4a')](_0x385219[_0x3a68('0x4b')],{})[_0x3a68('0x41')](respondWithResult(_0x5d072f,0xc9))[_0x3a68('0x45')](handleError(_0x5d072f,null));};exports['update']=function(_0xe779c3,_0x29261b){if(_0xe779c3['body']['id']){delete _0xe779c3['body']['id'];}return db[_0x3a68('0x2d')][_0x3a68('0x4c')]({'where':{'id':_0xe779c3['params']['id']}})[_0x3a68('0x41')](handleEntityNotFound(_0x29261b,null))['then'](saveUpdates(_0xe779c3[_0x3a68('0x4b')],null))[_0x3a68('0x41')](respondWithResult(_0x29261b,null))[_0x3a68('0x45')](handleError(_0x29261b,null));};exports[_0x3a68('0x26')]=function(_0x3af2c4,_0x32c762){return db['ZohoField'][_0x3a68('0x4c')]({'where':{'id':_0x3af2c4[_0x3a68('0x47')]['id']}})[_0x3a68('0x41')](handleEntityNotFound(_0x32c762,null))[_0x3a68('0x41')](removeEntity(_0x32c762,null))[_0x3a68('0x45')](handleError(_0x32c762,null));};
\ No newline at end of file
+var _0xcbda=['util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','map','rawAttributes','key','query','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','filters','pick','merge','filter','options','ZohoField','includeAll','include','findAll','rows','catch','params','keys','length','create','body','find','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache'];(function(_0x15a629,_0x5160cb){var _0x533cd4=function(_0x3963c5){while(--_0x3963c5){_0x15a629['push'](_0x15a629['shift']());}};_0x533cd4(++_0x5160cb);}(_0xcbda,0x171));var _0xacbd=function(_0x2c8614,_0x402650){_0x2c8614=_0x2c8614-0x0;var _0x176bb0=_0xcbda[_0x2c8614];return _0x176bb0;};'use strict';var emlformat=require(_0xacbd('0x0'));var rimraf=require(_0xacbd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xacbd('0x2'));var rp=require('request-promise');var moment=require(_0xacbd('0x3'));var BPromise=require(_0xacbd('0x4'));var Mustache=require(_0xacbd('0x5'));var util=require(_0xacbd('0x6'));var path=require(_0xacbd('0x7'));var sox=require(_0xacbd('0x8'));var csv=require(_0xacbd('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xacbd('0xa'));var _=require(_0xacbd('0xb'));var squel=require(_0xacbd('0xc'));var crypto=require(_0xacbd('0xd'));var jsforce=require(_0xacbd('0xe'));var deskjs=require(_0xacbd('0xf'));var toCsv=require(_0xacbd('0x9'));var querystring=require(_0xacbd('0x10'));var Papa=require(_0xacbd('0x11'));var Redis=require(_0xacbd('0x12'));var authService=require(_0xacbd('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xacbd('0x14'));var hardwareService=require(_0xacbd('0x15'));var logger=require('../../config/logger')(_0xacbd('0x16'));var utils=require(_0xacbd('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xacbd('0x18'));var db=require(_0xacbd('0x19'))['db'];function respondWithStatusCode(_0x26fa58,_0x398c7a){_0x398c7a=_0x398c7a||0xcc;return function(_0x5ce8ed){if(_0x5ce8ed){return _0x26fa58['sendStatus'](_0x398c7a);}return _0x26fa58[_0xacbd('0x1a')](_0x398c7a)[_0xacbd('0x1b')]();};}function respondWithResult(_0x427335,_0x10174e){_0x10174e=_0x10174e||0xc8;return function(_0x5dfc7a){if(_0x5dfc7a){return _0x427335['status'](_0x10174e)[_0xacbd('0x1c')](_0x5dfc7a);}};}function respondWithFilteredResult(_0x4f096f,_0x548515){return function(_0x513b20){if(_0x513b20){var _0x25bfcf=typeof _0x548515[_0xacbd('0x1d')]===_0xacbd('0x1e')&&typeof _0x548515[_0xacbd('0x1f')]===_0xacbd('0x1e');var _0x52b4b7=_0x513b20['count'];var _0x2fe889=_0x25bfcf?0x0:_0x548515[_0xacbd('0x1d')];var _0x4626e0=_0x25bfcf?_0x513b20[_0xacbd('0x20')]:_0x548515[_0xacbd('0x1d')]+_0x548515[_0xacbd('0x1f')];var _0x35aec2;if(_0x4626e0>=_0x52b4b7){_0x4626e0=_0x52b4b7;_0x35aec2=0xc8;}else{_0x35aec2=0xce;}_0x4f096f[_0xacbd('0x1a')](_0x35aec2);return _0x4f096f[_0xacbd('0x21')](_0xacbd('0x22'),_0x2fe889+'-'+_0x4626e0+'/'+_0x52b4b7)[_0xacbd('0x1c')](_0x513b20);}return null;};}function patchUpdates(_0x4dcdce){return function(_0x19383c){try{jsonpatch[_0xacbd('0x23')](_0x19383c,_0x4dcdce,!![]);}catch(_0x33b82c){return BPromise[_0xacbd('0x24')](_0x33b82c);}return _0x19383c[_0xacbd('0x25')]();};}function saveUpdates(_0x479364,_0x4aa845){return function(_0x19f5f6){if(_0x19f5f6){return _0x19f5f6[_0xacbd('0x26')](_0x479364)[_0xacbd('0x27')](function(_0x4935be){return _0x4935be;});}return null;};}function removeEntity(_0x449cf9,_0x24c4cf){return function(_0x5ef4e5){if(_0x5ef4e5){return _0x5ef4e5[_0xacbd('0x28')]()[_0xacbd('0x27')](function(){_0x449cf9['status'](0xcc)[_0xacbd('0x1b')]();});}};}function handleEntityNotFound(_0x7753f5,_0x1ec63c){return function(_0x8adf12){if(!_0x8adf12){_0x7753f5[_0xacbd('0x29')](0x194);}return _0x8adf12;};}function handleError(_0x5f0fa2,_0x564721){_0x564721=_0x564721||0x1f4;return function(_0x19e757){logger[_0xacbd('0x2a')](_0x19e757[_0xacbd('0x2b')]);if(_0x19e757[_0xacbd('0x2c')]){delete _0x19e757[_0xacbd('0x2c')];}_0x5f0fa2['status'](_0x564721)[_0xacbd('0x2d')](_0x19e757);};}exports['index']=function(_0x5b572c,_0x57c2a1){var _0x10e78d={},_0x5f3080={},_0x237866={'count':0x0,'rows':[]};var _0x4103b6=_[_0xacbd('0x2e')](db['ZohoField'][_0xacbd('0x2f')],function(_0x4ccdc0){return{'name':_0x4ccdc0['fieldName'],'type':_0x4ccdc0['type'][_0xacbd('0x30')]};});_0x5f3080['model']=_[_0xacbd('0x2e')](_0x4103b6,_0xacbd('0x2c'));_0x5f3080[_0xacbd('0x31')]=_['keys'](_0x5b572c[_0xacbd('0x31')]);_0x5f3080['filters']=_[_0xacbd('0x32')](_0x5f3080[_0xacbd('0x33')],_0x5f3080['query']);_0x10e78d[_0xacbd('0x34')]=_[_0xacbd('0x32')](_0x5f3080[_0xacbd('0x33')],qs[_0xacbd('0x35')](_0x5b572c[_0xacbd('0x31')][_0xacbd('0x35')]));_0x10e78d['attributes']=_0x10e78d[_0xacbd('0x34')]['length']?_0x10e78d[_0xacbd('0x34')]:_0x5f3080[_0xacbd('0x33')];if(!_0x5b572c[_0xacbd('0x31')][_0xacbd('0x36')]('nolimit')){_0x10e78d[_0xacbd('0x1f')]=qs[_0xacbd('0x1f')](_0x5b572c[_0xacbd('0x31')][_0xacbd('0x1f')]);_0x10e78d[_0xacbd('0x1d')]=qs[_0xacbd('0x1d')](_0x5b572c[_0xacbd('0x31')][_0xacbd('0x1d')]);}_0x10e78d[_0xacbd('0x37')]=qs[_0xacbd('0x38')](_0x5b572c['query'][_0xacbd('0x38')]);_0x10e78d[_0xacbd('0x39')]=qs[_0xacbd('0x3a')](_[_0xacbd('0x3b')](_0x5b572c['query'],_0x5f3080[_0xacbd('0x3a')]),_0x4103b6);if(_0x5b572c['query']['filter']){_0x10e78d['where']=_[_0xacbd('0x3c')](_0x10e78d['where'],{'$or':_[_0xacbd('0x2e')](_0x4103b6,function(_0x381148){if(_0x381148['type']!=='VIRTUAL'){var _0x19220e={};_0x19220e[_0x381148[_0xacbd('0x2c')]]={'$like':'%'+_0x5b572c['query'][_0xacbd('0x3d')]+'%'};return _0x19220e;}})});}_0x10e78d=_[_0xacbd('0x3c')]({},_0x10e78d,_0x5b572c[_0xacbd('0x3e')]);var _0x34a052={'where':_0x10e78d[_0xacbd('0x39')]};return db[_0xacbd('0x3f')][_0xacbd('0x20')](_0x34a052)[_0xacbd('0x27')](function(_0x22742d){_0x237866[_0xacbd('0x20')]=_0x22742d;if(_0x5b572c[_0xacbd('0x31')][_0xacbd('0x40')]){_0x10e78d[_0xacbd('0x41')]=[{'all':!![]}];}return db[_0xacbd('0x3f')][_0xacbd('0x42')](_0x10e78d);})[_0xacbd('0x27')](function(_0x5e71dd){_0x237866[_0xacbd('0x43')]=_0x5e71dd;return _0x237866;})['then'](respondWithFilteredResult(_0x57c2a1,_0x10e78d))[_0xacbd('0x44')](handleError(_0x57c2a1,null));};exports['show']=function(_0x2d553b,_0x50f81f){var _0x2c2ca5={'raw':!![],'where':{'id':_0x2d553b[_0xacbd('0x45')]['id']}},_0x17f4f9={};_0x17f4f9[_0xacbd('0x33')]=_[_0xacbd('0x46')](db[_0xacbd('0x3f')][_0xacbd('0x2f')]);_0x17f4f9['query']=_[_0xacbd('0x46')](_0x2d553b[_0xacbd('0x31')]);_0x17f4f9['filters']=_['intersection'](_0x17f4f9[_0xacbd('0x33')],_0x17f4f9['query']);_0x2c2ca5[_0xacbd('0x34')]=_[_0xacbd('0x32')](_0x17f4f9[_0xacbd('0x33')],qs['fields'](_0x2d553b[_0xacbd('0x31')][_0xacbd('0x35')]));_0x2c2ca5[_0xacbd('0x34')]=_0x2c2ca5[_0xacbd('0x34')][_0xacbd('0x47')]?_0x2c2ca5[_0xacbd('0x34')]:_0x17f4f9['model'];if(_0x2d553b[_0xacbd('0x31')][_0xacbd('0x40')]){_0x2c2ca5['include']=[{'all':!![]}];}_0x2c2ca5=_[_0xacbd('0x3c')]({},_0x2c2ca5,_0x2d553b['options']);return db[_0xacbd('0x3f')]['find'](_0x2c2ca5)[_0xacbd('0x27')](handleEntityNotFound(_0x50f81f,null))[_0xacbd('0x27')](respondWithResult(_0x50f81f,null))[_0xacbd('0x44')](handleError(_0x50f81f,null));};exports['create']=function(_0x172227,_0x5a80c2){return db['ZohoField'][_0xacbd('0x48')](_0x172227[_0xacbd('0x49')],{})['then'](respondWithResult(_0x5a80c2,0xc9))[_0xacbd('0x44')](handleError(_0x5a80c2,null));};exports[_0xacbd('0x26')]=function(_0x367602,_0x5b80e3){if(_0x367602[_0xacbd('0x49')]['id']){delete _0x367602['body']['id'];}return db[_0xacbd('0x3f')][_0xacbd('0x4a')]({'where':{'id':_0x367602['params']['id']}})[_0xacbd('0x27')](handleEntityNotFound(_0x5b80e3,null))[_0xacbd('0x27')](saveUpdates(_0x367602[_0xacbd('0x49')],null))[_0xacbd('0x27')](respondWithResult(_0x5b80e3,null))['catch'](handleError(_0x5b80e3,null));};exports['destroy']=function(_0x3530c3,_0x226f96){return db[_0xacbd('0x3f')][_0xacbd('0x4a')]({'where':{'id':_0x3530c3[_0xacbd('0x45')]['id']}})['then'](handleEntityNotFound(_0x226f96,null))[_0xacbd('0x27')](removeEntity(_0x226f96,null))[_0xacbd('0x44')](handleError(_0x226f96,null));};
\ No newline at end of file
index d0507d6..51e0df5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7046=['lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./intZohoField.attributes','exports','ZohoField','idField'];(function(_0x1ec818,_0x1ad248){var _0x3ea42a=function(_0x15d0e5){while(--_0x15d0e5){_0x1ec818['push'](_0x1ec818['shift']());}};_0x3ea42a(++_0x1ad248);}(_0x7046,0x144));var _0x6704=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x7046[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x6704('0x0'));var util=require(_0x6704('0x1'));var logger=require(_0x6704('0x2'))(_0x6704('0x3'));var moment=require('moment');var BPromise=require(_0x6704('0x4'));var rp=require(_0x6704('0x5'));var fs=require('fs');var path=require(_0x6704('0x6'));var rimraf=require('rimraf');var config=require(_0x6704('0x7'));var attributes=require(_0x6704('0x8'));module[_0x6704('0x9')]=function(_0x626a14,_0x2917be){return _0x626a14['define'](_0x6704('0xa'),attributes,{'tableName':'int_zoho_fields','paranoid':![],'indexes':[{'name':'zoho_unique_index','fields':[_0x6704('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9a5a=['util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intZohoField.attributes','exports','define','ZohoField','int_zoho_fields','zoho_unique_index','lodash'];(function(_0x3cb152,_0x57eb54){var _0x4f54c3=function(_0x273a45){while(--_0x273a45){_0x3cb152['push'](_0x3cb152['shift']());}};_0x4f54c3(++_0x57eb54);}(_0x9a5a,0x194));var _0xa9a5=function(_0x17f900,_0x248466){_0x17f900=_0x17f900-0x0;var _0x3945ce=_0x9a5a[_0x17f900];return _0x3945ce;};'use strict';var _=require(_0xa9a5('0x0'));var util=require(_0xa9a5('0x1'));var logger=require(_0xa9a5('0x2'))(_0xa9a5('0x3'));var moment=require(_0xa9a5('0x4'));var BPromise=require('bluebird');var rp=require(_0xa9a5('0x5'));var fs=require('fs');var path=require(_0xa9a5('0x6'));var rimraf=require(_0xa9a5('0x7'));var config=require(_0xa9a5('0x8'));var attributes=require(_0xa9a5('0x9'));module[_0xa9a5('0xa')]=function(_0x4a73f4,_0xb0ccd9){return _0x4a73f4[_0xa9a5('0xb')](_0xa9a5('0xc'),attributes,{'tableName':_0xa9a5('0xd'),'paranoid':![],'indexes':[{'name':_0xa9a5('0xe'),'fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index c430c34..f4fdef8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x651e=['stringify','code','error','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','ZohoField,\x20%s,\x20%s','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s'];(function(_0x3a5248,_0x34e201){var _0x4175a1=function(_0x5ad898){while(--_0x5ad898){_0x3a5248['push'](_0x3a5248['shift']());}};_0x4175a1(++_0x34e201);}(_0x651e,0x1e8));var _0xe651=function(_0x2296f3,_0x59ef46){_0x2296f3=_0x2296f3-0x0;var _0x29d615=_0x651e[_0x2296f3];return _0x29d615;};'use strict';var _=require(_0xe651('0x0'));var util=require('util');var moment=require(_0xe651('0x1'));var BPromise=require(_0xe651('0x2'));var rs=require(_0xe651('0x3'));var fs=require('fs');var Redis=require(_0xe651('0x4'));var db=require(_0xe651('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe651('0x6'))(_0xe651('0x7'));var config=require(_0xe651('0x8'));var jayson=require(_0xe651('0x9'));var client=jayson[_0xe651('0xa')][_0xe651('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5b2d9d,_0xc64c96,_0x5e99e0){return new BPromise(function(_0x5ac6f4,_0x2929d9){return client['request'](_0x5b2d9d,_0x5e99e0)[_0xe651('0xc')](function(_0x17ad90){logger[_0xe651('0xd')](_0xe651('0xe'),_0xc64c96,_0xe651('0xf'));logger[_0xe651('0x10')](_0xe651('0x11'),_0xc64c96,_0xe651('0xf'),JSON[_0xe651('0x12')](_0x17ad90));if(_0x17ad90['error']){if(_0x17ad90['error'][_0xe651('0x13')]===0x1f4){logger[_0xe651('0x14')]('ZohoField,\x20%s,\x20%s',_0xc64c96,_0x17ad90[_0xe651('0x14')][_0xe651('0x15')]);return _0x2929d9(_0x17ad90[_0xe651('0x14')][_0xe651('0x15')]);}logger[_0xe651('0x14')](_0xe651('0xe'),_0xc64c96,_0x17ad90[_0xe651('0x14')][_0xe651('0x15')]);return _0x5ac6f4(_0x17ad90['error'][_0xe651('0x15')]);}else{logger[_0xe651('0xd')](_0xe651('0xe'),_0xc64c96,_0xe651('0xf'));_0x5ac6f4(_0x17ad90['result'][_0xe651('0x15')]);}})[_0xe651('0x16')](function(_0x561e6e){logger[_0xe651('0x14')](_0xe651('0xe'),_0xc64c96,_0x561e6e);_0x2929d9(_0x561e6e);});});}
\ No newline at end of file
+var _0xef74=['request','then','info','ZohoField,\x20%s,\x20%s','debug','ZohoField,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client'];(function(_0x5e9c6a,_0x190223){var _0x49cf9d=function(_0x38e1cb){while(--_0x38e1cb){_0x5e9c6a['push'](_0x5e9c6a['shift']());}};_0x49cf9d(++_0x190223);}(_0xef74,0xb4));var _0x4ef7=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0xef74[_0xbd08b4];return _0x314f1e;};'use strict';var _=require(_0x4ef7('0x0'));var util=require(_0x4ef7('0x1'));var moment=require('moment');var BPromise=require(_0x4ef7('0x2'));var rs=require(_0x4ef7('0x3'));var fs=require('fs');var Redis=require(_0x4ef7('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x4ef7('0x5'));var logger=require(_0x4ef7('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x4ef7('0x7'));var client=jayson[_0x4ef7('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x33d956,_0x55d279,_0x4ca225){return new BPromise(function(_0x2e9835,_0x17729f){return client[_0x4ef7('0x9')](_0x33d956,_0x4ca225)[_0x4ef7('0xa')](function(_0x46ab16){logger[_0x4ef7('0xb')](_0x4ef7('0xc'),_0x55d279,'request\x20sent');logger[_0x4ef7('0xd')](_0x4ef7('0xe'),_0x55d279,_0x4ef7('0xf'),JSON['stringify'](_0x46ab16));if(_0x46ab16['error']){if(_0x46ab16['error'][_0x4ef7('0x10')]===0x1f4){logger[_0x4ef7('0x11')]('ZohoField,\x20%s,\x20%s',_0x55d279,_0x46ab16[_0x4ef7('0x11')]['message']);return _0x17729f(_0x46ab16[_0x4ef7('0x11')][_0x4ef7('0x12')]);}logger[_0x4ef7('0x11')](_0x4ef7('0xc'),_0x55d279,_0x46ab16['error'][_0x4ef7('0x12')]);return _0x2e9835(_0x46ab16[_0x4ef7('0x11')][_0x4ef7('0x12')]);}else{logger[_0x4ef7('0xb')](_0x4ef7('0xc'),_0x55d279,_0x4ef7('0xf'));_0x2e9835(_0x46ab16[_0x4ef7('0x13')]['message']);}})[_0x4ef7('0x14')](function(_0x39053b){logger[_0x4ef7('0x11')](_0x4ef7('0xc'),_0x55d279,_0x39053b);_0x17729f(_0x39053b);});});}
\ No newline at end of file
index 4d81ff4..c3633fb 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(_0x232837,_0x5dadf4){var _0xdafc22=function(_0x3b95a3){while(--_0x3b95a3){_0x232837['push'](_0x232837['shift']());}};_0xdafc22(++_0x5dadf4);}(_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(_0x3f1b31,_0x3dd0d1){var _0x1c3a6d=function(_0x463b3d){while(--_0x463b3d){_0x3f1b31['push'](_0x3f1b31['shift']());}};_0x1c3a6d(++_0x3dd0d1);}(_0x70e0,0x17b));var _0x070e=function(_0x1142c7,_0x10dfca){_0x1142c7=_0x1142c7-0x0;var _0x5a2e07=_0x70e0[_0x1142c7];return _0x5a2e07;};'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 2cefad9..52fb951 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba31=['exports','unique_name_and_version','STRING','app.js','BOOLEAN','state'];(function(_0x4b2863,_0x494899){var _0x567d67=function(_0x751f03){while(--_0x751f03){_0x4b2863['push'](_0x4b2863['shift']());}};_0x567d67(++_0x494899);}(_0xba31,0x19e));var _0x1ba3=function(_0x3e0763,_0x3d12be){_0x3e0763=_0x3e0763-0x0;var _0x351ca2=_0xba31[_0x3e0763];return _0x351ca2;};'use strict';var Sequelize=require('sequelize');module[_0x1ba3('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x1ba3('0x1')},'main':{'type':Sequelize[_0x1ba3('0x2')],'defaultValue':_0x1ba3('0x3')},'filename':{'type':Sequelize[_0x1ba3('0x2')]},'path':{'type':Sequelize[_0x1ba3('0x2')]},'type':{'type':Sequelize[_0x1ba3('0x2')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0x1ba3('0x4')],'defaultValue':![]},'author':{'type':Sequelize[_0x1ba3('0x2')]},'logo':{'type':Sequelize['STRING']},'state':{'type':Sequelize[_0x1ba3('0x2')],'unique':_0x1ba3('0x5')},'description':{'type':Sequelize[_0x1ba3('0x2')]},'title':{'type':Sequelize[_0x1ba3('0x2')]},'remoteUri':{'type':Sequelize[_0x1ba3('0x2')]},'link':{'type':Sequelize[_0x1ba3('0x2')],'defaultValue':'#'}};
\ No newline at end of file
+var _0x5248=['state','exports','unique_name_and_version','STRING','app.js','INTEGER','BOOLEAN'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0x5248,0x1a5));var _0x8524=function(_0x57a78e,_0x2e3a00){_0x57a78e=_0x57a78e-0x0;var _0x5770f5=_0x5248[_0x57a78e];return _0x5770f5;};'use strict';var Sequelize=require('sequelize');module[_0x8524('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x8524('0x1')},'version':{'type':Sequelize[_0x8524('0x2')],'allowNull':![],'unique':_0x8524('0x1')},'main':{'type':Sequelize['STRING'],'defaultValue':_0x8524('0x3')},'filename':{'type':Sequelize[_0x8524('0x2')]},'path':{'type':Sequelize[_0x8524('0x2')]},'type':{'type':Sequelize[_0x8524('0x2')]},'size':{'type':Sequelize[_0x8524('0x4')]},'active':{'type':Sequelize[_0x8524('0x5')],'defaultValue':![]},'author':{'type':Sequelize['STRING']},'logo':{'type':Sequelize[_0x8524('0x2')]},'state':{'type':Sequelize[_0x8524('0x2')],'unique':_0x8524('0x6')},'description':{'type':Sequelize[_0x8524('0x2')]},'title':{'type':Sequelize[_0x8524('0x2')]},'remoteUri':{'type':Sequelize[_0x8524('0x2')]},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
index 5429884..4d09731 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c5=['rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','map','VIRTUAL','filter','merge','count','includeAll','include','findAll','show','params','options','find','catch','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','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/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','send','index','Integration'];(function(_0x191af2,_0x37141a){var _0x1e5604=function(_0x3fe794){while(--_0x3fe794){_0x191af2['push'](_0x191af2['shift']());}};_0x1e5604(++_0x37141a);}(_0x47c5,0x165));var _0x547c=function(_0x4fdc3e,_0x47de79){_0x4fdc3e=_0x4fdc3e-0x0;var _0x3abc09=_0x47c5[_0x4fdc3e];return _0x3abc09;};'use strict';var emlformat=require(_0x547c('0x0'));var rimraf=require(_0x547c('0x1'));var zipdir=require(_0x547c('0x2'));var jsonpatch=require(_0x547c('0x3'));var rp=require(_0x547c('0x4'));var moment=require(_0x547c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x547c('0x6'));var util=require(_0x547c('0x7'));var path=require('path');var sox=require(_0x547c('0x8'));var csv=require(_0x547c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x547c('0xa'));var _=require(_0x547c('0xb'));var squel=require(_0x547c('0xc'));var crypto=require(_0x547c('0xd'));var jsforce=require(_0x547c('0xe'));var deskjs=require(_0x547c('0xf'));var toCsv=require(_0x547c('0x9'));var querystring=require(_0x547c('0x10'));var Papa=require(_0x547c('0x11'));var Redis=require(_0x547c('0x12'));var authService=require(_0x547c('0x13'));var qs=require(_0x547c('0x14'));var as=require(_0x547c('0x15'));var hardwareService=require(_0x547c('0x16'));var logger=require(_0x547c('0x17'))(_0x547c('0x18'));var utils=require(_0x547c('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x547c('0x1a'));var db=require(_0x547c('0x1b'))['db'];function respondWithStatusCode(_0x5eea67,_0x436c19){_0x436c19=_0x436c19||0xcc;return function(_0x201d95){if(_0x201d95){return _0x5eea67[_0x547c('0x1c')](_0x436c19);}return _0x5eea67[_0x547c('0x1d')](_0x436c19)[_0x547c('0x1e')]();};}function respondWithResult(_0x150317,_0x2bc289){_0x2bc289=_0x2bc289||0xc8;return function(_0xa3c7b0){if(_0xa3c7b0){return _0x150317[_0x547c('0x1d')](_0x2bc289)[_0x547c('0x1f')](_0xa3c7b0);}};}function respondWithFilteredResult(_0x240243,_0x103455){return function(_0x39f316){if(_0x39f316){var _0x23644b=typeof _0x103455[_0x547c('0x20')]===_0x547c('0x21')&&typeof _0x103455[_0x547c('0x22')]===_0x547c('0x21');var _0x49acca=_0x39f316['count'];var _0x23fa9e=_0x23644b?0x0:_0x103455[_0x547c('0x20')];var _0xeb059e=_0x23644b?_0x39f316['count']:_0x103455[_0x547c('0x20')]+_0x103455[_0x547c('0x22')];var _0x1ddbd3;if(_0xeb059e>=_0x49acca){_0xeb059e=_0x49acca;_0x1ddbd3=0xc8;}else{_0x1ddbd3=0xce;}_0x240243['status'](_0x1ddbd3);return _0x240243[_0x547c('0x23')](_0x547c('0x24'),_0x23fa9e+'-'+_0xeb059e+'/'+_0x49acca)['json'](_0x39f316);}return null;};}function patchUpdates(_0x5453f9){return function(_0x35040a){try{jsonpatch[_0x547c('0x25')](_0x35040a,_0x5453f9,!![]);}catch(_0x4f20c1){return BPromise[_0x547c('0x26')](_0x4f20c1);}return _0x35040a[_0x547c('0x27')]();};}function saveUpdates(_0x592e46,_0x2e317a){return function(_0x17fd97){if(_0x17fd97){return _0x17fd97[_0x547c('0x28')](_0x592e46)['then'](function(_0x3a55a0){return _0x3a55a0;});}return null;};}function removeEntity(_0x361c5c,_0x470694){return function(_0x26823c){if(_0x26823c){return _0x26823c[_0x547c('0x29')]()[_0x547c('0x2a')](function(){_0x361c5c[_0x547c('0x1d')](0xcc)[_0x547c('0x1e')]();});}};}function handleEntityNotFound(_0x507895,_0x39c5f9){return function(_0x4c66b9){if(!_0x4c66b9){_0x507895['sendStatus'](0x194);}return _0x4c66b9;};}function handleError(_0x4855fd,_0x478f04){_0x478f04=_0x478f04||0x1f4;return function(_0x2c725d){logger['error'](_0x2c725d[_0x547c('0x2b')]);if(_0x2c725d['name']){delete _0x2c725d[_0x547c('0x2c')];}_0x4855fd['status'](_0x478f04)[_0x547c('0x2d')](_0x2c725d);};}exports[_0x547c('0x2e')]=function(_0x2389de,_0x30a96c){var _0x198afb={},_0x569924={},_0x575c74={'count':0x0,'rows':[]};var _0x28c282=_['map'](db[_0x547c('0x2f')][_0x547c('0x30')],function(_0x3e7652){return{'name':_0x3e7652[_0x547c('0x31')],'type':_0x3e7652[_0x547c('0x32')][_0x547c('0x33')]};});_0x569924[_0x547c('0x34')]=_['map'](_0x28c282,'name');_0x569924[_0x547c('0x35')]=_[_0x547c('0x36')](_0x2389de[_0x547c('0x35')]);_0x569924[_0x547c('0x37')]=_[_0x547c('0x38')](_0x569924[_0x547c('0x34')],_0x569924[_0x547c('0x35')]);_0x198afb[_0x547c('0x39')]=_[_0x547c('0x38')](_0x569924[_0x547c('0x34')],qs[_0x547c('0x3a')](_0x2389de[_0x547c('0x35')][_0x547c('0x3a')]));_0x198afb[_0x547c('0x39')]=_0x198afb['attributes'][_0x547c('0x3b')]?_0x198afb['attributes']:_0x569924['model'];if(!_0x2389de['query'][_0x547c('0x3c')](_0x547c('0x3d'))){_0x198afb[_0x547c('0x22')]=qs[_0x547c('0x22')](_0x2389de[_0x547c('0x35')][_0x547c('0x22')]);_0x198afb['offset']=qs['offset'](_0x2389de['query'][_0x547c('0x20')]);}_0x198afb[_0x547c('0x3e')]=qs[_0x547c('0x3f')](_0x2389de[_0x547c('0x35')][_0x547c('0x3f')]);_0x198afb[_0x547c('0x40')]=qs['filters'](_[_0x547c('0x41')](_0x2389de['query'],_0x569924[_0x547c('0x37')]),_0x28c282);if(_0x2389de[_0x547c('0x35')]['filter']){_0x198afb[_0x547c('0x40')]=_['merge'](_0x198afb['where'],{'$or':_[_0x547c('0x42')](_0x28c282,function(_0x281d52){if(_0x281d52[_0x547c('0x32')]!==_0x547c('0x43')){var _0x4c36b9={};_0x4c36b9[_0x281d52['name']]={'$like':'%'+_0x2389de[_0x547c('0x35')][_0x547c('0x44')]+'%'};return _0x4c36b9;}})});}_0x198afb=_[_0x547c('0x45')]({},_0x198afb,_0x2389de['options']);var _0x3886ae={'where':_0x198afb[_0x547c('0x40')]};return db[_0x547c('0x2f')]['count'](_0x3886ae)[_0x547c('0x2a')](function(_0x3a6a0a){_0x575c74[_0x547c('0x46')]=_0x3a6a0a;if(_0x2389de['query'][_0x547c('0x47')]){_0x198afb[_0x547c('0x48')]=[{'all':!![]}];}return db['Integration'][_0x547c('0x49')](_0x198afb);})[_0x547c('0x2a')](function(_0x9c3cb2){_0x575c74['rows']=_0x9c3cb2;return _0x575c74;})[_0x547c('0x2a')](respondWithFilteredResult(_0x30a96c,_0x198afb))['catch'](handleError(_0x30a96c,null));};exports[_0x547c('0x4a')]=function(_0x5393a2,_0xb86f5f){var _0x414b9d={'raw':![],'where':{'id':_0x5393a2[_0x547c('0x4b')]['id']}},_0x3d37d7={};_0x3d37d7[_0x547c('0x34')]=_[_0x547c('0x36')](db['Integration']['rawAttributes']);_0x3d37d7[_0x547c('0x35')]=_[_0x547c('0x36')](_0x5393a2[_0x547c('0x35')]);_0x3d37d7['filters']=_[_0x547c('0x38')](_0x3d37d7[_0x547c('0x34')],_0x3d37d7[_0x547c('0x35')]);_0x414b9d[_0x547c('0x39')]=_[_0x547c('0x38')](_0x3d37d7[_0x547c('0x34')],qs['fields'](_0x5393a2[_0x547c('0x35')][_0x547c('0x3a')]));_0x414b9d[_0x547c('0x39')]=_0x414b9d['attributes'][_0x547c('0x3b')]?_0x414b9d[_0x547c('0x39')]:_0x3d37d7[_0x547c('0x34')];if(_0x5393a2[_0x547c('0x35')]['includeAll']){_0x414b9d[_0x547c('0x48')]=[{'all':!![]}];}_0x414b9d=_['merge']({},_0x414b9d,_0x5393a2[_0x547c('0x4c')]);return db['Integration'][_0x547c('0x4d')](_0x414b9d)[_0x547c('0x2a')](handleEntityNotFound(_0xb86f5f,null))['then'](respondWithResult(_0xb86f5f,null))[_0x547c('0x4e')](handleError(_0xb86f5f,null));};exports[_0x547c('0x4f')]=function(_0xa005cc,_0x1ddf30){return db['Integration'][_0x547c('0x4f')](_0xa005cc['body'],{})['then'](respondWithResult(_0x1ddf30,0xc9))[_0x547c('0x4e')](handleError(_0x1ddf30,null));};exports[_0x547c('0x28')]=function(_0x3e3f52,_0x11a878){if(_0x3e3f52[_0x547c('0x50')]['id']){delete _0x3e3f52[_0x547c('0x50')]['id'];}return db[_0x547c('0x2f')][_0x547c('0x4d')]({'where':{'id':_0x3e3f52[_0x547c('0x4b')]['id']}})[_0x547c('0x2a')](handleEntityNotFound(_0x11a878,null))[_0x547c('0x2a')](saveUpdates(_0x3e3f52[_0x547c('0x50')],null))['then'](respondWithResult(_0x11a878,null))['catch'](handleError(_0x11a878,null));};exports[_0x547c('0x29')]=function(_0x21ea26,_0x48de6e){return db[_0x547c('0x2f')][_0x547c('0x4d')]({'where':{'id':_0x21ea26[_0x547c('0x4b')]['id']}})[_0x547c('0x2a')](handleEntityNotFound(_0x48de6e,null))[_0x547c('0x2a')](removeEntity(_0x48de6e,null))[_0x547c('0x4e')](handleError(_0x48de6e,null));};
\ No newline at end of file
+var _0x3f8a=['ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update','destroy','then','error','name','send','index','map','Integration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','fields','options','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv'];(function(_0x3d42d8,_0x4cffaa){var _0x27fc41=function(_0x3a363b){while(--_0x3a363b){_0x3d42d8['push'](_0x3d42d8['shift']());}};_0x27fc41(++_0x4cffaa);}(_0x3f8a,0x1d5));var _0xa3f8=function(_0x1c1797,_0xeeccfe){_0x1c1797=_0x1c1797-0x0;var _0xf555ac=_0x3f8a[_0x1c1797];return _0xf555ac;};'use strict';var emlformat=require(_0xa3f8('0x0'));var rimraf=require(_0xa3f8('0x1'));var zipdir=require(_0xa3f8('0x2'));var jsonpatch=require(_0xa3f8('0x3'));var rp=require('request-promise');var moment=require(_0xa3f8('0x4'));var BPromise=require(_0xa3f8('0x5'));var Mustache=require(_0xa3f8('0x6'));var util=require(_0xa3f8('0x7'));var path=require(_0xa3f8('0x8'));var sox=require(_0xa3f8('0x9'));var csv=require(_0xa3f8('0xa'));var ejs=require(_0xa3f8('0xb'));var fs=require('fs');var fs_extra=require(_0xa3f8('0xc'));var _=require(_0xa3f8('0xd'));var squel=require(_0xa3f8('0xe'));var crypto=require(_0xa3f8('0xf'));var jsforce=require(_0xa3f8('0x10'));var deskjs=require(_0xa3f8('0x11'));var toCsv=require(_0xa3f8('0xa'));var querystring=require(_0xa3f8('0x12'));var Papa=require(_0xa3f8('0x13'));var Redis=require('ioredis');var authService=require(_0xa3f8('0x14'));var qs=require(_0xa3f8('0x15'));var as=require(_0xa3f8('0x16'));var hardwareService=require(_0xa3f8('0x17'));var logger=require('../../config/logger')(_0xa3f8('0x18'));var utils=require(_0xa3f8('0x19'));var config=require(_0xa3f8('0x1a'));var licenseUtil=require(_0xa3f8('0x1b'));var db=require(_0xa3f8('0x1c'))['db'];function respondWithStatusCode(_0x2e71a0,_0x1afd01){_0x1afd01=_0x1afd01||0xcc;return function(_0x63de8b){if(_0x63de8b){return _0x2e71a0[_0xa3f8('0x1d')](_0x1afd01);}return _0x2e71a0[_0xa3f8('0x1e')](_0x1afd01)[_0xa3f8('0x1f')]();};}function respondWithResult(_0x2c5e15,_0x5b2c33){_0x5b2c33=_0x5b2c33||0xc8;return function(_0x2d8f74){if(_0x2d8f74){return _0x2c5e15[_0xa3f8('0x1e')](_0x5b2c33)[_0xa3f8('0x20')](_0x2d8f74);}};}function respondWithFilteredResult(_0x21a170,_0x5caebf){return function(_0x39c450){if(_0x39c450){var _0x33b98e=typeof _0x5caebf[_0xa3f8('0x21')]===_0xa3f8('0x22')&&typeof _0x5caebf[_0xa3f8('0x23')]===_0xa3f8('0x22');var _0x2f0659=_0x39c450[_0xa3f8('0x24')];var _0x2cb49f=_0x33b98e?0x0:_0x5caebf[_0xa3f8('0x21')];var _0x54b870=_0x33b98e?_0x39c450[_0xa3f8('0x24')]:_0x5caebf['offset']+_0x5caebf[_0xa3f8('0x23')];var _0x3dc3e5;if(_0x54b870>=_0x2f0659){_0x54b870=_0x2f0659;_0x3dc3e5=0xc8;}else{_0x3dc3e5=0xce;}_0x21a170[_0xa3f8('0x1e')](_0x3dc3e5);return _0x21a170[_0xa3f8('0x25')]('Content-Range',_0x2cb49f+'-'+_0x54b870+'/'+_0x2f0659)[_0xa3f8('0x20')](_0x39c450);}return null;};}function patchUpdates(_0x5b0d57){return function(_0x43c393){try{jsonpatch['apply'](_0x43c393,_0x5b0d57,!![]);}catch(_0x4066bb){return BPromise[_0xa3f8('0x26')](_0x4066bb);}return _0x43c393[_0xa3f8('0x27')]();};}function saveUpdates(_0x474893,_0x3a6a57){return function(_0x1e5f30){if(_0x1e5f30){return _0x1e5f30[_0xa3f8('0x28')](_0x474893)['then'](function(_0xae76ec){return _0xae76ec;});}return null;};}function removeEntity(_0x4d0e72,_0x3ce57b){return function(_0xa5a697){if(_0xa5a697){return _0xa5a697[_0xa3f8('0x29')]()[_0xa3f8('0x2a')](function(){_0x4d0e72[_0xa3f8('0x1e')](0xcc)[_0xa3f8('0x1f')]();});}};}function handleEntityNotFound(_0x6e3cb4,_0x34884d){return function(_0x1e22b8){if(!_0x1e22b8){_0x6e3cb4[_0xa3f8('0x1d')](0x194);}return _0x1e22b8;};}function handleError(_0x545a28,_0x1c3358){_0x1c3358=_0x1c3358||0x1f4;return function(_0x2d29c1){logger[_0xa3f8('0x2b')](_0x2d29c1['stack']);if(_0x2d29c1[_0xa3f8('0x2c')]){delete _0x2d29c1['name'];}_0x545a28[_0xa3f8('0x1e')](_0x1c3358)[_0xa3f8('0x2d')](_0x2d29c1);};}exports[_0xa3f8('0x2e')]=function(_0x4ea213,_0x458824){var _0x5e69e2={},_0x21c57e={},_0x4281ea={'count':0x0,'rows':[]};var _0x226153=_[_0xa3f8('0x2f')](db[_0xa3f8('0x30')][_0xa3f8('0x31')],function(_0x23c854){return{'name':_0x23c854[_0xa3f8('0x32')],'type':_0x23c854[_0xa3f8('0x33')][_0xa3f8('0x34')]};});_0x21c57e[_0xa3f8('0x35')]=_['map'](_0x226153,_0xa3f8('0x2c'));_0x21c57e[_0xa3f8('0x36')]=_[_0xa3f8('0x37')](_0x4ea213[_0xa3f8('0x36')]);_0x21c57e[_0xa3f8('0x38')]=_['intersection'](_0x21c57e[_0xa3f8('0x35')],_0x21c57e[_0xa3f8('0x36')]);_0x5e69e2['attributes']=_[_0xa3f8('0x39')](_0x21c57e[_0xa3f8('0x35')],qs['fields'](_0x4ea213[_0xa3f8('0x36')]['fields']));_0x5e69e2['attributes']=_0x5e69e2[_0xa3f8('0x3a')][_0xa3f8('0x3b')]?_0x5e69e2['attributes']:_0x21c57e[_0xa3f8('0x35')];if(!_0x4ea213['query'][_0xa3f8('0x3c')](_0xa3f8('0x3d'))){_0x5e69e2[_0xa3f8('0x23')]=qs[_0xa3f8('0x23')](_0x4ea213['query'][_0xa3f8('0x23')]);_0x5e69e2['offset']=qs[_0xa3f8('0x21')](_0x4ea213['query'][_0xa3f8('0x21')]);}_0x5e69e2['order']=qs['sort'](_0x4ea213['query'][_0xa3f8('0x3e')]);_0x5e69e2[_0xa3f8('0x3f')]=qs[_0xa3f8('0x38')](_[_0xa3f8('0x40')](_0x4ea213['query'],_0x21c57e[_0xa3f8('0x38')]),_0x226153);if(_0x4ea213[_0xa3f8('0x36')][_0xa3f8('0x41')]){_0x5e69e2[_0xa3f8('0x3f')]=_[_0xa3f8('0x42')](_0x5e69e2[_0xa3f8('0x3f')],{'$or':_['map'](_0x226153,function(_0x14db5b){if(_0x14db5b[_0xa3f8('0x33')]!==_0xa3f8('0x43')){var _0x51de10={};_0x51de10[_0x14db5b[_0xa3f8('0x2c')]]={'$like':'%'+_0x4ea213[_0xa3f8('0x36')]['filter']+'%'};return _0x51de10;}})});}_0x5e69e2=_[_0xa3f8('0x42')]({},_0x5e69e2,_0x4ea213['options']);var _0xbf8209={'where':_0x5e69e2['where']};return db[_0xa3f8('0x30')][_0xa3f8('0x24')](_0xbf8209)[_0xa3f8('0x2a')](function(_0x2a77be){_0x4281ea[_0xa3f8('0x24')]=_0x2a77be;if(_0x4ea213['query'][_0xa3f8('0x44')]){_0x5e69e2[_0xa3f8('0x45')]=[{'all':!![]}];}return db['Integration'][_0xa3f8('0x46')](_0x5e69e2);})['then'](function(_0x6ff4d4){_0x4281ea[_0xa3f8('0x47')]=_0x6ff4d4;return _0x4281ea;})[_0xa3f8('0x2a')](respondWithFilteredResult(_0x458824,_0x5e69e2))[_0xa3f8('0x48')](handleError(_0x458824,null));};exports[_0xa3f8('0x49')]=function(_0x4d2b8b,_0x180e87){var _0x2b17ff={'raw':![],'where':{'id':_0x4d2b8b[_0xa3f8('0x4a')]['id']}},_0x23fe02={};_0x23fe02[_0xa3f8('0x35')]=_['keys'](db[_0xa3f8('0x30')][_0xa3f8('0x31')]);_0x23fe02[_0xa3f8('0x36')]=_[_0xa3f8('0x37')](_0x4d2b8b[_0xa3f8('0x36')]);_0x23fe02[_0xa3f8('0x38')]=_[_0xa3f8('0x39')](_0x23fe02[_0xa3f8('0x35')],_0x23fe02[_0xa3f8('0x36')]);_0x2b17ff[_0xa3f8('0x3a')]=_[_0xa3f8('0x39')](_0x23fe02[_0xa3f8('0x35')],qs[_0xa3f8('0x4b')](_0x4d2b8b['query']['fields']));_0x2b17ff['attributes']=_0x2b17ff[_0xa3f8('0x3a')][_0xa3f8('0x3b')]?_0x2b17ff[_0xa3f8('0x3a')]:_0x23fe02[_0xa3f8('0x35')];if(_0x4d2b8b[_0xa3f8('0x36')][_0xa3f8('0x44')]){_0x2b17ff['include']=[{'all':!![]}];}_0x2b17ff=_[_0xa3f8('0x42')]({},_0x2b17ff,_0x4d2b8b[_0xa3f8('0x4c')]);return db[_0xa3f8('0x30')][_0xa3f8('0x4d')](_0x2b17ff)['then'](handleEntityNotFound(_0x180e87,null))[_0xa3f8('0x2a')](respondWithResult(_0x180e87,null))[_0xa3f8('0x48')](handleError(_0x180e87,null));};exports[_0xa3f8('0x4e')]=function(_0x523b46,_0x5cae9e){return db['Integration'][_0xa3f8('0x4e')](_0x523b46[_0xa3f8('0x4f')],{})['then'](respondWithResult(_0x5cae9e,0xc9))[_0xa3f8('0x48')](handleError(_0x5cae9e,null));};exports[_0xa3f8('0x28')]=function(_0x410de5,_0x142481){if(_0x410de5[_0xa3f8('0x4f')]['id']){delete _0x410de5[_0xa3f8('0x4f')]['id'];}return db[_0xa3f8('0x30')][_0xa3f8('0x4d')]({'where':{'id':_0x410de5[_0xa3f8('0x4a')]['id']}})[_0xa3f8('0x2a')](handleEntityNotFound(_0x142481,null))[_0xa3f8('0x2a')](saveUpdates(_0x410de5[_0xa3f8('0x4f')],null))[_0xa3f8('0x2a')](respondWithResult(_0x142481,null))[_0xa3f8('0x48')](handleError(_0x142481,null));};exports[_0xa3f8('0x29')]=function(_0x242492,_0x42082d){return db['Integration']['find']({'where':{'id':_0x242492[_0xa3f8('0x4a')]['id']}})[_0xa3f8('0x2a')](handleEntityNotFound(_0x42082d,null))['then'](removeEntity(_0x42082d,null))[_0xa3f8('0x48')](handleError(_0x42082d,null));};
\ No newline at end of file
index 7b6d605..727585e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe81=['api','moment','request-promise','path','rimraf','./integration.attributes','define','Integration','lodash','util','../../config/logger'];(function(_0x91eff4,_0x39ad8a){var _0x41ea08=function(_0x474b54){while(--_0x474b54){_0x91eff4['push'](_0x91eff4['shift']());}};_0x41ea08(++_0x39ad8a);}(_0xfe81,0x11b));var _0x1fe8=function(_0x56fe98,_0x43dc16){_0x56fe98=_0x56fe98-0x0;var _0x212f4f=_0xfe81[_0x56fe98];return _0x212f4f;};'use strict';var _=require(_0x1fe8('0x0'));var util=require(_0x1fe8('0x1'));var logger=require(_0x1fe8('0x2'))(_0x1fe8('0x3'));var moment=require(_0x1fe8('0x4'));var BPromise=require('bluebird');var rp=require(_0x1fe8('0x5'));var fs=require('fs');var path=require(_0x1fe8('0x6'));var rimraf=require(_0x1fe8('0x7'));var config=require('../../config/environment');var attributes=require(_0x1fe8('0x8'));module['exports']=function(_0x47eb5b,_0x36ae36){return _0x47eb5b[_0x1fe8('0x9')](_0x1fe8('0xa'),attributes,{'tableName':'integrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb599=['exports','define','Integration','integrations','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x2fc012,_0x503e5b){var _0x2891f9=function(_0x295f5e){while(--_0x295f5e){_0x2fc012['push'](_0x2fc012['shift']());}};_0x2891f9(++_0x503e5b);}(_0xb599,0x184));var _0x9b59=function(_0x31e6b2,_0x469461){_0x31e6b2=_0x31e6b2-0x0;var _0x2d01fe=_0xb599[_0x31e6b2];return _0x2d01fe;};'use strict';var _=require(_0x9b59('0x0'));var util=require(_0x9b59('0x1'));var logger=require('../../config/logger')(_0x9b59('0x2'));var moment=require('moment');var BPromise=require(_0x9b59('0x3'));var rp=require(_0x9b59('0x4'));var fs=require('fs');var path=require(_0x9b59('0x5'));var rimraf=require(_0x9b59('0x6'));var config=require(_0x9b59('0x7'));var attributes=require('./integration.attributes');module[_0x9b59('0x8')]=function(_0x546855,_0x6c00ec){return _0x546855[_0x9b59('0x9')](_0x9b59('0xa'),attributes,{'tableName':_0x9b59('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index de15d78..c294cc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['client','http','request','info','request\x20sent','Integration,\x20%s,\x20%s,\x20%s','error','code','Integration,\x20%s,\x20%s','message','result','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x21a533,_0x3045ba){var _0x3bfb75=function(_0xf42278){while(--_0xf42278){_0x21a533['push'](_0x21a533['shift']());}};_0x3bfb75(++_0x3045ba);}(_0x57ca,0x108));var _0xa57c=function(_0x5eff1b,_0x4eaf26){_0x5eff1b=_0x5eff1b-0x0;var _0x2dc878=_0x57ca[_0x5eff1b];return _0x2dc878;};'use strict';var _=require('lodash');var util=require(_0xa57c('0x0'));var moment=require(_0xa57c('0x1'));var BPromise=require('bluebird');var rs=require(_0xa57c('0x2'));var fs=require('fs');var Redis=require(_0xa57c('0x3'));var db=require(_0xa57c('0x4'))['db'];var utils=require(_0xa57c('0x5'));var logger=require(_0xa57c('0x6'))('rpc');var config=require(_0xa57c('0x7'));var jayson=require(_0xa57c('0x8'));var client=jayson[_0xa57c('0x9')][_0xa57c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xbdfffb,_0x314574,_0x19e28e){return new BPromise(function(_0x271ccc,_0x5e3962){return client[_0xa57c('0xb')](_0xbdfffb,_0x19e28e)['then'](function(_0x46ba92){logger[_0xa57c('0xc')]('Integration,\x20%s,\x20%s',_0x314574,_0xa57c('0xd'));logger['debug'](_0xa57c('0xe'),_0x314574,_0xa57c('0xd'),JSON['stringify'](_0x46ba92));if(_0x46ba92[_0xa57c('0xf')]){if(_0x46ba92['error'][_0xa57c('0x10')]===0x1f4){logger[_0xa57c('0xf')](_0xa57c('0x11'),_0x314574,_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);return _0x5e3962(_0x46ba92['error'][_0xa57c('0x12')]);}logger['error'](_0xa57c('0x11'),_0x314574,_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);return _0x271ccc(_0x46ba92[_0xa57c('0xf')][_0xa57c('0x12')]);}else{logger[_0xa57c('0xc')](_0xa57c('0x11'),_0x314574,'request\x20sent');_0x271ccc(_0x46ba92[_0xa57c('0x13')][_0xa57c('0x12')]);}})[_0xa57c('0x14')](function(_0x5a6024){logger[_0xa57c('0xf')]('Integration,\x20%s,\x20%s',_0x314574,_0x5a6024);_0x5e3962(_0x5a6024);});});}
\ No newline at end of file
+var _0x66fa=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then','info','Integration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','Integration,\x20%s,\x20%s','message','catch','lodash'];(function(_0x452ba9,_0x481f4e){var _0x286578=function(_0x274dd1){while(--_0x274dd1){_0x452ba9['push'](_0x452ba9['shift']());}};_0x286578(++_0x481f4e);}(_0x66fa,0x117));var _0xa66f=function(_0x2b5251,_0x4273c5){_0x2b5251=_0x2b5251-0x0;var _0x5050f0=_0x66fa[_0x2b5251];return _0x5050f0;};'use strict';var _=require(_0xa66f('0x0'));var util=require(_0xa66f('0x1'));var moment=require('moment');var BPromise=require(_0xa66f('0x2'));var rs=require(_0xa66f('0x3'));var fs=require('fs');var Redis=require(_0xa66f('0x4'));var db=require(_0xa66f('0x5'))['db'];var utils=require(_0xa66f('0x6'));var logger=require(_0xa66f('0x7'))(_0xa66f('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xa66f('0x9')][_0xa66f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2f0b78,_0x1d02fc,_0x38b58b){return new BPromise(function(_0x5096bf,_0x39c1ef){return client['request'](_0x2f0b78,_0x38b58b)[_0xa66f('0xb')](function(_0x597c7c){logger[_0xa66f('0xc')]('Integration,\x20%s,\x20%s',_0x1d02fc,'request\x20sent');logger['debug'](_0xa66f('0xd'),_0x1d02fc,_0xa66f('0xe'),JSON['stringify'](_0x597c7c));if(_0x597c7c[_0xa66f('0xf')]){if(_0x597c7c['error'][_0xa66f('0x10')]===0x1f4){logger['error'](_0xa66f('0x11'),_0x1d02fc,_0x597c7c[_0xa66f('0xf')][_0xa66f('0x12')]);return _0x39c1ef(_0x597c7c['error']['message']);}logger[_0xa66f('0xf')]('Integration,\x20%s,\x20%s',_0x1d02fc,_0x597c7c['error']['message']);return _0x5096bf(_0x597c7c[_0xa66f('0xf')][_0xa66f('0x12')]);}else{logger[_0xa66f('0xc')](_0xa66f('0x11'),_0x1d02fc,_0xa66f('0xe'));_0x5096bf(_0x597c7c['result']['message']);}})[_0xa66f('0x13')](function(_0x32d338){logger[_0xa66f('0xf')](_0xa66f('0x11'),_0x1d02fc,_0x32d338);_0x39c1ef(_0x32d338);});});}
\ No newline at end of file
index d19f0f0..98e546c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['delete','exports','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','update'];(function(_0x309991,_0x457e73){var _0x4ca94d=function(_0x294acc){while(--_0x294acc){_0x309991['push'](_0x309991['shift']());}};_0x4ca94d(++_0x457e73);}(_0xadb5,0xad));var _0x5adb=function(_0x28bf12,_0x3a8e9f){_0x28bf12=_0x28bf12-0x0;var _0x381c1f=_0xadb5[_0x28bf12];return _0x381c1f;};'use strict';var multer=require('multer');var util=require(_0x5adb('0x0'));var path=require('path');var timeout=require(_0x5adb('0x1'));var express=require(_0x5adb('0x2'));var router=express[_0x5adb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5adb('0x4'));var interaction=require(_0x5adb('0x5'));var config=require(_0x5adb('0x6'));var controller=require('./integrationReport.controller');router[_0x5adb('0x7')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0x9')]);router[_0x5adb('0x7')](_0x5adb('0xa'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xb')]);router[_0x5adb('0x7')](_0x5adb('0xc'),auth[_0x5adb('0x8')](),controller[_0x5adb('0xd')]);router[_0x5adb('0xe')]('/',auth[_0x5adb('0x8')](),controller[_0x5adb('0xf')]);router['put']('/:id',auth[_0x5adb('0x8')](),controller[_0x5adb('0x10')]);router[_0x5adb('0x11')]('/:id',auth[_0x5adb('0x8')](),controller['destroy']);module[_0x5adb('0x12')]=router;
\ No newline at end of file
+var _0x4975=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','destroy','exports','multer','path','connect-timeout','express'];(function(_0x528682,_0x542cdd){var _0xda30bd=function(_0x511832){while(--_0x511832){_0x528682['push'](_0x528682['shift']());}};_0xda30bd(++_0x542cdd);}(_0x4975,0x86));var _0x5497=function(_0x2ac0f0,_0x163c0e){_0x2ac0f0=_0x2ac0f0-0x0;var _0x223a21=_0x4975[_0x2ac0f0];return _0x223a21;};'use strict';var multer=require(_0x5497('0x0'));var util=require('util');var path=require(_0x5497('0x1'));var timeout=require(_0x5497('0x2'));var express=require(_0x5497('0x3'));var router=express[_0x5497('0x4')]();var fs_extra=require(_0x5497('0x5'));var auth=require(_0x5497('0x6'));var interaction=require(_0x5497('0x7'));var config=require(_0x5497('0x8'));var controller=require(_0x5497('0x9'));router[_0x5497('0xa')]('/',auth['isAuthenticated'](),controller[_0x5497('0xb')]);router['get'](_0x5497('0xc'),auth[_0x5497('0xd')](),controller[_0x5497('0xe')]);router['get'](_0x5497('0xf'),auth['isAuthenticated'](),controller[_0x5497('0x10')]);router[_0x5497('0x11')]('/',auth[_0x5497('0xd')](),controller[_0x5497('0x12')]);router[_0x5497('0x13')](_0x5497('0xf'),auth[_0x5497('0xd')](),controller[_0x5497('0x14')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x5497('0x15')]);module[_0x5497('0x16')]=router;
\ No newline at end of file
index 95afed7..f19c6ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35be=['exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENT','SENDING'];(function(_0x487d39,_0x470175){var _0x2b2be3=function(_0x2eeadd){while(--_0x2eeadd){_0x487d39['push'](_0x487d39['shift']());}};_0x2b2be3(++_0x470175);}(_0x35be,0x120));var _0xe35b=function(_0x1fec86,_0x422ed7){_0x1fec86=_0x1fec86-0x0;var _0x55e897=_0x35be[_0x1fec86];return _0x55e897;};'use strict';var Sequelize=require('sequelize');module[_0xe35b('0x0')]={'integration':{'type':Sequelize[_0xe35b('0x1')]},'eventChannel':{'type':Sequelize[_0xe35b('0x1')]},'exitStatus':{'type':Sequelize[_0xe35b('0x1')]},'ticketId':{'type':Sequelize[_0xe35b('0x1')]},'integrationId':{'type':Sequelize[_0xe35b('0x2')]},'contacts':{'type':Sequelize[_0xe35b('0x1')]},'uniqueid':{'type':Sequelize[_0xe35b('0x1')]},'calleridnum':{'type':Sequelize[_0xe35b('0x1')]},'calleridname':{'type':Sequelize[_0xe35b('0x1')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0xe35b('0x1')]},'membername':{'type':Sequelize[_0xe35b('0x1')]},'agentcalledAt':{'type':Sequelize[_0xe35b('0x3')]},'agentconnectAt':{'type':Sequelize[_0xe35b('0x3')]},'holdtime':{'type':Sequelize[_0xe35b('0x2')]},'agentcomplete':{'type':Sequelize[_0xe35b('0x4')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0xe35b('0x3')]},'talktime':{'type':Sequelize[_0xe35b('0x2')]},'agentacw':{'type':Sequelize[_0xe35b('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xe35b('0x2')]},'reason':{'type':Sequelize[_0xe35b('0x1')]},'agentringnoanswer':{'type':Sequelize[_0xe35b('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0xe35b('0x3')]},'lastevent':{'type':Sequelize[_0xe35b('0x1')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0xe35b('0x2')]},'channelstatedesc':{'type':Sequelize[_0xe35b('0x1')]},'connectedlinenum':{'type':Sequelize[_0xe35b('0x1')]},'connectedlinename':{'type':Sequelize[_0xe35b('0x1')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xe35b('0x1')]},'destchannel':{'type':Sequelize[_0xe35b('0x1')]},'destchannelstate':{'type':Sequelize[_0xe35b('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0xe35b('0x1')]},'destcalleridnum':{'type':Sequelize[_0xe35b('0x1')]},'destcalleridname':{'type':Sequelize[_0xe35b('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0xe35b('0x1')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0xe35b('0x1')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0xe35b('0x1')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0xe35b('0x1')]},'inReplyTo':{'type':Sequelize[_0xe35b('0x1')]},'subject':{'type':Sequelize[_0xe35b('0x1')]},'from':{'type':Sequelize[_0xe35b('0x1')]},'to':{'type':Sequelize[_0xe35b('0x1')]},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0xe35b('0x5')]},'html':{'type':Sequelize[_0xe35b('0x5')]},'text':{'type':Sequelize[_0xe35b('0x5')]},'status':{'type':Sequelize[_0xe35b('0x6')](_0xe35b('0x7'),_0xe35b('0x8'),'RECEIVED','FAILED')},'url':{'type':Sequelize[_0xe35b('0x1')]},'app':{'type':Sequelize[_0xe35b('0x1')]},'appdata':{'type':Sequelize[_0xe35b('0x1')]},'projectId':{'type':Sequelize[_0xe35b('0x2')]}};
\ No newline at end of file
+var _0x7bc0=['FAILED','sequelize','exports','STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENT','SENDING'];(function(_0xc21924,_0x243303){var _0xc68f93=function(_0x4afba2){while(--_0x4afba2){_0xc21924['push'](_0xc21924['shift']());}};_0xc68f93(++_0x243303);}(_0x7bc0,0x140));var _0x07bc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7bc0[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x07bc('0x0'));module[_0x07bc('0x1')]={'integration':{'type':Sequelize[_0x07bc('0x2')]},'eventChannel':{'type':Sequelize[_0x07bc('0x2')]},'exitStatus':{'type':Sequelize[_0x07bc('0x2')]},'ticketId':{'type':Sequelize[_0x07bc('0x2')]},'integrationId':{'type':Sequelize[_0x07bc('0x3')]},'contacts':{'type':Sequelize[_0x07bc('0x2')]},'uniqueid':{'type':Sequelize[_0x07bc('0x2')]},'calleridnum':{'type':Sequelize[_0x07bc('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x07bc('0x2')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize[_0x07bc('0x4')]},'agentconnectAt':{'type':Sequelize[_0x07bc('0x4')]},'holdtime':{'type':Sequelize[_0x07bc('0x3')]},'agentcomplete':{'type':Sequelize[_0x07bc('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x07bc('0x4')]},'talktime':{'type':Sequelize[_0x07bc('0x3')]},'agentacw':{'type':Sequelize[_0x07bc('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x07bc('0x3')]},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize[_0x07bc('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x07bc('0x4')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x07bc('0x4')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x07bc('0x2')]},'channelstate':{'type':Sequelize[_0x07bc('0x3')]},'channelstatedesc':{'type':Sequelize[_0x07bc('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x07bc('0x2')]},'accountcode':{'type':Sequelize[_0x07bc('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x07bc('0x2')]},'priority':{'type':Sequelize[_0x07bc('0x2')]},'destchannel':{'type':Sequelize[_0x07bc('0x2')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0x07bc('0x2')]},'destcalleridnum':{'type':Sequelize[_0x07bc('0x2')]},'destcalleridname':{'type':Sequelize[_0x07bc('0x2')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x07bc('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize[_0x07bc('0x2')]},'destcontext':{'type':Sequelize[_0x07bc('0x2')]},'destexten':{'type':Sequelize[_0x07bc('0x2')]},'destpriority':{'type':Sequelize[_0x07bc('0x2')]},'destuniqueid':{'type':Sequelize[_0x07bc('0x2')]},'messageId':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x07bc('0x2')]},'subject':{'type':Sequelize[_0x07bc('0x2')]},'from':{'type':Sequelize[_0x07bc('0x2')]},'to':{'type':Sequelize[_0x07bc('0x2')]},'cc':{'type':Sequelize[_0x07bc('0x2')]},'attachment':{'type':Sequelize[_0x07bc('0x6')]},'html':{'type':Sequelize[_0x07bc('0x6')]},'text':{'type':Sequelize[_0x07bc('0x6')]},'status':{'type':Sequelize[_0x07bc('0x7')](_0x07bc('0x8'),_0x07bc('0x9'),'RECEIVED',_0x07bc('0xa'))},'url':{'type':Sequelize[_0x07bc('0x2')]},'app':{'type':Sequelize[_0x07bc('0x2')]},'appdata':{'type':Sequelize['STRING']},'projectId':{'type':Sequelize[_0x07bc('0x3')]}};
\ No newline at end of file
index 022d733..2ad0791 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfd3=['type','key','query','keys','filters','model','attributes','intersection','length','hasOwnProperty','nolimit','sort','where','filter','VIRTUAL','merge','options','IntegrationReport','includeAll','rows','catch','show','fields','include','find','create','body','params','describe','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','name','send','index','map','rawAttributes','fieldName'];(function(_0x323393,_0x4e3541){var _0x40dc0b=function(_0x319573){while(--_0x319573){_0x323393['push'](_0x323393['shift']());}};_0x40dc0b(++_0x4e3541);}(_0xdfd3,0x69));var _0x3dfd=function(_0xc54c54,_0x59053b){_0xc54c54=_0xc54c54-0x0;var _0x476786=_0xdfd3[_0xc54c54];return _0x476786;};'use strict';var emlformat=require(_0x3dfd('0x0'));var rimraf=require(_0x3dfd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x3dfd('0x2'));var moment=require(_0x3dfd('0x3'));var BPromise=require(_0x3dfd('0x4'));var Mustache=require(_0x3dfd('0x5'));var util=require('util');var path=require(_0x3dfd('0x6'));var sox=require(_0x3dfd('0x7'));var csv=require(_0x3dfd('0x8'));var ejs=require(_0x3dfd('0x9'));var fs=require('fs');var fs_extra=require(_0x3dfd('0xa'));var _=require(_0x3dfd('0xb'));var squel=require('squel');var crypto=require(_0x3dfd('0xc'));var jsforce=require(_0x3dfd('0xd'));var deskjs=require(_0x3dfd('0xe'));var toCsv=require(_0x3dfd('0x8'));var querystring=require('querystring');var Papa=require(_0x3dfd('0xf'));var Redis=require(_0x3dfd('0x10'));var authService=require(_0x3dfd('0x11'));var qs=require(_0x3dfd('0x12'));var as=require(_0x3dfd('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3dfd('0x14'))(_0x3dfd('0x15'));var utils=require(_0x3dfd('0x16'));var config=require(_0x3dfd('0x17'));var licenseUtil=require(_0x3dfd('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x20e21a,_0x3e210d){_0x3e210d=_0x3e210d||0xcc;return function(_0x4a9725){if(_0x4a9725){return _0x20e21a[_0x3dfd('0x19')](_0x3e210d);}return _0x20e21a[_0x3dfd('0x1a')](_0x3e210d)[_0x3dfd('0x1b')]();};}function respondWithResult(_0x2432b6,_0x2e8e19){_0x2e8e19=_0x2e8e19||0xc8;return function(_0x11fb98){if(_0x11fb98){return _0x2432b6[_0x3dfd('0x1a')](_0x2e8e19)[_0x3dfd('0x1c')](_0x11fb98);}};}function respondWithFilteredResult(_0x4086b0,_0x5a8789){return function(_0x2d265d){if(_0x2d265d){var _0x3f8080=typeof _0x5a8789[_0x3dfd('0x1d')]===_0x3dfd('0x1e')&&typeof _0x5a8789[_0x3dfd('0x1f')]==='undefined';var _0xb3c7f3=_0x2d265d[_0x3dfd('0x20')];var _0x574b6a=_0x3f8080?0x0:_0x5a8789[_0x3dfd('0x1d')];var _0x45d426=_0x3f8080?_0x2d265d['count']:_0x5a8789[_0x3dfd('0x1d')]+_0x5a8789[_0x3dfd('0x1f')];var _0x32af49;if(_0x45d426>=_0xb3c7f3){_0x45d426=_0xb3c7f3;_0x32af49=0xc8;}else{_0x32af49=0xce;}_0x4086b0[_0x3dfd('0x1a')](_0x32af49);return _0x4086b0[_0x3dfd('0x21')](_0x3dfd('0x22'),_0x574b6a+'-'+_0x45d426+'/'+_0xb3c7f3)[_0x3dfd('0x1c')](_0x2d265d);}return null;};}function patchUpdates(_0x4a1ab2){return function(_0x529172){try{jsonpatch[_0x3dfd('0x23')](_0x529172,_0x4a1ab2,!![]);}catch(_0x19aaea){return BPromise[_0x3dfd('0x24')](_0x19aaea);}return _0x529172[_0x3dfd('0x25')]();};}function saveUpdates(_0x22d968,_0x26ae61){return function(_0x306113){if(_0x306113){return _0x306113[_0x3dfd('0x26')](_0x22d968)['then'](function(_0x1183a8){return _0x1183a8;});}return null;};}function removeEntity(_0x11e004,_0x3862b6){return function(_0x14f1cd){if(_0x14f1cd){return _0x14f1cd[_0x3dfd('0x27')]()[_0x3dfd('0x28')](function(){_0x11e004[_0x3dfd('0x1a')](0xcc)[_0x3dfd('0x1b')]();});}};}function handleEntityNotFound(_0x5ed543,_0x5d4c03){return function(_0x454676){if(!_0x454676){_0x5ed543[_0x3dfd('0x19')](0x194);}return _0x454676;};}function handleError(_0x5f0bc8,_0x310c49){_0x310c49=_0x310c49||0x1f4;return function(_0x1b3596){logger['error'](_0x1b3596['stack']);if(_0x1b3596['name']){delete _0x1b3596[_0x3dfd('0x29')];}_0x5f0bc8[_0x3dfd('0x1a')](_0x310c49)[_0x3dfd('0x2a')](_0x1b3596);};}exports[_0x3dfd('0x2b')]=function(_0x139178,_0x45815f){var _0x490a61={},_0x1e12b5={},_0x1e482f={'count':0x0,'rows':[]};var _0x5043=_[_0x3dfd('0x2c')](db['IntegrationReport'][_0x3dfd('0x2d')],function(_0x25cc50){return{'name':_0x25cc50[_0x3dfd('0x2e')],'type':_0x25cc50[_0x3dfd('0x2f')][_0x3dfd('0x30')]};});_0x1e12b5['model']=_[_0x3dfd('0x2c')](_0x5043,_0x3dfd('0x29'));_0x1e12b5[_0x3dfd('0x31')]=_[_0x3dfd('0x32')](_0x139178['query']);_0x1e12b5[_0x3dfd('0x33')]=_['intersection'](_0x1e12b5[_0x3dfd('0x34')],_0x1e12b5[_0x3dfd('0x31')]);_0x490a61[_0x3dfd('0x35')]=_[_0x3dfd('0x36')](_0x1e12b5[_0x3dfd('0x34')],qs['fields'](_0x139178[_0x3dfd('0x31')]['fields']));_0x490a61[_0x3dfd('0x35')]=_0x490a61['attributes'][_0x3dfd('0x37')]?_0x490a61[_0x3dfd('0x35')]:_0x1e12b5[_0x3dfd('0x34')];if(!_0x139178[_0x3dfd('0x31')][_0x3dfd('0x38')](_0x3dfd('0x39'))){_0x490a61[_0x3dfd('0x1f')]=qs[_0x3dfd('0x1f')](_0x139178[_0x3dfd('0x31')][_0x3dfd('0x1f')]);_0x490a61[_0x3dfd('0x1d')]=qs[_0x3dfd('0x1d')](_0x139178[_0x3dfd('0x31')][_0x3dfd('0x1d')]);}_0x490a61['order']=qs['sort'](_0x139178[_0x3dfd('0x31')][_0x3dfd('0x3a')]);_0x490a61[_0x3dfd('0x3b')]=qs['filters'](_['pick'](_0x139178[_0x3dfd('0x31')],_0x1e12b5[_0x3dfd('0x33')]),_0x5043);if(_0x139178[_0x3dfd('0x31')][_0x3dfd('0x3c')]){_0x490a61[_0x3dfd('0x3b')]=_['merge'](_0x490a61[_0x3dfd('0x3b')],{'$or':_[_0x3dfd('0x2c')](_0x5043,function(_0x5626bb){if(_0x5626bb[_0x3dfd('0x2f')]!==_0x3dfd('0x3d')){var _0x180488={};_0x180488[_0x5626bb[_0x3dfd('0x29')]]={'$like':'%'+_0x139178['query'][_0x3dfd('0x3c')]+'%'};return _0x180488;}})});}_0x490a61=_[_0x3dfd('0x3e')]({},_0x490a61,_0x139178[_0x3dfd('0x3f')]);var _0x29436b={'where':_0x490a61['where']};return db[_0x3dfd('0x40')][_0x3dfd('0x20')](_0x29436b)[_0x3dfd('0x28')](function(_0x2c612d){_0x1e482f[_0x3dfd('0x20')]=_0x2c612d;if(_0x139178[_0x3dfd('0x31')][_0x3dfd('0x41')]){_0x490a61['include']=[{'all':!![]}];}return db[_0x3dfd('0x40')]['findAll'](_0x490a61);})['then'](function(_0x2b65df){_0x1e482f[_0x3dfd('0x42')]=_0x2b65df;return _0x1e482f;})[_0x3dfd('0x28')](respondWithFilteredResult(_0x45815f,_0x490a61))[_0x3dfd('0x43')](handleError(_0x45815f,null));};exports[_0x3dfd('0x44')]=function(_0x8b2bd0,_0x551f6a){var _0x4e552f={'raw':![],'where':{'id':_0x8b2bd0['params']['id']}},_0x1d0660={};_0x1d0660['model']=_[_0x3dfd('0x32')](db[_0x3dfd('0x40')][_0x3dfd('0x2d')]);_0x1d0660['query']=_[_0x3dfd('0x32')](_0x8b2bd0[_0x3dfd('0x31')]);_0x1d0660[_0x3dfd('0x33')]=_['intersection'](_0x1d0660[_0x3dfd('0x34')],_0x1d0660[_0x3dfd('0x31')]);_0x4e552f[_0x3dfd('0x35')]=_[_0x3dfd('0x36')](_0x1d0660[_0x3dfd('0x34')],qs[_0x3dfd('0x45')](_0x8b2bd0[_0x3dfd('0x31')]['fields']));_0x4e552f['attributes']=_0x4e552f[_0x3dfd('0x35')]['length']?_0x4e552f[_0x3dfd('0x35')]:_0x1d0660[_0x3dfd('0x34')];if(_0x8b2bd0[_0x3dfd('0x31')]['includeAll']){_0x4e552f[_0x3dfd('0x46')]=[{'all':!![]}];}_0x4e552f=_['merge']({},_0x4e552f,_0x8b2bd0[_0x3dfd('0x3f')]);return db[_0x3dfd('0x40')][_0x3dfd('0x47')](_0x4e552f)[_0x3dfd('0x28')](handleEntityNotFound(_0x551f6a,null))[_0x3dfd('0x28')](respondWithResult(_0x551f6a,null))[_0x3dfd('0x43')](handleError(_0x551f6a,null));};exports[_0x3dfd('0x48')]=function(_0x11a83b,_0x26f7d2){return db[_0x3dfd('0x40')][_0x3dfd('0x48')](_0x11a83b['body'],{})[_0x3dfd('0x28')](respondWithResult(_0x26f7d2,0xc9))[_0x3dfd('0x43')](handleError(_0x26f7d2,null));};exports[_0x3dfd('0x26')]=function(_0x5d54d8,_0x1a9977){if(_0x5d54d8['body']['id']){delete _0x5d54d8[_0x3dfd('0x49')]['id'];}return db[_0x3dfd('0x40')]['find']({'where':{'id':_0x5d54d8['params']['id']}})[_0x3dfd('0x28')](handleEntityNotFound(_0x1a9977,null))['then'](saveUpdates(_0x5d54d8[_0x3dfd('0x49')],null))['then'](respondWithResult(_0x1a9977,null))[_0x3dfd('0x43')](handleError(_0x1a9977,null));};exports['destroy']=function(_0x24408e,_0x11c61c){return db['IntegrationReport'][_0x3dfd('0x47')]({'where':{'id':_0x24408e[_0x3dfd('0x4a')]['id']}})[_0x3dfd('0x28')](handleEntityNotFound(_0x11c61c,null))[_0x3dfd('0x28')](removeEntity(_0x11c61c,null))[_0x3dfd('0x43')](handleError(_0x11c61c,null));};exports[_0x3dfd('0x4b')]=function(_0x5d267,_0x35e134){return db[_0x3dfd('0x40')][_0x3dfd('0x4b')]()[_0x3dfd('0x28')](respondWithResult(_0x35e134,null))[_0x3dfd('0x43')](handleError(_0x35e134,null));};
\ No newline at end of file
+var _0xd28c=['to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','stack','name','map','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','IntegrationReport','includeAll','findAll','rows','params','rawAttributes','catch','create','body','find','describe','eml-format','rimraf','util','sox'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xd28c,0xcb));var _0xcd28=function(_0xed3061,_0x5abea2){_0xed3061=_0xed3061-0x0;var _0x99cdfd=_0xd28c[_0xed3061];return _0x99cdfd;};'use strict';var emlformat=require(_0xcd28('0x0'));var rimraf=require(_0xcd28('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xcd28('0x2'));var path=require('path');var sox=require(_0xcd28('0x3'));var csv=require(_0xcd28('0x4'));var ejs=require(_0xcd28('0x5'));var fs=require('fs');var fs_extra=require(_0xcd28('0x6'));var _=require(_0xcd28('0x7'));var squel=require(_0xcd28('0x8'));var crypto=require(_0xcd28('0x9'));var jsforce=require(_0xcd28('0xa'));var deskjs=require(_0xcd28('0xb'));var toCsv=require('to-csv');var querystring=require(_0xcd28('0xc'));var Papa=require(_0xcd28('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xcd28('0xe'));var hardwareService=require(_0xcd28('0xf'));var logger=require(_0xcd28('0x10'))(_0xcd28('0x11'));var utils=require(_0xcd28('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xcd28('0x13'))['db'];function respondWithStatusCode(_0x4cc6a7,_0x5a956a){_0x5a956a=_0x5a956a||0xcc;return function(_0xfe987e){if(_0xfe987e){return _0x4cc6a7[_0xcd28('0x14')](_0x5a956a);}return _0x4cc6a7[_0xcd28('0x15')](_0x5a956a)[_0xcd28('0x16')]();};}function respondWithResult(_0x385838,_0x5da86a){_0x5da86a=_0x5da86a||0xc8;return function(_0x134488){if(_0x134488){return _0x385838[_0xcd28('0x15')](_0x5da86a)[_0xcd28('0x17')](_0x134488);}};}function respondWithFilteredResult(_0x568051,_0xe5fff9){return function(_0x159165){if(_0x159165){var _0x5ef94=typeof _0xe5fff9[_0xcd28('0x18')]===_0xcd28('0x19')&&typeof _0xe5fff9[_0xcd28('0x1a')]===_0xcd28('0x19');var _0x5b5dcd=_0x159165['count'];var _0x5a1bbe=_0x5ef94?0x0:_0xe5fff9[_0xcd28('0x18')];var _0x209977=_0x5ef94?_0x159165[_0xcd28('0x1b')]:_0xe5fff9[_0xcd28('0x18')]+_0xe5fff9['limit'];var _0x2d7462;if(_0x209977>=_0x5b5dcd){_0x209977=_0x5b5dcd;_0x2d7462=0xc8;}else{_0x2d7462=0xce;}_0x568051[_0xcd28('0x15')](_0x2d7462);return _0x568051[_0xcd28('0x1c')]('Content-Range',_0x5a1bbe+'-'+_0x209977+'/'+_0x5b5dcd)[_0xcd28('0x17')](_0x159165);}return null;};}function patchUpdates(_0x4ec6d6){return function(_0x4e14aa){try{jsonpatch[_0xcd28('0x1d')](_0x4e14aa,_0x4ec6d6,!![]);}catch(_0x51dcff){return BPromise[_0xcd28('0x1e')](_0x51dcff);}return _0x4e14aa[_0xcd28('0x1f')]();};}function saveUpdates(_0x3d8dba,_0xbee5e1){return function(_0x4c9f5f){if(_0x4c9f5f){return _0x4c9f5f[_0xcd28('0x20')](_0x3d8dba)[_0xcd28('0x21')](function(_0x54cf72){return _0x54cf72;});}return null;};}function removeEntity(_0x2ce50f,_0x32c883){return function(_0x494db9){if(_0x494db9){return _0x494db9[_0xcd28('0x22')]()[_0xcd28('0x21')](function(){_0x2ce50f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xd46a05,_0x54e8c0){return function(_0x221994){if(!_0x221994){_0xd46a05[_0xcd28('0x14')](0x194);}return _0x221994;};}function handleError(_0x4761b8,_0x18770c){_0x18770c=_0x18770c||0x1f4;return function(_0xdaaa11){logger['error'](_0xdaaa11[_0xcd28('0x23')]);if(_0xdaaa11[_0xcd28('0x24')]){delete _0xdaaa11[_0xcd28('0x24')];}_0x4761b8[_0xcd28('0x15')](_0x18770c)['send'](_0xdaaa11);};}exports['index']=function(_0x198abd,_0x3a030b){var _0xe33c39={},_0x203e6d={},_0x1f6c24={'count':0x0,'rows':[]};var _0x7822ba=_[_0xcd28('0x25')](db['IntegrationReport']['rawAttributes'],function(_0x15c80a){return{'name':_0x15c80a[_0xcd28('0x26')],'type':_0x15c80a['type'][_0xcd28('0x27')]};});_0x203e6d['model']=_[_0xcd28('0x25')](_0x7822ba,_0xcd28('0x24'));_0x203e6d[_0xcd28('0x28')]=_[_0xcd28('0x29')](_0x198abd['query']);_0x203e6d[_0xcd28('0x2a')]=_[_0xcd28('0x2b')](_0x203e6d[_0xcd28('0x2c')],_0x203e6d[_0xcd28('0x28')]);_0xe33c39[_0xcd28('0x2d')]=_['intersection'](_0x203e6d['model'],qs[_0xcd28('0x2e')](_0x198abd[_0xcd28('0x28')][_0xcd28('0x2e')]));_0xe33c39['attributes']=_0xe33c39[_0xcd28('0x2d')][_0xcd28('0x2f')]?_0xe33c39[_0xcd28('0x2d')]:_0x203e6d[_0xcd28('0x2c')];if(!_0x198abd[_0xcd28('0x28')][_0xcd28('0x30')]('nolimit')){_0xe33c39[_0xcd28('0x1a')]=qs[_0xcd28('0x1a')](_0x198abd['query']['limit']);_0xe33c39[_0xcd28('0x18')]=qs['offset'](_0x198abd[_0xcd28('0x28')][_0xcd28('0x18')]);}_0xe33c39[_0xcd28('0x31')]=qs[_0xcd28('0x32')](_0x198abd[_0xcd28('0x28')][_0xcd28('0x32')]);_0xe33c39[_0xcd28('0x33')]=qs[_0xcd28('0x2a')](_[_0xcd28('0x34')](_0x198abd[_0xcd28('0x28')],_0x203e6d[_0xcd28('0x2a')]),_0x7822ba);if(_0x198abd['query'][_0xcd28('0x35')]){_0xe33c39[_0xcd28('0x33')]=_[_0xcd28('0x36')](_0xe33c39['where'],{'$or':_['map'](_0x7822ba,function(_0x5524b8){if(_0x5524b8[_0xcd28('0x37')]!==_0xcd28('0x38')){var _0x4c6782={};_0x4c6782[_0x5524b8[_0xcd28('0x24')]]={'$like':'%'+_0x198abd[_0xcd28('0x28')]['filter']+'%'};return _0x4c6782;}})});}_0xe33c39=_[_0xcd28('0x36')]({},_0xe33c39,_0x198abd[_0xcd28('0x39')]);var _0x176501={'where':_0xe33c39[_0xcd28('0x33')]};return db[_0xcd28('0x3a')][_0xcd28('0x1b')](_0x176501)[_0xcd28('0x21')](function(_0x24fd81){_0x1f6c24['count']=_0x24fd81;if(_0x198abd[_0xcd28('0x28')][_0xcd28('0x3b')]){_0xe33c39['include']=[{'all':!![]}];}return db[_0xcd28('0x3a')][_0xcd28('0x3c')](_0xe33c39);})[_0xcd28('0x21')](function(_0x1984ac){_0x1f6c24[_0xcd28('0x3d')]=_0x1984ac;return _0x1f6c24;})[_0xcd28('0x21')](respondWithFilteredResult(_0x3a030b,_0xe33c39))['catch'](handleError(_0x3a030b,null));};exports['show']=function(_0x3f7c1,_0x2c5029){var _0x550417={'raw':![],'where':{'id':_0x3f7c1[_0xcd28('0x3e')]['id']}},_0x5baa47={};_0x5baa47[_0xcd28('0x2c')]=_[_0xcd28('0x29')](db[_0xcd28('0x3a')][_0xcd28('0x3f')]);_0x5baa47[_0xcd28('0x28')]=_[_0xcd28('0x29')](_0x3f7c1['query']);_0x5baa47[_0xcd28('0x2a')]=_[_0xcd28('0x2b')](_0x5baa47['model'],_0x5baa47[_0xcd28('0x28')]);_0x550417[_0xcd28('0x2d')]=_[_0xcd28('0x2b')](_0x5baa47[_0xcd28('0x2c')],qs[_0xcd28('0x2e')](_0x3f7c1['query'][_0xcd28('0x2e')]));_0x550417[_0xcd28('0x2d')]=_0x550417[_0xcd28('0x2d')][_0xcd28('0x2f')]?_0x550417[_0xcd28('0x2d')]:_0x5baa47['model'];if(_0x3f7c1[_0xcd28('0x28')][_0xcd28('0x3b')]){_0x550417['include']=[{'all':!![]}];}_0x550417=_[_0xcd28('0x36')]({},_0x550417,_0x3f7c1[_0xcd28('0x39')]);return db[_0xcd28('0x3a')]['find'](_0x550417)[_0xcd28('0x21')](handleEntityNotFound(_0x2c5029,null))[_0xcd28('0x21')](respondWithResult(_0x2c5029,null))[_0xcd28('0x40')](handleError(_0x2c5029,null));};exports['create']=function(_0x11c57c,_0x1adc79){return db[_0xcd28('0x3a')][_0xcd28('0x41')](_0x11c57c[_0xcd28('0x42')],{})[_0xcd28('0x21')](respondWithResult(_0x1adc79,0xc9))[_0xcd28('0x40')](handleError(_0x1adc79,null));};exports['update']=function(_0x5949c4,_0xa2b8f8){if(_0x5949c4['body']['id']){delete _0x5949c4[_0xcd28('0x42')]['id'];}return db['IntegrationReport'][_0xcd28('0x43')]({'where':{'id':_0x5949c4['params']['id']}})['then'](handleEntityNotFound(_0xa2b8f8,null))['then'](saveUpdates(_0x5949c4[_0xcd28('0x42')],null))[_0xcd28('0x21')](respondWithResult(_0xa2b8f8,null))[_0xcd28('0x40')](handleError(_0xa2b8f8,null));};exports[_0xcd28('0x22')]=function(_0x2c8733,_0x4fe274){return db[_0xcd28('0x3a')][_0xcd28('0x43')]({'where':{'id':_0x2c8733[_0xcd28('0x3e')]['id']}})[_0xcd28('0x21')](handleEntityNotFound(_0x4fe274,null))[_0xcd28('0x21')](removeEntity(_0x4fe274,null))[_0xcd28('0x40')](handleError(_0x4fe274,null));};exports[_0xcd28('0x44')]=function(_0x487e5e,_0xbfa661){return db[_0xcd28('0x3a')][_0xcd28('0x44')]()[_0xcd28('0x21')](respondWithResult(_0xbfa661,null))['catch'](handleError(_0xbfa661,null));};
\ No newline at end of file
index 7a99de3..a2cf204 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfca3=['lodash','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./integrationReport.attributes','exports','define','IntegrationReport','report_integration'];(function(_0x5be21f,_0x12c658){var _0x4c7cba=function(_0x1cdfba){while(--_0x1cdfba){_0x5be21f['push'](_0x5be21f['shift']());}};_0x4c7cba(++_0x12c658);}(_0xfca3,0xd8));var _0x3fca=function(_0x5296a7,_0x2b590b){_0x5296a7=_0x5296a7-0x0;var _0x5b608c=_0xfca3[_0x5296a7];return _0x5b608c;};'use strict';var _=require(_0x3fca('0x0'));var util=require('util');var logger=require(_0x3fca('0x1'))(_0x3fca('0x2'));var moment=require(_0x3fca('0x3'));var BPromise=require(_0x3fca('0x4'));var rp=require(_0x3fca('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x3fca('0x6'));var attributes=require(_0x3fca('0x7'));module[_0x3fca('0x8')]=function(_0x1e98b0,_0x3c1d63){return _0x1e98b0[_0x3fca('0x9')](_0x3fca('0xa'),attributes,{'tableName':_0x3fca('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfbf4=['../../config/environment','exports','define','IntegrationReport','report_integration','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x32cd34,_0x4f4d4e){var _0x565786=function(_0x4c84f1){while(--_0x4c84f1){_0x32cd34['push'](_0x32cd34['shift']());}};_0x565786(++_0x4f4d4e);}(_0xfbf4,0x139));var _0x4fbf=function(_0x39a10b,_0x821ee2){_0x39a10b=_0x39a10b-0x0;var _0x1775b6=_0xfbf4[_0x39a10b];return _0x1775b6;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4fbf('0x0'))(_0x4fbf('0x1'));var moment=require(_0x4fbf('0x2'));var BPromise=require(_0x4fbf('0x3'));var rp=require(_0x4fbf('0x4'));var fs=require('fs');var path=require(_0x4fbf('0x5'));var rimraf=require('rimraf');var config=require(_0x4fbf('0x6'));var attributes=require('./integrationReport.attributes');module[_0x4fbf('0x7')]=function(_0x26b6a7,_0xf65482){return _0x26b6a7[_0x4fbf('0x8')](_0x4fbf('0x9'),attributes,{'tableName':_0x4fbf('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 69fad07..b8a1708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2c7=['../../config/logger','jayson/promise','client','http','request','then','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xc2c7,0x134));var _0x7c2c=function(_0x521bfa,_0x404aa1){_0x521bfa=_0x521bfa-0x0;var _0x2ef5b5=_0xc2c7[_0x521bfa];return _0x2ef5b5;};'use strict';var _=require('lodash');var util=require(_0x7c2c('0x0'));var moment=require(_0x7c2c('0x1'));var BPromise=require(_0x7c2c('0x2'));var rs=require(_0x7c2c('0x3'));var fs=require('fs');var Redis=require(_0x7c2c('0x4'));var db=require(_0x7c2c('0x5'))['db'];var utils=require(_0x7c2c('0x6'));var logger=require(_0x7c2c('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x7c2c('0x8'));var client=jayson[_0x7c2c('0x9')][_0x7c2c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x54f027,_0x4abe93,_0x5a1027){return new BPromise(function(_0x2274cd,_0x29638d){return client[_0x7c2c('0xb')](_0x54f027,_0x5a1027)[_0x7c2c('0xc')](function(_0x279cff){logger['info'](_0x7c2c('0xd'),_0x4abe93,_0x7c2c('0xe'));logger[_0x7c2c('0xf')](_0x7c2c('0x10'),_0x4abe93,_0x7c2c('0xe'),JSON[_0x7c2c('0x11')](_0x279cff));if(_0x279cff[_0x7c2c('0x12')]){if(_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x13')]===0x1f4){logger[_0x7c2c('0x12')](_0x7c2c('0xd'),_0x4abe93,_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x14')]);return _0x29638d(_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x14')]);}logger[_0x7c2c('0x12')]('IntegrationReport,\x20%s,\x20%s',_0x4abe93,_0x279cff['error'][_0x7c2c('0x14')]);return _0x2274cd(_0x279cff[_0x7c2c('0x12')][_0x7c2c('0x14')]);}else{logger['info'](_0x7c2c('0xd'),_0x4abe93,_0x7c2c('0xe'));_0x2274cd(_0x279cff['result'][_0x7c2c('0x14')]);}})['catch'](function(_0x1aa355){logger['error'](_0x7c2c('0xd'),_0x4abe93,_0x1aa355);_0x29638d(_0x1aa355);});});}
\ No newline at end of file
+var _0xba34=['../../config/environment','jayson/promise','client','http','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/logger','rpc'];(function(_0x12bbe5,_0x1e04f0){var _0x2b3363=function(_0x1e2398){while(--_0x1e2398){_0x12bbe5['push'](_0x12bbe5['shift']());}};_0x2b3363(++_0x1e04f0);}(_0xba34,0x119));var _0x4ba3=function(_0x504ca9,_0x5361d5){_0x504ca9=_0x504ca9-0x0;var _0x27fd17=_0xba34[_0x504ca9];return _0x27fd17;};'use strict';var _=require(_0x4ba3('0x0'));var util=require(_0x4ba3('0x1'));var moment=require(_0x4ba3('0x2'));var BPromise=require(_0x4ba3('0x3'));var rs=require(_0x4ba3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4ba3('0x5'))(_0x4ba3('0x6'));var config=require(_0x4ba3('0x7'));var jayson=require(_0x4ba3('0x8'));var client=jayson[_0x4ba3('0x9')][_0x4ba3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe5f99a,_0x585f2d,_0x6254fb){return new BPromise(function(_0x368eee,_0x2df7f3){return client[_0x4ba3('0xb')](_0xe5f99a,_0x6254fb)[_0x4ba3('0xc')](function(_0xcf1ec3){logger[_0x4ba3('0xd')](_0x4ba3('0xe'),_0x585f2d,_0x4ba3('0xf'));logger[_0x4ba3('0x10')](_0x4ba3('0x11'),_0x585f2d,'request\x20sent',JSON[_0x4ba3('0x12')](_0xcf1ec3));if(_0xcf1ec3[_0x4ba3('0x13')]){if(_0xcf1ec3['error'][_0x4ba3('0x14')]===0x1f4){logger['error'](_0x4ba3('0xe'),_0x585f2d,_0xcf1ec3['error'][_0x4ba3('0x15')]);return _0x2df7f3(_0xcf1ec3[_0x4ba3('0x13')][_0x4ba3('0x15')]);}logger[_0x4ba3('0x13')](_0x4ba3('0xe'),_0x585f2d,_0xcf1ec3[_0x4ba3('0x13')][_0x4ba3('0x15')]);return _0x368eee(_0xcf1ec3[_0x4ba3('0x13')][_0x4ba3('0x15')]);}else{logger[_0x4ba3('0xd')](_0x4ba3('0xe'),_0x585f2d,_0x4ba3('0xf'));_0x368eee(_0xcf1ec3[_0x4ba3('0x16')][_0x4ba3('0x15')]);}})[_0x4ba3('0x17')](function(_0x1b7776){logger['error'](_0x4ba3('0xe'),_0x585f2d,_0x1b7776);_0x2df7f3(_0x1b7776);});});}
\ No newline at end of file
index d11ecf7..442fc5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18af=['path','express','../../components/interaction/service','../../config/environment','./interval.controller','get','index','/:id','show','/:id/sub_intervals','isAuthenticated','getIntervals','post','create','addInterval','addIntervals','put','delete','destroy','multer'];(function(_0x1f9ba9,_0x1d735f){var _0xd30e42=function(_0x4fd529){while(--_0x4fd529){_0x1f9ba9['push'](_0x1f9ba9['shift']());}};_0xd30e42(++_0x1d735f);}(_0x18af,0x8b));var _0xf18a=function(_0x3e7107,_0x106b97){_0x3e7107=_0x3e7107-0x0;var _0x177d08=_0x18af[_0x3e7107];return _0x177d08;};'use strict';var multer=require(_0xf18a('0x0'));var util=require('util');var path=require(_0xf18a('0x1'));var timeout=require('connect-timeout');var express=require(_0xf18a('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xf18a('0x3'));var config=require(_0xf18a('0x4'));var controller=require(_0xf18a('0x5'));router[_0xf18a('0x6')]('/',auth['isAuthenticated'](),controller[_0xf18a('0x7')]);router[_0xf18a('0x6')](_0xf18a('0x8'),auth['isAuthenticated'](),controller[_0xf18a('0x9')]);router[_0xf18a('0x6')](_0xf18a('0xa'),auth[_0xf18a('0xb')](),controller[_0xf18a('0xc')]);router[_0xf18a('0xd')]('/',auth[_0xf18a('0xb')](),controller[_0xf18a('0xe')]);router[_0xf18a('0xd')](_0xf18a('0xa'),auth[_0xf18a('0xb')](),controller[_0xf18a('0xf')]);router[_0xf18a('0xd')]('/:id/sub_intervals/create_many',auth[_0xf18a('0xb')](),controller[_0xf18a('0x10')]);router[_0xf18a('0x11')](_0xf18a('0x8'),auth[_0xf18a('0xb')](),controller['update']);router[_0xf18a('0x12')](_0xf18a('0x8'),auth['isAuthenticated'](),controller[_0xf18a('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xb68a=['post','addInterval','addIntervals','put','update','delete','multer','util','path','express','Router','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/sub_intervals','getIntervals'];(function(_0x15dab4,_0x219ec9){var _0x2c5bf1=function(_0x4ce524){while(--_0x4ce524){_0x15dab4['push'](_0x15dab4['shift']());}};_0x2c5bf1(++_0x219ec9);}(_0xb68a,0x1a8));var _0xab68=function(_0x48d3f8,_0x502a1b){_0x48d3f8=_0x48d3f8-0x0;var _0x3f6498=_0xb68a[_0x48d3f8];return _0x3f6498;};'use strict';var multer=require(_0xab68('0x0'));var util=require(_0xab68('0x1'));var path=require(_0xab68('0x2'));var timeout=require('connect-timeout');var express=require(_0xab68('0x3'));var router=express[_0xab68('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xab68('0x5'));var controller=require('./interval.controller');router[_0xab68('0x6')]('/',auth[_0xab68('0x7')](),controller[_0xab68('0x8')]);router[_0xab68('0x6')](_0xab68('0x9'),auth['isAuthenticated'](),controller[_0xab68('0xa')]);router['get'](_0xab68('0xb'),auth[_0xab68('0x7')](),controller[_0xab68('0xc')]);router[_0xab68('0xd')]('/',auth[_0xab68('0x7')](),controller['create']);router['post']('/:id/sub_intervals',auth['isAuthenticated'](),controller[_0xab68('0xe')]);router[_0xab68('0xd')]('/:id/sub_intervals/create_many',auth[_0xab68('0x7')](),controller[_0xab68('0xf')]);router[_0xab68('0x10')](_0xab68('0x9'),auth[_0xab68('0x7')](),controller[_0xab68('0x11')]);router[_0xab68('0x12')](_0xab68('0x9'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index ce99651..cb561b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39c0=['exports','STRING','sequelize'];(function(_0x3e1f29,_0x2acd21){var _0x4f62ac=function(_0x1a1907){while(--_0x1a1907){_0x3e1f29['push'](_0x3e1f29['shift']());}};_0x4f62ac(++_0x2acd21);}(_0x39c0,0x197));var _0x039c=function(_0x6f619c,_0x478da5){_0x6f619c=_0x6f619c-0x0;var _0x3f7097=_0x39c0[_0x6f619c];return _0x3f7097;};'use strict';var Sequelize=require(_0x039c('0x0'));module[_0x039c('0x1')]={'name':{'type':Sequelize[_0x039c('0x2')]},'description':{'type':Sequelize[_0x039c('0x2')]},'interval':{'type':Sequelize[_0x039c('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xe108=['STRING','exports'];(function(_0x31efe7,_0x52fe9e){var _0x24b6ee=function(_0x65ae94){while(--_0x65ae94){_0x31efe7['push'](_0x31efe7['shift']());}};_0x24b6ee(++_0x52fe9e);}(_0xe108,0x9f));var _0x8e10=function(_0x1d0fe1,_0x452dbb){_0x1d0fe1=_0x1d0fe1-0x0;var _0x228558=_0xe108[_0x1d0fe1];return _0x228558;};'use strict';var Sequelize=require('sequelize');module[_0x8e10('0x0')]={'name':{'type':Sequelize[_0x8e10('0x1')]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x8e10('0x1')],'allowNull':!![]}};
\ No newline at end of file
index 4f6fd17..90c4a26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x558b=['includeAll','include','findAll','catch','show','params','find','create','body','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addInterval','IntervalId','getIntervals','findOne','addIntervals','sequelize','transaction','bulkCreate','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','end','status','json','offset','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','Intervals','UserProfileResource','error','stack','send','map','Interval','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','name','options'];(function(_0x3e36b6,_0x43de3b){var _0x4a3a36=function(_0x13f6a0){while(--_0x13f6a0){_0x3e36b6['push'](_0x3e36b6['shift']());}};_0x4a3a36(++_0x43de3b);}(_0x558b,0x1dc));var _0xb558=function(_0x2705da,_0x2a916c){_0x2705da=_0x2705da-0x0;var _0x1c50db=_0x558b[_0x2705da];return _0x1c50db;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb558('0x0'));var zipdir=require(_0xb558('0x1'));var jsonpatch=require(_0xb558('0x2'));var rp=require(_0xb558('0x3'));var moment=require(_0xb558('0x4'));var BPromise=require(_0xb558('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xb558('0x6'));var csv=require(_0xb558('0x7'));var ejs=require(_0xb558('0x8'));var fs=require('fs');var fs_extra=require(_0xb558('0x9'));var _=require(_0xb558('0xa'));var squel=require('squel');var crypto=require(_0xb558('0xb'));var jsforce=require(_0xb558('0xc'));var deskjs=require(_0xb558('0xd'));var toCsv=require(_0xb558('0x7'));var querystring=require('querystring');var Papa=require(_0xb558('0xe'));var Redis=require(_0xb558('0xf'));var authService=require(_0xb558('0x10'));var qs=require(_0xb558('0x11'));var as=require(_0xb558('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb558('0x13'))(_0xb558('0x14'));var utils=require(_0xb558('0x15'));var config=require(_0xb558('0x16'));var licenseUtil=require(_0xb558('0x17'));var db=require(_0xb558('0x18'))['db'];var extensions=require(_0xb558('0x19'));function respondWithStatusCode(_0x87a257,_0x1c6c53){_0x1c6c53=_0x1c6c53||0xcc;return function(_0x4375a2){if(_0x4375a2){return _0x87a257[_0xb558('0x1a')](_0x1c6c53);}return _0x87a257['status'](_0x1c6c53)[_0xb558('0x1b')]();};}function respondWithResult(_0x4b7d7f,_0x5514f3){_0x5514f3=_0x5514f3||0xc8;return function(_0x4ba9ca){if(_0x4ba9ca){return _0x4b7d7f[_0xb558('0x1c')](_0x5514f3)[_0xb558('0x1d')](_0x4ba9ca);}};}function respondWithFilteredResult(_0x330ebc,_0x2cd068){return function(_0x5b1ac8){if(_0x5b1ac8){var _0x20b0a6=typeof _0x2cd068[_0xb558('0x1e')]==='undefined'&&typeof _0x2cd068['limit']==='undefined';var _0x363219=_0x5b1ac8['count'];var _0x4dfaa7=_0x20b0a6?0x0:_0x2cd068[_0xb558('0x1e')];var _0x1a0546=_0x20b0a6?_0x5b1ac8[_0xb558('0x1f')]:_0x2cd068[_0xb558('0x1e')]+_0x2cd068[_0xb558('0x20')];var _0x3e2383;if(_0x1a0546>=_0x363219){_0x1a0546=_0x363219;_0x3e2383=0xc8;}else{_0x3e2383=0xce;}_0x330ebc[_0xb558('0x1c')](_0x3e2383);return _0x330ebc[_0xb558('0x21')](_0xb558('0x22'),_0x4dfaa7+'-'+_0x1a0546+'/'+_0x363219)[_0xb558('0x1d')](_0x5b1ac8);}return null;};}function patchUpdates(_0x52b401){return function(_0x29fca7){try{jsonpatch[_0xb558('0x23')](_0x29fca7,_0x52b401,!![]);}catch(_0x54ae58){return BPromise[_0xb558('0x24')](_0x54ae58);}return _0x29fca7[_0xb558('0x25')]();};}function saveUpdates(_0x10110f,_0x23db2e){return function(_0x216c45){if(_0x216c45){return _0x216c45[_0xb558('0x26')](_0x10110f)[_0xb558('0x27')](function(_0x3a46f6){return _0x3a46f6;});}return null;};}function removeEntity(_0x3b1f7d,_0x262fd5){return function(_0x480de1){if(_0x480de1){return _0x480de1[_0xb558('0x28')]()[_0xb558('0x27')](function(){var _0x536fc4=_0x480de1[_0xb558('0x29')]({'plain':!![]});var _0x1f29ad=_0xb558('0x2a');return db[_0xb558('0x2b')][_0xb558('0x28')]({'where':{'type':_0x1f29ad,'resourceId':_0x536fc4['id']}})[_0xb558('0x27')](function(){return _0x480de1;});})[_0xb558('0x27')](function(){_0x3b1f7d[_0xb558('0x1c')](0xcc)[_0xb558('0x1b')]();});}};}function handleEntityNotFound(_0x44ab06,_0x275172){return function(_0x200f6b){if(!_0x200f6b){_0x44ab06[_0xb558('0x1a')](0x194);}return _0x200f6b;};}function handleError(_0x2da51f,_0x2458dd){_0x2458dd=_0x2458dd||0x1f4;return function(_0x59d615){logger[_0xb558('0x2c')](_0x59d615[_0xb558('0x2d')]);if(_0x59d615['name']){delete _0x59d615['name'];}_0x2da51f['status'](_0x2458dd)[_0xb558('0x2e')](_0x59d615);};}exports['index']=function(_0x4cd84c,_0x8eecff){var _0x1046fd={},_0x522a84={},_0x56776b={'count':0x0,'rows':[]};var _0x3387f2=_[_0xb558('0x2f')](db[_0xb558('0x30')][_0xb558('0x31')],function(_0x249776){return{'name':_0x249776['fieldName'],'type':_0x249776[_0xb558('0x32')][_0xb558('0x33')]};});_0x522a84[_0xb558('0x34')]=_[_0xb558('0x2f')](_0x3387f2,'name');_0x522a84[_0xb558('0x35')]=_[_0xb558('0x36')](_0x4cd84c[_0xb558('0x35')]);_0x522a84[_0xb558('0x37')]=_[_0xb558('0x38')](_0x522a84[_0xb558('0x34')],_0x522a84[_0xb558('0x35')]);_0x1046fd[_0xb558('0x39')]=_['intersection'](_0x522a84[_0xb558('0x34')],qs[_0xb558('0x3a')](_0x4cd84c['query'][_0xb558('0x3a')]));_0x1046fd[_0xb558('0x39')]=_0x1046fd[_0xb558('0x39')][_0xb558('0x3b')]?_0x1046fd[_0xb558('0x39')]:_0x522a84[_0xb558('0x34')];if(!_0x4cd84c[_0xb558('0x35')]['hasOwnProperty'](_0xb558('0x3c'))){_0x1046fd[_0xb558('0x20')]=qs[_0xb558('0x20')](_0x4cd84c['query'][_0xb558('0x20')]);_0x1046fd[_0xb558('0x1e')]=qs[_0xb558('0x1e')](_0x4cd84c[_0xb558('0x35')]['offset']);}_0x1046fd[_0xb558('0x3d')]=qs[_0xb558('0x3e')](_0x4cd84c[_0xb558('0x35')][_0xb558('0x3e')]);_0x1046fd[_0xb558('0x3f')]=qs['filters'](_[_0xb558('0x40')](_0x4cd84c[_0xb558('0x35')],_0x522a84[_0xb558('0x37')]),_0x3387f2);if(_0x4cd84c[_0xb558('0x35')][_0xb558('0x41')]){_0x1046fd[_0xb558('0x3f')]=_[_0xb558('0x42')](_0x1046fd[_0xb558('0x3f')],{'$or':_[_0xb558('0x2f')](_0x3387f2,function(_0x36050a){if(_0x36050a[_0xb558('0x32')]!==_0xb558('0x43')){var _0x48c7a3={};_0x48c7a3[_0x36050a[_0xb558('0x44')]]={'$like':'%'+_0x4cd84c[_0xb558('0x35')][_0xb558('0x41')]+'%'};return _0x48c7a3;}})});}_0x1046fd=_['merge']({},_0x1046fd,_0x4cd84c[_0xb558('0x45')]);var _0x319be4={'where':_0x1046fd[_0xb558('0x3f')]};return db[_0xb558('0x30')][_0xb558('0x1f')](_0x319be4)[_0xb558('0x27')](function(_0x1e39d6){_0x56776b[_0xb558('0x1f')]=_0x1e39d6;if(_0x4cd84c[_0xb558('0x35')][_0xb558('0x46')]){_0x1046fd[_0xb558('0x47')]=[{'all':!![]}];}return db['Interval'][_0xb558('0x48')](_0x1046fd);})[_0xb558('0x27')](function(_0x50c767){_0x56776b['rows']=_0x50c767;return _0x56776b;})[_0xb558('0x27')](respondWithFilteredResult(_0x8eecff,_0x1046fd))[_0xb558('0x49')](handleError(_0x8eecff,null));};exports[_0xb558('0x4a')]=function(_0x4f13cc,_0x13bfba){var _0x5864a9={'raw':!![],'where':{'id':_0x4f13cc[_0xb558('0x4b')]['id']}},_0x2fd863={};_0x2fd863[_0xb558('0x34')]=_['keys'](db['Interval'][_0xb558('0x31')]);_0x2fd863[_0xb558('0x35')]=_[_0xb558('0x36')](_0x4f13cc[_0xb558('0x35')]);_0x2fd863['filters']=_['intersection'](_0x2fd863['model'],_0x2fd863['query']);_0x5864a9[_0xb558('0x39')]=_[_0xb558('0x38')](_0x2fd863[_0xb558('0x34')],qs['fields'](_0x4f13cc[_0xb558('0x35')][_0xb558('0x3a')]));_0x5864a9[_0xb558('0x39')]=_0x5864a9[_0xb558('0x39')][_0xb558('0x3b')]?_0x5864a9[_0xb558('0x39')]:_0x2fd863[_0xb558('0x34')];if(_0x4f13cc[_0xb558('0x35')][_0xb558('0x46')]){_0x5864a9[_0xb558('0x47')]=[{'all':!![]}];}_0x5864a9=_['merge']({},_0x5864a9,_0x4f13cc[_0xb558('0x45')]);return db[_0xb558('0x30')][_0xb558('0x4c')](_0x5864a9)[_0xb558('0x27')](handleEntityNotFound(_0x13bfba,null))[_0xb558('0x27')](respondWithResult(_0x13bfba,null))[_0xb558('0x49')](handleError(_0x13bfba,null));};exports[_0xb558('0x4d')]=function(_0x42dc89,_0x18d230){return db['Interval'][_0xb558('0x4d')](_0x42dc89[_0xb558('0x4e')],{})[_0xb558('0x27')](function(_0x10aa11){var _0x570aca=_0x42dc89[_0xb558('0x4f')][_0xb558('0x29')]({'plain':!![]});if(!_0x570aca)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x570aca['role']===_0xb558('0x4f')){var _0x3aa737=_0x10aa11[_0xb558('0x29')]({'plain':!![]});var _0x22f81a=_0xb558('0x2a');return db[_0xb558('0x50')][_0xb558('0x4c')]({'where':{'name':_0x22f81a,'userProfileId':_0x570aca[_0xb558('0x51')]},'raw':!![]})[_0xb558('0x27')](function(_0x420941){if(_0x420941&&_0x420941['autoAssociation']===0x0){return db[_0xb558('0x2b')]['create']({'name':_0x3aa737[_0xb558('0x44')],'resourceId':_0x3aa737['id'],'type':_0x420941[_0xb558('0x44')],'sectionId':_0x420941['id']},{})[_0xb558('0x27')](function(){return _0x10aa11;});}else{return _0x10aa11;}})[_0xb558('0x49')](function(_0x11d4cb){logger[_0xb558('0x2c')](_0xb558('0x52'),_0x11d4cb);throw _0x11d4cb;});}return _0x10aa11;})['then'](respondWithResult(_0x18d230,0xc9))['catch'](handleError(_0x18d230,null));};exports[_0xb558('0x26')]=function(_0x1a2fb9,_0x4684c9){if(_0x1a2fb9[_0xb558('0x4e')]['id']){delete _0x1a2fb9[_0xb558('0x4e')]['id'];}return db['Interval']['find']({'where':{'id':_0x1a2fb9[_0xb558('0x4b')]['id']}})[_0xb558('0x27')](handleEntityNotFound(_0x4684c9,null))[_0xb558('0x27')](saveUpdates(_0x1a2fb9['body'],null))['then'](respondWithResult(_0x4684c9,null))[_0xb558('0x49')](handleError(_0x4684c9,null));};exports[_0xb558('0x28')]=function(_0x1fef5a,_0x59ff60){return db[_0xb558('0x30')][_0xb558('0x4c')]({'where':{'id':_0x1fef5a['params']['id']}})['then'](handleEntityNotFound(_0x59ff60,null))[_0xb558('0x27')](removeEntity(_0x59ff60,null))[_0xb558('0x49')](handleError(_0x59ff60,null));};exports[_0xb558('0x53')]=function(_0x48064a,_0x54df1d,_0x42dbbc){if(_0x48064a[_0xb558('0x4e')]['id']){delete _0x48064a[_0xb558('0x4e')]['id'];}return db[_0xb558('0x30')][_0xb558('0x4c')]({'where':{'id':_0x48064a[_0xb558('0x4b')]['id']}})[_0xb558('0x27')](handleEntityNotFound(_0x54df1d,null))[_0xb558('0x27')](function(_0x25120a){if(_0x25120a){_0x48064a[_0xb558('0x4e')][_0xb558('0x54')]=_0x25120a['id'];return db[_0xb558('0x30')]['create'](_0x48064a[_0xb558('0x4e')]);}})[_0xb558('0x27')](respondWithResult(_0x54df1d,null))[_0xb558('0x49')](handleError(_0x54df1d,null));};exports[_0xb558('0x55')]=function(_0x27ff98,_0x5ef0a6,_0x15978c){var _0x461427={};var _0x52c4c1={};var _0x467b74;var _0xf1a4f1;return db[_0xb558('0x30')][_0xb558('0x56')]({'where':{'id':_0x27ff98['params']['id']}})[_0xb558('0x27')](handleEntityNotFound(_0x5ef0a6,null))['then'](function(_0x3b51d8){if(_0x3b51d8){_0x467b74=_0x3b51d8;_0x52c4c1[_0xb558('0x34')]=_[_0xb558('0x36')](db[_0xb558('0x30')]['rawAttributes']);_0x52c4c1['query']=_[_0xb558('0x36')](_0x27ff98[_0xb558('0x35')]);_0x52c4c1[_0xb558('0x37')]=_['intersection'](_0x52c4c1[_0xb558('0x34')],_0x52c4c1[_0xb558('0x35')]);_0x461427[_0xb558('0x39')]=_[_0xb558('0x38')](_0x52c4c1['model'],qs[_0xb558('0x3a')](_0x27ff98['query']['fields']));_0x461427[_0xb558('0x39')]=_0x461427[_0xb558('0x39')][_0xb558('0x3b')]?_0x461427[_0xb558('0x39')]:_0x52c4c1[_0xb558('0x34')];_0x461427[_0xb558('0x3d')]=qs['sort'](_0x27ff98[_0xb558('0x35')]['sort']);_0x461427[_0xb558('0x3f')]=qs[_0xb558('0x37')](_[_0xb558('0x40')](_0x27ff98['query'],_0x52c4c1['filters']));if(_0x27ff98['query'][_0xb558('0x41')]){_0x461427[_0xb558('0x3f')]=_[_0xb558('0x42')](_0x461427[_0xb558('0x3f')],{'$or':_['map'](_0x461427[_0xb558('0x39')],function(_0x6d406d){var _0x1d27ef={};_0x1d27ef[_0x6d406d]={'$like':'%'+_0x27ff98[_0xb558('0x35')][_0xb558('0x41')]+'%'};return _0x1d27ef;})});}_0x461427=_[_0xb558('0x42')]({},_0x461427,_0x27ff98[_0xb558('0x45')]);return _0x467b74[_0xb558('0x55')](_0x461427);}})[_0xb558('0x27')](function(_0x276598){if(_0x276598){_0xf1a4f1=_0x276598['length'];if(!_0x27ff98[_0xb558('0x35')]['hasOwnProperty'](_0xb558('0x3c'))){_0x461427[_0xb558('0x20')]=qs['limit'](_0x27ff98[_0xb558('0x35')][_0xb558('0x20')]);_0x461427[_0xb558('0x1e')]=qs[_0xb558('0x1e')](_0x27ff98[_0xb558('0x35')][_0xb558('0x1e')]);}return _0x467b74['getIntervals'](_0x461427);}})['then'](function(_0x377360){if(_0x377360){return _0x377360?{'count':_0xf1a4f1,'rows':_0x377360}:null;}})[_0xb558('0x27')](respondWithResult(_0x5ef0a6,null))['catch'](handleError(_0x5ef0a6,null));};exports[_0xb558('0x57')]=function(_0x1c6396,_0x30ec6b,_0x569ae2){return db[_0xb558('0x30')][_0xb558('0x56')]({'where':{'id':_0x1c6396['params']['id']}})[_0xb558('0x27')](handleEntityNotFound(_0x30ec6b,null))['then'](function(_0x4e2570){if(_0x4e2570){return db[_0xb558('0x58')][_0xb558('0x59')](function(_0x41dcdb){return db[_0xb558('0x30')]['destroy']({'where':{'IntervalId':_0x1c6396[_0xb558('0x4b')]['id']},'transaction':_0x41dcdb})[_0xb558('0x27')](function(_0x3b009f){var _0x380079=_[_0xb558('0x2f')](_0x1c6396[_0xb558('0x4e')],function(_0x11d3a5){delete _0x11d3a5['id'];_0x11d3a5[_0xb558('0x54')]=_0x1c6396[_0xb558('0x4b')]['id'];return _0x11d3a5;});return db['Interval'][_0xb558('0x5a')](_0x380079,{'transaction':_0x41dcdb});});})[_0xb558('0x27')](function(){return db['Interval']['findAll']({'where':{'IntervalId':_0x1c6396[_0xb558('0x4b')]['id']}});});}})['then'](respondWithResult(_0x30ec6b,null))[_0xb558('0x49')](handleError(_0x30ec6b,null));};
\ No newline at end of file
+var _0x17fa=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','UserProfileResource','error','stack','name','index','map','Interval','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','VIRTUAL','includeAll','catch','params','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','addInterval','IntervalId','findOne','pick','merge','options','getIntervals','sequelize','transaction','bulkCreate','findAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service'];(function(_0x455152,_0x372736){var _0x5a0bea=function(_0x5c69bb){while(--_0x5c69bb){_0x455152['push'](_0x455152['shift']());}};_0x5a0bea(++_0x372736);}(_0x17fa,0x14e));var _0xa17f=function(_0x377dad,_0x5eaa4e){_0x377dad=_0x377dad-0x0;var _0x4bebd4=_0x17fa[_0x377dad];return _0x4bebd4;};'use strict';var emlformat=require(_0xa17f('0x0'));var rimraf=require(_0xa17f('0x1'));var zipdir=require(_0xa17f('0x2'));var jsonpatch=require(_0xa17f('0x3'));var rp=require(_0xa17f('0x4'));var moment=require('moment');var BPromise=require(_0xa17f('0x5'));var Mustache=require(_0xa17f('0x6'));var util=require(_0xa17f('0x7'));var path=require(_0xa17f('0x8'));var sox=require(_0xa17f('0x9'));var csv=require(_0xa17f('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa17f('0xb'));var _=require(_0xa17f('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa17f('0xd'));var deskjs=require(_0xa17f('0xe'));var toCsv=require(_0xa17f('0xa'));var querystring=require(_0xa17f('0xf'));var Papa=require(_0xa17f('0x10'));var Redis=require('ioredis');var authService=require(_0xa17f('0x11'));var qs=require(_0xa17f('0x12'));var as=require(_0xa17f('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa17f('0x14'))(_0xa17f('0x15'));var utils=require(_0xa17f('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xa17f('0x17'));var db=require(_0xa17f('0x18'))['db'];var extensions=require(_0xa17f('0x19'));function respondWithStatusCode(_0x49bf8d,_0x1f2830){_0x1f2830=_0x1f2830||0xcc;return function(_0x3741f5){if(_0x3741f5){return _0x49bf8d[_0xa17f('0x1a')](_0x1f2830);}return _0x49bf8d[_0xa17f('0x1b')](_0x1f2830)[_0xa17f('0x1c')]();};}function respondWithResult(_0x3c10eb,_0x2a53f6){_0x2a53f6=_0x2a53f6||0xc8;return function(_0x3f1f04){if(_0x3f1f04){return _0x3c10eb[_0xa17f('0x1b')](_0x2a53f6)[_0xa17f('0x1d')](_0x3f1f04);}};}function respondWithFilteredResult(_0x4f30e6,_0x2ec55f){return function(_0x544cec){if(_0x544cec){var _0x5a4238=typeof _0x2ec55f[_0xa17f('0x1e')]===_0xa17f('0x1f')&&typeof _0x2ec55f[_0xa17f('0x20')]===_0xa17f('0x1f');var _0x1e2cd6=_0x544cec['count'];var _0x4062bb=_0x5a4238?0x0:_0x2ec55f[_0xa17f('0x1e')];var _0x3736ef=_0x5a4238?_0x544cec[_0xa17f('0x21')]:_0x2ec55f[_0xa17f('0x1e')]+_0x2ec55f['limit'];var _0xc3d9c7;if(_0x3736ef>=_0x1e2cd6){_0x3736ef=_0x1e2cd6;_0xc3d9c7=0xc8;}else{_0xc3d9c7=0xce;}_0x4f30e6[_0xa17f('0x1b')](_0xc3d9c7);return _0x4f30e6[_0xa17f('0x22')](_0xa17f('0x23'),_0x4062bb+'-'+_0x3736ef+'/'+_0x1e2cd6)[_0xa17f('0x1d')](_0x544cec);}return null;};}function patchUpdates(_0x34cc64){return function(_0x366878){try{jsonpatch[_0xa17f('0x24')](_0x366878,_0x34cc64,!![]);}catch(_0x213a41){return BPromise['reject'](_0x213a41);}return _0x366878[_0xa17f('0x25')]();};}function saveUpdates(_0x3d529a,_0x357315){return function(_0x6fdabb){if(_0x6fdabb){return _0x6fdabb[_0xa17f('0x26')](_0x3d529a)[_0xa17f('0x27')](function(_0x4ceed4){return _0x4ceed4;});}return null;};}function removeEntity(_0x48c98f,_0x4e3c65){return function(_0xb28157){if(_0xb28157){return _0xb28157[_0xa17f('0x28')]()[_0xa17f('0x27')](function(){var _0xa63967=_0xb28157[_0xa17f('0x29')]({'plain':!![]});var _0xacd61e='Intervals';return db[_0xa17f('0x2a')][_0xa17f('0x28')]({'where':{'type':_0xacd61e,'resourceId':_0xa63967['id']}})[_0xa17f('0x27')](function(){return _0xb28157;});})['then'](function(){_0x48c98f[_0xa17f('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x14fab0,_0x191fef){return function(_0x854e06){if(!_0x854e06){_0x14fab0[_0xa17f('0x1a')](0x194);}return _0x854e06;};}function handleError(_0x1a8cb4,_0x205726){_0x205726=_0x205726||0x1f4;return function(_0x28e7e4){logger[_0xa17f('0x2b')](_0x28e7e4[_0xa17f('0x2c')]);if(_0x28e7e4[_0xa17f('0x2d')]){delete _0x28e7e4[_0xa17f('0x2d')];}_0x1a8cb4['status'](_0x205726)['send'](_0x28e7e4);};}exports[_0xa17f('0x2e')]=function(_0x3bf6b4,_0x41232d){var _0x36135c={},_0x5beb5e={},_0x589040={'count':0x0,'rows':[]};var _0xf3706f=_[_0xa17f('0x2f')](db[_0xa17f('0x30')][_0xa17f('0x31')],function(_0x449a8e){return{'name':_0x449a8e[_0xa17f('0x32')],'type':_0x449a8e[_0xa17f('0x33')][_0xa17f('0x34')]};});_0x5beb5e[_0xa17f('0x35')]=_['map'](_0xf3706f,'name');_0x5beb5e[_0xa17f('0x36')]=_[_0xa17f('0x37')](_0x3bf6b4[_0xa17f('0x36')]);_0x5beb5e[_0xa17f('0x38')]=_[_0xa17f('0x39')](_0x5beb5e[_0xa17f('0x35')],_0x5beb5e[_0xa17f('0x36')]);_0x36135c['attributes']=_[_0xa17f('0x39')](_0x5beb5e[_0xa17f('0x35')],qs['fields'](_0x3bf6b4[_0xa17f('0x36')][_0xa17f('0x3a')]));_0x36135c[_0xa17f('0x3b')]=_0x36135c[_0xa17f('0x3b')][_0xa17f('0x3c')]?_0x36135c[_0xa17f('0x3b')]:_0x5beb5e[_0xa17f('0x35')];if(!_0x3bf6b4['query'][_0xa17f('0x3d')](_0xa17f('0x3e'))){_0x36135c['limit']=qs['limit'](_0x3bf6b4[_0xa17f('0x36')]['limit']);_0x36135c['offset']=qs['offset'](_0x3bf6b4['query'][_0xa17f('0x1e')]);}_0x36135c['order']=qs[_0xa17f('0x3f')](_0x3bf6b4[_0xa17f('0x36')][_0xa17f('0x3f')]);_0x36135c[_0xa17f('0x40')]=qs[_0xa17f('0x38')](_['pick'](_0x3bf6b4['query'],_0x5beb5e['filters']),_0xf3706f);if(_0x3bf6b4[_0xa17f('0x36')][_0xa17f('0x41')]){_0x36135c['where']=_['merge'](_0x36135c[_0xa17f('0x40')],{'$or':_[_0xa17f('0x2f')](_0xf3706f,function(_0x27fcc5){if(_0x27fcc5[_0xa17f('0x33')]!==_0xa17f('0x42')){var _0x137e71={};_0x137e71[_0x27fcc5[_0xa17f('0x2d')]]={'$like':'%'+_0x3bf6b4['query'][_0xa17f('0x41')]+'%'};return _0x137e71;}})});}_0x36135c=_['merge']({},_0x36135c,_0x3bf6b4['options']);var _0x16b815={'where':_0x36135c[_0xa17f('0x40')]};return db['Interval'][_0xa17f('0x21')](_0x16b815)['then'](function(_0xf199a2){_0x589040[_0xa17f('0x21')]=_0xf199a2;if(_0x3bf6b4['query'][_0xa17f('0x43')]){_0x36135c['include']=[{'all':!![]}];}return db[_0xa17f('0x30')]['findAll'](_0x36135c);})[_0xa17f('0x27')](function(_0x27fbb9){_0x589040['rows']=_0x27fbb9;return _0x589040;})[_0xa17f('0x27')](respondWithFilteredResult(_0x41232d,_0x36135c))[_0xa17f('0x44')](handleError(_0x41232d,null));};exports['show']=function(_0x2d7db5,_0x4063b5){var _0x2e3fa0={'raw':!![],'where':{'id':_0x2d7db5[_0xa17f('0x45')]['id']}},_0x1526b4={};_0x1526b4[_0xa17f('0x35')]=_[_0xa17f('0x37')](db[_0xa17f('0x30')]['rawAttributes']);_0x1526b4[_0xa17f('0x36')]=_[_0xa17f('0x37')](_0x2d7db5['query']);_0x1526b4[_0xa17f('0x38')]=_[_0xa17f('0x39')](_0x1526b4[_0xa17f('0x35')],_0x1526b4[_0xa17f('0x36')]);_0x2e3fa0[_0xa17f('0x3b')]=_['intersection'](_0x1526b4[_0xa17f('0x35')],qs[_0xa17f('0x3a')](_0x2d7db5[_0xa17f('0x36')]['fields']));_0x2e3fa0[_0xa17f('0x3b')]=_0x2e3fa0[_0xa17f('0x3b')][_0xa17f('0x3c')]?_0x2e3fa0[_0xa17f('0x3b')]:_0x1526b4[_0xa17f('0x35')];if(_0x2d7db5['query'][_0xa17f('0x43')]){_0x2e3fa0['include']=[{'all':!![]}];}_0x2e3fa0=_['merge']({},_0x2e3fa0,_0x2d7db5['options']);return db['Interval']['find'](_0x2e3fa0)['then'](handleEntityNotFound(_0x4063b5,null))['then'](respondWithResult(_0x4063b5,null))[_0xa17f('0x44')](handleError(_0x4063b5,null));};exports[_0xa17f('0x46')]=function(_0x3aec07,_0x15b2a7){return db[_0xa17f('0x30')]['create'](_0x3aec07[_0xa17f('0x47')],{})['then'](function(_0xc906fb){var _0x1c15f1=_0x3aec07[_0xa17f('0x48')][_0xa17f('0x29')]({'plain':!![]});if(!_0x1c15f1)throw new Error(_0xa17f('0x49'));if(_0x1c15f1['role']===_0xa17f('0x48')){var _0x159458=_0xc906fb[_0xa17f('0x29')]({'plain':!![]});var _0x3427e1='Intervals';return db[_0xa17f('0x4a')][_0xa17f('0x4b')]({'where':{'name':_0x3427e1,'userProfileId':_0x1c15f1[_0xa17f('0x4c')]},'raw':!![]})[_0xa17f('0x27')](function(_0x3b98ab){if(_0x3b98ab&&_0x3b98ab['autoAssociation']===0x0){return db['UserProfileResource'][_0xa17f('0x46')]({'name':_0x159458[_0xa17f('0x2d')],'resourceId':_0x159458['id'],'type':_0x3b98ab[_0xa17f('0x2d')],'sectionId':_0x3b98ab['id']},{})[_0xa17f('0x27')](function(){return _0xc906fb;});}else{return _0xc906fb;}})[_0xa17f('0x44')](function(_0x54f03a){logger[_0xa17f('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x54f03a);throw _0x54f03a;});}return _0xc906fb;})['then'](respondWithResult(_0x15b2a7,0xc9))[_0xa17f('0x44')](handleError(_0x15b2a7,null));};exports[_0xa17f('0x26')]=function(_0x55d546,_0x2f586d){if(_0x55d546['body']['id']){delete _0x55d546[_0xa17f('0x47')]['id'];}return db[_0xa17f('0x30')][_0xa17f('0x4b')]({'where':{'id':_0x55d546[_0xa17f('0x45')]['id']}})[_0xa17f('0x27')](handleEntityNotFound(_0x2f586d,null))['then'](saveUpdates(_0x55d546[_0xa17f('0x47')],null))['then'](respondWithResult(_0x2f586d,null))[_0xa17f('0x44')](handleError(_0x2f586d,null));};exports[_0xa17f('0x28')]=function(_0x159180,_0x39fb5b){return db[_0xa17f('0x30')]['find']({'where':{'id':_0x159180[_0xa17f('0x45')]['id']}})[_0xa17f('0x27')](handleEntityNotFound(_0x39fb5b,null))[_0xa17f('0x27')](removeEntity(_0x39fb5b,null))[_0xa17f('0x44')](handleError(_0x39fb5b,null));};exports[_0xa17f('0x4d')]=function(_0x500f6a,_0xfbf358,_0x50d61b){if(_0x500f6a[_0xa17f('0x47')]['id']){delete _0x500f6a[_0xa17f('0x47')]['id'];}return db[_0xa17f('0x30')]['find']({'where':{'id':_0x500f6a[_0xa17f('0x45')]['id']}})['then'](handleEntityNotFound(_0xfbf358,null))[_0xa17f('0x27')](function(_0x2c76c8){if(_0x2c76c8){_0x500f6a[_0xa17f('0x47')][_0xa17f('0x4e')]=_0x2c76c8['id'];return db[_0xa17f('0x30')][_0xa17f('0x46')](_0x500f6a['body']);}})['then'](respondWithResult(_0xfbf358,null))[_0xa17f('0x44')](handleError(_0xfbf358,null));};exports['getIntervals']=function(_0x5b1cdc,_0x54554d,_0x2d6709){var _0x44eee3={};var _0x52f8df={};var _0x5b1574;var _0x2680b7;return db['Interval'][_0xa17f('0x4f')]({'where':{'id':_0x5b1cdc[_0xa17f('0x45')]['id']}})[_0xa17f('0x27')](handleEntityNotFound(_0x54554d,null))[_0xa17f('0x27')](function(_0x5a4d48){if(_0x5a4d48){_0x5b1574=_0x5a4d48;_0x52f8df[_0xa17f('0x35')]=_[_0xa17f('0x37')](db[_0xa17f('0x30')]['rawAttributes']);_0x52f8df[_0xa17f('0x36')]=_[_0xa17f('0x37')](_0x5b1cdc['query']);_0x52f8df[_0xa17f('0x38')]=_[_0xa17f('0x39')](_0x52f8df['model'],_0x52f8df[_0xa17f('0x36')]);_0x44eee3['attributes']=_[_0xa17f('0x39')](_0x52f8df[_0xa17f('0x35')],qs[_0xa17f('0x3a')](_0x5b1cdc[_0xa17f('0x36')][_0xa17f('0x3a')]));_0x44eee3[_0xa17f('0x3b')]=_0x44eee3[_0xa17f('0x3b')][_0xa17f('0x3c')]?_0x44eee3[_0xa17f('0x3b')]:_0x52f8df[_0xa17f('0x35')];_0x44eee3['order']=qs[_0xa17f('0x3f')](_0x5b1cdc[_0xa17f('0x36')][_0xa17f('0x3f')]);_0x44eee3[_0xa17f('0x40')]=qs[_0xa17f('0x38')](_[_0xa17f('0x50')](_0x5b1cdc[_0xa17f('0x36')],_0x52f8df[_0xa17f('0x38')]));if(_0x5b1cdc[_0xa17f('0x36')][_0xa17f('0x41')]){_0x44eee3[_0xa17f('0x40')]=_['merge'](_0x44eee3[_0xa17f('0x40')],{'$or':_[_0xa17f('0x2f')](_0x44eee3[_0xa17f('0x3b')],function(_0x368071){var _0x45ca86={};_0x45ca86[_0x368071]={'$like':'%'+_0x5b1cdc[_0xa17f('0x36')][_0xa17f('0x41')]+'%'};return _0x45ca86;})});}_0x44eee3=_[_0xa17f('0x51')]({},_0x44eee3,_0x5b1cdc[_0xa17f('0x52')]);return _0x5b1574[_0xa17f('0x53')](_0x44eee3);}})[_0xa17f('0x27')](function(_0x268155){if(_0x268155){_0x2680b7=_0x268155['length'];if(!_0x5b1cdc[_0xa17f('0x36')]['hasOwnProperty'](_0xa17f('0x3e'))){_0x44eee3[_0xa17f('0x20')]=qs[_0xa17f('0x20')](_0x5b1cdc[_0xa17f('0x36')][_0xa17f('0x20')]);_0x44eee3[_0xa17f('0x1e')]=qs[_0xa17f('0x1e')](_0x5b1cdc[_0xa17f('0x36')][_0xa17f('0x1e')]);}return _0x5b1574[_0xa17f('0x53')](_0x44eee3);}})[_0xa17f('0x27')](function(_0x20174c){if(_0x20174c){return _0x20174c?{'count':_0x2680b7,'rows':_0x20174c}:null;}})[_0xa17f('0x27')](respondWithResult(_0x54554d,null))[_0xa17f('0x44')](handleError(_0x54554d,null));};exports['addIntervals']=function(_0xa0de32,_0x216bbc,_0x27ad55){return db[_0xa17f('0x30')]['findOne']({'where':{'id':_0xa0de32['params']['id']}})[_0xa17f('0x27')](handleEntityNotFound(_0x216bbc,null))['then'](function(_0x373668){if(_0x373668){return db[_0xa17f('0x54')][_0xa17f('0x55')](function(_0x4bdcb3){return db['Interval']['destroy']({'where':{'IntervalId':_0xa0de32['params']['id']},'transaction':_0x4bdcb3})[_0xa17f('0x27')](function(_0x372c0f){var _0x1c8431=_[_0xa17f('0x2f')](_0xa0de32[_0xa17f('0x47')],function(_0x1ec3bb){delete _0x1ec3bb['id'];_0x1ec3bb[_0xa17f('0x4e')]=_0xa0de32[_0xa17f('0x45')]['id'];return _0x1ec3bb;});return db['Interval'][_0xa17f('0x56')](_0x1c8431,{'transaction':_0x4bdcb3});});})[_0xa17f('0x27')](function(){return db[_0xa17f('0x30')][_0xa17f('0x57')]({'where':{'IntervalId':_0xa0de32[_0xa17f('0x45')]['id']}});});}})[_0xa17f('0x27')](respondWithResult(_0x216bbc,null))['catch'](handleError(_0x216bbc,null));};
\ No newline at end of file
index b83eee6..3ff32ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72cf=['./interval.attributes','../../components/extensions/rewrite','../../utils/iftime','iftime','exports','define','Interval','rewrite','interval','string','getIntervals','then','all','map','reduce'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x72cf,0xa5));var _0xf72c=function(_0x38757a,_0x42155c){_0x38757a=_0x38757a-0x0;var _0x40edd0=_0x72cf[_0x38757a];return _0x40edd0;};'use strict';var attributes=require(_0xf72c('0x0'));var extensions=require(_0xf72c('0x1'));var iftime=require(_0xf72c('0x2'))[_0xf72c('0x3')];module[_0xf72c('0x4')]=function(_0xbabc15){return _0xbabc15[_0xf72c('0x5')](_0xf72c('0x6'),attributes,{'tableName':'tools_intervals','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0xe9fc0c){extensions[_0xf72c('0x7')](_0xbabc15,_0xe9fc0c);},'afterBulkCreate':function(_0xcb392a,_0x5522d4,_0x1cc6ba){_0x1cc6ba();extensions[_0xf72c('0x7')](_0xbabc15,_0xcb392a[0x0]);},'afterUpdate':function(_0x26790c){extensions['rewrite'](_0xbabc15,_0x26790c);},'afterDestroy':function(_0x11d902){extensions[_0xf72c('0x7')](_0xbabc15,_0x11d902);}},'instanceMethods':{'ifTime':function(_0x3ce542=undefined,_0x4be257=new Date()){if(typeof this[_0xf72c('0x8')]===_0xf72c('0x9')){return iftime(this[_0xf72c('0x8')],_0x3ce542,_0x4be257);}else{return this[_0xf72c('0xa')]()[_0xf72c('0xb')](function(_0x35e73c){return Promise[_0xf72c('0xc')](_0x35e73c[_0xf72c('0xd')](function(_0x564070){return _0x564070['ifTime'](_0x3ce542,_0x4be257);}));})[_0xf72c('0xb')](function(_0x31f3a8){return _0x31f3a8[_0xf72c('0xe')](function(_0x18cfc0,_0x3d8a3f){return _0x18cfc0||_0x3d8a3f;},![]);});}}}});};
\ No newline at end of file
+var _0xcc4f=['ifTime','reduce','./interval.attributes','../../components/extensions/rewrite','../../utils/iftime','exports','define','Interval','tools_intervals','rewrite','interval','getIntervals','then','all','map'];(function(_0x54defc,_0x627178){var _0x1955d3=function(_0x299afe){while(--_0x299afe){_0x54defc['push'](_0x54defc['shift']());}};_0x1955d3(++_0x627178);}(_0xcc4f,0x197));var _0xfcc4=function(_0x4509f3,_0x37c476){_0x4509f3=_0x4509f3-0x0;var _0x2a0316=_0xcc4f[_0x4509f3];return _0x2a0316;};'use strict';var attributes=require(_0xfcc4('0x0'));var extensions=require(_0xfcc4('0x1'));var iftime=require(_0xfcc4('0x2'))['iftime'];module[_0xfcc4('0x3')]=function(_0x360eda){return _0x360eda[_0xfcc4('0x4')](_0xfcc4('0x5'),attributes,{'tableName':_0xfcc4('0x6'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x14d2fe){extensions[_0xfcc4('0x7')](_0x360eda,_0x14d2fe);},'afterBulkCreate':function(_0x5b0f3e,_0x40ce06,_0x165453){_0x165453();extensions[_0xfcc4('0x7')](_0x360eda,_0x5b0f3e[0x0]);},'afterUpdate':function(_0x88617){extensions[_0xfcc4('0x7')](_0x360eda,_0x88617);},'afterDestroy':function(_0x5e4449){extensions[_0xfcc4('0x7')](_0x360eda,_0x5e4449);}},'instanceMethods':{'ifTime':function(_0x337aaf=undefined,_0x150090=new Date()){if(typeof this[_0xfcc4('0x8')]==='string'){return iftime(this[_0xfcc4('0x8')],_0x337aaf,_0x150090);}else{return this[_0xfcc4('0x9')]()[_0xfcc4('0xa')](function(_0x2f219f){return Promise[_0xfcc4('0xb')](_0x2f219f[_0xfcc4('0xc')](function(_0x3f03ec){return _0x3f03ec[_0xfcc4('0xd')](_0x337aaf,_0x150090);}));})['then'](function(_0xa0041a){return _0xa0041a[_0xfcc4('0xe')](function(_0x2e4b61,_0x5a3bd1){return _0x2e4b61||_0x5a3bd1;},![]);});}}}});};
\ No newline at end of file
index fb84b7e..84720fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcda6=['iftime','rpc','Interval','findAll','options','raw','where','attributes','limit','include','map','model','then','info','GetInterval','debug','stringify','catch','error','message','ShowInterval','find','ifTime','reduce','format','IntervalIftime:\x20intervals\x20=\x20%s\x20(ids\x20=\x20%s)','name','join','findById','IntervalIftime','isArray','intervals','string','timezone','IntervalIftime:\x20interval\x20strings\x20=\x20%s','Iftime','resolve','lodash','util','../../mysqldb'];(function(_0x338184,_0x3674df){var _0x4c7947=function(_0x4b9846){while(--_0x4b9846){_0x338184['push'](_0x338184['shift']());}};_0x4c7947(++_0x3674df);}(_0xcda6,0x165));var _0x6cda=function(_0x2626fa,_0x59b39c){_0x2626fa=_0x2626fa-0x0;var _0x1f49f1=_0xcda6[_0x2626fa];return _0x1f49f1;};'use strict';var _=require(_0x6cda('0x0'));var util=require(_0x6cda('0x1'));var db=require(_0x6cda('0x2'))['db'];var iftime=require('../../utils/iftime')[_0x6cda('0x3')];var logger=require('../../config/logger')(_0x6cda('0x4'));exports['GetInterval']=function(_0x229fd9){var _0x44968f=this;return new Promise(function(_0xcf1de8,_0xcecb8a){return db[_0x6cda('0x5')][_0x6cda('0x6')]({'raw':_0x229fd9['options']?_0x229fd9[_0x6cda('0x7')][_0x6cda('0x8')]===undefined?!![]:![]:!![],'where':_0x229fd9['options']?_0x229fd9[_0x6cda('0x7')][_0x6cda('0x9')]||null:null,'attributes':_0x229fd9[_0x6cda('0x7')]?_0x229fd9[_0x6cda('0x7')][_0x6cda('0xa')]||null:null,'limit':_0x229fd9[_0x6cda('0x7')]?_0x229fd9['options'][_0x6cda('0xb')]||null:null,'include':_0x229fd9[_0x6cda('0x7')]?_0x229fd9['options'][_0x6cda('0xc')]?_[_0x6cda('0xd')](_0x229fd9[_0x6cda('0x7')][_0x6cda('0xc')],function(_0x51bf05){return{'model':db[_0x51bf05['model']],'as':_0x51bf05['as'],'attributes':_0x51bf05[_0x6cda('0xa')],'include':_0x51bf05[_0x6cda('0xc')]?_['map'](_0x51bf05[_0x6cda('0xc')],function(_0x3f32eb){return{'model':db[_0x3f32eb['model']],'as':_0x3f32eb['as'],'attributes':_0x3f32eb[_0x6cda('0xa')],'include':_0x3f32eb[_0x6cda('0xc')]?_[_0x6cda('0xd')](_0x3f32eb[_0x6cda('0xc')],function(_0xa8c999){return{'model':db[_0xa8c999[_0x6cda('0xe')]],'as':_0xa8c999['as'],'attributes':_0xa8c999[_0x6cda('0xa')]};}):[]};}):[]};}):[]:[]})[_0x6cda('0xf')](function(_0x42d7d8){logger[_0x6cda('0x10')](_0x6cda('0x11'),_0x229fd9);logger[_0x6cda('0x12')](_0x6cda('0x11'),_0x229fd9,JSON[_0x6cda('0x13')](_0x42d7d8));_0xcf1de8(_0x42d7d8);})[_0x6cda('0x14')](function(_0x52f679){logger[_0x6cda('0x15')](_0x6cda('0x11'),_0x52f679[_0x6cda('0x16')],_0x229fd9);_0xcecb8a(_0x44968f[_0x6cda('0x15')](0x1f4,_0x52f679['message']));});});};exports[_0x6cda('0x17')]=function(_0x375788){var _0x3a50c4=this;return new Promise(function(_0x4c89b6,_0x51012b){return db['Interval'][_0x6cda('0x18')]({'raw':_0x375788[_0x6cda('0x7')]?_0x375788[_0x6cda('0x7')][_0x6cda('0x8')]===undefined?!![]:![]:!![],'where':_0x375788['options']?_0x375788['options'][_0x6cda('0x9')]||null:null,'attributes':_0x375788[_0x6cda('0x7')]?_0x375788['options'][_0x6cda('0xa')]||null:null,'include':_0x375788[_0x6cda('0x7')]?_0x375788[_0x6cda('0x7')][_0x6cda('0xc')]?_[_0x6cda('0xd')](_0x375788[_0x6cda('0x7')][_0x6cda('0xc')],function(_0x4624c0){return{'model':db[_0x4624c0[_0x6cda('0xe')]],'as':_0x4624c0['as'],'attributes':_0x4624c0[_0x6cda('0xa')],'include':_0x4624c0[_0x6cda('0xc')]?_[_0x6cda('0xd')](_0x4624c0[_0x6cda('0xc')],function(_0x2115cd){return{'model':db[_0x2115cd[_0x6cda('0xe')]],'as':_0x2115cd['as'],'attributes':_0x2115cd[_0x6cda('0xa')],'include':_0x2115cd[_0x6cda('0xc')]?_[_0x6cda('0xd')](_0x2115cd[_0x6cda('0xc')],function(_0x3b039b){return{'model':db[_0x3b039b['model']],'as':_0x3b039b['as'],'attributes':_0x3b039b[_0x6cda('0xa')]};}):[]};}):[]};}):[]:[]})[_0x6cda('0xf')](function(_0x50b855){logger[_0x6cda('0x10')](_0x6cda('0x17'),_0x375788);logger[_0x6cda('0x12')]('ShowInterval',_0x375788,JSON['stringify'](_0x50b855));_0x4c89b6(_0x50b855);})[_0x6cda('0x14')](function(_0x35bfe9){logger[_0x6cda('0x15')](_0x6cda('0x17'),_0x35bfe9[_0x6cda('0x16')],_0x375788);_0x51012b(_0x3a50c4[_0x6cda('0x15')](0x1f4,_0x35bfe9[_0x6cda('0x16')]));});});};function checkArrayOfIntervals(_0x1b5154,_0x2686d6){var _0x25a10=[];return db[_0x6cda('0x5')][_0x6cda('0x6')]({'where':{'id':_0x1b5154}})[_0x6cda('0xf')](function(_0x2a78a1){_0x25a10=_0x2a78a1;return Promise['all'](_0x25a10['map'](function(_0x1608d3){return _0x1608d3[_0x6cda('0x19')](_0x2686d6);}));})[_0x6cda('0xf')](function(_0x2c8ad7){var _0x1aeb8c=_0x2c8ad7[_0x6cda('0x1a')](function(_0x1b80ca,_0x4e2fde){return _0x1b80ca||_0x4e2fde;},![]);logger[_0x6cda('0x10')](util[_0x6cda('0x1b')](_0x6cda('0x1c'),_0x25a10[_0x6cda('0xd')](function(_0x363c7a){return _0x363c7a[_0x6cda('0x1d')];})['join'](',\x20'),_0x25a10[_0x6cda('0xd')](function(_0x47ef53){return _0x47ef53['id'];})[_0x6cda('0x1e')](',\x20')));return _0x1aeb8c;});}function checkSingleInterval(_0x5c79e7,_0x17480d){return db[_0x6cda('0x5')][_0x6cda('0x1f')](_0x5c79e7)['then'](function(_0x5edc35){if(_0x5edc35){logger[_0x6cda('0x10')](util['format']('IntervalIftime:\x20interval\x20=\x20%s\x20(id\x20=\x20%s)',_0x5edc35[_0x6cda('0x1d')],_0x5edc35['id']));return _0x5edc35[_0x6cda('0x19')](_0x17480d);}});}exports[_0x6cda('0x20')]=function(_0xb5ada7){var _0x321e80=_0xb5ada7['intervalIds'];var _0x481121=Array[_0x6cda('0x21')](_0xb5ada7[_0x6cda('0x22')])?_0xb5ada7[_0x6cda('0x22')]:typeof _0xb5ada7[_0x6cda('0x22')]===_0x6cda('0x23')?[_0xb5ada7[_0x6cda('0x22')]]:[];var _0x491123=_0xb5ada7[_0x6cda('0x24')]||undefined;var _0x1fad1c=![];if(_0x481121['length']){logger[_0x6cda('0x10')](util[_0x6cda('0x1b')](_0x6cda('0x25'),_0x481121[_0x6cda('0x1e')](';\x20')));}if(_0x491123){logger[_0x6cda('0x10')](util[_0x6cda('0x1b')]('IntervalIftime:\x20timezone\x20=\x20%s',_0x491123));}logger[_0x6cda('0x12')](_0x6cda('0x26'),_0x1fad1c);logger['silly'](_0x6cda('0x20'),_0xb5ada7);return Promise[_0x6cda('0x27')]()['then'](function(){if(Array['isArray'](_0x321e80)){return checkArrayOfIntervals(_0x321e80,_0x491123);}else if(_0x321e80){return checkSingleInterval(_0x321e80,_0x491123);}})['then'](function(_0x540e82){var _0x296303=_0x481121[_0x6cda('0x1a')](function(_0x2e4a1b,_0xd837a4){return _0x2e4a1b||iftime(_0xd837a4,_0x491123);},![]);_0x1fad1c=_0x540e82||_0x296303;return _0x1fad1c;})[_0x6cda('0x14')](function(_0x2fa73b){logger[_0x6cda('0x15')](_0x6cda('0x20'),_0xb5ada7,_0x2fa73b);throw this[_0x6cda('0x15')](0x1f4,_0x2fa73b[_0x6cda('0x16')]);});};
\ No newline at end of file
+var _0x586d=['include','then','info','debug','catch','error','message','ShowInterval','findAll','all','ifTime','reduce','name','join','findById','format','IntervalIftime:\x20interval\x20=\x20%s\x20(id\x20=\x20%s)','IntervalIftime','intervalIds','isArray','intervals','string','timezone','length','IntervalIftime:\x20timezone\x20=\x20%s','Iftime','silly','resolve','lodash','util','../../mysqldb','../../config/logger','rpc','GetInterval','Interval','options','raw','where','attributes','limit','map','model'];(function(_0x569b14,_0x43b062){var _0x3cd67a=function(_0x6a3add){while(--_0x6a3add){_0x569b14['push'](_0x569b14['shift']());}};_0x3cd67a(++_0x43b062);}(_0x586d,0x16c));var _0xd586=function(_0x4e1906,_0x3be1a8){_0x4e1906=_0x4e1906-0x0;var _0x24e3e5=_0x586d[_0x4e1906];return _0x24e3e5;};'use strict';var _=require(_0xd586('0x0'));var util=require(_0xd586('0x1'));var db=require(_0xd586('0x2'))['db'];var iftime=require('../../utils/iftime')['iftime'];var logger=require(_0xd586('0x3'))(_0xd586('0x4'));exports[_0xd586('0x5')]=function(_0x33dda4){var _0x3be729=this;return new Promise(function(_0x455642,_0xe0d1e3){return db[_0xd586('0x6')]['findAll']({'raw':_0x33dda4['options']?_0x33dda4[_0xd586('0x7')][_0xd586('0x8')]===undefined?!![]:![]:!![],'where':_0x33dda4['options']?_0x33dda4[_0xd586('0x7')][_0xd586('0x9')]||null:null,'attributes':_0x33dda4[_0xd586('0x7')]?_0x33dda4['options'][_0xd586('0xa')]||null:null,'limit':_0x33dda4[_0xd586('0x7')]?_0x33dda4[_0xd586('0x7')][_0xd586('0xb')]||null:null,'include':_0x33dda4[_0xd586('0x7')]?_0x33dda4['options']['include']?_[_0xd586('0xc')](_0x33dda4[_0xd586('0x7')]['include'],function(_0x27dd58){return{'model':db[_0x27dd58[_0xd586('0xd')]],'as':_0x27dd58['as'],'attributes':_0x27dd58[_0xd586('0xa')],'include':_0x27dd58['include']?_['map'](_0x27dd58[_0xd586('0xe')],function(_0x3b9ae5){return{'model':db[_0x3b9ae5['model']],'as':_0x3b9ae5['as'],'attributes':_0x3b9ae5[_0xd586('0xa')],'include':_0x3b9ae5['include']?_[_0xd586('0xc')](_0x3b9ae5[_0xd586('0xe')],function(_0x463830){return{'model':db[_0x463830[_0xd586('0xd')]],'as':_0x463830['as'],'attributes':_0x463830[_0xd586('0xa')]};}):[]};}):[]};}):[]:[]})[_0xd586('0xf')](function(_0x147a5b){logger[_0xd586('0x10')](_0xd586('0x5'),_0x33dda4);logger[_0xd586('0x11')](_0xd586('0x5'),_0x33dda4,JSON['stringify'](_0x147a5b));_0x455642(_0x147a5b);})[_0xd586('0x12')](function(_0x205967){logger[_0xd586('0x13')]('GetInterval',_0x205967['message'],_0x33dda4);_0xe0d1e3(_0x3be729[_0xd586('0x13')](0x1f4,_0x205967[_0xd586('0x14')]));});});};exports[_0xd586('0x15')]=function(_0x308b59){var _0xd717dd=this;return new Promise(function(_0x26dc2f,_0x24e43f){return db[_0xd586('0x6')]['find']({'raw':_0x308b59[_0xd586('0x7')]?_0x308b59[_0xd586('0x7')][_0xd586('0x8')]===undefined?!![]:![]:!![],'where':_0x308b59['options']?_0x308b59[_0xd586('0x7')][_0xd586('0x9')]||null:null,'attributes':_0x308b59[_0xd586('0x7')]?_0x308b59['options'][_0xd586('0xa')]||null:null,'include':_0x308b59[_0xd586('0x7')]?_0x308b59['options'][_0xd586('0xe')]?_[_0xd586('0xc')](_0x308b59['options'][_0xd586('0xe')],function(_0x3c4809){return{'model':db[_0x3c4809[_0xd586('0xd')]],'as':_0x3c4809['as'],'attributes':_0x3c4809['attributes'],'include':_0x3c4809[_0xd586('0xe')]?_[_0xd586('0xc')](_0x3c4809['include'],function(_0xb89b9b){return{'model':db[_0xb89b9b[_0xd586('0xd')]],'as':_0xb89b9b['as'],'attributes':_0xb89b9b[_0xd586('0xa')],'include':_0xb89b9b[_0xd586('0xe')]?_[_0xd586('0xc')](_0xb89b9b[_0xd586('0xe')],function(_0x4f094e){return{'model':db[_0x4f094e[_0xd586('0xd')]],'as':_0x4f094e['as'],'attributes':_0x4f094e['attributes']};}):[]};}):[]};}):[]:[]})[_0xd586('0xf')](function(_0x359250){logger[_0xd586('0x10')](_0xd586('0x15'),_0x308b59);logger['debug'](_0xd586('0x15'),_0x308b59,JSON['stringify'](_0x359250));_0x26dc2f(_0x359250);})[_0xd586('0x12')](function(_0x5f3265){logger[_0xd586('0x13')](_0xd586('0x15'),_0x5f3265[_0xd586('0x14')],_0x308b59);_0x24e43f(_0xd717dd[_0xd586('0x13')](0x1f4,_0x5f3265[_0xd586('0x14')]));});});};function checkArrayOfIntervals(_0x4bed68,_0x494686){var _0x15bd50=[];return db['Interval'][_0xd586('0x16')]({'where':{'id':_0x4bed68}})[_0xd586('0xf')](function(_0x5daf67){_0x15bd50=_0x5daf67;return Promise[_0xd586('0x17')](_0x15bd50[_0xd586('0xc')](function(_0x38ab47){return _0x38ab47[_0xd586('0x18')](_0x494686);}));})[_0xd586('0xf')](function(_0x4d0baa){var _0x8bb677=_0x4d0baa[_0xd586('0x19')](function(_0x9c8c85,_0x3d7fa8){return _0x9c8c85||_0x3d7fa8;},![]);logger[_0xd586('0x10')](util['format']('IntervalIftime:\x20intervals\x20=\x20%s\x20(ids\x20=\x20%s)',_0x15bd50[_0xd586('0xc')](function(_0x6ebcaa){return _0x6ebcaa[_0xd586('0x1a')];})['join'](',\x20'),_0x15bd50[_0xd586('0xc')](function(_0x29bbd2){return _0x29bbd2['id'];})[_0xd586('0x1b')](',\x20')));return _0x8bb677;});}function checkSingleInterval(_0x4c1519,_0x50adda){return db[_0xd586('0x6')][_0xd586('0x1c')](_0x4c1519)[_0xd586('0xf')](function(_0x240e4e){if(_0x240e4e){logger[_0xd586('0x10')](util[_0xd586('0x1d')](_0xd586('0x1e'),_0x240e4e[_0xd586('0x1a')],_0x240e4e['id']));return _0x240e4e[_0xd586('0x18')](_0x50adda);}});}exports[_0xd586('0x1f')]=function(_0x4bbb18){var _0x3aae76=_0x4bbb18[_0xd586('0x20')];var _0x10e3dc=Array[_0xd586('0x21')](_0x4bbb18['intervals'])?_0x4bbb18[_0xd586('0x22')]:typeof _0x4bbb18[_0xd586('0x22')]===_0xd586('0x23')?[_0x4bbb18[_0xd586('0x22')]]:[];var _0x1c8eed=_0x4bbb18[_0xd586('0x24')]||undefined;var _0x2978be=![];if(_0x10e3dc[_0xd586('0x25')]){logger['info'](util[_0xd586('0x1d')]('IntervalIftime:\x20interval\x20strings\x20=\x20%s',_0x10e3dc[_0xd586('0x1b')](';\x20')));}if(_0x1c8eed){logger[_0xd586('0x10')](util[_0xd586('0x1d')](_0xd586('0x26'),_0x1c8eed));}logger[_0xd586('0x11')](_0xd586('0x27'),_0x2978be);logger[_0xd586('0x28')](_0xd586('0x1f'),_0x4bbb18);return Promise[_0xd586('0x29')]()['then'](function(){if(Array[_0xd586('0x21')](_0x3aae76)){return checkArrayOfIntervals(_0x3aae76,_0x1c8eed);}else if(_0x3aae76){return checkSingleInterval(_0x3aae76,_0x1c8eed);}})[_0xd586('0xf')](function(_0x17588b){var _0x4d899b=_0x10e3dc[_0xd586('0x19')](function(_0x28acaf,_0x2ee4ea){return _0x28acaf||iftime(_0x2ee4ea,_0x1c8eed);},![]);_0x2978be=_0x17588b||_0x4d899b;return _0x2978be;})[_0xd586('0x12')](function(_0x2e3750){logger[_0xd586('0x13')](_0xd586('0x1f'),_0x4bbb18,_0x2e3750);throw this[_0xd586('0x13')](0x1f4,_0x2e3750[_0xd586('0x14')]);});};
\ No newline at end of file
index 36ccd5f..5b428fd 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(_0x145208,_0x2f9490){var _0x2533f5=function(_0x2d2cd0){while(--_0x2d2cd0){_0x145208['push'](_0x145208['shift']());}};_0x2533f5(++_0x2f9490);}(_0x2032,0xd9));var _0x2203=function(_0x2238af,_0x304b1b){_0x2238af=_0x2238af-0x0;var _0x20fb2e=_0x2032[_0x2238af];return _0x20fb2e;};'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 _0x5f2f=['isAuthenticated','send','exports','express','Router','../../components/auth/service','./jira.controller','post'];(function(_0x2e9def,_0x72eee0){var _0x5ed655=function(_0x5f2187){while(--_0x5f2187){_0x2e9def['push'](_0x2e9def['shift']());}};_0x5ed655(++_0x72eee0);}(_0x5f2f,0x73));var _0xf5f2=function(_0x608bdb,_0x22ed98){_0x608bdb=_0x608bdb-0x0;var _0x9752b3=_0x5f2f[_0x608bdb];return _0x9752b3;};'use strict';var express=require(_0xf5f2('0x0'));var router=express[_0xf5f2('0x1')]();var auth=require(_0xf5f2('0x2'));var controller=require(_0xf5f2('0x3'));router[_0xf5f2('0x4')]('/',auth[_0xf5f2('0x5')](),controller[_0xf5f2('0x6')]);module[_0xf5f2('0x7')]=router;
\ No newline at end of file
index 470dab8..08c4e5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0691=['description','stringify','issuetype','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','customfield_11503','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','application/json','Basic\x20','toString','base64','request','setEncoding','utf8','end','status','statusCode','error','json','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','write','send','body','connection','remoteAddress','socket','https','../../config/logger','3eAmWpBVP0','key','MOTGUI','Report','\x20from\x20'];(function(_0xc4c1e8,_0x2522e3){var _0xc1bc3e=function(_0x4b99f4){while(--_0x4b99f4){_0xc4c1e8['push'](_0xc4c1e8['shift']());}};_0xc1bc3e(++_0x2522e3);}(_0x0691,0x77));var _0x1069=function(_0x47e8d1,_0x3852f4){_0x47e8d1=_0x47e8d1-0x0;var _0x589536=_0x0691[_0x47e8d1];return _0x589536;};'use strict';var BPromise=require('bluebird');var https=require(_0x1069('0x0'));var logger=require(_0x1069('0x1'))('api');var USERNAME='support';var PASSWORD=_0x1069('0x2');function openIssue(_0x4c0bc4,_0x406c9e){var _0x1f32fc={'fields':{'project':{'key':_0x4c0bc4[_0x1069('0x3')]||_0x1069('0x4')},'summary':(_0x4c0bc4['summary']||_0x1069('0x5'))+_0x1069('0x6')+_0x4c0bc4['ip'],'description':_0x4c0bc4[_0x1069('0x7')]||JSON[_0x1069('0x8')](_0x4c0bc4),'issuetype':{'name':_0x4c0bc4[_0x1069('0x9')]||'Bug'}}};_0x1f32fc[_0x1069('0xa')][_0x1069('0xb')]=_0x4c0bc4[_0x1069('0xc')];_0x1f32fc['fields'][_0x1069('0xd')]=_0x4c0bc4[_0x1069('0xe')];_0x1f32fc[_0x1069('0xa')][_0x1069('0xf')]=_0x4c0bc4['newToken'];_0x1f32fc['fields'][_0x1069('0x10')]=_0x4c0bc4['name'];_0x1f32fc['fields'][_0x1069('0x11')]=_0x4c0bc4[_0x1069('0x12')];_0x1f32fc[_0x1069('0xa')][_0x1069('0x13')]=_0x4c0bc4['ip'];var _0x1f1260={'host':_0x1069('0x14'),'port':0x1bb,'path':_0x1069('0x15'),'method':_0x1069('0x16'),'timeout':0x4e20,'headers':{'Content-Type':_0x1069('0x17'),'Authorization':_0x1069('0x18')+new Buffer(USERNAME+':'+PASSWORD)[_0x1069('0x19')](_0x1069('0x1a'))}};var _0x40e728=JSON[_0x1069('0x8')](_0x1f32fc);var _0x1ff476=https[_0x1069('0x1b')](_0x1f1260,function(_0x579d5c){_0x579d5c[_0x1069('0x1c')](_0x1069('0x1d'));var _0x4782b0='';_0x579d5c['on']('data',function(_0x38e708){_0x4782b0+=_0x38e708;});_0x579d5c['on'](_0x1069('0x1e'),function(){if(_0x406c9e){return _0x406c9e[_0x1069('0x1f')](_0x579d5c[_0x1069('0x20')])['json'](JSON['parse'](_0x4782b0));}});});_0x1ff476['on'](_0x1069('0x21'),function(_0x560141){if(_0x406c9e){return _0x406c9e['status'](0x1f4)[_0x1069('0x22')]({'errors':[{'message':_0x1069('0x23'),'type':'api.jira'}]});}});_0x1ff476[_0x1069('0x24')](_0x40e728);_0x1ff476[_0x1069('0x1e')]();}exports['openIssue']=openIssue;exports[_0x1069('0x25')]=function(_0x522749,_0x44fe4e){_0x522749[_0x1069('0x26')]['ip']=_0x522749['headers']['x-forwarded-for']||_0x522749[_0x1069('0x27')]['remoteAddress']||_0x522749['socket'][_0x1069('0x28')]||_0x522749[_0x1069('0x27')][_0x1069('0x29')][_0x1069('0x28')];return openIssue(_0x522749[_0x1069('0x26')],_0x44fe4e);};
\ No newline at end of file
+var _0x6104=['summary','Report','\x20from\x20','description','issuetype','Bug','fields','customfield_11500','oldToken','customfield_11502','name','customfield_11504','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','application/json','toString','base64','stringify','request','setEncoding','data','status','statusCode','json','parse','error','api.jira','write','end','send','body','headers','x-forwarded-for','connection','socket','remoteAddress','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','MOTGUI'];(function(_0x5ea124,_0x3489b4){var _0x299e65=function(_0x11c483){while(--_0x11c483){_0x5ea124['push'](_0x5ea124['shift']());}};_0x299e65(++_0x3489b4);}(_0x6104,0x1bb));var _0x4610=function(_0x127e8c,_0x46b235){_0x127e8c=_0x127e8c-0x0;var _0x1198af=_0x6104[_0x127e8c];return _0x1198af;};'use strict';var BPromise=require(_0x4610('0x0'));var https=require(_0x4610('0x1'));var logger=require(_0x4610('0x2'))(_0x4610('0x3'));var USERNAME=_0x4610('0x4');var PASSWORD=_0x4610('0x5');function openIssue(_0x1a29f3,_0x36c210){var _0x163820={'fields':{'project':{'key':_0x1a29f3['key']||_0x4610('0x6')},'summary':(_0x1a29f3[_0x4610('0x7')]||_0x4610('0x8'))+_0x4610('0x9')+_0x1a29f3['ip'],'description':_0x1a29f3[_0x4610('0xa')]||JSON['stringify'](_0x1a29f3),'issuetype':{'name':_0x1a29f3[_0x4610('0xb')]||_0x4610('0xc')}}};_0x163820[_0x4610('0xd')][_0x4610('0xe')]=_0x1a29f3['email'];_0x163820[_0x4610('0xd')]['customfield_11501']=_0x1a29f3[_0x4610('0xf')];_0x163820[_0x4610('0xd')][_0x4610('0x10')]=_0x1a29f3['newToken'];_0x163820[_0x4610('0xd')]['customfield_11503']=_0x1a29f3[_0x4610('0x11')];_0x163820[_0x4610('0xd')][_0x4610('0x12')]=_0x1a29f3['reason'];_0x163820[_0x4610('0xd')][_0x4610('0x13')]=_0x1a29f3['ip'];var _0x1cad55={'host':_0x4610('0x14'),'port':0x1bb,'path':_0x4610('0x15'),'method':_0x4610('0x16'),'timeout':0x4e20,'headers':{'Content-Type':_0x4610('0x17'),'Authorization':'Basic\x20'+new Buffer(USERNAME+':'+PASSWORD)[_0x4610('0x18')](_0x4610('0x19'))}};var _0x33c3af=JSON[_0x4610('0x1a')](_0x163820);var _0x135790=https[_0x4610('0x1b')](_0x1cad55,function(_0x1588c8){_0x1588c8[_0x4610('0x1c')]('utf8');var _0x407a89='';_0x1588c8['on'](_0x4610('0x1d'),function(_0x4bbe34){_0x407a89+=_0x4bbe34;});_0x1588c8['on']('end',function(){if(_0x36c210){return _0x36c210[_0x4610('0x1e')](_0x1588c8[_0x4610('0x1f')])[_0x4610('0x20')](JSON[_0x4610('0x21')](_0x407a89));}});});_0x135790['on'](_0x4610('0x22'),function(_0x2c235d){if(_0x36c210){return _0x36c210[_0x4610('0x1e')](0x1f4)['json']({'errors':[{'message':'Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','type':_0x4610('0x23')}]});}});_0x135790[_0x4610('0x24')](_0x33c3af);_0x135790[_0x4610('0x25')]();}exports['openIssue']=openIssue;exports[_0x4610('0x26')]=function(_0x42c933,_0x2bea15){_0x42c933[_0x4610('0x27')]['ip']=_0x42c933[_0x4610('0x28')][_0x4610('0x29')]||_0x42c933[_0x4610('0x2a')]['remoteAddress']||_0x42c933[_0x4610('0x2b')][_0x4610('0x2c')]||_0x42c933[_0x4610('0x2a')][_0x4610('0x2b')][_0x4610('0x2c')];return openIssue(_0x42c933[_0x4610('0x27')],_0x2bea15);};
\ No newline at end of file
index 986c25b..a8a6077 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ea3=['multer','util','path','connect-timeout','Router','../../components/auth/service','./jscriptyAnswerReport.controller','get','isAuthenticated','index','/describe','/:id','post','update','destroy','exports'];(function(_0x4e4a09,_0xe4eac8){var _0x17a756=function(_0x23b5ef){while(--_0x23b5ef){_0x4e4a09['push'](_0x4e4a09['shift']());}};_0x17a756(++_0xe4eac8);}(_0x4ea3,0x70));var _0x34ea=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x4ea3[_0x618414];return _0x21c19a;};'use strict';var multer=require(_0x34ea('0x0'));var util=require(_0x34ea('0x1'));var path=require(_0x34ea('0x2'));var timeout=require(_0x34ea('0x3'));var express=require('express');var router=express[_0x34ea('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x34ea('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x34ea('0x6'));router[_0x34ea('0x7')]('/',auth[_0x34ea('0x8')](),controller[_0x34ea('0x9')]);router[_0x34ea('0x7')](_0x34ea('0xa'),auth[_0x34ea('0x8')](),controller['describe']);router[_0x34ea('0x7')](_0x34ea('0xb'),auth[_0x34ea('0x8')](),controller['show']);router[_0x34ea('0xc')]('/',auth[_0x34ea('0x8')](),controller['create']);router['put'](_0x34ea('0xb'),auth[_0x34ea('0x8')](),controller[_0x34ea('0xd')]);router['delete'](_0x34ea('0xb'),auth[_0x34ea('0x8')](),controller[_0x34ea('0xe')]);module[_0x34ea('0xf')]=router;
\ No newline at end of file
+var _0x70e0=['util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','isAuthenticated','describe','get','/:id','show','post','put','update','delete','destroy','exports','multer'];(function(_0x3f1d10,_0x36d20c){var _0x5c56a4=function(_0x4dbd2b){while(--_0x4dbd2b){_0x3f1d10['push'](_0x3f1d10['shift']());}};_0x5c56a4(++_0x36d20c);}(_0x70e0,0x17b));var _0x070e=function(_0x2427f4,_0xa3dc79){_0x2427f4=_0x2427f4-0x0;var _0x57a0b7=_0x70e0[_0x2427f4];return _0x57a0b7;};'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'](),controller['create']);router[_0x070e('0xe')](_0x070e('0xb'),auth[_0x070e('0x8')](),controller[_0x070e('0xf')]);router[_0x070e('0x10')](_0x070e('0xb'),auth[_0x070e('0x8')](),controller[_0x070e('0x11')]);module[_0x070e('0x12')]=router;
\ No newline at end of file
index a7d0b83..65dd1ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0x7a54,0x106));var _0x47a5=function(_0x3848c1,_0x2d1acf){_0x3848c1=_0x3848c1-0x0;var _0xb83383=_0x7a54[_0x3848c1];return _0xb83383;};'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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x7a54,0x106));var _0x47a5=function(_0x2c55e4,_0x2c8b3d){_0x2c55e4=_0x2c55e4-0x0;var _0x2fc33b=_0x7a54[_0x2c55e4];return _0x2fc33b;};'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 a44beac..1287762 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb934=['mustache','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','stack','name','send','index','map','fieldName','type','key','model','query','keys','intersection','attributes','fields','nolimit','order','sort','filters','filter','where','merge','options','includeAll','include','JscriptyAnswerReport','rows','catch','show','rawAttributes','length','find','create','body','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird'];(function(_0x2ad36d,_0x3991ea){var _0x1c9aec=function(_0x33490f){while(--_0x33490f){_0x2ad36d['push'](_0x2ad36d['shift']());}};_0x1c9aec(++_0x3991ea);}(_0xb934,0x92));var _0x4b93=function(_0x3c0b2e,_0x440489){_0x3c0b2e=_0x3c0b2e-0x0;var _0xf26e0=_0xb934[_0x3c0b2e];return _0xf26e0;};'use strict';var emlformat=require(_0x4b93('0x0'));var rimraf=require(_0x4b93('0x1'));var zipdir=require(_0x4b93('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4b93('0x3'));var moment=require(_0x4b93('0x4'));var BPromise=require(_0x4b93('0x5'));var Mustache=require(_0x4b93('0x6'));var util=require(_0x4b93('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x4b93('0x8'));var ejs=require(_0x4b93('0x9'));var fs=require('fs');var fs_extra=require(_0x4b93('0xa'));var _=require(_0x4b93('0xb'));var squel=require('squel');var crypto=require(_0x4b93('0xc'));var jsforce=require(_0x4b93('0xd'));var deskjs=require(_0x4b93('0xe'));var toCsv=require(_0x4b93('0x8'));var querystring=require(_0x4b93('0xf'));var Papa=require(_0x4b93('0x10'));var Redis=require(_0x4b93('0x11'));var authService=require(_0x4b93('0x12'));var qs=require(_0x4b93('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4b93('0x14'));var logger=require(_0x4b93('0x15'))(_0x4b93('0x16'));var utils=require(_0x4b93('0x17'));var config=require(_0x4b93('0x18'));var licenseUtil=require(_0x4b93('0x19'));var db=require(_0x4b93('0x1a'))['db'];function respondWithStatusCode(_0x68be2e,_0xae64c){_0xae64c=_0xae64c||0xcc;return function(_0x28bebf){if(_0x28bebf){return _0x68be2e[_0x4b93('0x1b')](_0xae64c);}return _0x68be2e[_0x4b93('0x1c')](_0xae64c)[_0x4b93('0x1d')]();};}function respondWithResult(_0x3f4db7,_0x11dd47){_0x11dd47=_0x11dd47||0xc8;return function(_0x4f7c7a){if(_0x4f7c7a){return _0x3f4db7[_0x4b93('0x1c')](_0x11dd47)[_0x4b93('0x1e')](_0x4f7c7a);}};}function respondWithFilteredResult(_0xbc5eb1,_0x53eb43){return function(_0x19a9d5){if(_0x19a9d5){var _0x387a16=typeof _0x53eb43[_0x4b93('0x1f')]===_0x4b93('0x20')&&typeof _0x53eb43[_0x4b93('0x21')]==='undefined';var _0x67669d=_0x19a9d5[_0x4b93('0x22')];var _0x554c16=_0x387a16?0x0:_0x53eb43['offset'];var _0x11a1f3=_0x387a16?_0x19a9d5[_0x4b93('0x22')]:_0x53eb43[_0x4b93('0x1f')]+_0x53eb43[_0x4b93('0x21')];var _0x2899cb;if(_0x11a1f3>=_0x67669d){_0x11a1f3=_0x67669d;_0x2899cb=0xc8;}else{_0x2899cb=0xce;}_0xbc5eb1[_0x4b93('0x1c')](_0x2899cb);return _0xbc5eb1[_0x4b93('0x23')](_0x4b93('0x24'),_0x554c16+'-'+_0x11a1f3+'/'+_0x67669d)[_0x4b93('0x1e')](_0x19a9d5);}return null;};}function patchUpdates(_0x36bf8a){return function(_0x2c750e){try{jsonpatch['apply'](_0x2c750e,_0x36bf8a,!![]);}catch(_0x5798d3){return BPromise['reject'](_0x5798d3);}return _0x2c750e['save']();};}function saveUpdates(_0x5b8cd6,_0x15f204){return function(_0x4b7858){if(_0x4b7858){return _0x4b7858[_0x4b93('0x25')](_0x5b8cd6)[_0x4b93('0x26')](function(_0x40e9a3){return _0x40e9a3;});}return null;};}function removeEntity(_0x3c443b,_0x36c610){return function(_0x135c6a){if(_0x135c6a){return _0x135c6a[_0x4b93('0x27')]()[_0x4b93('0x26')](function(){_0x3c443b['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1a74eb,_0x4fff6a){return function(_0x118afb){if(!_0x118afb){_0x1a74eb['sendStatus'](0x194);}return _0x118afb;};}function handleError(_0x352f08,_0x5a0a76){_0x5a0a76=_0x5a0a76||0x1f4;return function(_0x5ec0af){logger[_0x4b93('0x28')](_0x5ec0af[_0x4b93('0x29')]);if(_0x5ec0af[_0x4b93('0x2a')]){delete _0x5ec0af[_0x4b93('0x2a')];}_0x352f08[_0x4b93('0x1c')](_0x5a0a76)[_0x4b93('0x2b')](_0x5ec0af);};}exports[_0x4b93('0x2c')]=function(_0x43b5b7,_0x4c457b){var _0x2bff36={},_0x2a86e0={},_0x3411d5={'count':0x0,'rows':[]};var _0x567cf0=_[_0x4b93('0x2d')](db['JscriptyAnswerReport']['rawAttributes'],function(_0x339c18){return{'name':_0x339c18[_0x4b93('0x2e')],'type':_0x339c18[_0x4b93('0x2f')][_0x4b93('0x30')]};});_0x2a86e0[_0x4b93('0x31')]=_[_0x4b93('0x2d')](_0x567cf0,_0x4b93('0x2a'));_0x2a86e0[_0x4b93('0x32')]=_[_0x4b93('0x33')](_0x43b5b7[_0x4b93('0x32')]);_0x2a86e0['filters']=_[_0x4b93('0x34')](_0x2a86e0['model'],_0x2a86e0['query']);_0x2bff36[_0x4b93('0x35')]=_[_0x4b93('0x34')](_0x2a86e0[_0x4b93('0x31')],qs[_0x4b93('0x36')](_0x43b5b7[_0x4b93('0x32')][_0x4b93('0x36')]));_0x2bff36[_0x4b93('0x35')]=_0x2bff36[_0x4b93('0x35')]['length']?_0x2bff36[_0x4b93('0x35')]:_0x2a86e0[_0x4b93('0x31')];if(!_0x43b5b7['query']['hasOwnProperty'](_0x4b93('0x37'))){_0x2bff36[_0x4b93('0x21')]=qs[_0x4b93('0x21')](_0x43b5b7[_0x4b93('0x32')][_0x4b93('0x21')]);_0x2bff36['offset']=qs[_0x4b93('0x1f')](_0x43b5b7[_0x4b93('0x32')][_0x4b93('0x1f')]);}_0x2bff36[_0x4b93('0x38')]=qs[_0x4b93('0x39')](_0x43b5b7[_0x4b93('0x32')]['sort']);_0x2bff36['where']=qs['filters'](_['pick'](_0x43b5b7[_0x4b93('0x32')],_0x2a86e0[_0x4b93('0x3a')]),_0x567cf0);if(_0x43b5b7['query'][_0x4b93('0x3b')]){_0x2bff36[_0x4b93('0x3c')]=_[_0x4b93('0x3d')](_0x2bff36[_0x4b93('0x3c')],{'$or':_['map'](_0x567cf0,function(_0x444623){if(_0x444623[_0x4b93('0x2f')]!=='VIRTUAL'){var _0x393cf9={};_0x393cf9[_0x444623['name']]={'$like':'%'+_0x43b5b7[_0x4b93('0x32')]['filter']+'%'};return _0x393cf9;}})});}_0x2bff36=_['merge']({},_0x2bff36,_0x43b5b7[_0x4b93('0x3e')]);var _0x36d50a={'where':_0x2bff36['where']};return db['JscriptyAnswerReport'][_0x4b93('0x22')](_0x36d50a)[_0x4b93('0x26')](function(_0x3ecf96){_0x3411d5[_0x4b93('0x22')]=_0x3ecf96;if(_0x43b5b7[_0x4b93('0x32')][_0x4b93('0x3f')]){_0x2bff36[_0x4b93('0x40')]=[{'all':!![]}];}return db[_0x4b93('0x41')]['findAll'](_0x2bff36);})[_0x4b93('0x26')](function(_0x4ff1ea){_0x3411d5[_0x4b93('0x42')]=_0x4ff1ea;return _0x3411d5;})['then'](respondWithFilteredResult(_0x4c457b,_0x2bff36))[_0x4b93('0x43')](handleError(_0x4c457b,null));};exports[_0x4b93('0x44')]=function(_0x1b9fad,_0x5a8c00){var _0x343f5a={'raw':!![],'where':{'id':_0x1b9fad['params']['id']}},_0xe1e51b={};_0xe1e51b['model']=_['keys'](db['JscriptyAnswerReport'][_0x4b93('0x45')]);_0xe1e51b[_0x4b93('0x32')]=_[_0x4b93('0x33')](_0x1b9fad[_0x4b93('0x32')]);_0xe1e51b['filters']=_['intersection'](_0xe1e51b[_0x4b93('0x31')],_0xe1e51b[_0x4b93('0x32')]);_0x343f5a['attributes']=_[_0x4b93('0x34')](_0xe1e51b[_0x4b93('0x31')],qs['fields'](_0x1b9fad['query'][_0x4b93('0x36')]));_0x343f5a[_0x4b93('0x35')]=_0x343f5a[_0x4b93('0x35')][_0x4b93('0x46')]?_0x343f5a[_0x4b93('0x35')]:_0xe1e51b[_0x4b93('0x31')];if(_0x1b9fad[_0x4b93('0x32')][_0x4b93('0x3f')]){_0x343f5a['include']=[{'all':!![]}];}_0x343f5a=_[_0x4b93('0x3d')]({},_0x343f5a,_0x1b9fad[_0x4b93('0x3e')]);return db[_0x4b93('0x41')][_0x4b93('0x47')](_0x343f5a)[_0x4b93('0x26')](handleEntityNotFound(_0x5a8c00,null))[_0x4b93('0x26')](respondWithResult(_0x5a8c00,null))[_0x4b93('0x43')](handleError(_0x5a8c00,null));};exports['create']=function(_0x58679c,_0x30a0f9){return db[_0x4b93('0x41')][_0x4b93('0x48')](_0x58679c['body'],{})[_0x4b93('0x26')](respondWithResult(_0x30a0f9,0xc9))['catch'](handleError(_0x30a0f9,null));};exports['update']=function(_0x43b777,_0x5aece5){if(_0x43b777[_0x4b93('0x49')]['id']){delete _0x43b777[_0x4b93('0x49')]['id'];}return db[_0x4b93('0x41')][_0x4b93('0x47')]({'where':{'id':_0x43b777[_0x4b93('0x4a')]['id']}})[_0x4b93('0x26')](handleEntityNotFound(_0x5aece5,null))[_0x4b93('0x26')](saveUpdates(_0x43b777[_0x4b93('0x49')],null))['then'](respondWithResult(_0x5aece5,null))[_0x4b93('0x43')](handleError(_0x5aece5,null));};exports[_0x4b93('0x27')]=function(_0x11eacc,_0x46c070){return db['JscriptyAnswerReport'][_0x4b93('0x47')]({'where':{'id':_0x11eacc[_0x4b93('0x4a')]['id']}})[_0x4b93('0x26')](handleEntityNotFound(_0x46c070,null))[_0x4b93('0x26')](removeEntity(_0x46c070,null))['catch'](handleError(_0x46c070,null));};exports['describe']=function(_0x31069a,_0x4b7806){return db[_0x4b93('0x41')][_0x4b93('0x4b')]()[_0x4b93('0x26')](respondWithResult(_0x4b7806,null))[_0x4b93('0x43')](handleError(_0x4b7806,null));};
\ No newline at end of file
+var _0x4074=['params','rawAttributes','intersection','include','find','catch','create','body','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','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','json','undefined','limit','count','offset','Content-Range','apply','save','update','destroy','error','stack','name','index','fieldName','type','key','model','map','query','keys','attributes','fields','length','nolimit','order','sort','filters','filter','merge','where','VIRTUAL','options','JscriptyAnswerReport','then','includeAll','findAll','rows','show'];(function(_0x1b4c36,_0x33c231){var _0x4765bc=function(_0x38440f){while(--_0x38440f){_0x1b4c36['push'](_0x1b4c36['shift']());}};_0x4765bc(++_0x33c231);}(_0x4074,0xf0));var _0x4407=function(_0x171a43,_0x432802){_0x171a43=_0x171a43-0x0;var _0x390180=_0x4074[_0x171a43];return _0x390180;};'use strict';var emlformat=require(_0x4407('0x0'));var rimraf=require(_0x4407('0x1'));var zipdir=require(_0x4407('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4407('0x3'));var moment=require(_0x4407('0x4'));var BPromise=require(_0x4407('0x5'));var Mustache=require(_0x4407('0x6'));var util=require(_0x4407('0x7'));var path=require(_0x4407('0x8'));var sox=require(_0x4407('0x9'));var csv=require(_0x4407('0xa'));var ejs=require(_0x4407('0xb'));var fs=require('fs');var fs_extra=require(_0x4407('0xc'));var _=require('lodash');var squel=require(_0x4407('0xd'));var crypto=require('crypto');var jsforce=require(_0x4407('0xe'));var deskjs=require(_0x4407('0xf'));var toCsv=require(_0x4407('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x4407('0x10'));var qs=require(_0x4407('0x11'));var as=require(_0x4407('0x12'));var hardwareService=require(_0x4407('0x13'));var logger=require(_0x4407('0x14'))(_0x4407('0x15'));var utils=require(_0x4407('0x16'));var config=require(_0x4407('0x17'));var licenseUtil=require(_0x4407('0x18'));var db=require(_0x4407('0x19'))['db'];function respondWithStatusCode(_0x14f398,_0x5d0c41){_0x5d0c41=_0x5d0c41||0xcc;return function(_0x3f8f23){if(_0x3f8f23){return _0x14f398[_0x4407('0x1a')](_0x5d0c41);}return _0x14f398['status'](_0x5d0c41)[_0x4407('0x1b')]();};}function respondWithResult(_0x4c62b9,_0x1d2ec8){_0x1d2ec8=_0x1d2ec8||0xc8;return function(_0x27724a){if(_0x27724a){return _0x4c62b9[_0x4407('0x1c')](_0x1d2ec8)[_0x4407('0x1d')](_0x27724a);}};}function respondWithFilteredResult(_0x1840dd,_0x417e19){return function(_0x1c5a0c){if(_0x1c5a0c){var _0x2e709f=typeof _0x417e19['offset']===_0x4407('0x1e')&&typeof _0x417e19[_0x4407('0x1f')]===_0x4407('0x1e');var _0x367d55=_0x1c5a0c[_0x4407('0x20')];var _0x5b50b7=_0x2e709f?0x0:_0x417e19[_0x4407('0x21')];var _0x54caa1=_0x2e709f?_0x1c5a0c[_0x4407('0x20')]:_0x417e19[_0x4407('0x21')]+_0x417e19[_0x4407('0x1f')];var _0x2db8b2;if(_0x54caa1>=_0x367d55){_0x54caa1=_0x367d55;_0x2db8b2=0xc8;}else{_0x2db8b2=0xce;}_0x1840dd[_0x4407('0x1c')](_0x2db8b2);return _0x1840dd['set'](_0x4407('0x22'),_0x5b50b7+'-'+_0x54caa1+'/'+_0x367d55)['json'](_0x1c5a0c);}return null;};}function patchUpdates(_0x36a948){return function(_0x28bb2c){try{jsonpatch[_0x4407('0x23')](_0x28bb2c,_0x36a948,!![]);}catch(_0x445fe6){return BPromise['reject'](_0x445fe6);}return _0x28bb2c[_0x4407('0x24')]();};}function saveUpdates(_0x1fa9f1,_0x137f8e){return function(_0x2c880a){if(_0x2c880a){return _0x2c880a[_0x4407('0x25')](_0x1fa9f1)['then'](function(_0xa7265d){return _0xa7265d;});}return null;};}function removeEntity(_0x16272f,_0x5e214c){return function(_0x21b048){if(_0x21b048){return _0x21b048[_0x4407('0x26')]()['then'](function(){_0x16272f[_0x4407('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x309274,_0x5386f4){return function(_0x40fb1e){if(!_0x40fb1e){_0x309274['sendStatus'](0x194);}return _0x40fb1e;};}function handleError(_0x374754,_0x4bf227){_0x4bf227=_0x4bf227||0x1f4;return function(_0x57ba27){logger[_0x4407('0x27')](_0x57ba27[_0x4407('0x28')]);if(_0x57ba27[_0x4407('0x29')]){delete _0x57ba27['name'];}_0x374754['status'](_0x4bf227)['send'](_0x57ba27);};}exports[_0x4407('0x2a')]=function(_0x2feb6b,_0x1f9828){var _0x84a8a={},_0x1d6b3d={},_0x37fba1={'count':0x0,'rows':[]};var _0x182bd9=_['map'](db['JscriptyAnswerReport']['rawAttributes'],function(_0x28e99e){return{'name':_0x28e99e[_0x4407('0x2b')],'type':_0x28e99e[_0x4407('0x2c')][_0x4407('0x2d')]};});_0x1d6b3d[_0x4407('0x2e')]=_[_0x4407('0x2f')](_0x182bd9,_0x4407('0x29'));_0x1d6b3d[_0x4407('0x30')]=_[_0x4407('0x31')](_0x2feb6b[_0x4407('0x30')]);_0x1d6b3d['filters']=_['intersection'](_0x1d6b3d[_0x4407('0x2e')],_0x1d6b3d[_0x4407('0x30')]);_0x84a8a[_0x4407('0x32')]=_['intersection'](_0x1d6b3d[_0x4407('0x2e')],qs[_0x4407('0x33')](_0x2feb6b[_0x4407('0x30')][_0x4407('0x33')]));_0x84a8a[_0x4407('0x32')]=_0x84a8a['attributes'][_0x4407('0x34')]?_0x84a8a['attributes']:_0x1d6b3d[_0x4407('0x2e')];if(!_0x2feb6b['query']['hasOwnProperty'](_0x4407('0x35'))){_0x84a8a[_0x4407('0x1f')]=qs[_0x4407('0x1f')](_0x2feb6b[_0x4407('0x30')][_0x4407('0x1f')]);_0x84a8a[_0x4407('0x21')]=qs[_0x4407('0x21')](_0x2feb6b['query'][_0x4407('0x21')]);}_0x84a8a[_0x4407('0x36')]=qs[_0x4407('0x37')](_0x2feb6b[_0x4407('0x30')][_0x4407('0x37')]);_0x84a8a['where']=qs[_0x4407('0x38')](_['pick'](_0x2feb6b[_0x4407('0x30')],_0x1d6b3d[_0x4407('0x38')]),_0x182bd9);if(_0x2feb6b[_0x4407('0x30')][_0x4407('0x39')]){_0x84a8a['where']=_[_0x4407('0x3a')](_0x84a8a[_0x4407('0x3b')],{'$or':_[_0x4407('0x2f')](_0x182bd9,function(_0x1bf4e2){if(_0x1bf4e2[_0x4407('0x2c')]!==_0x4407('0x3c')){var _0x30de66={};_0x30de66[_0x1bf4e2[_0x4407('0x29')]]={'$like':'%'+_0x2feb6b[_0x4407('0x30')]['filter']+'%'};return _0x30de66;}})});}_0x84a8a=_['merge']({},_0x84a8a,_0x2feb6b[_0x4407('0x3d')]);var _0xc47d0e={'where':_0x84a8a[_0x4407('0x3b')]};return db[_0x4407('0x3e')]['count'](_0xc47d0e)[_0x4407('0x3f')](function(_0x2cb65e){_0x37fba1[_0x4407('0x20')]=_0x2cb65e;if(_0x2feb6b['query'][_0x4407('0x40')]){_0x84a8a['include']=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0x4407('0x41')](_0x84a8a);})[_0x4407('0x3f')](function(_0x234fa5){_0x37fba1[_0x4407('0x42')]=_0x234fa5;return _0x37fba1;})[_0x4407('0x3f')](respondWithFilteredResult(_0x1f9828,_0x84a8a))['catch'](handleError(_0x1f9828,null));};exports[_0x4407('0x43')]=function(_0xf79768,_0x819b8b){var _0x15ba7b={'raw':!![],'where':{'id':_0xf79768[_0x4407('0x44')]['id']}},_0x5b41cf={};_0x5b41cf[_0x4407('0x2e')]=_[_0x4407('0x31')](db[_0x4407('0x3e')][_0x4407('0x45')]);_0x5b41cf['query']=_[_0x4407('0x31')](_0xf79768['query']);_0x5b41cf['filters']=_[_0x4407('0x46')](_0x5b41cf[_0x4407('0x2e')],_0x5b41cf['query']);_0x15ba7b[_0x4407('0x32')]=_[_0x4407('0x46')](_0x5b41cf[_0x4407('0x2e')],qs[_0x4407('0x33')](_0xf79768['query'][_0x4407('0x33')]));_0x15ba7b[_0x4407('0x32')]=_0x15ba7b[_0x4407('0x32')][_0x4407('0x34')]?_0x15ba7b[_0x4407('0x32')]:_0x5b41cf['model'];if(_0xf79768[_0x4407('0x30')][_0x4407('0x40')]){_0x15ba7b[_0x4407('0x47')]=[{'all':!![]}];}_0x15ba7b=_[_0x4407('0x3a')]({},_0x15ba7b,_0xf79768[_0x4407('0x3d')]);return db['JscriptyAnswerReport'][_0x4407('0x48')](_0x15ba7b)[_0x4407('0x3f')](handleEntityNotFound(_0x819b8b,null))[_0x4407('0x3f')](respondWithResult(_0x819b8b,null))[_0x4407('0x49')](handleError(_0x819b8b,null));};exports['create']=function(_0x18ff16,_0x2b18b8){return db['JscriptyAnswerReport'][_0x4407('0x4a')](_0x18ff16[_0x4407('0x4b')],{})['then'](respondWithResult(_0x2b18b8,0xc9))[_0x4407('0x49')](handleError(_0x2b18b8,null));};exports[_0x4407('0x25')]=function(_0x5ea36,_0x4fbc1f){if(_0x5ea36[_0x4407('0x4b')]['id']){delete _0x5ea36['body']['id'];}return db['JscriptyAnswerReport'][_0x4407('0x48')]({'where':{'id':_0x5ea36[_0x4407('0x44')]['id']}})['then'](handleEntityNotFound(_0x4fbc1f,null))[_0x4407('0x3f')](saveUpdates(_0x5ea36[_0x4407('0x4b')],null))[_0x4407('0x3f')](respondWithResult(_0x4fbc1f,null))[_0x4407('0x49')](handleError(_0x4fbc1f,null));};exports[_0x4407('0x26')]=function(_0x5a2c2b,_0x39865e){return db[_0x4407('0x3e')][_0x4407('0x48')]({'where':{'id':_0x5a2c2b[_0x4407('0x44')]['id']}})[_0x4407('0x3f')](handleEntityNotFound(_0x39865e,null))[_0x4407('0x3f')](removeEntity(_0x39865e,null))[_0x4407('0x49')](handleError(_0x39865e,null));};exports[_0x4407('0x4c')]=function(_0xd1dd66,_0x55f0ef){return db[_0x4407('0x3e')]['describe']()[_0x4407('0x3f')](respondWithResult(_0x55f0ef,null))[_0x4407('0x49')](handleError(_0x55f0ef,null));};
\ No newline at end of file
index d690aca..928b79a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85ba=['rimraf','../../config/environment','./jscriptyAnswerReport.attributes','exports','util','api','moment','request-promise','path'];(function(_0x1c3422,_0x1c5028){var _0xb8d51e=function(_0x1789df){while(--_0x1789df){_0x1c3422['push'](_0x1c3422['shift']());}};_0xb8d51e(++_0x1c5028);}(_0x85ba,0x199));var _0xa85b=function(_0x2d9c7d,_0xada73){_0x2d9c7d=_0x2d9c7d-0x0;var _0x23078f=_0x85ba[_0x2d9c7d];return _0x23078f;};'use strict';var _=require('lodash');var util=require(_0xa85b('0x0'));var logger=require('../../config/logger')(_0xa85b('0x1'));var moment=require(_0xa85b('0x2'));var BPromise=require('bluebird');var rp=require(_0xa85b('0x3'));var fs=require('fs');var path=require(_0xa85b('0x4'));var rimraf=require(_0xa85b('0x5'));var config=require(_0xa85b('0x6'));var attributes=require(_0xa85b('0x7'));module[_0xa85b('0x8')]=function(_0x22d515,_0x121b6d){return _0x22d515['define']('JscriptyAnswerReport',attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x40cf=['JscriptyAnswerReport','report_jscripty_answers','util','../../config/logger','api','bluebird','request-promise','../../config/environment','./jscriptyAnswerReport.attributes','exports','define'];(function(_0x28ad8b,_0x47975a){var _0x30d0b9=function(_0xa859a5){while(--_0xa859a5){_0x28ad8b['push'](_0x28ad8b['shift']());}};_0x30d0b9(++_0x47975a);}(_0x40cf,0x16d));var _0xf40c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x40cf[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xf40c('0x0'));var logger=require(_0xf40c('0x1'))(_0xf40c('0x2'));var moment=require('moment');var BPromise=require(_0xf40c('0x3'));var rp=require(_0xf40c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf40c('0x5'));var attributes=require(_0xf40c('0x6'));module[_0xf40c('0x7')]=function(_0x13b3dd,_0x525c77){return _0x13b3dd[_0xf40c('0x8')](_0xf40c('0x9'),attributes,{'tableName':_0xf40c('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 91e1263..b062d52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x099d=['http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x4d329f,_0x27fb44){var _0x17fd11=function(_0xcfc978){while(--_0xcfc978){_0x4d329f['push'](_0x4d329f['shift']());}};_0x17fd11(++_0x27fb44);}(_0x099d,0x157));var _0xd099=function(_0x2c6c39,_0x2a16df){_0x2c6c39=_0x2c6c39-0x0;var _0x30b48d=_0x099d[_0x2c6c39];return _0x30b48d;};'use strict';var _=require(_0xd099('0x0'));var util=require(_0xd099('0x1'));var moment=require(_0xd099('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd099('0x3'))['db'];var utils=require(_0xd099('0x4'));var logger=require(_0xd099('0x5'))(_0xd099('0x6'));var config=require(_0xd099('0x7'));var jayson=require(_0xd099('0x8'));var client=jayson['client'][_0xd099('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x48e0cd,_0x2f4104,_0x2c4ebc){return new BPromise(function(_0x4b497c,_0x422e98){return client[_0xd099('0xa')](_0x48e0cd,_0x2c4ebc)[_0xd099('0xb')](function(_0x4cdc94){logger[_0xd099('0xc')](_0xd099('0xd'),_0x2f4104,_0xd099('0xe'));logger[_0xd099('0xf')](_0xd099('0x10'),_0x2f4104,_0xd099('0xe'),JSON['stringify'](_0x4cdc94));if(_0x4cdc94[_0xd099('0x11')]){if(_0x4cdc94[_0xd099('0x11')][_0xd099('0x12')]===0x1f4){logger[_0xd099('0x11')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x2f4104,_0x4cdc94[_0xd099('0x11')][_0xd099('0x13')]);return _0x422e98(_0x4cdc94['error']['message']);}logger[_0xd099('0x11')](_0xd099('0xd'),_0x2f4104,_0x4cdc94[_0xd099('0x11')][_0xd099('0x13')]);return _0x4b497c(_0x4cdc94[_0xd099('0x11')][_0xd099('0x13')]);}else{logger[_0xd099('0xc')](_0xd099('0xd'),_0x2f4104,'request\x20sent');_0x4b497c(_0x4cdc94[_0xd099('0x14')][_0xd099('0x13')]);}})[_0xd099('0x15')](function(_0x4e1574){logger['error']('JscriptyAnswerReport,\x20%s,\x20%s',_0x2f4104,_0x4e1574);_0x422e98(_0x4e1574);});});}
\ No newline at end of file
+var _0xb924=['../../config/environment','jayson/promise','client','http','request','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x1cc0f7,_0x1a96b7){var _0x2db97c=function(_0x1987f7){while(--_0x1987f7){_0x1cc0f7['push'](_0x1cc0f7['shift']());}};_0x2db97c(++_0x1a96b7);}(_0xb924,0xb8));var _0x4b92=function(_0x1578f7,_0x290c60){_0x1578f7=_0x1578f7-0x0;var _0x39778c=_0xb924[_0x1578f7];return _0x39778c;};'use strict';var _=require('lodash');var util=require(_0x4b92('0x0'));var moment=require(_0x4b92('0x1'));var BPromise=require(_0x4b92('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4b92('0x3'));var db=require(_0x4b92('0x4'))['db'];var utils=require(_0x4b92('0x5'));var logger=require(_0x4b92('0x6'))(_0x4b92('0x7'));var config=require(_0x4b92('0x8'));var jayson=require(_0x4b92('0x9'));var client=jayson[_0x4b92('0xa')][_0x4b92('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52bc6c,_0x5d804f,_0x12c1b1){return new BPromise(function(_0x305daa,_0x3fee99){return client[_0x4b92('0xc')](_0x52bc6c,_0x12c1b1)['then'](function(_0x391588){logger[_0x4b92('0xd')](_0x4b92('0xe'),_0x5d804f,_0x4b92('0xf'));logger[_0x4b92('0x10')](_0x4b92('0x11'),_0x5d804f,_0x4b92('0xf'),JSON[_0x4b92('0x12')](_0x391588));if(_0x391588[_0x4b92('0x13')]){if(_0x391588['error'][_0x4b92('0x14')]===0x1f4){logger[_0x4b92('0x13')](_0x4b92('0xe'),_0x5d804f,_0x391588[_0x4b92('0x13')][_0x4b92('0x15')]);return _0x3fee99(_0x391588[_0x4b92('0x13')][_0x4b92('0x15')]);}logger['error'](_0x4b92('0xe'),_0x5d804f,_0x391588[_0x4b92('0x13')]['message']);return _0x305daa(_0x391588[_0x4b92('0x13')][_0x4b92('0x15')]);}else{logger['info'](_0x4b92('0xe'),_0x5d804f,_0x4b92('0xf'));_0x305daa(_0x391588[_0x4b92('0x16')][_0x4b92('0x15')]);}})[_0x4b92('0x17')](function(_0x1a5fe1){logger[_0x4b92('0x13')]('JscriptyAnswerReport,\x20%s,\x20%s',_0x5d804f,_0x1a5fe1);_0x3fee99(_0x1a5fe1);});});}
\ No newline at end of file
index bb33674..d03de67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87b6=['/:id','/:id/sessions','/:id/summary','30s','getSummary','post','/:id/clone','clone','put','update','delete','destroy','multer','util','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index'];(function(_0x3adf53,_0x22f84d){var _0x3cd7c8=function(_0x5d1833){while(--_0x5d1833){_0x3adf53['push'](_0x3adf53['shift']());}};_0x3cd7c8(++_0x22f84d);}(_0x87b6,0x9f));var _0x687b=function(_0x7148b6,_0xa61534){_0x7148b6=_0x7148b6-0x0;var _0x111019=_0x87b6[_0x7148b6];return _0x111019;};'use strict';var multer=require(_0x687b('0x0'));var util=require(_0x687b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x687b('0x2'));var router=express[_0x687b('0x3')]();var fs_extra=require(_0x687b('0x4'));var auth=require(_0x687b('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./jscriptyProject.controller');router[_0x687b('0x6')]('/',auth[_0x687b('0x7')](),controller[_0x687b('0x8')]);router[_0x687b('0x6')](_0x687b('0x9'),auth[_0x687b('0x7')](),controller['show']);router[_0x687b('0x6')](_0x687b('0xa'),auth[_0x687b('0x7')](),controller['getSessions']);router['get']('/:id/answers',auth['isAuthenticated'](),controller['getAnswers']);router[_0x687b('0x6')](_0x687b('0xb'),auth[_0x687b('0x7')](),timeout(_0x687b('0xc')),controller[_0x687b('0xd')]);router[_0x687b('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x687b('0xe')](_0x687b('0xf'),auth[_0x687b('0x7')](),controller[_0x687b('0x10')]);router[_0x687b('0x11')](_0x687b('0x9'),auth[_0x687b('0x7')](),controller[_0x687b('0x12')]);router[_0x687b('0x13')]('/:id',auth[_0x687b('0x7')](),controller[_0x687b('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x1297=['delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyProject.controller','get','index','isAuthenticated','getSessions','getAnswers','/:id/summary','30s','getSummary','post','put','/:id','update'];(function(_0x7cb10c,_0x2fcc3a){var _0x11df59=function(_0x75305f){while(--_0x75305f){_0x7cb10c['push'](_0x7cb10c['shift']());}};_0x11df59(++_0x2fcc3a);}(_0x1297,0x153));var _0x7129=function(_0x47f809,_0x10765d){_0x47f809=_0x47f809-0x0;var _0x4aff41=_0x1297[_0x47f809];return _0x4aff41;};'use strict';var multer=require(_0x7129('0x0'));var util=require('util');var path=require(_0x7129('0x1'));var timeout=require(_0x7129('0x2'));var express=require('express');var router=express[_0x7129('0x3')]();var fs_extra=require(_0x7129('0x4'));var auth=require(_0x7129('0x5'));var interaction=require(_0x7129('0x6'));var config=require(_0x7129('0x7'));var controller=require(_0x7129('0x8'));router[_0x7129('0x9')]('/',auth['isAuthenticated'](),controller[_0x7129('0xa')]);router[_0x7129('0x9')]('/:id',auth[_0x7129('0xb')](),controller['show']);router[_0x7129('0x9')]('/:id/sessions',auth[_0x7129('0xb')](),controller[_0x7129('0xc')]);router[_0x7129('0x9')]('/:id/answers',auth['isAuthenticated'](),controller[_0x7129('0xd')]);router[_0x7129('0x9')](_0x7129('0xe'),auth[_0x7129('0xb')](),timeout(_0x7129('0xf')),controller[_0x7129('0x10')]);router[_0x7129('0x11')]('/',auth[_0x7129('0xb')](),controller['create']);router['post']('/:id/clone',auth[_0x7129('0xb')](),controller['clone']);router[_0x7129('0x12')](_0x7129('0x13'),auth[_0x7129('0xb')](),controller[_0x7129('0x14')]);router[_0x7129('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x7129('0x16')]);module[_0x7129('0x17')]=router;
\ No newline at end of file
index 7fe436f..0acf049 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10c5=['lodash','util','exports','STRING','TEXT','long','isObjectLike','setDataValue','stringify','isString','formData','format','name','getDataValue','description','sequelize'];(function(_0x7150b,_0x21f408){var _0x1619ff=function(_0x28e9d8){while(--_0x28e9d8){_0x7150b['push'](_0x7150b['shift']());}};_0x1619ff(++_0x21f408);}(_0x10c5,0xdf));var _0x510c=function(_0x1523da,_0x8dd640){_0x1523da=_0x1523da-0x0;var _0x3a1d88=_0x10c5[_0x1523da];return _0x3a1d88;};'use strict';var Sequelize=require(_0x510c('0x0'));var _=require(_0x510c('0x1'));var util=require(_0x510c('0x2'));module[_0x510c('0x3')]={'name':{'type':Sequelize['STRING'],'unique':'name'},'description':{'type':Sequelize[_0x510c('0x4')]},'formData':{'type':Sequelize[_0x510c('0x5')](_0x510c('0x6')),'set':function(_0x4cd184){if(_[_0x510c('0x7')](_0x4cd184)){this[_0x510c('0x8')]('formData',JSON[_0x510c('0x9')](_0x4cd184));}else if(_[_0x510c('0xa')](_0x4cd184)){this[_0x510c('0x8')](_0x510c('0xb'),_0x4cd184);}else{this[_0x510c('0x8')](_0x510c('0xb'),util[_0x510c('0xc')]('{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}',this['getDataValue'](_0x510c('0xd'))||'',this[_0x510c('0xe')](_0x510c('0xf'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x18b3=['name','TEXT','long','isObjectLike','formData','stringify','isString','setDataValue','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','sequelize','util','exports','STRING'];(function(_0x4426fb,_0x535f38){var _0x77b54e=function(_0x427614){while(--_0x427614){_0x4426fb['push'](_0x4426fb['shift']());}};_0x77b54e(++_0x535f38);}(_0x18b3,0xec));var _0x318b=function(_0x5ca92b,_0x1cfef2){_0x5ca92b=_0x5ca92b-0x0;var _0x298df5=_0x18b3[_0x5ca92b];return _0x298df5;};'use strict';var Sequelize=require(_0x318b('0x0'));var _=require('lodash');var util=require(_0x318b('0x1'));module[_0x318b('0x2')]={'name':{'type':Sequelize[_0x318b('0x3')],'unique':_0x318b('0x4')},'description':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0x318b('0x5')](_0x318b('0x6')),'set':function(_0xe83357){if(_[_0x318b('0x7')](_0xe83357)){this['setDataValue'](_0x318b('0x8'),JSON[_0x318b('0x9')](_0xe83357));}else if(_[_0x318b('0xa')](_0xe83357)){this[_0x318b('0xb')]('formData',_0xe83357);}else{this[_0x318b('0xb')](_0x318b('0x8'),util[_0x318b('0xc')](_0x318b('0xd'),this[_0x318b('0xe')]('name')||'',this['getDataValue'](_0x318b('0xf'))||''));}}},'enableUncompleteSave':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index da4732d..981f13b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4eb8=['name','send','index','map','JscriptyProject','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','filters','pick','filter','where','merge','options','include','findAll','rows','show','params','includeAll','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Projects','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rawAttributes','omit','createdAt','updatedAt','getSessions','JscriptySessionReport','nolimit','ProjectId','getAnswers','findOne','JscriptyAnswerReport','fromCharCode','toString','indexOf','getSummary','startTime','parse','JscriptyQuestionReport','-createdAt','questionId','question','starttime','format','SessionId','push','isEmpty','now','/tmp/Jscripty_Project_%d_Summary_%s.csv','Content-disposition','setHeader','Content-type','text/csv','download','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','UserProfileResource','error'];(function(_0x2c46c3,_0x106b37){var _0x10d619=function(_0x42072e){while(--_0x42072e){_0x2c46c3['push'](_0x2c46c3['shift']());}};_0x10d619(++_0x106b37);}(_0x4eb8,0x1b5));var _0x84eb=function(_0x32f91b,_0x460016){_0x32f91b=_0x32f91b-0x0;var _0x3ee8f3=_0x4eb8[_0x32f91b];return _0x3ee8f3;};'use strict';var emlformat=require(_0x84eb('0x0'));var rimraf=require(_0x84eb('0x1'));var zipdir=require(_0x84eb('0x2'));var jsonpatch=require(_0x84eb('0x3'));var rp=require('request-promise');var moment=require(_0x84eb('0x4'));var BPromise=require(_0x84eb('0x5'));var Mustache=require(_0x84eb('0x6'));var util=require(_0x84eb('0x7'));var path=require(_0x84eb('0x8'));var sox=require(_0x84eb('0x9'));var csv=require(_0x84eb('0xa'));var ejs=require(_0x84eb('0xb'));var fs=require('fs');var fs_extra=require(_0x84eb('0xc'));var _=require('lodash');var squel=require(_0x84eb('0xd'));var crypto=require(_0x84eb('0xe'));var jsforce=require(_0x84eb('0xf'));var deskjs=require(_0x84eb('0x10'));var toCsv=require(_0x84eb('0xa'));var querystring=require(_0x84eb('0x11'));var Papa=require(_0x84eb('0x12'));var Redis=require(_0x84eb('0x13'));var authService=require(_0x84eb('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x84eb('0x15'));var hardwareService=require(_0x84eb('0x16'));var logger=require(_0x84eb('0x17'))(_0x84eb('0x18'));var utils=require('../../config/utils');var config=require(_0x84eb('0x19'));var licenseUtil=require(_0x84eb('0x1a'));var db=require(_0x84eb('0x1b'))['db'];function respondWithStatusCode(_0xf15f82,_0x24b04a){_0x24b04a=_0x24b04a||0xcc;return function(_0x57c8f7){if(_0x57c8f7){return _0xf15f82[_0x84eb('0x1c')](_0x24b04a);}return _0xf15f82[_0x84eb('0x1d')](_0x24b04a)[_0x84eb('0x1e')]();};}function respondWithResult(_0x10f4e1,_0x216068){_0x216068=_0x216068||0xc8;return function(_0x44783b){if(_0x44783b){return _0x10f4e1[_0x84eb('0x1d')](_0x216068)[_0x84eb('0x1f')](_0x44783b);}};}function respondWithFilteredResult(_0x2670ae,_0xb19d09){return function(_0x264565){if(_0x264565){var _0x2f2785=typeof _0xb19d09['offset']===_0x84eb('0x20')&&typeof _0xb19d09[_0x84eb('0x21')]===_0x84eb('0x20');var _0x522e7e=_0x264565['count'];var _0x5718a4=_0x2f2785?0x0:_0xb19d09['offset'];var _0x529357=_0x2f2785?_0x264565[_0x84eb('0x22')]:_0xb19d09[_0x84eb('0x23')]+_0xb19d09[_0x84eb('0x21')];var _0x5bac61;if(_0x529357>=_0x522e7e){_0x529357=_0x522e7e;_0x5bac61=0xc8;}else{_0x5bac61=0xce;}_0x2670ae[_0x84eb('0x1d')](_0x5bac61);return _0x2670ae[_0x84eb('0x24')](_0x84eb('0x25'),_0x5718a4+'-'+_0x529357+'/'+_0x522e7e)[_0x84eb('0x1f')](_0x264565);}return null;};}function patchUpdates(_0x26dcfd){return function(_0x37994b){try{jsonpatch[_0x84eb('0x26')](_0x37994b,_0x26dcfd,!![]);}catch(_0x5730fd){return BPromise[_0x84eb('0x27')](_0x5730fd);}return _0x37994b[_0x84eb('0x28')]();};}function saveUpdates(_0x4c62d7,_0x1e2e76){return function(_0x5d64cb){if(_0x5d64cb){return _0x5d64cb[_0x84eb('0x29')](_0x4c62d7)[_0x84eb('0x2a')](function(_0x5a8e60){return _0x5a8e60;});}return null;};}function removeEntity(_0x352989,_0x1fb507){return function(_0x466746){if(_0x466746){return _0x466746[_0x84eb('0x2b')]()[_0x84eb('0x2a')](function(){var _0x1653bc=_0x466746[_0x84eb('0x2c')]({'plain':!![]});var _0x3ecf72='Projects';return db[_0x84eb('0x2d')][_0x84eb('0x2b')]({'where':{'type':_0x3ecf72,'resourceId':_0x1653bc['id']}})[_0x84eb('0x2a')](function(){return _0x466746;});})[_0x84eb('0x2a')](function(){_0x352989[_0x84eb('0x1d')](0xcc)[_0x84eb('0x1e')]();});}};}function handleEntityNotFound(_0xd51ee6,_0x2736d5){return function(_0x43bd1b){if(!_0x43bd1b){_0xd51ee6[_0x84eb('0x1c')](0x194);}return _0x43bd1b;};}function handleError(_0x29e60d,_0x1bfdec){_0x1bfdec=_0x1bfdec||0x1f4;return function(_0x22e11c){logger[_0x84eb('0x2e')](_0x22e11c['stack']);if(_0x22e11c[_0x84eb('0x2f')]){delete _0x22e11c[_0x84eb('0x2f')];}_0x29e60d[_0x84eb('0x1d')](_0x1bfdec)[_0x84eb('0x30')](_0x22e11c);};}exports[_0x84eb('0x31')]=function(_0x543d89,_0x430920){var _0x163517={},_0x2cc885={},_0x57ef39={'count':0x0,'rows':[]};var _0x23cb8f=_[_0x84eb('0x32')](db[_0x84eb('0x33')]['rawAttributes'],function(_0x31fbc6){return{'name':_0x31fbc6['fieldName'],'type':_0x31fbc6[_0x84eb('0x34')][_0x84eb('0x35')]};});_0x2cc885[_0x84eb('0x36')]=_[_0x84eb('0x32')](_0x23cb8f,_0x84eb('0x2f'));_0x2cc885[_0x84eb('0x37')]=_[_0x84eb('0x38')](_0x543d89[_0x84eb('0x37')]);_0x2cc885['filters']=_[_0x84eb('0x39')](_0x2cc885[_0x84eb('0x36')],_0x2cc885['query']);_0x163517[_0x84eb('0x3a')]=_[_0x84eb('0x39')](_0x2cc885[_0x84eb('0x36')],qs[_0x84eb('0x3b')](_0x543d89[_0x84eb('0x37')]['fields']));_0x163517[_0x84eb('0x3a')]=_0x163517[_0x84eb('0x3a')][_0x84eb('0x3c')]?_0x163517[_0x84eb('0x3a')]:_0x2cc885[_0x84eb('0x36')];if(!_0x543d89[_0x84eb('0x37')][_0x84eb('0x3d')]('nolimit')){_0x163517['limit']=qs[_0x84eb('0x21')](_0x543d89['query'][_0x84eb('0x21')]);_0x163517[_0x84eb('0x23')]=qs[_0x84eb('0x23')](_0x543d89['query'][_0x84eb('0x23')]);}_0x163517[_0x84eb('0x3e')]=qs['sort'](_0x543d89[_0x84eb('0x37')][_0x84eb('0x3f')]);_0x163517['where']=qs[_0x84eb('0x40')](_[_0x84eb('0x41')](_0x543d89[_0x84eb('0x37')],_0x2cc885[_0x84eb('0x40')]),_0x23cb8f);if(_0x543d89[_0x84eb('0x37')][_0x84eb('0x42')]){_0x163517[_0x84eb('0x43')]=_[_0x84eb('0x44')](_0x163517['where'],{'$or':_[_0x84eb('0x32')](_0x23cb8f,function(_0x35e6e9){if(_0x35e6e9['type']!=='VIRTUAL'){var _0x5879b6={};_0x5879b6[_0x35e6e9[_0x84eb('0x2f')]]={'$like':'%'+_0x543d89[_0x84eb('0x37')][_0x84eb('0x42')]+'%'};return _0x5879b6;}})});}_0x163517=_['merge']({},_0x163517,_0x543d89[_0x84eb('0x45')]);var _0x446500={'where':_0x163517[_0x84eb('0x43')]};return db[_0x84eb('0x33')]['count'](_0x446500)[_0x84eb('0x2a')](function(_0x200454){_0x57ef39['count']=_0x200454;if(_0x543d89[_0x84eb('0x37')]['includeAll']){_0x163517[_0x84eb('0x46')]=[{'all':!![]}];}return db[_0x84eb('0x33')][_0x84eb('0x47')](_0x163517);})['then'](function(_0x57427e){_0x57ef39[_0x84eb('0x48')]=_0x57427e;return _0x57ef39;})[_0x84eb('0x2a')](respondWithFilteredResult(_0x430920,_0x163517))['catch'](handleError(_0x430920,null));};exports[_0x84eb('0x49')]=function(_0x1a3f5d,_0x22074f){var _0x522764={'raw':![],'where':{'id':_0x1a3f5d[_0x84eb('0x4a')]['id']}},_0x3a92ca={};_0x3a92ca[_0x84eb('0x36')]=_['keys'](db[_0x84eb('0x33')]['rawAttributes']);_0x3a92ca[_0x84eb('0x37')]=_['keys'](_0x1a3f5d[_0x84eb('0x37')]);_0x3a92ca[_0x84eb('0x40')]=_[_0x84eb('0x39')](_0x3a92ca[_0x84eb('0x36')],_0x3a92ca['query']);_0x522764[_0x84eb('0x3a')]=_['intersection'](_0x3a92ca[_0x84eb('0x36')],qs[_0x84eb('0x3b')](_0x1a3f5d[_0x84eb('0x37')][_0x84eb('0x3b')]));_0x522764[_0x84eb('0x3a')]=_0x522764[_0x84eb('0x3a')][_0x84eb('0x3c')]?_0x522764[_0x84eb('0x3a')]:_0x3a92ca['model'];if(_0x1a3f5d['query'][_0x84eb('0x4b')]){_0x522764[_0x84eb('0x46')]=[{'all':!![]}];}_0x522764=_[_0x84eb('0x44')]({},_0x522764,_0x1a3f5d['options']);return db['JscriptyProject']['find'](_0x522764)[_0x84eb('0x2a')](handleEntityNotFound(_0x22074f,null))[_0x84eb('0x2a')](respondWithResult(_0x22074f,null))[_0x84eb('0x4c')](handleError(_0x22074f,null));};exports[_0x84eb('0x4d')]=function(_0x2600f2,_0x55763a){return db['JscriptyProject']['create'](_0x2600f2[_0x84eb('0x4e')],{})[_0x84eb('0x2a')](function(_0x2397f5){var _0x30e33a=_0x2600f2[_0x84eb('0x4f')][_0x84eb('0x2c')]({'plain':!![]});if(!_0x30e33a)throw new Error(_0x84eb('0x50'));if(_0x30e33a[_0x84eb('0x51')]===_0x84eb('0x4f')){var _0x1f0417=_0x2397f5[_0x84eb('0x2c')]({'plain':!![]});var _0x155003=_0x84eb('0x52');return db[_0x84eb('0x53')][_0x84eb('0x54')]({'where':{'name':_0x155003,'userProfileId':_0x30e33a[_0x84eb('0x55')]},'raw':!![]})[_0x84eb('0x2a')](function(_0x87f03d){if(_0x87f03d&&_0x87f03d[_0x84eb('0x56')]===0x0){return db[_0x84eb('0x2d')][_0x84eb('0x4d')]({'name':_0x1f0417['name'],'resourceId':_0x1f0417['id'],'type':_0x87f03d['name'],'sectionId':_0x87f03d['id']},{})[_0x84eb('0x2a')](function(){return _0x2397f5;});}else{return _0x2397f5;}})[_0x84eb('0x4c')](function(_0x2857a1){logger[_0x84eb('0x2e')](_0x84eb('0x57'),_0x2857a1);throw _0x2857a1;});}return _0x2397f5;})['then'](respondWithResult(_0x55763a,0xc9))[_0x84eb('0x4c')](handleError(_0x55763a,null));};exports['clone']=function(_0x36e5ae,_0x2cbab2){var _0x4b93a2={'where':{'id':_0x36e5ae[_0x84eb('0x4a')]['id']}},_0x2e2106={};_0x2e2106[_0x84eb('0x36')]=_[_0x84eb('0x38')](db[_0x84eb('0x33')][_0x84eb('0x58')]);_0x4b93a2[_0x84eb('0x3a')]=_[_0x84eb('0x39')](_0x2e2106[_0x84eb('0x36')],qs[_0x84eb('0x3b')](_0x36e5ae[_0x84eb('0x37')]['fields']));_0x4b93a2[_0x84eb('0x3a')]=_0x4b93a2['attributes'][_0x84eb('0x3c')]?_0x4b93a2[_0x84eb('0x3a')]:_0x2e2106[_0x84eb('0x36')];if(_0x36e5ae[_0x84eb('0x37')][_0x84eb('0x4b')]){_0x4b93a2[_0x84eb('0x46')]=[{'all':!![]}];}_0x4b93a2=_[_0x84eb('0x44')]({},_0x4b93a2,_0x36e5ae[_0x84eb('0x45')]);return db[_0x84eb('0x33')]['find'](_0x4b93a2)[_0x84eb('0x2a')](handleEntityNotFound(_0x2cbab2,null))[_0x84eb('0x2a')](function(_0x408818){if(_0x408818){var _0x394abc=_0x408818[_0x84eb('0x2c')]({'plain':!![]});_0x394abc=qs[_0x84eb('0x59')](_0x394abc,['id','createdAt','updatedAt']);_0x36e5ae['body']=_[_0x84eb('0x59')](_0x36e5ae[_0x84eb('0x4e')],['id',_0x84eb('0x5a'),_0x84eb('0x5b')]);return db[_0x84eb('0x33')][_0x84eb('0x4d')](_[_0x84eb('0x44')](_0x394abc,_0x36e5ae['body']),{'include':_0x36e5ae[_0x84eb('0x37')][_0x84eb('0x4b')]?[{'all':!![]}]:undefined})[_0x84eb('0x2a')](function(_0xf90029){var _0x53da2c=_0x36e5ae['user'][_0x84eb('0x2c')]({'plain':!![]});if(!_0x53da2c)throw new Error(_0x84eb('0x50'));if(_0x53da2c[_0x84eb('0x51')]===_0x84eb('0x4f')){var _0x56a75c=_0xf90029['get']({'plain':!![]});var _0x26f899=_0x84eb('0x52');return db[_0x84eb('0x53')][_0x84eb('0x54')]({'where':{'name':_0x26f899,'userProfileId':_0x53da2c[_0x84eb('0x55')]},'raw':!![]})[_0x84eb('0x2a')](function(_0x2bcda1){if(_0x2bcda1&&_0x2bcda1[_0x84eb('0x56')]===0x0){return db[_0x84eb('0x2d')][_0x84eb('0x4d')]({'name':_0x56a75c[_0x84eb('0x2f')],'resourceId':_0x56a75c['id'],'type':_0x2bcda1[_0x84eb('0x2f')],'sectionId':_0x2bcda1['id']},{})[_0x84eb('0x2a')](function(){return _0xf90029;});}else{return _0xf90029;}})['catch'](function(_0x2e5d0a){logger[_0x84eb('0x2e')](_0x84eb('0x57'),_0x2e5d0a);throw _0x2e5d0a;});}return _0xf90029;});}})[_0x84eb('0x2a')](respondWithResult(_0x2cbab2,0xc9))[_0x84eb('0x4c')](handleError(_0x2cbab2,null));};exports[_0x84eb('0x29')]=function(_0x2c69cc,_0x3199df){if(_0x2c69cc[_0x84eb('0x4e')]['id']){delete _0x2c69cc[_0x84eb('0x4e')]['id'];}return db[_0x84eb('0x33')]['find']({'where':{'id':_0x2c69cc['params']['id']}})[_0x84eb('0x2a')](handleEntityNotFound(_0x3199df,null))[_0x84eb('0x2a')](saveUpdates(_0x2c69cc[_0x84eb('0x4e')],null))[_0x84eb('0x2a')](respondWithResult(_0x3199df,null))[_0x84eb('0x4c')](handleError(_0x3199df,null));};exports[_0x84eb('0x2b')]=function(_0x47289a,_0x8dfc66){return db[_0x84eb('0x33')][_0x84eb('0x54')]({'where':{'id':_0x47289a[_0x84eb('0x4a')]['id']}})[_0x84eb('0x2a')](handleEntityNotFound(_0x8dfc66,null))[_0x84eb('0x2a')](removeEntity(_0x8dfc66,null))[_0x84eb('0x4c')](handleError(_0x8dfc66,null));};exports[_0x84eb('0x5c')]=function(_0x54559c,_0x3b87be,_0xbe902a){var _0x1a37dd={'raw':!![],'where':{}};var _0x4bc570={};var _0x21523d={'count':0x0,'rows':[]};return db[_0x84eb('0x33')]['findOne']({'where':{'id':_0x54559c['params']['id']}})[_0x84eb('0x2a')](handleEntityNotFound(_0x3b87be,null))[_0x84eb('0x2a')](function(_0x2a2be8){if(_0x2a2be8){_0x4bc570[_0x84eb('0x36')]=_['keys'](db[_0x84eb('0x5d')]['rawAttributes']);_0x4bc570['query']=_[_0x84eb('0x38')](_0x54559c[_0x84eb('0x37')]);_0x4bc570['filters']=_['intersection'](_0x4bc570[_0x84eb('0x36')],_0x4bc570[_0x84eb('0x37')]);_0x1a37dd['attributes']=_['intersection'](_0x4bc570[_0x84eb('0x36')],qs[_0x84eb('0x3b')](_0x54559c[_0x84eb('0x37')][_0x84eb('0x3b')]));_0x1a37dd['attributes']=_0x1a37dd[_0x84eb('0x3a')][_0x84eb('0x3c')]?_0x1a37dd[_0x84eb('0x3a')]:_0x4bc570['model'];if(!_0x54559c[_0x84eb('0x37')]['hasOwnProperty'](_0x84eb('0x5e'))){_0x1a37dd[_0x84eb('0x21')]=qs[_0x84eb('0x21')](_0x54559c[_0x84eb('0x37')][_0x84eb('0x21')]);_0x1a37dd[_0x84eb('0x23')]=qs[_0x84eb('0x23')](_0x54559c[_0x84eb('0x37')][_0x84eb('0x23')]);}_0x1a37dd[_0x84eb('0x3e')]=qs[_0x84eb('0x3f')](_0x54559c['query'][_0x84eb('0x3f')]);_0x1a37dd[_0x84eb('0x43')]=qs[_0x84eb('0x40')](_[_0x84eb('0x41')](_0x54559c['query'],_0x4bc570[_0x84eb('0x40')]));_0x1a37dd[_0x84eb('0x43')][_0x84eb('0x5f')]=_0x2a2be8['id'];if(_0x54559c[_0x84eb('0x37')]['filter']){_0x1a37dd[_0x84eb('0x43')]=_[_0x84eb('0x44')](_0x1a37dd[_0x84eb('0x43')],{'$or':_[_0x84eb('0x32')](_0x1a37dd[_0x84eb('0x3a')],function(_0x231017){var _0x13bcb2={};_0x13bcb2[_0x231017]={'$like':'%'+_0x54559c[_0x84eb('0x37')][_0x84eb('0x42')]+'%'};return _0x13bcb2;})});}_0x1a37dd=_[_0x84eb('0x44')]({},_0x1a37dd,_0x54559c[_0x84eb('0x45')]);return db[_0x84eb('0x5d')][_0x84eb('0x22')]({'where':_0x1a37dd[_0x84eb('0x43')]})[_0x84eb('0x2a')](function(_0x228ce1){_0x21523d[_0x84eb('0x22')]=_0x228ce1;if(_0x54559c[_0x84eb('0x37')][_0x84eb('0x4b')]){_0x1a37dd[_0x84eb('0x46')]=[{'all':!![]}];}return db['JscriptySessionReport']['findAll'](_0x1a37dd);})[_0x84eb('0x2a')](function(_0x34863d){_0x21523d[_0x84eb('0x48')]=_0x34863d;return _0x21523d;});}})[_0x84eb('0x2a')](respondWithFilteredResult(_0x3b87be,_0x1a37dd))[_0x84eb('0x4c')](handleError(_0x3b87be,null));};exports[_0x84eb('0x60')]=function(_0x1ef33b,_0x145b68,_0x4f8a83){var _0x190345={'raw':!![],'where':{}};var _0x313262={};var _0x1e006c={'count':0x0,'rows':[]};return db[_0x84eb('0x33')][_0x84eb('0x61')]({'where':{'id':_0x1ef33b[_0x84eb('0x4a')]['id']}})[_0x84eb('0x2a')](handleEntityNotFound(_0x145b68,null))[_0x84eb('0x2a')](function(_0x4b1217){if(_0x4b1217){_0x313262[_0x84eb('0x36')]=_[_0x84eb('0x38')](db[_0x84eb('0x62')][_0x84eb('0x58')]);_0x313262[_0x84eb('0x37')]=_[_0x84eb('0x38')](_0x1ef33b['query']);_0x313262[_0x84eb('0x40')]=_['intersection'](_0x313262['model'],_0x313262[_0x84eb('0x37')]);_0x190345[_0x84eb('0x3a')]=_['intersection'](_0x313262['model'],qs['fields'](_0x1ef33b[_0x84eb('0x37')][_0x84eb('0x3b')]));_0x190345[_0x84eb('0x3a')]=_0x190345[_0x84eb('0x3a')]['length']?_0x190345[_0x84eb('0x3a')]:_0x313262[_0x84eb('0x36')];if(!_0x1ef33b[_0x84eb('0x37')]['hasOwnProperty'](_0x84eb('0x5e'))){_0x190345[_0x84eb('0x21')]=qs[_0x84eb('0x21')](_0x1ef33b[_0x84eb('0x37')][_0x84eb('0x21')]);_0x190345[_0x84eb('0x23')]=qs[_0x84eb('0x23')](_0x1ef33b[_0x84eb('0x37')][_0x84eb('0x23')]);}_0x190345[_0x84eb('0x3e')]=qs[_0x84eb('0x3f')](_0x1ef33b[_0x84eb('0x37')][_0x84eb('0x3f')]);_0x190345[_0x84eb('0x43')]=qs[_0x84eb('0x40')](_[_0x84eb('0x41')](_0x1ef33b[_0x84eb('0x37')],_0x313262[_0x84eb('0x40')]));_0x190345[_0x84eb('0x43')]['ProjectId']=_0x4b1217['id'];if(_0x1ef33b[_0x84eb('0x37')][_0x84eb('0x42')]){_0x190345[_0x84eb('0x43')]=_[_0x84eb('0x44')](_0x190345[_0x84eb('0x43')],{'$or':_[_0x84eb('0x32')](_0x190345['attributes'],function(_0x10756e){var _0x27f99a={};_0x27f99a[_0x10756e]={'$like':'%'+_0x1ef33b[_0x84eb('0x37')][_0x84eb('0x42')]+'%'};return _0x27f99a;})});}_0x190345=_[_0x84eb('0x44')]({},_0x190345,_0x1ef33b[_0x84eb('0x45')]);return db[_0x84eb('0x62')][_0x84eb('0x22')]({'where':_0x190345[_0x84eb('0x43')]})[_0x84eb('0x2a')](function(_0x3584f1){_0x1e006c[_0x84eb('0x22')]=_0x3584f1;if(_0x1ef33b[_0x84eb('0x37')][_0x84eb('0x4b')]){_0x190345[_0x84eb('0x46')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0x84eb('0x47')](_0x190345);})[_0x84eb('0x2a')](function(_0x1eeb46){_0x1e006c[_0x84eb('0x48')]=_0x1eeb46;return _0x1e006c;});}})[_0x84eb('0x2a')](respondWithFilteredResult(_0x145b68,_0x190345))[_0x84eb('0x4c')](handleError(_0x145b68,null));};function char(_0x29a70f){return'number'===typeof _0x29a70f?String[_0x84eb('0x63')][_0x84eb('0x26')](null,arguments):_0x29a70f;}function needsEncapsulation(_0x19d227){return!!_0x19d227&&(_0x19d227[_0x84eb('0x64')]()[_0x84eb('0x65')](char(0xd))>=0x0||_0x19d227['toString']()[_0x84eb('0x65')](char(0xa))>=0x0||_0x19d227[_0x84eb('0x64')]()[_0x84eb('0x65')](char(0x2c))>=0x0||_0x19d227[_0x84eb('0x64')]()[_0x84eb('0x65')](char(0x22))>=0x0);}function encapsulate(_0x4cd4c3){var _0xe937f7=char(0x22),_0x47851a='\x5c'+char(0x22),_0x222df2=_0x4cd4c3['toString']()['replace'](new RegExp(_0xe937f7,'g'),_0x47851a);return _0xe937f7+_0x222df2+_0xe937f7;}exports[_0x84eb('0x66')]=function(_0x271548,_0x1f98bf,_0x3c63dc){var _0x528a03,_0x34230f;var _0x56b87d={'where':{'ProjectId':_0x271548[_0x84eb('0x4a')]['id']}};if(_0x271548[_0x84eb('0x37')][_0x84eb('0x67')]){_0x56b87d[_0x84eb('0x43')]['starttime']=JSON[_0x84eb('0x68')](_0x271548['query'][_0x84eb('0x67')]);}return db[_0x84eb('0x5d')]['findAll'](_0x56b87d)[_0x84eb('0x2a')](handleEntityNotFound(_0x1f98bf,null))['then'](function(_0x2dec0b){if(_0x2dec0b){_0x528a03=_0x2dec0b;return db[_0x84eb('0x69')][_0x84eb('0x47')]({'where':{'SessionId':{'$in':_[_0x84eb('0x32')](_0x528a03,'id')},'ProjectId':_0x271548[_0x84eb('0x4a')]['id']},'order':_0x84eb('0x6a')});}})[_0x84eb('0x2a')](handleEntityNotFound(_0x1f98bf,null))[_0x84eb('0x2a')](function(_0x5dff29){if(_0x5dff29){_0x34230f=_0x5dff29;var _0x669a2d={};for(var _0x299aa5=0x0,_0x442a30=_0x34230f['length'];_0x299aa5<_0x442a30;_0x299aa5++){if(!_0x669a2d[_0x84eb('0x3d')](_0x34230f[_0x299aa5][_0x84eb('0x6b')])){_0x669a2d[_0x34230f[_0x299aa5][_0x84eb('0x6b')]]=needsEncapsulation(_0x34230f[_0x299aa5]['question'])?encapsulate(_0x34230f[_0x299aa5][_0x84eb('0x6c')]):_0x34230f[_0x299aa5]['question'];}}var _0x4c2525=[],_0x3c2e54={};for(var _0x311e2e=0x0,_0x32e9e7=_0x528a03['length'];_0x311e2e<_0x32e9e7;_0x311e2e++){_0x3c2e54={'ProjectId':_0x271548[_0x84eb('0x4a')]['id'],'SessionId':_0x528a03[_0x311e2e]['id'],'StartTime':moment(_0x528a03[_0x311e2e][_0x84eb('0x6d')])[_0x84eb('0x6e')]('YYYY-MM-DD\x20HH:mm:ss')};for(var _0x31e486=0x0,_0x4754d6=_0x34230f[_0x84eb('0x3c')];_0x31e486<_0x4754d6;_0x31e486++){if(_0x34230f[_0x31e486][_0x84eb('0x6f')]==_0x528a03[_0x311e2e]['id']&&_0x669a2d[_0x84eb('0x3d')](_0x34230f[_0x31e486]['questionId'])){_0x3c2e54[_0x669a2d[_0x34230f[_0x31e486]['questionId']]]=_0x34230f[_0x31e486]['answer'];}}for(var _0x3e06b2 in _0x669a2d){if(!_0x3c2e54[_0x84eb('0x3d')](_0x669a2d[_0x3e06b2])){_0x3c2e54[_0x669a2d[_0x3e06b2]]=null;}}_0x4c2525[_0x84eb('0x70')](_0x3c2e54);}return _0x4c2525;}})[_0x84eb('0x2a')](function(_0x13c3fb){if(!_[_0x84eb('0x71')](_0x13c3fb)){var _0x309e33=toCsv(_0x13c3fb);var _0x2251a4=Date[_0x84eb('0x72')]();fs['writeFileSync'](util[_0x84eb('0x6e')](_0x84eb('0x73'),_0x271548['params']['id'],_0x2251a4),_0x309e33);_0x1f98bf['setHeader'](_0x84eb('0x74'),'attachment;\x20filename='+util[_0x84eb('0x6e')]('Jscripty_Project_%d_Summary_%s.csv',_0x271548['params']['id'],_0x2251a4));_0x1f98bf[_0x84eb('0x75')](_0x84eb('0x76'),_0x84eb('0x77'));return _0x1f98bf[_0x84eb('0x78')](util[_0x84eb('0x6e')](_0x84eb('0x73'),_0x271548[_0x84eb('0x4a')]['id'],_0x2251a4));}else{return _0x1f98bf['sendStatus'](0xcc);}})[_0x84eb('0x4c')](handleError(_0x1f98bf,null));};
\ No newline at end of file
+var _0xcf61=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','get','Projects','UserProfileResource','error','name','send','index','JscriptyProject','rawAttributes','type','key','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','options','include','findAll','rows','catch','show','keys','includeAll','find','create','body','user','role','userProfileId','autoAssociation','clone','omit','createdAt','updatedAt','UserProfileSection','params','getSessions','findOne','JscriptySessionReport','JscriptyAnswerReport','ProjectId','number','fromCharCode','toString','indexOf','replace','startTime','starttime','parse','JscriptyQuestionReport','questionId','question','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer','isEmpty','now','writeFileSync','format','/tmp/Jscripty_Project_%d_Summary_%s.csv','Content-disposition','attachment;\x20filename=','setHeader','text/csv','download','rimraf','zip-dir','request-promise','moment','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x5e5144,_0x26490f){var _0x43add8=function(_0x5c277b){while(--_0x5c277b){_0x5e5144['push'](_0x5e5144['shift']());}};_0x43add8(++_0x26490f);}(_0xcf61,0xda));var _0x1cf6=function(_0x137e81,_0x3541c4){_0x137e81=_0x137e81-0x0;var _0x5f14e1=_0xcf61[_0x137e81];return _0x5f14e1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1cf6('0x0'));var zipdir=require(_0x1cf6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1cf6('0x2'));var moment=require(_0x1cf6('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1cf6('0x4'));var path=require(_0x1cf6('0x5'));var sox=require('sox');var csv=require(_0x1cf6('0x6'));var ejs=require(_0x1cf6('0x7'));var fs=require('fs');var fs_extra=require(_0x1cf6('0x8'));var _=require(_0x1cf6('0x9'));var squel=require(_0x1cf6('0xa'));var crypto=require('crypto');var jsforce=require(_0x1cf6('0xb'));var deskjs=require(_0x1cf6('0xc'));var toCsv=require(_0x1cf6('0x6'));var querystring=require(_0x1cf6('0xd'));var Papa=require(_0x1cf6('0xe'));var Redis=require(_0x1cf6('0xf'));var authService=require(_0x1cf6('0x10'));var qs=require(_0x1cf6('0x11'));var as=require(_0x1cf6('0x12'));var hardwareService=require(_0x1cf6('0x13'));var logger=require(_0x1cf6('0x14'))(_0x1cf6('0x15'));var utils=require(_0x1cf6('0x16'));var config=require(_0x1cf6('0x17'));var licenseUtil=require(_0x1cf6('0x18'));var db=require(_0x1cf6('0x19'))['db'];function respondWithStatusCode(_0x5bcf1e,_0x289e4b){_0x289e4b=_0x289e4b||0xcc;return function(_0x2d5675){if(_0x2d5675){return _0x5bcf1e[_0x1cf6('0x1a')](_0x289e4b);}return _0x5bcf1e[_0x1cf6('0x1b')](_0x289e4b)[_0x1cf6('0x1c')]();};}function respondWithResult(_0x4be886,_0x1c681a){_0x1c681a=_0x1c681a||0xc8;return function(_0x17c2c7){if(_0x17c2c7){return _0x4be886[_0x1cf6('0x1b')](_0x1c681a)['json'](_0x17c2c7);}};}function respondWithFilteredResult(_0x738500,_0x4e2378){return function(_0x9d239d){if(_0x9d239d){var _0xfcfe28=typeof _0x4e2378[_0x1cf6('0x1d')]===_0x1cf6('0x1e')&&typeof _0x4e2378[_0x1cf6('0x1f')]===_0x1cf6('0x1e');var _0x306bc3=_0x9d239d[_0x1cf6('0x20')];var _0x797a95=_0xfcfe28?0x0:_0x4e2378[_0x1cf6('0x1d')];var _0x39e8ba=_0xfcfe28?_0x9d239d[_0x1cf6('0x20')]:_0x4e2378[_0x1cf6('0x1d')]+_0x4e2378[_0x1cf6('0x1f')];var _0x5b450d;if(_0x39e8ba>=_0x306bc3){_0x39e8ba=_0x306bc3;_0x5b450d=0xc8;}else{_0x5b450d=0xce;}_0x738500[_0x1cf6('0x1b')](_0x5b450d);return _0x738500[_0x1cf6('0x21')](_0x1cf6('0x22'),_0x797a95+'-'+_0x39e8ba+'/'+_0x306bc3)[_0x1cf6('0x23')](_0x9d239d);}return null;};}function patchUpdates(_0x1cc332){return function(_0x2d51c9){try{jsonpatch[_0x1cf6('0x24')](_0x2d51c9,_0x1cc332,!![]);}catch(_0x9ad24c){return BPromise[_0x1cf6('0x25')](_0x9ad24c);}return _0x2d51c9['save']();};}function saveUpdates(_0x33161e,_0x3ecb8d){return function(_0x2f33d2){if(_0x2f33d2){return _0x2f33d2[_0x1cf6('0x26')](_0x33161e)[_0x1cf6('0x27')](function(_0x203f62){return _0x203f62;});}return null;};}function removeEntity(_0x412e81,_0x121786){return function(_0x373fda){if(_0x373fda){return _0x373fda[_0x1cf6('0x28')]()[_0x1cf6('0x27')](function(){var _0x5333bc=_0x373fda[_0x1cf6('0x29')]({'plain':!![]});var _0x5519bb=_0x1cf6('0x2a');return db[_0x1cf6('0x2b')][_0x1cf6('0x28')]({'where':{'type':_0x5519bb,'resourceId':_0x5333bc['id']}})[_0x1cf6('0x27')](function(){return _0x373fda;});})['then'](function(){_0x412e81[_0x1cf6('0x1b')](0xcc)[_0x1cf6('0x1c')]();});}};}function handleEntityNotFound(_0x6cab54,_0x3e12b4){return function(_0x53a844){if(!_0x53a844){_0x6cab54['sendStatus'](0x194);}return _0x53a844;};}function handleError(_0x43c62a,_0x597fe2){_0x597fe2=_0x597fe2||0x1f4;return function(_0x46faf8){logger[_0x1cf6('0x2c')](_0x46faf8['stack']);if(_0x46faf8['name']){delete _0x46faf8[_0x1cf6('0x2d')];}_0x43c62a[_0x1cf6('0x1b')](_0x597fe2)[_0x1cf6('0x2e')](_0x46faf8);};}exports[_0x1cf6('0x2f')]=function(_0x1af028,_0x4cb661){var _0x335dac={},_0x65f535={},_0x29b8f2={'count':0x0,'rows':[]};var _0x1d1120=_['map'](db[_0x1cf6('0x30')][_0x1cf6('0x31')],function(_0x56c1da){return{'name':_0x56c1da['fieldName'],'type':_0x56c1da[_0x1cf6('0x32')][_0x1cf6('0x33')]};});_0x65f535[_0x1cf6('0x34')]=_[_0x1cf6('0x35')](_0x1d1120,_0x1cf6('0x2d'));_0x65f535[_0x1cf6('0x36')]=_['keys'](_0x1af028[_0x1cf6('0x36')]);_0x65f535[_0x1cf6('0x37')]=_[_0x1cf6('0x38')](_0x65f535[_0x1cf6('0x34')],_0x65f535[_0x1cf6('0x36')]);_0x335dac[_0x1cf6('0x39')]=_[_0x1cf6('0x38')](_0x65f535[_0x1cf6('0x34')],qs[_0x1cf6('0x3a')](_0x1af028[_0x1cf6('0x36')][_0x1cf6('0x3a')]));_0x335dac[_0x1cf6('0x39')]=_0x335dac['attributes'][_0x1cf6('0x3b')]?_0x335dac[_0x1cf6('0x39')]:_0x65f535[_0x1cf6('0x34')];if(!_0x1af028[_0x1cf6('0x36')][_0x1cf6('0x3c')](_0x1cf6('0x3d'))){_0x335dac[_0x1cf6('0x1f')]=qs[_0x1cf6('0x1f')](_0x1af028[_0x1cf6('0x36')]['limit']);_0x335dac[_0x1cf6('0x1d')]=qs[_0x1cf6('0x1d')](_0x1af028[_0x1cf6('0x36')]['offset']);}_0x335dac[_0x1cf6('0x3e')]=qs[_0x1cf6('0x3f')](_0x1af028[_0x1cf6('0x36')][_0x1cf6('0x3f')]);_0x335dac[_0x1cf6('0x40')]=qs[_0x1cf6('0x37')](_[_0x1cf6('0x41')](_0x1af028[_0x1cf6('0x36')],_0x65f535[_0x1cf6('0x37')]),_0x1d1120);if(_0x1af028[_0x1cf6('0x36')]['filter']){_0x335dac[_0x1cf6('0x40')]=_['merge'](_0x335dac[_0x1cf6('0x40')],{'$or':_['map'](_0x1d1120,function(_0x386f32){if(_0x386f32[_0x1cf6('0x32')]!==_0x1cf6('0x42')){var _0x49f5a5={};_0x49f5a5[_0x386f32[_0x1cf6('0x2d')]]={'$like':'%'+_0x1af028[_0x1cf6('0x36')][_0x1cf6('0x43')]+'%'};return _0x49f5a5;}})});}_0x335dac=_[_0x1cf6('0x44')]({},_0x335dac,_0x1af028[_0x1cf6('0x45')]);var _0x22f515={'where':_0x335dac[_0x1cf6('0x40')]};return db['JscriptyProject'][_0x1cf6('0x20')](_0x22f515)[_0x1cf6('0x27')](function(_0x3d8083){_0x29b8f2['count']=_0x3d8083;if(_0x1af028[_0x1cf6('0x36')]['includeAll']){_0x335dac[_0x1cf6('0x46')]=[{'all':!![]}];}return db[_0x1cf6('0x30')][_0x1cf6('0x47')](_0x335dac);})[_0x1cf6('0x27')](function(_0x35e46a){_0x29b8f2[_0x1cf6('0x48')]=_0x35e46a;return _0x29b8f2;})[_0x1cf6('0x27')](respondWithFilteredResult(_0x4cb661,_0x335dac))[_0x1cf6('0x49')](handleError(_0x4cb661,null));};exports[_0x1cf6('0x4a')]=function(_0x387660,_0x3b9264){var _0x467633={'raw':![],'where':{'id':_0x387660['params']['id']}},_0x412699={};_0x412699['model']=_[_0x1cf6('0x4b')](db[_0x1cf6('0x30')][_0x1cf6('0x31')]);_0x412699[_0x1cf6('0x36')]=_[_0x1cf6('0x4b')](_0x387660[_0x1cf6('0x36')]);_0x412699[_0x1cf6('0x37')]=_[_0x1cf6('0x38')](_0x412699[_0x1cf6('0x34')],_0x412699[_0x1cf6('0x36')]);_0x467633[_0x1cf6('0x39')]=_['intersection'](_0x412699[_0x1cf6('0x34')],qs[_0x1cf6('0x3a')](_0x387660['query'][_0x1cf6('0x3a')]));_0x467633[_0x1cf6('0x39')]=_0x467633[_0x1cf6('0x39')][_0x1cf6('0x3b')]?_0x467633['attributes']:_0x412699[_0x1cf6('0x34')];if(_0x387660[_0x1cf6('0x36')][_0x1cf6('0x4c')]){_0x467633[_0x1cf6('0x46')]=[{'all':!![]}];}_0x467633=_[_0x1cf6('0x44')]({},_0x467633,_0x387660[_0x1cf6('0x45')]);return db[_0x1cf6('0x30')][_0x1cf6('0x4d')](_0x467633)[_0x1cf6('0x27')](handleEntityNotFound(_0x3b9264,null))['then'](respondWithResult(_0x3b9264,null))[_0x1cf6('0x49')](handleError(_0x3b9264,null));};exports[_0x1cf6('0x4e')]=function(_0x3b1c6e,_0x94cc06){return db[_0x1cf6('0x30')][_0x1cf6('0x4e')](_0x3b1c6e[_0x1cf6('0x4f')],{})[_0x1cf6('0x27')](function(_0x2aa5d9){var _0x48a88d=_0x3b1c6e[_0x1cf6('0x50')]['get']({'plain':!![]});if(!_0x48a88d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x48a88d[_0x1cf6('0x51')]===_0x1cf6('0x50')){var _0xc208a4=_0x2aa5d9[_0x1cf6('0x29')]({'plain':!![]});var _0x1e8e2b=_0x1cf6('0x2a');return db['UserProfileSection'][_0x1cf6('0x4d')]({'where':{'name':_0x1e8e2b,'userProfileId':_0x48a88d[_0x1cf6('0x52')]},'raw':!![]})[_0x1cf6('0x27')](function(_0x22e6ba){if(_0x22e6ba&&_0x22e6ba[_0x1cf6('0x53')]===0x0){return db[_0x1cf6('0x2b')][_0x1cf6('0x4e')]({'name':_0xc208a4[_0x1cf6('0x2d')],'resourceId':_0xc208a4['id'],'type':_0x22e6ba[_0x1cf6('0x2d')],'sectionId':_0x22e6ba['id']},{})['then'](function(){return _0x2aa5d9;});}else{return _0x2aa5d9;}})[_0x1cf6('0x49')](function(_0x1d2a8b){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1d2a8b);throw _0x1d2a8b;});}return _0x2aa5d9;})[_0x1cf6('0x27')](respondWithResult(_0x94cc06,0xc9))[_0x1cf6('0x49')](handleError(_0x94cc06,null));};exports[_0x1cf6('0x54')]=function(_0x2598e0,_0x1a0294){var _0x32eb1b={'where':{'id':_0x2598e0['params']['id']}},_0x587661={};_0x587661[_0x1cf6('0x34')]=_['keys'](db['JscriptyProject'][_0x1cf6('0x31')]);_0x32eb1b[_0x1cf6('0x39')]=_['intersection'](_0x587661[_0x1cf6('0x34')],qs['fields'](_0x2598e0['query'][_0x1cf6('0x3a')]));_0x32eb1b[_0x1cf6('0x39')]=_0x32eb1b['attributes'][_0x1cf6('0x3b')]?_0x32eb1b['attributes']:_0x587661[_0x1cf6('0x34')];if(_0x2598e0[_0x1cf6('0x36')][_0x1cf6('0x4c')]){_0x32eb1b['include']=[{'all':!![]}];}_0x32eb1b=_['merge']({},_0x32eb1b,_0x2598e0['options']);return db['JscriptyProject'][_0x1cf6('0x4d')](_0x32eb1b)['then'](handleEntityNotFound(_0x1a0294,null))[_0x1cf6('0x27')](function(_0x11bd6a){if(_0x11bd6a){var _0x27ac6a=_0x11bd6a[_0x1cf6('0x29')]({'plain':!![]});_0x27ac6a=qs[_0x1cf6('0x55')](_0x27ac6a,['id',_0x1cf6('0x56'),_0x1cf6('0x57')]);_0x2598e0[_0x1cf6('0x4f')]=_[_0x1cf6('0x55')](_0x2598e0[_0x1cf6('0x4f')],['id',_0x1cf6('0x56'),_0x1cf6('0x57')]);return db['JscriptyProject'][_0x1cf6('0x4e')](_[_0x1cf6('0x44')](_0x27ac6a,_0x2598e0[_0x1cf6('0x4f')]),{'include':_0x2598e0[_0x1cf6('0x36')]['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x2c3602){var _0x332ce2=_0x2598e0[_0x1cf6('0x50')][_0x1cf6('0x29')]({'plain':!![]});if(!_0x332ce2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x332ce2[_0x1cf6('0x51')]===_0x1cf6('0x50')){var _0x45f8b0=_0x2c3602['get']({'plain':!![]});var _0x4111d0=_0x1cf6('0x2a');return db[_0x1cf6('0x58')][_0x1cf6('0x4d')]({'where':{'name':_0x4111d0,'userProfileId':_0x332ce2[_0x1cf6('0x52')]},'raw':!![]})[_0x1cf6('0x27')](function(_0x4e4b6e){if(_0x4e4b6e&&_0x4e4b6e[_0x1cf6('0x53')]===0x0){return db[_0x1cf6('0x2b')]['create']({'name':_0x45f8b0[_0x1cf6('0x2d')],'resourceId':_0x45f8b0['id'],'type':_0x4e4b6e[_0x1cf6('0x2d')],'sectionId':_0x4e4b6e['id']},{})['then'](function(){return _0x2c3602;});}else{return _0x2c3602;}})[_0x1cf6('0x49')](function(_0xa6e788){logger[_0x1cf6('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xa6e788);throw _0xa6e788;});}return _0x2c3602;});}})['then'](respondWithResult(_0x1a0294,0xc9))['catch'](handleError(_0x1a0294,null));};exports[_0x1cf6('0x26')]=function(_0xa8dcdf,_0x3897b8){if(_0xa8dcdf[_0x1cf6('0x4f')]['id']){delete _0xa8dcdf[_0x1cf6('0x4f')]['id'];}return db[_0x1cf6('0x30')][_0x1cf6('0x4d')]({'where':{'id':_0xa8dcdf[_0x1cf6('0x59')]['id']}})[_0x1cf6('0x27')](handleEntityNotFound(_0x3897b8,null))[_0x1cf6('0x27')](saveUpdates(_0xa8dcdf[_0x1cf6('0x4f')],null))['then'](respondWithResult(_0x3897b8,null))['catch'](handleError(_0x3897b8,null));};exports[_0x1cf6('0x28')]=function(_0x4b68cd,_0x53dea){return db['JscriptyProject'][_0x1cf6('0x4d')]({'where':{'id':_0x4b68cd[_0x1cf6('0x59')]['id']}})[_0x1cf6('0x27')](handleEntityNotFound(_0x53dea,null))['then'](removeEntity(_0x53dea,null))[_0x1cf6('0x49')](handleError(_0x53dea,null));};exports[_0x1cf6('0x5a')]=function(_0x57fdf9,_0x502c3c,_0x26f0da){var _0x42dec7={'raw':!![],'where':{}};var _0xdb422={};var _0x14222a={'count':0x0,'rows':[]};return db[_0x1cf6('0x30')][_0x1cf6('0x5b')]({'where':{'id':_0x57fdf9[_0x1cf6('0x59')]['id']}})[_0x1cf6('0x27')](handleEntityNotFound(_0x502c3c,null))['then'](function(_0xafd13b){if(_0xafd13b){_0xdb422['model']=_[_0x1cf6('0x4b')](db[_0x1cf6('0x5c')][_0x1cf6('0x31')]);_0xdb422[_0x1cf6('0x36')]=_[_0x1cf6('0x4b')](_0x57fdf9[_0x1cf6('0x36')]);_0xdb422[_0x1cf6('0x37')]=_[_0x1cf6('0x38')](_0xdb422['model'],_0xdb422[_0x1cf6('0x36')]);_0x42dec7[_0x1cf6('0x39')]=_[_0x1cf6('0x38')](_0xdb422[_0x1cf6('0x34')],qs[_0x1cf6('0x3a')](_0x57fdf9[_0x1cf6('0x36')]['fields']));_0x42dec7[_0x1cf6('0x39')]=_0x42dec7[_0x1cf6('0x39')][_0x1cf6('0x3b')]?_0x42dec7[_0x1cf6('0x39')]:_0xdb422[_0x1cf6('0x34')];if(!_0x57fdf9[_0x1cf6('0x36')]['hasOwnProperty'](_0x1cf6('0x3d'))){_0x42dec7['limit']=qs[_0x1cf6('0x1f')](_0x57fdf9[_0x1cf6('0x36')][_0x1cf6('0x1f')]);_0x42dec7[_0x1cf6('0x1d')]=qs['offset'](_0x57fdf9[_0x1cf6('0x36')][_0x1cf6('0x1d')]);}_0x42dec7[_0x1cf6('0x3e')]=qs[_0x1cf6('0x3f')](_0x57fdf9[_0x1cf6('0x36')][_0x1cf6('0x3f')]);_0x42dec7['where']=qs[_0x1cf6('0x37')](_[_0x1cf6('0x41')](_0x57fdf9[_0x1cf6('0x36')],_0xdb422[_0x1cf6('0x37')]));_0x42dec7[_0x1cf6('0x40')]['ProjectId']=_0xafd13b['id'];if(_0x57fdf9[_0x1cf6('0x36')][_0x1cf6('0x43')]){_0x42dec7[_0x1cf6('0x40')]=_[_0x1cf6('0x44')](_0x42dec7[_0x1cf6('0x40')],{'$or':_[_0x1cf6('0x35')](_0x42dec7[_0x1cf6('0x39')],function(_0x598f29){var _0x13326e={};_0x13326e[_0x598f29]={'$like':'%'+_0x57fdf9[_0x1cf6('0x36')]['filter']+'%'};return _0x13326e;})});}_0x42dec7=_[_0x1cf6('0x44')]({},_0x42dec7,_0x57fdf9[_0x1cf6('0x45')]);return db[_0x1cf6('0x5c')][_0x1cf6('0x20')]({'where':_0x42dec7[_0x1cf6('0x40')]})['then'](function(_0x158832){_0x14222a[_0x1cf6('0x20')]=_0x158832;if(_0x57fdf9['query'][_0x1cf6('0x4c')]){_0x42dec7['include']=[{'all':!![]}];}return db[_0x1cf6('0x5c')]['findAll'](_0x42dec7);})[_0x1cf6('0x27')](function(_0x366e16){_0x14222a[_0x1cf6('0x48')]=_0x366e16;return _0x14222a;});}})['then'](respondWithFilteredResult(_0x502c3c,_0x42dec7))['catch'](handleError(_0x502c3c,null));};exports['getAnswers']=function(_0x58918b,_0x314061,_0x13c049){var _0x2699c5={'raw':!![],'where':{}};var _0x31a962={};var _0x2b705f={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x1cf6('0x5b')]({'where':{'id':_0x58918b[_0x1cf6('0x59')]['id']}})['then'](handleEntityNotFound(_0x314061,null))[_0x1cf6('0x27')](function(_0xa8a886){if(_0xa8a886){_0x31a962['model']=_[_0x1cf6('0x4b')](db[_0x1cf6('0x5d')]['rawAttributes']);_0x31a962[_0x1cf6('0x36')]=_[_0x1cf6('0x4b')](_0x58918b[_0x1cf6('0x36')]);_0x31a962[_0x1cf6('0x37')]=_[_0x1cf6('0x38')](_0x31a962[_0x1cf6('0x34')],_0x31a962[_0x1cf6('0x36')]);_0x2699c5[_0x1cf6('0x39')]=_[_0x1cf6('0x38')](_0x31a962[_0x1cf6('0x34')],qs[_0x1cf6('0x3a')](_0x58918b[_0x1cf6('0x36')][_0x1cf6('0x3a')]));_0x2699c5['attributes']=_0x2699c5['attributes']['length']?_0x2699c5[_0x1cf6('0x39')]:_0x31a962[_0x1cf6('0x34')];if(!_0x58918b['query'][_0x1cf6('0x3c')](_0x1cf6('0x3d'))){_0x2699c5[_0x1cf6('0x1f')]=qs[_0x1cf6('0x1f')](_0x58918b[_0x1cf6('0x36')][_0x1cf6('0x1f')]);_0x2699c5[_0x1cf6('0x1d')]=qs['offset'](_0x58918b[_0x1cf6('0x36')][_0x1cf6('0x1d')]);}_0x2699c5[_0x1cf6('0x3e')]=qs[_0x1cf6('0x3f')](_0x58918b[_0x1cf6('0x36')][_0x1cf6('0x3f')]);_0x2699c5[_0x1cf6('0x40')]=qs[_0x1cf6('0x37')](_[_0x1cf6('0x41')](_0x58918b[_0x1cf6('0x36')],_0x31a962[_0x1cf6('0x37')]));_0x2699c5['where'][_0x1cf6('0x5e')]=_0xa8a886['id'];if(_0x58918b[_0x1cf6('0x36')][_0x1cf6('0x43')]){_0x2699c5[_0x1cf6('0x40')]=_['merge'](_0x2699c5[_0x1cf6('0x40')],{'$or':_['map'](_0x2699c5[_0x1cf6('0x39')],function(_0x2e6f70){var _0x25f08a={};_0x25f08a[_0x2e6f70]={'$like':'%'+_0x58918b[_0x1cf6('0x36')][_0x1cf6('0x43')]+'%'};return _0x25f08a;})});}_0x2699c5=_[_0x1cf6('0x44')]({},_0x2699c5,_0x58918b['options']);return db[_0x1cf6('0x5d')][_0x1cf6('0x20')]({'where':_0x2699c5['where']})[_0x1cf6('0x27')](function(_0x3c3aa0){_0x2b705f[_0x1cf6('0x20')]=_0x3c3aa0;if(_0x58918b[_0x1cf6('0x36')][_0x1cf6('0x4c')]){_0x2699c5[_0x1cf6('0x46')]=[{'all':!![]}];}return db[_0x1cf6('0x5d')][_0x1cf6('0x47')](_0x2699c5);})[_0x1cf6('0x27')](function(_0x5e37f8){_0x2b705f[_0x1cf6('0x48')]=_0x5e37f8;return _0x2b705f;});}})[_0x1cf6('0x27')](respondWithFilteredResult(_0x314061,_0x2699c5))[_0x1cf6('0x49')](handleError(_0x314061,null));};function char(_0x2e822e){return _0x1cf6('0x5f')===typeof _0x2e822e?String[_0x1cf6('0x60')][_0x1cf6('0x24')](null,arguments):_0x2e822e;}function needsEncapsulation(_0x1d637d){return!!_0x1d637d&&(_0x1d637d[_0x1cf6('0x61')]()['indexOf'](char(0xd))>=0x0||_0x1d637d[_0x1cf6('0x61')]()['indexOf'](char(0xa))>=0x0||_0x1d637d['toString']()[_0x1cf6('0x62')](char(0x2c))>=0x0||_0x1d637d[_0x1cf6('0x61')]()[_0x1cf6('0x62')](char(0x22))>=0x0);}function encapsulate(_0xb941b5){var _0x4e16e5=char(0x22),_0x14624f='\x5c'+char(0x22),_0xf72b80=_0xb941b5[_0x1cf6('0x61')]()[_0x1cf6('0x63')](new RegExp(_0x4e16e5,'g'),_0x14624f);return _0x4e16e5+_0xf72b80+_0x4e16e5;}exports['getSummary']=function(_0x4143ba,_0x566371,_0x5cdd2b){var _0xe05694,_0x2288f7;var _0x1f99d9={'where':{'ProjectId':_0x4143ba[_0x1cf6('0x59')]['id']}};if(_0x4143ba['query'][_0x1cf6('0x64')]){_0x1f99d9[_0x1cf6('0x40')][_0x1cf6('0x65')]=JSON[_0x1cf6('0x66')](_0x4143ba[_0x1cf6('0x36')][_0x1cf6('0x64')]);}return db[_0x1cf6('0x5c')][_0x1cf6('0x47')](_0x1f99d9)[_0x1cf6('0x27')](handleEntityNotFound(_0x566371,null))[_0x1cf6('0x27')](function(_0x856bb5){if(_0x856bb5){_0xe05694=_0x856bb5;return db[_0x1cf6('0x67')][_0x1cf6('0x47')]({'where':{'SessionId':{'$in':_[_0x1cf6('0x35')](_0xe05694,'id')},'ProjectId':_0x4143ba[_0x1cf6('0x59')]['id']},'order':'-createdAt'});}})[_0x1cf6('0x27')](handleEntityNotFound(_0x566371,null))[_0x1cf6('0x27')](function(_0x131631){if(_0x131631){_0x2288f7=_0x131631;var _0xdf2143={};for(var _0x3d68c1=0x0,_0x1910c1=_0x2288f7[_0x1cf6('0x3b')];_0x3d68c1<_0x1910c1;_0x3d68c1++){if(!_0xdf2143[_0x1cf6('0x3c')](_0x2288f7[_0x3d68c1]['questionId'])){_0xdf2143[_0x2288f7[_0x3d68c1][_0x1cf6('0x68')]]=needsEncapsulation(_0x2288f7[_0x3d68c1][_0x1cf6('0x69')])?encapsulate(_0x2288f7[_0x3d68c1][_0x1cf6('0x69')]):_0x2288f7[_0x3d68c1][_0x1cf6('0x69')];}}var _0x859d79=[],_0x4dd3a7={};for(var _0x57d534=0x0,_0x296588=_0xe05694['length'];_0x57d534<_0x296588;_0x57d534++){_0x4dd3a7={'ProjectId':_0x4143ba[_0x1cf6('0x59')]['id'],'SessionId':_0xe05694[_0x57d534]['id'],'StartTime':moment(_0xe05694[_0x57d534][_0x1cf6('0x65')])['format'](_0x1cf6('0x6a'))};for(var _0x12f9bb=0x0,_0x43480b=_0x2288f7[_0x1cf6('0x3b')];_0x12f9bb<_0x43480b;_0x12f9bb++){if(_0x2288f7[_0x12f9bb][_0x1cf6('0x6b')]==_0xe05694[_0x57d534]['id']&&_0xdf2143['hasOwnProperty'](_0x2288f7[_0x12f9bb][_0x1cf6('0x68')])){_0x4dd3a7[_0xdf2143[_0x2288f7[_0x12f9bb][_0x1cf6('0x68')]]]=_0x2288f7[_0x12f9bb][_0x1cf6('0x6c')];}}for(var _0x2908ce in _0xdf2143){if(!_0x4dd3a7[_0x1cf6('0x3c')](_0xdf2143[_0x2908ce])){_0x4dd3a7[_0xdf2143[_0x2908ce]]=null;}}_0x859d79['push'](_0x4dd3a7);}return _0x859d79;}})[_0x1cf6('0x27')](function(_0x3e7c12){if(!_[_0x1cf6('0x6d')](_0x3e7c12)){var _0x480dc5=toCsv(_0x3e7c12);var _0x215dc9=Date[_0x1cf6('0x6e')]();fs[_0x1cf6('0x6f')](util[_0x1cf6('0x70')](_0x1cf6('0x71'),_0x4143ba[_0x1cf6('0x59')]['id'],_0x215dc9),_0x480dc5);_0x566371['setHeader'](_0x1cf6('0x72'),_0x1cf6('0x73')+util[_0x1cf6('0x70')]('Jscripty_Project_%d_Summary_%s.csv',_0x4143ba[_0x1cf6('0x59')]['id'],_0x215dc9));_0x566371[_0x1cf6('0x74')]('Content-type',_0x1cf6('0x75'));return _0x566371[_0x1cf6('0x76')](util[_0x1cf6('0x70')](_0x1cf6('0x71'),_0x4143ba[_0x1cf6('0x59')]['id'],_0x215dc9));}else{return _0x566371[_0x1cf6('0x1a')](0xcc);}})[_0x1cf6('0x49')](handleError(_0x566371,null));};
\ No newline at end of file
index 97b15c4..71506c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf767=['api','moment','bluebird','path','rimraf','../../config/environment','./jscriptyProject.attributes','define','JscriptyProject','jscripty_projects','util','../../config/logger'];(function(_0x4172a0,_0x5bfada){var _0x4500f2=function(_0x517948){while(--_0x517948){_0x4172a0['push'](_0x4172a0['shift']());}};_0x4500f2(++_0x5bfada);}(_0xf767,0x76));var _0x7f76=function(_0x3c6ae2,_0x5c52d8){_0x3c6ae2=_0x3c6ae2-0x0;var _0x4edda=_0xf767[_0x3c6ae2];return _0x4edda;};'use strict';var _=require('lodash');var util=require(_0x7f76('0x0'));var logger=require(_0x7f76('0x1'))(_0x7f76('0x2'));var moment=require(_0x7f76('0x3'));var BPromise=require(_0x7f76('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x7f76('0x5'));var rimraf=require(_0x7f76('0x6'));var config=require(_0x7f76('0x7'));var attributes=require(_0x7f76('0x8'));module['exports']=function(_0x23c243,_0x2f2588){return _0x23c243[_0x7f76('0x9')](_0x7f76('0xa'),attributes,{'tableName':_0x7f76('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8743=['define','jscripty_projects','lodash','util','../../config/logger','moment','bluebird','rimraf','../../config/environment','./jscriptyProject.attributes'];(function(_0x5f0e79,_0x4b4cce){var _0x813950=function(_0x58cbb4){while(--_0x58cbb4){_0x5f0e79['push'](_0x5f0e79['shift']());}};_0x813950(++_0x4b4cce);}(_0x8743,0x7a));var _0x3874=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0x8743[_0x47a7d0];return _0xb9bd08;};'use strict';var _=require(_0x3874('0x0'));var util=require(_0x3874('0x1'));var logger=require(_0x3874('0x2'))('api');var moment=require(_0x3874('0x3'));var BPromise=require(_0x3874('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x3874('0x5'));var config=require(_0x3874('0x6'));var attributes=require(_0x3874('0x7'));module['exports']=function(_0x597a79,_0x4b242a){return _0x597a79[_0x3874('0x8')]('JscriptyProject',attributes,{'tableName':_0x3874('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9d3a322..a1f632d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x3f4532,_0x125c9b){var _0x5498c8=function(_0x6b8183){while(--_0x6b8183){_0x3f4532['push'](_0x3f4532['shift']());}};_0x5498c8(++_0x125c9b);}(_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 moment=require(_0x3071('0x0'));var BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
+var _0xb7e7=['JscriptyProject,\x20%s,\x20%s','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','then','info'];(function(_0x12dbf5,_0x1fcb69){var _0x1ccb40=function(_0x530f61){while(--_0x530f61){_0x12dbf5['push'](_0x12dbf5['shift']());}};_0x1ccb40(++_0x1fcb69);}(_0xb7e7,0x121));var _0x7b7e=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0xb7e7[_0x173441];return _0x2423a8;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var moment=require(_0x7b7e('0x1'));var BPromise=require('bluebird');var rs=require(_0x7b7e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7b7e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x7b7e('0x4'))(_0x7b7e('0x5'));var config=require(_0x7b7e('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7b7e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x372bde,_0x7f87e0,_0x55ce81){return new BPromise(function(_0x42b871,_0x223587){return client[_0x7b7e('0x8')](_0x372bde,_0x55ce81)[_0x7b7e('0x9')](function(_0x148964){logger[_0x7b7e('0xa')](_0x7b7e('0xb'),_0x7f87e0,'request\x20sent');logger[_0x7b7e('0xc')](_0x7b7e('0xd'),_0x7f87e0,_0x7b7e('0xe'),JSON[_0x7b7e('0xf')](_0x148964));if(_0x148964[_0x7b7e('0x10')]){if(_0x148964[_0x7b7e('0x10')][_0x7b7e('0x11')]===0x1f4){logger[_0x7b7e('0x10')](_0x7b7e('0xb'),_0x7f87e0,_0x148964['error'][_0x7b7e('0x12')]);return _0x223587(_0x148964[_0x7b7e('0x10')]['message']);}logger[_0x7b7e('0x10')]('JscriptyProject,\x20%s,\x20%s',_0x7f87e0,_0x148964['error'][_0x7b7e('0x12')]);return _0x42b871(_0x148964[_0x7b7e('0x10')][_0x7b7e('0x12')]);}else{logger[_0x7b7e('0xa')](_0x7b7e('0xb'),_0x7f87e0,'request\x20sent');_0x42b871(_0x148964['result'][_0x7b7e('0x12')]);}})[_0x7b7e('0x13')](function(_0x27f999){logger[_0x7b7e('0x10')](_0x7b7e('0xb'),_0x7f87e0,_0x27f999);_0x223587(_0x27f999);});});}
\ No newline at end of file
index 4e101b7..9a68dc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfada=['isAuthenticated','get','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller'];(function(_0x2ecc65,_0xd75c48){var _0x103cc3=function(_0x3f856b){while(--_0x3f856b){_0x2ecc65['push'](_0x2ecc65['shift']());}};_0x103cc3(++_0xd75c48);}(_0xfada,0x85));var _0xafad=function(_0x88614d,_0x15e75a){_0x88614d=_0x88614d-0x0;var _0x5f2886=_0xfada[_0x88614d];return _0x5f2886;};'use strict';var multer=require(_0xafad('0x0'));var util=require(_0xafad('0x1'));var path=require(_0xafad('0x2'));var timeout=require(_0xafad('0x3'));var express=require(_0xafad('0x4'));var router=express[_0xafad('0x5')]();var fs_extra=require(_0xafad('0x6'));var auth=require(_0xafad('0x7'));var interaction=require(_0xafad('0x8'));var config=require(_0xafad('0x9'));var controller=require(_0xafad('0xa'));router['get']('/',auth[_0xafad('0xb')](),controller['index']);router[_0xafad('0xc')](_0xafad('0xd'),auth[_0xafad('0xb')](),controller[_0xafad('0xe')]);router['get'](_0xafad('0xf'),auth[_0xafad('0xb')](),controller[_0xafad('0x10')]);router[_0xafad('0x11')]('/',auth[_0xafad('0xb')](),controller[_0xafad('0x12')]);router[_0xafad('0x13')](_0xafad('0xf'),auth['isAuthenticated'](),controller[_0xafad('0x14')]);router[_0xafad('0x15')]('/:id',auth['isAuthenticated'](),controller[_0xafad('0x16')]);module[_0xafad('0x17')]=router;
\ No newline at end of file
+var _0x1740=['update','delete','exports','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./jscriptyQuestionReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create'];(function(_0x3bd0ca,_0x1dd12){var _0x2bed45=function(_0x226d3b){while(--_0x226d3b){_0x3bd0ca['push'](_0x3bd0ca['shift']());}};_0x2bed45(++_0x1dd12);}(_0x1740,0x192));var _0x0174=function(_0x764d52,_0x391501){_0x764d52=_0x764d52-0x0;var _0x50dfc5=_0x1740[_0x764d52];return _0x50dfc5;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x0174('0x0'));var timeout=require('connect-timeout');var express=require(_0x0174('0x1'));var router=express[_0x0174('0x2')]();var fs_extra=require(_0x0174('0x3'));var auth=require(_0x0174('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x0174('0x5'));var controller=require(_0x0174('0x6'));router['get']('/',auth[_0x0174('0x7')](),controller[_0x0174('0x8')]);router[_0x0174('0x9')](_0x0174('0xa'),auth[_0x0174('0x7')](),controller[_0x0174('0xb')]);router[_0x0174('0x9')](_0x0174('0xc'),auth['isAuthenticated'](),controller[_0x0174('0xd')]);router[_0x0174('0xe')]('/',auth['isAuthenticated'](),controller[_0x0174('0xf')]);router['put'](_0x0174('0xc'),auth[_0x0174('0x7')](),controller[_0x0174('0x10')]);router[_0x0174('0x11')]('/:id',auth[_0x0174('0x7')](),controller['destroy']);module[_0x0174('0x12')]=router;
\ No newline at end of file
index 698fac8..4e1daba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x36884e,_0x48008f){var _0x1cc367=function(_0x388a78){while(--_0x388a78){_0x36884e['push'](_0x36884e['shift']());}};_0x1cc367(++_0x48008f);}(_0x7a54,0x106));var _0x47a5=function(_0x4c661d,_0x37f3c0){_0x4c661d=_0x4c661d-0x0;var _0x394f03=_0x7a54[_0x4c661d];return _0x394f03;};'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(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x7a54,0x106));var _0x47a5=function(_0x39b711,_0x54c8ad){_0x39b711=_0x39b711-0x0;var _0x316c7c=_0x7a54[_0x39b711];return _0x316c7c;};'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 ae488f9..396e50b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4411=['save','update','destroy','then','end','error','stack','name','send','map','JscriptyQuestionReport','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','filters','pick','filter','where','merge','includeAll','include','findAll','rows','show','params','find','create','body','catch','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','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','offset','undefined','limit','count','set','Content-Range','json','apply','reject'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0x4411,0x110));var _0x1441=function(_0x1789b2,_0x2d09f0){_0x1789b2=_0x1789b2-0x0;var _0x136ff6=_0x4411[_0x1789b2];return _0x136ff6;};'use strict';var emlformat=require(_0x1441('0x0'));var rimraf=require(_0x1441('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1441('0x2'));var rp=require(_0x1441('0x3'));var moment=require(_0x1441('0x4'));var BPromise=require(_0x1441('0x5'));var Mustache=require('mustache');var util=require(_0x1441('0x6'));var path=require(_0x1441('0x7'));var sox=require(_0x1441('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1441('0x9'));var squel=require(_0x1441('0xa'));var crypto=require(_0x1441('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x1441('0xc'));var toCsv=require('to-csv');var querystring=require(_0x1441('0xd'));var Papa=require(_0x1441('0xe'));var Redis=require('ioredis');var authService=require(_0x1441('0xf'));var qs=require(_0x1441('0x10'));var as=require(_0x1441('0x11'));var hardwareService=require(_0x1441('0x12'));var logger=require(_0x1441('0x13'))(_0x1441('0x14'));var utils=require(_0x1441('0x15'));var config=require(_0x1441('0x16'));var licenseUtil=require(_0x1441('0x17'));var db=require(_0x1441('0x18'))['db'];function respondWithStatusCode(_0x106312,_0x117fd9){_0x117fd9=_0x117fd9||0xcc;return function(_0x2e493e){if(_0x2e493e){return _0x106312[_0x1441('0x19')](_0x117fd9);}return _0x106312[_0x1441('0x1a')](_0x117fd9)['end']();};}function respondWithResult(_0x3c7e9a,_0x20ba3b){_0x20ba3b=_0x20ba3b||0xc8;return function(_0x4f8add){if(_0x4f8add){return _0x3c7e9a[_0x1441('0x1a')](_0x20ba3b)['json'](_0x4f8add);}};}function respondWithFilteredResult(_0x1d0153,_0x331032){return function(_0x568347){if(_0x568347){var _0x2c7ddb=typeof _0x331032[_0x1441('0x1b')]===_0x1441('0x1c')&&typeof _0x331032[_0x1441('0x1d')]===_0x1441('0x1c');var _0x2d10e9=_0x568347[_0x1441('0x1e')];var _0x2e9e85=_0x2c7ddb?0x0:_0x331032['offset'];var _0x15400b=_0x2c7ddb?_0x568347[_0x1441('0x1e')]:_0x331032[_0x1441('0x1b')]+_0x331032[_0x1441('0x1d')];var _0x193e5d;if(_0x15400b>=_0x2d10e9){_0x15400b=_0x2d10e9;_0x193e5d=0xc8;}else{_0x193e5d=0xce;}_0x1d0153['status'](_0x193e5d);return _0x1d0153[_0x1441('0x1f')](_0x1441('0x20'),_0x2e9e85+'-'+_0x15400b+'/'+_0x2d10e9)[_0x1441('0x21')](_0x568347);}return null;};}function patchUpdates(_0x387cb3){return function(_0x19fcf6){try{jsonpatch[_0x1441('0x22')](_0x19fcf6,_0x387cb3,!![]);}catch(_0x16655a){return BPromise[_0x1441('0x23')](_0x16655a);}return _0x19fcf6[_0x1441('0x24')]();};}function saveUpdates(_0x45eea7,_0x40557a){return function(_0x3d0e78){if(_0x3d0e78){return _0x3d0e78[_0x1441('0x25')](_0x45eea7)['then'](function(_0x2e41a0){return _0x2e41a0;});}return null;};}function removeEntity(_0x1fe11c,_0xbe11ed){return function(_0x3045b5){if(_0x3045b5){return _0x3045b5[_0x1441('0x26')]()[_0x1441('0x27')](function(){_0x1fe11c['status'](0xcc)[_0x1441('0x28')]();});}};}function handleEntityNotFound(_0xc106d2,_0x4bac46){return function(_0x3de0e0){if(!_0x3de0e0){_0xc106d2[_0x1441('0x19')](0x194);}return _0x3de0e0;};}function handleError(_0x1eb4e9,_0x7af333){_0x7af333=_0x7af333||0x1f4;return function(_0x4df082){logger[_0x1441('0x29')](_0x4df082[_0x1441('0x2a')]);if(_0x4df082[_0x1441('0x2b')]){delete _0x4df082[_0x1441('0x2b')];}_0x1eb4e9[_0x1441('0x1a')](_0x7af333)[_0x1441('0x2c')](_0x4df082);};}exports['index']=function(_0x28aa65,_0xbd87e5){var _0x27fd31={},_0x43f710={},_0x4525f8={'count':0x0,'rows':[]};var _0x45b70a=_[_0x1441('0x2d')](db[_0x1441('0x2e')][_0x1441('0x2f')],function(_0x561406){return{'name':_0x561406[_0x1441('0x30')],'type':_0x561406[_0x1441('0x31')][_0x1441('0x32')]};});_0x43f710[_0x1441('0x33')]=_[_0x1441('0x2d')](_0x45b70a,'name');_0x43f710[_0x1441('0x34')]=_[_0x1441('0x35')](_0x28aa65[_0x1441('0x34')]);_0x43f710['filters']=_[_0x1441('0x36')](_0x43f710[_0x1441('0x33')],_0x43f710[_0x1441('0x34')]);_0x27fd31[_0x1441('0x37')]=_['intersection'](_0x43f710['model'],qs[_0x1441('0x38')](_0x28aa65[_0x1441('0x34')][_0x1441('0x38')]));_0x27fd31[_0x1441('0x37')]=_0x27fd31['attributes'][_0x1441('0x39')]?_0x27fd31[_0x1441('0x37')]:_0x43f710[_0x1441('0x33')];if(!_0x28aa65[_0x1441('0x34')][_0x1441('0x3a')]('nolimit')){_0x27fd31[_0x1441('0x1d')]=qs[_0x1441('0x1d')](_0x28aa65['query'][_0x1441('0x1d')]);_0x27fd31[_0x1441('0x1b')]=qs[_0x1441('0x1b')](_0x28aa65[_0x1441('0x34')]['offset']);}_0x27fd31[_0x1441('0x3b')]=qs[_0x1441('0x3c')](_0x28aa65['query'][_0x1441('0x3c')]);_0x27fd31['where']=qs[_0x1441('0x3d')](_[_0x1441('0x3e')](_0x28aa65[_0x1441('0x34')],_0x43f710['filters']),_0x45b70a);if(_0x28aa65[_0x1441('0x34')][_0x1441('0x3f')]){_0x27fd31[_0x1441('0x40')]=_[_0x1441('0x41')](_0x27fd31[_0x1441('0x40')],{'$or':_['map'](_0x45b70a,function(_0x3be129){if(_0x3be129[_0x1441('0x31')]!=='VIRTUAL'){var _0x39f51e={};_0x39f51e[_0x3be129[_0x1441('0x2b')]]={'$like':'%'+_0x28aa65[_0x1441('0x34')]['filter']+'%'};return _0x39f51e;}})});}_0x27fd31=_[_0x1441('0x41')]({},_0x27fd31,_0x28aa65['options']);var _0x50f948={'where':_0x27fd31[_0x1441('0x40')]};return db[_0x1441('0x2e')][_0x1441('0x1e')](_0x50f948)[_0x1441('0x27')](function(_0x2a04ea){_0x4525f8[_0x1441('0x1e')]=_0x2a04ea;if(_0x28aa65[_0x1441('0x34')][_0x1441('0x42')]){_0x27fd31[_0x1441('0x43')]=[{'all':!![]}];}return db[_0x1441('0x2e')][_0x1441('0x44')](_0x27fd31);})['then'](function(_0x4156aa){_0x4525f8[_0x1441('0x45')]=_0x4156aa;return _0x4525f8;})[_0x1441('0x27')](respondWithFilteredResult(_0xbd87e5,_0x27fd31))['catch'](handleError(_0xbd87e5,null));};exports[_0x1441('0x46')]=function(_0x4faf39,_0x5e14c9){var _0x59c26b={'raw':!![],'where':{'id':_0x4faf39[_0x1441('0x47')]['id']}},_0x1f5c89={};_0x1f5c89[_0x1441('0x33')]=_[_0x1441('0x35')](db[_0x1441('0x2e')][_0x1441('0x2f')]);_0x1f5c89[_0x1441('0x34')]=_['keys'](_0x4faf39['query']);_0x1f5c89['filters']=_['intersection'](_0x1f5c89[_0x1441('0x33')],_0x1f5c89[_0x1441('0x34')]);_0x59c26b[_0x1441('0x37')]=_[_0x1441('0x36')](_0x1f5c89[_0x1441('0x33')],qs[_0x1441('0x38')](_0x4faf39[_0x1441('0x34')][_0x1441('0x38')]));_0x59c26b[_0x1441('0x37')]=_0x59c26b[_0x1441('0x37')]['length']?_0x59c26b[_0x1441('0x37')]:_0x1f5c89[_0x1441('0x33')];if(_0x4faf39['query'][_0x1441('0x42')]){_0x59c26b[_0x1441('0x43')]=[{'all':!![]}];}_0x59c26b=_[_0x1441('0x41')]({},_0x59c26b,_0x4faf39['options']);return db['JscriptyQuestionReport'][_0x1441('0x48')](_0x59c26b)[_0x1441('0x27')](handleEntityNotFound(_0x5e14c9,null))[_0x1441('0x27')](respondWithResult(_0x5e14c9,null))['catch'](handleError(_0x5e14c9,null));};exports[_0x1441('0x49')]=function(_0xfe8874,_0x18b641){return db[_0x1441('0x2e')][_0x1441('0x49')](_0xfe8874[_0x1441('0x4a')],{})['then'](respondWithResult(_0x18b641,0xc9))[_0x1441('0x4b')](handleError(_0x18b641,null));};exports['update']=function(_0x2c99f2,_0x5daea8){if(_0x2c99f2[_0x1441('0x4a')]['id']){delete _0x2c99f2[_0x1441('0x4a')]['id'];}return db['JscriptyQuestionReport']['find']({'where':{'id':_0x2c99f2['params']['id']}})['then'](handleEntityNotFound(_0x5daea8,null))[_0x1441('0x27')](saveUpdates(_0x2c99f2['body'],null))[_0x1441('0x27')](respondWithResult(_0x5daea8,null))[_0x1441('0x4b')](handleError(_0x5daea8,null));};exports[_0x1441('0x26')]=function(_0x41a5de,_0x53f53e){return db['JscriptyQuestionReport'][_0x1441('0x48')]({'where':{'id':_0x41a5de['params']['id']}})[_0x1441('0x27')](handleEntityNotFound(_0x53f53e,null))[_0x1441('0x27')](removeEntity(_0x53f53e,null))[_0x1441('0x4b')](handleError(_0x53f53e,null));};exports[_0x1441('0x4c')]=function(_0x329b09,_0x183524){return db['JscriptyQuestionReport'][_0x1441('0x4c')]()[_0x1441('0x27')](respondWithResult(_0x183524,null))[_0x1441('0x4b')](handleError(_0x183524,null));};
\ No newline at end of file
+var _0x30ea=['limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','name','status','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','filter','merge','JscriptyQuestionReport','include','findAll','rows','catch','show','params','includeAll','options','find','create','body','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','json','offset','undefined'];(function(_0x3ce4a2,_0xdc404){var _0x54ef49=function(_0x4fb438){while(--_0x4fb438){_0x3ce4a2['push'](_0x3ce4a2['shift']());}};_0x54ef49(++_0xdc404);}(_0x30ea,0x1b5));var _0xa30e=function(_0x4e8627,_0x208c61){_0x4e8627=_0x4e8627-0x0;var _0xe6f118=_0x30ea[_0x4e8627];return _0xe6f118;};'use strict';var emlformat=require(_0xa30e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa30e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa30e('0x2'));var moment=require(_0xa30e('0x3'));var BPromise=require(_0xa30e('0x4'));var Mustache=require(_0xa30e('0x5'));var util=require(_0xa30e('0x6'));var path=require(_0xa30e('0x7'));var sox=require(_0xa30e('0x8'));var csv=require(_0xa30e('0x9'));var ejs=require(_0xa30e('0xa'));var fs=require('fs');var fs_extra=require(_0xa30e('0xb'));var _=require(_0xa30e('0xc'));var squel=require('squel');var crypto=require(_0xa30e('0xd'));var jsforce=require(_0xa30e('0xe'));var deskjs=require(_0xa30e('0xf'));var toCsv=require(_0xa30e('0x9'));var querystring=require(_0xa30e('0x10'));var Papa=require(_0xa30e('0x11'));var Redis=require(_0xa30e('0x12'));var authService=require(_0xa30e('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xa30e('0x14'));var hardwareService=require(_0xa30e('0x15'));var logger=require('../../config/logger')(_0xa30e('0x16'));var utils=require(_0xa30e('0x17'));var config=require(_0xa30e('0x18'));var licenseUtil=require(_0xa30e('0x19'));var db=require(_0xa30e('0x1a'))['db'];function respondWithStatusCode(_0x25820c,_0x2a8d07){_0x2a8d07=_0x2a8d07||0xcc;return function(_0x20c4c7){if(_0x20c4c7){return _0x25820c[_0xa30e('0x1b')](_0x2a8d07);}return _0x25820c['status'](_0x2a8d07)['end']();};}function respondWithResult(_0x2df8b7,_0x5b613b){_0x5b613b=_0x5b613b||0xc8;return function(_0x200093){if(_0x200093){return _0x2df8b7['status'](_0x5b613b)[_0xa30e('0x1c')](_0x200093);}};}function respondWithFilteredResult(_0x12af8c,_0x530fa7){return function(_0x4bf9e1){if(_0x4bf9e1){var _0x573ae2=typeof _0x530fa7[_0xa30e('0x1d')]===_0xa30e('0x1e')&&typeof _0x530fa7[_0xa30e('0x1f')]===_0xa30e('0x1e');var _0x4e4666=_0x4bf9e1[_0xa30e('0x20')];var _0x4a7312=_0x573ae2?0x0:_0x530fa7[_0xa30e('0x1d')];var _0x1c2d78=_0x573ae2?_0x4bf9e1['count']:_0x530fa7[_0xa30e('0x1d')]+_0x530fa7[_0xa30e('0x1f')];var _0x59d805;if(_0x1c2d78>=_0x4e4666){_0x1c2d78=_0x4e4666;_0x59d805=0xc8;}else{_0x59d805=0xce;}_0x12af8c['status'](_0x59d805);return _0x12af8c[_0xa30e('0x21')](_0xa30e('0x22'),_0x4a7312+'-'+_0x1c2d78+'/'+_0x4e4666)[_0xa30e('0x1c')](_0x4bf9e1);}return null;};}function patchUpdates(_0x5c744d){return function(_0x2db907){try{jsonpatch[_0xa30e('0x23')](_0x2db907,_0x5c744d,!![]);}catch(_0x1ee9b8){return BPromise[_0xa30e('0x24')](_0x1ee9b8);}return _0x2db907[_0xa30e('0x25')]();};}function saveUpdates(_0x38b4aa,_0x113048){return function(_0x488f14){if(_0x488f14){return _0x488f14[_0xa30e('0x26')](_0x38b4aa)[_0xa30e('0x27')](function(_0x2338e6){return _0x2338e6;});}return null;};}function removeEntity(_0x145103,_0x1f0a73){return function(_0x16a8e6){if(_0x16a8e6){return _0x16a8e6[_0xa30e('0x28')]()[_0xa30e('0x27')](function(){_0x145103['status'](0xcc)[_0xa30e('0x29')]();});}};}function handleEntityNotFound(_0x25e388,_0x5c6e9e){return function(_0x37bea0){if(!_0x37bea0){_0x25e388['sendStatus'](0x194);}return _0x37bea0;};}function handleError(_0x470a3c,_0x5b8a91){_0x5b8a91=_0x5b8a91||0x1f4;return function(_0x20756b){logger[_0xa30e('0x2a')](_0x20756b['stack']);if(_0x20756b[_0xa30e('0x2b')]){delete _0x20756b[_0xa30e('0x2b')];}_0x470a3c[_0xa30e('0x2c')](_0x5b8a91)[_0xa30e('0x2d')](_0x20756b);};}exports[_0xa30e('0x2e')]=function(_0x2883a6,_0x2f3fd4){var _0x575536={},_0x2dec76={},_0x258926={'count':0x0,'rows':[]};var _0x18128f=_[_0xa30e('0x2f')](db['JscriptyQuestionReport'][_0xa30e('0x30')],function(_0x1cc95b){return{'name':_0x1cc95b['fieldName'],'type':_0x1cc95b[_0xa30e('0x31')][_0xa30e('0x32')]};});_0x2dec76[_0xa30e('0x33')]=_[_0xa30e('0x2f')](_0x18128f,_0xa30e('0x2b'));_0x2dec76[_0xa30e('0x34')]=_[_0xa30e('0x35')](_0x2883a6[_0xa30e('0x34')]);_0x2dec76[_0xa30e('0x36')]=_[_0xa30e('0x37')](_0x2dec76[_0xa30e('0x33')],_0x2dec76[_0xa30e('0x34')]);_0x575536['attributes']=_['intersection'](_0x2dec76[_0xa30e('0x33')],qs[_0xa30e('0x38')](_0x2883a6[_0xa30e('0x34')][_0xa30e('0x38')]));_0x575536['attributes']=_0x575536[_0xa30e('0x39')][_0xa30e('0x3a')]?_0x575536['attributes']:_0x2dec76[_0xa30e('0x33')];if(!_0x2883a6[_0xa30e('0x34')]['hasOwnProperty'](_0xa30e('0x3b'))){_0x575536['limit']=qs[_0xa30e('0x1f')](_0x2883a6[_0xa30e('0x34')]['limit']);_0x575536['offset']=qs[_0xa30e('0x1d')](_0x2883a6[_0xa30e('0x34')]['offset']);}_0x575536[_0xa30e('0x3c')]=qs['sort'](_0x2883a6['query'][_0xa30e('0x3d')]);_0x575536[_0xa30e('0x3e')]=qs[_0xa30e('0x36')](_['pick'](_0x2883a6[_0xa30e('0x34')],_0x2dec76[_0xa30e('0x36')]),_0x18128f);if(_0x2883a6[_0xa30e('0x34')][_0xa30e('0x3f')]){_0x575536[_0xa30e('0x3e')]=_['merge'](_0x575536[_0xa30e('0x3e')],{'$or':_['map'](_0x18128f,function(_0x86516c){if(_0x86516c[_0xa30e('0x31')]!=='VIRTUAL'){var _0x2713f7={};_0x2713f7[_0x86516c['name']]={'$like':'%'+_0x2883a6[_0xa30e('0x34')][_0xa30e('0x3f')]+'%'};return _0x2713f7;}})});}_0x575536=_[_0xa30e('0x40')]({},_0x575536,_0x2883a6['options']);var _0x181d29={'where':_0x575536[_0xa30e('0x3e')]};return db[_0xa30e('0x41')][_0xa30e('0x20')](_0x181d29)[_0xa30e('0x27')](function(_0x4abff9){_0x258926[_0xa30e('0x20')]=_0x4abff9;if(_0x2883a6[_0xa30e('0x34')]['includeAll']){_0x575536[_0xa30e('0x42')]=[{'all':!![]}];}return db[_0xa30e('0x41')][_0xa30e('0x43')](_0x575536);})['then'](function(_0x5dec15){_0x258926[_0xa30e('0x44')]=_0x5dec15;return _0x258926;})['then'](respondWithFilteredResult(_0x2f3fd4,_0x575536))[_0xa30e('0x45')](handleError(_0x2f3fd4,null));};exports[_0xa30e('0x46')]=function(_0x19eec3,_0x35f7f3){var _0x591ed6={'raw':!![],'where':{'id':_0x19eec3[_0xa30e('0x47')]['id']}},_0xfeb14a={};_0xfeb14a[_0xa30e('0x33')]=_['keys'](db[_0xa30e('0x41')][_0xa30e('0x30')]);_0xfeb14a[_0xa30e('0x34')]=_[_0xa30e('0x35')](_0x19eec3[_0xa30e('0x34')]);_0xfeb14a[_0xa30e('0x36')]=_[_0xa30e('0x37')](_0xfeb14a['model'],_0xfeb14a['query']);_0x591ed6['attributes']=_[_0xa30e('0x37')](_0xfeb14a['model'],qs[_0xa30e('0x38')](_0x19eec3['query']['fields']));_0x591ed6[_0xa30e('0x39')]=_0x591ed6[_0xa30e('0x39')][_0xa30e('0x3a')]?_0x591ed6[_0xa30e('0x39')]:_0xfeb14a[_0xa30e('0x33')];if(_0x19eec3[_0xa30e('0x34')][_0xa30e('0x48')]){_0x591ed6[_0xa30e('0x42')]=[{'all':!![]}];}_0x591ed6=_[_0xa30e('0x40')]({},_0x591ed6,_0x19eec3[_0xa30e('0x49')]);return db[_0xa30e('0x41')][_0xa30e('0x4a')](_0x591ed6)[_0xa30e('0x27')](handleEntityNotFound(_0x35f7f3,null))[_0xa30e('0x27')](respondWithResult(_0x35f7f3,null))[_0xa30e('0x45')](handleError(_0x35f7f3,null));};exports[_0xa30e('0x4b')]=function(_0x5badaa,_0x1b1c78){return db[_0xa30e('0x41')]['create'](_0x5badaa[_0xa30e('0x4c')],{})[_0xa30e('0x27')](respondWithResult(_0x1b1c78,0xc9))[_0xa30e('0x45')](handleError(_0x1b1c78,null));};exports['update']=function(_0x2a1286,_0x391f35){if(_0x2a1286[_0xa30e('0x4c')]['id']){delete _0x2a1286[_0xa30e('0x4c')]['id'];}return db[_0xa30e('0x41')][_0xa30e('0x4a')]({'where':{'id':_0x2a1286[_0xa30e('0x47')]['id']}})[_0xa30e('0x27')](handleEntityNotFound(_0x391f35,null))[_0xa30e('0x27')](saveUpdates(_0x2a1286[_0xa30e('0x4c')],null))['then'](respondWithResult(_0x391f35,null))['catch'](handleError(_0x391f35,null));};exports[_0xa30e('0x28')]=function(_0x3acdcd,_0x183e0c){return db[_0xa30e('0x41')][_0xa30e('0x4a')]({'where':{'id':_0x3acdcd['params']['id']}})[_0xa30e('0x27')](handleEntityNotFound(_0x183e0c,null))['then'](removeEntity(_0x183e0c,null))['catch'](handleError(_0x183e0c,null));};exports[_0xa30e('0x4d')]=function(_0x2988e4,_0x831404){return db[_0xa30e('0x41')]['describe']()[_0xa30e('0x27')](respondWithResult(_0x831404,null))[_0xa30e('0x45')](handleError(_0x831404,null));};
\ No newline at end of file
index 348c112..038182b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ac3=['JscriptyQuestionReport','report_jscripty_questions','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./jscriptyQuestionReport.attributes','exports'];(function(_0x24f31b,_0x44b8f3){var _0x488401=function(_0x204caf){while(--_0x204caf){_0x24f31b['push'](_0x24f31b['shift']());}};_0x488401(++_0x44b8f3);}(_0x2ac3,0x19a));var _0x32ac=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x2ac3[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0x32ac('0x0'));var util=require(_0x32ac('0x1'));var logger=require('../../config/logger')(_0x32ac('0x2'));var moment=require(_0x32ac('0x3'));var BPromise=require(_0x32ac('0x4'));var rp=require(_0x32ac('0x5'));var fs=require('fs');var path=require(_0x32ac('0x6'));var rimraf=require(_0x32ac('0x7'));var config=require('../../config/environment');var attributes=require(_0x32ac('0x8'));module[_0x32ac('0x9')]=function(_0x8936fb,_0x3e7292){return _0x8936fb['define'](_0x32ac('0xa'),attributes,{'tableName':_0x32ac('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb170=['path','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','JscriptyQuestionReport','report_jscripty_questions','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x2a9f57,_0x4c4c12){var _0x5315e9=function(_0x1da56c){while(--_0x1da56c){_0x2a9f57['push'](_0x2a9f57['shift']());}};_0x5315e9(++_0x4c4c12);}(_0xb170,0xf5));var _0x0b17=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0xb170[_0x199572];return _0x13cfa3;};'use strict';var _=require(_0x0b17('0x0'));var util=require(_0x0b17('0x1'));var logger=require(_0x0b17('0x2'))(_0x0b17('0x3'));var moment=require(_0x0b17('0x4'));var BPromise=require(_0x0b17('0x5'));var rp=require(_0x0b17('0x6'));var fs=require('fs');var path=require(_0x0b17('0x7'));var rimraf=require('rimraf');var config=require(_0x0b17('0x8'));var attributes=require(_0x0b17('0x9'));module[_0x0b17('0xa')]=function(_0x174eb1,_0x591990){return _0x174eb1[_0x0b17('0xb')](_0x0b17('0xc'),attributes,{'tableName':_0x0b17('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 15b1a54..4afb460 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4be3=['message','result','catch','lodash','util','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','error','code','JscriptyQuestionReport,\x20%s,\x20%s'];(function(_0x6929c8,_0x2b1595){var _0x22de85=function(_0x4e759f){while(--_0x4e759f){_0x6929c8['push'](_0x6929c8['shift']());}};_0x22de85(++_0x2b1595);}(_0x4be3,0x17d));var _0x34be=function(_0x5b1e7b,_0x1581ad){_0x5b1e7b=_0x5b1e7b-0x0;var _0x4e6d2a=_0x4be3[_0x5b1e7b];return _0x4e6d2a;};'use strict';var _=require(_0x34be('0x0'));var util=require(_0x34be('0x1'));var moment=require('moment');var BPromise=require(_0x34be('0x2'));var rs=require(_0x34be('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x34be('0x4'));var logger=require(_0x34be('0x5'))(_0x34be('0x6'));var config=require(_0x34be('0x7'));var jayson=require(_0x34be('0x8'));var client=jayson['client'][_0x34be('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1490f6,_0x31a49f,_0x37a00b){return new BPromise(function(_0x390624,_0x5cd388){return client[_0x34be('0xa')](_0x1490f6,_0x37a00b)[_0x34be('0xb')](function(_0x18495e){logger[_0x34be('0xc')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x31a49f,_0x34be('0xd'));logger['debug'](_0x34be('0xe'),_0x31a49f,'request\x20sent',JSON['stringify'](_0x18495e));if(_0x18495e[_0x34be('0xf')]){if(_0x18495e[_0x34be('0xf')][_0x34be('0x10')]===0x1f4){logger[_0x34be('0xf')](_0x34be('0x11'),_0x31a49f,_0x18495e['error']['message']);return _0x5cd388(_0x18495e[_0x34be('0xf')][_0x34be('0x12')]);}logger[_0x34be('0xf')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x31a49f,_0x18495e['error'][_0x34be('0x12')]);return _0x390624(_0x18495e['error'][_0x34be('0x12')]);}else{logger[_0x34be('0xc')](_0x34be('0x11'),_0x31a49f,_0x34be('0xd'));_0x390624(_0x18495e[_0x34be('0x13')][_0x34be('0x12')]);}})[_0x34be('0x14')](function(_0x439ba0){logger['error'](_0x34be('0x11'),_0x31a49f,_0x439ba0);_0x5cd388(_0x439ba0);});});}
\ No newline at end of file
+var _0x2625=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x1cb128,_0x2770eb){var _0x4843e2=function(_0xc5c6b3){while(--_0xc5c6b3){_0x1cb128['push'](_0x1cb128['shift']());}};_0x4843e2(++_0x2770eb);}(_0x2625,0xa1));var _0x5262=function(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0x2625[_0x2cfb58];return _0xd99951;};'use strict';var _=require(_0x5262('0x0'));var util=require(_0x5262('0x1'));var moment=require(_0x5262('0x2'));var BPromise=require(_0x5262('0x3'));var rs=require(_0x5262('0x4'));var fs=require('fs');var Redis=require(_0x5262('0x5'));var db=require(_0x5262('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x5262('0x7'))(_0x5262('0x8'));var config=require(_0x5262('0x9'));var jayson=require(_0x5262('0xa'));var client=jayson[_0x5262('0xb')][_0x5262('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2b5eb1,_0x1b2c37,_0x316c48){return new BPromise(function(_0x5f98aa,_0x3bf8dd){return client[_0x5262('0xd')](_0x2b5eb1,_0x316c48)[_0x5262('0xe')](function(_0x41afcc){logger[_0x5262('0xf')](_0x5262('0x10'),_0x1b2c37,_0x5262('0x11'));logger[_0x5262('0x12')]('JscriptyQuestionReport,\x20%s,\x20%s,\x20%s',_0x1b2c37,'request\x20sent',JSON[_0x5262('0x13')](_0x41afcc));if(_0x41afcc[_0x5262('0x14')]){if(_0x41afcc[_0x5262('0x14')][_0x5262('0x15')]===0x1f4){logger[_0x5262('0x14')](_0x5262('0x10'),_0x1b2c37,_0x41afcc[_0x5262('0x14')][_0x5262('0x16')]);return _0x3bf8dd(_0x41afcc[_0x5262('0x14')]['message']);}logger['error'](_0x5262('0x10'),_0x1b2c37,_0x41afcc[_0x5262('0x14')][_0x5262('0x16')]);return _0x5f98aa(_0x41afcc[_0x5262('0x14')][_0x5262('0x16')]);}else{logger[_0x5262('0xf')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x1b2c37,'request\x20sent');_0x5f98aa(_0x41afcc['result'][_0x5262('0x16')]);}})[_0x5262('0x17')](function(_0x25bbb6){logger[_0x5262('0x14')](_0x5262('0x10'),_0x1b2c37,_0x25bbb6);_0x3bf8dd(_0x25bbb6);});});}
\ No newline at end of file
index 96d08db..828492f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06f5=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/questions','getQuestions','post','create','put','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x20fe4c,_0x33c3f3){var _0x215a03=function(_0x6cbd9){while(--_0x6cbd9){_0x20fe4c['push'](_0x20fe4c['shift']());}};_0x215a03(++_0x33c3f3);}(_0x06f5,0x149));var _0x506f=function(_0x5ce358,_0x43133e){_0x5ce358=_0x5ce358-0x0;var _0x11f49a=_0x06f5[_0x5ce358];return _0x11f49a;};'use strict';var multer=require('multer');var util=require(_0x506f('0x0'));var path=require(_0x506f('0x1'));var timeout=require(_0x506f('0x2'));var express=require(_0x506f('0x3'));var router=express[_0x506f('0x4')]();var fs_extra=require(_0x506f('0x5'));var auth=require(_0x506f('0x6'));var interaction=require(_0x506f('0x7'));var config=require(_0x506f('0x8'));var controller=require('./jscriptySessionReport.controller');router[_0x506f('0x9')]('/',auth[_0x506f('0xa')](),controller[_0x506f('0xb')]);router[_0x506f('0x9')](_0x506f('0xc'),auth[_0x506f('0xa')](),controller[_0x506f('0xd')]);router['get'](_0x506f('0xe'),auth[_0x506f('0xa')](),controller[_0x506f('0xf')]);router[_0x506f('0x9')](_0x506f('0x10'),auth[_0x506f('0xa')](),controller[_0x506f('0x11')]);router[_0x506f('0x12')]('/',auth[_0x506f('0xa')](),controller[_0x506f('0x13')]);router[_0x506f('0x14')](_0x506f('0xe'),auth[_0x506f('0xa')](),controller[_0x506f('0x15')]);router[_0x506f('0x16')](_0x506f('0xe'),auth[_0x506f('0xa')](),controller[_0x506f('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0xf05b=['Router','fs-extra','../../components/auth/service','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','index','describe','/:id','show','getQuestions','post','create','put','delete','exports','multer','util','connect-timeout'];(function(_0x231a47,_0x46a963){var _0x48d7c9=function(_0x1e69b1){while(--_0x1e69b1){_0x231a47['push'](_0x231a47['shift']());}};_0x48d7c9(++_0x46a963);}(_0xf05b,0x115));var _0xbf05=function(_0x3c2559,_0x3fa5de){_0x3c2559=_0x3c2559-0x0;var _0x5937fd=_0xf05b[_0x3c2559];return _0x5937fd;};'use strict';var multer=require(_0xbf05('0x0'));var util=require(_0xbf05('0x1'));var path=require('path');var timeout=require(_0xbf05('0x2'));var express=require('express');var router=express[_0xbf05('0x3')]();var fs_extra=require(_0xbf05('0x4'));var auth=require(_0xbf05('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xbf05('0x6'));var controller=require(_0xbf05('0x7'));router[_0xbf05('0x8')]('/',auth[_0xbf05('0x9')](),controller[_0xbf05('0xa')]);router[_0xbf05('0x8')]('/describe',auth[_0xbf05('0x9')](),controller[_0xbf05('0xb')]);router['get'](_0xbf05('0xc'),auth[_0xbf05('0x9')](),controller[_0xbf05('0xd')]);router[_0xbf05('0x8')]('/:id/questions',auth['isAuthenticated'](),controller[_0xbf05('0xe')]);router[_0xbf05('0xf')]('/',auth[_0xbf05('0x9')](),controller[_0xbf05('0x10')]);router[_0xbf05('0x11')](_0xbf05('0xc'),auth[_0xbf05('0x9')](),controller['update']);router[_0xbf05('0x12')](_0xbf05('0xc'),auth[_0xbf05('0x9')](),controller['destroy']);module[_0xbf05('0x13')]=router;
\ No newline at end of file
index 5415f66..903313c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91ab=['endtime','format','YYYY-MM-DD\x20HH:mm:ss','STRING','moment','exports','setDataValue','starttime'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x91ab,0x194));var _0xb91a=function(_0x424a9a,_0x2dd9af){_0x424a9a=_0x424a9a-0x0;var _0xa7831c=_0x91ab[_0x424a9a];return _0xa7831c;};'use strict';var moment=require(_0xb91a('0x0'));var Sequelize=require('sequelize');module[_0xb91a('0x1')]={'starttime':{'type':Sequelize['DATE'],'set':function(_0x4e2b27){this[_0xb91a('0x2')](_0xb91a('0x3'),_0x4e2b27);this[_0xb91a('0x2')](_0xb91a('0x4'),moment()[_0xb91a('0x5')](_0xb91a('0x6')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize[_0xb91a('0x7')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xb91a('0x7')]},'uniqueid':{'type':Sequelize[_0xb91a('0x7')]},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xb91a('0x7')]},'completed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xa959=['starttime','endtime','YYYY-MM-DD\x20HH:mm:ss','STRING','BOOLEAN','sequelize','DATE'];(function(_0x15a18d,_0x13dbf8){var _0x1aba4f=function(_0x6e4b46){while(--_0x6e4b46){_0x15a18d['push'](_0x15a18d['shift']());}};_0x1aba4f(++_0x13dbf8);}(_0xa959,0x75));var _0x9a95=function(_0x235061,_0xa95e0e){_0x235061=_0x235061-0x0;var _0x275044=_0xa959[_0x235061];return _0x275044;};'use strict';var moment=require('moment');var Sequelize=require(_0x9a95('0x0'));module['exports']={'starttime':{'type':Sequelize[_0x9a95('0x1')],'set':function(_0x230a63){this['setDataValue'](_0x9a95('0x2'),_0x230a63);this['setDataValue'](_0x9a95('0x3'),moment()['format'](_0x9a95('0x4')));}},'endtime':{'type':Sequelize['DATE']},'membername':{'type':Sequelize['STRING']},'projectname':{'type':Sequelize[_0x9a95('0x5')]},'queue':{'type':Sequelize[_0x9a95('0x5')]},'uniqueid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x9a95('0x5')]},'completed':{'type':Sequelize[_0x9a95('0x6')],'defaultValue':![]}};
\ No newline at end of file
index 6eb3e57..4bc25c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b43=['save','update','then','destroy','send','map','JscriptySessionReport','rawAttributes','key','model','name','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','JscriptyQuestionReport','hasOwnProperty','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply'];(function(_0x1c9c24,_0x2a517b){var _0x349c69=function(_0x259ff7){while(--_0x259ff7){_0x1c9c24['push'](_0x1c9c24['shift']());}};_0x349c69(++_0x2a517b);}(_0x3b43,0x1aa));var _0x33b4=function(_0x695822,_0x17a3e5){_0x695822=_0x695822-0x0;var _0x570433=_0x3b43[_0x695822];return _0x570433;};'use strict';var emlformat=require(_0x33b4('0x0'));var rimraf=require(_0x33b4('0x1'));var zipdir=require(_0x33b4('0x2'));var jsonpatch=require(_0x33b4('0x3'));var rp=require(_0x33b4('0x4'));var moment=require(_0x33b4('0x5'));var BPromise=require(_0x33b4('0x6'));var Mustache=require(_0x33b4('0x7'));var util=require('util');var path=require('path');var sox=require(_0x33b4('0x8'));var csv=require(_0x33b4('0x9'));var ejs=require(_0x33b4('0xa'));var fs=require('fs');var fs_extra=require(_0x33b4('0xb'));var _=require(_0x33b4('0xc'));var squel=require(_0x33b4('0xd'));var crypto=require(_0x33b4('0xe'));var jsforce=require(_0x33b4('0xf'));var deskjs=require(_0x33b4('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x33b4('0x11'));var authService=require(_0x33b4('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x33b4('0x13'));var logger=require(_0x33b4('0x14'))(_0x33b4('0x15'));var utils=require(_0x33b4('0x16'));var config=require(_0x33b4('0x17'));var licenseUtil=require(_0x33b4('0x18'));var db=require(_0x33b4('0x19'))['db'];function respondWithStatusCode(_0x5cfa63,_0x417771){_0x417771=_0x417771||0xcc;return function(_0x23c6c7){if(_0x23c6c7){return _0x5cfa63[_0x33b4('0x1a')](_0x417771);}return _0x5cfa63[_0x33b4('0x1b')](_0x417771)[_0x33b4('0x1c')]();};}function respondWithResult(_0x3c2e1b,_0x22a233){_0x22a233=_0x22a233||0xc8;return function(_0x12e54a){if(_0x12e54a){return _0x3c2e1b[_0x33b4('0x1b')](_0x22a233)[_0x33b4('0x1d')](_0x12e54a);}};}function respondWithFilteredResult(_0x50d59a,_0x39524a){return function(_0x21a7b5){if(_0x21a7b5){var _0x5eb5f0=typeof _0x39524a[_0x33b4('0x1e')]==='undefined'&&typeof _0x39524a[_0x33b4('0x1f')]==='undefined';var _0x27ffd3=_0x21a7b5[_0x33b4('0x20')];var _0x3dbd39=_0x5eb5f0?0x0:_0x39524a[_0x33b4('0x1e')];var _0x4c4983=_0x5eb5f0?_0x21a7b5[_0x33b4('0x20')]:_0x39524a[_0x33b4('0x1e')]+_0x39524a[_0x33b4('0x1f')];var _0x45e5b3;if(_0x4c4983>=_0x27ffd3){_0x4c4983=_0x27ffd3;_0x45e5b3=0xc8;}else{_0x45e5b3=0xce;}_0x50d59a[_0x33b4('0x1b')](_0x45e5b3);return _0x50d59a[_0x33b4('0x21')](_0x33b4('0x22'),_0x3dbd39+'-'+_0x4c4983+'/'+_0x27ffd3)[_0x33b4('0x1d')](_0x21a7b5);}return null;};}function patchUpdates(_0x1a6416){return function(_0x69c109){try{jsonpatch[_0x33b4('0x23')](_0x69c109,_0x1a6416,!![]);}catch(_0x4a01a7){return BPromise['reject'](_0x4a01a7);}return _0x69c109[_0x33b4('0x24')]();};}function saveUpdates(_0x479165,_0x54a010){return function(_0x5da4db){if(_0x5da4db){return _0x5da4db[_0x33b4('0x25')](_0x479165)[_0x33b4('0x26')](function(_0x3bcd9f){return _0x3bcd9f;});}return null;};}function removeEntity(_0x54dddb,_0x53f5b1){return function(_0xa9839){if(_0xa9839){return _0xa9839[_0x33b4('0x27')]()[_0x33b4('0x26')](function(){_0x54dddb['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3186ed,_0x5153b2){return function(_0x58b881){if(!_0x58b881){_0x3186ed['sendStatus'](0x194);}return _0x58b881;};}function handleError(_0x27d5e0,_0x5d2686){_0x5d2686=_0x5d2686||0x1f4;return function(_0x50b11e){logger['error'](_0x50b11e['stack']);if(_0x50b11e['name']){delete _0x50b11e['name'];}_0x27d5e0['status'](_0x5d2686)[_0x33b4('0x28')](_0x50b11e);};}exports['index']=function(_0x5d5589,_0x2e19c7){var _0x508c53={},_0x45c6bc={},_0x1a51f5={'count':0x0,'rows':[]};var _0x487a1d=_[_0x33b4('0x29')](db[_0x33b4('0x2a')][_0x33b4('0x2b')],function(_0x14b8e2){return{'name':_0x14b8e2['fieldName'],'type':_0x14b8e2['type'][_0x33b4('0x2c')]};});_0x45c6bc[_0x33b4('0x2d')]=_[_0x33b4('0x29')](_0x487a1d,_0x33b4('0x2e'));_0x45c6bc[_0x33b4('0x2f')]=_[_0x33b4('0x30')](_0x5d5589[_0x33b4('0x2f')]);_0x45c6bc[_0x33b4('0x31')]=_[_0x33b4('0x32')](_0x45c6bc[_0x33b4('0x2d')],_0x45c6bc['query']);_0x508c53[_0x33b4('0x33')]=_[_0x33b4('0x32')](_0x45c6bc[_0x33b4('0x2d')],qs[_0x33b4('0x34')](_0x5d5589[_0x33b4('0x2f')]['fields']));_0x508c53[_0x33b4('0x33')]=_0x508c53['attributes'][_0x33b4('0x35')]?_0x508c53['attributes']:_0x45c6bc[_0x33b4('0x2d')];if(!_0x5d5589[_0x33b4('0x2f')]['hasOwnProperty'](_0x33b4('0x36'))){_0x508c53['limit']=qs[_0x33b4('0x1f')](_0x5d5589[_0x33b4('0x2f')][_0x33b4('0x1f')]);_0x508c53['offset']=qs['offset'](_0x5d5589[_0x33b4('0x2f')][_0x33b4('0x1e')]);}_0x508c53[_0x33b4('0x37')]=qs[_0x33b4('0x38')](_0x5d5589['query'][_0x33b4('0x38')]);_0x508c53[_0x33b4('0x39')]=qs[_0x33b4('0x31')](_[_0x33b4('0x3a')](_0x5d5589[_0x33b4('0x2f')],_0x45c6bc[_0x33b4('0x31')]),_0x487a1d);if(_0x5d5589[_0x33b4('0x2f')][_0x33b4('0x3b')]){_0x508c53[_0x33b4('0x39')]=_['merge'](_0x508c53[_0x33b4('0x39')],{'$or':_[_0x33b4('0x29')](_0x487a1d,function(_0x5306ab){if(_0x5306ab[_0x33b4('0x3c')]!==_0x33b4('0x3d')){var _0x39fce8={};_0x39fce8[_0x5306ab[_0x33b4('0x2e')]]={'$like':'%'+_0x5d5589[_0x33b4('0x2f')][_0x33b4('0x3b')]+'%'};return _0x39fce8;}})});}_0x508c53=_[_0x33b4('0x3e')]({},_0x508c53,_0x5d5589[_0x33b4('0x3f')]);var _0x129a95={'where':_0x508c53['where']};return db[_0x33b4('0x2a')][_0x33b4('0x20')](_0x129a95)[_0x33b4('0x26')](function(_0x5f37da){_0x1a51f5[_0x33b4('0x20')]=_0x5f37da;if(_0x5d5589[_0x33b4('0x2f')][_0x33b4('0x40')]){_0x508c53[_0x33b4('0x41')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0x33b4('0x42')](_0x508c53);})[_0x33b4('0x26')](function(_0x332b62){_0x1a51f5[_0x33b4('0x43')]=_0x332b62;return _0x1a51f5;})['then'](respondWithFilteredResult(_0x2e19c7,_0x508c53))[_0x33b4('0x44')](handleError(_0x2e19c7,null));};exports[_0x33b4('0x45')]=function(_0x40f31e,_0x58e751){var _0x109e3b={'raw':!![],'where':{'id':_0x40f31e[_0x33b4('0x46')]['id']}},_0x1a1c4b={};_0x1a1c4b['model']=_[_0x33b4('0x30')](db['JscriptySessionReport'][_0x33b4('0x2b')]);_0x1a1c4b[_0x33b4('0x2f')]=_[_0x33b4('0x30')](_0x40f31e['query']);_0x1a1c4b[_0x33b4('0x31')]=_['intersection'](_0x1a1c4b[_0x33b4('0x2d')],_0x1a1c4b[_0x33b4('0x2f')]);_0x109e3b['attributes']=_[_0x33b4('0x32')](_0x1a1c4b['model'],qs[_0x33b4('0x34')](_0x40f31e['query'][_0x33b4('0x34')]));_0x109e3b[_0x33b4('0x33')]=_0x109e3b[_0x33b4('0x33')][_0x33b4('0x35')]?_0x109e3b[_0x33b4('0x33')]:_0x1a1c4b['model'];if(_0x40f31e[_0x33b4('0x2f')][_0x33b4('0x40')]){_0x109e3b['include']=[{'all':!![]}];}_0x109e3b=_[_0x33b4('0x3e')]({},_0x109e3b,_0x40f31e['options']);return db['JscriptySessionReport'][_0x33b4('0x47')](_0x109e3b)[_0x33b4('0x26')](handleEntityNotFound(_0x58e751,null))[_0x33b4('0x26')](respondWithResult(_0x58e751,null))[_0x33b4('0x44')](handleError(_0x58e751,null));};exports[_0x33b4('0x48')]=function(_0x6eeafa,_0x5803f5){return db['JscriptySessionReport']['create'](_0x6eeafa['body'],{})['then'](respondWithResult(_0x5803f5,0xc9))['catch'](handleError(_0x5803f5,null));};exports[_0x33b4('0x25')]=function(_0x4a7060,_0x55ae3f){if(_0x4a7060['body']['id']){delete _0x4a7060[_0x33b4('0x49')]['id'];}return db[_0x33b4('0x2a')][_0x33b4('0x47')]({'where':{'id':_0x4a7060[_0x33b4('0x46')]['id']}})['then'](handleEntityNotFound(_0x55ae3f,null))[_0x33b4('0x26')](saveUpdates(_0x4a7060[_0x33b4('0x49')],null))[_0x33b4('0x26')](respondWithResult(_0x55ae3f,null))[_0x33b4('0x44')](handleError(_0x55ae3f,null));};exports['destroy']=function(_0x4652ab,_0x319575){return db[_0x33b4('0x2a')][_0x33b4('0x47')]({'where':{'id':_0x4652ab[_0x33b4('0x46')]['id']}})[_0x33b4('0x26')](handleEntityNotFound(_0x319575,null))[_0x33b4('0x26')](removeEntity(_0x319575,null))[_0x33b4('0x44')](handleError(_0x319575,null));};exports[_0x33b4('0x4a')]=function(_0x5e90f9,_0x3d8c6e){return db[_0x33b4('0x2a')]['describe']()[_0x33b4('0x26')](respondWithResult(_0x3d8c6e,null))[_0x33b4('0x44')](handleError(_0x3d8c6e,null));};exports['getQuestions']=function(_0xf5ee26,_0x2a4e62,_0x44a5f3){var _0x599b8f={'raw':!![],'where':{}};var _0x479a27={};var _0x13dce6={'count':0x0,'rows':[]};return db['JscriptySessionReport']['findOne']({'where':{'id':_0xf5ee26[_0x33b4('0x46')]['id']}})[_0x33b4('0x26')](handleEntityNotFound(_0x2a4e62,null))['then'](function(_0x273152){if(_0x273152){_0x479a27[_0x33b4('0x2d')]=_['keys'](db[_0x33b4('0x4b')][_0x33b4('0x2b')]);_0x479a27[_0x33b4('0x2f')]=_[_0x33b4('0x30')](_0xf5ee26[_0x33b4('0x2f')]);_0x479a27[_0x33b4('0x31')]=_[_0x33b4('0x32')](_0x479a27[_0x33b4('0x2d')],_0x479a27[_0x33b4('0x2f')]);_0x599b8f[_0x33b4('0x33')]=_['intersection'](_0x479a27[_0x33b4('0x2d')],qs['fields'](_0xf5ee26[_0x33b4('0x2f')][_0x33b4('0x34')]));_0x599b8f[_0x33b4('0x33')]=_0x599b8f[_0x33b4('0x33')][_0x33b4('0x35')]?_0x599b8f['attributes']:_0x479a27[_0x33b4('0x2d')];if(!_0xf5ee26[_0x33b4('0x2f')][_0x33b4('0x4c')]('nolimit')){_0x599b8f['limit']=qs[_0x33b4('0x1f')](_0xf5ee26[_0x33b4('0x2f')][_0x33b4('0x1f')]);_0x599b8f['offset']=qs[_0x33b4('0x1e')](_0xf5ee26['query'][_0x33b4('0x1e')]);}_0x599b8f[_0x33b4('0x37')]=qs[_0x33b4('0x38')](_0xf5ee26[_0x33b4('0x2f')][_0x33b4('0x38')]);_0x599b8f[_0x33b4('0x39')]=qs[_0x33b4('0x31')](_['pick'](_0xf5ee26[_0x33b4('0x2f')],_0x479a27['filters']));_0x599b8f[_0x33b4('0x39')]['SessionId']=_0x273152['id'];if(_0xf5ee26[_0x33b4('0x2f')][_0x33b4('0x3b')]){_0x599b8f['where']=_[_0x33b4('0x3e')](_0x599b8f[_0x33b4('0x39')],{'$or':_[_0x33b4('0x29')](_0x599b8f[_0x33b4('0x33')],function(_0x227de1){var _0x113476={};_0x113476[_0x227de1]={'$like':'%'+_0xf5ee26[_0x33b4('0x2f')]['filter']+'%'};return _0x113476;})});}_0x599b8f=_[_0x33b4('0x3e')]({},_0x599b8f,_0xf5ee26['options']);return db[_0x33b4('0x4b')]['count']({'where':_0x599b8f[_0x33b4('0x39')]})[_0x33b4('0x26')](function(_0x444b4f){_0x13dce6[_0x33b4('0x20')]=_0x444b4f;if(_0xf5ee26[_0x33b4('0x2f')][_0x33b4('0x40')]){_0x599b8f[_0x33b4('0x41')]=[{'all':!![]}];}return db[_0x33b4('0x4b')][_0x33b4('0x42')](_0x599b8f);})[_0x33b4('0x26')](function(_0x1efa13){_0x13dce6['rows']=_0x1efa13;return _0x13dce6;});}})[_0x33b4('0x26')](respondWithFilteredResult(_0x2a4e62,_0x599b8f))[_0x33b4('0x44')](handleError(_0x2a4e62,null));};
\ No newline at end of file
+var _0x4c0f=['SessionId','JscriptyQuestionReport','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','destroy','then','stack','name','send','index','map','JscriptySessionReport','rawAttributes','fieldName','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','type','VIRTUAL','filter','merge','count','includeAll','include','findAll','rows','show','params','keys','options','create','body','catch','update','find','describe','getQuestions'];(function(_0x591896,_0x386bac){var _0x5eaa48=function(_0x10ca6a){while(--_0x10ca6a){_0x591896['push'](_0x591896['shift']());}};_0x5eaa48(++_0x386bac);}(_0x4c0f,0x19c));var _0xf4c0=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x4c0f[_0x502c7d];return _0x30b7ed;};'use strict';var emlformat=require(_0xf4c0('0x0'));var rimraf=require(_0xf4c0('0x1'));var zipdir=require(_0xf4c0('0x2'));var jsonpatch=require(_0xf4c0('0x3'));var rp=require(_0xf4c0('0x4'));var moment=require('moment');var BPromise=require(_0xf4c0('0x5'));var Mustache=require(_0xf4c0('0x6'));var util=require(_0xf4c0('0x7'));var path=require(_0xf4c0('0x8'));var sox=require(_0xf4c0('0x9'));var csv=require(_0xf4c0('0xa'));var ejs=require(_0xf4c0('0xb'));var fs=require('fs');var fs_extra=require(_0xf4c0('0xc'));var _=require(_0xf4c0('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf4c0('0xe'));var deskjs=require(_0xf4c0('0xf'));var toCsv=require(_0xf4c0('0xa'));var querystring=require(_0xf4c0('0x10'));var Papa=require(_0xf4c0('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xf4c0('0x12'));var as=require(_0xf4c0('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf4c0('0x14'));var utils=require(_0xf4c0('0x15'));var config=require(_0xf4c0('0x16'));var licenseUtil=require(_0xf4c0('0x17'));var db=require(_0xf4c0('0x18'))['db'];function respondWithStatusCode(_0x417548,_0x475d69){_0x475d69=_0x475d69||0xcc;return function(_0xc2671){if(_0xc2671){return _0x417548[_0xf4c0('0x19')](_0x475d69);}return _0x417548[_0xf4c0('0x1a')](_0x475d69)[_0xf4c0('0x1b')]();};}function respondWithResult(_0x2a8267,_0x4e13b0){_0x4e13b0=_0x4e13b0||0xc8;return function(_0x2eaf46){if(_0x2eaf46){return _0x2a8267[_0xf4c0('0x1a')](_0x4e13b0)[_0xf4c0('0x1c')](_0x2eaf46);}};}function respondWithFilteredResult(_0x2fe7e8,_0x156624){return function(_0x42059a){if(_0x42059a){var _0x5eace7=typeof _0x156624[_0xf4c0('0x1d')]===_0xf4c0('0x1e')&&typeof _0x156624[_0xf4c0('0x1f')]==='undefined';var _0x3b1041=_0x42059a['count'];var _0x3a66ca=_0x5eace7?0x0:_0x156624[_0xf4c0('0x1d')];var _0x2b8c04=_0x5eace7?_0x42059a['count']:_0x156624[_0xf4c0('0x1d')]+_0x156624[_0xf4c0('0x1f')];var _0x3d5987;if(_0x2b8c04>=_0x3b1041){_0x2b8c04=_0x3b1041;_0x3d5987=0xc8;}else{_0x3d5987=0xce;}_0x2fe7e8['status'](_0x3d5987);return _0x2fe7e8[_0xf4c0('0x20')](_0xf4c0('0x21'),_0x3a66ca+'-'+_0x2b8c04+'/'+_0x3b1041)[_0xf4c0('0x1c')](_0x42059a);}return null;};}function patchUpdates(_0x49d407){return function(_0x3703f9){try{jsonpatch[_0xf4c0('0x22')](_0x3703f9,_0x49d407,!![]);}catch(_0x796b62){return BPromise[_0xf4c0('0x23')](_0x796b62);}return _0x3703f9[_0xf4c0('0x24')]();};}function saveUpdates(_0x2f364d,_0x811ff3){return function(_0xa35e3){if(_0xa35e3){return _0xa35e3['update'](_0x2f364d)['then'](function(_0x2a2a2b){return _0x2a2a2b;});}return null;};}function removeEntity(_0x4f6901,_0x175e7a){return function(_0x4eab62){if(_0x4eab62){return _0x4eab62[_0xf4c0('0x25')]()[_0xf4c0('0x26')](function(){_0x4f6901[_0xf4c0('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x36d6b0,_0x568a40){return function(_0x23d445){if(!_0x23d445){_0x36d6b0[_0xf4c0('0x19')](0x194);}return _0x23d445;};}function handleError(_0x39420c,_0x4fd260){_0x4fd260=_0x4fd260||0x1f4;return function(_0x5bffcd){logger['error'](_0x5bffcd[_0xf4c0('0x27')]);if(_0x5bffcd[_0xf4c0('0x28')]){delete _0x5bffcd[_0xf4c0('0x28')];}_0x39420c['status'](_0x4fd260)[_0xf4c0('0x29')](_0x5bffcd);};}exports[_0xf4c0('0x2a')]=function(_0x4a5df0,_0xd272b7){var _0x45471e={},_0x42eb1b={},_0x5e7efa={'count':0x0,'rows':[]};var _0x52aafb=_[_0xf4c0('0x2b')](db[_0xf4c0('0x2c')][_0xf4c0('0x2d')],function(_0x23fd1f){return{'name':_0x23fd1f[_0xf4c0('0x2e')],'type':_0x23fd1f['type']['key']};});_0x42eb1b['model']=_[_0xf4c0('0x2b')](_0x52aafb,_0xf4c0('0x28'));_0x42eb1b[_0xf4c0('0x2f')]=_['keys'](_0x4a5df0['query']);_0x42eb1b[_0xf4c0('0x30')]=_[_0xf4c0('0x31')](_0x42eb1b[_0xf4c0('0x32')],_0x42eb1b[_0xf4c0('0x2f')]);_0x45471e[_0xf4c0('0x33')]=_[_0xf4c0('0x31')](_0x42eb1b[_0xf4c0('0x32')],qs[_0xf4c0('0x34')](_0x4a5df0[_0xf4c0('0x2f')]['fields']));_0x45471e['attributes']=_0x45471e[_0xf4c0('0x33')][_0xf4c0('0x35')]?_0x45471e['attributes']:_0x42eb1b[_0xf4c0('0x32')];if(!_0x4a5df0[_0xf4c0('0x2f')][_0xf4c0('0x36')](_0xf4c0('0x37'))){_0x45471e[_0xf4c0('0x1f')]=qs['limit'](_0x4a5df0['query'][_0xf4c0('0x1f')]);_0x45471e['offset']=qs['offset'](_0x4a5df0['query'][_0xf4c0('0x1d')]);}_0x45471e[_0xf4c0('0x38')]=qs[_0xf4c0('0x39')](_0x4a5df0['query'][_0xf4c0('0x39')]);_0x45471e[_0xf4c0('0x3a')]=qs[_0xf4c0('0x30')](_[_0xf4c0('0x3b')](_0x4a5df0[_0xf4c0('0x2f')],_0x42eb1b[_0xf4c0('0x30')]),_0x52aafb);if(_0x4a5df0[_0xf4c0('0x2f')]['filter']){_0x45471e[_0xf4c0('0x3a')]=_['merge'](_0x45471e['where'],{'$or':_[_0xf4c0('0x2b')](_0x52aafb,function(_0x26aae1){if(_0x26aae1[_0xf4c0('0x3c')]!==_0xf4c0('0x3d')){var _0x557308={};_0x557308[_0x26aae1[_0xf4c0('0x28')]]={'$like':'%'+_0x4a5df0[_0xf4c0('0x2f')][_0xf4c0('0x3e')]+'%'};return _0x557308;}})});}_0x45471e=_[_0xf4c0('0x3f')]({},_0x45471e,_0x4a5df0['options']);var _0x5f29eb={'where':_0x45471e['where']};return db[_0xf4c0('0x2c')]['count'](_0x5f29eb)[_0xf4c0('0x26')](function(_0xb48914){_0x5e7efa[_0xf4c0('0x40')]=_0xb48914;if(_0x4a5df0['query'][_0xf4c0('0x41')]){_0x45471e[_0xf4c0('0x42')]=[{'all':!![]}];}return db[_0xf4c0('0x2c')][_0xf4c0('0x43')](_0x45471e);})['then'](function(_0x46a8be){_0x5e7efa[_0xf4c0('0x44')]=_0x46a8be;return _0x5e7efa;})[_0xf4c0('0x26')](respondWithFilteredResult(_0xd272b7,_0x45471e))['catch'](handleError(_0xd272b7,null));};exports[_0xf4c0('0x45')]=function(_0x3257b3,_0xdaf529){var _0x39a33d={'raw':!![],'where':{'id':_0x3257b3[_0xf4c0('0x46')]['id']}},_0x3e3d7c={};_0x3e3d7c[_0xf4c0('0x32')]=_[_0xf4c0('0x47')](db[_0xf4c0('0x2c')]['rawAttributes']);_0x3e3d7c['query']=_[_0xf4c0('0x47')](_0x3257b3[_0xf4c0('0x2f')]);_0x3e3d7c[_0xf4c0('0x30')]=_[_0xf4c0('0x31')](_0x3e3d7c[_0xf4c0('0x32')],_0x3e3d7c['query']);_0x39a33d['attributes']=_[_0xf4c0('0x31')](_0x3e3d7c[_0xf4c0('0x32')],qs[_0xf4c0('0x34')](_0x3257b3[_0xf4c0('0x2f')][_0xf4c0('0x34')]));_0x39a33d[_0xf4c0('0x33')]=_0x39a33d['attributes'][_0xf4c0('0x35')]?_0x39a33d['attributes']:_0x3e3d7c[_0xf4c0('0x32')];if(_0x3257b3['query']['includeAll']){_0x39a33d[_0xf4c0('0x42')]=[{'all':!![]}];}_0x39a33d=_['merge']({},_0x39a33d,_0x3257b3[_0xf4c0('0x48')]);return db[_0xf4c0('0x2c')]['find'](_0x39a33d)['then'](handleEntityNotFound(_0xdaf529,null))[_0xf4c0('0x26')](respondWithResult(_0xdaf529,null))['catch'](handleError(_0xdaf529,null));};exports[_0xf4c0('0x49')]=function(_0x1bef2f,_0xe1b7f9){return db[_0xf4c0('0x2c')][_0xf4c0('0x49')](_0x1bef2f[_0xf4c0('0x4a')],{})[_0xf4c0('0x26')](respondWithResult(_0xe1b7f9,0xc9))[_0xf4c0('0x4b')](handleError(_0xe1b7f9,null));};exports[_0xf4c0('0x4c')]=function(_0x156ae0,_0x420b5b){if(_0x156ae0['body']['id']){delete _0x156ae0[_0xf4c0('0x4a')]['id'];}return db[_0xf4c0('0x2c')][_0xf4c0('0x4d')]({'where':{'id':_0x156ae0['params']['id']}})['then'](handleEntityNotFound(_0x420b5b,null))[_0xf4c0('0x26')](saveUpdates(_0x156ae0[_0xf4c0('0x4a')],null))[_0xf4c0('0x26')](respondWithResult(_0x420b5b,null))['catch'](handleError(_0x420b5b,null));};exports[_0xf4c0('0x25')]=function(_0x180bb1,_0x1a0736){return db[_0xf4c0('0x2c')][_0xf4c0('0x4d')]({'where':{'id':_0x180bb1[_0xf4c0('0x46')]['id']}})[_0xf4c0('0x26')](handleEntityNotFound(_0x1a0736,null))[_0xf4c0('0x26')](removeEntity(_0x1a0736,null))['catch'](handleError(_0x1a0736,null));};exports['describe']=function(_0x53077f,_0x918d65){return db['JscriptySessionReport'][_0xf4c0('0x4e')]()[_0xf4c0('0x26')](respondWithResult(_0x918d65,null))[_0xf4c0('0x4b')](handleError(_0x918d65,null));};exports[_0xf4c0('0x4f')]=function(_0x4a4d6c,_0x3d8e35,_0x3a8e9c){var _0x39bc76={'raw':!![],'where':{}};var _0x23b6f9={};var _0x2bcd42={'count':0x0,'rows':[]};return db[_0xf4c0('0x2c')]['findOne']({'where':{'id':_0x4a4d6c[_0xf4c0('0x46')]['id']}})['then'](handleEntityNotFound(_0x3d8e35,null))[_0xf4c0('0x26')](function(_0x5e2bcb){if(_0x5e2bcb){_0x23b6f9[_0xf4c0('0x32')]=_[_0xf4c0('0x47')](db['JscriptyQuestionReport'][_0xf4c0('0x2d')]);_0x23b6f9['query']=_['keys'](_0x4a4d6c[_0xf4c0('0x2f')]);_0x23b6f9[_0xf4c0('0x30')]=_['intersection'](_0x23b6f9[_0xf4c0('0x32')],_0x23b6f9[_0xf4c0('0x2f')]);_0x39bc76['attributes']=_[_0xf4c0('0x31')](_0x23b6f9[_0xf4c0('0x32')],qs[_0xf4c0('0x34')](_0x4a4d6c[_0xf4c0('0x2f')]['fields']));_0x39bc76[_0xf4c0('0x33')]=_0x39bc76[_0xf4c0('0x33')][_0xf4c0('0x35')]?_0x39bc76[_0xf4c0('0x33')]:_0x23b6f9['model'];if(!_0x4a4d6c[_0xf4c0('0x2f')][_0xf4c0('0x36')](_0xf4c0('0x37'))){_0x39bc76[_0xf4c0('0x1f')]=qs[_0xf4c0('0x1f')](_0x4a4d6c[_0xf4c0('0x2f')][_0xf4c0('0x1f')]);_0x39bc76['offset']=qs[_0xf4c0('0x1d')](_0x4a4d6c[_0xf4c0('0x2f')][_0xf4c0('0x1d')]);}_0x39bc76[_0xf4c0('0x38')]=qs[_0xf4c0('0x39')](_0x4a4d6c['query'][_0xf4c0('0x39')]);_0x39bc76[_0xf4c0('0x3a')]=qs['filters'](_['pick'](_0x4a4d6c[_0xf4c0('0x2f')],_0x23b6f9[_0xf4c0('0x30')]));_0x39bc76['where'][_0xf4c0('0x50')]=_0x5e2bcb['id'];if(_0x4a4d6c['query'][_0xf4c0('0x3e')]){_0x39bc76['where']=_[_0xf4c0('0x3f')](_0x39bc76[_0xf4c0('0x3a')],{'$or':_[_0xf4c0('0x2b')](_0x39bc76['attributes'],function(_0x446fc3){var _0x5a8518={};_0x5a8518[_0x446fc3]={'$like':'%'+_0x4a4d6c[_0xf4c0('0x2f')][_0xf4c0('0x3e')]+'%'};return _0x5a8518;})});}_0x39bc76=_[_0xf4c0('0x3f')]({},_0x39bc76,_0x4a4d6c['options']);return db[_0xf4c0('0x51')][_0xf4c0('0x40')]({'where':_0x39bc76[_0xf4c0('0x3a')]})[_0xf4c0('0x26')](function(_0x501a46){_0x2bcd42[_0xf4c0('0x40')]=_0x501a46;if(_0x4a4d6c[_0xf4c0('0x2f')][_0xf4c0('0x41')]){_0x39bc76[_0xf4c0('0x42')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0xf4c0('0x43')](_0x39bc76);})[_0xf4c0('0x26')](function(_0x1fac77){_0x2bcd42['rows']=_0x1fac77;return _0x2bcd42;});}})[_0xf4c0('0x26')](respondWithFilteredResult(_0x3d8e35,_0x39bc76))['catch'](handleError(_0x3d8e35,null));};
\ No newline at end of file
index d077244..2ad692a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f9d=['define','JscriptySessionReport','report_jscripty_sessions','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptySessionReport.attributes'];(function(_0x3f4875,_0x1eee06){var _0x1727cf=function(_0x92fc15){while(--_0x92fc15){_0x3f4875['push'](_0x3f4875['shift']());}};_0x1727cf(++_0x1eee06);}(_0x8f9d,0x93));var _0xd8f9=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x8f9d[_0x19950b];return _0x3c6b41;};'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'));module['exports']=function(_0x1c37be,_0x24dd1e){return _0x1c37be[_0xd8f9('0x9')](_0xd8f9('0xa'),attributes,{'tableName':_0xd8f9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5075=['bluebird','request-promise','rimraf','../../config/environment','./jscriptySessionReport.attributes','define','report_jscripty_sessions','lodash','util','../../config/logger','api','moment'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x5075,0x73));var _0x5507=function(_0x328534,_0x33b41e){_0x328534=_0x328534-0x0;var _0x2796c0=_0x5075[_0x328534];return _0x2796c0;};'use strict';var _=require(_0x5507('0x0'));var util=require(_0x5507('0x1'));var logger=require(_0x5507('0x2'))(_0x5507('0x3'));var moment=require(_0x5507('0x4'));var BPromise=require(_0x5507('0x5'));var rp=require(_0x5507('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5507('0x7'));var config=require(_0x5507('0x8'));var attributes=require(_0x5507('0x9'));module['exports']=function(_0x5b6d7f,_0x2cd9ee){return _0x5b6d7f[_0x5507('0xa')]('JscriptySessionReport',attributes,{'tableName':_0x5507('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e9ae23d..c90cc94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x1c1ee9,_0x12f2a4){var _0x3b2a63=function(_0x356031){while(--_0x356031){_0x1c1ee9['push'](_0x1c1ee9['shift']());}};_0x3b2a63(++_0x12f2a4);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0xc4aa[_0x273c39];return _0x46d6b5;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
+var _0x68b3=['rpc','jayson/promise','client','http','request','then','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x3e3f92,_0x441fd3){var _0xe2be8=function(_0x1cf0ac){while(--_0x1cf0ac){_0x3e3f92['push'](_0x3e3f92['shift']());}};_0xe2be8(++_0x441fd3);}(_0x68b3,0x1d8));var _0x368b=function(_0x3fba64,_0x423cfa){_0x3fba64=_0x3fba64-0x0;var _0x2bf7d3=_0x68b3[_0x3fba64];return _0x2bf7d3;};'use strict';var _=require(_0x368b('0x0'));var util=require(_0x368b('0x1'));var moment=require(_0x368b('0x2'));var BPromise=require(_0x368b('0x3'));var rs=require(_0x368b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x368b('0x5'))['db'];var utils=require(_0x368b('0x6'));var logger=require(_0x368b('0x7'))(_0x368b('0x8'));var config=require('../../config/environment');var jayson=require(_0x368b('0x9'));var client=jayson[_0x368b('0xa')][_0x368b('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x23584a,_0x4406c8,_0x127c1e){return new BPromise(function(_0x2dec1c,_0x142d05){return client[_0x368b('0xc')](_0x23584a,_0x127c1e)[_0x368b('0xd')](function(_0x2a7b9f){logger['info'](_0x368b('0xe'),_0x4406c8,_0x368b('0xf'));logger[_0x368b('0x10')]('JscriptySessionReport,\x20%s,\x20%s,\x20%s',_0x4406c8,_0x368b('0xf'),JSON[_0x368b('0x11')](_0x2a7b9f));if(_0x2a7b9f[_0x368b('0x12')]){if(_0x2a7b9f['error'][_0x368b('0x13')]===0x1f4){logger[_0x368b('0x12')]('JscriptySessionReport,\x20%s,\x20%s',_0x4406c8,_0x2a7b9f[_0x368b('0x12')][_0x368b('0x14')]);return _0x142d05(_0x2a7b9f[_0x368b('0x12')][_0x368b('0x14')]);}logger[_0x368b('0x12')]('JscriptySessionReport,\x20%s,\x20%s',_0x4406c8,_0x2a7b9f[_0x368b('0x12')][_0x368b('0x14')]);return _0x2dec1c(_0x2a7b9f['error'][_0x368b('0x14')]);}else{logger[_0x368b('0x15')](_0x368b('0xe'),_0x4406c8,'request\x20sent');_0x2dec1c(_0x2a7b9f[_0x368b('0x16')][_0x368b('0x14')]);}})[_0x368b('0x17')](function(_0x4d6d9d){logger[_0x368b('0x12')](_0x368b('0xe'),_0x4406c8,_0x4d6d9d);_0x142d05(_0x4d6d9d);});});}
\ No newline at end of file
index f017824..83c5033 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29e1=['put','isAuthenticated','update','downloadLogFile','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','get'];(function(_0x1312f9,_0x38b964){var _0x3e0d7a=function(_0x5d57a1){while(--_0x5d57a1){_0x1312f9['push'](_0x1312f9['shift']());}};_0x3e0d7a(++_0x38b964);}(_0x29e1,0x1bd));var _0x129e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x29e1[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x129e('0x0'));var util=require(_0x129e('0x1'));var path=require('path');var timeout=require(_0x129e('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x129e('0x3'));var auth=require(_0x129e('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./license.controller');router[_0x129e('0x5')]('/',controller['index']);router[_0x129e('0x6')]('/:id',auth[_0x129e('0x7')](),controller[_0x129e('0x8')]);router[_0x129e('0x5')]('/download_log_file',auth[_0x129e('0x7')](),controller[_0x129e('0x9')]);module[_0x129e('0xa')]=router;
\ No newline at end of file
+var _0x87ae=['exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./license.controller','get','put','isAuthenticated','update','/download_log_file','downloadLogFile'];(function(_0x21549c,_0x6d64d1){var _0x426cbd=function(_0x323f5b){while(--_0x323f5b){_0x21549c['push'](_0x21549c['shift']());}};_0x426cbd(++_0x6d64d1);}(_0x87ae,0x155));var _0xe87a=function(_0x562f3b,_0x4c65ae){_0x562f3b=_0x562f3b-0x0;var _0x1edd55=_0x87ae[_0x562f3b];return _0x1edd55;};'use strict';var multer=require(_0xe87a('0x0'));var util=require(_0xe87a('0x1'));var path=require(_0xe87a('0x2'));var timeout=require(_0xe87a('0x3'));var express=require('express');var router=express[_0xe87a('0x4')]();var fs_extra=require(_0xe87a('0x5'));var auth=require(_0xe87a('0x6'));var interaction=require(_0xe87a('0x7'));var config=require(_0xe87a('0x8'));var controller=require(_0xe87a('0x9'));router[_0xe87a('0xa')]('/',controller['index']);router[_0xe87a('0xb')]('/:id',auth[_0xe87a('0xc')](),controller[_0xe87a('0xd')]);router[_0xe87a('0xa')](_0xe87a('0xe'),auth[_0xe87a('0xc')](),controller[_0xe87a('0xf')]);module[_0xe87a('0x10')]=router;
\ No newline at end of file
index 9d19680..0a90ca7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x261c=['TEXT','STRING','exports'];(function(_0x36e362,_0x16dafa){var _0x327b78=function(_0x19a526){while(--_0x19a526){_0x36e362['push'](_0x36e362['shift']());}};_0x327b78(++_0x16dafa);}(_0x261c,0x1ac));var _0xc261=function(_0x33bb07,_0x5b1849){_0x33bb07=_0x33bb07-0x0;var _0x481c81=_0x261c[_0x33bb07];return _0x481c81;};'use strict';var Sequelize=require('sequelize');module[_0xc261('0x0')]={'license':{'type':Sequelize[_0xc261('0x1')]},'data1':{'type':Sequelize[_0xc261('0x2')]},'data2':{'type':Sequelize[_0xc261('0x2')]},'chatLicenseExceeded':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x582f=['STRING','INTEGER','sequelize','exports','TEXT'];(function(_0x477534,_0x49572d){var _0x13d2a9=function(_0x2e79c7){while(--_0x2e79c7){_0x477534['push'](_0x477534['shift']());}};_0x13d2a9(++_0x49572d);}(_0x582f,0x98));var _0xf582=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0x582f[_0x36eaaa];return _0x461349;};'use strict';var Sequelize=require(_0xf582('0x0'));module[_0xf582('0x1')]={'license':{'type':Sequelize[_0xf582('0x2')]},'data1':{'type':Sequelize[_0xf582('0x3')]},'data2':{'type':Sequelize[_0xf582('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0xf582('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index baffde2..c68fe63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x018d=['find','params','get','checkLicense','key','demo','catch','downloadLogFile','license-info.log','join','/var','log','xcally','setHeader','Content-disposition','attachment;\x20filename=','Content-Type','download','eml-format','rimraf','request-promise','moment','mustache','path','sox','fs-extra','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','set','Content-Range','apply','reject','update','then','destroy','end','error','stack','name','index','model','keys','License','rawAttributes','query','filters','intersection','attributes','fields','length','merge','options','getLicense','body'];(function(_0x587693,_0x27fe90){var _0x510a1a=function(_0x290f71){while(--_0x290f71){_0x587693['push'](_0x587693['shift']());}};_0x510a1a(++_0x27fe90);}(_0x018d,0x9e));var _0xd018=function(_0x2a5fa1,_0x1752c5){_0x2a5fa1=_0x2a5fa1-0x0;var _0x134572=_0x018d[_0x2a5fa1];return _0x134572;};'use strict';var emlformat=require(_0xd018('0x0'));var rimraf=require(_0xd018('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd018('0x2'));var moment=require(_0xd018('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xd018('0x4'));var util=require('util');var path=require(_0xd018('0x5'));var sox=require(_0xd018('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd018('0x7'));var _=require('lodash');var squel=require(_0xd018('0x8'));var crypto=require('crypto');var jsforce=require(_0xd018('0x9'));var deskjs=require(_0xd018('0xa'));var toCsv=require(_0xd018('0xb'));var querystring=require('querystring');var Papa=require(_0xd018('0xc'));var Redis=require(_0xd018('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xd018('0xe'));var as=require(_0xd018('0xf'));var hardwareService=require(_0xd018('0x10'));var logger=require('../../config/logger')(_0xd018('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xd018('0x12'));var db=require(_0xd018('0x13'))['db'];function respondWithStatusCode(_0x228a1a,_0x386e80){_0x386e80=_0x386e80||0xcc;return function(_0x38fe1f){if(_0x38fe1f){return _0x228a1a[_0xd018('0x14')](_0x386e80);}return _0x228a1a[_0xd018('0x15')](_0x386e80)['end']();};}function respondWithResult(_0x8770c9,_0x7944a0){_0x7944a0=_0x7944a0||0xc8;return function(_0x35b54b){if(_0x35b54b){return _0x8770c9[_0xd018('0x15')](_0x7944a0)[_0xd018('0x16')](_0x35b54b);}};}function respondWithFilteredResult(_0x1ae3c8,_0x59f8ec){return function(_0x32012f){if(_0x32012f){var _0x2ef2e4=typeof _0x59f8ec[_0xd018('0x17')]===_0xd018('0x18')&&typeof _0x59f8ec[_0xd018('0x19')]===_0xd018('0x18');var _0x385eeb=_0x32012f['count'];var _0x308add=_0x2ef2e4?0x0:_0x59f8ec[_0xd018('0x17')];var _0x2bceed=_0x2ef2e4?_0x32012f['count']:_0x59f8ec[_0xd018('0x17')]+_0x59f8ec[_0xd018('0x19')];var _0x4866e1;if(_0x2bceed>=_0x385eeb){_0x2bceed=_0x385eeb;_0x4866e1=0xc8;}else{_0x4866e1=0xce;}_0x1ae3c8['status'](_0x4866e1);return _0x1ae3c8[_0xd018('0x1a')](_0xd018('0x1b'),_0x308add+'-'+_0x2bceed+'/'+_0x385eeb)[_0xd018('0x16')](_0x32012f);}return null;};}function patchUpdates(_0x5901c6){return function(_0x1a3a52){try{jsonpatch[_0xd018('0x1c')](_0x1a3a52,_0x5901c6,!![]);}catch(_0x2306ba){return BPromise[_0xd018('0x1d')](_0x2306ba);}return _0x1a3a52['save']();};}function saveUpdates(_0x190fb6,_0x2ace2f){return function(_0xc53efb){if(_0xc53efb){return _0xc53efb[_0xd018('0x1e')](_0x190fb6)[_0xd018('0x1f')](function(_0x5d7413){return _0x5d7413;});}return null;};}function removeEntity(_0x264da0,_0x230864){return function(_0x2b51ff){if(_0x2b51ff){return _0x2b51ff[_0xd018('0x20')]()[_0xd018('0x1f')](function(){_0x264da0['status'](0xcc)[_0xd018('0x21')]();});}};}function handleEntityNotFound(_0x2f3090,_0x333649){return function(_0x16d6e9){if(!_0x16d6e9){_0x2f3090[_0xd018('0x14')](0x194);}return _0x16d6e9;};}function handleError(_0x2405be,_0x5d125f){_0x5d125f=_0x5d125f||0x1f4;return function(_0xdbb7d0){logger[_0xd018('0x22')](_0xdbb7d0[_0xd018('0x23')]);if(_0xdbb7d0[_0xd018('0x24')]){delete _0xdbb7d0['name'];}_0x2405be[_0xd018('0x15')](_0x5d125f)['send'](_0xdbb7d0);};}var utilLicense=require(_0xd018('0x12'));exports[_0xd018('0x25')]=function(_0x3a68f3,_0x549b3b){var _0x4d68d1={'raw':!![],'where':{'id':0x1}},_0x374094={};_0x374094[_0xd018('0x26')]=_[_0xd018('0x27')](db[_0xd018('0x28')][_0xd018('0x29')]);_0x374094['query']=_[_0xd018('0x27')](_0x3a68f3[_0xd018('0x2a')]);_0x374094[_0xd018('0x2b')]=_[_0xd018('0x2c')](_0x374094[_0xd018('0x26')],_0x374094[_0xd018('0x2a')]);_0x4d68d1[_0xd018('0x2d')]=_['intersection'](_0x374094[_0xd018('0x26')],qs[_0xd018('0x2e')](_0x3a68f3[_0xd018('0x2a')][_0xd018('0x2e')]));_0x4d68d1['attributes']=_0x4d68d1[_0xd018('0x2d')][_0xd018('0x2f')]?_0x4d68d1[_0xd018('0x2d')]:_0x374094[_0xd018('0x26')];_0x4d68d1=_[_0xd018('0x30')]({},_0x4d68d1,_0x3a68f3[_0xd018('0x31')]);return utilLicense[_0xd018('0x32')](_0x4d68d1)[_0xd018('0x1f')](respondWithResult(_0x549b3b,null))['catch'](handleError(_0x549b3b,null));};exports[_0xd018('0x1e')]=function(_0x1461bf,_0x26fd99){if(_0x1461bf[_0xd018('0x33')]['id']){delete _0x1461bf[_0xd018('0x33')]['id'];}return db[_0xd018('0x28')][_0xd018('0x34')]({'where':{'id':_0x1461bf[_0xd018('0x35')]['id']}})[_0xd018('0x1f')](handleEntityNotFound(_0x26fd99,null))[_0xd018('0x1f')](function(_0x57dfe8){var _0x4f1c27=_0x57dfe8[_0xd018('0x36')]({'plain':!![]});return utilLicense[_0xd018('0x37')](_0x4f1c27,_0x1461bf[_0xd018('0x33')][_0xd018('0x38')]);})[_0xd018('0x1f')](function(_0x36cfa8){if(!_0x36cfa8[_0xd018('0x39')]){return saveUpdates(_0x1461bf['body'],null);}return _0x36cfa8;})['then'](respondWithResult(_0x26fd99,null))[_0xd018('0x3a')](handleError(_0x26fd99,null));};exports[_0xd018('0x3b')]=function(_0x59b504,_0x513e8d){var _0x5a5f6f=_0xd018('0x3c');var _0x4ac9fc=path[_0xd018('0x3d')](_0xd018('0x3e'),_0xd018('0x3f'),_0xd018('0x40'),_0x5a5f6f);_0x513e8d[_0xd018('0x41')](_0xd018('0x42'),_0xd018('0x43')+_0x5a5f6f);_0x513e8d[_0xd018('0x1a')](_0xd018('0x44'),'text/plain');_0x513e8d[_0xd018('0x45')](_0x4ac9fc);};
\ No newline at end of file
+var _0x7cb3=['/var','log','xcally','setHeader','download','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','destroy','then','stack','name','send','index','model','keys','License','rawAttributes','query','filters','attributes','intersection','fields','length','merge','options','catch','body','find','params','key','license-info.log','join'];(function(_0x2d8fc2,_0x1c461d){var _0x3a9e53=function(_0x18941c){while(--_0x18941c){_0x2d8fc2['push'](_0x2d8fc2['shift']());}};_0x3a9e53(++_0x1c461d);}(_0x7cb3,0xbf));var _0x37cb=function(_0x4385c3,_0x3e7932){_0x4385c3=_0x4385c3-0x0;var _0x2f068f=_0x7cb3[_0x4385c3];return _0x2f068f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x37cb('0x0'));var zipdir=require(_0x37cb('0x1'));var jsonpatch=require(_0x37cb('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x37cb('0x3'));var Mustache=require(_0x37cb('0x4'));var util=require(_0x37cb('0x5'));var path=require(_0x37cb('0x6'));var sox=require(_0x37cb('0x7'));var csv=require(_0x37cb('0x8'));var ejs=require(_0x37cb('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x37cb('0xa'));var squel=require(_0x37cb('0xb'));var crypto=require(_0x37cb('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x37cb('0xd'));var toCsv=require(_0x37cb('0x8'));var querystring=require(_0x37cb('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x37cb('0xf'));var hardwareService=require(_0x37cb('0x10'));var logger=require(_0x37cb('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x37cb('0x12'));var db=require(_0x37cb('0x13'))['db'];function respondWithStatusCode(_0x244e74,_0x28c57a){_0x28c57a=_0x28c57a||0xcc;return function(_0x3c7809){if(_0x3c7809){return _0x244e74[_0x37cb('0x14')](_0x28c57a);}return _0x244e74[_0x37cb('0x15')](_0x28c57a)[_0x37cb('0x16')]();};}function respondWithResult(_0x5c470d,_0x214177){_0x214177=_0x214177||0xc8;return function(_0x11aa09){if(_0x11aa09){return _0x5c470d['status'](_0x214177)[_0x37cb('0x17')](_0x11aa09);}};}function respondWithFilteredResult(_0x2246e6,_0x1320f1){return function(_0x26b5b3){if(_0x26b5b3){var _0x3bb0c8=typeof _0x1320f1[_0x37cb('0x18')]===_0x37cb('0x19')&&typeof _0x1320f1[_0x37cb('0x1a')]===_0x37cb('0x19');var _0x53169b=_0x26b5b3[_0x37cb('0x1b')];var _0x32c0d5=_0x3bb0c8?0x0:_0x1320f1[_0x37cb('0x18')];var _0x45668a=_0x3bb0c8?_0x26b5b3[_0x37cb('0x1b')]:_0x1320f1['offset']+_0x1320f1['limit'];var _0x380e98;if(_0x45668a>=_0x53169b){_0x45668a=_0x53169b;_0x380e98=0xc8;}else{_0x380e98=0xce;}_0x2246e6[_0x37cb('0x15')](_0x380e98);return _0x2246e6[_0x37cb('0x1c')](_0x37cb('0x1d'),_0x32c0d5+'-'+_0x45668a+'/'+_0x53169b)[_0x37cb('0x17')](_0x26b5b3);}return null;};}function patchUpdates(_0xe8ba8){return function(_0x298cca){try{jsonpatch['apply'](_0x298cca,_0xe8ba8,!![]);}catch(_0x24bc79){return BPromise[_0x37cb('0x1e')](_0x24bc79);}return _0x298cca['save']();};}function saveUpdates(_0x5448c0,_0x1bdbad){return function(_0x5cfcb9){if(_0x5cfcb9){return _0x5cfcb9[_0x37cb('0x1f')](_0x5448c0)['then'](function(_0x30287f){return _0x30287f;});}return null;};}function removeEntity(_0x3a6833,_0x47574f){return function(_0x2a1319){if(_0x2a1319){return _0x2a1319[_0x37cb('0x20')]()[_0x37cb('0x21')](function(){_0x3a6833[_0x37cb('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5448e7,_0x9ddd7e){return function(_0x288578){if(!_0x288578){_0x5448e7[_0x37cb('0x14')](0x194);}return _0x288578;};}function handleError(_0x15adf2,_0xea5f2c){_0xea5f2c=_0xea5f2c||0x1f4;return function(_0x283b62){logger['error'](_0x283b62[_0x37cb('0x22')]);if(_0x283b62[_0x37cb('0x23')]){delete _0x283b62['name'];}_0x15adf2[_0x37cb('0x15')](_0xea5f2c)[_0x37cb('0x24')](_0x283b62);};}var utilLicense=require(_0x37cb('0x12'));exports[_0x37cb('0x25')]=function(_0x2cc08d,_0x3f0c74){var _0x152e09={'raw':!![],'where':{'id':0x1}},_0x518c73={};_0x518c73[_0x37cb('0x26')]=_[_0x37cb('0x27')](db[_0x37cb('0x28')][_0x37cb('0x29')]);_0x518c73[_0x37cb('0x2a')]=_[_0x37cb('0x27')](_0x2cc08d[_0x37cb('0x2a')]);_0x518c73[_0x37cb('0x2b')]=_['intersection'](_0x518c73[_0x37cb('0x26')],_0x518c73[_0x37cb('0x2a')]);_0x152e09[_0x37cb('0x2c')]=_[_0x37cb('0x2d')](_0x518c73[_0x37cb('0x26')],qs['fields'](_0x2cc08d['query'][_0x37cb('0x2e')]));_0x152e09[_0x37cb('0x2c')]=_0x152e09['attributes'][_0x37cb('0x2f')]?_0x152e09['attributes']:_0x518c73[_0x37cb('0x26')];_0x152e09=_[_0x37cb('0x30')]({},_0x152e09,_0x2cc08d[_0x37cb('0x31')]);return utilLicense['getLicense'](_0x152e09)['then'](respondWithResult(_0x3f0c74,null))[_0x37cb('0x32')](handleError(_0x3f0c74,null));};exports[_0x37cb('0x1f')]=function(_0x559312,_0x191fba){if(_0x559312[_0x37cb('0x33')]['id']){delete _0x559312[_0x37cb('0x33')]['id'];}return db[_0x37cb('0x28')][_0x37cb('0x34')]({'where':{'id':_0x559312[_0x37cb('0x35')]['id']}})['then'](handleEntityNotFound(_0x191fba,null))[_0x37cb('0x21')](function(_0x2b91c){var _0x499299=_0x2b91c['get']({'plain':!![]});return utilLicense['checkLicense'](_0x499299,_0x559312[_0x37cb('0x33')][_0x37cb('0x36')]);})[_0x37cb('0x21')](function(_0x103acd){if(!_0x103acd['demo']){return saveUpdates(_0x559312['body'],null);}return _0x103acd;})[_0x37cb('0x21')](respondWithResult(_0x191fba,null))[_0x37cb('0x32')](handleError(_0x191fba,null));};exports['downloadLogFile']=function(_0x4318ce,_0x11efc5){var _0x1d18f6=_0x37cb('0x37');var _0x20828c=path[_0x37cb('0x38')](_0x37cb('0x39'),_0x37cb('0x3a'),_0x37cb('0x3b'),_0x1d18f6);_0x11efc5[_0x37cb('0x3c')]('Content-disposition','attachment;\x20filename='+_0x1d18f6);_0x11efc5[_0x37cb('0x1c')]('Content-Type','text/plain');_0x11efc5[_0x37cb('0x3d')](_0x20828c);};
\ No newline at end of file
index 340c02a..06f09e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1327=['request-promise','../../config/environment','./license.attributes','exports','License','license','lodash','util','../../config/logger','api','moment'];(function(_0xe770ee,_0x537d4b){var _0x14979b=function(_0x2ae936){while(--_0x2ae936){_0xe770ee['push'](_0xe770ee['shift']());}};_0x14979b(++_0x537d4b);}(_0x1327,0x17c));var _0x7132=function(_0x38e0f0,_0xad367f){_0x38e0f0=_0x38e0f0-0x0;var _0xf64172=_0x1327[_0x38e0f0];return _0xf64172;};'use strict';var _=require(_0x7132('0x0'));var util=require(_0x7132('0x1'));var logger=require(_0x7132('0x2'))(_0x7132('0x3'));var moment=require(_0x7132('0x4'));var BPromise=require('bluebird');var rp=require(_0x7132('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7132('0x6'));var attributes=require(_0x7132('0x7'));module[_0x7132('0x8')]=function(_0xdc5c28,_0x55b789){return _0xdc5c28['define'](_0x7132('0x9'),attributes,{'tableName':_0x7132('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x19ed=['request-promise','rimraf','../../config/environment','./license.attributes','exports','License','lodash','util','moment'];(function(_0x4a7b4c,_0x904344){var _0x2a9330=function(_0x2c88c9){while(--_0x2c88c9){_0x4a7b4c['push'](_0x4a7b4c['shift']());}};_0x2a9330(++_0x904344);}(_0x19ed,0xba));var _0xd19e=function(_0x55309e,_0x5f3918){_0x55309e=_0x55309e-0x0;var _0x2eb393=_0x19ed[_0x55309e];return _0x2eb393;};'use strict';var _=require(_0xd19e('0x0'));var util=require(_0xd19e('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xd19e('0x2'));var BPromise=require('bluebird');var rp=require(_0xd19e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd19e('0x4'));var config=require(_0xd19e('0x5'));var attributes=require(_0xd19e('0x6'));module[_0xd19e('0x7')]=function(_0x139a6f,_0x51c3e9){return _0x139a6f['define'](_0xd19e('0x8'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f397a3d..70a1b30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ca4=['catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','License,\x20%s,\x20%s','debug','License,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result'];(function(_0x3fc970,_0x713e9a){var _0x4a21ec=function(_0x51009d){while(--_0x51009d){_0x3fc970['push'](_0x3fc970['shift']());}};_0x4a21ec(++_0x713e9a);}(_0x5ca4,0x1e5));var _0x45ca=function(_0x2afc92,_0x3e61d0){_0x2afc92=_0x2afc92-0x0;var _0x7c8fba=_0x5ca4[_0x2afc92];return _0x7c8fba;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x45ca('0x0'));var BPromise=require(_0x45ca('0x1'));var rs=require(_0x45ca('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x45ca('0x3'))['db'];var utils=require(_0x45ca('0x4'));var logger=require(_0x45ca('0x5'))('rpc');var config=require(_0x45ca('0x6'));var jayson=require(_0x45ca('0x7'));var client=jayson[_0x45ca('0x8')][_0x45ca('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x24ad6f,_0x3b05eb,_0x1a40a2){return new BPromise(function(_0x495f9a,_0x358232){return client[_0x45ca('0xa')](_0x24ad6f,_0x1a40a2)[_0x45ca('0xb')](function(_0x1f5433){logger['info'](_0x45ca('0xc'),_0x3b05eb,'request\x20sent');logger[_0x45ca('0xd')](_0x45ca('0xe'),_0x3b05eb,_0x45ca('0xf'),JSON[_0x45ca('0x10')](_0x1f5433));if(_0x1f5433[_0x45ca('0x11')]){if(_0x1f5433['error'][_0x45ca('0x12')]===0x1f4){logger[_0x45ca('0x11')]('License,\x20%s,\x20%s',_0x3b05eb,_0x1f5433['error'][_0x45ca('0x13')]);return _0x358232(_0x1f5433[_0x45ca('0x11')][_0x45ca('0x13')]);}logger[_0x45ca('0x11')](_0x45ca('0xc'),_0x3b05eb,_0x1f5433[_0x45ca('0x11')][_0x45ca('0x13')]);return _0x495f9a(_0x1f5433['error'][_0x45ca('0x13')]);}else{logger['info']('License,\x20%s,\x20%s',_0x3b05eb,'request\x20sent');_0x495f9a(_0x1f5433[_0x45ca('0x14')]['message']);}})[_0x45ca('0x15')](function(_0x271ad7){logger['error'](_0x45ca('0xc'),_0x3b05eb,_0x271ad7);_0x358232(_0x271ad7);});});}
\ No newline at end of file
+var _0x8d7a=['debug','License,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','License,\x20%s,\x20%s'];(function(_0xcd6274,_0x136727){var _0x430b9a=function(_0x540c3f){while(--_0x540c3f){_0xcd6274['push'](_0xcd6274['shift']());}};_0x430b9a(++_0x136727);}(_0x8d7a,0x98));var _0xa8d7=function(_0x59f2f8,_0x1320c1){_0x59f2f8=_0x59f2f8-0x0;var _0x5e1a52=_0x8d7a[_0x59f2f8];return _0x5e1a52;};'use strict';var _=require(_0xa8d7('0x0'));var util=require(_0xa8d7('0x1'));var moment=require('moment');var BPromise=require(_0xa8d7('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa8d7('0x3'));var db=require(_0xa8d7('0x4'))['db'];var utils=require(_0xa8d7('0x5'));var logger=require(_0xa8d7('0x6'))(_0xa8d7('0x7'));var config=require(_0xa8d7('0x8'));var jayson=require(_0xa8d7('0x9'));var client=jayson[_0xa8d7('0xa')][_0xa8d7('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2a08ec,_0x380ffc,_0x5bb190){return new BPromise(function(_0x17b4b3,_0x2ec559){return client[_0xa8d7('0xc')](_0x2a08ec,_0x5bb190)[_0xa8d7('0xd')](function(_0x164d6f){logger[_0xa8d7('0xe')](_0xa8d7('0xf'),_0x380ffc,'request\x20sent');logger[_0xa8d7('0x10')](_0xa8d7('0x11'),_0x380ffc,_0xa8d7('0x12'),JSON[_0xa8d7('0x13')](_0x164d6f));if(_0x164d6f[_0xa8d7('0x14')]){if(_0x164d6f[_0xa8d7('0x14')][_0xa8d7('0x15')]===0x1f4){logger[_0xa8d7('0x14')](_0xa8d7('0xf'),_0x380ffc,_0x164d6f[_0xa8d7('0x14')][_0xa8d7('0x16')]);return _0x2ec559(_0x164d6f[_0xa8d7('0x14')][_0xa8d7('0x16')]);}logger[_0xa8d7('0x14')](_0xa8d7('0xf'),_0x380ffc,_0x164d6f[_0xa8d7('0x14')][_0xa8d7('0x16')]);return _0x17b4b3(_0x164d6f[_0xa8d7('0x14')]['message']);}else{logger['info'](_0xa8d7('0xf'),_0x380ffc,'request\x20sent');_0x17b4b3(_0x164d6f['result'][_0xa8d7('0x16')]);}})[_0xa8d7('0x17')](function(_0x2ad4b3){logger['error'](_0xa8d7('0xf'),_0x380ffc,_0x2ad4b3);_0x2ec559(_0x2ad4b3);});});}
\ No newline at end of file
index 48c100b..7c63afb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a13=['/:id/messages','/:id/verify','verifySmtp','/:id/users','getAgents','post','create','/:id/in_servers','addImap','/:id/interactions','addInteraction','/:id/applications','/:id/send','send','addAgents','put','update','delete','removeDispositions','removeAnswers','removeSmtp','destroy','removeAgents','exports','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getImap','/:id/out_servers','getSmtp','getApplications'];(function(_0xa10261,_0x17b7c6){var _0x5802c0=function(_0x11fea2){while(--_0x11fea2){_0xa10261['push'](_0xa10261['shift']());}};_0x5802c0(++_0x17b7c6);}(_0x7a13,0x1da));var _0x37a1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7a13[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x37a1('0x0'));var util=require('util');var path=require(_0x37a1('0x1'));var timeout=require(_0x37a1('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x37a1('0x3'));var auth=require(_0x37a1('0x4'));var interaction=require(_0x37a1('0x5'));var config=require(_0x37a1('0x6'));var controller=require('./mailAccount.controller');router[_0x37a1('0x7')]('/',auth[_0x37a1('0x8')](),controller['index']);router['get'](_0x37a1('0x9'),auth[_0x37a1('0x8')](),controller[_0x37a1('0xa')]);router[_0x37a1('0x7')](_0x37a1('0xb'),auth[_0x37a1('0x8')](),controller[_0x37a1('0xc')]);router['get'](_0x37a1('0xd'),auth[_0x37a1('0x8')](),controller[_0x37a1('0xe')]);router[_0x37a1('0x7')](_0x37a1('0xf'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x10')]);router[_0x37a1('0x7')]('/:id/in_servers',auth[_0x37a1('0x8')](),controller[_0x37a1('0x11')]);router[_0x37a1('0x7')](_0x37a1('0x12'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x13')]);router['get']('/:id/interactions',auth[_0x37a1('0x8')](),controller['getInteractions']);router[_0x37a1('0x7')]('/:id/applications',auth[_0x37a1('0x8')](),controller[_0x37a1('0x14')]);router[_0x37a1('0x7')](_0x37a1('0x15'),auth[_0x37a1('0x8')](),controller['getMessages']);router[_0x37a1('0x7')](_0x37a1('0x16'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x17')]);router['get'](_0x37a1('0x18'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x19')]);router[_0x37a1('0x1a')]('/:id/dispositions',auth[_0x37a1('0x8')](),controller['addDisposition']);router[_0x37a1('0x1a')](_0x37a1('0xf'),auth[_0x37a1('0x8')](),controller['addAnswer']);router[_0x37a1('0x1a')]('/',auth[_0x37a1('0x8')](),controller[_0x37a1('0x1b')]);router[_0x37a1('0x1a')](_0x37a1('0x1c'),auth['isAuthenticated'](),controller[_0x37a1('0x1d')]);router[_0x37a1('0x1a')](_0x37a1('0x12'),auth[_0x37a1('0x8')](),controller['addSmtp']);router[_0x37a1('0x1a')](_0x37a1('0x1e'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x1f')]);router[_0x37a1('0x1a')](_0x37a1('0x20'),auth[_0x37a1('0x8')](),controller['addApplications']);router[_0x37a1('0x1a')](_0x37a1('0x21'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x22')]);router['post']('/:id/users',auth[_0x37a1('0x8')](),controller[_0x37a1('0x23')]);router[_0x37a1('0x24')](_0x37a1('0xb'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x25')]);router[_0x37a1('0x26')](_0x37a1('0xd'),auth['isAuthenticated'](),controller[_0x37a1('0x27')]);router[_0x37a1('0x26')](_0x37a1('0xf'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x28')]);router[_0x37a1('0x26')]('/:id/in_servers',auth[_0x37a1('0x8')](),controller['removeImap']);router[_0x37a1('0x26')]('/:id/out_servers',auth[_0x37a1('0x8')](),controller[_0x37a1('0x29')]);router[_0x37a1('0x26')](_0x37a1('0xb'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x2a')]);router[_0x37a1('0x26')](_0x37a1('0x18'),auth[_0x37a1('0x8')](),controller[_0x37a1('0x2b')]);module[_0x37a1('0x2c')]=router;
\ No newline at end of file
+var _0x3590=['/:id/interactions','/:id/applications','/:id/messages','getMessages','/:id/verify','verifySmtp','getAgents','post','addAnswer','create','addImap','addSmtp','addInteraction','send','/:id/users','update','delete','removeAnswers','removeSmtp','destroy','removeAgents','exports','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailAccount.controller','index','get','/describe','/:id','isAuthenticated','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/in_servers','getImap','/:id/out_servers','getSmtp'];(function(_0x32e7d6,_0x682bc5){var _0x5427cf=function(_0x365c2d){while(--_0x365c2d){_0x32e7d6['push'](_0x32e7d6['shift']());}};_0x5427cf(++_0x682bc5);}(_0x3590,0x16e));var _0x0359=function(_0xe02d7,_0xd3ae68){_0xe02d7=_0xe02d7-0x0;var _0x1e30e4=_0x3590[_0xe02d7];return _0x1e30e4;};'use strict';var multer=require('multer');var util=require(_0x0359('0x0'));var path=require('path');var timeout=require(_0x0359('0x1'));var express=require('express');var router=express[_0x0359('0x2')]();var fs_extra=require(_0x0359('0x3'));var auth=require(_0x0359('0x4'));var interaction=require(_0x0359('0x5'));var config=require(_0x0359('0x6'));var controller=require(_0x0359('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x0359('0x8')]);router[_0x0359('0x9')](_0x0359('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0359('0x9')](_0x0359('0xb'),auth[_0x0359('0xc')](),controller[_0x0359('0xd')]);router['get'](_0x0359('0xe'),auth[_0x0359('0xc')](),controller[_0x0359('0xf')]);router[_0x0359('0x9')](_0x0359('0x10'),auth[_0x0359('0xc')](),controller['getAnswers']);router['get'](_0x0359('0x11'),auth['isAuthenticated'](),controller[_0x0359('0x12')]);router[_0x0359('0x9')](_0x0359('0x13'),auth['isAuthenticated'](),controller[_0x0359('0x14')]);router[_0x0359('0x9')](_0x0359('0x15'),auth[_0x0359('0xc')](),controller['getInteractions']);router[_0x0359('0x9')](_0x0359('0x16'),auth[_0x0359('0xc')](),controller['getApplications']);router[_0x0359('0x9')](_0x0359('0x17'),auth[_0x0359('0xc')](),controller[_0x0359('0x18')]);router[_0x0359('0x9')](_0x0359('0x19'),auth[_0x0359('0xc')](),controller[_0x0359('0x1a')]);router[_0x0359('0x9')]('/:id/users',auth[_0x0359('0xc')](),controller[_0x0359('0x1b')]);router[_0x0359('0x1c')](_0x0359('0xe'),auth[_0x0359('0xc')](),controller['addDisposition']);router[_0x0359('0x1c')](_0x0359('0x10'),auth['isAuthenticated'](),controller[_0x0359('0x1d')]);router[_0x0359('0x1c')]('/',auth['isAuthenticated'](),controller[_0x0359('0x1e')]);router[_0x0359('0x1c')]('/:id/in_servers',auth['isAuthenticated'](),controller[_0x0359('0x1f')]);router[_0x0359('0x1c')](_0x0359('0x13'),auth[_0x0359('0xc')](),controller[_0x0359('0x20')]);router[_0x0359('0x1c')]('/:id/interactions',auth[_0x0359('0xc')](),controller[_0x0359('0x21')]);router[_0x0359('0x1c')](_0x0359('0x16'),auth[_0x0359('0xc')](),controller['addApplications']);router[_0x0359('0x1c')]('/:id/send',auth[_0x0359('0xc')](),controller[_0x0359('0x22')]);router[_0x0359('0x1c')](_0x0359('0x23'),auth[_0x0359('0xc')](),controller['addAgents']);router['put'](_0x0359('0xb'),auth[_0x0359('0xc')](),controller[_0x0359('0x24')]);router['delete'](_0x0359('0xe'),auth[_0x0359('0xc')](),controller['removeDispositions']);router[_0x0359('0x25')](_0x0359('0x10'),auth[_0x0359('0xc')](),controller[_0x0359('0x26')]);router[_0x0359('0x25')]('/:id/in_servers',auth['isAuthenticated'](),controller['removeImap']);router[_0x0359('0x25')](_0x0359('0x13'),auth['isAuthenticated'](),controller[_0x0359('0x27')]);router[_0x0359('0x25')](_0x0359('0xb'),auth[_0x0359('0xc')](),controller[_0x0359('0x28')]);router['delete'](_0x0359('0x23'),auth[_0x0359('0xc')](),controller[_0x0359('0x29')]);module[_0x0359('0x2a')]=router;
\ No newline at end of file
index 5a017f6..c844580 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfff5=['STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','ENUM','hotmail','yahoo','outlook365','getDataValue','provider','custom','exports'];(function(_0xe45118,_0x5dffbc){var _0x15e15d=function(_0x17eaec){while(--_0x17eaec){_0xe45118['push'](_0xe45118['shift']());}};_0x15e15d(++_0x5dffbc);}(_0xfff5,0x1a3));var _0x5fff=function(_0x3062e9,_0x329344){_0x3062e9=_0x3062e9-0x0;var _0x43cba4=_0xfff5[_0x3062e9];return _0x43cba4;};'use strict';var Sequelize=require('sequelize');module[_0x5fff('0x0')]={'description':{'type':Sequelize[_0x5fff('0x1')]},'name':{'type':Sequelize[_0x5fff('0x1')],'allowNull':![]},'service':{'type':Sequelize[_0x5fff('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x5fff('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x5fff('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0x5fff('0x1')],'allowNull':![]},'template':{'type':Sequelize[_0x5fff('0x3')]},'markAsUnread':{'type':Sequelize[_0x5fff('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x5fff('0x1')],'allowNull':![],'defaultValue':_0x5fff('0x4')},'fontSize':{'type':Sequelize[_0x5fff('0x5')](0x2)[_0x5fff('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x5fff('0x3')],'defaultValue':function(){return _0x5fff('0x7');}},'notificationSound':{'type':Sequelize[_0x5fff('0x2')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x5fff('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x5fff('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0x5fff('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x5fff('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x5fff('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x5fff('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x5fff('0x5')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x5fff('0x5')],'allowNull':!![],'defaultValue':null,'comment':_0x5fff('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x5fff('0x2')],'defaultValue':![],'comment':_0x5fff('0x9'),'set':function(_0x2f94b8){if(!_0x2f94b8)this[_0x5fff('0xa')](_0x5fff('0xb'),null);this[_0x5fff('0xa')](_0x5fff('0xc'),_0x2f94b8);}},'provider':{'type':Sequelize[_0x5fff('0xd')]('gmail',_0x5fff('0xe'),_0x5fff('0xf'),_0x5fff('0x10')),'defaultValue':null,'get':function(){if(!this[_0x5fff('0x11')](_0x5fff('0x12')))return _0x5fff('0x13');return this[_0x5fff('0x11')](_0x5fff('0x12'));},'set':function(_0x56b564){if(_0x56b564===_0x5fff('0x13'))_0x56b564=null;return this[_0x5fff('0xa')](_0x5fff('0x12'),_0x56b564);}}};
\ No newline at end of file
+var _0xc189=['sequelize','exports','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','gmail','hotmail','yahoo','outlook365','getDataValue','custom','provider'];(function(_0x27abfd,_0xa18629){var _0x1c7414=function(_0x20695a){while(--_0x20695a){_0x27abfd['push'](_0x27abfd['shift']());}};_0x1c7414(++_0xa18629);}(_0xc189,0x78));var _0x9c18=function(_0x2f6af4,_0x2875fc){_0x2f6af4=_0x2f6af4-0x0;var _0xa5f3be=_0xc189[_0x2f6af4];return _0xa5f3be;};'use strict';var Sequelize=require(_0x9c18('0x0'));module[_0x9c18('0x1')]={'description':{'type':Sequelize[_0x9c18('0x2')]},'name':{'type':Sequelize[_0x9c18('0x2')],'allowNull':![]},'service':{'type':Sequelize[_0x9c18('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x9c18('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x9c18('0x3')],'defaultValue':!![]},'key':{'type':Sequelize[_0x9c18('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0x9c18('0x4')]},'markAsUnread':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9c18('0x5')},'fontSize':{'type':Sequelize[_0x9c18('0x6')](0x2)[_0x9c18('0x7')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x9c18('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[_0x9c18('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x9c18('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x9c18('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x9c18('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x9c18('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x9c18('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x9c18('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x9c18('0x3')],'defaultValue':![],'comment':_0x9c18('0x9'),'set':function(_0x87683b){if(!_0x87683b)this[_0x9c18('0xa')](_0x9c18('0xb'),null);this['setDataValue'](_0x9c18('0xc'),_0x87683b);}},'provider':{'type':Sequelize['ENUM'](_0x9c18('0xd'),_0x9c18('0xe'),_0x9c18('0xf'),_0x9c18('0x10')),'defaultValue':null,'get':function(){if(!this[_0x9c18('0x11')]('provider'))return _0x9c18('0x12');return this[_0x9c18('0x11')](_0x9c18('0x13'));},'set':function(_0x4ea133){if(_0x4ea133===_0x9c18('0x12'))_0x4ea133=null;return this[_0x9c18('0xa')]('provider',_0x4ea133);}}};
\ No newline at end of file
index 2dd3505..d0d345b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd37f=['Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','getSmtp','addSmtp','removeSmtp','setSmtp','addInteraction','getInteractions','MailInteraction','CmContact','Contact','User','Owner','internal','Tag','Tags','color','tag','addApplications','transaction','sequelize','READ_COMMITTED','MailApplication','bulkCreate','findAndCountAll','priority','finally','getApplications','MailMessage','$gte','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','split','List','Contacts','DESC','CloudProvider','Smtp\x20configuration\x20not\x20found','from','%s\x20<%s>','attachments','join','server/files/attachments','basename','getSmtpOptions','SendMail','subject','out','messageId','Interaction','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','path','lodash','ioredis','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','client','http','request','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','status','end','json','offset','undefined','count','limit','Content-Range','update','then','destroy','get','MailAccounts','UserProfileResource','sendStatus','stack','name','send','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com','Unknown\x20email\x20service\x20provider','smtp.gmail.com','smtp.office365.com','user','username','password','pass','modernAuthentication','CloudProviderId','port','host','secure','service','authentication','Imap','Smtp','index','MailServerIn','MailServerOut','Pause','mandatoryDispositionPause','MailAccount','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','type','options','include','findAll','rows','catch','show','rawAttributes','includeAll','find','body','provider','params','Mail\x20Account\x20not\x20found','describe','MailAccountId','Disposition','findOne','pick','filter','removeDispositions','ids','addAnswer','CannedAnswer','create','getAnswers','removeAnswers','custom','email','ListId','isNil','active','description','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId'];(function(_0x4581e2,_0xa4ccd7){var _0x4e568d=function(_0x2e81ad){while(--_0x2e81ad){_0x4581e2['push'](_0x4581e2['shift']());}};_0x4e568d(++_0xa4ccd7);}(_0xd37f,0x1b9));var _0xfd37=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0xd37f[_0x110c3d];return _0x226d67;};'use strict';var moment=require('moment');var BPromise=require('bluebird');var util=require('util');var path=require(_0xfd37('0x0'));var _=require(_0xfd37('0x1'));var juice=require('juice');var Redis=require(_0xfd37('0x2'));var qs=require('../../components/parsers/qs');var logger=require(_0xfd37('0x3'))('api');var config=require(_0xfd37('0x4'));var db=require(_0xfd37('0x5'))['db'];config[_0xfd37('0x6')]=_[_0xfd37('0x7')](config[_0xfd37('0x6')],{'host':_0xfd37('0x8'),'port':0x18eb});var socket=require(_0xfd37('0x9'))(new Redis(config[_0xfd37('0x6')]));require(_0xfd37('0xa'))[_0xfd37('0xb')](socket);var jayson=require('jayson/promise');var client=jayson[_0xfd37('0xc')][_0xfd37('0xd')]({'port':0x232b});function respondWithRpcPromise(_0x2ac41f,_0x432ede,_0x200778,_0x57a5be){return new BPromise(function(_0x5efb2e,_0x1c2698){var _0x3268de=_0x57a5be||client;return _0x3268de[_0xfd37('0xe')](_0x2ac41f,_0x200778)['then'](function(_0x4e9a94){logger[_0xfd37('0xf')](_0xfd37('0x10'),_0x432ede,_0xfd37('0x11'));logger[_0xfd37('0x12')](_0xfd37('0x13'),_0x432ede,_0xfd37('0x11'),JSON[_0xfd37('0x14')](_0x4e9a94));if(_0x4e9a94[_0xfd37('0x15')]){if(_0x4e9a94['error']['code']===0x1f4){logger[_0xfd37('0x15')]('MailAccount,\x20%s,\x20%s',_0x432ede,_0x4e9a94[_0xfd37('0x15')][_0xfd37('0x16')]);return _0x1c2698(_0x4e9a94['error']['message']);}logger['error'](_0xfd37('0x10'),_0x432ede,_0x4e9a94[_0xfd37('0x15')][_0xfd37('0x16')]);return _0x5efb2e(_0x4e9a94[_0xfd37('0x15')][_0xfd37('0x16')]);}else{logger['info'](_0xfd37('0x10'),_0x432ede,_0xfd37('0x11'));_0x5efb2e(_0x4e9a94[_0xfd37('0x17')][_0xfd37('0x16')]);}})['catch'](function(_0x59b875){logger[_0xfd37('0x15')]('MailAccount,\x20%s,\x20%s',_0x432ede,_0x59b875);_0x1c2698(_0x59b875);});});}function respondWithStatusCode(_0x35e7a3,_0x5c2c69){_0x5c2c69=_0x5c2c69||0xcc;return function(_0x1f3d58){if(_0x1f3d58){return _0x35e7a3['sendStatus'](_0x5c2c69);}return _0x35e7a3[_0xfd37('0x18')](_0x5c2c69)[_0xfd37('0x19')]();};}function respondWithResult(_0x448e71,_0x5a9a51){_0x5a9a51=_0x5a9a51||0xc8;return function(_0x3b56e8){if(_0x3b56e8){return _0x448e71[_0xfd37('0x18')](_0x5a9a51)[_0xfd37('0x1a')](_0x3b56e8);}};}function respondWithFilteredResult(_0x14324e,_0x48a2ec){return function(_0x9b96ab){if(_0x9b96ab){var _0x2129d2=typeof _0x48a2ec[_0xfd37('0x1b')]===_0xfd37('0x1c')&&typeof _0x48a2ec['limit']===_0xfd37('0x1c');var _0x392857=_0x9b96ab[_0xfd37('0x1d')];var _0x5390a4=_0x2129d2?0x0:_0x48a2ec[_0xfd37('0x1b')];var _0x866420=_0x2129d2?_0x9b96ab[_0xfd37('0x1d')]:_0x48a2ec[_0xfd37('0x1b')]+_0x48a2ec[_0xfd37('0x1e')];var _0xa4b1fa;if(_0x866420>=_0x392857){_0x866420=_0x392857;_0xa4b1fa=0xc8;}else{_0xa4b1fa=0xce;}_0x14324e[_0xfd37('0x18')](_0xa4b1fa);return _0x14324e['set'](_0xfd37('0x1f'),_0x5390a4+'-'+_0x866420+'/'+_0x392857)[_0xfd37('0x1a')](_0x9b96ab);}return null;};}function saveUpdates(_0x366171){return function(_0x1dc20c){if(_0x1dc20c){return _0x1dc20c[_0xfd37('0x20')](_0x366171)[_0xfd37('0x21')](function(_0x36ae41){return _0x36ae41;});}return null;};}function removeEntity(_0x135535){return function(_0x226971){if(_0x226971){return _0x226971[_0xfd37('0x22')]()[_0xfd37('0x21')](function(){var _0x486918=_0x226971[_0xfd37('0x23')]({'plain':!![]});var _0x459908=_0xfd37('0x24');return db[_0xfd37('0x25')][_0xfd37('0x22')]({'where':{'type':_0x459908,'resourceId':_0x486918['id']}})['then'](function(){return _0x226971;});})[_0xfd37('0x21')](function(){_0x135535[_0xfd37('0x18')](0xcc)[_0xfd37('0x19')]();});}};}function handleEntityNotFound(_0xa4fa2e){return function(_0x1c7b88){if(!_0x1c7b88){_0xa4fa2e[_0xfd37('0x26')](0x194);}return _0x1c7b88;};}function handleError(_0x3010bd,_0x176451){_0x176451=_0x176451||0x1f4;return function(_0x10eea7){logger['error'](_0x10eea7[_0xfd37('0x27')]);if(_0x10eea7[_0xfd37('0x28')]){delete _0x10eea7['name'];}_0x3010bd[_0xfd37('0x18')](_0x176451)[_0xfd37('0x29')](_0x10eea7);};}function getImapHost(_0x474af7){switch(_0x474af7){case'gmail':return'imap.gmail.com';case _0xfd37('0x2a'):return _0xfd37('0x2b');case _0xfd37('0x2c'):return _0xfd37('0x2d');case _0xfd37('0x2e'):return _0xfd37('0x2f');}throw new Error(_0xfd37('0x30'),_0x474af7);}function getSmtpHost(_0x573c5f){switch(_0x573c5f){case'gmail':return _0xfd37('0x31');case'yahoo':return'smtp.mail.yahoo.com';case _0xfd37('0x2c'):return'smtp-mail.outlook.com';case _0xfd37('0x2e'):return _0xfd37('0x32');}throw new Error(_0xfd37('0x30'),_0x573c5f);}function getAuthenticationOptions(_0x368861,_0x7ec15c){var _0x4dae70={};var _0x41b8a7={};if(_0x368861){_0x4dae70[_0xfd37('0x33')]=_0x41b8a7[_0xfd37('0x33')]=_0x7ec15c[_0xfd37('0x34')];_0x4dae70[_0xfd37('0x35')]=_0x41b8a7[_0xfd37('0x36')]=_0x7ec15c[_0xfd37('0x35')];if(_0x7ec15c['modernAuthentication']){_0x4dae70[_0xfd37('0x37')]=_0x41b8a7['modernAuthentication']=!![];_0x4dae70['CloudProviderId']=_0x41b8a7[_0xfd37('0x38')]=_0x7ec15c['CloudProviderId'];_0x4dae70['password']=_0x41b8a7['pass']=null;}else{_0x4dae70['CloudProviderId']=_0x41b8a7['CloudProviderId']=null;}_0x4dae70['host']=getImapHost(_0x368861);_0x4dae70[_0xfd37('0x39')]=0x3e1;_0x41b8a7[_0xfd37('0x3a')]=getSmtpHost(_0x368861);_0x41b8a7[_0xfd37('0x39')]=0x24b;_0x41b8a7[_0xfd37('0x3b')]=![];_0x4dae70[_0xfd37('0x3c')]=_0x41b8a7['service']=null;}else{if(_0x7ec15c[_0xfd37('0x3d')]){_0x4dae70[_0xfd37('0x33')]=_0x41b8a7['user']=_0x7ec15c[_0xfd37('0x34')];_0x4dae70[_0xfd37('0x35')]=_0x41b8a7[_0xfd37('0x36')]=_0x7ec15c[_0xfd37('0x35')];}else{_0x4dae70['authentication']=_0x41b8a7[_0xfd37('0x3d')]=![];_0x4dae70['user']=_0x41b8a7['user']=null;_0x4dae70[_0xfd37('0x35')]=_0x41b8a7[_0xfd37('0x36')]=null;}_0x4dae70['host']=_0x7ec15c[_0xfd37('0x3e')][_0xfd37('0x3a')];_0x4dae70[_0xfd37('0x39')]=_0x7ec15c[_0xfd37('0x3e')][_0xfd37('0x39')];_0x41b8a7[_0xfd37('0x3a')]=_0x7ec15c[_0xfd37('0x3f')][_0xfd37('0x3a')];_0x41b8a7['port']=_0x7ec15c['Smtp'][_0xfd37('0x39')];}return{'Imap':_0x4dae70,'Smtp':_0x41b8a7};}exports[_0xfd37('0x40')]=function(_0x2f1b36,_0x42436e){var _0x266042={'include':[{'model':db[_0xfd37('0x41')],'as':_0xfd37('0x3e')},{'model':db[_0xfd37('0x42')],'as':_0xfd37('0x3f')},{'model':db[_0xfd37('0x43')],'as':_0xfd37('0x44')}]},_0x3c4df3={},_0x352d54={'count':0x0,'rows':[]};var _0x392924=_['map'](db[_0xfd37('0x45')]['rawAttributes'],function(_0x4138fe){return{'name':_0x4138fe[_0xfd37('0x46')],'type':_0x4138fe['type'][_0xfd37('0x47')]};});_0x3c4df3[_0xfd37('0x48')]=_[_0xfd37('0x49')](_0x392924,'name');_0x3c4df3[_0xfd37('0x4a')]=_[_0xfd37('0x4b')](_0x2f1b36[_0xfd37('0x4a')]);_0x3c4df3[_0xfd37('0x4c')]=_[_0xfd37('0x4d')](_0x3c4df3[_0xfd37('0x48')],_0x3c4df3['query']);_0x266042[_0xfd37('0x4e')]=_['intersection'](_0x3c4df3[_0xfd37('0x48')],qs[_0xfd37('0x4f')](_0x2f1b36['query'][_0xfd37('0x4f')]));_0x266042[_0xfd37('0x4e')]=_0x266042['attributes'][_0xfd37('0x50')]?_0x266042[_0xfd37('0x4e')]:_0x3c4df3[_0xfd37('0x48')];if(!_0x2f1b36[_0xfd37('0x4a')][_0xfd37('0x51')](_0xfd37('0x52'))){_0x266042[_0xfd37('0x1e')]=qs[_0xfd37('0x1e')](_0x2f1b36[_0xfd37('0x4a')][_0xfd37('0x1e')]);_0x266042[_0xfd37('0x1b')]=qs[_0xfd37('0x1b')](_0x2f1b36[_0xfd37('0x4a')][_0xfd37('0x1b')]);}_0x266042[_0xfd37('0x53')]=qs[_0xfd37('0x54')](_0x2f1b36[_0xfd37('0x4a')][_0xfd37('0x54')]);_0x266042[_0xfd37('0x55')]=qs[_0xfd37('0x4c')](_['pick'](_0x2f1b36['query'],_0x3c4df3[_0xfd37('0x4c')]),_0x392924);if(_0x2f1b36['query']['filter']){_0x266042[_0xfd37('0x55')]=_[_0xfd37('0x56')](_0x266042[_0xfd37('0x55')],{'$or':_[_0xfd37('0x49')](_0x392924,function(_0x4aa2a6){if(_0x4aa2a6[_0xfd37('0x57')]!=='VIRTUAL'){var _0x1f09bc={};_0x1f09bc[_0x4aa2a6[_0xfd37('0x28')]]={'$like':'%'+_0x2f1b36['query']['filter']+'%'};return _0x1f09bc;}})});}_0x266042=_[_0xfd37('0x56')]({},_0x266042,_0x2f1b36[_0xfd37('0x58')]);var _0x4408dd={'where':_0x266042[_0xfd37('0x55')]};return db['MailAccount'][_0xfd37('0x1d')](_0x4408dd)[_0xfd37('0x21')](function(_0x2f1d4b){_0x352d54[_0xfd37('0x1d')]=_0x2f1d4b;if(_0x2f1b36[_0xfd37('0x4a')]['includeAll']){_0x266042[_0xfd37('0x59')]=[{'all':!![]}];}return db[_0xfd37('0x45')][_0xfd37('0x5a')](_0x266042);})[_0xfd37('0x21')](function(_0x16cf7e){_0x352d54[_0xfd37('0x5b')]=_0x16cf7e;return _0x352d54;})[_0xfd37('0x21')](respondWithFilteredResult(_0x42436e,_0x266042))[_0xfd37('0x5c')](handleError(_0x42436e,null));};exports[_0xfd37('0x5d')]=function(_0x1411da,_0x90ecf7){var _0xcbe336={'raw':![],'where':{'id':_0x1411da['params']['id']},'include':[{'model':db[_0xfd37('0x41')],'as':_0xfd37('0x3e')},{'model':db[_0xfd37('0x42')],'as':_0xfd37('0x3f')},{'model':db[_0xfd37('0x43')],'as':_0xfd37('0x44')}]},_0x241fc4={};_0x241fc4[_0xfd37('0x48')]=_[_0xfd37('0x4b')](db[_0xfd37('0x45')][_0xfd37('0x5e')]);_0x241fc4[_0xfd37('0x4a')]=_[_0xfd37('0x4b')](_0x1411da['query']);_0x241fc4[_0xfd37('0x4c')]=_[_0xfd37('0x4d')](_0x241fc4[_0xfd37('0x48')],_0x241fc4['query']);_0xcbe336['attributes']=_[_0xfd37('0x4d')](_0x241fc4['model'],qs['fields'](_0x1411da['query'][_0xfd37('0x4f')]));_0xcbe336[_0xfd37('0x4e')]=_0xcbe336[_0xfd37('0x4e')]['length']?_0xcbe336[_0xfd37('0x4e')]:_0x241fc4['model'];if(_0x1411da[_0xfd37('0x4a')][_0xfd37('0x5f')]){_0xcbe336[_0xfd37('0x59')]=[{'all':!![]}];}_0xcbe336=_[_0xfd37('0x56')]({},_0xcbe336,_0x1411da[_0xfd37('0x58')]);return db[_0xfd37('0x45')][_0xfd37('0x60')](_0xcbe336)[_0xfd37('0x21')](handleEntityNotFound(_0x90ecf7,null))[_0xfd37('0x21')](respondWithResult(_0x90ecf7,null))[_0xfd37('0x5c')](handleError(_0x90ecf7,null));};exports[_0xfd37('0x20')]=function(_0x3ca1ae,_0x4c2860){if(_0x3ca1ae[_0xfd37('0x61')]['id']){delete _0x3ca1ae[_0xfd37('0x61')]['id'];}var _0x1776d8=_0x3ca1ae['body'][_0xfd37('0x62')]==='custom'?null:_0x3ca1ae[_0xfd37('0x61')][_0xfd37('0x62')];var _0x55c421=_0x3ca1ae[_0xfd37('0x61')][_0xfd37('0x3e')]||{};var _0x550f69=_0x3ca1ae[_0xfd37('0x61')][_0xfd37('0x3f')]||{};if(_0x1776d8){_0x55c421['host']=getImapHost(_0x1776d8);_0x55c421['port']=0x3e1;_0x550f69[_0xfd37('0x3a')]=getSmtpHost(_0x1776d8);_0x550f69['port']=0x24b;_0x550f69['secure']=![];}if(_0x550f69['modernAuthentication']){_0x550f69[_0xfd37('0x3b')]=![];}else{_0x550f69[_0xfd37('0x38')]=null;}if(!_0x55c421[_0xfd37('0x37')])_0x55c421[_0xfd37('0x38')]=null;_0x3ca1ae['body'][_0xfd37('0x3e')]=_0x55c421;_0x3ca1ae[_0xfd37('0x61')][_0xfd37('0x3f')]=_0x550f69;return db[_0xfd37('0x45')][_0xfd37('0x60')]({'where':{'id':_0x3ca1ae[_0xfd37('0x63')]['id']},'include':[{'model':db[_0xfd37('0x41')],'as':'Imap'},{'model':db[_0xfd37('0x42')],'as':_0xfd37('0x3f')},{'model':db[_0xfd37('0x43')],'as':_0xfd37('0x44')}]})[_0xfd37('0x21')](handleEntityNotFound(_0x4c2860,null))[_0xfd37('0x21')](function(_0x4650fd){if(!_0x4650fd)throw new Error(_0xfd37('0x64'));if(_0x4650fd[_0xfd37('0x3c')])delete _0x3ca1ae[_0xfd37('0x61')]['Imap'];return _0x4650fd;})[_0xfd37('0x21')](saveUpdates(_0x3ca1ae[_0xfd37('0x61')],null))['then'](function(_0x8d4c6f){if(!_0x3ca1ae[_0xfd37('0x61')]['Imap'])return _0x8d4c6f;return db['MailServerIn'][_0xfd37('0x20')](_0x3ca1ae[_0xfd37('0x61')]['Imap'],{'where':{'MailAccountId':_0x8d4c6f['id']}})['then'](function(){return _0x8d4c6f;});})['then'](function(_0x42ea80){if(!_0x3ca1ae[_0xfd37('0x61')][_0xfd37('0x3f')])return _0x42ea80;return db[_0xfd37('0x42')][_0xfd37('0x20')](_0x3ca1ae[_0xfd37('0x61')][_0xfd37('0x3f')],{'where':{'MailAccountId':_0x42ea80['id']}})[_0xfd37('0x21')](function(){return _0x42ea80;});})[_0xfd37('0x21')](respondWithResult(_0x4c2860,null))[_0xfd37('0x5c')](handleError(_0x4c2860,null));};exports[_0xfd37('0x65')]=function(_0x2baa50,_0x3aed3a){return db[_0xfd37('0x45')][_0xfd37('0x65')]()['then'](respondWithResult(_0x3aed3a,null))[_0xfd37('0x5c')](handleError(_0x3aed3a,null));};exports['addDisposition']=function(_0x87172d,_0x498062){if(_0x87172d['body']['id']){delete _0x87172d[_0xfd37('0x61')]['id'];}return db[_0xfd37('0x45')][_0xfd37('0x60')]({'where':{'id':_0x87172d[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x498062,null))[_0xfd37('0x21')](function(_0x164495){if(_0x164495){_0x87172d['body'][_0xfd37('0x66')]=_0x164495['id'];return db[_0xfd37('0x67')]['create'](_0x87172d[_0xfd37('0x61')]);}})[_0xfd37('0x21')](respondWithResult(_0x498062,null))[_0xfd37('0x5c')](handleError(_0x498062,null));};exports['getDispositions']=function(_0x1f4e15,_0x19795c){var _0x40effd={'raw':![],'where':{}};var _0x332feb={};var _0x427838={'count':0x0,'rows':[]};return db['MailAccount'][_0xfd37('0x68')]({'where':{'id':_0x1f4e15[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x19795c,null))[_0xfd37('0x21')](function(_0xb37d5){if(_0xb37d5){_0x332feb[_0xfd37('0x48')]=_[_0xfd37('0x4b')](db[_0xfd37('0x67')][_0xfd37('0x5e')]);_0x332feb[_0xfd37('0x4a')]=_[_0xfd37('0x4b')](_0x1f4e15[_0xfd37('0x4a')]);_0x332feb[_0xfd37('0x4c')]=_['intersection'](_0x332feb[_0xfd37('0x48')],_0x332feb['query']);_0x40effd[_0xfd37('0x4e')]=_[_0xfd37('0x4d')](_0x332feb[_0xfd37('0x48')],qs[_0xfd37('0x4f')](_0x1f4e15['query']['fields']));_0x40effd[_0xfd37('0x4e')]=_0x40effd[_0xfd37('0x4e')][_0xfd37('0x50')]?_0x40effd[_0xfd37('0x4e')]:_0x332feb[_0xfd37('0x48')];if(!_0x1f4e15[_0xfd37('0x4a')][_0xfd37('0x51')](_0xfd37('0x52'))){_0x40effd[_0xfd37('0x1e')]=qs[_0xfd37('0x1e')](_0x1f4e15[_0xfd37('0x4a')][_0xfd37('0x1e')]);_0x40effd[_0xfd37('0x1b')]=qs[_0xfd37('0x1b')](_0x1f4e15[_0xfd37('0x4a')][_0xfd37('0x1b')]);}_0x40effd[_0xfd37('0x53')]=qs[_0xfd37('0x54')](_0x1f4e15[_0xfd37('0x4a')][_0xfd37('0x54')]);_0x40effd[_0xfd37('0x55')]=qs[_0xfd37('0x4c')](_[_0xfd37('0x69')](_0x1f4e15[_0xfd37('0x4a')],_0x332feb[_0xfd37('0x4c')]));_0x40effd[_0xfd37('0x55')][_0xfd37('0x66')]=_0xb37d5['id'];if(_0x1f4e15[_0xfd37('0x4a')][_0xfd37('0x6a')]){_0x40effd[_0xfd37('0x55')]=_[_0xfd37('0x56')](_0x40effd['where'],{'$or':_['map'](_0x40effd[_0xfd37('0x4e')],function(_0x12fb10){var _0x3b3f11={};_0x3b3f11[_0x12fb10]={'$like':'%'+_0x1f4e15[_0xfd37('0x4a')][_0xfd37('0x6a')]+'%'};return _0x3b3f11;})});}_0x40effd=_[_0xfd37('0x56')]({},_0x40effd,_0x1f4e15[_0xfd37('0x58')]);return db[_0xfd37('0x67')][_0xfd37('0x1d')]({'where':_0x40effd[_0xfd37('0x55')]})[_0xfd37('0x21')](function(_0x453dab){_0x427838['count']=_0x453dab;if(_0x1f4e15[_0xfd37('0x4a')][_0xfd37('0x5f')]){_0x40effd[_0xfd37('0x59')]=[{'all':!![]}];}return db[_0xfd37('0x67')][_0xfd37('0x5a')](_0x40effd);})[_0xfd37('0x21')](function(_0x407137){_0x427838['rows']=_0x407137;return _0x427838;});}})[_0xfd37('0x21')](respondWithFilteredResult(_0x19795c,_0x40effd))[_0xfd37('0x5c')](handleError(_0x19795c,null));};exports[_0xfd37('0x6b')]=function(_0x504078,_0x570b37){return db[_0xfd37('0x45')][_0xfd37('0x60')]({'where':{'id':_0x504078[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x570b37,null))[_0xfd37('0x21')](function(_0x4cb45b){if(_0x4cb45b){return _0x4cb45b[_0xfd37('0x6b')](_0x504078[_0xfd37('0x4a')][_0xfd37('0x6c')]);}})[_0xfd37('0x21')](respondWithStatusCode(_0x570b37,null))[_0xfd37('0x5c')](handleError(_0x570b37,null));};exports[_0xfd37('0x6d')]=function(_0x4172f0,_0x3b0f66){if(_0x4172f0[_0xfd37('0x61')]['id']){delete _0x4172f0[_0xfd37('0x61')]['id'];}return db['MailAccount'][_0xfd37('0x60')]({'where':{'id':_0x4172f0[_0xfd37('0x63')]['id']}})['then'](handleEntityNotFound(_0x3b0f66,null))['then'](function(_0x6d51c5){if(_0x6d51c5){_0x4172f0[_0xfd37('0x61')][_0xfd37('0x66')]=_0x6d51c5['id'];return db[_0xfd37('0x6e')][_0xfd37('0x6f')](_0x4172f0[_0xfd37('0x61')]);}})[_0xfd37('0x21')](respondWithResult(_0x3b0f66,null))['catch'](handleError(_0x3b0f66,null));};exports[_0xfd37('0x70')]=function(_0x14df77,_0x3a58fa){var _0x3f419d={'raw':![],'where':{}};var _0x3a27cf={};var _0x42fcca={'count':0x0,'rows':[]};return db[_0xfd37('0x45')][_0xfd37('0x68')]({'where':{'id':_0x14df77[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x3a58fa,null))['then'](function(_0x52a7e7){if(_0x52a7e7){_0x3a27cf[_0xfd37('0x48')]=_[_0xfd37('0x4b')](db[_0xfd37('0x6e')][_0xfd37('0x5e')]);_0x3a27cf[_0xfd37('0x4a')]=_[_0xfd37('0x4b')](_0x14df77[_0xfd37('0x4a')]);_0x3a27cf['filters']=_[_0xfd37('0x4d')](_0x3a27cf['model'],_0x3a27cf[_0xfd37('0x4a')]);_0x3f419d['attributes']=_[_0xfd37('0x4d')](_0x3a27cf[_0xfd37('0x48')],qs['fields'](_0x14df77['query'][_0xfd37('0x4f')]));_0x3f419d[_0xfd37('0x4e')]=_0x3f419d[_0xfd37('0x4e')][_0xfd37('0x50')]?_0x3f419d['attributes']:_0x3a27cf[_0xfd37('0x48')];if(!_0x14df77[_0xfd37('0x4a')]['hasOwnProperty']('nolimit')){_0x3f419d[_0xfd37('0x1e')]=qs[_0xfd37('0x1e')](_0x14df77[_0xfd37('0x4a')]['limit']);_0x3f419d[_0xfd37('0x1b')]=qs[_0xfd37('0x1b')](_0x14df77[_0xfd37('0x4a')]['offset']);}_0x3f419d['order']=qs[_0xfd37('0x54')](_0x14df77['query'][_0xfd37('0x54')]);_0x3f419d[_0xfd37('0x55')]=qs[_0xfd37('0x4c')](_[_0xfd37('0x69')](_0x14df77[_0xfd37('0x4a')],_0x3a27cf[_0xfd37('0x4c')]));_0x3f419d[_0xfd37('0x55')][_0xfd37('0x66')]=_0x52a7e7['id'];if(_0x14df77[_0xfd37('0x4a')]['filter']){_0x3f419d[_0xfd37('0x55')]=_[_0xfd37('0x56')](_0x3f419d[_0xfd37('0x55')],{'$or':_[_0xfd37('0x49')](_0x3f419d[_0xfd37('0x4e')],function(_0x45c75d){var _0x3f2720={};_0x3f2720[_0x45c75d]={'$like':'%'+_0x14df77['query'][_0xfd37('0x6a')]+'%'};return _0x3f2720;})});}_0x3f419d=_[_0xfd37('0x56')]({},_0x3f419d,_0x14df77[_0xfd37('0x58')]);return db[_0xfd37('0x6e')][_0xfd37('0x1d')]({'where':_0x3f419d[_0xfd37('0x55')]})[_0xfd37('0x21')](function(_0x2f16a8){_0x42fcca[_0xfd37('0x1d')]=_0x2f16a8;if(_0x14df77[_0xfd37('0x4a')]['includeAll']){_0x3f419d[_0xfd37('0x59')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x3f419d);})[_0xfd37('0x21')](function(_0x402a76){_0x42fcca[_0xfd37('0x5b')]=_0x402a76;return _0x42fcca;});}})[_0xfd37('0x21')](respondWithFilteredResult(_0x3a58fa,_0x3f419d))[_0xfd37('0x5c')](handleError(_0x3a58fa,null));};exports[_0xfd37('0x71')]=function(_0x1beee1,_0x10cd71){return db['MailAccount']['find']({'where':{'id':_0x1beee1[_0xfd37('0x63')]['id']}})['then'](handleEntityNotFound(_0x10cd71,null))[_0xfd37('0x21')](function(_0x558ac5){if(_0x558ac5){return _0x558ac5[_0xfd37('0x71')](_0x1beee1[_0xfd37('0x4a')][_0xfd37('0x6c')]);}})[_0xfd37('0x21')](respondWithStatusCode(_0x10cd71,null))[_0xfd37('0x5c')](handleError(_0x10cd71,null));};exports[_0xfd37('0x6f')]=function(_0x4ec01d,_0x2cb540){var _0x401289={'name':_0x4ec01d[_0xfd37('0x61')][_0xfd37('0x28')],'key':_0x4ec01d[_0xfd37('0x61')]['key'],'provider':_0x4ec01d['body']['provider']===_0xfd37('0x72')?null:_0x4ec01d[_0xfd37('0x61')][_0xfd37('0x62')],'email':_0x4ec01d[_0xfd37('0x61')][_0xfd37('0x73')],'ListId':_0x4ec01d[_0xfd37('0x61')][_0xfd37('0x74')],'active':!_[_0xfd37('0x75')](_0x4ec01d[_0xfd37('0x61')]['active'])?_0x4ec01d['body'][_0xfd37('0x76')]:!![],'description':_0x4ec01d[_0xfd37('0x61')][_0xfd37('0x77')]||null};var _0x5d1540=getAuthenticationOptions(_0x401289[_0xfd37('0x62')],_0x4ec01d['body']);_0x401289[_0xfd37('0x3e')]=_0x5d1540[_0xfd37('0x3e')];_0x401289[_0xfd37('0x3f')]=_0x5d1540[_0xfd37('0x3f')];return db['MailAccount'][_0xfd37('0x6f')](_0x401289,{'include':[{'model':db[_0xfd37('0x42')],'as':_0xfd37('0x3f')},{'model':db[_0xfd37('0x41')],'as':_0xfd37('0x3e')}]})[_0xfd37('0x21')](function(_0x3c7d0f){var _0x283b32=_0x4ec01d['user'][_0xfd37('0x23')]({'plain':!![]});if(!_0x283b32)throw new Error(_0xfd37('0x78'));if(_0x283b32[_0xfd37('0x79')]===_0xfd37('0x33')){var _0x5503f0=_0x3c7d0f[_0xfd37('0x23')]({'plain':!![]});return db['UserProfileSection'][_0xfd37('0x60')]({'where':{'name':'MailAccounts','userProfileId':_0x283b32[_0xfd37('0x7a')]},'raw':!![]})[_0xfd37('0x21')](function(_0x59b030){if(_0x59b030&&_0x59b030['autoAssociation']===0x0){return db[_0xfd37('0x25')][_0xfd37('0x6f')]({'name':_0x5503f0[_0xfd37('0x28')],'resourceId':_0x5503f0['id'],'type':_0x59b030[_0xfd37('0x28')],'sectionId':_0x59b030['id']},{})[_0xfd37('0x21')](function(){return _0x3c7d0f;});}else{return _0x3c7d0f;}})['catch'](function(_0x3ae2a6){logger[_0xfd37('0x15')](_0xfd37('0x7b'),_0x3ae2a6);throw _0x3ae2a6;});}return _0x3c7d0f;})[_0xfd37('0x21')](respondWithResult(_0x2cb540,0xc9))['catch'](handleError(_0x2cb540,null));};exports[_0xfd37('0x7c')]=function(_0xe1a02b,_0x461cbe){return db[_0xfd37('0x45')][_0xfd37('0x68')]({'where':{'id':_0xe1a02b['params']['id']}})['then'](handleEntityNotFound(_0x461cbe,null))[_0xfd37('0x21')](function(_0x50cc35){if(_0x50cc35){return _0x50cc35['getImap']();}return null;})[_0xfd37('0x21')](respondWithResult(_0x461cbe,null))[_0xfd37('0x5c')](handleError(_0x461cbe,null));};exports[_0xfd37('0x7d')]=function(_0x58d8b4,_0x2d6b7e){if(_0x58d8b4[_0xfd37('0x61')]['id']){delete _0x58d8b4[_0xfd37('0x61')]['id'];}return db[_0xfd37('0x45')][_0xfd37('0x60')]({'where':{'id':_0x58d8b4[_0xfd37('0x63')]['id']}})['then'](handleEntityNotFound(_0x2d6b7e,null))[_0xfd37('0x21')](function(_0x50be0d){if(_0x50be0d){_0x58d8b4[_0xfd37('0x61')][_0xfd37('0x66')]=_0x50be0d['id'];return db[_0xfd37('0x41')][_0xfd37('0x6f')](_0x58d8b4['body']);}})[_0xfd37('0x21')](respondWithResult(_0x2d6b7e,null))[_0xfd37('0x5c')](handleError(_0x2d6b7e,null));};exports[_0xfd37('0x7e')]=function(_0x3bbcf4,_0x3b0bc5){return db['MailAccount'][_0xfd37('0x68')]({'where':{'id':_0x3bbcf4[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x3b0bc5,null))[_0xfd37('0x21')](function(_0x4cee8d){if(_0x4cee8d){return _0x4cee8d['setImap'](null);}return null;})[_0xfd37('0x21')](respondWithStatusCode(_0x3b0bc5,null))[_0xfd37('0x5c')](handleError(_0x3b0bc5,null));};exports[_0xfd37('0x7f')]=function(_0x59593e,_0x2d8fd2){return db[_0xfd37('0x45')][_0xfd37('0x68')]({'where':{'id':_0x59593e['params']['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x2d8fd2,null))['then'](function(_0x13b1b2){if(_0x13b1b2){return _0x13b1b2[_0xfd37('0x7f')]();}return null;})[_0xfd37('0x21')](respondWithResult(_0x2d8fd2,null))[_0xfd37('0x5c')](handleError(_0x2d8fd2,null));};exports[_0xfd37('0x80')]=function(_0x586fb9,_0x2c3ed4){if(_0x586fb9[_0xfd37('0x61')]['id']){delete _0x586fb9[_0xfd37('0x61')]['id'];}return db[_0xfd37('0x45')][_0xfd37('0x60')]({'where':{'id':_0x586fb9[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x2c3ed4,null))[_0xfd37('0x21')](function(_0x20e211){if(_0x20e211){_0x586fb9['body'][_0xfd37('0x66')]=_0x20e211['id'];return db[_0xfd37('0x42')][_0xfd37('0x6f')](_0x586fb9[_0xfd37('0x61')]);}})[_0xfd37('0x21')](respondWithResult(_0x2c3ed4,null))[_0xfd37('0x5c')](handleError(_0x2c3ed4,null));};exports[_0xfd37('0x81')]=function(_0x814989,_0xd07821){return db[_0xfd37('0x45')]['findOne']({'where':{'id':_0x814989['params']['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0xd07821,null))[_0xfd37('0x21')](function(_0x3b1b2b){if(_0x3b1b2b){return _0x3b1b2b[_0xfd37('0x82')](null);}return null;})[_0xfd37('0x21')](respondWithStatusCode(_0xd07821,null))[_0xfd37('0x5c')](handleError(_0xd07821,null));};exports[_0xfd37('0x83')]=function(_0x3104da,_0x300a1d){return db['MailInteraction'][_0xfd37('0x60')]({'where':{'id':_0x3104da[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x300a1d,null))[_0xfd37('0x21')](function(_0x25f4aa){if(_0x25f4aa){return _0x25f4aa[_0xfd37('0x83')](_0x3104da[_0xfd37('0x61')]['ids'],_['omit'](_0x3104da['body'],[_0xfd37('0x6c'),'id'])||{});}})[_0xfd37('0x21')](respondWithResult(_0x300a1d,null))[_0xfd37('0x5c')](handleError(_0x300a1d,null));};exports[_0xfd37('0x84')]=function(_0x309a32,_0x4b70dd){var _0x5b35fe={'raw':![],'where':{}};var _0x36e821={};var _0x5c29bf={'count':0x0,'rows':[]};return db[_0xfd37('0x45')][_0xfd37('0x68')]({'where':{'id':_0x309a32[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x4b70dd,null))[_0xfd37('0x21')](function(_0x42119c){if(_0x42119c){_0x36e821[_0xfd37('0x48')]=_['keys'](db[_0xfd37('0x85')][_0xfd37('0x5e')]);_0x36e821[_0xfd37('0x4a')]=_[_0xfd37('0x4b')](_0x309a32[_0xfd37('0x4a')]);_0x36e821[_0xfd37('0x4c')]=_['intersection'](_0x36e821[_0xfd37('0x48')],_0x36e821[_0xfd37('0x4a')]);_0x5b35fe[_0xfd37('0x4e')]=_[_0xfd37('0x4d')](_0x36e821[_0xfd37('0x48')],qs['fields'](_0x309a32[_0xfd37('0x4a')][_0xfd37('0x4f')]));_0x5b35fe['attributes']=_0x5b35fe[_0xfd37('0x4e')][_0xfd37('0x50')]?_0x5b35fe[_0xfd37('0x4e')]:_0x36e821['model'];if(!_0x309a32['query']['hasOwnProperty'](_0xfd37('0x52'))){_0x5b35fe['limit']=qs[_0xfd37('0x1e')](_0x309a32[_0xfd37('0x4a')][_0xfd37('0x1e')]);_0x5b35fe[_0xfd37('0x1b')]=qs[_0xfd37('0x1b')](_0x309a32[_0xfd37('0x4a')][_0xfd37('0x1b')]);}_0x5b35fe[_0xfd37('0x53')]=qs[_0xfd37('0x54')](_0x309a32[_0xfd37('0x4a')][_0xfd37('0x54')]);_0x5b35fe[_0xfd37('0x55')]=qs[_0xfd37('0x4c')](_['pick'](_0x309a32[_0xfd37('0x4a')],_0x36e821[_0xfd37('0x4c')]));_0x5b35fe[_0xfd37('0x55')][_0xfd37('0x66')]=_0x42119c['id'];if(_0x309a32[_0xfd37('0x4a')][_0xfd37('0x6a')]){_0x5b35fe[_0xfd37('0x55')]=_[_0xfd37('0x56')](_0x5b35fe['where'],{'$or':_[_0xfd37('0x49')](_0x5b35fe['attributes'],function(_0x437299){var _0x450eb9={};_0x450eb9[_0x437299]={'$like':'%'+_0x309a32[_0xfd37('0x4a')][_0xfd37('0x6a')]+'%'};return _0x450eb9;})});}_0x5b35fe=_[_0xfd37('0x56')]({},_0x5b35fe,_0x309a32[_0xfd37('0x58')]);return db[_0xfd37('0x85')][_0xfd37('0x1d')]({'where':_0x5b35fe[_0xfd37('0x55')]})[_0xfd37('0x21')](function(_0x41a46a){_0x5c29bf[_0xfd37('0x1d')]=_0x41a46a;if(_0x309a32['query'][_0xfd37('0x5f')]){_0x5b35fe[_0xfd37('0x59')]=[{'model':db[_0xfd37('0x86')],'as':_0xfd37('0x87'),'required':![]},{'model':db[_0xfd37('0x88')],'as':_0xfd37('0x89'),'attributes':[_0xfd37('0x28'),'fullname',_0xfd37('0x8a')],'required':![]},{'model':db[_0xfd37('0x8b')],'as':_0xfd37('0x8c'),'attributes':['id',_0xfd37('0x28'),_0xfd37('0x8d')],'where':_0x309a32[_0xfd37('0x4a')][_0xfd37('0x8e')]?{'id':_0x309a32['query'][_0xfd37('0x8e')]}:undefined,'required':_0x309a32[_0xfd37('0x4a')][_0xfd37('0x8e')]?!![]:![]}];}return db[_0xfd37('0x85')][_0xfd37('0x5a')](_0x5b35fe);})[_0xfd37('0x21')](function(_0x51c6a2){_0x5c29bf[_0xfd37('0x5b')]=_0x51c6a2;return _0x5c29bf;});}})[_0xfd37('0x21')](respondWithFilteredResult(_0x4b70dd,_0x5b35fe))[_0xfd37('0x5c')](handleError(_0x4b70dd,null));};exports[_0xfd37('0x8f')]=function addApplications(_0x4dd670,_0x4e3d97){var _0x3db67b=_0x4dd670[_0xfd37('0x63')]['id'];var _0x1b91cc=_0x4dd670[_0xfd37('0x61')];var _0x4007fd=0xc8;var _0x2b1784=null;return db['sequelize'][_0xfd37('0x90')]({'isolationLevel':db[_0xfd37('0x91')]['Transaction']['ISOLATION_LEVELS'][_0xfd37('0x92')]},function(_0x2762a8){return db[_0xfd37('0x45')][_0xfd37('0x68')]({'where':{'id':_0x3db67b},'transaction':_0x2762a8})['then'](function(_0x1d8a77){if(_0x1d8a77){return db['MailApplication']['destroy']({'where':{'MailAccountId':_0x3db67b},'transaction':_0x2762a8})[_0xfd37('0x21')](function(){var _0x4815a8=_['map'](_0x1b91cc,function(_0x203867){_0x203867['MailAccountId']=_0x3db67b;return _0x203867;});return db[_0xfd37('0x93')][_0xfd37('0x94')](_0x4815a8,{'transaction':_0x2762a8});});}else{_0x4007fd=0x194;_0x2b1784=[];}});})[_0xfd37('0x21')](function(){if(_0x4007fd!==0x194){return db[_0xfd37('0x93')][_0xfd37('0x95')]({'where':{'MailAccountId':_0x3db67b},'order':_0xfd37('0x96')})[_0xfd37('0x21')](function(_0x4a0126){_0x2b1784=_0x4a0126;});}})[_0xfd37('0x5c')](function(_0x3c398c){_0x4007fd=0x1f4;logger[_0xfd37('0x15')](_0x3c398c[_0xfd37('0x27')]);if(_0x3c398c['name']){delete _0x3c398c[_0xfd37('0x28')];}_0x2b1784=_0x3c398c;})[_0xfd37('0x97')](function(){if(_0x2b1784===null){_0x4e3d97['sendStatus'](_0x4007fd);}else{if(_0x4007fd===0x1f4){_0x4e3d97[_0xfd37('0x18')](_0x4007fd)[_0xfd37('0x29')](_0x2b1784);}else{_0x4e3d97[_0xfd37('0x18')](_0x4007fd)['json'](_0x2b1784);}}});};exports[_0xfd37('0x98')]=function(_0x1ce186,_0xe0a486){var _0x25b5df={};var _0x2d10b5={};var _0x379692;var _0x58333b;return db['MailAccount']['findOne']({'where':{'id':_0x1ce186[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0xe0a486,null))[_0xfd37('0x21')](function(_0x3c389a){if(_0x3c389a){_0x379692=_0x3c389a;_0x2d10b5[_0xfd37('0x48')]=_[_0xfd37('0x4b')](db['MailApplication'][_0xfd37('0x5e')]);_0x2d10b5['query']=_[_0xfd37('0x4b')](_0x1ce186[_0xfd37('0x4a')]);_0x2d10b5[_0xfd37('0x4c')]=_[_0xfd37('0x4d')](_0x2d10b5[_0xfd37('0x48')],_0x2d10b5[_0xfd37('0x4a')]);_0x25b5df[_0xfd37('0x4e')]=_[_0xfd37('0x4d')](_0x2d10b5['model'],qs['fields'](_0x1ce186[_0xfd37('0x4a')][_0xfd37('0x4f')]));_0x25b5df['attributes']=_0x25b5df[_0xfd37('0x4e')][_0xfd37('0x50')]?_0x25b5df['attributes']:_0x2d10b5['model'];_0x25b5df['order']=qs[_0xfd37('0x54')](_0x1ce186[_0xfd37('0x4a')][_0xfd37('0x54')]);_0x25b5df[_0xfd37('0x55')]=qs[_0xfd37('0x4c')](_[_0xfd37('0x69')](_0x1ce186[_0xfd37('0x4a')],_0x2d10b5[_0xfd37('0x4c')]));if(_0x1ce186[_0xfd37('0x4a')][_0xfd37('0x6a')]){_0x25b5df['where']=_['merge'](_0x25b5df[_0xfd37('0x55')],{'$or':_[_0xfd37('0x49')](_0x25b5df[_0xfd37('0x4e')],function(_0x36f764){var _0x395fed={};_0x395fed[_0x36f764]={'$like':'%'+_0x1ce186[_0xfd37('0x4a')]['filter']+'%'};return _0x395fed;})});}_0x25b5df=_[_0xfd37('0x56')]({},_0x25b5df,_0x1ce186[_0xfd37('0x58')]);return _0x379692['getApplications'](_0x25b5df);}})[_0xfd37('0x21')](function(_0x576876){if(_0x576876){_0x58333b=_0x576876[_0xfd37('0x50')];if(!_0x1ce186[_0xfd37('0x4a')]['hasOwnProperty'](_0xfd37('0x52'))){_0x25b5df[_0xfd37('0x1e')]=qs[_0xfd37('0x1e')](_0x1ce186[_0xfd37('0x4a')]['limit']);_0x25b5df['offset']=qs[_0xfd37('0x1b')](_0x1ce186['query'][_0xfd37('0x1b')]);}return _0x379692[_0xfd37('0x98')](_0x25b5df);}})[_0xfd37('0x21')](function(_0x577214){if(_0x577214){return _0x577214?{'count':_0x58333b,'rows':_0x577214}:null;}})['then'](respondWithResult(_0xe0a486,null))[_0xfd37('0x5c')](handleError(_0xe0a486,null));};exports['getMessages']=function(_0x3929f4,_0xec02a8){var _0x3874c9={'raw':!![],'where':{}};var _0x15d520={};var _0x76a4a6={'count':0x0,'rows':[]};return db['MailAccount'][_0xfd37('0x68')]({'where':{'id':_0x3929f4[_0xfd37('0x63')]['id']}})['then'](handleEntityNotFound(_0xec02a8,null))[_0xfd37('0x21')](function(_0x21ed2d){if(_0x21ed2d){_0x15d520[_0xfd37('0x48')]=_[_0xfd37('0x4b')](db[_0xfd37('0x99')][_0xfd37('0x5e')]);_0x15d520[_0xfd37('0x4a')]=_[_0xfd37('0x4b')](_0x3929f4[_0xfd37('0x4a')]);_0x15d520[_0xfd37('0x4c')]=_[_0xfd37('0x4d')](_0x15d520['model'],_0x15d520[_0xfd37('0x4a')]);_0x3874c9[_0xfd37('0x4e')]=_['intersection'](_0x15d520['model'],qs[_0xfd37('0x4f')](_0x3929f4[_0xfd37('0x4a')][_0xfd37('0x4f')]));_0x3874c9[_0xfd37('0x4e')]=_0x3874c9[_0xfd37('0x4e')][_0xfd37('0x50')]?_0x3874c9[_0xfd37('0x4e')]:_0x15d520[_0xfd37('0x48')];if(!_0x3929f4[_0xfd37('0x4a')]['hasOwnProperty'](_0xfd37('0x52'))){_0x3874c9[_0xfd37('0x1e')]=qs[_0xfd37('0x1e')](_0x3929f4[_0xfd37('0x4a')]['limit']);_0x3874c9[_0xfd37('0x1b')]=qs[_0xfd37('0x1b')](_0x3929f4['query'][_0xfd37('0x1b')]);}_0x3874c9['order']=qs['sort'](_0x3929f4['query'][_0xfd37('0x54')]);_0x3874c9[_0xfd37('0x55')]=qs[_0xfd37('0x4c')](_['pick'](_0x3929f4[_0xfd37('0x4a')],_0x15d520['filters']));_0x3874c9[_0xfd37('0x55')][_0xfd37('0x66')]=_0x21ed2d['id'];if(_0x3929f4[_0xfd37('0x4a')][_0xfd37('0x6a')]){_0x3874c9[_0xfd37('0x55')]=_['merge'](_0x3874c9[_0xfd37('0x55')],{'$or':_[_0xfd37('0x49')](_0x3874c9['attributes'],function(_0x4dbbe5){var _0x45fe0d={};_0x45fe0d[_0x4dbbe5]={'$like':'%'+_0x3929f4['query'][_0xfd37('0x6a')]+'%'};return _0x45fe0d;})});}if(_0x3929f4[_0xfd37('0x4a')][_0xfd37('0x9a')]){var _0x3d0935=_0x3929f4[_0xfd37('0x4a')]['$gte']['split'](',');var _0x56781e={};_0x56781e[_0x3d0935[0x0]]={'$gte':moment(_0x3d0935[0x1])[_0xfd37('0x9b')](_0xfd37('0x9c'))};_0x3874c9[_0xfd37('0x55')]=_[_0xfd37('0x56')](_0x3874c9[_0xfd37('0x55')],_0x56781e);}_0x3874c9=_[_0xfd37('0x56')]({},_0x3874c9,_0x3929f4['options']);return db['MailMessage'][_0xfd37('0x1d')]({'where':_0x3874c9[_0xfd37('0x55')]})['then'](function(_0x83bb22){_0x76a4a6[_0xfd37('0x1d')]=_0x83bb22;if(_0x3929f4[_0xfd37('0x4a')]['includeAll']){_0x3874c9[_0xfd37('0x59')]=[{'all':!![]}];}return db[_0xfd37('0x99')][_0xfd37('0x5a')](_0x3874c9);})[_0xfd37('0x21')](function(_0x1fd8d8){if(_0x3929f4[_0xfd37('0x4a')][_0xfd37('0x9d')]==='true'){for(var _0x7ab9e=0x0;_0x7ab9e<_0x1fd8d8[_0xfd37('0x50')];_0x7ab9e++){_0x1fd8d8[_0x7ab9e][_0xfd37('0x61')]=juice(_0x1fd8d8[_0x7ab9e][_0xfd37('0x61')]);}}_0x76a4a6[_0xfd37('0x5b')]=_0x1fd8d8;return _0x76a4a6;});}})[_0xfd37('0x21')](respondWithFilteredResult(_0xec02a8,_0x3874c9))[_0xfd37('0x5c')](handleError(_0xec02a8,null));};exports[_0xfd37('0x29')]=function(_0x11a338,_0x70ff11){var _0x5d2637,_0xc4249a={},_0x18f23f;if(_0x11a338[_0xfd37('0x61')]['to']){_0x18f23f=_0x11a338[_0xfd37('0x61')]['to'][_0xfd37('0x9e')](',')[0x0];}return db[_0xfd37('0x45')]['find']({'where':{'id':_0x11a338[_0xfd37('0x63')]['id']},'include':[{'model':db['CmList'],'as':_0xfd37('0x9f'),'include':[{'model':db[_0xfd37('0x86')],'as':_0xfd37('0xa0'),'where':{'email':_0x18f23f},'limit':0x1,'order':[['updatedAt',_0xfd37('0xa1')]]}]},{'model':db[_0xfd37('0x42')],'as':_0xfd37('0x3f'),'raw':!![],'include':[{'model':db[_0xfd37('0xa2')],'as':_0xfd37('0xa2'),'raw':!![]}]}]})[_0xfd37('0x21')](handleEntityNotFound(_0x70ff11,null))['then'](function(_0x459b42){if(!_0x459b42)return;_0x5d2637=_0x459b42;if(!_0x459b42['Smtp'])throw new Error(_0xfd37('0xa3'));if(_[_0xfd37('0x75')](_0x11a338['body'][_0xfd37('0xa4')])){_0x11a338[_0xfd37('0x61')][_0xfd37('0xa4')]=util['format'](_0xfd37('0xa5'),_0x459b42['name'],_0x459b42[_0xfd37('0x73')]||_0x459b42[_0xfd37('0x3f')][_0xfd37('0x33')]);}if(_0x11a338[_0xfd37('0x61')]['attachments']&&_0x11a338['body'][_0xfd37('0xa6')]['length']){for(var _0x3acc35=0x0;_0x3acc35<_0x11a338[_0xfd37('0x61')][_0xfd37('0xa6')][_0xfd37('0x50')];_0x3acc35+=0x1){_0x11a338['body'][_0xfd37('0xa6')][_0x3acc35]={'filename':_0x11a338[_0xfd37('0x61')]['attachments'][_0x3acc35][_0xfd37('0x28')],'path':path[_0xfd37('0xa7')](config['root'],_0xfd37('0xa8'),_0x11a338['body'][_0xfd37('0xa6')][_0x3acc35][_0xfd37('0xa9')])};}}var _0x4b6ac0=_0x459b42[_0xfd37('0xaa')]();return respondWithRpcPromise(_0xfd37('0xab'),'sendMail',{'account':_0x4b6ac0,'message':_0x11a338[_0xfd37('0x61')]});})[_0xfd37('0x21')](function(_0x3fc316){if(!_0x3fc316)return;_0xc4249a=_0x3fc316;if(!_0x5d2637[_0xfd37('0x9f')])throw new Error('List\x20not\x20found');if(_0x5d2637['List'][_0xfd37('0xa0')][_0xfd37('0x50')])return _0x5d2637[_0xfd37('0x9f')][_0xfd37('0xa0')][0x0];return db['CmContact'][_0xfd37('0x6f')](_['defaults'](_0x11a338[_0xfd37('0x61')],{'firstName':_0x11a338['body']['to'],'email':_0x11a338[_0xfd37('0x61')]['to'],'phone':_0x11a338[_0xfd37('0x61')]['to'],'ListId':_0x5d2637[_0xfd37('0x74')]}));})['then'](function(_0x3b53fa){if(!_0x3b53fa)return;var _0x424381={'UserId':_0x11a338['user']['id'],'ContactId':_0x3b53fa['id'],'MailAccountId':_0x5d2637['id'],'inReplyTo':_0xc4249a['messageId'],'to':_0x11a338[_0xfd37('0x61')][_0xfd37('0xa4')],'cc':_0x11a338['body']['cc'],'subject':_0x11a338[_0xfd37('0x61')][_0xfd37('0xac')],'attach':_0x11a338[_0xfd37('0x61')]['attach'],'firstMsgDirection':'out','lastMsgAt':moment()[_0xfd37('0x9b')](_0xfd37('0x9c')),'lastMsgDirection':_0xfd37('0xad'),'Messages':[_[_0xfd37('0x56')](_0x11a338[_0xfd37('0x61')],{'messageId':_0xc4249a[_0xfd37('0xae')],'sentAt':moment()[_0xfd37('0x9b')]('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x5d2637['id'],'UserId':_0x11a338[_0xfd37('0x33')]['id'],'ContactId':_0x3b53fa['id']})]};if(_0x11a338['body'][_0xfd37('0xaf')]){_0x424381=_['merge'](_0x424381,_0x11a338[_0xfd37('0x61')][_0xfd37('0xaf')]);}return db[_0xfd37('0x85')]['create'](_0x424381,{'include':[{'model':db[_0xfd37('0x99')],'as':'Messages'}]});})['then'](respondWithResult(_0x70ff11,null))['catch'](handleError(_0x70ff11,null));};exports[_0xfd37('0xb0')]=function(_0x1bd96e,_0x44a88c){return db['MailAccount'][_0xfd37('0x60')]({'where':{'id':_0x1bd96e['params']['id']},'include':[{'model':db[_0xfd37('0x42')],'as':_0xfd37('0x3f'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0xfd37('0xa2'),'raw':!![]}]}]})['then'](handleEntityNotFound(_0x44a88c,null))[_0xfd37('0x21')](function(_0x48170d){if(!_0x48170d[_0xfd37('0x3f')])return;var _0x58b13d=_0x48170d[_0xfd37('0xaa')]();return respondWithRpcPromise(_0xfd37('0xb1'),_0xfd37('0xb0'),{'account':_0x58b13d});})[_0xfd37('0x21')](respondWithResult(_0x44a88c,null))[_0xfd37('0x5c')](handleError(_0x44a88c,null));};exports['destroy']=function(_0x28540f,_0x2ce4bf){return db[_0xfd37('0x45')][_0xfd37('0x60')]({'where':{'id':_0x28540f['params']['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x2ce4bf,null))[_0xfd37('0x21')](function(_0x2f0cec){if(_0x2f0cec&&_0x2f0cec[_0xfd37('0x3c')]){throw new db[(_0xfd37('0xb2'))][(_0xfd37('0xb3'))](_0xfd37('0xb4'));}return _0x2f0cec;})[_0xfd37('0x21')](removeEntity(_0x2ce4bf,null))[_0xfd37('0x5c')](handleError(_0x2ce4bf,null));};exports[_0xfd37('0xb5')]=function(_0x23776c,_0x44c997){return db[_0xfd37('0x45')]['find']({'where':{'id':_0x23776c[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x44c997,null))[_0xfd37('0x21')](function(_0x33c531){if(_0x33c531){return _0x33c531[_0xfd37('0xb5')](_0x23776c[_0xfd37('0x61')][_0xfd37('0x6c')],_['omit'](_0x23776c[_0xfd37('0x61')],[_0xfd37('0x6c'),'id'])||{})['spread'](function(_0x102b1b){for(var _0x53aa0b=0x0;_0x53aa0b<_0x23776c[_0xfd37('0x61')][_0xfd37('0x6c')][_0xfd37('0x50')];_0x53aa0b+=0x1){socket[_0xfd37('0xb6')](_0xfd37('0xb7'),{'UserId':Number(_0x23776c[_0xfd37('0x61')]['ids'][_0x53aa0b]),'MailAccountId':Number(_0x23776c[_0xfd37('0x63')]['id'])});}return _0x102b1b;});}})[_0xfd37('0x21')](respondWithResult(_0x44c997,null))[_0xfd37('0x5c')](handleError(_0x44c997,null));};exports[_0xfd37('0xb8')]=function(_0x57d4bf,_0x22ec4e){return db[_0xfd37('0x45')][_0xfd37('0x60')]({'where':{'id':_0x57d4bf[_0xfd37('0x63')]['id']}})['then'](handleEntityNotFound(_0x22ec4e,null))[_0xfd37('0x21')](function(_0x5430be){if(_0x5430be){return _0x5430be['removeAgents'](_0x57d4bf[_0xfd37('0x4a')]['ids'])['then'](function(){if(_[_0xfd37('0xb9')](_0x57d4bf['query'][_0xfd37('0x6c')])){for(var _0x32055b=0x0;_0x32055b<_0x57d4bf[_0xfd37('0x4a')][_0xfd37('0x6c')][_0xfd37('0x50')];_0x32055b+=0x1){socket[_0xfd37('0xb6')](_0xfd37('0xba'),{'UserId':Number(_0x57d4bf[_0xfd37('0x4a')][_0xfd37('0x6c')][_0x32055b]),'MailAccountId':Number(_0x57d4bf[_0xfd37('0x63')]['id'])});}}else{socket[_0xfd37('0xb6')](_0xfd37('0xba'),{'UserId':Number(_0x57d4bf['query']['ids']),'MailAccountId':Number(_0x57d4bf[_0xfd37('0x63')]['id'])});}});}})[_0xfd37('0x21')](respondWithStatusCode(_0x22ec4e,null))['catch'](handleError(_0x22ec4e,null));};exports[_0xfd37('0xbb')]=function(_0x24e5b4,_0x45899c){var _0x8add1={};var _0x7da744={};var _0x4cc629;var _0x51281;return db['MailAccount']['findOne']({'where':{'id':_0x24e5b4[_0xfd37('0x63')]['id']}})[_0xfd37('0x21')](handleEntityNotFound(_0x45899c,null))['then'](function(_0x5a12ef){if(_0x5a12ef){_0x4cc629=_0x5a12ef;_0x7da744[_0xfd37('0x48')]=_[_0xfd37('0x4b')](db[_0xfd37('0x88')][_0xfd37('0x5e')]);_0x7da744['query']=_['keys'](_0x24e5b4['query']);_0x7da744[_0xfd37('0x4c')]=_[_0xfd37('0x4d')](_0x7da744[_0xfd37('0x48')],_0x7da744[_0xfd37('0x4a')]);_0x8add1[_0xfd37('0x4e')]=_[_0xfd37('0x4d')](_0x7da744[_0xfd37('0x48')],qs['fields'](_0x24e5b4[_0xfd37('0x4a')][_0xfd37('0x4f')]));_0x8add1[_0xfd37('0x4e')]=_0x8add1[_0xfd37('0x4e')][_0xfd37('0x50')]?_0x8add1[_0xfd37('0x4e')]:_0x7da744[_0xfd37('0x48')];_0x8add1[_0xfd37('0x53')]=qs['sort'](_0x24e5b4[_0xfd37('0x4a')][_0xfd37('0x54')]);_0x8add1[_0xfd37('0x55')]=qs[_0xfd37('0x4c')](_[_0xfd37('0x69')](_0x24e5b4[_0xfd37('0x4a')],_0x7da744[_0xfd37('0x4c')]));if(_0x24e5b4['query'][_0xfd37('0x6a')]){_0x8add1[_0xfd37('0x55')]=_['merge'](_0x8add1[_0xfd37('0x55')],{'$or':_['map'](_0x8add1['attributes'],function(_0x3f41d5){var _0x14e416={};_0x14e416[_0x3f41d5]={'$like':'%'+_0x24e5b4[_0xfd37('0x4a')][_0xfd37('0x6a')]+'%'};return _0x14e416;})});}_0x8add1=_[_0xfd37('0x56')]({},_0x8add1,_0x24e5b4[_0xfd37('0x58')]);return _0x4cc629['getAgents'](_0x8add1);}})[_0xfd37('0x21')](function(_0x480bdc){if(_0x480bdc){_0x51281=_0x480bdc[_0xfd37('0x50')];if(!_0x24e5b4[_0xfd37('0x4a')][_0xfd37('0x51')](_0xfd37('0x52'))){_0x8add1[_0xfd37('0x1e')]=qs[_0xfd37('0x1e')](_0x24e5b4[_0xfd37('0x4a')][_0xfd37('0x1e')]);_0x8add1['offset']=qs[_0xfd37('0x1b')](_0x24e5b4['query'][_0xfd37('0x1b')]);}return _0x4cc629[_0xfd37('0xbb')](_0x8add1);}})[_0xfd37('0x21')](function(_0x3c403e){if(_0x3c403e){return _0x3c403e?{'count':_0x51281,'rows':_0x3c403e}:null;}})[_0xfd37('0x21')](respondWithResult(_0x45899c,null))['catch'](handleError(_0x45899c,null));};
\ No newline at end of file
+var _0xc682=['CannedAnswer','getAnswers','removeAnswers','key','email','ListId','isNil','active','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','removeImap','setImap','getSmtp','removeSmtp','addInteraction','MailInteraction','omit','CmContact','User','Owner','fullname','Tag','color','tag','addApplications','transaction','sequelize','READ_COMMITTED','MailApplication','bulkCreate','finally','getApplications','getMessages','MailMessage','$gte','format','inlineCss','split','Contacts','updatedAt','DESC','CloudProvider','Smtp\x20configuration\x20not\x20found','from','%s\x20<%s>','attachments','join','root','server/files/attachments','basename','getSmtpOptions','sendMail','List','List\x20not\x20found','messageId','subject','attach','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','isArray','userMailAccount:remove','getAgents','moment','util','path','lodash','../../components/parsers/qs','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','http','request','then','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','update','destroy','MailAccounts','UserProfileResource','stack','name','send','gmail','imap.mail.yahoo.com','hotmail','outlook365','outlook.office365.com','Unknown\x20email\x20service\x20provider','smtp.gmail.com','yahoo','smtp.mail.yahoo.com','smtp-mail.outlook.com','smtp.office365.com','user','username','password','pass','modernAuthentication','CloudProviderId','port','host','secure','service','authentication','Imap','Smtp','MailServerIn','Pause','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','show','params','MailServerOut','options','body','provider','custom','describe','find','Disposition','create','findOne','nolimit','MailAccountId','findAll','rows','removeDispositions','ids','addAnswer'];(function(_0x11c567,_0x423b3e){var _0x54c6b0=function(_0x1bc397){while(--_0x1bc397){_0x11c567['push'](_0x11c567['shift']());}};_0x54c6b0(++_0x423b3e);}(_0xc682,0x10b));var _0x2c68=function(_0x270997,_0x4ee8e4){_0x270997=_0x270997-0x0;var _0x5ba340=_0xc682[_0x270997];return _0x5ba340;};'use strict';var moment=require(_0x2c68('0x0'));var BPromise=require('bluebird');var util=require(_0x2c68('0x1'));var path=require(_0x2c68('0x2'));var _=require(_0x2c68('0x3'));var juice=require('juice');var Redis=require('ioredis');var qs=require(_0x2c68('0x4'));var logger=require('../../config/logger')(_0x2c68('0x5'));var config=require(_0x2c68('0x6'));var db=require('../../mysqldb')['db'];config[_0x2c68('0x7')]=_[_0x2c68('0x8')](config[_0x2c68('0x7')],{'host':_0x2c68('0x9'),'port':0x18eb});var socket=require(_0x2c68('0xa'))(new Redis(config['redis']));require(_0x2c68('0xb'))[_0x2c68('0xc')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x2c68('0xd')]({'port':0x232b});function respondWithRpcPromise(_0x2e3bd6,_0x116f08,_0x2f7f64,_0x4ace0a){return new BPromise(function(_0x59f177,_0x5b39a1){var _0x291588=_0x4ace0a||client;return _0x291588[_0x2c68('0xe')](_0x2e3bd6,_0x2f7f64)[_0x2c68('0xf')](function(_0x4dd240){logger['info'](_0x2c68('0x10'),_0x116f08,_0x2c68('0x11'));logger[_0x2c68('0x12')](_0x2c68('0x13'),_0x116f08,_0x2c68('0x11'),JSON[_0x2c68('0x14')](_0x4dd240));if(_0x4dd240[_0x2c68('0x15')]){if(_0x4dd240[_0x2c68('0x15')][_0x2c68('0x16')]===0x1f4){logger[_0x2c68('0x15')]('MailAccount,\x20%s,\x20%s',_0x116f08,_0x4dd240[_0x2c68('0x15')][_0x2c68('0x17')]);return _0x5b39a1(_0x4dd240['error'][_0x2c68('0x17')]);}logger[_0x2c68('0x15')](_0x2c68('0x10'),_0x116f08,_0x4dd240[_0x2c68('0x15')]['message']);return _0x59f177(_0x4dd240[_0x2c68('0x15')][_0x2c68('0x17')]);}else{logger[_0x2c68('0x18')]('MailAccount,\x20%s,\x20%s',_0x116f08,_0x2c68('0x11'));_0x59f177(_0x4dd240[_0x2c68('0x19')][_0x2c68('0x17')]);}})[_0x2c68('0x1a')](function(_0x4983e1){logger[_0x2c68('0x15')]('MailAccount,\x20%s,\x20%s',_0x116f08,_0x4983e1);_0x5b39a1(_0x4983e1);});});}function respondWithStatusCode(_0xa95284,_0x451c8a){_0x451c8a=_0x451c8a||0xcc;return function(_0x2e011a){if(_0x2e011a){return _0xa95284[_0x2c68('0x1b')](_0x451c8a);}return _0xa95284[_0x2c68('0x1c')](_0x451c8a)[_0x2c68('0x1d')]();};}function respondWithResult(_0x31de5b,_0x1ec8c2){_0x1ec8c2=_0x1ec8c2||0xc8;return function(_0x1656e6){if(_0x1656e6){return _0x31de5b[_0x2c68('0x1c')](_0x1ec8c2)[_0x2c68('0x1e')](_0x1656e6);}};}function respondWithFilteredResult(_0x1ffd5a,_0xacd0b5){return function(_0x1765d4){if(_0x1765d4){var _0x35b2b0=typeof _0xacd0b5['offset']===_0x2c68('0x1f')&&typeof _0xacd0b5[_0x2c68('0x20')]===_0x2c68('0x1f');var _0x200e6f=_0x1765d4['count'];var _0x44cdf4=_0x35b2b0?0x0:_0xacd0b5['offset'];var _0x14fd42=_0x35b2b0?_0x1765d4[_0x2c68('0x21')]:_0xacd0b5[_0x2c68('0x22')]+_0xacd0b5[_0x2c68('0x20')];var _0x95edd4;if(_0x14fd42>=_0x200e6f){_0x14fd42=_0x200e6f;_0x95edd4=0xc8;}else{_0x95edd4=0xce;}_0x1ffd5a['status'](_0x95edd4);return _0x1ffd5a[_0x2c68('0x23')](_0x2c68('0x24'),_0x44cdf4+'-'+_0x14fd42+'/'+_0x200e6f)['json'](_0x1765d4);}return null;};}function saveUpdates(_0x319906){return function(_0x10b158){if(_0x10b158){return _0x10b158[_0x2c68('0x25')](_0x319906)[_0x2c68('0xf')](function(_0x23c418){return _0x23c418;});}return null;};}function removeEntity(_0x39ac5b){return function(_0x42a3f3){if(_0x42a3f3){return _0x42a3f3[_0x2c68('0x26')]()['then'](function(){var _0x3c32a5=_0x42a3f3['get']({'plain':!![]});var _0x3a6a80=_0x2c68('0x27');return db[_0x2c68('0x28')][_0x2c68('0x26')]({'where':{'type':_0x3a6a80,'resourceId':_0x3c32a5['id']}})[_0x2c68('0xf')](function(){return _0x42a3f3;});})['then'](function(){_0x39ac5b[_0x2c68('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c2cfb){return function(_0x7d79c7){if(!_0x7d79c7){_0x2c2cfb[_0x2c68('0x1b')](0x194);}return _0x7d79c7;};}function handleError(_0x53adbb,_0x28560d){_0x28560d=_0x28560d||0x1f4;return function(_0x1b799c){logger['error'](_0x1b799c[_0x2c68('0x29')]);if(_0x1b799c[_0x2c68('0x2a')]){delete _0x1b799c[_0x2c68('0x2a')];}_0x53adbb[_0x2c68('0x1c')](_0x28560d)[_0x2c68('0x2b')](_0x1b799c);};}function getImapHost(_0x572342){switch(_0x572342){case _0x2c68('0x2c'):return'imap.gmail.com';case'yahoo':return _0x2c68('0x2d');case _0x2c68('0x2e'):return'imap-mail.outlook.com';case _0x2c68('0x2f'):return _0x2c68('0x30');}throw new Error(_0x2c68('0x31'),_0x572342);}function getSmtpHost(_0x3d1692){switch(_0x3d1692){case _0x2c68('0x2c'):return _0x2c68('0x32');case _0x2c68('0x33'):return _0x2c68('0x34');case'hotmail':return _0x2c68('0x35');case _0x2c68('0x2f'):return _0x2c68('0x36');}throw new Error(_0x2c68('0x31'),_0x3d1692);}function getAuthenticationOptions(_0x110b3f,_0x28403d){var _0x559d19={};var _0x1a9c80={};if(_0x110b3f){_0x559d19[_0x2c68('0x37')]=_0x1a9c80[_0x2c68('0x37')]=_0x28403d[_0x2c68('0x38')];_0x559d19[_0x2c68('0x39')]=_0x1a9c80[_0x2c68('0x3a')]=_0x28403d[_0x2c68('0x39')];if(_0x28403d[_0x2c68('0x3b')]){_0x559d19['modernAuthentication']=_0x1a9c80[_0x2c68('0x3b')]=!![];_0x559d19['CloudProviderId']=_0x1a9c80[_0x2c68('0x3c')]=_0x28403d[_0x2c68('0x3c')];_0x559d19[_0x2c68('0x39')]=_0x1a9c80['pass']=null;}else{_0x559d19[_0x2c68('0x3c')]=_0x1a9c80['CloudProviderId']=null;}_0x559d19['host']=getImapHost(_0x110b3f);_0x559d19[_0x2c68('0x3d')]=0x3e1;_0x1a9c80[_0x2c68('0x3e')]=getSmtpHost(_0x110b3f);_0x1a9c80[_0x2c68('0x3d')]=0x24b;_0x1a9c80[_0x2c68('0x3f')]=![];_0x559d19[_0x2c68('0x40')]=_0x1a9c80['service']=null;}else{if(_0x28403d[_0x2c68('0x41')]){_0x559d19[_0x2c68('0x37')]=_0x1a9c80[_0x2c68('0x37')]=_0x28403d[_0x2c68('0x38')];_0x559d19[_0x2c68('0x39')]=_0x1a9c80['pass']=_0x28403d[_0x2c68('0x39')];}else{_0x559d19['authentication']=_0x1a9c80[_0x2c68('0x41')]=![];_0x559d19[_0x2c68('0x37')]=_0x1a9c80[_0x2c68('0x37')]=null;_0x559d19['password']=_0x1a9c80[_0x2c68('0x3a')]=null;}_0x559d19[_0x2c68('0x3e')]=_0x28403d[_0x2c68('0x42')][_0x2c68('0x3e')];_0x559d19[_0x2c68('0x3d')]=_0x28403d[_0x2c68('0x42')][_0x2c68('0x3d')];_0x1a9c80[_0x2c68('0x3e')]=_0x28403d[_0x2c68('0x43')][_0x2c68('0x3e')];_0x1a9c80[_0x2c68('0x3d')]=_0x28403d['Smtp'][_0x2c68('0x3d')];}return{'Imap':_0x559d19,'Smtp':_0x1a9c80};}exports['index']=function(_0x1b6577,_0x224cf0){var _0x5f38b0={'include':[{'model':db[_0x2c68('0x44')],'as':_0x2c68('0x42')},{'model':db['MailServerOut'],'as':_0x2c68('0x43')},{'model':db[_0x2c68('0x45')],'as':_0x2c68('0x46')}]},_0x6cac27={},_0x264568={'count':0x0,'rows':[]};var _0x373c0b=_[_0x2c68('0x47')](db[_0x2c68('0x48')][_0x2c68('0x49')],function(_0x2096b1){return{'name':_0x2096b1[_0x2c68('0x4a')],'type':_0x2096b1[_0x2c68('0x4b')]['key']};});_0x6cac27['model']=_[_0x2c68('0x47')](_0x373c0b,_0x2c68('0x2a'));_0x6cac27[_0x2c68('0x4c')]=_[_0x2c68('0x4d')](_0x1b6577[_0x2c68('0x4c')]);_0x6cac27[_0x2c68('0x4e')]=_[_0x2c68('0x4f')](_0x6cac27[_0x2c68('0x50')],_0x6cac27[_0x2c68('0x4c')]);_0x5f38b0[_0x2c68('0x51')]=_[_0x2c68('0x4f')](_0x6cac27[_0x2c68('0x50')],qs[_0x2c68('0x52')](_0x1b6577[_0x2c68('0x4c')]['fields']));_0x5f38b0[_0x2c68('0x51')]=_0x5f38b0['attributes'][_0x2c68('0x53')]?_0x5f38b0[_0x2c68('0x51')]:_0x6cac27[_0x2c68('0x50')];if(!_0x1b6577[_0x2c68('0x4c')][_0x2c68('0x54')]('nolimit')){_0x5f38b0[_0x2c68('0x20')]=qs[_0x2c68('0x20')](_0x1b6577[_0x2c68('0x4c')][_0x2c68('0x20')]);_0x5f38b0[_0x2c68('0x22')]=qs[_0x2c68('0x22')](_0x1b6577[_0x2c68('0x4c')][_0x2c68('0x22')]);}_0x5f38b0[_0x2c68('0x55')]=qs[_0x2c68('0x56')](_0x1b6577[_0x2c68('0x4c')][_0x2c68('0x56')]);_0x5f38b0[_0x2c68('0x57')]=qs['filters'](_[_0x2c68('0x58')](_0x1b6577['query'],_0x6cac27[_0x2c68('0x4e')]),_0x373c0b);if(_0x1b6577[_0x2c68('0x4c')]['filter']){_0x5f38b0['where']=_[_0x2c68('0x59')](_0x5f38b0['where'],{'$or':_[_0x2c68('0x47')](_0x373c0b,function(_0x1f1671){if(_0x1f1671['type']!==_0x2c68('0x5a')){var _0x39e9b6={};_0x39e9b6[_0x1f1671[_0x2c68('0x2a')]]={'$like':'%'+_0x1b6577[_0x2c68('0x4c')][_0x2c68('0x5b')]+'%'};return _0x39e9b6;}})});}_0x5f38b0=_[_0x2c68('0x59')]({},_0x5f38b0,_0x1b6577['options']);var _0x796be2={'where':_0x5f38b0[_0x2c68('0x57')]};return db[_0x2c68('0x48')][_0x2c68('0x21')](_0x796be2)['then'](function(_0x1a077d){_0x264568[_0x2c68('0x21')]=_0x1a077d;if(_0x1b6577[_0x2c68('0x4c')][_0x2c68('0x5c')]){_0x5f38b0[_0x2c68('0x5d')]=[{'all':!![]}];}return db[_0x2c68('0x48')]['findAll'](_0x5f38b0);})[_0x2c68('0xf')](function(_0x304ca0){_0x264568['rows']=_0x304ca0;return _0x264568;})[_0x2c68('0xf')](respondWithFilteredResult(_0x224cf0,_0x5f38b0))['catch'](handleError(_0x224cf0,null));};exports[_0x2c68('0x5e')]=function(_0x3c6281,_0x4f89b3){var _0x1b4312={'raw':![],'where':{'id':_0x3c6281[_0x2c68('0x5f')]['id']},'include':[{'model':db[_0x2c68('0x44')],'as':'Imap'},{'model':db[_0x2c68('0x60')],'as':_0x2c68('0x43')},{'model':db[_0x2c68('0x45')],'as':_0x2c68('0x46')}]},_0x47a9b7={};_0x47a9b7['model']=_[_0x2c68('0x4d')](db['MailAccount']['rawAttributes']);_0x47a9b7['query']=_['keys'](_0x3c6281['query']);_0x47a9b7[_0x2c68('0x4e')]=_[_0x2c68('0x4f')](_0x47a9b7['model'],_0x47a9b7[_0x2c68('0x4c')]);_0x1b4312[_0x2c68('0x51')]=_[_0x2c68('0x4f')](_0x47a9b7['model'],qs[_0x2c68('0x52')](_0x3c6281['query'][_0x2c68('0x52')]));_0x1b4312['attributes']=_0x1b4312[_0x2c68('0x51')][_0x2c68('0x53')]?_0x1b4312['attributes']:_0x47a9b7[_0x2c68('0x50')];if(_0x3c6281[_0x2c68('0x4c')][_0x2c68('0x5c')]){_0x1b4312[_0x2c68('0x5d')]=[{'all':!![]}];}_0x1b4312=_[_0x2c68('0x59')]({},_0x1b4312,_0x3c6281[_0x2c68('0x61')]);return db['MailAccount']['find'](_0x1b4312)[_0x2c68('0xf')](handleEntityNotFound(_0x4f89b3,null))['then'](respondWithResult(_0x4f89b3,null))[_0x2c68('0x1a')](handleError(_0x4f89b3,null));};exports[_0x2c68('0x25')]=function(_0x584756,_0x3fc1ba){if(_0x584756[_0x2c68('0x62')]['id']){delete _0x584756['body']['id'];}var _0x4f4df4=_0x584756['body'][_0x2c68('0x63')]===_0x2c68('0x64')?null:_0x584756['body'][_0x2c68('0x63')];var _0x485547=_0x584756['body'][_0x2c68('0x42')]||{};var _0x5dc26d=_0x584756[_0x2c68('0x62')][_0x2c68('0x43')]||{};if(_0x4f4df4){_0x485547[_0x2c68('0x3e')]=getImapHost(_0x4f4df4);_0x485547['port']=0x3e1;_0x5dc26d['host']=getSmtpHost(_0x4f4df4);_0x5dc26d[_0x2c68('0x3d')]=0x24b;_0x5dc26d[_0x2c68('0x3f')]=![];}if(_0x5dc26d['modernAuthentication']){_0x5dc26d[_0x2c68('0x3f')]=![];}else{_0x5dc26d['CloudProviderId']=null;}if(!_0x485547[_0x2c68('0x3b')])_0x485547[_0x2c68('0x3c')]=null;_0x584756['body'][_0x2c68('0x42')]=_0x485547;_0x584756[_0x2c68('0x62')][_0x2c68('0x43')]=_0x5dc26d;return db[_0x2c68('0x48')]['find']({'where':{'id':_0x584756['params']['id']},'include':[{'model':db[_0x2c68('0x44')],'as':'Imap'},{'model':db['MailServerOut'],'as':_0x2c68('0x43')},{'model':db[_0x2c68('0x45')],'as':'mandatoryDispositionPause'}]})['then'](handleEntityNotFound(_0x3fc1ba,null))[_0x2c68('0xf')](function(_0x4d134d){if(!_0x4d134d)throw new Error('Mail\x20Account\x20not\x20found');if(_0x4d134d['service'])delete _0x584756[_0x2c68('0x62')][_0x2c68('0x42')];return _0x4d134d;})['then'](saveUpdates(_0x584756[_0x2c68('0x62')],null))['then'](function(_0x222bee){if(!_0x584756[_0x2c68('0x62')]['Imap'])return _0x222bee;return db['MailServerIn'][_0x2c68('0x25')](_0x584756[_0x2c68('0x62')]['Imap'],{'where':{'MailAccountId':_0x222bee['id']}})[_0x2c68('0xf')](function(){return _0x222bee;});})['then'](function(_0x561fbe){if(!_0x584756['body']['Smtp'])return _0x561fbe;return db[_0x2c68('0x60')][_0x2c68('0x25')](_0x584756['body'][_0x2c68('0x43')],{'where':{'MailAccountId':_0x561fbe['id']}})['then'](function(){return _0x561fbe;});})[_0x2c68('0xf')](respondWithResult(_0x3fc1ba,null))[_0x2c68('0x1a')](handleError(_0x3fc1ba,null));};exports[_0x2c68('0x65')]=function(_0x402efe,_0x178a21){return db[_0x2c68('0x48')][_0x2c68('0x65')]()['then'](respondWithResult(_0x178a21,null))[_0x2c68('0x1a')](handleError(_0x178a21,null));};exports['addDisposition']=function(_0x313d37,_0x277d0c){if(_0x313d37['body']['id']){delete _0x313d37[_0x2c68('0x62')]['id'];}return db[_0x2c68('0x48')][_0x2c68('0x66')]({'where':{'id':_0x313d37[_0x2c68('0x5f')]['id']}})[_0x2c68('0xf')](handleEntityNotFound(_0x277d0c,null))['then'](function(_0x1b0ec3){if(_0x1b0ec3){_0x313d37[_0x2c68('0x62')]['MailAccountId']=_0x1b0ec3['id'];return db[_0x2c68('0x67')][_0x2c68('0x68')](_0x313d37[_0x2c68('0x62')]);}})[_0x2c68('0xf')](respondWithResult(_0x277d0c,null))[_0x2c68('0x1a')](handleError(_0x277d0c,null));};exports['getDispositions']=function(_0x2a2801,_0x48a13a){var _0x167a56={'raw':![],'where':{}};var _0x51ef9f={};var _0x19a354={'count':0x0,'rows':[]};return db[_0x2c68('0x48')][_0x2c68('0x69')]({'where':{'id':_0x2a2801[_0x2c68('0x5f')]['id']}})[_0x2c68('0xf')](handleEntityNotFound(_0x48a13a,null))[_0x2c68('0xf')](function(_0x2894d0){if(_0x2894d0){_0x51ef9f['model']=_[_0x2c68('0x4d')](db['Disposition'][_0x2c68('0x49')]);_0x51ef9f['query']=_[_0x2c68('0x4d')](_0x2a2801[_0x2c68('0x4c')]);_0x51ef9f[_0x2c68('0x4e')]=_[_0x2c68('0x4f')](_0x51ef9f[_0x2c68('0x50')],_0x51ef9f[_0x2c68('0x4c')]);_0x167a56[_0x2c68('0x51')]=_[_0x2c68('0x4f')](_0x51ef9f[_0x2c68('0x50')],qs[_0x2c68('0x52')](_0x2a2801[_0x2c68('0x4c')][_0x2c68('0x52')]));_0x167a56[_0x2c68('0x51')]=_0x167a56['attributes'][_0x2c68('0x53')]?_0x167a56[_0x2c68('0x51')]:_0x51ef9f[_0x2c68('0x50')];if(!_0x2a2801['query'][_0x2c68('0x54')](_0x2c68('0x6a'))){_0x167a56['limit']=qs[_0x2c68('0x20')](_0x2a2801['query'][_0x2c68('0x20')]);_0x167a56['offset']=qs['offset'](_0x2a2801[_0x2c68('0x4c')]['offset']);}_0x167a56[_0x2c68('0x55')]=qs[_0x2c68('0x56')](_0x2a2801['query'][_0x2c68('0x56')]);_0x167a56['where']=qs[_0x2c68('0x4e')](_[_0x2c68('0x58')](_0x2a2801['query'],_0x51ef9f[_0x2c68('0x4e')]));_0x167a56[_0x2c68('0x57')][_0x2c68('0x6b')]=_0x2894d0['id'];if(_0x2a2801['query'][_0x2c68('0x5b')]){_0x167a56['where']=_[_0x2c68('0x59')](_0x167a56[_0x2c68('0x57')],{'$or':_[_0x2c68('0x47')](_0x167a56[_0x2c68('0x51')],function(_0x3b59e1){var _0x3b08d8={};_0x3b08d8[_0x3b59e1]={'$like':'%'+_0x2a2801[_0x2c68('0x4c')][_0x2c68('0x5b')]+'%'};return _0x3b08d8;})});}_0x167a56=_[_0x2c68('0x59')]({},_0x167a56,_0x2a2801[_0x2c68('0x61')]);return db['Disposition'][_0x2c68('0x21')]({'where':_0x167a56[_0x2c68('0x57')]})[_0x2c68('0xf')](function(_0x54976b){_0x19a354['count']=_0x54976b;if(_0x2a2801[_0x2c68('0x4c')][_0x2c68('0x5c')]){_0x167a56[_0x2c68('0x5d')]=[{'all':!![]}];}return db[_0x2c68('0x67')][_0x2c68('0x6c')](_0x167a56);})['then'](function(_0x3dd8ca){_0x19a354[_0x2c68('0x6d')]=_0x3dd8ca;return _0x19a354;});}})[_0x2c68('0xf')](respondWithFilteredResult(_0x48a13a,_0x167a56))[_0x2c68('0x1a')](handleError(_0x48a13a,null));};exports[_0x2c68('0x6e')]=function(_0x3979db,_0x37032d){return db['MailAccount'][_0x2c68('0x66')]({'where':{'id':_0x3979db[_0x2c68('0x5f')]['id']}})[_0x2c68('0xf')](handleEntityNotFound(_0x37032d,null))[_0x2c68('0xf')](function(_0x2673ce){if(_0x2673ce){return _0x2673ce[_0x2c68('0x6e')](_0x3979db[_0x2c68('0x4c')][_0x2c68('0x6f')]);}})[_0x2c68('0xf')](respondWithStatusCode(_0x37032d,null))['catch'](handleError(_0x37032d,null));};exports[_0x2c68('0x70')]=function(_0x56be13,_0x4438f9){if(_0x56be13['body']['id']){delete _0x56be13[_0x2c68('0x62')]['id'];}return db[_0x2c68('0x48')][_0x2c68('0x66')]({'where':{'id':_0x56be13[_0x2c68('0x5f')]['id']}})[_0x2c68('0xf')](handleEntityNotFound(_0x4438f9,null))[_0x2c68('0xf')](function(_0x4c9472){if(_0x4c9472){_0x56be13[_0x2c68('0x62')][_0x2c68('0x6b')]=_0x4c9472['id'];return db[_0x2c68('0x71')][_0x2c68('0x68')](_0x56be13[_0x2c68('0x62')]);}})[_0x2c68('0xf')](respondWithResult(_0x4438f9,null))[_0x2c68('0x1a')](handleError(_0x4438f9,null));};exports[_0x2c68('0x72')]=function(_0x4915d6,_0x5bf3e4){var _0x1fda71={'raw':![],'where':{}};var _0x2eea8c={};var _0x63228f={'count':0x0,'rows':[]};return db[_0x2c68('0x48')]['findOne']({'where':{'id':_0x4915d6[_0x2c68('0x5f')]['id']}})[_0x2c68('0xf')](handleEntityNotFound(_0x5bf3e4,null))[_0x2c68('0xf')](function(_0x1b3983){if(_0x1b3983){_0x2eea8c[_0x2c68('0x50')]=_[_0x2c68('0x4d')](db[_0x2c68('0x71')]['rawAttributes']);_0x2eea8c[_0x2c68('0x4c')]=_[_0x2c68('0x4d')](_0x4915d6['query']);_0x2eea8c[_0x2c68('0x4e')]=_['intersection'](_0x2eea8c[_0x2c68('0x50')],_0x2eea8c['query']);_0x1fda71[_0x2c68('0x51')]=_[_0x2c68('0x4f')](_0x2eea8c[_0x2c68('0x50')],qs[_0x2c68('0x52')](_0x4915d6[_0x2c68('0x4c')][_0x2c68('0x52')]));_0x1fda71['attributes']=_0x1fda71[_0x2c68('0x51')]['length']?_0x1fda71[_0x2c68('0x51')]:_0x2eea8c[_0x2c68('0x50')];if(!_0x4915d6[_0x2c68('0x4c')][_0x2c68('0x54')](_0x2c68('0x6a'))){_0x1fda71[_0x2c68('0x20')]=qs[_0x2c68('0x20')](_0x4915d6['query']['limit']);_0x1fda71[_0x2c68('0x22')]=qs[_0x2c68('0x22')](_0x4915d6[_0x2c68('0x4c')]['offset']);}_0x1fda71['order']=qs[_0x2c68('0x56')](_0x4915d6[_0x2c68('0x4c')]['sort']);_0x1fda71['where']=qs['filters'](_[_0x2c68('0x58')](_0x4915d6[_0x2c68('0x4c')],_0x2eea8c[_0x2c68('0x4e')]));_0x1fda71[_0x2c68('0x57')]['MailAccountId']=_0x1b3983['id'];if(_0x4915d6[_0x2c68('0x4c')]['filter']){_0x1fda71['where']=_['merge'](_0x1fda71['where'],{'$or':_[_0x2c68('0x47')](_0x1fda71[_0x2c68('0x51')],function(_0x2232ba){var _0xdeca58={};_0xdeca58[_0x2232ba]={'$like':'%'+_0x4915d6['query']['filter']+'%'};return _0xdeca58;})});}_0x1fda71=_[_0x2c68('0x59')]({},_0x1fda71,_0x4915d6[_0x2c68('0x61')]);return db['CannedAnswer'][_0x2c68('0x21')]({'where':_0x1fda71[_0x2c68('0x57')]})['then'](function(_0xa88ed0){_0x63228f[_0x2c68('0x21')]=_0xa88ed0;if(_0x4915d6[_0x2c68('0x4c')][_0x2c68('0x5c')]){_0x1fda71[_0x2c68('0x5d')]=[{'all':!![]}];}return db[_0x2c68('0x71')][_0x2c68('0x6c')](_0x1fda71);})[_0x2c68('0xf')](function(_0xec8b9){_0x63228f[_0x2c68('0x6d')]=_0xec8b9;return _0x63228f;});}})[_0x2c68('0xf')](respondWithFilteredResult(_0x5bf3e4,_0x1fda71))[_0x2c68('0x1a')](handleError(_0x5bf3e4,null));};exports[_0x2c68('0x73')]=function(_0x5bceec,_0xb8795){return db[_0x2c68('0x48')]['find']({'where':{'id':_0x5bceec[_0x2c68('0x5f')]['id']}})['then'](handleEntityNotFound(_0xb8795,null))[_0x2c68('0xf')](function(_0x41de16){if(_0x41de16){return _0x41de16[_0x2c68('0x73')](_0x5bceec[_0x2c68('0x4c')][_0x2c68('0x6f')]);}})[_0x2c68('0xf')](respondWithStatusCode(_0xb8795,null))[_0x2c68('0x1a')](handleError(_0xb8795,null));};exports[_0x2c68('0x68')]=function(_0x30870f,_0x148d58){var _0x228551={'name':_0x30870f[_0x2c68('0x62')][_0x2c68('0x2a')],'key':_0x30870f[_0x2c68('0x62')][_0x2c68('0x74')],'provider':_0x30870f[_0x2c68('0x62')][_0x2c68('0x63')]==='custom'?null:_0x30870f[_0x2c68('0x62')]['provider'],'email':_0x30870f['body'][_0x2c68('0x75')],'ListId':_0x30870f[_0x2c68('0x62')][_0x2c68('0x76')],'active':!_[_0x2c68('0x77')](_0x30870f[_0x2c68('0x62')][_0x2c68('0x78')])?_0x30870f['body'][_0x2c68('0x78')]:!![],'description':_0x30870f[_0x2c68('0x62')]['description']||null};var _0x3e25bb=getAuthenticationOptions(_0x228551[_0x2c68('0x63')],_0x30870f[_0x2c68('0x62')]);_0x228551['Imap']=_0x3e25bb[_0x2c68('0x42')];_0x228551[_0x2c68('0x43')]=_0x3e25bb['Smtp'];return db[_0x2c68('0x48')][_0x2c68('0x68')](_0x228551,{'include':[{'model':db[_0x2c68('0x60')],'as':'Smtp'},{'model':db[_0x2c68('0x44')],'as':_0x2c68('0x42')}]})[_0x2c68('0xf')](function(_0x5d7b03){var _0x23eab1=_0x30870f[_0x2c68('0x37')]['get']({'plain':!![]});if(!_0x23eab1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x23eab1[_0x2c68('0x79')]==='user'){var _0x2dfe2a=_0x5d7b03['get']({'plain':!![]});return db[_0x2c68('0x7a')][_0x2c68('0x66')]({'where':{'name':'MailAccounts','userProfileId':_0x23eab1[_0x2c68('0x7b')]},'raw':!![]})[_0x2c68('0xf')](function(_0x2ad1a9){if(_0x2ad1a9&&_0x2ad1a9['autoAssociation']===0x0){return db['UserProfileResource'][_0x2c68('0x68')]({'name':_0x2dfe2a[_0x2c68('0x2a')],'resourceId':_0x2dfe2a['id'],'type':_0x2ad1a9[_0x2c68('0x2a')],'sectionId':_0x2ad1a9['id']},{})[_0x2c68('0xf')](function(){return _0x5d7b03;});}else{return _0x5d7b03;}})[_0x2c68('0x1a')](function(_0xd60bcd){logger[_0x2c68('0x15')](_0x2c68('0x7c'),_0xd60bcd);throw _0xd60bcd;});}return _0x5d7b03;})[_0x2c68('0xf')](respondWithResult(_0x148d58,0xc9))[_0x2c68('0x1a')](handleError(_0x148d58,null));};exports['getImap']=function(_0x2a2258,_0x54b296){return db['MailAccount'][_0x2c68('0x69')]({'where':{'id':_0x2a2258['params']['id']}})[_0x2c68('0xf')](handleEntityNotFound(_0x54b296,null))['then'](function(_0x5455a3){if(_0x5455a3){return _0x5455a3[_0x2c68('0x7d')]();}return null;})[_0x2c68('0xf')](respondWithResult(_0x54b296,null))[_0x2c68('0x1a')](handleError(_0x54b296,null));};exports['addImap']=function(_0x341beb,_0x2225e9){if(_0x341beb[_0x2c68('0x62')]['id']){delete _0x341beb[_0x2c68('0x62')]['id'];}return db['MailAccount'][_0x2c68('0x66')]({'where':{'id':_0x341beb['params']['id']}})['then'](handleEntityNotFound(_0x2225e9,null))['then'](function(_0xdf8216){if(_0xdf8216){_0x341beb['body'][_0x2c68('0x6b')]=_0xdf8216['id'];return db[_0x2c68('0x44')][_0x2c68('0x68')](_0x341beb[_0x2c68('0x62')]);}})['then'](respondWithResult(_0x2225e9,null))['catch'](handleError(_0x2225e9,null));};exports[_0x2c68('0x7e')]=function(_0x57bd5a,_0x53771e){return db[_0x2c68('0x48')]['findOne']({'where':{'id':_0x57bd5a[_0x2c68('0x5f')]['id']}})['then'](handleEntityNotFound(_0x53771e,null))[_0x2c68('0xf')](function(_0xeee70e){if(_0xeee70e){return _0xeee70e[_0x2c68('0x7f')](null);}return null;})[_0x2c68('0xf')](respondWithStatusCode(_0x53771e,null))[_0x2c68('0x1a')](handleError(_0x53771e,null));};exports[_0x2c68('0x80')]=function(_0x20c583,_0xd34b27){return db['MailAccount']['findOne']({'where':{'id':_0x20c583[_0x2c68('0x5f')]['id']}})[_0x2c68('0xf')](handleEntityNotFound(_0xd34b27,null))[_0x2c68('0xf')](function(_0x282ba5){if(_0x282ba5){return _0x282ba5['getSmtp']();}return null;})['then'](respondWithResult(_0xd34b27,null))['catch'](handleError(_0xd34b27,null));};exports['addSmtp']=function(_0x53665a,_0x5eec86){if(_0x53665a[_0x2c68('0x62')]['id']){delete _0x53665a[_0x2c68('0x62')]['id'];}return db[_0x2c68('0x48')][_0x2c68('0x66')]({'where':{'id':_0x53665a[_0x2c68('0x5f')]['id']}})[_0x2c68('0xf')](handleEntityNotFound(_0x5eec86,null))['then'](function(_0x521139){if(_0x521139){_0x53665a[_0x2c68('0x62')][_0x2c68('0x6b')]=_0x521139['id'];return db[_0x2c68('0x60')][_0x2c68('0x68')](_0x53665a[_0x2c68('0x62')]);}})[_0x2c68('0xf')](respondWithResult(_0x5eec86,null))[_0x2c68('0x1a')](handleError(_0x5eec86,null));};exports[_0x2c68('0x81')]=function(_0x33a8d1,_0x2bf706){return db[_0x2c68('0x48')][_0x2c68('0x69')]({'where':{'id':_0x33a8d1[_0x2c68('0x5f')]['id']}})[_0x2c68('0xf')](handleEntityNotFound(_0x2bf706,null))[_0x2c68('0xf')](function(_0x167b34){if(_0x167b34){return _0x167b34['setSmtp'](null);}return null;})[_0x2c68('0xf')](respondWithStatusCode(_0x2bf706,null))[_0x2c68('0x1a')](handleError(_0x2bf706,null));};exports[_0x2c68('0x82')]=function(_0x399188,_0x3da068){return db[_0x2c68('0x83')]['find']({'where':{'id':_0x399188[_0x2c68('0x5f')]['id']}})[_0x2c68('0xf')](handleEntityNotFound(_0x3da068,null))['then'](function(_0x22f93d){if(_0x22f93d){return _0x22f93d[_0x2c68('0x82')](_0x399188[_0x2c68('0x62')]['ids'],_[_0x2c68('0x84')](_0x399188[_0x2c68('0x62')],['ids','id'])||{});}})[_0x2c68('0xf')](respondWithResult(_0x3da068,null))[_0x2c68('0x1a')](handleError(_0x3da068,null));};exports['getInteractions']=function(_0x5ada28,_0xaa4353){var _0x5177c6={'raw':![],'where':{}};var _0x1e638d={};var _0xee46ab={'count':0x0,'rows':[]};return db['MailAccount']['findOne']({'where':{'id':_0x5ada28[_0x2c68('0x5f')]['id']}})[_0x2c68('0xf')](handleEntityNotFound(_0xaa4353,null))[_0x2c68('0xf')](function(_0x355adf){if(_0x355adf){_0x1e638d[_0x2c68('0x50')]=_[_0x2c68('0x4d')](db[_0x2c68('0x83')][_0x2c68('0x49')]);_0x1e638d[_0x2c68('0x4c')]=_[_0x2c68('0x4d')](_0x5ada28[_0x2c68('0x4c')]);_0x1e638d[_0x2c68('0x4e')]=_[_0x2c68('0x4f')](_0x1e638d[_0x2c68('0x50')],_0x1e638d[_0x2c68('0x4c')]);_0x5177c6['attributes']=_[_0x2c68('0x4f')](_0x1e638d['model'],qs[_0x2c68('0x52')](_0x5ada28[_0x2c68('0x4c')][_0x2c68('0x52')]));_0x5177c6[_0x2c68('0x51')]=_0x5177c6['attributes'][_0x2c68('0x53')]?_0x5177c6['attributes']:_0x1e638d['model'];if(!_0x5ada28[_0x2c68('0x4c')][_0x2c68('0x54')](_0x2c68('0x6a'))){_0x5177c6[_0x2c68('0x20')]=qs[_0x2c68('0x20')](_0x5ada28[_0x2c68('0x4c')][_0x2c68('0x20')]);_0x5177c6[_0x2c68('0x22')]=qs[_0x2c68('0x22')](_0x5ada28[_0x2c68('0x4c')][_0x2c68('0x22')]);}_0x5177c6[_0x2c68('0x55')]=qs[_0x2c68('0x56')](_0x5ada28[_0x2c68('0x4c')]['sort']);_0x5177c6['where']=qs[_0x2c68('0x4e')](_[_0x2c68('0x58')](_0x5ada28[_0x2c68('0x4c')],_0x1e638d[_0x2c68('0x4e')]));_0x5177c6[_0x2c68('0x57')][_0x2c68('0x6b')]=_0x355adf['id'];if(_0x5ada28['query'][_0x2c68('0x5b')]){_0x5177c6[_0x2c68('0x57')]=_['merge'](_0x5177c6[_0x2c68('0x57')],{'$or':_[_0x2c68('0x47')](_0x5177c6[_0x2c68('0x51')],function(_0x33d125){var _0xd0dea3={};_0xd0dea3[_0x33d125]={'$like':'%'+_0x5ada28[_0x2c68('0x4c')]['filter']+'%'};return _0xd0dea3;})});}_0x5177c6=_['merge']({},_0x5177c6,_0x5ada28['options']);return db[_0x2c68('0x83')][_0x2c68('0x21')]({'where':_0x5177c6[_0x2c68('0x57')]})[_0x2c68('0xf')](function(_0x1c352a){_0xee46ab['count']=_0x1c352a;if(_0x5ada28[_0x2c68('0x4c')][_0x2c68('0x5c')]){_0x5177c6[_0x2c68('0x5d')]=[{'model':db[_0x2c68('0x85')],'as':'Contact','required':![]},{'model':db[_0x2c68('0x86')],'as':_0x2c68('0x87'),'attributes':[_0x2c68('0x2a'),_0x2c68('0x88'),'internal'],'required':![]},{'model':db[_0x2c68('0x89')],'as':'Tags','attributes':['id','name',_0x2c68('0x8a')],'where':_0x5ada28[_0x2c68('0x4c')][_0x2c68('0x8b')]?{'id':_0x5ada28[_0x2c68('0x4c')][_0x2c68('0x8b')]}:undefined,'required':_0x5ada28[_0x2c68('0x4c')][_0x2c68('0x8b')]?!![]:![]}];}return db[_0x2c68('0x83')]['findAll'](_0x5177c6);})[_0x2c68('0xf')](function(_0x1f7aad){_0xee46ab[_0x2c68('0x6d')]=_0x1f7aad;return _0xee46ab;});}})[_0x2c68('0xf')](respondWithFilteredResult(_0xaa4353,_0x5177c6))[_0x2c68('0x1a')](handleError(_0xaa4353,null));};exports[_0x2c68('0x8c')]=function addApplications(_0x40439a,_0x4d54ec){var _0x326ccd=_0x40439a[_0x2c68('0x5f')]['id'];var _0x457369=_0x40439a[_0x2c68('0x62')];var _0x413fd1=0xc8;var _0x2b7bf3=null;return db['sequelize'][_0x2c68('0x8d')]({'isolationLevel':db[_0x2c68('0x8e')]['Transaction']['ISOLATION_LEVELS'][_0x2c68('0x8f')]},function(_0x1553bf){return db[_0x2c68('0x48')][_0x2c68('0x69')]({'where':{'id':_0x326ccd},'transaction':_0x1553bf})['then'](function(_0x30d545){if(_0x30d545){return db[_0x2c68('0x90')][_0x2c68('0x26')]({'where':{'MailAccountId':_0x326ccd},'transaction':_0x1553bf})[_0x2c68('0xf')](function(){var _0x13e287=_['map'](_0x457369,function(_0x148c0f){_0x148c0f[_0x2c68('0x6b')]=_0x326ccd;return _0x148c0f;});return db[_0x2c68('0x90')][_0x2c68('0x91')](_0x13e287,{'transaction':_0x1553bf});});}else{_0x413fd1=0x194;_0x2b7bf3=[];}});})[_0x2c68('0xf')](function(){if(_0x413fd1!==0x194){return db['MailApplication']['findAndCountAll']({'where':{'MailAccountId':_0x326ccd},'order':'priority'})[_0x2c68('0xf')](function(_0x1f5a78){_0x2b7bf3=_0x1f5a78;});}})[_0x2c68('0x1a')](function(_0x1c6425){_0x413fd1=0x1f4;logger[_0x2c68('0x15')](_0x1c6425[_0x2c68('0x29')]);if(_0x1c6425[_0x2c68('0x2a')]){delete _0x1c6425['name'];}_0x2b7bf3=_0x1c6425;})[_0x2c68('0x92')](function(){if(_0x2b7bf3===null){_0x4d54ec[_0x2c68('0x1b')](_0x413fd1);}else{if(_0x413fd1===0x1f4){_0x4d54ec[_0x2c68('0x1c')](_0x413fd1)[_0x2c68('0x2b')](_0x2b7bf3);}else{_0x4d54ec[_0x2c68('0x1c')](_0x413fd1)[_0x2c68('0x1e')](_0x2b7bf3);}}});};exports[_0x2c68('0x93')]=function(_0x4cffa1,_0x1e2c4a){var _0x1bc824={};var _0x2cc388={};var _0x55f084;var _0x1c0b21;return db[_0x2c68('0x48')][_0x2c68('0x69')]({'where':{'id':_0x4cffa1['params']['id']}})[_0x2c68('0xf')](handleEntityNotFound(_0x1e2c4a,null))[_0x2c68('0xf')](function(_0x33c0ee){if(_0x33c0ee){_0x55f084=_0x33c0ee;_0x2cc388[_0x2c68('0x50')]=_['keys'](db[_0x2c68('0x90')][_0x2c68('0x49')]);_0x2cc388['query']=_[_0x2c68('0x4d')](_0x4cffa1[_0x2c68('0x4c')]);_0x2cc388[_0x2c68('0x4e')]=_[_0x2c68('0x4f')](_0x2cc388[_0x2c68('0x50')],_0x2cc388[_0x2c68('0x4c')]);_0x1bc824[_0x2c68('0x51')]=_[_0x2c68('0x4f')](_0x2cc388[_0x2c68('0x50')],qs[_0x2c68('0x52')](_0x4cffa1[_0x2c68('0x4c')][_0x2c68('0x52')]));_0x1bc824[_0x2c68('0x51')]=_0x1bc824[_0x2c68('0x51')]['length']?_0x1bc824[_0x2c68('0x51')]:_0x2cc388[_0x2c68('0x50')];_0x1bc824[_0x2c68('0x55')]=qs[_0x2c68('0x56')](_0x4cffa1[_0x2c68('0x4c')][_0x2c68('0x56')]);_0x1bc824['where']=qs[_0x2c68('0x4e')](_['pick'](_0x4cffa1[_0x2c68('0x4c')],_0x2cc388[_0x2c68('0x4e')]));if(_0x4cffa1[_0x2c68('0x4c')][_0x2c68('0x5b')]){_0x1bc824[_0x2c68('0x57')]=_[_0x2c68('0x59')](_0x1bc824[_0x2c68('0x57')],{'$or':_[_0x2c68('0x47')](_0x1bc824[_0x2c68('0x51')],function(_0x42221c){var _0x1d3532={};_0x1d3532[_0x42221c]={'$like':'%'+_0x4cffa1['query'][_0x2c68('0x5b')]+'%'};return _0x1d3532;})});}_0x1bc824=_[_0x2c68('0x59')]({},_0x1bc824,_0x4cffa1['options']);return _0x55f084[_0x2c68('0x93')](_0x1bc824);}})[_0x2c68('0xf')](function(_0xde6c17){if(_0xde6c17){_0x1c0b21=_0xde6c17[_0x2c68('0x53')];if(!_0x4cffa1[_0x2c68('0x4c')][_0x2c68('0x54')](_0x2c68('0x6a'))){_0x1bc824[_0x2c68('0x20')]=qs[_0x2c68('0x20')](_0x4cffa1['query']['limit']);_0x1bc824[_0x2c68('0x22')]=qs['offset'](_0x4cffa1[_0x2c68('0x4c')][_0x2c68('0x22')]);}return _0x55f084[_0x2c68('0x93')](_0x1bc824);}})['then'](function(_0x2d65a8){if(_0x2d65a8){return _0x2d65a8?{'count':_0x1c0b21,'rows':_0x2d65a8}:null;}})[_0x2c68('0xf')](respondWithResult(_0x1e2c4a,null))[_0x2c68('0x1a')](handleError(_0x1e2c4a,null));};exports[_0x2c68('0x94')]=function(_0x3193c0,_0x529ff2){var _0x1f7a53={'raw':!![],'where':{}};var _0x45ac5d={};var _0xc0b3ec={'count':0x0,'rows':[]};return db[_0x2c68('0x48')][_0x2c68('0x69')]({'where':{'id':_0x3193c0[_0x2c68('0x5f')]['id']}})[_0x2c68('0xf')](handleEntityNotFound(_0x529ff2,null))['then'](function(_0x2ff17f){if(_0x2ff17f){_0x45ac5d[_0x2c68('0x50')]=_[_0x2c68('0x4d')](db[_0x2c68('0x95')][_0x2c68('0x49')]);_0x45ac5d[_0x2c68('0x4c')]=_['keys'](_0x3193c0['query']);_0x45ac5d[_0x2c68('0x4e')]=_['intersection'](_0x45ac5d[_0x2c68('0x50')],_0x45ac5d[_0x2c68('0x4c')]);_0x1f7a53[_0x2c68('0x51')]=_[_0x2c68('0x4f')](_0x45ac5d[_0x2c68('0x50')],qs[_0x2c68('0x52')](_0x3193c0[_0x2c68('0x4c')][_0x2c68('0x52')]));_0x1f7a53[_0x2c68('0x51')]=_0x1f7a53[_0x2c68('0x51')]['length']?_0x1f7a53['attributes']:_0x45ac5d[_0x2c68('0x50')];if(!_0x3193c0[_0x2c68('0x4c')][_0x2c68('0x54')](_0x2c68('0x6a'))){_0x1f7a53[_0x2c68('0x20')]=qs['limit'](_0x3193c0[_0x2c68('0x4c')][_0x2c68('0x20')]);_0x1f7a53['offset']=qs[_0x2c68('0x22')](_0x3193c0[_0x2c68('0x4c')][_0x2c68('0x22')]);}_0x1f7a53[_0x2c68('0x55')]=qs[_0x2c68('0x56')](_0x3193c0[_0x2c68('0x4c')][_0x2c68('0x56')]);_0x1f7a53[_0x2c68('0x57')]=qs[_0x2c68('0x4e')](_[_0x2c68('0x58')](_0x3193c0[_0x2c68('0x4c')],_0x45ac5d[_0x2c68('0x4e')]));_0x1f7a53[_0x2c68('0x57')][_0x2c68('0x6b')]=_0x2ff17f['id'];if(_0x3193c0[_0x2c68('0x4c')]['filter']){_0x1f7a53[_0x2c68('0x57')]=_[_0x2c68('0x59')](_0x1f7a53[_0x2c68('0x57')],{'$or':_[_0x2c68('0x47')](_0x1f7a53[_0x2c68('0x51')],function(_0x481863){var _0x167afb={};_0x167afb[_0x481863]={'$like':'%'+_0x3193c0[_0x2c68('0x4c')]['filter']+'%'};return _0x167afb;})});}if(_0x3193c0['query'][_0x2c68('0x96')]){var _0x47feed=_0x3193c0[_0x2c68('0x4c')][_0x2c68('0x96')]['split'](',');var _0x14a40d={};_0x14a40d[_0x47feed[0x0]]={'$gte':moment(_0x47feed[0x1])[_0x2c68('0x97')]('YYYY-MM-DD\x20HH:mm:ss')};_0x1f7a53[_0x2c68('0x57')]=_['merge'](_0x1f7a53['where'],_0x14a40d);}_0x1f7a53=_[_0x2c68('0x59')]({},_0x1f7a53,_0x3193c0[_0x2c68('0x61')]);return db['MailMessage'][_0x2c68('0x21')]({'where':_0x1f7a53[_0x2c68('0x57')]})['then'](function(_0x5643c4){_0xc0b3ec[_0x2c68('0x21')]=_0x5643c4;if(_0x3193c0[_0x2c68('0x4c')][_0x2c68('0x5c')]){_0x1f7a53['include']=[{'all':!![]}];}return db['MailMessage'][_0x2c68('0x6c')](_0x1f7a53);})[_0x2c68('0xf')](function(_0x5393a6){if(_0x3193c0[_0x2c68('0x4c')][_0x2c68('0x98')]==='true'){for(var _0x5068f1=0x0;_0x5068f1<_0x5393a6[_0x2c68('0x53')];_0x5068f1++){_0x5393a6[_0x5068f1]['body']=juice(_0x5393a6[_0x5068f1][_0x2c68('0x62')]);}}_0xc0b3ec[_0x2c68('0x6d')]=_0x5393a6;return _0xc0b3ec;});}})[_0x2c68('0xf')](respondWithFilteredResult(_0x529ff2,_0x1f7a53))[_0x2c68('0x1a')](handleError(_0x529ff2,null));};exports['send']=function(_0x14a3a8,_0x50e5bb){var _0x4376ce,_0x4f1462={},_0x3e3155;if(_0x14a3a8['body']['to']){_0x3e3155=_0x14a3a8[_0x2c68('0x62')]['to'][_0x2c68('0x99')](',')[0x0];}return db['MailAccount'][_0x2c68('0x66')]({'where':{'id':_0x14a3a8[_0x2c68('0x5f')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db['CmContact'],'as':_0x2c68('0x9a'),'where':{'email':_0x3e3155},'limit':0x1,'order':[[_0x2c68('0x9b'),_0x2c68('0x9c')]]}]},{'model':db['MailServerOut'],'as':_0x2c68('0x43'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':_0x2c68('0x9d'),'raw':!![]}]}]})[_0x2c68('0xf')](handleEntityNotFound(_0x50e5bb,null))[_0x2c68('0xf')](function(_0x36d4d9){if(!_0x36d4d9)return;_0x4376ce=_0x36d4d9;if(!_0x36d4d9[_0x2c68('0x43')])throw new Error(_0x2c68('0x9e'));if(_[_0x2c68('0x77')](_0x14a3a8[_0x2c68('0x62')][_0x2c68('0x9f')])){_0x14a3a8[_0x2c68('0x62')][_0x2c68('0x9f')]=util[_0x2c68('0x97')](_0x2c68('0xa0'),_0x36d4d9[_0x2c68('0x2a')],_0x36d4d9[_0x2c68('0x75')]||_0x36d4d9['Smtp'][_0x2c68('0x37')]);}if(_0x14a3a8[_0x2c68('0x62')][_0x2c68('0xa1')]&&_0x14a3a8[_0x2c68('0x62')][_0x2c68('0xa1')][_0x2c68('0x53')]){for(var _0x408f1d=0x0;_0x408f1d<_0x14a3a8[_0x2c68('0x62')]['attachments'][_0x2c68('0x53')];_0x408f1d+=0x1){_0x14a3a8[_0x2c68('0x62')][_0x2c68('0xa1')][_0x408f1d]={'filename':_0x14a3a8[_0x2c68('0x62')][_0x2c68('0xa1')][_0x408f1d][_0x2c68('0x2a')],'path':path[_0x2c68('0xa2')](config[_0x2c68('0xa3')],_0x2c68('0xa4'),_0x14a3a8['body']['attachments'][_0x408f1d][_0x2c68('0xa5')])};}}var _0x1e377a=_0x36d4d9[_0x2c68('0xa6')]();return respondWithRpcPromise('SendMail',_0x2c68('0xa7'),{'account':_0x1e377a,'message':_0x14a3a8[_0x2c68('0x62')]});})[_0x2c68('0xf')](function(_0x57011d){if(!_0x57011d)return;_0x4f1462=_0x57011d;if(!_0x4376ce[_0x2c68('0xa8')])throw new Error(_0x2c68('0xa9'));if(_0x4376ce['List'][_0x2c68('0x9a')][_0x2c68('0x53')])return _0x4376ce['List'][_0x2c68('0x9a')][0x0];return db['CmContact'][_0x2c68('0x68')](_[_0x2c68('0x8')](_0x14a3a8[_0x2c68('0x62')],{'firstName':_0x14a3a8[_0x2c68('0x62')]['to'],'email':_0x14a3a8['body']['to'],'phone':_0x14a3a8['body']['to'],'ListId':_0x4376ce[_0x2c68('0x76')]}));})['then'](function(_0x2d5703){if(!_0x2d5703)return;var _0x4c343b={'UserId':_0x14a3a8[_0x2c68('0x37')]['id'],'ContactId':_0x2d5703['id'],'MailAccountId':_0x4376ce['id'],'inReplyTo':_0x4f1462[_0x2c68('0xaa')],'to':_0x14a3a8[_0x2c68('0x62')]['from'],'cc':_0x14a3a8[_0x2c68('0x62')]['cc'],'subject':_0x14a3a8[_0x2c68('0x62')][_0x2c68('0xab')],'attach':_0x14a3a8[_0x2c68('0x62')][_0x2c68('0xac')],'firstMsgDirection':_0x2c68('0xad'),'lastMsgAt':moment()[_0x2c68('0x97')](_0x2c68('0xae')),'lastMsgDirection':_0x2c68('0xad'),'Messages':[_['merge'](_0x14a3a8[_0x2c68('0x62')],{'messageId':_0x4f1462['messageId'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x4376ce['id'],'UserId':_0x14a3a8[_0x2c68('0x37')]['id'],'ContactId':_0x2d5703['id']})]};if(_0x14a3a8[_0x2c68('0x62')][_0x2c68('0xaf')]){_0x4c343b=_[_0x2c68('0x59')](_0x4c343b,_0x14a3a8['body'][_0x2c68('0xaf')]);}return db[_0x2c68('0x83')][_0x2c68('0x68')](_0x4c343b,{'include':[{'model':db[_0x2c68('0x95')],'as':_0x2c68('0xb0')}]});})['then'](respondWithResult(_0x50e5bb,null))[_0x2c68('0x1a')](handleError(_0x50e5bb,null));};exports[_0x2c68('0xb1')]=function(_0x13ce71,_0x4572e0){return db[_0x2c68('0x48')]['find']({'where':{'id':_0x13ce71[_0x2c68('0x5f')]['id']},'include':[{'model':db[_0x2c68('0x60')],'as':'Smtp','raw':!![],'include':[{'model':db[_0x2c68('0x9d')],'as':_0x2c68('0x9d'),'raw':!![]}]}]})[_0x2c68('0xf')](handleEntityNotFound(_0x4572e0,null))[_0x2c68('0xf')](function(_0x3b35ca){if(!_0x3b35ca[_0x2c68('0x43')])return;var _0x5a5a7c=_0x3b35ca[_0x2c68('0xa6')]();return respondWithRpcPromise(_0x2c68('0xb2'),'verifySmtp',{'account':_0x5a5a7c});})[_0x2c68('0xf')](respondWithResult(_0x4572e0,null))[_0x2c68('0x1a')](handleError(_0x4572e0,null));};exports['destroy']=function(_0x150048,_0x3d5dab){return db[_0x2c68('0x48')][_0x2c68('0x66')]({'where':{'id':_0x150048['params']['id']}})['then'](handleEntityNotFound(_0x3d5dab,null))[_0x2c68('0xf')](function(_0x2dc781){if(_0x2dc781&&_0x2dc781[_0x2c68('0x40')]){throw new db[(_0x2c68('0xb3'))][(_0x2c68('0xb4'))](_0x2c68('0xb5'));}return _0x2dc781;})[_0x2c68('0xf')](removeEntity(_0x3d5dab,null))['catch'](handleError(_0x3d5dab,null));};exports['addAgents']=function(_0x4716fa,_0x4e5ea2){return db['MailAccount'][_0x2c68('0x66')]({'where':{'id':_0x4716fa[_0x2c68('0x5f')]['id']}})[_0x2c68('0xf')](handleEntityNotFound(_0x4e5ea2,null))['then'](function(_0x4e03eb){if(_0x4e03eb){return _0x4e03eb[_0x2c68('0xb6')](_0x4716fa[_0x2c68('0x62')][_0x2c68('0x6f')],_[_0x2c68('0x84')](_0x4716fa['body'],[_0x2c68('0x6f'),'id'])||{})[_0x2c68('0xb7')](function(_0x1eaa55){for(var _0x3c5705=0x0;_0x3c5705<_0x4716fa[_0x2c68('0x62')][_0x2c68('0x6f')][_0x2c68('0x53')];_0x3c5705+=0x1){socket[_0x2c68('0xb8')](_0x2c68('0xb9'),{'UserId':Number(_0x4716fa[_0x2c68('0x62')][_0x2c68('0x6f')][_0x3c5705]),'MailAccountId':Number(_0x4716fa[_0x2c68('0x5f')]['id'])});}return _0x1eaa55;});}})[_0x2c68('0xf')](respondWithResult(_0x4e5ea2,null))[_0x2c68('0x1a')](handleError(_0x4e5ea2,null));};exports[_0x2c68('0xba')]=function(_0x333957,_0x5b2b46){return db['MailAccount'][_0x2c68('0x66')]({'where':{'id':_0x333957['params']['id']}})[_0x2c68('0xf')](handleEntityNotFound(_0x5b2b46,null))[_0x2c68('0xf')](function(_0x1fd37c){if(_0x1fd37c){return _0x1fd37c[_0x2c68('0xba')](_0x333957[_0x2c68('0x4c')]['ids'])['then'](function(){if(_[_0x2c68('0xbb')](_0x333957[_0x2c68('0x4c')][_0x2c68('0x6f')])){for(var _0x5de50b=0x0;_0x5de50b<_0x333957[_0x2c68('0x4c')][_0x2c68('0x6f')]['length'];_0x5de50b+=0x1){socket[_0x2c68('0xb8')](_0x2c68('0xbc'),{'UserId':Number(_0x333957[_0x2c68('0x4c')]['ids'][_0x5de50b]),'MailAccountId':Number(_0x333957[_0x2c68('0x5f')]['id'])});}}else{socket[_0x2c68('0xb8')](_0x2c68('0xbc'),{'UserId':Number(_0x333957[_0x2c68('0x4c')][_0x2c68('0x6f')]),'MailAccountId':Number(_0x333957[_0x2c68('0x5f')]['id'])});}});}})[_0x2c68('0xf')](respondWithStatusCode(_0x5b2b46,null))[_0x2c68('0x1a')](handleError(_0x5b2b46,null));};exports[_0x2c68('0xbd')]=function(_0x27cc1e,_0x161008){var _0x2dc182={};var _0x1fb893={};var _0x51d194;var _0x417153;return db[_0x2c68('0x48')][_0x2c68('0x69')]({'where':{'id':_0x27cc1e[_0x2c68('0x5f')]['id']}})[_0x2c68('0xf')](handleEntityNotFound(_0x161008,null))[_0x2c68('0xf')](function(_0xb4e040){if(_0xb4e040){_0x51d194=_0xb4e040;_0x1fb893[_0x2c68('0x50')]=_['keys'](db[_0x2c68('0x86')][_0x2c68('0x49')]);_0x1fb893[_0x2c68('0x4c')]=_[_0x2c68('0x4d')](_0x27cc1e[_0x2c68('0x4c')]);_0x1fb893['filters']=_['intersection'](_0x1fb893[_0x2c68('0x50')],_0x1fb893[_0x2c68('0x4c')]);_0x2dc182[_0x2c68('0x51')]=_[_0x2c68('0x4f')](_0x1fb893[_0x2c68('0x50')],qs['fields'](_0x27cc1e[_0x2c68('0x4c')][_0x2c68('0x52')]));_0x2dc182[_0x2c68('0x51')]=_0x2dc182['attributes'][_0x2c68('0x53')]?_0x2dc182[_0x2c68('0x51')]:_0x1fb893[_0x2c68('0x50')];_0x2dc182[_0x2c68('0x55')]=qs[_0x2c68('0x56')](_0x27cc1e[_0x2c68('0x4c')][_0x2c68('0x56')]);_0x2dc182['where']=qs['filters'](_[_0x2c68('0x58')](_0x27cc1e[_0x2c68('0x4c')],_0x1fb893[_0x2c68('0x4e')]));if(_0x27cc1e[_0x2c68('0x4c')][_0x2c68('0x5b')]){_0x2dc182[_0x2c68('0x57')]=_[_0x2c68('0x59')](_0x2dc182[_0x2c68('0x57')],{'$or':_[_0x2c68('0x47')](_0x2dc182[_0x2c68('0x51')],function(_0x58197a){var _0x3c3b80={};_0x3c3b80[_0x58197a]={'$like':'%'+_0x27cc1e[_0x2c68('0x4c')][_0x2c68('0x5b')]+'%'};return _0x3c3b80;})});}_0x2dc182=_[_0x2c68('0x59')]({},_0x2dc182,_0x27cc1e[_0x2c68('0x61')]);return _0x51d194[_0x2c68('0xbd')](_0x2dc182);}})[_0x2c68('0xf')](function(_0x5232ec){if(_0x5232ec){_0x417153=_0x5232ec['length'];if(!_0x27cc1e['query'][_0x2c68('0x54')](_0x2c68('0x6a'))){_0x2dc182[_0x2c68('0x20')]=qs[_0x2c68('0x20')](_0x27cc1e[_0x2c68('0x4c')][_0x2c68('0x20')]);_0x2dc182[_0x2c68('0x22')]=qs[_0x2c68('0x22')](_0x27cc1e['query'][_0x2c68('0x22')]);}return _0x51d194[_0x2c68('0xbd')](_0x2dc182);}})['then'](function(_0x45b58d){if(_0x45b58d){return _0x45b58d?{'count':_0x417153,'rows':_0x45b58d}:null;}})[_0x2c68('0xf')](respondWithResult(_0x161008,null))[_0x2c68('0x1a')](handleError(_0x161008,null));};
\ No newline at end of file
index 00b67e6..21329c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ea9=['update','emit','hasOwnProperty','hook','../../mysqldb','MailAccount','setMaxListeners','save'];(function(_0x18c977,_0x5aaec9){var _0x38a276=function(_0x3228e1){while(--_0x3228e1){_0x18c977['push'](_0x18c977['shift']());}};_0x38a276(++_0x5aaec9);}(_0x7ea9,0xec));var _0x97ea=function(_0x2a3d21,_0x2b8f31){_0x2a3d21=_0x2a3d21-0x0;var _0x4ef3b1=_0x7ea9[_0x2a3d21];return _0x4ef3b1;};'use strict';var EventEmitter=require('events');var MailAccount=require(_0x97ea('0x0'))['db'][_0x97ea('0x1')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x97ea('0x2')](0x0);var events={'afterCreate':_0x97ea('0x3'),'afterUpdate':_0x97ea('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3be4e3){return function(_0xd02076,_0x2c80e6,_0x54a19f){MailAccountEvents[_0x97ea('0x5')](_0x3be4e3+':'+_0xd02076['id'],_0xd02076);MailAccountEvents[_0x97ea('0x5')](_0x3be4e3,_0xd02076);_0x54a19f(null);};}for(var e in events){if(events[_0x97ea('0x6')](e)){var event=events[e];MailAccount[_0x97ea('0x7')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
+var _0x4b66=['save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','MailAccount','setMaxListeners'];(function(_0xeb4c8b,_0x1dc497){var _0x90b0d0=function(_0x332e32){while(--_0x332e32){_0xeb4c8b['push'](_0xeb4c8b['shift']());}};_0x90b0d0(++_0x1dc497);}(_0x4b66,0x1dc));var _0x64b6=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4b66[_0x321bb2];return _0x9c12ed;};'use strict';var EventEmitter=require(_0x64b6('0x0'));var MailAccount=require(_0x64b6('0x1'))['db'][_0x64b6('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x64b6('0x3')](0x0);var events={'afterCreate':_0x64b6('0x4'),'afterUpdate':_0x64b6('0x5'),'afterDestroy':_0x64b6('0x6')};function emitEvent(_0x8d82d1){return function(_0xa00e7f,_0xf885f2,_0x4780bd){MailAccountEvents[_0x64b6('0x7')](_0x8d82d1+':'+_0xa00e7f['id'],_0xa00e7f);MailAccountEvents[_0x64b6('0x7')](_0x8d82d1,_0xa00e7f);_0x4780bd(null);};}for(var e in events){if(events[_0x64b6('0x8')](e)){var event=events[e];MailAccount[_0x64b6('0x9')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
index 5bcf975..1271c8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5593=['CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found','OAuth2','user','data5','./mailAccount.attributes','exports','define','MailAccount','mail_accounts','provider','custom','service','host','Smtp','secure','authentication','modernAuthentication'];(function(_0x38d23c,_0x536447){var _0x2b6d7d=function(_0x2a6543){while(--_0x2a6543){_0x38d23c['push'](_0x38d23c['shift']());}};_0x2b6d7d(++_0x536447);}(_0x5593,0x149));var _0x3559=function(_0xb9c2da,_0x5e481a){_0xb9c2da=_0xb9c2da-0x0;var _0x195d1d=_0x5593[_0xb9c2da];return _0x195d1d;};'use strict';var attributes=require(_0x3559('0x0'));module[_0x3559('0x1')]=function(_0x37f26e){return _0x37f26e[_0x3559('0x2')](_0x3559('0x3'),attributes,{'tableName':_0x3559('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x168f4a=this;var _0x7d2535={'id':_0x168f4a['id'],'tls':{'rejectUnauthorized':![]}};if(_0x168f4a[_0x3559('0x5')]!==_0x3559('0x6')){_0x7d2535[_0x3559('0x7')]=_0x168f4a[_0x3559('0x5')];}else{_0x7d2535[_0x3559('0x8')]=_0x168f4a['Smtp'][_0x3559('0x8')];_0x7d2535['port']=_0x168f4a[_0x3559('0x9')]['port'];_0x7d2535[_0x3559('0xa')]=_0x168f4a[_0x3559('0x9')][_0x3559('0xa')];}if(_0x168f4a[_0x3559('0x9')][_0x3559('0xb')]){if(_0x168f4a[_0x3559('0x9')][_0x3559('0xc')]){if(!_0x168f4a[_0x3559('0x9')][_0x3559('0xd')])throw new Error(_0x3559('0xe'));_0x7d2535['auth']={'type':_0x3559('0xf'),'user':_0x168f4a[_0x3559('0x9')][_0x3559('0x10')],'accessToken':_0x168f4a['Smtp'][_0x3559('0xd')][_0x3559('0x11')]};}else{_0x7d2535['auth']={'user':_0x168f4a[_0x3559('0x9')][_0x3559('0x10')],'pass':_0x168f4a[_0x3559('0x9')]['pass']};}}return _0x7d2535;}}});};
\ No newline at end of file
+var _0x11ff=['define','MailAccount','mail_accounts','provider','custom','service','host','Smtp','port','secure','authentication','modernAuthentication','CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found','auth','user','data5','pass','./mailAccount.attributes','exports'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0x11ff,0x152));var _0xf11f=function(_0x3aaa2d,_0x34d0d7){_0x3aaa2d=_0x3aaa2d-0x0;var _0x5edc24=_0x11ff[_0x3aaa2d];return _0x5edc24;};'use strict';var attributes=require(_0xf11f('0x0'));module[_0xf11f('0x1')]=function(_0x27307e){return _0x27307e[_0xf11f('0x2')](_0xf11f('0x3'),attributes,{'tableName':_0xf11f('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x38522d=this;var _0x5edff0={'id':_0x38522d['id'],'tls':{'rejectUnauthorized':![]}};if(_0x38522d[_0xf11f('0x5')]!==_0xf11f('0x6')){_0x5edff0[_0xf11f('0x7')]=_0x38522d['provider'];}else{_0x5edff0[_0xf11f('0x8')]=_0x38522d[_0xf11f('0x9')][_0xf11f('0x8')];_0x5edff0['port']=_0x38522d['Smtp'][_0xf11f('0xa')];_0x5edff0['secure']=_0x38522d[_0xf11f('0x9')][_0xf11f('0xb')];}if(_0x38522d[_0xf11f('0x9')][_0xf11f('0xc')]){if(_0x38522d[_0xf11f('0x9')][_0xf11f('0xd')]){if(!_0x38522d[_0xf11f('0x9')][_0xf11f('0xe')])throw new Error(_0xf11f('0xf'));_0x5edff0[_0xf11f('0x10')]={'type':'OAuth2','user':_0x38522d[_0xf11f('0x9')][_0xf11f('0x11')],'accessToken':_0x38522d[_0xf11f('0x9')][_0xf11f('0xe')][_0xf11f('0x12')]};}else{_0x5edff0[_0xf11f('0x10')]={'user':_0x38522d['Smtp'][_0xf11f('0x11')],'pass':_0x38522d[_0xf11f('0x9')][_0xf11f('0x13')]};}}return _0x5edff0;}}});};
\ No newline at end of file
index 717dbb5..d220bf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1115=['UserId','unshift','agent','name','waitForTheAssignedAgent','queueId','MailQueue','queue','waitForTheAssignedQueue','Start','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetMailAccount','MailAccount','findAll','options','raw','where','attributes','limit','include','map','model','ShowMailAccount','find','smtp','setDataValue','smtpOptions','NotifyMailAccount','body','mail','difference','keys','CmContact','createdAt','updatedAt','CompanyId','ListId','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','account','List','Contacts','Applications','CloudProvider','get','omit','getSmtpOptions','applications','list','orderBy','priority','asc','autoclose','push','length','close','*,*,*,*','from','List\x20not\x20found','contact','messageId','generate','subject','attach','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','inReplyTo','Contact\x20not\x20found','spread','update','format','interaction','originTo','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachments'];(function(_0x23a92b,_0x423306){var _0x2bbdc8=function(_0x4e2403){while(--_0x4e2403){_0x23a92b['push'](_0x23a92b['shift']());}};_0x2bbdc8(++_0x423306);}(_0x1115,0x1b6));var _0x5111=function(_0x2b0ecd,_0x48178c){_0x2b0ecd=_0x2b0ecd-0x0;var _0x3e805f=_0x1115[_0x2b0ecd];return _0x3e805f;};'use strict';var _=require('lodash');var moment=require(_0x5111('0x0'));var BPromise=require(_0x5111('0x1'));var rs=require(_0x5111('0x2'));var Redis=require(_0x5111('0x3'));var db=require(_0x5111('0x4'))['db'];var logger=require(_0x5111('0x5'))(_0x5111('0x6'));var config=require(_0x5111('0x7'));var jayson=require(_0x5111('0x8'));var client=jayson['client']['http']({'port':0x232c});config[_0x5111('0x9')]=_[_0x5111('0xa')](config['redis'],{'host':_0x5111('0xb'),'port':0x18eb});var socket=require(_0x5111('0xc'))(new Redis(config['redis']));require(_0x5111('0xd'))['register'](socket);function respondWithRpcPromise(_0x2d8e0a,_0x3bbc8c,_0x4ecb50){return new BPromise(function(_0x5e12a7,_0x347d87){return client['request'](_0x2d8e0a,_0x4ecb50)[_0x5111('0xe')](function(_0x4f0b34){logger[_0x5111('0xf')](_0x5111('0x10'),_0x3bbc8c,_0x5111('0x11'));logger[_0x5111('0x12')](_0x5111('0x13'),_0x3bbc8c,_0x5111('0x11'),JSON[_0x5111('0x14')](_0x4f0b34));if(_0x4f0b34[_0x5111('0x15')]){if(_0x4f0b34[_0x5111('0x15')][_0x5111('0x16')]===0x1f4){logger[_0x5111('0x15')](_0x5111('0x10'),_0x3bbc8c,_0x4f0b34[_0x5111('0x15')][_0x5111('0x17')]);return _0x347d87(_0x4f0b34[_0x5111('0x15')][_0x5111('0x17')]);}logger[_0x5111('0x15')](_0x5111('0x10'),_0x3bbc8c,_0x4f0b34['error'][_0x5111('0x17')]);return _0x5e12a7(_0x4f0b34['error']['message']);}else{logger[_0x5111('0xf')](_0x5111('0x10'),_0x3bbc8c,_0x5111('0x11'));_0x5e12a7(_0x4f0b34['result'][_0x5111('0x17')]);}})[_0x5111('0x18')](function(_0x52c614){logger[_0x5111('0x15')](_0x5111('0x10'),_0x3bbc8c,_0x52c614);_0x347d87(_0x52c614);});});}exports[_0x5111('0x19')]=function(_0x1b3b45){var _0x5e8f1d=this;return new Promise(function(_0x52d236,_0x2a1840){return db[_0x5111('0x1a')][_0x5111('0x1b')]({'raw':_0x1b3b45[_0x5111('0x1c')]?_0x1b3b45[_0x5111('0x1c')][_0x5111('0x1d')]===undefined?!![]:![]:!![],'where':_0x1b3b45[_0x5111('0x1c')]?_0x1b3b45[_0x5111('0x1c')][_0x5111('0x1e')]||null:null,'attributes':_0x1b3b45['options']?_0x1b3b45[_0x5111('0x1c')][_0x5111('0x1f')]||null:null,'limit':_0x1b3b45[_0x5111('0x1c')]?_0x1b3b45['options'][_0x5111('0x20')]||null:null,'include':_0x1b3b45[_0x5111('0x1c')]?_0x1b3b45[_0x5111('0x1c')][_0x5111('0x21')]?_[_0x5111('0x22')](_0x1b3b45[_0x5111('0x1c')][_0x5111('0x21')],function(_0x316b39){return{'model':db[_0x316b39[_0x5111('0x23')]],'as':_0x316b39['as'],'attributes':_0x316b39[_0x5111('0x1f')],'include':_0x316b39['include']?_[_0x5111('0x22')](_0x316b39[_0x5111('0x21')],function(_0x151b67){return{'model':db[_0x151b67[_0x5111('0x23')]],'as':_0x151b67['as'],'attributes':_0x151b67[_0x5111('0x1f')],'include':_0x151b67[_0x5111('0x21')]?_[_0x5111('0x22')](_0x151b67['include'],function(_0x1ce17f){return{'model':db[_0x1ce17f[_0x5111('0x23')]],'as':_0x1ce17f['as'],'attributes':_0x1ce17f[_0x5111('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xdf9031){logger[_0x5111('0xf')](_0x5111('0x19'),_0x1b3b45);logger['debug']('GetMailAccount',_0x1b3b45,JSON[_0x5111('0x14')](_0xdf9031));_0x52d236(_0xdf9031);})['catch'](function(_0xbacf9e){logger['error'](_0x5111('0x19'),_0xbacf9e['message'],_0x1b3b45);_0x2a1840(_0x5e8f1d['error'](0x1f4,_0xbacf9e['message']));});});};exports[_0x5111('0x24')]=function(_0x3fb9a5){var _0xe0839e=this;return new Promise(function(_0x3763f4,_0x13fafe){return db[_0x5111('0x1a')][_0x5111('0x25')]({'raw':_0x3fb9a5['options']?_0x3fb9a5[_0x5111('0x1c')][_0x5111('0x1d')]===undefined?!![]:![]:!![],'where':_0x3fb9a5[_0x5111('0x1c')]?_0x3fb9a5[_0x5111('0x1c')]['where']||null:null,'attributes':_0x3fb9a5['options']?_0x3fb9a5[_0x5111('0x1c')][_0x5111('0x1f')]||null:null,'include':_0x3fb9a5[_0x5111('0x1c')]?_0x3fb9a5[_0x5111('0x1c')][_0x5111('0x21')]?_[_0x5111('0x22')](_0x3fb9a5[_0x5111('0x1c')][_0x5111('0x21')],function(_0x4d4bf5){return{'model':db[_0x4d4bf5[_0x5111('0x23')]],'as':_0x4d4bf5['as'],'attributes':_0x4d4bf5[_0x5111('0x1f')],'include':_0x4d4bf5[_0x5111('0x21')]?_['map'](_0x4d4bf5[_0x5111('0x21')],function(_0xdc5c58){return{'model':db[_0xdc5c58[_0x5111('0x23')]],'as':_0xdc5c58['as'],'attributes':_0xdc5c58['attributes'],'include':_0xdc5c58['include']?_['map'](_0xdc5c58[_0x5111('0x21')],function(_0x187cab){return{'model':db[_0x187cab[_0x5111('0x23')]],'as':_0x187cab['as'],'attributes':_0x187cab[_0x5111('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x5111('0xe')](function(_0x570126){if(_0x3fb9a5[_0x5111('0x1c')][_0x5111('0x26')]===!![])_0x570126[_0x5111('0x27')](_0x5111('0x28'),_0x570126['getSmtpOptions']());logger[_0x5111('0xf')](_0x5111('0x24'),_0x3fb9a5);logger[_0x5111('0x12')](_0x5111('0x24'),_0x3fb9a5,JSON[_0x5111('0x14')](_0x570126));_0x3763f4(_0x570126);})[_0x5111('0x18')](function(_0x295d5e){logger[_0x5111('0x15')](_0x5111('0x24'),_0x295d5e[_0x5111('0x17')],_0x3fb9a5);_0x13fafe(_0xe0839e[_0x5111('0x15')](0x1f4,_0x295d5e[_0x5111('0x17')]));});});};exports[_0x5111('0x29')]=function(_0x4e0bc4){var _0x352de9=this;return new Promise(function(_0xf00f9,_0x54d2f1){var _0x2818ec={'body':_0x4e0bc4[_0x5111('0x2a')],'channel':_0x5111('0x2b')};var _0x41005f=_[_0x5111('0x2c')](_[_0x5111('0x2d')](db[_0x5111('0x2e')]['rawAttributes']),[_0x5111('0x2f'),_0x5111('0x30'),_0x5111('0x31'),_0x5111('0x32')]);var _0x96893c=![];if(_0x4e0bc4['body']['id']){delete _0x4e0bc4['body']['id'];}if(_[_0x5111('0x33')](_0x4e0bc4[_0x5111('0x2a')]['from'])){return _0x54d2f1(_0x352de9[_0x5111('0x15')](0x1f4,_0x5111('0x34')));}if(_[_0x5111('0x33')](_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x2a')])||_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x2a')]===''){return _0x54d2f1(_0x352de9[_0x5111('0x15')](0x1f4,_0x5111('0x35')));}if(_[_0x5111('0x33')](_0x4e0bc4['body']['mapKey'])){return _0x54d2f1(_0x352de9[_0x5111('0x15')](0x1f4,_0x5111('0x36')+_0x41005f));}if(!_[_0x5111('0x37')](_0x41005f,_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x38')])){return _0x54d2f1(_0x352de9[_0x5111('0x15')](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x41005f));}var _0x1b9a74={};_0x1b9a74[_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x38')]]=_0x4e0bc4[_0x5111('0x2a')]['from'];return db[_0x5111('0x1a')][_0x5111('0x25')]({'where':{'id':_0x4e0bc4[_0x5111('0x39')]['id']},'include':[{'model':db['CmList'],'as':_0x5111('0x3a'),'include':[{'model':db[_0x5111('0x2e')],'as':_0x5111('0x3b'),'where':_0x1b9a74,'limit':0x1,'order':[[_0x5111('0x30'),'DESC']]}]},{'model':db['MailApplication'],'as':_0x5111('0x3c')},{'model':db['MailServerOut'],'as':'Smtp','include':[{'model':db[_0x5111('0x3d')],'as':_0x5111('0x3d')}]}]})['then'](function(_0x296f87){if(_0x296f87&&_0x296f87[_0x5111('0x3a')]){var _0x1676f9=_0x296f87[_0x5111('0x3e')]({'plain':!![]});_0x2818ec[_0x5111('0x39')]=_[_0x5111('0x3f')](_0x1676f9,[_0x5111('0x3c'),_0x5111('0x3a')]);_0x2818ec[_0x5111('0x39')][_0x5111('0x28')]=_0x296f87[_0x5111('0x40')]();_0x2818ec[_0x5111('0x41')]=_0x1676f9['Applications'];_0x2818ec[_0x5111('0x42')]=_0x1676f9[_0x5111('0x3a')];_0x2818ec[_0x5111('0x41')]=_[_0x5111('0x43')](_0x2818ec[_0x5111('0x41')],[_0x5111('0x44')],[_0x5111('0x45')]);if(_0x2818ec['account']&&_0x2818ec['account'][_0x5111('0x46')]){_0x2818ec['applications'][_0x5111('0x47')]({'id':0x0,'priority':_0x2818ec[_0x5111('0x41')][_0x5111('0x48')]+0x1,'app':_0x5111('0x49'),'appdata':_0x5111('0x46'),'interval':_0x5111('0x4a')});}if(_0x2818ec[_0x5111('0x39')]['Applications']){delete _0x2818ec[_0x5111('0x39')][_0x5111('0x3c')];}if(_0x2818ec['account'][_0x5111('0x3a')]){delete _0x2818ec[_0x5111('0x39')]['List'];}if(_0x1676f9[_0x5111('0x3a')]['Contacts']['length']){return _0x1676f9['List'][_0x5111('0x3b')][0x0];}var _0x30fb6d=_[_0x5111('0xa')](_0x4e0bc4[_0x5111('0x2a')],{'firstName':_0x4e0bc4['body'][_0x5111('0x4b')],'ListId':_0x1676f9[_0x5111('0x32')]});_0x30fb6d[_0x4e0bc4[_0x5111('0x2a')]['mapKey']]=_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x4b')];return db[_0x5111('0x2e')]['create'](_0x30fb6d);}else{throw new Error(_0x5111('0x4c'));}})['then'](function(_0x3bf42d){_0x2818ec[_0x5111('0x4d')]=_0x3bf42d;if(_0x3bf42d){if(!_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')]['messageId']){_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x4e')]=rs[_0x5111('0x4f')]()+'\x20'+_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x4b')];}var _0x54c415={'ContactId':_0x3bf42d['id'],'MailAccountId':_0x4e0bc4[_0x5111('0x39')]['id'],'inReplyTo':_0x4e0bc4['body'][_0x5111('0x17')][_0x5111('0x4e')],'to':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x4b')],'cc':_0x4e0bc4[_0x5111('0x2a')]['message']['cc'],'subject':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x50')],'attach':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x51')],'lastMsgAt':moment()['format'](_0x5111('0x52')),'lastMsgDirection':'in'};return db[_0x5111('0x53')][_0x5111('0x25')]({'where':{'closed':![],'MailAccountId':_0x4e0bc4[_0x5111('0x39')]['id']},'include':[{'model':db[_0x5111('0x54')],'as':'Messages','attributes':[_0x5111('0x4e')],'where':{'messageId':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x55')]}}]})[_0x5111('0xe')](function(_0x39de80){if(_0x39de80){return[_0x39de80,![]];}return db[_0x5111('0x53')]['create'](_0x54c415)['then'](function(_0x4eaed9){return[_0x4eaed9,!![]];});});}else{throw new Error(_0x5111('0x56'));}})[_0x5111('0x57')](function(_0x1674d6,_0x3fb713){if(_0x1674d6){_0x96893c=_0x3fb713;if(!_0x3fb713){return _0x1674d6[_0x5111('0x58')]({'inReplyTo':_0x4e0bc4['body'][_0x5111('0x17')][_0x5111('0x4e')],'to':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x4b')],'cc':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')]['cc'],'subject':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x50')],'attach':_0x1674d6['attach']?_0x1674d6[_0x5111('0x51')]:_0x4e0bc4[_0x5111('0x2a')]['message'][_0x5111('0x51')],'substatus':null,'substatusAt':moment()[_0x5111('0x59')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0x5111('0x59')](_0x5111('0x52')),'lastMsgDirection':'in'});}else{return _0x1674d6;}}})[_0x5111('0xe')](function(_0x3a7cc9){_0x2818ec[_0x5111('0x5a')]=_0x3a7cc9[_0x5111('0x3e')]({'plain':!![]});_0x2818ec[_0x5111('0x5a')]['created']=_0x96893c;return db[_0x5111('0x54')]['create']({'body':_0x4e0bc4['body'][_0x5111('0x2a')],'MailAccountId':_0x4e0bc4['account']['id'],'MailInteractionId':_0x3a7cc9['id'],'direction':'in','ContactId':_0x2818ec[_0x5111('0x4d')]['id'],'messageId':_0x4e0bc4['body'][_0x5111('0x17')][_0x5111('0x4e')],'from':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x4b')],'to':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')]['to'],'cc':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')]['cc'],'subject':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x50')],'attach':_0x4e0bc4[_0x5111('0x2a')]['message'][_0x5111('0x51')],'Attachments':_0x4e0bc4['body'][_0x5111('0x17')]['attachments'],'originTo':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x5b')],'originCc':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')]['originCc'],'bcc':_0x4e0bc4['body'][_0x5111('0x17')]['bcc'],'ChatWebsiteId':_0x4e0bc4['body'][_0x5111('0x17')][_0x5111('0x5c')]||null,'originChannel':_0x4e0bc4[_0x5111('0x2a')][_0x5111('0x17')][_0x5111('0x5d')]||_0x5111('0x5e'),'ChatOfflineMessageId':_0x4e0bc4['body'][_0x5111('0x17')][_0x5111('0x5f')]||null},{'include':[{'model':db['Attachment'],'as':_0x5111('0x60')}]});})['then'](function(_0x1ffb56){_0x2818ec[_0x5111('0x17')]=_0x1ffb56;if(!_0x2818ec[_0x5111('0x5a')][_0x5111('0x61')]){return;}return db['User'][_0x5111('0x25')]({'attributes':['id','name'],'where':{'id':_0x2818ec[_0x5111('0x5a')]['UserId']}});})[_0x5111('0xe')](function(_0x335919){if(_0x335919){_0x2818ec[_0x5111('0x41')][_0x5111('0x62')]({'id':0x0,'priority':0x0,'app':_0x5111('0x63'),'appdata':_0x335919[_0x5111('0x64')]+','+(_0x2818ec[_0x5111('0x39')][_0x5111('0x65')]||0xa),'interval':'*,*,*,*'});}if(!_0x2818ec[_0x5111('0x5a')][_0x5111('0x66')]){return;}return db[_0x5111('0x67')][_0x5111('0x25')]({'attributes':['id',_0x5111('0x64')],'where':{'id':_0x2818ec['interaction'][_0x5111('0x66')]}});})[_0x5111('0xe')](function(_0x5d2772){if(_0x5d2772){_0x2818ec[_0x5111('0x41')][_0x5111('0x62')]({'id':0x0,'priority':0x1,'app':_0x5111('0x68'),'appdata':_0x5d2772['name']+','+(_0x2818ec[_0x5111('0x39')][_0x5111('0x69')]||0x12c),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0x5111('0x6a'),'startRouting',_0x2818ec);})[_0x5111('0xe')](function(_0x5dcc50){_0xf00f9(_0x5dcc50);})[_0x5111('0x18')](function(_0x44b7ff){_0x54d2f1(_0x352de9[_0x5111('0x15')](0x1f4,_0x44b7ff[_0x5111('0x17')]));});});};
\ No newline at end of file
+var _0xf2ca=['Messages','inReplyTo','Contact\x20not\x20found','spread','update','attach','interaction','created','attachments','originTo','originCc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','Attachments','name','UserId','unshift','agent','queueId','MailQueue','queue','waitForTheAssignedQueue','startRouting','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','register','request','then','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','GetMailAccount','findAll','options','raw','where','limit','map','include','model','attributes','stringify','MailAccount','find','smtp','smtpOptions','getSmtpOptions','ShowMailAccount','NotifyMailAccount','body','mail','difference','keys','rawAttributes','createdAt','updatedAt','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','account','List','Contacts','DESC','MailApplication','Applications','MailServerOut','Smtp','CloudProvider','omit','applications','list','orderBy','autoclose','push','length','close','*,*,*,*','ListId','CmContact','create','contact','messageId','generate','subject','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage'];(function(_0x528ae9,_0x4195e7){var _0x1e3d9a=function(_0x1e868e){while(--_0x1e868e){_0x528ae9['push'](_0x528ae9['shift']());}};_0x1e3d9a(++_0x4195e7);}(_0xf2ca,0x16a));var _0xaf2c=function(_0x47cde9,_0x19d013){_0x47cde9=_0x47cde9-0x0;var _0x26fdf1=_0xf2ca[_0x47cde9];return _0x26fdf1;};'use strict';var _=require(_0xaf2c('0x0'));var moment=require(_0xaf2c('0x1'));var BPromise=require(_0xaf2c('0x2'));var rs=require('randomstring');var Redis=require(_0xaf2c('0x3'));var db=require(_0xaf2c('0x4'))['db'];var logger=require(_0xaf2c('0x5'))(_0xaf2c('0x6'));var config=require(_0xaf2c('0x7'));var jayson=require(_0xaf2c('0x8'));var client=jayson['client'][_0xaf2c('0x9')]({'port':0x232c});config[_0xaf2c('0xa')]=_[_0xaf2c('0xb')](config[_0xaf2c('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xaf2c('0xc'))(new Redis(config[_0xaf2c('0xa')]));require('./mailAccount.socket')[_0xaf2c('0xd')](socket);function respondWithRpcPromise(_0x4ba0a2,_0x439ca3,_0x4a0064){return new BPromise(function(_0x2f5099,_0x144a7a){return client[_0xaf2c('0xe')](_0x4ba0a2,_0x4a0064)[_0xaf2c('0xf')](function(_0x5ad9b0){logger['info'](_0xaf2c('0x10'),_0x439ca3,_0xaf2c('0x11'));logger[_0xaf2c('0x12')](_0xaf2c('0x13'),_0x439ca3,_0xaf2c('0x11'),JSON['stringify'](_0x5ad9b0));if(_0x5ad9b0['error']){if(_0x5ad9b0[_0xaf2c('0x14')][_0xaf2c('0x15')]===0x1f4){logger[_0xaf2c('0x14')](_0xaf2c('0x10'),_0x439ca3,_0x5ad9b0[_0xaf2c('0x14')][_0xaf2c('0x16')]);return _0x144a7a(_0x5ad9b0[_0xaf2c('0x14')][_0xaf2c('0x16')]);}logger[_0xaf2c('0x14')](_0xaf2c('0x10'),_0x439ca3,_0x5ad9b0[_0xaf2c('0x14')][_0xaf2c('0x16')]);return _0x2f5099(_0x5ad9b0[_0xaf2c('0x14')][_0xaf2c('0x16')]);}else{logger[_0xaf2c('0x17')]('MailAccount,\x20%s,\x20%s',_0x439ca3,_0xaf2c('0x11'));_0x2f5099(_0x5ad9b0['result'][_0xaf2c('0x16')]);}})[_0xaf2c('0x18')](function(_0x1d544a){logger['error'](_0xaf2c('0x10'),_0x439ca3,_0x1d544a);_0x144a7a(_0x1d544a);});});}exports[_0xaf2c('0x19')]=function(_0x1fec4c){var _0x20000b=this;return new Promise(function(_0x3f977c,_0x1b7f07){return db['MailAccount'][_0xaf2c('0x1a')]({'raw':_0x1fec4c[_0xaf2c('0x1b')]?_0x1fec4c[_0xaf2c('0x1b')][_0xaf2c('0x1c')]===undefined?!![]:![]:!![],'where':_0x1fec4c[_0xaf2c('0x1b')]?_0x1fec4c['options'][_0xaf2c('0x1d')]||null:null,'attributes':_0x1fec4c[_0xaf2c('0x1b')]?_0x1fec4c[_0xaf2c('0x1b')]['attributes']||null:null,'limit':_0x1fec4c['options']?_0x1fec4c[_0xaf2c('0x1b')][_0xaf2c('0x1e')]||null:null,'include':_0x1fec4c[_0xaf2c('0x1b')]?_0x1fec4c[_0xaf2c('0x1b')]['include']?_[_0xaf2c('0x1f')](_0x1fec4c[_0xaf2c('0x1b')][_0xaf2c('0x20')],function(_0x3c1ae6){return{'model':db[_0x3c1ae6[_0xaf2c('0x21')]],'as':_0x3c1ae6['as'],'attributes':_0x3c1ae6[_0xaf2c('0x22')],'include':_0x3c1ae6[_0xaf2c('0x20')]?_['map'](_0x3c1ae6[_0xaf2c('0x20')],function(_0x2051be){return{'model':db[_0x2051be[_0xaf2c('0x21')]],'as':_0x2051be['as'],'attributes':_0x2051be[_0xaf2c('0x22')],'include':_0x2051be['include']?_[_0xaf2c('0x1f')](_0x2051be['include'],function(_0x38db1b){return{'model':db[_0x38db1b[_0xaf2c('0x21')]],'as':_0x38db1b['as'],'attributes':_0x38db1b[_0xaf2c('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2747bb){logger[_0xaf2c('0x17')](_0xaf2c('0x19'),_0x1fec4c);logger['debug'](_0xaf2c('0x19'),_0x1fec4c,JSON[_0xaf2c('0x23')](_0x2747bb));_0x3f977c(_0x2747bb);})[_0xaf2c('0x18')](function(_0x19364e){logger['error'](_0xaf2c('0x19'),_0x19364e[_0xaf2c('0x16')],_0x1fec4c);_0x1b7f07(_0x20000b[_0xaf2c('0x14')](0x1f4,_0x19364e['message']));});});};exports['ShowMailAccount']=function(_0x359cab){var _0x4c9b4f=this;return new Promise(function(_0x39c0ed,_0x5e7247){return db[_0xaf2c('0x24')][_0xaf2c('0x25')]({'raw':_0x359cab['options']?_0x359cab[_0xaf2c('0x1b')][_0xaf2c('0x1c')]===undefined?!![]:![]:!![],'where':_0x359cab['options']?_0x359cab[_0xaf2c('0x1b')][_0xaf2c('0x1d')]||null:null,'attributes':_0x359cab[_0xaf2c('0x1b')]?_0x359cab[_0xaf2c('0x1b')][_0xaf2c('0x22')]||null:null,'include':_0x359cab[_0xaf2c('0x1b')]?_0x359cab['options'][_0xaf2c('0x20')]?_['map'](_0x359cab[_0xaf2c('0x1b')]['include'],function(_0x3781f3){return{'model':db[_0x3781f3['model']],'as':_0x3781f3['as'],'attributes':_0x3781f3[_0xaf2c('0x22')],'include':_0x3781f3['include']?_[_0xaf2c('0x1f')](_0x3781f3['include'],function(_0x30fd87){return{'model':db[_0x30fd87[_0xaf2c('0x21')]],'as':_0x30fd87['as'],'attributes':_0x30fd87[_0xaf2c('0x22')],'include':_0x30fd87[_0xaf2c('0x20')]?_[_0xaf2c('0x1f')](_0x30fd87['include'],function(_0x4cba13){return{'model':db[_0x4cba13[_0xaf2c('0x21')]],'as':_0x4cba13['as'],'attributes':_0x4cba13[_0xaf2c('0x22')]};}):[]};}):[]};}):[]:[]})[_0xaf2c('0xf')](function(_0xa44813){if(_0x359cab[_0xaf2c('0x1b')][_0xaf2c('0x26')]===!![])_0xa44813['setDataValue'](_0xaf2c('0x27'),_0xa44813[_0xaf2c('0x28')]());logger['info'](_0xaf2c('0x29'),_0x359cab);logger[_0xaf2c('0x12')](_0xaf2c('0x29'),_0x359cab,JSON[_0xaf2c('0x23')](_0xa44813));_0x39c0ed(_0xa44813);})[_0xaf2c('0x18')](function(_0x1e8eaf){logger[_0xaf2c('0x14')](_0xaf2c('0x29'),_0x1e8eaf[_0xaf2c('0x16')],_0x359cab);_0x5e7247(_0x4c9b4f[_0xaf2c('0x14')](0x1f4,_0x1e8eaf[_0xaf2c('0x16')]));});});};exports[_0xaf2c('0x2a')]=function(_0xaba85d){var _0x4b524d=this;return new Promise(function(_0x54a953,_0x4db7d0){var _0x189809={'body':_0xaba85d[_0xaf2c('0x2b')],'channel':_0xaf2c('0x2c')};var _0x381502=_[_0xaf2c('0x2d')](_[_0xaf2c('0x2e')](db['CmContact'][_0xaf2c('0x2f')]),[_0xaf2c('0x30'),_0xaf2c('0x31'),'CompanyId','ListId']);var _0x4ac61a=![];if(_0xaba85d['body']['id']){delete _0xaba85d[_0xaf2c('0x2b')]['id'];}if(_[_0xaf2c('0x32')](_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x33')])){return _0x4db7d0(_0x4b524d['error'](0x1f4,_0xaf2c('0x34')));}if(_['isNil'](_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x2b')])||_0xaba85d['body'][_0xaf2c('0x2b')]===''){return _0x4db7d0(_0x4b524d['error'](0x1f4,_0xaf2c('0x35')));}if(_[_0xaf2c('0x32')](_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x36')])){return _0x4db7d0(_0x4b524d[_0xaf2c('0x14')](0x1f4,_0xaf2c('0x37')+_0x381502));}if(!_[_0xaf2c('0x38')](_0x381502,_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x36')])){return _0x4db7d0(_0x4b524d['error'](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x381502));}var _0x18e62b={};_0x18e62b[_0xaba85d['body']['mapKey']]=_0xaba85d['body'][_0xaf2c('0x33')];return db[_0xaf2c('0x24')][_0xaf2c('0x25')]({'where':{'id':_0xaba85d[_0xaf2c('0x39')]['id']},'include':[{'model':db['CmList'],'as':_0xaf2c('0x3a'),'include':[{'model':db['CmContact'],'as':_0xaf2c('0x3b'),'where':_0x18e62b,'limit':0x1,'order':[['updatedAt',_0xaf2c('0x3c')]]}]},{'model':db[_0xaf2c('0x3d')],'as':_0xaf2c('0x3e')},{'model':db[_0xaf2c('0x3f')],'as':_0xaf2c('0x40'),'include':[{'model':db['CloudProvider'],'as':_0xaf2c('0x41')}]}]})[_0xaf2c('0xf')](function(_0x4b3ca4){if(_0x4b3ca4&&_0x4b3ca4['List']){var _0x367b30=_0x4b3ca4['get']({'plain':!![]});_0x189809[_0xaf2c('0x39')]=_[_0xaf2c('0x42')](_0x367b30,[_0xaf2c('0x3e'),_0xaf2c('0x3a')]);_0x189809[_0xaf2c('0x39')][_0xaf2c('0x27')]=_0x4b3ca4[_0xaf2c('0x28')]();_0x189809[_0xaf2c('0x43')]=_0x367b30[_0xaf2c('0x3e')];_0x189809[_0xaf2c('0x44')]=_0x367b30[_0xaf2c('0x3a')];_0x189809['applications']=_[_0xaf2c('0x45')](_0x189809[_0xaf2c('0x43')],['priority'],['asc']);if(_0x189809['account']&&_0x189809[_0xaf2c('0x39')][_0xaf2c('0x46')]){_0x189809['applications'][_0xaf2c('0x47')]({'id':0x0,'priority':_0x189809[_0xaf2c('0x43')][_0xaf2c('0x48')]+0x1,'app':_0xaf2c('0x49'),'appdata':_0xaf2c('0x46'),'interval':_0xaf2c('0x4a')});}if(_0x189809[_0xaf2c('0x39')]['Applications']){delete _0x189809[_0xaf2c('0x39')][_0xaf2c('0x3e')];}if(_0x189809['account'][_0xaf2c('0x3a')]){delete _0x189809[_0xaf2c('0x39')][_0xaf2c('0x3a')];}if(_0x367b30[_0xaf2c('0x3a')][_0xaf2c('0x3b')][_0xaf2c('0x48')]){return _0x367b30[_0xaf2c('0x3a')][_0xaf2c('0x3b')][0x0];}var _0x19b82d=_[_0xaf2c('0xb')](_0xaba85d[_0xaf2c('0x2b')],{'firstName':_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x33')],'ListId':_0x367b30[_0xaf2c('0x4b')]});_0x19b82d[_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x36')]]=_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x33')];return db[_0xaf2c('0x4c')][_0xaf2c('0x4d')](_0x19b82d);}else{throw new Error('List\x20not\x20found');}})[_0xaf2c('0xf')](function(_0x3ac79c){_0x189809[_0xaf2c('0x4e')]=_0x3ac79c;if(_0x3ac79c){if(!_0xaba85d['body'][_0xaf2c('0x16')]['messageId']){_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x16')][_0xaf2c('0x4f')]=rs[_0xaf2c('0x50')]()+'\x20'+_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x16')][_0xaf2c('0x33')];}var _0x8e1a1a={'ContactId':_0x3ac79c['id'],'MailAccountId':_0xaba85d[_0xaf2c('0x39')]['id'],'inReplyTo':_0xaba85d['body'][_0xaf2c('0x16')][_0xaf2c('0x4f')],'to':_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x16')][_0xaf2c('0x33')],'cc':_0xaba85d['body'][_0xaf2c('0x16')]['cc'],'subject':_0xaba85d[_0xaf2c('0x2b')]['message'][_0xaf2c('0x51')],'attach':_0xaba85d[_0xaf2c('0x2b')]['message']['attach'],'lastMsgAt':moment()[_0xaf2c('0x52')](_0xaf2c('0x53')),'lastMsgDirection':'in'};return db[_0xaf2c('0x54')][_0xaf2c('0x25')]({'where':{'closed':![],'MailAccountId':_0xaba85d['account']['id']},'include':[{'model':db[_0xaf2c('0x55')],'as':_0xaf2c('0x56'),'attributes':['messageId'],'where':{'messageId':_0xaba85d[_0xaf2c('0x2b')]['message'][_0xaf2c('0x57')]}}]})[_0xaf2c('0xf')](function(_0x16e9f4){if(_0x16e9f4){return[_0x16e9f4,![]];}return db[_0xaf2c('0x54')][_0xaf2c('0x4d')](_0x8e1a1a)[_0xaf2c('0xf')](function(_0x1c9639){return[_0x1c9639,!![]];});});}else{throw new Error(_0xaf2c('0x58'));}})[_0xaf2c('0x59')](function(_0xc27601,_0x53ba41){if(_0xc27601){_0x4ac61a=_0x53ba41;if(!_0x53ba41){return _0xc27601[_0xaf2c('0x5a')]({'inReplyTo':_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x16')][_0xaf2c('0x4f')],'to':_0xaba85d[_0xaf2c('0x2b')]['message'][_0xaf2c('0x33')],'cc':_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x16')]['cc'],'subject':_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x16')]['subject'],'attach':_0xc27601['attach']?_0xc27601[_0xaf2c('0x5b')]:_0xaba85d[_0xaf2c('0x2b')]['message'][_0xaf2c('0x5b')],'substatus':null,'substatusAt':moment()[_0xaf2c('0x52')](_0xaf2c('0x53')),'lastMsgAt':moment()['format'](_0xaf2c('0x53')),'lastMsgDirection':'in'});}else{return _0xc27601;}}})[_0xaf2c('0xf')](function(_0x18dcde){_0x189809[_0xaf2c('0x5c')]=_0x18dcde['get']({'plain':!![]});_0x189809[_0xaf2c('0x5c')][_0xaf2c('0x5d')]=_0x4ac61a;return db[_0xaf2c('0x55')][_0xaf2c('0x4d')]({'body':_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x2b')],'MailAccountId':_0xaba85d[_0xaf2c('0x39')]['id'],'MailInteractionId':_0x18dcde['id'],'direction':'in','ContactId':_0x189809[_0xaf2c('0x4e')]['id'],'messageId':_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x16')][_0xaf2c('0x4f')],'from':_0xaba85d['body'][_0xaf2c('0x16')]['from'],'to':_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x16')]['to'],'cc':_0xaba85d['body'][_0xaf2c('0x16')]['cc'],'subject':_0xaba85d['body']['message'][_0xaf2c('0x51')],'attach':_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x16')]['attach'],'Attachments':_0xaba85d['body']['message'][_0xaf2c('0x5e')],'originTo':_0xaba85d[_0xaf2c('0x2b')]['message'][_0xaf2c('0x5f')],'originCc':_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x16')][_0xaf2c('0x60')],'bcc':_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x16')]['bcc'],'ChatWebsiteId':_0xaba85d[_0xaf2c('0x2b')][_0xaf2c('0x16')][_0xaf2c('0x61')]||null,'originChannel':_0xaba85d['body'][_0xaf2c('0x16')][_0xaf2c('0x62')]||_0xaf2c('0x63'),'ChatOfflineMessageId':_0xaba85d['body'][_0xaf2c('0x16')][_0xaf2c('0x64')]||null},{'include':[{'model':db[_0xaf2c('0x65')],'as':_0xaf2c('0x66')}]});})['then'](function(_0x286a40){_0x189809[_0xaf2c('0x16')]=_0x286a40;if(!_0x189809[_0xaf2c('0x5c')]['UserId']){return;}return db['User'][_0xaf2c('0x25')]({'attributes':['id',_0xaf2c('0x67')],'where':{'id':_0x189809['interaction'][_0xaf2c('0x68')]}});})[_0xaf2c('0xf')](function(_0x5365fa){if(_0x5365fa){_0x189809[_0xaf2c('0x43')][_0xaf2c('0x69')]({'id':0x0,'priority':0x0,'app':_0xaf2c('0x6a'),'appdata':_0x5365fa[_0xaf2c('0x67')]+','+(_0x189809[_0xaf2c('0x39')]['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});}if(!_0x189809[_0xaf2c('0x5c')][_0xaf2c('0x6b')]){return;}return db[_0xaf2c('0x6c')]['find']({'attributes':['id',_0xaf2c('0x67')],'where':{'id':_0x189809[_0xaf2c('0x5c')][_0xaf2c('0x6b')]}});})[_0xaf2c('0xf')](function(_0x39ddec){if(_0x39ddec){_0x189809['applications'][_0xaf2c('0x69')]({'id':0x0,'priority':0x1,'app':_0xaf2c('0x6d'),'appdata':_0x39ddec[_0xaf2c('0x67')]+','+(_0x189809[_0xaf2c('0x39')][_0xaf2c('0x6e')]||0x12c),'interval':_0xaf2c('0x4a')});}return respondWithRpcPromise('Start',_0xaf2c('0x6f'),_0x189809);})[_0xaf2c('0xf')](function(_0x483774){_0x54a953(_0x483774);})['catch'](function(_0x493e84){_0x4db7d0(_0x4b524d[_0xaf2c('0x14')](0x1f4,_0x493e84[_0xaf2c('0x16')]));});});};
\ No newline at end of file
index fa6d4eb..b567199 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedc8=['remove','update','length','./mailAccount.events','save'];(function(_0x3b7a06,_0x41f79e){var _0x363e31=function(_0x51e3f5){while(--_0x51e3f5){_0x3b7a06['push'](_0x3b7a06['shift']());}};_0x363e31(++_0x41f79e);}(_0xedc8,0x99));var _0x8edc=function(_0x19b3f9,_0xade753){_0x19b3f9=_0x19b3f9-0x0;var _0x18c3f6=_0xedc8[_0x19b3f9];return _0x18c3f6;};'use strict';var MailAccountEvents=require(_0x8edc('0x0'));var events=[_0x8edc('0x1'),_0x8edc('0x2'),_0x8edc('0x3')];function createListener(_0x8e653a,_0x1b3d10){return function(_0x3e3c0f){_0x1b3d10['emit'](_0x8e653a,_0x3e3c0f);};}function removeListener(_0x5adbca,_0x262b49){return function(){MailAccountEvents['removeListener'](_0x5adbca,_0x262b49);};}exports['register']=function(_0x3fe051){for(var _0x1d479b=0x0,_0x40408c=events[_0x8edc('0x4')];_0x1d479b<_0x40408c;_0x1d479b++){var _0x164965=events[_0x1d479b];var _0x59537d=createListener('mailAccount:'+_0x164965,_0x3fe051);MailAccountEvents['on'](_0x164965,_0x59537d);}};
\ No newline at end of file
+var _0x686f=['save','remove','update','emit','removeListener','register','length','mailAccount:'];(function(_0x3a5be0,_0x348563){var _0x27d2f0=function(_0x330770){while(--_0x330770){_0x3a5be0['push'](_0x3a5be0['shift']());}};_0x27d2f0(++_0x348563);}(_0x686f,0x108));var _0xf686=function(_0x2e84d4,_0x5369f6){_0x2e84d4=_0x2e84d4-0x0;var _0x46433e=_0x686f[_0x2e84d4];return _0x46433e;};'use strict';var MailAccountEvents=require('./mailAccount.events');var events=[_0xf686('0x0'),_0xf686('0x1'),_0xf686('0x2')];function createListener(_0x250c2a,_0x14d3cb){return function(_0x5cc1c4){_0x14d3cb[_0xf686('0x3')](_0x250c2a,_0x5cc1c4);};}function removeListener(_0xfe2339,_0x3f75a3){return function(){MailAccountEvents[_0xf686('0x4')](_0xfe2339,_0x3f75a3);};}exports[_0xf686('0x5')]=function(_0x5975f1){for(var _0x29b643=0x0,_0x3e47bd=events[_0xf686('0x6')];_0x29b643<_0x3e47bd;_0x29b643++){var _0x175505=events[_0x29b643];var _0x4f93f8=createListener(_0xf686('0x7')+_0x175505,_0x5975f1);MailAccountEvents['on'](_0x175505,_0x4f93f8);}};
\ No newline at end of file
index 6decd40..2e4952a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb10=['path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','show','isAuthenticated','destroy','exports','multer','util'];(function(_0x3553c9,_0x1f1d5a){var _0x495894=function(_0x143b66){while(--_0x143b66){_0x3553c9['push'](_0x3553c9['shift']());}};_0x495894(++_0x1f1d5a);}(_0xdb10,0x1b0));var _0x0db1=function(_0x2c69a1,_0x201903){_0x2c69a1=_0x2c69a1-0x0;var _0x24bb91=_0xdb10[_0x2c69a1];return _0x24bb91;};'use strict';var multer=require(_0x0db1('0x0'));var util=require(_0x0db1('0x1'));var path=require(_0x0db1('0x2'));var timeout=require(_0x0db1('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0db1('0x4'));var interaction=require(_0x0db1('0x5'));var config=require(_0x0db1('0x6'));var controller=require(_0x0db1('0x7'));router[_0x0db1('0x8')](_0x0db1('0x9'),auth['isAuthenticated'](),controller[_0x0db1('0xa')]);router['put'](_0x0db1('0x9'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x0db1('0x9'),auth[_0x0db1('0xb')](),controller[_0x0db1('0xc')]);module[_0x0db1('0xd')]=router;
\ No newline at end of file
+var _0x8e39=['update','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailApplication.controller','/:id','isAuthenticated','show','put'];(function(_0x319d29,_0x21fa08){var _0x4d61f2=function(_0x2c46db){while(--_0x2c46db){_0x319d29['push'](_0x319d29['shift']());}};_0x4d61f2(++_0x21fa08);}(_0x8e39,0xa3));var _0x98e3=function(_0x51c846,_0x8d8df9){_0x51c846=_0x51c846-0x0;var _0x409189=_0x8e39[_0x51c846];return _0x409189;};'use strict';var multer=require(_0x98e3('0x0'));var util=require('util');var path=require(_0x98e3('0x1'));var timeout=require(_0x98e3('0x2'));var express=require(_0x98e3('0x3'));var router=express[_0x98e3('0x4')]();var fs_extra=require(_0x98e3('0x5'));var auth=require(_0x98e3('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x98e3('0x7'));var controller=require(_0x98e3('0x8'));router['get'](_0x98e3('0x9'),auth[_0x98e3('0xa')](),controller[_0x98e3('0xb')]);router[_0x98e3('0xc')]('/:id',auth[_0x98e3('0xa')](),controller[_0x98e3('0xd')]);router['delete'](_0x98e3('0x9'),auth[_0x98e3('0xa')](),controller[_0x98e3('0xe')]);module[_0x98e3('0xf')]=router;
\ No newline at end of file
index e4705d8..d9aae67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc18a=['STRING','noop','TEXT','*,*,*,*'];(function(_0x8c1005,_0x1f3f16){var _0x175354=function(_0xd0e9c4){while(--_0xd0e9c4){_0x8c1005['push'](_0x8c1005['shift']());}};_0x175354(++_0x1f3f16);}(_0xc18a,0x188));var _0xac18=function(_0x1c6e7e,_0xbb0440){_0x1c6e7e=_0x1c6e7e-0x0;var _0x168de4=_0xc18a[_0x1c6e7e];return _0x168de4;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xac18('0x0')],'allowNull':![],'defaultValue':_0xac18('0x1')},'appdata':{'type':Sequelize[_0xac18('0x2')]()},'description':{'type':Sequelize[_0xac18('0x0')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xac18('0x3')}};
\ No newline at end of file
+var _0x9e90=['*,*,*,*','sequelize','INTEGER','STRING'];(function(_0x4f4f7a,_0x510498){var _0x57adc4=function(_0x31ebc8){while(--_0x31ebc8){_0x4f4f7a['push'](_0x4f4f7a['shift']());}};_0x57adc4(++_0x510498);}(_0x9e90,0xcd));var _0x09e9=function(_0x348108,_0x515d35){_0x348108=_0x348108-0x0;var _0x116702=_0x9e90[_0x348108];return _0x116702;};'use strict';var Sequelize=require(_0x09e9('0x0'));module['exports']={'priority':{'type':Sequelize[_0x09e9('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x09e9('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x09e9('0x3')}};
\ No newline at end of file
index 4565135..661f0b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['name','status','send','show','params','keys','MailApplication','rawAttributes','query','intersection','model','fields','attributes','length','includeAll','merge','options','find','then','catch','body','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','update','destroy','sendStatus'];(function(_0x579ee2,_0x3c6baf){var _0x473cbd=function(_0x4f0e36){while(--_0x4f0e36){_0x579ee2['push'](_0x579ee2['shift']());}};_0x473cbd(++_0x3c6baf);}(_0xb43b,0x1b2));var _0xbb43=function(_0x3ac5bb,_0x433abd){_0x3ac5bb=_0x3ac5bb-0x0;var _0x44419f=_0xb43b[_0x3ac5bb];return _0x44419f;};'use strict';var emlformat=require(_0xbb43('0x0'));var rimraf=require(_0xbb43('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbb43('0x2'));var rp=require(_0xbb43('0x3'));var moment=require(_0xbb43('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbb43('0x5'));var util=require(_0xbb43('0x6'));var path=require(_0xbb43('0x7'));var sox=require(_0xbb43('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb43('0x9'));var _=require('lodash');var squel=require(_0xbb43('0xa'));var crypto=require(_0xbb43('0xb'));var jsforce=require(_0xbb43('0xc'));var deskjs=require(_0xbb43('0xd'));var toCsv=require(_0xbb43('0xe'));var querystring=require('querystring');var Papa=require(_0xbb43('0xf'));var Redis=require(_0xbb43('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xbb43('0x11'));var as=require(_0xbb43('0x12'));var hardwareService=require(_0xbb43('0x13'));var logger=require(_0xbb43('0x14'))(_0xbb43('0x15'));var utils=require(_0xbb43('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xbb43('0x17'));var db=require(_0xbb43('0x18'))['db'];function respondWithStatusCode(_0x50e2c0,_0x578392){_0x578392=_0x578392||0xcc;return function(_0x41e7e5){if(_0x41e7e5){return _0x50e2c0['sendStatus'](_0x578392);}return _0x50e2c0['status'](_0x578392)[_0xbb43('0x19')]();};}function respondWithResult(_0x5a509f,_0x68d45d){_0x68d45d=_0x68d45d||0xc8;return function(_0x43021d){if(_0x43021d){return _0x5a509f['status'](_0x68d45d)['json'](_0x43021d);}};}function respondWithFilteredResult(_0x4d5bcf,_0x338120){return function(_0x2abce0){if(_0x2abce0){var _0x57bd1d=typeof _0x338120['offset']===_0xbb43('0x1a')&&typeof _0x338120['limit']==='undefined';var _0x2b0797=_0x2abce0[_0xbb43('0x1b')];var _0x2e3b43=_0x57bd1d?0x0:_0x338120['offset'];var _0x1c16d7=_0x57bd1d?_0x2abce0['count']:_0x338120[_0xbb43('0x1c')]+_0x338120[_0xbb43('0x1d')];var _0x4dfc54;if(_0x1c16d7>=_0x2b0797){_0x1c16d7=_0x2b0797;_0x4dfc54=0xc8;}else{_0x4dfc54=0xce;}_0x4d5bcf['status'](_0x4dfc54);return _0x4d5bcf[_0xbb43('0x1e')](_0xbb43('0x1f'),_0x2e3b43+'-'+_0x1c16d7+'/'+_0x2b0797)[_0xbb43('0x20')](_0x2abce0);}return null;};}function patchUpdates(_0x2bf2d4){return function(_0x5bcce7){try{jsonpatch[_0xbb43('0x21')](_0x5bcce7,_0x2bf2d4,!![]);}catch(_0x5f4416){return BPromise[_0xbb43('0x22')](_0x5f4416);}return _0x5bcce7['save']();};}function saveUpdates(_0x2f5e31,_0x565256){return function(_0x3f323e){if(_0x3f323e){return _0x3f323e[_0xbb43('0x23')](_0x2f5e31)['then'](function(_0x1d0768){return _0x1d0768;});}return null;};}function removeEntity(_0x4dfb7f,_0xf24e60){return function(_0x298ce2){if(_0x298ce2){return _0x298ce2[_0xbb43('0x24')]()['then'](function(){_0x4dfb7f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x269ca5,_0x32d7f0){return function(_0x5d8310){if(!_0x5d8310){_0x269ca5[_0xbb43('0x25')](0x194);}return _0x5d8310;};}function handleError(_0x2da653,_0x226827){_0x226827=_0x226827||0x1f4;return function(_0x3874fb){logger['error'](_0x3874fb['stack']);if(_0x3874fb[_0xbb43('0x26')]){delete _0x3874fb[_0xbb43('0x26')];}_0x2da653[_0xbb43('0x27')](_0x226827)[_0xbb43('0x28')](_0x3874fb);};}exports[_0xbb43('0x29')]=function(_0x40b04b,_0x21d386){var _0x473828={'raw':!![],'where':{'id':_0x40b04b[_0xbb43('0x2a')]['id']}},_0x539730={};_0x539730['model']=_[_0xbb43('0x2b')](db[_0xbb43('0x2c')][_0xbb43('0x2d')]);_0x539730[_0xbb43('0x2e')]=_['keys'](_0x40b04b[_0xbb43('0x2e')]);_0x539730['filters']=_['intersection'](_0x539730['model'],_0x539730[_0xbb43('0x2e')]);_0x473828['attributes']=_[_0xbb43('0x2f')](_0x539730[_0xbb43('0x30')],qs[_0xbb43('0x31')](_0x40b04b['query'][_0xbb43('0x31')]));_0x473828[_0xbb43('0x32')]=_0x473828[_0xbb43('0x32')][_0xbb43('0x33')]?_0x473828[_0xbb43('0x32')]:_0x539730[_0xbb43('0x30')];if(_0x40b04b[_0xbb43('0x2e')][_0xbb43('0x34')]){_0x473828['include']=[{'all':!![]}];}_0x473828=_[_0xbb43('0x35')]({},_0x473828,_0x40b04b[_0xbb43('0x36')]);return db[_0xbb43('0x2c')][_0xbb43('0x37')](_0x473828)[_0xbb43('0x38')](handleEntityNotFound(_0x21d386,null))[_0xbb43('0x38')](respondWithResult(_0x21d386,null))[_0xbb43('0x39')](handleError(_0x21d386,null));};exports[_0xbb43('0x23')]=function(_0x349a83,_0x57105c){if(_0x349a83[_0xbb43('0x3a')]['id']){delete _0x349a83[_0xbb43('0x3a')]['id'];}return db[_0xbb43('0x2c')][_0xbb43('0x37')]({'where':{'id':_0x349a83[_0xbb43('0x2a')]['id']}})[_0xbb43('0x38')](handleEntityNotFound(_0x57105c,null))['then'](saveUpdates(_0x349a83[_0xbb43('0x3a')],null))[_0xbb43('0x38')](respondWithResult(_0x57105c,null))['catch'](handleError(_0x57105c,null));};exports[_0xbb43('0x24')]=function(_0x2c9a7c,_0x11d384){return db['MailApplication']['find']({'where':{'id':_0x2c9a7c['params']['id']}})[_0xbb43('0x38')](handleEntityNotFound(_0x11d384,null))[_0xbb43('0x38')](removeEntity(_0x11d384,null))['catch'](handleError(_0x11d384,null));};
\ No newline at end of file
+var _0xac4a=['Content-Range','apply','reject','save','update','destroy','then','error','stack','name','send','show','params','model','keys','MailApplication','query','filters','intersection','fields','attributes','length','includeAll','include','merge','options','catch','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','ejs','lodash','crypto','jsforce','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set'];(function(_0x390997,_0x481f56){var _0x262f86=function(_0x5ee3e9){while(--_0x5ee3e9){_0x390997['push'](_0x390997['shift']());}};_0x262f86(++_0x481f56);}(_0xac4a,0x13f));var _0xaac4=function(_0x3d8848,_0x7d4be6){_0x3d8848=_0x3d8848-0x0;var _0x24a8b5=_0xac4a[_0x3d8848];return _0x24a8b5;};'use strict';var emlformat=require(_0xaac4('0x0'));var rimraf=require(_0xaac4('0x1'));var zipdir=require(_0xaac4('0x2'));var jsonpatch=require(_0xaac4('0x3'));var rp=require(_0xaac4('0x4'));var moment=require(_0xaac4('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xaac4('0x6'));var path=require(_0xaac4('0x7'));var sox=require(_0xaac4('0x8'));var csv=require('to-csv');var ejs=require(_0xaac4('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaac4('0xa'));var squel=require('squel');var crypto=require(_0xaac4('0xb'));var jsforce=require(_0xaac4('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xaac4('0xd'));var Papa=require('papaparse');var Redis=require(_0xaac4('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xaac4('0xf'));var hardwareService=require(_0xaac4('0x10'));var logger=require(_0xaac4('0x11'))(_0xaac4('0x12'));var utils=require(_0xaac4('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xaac4('0x14'))['db'];function respondWithStatusCode(_0x2e2d02,_0x45e512){_0x45e512=_0x45e512||0xcc;return function(_0x5a4801){if(_0x5a4801){return _0x2e2d02[_0xaac4('0x15')](_0x45e512);}return _0x2e2d02[_0xaac4('0x16')](_0x45e512)['end']();};}function respondWithResult(_0xf06b1d,_0x2b20d0){_0x2b20d0=_0x2b20d0||0xc8;return function(_0x46698d){if(_0x46698d){return _0xf06b1d[_0xaac4('0x16')](_0x2b20d0)[_0xaac4('0x17')](_0x46698d);}};}function respondWithFilteredResult(_0x2fbeb7,_0x31b7e5){return function(_0x1df9ae){if(_0x1df9ae){var _0x233278=typeof _0x31b7e5[_0xaac4('0x18')]===_0xaac4('0x19')&&typeof _0x31b7e5[_0xaac4('0x1a')]===_0xaac4('0x19');var _0x52686a=_0x1df9ae[_0xaac4('0x1b')];var _0x52085a=_0x233278?0x0:_0x31b7e5[_0xaac4('0x18')];var _0x5b6fd6=_0x233278?_0x1df9ae[_0xaac4('0x1b')]:_0x31b7e5[_0xaac4('0x18')]+_0x31b7e5[_0xaac4('0x1a')];var _0x271bcb;if(_0x5b6fd6>=_0x52686a){_0x5b6fd6=_0x52686a;_0x271bcb=0xc8;}else{_0x271bcb=0xce;}_0x2fbeb7[_0xaac4('0x16')](_0x271bcb);return _0x2fbeb7[_0xaac4('0x1c')](_0xaac4('0x1d'),_0x52085a+'-'+_0x5b6fd6+'/'+_0x52686a)[_0xaac4('0x17')](_0x1df9ae);}return null;};}function patchUpdates(_0x4166ee){return function(_0x480fb0){try{jsonpatch[_0xaac4('0x1e')](_0x480fb0,_0x4166ee,!![]);}catch(_0x4e1e89){return BPromise[_0xaac4('0x1f')](_0x4e1e89);}return _0x480fb0[_0xaac4('0x20')]();};}function saveUpdates(_0x43625c,_0x477b77){return function(_0x17140f){if(_0x17140f){return _0x17140f[_0xaac4('0x21')](_0x43625c)['then'](function(_0x43ccdc){return _0x43ccdc;});}return null;};}function removeEntity(_0x27a84d,_0x174860){return function(_0x4f10ec){if(_0x4f10ec){return _0x4f10ec[_0xaac4('0x22')]()[_0xaac4('0x23')](function(){_0x27a84d[_0xaac4('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x24186b,_0x4f1b65){return function(_0x54203b){if(!_0x54203b){_0x24186b['sendStatus'](0x194);}return _0x54203b;};}function handleError(_0x5a0bb3,_0x22d5a6){_0x22d5a6=_0x22d5a6||0x1f4;return function(_0x17d25f){logger[_0xaac4('0x24')](_0x17d25f[_0xaac4('0x25')]);if(_0x17d25f[_0xaac4('0x26')]){delete _0x17d25f[_0xaac4('0x26')];}_0x5a0bb3[_0xaac4('0x16')](_0x22d5a6)[_0xaac4('0x27')](_0x17d25f);};}exports[_0xaac4('0x28')]=function(_0x386c9b,_0x4d0f5f){var _0x316445={'raw':!![],'where':{'id':_0x386c9b[_0xaac4('0x29')]['id']}},_0x16b33c={};_0x16b33c[_0xaac4('0x2a')]=_[_0xaac4('0x2b')](db[_0xaac4('0x2c')]['rawAttributes']);_0x16b33c[_0xaac4('0x2d')]=_['keys'](_0x386c9b[_0xaac4('0x2d')]);_0x16b33c[_0xaac4('0x2e')]=_[_0xaac4('0x2f')](_0x16b33c[_0xaac4('0x2a')],_0x16b33c['query']);_0x316445['attributes']=_['intersection'](_0x16b33c[_0xaac4('0x2a')],qs[_0xaac4('0x30')](_0x386c9b[_0xaac4('0x2d')][_0xaac4('0x30')]));_0x316445[_0xaac4('0x31')]=_0x316445[_0xaac4('0x31')][_0xaac4('0x32')]?_0x316445[_0xaac4('0x31')]:_0x16b33c[_0xaac4('0x2a')];if(_0x386c9b[_0xaac4('0x2d')][_0xaac4('0x33')]){_0x316445[_0xaac4('0x34')]=[{'all':!![]}];}_0x316445=_[_0xaac4('0x35')]({},_0x316445,_0x386c9b[_0xaac4('0x36')]);return db[_0xaac4('0x2c')]['find'](_0x316445)['then'](handleEntityNotFound(_0x4d0f5f,null))[_0xaac4('0x23')](respondWithResult(_0x4d0f5f,null))[_0xaac4('0x37')](handleError(_0x4d0f5f,null));};exports[_0xaac4('0x21')]=function(_0x5e6080,_0x191d0f){if(_0x5e6080[_0xaac4('0x38')]['id']){delete _0x5e6080[_0xaac4('0x38')]['id'];}return db[_0xaac4('0x2c')][_0xaac4('0x39')]({'where':{'id':_0x5e6080[_0xaac4('0x29')]['id']}})[_0xaac4('0x23')](handleEntityNotFound(_0x191d0f,null))['then'](saveUpdates(_0x5e6080[_0xaac4('0x38')],null))[_0xaac4('0x23')](respondWithResult(_0x191d0f,null))[_0xaac4('0x37')](handleError(_0x191d0f,null));};exports['destroy']=function(_0x36d84a,_0x497e7b){return db['MailApplication'][_0xaac4('0x39')]({'where':{'id':_0x36d84a[_0xaac4('0x29')]['id']}})[_0xaac4('0x23')](handleEntityNotFound(_0x497e7b,null))['then'](removeEntity(_0x497e7b,null))['catch'](handleError(_0x497e7b,null));};
\ No newline at end of file
index d0c074a..c60327e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x568a=['define','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','util','api','moment','request-promise','path','../../config/environment','./mailApplication.attributes','exports'];(function(_0x3fff0c,_0x3e0613){var _0x546615=function(_0x39e0ed){while(--_0x39e0ed){_0x3fff0c['push'](_0x3fff0c['shift']());}};_0x546615(++_0x3e0613);}(_0x568a,0xd5));var _0xa568=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x568a[_0x164eca];return _0x2ce562;};'use strict';var _=require('lodash');var util=require(_0xa568('0x0'));var logger=require('../../config/logger')(_0xa568('0x1'));var moment=require(_0xa568('0x2'));var BPromise=require('bluebird');var rp=require(_0xa568('0x3'));var fs=require('fs');var path=require(_0xa568('0x4'));var rimraf=require('rimraf');var config=require(_0xa568('0x5'));var attributes=require(_0xa568('0x6'));module[_0xa568('0x7')]=function(_0x168496,_0x6c1dec){return _0x168496[_0xa568('0x8')](_0xa568('0x9'),attributes,{'tableName':_0xa568('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xa568('0xb'),'collate':_0xa568('0xc')});};
\ No newline at end of file
+var _0x4b74=['../../config/environment','./mailApplication.attributes','exports','define','MailApplication','mail_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x5147a8,_0x5cfd2f){var _0x35e811=function(_0x378aa9){while(--_0x378aa9){_0x5147a8['push'](_0x5147a8['shift']());}};_0x35e811(++_0x5cfd2f);}(_0x4b74,0x1a8));var _0x44b7=function(_0x46a1ef,_0x1bb39f){_0x46a1ef=_0x46a1ef-0x0;var _0x51abbe=_0x4b74[_0x46a1ef];return _0x51abbe;};'use strict';var _=require(_0x44b7('0x0'));var util=require(_0x44b7('0x1'));var logger=require(_0x44b7('0x2'))(_0x44b7('0x3'));var moment=require('moment');var BPromise=require(_0x44b7('0x4'));var rp=require(_0x44b7('0x5'));var fs=require('fs');var path=require(_0x44b7('0x6'));var rimraf=require(_0x44b7('0x7'));var config=require(_0x44b7('0x8'));var attributes=require(_0x44b7('0x9'));module[_0x44b7('0xa')]=function(_0x4d68e4,_0x38548c){return _0x4d68e4[_0x44b7('0xb')](_0x44b7('0xc'),attributes,{'tableName':_0x44b7('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x44b7('0xe'),'collate':_0x44b7('0xf')});};
\ No newline at end of file
index dbe3fe2..91abacf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x011c=['result','UpdateMailApplication','MailApplication','update','options','attributes','limit','catch','util','moment','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','MailApplication,\x20%s,\x20%s','MailApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message'];(function(_0x34b052,_0x5e6a86){var _0xa1cf5c=function(_0x1b4b2c){while(--_0x1b4b2c){_0x34b052['push'](_0x34b052['shift']());}};_0xa1cf5c(++_0x5e6a86);}(_0x011c,0xf2));var _0xc011=function(_0xb4804f,_0x16748b){_0xb4804f=_0xb4804f-0x0;var _0x3d1108=_0x011c[_0xb4804f];return _0x3d1108;};'use strict';var _=require('lodash');var util=require(_0xc011('0x0'));var moment=require(_0xc011('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc011('0x2'))['db'];var utils=require(_0xc011('0x3'));var logger=require(_0xc011('0x4'))('rpc');var config=require(_0xc011('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xc011('0x6')][_0xc011('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2ef178,_0x481f39,_0xbe4fe6){return new BPromise(function(_0x111c34,_0x557438){return client[_0xc011('0x8')](_0x2ef178,_0xbe4fe6)[_0xc011('0x9')](function(_0x18504c){logger[_0xc011('0xa')](_0xc011('0xb'),_0x481f39,'request\x20sent');logger['debug'](_0xc011('0xc'),_0x481f39,_0xc011('0xd'),JSON[_0xc011('0xe')](_0x18504c));if(_0x18504c['error']){if(_0x18504c['error'][_0xc011('0xf')]===0x1f4){logger[_0xc011('0x10')](_0xc011('0xb'),_0x481f39,_0x18504c[_0xc011('0x10')][_0xc011('0x11')]);return _0x557438(_0x18504c[_0xc011('0x10')][_0xc011('0x11')]);}logger[_0xc011('0x10')](_0xc011('0xb'),_0x481f39,_0x18504c[_0xc011('0x10')][_0xc011('0x11')]);return _0x111c34(_0x18504c[_0xc011('0x10')][_0xc011('0x11')]);}else{logger[_0xc011('0xa')]('MailApplication,\x20%s,\x20%s',_0x481f39,_0xc011('0xd'));_0x111c34(_0x18504c[_0xc011('0x12')][_0xc011('0x11')]);}})['catch'](function(_0x754378){logger[_0xc011('0x10')](_0xc011('0xb'),_0x481f39,_0x754378);_0x557438(_0x754378);});});}exports[_0xc011('0x13')]=function(_0x451ac7){var _0x55d496=this;return new Promise(function(_0x247e19,_0x42802a){return db[_0xc011('0x14')][_0xc011('0x15')](_0x451ac7['body'],{'raw':_0x451ac7['options']?_0x451ac7[_0xc011('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x451ac7['options']?_0x451ac7[_0xc011('0x16')]['where']||null:null,'attributes':_0x451ac7[_0xc011('0x16')]?_0x451ac7[_0xc011('0x16')][_0xc011('0x17')]||null:null,'limit':_0x451ac7['options']?_0x451ac7['options'][_0xc011('0x18')]||null:null})[_0xc011('0x9')](function(_0x2a8a69){logger[_0xc011('0xa')](_0xc011('0x13'),_0x451ac7);logger['debug'](_0xc011('0x13'),_0x451ac7,JSON['stringify'](_0x2a8a69));_0x247e19(_0x2a8a69);})[_0xc011('0x19')](function(_0x1b433b){logger['error']('UpdateMailApplication',_0x1b433b[_0xc011('0x11')],_0x451ac7);_0x42802a(_0x55d496[_0xc011('0x10')](0x1f4,_0x1b433b[_0xc011('0x11')]));});});};
\ No newline at end of file
+var _0x0a4a=['MailApplication','body','options','raw','where','limit','info','UpdateMailApplication','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','MailApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','MailApplication,\x20%s,\x20%s','message','result','catch'];(function(_0x4e7abc,_0x2aeca1){var _0x428796=function(_0xa2c1d){while(--_0xa2c1d){_0x4e7abc['push'](_0x4e7abc['shift']());}};_0x428796(++_0x2aeca1);}(_0x0a4a,0xa8));var _0xa0a4=function(_0xbf82a2,_0x165632){_0xbf82a2=_0xbf82a2-0x0;var _0x224b96=_0x0a4a[_0xbf82a2];return _0x224b96;};'use strict';var _=require('lodash');var util=require(_0xa0a4('0x0'));var moment=require(_0xa0a4('0x1'));var BPromise=require(_0xa0a4('0x2'));var rs=require(_0xa0a4('0x3'));var fs=require('fs');var Redis=require(_0xa0a4('0x4'));var db=require(_0xa0a4('0x5'))['db'];var utils=require(_0xa0a4('0x6'));var logger=require(_0xa0a4('0x7'))('rpc');var config=require(_0xa0a4('0x8'));var jayson=require(_0xa0a4('0x9'));var client=jayson[_0xa0a4('0xa')][_0xa0a4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x531767,_0x1c5fcd,_0x27a2db){return new BPromise(function(_0x17a4be,_0x2f054c){return client[_0xa0a4('0xc')](_0x531767,_0x27a2db)[_0xa0a4('0xd')](function(_0x16aaaf){logger['info']('MailApplication,\x20%s,\x20%s',_0x1c5fcd,_0xa0a4('0xe'));logger[_0xa0a4('0xf')](_0xa0a4('0x10'),_0x1c5fcd,_0xa0a4('0xe'),JSON[_0xa0a4('0x11')](_0x16aaaf));if(_0x16aaaf[_0xa0a4('0x12')]){if(_0x16aaaf[_0xa0a4('0x12')][_0xa0a4('0x13')]===0x1f4){logger[_0xa0a4('0x12')](_0xa0a4('0x14'),_0x1c5fcd,_0x16aaaf[_0xa0a4('0x12')]['message']);return _0x2f054c(_0x16aaaf[_0xa0a4('0x12')][_0xa0a4('0x15')]);}logger[_0xa0a4('0x12')](_0xa0a4('0x14'),_0x1c5fcd,_0x16aaaf[_0xa0a4('0x12')][_0xa0a4('0x15')]);return _0x17a4be(_0x16aaaf[_0xa0a4('0x12')]['message']);}else{logger['info'](_0xa0a4('0x14'),_0x1c5fcd,'request\x20sent');_0x17a4be(_0x16aaaf[_0xa0a4('0x16')][_0xa0a4('0x15')]);}})[_0xa0a4('0x17')](function(_0x41e68d){logger['error'](_0xa0a4('0x14'),_0x1c5fcd,_0x41e68d);_0x2f054c(_0x41e68d);});});}exports['UpdateMailApplication']=function(_0x9af2ee){var _0x2801bf=this;return new Promise(function(_0x93bb59,_0x6bf6a2){return db[_0xa0a4('0x18')]['update'](_0x9af2ee[_0xa0a4('0x19')],{'raw':_0x9af2ee['options']?_0x9af2ee[_0xa0a4('0x1a')][_0xa0a4('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x9af2ee[_0xa0a4('0x1a')]?_0x9af2ee['options'][_0xa0a4('0x1c')]||null:null,'attributes':_0x9af2ee[_0xa0a4('0x1a')]?_0x9af2ee['options']['attributes']||null:null,'limit':_0x9af2ee[_0xa0a4('0x1a')]?_0x9af2ee[_0xa0a4('0x1a')][_0xa0a4('0x1d')]||null:null})[_0xa0a4('0xd')](function(_0x28e6e0){logger[_0xa0a4('0x1e')](_0xa0a4('0x1f'),_0x9af2ee);logger[_0xa0a4('0xf')](_0xa0a4('0x1f'),_0x9af2ee,JSON[_0xa0a4('0x11')](_0x28e6e0));_0x93bb59(_0x28e6e0);})[_0xa0a4('0x17')](function(_0x321500){logger[_0xa0a4('0x12')]('UpdateMailApplication',_0x321500[_0xa0a4('0x15')],_0x9af2ee);_0x6bf6a2(_0x2801bf[_0xa0a4('0x12')](0x1f4,_0x321500[_0xa0a4('0x15')]));});});};
\ No newline at end of file
index 5398cbf..0a2831f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc509=['index','isAuthenticated','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','mail','addTags','put','mailinteraction:update','update','delete','mailinteraction:destroy','destroy','exports','express','Router','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get'];(function(_0x35e15c,_0x454ecb){var _0x2b0c6d=function(_0x44c16b){while(--_0x44c16b){_0x35e15c['push'](_0x35e15c['shift']());}};_0x2b0c6d(++_0x454ecb);}(_0xc509,0x8b));var _0x9c50=function(_0x4d3029,_0x1a4062){_0x4d3029=_0x4d3029-0x0;var _0x3f555e=_0xc509[_0x4d3029];return _0x3f555e;};'use strict';var express=require(_0x9c50('0x0'));var router=express[_0x9c50('0x1')]();var auth=require(_0x9c50('0x2'));var interaction=require(_0x9c50('0x3'));var controller=require(_0x9c50('0x4'));router[_0x9c50('0x5')]('/',auth['isAuthenticated'](),controller[_0x9c50('0x6')]);router[_0x9c50('0x5')]('/describe',auth[_0x9c50('0x7')](),controller[_0x9c50('0x8')]);router[_0x9c50('0x5')](_0x9c50('0x9'),auth['isAuthenticated'](),controller[_0x9c50('0xa')]);router[_0x9c50('0x5')](_0x9c50('0xb'),auth[_0x9c50('0x7')](),controller[_0x9c50('0xc')]);router[_0x9c50('0x5')](_0x9c50('0xd'),auth[_0x9c50('0x7')](),controller[_0x9c50('0xe')]);router[_0x9c50('0xf')]('/',auth[_0x9c50('0x7')](),controller[_0x9c50('0x10')]);router['post']('/:id/messages',auth[_0x9c50('0x7')](),controller[_0x9c50('0x11')]);router[_0x9c50('0xf')](_0x9c50('0x12'),auth[_0x9c50('0x7')](),interaction[_0x9c50('0x13')](_0x9c50('0x14'),'mailinteraction:addtags'),controller[_0x9c50('0x15')]);router[_0x9c50('0x16')](_0x9c50('0x9'),auth[_0x9c50('0x7')](),interaction[_0x9c50('0x13')](_0x9c50('0x14'),_0x9c50('0x17')),controller[_0x9c50('0x18')]);router[_0x9c50('0x19')](_0x9c50('0x9'),auth['isAuthenticated'](),interaction[_0x9c50('0x13')](_0x9c50('0x14'),_0x9c50('0x1a')),controller[_0x9c50('0x1b')]);router[_0x9c50('0x19')](_0x9c50('0x12'),auth[_0x9c50('0x7')](),controller['removeTags']);module[_0x9c50('0x1c')]=router;
\ No newline at end of file
+var _0xb9ce=['update','delete','/:id','tracked','mailinteraction:destroy','removeTags','exports','express','Router','../../components/interaction/service','./mailInteraction.controller','get','/describe','isAuthenticated','describe','show','getMessages','download','post','create','/:id/messages','addMessage','/:id/tags','mail','addTags','mailinteraction:update'];(function(_0x20f288,_0x42b564){var _0x800caf=function(_0x47aa1e){while(--_0x47aa1e){_0x20f288['push'](_0x20f288['shift']());}};_0x800caf(++_0x42b564);}(_0xb9ce,0xbd));var _0xeb9c=function(_0x5bb440,_0xa97022){_0x5bb440=_0x5bb440-0x0;var _0xd2dd3a=_0xb9ce[_0x5bb440];return _0xd2dd3a;};'use strict';var express=require(_0xeb9c('0x0'));var router=express[_0xeb9c('0x1')]();var auth=require('../../components/auth/service');var interaction=require(_0xeb9c('0x2'));var controller=require(_0xeb9c('0x3'));router[_0xeb9c('0x4')]('/',auth['isAuthenticated'](),controller['index']);router[_0xeb9c('0x4')](_0xeb9c('0x5'),auth[_0xeb9c('0x6')](),controller[_0xeb9c('0x7')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xeb9c('0x8')]);router['get']('/:id/messages',auth[_0xeb9c('0x6')](),controller[_0xeb9c('0x9')]);router[_0xeb9c('0x4')]('/:id/download',auth[_0xeb9c('0x6')](),controller[_0xeb9c('0xa')]);router[_0xeb9c('0xb')]('/',auth[_0xeb9c('0x6')](),controller[_0xeb9c('0xc')]);router[_0xeb9c('0xb')](_0xeb9c('0xd'),auth['isAuthenticated'](),controller[_0xeb9c('0xe')]);router['post'](_0xeb9c('0xf'),auth[_0xeb9c('0x6')](),interaction['tracked'](_0xeb9c('0x10'),'mailinteraction:addtags'),controller[_0xeb9c('0x11')]);router['put']('/:id',auth[_0xeb9c('0x6')](),interaction['tracked'](_0xeb9c('0x10'),_0xeb9c('0x12')),controller[_0xeb9c('0x13')]);router[_0xeb9c('0x14')](_0xeb9c('0x15'),auth[_0xeb9c('0x6')](),interaction[_0xeb9c('0x16')]('mail',_0xeb9c('0x17')),controller['destroy']);router[_0xeb9c('0x14')](_0xeb9c('0xf'),auth[_0xeb9c('0x6')](),controller[_0xeb9c('0x18')]);module[_0xeb9c('0x19')]=router;
\ No newline at end of file
index 572d458..1b8cf19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326e=['exports','BOOLEAN','STRING','TEXT','long','DATE','ENUM','out','INTEGER','sequelize'];(function(_0xe54124,_0xb3a578){var _0x3b8480=function(_0x3cb02b){while(--_0x3cb02b){_0xe54124['push'](_0xe54124['shift']());}};_0x3b8480(++_0xb3a578);}(_0x326e,0x1c1));var _0xe326=function(_0x3cdcfa,_0x4f9d79){_0x3cdcfa=_0x3cdcfa-0x0;var _0x5ea3cd=_0x326e[_0x3cdcfa];return _0x5ea3cd;};'use strict';var Sequelize=require(_0xe326('0x0'));var iconv=require('iconv');module[_0xe326('0x1')]={'closed':{'type':Sequelize[_0xe326('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xe326('0x3')]},'secondDisposition':{'type':Sequelize[_0xe326('0x3')]},'thirdDisposition':{'type':Sequelize[_0xe326('0x3')]},'note':{'type':Sequelize[_0xe326('0x3')]},'inReplyTo':{'type':Sequelize[_0xe326('0x3')](0x1fe)},'to':{'type':Sequelize[_0xe326('0x3')]},'cc':{'type':Sequelize[_0xe326('0x4')](_0xe326('0x5'))},'subject':{'type':Sequelize[_0xe326('0x4')]()},'attach':{'type':Sequelize[_0xe326('0x2')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0xe326('0x6')]},'substatus':{'type':Sequelize[_0xe326('0x3')](0x3c)},'substatusAt':{'type':Sequelize[_0xe326('0x6')]},'firstMsgDirection':{'type':Sequelize[_0xe326('0x7')]('in',_0xe326('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xe326('0x6')]},'lastMsgDirection':{'type':Sequelize[_0xe326('0x7')]('in',_0xe326('0x8')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xe326('0x2')],'defaultValue':![]},'queueId':{'type':Sequelize[_0xe326('0x9')]}};
\ No newline at end of file
+var _0xaaef=['ENUM','out','iconv','BOOLEAN','DATE','STRING','TEXT'];(function(_0xfcbf57,_0x4b05fd){var _0x1078fa=function(_0xb65856){while(--_0xb65856){_0xfcbf57['push'](_0xfcbf57['shift']());}};_0x1078fa(++_0x4b05fd);}(_0xaaef,0xa3));var _0xfaae=function(_0x36c28e,_0x1d5dde){_0x36c28e=_0x36c28e-0x0;var _0x5c8522=_0xaaef[_0x36c28e];return _0x5c8522;};'use strict';var Sequelize=require('sequelize');var iconv=require(_0xfaae('0x0'));module['exports']={'closed':{'type':Sequelize[_0xfaae('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xfaae('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xfaae('0x3')]},'thirdDisposition':{'type':Sequelize[_0xfaae('0x3')]},'note':{'type':Sequelize[_0xfaae('0x3')]},'inReplyTo':{'type':Sequelize[_0xfaae('0x3')](0x1fe)},'to':{'type':Sequelize[_0xfaae('0x3')]},'cc':{'type':Sequelize[_0xfaae('0x4')]('long')},'subject':{'type':Sequelize['TEXT']()},'attach':{'type':Sequelize[_0xfaae('0x1')],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize['STRING'](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0xfaae('0x5')]('in',_0xfaae('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xfaae('0x2')]},'lastMsgDirection':{'type':Sequelize[_0xfaae('0x5')]('in',_0xfaae('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xfaae('0x1')],'defaultValue':![]},'queueId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index e34866b..a66163a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e47=['getOptions','mail','query','params','keys','intersection','model','fields','length','includeAll','include','MailInteraction','catch','create','body','destroy','find','addMessage','MailMessage','ids','omit','getMessages','findOne','rawAttributes','filters','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','options','findAll','inlineCss','rows','addTags','spread','Tag','color','emit','mailInteractionTags:save','removeTags','download','unix','toString','join','server','files','tmp','root','attachments','transcript-%d-%s.zip','push','Attachments','Messages','from','get','each','missing.recipient@your.company.com','subject','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','bcc','basename','existsSync','readFileSync','build','message%d.eml','unlinkSync','eml-format','rimraf','zip-dir','moment','path','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../mysqldb','html-entities','redis','defaults','localhost','./mailInteraction.socket','sendStatus','json','offset','undefined','limit','count','set','Content-Range','update','then','status','end','error','stack','name','send','index','fieldName','type','key'];(function(_0x22ad50,_0x456b90){var _0x3e8eb3=function(_0x1343ca){while(--_0x1343ca){_0x22ad50['push'](_0x22ad50['shift']());}};_0x3e8eb3(++_0x456b90);}(_0x8e47,0xc2));var _0x78e4=function(_0x3c442e,_0x4c88ab){_0x3c442e=_0x3c442e-0x0;var _0x42e623=_0x8e47[_0x3c442e];return _0x42e623;};'use strict';var emlformat=require(_0x78e4('0x0'));var rimraf=require(_0x78e4('0x1'));var zipdir=require(_0x78e4('0x2'));var moment=require(_0x78e4('0x3'));var BPromise=require('bluebird');var util=require('util');var path=require(_0x78e4('0x4'));var fs=require('fs');var _=require('lodash');var juice=require('juice');var Redis=require(_0x78e4('0x5'));var interaction=require(_0x78e4('0x6'));var qs=require(_0x78e4('0x7'));var logger=require(_0x78e4('0x8'))(_0x78e4('0x9'));var config=require('../../config/environment');var db=require(_0x78e4('0xa'))['db'];var htmlEntities=require(_0x78e4('0xb'));config[_0x78e4('0xc')]=_[_0x78e4('0xd')](config['redis'],{'host':_0x78e4('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x78e4('0xc')]));require(_0x78e4('0xf'))['register'](socket);function respondWithStatusCode(_0x58e12f,_0x16c2ef){_0x16c2ef=_0x16c2ef||0xcc;return function(_0x271c25){if(_0x271c25){return _0x58e12f[_0x78e4('0x10')](_0x16c2ef);}return _0x58e12f['status'](_0x16c2ef)['end']();};}function respondWithResult(_0x42466d,_0x36e682){_0x36e682=_0x36e682||0xc8;return function(_0x1fea0d){if(_0x1fea0d){return _0x42466d['status'](_0x36e682)[_0x78e4('0x11')](_0x1fea0d);}};}function respondWithFilteredResult(_0x3d148b,_0x2a599a){return function(_0x56b538){if(_0x56b538){var _0xe508ec=typeof _0x2a599a[_0x78e4('0x12')]===_0x78e4('0x13')&&typeof _0x2a599a[_0x78e4('0x14')]==='undefined';var _0x3313a8=_0x56b538[_0x78e4('0x15')];var _0x4a7ba6=_0xe508ec?0x0:_0x2a599a[_0x78e4('0x12')];var _0x2f8aec=_0xe508ec?_0x56b538[_0x78e4('0x15')]:_0x2a599a[_0x78e4('0x12')]+_0x2a599a[_0x78e4('0x14')];var _0x1c58ba;if(_0x2f8aec>=_0x3313a8){_0x2f8aec=_0x3313a8;_0x1c58ba=0xc8;}else{_0x1c58ba=0xce;}_0x3d148b['status'](_0x1c58ba);return _0x3d148b[_0x78e4('0x16')](_0x78e4('0x17'),_0x4a7ba6+'-'+_0x2f8aec+'/'+_0x3313a8)[_0x78e4('0x11')](_0x56b538);}return null;};}function saveUpdates(_0x40ec9b){return function(_0xff0865){if(_0xff0865){return _0xff0865[_0x78e4('0x18')](_0x40ec9b)[_0x78e4('0x19')](function(_0x42e539){return _0x42e539;});}return null;};}function removeEntity(_0x381168){return function(_0x4a23d6){if(_0x4a23d6){return _0x4a23d6['destroy']()['then'](function(){_0x381168[_0x78e4('0x1a')](0xcc)[_0x78e4('0x1b')]();});}};}function handleEntityNotFound(_0x4fc9d3){return function(_0x1eb93b){if(!_0x1eb93b){_0x4fc9d3['sendStatus'](0x194);}return _0x1eb93b;};}function handleError(_0x304802,_0x445726){_0x445726=_0x445726||0x1f4;return function(_0x47423d){logger[_0x78e4('0x1c')](_0x47423d[_0x78e4('0x1d')]);if(_0x47423d[_0x78e4('0x1e')]){delete _0x47423d['name'];}_0x304802['status'](_0x445726)[_0x78e4('0x1f')](_0x47423d);};}exports[_0x78e4('0x20')]=function(_0x4e5185,_0x20c3a1){var _0x1822b4={};var _0x3f4cad=_['map'](db['MailInteraction']['rawAttributes'],function(_0x492e6f){return{'name':_0x492e6f[_0x78e4('0x21')],'type':_0x492e6f[_0x78e4('0x22')][_0x78e4('0x23')]};});_0x1822b4=qs[_0x78e4('0x24')](_0x3f4cad,_0x4e5185);return interaction['findAll'](_0x78e4('0x25'),_0x4e5185[_0x78e4('0x26')],_0x4e5185['user'],_0x1822b4,_0x3f4cad)[_0x78e4('0x19')](respondWithFilteredResult(_0x20c3a1,_0x1822b4))['catch'](handleError(_0x20c3a1,null));};exports['show']=function(_0x2026c0,_0x32d9a5){var _0x47d0ff={'raw':![],'where':{'id':_0x2026c0[_0x78e4('0x27')]['id']}},_0x4b06b6={};_0x4b06b6['model']=_[_0x78e4('0x28')](db['MailInteraction']['rawAttributes']);_0x4b06b6['query']=_[_0x78e4('0x28')](_0x2026c0[_0x78e4('0x26')]);_0x4b06b6['filters']=_[_0x78e4('0x29')](_0x4b06b6[_0x78e4('0x2a')],_0x4b06b6['query']);_0x47d0ff['attributes']=_['intersection'](_0x4b06b6[_0x78e4('0x2a')],qs[_0x78e4('0x2b')](_0x2026c0[_0x78e4('0x26')][_0x78e4('0x2b')]));_0x47d0ff['attributes']=_0x47d0ff['attributes'][_0x78e4('0x2c')]?_0x47d0ff['attributes']:_0x4b06b6[_0x78e4('0x2a')];if(_0x2026c0[_0x78e4('0x26')][_0x78e4('0x2d')]){_0x47d0ff[_0x78e4('0x2e')]=[{'all':!![]}];}_0x47d0ff=_['merge']({},_0x47d0ff,_0x2026c0['options']);return db[_0x78e4('0x2f')]['find'](_0x47d0ff)[_0x78e4('0x19')](handleEntityNotFound(_0x32d9a5,null))[_0x78e4('0x19')](respondWithResult(_0x32d9a5,null))[_0x78e4('0x30')](handleError(_0x32d9a5,null));};exports[_0x78e4('0x31')]=function(_0x4cab8a,_0x21d4fc){return db[_0x78e4('0x2f')]['create'](_0x4cab8a[_0x78e4('0x32')],{})[_0x78e4('0x19')](respondWithResult(_0x21d4fc,0xc9))[_0x78e4('0x30')](handleError(_0x21d4fc,null));};exports[_0x78e4('0x18')]=function(_0x1e3f71,_0x1977d8){if(_0x1e3f71[_0x78e4('0x32')]['id']){delete _0x1e3f71['body']['id'];}return db[_0x78e4('0x2f')]['find']({'where':{'id':_0x1e3f71[_0x78e4('0x27')]['id']}})[_0x78e4('0x19')](handleEntityNotFound(_0x1977d8,null))[_0x78e4('0x19')](saveUpdates(_0x1e3f71[_0x78e4('0x32')],null))[_0x78e4('0x19')](respondWithResult(_0x1977d8,null))[_0x78e4('0x30')](handleError(_0x1977d8,null));};exports[_0x78e4('0x33')]=function(_0x26eaa4,_0x4a6051){return db['MailInteraction'][_0x78e4('0x34')]({'where':{'id':_0x26eaa4[_0x78e4('0x27')]['id']}})['then'](handleEntityNotFound(_0x4a6051,null))[_0x78e4('0x19')](removeEntity(_0x4a6051,null))[_0x78e4('0x30')](handleError(_0x4a6051,null));};exports['describe']=function(_0xe06ce0,_0x44f32f){return db[_0x78e4('0x2f')]['describe']()['then'](respondWithResult(_0x44f32f,null))[_0x78e4('0x30')](handleError(_0x44f32f,null));};exports[_0x78e4('0x35')]=function(_0x5ec3dd,_0x3af045){return db[_0x78e4('0x36')][_0x78e4('0x34')]({'where':{'id':_0x5ec3dd['params']['id']}})[_0x78e4('0x19')](handleEntityNotFound(_0x3af045,null))[_0x78e4('0x19')](function(_0x590297){if(_0x590297){return _0x590297[_0x78e4('0x35')](_0x5ec3dd[_0x78e4('0x32')][_0x78e4('0x37')],_[_0x78e4('0x38')](_0x5ec3dd['body'],[_0x78e4('0x37'),'id'])||{});}})[_0x78e4('0x19')](respondWithResult(_0x3af045,null))[_0x78e4('0x30')](handleError(_0x3af045,null));};exports[_0x78e4('0x39')]=function(_0x4e0b36,_0x5e4568){var _0x3bf7ba={'raw':![],'where':{}};var _0x1162aa={};var _0x599c1f={'count':0x0,'rows':[]};return db[_0x78e4('0x2f')][_0x78e4('0x3a')]({'where':{'id':_0x4e0b36[_0x78e4('0x27')]['id']}})[_0x78e4('0x19')](handleEntityNotFound(_0x5e4568,null))[_0x78e4('0x19')](function(_0x4cfb56){if(_0x4cfb56){_0x1162aa[_0x78e4('0x2a')]=_[_0x78e4('0x28')](db[_0x78e4('0x36')][_0x78e4('0x3b')]);_0x1162aa[_0x78e4('0x26')]=_['keys'](_0x4e0b36[_0x78e4('0x26')]);_0x1162aa[_0x78e4('0x3c')]=_['intersection'](_0x1162aa['model'],_0x1162aa[_0x78e4('0x26')]);_0x3bf7ba['attributes']=_[_0x78e4('0x29')](_0x1162aa[_0x78e4('0x2a')],qs[_0x78e4('0x2b')](_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x2b')]));_0x3bf7ba[_0x78e4('0x3d')]=_0x3bf7ba['attributes']['length']?_0x3bf7ba['attributes']:_0x1162aa[_0x78e4('0x2a')];if(!_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x3e')](_0x78e4('0x3f'))){_0x3bf7ba['limit']=qs[_0x78e4('0x14')](_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x14')]);_0x3bf7ba[_0x78e4('0x12')]=qs['offset'](_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x12')]);}_0x3bf7ba[_0x78e4('0x40')]=qs[_0x78e4('0x41')](_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x41')]);_0x3bf7ba[_0x78e4('0x42')]=qs[_0x78e4('0x3c')](_[_0x78e4('0x43')](_0x4e0b36[_0x78e4('0x26')],_0x1162aa[_0x78e4('0x3c')]));_0x3bf7ba['where']['MailInteractionId']=_0x4cfb56['id'];if(_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x44')]){_0x3bf7ba[_0x78e4('0x42')]=_[_0x78e4('0x45')](_0x3bf7ba[_0x78e4('0x42')],{'$or':_[_0x78e4('0x46')](_0x3bf7ba[_0x78e4('0x3d')],function(_0x162a06){var _0x1518cc={};_0x1518cc[_0x162a06]={'$like':'%'+_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x44')]+'%'};return _0x1518cc;})});}if(_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x47')]){var _0x14f776=_0x4e0b36[_0x78e4('0x26')]['$gte'][_0x78e4('0x48')](',');var _0x32ea0c={};_0x32ea0c[_0x14f776[0x0]]={'$gte':moment(_0x14f776[0x1])[_0x78e4('0x49')](_0x78e4('0x4a'))};_0x3bf7ba[_0x78e4('0x42')]=_[_0x78e4('0x45')](_0x3bf7ba[_0x78e4('0x42')],_0x32ea0c);}_0x3bf7ba=_[_0x78e4('0x45')]({},_0x3bf7ba,_0x4e0b36[_0x78e4('0x4b')]);return db[_0x78e4('0x36')]['count']({'where':_0x3bf7ba[_0x78e4('0x42')]})['then'](function(_0x411105){_0x599c1f[_0x78e4('0x15')]=_0x411105;if(_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x2d')]){_0x3bf7ba[_0x78e4('0x2e')]=[{'all':!![]}];}return db[_0x78e4('0x36')][_0x78e4('0x4c')](_0x3bf7ba);})['then'](function(_0x431a72){if(_0x4e0b36[_0x78e4('0x26')][_0x78e4('0x4d')]==='true'){for(var _0x3146d1=0x0;_0x3146d1<_0x431a72[_0x78e4('0x2c')];_0x3146d1++){_0x431a72[_0x3146d1][_0x78e4('0x32')]=juice(_0x431a72[_0x3146d1][_0x78e4('0x32')]);}}_0x599c1f[_0x78e4('0x4e')]=_0x431a72;return _0x599c1f;});}})[_0x78e4('0x19')](respondWithFilteredResult(_0x5e4568,_0x3bf7ba))[_0x78e4('0x30')](handleError(_0x5e4568,null));};exports[_0x78e4('0x4f')]=function(_0xe37933,_0x1e62e6){return db[_0x78e4('0x2f')][_0x78e4('0x34')]({'where':{'id':_0xe37933['params']['id']}})[_0x78e4('0x19')](handleEntityNotFound(_0x1e62e6,null))[_0x78e4('0x19')](function(_0x1cbf75){if(_0x1cbf75){return _0x1cbf75['setTags'](_0xe37933['body'][_0x78e4('0x37')],_[_0x78e4('0x38')](_0xe37933[_0x78e4('0x32')],[_0x78e4('0x37'),'id'])||{})[_0x78e4('0x50')](function(){return db[_0x78e4('0x51')][_0x78e4('0x4c')]({'attributes':['id','name',_0x78e4('0x52')],'where':{'id':_0xe37933[_0x78e4('0x32')]['ids']}});})['then'](function(_0x54f86b){socket[_0x78e4('0x53')](_0x78e4('0x54'),{'id':Number(_0xe37933['params']['id']),'tags':_0x54f86b||[]});return{'id':Number(_0xe37933[_0x78e4('0x27')]['id']),'tags':_0x54f86b||[]};});}})[_0x78e4('0x19')](respondWithResult(_0x1e62e6,null))[_0x78e4('0x30')](handleError(_0x1e62e6,null));};exports[_0x78e4('0x55')]=function(_0x1b776f,_0x5b79cd){return db['MailInteraction']['find']({'where':{'id':_0x1b776f[_0x78e4('0x27')]['id']}})['then'](handleEntityNotFound(_0x5b79cd,null))[_0x78e4('0x19')](function(_0x5a2413){if(_0x5a2413){return _0x5a2413[_0x78e4('0x55')](_0x1b776f[_0x78e4('0x26')]['ids']);}})['then'](respondWithStatusCode(_0x5b79cd,null))[_0x78e4('0x30')](handleError(_0x5b79cd,null));};exports[_0x78e4('0x56')]=function(_0x21501a,_0x4e0cf9){var _0x50c699=moment()[_0x78e4('0x57')]()[_0x78e4('0x58')]();var _0xa42f0f=path[_0x78e4('0x59')](config['root'],_0x78e4('0x5a'),_0x78e4('0x5b'),_0x78e4('0x5c'));var _0x1520e5=path[_0x78e4('0x59')](config[_0x78e4('0x5d')],'server',_0x78e4('0x5b'),_0x78e4('0x5e'));var _0x12e53b=path['join'](_0xa42f0f,_0x50c699);var _0x157380=util[_0x78e4('0x49')](_0x78e4('0x5f'),_0x21501a['params']['id'],_0x50c699);var _0x4c70ff=path[_0x78e4('0x59')](_0xa42f0f,_0x157380);var _0x288552=[];if(_0x21501a[_0x78e4('0x26')][_0x78e4('0x5e')]){_0x288552[_0x78e4('0x60')]({'model':db['Attachment'],'as':_0x78e4('0x61'),'raw':!![]});}var _0x17a0f5=[{'model':db[_0x78e4('0x36')],'as':_0x78e4('0x62'),'attributes':['id','body',_0x78e4('0x63'),'to','cc','bcc','subject','createdAt'],'where':{'secret':![]},'order':qs[_0x78e4('0x41')]('id'),'include':_0x288552}];return db['MailInteraction'][_0x78e4('0x34')]({'where':{'id':_0x21501a[_0x78e4('0x27')]['id']},'include':_0x17a0f5})[_0x78e4('0x19')](handleEntityNotFound(_0x4e0cf9,null))[_0x78e4('0x19')](function(_0x420dbb){if(_0x420dbb&&_0x420dbb['Messages']){var _0x397ece=_0x420dbb[_0x78e4('0x64')]({'plain':!![]});fs['mkdirSync'](_0x12e53b);return BPromise[_0x78e4('0x65')](_0x397ece[_0x78e4('0x62')],function(_0x5c76ae,_0x5bd1cb){var _0x598bf6={'from':_0x5c76ae[_0x78e4('0x63')],'to':_0x5c76ae['to']||_0x78e4('0x66'),'subject':_0x5c76ae[_0x78e4('0x67')],'html':htmlEntities[_0x78e4('0x68')](_0x5c76ae[_0x78e4('0x32')]),'headers':{'Date':moment(_0x5c76ae['createdAt'])['format'](_0x78e4('0x69'))},'attachments':[]};if(_0x5c76ae['cc']){_0x598bf6[_0x78e4('0x6a')]['Cc']=_0x5c76ae['cc'];}if(_0x5c76ae['bcc']){_0x598bf6['headers'][_0x78e4('0x6b')]=_0x5c76ae[_0x78e4('0x6c')];}return new BPromise(function(_0x5893ef,_0x52867c){if(_0x5c76ae['Attachments']){for(var _0x2aa033=0x0;_0x2aa033<_0x5c76ae[_0x78e4('0x61')]['length'];_0x2aa033++){var _0x51a01a=_0x5c76ae[_0x78e4('0x61')][_0x2aa033];var _0x490470=path[_0x78e4('0x59')](_0x1520e5,_0x51a01a[_0x78e4('0x6d')]);if(fs[_0x78e4('0x6e')](_0x490470)){_0x598bf6[_0x78e4('0x5e')][_0x78e4('0x60')]({'name':_0x51a01a[_0x78e4('0x1e')],'contentType':_0x51a01a['type'],'data':fs[_0x78e4('0x6f')](_0x490470)});}}}emlformat[_0x78e4('0x70')](_0x598bf6,function(_0x226042,_0x102763){if(_0x226042)return _0x52867c(_0x226042);fs['writeFileSync'](path[_0x78e4('0x59')](_0x12e53b,util[_0x78e4('0x49')](_0x78e4('0x71'),_0x5bd1cb)),_0x102763);return _0x5893ef(_0x102763);});});})[_0x78e4('0x19')](function(){return new BPromise(function(_0x147115,_0x2242df){zipdir(_0x12e53b,{'saveTo':_0x4c70ff},function(_0x4835eb,_0x2ec722){if(_0x4835eb)return _0x2242df(_0x4835eb);return _0x147115(_0x2ec722);});})['then'](function(){return new BPromise(function(_0x5835b8,_0x4d6ba5){rimraf(_0x12e53b,function(_0x38c6ca){if(_0x38c6ca)_0x4d6ba5(_0x38c6ca);return _0x5835b8();});});})[_0x78e4('0x19')](function(){return _0x4e0cf9[_0x78e4('0x56')](_0x4c70ff,_0x157380,function(_0x28de4a){if(!_0x28de4a)fs[_0x78e4('0x72')](_0x4c70ff);});});});}else{return _0x4e0cf9[_0x78e4('0x10')](0xc8);}})[_0x78e4('0x30')](handleError(_0x4e0cf9,null));};
\ No newline at end of file
+var _0x5557=['addMessage','MailMessage','ids','findOne','hasOwnProperty','nolimit','order','where','MailInteractionId','filter','$gte','YYYY-MM-DD\x20HH:mm:ss','merge','options','findAll','inlineCss','true','rows','addTags','setTags','omit','spread','Tag','color','mailInteractionTags:save','removeTags','download','unix','join','server','files','attachments','format','push','Attachment','Attachments','from','bcc','subject','createdAt','sort','Messages','each','missing.recipient@your.company.com','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','basename','existsSync','readFileSync','build','message%d.eml','unlinkSync','eml-format','rimraf','moment','bluebird','lodash','juice','ioredis','../../components/interaction/service','../../config/logger','html-entities','redis','defaults','localhost','socket.io-emitter','./mailInteraction.socket','register','sendStatus','end','status','json','offset','undefined','count','limit','set','update','then','error','stack','name','send','index','map','MailInteraction','rawAttributes','fieldName','type','key','mail','query','user','catch','params','model','keys','filters','intersection','attributes','length','includeAll','include','find','create','body','destroy','describe'];(function(_0x4451a4,_0x3fab8f){var _0xe04849=function(_0x1381f3){while(--_0x1381f3){_0x4451a4['push'](_0x4451a4['shift']());}};_0xe04849(++_0x3fab8f);}(_0x5557,0x180));var _0x7555=function(_0x833417,_0x2ea2f9){_0x833417=_0x833417-0x0;var _0x388395=_0x5557[_0x833417];return _0x388395;};'use strict';var emlformat=require(_0x7555('0x0'));var rimraf=require(_0x7555('0x1'));var zipdir=require('zip-dir');var moment=require(_0x7555('0x2'));var BPromise=require(_0x7555('0x3'));var util=require('util');var path=require('path');var fs=require('fs');var _=require(_0x7555('0x4'));var juice=require(_0x7555('0x5'));var Redis=require(_0x7555('0x6'));var interaction=require(_0x7555('0x7'));var qs=require('../../components/parsers/qs');var logger=require(_0x7555('0x8'))('api');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var htmlEntities=require(_0x7555('0x9'));config[_0x7555('0xa')]=_[_0x7555('0xb')](config[_0x7555('0xa')],{'host':_0x7555('0xc'),'port':0x18eb});var socket=require(_0x7555('0xd'))(new Redis(config['redis']));require(_0x7555('0xe'))[_0x7555('0xf')](socket);function respondWithStatusCode(_0xb969f2,_0x25fa2a){_0x25fa2a=_0x25fa2a||0xcc;return function(_0x48978a){if(_0x48978a){return _0xb969f2[_0x7555('0x10')](_0x25fa2a);}return _0xb969f2['status'](_0x25fa2a)[_0x7555('0x11')]();};}function respondWithResult(_0x5df8d2,_0x298706){_0x298706=_0x298706||0xc8;return function(_0x511ffc){if(_0x511ffc){return _0x5df8d2[_0x7555('0x12')](_0x298706)[_0x7555('0x13')](_0x511ffc);}};}function respondWithFilteredResult(_0xd37b9b,_0x3845ff){return function(_0x19f88a){if(_0x19f88a){var _0x3ed480=typeof _0x3845ff[_0x7555('0x14')]===_0x7555('0x15')&&typeof _0x3845ff['limit']===_0x7555('0x15');var _0x174988=_0x19f88a[_0x7555('0x16')];var _0x18ff04=_0x3ed480?0x0:_0x3845ff[_0x7555('0x14')];var _0x408ed5=_0x3ed480?_0x19f88a['count']:_0x3845ff[_0x7555('0x14')]+_0x3845ff[_0x7555('0x17')];var _0x769088;if(_0x408ed5>=_0x174988){_0x408ed5=_0x174988;_0x769088=0xc8;}else{_0x769088=0xce;}_0xd37b9b[_0x7555('0x12')](_0x769088);return _0xd37b9b[_0x7555('0x18')]('Content-Range',_0x18ff04+'-'+_0x408ed5+'/'+_0x174988)[_0x7555('0x13')](_0x19f88a);}return null;};}function saveUpdates(_0x2f7477){return function(_0x950e6){if(_0x950e6){return _0x950e6[_0x7555('0x19')](_0x2f7477)[_0x7555('0x1a')](function(_0x206182){return _0x206182;});}return null;};}function removeEntity(_0x1dfeaa){return function(_0x3b38ed){if(_0x3b38ed){return _0x3b38ed['destroy']()[_0x7555('0x1a')](function(){_0x1dfeaa['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ae656){return function(_0x11edb8){if(!_0x11edb8){_0x4ae656[_0x7555('0x10')](0x194);}return _0x11edb8;};}function handleError(_0x3eca38,_0x3ab306){_0x3ab306=_0x3ab306||0x1f4;return function(_0x4c43d2){logger[_0x7555('0x1b')](_0x4c43d2[_0x7555('0x1c')]);if(_0x4c43d2[_0x7555('0x1d')]){delete _0x4c43d2[_0x7555('0x1d')];}_0x3eca38['status'](_0x3ab306)[_0x7555('0x1e')](_0x4c43d2);};}exports[_0x7555('0x1f')]=function(_0x583cde,_0x236053){var _0xe1c68c={};var _0x428286=_[_0x7555('0x20')](db[_0x7555('0x21')][_0x7555('0x22')],function(_0x22f14a){return{'name':_0x22f14a[_0x7555('0x23')],'type':_0x22f14a[_0x7555('0x24')][_0x7555('0x25')]};});_0xe1c68c=qs['getOptions'](_0x428286,_0x583cde);return interaction['findAll'](_0x7555('0x26'),_0x583cde[_0x7555('0x27')],_0x583cde[_0x7555('0x28')],_0xe1c68c,_0x428286)[_0x7555('0x1a')](respondWithFilteredResult(_0x236053,_0xe1c68c))[_0x7555('0x29')](handleError(_0x236053,null));};exports['show']=function(_0x31f6e9,_0x330dc4){var _0x10df58={'raw':![],'where':{'id':_0x31f6e9[_0x7555('0x2a')]['id']}},_0xb1d720={};_0xb1d720[_0x7555('0x2b')]=_[_0x7555('0x2c')](db['MailInteraction'][_0x7555('0x22')]);_0xb1d720[_0x7555('0x27')]=_[_0x7555('0x2c')](_0x31f6e9['query']);_0xb1d720[_0x7555('0x2d')]=_[_0x7555('0x2e')](_0xb1d720[_0x7555('0x2b')],_0xb1d720[_0x7555('0x27')]);_0x10df58[_0x7555('0x2f')]=_[_0x7555('0x2e')](_0xb1d720[_0x7555('0x2b')],qs['fields'](_0x31f6e9[_0x7555('0x27')]['fields']));_0x10df58[_0x7555('0x2f')]=_0x10df58[_0x7555('0x2f')][_0x7555('0x30')]?_0x10df58[_0x7555('0x2f')]:_0xb1d720[_0x7555('0x2b')];if(_0x31f6e9['query'][_0x7555('0x31')]){_0x10df58[_0x7555('0x32')]=[{'all':!![]}];}_0x10df58=_['merge']({},_0x10df58,_0x31f6e9['options']);return db[_0x7555('0x21')][_0x7555('0x33')](_0x10df58)[_0x7555('0x1a')](handleEntityNotFound(_0x330dc4,null))[_0x7555('0x1a')](respondWithResult(_0x330dc4,null))['catch'](handleError(_0x330dc4,null));};exports[_0x7555('0x34')]=function(_0x44557e,_0x37abfa){return db['MailInteraction'][_0x7555('0x34')](_0x44557e[_0x7555('0x35')],{})['then'](respondWithResult(_0x37abfa,0xc9))[_0x7555('0x29')](handleError(_0x37abfa,null));};exports[_0x7555('0x19')]=function(_0x33820e,_0xca131e){if(_0x33820e['body']['id']){delete _0x33820e[_0x7555('0x35')]['id'];}return db[_0x7555('0x21')][_0x7555('0x33')]({'where':{'id':_0x33820e[_0x7555('0x2a')]['id']}})[_0x7555('0x1a')](handleEntityNotFound(_0xca131e,null))[_0x7555('0x1a')](saveUpdates(_0x33820e[_0x7555('0x35')],null))[_0x7555('0x1a')](respondWithResult(_0xca131e,null))[_0x7555('0x29')](handleError(_0xca131e,null));};exports[_0x7555('0x36')]=function(_0x4dfc94,_0xf8b3ed){return db[_0x7555('0x21')]['find']({'where':{'id':_0x4dfc94[_0x7555('0x2a')]['id']}})[_0x7555('0x1a')](handleEntityNotFound(_0xf8b3ed,null))['then'](removeEntity(_0xf8b3ed,null))[_0x7555('0x29')](handleError(_0xf8b3ed,null));};exports[_0x7555('0x37')]=function(_0x1f42fc,_0x3a68a0){return db['MailInteraction'][_0x7555('0x37')]()['then'](respondWithResult(_0x3a68a0,null))['catch'](handleError(_0x3a68a0,null));};exports[_0x7555('0x38')]=function(_0x553604,_0x486aca){return db[_0x7555('0x39')]['find']({'where':{'id':_0x553604['params']['id']}})[_0x7555('0x1a')](handleEntityNotFound(_0x486aca,null))['then'](function(_0x53feac){if(_0x53feac){return _0x53feac['addMessage'](_0x553604['body'][_0x7555('0x3a')],_['omit'](_0x553604[_0x7555('0x35')],['ids','id'])||{});}})['then'](respondWithResult(_0x486aca,null))[_0x7555('0x29')](handleError(_0x486aca,null));};exports['getMessages']=function(_0xe5a318,_0x5a474d){var _0x24562c={'raw':![],'where':{}};var _0x191acd={};var _0x32272f={'count':0x0,'rows':[]};return db[_0x7555('0x21')][_0x7555('0x3b')]({'where':{'id':_0xe5a318[_0x7555('0x2a')]['id']}})[_0x7555('0x1a')](handleEntityNotFound(_0x5a474d,null))[_0x7555('0x1a')](function(_0x2db317){if(_0x2db317){_0x191acd['model']=_[_0x7555('0x2c')](db[_0x7555('0x39')]['rawAttributes']);_0x191acd[_0x7555('0x27')]=_['keys'](_0xe5a318[_0x7555('0x27')]);_0x191acd['filters']=_[_0x7555('0x2e')](_0x191acd[_0x7555('0x2b')],_0x191acd['query']);_0x24562c[_0x7555('0x2f')]=_[_0x7555('0x2e')](_0x191acd['model'],qs['fields'](_0xe5a318['query']['fields']));_0x24562c[_0x7555('0x2f')]=_0x24562c[_0x7555('0x2f')][_0x7555('0x30')]?_0x24562c[_0x7555('0x2f')]:_0x191acd[_0x7555('0x2b')];if(!_0xe5a318['query'][_0x7555('0x3c')](_0x7555('0x3d'))){_0x24562c['limit']=qs['limit'](_0xe5a318[_0x7555('0x27')][_0x7555('0x17')]);_0x24562c[_0x7555('0x14')]=qs[_0x7555('0x14')](_0xe5a318[_0x7555('0x27')][_0x7555('0x14')]);}_0x24562c[_0x7555('0x3e')]=qs['sort'](_0xe5a318[_0x7555('0x27')]['sort']);_0x24562c[_0x7555('0x3f')]=qs[_0x7555('0x2d')](_['pick'](_0xe5a318['query'],_0x191acd['filters']));_0x24562c[_0x7555('0x3f')][_0x7555('0x40')]=_0x2db317['id'];if(_0xe5a318[_0x7555('0x27')][_0x7555('0x41')]){_0x24562c[_0x7555('0x3f')]=_['merge'](_0x24562c[_0x7555('0x3f')],{'$or':_[_0x7555('0x20')](_0x24562c[_0x7555('0x2f')],function(_0x37bdc8){var _0x19f0a8={};_0x19f0a8[_0x37bdc8]={'$like':'%'+_0xe5a318[_0x7555('0x27')]['filter']+'%'};return _0x19f0a8;})});}if(_0xe5a318[_0x7555('0x27')][_0x7555('0x42')]){var _0x246afa=_0xe5a318[_0x7555('0x27')]['$gte']['split'](',');var _0x1fa6d7={};_0x1fa6d7[_0x246afa[0x0]]={'$gte':moment(_0x246afa[0x1])['format'](_0x7555('0x43'))};_0x24562c[_0x7555('0x3f')]=_[_0x7555('0x44')](_0x24562c['where'],_0x1fa6d7);}_0x24562c=_[_0x7555('0x44')]({},_0x24562c,_0xe5a318[_0x7555('0x45')]);return db[_0x7555('0x39')][_0x7555('0x16')]({'where':_0x24562c[_0x7555('0x3f')]})[_0x7555('0x1a')](function(_0x408dfa){_0x32272f[_0x7555('0x16')]=_0x408dfa;if(_0xe5a318[_0x7555('0x27')][_0x7555('0x31')]){_0x24562c[_0x7555('0x32')]=[{'all':!![]}];}return db[_0x7555('0x39')][_0x7555('0x46')](_0x24562c);})[_0x7555('0x1a')](function(_0x38299e){if(_0xe5a318[_0x7555('0x27')][_0x7555('0x47')]===_0x7555('0x48')){for(var _0x5462ab=0x0;_0x5462ab<_0x38299e[_0x7555('0x30')];_0x5462ab++){_0x38299e[_0x5462ab][_0x7555('0x35')]=juice(_0x38299e[_0x5462ab]['body']);}}_0x32272f[_0x7555('0x49')]=_0x38299e;return _0x32272f;});}})['then'](respondWithFilteredResult(_0x5a474d,_0x24562c))[_0x7555('0x29')](handleError(_0x5a474d,null));};exports[_0x7555('0x4a')]=function(_0x542201,_0x24eba2){return db[_0x7555('0x21')][_0x7555('0x33')]({'where':{'id':_0x542201[_0x7555('0x2a')]['id']}})[_0x7555('0x1a')](handleEntityNotFound(_0x24eba2,null))['then'](function(_0x1a3839){if(_0x1a3839){return _0x1a3839[_0x7555('0x4b')](_0x542201[_0x7555('0x35')][_0x7555('0x3a')],_[_0x7555('0x4c')](_0x542201[_0x7555('0x35')],[_0x7555('0x3a'),'id'])||{})[_0x7555('0x4d')](function(){return db[_0x7555('0x4e')][_0x7555('0x46')]({'attributes':['id','name',_0x7555('0x4f')],'where':{'id':_0x542201[_0x7555('0x35')][_0x7555('0x3a')]}});})[_0x7555('0x1a')](function(_0x5001b6){socket['emit'](_0x7555('0x50'),{'id':Number(_0x542201[_0x7555('0x2a')]['id']),'tags':_0x5001b6||[]});return{'id':Number(_0x542201[_0x7555('0x2a')]['id']),'tags':_0x5001b6||[]};});}})[_0x7555('0x1a')](respondWithResult(_0x24eba2,null))[_0x7555('0x29')](handleError(_0x24eba2,null));};exports['removeTags']=function(_0x1162bd,_0x23d328){return db[_0x7555('0x21')][_0x7555('0x33')]({'where':{'id':_0x1162bd['params']['id']}})[_0x7555('0x1a')](handleEntityNotFound(_0x23d328,null))[_0x7555('0x1a')](function(_0x3a6b52){if(_0x3a6b52){return _0x3a6b52[_0x7555('0x51')](_0x1162bd[_0x7555('0x27')]['ids']);}})[_0x7555('0x1a')](respondWithStatusCode(_0x23d328,null))[_0x7555('0x29')](handleError(_0x23d328,null));};exports[_0x7555('0x52')]=function(_0x548854,_0x3ba720){var _0x37ee77=moment()[_0x7555('0x53')]()['toString']();var _0x2634aa=path[_0x7555('0x54')](config['root'],_0x7555('0x55'),_0x7555('0x56'),'tmp');var _0x3e46bf=path[_0x7555('0x54')](config['root'],_0x7555('0x55'),_0x7555('0x56'),_0x7555('0x57'));var _0x401725=path[_0x7555('0x54')](_0x2634aa,_0x37ee77);var _0x596d52=util[_0x7555('0x58')]('transcript-%d-%s.zip',_0x548854[_0x7555('0x2a')]['id'],_0x37ee77);var _0x41f6a3=path['join'](_0x2634aa,_0x596d52);var _0xddcef0=[];if(_0x548854[_0x7555('0x27')][_0x7555('0x57')]){_0xddcef0[_0x7555('0x59')]({'model':db[_0x7555('0x5a')],'as':_0x7555('0x5b'),'raw':!![]});}var _0x5e9fd7=[{'model':db['MailMessage'],'as':'Messages','attributes':['id',_0x7555('0x35'),_0x7555('0x5c'),'to','cc',_0x7555('0x5d'),_0x7555('0x5e'),_0x7555('0x5f')],'where':{'secret':![]},'order':qs[_0x7555('0x60')]('id'),'include':_0xddcef0}];return db['MailInteraction'][_0x7555('0x33')]({'where':{'id':_0x548854[_0x7555('0x2a')]['id']},'include':_0x5e9fd7})[_0x7555('0x1a')](handleEntityNotFound(_0x3ba720,null))[_0x7555('0x1a')](function(_0x408162){if(_0x408162&&_0x408162[_0x7555('0x61')]){var _0x1d15e0=_0x408162['get']({'plain':!![]});fs['mkdirSync'](_0x401725);return BPromise[_0x7555('0x62')](_0x1d15e0['Messages'],function(_0x4109bb,_0x16fe23){var _0x2e6a1f={'from':_0x4109bb[_0x7555('0x5c')],'to':_0x4109bb['to']||_0x7555('0x63'),'subject':_0x4109bb[_0x7555('0x5e')],'html':htmlEntities[_0x7555('0x64')](_0x4109bb[_0x7555('0x35')]),'headers':{'Date':moment(_0x4109bb[_0x7555('0x5f')])[_0x7555('0x58')](_0x7555('0x65'))},'attachments':[]};if(_0x4109bb['cc']){_0x2e6a1f[_0x7555('0x66')]['Cc']=_0x4109bb['cc'];}if(_0x4109bb[_0x7555('0x5d')]){_0x2e6a1f[_0x7555('0x66')][_0x7555('0x67')]=_0x4109bb[_0x7555('0x5d')];}return new BPromise(function(_0xe0c0a9,_0x161bb9){if(_0x4109bb['Attachments']){for(var _0x5b2d9f=0x0;_0x5b2d9f<_0x4109bb['Attachments'][_0x7555('0x30')];_0x5b2d9f++){var _0x2a3056=_0x4109bb[_0x7555('0x5b')][_0x5b2d9f];var _0x27feaa=path['join'](_0x3e46bf,_0x2a3056[_0x7555('0x68')]);if(fs[_0x7555('0x69')](_0x27feaa)){_0x2e6a1f['attachments'][_0x7555('0x59')]({'name':_0x2a3056[_0x7555('0x1d')],'contentType':_0x2a3056['type'],'data':fs[_0x7555('0x6a')](_0x27feaa)});}}}emlformat[_0x7555('0x6b')](_0x2e6a1f,function(_0x3eea3e,_0x31447a){if(_0x3eea3e)return _0x161bb9(_0x3eea3e);fs['writeFileSync'](path[_0x7555('0x54')](_0x401725,util['format'](_0x7555('0x6c'),_0x16fe23)),_0x31447a);return _0xe0c0a9(_0x31447a);});});})['then'](function(){return new BPromise(function(_0x21e97d,_0x1b1cda){zipdir(_0x401725,{'saveTo':_0x41f6a3},function(_0x509041,_0xd9b1ee){if(_0x509041)return _0x1b1cda(_0x509041);return _0x21e97d(_0xd9b1ee);});})['then'](function(){return new BPromise(function(_0xf69a85,_0x22474d){rimraf(_0x401725,function(_0x1e5b10){if(_0x1e5b10)_0x22474d(_0x1e5b10);return _0xf69a85();});});})[_0x7555('0x1a')](function(){return _0x3ba720['download'](_0x41f6a3,_0x596d52,function(_0x5bf000){if(!_0x5bf000)fs[_0x7555('0x6d')](_0x41f6a3);});});});}else{return _0x3ba720[_0x7555('0x10')](0xc8);}})[_0x7555('0x29')](handleError(_0x3ba720,null));};
\ No newline at end of file
index c7133d9..c872e0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf6f=['getUsers','setDataValue','Users','map','findAll','then','unreadMessages','length','emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailMessage','save','remove'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xbf6f,0x193));var _0xfbf6=function(_0x4fa063,_0x555bd4){_0x4fa063=_0x4fa063-0x0;var _0x2f574d=_0xbf6f[_0x4fa063];return _0x2f574d;};'use strict';var EventEmitter=require(_0xfbf6('0x0'));var MailInteraction=require(_0xfbf6('0x1'))['db']['MailInteraction'];var MailMessage=require(_0xfbf6('0x1'))['db'][_0xfbf6('0x2')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xfbf6('0x3'),'afterUpdate':'update','afterDestroy':_0xfbf6('0x4')};function emitEvent(_0x11e61d){return function(_0x5cfc03,_0x406482,_0x343eed){_0x5cfc03[_0xfbf6('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x5a7212){_0x5cfc03[_0xfbf6('0x6')](_0xfbf6('0x7'),_0x5a7212[_0xfbf6('0x8')](function(_0x1b63ee){return{'id':_0x1b63ee['id']};}));return MailMessage[_0xfbf6('0x9')]({'where':{'MailInteractionId':_0x5cfc03['id'],'direction':'in','read':![]},'raw':!![]});})[_0xfbf6('0xa')](function(_0x3e8091){_0x5cfc03[_0xfbf6('0x6')](_0xfbf6('0xb'),_0x3e8091[_0xfbf6('0xc')]);MailInteractionEvents[_0xfbf6('0xd')](_0x11e61d+':'+_0x5cfc03['id'],_0x5cfc03);MailInteractionEvents[_0xfbf6('0xd')](_0x11e61d,_0x5cfc03);_0x343eed(null);})['catch'](_0x343eed(null));};}for(var e in events){if(events[_0xfbf6('0xe')](e)){var event=events[e];MailInteraction[_0xfbf6('0xf')](e,emitEvent(event));}}module[_0xfbf6('0x10')]=MailInteractionEvents;
\ No newline at end of file
+var _0x9a6b=['unreadMessages','length','emit','catch','hook','events','../../mysqldb','MailInteraction','MailMessage','save','remove','then','setDataValue','map','findAll'];(function(_0x196a1d,_0x327f76){var _0x40bd18=function(_0x18ef86){while(--_0x18ef86){_0x196a1d['push'](_0x196a1d['shift']());}};_0x40bd18(++_0x327f76);}(_0x9a6b,0x14f));var _0xb9a6=function(_0x2e4471,_0x105102){_0x2e4471=_0x2e4471-0x0;var _0x3ef492=_0x9a6b[_0x2e4471];return _0x3ef492;};'use strict';var EventEmitter=require(_0xb9a6('0x0'));var MailInteraction=require(_0xb9a6('0x1'))['db'][_0xb9a6('0x2')];var MailMessage=require(_0xb9a6('0x1'))['db'][_0xb9a6('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb9a6('0x4'),'afterUpdate':'update','afterDestroy':_0xb9a6('0x5')};function emitEvent(_0x378c89){return function(_0x5da60b,_0x36eed1,_0x175022){_0x5da60b['getUsers']({'attributes':['id'],'raw':!![]})[_0xb9a6('0x6')](function(_0x38086b){_0x5da60b[_0xb9a6('0x7')]('Users',_0x38086b[_0xb9a6('0x8')](function(_0x26c7a5){return{'id':_0x26c7a5['id']};}));return MailMessage[_0xb9a6('0x9')]({'where':{'MailInteractionId':_0x5da60b['id'],'direction':'in','read':![]},'raw':!![]});})[_0xb9a6('0x6')](function(_0x30d9a7){_0x5da60b[_0xb9a6('0x7')](_0xb9a6('0xa'),_0x30d9a7[_0xb9a6('0xb')]);MailInteractionEvents[_0xb9a6('0xc')](_0x378c89+':'+_0x5da60b['id'],_0x5da60b);MailInteractionEvents[_0xb9a6('0xc')](_0x378c89,_0x5da60b);_0x175022(null);})[_0xb9a6('0xd')](_0x175022(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction[_0xb9a6('0xe')](e,emitEvent(event));}}module['exports']=MailInteractionEvents;
\ No newline at end of file
index 2c58931..2649a3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57dd=['then','catch','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./mailInteraction.attributes','exports','define','MailInteraction','mail_interactions','fti_mail_interactions','FULLTEXT','substatus','substatusAt','format','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','get','MailMessage'];(function(_0x42620c,_0xb31427){var _0x406a52=function(_0x10742e){while(--_0x10742e){_0x42620c['push'](_0x42620c['shift']());}};_0x406a52(++_0xb31427);}(_0x57dd,0x107));var _0xd57d=function(_0x507ec4,_0x4c246c){_0x507ec4=_0x507ec4-0x0;var _0x3ac5f7=_0x57dd[_0x507ec4];return _0x3ac5f7;};'use strict';var _=require(_0xd57d('0x0'));var util=require(_0xd57d('0x1'));var logger=require(_0xd57d('0x2'))(_0xd57d('0x3'));var moment=require(_0xd57d('0x4'));var BPromise=require(_0xd57d('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd57d('0x6'));var rimraf=require(_0xd57d('0x7'));var config=require('../../config/environment');var attributes=require(_0xd57d('0x8'));module[_0xd57d('0x9')]=function(_0x560339,_0x58c5fc){return _0x560339[_0xd57d('0xa')](_0xd57d('0xb'),attributes,{'tableName':_0xd57d('0xc'),'paranoid':![],'indexes':[{'name':_0xd57d('0xd'),'fields':['subject','to'],'type':_0xd57d('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5d4602,_0x2ac3aa,_0x366606){if(_0x5d4602[_0xd57d('0xf')]){_0x5d4602[_0xd57d('0x10')]=moment()[_0xd57d('0x11')](_0xd57d('0x12'));}if(_0x5d4602[_0xd57d('0x13')]){_0x5d4602[_0xd57d('0x14')]=moment()[_0xd57d('0x11')](_0xd57d('0x12'));}_0x366606(null,_0x2ac3aa);},'beforeUpdate':function(_0x23b1e6,_0x187461,_0x203779){if(_0x23b1e6['changed'](_0xd57d('0xf'))){_0x23b1e6[_0xd57d('0x10')]=_0x23b1e6[_0xd57d('0xf')]?moment()[_0xd57d('0x11')](_0xd57d('0x12')):null;}if(_0x23b1e6['changed'](_0xd57d('0x13'))){_0x23b1e6[_0xd57d('0x14')]=moment()[_0xd57d('0x11')](_0xd57d('0x12'));_0x23b1e6[_0xd57d('0xf')]=null;_0x23b1e6[_0xd57d('0x10')]=null;}_0x203779(null,_0x23b1e6);},'afterUpdate':function(_0x95d54e,_0x277b8e,_0x43c5a6){var _0x398d5b=_0x560339['models'];var _0x154d65=_0x95d54e[_0xd57d('0x15')]({'plain':!![]});if(_0x154d65['closed']){return _0x398d5b[_0xd57d('0x16')]['update']({'read':!![]},{'where':{'MailInteractionId':_0x154d65['id']}})[_0xd57d('0x17')](function(){_0x43c5a6();})[_0xd57d('0x18')](function(_0xef6634){_0x43c5a6(_0xef6634);});}else{_0x43c5a6();}}},'charset':'utf8mb4','collate':_0xd57d('0x19')});};
\ No newline at end of file
+var _0xa7ab=['MailMessage','update','then','catch','utf8mb4','utf8mb4_unicode_ci','lodash','request-promise','path','rimraf','./mailInteraction.attributes','exports','define','MailInteraction','mail_interactions','FULLTEXT','substatus','substatusAt','YYYY-MM-DD\x20HH:mm:ss','closed','format','changed','closedAt','models','get'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xa7ab,0x164));var _0xba7a=function(_0x405e4a,_0x3ba5d4){_0x405e4a=_0x405e4a-0x0;var _0x49354f=_0xa7ab[_0x405e4a];return _0x49354f;};'use strict';var _=require(_0xba7a('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xba7a('0x1'));var fs=require('fs');var path=require(_0xba7a('0x2'));var rimraf=require(_0xba7a('0x3'));var config=require('../../config/environment');var attributes=require(_0xba7a('0x4'));module[_0xba7a('0x5')]=function(_0x2d1181,_0x2c1b29){return _0x2d1181[_0xba7a('0x6')](_0xba7a('0x7'),attributes,{'tableName':_0xba7a('0x8'),'paranoid':![],'indexes':[{'name':'fti_mail_interactions','fields':['subject','to'],'type':_0xba7a('0x9')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x528191,_0x4b7878,_0x8039ea){if(_0x528191[_0xba7a('0xa')]){_0x528191[_0xba7a('0xb')]=moment()['format'](_0xba7a('0xc'));}if(_0x528191[_0xba7a('0xd')]){_0x528191['closedAt']=moment()[_0xba7a('0xe')](_0xba7a('0xc'));}_0x8039ea(null,_0x4b7878);},'beforeUpdate':function(_0x2d48e8,_0x3a5db5,_0x4d815e){if(_0x2d48e8[_0xba7a('0xf')]('substatus')){_0x2d48e8[_0xba7a('0xb')]=_0x2d48e8[_0xba7a('0xa')]?moment()[_0xba7a('0xe')](_0xba7a('0xc')):null;}if(_0x2d48e8[_0xba7a('0xf')](_0xba7a('0xd'))){_0x2d48e8[_0xba7a('0x10')]=moment()['format'](_0xba7a('0xc'));_0x2d48e8['substatus']=null;_0x2d48e8['substatusAt']=null;}_0x4d815e(null,_0x2d48e8);},'afterUpdate':function(_0x2536ce,_0x1b1357,_0x52f2a2){var _0x231375=_0x2d1181[_0xba7a('0x11')];var _0x3f1394=_0x2536ce[_0xba7a('0x12')]({'plain':!![]});if(_0x3f1394[_0xba7a('0xd')]){return _0x231375[_0xba7a('0x13')][_0xba7a('0x14')]({'read':!![]},{'where':{'MailInteractionId':_0x3f1394['id']}})[_0xba7a('0x15')](function(){_0x52f2a2();})[_0xba7a('0x16')](function(_0x225f6f){_0x52f2a2(_0x225f6f);});}else{_0x52f2a2();}}},'charset':_0xba7a('0x17'),'collate':_0xba7a('0x18')});};
\ No newline at end of file
index bd0ef88..2699433 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43a2=['omit','spread','AddTags','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','socket.io-emitter','redis','./mailInteraction.socket','register','request','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','UpdateMailInteraction','MailInteraction','update','body','options','raw','attributes','limit','AddTagsToMailInteraction','find','where','addTags','ids'];(function(_0x27192e,_0x427a60){var _0x168f20=function(_0x2695e4){while(--_0x2695e4){_0x27192e['push'](_0x27192e['shift']());}};_0x168f20(++_0x427a60);}(_0x43a2,0xd0));var _0x243a=function(_0x27f357,_0x33ed3d){_0x27f357=_0x27f357-0x0;var _0x477ef5=_0x43a2[_0x27f357];return _0x477ef5;};'use strict';var _=require('lodash');var util=require(_0x243a('0x0'));var moment=require(_0x243a('0x1'));var BPromise=require(_0x243a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x243a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x243a('0x4'));var logger=require(_0x243a('0x5'))(_0x243a('0x6'));var config=require(_0x243a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x243a('0x8')]['http']({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x243a('0x9'))(new Redis(config[_0x243a('0xa')]));require(_0x243a('0xb'))[_0x243a('0xc')](socket);function respondWithRpcPromise(_0x39b0fc,_0x41a114,_0x5a1f51){return new BPromise(function(_0x497be7,_0x195162){return client[_0x243a('0xd')](_0x39b0fc,_0x5a1f51)[_0x243a('0xe')](function(_0x372eb8){logger[_0x243a('0xf')](_0x243a('0x10'),_0x41a114,_0x243a('0x11'));logger[_0x243a('0x12')](_0x243a('0x13'),_0x41a114,_0x243a('0x11'),JSON[_0x243a('0x14')](_0x372eb8));if(_0x372eb8[_0x243a('0x15')]){if(_0x372eb8[_0x243a('0x15')][_0x243a('0x16')]===0x1f4){logger[_0x243a('0x15')]('MailInteraction,\x20%s,\x20%s',_0x41a114,_0x372eb8[_0x243a('0x15')][_0x243a('0x17')]);return _0x195162(_0x372eb8[_0x243a('0x15')]['message']);}logger[_0x243a('0x15')](_0x243a('0x10'),_0x41a114,_0x372eb8[_0x243a('0x15')][_0x243a('0x17')]);return _0x497be7(_0x372eb8['error']['message']);}else{logger[_0x243a('0xf')](_0x243a('0x10'),_0x41a114,_0x243a('0x11'));_0x497be7(_0x372eb8['result'][_0x243a('0x17')]);}})[_0x243a('0x18')](function(_0xf4cdb8){logger[_0x243a('0x15')](_0x243a('0x10'),_0x41a114,_0xf4cdb8);_0x195162(_0xf4cdb8);});});}exports[_0x243a('0x19')]=function(_0x14b67a){var _0x3b4d17=this;return new Promise(function(_0x2dbefd,_0x36ba2c){return db[_0x243a('0x1a')][_0x243a('0x1b')](_0x14b67a[_0x243a('0x1c')],{'raw':_0x14b67a[_0x243a('0x1d')]?_0x14b67a[_0x243a('0x1d')][_0x243a('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x14b67a[_0x243a('0x1d')]?_0x14b67a[_0x243a('0x1d')]['where']||null:null,'attributes':_0x14b67a[_0x243a('0x1d')]?_0x14b67a[_0x243a('0x1d')][_0x243a('0x1f')]||null:null,'limit':_0x14b67a[_0x243a('0x1d')]?_0x14b67a[_0x243a('0x1d')][_0x243a('0x20')]||null:null})['then'](function(_0x25028e){logger[_0x243a('0xf')](_0x243a('0x19'),_0x14b67a);logger[_0x243a('0x12')](_0x243a('0x19'),_0x14b67a,JSON['stringify'](_0x25028e));_0x2dbefd(_0x25028e);})[_0x243a('0x18')](function(_0x18b2dd){logger[_0x243a('0x15')](_0x243a('0x19'),_0x18b2dd[_0x243a('0x17')],_0x14b67a);_0x36ba2c(_0x3b4d17[_0x243a('0x15')](0x1f4,_0x18b2dd['message']));});});};exports[_0x243a('0x21')]=function(_0x22de0c){return new Promise(function(_0x133e18,_0x5f47cb){return db['MailInteraction'][_0x243a('0x22')]({'where':_0x22de0c['options']?_0x22de0c[_0x243a('0x1d')][_0x243a('0x23')]||null:null})[_0x243a('0xe')](function(_0x8cd764){if(_0x8cd764){return _0x8cd764[_0x243a('0x24')](_0x22de0c[_0x243a('0x1c')][_0x243a('0x25')],_[_0x243a('0x26')](_0x22de0c[_0x243a('0x1c')],['ids','id'])||{});}})[_0x243a('0x27')](function(_0x46943d){logger[_0x243a('0xf')](_0x243a('0x28'),_0x22de0c);logger['debug'](_0x243a('0x28'),_0x22de0c,JSON[_0x243a('0x14')](_0x46943d));_0x133e18(_0x46943d);})[_0x243a('0x18')](function(_0x172655){logger['error'](_0x243a('0x28'),_0x172655[_0x243a('0x17')],_0x22de0c);_0x5f47cb(_this[_0x243a('0x15')](0x1f4,_0x172655[_0x243a('0x17')]));});});};
\ No newline at end of file
+var _0xc69b=['message','result','catch','UpdateMailInteraction','MailInteraction','update','body','options','raw','where','stringify','find','addTags','ids','omit','spread','AddTags','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','redis','defaults','socket.io-emitter','./mailInteraction.socket','register','request','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','error','code'];(function(_0x4c0de2,_0x4e4381){var _0x156f21=function(_0x57c490){while(--_0x57c490){_0x4c0de2['push'](_0x4c0de2['shift']());}};_0x156f21(++_0x4e4381);}(_0xc69b,0xcf));var _0xbc69=function(_0x2389bc,_0x167cd2){_0x2389bc=_0x2389bc-0x0;var _0x170548=_0xc69b[_0x2389bc];return _0x170548;};'use strict';var _=require(_0xbc69('0x0'));var util=require('util');var moment=require(_0xbc69('0x1'));var BPromise=require('bluebird');var rs=require(_0xbc69('0x2'));var fs=require('fs');var Redis=require(_0xbc69('0x3'));var db=require(_0xbc69('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xbc69('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xbc69('0x6'));var client=jayson[_0xbc69('0x7')]['http']({'port':0x232a});config[_0xbc69('0x8')]=_[_0xbc69('0x9')](config[_0xbc69('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0xbc69('0xa'))(new Redis(config[_0xbc69('0x8')]));require(_0xbc69('0xb'))[_0xbc69('0xc')](socket);function respondWithRpcPromise(_0x3adb11,_0x57be21,_0x181560){return new BPromise(function(_0x2e8394,_0xd7337e){return client[_0xbc69('0xd')](_0x3adb11,_0x181560)[_0xbc69('0xe')](function(_0x5dc950){logger[_0xbc69('0xf')](_0xbc69('0x10'),_0x57be21,_0xbc69('0x11'));logger[_0xbc69('0x12')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x57be21,_0xbc69('0x11'),JSON['stringify'](_0x5dc950));if(_0x5dc950[_0xbc69('0x13')]){if(_0x5dc950['error'][_0xbc69('0x14')]===0x1f4){logger[_0xbc69('0x13')]('MailInteraction,\x20%s,\x20%s',_0x57be21,_0x5dc950['error'][_0xbc69('0x15')]);return _0xd7337e(_0x5dc950[_0xbc69('0x13')][_0xbc69('0x15')]);}logger[_0xbc69('0x13')](_0xbc69('0x10'),_0x57be21,_0x5dc950[_0xbc69('0x13')][_0xbc69('0x15')]);return _0x2e8394(_0x5dc950[_0xbc69('0x13')][_0xbc69('0x15')]);}else{logger['info'](_0xbc69('0x10'),_0x57be21,_0xbc69('0x11'));_0x2e8394(_0x5dc950[_0xbc69('0x16')][_0xbc69('0x15')]);}})[_0xbc69('0x17')](function(_0x4cca15){logger[_0xbc69('0x13')](_0xbc69('0x10'),_0x57be21,_0x4cca15);_0xd7337e(_0x4cca15);});});}exports[_0xbc69('0x18')]=function(_0x19aa26){var _0x1ba59f=this;return new Promise(function(_0x71fbd9,_0x4e00ec){return db[_0xbc69('0x19')][_0xbc69('0x1a')](_0x19aa26[_0xbc69('0x1b')],{'raw':_0x19aa26[_0xbc69('0x1c')]?_0x19aa26[_0xbc69('0x1c')][_0xbc69('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x19aa26[_0xbc69('0x1c')]?_0x19aa26[_0xbc69('0x1c')][_0xbc69('0x1e')]||null:null,'attributes':_0x19aa26[_0xbc69('0x1c')]?_0x19aa26[_0xbc69('0x1c')]['attributes']||null:null,'limit':_0x19aa26['options']?_0x19aa26[_0xbc69('0x1c')]['limit']||null:null})[_0xbc69('0xe')](function(_0x47d454){logger[_0xbc69('0xf')](_0xbc69('0x18'),_0x19aa26);logger['debug'](_0xbc69('0x18'),_0x19aa26,JSON[_0xbc69('0x1f')](_0x47d454));_0x71fbd9(_0x47d454);})[_0xbc69('0x17')](function(_0x4b22e5){logger[_0xbc69('0x13')]('UpdateMailInteraction',_0x4b22e5[_0xbc69('0x15')],_0x19aa26);_0x4e00ec(_0x1ba59f[_0xbc69('0x13')](0x1f4,_0x4b22e5[_0xbc69('0x15')]));});});};exports['AddTagsToMailInteraction']=function(_0xe424c2){return new Promise(function(_0x182473,_0x582908){return db[_0xbc69('0x19')][_0xbc69('0x20')]({'where':_0xe424c2[_0xbc69('0x1c')]?_0xe424c2[_0xbc69('0x1c')][_0xbc69('0x1e')]||null:null})['then'](function(_0x53a7f0){if(_0x53a7f0){return _0x53a7f0[_0xbc69('0x21')](_0xe424c2[_0xbc69('0x1b')][_0xbc69('0x22')],_[_0xbc69('0x23')](_0xe424c2[_0xbc69('0x1b')],[_0xbc69('0x22'),'id'])||{});}})[_0xbc69('0x24')](function(_0xc72391){logger[_0xbc69('0xf')](_0xbc69('0x25'),_0xe424c2);logger[_0xbc69('0x12')]('AddTags',_0xe424c2,JSON[_0xbc69('0x1f')](_0xc72391));_0x182473(_0xc72391);})['catch'](function(_0x54f6a6){logger[_0xbc69('0x13')](_0xbc69('0x25'),_0x54f6a6[_0xbc69('0x15')],_0xe424c2);_0x582908(_this['error'](0x1f4,_0x54f6a6['message']));});});};
\ No newline at end of file
index a9b4e93..f75bcc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e5c=['length','save','remove','emit','removeListener','register'];(function(_0x5aba81,_0x5b867f){var _0x258902=function(_0x234368){while(--_0x234368){_0x5aba81['push'](_0x5aba81['shift']());}};_0x258902(++_0x5b867f);}(_0x3e5c,0x1bd));var _0xc3e5=function(_0x4ec41a,_0x32e17a){_0x4ec41a=_0x4ec41a-0x0;var _0x228495=_0x3e5c[_0x4ec41a];return _0x228495;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=[_0xc3e5('0x0'),_0xc3e5('0x1'),'update'];function createListener(_0x320e9d,_0x508ce2){return function(_0x1e4596){_0x508ce2[_0xc3e5('0x2')](_0x320e9d,_0x1e4596);};}function removeListener(_0x10c460,_0x4c3ec6){return function(){MailInteractionEvents[_0xc3e5('0x3')](_0x10c460,_0x4c3ec6);};}exports[_0xc3e5('0x4')]=function(_0x20db83){for(var _0x1820cc=0x0,_0x45f024=events[_0xc3e5('0x5')];_0x1820cc<_0x45f024;_0x1820cc++){var _0x4a8630=events[_0x1820cc];var _0x33f3e6=createListener('mailInteraction:'+_0x4a8630,_0x20db83);MailInteractionEvents['on'](_0x4a8630,_0x33f3e6);}};
\ No newline at end of file
+var _0xa2a7=['update','emit','removeListener','mailInteraction:','save','remove'];(function(_0x5c9f56,_0x42c9ad){var _0x2a726b=function(_0x4a13cd){while(--_0x4a13cd){_0x5c9f56['push'](_0x5c9f56['shift']());}};_0x2a726b(++_0x42c9ad);}(_0xa2a7,0x11e));var _0x7a2a=function(_0x1992f1,_0x5c61f0){_0x1992f1=_0x1992f1-0x0;var _0x413dfe=_0xa2a7[_0x1992f1];return _0x413dfe;};'use strict';var MailInteractionEvents=require('./mailInteraction.events');var events=[_0x7a2a('0x0'),_0x7a2a('0x1'),_0x7a2a('0x2')];function createListener(_0x54e822,_0x41d8bd){return function(_0x35bd52){_0x41d8bd[_0x7a2a('0x3')](_0x54e822,_0x35bd52);};}function removeListener(_0x374a10,_0x2ab11e){return function(){MailInteractionEvents[_0x7a2a('0x4')](_0x374a10,_0x2ab11e);};}exports['register']=function(_0x2d2664){for(var _0x4d0b2f=0x0,_0x121ad2=events['length'];_0x4d0b2f<_0x121ad2;_0x4d0b2f++){var _0x2d8518=events[_0x4d0b2f];var _0x188abe=createListener(_0x7a2a('0x5')+_0x2d8518,_0x2d2664);MailInteractionEvents['on'](_0x2d8518,_0x188abe);}};
\ No newline at end of file
index 675934a..ca148f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe0dc=['put','/:id/accept','accept','/:id/reject','reject','delete','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','isAuthenticated','/describe','describe','show','/:id/download','download','post','mail','mailmessage:create','create','/:id','update'];(function(_0x1c85a7,_0x464b8c){var _0x669c0d=function(_0x4f23e5){while(--_0x4f23e5){_0x1c85a7['push'](_0x1c85a7['shift']());}};_0x669c0d(++_0x464b8c);}(_0xe0dc,0x77));var _0xce0d=function(_0x1f6835,_0xff3520){_0x1f6835=_0x1f6835-0x0;var _0x10aee2=_0xe0dc[_0x1f6835];return _0x10aee2;};'use strict';var multer=require('multer');var util=require(_0xce0d('0x0'));var path=require(_0xce0d('0x1'));var timeout=require(_0xce0d('0x2'));var express=require('express');var router=express[_0xce0d('0x3')]();var fs_extra=require(_0xce0d('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xce0d('0x5'));var config=require(_0xce0d('0x6'));var controller=require(_0xce0d('0x7'));router[_0xce0d('0x8')]('/',auth[_0xce0d('0x9')](),controller['index']);router[_0xce0d('0x8')](_0xce0d('0xa'),auth[_0xce0d('0x9')](),controller[_0xce0d('0xb')]);router[_0xce0d('0x8')]('/:id',auth[_0xce0d('0x9')](),controller[_0xce0d('0xc')]);router[_0xce0d('0x8')](_0xce0d('0xd'),auth[_0xce0d('0x9')](),controller[_0xce0d('0xe')]);router[_0xce0d('0xf')]('/',auth['isAuthenticated'](),interaction['tracked'](_0xce0d('0x10'),_0xce0d('0x11')),controller[_0xce0d('0x12')]);router['put'](_0xce0d('0x13'),auth[_0xce0d('0x9')](),controller[_0xce0d('0x14')]);router[_0xce0d('0x15')](_0xce0d('0x16'),auth[_0xce0d('0x9')](),controller[_0xce0d('0x17')]);router[_0xce0d('0x15')](_0xce0d('0x18'),auth[_0xce0d('0x9')](),controller[_0xce0d('0x19')]);router[_0xce0d('0x1a')](_0xce0d('0x13'),auth[_0xce0d('0x9')](),controller['destroy']);module[_0xce0d('0x1b')]=router;
\ No newline at end of file
+var _0x7c80=['fs-extra','../../components/interaction/service','../../config/environment','./mailMessage.controller','isAuthenticated','/describe','describe','get','/:id','download','mailmessage:create','create','put','update','/:id/accept','/:id/reject','reject','delete','destroy','exports','multer','util','express','Router'];(function(_0x224fd8,_0x33dd08){var _0x1c5391=function(_0x45c259){while(--_0x45c259){_0x224fd8['push'](_0x224fd8['shift']());}};_0x1c5391(++_0x33dd08);}(_0x7c80,0xa4));var _0x07c8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7c80[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x07c8('0x0'));var util=require(_0x07c8('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x07c8('0x2'));var router=express[_0x07c8('0x3')]();var fs_extra=require(_0x07c8('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x07c8('0x5'));var config=require(_0x07c8('0x6'));var controller=require(_0x07c8('0x7'));router['get']('/',auth[_0x07c8('0x8')](),controller['index']);router['get'](_0x07c8('0x9'),auth[_0x07c8('0x8')](),controller[_0x07c8('0xa')]);router[_0x07c8('0xb')](_0x07c8('0xc'),auth[_0x07c8('0x8')](),controller['show']);router[_0x07c8('0xb')]('/:id/download',auth['isAuthenticated'](),controller[_0x07c8('0xd')]);router['post']('/',auth[_0x07c8('0x8')](),interaction['tracked']('mail',_0x07c8('0xe')),controller[_0x07c8('0xf')]);router[_0x07c8('0x10')](_0x07c8('0xc'),auth['isAuthenticated'](),controller[_0x07c8('0x11')]);router[_0x07c8('0x10')](_0x07c8('0x12'),auth[_0x07c8('0x8')](),controller['accept']);router['put'](_0x07c8('0x13'),auth['isAuthenticated'](),controller[_0x07c8('0x14')]);router[_0x07c8('0x15')](_0x07c8('0xc'),auth[_0x07c8('0x8')](),controller[_0x07c8('0x16')]);module[_0x07c8('0x17')]=router;
\ No newline at end of file
index 9d9d8ad..1b0efdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a91=['long','BOOLEAN','ENUM','out','STRING','DATE','Email','Chat','sequelize','lodash','exports','TEXT'];(function(_0x3e3012,_0x46fe06){var _0x5dfc61=function(_0x4737b8){while(--_0x4737b8){_0x3e3012['push'](_0x3e3012['shift']());}};_0x5dfc61(++_0x46fe06);}(_0x0a91,0x74));var _0x10a9=function(_0x1d3e3f,_0x495ec1){_0x1d3e3f=_0x1d3e3f-0x0;var _0x3879fa=_0x0a91[_0x1d3e3f];return _0x3879fa;};'use strict';var Sequelize=require(_0x10a9('0x0'));var _=require(_0x10a9('0x1'));module[_0x10a9('0x2')]={'body':{'type':Sequelize[_0x10a9('0x3')](_0x10a9('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x10a9('0x3')]('medium')},'read':{'type':Sequelize[_0x10a9('0x5')],'defaultValue':![]},'direction':{'type':Sequelize[_0x10a9('0x6')]('in',_0x10a9('0x7')),'defaultValue':_0x10a9('0x7'),'allowNull':![]},'messageId':{'type':Sequelize[_0x10a9('0x8')](0x1fe)},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize[_0x10a9('0x3')](_0x10a9('0x4'))},'cc':{'type':Sequelize[_0x10a9('0x3')](_0x10a9('0x4'))},'bcc':{'type':Sequelize['TEXT']('long')},'subject':{'type':Sequelize[_0x10a9('0x3')]},'sentAt':{'type':Sequelize[_0x10a9('0x9')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0x10a9('0x5')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x10a9('0x9')]},'originTo':{'type':Sequelize[_0x10a9('0x3')](_0x10a9('0x4'))},'originCc':{'type':Sequelize[_0x10a9('0x3')](_0x10a9('0x4'))},'originChannel':{'type':Sequelize[_0x10a9('0x6')](_0x10a9('0xa'),_0x10a9('0xb')),'defaultValue':_0x10a9('0xa'),'allowNull':![]}};
\ No newline at end of file
+var _0x177e=['sequelize','lodash','exports','TEXT','out','STRING','long','DATE','INTEGER','BOOLEAN'];(function(_0x35b07e,_0x4c5a33){var _0xcb745e=function(_0x30468b){while(--_0x30468b){_0x35b07e['push'](_0x35b07e['shift']());}};_0xcb745e(++_0x4c5a33);}(_0x177e,0x19a));var _0xe177=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x177e[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0xe177('0x0'));var _=require(_0xe177('0x1'));module[_0xe177('0x2')]={'body':{'type':Sequelize['TEXT']('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0xe177('0x3')]('medium')},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xe177('0x4')),'defaultValue':_0xe177('0x4'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0x1fe)},'from':{'type':Sequelize[_0xe177('0x5')]},'to':{'type':Sequelize[_0xe177('0x3')](_0xe177('0x6'))},'cc':{'type':Sequelize[_0xe177('0x3')](_0xe177('0x6'))},'bcc':{'type':Sequelize[_0xe177('0x3')]('long')},'subject':{'type':Sequelize['TEXT']},'sentAt':{'type':Sequelize[_0xe177('0x7')]},'attach':{'type':Sequelize[_0xe177('0x8')],'defaultValue':0x0},'secret':{'type':Sequelize[_0xe177('0x9')],'defaultValue':![]},'readAt':{'type':Sequelize[_0xe177('0x7')]},'originTo':{'type':Sequelize['TEXT'](_0xe177('0x6'))},'originCc':{'type':Sequelize[_0xe177('0x3')](_0xe177('0x6'))},'originChannel':{'type':Sequelize['ENUM']('Email','Chat'),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
index 08d46f1..cddb83c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda52=['MailMessage,\x20%s,\x20%s,\x20%s','error','code','message','catch','status','json','undefined','limit','count','offset','set','Content-Range','update','end','sendStatus','name','send','index','map','MailMessage','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','fields','find','body','params','destroy','create','secret','MailAccount','findOne','MailAccountId','CmList','CmContact','Contacts','updatedAt','MailServerOut','CloudProvider','Smtp','getSmtpOptions','attachments','root','server/files/attachments','List','ListId','List\x20not\x20found','sendMail','messageId','YYYY-MM-DD\x20HH:mm:ss','accept','mail','readAt','format','UserId','user','agent','get','MailInteractionId','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','channel','motionChannel','event','EventManager','acceptmessage','MailInteraction','stringify','RejectMessage','rejectMessage','Sequelize','SIP/%s','reject','fromString','rejectmessage','download','unix','toString','join','files','tmp','from','bcc','subject','Attachment','decode','createdAt','headers','Bcc','Attachments','basename','existsSync','push','readFileSync','build','writeFileSync','unlinkSync','eml-format','bluebird','util','path','ioredis','html-to-text','../../components/parsers/qs','api','../../config/logger','../../config/environment','defaults','redis','localhost','socket.io-emitter','html-entities','./mailMessage.socket','register','jayson/promise','http','client','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2ea98d,_0x2db302){var _0x3d4c08=function(_0x3f60bc){while(--_0x3f60bc){_0x2ea98d['push'](_0x2ea98d['shift']());}};_0x3d4c08(++_0x2db302);}(_0xda52,0x120));var _0x2da5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xda52[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x2da5('0x0'));var moment=require('moment');var BPromise=require(_0x2da5('0x1'));var util=require(_0x2da5('0x2'));var path=require(_0x2da5('0x3'));var fs=require('fs');var _=require('lodash');var Redis=require(_0x2da5('0x4'));var htmlToText=require(_0x2da5('0x5'));var qs=require(_0x2da5('0x6'));var logger=require('../../config/logger')(_0x2da5('0x7'));var interaction_log=require(_0x2da5('0x8'))('mail-interactions');var config=require(_0x2da5('0x9'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x2da5('0xa')](config[_0x2da5('0xb')],{'host':_0x2da5('0xc'),'port':0x18eb});var socket=require(_0x2da5('0xd'))(new Redis(config[_0x2da5('0xb')]));var htmlEntities=require(_0x2da5('0xe'));require(_0x2da5('0xf'))[_0x2da5('0x10')](socket);var jayson=require(_0x2da5('0x11'));var client=jayson['client'][_0x2da5('0x12')]({'port':0x232c});var client9003=jayson[_0x2da5('0x13')][_0x2da5('0x12')]({'port':0x232b});var client9002=jayson['client'][_0x2da5('0x12')]({'port':0x232a});function respondWithRpcPromise(_0x585f83,_0x208a43,_0x2bd3f1,_0x35205d){return new BPromise(function(_0x1da798,_0xcfefdf){var _0x2adfcf=_0x35205d||client;return _0x2adfcf[_0x2da5('0x14')](_0x585f83,_0x2bd3f1)[_0x2da5('0x15')](function(_0x565f5e){logger[_0x2da5('0x16')](_0x2da5('0x17'),_0x208a43,_0x2da5('0x18'));logger[_0x2da5('0x19')](_0x2da5('0x1a'),_0x208a43,'request\x20sent',JSON['stringify'](_0x565f5e));if(_0x565f5e[_0x2da5('0x1b')]){if(_0x565f5e[_0x2da5('0x1b')][_0x2da5('0x1c')]===0x1f4){logger[_0x2da5('0x1b')]('MailMessage,\x20%s,\x20%s',_0x208a43,_0x565f5e['error']['message']);return _0xcfefdf(_0x565f5e[_0x2da5('0x1b')]['message']);}logger['error'](_0x2da5('0x17'),_0x208a43,_0x565f5e[_0x2da5('0x1b')][_0x2da5('0x1d')]);return _0x1da798(_0x565f5e['error'][_0x2da5('0x1d')]);}else{logger['info'](_0x2da5('0x17'),_0x208a43,'request\x20sent');_0x1da798(_0x565f5e['result'][_0x2da5('0x1d')]);}})[_0x2da5('0x1e')](function(_0x52e178){logger[_0x2da5('0x1b')](_0x2da5('0x17'),_0x208a43,_0x52e178);_0xcfefdf(_0x52e178);});});}function respondWithResult(_0x1690a0,_0x557982){_0x557982=_0x557982||0xc8;return function(_0x3fcdc3){if(_0x3fcdc3){return _0x1690a0[_0x2da5('0x1f')](_0x557982)[_0x2da5('0x20')](_0x3fcdc3);}};}function respondWithFilteredResult(_0x2e6d8f,_0x4a8e19){return function(_0x55aa90){if(_0x55aa90){var _0x4e829f=typeof _0x4a8e19['offset']===_0x2da5('0x21')&&typeof _0x4a8e19[_0x2da5('0x22')]==='undefined';var _0x262565=_0x55aa90[_0x2da5('0x23')];var _0x4921c3=_0x4e829f?0x0:_0x4a8e19[_0x2da5('0x24')];var _0x245ee6=_0x4e829f?_0x55aa90['count']:_0x4a8e19['offset']+_0x4a8e19[_0x2da5('0x22')];var _0x2c1af9;if(_0x245ee6>=_0x262565){_0x245ee6=_0x262565;_0x2c1af9=0xc8;}else{_0x2c1af9=0xce;}_0x2e6d8f[_0x2da5('0x1f')](_0x2c1af9);return _0x2e6d8f[_0x2da5('0x25')](_0x2da5('0x26'),_0x4921c3+'-'+_0x245ee6+'/'+_0x262565)[_0x2da5('0x20')](_0x55aa90);}return null;};}function saveUpdates(_0x414f54){return function(_0x3434f8){if(_0x3434f8){return _0x3434f8[_0x2da5('0x27')](_0x414f54)['then'](function(_0xb39cc7){return _0xb39cc7;});}return null;};}function removeEntity(_0x17df80){return function(_0x1dd0a4){if(_0x1dd0a4){return _0x1dd0a4['destroy']()['then'](function(){_0x17df80[_0x2da5('0x1f')](0xcc)[_0x2da5('0x28')]();});}};}function handleEntityNotFound(_0x12ee92){return function(_0x3b50a1){if(!_0x3b50a1){_0x12ee92[_0x2da5('0x29')](0x194);}return _0x3b50a1;};}function handleError(_0x44b83d,_0x2fd576){_0x2fd576=_0x2fd576||0x1f4;return function(_0xce5589){logger[_0x2da5('0x1b')](_0xce5589['stack']);if(_0xce5589[_0x2da5('0x2a')]){delete _0xce5589[_0x2da5('0x2a')];}_0x44b83d['status'](_0x2fd576)[_0x2da5('0x2b')](_0xce5589);};}exports[_0x2da5('0x2c')]=function(_0x20e900,_0xbf7fcf){var _0x361478={},_0x2192b6={},_0x31d77a={'count':0x0,'rows':[]};var _0x161e6b=_[_0x2da5('0x2d')](db[_0x2da5('0x2e')][_0x2da5('0x2f')],function(_0x2e086e){return{'name':_0x2e086e[_0x2da5('0x30')],'type':_0x2e086e[_0x2da5('0x31')]['key']};});_0x2192b6[_0x2da5('0x32')]=_[_0x2da5('0x2d')](_0x161e6b,'name');_0x2192b6[_0x2da5('0x33')]=_[_0x2da5('0x34')](_0x20e900[_0x2da5('0x33')]);_0x2192b6[_0x2da5('0x35')]=_[_0x2da5('0x36')](_0x2192b6[_0x2da5('0x32')],_0x2192b6[_0x2da5('0x33')]);_0x361478['attributes']=_[_0x2da5('0x36')](_0x2192b6[_0x2da5('0x32')],qs['fields'](_0x20e900[_0x2da5('0x33')]['fields']));_0x361478[_0x2da5('0x37')]=_0x361478[_0x2da5('0x37')][_0x2da5('0x38')]?_0x361478[_0x2da5('0x37')]:_0x2192b6['model'];if(!_0x20e900['query'][_0x2da5('0x39')](_0x2da5('0x3a'))){_0x361478[_0x2da5('0x22')]=qs[_0x2da5('0x22')](_0x20e900['query'][_0x2da5('0x22')]);_0x361478[_0x2da5('0x24')]=qs[_0x2da5('0x24')](_0x20e900[_0x2da5('0x33')][_0x2da5('0x24')]);}_0x361478['order']=qs[_0x2da5('0x3b')](_0x20e900[_0x2da5('0x33')][_0x2da5('0x3b')]);_0x361478['where']=qs[_0x2da5('0x35')](_[_0x2da5('0x3c')](_0x20e900[_0x2da5('0x33')],_0x2192b6['filters']),_0x161e6b);if(_0x20e900['query'][_0x2da5('0x3d')]){_0x361478[_0x2da5('0x3e')]=_[_0x2da5('0x3f')](_0x361478[_0x2da5('0x3e')],{'$or':_[_0x2da5('0x2d')](_0x161e6b,function(_0x21c69b){if(_0x21c69b[_0x2da5('0x31')]!==_0x2da5('0x40')){var _0x26b85={};_0x26b85[_0x21c69b['name']]={'$like':'%'+_0x20e900[_0x2da5('0x33')]['filter']+'%'};return _0x26b85;}})});}_0x361478=_['merge']({},_0x361478,_0x20e900[_0x2da5('0x41')]);var _0x5ccf09={'where':_0x361478[_0x2da5('0x3e')]};return db['MailMessage'][_0x2da5('0x23')](_0x5ccf09)[_0x2da5('0x15')](function(_0x5d8059){_0x31d77a[_0x2da5('0x23')]=_0x5d8059;if(_0x20e900[_0x2da5('0x33')][_0x2da5('0x42')]){_0x361478[_0x2da5('0x43')]=[{'all':!![]}];}return db[_0x2da5('0x2e')]['findAll'](_0x361478);})[_0x2da5('0x15')](function(_0x54e9e9){_0x31d77a['rows']=_0x54e9e9;return _0x31d77a;})[_0x2da5('0x15')](respondWithFilteredResult(_0xbf7fcf,_0x361478))['catch'](handleError(_0xbf7fcf,null));};exports['show']=function(_0x34c686,_0x3d9a0c){var _0x3d5597={'raw':!![],'where':{'id':_0x34c686['params']['id']}},_0x330873={};_0x330873[_0x2da5('0x32')]=_['keys'](db[_0x2da5('0x2e')]['rawAttributes']);_0x330873['query']=_[_0x2da5('0x34')](_0x34c686[_0x2da5('0x33')]);_0x330873[_0x2da5('0x35')]=_[_0x2da5('0x36')](_0x330873[_0x2da5('0x32')],_0x330873['query']);_0x3d5597[_0x2da5('0x37')]=_[_0x2da5('0x36')](_0x330873[_0x2da5('0x32')],qs[_0x2da5('0x44')](_0x34c686[_0x2da5('0x33')]['fields']));_0x3d5597[_0x2da5('0x37')]=_0x3d5597[_0x2da5('0x37')][_0x2da5('0x38')]?_0x3d5597['attributes']:_0x330873[_0x2da5('0x32')];if(_0x34c686[_0x2da5('0x33')][_0x2da5('0x42')]){_0x3d5597[_0x2da5('0x43')]=[{'all':!![]}];}_0x3d5597=_[_0x2da5('0x3f')]({},_0x3d5597,_0x34c686[_0x2da5('0x41')]);return db[_0x2da5('0x2e')][_0x2da5('0x45')](_0x3d5597)['then'](handleEntityNotFound(_0x3d9a0c,null))[_0x2da5('0x15')](respondWithResult(_0x3d9a0c,null))[_0x2da5('0x1e')](handleError(_0x3d9a0c,null));};exports[_0x2da5('0x27')]=function(_0xfde343,_0x5c81a7){if(_0xfde343['body']['id']){delete _0xfde343[_0x2da5('0x46')]['id'];}return db[_0x2da5('0x2e')]['find']({'where':{'id':_0xfde343[_0x2da5('0x47')]['id']}})[_0x2da5('0x15')](handleEntityNotFound(_0x5c81a7,null))['then'](saveUpdates(_0xfde343['body'],null))[_0x2da5('0x15')](respondWithResult(_0x5c81a7,null))[_0x2da5('0x1e')](handleError(_0x5c81a7,null));};exports[_0x2da5('0x48')]=function(_0x13bffa,_0x3fb105){return db['MailMessage'][_0x2da5('0x45')]({'where':{'id':_0x13bffa[_0x2da5('0x47')]['id']}})[_0x2da5('0x15')](handleEntityNotFound(_0x3fb105,null))['then'](removeEntity(_0x3fb105,null))[_0x2da5('0x1e')](handleError(_0x3fb105,null));};exports['describe']=function(_0x467d57,_0x1fb8fd){return db[_0x2da5('0x2e')]['describe']()[_0x2da5('0x15')](respondWithResult(_0x1fb8fd,null))[_0x2da5('0x1e')](handleError(_0x1fb8fd,null));};exports['create']=function(_0xcd89e0,_0x1bc5c4){return db['MailMessage'][_0x2da5('0x49')](_0xcd89e0[_0x2da5('0x46')])['then'](function(_0x16911c){if(_0x16911c){if(_0x16911c['direction']==='out'&&!_0x16911c[_0x2da5('0x4a')]){var _0x6874c9,_0x2893c2,_0x48b402;if(_0xcd89e0[_0x2da5('0x46')]['to']){_0x2893c2=_0xcd89e0['body']['to']['split'](',')[0x0];}return db[_0x2da5('0x4b')][_0x2da5('0x4c')]({'where':{'id':_0x16911c[_0x2da5('0x4d')]},'include':[{'model':db[_0x2da5('0x4e')],'as':'List','include':[{'model':db[_0x2da5('0x4f')],'as':_0x2da5('0x50'),'where':{'email':_0x2893c2},'limit':0x1,'order':[[_0x2da5('0x51'),'DESC']]}]},{'model':db[_0x2da5('0x52')],'as':'Smtp','raw':!![],'include':[{'model':db[_0x2da5('0x53')],'as':_0x2da5('0x53'),'raw':!![]}]}]})['then'](function(_0x5e191d){_0x6874c9=_0x5e191d;if(!_0x6874c9||!_0x6874c9[_0x2da5('0x54')])return;var _0x343fc6=_0x6874c9[_0x2da5('0x55')]();if(_0xcd89e0[_0x2da5('0x46')][_0x2da5('0x56')]&&_0xcd89e0['body'][_0x2da5('0x56')][_0x2da5('0x38')]){for(var _0x33b610=0x0;_0x33b610<_0xcd89e0['body']['attachments'][_0x2da5('0x38')];_0x33b610+=0x1){_0xcd89e0[_0x2da5('0x46')]['attachments'][_0x33b610]={'filename':_0xcd89e0[_0x2da5('0x46')][_0x2da5('0x56')][_0x33b610][_0x2da5('0x2a')],'path':path['join'](config[_0x2da5('0x57')],_0x2da5('0x58'),_0xcd89e0[_0x2da5('0x46')][_0x2da5('0x56')][_0x33b610]['basename'])};}}_0x48b402={'account':_0x343fc6,'message':_0xcd89e0['body']};return;})['then'](function(){if(_0x6874c9[_0x2da5('0x59')]){if(_0x6874c9[_0x2da5('0x59')]['Contacts'][_0x2da5('0x38')]){return _0x6874c9['List']['Contacts'][0x0];}else{return db[_0x2da5('0x4f')][_0x2da5('0x49')](_[_0x2da5('0xa')](_0xcd89e0[_0x2da5('0x46')],{'firstName':_0xcd89e0[_0x2da5('0x46')]['to'],'email':_0xcd89e0['body']['to'],'phone':_0xcd89e0[_0x2da5('0x46')]['to'],'ListId':_0x6874c9[_0x2da5('0x5a')]}));}}else{throw new Error(_0x2da5('0x5b'));}})[_0x2da5('0x15')](function(){if(_0x48b402){return respondWithRpcPromise('SendMail',_0x2da5('0x5c'),_0x48b402,client9003)[_0x2da5('0x15')](function(_0x4b04fa){return _0x16911c['update']({'read':!![],'messageId':_0x4b04fa[_0x2da5('0x5d')],'sentAt':moment()['format'](_0x2da5('0x5e'))});})[_0x2da5('0x1e')](function(_0x57afda){logger[_0x2da5('0x1b')]('%s',JSON['stringify'](_0x57afda));return _0x16911c;});}return _0x16911c;});}return _0x16911c;}})[_0x2da5('0x15')](respondWithResult(_0x1bc5c4,0xc9))[_0x2da5('0x1e')](handleError(_0x1bc5c4,null));};exports[_0x2da5('0x5f')]=function(_0x90ccc2,_0x280c02){var _0x569788={'agent':{},'channel':_0x2da5('0x60')};if(_0x90ccc2[_0x2da5('0x46')]['id']){delete _0x90ccc2[_0x2da5('0x46')]['id'];}_0x90ccc2[_0x2da5('0x46')]['read']=!![];_0x90ccc2[_0x2da5('0x46')][_0x2da5('0x61')]=moment()[_0x2da5('0x62')]('YYYY-MM-DD\x20HH:mm:ss');_0x90ccc2['body'][_0x2da5('0x63')]=_0x90ccc2[_0x2da5('0x46')][_0x2da5('0x63')]||_0x90ccc2[_0x2da5('0x64')]['id'];_0x569788[_0x2da5('0x65')]['id']=_0x90ccc2[_0x2da5('0x46')][_0x2da5('0x63')];return db['MailMessage']['find']({'where':{'id':_0x90ccc2[_0x2da5('0x47')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x280c02,null))[_0x2da5('0x15')](saveUpdates(_0x90ccc2[_0x2da5('0x46')],null))[_0x2da5('0x15')](function(_0x78cd82){if(_0x78cd82){_0x569788[_0x2da5('0x1d')]=_0x78cd82[_0x2da5('0x66')]({'plain':!![]});return db['MailInteraction'][_0x2da5('0x45')]({'where':{'id':_0x78cd82[_0x2da5('0x67')]}});}return null;})[_0x2da5('0x15')](handleEntityNotFound(_0x280c02,null))[_0x2da5('0x15')](function(_0x4c1790){if(_0x4c1790){return _0x4c1790[_0x2da5('0x27')]({'UserId':_0x90ccc2[_0x2da5('0x46')][_0x2da5('0x63')],'read1stAt':_['isNil'](_0x4c1790[_0x2da5('0x68')])?moment()['format'](_0x2da5('0x5e')):undefined});}return null;})[_0x2da5('0x15')](function(_0x1e7055){if(_0x1e7055){_0x569788[_0x2da5('0x69')]=_0x1e7055[_0x2da5('0x66')]({'plain':!![]});interaction_log[_0x2da5('0x16')](_0x2da5('0x6a'),_0x90ccc2[_0x2da5('0x64')]['id'],_0x90ccc2[_0x2da5('0x64')]['name'],_0x90ccc2[_0x2da5('0x64')][_0x2da5('0x6b')],_0x569788[_0x2da5('0x69')]['id'],_0x90ccc2[_0x2da5('0x46')]?JSON['stringify'](_0x90ccc2[_0x2da5('0x46')]):'null');return respondWithRpcPromise('AcceptMessage',_0x2da5('0x6c'),_0x569788);}return null;})[_0x2da5('0x15')](function(_0x569340){var _0x91d6f8=_0x2da5('0x6d')+_0x569340[_0x2da5('0x1d')][_0x2da5('0x6e')];return db[_0x2da5('0x6f')]['query'](_0x91d6f8,{'type':db['Sequelize'][_0x2da5('0x70')][_0x2da5('0x71')],'raw':!![]})[_0x2da5('0x15')](function(_0x498e3c){return _0x498e3c;});})['then'](function(_0x22eb44){if(_0x22eb44){_0x569788[_0x2da5('0x1d')][_0x2da5('0x72')]=_0x22eb44[0x0];if(!_0x90ccc2[_0x2da5('0x46')][_0x2da5('0x63')])return;return db[_0x2da5('0x73')][_0x2da5('0x45')]({'where':{'id':_0x90ccc2['body'][_0x2da5('0x63')],'role':_0x2da5('0x65')},'attributes':['id',_0x2da5('0x2a'),_0x2da5('0x74'),_0x2da5('0x75'),_0x2da5('0x76')],'raw':!![]});}return null;})['then'](function(_0x447a8e){if(!_0x447a8e)return null;_0x569788[_0x2da5('0x1d')][_0x2da5('0x65')]=_0x447a8e;return _0x569788;})[_0x2da5('0x15')](function(_0x52f634){if(_0x52f634){if(_0x90ccc2['body'][_0x2da5('0x77')]){_0x569788[_0x2da5('0x1d')][_0x2da5('0x78')]=util[_0x2da5('0x62')]('SIP/%s',_0x90ccc2[_0x2da5('0x64')]['name']);_0x569788[_0x2da5('0x1d')][_0x2da5('0x79')]=_0x569788['channel'];_0x569788[_0x2da5('0x1d')][_0x2da5('0x7a')]=_0x569788[_0x2da5('0x79')];_0x569788[_0x2da5('0x1d')][_0x2da5('0x7b')]=_0x2da5('0x5f');_0x569788['message'][_0x2da5('0x46')]=htmlToText['fromString'](_0x569788[_0x2da5('0x1d')][_0x2da5('0x46')]);return respondWithRpcPromise(_0x2da5('0x7c'),_0x2da5('0x7c'),{'event':_0x2da5('0x7d'),'message':_0x569788[_0x2da5('0x1d')]},client9002)[_0x2da5('0x15')](function(){return _0x569788;});}return _0x569788;}return null;})[_0x2da5('0x15')](respondWithResult(_0x280c02,null))[_0x2da5('0x1e')](handleError(_0x280c02,null));};exports['reject']=function(_0x247cbb,_0x4bf149){var _0x3c4108={'agent':{},'channel':_0x2da5('0x60')};if(_0x247cbb[_0x2da5('0x46')]['id']){delete _0x247cbb['body']['id'];}_0x247cbb[_0x2da5('0x46')][_0x2da5('0x63')]=_0x247cbb[_0x2da5('0x46')]['UserId']||_0x247cbb[_0x2da5('0x64')]['id'];_0x3c4108[_0x2da5('0x65')]['id']=_0x247cbb['body'][_0x2da5('0x63')];return db[_0x2da5('0x2e')][_0x2da5('0x45')]({'where':{'id':_0x247cbb[_0x2da5('0x47')]['id'],'UserId':null}})[_0x2da5('0x15')](handleEntityNotFound(_0x4bf149,null))[_0x2da5('0x15')](function(_0x7aea77){if(_0x7aea77){_0x3c4108[_0x2da5('0x1d')]=_0x7aea77['get']({'plain':!![]});return db[_0x2da5('0x7e')][_0x2da5('0x45')]({'where':{'id':_0x7aea77[_0x2da5('0x67')]}});}return null;})['then'](handleEntityNotFound(_0x4bf149,null))['then'](function(_0x402082){if(_0x402082){_0x3c4108[_0x2da5('0x69')]=_0x402082[_0x2da5('0x66')]({'plain':!![]});interaction_log['info']('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x247cbb['user']['id'],_0x247cbb[_0x2da5('0x64')]['name'],_0x247cbb[_0x2da5('0x64')]['role'],_0x3c4108['interaction']['id'],_0x247cbb[_0x2da5('0x46')]?JSON[_0x2da5('0x7f')](_0x247cbb[_0x2da5('0x46')]):'null');return respondWithRpcPromise(_0x2da5('0x80'),_0x2da5('0x81'),_0x3c4108);}return null;})['then'](function(_0x3a9c54){var _0x1c7712=_0x2da5('0x6d')+_0x3a9c54[_0x2da5('0x1d')]['ContactId'];return db['sequelize'][_0x2da5('0x33')](_0x1c7712,{'type':db[_0x2da5('0x82')][_0x2da5('0x70')][_0x2da5('0x71')],'raw':!![]})[_0x2da5('0x15')](function(_0x393183){return _0x393183;});})['then'](function(_0x23941e){if(_0x23941e){_0x3c4108[_0x2da5('0x1d')][_0x2da5('0x72')]=_0x23941e[0x0];if(!_0x247cbb[_0x2da5('0x46')][_0x2da5('0x63')])return;return db[_0x2da5('0x73')]['find']({'where':{'id':_0x247cbb[_0x2da5('0x46')][_0x2da5('0x63')],'role':'agent'},'attributes':['id',_0x2da5('0x2a'),_0x2da5('0x74'),_0x2da5('0x75'),'internal'],'raw':!![]});}return null;})[_0x2da5('0x15')](function(_0x31582b){if(!_0x31582b)return null;_0x3c4108['message'][_0x2da5('0x65')]=_0x31582b;return _0x3c4108;})[_0x2da5('0x15')](function(_0x197ad6){if(_0x197ad6){_0x197ad6[_0x2da5('0x1d')][_0x2da5('0x78')]=util['format'](_0x2da5('0x83'),_0x247cbb[_0x2da5('0x64')][_0x2da5('0x2a')]);_0x197ad6[_0x2da5('0x1d')][_0x2da5('0x79')]=_0x3c4108['channel'];_0x197ad6['message'][_0x2da5('0x7a')]=_0x3c4108[_0x2da5('0x79')];_0x197ad6[_0x2da5('0x1d')]['event']=_0x2da5('0x84');_0x197ad6['message'][_0x2da5('0x46')]=htmlToText[_0x2da5('0x85')](_0x3c4108[_0x2da5('0x1d')][_0x2da5('0x46')]);respondWithRpcPromise(_0x2da5('0x7c'),_0x2da5('0x7c'),{'event':_0x2da5('0x86'),'message':_0x197ad6[_0x2da5('0x1d')]},client9002);return _0x3c4108;}return null;})[_0x2da5('0x15')](respondWithResult(_0x4bf149,null))[_0x2da5('0x1e')](handleError(_0x4bf149,null));};exports[_0x2da5('0x87')]=function(_0x346f91,_0x397fd6){var _0x48bbdc=moment()[_0x2da5('0x88')]()[_0x2da5('0x89')]();var _0x53e0c1=path[_0x2da5('0x8a')](config[_0x2da5('0x57')],'server',_0x2da5('0x8b'),_0x2da5('0x8c'));var _0x944dda=path['join'](config['root'],'server',_0x2da5('0x8b'),'attachments');var _0x244efe=util['format']('message-%s.eml',_0x48bbdc);return db[_0x2da5('0x2e')]['find']({'where':{'id':_0x346f91[_0x2da5('0x47')]['id']},'attributes':['id',_0x2da5('0x46'),_0x2da5('0x8d'),'to','cc',_0x2da5('0x8e'),_0x2da5('0x8f'),'createdAt'],'include':_0x346f91[_0x2da5('0x33')][_0x2da5('0x56')]?[{'model':db[_0x2da5('0x90')],'as':'Attachments'}]:undefined})[_0x2da5('0x15')](handleEntityNotFound(_0x397fd6,null))[_0x2da5('0x15')](function(_0x32b90d){if(_0x32b90d){var _0x1df6ce=_0x32b90d;var _0x10b1cb={'from':_0x1df6ce[_0x2da5('0x8d')],'to':_0x1df6ce['to'],'subject':_0x1df6ce['subject'],'html':htmlEntities[_0x2da5('0x91')](_0x1df6ce[_0x2da5('0x46')]),'headers':{'Date':moment(_0x1df6ce[_0x2da5('0x92')])[_0x2da5('0x62')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x32b90d['cc']){_0x10b1cb[_0x2da5('0x93')]['Cc']=_0x32b90d['cc'];}if(_0x32b90d[_0x2da5('0x8e')]){_0x10b1cb[_0x2da5('0x93')][_0x2da5('0x94')]=_0x32b90d['bcc'];}return new BPromise(function(_0x1e68a8,_0x177e09){if(_0x32b90d[_0x2da5('0x95')]){for(var _0x1cd727=0x0;_0x1cd727<_0x32b90d[_0x2da5('0x95')][_0x2da5('0x38')];_0x1cd727++){var _0x169a2a=_0x32b90d[_0x2da5('0x95')][_0x1cd727];var _0x5beebe=path[_0x2da5('0x8a')](_0x944dda,_0x169a2a[_0x2da5('0x96')]);if(fs[_0x2da5('0x97')](_0x5beebe)){_0x10b1cb[_0x2da5('0x56')][_0x2da5('0x98')]({'name':_0x169a2a[_0x2da5('0x2a')],'contentType':_0x169a2a['type'],'data':fs[_0x2da5('0x99')](_0x5beebe)});}}}emlformat[_0x2da5('0x9a')](_0x10b1cb,function(_0x420e5c,_0xd9098e){if(_0x420e5c)return _0x177e09(_0x420e5c);fs[_0x2da5('0x9b')](path[_0x2da5('0x8a')](_0x53e0c1,_0x244efe),_0xd9098e);return _0x1e68a8(_0xd9098e);});});}})[_0x2da5('0x15')](function(_0x2c3949){if(_0x2c3949){return _0x397fd6[_0x2da5('0x87')](path[_0x2da5('0x8a')](_0x53e0c1,_0x244efe),_0x244efe,function(_0x5bf6bc){if(!_0x5bf6bc)fs[_0x2da5('0x9c')](path[_0x2da5('0x8a')](_0x53e0c1,_0x244efe));});}})[_0x2da5('0x1e')](handleError(_0x397fd6,null));};
\ No newline at end of file
+var _0xe806=['SELECT','User','fullname','email','internal','manual','interface','SIP/%s','channel','EventManager','acceptmessage','reject','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','QueryTypes','contact','event','fromString','rejectmessage','download','unix','toString','join','files','tmp','message-%s.eml','from','bcc','subject','createdAt','Attachments','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','existsSync','readFileSync','unlinkSync','eml-format','moment','bluebird','util','path','lodash','../../components/parsers/qs','api','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','jayson/promise','client','http','MailMessage,\x20%s,\x20%s','debug','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','status','offset','limit','undefined','count','set','Content-Range','json','then','end','sendStatus','name','send','index','MailMessage','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','type','VIRTUAL','filter','options','includeAll','include','rows','show','params','merge','find','update','body','destroy','describe','create','direction','MailAccount','CmList','List','CmContact','Contacts','updatedAt','DESC','MailServerOut','Smtp','CloudProvider','getSmtpOptions','attachments','root','server/files/attachments','SendMail','sendMail','messageId','format','YYYY-MM-DD\x20HH:mm:ss','mail','readAt','agent','UserId','get','MailInteraction','MailInteractionId','read1stAt','interaction','info','user','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize'];(function(_0x7791d5,_0xdab65f){var _0x5ce288=function(_0x2b818d){while(--_0x2b818d){_0x7791d5['push'](_0x7791d5['shift']());}};_0x5ce288(++_0xdab65f);}(_0xe806,0xc4));var _0x6e80=function(_0xab301d,_0x597f9c){_0xab301d=_0xab301d-0x0;var _0x3202d1=_0xe806[_0xab301d];return _0x3202d1;};'use strict';var emlformat=require(_0x6e80('0x0'));var moment=require(_0x6e80('0x1'));var BPromise=require(_0x6e80('0x2'));var util=require(_0x6e80('0x3'));var path=require(_0x6e80('0x4'));var fs=require('fs');var _=require(_0x6e80('0x5'));var Redis=require('ioredis');var htmlToText=require('html-to-text');var qs=require(_0x6e80('0x6'));var logger=require('../../config/logger')(_0x6e80('0x7'));var interaction_log=require(_0x6e80('0x8'))('mail-interactions');var config=require(_0x6e80('0x9'));var db=require(_0x6e80('0xa'))['db'];config[_0x6e80('0xb')]=_[_0x6e80('0xc')](config[_0x6e80('0xb')],{'host':_0x6e80('0xd'),'port':0x18eb});var socket=require(_0x6e80('0xe'))(new Redis(config[_0x6e80('0xb')]));var htmlEntities=require('html-entities');require(_0x6e80('0xf'))[_0x6e80('0x10')](socket);var jayson=require(_0x6e80('0x11'));var client=jayson[_0x6e80('0x12')][_0x6e80('0x13')]({'port':0x232c});var client9003=jayson['client'][_0x6e80('0x13')]({'port':0x232b});var client9002=jayson[_0x6e80('0x12')][_0x6e80('0x13')]({'port':0x232a});function respondWithRpcPromise(_0xd43d93,_0x6ff95f,_0x2d799a,_0x32b3af){return new BPromise(function(_0x23de40,_0x182921){var _0x21c973=_0x32b3af||client;return _0x21c973['request'](_0xd43d93,_0x2d799a)['then'](function(_0x3241c4){logger['info'](_0x6e80('0x14'),_0x6ff95f,'request\x20sent');logger[_0x6e80('0x15')](_0x6e80('0x16'),_0x6ff95f,_0x6e80('0x17'),JSON[_0x6e80('0x18')](_0x3241c4));if(_0x3241c4[_0x6e80('0x19')]){if(_0x3241c4['error']['code']===0x1f4){logger[_0x6e80('0x19')](_0x6e80('0x14'),_0x6ff95f,_0x3241c4[_0x6e80('0x19')][_0x6e80('0x1a')]);return _0x182921(_0x3241c4[_0x6e80('0x19')][_0x6e80('0x1a')]);}logger[_0x6e80('0x19')](_0x6e80('0x14'),_0x6ff95f,_0x3241c4[_0x6e80('0x19')]['message']);return _0x23de40(_0x3241c4['error'][_0x6e80('0x1a')]);}else{logger['info'](_0x6e80('0x14'),_0x6ff95f,_0x6e80('0x17'));_0x23de40(_0x3241c4[_0x6e80('0x1b')]['message']);}})[_0x6e80('0x1c')](function(_0x4c9cc7){logger[_0x6e80('0x19')](_0x6e80('0x14'),_0x6ff95f,_0x4c9cc7);_0x182921(_0x4c9cc7);});});}function respondWithResult(_0x144105,_0xe18fd){_0xe18fd=_0xe18fd||0xc8;return function(_0x42217){if(_0x42217){return _0x144105[_0x6e80('0x1d')](_0xe18fd)['json'](_0x42217);}};}function respondWithFilteredResult(_0x2589c8,_0x25ca18){return function(_0x5d4f06){if(_0x5d4f06){var _0x295a29=typeof _0x25ca18[_0x6e80('0x1e')]==='undefined'&&typeof _0x25ca18[_0x6e80('0x1f')]===_0x6e80('0x20');var _0x2daeff=_0x5d4f06[_0x6e80('0x21')];var _0x586242=_0x295a29?0x0:_0x25ca18[_0x6e80('0x1e')];var _0x545924=_0x295a29?_0x5d4f06[_0x6e80('0x21')]:_0x25ca18[_0x6e80('0x1e')]+_0x25ca18[_0x6e80('0x1f')];var _0x519239;if(_0x545924>=_0x2daeff){_0x545924=_0x2daeff;_0x519239=0xc8;}else{_0x519239=0xce;}_0x2589c8[_0x6e80('0x1d')](_0x519239);return _0x2589c8[_0x6e80('0x22')](_0x6e80('0x23'),_0x586242+'-'+_0x545924+'/'+_0x2daeff)[_0x6e80('0x24')](_0x5d4f06);}return null;};}function saveUpdates(_0x1f3a45){return function(_0x597a4e){if(_0x597a4e){return _0x597a4e['update'](_0x1f3a45)[_0x6e80('0x25')](function(_0x469089){return _0x469089;});}return null;};}function removeEntity(_0x12f174){return function(_0x8876e1){if(_0x8876e1){return _0x8876e1['destroy']()[_0x6e80('0x25')](function(){_0x12f174[_0x6e80('0x1d')](0xcc)[_0x6e80('0x26')]();});}};}function handleEntityNotFound(_0x1bb19a){return function(_0x1b156d){if(!_0x1b156d){_0x1bb19a[_0x6e80('0x27')](0x194);}return _0x1b156d;};}function handleError(_0x47b6d4,_0x8572b1){_0x8572b1=_0x8572b1||0x1f4;return function(_0x2ffecb){logger[_0x6e80('0x19')](_0x2ffecb['stack']);if(_0x2ffecb[_0x6e80('0x28')]){delete _0x2ffecb[_0x6e80('0x28')];}_0x47b6d4[_0x6e80('0x1d')](_0x8572b1)[_0x6e80('0x29')](_0x2ffecb);};}exports[_0x6e80('0x2a')]=function(_0x508f2a,_0x1dc2cd){var _0x28daad={},_0x325327={},_0x26351e={'count':0x0,'rows':[]};var _0x4977f0=_['map'](db[_0x6e80('0x2b')][_0x6e80('0x2c')],function(_0x4dec98){return{'name':_0x4dec98[_0x6e80('0x2d')],'type':_0x4dec98['type'][_0x6e80('0x2e')]};});_0x325327[_0x6e80('0x2f')]=_[_0x6e80('0x30')](_0x4977f0,'name');_0x325327[_0x6e80('0x31')]=_[_0x6e80('0x32')](_0x508f2a[_0x6e80('0x31')]);_0x325327[_0x6e80('0x33')]=_[_0x6e80('0x34')](_0x325327['model'],_0x325327[_0x6e80('0x31')]);_0x28daad[_0x6e80('0x35')]=_[_0x6e80('0x34')](_0x325327['model'],qs['fields'](_0x508f2a[_0x6e80('0x31')][_0x6e80('0x36')]));_0x28daad['attributes']=_0x28daad['attributes'][_0x6e80('0x37')]?_0x28daad[_0x6e80('0x35')]:_0x325327[_0x6e80('0x2f')];if(!_0x508f2a[_0x6e80('0x31')][_0x6e80('0x38')](_0x6e80('0x39'))){_0x28daad[_0x6e80('0x1f')]=qs[_0x6e80('0x1f')](_0x508f2a[_0x6e80('0x31')][_0x6e80('0x1f')]);_0x28daad[_0x6e80('0x1e')]=qs[_0x6e80('0x1e')](_0x508f2a['query'][_0x6e80('0x1e')]);}_0x28daad[_0x6e80('0x3a')]=qs[_0x6e80('0x3b')](_0x508f2a['query'][_0x6e80('0x3b')]);_0x28daad['where']=qs[_0x6e80('0x33')](_[_0x6e80('0x3c')](_0x508f2a['query'],_0x325327[_0x6e80('0x33')]),_0x4977f0);if(_0x508f2a[_0x6e80('0x31')]['filter']){_0x28daad[_0x6e80('0x3d')]=_['merge'](_0x28daad['where'],{'$or':_['map'](_0x4977f0,function(_0x58f915){if(_0x58f915[_0x6e80('0x3e')]!==_0x6e80('0x3f')){var _0x20a750={};_0x20a750[_0x58f915[_0x6e80('0x28')]]={'$like':'%'+_0x508f2a[_0x6e80('0x31')][_0x6e80('0x40')]+'%'};return _0x20a750;}})});}_0x28daad=_['merge']({},_0x28daad,_0x508f2a[_0x6e80('0x41')]);var _0x34fce8={'where':_0x28daad[_0x6e80('0x3d')]};return db[_0x6e80('0x2b')][_0x6e80('0x21')](_0x34fce8)[_0x6e80('0x25')](function(_0x4d3d7a){_0x26351e[_0x6e80('0x21')]=_0x4d3d7a;if(_0x508f2a['query'][_0x6e80('0x42')]){_0x28daad[_0x6e80('0x43')]=[{'all':!![]}];}return db['MailMessage']['findAll'](_0x28daad);})[_0x6e80('0x25')](function(_0x39bde0){_0x26351e[_0x6e80('0x44')]=_0x39bde0;return _0x26351e;})['then'](respondWithFilteredResult(_0x1dc2cd,_0x28daad))['catch'](handleError(_0x1dc2cd,null));};exports[_0x6e80('0x45')]=function(_0x533466,_0x503d13){var _0x357847={'raw':!![],'where':{'id':_0x533466[_0x6e80('0x46')]['id']}},_0x3af95f={};_0x3af95f[_0x6e80('0x2f')]=_['keys'](db[_0x6e80('0x2b')][_0x6e80('0x2c')]);_0x3af95f[_0x6e80('0x31')]=_['keys'](_0x533466[_0x6e80('0x31')]);_0x3af95f[_0x6e80('0x33')]=_[_0x6e80('0x34')](_0x3af95f[_0x6e80('0x2f')],_0x3af95f[_0x6e80('0x31')]);_0x357847[_0x6e80('0x35')]=_[_0x6e80('0x34')](_0x3af95f['model'],qs['fields'](_0x533466[_0x6e80('0x31')]['fields']));_0x357847[_0x6e80('0x35')]=_0x357847[_0x6e80('0x35')][_0x6e80('0x37')]?_0x357847[_0x6e80('0x35')]:_0x3af95f[_0x6e80('0x2f')];if(_0x533466[_0x6e80('0x31')][_0x6e80('0x42')]){_0x357847[_0x6e80('0x43')]=[{'all':!![]}];}_0x357847=_[_0x6e80('0x47')]({},_0x357847,_0x533466[_0x6e80('0x41')]);return db[_0x6e80('0x2b')][_0x6e80('0x48')](_0x357847)[_0x6e80('0x25')](handleEntityNotFound(_0x503d13,null))[_0x6e80('0x25')](respondWithResult(_0x503d13,null))[_0x6e80('0x1c')](handleError(_0x503d13,null));};exports[_0x6e80('0x49')]=function(_0x1f98fa,_0x58e883){if(_0x1f98fa['body']['id']){delete _0x1f98fa[_0x6e80('0x4a')]['id'];}return db[_0x6e80('0x2b')][_0x6e80('0x48')]({'where':{'id':_0x1f98fa[_0x6e80('0x46')]['id']}})[_0x6e80('0x25')](handleEntityNotFound(_0x58e883,null))[_0x6e80('0x25')](saveUpdates(_0x1f98fa['body'],null))[_0x6e80('0x25')](respondWithResult(_0x58e883,null))[_0x6e80('0x1c')](handleError(_0x58e883,null));};exports[_0x6e80('0x4b')]=function(_0x20e2f9,_0x3bd339){return db[_0x6e80('0x2b')][_0x6e80('0x48')]({'where':{'id':_0x20e2f9[_0x6e80('0x46')]['id']}})[_0x6e80('0x25')](handleEntityNotFound(_0x3bd339,null))['then'](removeEntity(_0x3bd339,null))[_0x6e80('0x1c')](handleError(_0x3bd339,null));};exports['describe']=function(_0x5cf6f4,_0x563a9d){return db[_0x6e80('0x2b')][_0x6e80('0x4c')]()[_0x6e80('0x25')](respondWithResult(_0x563a9d,null))[_0x6e80('0x1c')](handleError(_0x563a9d,null));};exports[_0x6e80('0x4d')]=function(_0x213023,_0x323ca2){return db[_0x6e80('0x2b')][_0x6e80('0x4d')](_0x213023[_0x6e80('0x4a')])[_0x6e80('0x25')](function(_0x1296c0){if(_0x1296c0){if(_0x1296c0[_0x6e80('0x4e')]==='out'&&!_0x1296c0['secret']){var _0x2b7efc,_0x374c09,_0x2af87e;if(_0x213023['body']['to']){_0x374c09=_0x213023[_0x6e80('0x4a')]['to']['split'](',')[0x0];}return db[_0x6e80('0x4f')]['findOne']({'where':{'id':_0x1296c0['MailAccountId']},'include':[{'model':db[_0x6e80('0x50')],'as':_0x6e80('0x51'),'include':[{'model':db[_0x6e80('0x52')],'as':_0x6e80('0x53'),'where':{'email':_0x374c09},'limit':0x1,'order':[[_0x6e80('0x54'),_0x6e80('0x55')]]}]},{'model':db[_0x6e80('0x56')],'as':_0x6e80('0x57'),'raw':!![],'include':[{'model':db[_0x6e80('0x58')],'as':_0x6e80('0x58'),'raw':!![]}]}]})[_0x6e80('0x25')](function(_0x48eabd){_0x2b7efc=_0x48eabd;if(!_0x2b7efc||!_0x2b7efc[_0x6e80('0x57')])return;var _0x22bd19=_0x2b7efc[_0x6e80('0x59')]();if(_0x213023[_0x6e80('0x4a')][_0x6e80('0x5a')]&&_0x213023[_0x6e80('0x4a')][_0x6e80('0x5a')]['length']){for(var _0x225043=0x0;_0x225043<_0x213023['body'][_0x6e80('0x5a')]['length'];_0x225043+=0x1){_0x213023['body'][_0x6e80('0x5a')][_0x225043]={'filename':_0x213023[_0x6e80('0x4a')]['attachments'][_0x225043][_0x6e80('0x28')],'path':path['join'](config[_0x6e80('0x5b')],_0x6e80('0x5c'),_0x213023[_0x6e80('0x4a')][_0x6e80('0x5a')][_0x225043]['basename'])};}}_0x2af87e={'account':_0x22bd19,'message':_0x213023[_0x6e80('0x4a')]};return;})[_0x6e80('0x25')](function(){if(_0x2b7efc[_0x6e80('0x51')]){if(_0x2b7efc[_0x6e80('0x51')]['Contacts'][_0x6e80('0x37')]){return _0x2b7efc[_0x6e80('0x51')][_0x6e80('0x53')][0x0];}else{return db[_0x6e80('0x52')][_0x6e80('0x4d')](_[_0x6e80('0xc')](_0x213023[_0x6e80('0x4a')],{'firstName':_0x213023[_0x6e80('0x4a')]['to'],'email':_0x213023['body']['to'],'phone':_0x213023[_0x6e80('0x4a')]['to'],'ListId':_0x2b7efc['ListId']}));}}else{throw new Error('List\x20not\x20found');}})[_0x6e80('0x25')](function(){if(_0x2af87e){return respondWithRpcPromise(_0x6e80('0x5d'),_0x6e80('0x5e'),_0x2af87e,client9003)[_0x6e80('0x25')](function(_0x3b6e47){return _0x1296c0['update']({'read':!![],'messageId':_0x3b6e47[_0x6e80('0x5f')],'sentAt':moment()[_0x6e80('0x60')](_0x6e80('0x61'))});})['catch'](function(_0x52a92d){logger[_0x6e80('0x19')]('%s',JSON[_0x6e80('0x18')](_0x52a92d));return _0x1296c0;});}return _0x1296c0;});}return _0x1296c0;}})[_0x6e80('0x25')](respondWithResult(_0x323ca2,0xc9))['catch'](handleError(_0x323ca2,null));};exports['accept']=function(_0x3df088,_0xeb56b1){var _0xd44141={'agent':{},'channel':_0x6e80('0x62')};if(_0x3df088[_0x6e80('0x4a')]['id']){delete _0x3df088[_0x6e80('0x4a')]['id'];}_0x3df088[_0x6e80('0x4a')]['read']=!![];_0x3df088[_0x6e80('0x4a')][_0x6e80('0x63')]=moment()[_0x6e80('0x60')]('YYYY-MM-DD\x20HH:mm:ss');_0x3df088[_0x6e80('0x4a')]['UserId']=_0x3df088[_0x6e80('0x4a')]['UserId']||_0x3df088['user']['id'];_0xd44141[_0x6e80('0x64')]['id']=_0x3df088[_0x6e80('0x4a')][_0x6e80('0x65')];return db[_0x6e80('0x2b')]['find']({'where':{'id':_0x3df088[_0x6e80('0x46')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0xeb56b1,null))['then'](saveUpdates(_0x3df088[_0x6e80('0x4a')],null))[_0x6e80('0x25')](function(_0x10d1ff){if(_0x10d1ff){_0xd44141[_0x6e80('0x1a')]=_0x10d1ff[_0x6e80('0x66')]({'plain':!![]});return db[_0x6e80('0x67')][_0x6e80('0x48')]({'where':{'id':_0x10d1ff[_0x6e80('0x68')]}});}return null;})['then'](handleEntityNotFound(_0xeb56b1,null))[_0x6e80('0x25')](function(_0xf95601){if(_0xf95601){return _0xf95601[_0x6e80('0x49')]({'UserId':_0x3df088['body'][_0x6e80('0x65')],'read1stAt':_['isNil'](_0xf95601[_0x6e80('0x69')])?moment()[_0x6e80('0x60')](_0x6e80('0x61')):undefined});}return null;})['then'](function(_0x4745c8){if(_0x4745c8){_0xd44141[_0x6e80('0x6a')]=_0x4745c8[_0x6e80('0x66')]({'plain':!![]});interaction_log[_0x6e80('0x6b')]('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x3df088[_0x6e80('0x6c')]['id'],_0x3df088[_0x6e80('0x6c')]['name'],_0x3df088['user'][_0x6e80('0x6d')],_0xd44141[_0x6e80('0x6a')]['id'],_0x3df088[_0x6e80('0x4a')]?JSON[_0x6e80('0x18')](_0x3df088[_0x6e80('0x4a')]):'null');return respondWithRpcPromise(_0x6e80('0x6e'),_0x6e80('0x6f'),_0xd44141);}return null;})[_0x6e80('0x25')](function(_0x17fef7){var _0x2a2864=_0x6e80('0x70')+_0x17fef7[_0x6e80('0x1a')][_0x6e80('0x71')];return db[_0x6e80('0x72')][_0x6e80('0x31')](_0x2a2864,{'type':db[_0x6e80('0x73')]['QueryTypes'][_0x6e80('0x74')],'raw':!![]})[_0x6e80('0x25')](function(_0x4457db){return _0x4457db;});})[_0x6e80('0x25')](function(_0x4f03dd){if(_0x4f03dd){_0xd44141[_0x6e80('0x1a')]['contact']=_0x4f03dd[0x0];if(!_0x3df088[_0x6e80('0x4a')][_0x6e80('0x65')])return;return db[_0x6e80('0x75')][_0x6e80('0x48')]({'where':{'id':_0x3df088['body'][_0x6e80('0x65')],'role':_0x6e80('0x64')},'attributes':['id',_0x6e80('0x28'),_0x6e80('0x76'),_0x6e80('0x77'),_0x6e80('0x78')],'raw':!![]});}return null;})['then'](function(_0x72477e){if(!_0x72477e)return null;_0xd44141['message'][_0x6e80('0x64')]=_0x72477e;return _0xd44141;})[_0x6e80('0x25')](function(_0x10cca0){if(_0x10cca0){if(_0x3df088[_0x6e80('0x4a')][_0x6e80('0x79')]){_0xd44141[_0x6e80('0x1a')][_0x6e80('0x7a')]=util['format'](_0x6e80('0x7b'),_0x3df088['user'][_0x6e80('0x28')]);_0xd44141[_0x6e80('0x1a')][_0x6e80('0x7c')]=_0xd44141[_0x6e80('0x7c')];_0xd44141[_0x6e80('0x1a')]['motionChannel']=_0xd44141[_0x6e80('0x7c')];_0xd44141[_0x6e80('0x1a')]['event']='accept';_0xd44141[_0x6e80('0x1a')][_0x6e80('0x4a')]=htmlToText['fromString'](_0xd44141[_0x6e80('0x1a')]['body']);return respondWithRpcPromise(_0x6e80('0x7d'),_0x6e80('0x7d'),{'event':_0x6e80('0x7e'),'message':_0xd44141[_0x6e80('0x1a')]},client9002)[_0x6e80('0x25')](function(){return _0xd44141;});}return _0xd44141;}return null;})[_0x6e80('0x25')](respondWithResult(_0xeb56b1,null))[_0x6e80('0x1c')](handleError(_0xeb56b1,null));};exports[_0x6e80('0x7f')]=function(_0x21aa43,_0x3fee3e){var _0x358bf5={'agent':{},'channel':_0x6e80('0x62')};if(_0x21aa43[_0x6e80('0x4a')]['id']){delete _0x21aa43[_0x6e80('0x4a')]['id'];}_0x21aa43[_0x6e80('0x4a')][_0x6e80('0x65')]=_0x21aa43[_0x6e80('0x4a')][_0x6e80('0x65')]||_0x21aa43[_0x6e80('0x6c')]['id'];_0x358bf5[_0x6e80('0x64')]['id']=_0x21aa43[_0x6e80('0x4a')][_0x6e80('0x65')];return db[_0x6e80('0x2b')][_0x6e80('0x48')]({'where':{'id':_0x21aa43[_0x6e80('0x46')]['id'],'UserId':null}})[_0x6e80('0x25')](handleEntityNotFound(_0x3fee3e,null))[_0x6e80('0x25')](function(_0x5a40ca){if(_0x5a40ca){_0x358bf5[_0x6e80('0x1a')]=_0x5a40ca[_0x6e80('0x66')]({'plain':!![]});return db[_0x6e80('0x67')][_0x6e80('0x48')]({'where':{'id':_0x5a40ca[_0x6e80('0x68')]}});}return null;})[_0x6e80('0x25')](handleEntityNotFound(_0x3fee3e,null))[_0x6e80('0x25')](function(_0x1a49b5){if(_0x1a49b5){_0x358bf5[_0x6e80('0x6a')]=_0x1a49b5[_0x6e80('0x66')]({'plain':!![]});interaction_log['info'](_0x6e80('0x80'),_0x21aa43[_0x6e80('0x6c')]['id'],_0x21aa43['user']['name'],_0x21aa43[_0x6e80('0x6c')][_0x6e80('0x6d')],_0x358bf5[_0x6e80('0x6a')]['id'],_0x21aa43[_0x6e80('0x4a')]?JSON[_0x6e80('0x18')](_0x21aa43[_0x6e80('0x4a')]):_0x6e80('0x81'));return respondWithRpcPromise(_0x6e80('0x82'),_0x6e80('0x83'),_0x358bf5);}return null;})[_0x6e80('0x25')](function(_0x3f527e){var _0x5df8c8=_0x6e80('0x70')+_0x3f527e[_0x6e80('0x1a')]['ContactId'];return db[_0x6e80('0x72')][_0x6e80('0x31')](_0x5df8c8,{'type':db['Sequelize'][_0x6e80('0x84')]['SELECT'],'raw':!![]})[_0x6e80('0x25')](function(_0x1cafcf){return _0x1cafcf;});})[_0x6e80('0x25')](function(_0x56e3a2){if(_0x56e3a2){_0x358bf5[_0x6e80('0x1a')][_0x6e80('0x85')]=_0x56e3a2[0x0];if(!_0x21aa43['body'][_0x6e80('0x65')])return;return db[_0x6e80('0x75')][_0x6e80('0x48')]({'where':{'id':_0x21aa43[_0x6e80('0x4a')]['UserId'],'role':'agent'},'attributes':['id',_0x6e80('0x28'),_0x6e80('0x76'),_0x6e80('0x77'),_0x6e80('0x78')],'raw':!![]});}return null;})[_0x6e80('0x25')](function(_0x2c8ccd){if(!_0x2c8ccd)return null;_0x358bf5[_0x6e80('0x1a')][_0x6e80('0x64')]=_0x2c8ccd;return _0x358bf5;})[_0x6e80('0x25')](function(_0x59f00d){if(_0x59f00d){_0x59f00d[_0x6e80('0x1a')][_0x6e80('0x7a')]=util[_0x6e80('0x60')](_0x6e80('0x7b'),_0x21aa43['user'][_0x6e80('0x28')]);_0x59f00d['message'][_0x6e80('0x7c')]=_0x358bf5[_0x6e80('0x7c')];_0x59f00d[_0x6e80('0x1a')]['motionChannel']=_0x358bf5[_0x6e80('0x7c')];_0x59f00d[_0x6e80('0x1a')][_0x6e80('0x86')]=_0x6e80('0x7f');_0x59f00d[_0x6e80('0x1a')][_0x6e80('0x4a')]=htmlToText[_0x6e80('0x87')](_0x358bf5['message'][_0x6e80('0x4a')]);respondWithRpcPromise('EventManager',_0x6e80('0x7d'),{'event':_0x6e80('0x88'),'message':_0x59f00d[_0x6e80('0x1a')]},client9002);return _0x358bf5;}return null;})[_0x6e80('0x25')](respondWithResult(_0x3fee3e,null))['catch'](handleError(_0x3fee3e,null));};exports[_0x6e80('0x89')]=function(_0x500c47,_0x2e5833){var _0x5f4c95=moment()[_0x6e80('0x8a')]()[_0x6e80('0x8b')]();var _0x531749=path[_0x6e80('0x8c')](config[_0x6e80('0x5b')],'server',_0x6e80('0x8d'),_0x6e80('0x8e'));var _0x53d7e5=path[_0x6e80('0x8c')](config[_0x6e80('0x5b')],'server','files',_0x6e80('0x5a'));var _0x2896d6=util[_0x6e80('0x60')](_0x6e80('0x8f'),_0x5f4c95);return db[_0x6e80('0x2b')]['find']({'where':{'id':_0x500c47[_0x6e80('0x46')]['id']},'attributes':['id',_0x6e80('0x4a'),_0x6e80('0x90'),'to','cc',_0x6e80('0x91'),_0x6e80('0x92'),_0x6e80('0x93')],'include':_0x500c47[_0x6e80('0x31')][_0x6e80('0x5a')]?[{'model':db['Attachment'],'as':_0x6e80('0x94')}]:undefined})[_0x6e80('0x25')](handleEntityNotFound(_0x2e5833,null))[_0x6e80('0x25')](function(_0x503c40){if(_0x503c40){var _0x569045=_0x503c40;var _0x3a9beb={'from':_0x569045[_0x6e80('0x90')],'to':_0x569045['to'],'subject':_0x569045[_0x6e80('0x92')],'html':htmlEntities[_0x6e80('0x95')](_0x569045[_0x6e80('0x4a')]),'headers':{'Date':moment(_0x569045['createdAt'])[_0x6e80('0x60')](_0x6e80('0x96'))},'attachments':[]};if(_0x503c40['cc']){_0x3a9beb[_0x6e80('0x97')]['Cc']=_0x503c40['cc'];}if(_0x503c40['bcc']){_0x3a9beb[_0x6e80('0x97')][_0x6e80('0x98')]=_0x503c40[_0x6e80('0x91')];}return new BPromise(function(_0x406d5a,_0x331174){if(_0x503c40['Attachments']){for(var _0x51a609=0x0;_0x51a609<_0x503c40[_0x6e80('0x94')][_0x6e80('0x37')];_0x51a609++){var _0x505b6a=_0x503c40[_0x6e80('0x94')][_0x51a609];var _0x1d676c=path[_0x6e80('0x8c')](_0x53d7e5,_0x505b6a['basename']);if(fs[_0x6e80('0x99')](_0x1d676c)){_0x3a9beb['attachments']['push']({'name':_0x505b6a[_0x6e80('0x28')],'contentType':_0x505b6a[_0x6e80('0x3e')],'data':fs[_0x6e80('0x9a')](_0x1d676c)});}}}emlformat['build'](_0x3a9beb,function(_0x29039e,_0x3d1d35){if(_0x29039e)return _0x331174(_0x29039e);fs['writeFileSync'](path[_0x6e80('0x8c')](_0x531749,_0x2896d6),_0x3d1d35);return _0x406d5a(_0x3d1d35);});});}})['then'](function(_0x2ecb6c){if(_0x2ecb6c){return _0x2e5833['download'](path['join'](_0x531749,_0x2896d6),_0x2896d6,function(_0x1112ef){if(!_0x1112ef)fs[_0x6e80('0x9b')](path[_0x6e80('0x8c')](_0x531749,_0x2896d6));});}})[_0x6e80('0x1c')](handleError(_0x2e5833,null));};
\ No newline at end of file
index 8722187..ce54924 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4d6=['../../mysqldb','MailMessage','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events'];(function(_0x4a0432,_0x483194){var _0x2297ec=function(_0x320df6){while(--_0x320df6){_0x4a0432['push'](_0x4a0432['shift']());}};_0x2297ec(++_0x483194);}(_0xf4d6,0x117));var _0x6f4d=function(_0x19526a,_0xddfd18){_0x19526a=_0x19526a-0x0;var _0x3c2f1f=_0xf4d6[_0x19526a];return _0x3c2f1f;};'use strict';var EventEmitter=require(_0x6f4d('0x0'));var MailMessage=require(_0x6f4d('0x1'))['db'][_0x6f4d('0x2')];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x6f4d('0x3')](0x0);var events={'afterCreate':_0x6f4d('0x4'),'afterUpdate':_0x6f4d('0x5'),'afterDestroy':'remove'};function emitEvent(_0x12c320){return function(_0x2bd9f0,_0x342778,_0x4818e8){MailMessageEvents[_0x6f4d('0x6')](_0x12c320+':'+_0x2bd9f0['id'],_0x2bd9f0);MailMessageEvents['emit'](_0x12c320,_0x2bd9f0);_0x4818e8(null);};}for(var e in events){if(events[_0x6f4d('0x7')](e)){var event=events[e];MailMessage[_0x6f4d('0x8')](e,emitEvent(event));}}module[_0x6f4d('0x9')]=MailMessageEvents;
\ No newline at end of file
+var _0x6827=['events','../../mysqldb','setMaxListeners','save','update','remove','emit'];(function(_0x3a3d5f,_0xb7dfc6){var _0x493475=function(_0x142af1){while(--_0x142af1){_0x3a3d5f['push'](_0x3a3d5f['shift']());}};_0x493475(++_0xb7dfc6);}(_0x6827,0x165));var _0x7682=function(_0x3d6bb8,_0x4b762a){_0x3d6bb8=_0x3d6bb8-0x0;var _0x525af3=_0x6827[_0x3d6bb8];return _0x525af3;};'use strict';var EventEmitter=require(_0x7682('0x0'));var MailMessage=require(_0x7682('0x1'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x7682('0x2')](0x0);var events={'afterCreate':_0x7682('0x3'),'afterUpdate':_0x7682('0x4'),'afterDestroy':_0x7682('0x5')};function emitEvent(_0x2df1d1){return function(_0x57c9e0,_0x188a42,_0x14b8a7){MailMessageEvents[_0x7682('0x6')](_0x2df1d1+':'+_0x57c9e0['id'],_0x57c9e0);MailMessageEvents['emit'](_0x2df1d1,_0x57c9e0);_0x14b8a7(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailMessage['hook'](e,emitEvent(event));}}module['exports']=MailMessageEvents;
\ No newline at end of file
index 7708224..b613e3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4da=['html-to-text','path','rimraf','../../config/environment','./mailMessage.attributes','MailMessage','mail_messages','messageId','fti_mail_messages','subject','FULLTEXT','body','models','direction','toLowerCase','out','isNil','UserId','MailInteraction','then','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger','api','moment','request-promise'];(function(_0x5ce8b9,_0x5cded8){var _0xe34be0=function(_0xe3d4e5){while(--_0xe3d4e5){_0x5ce8b9['push'](_0x5ce8b9['shift']());}};_0xe34be0(++_0x5cded8);}(_0xa4da,0x16f));var _0xaa4d=function(_0x37b3e5,_0x33b516){_0x37b3e5=_0x37b3e5-0x0;var _0x207f20=_0xa4da[_0x37b3e5];return _0x207f20;};'use strict';var _=require('lodash');var util=require(_0xaa4d('0x0'));var logger=require(_0xaa4d('0x1'))(_0xaa4d('0x2'));var moment=require(_0xaa4d('0x3'));var BPromise=require('bluebird');var rp=require(_0xaa4d('0x4'));var htmlToText=require(_0xaa4d('0x5'));var fs=require('fs');var path=require(_0xaa4d('0x6'));var rimraf=require(_0xaa4d('0x7'));var config=require(_0xaa4d('0x8'));var attributes=require(_0xaa4d('0x9'));module['exports']=function(_0x5357d1,_0xe83f2b){return _0x5357d1['define'](_0xaa4d('0xa'),attributes,{'tableName':_0xaa4d('0xb'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0xaa4d('0xc')]},{'name':_0xaa4d('0xd'),'fields':['plainBody',_0xaa4d('0xe')],'type':_0xaa4d('0xf')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x336493,_0x2bd1e5,_0x21ecec){if(_0x336493['body']){_0x336493['plainBody']=htmlToText['fromString'](_0x336493[_0xaa4d('0x10')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x21ecec(null,_0x2bd1e5);},'afterCreate':function(_0x46da77,_0x46f11a,_0x27475a){var _0x3fe5e8=_0x5357d1[_0xaa4d('0x11')];var _0x3a8dbb=_0x46da77['get']({'plain':!![]});if(_0x3a8dbb['direction']['toLowerCase']()==='in'||_0x3a8dbb[_0xaa4d('0x12')][_0xaa4d('0x13')]()===_0xaa4d('0x14')&&!_0x3a8dbb['secret']&&!_[_0xaa4d('0x15')](_0x3a8dbb[_0xaa4d('0x16')])){_0x3fe5e8[_0xaa4d('0x17')]['findOne']({'where':{'id':_0x3a8dbb['MailInteractionId']}})[_0xaa4d('0x18')](function(_0x3a9877){if(_0x3a9877){_0x3a9877[_0xaa4d('0x19')]({'lastMsgAt':_0x3a8dbb[_0xaa4d('0x1a')],'lastMsgDirection':_0x3a8dbb[_0xaa4d('0x12')]['toLowerCase']()});}})[_0xaa4d('0x1b')](function(_0x30f1aa){console[_0xaa4d('0x1c')](_0x30f1aa);});}_0x27475a();}},'charset':_0xaa4d('0x1d'),'collate':_0xaa4d('0x1e')});};
\ No newline at end of file
+var _0xa307=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailMessage.attributes','exports','define','MailMessage','messageId','fti_mail_messages','plainBody','subject','body','fromString','models','get','direction','toLowerCase','secret','isNil','findOne','MailInteractionId','then','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x5bd833,_0x36b8bc){var _0x266491=function(_0x30d40c){while(--_0x30d40c){_0x5bd833['push'](_0x5bd833['shift']());}};_0x266491(++_0x36b8bc);}(_0xa307,0x1b7));var _0x7a30=function(_0x4af8b6,_0x4a700a){_0x4af8b6=_0x4af8b6-0x0;var _0x51c27d=_0xa307[_0x4af8b6];return _0x51c27d;};'use strict';var _=require(_0x7a30('0x0'));var util=require(_0x7a30('0x1'));var logger=require(_0x7a30('0x2'))(_0x7a30('0x3'));var moment=require(_0x7a30('0x4'));var BPromise=require(_0x7a30('0x5'));var rp=require(_0x7a30('0x6'));var htmlToText=require('html-to-text');var fs=require('fs');var path=require(_0x7a30('0x7'));var rimraf=require(_0x7a30('0x8'));var config=require(_0x7a30('0x9'));var attributes=require(_0x7a30('0xa'));module[_0x7a30('0xb')]=function(_0x1960d3,_0x29c48b){return _0x1960d3[_0x7a30('0xc')](_0x7a30('0xd'),attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':_0x7a30('0xe'),'fields':[_0x7a30('0xe')]},{'name':_0x7a30('0xf'),'fields':[_0x7a30('0x10'),_0x7a30('0x11')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5c2119,_0xadf55a,_0x28838b){if(_0x5c2119[_0x7a30('0x12')]){_0x5c2119[_0x7a30('0x10')]=htmlToText[_0x7a30('0x13')](_0x5c2119[_0x7a30('0x12')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x28838b(null,_0xadf55a);},'afterCreate':function(_0x7a18f0,_0x546c1e,_0x51d8a5){var _0x48366e=_0x1960d3[_0x7a30('0x14')];var _0x56caf4=_0x7a18f0[_0x7a30('0x15')]({'plain':!![]});if(_0x56caf4[_0x7a30('0x16')][_0x7a30('0x17')]()==='in'||_0x56caf4[_0x7a30('0x16')][_0x7a30('0x17')]()==='out'&&!_0x56caf4[_0x7a30('0x18')]&&!_[_0x7a30('0x19')](_0x56caf4['UserId'])){_0x48366e['MailInteraction'][_0x7a30('0x1a')]({'where':{'id':_0x56caf4[_0x7a30('0x1b')]}})[_0x7a30('0x1c')](function(_0x532c43){if(_0x532c43){_0x532c43['update']({'lastMsgAt':_0x56caf4[_0x7a30('0x1d')],'lastMsgDirection':_0x56caf4[_0x7a30('0x16')][_0x7a30('0x17')]()});}})[_0x7a30('0x1e')](function(_0x7a8469){console[_0x7a30('0x1f')](_0x7a8469);});}_0x51d8a5();}},'charset':_0x7a30('0x20'),'collate':_0x7a30('0x21')});};
\ No newline at end of file
index 7113b62..db1b931 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7916=['request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateMailMessage','MailMessage','body','options','raw','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','defaults','localhost','./mailMessage.socket','register'];(function(_0x214cc3,_0x81abb8){var _0x512d48=function(_0x4065af){while(--_0x4065af){_0x214cc3['push'](_0x214cc3['shift']());}};_0x512d48(++_0x81abb8);}(_0x7916,0x128));var _0x6791=function(_0x23c4a9,_0x15eaf1){_0x23c4a9=_0x23c4a9-0x0;var _0xf708c5=_0x7916[_0x23c4a9];return _0xf708c5;};'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('jayson/promise');var client=jayson[_0x6791('0x8')][_0x6791('0x9')]({'port':0x232a});config['redis']=_[_0x6791('0xa')](config['redis'],{'host':_0x6791('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x6791('0xc'))[_0x6791('0xd')](socket);function respondWithRpcPromise(_0x579950,_0xbc3bc6,_0x2769a4){return new BPromise(function(_0x2aeae9,_0x495d9c){return client[_0x6791('0xe')](_0x579950,_0x2769a4)[_0x6791('0xf')](function(_0x2025dd){logger[_0x6791('0x10')](_0x6791('0x11'),_0xbc3bc6,_0x6791('0x12'));logger[_0x6791('0x13')](_0x6791('0x14'),_0xbc3bc6,_0x6791('0x12'),JSON[_0x6791('0x15')](_0x2025dd));if(_0x2025dd[_0x6791('0x16')]){if(_0x2025dd['error']['code']===0x1f4){logger[_0x6791('0x16')]('MailMessage,\x20%s,\x20%s',_0xbc3bc6,_0x2025dd[_0x6791('0x16')]['message']);return _0x495d9c(_0x2025dd[_0x6791('0x16')][_0x6791('0x17')]);}logger['error'](_0x6791('0x11'),_0xbc3bc6,_0x2025dd['error'][_0x6791('0x17')]);return _0x2aeae9(_0x2025dd[_0x6791('0x16')]['message']);}else{logger[_0x6791('0x10')](_0x6791('0x11'),_0xbc3bc6,'request\x20sent');_0x2aeae9(_0x2025dd[_0x6791('0x18')]['message']);}})[_0x6791('0x19')](function(_0x126451){logger[_0x6791('0x16')](_0x6791('0x11'),_0xbc3bc6,_0x126451);_0x495d9c(_0x126451);});});}exports[_0x6791('0x1a')]=function(_0x2bc0ab){var _0x2ba11a=this;return new Promise(function(_0x581d51,_0x4a2922){return db[_0x6791('0x1b')]['create'](_0x2bc0ab[_0x6791('0x1c')],{'raw':_0x2bc0ab[_0x6791('0x1d')]?_0x2bc0ab['options'][_0x6791('0x1e')]===undefined?!![]:![]:!![]})[_0x6791('0xf')](function(_0x15b9ab){logger[_0x6791('0x10')]('CreateMailMessage',_0x2bc0ab);logger[_0x6791('0x13')](_0x6791('0x1a'),_0x2bc0ab,JSON['stringify'](_0x15b9ab));_0x581d51(_0x15b9ab);})['catch'](function(_0x4b23bc){logger[_0x6791('0x16')]('CreateMailMessage',_0x4b23bc[_0x6791('0x17')],_0x2bc0ab);_0x4a2922(_0x2ba11a['error'](0x1f4,_0x4b23bc['message']));});});};
\ No newline at end of file
+var _0x36ee=['catch','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./mailMessage.socket','register','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CreateMailMessage','MailMessage','create','body','options','debug'];(function(_0x592d9a,_0x2c2e8b){var _0x305c6b=function(_0x2354b9){while(--_0x2354b9){_0x592d9a['push'](_0x592d9a['shift']());}};_0x305c6b(++_0x2c2e8b);}(_0x36ee,0xe8));var _0xe36e=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x36ee[_0x5b644e];return _0x49c6bf;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe36e('0x0'));var BPromise=require('bluebird');var rs=require(_0xe36e('0x1'));var fs=require('fs');var Redis=require(_0xe36e('0x2'));var db=require(_0xe36e('0x3'))['db'];var utils=require(_0xe36e('0x4'));var logger=require(_0xe36e('0x5'))(_0xe36e('0x6'));var config=require(_0xe36e('0x7'));var jayson=require(_0xe36e('0x8'));var client=jayson[_0xe36e('0x9')][_0xe36e('0xa')]({'port':0x232a});config[_0xe36e('0xb')]=_[_0xe36e('0xc')](config['redis'],{'host':_0xe36e('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe36e('0xb')]));require(_0xe36e('0xe'))[_0xe36e('0xf')](socket);function respondWithRpcPromise(_0x47ce3a,_0xf119e4,_0x48981b){return new BPromise(function(_0x2e968d,_0x2133cf){return client[_0xe36e('0x10')](_0x47ce3a,_0x48981b)[_0xe36e('0x11')](function(_0xce0110){logger[_0xe36e('0x12')](_0xe36e('0x13'),_0xf119e4,_0xe36e('0x14'));logger['debug'](_0xe36e('0x15'),_0xf119e4,_0xe36e('0x14'),JSON[_0xe36e('0x16')](_0xce0110));if(_0xce0110[_0xe36e('0x17')]){if(_0xce0110['error'][_0xe36e('0x18')]===0x1f4){logger['error']('MailMessage,\x20%s,\x20%s',_0xf119e4,_0xce0110[_0xe36e('0x17')][_0xe36e('0x19')]);return _0x2133cf(_0xce0110[_0xe36e('0x17')][_0xe36e('0x19')]);}logger[_0xe36e('0x17')](_0xe36e('0x13'),_0xf119e4,_0xce0110[_0xe36e('0x17')][_0xe36e('0x19')]);return _0x2e968d(_0xce0110[_0xe36e('0x17')][_0xe36e('0x19')]);}else{logger['info'](_0xe36e('0x13'),_0xf119e4,_0xe36e('0x14'));_0x2e968d(_0xce0110['result'][_0xe36e('0x19')]);}})['catch'](function(_0x471400){logger[_0xe36e('0x17')]('MailMessage,\x20%s,\x20%s',_0xf119e4,_0x471400);_0x2133cf(_0x471400);});});}exports[_0xe36e('0x1a')]=function(_0x6aa186){var _0x21efe7=this;return new Promise(function(_0x597331,_0x21e95e){return db[_0xe36e('0x1b')][_0xe36e('0x1c')](_0x6aa186[_0xe36e('0x1d')],{'raw':_0x6aa186[_0xe36e('0x1e')]?_0x6aa186[_0xe36e('0x1e')]['raw']===undefined?!![]:![]:!![]})[_0xe36e('0x11')](function(_0x4f214a){logger[_0xe36e('0x12')](_0xe36e('0x1a'),_0x6aa186);logger[_0xe36e('0x1f')]('CreateMailMessage',_0x6aa186,JSON['stringify'](_0x4f214a));_0x597331(_0x4f214a);})[_0xe36e('0x20')](function(_0x10818d){logger[_0xe36e('0x17')](_0xe36e('0x1a'),_0x10818d[_0xe36e('0x19')],_0x6aa186);_0x21e95e(_0x21efe7[_0xe36e('0x17')](0x1f4,_0x10818d[_0xe36e('0x19')]));});});};
\ No newline at end of file
index ec7504d..ac07758 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bc2=['emit','removeListener','register','mailMessage:','./mailMessage.events','save','update'];(function(_0x4ff09b,_0x53f67d){var _0x3f5c2e=function(_0x124592){while(--_0x124592){_0x4ff09b['push'](_0x4ff09b['shift']());}};_0x3f5c2e(++_0x53f67d);}(_0x4bc2,0xe4));var _0x24bc=function(_0x49ddb0,_0x2981c5){_0x49ddb0=_0x49ddb0-0x0;var _0x250b42=_0x4bc2[_0x49ddb0];return _0x250b42;};'use strict';var MailMessageEvents=require(_0x24bc('0x0'));var events=[_0x24bc('0x1'),'remove',_0x24bc('0x2')];function createListener(_0xeeeda8,_0x21c882){return function(_0x695a80){_0x21c882[_0x24bc('0x3')](_0xeeeda8,_0x695a80);};}function removeListener(_0x4d67ed,_0x5e453c){return function(){MailMessageEvents[_0x24bc('0x4')](_0x4d67ed,_0x5e453c);};}exports[_0x24bc('0x5')]=function(_0x2d12ff){for(var _0x15f38a=0x0,_0x1bca1c=events['length'];_0x15f38a<_0x1bca1c;_0x15f38a++){var _0x74176=events[_0x15f38a];var _0x383dd8=createListener(_0x24bc('0x6')+_0x74176,_0x2d12ff);MailMessageEvents['on'](_0x74176,_0x383dd8);}};
\ No newline at end of file
+var _0xb09d=['mailMessage:','save','remove','update'];(function(_0x417b29,_0x4de527){var _0x3ffe38=function(_0x295f33){while(--_0x295f33){_0x417b29['push'](_0x417b29['shift']());}};_0x3ffe38(++_0x4de527);}(_0xb09d,0x171));var _0xdb09=function(_0x25d5ff,_0x35273f){_0x25d5ff=_0x25d5ff-0x0;var _0xc06310=_0xb09d[_0x25d5ff];return _0xc06310;};'use strict';var MailMessageEvents=require('./mailMessage.events');var events=[_0xdb09('0x0'),_0xdb09('0x1'),_0xdb09('0x2')];function createListener(_0x28a5c7,_0x24d974){return function(_0x27680d){_0x24d974['emit'](_0x28a5c7,_0x27680d);};}function removeListener(_0xce79db,_0x71b1d6){return function(){MailMessageEvents['removeListener'](_0xce79db,_0x71b1d6);};}exports['register']=function(_0x4e81de){for(var _0x50ae5a=0x0,_0x29d58b=events['length'];_0x50ae5a<_0x29d58b;_0x50ae5a++){var _0x44cbef=events[_0x50ae5a];var _0x1009af=createListener(_0xdb09('0x3')+_0x44cbef,_0x4e81de);MailMessageEvents['on'](_0x44cbef,_0x1009af);}};
\ No newline at end of file
index 751227c..4a48904 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e2d=['../../config/environment','./mailQueue.controller','get','/describe','isAuthenticated','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','/:id','update','delete','removeTeams','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0xa3fadc,_0xd1e16){var _0x23ecb8=function(_0x2c71f7){while(--_0x2c71f7){_0xa3fadc['push'](_0xa3fadc['shift']());}};_0x23ecb8(++_0xd1e16);}(_0x2e2d,0x107));var _0xd2e2=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x2e2d[_0x21a9d9];return _0x46adce;};'use strict';var multer=require(_0xd2e2('0x0'));var util=require(_0xd2e2('0x1'));var path=require(_0xd2e2('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd2e2('0x3')]();var fs_extra=require(_0xd2e2('0x4'));var auth=require(_0xd2e2('0x5'));var interaction=require(_0xd2e2('0x6'));var config=require(_0xd2e2('0x7'));var controller=require(_0xd2e2('0x8'));router[_0xd2e2('0x9')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xd2e2('0xa'),auth[_0xd2e2('0xb')](),controller['describe']);router[_0xd2e2('0x9')]('/:id',auth[_0xd2e2('0xb')](),controller[_0xd2e2('0xc')]);router['get'](_0xd2e2('0xd'),auth['isAuthenticated'](),controller[_0xd2e2('0xe')]);router[_0xd2e2('0x9')](_0xd2e2('0xf'),auth[_0xd2e2('0xb')](),controller[_0xd2e2('0x10')]);router[_0xd2e2('0x9')](_0xd2e2('0x11'),auth[_0xd2e2('0xb')](),controller[_0xd2e2('0x12')]);router[_0xd2e2('0x13')]('/',auth['isAuthenticated'](),controller[_0xd2e2('0x14')]);router['post'](_0xd2e2('0xf'),auth[_0xd2e2('0xb')](),controller[_0xd2e2('0x15')]);router[_0xd2e2('0x13')]('/:id/users',auth[_0xd2e2('0xb')](),controller['addAgents']);router['put'](_0xd2e2('0x16'),auth[_0xd2e2('0xb')](),controller[_0xd2e2('0x17')]);router[_0xd2e2('0x18')]('/:id',auth[_0xd2e2('0xb')](),controller['destroy']);router['delete'](_0xd2e2('0xf'),auth[_0xd2e2('0xb')](),controller[_0xd2e2('0x19')]);router[_0xd2e2('0x18')](_0xd2e2('0x11'),auth[_0xd2e2('0xb')](),controller['removeAgents']);module[_0xd2e2('0x1a')]=router;
\ No newline at end of file
+var _0xce11=['../../components/interaction/service','get','isAuthenticated','/describe','describe','show','/:id/members','/:id/teams','getAgents','post','addAgents','put','/:id','update','delete','removeTeams','/:id/users','removeAgents','exports','util','path','connect-timeout','express','Router'];(function(_0x125ff8,_0x41925f){var _0x2d9ef=function(_0x4ef34c){while(--_0x4ef34c){_0x125ff8['push'](_0x125ff8['shift']());}};_0x2d9ef(++_0x41925f);}(_0xce11,0x163));var _0x1ce1=function(_0x565a11,_0x2767a8){_0x565a11=_0x565a11-0x0;var _0x8bdfcc=_0xce11[_0x565a11];return _0x8bdfcc;};'use strict';var multer=require('multer');var util=require(_0x1ce1('0x0'));var path=require(_0x1ce1('0x1'));var timeout=require(_0x1ce1('0x2'));var express=require(_0x1ce1('0x3'));var router=express[_0x1ce1('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x1ce1('0x5'));var config=require('../../config/environment');var controller=require('./mailQueue.controller');router[_0x1ce1('0x6')]('/',auth[_0x1ce1('0x7')](),controller['index']);router[_0x1ce1('0x6')](_0x1ce1('0x8'),auth['isAuthenticated'](),controller[_0x1ce1('0x9')]);router[_0x1ce1('0x6')]('/:id',auth['isAuthenticated'](),controller[_0x1ce1('0xa')]);router['get'](_0x1ce1('0xb'),auth[_0x1ce1('0x7')](),controller['getMembers']);router['get'](_0x1ce1('0xc'),auth[_0x1ce1('0x7')](),controller['getTeams']);router['get']('/:id/users',auth[_0x1ce1('0x7')](),controller[_0x1ce1('0xd')]);router[_0x1ce1('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x1ce1('0xe')](_0x1ce1('0xc'),auth['isAuthenticated'](),controller['addTeams']);router[_0x1ce1('0xe')]('/:id/users',auth['isAuthenticated'](),controller[_0x1ce1('0xf')]);router[_0x1ce1('0x10')](_0x1ce1('0x11'),auth[_0x1ce1('0x7')](),controller[_0x1ce1('0x12')]);router[_0x1ce1('0x13')](_0x1ce1('0x11'),auth['isAuthenticated'](),controller['destroy']);router[_0x1ce1('0x13')](_0x1ce1('0xc'),auth[_0x1ce1('0x7')](),controller[_0x1ce1('0x14')]);router[_0x1ce1('0x13')](_0x1ce1('0x15'),auth[_0x1ce1('0x7')](),controller[_0x1ce1('0x16')]);module[_0x1ce1('0x17')]=router;
\ No newline at end of file
index 1f7def4..46d860b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44b8=['exports','STRING','name','INTEGER','rrmemory','beepall','roundrobin','sequelize'];(function(_0x365fc3,_0x120079){var _0x21451f=function(_0x2861f3){while(--_0x2861f3){_0x365fc3['push'](_0x365fc3['shift']());}};_0x21451f(++_0x120079);}(_0x44b8,0xaf));var _0x844b=function(_0x46479c,_0x5e5faa){_0x46479c=_0x46479c-0x0;var _0x379642=_0x44b8[_0x46479c];return _0x379642;};'use strict';var Sequelize=require(_0x844b('0x0'));module[_0x844b('0x1')]={'name':{'type':Sequelize[_0x844b('0x2')],'unique':_0x844b('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x844b('0x2')]},'timeout':{'type':Sequelize[_0x844b('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x844b('0x5'),_0x844b('0x6'),_0x844b('0x7'))}};
\ No newline at end of file
+var _0x53a2=['beepall','roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM'];(function(_0x3a528b,_0x3ffcf5){var _0x4f211c=function(_0x35ac23){while(--_0x35ac23){_0x3a528b['push'](_0x3a528b['shift']());}};_0x4f211c(++_0x3ffcf5);}(_0x53a2,0xea));var _0x253a=function(_0x4e9628,_0x250573){_0x4e9628=_0x4e9628-0x0;var _0x27bc8c=_0x53a2[_0x4e9628];return _0x27bc8c;};'use strict';var Sequelize=require(_0x253a('0x0'));module[_0x253a('0x1')]={'name':{'type':Sequelize[_0x253a('0x2')],'unique':_0x253a('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x253a('0x2')]},'timeout':{'type':Sequelize[_0x253a('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x253a('0x5')]('rrmemory',_0x253a('0x6'),_0x253a('0x7'))}};
\ No newline at end of file
index c05e2ae..96d60cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb7=['where','MailQueue','include','query','findAll','catch','show','params','model','keys','filters','attributes','fields','length','merge','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserMailQueue','nolimit','order','sort','pick','MailQueueId','filter','options','User','UserId','agent','mailPause','updatedAt','createdAt','rows','format','%s/%s','SIP','getTeams','Team','intersection','hasOwnProperty','addTeams','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','ids','select','field','tq.TeamId','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','includes','union','compact','isEmpty','removeAgents','userMailQueue:remove','addAgents','omit','spread','getAgents','bluebird','util','squel','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','update','then','destroy','get','MailQueues','UserProfileResource','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','getOptions'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xadb7,0x1d1));var _0x7adb=function(_0x4e2e1f,_0x55bb64){_0x4e2e1f=_0x4e2e1f-0x0;var _0x4439c1=_0xadb7[_0x4e2e1f];return _0x4439c1;};'use strict';var BPromise=require(_0x7adb('0x0'));var util=require(_0x7adb('0x1'));var _=require('lodash');var squel=require(_0x7adb('0x2'));var Redis=require(_0x7adb('0x3'));var qs=require(_0x7adb('0x4'));var logger=require(_0x7adb('0x5'))(_0x7adb('0x6'));var config=require(_0x7adb('0x7'));var db=require('../../mysqldb')['db'];config[_0x7adb('0x8')]=_[_0x7adb('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x7adb('0xa'))(new Redis(config['redis']));require(_0x7adb('0xb'))[_0x7adb('0xc')](socket);function respondWithStatusCode(_0x237cbc,_0xd502a9){_0xd502a9=_0xd502a9||0xcc;return function(_0x1527b2){if(_0x1527b2){return _0x237cbc[_0x7adb('0xd')](_0xd502a9);}return _0x237cbc[_0x7adb('0xe')](_0xd502a9)['end']();};}function respondWithResult(_0x12d43f,_0x29d85c){_0x29d85c=_0x29d85c||0xc8;return function(_0x3db5ea){if(_0x3db5ea){return _0x12d43f[_0x7adb('0xe')](_0x29d85c)[_0x7adb('0xf')](_0x3db5ea);}};}function respondWithFilteredResult(_0x26e3f0,_0x15255d){return function(_0x5320a9){if(_0x5320a9){var _0x33bd14=typeof _0x15255d[_0x7adb('0x10')]==='undefined'&&typeof _0x15255d[_0x7adb('0x11')]===_0x7adb('0x12');var _0xc0554f=_0x5320a9[_0x7adb('0x13')];var _0x43d861=_0x33bd14?0x0:_0x15255d['offset'];var _0x5a131c=_0x33bd14?_0x5320a9[_0x7adb('0x13')]:_0x15255d[_0x7adb('0x10')]+_0x15255d[_0x7adb('0x11')];var _0x37c795;if(_0x5a131c>=_0xc0554f){_0x5a131c=_0xc0554f;_0x37c795=0xc8;}else{_0x37c795=0xce;}_0x26e3f0['status'](_0x37c795);return _0x26e3f0[_0x7adb('0x14')](_0x7adb('0x15'),_0x43d861+'-'+_0x5a131c+'/'+_0xc0554f)[_0x7adb('0xf')](_0x5320a9);}return null;};}function saveUpdates(_0x136592){return function(_0x4417fe){if(_0x4417fe){return _0x4417fe[_0x7adb('0x16')](_0x136592)[_0x7adb('0x17')](function(_0x5260f6){return _0x5260f6;});}return null;};}function removeEntity(_0x2886ff){return function(_0x440534){if(_0x440534){return _0x440534[_0x7adb('0x18')]()[_0x7adb('0x17')](function(){var _0x4784c1=_0x440534[_0x7adb('0x19')]({'plain':!![]});var _0x15ebcc=_0x7adb('0x1a');return db[_0x7adb('0x1b')][_0x7adb('0x18')]({'where':{'type':_0x15ebcc,'resourceId':_0x4784c1['id']}})[_0x7adb('0x17')](function(){return _0x440534;});})['then'](function(){_0x2886ff['status'](0xcc)[_0x7adb('0x1c')]();});}};}function handleEntityNotFound(_0x2fb7f4){return function(_0x218f2a){if(!_0x218f2a){_0x2fb7f4[_0x7adb('0xd')](0x194);}return _0x218f2a;};}function handleError(_0x764cbb,_0x436cd6){_0x436cd6=_0x436cd6||0x1f4;return function(_0x182e54){logger[_0x7adb('0x1d')](_0x182e54[_0x7adb('0x1e')]);if(_0x182e54[_0x7adb('0x1f')]){delete _0x182e54[_0x7adb('0x1f')];}_0x764cbb['status'](_0x436cd6)[_0x7adb('0x20')](_0x182e54);};}exports[_0x7adb('0x21')]=function(_0x46ac4d,_0x15f800){var _0x44d766={};var _0x25e952={'count':0x0,'rows':[]};var _0x115569=_[_0x7adb('0x22')](db['MailQueue'][_0x7adb('0x23')],function(_0x1e61c){return{'name':_0x1e61c[_0x7adb('0x24')],'type':_0x1e61c[_0x7adb('0x25')]['key']};});_0x44d766=qs[_0x7adb('0x26')](_0x115569,_0x46ac4d);var _0x379bd1={'where':_0x44d766[_0x7adb('0x27')]};return db[_0x7adb('0x28')][_0x7adb('0x13')](_0x379bd1)[_0x7adb('0x17')](function(_0x2598d5){_0x25e952['count']=_0x2598d5;_0x44d766['include']=qs[_0x7adb('0x29')](_0x46ac4d[_0x7adb('0x2a')]);return db[_0x7adb('0x28')][_0x7adb('0x2b')](_0x44d766);})['then'](function(_0x45c253){_0x25e952['rows']=_0x45c253;return _0x25e952;})[_0x7adb('0x17')](respondWithFilteredResult(_0x15f800,_0x44d766))[_0x7adb('0x2c')](handleError(_0x15f800,null));};exports[_0x7adb('0x2d')]=function(_0x248116,_0x35060b){var _0x48ba81={'raw':!![],'where':{'id':_0x248116[_0x7adb('0x2e')]['id']}},_0x32c102={};_0x32c102[_0x7adb('0x2f')]=_[_0x7adb('0x30')](db[_0x7adb('0x28')][_0x7adb('0x23')]);_0x32c102[_0x7adb('0x2a')]=_[_0x7adb('0x30')](_0x248116[_0x7adb('0x2a')]);_0x32c102[_0x7adb('0x31')]=_['intersection'](_0x32c102[_0x7adb('0x2f')],_0x32c102[_0x7adb('0x2a')]);_0x48ba81[_0x7adb('0x32')]=_['intersection'](_0x32c102[_0x7adb('0x2f')],qs['fields'](_0x248116['query'][_0x7adb('0x33')]));_0x48ba81['attributes']=_0x48ba81['attributes'][_0x7adb('0x34')]?_0x48ba81[_0x7adb('0x32')]:_0x32c102['model'];if(_0x248116[_0x7adb('0x2a')]['includeAll']){_0x48ba81['include']=[{'all':!![]}];}_0x48ba81=_[_0x7adb('0x35')]({},_0x48ba81,_0x248116['options']);return db[_0x7adb('0x28')][_0x7adb('0x36')](_0x48ba81)['then'](handleEntityNotFound(_0x35060b,null))['then'](respondWithResult(_0x35060b,null))[_0x7adb('0x2c')](handleError(_0x35060b,null));};exports[_0x7adb('0x37')]=function(_0x1ecaa9,_0x4aede8){return db[_0x7adb('0x28')][_0x7adb('0x37')](_0x1ecaa9[_0x7adb('0x38')],{})[_0x7adb('0x17')](function(_0x118fbb){var _0x17a449=_0x1ecaa9['user'][_0x7adb('0x19')]({'plain':!![]});if(!_0x17a449)throw new Error(_0x7adb('0x39'));if(_0x17a449['role']===_0x7adb('0x3a')){var _0x1f47c8=_0x118fbb[_0x7adb('0x19')]({'plain':!![]});var _0x48efe4=_0x7adb('0x1a');return db['UserProfileSection'][_0x7adb('0x36')]({'where':{'name':_0x48efe4,'userProfileId':_0x17a449[_0x7adb('0x3b')]},'raw':!![]})[_0x7adb('0x17')](function(_0x32d4c1){if(_0x32d4c1&&_0x32d4c1[_0x7adb('0x3c')]===0x0){return db['UserProfileResource'][_0x7adb('0x37')]({'name':_0x1f47c8[_0x7adb('0x1f')],'resourceId':_0x1f47c8['id'],'type':_0x32d4c1[_0x7adb('0x1f')],'sectionId':_0x32d4c1['id']},{})[_0x7adb('0x17')](function(){return _0x118fbb;});}else{return _0x118fbb;}})['catch'](function(_0x566803){logger['error'](_0x7adb('0x3d'),_0x566803);throw _0x566803;});}return _0x118fbb;})[_0x7adb('0x17')](respondWithResult(_0x4aede8,0xc9))['catch'](handleError(_0x4aede8,null));};exports[_0x7adb('0x16')]=function(_0x5d7417,_0x2eb2f2){if(_0x5d7417[_0x7adb('0x38')]['id']){delete _0x5d7417[_0x7adb('0x38')]['id'];}return db[_0x7adb('0x28')]['find']({'where':{'id':_0x5d7417['params']['id']}})['then'](handleEntityNotFound(_0x2eb2f2,null))['then'](saveUpdates(_0x5d7417[_0x7adb('0x38')],null))['then'](respondWithResult(_0x2eb2f2,null))[_0x7adb('0x2c')](handleError(_0x2eb2f2,null));};exports[_0x7adb('0x18')]=function(_0x35cdba,_0x4c6291){return db[_0x7adb('0x28')]['find']({'where':{'id':_0x35cdba[_0x7adb('0x2e')]['id']}})[_0x7adb('0x17')](handleEntityNotFound(_0x4c6291,null))[_0x7adb('0x17')](removeEntity(_0x4c6291,null))['catch'](handleError(_0x4c6291,null));};exports[_0x7adb('0x3e')]=function(_0x13395b,_0x5b252c){return db['MailQueue'][_0x7adb('0x3e')]()[_0x7adb('0x17')](respondWithResult(_0x5b252c,null))[_0x7adb('0x2c')](handleError(_0x5b252c,null));};exports['getMembers']=function(_0x45ca92,_0x209c47){var _0x2132eb={'raw':!![],'where':{}},_0x682c1a={},_0x1d8dc0;return db[_0x7adb('0x28')][_0x7adb('0x3f')]({'where':{'id':_0x45ca92[_0x7adb('0x2e')]['id']}})['then'](handleEntityNotFound(_0x209c47,null))[_0x7adb('0x17')](function(_0x18b9c9){if(_0x18b9c9){_0x1d8dc0=_0x18b9c9['get']({'plain':!![]});_0x682c1a[_0x7adb('0x2f')]=_[_0x7adb('0x30')](db[_0x7adb('0x40')]['rawAttributes']);_0x682c1a[_0x7adb('0x2a')]=_[_0x7adb('0x30')](_0x45ca92[_0x7adb('0x2a')]);_0x682c1a[_0x7adb('0x31')]=_['intersection'](_0x682c1a['model'],_0x682c1a[_0x7adb('0x2a')]);_0x2132eb[_0x7adb('0x32')]=_['intersection'](_0x682c1a[_0x7adb('0x2f')],qs[_0x7adb('0x33')](_0x45ca92[_0x7adb('0x2a')][_0x7adb('0x33')]));_0x2132eb[_0x7adb('0x32')]=_0x2132eb[_0x7adb('0x32')][_0x7adb('0x34')]?_0x2132eb[_0x7adb('0x32')]:_0x682c1a['model'];if(!_0x45ca92[_0x7adb('0x2a')]['hasOwnProperty'](_0x7adb('0x41'))){_0x2132eb['limit']=qs[_0x7adb('0x11')](_0x45ca92[_0x7adb('0x2a')][_0x7adb('0x11')]);_0x2132eb[_0x7adb('0x10')]=qs[_0x7adb('0x10')](_0x45ca92[_0x7adb('0x2a')][_0x7adb('0x10')]);}_0x2132eb[_0x7adb('0x42')]=qs['sort'](_0x45ca92['query'][_0x7adb('0x43')]);_0x2132eb[_0x7adb('0x27')]=qs[_0x7adb('0x31')](_[_0x7adb('0x44')](_0x45ca92[_0x7adb('0x2a')],_0x682c1a[_0x7adb('0x31')]));_0x2132eb[_0x7adb('0x27')][_0x7adb('0x45')]=_0x18b9c9['id'];if(_0x45ca92[_0x7adb('0x2a')][_0x7adb('0x46')]){_0x2132eb['where']=_[_0x7adb('0x35')](_0x2132eb[_0x7adb('0x27')],{'$or':_[_0x7adb('0x22')](_0x2132eb[_0x7adb('0x32')],function(_0x5caf52){var _0x4d29b1={};_0x4d29b1[_0x5caf52]={'$like':'%'+_0x45ca92['query'][_0x7adb('0x46')]+'%'};return _0x4d29b1;})});}_0x2132eb=_[_0x7adb('0x35')]({},_0x2132eb,_0x45ca92[_0x7adb('0x47')]);return db[_0x7adb('0x40')][_0x7adb('0x2b')](_0x2132eb);}})['then'](function(_0x1b7e5e){if(_0x1b7e5e){return db[_0x7adb('0x48')]['findAndCountAll']({'where':{'id':_['map'](_0x1b7e5e,_0x7adb('0x49')),'role':_0x7adb('0x4a')},'attributes':['id',_0x7adb('0x1f'),_0x7adb('0x4b'),_0x7adb('0x4c'),_0x7adb('0x4d')]});}})[_0x7adb('0x17')](function(_0x482fb7){if(_0x482fb7){return{'count':_0x482fb7[_0x7adb('0x13')],'rows':_[_0x7adb('0x22')](_0x482fb7[_0x7adb('0x4e')],function(_0x597480){return{'membername':_0x597480[_0x7adb('0x1f')],'UserId':_0x597480['id'],'queue_name':_0x1d8dc0[_0x7adb('0x1f')],'MailQueueId':_0x1d8dc0['id'],'interface':util[_0x7adb('0x4f')](_0x7adb('0x50'),_0x7adb('0x51'),_0x597480[_0x7adb('0x1f')]),'penalty':0x0,'paused':_0x597480[_0x7adb('0x4b')],'createdAt':_0x597480['createdAt'],'updatedAt':_0x597480[_0x7adb('0x4c')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x209c47,_0x2132eb))['catch'](handleError(_0x209c47,null));};exports[_0x7adb('0x52')]=function(_0x88dbac,_0x27a285){var _0x4932ab={};var _0x552ec5={};var _0x57ad7e;var _0x5c6dda;return db[_0x7adb('0x28')][_0x7adb('0x3f')]({'where':{'id':_0x88dbac[_0x7adb('0x2e')]['id']}})[_0x7adb('0x17')](handleEntityNotFound(_0x27a285,null))[_0x7adb('0x17')](function(_0x31b9df){if(_0x31b9df){_0x57ad7e=_0x31b9df;_0x552ec5['model']=_[_0x7adb('0x30')](db[_0x7adb('0x53')][_0x7adb('0x23')]);_0x552ec5[_0x7adb('0x2a')]=_[_0x7adb('0x30')](_0x88dbac[_0x7adb('0x2a')]);_0x552ec5['filters']=_[_0x7adb('0x54')](_0x552ec5['model'],_0x552ec5[_0x7adb('0x2a')]);_0x4932ab[_0x7adb('0x32')]=_[_0x7adb('0x54')](_0x552ec5[_0x7adb('0x2f')],qs[_0x7adb('0x33')](_0x88dbac['query'][_0x7adb('0x33')]));_0x4932ab[_0x7adb('0x32')]=_0x4932ab[_0x7adb('0x32')][_0x7adb('0x34')]?_0x4932ab['attributes']:_0x552ec5[_0x7adb('0x2f')];_0x4932ab[_0x7adb('0x42')]=qs[_0x7adb('0x43')](_0x88dbac[_0x7adb('0x2a')]['sort']);_0x4932ab[_0x7adb('0x27')]=qs['filters'](_[_0x7adb('0x44')](_0x88dbac['query'],_0x552ec5[_0x7adb('0x31')]));if(_0x88dbac[_0x7adb('0x2a')][_0x7adb('0x46')]){_0x4932ab[_0x7adb('0x27')]=_[_0x7adb('0x35')](_0x4932ab[_0x7adb('0x27')],{'$or':_[_0x7adb('0x22')](_0x4932ab[_0x7adb('0x32')],function(_0x1c11b1){var _0x25c87b={};_0x25c87b[_0x1c11b1]={'$like':'%'+_0x88dbac[_0x7adb('0x2a')][_0x7adb('0x46')]+'%'};return _0x25c87b;})});}_0x4932ab=_[_0x7adb('0x35')]({},_0x4932ab,_0x88dbac[_0x7adb('0x47')]);return _0x57ad7e[_0x7adb('0x52')](_0x4932ab);}})[_0x7adb('0x17')](function(_0x59d3a9){if(_0x59d3a9){_0x5c6dda=_0x59d3a9[_0x7adb('0x34')];if(!_0x88dbac[_0x7adb('0x2a')][_0x7adb('0x55')]('nolimit')){_0x4932ab['limit']=qs[_0x7adb('0x11')](_0x88dbac['query']['limit']);_0x4932ab[_0x7adb('0x10')]=qs[_0x7adb('0x10')](_0x88dbac['query']['offset']);}return _0x57ad7e[_0x7adb('0x52')](_0x4932ab);}})['then'](function(_0x4b6834){if(_0x4b6834){return _0x4b6834?{'count':_0x5c6dda,'rows':_0x4b6834}:null;}})[_0x7adb('0x17')](respondWithResult(_0x27a285,null))[_0x7adb('0x2c')](handleError(_0x27a285,null));};exports[_0x7adb('0x56')]=function(_0x1a8712,_0x47af9e){var _0x4f1ec5=_0x1a8712[_0x7adb('0x38')]['ids'];return db['Team'][_0x7adb('0x2b')]({'where':{'id':_0x4f1ec5},'attributes':['id'],'include':[{'model':db[_0x7adb('0x48')],'as':_0x7adb('0x57'),'attributes':['id',_0x7adb('0x1f'),_0x7adb('0x58'),_0x7adb('0x59'),_0x7adb('0x5a')],'raw':!![]}]})[_0x7adb('0x17')](function(_0x42e573){if(_0x42e573){var _0x4a1947=_[_0x7adb('0x5b')](_0x42e573,function(_0x12d856){var _0x374f6c=_0x12d856[_0x7adb('0x19')]({'plain':!![]});return _0x374f6c['Agents'];});return db['MailQueue'][_0x7adb('0x36')]({'where':{'id':_0x1a8712[_0x7adb('0x2e')]['id']}})[_0x7adb('0x17')](function(_0x53bb92){return db[_0x7adb('0x5c')][_0x7adb('0x5d')](function(_0x3e2f08){return _0x53bb92[_0x7adb('0x56')](_0x4f1ec5,{'transaction':_0x3e2f08})[_0x7adb('0x17')](function(){return BPromise[_0x7adb('0x5e')](_0x4a1947,function(_0x4f732e){return db[_0x7adb('0x40')][_0x7adb('0x5f')]({'where':{'UserId':_0x4f732e['id'],'MailQueueId':_0x1a8712[_0x7adb('0x2e')]['id']},'transaction':_0x3e2f08});});})[_0x7adb('0x17')](function(){_0x4a1947[_0x7adb('0x60')](function(_0x789d51){socket[_0x7adb('0x61')](_0x7adb('0x62'),{'UserId':_0x789d51['id'],'MailQueueId':_0x53bb92['id']});});});});});}})['then'](respondWithStatusCode(_0x47af9e,null))[_0x7adb('0x2c')](handleError(_0x47af9e,null));};exports[_0x7adb('0x63')]=function(_0x2019e1,_0x5db7aa){return db['Team'][_0x7adb('0x2b')]({'where':{'id':_0x2019e1[_0x7adb('0x2a')][_0x7adb('0x64')]},'attributes':['id'],'include':[{'model':db[_0x7adb('0x48')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x7adb('0x17')](handleEntityNotFound(_0x5db7aa,null))[_0x7adb('0x17')](function(_0x440aba){var _0x3d03d0=_[_0x7adb('0x22')](_0x440aba,'id');var _0x79bc75=[];var _0x1908ae=[];var _0x1e105d=squel[_0x7adb('0x65')]();_0x1e105d[_0x7adb('0x66')](_0x7adb('0x67'))['from'](_0x7adb('0x68'),'tq')[_0x7adb('0x69')](_0x7adb('0x6a'),'ut',_0x7adb('0x6b'))[_0x7adb('0x27')](_0x7adb('0x6c'),_0x2019e1[_0x7adb('0x2e')]['id']);for(var _0x468fc8=0x0;_0x468fc8<_0x440aba[_0x7adb('0x34')];_0x468fc8+=0x1){let _0x54250a=_0x440aba[_0x468fc8];for(var _0x1e134e=0x0;_0x1e134e<_0x54250a[_0x7adb('0x57')][_0x7adb('0x34')];_0x1e134e+=0x1){let _0x2afa82=_0x54250a[_0x7adb('0x57')][_0x1e134e];var _0x29773e=_0x1e105d[_0x7adb('0x6d')]();_0x29773e[_0x7adb('0x27')](_0x7adb('0x6e'),_0x2afa82['id']);_0x1908ae[_0x7adb('0x6f')](db[_0x7adb('0x5c')][_0x7adb('0x2a')](_0x29773e['toString'](),{'type':db[_0x7adb('0x5c')][_0x7adb('0x70')][_0x7adb('0x71')]})[_0x7adb('0x17')](function(_0x4142ab){if(_0x4142ab['length']===0x1){return _0x2afa82['id'];}else{var _0x67acc7=_[_0x7adb('0x72')](_[_0x7adb('0x22')](_0x4142ab,_0x7adb('0x73')),function(_0xa4ab25){return _[_0x7adb('0x74')](_0x3d03d0,_0xa4ab25);});if(_0x67acc7){return _0x2afa82['id'];}}}));}}return BPromise['all'](_0x1908ae)[_0x7adb('0x17')](function(_0x5256b1){_0x79bc75=_(_0x79bc75)[_0x7adb('0x75')](_0x5256b1)[_0x7adb('0x76')]()['value']();return db[_0x7adb('0x28')][_0x7adb('0x36')]({'where':{'id':_0x2019e1[_0x7adb('0x2e')]['id']}})[_0x7adb('0x17')](function(_0x1e3d0b){return db[_0x7adb('0x5c')]['transaction'](function(_0x2f6049){return _0x1e3d0b[_0x7adb('0x63')](_0x2019e1[_0x7adb('0x2a')][_0x7adb('0x64')],{'transaction':_0x2f6049})[_0x7adb('0x17')](function(){if(!_[_0x7adb('0x77')](_0x79bc75)){return _0x1e3d0b[_0x7adb('0x78')](_0x79bc75,{'transaction':_0x2f6049});}})[_0x7adb('0x17')](function(){_0x79bc75[_0x7adb('0x60')](function(_0x1a690d){socket[_0x7adb('0x61')](_0x7adb('0x79'),{'UserId':_0x1a690d,'MailQueueId':_0x1e3d0b['id']});});});});});});})[_0x7adb('0x17')](respondWithStatusCode(_0x5db7aa,null))[_0x7adb('0x2c')](handleError(_0x5db7aa,null));};exports[_0x7adb('0x7a')]=function(_0x2b7dc5,_0x52c220){return db[_0x7adb('0x28')][_0x7adb('0x36')]({'where':{'id':_0x2b7dc5[_0x7adb('0x2e')]['id']}})[_0x7adb('0x17')](handleEntityNotFound(_0x52c220,null))[_0x7adb('0x17')](function(_0xc0dc97){if(_0xc0dc97){return _0xc0dc97[_0x7adb('0x7a')](_0x2b7dc5[_0x7adb('0x38')]['ids'],_[_0x7adb('0x7b')](_0x2b7dc5[_0x7adb('0x38')],[_0x7adb('0x64'),'id'])||{})[_0x7adb('0x7c')](function(_0x5d9e08){for(var _0x35c69a=0x0;_0x35c69a<_0x2b7dc5['body'][_0x7adb('0x64')][_0x7adb('0x34')];_0x35c69a+=0x1){socket[_0x7adb('0x61')](_0x7adb('0x62'),{'UserId':Number(_0x2b7dc5[_0x7adb('0x38')][_0x7adb('0x64')][_0x35c69a]),'MailQueueId':Number(_0x2b7dc5[_0x7adb('0x2e')]['id'])});}return _0x5d9e08;});}})[_0x7adb('0x17')](respondWithResult(_0x52c220,null))[_0x7adb('0x2c')](handleError(_0x52c220,null));};exports[_0x7adb('0x78')]=function(_0x302b66,_0x265718){return db[_0x7adb('0x28')][_0x7adb('0x36')]({'where':{'id':_0x302b66[_0x7adb('0x2e')]['id']}})[_0x7adb('0x17')](handleEntityNotFound(_0x265718,null))[_0x7adb('0x17')](function(_0x5d03a5){if(_0x5d03a5){return _0x5d03a5[_0x7adb('0x78')](_0x302b66['query'][_0x7adb('0x64')])['then'](function(){if(_['isArray'](_0x302b66[_0x7adb('0x2a')][_0x7adb('0x64')])){for(var _0x16727c=0x0;_0x16727c<_0x302b66['query'][_0x7adb('0x64')]['length'];_0x16727c+=0x1){socket[_0x7adb('0x61')](_0x7adb('0x79'),{'UserId':Number(_0x302b66['query'][_0x7adb('0x64')][_0x16727c]),'MailQueueId':Number(_0x302b66['params']['id'])});}}else{socket[_0x7adb('0x61')](_0x7adb('0x79'),{'UserId':Number(_0x302b66['query'][_0x7adb('0x64')]),'MailQueueId':Number(_0x302b66[_0x7adb('0x2e')]['id'])});}});}})[_0x7adb('0x17')](respondWithStatusCode(_0x265718,null))[_0x7adb('0x2c')](handleError(_0x265718,null));};exports[_0x7adb('0x7d')]=function(_0x34d4ca,_0x34787d){var _0xa47fc4={};var _0x47964d={};var _0x5b4127;var _0x2c8eb0;return db[_0x7adb('0x28')][_0x7adb('0x3f')]({'where':{'id':_0x34d4ca[_0x7adb('0x2e')]['id']}})[_0x7adb('0x17')](handleEntityNotFound(_0x34787d,null))['then'](function(_0x17d1ea){if(_0x17d1ea){_0x5b4127=_0x17d1ea;_0x47964d['model']=_[_0x7adb('0x30')](db[_0x7adb('0x48')]['rawAttributes']);_0x47964d[_0x7adb('0x2a')]=_['keys'](_0x34d4ca[_0x7adb('0x2a')]);_0x47964d[_0x7adb('0x31')]=_[_0x7adb('0x54')](_0x47964d[_0x7adb('0x2f')],_0x47964d[_0x7adb('0x2a')]);_0xa47fc4[_0x7adb('0x32')]=_[_0x7adb('0x54')](_0x47964d[_0x7adb('0x2f')],qs[_0x7adb('0x33')](_0x34d4ca['query'][_0x7adb('0x33')]));_0xa47fc4['attributes']=_0xa47fc4[_0x7adb('0x32')][_0x7adb('0x34')]?_0xa47fc4[_0x7adb('0x32')]:_0x47964d[_0x7adb('0x2f')];_0xa47fc4[_0x7adb('0x42')]=qs[_0x7adb('0x43')](_0x34d4ca[_0x7adb('0x2a')][_0x7adb('0x43')]);_0xa47fc4[_0x7adb('0x27')]=qs['filters'](_[_0x7adb('0x44')](_0x34d4ca['query'],_0x47964d[_0x7adb('0x31')]));if(_0x34d4ca[_0x7adb('0x2a')]['filter']){_0xa47fc4[_0x7adb('0x27')]=_[_0x7adb('0x35')](_0xa47fc4[_0x7adb('0x27')],{'$or':_['map'](_0xa47fc4['attributes'],function(_0x4c08b6){var _0x4fc1ec={};_0x4fc1ec[_0x4c08b6]={'$like':'%'+_0x34d4ca['query'][_0x7adb('0x46')]+'%'};return _0x4fc1ec;})});}_0xa47fc4=_[_0x7adb('0x35')]({},_0xa47fc4,_0x34d4ca['options']);return _0x5b4127[_0x7adb('0x7d')](_0xa47fc4);}})[_0x7adb('0x17')](function(_0x4d9688){if(_0x4d9688){_0x2c8eb0=_0x4d9688[_0x7adb('0x34')];if(!_0x34d4ca[_0x7adb('0x2a')][_0x7adb('0x55')](_0x7adb('0x41'))){_0xa47fc4[_0x7adb('0x11')]=qs[_0x7adb('0x11')](_0x34d4ca['query'][_0x7adb('0x11')]);_0xa47fc4[_0x7adb('0x10')]=qs[_0x7adb('0x10')](_0x34d4ca['query']['offset']);}return _0x5b4127[_0x7adb('0x7d')](_0xa47fc4);}})['then'](function(_0x36f2b6){if(_0x36f2b6){return _0x36f2b6?{'count':_0x2c8eb0,'rows':_0x36f2b6}:null;}})['then'](respondWithResult(_0x34787d,null))[_0x7adb('0x2c')](handleError(_0x34787d,null));};
\ No newline at end of file
+var _0x639f=['removeAgents','forEach','userMailQueue:remove','addAgents','omit','isArray','getAgents','util','lodash','squel','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','update','then','destroy','get','MailQueues','UserProfileResource','stack','name','send','index','map','fieldName','type','key','getOptions','where','include','query','MailQueue','findAll','rows','catch','show','params','model','keys','rawAttributes','filters','intersection','attributes','fields','length','merge','find','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','create','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserMailQueue','order','sort','MailQueueId','filter','User','UserId','agent','mailPause','updatedAt','format','%s/%s','createdAt','Team','pick','options','hasOwnProperty','nolimit','getTeams','addTeams','Agents','online','voicePause','interface','sequelize','transaction','each','findOrCreate','emit','removeTeams','ids','select','from','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','every','TeamId','includes','all','compact','value','isEmpty'];(function(_0x38408c,_0x218aa2){var _0x7cfa49=function(_0x4fd049){while(--_0x4fd049){_0x38408c['push'](_0x38408c['shift']());}};_0x7cfa49(++_0x218aa2);}(_0x639f,0x87));var _0xf639=function(_0x39eee3,_0x4af386){_0x39eee3=_0x39eee3-0x0;var _0x30127=_0x639f[_0x39eee3];return _0x30127;};'use strict';var BPromise=require('bluebird');var util=require(_0xf639('0x0'));var _=require(_0xf639('0x1'));var squel=require(_0xf639('0x2'));var Redis=require(_0xf639('0x3'));var qs=require('../../components/parsers/qs');var logger=require(_0xf639('0x4'))(_0xf639('0x5'));var config=require(_0xf639('0x6'));var db=require(_0xf639('0x7'))['db'];config[_0xf639('0x8')]=_[_0xf639('0x9')](config[_0xf639('0x8')],{'host':_0xf639('0xa'),'port':0x18eb});var socket=require(_0xf639('0xb'))(new Redis(config['redis']));require(_0xf639('0xc'))[_0xf639('0xd')](socket);function respondWithStatusCode(_0x80d966,_0x5dfb50){_0x5dfb50=_0x5dfb50||0xcc;return function(_0x3a1236){if(_0x3a1236){return _0x80d966[_0xf639('0xe')](_0x5dfb50);}return _0x80d966['status'](_0x5dfb50)[_0xf639('0xf')]();};}function respondWithResult(_0xefb740,_0x33e14f){_0x33e14f=_0x33e14f||0xc8;return function(_0x47d6da){if(_0x47d6da){return _0xefb740[_0xf639('0x10')](_0x33e14f)[_0xf639('0x11')](_0x47d6da);}};}function respondWithFilteredResult(_0x38505e,_0x380293){return function(_0x4ffb56){if(_0x4ffb56){var _0x79b272=typeof _0x380293[_0xf639('0x12')]==='undefined'&&typeof _0x380293[_0xf639('0x13')]===_0xf639('0x14');var _0x2277da=_0x4ffb56[_0xf639('0x15')];var _0x218030=_0x79b272?0x0:_0x380293[_0xf639('0x12')];var _0x4fcaa7=_0x79b272?_0x4ffb56['count']:_0x380293['offset']+_0x380293[_0xf639('0x13')];var _0x6e4793;if(_0x4fcaa7>=_0x2277da){_0x4fcaa7=_0x2277da;_0x6e4793=0xc8;}else{_0x6e4793=0xce;}_0x38505e['status'](_0x6e4793);return _0x38505e[_0xf639('0x16')](_0xf639('0x17'),_0x218030+'-'+_0x4fcaa7+'/'+_0x2277da)[_0xf639('0x11')](_0x4ffb56);}return null;};}function saveUpdates(_0x374f88){return function(_0x2c8000){if(_0x2c8000){return _0x2c8000[_0xf639('0x18')](_0x374f88)[_0xf639('0x19')](function(_0x259508){return _0x259508;});}return null;};}function removeEntity(_0x1cb398){return function(_0x329796){if(_0x329796){return _0x329796[_0xf639('0x1a')]()[_0xf639('0x19')](function(){var _0x9cc101=_0x329796[_0xf639('0x1b')]({'plain':!![]});var _0x33ddfd=_0xf639('0x1c');return db[_0xf639('0x1d')]['destroy']({'where':{'type':_0x33ddfd,'resourceId':_0x9cc101['id']}})[_0xf639('0x19')](function(){return _0x329796;});})[_0xf639('0x19')](function(){_0x1cb398[_0xf639('0x10')](0xcc)[_0xf639('0xf')]();});}};}function handleEntityNotFound(_0x2eec17){return function(_0x218a86){if(!_0x218a86){_0x2eec17[_0xf639('0xe')](0x194);}return _0x218a86;};}function handleError(_0xd537c6,_0x2849ff){_0x2849ff=_0x2849ff||0x1f4;return function(_0xbccec6){logger['error'](_0xbccec6[_0xf639('0x1e')]);if(_0xbccec6[_0xf639('0x1f')]){delete _0xbccec6[_0xf639('0x1f')];}_0xd537c6[_0xf639('0x10')](_0x2849ff)[_0xf639('0x20')](_0xbccec6);};}exports[_0xf639('0x21')]=function(_0x2bb5a0,_0x329587){var _0x2f2344={};var _0x5a1f00={'count':0x0,'rows':[]};var _0x205248=_[_0xf639('0x22')](db['MailQueue']['rawAttributes'],function(_0x377525){return{'name':_0x377525[_0xf639('0x23')],'type':_0x377525[_0xf639('0x24')][_0xf639('0x25')]};});_0x2f2344=qs[_0xf639('0x26')](_0x205248,_0x2bb5a0);var _0x3065ba={'where':_0x2f2344[_0xf639('0x27')]};return db['MailQueue'][_0xf639('0x15')](_0x3065ba)['then'](function(_0x4a3d2e){_0x5a1f00[_0xf639('0x15')]=_0x4a3d2e;_0x2f2344['include']=qs[_0xf639('0x28')](_0x2bb5a0[_0xf639('0x29')]);return db[_0xf639('0x2a')][_0xf639('0x2b')](_0x2f2344);})[_0xf639('0x19')](function(_0x1f9262){_0x5a1f00[_0xf639('0x2c')]=_0x1f9262;return _0x5a1f00;})['then'](respondWithFilteredResult(_0x329587,_0x2f2344))[_0xf639('0x2d')](handleError(_0x329587,null));};exports[_0xf639('0x2e')]=function(_0x2b7ef3,_0x157064){var _0x5d2643={'raw':!![],'where':{'id':_0x2b7ef3[_0xf639('0x2f')]['id']}},_0x416918={};_0x416918[_0xf639('0x30')]=_[_0xf639('0x31')](db[_0xf639('0x2a')][_0xf639('0x32')]);_0x416918[_0xf639('0x29')]=_[_0xf639('0x31')](_0x2b7ef3[_0xf639('0x29')]);_0x416918[_0xf639('0x33')]=_[_0xf639('0x34')](_0x416918[_0xf639('0x30')],_0x416918[_0xf639('0x29')]);_0x5d2643[_0xf639('0x35')]=_['intersection'](_0x416918[_0xf639('0x30')],qs[_0xf639('0x36')](_0x2b7ef3[_0xf639('0x29')][_0xf639('0x36')]));_0x5d2643[_0xf639('0x35')]=_0x5d2643[_0xf639('0x35')][_0xf639('0x37')]?_0x5d2643[_0xf639('0x35')]:_0x416918[_0xf639('0x30')];if(_0x2b7ef3['query']['includeAll']){_0x5d2643['include']=[{'all':!![]}];}_0x5d2643=_[_0xf639('0x38')]({},_0x5d2643,_0x2b7ef3['options']);return db['MailQueue'][_0xf639('0x39')](_0x5d2643)[_0xf639('0x19')](handleEntityNotFound(_0x157064,null))['then'](respondWithResult(_0x157064,null))[_0xf639('0x2d')](handleError(_0x157064,null));};exports['create']=function(_0x20f5cc,_0x1edc81){return db[_0xf639('0x2a')]['create'](_0x20f5cc[_0xf639('0x3a')],{})['then'](function(_0x12c118){var _0x35e363=_0x20f5cc['user'][_0xf639('0x1b')]({'plain':!![]});if(!_0x35e363)throw new Error(_0xf639('0x3b'));if(_0x35e363[_0xf639('0x3c')]===_0xf639('0x3d')){var _0x28f0e=_0x12c118[_0xf639('0x1b')]({'plain':!![]});var _0x24d6f7=_0xf639('0x1c');return db[_0xf639('0x3e')][_0xf639('0x39')]({'where':{'name':_0x24d6f7,'userProfileId':_0x35e363[_0xf639('0x3f')]},'raw':!![]})[_0xf639('0x19')](function(_0x44fd17){if(_0x44fd17&&_0x44fd17[_0xf639('0x40')]===0x0){return db['UserProfileResource'][_0xf639('0x41')]({'name':_0x28f0e[_0xf639('0x1f')],'resourceId':_0x28f0e['id'],'type':_0x44fd17[_0xf639('0x1f')],'sectionId':_0x44fd17['id']},{})[_0xf639('0x19')](function(){return _0x12c118;});}else{return _0x12c118;}})[_0xf639('0x2d')](function(_0x401c29){logger[_0xf639('0x42')](_0xf639('0x43'),_0x401c29);throw _0x401c29;});}return _0x12c118;})[_0xf639('0x19')](respondWithResult(_0x1edc81,0xc9))[_0xf639('0x2d')](handleError(_0x1edc81,null));};exports['update']=function(_0x395f32,_0x4a35ad){if(_0x395f32['body']['id']){delete _0x395f32[_0xf639('0x3a')]['id'];}return db[_0xf639('0x2a')][_0xf639('0x39')]({'where':{'id':_0x395f32[_0xf639('0x2f')]['id']}})[_0xf639('0x19')](handleEntityNotFound(_0x4a35ad,null))[_0xf639('0x19')](saveUpdates(_0x395f32[_0xf639('0x3a')],null))[_0xf639('0x19')](respondWithResult(_0x4a35ad,null))[_0xf639('0x2d')](handleError(_0x4a35ad,null));};exports['destroy']=function(_0x4e4172,_0x271c56){return db['MailQueue']['find']({'where':{'id':_0x4e4172['params']['id']}})[_0xf639('0x19')](handleEntityNotFound(_0x271c56,null))[_0xf639('0x19')](removeEntity(_0x271c56,null))['catch'](handleError(_0x271c56,null));};exports[_0xf639('0x44')]=function(_0x380d73,_0x28ac2c){return db[_0xf639('0x2a')][_0xf639('0x44')]()[_0xf639('0x19')](respondWithResult(_0x28ac2c,null))['catch'](handleError(_0x28ac2c,null));};exports[_0xf639('0x45')]=function(_0x256754,_0x35ee86){var _0x56016b={'raw':!![],'where':{}},_0x4b8424={},_0x453d42;return db['MailQueue'][_0xf639('0x46')]({'where':{'id':_0x256754[_0xf639('0x2f')]['id']}})[_0xf639('0x19')](handleEntityNotFound(_0x35ee86,null))['then'](function(_0x3e6b4d){if(_0x3e6b4d){_0x453d42=_0x3e6b4d[_0xf639('0x1b')]({'plain':!![]});_0x4b8424[_0xf639('0x30')]=_[_0xf639('0x31')](db[_0xf639('0x47')][_0xf639('0x32')]);_0x4b8424[_0xf639('0x29')]=_[_0xf639('0x31')](_0x256754[_0xf639('0x29')]);_0x4b8424['filters']=_[_0xf639('0x34')](_0x4b8424['model'],_0x4b8424[_0xf639('0x29')]);_0x56016b[_0xf639('0x35')]=_[_0xf639('0x34')](_0x4b8424[_0xf639('0x30')],qs[_0xf639('0x36')](_0x256754[_0xf639('0x29')]['fields']));_0x56016b['attributes']=_0x56016b[_0xf639('0x35')][_0xf639('0x37')]?_0x56016b[_0xf639('0x35')]:_0x4b8424[_0xf639('0x30')];if(!_0x256754[_0xf639('0x29')]['hasOwnProperty']('nolimit')){_0x56016b[_0xf639('0x13')]=qs[_0xf639('0x13')](_0x256754[_0xf639('0x29')][_0xf639('0x13')]);_0x56016b[_0xf639('0x12')]=qs[_0xf639('0x12')](_0x256754[_0xf639('0x29')][_0xf639('0x12')]);}_0x56016b[_0xf639('0x48')]=qs[_0xf639('0x49')](_0x256754['query'][_0xf639('0x49')]);_0x56016b['where']=qs[_0xf639('0x33')](_['pick'](_0x256754['query'],_0x4b8424[_0xf639('0x33')]));_0x56016b['where'][_0xf639('0x4a')]=_0x3e6b4d['id'];if(_0x256754[_0xf639('0x29')][_0xf639('0x4b')]){_0x56016b[_0xf639('0x27')]=_['merge'](_0x56016b[_0xf639('0x27')],{'$or':_[_0xf639('0x22')](_0x56016b[_0xf639('0x35')],function(_0x479d02){var _0x36ca83={};_0x36ca83[_0x479d02]={'$like':'%'+_0x256754[_0xf639('0x29')]['filter']+'%'};return _0x36ca83;})});}_0x56016b=_[_0xf639('0x38')]({},_0x56016b,_0x256754['options']);return db[_0xf639('0x47')]['findAll'](_0x56016b);}})[_0xf639('0x19')](function(_0x48d254){if(_0x48d254){return db[_0xf639('0x4c')]['findAndCountAll']({'where':{'id':_[_0xf639('0x22')](_0x48d254,_0xf639('0x4d')),'role':_0xf639('0x4e')},'attributes':['id',_0xf639('0x1f'),_0xf639('0x4f'),_0xf639('0x50'),'createdAt']});}})[_0xf639('0x19')](function(_0x32f68d){if(_0x32f68d){return{'count':_0x32f68d[_0xf639('0x15')],'rows':_[_0xf639('0x22')](_0x32f68d[_0xf639('0x2c')],function(_0x1fd383){return{'membername':_0x1fd383[_0xf639('0x1f')],'UserId':_0x1fd383['id'],'queue_name':_0x453d42[_0xf639('0x1f')],'MailQueueId':_0x453d42['id'],'interface':util[_0xf639('0x51')](_0xf639('0x52'),'SIP',_0x1fd383[_0xf639('0x1f')]),'penalty':0x0,'paused':_0x1fd383['mailPause'],'createdAt':_0x1fd383[_0xf639('0x53')],'updatedAt':_0x1fd383[_0xf639('0x50')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xf639('0x19')](respondWithFilteredResult(_0x35ee86,_0x56016b))[_0xf639('0x2d')](handleError(_0x35ee86,null));};exports['getTeams']=function(_0x2267ec,_0x262235){var _0x436b75={};var _0x524cf2={};var _0x377f24;var _0x1c1b4f;return db['MailQueue']['findOne']({'where':{'id':_0x2267ec[_0xf639('0x2f')]['id']}})[_0xf639('0x19')](handleEntityNotFound(_0x262235,null))[_0xf639('0x19')](function(_0xc37fb5){if(_0xc37fb5){_0x377f24=_0xc37fb5;_0x524cf2[_0xf639('0x30')]=_['keys'](db[_0xf639('0x54')]['rawAttributes']);_0x524cf2[_0xf639('0x29')]=_[_0xf639('0x31')](_0x2267ec['query']);_0x524cf2[_0xf639('0x33')]=_[_0xf639('0x34')](_0x524cf2[_0xf639('0x30')],_0x524cf2[_0xf639('0x29')]);_0x436b75[_0xf639('0x35')]=_[_0xf639('0x34')](_0x524cf2[_0xf639('0x30')],qs[_0xf639('0x36')](_0x2267ec[_0xf639('0x29')][_0xf639('0x36')]));_0x436b75['attributes']=_0x436b75[_0xf639('0x35')][_0xf639('0x37')]?_0x436b75['attributes']:_0x524cf2[_0xf639('0x30')];_0x436b75[_0xf639('0x48')]=qs[_0xf639('0x49')](_0x2267ec[_0xf639('0x29')][_0xf639('0x49')]);_0x436b75['where']=qs['filters'](_[_0xf639('0x55')](_0x2267ec['query'],_0x524cf2[_0xf639('0x33')]));if(_0x2267ec['query'][_0xf639('0x4b')]){_0x436b75['where']=_[_0xf639('0x38')](_0x436b75[_0xf639('0x27')],{'$or':_[_0xf639('0x22')](_0x436b75[_0xf639('0x35')],function(_0x294446){var _0xc0c4d5={};_0xc0c4d5[_0x294446]={'$like':'%'+_0x2267ec['query']['filter']+'%'};return _0xc0c4d5;})});}_0x436b75=_['merge']({},_0x436b75,_0x2267ec[_0xf639('0x56')]);return _0x377f24['getTeams'](_0x436b75);}})[_0xf639('0x19')](function(_0x3223da){if(_0x3223da){_0x1c1b4f=_0x3223da[_0xf639('0x37')];if(!_0x2267ec['query'][_0xf639('0x57')](_0xf639('0x58'))){_0x436b75[_0xf639('0x13')]=qs[_0xf639('0x13')](_0x2267ec['query'][_0xf639('0x13')]);_0x436b75['offset']=qs[_0xf639('0x12')](_0x2267ec[_0xf639('0x29')]['offset']);}return _0x377f24[_0xf639('0x59')](_0x436b75);}})[_0xf639('0x19')](function(_0x19455e){if(_0x19455e){return _0x19455e?{'count':_0x1c1b4f,'rows':_0x19455e}:null;}})[_0xf639('0x19')](respondWithResult(_0x262235,null))[_0xf639('0x2d')](handleError(_0x262235,null));};exports[_0xf639('0x5a')]=function(_0x33f304,_0x1386ce){var _0x3b22a1=_0x33f304[_0xf639('0x3a')]['ids'];return db[_0xf639('0x54')][_0xf639('0x2b')]({'where':{'id':_0x3b22a1},'attributes':['id'],'include':[{'model':db['User'],'as':_0xf639('0x5b'),'attributes':['id',_0xf639('0x1f'),_0xf639('0x5c'),_0xf639('0x5d'),_0xf639('0x5e')],'raw':!![]}]})['then'](function(_0x263016){if(_0x263016){var _0x4ec4d4=_['flatMap'](_0x263016,function(_0x356e13){var _0x1a6f0c=_0x356e13[_0xf639('0x1b')]({'plain':!![]});return _0x1a6f0c[_0xf639('0x5b')];});return db[_0xf639('0x2a')][_0xf639('0x39')]({'where':{'id':_0x33f304[_0xf639('0x2f')]['id']}})[_0xf639('0x19')](function(_0x1d7781){return db[_0xf639('0x5f')][_0xf639('0x60')](function(_0x3f764c){return _0x1d7781['addTeams'](_0x3b22a1,{'transaction':_0x3f764c})[_0xf639('0x19')](function(){return BPromise[_0xf639('0x61')](_0x4ec4d4,function(_0x5b30bd){return db[_0xf639('0x47')][_0xf639('0x62')]({'where':{'UserId':_0x5b30bd['id'],'MailQueueId':_0x33f304[_0xf639('0x2f')]['id']},'transaction':_0x3f764c});});})[_0xf639('0x19')](function(){_0x4ec4d4['forEach'](function(_0x4a8df6){socket[_0xf639('0x63')]('userMailQueue:save',{'UserId':_0x4a8df6['id'],'MailQueueId':_0x1d7781['id']});});});});});}})['then'](respondWithStatusCode(_0x1386ce,null))[_0xf639('0x2d')](handleError(_0x1386ce,null));};exports[_0xf639('0x64')]=function(_0x4e1700,_0x369c3){return db[_0xf639('0x54')]['findAll']({'where':{'id':_0x4e1700[_0xf639('0x29')][_0xf639('0x65')]},'attributes':['id'],'include':[{'model':db[_0xf639('0x4c')],'as':_0xf639('0x5b'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x369c3,null))[_0xf639('0x19')](function(_0x4606f4){var _0xac7896=_[_0xf639('0x22')](_0x4606f4,'id');var _0x42c101=[];var _0xdcfbe2=[];var _0x5778e6=squel[_0xf639('0x66')]();_0x5778e6['field']('tq.TeamId')[_0xf639('0x67')](_0xf639('0x68'),'tq')[_0xf639('0x69')](_0xf639('0x6a'),'ut',_0xf639('0x6b'))[_0xf639('0x27')](_0xf639('0x6c'),_0x4e1700[_0xf639('0x2f')]['id']);for(var _0x399ab1=0x0;_0x399ab1<_0x4606f4[_0xf639('0x37')];_0x399ab1+=0x1){let _0x166561=_0x4606f4[_0x399ab1];for(var _0xbc1ee6=0x0;_0xbc1ee6<_0x166561[_0xf639('0x5b')][_0xf639('0x37')];_0xbc1ee6+=0x1){let _0x4424a4=_0x166561['Agents'][_0xbc1ee6];var _0x5614a1=_0x5778e6[_0xf639('0x6d')]();_0x5614a1['where'](_0xf639('0x6e'),_0x4424a4['id']);_0xdcfbe2[_0xf639('0x6f')](db[_0xf639('0x5f')][_0xf639('0x29')](_0x5614a1[_0xf639('0x70')](),{'type':db[_0xf639('0x5f')][_0xf639('0x71')]['SELECT']})['then'](function(_0x3c5c52){if(_0x3c5c52[_0xf639('0x37')]===0x1){return _0x4424a4['id'];}else{var _0x416c3d=_[_0xf639('0x72')](_['map'](_0x3c5c52,_0xf639('0x73')),function(_0x68b875){return _[_0xf639('0x74')](_0xac7896,_0x68b875);});if(_0x416c3d){return _0x4424a4['id'];}}}));}}return BPromise[_0xf639('0x75')](_0xdcfbe2)[_0xf639('0x19')](function(_0xad8559){_0x42c101=_(_0x42c101)['union'](_0xad8559)[_0xf639('0x76')]()[_0xf639('0x77')]();return db[_0xf639('0x2a')][_0xf639('0x39')]({'where':{'id':_0x4e1700[_0xf639('0x2f')]['id']}})[_0xf639('0x19')](function(_0x1aa6f0){return db['sequelize'][_0xf639('0x60')](function(_0x4d239a){return _0x1aa6f0[_0xf639('0x64')](_0x4e1700['query'][_0xf639('0x65')],{'transaction':_0x4d239a})[_0xf639('0x19')](function(){if(!_[_0xf639('0x78')](_0x42c101)){return _0x1aa6f0[_0xf639('0x79')](_0x42c101,{'transaction':_0x4d239a});}})[_0xf639('0x19')](function(){_0x42c101[_0xf639('0x7a')](function(_0x3196e2){socket[_0xf639('0x63')](_0xf639('0x7b'),{'UserId':_0x3196e2,'MailQueueId':_0x1aa6f0['id']});});});});});});})[_0xf639('0x19')](respondWithStatusCode(_0x369c3,null))[_0xf639('0x2d')](handleError(_0x369c3,null));};exports[_0xf639('0x7c')]=function(_0x3c103d,_0x439dc9){return db['MailQueue'][_0xf639('0x39')]({'where':{'id':_0x3c103d['params']['id']}})['then'](handleEntityNotFound(_0x439dc9,null))[_0xf639('0x19')](function(_0x165e88){if(_0x165e88){return _0x165e88[_0xf639('0x7c')](_0x3c103d[_0xf639('0x3a')]['ids'],_[_0xf639('0x7d')](_0x3c103d['body'],[_0xf639('0x65'),'id'])||{})['spread'](function(_0x2b789f){for(var _0x535deb=0x0;_0x535deb<_0x3c103d['body'][_0xf639('0x65')][_0xf639('0x37')];_0x535deb+=0x1){socket[_0xf639('0x63')]('userMailQueue:save',{'UserId':Number(_0x3c103d['body'][_0xf639('0x65')][_0x535deb]),'MailQueueId':Number(_0x3c103d['params']['id'])});}return _0x2b789f;});}})[_0xf639('0x19')](respondWithResult(_0x439dc9,null))[_0xf639('0x2d')](handleError(_0x439dc9,null));};exports['removeAgents']=function(_0x4effdd,_0x5f5655){return db['MailQueue']['find']({'where':{'id':_0x4effdd[_0xf639('0x2f')]['id']}})['then'](handleEntityNotFound(_0x5f5655,null))[_0xf639('0x19')](function(_0x12714b){if(_0x12714b){return _0x12714b['removeAgents'](_0x4effdd[_0xf639('0x29')][_0xf639('0x65')])['then'](function(){if(_[_0xf639('0x7e')](_0x4effdd[_0xf639('0x29')]['ids'])){for(var _0x5c16e9=0x0;_0x5c16e9<_0x4effdd[_0xf639('0x29')][_0xf639('0x65')]['length'];_0x5c16e9+=0x1){socket[_0xf639('0x63')](_0xf639('0x7b'),{'UserId':Number(_0x4effdd[_0xf639('0x29')][_0xf639('0x65')][_0x5c16e9]),'MailQueueId':Number(_0x4effdd[_0xf639('0x2f')]['id'])});}}else{socket[_0xf639('0x63')]('userMailQueue:remove',{'UserId':Number(_0x4effdd[_0xf639('0x29')]['ids']),'MailQueueId':Number(_0x4effdd[_0xf639('0x2f')]['id'])});}});}})['then'](respondWithStatusCode(_0x5f5655,null))[_0xf639('0x2d')](handleError(_0x5f5655,null));};exports[_0xf639('0x7f')]=function(_0x416447,_0x16fd1d){var _0x5d24e6={};var _0xf85e21={};var _0x424949;var _0x1b52d5;return db['MailQueue'][_0xf639('0x46')]({'where':{'id':_0x416447[_0xf639('0x2f')]['id']}})[_0xf639('0x19')](handleEntityNotFound(_0x16fd1d,null))[_0xf639('0x19')](function(_0x1a0c47){if(_0x1a0c47){_0x424949=_0x1a0c47;_0xf85e21[_0xf639('0x30')]=_[_0xf639('0x31')](db[_0xf639('0x4c')][_0xf639('0x32')]);_0xf85e21[_0xf639('0x29')]=_[_0xf639('0x31')](_0x416447['query']);_0xf85e21[_0xf639('0x33')]=_[_0xf639('0x34')](_0xf85e21[_0xf639('0x30')],_0xf85e21[_0xf639('0x29')]);_0x5d24e6[_0xf639('0x35')]=_['intersection'](_0xf85e21['model'],qs[_0xf639('0x36')](_0x416447[_0xf639('0x29')][_0xf639('0x36')]));_0x5d24e6[_0xf639('0x35')]=_0x5d24e6[_0xf639('0x35')][_0xf639('0x37')]?_0x5d24e6[_0xf639('0x35')]:_0xf85e21['model'];_0x5d24e6[_0xf639('0x48')]=qs[_0xf639('0x49')](_0x416447[_0xf639('0x29')][_0xf639('0x49')]);_0x5d24e6[_0xf639('0x27')]=qs[_0xf639('0x33')](_[_0xf639('0x55')](_0x416447[_0xf639('0x29')],_0xf85e21[_0xf639('0x33')]));if(_0x416447['query']['filter']){_0x5d24e6[_0xf639('0x27')]=_[_0xf639('0x38')](_0x5d24e6['where'],{'$or':_[_0xf639('0x22')](_0x5d24e6[_0xf639('0x35')],function(_0x40ae72){var _0x4a2710={};_0x4a2710[_0x40ae72]={'$like':'%'+_0x416447[_0xf639('0x29')]['filter']+'%'};return _0x4a2710;})});}_0x5d24e6=_['merge']({},_0x5d24e6,_0x416447[_0xf639('0x56')]);return _0x424949['getAgents'](_0x5d24e6);}})[_0xf639('0x19')](function(_0x38ccd1){if(_0x38ccd1){_0x1b52d5=_0x38ccd1[_0xf639('0x37')];if(!_0x416447[_0xf639('0x29')][_0xf639('0x57')](_0xf639('0x58'))){_0x5d24e6[_0xf639('0x13')]=qs['limit'](_0x416447['query'][_0xf639('0x13')]);_0x5d24e6[_0xf639('0x12')]=qs[_0xf639('0x12')](_0x416447['query'][_0xf639('0x12')]);}return _0x424949[_0xf639('0x7f')](_0x5d24e6);}})[_0xf639('0x19')](function(_0x4140b1){if(_0x4140b1){return _0x4140b1?{'count':_0x1b52d5,'rows':_0x4140b1}:null;}})[_0xf639('0x19')](respondWithResult(_0x16fd1d,null))['catch'](handleError(_0x16fd1d,null));};
\ No newline at end of file
index efae237..a25c0b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x417f=['hasOwnProperty','hook','exports','events','MailQueue','setMaxListeners','save','update','remove','emit'];(function(_0x56d1db,_0xe0e50f){var _0x4dad26=function(_0x8ec9db){while(--_0x8ec9db){_0x56d1db['push'](_0x56d1db['shift']());}};_0x4dad26(++_0xe0e50f);}(_0x417f,0x8f));var _0xf417=function(_0x360f6c,_0x4a44d2){_0x360f6c=_0x360f6c-0x0;var _0x530ea0=_0x417f[_0x360f6c];return _0x530ea0;};'use strict';var EventEmitter=require(_0xf417('0x0'));var MailQueue=require('../../mysqldb')['db'][_0xf417('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0xf417('0x2')](0x0);var events={'afterCreate':_0xf417('0x3'),'afterUpdate':_0xf417('0x4'),'afterDestroy':_0xf417('0x5')};function emitEvent(_0x351fd7){return function(_0x18db1f,_0x347ab6,_0x313823){MailQueueEvents[_0xf417('0x6')](_0x351fd7+':'+_0x18db1f['id'],_0x18db1f);MailQueueEvents[_0xf417('0x6')](_0x351fd7,_0x18db1f);_0x313823(null);};}for(var e in events){if(events[_0xf417('0x7')](e)){var event=events[e];MailQueue[_0xf417('0x8')](e,emitEvent(event));}}module[_0xf417('0x9')]=MailQueueEvents;
\ No newline at end of file
+var _0xa6ff=['hook','exports','../../mysqldb','save','update','remove','emit','hasOwnProperty'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa6ff,0xfa));var _0xfa6f=function(_0x2c19f0,_0x29583a){_0x2c19f0=_0x2c19f0-0x0;var _0x3a2e84=_0xa6ff[_0x2c19f0];return _0x3a2e84;};'use strict';var EventEmitter=require('events');var MailQueue=require(_0xfa6f('0x0'))['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xfa6f('0x1'),'afterUpdate':_0xfa6f('0x2'),'afterDestroy':_0xfa6f('0x3')};function emitEvent(_0x4d4692){return function(_0x138369,_0x2a9c00,_0x23fe62){MailQueueEvents['emit'](_0x4d4692+':'+_0x138369['id'],_0x138369);MailQueueEvents[_0xfa6f('0x4')](_0x4d4692,_0x138369);_0x23fe62(null);};}for(var e in events){if(events[_0xfa6f('0x5')](e)){var event=events[e];MailQueue[_0xfa6f('0x6')](e,emitEvent(event));}}module[_0xfa6f('0x7')]=MailQueueEvents;
\ No newline at end of file
index 6b3d306..93ebee2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1493=['util','api','moment','bluebird','request-promise','path','rimraf','./mailQueue.attributes','exports','define','MailQueue','lodash'];(function(_0xfae87,_0x3e5033){var _0x51618f=function(_0xd5e9d7){while(--_0xd5e9d7){_0xfae87['push'](_0xfae87['shift']());}};_0x51618f(++_0x3e5033);}(_0x1493,0x137));var _0x3149=function(_0x4e378c,_0x2ab0e6){_0x4e378c=_0x4e378c-0x0;var _0x53587b=_0x1493[_0x4e378c];return _0x53587b;};'use strict';var _=require(_0x3149('0x0'));var util=require(_0x3149('0x1'));var logger=require('../../config/logger')(_0x3149('0x2'));var moment=require(_0x3149('0x3'));var BPromise=require(_0x3149('0x4'));var rp=require(_0x3149('0x5'));var fs=require('fs');var path=require(_0x3149('0x6'));var rimraf=require(_0x3149('0x7'));var config=require('../../config/environment');var attributes=require(_0x3149('0x8'));module[_0x3149('0x9')]=function(_0x5cf5bd,_0x2d1be4){return _0x5cf5bd[_0x3149('0xa')](_0x3149('0xb'),attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfe45=['../../config/logger','api','bluebird','request-promise','path','rimraf','./mailQueue.attributes','define','MailQueue','util'];(function(_0x40c5d3,_0xb19df1){var _0x555d08=function(_0xc76152){while(--_0xc76152){_0x40c5d3['push'](_0x40c5d3['shift']());}};_0x555d08(++_0xb19df1);}(_0xfe45,0x6d));var _0x5fe4=function(_0x57f609,_0x134694){_0x57f609=_0x57f609-0x0;var _0x27b467=_0xfe45[_0x57f609];return _0x27b467;};'use strict';var _=require('lodash');var util=require(_0x5fe4('0x0'));var logger=require(_0x5fe4('0x1'))(_0x5fe4('0x2'));var moment=require('moment');var BPromise=require(_0x5fe4('0x3'));var rp=require(_0x5fe4('0x4'));var fs=require('fs');var path=require(_0x5fe4('0x5'));var rimraf=require(_0x5fe4('0x6'));var config=require('../../config/environment');var attributes=require(_0x5fe4('0x7'));module['exports']=function(_0x5c496a,_0x4ed66c){return _0x5c496a[_0x5fe4('0x8')](_0x5fe4('0x9'),attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 46d67fa..f4bd5cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50a0=['model','stringify','ShowMailQueue','find','map','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./mailQueue.socket','register','then','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','error','code','message','MailQueue,\x20%s,\x20%s','info','result','catch','GetMailQueue','MailQueue','options','raw','where','attributes','include'];(function(_0x4b4670,_0x25ec3b){var _0x340a16=function(_0x1d5b68){while(--_0x1d5b68){_0x4b4670['push'](_0x4b4670['shift']());}};_0x340a16(++_0x25ec3b);}(_0x50a0,0x80));var _0x050a=function(_0x5ca467,_0x27129e){_0x5ca467=_0x5ca467-0x0;var _0xf7d692=_0x50a0[_0x5ca467];return _0xf7d692;};'use strict';var _=require(_0x050a('0x0'));var util=require(_0x050a('0x1'));var moment=require(_0x050a('0x2'));var BPromise=require('bluebird');var rs=require(_0x050a('0x3'));var fs=require('fs');var Redis=require(_0x050a('0x4'));var db=require(_0x050a('0x5'))['db'];var utils=require(_0x050a('0x6'));var logger=require(_0x050a('0x7'))(_0x050a('0x8'));var config=require(_0x050a('0x9'));var jayson=require(_0x050a('0xa'));var client=jayson[_0x050a('0xb')][_0x050a('0xc')]({'port':0x232a});config[_0x050a('0xd')]=_[_0x050a('0xe')](config[_0x050a('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x050a('0xf'))(new Redis(config[_0x050a('0xd')]));require(_0x050a('0x10'))[_0x050a('0x11')](socket);function respondWithRpcPromise(_0x43d993,_0x241bd7,_0x555474){return new BPromise(function(_0x354853,_0x5099f9){return client['request'](_0x43d993,_0x555474)[_0x050a('0x12')](function(_0x1f7309){logger['info']('MailQueue,\x20%s,\x20%s',_0x241bd7,_0x050a('0x13'));logger[_0x050a('0x14')](_0x050a('0x15'),_0x241bd7,_0x050a('0x13'),JSON['stringify'](_0x1f7309));if(_0x1f7309[_0x050a('0x16')]){if(_0x1f7309[_0x050a('0x16')][_0x050a('0x17')]===0x1f4){logger[_0x050a('0x16')]('MailQueue,\x20%s,\x20%s',_0x241bd7,_0x1f7309['error'][_0x050a('0x18')]);return _0x5099f9(_0x1f7309['error'][_0x050a('0x18')]);}logger[_0x050a('0x16')](_0x050a('0x19'),_0x241bd7,_0x1f7309[_0x050a('0x16')][_0x050a('0x18')]);return _0x354853(_0x1f7309[_0x050a('0x16')][_0x050a('0x18')]);}else{logger[_0x050a('0x1a')](_0x050a('0x19'),_0x241bd7,_0x050a('0x13'));_0x354853(_0x1f7309[_0x050a('0x1b')][_0x050a('0x18')]);}})[_0x050a('0x1c')](function(_0x29ea85){logger[_0x050a('0x16')](_0x050a('0x19'),_0x241bd7,_0x29ea85);_0x5099f9(_0x29ea85);});});}exports[_0x050a('0x1d')]=function(_0x1d9bbb){var _0x58b350=this;return new Promise(function(_0x2df939,_0xbf8163){return db[_0x050a('0x1e')]['findAll']({'raw':_0x1d9bbb[_0x050a('0x1f')]?_0x1d9bbb[_0x050a('0x1f')][_0x050a('0x20')]===undefined?!![]:![]:!![],'where':_0x1d9bbb[_0x050a('0x1f')]?_0x1d9bbb[_0x050a('0x1f')][_0x050a('0x21')]||null:null,'attributes':_0x1d9bbb[_0x050a('0x1f')]?_0x1d9bbb['options'][_0x050a('0x22')]||null:null,'limit':_0x1d9bbb[_0x050a('0x1f')]?_0x1d9bbb[_0x050a('0x1f')]['limit']||null:null,'include':_0x1d9bbb[_0x050a('0x1f')]?_0x1d9bbb[_0x050a('0x1f')][_0x050a('0x23')]?_['map'](_0x1d9bbb[_0x050a('0x1f')][_0x050a('0x23')],function(_0x236cfb){return{'model':db[_0x236cfb[_0x050a('0x24')]],'as':_0x236cfb['as'],'attributes':_0x236cfb[_0x050a('0x22')],'include':_0x236cfb['include']?_['map'](_0x236cfb[_0x050a('0x23')],function(_0x14ce2e){return{'model':db[_0x14ce2e[_0x050a('0x24')]],'as':_0x14ce2e['as'],'attributes':_0x14ce2e[_0x050a('0x22')],'include':_0x14ce2e[_0x050a('0x23')]?_['map'](_0x14ce2e['include'],function(_0x2ec273){return{'model':db[_0x2ec273['model']],'as':_0x2ec273['as'],'attributes':_0x2ec273[_0x050a('0x22')]};}):[]};}):[]};}):[]:[]})[_0x050a('0x12')](function(_0x5c0568){logger['info'](_0x050a('0x1d'),_0x1d9bbb);logger[_0x050a('0x14')]('GetMailQueue',_0x1d9bbb,JSON[_0x050a('0x25')](_0x5c0568));_0x2df939(_0x5c0568);})[_0x050a('0x1c')](function(_0x269250){logger[_0x050a('0x16')]('GetMailQueue',_0x269250['message'],_0x1d9bbb);_0xbf8163(_0x58b350['error'](0x1f4,_0x269250[_0x050a('0x18')]));});});};exports[_0x050a('0x26')]=function(_0x279bf2){var _0x46b558=this;return new Promise(function(_0x379c93,_0x1d3425){return db['MailQueue'][_0x050a('0x27')]({'raw':_0x279bf2[_0x050a('0x1f')]?_0x279bf2[_0x050a('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x279bf2['options']?_0x279bf2[_0x050a('0x1f')][_0x050a('0x21')]||null:null,'attributes':_0x279bf2['options']?_0x279bf2['options'][_0x050a('0x22')]||null:null,'include':_0x279bf2[_0x050a('0x1f')]?_0x279bf2[_0x050a('0x1f')][_0x050a('0x23')]?_['map'](_0x279bf2['options']['include'],function(_0x238c1e){return{'model':db[_0x238c1e[_0x050a('0x24')]],'as':_0x238c1e['as'],'attributes':_0x238c1e[_0x050a('0x22')],'include':_0x238c1e[_0x050a('0x23')]?_[_0x050a('0x28')](_0x238c1e[_0x050a('0x23')],function(_0x284051){return{'model':db[_0x284051[_0x050a('0x24')]],'as':_0x284051['as'],'attributes':_0x284051[_0x050a('0x22')],'include':_0x284051['include']?_[_0x050a('0x28')](_0x284051['include'],function(_0x463f94){return{'model':db[_0x463f94['model']],'as':_0x463f94['as'],'attributes':_0x463f94[_0x050a('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1ec40d){logger[_0x050a('0x1a')](_0x050a('0x26'),_0x279bf2);logger[_0x050a('0x14')](_0x050a('0x26'),_0x279bf2,JSON[_0x050a('0x25')](_0x1ec40d));_0x379c93(_0x1ec40d);})[_0x050a('0x1c')](function(_0x4eaedc){logger[_0x050a('0x16')](_0x050a('0x26'),_0x4eaedc[_0x050a('0x18')],_0x279bf2);_0x1d3425(_0x46b558['error'](0x1f4,_0x4eaedc[_0x050a('0x18')]));});});};
\ No newline at end of file
+var _0x6474=['error','code','message','info','catch','MailQueue','options','attributes','limit','include','map','model','GetMailQueue','ShowMailQueue','find','raw','where','lodash','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','register','request','then','MailQueue,\x20%s,\x20%s','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x16c67b,_0x2945e2){var _0xf906d7=function(_0x41ccef){while(--_0x41ccef){_0x16c67b['push'](_0x16c67b['shift']());}};_0xf906d7(++_0x2945e2);}(_0x6474,0x1f2));var _0x4647=function(_0x1dab1d,_0x2bfadf){_0x1dab1d=_0x1dab1d-0x0;var _0x1e63f0=_0x6474[_0x1dab1d];return _0x1e63f0;};'use strict';var _=require(_0x4647('0x0'));var util=require('util');var moment=require(_0x4647('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4647('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x4647('0x3'));var logger=require(_0x4647('0x4'))(_0x4647('0x5'));var config=require(_0x4647('0x6'));var jayson=require(_0x4647('0x7'));var client=jayson['client']['http']({'port':0x232a});config[_0x4647('0x8')]=_[_0x4647('0x9')](config[_0x4647('0x8')],{'host':_0x4647('0xa'),'port':0x18eb});var socket=require(_0x4647('0xb'))(new Redis(config[_0x4647('0x8')]));require('./mailQueue.socket')[_0x4647('0xc')](socket);function respondWithRpcPromise(_0x4bcea8,_0xe188f0,_0x4eca60){return new BPromise(function(_0x31f201,_0x3de3be){return client[_0x4647('0xd')](_0x4bcea8,_0x4eca60)[_0x4647('0xe')](function(_0x5f5d75){logger['info'](_0x4647('0xf'),_0xe188f0,_0x4647('0x10'));logger[_0x4647('0x11')](_0x4647('0x12'),_0xe188f0,_0x4647('0x10'),JSON[_0x4647('0x13')](_0x5f5d75));if(_0x5f5d75[_0x4647('0x14')]){if(_0x5f5d75[_0x4647('0x14')][_0x4647('0x15')]===0x1f4){logger[_0x4647('0x14')]('MailQueue,\x20%s,\x20%s',_0xe188f0,_0x5f5d75[_0x4647('0x14')][_0x4647('0x16')]);return _0x3de3be(_0x5f5d75[_0x4647('0x14')][_0x4647('0x16')]);}logger['error'](_0x4647('0xf'),_0xe188f0,_0x5f5d75[_0x4647('0x14')]['message']);return _0x31f201(_0x5f5d75[_0x4647('0x14')]['message']);}else{logger[_0x4647('0x17')](_0x4647('0xf'),_0xe188f0,'request\x20sent');_0x31f201(_0x5f5d75['result'][_0x4647('0x16')]);}})[_0x4647('0x18')](function(_0x51c59b){logger['error'](_0x4647('0xf'),_0xe188f0,_0x51c59b);_0x3de3be(_0x51c59b);});});}exports['GetMailQueue']=function(_0x331692){var _0x3f9249=this;return new Promise(function(_0x119d4b,_0x1c0603){return db[_0x4647('0x19')]['findAll']({'raw':_0x331692['options']?_0x331692[_0x4647('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x331692[_0x4647('0x1a')]?_0x331692[_0x4647('0x1a')]['where']||null:null,'attributes':_0x331692['options']?_0x331692[_0x4647('0x1a')][_0x4647('0x1b')]||null:null,'limit':_0x331692[_0x4647('0x1a')]?_0x331692[_0x4647('0x1a')][_0x4647('0x1c')]||null:null,'include':_0x331692[_0x4647('0x1a')]?_0x331692['options'][_0x4647('0x1d')]?_[_0x4647('0x1e')](_0x331692[_0x4647('0x1a')][_0x4647('0x1d')],function(_0x923a4a){return{'model':db[_0x923a4a[_0x4647('0x1f')]],'as':_0x923a4a['as'],'attributes':_0x923a4a[_0x4647('0x1b')],'include':_0x923a4a[_0x4647('0x1d')]?_[_0x4647('0x1e')](_0x923a4a[_0x4647('0x1d')],function(_0x3f0ae9){return{'model':db[_0x3f0ae9['model']],'as':_0x3f0ae9['as'],'attributes':_0x3f0ae9[_0x4647('0x1b')],'include':_0x3f0ae9['include']?_[_0x4647('0x1e')](_0x3f0ae9[_0x4647('0x1d')],function(_0x87bd31){return{'model':db[_0x87bd31[_0x4647('0x1f')]],'as':_0x87bd31['as'],'attributes':_0x87bd31[_0x4647('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xaca9f0){logger[_0x4647('0x17')]('GetMailQueue',_0x331692);logger['debug'](_0x4647('0x20'),_0x331692,JSON[_0x4647('0x13')](_0xaca9f0));_0x119d4b(_0xaca9f0);})[_0x4647('0x18')](function(_0x547ceb){logger[_0x4647('0x14')](_0x4647('0x20'),_0x547ceb[_0x4647('0x16')],_0x331692);_0x1c0603(_0x3f9249[_0x4647('0x14')](0x1f4,_0x547ceb[_0x4647('0x16')]));});});};exports[_0x4647('0x21')]=function(_0x3ae7a3){var _0xf01aa7=this;return new Promise(function(_0x32e2ce,_0x3d4a02){return db['MailQueue'][_0x4647('0x22')]({'raw':_0x3ae7a3[_0x4647('0x1a')]?_0x3ae7a3[_0x4647('0x1a')][_0x4647('0x23')]===undefined?!![]:![]:!![],'where':_0x3ae7a3['options']?_0x3ae7a3['options'][_0x4647('0x24')]||null:null,'attributes':_0x3ae7a3[_0x4647('0x1a')]?_0x3ae7a3['options']['attributes']||null:null,'include':_0x3ae7a3[_0x4647('0x1a')]?_0x3ae7a3[_0x4647('0x1a')][_0x4647('0x1d')]?_[_0x4647('0x1e')](_0x3ae7a3['options']['include'],function(_0xd743fd){return{'model':db[_0xd743fd['model']],'as':_0xd743fd['as'],'attributes':_0xd743fd[_0x4647('0x1b')],'include':_0xd743fd[_0x4647('0x1d')]?_['map'](_0xd743fd['include'],function(_0x47a71f){return{'model':db[_0x47a71f[_0x4647('0x1f')]],'as':_0x47a71f['as'],'attributes':_0x47a71f[_0x4647('0x1b')],'include':_0x47a71f[_0x4647('0x1d')]?_['map'](_0x47a71f['include'],function(_0x97405b){return{'model':db[_0x97405b[_0x4647('0x1f')]],'as':_0x97405b['as'],'attributes':_0x97405b[_0x4647('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x39c318){logger[_0x4647('0x17')](_0x4647('0x21'),_0x3ae7a3);logger[_0x4647('0x11')]('ShowMailQueue',_0x3ae7a3,JSON[_0x4647('0x13')](_0x39c318));_0x32e2ce(_0x39c318);})[_0x4647('0x18')](function(_0x348118){logger[_0x4647('0x14')]('ShowMailQueue',_0x348118['message'],_0x3ae7a3);_0x3d4a02(_0xf01aa7[_0x4647('0x14')](0x1f4,_0x348118['message']));});});};
\ No newline at end of file
index 133f410..c134624 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf891=['removeListener','register','mailQueue:','./mailQueue.events','save','emit'];(function(_0xf1cbea,_0x40c62d){var _0x55630c=function(_0x1c8074){while(--_0x1c8074){_0xf1cbea['push'](_0xf1cbea['shift']());}};_0x55630c(++_0x40c62d);}(_0xf891,0x93));var _0x1f89=function(_0x444fa8,_0x1215d7){_0x444fa8=_0x444fa8-0x0;var _0x1c6634=_0xf891[_0x444fa8];return _0x1c6634;};'use strict';var MailQueueEvents=require(_0x1f89('0x0'));var events=[_0x1f89('0x1'),'remove','update'];function createListener(_0x4fa87c,_0x586eb0){return function(_0x4c15de){_0x586eb0[_0x1f89('0x2')](_0x4fa87c,_0x4c15de);};}function removeListener(_0x532281,_0x20df27){return function(){MailQueueEvents[_0x1f89('0x3')](_0x532281,_0x20df27);};}exports[_0x1f89('0x4')]=function(_0x52c493){for(var _0x1acdc4=0x0,_0x3857bb=events['length'];_0x1acdc4<_0x3857bb;_0x1acdc4++){var _0x14ba98=events[_0x1acdc4];var _0x42d055=createListener(_0x1f89('0x5')+_0x14ba98,_0x52c493);MailQueueEvents['on'](_0x14ba98,_0x42d055);}};
\ No newline at end of file
+var _0xcd60=['register','length','./mailQueue.events','save','remove','update','removeListener'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcd60,0xf0));var _0x0cd6=function(_0x35e56e,_0x16cdf3){_0x35e56e=_0x35e56e-0x0;var _0x4e3d32=_0xcd60[_0x35e56e];return _0x4e3d32;};'use strict';var MailQueueEvents=require(_0x0cd6('0x0'));var events=[_0x0cd6('0x1'),_0x0cd6('0x2'),_0x0cd6('0x3')];function createListener(_0x15e600,_0x455593){return function(_0x155444){_0x455593['emit'](_0x15e600,_0x155444);};}function removeListener(_0x10c2b8,_0x117c2e){return function(){MailQueueEvents[_0x0cd6('0x4')](_0x10c2b8,_0x117c2e);};}exports[_0x0cd6('0x5')]=function(_0x3b4f35){for(var _0x5f4525=0x0,_0x2ceb47=events[_0x0cd6('0x6')];_0x5f4525<_0x2ceb47;_0x5f4525++){var _0x47c8b2=events[_0x5f4525];var _0x4714bf=createListener('mailQueue:'+_0x47c8b2,_0x3b4f35);MailQueueEvents['on'](_0x47c8b2,_0x4714bf);}};
\ No newline at end of file
index b2410fa..89c562a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94ad=['exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueueReport.controller','get','isAuthenticated','index','/describe','describe','post','create','put','update','delete'];(function(_0x540ef7,_0x45b827){var _0x3655da=function(_0x2f6166){while(--_0x2f6166){_0x540ef7['push'](_0x540ef7['shift']());}};_0x3655da(++_0x45b827);}(_0x94ad,0x1b9));var _0xd94a=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x94ad[_0x46698a];return _0x356db0;};'use strict';var multer=require(_0xd94a('0x0'));var util=require(_0xd94a('0x1'));var path=require(_0xd94a('0x2'));var timeout=require(_0xd94a('0x3'));var express=require(_0xd94a('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xd94a('0x5'));var interaction=require(_0xd94a('0x6'));var config=require(_0xd94a('0x7'));var controller=require(_0xd94a('0x8'));router[_0xd94a('0x9')]('/',auth[_0xd94a('0xa')](),controller[_0xd94a('0xb')]);router[_0xd94a('0x9')](_0xd94a('0xc'),auth[_0xd94a('0xa')](),controller[_0xd94a('0xd')]);router['get']('/:id',auth[_0xd94a('0xa')](),controller['show']);router[_0xd94a('0xe')]('/',auth[_0xd94a('0xa')](),controller[_0xd94a('0xf')]);router[_0xd94a('0x10')]('/:id',auth[_0xd94a('0xa')](),controller[_0xd94a('0x11')]);router[_0xd94a('0x12')]('/:id',auth[_0xd94a('0xa')](),controller['destroy']);module[_0xd94a('0x13')]=router;
\ No newline at end of file
+var _0x404c=['describe','/:id','show','put','update','destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailQueueReport.controller','get','isAuthenticated','index','/describe'];(function(_0x4529f8,_0x21104e){var _0x1734be=function(_0x392726){while(--_0x392726){_0x4529f8['push'](_0x4529f8['shift']());}};_0x1734be(++_0x21104e);}(_0x404c,0x139));var _0xc404=function(_0x22408d,_0x21c6fd){_0x22408d=_0x22408d-0x0;var _0x12fbaa=_0x404c[_0x22408d];return _0x12fbaa;};'use strict';var multer=require(_0xc404('0x0'));var util=require(_0xc404('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc404('0x2')]();var fs_extra=require(_0xc404('0x3'));var auth=require(_0xc404('0x4'));var interaction=require(_0xc404('0x5'));var config=require('../../config/environment');var controller=require(_0xc404('0x6'));router[_0xc404('0x7')]('/',auth[_0xc404('0x8')](),controller[_0xc404('0x9')]);router[_0xc404('0x7')](_0xc404('0xa'),auth[_0xc404('0x8')](),controller[_0xc404('0xb')]);router[_0xc404('0x7')](_0xc404('0xc'),auth[_0xc404('0x8')](),controller[_0xc404('0xd')]);router['post']('/',auth[_0xc404('0x8')](),controller['create']);router[_0xc404('0xe')](_0xc404('0xc'),auth[_0xc404('0x8')](),controller[_0xc404('0xf')]);router['delete'](_0xc404('0xc'),auth[_0xc404('0x8')](),controller[_0xc404('0x10')]);module[_0xc404('0x11')]=router;
\ No newline at end of file
index c76d44e..9b4c638 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd056=['STRING','DATE','sequelize','exports'];(function(_0x3e60ae,_0x4217f7){var _0xf7877e=function(_0xd22e0b){while(--_0xd22e0b){_0x3e60ae['push'](_0x3e60ae['shift']());}};_0xf7877e(++_0x4217f7);}(_0xd056,0x142));var _0x6d05=function(_0xdd18e,_0x1f2333){_0xdd18e=_0xdd18e-0x0;var _0x7e287=_0xd056[_0xdd18e];return _0x7e287;};'use strict';var moment=require('moment');var Sequelize=require(_0x6d05('0x0'));module[_0x6d05('0x1')]={'uniqueid':{'type':Sequelize[_0x6d05('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x6d05('0x2')]},'joinAt':{'type':Sequelize[_0x6d05('0x3')]},'leaveAt':{'type':Sequelize[_0x6d05('0x3')]},'acceptAt':{'type':Sequelize[_0x6d05('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x6d05('0x2')]}};
\ No newline at end of file
+var _0x6c6e=['sequelize','STRING','DATE','moment'];(function(_0x1daa97,_0xbaa3fc){var _0x551a31=function(_0x5a9191){while(--_0x5a9191){_0x1daa97['push'](_0x1daa97['shift']());}};_0x551a31(++_0xbaa3fc);}(_0x6c6e,0x1ef));var _0xe6c6=function(_0x2e2894,_0x50a729){_0x2e2894=_0x2e2894-0x0;var _0x369813=_0x6c6e[_0x2e2894];return _0x369813;};'use strict';var moment=require(_0xe6c6('0x0'));var Sequelize=require(_0xe6c6('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xe6c6('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xe6c6('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xe6c6('0x2')]}};
\ No newline at end of file
index 8f28ad6..44578cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb44a=['options','rows','catch','show','params','includeAll','merge','create','body','find','destroy','describe','zip-dir','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','error','stack','name','send','MailQueueReport','rawAttributes','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','map','type','VIRTUAL'];(function(_0x498573,_0x1b5c26){var _0x32a269=function(_0x4ebcde){while(--_0x4ebcde){_0x498573['push'](_0x498573['shift']());}};_0x32a269(++_0x1b5c26);}(_0xb44a,0x1c2));var _0xab44=function(_0x595bd1,_0xb1e7a){_0x595bd1=_0x595bd1-0x0;var _0xd0344f=_0xb44a[_0x595bd1];return _0xd0344f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xab44('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xab44('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xab44('0x2'));var util=require('util');var path=require(_0xab44('0x3'));var sox=require(_0xab44('0x4'));var csv=require(_0xab44('0x5'));var ejs=require(_0xab44('0x6'));var fs=require('fs');var fs_extra=require(_0xab44('0x7'));var _=require(_0xab44('0x8'));var squel=require(_0xab44('0x9'));var crypto=require(_0xab44('0xa'));var jsforce=require(_0xab44('0xb'));var deskjs=require(_0xab44('0xc'));var toCsv=require(_0xab44('0x5'));var querystring=require(_0xab44('0xd'));var Papa=require(_0xab44('0xe'));var Redis=require('ioredis');var authService=require(_0xab44('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xab44('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xab44('0x11'));var utils=require(_0xab44('0x12'));var config=require(_0xab44('0x13'));var licenseUtil=require(_0xab44('0x14'));var db=require(_0xab44('0x15'))['db'];function respondWithStatusCode(_0x237c26,_0x52d282){_0x52d282=_0x52d282||0xcc;return function(_0x57fcff){if(_0x57fcff){return _0x237c26[_0xab44('0x16')](_0x52d282);}return _0x237c26['status'](_0x52d282)[_0xab44('0x17')]();};}function respondWithResult(_0x5ae369,_0x25f611){_0x25f611=_0x25f611||0xc8;return function(_0x15b98a){if(_0x15b98a){return _0x5ae369[_0xab44('0x18')](_0x25f611)[_0xab44('0x19')](_0x15b98a);}};}function respondWithFilteredResult(_0x31404d,_0x41701b){return function(_0x4875df){if(_0x4875df){var _0x51251b=typeof _0x41701b[_0xab44('0x1a')]===_0xab44('0x1b')&&typeof _0x41701b[_0xab44('0x1c')]===_0xab44('0x1b');var _0xffdfbc=_0x4875df[_0xab44('0x1d')];var _0x354b09=_0x51251b?0x0:_0x41701b[_0xab44('0x1a')];var _0x310b15=_0x51251b?_0x4875df[_0xab44('0x1d')]:_0x41701b[_0xab44('0x1a')]+_0x41701b['limit'];var _0xb779bb;if(_0x310b15>=_0xffdfbc){_0x310b15=_0xffdfbc;_0xb779bb=0xc8;}else{_0xb779bb=0xce;}_0x31404d[_0xab44('0x18')](_0xb779bb);return _0x31404d[_0xab44('0x1e')](_0xab44('0x1f'),_0x354b09+'-'+_0x310b15+'/'+_0xffdfbc)[_0xab44('0x19')](_0x4875df);}return null;};}function patchUpdates(_0x5123b1){return function(_0xcd426){try{jsonpatch['apply'](_0xcd426,_0x5123b1,!![]);}catch(_0x1f7311){return BPromise[_0xab44('0x20')](_0x1f7311);}return _0xcd426[_0xab44('0x21')]();};}function saveUpdates(_0x355083,_0x486317){return function(_0x3a2b1d){if(_0x3a2b1d){return _0x3a2b1d[_0xab44('0x22')](_0x355083)[_0xab44('0x23')](function(_0x3b17d5){return _0x3b17d5;});}return null;};}function removeEntity(_0x11f0b,_0x402950){return function(_0x43f1c6){if(_0x43f1c6){return _0x43f1c6['destroy']()['then'](function(){_0x11f0b[_0xab44('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2439f3,_0x5a7269){return function(_0x2a1bbc){if(!_0x2a1bbc){_0x2439f3['sendStatus'](0x194);}return _0x2a1bbc;};}function handleError(_0x531583,_0x8e60fa){_0x8e60fa=_0x8e60fa||0x1f4;return function(_0x25287b){logger[_0xab44('0x24')](_0x25287b[_0xab44('0x25')]);if(_0x25287b[_0xab44('0x26')]){delete _0x25287b['name'];}_0x531583[_0xab44('0x18')](_0x8e60fa)[_0xab44('0x27')](_0x25287b);};}exports['index']=function(_0x887b0d,_0xebb7d1){var _0x21131e={},_0x1cd486={},_0x4550c8={'count':0x0,'rows':[]};var _0xdc50a1=_['map'](db[_0xab44('0x28')][_0xab44('0x29')],function(_0x36f9b6){return{'name':_0x36f9b6['fieldName'],'type':_0x36f9b6['type'][_0xab44('0x2a')]};});_0x1cd486['model']=_['map'](_0xdc50a1,_0xab44('0x26'));_0x1cd486[_0xab44('0x2b')]=_[_0xab44('0x2c')](_0x887b0d[_0xab44('0x2b')]);_0x1cd486[_0xab44('0x2d')]=_[_0xab44('0x2e')](_0x1cd486[_0xab44('0x2f')],_0x1cd486[_0xab44('0x2b')]);_0x21131e[_0xab44('0x30')]=_[_0xab44('0x2e')](_0x1cd486[_0xab44('0x2f')],qs[_0xab44('0x31')](_0x887b0d[_0xab44('0x2b')][_0xab44('0x31')]));_0x21131e['attributes']=_0x21131e['attributes'][_0xab44('0x32')]?_0x21131e[_0xab44('0x30')]:_0x1cd486['model'];if(!_0x887b0d[_0xab44('0x2b')][_0xab44('0x33')](_0xab44('0x34'))){_0x21131e[_0xab44('0x1c')]=qs[_0xab44('0x1c')](_0x887b0d[_0xab44('0x2b')][_0xab44('0x1c')]);_0x21131e[_0xab44('0x1a')]=qs[_0xab44('0x1a')](_0x887b0d[_0xab44('0x2b')][_0xab44('0x1a')]);}_0x21131e[_0xab44('0x35')]=qs[_0xab44('0x36')](_0x887b0d[_0xab44('0x2b')][_0xab44('0x36')]);_0x21131e[_0xab44('0x37')]=qs[_0xab44('0x2d')](_[_0xab44('0x38')](_0x887b0d['query'],_0x1cd486[_0xab44('0x2d')]),_0xdc50a1);if(_0x887b0d[_0xab44('0x2b')][_0xab44('0x39')]){_0x21131e[_0xab44('0x37')]=_['merge'](_0x21131e[_0xab44('0x37')],{'$or':_[_0xab44('0x3a')](_0xdc50a1,function(_0xcd077a){if(_0xcd077a[_0xab44('0x3b')]!==_0xab44('0x3c')){var _0x4f5cf3={};_0x4f5cf3[_0xcd077a[_0xab44('0x26')]]={'$like':'%'+_0x887b0d[_0xab44('0x2b')][_0xab44('0x39')]+'%'};return _0x4f5cf3;}})});}_0x21131e=_['merge']({},_0x21131e,_0x887b0d[_0xab44('0x3d')]);var _0x1e26de={'where':_0x21131e[_0xab44('0x37')]};return db[_0xab44('0x28')][_0xab44('0x1d')](_0x1e26de)['then'](function(_0x1de52d){_0x4550c8['count']=_0x1de52d;if(_0x887b0d[_0xab44('0x2b')]['includeAll']){_0x21131e['include']=[{'all':!![]}];}return db['MailQueueReport']['findAll'](_0x21131e);})['then'](function(_0x120585){_0x4550c8[_0xab44('0x3e')]=_0x120585;return _0x4550c8;})[_0xab44('0x23')](respondWithFilteredResult(_0xebb7d1,_0x21131e))[_0xab44('0x3f')](handleError(_0xebb7d1,null));};exports[_0xab44('0x40')]=function(_0xf3f37a,_0x19d20d){var _0x33641e={'raw':!![],'where':{'id':_0xf3f37a[_0xab44('0x41')]['id']}},_0x4429e6={};_0x4429e6['model']=_[_0xab44('0x2c')](db[_0xab44('0x28')][_0xab44('0x29')]);_0x4429e6[_0xab44('0x2b')]=_['keys'](_0xf3f37a[_0xab44('0x2b')]);_0x4429e6[_0xab44('0x2d')]=_[_0xab44('0x2e')](_0x4429e6[_0xab44('0x2f')],_0x4429e6[_0xab44('0x2b')]);_0x33641e[_0xab44('0x30')]=_['intersection'](_0x4429e6['model'],qs[_0xab44('0x31')](_0xf3f37a[_0xab44('0x2b')][_0xab44('0x31')]));_0x33641e[_0xab44('0x30')]=_0x33641e[_0xab44('0x30')]['length']?_0x33641e[_0xab44('0x30')]:_0x4429e6[_0xab44('0x2f')];if(_0xf3f37a[_0xab44('0x2b')][_0xab44('0x42')]){_0x33641e['include']=[{'all':!![]}];}_0x33641e=_[_0xab44('0x43')]({},_0x33641e,_0xf3f37a[_0xab44('0x3d')]);return db[_0xab44('0x28')]['find'](_0x33641e)[_0xab44('0x23')](handleEntityNotFound(_0x19d20d,null))[_0xab44('0x23')](respondWithResult(_0x19d20d,null))[_0xab44('0x3f')](handleError(_0x19d20d,null));};exports[_0xab44('0x44')]=function(_0x4eeb65,_0x13892d){return db['MailQueueReport'][_0xab44('0x44')](_0x4eeb65[_0xab44('0x45')],{})[_0xab44('0x23')](respondWithResult(_0x13892d,0xc9))[_0xab44('0x3f')](handleError(_0x13892d,null));};exports['update']=function(_0x328891,_0x5497a3){if(_0x328891[_0xab44('0x45')]['id']){delete _0x328891[_0xab44('0x45')]['id'];}return db[_0xab44('0x28')][_0xab44('0x46')]({'where':{'id':_0x328891[_0xab44('0x41')]['id']}})['then'](handleEntityNotFound(_0x5497a3,null))[_0xab44('0x23')](saveUpdates(_0x328891['body'],null))[_0xab44('0x23')](respondWithResult(_0x5497a3,null))[_0xab44('0x3f')](handleError(_0x5497a3,null));};exports[_0xab44('0x47')]=function(_0x50b705,_0x4463f1){return db[_0xab44('0x28')][_0xab44('0x46')]({'where':{'id':_0x50b705[_0xab44('0x41')]['id']}})[_0xab44('0x23')](handleEntityNotFound(_0x4463f1,null))['then'](removeEntity(_0x4463f1,null))['catch'](handleError(_0x4463f1,null));};exports[_0xab44('0x48')]=function(_0x1b18fb,_0xaa00a1){return db['MailQueueReport'][_0xab44('0x48')]()[_0xab44('0x23')](respondWithResult(_0xaa00a1,null))[_0xab44('0x3f')](handleError(_0xaa00a1,null));};
\ No newline at end of file
+var _0x0424=['index','map','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','MailQueueReport','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','destroy','describe','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','stack','name','send'];(function(_0x28089e,_0x530f8a){var _0x46a73c=function(_0x461513){while(--_0x461513){_0x28089e['push'](_0x28089e['shift']());}};_0x46a73c(++_0x530f8a);}(_0x0424,0x159));var _0x4042=function(_0x4ff09b,_0x53f67d){_0x4ff09b=_0x4ff09b-0x0;var _0x3f5c2e=_0x0424[_0x4ff09b];return _0x3f5c2e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4042('0x0'));var jsonpatch=require(_0x4042('0x1'));var rp=require(_0x4042('0x2'));var moment=require(_0x4042('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x4042('0x4'));var util=require('util');var path=require('path');var sox=require(_0x4042('0x5'));var csv=require(_0x4042('0x6'));var ejs=require(_0x4042('0x7'));var fs=require('fs');var fs_extra=require(_0x4042('0x8'));var _=require(_0x4042('0x9'));var squel=require(_0x4042('0xa'));var crypto=require(_0x4042('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4042('0x6'));var querystring=require(_0x4042('0xc'));var Papa=require(_0x4042('0xd'));var Redis=require('ioredis');var authService=require(_0x4042('0xe'));var qs=require(_0x4042('0xf'));var as=require(_0x4042('0x10'));var hardwareService=require(_0x4042('0x11'));var logger=require(_0x4042('0x12'))(_0x4042('0x13'));var utils=require(_0x4042('0x14'));var config=require(_0x4042('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x4042('0x16'))['db'];function respondWithStatusCode(_0x357838,_0x59a068){_0x59a068=_0x59a068||0xcc;return function(_0x25fd0a){if(_0x25fd0a){return _0x357838[_0x4042('0x17')](_0x59a068);}return _0x357838[_0x4042('0x18')](_0x59a068)[_0x4042('0x19')]();};}function respondWithResult(_0x35f82a,_0x1ff3ca){_0x1ff3ca=_0x1ff3ca||0xc8;return function(_0xc115bd){if(_0xc115bd){return _0x35f82a['status'](_0x1ff3ca)[_0x4042('0x1a')](_0xc115bd);}};}function respondWithFilteredResult(_0x291e5c,_0x50206f){return function(_0x28087d){if(_0x28087d){var _0x3f99f8=typeof _0x50206f[_0x4042('0x1b')]===_0x4042('0x1c')&&typeof _0x50206f[_0x4042('0x1d')]===_0x4042('0x1c');var _0x62cb76=_0x28087d[_0x4042('0x1e')];var _0x466077=_0x3f99f8?0x0:_0x50206f['offset'];var _0xe5c1ec=_0x3f99f8?_0x28087d['count']:_0x50206f[_0x4042('0x1b')]+_0x50206f['limit'];var _0xca9ca6;if(_0xe5c1ec>=_0x62cb76){_0xe5c1ec=_0x62cb76;_0xca9ca6=0xc8;}else{_0xca9ca6=0xce;}_0x291e5c[_0x4042('0x18')](_0xca9ca6);return _0x291e5c[_0x4042('0x1f')](_0x4042('0x20'),_0x466077+'-'+_0xe5c1ec+'/'+_0x62cb76)['json'](_0x28087d);}return null;};}function patchUpdates(_0xb72021){return function(_0x4561e3){try{jsonpatch[_0x4042('0x21')](_0x4561e3,_0xb72021,!![]);}catch(_0xd1ddb){return BPromise['reject'](_0xd1ddb);}return _0x4561e3[_0x4042('0x22')]();};}function saveUpdates(_0xf0e0c6,_0xd6fe6c){return function(_0x83ce71){if(_0x83ce71){return _0x83ce71[_0x4042('0x23')](_0xf0e0c6)['then'](function(_0x1f9d4a){return _0x1f9d4a;});}return null;};}function removeEntity(_0x6d12a5,_0x519f2c){return function(_0x1daee8){if(_0x1daee8){return _0x1daee8['destroy']()[_0x4042('0x24')](function(){_0x6d12a5[_0x4042('0x18')](0xcc)[_0x4042('0x19')]();});}};}function handleEntityNotFound(_0x5d5c6d,_0x461c5e){return function(_0x3b9e78){if(!_0x3b9e78){_0x5d5c6d[_0x4042('0x17')](0x194);}return _0x3b9e78;};}function handleError(_0xbdadc8,_0x1c4d9f){_0x1c4d9f=_0x1c4d9f||0x1f4;return function(_0x52e575){logger['error'](_0x52e575[_0x4042('0x25')]);if(_0x52e575[_0x4042('0x26')]){delete _0x52e575[_0x4042('0x26')];}_0xbdadc8[_0x4042('0x18')](_0x1c4d9f)[_0x4042('0x27')](_0x52e575);};}exports[_0x4042('0x28')]=function(_0x5eb84b,_0x33733b){var _0x1e9bd7={},_0x4a6a6e={},_0xae26c2={'count':0x0,'rows':[]};var _0x89e16=_[_0x4042('0x29')](db['MailQueueReport']['rawAttributes'],function(_0x3d1f48){return{'name':_0x3d1f48[_0x4042('0x2a')],'type':_0x3d1f48['type'][_0x4042('0x2b')]};});_0x4a6a6e[_0x4042('0x2c')]=_[_0x4042('0x29')](_0x89e16,_0x4042('0x26'));_0x4a6a6e[_0x4042('0x2d')]=_[_0x4042('0x2e')](_0x5eb84b[_0x4042('0x2d')]);_0x4a6a6e[_0x4042('0x2f')]=_[_0x4042('0x30')](_0x4a6a6e['model'],_0x4a6a6e[_0x4042('0x2d')]);_0x1e9bd7[_0x4042('0x31')]=_['intersection'](_0x4a6a6e[_0x4042('0x2c')],qs[_0x4042('0x32')](_0x5eb84b['query'][_0x4042('0x32')]));_0x1e9bd7[_0x4042('0x31')]=_0x1e9bd7[_0x4042('0x31')][_0x4042('0x33')]?_0x1e9bd7[_0x4042('0x31')]:_0x4a6a6e[_0x4042('0x2c')];if(!_0x5eb84b[_0x4042('0x2d')][_0x4042('0x34')](_0x4042('0x35'))){_0x1e9bd7[_0x4042('0x1d')]=qs[_0x4042('0x1d')](_0x5eb84b[_0x4042('0x2d')][_0x4042('0x1d')]);_0x1e9bd7[_0x4042('0x1b')]=qs[_0x4042('0x1b')](_0x5eb84b[_0x4042('0x2d')][_0x4042('0x1b')]);}_0x1e9bd7[_0x4042('0x36')]=qs[_0x4042('0x37')](_0x5eb84b[_0x4042('0x2d')][_0x4042('0x37')]);_0x1e9bd7['where']=qs[_0x4042('0x2f')](_[_0x4042('0x38')](_0x5eb84b[_0x4042('0x2d')],_0x4a6a6e[_0x4042('0x2f')]),_0x89e16);if(_0x5eb84b['query'][_0x4042('0x39')]){_0x1e9bd7[_0x4042('0x3a')]=_[_0x4042('0x3b')](_0x1e9bd7[_0x4042('0x3a')],{'$or':_[_0x4042('0x29')](_0x89e16,function(_0x13da64){if(_0x13da64[_0x4042('0x3c')]!==_0x4042('0x3d')){var _0x341083={};_0x341083[_0x13da64[_0x4042('0x26')]]={'$like':'%'+_0x5eb84b['query'][_0x4042('0x39')]+'%'};return _0x341083;}})});}_0x1e9bd7=_[_0x4042('0x3b')]({},_0x1e9bd7,_0x5eb84b[_0x4042('0x3e')]);var _0x1eab87={'where':_0x1e9bd7[_0x4042('0x3a')]};return db[_0x4042('0x3f')][_0x4042('0x1e')](_0x1eab87)[_0x4042('0x24')](function(_0x52b1bd){_0xae26c2['count']=_0x52b1bd;if(_0x5eb84b[_0x4042('0x2d')][_0x4042('0x40')]){_0x1e9bd7[_0x4042('0x41')]=[{'all':!![]}];}return db[_0x4042('0x3f')][_0x4042('0x42')](_0x1e9bd7);})[_0x4042('0x24')](function(_0xdfb5cb){_0xae26c2[_0x4042('0x43')]=_0xdfb5cb;return _0xae26c2;})[_0x4042('0x24')](respondWithFilteredResult(_0x33733b,_0x1e9bd7))[_0x4042('0x44')](handleError(_0x33733b,null));};exports[_0x4042('0x45')]=function(_0x35fdc2,_0x5666ed){var _0x5dea57={'raw':!![],'where':{'id':_0x35fdc2[_0x4042('0x46')]['id']}},_0x929884={};_0x929884['model']=_[_0x4042('0x2e')](db['MailQueueReport'][_0x4042('0x47')]);_0x929884[_0x4042('0x2d')]=_[_0x4042('0x2e')](_0x35fdc2['query']);_0x929884[_0x4042('0x2f')]=_[_0x4042('0x30')](_0x929884['model'],_0x929884[_0x4042('0x2d')]);_0x5dea57[_0x4042('0x31')]=_[_0x4042('0x30')](_0x929884[_0x4042('0x2c')],qs[_0x4042('0x32')](_0x35fdc2['query']['fields']));_0x5dea57['attributes']=_0x5dea57[_0x4042('0x31')][_0x4042('0x33')]?_0x5dea57['attributes']:_0x929884['model'];if(_0x35fdc2['query'][_0x4042('0x40')]){_0x5dea57['include']=[{'all':!![]}];}_0x5dea57=_['merge']({},_0x5dea57,_0x35fdc2[_0x4042('0x3e')]);return db[_0x4042('0x3f')][_0x4042('0x48')](_0x5dea57)[_0x4042('0x24')](handleEntityNotFound(_0x5666ed,null))[_0x4042('0x24')](respondWithResult(_0x5666ed,null))[_0x4042('0x44')](handleError(_0x5666ed,null));};exports[_0x4042('0x49')]=function(_0x2abc13,_0x198209){return db['MailQueueReport']['create'](_0x2abc13['body'],{})['then'](respondWithResult(_0x198209,0xc9))[_0x4042('0x44')](handleError(_0x198209,null));};exports[_0x4042('0x23')]=function(_0xd898ea,_0x250434){if(_0xd898ea[_0x4042('0x4a')]['id']){delete _0xd898ea[_0x4042('0x4a')]['id'];}return db[_0x4042('0x3f')][_0x4042('0x48')]({'where':{'id':_0xd898ea['params']['id']}})[_0x4042('0x24')](handleEntityNotFound(_0x250434,null))[_0x4042('0x24')](saveUpdates(_0xd898ea[_0x4042('0x4a')],null))[_0x4042('0x24')](respondWithResult(_0x250434,null))[_0x4042('0x44')](handleError(_0x250434,null));};exports[_0x4042('0x4b')]=function(_0xf5f38a,_0x591a0f){return db['MailQueueReport']['find']({'where':{'id':_0xf5f38a[_0x4042('0x46')]['id']}})[_0x4042('0x24')](handleEntityNotFound(_0x591a0f,null))['then'](removeEntity(_0x591a0f,null))[_0x4042('0x44')](handleError(_0x591a0f,null));};exports[_0x4042('0x4c')]=function(_0x5d42a7,_0x4ec047){return db[_0x4042('0x3f')][_0x4042('0x4c')]()[_0x4042('0x24')](respondWithResult(_0x4ec047,null))[_0x4042('0x44')](handleError(_0x4ec047,null));};
\ No newline at end of file
index 02ca91a..b80b5c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc319=['MailQueueReport','report_mail_queue','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./mailQueueReport.attributes','define'];(function(_0x53081b,_0x283ae4){var _0x9c019a=function(_0x1b30bd){while(--_0x1b30bd){_0x53081b['push'](_0x53081b['shift']());}};_0x9c019a(++_0x283ae4);}(_0xc319,0x12e));var _0x9c31=function(_0x1bfe7e,_0x142595){_0x1bfe7e=_0x1bfe7e-0x0;var _0x2ad450=_0xc319[_0x1bfe7e];return _0x2ad450;};'use strict';var _=require(_0x9c31('0x0'));var util=require(_0x9c31('0x1'));var logger=require(_0x9c31('0x2'))('api');var moment=require(_0x9c31('0x3'));var BPromise=require(_0x9c31('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9c31('0x5'));var rimraf=require(_0x9c31('0x6'));var config=require(_0x9c31('0x7'));var attributes=require(_0x9c31('0x8'));module['exports']=function(_0x401c82,_0x109244){return _0x401c82[_0x9c31('0x9')](_0x9c31('0xa'),attributes,{'tableName':_0x9c31('0xb'),'paranoid':![],'indexes':[{'name':_0x9c31('0xc'),'fields':[_0x9c31('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7301=['rimraf','../../config/environment','./mailQueueReport.attributes','exports','define','MailQueueReport','report_mail_queue','uniqueid','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x101f28,_0x1c97a4){var _0x444f47=function(_0x1d1617){while(--_0x1d1617){_0x101f28['push'](_0x101f28['shift']());}};_0x444f47(++_0x1c97a4);}(_0x7301,0x104));var _0x1730=function(_0x245cc7,_0x2cf238){_0x245cc7=_0x245cc7-0x0;var _0x426ea8=_0x7301[_0x245cc7];return _0x426ea8;};'use strict';var _=require('lodash');var util=require(_0x1730('0x0'));var logger=require(_0x1730('0x1'))(_0x1730('0x2'));var moment=require(_0x1730('0x3'));var BPromise=require(_0x1730('0x4'));var rp=require(_0x1730('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1730('0x6'));var config=require(_0x1730('0x7'));var attributes=require(_0x1730('0x8'));module[_0x1730('0x9')]=function(_0x5dcc91,_0x63a161){return _0x5dcc91[_0x1730('0xa')](_0x1730('0xb'),attributes,{'tableName':_0x1730('0xc'),'paranoid':![],'indexes':[{'name':_0x1730('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 00b8663..6a9042a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x5df8fa,_0x4ca583){var _0x498172=function(_0x23655a){while(--_0x23655a){_0x5df8fa['push'](_0x5df8fa['shift']());}};_0x498172(++_0x4ca583);}(_0x326f,0xd1));var _0xf326=function(_0xb897c6,_0x49a734){_0xb897c6=_0xb897c6-0x0;var _0x3b5cc7=_0x326f[_0xb897c6];return _0x3b5cc7;};'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
+var _0xdb28=['UpdateMailQueueReport','MailQueueReport','update','raw','where','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','CreateMailQueueReport','create','body','options'];(function(_0x2377e3,_0x2c0352){var _0x2a6d1b=function(_0x536523){while(--_0x536523){_0x2377e3['push'](_0x2377e3['shift']());}};_0x2a6d1b(++_0x2c0352);}(_0xdb28,0x106));var _0x8db2=function(_0x43f943,_0x3bf791){_0x43f943=_0x43f943-0x0;var _0x1c7cf9=_0xdb28[_0x43f943];return _0x1c7cf9;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}exports[_0x8db2('0x16')]=function(_0x3fddc2){var _0x2efd06=this;return new Promise(function(_0x46ce14,_0x51d60d){return db['MailQueueReport'][_0x8db2('0x17')](_0x3fddc2[_0x8db2('0x18')],{'raw':_0x3fddc2[_0x8db2('0x19')]?_0x3fddc2[_0x8db2('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x8db2('0xc')](function(_0x36a9ff){logger[_0x8db2('0x14')](_0x8db2('0x16'),_0x3fddc2);logger[_0x8db2('0xf')]('CreateMailQueueReport',_0x3fddc2,JSON[_0x8db2('0x10')](_0x36a9ff));_0x46ce14(_0x36a9ff);})[_0x8db2('0x15')](function(_0x18f69c){logger[_0x8db2('0x11')](_0x8db2('0x16'),_0x18f69c[_0x8db2('0x13')],_0x3fddc2);_0x51d60d(_0x2efd06[_0x8db2('0x11')](0x1f4,_0x18f69c['message']));});});};exports[_0x8db2('0x1a')]=function(_0x4f6516){var _0x5725f0=this;return new Promise(function(_0x52a9ca,_0x4d923c){return db[_0x8db2('0x1b')][_0x8db2('0x1c')](_0x4f6516[_0x8db2('0x18')],{'raw':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4f6516['options']?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1e')]||null:null,'attributes':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')]['attributes']||null:null,'limit':_0x4f6516[_0x8db2('0x19')]?_0x4f6516[_0x8db2('0x19')][_0x8db2('0x1f')]||null:null})[_0x8db2('0xc')](function(_0xbe5ece){logger[_0x8db2('0x14')](_0x8db2('0x1a'),_0x4f6516);logger[_0x8db2('0xf')](_0x8db2('0x1a'),_0x4f6516,JSON['stringify'](_0xbe5ece));_0x52a9ca(_0xbe5ece);})[_0x8db2('0x15')](function(_0x50b28d){logger['error'](_0x8db2('0x1a'),_0x50b28d[_0x8db2('0x13')],_0x4f6516);_0x4d923c(_0x5725f0[_0x8db2('0x11')](0x1f4,_0x50b28d['message']));});});};
\ No newline at end of file
index 2fe241f..ee6cc8d 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(_0x6862f1,_0x4a75f0){var _0x313c6b=function(_0x395872){while(--_0x395872){_0x6862f1['push'](_0x6862f1['shift']());}};_0x313c6b(++_0x4a75f0);}(_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 _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x459a0a,_0x25c46f){var _0x4ab46c=function(_0x451a6a){while(--_0x451a6a){_0x459a0a['push'](_0x459a0a['shift']());}};_0x4ab46c(++_0x25c46f);}(_0x9c44,0x178));var _0x49c4=function(_0x13b02f,_0x462a53){_0x13b02f=_0x13b02f-0x0;var _0x12e9a6=_0x9c44[_0x13b02f];return _0x12e9a6;};'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 7317611..3a76b4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0645=['INBOX','exports','STRING','BOOLEAN','INTEGER'];(function(_0x57ae08,_0x41c0c5){var _0x49479f=function(_0x4e5b85){while(--_0x4e5b85){_0x57ae08['push'](_0x57ae08['shift']());}};_0x49479f(++_0x41c0c5);}(_0x0645,0xa6));var _0x5064=function(_0x52fb9d,_0x845bdd){_0x52fb9d=_0x52fb9d-0x0;var _0x418e8e=_0x0645[_0x52fb9d];return _0x418e8e;};'use strict';var Sequelize=require('sequelize');module[_0x5064('0x0')]={'description':{'type':Sequelize[_0x5064('0x1')]},'host':{'type':Sequelize[_0x5064('0x1')]},'authentication':{'type':Sequelize[_0x5064('0x2')],'defaultValue':!![]},'user':{'type':Sequelize[_0x5064('0x1')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x5064('0x3')]},'tls':{'type':Sequelize[_0x5064('0x2')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x5064('0x1')],'defaultValue':_0x5064('0x4')},'connTimeout':{'type':Sequelize[_0x5064('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0x5064('0x1')]},'modernAuthentication':{'type':Sequelize[_0x5064('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xa87c=['BOOLEAN','INTEGER','sequelize','exports','STRING'];(function(_0x365338,_0x544dd4){var _0x384a3d=function(_0x58c25c){while(--_0x58c25c){_0x365338['push'](_0x365338['shift']());}};_0x384a3d(++_0x544dd4);}(_0xa87c,0x110));var _0xca87=function(_0x4da690,_0x12d136){_0x4da690=_0x4da690-0x0;var _0x263c53=_0xa87c[_0x4da690];return _0x263c53;};'use strict';var Sequelize=require(_0xca87('0x0'));module[_0xca87('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xca87('0x2')]},'authentication':{'type':Sequelize[_0xca87('0x3')],'defaultValue':!![]},'user':{'type':Sequelize[_0xca87('0x2')]},'password':{'type':Sequelize[_0xca87('0x2')]},'port':{'type':Sequelize[_0xca87('0x4')]},'tls':{'type':Sequelize[_0xca87('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0xca87('0x2')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize[_0xca87('0x4')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xca87('0x4')],'defaultValue':0x5},'service':{'type':Sequelize[_0xca87('0x2')]},'modernAuthentication':{'type':Sequelize[_0xca87('0x3')],'defaultValue':![]}};
\ No newline at end of file
index c4a5f3d..8586522 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac17=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn','mail_servers_in','lodash','../../config/logger','api'];(function(_0x216318,_0x13b1e5){var _0x1e9a28=function(_0x594bad){while(--_0x594bad){_0x216318['push'](_0x216318['shift']());}};_0x1e9a28(++_0x13b1e5);}(_0xac17,0x6d));var _0x7ac1=function(_0x3bb63a,_0x15af8f){_0x3bb63a=_0x3bb63a-0x0;var _0x3b822a=_0xac17[_0x3bb63a];return _0x3b822a;};'use strict';var _=require(_0x7ac1('0x0'));var util=require('util');var logger=require(_0x7ac1('0x1'))(_0x7ac1('0x2'));var moment=require(_0x7ac1('0x3'));var BPromise=require(_0x7ac1('0x4'));var rp=require(_0x7ac1('0x5'));var fs=require('fs');var path=require(_0x7ac1('0x6'));var rimraf=require(_0x7ac1('0x7'));var config=require(_0x7ac1('0x8'));var attributes=require(_0x7ac1('0x9'));module[_0x7ac1('0xa')]=function(_0x2490d4,_0x3c7674){return _0x2490d4[_0x7ac1('0xb')](_0x7ac1('0xc'),attributes,{'tableName':_0x7ac1('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x46fb=['bluebird','path','rimraf','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn','mail_servers_in','lodash','api','moment'];(function(_0xdd1f52,_0x227e9e){var _0x368782=function(_0x480309){while(--_0x480309){_0xdd1f52['push'](_0xdd1f52['shift']());}};_0x368782(++_0x227e9e);}(_0x46fb,0x165));var _0xb46f=function(_0x22d0f6,_0x208b3d){_0x22d0f6=_0x22d0f6-0x0;var _0x48781b=_0x46fb[_0x22d0f6];return _0x48781b;};'use strict';var _=require(_0xb46f('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xb46f('0x1'));var moment=require(_0xb46f('0x2'));var BPromise=require(_0xb46f('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb46f('0x4'));var rimraf=require(_0xb46f('0x5'));var config=require(_0xb46f('0x6'));var attributes=require(_0xb46f('0x7'));module[_0xb46f('0x8')]=function(_0x5e516d,_0x2088a0){return _0x5e516d[_0xb46f('0x9')](_0xb46f('0xa'),attributes,{'tableName':_0xb46f('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 435c4ed..1d03717 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacfe=['where','attributes','limit','map','include','model','then','GetMailServerIn','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','findAll','options','raw'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xacfe,0xfd));var _0xeacf=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xacfe[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xeacf('0x0'));var BPromise=require(_0xeacf('0x1'));var rs=require(_0xeacf('0x2'));var fs=require('fs');var Redis=require(_0xeacf('0x3'));var db=require(_0xeacf('0x4'))['db'];var utils=require(_0xeacf('0x5'));var logger=require(_0xeacf('0x6'))(_0xeacf('0x7'));var config=require(_0xeacf('0x8'));var jayson=require(_0xeacf('0x9'));var client=jayson[_0xeacf('0xa')][_0xeacf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x13cba2,_0x5eb516,_0x411634){return new BPromise(function(_0xce0437,_0x17b21c){return client[_0xeacf('0xc')](_0x13cba2,_0x411634)['then'](function(_0xfe344){logger['info'](_0xeacf('0xd'),_0x5eb516,_0xeacf('0xe'));logger[_0xeacf('0xf')](_0xeacf('0x10'),_0x5eb516,_0xeacf('0xe'),JSON[_0xeacf('0x11')](_0xfe344));if(_0xfe344[_0xeacf('0x12')]){if(_0xfe344[_0xeacf('0x12')][_0xeacf('0x13')]===0x1f4){logger[_0xeacf('0x12')]('MailServerIn,\x20%s,\x20%s',_0x5eb516,_0xfe344[_0xeacf('0x12')][_0xeacf('0x14')]);return _0x17b21c(_0xfe344[_0xeacf('0x12')][_0xeacf('0x14')]);}logger['error'](_0xeacf('0xd'),_0x5eb516,_0xfe344[_0xeacf('0x12')][_0xeacf('0x14')]);return _0xce0437(_0xfe344['error']['message']);}else{logger[_0xeacf('0x15')](_0xeacf('0xd'),_0x5eb516,'request\x20sent');_0xce0437(_0xfe344[_0xeacf('0x16')]['message']);}})[_0xeacf('0x17')](function(_0x1df080){logger['error'](_0xeacf('0xd'),_0x5eb516,_0x1df080);_0x17b21c(_0x1df080);});});}exports['GetMailServerIn']=function(_0x650730){var _0xe87314=this;return new Promise(function(_0x18de20,_0x118932){return db['MailServerIn'][_0xeacf('0x18')]({'raw':_0x650730['options']?_0x650730[_0xeacf('0x19')][_0xeacf('0x1a')]===undefined?!![]:![]:!![],'where':_0x650730[_0xeacf('0x19')]?_0x650730['options'][_0xeacf('0x1b')]||null:null,'attributes':_0x650730[_0xeacf('0x19')]?_0x650730[_0xeacf('0x19')][_0xeacf('0x1c')]||null:null,'limit':_0x650730[_0xeacf('0x19')]?_0x650730[_0xeacf('0x19')][_0xeacf('0x1d')]||null:null,'include':_0x650730[_0xeacf('0x19')]?_0x650730[_0xeacf('0x19')]['include']?_[_0xeacf('0x1e')](_0x650730[_0xeacf('0x19')][_0xeacf('0x1f')],function(_0x35338b){return{'model':db[_0x35338b[_0xeacf('0x20')]],'as':_0x35338b['as'],'attributes':_0x35338b[_0xeacf('0x1c')],'include':_0x35338b[_0xeacf('0x1f')]?_['map'](_0x35338b['include'],function(_0x4332b7){return{'model':db[_0x4332b7[_0xeacf('0x20')]],'as':_0x4332b7['as'],'attributes':_0x4332b7['attributes'],'include':_0x4332b7[_0xeacf('0x1f')]?_[_0xeacf('0x1e')](_0x4332b7[_0xeacf('0x1f')],function(_0x1e368a){return{'model':db[_0x1e368a['model']],'as':_0x1e368a['as'],'attributes':_0x1e368a[_0xeacf('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xeacf('0x21')](function(_0x4c161e){logger[_0xeacf('0x15')](_0xeacf('0x22'),_0x650730);logger[_0xeacf('0xf')](_0xeacf('0x22'),_0x650730,JSON['stringify'](_0x4c161e));_0x18de20(_0x4c161e);})[_0xeacf('0x17')](function(_0x1d375a){logger['error']('GetMailServerIn',_0x1d375a['message'],_0x650730);_0x118932(_0xe87314['error'](0x1f4,_0x1d375a[_0xeacf('0x14')]));});});};
\ No newline at end of file
+var _0x272e=['http','then','info','MailServerIn,\x20%s,\x20%s','request\x20sent','debug','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetMailServerIn','MailServerIn','options','raw','where','attributes','map','model','include','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x4119f3,_0x5be15f){var _0x12b589=function(_0x51cbbc){while(--_0x51cbbc){_0x4119f3['push'](_0x4119f3['shift']());}};_0x12b589(++_0x5be15f);}(_0x272e,0xb5));var _0xe272=function(_0x4933d0,_0x3987c9){_0x4933d0=_0x4933d0-0x0;var _0x210e56=_0x272e[_0x4933d0];return _0x210e56;};'use strict';var _=require(_0xe272('0x0'));var util=require(_0xe272('0x1'));var moment=require('moment');var BPromise=require(_0xe272('0x2'));var rs=require(_0xe272('0x3'));var fs=require('fs');var Redis=require(_0xe272('0x4'));var db=require(_0xe272('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe272('0x6'))(_0xe272('0x7'));var config=require(_0xe272('0x8'));var jayson=require(_0xe272('0x9'));var client=jayson[_0xe272('0xa')][_0xe272('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1f8eb8,_0x304f0b,_0x1523bd){return new BPromise(function(_0x50eea1,_0x384b95){return client['request'](_0x1f8eb8,_0x1523bd)[_0xe272('0xc')](function(_0x7314ee){logger[_0xe272('0xd')](_0xe272('0xe'),_0x304f0b,_0xe272('0xf'));logger[_0xe272('0x10')](_0xe272('0x11'),_0x304f0b,_0xe272('0xf'),JSON[_0xe272('0x12')](_0x7314ee));if(_0x7314ee[_0xe272('0x13')]){if(_0x7314ee[_0xe272('0x13')]['code']===0x1f4){logger['error'](_0xe272('0xe'),_0x304f0b,_0x7314ee[_0xe272('0x13')][_0xe272('0x14')]);return _0x384b95(_0x7314ee[_0xe272('0x13')][_0xe272('0x14')]);}logger[_0xe272('0x13')](_0xe272('0xe'),_0x304f0b,_0x7314ee['error']['message']);return _0x50eea1(_0x7314ee[_0xe272('0x13')][_0xe272('0x14')]);}else{logger[_0xe272('0xd')](_0xe272('0xe'),_0x304f0b,_0xe272('0xf'));_0x50eea1(_0x7314ee[_0xe272('0x15')][_0xe272('0x14')]);}})[_0xe272('0x16')](function(_0x5e89f5){logger[_0xe272('0x13')](_0xe272('0xe'),_0x304f0b,_0x5e89f5);_0x384b95(_0x5e89f5);});});}exports[_0xe272('0x17')]=function(_0x44cdcf){var _0xd66b40=this;return new Promise(function(_0x4480cc,_0x5eb43e){return db[_0xe272('0x18')]['findAll']({'raw':_0x44cdcf[_0xe272('0x19')]?_0x44cdcf['options'][_0xe272('0x1a')]===undefined?!![]:![]:!![],'where':_0x44cdcf['options']?_0x44cdcf[_0xe272('0x19')][_0xe272('0x1b')]||null:null,'attributes':_0x44cdcf[_0xe272('0x19')]?_0x44cdcf[_0xe272('0x19')][_0xe272('0x1c')]||null:null,'limit':_0x44cdcf[_0xe272('0x19')]?_0x44cdcf[_0xe272('0x19')]['limit']||null:null,'include':_0x44cdcf[_0xe272('0x19')]?_0x44cdcf[_0xe272('0x19')]['include']?_[_0xe272('0x1d')](_0x44cdcf['options']['include'],function(_0x133b64){return{'model':db[_0x133b64[_0xe272('0x1e')]],'as':_0x133b64['as'],'attributes':_0x133b64['attributes'],'include':_0x133b64[_0xe272('0x1f')]?_[_0xe272('0x1d')](_0x133b64[_0xe272('0x1f')],function(_0x4edf2e){return{'model':db[_0x4edf2e[_0xe272('0x1e')]],'as':_0x4edf2e['as'],'attributes':_0x4edf2e['attributes'],'include':_0x4edf2e['include']?_[_0xe272('0x1d')](_0x4edf2e['include'],function(_0x4a0e87){return{'model':db[_0x4a0e87[_0xe272('0x1e')]],'as':_0x4a0e87['as'],'attributes':_0x4a0e87[_0xe272('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x105cd4){logger['info'](_0xe272('0x17'),_0x44cdcf);logger[_0xe272('0x10')](_0xe272('0x17'),_0x44cdcf,JSON[_0xe272('0x12')](_0x105cd4));_0x4480cc(_0x105cd4);})[_0xe272('0x16')](function(_0x3b12df){logger[_0xe272('0x13')](_0xe272('0x17'),_0x3b12df['message'],_0x44cdcf);_0x5eb43e(_0xd66b40['error'](0x1f4,_0x3b12df[_0xe272('0x14')]));});});};
\ No newline at end of file
index cf11555..b2e26ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailServerOut.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x134c2e,_0x3573c4){var _0x2825db=function(_0x2a574d){while(--_0x2a574d){_0x134c2e['push'](_0x134c2e['shift']());}};_0x2825db(++_0x3573c4);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
+var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailServerOut.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0xae7c2f,_0xf31e04){var _0x5d7001=function(_0x4eeadb){while(--_0x4eeadb){_0xae7c2f['push'](_0xae7c2f['shift']());}};_0x5d7001(++_0xf31e04);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
index 5d22d24..f136e8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x282b=['sequelize','exports','STRING','BOOLEAN'];(function(_0x2d5497,_0x4deab3){var _0x34d69e=function(_0x91e4){while(--_0x91e4){_0x2d5497['push'](_0x2d5497['shift']());}};_0x34d69e(++_0x4deab3);}(_0x282b,0xec));var _0xb282=function(_0x4de05a,_0xd561db){_0x4de05a=_0x4de05a-0x0;var _0x5264d8=_0x282b[_0x4de05a];return _0x5264d8;};'use strict';var Sequelize=require(_0xb282('0x0'));module[_0xb282('0x1')]={'description':{'type':Sequelize[_0xb282('0x2')]},'host':{'type':Sequelize[_0xb282('0x2')]},'user':{'type':Sequelize[_0xb282('0x2')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize[_0xb282('0x3')],'defaultValue':![]},'service':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0xb282('0x3')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0xb282('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xbc9d=['sequelize','exports','STRING','BOOLEAN'];(function(_0x423122,_0xda3017){var _0x29c24e=function(_0x368b8b){while(--_0x368b8b){_0x423122['push'](_0x423122['shift']());}};_0x29c24e(++_0xda3017);}(_0xbc9d,0xb4));var _0xdbc9=function(_0x196d0a,_0x14eba8){_0x196d0a=_0x196d0a-0x0;var _0x1b63d8=_0xbc9d[_0x196d0a];return _0x1b63d8;};'use strict';var Sequelize=require(_0xdbc9('0x0'));module[_0xdbc9('0x1')]={'description':{'type':Sequelize[_0xdbc9('0x2')]},'host':{'type':Sequelize[_0xdbc9('0x2')]},'user':{'type':Sequelize[_0xdbc9('0x2')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize[_0xdbc9('0x2')]},'authentication':{'type':Sequelize[_0xdbc9('0x3')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0xdbc9('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 6375231..4646d7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf52b=['rawAttributes','fieldName','type','key','keys','query','filters','intersection','model','attributes','fields','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','findAll','show','params','length','include','catch','create','body','find','destroy','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','count','Content-Range','apply','reject','save','update','then','error','name','send','index','map','MailServerOut'];(function(_0x557fd2,_0x2c0a7a){var _0x1b54a2=function(_0x2e439b){while(--_0x2e439b){_0x557fd2['push'](_0x557fd2['shift']());}};_0x1b54a2(++_0x2c0a7a);}(_0xf52b,0x195));var _0xbf52=function(_0x3b90ab,_0x174a22){_0x3b90ab=_0x3b90ab-0x0;var _0x206e92=_0xf52b[_0x3b90ab];return _0x206e92;};'use strict';var emlformat=require(_0xbf52('0x0'));var rimraf=require(_0xbf52('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbf52('0x2'));var rp=require(_0xbf52('0x3'));var moment=require(_0xbf52('0x4'));var BPromise=require(_0xbf52('0x5'));var Mustache=require(_0xbf52('0x6'));var util=require(_0xbf52('0x7'));var path=require(_0xbf52('0x8'));var sox=require('sox');var csv=require(_0xbf52('0x9'));var ejs=require(_0xbf52('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbf52('0xb'));var squel=require(_0xbf52('0xc'));var crypto=require(_0xbf52('0xd'));var jsforce=require(_0xbf52('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xbf52('0x9'));var querystring=require(_0xbf52('0xf'));var Papa=require('papaparse');var Redis=require(_0xbf52('0x10'));var authService=require(_0xbf52('0x11'));var qs=require(_0xbf52('0x12'));var as=require(_0xbf52('0x13'));var hardwareService=require(_0xbf52('0x14'));var logger=require(_0xbf52('0x15'))('api');var utils=require(_0xbf52('0x16'));var config=require(_0xbf52('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xbf52('0x18'))['db'];function respondWithStatusCode(_0x50b759,_0x1eccbc){_0x1eccbc=_0x1eccbc||0xcc;return function(_0x4fc45a){if(_0x4fc45a){return _0x50b759[_0xbf52('0x19')](_0x1eccbc);}return _0x50b759[_0xbf52('0x1a')](_0x1eccbc)[_0xbf52('0x1b')]();};}function respondWithResult(_0x3c122e,_0x42875c){_0x42875c=_0x42875c||0xc8;return function(_0x24cbd7){if(_0x24cbd7){return _0x3c122e['status'](_0x42875c)[_0xbf52('0x1c')](_0x24cbd7);}};}function respondWithFilteredResult(_0x114a5d,_0x59977e){return function(_0x239c10){if(_0x239c10){var _0x254aa3=typeof _0x59977e['offset']===_0xbf52('0x1d')&&typeof _0x59977e[_0xbf52('0x1e')]===_0xbf52('0x1d');var _0x1a0b06=_0x239c10['count'];var _0x1f8177=_0x254aa3?0x0:_0x59977e[_0xbf52('0x1f')];var _0x11e9e4=_0x254aa3?_0x239c10[_0xbf52('0x20')]:_0x59977e[_0xbf52('0x1f')]+_0x59977e[_0xbf52('0x1e')];var _0x4f13ed;if(_0x11e9e4>=_0x1a0b06){_0x11e9e4=_0x1a0b06;_0x4f13ed=0xc8;}else{_0x4f13ed=0xce;}_0x114a5d['status'](_0x4f13ed);return _0x114a5d['set'](_0xbf52('0x21'),_0x1f8177+'-'+_0x11e9e4+'/'+_0x1a0b06)[_0xbf52('0x1c')](_0x239c10);}return null;};}function patchUpdates(_0x5eddf4){return function(_0x2dfe09){try{jsonpatch[_0xbf52('0x22')](_0x2dfe09,_0x5eddf4,!![]);}catch(_0x1bd1a4){return BPromise[_0xbf52('0x23')](_0x1bd1a4);}return _0x2dfe09[_0xbf52('0x24')]();};}function saveUpdates(_0x263de7,_0x299a7b){return function(_0x2d4ce1){if(_0x2d4ce1){return _0x2d4ce1[_0xbf52('0x25')](_0x263de7)['then'](function(_0x35271a){return _0x35271a;});}return null;};}function removeEntity(_0x51a08c,_0x476ea0){return function(_0x3011d8){if(_0x3011d8){return _0x3011d8['destroy']()[_0xbf52('0x26')](function(){_0x51a08c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1a8cff,_0xd62cef){return function(_0xbaf3c8){if(!_0xbaf3c8){_0x1a8cff[_0xbf52('0x19')](0x194);}return _0xbaf3c8;};}function handleError(_0x11ff0c,_0x592b9f){_0x592b9f=_0x592b9f||0x1f4;return function(_0x16996d){logger[_0xbf52('0x27')](_0x16996d['stack']);if(_0x16996d['name']){delete _0x16996d[_0xbf52('0x28')];}_0x11ff0c['status'](_0x592b9f)[_0xbf52('0x29')](_0x16996d);};}exports[_0xbf52('0x2a')]=function(_0x3d3ff5,_0x3dabf6){var _0x489977={},_0x2d1e8d={},_0x478d26={'count':0x0,'rows':[]};var _0x461de0=_[_0xbf52('0x2b')](db[_0xbf52('0x2c')][_0xbf52('0x2d')],function(_0xab543d){return{'name':_0xab543d[_0xbf52('0x2e')],'type':_0xab543d[_0xbf52('0x2f')][_0xbf52('0x30')]};});_0x2d1e8d['model']=_[_0xbf52('0x2b')](_0x461de0,'name');_0x2d1e8d['query']=_[_0xbf52('0x31')](_0x3d3ff5[_0xbf52('0x32')]);_0x2d1e8d[_0xbf52('0x33')]=_[_0xbf52('0x34')](_0x2d1e8d[_0xbf52('0x35')],_0x2d1e8d[_0xbf52('0x32')]);_0x489977[_0xbf52('0x36')]=_['intersection'](_0x2d1e8d[_0xbf52('0x35')],qs['fields'](_0x3d3ff5[_0xbf52('0x32')][_0xbf52('0x37')]));_0x489977[_0xbf52('0x36')]=_0x489977[_0xbf52('0x36')]['length']?_0x489977[_0xbf52('0x36')]:_0x2d1e8d[_0xbf52('0x35')];if(!_0x3d3ff5[_0xbf52('0x32')]['hasOwnProperty'](_0xbf52('0x38'))){_0x489977[_0xbf52('0x1e')]=qs[_0xbf52('0x1e')](_0x3d3ff5['query']['limit']);_0x489977['offset']=qs[_0xbf52('0x1f')](_0x3d3ff5[_0xbf52('0x32')][_0xbf52('0x1f')]);}_0x489977[_0xbf52('0x39')]=qs[_0xbf52('0x3a')](_0x3d3ff5[_0xbf52('0x32')][_0xbf52('0x3a')]);_0x489977[_0xbf52('0x3b')]=qs[_0xbf52('0x33')](_['pick'](_0x3d3ff5[_0xbf52('0x32')],_0x2d1e8d[_0xbf52('0x33')]),_0x461de0);if(_0x3d3ff5[_0xbf52('0x32')][_0xbf52('0x3c')]){_0x489977[_0xbf52('0x3b')]=_['merge'](_0x489977[_0xbf52('0x3b')],{'$or':_[_0xbf52('0x2b')](_0x461de0,function(_0x31fb26){if(_0x31fb26[_0xbf52('0x2f')]!==_0xbf52('0x3d')){var _0x15fc98={};_0x15fc98[_0x31fb26[_0xbf52('0x28')]]={'$like':'%'+_0x3d3ff5[_0xbf52('0x32')][_0xbf52('0x3c')]+'%'};return _0x15fc98;}})});}_0x489977=_[_0xbf52('0x3e')]({},_0x489977,_0x3d3ff5[_0xbf52('0x3f')]);var _0x2bfef8={'where':_0x489977[_0xbf52('0x3b')]};return db[_0xbf52('0x2c')][_0xbf52('0x20')](_0x2bfef8)[_0xbf52('0x26')](function(_0xa87e25){_0x478d26[_0xbf52('0x20')]=_0xa87e25;if(_0x3d3ff5[_0xbf52('0x32')][_0xbf52('0x40')]){_0x489977['include']=[{'all':!![]}];}return db[_0xbf52('0x2c')][_0xbf52('0x41')](_0x489977);})['then'](function(_0xbef0c6){_0x478d26['rows']=_0xbef0c6;return _0x478d26;})[_0xbf52('0x26')](respondWithFilteredResult(_0x3dabf6,_0x489977))['catch'](handleError(_0x3dabf6,null));};exports[_0xbf52('0x42')]=function(_0x104741,_0x27229d){var _0x21d455={'raw':!![],'where':{'id':_0x104741[_0xbf52('0x43')]['id']}},_0x2b6fdc={};_0x2b6fdc['model']=_[_0xbf52('0x31')](db['MailServerOut'][_0xbf52('0x2d')]);_0x2b6fdc[_0xbf52('0x32')]=_[_0xbf52('0x31')](_0x104741[_0xbf52('0x32')]);_0x2b6fdc[_0xbf52('0x33')]=_['intersection'](_0x2b6fdc['model'],_0x2b6fdc[_0xbf52('0x32')]);_0x21d455['attributes']=_[_0xbf52('0x34')](_0x2b6fdc[_0xbf52('0x35')],qs[_0xbf52('0x37')](_0x104741[_0xbf52('0x32')][_0xbf52('0x37')]));_0x21d455[_0xbf52('0x36')]=_0x21d455[_0xbf52('0x36')][_0xbf52('0x44')]?_0x21d455[_0xbf52('0x36')]:_0x2b6fdc[_0xbf52('0x35')];if(_0x104741[_0xbf52('0x32')][_0xbf52('0x40')]){_0x21d455[_0xbf52('0x45')]=[{'all':!![]}];}_0x21d455=_[_0xbf52('0x3e')]({},_0x21d455,_0x104741[_0xbf52('0x3f')]);return db[_0xbf52('0x2c')]['find'](_0x21d455)[_0xbf52('0x26')](handleEntityNotFound(_0x27229d,null))[_0xbf52('0x26')](respondWithResult(_0x27229d,null))[_0xbf52('0x46')](handleError(_0x27229d,null));};exports[_0xbf52('0x47')]=function(_0x4d1cdf,_0x414528){return db['MailServerOut'][_0xbf52('0x47')](_0x4d1cdf[_0xbf52('0x48')],{})[_0xbf52('0x26')](respondWithResult(_0x414528,0xc9))[_0xbf52('0x46')](handleError(_0x414528,null));};exports[_0xbf52('0x25')]=function(_0x1d4a12,_0x264864){if(_0x1d4a12[_0xbf52('0x48')]['id']){delete _0x1d4a12['body']['id'];}return db[_0xbf52('0x2c')][_0xbf52('0x49')]({'where':{'id':_0x1d4a12['params']['id']}})[_0xbf52('0x26')](handleEntityNotFound(_0x264864,null))[_0xbf52('0x26')](saveUpdates(_0x1d4a12[_0xbf52('0x48')],null))['then'](respondWithResult(_0x264864,null))[_0xbf52('0x46')](handleError(_0x264864,null));};exports[_0xbf52('0x4a')]=function(_0x592d19,_0x59918d){return db[_0xbf52('0x2c')][_0xbf52('0x49')]({'where':{'id':_0x592d19['params']['id']}})[_0xbf52('0x26')](handleEntityNotFound(_0x59918d,null))['then'](removeEntity(_0x59918d,null))['catch'](handleError(_0x59918d,null));};
\ No newline at end of file
+var _0x75f0=['includeAll','catch','show','params','include','options','MailServerOut','create','body','update','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','then','destroy','sendStatus','error','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x576ca4,_0x1e1550){var _0x3a4556=function(_0x407eea){while(--_0x407eea){_0x576ca4['push'](_0x576ca4['shift']());}};_0x3a4556(++_0x1e1550);}(_0x75f0,0xa3));var _0x075f=function(_0x1ba8c9,_0x785346){_0x1ba8c9=_0x1ba8c9-0x0;var _0x1de025=_0x75f0[_0x1ba8c9];return _0x1de025;};'use strict';var emlformat=require(_0x075f('0x0'));var rimraf=require(_0x075f('0x1'));var zipdir=require(_0x075f('0x2'));var jsonpatch=require(_0x075f('0x3'));var rp=require(_0x075f('0x4'));var moment=require(_0x075f('0x5'));var BPromise=require(_0x075f('0x6'));var Mustache=require(_0x075f('0x7'));var util=require(_0x075f('0x8'));var path=require(_0x075f('0x9'));var sox=require(_0x075f('0xa'));var csv=require(_0x075f('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x075f('0xc'));var _=require(_0x075f('0xd'));var squel=require(_0x075f('0xe'));var crypto=require(_0x075f('0xf'));var jsforce=require(_0x075f('0x10'));var deskjs=require(_0x075f('0x11'));var toCsv=require(_0x075f('0xb'));var querystring=require(_0x075f('0x12'));var Papa=require(_0x075f('0x13'));var Redis=require(_0x075f('0x14'));var authService=require(_0x075f('0x15'));var qs=require(_0x075f('0x16'));var as=require(_0x075f('0x17'));var hardwareService=require(_0x075f('0x18'));var logger=require('../../config/logger')('api');var utils=require(_0x075f('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x075f('0x1a'));var db=require(_0x075f('0x1b'))['db'];function respondWithStatusCode(_0x40987e,_0x183a24){_0x183a24=_0x183a24||0xcc;return function(_0x40f2b2){if(_0x40f2b2){return _0x40987e['sendStatus'](_0x183a24);}return _0x40987e[_0x075f('0x1c')](_0x183a24)[_0x075f('0x1d')]();};}function respondWithResult(_0x5f63e4,_0x5ce911){_0x5ce911=_0x5ce911||0xc8;return function(_0x2fbb7e){if(_0x2fbb7e){return _0x5f63e4[_0x075f('0x1c')](_0x5ce911)['json'](_0x2fbb7e);}};}function respondWithFilteredResult(_0x2576e6,_0x3d5aaa){return function(_0x1db2bd){if(_0x1db2bd){var _0x5d36b3=typeof _0x3d5aaa['offset']===_0x075f('0x1e')&&typeof _0x3d5aaa[_0x075f('0x1f')]==='undefined';var _0x316440=_0x1db2bd[_0x075f('0x20')];var _0x5810f0=_0x5d36b3?0x0:_0x3d5aaa['offset'];var _0x2597d4=_0x5d36b3?_0x1db2bd[_0x075f('0x20')]:_0x3d5aaa[_0x075f('0x21')]+_0x3d5aaa['limit'];var _0x58aeb2;if(_0x2597d4>=_0x316440){_0x2597d4=_0x316440;_0x58aeb2=0xc8;}else{_0x58aeb2=0xce;}_0x2576e6[_0x075f('0x1c')](_0x58aeb2);return _0x2576e6[_0x075f('0x22')](_0x075f('0x23'),_0x5810f0+'-'+_0x2597d4+'/'+_0x316440)[_0x075f('0x24')](_0x1db2bd);}return null;};}function patchUpdates(_0xd12877){return function(_0x103b9b){try{jsonpatch[_0x075f('0x25')](_0x103b9b,_0xd12877,!![]);}catch(_0x1150f8){return BPromise[_0x075f('0x26')](_0x1150f8);}return _0x103b9b['save']();};}function saveUpdates(_0x54f3b4,_0x1d274f){return function(_0x1a17c7){if(_0x1a17c7){return _0x1a17c7['update'](_0x54f3b4)[_0x075f('0x27')](function(_0x32fc08){return _0x32fc08;});}return null;};}function removeEntity(_0x150db9,_0x20c645){return function(_0x57fc24){if(_0x57fc24){return _0x57fc24[_0x075f('0x28')]()[_0x075f('0x27')](function(){_0x150db9[_0x075f('0x1c')](0xcc)[_0x075f('0x1d')]();});}};}function handleEntityNotFound(_0x21af96,_0x1aa605){return function(_0x1bab9e){if(!_0x1bab9e){_0x21af96[_0x075f('0x29')](0x194);}return _0x1bab9e;};}function handleError(_0x3ca105,_0x38e7a7){_0x38e7a7=_0x38e7a7||0x1f4;return function(_0x4dfa18){logger[_0x075f('0x2a')](_0x4dfa18['stack']);if(_0x4dfa18[_0x075f('0x2b')]){delete _0x4dfa18[_0x075f('0x2b')];}_0x3ca105['status'](_0x38e7a7)[_0x075f('0x2c')](_0x4dfa18);};}exports[_0x075f('0x2d')]=function(_0x5975f5,_0x3bda48){var _0x118b78={},_0x132452={},_0x5b14c7={'count':0x0,'rows':[]};var _0x42ea16=_[_0x075f('0x2e')](db['MailServerOut'][_0x075f('0x2f')],function(_0x2b1eea){return{'name':_0x2b1eea[_0x075f('0x30')],'type':_0x2b1eea[_0x075f('0x31')]['key']};});_0x132452[_0x075f('0x32')]=_[_0x075f('0x2e')](_0x42ea16,_0x075f('0x2b'));_0x132452[_0x075f('0x33')]=_[_0x075f('0x34')](_0x5975f5[_0x075f('0x33')]);_0x132452[_0x075f('0x35')]=_['intersection'](_0x132452[_0x075f('0x32')],_0x132452['query']);_0x118b78['attributes']=_[_0x075f('0x36')](_0x132452[_0x075f('0x32')],qs[_0x075f('0x37')](_0x5975f5['query']['fields']));_0x118b78[_0x075f('0x38')]=_0x118b78[_0x075f('0x38')]['length']?_0x118b78[_0x075f('0x38')]:_0x132452[_0x075f('0x32')];if(!_0x5975f5[_0x075f('0x33')][_0x075f('0x39')](_0x075f('0x3a'))){_0x118b78[_0x075f('0x1f')]=qs['limit'](_0x5975f5[_0x075f('0x33')][_0x075f('0x1f')]);_0x118b78[_0x075f('0x21')]=qs[_0x075f('0x21')](_0x5975f5[_0x075f('0x33')][_0x075f('0x21')]);}_0x118b78[_0x075f('0x3b')]=qs[_0x075f('0x3c')](_0x5975f5['query'][_0x075f('0x3c')]);_0x118b78[_0x075f('0x3d')]=qs['filters'](_[_0x075f('0x3e')](_0x5975f5[_0x075f('0x33')],_0x132452['filters']),_0x42ea16);if(_0x5975f5[_0x075f('0x33')][_0x075f('0x3f')]){_0x118b78[_0x075f('0x3d')]=_['merge'](_0x118b78[_0x075f('0x3d')],{'$or':_[_0x075f('0x2e')](_0x42ea16,function(_0x4c75a1){if(_0x4c75a1[_0x075f('0x31')]!=='VIRTUAL'){var _0x3d69a5={};_0x3d69a5[_0x4c75a1[_0x075f('0x2b')]]={'$like':'%'+_0x5975f5[_0x075f('0x33')]['filter']+'%'};return _0x3d69a5;}})});}_0x118b78=_[_0x075f('0x40')]({},_0x118b78,_0x5975f5['options']);var _0x5585c2={'where':_0x118b78[_0x075f('0x3d')]};return db['MailServerOut']['count'](_0x5585c2)[_0x075f('0x27')](function(_0x4c4b90){_0x5b14c7[_0x075f('0x20')]=_0x4c4b90;if(_0x5975f5[_0x075f('0x33')][_0x075f('0x41')]){_0x118b78['include']=[{'all':!![]}];}return db['MailServerOut']['findAll'](_0x118b78);})['then'](function(_0x245217){_0x5b14c7['rows']=_0x245217;return _0x5b14c7;})[_0x075f('0x27')](respondWithFilteredResult(_0x3bda48,_0x118b78))[_0x075f('0x42')](handleError(_0x3bda48,null));};exports[_0x075f('0x43')]=function(_0x4d5f19,_0x31edba){var _0x2f162c={'raw':!![],'where':{'id':_0x4d5f19[_0x075f('0x44')]['id']}},_0x39cda3={};_0x39cda3[_0x075f('0x32')]=_[_0x075f('0x34')](db['MailServerOut'][_0x075f('0x2f')]);_0x39cda3['query']=_['keys'](_0x4d5f19[_0x075f('0x33')]);_0x39cda3[_0x075f('0x35')]=_[_0x075f('0x36')](_0x39cda3['model'],_0x39cda3[_0x075f('0x33')]);_0x2f162c['attributes']=_['intersection'](_0x39cda3[_0x075f('0x32')],qs[_0x075f('0x37')](_0x4d5f19[_0x075f('0x33')][_0x075f('0x37')]));_0x2f162c['attributes']=_0x2f162c['attributes']['length']?_0x2f162c[_0x075f('0x38')]:_0x39cda3['model'];if(_0x4d5f19[_0x075f('0x33')]['includeAll']){_0x2f162c[_0x075f('0x45')]=[{'all':!![]}];}_0x2f162c=_['merge']({},_0x2f162c,_0x4d5f19[_0x075f('0x46')]);return db[_0x075f('0x47')]['find'](_0x2f162c)[_0x075f('0x27')](handleEntityNotFound(_0x31edba,null))[_0x075f('0x27')](respondWithResult(_0x31edba,null))[_0x075f('0x42')](handleError(_0x31edba,null));};exports[_0x075f('0x48')]=function(_0x513a05,_0x28132c){return db[_0x075f('0x47')]['create'](_0x513a05[_0x075f('0x49')],{})[_0x075f('0x27')](respondWithResult(_0x28132c,0xc9))[_0x075f('0x42')](handleError(_0x28132c,null));};exports[_0x075f('0x4a')]=function(_0x319f51,_0x32ec9c){if(_0x319f51['body']['id']){delete _0x319f51['body']['id'];}return db['MailServerOut'][_0x075f('0x4b')]({'where':{'id':_0x319f51[_0x075f('0x44')]['id']}})[_0x075f('0x27')](handleEntityNotFound(_0x32ec9c,null))[_0x075f('0x27')](saveUpdates(_0x319f51[_0x075f('0x49')],null))['then'](respondWithResult(_0x32ec9c,null))[_0x075f('0x42')](handleError(_0x32ec9c,null));};exports[_0x075f('0x28')]=function(_0x5eda40,_0x908394){return db[_0x075f('0x47')]['find']({'where':{'id':_0x5eda40[_0x075f('0x44')]['id']}})[_0x075f('0x27')](handleEntityNotFound(_0x908394,null))[_0x075f('0x27')](removeEntity(_0x908394,null))[_0x075f('0x42')](handleError(_0x908394,null));};
\ No newline at end of file
index 0ad0a2d..6f91f20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa37c=['exports','mail_servers_out','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x55ffee,_0x1862c1){var _0x27992d=function(_0x3cd3d9){while(--_0x3cd3d9){_0x55ffee['push'](_0x55ffee['shift']());}};_0x27992d(++_0x1862c1);}(_0xa37c,0x10a));var _0xca37=function(_0x187279,_0x26d152){_0x187279=_0x187279-0x0;var _0x3da59d=_0xa37c[_0x187279];return _0x3da59d;};'use strict';var _=require(_0xca37('0x0'));var util=require(_0xca37('0x1'));var logger=require(_0xca37('0x2'))(_0xca37('0x3'));var moment=require(_0xca37('0x4'));var BPromise=require(_0xca37('0x5'));var rp=require(_0xca37('0x6'));var fs=require('fs');var path=require(_0xca37('0x7'));var rimraf=require(_0xca37('0x8'));var config=require('../../config/environment');var attributes=require('./mailServerOut.attributes');module[_0xca37('0x9')]=function(_0x4ecaaf,_0x4a403b){return _0x4ecaaf['define']('MailServerOut',attributes,{'tableName':_0xca37('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x55a5=['../../config/logger','api','moment','bluebird','../../config/environment','./mailServerOut.attributes','lodash','util'];(function(_0x5e3b04,_0xbb6795){var _0x1fc44d=function(_0x3472a1){while(--_0x3472a1){_0x5e3b04['push'](_0x5e3b04['shift']());}};_0x1fc44d(++_0xbb6795);}(_0x55a5,0xb6));var _0x555a=function(_0x1d8119,_0xc98f17){_0x1d8119=_0x1d8119-0x0;var _0x3e30f6=_0x55a5[_0x1d8119];return _0x3e30f6;};'use strict';var _=require(_0x555a('0x0'));var util=require(_0x555a('0x1'));var logger=require(_0x555a('0x2'))(_0x555a('0x3'));var moment=require(_0x555a('0x4'));var BPromise=require(_0x555a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x555a('0x6'));var attributes=require(_0x555a('0x7'));module['exports']=function(_0x58e386,_0x2e6503){return _0x58e386['define']('MailServerOut',attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f081249..151fc48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','catch','lodash','util'];(function(_0x341219,_0x5d8330){var _0x203b5f=function(_0x47ef78){while(--_0x47ef78){_0x341219['push'](_0x341219['shift']());}};_0x203b5f(++_0x5d8330);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0xc4aa[_0x68c979];return _0x4f0001;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var moment=require(_0xac4a('0x2'));var BPromise=require(_0xac4a('0x3'));var rs=require(_0xac4a('0x4'));var fs=require('fs');var Redis=require(_0xac4a('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xac4a('0x6'));var config=require(_0xac4a('0x7'));var jayson=require(_0xac4a('0x8'));var client=jayson[_0xac4a('0x9')][_0xac4a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x15cd34,_0x3ef77c,_0x10525b){return new BPromise(function(_0x5c6179,_0x5b8339){return client[_0xac4a('0xb')](_0x15cd34,_0x10525b)[_0xac4a('0xc')](function(_0x26ec84){logger['info'](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));logger[_0xac4a('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x3ef77c,_0xac4a('0xe'),JSON['stringify'](_0x26ec84));if(_0x26ec84[_0xac4a('0x10')]){if(_0x26ec84['error'][_0xac4a('0x11')]===0x1f4){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84['error'][_0xac4a('0x12')]);return _0x5b8339(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);return _0x5c6179(_0x26ec84[_0xac4a('0x10')][_0xac4a('0x12')]);}else{logger[_0xac4a('0x13')](_0xac4a('0xd'),_0x3ef77c,_0xac4a('0xe'));_0x5c6179(_0x26ec84['result'][_0xac4a('0x12')]);}})[_0xac4a('0x14')](function(_0x23eb66){logger[_0xac4a('0x10')](_0xac4a('0xd'),_0x3ef77c,_0x23eb66);_0x5b8339(_0x23eb66);});});}
\ No newline at end of file
+var _0xdb28=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','MailServerOut,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','lodash','util'];(function(_0x1b14fa,_0x100b8b){var _0x52dff0=function(_0x169844){while(--_0x169844){_0x1b14fa['push'](_0x1b14fa['shift']());}};_0x52dff0(++_0x100b8b);}(_0xdb28,0x106));var _0x8db2=function(_0x2528c2,_0x2538d3){_0x2528c2=_0x2528c2-0x0;var _0xe2236b=_0xdb28[_0x2528c2];return _0xe2236b;};'use strict';var _=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var moment=require(_0x8db2('0x2'));var BPromise=require(_0x8db2('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8db2('0x4'));var db=require(_0x8db2('0x5'))['db'];var utils=require(_0x8db2('0x6'));var logger=require(_0x8db2('0x7'))(_0x8db2('0x8'));var config=require('../../config/environment');var jayson=require(_0x8db2('0x9'));var client=jayson[_0x8db2('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x494b40,_0x477f50,_0x46932f){return new BPromise(function(_0x131537,_0x29f698){return client[_0x8db2('0xb')](_0x494b40,_0x46932f)[_0x8db2('0xc')](function(_0x126c78){logger['info'](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));logger[_0x8db2('0xf')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x477f50,_0x8db2('0xe'),JSON[_0x8db2('0x10')](_0x126c78));if(_0x126c78['error']){if(_0x126c78[_0x8db2('0x11')][_0x8db2('0x12')]===0x1f4){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')]['message']);return _0x29f698(_0x126c78['error'][_0x8db2('0x13')]);}logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);return _0x131537(_0x126c78[_0x8db2('0x11')][_0x8db2('0x13')]);}else{logger[_0x8db2('0x14')](_0x8db2('0xd'),_0x477f50,_0x8db2('0xe'));_0x131537(_0x126c78['result'][_0x8db2('0x13')]);}})[_0x8db2('0x15')](function(_0x48101e){logger[_0x8db2('0x11')](_0x8db2('0xd'),_0x477f50,_0x48101e);_0x29f698(_0x48101e);});});}
\ No newline at end of file
index 7479217..ab0b0b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09a5=['destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','describe','/:id','show','update'];(function(_0x549629,_0x20da71){var _0x138ae9=function(_0x16c5fe){while(--_0x16c5fe){_0x549629['push'](_0x549629['shift']());}};_0x138ae9(++_0x20da71);}(_0x09a5,0xc2));var _0x509a=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0x09a5[_0x2bf141];return _0x48277b;};'use strict';var multer=require(_0x509a('0x0'));var util=require(_0x509a('0x1'));var path=require('path');var timeout=require(_0x509a('0x2'));var express=require(_0x509a('0x3'));var router=express['Router']();var fs_extra=require(_0x509a('0x4'));var auth=require(_0x509a('0x5'));var interaction=require(_0x509a('0x6'));var config=require('../../config/environment');var controller=require('./mailSubstatus.controller');router[_0x509a('0x7')]('/',auth[_0x509a('0x8')](),controller[_0x509a('0x9')]);router[_0x509a('0x7')]('/describe',auth[_0x509a('0x8')](),controller[_0x509a('0xa')]);router[_0x509a('0x7')](_0x509a('0xb'),auth[_0x509a('0x8')](),controller[_0x509a('0xc')]);router['post']('/',auth[_0x509a('0x8')](),controller['create']);router['put'](_0x509a('0xb'),auth['isAuthenticated'](),controller[_0x509a('0xd')]);router['delete'](_0x509a('0xb'),auth['isAuthenticated'](),controller[_0x509a('0xe')]);module[_0x509a('0xf')]=router;
\ No newline at end of file
+var _0x56dd=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','isAuthenticated','index','/describe','describe','/:id','create','put','update','destroy','util','path','express'];(function(_0x4d7bf1,_0x536df0){var _0x22e311=function(_0x9d9f57){while(--_0x9d9f57){_0x4d7bf1['push'](_0x4d7bf1['shift']());}};_0x22e311(++_0x536df0);}(_0x56dd,0x1e3));var _0xd56d=function(_0x4e7a21,_0x2dc7ab){_0x4e7a21=_0x4e7a21-0x0;var _0x258123=_0x56dd[_0x4e7a21];return _0x258123;};'use strict';var multer=require('multer');var util=require(_0xd56d('0x0'));var path=require(_0xd56d('0x1'));var timeout=require('connect-timeout');var express=require(_0xd56d('0x2'));var router=express['Router']();var fs_extra=require(_0xd56d('0x3'));var auth=require(_0xd56d('0x4'));var interaction=require(_0xd56d('0x5'));var config=require(_0xd56d('0x6'));var controller=require(_0xd56d('0x7'));router[_0xd56d('0x8')]('/',auth[_0xd56d('0x9')](),controller[_0xd56d('0xa')]);router['get'](_0xd56d('0xb'),auth[_0xd56d('0x9')](),controller[_0xd56d('0xc')]);router['get'](_0xd56d('0xd'),auth[_0xd56d('0x9')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xd56d('0xe')]);router[_0xd56d('0xf')](_0xd56d('0xd'),auth[_0xd56d('0x9')](),controller[_0xd56d('0x10')]);router['delete']('/:id',auth[_0xd56d('0x9')](),controller[_0xd56d('0x11')]);module['exports']=router;
\ No newline at end of file
index 416c29d..6fceee8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['STRING','sequelize','exports'];(function(_0x1b92f9,_0x58a112){var _0x222157=function(_0x14a21c){while(--_0x14a21c){_0x1b92f9['push'](_0x1b92f9['shift']());}};_0x222157(++_0x58a112);}(_0xf494,0x1c6));var _0x4f49=function(_0x99259f,_0x4512e0){_0x99259f=_0x99259f-0x0;var _0x561c66=_0xf494[_0x99259f];return _0x561c66;};'use strict';var Sequelize=require(_0x4f49('0x0'));module[_0x4f49('0x1')]={'name':{'type':Sequelize[_0x4f49('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x4f49('0x2')]}};
\ No newline at end of file
+var _0x9bd9=['sequelize','exports','STRING','name'];(function(_0x28865c,_0x3b3b36){var _0x4a81b3=function(_0x11736a){while(--_0x11736a){_0x28865c['push'](_0x28865c['shift']());}};_0x4a81b3(++_0x3b3b36);}(_0x9bd9,0x1a4));var _0x99bd=function(_0x3284cd,_0x2e10a2){_0x3284cd=_0x3284cd-0x0;var _0xe92280=_0x9bd9[_0x3284cd];return _0xe92280;};'use strict';var Sequelize=require(_0x99bd('0x0'));module[_0x99bd('0x1')]={'name':{'type':Sequelize[_0x99bd('0x2')],'unique':_0x99bd('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x99bd('0x2')]}};
\ No newline at end of file
index 2269939..a6016d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab5e=['update','destroy','then','error','name','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','MailSubstatus','include','findAll','rows','catch','show','length','body','find','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject'];(function(_0x2a312e,_0x1b29a3){var _0x22c784=function(_0x1c9853){while(--_0x1c9853){_0x2a312e['push'](_0x2a312e['shift']());}};_0x22c784(++_0x1b29a3);}(_0xab5e,0x183));var _0xeab5=function(_0x2a1c6b,_0x7821bc){_0x2a1c6b=_0x2a1c6b-0x0;var _0xccc3a1=_0xab5e[_0x2a1c6b];return _0xccc3a1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xeab5('0x0'));var zipdir=require(_0xeab5('0x1'));var jsonpatch=require(_0xeab5('0x2'));var rp=require(_0xeab5('0x3'));var moment=require(_0xeab5('0x4'));var BPromise=require(_0xeab5('0x5'));var Mustache=require('mustache');var util=require(_0xeab5('0x6'));var path=require(_0xeab5('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xeab5('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeab5('0x9'));var squel=require('squel');var crypto=require(_0xeab5('0xa'));var jsforce=require(_0xeab5('0xb'));var deskjs=require(_0xeab5('0xc'));var toCsv=require(_0xeab5('0xd'));var querystring=require(_0xeab5('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xeab5('0xf'));var qs=require(_0xeab5('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xeab5('0x11'));var logger=require(_0xeab5('0x12'))('api');var utils=require('../../config/utils');var config=require(_0xeab5('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xeab5('0x14'))['db'];function respondWithStatusCode(_0x59d79e,_0x22f210){_0x22f210=_0x22f210||0xcc;return function(_0x26ca91){if(_0x26ca91){return _0x59d79e[_0xeab5('0x15')](_0x22f210);}return _0x59d79e[_0xeab5('0x16')](_0x22f210)[_0xeab5('0x17')]();};}function respondWithResult(_0x30cc12,_0x502c13){_0x502c13=_0x502c13||0xc8;return function(_0x2c5345){if(_0x2c5345){return _0x30cc12[_0xeab5('0x16')](_0x502c13)[_0xeab5('0x18')](_0x2c5345);}};}function respondWithFilteredResult(_0x57a702,_0x51d79d){return function(_0x5742b7){if(_0x5742b7){var _0x54c033=typeof _0x51d79d[_0xeab5('0x19')]===_0xeab5('0x1a')&&typeof _0x51d79d['limit']===_0xeab5('0x1a');var _0x22ba5c=_0x5742b7[_0xeab5('0x1b')];var _0x3c8918=_0x54c033?0x0:_0x51d79d[_0xeab5('0x19')];var _0x253a68=_0x54c033?_0x5742b7['count']:_0x51d79d[_0xeab5('0x19')]+_0x51d79d[_0xeab5('0x1c')];var _0x36edc1;if(_0x253a68>=_0x22ba5c){_0x253a68=_0x22ba5c;_0x36edc1=0xc8;}else{_0x36edc1=0xce;}_0x57a702[_0xeab5('0x16')](_0x36edc1);return _0x57a702[_0xeab5('0x1d')](_0xeab5('0x1e'),_0x3c8918+'-'+_0x253a68+'/'+_0x22ba5c)['json'](_0x5742b7);}return null;};}function patchUpdates(_0x530e60){return function(_0x5a08ae){try{jsonpatch[_0xeab5('0x1f')](_0x5a08ae,_0x530e60,!![]);}catch(_0x5ac191){return BPromise[_0xeab5('0x20')](_0x5ac191);}return _0x5a08ae['save']();};}function saveUpdates(_0x571af2,_0x4b6e6d){return function(_0x3225f9){if(_0x3225f9){return _0x3225f9[_0xeab5('0x21')](_0x571af2)['then'](function(_0x3b7f71){return _0x3b7f71;});}return null;};}function removeEntity(_0xaee7f2,_0x25cb8e){return function(_0x2120d1){if(_0x2120d1){return _0x2120d1[_0xeab5('0x22')]()[_0xeab5('0x23')](function(){_0xaee7f2[_0xeab5('0x16')](0xcc)[_0xeab5('0x17')]();});}};}function handleEntityNotFound(_0x961d95,_0x2f8378){return function(_0x235ce4){if(!_0x235ce4){_0x961d95[_0xeab5('0x15')](0x194);}return _0x235ce4;};}function handleError(_0x5ab7eb,_0xe8bd54){_0xe8bd54=_0xe8bd54||0x1f4;return function(_0x2e1f6e){logger[_0xeab5('0x24')](_0x2e1f6e['stack']);if(_0x2e1f6e[_0xeab5('0x25')]){delete _0x2e1f6e['name'];}_0x5ab7eb[_0xeab5('0x16')](_0xe8bd54)['send'](_0x2e1f6e);};}exports['index']=function(_0x53b43d,_0x2ebc95){var _0x51f594={},_0x47e7db={},_0x44ca06={'count':0x0,'rows':[]};var _0x26889c=_['map'](db['MailSubstatus'][_0xeab5('0x26')],function(_0x1fa97f){return{'name':_0x1fa97f[_0xeab5('0x27')],'type':_0x1fa97f[_0xeab5('0x28')][_0xeab5('0x29')]};});_0x47e7db[_0xeab5('0x2a')]=_[_0xeab5('0x2b')](_0x26889c,'name');_0x47e7db[_0xeab5('0x2c')]=_[_0xeab5('0x2d')](_0x53b43d[_0xeab5('0x2c')]);_0x47e7db[_0xeab5('0x2e')]=_[_0xeab5('0x2f')](_0x47e7db['model'],_0x47e7db[_0xeab5('0x2c')]);_0x51f594[_0xeab5('0x30')]=_[_0xeab5('0x2f')](_0x47e7db['model'],qs[_0xeab5('0x31')](_0x53b43d[_0xeab5('0x2c')][_0xeab5('0x31')]));_0x51f594['attributes']=_0x51f594['attributes']['length']?_0x51f594['attributes']:_0x47e7db['model'];if(!_0x53b43d[_0xeab5('0x2c')]['hasOwnProperty'](_0xeab5('0x32'))){_0x51f594['limit']=qs[_0xeab5('0x1c')](_0x53b43d[_0xeab5('0x2c')][_0xeab5('0x1c')]);_0x51f594['offset']=qs['offset'](_0x53b43d[_0xeab5('0x2c')]['offset']);}_0x51f594[_0xeab5('0x33')]=qs['sort'](_0x53b43d[_0xeab5('0x2c')][_0xeab5('0x34')]);_0x51f594['where']=qs[_0xeab5('0x2e')](_[_0xeab5('0x35')](_0x53b43d[_0xeab5('0x2c')],_0x47e7db['filters']),_0x26889c);if(_0x53b43d[_0xeab5('0x2c')][_0xeab5('0x36')]){_0x51f594[_0xeab5('0x37')]=_[_0xeab5('0x38')](_0x51f594[_0xeab5('0x37')],{'$or':_['map'](_0x26889c,function(_0x2cbb7f){if(_0x2cbb7f[_0xeab5('0x28')]!==_0xeab5('0x39')){var _0x22f8ef={};_0x22f8ef[_0x2cbb7f[_0xeab5('0x25')]]={'$like':'%'+_0x53b43d[_0xeab5('0x2c')][_0xeab5('0x36')]+'%'};return _0x22f8ef;}})});}_0x51f594=_['merge']({},_0x51f594,_0x53b43d[_0xeab5('0x3a')]);var _0x3654a7={'where':_0x51f594[_0xeab5('0x37')]};return db[_0xeab5('0x3b')][_0xeab5('0x1b')](_0x3654a7)[_0xeab5('0x23')](function(_0x1d5707){_0x44ca06[_0xeab5('0x1b')]=_0x1d5707;if(_0x53b43d[_0xeab5('0x2c')]['includeAll']){_0x51f594[_0xeab5('0x3c')]=[{'all':!![]}];}return db[_0xeab5('0x3b')][_0xeab5('0x3d')](_0x51f594);})[_0xeab5('0x23')](function(_0x1cd6b8){_0x44ca06[_0xeab5('0x3e')]=_0x1cd6b8;return _0x44ca06;})[_0xeab5('0x23')](respondWithFilteredResult(_0x2ebc95,_0x51f594))[_0xeab5('0x3f')](handleError(_0x2ebc95,null));};exports[_0xeab5('0x40')]=function(_0x392869,_0x15c994){var _0x39757d={'raw':!![],'where':{'id':_0x392869['params']['id']}},_0x58ed5b={};_0x58ed5b[_0xeab5('0x2a')]=_[_0xeab5('0x2d')](db[_0xeab5('0x3b')]['rawAttributes']);_0x58ed5b['query']=_[_0xeab5('0x2d')](_0x392869[_0xeab5('0x2c')]);_0x58ed5b[_0xeab5('0x2e')]=_[_0xeab5('0x2f')](_0x58ed5b[_0xeab5('0x2a')],_0x58ed5b[_0xeab5('0x2c')]);_0x39757d['attributes']=_['intersection'](_0x58ed5b['model'],qs[_0xeab5('0x31')](_0x392869[_0xeab5('0x2c')][_0xeab5('0x31')]));_0x39757d[_0xeab5('0x30')]=_0x39757d['attributes'][_0xeab5('0x41')]?_0x39757d[_0xeab5('0x30')]:_0x58ed5b[_0xeab5('0x2a')];if(_0x392869[_0xeab5('0x2c')]['includeAll']){_0x39757d[_0xeab5('0x3c')]=[{'all':!![]}];}_0x39757d=_[_0xeab5('0x38')]({},_0x39757d,_0x392869['options']);return db[_0xeab5('0x3b')]['find'](_0x39757d)[_0xeab5('0x23')](handleEntityNotFound(_0x15c994,null))[_0xeab5('0x23')](respondWithResult(_0x15c994,null))[_0xeab5('0x3f')](handleError(_0x15c994,null));};exports['create']=function(_0x2064ac,_0x28c584){return db[_0xeab5('0x3b')]['create'](_0x2064ac[_0xeab5('0x42')],{})[_0xeab5('0x23')](respondWithResult(_0x28c584,0xc9))[_0xeab5('0x3f')](handleError(_0x28c584,null));};exports[_0xeab5('0x21')]=function(_0x165063,_0x33a7c6){if(_0x165063[_0xeab5('0x42')]['id']){delete _0x165063['body']['id'];}return db[_0xeab5('0x3b')][_0xeab5('0x43')]({'where':{'id':_0x165063[_0xeab5('0x44')]['id']}})[_0xeab5('0x23')](handleEntityNotFound(_0x33a7c6,null))['then'](saveUpdates(_0x165063[_0xeab5('0x42')],null))[_0xeab5('0x23')](respondWithResult(_0x33a7c6,null))[_0xeab5('0x3f')](handleError(_0x33a7c6,null));};exports[_0xeab5('0x22')]=function(_0x430e99,_0x6482){return db['MailSubstatus'][_0xeab5('0x43')]({'where':{'id':_0x430e99['params']['id']}})['then'](handleEntityNotFound(_0x6482,null))[_0xeab5('0x23')](removeEntity(_0x6482,null))[_0xeab5('0x3f')](handleError(_0x6482,null));};exports[_0xeab5('0x45')]=function(_0x41a6da,_0x10cef0){return db[_0xeab5('0x3b')][_0xeab5('0x45')]()[_0xeab5('0x23')](respondWithResult(_0x10cef0,null))[_0xeab5('0x3f')](handleError(_0x10cef0,null));};
\ No newline at end of file
+var _0x2ce2=['filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','includeAll','include','findAll','show','params','merge','options','find','create','body','catch','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','undefined','limit','count','offset','set','reject','save','update','destroy','then','stack','name','send','index','map','MailSubstatus','rawAttributes','fieldName','type','key','model','query','keys'];(function(_0x44c92c,_0x461a18){var _0x1c007b=function(_0x2d5d3a){while(--_0x2d5d3a){_0x44c92c['push'](_0x44c92c['shift']());}};_0x1c007b(++_0x461a18);}(_0x2ce2,0x18f));var _0x22ce=function(_0x328b40,_0x370642){_0x328b40=_0x328b40-0x0;var _0x556a56=_0x2ce2[_0x328b40];return _0x556a56;};'use strict';var emlformat=require(_0x22ce('0x0'));var rimraf=require(_0x22ce('0x1'));var zipdir=require(_0x22ce('0x2'));var jsonpatch=require(_0x22ce('0x3'));var rp=require(_0x22ce('0x4'));var moment=require('moment');var BPromise=require(_0x22ce('0x5'));var Mustache=require(_0x22ce('0x6'));var util=require('util');var path=require(_0x22ce('0x7'));var sox=require('sox');var csv=require(_0x22ce('0x8'));var ejs=require(_0x22ce('0x9'));var fs=require('fs');var fs_extra=require(_0x22ce('0xa'));var _=require(_0x22ce('0xb'));var squel=require('squel');var crypto=require(_0x22ce('0xc'));var jsforce=require(_0x22ce('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x22ce('0x8'));var querystring=require(_0x22ce('0xe'));var Papa=require(_0x22ce('0xf'));var Redis=require(_0x22ce('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x22ce('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x22ce('0x12'));var logger=require(_0x22ce('0x13'))(_0x22ce('0x14'));var utils=require(_0x22ce('0x15'));var config=require(_0x22ce('0x16'));var licenseUtil=require(_0x22ce('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x38c567,_0x309e19){_0x309e19=_0x309e19||0xcc;return function(_0x207cbf){if(_0x207cbf){return _0x38c567[_0x22ce('0x18')](_0x309e19);}return _0x38c567[_0x22ce('0x19')](_0x309e19)[_0x22ce('0x1a')]();};}function respondWithResult(_0xf03f57,_0xf17da7){_0xf17da7=_0xf17da7||0xc8;return function(_0x4b3142){if(_0x4b3142){return _0xf03f57[_0x22ce('0x19')](_0xf17da7)[_0x22ce('0x1b')](_0x4b3142);}};}function respondWithFilteredResult(_0x277510,_0x4b65c8){return function(_0x9d3b41){if(_0x9d3b41){var _0x5603ef=typeof _0x4b65c8['offset']===_0x22ce('0x1c')&&typeof _0x4b65c8[_0x22ce('0x1d')]==='undefined';var _0x4c6a99=_0x9d3b41[_0x22ce('0x1e')];var _0x2c9965=_0x5603ef?0x0:_0x4b65c8[_0x22ce('0x1f')];var _0x368da0=_0x5603ef?_0x9d3b41[_0x22ce('0x1e')]:_0x4b65c8['offset']+_0x4b65c8[_0x22ce('0x1d')];var _0x559490;if(_0x368da0>=_0x4c6a99){_0x368da0=_0x4c6a99;_0x559490=0xc8;}else{_0x559490=0xce;}_0x277510[_0x22ce('0x19')](_0x559490);return _0x277510[_0x22ce('0x20')]('Content-Range',_0x2c9965+'-'+_0x368da0+'/'+_0x4c6a99)['json'](_0x9d3b41);}return null;};}function patchUpdates(_0x471502){return function(_0x19ae04){try{jsonpatch['apply'](_0x19ae04,_0x471502,!![]);}catch(_0x528407){return BPromise[_0x22ce('0x21')](_0x528407);}return _0x19ae04[_0x22ce('0x22')]();};}function saveUpdates(_0x5305bd,_0x4bda00){return function(_0x244446){if(_0x244446){return _0x244446[_0x22ce('0x23')](_0x5305bd)['then'](function(_0x45adff){return _0x45adff;});}return null;};}function removeEntity(_0x368cdc,_0x1bb2b4){return function(_0x359310){if(_0x359310){return _0x359310[_0x22ce('0x24')]()[_0x22ce('0x25')](function(){_0x368cdc[_0x22ce('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ef979,_0x503e0d){return function(_0x3583df){if(!_0x3583df){_0x4ef979[_0x22ce('0x18')](0x194);}return _0x3583df;};}function handleError(_0x58f3d6,_0x52ef03){_0x52ef03=_0x52ef03||0x1f4;return function(_0x252b5b){logger['error'](_0x252b5b[_0x22ce('0x26')]);if(_0x252b5b[_0x22ce('0x27')]){delete _0x252b5b['name'];}_0x58f3d6['status'](_0x52ef03)[_0x22ce('0x28')](_0x252b5b);};}exports[_0x22ce('0x29')]=function(_0xa85591,_0x18209b){var _0x2f6c05={},_0x13ccf9={},_0x3c132f={'count':0x0,'rows':[]};var _0x34c12c=_[_0x22ce('0x2a')](db[_0x22ce('0x2b')][_0x22ce('0x2c')],function(_0x16b65c){return{'name':_0x16b65c[_0x22ce('0x2d')],'type':_0x16b65c[_0x22ce('0x2e')][_0x22ce('0x2f')]};});_0x13ccf9[_0x22ce('0x30')]=_['map'](_0x34c12c,'name');_0x13ccf9[_0x22ce('0x31')]=_[_0x22ce('0x32')](_0xa85591[_0x22ce('0x31')]);_0x13ccf9[_0x22ce('0x33')]=_[_0x22ce('0x34')](_0x13ccf9[_0x22ce('0x30')],_0x13ccf9[_0x22ce('0x31')]);_0x2f6c05['attributes']=_[_0x22ce('0x34')](_0x13ccf9[_0x22ce('0x30')],qs[_0x22ce('0x35')](_0xa85591[_0x22ce('0x31')]['fields']));_0x2f6c05[_0x22ce('0x36')]=_0x2f6c05['attributes'][_0x22ce('0x37')]?_0x2f6c05[_0x22ce('0x36')]:_0x13ccf9[_0x22ce('0x30')];if(!_0xa85591[_0x22ce('0x31')][_0x22ce('0x38')](_0x22ce('0x39'))){_0x2f6c05['limit']=qs[_0x22ce('0x1d')](_0xa85591['query'][_0x22ce('0x1d')]);_0x2f6c05[_0x22ce('0x1f')]=qs[_0x22ce('0x1f')](_0xa85591[_0x22ce('0x31')][_0x22ce('0x1f')]);}_0x2f6c05['order']=qs[_0x22ce('0x3a')](_0xa85591['query'][_0x22ce('0x3a')]);_0x2f6c05[_0x22ce('0x3b')]=qs[_0x22ce('0x33')](_[_0x22ce('0x3c')](_0xa85591[_0x22ce('0x31')],_0x13ccf9[_0x22ce('0x33')]),_0x34c12c);if(_0xa85591['query'][_0x22ce('0x3d')]){_0x2f6c05[_0x22ce('0x3b')]=_['merge'](_0x2f6c05[_0x22ce('0x3b')],{'$or':_[_0x22ce('0x2a')](_0x34c12c,function(_0x141d42){if(_0x141d42[_0x22ce('0x2e')]!==_0x22ce('0x3e')){var _0x4b912e={};_0x4b912e[_0x141d42[_0x22ce('0x27')]]={'$like':'%'+_0xa85591['query']['filter']+'%'};return _0x4b912e;}})});}_0x2f6c05=_['merge']({},_0x2f6c05,_0xa85591['options']);var _0x5e1c3a={'where':_0x2f6c05[_0x22ce('0x3b')]};return db['MailSubstatus'][_0x22ce('0x1e')](_0x5e1c3a)['then'](function(_0x275b1d){_0x3c132f[_0x22ce('0x1e')]=_0x275b1d;if(_0xa85591['query'][_0x22ce('0x3f')]){_0x2f6c05[_0x22ce('0x40')]=[{'all':!![]}];}return db[_0x22ce('0x2b')][_0x22ce('0x41')](_0x2f6c05);})[_0x22ce('0x25')](function(_0x520acc){_0x3c132f['rows']=_0x520acc;return _0x3c132f;})[_0x22ce('0x25')](respondWithFilteredResult(_0x18209b,_0x2f6c05))['catch'](handleError(_0x18209b,null));};exports[_0x22ce('0x42')]=function(_0x143f2b,_0x2c6037){var _0x3560b7={'raw':!![],'where':{'id':_0x143f2b[_0x22ce('0x43')]['id']}},_0x38f7bf={};_0x38f7bf[_0x22ce('0x30')]=_[_0x22ce('0x32')](db[_0x22ce('0x2b')]['rawAttributes']);_0x38f7bf['query']=_[_0x22ce('0x32')](_0x143f2b[_0x22ce('0x31')]);_0x38f7bf[_0x22ce('0x33')]=_['intersection'](_0x38f7bf[_0x22ce('0x30')],_0x38f7bf[_0x22ce('0x31')]);_0x3560b7[_0x22ce('0x36')]=_[_0x22ce('0x34')](_0x38f7bf[_0x22ce('0x30')],qs[_0x22ce('0x35')](_0x143f2b[_0x22ce('0x31')][_0x22ce('0x35')]));_0x3560b7[_0x22ce('0x36')]=_0x3560b7[_0x22ce('0x36')]['length']?_0x3560b7[_0x22ce('0x36')]:_0x38f7bf[_0x22ce('0x30')];if(_0x143f2b[_0x22ce('0x31')][_0x22ce('0x3f')]){_0x3560b7['include']=[{'all':!![]}];}_0x3560b7=_[_0x22ce('0x44')]({},_0x3560b7,_0x143f2b[_0x22ce('0x45')]);return db[_0x22ce('0x2b')][_0x22ce('0x46')](_0x3560b7)[_0x22ce('0x25')](handleEntityNotFound(_0x2c6037,null))['then'](respondWithResult(_0x2c6037,null))['catch'](handleError(_0x2c6037,null));};exports[_0x22ce('0x47')]=function(_0x53165a,_0x374821){return db[_0x22ce('0x2b')][_0x22ce('0x47')](_0x53165a[_0x22ce('0x48')],{})[_0x22ce('0x25')](respondWithResult(_0x374821,0xc9))[_0x22ce('0x49')](handleError(_0x374821,null));};exports['update']=function(_0x65dd46,_0x3ac45b){if(_0x65dd46[_0x22ce('0x48')]['id']){delete _0x65dd46[_0x22ce('0x48')]['id'];}return db[_0x22ce('0x2b')][_0x22ce('0x46')]({'where':{'id':_0x65dd46[_0x22ce('0x43')]['id']}})[_0x22ce('0x25')](handleEntityNotFound(_0x3ac45b,null))['then'](saveUpdates(_0x65dd46[_0x22ce('0x48')],null))['then'](respondWithResult(_0x3ac45b,null))['catch'](handleError(_0x3ac45b,null));};exports[_0x22ce('0x24')]=function(_0x3543ba,_0x4f4c76){return db[_0x22ce('0x2b')][_0x22ce('0x46')]({'where':{'id':_0x3543ba[_0x22ce('0x43')]['id']}})['then'](handleEntityNotFound(_0x4f4c76,null))[_0x22ce('0x25')](removeEntity(_0x4f4c76,null))[_0x22ce('0x49')](handleError(_0x4f4c76,null));};exports[_0x22ce('0x4a')]=function(_0x388222,_0x1f7174){return db['MailSubstatus'][_0x22ce('0x4a')]()[_0x22ce('0x25')](respondWithResult(_0x1f7174,null))[_0x22ce('0x49')](handleError(_0x1f7174,null));};
\ No newline at end of file
index 1c282cf..13e0ea6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe293=['exports','events','../../mysqldb','MailSubstatus','setMaxListeners','emit','hasOwnProperty','hook'];(function(_0xb25ef0,_0x30fd2f){var _0x33f12e=function(_0x177187){while(--_0x177187){_0xb25ef0['push'](_0xb25ef0['shift']());}};_0x33f12e(++_0x30fd2f);}(_0xe293,0x1a1));var _0x3e29=function(_0x53b53e,_0x498437){_0x53b53e=_0x53b53e-0x0;var _0xbb6179=_0xe293[_0x53b53e];return _0xbb6179;};'use strict';var EventEmitter=require(_0x3e29('0x0'));var MailSubstatus=require(_0x3e29('0x1'))['db'][_0x3e29('0x2')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x3e29('0x3')](0x0);var events={'afterUpdate':'update'};function emitEvent(_0x2503fb){return function(_0x12ece3,_0xfa6cf6,_0xf69df6){MailSubstatusEvents[_0x3e29('0x4')](_0x2503fb+':'+_0x12ece3['id'],_0x12ece3);MailSubstatusEvents[_0x3e29('0x4')](_0x2503fb,_0x12ece3);_0xf69df6(null);};}for(var e in events){if(events[_0x3e29('0x5')](e)){var event=events[e];MailSubstatus[_0x3e29('0x6')](e,emitEvent(event));}}module[_0x3e29('0x7')]=MailSubstatusEvents;
\ No newline at end of file
+var _0x1e45=['update','emit','hasOwnProperty','exports','events','../../mysqldb','MailSubstatus','setMaxListeners'];(function(_0xeb6612,_0x25d49e){var _0x45bf2f=function(_0x3fc4cd){while(--_0x3fc4cd){_0xeb6612['push'](_0xeb6612['shift']());}};_0x45bf2f(++_0x25d49e);}(_0x1e45,0x8c));var _0x51e4=function(_0x10cd0d,_0x4251d7){_0x10cd0d=_0x10cd0d-0x0;var _0x385dd6=_0x1e45[_0x10cd0d];return _0x385dd6;};'use strict';var EventEmitter=require(_0x51e4('0x0'));var MailSubstatus=require(_0x51e4('0x1'))['db'][_0x51e4('0x2')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x51e4('0x3')](0x0);var events={'afterUpdate':_0x51e4('0x4')};function emitEvent(_0x29baae){return function(_0x2f0f75,_0xd9e3c,_0x209f71){MailSubstatusEvents[_0x51e4('0x5')](_0x29baae+':'+_0x2f0f75['id'],_0x2f0f75);MailSubstatusEvents[_0x51e4('0x5')](_0x29baae,_0x2f0f75);_0x209f71(null);};}for(var e in events){if(events[_0x51e4('0x6')](e)){var event=events[e];MailSubstatus['hook'](e,emitEvent(event));}}module[_0x51e4('0x7')]=MailSubstatusEvents;
\ No newline at end of file
index 71c1dd2..5dd2922 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1799=['mailSubstatus','_previousDataValues','name','then','catch','./mailSubstatus.attributes','models','define','MailSubstatus','mail_substatuses','Condition','update'];(function(_0x29c1a7,_0x380c96){var _0x1119cf=function(_0x21063a){while(--_0x21063a){_0x29c1a7['push'](_0x29c1a7['shift']());}};_0x1119cf(++_0x380c96);}(_0x1799,0x161));var _0x9179=function(_0x4fda81,_0x2a1f4c){_0x4fda81=_0x4fda81-0x0;var _0x567e41=_0x1799[_0x4fda81];return _0x567e41;};'use strict';var attributes=require(_0x9179('0x0'));module['exports']=function(_0x2e7d8b){var _0x2df632=_0x2e7d8b[_0x9179('0x1')];return _0x2e7d8b[_0x9179('0x2')](_0x9179('0x3'),attributes,{'tableName':_0x9179('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x201a14,_0x519a31,_0x5117bd){return _0x2df632[_0x9179('0x5')][_0x9179('0x6')]({'value':_0x201a14['name']},{'where':{'field':_0x9179('0x7'),'value':_0x201a14[_0x9179('0x8')][_0x9179('0x9')]}})[_0x9179('0xa')](function(){_0x5117bd();})[_0x9179('0xb')](function(_0x1167d0){_0x5117bd(_0x1167d0);});}}});};
\ No newline at end of file
+var _0xafc4=['mailSubstatus','_previousDataValues','then','catch','./mailSubstatus.attributes','models','define','MailSubstatus','Condition','update','name'];(function(_0x269cbc,_0x3a8931){var _0x128a09=function(_0x5e7923){while(--_0x5e7923){_0x269cbc['push'](_0x269cbc['shift']());}};_0x128a09(++_0x3a8931);}(_0xafc4,0x185));var _0x4afc=function(_0x2e9481,_0x1c4a77){_0x2e9481=_0x2e9481-0x0;var _0x111498=_0xafc4[_0x2e9481];return _0x111498;};'use strict';var attributes=require(_0x4afc('0x0'));module['exports']=function(_0x30a27b){var _0x2b7f9a=_0x30a27b[_0x4afc('0x1')];return _0x30a27b[_0x4afc('0x2')](_0x4afc('0x3'),attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x1f3d3c,_0x36921c,_0x311ec6){return _0x2b7f9a[_0x4afc('0x4')][_0x4afc('0x5')]({'value':_0x1f3d3c[_0x4afc('0x6')]},{'where':{'field':_0x4afc('0x7'),'value':_0x1f3d3c[_0x4afc('0x8')][_0x4afc('0x6')]}})[_0x4afc('0x9')](function(){_0x311ec6();})[_0x4afc('0xa')](function(_0xbb5833){_0x311ec6(_0xbb5833);});}}});};
\ No newline at end of file
index 8f561d2..bb62f94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76d2=['MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info'];(function(_0x587460,_0x55a69a){var _0x15b0ed=function(_0x37ee25){while(--_0x37ee25){_0x587460['push'](_0x587460['shift']());}};_0x15b0ed(++_0x55a69a);}(_0x76d2,0x162));var _0x276d=function(_0x2c82e0,_0xd1680){_0x2c82e0=_0x2c82e0-0x0;var _0x2976c7=_0x76d2[_0x2c82e0];return _0x2976c7;};'use strict';var _=require(_0x276d('0x0'));var util=require(_0x276d('0x1'));var moment=require(_0x276d('0x2'));var BPromise=require(_0x276d('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x276d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x276d('0x5'));var logger=require(_0x276d('0x6'))(_0x276d('0x7'));var config=require(_0x276d('0x8'));var jayson=require(_0x276d('0x9'));var client=jayson['client'][_0x276d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x647b3b,_0x352394,_0x3b6718){return new BPromise(function(_0x2a88ce,_0x487742){return client[_0x276d('0xb')](_0x647b3b,_0x3b6718)[_0x276d('0xc')](function(_0x5b757d){logger[_0x276d('0xd')](_0x276d('0xe'),_0x352394,_0x276d('0xf'));logger[_0x276d('0x10')](_0x276d('0x11'),_0x352394,_0x276d('0xf'),JSON[_0x276d('0x12')](_0x5b757d));if(_0x5b757d[_0x276d('0x13')]){if(_0x5b757d['error']['code']===0x1f4){logger[_0x276d('0x13')](_0x276d('0xe'),_0x352394,_0x5b757d[_0x276d('0x13')]['message']);return _0x487742(_0x5b757d[_0x276d('0x13')][_0x276d('0x14')]);}logger[_0x276d('0x13')](_0x276d('0xe'),_0x352394,_0x5b757d['error'][_0x276d('0x14')]);return _0x2a88ce(_0x5b757d['error']['message']);}else{logger[_0x276d('0xd')](_0x276d('0xe'),_0x352394,_0x276d('0xf'));_0x2a88ce(_0x5b757d[_0x276d('0x15')][_0x276d('0x14')]);}})[_0x276d('0x16')](function(_0x243e8c){logger[_0x276d('0x13')](_0x276d('0xe'),_0x352394,_0x243e8c);_0x487742(_0x243e8c);});});}
\ No newline at end of file
+var _0x5557=['MailSubstatus,\x20%s,\x20%s','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x5557,0x178));var _0x7555=function(_0x228c35,_0x7e210a){_0x228c35=_0x228c35-0x0;var _0x3efcef=_0x5557[_0x228c35];return _0x3efcef;};'use strict';var _=require(_0x7555('0x0'));var util=require('util');var moment=require(_0x7555('0x1'));var BPromise=require(_0x7555('0x2'));var rs=require(_0x7555('0x3'));var fs=require('fs');var Redis=require(_0x7555('0x4'));var db=require(_0x7555('0x5'))['db'];var utils=require(_0x7555('0x6'));var logger=require(_0x7555('0x7'))(_0x7555('0x8'));var config=require(_0x7555('0x9'));var jayson=require(_0x7555('0xa'));var client=jayson[_0x7555('0xb')][_0x7555('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5ec4da,_0x569229,_0x2d95d8){return new BPromise(function(_0xa5b033,_0x465de4){return client['request'](_0x5ec4da,_0x2d95d8)[_0x7555('0xd')](function(_0x45b6f7){logger[_0x7555('0xe')](_0x7555('0xf'),_0x569229,_0x7555('0x10'));logger[_0x7555('0x11')](_0x7555('0x12'),_0x569229,'request\x20sent',JSON[_0x7555('0x13')](_0x45b6f7));if(_0x45b6f7[_0x7555('0x14')]){if(_0x45b6f7[_0x7555('0x14')][_0x7555('0x15')]===0x1f4){logger['error'](_0x7555('0xf'),_0x569229,_0x45b6f7[_0x7555('0x14')][_0x7555('0x16')]);return _0x465de4(_0x45b6f7['error']['message']);}logger['error'](_0x7555('0xf'),_0x569229,_0x45b6f7[_0x7555('0x14')][_0x7555('0x16')]);return _0xa5b033(_0x45b6f7['error'][_0x7555('0x16')]);}else{logger[_0x7555('0xe')](_0x7555('0xf'),_0x569229,'request\x20sent');_0xa5b033(_0x45b6f7['result'][_0x7555('0x16')]);}})['catch'](function(_0x19d4a0){logger[_0x7555('0x14')]('MailSubstatus,\x20%s,\x20%s',_0x569229,_0x19d4a0);_0x465de4(_0x19d4a0);});});}
\ No newline at end of file
index 816ad38..9592301 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dc9=['../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','isAuthenticated','index','describe','/:id','show','post','create','put','delete','exports','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x523bd2,_0x4c3ecc){var _0x4a1012=function(_0x353d0b){while(--_0x353d0b){_0x523bd2['push'](_0x523bd2['shift']());}};_0x4a1012(++_0x4c3ecc);}(_0x3dc9,0xae));var _0x93dc=function(_0x5be247,_0x5b4636){_0x5be247=_0x5be247-0x0;var _0x534eac=_0x3dc9[_0x5be247];return _0x534eac;};'use strict';var multer=require('multer');var util=require(_0x93dc('0x0'));var path=require(_0x93dc('0x1'));var timeout=require(_0x93dc('0x2'));var express=require(_0x93dc('0x3'));var router=express[_0x93dc('0x4')]();var fs_extra=require(_0x93dc('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x93dc('0x6'));var config=require(_0x93dc('0x7'));var controller=require(_0x93dc('0x8'));router[_0x93dc('0x9')]('/',auth[_0x93dc('0xa')](),controller[_0x93dc('0xb')]);router[_0x93dc('0x9')]('/describe',auth[_0x93dc('0xa')](),controller[_0x93dc('0xc')]);router[_0x93dc('0x9')](_0x93dc('0xd'),auth['isAuthenticated'](),controller[_0x93dc('0xe')]);router[_0x93dc('0xf')]('/',auth[_0x93dc('0xa')](),controller[_0x93dc('0x10')]);router[_0x93dc('0x11')](_0x93dc('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x93dc('0x12')](_0x93dc('0xd'),auth[_0x93dc('0xa')](),controller['destroy']);module[_0x93dc('0x13')]=router;
\ No newline at end of file
+var _0xdd53=['exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','get','isAuthenticated','index','/describe','describe','post','put','/:id','update','delete','destroy'];(function(_0x3bdf78,_0x34ac27){var _0x1798b5=function(_0xf167d1){while(--_0xf167d1){_0x3bdf78['push'](_0x3bdf78['shift']());}};_0x1798b5(++_0x34ac27);}(_0xdd53,0xb1));var _0x3dd5=function(_0x451636,_0x27045c){_0x451636=_0x451636-0x0;var _0x2e2183=_0xdd53[_0x451636];return _0x2e2183;};'use strict';var multer=require(_0x3dd5('0x0'));var util=require(_0x3dd5('0x1'));var path=require(_0x3dd5('0x2'));var timeout=require(_0x3dd5('0x3'));var express=require('express');var router=express[_0x3dd5('0x4')]();var fs_extra=require(_0x3dd5('0x5'));var auth=require(_0x3dd5('0x6'));var interaction=require(_0x3dd5('0x7'));var config=require(_0x3dd5('0x8'));var controller=require(_0x3dd5('0x9'));router[_0x3dd5('0xa')]('/',auth[_0x3dd5('0xb')](),controller[_0x3dd5('0xc')]);router[_0x3dd5('0xa')](_0x3dd5('0xd'),auth[_0x3dd5('0xb')](),controller[_0x3dd5('0xe')]);router[_0x3dd5('0xa')]('/:id',auth[_0x3dd5('0xb')](),controller['show']);router[_0x3dd5('0xf')]('/',auth[_0x3dd5('0xb')](),controller['create']);router[_0x3dd5('0x10')](_0x3dd5('0x11'),auth[_0x3dd5('0xb')](),controller[_0x3dd5('0x12')]);router[_0x3dd5('0x13')](_0x3dd5('0x11'),auth[_0x3dd5('0xb')](),controller[_0x3dd5('0x14')]);module[_0x3dd5('0x15')]=router;
\ No newline at end of file
index b0fba6f..3c978e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x1f9f5f,_0x509fb7){var _0x51d649=function(_0x4a5285){while(--_0x4a5285){_0x1f9f5f['push'](_0x1f9f5f['shift']());}};_0x51d649(++_0x509fb7);}(_0xb43b,0x1b2));var _0xbb43=function(_0x6149c1,_0xb5092){_0x6149c1=_0x6149c1-0x0;var _0xccaf66=_0xb43b[_0x6149c1];return _0xccaf66;};'use strict';var moment=require(_0xbb43('0x0'));var Sequelize=require(_0xbb43('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xbb43('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xbb43('0x3')](_0xbb43('0x4'),'agent',_0xbb43('0x5')),'allowNull':![],'defaultValue':_0xbb43('0x5')},'transferredAt':{'type':Sequelize[_0xbb43('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xbb43('0x7')]}};
\ No newline at end of file
+var _0x4b84=['moment','sequelize','ENUM','queue','DATE'];(function(_0x41c234,_0x31e470){var _0xb5503a=function(_0x3a757d){while(--_0x3a757d){_0x41c234['push'](_0x41c234['shift']());}};_0xb5503a(++_0x31e470);}(_0x4b84,0x1cc));var _0x44b8=function(_0x44474f,_0x431580){_0x44474f=_0x44474f-0x0;var _0x427d97=_0x4b84[_0x44474f];return _0x427d97;};'use strict';var moment=require(_0x44b8('0x0'));var Sequelize=require(_0x44b8('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x44b8('0x2')]('account','agent',_0x44b8('0x3')),'allowNull':![],'defaultValue':_0x44b8('0x3')},'transferredAt':{'type':Sequelize[_0x44b8('0x4')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index a50e77b..ef90946 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06cb=['options','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','error','name','send','map','MailTransferReport','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','hasOwnProperty','order','sort','where','filters','pick','filter','merge','includeAll','include','findAll','rows','catch','show','params','length'];(function(_0xaa0309,_0x1c8008){var _0x5de7ce=function(_0x3aa6ae){while(--_0x3aa6ae){_0xaa0309['push'](_0xaa0309['shift']());}};_0x5de7ce(++_0x1c8008);}(_0x06cb,0x9f));var _0xb06c=function(_0x486844,_0x155ee0){_0x486844=_0x486844-0x0;var _0x25feac=_0x06cb[_0x486844];return _0x25feac;};'use strict';var emlformat=require(_0xb06c('0x0'));var rimraf=require(_0xb06c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb06c('0x2'));var rp=require(_0xb06c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xb06c('0x4'));var util=require(_0xb06c('0x5'));var path=require(_0xb06c('0x6'));var sox=require(_0xb06c('0x7'));var csv=require('to-csv');var ejs=require(_0xb06c('0x8'));var fs=require('fs');var fs_extra=require(_0xb06c('0x9'));var _=require('lodash');var squel=require(_0xb06c('0xa'));var crypto=require(_0xb06c('0xb'));var jsforce=require(_0xb06c('0xc'));var deskjs=require(_0xb06c('0xd'));var toCsv=require(_0xb06c('0xe'));var querystring=require(_0xb06c('0xf'));var Papa=require(_0xb06c('0x10'));var Redis=require(_0xb06c('0x11'));var authService=require(_0xb06c('0x12'));var qs=require(_0xb06c('0x13'));var as=require(_0xb06c('0x14'));var hardwareService=require(_0xb06c('0x15'));var logger=require(_0xb06c('0x16'))(_0xb06c('0x17'));var utils=require(_0xb06c('0x18'));var config=require(_0xb06c('0x19'));var licenseUtil=require(_0xb06c('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3800cd,_0x1ffea1){_0x1ffea1=_0x1ffea1||0xcc;return function(_0x2515a1){if(_0x2515a1){return _0x3800cd[_0xb06c('0x1b')](_0x1ffea1);}return _0x3800cd['status'](_0x1ffea1)[_0xb06c('0x1c')]();};}function respondWithResult(_0x3eafce,_0x625cd8){_0x625cd8=_0x625cd8||0xc8;return function(_0x2b6a8c){if(_0x2b6a8c){return _0x3eafce[_0xb06c('0x1d')](_0x625cd8)[_0xb06c('0x1e')](_0x2b6a8c);}};}function respondWithFilteredResult(_0xe74e68,_0x2869f8){return function(_0x33a069){if(_0x33a069){var _0x13d985=typeof _0x2869f8[_0xb06c('0x1f')]===_0xb06c('0x20')&&typeof _0x2869f8['limit']===_0xb06c('0x20');var _0x3dac3b=_0x33a069['count'];var _0x408b54=_0x13d985?0x0:_0x2869f8['offset'];var _0x374734=_0x13d985?_0x33a069[_0xb06c('0x21')]:_0x2869f8['offset']+_0x2869f8[_0xb06c('0x22')];var _0x1bda03;if(_0x374734>=_0x3dac3b){_0x374734=_0x3dac3b;_0x1bda03=0xc8;}else{_0x1bda03=0xce;}_0xe74e68['status'](_0x1bda03);return _0xe74e68[_0xb06c('0x23')](_0xb06c('0x24'),_0x408b54+'-'+_0x374734+'/'+_0x3dac3b)[_0xb06c('0x1e')](_0x33a069);}return null;};}function patchUpdates(_0x1fa0f6){return function(_0xed138){try{jsonpatch[_0xb06c('0x25')](_0xed138,_0x1fa0f6,!![]);}catch(_0x57ce52){return BPromise[_0xb06c('0x26')](_0x57ce52);}return _0xed138[_0xb06c('0x27')]();};}function saveUpdates(_0x574fca,_0x5dbd8b){return function(_0x2e8bf3){if(_0x2e8bf3){return _0x2e8bf3['update'](_0x574fca)[_0xb06c('0x28')](function(_0x4de134){return _0x4de134;});}return null;};}function removeEntity(_0x5f24f2,_0x1a2bd7){return function(_0x44a17e){if(_0x44a17e){return _0x44a17e[_0xb06c('0x29')]()[_0xb06c('0x28')](function(){_0x5f24f2[_0xb06c('0x1d')](0xcc)[_0xb06c('0x1c')]();});}};}function handleEntityNotFound(_0x18079a,_0x59c8f3){return function(_0x595f48){if(!_0x595f48){_0x18079a['sendStatus'](0x194);}return _0x595f48;};}function handleError(_0x404129,_0x16b71d){_0x16b71d=_0x16b71d||0x1f4;return function(_0x5da0d7){logger[_0xb06c('0x2a')](_0x5da0d7['stack']);if(_0x5da0d7[_0xb06c('0x2b')]){delete _0x5da0d7[_0xb06c('0x2b')];}_0x404129[_0xb06c('0x1d')](_0x16b71d)[_0xb06c('0x2c')](_0x5da0d7);};}exports['index']=function(_0x3b4611,_0x3c9607){var _0x2eeed5={},_0x126e24={},_0x353ea8={'count':0x0,'rows':[]};var _0xad6595=_[_0xb06c('0x2d')](db[_0xb06c('0x2e')][_0xb06c('0x2f')],function(_0x89dbd9){return{'name':_0x89dbd9[_0xb06c('0x30')],'type':_0x89dbd9[_0xb06c('0x31')]['key']};});_0x126e24[_0xb06c('0x32')]=_[_0xb06c('0x2d')](_0xad6595,_0xb06c('0x2b'));_0x126e24[_0xb06c('0x33')]=_[_0xb06c('0x34')](_0x3b4611[_0xb06c('0x33')]);_0x126e24['filters']=_[_0xb06c('0x35')](_0x126e24[_0xb06c('0x32')],_0x126e24[_0xb06c('0x33')]);_0x2eeed5[_0xb06c('0x36')]=_[_0xb06c('0x35')](_0x126e24[_0xb06c('0x32')],qs[_0xb06c('0x37')](_0x3b4611[_0xb06c('0x33')][_0xb06c('0x37')]));_0x2eeed5[_0xb06c('0x36')]=_0x2eeed5['attributes']['length']?_0x2eeed5['attributes']:_0x126e24[_0xb06c('0x32')];if(!_0x3b4611[_0xb06c('0x33')][_0xb06c('0x38')]('nolimit')){_0x2eeed5[_0xb06c('0x22')]=qs[_0xb06c('0x22')](_0x3b4611['query'][_0xb06c('0x22')]);_0x2eeed5['offset']=qs[_0xb06c('0x1f')](_0x3b4611[_0xb06c('0x33')][_0xb06c('0x1f')]);}_0x2eeed5[_0xb06c('0x39')]=qs[_0xb06c('0x3a')](_0x3b4611[_0xb06c('0x33')][_0xb06c('0x3a')]);_0x2eeed5[_0xb06c('0x3b')]=qs[_0xb06c('0x3c')](_[_0xb06c('0x3d')](_0x3b4611['query'],_0x126e24[_0xb06c('0x3c')]),_0xad6595);if(_0x3b4611['query'][_0xb06c('0x3e')]){_0x2eeed5[_0xb06c('0x3b')]=_[_0xb06c('0x3f')](_0x2eeed5['where'],{'$or':_[_0xb06c('0x2d')](_0xad6595,function(_0x202c25){if(_0x202c25[_0xb06c('0x31')]!=='VIRTUAL'){var _0x5427a2={};_0x5427a2[_0x202c25[_0xb06c('0x2b')]]={'$like':'%'+_0x3b4611[_0xb06c('0x33')]['filter']+'%'};return _0x5427a2;}})});}_0x2eeed5=_[_0xb06c('0x3f')]({},_0x2eeed5,_0x3b4611['options']);var _0x4db9e4={'where':_0x2eeed5['where']};return db[_0xb06c('0x2e')][_0xb06c('0x21')](_0x4db9e4)[_0xb06c('0x28')](function(_0x164f47){_0x353ea8['count']=_0x164f47;if(_0x3b4611[_0xb06c('0x33')][_0xb06c('0x40')]){_0x2eeed5[_0xb06c('0x41')]=[{'all':!![]}];}return db[_0xb06c('0x2e')][_0xb06c('0x42')](_0x2eeed5);})[_0xb06c('0x28')](function(_0x4d9949){_0x353ea8[_0xb06c('0x43')]=_0x4d9949;return _0x353ea8;})[_0xb06c('0x28')](respondWithFilteredResult(_0x3c9607,_0x2eeed5))[_0xb06c('0x44')](handleError(_0x3c9607,null));};exports[_0xb06c('0x45')]=function(_0x4bea73,_0x126a5f){var _0x1feb87={'raw':!![],'where':{'id':_0x4bea73[_0xb06c('0x46')]['id']}},_0x156800={};_0x156800['model']=_['keys'](db[_0xb06c('0x2e')][_0xb06c('0x2f')]);_0x156800[_0xb06c('0x33')]=_[_0xb06c('0x34')](_0x4bea73[_0xb06c('0x33')]);_0x156800[_0xb06c('0x3c')]=_[_0xb06c('0x35')](_0x156800['model'],_0x156800['query']);_0x1feb87[_0xb06c('0x36')]=_['intersection'](_0x156800['model'],qs[_0xb06c('0x37')](_0x4bea73[_0xb06c('0x33')][_0xb06c('0x37')]));_0x1feb87[_0xb06c('0x36')]=_0x1feb87[_0xb06c('0x36')][_0xb06c('0x47')]?_0x1feb87['attributes']:_0x156800[_0xb06c('0x32')];if(_0x4bea73[_0xb06c('0x33')]['includeAll']){_0x1feb87[_0xb06c('0x41')]=[{'all':!![]}];}_0x1feb87=_[_0xb06c('0x3f')]({},_0x1feb87,_0x4bea73[_0xb06c('0x48')]);return db['MailTransferReport'][_0xb06c('0x49')](_0x1feb87)[_0xb06c('0x28')](handleEntityNotFound(_0x126a5f,null))[_0xb06c('0x28')](respondWithResult(_0x126a5f,null))['catch'](handleError(_0x126a5f,null));};exports[_0xb06c('0x4a')]=function(_0x307b6c,_0x50600a){return db[_0xb06c('0x2e')][_0xb06c('0x4a')](_0x307b6c[_0xb06c('0x4b')],{})[_0xb06c('0x28')](respondWithResult(_0x50600a,0xc9))['catch'](handleError(_0x50600a,null));};exports['update']=function(_0x51aef2,_0x5d744e){if(_0x51aef2[_0xb06c('0x4b')]['id']){delete _0x51aef2[_0xb06c('0x4b')]['id'];}return db[_0xb06c('0x2e')][_0xb06c('0x49')]({'where':{'id':_0x51aef2[_0xb06c('0x46')]['id']}})[_0xb06c('0x28')](handleEntityNotFound(_0x5d744e,null))[_0xb06c('0x28')](saveUpdates(_0x51aef2['body'],null))[_0xb06c('0x28')](respondWithResult(_0x5d744e,null))[_0xb06c('0x44')](handleError(_0x5d744e,null));};exports[_0xb06c('0x29')]=function(_0x572878,_0x3aff4e){return db[_0xb06c('0x2e')][_0xb06c('0x49')]({'where':{'id':_0x572878['params']['id']}})['then'](handleEntityNotFound(_0x3aff4e,null))['then'](removeEntity(_0x3aff4e,null))[_0xb06c('0x44')](handleError(_0x3aff4e,null));};exports[_0xb06c('0x4c')]=function(_0x5dd149,_0x587936){return db[_0xb06c('0x2e')][_0xb06c('0x4c')]()[_0xb06c('0x28')](respondWithResult(_0x587936,null))['catch'](handleError(_0x587936,null));};
\ No newline at end of file
+var _0x8527=['where','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','length','find','catch','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','update','then','destroy','error','stack','index','map','MailTransferReport','rawAttributes','type','name','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','sort','pick','filter'];(function(_0x7f64e9,_0x52565d){var _0x5acded=function(_0x4cbb3f){while(--_0x4cbb3f){_0x7f64e9['push'](_0x7f64e9['shift']());}};_0x5acded(++_0x52565d);}(_0x8527,0xf1));var _0x7852=function(_0x10dc60,_0x2fcce1){_0x10dc60=_0x10dc60-0x0;var _0x47dec5=_0x8527[_0x10dc60];return _0x47dec5;};'use strict';var emlformat=require(_0x7852('0x0'));var rimraf=require(_0x7852('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7852('0x2'));var rp=require(_0x7852('0x3'));var moment=require(_0x7852('0x4'));var BPromise=require(_0x7852('0x5'));var Mustache=require(_0x7852('0x6'));var util=require(_0x7852('0x7'));var path=require(_0x7852('0x8'));var sox=require(_0x7852('0x9'));var csv=require(_0x7852('0xa'));var ejs=require(_0x7852('0xb'));var fs=require('fs');var fs_extra=require(_0x7852('0xc'));var _=require('lodash');var squel=require(_0x7852('0xd'));var crypto=require(_0x7852('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x7852('0xf'));var toCsv=require(_0x7852('0xa'));var querystring=require(_0x7852('0x10'));var Papa=require(_0x7852('0x11'));var Redis=require(_0x7852('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x7852('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7852('0x14'))(_0x7852('0x15'));var utils=require('../../config/utils');var config=require(_0x7852('0x16'));var licenseUtil=require(_0x7852('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x161ede,_0x49804a){_0x49804a=_0x49804a||0xcc;return function(_0x55f2f6){if(_0x55f2f6){return _0x161ede[_0x7852('0x18')](_0x49804a);}return _0x161ede[_0x7852('0x19')](_0x49804a)[_0x7852('0x1a')]();};}function respondWithResult(_0x7e7fd9,_0x43021a){_0x43021a=_0x43021a||0xc8;return function(_0xc6355b){if(_0xc6355b){return _0x7e7fd9[_0x7852('0x19')](_0x43021a)[_0x7852('0x1b')](_0xc6355b);}};}function respondWithFilteredResult(_0x34f0ef,_0x534377){return function(_0x129282){if(_0x129282){var _0x4b3422=typeof _0x534377[_0x7852('0x1c')]===_0x7852('0x1d')&&typeof _0x534377[_0x7852('0x1e')]==='undefined';var _0x540b0d=_0x129282[_0x7852('0x1f')];var _0x13998f=_0x4b3422?0x0:_0x534377['offset'];var _0x550506=_0x4b3422?_0x129282['count']:_0x534377['offset']+_0x534377[_0x7852('0x1e')];var _0x5d5a2c;if(_0x550506>=_0x540b0d){_0x550506=_0x540b0d;_0x5d5a2c=0xc8;}else{_0x5d5a2c=0xce;}_0x34f0ef[_0x7852('0x19')](_0x5d5a2c);return _0x34f0ef['set']('Content-Range',_0x13998f+'-'+_0x550506+'/'+_0x540b0d)['json'](_0x129282);}return null;};}function patchUpdates(_0x1cbfba){return function(_0x24a409){try{jsonpatch[_0x7852('0x20')](_0x24a409,_0x1cbfba,!![]);}catch(_0x35637a){return BPromise[_0x7852('0x21')](_0x35637a);}return _0x24a409[_0x7852('0x22')]();};}function saveUpdates(_0x3e29ca,_0x3434ce){return function(_0x634f4e){if(_0x634f4e){return _0x634f4e[_0x7852('0x23')](_0x3e29ca)[_0x7852('0x24')](function(_0x333cd9){return _0x333cd9;});}return null;};}function removeEntity(_0x4333d4,_0x5b610f){return function(_0x39b4c3){if(_0x39b4c3){return _0x39b4c3[_0x7852('0x25')]()[_0x7852('0x24')](function(){_0x4333d4['status'](0xcc)[_0x7852('0x1a')]();});}};}function handleEntityNotFound(_0x1e2ff7,_0x3fb49a){return function(_0x327920){if(!_0x327920){_0x1e2ff7[_0x7852('0x18')](0x194);}return _0x327920;};}function handleError(_0x1b016b,_0x347054){_0x347054=_0x347054||0x1f4;return function(_0x178240){logger[_0x7852('0x26')](_0x178240[_0x7852('0x27')]);if(_0x178240['name']){delete _0x178240['name'];}_0x1b016b[_0x7852('0x19')](_0x347054)['send'](_0x178240);};}exports[_0x7852('0x28')]=function(_0x113474,_0x340c2b){var _0x2484ee={},_0xbd4305={},_0x3fa836={'count':0x0,'rows':[]};var _0x893c90=_[_0x7852('0x29')](db[_0x7852('0x2a')][_0x7852('0x2b')],function(_0x192916){return{'name':_0x192916['fieldName'],'type':_0x192916[_0x7852('0x2c')]['key']};});_0xbd4305['model']=_[_0x7852('0x29')](_0x893c90,_0x7852('0x2d'));_0xbd4305[_0x7852('0x2e')]=_[_0x7852('0x2f')](_0x113474['query']);_0xbd4305[_0x7852('0x30')]=_[_0x7852('0x31')](_0xbd4305['model'],_0xbd4305[_0x7852('0x2e')]);_0x2484ee[_0x7852('0x32')]=_[_0x7852('0x31')](_0xbd4305[_0x7852('0x33')],qs[_0x7852('0x34')](_0x113474[_0x7852('0x2e')][_0x7852('0x34')]));_0x2484ee[_0x7852('0x32')]=_0x2484ee['attributes']['length']?_0x2484ee[_0x7852('0x32')]:_0xbd4305[_0x7852('0x33')];if(!_0x113474[_0x7852('0x2e')][_0x7852('0x35')](_0x7852('0x36'))){_0x2484ee[_0x7852('0x1e')]=qs[_0x7852('0x1e')](_0x113474[_0x7852('0x2e')]['limit']);_0x2484ee[_0x7852('0x1c')]=qs[_0x7852('0x1c')](_0x113474[_0x7852('0x2e')][_0x7852('0x1c')]);}_0x2484ee[_0x7852('0x37')]=qs[_0x7852('0x38')](_0x113474[_0x7852('0x2e')][_0x7852('0x38')]);_0x2484ee['where']=qs[_0x7852('0x30')](_[_0x7852('0x39')](_0x113474['query'],_0xbd4305[_0x7852('0x30')]),_0x893c90);if(_0x113474[_0x7852('0x2e')][_0x7852('0x3a')]){_0x2484ee[_0x7852('0x3b')]=_[_0x7852('0x3c')](_0x2484ee[_0x7852('0x3b')],{'$or':_[_0x7852('0x29')](_0x893c90,function(_0x58d3e5){if(_0x58d3e5[_0x7852('0x2c')]!==_0x7852('0x3d')){var _0xc59018={};_0xc59018[_0x58d3e5[_0x7852('0x2d')]]={'$like':'%'+_0x113474[_0x7852('0x2e')][_0x7852('0x3a')]+'%'};return _0xc59018;}})});}_0x2484ee=_['merge']({},_0x2484ee,_0x113474[_0x7852('0x3e')]);var _0x206b3c={'where':_0x2484ee[_0x7852('0x3b')]};return db['MailTransferReport'][_0x7852('0x1f')](_0x206b3c)[_0x7852('0x24')](function(_0x3c3d99){_0x3fa836[_0x7852('0x1f')]=_0x3c3d99;if(_0x113474['query'][_0x7852('0x3f')]){_0x2484ee[_0x7852('0x40')]=[{'all':!![]}];}return db[_0x7852('0x2a')][_0x7852('0x41')](_0x2484ee);})['then'](function(_0xbe3fb){_0x3fa836[_0x7852('0x42')]=_0xbe3fb;return _0x3fa836;})[_0x7852('0x24')](respondWithFilteredResult(_0x340c2b,_0x2484ee))['catch'](handleError(_0x340c2b,null));};exports[_0x7852('0x43')]=function(_0x2fc580,_0x57de7b){var _0x39f743={'raw':!![],'where':{'id':_0x2fc580[_0x7852('0x44')]['id']}},_0x231c65={};_0x231c65['model']=_[_0x7852('0x2f')](db['MailTransferReport'][_0x7852('0x2b')]);_0x231c65[_0x7852('0x2e')]=_[_0x7852('0x2f')](_0x2fc580[_0x7852('0x2e')]);_0x231c65[_0x7852('0x30')]=_[_0x7852('0x31')](_0x231c65[_0x7852('0x33')],_0x231c65['query']);_0x39f743[_0x7852('0x32')]=_['intersection'](_0x231c65[_0x7852('0x33')],qs['fields'](_0x2fc580[_0x7852('0x2e')][_0x7852('0x34')]));_0x39f743[_0x7852('0x32')]=_0x39f743['attributes'][_0x7852('0x45')]?_0x39f743[_0x7852('0x32')]:_0x231c65[_0x7852('0x33')];if(_0x2fc580['query'][_0x7852('0x3f')]){_0x39f743[_0x7852('0x40')]=[{'all':!![]}];}_0x39f743=_[_0x7852('0x3c')]({},_0x39f743,_0x2fc580[_0x7852('0x3e')]);return db[_0x7852('0x2a')][_0x7852('0x46')](_0x39f743)[_0x7852('0x24')](handleEntityNotFound(_0x57de7b,null))[_0x7852('0x24')](respondWithResult(_0x57de7b,null))[_0x7852('0x47')](handleError(_0x57de7b,null));};exports[_0x7852('0x48')]=function(_0xc05cfc,_0x1c830f){return db[_0x7852('0x2a')][_0x7852('0x48')](_0xc05cfc[_0x7852('0x49')],{})[_0x7852('0x24')](respondWithResult(_0x1c830f,0xc9))[_0x7852('0x47')](handleError(_0x1c830f,null));};exports[_0x7852('0x23')]=function(_0x2ab23b,_0x149c27){if(_0x2ab23b[_0x7852('0x49')]['id']){delete _0x2ab23b['body']['id'];}return db[_0x7852('0x2a')][_0x7852('0x46')]({'where':{'id':_0x2ab23b[_0x7852('0x44')]['id']}})[_0x7852('0x24')](handleEntityNotFound(_0x149c27,null))['then'](saveUpdates(_0x2ab23b[_0x7852('0x49')],null))[_0x7852('0x24')](respondWithResult(_0x149c27,null))['catch'](handleError(_0x149c27,null));};exports['destroy']=function(_0xedf8c2,_0x246d62){return db['MailTransferReport'][_0x7852('0x46')]({'where':{'id':_0xedf8c2[_0x7852('0x44')]['id']}})[_0x7852('0x24')](handleEntityNotFound(_0x246d62,null))[_0x7852('0x24')](removeEntity(_0x246d62,null))['catch'](handleError(_0x246d62,null));};exports[_0x7852('0x4a')]=function(_0x504e0a,_0x733a34){return db[_0x7852('0x2a')][_0x7852('0x4a')]()[_0x7852('0x24')](respondWithResult(_0x733a34,null))['catch'](handleError(_0x733a34,null));};
\ No newline at end of file
index b32acdf..72de285 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61a1=['uniqueid','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer'];(function(_0x3c07d7,_0x5356a0){var _0x174f71=function(_0x4f4811){while(--_0x4f4811){_0x3c07d7['push'](_0x3c07d7['shift']());}};_0x174f71(++_0x5356a0);}(_0x61a1,0x127));var _0x161a=function(_0x1e1965,_0x55785c){_0x1e1965=_0x1e1965-0x0;var _0x1a2e96=_0x61a1[_0x1e1965];return _0x1a2e96;};'use strict';var _=require(_0x161a('0x0'));var util=require(_0x161a('0x1'));var logger=require(_0x161a('0x2'))(_0x161a('0x3'));var moment=require(_0x161a('0x4'));var BPromise=require('bluebird');var rp=require(_0x161a('0x5'));var fs=require('fs');var path=require(_0x161a('0x6'));var rimraf=require('rimraf');var config=require(_0x161a('0x7'));var attributes=require(_0x161a('0x8'));module[_0x161a('0x9')]=function(_0x1442cf,_0x1bb0ac){return _0x1442cf[_0x161a('0xa')](_0x161a('0xb'),attributes,{'tableName':_0x161a('0xc'),'paranoid':![],'indexes':[{'name':_0x161a('0xd'),'fields':[_0x161a('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3eca=['../../config/environment','./mailTransferReport.attributes','exports','define','MailTransferReport','report_mail_transfer','uniqueid','lodash','util','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x3eca,0x17e));var _0xa3ec=function(_0x13e724,_0x296739){_0x13e724=_0x13e724-0x0;var _0x334a44=_0x3eca[_0x13e724];return _0x334a44;};'use strict';var _=require(_0xa3ec('0x0'));var util=require(_0xa3ec('0x1'));var logger=require('../../config/logger')(_0xa3ec('0x2'));var moment=require(_0xa3ec('0x3'));var BPromise=require(_0xa3ec('0x4'));var rp=require(_0xa3ec('0x5'));var fs=require('fs');var path=require(_0xa3ec('0x6'));var rimraf=require(_0xa3ec('0x7'));var config=require(_0xa3ec('0x8'));var attributes=require(_0xa3ec('0x9'));module[_0xa3ec('0xa')]=function(_0x1a98b7,_0x7a01fa){return _0x1a98b7[_0xa3ec('0xb')](_0xa3ec('0xc'),attributes,{'tableName':_0xa3ec('0xd'),'paranoid':![],'indexes':[{'name':_0xa3ec('0xe'),'fields':[_0xa3ec('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index f85a70d..b4e1d82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf943=['catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','MailTransferReport,\x20%s,\x20%s','request\x20sent','result'];(function(_0x2f9467,_0x40576f){var _0x39894c=function(_0x13e344){while(--_0x13e344){_0x2f9467['push'](_0x2f9467['shift']());}};_0x39894c(++_0x40576f);}(_0xf943,0x115));var _0x3f94=function(_0x3cd069,_0x355f63){_0x3cd069=_0x3cd069-0x0;var _0x1d44e4=_0xf943[_0x3cd069];return _0x1d44e4;};'use strict';var _=require(_0x3f94('0x0'));var util=require(_0x3f94('0x1'));var moment=require('moment');var BPromise=require(_0x3f94('0x2'));var rs=require(_0x3f94('0x3'));var fs=require('fs');var Redis=require(_0x3f94('0x4'));var db=require(_0x3f94('0x5'))['db'];var utils=require(_0x3f94('0x6'));var logger=require(_0x3f94('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x3f94('0x8'));var client=jayson[_0x3f94('0x9')][_0x3f94('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4cc496,_0xe763e4,_0x475b9a){return new BPromise(function(_0x537b1b,_0x5ee345){return client[_0x3f94('0xb')](_0x4cc496,_0x475b9a)[_0x3f94('0xc')](function(_0x4a1dc8){logger[_0x3f94('0xd')]('MailTransferReport,\x20%s,\x20%s',_0xe763e4,'request\x20sent');logger[_0x3f94('0xe')](_0x3f94('0xf'),_0xe763e4,'request\x20sent',JSON['stringify'](_0x4a1dc8));if(_0x4a1dc8[_0x3f94('0x10')]){if(_0x4a1dc8[_0x3f94('0x10')][_0x3f94('0x11')]===0x1f4){logger['error']('MailTransferReport,\x20%s,\x20%s',_0xe763e4,_0x4a1dc8[_0x3f94('0x10')][_0x3f94('0x12')]);return _0x5ee345(_0x4a1dc8[_0x3f94('0x10')][_0x3f94('0x12')]);}logger[_0x3f94('0x10')](_0x3f94('0x13'),_0xe763e4,_0x4a1dc8['error']['message']);return _0x537b1b(_0x4a1dc8['error'][_0x3f94('0x12')]);}else{logger[_0x3f94('0xd')](_0x3f94('0x13'),_0xe763e4,_0x3f94('0x14'));_0x537b1b(_0x4a1dc8[_0x3f94('0x15')][_0x3f94('0x12')]);}})[_0x3f94('0x16')](function(_0x25db6e){logger[_0x3f94('0x10')](_0x3f94('0x13'),_0xe763e4,_0x25db6e);_0x5ee345(_0x25db6e);});});}
\ No newline at end of file
+var _0xdc97=['stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/logger','../../config/environment','jayson/promise','client','http','request','MailTransferReport,\x20%s,\x20%s','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s'];(function(_0x4e6514,_0x53da06){var _0x18d310=function(_0x507793){while(--_0x507793){_0x4e6514['push'](_0x4e6514['shift']());}};_0x18d310(++_0x53da06);}(_0xdc97,0x195));var _0x7dc9=function(_0x5256a0,_0x46a453){_0x5256a0=_0x5256a0-0x0;var _0x544cd3=_0xdc97[_0x5256a0];return _0x544cd3;};'use strict';var _=require(_0x7dc9('0x0'));var util=require(_0x7dc9('0x1'));var moment=require(_0x7dc9('0x2'));var BPromise=require(_0x7dc9('0x3'));var rs=require(_0x7dc9('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x7dc9('0x5'))('rpc');var config=require(_0x7dc9('0x6'));var jayson=require(_0x7dc9('0x7'));var client=jayson[_0x7dc9('0x8')][_0x7dc9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x21070d,_0x483029,_0x125684){return new BPromise(function(_0x178b15,_0x182d85){return client[_0x7dc9('0xa')](_0x21070d,_0x125684)['then'](function(_0x2ac67c){logger['info'](_0x7dc9('0xb'),_0x483029,_0x7dc9('0xc'));logger[_0x7dc9('0xd')](_0x7dc9('0xe'),_0x483029,_0x7dc9('0xc'),JSON[_0x7dc9('0xf')](_0x2ac67c));if(_0x2ac67c['error']){if(_0x2ac67c['error']['code']===0x1f4){logger['error']('MailTransferReport,\x20%s,\x20%s',_0x483029,_0x2ac67c[_0x7dc9('0x10')][_0x7dc9('0x11')]);return _0x182d85(_0x2ac67c['error'][_0x7dc9('0x11')]);}logger[_0x7dc9('0x10')](_0x7dc9('0xb'),_0x483029,_0x2ac67c[_0x7dc9('0x10')][_0x7dc9('0x11')]);return _0x178b15(_0x2ac67c[_0x7dc9('0x10')][_0x7dc9('0x11')]);}else{logger['info'](_0x7dc9('0xb'),_0x483029,_0x7dc9('0xc'));_0x178b15(_0x2ac67c[_0x7dc9('0x12')]['message']);}})[_0x7dc9('0x13')](function(_0x4a338f){logger[_0x7dc9('0x10')]('MailTransferReport,\x20%s,\x20%s',_0x483029,_0x4a338f);_0x182d85(_0x4a338f);});});}
\ No newline at end of file
index 259e059..8a8d22f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x769a=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','isAuthenticated','index','/describe','describe','show','post','/:id','exports','multer','util','path','express','Router'];(function(_0x4a7fc8,_0x554109){var _0x1dab17=function(_0x1bfffa){while(--_0x1bfffa){_0x4a7fc8['push'](_0x4a7fc8['shift']());}};_0x1dab17(++_0x554109);}(_0x769a,0x118));var _0xa769=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x769a[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0xa769('0x0'));var util=require(_0xa769('0x1'));var path=require(_0xa769('0x2'));var timeout=require('connect-timeout');var express=require(_0xa769('0x3'));var router=express[_0xa769('0x4')]();var fs_extra=require(_0xa769('0x5'));var auth=require(_0xa769('0x6'));var interaction=require(_0xa769('0x7'));var config=require(_0xa769('0x8'));var controller=require(_0xa769('0x9'));router[_0xa769('0xa')]('/',auth[_0xa769('0xb')](),controller[_0xa769('0xc')]);router[_0xa769('0xa')](_0xa769('0xd'),auth[_0xa769('0xb')](),controller[_0xa769('0xe')]);router[_0xa769('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xa769('0xf')]);router[_0xa769('0x10')]('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth[_0xa769('0xb')](),controller['update']);router['delete'](_0xa769('0x11'),auth[_0xa769('0xb')](),controller['destroy']);module[_0xa769('0x12')]=router;
\ No newline at end of file
+var _0xd30a=['put','update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./memberReport.controller','get','isAuthenticated','/describe','/:id','show','post','create'];(function(_0x5c9673,_0x21592e){var _0x40071d=function(_0x411feb){while(--_0x411feb){_0x5c9673['push'](_0x5c9673['shift']());}};_0x40071d(++_0x21592e);}(_0xd30a,0x159));var _0xad30=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xd30a[_0x46aff0];return _0x9d78cf;};'use strict';var multer=require(_0xad30('0x0'));var util=require('util');var path=require(_0xad30('0x1'));var timeout=require(_0xad30('0x2'));var express=require(_0xad30('0x3'));var router=express['Router']();var fs_extra=require(_0xad30('0x4'));var auth=require(_0xad30('0x5'));var interaction=require(_0xad30('0x6'));var config=require('../../config/environment');var controller=require(_0xad30('0x7'));router[_0xad30('0x8')]('/',auth[_0xad30('0x9')](),controller['index']);router[_0xad30('0x8')](_0xad30('0xa'),auth[_0xad30('0x9')](),controller['describe']);router[_0xad30('0x8')](_0xad30('0xb'),auth['isAuthenticated'](),controller[_0xad30('0xc')]);router[_0xad30('0xd')]('/',auth['isAuthenticated'](),controller[_0xad30('0xe')]);router[_0xad30('0xf')](_0xad30('0xb'),auth[_0xad30('0x9')](),controller[_0xad30('0x10')]);router[_0xad30('0x11')](_0xad30('0xb'),auth['isAuthenticated'](),controller[_0xad30('0x12')]);module[_0xad30('0x13')]=router;
\ No newline at end of file
index 7174831..f94d180 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd41c=['exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','talk:[queue]','sequelize','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','getDataValue','enterAt','seconds','setDataValue'];(function(_0x392696,_0x5b95ec){var _0x699b57=function(_0x20aaa4){while(--_0x20aaa4){_0x392696['push'](_0x392696['shift']());}};_0x699b57(++_0x5b95ec);}(_0xd41c,0x138));var _0xcd41=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd41c[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xcd41('0x0'));var moment=require('moment');module[_0xcd41('0x1')]={'channel':{'type':Sequelize[_0xcd41('0x2')]},'membername':{'type':Sequelize[_0xcd41('0x2')]},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xcd41('0x2')],'defaultValue':_0xcd41('0x3'),'comment':_0xcd41('0x4')},'duration':{'type':Sequelize[_0xcd41('0x5')]},'enterAt':{'type':Sequelize[_0xcd41('0x6')]},'exitAt':{'type':Sequelize[_0xcd41('0x6')],'set':function(_0x2de874){var _0x2bff2=moment(_0x2de874);var _0x14033b=moment(this[_0xcd41('0x7')](_0xcd41('0x8')));var _0x137964=_0x2bff2['diff'](_0x14033b,_0xcd41('0x9'));this[_0xcd41('0xa')](_0xcd41('0xb'),_0x2de874);this[_0xcd41('0xa')](_0xcd41('0xc'),_0x137964>=0x0?_0x137964:null);}},'data1':{'type':Sequelize[_0xcd41('0x2')],'comment':_0xcd41('0xd')},'data2':{'type':Sequelize[_0xcd41('0x2')],'comment':_0xcd41('0xe')},'data3':{'type':Sequelize[_0xcd41('0x2')],'comment':_0xcd41('0xf')},'data4':{'type':Sequelize[_0xcd41('0x2')],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize['STRING'],'comment':_0xcd41('0x10')},'role':{'type':Sequelize[_0xcd41('0x2')]},'internal':{'type':Sequelize[_0xcd41('0x5')]},'uniqueid':{'type':Sequelize[_0xcd41('0x2')]}};
\ No newline at end of file
+var _0x86ba=['getDataValue','enterAt','diff','seconds','exitAt','setDataValue','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[destination]','sequelize','moment','exports','STRING','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE'];(function(_0x3bd41b,_0x4f0f73){var _0x4538a4=function(_0x4c12ae){while(--_0x4c12ae){_0x3bd41b['push'](_0x3bd41b['shift']());}};_0x4538a4(++_0x4f0f73);}(_0x86ba,0xda));var _0xa86b=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x86ba[_0x17d9e3];return _0x14192d;};'use strict';var Sequelize=require(_0xa86b('0x0'));var moment=require(_0xa86b('0x1'));module[_0xa86b('0x2')]={'channel':{'type':Sequelize[_0xa86b('0x3')]},'membername':{'type':Sequelize[_0xa86b('0x3')]},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xa86b('0x3')],'defaultValue':'DEFAULT\x20PAUSE','comment':_0xa86b('0x4')},'duration':{'type':Sequelize[_0xa86b('0x5')]},'enterAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0xa86b('0x6')],'set':function(_0x5cc7a0){var _0x1194d8=moment(_0x5cc7a0);var _0x1661be=moment(this[_0xa86b('0x7')](_0xa86b('0x8')));var _0x18e780=_0x1194d8[_0xa86b('0x9')](_0x1661be,_0xa86b('0xa'));this['setDataValue'](_0xa86b('0xb'),_0x5cc7a0);this[_0xa86b('0xc')]('duration',_0x18e780>=0x0?_0x18e780:null);}},'data1':{'type':Sequelize['STRING'],'comment':_0xa86b('0xd')},'data2':{'type':Sequelize[_0xa86b('0x3')],'comment':'talk:[start]'},'data3':{'type':Sequelize[_0xa86b('0x3')],'comment':_0xa86b('0xe')},'data4':{'type':Sequelize[_0xa86b('0x3')],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize['STRING'],'comment':'talk:[queue]'},'role':{'type':Sequelize[_0xa86b('0x3')]},'internal':{'type':Sequelize[_0xa86b('0x5')]},'uniqueid':{'type':Sequelize[_0xa86b('0x3')]}};
\ No newline at end of file
index 41cacc8..a71f5dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['merge','filter','includeAll','include','findAll','rawAttributes','options','create','body','find','params','catch','destroy','describe','eml-format','rimraf','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','reject','update','then','end','sendStatus','error','stack','name','send','index','map','MemberReport','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0x55ca,0x126));var _0xa55c=function(_0x5c78d9,_0x2736c7){_0x5c78d9=_0x5c78d9-0x0;var _0x69ae1f=_0x55ca[_0x5c78d9];return _0x69ae1f;};'use strict';var emlformat=require(_0xa55c('0x0'));var rimraf=require(_0xa55c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xa55c('0x2'));var BPromise=require(_0xa55c('0x3'));var Mustache=require('mustache');var util=require(_0xa55c('0x4'));var path=require(_0xa55c('0x5'));var sox=require(_0xa55c('0x6'));var csv=require(_0xa55c('0x7'));var ejs=require(_0xa55c('0x8'));var fs=require('fs');var fs_extra=require(_0xa55c('0x9'));var _=require(_0xa55c('0xa'));var squel=require('squel');var crypto=require(_0xa55c('0xb'));var jsforce=require(_0xa55c('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa55c('0x7'));var querystring=require(_0xa55c('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa55c('0xe'));var qs=require(_0xa55c('0xf'));var as=require(_0xa55c('0x10'));var hardwareService=require(_0xa55c('0x11'));var logger=require(_0xa55c('0x12'))(_0xa55c('0x13'));var utils=require(_0xa55c('0x14'));var config=require(_0xa55c('0x15'));var licenseUtil=require(_0xa55c('0x16'));var db=require(_0xa55c('0x17'))['db'];function respondWithStatusCode(_0x5d47ff,_0x59d84a){_0x59d84a=_0x59d84a||0xcc;return function(_0x2a35be){if(_0x2a35be){return _0x5d47ff['sendStatus'](_0x59d84a);}return _0x5d47ff['status'](_0x59d84a)['end']();};}function respondWithResult(_0x18ee85,_0x3930e4){_0x3930e4=_0x3930e4||0xc8;return function(_0x462cd6){if(_0x462cd6){return _0x18ee85[_0xa55c('0x18')](_0x3930e4)[_0xa55c('0x19')](_0x462cd6);}};}function respondWithFilteredResult(_0x247e77,_0x4e0b2f){return function(_0x3ccf65){if(_0x3ccf65){var _0x3dcf4f=typeof _0x4e0b2f[_0xa55c('0x1a')]===_0xa55c('0x1b')&&typeof _0x4e0b2f[_0xa55c('0x1c')]===_0xa55c('0x1b');var _0x51590e=_0x3ccf65[_0xa55c('0x1d')];var _0x24783b=_0x3dcf4f?0x0:_0x4e0b2f['offset'];var _0x3d4c9e=_0x3dcf4f?_0x3ccf65[_0xa55c('0x1d')]:_0x4e0b2f[_0xa55c('0x1a')]+_0x4e0b2f[_0xa55c('0x1c')];var _0x23a1ae;if(_0x3d4c9e>=_0x51590e){_0x3d4c9e=_0x51590e;_0x23a1ae=0xc8;}else{_0x23a1ae=0xce;}_0x247e77[_0xa55c('0x18')](_0x23a1ae);return _0x247e77['set']('Content-Range',_0x24783b+'-'+_0x3d4c9e+'/'+_0x51590e)[_0xa55c('0x19')](_0x3ccf65);}return null;};}function patchUpdates(_0x3776ac){return function(_0xade4c4){try{jsonpatch['apply'](_0xade4c4,_0x3776ac,!![]);}catch(_0x383d92){return BPromise[_0xa55c('0x1e')](_0x383d92);}return _0xade4c4['save']();};}function saveUpdates(_0x187a87,_0x133096){return function(_0x940f28){if(_0x940f28){return _0x940f28[_0xa55c('0x1f')](_0x187a87)[_0xa55c('0x20')](function(_0x49ed04){return _0x49ed04;});}return null;};}function removeEntity(_0x1fc828,_0x504c24){return function(_0x5ba836){if(_0x5ba836){return _0x5ba836['destroy']()[_0xa55c('0x20')](function(){_0x1fc828['status'](0xcc)[_0xa55c('0x21')]();});}};}function handleEntityNotFound(_0x190757,_0x3f64de){return function(_0xf0e574){if(!_0xf0e574){_0x190757[_0xa55c('0x22')](0x194);}return _0xf0e574;};}function handleError(_0x170ba4,_0x1da633){_0x1da633=_0x1da633||0x1f4;return function(_0x11e7f7){logger[_0xa55c('0x23')](_0x11e7f7[_0xa55c('0x24')]);if(_0x11e7f7[_0xa55c('0x25')]){delete _0x11e7f7['name'];}_0x170ba4[_0xa55c('0x18')](_0x1da633)[_0xa55c('0x26')](_0x11e7f7);};}exports[_0xa55c('0x27')]=function(_0x906caa,_0x5d940d){var _0x1377b0={},_0x22f6b6={},_0x1b8388={'count':0x0,'rows':[]};var _0x201941=_[_0xa55c('0x28')](db[_0xa55c('0x29')]['rawAttributes'],function(_0x23e698){return{'name':_0x23e698['fieldName'],'type':_0x23e698[_0xa55c('0x2a')][_0xa55c('0x2b')]};});_0x22f6b6[_0xa55c('0x2c')]=_[_0xa55c('0x28')](_0x201941,'name');_0x22f6b6[_0xa55c('0x2d')]=_[_0xa55c('0x2e')](_0x906caa[_0xa55c('0x2d')]);_0x22f6b6[_0xa55c('0x2f')]=_[_0xa55c('0x30')](_0x22f6b6[_0xa55c('0x2c')],_0x22f6b6[_0xa55c('0x2d')]);_0x1377b0[_0xa55c('0x31')]=_[_0xa55c('0x30')](_0x22f6b6[_0xa55c('0x2c')],qs[_0xa55c('0x32')](_0x906caa['query']['fields']));_0x1377b0[_0xa55c('0x31')]=_0x1377b0[_0xa55c('0x31')]['length']?_0x1377b0[_0xa55c('0x31')]:_0x22f6b6[_0xa55c('0x2c')];if(!_0x906caa[_0xa55c('0x2d')][_0xa55c('0x33')](_0xa55c('0x34'))){_0x1377b0[_0xa55c('0x1c')]=qs[_0xa55c('0x1c')](_0x906caa[_0xa55c('0x2d')][_0xa55c('0x1c')]);_0x1377b0['offset']=qs['offset'](_0x906caa['query'][_0xa55c('0x1a')]);}_0x1377b0[_0xa55c('0x35')]=qs[_0xa55c('0x36')](_0x906caa['query'][_0xa55c('0x36')]);_0x1377b0['where']=qs[_0xa55c('0x2f')](_['pick'](_0x906caa[_0xa55c('0x2d')],_0x22f6b6[_0xa55c('0x2f')]),_0x201941);if(_0x906caa[_0xa55c('0x2d')]['filter']){_0x1377b0[_0xa55c('0x37')]=_[_0xa55c('0x38')](_0x1377b0['where'],{'$or':_[_0xa55c('0x28')](_0x201941,function(_0x194e78){if(_0x194e78['type']!=='VIRTUAL'){var _0x235f6b={};_0x235f6b[_0x194e78['name']]={'$like':'%'+_0x906caa[_0xa55c('0x2d')][_0xa55c('0x39')]+'%'};return _0x235f6b;}})});}_0x1377b0=_['merge']({},_0x1377b0,_0x906caa['options']);var _0x5e50b6={'where':_0x1377b0['where']};return db[_0xa55c('0x29')][_0xa55c('0x1d')](_0x5e50b6)[_0xa55c('0x20')](function(_0x99c4f8){_0x1b8388[_0xa55c('0x1d')]=_0x99c4f8;if(_0x906caa['query'][_0xa55c('0x3a')]){_0x1377b0[_0xa55c('0x3b')]=[{'all':!![]}];}return db[_0xa55c('0x29')][_0xa55c('0x3c')](_0x1377b0);})[_0xa55c('0x20')](function(_0x23cef5){_0x1b8388['rows']=_0x23cef5;return _0x1b8388;})[_0xa55c('0x20')](respondWithFilteredResult(_0x5d940d,_0x1377b0))['catch'](handleError(_0x5d940d,null));};exports['show']=function(_0x404e7f,_0x1f63d8){var _0x496920={'raw':!![],'where':{'id':_0x404e7f['params']['id']}},_0x2bd98b={};_0x2bd98b['model']=_[_0xa55c('0x2e')](db[_0xa55c('0x29')][_0xa55c('0x3d')]);_0x2bd98b['query']=_[_0xa55c('0x2e')](_0x404e7f[_0xa55c('0x2d')]);_0x2bd98b['filters']=_[_0xa55c('0x30')](_0x2bd98b['model'],_0x2bd98b[_0xa55c('0x2d')]);_0x496920[_0xa55c('0x31')]=_['intersection'](_0x2bd98b[_0xa55c('0x2c')],qs[_0xa55c('0x32')](_0x404e7f['query'][_0xa55c('0x32')]));_0x496920[_0xa55c('0x31')]=_0x496920[_0xa55c('0x31')]['length']?_0x496920[_0xa55c('0x31')]:_0x2bd98b['model'];if(_0x404e7f[_0xa55c('0x2d')][_0xa55c('0x3a')]){_0x496920[_0xa55c('0x3b')]=[{'all':!![]}];}_0x496920=_['merge']({},_0x496920,_0x404e7f[_0xa55c('0x3e')]);return db[_0xa55c('0x29')]['find'](_0x496920)[_0xa55c('0x20')](handleEntityNotFound(_0x1f63d8,null))[_0xa55c('0x20')](respondWithResult(_0x1f63d8,null))['catch'](handleError(_0x1f63d8,null));};exports[_0xa55c('0x3f')]=function(_0xd3fe78,_0x52f9a7){return db[_0xa55c('0x29')][_0xa55c('0x3f')](_0xd3fe78[_0xa55c('0x40')],{})[_0xa55c('0x20')](respondWithResult(_0x52f9a7,0xc9))['catch'](handleError(_0x52f9a7,null));};exports[_0xa55c('0x1f')]=function(_0x58a7ea,_0x2157d6){if(_0x58a7ea[_0xa55c('0x40')]['id']){delete _0x58a7ea[_0xa55c('0x40')]['id'];}return db['MemberReport'][_0xa55c('0x41')]({'where':{'id':_0x58a7ea[_0xa55c('0x42')]['id']}})['then'](handleEntityNotFound(_0x2157d6,null))[_0xa55c('0x20')](saveUpdates(_0x58a7ea[_0xa55c('0x40')],null))[_0xa55c('0x20')](respondWithResult(_0x2157d6,null))[_0xa55c('0x43')](handleError(_0x2157d6,null));};exports[_0xa55c('0x44')]=function(_0x1c84d9,_0x1e1293){return db[_0xa55c('0x29')][_0xa55c('0x41')]({'where':{'id':_0x1c84d9[_0xa55c('0x42')]['id']}})['then'](handleEntityNotFound(_0x1e1293,null))[_0xa55c('0x20')](removeEntity(_0x1e1293,null))[_0xa55c('0x43')](handleError(_0x1e1293,null));};exports[_0xa55c('0x45')]=function(_0x4f73b6,_0x4c3095){return db[_0xa55c('0x29')]['describe']()[_0xa55c('0x20')](respondWithResult(_0x4c3095,null))['catch'](handleError(_0x4c3095,null));};
\ No newline at end of file
+var _0xedd9=['keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','params','find','create','body','update','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','then','end','error','stack','send','index','map','MemberReport','rawAttributes','fieldName','type','key','model','name','query'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0xedd9,0xfc));var _0x9edd=function(_0x303d8c,_0x10cb0f){_0x303d8c=_0x303d8c-0x0;var _0x43b782=_0xedd9[_0x303d8c];return _0x43b782;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9edd('0x0'));var zipdir=require(_0x9edd('0x1'));var jsonpatch=require(_0x9edd('0x2'));var rp=require(_0x9edd('0x3'));var moment=require(_0x9edd('0x4'));var BPromise=require(_0x9edd('0x5'));var Mustache=require(_0x9edd('0x6'));var util=require(_0x9edd('0x7'));var path=require('path');var sox=require(_0x9edd('0x8'));var csv=require(_0x9edd('0x9'));var ejs=require(_0x9edd('0xa'));var fs=require('fs');var fs_extra=require(_0x9edd('0xb'));var _=require('lodash');var squel=require(_0x9edd('0xc'));var crypto=require('crypto');var jsforce=require(_0x9edd('0xd'));var deskjs=require(_0x9edd('0xe'));var toCsv=require(_0x9edd('0x9'));var querystring=require(_0x9edd('0xf'));var Papa=require('papaparse');var Redis=require(_0x9edd('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x9edd('0x11'));var as=require(_0x9edd('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9edd('0x13'))(_0x9edd('0x14'));var utils=require('../../config/utils');var config=require(_0x9edd('0x15'));var licenseUtil=require(_0x9edd('0x16'));var db=require(_0x9edd('0x17'))['db'];function respondWithStatusCode(_0xfd544a,_0x287ddd){_0x287ddd=_0x287ddd||0xcc;return function(_0x3a7b84){if(_0x3a7b84){return _0xfd544a[_0x9edd('0x18')](_0x287ddd);}return _0xfd544a[_0x9edd('0x19')](_0x287ddd)['end']();};}function respondWithResult(_0x176bfa,_0x44fc7c){_0x44fc7c=_0x44fc7c||0xc8;return function(_0x891832){if(_0x891832){return _0x176bfa[_0x9edd('0x19')](_0x44fc7c)[_0x9edd('0x1a')](_0x891832);}};}function respondWithFilteredResult(_0x338f3c,_0x1042aa){return function(_0x75a4ab){if(_0x75a4ab){var _0x4ea60f=typeof _0x1042aa[_0x9edd('0x1b')]===_0x9edd('0x1c')&&typeof _0x1042aa[_0x9edd('0x1d')]==='undefined';var _0x1b54c0=_0x75a4ab[_0x9edd('0x1e')];var _0x40ba32=_0x4ea60f?0x0:_0x1042aa['offset'];var _0x43dc70=_0x4ea60f?_0x75a4ab['count']:_0x1042aa[_0x9edd('0x1b')]+_0x1042aa[_0x9edd('0x1d')];var _0x4bdb88;if(_0x43dc70>=_0x1b54c0){_0x43dc70=_0x1b54c0;_0x4bdb88=0xc8;}else{_0x4bdb88=0xce;}_0x338f3c['status'](_0x4bdb88);return _0x338f3c[_0x9edd('0x1f')]('Content-Range',_0x40ba32+'-'+_0x43dc70+'/'+_0x1b54c0)[_0x9edd('0x1a')](_0x75a4ab);}return null;};}function patchUpdates(_0x54a03f){return function(_0x535f37){try{jsonpatch[_0x9edd('0x20')](_0x535f37,_0x54a03f,!![]);}catch(_0x1c46a8){return BPromise['reject'](_0x1c46a8);}return _0x535f37['save']();};}function saveUpdates(_0x341d67,_0x186186){return function(_0x477878){if(_0x477878){return _0x477878['update'](_0x341d67)[_0x9edd('0x21')](function(_0x1dca43){return _0x1dca43;});}return null;};}function removeEntity(_0x44a6c1,_0x2ca65f){return function(_0x339a0d){if(_0x339a0d){return _0x339a0d['destroy']()[_0x9edd('0x21')](function(){_0x44a6c1[_0x9edd('0x19')](0xcc)[_0x9edd('0x22')]();});}};}function handleEntityNotFound(_0x2f9f86,_0x310a4d){return function(_0x4d507f){if(!_0x4d507f){_0x2f9f86['sendStatus'](0x194);}return _0x4d507f;};}function handleError(_0x3276ee,_0xfeca7b){_0xfeca7b=_0xfeca7b||0x1f4;return function(_0x8d67aa){logger[_0x9edd('0x23')](_0x8d67aa[_0x9edd('0x24')]);if(_0x8d67aa['name']){delete _0x8d67aa['name'];}_0x3276ee[_0x9edd('0x19')](_0xfeca7b)[_0x9edd('0x25')](_0x8d67aa);};}exports[_0x9edd('0x26')]=function(_0x52746a,_0x238b22){var _0x28cfae={},_0x2ae8dd={},_0x41af53={'count':0x0,'rows':[]};var _0x5eccfb=_[_0x9edd('0x27')](db[_0x9edd('0x28')][_0x9edd('0x29')],function(_0x12c1bc){return{'name':_0x12c1bc[_0x9edd('0x2a')],'type':_0x12c1bc[_0x9edd('0x2b')][_0x9edd('0x2c')]};});_0x2ae8dd[_0x9edd('0x2d')]=_[_0x9edd('0x27')](_0x5eccfb,_0x9edd('0x2e'));_0x2ae8dd[_0x9edd('0x2f')]=_[_0x9edd('0x30')](_0x52746a[_0x9edd('0x2f')]);_0x2ae8dd[_0x9edd('0x31')]=_[_0x9edd('0x32')](_0x2ae8dd['model'],_0x2ae8dd[_0x9edd('0x2f')]);_0x28cfae[_0x9edd('0x33')]=_[_0x9edd('0x32')](_0x2ae8dd['model'],qs[_0x9edd('0x34')](_0x52746a[_0x9edd('0x2f')][_0x9edd('0x34')]));_0x28cfae[_0x9edd('0x33')]=_0x28cfae[_0x9edd('0x33')][_0x9edd('0x35')]?_0x28cfae[_0x9edd('0x33')]:_0x2ae8dd[_0x9edd('0x2d')];if(!_0x52746a[_0x9edd('0x2f')][_0x9edd('0x36')](_0x9edd('0x37'))){_0x28cfae[_0x9edd('0x1d')]=qs[_0x9edd('0x1d')](_0x52746a[_0x9edd('0x2f')]['limit']);_0x28cfae[_0x9edd('0x1b')]=qs['offset'](_0x52746a[_0x9edd('0x2f')][_0x9edd('0x1b')]);}_0x28cfae[_0x9edd('0x38')]=qs[_0x9edd('0x39')](_0x52746a[_0x9edd('0x2f')]['sort']);_0x28cfae[_0x9edd('0x3a')]=qs[_0x9edd('0x31')](_[_0x9edd('0x3b')](_0x52746a[_0x9edd('0x2f')],_0x2ae8dd[_0x9edd('0x31')]),_0x5eccfb);if(_0x52746a[_0x9edd('0x2f')][_0x9edd('0x3c')]){_0x28cfae[_0x9edd('0x3a')]=_[_0x9edd('0x3d')](_0x28cfae[_0x9edd('0x3a')],{'$or':_['map'](_0x5eccfb,function(_0x231604){if(_0x231604['type']!==_0x9edd('0x3e')){var _0x5658d6={};_0x5658d6[_0x231604[_0x9edd('0x2e')]]={'$like':'%'+_0x52746a[_0x9edd('0x2f')][_0x9edd('0x3c')]+'%'};return _0x5658d6;}})});}_0x28cfae=_['merge']({},_0x28cfae,_0x52746a[_0x9edd('0x3f')]);var _0xcbd0ef={'where':_0x28cfae[_0x9edd('0x3a')]};return db['MemberReport'][_0x9edd('0x1e')](_0xcbd0ef)['then'](function(_0x1fc4fb){_0x41af53[_0x9edd('0x1e')]=_0x1fc4fb;if(_0x52746a['query'][_0x9edd('0x40')]){_0x28cfae[_0x9edd('0x41')]=[{'all':!![]}];}return db[_0x9edd('0x28')][_0x9edd('0x42')](_0x28cfae);})['then'](function(_0x449f01){_0x41af53['rows']=_0x449f01;return _0x41af53;})[_0x9edd('0x21')](respondWithFilteredResult(_0x238b22,_0x28cfae))[_0x9edd('0x43')](handleError(_0x238b22,null));};exports['show']=function(_0x318757,_0x49a128){var _0x548299={'raw':!![],'where':{'id':_0x318757[_0x9edd('0x44')]['id']}},_0x369b69={};_0x369b69[_0x9edd('0x2d')]=_[_0x9edd('0x30')](db[_0x9edd('0x28')][_0x9edd('0x29')]);_0x369b69[_0x9edd('0x2f')]=_[_0x9edd('0x30')](_0x318757[_0x9edd('0x2f')]);_0x369b69[_0x9edd('0x31')]=_[_0x9edd('0x32')](_0x369b69[_0x9edd('0x2d')],_0x369b69[_0x9edd('0x2f')]);_0x548299[_0x9edd('0x33')]=_[_0x9edd('0x32')](_0x369b69['model'],qs[_0x9edd('0x34')](_0x318757[_0x9edd('0x2f')][_0x9edd('0x34')]));_0x548299[_0x9edd('0x33')]=_0x548299[_0x9edd('0x33')][_0x9edd('0x35')]?_0x548299[_0x9edd('0x33')]:_0x369b69['model'];if(_0x318757['query']['includeAll']){_0x548299[_0x9edd('0x41')]=[{'all':!![]}];}_0x548299=_['merge']({},_0x548299,_0x318757[_0x9edd('0x3f')]);return db[_0x9edd('0x28')][_0x9edd('0x45')](_0x548299)[_0x9edd('0x21')](handleEntityNotFound(_0x49a128,null))[_0x9edd('0x21')](respondWithResult(_0x49a128,null))['catch'](handleError(_0x49a128,null));};exports[_0x9edd('0x46')]=function(_0x35e63c,_0x40e33d){return db['MemberReport'][_0x9edd('0x46')](_0x35e63c[_0x9edd('0x47')],{})[_0x9edd('0x21')](respondWithResult(_0x40e33d,0xc9))[_0x9edd('0x43')](handleError(_0x40e33d,null));};exports[_0x9edd('0x48')]=function(_0x35bdec,_0x4d4f33){if(_0x35bdec[_0x9edd('0x47')]['id']){delete _0x35bdec[_0x9edd('0x47')]['id'];}return db['MemberReport'][_0x9edd('0x45')]({'where':{'id':_0x35bdec[_0x9edd('0x44')]['id']}})['then'](handleEntityNotFound(_0x4d4f33,null))[_0x9edd('0x21')](saveUpdates(_0x35bdec[_0x9edd('0x47')],null))[_0x9edd('0x21')](respondWithResult(_0x4d4f33,null))['catch'](handleError(_0x4d4f33,null));};exports[_0x9edd('0x49')]=function(_0x151157,_0x317a60){return db[_0x9edd('0x28')]['find']({'where':{'id':_0x151157[_0x9edd('0x44')]['id']}})[_0x9edd('0x21')](handleEntityNotFound(_0x317a60,null))[_0x9edd('0x21')](removeEntity(_0x317a60,null))['catch'](handleError(_0x317a60,null));};exports[_0x9edd('0x4a')]=function(_0x21f6ce,_0x57db43){return db[_0x9edd('0x28')]['describe']()[_0x9edd('0x21')](respondWithResult(_0x57db43,null))[_0x9edd('0x43')](handleError(_0x57db43,null));};
\ No newline at end of file
index 44c4f94..7f74bd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2800=['report_member','membername_interface','membername','interface','util','../../config/logger','moment','bluebird','request-promise','rimraf','exports','define','MemberReport'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2800,0xba));var _0x0280=function(_0x362519,_0x46fc26){_0x362519=_0x362519-0x0;var _0x41aa4e=_0x2800[_0x362519];return _0x41aa4e;};'use strict';var _=require('lodash');var util=require(_0x0280('0x0'));var logger=require(_0x0280('0x1'))('api');var moment=require(_0x0280('0x2'));var BPromise=require(_0x0280('0x3'));var rp=require(_0x0280('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0280('0x5'));var config=require('../../config/environment');var attributes=require('./memberReport.attributes');module[_0x0280('0x6')]=function(_0x75a1ec,_0x3c05b9){return _0x75a1ec[_0x0280('0x7')](_0x0280('0x8'),attributes,{'tableName':_0x0280('0x9'),'paranoid':![],'indexes':[{'name':_0x0280('0xa'),'fields':[_0x0280('0xb'),_0x0280('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf01a=['./memberReport.attributes','define','MemberReport','report_member','membername_interface','interface','lodash','util','../../config/logger','bluebird','rimraf','../../config/environment'];(function(_0x5d1ae8,_0x1cfb7b){var _0x2e3995=function(_0x4e91d5){while(--_0x4e91d5){_0x5d1ae8['push'](_0x5d1ae8['shift']());}};_0x2e3995(++_0x1cfb7b);}(_0xf01a,0x1da));var _0xaf01=function(_0x17b128,_0x141e99){_0x17b128=_0x17b128-0x0;var _0x3ed864=_0xf01a[_0x17b128];return _0x3ed864;};'use strict';var _=require(_0xaf01('0x0'));var util=require(_0xaf01('0x1'));var logger=require(_0xaf01('0x2'))('api');var moment=require('moment');var BPromise=require(_0xaf01('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xaf01('0x4'));var config=require(_0xaf01('0x5'));var attributes=require(_0xaf01('0x6'));module['exports']=function(_0x5f4ea6,_0x154919){return _0x5f4ea6[_0xaf01('0x7')](_0xaf01('0x8'),attributes,{'tableName':_0xaf01('0x9'),'paranoid':![],'indexes':[{'name':_0xaf01('0xa'),'fields':['membername',_0xaf01('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 79c4a82..bf44f44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4d9=['MemberReport,\x20%s,\x20%s','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','MemberReport','findAll','options','raw','where','attributes','limit','include','map','model','GetMemberReport','CreateMemberReport','UpdateMemberReport','update','body','lodash','util','moment','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info'];(function(_0x5e212e,_0x38f5c7){var _0x499c6f=function(_0x502db9){while(--_0x502db9){_0x5e212e['push'](_0x5e212e['shift']());}};_0x499c6f(++_0x38f5c7);}(_0xe4d9,0x141));var _0x9e4d=function(_0x44e4fd,_0x16d58d){_0x44e4fd=_0x44e4fd-0x0;var _0xddd625=_0xe4d9[_0x44e4fd];return _0xddd625;};'use strict';var _=require(_0x9e4d('0x0'));var util=require(_0x9e4d('0x1'));var moment=require(_0x9e4d('0x2'));var BPromise=require('bluebird');var rs=require(_0x9e4d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x9e4d('0x4'));var logger=require(_0x9e4d('0x5'))('rpc');var config=require(_0x9e4d('0x6'));var jayson=require(_0x9e4d('0x7'));var client=jayson['client'][_0x9e4d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x74b14,_0x5bfad3,_0x5af2a0){return new BPromise(function(_0x36ec30,_0x48d257){return client[_0x9e4d('0x9')](_0x74b14,_0x5af2a0)[_0x9e4d('0xa')](function(_0x4ea141){logger[_0x9e4d('0xb')](_0x9e4d('0xc'),_0x5bfad3,_0x9e4d('0xd'));logger[_0x9e4d('0xe')](_0x9e4d('0xf'),_0x5bfad3,_0x9e4d('0xd'),JSON[_0x9e4d('0x10')](_0x4ea141));if(_0x4ea141[_0x9e4d('0x11')]){if(_0x4ea141[_0x9e4d('0x11')][_0x9e4d('0x12')]===0x1f4){logger[_0x9e4d('0x11')](_0x9e4d('0xc'),_0x5bfad3,_0x4ea141[_0x9e4d('0x11')][_0x9e4d('0x13')]);return _0x48d257(_0x4ea141[_0x9e4d('0x11')]['message']);}logger[_0x9e4d('0x11')](_0x9e4d('0xc'),_0x5bfad3,_0x4ea141[_0x9e4d('0x11')][_0x9e4d('0x13')]);return _0x36ec30(_0x4ea141[_0x9e4d('0x11')][_0x9e4d('0x13')]);}else{logger['info'](_0x9e4d('0xc'),_0x5bfad3,_0x9e4d('0xd'));_0x36ec30(_0x4ea141[_0x9e4d('0x14')][_0x9e4d('0x13')]);}})[_0x9e4d('0x15')](function(_0x42674a){logger['error'](_0x9e4d('0xc'),_0x5bfad3,_0x42674a);_0x48d257(_0x42674a);});});}exports['GetMemberReport']=function(_0x5c598f){var _0x2cdcfa=this;return new Promise(function(_0x445d08,_0xb40e2){return db[_0x9e4d('0x16')][_0x9e4d('0x17')]({'raw':_0x5c598f[_0x9e4d('0x18')]?_0x5c598f['options'][_0x9e4d('0x19')]===undefined?!![]:![]:!![],'where':_0x5c598f['options']?_0x5c598f[_0x9e4d('0x18')][_0x9e4d('0x1a')]||null:null,'attributes':_0x5c598f[_0x9e4d('0x18')]?_0x5c598f[_0x9e4d('0x18')][_0x9e4d('0x1b')]||null:null,'limit':_0x5c598f[_0x9e4d('0x18')]?_0x5c598f[_0x9e4d('0x18')][_0x9e4d('0x1c')]||null:null,'include':_0x5c598f[_0x9e4d('0x18')]?_0x5c598f['options'][_0x9e4d('0x1d')]?_[_0x9e4d('0x1e')](_0x5c598f['options'][_0x9e4d('0x1d')],function(_0x8d9f69){return{'model':db[_0x8d9f69['model']],'as':_0x8d9f69['as'],'attributes':_0x8d9f69[_0x9e4d('0x1b')],'include':_0x8d9f69[_0x9e4d('0x1d')]?_[_0x9e4d('0x1e')](_0x8d9f69['include'],function(_0x1205fb){return{'model':db[_0x1205fb[_0x9e4d('0x1f')]],'as':_0x1205fb['as'],'attributes':_0x1205fb[_0x9e4d('0x1b')],'include':_0x1205fb['include']?_[_0x9e4d('0x1e')](_0x1205fb['include'],function(_0x427d34){return{'model':db[_0x427d34['model']],'as':_0x427d34['as'],'attributes':_0x427d34[_0x9e4d('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x57ab61){logger[_0x9e4d('0xb')](_0x9e4d('0x20'),_0x5c598f);logger[_0x9e4d('0xe')](_0x9e4d('0x20'),_0x5c598f,JSON['stringify'](_0x57ab61));_0x445d08(_0x57ab61);})[_0x9e4d('0x15')](function(_0x317e27){logger['error']('GetMemberReport',_0x317e27[_0x9e4d('0x13')],_0x5c598f);_0xb40e2(_0x2cdcfa[_0x9e4d('0x11')](0x1f4,_0x317e27[_0x9e4d('0x13')]));});});};exports['CreateMemberReport']=function(_0x3002c0){var _0x38e9ff=this;return new Promise(function(_0x352ae0,_0x51ce3e){return db[_0x9e4d('0x16')]['create'](_0x3002c0['body'],{'raw':_0x3002c0[_0x9e4d('0x18')]?_0x3002c0[_0x9e4d('0x18')][_0x9e4d('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x42ac64){logger[_0x9e4d('0xb')](_0x9e4d('0x21'),_0x3002c0);logger[_0x9e4d('0xe')](_0x9e4d('0x21'),_0x3002c0,JSON[_0x9e4d('0x10')](_0x42ac64));_0x352ae0(_0x42ac64);})[_0x9e4d('0x15')](function(_0x209436){logger[_0x9e4d('0x11')](_0x9e4d('0x21'),_0x209436[_0x9e4d('0x13')],_0x3002c0);_0x51ce3e(_0x38e9ff[_0x9e4d('0x11')](0x1f4,_0x209436['message']));});});};exports[_0x9e4d('0x22')]=function(_0x4bd0f3){var _0x51a074=this;return new Promise(function(_0x14c87c,_0x3e849d){return db[_0x9e4d('0x16')][_0x9e4d('0x23')](_0x4bd0f3[_0x9e4d('0x24')],{'raw':_0x4bd0f3[_0x9e4d('0x18')]?_0x4bd0f3[_0x9e4d('0x18')][_0x9e4d('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4bd0f3[_0x9e4d('0x18')]?_0x4bd0f3[_0x9e4d('0x18')]['where']||null:null,'attributes':_0x4bd0f3[_0x9e4d('0x18')]?_0x4bd0f3[_0x9e4d('0x18')][_0x9e4d('0x1b')]||null:null,'limit':_0x4bd0f3[_0x9e4d('0x18')]?_0x4bd0f3[_0x9e4d('0x18')][_0x9e4d('0x1c')]||null:null})['then'](function(_0x4a2145){logger[_0x9e4d('0xb')](_0x9e4d('0x22'),_0x4bd0f3);logger['debug'](_0x9e4d('0x22'),_0x4bd0f3,JSON[_0x9e4d('0x10')](_0x4a2145));_0x14c87c(_0x4a2145);})[_0x9e4d('0x15')](function(_0xbabd7a){logger[_0x9e4d('0x11')](_0x9e4d('0x22'),_0xbabd7a[_0x9e4d('0x13')],_0x4bd0f3);_0x3e849d(_0x51a074[_0x9e4d('0x11')](0x1f4,_0xbabd7a[_0x9e4d('0x13')]));});});};
\ No newline at end of file
+var _0xe5e3=['http','request','then','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetMemberReport','MemberReport','findAll','options','raw','limit','include','map','attributes','model','stringify','CreateMemberReport','body','update','where','UpdateMemberReport','util','moment','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x25c551,_0x291ab6){var _0x3700b2=function(_0x2163a1){while(--_0x2163a1){_0x25c551['push'](_0x25c551['shift']());}};_0x3700b2(++_0x291ab6);}(_0xe5e3,0x17a));var _0x3e5e=function(_0x34bd23,_0x3256bd){_0x34bd23=_0x34bd23-0x0;var _0x1c2574=_0xe5e3[_0x34bd23];return _0x1c2574;};'use strict';var _=require('lodash');var util=require(_0x3e5e('0x0'));var moment=require(_0x3e5e('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3e5e('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x3e5e('0x3'));var logger=require(_0x3e5e('0x4'))('rpc');var config=require(_0x3e5e('0x5'));var jayson=require(_0x3e5e('0x6'));var client=jayson['client'][_0x3e5e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x56d1d8,_0x2f5735,_0x4971da){return new BPromise(function(_0x309cac,_0x1260c0){return client[_0x3e5e('0x8')](_0x56d1d8,_0x4971da)[_0x3e5e('0x9')](function(_0x2d6513){logger[_0x3e5e('0xa')](_0x3e5e('0xb'),_0x2f5735,_0x3e5e('0xc'));logger[_0x3e5e('0xd')](_0x3e5e('0xe'),_0x2f5735,_0x3e5e('0xc'),JSON['stringify'](_0x2d6513));if(_0x2d6513[_0x3e5e('0xf')]){if(_0x2d6513[_0x3e5e('0xf')][_0x3e5e('0x10')]===0x1f4){logger[_0x3e5e('0xf')](_0x3e5e('0xb'),_0x2f5735,_0x2d6513[_0x3e5e('0xf')][_0x3e5e('0x11')]);return _0x1260c0(_0x2d6513[_0x3e5e('0xf')][_0x3e5e('0x11')]);}logger[_0x3e5e('0xf')](_0x3e5e('0xb'),_0x2f5735,_0x2d6513[_0x3e5e('0xf')][_0x3e5e('0x11')]);return _0x309cac(_0x2d6513[_0x3e5e('0xf')]['message']);}else{logger[_0x3e5e('0xa')](_0x3e5e('0xb'),_0x2f5735,'request\x20sent');_0x309cac(_0x2d6513['result'][_0x3e5e('0x11')]);}})[_0x3e5e('0x12')](function(_0x1b9a8a){logger[_0x3e5e('0xf')](_0x3e5e('0xb'),_0x2f5735,_0x1b9a8a);_0x1260c0(_0x1b9a8a);});});}exports[_0x3e5e('0x13')]=function(_0xcba431){var _0x5d84b7=this;return new Promise(function(_0x229977,_0x859854){return db[_0x3e5e('0x14')][_0x3e5e('0x15')]({'raw':_0xcba431[_0x3e5e('0x16')]?_0xcba431[_0x3e5e('0x16')][_0x3e5e('0x17')]===undefined?!![]:![]:!![],'where':_0xcba431['options']?_0xcba431['options']['where']||null:null,'attributes':_0xcba431[_0x3e5e('0x16')]?_0xcba431[_0x3e5e('0x16')]['attributes']||null:null,'limit':_0xcba431['options']?_0xcba431[_0x3e5e('0x16')][_0x3e5e('0x18')]||null:null,'include':_0xcba431[_0x3e5e('0x16')]?_0xcba431[_0x3e5e('0x16')][_0x3e5e('0x19')]?_[_0x3e5e('0x1a')](_0xcba431[_0x3e5e('0x16')][_0x3e5e('0x19')],function(_0x457db9){return{'model':db[_0x457db9['model']],'as':_0x457db9['as'],'attributes':_0x457db9[_0x3e5e('0x1b')],'include':_0x457db9[_0x3e5e('0x19')]?_[_0x3e5e('0x1a')](_0x457db9[_0x3e5e('0x19')],function(_0x4c4067){return{'model':db[_0x4c4067[_0x3e5e('0x1c')]],'as':_0x4c4067['as'],'attributes':_0x4c4067[_0x3e5e('0x1b')],'include':_0x4c4067[_0x3e5e('0x19')]?_[_0x3e5e('0x1a')](_0x4c4067[_0x3e5e('0x19')],function(_0x37a02c){return{'model':db[_0x37a02c[_0x3e5e('0x1c')]],'as':_0x37a02c['as'],'attributes':_0x37a02c[_0x3e5e('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5a018f){logger[_0x3e5e('0xa')](_0x3e5e('0x13'),_0xcba431);logger[_0x3e5e('0xd')]('GetMemberReport',_0xcba431,JSON[_0x3e5e('0x1d')](_0x5a018f));_0x229977(_0x5a018f);})['catch'](function(_0x412b2c){logger[_0x3e5e('0xf')](_0x3e5e('0x13'),_0x412b2c[_0x3e5e('0x11')],_0xcba431);_0x859854(_0x5d84b7[_0x3e5e('0xf')](0x1f4,_0x412b2c[_0x3e5e('0x11')]));});});};exports[_0x3e5e('0x1e')]=function(_0x166097){var _0x7a1216=this;return new Promise(function(_0x37fac5,_0x32bb84){return db[_0x3e5e('0x14')]['create'](_0x166097[_0x3e5e('0x1f')],{'raw':_0x166097[_0x3e5e('0x16')]?_0x166097[_0x3e5e('0x16')][_0x3e5e('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x203ac2){logger[_0x3e5e('0xa')]('CreateMemberReport',_0x166097);logger[_0x3e5e('0xd')](_0x3e5e('0x1e'),_0x166097,JSON[_0x3e5e('0x1d')](_0x203ac2));_0x37fac5(_0x203ac2);})[_0x3e5e('0x12')](function(_0x585703){logger[_0x3e5e('0xf')](_0x3e5e('0x1e'),_0x585703[_0x3e5e('0x11')],_0x166097);_0x32bb84(_0x7a1216[_0x3e5e('0xf')](0x1f4,_0x585703[_0x3e5e('0x11')]));});});};exports['UpdateMemberReport']=function(_0x5774a9){var _0x1a0871=this;return new Promise(function(_0x2ff13d,_0x469e5f){return db['MemberReport'][_0x3e5e('0x20')](_0x5774a9[_0x3e5e('0x1f')],{'raw':_0x5774a9[_0x3e5e('0x16')]?_0x5774a9['options'][_0x3e5e('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5774a9[_0x3e5e('0x16')]?_0x5774a9['options'][_0x3e5e('0x21')]||null:null,'attributes':_0x5774a9[_0x3e5e('0x16')]?_0x5774a9[_0x3e5e('0x16')][_0x3e5e('0x1b')]||null:null,'limit':_0x5774a9[_0x3e5e('0x16')]?_0x5774a9[_0x3e5e('0x16')][_0x3e5e('0x18')]||null:null})[_0x3e5e('0x9')](function(_0x2412ed){logger['info'](_0x3e5e('0x22'),_0x5774a9);logger['debug'](_0x3e5e('0x22'),_0x5774a9,JSON[_0x3e5e('0x1d')](_0x2412ed));_0x2ff13d(_0x2412ed);})[_0x3e5e('0x12')](function(_0x54c832){logger['error'](_0x3e5e('0x22'),_0x54c832['message'],_0x5774a9);_0x469e5f(_0x1a0871[_0x3e5e('0xf')](0x1f4,_0x54c832[_0x3e5e('0x11')]));});});};
\ No newline at end of file
index 9f71882..71f1f2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d3c=['index','exports','multer','util','path','connect-timeout','express','Router','../../config/environment','get'];(function(_0x48b4f9,_0xbbe897){var _0x30dda9=function(_0xddc3b6){while(--_0xddc3b6){_0x48b4f9['push'](_0x48b4f9['shift']());}};_0x30dda9(++_0xbbe897);}(_0x3d3c,0x98));var _0xc3d3=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x3d3c[_0x3b380d];return _0x54502b;};'use strict';var multer=require(_0xc3d3('0x0'));var util=require(_0xc3d3('0x1'));var path=require(_0xc3d3('0x2'));var timeout=require(_0xc3d3('0x3'));var express=require(_0xc3d3('0x4'));var router=express[_0xc3d3('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xc3d3('0x6'));var controller=require('./migration.controller');router[_0xc3d3('0x7')]('/',controller[_0xc3d3('0x8')]);module[_0xc3d3('0x9')]=router;
\ No newline at end of file
+var _0x164f=['../../components/auth/service','../../components/interaction/service','./migration.controller','get','index','exports','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x19c508,_0x3acbab){var _0x4cc916=function(_0x13a11a){while(--_0x13a11a){_0x19c508['push'](_0x19c508['shift']());}};_0x4cc916(++_0x3acbab);}(_0x164f,0x186));var _0xf164=function(_0x15fe82,_0x7947e){_0x15fe82=_0x15fe82-0x0;var _0x162998=_0x164f[_0x15fe82];return _0x162998;};'use strict';var multer=require('multer');var util=require(_0xf164('0x0'));var path=require(_0xf164('0x1'));var timeout=require(_0xf164('0x2'));var express=require(_0xf164('0x3'));var router=express[_0xf164('0x4')]();var fs_extra=require(_0xf164('0x5'));var auth=require(_0xf164('0x6'));var interaction=require(_0xf164('0x7'));var config=require('../../config/environment');var controller=require(_0xf164('0x8'));router[_0xf164('0x9')]('/',controller[_0xf164('0xa')]);module[_0xf164('0xb')]=router;
\ No newline at end of file
index b3f84e2..6cf6f82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb3c=['sequelize','exports','STRING','version'];(function(_0x5b9523,_0xd55b34){var _0x1c44d7=function(_0x36d038){while(--_0x36d038){_0x5b9523['push'](_0x5b9523['shift']());}};_0x1c44d7(++_0xd55b34);}(_0xcb3c,0x1a8));var _0xccb3=function(_0x708c47,_0x6eaa1f){_0x708c47=_0x708c47-0x0;var _0x52a470=_0xcb3c[_0x708c47];return _0x52a470;};'use strict';var Sequelize=require(_0xccb3('0x0'));module[_0xccb3('0x1')]={'version':{'type':Sequelize[_0xccb3('0x2')],'unique':_0xccb3('0x3')}};
\ No newline at end of file
+var _0xcb4a=['exports','STRING','version'];(function(_0x2fb1c4,_0x51c195){var _0x33752f=function(_0x37efba){while(--_0x37efba){_0x2fb1c4['push'](_0x2fb1c4['shift']());}};_0x33752f(++_0x51c195);}(_0xcb4a,0x1a1));var _0xacb4=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xcb4a[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require('sequelize');module[_0xacb4('0x0')]={'version':{'type':Sequelize[_0xacb4('0x1')],'unique':_0xacb4('0x2')}};
\ No newline at end of file
index ac35ca3..c7d8adf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f2f=['map','Migration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','options','includeAll','rows','catch','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','Content-Range','apply','save','then','destroy','sendStatus','error','stack','name','send','index'];(function(_0x5d64c8,_0x5b7193){var _0x190d5c=function(_0x14ba57){while(--_0x14ba57){_0x5d64c8['push'](_0x5d64c8['shift']());}};_0x190d5c(++_0x5b7193);}(_0x3f2f,0x120));var _0xf3f2=function(_0x5e7a3e,_0x3a54af){_0x5e7a3e=_0x5e7a3e-0x0;var _0x264f8d=_0x3f2f[_0x5e7a3e];return _0x264f8d;};'use strict';var emlformat=require(_0xf3f2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf3f2('0x1'));var jsonpatch=require(_0xf3f2('0x2'));var rp=require(_0xf3f2('0x3'));var moment=require('moment');var BPromise=require(_0xf3f2('0x4'));var Mustache=require(_0xf3f2('0x5'));var util=require('util');var path=require(_0xf3f2('0x6'));var sox=require(_0xf3f2('0x7'));var csv=require('to-csv');var ejs=require(_0xf3f2('0x8'));var fs=require('fs');var fs_extra=require(_0xf3f2('0x9'));var _=require(_0xf3f2('0xa'));var squel=require(_0xf3f2('0xb'));var crypto=require(_0xf3f2('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xf3f2('0xd'));var toCsv=require(_0xf3f2('0xe'));var querystring=require('querystring');var Papa=require(_0xf3f2('0xf'));var Redis=require(_0xf3f2('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xf3f2('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf3f2('0x12'));var logger=require(_0xf3f2('0x13'))(_0xf3f2('0x14'));var utils=require('../../config/utils');var config=require(_0xf3f2('0x15'));var licenseUtil=require(_0xf3f2('0x16'));var db=require(_0xf3f2('0x17'))['db'];function respondWithStatusCode(_0x2a18ef,_0x1c40c6){_0x1c40c6=_0x1c40c6||0xcc;return function(_0x4fca67){if(_0x4fca67){return _0x2a18ef['sendStatus'](_0x1c40c6);}return _0x2a18ef[_0xf3f2('0x18')](_0x1c40c6)[_0xf3f2('0x19')]();};}function respondWithResult(_0x5e4de3,_0x3b7e27){_0x3b7e27=_0x3b7e27||0xc8;return function(_0x7bc03b){if(_0x7bc03b){return _0x5e4de3[_0xf3f2('0x18')](_0x3b7e27)[_0xf3f2('0x1a')](_0x7bc03b);}};}function respondWithFilteredResult(_0x331e87,_0x16c1c2){return function(_0x311861){if(_0x311861){var _0x11a306=typeof _0x16c1c2['offset']===_0xf3f2('0x1b')&&typeof _0x16c1c2[_0xf3f2('0x1c')]==='undefined';var _0x577e70=_0x311861[_0xf3f2('0x1d')];var _0x2b9e03=_0x11a306?0x0:_0x16c1c2['offset'];var _0x34e041=_0x11a306?_0x311861[_0xf3f2('0x1d')]:_0x16c1c2[_0xf3f2('0x1e')]+_0x16c1c2[_0xf3f2('0x1c')];var _0x3c29f4;if(_0x34e041>=_0x577e70){_0x34e041=_0x577e70;_0x3c29f4=0xc8;}else{_0x3c29f4=0xce;}_0x331e87[_0xf3f2('0x18')](_0x3c29f4);return _0x331e87['set'](_0xf3f2('0x1f'),_0x2b9e03+'-'+_0x34e041+'/'+_0x577e70)[_0xf3f2('0x1a')](_0x311861);}return null;};}function patchUpdates(_0x234542){return function(_0x8131ee){try{jsonpatch[_0xf3f2('0x20')](_0x8131ee,_0x234542,!![]);}catch(_0x2f455f){return BPromise['reject'](_0x2f455f);}return _0x8131ee[_0xf3f2('0x21')]();};}function saveUpdates(_0x58ecdc,_0x29ac05){return function(_0x3407e9){if(_0x3407e9){return _0x3407e9['update'](_0x58ecdc)[_0xf3f2('0x22')](function(_0x1dacd4){return _0x1dacd4;});}return null;};}function removeEntity(_0x4f8027,_0x4e8e36){return function(_0x3212b6){if(_0x3212b6){return _0x3212b6[_0xf3f2('0x23')]()[_0xf3f2('0x22')](function(){_0x4f8027[_0xf3f2('0x18')](0xcc)[_0xf3f2('0x19')]();});}};}function handleEntityNotFound(_0x557afa,_0xc1507){return function(_0x3e8bfb){if(!_0x3e8bfb){_0x557afa[_0xf3f2('0x24')](0x194);}return _0x3e8bfb;};}function handleError(_0x35b7f1,_0x335004){_0x335004=_0x335004||0x1f4;return function(_0x2cd703){logger[_0xf3f2('0x25')](_0x2cd703[_0xf3f2('0x26')]);if(_0x2cd703[_0xf3f2('0x27')]){delete _0x2cd703[_0xf3f2('0x27')];}_0x35b7f1[_0xf3f2('0x18')](_0x335004)[_0xf3f2('0x28')](_0x2cd703);};}exports[_0xf3f2('0x29')]=function(_0x492515,_0x16d0d7){var _0x3ba6d8={},_0x1eb210={},_0x11376e={'count':0x0,'rows':[]};var _0x2cdbf3=_[_0xf3f2('0x2a')](db[_0xf3f2('0x2b')][_0xf3f2('0x2c')],function(_0x58f331){return{'name':_0x58f331[_0xf3f2('0x2d')],'type':_0x58f331[_0xf3f2('0x2e')][_0xf3f2('0x2f')]};});_0x1eb210[_0xf3f2('0x30')]=_[_0xf3f2('0x2a')](_0x2cdbf3,'name');_0x1eb210[_0xf3f2('0x31')]=_[_0xf3f2('0x32')](_0x492515[_0xf3f2('0x31')]);_0x1eb210[_0xf3f2('0x33')]=_[_0xf3f2('0x34')](_0x1eb210[_0xf3f2('0x30')],_0x1eb210['query']);_0x3ba6d8[_0xf3f2('0x35')]=_[_0xf3f2('0x34')](_0x1eb210[_0xf3f2('0x30')],qs[_0xf3f2('0x36')](_0x492515[_0xf3f2('0x31')][_0xf3f2('0x36')]));_0x3ba6d8[_0xf3f2('0x35')]=_0x3ba6d8[_0xf3f2('0x35')][_0xf3f2('0x37')]?_0x3ba6d8[_0xf3f2('0x35')]:_0x1eb210[_0xf3f2('0x30')];if(!_0x492515[_0xf3f2('0x31')][_0xf3f2('0x38')](_0xf3f2('0x39'))){_0x3ba6d8['limit']=qs[_0xf3f2('0x1c')](_0x492515['query']['limit']);_0x3ba6d8[_0xf3f2('0x1e')]=qs[_0xf3f2('0x1e')](_0x492515[_0xf3f2('0x31')][_0xf3f2('0x1e')]);}_0x3ba6d8['order']=qs[_0xf3f2('0x3a')](_0x492515[_0xf3f2('0x31')][_0xf3f2('0x3a')]);_0x3ba6d8[_0xf3f2('0x3b')]=qs[_0xf3f2('0x33')](_['pick'](_0x492515['query'],_0x1eb210['filters']),_0x2cdbf3);if(_0x492515['query']['filter']){_0x3ba6d8[_0xf3f2('0x3b')]=_[_0xf3f2('0x3c')](_0x3ba6d8[_0xf3f2('0x3b')],{'$or':_[_0xf3f2('0x2a')](_0x2cdbf3,function(_0x2bb7ef){if(_0x2bb7ef['type']!==_0xf3f2('0x3d')){var _0x450752={};_0x450752[_0x2bb7ef[_0xf3f2('0x27')]]={'$like':'%'+_0x492515[_0xf3f2('0x31')]['filter']+'%'};return _0x450752;}})});}_0x3ba6d8=_['merge']({},_0x3ba6d8,_0x492515[_0xf3f2('0x3e')]);var _0x24b5ff={'where':_0x3ba6d8[_0xf3f2('0x3b')]};return db[_0xf3f2('0x2b')][_0xf3f2('0x1d')](_0x24b5ff)[_0xf3f2('0x22')](function(_0x29c585){_0x11376e[_0xf3f2('0x1d')]=_0x29c585;if(_0x492515[_0xf3f2('0x31')][_0xf3f2('0x3f')]){_0x3ba6d8['include']=[{'all':!![]}];}return db[_0xf3f2('0x2b')]['findAll'](_0x3ba6d8);})[_0xf3f2('0x22')](function(_0x5c058e){_0x11376e[_0xf3f2('0x40')]=_0x5c058e;return _0x11376e;})['then'](respondWithFilteredResult(_0x16d0d7,_0x3ba6d8))[_0xf3f2('0x41')](handleError(_0x16d0d7,null));};
\ No newline at end of file
+var _0xdc9b=['../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','sendStatus','error','stack','name','send','index','map','Migration','rawAttributes','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','type','options','rows','catch','eml-format','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','papaparse'];(function(_0x466bdd,_0x1254f0){var _0x509fb9=function(_0x9a70eb){while(--_0x9a70eb){_0x466bdd['push'](_0x466bdd['shift']());}};_0x509fb9(++_0x1254f0);}(_0xdc9b,0x1d3));var _0xbdc9=function(_0x2e53f2,_0x3bc888){_0x2e53f2=_0x2e53f2-0x0;var _0xd4c475=_0xdc9b[_0x2e53f2];return _0xd4c475;};'use strict';var emlformat=require(_0xbdc9('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xbdc9('0x1'));var rp=require(_0xbdc9('0x2'));var moment=require(_0xbdc9('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xbdc9('0x4'));var util=require('util');var path=require(_0xbdc9('0x5'));var sox=require(_0xbdc9('0x6'));var csv=require(_0xbdc9('0x7'));var ejs=require(_0xbdc9('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbdc9('0x9'));var squel=require(_0xbdc9('0xa'));var crypto=require('crypto');var jsforce=require(_0xbdc9('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xbdc9('0x7'));var querystring=require('querystring');var Papa=require(_0xbdc9('0xc'));var Redis=require('ioredis');var authService=require(_0xbdc9('0xd'));var qs=require(_0xbdc9('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbdc9('0xf'));var logger=require('../../config/logger')(_0xbdc9('0x10'));var utils=require(_0xbdc9('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0xbdc9('0x12'));var db=require(_0xbdc9('0x13'))['db'];function respondWithStatusCode(_0x49b6fc,_0x3f13d5){_0x3f13d5=_0x3f13d5||0xcc;return function(_0x5d7a0f){if(_0x5d7a0f){return _0x49b6fc['sendStatus'](_0x3f13d5);}return _0x49b6fc[_0xbdc9('0x14')](_0x3f13d5)[_0xbdc9('0x15')]();};}function respondWithResult(_0x3173ac,_0x3ab53c){_0x3ab53c=_0x3ab53c||0xc8;return function(_0x5951ee){if(_0x5951ee){return _0x3173ac['status'](_0x3ab53c)[_0xbdc9('0x16')](_0x5951ee);}};}function respondWithFilteredResult(_0x37d996,_0x466b21){return function(_0x546f2b){if(_0x546f2b){var _0x5502d6=typeof _0x466b21[_0xbdc9('0x17')]===_0xbdc9('0x18')&&typeof _0x466b21[_0xbdc9('0x19')]===_0xbdc9('0x18');var _0x547fd3=_0x546f2b[_0xbdc9('0x1a')];var _0x40fcb5=_0x5502d6?0x0:_0x466b21['offset'];var _0x4bbde0=_0x5502d6?_0x546f2b[_0xbdc9('0x1a')]:_0x466b21['offset']+_0x466b21[_0xbdc9('0x19')];var _0x3e480b;if(_0x4bbde0>=_0x547fd3){_0x4bbde0=_0x547fd3;_0x3e480b=0xc8;}else{_0x3e480b=0xce;}_0x37d996[_0xbdc9('0x14')](_0x3e480b);return _0x37d996[_0xbdc9('0x1b')](_0xbdc9('0x1c'),_0x40fcb5+'-'+_0x4bbde0+'/'+_0x547fd3)['json'](_0x546f2b);}return null;};}function patchUpdates(_0x540d47){return function(_0x15e8f6){try{jsonpatch[_0xbdc9('0x1d')](_0x15e8f6,_0x540d47,!![]);}catch(_0x28c46b){return BPromise[_0xbdc9('0x1e')](_0x28c46b);}return _0x15e8f6['save']();};}function saveUpdates(_0xf826e6,_0x4cbe80){return function(_0xacf730){if(_0xacf730){return _0xacf730[_0xbdc9('0x1f')](_0xf826e6)[_0xbdc9('0x20')](function(_0x11cbcf){return _0x11cbcf;});}return null;};}function removeEntity(_0x1fa9c2,_0x232a9d){return function(_0x5d7ff3){if(_0x5d7ff3){return _0x5d7ff3['destroy']()[_0xbdc9('0x20')](function(){_0x1fa9c2['status'](0xcc)[_0xbdc9('0x15')]();});}};}function handleEntityNotFound(_0x5a59b5,_0x203d44){return function(_0x5f1f98){if(!_0x5f1f98){_0x5a59b5[_0xbdc9('0x21')](0x194);}return _0x5f1f98;};}function handleError(_0xf5d27c,_0x4cf22f){_0x4cf22f=_0x4cf22f||0x1f4;return function(_0x411a7f){logger[_0xbdc9('0x22')](_0x411a7f[_0xbdc9('0x23')]);if(_0x411a7f['name']){delete _0x411a7f[_0xbdc9('0x24')];}_0xf5d27c[_0xbdc9('0x14')](_0x4cf22f)[_0xbdc9('0x25')](_0x411a7f);};}exports[_0xbdc9('0x26')]=function(_0x59d067,_0x3c5c98){var _0x556608={},_0x3a895c={},_0x5a129f={'count':0x0,'rows':[]};var _0x4d729c=_[_0xbdc9('0x27')](db[_0xbdc9('0x28')][_0xbdc9('0x29')],function(_0x15ca73){return{'name':_0x15ca73['fieldName'],'type':_0x15ca73['type']['key']};});_0x3a895c[_0xbdc9('0x2a')]=_['map'](_0x4d729c,_0xbdc9('0x24'));_0x3a895c[_0xbdc9('0x2b')]=_[_0xbdc9('0x2c')](_0x59d067['query']);_0x3a895c[_0xbdc9('0x2d')]=_[_0xbdc9('0x2e')](_0x3a895c[_0xbdc9('0x2a')],_0x3a895c[_0xbdc9('0x2b')]);_0x556608[_0xbdc9('0x2f')]=_[_0xbdc9('0x2e')](_0x3a895c[_0xbdc9('0x2a')],qs[_0xbdc9('0x30')](_0x59d067['query'][_0xbdc9('0x30')]));_0x556608[_0xbdc9('0x2f')]=_0x556608['attributes']['length']?_0x556608[_0xbdc9('0x2f')]:_0x3a895c[_0xbdc9('0x2a')];if(!_0x59d067[_0xbdc9('0x2b')][_0xbdc9('0x31')](_0xbdc9('0x32'))){_0x556608['limit']=qs[_0xbdc9('0x19')](_0x59d067['query'][_0xbdc9('0x19')]);_0x556608['offset']=qs[_0xbdc9('0x17')](_0x59d067[_0xbdc9('0x2b')][_0xbdc9('0x17')]);}_0x556608[_0xbdc9('0x33')]=qs['sort'](_0x59d067['query'][_0xbdc9('0x34')]);_0x556608[_0xbdc9('0x35')]=qs['filters'](_['pick'](_0x59d067['query'],_0x3a895c['filters']),_0x4d729c);if(_0x59d067[_0xbdc9('0x2b')][_0xbdc9('0x36')]){_0x556608[_0xbdc9('0x35')]=_[_0xbdc9('0x37')](_0x556608['where'],{'$or':_[_0xbdc9('0x27')](_0x4d729c,function(_0xf3e3ec){if(_0xf3e3ec[_0xbdc9('0x38')]!=='VIRTUAL'){var _0x2fbcfc={};_0x2fbcfc[_0xf3e3ec[_0xbdc9('0x24')]]={'$like':'%'+_0x59d067['query'][_0xbdc9('0x36')]+'%'};return _0x2fbcfc;}})});}_0x556608=_[_0xbdc9('0x37')]({},_0x556608,_0x59d067[_0xbdc9('0x39')]);var _0x5d682c={'where':_0x556608[_0xbdc9('0x35')]};return db[_0xbdc9('0x28')]['count'](_0x5d682c)[_0xbdc9('0x20')](function(_0xdcefe1){_0x5a129f[_0xbdc9('0x1a')]=_0xdcefe1;if(_0x59d067[_0xbdc9('0x2b')]['includeAll']){_0x556608['include']=[{'all':!![]}];}return db[_0xbdc9('0x28')]['findAll'](_0x556608);})[_0xbdc9('0x20')](function(_0x3899a6){_0x5a129f[_0xbdc9('0x3a')]=_0x3899a6;return _0x5a129f;})['then'](respondWithFilteredResult(_0x3c5c98,_0x556608))[_0xbdc9('0x3b')](handleError(_0x3c5c98,null));};
\ No newline at end of file
index 30e8999..439a970 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf3d=['./migration.attributes','exports','define','Migration','lodash','api','moment','request-promise','../../config/environment'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xdf3d,0x17e));var _0xddf3=function(_0x55abd9,_0x1148af){_0x55abd9=_0x55abd9-0x0;var _0x3e5669=_0xdf3d[_0x55abd9];return _0x3e5669;};'use strict';var _=require(_0xddf3('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xddf3('0x1'));var moment=require(_0xddf3('0x2'));var BPromise=require('bluebird');var rp=require(_0xddf3('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xddf3('0x4'));var attributes=require(_0xddf3('0x5'));module[_0xddf3('0x6')]=function(_0x14abf2,_0x2e6da3){return _0x14abf2[_0xddf3('0x7')](_0xddf3('0x8'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x51d2=['Migration','migrations','lodash','util','../../config/logger','moment','path','rimraf','../../config/environment','./migration.attributes','define'];(function(_0x2184f5,_0x2827ea){var _0x1b29fb=function(_0x25e6cb){while(--_0x25e6cb){_0x2184f5['push'](_0x2184f5['shift']());}};_0x1b29fb(++_0x2827ea);}(_0x51d2,0x1c5));var _0x251d=function(_0x5beda8,_0x1e8554){_0x5beda8=_0x5beda8-0x0;var _0x2aa042=_0x51d2[_0x5beda8];return _0x2aa042;};'use strict';var _=require(_0x251d('0x0'));var util=require(_0x251d('0x1'));var logger=require(_0x251d('0x2'))('api');var moment=require(_0x251d('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x251d('0x4'));var rimraf=require(_0x251d('0x5'));var config=require(_0x251d('0x6'));var attributes=require(_0x251d('0x7'));module['exports']=function(_0x121367,_0xb7fb63){return _0x121367[_0x251d('0x8')](_0x251d('0x9'),attributes,{'tableName':_0x251d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e911137..9206f5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x915a=['error','message','info','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','request','then','Migration,\x20%s,\x20%s','debug','request\x20sent','stringify'];(function(_0x3fbe5d,_0x353a7b){var _0x17ba55=function(_0x130588){while(--_0x130588){_0x3fbe5d['push'](_0x3fbe5d['shift']());}};_0x17ba55(++_0x353a7b);}(_0x915a,0x1d2));var _0xa915=function(_0x55c3,_0x254031){_0x55c3=_0x55c3-0x0;var _0x19cc52=_0x915a[_0x55c3];return _0x19cc52;};'use strict';var _=require(_0xa915('0x0'));var util=require(_0xa915('0x1'));var moment=require(_0xa915('0x2'));var BPromise=require(_0xa915('0x3'));var rs=require(_0xa915('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa915('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa915('0x6'));var config=require(_0xa915('0x7'));var jayson=require(_0xa915('0x8'));var client=jayson[_0xa915('0x9')][_0xa915('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3f5e00,_0x4e4368,_0x483a83){return new BPromise(function(_0x3f5b1b,_0x43bfc9){return client[_0xa915('0xb')](_0x3f5e00,_0x483a83)[_0xa915('0xc')](function(_0x5cfcec){logger['info'](_0xa915('0xd'),_0x4e4368,'request\x20sent');logger[_0xa915('0xe')]('Migration,\x20%s,\x20%s,\x20%s',_0x4e4368,_0xa915('0xf'),JSON[_0xa915('0x10')](_0x5cfcec));if(_0x5cfcec[_0xa915('0x11')]){if(_0x5cfcec[_0xa915('0x11')]['code']===0x1f4){logger['error'](_0xa915('0xd'),_0x4e4368,_0x5cfcec['error'][_0xa915('0x12')]);return _0x43bfc9(_0x5cfcec['error'][_0xa915('0x12')]);}logger[_0xa915('0x11')](_0xa915('0xd'),_0x4e4368,_0x5cfcec[_0xa915('0x11')][_0xa915('0x12')]);return _0x3f5b1b(_0x5cfcec[_0xa915('0x11')]['message']);}else{logger[_0xa915('0x13')](_0xa915('0xd'),_0x4e4368,_0xa915('0xf'));_0x3f5b1b(_0x5cfcec['result'][_0xa915('0x12')]);}})[_0xa915('0x14')](function(_0x24609e){logger[_0xa915('0x11')](_0xa915('0xd'),_0x4e4368,_0x24609e);_0x43bfc9(_0x24609e);});});}
\ No newline at end of file
+var _0xc368=['client','request','then','request\x20sent','debug','stringify','error','code','Migration,\x20%s,\x20%s','message','info','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x11b436,_0x1ef6f5){var _0xfd9f19=function(_0x3305ed){while(--_0x3305ed){_0x11b436['push'](_0x11b436['shift']());}};_0xfd9f19(++_0x1ef6f5);}(_0xc368,0x7b));var _0x8c36=function(_0x23586e,_0x18968d){_0x23586e=_0x23586e-0x0;var _0x495703=_0xc368[_0x23586e];return _0x495703;};'use strict';var _=require('lodash');var util=require(_0x8c36('0x0'));var moment=require('moment');var BPromise=require(_0x8c36('0x1'));var rs=require(_0x8c36('0x2'));var fs=require('fs');var Redis=require(_0x8c36('0x3'));var db=require(_0x8c36('0x4'))['db'];var utils=require(_0x8c36('0x5'));var logger=require('../../config/logger')(_0x8c36('0x6'));var config=require(_0x8c36('0x7'));var jayson=require(_0x8c36('0x8'));var client=jayson[_0x8c36('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x554022,_0x8ed437,_0x384867){return new BPromise(function(_0x3e76be,_0x26bad1){return client[_0x8c36('0xa')](_0x554022,_0x384867)[_0x8c36('0xb')](function(_0x569f29){logger['info']('Migration,\x20%s,\x20%s',_0x8ed437,_0x8c36('0xc'));logger[_0x8c36('0xd')]('Migration,\x20%s,\x20%s,\x20%s',_0x8ed437,_0x8c36('0xc'),JSON[_0x8c36('0xe')](_0x569f29));if(_0x569f29[_0x8c36('0xf')]){if(_0x569f29[_0x8c36('0xf')][_0x8c36('0x10')]===0x1f4){logger[_0x8c36('0xf')](_0x8c36('0x11'),_0x8ed437,_0x569f29[_0x8c36('0xf')][_0x8c36('0x12')]);return _0x26bad1(_0x569f29[_0x8c36('0xf')][_0x8c36('0x12')]);}logger[_0x8c36('0xf')](_0x8c36('0x11'),_0x8ed437,_0x569f29[_0x8c36('0xf')]['message']);return _0x3e76be(_0x569f29[_0x8c36('0xf')]['message']);}else{logger[_0x8c36('0x13')](_0x8c36('0x11'),_0x8ed437,_0x8c36('0xc'));_0x3e76be(_0x569f29[_0x8c36('0x14')][_0x8c36('0x12')]);}})[_0x8c36('0x15')](function(_0x3c10eb){logger[_0x8c36('0xf')](_0x8c36('0x11'),_0x8ed437,_0x3c10eb);_0x26bad1(_0x3c10eb);});});}
\ No newline at end of file
index e21c45b..73df332 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaecc=['isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./network.controller','get'];(function(_0x38146b,_0x3f7382){var _0x4d992e=function(_0x4ae240){while(--_0x4ae240){_0x38146b['push'](_0x38146b['shift']());}};_0x4d992e(++_0x3f7382);}(_0xaecc,0x172));var _0xcaec=function(_0x567097,_0x345516){_0x567097=_0x567097-0x0;var _0x5e84f8=_0xaecc[_0x567097];return _0x5e84f8;};'use strict';var multer=require(_0xcaec('0x0'));var util=require('util');var path=require(_0xcaec('0x1'));var timeout=require(_0xcaec('0x2'));var express=require(_0xcaec('0x3'));var router=express[_0xcaec('0x4')]();var fs_extra=require(_0xcaec('0x5'));var auth=require(_0xcaec('0x6'));var interaction=require(_0xcaec('0x7'));var config=require('../../config/environment');var controller=require(_0xcaec('0x8'));router[_0xcaec('0x9')]('/',auth[_0xcaec('0xa')](),controller[_0xcaec('0xb')]);router[_0xcaec('0x9')](_0xcaec('0xc'),auth[_0xcaec('0xa')](),controller[_0xcaec('0xd')]);router[_0xcaec('0xe')]('/',auth['isAuthenticated'](),controller[_0xcaec('0xf')]);router[_0xcaec('0x10')](_0xcaec('0xc'),auth['isAuthenticated'](),controller[_0xcaec('0x11')]);router[_0xcaec('0x12')]('/:id',auth[_0xcaec('0xa')](),controller['destroy']);module[_0xcaec('0x13')]=router;
\ No newline at end of file
+var _0x0a6b=['./network.controller','isAuthenticated','index','/:id','show','put','update','exports','multer','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x1d5677,_0x342d27){var _0x274227=function(_0x5ead9c){while(--_0x5ead9c){_0x1d5677['push'](_0x1d5677['shift']());}};_0x274227(++_0x342d27);}(_0x0a6b,0x18e));var _0xb0a6=function(_0x34620e,_0x582015){_0x34620e=_0x34620e-0x0;var _0x3d33cd=_0x0a6b[_0x34620e];return _0x3d33cd;};'use strict';var multer=require(_0xb0a6('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb0a6('0x1'));var router=express['Router']();var fs_extra=require(_0xb0a6('0x2'));var auth=require(_0xb0a6('0x3'));var interaction=require(_0xb0a6('0x4'));var config=require('../../config/environment');var controller=require(_0xb0a6('0x5'));router['get']('/',auth[_0xb0a6('0x6')](),controller[_0xb0a6('0x7')]);router['get'](_0xb0a6('0x8'),auth[_0xb0a6('0x6')](),controller[_0xb0a6('0x9')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xb0a6('0xa')](_0xb0a6('0x8'),auth[_0xb0a6('0x6')](),controller[_0xb0a6('0xb')]);router['delete'](_0xb0a6('0x8'),auth[_0xb0a6('0x6')](),controller['destroy']);module[_0xb0a6('0xc')]=router;
\ No newline at end of file
index c5e4646..7694f72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf1c=['stun','turn','STRING','exports'];(function(_0x20845e,_0x211e78){var _0x28cf2b=function(_0x31d613){while(--_0x31d613){_0x20845e['push'](_0x20845e['shift']());}};_0x28cf2b(++_0x211e78);}(_0xaf1c,0x1c7));var _0xcaf1=function(_0x509fb8,_0x21238e){_0x509fb8=_0x509fb8-0x0;var _0x2d9a00=_0xaf1c[_0x509fb8];return _0x2d9a00;};'use strict';var Sequelize=require('sequelize');module[_0xcaf1('0x0')]={'type':{'type':Sequelize['ENUM']('localnet','externip',_0xcaf1('0x1'),_0xcaf1('0x2'))},'value':{'type':Sequelize[_0xcaf1('0x3')]},'username':{'type':Sequelize[_0xcaf1('0x3')]},'password':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x70d7=['exports','localnet','externip','stun','turn','STRING','sequelize'];(function(_0x41464b,_0x80f89c){var _0x5187e0=function(_0x1f9482){while(--_0x1f9482){_0x41464b['push'](_0x41464b['shift']());}};_0x5187e0(++_0x80f89c);}(_0x70d7,0x84));var _0x770d=function(_0x356217,_0x2c1e5a){_0x356217=_0x356217-0x0;var _0x1151eb=_0x70d7[_0x356217];return _0x1151eb;};'use strict';var Sequelize=require(_0x770d('0x0'));module[_0x770d('0x1')]={'type':{'type':Sequelize['ENUM'](_0x770d('0x2'),_0x770d('0x3'),_0x770d('0x4'),_0x770d('0x5'))},'value':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x770d('0x6')]},'password':{'type':Sequelize[_0x770d('0x6')]}};
\ No newline at end of file
index 2504713..a7d2afa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b18=['lodash','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','jayson/promise','client','http','request','then','info','request\x20sent','debug','error','code','Network,\x20%s,\x20%s','message','result','catch','status','json','limit','undefined','count','offset','set','Content-Range','end','stack','name','index','Network','rawAttributes','fieldName','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','where','merge','type','VIRTUAL','options','include','findAll','rows','show','includeAll','create','body','toUpperCase','STUN','join','root','server/files/templates/stun_multiple.ejs','utf8','render','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','readFileSync','writeFileSync','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','chan_sip.so','update','find','params','server/files/templates/turn_multiple.ejs','toLowerCase','destroy','TURN','path','ejs'];(function(_0x5ac799,_0x22bc6d){var _0x4106c2=function(_0xacd55c){while(--_0xacd55c){_0x5ac799['push'](_0x5ac799['shift']());}};_0x4106c2(++_0x22bc6d);}(_0x0b18,0x15e));var _0x80b1=function(_0x4c29f9,_0x5bddd4){_0x4c29f9=_0x4c29f9-0x0;var _0x4e17b8=_0x0b18[_0x4c29f9];return _0x4e17b8;};'use strict';var util=require('util');var path=require(_0x80b1('0x0'));var ejs=require(_0x80b1('0x1'));var fs=require('fs');var _=require(_0x80b1('0x2'));var qs=require(_0x80b1('0x3'));var logger=require(_0x80b1('0x4'))('api');var config=require(_0x80b1('0x5'));var db=require(_0x80b1('0x6'))['db'];var jayson=require(_0x80b1('0x7'));var client=jayson[_0x80b1('0x8')][_0x80b1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2547f1,_0x191853,_0x2a6ff7,_0x1b97e4){return new Promise(function(_0x5ed14f,_0x4e9c2b){var _0x2fb1e0=_0x1b97e4||client;return _0x2fb1e0[_0x80b1('0xa')](_0x2547f1,_0x2a6ff7)[_0x80b1('0xb')](function(_0x1ac20a){logger[_0x80b1('0xc')]('Network,\x20%s,\x20%s',_0x191853,_0x80b1('0xd'));logger[_0x80b1('0xe')]('Network,\x20%s,\x20%s,\x20%s',_0x191853,_0x80b1('0xd'),JSON['stringify'](_0x1ac20a));if(_0x1ac20a[_0x80b1('0xf')]){if(_0x1ac20a[_0x80b1('0xf')][_0x80b1('0x10')]===0x1f4){logger['error'](_0x80b1('0x11'),_0x191853,_0x1ac20a['error']['message']);return _0x4e9c2b(_0x1ac20a[_0x80b1('0xf')][_0x80b1('0x12')]);}logger['error'](_0x80b1('0x11'),_0x191853,_0x1ac20a[_0x80b1('0xf')][_0x80b1('0x12')]);return _0x5ed14f(_0x1ac20a[_0x80b1('0xf')][_0x80b1('0x12')]);}else{logger[_0x80b1('0xc')](_0x80b1('0x11'),_0x191853,_0x80b1('0xd'));_0x5ed14f(_0x1ac20a[_0x80b1('0x13')][_0x80b1('0x12')]);}})[_0x80b1('0x14')](function(_0x2a2576){logger['error'](_0x80b1('0x11'),_0x191853,_0x2a2576);_0x4e9c2b(_0x2a2576);});});}function respondWithResult(_0xbb2561,_0x57f2cb){_0x57f2cb=_0x57f2cb||0xc8;return function(_0x2edf68){if(_0x2edf68){return _0xbb2561[_0x80b1('0x15')](_0x57f2cb)[_0x80b1('0x16')](_0x2edf68);}};}function respondWithFilteredResult(_0x130b45,_0x491677){return function(_0x528274){if(_0x528274){var _0xc0523b=typeof _0x491677['offset']==='undefined'&&typeof _0x491677[_0x80b1('0x17')]===_0x80b1('0x18');var _0x4eccb6=_0x528274[_0x80b1('0x19')];var _0x19e7ea=_0xc0523b?0x0:_0x491677[_0x80b1('0x1a')];var _0x164cf4=_0xc0523b?_0x528274[_0x80b1('0x19')]:_0x491677['offset']+_0x491677[_0x80b1('0x17')];var _0x582be7;if(_0x164cf4>=_0x4eccb6){_0x164cf4=_0x4eccb6;_0x582be7=0xc8;}else{_0x582be7=0xce;}_0x130b45[_0x80b1('0x15')](_0x582be7);return _0x130b45[_0x80b1('0x1b')](_0x80b1('0x1c'),_0x19e7ea+'-'+_0x164cf4+'/'+_0x4eccb6)['json'](_0x528274);}return null;};}function saveUpdates(_0x3dcdb1){return function(_0x1aab43){if(_0x1aab43){return _0x1aab43['update'](_0x3dcdb1)[_0x80b1('0xb')](function(_0x59fb5c){return _0x59fb5c;});}return null;};}function removeEntity(_0x337a0a){return function(_0x1cfd06){if(_0x1cfd06){return _0x1cfd06['destroy']()['then'](function(){_0x337a0a['status'](0xcc)[_0x80b1('0x1d')]();});}};}function handleEntityNotFound(_0x3bfe37){return function(_0x2c266f){if(!_0x2c266f){_0x3bfe37['sendStatus'](0x194);}return _0x2c266f;};}function handleError(_0x15447f,_0x2f7e17){_0x2f7e17=_0x2f7e17||0x1f4;return function(_0x2e87b0){logger['error'](_0x2e87b0[_0x80b1('0x1e')]);if(_0x2e87b0[_0x80b1('0x1f')]){delete _0x2e87b0[_0x80b1('0x1f')];}_0x15447f[_0x80b1('0x15')](_0x2f7e17)['send'](_0x2e87b0);};}exports[_0x80b1('0x20')]=function(_0x445170,_0x149b45){var _0x38761f={},_0x47c955={},_0x56f642={'count':0x0,'rows':[]};var _0x215a4a=_['map'](db[_0x80b1('0x21')][_0x80b1('0x22')],function(_0x256768){return{'name':_0x256768[_0x80b1('0x23')],'type':_0x256768['type'][_0x80b1('0x24')]};});_0x47c955[_0x80b1('0x25')]=_[_0x80b1('0x26')](_0x215a4a,_0x80b1('0x1f'));_0x47c955[_0x80b1('0x27')]=_[_0x80b1('0x28')](_0x445170[_0x80b1('0x27')]);_0x47c955['filters']=_[_0x80b1('0x29')](_0x47c955[_0x80b1('0x25')],_0x47c955[_0x80b1('0x27')]);_0x38761f[_0x80b1('0x2a')]=_[_0x80b1('0x29')](_0x47c955[_0x80b1('0x25')],qs[_0x80b1('0x2b')](_0x445170[_0x80b1('0x27')][_0x80b1('0x2b')]));_0x38761f[_0x80b1('0x2a')]=_0x38761f[_0x80b1('0x2a')][_0x80b1('0x2c')]?_0x38761f[_0x80b1('0x2a')]:_0x47c955[_0x80b1('0x25')];if(!_0x445170['query'][_0x80b1('0x2d')](_0x80b1('0x2e'))){_0x38761f[_0x80b1('0x17')]=qs['limit'](_0x445170[_0x80b1('0x27')]['limit']);_0x38761f[_0x80b1('0x1a')]=qs[_0x80b1('0x1a')](_0x445170[_0x80b1('0x27')][_0x80b1('0x1a')]);}_0x38761f[_0x80b1('0x2f')]=qs[_0x80b1('0x30')](_0x445170[_0x80b1('0x27')]['sort']);_0x38761f['where']=qs[_0x80b1('0x31')](_[_0x80b1('0x32')](_0x445170[_0x80b1('0x27')],_0x47c955['filters']),_0x215a4a);if(_0x445170['query'][_0x80b1('0x33')]){_0x38761f[_0x80b1('0x34')]=_[_0x80b1('0x35')](_0x38761f[_0x80b1('0x34')],{'$or':_[_0x80b1('0x26')](_0x215a4a,function(_0x144a08){if(_0x144a08[_0x80b1('0x36')]!==_0x80b1('0x37')){var _0x2ec821={};_0x2ec821[_0x144a08[_0x80b1('0x1f')]]={'$like':'%'+_0x445170[_0x80b1('0x27')][_0x80b1('0x33')]+'%'};return _0x2ec821;}})});}_0x38761f=_[_0x80b1('0x35')]({},_0x38761f,_0x445170[_0x80b1('0x38')]);var _0x1cb03d={'where':_0x38761f[_0x80b1('0x34')]};return db[_0x80b1('0x21')][_0x80b1('0x19')](_0x1cb03d)[_0x80b1('0xb')](function(_0x3e29de){_0x56f642[_0x80b1('0x19')]=_0x3e29de;if(_0x445170[_0x80b1('0x27')]['includeAll']){_0x38761f[_0x80b1('0x39')]=[{'all':!![]}];}return db[_0x80b1('0x21')][_0x80b1('0x3a')](_0x38761f);})[_0x80b1('0xb')](function(_0x5dc2f3){_0x56f642[_0x80b1('0x3b')]=_0x5dc2f3;return _0x56f642;})[_0x80b1('0xb')](respondWithFilteredResult(_0x149b45,_0x38761f))[_0x80b1('0x14')](handleError(_0x149b45,null));};exports[_0x80b1('0x3c')]=function(_0x150b15,_0x517e97){var _0x3e9846={'raw':!![],'where':{'id':_0x150b15['params']['id']}},_0x56b019={};_0x56b019['model']=_[_0x80b1('0x28')](db['Network']['rawAttributes']);_0x56b019[_0x80b1('0x27')]=_[_0x80b1('0x28')](_0x150b15[_0x80b1('0x27')]);_0x56b019['filters']=_[_0x80b1('0x29')](_0x56b019[_0x80b1('0x25')],_0x56b019[_0x80b1('0x27')]);_0x3e9846[_0x80b1('0x2a')]=_[_0x80b1('0x29')](_0x56b019['model'],qs[_0x80b1('0x2b')](_0x150b15[_0x80b1('0x27')]['fields']));_0x3e9846[_0x80b1('0x2a')]=_0x3e9846[_0x80b1('0x2a')][_0x80b1('0x2c')]?_0x3e9846[_0x80b1('0x2a')]:_0x56b019[_0x80b1('0x25')];if(_0x150b15[_0x80b1('0x27')][_0x80b1('0x3d')]){_0x3e9846['include']=[{'all':!![]}];}_0x3e9846=_[_0x80b1('0x35')]({},_0x3e9846,_0x150b15['options']);return db[_0x80b1('0x21')]['find'](_0x3e9846)[_0x80b1('0xb')](handleEntityNotFound(_0x517e97,null))[_0x80b1('0xb')](respondWithResult(_0x517e97,null))[_0x80b1('0x14')](handleError(_0x517e97,null));};exports['create']=function(_0x432a4b,_0x3c2b27){var _0x2e65cd;return db['Network'][_0x80b1('0x3e')](_0x432a4b[_0x80b1('0x3f')],{'raw':!![]})[_0x80b1('0xb')](function(_0x2b57af){_0x2e65cd=_0x2b57af;return db[_0x80b1('0x21')][_0x80b1('0x3a')]({'where':{'type':_0x432a4b[_0x80b1('0x3f')]['type']},'raw':!![]});})['then'](function(_0xdf33b3){if(_0x2e65cd[_0x80b1('0x36')][_0x80b1('0x40')]()==_0x80b1('0x41')){var _0x36dba4=fs['readFileSync'](path[_0x80b1('0x42')](config[_0x80b1('0x43')],_0x80b1('0x44')),_0x80b1('0x45'));var _0x5e8d7d=ejs[_0x80b1('0x46')](_0x36dba4,{'networks':_0xdf33b3||[]});fs['writeFileSync'](_0x80b1('0x47'),_0x5e8d7d);return respondWithRpcPromise(_0x80b1('0x48'),'create',{'module':_0x80b1('0x49')});}else if(_0x2e65cd[_0x80b1('0x36')][_0x80b1('0x40')]()=='TURN'){var _0x3c277b=fs[_0x80b1('0x4a')](path[_0x80b1('0x42')](config[_0x80b1('0x43')],'server/files/templates/turn_multiple.ejs'),_0x80b1('0x45'));var _0x46040a=ejs[_0x80b1('0x46')](_0x3c277b,{'networks':_0xdf33b3||[]});fs[_0x80b1('0x4b')](_0x80b1('0x4c'),_0x46040a);return respondWithRpcPromise('Reload',_0x80b1('0x3e'),{'module':_0x80b1('0x49')});}else{var _0x5a2916=fs[_0x80b1('0x4a')](path['join'](config[_0x80b1('0x43')],_0x80b1('0x4d')),'utf8');var _0x2127f7=ejs['render'](_0x5a2916,{'networks':_0xdf33b3||[]});fs[_0x80b1('0x4b')](util[_0x80b1('0x4e')](_0x80b1('0x4f'),_0x432a4b[_0x80b1('0x3f')][_0x80b1('0x36')]['toLowerCase']()),_0x2127f7);return respondWithRpcPromise('Reload','create',{'module':_0x80b1('0x50')});}})[_0x80b1('0xb')](function(){return _0x2e65cd;})[_0x80b1('0xb')](respondWithResult(_0x3c2b27,0xc9))[_0x80b1('0x14')](handleError(_0x3c2b27,null));};exports[_0x80b1('0x51')]=function(_0x4fd828,_0x2e99fd){var _0xce8f57;return db[_0x80b1('0x21')][_0x80b1('0x52')]({'where':{'id':_0x4fd828[_0x80b1('0x53')]['id']}})[_0x80b1('0xb')](handleEntityNotFound(_0x2e99fd,null))['then'](saveUpdates(_0x4fd828['body'],null))[_0x80b1('0xb')](function(_0x1017a5){if(_0x1017a5){_0xce8f57=_0x1017a5;return db['Network'][_0x80b1('0x3a')]({'where':{'type':_0xce8f57['type']},'raw':!![]});}return null;})[_0x80b1('0xb')](function(_0x4f7dce){if(_0xce8f57[_0x80b1('0x36')][_0x80b1('0x40')]()==_0x80b1('0x41')){var _0x269708=fs[_0x80b1('0x4a')](path[_0x80b1('0x42')](config[_0x80b1('0x43')],_0x80b1('0x44')),'utf8');var _0x8a07a6=ejs[_0x80b1('0x46')](_0x269708,{'networks':_0x4f7dce||[]});fs[_0x80b1('0x4b')](_0x80b1('0x47'),_0x8a07a6);return respondWithRpcPromise('Reload',_0x80b1('0x51'),{'module':_0x80b1('0x49')});}else if(_0xce8f57[_0x80b1('0x36')]['toUpperCase']()=='TURN'){var _0x9040c3=fs[_0x80b1('0x4a')](path[_0x80b1('0x42')](config[_0x80b1('0x43')],_0x80b1('0x54')),_0x80b1('0x45'));var _0x2809d6=ejs[_0x80b1('0x46')](_0x9040c3,{'networks':_0x4f7dce||[]});fs['writeFileSync'](_0x80b1('0x4c'),_0x2809d6);return respondWithRpcPromise(_0x80b1('0x48'),_0x80b1('0x51'),{'module':_0x80b1('0x49')});}else{var _0x2ec07e=fs[_0x80b1('0x4a')](path[_0x80b1('0x42')](config[_0x80b1('0x43')],_0x80b1('0x4d')),_0x80b1('0x45'));var _0x5a8aef=ejs[_0x80b1('0x46')](_0x2ec07e,{'networks':_0x4f7dce||[]});fs[_0x80b1('0x4b')](util['format'](_0x80b1('0x4f'),_0x4fd828[_0x80b1('0x3f')][_0x80b1('0x36')][_0x80b1('0x55')]()),_0x5a8aef);return respondWithRpcPromise('Reload','update',{'module':_0x80b1('0x50')});}})[_0x80b1('0xb')](function(_0x13c324){if(_0x13c324){return _0xce8f57;}return null;})[_0x80b1('0xb')](respondWithResult(_0x2e99fd,null))['catch'](handleError(_0x2e99fd,null));};exports[_0x80b1('0x56')]=function(_0x15ae0e,_0x438b18){var _0x4721e6;return db[_0x80b1('0x21')]['find']({'where':{'id':_0x15ae0e['params']['id']}})[_0x80b1('0xb')](function(_0x2ee9a2){_0x4721e6=_0x2ee9a2;return _0x2ee9a2;})['then'](handleEntityNotFound(_0x438b18,null))[_0x80b1('0xb')](removeEntity(_0x438b18,null))[_0x80b1('0xb')](function(){if(_0x4721e6){return db[_0x80b1('0x21')]['findAll']({'where':{'type':_0x4721e6[_0x80b1('0x36')]},'raw':!![]});}})[_0x80b1('0xb')](function(_0x4dc315){if(_0x4721e6[_0x80b1('0x36')]['toUpperCase']()=='STUN'){var _0x11a256=fs[_0x80b1('0x4a')](path['join'](config[_0x80b1('0x43')],'server/files/templates/stun_multiple.ejs'),_0x80b1('0x45'));var _0x53ee28=ejs['render'](_0x11a256,{'networks':_0x4dc315||[]});fs[_0x80b1('0x4b')]('/etc/asterisk/stun_xcally.conf',_0x53ee28);return respondWithRpcPromise(_0x80b1('0x48'),_0x80b1('0x56'),{'module':_0x80b1('0x49')});}else if(_0x4721e6['type']['toUpperCase']()==_0x80b1('0x57')){var _0x1b63b6=fs[_0x80b1('0x4a')](path[_0x80b1('0x42')](config[_0x80b1('0x43')],'server/files/templates/turn_multiple.ejs'),_0x80b1('0x45'));var _0x4ab61b=ejs[_0x80b1('0x46')](_0x1b63b6,{'networks':_0x4dc315||[]});fs[_0x80b1('0x4b')](_0x80b1('0x4c'),_0x4ab61b);return respondWithRpcPromise(_0x80b1('0x48'),_0x80b1('0x56'),{'module':_0x80b1('0x49')});}else{var _0x7ce200=fs[_0x80b1('0x4a')](path['join'](config[_0x80b1('0x43')],_0x80b1('0x4d')),_0x80b1('0x45'));var _0x2fb440=ejs[_0x80b1('0x46')](_0x7ce200,{'networks':_0x4dc315||[]});fs[_0x80b1('0x4b')](util[_0x80b1('0x4e')]('/etc/asterisk/sip_xcally_%s.conf',_0x4721e6[_0x80b1('0x36')][_0x80b1('0x55')]()),_0x2fb440);return respondWithRpcPromise(_0x80b1('0x48'),'destroy',{'module':_0x80b1('0x50')});}})[_0x80b1('0x14')](handleError(_0x438b18,null));};
\ No newline at end of file
+var _0x1e35=['toLowerCase','destroy','util','path','ejs','lodash','../../components/parsers/qs','../../config/logger','client','http','request','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','status','offset','undefined','limit','count','update','name','send','index','map','Network','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','type','VIRTUAL','merge','options','includeAll','rows','show','rawAttributes','find','create','body','findAll','toUpperCase','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','TURN','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','res_stun_monitor.so','server/files/templates/network.ejs','/etc/asterisk/sip_xcally_%s.conf','chan_sip.so','catch','params','format'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0x1e35,0x18d));var _0x51e3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1e35[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x51e3('0x0'));var path=require(_0x51e3('0x1'));var ejs=require(_0x51e3('0x2'));var fs=require('fs');var _=require(_0x51e3('0x3'));var qs=require(_0x51e3('0x4'));var logger=require(_0x51e3('0x5'))('api');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0x51e3('0x6')][_0x51e3('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x708286,_0x75782d,_0x10fc75,_0x14a9c1){return new Promise(function(_0x14757d,_0x3394f1){var _0x25c214=_0x14a9c1||client;return _0x25c214[_0x51e3('0x8')](_0x708286,_0x10fc75)[_0x51e3('0x9')](function(_0x21b744){logger[_0x51e3('0xa')](_0x51e3('0xb'),_0x75782d,_0x51e3('0xc'));logger[_0x51e3('0xd')](_0x51e3('0xe'),_0x75782d,_0x51e3('0xc'),JSON[_0x51e3('0xf')](_0x21b744));if(_0x21b744[_0x51e3('0x10')]){if(_0x21b744[_0x51e3('0x10')][_0x51e3('0x11')]===0x1f4){logger[_0x51e3('0x10')](_0x51e3('0xb'),_0x75782d,_0x21b744['error'][_0x51e3('0x12')]);return _0x3394f1(_0x21b744[_0x51e3('0x10')][_0x51e3('0x12')]);}logger[_0x51e3('0x10')](_0x51e3('0xb'),_0x75782d,_0x21b744[_0x51e3('0x10')]['message']);return _0x14757d(_0x21b744[_0x51e3('0x10')][_0x51e3('0x12')]);}else{logger[_0x51e3('0xa')](_0x51e3('0xb'),_0x75782d,_0x51e3('0xc'));_0x14757d(_0x21b744['result'][_0x51e3('0x12')]);}})['catch'](function(_0x156679){logger['error'](_0x51e3('0xb'),_0x75782d,_0x156679);_0x3394f1(_0x156679);});});}function respondWithResult(_0x4b5153,_0x4a3e3a){_0x4a3e3a=_0x4a3e3a||0xc8;return function(_0x47728b){if(_0x47728b){return _0x4b5153[_0x51e3('0x13')](_0x4a3e3a)['json'](_0x47728b);}};}function respondWithFilteredResult(_0x4a6bc8,_0x144868){return function(_0x4dc05f){if(_0x4dc05f){var _0x57b305=typeof _0x144868[_0x51e3('0x14')]===_0x51e3('0x15')&&typeof _0x144868[_0x51e3('0x16')]===_0x51e3('0x15');var _0x1d2111=_0x4dc05f['count'];var _0x3e5b05=_0x57b305?0x0:_0x144868[_0x51e3('0x14')];var _0x1e3682=_0x57b305?_0x4dc05f[_0x51e3('0x17')]:_0x144868[_0x51e3('0x14')]+_0x144868['limit'];var _0x363b99;if(_0x1e3682>=_0x1d2111){_0x1e3682=_0x1d2111;_0x363b99=0xc8;}else{_0x363b99=0xce;}_0x4a6bc8['status'](_0x363b99);return _0x4a6bc8['set']('Content-Range',_0x3e5b05+'-'+_0x1e3682+'/'+_0x1d2111)['json'](_0x4dc05f);}return null;};}function saveUpdates(_0x41d84a){return function(_0xcbd24c){if(_0xcbd24c){return _0xcbd24c[_0x51e3('0x18')](_0x41d84a)[_0x51e3('0x9')](function(_0x5abf41){return _0x5abf41;});}return null;};}function removeEntity(_0xfa8b0c){return function(_0x4d4753){if(_0x4d4753){return _0x4d4753['destroy']()['then'](function(){_0xfa8b0c[_0x51e3('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5d1513){return function(_0x5c2078){if(!_0x5c2078){_0x5d1513['sendStatus'](0x194);}return _0x5c2078;};}function handleError(_0x3c12f1,_0x5764a3){_0x5764a3=_0x5764a3||0x1f4;return function(_0x33619d){logger[_0x51e3('0x10')](_0x33619d['stack']);if(_0x33619d[_0x51e3('0x19')]){delete _0x33619d['name'];}_0x3c12f1[_0x51e3('0x13')](_0x5764a3)[_0x51e3('0x1a')](_0x33619d);};}exports[_0x51e3('0x1b')]=function(_0x26a847,_0x4bfaa0){var _0x2ee6b0={},_0x34f78b={},_0x158e13={'count':0x0,'rows':[]};var _0x48db98=_[_0x51e3('0x1c')](db[_0x51e3('0x1d')]['rawAttributes'],function(_0x5d5f73){return{'name':_0x5d5f73['fieldName'],'type':_0x5d5f73['type'][_0x51e3('0x1e')]};});_0x34f78b[_0x51e3('0x1f')]=_['map'](_0x48db98,_0x51e3('0x19'));_0x34f78b[_0x51e3('0x20')]=_[_0x51e3('0x21')](_0x26a847[_0x51e3('0x20')]);_0x34f78b[_0x51e3('0x22')]=_[_0x51e3('0x23')](_0x34f78b['model'],_0x34f78b['query']);_0x2ee6b0[_0x51e3('0x24')]=_['intersection'](_0x34f78b['model'],qs[_0x51e3('0x25')](_0x26a847[_0x51e3('0x20')][_0x51e3('0x25')]));_0x2ee6b0[_0x51e3('0x24')]=_0x2ee6b0[_0x51e3('0x24')]['length']?_0x2ee6b0[_0x51e3('0x24')]:_0x34f78b[_0x51e3('0x1f')];if(!_0x26a847[_0x51e3('0x20')][_0x51e3('0x26')](_0x51e3('0x27'))){_0x2ee6b0[_0x51e3('0x16')]=qs['limit'](_0x26a847['query'][_0x51e3('0x16')]);_0x2ee6b0['offset']=qs['offset'](_0x26a847[_0x51e3('0x20')][_0x51e3('0x14')]);}_0x2ee6b0[_0x51e3('0x28')]=qs[_0x51e3('0x29')](_0x26a847[_0x51e3('0x20')][_0x51e3('0x29')]);_0x2ee6b0[_0x51e3('0x2a')]=qs[_0x51e3('0x22')](_['pick'](_0x26a847[_0x51e3('0x20')],_0x34f78b['filters']),_0x48db98);if(_0x26a847[_0x51e3('0x20')][_0x51e3('0x2b')]){_0x2ee6b0[_0x51e3('0x2a')]=_['merge'](_0x2ee6b0[_0x51e3('0x2a')],{'$or':_['map'](_0x48db98,function(_0x44f969){if(_0x44f969[_0x51e3('0x2c')]!==_0x51e3('0x2d')){var _0x124766={};_0x124766[_0x44f969['name']]={'$like':'%'+_0x26a847[_0x51e3('0x20')][_0x51e3('0x2b')]+'%'};return _0x124766;}})});}_0x2ee6b0=_[_0x51e3('0x2e')]({},_0x2ee6b0,_0x26a847[_0x51e3('0x2f')]);var _0x2d0c94={'where':_0x2ee6b0[_0x51e3('0x2a')]};return db[_0x51e3('0x1d')][_0x51e3('0x17')](_0x2d0c94)[_0x51e3('0x9')](function(_0x51bb6b){_0x158e13[_0x51e3('0x17')]=_0x51bb6b;if(_0x26a847[_0x51e3('0x20')][_0x51e3('0x30')]){_0x2ee6b0['include']=[{'all':!![]}];}return db[_0x51e3('0x1d')]['findAll'](_0x2ee6b0);})[_0x51e3('0x9')](function(_0x1f3952){_0x158e13[_0x51e3('0x31')]=_0x1f3952;return _0x158e13;})[_0x51e3('0x9')](respondWithFilteredResult(_0x4bfaa0,_0x2ee6b0))['catch'](handleError(_0x4bfaa0,null));};exports[_0x51e3('0x32')]=function(_0x2a01c1,_0x364ec9){var _0x213d43={'raw':!![],'where':{'id':_0x2a01c1['params']['id']}},_0x155dad={};_0x155dad['model']=_['keys'](db[_0x51e3('0x1d')][_0x51e3('0x33')]);_0x155dad[_0x51e3('0x20')]=_['keys'](_0x2a01c1[_0x51e3('0x20')]);_0x155dad['filters']=_[_0x51e3('0x23')](_0x155dad[_0x51e3('0x1f')],_0x155dad[_0x51e3('0x20')]);_0x213d43[_0x51e3('0x24')]=_[_0x51e3('0x23')](_0x155dad['model'],qs[_0x51e3('0x25')](_0x2a01c1[_0x51e3('0x20')][_0x51e3('0x25')]));_0x213d43[_0x51e3('0x24')]=_0x213d43[_0x51e3('0x24')]['length']?_0x213d43[_0x51e3('0x24')]:_0x155dad[_0x51e3('0x1f')];if(_0x2a01c1['query'][_0x51e3('0x30')]){_0x213d43['include']=[{'all':!![]}];}_0x213d43=_[_0x51e3('0x2e')]({},_0x213d43,_0x2a01c1[_0x51e3('0x2f')]);return db[_0x51e3('0x1d')][_0x51e3('0x34')](_0x213d43)[_0x51e3('0x9')](handleEntityNotFound(_0x364ec9,null))[_0x51e3('0x9')](respondWithResult(_0x364ec9,null))['catch'](handleError(_0x364ec9,null));};exports[_0x51e3('0x35')]=function(_0x59547e,_0x4496fc){var _0x334c22;return db[_0x51e3('0x1d')][_0x51e3('0x35')](_0x59547e[_0x51e3('0x36')],{'raw':!![]})[_0x51e3('0x9')](function(_0x2e90b1){_0x334c22=_0x2e90b1;return db[_0x51e3('0x1d')][_0x51e3('0x37')]({'where':{'type':_0x59547e['body'][_0x51e3('0x2c')]},'raw':!![]});})[_0x51e3('0x9')](function(_0x50de2b){if(_0x334c22[_0x51e3('0x2c')][_0x51e3('0x38')]()==_0x51e3('0x39')){var _0x58fa44=fs[_0x51e3('0x3a')](path[_0x51e3('0x3b')](config[_0x51e3('0x3c')],_0x51e3('0x3d')),_0x51e3('0x3e'));var _0x116d7b=ejs[_0x51e3('0x3f')](_0x58fa44,{'networks':_0x50de2b||[]});fs[_0x51e3('0x40')](_0x51e3('0x41'),_0x116d7b);return respondWithRpcPromise(_0x51e3('0x42'),_0x51e3('0x35'),{'module':'res_stun_monitor.so'});}else if(_0x334c22[_0x51e3('0x2c')][_0x51e3('0x38')]()==_0x51e3('0x43')){var _0x22d5f9=fs[_0x51e3('0x3a')](path[_0x51e3('0x3b')](config[_0x51e3('0x3c')],_0x51e3('0x44')),'utf8');var _0xf2d67d=ejs[_0x51e3('0x3f')](_0x22d5f9,{'networks':_0x50de2b||[]});fs[_0x51e3('0x40')](_0x51e3('0x45'),_0xf2d67d);return respondWithRpcPromise(_0x51e3('0x42'),_0x51e3('0x35'),{'module':_0x51e3('0x46')});}else{var _0x8fbc69=fs['readFileSync'](path[_0x51e3('0x3b')](config[_0x51e3('0x3c')],_0x51e3('0x47')),'utf8');var _0x24a590=ejs['render'](_0x8fbc69,{'networks':_0x50de2b||[]});fs[_0x51e3('0x40')](util['format'](_0x51e3('0x48'),_0x59547e[_0x51e3('0x36')][_0x51e3('0x2c')]['toLowerCase']()),_0x24a590);return respondWithRpcPromise(_0x51e3('0x42'),'create',{'module':_0x51e3('0x49')});}})[_0x51e3('0x9')](function(){return _0x334c22;})[_0x51e3('0x9')](respondWithResult(_0x4496fc,0xc9))[_0x51e3('0x4a')](handleError(_0x4496fc,null));};exports[_0x51e3('0x18')]=function(_0x174691,_0x88090f){var _0x3546bb;return db['Network'][_0x51e3('0x34')]({'where':{'id':_0x174691[_0x51e3('0x4b')]['id']}})['then'](handleEntityNotFound(_0x88090f,null))[_0x51e3('0x9')](saveUpdates(_0x174691[_0x51e3('0x36')],null))['then'](function(_0x280da0){if(_0x280da0){_0x3546bb=_0x280da0;return db[_0x51e3('0x1d')][_0x51e3('0x37')]({'where':{'type':_0x3546bb[_0x51e3('0x2c')]},'raw':!![]});}return null;})[_0x51e3('0x9')](function(_0x3314d5){if(_0x3546bb[_0x51e3('0x2c')][_0x51e3('0x38')]()==_0x51e3('0x39')){var _0x2c6f31=fs['readFileSync'](path['join'](config[_0x51e3('0x3c')],_0x51e3('0x3d')),_0x51e3('0x3e'));var _0x53042b=ejs['render'](_0x2c6f31,{'networks':_0x3314d5||[]});fs[_0x51e3('0x40')](_0x51e3('0x41'),_0x53042b);return respondWithRpcPromise('Reload',_0x51e3('0x18'),{'module':'res_stun_monitor.so'});}else if(_0x3546bb[_0x51e3('0x2c')][_0x51e3('0x38')]()=='TURN'){var _0x408f20=fs[_0x51e3('0x3a')](path[_0x51e3('0x3b')](config[_0x51e3('0x3c')],_0x51e3('0x44')),_0x51e3('0x3e'));var _0x263b5a=ejs[_0x51e3('0x3f')](_0x408f20,{'networks':_0x3314d5||[]});fs[_0x51e3('0x40')](_0x51e3('0x45'),_0x263b5a);return respondWithRpcPromise('Reload','update',{'module':_0x51e3('0x46')});}else{var _0x1363f5=fs[_0x51e3('0x3a')](path[_0x51e3('0x3b')](config['root'],_0x51e3('0x47')),_0x51e3('0x3e'));var _0x2cb8e0=ejs[_0x51e3('0x3f')](_0x1363f5,{'networks':_0x3314d5||[]});fs[_0x51e3('0x40')](util[_0x51e3('0x4c')](_0x51e3('0x48'),_0x174691[_0x51e3('0x36')][_0x51e3('0x2c')][_0x51e3('0x4d')]()),_0x2cb8e0);return respondWithRpcPromise(_0x51e3('0x42'),_0x51e3('0x18'),{'module':_0x51e3('0x49')});}})[_0x51e3('0x9')](function(_0x20a1bd){if(_0x20a1bd){return _0x3546bb;}return null;})[_0x51e3('0x9')](respondWithResult(_0x88090f,null))[_0x51e3('0x4a')](handleError(_0x88090f,null));};exports[_0x51e3('0x4e')]=function(_0x334ee1,_0x4e24a1){var _0x19e8b9;return db[_0x51e3('0x1d')][_0x51e3('0x34')]({'where':{'id':_0x334ee1['params']['id']}})['then'](function(_0x4765fd){_0x19e8b9=_0x4765fd;return _0x4765fd;})[_0x51e3('0x9')](handleEntityNotFound(_0x4e24a1,null))[_0x51e3('0x9')](removeEntity(_0x4e24a1,null))[_0x51e3('0x9')](function(){if(_0x19e8b9){return db['Network'][_0x51e3('0x37')]({'where':{'type':_0x19e8b9[_0x51e3('0x2c')]},'raw':!![]});}})['then'](function(_0x1cdf51){if(_0x19e8b9[_0x51e3('0x2c')][_0x51e3('0x38')]()==_0x51e3('0x39')){var _0x5428c9=fs[_0x51e3('0x3a')](path[_0x51e3('0x3b')](config['root'],_0x51e3('0x3d')),'utf8');var _0x10cb69=ejs[_0x51e3('0x3f')](_0x5428c9,{'networks':_0x1cdf51||[]});fs[_0x51e3('0x40')](_0x51e3('0x41'),_0x10cb69);return respondWithRpcPromise(_0x51e3('0x42'),_0x51e3('0x4e'),{'module':_0x51e3('0x46')});}else if(_0x19e8b9[_0x51e3('0x2c')][_0x51e3('0x38')]()==_0x51e3('0x43')){var _0x16bb3f=fs[_0x51e3('0x3a')](path[_0x51e3('0x3b')](config[_0x51e3('0x3c')],'server/files/templates/turn_multiple.ejs'),_0x51e3('0x3e'));var _0xfd548a=ejs['render'](_0x16bb3f,{'networks':_0x1cdf51||[]});fs[_0x51e3('0x40')](_0x51e3('0x45'),_0xfd548a);return respondWithRpcPromise(_0x51e3('0x42'),_0x51e3('0x4e'),{'module':_0x51e3('0x46')});}else{var _0x2dada6=fs['readFileSync'](path[_0x51e3('0x3b')](config[_0x51e3('0x3c')],'server/files/templates/network.ejs'),_0x51e3('0x3e'));var _0x6f2c6e=ejs[_0x51e3('0x3f')](_0x2dada6,{'networks':_0x1cdf51||[]});fs[_0x51e3('0x40')](util[_0x51e3('0x4c')](_0x51e3('0x48'),_0x19e8b9['type'][_0x51e3('0x4d')]()),_0x6f2c6e);return respondWithRpcPromise(_0x51e3('0x42'),_0x51e3('0x4e'),{'module':_0x51e3('0x49')});}})[_0x51e3('0x4a')](handleError(_0x4e24a1,null));};
\ No newline at end of file
index 32d4e0a..3e92e9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b73=['../../config/logger','api','moment','request-promise','rimraf','../../config/environment','exports','Network','network','util'];(function(_0x2b56da,_0x8b6972){var _0x5a1977=function(_0x2f309d){while(--_0x2f309d){_0x2b56da['push'](_0x2b56da['shift']());}};_0x5a1977(++_0x8b6972);}(_0x1b73,0x1d5));var _0x31b7=function(_0x143e96,_0x410479){_0x143e96=_0x143e96-0x0;var _0x3a4ab4=_0x1b73[_0x143e96];return _0x3a4ab4;};'use strict';var _=require('lodash');var util=require(_0x31b7('0x0'));var logger=require(_0x31b7('0x1'))(_0x31b7('0x2'));var moment=require(_0x31b7('0x3'));var BPromise=require('bluebird');var rp=require(_0x31b7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x31b7('0x5'));var config=require(_0x31b7('0x6'));var attributes=require('./network.attributes');module[_0x31b7('0x7')]=function(_0x3d058f,_0x15c31e){return _0x3d058f['define'](_0x31b7('0x8'),attributes,{'tableName':_0x31b7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc36d=['rimraf','./network.attributes','exports','define','network','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x5e38ef,_0x24abe7){var _0x47293d=function(_0x104c5f){while(--_0x104c5f){_0x5e38ef['push'](_0x5e38ef['shift']());}};_0x47293d(++_0x24abe7);}(_0xc36d,0x7d));var _0xdc36=function(_0x51af96,_0x42104c){_0x51af96=_0x51af96-0x0;var _0x2bb16b=_0xc36d[_0x51af96];return _0x2bb16b;};'use strict';var _=require(_0xdc36('0x0'));var util=require(_0xdc36('0x1'));var logger=require(_0xdc36('0x2'))(_0xdc36('0x3'));var moment=require(_0xdc36('0x4'));var BPromise=require(_0xdc36('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xdc36('0x6'));var rimraf=require(_0xdc36('0x7'));var config=require('../../config/environment');var attributes=require(_0xdc36('0x8'));module[_0xdc36('0x9')]=function(_0x186c58,_0x11ad3b){return _0x186c58[_0xdc36('0xa')]('Network',attributes,{'tableName':_0xdc36('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6462251..8375f04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x473e6d,_0xd89c5){var _0x4c6db5=function(_0x2ea83d){while(--_0x2ea83d){_0x473e6d['push'](_0x473e6d['shift']());}};_0x4c6db5(++_0xd89c5);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
+var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x20ab6b,_0x486020){var _0x4f7da2=function(_0x443821){while(--_0x443821){_0x20ab6b['push'](_0x20ab6b['shift']());}};_0x4f7da2(++_0x486020);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
index 847fd2c..3414cfd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x065e=['isAuthenticated','index','get','/:id','show','getDispositions','/:id/canned_answers','getAnswers','getApplications','getInteractions','/:id/users','post','create','/:id/dispositions','addDisposition','/:id/notify','notify','/:id/applications','addApplications','addAgents','put','update','delete','destroy','removeDispositions','removeAgents','exports','multer','express','Router','fs-extra','../../config/environment','./openchannelAccount.controller'];(function(_0x2c4bf2,_0xe2c323){var _0x2000d=function(_0x30d1b7){while(--_0x30d1b7){_0x2c4bf2['push'](_0x2c4bf2['shift']());}};_0x2000d(++_0xe2c323);}(_0x065e,0x1a7));var _0xe065=function(_0x194a56,_0x4ff13c){_0x194a56=_0x194a56-0x0;var _0x574e25=_0x065e[_0x194a56];return _0x574e25;};'use strict';var multer=require(_0xe065('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xe065('0x1'));var router=express[_0xe065('0x2')]();var fs_extra=require(_0xe065('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xe065('0x4'));var controller=require(_0xe065('0x5'));router['get']('/',auth[_0xe065('0x6')](),controller[_0xe065('0x7')]);router[_0xe065('0x8')]('/describe',auth[_0xe065('0x6')](),controller['describe']);router[_0xe065('0x8')](_0xe065('0x9'),auth[_0xe065('0x6')](),controller[_0xe065('0xa')]);router[_0xe065('0x8')]('/:id/dispositions',auth[_0xe065('0x6')](),controller[_0xe065('0xb')]);router[_0xe065('0x8')](_0xe065('0xc'),auth[_0xe065('0x6')](),controller[_0xe065('0xd')]);router['get']('/:id/applications',auth[_0xe065('0x6')](),controller[_0xe065('0xe')]);router[_0xe065('0x8')]('/:id/interactions',auth[_0xe065('0x6')](),controller[_0xe065('0xf')]);router[_0xe065('0x8')](_0xe065('0x10'),auth[_0xe065('0x6')](),controller['getAgents']);router[_0xe065('0x11')]('/',auth[_0xe065('0x6')](),controller[_0xe065('0x12')]);router[_0xe065('0x11')](_0xe065('0x13'),auth[_0xe065('0x6')](),controller[_0xe065('0x14')]);router['post'](_0xe065('0xc'),auth[_0xe065('0x6')](),controller['addAnswer']);router[_0xe065('0x11')](_0xe065('0x15'),controller[_0xe065('0x16')]);router[_0xe065('0x11')](_0xe065('0x17'),auth[_0xe065('0x6')](),controller[_0xe065('0x18')]);router['post'](_0xe065('0x10'),auth['isAuthenticated'](),controller[_0xe065('0x19')]);router[_0xe065('0x11')]('/:id/send',auth[_0xe065('0x6')](),controller['send']);router[_0xe065('0x1a')](_0xe065('0x9'),auth[_0xe065('0x6')](),controller[_0xe065('0x1b')]);router[_0xe065('0x1c')](_0xe065('0x9'),auth[_0xe065('0x6')](),controller[_0xe065('0x1d')]);router[_0xe065('0x1c')]('/:id/dispositions',auth[_0xe065('0x6')](),controller[_0xe065('0x1e')]);router[_0xe065('0x1c')](_0xe065('0xc'),auth['isAuthenticated'](),controller['removeAnswers']);router[_0xe065('0x1c')]('/:id/users',auth[_0xe065('0x6')](),controller[_0xe065('0x1f')]);module[_0xe065('0x20')]=router;
\ No newline at end of file
+var _0xc27f=['addAnswer','/:id/notify','notify','/:id/applications','addApplications','/:id/send','send','put','delete','/:id','removeAnswers','removeAgents','exports','path','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','describe','show','getDispositions','/:id/canned_answers','getAnswers','getApplications','/:id/interactions','getInteractions','/:id/users','getAgents','/:id/dispositions','addDisposition','post'];(function(_0x1800dd,_0x1d6328){var _0x121fdd=function(_0x892fbe){while(--_0x892fbe){_0x1800dd['push'](_0x1800dd['shift']());}};_0x121fdd(++_0x1d6328);}(_0xc27f,0x16b));var _0xfc27=function(_0x3e9579,_0x5581e5){_0x3e9579=_0x3e9579-0x0;var _0x4cd81e=_0xc27f[_0x3e9579];return _0x4cd81e;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xfc27('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xfc27('0x1')]();var fs_extra=require(_0xfc27('0x2'));var auth=require(_0xfc27('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xfc27('0x4'));var controller=require(_0xfc27('0x5'));router[_0xfc27('0x6')]('/',auth[_0xfc27('0x7')](),controller[_0xfc27('0x8')]);router['get']('/describe',auth[_0xfc27('0x7')](),controller[_0xfc27('0x9')]);router[_0xfc27('0x6')]('/:id',auth['isAuthenticated'](),controller[_0xfc27('0xa')]);router[_0xfc27('0x6')]('/:id/dispositions',auth[_0xfc27('0x7')](),controller[_0xfc27('0xb')]);router['get'](_0xfc27('0xc'),auth[_0xfc27('0x7')](),controller[_0xfc27('0xd')]);router[_0xfc27('0x6')]('/:id/applications',auth[_0xfc27('0x7')](),controller[_0xfc27('0xe')]);router[_0xfc27('0x6')](_0xfc27('0xf'),auth[_0xfc27('0x7')](),controller[_0xfc27('0x10')]);router[_0xfc27('0x6')](_0xfc27('0x11'),auth[_0xfc27('0x7')](),controller[_0xfc27('0x12')]);router['post']('/',auth[_0xfc27('0x7')](),controller['create']);router['post'](_0xfc27('0x13'),auth[_0xfc27('0x7')](),controller[_0xfc27('0x14')]);router[_0xfc27('0x15')]('/:id/canned_answers',auth[_0xfc27('0x7')](),controller[_0xfc27('0x16')]);router[_0xfc27('0x15')](_0xfc27('0x17'),controller[_0xfc27('0x18')]);router['post'](_0xfc27('0x19'),auth[_0xfc27('0x7')](),controller[_0xfc27('0x1a')]);router[_0xfc27('0x15')](_0xfc27('0x11'),auth[_0xfc27('0x7')](),controller['addAgents']);router['post'](_0xfc27('0x1b'),auth[_0xfc27('0x7')](),controller[_0xfc27('0x1c')]);router[_0xfc27('0x1d')]('/:id',auth[_0xfc27('0x7')](),controller['update']);router[_0xfc27('0x1e')](_0xfc27('0x1f'),auth[_0xfc27('0x7')](),controller['destroy']);router['delete'](_0xfc27('0x13'),auth['isAuthenticated'](),controller['removeDispositions']);router[_0xfc27('0x1e')](_0xfc27('0xc'),auth[_0xfc27('0x7')](),controller[_0xfc27('0x20')]);router[_0xfc27('0x1e')](_0xfc27('0x11'),auth['isAuthenticated'](),controller[_0xfc27('0x21')]);module[_0xfc27('0x22')]=router;
\ No newline at end of file
index decc93b..c7dda5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d5f=['BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDisposition','randomstring','exports','STRING','name','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}'];(function(_0x1eea1d,_0x47344c){var _0xe6aba1=function(_0x301004){while(--_0x301004){_0x1eea1d['push'](_0x1eea1d['shift']());}};_0xe6aba1(++_0x47344c);}(_0x2d5f,0x1bd));var _0xf2d5=function(_0x14b4b2,_0x42aed0){_0x14b4b2=_0x14b4b2-0x0;var _0x2710fd=_0x2d5f[_0x14b4b2];return _0x2710fd;};'use strict';var Sequelize=require('sequelize');var rs=require(_0xf2d5('0x0'));module[_0xf2d5('0x1')]={'name':{'type':Sequelize[_0xf2d5('0x2')],'unique':_0xf2d5('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0xf2d5('0x2')]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0xf2d5('0x2')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xf2d5('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xf2d5('0x4')],'defaultValue':function(){return _0xf2d5('0x5');}},'notificationSound':{'type':Sequelize[_0xf2d5('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xf2d5('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xf2d5('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0xf2d5('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize[_0xf2d5('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xf2d5('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xf2d5('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf2d5('0x7')],'allowNull':!![],'defaultValue':null,'comment':_0xf2d5('0x8')},'mandatoryDisposition':{'type':Sequelize[_0xf2d5('0x6')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x589856){if(!_0x589856)this[_0xf2d5('0x9')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0xf2d5('0xa'),_0x589856);}}};
\ No newline at end of file
+var _0x06b8=['generate','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','mandatoryDisposition','sequelize','randomstring','exports','STRING','name'];(function(_0x3e7c5a,_0x2e257d){var _0x11d30d=function(_0x193579){while(--_0x193579){_0x3e7c5a['push'](_0x3e7c5a['shift']());}};_0x11d30d(++_0x2e257d);}(_0x06b8,0x12f));var _0x806b=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x06b8[_0x3bf83f];return _0x22c4a9;};'use strict';var Sequelize=require(_0x806b('0x0'));var rs=require(_0x806b('0x1'));module[_0x806b('0x2')]={'name':{'type':Sequelize[_0x806b('0x3')],'unique':_0x806b('0x4'),'allowNull':![]},'description':{'type':Sequelize[_0x806b('0x3')]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x806b('0x5')]();}},'replyUri':{'type':Sequelize['STRING'],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x806b('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x806b('0x6');}},'notificationSound':{'type':Sequelize[_0x806b('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x806b('0x7')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0x806b('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x806b('0x3')]},'queueTransfer':{'type':Sequelize[_0x806b('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x806b('0x8')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x806b('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x806b('0x9')},'mandatoryDisposition':{'type':Sequelize[_0x806b('0x7')],'defaultValue':![],'comment':_0x806b('0xa'),'set':function(_0x38c157){if(!_0x38c157)this['setDataValue'](_0x806b('0xb'),null);this[_0x806b('0xc')](_0x806b('0xd'),_0x38c157);}}};
\ No newline at end of file
index 55654b3..7a52460 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x553f=['OpenchannelInteraction','externalUrl','ContactId','firstName','messageId','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','queueId','OpenchannelQueue','queue','Start','startRouting','EventManager','notify','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','finally','send','getApplications','getInteractions','Contact','Owner','internal','Tag','Tags','color','tag','addAgents','omit','ids','spread','userOpenchannelAccount:save','isArray','emit','userOpenchannelAccount:remove','getAgents','CmList','out','OpenchannelMessage','dataValues','Messages','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','jayson/promise','client','http','request','then','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','info','result','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','save','update','destroy','get','OpenchannelAccounts','UserProfileResource','sendStatus','stack','name','index','Pause','mandatoryDispositionPause','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','pick','filter','merge','where','options','OpenchannelAccount','findAll','rows','catch','length','includeAll','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','nolimit','include','removeDispositions','CannedAnswer','getAnswers','removeAnswers','openchannel','CmContact','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','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','Contacts','DESC','OpenchannelApplication','Applications','applications','List','orderBy','priority','asc','account','contact','lastName','threadId'];(function(_0x513f0c,_0x2518d2){var _0x4e21ba=function(_0x497a54){while(--_0x497a54){_0x513f0c['push'](_0x513f0c['shift']());}};_0x4e21ba(++_0x2518d2);}(_0x553f,0x1c0));var _0xf553=function(_0x475c1a,_0x36bef6){_0x475c1a=_0x475c1a-0x0;var _0x530956=_0x553f[_0x475c1a];return _0x530956;};'use strict';var emlformat=require(_0xf553('0x0'));var rimraf=require(_0xf553('0x1'));var zipdir=require(_0xf553('0x2'));var jsonpatch=require(_0xf553('0x3'));var rp=require(_0xf553('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xf553('0x5'));var util=require('util');var path=require(_0xf553('0x6'));var sox=require(_0xf553('0x7'));var csv=require(_0xf553('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf553('0x9'));var _=require(_0xf553('0xa'));var squel=require(_0xf553('0xb'));var crypto=require('crypto');var jsforce=require(_0xf553('0xc'));var deskjs=require(_0xf553('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf553('0xe'));var authService=require(_0xf553('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xf553('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf553('0x11'))(_0xf553('0x12'));var utils=require('../../config/utils');var config=require(_0xf553('0x13'));var licenseUtil=require(_0xf553('0x14'));var db=require(_0xf553('0x15'))['db'];config[_0xf553('0x16')]=_[_0xf553('0x17')](config[_0xf553('0x16')],{'host':_0xf553('0x18'),'port':0x18eb});var socket=require(_0xf553('0x19'))(new Redis(config[_0xf553('0x16')]));require(_0xf553('0x1a'))['register'](socket);var jayson=require(_0xf553('0x1b'));var client=jayson[_0xf553('0x1c')]['http']({'port':0x232c});var client9002=jayson[_0xf553('0x1c')][_0xf553('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x2cef54,_0x3197ea,_0x46674e,_0x2a2eed){return new BPromise(function(_0x4b4292,_0x450bb3){var _0x264bc1=_0x2a2eed||client;return _0x264bc1[_0xf553('0x1e')](_0x2cef54,_0x46674e)[_0xf553('0x1f')](function(_0x15e19e){logger['info'](_0xf553('0x20'),_0x3197ea,_0xf553('0x21'));logger['debug']('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x3197ea,_0xf553('0x21'),JSON[_0xf553('0x22')](_0x15e19e));if(_0x15e19e['error']){if(_0x15e19e['error'][_0xf553('0x23')]===0x1f4){logger['error'](_0xf553('0x20'),_0x3197ea,_0x15e19e[_0xf553('0x24')][_0xf553('0x25')]);return _0x450bb3(_0x15e19e[_0xf553('0x24')][_0xf553('0x25')]);}logger[_0xf553('0x24')]('OpenchannelAccount,\x20%s,\x20%s',_0x3197ea,_0x15e19e['error'][_0xf553('0x25')]);return _0x4b4292(_0x15e19e[_0xf553('0x24')]['message']);}else{logger[_0xf553('0x26')]('OpenchannelAccount,\x20%s,\x20%s',_0x3197ea,_0xf553('0x21'));_0x4b4292(_0x15e19e[_0xf553('0x27')][_0xf553('0x25')]);}})['catch'](function(_0x1b9a57){logger['error'](_0xf553('0x20'),_0x3197ea,_0x1b9a57);_0x450bb3(_0x1b9a57);});});}function respondWithStatusCode(_0x3589b3,_0x5c4dd2){_0x5c4dd2=_0x5c4dd2||0xcc;return function(_0x466be4){if(_0x466be4){return _0x3589b3['sendStatus'](_0x5c4dd2);}return _0x3589b3[_0xf553('0x28')](_0x5c4dd2)[_0xf553('0x29')]();};}function respondWithResult(_0x4cd31a,_0x35b254){_0x35b254=_0x35b254||0xc8;return function(_0x10d0f2){if(_0x10d0f2){return _0x4cd31a[_0xf553('0x28')](_0x35b254)['json'](_0x10d0f2);}};}function respondWithFilteredResult(_0x4749d0,_0x3e06e0){return function(_0x13b084){if(_0x13b084){var _0x12075e=typeof _0x3e06e0['offset']===_0xf553('0x2a')&&typeof _0x3e06e0[_0xf553('0x2b')]===_0xf553('0x2a');var _0xac9992=_0x13b084[_0xf553('0x2c')];var _0x2e436c=_0x12075e?0x0:_0x3e06e0[_0xf553('0x2d')];var _0x1a2c21=_0x12075e?_0x13b084['count']:_0x3e06e0[_0xf553('0x2d')]+_0x3e06e0[_0xf553('0x2b')];var _0x52a652;if(_0x1a2c21>=_0xac9992){_0x1a2c21=_0xac9992;_0x52a652=0xc8;}else{_0x52a652=0xce;}_0x4749d0[_0xf553('0x28')](_0x52a652);return _0x4749d0[_0xf553('0x2e')](_0xf553('0x2f'),_0x2e436c+'-'+_0x1a2c21+'/'+_0xac9992)[_0xf553('0x30')](_0x13b084);}return null;};}function patchUpdates(_0x3c8b39){return function(_0x4f21e4){try{jsonpatch[_0xf553('0x31')](_0x4f21e4,_0x3c8b39,!![]);}catch(_0xfa0dec){return BPromise[_0xf553('0x32')](_0xfa0dec);}return _0x4f21e4[_0xf553('0x33')]();};}function saveUpdates(_0x3648a3,_0x22c78f){return function(_0x341fca){if(_0x341fca){return _0x341fca[_0xf553('0x34')](_0x3648a3)[_0xf553('0x1f')](function(_0x2d2904){return _0x2d2904;});}return null;};}function removeEntity(_0x2808cc,_0x545d45){return function(_0x2c13ed){if(_0x2c13ed){return _0x2c13ed[_0xf553('0x35')]()[_0xf553('0x1f')](function(){var _0xd45024=_0x2c13ed[_0xf553('0x36')]({'plain':!![]});var _0x24ab7b=_0xf553('0x37');return db[_0xf553('0x38')][_0xf553('0x35')]({'where':{'type':_0x24ab7b,'resourceId':_0xd45024['id']}})['then'](function(){return _0x2c13ed;});})[_0xf553('0x1f')](function(){_0x2808cc[_0xf553('0x28')](0xcc)[_0xf553('0x29')]();});}};}function handleEntityNotFound(_0x2eefbd,_0x56bb41){return function(_0x3c7d21){if(!_0x3c7d21){_0x2eefbd[_0xf553('0x39')](0x194);}return _0x3c7d21;};}function handleError(_0x3dfc85,_0x3c405b){_0x3c405b=_0x3c405b||0x1f4;return function(_0x33eed6){logger[_0xf553('0x24')](_0x33eed6[_0xf553('0x3a')]);if(_0x33eed6[_0xf553('0x3b')]){delete _0x33eed6[_0xf553('0x3b')];}_0x3dfc85[_0xf553('0x28')](_0x3c405b)['send'](_0x33eed6);};}exports[_0xf553('0x3c')]=function(_0x101518,_0x266b9d){var _0x5d7ef7={'include':[{'model':db[_0xf553('0x3d')],'as':_0xf553('0x3e')}]},_0x92992f={},_0x553d7f={'count':0x0,'rows':[]};var _0x582931=_[_0xf553('0x3f')](db['OpenchannelAccount'][_0xf553('0x40')],function(_0x1e334d){return{'name':_0x1e334d[_0xf553('0x41')],'type':_0x1e334d[_0xf553('0x42')][_0xf553('0x43')]};});_0x92992f[_0xf553('0x44')]=_['map'](_0x582931,_0xf553('0x3b'));_0x92992f[_0xf553('0x45')]=_[_0xf553('0x46')](_0x101518[_0xf553('0x45')]);_0x92992f[_0xf553('0x47')]=_[_0xf553('0x48')](_0x92992f[_0xf553('0x44')],_0x92992f[_0xf553('0x45')]);_0x5d7ef7['attributes']=_[_0xf553('0x48')](_0x92992f[_0xf553('0x44')],qs[_0xf553('0x49')](_0x101518[_0xf553('0x45')][_0xf553('0x49')]));_0x5d7ef7[_0xf553('0x4a')]=_0x5d7ef7[_0xf553('0x4a')]['length']?_0x5d7ef7[_0xf553('0x4a')]:_0x92992f[_0xf553('0x44')];if(!_0x101518['query'][_0xf553('0x4b')]('nolimit')){_0x5d7ef7[_0xf553('0x2b')]=qs[_0xf553('0x2b')](_0x101518[_0xf553('0x45')][_0xf553('0x2b')]);_0x5d7ef7[_0xf553('0x2d')]=qs[_0xf553('0x2d')](_0x101518[_0xf553('0x45')][_0xf553('0x2d')]);}_0x5d7ef7[_0xf553('0x4c')]=qs[_0xf553('0x4d')](_0x101518[_0xf553('0x45')][_0xf553('0x4d')]);_0x5d7ef7['where']=qs[_0xf553('0x47')](_[_0xf553('0x4e')](_0x101518[_0xf553('0x45')],_0x92992f[_0xf553('0x47')]),_0x582931);if(_0x101518['query'][_0xf553('0x4f')]){_0x5d7ef7['where']=_[_0xf553('0x50')](_0x5d7ef7[_0xf553('0x51')],{'$or':_['map'](_0x582931,function(_0x374c59){if(_0x374c59['type']!=='VIRTUAL'){var _0x441c12={};_0x441c12[_0x374c59[_0xf553('0x3b')]]={'$like':'%'+_0x101518[_0xf553('0x45')][_0xf553('0x4f')]+'%'};return _0x441c12;}})});}_0x5d7ef7=_['merge']({},_0x5d7ef7,_0x101518[_0xf553('0x52')]);var _0x2adae9={'where':_0x5d7ef7[_0xf553('0x51')]};return db[_0xf553('0x53')]['count'](_0x2adae9)[_0xf553('0x1f')](function(_0x541d7a){_0x553d7f[_0xf553('0x2c')]=_0x541d7a;if(_0x101518[_0xf553('0x45')]['includeAll']){_0x5d7ef7['include']=[{'all':!![]}];}return db['OpenchannelAccount'][_0xf553('0x54')](_0x5d7ef7);})[_0xf553('0x1f')](function(_0x1f04a5){_0x553d7f[_0xf553('0x55')]=_0x1f04a5;return _0x553d7f;})[_0xf553('0x1f')](respondWithFilteredResult(_0x266b9d,_0x5d7ef7))[_0xf553('0x56')](handleError(_0x266b9d,null));};exports['show']=function(_0x4bef32,_0x175fcf){var _0x489405={'raw':![],'where':{'id':_0x4bef32['params']['id']},'include':[{'model':db[_0xf553('0x3d')],'as':_0xf553('0x3e')}]},_0x35fdad={};_0x35fdad[_0xf553('0x44')]=_[_0xf553('0x46')](db['OpenchannelAccount'][_0xf553('0x40')]);_0x35fdad[_0xf553('0x45')]=_['keys'](_0x4bef32[_0xf553('0x45')]);_0x35fdad['filters']=_[_0xf553('0x48')](_0x35fdad[_0xf553('0x44')],_0x35fdad['query']);_0x489405['attributes']=_[_0xf553('0x48')](_0x35fdad[_0xf553('0x44')],qs[_0xf553('0x49')](_0x4bef32[_0xf553('0x45')][_0xf553('0x49')]));_0x489405[_0xf553('0x4a')]=_0x489405[_0xf553('0x4a')][_0xf553('0x57')]?_0x489405[_0xf553('0x4a')]:_0x35fdad[_0xf553('0x44')];if(_0x4bef32[_0xf553('0x45')][_0xf553('0x58')]){_0x489405['include']=[{'all':!![]}];}_0x489405=_[_0xf553('0x50')]({},_0x489405,_0x4bef32[_0xf553('0x52')]);return db['OpenchannelAccount'][_0xf553('0x59')](_0x489405)[_0xf553('0x1f')](handleEntityNotFound(_0x175fcf,null))[_0xf553('0x1f')](respondWithResult(_0x175fcf,null))[_0xf553('0x56')](handleError(_0x175fcf,null));};exports['create']=function(_0x4a94fb,_0x59bf67){return db['OpenchannelAccount'][_0xf553('0x5a')](_0x4a94fb['body'],{})['then'](function(_0x3cc396){var _0x174fdf=_0x4a94fb[_0xf553('0x5b')][_0xf553('0x36')]({'plain':!![]});if(!_0x174fdf)throw new Error(_0xf553('0x5c'));if(_0x174fdf['role']===_0xf553('0x5b')){var _0x1d1c10=_0x3cc396[_0xf553('0x36')]({'plain':!![]});var _0x2bfc4e=_0xf553('0x37');return db['UserProfileSection'][_0xf553('0x59')]({'where':{'name':_0x2bfc4e,'userProfileId':_0x174fdf['userProfileId']},'raw':!![]})[_0xf553('0x1f')](function(_0x10157a){if(_0x10157a&&_0x10157a['autoAssociation']===0x0){return db[_0xf553('0x38')]['create']({'name':_0x1d1c10[_0xf553('0x3b')],'resourceId':_0x1d1c10['id'],'type':_0x10157a['name'],'sectionId':_0x10157a['id']},{})[_0xf553('0x1f')](function(){return _0x3cc396;});}else{return _0x3cc396;}})[_0xf553('0x56')](function(_0x593eee){logger[_0xf553('0x24')](_0xf553('0x5d'),_0x593eee);throw _0x593eee;});}return _0x3cc396;})['then'](respondWithResult(_0x59bf67,0xc9))[_0xf553('0x56')](handleError(_0x59bf67,null));};exports[_0xf553('0x34')]=function(_0x16604f,_0x49b487){if(_0x16604f[_0xf553('0x5e')]['id']){delete _0x16604f[_0xf553('0x5e')]['id'];}return db[_0xf553('0x53')][_0xf553('0x59')]({'where':{'id':_0x16604f[_0xf553('0x5f')]['id']},'include':[{'model':db[_0xf553('0x3d')],'as':_0xf553('0x3e')}]})[_0xf553('0x1f')](handleEntityNotFound(_0x49b487,null))['then'](saveUpdates(_0x16604f[_0xf553('0x5e')],null))[_0xf553('0x1f')](respondWithResult(_0x49b487,null))['catch'](handleError(_0x49b487,null));};exports['destroy']=function(_0x46f6e5,_0xe8265a){return db[_0xf553('0x53')][_0xf553('0x59')]({'where':{'id':_0x46f6e5['params']['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0xe8265a,null))['then'](removeEntity(_0xe8265a,null))[_0xf553('0x56')](handleError(_0xe8265a,null));};exports[_0xf553('0x60')]=function(_0x3a77a4,_0x22fafa){return db[_0xf553('0x53')][_0xf553('0x60')]()[_0xf553('0x1f')](respondWithResult(_0x22fafa,null))['catch'](handleError(_0x22fafa,null));};exports[_0xf553('0x61')]=function(_0x454bd1,_0x41535c,_0x56bec2){if(_0x454bd1[_0xf553('0x5e')]['id']){delete _0x454bd1[_0xf553('0x5e')]['id'];}return db['OpenchannelAccount'][_0xf553('0x59')]({'where':{'id':_0x454bd1[_0xf553('0x5f')]['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0x41535c,null))[_0xf553('0x1f')](function(_0x10f889){if(_0x10f889){_0x454bd1[_0xf553('0x5e')][_0xf553('0x62')]=_0x10f889['id'];return db[_0xf553('0x63')][_0xf553('0x5a')](_0x454bd1[_0xf553('0x5e')]);}})['then'](respondWithResult(_0x41535c,null))['catch'](handleError(_0x41535c,null));};exports[_0xf553('0x64')]=function(_0x4fb231,_0x5b71b3,_0x5af48a){var _0x1cb1a6={'raw':![],'where':{}};var _0x5ca500={};var _0x2802be={'count':0x0,'rows':[]};return db[_0xf553('0x53')][_0xf553('0x65')]({'where':{'id':_0x4fb231[_0xf553('0x5f')]['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0x5b71b3,null))[_0xf553('0x1f')](function(_0x5c58db){if(_0x5c58db){_0x5ca500[_0xf553('0x44')]=_['keys'](db[_0xf553('0x63')][_0xf553('0x40')]);_0x5ca500[_0xf553('0x45')]=_[_0xf553('0x46')](_0x4fb231[_0xf553('0x45')]);_0x5ca500[_0xf553('0x47')]=_[_0xf553('0x48')](_0x5ca500[_0xf553('0x44')],_0x5ca500[_0xf553('0x45')]);_0x1cb1a6[_0xf553('0x4a')]=_[_0xf553('0x48')](_0x5ca500['model'],qs[_0xf553('0x49')](_0x4fb231[_0xf553('0x45')][_0xf553('0x49')]));_0x1cb1a6[_0xf553('0x4a')]=_0x1cb1a6[_0xf553('0x4a')][_0xf553('0x57')]?_0x1cb1a6['attributes']:_0x5ca500[_0xf553('0x44')];if(!_0x4fb231[_0xf553('0x45')]['hasOwnProperty'](_0xf553('0x66'))){_0x1cb1a6[_0xf553('0x2b')]=qs[_0xf553('0x2b')](_0x4fb231[_0xf553('0x45')][_0xf553('0x2b')]);_0x1cb1a6[_0xf553('0x2d')]=qs['offset'](_0x4fb231[_0xf553('0x45')][_0xf553('0x2d')]);}_0x1cb1a6[_0xf553('0x4c')]=qs[_0xf553('0x4d')](_0x4fb231[_0xf553('0x45')][_0xf553('0x4d')]);_0x1cb1a6[_0xf553('0x51')]=qs[_0xf553('0x47')](_[_0xf553('0x4e')](_0x4fb231[_0xf553('0x45')],_0x5ca500[_0xf553('0x47')]));_0x1cb1a6[_0xf553('0x51')][_0xf553('0x62')]=_0x5c58db['id'];if(_0x4fb231[_0xf553('0x45')][_0xf553('0x4f')]){_0x1cb1a6[_0xf553('0x51')]=_[_0xf553('0x50')](_0x1cb1a6[_0xf553('0x51')],{'$or':_[_0xf553('0x3f')](_0x1cb1a6[_0xf553('0x4a')],function(_0x16253f){var _0x1f13ba={};_0x1f13ba[_0x16253f]={'$like':'%'+_0x4fb231[_0xf553('0x45')][_0xf553('0x4f')]+'%'};return _0x1f13ba;})});}_0x1cb1a6=_[_0xf553('0x50')]({},_0x1cb1a6,_0x4fb231[_0xf553('0x52')]);return db[_0xf553('0x63')][_0xf553('0x2c')]({'where':_0x1cb1a6[_0xf553('0x51')]})['then'](function(_0x5c3c0d){_0x2802be[_0xf553('0x2c')]=_0x5c3c0d;if(_0x4fb231[_0xf553('0x45')][_0xf553('0x58')]){_0x1cb1a6[_0xf553('0x67')]=[{'all':!![]}];}return db['Disposition'][_0xf553('0x54')](_0x1cb1a6);})[_0xf553('0x1f')](function(_0xf3f54a){_0x2802be[_0xf553('0x55')]=_0xf3f54a;return _0x2802be;});}})[_0xf553('0x1f')](respondWithFilteredResult(_0x5b71b3,_0x1cb1a6))[_0xf553('0x56')](handleError(_0x5b71b3,null));};exports[_0xf553('0x68')]=function(_0x434b1a,_0xf02ca0,_0x365c89){return db['OpenchannelAccount'][_0xf553('0x59')]({'where':{'id':_0x434b1a[_0xf553('0x5f')]['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0xf02ca0,null))['then'](function(_0x31b918){if(_0x31b918){return _0x31b918[_0xf553('0x68')](_0x434b1a[_0xf553('0x45')]['ids']);}})[_0xf553('0x1f')](respondWithStatusCode(_0xf02ca0,null))[_0xf553('0x56')](handleError(_0xf02ca0,null));};exports['addAnswer']=function(_0xe3a8cc,_0xb581f5,_0x277a2c){if(_0xe3a8cc[_0xf553('0x5e')]['id']){delete _0xe3a8cc[_0xf553('0x5e')]['id'];}return db[_0xf553('0x53')][_0xf553('0x59')]({'where':{'id':_0xe3a8cc['params']['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0xb581f5,null))[_0xf553('0x1f')](function(_0x183ca6){if(_0x183ca6){_0xe3a8cc[_0xf553('0x5e')][_0xf553('0x62')]=_0x183ca6['id'];return db[_0xf553('0x69')][_0xf553('0x5a')](_0xe3a8cc['body']);}})['then'](respondWithResult(_0xb581f5,null))[_0xf553('0x56')](handleError(_0xb581f5,null));};exports[_0xf553('0x6a')]=function(_0x24ec30,_0x1a1009,_0x7f59b){var _0x4088ea={'raw':![],'where':{}};var _0x2577a8={};var _0x3a9ff7={'count':0x0,'rows':[]};return db[_0xf553('0x53')][_0xf553('0x65')]({'where':{'id':_0x24ec30[_0xf553('0x5f')]['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0x1a1009,null))[_0xf553('0x1f')](function(_0x46a111){if(_0x46a111){_0x2577a8[_0xf553('0x44')]=_[_0xf553('0x46')](db[_0xf553('0x69')]['rawAttributes']);_0x2577a8[_0xf553('0x45')]=_[_0xf553('0x46')](_0x24ec30[_0xf553('0x45')]);_0x2577a8['filters']=_['intersection'](_0x2577a8[_0xf553('0x44')],_0x2577a8[_0xf553('0x45')]);_0x4088ea['attributes']=_[_0xf553('0x48')](_0x2577a8[_0xf553('0x44')],qs[_0xf553('0x49')](_0x24ec30['query'][_0xf553('0x49')]));_0x4088ea[_0xf553('0x4a')]=_0x4088ea[_0xf553('0x4a')][_0xf553('0x57')]?_0x4088ea[_0xf553('0x4a')]:_0x2577a8[_0xf553('0x44')];if(!_0x24ec30[_0xf553('0x45')][_0xf553('0x4b')](_0xf553('0x66'))){_0x4088ea[_0xf553('0x2b')]=qs[_0xf553('0x2b')](_0x24ec30[_0xf553('0x45')][_0xf553('0x2b')]);_0x4088ea['offset']=qs[_0xf553('0x2d')](_0x24ec30[_0xf553('0x45')][_0xf553('0x2d')]);}_0x4088ea[_0xf553('0x4c')]=qs['sort'](_0x24ec30[_0xf553('0x45')][_0xf553('0x4d')]);_0x4088ea[_0xf553('0x51')]=qs[_0xf553('0x47')](_[_0xf553('0x4e')](_0x24ec30[_0xf553('0x45')],_0x2577a8[_0xf553('0x47')]));_0x4088ea[_0xf553('0x51')]['OpenchannelAccountId']=_0x46a111['id'];if(_0x24ec30[_0xf553('0x45')][_0xf553('0x4f')]){_0x4088ea[_0xf553('0x51')]=_['merge'](_0x4088ea[_0xf553('0x51')],{'$or':_[_0xf553('0x3f')](_0x4088ea[_0xf553('0x4a')],function(_0x42cae3){var _0x30d344={};_0x30d344[_0x42cae3]={'$like':'%'+_0x24ec30[_0xf553('0x45')][_0xf553('0x4f')]+'%'};return _0x30d344;})});}_0x4088ea=_[_0xf553('0x50')]({},_0x4088ea,_0x24ec30[_0xf553('0x52')]);return db[_0xf553('0x69')][_0xf553('0x2c')]({'where':_0x4088ea['where']})['then'](function(_0x42851c){_0x3a9ff7['count']=_0x42851c;if(_0x24ec30[_0xf553('0x45')][_0xf553('0x58')]){_0x4088ea[_0xf553('0x67')]=[{'all':!![]}];}return db[_0xf553('0x69')][_0xf553('0x54')](_0x4088ea);})[_0xf553('0x1f')](function(_0x3e0977){_0x3a9ff7[_0xf553('0x55')]=_0x3e0977;return _0x3a9ff7;});}})[_0xf553('0x1f')](respondWithFilteredResult(_0x1a1009,_0x4088ea))[_0xf553('0x56')](handleError(_0x1a1009,null));};exports[_0xf553('0x6b')]=function(_0x7a58d6,_0x397cf2,_0x1a1255){return db[_0xf553('0x53')]['find']({'where':{'id':_0x7a58d6['params']['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0x397cf2,null))['then'](function(_0x404bde){if(_0x404bde){return _0x404bde[_0xf553('0x6b')](_0x7a58d6[_0xf553('0x45')]['ids']);}})[_0xf553('0x1f')](respondWithStatusCode(_0x397cf2,null))[_0xf553('0x56')](handleError(_0x397cf2,null));};exports['notify']=function(_0x109ecb,_0x36fe8d,_0x467f81){var _0x11aa72={'body':_0x109ecb[_0xf553('0x5e')],'channel':_0xf553('0x6c')};var _0x4292a6=[];var _0x1d2c8a=[];var _0x314468={};var _0xc5e0eb=![];return db[_0xf553('0x6d')]['describe']()[_0xf553('0x1f')](function(_0x129e39){if(!_0x129e39){throw new db[(_0xf553('0x6e'))][(_0xf553('0x6f'))]('no\x20available\x20attributes');}_0x4292a6=_[_0xf553('0x70')](_['keys'](_0x129e39),[_0xf553('0x71'),'updatedAt']);_0x1d2c8a=_[_0xf553('0x70')](_[_0xf553('0x46')](_0x129e39),['createdAt',_0xf553('0x72'),_0xf553('0x73'),_0xf553('0x74')]);if(_0x109ecb['body']['id']){delete _0x109ecb[_0xf553('0x5e')]['id'];}if(_[_0xf553('0x75')](_0x109ecb[_0xf553('0x5e')][_0xf553('0x76')])){throw new db[(_0xf553('0x6e'))]['ValidationError']('from\x20is\x20mandatory');}if(_['isNil'](_0x109ecb['body'][_0xf553('0x5e')])||_0x109ecb[_0xf553('0x5e')][_0xf553('0x5e')]===''){throw new db[(_0xf553('0x6e'))][(_0xf553('0x6f'))](_0xf553('0x77'));}if(_[_0xf553('0x75')](_0x109ecb[_0xf553('0x5e')][_0xf553('0x78')])){throw new db[(_0xf553('0x6e'))]['ValidationError'](_0xf553('0x79')+_0x1d2c8a);}if(!_[_0xf553('0x7a')](_0x1d2c8a,_0x109ecb[_0xf553('0x5e')][_0xf553('0x78')])){throw new db[(_0xf553('0x6e'))][(_0xf553('0x6f'))](_0xf553('0x7b')+_0x1d2c8a);}_0x314468[_0x109ecb[_0xf553('0x5e')][_0xf553('0x78')]]=_0x109ecb[_0xf553('0x5e')][_0xf553('0x76')];})[_0xf553('0x1f')](function(){return db['OpenchannelAccount'][_0xf553('0x59')]({'where':{'id':_0x109ecb[_0xf553('0x5f')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0xf553('0x6d')],'as':_0xf553('0x7c'),'where':_0x314468,'limit':0x1,'order':[[_0xf553('0x72'),_0xf553('0x7d')]]}]},{'model':db[_0xf553('0x7e')],'as':_0xf553('0x7f')}]});})[_0xf553('0x1f')](handleEntityNotFound(_0x36fe8d,null))[_0xf553('0x1f')](function(_0x3abf48){if(_0x3abf48&&_0x3abf48['List']){_0x11aa72['account']=_0x3abf48;_0x11aa72[_0xf553('0x80')]=_0x3abf48[_0xf553('0x7f')];_0x11aa72['list']=_0x3abf48[_0xf553('0x81')];_0x11aa72[_0xf553('0x80')]=_[_0xf553('0x82')](_0x11aa72[_0xf553('0x80')],[_0xf553('0x83')],[_0xf553('0x84')]);if(_0x11aa72[_0xf553('0x85')]['Applications']){delete _0x11aa72['account'][_0xf553('0x7f')];}if(_0x11aa72[_0xf553('0x85')][_0xf553('0x81')]&&_0x11aa72[_0xf553('0x85')][_0xf553('0x81')][_0xf553('0x7c')][_0xf553('0x57')]){return _0x11aa72[_0xf553('0x85')][_0xf553('0x81')][_0xf553('0x7c')][0x0];}var _0x5813f4=_[_0xf553('0x17')](_0x109ecb[_0xf553('0x5e')],{'firstName':_0x109ecb['body'][_0xf553('0x76')],'ListId':_0x3abf48['ListId']});_0x5813f4[_0x109ecb[_0xf553('0x5e')]['mapKey']]=_0x109ecb[_0xf553('0x5e')][_0xf553('0x76')];return db[_0xf553('0x6d')][_0xf553('0x5a')](_0x5813f4,{'fields':_0x4292a6,'raw':!![]});}})[_0xf553('0x1f')](handleEntityNotFound(_0x36fe8d,null))['then'](function(_0x4f0616){_0x11aa72[_0xf553('0x86')]=_0x4f0616;if(_0x4f0616){var _0x529005={'ContactId':_0x4f0616['id'],'OpenchannelAccountId':_0x109ecb[_0xf553('0x5f')]['id'],'from':(_0x4f0616['firstName']||'')+'\x20'+(_0x4f0616[_0xf553('0x87')]||'')};var _0x1dc93c={'OpenchannelAccountId':_0x109ecb['params']['id'],'closed':![]};if(_0x109ecb[_0xf553('0x5e')]['threadId']){_0x1dc93c[_0xf553('0x88')]=_0x109ecb[_0xf553('0x5e')][_0xf553('0x88')];return db[_0xf553('0x89')][_0xf553('0x59')]({'where':_0x1dc93c})[_0xf553('0x1f')](function(_0x155416){if(_0x155416){return[_0x155416,![]];}_0x529005[_0xf553('0x88')]=_0x109ecb[_0xf553('0x5e')][_0xf553('0x88')];_0x529005[_0xf553('0x8a')]=_0x109ecb[_0xf553('0x5e')][_0xf553('0x8a')];return db['OpenchannelInteraction'][_0xf553('0x5a')](_0x529005)[_0xf553('0x1f')](function(_0x1dc96a){return[_0x1dc96a,!![]];});});}else{_0x1dc93c[_0xf553('0x88')]=null;}_0x1dc93c[_0xf553('0x8b')]=_0x4f0616['id'];return db[_0xf553('0x89')]['find']({'where':_0x1dc93c})[_0xf553('0x1f')](function(_0x802aa6){if(_0x802aa6){return[_0x802aa6,![]];}return db[_0xf553('0x89')][_0xf553('0x5a')](_0x529005)[_0xf553('0x1f')](function(_0x1e0a25){return[_0x1e0a25,!![]];});});}})['spread'](function(_0x48f90e,_0x1fd199){if(_0x48f90e){_0xc5e0eb=_0x1fd199;if(!_0x1fd199){var _0x261102={'from':(_0x11aa72[_0xf553('0x86')][_0xf553('0x8c')]||'')+'\x20'+(_0x11aa72[_0xf553('0x86')]['lastName']||'')};if(_0x109ecb[_0xf553('0x5e')][_0xf553('0x88')]&&_0x109ecb['body'][_0xf553('0x8d')]&&_0x109ecb['body'][_0xf553('0x88')]!=_0x109ecb[_0xf553('0x5e')]['messageId']){_0x261102['threadId']=_0x109ecb['body'][_0xf553('0x8d')];}return _0x48f90e[_0xf553('0x34')](_0x261102);}else{return _0x48f90e;}}})['then'](function(_0x548267){_0x11aa72[_0xf553('0x8e')]=_0x548267[_0xf553('0x36')]({'plain':!![]});_0x11aa72['interaction'][_0xf553('0x8f')]=_0xc5e0eb;if(_0x11aa72[_0xf553('0x8e')][_0xf553('0x8f')]){if(_0x11aa72['account'][_0xf553('0x90')]){_0x11aa72[_0xf553('0x80')][_0xf553('0x91')]({'id':0x0,'priority':_0x11aa72[_0xf553('0x80')][_0xf553('0x57')]+0x1,'app':_0xf553('0x92'),'appdata':_0xf553('0x93'),'interval':_0xf553('0x94')});}}return db['OpenchannelMessage'][_0xf553('0x5a')]({'body':_0x109ecb['body']['body'],'OpenchannelAccountId':_0x109ecb[_0xf553('0x5f')]['id'],'OpenchannelInteractionId':_0x548267['id'],'direction':'in','ContactId':_0x11aa72[_0xf553('0x86')]['id'],'AttachmentId':_0x109ecb[_0xf553('0x5e')][_0xf553('0x95')]});})[_0xf553('0x1f')](function(_0x5e019c){_0x11aa72[_0xf553('0x25')]=_0x5e019c;if(!_0x11aa72[_0xf553('0x8e')][_0xf553('0x96')])return;return db[_0xf553('0x97')]['find']({'attributes':['id',_0xf553('0x3b')],'where':{'id':_0x11aa72[_0xf553('0x8e')][_0xf553('0x96')]}});})[_0xf553('0x1f')](function(_0x137acc){if(_0x137acc){_0x11aa72[_0xf553('0x80')][_0xf553('0x98')]({'id':0x0,'priority':0x0,'app':_0xf553('0x99'),'appdata':_0x137acc[_0xf553('0x3b')]+','+(_0x11aa72[_0xf553('0x85')][_0xf553('0x9a')]||0xa),'interval':'*,*,*,*'});}if(!_0x11aa72['interaction'][_0xf553('0x9b')])return;return db[_0xf553('0x9c')][_0xf553('0x59')]({'attributes':['id','name'],'where':{'id':_0x11aa72[_0xf553('0x8e')][_0xf553('0x9b')]}});})['then'](function(_0x5846b6){if(_0x5846b6){_0x11aa72[_0xf553('0x80')][_0xf553('0x98')]({'id':0x0,'priority':0x1,'app':_0xf553('0x9d'),'appdata':_0x5846b6[_0xf553('0x3b')]+','+(_0x11aa72['account']['waitForTheAssignedQueue']||0x12c),'interval':_0xf553('0x94')});}return respondWithRpcPromise(_0xf553('0x9e'),_0xf553('0x9f'),_0x11aa72);})[_0xf553('0x1f')](function(_0x4bde96){respondWithRpcPromise('EventManager',_0xf553('0xa0'),{'event':_0xf553('0xa1'),'message':_0x4bde96},client9002);return _0x4bde96;})[_0xf553('0x1f')](respondWithResult(_0x36fe8d,null))[_0xf553('0x56')](handleError(_0x36fe8d,null));};exports[_0xf553('0xa2')]=function(_0x3fcaa4,_0x1f3739){var _0x1805d5=_0x3fcaa4[_0xf553('0x5f')]['id'];var _0x3dfcc9=_0x3fcaa4['body'];var _0xccf2f6=0xc8;var _0x12deb1=null;return db['sequelize'][_0xf553('0xa3')]({'isolationLevel':db[_0xf553('0xa4')][_0xf553('0xa5')][_0xf553('0xa6')][_0xf553('0xa7')]},function(_0x287c2d){return db[_0xf553('0x53')][_0xf553('0x65')]({'where':{'id':_0x1805d5},'transaction':_0x287c2d})[_0xf553('0x1f')](function(_0x6a8b3b){if(_0x6a8b3b){return db['OpenchannelApplication'][_0xf553('0x35')]({'where':{'OpenchannelAccountId':_0x1805d5},'transaction':_0x287c2d})[_0xf553('0x1f')](function(){var _0xa0cfbe=_['map'](_0x3dfcc9,function(_0x2371bd){_0x2371bd[_0xf553('0x62')]=_0x1805d5;return _0x2371bd;});return db['OpenchannelApplication'][_0xf553('0xa8')](_0xa0cfbe,{'transaction':_0x287c2d});});}else{_0xccf2f6=0x194;_0x12deb1=[];}});})['then'](function(){if(_0xccf2f6!==0x194){return db[_0xf553('0x7e')][_0xf553('0xa9')]({'where':{'OpenchannelAccountId':_0x1805d5},'order':_0xf553('0x83')})[_0xf553('0x1f')](function(_0x2ded20){_0x12deb1=_0x2ded20;});}})[_0xf553('0x56')](function(_0x287076){_0xccf2f6=0x1f4;logger[_0xf553('0x24')](_0x287076[_0xf553('0x3a')]);if(_0x287076[_0xf553('0x3b')]){delete _0x287076[_0xf553('0x3b')];}_0x12deb1=_0x287076;})[_0xf553('0xaa')](function(){if(_0x12deb1===null){_0x1f3739[_0xf553('0x39')](_0xccf2f6);}else{if(_0xccf2f6===0x1f4){_0x1f3739[_0xf553('0x28')](_0xccf2f6)[_0xf553('0xab')](_0x12deb1);}else{_0x1f3739[_0xf553('0x28')](_0xccf2f6)[_0xf553('0x30')](_0x12deb1);}}});};exports[_0xf553('0xac')]=function(_0xae8760,_0x1a2a0a,_0x117b4c){var _0x9938aa={};var _0x1c685f={};var _0x55f8da;var _0x51e3eb;return db['OpenchannelAccount'][_0xf553('0x65')]({'where':{'id':_0xae8760['params']['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0x1a2a0a,null))[_0xf553('0x1f')](function(_0x3b493c){if(_0x3b493c){_0x55f8da=_0x3b493c;_0x1c685f[_0xf553('0x44')]=_[_0xf553('0x46')](db[_0xf553('0x7e')][_0xf553('0x40')]);_0x1c685f['query']=_[_0xf553('0x46')](_0xae8760[_0xf553('0x45')]);_0x1c685f[_0xf553('0x47')]=_[_0xf553('0x48')](_0x1c685f[_0xf553('0x44')],_0x1c685f[_0xf553('0x45')]);_0x9938aa[_0xf553('0x4a')]=_[_0xf553('0x48')](_0x1c685f[_0xf553('0x44')],qs[_0xf553('0x49')](_0xae8760['query'][_0xf553('0x49')]));_0x9938aa[_0xf553('0x4a')]=_0x9938aa[_0xf553('0x4a')]['length']?_0x9938aa[_0xf553('0x4a')]:_0x1c685f[_0xf553('0x44')];_0x9938aa[_0xf553('0x4c')]=qs[_0xf553('0x4d')](_0xae8760[_0xf553('0x45')]['sort']);_0x9938aa[_0xf553('0x51')]=qs[_0xf553('0x47')](_[_0xf553('0x4e')](_0xae8760[_0xf553('0x45')],_0x1c685f[_0xf553('0x47')]));if(_0xae8760['query'][_0xf553('0x4f')]){_0x9938aa[_0xf553('0x51')]=_[_0xf553('0x50')](_0x9938aa[_0xf553('0x51')],{'$or':_[_0xf553('0x3f')](_0x9938aa[_0xf553('0x4a')],function(_0x1b15a5){var _0x193939={};_0x193939[_0x1b15a5]={'$like':'%'+_0xae8760[_0xf553('0x45')][_0xf553('0x4f')]+'%'};return _0x193939;})});}_0x9938aa=_[_0xf553('0x50')]({},_0x9938aa,_0xae8760[_0xf553('0x52')]);return _0x55f8da[_0xf553('0xac')](_0x9938aa);}})['then'](function(_0x38c833){if(_0x38c833){_0x51e3eb=_0x38c833[_0xf553('0x57')];if(!_0xae8760[_0xf553('0x45')]['hasOwnProperty']('nolimit')){_0x9938aa[_0xf553('0x2b')]=qs['limit'](_0xae8760[_0xf553('0x45')]['limit']);_0x9938aa[_0xf553('0x2d')]=qs['offset'](_0xae8760['query'][_0xf553('0x2d')]);}return _0x55f8da[_0xf553('0xac')](_0x9938aa);}})[_0xf553('0x1f')](function(_0x2673fd){if(_0x2673fd){return _0x2673fd?{'count':_0x51e3eb,'rows':_0x2673fd}:null;}})[_0xf553('0x1f')](respondWithResult(_0x1a2a0a,null))[_0xf553('0x56')](handleError(_0x1a2a0a,null));};exports[_0xf553('0xad')]=function(_0x24243c,_0xdf4eba,_0x2944ab){var _0x51c3fb={'raw':![],'where':{}};var _0x4c362d={};var _0xa51140={'count':0x0,'rows':[]};return db[_0xf553('0x53')][_0xf553('0x65')]({'where':{'id':_0x24243c[_0xf553('0x5f')]['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0xdf4eba,null))[_0xf553('0x1f')](function(_0x3d7c58){if(_0x3d7c58){_0x4c362d['model']=_[_0xf553('0x46')](db['OpenchannelInteraction'][_0xf553('0x40')]);_0x4c362d[_0xf553('0x45')]=_[_0xf553('0x46')](_0x24243c[_0xf553('0x45')]);_0x4c362d[_0xf553('0x47')]=_[_0xf553('0x48')](_0x4c362d[_0xf553('0x44')],_0x4c362d[_0xf553('0x45')]);_0x51c3fb[_0xf553('0x4a')]=_['intersection'](_0x4c362d[_0xf553('0x44')],qs[_0xf553('0x49')](_0x24243c[_0xf553('0x45')][_0xf553('0x49')]));_0x51c3fb[_0xf553('0x4a')]=_0x51c3fb['attributes'][_0xf553('0x57')]?_0x51c3fb[_0xf553('0x4a')]:_0x4c362d[_0xf553('0x44')];if(!_0x24243c[_0xf553('0x45')][_0xf553('0x4b')](_0xf553('0x66'))){_0x51c3fb[_0xf553('0x2b')]=qs[_0xf553('0x2b')](_0x24243c[_0xf553('0x45')][_0xf553('0x2b')]);_0x51c3fb[_0xf553('0x2d')]=qs[_0xf553('0x2d')](_0x24243c[_0xf553('0x45')][_0xf553('0x2d')]);}_0x51c3fb[_0xf553('0x4c')]=qs[_0xf553('0x4d')](_0x24243c[_0xf553('0x45')][_0xf553('0x4d')]);_0x51c3fb[_0xf553('0x51')]=qs['filters'](_['pick'](_0x24243c[_0xf553('0x45')],_0x4c362d[_0xf553('0x47')]));_0x51c3fb[_0xf553('0x51')][_0xf553('0x62')]=_0x3d7c58['id'];if(_0x24243c['query'][_0xf553('0x4f')]){_0x51c3fb[_0xf553('0x51')]=_[_0xf553('0x50')](_0x51c3fb[_0xf553('0x51')],{'$or':_[_0xf553('0x3f')](_0x51c3fb[_0xf553('0x4a')],function(_0x56e900){var _0x2001ad={};_0x2001ad[_0x56e900]={'$like':'%'+_0x24243c[_0xf553('0x45')][_0xf553('0x4f')]+'%'};return _0x2001ad;})});}_0x51c3fb=_[_0xf553('0x50')]({},_0x51c3fb,_0x24243c[_0xf553('0x52')]);return db['OpenchannelInteraction'][_0xf553('0x2c')]({'where':_0x51c3fb[_0xf553('0x51')]})[_0xf553('0x1f')](function(_0x10f244){_0xa51140['count']=_0x10f244;if(_0x24243c[_0xf553('0x45')][_0xf553('0x58')]){_0x51c3fb[_0xf553('0x67')]=[{'model':db['CmContact'],'as':_0xf553('0xae'),'required':![]},{'model':db[_0xf553('0x97')],'as':_0xf553('0xaf'),'attributes':['name','fullname',_0xf553('0xb0')],'required':![]},{'model':db[_0xf553('0xb1')],'as':_0xf553('0xb2'),'attributes':['id','name',_0xf553('0xb3')],'where':_0x24243c[_0xf553('0x45')][_0xf553('0xb4')]?{'id':_0x24243c[_0xf553('0x45')][_0xf553('0xb4')]}:undefined,'required':_0x24243c[_0xf553('0x45')][_0xf553('0xb4')]?!![]:![]}];}return db['OpenchannelInteraction'][_0xf553('0x54')](_0x51c3fb);})[_0xf553('0x1f')](function(_0x4ba5b0){_0xa51140[_0xf553('0x55')]=_0x4ba5b0;return _0xa51140;});}})[_0xf553('0x1f')](respondWithFilteredResult(_0xdf4eba,_0x51c3fb))[_0xf553('0x56')](handleError(_0xdf4eba,null));};exports[_0xf553('0xb5')]=function(_0x99cda,_0x273b80,_0x5cb3e6){return db[_0xf553('0x53')][_0xf553('0x59')]({'where':{'id':_0x99cda[_0xf553('0x5f')]['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0x273b80,null))['then'](function(_0x32f3c9){if(_0x32f3c9){return _0x32f3c9[_0xf553('0xb5')](_0x99cda[_0xf553('0x5e')]['ids'],_[_0xf553('0xb6')](_0x99cda[_0xf553('0x5e')],[_0xf553('0xb7'),'id'])||{})[_0xf553('0xb8')](function(_0x70c643){for(var _0x18f772=0x0;_0x18f772<_0x99cda['body'][_0xf553('0xb7')]['length'];_0x18f772+=0x1){socket['emit'](_0xf553('0xb9'),{'UserId':Number(_0x99cda['body']['ids'][_0x18f772]),'OpenchannelAccountId':Number(_0x99cda[_0xf553('0x5f')]['id'])});}return _0x70c643;});}})['then'](respondWithResult(_0x273b80,null))[_0xf553('0x56')](handleError(_0x273b80,null));};exports['removeAgents']=function(_0x347669,_0xd257d8,_0x5416b6){return db[_0xf553('0x53')]['find']({'where':{'id':_0x347669['params']['id']}})['then'](handleEntityNotFound(_0xd257d8,null))[_0xf553('0x1f')](function(_0x553aa0){if(_0x553aa0){return _0x553aa0['removeAgents'](_0x347669[_0xf553('0x45')][_0xf553('0xb7')])[_0xf553('0x1f')](function(){if(_[_0xf553('0xba')](_0x347669[_0xf553('0x45')][_0xf553('0xb7')])){for(var _0x121641=0x0;_0x121641<_0x347669[_0xf553('0x45')]['ids'][_0xf553('0x57')];_0x121641+=0x1){socket[_0xf553('0xbb')]('userOpenchannelAccount:remove',{'UserId':Number(_0x347669[_0xf553('0x45')][_0xf553('0xb7')][_0x121641]),'OpenchannelAccountId':Number(_0x347669[_0xf553('0x5f')]['id'])});}}else{socket[_0xf553('0xbb')](_0xf553('0xbc'),{'UserId':Number(_0x347669[_0xf553('0x45')][_0xf553('0xb7')]),'OpenchannelAccountId':Number(_0x347669[_0xf553('0x5f')]['id'])});}});}})['then'](respondWithStatusCode(_0xd257d8,null))[_0xf553('0x56')](handleError(_0xd257d8,null));};exports['getAgents']=function(_0x125034,_0x75649b,_0x32e8fb){var _0x45767c={};var _0x2822d5={};var _0x5ca738;var _0xa1a952;return db[_0xf553('0x53')][_0xf553('0x65')]({'where':{'id':_0x125034['params']['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0x75649b,null))[_0xf553('0x1f')](function(_0x2d7425){if(_0x2d7425){_0x5ca738=_0x2d7425;_0x2822d5['model']=_['keys'](db['User'][_0xf553('0x40')]);_0x2822d5[_0xf553('0x45')]=_[_0xf553('0x46')](_0x125034[_0xf553('0x45')]);_0x2822d5[_0xf553('0x47')]=_[_0xf553('0x48')](_0x2822d5['model'],_0x2822d5[_0xf553('0x45')]);_0x45767c[_0xf553('0x4a')]=_[_0xf553('0x48')](_0x2822d5[_0xf553('0x44')],qs[_0xf553('0x49')](_0x125034[_0xf553('0x45')][_0xf553('0x49')]));_0x45767c[_0xf553('0x4a')]=_0x45767c['attributes']['length']?_0x45767c[_0xf553('0x4a')]:_0x2822d5[_0xf553('0x44')];_0x45767c[_0xf553('0x4c')]=qs[_0xf553('0x4d')](_0x125034[_0xf553('0x45')][_0xf553('0x4d')]);_0x45767c[_0xf553('0x51')]=qs['filters'](_[_0xf553('0x4e')](_0x125034[_0xf553('0x45')],_0x2822d5[_0xf553('0x47')]));if(_0x125034[_0xf553('0x45')]['filter']){_0x45767c[_0xf553('0x51')]=_['merge'](_0x45767c['where'],{'$or':_[_0xf553('0x3f')](_0x45767c[_0xf553('0x4a')],function(_0x26e170){var _0x653891={};_0x653891[_0x26e170]={'$like':'%'+_0x125034[_0xf553('0x45')][_0xf553('0x4f')]+'%'};return _0x653891;})});}_0x45767c=_[_0xf553('0x50')]({},_0x45767c,_0x125034[_0xf553('0x52')]);return _0x5ca738[_0xf553('0xbd')](_0x45767c);}})[_0xf553('0x1f')](function(_0x14f990){if(_0x14f990){_0xa1a952=_0x14f990['length'];if(!_0x125034[_0xf553('0x45')]['hasOwnProperty']('nolimit')){_0x45767c['limit']=qs[_0xf553('0x2b')](_0x125034[_0xf553('0x45')][_0xf553('0x2b')]);_0x45767c['offset']=qs[_0xf553('0x2d')](_0x125034[_0xf553('0x45')][_0xf553('0x2d')]);}return _0x5ca738[_0xf553('0xbd')](_0x45767c);}})[_0xf553('0x1f')](function(_0x509707){if(_0x509707){return _0x509707?{'count':_0xa1a952,'rows':_0x509707}:null;}})[_0xf553('0x1f')](respondWithResult(_0x75649b,null))['catch'](handleError(_0x75649b,null));};exports[_0xf553('0xab')]=function(_0x40b761,_0x5335ee,_0x5bf161){var _0x480e18,_0x4f7c32,_0x371b39;if(_[_0xf553('0x75')](_0x40b761[_0xf553('0x5e')][_0xf553('0x5e')])||_0x40b761[_0xf553('0x5e')][_0xf553('0x5e')]===''){throw new db[(_0xf553('0x6e'))][(_0xf553('0x6f'))](_0xf553('0x77'));}if(_['isNil'](_0x40b761[_0xf553('0x5e')]['to'])){}_0x480e18=_0x40b761[_0xf553('0x5e')]['to'];return db['OpenchannelAccount'][_0xf553('0x65')]({'where':{'id':_0x40b761[_0xf553('0x5f')]['id']}})[_0xf553('0x1f')](handleEntityNotFound(_0x5335ee,null))['then'](function(_0x2f1075){if(_0x2f1075){return db[_0xf553('0x53')][_0xf553('0x59')]({'where':{'id':_0x2f1075['id']},'include':[{'model':db[_0xf553('0xbe')],'as':_0xf553('0x81'),'include':[{'model':db['CmContact'],'as':_0xf553('0x7c'),'where':{[_0x2f1075[_0xf553('0x78')]]:_0x480e18},'limit':0x1,'order':[[_0xf553('0x72'),_0xf553('0x7d')]]}]}]})[_0xf553('0x1f')](handleEntityNotFound(_0x5335ee,null))[_0xf553('0x1f')](function(_0x37c738){if(_0x37c738&&_0x37c738['List']){_0x4f7c32=_0x37c738['get']({'plain':!![]});if(_0x4f7c32[_0xf553('0x81')]&&_0x4f7c32[_0xf553('0x81')]['Contacts']['length']){return _0x4f7c32[_0xf553('0x81')][_0xf553('0x7c')][0x0];}return db['CmContact'][_0xf553('0x5a')](_['defaults'](_0x40b761[_0xf553('0x5e')],{'firstName':_0x480e18,[_0x37c738[_0xf553('0x78')]]:_0x480e18,'phone':_0x480e18,'ListId':_0x4f7c32[_0xf553('0x74')]}));}})['then'](handleEntityNotFound(_0x5335ee,null))['then'](function(_0x991959){if(_0x991959){_0x371b39=_0x991959;return db[_0xf553('0x89')][_0xf553('0x59')]({'where':{'ContactId':_0x371b39['id'],'closed':![],'OpenchannelAccountId':_0x4f7c32['id']}})[_0xf553('0x1f')](function(_0x485c0e){if(_0x485c0e){return[_0x485c0e,![]];}return db[_0xf553('0x89')][_0xf553('0x5a')]({'UserId':_0x40b761[_0xf553('0x5b')]['id'],'ContactId':_0x371b39['id'],'OpenchannelAccountId':_0x4f7c32['id'],'lastMsgDirection':'out','firstMsgDirection':_0xf553('0xbf'),'Messages':[_[_0xf553('0x50')](_0x40b761[_0xf553('0x5e')],{'read':![],'body':_0x40b761[_0xf553('0x5e')][_0xf553('0x5e')],'OpenchannelAccountId':_0x4f7c32['id'],'UserId':_0x40b761[_0xf553('0x5b')]['id'],'ContactId':_0x371b39['id']})]},{'include':[{'model':db[_0xf553('0xc0')],'as':'Messages'}]})[_0xf553('0x1f')](function(_0x134f29){return[_0x134f29,!![]];});});}})[_0xf553('0xb8')](function(_0x3dc207,_0x2b96b4){if(_0x2b96b4){return _0x3dc207;}return db[_0xf553('0xc0')]['create'](_[_0xf553('0x50')](_0x40b761['body'],{'read':![],'body':_0x40b761[_0xf553('0x5e')][_0xf553('0x5e')],'OpenchannelAccountId':_0x4f7c32['id'],'OpenchannelInteractionId':_0x3dc207['id'],'UserId':_0x40b761[_0xf553('0x5b')]['id'],'ContactId':_0x371b39['id']}))[_0xf553('0x1f')](function(_0x3be965){_0x3dc207[_0xf553('0xc1')]['Messages']=[];_0x3dc207[_0xf553('0xc1')][_0xf553('0xc2')]['push'](_0x3be965[_0xf553('0xc1')]);return _0x3dc207;});});}})['then'](respondWithResult(_0x5335ee,null))[_0xf553('0x56')](handleError(_0x5335ee,null));};
\ No newline at end of file
+var _0x1156=['undefined','limit','count','offset','Content-Range','apply','reject','save','update','destroy','then','OpenchannelAccounts','end','stack','name','send','index','Pause','OpenchannelAccount','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','includeAll','include','rows','catch','params','mandatoryDispositionPause','length','merge','options','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','find','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','getDispositions','findOne','Disposition','nolimit','OpenchannelAccountId','map','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','openchannel','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from','Sequelize','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','CmContact','Contacts','DESC','OpenchannelApplication','Applications','applications','list','orderBy','priority','asc','account','firstName','threadId','OpenchannelInteraction','externalUrl','contact','messageId','interaction','created','autoclose','push','unmanaged','AttachmentId','UserId','User','agent','waitForTheAssignedAgent','*,*,*,*','queueId','OpenchannelQueue','unshift','queue','startRouting','EventManager','addApplications','sequelize','transaction','Transaction','READ_COMMITTED','bulkCreate','getApplications','getInteractions','Contact','Tag','color','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','out','Messages','spread','OpenchannelMessage','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelAccount.socket','register','jayson/promise','client','http','info','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','OpenchannelAccount,\x20%s,\x20%s','message','result','sendStatus','status','json'];(function(_0x5e4b85,_0x6cf965){var _0x5cd3cb=function(_0x589c9e){while(--_0x589c9e){_0x5e4b85['push'](_0x5e4b85['shift']());}};_0x5cd3cb(++_0x6cf965);}(_0x1156,0x93));var _0x6115=function(_0x24061a,_0x1c9f4d){_0x24061a=_0x24061a-0x0;var _0x82054e=_0x1156[_0x24061a];return _0x82054e;};'use strict';var emlformat=require(_0x6115('0x0'));var rimraf=require(_0x6115('0x1'));var zipdir=require(_0x6115('0x2'));var jsonpatch=require(_0x6115('0x3'));var rp=require('request-promise');var moment=require(_0x6115('0x4'));var BPromise=require(_0x6115('0x5'));var Mustache=require('mustache');var util=require(_0x6115('0x6'));var path=require('path');var sox=require(_0x6115('0x7'));var csv=require(_0x6115('0x8'));var ejs=require(_0x6115('0x9'));var fs=require('fs');var fs_extra=require(_0x6115('0xa'));var _=require('lodash');var squel=require(_0x6115('0xb'));var crypto=require(_0x6115('0xc'));var jsforce=require(_0x6115('0xd'));var deskjs=require(_0x6115('0xe'));var toCsv=require(_0x6115('0x8'));var querystring=require('querystring');var Papa=require(_0x6115('0xf'));var Redis=require(_0x6115('0x10'));var authService=require(_0x6115('0x11'));var qs=require(_0x6115('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6115('0x13'));var logger=require(_0x6115('0x14'))(_0x6115('0x15'));var utils=require(_0x6115('0x16'));var config=require(_0x6115('0x17'));var licenseUtil=require(_0x6115('0x18'));var db=require(_0x6115('0x19'))['db'];config[_0x6115('0x1a')]=_[_0x6115('0x1b')](config[_0x6115('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x6115('0x1c'))(new Redis(config[_0x6115('0x1a')]));require(_0x6115('0x1d'))[_0x6115('0x1e')](socket);var jayson=require(_0x6115('0x1f'));var client=jayson[_0x6115('0x20')][_0x6115('0x21')]({'port':0x232c});var client9002=jayson[_0x6115('0x20')][_0x6115('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x463925,_0x2579d8,_0x194b52,_0x59eb3b){return new BPromise(function(_0x337dc0,_0x268e87){var _0xcf488d=_0x59eb3b||client;return _0xcf488d['request'](_0x463925,_0x194b52)['then'](function(_0x264a16){logger[_0x6115('0x22')]('OpenchannelAccount,\x20%s,\x20%s',_0x2579d8,_0x6115('0x23'));logger[_0x6115('0x24')](_0x6115('0x25'),_0x2579d8,'request\x20sent',JSON[_0x6115('0x26')](_0x264a16));if(_0x264a16['error']){if(_0x264a16[_0x6115('0x27')]['code']===0x1f4){logger[_0x6115('0x27')](_0x6115('0x28'),_0x2579d8,_0x264a16['error'][_0x6115('0x29')]);return _0x268e87(_0x264a16['error'][_0x6115('0x29')]);}logger['error'](_0x6115('0x28'),_0x2579d8,_0x264a16[_0x6115('0x27')][_0x6115('0x29')]);return _0x337dc0(_0x264a16['error']['message']);}else{logger[_0x6115('0x22')]('OpenchannelAccount,\x20%s,\x20%s',_0x2579d8,_0x6115('0x23'));_0x337dc0(_0x264a16[_0x6115('0x2a')]['message']);}})['catch'](function(_0x33f8b9){logger['error'](_0x6115('0x28'),_0x2579d8,_0x33f8b9);_0x268e87(_0x33f8b9);});});}function respondWithStatusCode(_0x390c89,_0x4a44e6){_0x4a44e6=_0x4a44e6||0xcc;return function(_0x1a5aa5){if(_0x1a5aa5){return _0x390c89[_0x6115('0x2b')](_0x4a44e6);}return _0x390c89[_0x6115('0x2c')](_0x4a44e6)['end']();};}function respondWithResult(_0x54675b,_0x2c5b9d){_0x2c5b9d=_0x2c5b9d||0xc8;return function(_0xb0795d){if(_0xb0795d){return _0x54675b[_0x6115('0x2c')](_0x2c5b9d)[_0x6115('0x2d')](_0xb0795d);}};}function respondWithFilteredResult(_0x4281cc,_0x4bcd8f){return function(_0x4c5efe){if(_0x4c5efe){var _0x482ff8=typeof _0x4bcd8f['offset']===_0x6115('0x2e')&&typeof _0x4bcd8f[_0x6115('0x2f')]==='undefined';var _0xcecc8e=_0x4c5efe[_0x6115('0x30')];var _0x13d752=_0x482ff8?0x0:_0x4bcd8f[_0x6115('0x31')];var _0x20a839=_0x482ff8?_0x4c5efe[_0x6115('0x30')]:_0x4bcd8f['offset']+_0x4bcd8f[_0x6115('0x2f')];var _0x2b089a;if(_0x20a839>=_0xcecc8e){_0x20a839=_0xcecc8e;_0x2b089a=0xc8;}else{_0x2b089a=0xce;}_0x4281cc[_0x6115('0x2c')](_0x2b089a);return _0x4281cc['set'](_0x6115('0x32'),_0x13d752+'-'+_0x20a839+'/'+_0xcecc8e)['json'](_0x4c5efe);}return null;};}function patchUpdates(_0x4b337e){return function(_0x11e570){try{jsonpatch[_0x6115('0x33')](_0x11e570,_0x4b337e,!![]);}catch(_0x51c945){return BPromise[_0x6115('0x34')](_0x51c945);}return _0x11e570[_0x6115('0x35')]();};}function saveUpdates(_0xcc332d,_0x231cd1){return function(_0x4bf593){if(_0x4bf593){return _0x4bf593[_0x6115('0x36')](_0xcc332d)['then'](function(_0xa745ee){return _0xa745ee;});}return null;};}function removeEntity(_0x425bdc,_0x34c276){return function(_0x4213e5){if(_0x4213e5){return _0x4213e5[_0x6115('0x37')]()[_0x6115('0x38')](function(){var _0x2a50ba=_0x4213e5['get']({'plain':!![]});var _0x2932e1=_0x6115('0x39');return db['UserProfileResource'][_0x6115('0x37')]({'where':{'type':_0x2932e1,'resourceId':_0x2a50ba['id']}})[_0x6115('0x38')](function(){return _0x4213e5;});})[_0x6115('0x38')](function(){_0x425bdc['status'](0xcc)[_0x6115('0x3a')]();});}};}function handleEntityNotFound(_0x250aee,_0x2b0e4d){return function(_0x4ee308){if(!_0x4ee308){_0x250aee['sendStatus'](0x194);}return _0x4ee308;};}function handleError(_0x1dd664,_0x37b01e){_0x37b01e=_0x37b01e||0x1f4;return function(_0x11e34e){logger['error'](_0x11e34e[_0x6115('0x3b')]);if(_0x11e34e[_0x6115('0x3c')]){delete _0x11e34e[_0x6115('0x3c')];}_0x1dd664[_0x6115('0x2c')](_0x37b01e)[_0x6115('0x3d')](_0x11e34e);};}exports[_0x6115('0x3e')]=function(_0x427ff7,_0x2d2228){var _0x3afbc0={'include':[{'model':db[_0x6115('0x3f')],'as':'mandatoryDispositionPause'}]},_0x1150ae={},_0x3189eb={'count':0x0,'rows':[]};var _0x3a45ae=_['map'](db[_0x6115('0x40')][_0x6115('0x41')],function(_0x1d9adc){return{'name':_0x1d9adc['fieldName'],'type':_0x1d9adc[_0x6115('0x42')][_0x6115('0x43')]};});_0x1150ae[_0x6115('0x44')]=_['map'](_0x3a45ae,_0x6115('0x3c'));_0x1150ae[_0x6115('0x45')]=_[_0x6115('0x46')](_0x427ff7['query']);_0x1150ae[_0x6115('0x47')]=_[_0x6115('0x48')](_0x1150ae['model'],_0x1150ae[_0x6115('0x45')]);_0x3afbc0[_0x6115('0x49')]=_[_0x6115('0x48')](_0x1150ae[_0x6115('0x44')],qs[_0x6115('0x4a')](_0x427ff7[_0x6115('0x45')][_0x6115('0x4a')]));_0x3afbc0['attributes']=_0x3afbc0['attributes']['length']?_0x3afbc0[_0x6115('0x49')]:_0x1150ae['model'];if(!_0x427ff7[_0x6115('0x45')][_0x6115('0x4b')]('nolimit')){_0x3afbc0['limit']=qs[_0x6115('0x2f')](_0x427ff7[_0x6115('0x45')]['limit']);_0x3afbc0[_0x6115('0x31')]=qs[_0x6115('0x31')](_0x427ff7[_0x6115('0x45')][_0x6115('0x31')]);}_0x3afbc0[_0x6115('0x4c')]=qs[_0x6115('0x4d')](_0x427ff7[_0x6115('0x45')][_0x6115('0x4d')]);_0x3afbc0[_0x6115('0x4e')]=qs['filters'](_[_0x6115('0x4f')](_0x427ff7[_0x6115('0x45')],_0x1150ae[_0x6115('0x47')]),_0x3a45ae);if(_0x427ff7[_0x6115('0x45')][_0x6115('0x50')]){_0x3afbc0[_0x6115('0x4e')]=_['merge'](_0x3afbc0[_0x6115('0x4e')],{'$or':_['map'](_0x3a45ae,function(_0xc1a5df){if(_0xc1a5df[_0x6115('0x42')]!=='VIRTUAL'){var _0x1cd793={};_0x1cd793[_0xc1a5df['name']]={'$like':'%'+_0x427ff7[_0x6115('0x45')][_0x6115('0x50')]+'%'};return _0x1cd793;}})});}_0x3afbc0=_['merge']({},_0x3afbc0,_0x427ff7['options']);var _0x595a5c={'where':_0x3afbc0[_0x6115('0x4e')]};return db[_0x6115('0x40')][_0x6115('0x30')](_0x595a5c)[_0x6115('0x38')](function(_0x74ad3f){_0x3189eb[_0x6115('0x30')]=_0x74ad3f;if(_0x427ff7[_0x6115('0x45')][_0x6115('0x51')]){_0x3afbc0[_0x6115('0x52')]=[{'all':!![]}];}return db['OpenchannelAccount']['findAll'](_0x3afbc0);})['then'](function(_0x53238c){_0x3189eb[_0x6115('0x53')]=_0x53238c;return _0x3189eb;})['then'](respondWithFilteredResult(_0x2d2228,_0x3afbc0))[_0x6115('0x54')](handleError(_0x2d2228,null));};exports['show']=function(_0x3ecfda,_0x9f8cca){var _0x49ba24={'raw':![],'where':{'id':_0x3ecfda[_0x6115('0x55')]['id']},'include':[{'model':db['Pause'],'as':_0x6115('0x56')}]},_0x1da5a8={};_0x1da5a8[_0x6115('0x44')]=_[_0x6115('0x46')](db[_0x6115('0x40')][_0x6115('0x41')]);_0x1da5a8[_0x6115('0x45')]=_[_0x6115('0x46')](_0x3ecfda[_0x6115('0x45')]);_0x1da5a8['filters']=_[_0x6115('0x48')](_0x1da5a8[_0x6115('0x44')],_0x1da5a8[_0x6115('0x45')]);_0x49ba24['attributes']=_['intersection'](_0x1da5a8[_0x6115('0x44')],qs[_0x6115('0x4a')](_0x3ecfda['query']['fields']));_0x49ba24[_0x6115('0x49')]=_0x49ba24['attributes'][_0x6115('0x57')]?_0x49ba24[_0x6115('0x49')]:_0x1da5a8['model'];if(_0x3ecfda[_0x6115('0x45')][_0x6115('0x51')]){_0x49ba24[_0x6115('0x52')]=[{'all':!![]}];}_0x49ba24=_[_0x6115('0x58')]({},_0x49ba24,_0x3ecfda[_0x6115('0x59')]);return db['OpenchannelAccount']['find'](_0x49ba24)['then'](handleEntityNotFound(_0x9f8cca,null))['then'](respondWithResult(_0x9f8cca,null))[_0x6115('0x54')](handleError(_0x9f8cca,null));};exports[_0x6115('0x5a')]=function(_0x3ccf8e,_0x5e0922){return db[_0x6115('0x40')][_0x6115('0x5a')](_0x3ccf8e[_0x6115('0x5b')],{})[_0x6115('0x38')](function(_0x2d82e9){var _0xdc4b80=_0x3ccf8e[_0x6115('0x5c')][_0x6115('0x5d')]({'plain':!![]});if(!_0xdc4b80)throw new Error(_0x6115('0x5e'));if(_0xdc4b80['role']===_0x6115('0x5c')){var _0x214ad7=_0x2d82e9[_0x6115('0x5d')]({'plain':!![]});var _0x32467e='OpenchannelAccounts';return db[_0x6115('0x5f')][_0x6115('0x60')]({'where':{'name':_0x32467e,'userProfileId':_0xdc4b80[_0x6115('0x61')]},'raw':!![]})[_0x6115('0x38')](function(_0xb1f8a5){if(_0xb1f8a5&&_0xb1f8a5['autoAssociation']===0x0){return db[_0x6115('0x62')][_0x6115('0x5a')]({'name':_0x214ad7[_0x6115('0x3c')],'resourceId':_0x214ad7['id'],'type':_0xb1f8a5[_0x6115('0x3c')],'sectionId':_0xb1f8a5['id']},{})['then'](function(){return _0x2d82e9;});}else{return _0x2d82e9;}})['catch'](function(_0x2ad573){logger['error'](_0x6115('0x63'),_0x2ad573);throw _0x2ad573;});}return _0x2d82e9;})[_0x6115('0x38')](respondWithResult(_0x5e0922,0xc9))[_0x6115('0x54')](handleError(_0x5e0922,null));};exports[_0x6115('0x36')]=function(_0x382a6c,_0x31e4d5){if(_0x382a6c[_0x6115('0x5b')]['id']){delete _0x382a6c[_0x6115('0x5b')]['id'];}return db[_0x6115('0x40')][_0x6115('0x60')]({'where':{'id':_0x382a6c[_0x6115('0x55')]['id']},'include':[{'model':db[_0x6115('0x3f')],'as':_0x6115('0x56')}]})[_0x6115('0x38')](handleEntityNotFound(_0x31e4d5,null))['then'](saveUpdates(_0x382a6c['body'],null))['then'](respondWithResult(_0x31e4d5,null))[_0x6115('0x54')](handleError(_0x31e4d5,null));};exports[_0x6115('0x37')]=function(_0x5ad7d4,_0x4ab4f0){return db['OpenchannelAccount'][_0x6115('0x60')]({'where':{'id':_0x5ad7d4[_0x6115('0x55')]['id']}})[_0x6115('0x38')](handleEntityNotFound(_0x4ab4f0,null))[_0x6115('0x38')](removeEntity(_0x4ab4f0,null))[_0x6115('0x54')](handleError(_0x4ab4f0,null));};exports[_0x6115('0x64')]=function(_0x48e263,_0x5a2d67){return db[_0x6115('0x40')][_0x6115('0x64')]()['then'](respondWithResult(_0x5a2d67,null))[_0x6115('0x54')](handleError(_0x5a2d67,null));};exports[_0x6115('0x65')]=function(_0x12d51a,_0x412ead,_0xd57c49){if(_0x12d51a[_0x6115('0x5b')]['id']){delete _0x12d51a[_0x6115('0x5b')]['id'];}return db[_0x6115('0x40')][_0x6115('0x60')]({'where':{'id':_0x12d51a[_0x6115('0x55')]['id']}})['then'](handleEntityNotFound(_0x412ead,null))['then'](function(_0x152c53){if(_0x152c53){_0x12d51a['body']['OpenchannelAccountId']=_0x152c53['id'];return db['Disposition'][_0x6115('0x5a')](_0x12d51a[_0x6115('0x5b')]);}})[_0x6115('0x38')](respondWithResult(_0x412ead,null))[_0x6115('0x54')](handleError(_0x412ead,null));};exports[_0x6115('0x66')]=function(_0x145aa7,_0x32a8b4,_0x5c9b5b){var _0xa6c44c={'raw':![],'where':{}};var _0x530267={};var _0x4f7538={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0x6115('0x67')]({'where':{'id':_0x145aa7[_0x6115('0x55')]['id']}})[_0x6115('0x38')](handleEntityNotFound(_0x32a8b4,null))['then'](function(_0x4bede3){if(_0x4bede3){_0x530267[_0x6115('0x44')]=_['keys'](db[_0x6115('0x68')]['rawAttributes']);_0x530267['query']=_[_0x6115('0x46')](_0x145aa7['query']);_0x530267[_0x6115('0x47')]=_[_0x6115('0x48')](_0x530267[_0x6115('0x44')],_0x530267[_0x6115('0x45')]);_0xa6c44c[_0x6115('0x49')]=_[_0x6115('0x48')](_0x530267['model'],qs['fields'](_0x145aa7['query'][_0x6115('0x4a')]));_0xa6c44c[_0x6115('0x49')]=_0xa6c44c['attributes'][_0x6115('0x57')]?_0xa6c44c['attributes']:_0x530267[_0x6115('0x44')];if(!_0x145aa7['query']['hasOwnProperty'](_0x6115('0x69'))){_0xa6c44c[_0x6115('0x2f')]=qs[_0x6115('0x2f')](_0x145aa7[_0x6115('0x45')][_0x6115('0x2f')]);_0xa6c44c['offset']=qs['offset'](_0x145aa7[_0x6115('0x45')][_0x6115('0x31')]);}_0xa6c44c[_0x6115('0x4c')]=qs[_0x6115('0x4d')](_0x145aa7[_0x6115('0x45')][_0x6115('0x4d')]);_0xa6c44c[_0x6115('0x4e')]=qs[_0x6115('0x47')](_[_0x6115('0x4f')](_0x145aa7[_0x6115('0x45')],_0x530267[_0x6115('0x47')]));_0xa6c44c[_0x6115('0x4e')][_0x6115('0x6a')]=_0x4bede3['id'];if(_0x145aa7['query'][_0x6115('0x50')]){_0xa6c44c[_0x6115('0x4e')]=_[_0x6115('0x58')](_0xa6c44c[_0x6115('0x4e')],{'$or':_[_0x6115('0x6b')](_0xa6c44c['attributes'],function(_0x569931){var _0x20b5e9={};_0x20b5e9[_0x569931]={'$like':'%'+_0x145aa7[_0x6115('0x45')][_0x6115('0x50')]+'%'};return _0x20b5e9;})});}_0xa6c44c=_[_0x6115('0x58')]({},_0xa6c44c,_0x145aa7['options']);return db['Disposition'][_0x6115('0x30')]({'where':_0xa6c44c[_0x6115('0x4e')]})['then'](function(_0x1ef601){_0x4f7538[_0x6115('0x30')]=_0x1ef601;if(_0x145aa7['query'][_0x6115('0x51')]){_0xa6c44c[_0x6115('0x52')]=[{'all':!![]}];}return db[_0x6115('0x68')][_0x6115('0x6c')](_0xa6c44c);})[_0x6115('0x38')](function(_0x1273b5){_0x4f7538[_0x6115('0x53')]=_0x1273b5;return _0x4f7538;});}})[_0x6115('0x38')](respondWithFilteredResult(_0x32a8b4,_0xa6c44c))[_0x6115('0x54')](handleError(_0x32a8b4,null));};exports[_0x6115('0x6d')]=function(_0x5e804b,_0x3654ec,_0x4e9c7d){return db[_0x6115('0x40')][_0x6115('0x60')]({'where':{'id':_0x5e804b[_0x6115('0x55')]['id']}})[_0x6115('0x38')](handleEntityNotFound(_0x3654ec,null))[_0x6115('0x38')](function(_0xbdba7c){if(_0xbdba7c){return _0xbdba7c[_0x6115('0x6d')](_0x5e804b['query'][_0x6115('0x6e')]);}})[_0x6115('0x38')](respondWithStatusCode(_0x3654ec,null))[_0x6115('0x54')](handleError(_0x3654ec,null));};exports[_0x6115('0x6f')]=function(_0x113fdd,_0x21a31d,_0xa1491e){if(_0x113fdd[_0x6115('0x5b')]['id']){delete _0x113fdd[_0x6115('0x5b')]['id'];}return db[_0x6115('0x40')][_0x6115('0x60')]({'where':{'id':_0x113fdd[_0x6115('0x55')]['id']}})['then'](handleEntityNotFound(_0x21a31d,null))[_0x6115('0x38')](function(_0x4c7ec5){if(_0x4c7ec5){_0x113fdd[_0x6115('0x5b')][_0x6115('0x6a')]=_0x4c7ec5['id'];return db[_0x6115('0x70')][_0x6115('0x5a')](_0x113fdd[_0x6115('0x5b')]);}})[_0x6115('0x38')](respondWithResult(_0x21a31d,null))[_0x6115('0x54')](handleError(_0x21a31d,null));};exports[_0x6115('0x71')]=function(_0x3b967a,_0x44b42b,_0x114eff){var _0x5e18a6={'raw':![],'where':{}};var _0x590f76={};var _0xdd792d={'count':0x0,'rows':[]};return db[_0x6115('0x40')][_0x6115('0x67')]({'where':{'id':_0x3b967a[_0x6115('0x55')]['id']}})[_0x6115('0x38')](handleEntityNotFound(_0x44b42b,null))['then'](function(_0x5dfc7c){if(_0x5dfc7c){_0x590f76[_0x6115('0x44')]=_[_0x6115('0x46')](db[_0x6115('0x70')][_0x6115('0x41')]);_0x590f76['query']=_[_0x6115('0x46')](_0x3b967a['query']);_0x590f76['filters']=_['intersection'](_0x590f76[_0x6115('0x44')],_0x590f76[_0x6115('0x45')]);_0x5e18a6[_0x6115('0x49')]=_['intersection'](_0x590f76[_0x6115('0x44')],qs[_0x6115('0x4a')](_0x3b967a[_0x6115('0x45')]['fields']));_0x5e18a6[_0x6115('0x49')]=_0x5e18a6['attributes'][_0x6115('0x57')]?_0x5e18a6['attributes']:_0x590f76[_0x6115('0x44')];if(!_0x3b967a['query'][_0x6115('0x4b')](_0x6115('0x69'))){_0x5e18a6[_0x6115('0x2f')]=qs[_0x6115('0x2f')](_0x3b967a[_0x6115('0x45')][_0x6115('0x2f')]);_0x5e18a6[_0x6115('0x31')]=qs[_0x6115('0x31')](_0x3b967a[_0x6115('0x45')][_0x6115('0x31')]);}_0x5e18a6[_0x6115('0x4c')]=qs[_0x6115('0x4d')](_0x3b967a[_0x6115('0x45')][_0x6115('0x4d')]);_0x5e18a6['where']=qs['filters'](_['pick'](_0x3b967a[_0x6115('0x45')],_0x590f76['filters']));_0x5e18a6[_0x6115('0x4e')][_0x6115('0x6a')]=_0x5dfc7c['id'];if(_0x3b967a['query'][_0x6115('0x50')]){_0x5e18a6[_0x6115('0x4e')]=_['merge'](_0x5e18a6[_0x6115('0x4e')],{'$or':_['map'](_0x5e18a6[_0x6115('0x49')],function(_0x2d32f1){var _0xeba0d2={};_0xeba0d2[_0x2d32f1]={'$like':'%'+_0x3b967a[_0x6115('0x45')]['filter']+'%'};return _0xeba0d2;})});}_0x5e18a6=_[_0x6115('0x58')]({},_0x5e18a6,_0x3b967a['options']);return db['CannedAnswer'][_0x6115('0x30')]({'where':_0x5e18a6[_0x6115('0x4e')]})['then'](function(_0x3e9d23){_0xdd792d[_0x6115('0x30')]=_0x3e9d23;if(_0x3b967a[_0x6115('0x45')][_0x6115('0x51')]){_0x5e18a6[_0x6115('0x52')]=[{'all':!![]}];}return db[_0x6115('0x70')]['findAll'](_0x5e18a6);})[_0x6115('0x38')](function(_0x104d8a){_0xdd792d['rows']=_0x104d8a;return _0xdd792d;});}})[_0x6115('0x38')](respondWithFilteredResult(_0x44b42b,_0x5e18a6))[_0x6115('0x54')](handleError(_0x44b42b,null));};exports[_0x6115('0x72')]=function(_0x31c3c7,_0x3e1b2a,_0x24e99c){return db['OpenchannelAccount']['find']({'where':{'id':_0x31c3c7[_0x6115('0x55')]['id']}})[_0x6115('0x38')](handleEntityNotFound(_0x3e1b2a,null))[_0x6115('0x38')](function(_0x3fce89){if(_0x3fce89){return _0x3fce89[_0x6115('0x72')](_0x31c3c7[_0x6115('0x45')][_0x6115('0x6e')]);}})[_0x6115('0x38')](respondWithStatusCode(_0x3e1b2a,null))[_0x6115('0x54')](handleError(_0x3e1b2a,null));};exports[_0x6115('0x73')]=function(_0x43979f,_0x105981,_0xf3871d){var _0x360ba6={'body':_0x43979f[_0x6115('0x5b')],'channel':_0x6115('0x74')};var _0x5f2b93=[];var _0x4227cc=[];var _0x130409={};var _0x3b07cc=![];return db['CmContact'][_0x6115('0x64')]()['then'](function(_0x267bd6){if(!_0x267bd6){throw new db['Sequelize'][(_0x6115('0x75'))](_0x6115('0x76'));}_0x5f2b93=_[_0x6115('0x77')](_[_0x6115('0x46')](_0x267bd6),['createdAt','updatedAt']);_0x4227cc=_['difference'](_['keys'](_0x267bd6),[_0x6115('0x78'),_0x6115('0x79'),_0x6115('0x7a'),_0x6115('0x7b')]);if(_0x43979f['body']['id']){delete _0x43979f[_0x6115('0x5b')]['id'];}if(_['isNil'](_0x43979f[_0x6115('0x5b')][_0x6115('0x7c')])){throw new db[(_0x6115('0x7d'))]['ValidationError'](_0x6115('0x7e'));}if(_[_0x6115('0x7f')](_0x43979f[_0x6115('0x5b')][_0x6115('0x5b')])||_0x43979f[_0x6115('0x5b')][_0x6115('0x5b')]===''){throw new db[(_0x6115('0x7d'))]['ValidationError'](_0x6115('0x80'));}if(_[_0x6115('0x7f')](_0x43979f['body'][_0x6115('0x81')])){throw new db[(_0x6115('0x7d'))][(_0x6115('0x75'))](_0x6115('0x82')+_0x4227cc);}if(!_['includes'](_0x4227cc,_0x43979f['body'][_0x6115('0x81')])){throw new db[(_0x6115('0x7d'))]['ValidationError'](_0x6115('0x83')+_0x4227cc);}_0x130409[_0x43979f[_0x6115('0x5b')][_0x6115('0x81')]]=_0x43979f['body'][_0x6115('0x7c')];})[_0x6115('0x38')](function(){return db['OpenchannelAccount'][_0x6115('0x60')]({'where':{'id':_0x43979f[_0x6115('0x55')]['id']},'include':[{'model':db[_0x6115('0x84')],'as':_0x6115('0x85'),'include':[{'model':db[_0x6115('0x86')],'as':_0x6115('0x87'),'where':_0x130409,'limit':0x1,'order':[['updatedAt',_0x6115('0x88')]]}]},{'model':db[_0x6115('0x89')],'as':_0x6115('0x8a')}]});})[_0x6115('0x38')](handleEntityNotFound(_0x105981,null))[_0x6115('0x38')](function(_0x544266){if(_0x544266&&_0x544266[_0x6115('0x85')]){_0x360ba6['account']=_0x544266;_0x360ba6[_0x6115('0x8b')]=_0x544266[_0x6115('0x8a')];_0x360ba6[_0x6115('0x8c')]=_0x544266[_0x6115('0x85')];_0x360ba6[_0x6115('0x8b')]=_[_0x6115('0x8d')](_0x360ba6['applications'],[_0x6115('0x8e')],[_0x6115('0x8f')]);if(_0x360ba6[_0x6115('0x90')][_0x6115('0x8a')]){delete _0x360ba6[_0x6115('0x90')][_0x6115('0x8a')];}if(_0x360ba6[_0x6115('0x90')][_0x6115('0x85')]&&_0x360ba6[_0x6115('0x90')]['List'][_0x6115('0x87')][_0x6115('0x57')]){return _0x360ba6[_0x6115('0x90')][_0x6115('0x85')][_0x6115('0x87')][0x0];}var _0x2f0317=_['defaults'](_0x43979f['body'],{'firstName':_0x43979f[_0x6115('0x5b')][_0x6115('0x7c')],'ListId':_0x544266[_0x6115('0x7b')]});_0x2f0317[_0x43979f[_0x6115('0x5b')][_0x6115('0x81')]]=_0x43979f[_0x6115('0x5b')][_0x6115('0x7c')];return db['CmContact'][_0x6115('0x5a')](_0x2f0317,{'fields':_0x5f2b93,'raw':!![]});}})[_0x6115('0x38')](handleEntityNotFound(_0x105981,null))[_0x6115('0x38')](function(_0x3a2b93){_0x360ba6['contact']=_0x3a2b93;if(_0x3a2b93){var _0x336228={'ContactId':_0x3a2b93['id'],'OpenchannelAccountId':_0x43979f['params']['id'],'from':(_0x3a2b93[_0x6115('0x91')]||'')+'\x20'+(_0x3a2b93['lastName']||'')};var _0x5f1755={'OpenchannelAccountId':_0x43979f[_0x6115('0x55')]['id'],'closed':![]};if(_0x43979f[_0x6115('0x5b')][_0x6115('0x92')]){_0x5f1755[_0x6115('0x92')]=_0x43979f[_0x6115('0x5b')]['threadId'];return db[_0x6115('0x93')][_0x6115('0x60')]({'where':_0x5f1755})[_0x6115('0x38')](function(_0x4ebdce){if(_0x4ebdce){return[_0x4ebdce,![]];}_0x336228[_0x6115('0x92')]=_0x43979f[_0x6115('0x5b')][_0x6115('0x92')];_0x336228['externalUrl']=_0x43979f[_0x6115('0x5b')][_0x6115('0x94')];return db[_0x6115('0x93')][_0x6115('0x5a')](_0x336228)[_0x6115('0x38')](function(_0x354cb3){return[_0x354cb3,!![]];});});}else{_0x5f1755[_0x6115('0x92')]=null;}_0x5f1755['ContactId']=_0x3a2b93['id'];return db[_0x6115('0x93')][_0x6115('0x60')]({'where':_0x5f1755})[_0x6115('0x38')](function(_0x1c73e4){if(_0x1c73e4){return[_0x1c73e4,![]];}return db['OpenchannelInteraction'][_0x6115('0x5a')](_0x336228)[_0x6115('0x38')](function(_0x15a117){return[_0x15a117,!![]];});});}})['spread'](function(_0x3cdd31,_0xbe2f82){if(_0x3cdd31){_0x3b07cc=_0xbe2f82;if(!_0xbe2f82){var _0x2019b4={'from':(_0x360ba6[_0x6115('0x95')][_0x6115('0x91')]||'')+'\x20'+(_0x360ba6[_0x6115('0x95')]['lastName']||'')};if(_0x43979f[_0x6115('0x5b')][_0x6115('0x92')]&&_0x43979f[_0x6115('0x5b')]['messageId']&&_0x43979f['body'][_0x6115('0x92')]!=_0x43979f[_0x6115('0x5b')]['messageId']){_0x2019b4[_0x6115('0x92')]=_0x43979f[_0x6115('0x5b')][_0x6115('0x96')];}return _0x3cdd31['update'](_0x2019b4);}else{return _0x3cdd31;}}})[_0x6115('0x38')](function(_0x310acb){_0x360ba6[_0x6115('0x97')]=_0x310acb[_0x6115('0x5d')]({'plain':!![]});_0x360ba6[_0x6115('0x97')][_0x6115('0x98')]=_0x3b07cc;if(_0x360ba6[_0x6115('0x97')][_0x6115('0x98')]){if(_0x360ba6[_0x6115('0x90')][_0x6115('0x99')]){_0x360ba6[_0x6115('0x8b')][_0x6115('0x9a')]({'id':0x0,'priority':_0x360ba6['applications']['length']+0x1,'app':'close','appdata':_0x6115('0x9b'),'interval':'*,*,*,*'});}}return db['OpenchannelMessage']['create']({'body':_0x43979f[_0x6115('0x5b')][_0x6115('0x5b')],'OpenchannelAccountId':_0x43979f[_0x6115('0x55')]['id'],'OpenchannelInteractionId':_0x310acb['id'],'direction':'in','ContactId':_0x360ba6[_0x6115('0x95')]['id'],'AttachmentId':_0x43979f['body'][_0x6115('0x9c')]});})[_0x6115('0x38')](function(_0x2dd445){_0x360ba6[_0x6115('0x29')]=_0x2dd445;if(!_0x360ba6[_0x6115('0x97')][_0x6115('0x9d')])return;return db[_0x6115('0x9e')]['find']({'attributes':['id',_0x6115('0x3c')],'where':{'id':_0x360ba6[_0x6115('0x97')][_0x6115('0x9d')]}});})[_0x6115('0x38')](function(_0x48ab2b){if(_0x48ab2b){_0x360ba6[_0x6115('0x8b')]['unshift']({'id':0x0,'priority':0x0,'app':_0x6115('0x9f'),'appdata':_0x48ab2b[_0x6115('0x3c')]+','+(_0x360ba6[_0x6115('0x90')][_0x6115('0xa0')]||0xa),'interval':_0x6115('0xa1')});}if(!_0x360ba6[_0x6115('0x97')][_0x6115('0xa2')])return;return db[_0x6115('0xa3')][_0x6115('0x60')]({'attributes':['id','name'],'where':{'id':_0x360ba6[_0x6115('0x97')][_0x6115('0xa2')]}});})['then'](function(_0x51a23e){if(_0x51a23e){_0x360ba6['applications'][_0x6115('0xa4')]({'id':0x0,'priority':0x1,'app':_0x6115('0xa5'),'appdata':_0x51a23e[_0x6115('0x3c')]+','+(_0x360ba6[_0x6115('0x90')]['waitForTheAssignedQueue']||0x12c),'interval':_0x6115('0xa1')});}return respondWithRpcPromise('Start',_0x6115('0xa6'),_0x360ba6);})[_0x6115('0x38')](function(_0xa08256){respondWithRpcPromise(_0x6115('0xa7'),'EventManager',{'event':_0x6115('0x73'),'message':_0xa08256},client9002);return _0xa08256;})[_0x6115('0x38')](respondWithResult(_0x105981,null))['catch'](handleError(_0x105981,null));};exports[_0x6115('0xa8')]=function(_0x33dea6,_0x45ee30){var _0x258569=_0x33dea6[_0x6115('0x55')]['id'];var _0x92c59a=_0x33dea6['body'];var _0x1fca47=0xc8;var _0x400dd3=null;return db[_0x6115('0xa9')][_0x6115('0xaa')]({'isolationLevel':db[_0x6115('0xa9')][_0x6115('0xab')]['ISOLATION_LEVELS'][_0x6115('0xac')]},function(_0x566530){return db[_0x6115('0x40')][_0x6115('0x67')]({'where':{'id':_0x258569},'transaction':_0x566530})[_0x6115('0x38')](function(_0x50f4d0){if(_0x50f4d0){return db['OpenchannelApplication'][_0x6115('0x37')]({'where':{'OpenchannelAccountId':_0x258569},'transaction':_0x566530})[_0x6115('0x38')](function(){var _0x34e5b5=_[_0x6115('0x6b')](_0x92c59a,function(_0x472f77){_0x472f77[_0x6115('0x6a')]=_0x258569;return _0x472f77;});return db[_0x6115('0x89')][_0x6115('0xad')](_0x34e5b5,{'transaction':_0x566530});});}else{_0x1fca47=0x194;_0x400dd3=[];}});})[_0x6115('0x38')](function(){if(_0x1fca47!==0x194){return db[_0x6115('0x89')]['findAndCountAll']({'where':{'OpenchannelAccountId':_0x258569},'order':_0x6115('0x8e')})[_0x6115('0x38')](function(_0x4836b4){_0x400dd3=_0x4836b4;});}})['catch'](function(_0x41f29a){_0x1fca47=0x1f4;logger[_0x6115('0x27')](_0x41f29a['stack']);if(_0x41f29a['name']){delete _0x41f29a[_0x6115('0x3c')];}_0x400dd3=_0x41f29a;})['finally'](function(){if(_0x400dd3===null){_0x45ee30['sendStatus'](_0x1fca47);}else{if(_0x1fca47===0x1f4){_0x45ee30[_0x6115('0x2c')](_0x1fca47)['send'](_0x400dd3);}else{_0x45ee30[_0x6115('0x2c')](_0x1fca47)[_0x6115('0x2d')](_0x400dd3);}}});};exports[_0x6115('0xae')]=function(_0x327521,_0x49fb7d,_0x231d0d){var _0x2a5f01={};var _0xff2567={};var _0x43bb72;var _0x45e141;return db['OpenchannelAccount'][_0x6115('0x67')]({'where':{'id':_0x327521[_0x6115('0x55')]['id']}})['then'](handleEntityNotFound(_0x49fb7d,null))[_0x6115('0x38')](function(_0x1d2df8){if(_0x1d2df8){_0x43bb72=_0x1d2df8;_0xff2567[_0x6115('0x44')]=_[_0x6115('0x46')](db['OpenchannelApplication'][_0x6115('0x41')]);_0xff2567['query']=_[_0x6115('0x46')](_0x327521[_0x6115('0x45')]);_0xff2567[_0x6115('0x47')]=_['intersection'](_0xff2567['model'],_0xff2567[_0x6115('0x45')]);_0x2a5f01[_0x6115('0x49')]=_['intersection'](_0xff2567[_0x6115('0x44')],qs[_0x6115('0x4a')](_0x327521[_0x6115('0x45')][_0x6115('0x4a')]));_0x2a5f01['attributes']=_0x2a5f01[_0x6115('0x49')][_0x6115('0x57')]?_0x2a5f01['attributes']:_0xff2567[_0x6115('0x44')];_0x2a5f01['order']=qs[_0x6115('0x4d')](_0x327521[_0x6115('0x45')][_0x6115('0x4d')]);_0x2a5f01[_0x6115('0x4e')]=qs[_0x6115('0x47')](_['pick'](_0x327521[_0x6115('0x45')],_0xff2567[_0x6115('0x47')]));if(_0x327521[_0x6115('0x45')][_0x6115('0x50')]){_0x2a5f01[_0x6115('0x4e')]=_[_0x6115('0x58')](_0x2a5f01['where'],{'$or':_[_0x6115('0x6b')](_0x2a5f01[_0x6115('0x49')],function(_0x8f9d85){var _0x11a7f7={};_0x11a7f7[_0x8f9d85]={'$like':'%'+_0x327521[_0x6115('0x45')][_0x6115('0x50')]+'%'};return _0x11a7f7;})});}_0x2a5f01=_[_0x6115('0x58')]({},_0x2a5f01,_0x327521[_0x6115('0x59')]);return _0x43bb72['getApplications'](_0x2a5f01);}})[_0x6115('0x38')](function(_0x50f5a1){if(_0x50f5a1){_0x45e141=_0x50f5a1['length'];if(!_0x327521['query'][_0x6115('0x4b')](_0x6115('0x69'))){_0x2a5f01[_0x6115('0x2f')]=qs[_0x6115('0x2f')](_0x327521[_0x6115('0x45')][_0x6115('0x2f')]);_0x2a5f01[_0x6115('0x31')]=qs[_0x6115('0x31')](_0x327521[_0x6115('0x45')]['offset']);}return _0x43bb72[_0x6115('0xae')](_0x2a5f01);}})[_0x6115('0x38')](function(_0x5cc981){if(_0x5cc981){return _0x5cc981?{'count':_0x45e141,'rows':_0x5cc981}:null;}})['then'](respondWithResult(_0x49fb7d,null))['catch'](handleError(_0x49fb7d,null));};exports[_0x6115('0xaf')]=function(_0x4a8d93,_0x4a645a,_0x248412){var _0x44249b={'raw':![],'where':{}};var _0x3cd6cc={};var _0x2e280d={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0x6115('0x67')]({'where':{'id':_0x4a8d93[_0x6115('0x55')]['id']}})[_0x6115('0x38')](handleEntityNotFound(_0x4a645a,null))[_0x6115('0x38')](function(_0x4826b9){if(_0x4826b9){_0x3cd6cc[_0x6115('0x44')]=_['keys'](db[_0x6115('0x93')][_0x6115('0x41')]);_0x3cd6cc[_0x6115('0x45')]=_[_0x6115('0x46')](_0x4a8d93[_0x6115('0x45')]);_0x3cd6cc[_0x6115('0x47')]=_[_0x6115('0x48')](_0x3cd6cc[_0x6115('0x44')],_0x3cd6cc['query']);_0x44249b[_0x6115('0x49')]=_[_0x6115('0x48')](_0x3cd6cc['model'],qs[_0x6115('0x4a')](_0x4a8d93[_0x6115('0x45')]['fields']));_0x44249b['attributes']=_0x44249b['attributes'][_0x6115('0x57')]?_0x44249b[_0x6115('0x49')]:_0x3cd6cc[_0x6115('0x44')];if(!_0x4a8d93['query']['hasOwnProperty'](_0x6115('0x69'))){_0x44249b[_0x6115('0x2f')]=qs['limit'](_0x4a8d93['query'][_0x6115('0x2f')]);_0x44249b['offset']=qs[_0x6115('0x31')](_0x4a8d93[_0x6115('0x45')][_0x6115('0x31')]);}_0x44249b[_0x6115('0x4c')]=qs[_0x6115('0x4d')](_0x4a8d93['query'][_0x6115('0x4d')]);_0x44249b['where']=qs[_0x6115('0x47')](_[_0x6115('0x4f')](_0x4a8d93[_0x6115('0x45')],_0x3cd6cc[_0x6115('0x47')]));_0x44249b[_0x6115('0x4e')][_0x6115('0x6a')]=_0x4826b9['id'];if(_0x4a8d93[_0x6115('0x45')][_0x6115('0x50')]){_0x44249b[_0x6115('0x4e')]=_['merge'](_0x44249b[_0x6115('0x4e')],{'$or':_[_0x6115('0x6b')](_0x44249b[_0x6115('0x49')],function(_0x4945ca){var _0x5eff21={};_0x5eff21[_0x4945ca]={'$like':'%'+_0x4a8d93[_0x6115('0x45')][_0x6115('0x50')]+'%'};return _0x5eff21;})});}_0x44249b=_[_0x6115('0x58')]({},_0x44249b,_0x4a8d93['options']);return db[_0x6115('0x93')][_0x6115('0x30')]({'where':_0x44249b['where']})[_0x6115('0x38')](function(_0x140933){_0x2e280d[_0x6115('0x30')]=_0x140933;if(_0x4a8d93[_0x6115('0x45')][_0x6115('0x51')]){_0x44249b[_0x6115('0x52')]=[{'model':db[_0x6115('0x86')],'as':_0x6115('0xb0'),'required':![]},{'model':db[_0x6115('0x9e')],'as':'Owner','attributes':[_0x6115('0x3c'),'fullname','internal'],'required':![]},{'model':db[_0x6115('0xb1')],'as':'Tags','attributes':['id',_0x6115('0x3c'),_0x6115('0xb2')],'where':_0x4a8d93[_0x6115('0x45')]['tag']?{'id':_0x4a8d93[_0x6115('0x45')][_0x6115('0xb3')]}:undefined,'required':_0x4a8d93[_0x6115('0x45')]['tag']?!![]:![]}];}return db[_0x6115('0x93')][_0x6115('0x6c')](_0x44249b);})[_0x6115('0x38')](function(_0x58d602){_0x2e280d[_0x6115('0x53')]=_0x58d602;return _0x2e280d;});}})[_0x6115('0x38')](respondWithFilteredResult(_0x4a645a,_0x44249b))[_0x6115('0x54')](handleError(_0x4a645a,null));};exports[_0x6115('0xb4')]=function(_0x5e86a4,_0x1d91a4,_0x52a9bb){return db[_0x6115('0x40')][_0x6115('0x60')]({'where':{'id':_0x5e86a4[_0x6115('0x55')]['id']}})[_0x6115('0x38')](handleEntityNotFound(_0x1d91a4,null))[_0x6115('0x38')](function(_0x3de836){if(_0x3de836){return _0x3de836['addAgents'](_0x5e86a4[_0x6115('0x5b')][_0x6115('0x6e')],_[_0x6115('0xb5')](_0x5e86a4['body'],[_0x6115('0x6e'),'id'])||{})['spread'](function(_0x5b588f){for(var _0x340908=0x0;_0x340908<_0x5e86a4[_0x6115('0x5b')][_0x6115('0x6e')][_0x6115('0x57')];_0x340908+=0x1){socket[_0x6115('0xb6')](_0x6115('0xb7'),{'UserId':Number(_0x5e86a4[_0x6115('0x5b')][_0x6115('0x6e')][_0x340908]),'OpenchannelAccountId':Number(_0x5e86a4[_0x6115('0x55')]['id'])});}return _0x5b588f;});}})[_0x6115('0x38')](respondWithResult(_0x1d91a4,null))[_0x6115('0x54')](handleError(_0x1d91a4,null));};exports[_0x6115('0xb8')]=function(_0xf12233,_0x58e532,_0x194113){return db[_0x6115('0x40')][_0x6115('0x60')]({'where':{'id':_0xf12233[_0x6115('0x55')]['id']}})[_0x6115('0x38')](handleEntityNotFound(_0x58e532,null))['then'](function(_0x9b97f8){if(_0x9b97f8){return _0x9b97f8[_0x6115('0xb8')](_0xf12233[_0x6115('0x45')][_0x6115('0x6e')])[_0x6115('0x38')](function(){if(_[_0x6115('0xb9')](_0xf12233[_0x6115('0x45')][_0x6115('0x6e')])){for(var _0x4f48e3=0x0;_0x4f48e3<_0xf12233['query'][_0x6115('0x6e')][_0x6115('0x57')];_0x4f48e3+=0x1){socket['emit']('userOpenchannelAccount:remove',{'UserId':Number(_0xf12233[_0x6115('0x45')]['ids'][_0x4f48e3]),'OpenchannelAccountId':Number(_0xf12233['params']['id'])});}}else{socket[_0x6115('0xb6')](_0x6115('0xba'),{'UserId':Number(_0xf12233[_0x6115('0x45')][_0x6115('0x6e')]),'OpenchannelAccountId':Number(_0xf12233[_0x6115('0x55')]['id'])});}});}})[_0x6115('0x38')](respondWithStatusCode(_0x58e532,null))['catch'](handleError(_0x58e532,null));};exports['getAgents']=function(_0x85e048,_0x259483,_0x6a893){var _0x7346de={};var _0x49b18a={};var _0x570d91;var _0x36380b;return db[_0x6115('0x40')]['findOne']({'where':{'id':_0x85e048[_0x6115('0x55')]['id']}})[_0x6115('0x38')](handleEntityNotFound(_0x259483,null))['then'](function(_0x2cd19b){if(_0x2cd19b){_0x570d91=_0x2cd19b;_0x49b18a[_0x6115('0x44')]=_[_0x6115('0x46')](db[_0x6115('0x9e')][_0x6115('0x41')]);_0x49b18a[_0x6115('0x45')]=_[_0x6115('0x46')](_0x85e048['query']);_0x49b18a[_0x6115('0x47')]=_[_0x6115('0x48')](_0x49b18a[_0x6115('0x44')],_0x49b18a[_0x6115('0x45')]);_0x7346de['attributes']=_[_0x6115('0x48')](_0x49b18a[_0x6115('0x44')],qs[_0x6115('0x4a')](_0x85e048['query'][_0x6115('0x4a')]));_0x7346de[_0x6115('0x49')]=_0x7346de[_0x6115('0x49')][_0x6115('0x57')]?_0x7346de[_0x6115('0x49')]:_0x49b18a['model'];_0x7346de['order']=qs[_0x6115('0x4d')](_0x85e048['query'][_0x6115('0x4d')]);_0x7346de[_0x6115('0x4e')]=qs[_0x6115('0x47')](_[_0x6115('0x4f')](_0x85e048[_0x6115('0x45')],_0x49b18a[_0x6115('0x47')]));if(_0x85e048['query'][_0x6115('0x50')]){_0x7346de[_0x6115('0x4e')]=_[_0x6115('0x58')](_0x7346de[_0x6115('0x4e')],{'$or':_[_0x6115('0x6b')](_0x7346de['attributes'],function(_0x5adafd){var _0xda03f4={};_0xda03f4[_0x5adafd]={'$like':'%'+_0x85e048['query'][_0x6115('0x50')]+'%'};return _0xda03f4;})});}_0x7346de=_[_0x6115('0x58')]({},_0x7346de,_0x85e048[_0x6115('0x59')]);return _0x570d91[_0x6115('0xbb')](_0x7346de);}})['then'](function(_0x318bed){if(_0x318bed){_0x36380b=_0x318bed[_0x6115('0x57')];if(!_0x85e048[_0x6115('0x45')][_0x6115('0x4b')]('nolimit')){_0x7346de[_0x6115('0x2f')]=qs[_0x6115('0x2f')](_0x85e048[_0x6115('0x45')][_0x6115('0x2f')]);_0x7346de[_0x6115('0x31')]=qs['offset'](_0x85e048[_0x6115('0x45')][_0x6115('0x31')]);}return _0x570d91[_0x6115('0xbb')](_0x7346de);}})[_0x6115('0x38')](function(_0x2f0083){if(_0x2f0083){return _0x2f0083?{'count':_0x36380b,'rows':_0x2f0083}:null;}})[_0x6115('0x38')](respondWithResult(_0x259483,null))[_0x6115('0x54')](handleError(_0x259483,null));};exports[_0x6115('0x3d')]=function(_0x395647,_0x24ba64,_0x18461e){var _0x4c7784,_0x125d92,_0x13b517;if(_[_0x6115('0x7f')](_0x395647[_0x6115('0x5b')]['body'])||_0x395647[_0x6115('0x5b')]['body']===''){throw new db['Sequelize']['ValidationError'](_0x6115('0x80'));}if(_[_0x6115('0x7f')](_0x395647[_0x6115('0x5b')]['to'])){}_0x4c7784=_0x395647[_0x6115('0x5b')]['to'];return db['OpenchannelAccount'][_0x6115('0x67')]({'where':{'id':_0x395647[_0x6115('0x55')]['id']}})[_0x6115('0x38')](handleEntityNotFound(_0x24ba64,null))[_0x6115('0x38')](function(_0x56ed8c){if(_0x56ed8c){return db[_0x6115('0x40')][_0x6115('0x60')]({'where':{'id':_0x56ed8c['id']},'include':[{'model':db[_0x6115('0x84')],'as':_0x6115('0x85'),'include':[{'model':db[_0x6115('0x86')],'as':'Contacts','where':{[_0x56ed8c[_0x6115('0x81')]]:_0x4c7784},'limit':0x1,'order':[[_0x6115('0x79'),_0x6115('0x88')]]}]}]})['then'](handleEntityNotFound(_0x24ba64,null))[_0x6115('0x38')](function(_0x7e72f){if(_0x7e72f&&_0x7e72f[_0x6115('0x85')]){_0x125d92=_0x7e72f[_0x6115('0x5d')]({'plain':!![]});if(_0x125d92[_0x6115('0x85')]&&_0x125d92[_0x6115('0x85')][_0x6115('0x87')]['length']){return _0x125d92[_0x6115('0x85')]['Contacts'][0x0];}return db['CmContact'][_0x6115('0x5a')](_[_0x6115('0x1b')](_0x395647[_0x6115('0x5b')],{'firstName':_0x4c7784,[_0x7e72f[_0x6115('0x81')]]:_0x4c7784,'phone':_0x4c7784,'ListId':_0x125d92[_0x6115('0x7b')]}));}})['then'](handleEntityNotFound(_0x24ba64,null))[_0x6115('0x38')](function(_0x5018eb){if(_0x5018eb){_0x13b517=_0x5018eb;return db['OpenchannelInteraction'][_0x6115('0x60')]({'where':{'ContactId':_0x13b517['id'],'closed':![],'OpenchannelAccountId':_0x125d92['id']}})[_0x6115('0x38')](function(_0x199bb5){if(_0x199bb5){return[_0x199bb5,![]];}return db[_0x6115('0x93')][_0x6115('0x5a')]({'UserId':_0x395647[_0x6115('0x5c')]['id'],'ContactId':_0x13b517['id'],'OpenchannelAccountId':_0x125d92['id'],'lastMsgDirection':_0x6115('0xbc'),'firstMsgDirection':_0x6115('0xbc'),'Messages':[_[_0x6115('0x58')](_0x395647['body'],{'read':![],'body':_0x395647[_0x6115('0x5b')][_0x6115('0x5b')],'OpenchannelAccountId':_0x125d92['id'],'UserId':_0x395647[_0x6115('0x5c')]['id'],'ContactId':_0x13b517['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':_0x6115('0xbd')}]})[_0x6115('0x38')](function(_0x49cc5a){return[_0x49cc5a,!![]];});});}})[_0x6115('0xbe')](function(_0x285f4d,_0x13e3c6){if(_0x13e3c6){return _0x285f4d;}return db[_0x6115('0xbf')][_0x6115('0x5a')](_['merge'](_0x395647[_0x6115('0x5b')],{'read':![],'body':_0x395647[_0x6115('0x5b')]['body'],'OpenchannelAccountId':_0x125d92['id'],'OpenchannelInteractionId':_0x285f4d['id'],'UserId':_0x395647['user']['id'],'ContactId':_0x13b517['id']}))[_0x6115('0x38')](function(_0x3a652d){_0x285f4d['dataValues'][_0x6115('0xbd')]=[];_0x285f4d['dataValues']['Messages']['push'](_0x3a652d[_0x6115('0xc0')]);return _0x285f4d;});});}})[_0x6115('0x38')](respondWithResult(_0x24ba64,null))[_0x6115('0x54')](handleError(_0x24ba64,null));};
\ No newline at end of file
index dda1caa..bf8ebe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13f6=['save','update','remove','emit','hasOwnProperty','events','../../mysqldb'];(function(_0x2dde04,_0x1b2c52){var _0x3be2b3=function(_0x3cd8d8){while(--_0x3cd8d8){_0x2dde04['push'](_0x2dde04['shift']());}};_0x3be2b3(++_0x1b2c52);}(_0x13f6,0x124));var _0x613f=function(_0x791916,_0x340092){_0x791916=_0x791916-0x0;var _0x238044=_0x13f6[_0x791916];return _0x238044;};'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
+var _0x0713=['exports','OpenchannelAccount','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x5b04a3,_0xfda4fd){var _0x1adf11=function(_0x9e242a){while(--_0x9e242a){_0x5b04a3['push'](_0x5b04a3['shift']());}};_0x1adf11(++_0xfda4fd);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var OpenchannelAccount=require('../../mysqldb')['db'][_0x3071('0x0')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x3071('0x1')](0x0);var events={'afterCreate':_0x3071('0x2'),'afterUpdate':_0x3071('0x3'),'afterDestroy':_0x3071('0x4')};function emitEvent(_0x52b5fb){return function(_0x2c547f,_0x7b18a4,_0x33a70c){OpenchannelAccountEvents[_0x3071('0x5')](_0x52b5fb+':'+_0x2c547f['id'],_0x2c547f);OpenchannelAccountEvents[_0x3071('0x5')](_0x52b5fb,_0x2c547f);_0x33a70c(null);};}for(var e in events){if(events[_0x3071('0x6')](e)){var event=events[e];OpenchannelAccount[_0x3071('0x7')](e,emitEvent(event));}}module[_0x3071('0x8')]=OpenchannelAccountEvents;
\ No newline at end of file
index a37c89c..0430e7c 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(_0x5c6cf9,_0x27f516){var _0x3bc762=function(_0x4b5add){while(--_0x4b5add){_0x5c6cf9['push'](_0x5c6cf9['shift']());}};_0x3bc762(++_0x27f516);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0xa9e0[_0x4b7b62];return _0x2280df;};'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(_0x30eb21,_0x354b13){var _0x483260=function(_0x9719d8){while(--_0x9719d8){_0x30eb21['push'](_0x30eb21['shift']());}};_0x483260(++_0x354b13);}(_0xa9e0,0x123));var _0x0a9e=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0xa9e0[_0x47a7d0];return _0xb9bd08;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 217fcaf..3664660 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f59=['redis','localhost','socket.io-emitter','register','info','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','OpenchannelAccount,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x8f59,0x11d));var _0x98f5=function(_0x1d2f15,_0x1107c6){_0x1d2f15=_0x1d2f15-0x0;var _0x19efd2=_0x8f59[_0x1d2f15];return _0x19efd2;};'use strict';var _=require(_0x98f5('0x0'));var util=require(_0x98f5('0x1'));var moment=require(_0x98f5('0x2'));var BPromise=require(_0x98f5('0x3'));var rs=require(_0x98f5('0x4'));var fs=require('fs');var Redis=require(_0x98f5('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x98f5('0x6'));var logger=require(_0x98f5('0x7'))(_0x98f5('0x8'));var config=require(_0x98f5('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x98f5('0xa')][_0x98f5('0xb')]({'port':0x232a});config[_0x98f5('0xc')]=_['defaults'](config['redis'],{'host':_0x98f5('0xd'),'port':0x18eb});var socket=require(_0x98f5('0xe'))(new Redis(config[_0x98f5('0xc')]));require('./openchannelAccount.socket')[_0x98f5('0xf')](socket);function respondWithRpcPromise(_0x31b669,_0x227cf3,_0x39e85d){return new BPromise(function(_0x4c4abc,_0x26a0fc){return client['request'](_0x31b669,_0x39e85d)['then'](function(_0x3cf4b2){logger[_0x98f5('0x10')]('OpenchannelAccount,\x20%s,\x20%s',_0x227cf3,_0x98f5('0x11'));logger[_0x98f5('0x12')](_0x98f5('0x13'),_0x227cf3,_0x98f5('0x11'),JSON[_0x98f5('0x14')](_0x3cf4b2));if(_0x3cf4b2[_0x98f5('0x15')]){if(_0x3cf4b2['error'][_0x98f5('0x16')]===0x1f4){logger[_0x98f5('0x15')]('OpenchannelAccount,\x20%s,\x20%s',_0x227cf3,_0x3cf4b2[_0x98f5('0x15')][_0x98f5('0x17')]);return _0x26a0fc(_0x3cf4b2[_0x98f5('0x15')]['message']);}logger[_0x98f5('0x15')](_0x98f5('0x18'),_0x227cf3,_0x3cf4b2[_0x98f5('0x15')]['message']);return _0x4c4abc(_0x3cf4b2[_0x98f5('0x15')][_0x98f5('0x17')]);}else{logger['info'](_0x98f5('0x18'),_0x227cf3,'request\x20sent');_0x4c4abc(_0x3cf4b2[_0x98f5('0x19')][_0x98f5('0x17')]);}})[_0x98f5('0x1a')](function(_0x11b6d4){logger[_0x98f5('0x15')](_0x98f5('0x18'),_0x227cf3,_0x11b6d4);_0x26a0fc(_0x11b6d4);});});}
\ No newline at end of file
+var _0xcecc=['moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','request','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','lodash'];(function(_0x30ba61,_0x48b905){var _0x7300ad=function(_0x3b4f73){while(--_0x3b4f73){_0x30ba61['push'](_0x30ba61['shift']());}};_0x7300ad(++_0x48b905);}(_0xcecc,0x186));var _0xccec=function(_0x37fa03,_0x3c1c0a){_0x37fa03=_0x37fa03-0x0;var _0x37de47=_0xcecc[_0x37fa03];return _0x37de47;};'use strict';var _=require(_0xccec('0x0'));var util=require('util');var moment=require(_0xccec('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xccec('0x2'));var db=require(_0xccec('0x3'))['db'];var utils=require(_0xccec('0x4'));var logger=require(_0xccec('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xccec('0x6'));var client=jayson['client'][_0xccec('0x7')]({'port':0x232a});config[_0xccec('0x8')]=_[_0xccec('0x9')](config['redis'],{'host':_0xccec('0xa'),'port':0x18eb});var socket=require(_0xccec('0xb'))(new Redis(config['redis']));require(_0xccec('0xc'))[_0xccec('0xd')](socket);function respondWithRpcPromise(_0x45ba32,_0x108788,_0x4a936c){return new BPromise(function(_0x49ad58,_0x5d94a5){return client[_0xccec('0xe')](_0x45ba32,_0x4a936c)[_0xccec('0xf')](function(_0x547e6e){logger[_0xccec('0x10')](_0xccec('0x11'),_0x108788,_0xccec('0x12'));logger['debug'](_0xccec('0x13'),_0x108788,_0xccec('0x12'),JSON[_0xccec('0x14')](_0x547e6e));if(_0x547e6e[_0xccec('0x15')]){if(_0x547e6e[_0xccec('0x15')]['code']===0x1f4){logger[_0xccec('0x15')]('OpenchannelAccount,\x20%s,\x20%s',_0x108788,_0x547e6e['error']['message']);return _0x5d94a5(_0x547e6e[_0xccec('0x15')][_0xccec('0x16')]);}logger[_0xccec('0x15')](_0xccec('0x11'),_0x108788,_0x547e6e[_0xccec('0x15')][_0xccec('0x16')]);return _0x49ad58(_0x547e6e[_0xccec('0x15')][_0xccec('0x16')]);}else{logger[_0xccec('0x10')]('OpenchannelAccount,\x20%s,\x20%s',_0x108788,'request\x20sent');_0x49ad58(_0x547e6e['result'][_0xccec('0x16')]);}})['catch'](function(_0x76b9fd){logger[_0xccec('0x15')](_0xccec('0x11'),_0x108788,_0x76b9fd);_0x5d94a5(_0x76b9fd);});});}
\ No newline at end of file
index 47b18df..581d51d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa68=['openchannelAccount:','./openchannelAccount.events','save','remove','removeListener','register','length'];(function(_0x3e93cf,_0xfdfabc){var _0x4bbcfc=function(_0x3d488a){while(--_0x3d488a){_0x3e93cf['push'](_0x3e93cf['shift']());}};_0x4bbcfc(++_0xfdfabc);}(_0xfa68,0x86));var _0x8fa6=function(_0x5ac720,_0x3f66ac){_0x5ac720=_0x5ac720-0x0;var _0xe79cd7=_0xfa68[_0x5ac720];return _0xe79cd7;};'use strict';var OpenchannelAccountEvents=require(_0x8fa6('0x0'));var events=[_0x8fa6('0x1'),_0x8fa6('0x2'),'update'];function createListener(_0x16029c,_0x3debfe){return function(_0x3cb0da){_0x3debfe['emit'](_0x16029c,_0x3cb0da);};}function removeListener(_0x1fba3b,_0x2a63d9){return function(){OpenchannelAccountEvents[_0x8fa6('0x3')](_0x1fba3b,_0x2a63d9);};}exports[_0x8fa6('0x4')]=function(_0x3d75c1){for(var _0x4f68b4=0x0,_0x1ab645=events[_0x8fa6('0x5')];_0x4f68b4<_0x1ab645;_0x4f68b4++){var _0x523f62=events[_0x4f68b4];var _0x1cdf94=createListener(_0x8fa6('0x6')+_0x523f62,_0x3d75c1);OpenchannelAccountEvents['on'](_0x523f62,_0x1cdf94);}};
\ No newline at end of file
+var _0xac65=['removeListener','length','openchannelAccount:','./openchannelAccount.events','save','remove'];(function(_0x1561b8,_0x29716e){var _0x5966c8=function(_0x3bd198){while(--_0x3bd198){_0x1561b8['push'](_0x1561b8['shift']());}};_0x5966c8(++_0x29716e);}(_0xac65,0x11d));var _0x5ac6=function(_0x44efb3,_0x2c3d44){_0x44efb3=_0x44efb3-0x0;var _0x8d320d=_0xac65[_0x44efb3];return _0x8d320d;};'use strict';var OpenchannelAccountEvents=require(_0x5ac6('0x0'));var events=[_0x5ac6('0x1'),_0x5ac6('0x2'),'update'];function createListener(_0x12c381,_0xb4d53){return function(_0x35ac0f){_0xb4d53['emit'](_0x12c381,_0x35ac0f);};}function removeListener(_0x16800d,_0x2cbf7e){return function(){OpenchannelAccountEvents[_0x5ac6('0x3')](_0x16800d,_0x2cbf7e);};}exports['register']=function(_0x2da747){for(var _0x38711d=0x0,_0x130661=events[_0x5ac6('0x4')];_0x38711d<_0x130661;_0x38711d++){var _0xa61e6f=events[_0x38711d];var _0x932f6f=createListener(_0x5ac6('0x5')+_0xa61e6f,_0x2da747);OpenchannelAccountEvents['on'](_0xa61e6f,_0x932f6f);}};
\ No newline at end of file
index ca64b97..63cc697 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d37=['fs-extra','../../components/interaction/service','./openchannelApplication.controller','isAuthenticated','index','get','/:id','show','put','update','delete','destroy','exports','multer','connect-timeout','express'];(function(_0x482066,_0x3bd937){var _0x49dc8b=function(_0x10cddc){while(--_0x10cddc){_0x482066['push'](_0x482066['shift']());}};_0x49dc8b(++_0x3bd937);}(_0x3d37,0x1ad));var _0x73d3=function(_0x992c5d,_0x38fbf8){_0x992c5d=_0x992c5d-0x0;var _0x11c861=_0x3d37[_0x992c5d];return _0x11c861;};'use strict';var multer=require(_0x73d3('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x73d3('0x1'));var express=require(_0x73d3('0x2'));var router=express['Router']();var fs_extra=require(_0x73d3('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x73d3('0x4'));var config=require('../../config/environment');var controller=require(_0x73d3('0x5'));router['get']('/',auth[_0x73d3('0x6')](),controller[_0x73d3('0x7')]);router[_0x73d3('0x8')](_0x73d3('0x9'),auth[_0x73d3('0x6')](),controller[_0x73d3('0xa')]);router['post']('/',auth[_0x73d3('0x6')](),controller['create']);router[_0x73d3('0xb')](_0x73d3('0x9'),auth[_0x73d3('0x6')](),controller[_0x73d3('0xc')]);router[_0x73d3('0xd')](_0x73d3('0x9'),auth[_0x73d3('0x6')](),controller[_0x73d3('0xe')]);module[_0x73d3('0xf')]=router;
\ No newline at end of file
+var _0x17da=['exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','./openchannelApplication.controller','get','index','/:id','isAuthenticated','create','delete'];(function(_0x55d829,_0x43f06c){var _0x52163b=function(_0x493cd8){while(--_0x493cd8){_0x55d829['push'](_0x55d829['shift']());}};_0x52163b(++_0x43f06c);}(_0x17da,0x10f));var _0xa17d=function(_0x55a821,_0x55dea3){_0x55a821=_0x55a821-0x0;var _0x3d2d0d=_0x17da[_0x55a821];return _0x3d2d0d;};'use strict';var multer=require(_0xa17d('0x0'));var util=require(_0xa17d('0x1'));var path=require(_0xa17d('0x2'));var timeout=require('connect-timeout');var express=require(_0xa17d('0x3'));var router=express[_0xa17d('0x4')]();var fs_extra=require(_0xa17d('0x5'));var auth=require(_0xa17d('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa17d('0x7'));router[_0xa17d('0x8')]('/',auth['isAuthenticated'](),controller[_0xa17d('0x9')]);router[_0xa17d('0x8')](_0xa17d('0xa'),auth[_0xa17d('0xb')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xa17d('0xc')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0xa17d('0xd')](_0xa17d('0xa'),auth[_0xa17d('0xb')](),controller['destroy']);module[_0xa17d('0xe')]=router;
\ No newline at end of file
index 31c1f0d..135a412 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x790e=['sequelize','INTEGER','STRING','noop','TEXT','*,*,*,*'];(function(_0xd89b63,_0x27b39f){var _0x32980b=function(_0x119995){while(--_0x119995){_0xd89b63['push'](_0xd89b63['shift']());}};_0x32980b(++_0x27b39f);}(_0x790e,0xf0));var _0xe790=function(_0x3a46df,_0xda8b5a){_0x3a46df=_0x3a46df-0x0;var _0x5df0c7=_0x790e[_0x3a46df];return _0x5df0c7;};'use strict';var Sequelize=require(_0xe790('0x0'));module['exports']={'priority':{'type':Sequelize[_0xe790('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xe790('0x2')],'allowNull':![],'defaultValue':_0xe790('0x3')},'appdata':{'type':Sequelize[_0xe790('0x4')]()},'description':{'type':Sequelize[_0xe790('0x2')]},'interval':{'type':Sequelize[_0xe790('0x2')],'defaultValue':_0xe790('0x5')}};
\ No newline at end of file
+var _0x07c4=['STRING','noop','*,*,*,*','exports','INTEGER'];(function(_0x46d0c9,_0x526bfa){var _0x174506=function(_0x654bc6){while(--_0x654bc6){_0x46d0c9['push'](_0x46d0c9['shift']());}};_0x174506(++_0x526bfa);}(_0x07c4,0x18e));var _0x407c=function(_0x53d12e,_0x88d20e){_0x53d12e=_0x53d12e-0x0;var _0x1c1f32=_0x07c4[_0x53d12e];return _0x1c1f32;};'use strict';var Sequelize=require('sequelize');module[_0x407c('0x0')]={'priority':{'type':Sequelize[_0x407c('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x407c('0x2')],'allowNull':![],'defaultValue':_0x407c('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x407c('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x407c('0x4')}};
\ No newline at end of file
index 7f822fe..8fdcfe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11a3=['../../config/environment','../../config/license/util','status','end','offset','limit','undefined','count','Content-Range','json','save','update','then','destroy','sendStatus','error','stack','name','send','index','OpenchannelApplication','fieldName','key','model','map','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','type','merge','options','includeAll','rows','catch','show','params','rawAttributes','include','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x11a3,0x162));var _0x311a=function(_0xbf8ebe,_0x3b69a5){_0xbf8ebe=_0xbf8ebe-0x0;var _0x1e25e8=_0x11a3[_0xbf8ebe];return _0x1e25e8;};'use strict';var emlformat=require(_0x311a('0x0'));var rimraf=require(_0x311a('0x1'));var zipdir=require(_0x311a('0x2'));var jsonpatch=require(_0x311a('0x3'));var rp=require(_0x311a('0x4'));var moment=require(_0x311a('0x5'));var BPromise=require(_0x311a('0x6'));var Mustache=require(_0x311a('0x7'));var util=require(_0x311a('0x8'));var path=require(_0x311a('0x9'));var sox=require('sox');var csv=require(_0x311a('0xa'));var ejs=require(_0x311a('0xb'));var fs=require('fs');var fs_extra=require(_0x311a('0xc'));var _=require(_0x311a('0xd'));var squel=require(_0x311a('0xe'));var crypto=require(_0x311a('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x311a('0x10'));var toCsv=require(_0x311a('0xa'));var querystring=require(_0x311a('0x11'));var Papa=require(_0x311a('0x12'));var Redis=require('ioredis');var authService=require(_0x311a('0x13'));var qs=require(_0x311a('0x14'));var as=require(_0x311a('0x15'));var hardwareService=require(_0x311a('0x16'));var logger=require(_0x311a('0x17'))(_0x311a('0x18'));var utils=require(_0x311a('0x19'));var config=require(_0x311a('0x1a'));var licenseUtil=require(_0x311a('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1def3f,_0x310602){_0x310602=_0x310602||0xcc;return function(_0x455d19){if(_0x455d19){return _0x1def3f['sendStatus'](_0x310602);}return _0x1def3f[_0x311a('0x1c')](_0x310602)[_0x311a('0x1d')]();};}function respondWithResult(_0x32259b,_0x44dc32){_0x44dc32=_0x44dc32||0xc8;return function(_0x2e72a8){if(_0x2e72a8){return _0x32259b['status'](_0x44dc32)['json'](_0x2e72a8);}};}function respondWithFilteredResult(_0x5b0c06,_0x3016ed){return function(_0x3a068d){if(_0x3a068d){var _0x36f119=typeof _0x3016ed[_0x311a('0x1e')]==='undefined'&&typeof _0x3016ed[_0x311a('0x1f')]===_0x311a('0x20');var _0x441b89=_0x3a068d[_0x311a('0x21')];var _0x9627e7=_0x36f119?0x0:_0x3016ed[_0x311a('0x1e')];var _0x28a636=_0x36f119?_0x3a068d[_0x311a('0x21')]:_0x3016ed[_0x311a('0x1e')]+_0x3016ed[_0x311a('0x1f')];var _0x396ff6;if(_0x28a636>=_0x441b89){_0x28a636=_0x441b89;_0x396ff6=0xc8;}else{_0x396ff6=0xce;}_0x5b0c06['status'](_0x396ff6);return _0x5b0c06['set'](_0x311a('0x22'),_0x9627e7+'-'+_0x28a636+'/'+_0x441b89)[_0x311a('0x23')](_0x3a068d);}return null;};}function patchUpdates(_0x559896){return function(_0x6affd4){try{jsonpatch['apply'](_0x6affd4,_0x559896,!![]);}catch(_0x488ebf){return BPromise['reject'](_0x488ebf);}return _0x6affd4[_0x311a('0x24')]();};}function saveUpdates(_0x34ba80,_0x14c06e){return function(_0x2e0848){if(_0x2e0848){return _0x2e0848[_0x311a('0x25')](_0x34ba80)[_0x311a('0x26')](function(_0x3510c6){return _0x3510c6;});}return null;};}function removeEntity(_0x5a374e,_0x657143){return function(_0x454119){if(_0x454119){return _0x454119[_0x311a('0x27')]()[_0x311a('0x26')](function(){_0x5a374e['status'](0xcc)[_0x311a('0x1d')]();});}};}function handleEntityNotFound(_0x37a63a,_0x2e462f){return function(_0x438318){if(!_0x438318){_0x37a63a[_0x311a('0x28')](0x194);}return _0x438318;};}function handleError(_0xc20db8,_0x1ac834){_0x1ac834=_0x1ac834||0x1f4;return function(_0x2d5b61){logger[_0x311a('0x29')](_0x2d5b61[_0x311a('0x2a')]);if(_0x2d5b61[_0x311a('0x2b')]){delete _0x2d5b61['name'];}_0xc20db8[_0x311a('0x1c')](_0x1ac834)[_0x311a('0x2c')](_0x2d5b61);};}exports[_0x311a('0x2d')]=function(_0x491a57,_0x22d18b){var _0x3263c2={},_0x199387={},_0x2cfe09={'count':0x0,'rows':[]};var _0x5d6f26=_['map'](db[_0x311a('0x2e')]['rawAttributes'],function(_0x43fe4d){return{'name':_0x43fe4d[_0x311a('0x2f')],'type':_0x43fe4d['type'][_0x311a('0x30')]};});_0x199387[_0x311a('0x31')]=_[_0x311a('0x32')](_0x5d6f26,_0x311a('0x2b'));_0x199387['query']=_[_0x311a('0x33')](_0x491a57[_0x311a('0x34')]);_0x199387['filters']=_[_0x311a('0x35')](_0x199387['model'],_0x199387[_0x311a('0x34')]);_0x3263c2[_0x311a('0x36')]=_[_0x311a('0x35')](_0x199387[_0x311a('0x31')],qs[_0x311a('0x37')](_0x491a57[_0x311a('0x34')]['fields']));_0x3263c2[_0x311a('0x36')]=_0x3263c2['attributes'][_0x311a('0x38')]?_0x3263c2[_0x311a('0x36')]:_0x199387['model'];if(!_0x491a57[_0x311a('0x34')][_0x311a('0x39')]('nolimit')){_0x3263c2[_0x311a('0x1f')]=qs[_0x311a('0x1f')](_0x491a57[_0x311a('0x34')]['limit']);_0x3263c2[_0x311a('0x1e')]=qs[_0x311a('0x1e')](_0x491a57[_0x311a('0x34')][_0x311a('0x1e')]);}_0x3263c2[_0x311a('0x3a')]=qs[_0x311a('0x3b')](_0x491a57[_0x311a('0x34')][_0x311a('0x3b')]);_0x3263c2[_0x311a('0x3c')]=qs[_0x311a('0x3d')](_['pick'](_0x491a57[_0x311a('0x34')],_0x199387[_0x311a('0x3d')]),_0x5d6f26);if(_0x491a57['query'][_0x311a('0x3e')]){_0x3263c2['where']=_['merge'](_0x3263c2[_0x311a('0x3c')],{'$or':_[_0x311a('0x32')](_0x5d6f26,function(_0x4aefb4){if(_0x4aefb4[_0x311a('0x3f')]!=='VIRTUAL'){var _0x30a8ed={};_0x30a8ed[_0x4aefb4[_0x311a('0x2b')]]={'$like':'%'+_0x491a57['query'][_0x311a('0x3e')]+'%'};return _0x30a8ed;}})});}_0x3263c2=_[_0x311a('0x40')]({},_0x3263c2,_0x491a57[_0x311a('0x41')]);var _0xf010cd={'where':_0x3263c2[_0x311a('0x3c')]};return db[_0x311a('0x2e')]['count'](_0xf010cd)['then'](function(_0x10bd53){_0x2cfe09[_0x311a('0x21')]=_0x10bd53;if(_0x491a57[_0x311a('0x34')][_0x311a('0x42')]){_0x3263c2['include']=[{'all':!![]}];}return db['OpenchannelApplication']['findAll'](_0x3263c2);})[_0x311a('0x26')](function(_0x593f04){_0x2cfe09[_0x311a('0x43')]=_0x593f04;return _0x2cfe09;})[_0x311a('0x26')](respondWithFilteredResult(_0x22d18b,_0x3263c2))[_0x311a('0x44')](handleError(_0x22d18b,null));};exports[_0x311a('0x45')]=function(_0x605786,_0x20831a){var _0x28e4b6={'raw':!![],'where':{'id':_0x605786[_0x311a('0x46')]['id']}},_0x23701f={};_0x23701f[_0x311a('0x31')]=_[_0x311a('0x33')](db['OpenchannelApplication'][_0x311a('0x47')]);_0x23701f[_0x311a('0x34')]=_[_0x311a('0x33')](_0x605786[_0x311a('0x34')]);_0x23701f[_0x311a('0x3d')]=_[_0x311a('0x35')](_0x23701f[_0x311a('0x31')],_0x23701f[_0x311a('0x34')]);_0x28e4b6[_0x311a('0x36')]=_[_0x311a('0x35')](_0x23701f[_0x311a('0x31')],qs[_0x311a('0x37')](_0x605786['query'][_0x311a('0x37')]));_0x28e4b6['attributes']=_0x28e4b6[_0x311a('0x36')][_0x311a('0x38')]?_0x28e4b6[_0x311a('0x36')]:_0x23701f[_0x311a('0x31')];if(_0x605786[_0x311a('0x34')][_0x311a('0x42')]){_0x28e4b6[_0x311a('0x48')]=[{'all':!![]}];}_0x28e4b6=_[_0x311a('0x40')]({},_0x28e4b6,_0x605786[_0x311a('0x41')]);return db[_0x311a('0x2e')]['find'](_0x28e4b6)['then'](handleEntityNotFound(_0x20831a,null))[_0x311a('0x26')](respondWithResult(_0x20831a,null))[_0x311a('0x44')](handleError(_0x20831a,null));};exports[_0x311a('0x49')]=function(_0x256dd9,_0x1959d1){return db[_0x311a('0x2e')][_0x311a('0x49')](_0x256dd9['body'],{})[_0x311a('0x26')](respondWithResult(_0x1959d1,0xc9))[_0x311a('0x44')](handleError(_0x1959d1,null));};exports['update']=function(_0x2f7a0c,_0x2d0822){if(_0x2f7a0c[_0x311a('0x4a')]['id']){delete _0x2f7a0c[_0x311a('0x4a')]['id'];}return db[_0x311a('0x2e')][_0x311a('0x4b')]({'where':{'id':_0x2f7a0c[_0x311a('0x46')]['id']}})['then'](handleEntityNotFound(_0x2d0822,null))[_0x311a('0x26')](saveUpdates(_0x2f7a0c[_0x311a('0x4a')],null))[_0x311a('0x26')](respondWithResult(_0x2d0822,null))[_0x311a('0x44')](handleError(_0x2d0822,null));};exports[_0x311a('0x27')]=function(_0x397a3b,_0x298d17){return db['OpenchannelApplication'][_0x311a('0x4b')]({'where':{'id':_0x397a3b[_0x311a('0x46')]['id']}})[_0x311a('0x26')](handleEntityNotFound(_0x298d17,null))['then'](removeEntity(_0x298d17,null))['catch'](handleError(_0x298d17,null));};
\ No newline at end of file
+var _0x4d19=['moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','sendStatus','end','status','undefined','limit','count','set','Content-Range','apply','save','update','destroy','then','name','send','map','OpenchannelApplication','rawAttributes','type','key','query','keys','model','intersection','fields','attributes','hasOwnProperty','offset','sort','filters','pick','filter','where','VIRTUAL','merge','options','findAll','params','length','includeAll','include','body','find','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x148250,_0x2b8bcb){var _0x5c8521=function(_0x21044e){while(--_0x21044e){_0x148250['push'](_0x148250['shift']());}};_0x5c8521(++_0x2b8bcb);}(_0x4d19,0x113));var _0x94d1=function(_0xfb9e43,_0x4aaeea){_0xfb9e43=_0xfb9e43-0x0;var _0x21a7d2=_0x4d19[_0xfb9e43];return _0x21a7d2;};'use strict';var emlformat=require(_0x94d1('0x0'));var rimraf=require(_0x94d1('0x1'));var zipdir=require(_0x94d1('0x2'));var jsonpatch=require(_0x94d1('0x3'));var rp=require(_0x94d1('0x4'));var moment=require(_0x94d1('0x5'));var BPromise=require(_0x94d1('0x6'));var Mustache=require(_0x94d1('0x7'));var util=require(_0x94d1('0x8'));var path=require(_0x94d1('0x9'));var sox=require(_0x94d1('0xa'));var csv=require(_0x94d1('0xb'));var ejs=require(_0x94d1('0xc'));var fs=require('fs');var fs_extra=require(_0x94d1('0xd'));var _=require(_0x94d1('0xe'));var squel=require(_0x94d1('0xf'));var crypto=require('crypto');var jsforce=require(_0x94d1('0x10'));var deskjs=require(_0x94d1('0x11'));var toCsv=require('to-csv');var querystring=require(_0x94d1('0x12'));var Papa=require(_0x94d1('0x13'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x94d1('0x14'));var as=require(_0x94d1('0x15'));var hardwareService=require(_0x94d1('0x16'));var logger=require(_0x94d1('0x17'))(_0x94d1('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x94d1('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x11203d,_0x3e402d){_0x3e402d=_0x3e402d||0xcc;return function(_0x46d43f){if(_0x46d43f){return _0x11203d[_0x94d1('0x1a')](_0x3e402d);}return _0x11203d['status'](_0x3e402d)[_0x94d1('0x1b')]();};}function respondWithResult(_0x4d8594,_0x254b4c){_0x254b4c=_0x254b4c||0xc8;return function(_0x492d97){if(_0x492d97){return _0x4d8594[_0x94d1('0x1c')](_0x254b4c)['json'](_0x492d97);}};}function respondWithFilteredResult(_0x3fd706,_0x7313ae){return function(_0x49251a){if(_0x49251a){var _0x5946b=typeof _0x7313ae['offset']===_0x94d1('0x1d')&&typeof _0x7313ae[_0x94d1('0x1e')]==='undefined';var _0x1a4199=_0x49251a[_0x94d1('0x1f')];var _0x56e806=_0x5946b?0x0:_0x7313ae['offset'];var _0xfa99fa=_0x5946b?_0x49251a[_0x94d1('0x1f')]:_0x7313ae['offset']+_0x7313ae['limit'];var _0xca50ae;if(_0xfa99fa>=_0x1a4199){_0xfa99fa=_0x1a4199;_0xca50ae=0xc8;}else{_0xca50ae=0xce;}_0x3fd706[_0x94d1('0x1c')](_0xca50ae);return _0x3fd706[_0x94d1('0x20')](_0x94d1('0x21'),_0x56e806+'-'+_0xfa99fa+'/'+_0x1a4199)['json'](_0x49251a);}return null;};}function patchUpdates(_0x478c15){return function(_0x57c3b7){try{jsonpatch[_0x94d1('0x22')](_0x57c3b7,_0x478c15,!![]);}catch(_0x3bdd5e){return BPromise['reject'](_0x3bdd5e);}return _0x57c3b7[_0x94d1('0x23')]();};}function saveUpdates(_0x21805b,_0x3537ab){return function(_0x2ef2b1){if(_0x2ef2b1){return _0x2ef2b1[_0x94d1('0x24')](_0x21805b)['then'](function(_0x57e9a2){return _0x57e9a2;});}return null;};}function removeEntity(_0x4689fa,_0x5dbe49){return function(_0x4c9120){if(_0x4c9120){return _0x4c9120[_0x94d1('0x25')]()[_0x94d1('0x26')](function(){_0x4689fa['status'](0xcc)[_0x94d1('0x1b')]();});}};}function handleEntityNotFound(_0xedc81a,_0x1af663){return function(_0x356985){if(!_0x356985){_0xedc81a['sendStatus'](0x194);}return _0x356985;};}function handleError(_0x910a9f,_0x2dd778){_0x2dd778=_0x2dd778||0x1f4;return function(_0x26e264){logger['error'](_0x26e264['stack']);if(_0x26e264['name']){delete _0x26e264[_0x94d1('0x27')];}_0x910a9f['status'](_0x2dd778)[_0x94d1('0x28')](_0x26e264);};}exports['index']=function(_0x2e2d3a,_0x1f7427){var _0xce6484={},_0x27fd48={},_0x248867={'count':0x0,'rows':[]};var _0x319cbe=_[_0x94d1('0x29')](db[_0x94d1('0x2a')][_0x94d1('0x2b')],function(_0xf58bd7){return{'name':_0xf58bd7['fieldName'],'type':_0xf58bd7[_0x94d1('0x2c')][_0x94d1('0x2d')]};});_0x27fd48['model']=_[_0x94d1('0x29')](_0x319cbe,'name');_0x27fd48[_0x94d1('0x2e')]=_[_0x94d1('0x2f')](_0x2e2d3a[_0x94d1('0x2e')]);_0x27fd48['filters']=_['intersection'](_0x27fd48[_0x94d1('0x30')],_0x27fd48['query']);_0xce6484['attributes']=_[_0x94d1('0x31')](_0x27fd48[_0x94d1('0x30')],qs['fields'](_0x2e2d3a[_0x94d1('0x2e')][_0x94d1('0x32')]));_0xce6484['attributes']=_0xce6484['attributes']['length']?_0xce6484[_0x94d1('0x33')]:_0x27fd48[_0x94d1('0x30')];if(!_0x2e2d3a[_0x94d1('0x2e')][_0x94d1('0x34')]('nolimit')){_0xce6484[_0x94d1('0x1e')]=qs['limit'](_0x2e2d3a[_0x94d1('0x2e')][_0x94d1('0x1e')]);_0xce6484[_0x94d1('0x35')]=qs[_0x94d1('0x35')](_0x2e2d3a['query']['offset']);}_0xce6484['order']=qs[_0x94d1('0x36')](_0x2e2d3a[_0x94d1('0x2e')][_0x94d1('0x36')]);_0xce6484['where']=qs[_0x94d1('0x37')](_[_0x94d1('0x38')](_0x2e2d3a['query'],_0x27fd48['filters']),_0x319cbe);if(_0x2e2d3a[_0x94d1('0x2e')][_0x94d1('0x39')]){_0xce6484[_0x94d1('0x3a')]=_['merge'](_0xce6484[_0x94d1('0x3a')],{'$or':_[_0x94d1('0x29')](_0x319cbe,function(_0x2c4425){if(_0x2c4425[_0x94d1('0x2c')]!==_0x94d1('0x3b')){var _0x457fb9={};_0x457fb9[_0x2c4425[_0x94d1('0x27')]]={'$like':'%'+_0x2e2d3a[_0x94d1('0x2e')]['filter']+'%'};return _0x457fb9;}})});}_0xce6484=_[_0x94d1('0x3c')]({},_0xce6484,_0x2e2d3a[_0x94d1('0x3d')]);var _0x8efe61={'where':_0xce6484[_0x94d1('0x3a')]};return db['OpenchannelApplication'][_0x94d1('0x1f')](_0x8efe61)[_0x94d1('0x26')](function(_0x17f776){_0x248867[_0x94d1('0x1f')]=_0x17f776;if(_0x2e2d3a[_0x94d1('0x2e')]['includeAll']){_0xce6484['include']=[{'all':!![]}];}return db[_0x94d1('0x2a')][_0x94d1('0x3e')](_0xce6484);})[_0x94d1('0x26')](function(_0x34bf73){_0x248867['rows']=_0x34bf73;return _0x248867;})['then'](respondWithFilteredResult(_0x1f7427,_0xce6484))['catch'](handleError(_0x1f7427,null));};exports['show']=function(_0x1f07f6,_0x33e1fa){var _0x3d74e6={'raw':!![],'where':{'id':_0x1f07f6[_0x94d1('0x3f')]['id']}},_0x3fe7df={};_0x3fe7df[_0x94d1('0x30')]=_[_0x94d1('0x2f')](db[_0x94d1('0x2a')][_0x94d1('0x2b')]);_0x3fe7df['query']=_['keys'](_0x1f07f6[_0x94d1('0x2e')]);_0x3fe7df[_0x94d1('0x37')]=_[_0x94d1('0x31')](_0x3fe7df[_0x94d1('0x30')],_0x3fe7df[_0x94d1('0x2e')]);_0x3d74e6[_0x94d1('0x33')]=_[_0x94d1('0x31')](_0x3fe7df[_0x94d1('0x30')],qs[_0x94d1('0x32')](_0x1f07f6['query'][_0x94d1('0x32')]));_0x3d74e6['attributes']=_0x3d74e6[_0x94d1('0x33')][_0x94d1('0x40')]?_0x3d74e6[_0x94d1('0x33')]:_0x3fe7df[_0x94d1('0x30')];if(_0x1f07f6[_0x94d1('0x2e')][_0x94d1('0x41')]){_0x3d74e6[_0x94d1('0x42')]=[{'all':!![]}];}_0x3d74e6=_[_0x94d1('0x3c')]({},_0x3d74e6,_0x1f07f6[_0x94d1('0x3d')]);return db[_0x94d1('0x2a')]['find'](_0x3d74e6)['then'](handleEntityNotFound(_0x33e1fa,null))['then'](respondWithResult(_0x33e1fa,null))['catch'](handleError(_0x33e1fa,null));};exports['create']=function(_0x5e9fc4,_0x4fd4e4){return db['OpenchannelApplication']['create'](_0x5e9fc4[_0x94d1('0x43')],{})[_0x94d1('0x26')](respondWithResult(_0x4fd4e4,0xc9))['catch'](handleError(_0x4fd4e4,null));};exports['update']=function(_0x33baee,_0x2a79d9){if(_0x33baee[_0x94d1('0x43')]['id']){delete _0x33baee[_0x94d1('0x43')]['id'];}return db[_0x94d1('0x2a')][_0x94d1('0x44')]({'where':{'id':_0x33baee[_0x94d1('0x3f')]['id']}})[_0x94d1('0x26')](handleEntityNotFound(_0x2a79d9,null))[_0x94d1('0x26')](saveUpdates(_0x33baee[_0x94d1('0x43')],null))[_0x94d1('0x26')](respondWithResult(_0x2a79d9,null))[_0x94d1('0x45')](handleError(_0x2a79d9,null));};exports[_0x94d1('0x25')]=function(_0x2d947d,_0x50c6b1){return db[_0x94d1('0x2a')]['find']({'where':{'id':_0x2d947d[_0x94d1('0x3f')]['id']}})[_0x94d1('0x26')](handleEntityNotFound(_0x50c6b1,null))[_0x94d1('0x26')](removeEntity(_0x50c6b1,null))[_0x94d1('0x45')](handleError(_0x50c6b1,null));};
\ No newline at end of file
index 60518ac..d6b76c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43b4=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','define','OpenchannelApplication','openchannel_applications','utf8mb4'];(function(_0xaf025d,_0x586d7a){var _0x1c77cb=function(_0x560b3a){while(--_0x560b3a){_0xaf025d['push'](_0xaf025d['shift']());}};_0x1c77cb(++_0x586d7a);}(_0x43b4,0x1ee));var _0x443b=function(_0x371a5b,_0x5830d7){_0x371a5b=_0x371a5b-0x0;var _0x2a567a=_0x43b4[_0x371a5b];return _0x2a567a;};'use strict';var _=require(_0x443b('0x0'));var util=require(_0x443b('0x1'));var logger=require(_0x443b('0x2'))(_0x443b('0x3'));var moment=require(_0x443b('0x4'));var BPromise=require(_0x443b('0x5'));var rp=require(_0x443b('0x6'));var fs=require('fs');var path=require(_0x443b('0x7'));var rimraf=require(_0x443b('0x8'));var config=require('../../config/environment');var attributes=require('./openchannelApplication.attributes');module['exports']=function(_0x929fe8,_0x41c365){return _0x929fe8[_0x443b('0x9')](_0x443b('0xa'),attributes,{'tableName':_0x443b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x443b('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x5d31=['openchannel_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./openchannelApplication.attributes','exports','define'];(function(_0xeb58fb,_0x2d5af6){var _0x3441d3=function(_0x2a3ef5){while(--_0x2a3ef5){_0xeb58fb['push'](_0xeb58fb['shift']());}};_0x3441d3(++_0x2d5af6);}(_0x5d31,0xe3));var _0x15d3=function(_0x3358ba,_0x24c5fc){_0x3358ba=_0x3358ba-0x0;var _0x296e73=_0x5d31[_0x3358ba];return _0x296e73;};'use strict';var _=require(_0x15d3('0x0'));var util=require(_0x15d3('0x1'));var logger=require('../../config/logger')(_0x15d3('0x2'));var moment=require(_0x15d3('0x3'));var BPromise=require(_0x15d3('0x4'));var rp=require(_0x15d3('0x5'));var fs=require('fs');var path=require(_0x15d3('0x6'));var rimraf=require(_0x15d3('0x7'));var config=require('../../config/environment');var attributes=require(_0x15d3('0x8'));module[_0x15d3('0x9')]=function(_0x2886b0,_0x23cf7e){return _0x2886b0[_0x15d3('0xa')]('OpenchannelApplication',attributes,{'tableName':_0x15d3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x15d3('0xc'),'collate':_0x15d3('0xd')});};
\ No newline at end of file
index 778ccd6..02f488a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf49b=['options','raw','where','attributes','limit','util','bluebird','randomstring','ioredis','../../mysqldb','rpc','client','http','request','then','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','update','body'];(function(_0x19d270,_0x121214){var _0x1db1da=function(_0x560e7c){while(--_0x560e7c){_0x19d270['push'](_0x19d270['shift']());}};_0x1db1da(++_0x121214);}(_0xf49b,0x10a));var _0xbf49=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xf49b[_0x2dafbe];return _0x58a45a;};'use strict';var _=require('lodash');var util=require(_0xbf49('0x0'));var moment=require('moment');var BPromise=require(_0xbf49('0x1'));var rs=require(_0xbf49('0x2'));var fs=require('fs');var Redis=require(_0xbf49('0x3'));var db=require(_0xbf49('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xbf49('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbf49('0x6')][_0xbf49('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2d2283,_0xf5644a,_0x3d5a67){return new BPromise(function(_0x2791d4,_0x172ffd){return client[_0xbf49('0x8')](_0x2d2283,_0x3d5a67)[_0xbf49('0x9')](function(_0x2a20f2){logger[_0xbf49('0xa')](_0xbf49('0xb'),_0xf5644a,_0xbf49('0xc'));logger[_0xbf49('0xd')](_0xbf49('0xe'),_0xf5644a,'request\x20sent',JSON[_0xbf49('0xf')](_0x2a20f2));if(_0x2a20f2[_0xbf49('0x10')]){if(_0x2a20f2[_0xbf49('0x10')]['code']===0x1f4){logger[_0xbf49('0x10')](_0xbf49('0xb'),_0xf5644a,_0x2a20f2[_0xbf49('0x10')]['message']);return _0x172ffd(_0x2a20f2[_0xbf49('0x10')][_0xbf49('0x11')]);}logger['error'](_0xbf49('0xb'),_0xf5644a,_0x2a20f2[_0xbf49('0x10')]['message']);return _0x2791d4(_0x2a20f2['error'][_0xbf49('0x11')]);}else{logger[_0xbf49('0xa')](_0xbf49('0xb'),_0xf5644a,_0xbf49('0xc'));_0x2791d4(_0x2a20f2[_0xbf49('0x12')][_0xbf49('0x11')]);}})[_0xbf49('0x13')](function(_0x40d027){logger['error'](_0xbf49('0xb'),_0xf5644a,_0x40d027);_0x172ffd(_0x40d027);});});}exports[_0xbf49('0x14')]=function(_0x1e5aaa){var _0x11eed0=this;return new Promise(function(_0x4f3be6,_0x345a8a){return db[_0xbf49('0x15')][_0xbf49('0x16')](_0x1e5aaa[_0xbf49('0x17')],{'raw':_0x1e5aaa[_0xbf49('0x18')]?_0x1e5aaa[_0xbf49('0x18')][_0xbf49('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1e5aaa[_0xbf49('0x18')]?_0x1e5aaa[_0xbf49('0x18')][_0xbf49('0x1a')]||null:null,'attributes':_0x1e5aaa[_0xbf49('0x18')]?_0x1e5aaa['options'][_0xbf49('0x1b')]||null:null,'limit':_0x1e5aaa[_0xbf49('0x18')]?_0x1e5aaa['options'][_0xbf49('0x1c')]||null:null})[_0xbf49('0x9')](function(_0x3e2a14){logger[_0xbf49('0xa')]('UpdateOpenchannelApplication',_0x1e5aaa);logger['debug'](_0xbf49('0x14'),_0x1e5aaa,JSON[_0xbf49('0xf')](_0x3e2a14));_0x4f3be6(_0x3e2a14);})[_0xbf49('0x13')](function(_0x471f91){logger[_0xbf49('0x10')](_0xbf49('0x14'),_0x471f91['message'],_0x1e5aaa);_0x345a8a(_0x11eed0[_0xbf49('0x10')](0x1f4,_0x471f91[_0xbf49('0x11')]));});});};
\ No newline at end of file
+var _0x872b=['limit','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','request\x20sent','debug','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error','message','OpenchannelApplication,\x20%s,\x20%s','result','catch','UpdateOpenchannelApplication','body','options','where','attributes'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0x872b,0x6d));var _0xb872=function(_0xa86206,_0x27de1c){_0xa86206=_0xa86206-0x0;var _0x11f137=_0x872b[_0xa86206];return _0x11f137;};'use strict';var _=require(_0xb872('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xb872('0x1'));var rs=require(_0xb872('0x2'));var fs=require('fs');var Redis=require(_0xb872('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xb872('0x4'));var logger=require(_0xb872('0x5'))(_0xb872('0x6'));var config=require(_0xb872('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb872('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2cca7f,_0x367798,_0x433d73){return new BPromise(function(_0x3df3d1,_0x5092ac){return client[_0xb872('0x9')](_0x2cca7f,_0x433d73)[_0xb872('0xa')](function(_0xcdaf75){logger[_0xb872('0xb')]('OpenchannelApplication,\x20%s,\x20%s',_0x367798,_0xb872('0xc'));logger[_0xb872('0xd')](_0xb872('0xe'),_0x367798,_0xb872('0xc'),JSON[_0xb872('0xf')](_0xcdaf75));if(_0xcdaf75[_0xb872('0x10')]){if(_0xcdaf75[_0xb872('0x10')]['code']===0x1f4){logger[_0xb872('0x10')]('OpenchannelApplication,\x20%s,\x20%s',_0x367798,_0xcdaf75[_0xb872('0x10')][_0xb872('0x11')]);return _0x5092ac(_0xcdaf75[_0xb872('0x10')][_0xb872('0x11')]);}logger[_0xb872('0x10')](_0xb872('0x12'),_0x367798,_0xcdaf75[_0xb872('0x10')]['message']);return _0x3df3d1(_0xcdaf75[_0xb872('0x10')][_0xb872('0x11')]);}else{logger[_0xb872('0xb')](_0xb872('0x12'),_0x367798,_0xb872('0xc'));_0x3df3d1(_0xcdaf75[_0xb872('0x13')][_0xb872('0x11')]);}})[_0xb872('0x14')](function(_0x36b77d){logger[_0xb872('0x10')](_0xb872('0x12'),_0x367798,_0x36b77d);_0x5092ac(_0x36b77d);});});}exports[_0xb872('0x15')]=function(_0x35dbb8){var _0x103fc8=this;return new Promise(function(_0x4fe7a5,_0x5845f3){return db['OpenchannelApplication']['update'](_0x35dbb8[_0xb872('0x16')],{'raw':_0x35dbb8['options']?_0x35dbb8[_0xb872('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x35dbb8[_0xb872('0x17')]?_0x35dbb8[_0xb872('0x17')][_0xb872('0x18')]||null:null,'attributes':_0x35dbb8[_0xb872('0x17')]?_0x35dbb8['options'][_0xb872('0x19')]||null:null,'limit':_0x35dbb8[_0xb872('0x17')]?_0x35dbb8[_0xb872('0x17')][_0xb872('0x1a')]||null:null})[_0xb872('0xa')](function(_0x1b735f){logger[_0xb872('0xb')](_0xb872('0x15'),_0x35dbb8);logger[_0xb872('0xd')](_0xb872('0x15'),_0x35dbb8,JSON[_0xb872('0xf')](_0x1b735f));_0x4fe7a5(_0x1b735f);})[_0xb872('0x14')](function(_0x282091){logger[_0xb872('0x10')](_0xb872('0x15'),_0x282091[_0xb872('0x11')],_0x35dbb8);_0x5845f3(_0x103fc8['error'](0x1f4,_0x282091['message']));});});};
\ No newline at end of file
index b755e75..5dbe24d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce67=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','isAuthenticated','get','/describe','describe','/:id','show','/:id/messages','getMessages','download','post','create','addMessage','/:id/tags','openchannelinteraction:addtags','addTags','put','tracked','openchannel','openchannelinteraction:destroy','destroy','removeTags','exports'];(function(_0x332740,_0x267c85){var _0x2681ed=function(_0x31c35c){while(--_0x31c35c){_0x332740['push'](_0x332740['shift']());}};_0x2681ed(++_0x267c85);}(_0xce67,0xd9));var _0x7ce6=function(_0x5159a8,_0x299e8d){_0x5159a8=_0x5159a8-0x0;var _0x2eb991=_0xce67[_0x5159a8];return _0x2eb991;};'use strict';var multer=require('multer');var util=require(_0x7ce6('0x0'));var path=require(_0x7ce6('0x1'));var timeout=require(_0x7ce6('0x2'));var express=require('express');var router=express[_0x7ce6('0x3')]();var fs_extra=require(_0x7ce6('0x4'));var auth=require(_0x7ce6('0x5'));var interaction=require(_0x7ce6('0x6'));var config=require(_0x7ce6('0x7'));var controller=require(_0x7ce6('0x8'));router['get']('/',auth[_0x7ce6('0x9')](),controller['index']);router[_0x7ce6('0xa')](_0x7ce6('0xb'),auth['isAuthenticated'](),controller[_0x7ce6('0xc')]);router[_0x7ce6('0xa')](_0x7ce6('0xd'),auth[_0x7ce6('0x9')](),controller[_0x7ce6('0xe')]);router['get'](_0x7ce6('0xf'),auth[_0x7ce6('0x9')](),controller[_0x7ce6('0x10')]);router['get']('/:id/download',auth[_0x7ce6('0x9')](),controller[_0x7ce6('0x11')]);router[_0x7ce6('0x12')]('/',auth['isAuthenticated'](),controller[_0x7ce6('0x13')]);router[_0x7ce6('0x12')](_0x7ce6('0xf'),auth[_0x7ce6('0x9')](),controller[_0x7ce6('0x14')]);router[_0x7ce6('0x12')](_0x7ce6('0x15'),auth[_0x7ce6('0x9')](),interaction['tracked']('openchannel',_0x7ce6('0x16')),controller[_0x7ce6('0x17')]);router[_0x7ce6('0x18')](_0x7ce6('0xd'),auth['isAuthenticated'](),interaction[_0x7ce6('0x19')](_0x7ce6('0x1a'),'openchannelinteraction:update'),controller['update']);router['delete'](_0x7ce6('0xd'),auth[_0x7ce6('0x9')](),interaction['tracked'](_0x7ce6('0x1a'),_0x7ce6('0x1b')),controller[_0x7ce6('0x1c')]);router['delete']('/:id/tags',auth[_0x7ce6('0x9')](),controller[_0x7ce6('0x1d')]);module[_0x7ce6('0x1e')]=router;
\ No newline at end of file
+var _0xc0bf=['openchannel','openchannelinteraction:addtags','addTags','put','/:id','openchannelinteraction:update','delete','tracked','openchannelinteraction:destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','get','index','/describe','isAuthenticated','describe','show','getMessages','/:id/download','download','post','/:id/messages','addMessage','/:id/tags'];(function(_0x561dda,_0x21eef5){var _0x10cb53=function(_0x18a8f6){while(--_0x18a8f6){_0x561dda['push'](_0x561dda['shift']());}};_0x10cb53(++_0x21eef5);}(_0xc0bf,0x154));var _0xfc0b=function(_0x5c2658,_0x351f8a){_0x5c2658=_0x5c2658-0x0;var _0x41c455=_0xc0bf[_0x5c2658];return _0x41c455;};'use strict';var multer=require(_0xfc0b('0x0'));var util=require('util');var path=require(_0xfc0b('0x1'));var timeout=require(_0xfc0b('0x2'));var express=require(_0xfc0b('0x3'));var router=express[_0xfc0b('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xfc0b('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xfc0b('0x6'));var controller=require('./openchannelInteraction.controller');router[_0xfc0b('0x7')]('/',auth['isAuthenticated'](),controller[_0xfc0b('0x8')]);router['get'](_0xfc0b('0x9'),auth[_0xfc0b('0xa')](),controller[_0xfc0b('0xb')]);router[_0xfc0b('0x7')]('/:id',auth['isAuthenticated'](),controller[_0xfc0b('0xc')]);router[_0xfc0b('0x7')]('/:id/messages',auth[_0xfc0b('0xa')](),controller[_0xfc0b('0xd')]);router[_0xfc0b('0x7')](_0xfc0b('0xe'),auth[_0xfc0b('0xa')](),controller[_0xfc0b('0xf')]);router[_0xfc0b('0x10')]('/',auth[_0xfc0b('0xa')](),controller['create']);router[_0xfc0b('0x10')](_0xfc0b('0x11'),auth['isAuthenticated'](),controller[_0xfc0b('0x12')]);router[_0xfc0b('0x10')](_0xfc0b('0x13'),auth[_0xfc0b('0xa')](),interaction['tracked'](_0xfc0b('0x14'),_0xfc0b('0x15')),controller[_0xfc0b('0x16')]);router[_0xfc0b('0x17')](_0xfc0b('0x18'),auth[_0xfc0b('0xa')](),interaction['tracked'](_0xfc0b('0x14'),_0xfc0b('0x19')),controller['update']);router[_0xfc0b('0x1a')](_0xfc0b('0x18'),auth[_0xfc0b('0xa')](),interaction[_0xfc0b('0x1b')](_0xfc0b('0x14'),_0xfc0b('0x1c')),controller['destroy']);router['delete'](_0xfc0b('0x13'),auth[_0xfc0b('0xa')](),controller['removeTags']);module[_0xfc0b('0x1d')]=router;
\ No newline at end of file
index 1ce2ba7..1d42070 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4561=['STRING','ENUM','out','BOOLEAN','DATE'];(function(_0x3a9468,_0x2b6266){var _0x1d2345=function(_0x499728){while(--_0x499728){_0x3a9468['push'](_0x3a9468['shift']());}};_0x1d2345(++_0x2b6266);}(_0x4561,0x1a3));var _0x1456=function(_0x5d51d4,_0x2ea63c){_0x5d51d4=_0x5d51d4-0x0;var _0x118cf5=_0x4561[_0x5d51d4];return _0x118cf5;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x1456('0x0')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x1456('0x1')]},'thirdDisposition':{'type':Sequelize[_0x1456('0x1')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x1456('0x0')]},'threadId':{'type':Sequelize[_0x1456('0x1')]},'externalUrl':{'type':Sequelize[_0x1456('0x1')]},'lastMsgAt':{'type':Sequelize[_0x1456('0x0')]},'firstMsgDirection':{'type':Sequelize[_0x1456('0x2')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0x1456('0x2')]('in',_0x1456('0x3')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x1456('0x1')]},'autoreplyExecuted':{'type':Sequelize[_0x1456('0x4')],'defaultValue':![]},'queueId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xc3b7=['DATE','STRING','ENUM','out','INTEGER','exports','BOOLEAN'];(function(_0x38ff1e,_0x3b9385){var _0x3755d4=function(_0x6e6692){while(--_0x6e6692){_0x38ff1e['push'](_0x38ff1e['shift']());}};_0x3755d4(++_0x3b9385);}(_0xc3b7,0xb4));var _0x7c3b=function(_0x160fa9,_0x36b9c5){_0x160fa9=_0x160fa9-0x0;var _0x3bc717=_0xc3b7[_0x160fa9];return _0x3bc717;};'use strict';var Sequelize=require('sequelize');module[_0x7c3b('0x0')]={'closed':{'type':Sequelize[_0x7c3b('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x7c3b('0x2')]},'disposition':{'type':Sequelize[_0x7c3b('0x3')]},'secondDisposition':{'type':Sequelize[_0x7c3b('0x3')]},'thirdDisposition':{'type':Sequelize[_0x7c3b('0x3')]},'note':{'type':Sequelize[_0x7c3b('0x3')]},'read1stAt':{'type':Sequelize[_0x7c3b('0x2')]},'threadId':{'type':Sequelize[_0x7c3b('0x3')]},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x7c3b('0x4')]('in',_0x7c3b('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0x7c3b('0x4')]('in',_0x7c3b('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize[_0x7c3b('0x1')],'defaultValue':![]},'queueId':{'type':Sequelize[_0x7c3b('0x6')]}};
\ No newline at end of file
index 58be597..906eb3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68e4=['join','root','files','server','attachments','transcript-%d-%s.zip','User','fullname','push','CmContact','Contact','lastName','Attachment','Messages','createdAt','direction','secret','read','OpenchannelAccount','Account','get','mkdirSync','Owner','N.A.','format','toString','closed','disposition','threadId','Public','existsSync','createReadStream','pipe','basename','out','value','renderFile','views','downloadInteraction.ejs','createPdfFromHTML','download','Unable\x20to\x20delete\x20zip\x20file','unlinkSync','zip-dir','moment','util','path','ejs','lodash','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./openchannelInteraction.socket','register','sendStatus','end','json','undefined','limit','count','offset','set','Content-Range','update','then','status','error','name','send','index','map','type','getOptions','user','catch','show','query','from','params','keys','OpenchannelInteraction','rawAttributes','intersection','fields','length','model','includeAll','include','merge','options','create','body','find','addMessage','OpenchannelMessage','ids','omit','filters','attributes','hasOwnProperty','nolimit','sort','pick','where','filter','split','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','setTags','spread','Tag','color','openchannelInteractionTags:save','removeTags','unix'];(function(_0x4b4a49,_0x5d166e){var _0x11f782=function(_0xae6660){while(--_0xae6660){_0x4b4a49['push'](_0x4b4a49['shift']());}};_0x11f782(++_0x5d166e);}(_0x68e4,0xa6));var _0x468e=function(_0x1a1431,_0x111b39){_0x1a1431=_0x1a1431-0x0;var _0x1f3e51=_0x68e4[_0x1a1431];return _0x1f3e51;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0x468e('0x0'));var moment=require(_0x468e('0x1'));var util=require(_0x468e('0x2'));var path=require(_0x468e('0x3'));var ejs=require(_0x468e('0x4'));var fs=require('fs');var _=require(_0x468e('0x5'));var Redis=require('ioredis');var interaction=require(_0x468e('0x6'));var qs=require(_0x468e('0x7'));var pdf=require(_0x468e('0x8'));var logger=require(_0x468e('0x9'))(_0x468e('0xa'));var config=require('../../config/environment');var db=require(_0x468e('0xb'))['db'];config['redis']=_[_0x468e('0xc')](config['redis'],{'host':_0x468e('0xd'),'port':0x18eb});var socket=require(_0x468e('0xe'))(new Redis(config[_0x468e('0xf')]));require(_0x468e('0x10'))[_0x468e('0x11')](socket);function respondWithStatusCode(_0x498e81,_0x41bf01){_0x41bf01=_0x41bf01||0xcc;return function(_0x2645c3){if(_0x2645c3){return _0x498e81[_0x468e('0x12')](_0x41bf01);}return _0x498e81['status'](_0x41bf01)[_0x468e('0x13')]();};}function respondWithResult(_0x487f15,_0x51a260){_0x51a260=_0x51a260||0xc8;return function(_0x2b97cd){if(_0x2b97cd){return _0x487f15['status'](_0x51a260)[_0x468e('0x14')](_0x2b97cd);}};}function respondWithFilteredResult(_0x1dee09,_0x1540a4){return function(_0x5392a9){if(_0x5392a9){var _0x250c01=typeof _0x1540a4['offset']===_0x468e('0x15')&&typeof _0x1540a4[_0x468e('0x16')]==='undefined';var _0x5b1f20=_0x5392a9[_0x468e('0x17')];var _0x30ee5c=_0x250c01?0x0:_0x1540a4[_0x468e('0x18')];var _0x146193=_0x250c01?_0x5392a9[_0x468e('0x17')]:_0x1540a4[_0x468e('0x18')]+_0x1540a4[_0x468e('0x16')];var _0x7eca4f;if(_0x146193>=_0x5b1f20){_0x146193=_0x5b1f20;_0x7eca4f=0xc8;}else{_0x7eca4f=0xce;}_0x1dee09['status'](_0x7eca4f);return _0x1dee09[_0x468e('0x19')](_0x468e('0x1a'),_0x30ee5c+'-'+_0x146193+'/'+_0x5b1f20)[_0x468e('0x14')](_0x5392a9);}return null;};}function saveUpdates(_0x17c000){return function(_0x4c97b7){if(_0x4c97b7){return _0x4c97b7[_0x468e('0x1b')](_0x17c000)[_0x468e('0x1c')](function(_0x1ba679){return _0x1ba679;});}return null;};}function removeEntity(_0x205ef6){return function(_0x9b5cbc){if(_0x9b5cbc){return _0x9b5cbc['destroy']()[_0x468e('0x1c')](function(){_0x205ef6[_0x468e('0x1d')](0xcc)[_0x468e('0x13')]();});}};}function handleEntityNotFound(_0x156e22){return function(_0x2c6143){if(!_0x2c6143){_0x156e22[_0x468e('0x12')](0x194);}return _0x2c6143;};}function handleError(_0x2aa144,_0x3948f4){_0x3948f4=_0x3948f4||0x1f4;return function(_0x44ac82){logger[_0x468e('0x1e')](_0x44ac82['stack']);if(_0x44ac82[_0x468e('0x1f')]){delete _0x44ac82['name'];}_0x2aa144['status'](_0x3948f4)[_0x468e('0x20')](_0x44ac82);};}exports[_0x468e('0x21')]=function(_0x168e7a,_0x2b6739){var _0x1e237e={};var _0x53e27a=_[_0x468e('0x22')](db['OpenchannelInteraction']['rawAttributes'],function(_0x591ef1){return{'name':_0x591ef1['fieldName'],'type':_0x591ef1[_0x468e('0x23')]['key']};});_0x1e237e=qs[_0x468e('0x24')](_0x53e27a,_0x168e7a);return interaction['findAll']('openchannel',_0x168e7a['query'],_0x168e7a[_0x468e('0x25')],_0x1e237e,_0x53e27a)[_0x468e('0x1c')](respondWithFilteredResult(_0x2b6739,_0x1e237e))[_0x468e('0x26')](handleError(_0x2b6739,null));};exports[_0x468e('0x27')]=function(_0x3c90f9,_0xce2646){var _0x26de4b={};if(_0x3c90f9[_0x468e('0x28')][_0x468e('0x23')]&&_0x3c90f9[_0x468e('0x28')][_0x468e('0x23')]===_0x468e('0x29')){_0x26de4b[_0x468e('0x29')]=_0x3c90f9['params']['id'];}else{_0x26de4b['id']=_0x3c90f9[_0x468e('0x2a')]['id'];}var _0x220230={'raw':![],'where':_0x26de4b},_0x465b86={};_0x465b86['model']=_[_0x468e('0x2b')](db[_0x468e('0x2c')][_0x468e('0x2d')]);_0x465b86[_0x468e('0x28')]=_['keys'](_0x3c90f9['query']);_0x465b86['filters']=_[_0x468e('0x2e')](_0x465b86['model'],_0x465b86['query']);_0x220230['attributes']=_[_0x468e('0x2e')](_0x465b86['model'],qs[_0x468e('0x2f')](_0x3c90f9[_0x468e('0x28')][_0x468e('0x2f')]));_0x220230['attributes']=_0x220230['attributes'][_0x468e('0x30')]?_0x220230['attributes']:_0x465b86[_0x468e('0x31')];if(_0x3c90f9[_0x468e('0x28')][_0x468e('0x32')]){_0x220230[_0x468e('0x33')]=[{'all':!![]}];}_0x220230=_[_0x468e('0x34')]({},_0x220230,_0x3c90f9[_0x468e('0x35')]);return db[_0x468e('0x2c')]['find'](_0x220230)[_0x468e('0x1c')](handleEntityNotFound(_0xce2646,null))[_0x468e('0x1c')](respondWithResult(_0xce2646,null))['catch'](handleError(_0xce2646,null));};exports['create']=function(_0x2674e0,_0x143084){return db[_0x468e('0x2c')][_0x468e('0x36')](_0x2674e0[_0x468e('0x37')],{})['then'](respondWithResult(_0x143084,0xc9))[_0x468e('0x26')](handleError(_0x143084,null));};exports[_0x468e('0x1b')]=function(_0x2b994a,_0x55eaaf){if(_0x2b994a[_0x468e('0x37')]['id']){delete _0x2b994a['body']['id'];}return db['OpenchannelInteraction'][_0x468e('0x38')]({'where':{'id':_0x2b994a[_0x468e('0x2a')]['id']}})[_0x468e('0x1c')](handleEntityNotFound(_0x55eaaf,null))['then'](saveUpdates(_0x2b994a[_0x468e('0x37')],null))[_0x468e('0x1c')](respondWithResult(_0x55eaaf,null))['catch'](handleError(_0x55eaaf,null));};exports['destroy']=function(_0x4d5c07,_0x49e407){return db[_0x468e('0x2c')][_0x468e('0x38')]({'where':{'id':_0x4d5c07[_0x468e('0x2a')]['id']}})[_0x468e('0x1c')](handleEntityNotFound(_0x49e407,null))[_0x468e('0x1c')](removeEntity(_0x49e407,null))[_0x468e('0x26')](handleError(_0x49e407,null));};exports['describe']=function(_0x441d75,_0x1ad69a){return db['OpenchannelInteraction']['describe']()[_0x468e('0x1c')](respondWithResult(_0x1ad69a,null))['catch'](handleError(_0x1ad69a,null));};exports[_0x468e('0x39')]=function(_0x18adbc,_0x12279e){return db[_0x468e('0x3a')][_0x468e('0x38')]({'where':{'id':_0x18adbc[_0x468e('0x2a')]['id']}})[_0x468e('0x1c')](handleEntityNotFound(_0x12279e,null))[_0x468e('0x1c')](function(_0x19f240){if(_0x19f240){return _0x19f240[_0x468e('0x39')](_0x18adbc[_0x468e('0x37')][_0x468e('0x3b')],_[_0x468e('0x3c')](_0x18adbc[_0x468e('0x37')],[_0x468e('0x3b'),'id'])||{});}})[_0x468e('0x1c')](respondWithResult(_0x12279e,null))[_0x468e('0x26')](handleError(_0x12279e,null));};exports['getMessages']=function(_0x5b5108,_0xe5ee2a){var _0xfd616a={'raw':![],'where':{}};var _0x4579ab={};var _0x43fa57={'count':0x0,'rows':[]};return db['OpenchannelInteraction']['findOne']({'where':{'id':_0x5b5108['params']['id']}})[_0x468e('0x1c')](handleEntityNotFound(_0xe5ee2a,null))[_0x468e('0x1c')](function(_0x1adf26){if(_0x1adf26){_0x4579ab['model']=_['keys'](db['OpenchannelMessage']['rawAttributes']);_0x4579ab[_0x468e('0x28')]=_[_0x468e('0x2b')](_0x5b5108[_0x468e('0x28')]);_0x4579ab[_0x468e('0x3d')]=_[_0x468e('0x2e')](_0x4579ab[_0x468e('0x31')],_0x4579ab[_0x468e('0x28')]);_0xfd616a[_0x468e('0x3e')]=_['intersection'](_0x4579ab[_0x468e('0x31')],qs['fields'](_0x5b5108[_0x468e('0x28')][_0x468e('0x2f')]));_0xfd616a['attributes']=_0xfd616a[_0x468e('0x3e')][_0x468e('0x30')]?_0xfd616a[_0x468e('0x3e')]:_0x4579ab[_0x468e('0x31')];if(!_0x5b5108[_0x468e('0x28')][_0x468e('0x3f')](_0x468e('0x40'))){_0xfd616a[_0x468e('0x16')]=qs[_0x468e('0x16')](_0x5b5108['query'][_0x468e('0x16')]);_0xfd616a[_0x468e('0x18')]=qs['offset'](_0x5b5108[_0x468e('0x28')][_0x468e('0x18')]);}_0xfd616a['order']=qs[_0x468e('0x41')](_0x5b5108[_0x468e('0x28')][_0x468e('0x41')]);_0xfd616a['where']=qs['filters'](_[_0x468e('0x42')](_0x5b5108['query'],_0x4579ab[_0x468e('0x3d')]));_0xfd616a[_0x468e('0x43')]['OpenchannelInteractionId']=_0x1adf26['id'];if(_0x5b5108['query'][_0x468e('0x44')]){_0xfd616a[_0x468e('0x43')]=_['merge'](_0xfd616a[_0x468e('0x43')],{'$or':_[_0x468e('0x22')](_0xfd616a['attributes'],function(_0x5b5a0c){var _0x557fa7={};_0x557fa7[_0x5b5a0c]={'$like':'%'+_0x5b5108[_0x468e('0x28')][_0x468e('0x44')]+'%'};return _0x557fa7;})});}if(_0x5b5108[_0x468e('0x28')]['$gte']){var _0x5dc872=_0x5b5108['query']['$gte'][_0x468e('0x45')](',');var _0x481760={};_0x481760[_0x5dc872[0x0]]={'$gte':moment(_0x5dc872[0x1])['format'](_0x468e('0x46'))};_0xfd616a[_0x468e('0x43')]=_['merge'](_0xfd616a[_0x468e('0x43')],_0x481760);}_0xfd616a=_['merge']({},_0xfd616a,_0x5b5108[_0x468e('0x35')]);return db[_0x468e('0x3a')][_0x468e('0x17')]({'where':_0xfd616a['where']})[_0x468e('0x1c')](function(_0x298c89){_0x43fa57[_0x468e('0x17')]=_0x298c89;if(_0x5b5108[_0x468e('0x28')]['includeAll']){_0xfd616a['include']=[{'all':!![]}];}return db[_0x468e('0x3a')][_0x468e('0x47')](_0xfd616a);})[_0x468e('0x1c')](function(_0x42baf2){_0x43fa57['rows']=_0x42baf2;return _0x43fa57;});}})['then'](respondWithFilteredResult(_0xe5ee2a,_0xfd616a))[_0x468e('0x26')](handleError(_0xe5ee2a,null));};exports[_0x468e('0x48')]=function(_0x54184c,_0x22d7fb){return db[_0x468e('0x2c')]['find']({'where':{'id':_0x54184c['params']['id']}})[_0x468e('0x1c')](handleEntityNotFound(_0x22d7fb,null))[_0x468e('0x1c')](function(_0x571979){if(_0x571979){return _0x571979[_0x468e('0x49')](_0x54184c[_0x468e('0x37')][_0x468e('0x3b')],_['omit'](_0x54184c['body'],['ids','id'])||{})[_0x468e('0x4a')](function(){return db[_0x468e('0x4b')][_0x468e('0x47')]({'attributes':['id',_0x468e('0x1f'),_0x468e('0x4c')],'where':{'id':_0x54184c[_0x468e('0x37')][_0x468e('0x3b')]}});})['then'](function(_0x3e566e){socket['emit'](_0x468e('0x4d'),{'id':Number(_0x54184c[_0x468e('0x2a')]['id']),'tags':_0x3e566e||[]});return{'id':Number(_0x54184c[_0x468e('0x2a')]['id']),'tags':_0x3e566e||[]};});}})['then'](respondWithResult(_0x22d7fb,null))['catch'](handleError(_0x22d7fb,null));};exports[_0x468e('0x4e')]=function(_0x468f3e,_0x4fd2fc){return db[_0x468e('0x2c')][_0x468e('0x38')]({'where':{'id':_0x468f3e[_0x468e('0x2a')]['id']}})['then'](handleEntityNotFound(_0x4fd2fc,null))[_0x468e('0x1c')](function(_0x1c5d6d){if(_0x1c5d6d){return _0x1c5d6d['removeTags'](_0x468f3e[_0x468e('0x28')][_0x468e('0x3b')]);}})[_0x468e('0x1c')](respondWithStatusCode(_0x4fd2fc,null))[_0x468e('0x26')](handleError(_0x4fd2fc,null));};exports['download']=function(_0x59397c,_0x323401){var _0x4b9a89=moment()[_0x468e('0x4f')]()['toString']();var _0x342b31=path[_0x468e('0x50')](config[_0x468e('0x51')],'server',_0x468e('0x52'),'tmp');var _0x86989e=path[_0x468e('0x50')](config[_0x468e('0x51')],_0x468e('0x53'),_0x468e('0x52'),_0x468e('0x54'));var _0x3775f0=path[_0x468e('0x50')](_0x342b31,_0x4b9a89);var _0x2de137=util['format'](_0x468e('0x55'),_0x59397c[_0x468e('0x2a')]['id'],_0x4b9a89);var _0x2bfe72=path['join'](_0x342b31,_0x2de137);var _0x32bf8e=[];_0x32bf8e['push']({'model':db[_0x468e('0x56')],'as':'User','attributes':['id',_0x468e('0x57')],'raw':!![]});_0x32bf8e[_0x468e('0x58')]({'model':db[_0x468e('0x59')],'as':_0x468e('0x5a'),'attributes':['id','firstName',_0x468e('0x5b')],'raw':!![]});if(_0x59397c[_0x468e('0x28')][_0x468e('0x54')]){_0x32bf8e[_0x468e('0x58')]({'model':db[_0x468e('0x5c')],'as':_0x468e('0x5c'),'raw':!![]});}var _0x44c635=[{'model':db[_0x468e('0x3a')],'as':_0x468e('0x5d'),'attributes':['id','body',_0x468e('0x5e'),_0x468e('0x5f'),_0x468e('0x60'),_0x468e('0x61')],'include':_0x32bf8e}];_0x44c635[_0x468e('0x58')]({'model':db[_0x468e('0x62')],'as':_0x468e('0x63'),'attributes':['id',_0x468e('0x1f')]});_0x44c635['push']({'model':db['User'],'as':'Owner','attributes':['id',_0x468e('0x57')]});return db[_0x468e('0x2c')]['find']({'where':{'id':_0x59397c[_0x468e('0x2a')]['id']},'include':_0x44c635})[_0x468e('0x1c')](handleEntityNotFound(_0x323401,null))[_0x468e('0x1c')](function(_0x347b46){if(_0x347b46){var _0x1249e5=_0x347b46[_0x468e('0x64')]({'plain':!![]});fs[_0x468e('0x65')](_0x3775f0);var _0x4f4617={'channel':'Openchannel','account':_0x1249e5[_0x468e('0x63')][_0x468e('0x1f')],'agent':_0x1249e5[_0x468e('0x66')]?_0x1249e5[_0x468e('0x66')][_0x468e('0x57')]:_0x468e('0x67'),'createdAt':moment(_0x1249e5['createdAt'])[_0x468e('0x68')](_0x468e('0x46'))[_0x468e('0x69')](),'closedAt':_0x1249e5[_0x468e('0x6a')]?moment(_0x1249e5['closedAt'])['format'](_0x468e('0x46'))[_0x468e('0x69')]():'','disposition':_0x1249e5[_0x468e('0x6b')],'visibility':_0x1249e5[_0x468e('0x6c')]?_0x468e('0x6d'):'Private','messages':_(_0x1249e5[_0x468e('0x5d')])[_0x468e('0x44')]({'secret':![]})[_0x468e('0x22')](function(_0x5ad6b1){if(_0x5ad6b1['Attachment']){var _0xf27e4a=path[_0x468e('0x50')](_0x86989e,_0x5ad6b1[_0x468e('0x5c')]['basename']);if(fs[_0x468e('0x6e')](_0xf27e4a)){fs[_0x468e('0x6f')](_0xf27e4a)[_0x468e('0x70')](fs['createWriteStream'](path['join'](_0x3775f0,_0x5ad6b1[_0x468e('0x5c')][_0x468e('0x71')])));}}return{'date':moment(_0x5ad6b1[_0x468e('0x5e')])[_0x468e('0x68')](_0x468e('0x46'))[_0x468e('0x69')](),'sender':_0x5ad6b1['direction']===_0x468e('0x72')?_0x5ad6b1['User']?_0x5ad6b1[_0x468e('0x56')][_0x468e('0x57')]:'System':_0x5ad6b1[_0x468e('0x5a')]['firstName']+(_0x5ad6b1[_0x468e('0x5a')][_0x468e('0x5b')]?'\x20'+_0x5ad6b1[_0x468e('0x5a')][_0x468e('0x5b')]:''),'body':_0x5ad6b1['Attachment']?_0x5ad6b1[_0x468e('0x5c')][_0x468e('0x71')]:_0x5ad6b1[_0x468e('0x37')],'direction':_0x5ad6b1['direction']===_0x468e('0x72')?'A':'C','secret':_0x5ad6b1[_0x468e('0x60')],'read':_0x5ad6b1[_0x468e('0x61')],'attachment':_0x5ad6b1['Attachment']};})[_0x468e('0x73')]()};return ejs[_0x468e('0x74')](path[_0x468e('0x50')](config[_0x468e('0x51')],_0x468e('0x53'),_0x468e('0x75'),_0x468e('0x76')),{'interaction':_0x4f4617})[_0x468e('0x1c')](function(_0x904bc0){var _0x30c276=path[_0x468e('0x50')](_0x3775f0,'transcript-'+_0x1249e5['id']+'-'+_0x4b9a89+'.pdf');var _0x12ecfd={'path':_0x30c276,'channel':'Openchannel','interactionId':_0x1249e5['id']};return pdf[_0x468e('0x77')](_0x904bc0,_0x12ecfd);})[_0x468e('0x1c')](function(){return new Promise(function(_0x15066f,_0x393f08){zipdir(_0x3775f0,{'saveTo':_0x2bfe72},function(_0x275f45,_0x550762){if(_0x275f45)return _0x393f08(_0x275f45);return _0x15066f(_0x550762);});})[_0x468e('0x1c')](function(){return new Promise(function(_0x1293cd,_0x15ae96){rimraf(_0x3775f0,function(_0x1d5178){if(_0x1d5178)_0x15ae96(_0x1d5178);return _0x1293cd();});});})['then'](function(){return _0x323401[_0x468e('0x78')](_0x2bfe72,_0x2de137,function(_0x27b605){if(_0x27b605){logger[_0x468e('0x1e')](_0x468e('0x79'),_0x27b605);}else{fs[_0x468e('0x7a')](_0x2bfe72);}});});});}else{return _0x323401[_0x468e('0x12')](0xc8);}})[_0x468e('0x26')](handleError(_0x323401,null));};
\ No newline at end of file
+var _0xf018=['Contact','firstName','lastName','attachments','Attachment','Messages','direction','secret','OpenchannelAccount','Account','Owner','get','mkdirSync','fullname','N.A.','createdAt','closed','closedAt','disposition','threadId','Public','Private','basename','existsSync','createReadStream','pipe','createWriteStream','System','out','read','value','views','downloadInteraction.ejs','Openchannel','createPdfFromHTML','download','unlinkSync','rimraf','zip-dir','moment','path','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelInteraction.socket','sendStatus','end','json','offset','undefined','limit','count','set','Content-Range','update','destroy','error','stack','name','send','index','OpenchannelInteraction','rawAttributes','type','getOptions','findAll','show','query','from','params','keys','filters','model','attributes','intersection','fields','length','includeAll','include','merge','options','then','catch','create','body','find','describe','addMessage','OpenchannelMessage','omit','ids','findOne','hasOwnProperty','sort','where','OpenchannelInteractionId','filter','map','$gte','split','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','spread','color','emit','openchannelInteractionTags:save','removeTags','unix','toString','join','server','tmp','root','files','format','transcript-%d-%s.zip','User','push','CmContact'];(function(_0x1eaac0,_0x401832){var _0x4caa3f=function(_0x59a473){while(--_0x59a473){_0x1eaac0['push'](_0x1eaac0['shift']());}};_0x4caa3f(++_0x401832);}(_0xf018,0x11f));var _0x8f01=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xf018[_0x3b380d];return _0x54502b;};'use strict';var rimraf=require(_0x8f01('0x0'));var zipdir=require(_0x8f01('0x1'));var moment=require(_0x8f01('0x2'));var util=require('util');var path=require(_0x8f01('0x3'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var Redis=require('ioredis');var interaction=require(_0x8f01('0x4'));var qs=require(_0x8f01('0x5'));var pdf=require('../../components/export/pdf');var logger=require('../../config/logger')(_0x8f01('0x6'));var config=require(_0x8f01('0x7'));var db=require(_0x8f01('0x8'))['db'];config[_0x8f01('0x9')]=_[_0x8f01('0xa')](config[_0x8f01('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x8f01('0xb'))(new Redis(config[_0x8f01('0x9')]));require(_0x8f01('0xc'))['register'](socket);function respondWithStatusCode(_0x5a783d,_0x1d0d4a){_0x1d0d4a=_0x1d0d4a||0xcc;return function(_0x2705d9){if(_0x2705d9){return _0x5a783d[_0x8f01('0xd')](_0x1d0d4a);}return _0x5a783d['status'](_0x1d0d4a)[_0x8f01('0xe')]();};}function respondWithResult(_0x1afdeb,_0x4ae669){_0x4ae669=_0x4ae669||0xc8;return function(_0x5a7d3a){if(_0x5a7d3a){return _0x1afdeb['status'](_0x4ae669)[_0x8f01('0xf')](_0x5a7d3a);}};}function respondWithFilteredResult(_0x2bf1d9,_0xab172a){return function(_0xfcc00d){if(_0xfcc00d){var _0x5e5331=typeof _0xab172a[_0x8f01('0x10')]===_0x8f01('0x11')&&typeof _0xab172a[_0x8f01('0x12')]===_0x8f01('0x11');var _0x53e61e=_0xfcc00d['count'];var _0x33ae6b=_0x5e5331?0x0:_0xab172a[_0x8f01('0x10')];var _0x51c06a=_0x5e5331?_0xfcc00d[_0x8f01('0x13')]:_0xab172a[_0x8f01('0x10')]+_0xab172a['limit'];var _0x3abb92;if(_0x51c06a>=_0x53e61e){_0x51c06a=_0x53e61e;_0x3abb92=0xc8;}else{_0x3abb92=0xce;}_0x2bf1d9['status'](_0x3abb92);return _0x2bf1d9[_0x8f01('0x14')](_0x8f01('0x15'),_0x33ae6b+'-'+_0x51c06a+'/'+_0x53e61e)[_0x8f01('0xf')](_0xfcc00d);}return null;};}function saveUpdates(_0x393403){return function(_0x23a446){if(_0x23a446){return _0x23a446[_0x8f01('0x16')](_0x393403)['then'](function(_0x1a01a5){return _0x1a01a5;});}return null;};}function removeEntity(_0x561464){return function(_0x5a3a7a){if(_0x5a3a7a){return _0x5a3a7a[_0x8f01('0x17')]()['then'](function(){_0x561464['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4daaef){return function(_0x19f35d){if(!_0x19f35d){_0x4daaef[_0x8f01('0xd')](0x194);}return _0x19f35d;};}function handleError(_0x1b700c,_0x42a711){_0x42a711=_0x42a711||0x1f4;return function(_0x5f15ea){logger[_0x8f01('0x18')](_0x5f15ea[_0x8f01('0x19')]);if(_0x5f15ea['name']){delete _0x5f15ea[_0x8f01('0x1a')];}_0x1b700c['status'](_0x42a711)[_0x8f01('0x1b')](_0x5f15ea);};}exports[_0x8f01('0x1c')]=function(_0x36ec1f,_0x49cdd9){var _0x2282f0={};var _0x5ae715=_['map'](db[_0x8f01('0x1d')][_0x8f01('0x1e')],function(_0xafb1e1){return{'name':_0xafb1e1['fieldName'],'type':_0xafb1e1[_0x8f01('0x1f')]['key']};});_0x2282f0=qs[_0x8f01('0x20')](_0x5ae715,_0x36ec1f);return interaction[_0x8f01('0x21')]('openchannel',_0x36ec1f['query'],_0x36ec1f['user'],_0x2282f0,_0x5ae715)['then'](respondWithFilteredResult(_0x49cdd9,_0x2282f0))['catch'](handleError(_0x49cdd9,null));};exports[_0x8f01('0x22')]=function(_0x19f6c3,_0x176a2d){var _0x4b8f06={};if(_0x19f6c3[_0x8f01('0x23')][_0x8f01('0x1f')]&&_0x19f6c3[_0x8f01('0x23')][_0x8f01('0x1f')]===_0x8f01('0x24')){_0x4b8f06['from']=_0x19f6c3[_0x8f01('0x25')]['id'];}else{_0x4b8f06['id']=_0x19f6c3[_0x8f01('0x25')]['id'];}var _0x5edd58={'raw':![],'where':_0x4b8f06},_0x318d2a={};_0x318d2a['model']=_[_0x8f01('0x26')](db[_0x8f01('0x1d')]['rawAttributes']);_0x318d2a[_0x8f01('0x23')]=_[_0x8f01('0x26')](_0x19f6c3[_0x8f01('0x23')]);_0x318d2a[_0x8f01('0x27')]=_['intersection'](_0x318d2a[_0x8f01('0x28')],_0x318d2a[_0x8f01('0x23')]);_0x5edd58[_0x8f01('0x29')]=_[_0x8f01('0x2a')](_0x318d2a[_0x8f01('0x28')],qs[_0x8f01('0x2b')](_0x19f6c3['query'][_0x8f01('0x2b')]));_0x5edd58['attributes']=_0x5edd58[_0x8f01('0x29')][_0x8f01('0x2c')]?_0x5edd58[_0x8f01('0x29')]:_0x318d2a[_0x8f01('0x28')];if(_0x19f6c3['query'][_0x8f01('0x2d')]){_0x5edd58[_0x8f01('0x2e')]=[{'all':!![]}];}_0x5edd58=_[_0x8f01('0x2f')]({},_0x5edd58,_0x19f6c3[_0x8f01('0x30')]);return db[_0x8f01('0x1d')]['find'](_0x5edd58)['then'](handleEntityNotFound(_0x176a2d,null))[_0x8f01('0x31')](respondWithResult(_0x176a2d,null))[_0x8f01('0x32')](handleError(_0x176a2d,null));};exports[_0x8f01('0x33')]=function(_0x3915ee,_0x95394a){return db[_0x8f01('0x1d')][_0x8f01('0x33')](_0x3915ee['body'],{})[_0x8f01('0x31')](respondWithResult(_0x95394a,0xc9))[_0x8f01('0x32')](handleError(_0x95394a,null));};exports['update']=function(_0x15a52a,_0x117663){if(_0x15a52a[_0x8f01('0x34')]['id']){delete _0x15a52a[_0x8f01('0x34')]['id'];}return db[_0x8f01('0x1d')][_0x8f01('0x35')]({'where':{'id':_0x15a52a[_0x8f01('0x25')]['id']}})[_0x8f01('0x31')](handleEntityNotFound(_0x117663,null))[_0x8f01('0x31')](saveUpdates(_0x15a52a[_0x8f01('0x34')],null))[_0x8f01('0x31')](respondWithResult(_0x117663,null))['catch'](handleError(_0x117663,null));};exports[_0x8f01('0x17')]=function(_0x43cb4d,_0x53a910){return db[_0x8f01('0x1d')]['find']({'where':{'id':_0x43cb4d[_0x8f01('0x25')]['id']}})[_0x8f01('0x31')](handleEntityNotFound(_0x53a910,null))[_0x8f01('0x31')](removeEntity(_0x53a910,null))[_0x8f01('0x32')](handleError(_0x53a910,null));};exports[_0x8f01('0x36')]=function(_0x389bc6,_0x2da6bf){return db['OpenchannelInteraction']['describe']()[_0x8f01('0x31')](respondWithResult(_0x2da6bf,null))['catch'](handleError(_0x2da6bf,null));};exports[_0x8f01('0x37')]=function(_0x57c30e,_0xbd9f1){return db[_0x8f01('0x38')][_0x8f01('0x35')]({'where':{'id':_0x57c30e[_0x8f01('0x25')]['id']}})[_0x8f01('0x31')](handleEntityNotFound(_0xbd9f1,null))[_0x8f01('0x31')](function(_0x1b293b){if(_0x1b293b){return _0x1b293b[_0x8f01('0x37')](_0x57c30e['body']['ids'],_[_0x8f01('0x39')](_0x57c30e[_0x8f01('0x34')],[_0x8f01('0x3a'),'id'])||{});}})[_0x8f01('0x31')](respondWithResult(_0xbd9f1,null))[_0x8f01('0x32')](handleError(_0xbd9f1,null));};exports['getMessages']=function(_0x54f74e,_0xfd6af2){var _0x550fcf={'raw':![],'where':{}};var _0x283dae={};var _0x134d39={'count':0x0,'rows':[]};return db[_0x8f01('0x1d')][_0x8f01('0x3b')]({'where':{'id':_0x54f74e[_0x8f01('0x25')]['id']}})[_0x8f01('0x31')](handleEntityNotFound(_0xfd6af2,null))[_0x8f01('0x31')](function(_0x5d93b8){if(_0x5d93b8){_0x283dae[_0x8f01('0x28')]=_[_0x8f01('0x26')](db['OpenchannelMessage']['rawAttributes']);_0x283dae[_0x8f01('0x23')]=_[_0x8f01('0x26')](_0x54f74e['query']);_0x283dae[_0x8f01('0x27')]=_[_0x8f01('0x2a')](_0x283dae[_0x8f01('0x28')],_0x283dae['query']);_0x550fcf[_0x8f01('0x29')]=_[_0x8f01('0x2a')](_0x283dae[_0x8f01('0x28')],qs[_0x8f01('0x2b')](_0x54f74e['query'][_0x8f01('0x2b')]));_0x550fcf['attributes']=_0x550fcf[_0x8f01('0x29')][_0x8f01('0x2c')]?_0x550fcf[_0x8f01('0x29')]:_0x283dae['model'];if(!_0x54f74e[_0x8f01('0x23')][_0x8f01('0x3c')]('nolimit')){_0x550fcf[_0x8f01('0x12')]=qs[_0x8f01('0x12')](_0x54f74e['query'][_0x8f01('0x12')]);_0x550fcf[_0x8f01('0x10')]=qs['offset'](_0x54f74e[_0x8f01('0x23')][_0x8f01('0x10')]);}_0x550fcf['order']=qs[_0x8f01('0x3d')](_0x54f74e[_0x8f01('0x23')]['sort']);_0x550fcf[_0x8f01('0x3e')]=qs[_0x8f01('0x27')](_['pick'](_0x54f74e[_0x8f01('0x23')],_0x283dae[_0x8f01('0x27')]));_0x550fcf[_0x8f01('0x3e')][_0x8f01('0x3f')]=_0x5d93b8['id'];if(_0x54f74e['query'][_0x8f01('0x40')]){_0x550fcf[_0x8f01('0x3e')]=_['merge'](_0x550fcf[_0x8f01('0x3e')],{'$or':_[_0x8f01('0x41')](_0x550fcf[_0x8f01('0x29')],function(_0x5e1235){var _0x243d44={};_0x243d44[_0x5e1235]={'$like':'%'+_0x54f74e['query'][_0x8f01('0x40')]+'%'};return _0x243d44;})});}if(_0x54f74e[_0x8f01('0x23')]['$gte']){var _0x156ade=_0x54f74e[_0x8f01('0x23')][_0x8f01('0x42')][_0x8f01('0x43')](',');var _0x2d92a9={};_0x2d92a9[_0x156ade[0x0]]={'$gte':moment(_0x156ade[0x1])['format'](_0x8f01('0x44'))};_0x550fcf[_0x8f01('0x3e')]=_[_0x8f01('0x2f')](_0x550fcf[_0x8f01('0x3e')],_0x2d92a9);}_0x550fcf=_[_0x8f01('0x2f')]({},_0x550fcf,_0x54f74e[_0x8f01('0x30')]);return db['OpenchannelMessage'][_0x8f01('0x13')]({'where':_0x550fcf['where']})[_0x8f01('0x31')](function(_0x1e83de){_0x134d39['count']=_0x1e83de;if(_0x54f74e[_0x8f01('0x23')][_0x8f01('0x2d')]){_0x550fcf[_0x8f01('0x2e')]=[{'all':!![]}];}return db[_0x8f01('0x38')][_0x8f01('0x21')](_0x550fcf);})[_0x8f01('0x31')](function(_0x5b37ea){_0x134d39[_0x8f01('0x45')]=_0x5b37ea;return _0x134d39;});}})[_0x8f01('0x31')](respondWithFilteredResult(_0xfd6af2,_0x550fcf))[_0x8f01('0x32')](handleError(_0xfd6af2,null));};exports[_0x8f01('0x46')]=function(_0x46690d,_0x3f309a){return db[_0x8f01('0x1d')]['find']({'where':{'id':_0x46690d['params']['id']}})[_0x8f01('0x31')](handleEntityNotFound(_0x3f309a,null))[_0x8f01('0x31')](function(_0x4495bf){if(_0x4495bf){return _0x4495bf['setTags'](_0x46690d[_0x8f01('0x34')]['ids'],_[_0x8f01('0x39')](_0x46690d[_0x8f01('0x34')],['ids','id'])||{})[_0x8f01('0x47')](function(){return db['Tag'][_0x8f01('0x21')]({'attributes':['id','name',_0x8f01('0x48')],'where':{'id':_0x46690d[_0x8f01('0x34')][_0x8f01('0x3a')]}});})[_0x8f01('0x31')](function(_0x2800d4){socket[_0x8f01('0x49')](_0x8f01('0x4a'),{'id':Number(_0x46690d[_0x8f01('0x25')]['id']),'tags':_0x2800d4||[]});return{'id':Number(_0x46690d[_0x8f01('0x25')]['id']),'tags':_0x2800d4||[]};});}})['then'](respondWithResult(_0x3f309a,null))['catch'](handleError(_0x3f309a,null));};exports[_0x8f01('0x4b')]=function(_0x1551ee,_0x33c84d){return db[_0x8f01('0x1d')][_0x8f01('0x35')]({'where':{'id':_0x1551ee[_0x8f01('0x25')]['id']}})['then'](handleEntityNotFound(_0x33c84d,null))[_0x8f01('0x31')](function(_0x13de56){if(_0x13de56){return _0x13de56['removeTags'](_0x1551ee['query'][_0x8f01('0x3a')]);}})[_0x8f01('0x31')](respondWithStatusCode(_0x33c84d,null))[_0x8f01('0x32')](handleError(_0x33c84d,null));};exports['download']=function(_0xa92d7e,_0x3a0380){var _0x45ec85=moment()[_0x8f01('0x4c')]()[_0x8f01('0x4d')]();var _0x3c945e=path[_0x8f01('0x4e')](config['root'],_0x8f01('0x4f'),'files',_0x8f01('0x50'));var _0x456f7d=path[_0x8f01('0x4e')](config[_0x8f01('0x51')],_0x8f01('0x4f'),_0x8f01('0x52'),'attachments');var _0x3830b6=path[_0x8f01('0x4e')](_0x3c945e,_0x45ec85);var _0x3f0424=util[_0x8f01('0x53')](_0x8f01('0x54'),_0xa92d7e[_0x8f01('0x25')]['id'],_0x45ec85);var _0x45c99c=path['join'](_0x3c945e,_0x3f0424);var _0x20c590=[];_0x20c590['push']({'model':db['User'],'as':_0x8f01('0x55'),'attributes':['id','fullname'],'raw':!![]});_0x20c590[_0x8f01('0x56')]({'model':db[_0x8f01('0x57')],'as':_0x8f01('0x58'),'attributes':['id',_0x8f01('0x59'),_0x8f01('0x5a')],'raw':!![]});if(_0xa92d7e[_0x8f01('0x23')][_0x8f01('0x5b')]){_0x20c590[_0x8f01('0x56')]({'model':db[_0x8f01('0x5c')],'as':'Attachment','raw':!![]});}var _0x562af4=[{'model':db['OpenchannelMessage'],'as':_0x8f01('0x5d'),'attributes':['id',_0x8f01('0x34'),'createdAt',_0x8f01('0x5e'),_0x8f01('0x5f'),'read'],'include':_0x20c590}];_0x562af4[_0x8f01('0x56')]({'model':db[_0x8f01('0x60')],'as':_0x8f01('0x61'),'attributes':['id',_0x8f01('0x1a')]});_0x562af4['push']({'model':db[_0x8f01('0x55')],'as':_0x8f01('0x62'),'attributes':['id','fullname']});return db['OpenchannelInteraction'][_0x8f01('0x35')]({'where':{'id':_0xa92d7e[_0x8f01('0x25')]['id']},'include':_0x562af4})['then'](handleEntityNotFound(_0x3a0380,null))['then'](function(_0x464d58){if(_0x464d58){var _0x7fa3b2=_0x464d58[_0x8f01('0x63')]({'plain':!![]});fs[_0x8f01('0x64')](_0x3830b6);var _0x2e34db={'channel':'Openchannel','account':_0x7fa3b2[_0x8f01('0x61')][_0x8f01('0x1a')],'agent':_0x7fa3b2[_0x8f01('0x62')]?_0x7fa3b2[_0x8f01('0x62')][_0x8f01('0x65')]:_0x8f01('0x66'),'createdAt':moment(_0x7fa3b2[_0x8f01('0x67')])['format'](_0x8f01('0x44'))['toString'](),'closedAt':_0x7fa3b2[_0x8f01('0x68')]?moment(_0x7fa3b2[_0x8f01('0x69')])[_0x8f01('0x53')](_0x8f01('0x44'))[_0x8f01('0x4d')]():'','disposition':_0x7fa3b2[_0x8f01('0x6a')],'visibility':_0x7fa3b2[_0x8f01('0x6b')]?_0x8f01('0x6c'):_0x8f01('0x6d'),'messages':_(_0x7fa3b2['Messages'])[_0x8f01('0x40')]({'secret':![]})[_0x8f01('0x41')](function(_0x4b0661){if(_0x4b0661[_0x8f01('0x5c')]){var _0x3351c8=path['join'](_0x456f7d,_0x4b0661['Attachment'][_0x8f01('0x6e')]);if(fs[_0x8f01('0x6f')](_0x3351c8)){fs[_0x8f01('0x70')](_0x3351c8)[_0x8f01('0x71')](fs[_0x8f01('0x72')](path[_0x8f01('0x4e')](_0x3830b6,_0x4b0661['Attachment']['basename'])));}}return{'date':moment(_0x4b0661[_0x8f01('0x67')])[_0x8f01('0x53')](_0x8f01('0x44'))['toString'](),'sender':_0x4b0661[_0x8f01('0x5e')]==='out'?_0x4b0661[_0x8f01('0x55')]?_0x4b0661[_0x8f01('0x55')][_0x8f01('0x65')]:_0x8f01('0x73'):_0x4b0661[_0x8f01('0x58')][_0x8f01('0x59')]+(_0x4b0661[_0x8f01('0x58')]['lastName']?'\x20'+_0x4b0661[_0x8f01('0x58')]['lastName']:''),'body':_0x4b0661[_0x8f01('0x5c')]?_0x4b0661['Attachment']['basename']:_0x4b0661[_0x8f01('0x34')],'direction':_0x4b0661[_0x8f01('0x5e')]===_0x8f01('0x74')?'A':'C','secret':_0x4b0661['secret'],'read':_0x4b0661[_0x8f01('0x75')],'attachment':_0x4b0661[_0x8f01('0x5c')]};})[_0x8f01('0x76')]()};return ejs['renderFile'](path['join'](config[_0x8f01('0x51')],_0x8f01('0x4f'),_0x8f01('0x77'),_0x8f01('0x78')),{'interaction':_0x2e34db})['then'](function(_0x4bebc0){var _0x100c98=path[_0x8f01('0x4e')](_0x3830b6,'transcript-'+_0x7fa3b2['id']+'-'+_0x45ec85+'.pdf');var _0x5d0bc9={'path':_0x100c98,'channel':_0x8f01('0x79'),'interactionId':_0x7fa3b2['id']};return pdf[_0x8f01('0x7a')](_0x4bebc0,_0x5d0bc9);})[_0x8f01('0x31')](function(){return new Promise(function(_0x531510,_0x2b91aa){zipdir(_0x3830b6,{'saveTo':_0x45c99c},function(_0x5ccb7c,_0x5e15f0){if(_0x5ccb7c)return _0x2b91aa(_0x5ccb7c);return _0x531510(_0x5e15f0);});})[_0x8f01('0x31')](function(){return new Promise(function(_0x1e3993,_0x4ffbec){rimraf(_0x3830b6,function(_0x43b160){if(_0x43b160)_0x4ffbec(_0x43b160);return _0x1e3993();});});})['then'](function(){return _0x3a0380[_0x8f01('0x7b')](_0x45c99c,_0x3f0424,function(_0x68de8a){if(_0x68de8a){logger[_0x8f01('0x18')]('Unable\x20to\x20delete\x20zip\x20file',_0x68de8a);}else{fs[_0x8f01('0x7c')](_0x45c99c);}});});});}else{return _0x3a0380['sendStatus'](0xc8);}})[_0x8f01('0x32')](handleError(_0x3a0380,null));};
\ No newline at end of file
index fe28613..29b1455 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd645=['map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','remove','then','setDataValue','Users'];(function(_0x2ff5b5,_0x43782b){var _0x302df5=function(_0x1669bc){while(--_0x1669bc){_0x2ff5b5['push'](_0x2ff5b5['shift']());}};_0x302df5(++_0x43782b);}(_0xd645,0x80));var _0x5d64=function(_0x5794d1,_0x159550){_0x5794d1=_0x5794d1-0x0;var _0xc2b301=_0xd645[_0x5794d1];return _0xc2b301;};'use strict';var EventEmitter=require(_0x5d64('0x0'));var OpenchannelInteraction=require(_0x5d64('0x1'))['db']['OpenchannelInteraction'];var OpenchannelMessage=require('../../mysqldb')['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x5d64('0x2')](0x0);var events={'afterCreate':_0x5d64('0x3'),'afterUpdate':'update','afterDestroy':_0x5d64('0x4')};function emitEvent(_0x80563d){return function(_0x264d84,_0x3e9b59,_0x97ad1a){_0x264d84['getUsers']({'attributes':['id'],'raw':!![]})[_0x5d64('0x5')](function(_0x3bc3a0){_0x264d84[_0x5d64('0x6')](_0x5d64('0x7'),_0x3bc3a0[_0x5d64('0x8')](function(_0x40a330){return{'id':_0x40a330['id']};}));return OpenchannelMessage[_0x5d64('0x9')]({'where':{'OpenchannelInteractionId':_0x264d84['id'],'direction':'in','read':![]},'raw':!![]});})[_0x5d64('0x5')](function(_0x1cdf5d){_0x264d84[_0x5d64('0x6')](_0x5d64('0xa'),_0x1cdf5d[_0x5d64('0xb')]);OpenchannelInteractionEvents[_0x5d64('0xc')](_0x80563d+':'+_0x264d84['id'],_0x264d84);OpenchannelInteractionEvents[_0x5d64('0xc')](_0x80563d,_0x264d84);_0x97ad1a(null);})[_0x5d64('0xd')](_0x97ad1a(null));};}for(var e in events){if(events[_0x5d64('0xe')](e)){var event=events[e];OpenchannelInteraction[_0x5d64('0xf')](e,emitEvent(event));}}module[_0x5d64('0x10')]=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0xbc45=['exports','events','../../mysqldb','setMaxListeners','update','remove','getUsers','then','setDataValue','Users','unreadMessages','length','emit','catch','hook'];(function(_0xa47ac2,_0x20827b){var _0x514ad2=function(_0x4890f3){while(--_0x4890f3){_0xa47ac2['push'](_0xa47ac2['shift']());}};_0x514ad2(++_0x20827b);}(_0xbc45,0x100));var _0x5bc4=function(_0xb536ae,_0x3a0d58){_0xb536ae=_0xb536ae-0x0;var _0x4810b8=_0xbc45[_0xb536ae];return _0x4810b8;};'use strict';var EventEmitter=require(_0x5bc4('0x0'));var OpenchannelInteraction=require(_0x5bc4('0x1'))['db']['OpenchannelInteraction'];var OpenchannelMessage=require('../../mysqldb')['db']['OpenchannelMessage'];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0x5bc4('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x5bc4('0x3'),'afterDestroy':_0x5bc4('0x4')};function emitEvent(_0x9a39d5){return function(_0x1a774f,_0x1dda30,_0x2c71d3){_0x1a774f[_0x5bc4('0x5')]({'attributes':['id'],'raw':!![]})[_0x5bc4('0x6')](function(_0x3e597f){_0x1a774f[_0x5bc4('0x7')](_0x5bc4('0x8'),_0x3e597f['map'](function(_0x4e9bca){return{'id':_0x4e9bca['id']};}));return OpenchannelMessage['findAll']({'where':{'OpenchannelInteractionId':_0x1a774f['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x543327){_0x1a774f[_0x5bc4('0x7')](_0x5bc4('0x9'),_0x543327[_0x5bc4('0xa')]);OpenchannelInteractionEvents[_0x5bc4('0xb')](_0x9a39d5+':'+_0x1a774f['id'],_0x1a774f);OpenchannelInteractionEvents[_0x5bc4('0xb')](_0x9a39d5,_0x1a774f);_0x2c71d3(null);})[_0x5bc4('0xc')](_0x2c71d3(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelInteraction[_0x5bc4('0xd')](e,emitEvent(event));}}module[_0x5bc4('0xe')]=OpenchannelInteractionEvents;
\ No newline at end of file
index da810ae..e5bdae4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb59d=['OpenchannelInteraction','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./openchannelInteraction.attributes','exports','define'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb59d,0xc0));var _0xdb59=function(_0x51d68f,_0x8bb359){_0x51d68f=_0x51d68f-0x0;var _0x32d749=_0xb59d[_0x51d68f];return _0x32d749;};'use strict';var _=require(_0xdb59('0x0'));var util=require(_0xdb59('0x1'));var logger=require(_0xdb59('0x2'))(_0xdb59('0x3'));var moment=require(_0xdb59('0x4'));var BPromise=require(_0xdb59('0x5'));var rp=require(_0xdb59('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdb59('0x7'));var config=require(_0xdb59('0x8'));var attributes=require(_0xdb59('0x9'));module[_0xdb59('0xa')]=function(_0x40355b,_0xc40c24){return _0x40355b[_0xdb59('0xb')](_0xdb59('0xc'),attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x3e4194,_0xf20a91,_0x3fbe78){if(_0x3e4194[_0xdb59('0xd')]('closed')){_0x3e4194[_0xdb59('0xe')]=moment()[_0xdb59('0xf')](_0xdb59('0x10'));}_0x3fbe78(null,_0x3e4194);}}});};
\ No newline at end of file
+var _0xa110=['YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','OpenchannelInteraction','utf8mb4','utf8mb4_unicode_ci','changed','closedAt','format'];(function(_0x5614f3,_0x51bd95){var _0x25df93=function(_0x5825e2){while(--_0x5825e2){_0x5614f3['push'](_0x5614f3['shift']());}};_0x25df93(++_0x51bd95);}(_0xa110,0xbf));var _0x0a11=function(_0x4a4f3b,_0x587506){_0x4a4f3b=_0x4a4f3b-0x0;var _0x34fe9c=_0xa110[_0x4a4f3b];return _0x34fe9c;};'use strict';var _=require(_0x0a11('0x0'));var util=require(_0x0a11('0x1'));var logger=require(_0x0a11('0x2'))(_0x0a11('0x3'));var moment=require(_0x0a11('0x4'));var BPromise=require(_0x0a11('0x5'));var rp=require(_0x0a11('0x6'));var fs=require('fs');var path=require(_0x0a11('0x7'));var rimraf=require(_0x0a11('0x8'));var config=require(_0x0a11('0x9'));var attributes=require('./openchannelInteraction.attributes');module[_0x0a11('0xa')]=function(_0x30fed6,_0x3f7e03){return _0x30fed6[_0x0a11('0xb')](_0x0a11('0xc'),attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x0a11('0xd'),'collate':_0x0a11('0xe'),'hooks':{'beforeUpdate':function(_0x504c7f,_0x52b18c,_0x278277){if(_0x504c7f[_0x0a11('0xf')]('closed')){_0x504c7f[_0x0a11('0x10')]=moment()[_0x0a11('0x11')](_0x0a11('0x12'));}_0x278277(null,_0x504c7f);}}});};
\ No newline at end of file
index 0c1d563..19d66c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc617=['randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','register','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','OpenchannelInteraction','update','body','options','raw','where','UpdateOpenchannelInteraction','catch','find','ids','omit','spread','AddTags','lodash','moment','bluebird'];(function(_0x3e55ed,_0x3ccba1){var _0x1835d3=function(_0x5d40a5){while(--_0x5d40a5){_0x3e55ed['push'](_0x3e55ed['shift']());}};_0x1835d3(++_0x3ccba1);}(_0xc617,0x13d));var _0x7c61=function(_0x3987a1,_0x447793){_0x3987a1=_0x3987a1-0x0;var _0xe2596e=_0xc617[_0x3987a1];return _0xe2596e;};'use strict';var _=require(_0x7c61('0x0'));var util=require('util');var moment=require(_0x7c61('0x1'));var BPromise=require(_0x7c61('0x2'));var rs=require(_0x7c61('0x3'));var fs=require('fs');var Redis=require(_0x7c61('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x7c61('0x5'));var logger=require(_0x7c61('0x6'))('rpc');var config=require(_0x7c61('0x7'));var jayson=require(_0x7c61('0x8'));var client=jayson[_0x7c61('0x9')][_0x7c61('0xa')]({'port':0x232a});config[_0x7c61('0xb')]=_[_0x7c61('0xc')](config[_0x7c61('0xb')],{'host':_0x7c61('0xd'),'port':0x18eb});var socket=require(_0x7c61('0xe'))(new Redis(config[_0x7c61('0xb')]));require(_0x7c61('0xf'))[_0x7c61('0x10')](socket);function respondWithRpcPromise(_0x1a9d43,_0x2a879,_0xc186c8){return new BPromise(function(_0xd7df00,_0x3e9e17){return client['request'](_0x1a9d43,_0xc186c8)[_0x7c61('0x11')](function(_0x11253e){logger[_0x7c61('0x12')](_0x7c61('0x13'),_0x2a879,_0x7c61('0x14'));logger[_0x7c61('0x15')]('OpenchannelInteraction,\x20%s,\x20%s,\x20%s',_0x2a879,_0x7c61('0x14'),JSON[_0x7c61('0x16')](_0x11253e));if(_0x11253e['error']){if(_0x11253e[_0x7c61('0x17')][_0x7c61('0x18')]===0x1f4){logger[_0x7c61('0x17')](_0x7c61('0x13'),_0x2a879,_0x11253e[_0x7c61('0x17')][_0x7c61('0x19')]);return _0x3e9e17(_0x11253e[_0x7c61('0x17')][_0x7c61('0x19')]);}logger['error'](_0x7c61('0x13'),_0x2a879,_0x11253e[_0x7c61('0x17')]['message']);return _0xd7df00(_0x11253e[_0x7c61('0x17')][_0x7c61('0x19')]);}else{logger[_0x7c61('0x12')]('OpenchannelInteraction,\x20%s,\x20%s',_0x2a879,_0x7c61('0x14'));_0xd7df00(_0x11253e[_0x7c61('0x1a')][_0x7c61('0x19')]);}})['catch'](function(_0x142f23){logger[_0x7c61('0x17')](_0x7c61('0x13'),_0x2a879,_0x142f23);_0x3e9e17(_0x142f23);});});}exports['UpdateOpenchannelInteraction']=function(_0x3f8ba8){var _0x4d1bb1=this;return new Promise(function(_0x2c9ee3,_0x234a7f){return db[_0x7c61('0x1b')][_0x7c61('0x1c')](_0x3f8ba8[_0x7c61('0x1d')],{'raw':_0x3f8ba8[_0x7c61('0x1e')]?_0x3f8ba8[_0x7c61('0x1e')][_0x7c61('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3f8ba8['options']?_0x3f8ba8[_0x7c61('0x1e')][_0x7c61('0x20')]||null:null,'attributes':_0x3f8ba8[_0x7c61('0x1e')]?_0x3f8ba8[_0x7c61('0x1e')]['attributes']||null:null,'limit':_0x3f8ba8[_0x7c61('0x1e')]?_0x3f8ba8['options']['limit']||null:null})[_0x7c61('0x11')](function(_0x55d4de){logger[_0x7c61('0x12')](_0x7c61('0x21'),_0x3f8ba8);logger['debug']('UpdateOpenchannelInteraction',_0x3f8ba8,JSON[_0x7c61('0x16')](_0x55d4de));_0x2c9ee3(_0x55d4de);})[_0x7c61('0x22')](function(_0x4d0d59){logger['error'](_0x7c61('0x21'),_0x4d0d59[_0x7c61('0x19')],_0x3f8ba8);_0x234a7f(_0x4d1bb1[_0x7c61('0x17')](0x1f4,_0x4d0d59[_0x7c61('0x19')]));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x1b11e6){return new Promise(function(_0x130e0e,_0x42b646){return db[_0x7c61('0x1b')][_0x7c61('0x23')]({'where':_0x1b11e6[_0x7c61('0x1e')]?_0x1b11e6[_0x7c61('0x1e')][_0x7c61('0x20')]||null:null})['then'](function(_0x188af2){if(_0x188af2){return _0x188af2['addTags'](_0x1b11e6[_0x7c61('0x1d')][_0x7c61('0x24')],_[_0x7c61('0x25')](_0x1b11e6['body'],[_0x7c61('0x24'),'id'])||{});}})[_0x7c61('0x26')](function(_0x322cfb){logger[_0x7c61('0x12')](_0x7c61('0x27'),_0x1b11e6);logger[_0x7c61('0x15')](_0x7c61('0x27'),_0x1b11e6,JSON[_0x7c61('0x16')](_0x322cfb));_0x130e0e(_0x322cfb);})[_0x7c61('0x22')](function(_0x153134){logger[_0x7c61('0x17')](_0x7c61('0x27'),_0x153134[_0x7c61('0x19')],_0x1b11e6);_0x42b646(_this['error'](0x1f4,_0x153134[_0x7c61('0x19')]));});});};
\ No newline at end of file
+var _0x2523=['where','attributes','limit','catch','AddTagsToOpenchannelInteraction','addTags','omit','ids','spread','AddTags','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./openchannelInteraction.socket','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UpdateOpenchannelInteraction','update','body','options'];(function(_0x133ac5,_0x28cb48){var _0x4701c1=function(_0x3ac9ca){while(--_0x3ac9ca){_0x133ac5['push'](_0x133ac5['shift']());}};_0x4701c1(++_0x28cb48);}(_0x2523,0xb2));var _0x3252=function(_0x426dd2,_0x4b0012){_0x426dd2=_0x426dd2-0x0;var _0x4bc76c=_0x2523[_0x426dd2];return _0x4bc76c;};'use strict';var _=require(_0x3252('0x0'));var util=require(_0x3252('0x1'));var moment=require(_0x3252('0x2'));var BPromise=require('bluebird');var rs=require(_0x3252('0x3'));var fs=require('fs');var Redis=require(_0x3252('0x4'));var db=require(_0x3252('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3252('0x6'))(_0x3252('0x7'));var config=require(_0x3252('0x8'));var jayson=require(_0x3252('0x9'));var client=jayson[_0x3252('0xa')][_0x3252('0xb')]({'port':0x232a});config[_0x3252('0xc')]=_[_0x3252('0xd')](config[_0x3252('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x3252('0xe'))(new Redis(config['redis']));require(_0x3252('0xf'))[_0x3252('0x10')](socket);function respondWithRpcPromise(_0x4df9ee,_0x2485a0,_0x48971f){return new BPromise(function(_0x10651c,_0x3e770b){return client[_0x3252('0x11')](_0x4df9ee,_0x48971f)[_0x3252('0x12')](function(_0x3bfd3c){logger[_0x3252('0x13')](_0x3252('0x14'),_0x2485a0,_0x3252('0x15'));logger[_0x3252('0x16')](_0x3252('0x17'),_0x2485a0,_0x3252('0x15'),JSON[_0x3252('0x18')](_0x3bfd3c));if(_0x3bfd3c[_0x3252('0x19')]){if(_0x3bfd3c[_0x3252('0x19')][_0x3252('0x1a')]===0x1f4){logger['error'](_0x3252('0x14'),_0x2485a0,_0x3bfd3c[_0x3252('0x19')][_0x3252('0x1b')]);return _0x3e770b(_0x3bfd3c[_0x3252('0x19')][_0x3252('0x1b')]);}logger[_0x3252('0x19')]('OpenchannelInteraction,\x20%s,\x20%s',_0x2485a0,_0x3bfd3c[_0x3252('0x19')][_0x3252('0x1b')]);return _0x10651c(_0x3bfd3c[_0x3252('0x19')][_0x3252('0x1b')]);}else{logger[_0x3252('0x13')](_0x3252('0x14'),_0x2485a0,'request\x20sent');_0x10651c(_0x3bfd3c['result'][_0x3252('0x1b')]);}})['catch'](function(_0x1e44d4){logger['error'](_0x3252('0x14'),_0x2485a0,_0x1e44d4);_0x3e770b(_0x1e44d4);});});}exports[_0x3252('0x1c')]=function(_0x108368){var _0x168562=this;return new Promise(function(_0x48f297,_0x167858){return db['OpenchannelInteraction'][_0x3252('0x1d')](_0x108368[_0x3252('0x1e')],{'raw':_0x108368[_0x3252('0x1f')]?_0x108368['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x108368[_0x3252('0x1f')]?_0x108368[_0x3252('0x1f')][_0x3252('0x20')]||null:null,'attributes':_0x108368['options']?_0x108368[_0x3252('0x1f')][_0x3252('0x21')]||null:null,'limit':_0x108368['options']?_0x108368[_0x3252('0x1f')][_0x3252('0x22')]||null:null})[_0x3252('0x12')](function(_0x432c4b){logger[_0x3252('0x13')](_0x3252('0x1c'),_0x108368);logger['debug'](_0x3252('0x1c'),_0x108368,JSON[_0x3252('0x18')](_0x432c4b));_0x48f297(_0x432c4b);})[_0x3252('0x23')](function(_0x3b99ea){logger[_0x3252('0x19')]('UpdateOpenchannelInteraction',_0x3b99ea[_0x3252('0x1b')],_0x108368);_0x167858(_0x168562['error'](0x1f4,_0x3b99ea[_0x3252('0x1b')]));});});};exports[_0x3252('0x24')]=function(_0x2e2f1e){return new Promise(function(_0x2df1f7,_0x29eda3){return db['OpenchannelInteraction']['find']({'where':_0x2e2f1e['options']?_0x2e2f1e[_0x3252('0x1f')][_0x3252('0x20')]||null:null})[_0x3252('0x12')](function(_0x377e16){if(_0x377e16){return _0x377e16[_0x3252('0x25')](_0x2e2f1e['body']['ids'],_[_0x3252('0x26')](_0x2e2f1e[_0x3252('0x1e')],[_0x3252('0x27'),'id'])||{});}})[_0x3252('0x28')](function(_0x4b15ad){logger['info'](_0x3252('0x29'),_0x2e2f1e);logger[_0x3252('0x16')]('AddTags',_0x2e2f1e,JSON[_0x3252('0x18')](_0x4b15ad));_0x2df1f7(_0x4b15ad);})[_0x3252('0x23')](function(_0x1f1bcc){logger[_0x3252('0x19')](_0x3252('0x29'),_0x1f1bcc['message'],_0x2e2f1e);_0x29eda3(_this[_0x3252('0x19')](0x1f4,_0x1f1bcc['message']));});});};
\ No newline at end of file
index 1ee33d8..bbaf62e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd54a=['save','update','emit','removeListener','register','length','openchannelInteraction:'];(function(_0x3b76ae,_0x1f110e){var _0x11ab0f=function(_0x3ebed0){while(--_0x3ebed0){_0x3b76ae['push'](_0x3b76ae['shift']());}};_0x11ab0f(++_0x1f110e);}(_0xd54a,0xe0));var _0xad54=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xd54a[_0x1caf6a];return _0x1bf493;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=[_0xad54('0x0'),'remove',_0xad54('0x1')];function createListener(_0x142474,_0x5aad66){return function(_0x558f94){_0x5aad66[_0xad54('0x2')](_0x142474,_0x558f94);};}function removeListener(_0x28206f,_0x1fce3c){return function(){OpenchannelInteractionEvents[_0xad54('0x3')](_0x28206f,_0x1fce3c);};}exports[_0xad54('0x4')]=function(_0xb19afa){for(var _0x192686=0x0,_0x2abdfb=events[_0xad54('0x5')];_0x192686<_0x2abdfb;_0x192686++){var _0x4e52b4=events[_0x192686];var _0x5e139e=createListener(_0xad54('0x6')+_0x4e52b4,_0xb19afa);OpenchannelInteractionEvents['on'](_0x4e52b4,_0x5e139e);}};
\ No newline at end of file
+var _0x7721=['removeListener','length','openchannelInteraction:','remove','update','emit'];(function(_0x3fe77a,_0x232ed5){var _0x4df437=function(_0x53cb38){while(--_0x53cb38){_0x3fe77a['push'](_0x3fe77a['shift']());}};_0x4df437(++_0x232ed5);}(_0x7721,0x105));var _0x1772=function(_0x19cd07,_0x5ecb18){_0x19cd07=_0x19cd07-0x0;var _0x356d92=_0x7721[_0x19cd07];return _0x356d92;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=['save',_0x1772('0x0'),_0x1772('0x1')];function createListener(_0x596665,_0x4235a0){return function(_0x25848a){_0x4235a0[_0x1772('0x2')](_0x596665,_0x25848a);};}function removeListener(_0x595978,_0x2cb7bf){return function(){OpenchannelInteractionEvents[_0x1772('0x3')](_0x595978,_0x2cb7bf);};}exports['register']=function(_0xb87032){for(var _0x4c5cb3=0x0,_0x27db1f=events[_0x1772('0x4')];_0x4c5cb3<_0x27db1f;_0x4c5cb3++){var _0x113bbe=events[_0x4c5cb3];var _0x44c902=createListener(_0x1772('0x5')+_0x113bbe,_0xb87032);OpenchannelInteractionEvents['on'](_0x113bbe,_0x44c902);}};
\ No newline at end of file
index 661d7f9..cfc0d95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['openchannelmessage:create','put','update','/:id/reject','reject','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','get','index','isAuthenticated','describe','/:id','post','tracked','openchannel'];(function(_0x3ad7ad,_0x291a8d){var _0x225a60=function(_0xca7354){while(--_0xca7354){_0x3ad7ad['push'](_0x3ad7ad['shift']());}};_0x225a60(++_0x291a8d);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3e21f4,_0x43d310){_0x3e21f4=_0x3e21f4-0x0;var _0x40fc49=_0xcb91[_0x3e21f4];return _0x40fc49;};'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');var controller=require(_0x1cb9('0x6'));router[_0x1cb9('0x7')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x7')]('/describe',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x1cb9('0xc')]('/',auth[_0x1cb9('0x9')](),interaction[_0x1cb9('0xd')](_0x1cb9('0xe'),_0x1cb9('0xf')),controller['create']);router[_0x1cb9('0x10')](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x11')]);router[_0x1cb9('0x10')]('/:id/accept',auth['isAuthenticated'](),controller['accept']);router[_0x1cb9('0x10')](_0x1cb9('0x12'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x13')]);router['delete'](_0x1cb9('0xb'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x14')]);module[_0x1cb9('0x15')]=router;
\ No newline at end of file
+var _0xa9e0=['index','/describe','show','post','isAuthenticated','tracked','openchannel','openchannelmessage:create','update','put','/:id/accept','accept','reject','delete','/:id','destroy','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelMessage.controller','get'];(function(_0x4fd8b1,_0x4b3b54){var _0x38a5e0=function(_0xddd359){while(--_0xddd359){_0x4fd8b1['push'](_0x4fd8b1['shift']());}};_0x38a5e0(++_0x4b3b54);}(_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')](),interaction[_0x0a9e('0xe')](_0x0a9e('0xf'),_0x0a9e('0x10')),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0x11')]);router[_0x0a9e('0x12')](_0x0a9e('0x13'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);router[_0x0a9e('0x12')]('/:id/reject',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x15')]);router[_0x0a9e('0x16')](_0x0a9e('0x17'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x18')]);module['exports']=router;
\ No newline at end of file
index a404c6c..37c0f81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fe3=['ENUM','DATE','STRING','sequelize','exports','BOOLEAN'];(function(_0x102f96,_0x2cdfca){var _0x2effea=function(_0x33ac5b){while(--_0x33ac5b){_0x102f96['push'](_0x102f96['shift']());}};_0x2effea(++_0x2cdfca);}(_0x2fe3,0x87));var _0x32fe=function(_0x9af50f,_0x1ee938){_0x9af50f=_0x9af50f-0x0;var _0x5b4863=_0x2fe3[_0x9af50f];return _0x5b4863;};'use strict';var Sequelize=require(_0x32fe('0x0'));module[_0x32fe('0x1')]={'body':{'type':Sequelize['TEXT']('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x32fe('0x2')],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x32fe('0x3')]('in','out'),'defaultValue':'out','allowNull':![]},'readAt':{'type':Sequelize[_0x32fe('0x4')]},'providerName':{'type':Sequelize[_0x32fe('0x5')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x58a4=['DATE','STRING','sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x1bb6fa,_0x2a6e65){var _0x33b129=function(_0x25318b){while(--_0x25318b){_0x1bb6fa['push'](_0x1bb6fa['shift']());}};_0x33b129(++_0x2a6e65);}(_0x58a4,0xbf));var _0x458a=function(_0x51b80a,_0x355fe3){_0x51b80a=_0x51b80a-0x0;var _0x22fdf0=_0x58a4[_0x51b80a];return _0x22fdf0;};'use strict';var Sequelize=require(_0x458a('0x0'));module[_0x458a('0x1')]={'body':{'type':Sequelize[_0x458a('0x2')](_0x458a('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x458a('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0x458a('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0x458a('0x5')]('in',_0x458a('0x6')),'defaultValue':_0x458a('0x6'),'allowNull':![]},'readAt':{'type':Sequelize[_0x458a('0x7')]},'providerName':{'type':Sequelize[_0x458a('0x8')]},'providerResponse':{'type':Sequelize[_0x458a('0x2')]}};
\ No newline at end of file
index 574c295..9569b7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x199c=['stack','name','send','index','map','OpenchannelMessage','fieldName','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','merge','type','options','include','findAll','rows','show','params','includeAll','find','create','body','describe','openchannel-interactions','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','OpenchannelInteraction','OpenchannelInteractionId','isNil','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','stringify','AcceptMessage','acceptMessage','sequelize','Sequelize','QueryTypes','contact','User','fullname','email','internal','manual','interface','channel','event','EventManager','acceptmessage','reject','openchannel','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','SELECT','SIP/%s','motionChannel','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','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','offset','undefined','limit','count','set','Content-Range','save','update','destroy','end'];(function(_0x251d9c,_0x580977){var _0x16ae64=function(_0x4d3b53){while(--_0x4d3b53){_0x251d9c['push'](_0x251d9c['shift']());}};_0x16ae64(++_0x580977);}(_0x199c,0x1d8));var _0xc199=function(_0xa5a54e,_0x43ef3e){_0xa5a54e=_0xa5a54e-0x0;var _0x380532=_0x199c[_0xa5a54e];return _0x380532;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xc199('0x0'));var jsonpatch=require(_0xc199('0x1'));var rp=require(_0xc199('0x2'));var moment=require(_0xc199('0x3'));var BPromise=require(_0xc199('0x4'));var Mustache=require(_0xc199('0x5'));var util=require(_0xc199('0x6'));var path=require(_0xc199('0x7'));var sox=require('sox');var csv=require(_0xc199('0x8'));var ejs=require(_0xc199('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xc199('0xa'));var crypto=require(_0xc199('0xb'));var jsforce=require(_0xc199('0xc'));var deskjs=require(_0xc199('0xd'));var toCsv=require(_0xc199('0x8'));var querystring=require(_0xc199('0xe'));var Papa=require(_0xc199('0xf'));var Redis=require(_0xc199('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xc199('0x11'));var as=require(_0xc199('0x12'));var hardwareService=require(_0xc199('0x13'));var logger=require(_0xc199('0x14'))(_0xc199('0x15'));var utils=require(_0xc199('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xc199('0x17'));var db=require(_0xc199('0x18'))['db'];config[_0xc199('0x19')]=_[_0xc199('0x1a')](config[_0xc199('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xc199('0x1b'))(new Redis(config[_0xc199('0x19')]));require(_0xc199('0x1c'))[_0xc199('0x1d')](socket);var jayson=require(_0xc199('0x1e'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0xc199('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x58d871,_0x3c4736,_0x5a4381,_0x445c65){return new BPromise(function(_0x4f268d,_0x8464ec){var _0xccc7a4=_0x445c65||client;return _0xccc7a4[_0xc199('0x20')](_0x58d871,_0x5a4381)[_0xc199('0x21')](function(_0x34c3cf){logger[_0xc199('0x22')](_0xc199('0x23'),_0x3c4736,_0xc199('0x24'));logger[_0xc199('0x25')](_0xc199('0x26'),_0x3c4736,_0xc199('0x24'),JSON['stringify'](_0x34c3cf));if(_0x34c3cf[_0xc199('0x27')]){if(_0x34c3cf[_0xc199('0x27')][_0xc199('0x28')]===0x1f4){logger[_0xc199('0x27')]('OpenchannelMessage,\x20%s,\x20%s',_0x3c4736,_0x34c3cf[_0xc199('0x27')][_0xc199('0x29')]);return _0x8464ec(_0x34c3cf[_0xc199('0x27')][_0xc199('0x29')]);}logger[_0xc199('0x27')](_0xc199('0x23'),_0x3c4736,_0x34c3cf['error']['message']);return _0x4f268d(_0x34c3cf[_0xc199('0x27')]['message']);}else{logger[_0xc199('0x22')]('OpenchannelMessage,\x20%s,\x20%s',_0x3c4736,_0xc199('0x24'));_0x4f268d(_0x34c3cf[_0xc199('0x2a')]['message']);}})[_0xc199('0x2b')](function(_0x838760){logger['error'](_0xc199('0x23'),_0x3c4736,_0x838760);_0x8464ec(_0x838760);});});}function respondWithStatusCode(_0x548fca,_0x4ec684){_0x4ec684=_0x4ec684||0xcc;return function(_0x3ec230){if(_0x3ec230){return _0x548fca[_0xc199('0x2c')](_0x4ec684);}return _0x548fca[_0xc199('0x2d')](_0x4ec684)['end']();};}function respondWithResult(_0x2ed565,_0x138443){_0x138443=_0x138443||0xc8;return function(_0x5bd0bc){if(_0x5bd0bc){return _0x2ed565[_0xc199('0x2d')](_0x138443)['json'](_0x5bd0bc);}};}function respondWithFilteredResult(_0x12c6c7,_0x588e05){return function(_0x437e9e){if(_0x437e9e){var _0x13e53e=typeof _0x588e05[_0xc199('0x2e')]===_0xc199('0x2f')&&typeof _0x588e05[_0xc199('0x30')]===_0xc199('0x2f');var _0x35aa04=_0x437e9e[_0xc199('0x31')];var _0x57a3e2=_0x13e53e?0x0:_0x588e05[_0xc199('0x2e')];var _0x8d7945=_0x13e53e?_0x437e9e[_0xc199('0x31')]:_0x588e05['offset']+_0x588e05[_0xc199('0x30')];var _0x50f0d3;if(_0x8d7945>=_0x35aa04){_0x8d7945=_0x35aa04;_0x50f0d3=0xc8;}else{_0x50f0d3=0xce;}_0x12c6c7['status'](_0x50f0d3);return _0x12c6c7[_0xc199('0x32')](_0xc199('0x33'),_0x57a3e2+'-'+_0x8d7945+'/'+_0x35aa04)['json'](_0x437e9e);}return null;};}function patchUpdates(_0x1d98b7){return function(_0x5ae421){try{jsonpatch['apply'](_0x5ae421,_0x1d98b7,!![]);}catch(_0x144b6c){return BPromise['reject'](_0x144b6c);}return _0x5ae421[_0xc199('0x34')]();};}function saveUpdates(_0x3b9220,_0x310fcb){return function(_0x778d57){if(_0x778d57){return _0x778d57[_0xc199('0x35')](_0x3b9220)['then'](function(_0x49a37b){return _0x49a37b;});}return null;};}function removeEntity(_0x4b9ab7,_0x218bb1){return function(_0x490e0e){if(_0x490e0e){return _0x490e0e[_0xc199('0x36')]()[_0xc199('0x21')](function(){_0x4b9ab7[_0xc199('0x2d')](0xcc)[_0xc199('0x37')]();});}};}function handleEntityNotFound(_0x2cfdde,_0x1c5b7e){return function(_0x1c5229){if(!_0x1c5229){_0x2cfdde[_0xc199('0x2c')](0x194);}return _0x1c5229;};}function handleError(_0x30f468,_0x1f04c9){_0x1f04c9=_0x1f04c9||0x1f4;return function(_0x4b90e1){logger['error'](_0x4b90e1[_0xc199('0x38')]);if(_0x4b90e1[_0xc199('0x39')]){delete _0x4b90e1[_0xc199('0x39')];}_0x30f468[_0xc199('0x2d')](_0x1f04c9)[_0xc199('0x3a')](_0x4b90e1);};}exports[_0xc199('0x3b')]=function(_0x3966d0,_0x2d71a3){var _0x539fdc={},_0x552467={},_0x5afc6a={'count':0x0,'rows':[]};var _0x2e50a1=_[_0xc199('0x3c')](db[_0xc199('0x3d')]['rawAttributes'],function(_0x190877){return{'name':_0x190877[_0xc199('0x3e')],'type':_0x190877['type'][_0xc199('0x3f')]};});_0x552467[_0xc199('0x40')]=_[_0xc199('0x3c')](_0x2e50a1,_0xc199('0x39'));_0x552467['query']=_[_0xc199('0x41')](_0x3966d0[_0xc199('0x42')]);_0x552467[_0xc199('0x43')]=_[_0xc199('0x44')](_0x552467[_0xc199('0x40')],_0x552467[_0xc199('0x42')]);_0x539fdc[_0xc199('0x45')]=_['intersection'](_0x552467['model'],qs['fields'](_0x3966d0[_0xc199('0x42')][_0xc199('0x46')]));_0x539fdc[_0xc199('0x45')]=_0x539fdc[_0xc199('0x45')][_0xc199('0x47')]?_0x539fdc['attributes']:_0x552467['model'];if(!_0x3966d0[_0xc199('0x42')][_0xc199('0x48')]('nolimit')){_0x539fdc['limit']=qs[_0xc199('0x30')](_0x3966d0[_0xc199('0x42')]['limit']);_0x539fdc[_0xc199('0x2e')]=qs[_0xc199('0x2e')](_0x3966d0['query'][_0xc199('0x2e')]);}_0x539fdc[_0xc199('0x49')]=qs[_0xc199('0x4a')](_0x3966d0['query'][_0xc199('0x4a')]);_0x539fdc[_0xc199('0x4b')]=qs[_0xc199('0x43')](_['pick'](_0x3966d0[_0xc199('0x42')],_0x552467[_0xc199('0x43')]),_0x2e50a1);if(_0x3966d0[_0xc199('0x42')]['filter']){_0x539fdc[_0xc199('0x4b')]=_[_0xc199('0x4c')](_0x539fdc['where'],{'$or':_[_0xc199('0x3c')](_0x2e50a1,function(_0x450ce5){if(_0x450ce5[_0xc199('0x4d')]!=='VIRTUAL'){var _0x5cf201={};_0x5cf201[_0x450ce5[_0xc199('0x39')]]={'$like':'%'+_0x3966d0[_0xc199('0x42')]['filter']+'%'};return _0x5cf201;}})});}_0x539fdc=_[_0xc199('0x4c')]({},_0x539fdc,_0x3966d0[_0xc199('0x4e')]);var _0x4e987f={'where':_0x539fdc[_0xc199('0x4b')]};return db[_0xc199('0x3d')]['count'](_0x4e987f)[_0xc199('0x21')](function(_0xd845f7){_0x5afc6a[_0xc199('0x31')]=_0xd845f7;if(_0x3966d0[_0xc199('0x42')]['includeAll']){_0x539fdc[_0xc199('0x4f')]=[{'all':!![]}];}return db[_0xc199('0x3d')][_0xc199('0x50')](_0x539fdc);})[_0xc199('0x21')](function(_0x53786b){_0x5afc6a[_0xc199('0x51')]=_0x53786b;return _0x5afc6a;})['then'](respondWithFilteredResult(_0x2d71a3,_0x539fdc))['catch'](handleError(_0x2d71a3,null));};exports[_0xc199('0x52')]=function(_0xdfcf6a,_0x196fda){var _0x221905={'raw':!![],'where':{'id':_0xdfcf6a[_0xc199('0x53')]['id']}},_0x2d0e62={};_0x2d0e62[_0xc199('0x40')]=_[_0xc199('0x41')](db['OpenchannelMessage']['rawAttributes']);_0x2d0e62[_0xc199('0x42')]=_[_0xc199('0x41')](_0xdfcf6a[_0xc199('0x42')]);_0x2d0e62[_0xc199('0x43')]=_[_0xc199('0x44')](_0x2d0e62[_0xc199('0x40')],_0x2d0e62[_0xc199('0x42')]);_0x221905[_0xc199('0x45')]=_[_0xc199('0x44')](_0x2d0e62[_0xc199('0x40')],qs[_0xc199('0x46')](_0xdfcf6a[_0xc199('0x42')][_0xc199('0x46')]));_0x221905[_0xc199('0x45')]=_0x221905[_0xc199('0x45')][_0xc199('0x47')]?_0x221905[_0xc199('0x45')]:_0x2d0e62[_0xc199('0x40')];if(_0xdfcf6a[_0xc199('0x42')][_0xc199('0x54')]){_0x221905['include']=[{'all':!![]}];}_0x221905=_[_0xc199('0x4c')]({},_0x221905,_0xdfcf6a['options']);return db[_0xc199('0x3d')][_0xc199('0x55')](_0x221905)['then'](handleEntityNotFound(_0x196fda,null))[_0xc199('0x21')](respondWithResult(_0x196fda,null))[_0xc199('0x2b')](handleError(_0x196fda,null));};exports['create']=function(_0x22da9c,_0x14a94){return db[_0xc199('0x3d')][_0xc199('0x56')](_0x22da9c['body'],{})[_0xc199('0x21')](respondWithResult(_0x14a94,0xc9))[_0xc199('0x2b')](handleError(_0x14a94,null));};exports[_0xc199('0x35')]=function(_0x4cd202,_0x556549){if(_0x4cd202['body']['id']){delete _0x4cd202['body']['id'];}return db[_0xc199('0x3d')][_0xc199('0x55')]({'where':{'id':_0x4cd202[_0xc199('0x53')]['id']}})[_0xc199('0x21')](handleEntityNotFound(_0x556549,null))['then'](saveUpdates(_0x4cd202[_0xc199('0x57')],null))[_0xc199('0x21')](respondWithResult(_0x556549,null))[_0xc199('0x2b')](handleError(_0x556549,null));};exports[_0xc199('0x36')]=function(_0x5e856e,_0xed11fc){return db[_0xc199('0x3d')][_0xc199('0x55')]({'where':{'id':_0x5e856e[_0xc199('0x53')]['id']}})[_0xc199('0x21')](handleEntityNotFound(_0xed11fc,null))['then'](removeEntity(_0xed11fc,null))['catch'](handleError(_0xed11fc,null));};exports[_0xc199('0x58')]=function(_0x153509,_0x8512f6){return db[_0xc199('0x3d')][_0xc199('0x58')]()[_0xc199('0x21')](respondWithResult(_0x8512f6,null))[_0xc199('0x2b')](handleError(_0x8512f6,null));};var interaction_log=require(_0xc199('0x14'))(_0xc199('0x59'));exports[_0xc199('0x5a')]=function(_0x5c1fd5,_0x56ad5c,_0xcc9488){var _0x5f19b3={'agent':{},'channel':'openchannel'};if(_0x5c1fd5['body']['id']){delete _0x5c1fd5[_0xc199('0x57')]['id'];}_0x5c1fd5[_0xc199('0x57')][_0xc199('0x5b')]=!![];_0x5c1fd5['body'][_0xc199('0x5c')]=moment()[_0xc199('0x5d')](_0xc199('0x5e'));_0x5c1fd5[_0xc199('0x57')][_0xc199('0x5f')]=_0x5c1fd5['body'][_0xc199('0x5f')]||_0x5c1fd5[_0xc199('0x60')]['id'];_0x5f19b3[_0xc199('0x61')]['id']=_0x5c1fd5[_0xc199('0x57')][_0xc199('0x5f')];return db[_0xc199('0x3d')]['find']({'where':{'id':_0x5c1fd5['params']['id'],'UserId':null}})[_0xc199('0x21')](handleEntityNotFound(_0x56ad5c,null))['then'](saveUpdates(_0x5c1fd5[_0xc199('0x57')],null))[_0xc199('0x21')](function(_0x1e1b29){if(_0x1e1b29){_0x5f19b3[_0xc199('0x29')]=_0x1e1b29[_0xc199('0x62')]({'plain':!![]});return db[_0xc199('0x63')][_0xc199('0x55')]({'where':{'id':_0x1e1b29[_0xc199('0x64')]}});}return null;})[_0xc199('0x21')](handleEntityNotFound(_0x56ad5c,null))[_0xc199('0x21')](function(_0x5a9900){if(_0x5a9900){return _0x5a9900[_0xc199('0x35')]({'UserId':_0x5c1fd5['body'][_0xc199('0x5f')],'read1stAt':_[_0xc199('0x65')](_0x5a9900['read1stAt'])?moment()[_0xc199('0x5d')](_0xc199('0x5e')):undefined});}return null;})['then'](function(_0x5c32d5){if(_0x5c32d5){_0x5f19b3['interaction']=_0x5c32d5['get']({'plain':!![]});interaction_log['info'](_0xc199('0x66'),_0x5c1fd5[_0xc199('0x60')]['id'],_0x5c1fd5[_0xc199('0x60')][_0xc199('0x39')],_0x5c1fd5[_0xc199('0x60')][_0xc199('0x67')],_0x5f19b3[_0xc199('0x68')]['id'],_0x5c1fd5['body']?JSON[_0xc199('0x69')](_0x5c1fd5[_0xc199('0x57')]):'null');return respondWithRpcPromise(_0xc199('0x6a'),_0xc199('0x6b'),_0x5f19b3);}return null;})[_0xc199('0x21')](function(_0x1d56ac){var _0x416d51='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x1d56ac[_0xc199('0x29')]['ContactId'];return db[_0xc199('0x6c')]['query'](_0x416d51,{'type':db[_0xc199('0x6d')][_0xc199('0x6e')]['SELECT'],'raw':!![]})[_0xc199('0x21')](function(_0x2ce9a4){return _0x2ce9a4;});})['then'](function(_0x23cdb2){if(_0x23cdb2){_0x5f19b3['message'][_0xc199('0x6f')]=_0x23cdb2[0x0];if(!_0x5c1fd5['body'][_0xc199('0x5f')])return;return db[_0xc199('0x70')]['find']({'where':{'id':_0x5c1fd5[_0xc199('0x57')]['UserId'],'role':'agent'},'attributes':['id',_0xc199('0x39'),_0xc199('0x71'),_0xc199('0x72'),_0xc199('0x73')],'raw':!![]});}return null;})[_0xc199('0x21')](function(_0x57ef7e){if(!_0x57ef7e)return null;_0x5f19b3[_0xc199('0x29')][_0xc199('0x61')]=_0x57ef7e;return _0x5f19b3;})[_0xc199('0x21')](function(_0x24930b){if(_0x24930b){if(_0x5c1fd5[_0xc199('0x57')][_0xc199('0x74')]){_0x5f19b3[_0xc199('0x29')][_0xc199('0x75')]=util[_0xc199('0x5d')]('SIP/%s',_0x5c1fd5[_0xc199('0x60')]['name']);_0x5f19b3[_0xc199('0x29')][_0xc199('0x76')]=_0x5f19b3['channel'];_0x5f19b3['message']['motionChannel']=_0x5f19b3[_0xc199('0x76')];_0x5f19b3['message'][_0xc199('0x77')]=_0xc199('0x5a');return respondWithRpcPromise(_0xc199('0x78'),_0xc199('0x78'),{'event':_0xc199('0x79'),'message':_0x5f19b3[_0xc199('0x29')]},client9002)['then'](function(){return _0x5f19b3;});}return _0x5f19b3;}return null;})[_0xc199('0x21')](respondWithResult(_0x56ad5c,null))[_0xc199('0x2b')](handleError(_0x56ad5c,null));};var interaction_log=require(_0xc199('0x14'))(_0xc199('0x59'));exports[_0xc199('0x7a')]=function(_0x2cc9ad,_0x3c3d1c,_0x2a8d2a){var _0x2fda54={'agent':{},'channel':_0xc199('0x7b')};if(_0x2cc9ad['body']['id']){delete _0x2cc9ad[_0xc199('0x57')]['id'];}_0x2cc9ad['body'][_0xc199('0x5f')]=_0x2cc9ad['body']['UserId']||_0x2cc9ad[_0xc199('0x60')]['id'];_0x2fda54['agent']['id']=_0x2cc9ad[_0xc199('0x57')]['UserId'];return db['OpenchannelMessage'][_0xc199('0x55')]({'where':{'id':_0x2cc9ad['params']['id'],'UserId':null}})[_0xc199('0x21')](handleEntityNotFound(_0x3c3d1c,null))['then'](function(_0x1224b8){if(_0x1224b8){_0x2fda54[_0xc199('0x29')]=_0x1224b8[_0xc199('0x62')]({'plain':!![]});return db[_0xc199('0x63')][_0xc199('0x55')]({'where':{'id':_0x1224b8[_0xc199('0x64')]}});}return null;})[_0xc199('0x21')](handleEntityNotFound(_0x3c3d1c,null))[_0xc199('0x21')](function(_0x453799){if(_0x453799){_0x2fda54[_0xc199('0x68')]=_0x453799['get']({'plain':!![]});interaction_log[_0xc199('0x22')](_0xc199('0x7c'),_0x2cc9ad[_0xc199('0x60')]['id'],_0x2cc9ad[_0xc199('0x60')][_0xc199('0x39')],_0x2cc9ad['user'][_0xc199('0x67')],_0x2fda54[_0xc199('0x68')]['id'],_0x2cc9ad[_0xc199('0x57')]?JSON[_0xc199('0x69')](_0x2cc9ad['body']):_0xc199('0x7d'));return respondWithRpcPromise(_0xc199('0x7e'),'rejectMessage',_0x2fda54);}return null;})[_0xc199('0x21')](function(_0x24c877){var _0x1ae95d=_0xc199('0x7f')+_0x24c877[_0xc199('0x29')][_0xc199('0x80')];return db['sequelize'][_0xc199('0x42')](_0x1ae95d,{'type':db[_0xc199('0x6d')]['QueryTypes'][_0xc199('0x81')],'raw':!![]})[_0xc199('0x21')](function(_0x52bfd1){return _0x52bfd1;});})['then'](function(_0x1201e7){if(_0x1201e7){_0x2fda54[_0xc199('0x29')][_0xc199('0x6f')]=_0x1201e7[0x0];if(!_0x2cc9ad[_0xc199('0x57')][_0xc199('0x5f')])return;return db[_0xc199('0x70')][_0xc199('0x55')]({'where':{'id':_0x2cc9ad[_0xc199('0x57')][_0xc199('0x5f')],'role':_0xc199('0x61')},'attributes':['id',_0xc199('0x39'),_0xc199('0x71'),_0xc199('0x72'),_0xc199('0x73')],'raw':!![]});}return null;})[_0xc199('0x21')](function(_0x25bc1e){if(!_0x25bc1e)return null;_0x2fda54[_0xc199('0x29')][_0xc199('0x61')]=_0x25bc1e;return _0x2fda54;})['then'](function(_0x3e4a2a){if(_0x3e4a2a){_0x3e4a2a[_0xc199('0x29')]['interface']=util['format'](_0xc199('0x82'),_0x2cc9ad[_0xc199('0x60')][_0xc199('0x39')]);_0x3e4a2a[_0xc199('0x29')][_0xc199('0x76')]=_0x2fda54[_0xc199('0x76')];_0x3e4a2a['message'][_0xc199('0x83')]=_0x2fda54[_0xc199('0x76')];_0x3e4a2a[_0xc199('0x29')][_0xc199('0x77')]='reject';respondWithRpcPromise(_0xc199('0x78'),_0xc199('0x78'),{'event':'rejectmessage','message':_0x3e4a2a[_0xc199('0x29')]},client9002);return _0x2fda54;}return null;})[_0xc199('0x21')](respondWithResult(_0x3c3d1c,null))[_0xc199('0x2b')](handleError(_0x3c3d1c,null));};
\ No newline at end of file
+var _0x8fcb=['hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','OpenchannelMessage','includeAll','include','findAll','rows','params','keys','length','find','create','body','destroy','describe','openchannel-interactions','accept','openchannel','read','readAt','UserId','user','agent','get','OpenchannelInteraction','read1stAt','format','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','contact','fullname','internal','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','OpenchannelInteractionId','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','Sequelize','email','motionChannel','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','defaults','redis','localhost','./openchannelMessage.socket','register','client','http','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','end','status','json','offset','limit','undefined','count','set','apply','reject','update','stack','name','send','map','rawAttributes','fieldName','type','query','filters','intersection','model','fields','attributes'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x8fcb,0xbe));var _0xb8fc=function(_0x29eb57,_0x1bcfc3){_0x29eb57=_0x29eb57-0x0;var _0x2d711f=_0x8fcb[_0x29eb57];return _0x2d711f;};'use strict';var emlformat=require(_0xb8fc('0x0'));var rimraf=require(_0xb8fc('0x1'));var zipdir=require(_0xb8fc('0x2'));var jsonpatch=require(_0xb8fc('0x3'));var rp=require(_0xb8fc('0x4'));var moment=require(_0xb8fc('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb8fc('0x6'));var path=require('path');var sox=require(_0xb8fc('0x7'));var csv=require(_0xb8fc('0x8'));var ejs=require(_0xb8fc('0x9'));var fs=require('fs');var fs_extra=require(_0xb8fc('0xa'));var _=require(_0xb8fc('0xb'));var squel=require(_0xb8fc('0xc'));var crypto=require(_0xb8fc('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xb8fc('0xe'));var toCsv=require(_0xb8fc('0x8'));var querystring=require('querystring');var Papa=require(_0xb8fc('0xf'));var Redis=require(_0xb8fc('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xb8fc('0x11'));var as=require(_0xb8fc('0x12'));var hardwareService=require(_0xb8fc('0x13'));var logger=require(_0xb8fc('0x14'))(_0xb8fc('0x15'));var utils=require('../../config/utils');var config=require(_0xb8fc('0x16'));var licenseUtil=require(_0xb8fc('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xb8fc('0x18')](config[_0xb8fc('0x19')],{'host':_0xb8fc('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb8fc('0x19')]));require(_0xb8fc('0x1b'))[_0xb8fc('0x1c')](socket);var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0xb8fc('0x1d')][_0xb8fc('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x37d675,_0x1066a9,_0x1efbd3,_0x40721e){return new BPromise(function(_0x36ae7b,_0x680a41){var _0x546c02=_0x40721e||client;return _0x546c02['request'](_0x37d675,_0x1efbd3)[_0xb8fc('0x1f')](function(_0x2b17b8){logger['info'](_0xb8fc('0x20'),_0x1066a9,_0xb8fc('0x21'));logger[_0xb8fc('0x22')](_0xb8fc('0x23'),_0x1066a9,_0xb8fc('0x21'),JSON[_0xb8fc('0x24')](_0x2b17b8));if(_0x2b17b8[_0xb8fc('0x25')]){if(_0x2b17b8[_0xb8fc('0x25')][_0xb8fc('0x26')]===0x1f4){logger[_0xb8fc('0x25')](_0xb8fc('0x20'),_0x1066a9,_0x2b17b8[_0xb8fc('0x25')][_0xb8fc('0x27')]);return _0x680a41(_0x2b17b8['error']['message']);}logger[_0xb8fc('0x25')](_0xb8fc('0x20'),_0x1066a9,_0x2b17b8['error']['message']);return _0x36ae7b(_0x2b17b8[_0xb8fc('0x25')]['message']);}else{logger[_0xb8fc('0x28')](_0xb8fc('0x20'),_0x1066a9,_0xb8fc('0x21'));_0x36ae7b(_0x2b17b8[_0xb8fc('0x29')][_0xb8fc('0x27')]);}})[_0xb8fc('0x2a')](function(_0x3e859b){logger[_0xb8fc('0x25')](_0xb8fc('0x20'),_0x1066a9,_0x3e859b);_0x680a41(_0x3e859b);});});}function respondWithStatusCode(_0x6ce9a3,_0x4b9fa2){_0x4b9fa2=_0x4b9fa2||0xcc;return function(_0x173856){if(_0x173856){return _0x6ce9a3[_0xb8fc('0x2b')](_0x4b9fa2);}return _0x6ce9a3['status'](_0x4b9fa2)[_0xb8fc('0x2c')]();};}function respondWithResult(_0x47e48b,_0x26bc63){_0x26bc63=_0x26bc63||0xc8;return function(_0x3e0975){if(_0x3e0975){return _0x47e48b[_0xb8fc('0x2d')](_0x26bc63)[_0xb8fc('0x2e')](_0x3e0975);}};}function respondWithFilteredResult(_0x534145,_0x8115a3){return function(_0x44abad){if(_0x44abad){var _0x455292=typeof _0x8115a3[_0xb8fc('0x2f')]==='undefined'&&typeof _0x8115a3[_0xb8fc('0x30')]===_0xb8fc('0x31');var _0x194f97=_0x44abad[_0xb8fc('0x32')];var _0xb7ae61=_0x455292?0x0:_0x8115a3[_0xb8fc('0x2f')];var _0x4dcc55=_0x455292?_0x44abad['count']:_0x8115a3[_0xb8fc('0x2f')]+_0x8115a3[_0xb8fc('0x30')];var _0x33f6b1;if(_0x4dcc55>=_0x194f97){_0x4dcc55=_0x194f97;_0x33f6b1=0xc8;}else{_0x33f6b1=0xce;}_0x534145[_0xb8fc('0x2d')](_0x33f6b1);return _0x534145[_0xb8fc('0x33')]('Content-Range',_0xb7ae61+'-'+_0x4dcc55+'/'+_0x194f97)[_0xb8fc('0x2e')](_0x44abad);}return null;};}function patchUpdates(_0x4eb411){return function(_0x5a3d1f){try{jsonpatch[_0xb8fc('0x34')](_0x5a3d1f,_0x4eb411,!![]);}catch(_0x5e54ec){return BPromise[_0xb8fc('0x35')](_0x5e54ec);}return _0x5a3d1f['save']();};}function saveUpdates(_0x2c3849,_0x29b45e){return function(_0x58d49a){if(_0x58d49a){return _0x58d49a[_0xb8fc('0x36')](_0x2c3849)[_0xb8fc('0x1f')](function(_0x1cc819){return _0x1cc819;});}return null;};}function removeEntity(_0x212ea6,_0x25e48c){return function(_0x1d4ad3){if(_0x1d4ad3){return _0x1d4ad3['destroy']()[_0xb8fc('0x1f')](function(){_0x212ea6[_0xb8fc('0x2d')](0xcc)[_0xb8fc('0x2c')]();});}};}function handleEntityNotFound(_0x1053d9,_0x25cc6d){return function(_0xc4b2f4){if(!_0xc4b2f4){_0x1053d9[_0xb8fc('0x2b')](0x194);}return _0xc4b2f4;};}function handleError(_0x50ca4a,_0x4dd479){_0x4dd479=_0x4dd479||0x1f4;return function(_0x5789df){logger['error'](_0x5789df[_0xb8fc('0x37')]);if(_0x5789df[_0xb8fc('0x38')]){delete _0x5789df[_0xb8fc('0x38')];}_0x50ca4a[_0xb8fc('0x2d')](_0x4dd479)[_0xb8fc('0x39')](_0x5789df);};}exports['index']=function(_0x268304,_0x308ae9){var _0x21d5db={},_0x202cc5={},_0x5e9be9={'count':0x0,'rows':[]};var _0x2990de=_[_0xb8fc('0x3a')](db['OpenchannelMessage'][_0xb8fc('0x3b')],function(_0x744b6){return{'name':_0x744b6[_0xb8fc('0x3c')],'type':_0x744b6[_0xb8fc('0x3d')]['key']};});_0x202cc5['model']=_['map'](_0x2990de,_0xb8fc('0x38'));_0x202cc5['query']=_['keys'](_0x268304[_0xb8fc('0x3e')]);_0x202cc5[_0xb8fc('0x3f')]=_['intersection'](_0x202cc5['model'],_0x202cc5['query']);_0x21d5db['attributes']=_[_0xb8fc('0x40')](_0x202cc5[_0xb8fc('0x41')],qs['fields'](_0x268304['query'][_0xb8fc('0x42')]));_0x21d5db[_0xb8fc('0x43')]=_0x21d5db[_0xb8fc('0x43')]['length']?_0x21d5db[_0xb8fc('0x43')]:_0x202cc5[_0xb8fc('0x41')];if(!_0x268304[_0xb8fc('0x3e')][_0xb8fc('0x44')](_0xb8fc('0x45'))){_0x21d5db['limit']=qs[_0xb8fc('0x30')](_0x268304['query'][_0xb8fc('0x30')]);_0x21d5db[_0xb8fc('0x2f')]=qs[_0xb8fc('0x2f')](_0x268304[_0xb8fc('0x3e')][_0xb8fc('0x2f')]);}_0x21d5db[_0xb8fc('0x46')]=qs[_0xb8fc('0x47')](_0x268304['query'][_0xb8fc('0x47')]);_0x21d5db[_0xb8fc('0x48')]=qs[_0xb8fc('0x3f')](_[_0xb8fc('0x49')](_0x268304[_0xb8fc('0x3e')],_0x202cc5['filters']),_0x2990de);if(_0x268304['query'][_0xb8fc('0x4a')]){_0x21d5db[_0xb8fc('0x48')]=_[_0xb8fc('0x4b')](_0x21d5db['where'],{'$or':_[_0xb8fc('0x3a')](_0x2990de,function(_0x326004){if(_0x326004[_0xb8fc('0x3d')]!=='VIRTUAL'){var _0x1f912c={};_0x1f912c[_0x326004[_0xb8fc('0x38')]]={'$like':'%'+_0x268304['query'][_0xb8fc('0x4a')]+'%'};return _0x1f912c;}})});}_0x21d5db=_[_0xb8fc('0x4b')]({},_0x21d5db,_0x268304[_0xb8fc('0x4c')]);var _0x3dba5d={'where':_0x21d5db[_0xb8fc('0x48')]};return db[_0xb8fc('0x4d')][_0xb8fc('0x32')](_0x3dba5d)[_0xb8fc('0x1f')](function(_0x429246){_0x5e9be9[_0xb8fc('0x32')]=_0x429246;if(_0x268304[_0xb8fc('0x3e')][_0xb8fc('0x4e')]){_0x21d5db[_0xb8fc('0x4f')]=[{'all':!![]}];}return db['OpenchannelMessage'][_0xb8fc('0x50')](_0x21d5db);})[_0xb8fc('0x1f')](function(_0x22a940){_0x5e9be9[_0xb8fc('0x51')]=_0x22a940;return _0x5e9be9;})[_0xb8fc('0x1f')](respondWithFilteredResult(_0x308ae9,_0x21d5db))[_0xb8fc('0x2a')](handleError(_0x308ae9,null));};exports['show']=function(_0x5e2070,_0x27f77a){var _0x399158={'raw':!![],'where':{'id':_0x5e2070[_0xb8fc('0x52')]['id']}},_0x86ff55={};_0x86ff55[_0xb8fc('0x41')]=_[_0xb8fc('0x53')](db[_0xb8fc('0x4d')][_0xb8fc('0x3b')]);_0x86ff55[_0xb8fc('0x3e')]=_[_0xb8fc('0x53')](_0x5e2070[_0xb8fc('0x3e')]);_0x86ff55[_0xb8fc('0x3f')]=_[_0xb8fc('0x40')](_0x86ff55['model'],_0x86ff55[_0xb8fc('0x3e')]);_0x399158[_0xb8fc('0x43')]=_[_0xb8fc('0x40')](_0x86ff55['model'],qs[_0xb8fc('0x42')](_0x5e2070[_0xb8fc('0x3e')][_0xb8fc('0x42')]));_0x399158[_0xb8fc('0x43')]=_0x399158[_0xb8fc('0x43')][_0xb8fc('0x54')]?_0x399158['attributes']:_0x86ff55[_0xb8fc('0x41')];if(_0x5e2070[_0xb8fc('0x3e')][_0xb8fc('0x4e')]){_0x399158[_0xb8fc('0x4f')]=[{'all':!![]}];}_0x399158=_[_0xb8fc('0x4b')]({},_0x399158,_0x5e2070[_0xb8fc('0x4c')]);return db[_0xb8fc('0x4d')][_0xb8fc('0x55')](_0x399158)[_0xb8fc('0x1f')](handleEntityNotFound(_0x27f77a,null))['then'](respondWithResult(_0x27f77a,null))[_0xb8fc('0x2a')](handleError(_0x27f77a,null));};exports[_0xb8fc('0x56')]=function(_0x41eebb,_0x5e622c){return db[_0xb8fc('0x4d')][_0xb8fc('0x56')](_0x41eebb['body'],{})[_0xb8fc('0x1f')](respondWithResult(_0x5e622c,0xc9))[_0xb8fc('0x2a')](handleError(_0x5e622c,null));};exports['update']=function(_0x1e33b9,_0x5114af){if(_0x1e33b9[_0xb8fc('0x57')]['id']){delete _0x1e33b9['body']['id'];}return db[_0xb8fc('0x4d')][_0xb8fc('0x55')]({'where':{'id':_0x1e33b9['params']['id']}})[_0xb8fc('0x1f')](handleEntityNotFound(_0x5114af,null))[_0xb8fc('0x1f')](saveUpdates(_0x1e33b9[_0xb8fc('0x57')],null))[_0xb8fc('0x1f')](respondWithResult(_0x5114af,null))[_0xb8fc('0x2a')](handleError(_0x5114af,null));};exports[_0xb8fc('0x58')]=function(_0x3d954d,_0x38b490){return db['OpenchannelMessage'][_0xb8fc('0x55')]({'where':{'id':_0x3d954d[_0xb8fc('0x52')]['id']}})[_0xb8fc('0x1f')](handleEntityNotFound(_0x38b490,null))[_0xb8fc('0x1f')](removeEntity(_0x38b490,null))['catch'](handleError(_0x38b490,null));};exports[_0xb8fc('0x59')]=function(_0x27cfc4,_0x5c899f){return db[_0xb8fc('0x4d')][_0xb8fc('0x59')]()['then'](respondWithResult(_0x5c899f,null))[_0xb8fc('0x2a')](handleError(_0x5c899f,null));};var interaction_log=require('../../config/logger')(_0xb8fc('0x5a'));exports[_0xb8fc('0x5b')]=function(_0xeb3cf,_0x57c47c,_0x436564){var _0x433d98={'agent':{},'channel':_0xb8fc('0x5c')};if(_0xeb3cf[_0xb8fc('0x57')]['id']){delete _0xeb3cf[_0xb8fc('0x57')]['id'];}_0xeb3cf['body'][_0xb8fc('0x5d')]=!![];_0xeb3cf[_0xb8fc('0x57')][_0xb8fc('0x5e')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0xeb3cf['body']['UserId']=_0xeb3cf[_0xb8fc('0x57')][_0xb8fc('0x5f')]||_0xeb3cf[_0xb8fc('0x60')]['id'];_0x433d98[_0xb8fc('0x61')]['id']=_0xeb3cf['body'][_0xb8fc('0x5f')];return db[_0xb8fc('0x4d')]['find']({'where':{'id':_0xeb3cf[_0xb8fc('0x52')]['id'],'UserId':null}})[_0xb8fc('0x1f')](handleEntityNotFound(_0x57c47c,null))['then'](saveUpdates(_0xeb3cf['body'],null))[_0xb8fc('0x1f')](function(_0x2c19a5){if(_0x2c19a5){_0x433d98[_0xb8fc('0x27')]=_0x2c19a5[_0xb8fc('0x62')]({'plain':!![]});return db[_0xb8fc('0x63')][_0xb8fc('0x55')]({'where':{'id':_0x2c19a5['OpenchannelInteractionId']}});}return null;})[_0xb8fc('0x1f')](handleEntityNotFound(_0x57c47c,null))[_0xb8fc('0x1f')](function(_0x364140){if(_0x364140){return _0x364140[_0xb8fc('0x36')]({'UserId':_0xeb3cf[_0xb8fc('0x57')][_0xb8fc('0x5f')],'read1stAt':_['isNil'](_0x364140[_0xb8fc('0x64')])?moment()[_0xb8fc('0x65')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xb8fc('0x1f')](function(_0x5c5795){if(_0x5c5795){_0x433d98[_0xb8fc('0x66')]=_0x5c5795[_0xb8fc('0x62')]({'plain':!![]});interaction_log[_0xb8fc('0x28')](_0xb8fc('0x67'),_0xeb3cf[_0xb8fc('0x60')]['id'],_0xeb3cf[_0xb8fc('0x60')][_0xb8fc('0x38')],_0xeb3cf[_0xb8fc('0x60')][_0xb8fc('0x68')],_0x433d98[_0xb8fc('0x66')]['id'],_0xeb3cf[_0xb8fc('0x57')]?JSON[_0xb8fc('0x24')](_0xeb3cf[_0xb8fc('0x57')]):'null');return respondWithRpcPromise(_0xb8fc('0x69'),_0xb8fc('0x6a'),_0x433d98);}return null;})[_0xb8fc('0x1f')](function(_0x548d7d){var _0x5c0568=_0xb8fc('0x6b')+_0x548d7d[_0xb8fc('0x27')][_0xb8fc('0x6c')];return db[_0xb8fc('0x6d')][_0xb8fc('0x3e')](_0x5c0568,{'type':db['Sequelize'][_0xb8fc('0x6e')][_0xb8fc('0x6f')],'raw':!![]})[_0xb8fc('0x1f')](function(_0x3ac6bf){return _0x3ac6bf;});})[_0xb8fc('0x1f')](function(_0x338a15){if(_0x338a15){_0x433d98[_0xb8fc('0x27')][_0xb8fc('0x70')]=_0x338a15[0x0];if(!_0xeb3cf[_0xb8fc('0x57')]['UserId'])return;return db['User'][_0xb8fc('0x55')]({'where':{'id':_0xeb3cf[_0xb8fc('0x57')][_0xb8fc('0x5f')],'role':_0xb8fc('0x61')},'attributes':['id',_0xb8fc('0x38'),_0xb8fc('0x71'),'email',_0xb8fc('0x72')],'raw':!![]});}return null;})[_0xb8fc('0x1f')](function(_0x409185){if(!_0x409185)return null;_0x433d98['message']['agent']=_0x409185;return _0x433d98;})['then'](function(_0x14ba30){if(_0x14ba30){if(_0xeb3cf['body'][_0xb8fc('0x73')]){_0x433d98[_0xb8fc('0x27')][_0xb8fc('0x74')]=util[_0xb8fc('0x65')](_0xb8fc('0x75'),_0xeb3cf['user'][_0xb8fc('0x38')]);_0x433d98[_0xb8fc('0x27')][_0xb8fc('0x76')]=_0x433d98[_0xb8fc('0x76')];_0x433d98[_0xb8fc('0x27')]['motionChannel']=_0x433d98[_0xb8fc('0x76')];_0x433d98[_0xb8fc('0x27')][_0xb8fc('0x77')]=_0xb8fc('0x5b');return respondWithRpcPromise(_0xb8fc('0x78'),_0xb8fc('0x78'),{'event':_0xb8fc('0x79'),'message':_0x433d98[_0xb8fc('0x27')]},client9002)[_0xb8fc('0x1f')](function(){return _0x433d98;});}return _0x433d98;}return null;})[_0xb8fc('0x1f')](respondWithResult(_0x57c47c,null))[_0xb8fc('0x2a')](handleError(_0x57c47c,null));};var interaction_log=require(_0xb8fc('0x14'))(_0xb8fc('0x5a'));exports[_0xb8fc('0x35')]=function(_0x22acda,_0x4c2c1f,_0x474e7b){var _0xb923da={'agent':{},'channel':_0xb8fc('0x5c')};if(_0x22acda[_0xb8fc('0x57')]['id']){delete _0x22acda[_0xb8fc('0x57')]['id'];}_0x22acda[_0xb8fc('0x57')][_0xb8fc('0x5f')]=_0x22acda['body'][_0xb8fc('0x5f')]||_0x22acda[_0xb8fc('0x60')]['id'];_0xb923da[_0xb8fc('0x61')]['id']=_0x22acda[_0xb8fc('0x57')]['UserId'];return db['OpenchannelMessage'][_0xb8fc('0x55')]({'where':{'id':_0x22acda['params']['id'],'UserId':null}})[_0xb8fc('0x1f')](handleEntityNotFound(_0x4c2c1f,null))[_0xb8fc('0x1f')](function(_0x20be8d){if(_0x20be8d){_0xb923da[_0xb8fc('0x27')]=_0x20be8d['get']({'plain':!![]});return db[_0xb8fc('0x63')][_0xb8fc('0x55')]({'where':{'id':_0x20be8d[_0xb8fc('0x7a')]}});}return null;})[_0xb8fc('0x1f')](handleEntityNotFound(_0x4c2c1f,null))['then'](function(_0x3f70c6){if(_0x3f70c6){_0xb923da[_0xb8fc('0x66')]=_0x3f70c6['get']({'plain':!![]});interaction_log['info'](_0xb8fc('0x7b'),_0x22acda['user']['id'],_0x22acda[_0xb8fc('0x60')][_0xb8fc('0x38')],_0x22acda[_0xb8fc('0x60')]['role'],_0xb923da[_0xb8fc('0x66')]['id'],_0x22acda[_0xb8fc('0x57')]?JSON[_0xb8fc('0x24')](_0x22acda['body']):_0xb8fc('0x7c'));return respondWithRpcPromise(_0xb8fc('0x7d'),'rejectMessage',_0xb923da);}return null;})[_0xb8fc('0x1f')](function(_0x2c801b){var _0x54c2bb=_0xb8fc('0x6b')+_0x2c801b['message'][_0xb8fc('0x6c')];return db[_0xb8fc('0x6d')][_0xb8fc('0x3e')](_0x54c2bb,{'type':db[_0xb8fc('0x7e')][_0xb8fc('0x6e')][_0xb8fc('0x6f')],'raw':!![]})['then'](function(_0x5179af){return _0x5179af;});})[_0xb8fc('0x1f')](function(_0x395a59){if(_0x395a59){_0xb923da[_0xb8fc('0x27')][_0xb8fc('0x70')]=_0x395a59[0x0];if(!_0x22acda[_0xb8fc('0x57')][_0xb8fc('0x5f')])return;return db['User'][_0xb8fc('0x55')]({'where':{'id':_0x22acda[_0xb8fc('0x57')][_0xb8fc('0x5f')],'role':_0xb8fc('0x61')},'attributes':['id',_0xb8fc('0x38'),_0xb8fc('0x71'),_0xb8fc('0x7f'),_0xb8fc('0x72')],'raw':!![]});}return null;})['then'](function(_0x4c90d6){if(!_0x4c90d6)return null;_0xb923da[_0xb8fc('0x27')][_0xb8fc('0x61')]=_0x4c90d6;return _0xb923da;})[_0xb8fc('0x1f')](function(_0x2b9a61){if(_0x2b9a61){_0x2b9a61[_0xb8fc('0x27')]['interface']=util[_0xb8fc('0x65')](_0xb8fc('0x75'),_0x22acda[_0xb8fc('0x60')]['name']);_0x2b9a61[_0xb8fc('0x27')][_0xb8fc('0x76')]=_0xb923da[_0xb8fc('0x76')];_0x2b9a61[_0xb8fc('0x27')][_0xb8fc('0x80')]=_0xb923da['channel'];_0x2b9a61[_0xb8fc('0x27')][_0xb8fc('0x77')]=_0xb8fc('0x35');respondWithRpcPromise('EventManager',_0xb8fc('0x78'),{'event':'rejectmessage','message':_0x2b9a61[_0xb8fc('0x27')]},client9002);return _0xb923da;}return null;})[_0xb8fc('0x1f')](respondWithResult(_0x4c2c1f,null))[_0xb8fc('0x2a')](handleError(_0x4c2c1f,null));};
\ No newline at end of file
index e5d4f40..4ce2fe8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf35f=['emit','hasOwnProperty','hook','exports','OpenchannelMessage','save','remove'];(function(_0xfe9c02,_0xc7eb6b){var _0x36d301=function(_0x84e913){while(--_0x84e913){_0xfe9c02['push'](_0xfe9c02['shift']());}};_0x36d301(++_0xc7eb6b);}(_0xf35f,0xc1));var _0xff35=function(_0x1e7345,_0x18bcce){_0x1e7345=_0x1e7345-0x0;var _0x33017c=_0xf35f[_0x1e7345];return _0x33017c;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require('../../mysqldb')['db'][_0xff35('0x0')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xff35('0x1'),'afterUpdate':'update','afterDestroy':_0xff35('0x2')};function emitEvent(_0x339d43){return function(_0x403fda,_0x4b6b31,_0x17954d){OpenchannelMessageEvents[_0xff35('0x3')](_0x339d43+':'+_0x403fda['id'],_0x403fda);OpenchannelMessageEvents[_0xff35('0x3')](_0x339d43,_0x403fda);_0x17954d(null);};}for(var e in events){if(events[_0xff35('0x4')](e)){var event=events[e];OpenchannelMessage[_0xff35('0x5')](e,emitEvent(event));}}module[_0xff35('0x6')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x4abb=['../../mysqldb','OpenchannelMessage','setMaxListeners','save','emit','hasOwnProperty','hook'];(function(_0x1ed461,_0x54b9c4){var _0x3af178=function(_0x12985d){while(--_0x12985d){_0x1ed461['push'](_0x1ed461['shift']());}};_0x3af178(++_0x54b9c4);}(_0x4abb,0xee));var _0xb4ab=function(_0x1640d0,_0x30da93){_0x1640d0=_0x1640d0-0x0;var _0x1151e4=_0x4abb[_0x1640d0];return _0x1151e4;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require(_0xb4ab('0x0'))['db'][_0xb4ab('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xb4ab('0x2')](0x0);var events={'afterCreate':_0xb4ab('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x16f18b){return function(_0x5b51e1,_0x53ea25,_0xd5eb87){OpenchannelMessageEvents[_0xb4ab('0x4')](_0x16f18b+':'+_0x5b51e1['id'],_0x5b51e1);OpenchannelMessageEvents[_0xb4ab('0x4')](_0x16f18b,_0x5b51e1);_0xd5eb87(null);};}for(var e in events){if(events[_0xb4ab('0x5')](e)){var event=events[e];OpenchannelMessage[_0xb4ab('0x6')](e,emitEvent(event));}}module['exports']=OpenchannelMessageEvents;
\ No newline at end of file
index 45fad39..1f1724c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x92b3=['GET','Message\x20%d\x20forwarded\x20to\x20%s','threadId','update','inspect','finally','utf8mb4','utf8mb4_unicode_ci','util','moment','bluebird','request-promise','path','rimraf','exports','define','openchannel_messages','fti_openchannel_messages','body','models','get','toLowerCase','direction','out','isNil','UserId','OpenchannelInteraction','OpenchannelInteractionId','then','createdAt','catch','error','describe','find','OpenchannelAccountId','Interactions','CmContact','Contact','keys','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','length','Interaction','omit','POST'];(function(_0x174e47,_0x4a41dd){var _0x46ebe0=function(_0x1ca7a3){while(--_0x1ca7a3){_0x174e47['push'](_0x174e47['shift']());}};_0x46ebe0(++_0x4a41dd);}(_0x92b3,0x9b));var _0x392b=function(_0x47a7d0,_0x4e182d){_0x47a7d0=_0x47a7d0-0x0;var _0xb9bd08=_0x92b3[_0x47a7d0];return _0xb9bd08;};'use strict';var _=require('lodash');var util=require(_0x392b('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x392b('0x1'));var BPromise=require(_0x392b('0x2'));var rp=require(_0x392b('0x3'));var fs=require('fs');var path=require(_0x392b('0x4'));var rimraf=require(_0x392b('0x5'));var config=require('../../config/environment');var attributes=require('./openchannelMessage.attributes');module[_0x392b('0x6')]=function(_0x355be6,_0x5337fd){return _0x355be6[_0x392b('0x7')]('OpenchannelMessage',attributes,{'tableName':_0x392b('0x8'),'paranoid':![],'indexes':[{'name':_0x392b('0x9'),'fields':[_0x392b('0xa')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x549080,_0x2e59d7,_0x56e9f2){var _0x4e9dcd=_0x355be6[_0x392b('0xb')];var _0x30b4a9=_0x549080[_0x392b('0xc')]({'plain':!![]});if(_0x30b4a9['direction'][_0x392b('0xd')]()==='in'||_0x30b4a9[_0x392b('0xe')][_0x392b('0xd')]()===_0x392b('0xf')&&!_0x30b4a9['secret']&&!_[_0x392b('0x10')](_0x30b4a9[_0x392b('0x11')])){_0x4e9dcd[_0x392b('0x12')]['findOne']({'where':{'id':_0x30b4a9[_0x392b('0x13')]}})[_0x392b('0x14')](function(_0x50f3fb){if(_0x50f3fb){_0x50f3fb['update']({'lastMsgAt':_0x30b4a9[_0x392b('0x15')],'lastMsgDirection':_0x30b4a9[_0x392b('0xe')][_0x392b('0xd')]()});}})[_0x392b('0x16')](function(_0x21696b){console[_0x392b('0x17')](_0x21696b);});}if(_0x30b4a9[_0x392b('0xe')]===_0x392b('0xf')&&!_0x30b4a9['secret']){var _0x13209e;_0x4e9dcd['CmContact'][_0x392b('0x18')]()[_0x392b('0x14')](function(_0x4a853c){return _0x4e9dcd['OpenchannelAccount'][_0x392b('0x19')]({'where':{'id':_0x30b4a9[_0x392b('0x1a')]},'include':[{'model':_0x4e9dcd[_0x392b('0x12')],'as':_0x392b('0x1b'),'where':{'id':_0x30b4a9[_0x392b('0x13')]},'limit':0x1,'include':[{'model':_0x4e9dcd[_0x392b('0x1c')],'as':_0x392b('0x1d'),'attributes':_[_0x392b('0x1e')](_0x4a853c)}]}]});})[_0x392b('0x14')](function(_0x3add12){_0x13209e=_0x3add12[_0x392b('0xc')]({'plain':!![]});if(_0x13209e&&_0x13209e[_0x392b('0x1f')]){logger[_0x392b('0x20')](_0x392b('0x21'),_0x392b('0x22'),util[_0x392b('0x23')](_0x392b('0x24'),_0x30b4a9['id'],_0x13209e[_0x392b('0x1f')]));if(_0x13209e[_0x392b('0x1b')]&&_0x13209e[_0x392b('0x1b')][_0x392b('0x25')]){_0x30b4a9[_0x392b('0x26')]=_[_0x392b('0x27')](_0x13209e[_0x392b('0x1b')][0x0],_0x392b('0x1d'));_0x30b4a9['Contact']=_0x13209e[_0x392b('0x1b')][0x0][_0x392b('0x1d')];}var _0x2e59d7={'method':_0x392b('0x28'),'uri':encodeURI(_0x13209e[_0x392b('0x1f')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x2e59d7['method']){case _0x392b('0x29'):_0x2e59d7['qs']=_0x30b4a9;break;case _0x392b('0x28'):_0x2e59d7[_0x392b('0xa')]=_0x30b4a9;break;}return rp(_0x2e59d7)[_0x392b('0x14')](function(_0x461bfc){logger[_0x392b('0x20')]('OpenchannelMessage,\x20%s,\x20%s',_0x392b('0x22'),util[_0x392b('0x23')](_0x392b('0x2a'),_0x30b4a9['id'],_0x13209e['replyUri']));if(_0x461bfc[_0x392b('0xa')]['threadId']&&_0x461bfc['body']['threadId']!=_0x30b4a9[_0x392b('0x26')]['threadId']){return _0x4e9dcd[_0x392b('0x12')]['update']({'threadId':_0x461bfc[_0x392b('0xa')][_0x392b('0x2b')]},{'where':{'id':_0x30b4a9[_0x392b('0x26')]['id']}});}else{return;}})[_0x392b('0x14')](function(){return _0x549080[_0x392b('0x2c')]({'read':!![]});})[_0x392b('0x16')](function(_0x4e2c01){logger['error'](_0x392b('0x21'),_0x392b('0x22'),util[_0x392b('0x2d')](_0x4e2c01,{'showHidden':![],'depth':null}));_0x56e9f2();});}else{_0x56e9f2();}})[_0x392b('0x2e')](function(){_0x56e9f2();});}else{_0x56e9f2();}}},'charset':_0x392b('0x2f'),'collate':_0x392b('0x30')});};
\ No newline at end of file
+var _0x47f0=['Interaction','omit','Contact','replyUri','method','GET','POST','OpenchannelMessage,\x20%s,\x20%s','Message\x20%d\x20forwarded\x20to\x20%s','threadId','catch','error','inspect','finally','utf8mb4','lodash','util','../../config/logger','api','path','rimraf','./openchannelMessage.attributes','exports','define','OpenchannelMessage','fti_openchannel_messages','body','models','get','direction','toLowerCase','out','secret','isNil','OpenchannelInteraction','then','update','createdAt','describe','OpenchannelAccount','find','OpenchannelAccountId','OpenchannelInteractionId','CmContact','keys','info','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','Interactions','length'];(function(_0x22fc94,_0x6ea7e5){var _0x673e19=function(_0xa7a71f){while(--_0xa7a71f){_0x22fc94['push'](_0x22fc94['shift']());}};_0x673e19(++_0x6ea7e5);}(_0x47f0,0xa8));var _0x047f=function(_0x52b395,_0x1afa64){_0x52b395=_0x52b395-0x0;var _0x55d9d4=_0x47f0[_0x52b395];return _0x55d9d4;};'use strict';var _=require(_0x047f('0x0'));var util=require(_0x047f('0x1'));var logger=require(_0x047f('0x2'))(_0x047f('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x047f('0x4'));var rimraf=require(_0x047f('0x5'));var config=require('../../config/environment');var attributes=require(_0x047f('0x6'));module[_0x047f('0x7')]=function(_0x527df0,_0x3161ed){return _0x527df0[_0x047f('0x8')](_0x047f('0x9'),attributes,{'tableName':'openchannel_messages','paranoid':![],'indexes':[{'name':_0x047f('0xa'),'fields':[_0x047f('0xb')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1361e3,_0x5d3908,_0xabff87){var _0xe2b1e4=_0x527df0[_0x047f('0xc')];var _0x1b0d98=_0x1361e3[_0x047f('0xd')]({'plain':!![]});if(_0x1b0d98[_0x047f('0xe')][_0x047f('0xf')]()==='in'||_0x1b0d98['direction'][_0x047f('0xf')]()===_0x047f('0x10')&&!_0x1b0d98[_0x047f('0x11')]&&!_[_0x047f('0x12')](_0x1b0d98['UserId'])){_0xe2b1e4[_0x047f('0x13')]['findOne']({'where':{'id':_0x1b0d98['OpenchannelInteractionId']}})[_0x047f('0x14')](function(_0x22c96f){if(_0x22c96f){_0x22c96f[_0x047f('0x15')]({'lastMsgAt':_0x1b0d98[_0x047f('0x16')],'lastMsgDirection':_0x1b0d98[_0x047f('0xe')][_0x047f('0xf')]()});}})['catch'](function(_0x13ff09){console['error'](_0x13ff09);});}if(_0x1b0d98[_0x047f('0xe')]===_0x047f('0x10')&&!_0x1b0d98[_0x047f('0x11')]){var _0x1b263c;_0xe2b1e4['CmContact'][_0x047f('0x17')]()[_0x047f('0x14')](function(_0x3e7e40){return _0xe2b1e4[_0x047f('0x18')][_0x047f('0x19')]({'where':{'id':_0x1b0d98[_0x047f('0x1a')]},'include':[{'model':_0xe2b1e4[_0x047f('0x13')],'as':'Interactions','where':{'id':_0x1b0d98[_0x047f('0x1b')]},'limit':0x1,'include':[{'model':_0xe2b1e4[_0x047f('0x1c')],'as':'Contact','attributes':_[_0x047f('0x1d')](_0x3e7e40)}]}]});})[_0x047f('0x14')](function(_0x4a14d5){_0x1b263c=_0x4a14d5[_0x047f('0xd')]({'plain':!![]});if(_0x1b263c&&_0x1b263c['replyUri']){logger[_0x047f('0x1e')]('OpenchannelMessage,\x20%s,\x20%s',_0x047f('0x1f'),util[_0x047f('0x20')](_0x047f('0x21'),_0x1b0d98['id'],_0x1b263c['replyUri']));if(_0x1b263c[_0x047f('0x22')]&&_0x1b263c[_0x047f('0x22')][_0x047f('0x23')]){_0x1b0d98[_0x047f('0x24')]=_[_0x047f('0x25')](_0x1b263c[_0x047f('0x22')][0x0],_0x047f('0x26'));_0x1b0d98['Contact']=_0x1b263c[_0x047f('0x22')][0x0][_0x047f('0x26')];}var _0x5d3908={'method':'POST','uri':encodeURI(_0x1b263c[_0x047f('0x27')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x5d3908[_0x047f('0x28')]){case _0x047f('0x29'):_0x5d3908['qs']=_0x1b0d98;break;case _0x047f('0x2a'):_0x5d3908['body']=_0x1b0d98;break;}return rp(_0x5d3908)[_0x047f('0x14')](function(_0x4d571c){logger[_0x047f('0x1e')](_0x047f('0x2b'),_0x047f('0x1f'),util[_0x047f('0x20')](_0x047f('0x2c'),_0x1b0d98['id'],_0x1b263c[_0x047f('0x27')]));if(_0x4d571c[_0x047f('0xb')][_0x047f('0x2d')]&&_0x4d571c[_0x047f('0xb')][_0x047f('0x2d')]!=_0x1b0d98[_0x047f('0x24')][_0x047f('0x2d')]){return _0xe2b1e4[_0x047f('0x13')][_0x047f('0x15')]({'threadId':_0x4d571c[_0x047f('0xb')][_0x047f('0x2d')]},{'where':{'id':_0x1b0d98[_0x047f('0x24')]['id']}});}else{return;}})['then'](function(){return _0x1361e3['update']({'read':!![]});})[_0x047f('0x2e')](function(_0x37bf12){logger[_0x047f('0x2f')](_0x047f('0x2b'),'afterCreate',util[_0x047f('0x30')](_0x37bf12,{'showHidden':![],'depth':null}));_0xabff87();});}else{_0xabff87();}})[_0x047f('0x31')](function(){_0xabff87();});}else{_0xabff87();}}},'charset':_0x047f('0x32'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index f67afc5..07a1200 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','request','then','OpenchannelMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','code','error','message','result','catch','CreateOpenchannelMessage','create','options','info'];(function(_0x3081d0,_0x39f1c1){var _0x12b5c1=function(_0x178a2a){while(--_0x178a2a){_0x3081d0['push'](_0x3081d0['shift']());}};_0x12b5c1(++_0x39f1c1);}(_0x2ef3,0xba));var _0x32ef=function(_0x1f79ea,_0x4c7e58){_0x1f79ea=_0x1f79ea-0x0;var _0x1a327a=_0x2ef3[_0x1f79ea];return _0x1a327a;};'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});config[_0x32ef('0xa')]=_[_0x32ef('0xb')](config[_0x32ef('0xa')],{'host':_0x32ef('0xc'),'port':0x18eb});var socket=require(_0x32ef('0xd'))(new Redis(config[_0x32ef('0xa')]));require(_0x32ef('0xe'))[_0x32ef('0xf')](socket);function respondWithRpcPromise(_0x28275c,_0x77df79,_0x56eb42){return new BPromise(function(_0x5780e9,_0x401d0b){return client[_0x32ef('0x10')](_0x28275c,_0x56eb42)[_0x32ef('0x11')](function(_0x1499c2){logger['info'](_0x32ef('0x12'),_0x77df79,'request\x20sent');logger[_0x32ef('0x13')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x77df79,_0x32ef('0x14'),JSON[_0x32ef('0x15')](_0x1499c2));if(_0x1499c2['error']){if(_0x1499c2['error'][_0x32ef('0x16')]===0x1f4){logger['error'](_0x32ef('0x12'),_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x401d0b(_0x1499c2[_0x32ef('0x17')]['message']);}logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x5780e9(_0x1499c2[_0x32ef('0x17')]['message']);}else{logger['info'](_0x32ef('0x12'),_0x77df79,_0x32ef('0x14'));_0x5780e9(_0x1499c2[_0x32ef('0x19')]['message']);}})[_0x32ef('0x1a')](function(_0x33e230){logger['error'](_0x32ef('0x12'),_0x77df79,_0x33e230);_0x401d0b(_0x33e230);});});}exports[_0x32ef('0x1b')]=function(_0x26aff3){var _0x251084=this;return new Promise(function(_0x445cda,_0x3aec05){return db['OpenchannelMessage'][_0x32ef('0x1c')](_0x26aff3['body'],{'raw':_0x26aff3[_0x32ef('0x1d')]?_0x26aff3[_0x32ef('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x32ef('0x11')](function(_0x97780){logger[_0x32ef('0x1e')]('CreateOpenchannelMessage',_0x26aff3);logger['debug'](_0x32ef('0x1b'),_0x26aff3,JSON[_0x32ef('0x15')](_0x97780));_0x445cda(_0x97780);})[_0x32ef('0x1a')](function(_0x478bef){logger['error'](_0x32ef('0x1b'),_0x478bef['message'],_0x26aff3);_0x3aec05(_0x251084['error'](0x1f4,_0x478bef[_0x32ef('0x18')]));});});};
\ No newline at end of file
+var _0x0b0e=['message','result','OpenchannelMessage','create','body','options','CreateOpenchannelMessage','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./openchannelMessage.socket','then','info','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','OpenchannelMessage,\x20%s,\x20%s'];(function(_0x3084f7,_0x45c5b0){var _0x1a4266=function(_0x111e99){while(--_0x111e99){_0x3084f7['push'](_0x3084f7['shift']());}};_0x1a4266(++_0x45c5b0);}(_0x0b0e,0x187));var _0xe0b0=function(_0x21af3a,_0x386e1d){_0x21af3a=_0x21af3a-0x0;var _0x268a49=_0x0b0e[_0x21af3a];return _0x268a49;};'use strict';var _=require(_0xe0b0('0x0'));var util=require('util');var moment=require(_0xe0b0('0x1'));var BPromise=require('bluebird');var rs=require(_0xe0b0('0x2'));var fs=require('fs');var Redis=require(_0xe0b0('0x3'));var db=require(_0xe0b0('0x4'))['db'];var utils=require(_0xe0b0('0x5'));var logger=require(_0xe0b0('0x6'))(_0xe0b0('0x7'));var config=require(_0xe0b0('0x8'));var jayson=require(_0xe0b0('0x9'));var client=jayson[_0xe0b0('0xa')][_0xe0b0('0xb')]({'port':0x232a});config[_0xe0b0('0xc')]=_['defaults'](config['redis'],{'host':_0xe0b0('0xd'),'port':0x18eb});var socket=require(_0xe0b0('0xe'))(new Redis(config[_0xe0b0('0xc')]));require(_0xe0b0('0xf'))['register'](socket);function respondWithRpcPromise(_0x338e7c,_0x1dd3b8,_0x553d4f){return new BPromise(function(_0x1fef28,_0x2f32b6){return client['request'](_0x338e7c,_0x553d4f)[_0xe0b0('0x10')](function(_0x2cdad2){logger[_0xe0b0('0x11')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,_0xe0b0('0x12'));logger[_0xe0b0('0x13')](_0xe0b0('0x14'),_0x1dd3b8,_0xe0b0('0x12'),JSON[_0xe0b0('0x15')](_0x2cdad2));if(_0x2cdad2['error']){if(_0x2cdad2[_0xe0b0('0x16')][_0xe0b0('0x17')]===0x1f4){logger[_0xe0b0('0x16')](_0xe0b0('0x18'),_0x1dd3b8,_0x2cdad2[_0xe0b0('0x16')]['message']);return _0x2f32b6(_0x2cdad2[_0xe0b0('0x16')]['message']);}logger[_0xe0b0('0x16')](_0xe0b0('0x18'),_0x1dd3b8,_0x2cdad2['error'][_0xe0b0('0x19')]);return _0x1fef28(_0x2cdad2['error'][_0xe0b0('0x19')]);}else{logger[_0xe0b0('0x11')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,'request\x20sent');_0x1fef28(_0x2cdad2[_0xe0b0('0x1a')]['message']);}})['catch'](function(_0x4bce65){logger[_0xe0b0('0x16')]('OpenchannelMessage,\x20%s,\x20%s',_0x1dd3b8,_0x4bce65);_0x2f32b6(_0x4bce65);});});}exports['CreateOpenchannelMessage']=function(_0x10cde1){var _0x59dff5=this;return new Promise(function(_0x472286,_0x5dba2f){return db[_0xe0b0('0x1b')][_0xe0b0('0x1c')](_0x10cde1[_0xe0b0('0x1d')],{'raw':_0x10cde1[_0xe0b0('0x1e')]?_0x10cde1[_0xe0b0('0x1e')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2fa820){logger['info'](_0xe0b0('0x1f'),_0x10cde1);logger[_0xe0b0('0x13')]('CreateOpenchannelMessage',_0x10cde1,JSON[_0xe0b0('0x15')](_0x2fa820));_0x472286(_0x2fa820);})['catch'](function(_0x2208d0){logger['error'](_0xe0b0('0x1f'),_0x2208d0['message'],_0x10cde1);_0x5dba2f(_0x59dff5[_0xe0b0('0x16')](0x1f4,_0x2208d0['message']));});});};
\ No newline at end of file
index d15009b..3e5b4e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e09=['update','emit','removeListener','register','length','openchannelMessage:','./openchannelMessage.events','save'];(function(_0x10c9b9,_0x4f6b5f){var _0x12dfc1=function(_0x2cae85){while(--_0x2cae85){_0x10c9b9['push'](_0x10c9b9['shift']());}};_0x12dfc1(++_0x4f6b5f);}(_0x8e09,0x1e6));var _0x98e0=function(_0xb99421,_0xaab133){_0xb99421=_0xb99421-0x0;var _0x4b3ec7=_0x8e09[_0xb99421];return _0x4b3ec7;};'use strict';var OpenchannelMessageEvents=require(_0x98e0('0x0'));var events=[_0x98e0('0x1'),'remove',_0x98e0('0x2')];function createListener(_0x1c124c,_0x4a2e6d){return function(_0x59c91a){_0x4a2e6d[_0x98e0('0x3')](_0x1c124c,_0x59c91a);};}function removeListener(_0x373da8,_0x463ec2){return function(){OpenchannelMessageEvents[_0x98e0('0x4')](_0x373da8,_0x463ec2);};}exports[_0x98e0('0x5')]=function(_0xba9318){for(var _0x46e281=0x0,_0x2f6ae4=events[_0x98e0('0x6')];_0x46e281<_0x2f6ae4;_0x46e281++){var _0x12672a=events[_0x46e281];var _0x1d7457=createListener(_0x98e0('0x7')+_0x12672a,_0xba9318);OpenchannelMessageEvents['on'](_0x12672a,_0x1d7457);}};
\ No newline at end of file
+var _0x1caa=['remove','emit','removeListener','register','openchannelMessage:','./openchannelMessage.events'];(function(_0x3eeace,_0x4eefce){var _0xca1906=function(_0x3bc94d){while(--_0x3bc94d){_0x3eeace['push'](_0x3eeace['shift']());}};_0xca1906(++_0x4eefce);}(_0x1caa,0xbf));var _0xa1ca=function(_0x536dcd,_0x319f9d){_0x536dcd=_0x536dcd-0x0;var _0x5b1154=_0x1caa[_0x536dcd];return _0x5b1154;};'use strict';var OpenchannelMessageEvents=require(_0xa1ca('0x0'));var events=['save',_0xa1ca('0x1'),'update'];function createListener(_0x193608,_0x428ccc){return function(_0x425d4a){_0x428ccc[_0xa1ca('0x2')](_0x193608,_0x425d4a);};}function removeListener(_0xd599ba,_0x586653){return function(){OpenchannelMessageEvents[_0xa1ca('0x3')](_0xd599ba,_0x586653);};}exports[_0xa1ca('0x4')]=function(_0x7e6187){for(var _0x4a477a=0x0,_0x2ce3cf=events['length'];_0x4a477a<_0x2ce3cf;_0x4a477a++){var _0x372c42=events[_0x4a477a];var _0x2c3584=createListener(_0xa1ca('0x5')+_0x372c42,_0x7e6187);OpenchannelMessageEvents['on'](_0x372c42,_0x2c3584);}};
\ No newline at end of file
index 200bb73..d02cc9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c17=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','show','/:id/members','getAgents','post','/:id/teams','addTeams','/:id/users','put','/:id','update','destroy','delete','exports','multer','util','connect-timeout'];(function(_0x4fdc01,_0x4101ea){var _0x5bb876=function(_0x134c23){while(--_0x134c23){_0x4fdc01['push'](_0x4fdc01['shift']());}};_0x5bb876(++_0x4101ea);}(_0x3c17,0xf0));var _0x73c1=function(_0x3de8a4,_0x289a5c){_0x3de8a4=_0x3de8a4-0x0;var _0x4635cf=_0x3c17[_0x3de8a4];return _0x4635cf;};'use strict';var multer=require(_0x73c1('0x0'));var util=require(_0x73c1('0x1'));var path=require('path');var timeout=require(_0x73c1('0x2'));var express=require(_0x73c1('0x3'));var router=express[_0x73c1('0x4')]();var fs_extra=require(_0x73c1('0x5'));var auth=require(_0x73c1('0x6'));var interaction=require(_0x73c1('0x7'));var config=require(_0x73c1('0x8'));var controller=require('./openchannelQueue.controller');router[_0x73c1('0x9')]('/',auth[_0x73c1('0xa')](),controller[_0x73c1('0xb')]);router[_0x73c1('0x9')](_0x73c1('0xc'),auth[_0x73c1('0xa')](),controller[_0x73c1('0xd')]);router[_0x73c1('0x9')]('/:id',auth[_0x73c1('0xa')](),controller[_0x73c1('0xe')]);router[_0x73c1('0x9')](_0x73c1('0xf'),auth[_0x73c1('0xa')](),controller['getMembers']);router['get']('/:id/teams',auth['isAuthenticated'](),controller['getTeams']);router['get']('/:id/users',auth[_0x73c1('0xa')](),controller[_0x73c1('0x10')]);router[_0x73c1('0x11')]('/',auth['isAuthenticated'](),controller['create']);router[_0x73c1('0x11')](_0x73c1('0x12'),auth[_0x73c1('0xa')](),controller[_0x73c1('0x13')]);router['post'](_0x73c1('0x14'),auth[_0x73c1('0xa')](),controller['addAgents']);router[_0x73c1('0x15')](_0x73c1('0x16'),auth[_0x73c1('0xa')](),controller[_0x73c1('0x17')]);router['delete'](_0x73c1('0x16'),auth[_0x73c1('0xa')](),controller[_0x73c1('0x18')]);router[_0x73c1('0x19')](_0x73c1('0x12'),auth['isAuthenticated'](),controller['removeTeams']);router[_0x73c1('0x19')](_0x73c1('0x14'),auth[_0x73c1('0xa')](),controller['removeAgents']);module[_0x73c1('0x1a')]=router;
\ No newline at end of file
+var _0xffbf=['/:id','show','getMembers','/:id/teams','getAgents','post','addTeams','/:id/users','update','delete','destroy','removeTeams','removeAgents','exports','multer','connect-timeout','express','Router','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','describe'];(function(_0x590a0c,_0xab1f66){var _0x32add4=function(_0x8e9352){while(--_0x8e9352){_0x590a0c['push'](_0x590a0c['shift']());}};_0x32add4(++_0xab1f66);}(_0xffbf,0xb6));var _0xfffb=function(_0x1e1bcc,_0x302ef2){_0x1e1bcc=_0x1e1bcc-0x0;var _0x161e32=_0xffbf[_0x1e1bcc];return _0x161e32;};'use strict';var multer=require(_0xfffb('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xfffb('0x1'));var express=require(_0xfffb('0x2'));var router=express[_0xfffb('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xfffb('0x4'));var controller=require(_0xfffb('0x5'));router[_0xfffb('0x6')]('/',auth[_0xfffb('0x7')](),controller[_0xfffb('0x8')]);router[_0xfffb('0x6')]('/describe',auth['isAuthenticated'](),controller[_0xfffb('0x9')]);router[_0xfffb('0x6')](_0xfffb('0xa'),auth[_0xfffb('0x7')](),controller[_0xfffb('0xb')]);router[_0xfffb('0x6')]('/:id/members',auth[_0xfffb('0x7')](),controller[_0xfffb('0xc')]);router['get'](_0xfffb('0xd'),auth[_0xfffb('0x7')](),controller['getTeams']);router[_0xfffb('0x6')]('/:id/users',auth['isAuthenticated'](),controller[_0xfffb('0xe')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xfffb('0xf')](_0xfffb('0xd'),auth[_0xfffb('0x7')](),controller[_0xfffb('0x10')]);router[_0xfffb('0xf')](_0xfffb('0x11'),auth['isAuthenticated'](),controller['addAgents']);router['put']('/:id',auth[_0xfffb('0x7')](),controller[_0xfffb('0x12')]);router[_0xfffb('0x13')](_0xfffb('0xa'),auth[_0xfffb('0x7')](),controller[_0xfffb('0x14')]);router[_0xfffb('0x13')](_0xfffb('0xd'),auth[_0xfffb('0x7')](),controller[_0xfffb('0x15')]);router[_0xfffb('0x13')](_0xfffb('0x11'),auth['isAuthenticated'](),controller[_0xfffb('0x16')]);module[_0xfffb('0x17')]=router;
\ No newline at end of file
index fb3e7fa..8bfe6b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc635=['beepall','sequelize','STRING','name','INTEGER','ENUM'];(function(_0xb67a18,_0xf8149){var _0x79b2df=function(_0x321859){while(--_0x321859){_0xb67a18['push'](_0xb67a18['shift']());}};_0x79b2df(++_0xf8149);}(_0xc635,0xbb));var _0x5c63=function(_0x1de914,_0x2434f1){_0x1de914=_0x1de914-0x0;var _0x303ccd=_0xc635[_0x1de914];return _0x303ccd;};'use strict';var Sequelize=require(_0x5c63('0x0'));module['exports']={'name':{'type':Sequelize[_0x5c63('0x1')],'unique':_0x5c63('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x5c63('0x1')]},'timeout':{'type':Sequelize[_0x5c63('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x5c63('0x4')]('rrmemory',_0x5c63('0x5'),'roundrobin')}};
\ No newline at end of file
+var _0x0157=['INTEGER','ENUM','rrmemory','beepall','roundrobin','STRING','name'];(function(_0x46ec32,_0x1e842f){var _0x338f60=function(_0x10e02c){while(--_0x10e02c){_0x46ec32['push'](_0x46ec32['shift']());}};_0x338f60(++_0x1e842f);}(_0x0157,0x1e8));var _0x7015=function(_0x6c24c0,_0x1351ce){_0x6c24c0=_0x6c24c0-0x0;var _0x156cf9=_0x0157[_0x6c24c0];return _0x156cf9;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x7015('0x0')],'unique':_0x7015('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x7015('0x0')]},'timeout':{'type':Sequelize[_0x7015('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x7015('0x3')](_0x7015('0x4'),_0x7015('0x5'),_0x7015('0x6'))}};
\ No newline at end of file
index 4b4d605..afa810c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f39=['format','%s/%s','SIP','getTeams','pick','addTeams','ids','Team','Agents','online','voicePause','flatMap','sequelize','transaction','each','forEach','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_openchannel_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','every','TeamId','includes','all','union','compact','value','removeAgents','emit','addAgents','omit','spread','isArray','userOpenchannelQueue:remove','getAgents','bluebird','lodash','../../components/parsers/qs','../../config/logger','redis','localhost','socket.io-emitter','./openchannelQueue.socket','sendStatus','status','end','offset','undefined','limit','update','then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','index','map','OpenchannelQueue','fieldName','type','key','getOptions','where','count','include','query','show','rawAttributes','keys','filters','intersection','model','fields','attributes','length','includeAll','merge','options','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','findOne','UserOpenchannelQueue','hasOwnProperty','nolimit','order','sort','filter','findAll','User','findAndCountAll','UserId','openchannelPause','updatedAt','createdAt','rows'];(function(_0x844d4,_0x2f775e){var _0x15d1b8=function(_0x2755eb){while(--_0x2755eb){_0x844d4['push'](_0x844d4['shift']());}};_0x15d1b8(++_0x2f775e);}(_0x3f39,0x199));var _0x93f3=function(_0xa3a76b,_0x2178f3){_0xa3a76b=_0xa3a76b-0x0;var _0x3cfe8d=_0x3f39[_0xa3a76b];return _0x3cfe8d;};'use strict';var BPromise=require(_0x93f3('0x0'));var util=require('util');var _=require(_0x93f3('0x1'));var squel=require('squel');var Redis=require('ioredis');var qs=require(_0x93f3('0x2'));var logger=require(_0x93f3('0x3'))('api');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0x93f3('0x4')]=_['defaults'](config[_0x93f3('0x4')],{'host':_0x93f3('0x5'),'port':0x18eb});var socket=require(_0x93f3('0x6'))(new Redis(config[_0x93f3('0x4')]));require(_0x93f3('0x7'))['register'](socket);function respondWithStatusCode(_0x2ffbad,_0x223547){_0x223547=_0x223547||0xcc;return function(_0x105670){if(_0x105670){return _0x2ffbad[_0x93f3('0x8')](_0x223547);}return _0x2ffbad[_0x93f3('0x9')](_0x223547)[_0x93f3('0xa')]();};}function respondWithResult(_0x3efc6c,_0x46e796){_0x46e796=_0x46e796||0xc8;return function(_0xd3daad){if(_0xd3daad){return _0x3efc6c[_0x93f3('0x9')](_0x46e796)['json'](_0xd3daad);}};}function respondWithFilteredResult(_0x59e2d1,_0x25354d){return function(_0x282dd9){if(_0x282dd9){var _0x20b174=typeof _0x25354d[_0x93f3('0xb')]===_0x93f3('0xc')&&typeof _0x25354d[_0x93f3('0xd')]===_0x93f3('0xc');var _0x131082=_0x282dd9['count'];var _0x38cb50=_0x20b174?0x0:_0x25354d[_0x93f3('0xb')];var _0x44bf1c=_0x20b174?_0x282dd9['count']:_0x25354d[_0x93f3('0xb')]+_0x25354d['limit'];var _0x9db7d6;if(_0x44bf1c>=_0x131082){_0x44bf1c=_0x131082;_0x9db7d6=0xc8;}else{_0x9db7d6=0xce;}_0x59e2d1[_0x93f3('0x9')](_0x9db7d6);return _0x59e2d1['set']('Content-Range',_0x38cb50+'-'+_0x44bf1c+'/'+_0x131082)['json'](_0x282dd9);}return null;};}function saveUpdates(_0x3b3092){return function(_0x312acc){if(_0x312acc){return _0x312acc[_0x93f3('0xe')](_0x3b3092)[_0x93f3('0xf')](function(_0x4823e5){return _0x4823e5;});}return null;};}function removeEntity(_0x31dbf3){return function(_0x3356f6){if(_0x3356f6){return _0x3356f6[_0x93f3('0x10')]()['then'](function(){var _0x3c3e45=_0x3356f6[_0x93f3('0x11')]({'plain':!![]});var _0x2c95ac=_0x93f3('0x12');return db[_0x93f3('0x13')][_0x93f3('0x10')]({'where':{'type':_0x2c95ac,'resourceId':_0x3c3e45['id']}})['then'](function(){return _0x3356f6;});})['then'](function(){_0x31dbf3[_0x93f3('0x9')](0xcc)[_0x93f3('0xa')]();});}};}function handleEntityNotFound(_0x5459f7){return function(_0x5d25a6){if(!_0x5d25a6){_0x5459f7['sendStatus'](0x194);}return _0x5d25a6;};}function handleError(_0x480476,_0x27d722){_0x27d722=_0x27d722||0x1f4;return function(_0x4b20c3){logger[_0x93f3('0x14')](_0x4b20c3[_0x93f3('0x15')]);if(_0x4b20c3[_0x93f3('0x16')]){delete _0x4b20c3['name'];}_0x480476[_0x93f3('0x9')](_0x27d722)[_0x93f3('0x17')](_0x4b20c3);};}exports[_0x93f3('0x18')]=function(_0x3cdcb8,_0x436e30){var _0x5f1869={};var _0x54cfcc={'count':0x0,'rows':[]};var _0x39502a=_[_0x93f3('0x19')](db[_0x93f3('0x1a')]['rawAttributes'],function(_0x5e51aa){return{'name':_0x5e51aa[_0x93f3('0x1b')],'type':_0x5e51aa[_0x93f3('0x1c')][_0x93f3('0x1d')]};});_0x5f1869=qs[_0x93f3('0x1e')](_0x39502a,_0x3cdcb8);var _0x377952={'where':_0x5f1869[_0x93f3('0x1f')]};return db[_0x93f3('0x1a')][_0x93f3('0x20')](_0x377952)['then'](function(_0x505a9a){_0x54cfcc['count']=_0x505a9a;_0x5f1869[_0x93f3('0x21')]=qs['include'](_0x3cdcb8[_0x93f3('0x22')]);return db[_0x93f3('0x1a')]['findAll'](_0x5f1869);})['then'](function(_0x109190){_0x54cfcc['rows']=_0x109190;return _0x54cfcc;})[_0x93f3('0xf')](respondWithFilteredResult(_0x436e30,_0x5f1869))['catch'](handleError(_0x436e30,null));};exports[_0x93f3('0x23')]=function(_0x34322d,_0x16fa19){var _0x155c39={'raw':!![],'where':{'id':_0x34322d['params']['id']}},_0x1611a5={};_0x1611a5['model']=_['keys'](db[_0x93f3('0x1a')][_0x93f3('0x24')]);_0x1611a5[_0x93f3('0x22')]=_[_0x93f3('0x25')](_0x34322d[_0x93f3('0x22')]);_0x1611a5[_0x93f3('0x26')]=_[_0x93f3('0x27')](_0x1611a5[_0x93f3('0x28')],_0x1611a5[_0x93f3('0x22')]);_0x155c39['attributes']=_[_0x93f3('0x27')](_0x1611a5[_0x93f3('0x28')],qs[_0x93f3('0x29')](_0x34322d[_0x93f3('0x22')][_0x93f3('0x29')]));_0x155c39['attributes']=_0x155c39[_0x93f3('0x2a')][_0x93f3('0x2b')]?_0x155c39[_0x93f3('0x2a')]:_0x1611a5['model'];if(_0x34322d[_0x93f3('0x22')][_0x93f3('0x2c')]){_0x155c39['include']=[{'all':!![]}];}_0x155c39=_[_0x93f3('0x2d')]({},_0x155c39,_0x34322d[_0x93f3('0x2e')]);return db[_0x93f3('0x1a')][_0x93f3('0x2f')](_0x155c39)['then'](handleEntityNotFound(_0x16fa19,null))[_0x93f3('0xf')](respondWithResult(_0x16fa19,null))[_0x93f3('0x30')](handleError(_0x16fa19,null));};exports[_0x93f3('0x31')]=function(_0xb18f20,_0x2b14d5){return db[_0x93f3('0x1a')]['create'](_0xb18f20['body'],{})[_0x93f3('0xf')](function(_0x216dcc){var _0x266fa7=_0xb18f20[_0x93f3('0x32')]['get']({'plain':!![]});if(!_0x266fa7)throw new Error(_0x93f3('0x33'));if(_0x266fa7[_0x93f3('0x34')]===_0x93f3('0x32')){var _0xfd8a2f=_0x216dcc['get']({'plain':!![]});var _0x13e7ca='OpenchannelQueues';return db[_0x93f3('0x35')]['find']({'where':{'name':_0x13e7ca,'userProfileId':_0x266fa7[_0x93f3('0x36')]},'raw':!![]})[_0x93f3('0xf')](function(_0x483d34){if(_0x483d34&&_0x483d34[_0x93f3('0x37')]===0x0){return db[_0x93f3('0x13')]['create']({'name':_0xfd8a2f[_0x93f3('0x16')],'resourceId':_0xfd8a2f['id'],'type':_0x483d34[_0x93f3('0x16')],'sectionId':_0x483d34['id']},{})[_0x93f3('0xf')](function(){return _0x216dcc;});}else{return _0x216dcc;}})['catch'](function(_0x57b7e5){logger[_0x93f3('0x14')](_0x93f3('0x38'),_0x57b7e5);throw _0x57b7e5;});}return _0x216dcc;})[_0x93f3('0xf')](respondWithResult(_0x2b14d5,0xc9))[_0x93f3('0x30')](handleError(_0x2b14d5,null));};exports[_0x93f3('0xe')]=function(_0x363622,_0xf9f788){if(_0x363622[_0x93f3('0x39')]['id']){delete _0x363622[_0x93f3('0x39')]['id'];}return db[_0x93f3('0x1a')]['find']({'where':{'id':_0x363622[_0x93f3('0x3a')]['id']}})['then'](handleEntityNotFound(_0xf9f788,null))[_0x93f3('0xf')](saveUpdates(_0x363622['body'],null))[_0x93f3('0xf')](respondWithResult(_0xf9f788,null))[_0x93f3('0x30')](handleError(_0xf9f788,null));};exports[_0x93f3('0x10')]=function(_0x4fa8fe,_0x3a00c0){return db[_0x93f3('0x1a')]['find']({'where':{'id':_0x4fa8fe[_0x93f3('0x3a')]['id']}})[_0x93f3('0xf')](handleEntityNotFound(_0x3a00c0,null))[_0x93f3('0xf')](removeEntity(_0x3a00c0,null))[_0x93f3('0x30')](handleError(_0x3a00c0,null));};exports['describe']=function(_0x2b2def,_0x439ff1){return db[_0x93f3('0x1a')][_0x93f3('0x3b')]()[_0x93f3('0xf')](respondWithResult(_0x439ff1,null))[_0x93f3('0x30')](handleError(_0x439ff1,null));};exports['getMembers']=function(_0x1960d6,_0x337058){var _0x53bdc9={'raw':!![],'where':{}},_0x22f78c={},_0x5ee060;return db[_0x93f3('0x1a')][_0x93f3('0x3c')]({'where':{'id':_0x1960d6['params']['id']}})[_0x93f3('0xf')](handleEntityNotFound(_0x337058,null))[_0x93f3('0xf')](function(_0x4f3167){if(_0x4f3167){_0x5ee060=_0x4f3167[_0x93f3('0x11')]({'plain':!![]});_0x22f78c['model']=_['keys'](db[_0x93f3('0x3d')]['rawAttributes']);_0x22f78c['query']=_['keys'](_0x1960d6[_0x93f3('0x22')]);_0x22f78c[_0x93f3('0x26')]=_['intersection'](_0x22f78c['model'],_0x22f78c[_0x93f3('0x22')]);_0x53bdc9[_0x93f3('0x2a')]=_[_0x93f3('0x27')](_0x22f78c['model'],qs[_0x93f3('0x29')](_0x1960d6['query'][_0x93f3('0x29')]));_0x53bdc9[_0x93f3('0x2a')]=_0x53bdc9[_0x93f3('0x2a')]['length']?_0x53bdc9[_0x93f3('0x2a')]:_0x22f78c['model'];if(!_0x1960d6['query'][_0x93f3('0x3e')](_0x93f3('0x3f'))){_0x53bdc9['limit']=qs[_0x93f3('0xd')](_0x1960d6[_0x93f3('0x22')][_0x93f3('0xd')]);_0x53bdc9[_0x93f3('0xb')]=qs[_0x93f3('0xb')](_0x1960d6[_0x93f3('0x22')][_0x93f3('0xb')]);}_0x53bdc9[_0x93f3('0x40')]=qs[_0x93f3('0x41')](_0x1960d6[_0x93f3('0x22')][_0x93f3('0x41')]);_0x53bdc9[_0x93f3('0x1f')]=qs[_0x93f3('0x26')](_['pick'](_0x1960d6[_0x93f3('0x22')],_0x22f78c['filters']));_0x53bdc9[_0x93f3('0x1f')]['OpenchannelQueueId']=_0x4f3167['id'];if(_0x1960d6['query'][_0x93f3('0x42')]){_0x53bdc9[_0x93f3('0x1f')]=_[_0x93f3('0x2d')](_0x53bdc9[_0x93f3('0x1f')],{'$or':_['map'](_0x53bdc9[_0x93f3('0x2a')],function(_0x5a0f6e){var _0x5e1cb2={};_0x5e1cb2[_0x5a0f6e]={'$like':'%'+_0x1960d6[_0x93f3('0x22')][_0x93f3('0x42')]+'%'};return _0x5e1cb2;})});}_0x53bdc9=_['merge']({},_0x53bdc9,_0x1960d6[_0x93f3('0x2e')]);return db[_0x93f3('0x3d')][_0x93f3('0x43')](_0x53bdc9);}})[_0x93f3('0xf')](function(_0x242b01){if(_0x242b01){return db[_0x93f3('0x44')][_0x93f3('0x45')]({'where':{'id':_[_0x93f3('0x19')](_0x242b01,_0x93f3('0x46')),'role':'agent'},'attributes':['id',_0x93f3('0x16'),_0x93f3('0x47'),_0x93f3('0x48'),_0x93f3('0x49')]});}})['then'](function(_0xd31e2b){if(_0xd31e2b){return{'count':_0xd31e2b[_0x93f3('0x20')],'rows':_['map'](_0xd31e2b[_0x93f3('0x4a')],function(_0x42d26a){return{'membername':_0x42d26a[_0x93f3('0x16')],'UserId':_0x42d26a['id'],'queue_name':_0x5ee060[_0x93f3('0x16')],'OpenchannelQueueId':_0x5ee060['id'],'interface':util[_0x93f3('0x4b')](_0x93f3('0x4c'),_0x93f3('0x4d'),_0x42d26a['name']),'penalty':0x0,'paused':_0x42d26a[_0x93f3('0x47')],'createdAt':_0x42d26a['createdAt'],'updatedAt':_0x42d26a[_0x93f3('0x48')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x93f3('0xf')](respondWithFilteredResult(_0x337058,_0x53bdc9))[_0x93f3('0x30')](handleError(_0x337058,null));};exports[_0x93f3('0x4e')]=function(_0x2be3f4,_0x118254){var _0x42b66d={};var _0x331209={};var _0x14ddb8;var _0x5dd63b;return db[_0x93f3('0x1a')][_0x93f3('0x3c')]({'where':{'id':_0x2be3f4[_0x93f3('0x3a')]['id']}})[_0x93f3('0xf')](handleEntityNotFound(_0x118254,null))['then'](function(_0x4df05a){if(_0x4df05a){_0x14ddb8=_0x4df05a;_0x331209[_0x93f3('0x28')]=_['keys'](db['Team'][_0x93f3('0x24')]);_0x331209['query']=_[_0x93f3('0x25')](_0x2be3f4[_0x93f3('0x22')]);_0x331209[_0x93f3('0x26')]=_[_0x93f3('0x27')](_0x331209[_0x93f3('0x28')],_0x331209[_0x93f3('0x22')]);_0x42b66d[_0x93f3('0x2a')]=_[_0x93f3('0x27')](_0x331209[_0x93f3('0x28')],qs['fields'](_0x2be3f4[_0x93f3('0x22')][_0x93f3('0x29')]));_0x42b66d[_0x93f3('0x2a')]=_0x42b66d[_0x93f3('0x2a')]['length']?_0x42b66d['attributes']:_0x331209['model'];_0x42b66d[_0x93f3('0x40')]=qs[_0x93f3('0x41')](_0x2be3f4[_0x93f3('0x22')][_0x93f3('0x41')]);_0x42b66d[_0x93f3('0x1f')]=qs[_0x93f3('0x26')](_[_0x93f3('0x4f')](_0x2be3f4[_0x93f3('0x22')],_0x331209[_0x93f3('0x26')]));if(_0x2be3f4[_0x93f3('0x22')][_0x93f3('0x42')]){_0x42b66d[_0x93f3('0x1f')]=_[_0x93f3('0x2d')](_0x42b66d[_0x93f3('0x1f')],{'$or':_[_0x93f3('0x19')](_0x42b66d[_0x93f3('0x2a')],function(_0x238f4d){var _0x2e335d={};_0x2e335d[_0x238f4d]={'$like':'%'+_0x2be3f4['query'][_0x93f3('0x42')]+'%'};return _0x2e335d;})});}_0x42b66d=_[_0x93f3('0x2d')]({},_0x42b66d,_0x2be3f4['options']);return _0x14ddb8[_0x93f3('0x4e')](_0x42b66d);}})[_0x93f3('0xf')](function(_0x36ac8b){if(_0x36ac8b){_0x5dd63b=_0x36ac8b[_0x93f3('0x2b')];if(!_0x2be3f4[_0x93f3('0x22')]['hasOwnProperty'](_0x93f3('0x3f'))){_0x42b66d[_0x93f3('0xd')]=qs[_0x93f3('0xd')](_0x2be3f4['query'][_0x93f3('0xd')]);_0x42b66d['offset']=qs[_0x93f3('0xb')](_0x2be3f4[_0x93f3('0x22')]['offset']);}return _0x14ddb8['getTeams'](_0x42b66d);}})['then'](function(_0x3e54e4){if(_0x3e54e4){return _0x3e54e4?{'count':_0x5dd63b,'rows':_0x3e54e4}:null;}})[_0x93f3('0xf')](respondWithResult(_0x118254,null))[_0x93f3('0x30')](handleError(_0x118254,null));};exports[_0x93f3('0x50')]=function(_0x21e0a3,_0x364c6d){var _0x420021=_0x21e0a3[_0x93f3('0x39')][_0x93f3('0x51')];return db[_0x93f3('0x52')][_0x93f3('0x43')]({'where':{'id':_0x420021},'attributes':['id'],'include':[{'model':db['User'],'as':_0x93f3('0x53'),'attributes':['id',_0x93f3('0x16'),_0x93f3('0x54'),_0x93f3('0x55'),'interface'],'raw':!![]}]})[_0x93f3('0xf')](function(_0x3ce1c3){if(_0x3ce1c3){var _0x5aff24=_[_0x93f3('0x56')](_0x3ce1c3,function(_0x3eee46){var _0x428489=_0x3eee46[_0x93f3('0x11')]({'plain':!![]});return _0x428489[_0x93f3('0x53')];});return db['OpenchannelQueue'][_0x93f3('0x2f')]({'where':{'id':_0x21e0a3[_0x93f3('0x3a')]['id']}})['then'](function(_0x4c22dc){return db[_0x93f3('0x57')][_0x93f3('0x58')](function(_0x26f478){return _0x4c22dc[_0x93f3('0x50')](_0x420021,{'transaction':_0x26f478})[_0x93f3('0xf')](function(){return BPromise[_0x93f3('0x59')](_0x5aff24,function(_0x28921c){return db[_0x93f3('0x3d')]['findOrCreate']({'where':{'UserId':_0x28921c['id'],'OpenchannelQueueId':_0x21e0a3[_0x93f3('0x3a')]['id']},'transaction':_0x26f478});});})[_0x93f3('0xf')](function(){_0x5aff24[_0x93f3('0x5a')](function(_0x540e68){socket['emit'](_0x93f3('0x5b'),{'UserId':_0x540e68['id'],'OpenchannelQueueId':_0x4c22dc['id']});});});});});}})[_0x93f3('0xf')](respondWithStatusCode(_0x364c6d,null))[_0x93f3('0x30')](handleError(_0x364c6d,null));};exports[_0x93f3('0x5c')]=function(_0x1ccea1,_0x53ad2f){return db['Team'][_0x93f3('0x43')]({'where':{'id':_0x1ccea1[_0x93f3('0x22')][_0x93f3('0x51')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x93f3('0x53'),'attributes':['id'],'raw':!![]}]})[_0x93f3('0xf')](handleEntityNotFound(_0x53ad2f,null))['then'](function(_0x4598ac){var _0x5a4d27=_[_0x93f3('0x19')](_0x4598ac,'id');var _0x6db23c=[];var _0x2931d6=[];var _0x2e9e6c=squel[_0x93f3('0x5d')]();_0x2e9e6c[_0x93f3('0x5e')](_0x93f3('0x5f'))[_0x93f3('0x60')](_0x93f3('0x61'),'tq')[_0x93f3('0x62')](_0x93f3('0x63'),'ut',_0x93f3('0x64'))[_0x93f3('0x1f')](_0x93f3('0x65'),_0x1ccea1[_0x93f3('0x3a')]['id']);for(var _0x3fd3df=0x0;_0x3fd3df<_0x4598ac['length'];_0x3fd3df+=0x1){let _0x5e78d6=_0x4598ac[_0x3fd3df];for(var _0x5b40df=0x0;_0x5b40df<_0x5e78d6[_0x93f3('0x53')][_0x93f3('0x2b')];_0x5b40df+=0x1){let _0x1762e8=_0x5e78d6['Agents'][_0x5b40df];var _0x200e53=_0x2e9e6c[_0x93f3('0x66')]();_0x200e53[_0x93f3('0x1f')](_0x93f3('0x67'),_0x1762e8['id']);_0x2931d6['push'](db[_0x93f3('0x57')][_0x93f3('0x22')](_0x200e53[_0x93f3('0x68')](),{'type':db[_0x93f3('0x57')][_0x93f3('0x69')]['SELECT']})['then'](function(_0x2ffb0c){if(_0x2ffb0c['length']===0x1){return _0x1762e8['id'];}else{var _0x596e17=_[_0x93f3('0x6a')](_[_0x93f3('0x19')](_0x2ffb0c,_0x93f3('0x6b')),function(_0x3ffa42){return _[_0x93f3('0x6c')](_0x5a4d27,_0x3ffa42);});if(_0x596e17){return _0x1762e8['id'];}}}));}}return BPromise[_0x93f3('0x6d')](_0x2931d6)['then'](function(_0xca72c3){_0x6db23c=_(_0x6db23c)[_0x93f3('0x6e')](_0xca72c3)[_0x93f3('0x6f')]()[_0x93f3('0x70')]();return db[_0x93f3('0x1a')][_0x93f3('0x2f')]({'where':{'id':_0x1ccea1[_0x93f3('0x3a')]['id']}})['then'](function(_0x1bfe49){return db['sequelize'][_0x93f3('0x58')](function(_0x4fdbfd){return _0x1bfe49['removeTeams'](_0x1ccea1[_0x93f3('0x22')][_0x93f3('0x51')],{'transaction':_0x4fdbfd})['then'](function(){if(!_['isEmpty'](_0x6db23c)){return _0x1bfe49[_0x93f3('0x71')](_0x6db23c,{'transaction':_0x4fdbfd});}})[_0x93f3('0xf')](function(){_0x6db23c[_0x93f3('0x5a')](function(_0xf92bfe){socket[_0x93f3('0x72')]('userOpenchannelQueue:remove',{'UserId':_0xf92bfe,'OpenchannelQueueId':_0x1bfe49['id']});});});});});});})[_0x93f3('0xf')](respondWithStatusCode(_0x53ad2f,null))[_0x93f3('0x30')](handleError(_0x53ad2f,null));};exports[_0x93f3('0x73')]=function(_0x53f91f,_0x3f90e5){return db[_0x93f3('0x1a')][_0x93f3('0x2f')]({'where':{'id':_0x53f91f[_0x93f3('0x3a')]['id']}})[_0x93f3('0xf')](handleEntityNotFound(_0x3f90e5,null))['then'](function(_0x23acb4){if(_0x23acb4){return _0x23acb4[_0x93f3('0x73')](_0x53f91f['body'][_0x93f3('0x51')],_[_0x93f3('0x74')](_0x53f91f[_0x93f3('0x39')],[_0x93f3('0x51'),'id'])||{})[_0x93f3('0x75')](function(_0x2f5eef){for(var _0x1d242c=0x0;_0x1d242c<_0x53f91f[_0x93f3('0x39')][_0x93f3('0x51')][_0x93f3('0x2b')];_0x1d242c+=0x1){socket[_0x93f3('0x72')](_0x93f3('0x5b'),{'UserId':Number(_0x53f91f['body'][_0x93f3('0x51')][_0x1d242c]),'OpenchannelQueueId':Number(_0x53f91f[_0x93f3('0x3a')]['id'])});}return _0x2f5eef;});}})[_0x93f3('0xf')](respondWithResult(_0x3f90e5,null))['catch'](handleError(_0x3f90e5,null));};exports[_0x93f3('0x71')]=function(_0x5ac31e,_0x54ddf8){return db[_0x93f3('0x1a')]['find']({'where':{'id':_0x5ac31e[_0x93f3('0x3a')]['id']}})[_0x93f3('0xf')](handleEntityNotFound(_0x54ddf8,null))['then'](function(_0x4dcaa0){if(_0x4dcaa0){return _0x4dcaa0[_0x93f3('0x71')](_0x5ac31e[_0x93f3('0x22')][_0x93f3('0x51')])[_0x93f3('0xf')](function(){if(_[_0x93f3('0x76')](_0x5ac31e['query'][_0x93f3('0x51')])){for(var _0x32233d=0x0;_0x32233d<_0x5ac31e[_0x93f3('0x22')]['ids'][_0x93f3('0x2b')];_0x32233d+=0x1){socket[_0x93f3('0x72')]('userOpenchannelQueue:remove',{'UserId':Number(_0x5ac31e[_0x93f3('0x22')][_0x93f3('0x51')][_0x32233d]),'OpenchannelQueueId':Number(_0x5ac31e[_0x93f3('0x3a')]['id'])});}}else{socket[_0x93f3('0x72')](_0x93f3('0x77'),{'UserId':Number(_0x5ac31e[_0x93f3('0x22')][_0x93f3('0x51')]),'OpenchannelQueueId':Number(_0x5ac31e['params']['id'])});}});}})[_0x93f3('0xf')](respondWithStatusCode(_0x54ddf8,null))[_0x93f3('0x30')](handleError(_0x54ddf8,null));};exports['getAgents']=function(_0x3b9ae0,_0x2eab42){var _0x56905f={};var _0x54ad0d={};var _0x9ef088;var _0x5972db;return db[_0x93f3('0x1a')][_0x93f3('0x3c')]({'where':{'id':_0x3b9ae0[_0x93f3('0x3a')]['id']}})[_0x93f3('0xf')](handleEntityNotFound(_0x2eab42,null))[_0x93f3('0xf')](function(_0x550dc7){if(_0x550dc7){_0x9ef088=_0x550dc7;_0x54ad0d[_0x93f3('0x28')]=_['keys'](db[_0x93f3('0x44')][_0x93f3('0x24')]);_0x54ad0d[_0x93f3('0x22')]=_[_0x93f3('0x25')](_0x3b9ae0[_0x93f3('0x22')]);_0x54ad0d[_0x93f3('0x26')]=_['intersection'](_0x54ad0d[_0x93f3('0x28')],_0x54ad0d[_0x93f3('0x22')]);_0x56905f[_0x93f3('0x2a')]=_[_0x93f3('0x27')](_0x54ad0d[_0x93f3('0x28')],qs[_0x93f3('0x29')](_0x3b9ae0['query']['fields']));_0x56905f[_0x93f3('0x2a')]=_0x56905f[_0x93f3('0x2a')]['length']?_0x56905f[_0x93f3('0x2a')]:_0x54ad0d['model'];_0x56905f[_0x93f3('0x40')]=qs[_0x93f3('0x41')](_0x3b9ae0[_0x93f3('0x22')][_0x93f3('0x41')]);_0x56905f['where']=qs[_0x93f3('0x26')](_[_0x93f3('0x4f')](_0x3b9ae0['query'],_0x54ad0d[_0x93f3('0x26')]));if(_0x3b9ae0['query'][_0x93f3('0x42')]){_0x56905f['where']=_['merge'](_0x56905f[_0x93f3('0x1f')],{'$or':_['map'](_0x56905f[_0x93f3('0x2a')],function(_0x3d1f98){var _0x2f5656={};_0x2f5656[_0x3d1f98]={'$like':'%'+_0x3b9ae0['query'][_0x93f3('0x42')]+'%'};return _0x2f5656;})});}_0x56905f=_['merge']({},_0x56905f,_0x3b9ae0[_0x93f3('0x2e')]);return _0x9ef088[_0x93f3('0x78')](_0x56905f);}})[_0x93f3('0xf')](function(_0x393e16){if(_0x393e16){_0x5972db=_0x393e16[_0x93f3('0x2b')];if(!_0x3b9ae0[_0x93f3('0x22')][_0x93f3('0x3e')](_0x93f3('0x3f'))){_0x56905f[_0x93f3('0xd')]=qs[_0x93f3('0xd')](_0x3b9ae0[_0x93f3('0x22')][_0x93f3('0xd')]);_0x56905f[_0x93f3('0xb')]=qs[_0x93f3('0xb')](_0x3b9ae0['query']['offset']);}return _0x9ef088[_0x93f3('0x78')](_0x56905f);}})[_0x93f3('0xf')](function(_0x2e36c5){if(_0x2e36c5){return _0x2e36c5?{'count':_0x5972db,'rows':_0x2e36c5}:null;}})[_0x93f3('0xf')](respondWithResult(_0x2eab42,null))['catch'](handleError(_0x2eab42,null));};
\ No newline at end of file
+var _0x6901=['length','order','sort','OpenchannelQueueId','filter','merge','map','options','User','findAndCountAll','agent','createdAt','format','SIP','openchannelPause','updatedAt','getTeams','Team','pick','hasOwnProperty','nolimit','addTeams','ids','Agents','online','voicePause','flatMap','sequelize','transaction','findOrCreate','emit','userOpenchannelQueue:save','removeTeams','select','field','tq.TeamId','from','join','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','SELECT','every','TeamId','includes','all','isEmpty','removeAgents','forEach','userOpenchannelQueue:remove','isArray','getAgents','util','lodash','ioredis','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status','offset','undefined','limit','count','set','json','update','then','get','OpenchannelQueues','UserProfileResource','end','error','stack','name','send','index','OpenchannelQueue','rawAttributes','type','getOptions','where','include','query','findAll','rows','catch','show','params','model','keys','filters','intersection','fields','attributes','includeAll','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','describe','getMembers','findOne','UserOpenchannelQueue'];(function(_0x33f750,_0x3a0638){var _0xd2186a=function(_0x20b011){while(--_0x20b011){_0x33f750['push'](_0x33f750['shift']());}};_0xd2186a(++_0x3a0638);}(_0x6901,0x121));var _0x1690=function(_0x59859d,_0xe87a8a){_0x59859d=_0x59859d-0x0;var _0x3b6a99=_0x6901[_0x59859d];return _0x3b6a99;};'use strict';var BPromise=require('bluebird');var util=require(_0x1690('0x0'));var _=require(_0x1690('0x1'));var squel=require('squel');var Redis=require(_0x1690('0x2'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0x1690('0x3'));var config=require(_0x1690('0x4'));var db=require('../../mysqldb')['db'];config[_0x1690('0x5')]=_[_0x1690('0x6')](config[_0x1690('0x5')],{'host':_0x1690('0x7'),'port':0x18eb});var socket=require(_0x1690('0x8'))(new Redis(config[_0x1690('0x5')]));require(_0x1690('0x9'))[_0x1690('0xa')](socket);function respondWithStatusCode(_0x2616ad,_0x638196){_0x638196=_0x638196||0xcc;return function(_0x2e54a4){if(_0x2e54a4){return _0x2616ad[_0x1690('0xb')](_0x638196);}return _0x2616ad[_0x1690('0xc')](_0x638196)['end']();};}function respondWithResult(_0x2cba26,_0x544c0c){_0x544c0c=_0x544c0c||0xc8;return function(_0x3d6bec){if(_0x3d6bec){return _0x2cba26[_0x1690('0xc')](_0x544c0c)['json'](_0x3d6bec);}};}function respondWithFilteredResult(_0x56ef23,_0x529c93){return function(_0x419d40){if(_0x419d40){var _0x34d922=typeof _0x529c93[_0x1690('0xd')]===_0x1690('0xe')&&typeof _0x529c93[_0x1690('0xf')]===_0x1690('0xe');var _0x539e8a=_0x419d40[_0x1690('0x10')];var _0x214117=_0x34d922?0x0:_0x529c93[_0x1690('0xd')];var _0x1c020c=_0x34d922?_0x419d40[_0x1690('0x10')]:_0x529c93[_0x1690('0xd')]+_0x529c93['limit'];var _0x510754;if(_0x1c020c>=_0x539e8a){_0x1c020c=_0x539e8a;_0x510754=0xc8;}else{_0x510754=0xce;}_0x56ef23[_0x1690('0xc')](_0x510754);return _0x56ef23[_0x1690('0x11')]('Content-Range',_0x214117+'-'+_0x1c020c+'/'+_0x539e8a)[_0x1690('0x12')](_0x419d40);}return null;};}function saveUpdates(_0x14981a){return function(_0x3589dc){if(_0x3589dc){return _0x3589dc[_0x1690('0x13')](_0x14981a)['then'](function(_0x1cb8e3){return _0x1cb8e3;});}return null;};}function removeEntity(_0x3b46b3){return function(_0x45c0e4){if(_0x45c0e4){return _0x45c0e4['destroy']()[_0x1690('0x14')](function(){var _0xc4f2a4=_0x45c0e4[_0x1690('0x15')]({'plain':!![]});var _0x3d22c7=_0x1690('0x16');return db[_0x1690('0x17')]['destroy']({'where':{'type':_0x3d22c7,'resourceId':_0xc4f2a4['id']}})[_0x1690('0x14')](function(){return _0x45c0e4;});})[_0x1690('0x14')](function(){_0x3b46b3[_0x1690('0xc')](0xcc)[_0x1690('0x18')]();});}};}function handleEntityNotFound(_0x453d3b){return function(_0x1579f5){if(!_0x1579f5){_0x453d3b['sendStatus'](0x194);}return _0x1579f5;};}function handleError(_0x3a4413,_0xb3759e){_0xb3759e=_0xb3759e||0x1f4;return function(_0x1a645a){logger[_0x1690('0x19')](_0x1a645a[_0x1690('0x1a')]);if(_0x1a645a[_0x1690('0x1b')]){delete _0x1a645a[_0x1690('0x1b')];}_0x3a4413['status'](_0xb3759e)[_0x1690('0x1c')](_0x1a645a);};}exports[_0x1690('0x1d')]=function(_0xf6a9ab,_0x5fd6e6){var _0xc345f2={};var _0x311184={'count':0x0,'rows':[]};var _0x2eeeb6=_['map'](db[_0x1690('0x1e')][_0x1690('0x1f')],function(_0x39126a){return{'name':_0x39126a['fieldName'],'type':_0x39126a[_0x1690('0x20')]['key']};});_0xc345f2=qs[_0x1690('0x21')](_0x2eeeb6,_0xf6a9ab);var _0x17cc41={'where':_0xc345f2[_0x1690('0x22')]};return db[_0x1690('0x1e')]['count'](_0x17cc41)[_0x1690('0x14')](function(_0x491348){_0x311184[_0x1690('0x10')]=_0x491348;_0xc345f2[_0x1690('0x23')]=qs['include'](_0xf6a9ab[_0x1690('0x24')]);return db[_0x1690('0x1e')][_0x1690('0x25')](_0xc345f2);})[_0x1690('0x14')](function(_0x20e077){_0x311184[_0x1690('0x26')]=_0x20e077;return _0x311184;})['then'](respondWithFilteredResult(_0x5fd6e6,_0xc345f2))[_0x1690('0x27')](handleError(_0x5fd6e6,null));};exports[_0x1690('0x28')]=function(_0x568bec,_0x3db6e7){var _0x54896f={'raw':!![],'where':{'id':_0x568bec[_0x1690('0x29')]['id']}},_0x2b29e5={};_0x2b29e5[_0x1690('0x2a')]=_['keys'](db[_0x1690('0x1e')][_0x1690('0x1f')]);_0x2b29e5[_0x1690('0x24')]=_[_0x1690('0x2b')](_0x568bec[_0x1690('0x24')]);_0x2b29e5[_0x1690('0x2c')]=_[_0x1690('0x2d')](_0x2b29e5[_0x1690('0x2a')],_0x2b29e5['query']);_0x54896f['attributes']=_[_0x1690('0x2d')](_0x2b29e5[_0x1690('0x2a')],qs[_0x1690('0x2e')](_0x568bec[_0x1690('0x24')][_0x1690('0x2e')]));_0x54896f[_0x1690('0x2f')]=_0x54896f[_0x1690('0x2f')]['length']?_0x54896f[_0x1690('0x2f')]:_0x2b29e5['model'];if(_0x568bec[_0x1690('0x24')][_0x1690('0x30')]){_0x54896f[_0x1690('0x23')]=[{'all':!![]}];}_0x54896f=_['merge']({},_0x54896f,_0x568bec['options']);return db[_0x1690('0x1e')][_0x1690('0x31')](_0x54896f)[_0x1690('0x14')](handleEntityNotFound(_0x3db6e7,null))[_0x1690('0x14')](respondWithResult(_0x3db6e7,null))[_0x1690('0x27')](handleError(_0x3db6e7,null));};exports[_0x1690('0x32')]=function(_0x80196,_0x428317){return db[_0x1690('0x1e')]['create'](_0x80196['body'],{})['then'](function(_0x1cbbe5){var _0x258463=_0x80196['user'][_0x1690('0x15')]({'plain':!![]});if(!_0x258463)throw new Error(_0x1690('0x33'));if(_0x258463[_0x1690('0x34')]===_0x1690('0x35')){var _0x2393df=_0x1cbbe5['get']({'plain':!![]});var _0x3d679c=_0x1690('0x16');return db['UserProfileSection'][_0x1690('0x31')]({'where':{'name':_0x3d679c,'userProfileId':_0x258463[_0x1690('0x36')]},'raw':!![]})[_0x1690('0x14')](function(_0xf6c1cc){if(_0xf6c1cc&&_0xf6c1cc['autoAssociation']===0x0){return db[_0x1690('0x17')]['create']({'name':_0x2393df['name'],'resourceId':_0x2393df['id'],'type':_0xf6c1cc[_0x1690('0x1b')],'sectionId':_0xf6c1cc['id']},{})[_0x1690('0x14')](function(){return _0x1cbbe5;});}else{return _0x1cbbe5;}})[_0x1690('0x27')](function(_0x189814){logger[_0x1690('0x19')](_0x1690('0x37'),_0x189814);throw _0x189814;});}return _0x1cbbe5;})['then'](respondWithResult(_0x428317,0xc9))[_0x1690('0x27')](handleError(_0x428317,null));};exports['update']=function(_0x21a189,_0x1d5b1f){if(_0x21a189['body']['id']){delete _0x21a189[_0x1690('0x38')]['id'];}return db[_0x1690('0x1e')][_0x1690('0x31')]({'where':{'id':_0x21a189[_0x1690('0x29')]['id']}})['then'](handleEntityNotFound(_0x1d5b1f,null))[_0x1690('0x14')](saveUpdates(_0x21a189[_0x1690('0x38')],null))[_0x1690('0x14')](respondWithResult(_0x1d5b1f,null))[_0x1690('0x27')](handleError(_0x1d5b1f,null));};exports[_0x1690('0x39')]=function(_0x546502,_0x4171e5){return db[_0x1690('0x1e')]['find']({'where':{'id':_0x546502[_0x1690('0x29')]['id']}})['then'](handleEntityNotFound(_0x4171e5,null))['then'](removeEntity(_0x4171e5,null))[_0x1690('0x27')](handleError(_0x4171e5,null));};exports[_0x1690('0x3a')]=function(_0x525bf5,_0x5537ab){return db['OpenchannelQueue'][_0x1690('0x3a')]()['then'](respondWithResult(_0x5537ab,null))[_0x1690('0x27')](handleError(_0x5537ab,null));};exports[_0x1690('0x3b')]=function(_0x14f32a,_0xaa6bc9){var _0x10d0a9={'raw':!![],'where':{}},_0x340410={},_0x38f307;return db[_0x1690('0x1e')][_0x1690('0x3c')]({'where':{'id':_0x14f32a[_0x1690('0x29')]['id']}})['then'](handleEntityNotFound(_0xaa6bc9,null))[_0x1690('0x14')](function(_0x4be6bc){if(_0x4be6bc){_0x38f307=_0x4be6bc[_0x1690('0x15')]({'plain':!![]});_0x340410[_0x1690('0x2a')]=_[_0x1690('0x2b')](db[_0x1690('0x3d')][_0x1690('0x1f')]);_0x340410['query']=_[_0x1690('0x2b')](_0x14f32a[_0x1690('0x24')]);_0x340410['filters']=_[_0x1690('0x2d')](_0x340410['model'],_0x340410[_0x1690('0x24')]);_0x10d0a9['attributes']=_[_0x1690('0x2d')](_0x340410['model'],qs['fields'](_0x14f32a[_0x1690('0x24')][_0x1690('0x2e')]));_0x10d0a9['attributes']=_0x10d0a9['attributes'][_0x1690('0x3e')]?_0x10d0a9['attributes']:_0x340410[_0x1690('0x2a')];if(!_0x14f32a[_0x1690('0x24')]['hasOwnProperty']('nolimit')){_0x10d0a9['limit']=qs[_0x1690('0xf')](_0x14f32a[_0x1690('0x24')][_0x1690('0xf')]);_0x10d0a9[_0x1690('0xd')]=qs[_0x1690('0xd')](_0x14f32a[_0x1690('0x24')][_0x1690('0xd')]);}_0x10d0a9[_0x1690('0x3f')]=qs[_0x1690('0x40')](_0x14f32a['query'][_0x1690('0x40')]);_0x10d0a9[_0x1690('0x22')]=qs[_0x1690('0x2c')](_['pick'](_0x14f32a['query'],_0x340410[_0x1690('0x2c')]));_0x10d0a9['where'][_0x1690('0x41')]=_0x4be6bc['id'];if(_0x14f32a[_0x1690('0x24')][_0x1690('0x42')]){_0x10d0a9[_0x1690('0x22')]=_[_0x1690('0x43')](_0x10d0a9[_0x1690('0x22')],{'$or':_[_0x1690('0x44')](_0x10d0a9[_0x1690('0x2f')],function(_0x53ff77){var _0xaf59d4={};_0xaf59d4[_0x53ff77]={'$like':'%'+_0x14f32a[_0x1690('0x24')][_0x1690('0x42')]+'%'};return _0xaf59d4;})});}_0x10d0a9=_['merge']({},_0x10d0a9,_0x14f32a[_0x1690('0x45')]);return db['UserOpenchannelQueue']['findAll'](_0x10d0a9);}})[_0x1690('0x14')](function(_0x23bfc5){if(_0x23bfc5){return db[_0x1690('0x46')][_0x1690('0x47')]({'where':{'id':_['map'](_0x23bfc5,'UserId'),'role':_0x1690('0x48')},'attributes':['id',_0x1690('0x1b'),'openchannelPause','updatedAt',_0x1690('0x49')]});}})['then'](function(_0x3dc97e){if(_0x3dc97e){return{'count':_0x3dc97e[_0x1690('0x10')],'rows':_[_0x1690('0x44')](_0x3dc97e['rows'],function(_0x22a3ea){return{'membername':_0x22a3ea[_0x1690('0x1b')],'UserId':_0x22a3ea['id'],'queue_name':_0x38f307[_0x1690('0x1b')],'OpenchannelQueueId':_0x38f307['id'],'interface':util[_0x1690('0x4a')]('%s/%s',_0x1690('0x4b'),_0x22a3ea[_0x1690('0x1b')]),'penalty':0x0,'paused':_0x22a3ea[_0x1690('0x4c')],'createdAt':_0x22a3ea[_0x1690('0x49')],'updatedAt':_0x22a3ea[_0x1690('0x4d')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0xaa6bc9,_0x10d0a9))[_0x1690('0x27')](handleError(_0xaa6bc9,null));};exports[_0x1690('0x4e')]=function(_0x492f28,_0xcf57d1){var _0x49d80e={};var _0x4db75d={};var _0x3ccb56;var _0x4689ed;return db[_0x1690('0x1e')][_0x1690('0x3c')]({'where':{'id':_0x492f28[_0x1690('0x29')]['id']}})[_0x1690('0x14')](handleEntityNotFound(_0xcf57d1,null))[_0x1690('0x14')](function(_0x254de){if(_0x254de){_0x3ccb56=_0x254de;_0x4db75d[_0x1690('0x2a')]=_['keys'](db[_0x1690('0x4f')][_0x1690('0x1f')]);_0x4db75d[_0x1690('0x24')]=_[_0x1690('0x2b')](_0x492f28[_0x1690('0x24')]);_0x4db75d['filters']=_[_0x1690('0x2d')](_0x4db75d['model'],_0x4db75d[_0x1690('0x24')]);_0x49d80e['attributes']=_[_0x1690('0x2d')](_0x4db75d[_0x1690('0x2a')],qs['fields'](_0x492f28[_0x1690('0x24')]['fields']));_0x49d80e[_0x1690('0x2f')]=_0x49d80e[_0x1690('0x2f')][_0x1690('0x3e')]?_0x49d80e[_0x1690('0x2f')]:_0x4db75d[_0x1690('0x2a')];_0x49d80e[_0x1690('0x3f')]=qs[_0x1690('0x40')](_0x492f28[_0x1690('0x24')][_0x1690('0x40')]);_0x49d80e[_0x1690('0x22')]=qs[_0x1690('0x2c')](_[_0x1690('0x50')](_0x492f28[_0x1690('0x24')],_0x4db75d[_0x1690('0x2c')]));if(_0x492f28[_0x1690('0x24')][_0x1690('0x42')]){_0x49d80e[_0x1690('0x22')]=_[_0x1690('0x43')](_0x49d80e[_0x1690('0x22')],{'$or':_[_0x1690('0x44')](_0x49d80e['attributes'],function(_0x1987da){var _0x418eb2={};_0x418eb2[_0x1987da]={'$like':'%'+_0x492f28[_0x1690('0x24')]['filter']+'%'};return _0x418eb2;})});}_0x49d80e=_[_0x1690('0x43')]({},_0x49d80e,_0x492f28[_0x1690('0x45')]);return _0x3ccb56['getTeams'](_0x49d80e);}})[_0x1690('0x14')](function(_0x4af6f5){if(_0x4af6f5){_0x4689ed=_0x4af6f5[_0x1690('0x3e')];if(!_0x492f28[_0x1690('0x24')][_0x1690('0x51')](_0x1690('0x52'))){_0x49d80e[_0x1690('0xf')]=qs['limit'](_0x492f28[_0x1690('0x24')][_0x1690('0xf')]);_0x49d80e[_0x1690('0xd')]=qs[_0x1690('0xd')](_0x492f28[_0x1690('0x24')][_0x1690('0xd')]);}return _0x3ccb56['getTeams'](_0x49d80e);}})[_0x1690('0x14')](function(_0x46280a){if(_0x46280a){return _0x46280a?{'count':_0x4689ed,'rows':_0x46280a}:null;}})['then'](respondWithResult(_0xcf57d1,null))['catch'](handleError(_0xcf57d1,null));};exports[_0x1690('0x53')]=function(_0x548ef2,_0x5ab3ec){var _0x15c5d9=_0x548ef2[_0x1690('0x38')][_0x1690('0x54')];return db[_0x1690('0x4f')][_0x1690('0x25')]({'where':{'id':_0x15c5d9},'attributes':['id'],'include':[{'model':db[_0x1690('0x46')],'as':_0x1690('0x55'),'attributes':['id',_0x1690('0x1b'),_0x1690('0x56'),_0x1690('0x57'),'interface'],'raw':!![]}]})[_0x1690('0x14')](function(_0x1d30dc){if(_0x1d30dc){var _0x3adc77=_[_0x1690('0x58')](_0x1d30dc,function(_0x1cca28){var _0x84c994=_0x1cca28[_0x1690('0x15')]({'plain':!![]});return _0x84c994[_0x1690('0x55')];});return db[_0x1690('0x1e')][_0x1690('0x31')]({'where':{'id':_0x548ef2['params']['id']}})['then'](function(_0x10aa5f){return db[_0x1690('0x59')][_0x1690('0x5a')](function(_0x45cd75){return _0x10aa5f[_0x1690('0x53')](_0x15c5d9,{'transaction':_0x45cd75})[_0x1690('0x14')](function(){return BPromise['each'](_0x3adc77,function(_0x44a796){return db['UserOpenchannelQueue'][_0x1690('0x5b')]({'where':{'UserId':_0x44a796['id'],'OpenchannelQueueId':_0x548ef2[_0x1690('0x29')]['id']},'transaction':_0x45cd75});});})[_0x1690('0x14')](function(){_0x3adc77['forEach'](function(_0x3a8b56){socket[_0x1690('0x5c')](_0x1690('0x5d'),{'UserId':_0x3a8b56['id'],'OpenchannelQueueId':_0x10aa5f['id']});});});});});}})[_0x1690('0x14')](respondWithStatusCode(_0x5ab3ec,null))['catch'](handleError(_0x5ab3ec,null));};exports[_0x1690('0x5e')]=function(_0x31c2b8,_0x367e11){return db[_0x1690('0x4f')][_0x1690('0x25')]({'where':{'id':_0x31c2b8[_0x1690('0x24')][_0x1690('0x54')]},'attributes':['id'],'include':[{'model':db[_0x1690('0x46')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x367e11,null))[_0x1690('0x14')](function(_0x4f909e){var _0x212c38=_[_0x1690('0x44')](_0x4f909e,'id');var _0x41746e=[];var _0x4dcc21=[];var _0x561f2c=squel[_0x1690('0x5f')]();_0x561f2c[_0x1690('0x60')](_0x1690('0x61'))[_0x1690('0x62')]('team_has_openchannel_queues','tq')[_0x1690('0x63')]('user_has_teams','ut',_0x1690('0x64'))[_0x1690('0x22')](_0x1690('0x65'),_0x31c2b8[_0x1690('0x29')]['id']);for(var _0x8337f0=0x0;_0x8337f0<_0x4f909e['length'];_0x8337f0+=0x1){let _0x4559b7=_0x4f909e[_0x8337f0];for(var _0x26cbcd=0x0;_0x26cbcd<_0x4559b7[_0x1690('0x55')]['length'];_0x26cbcd+=0x1){let _0x477e0c=_0x4559b7[_0x1690('0x55')][_0x26cbcd];var _0x2434c8=_0x561f2c[_0x1690('0x66')]();_0x2434c8[_0x1690('0x22')](_0x1690('0x67'),_0x477e0c['id']);_0x4dcc21[_0x1690('0x68')](db[_0x1690('0x59')][_0x1690('0x24')](_0x2434c8[_0x1690('0x69')](),{'type':db[_0x1690('0x59')]['QueryTypes'][_0x1690('0x6a')]})[_0x1690('0x14')](function(_0x3f2941){if(_0x3f2941[_0x1690('0x3e')]===0x1){return _0x477e0c['id'];}else{var _0x368e8b=_[_0x1690('0x6b')](_[_0x1690('0x44')](_0x3f2941,_0x1690('0x6c')),function(_0x489088){return _[_0x1690('0x6d')](_0x212c38,_0x489088);});if(_0x368e8b){return _0x477e0c['id'];}}}));}}return BPromise[_0x1690('0x6e')](_0x4dcc21)[_0x1690('0x14')](function(_0x23f3e4){_0x41746e=_(_0x41746e)['union'](_0x23f3e4)['compact']()['value']();return db[_0x1690('0x1e')][_0x1690('0x31')]({'where':{'id':_0x31c2b8['params']['id']}})['then'](function(_0x1c01d7){return db['sequelize'][_0x1690('0x5a')](function(_0x190f44){return _0x1c01d7[_0x1690('0x5e')](_0x31c2b8['query'][_0x1690('0x54')],{'transaction':_0x190f44})[_0x1690('0x14')](function(){if(!_[_0x1690('0x6f')](_0x41746e)){return _0x1c01d7[_0x1690('0x70')](_0x41746e,{'transaction':_0x190f44});}})[_0x1690('0x14')](function(){_0x41746e[_0x1690('0x71')](function(_0x3599aa){socket[_0x1690('0x5c')](_0x1690('0x72'),{'UserId':_0x3599aa,'OpenchannelQueueId':_0x1c01d7['id']});});});});});});})[_0x1690('0x14')](respondWithStatusCode(_0x367e11,null))[_0x1690('0x27')](handleError(_0x367e11,null));};exports['addAgents']=function(_0x19f149,_0x77e518){return db[_0x1690('0x1e')][_0x1690('0x31')]({'where':{'id':_0x19f149['params']['id']}})[_0x1690('0x14')](handleEntityNotFound(_0x77e518,null))[_0x1690('0x14')](function(_0x35d216){if(_0x35d216){return _0x35d216['addAgents'](_0x19f149['body'][_0x1690('0x54')],_['omit'](_0x19f149[_0x1690('0x38')],[_0x1690('0x54'),'id'])||{})['spread'](function(_0xed7858){for(var _0x4228fb=0x0;_0x4228fb<_0x19f149[_0x1690('0x38')][_0x1690('0x54')]['length'];_0x4228fb+=0x1){socket[_0x1690('0x5c')](_0x1690('0x5d'),{'UserId':Number(_0x19f149[_0x1690('0x38')][_0x1690('0x54')][_0x4228fb]),'OpenchannelQueueId':Number(_0x19f149['params']['id'])});}return _0xed7858;});}})[_0x1690('0x14')](respondWithResult(_0x77e518,null))['catch'](handleError(_0x77e518,null));};exports[_0x1690('0x70')]=function(_0x328df5,_0x2c6845){return db[_0x1690('0x1e')][_0x1690('0x31')]({'where':{'id':_0x328df5[_0x1690('0x29')]['id']}})[_0x1690('0x14')](handleEntityNotFound(_0x2c6845,null))[_0x1690('0x14')](function(_0x454d0a){if(_0x454d0a){return _0x454d0a[_0x1690('0x70')](_0x328df5['query']['ids'])['then'](function(){if(_[_0x1690('0x73')](_0x328df5['query'][_0x1690('0x54')])){for(var _0x4e5262=0x0;_0x4e5262<_0x328df5[_0x1690('0x24')][_0x1690('0x54')][_0x1690('0x3e')];_0x4e5262+=0x1){socket['emit'](_0x1690('0x72'),{'UserId':Number(_0x328df5[_0x1690('0x24')][_0x1690('0x54')][_0x4e5262]),'OpenchannelQueueId':Number(_0x328df5[_0x1690('0x29')]['id'])});}}else{socket[_0x1690('0x5c')]('userOpenchannelQueue:remove',{'UserId':Number(_0x328df5[_0x1690('0x24')][_0x1690('0x54')]),'OpenchannelQueueId':Number(_0x328df5[_0x1690('0x29')]['id'])});}});}})[_0x1690('0x14')](respondWithStatusCode(_0x2c6845,null))[_0x1690('0x27')](handleError(_0x2c6845,null));};exports['getAgents']=function(_0x220d47,_0x4dc8e0){var _0x335bd2={};var _0xd3c61a={};var _0x43688c;var _0xcb60e2;return db['OpenchannelQueue'][_0x1690('0x3c')]({'where':{'id':_0x220d47[_0x1690('0x29')]['id']}})[_0x1690('0x14')](handleEntityNotFound(_0x4dc8e0,null))['then'](function(_0x2877ab){if(_0x2877ab){_0x43688c=_0x2877ab;_0xd3c61a[_0x1690('0x2a')]=_[_0x1690('0x2b')](db['User'][_0x1690('0x1f')]);_0xd3c61a[_0x1690('0x24')]=_[_0x1690('0x2b')](_0x220d47[_0x1690('0x24')]);_0xd3c61a[_0x1690('0x2c')]=_[_0x1690('0x2d')](_0xd3c61a[_0x1690('0x2a')],_0xd3c61a['query']);_0x335bd2[_0x1690('0x2f')]=_[_0x1690('0x2d')](_0xd3c61a[_0x1690('0x2a')],qs[_0x1690('0x2e')](_0x220d47[_0x1690('0x24')][_0x1690('0x2e')]));_0x335bd2['attributes']=_0x335bd2[_0x1690('0x2f')][_0x1690('0x3e')]?_0x335bd2['attributes']:_0xd3c61a[_0x1690('0x2a')];_0x335bd2[_0x1690('0x3f')]=qs[_0x1690('0x40')](_0x220d47['query'][_0x1690('0x40')]);_0x335bd2[_0x1690('0x22')]=qs[_0x1690('0x2c')](_[_0x1690('0x50')](_0x220d47[_0x1690('0x24')],_0xd3c61a[_0x1690('0x2c')]));if(_0x220d47[_0x1690('0x24')][_0x1690('0x42')]){_0x335bd2['where']=_[_0x1690('0x43')](_0x335bd2['where'],{'$or':_[_0x1690('0x44')](_0x335bd2[_0x1690('0x2f')],function(_0x535f7b){var _0x1fcef8={};_0x1fcef8[_0x535f7b]={'$like':'%'+_0x220d47[_0x1690('0x24')][_0x1690('0x42')]+'%'};return _0x1fcef8;})});}_0x335bd2=_['merge']({},_0x335bd2,_0x220d47[_0x1690('0x45')]);return _0x43688c[_0x1690('0x74')](_0x335bd2);}})['then'](function(_0x47f1ac){if(_0x47f1ac){_0xcb60e2=_0x47f1ac['length'];if(!_0x220d47[_0x1690('0x24')][_0x1690('0x51')](_0x1690('0x52'))){_0x335bd2['limit']=qs['limit'](_0x220d47[_0x1690('0x24')][_0x1690('0xf')]);_0x335bd2['offset']=qs[_0x1690('0xd')](_0x220d47[_0x1690('0x24')][_0x1690('0xd')]);}return _0x43688c[_0x1690('0x74')](_0x335bd2);}})[_0x1690('0x14')](function(_0x43c5ec){if(_0x43c5ec){return _0x43c5ec?{'count':_0xcb60e2,'rows':_0x43c5ec}:null;}})['then'](respondWithResult(_0x4dc8e0,null))[_0x1690('0x27')](handleError(_0x4dc8e0,null));};
\ No newline at end of file
index ff54442..4007d4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44c1=['remove','emit','hasOwnProperty','hook','exports','events','OpenchannelQueue','setMaxListeners','save','update'];(function(_0x201490,_0x235e70){var _0x1479df=function(_0xb018ba){while(--_0xb018ba){_0x201490['push'](_0x201490['shift']());}};_0x1479df(++_0x235e70);}(_0x44c1,0x1a9));var _0x144c=function(_0x5de8bf,_0x24e115){_0x5de8bf=_0x5de8bf-0x0;var _0x2be3e3=_0x44c1[_0x5de8bf];return _0x2be3e3;};'use strict';var EventEmitter=require(_0x144c('0x0'));var OpenchannelQueue=require('../../mysqldb')['db'][_0x144c('0x1')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x144c('0x2')](0x0);var events={'afterCreate':_0x144c('0x3'),'afterUpdate':_0x144c('0x4'),'afterDestroy':_0x144c('0x5')};function emitEvent(_0x4e4bd8){return function(_0x4566c5,_0xd92341,_0xbcebf4){OpenchannelQueueEvents[_0x144c('0x6')](_0x4e4bd8+':'+_0x4566c5['id'],_0x4566c5);OpenchannelQueueEvents[_0x144c('0x6')](_0x4e4bd8,_0x4566c5);_0xbcebf4(null);};}for(var e in events){if(events[_0x144c('0x7')](e)){var event=events[e];OpenchannelQueue[_0x144c('0x8')](e,emitEvent(event));}}module[_0x144c('0x9')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x3d44=['hook','events','../../mysqldb','OpenchannelQueue','setMaxListeners','save','emit','hasOwnProperty'];(function(_0x5b0e3f,_0x342b9b){var _0x3a5531=function(_0x17a7d){while(--_0x17a7d){_0x5b0e3f['push'](_0x5b0e3f['shift']());}};_0x3a5531(++_0x342b9b);}(_0x3d44,0x199));var _0x43d4=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x3d44[_0x164eca];return _0x2ce562;};'use strict';var EventEmitter=require(_0x43d4('0x0'));var OpenchannelQueue=require(_0x43d4('0x1'))['db'][_0x43d4('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x43d4('0x3')](0x0);var events={'afterCreate':_0x43d4('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xc83f52){return function(_0x1be915,_0x33bce5,_0x2a808c){OpenchannelQueueEvents[_0x43d4('0x5')](_0xc83f52+':'+_0x1be915['id'],_0x1be915);OpenchannelQueueEvents[_0x43d4('0x5')](_0xc83f52,_0x1be915);_0x2a808c(null);};}for(var e in events){if(events[_0x43d4('0x6')](e)){var event=events[e];OpenchannelQueue[_0x43d4('0x7')](e,emitEvent(event));}}module['exports']=OpenchannelQueueEvents;
\ No newline at end of file
index 4d5369e..af8ecef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c69=['bluebird','request-promise','path','../../config/environment','./openchannelQueue.attributes','exports','define','lodash','util','api','moment'];(function(_0x126006,_0x29d087){var _0x4df414=function(_0xf90add){while(--_0xf90add){_0x126006['push'](_0x126006['shift']());}};_0x4df414(++_0x29d087);}(_0x3c69,0x167));var _0x93c6=function(_0x2002b3,_0x11e91c){_0x2002b3=_0x2002b3-0x0;var _0x2756f0=_0x3c69[_0x2002b3];return _0x2756f0;};'use strict';var _=require(_0x93c6('0x0'));var util=require(_0x93c6('0x1'));var logger=require('../../config/logger')(_0x93c6('0x2'));var moment=require(_0x93c6('0x3'));var BPromise=require(_0x93c6('0x4'));var rp=require(_0x93c6('0x5'));var fs=require('fs');var path=require(_0x93c6('0x6'));var rimraf=require('rimraf');var config=require(_0x93c6('0x7'));var attributes=require(_0x93c6('0x8'));module[_0x93c6('0x9')]=function(_0x48c28d,_0x202d72){return _0x48c28d[_0x93c6('0xa')]('OpenchannelQueue',attributes,{'tableName':'openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa064=['OpenchannelQueue','openchannel_queues','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./openchannelQueue.attributes','exports','define'];(function(_0x5bc158,_0x20ba90){var _0x288d43=function(_0x4e1c7f){while(--_0x4e1c7f){_0x5bc158['push'](_0x5bc158['shift']());}};_0x288d43(++_0x20ba90);}(_0xa064,0x176));var _0x4a06=function(_0x2e97bf,_0x569e2b){_0x2e97bf=_0x2e97bf-0x0;var _0x3b2110=_0xa064[_0x2e97bf];return _0x3b2110;};'use strict';var _=require('lodash');var util=require(_0x4a06('0x0'));var logger=require(_0x4a06('0x1'))(_0x4a06('0x2'));var moment=require('moment');var BPromise=require(_0x4a06('0x3'));var rp=require(_0x4a06('0x4'));var fs=require('fs');var path=require(_0x4a06('0x5'));var rimraf=require('rimraf');var config=require(_0x4a06('0x6'));var attributes=require(_0x4a06('0x7'));module[_0x4a06('0x8')]=function(_0x50797a,_0x465b67){return _0x50797a[_0x4a06('0x9')](_0x4a06('0xa'),attributes,{'tableName':_0x4a06('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 78c8224..6656484 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1181=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./openchannelQueue.socket','then','info','OpenchannelQueue,\x20%s,\x20%s','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','findAll','options','raw','where','limit','include','map','model','GetOpenchannelQueue','ShowOpenchannelQueue','OpenchannelQueue','find','attributes','lodash','util','moment','bluebird','ioredis'];(function(_0x39cbd7,_0x91ffe2){var _0x44ce24=function(_0x3c71d1){while(--_0x3c71d1){_0x39cbd7['push'](_0x39cbd7['shift']());}};_0x44ce24(++_0x91ffe2);}(_0x1181,0xe5));var _0x1118=function(_0x2ddfd9,_0x5877d0){_0x2ddfd9=_0x2ddfd9-0x0;var _0x2668f0=_0x1181[_0x2ddfd9];return _0x2668f0;};'use strict';var _=require(_0x1118('0x0'));var util=require(_0x1118('0x1'));var moment=require(_0x1118('0x2'));var BPromise=require(_0x1118('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1118('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x1118('0x5'));var logger=require(_0x1118('0x6'))(_0x1118('0x7'));var config=require(_0x1118('0x8'));var jayson=require(_0x1118('0x9'));var client=jayson[_0x1118('0xa')]['http']({'port':0x232a});config[_0x1118('0xb')]=_['defaults'](config[_0x1118('0xb')],{'host':_0x1118('0xc'),'port':0x18eb});var socket=require(_0x1118('0xd'))(new Redis(config[_0x1118('0xb')]));require(_0x1118('0xe'))['register'](socket);function respondWithRpcPromise(_0x21276e,_0x4e0343,_0x3f191e){return new BPromise(function(_0x3c5028,_0x5a4200){return client['request'](_0x21276e,_0x3f191e)[_0x1118('0xf')](function(_0x42e0c2){logger[_0x1118('0x10')](_0x1118('0x11'),_0x4e0343,'request\x20sent');logger[_0x1118('0x12')](_0x1118('0x13'),_0x4e0343,_0x1118('0x14'),JSON[_0x1118('0x15')](_0x42e0c2));if(_0x42e0c2[_0x1118('0x16')]){if(_0x42e0c2[_0x1118('0x16')]['code']===0x1f4){logger[_0x1118('0x16')](_0x1118('0x11'),_0x4e0343,_0x42e0c2[_0x1118('0x16')][_0x1118('0x17')]);return _0x5a4200(_0x42e0c2[_0x1118('0x16')][_0x1118('0x17')]);}logger[_0x1118('0x16')](_0x1118('0x11'),_0x4e0343,_0x42e0c2['error'][_0x1118('0x17')]);return _0x3c5028(_0x42e0c2[_0x1118('0x16')]['message']);}else{logger[_0x1118('0x10')]('OpenchannelQueue,\x20%s,\x20%s',_0x4e0343,_0x1118('0x14'));_0x3c5028(_0x42e0c2[_0x1118('0x18')][_0x1118('0x17')]);}})[_0x1118('0x19')](function(_0x13a197){logger['error'](_0x1118('0x11'),_0x4e0343,_0x13a197);_0x5a4200(_0x13a197);});});}exports['GetOpenchannelQueue']=function(_0x351dae){var _0x3a2c7a=this;return new Promise(function(_0x2cfd96,_0x4fe694){return db['OpenchannelQueue'][_0x1118('0x1a')]({'raw':_0x351dae[_0x1118('0x1b')]?_0x351dae[_0x1118('0x1b')][_0x1118('0x1c')]===undefined?!![]:![]:!![],'where':_0x351dae['options']?_0x351dae[_0x1118('0x1b')][_0x1118('0x1d')]||null:null,'attributes':_0x351dae['options']?_0x351dae[_0x1118('0x1b')]['attributes']||null:null,'limit':_0x351dae[_0x1118('0x1b')]?_0x351dae[_0x1118('0x1b')][_0x1118('0x1e')]||null:null,'include':_0x351dae[_0x1118('0x1b')]?_0x351dae[_0x1118('0x1b')][_0x1118('0x1f')]?_[_0x1118('0x20')](_0x351dae['options']['include'],function(_0x1f6588){return{'model':db[_0x1f6588[_0x1118('0x21')]],'as':_0x1f6588['as'],'attributes':_0x1f6588['attributes'],'include':_0x1f6588[_0x1118('0x1f')]?_[_0x1118('0x20')](_0x1f6588[_0x1118('0x1f')],function(_0x7450df){return{'model':db[_0x7450df[_0x1118('0x21')]],'as':_0x7450df['as'],'attributes':_0x7450df['attributes'],'include':_0x7450df[_0x1118('0x1f')]?_['map'](_0x7450df[_0x1118('0x1f')],function(_0x1f367e){return{'model':db[_0x1f367e['model']],'as':_0x1f367e['as'],'attributes':_0x1f367e['attributes']};}):[]};}):[]};}):[]:[]})[_0x1118('0xf')](function(_0x5ad0f6){logger[_0x1118('0x10')]('GetOpenchannelQueue',_0x351dae);logger[_0x1118('0x12')](_0x1118('0x22'),_0x351dae,JSON[_0x1118('0x15')](_0x5ad0f6));_0x2cfd96(_0x5ad0f6);})['catch'](function(_0x149e4f){logger['error'](_0x1118('0x22'),_0x149e4f['message'],_0x351dae);_0x4fe694(_0x3a2c7a[_0x1118('0x16')](0x1f4,_0x149e4f['message']));});});};exports[_0x1118('0x23')]=function(_0xca5b71){var _0x1ddac1=this;return new Promise(function(_0x59f486,_0x457fd6){return db[_0x1118('0x24')][_0x1118('0x25')]({'raw':_0xca5b71[_0x1118('0x1b')]?_0xca5b71['options'][_0x1118('0x1c')]===undefined?!![]:![]:!![],'where':_0xca5b71[_0x1118('0x1b')]?_0xca5b71[_0x1118('0x1b')][_0x1118('0x1d')]||null:null,'attributes':_0xca5b71[_0x1118('0x1b')]?_0xca5b71['options'][_0x1118('0x26')]||null:null,'include':_0xca5b71[_0x1118('0x1b')]?_0xca5b71[_0x1118('0x1b')][_0x1118('0x1f')]?_[_0x1118('0x20')](_0xca5b71['options'][_0x1118('0x1f')],function(_0x1c9122){return{'model':db[_0x1c9122[_0x1118('0x21')]],'as':_0x1c9122['as'],'attributes':_0x1c9122['attributes'],'include':_0x1c9122[_0x1118('0x1f')]?_['map'](_0x1c9122['include'],function(_0x3caecc){return{'model':db[_0x3caecc[_0x1118('0x21')]],'as':_0x3caecc['as'],'attributes':_0x3caecc[_0x1118('0x26')],'include':_0x3caecc[_0x1118('0x1f')]?_[_0x1118('0x20')](_0x3caecc[_0x1118('0x1f')],function(_0x12b27f){return{'model':db[_0x12b27f[_0x1118('0x21')]],'as':_0x12b27f['as'],'attributes':_0x12b27f['attributes']};}):[]};}):[]};}):[]:[]})[_0x1118('0xf')](function(_0x28c20a){logger[_0x1118('0x10')]('ShowOpenchannelQueue',_0xca5b71);logger[_0x1118('0x12')](_0x1118('0x23'),_0xca5b71,JSON[_0x1118('0x15')](_0x28c20a));_0x59f486(_0x28c20a);})[_0x1118('0x19')](function(_0x2206bc){logger[_0x1118('0x16')](_0x1118('0x23'),_0x2206bc[_0x1118('0x17')],_0xca5b71);_0x457fd6(_0x1ddac1[_0x1118('0x16')](0x1f4,_0x2206bc[_0x1118('0x17')]));});});};
\ No newline at end of file
+var _0x8ef0=['map','model','attributes','ShowOpenchannelQueue','find','raw','where','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','request','then','info','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','OpenchannelQueue,\x20%s,\x20%s','message','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','limit','include'];(function(_0x20be28,_0x24b925){var _0x8ab067=function(_0x314de9){while(--_0x314de9){_0x20be28['push'](_0x20be28['shift']());}};_0x8ab067(++_0x24b925);}(_0x8ef0,0x126));var _0x08ef=function(_0x365d8e,_0x14238c){_0x365d8e=_0x365d8e-0x0;var _0xfe968a=_0x8ef0[_0x365d8e];return _0xfe968a;};'use strict';var _=require(_0x08ef('0x0'));var util=require('util');var moment=require(_0x08ef('0x1'));var BPromise=require(_0x08ef('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x08ef('0x3'))['db'];var utils=require(_0x08ef('0x4'));var logger=require(_0x08ef('0x5'))(_0x08ef('0x6'));var config=require(_0x08ef('0x7'));var jayson=require(_0x08ef('0x8'));var client=jayson[_0x08ef('0x9')][_0x08ef('0xa')]({'port':0x232a});config[_0x08ef('0xb')]=_[_0x08ef('0xc')](config[_0x08ef('0xb')],{'host':_0x08ef('0xd'),'port':0x18eb});var socket=require(_0x08ef('0xe'))(new Redis(config[_0x08ef('0xb')]));require(_0x08ef('0xf'))['register'](socket);function respondWithRpcPromise(_0x337dd3,_0x400d19,_0xbd2c36){return new BPromise(function(_0x5d61de,_0x634de4){return client[_0x08ef('0x10')](_0x337dd3,_0xbd2c36)[_0x08ef('0x11')](function(_0x5c1533){logger[_0x08ef('0x12')]('OpenchannelQueue,\x20%s,\x20%s',_0x400d19,'request\x20sent');logger[_0x08ef('0x13')](_0x08ef('0x14'),_0x400d19,_0x08ef('0x15'),JSON[_0x08ef('0x16')](_0x5c1533));if(_0x5c1533[_0x08ef('0x17')]){if(_0x5c1533[_0x08ef('0x17')][_0x08ef('0x18')]===0x1f4){logger[_0x08ef('0x17')](_0x08ef('0x19'),_0x400d19,_0x5c1533['error'][_0x08ef('0x1a')]);return _0x634de4(_0x5c1533['error'][_0x08ef('0x1a')]);}logger[_0x08ef('0x17')]('OpenchannelQueue,\x20%s,\x20%s',_0x400d19,_0x5c1533[_0x08ef('0x17')][_0x08ef('0x1a')]);return _0x5d61de(_0x5c1533[_0x08ef('0x17')][_0x08ef('0x1a')]);}else{logger[_0x08ef('0x12')](_0x08ef('0x19'),_0x400d19,_0x08ef('0x15'));_0x5d61de(_0x5c1533['result']['message']);}})[_0x08ef('0x1b')](function(_0x5f5159){logger[_0x08ef('0x17')](_0x08ef('0x19'),_0x400d19,_0x5f5159);_0x634de4(_0x5f5159);});});}exports[_0x08ef('0x1c')]=function(_0x5918d7){var _0x383deb=this;return new Promise(function(_0x3cec0f,_0x183bf3){return db[_0x08ef('0x1d')][_0x08ef('0x1e')]({'raw':_0x5918d7[_0x08ef('0x1f')]?_0x5918d7[_0x08ef('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x5918d7['options']?_0x5918d7[_0x08ef('0x1f')]['where']||null:null,'attributes':_0x5918d7[_0x08ef('0x1f')]?_0x5918d7[_0x08ef('0x1f')]['attributes']||null:null,'limit':_0x5918d7[_0x08ef('0x1f')]?_0x5918d7[_0x08ef('0x1f')][_0x08ef('0x20')]||null:null,'include':_0x5918d7['options']?_0x5918d7[_0x08ef('0x1f')][_0x08ef('0x21')]?_[_0x08ef('0x22')](_0x5918d7[_0x08ef('0x1f')][_0x08ef('0x21')],function(_0x1e8d8d){return{'model':db[_0x1e8d8d[_0x08ef('0x23')]],'as':_0x1e8d8d['as'],'attributes':_0x1e8d8d['attributes'],'include':_0x1e8d8d['include']?_[_0x08ef('0x22')](_0x1e8d8d[_0x08ef('0x21')],function(_0x55232f){return{'model':db[_0x55232f[_0x08ef('0x23')]],'as':_0x55232f['as'],'attributes':_0x55232f[_0x08ef('0x24')],'include':_0x55232f[_0x08ef('0x21')]?_[_0x08ef('0x22')](_0x55232f[_0x08ef('0x21')],function(_0x6a2fd){return{'model':db[_0x6a2fd[_0x08ef('0x23')]],'as':_0x6a2fd['as'],'attributes':_0x6a2fd[_0x08ef('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x303ad5){logger[_0x08ef('0x12')](_0x08ef('0x1c'),_0x5918d7);logger[_0x08ef('0x13')](_0x08ef('0x1c'),_0x5918d7,JSON[_0x08ef('0x16')](_0x303ad5));_0x3cec0f(_0x303ad5);})[_0x08ef('0x1b')](function(_0x1c96b3){logger['error']('GetOpenchannelQueue',_0x1c96b3[_0x08ef('0x1a')],_0x5918d7);_0x183bf3(_0x383deb[_0x08ef('0x17')](0x1f4,_0x1c96b3[_0x08ef('0x1a')]));});});};exports[_0x08ef('0x25')]=function(_0x116c30){var _0x2e6b12=this;return new Promise(function(_0xf4b065,_0x42b1e3){return db[_0x08ef('0x1d')][_0x08ef('0x26')]({'raw':_0x116c30['options']?_0x116c30[_0x08ef('0x1f')][_0x08ef('0x27')]===undefined?!![]:![]:!![],'where':_0x116c30[_0x08ef('0x1f')]?_0x116c30[_0x08ef('0x1f')][_0x08ef('0x28')]||null:null,'attributes':_0x116c30[_0x08ef('0x1f')]?_0x116c30[_0x08ef('0x1f')][_0x08ef('0x24')]||null:null,'include':_0x116c30[_0x08ef('0x1f')]?_0x116c30[_0x08ef('0x1f')][_0x08ef('0x21')]?_[_0x08ef('0x22')](_0x116c30[_0x08ef('0x1f')][_0x08ef('0x21')],function(_0x5a22be){return{'model':db[_0x5a22be[_0x08ef('0x23')]],'as':_0x5a22be['as'],'attributes':_0x5a22be['attributes'],'include':_0x5a22be[_0x08ef('0x21')]?_[_0x08ef('0x22')](_0x5a22be[_0x08ef('0x21')],function(_0x1f7e60){return{'model':db[_0x1f7e60[_0x08ef('0x23')]],'as':_0x1f7e60['as'],'attributes':_0x1f7e60['attributes'],'include':_0x1f7e60[_0x08ef('0x21')]?_['map'](_0x1f7e60['include'],function(_0x4689d9){return{'model':db[_0x4689d9[_0x08ef('0x23')]],'as':_0x4689d9['as'],'attributes':_0x4689d9[_0x08ef('0x24')]};}):[]};}):[]};}):[]:[]})[_0x08ef('0x11')](function(_0x27ccb7){logger[_0x08ef('0x12')](_0x08ef('0x25'),_0x116c30);logger[_0x08ef('0x13')](_0x08ef('0x25'),_0x116c30,JSON[_0x08ef('0x16')](_0x27ccb7));_0xf4b065(_0x27ccb7);})['catch'](function(_0x13ed02){logger[_0x08ef('0x17')](_0x08ef('0x25'),_0x13ed02[_0x08ef('0x1a')],_0x116c30);_0x42b1e3(_0x2e6b12[_0x08ef('0x17')](0x1f4,_0x13ed02[_0x08ef('0x1a')]));});});};
\ No newline at end of file
index eb5305a..2fdc2ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe07e=['emit','removeListener','register','length','openchannelQueue:','./openchannelQueue.events','save','remove'];(function(_0x1d2b88,_0x25dc35){var _0x211775=function(_0x38a432){while(--_0x38a432){_0x1d2b88['push'](_0x1d2b88['shift']());}};_0x211775(++_0x25dc35);}(_0xe07e,0x75));var _0xee07=function(_0x32729c,_0xf5afd8){_0x32729c=_0x32729c-0x0;var _0x482cfd=_0xe07e[_0x32729c];return _0x482cfd;};'use strict';var OpenchannelQueueEvents=require(_0xee07('0x0'));var events=[_0xee07('0x1'),_0xee07('0x2'),'update'];function createListener(_0x4c8e36,_0x5a2f23){return function(_0x2c69f6){_0x5a2f23[_0xee07('0x3')](_0x4c8e36,_0x2c69f6);};}function removeListener(_0x167e20,_0x379476){return function(){OpenchannelQueueEvents[_0xee07('0x4')](_0x167e20,_0x379476);};}exports[_0xee07('0x5')]=function(_0x51d434){for(var _0x4e78af=0x0,_0x544a0f=events[_0xee07('0x6')];_0x4e78af<_0x544a0f;_0x4e78af++){var _0xe8d64d=events[_0x4e78af];var _0x47b941=createListener(_0xee07('0x7')+_0xe8d64d,_0x51d434);OpenchannelQueueEvents['on'](_0xe8d64d,_0x47b941);}};
\ No newline at end of file
+var _0x1e80=['save','remove','update','emit','removeListener','register','length','./openchannelQueue.events'];(function(_0x2ec53e,_0x59038e){var _0x3a42d0=function(_0x8dfc05){while(--_0x8dfc05){_0x2ec53e['push'](_0x2ec53e['shift']());}};_0x3a42d0(++_0x59038e);}(_0x1e80,0xb7));var _0x01e8=function(_0x10431f,_0x172fc4){_0x10431f=_0x10431f-0x0;var _0x124388=_0x1e80[_0x10431f];return _0x124388;};'use strict';var OpenchannelQueueEvents=require(_0x01e8('0x0'));var events=[_0x01e8('0x1'),_0x01e8('0x2'),_0x01e8('0x3')];function createListener(_0x5a59c2,_0x99daa2){return function(_0x3a9e9d){_0x99daa2[_0x01e8('0x4')](_0x5a59c2,_0x3a9e9d);};}function removeListener(_0x5f492c,_0x45c622){return function(){OpenchannelQueueEvents[_0x01e8('0x5')](_0x5f492c,_0x45c622);};}exports[_0x01e8('0x6')]=function(_0xa8cc28){for(var _0xd4cbd4=0x0,_0x349d09=events[_0x01e8('0x7')];_0xd4cbd4<_0x349d09;_0xd4cbd4++){var _0x3c30e9=events[_0xd4cbd4];var _0xff318c=createListener('openchannelQueue:'+_0x3c30e9,_0xa8cc28);OpenchannelQueueEvents['on'](_0x3c30e9,_0xff318c);}};
\ No newline at end of file
index 904b1ed..c1d6c04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0dc=['delete','destroy','path','express','Router','fs-extra','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','describe','/:id','show','post','create','put'];(function(_0x16121b,_0x3cf212){var _0x312661=function(_0x58fbf3){while(--_0x58fbf3){_0x16121b['push'](_0x16121b['shift']());}};_0x312661(++_0x3cf212);}(_0xf0dc,0xdf));var _0xcf0d=function(_0x273f00,_0x199efd){_0x273f00=_0x273f00-0x0;var _0x13199d=_0xf0dc[_0x273f00];return _0x13199d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xcf0d('0x0'));var timeout=require('connect-timeout');var express=require(_0xcf0d('0x1'));var router=express[_0xcf0d('0x2')]();var fs_extra=require(_0xcf0d('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xcf0d('0x4'));var controller=require(_0xcf0d('0x5'));router[_0xcf0d('0x6')]('/',auth[_0xcf0d('0x7')](),controller[_0xcf0d('0x8')]);router[_0xcf0d('0x6')]('/describe',auth[_0xcf0d('0x7')](),controller[_0xcf0d('0x9')]);router[_0xcf0d('0x6')](_0xcf0d('0xa'),auth['isAuthenticated'](),controller[_0xcf0d('0xb')]);router[_0xcf0d('0xc')]('/',auth[_0xcf0d('0x7')](),controller[_0xcf0d('0xd')]);router[_0xcf0d('0xe')](_0xcf0d('0xa'),auth['isAuthenticated'](),controller['update']);router[_0xcf0d('0xf')](_0xcf0d('0xa'),auth[_0xcf0d('0x7')](),controller[_0xcf0d('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x6c8d=['../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','isAuthenticated','get','/describe','describe','create','put','/:id','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x6c8d,0x7e));var _0xd6c8=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x6c8d[_0x42cae2];return _0x5f256f;};'use strict';var multer=require(_0xd6c8('0x0'));var util=require(_0xd6c8('0x1'));var path=require('path');var timeout=require(_0xd6c8('0x2'));var express=require(_0xd6c8('0x3'));var router=express[_0xd6c8('0x4')]();var fs_extra=require(_0xd6c8('0x5'));var auth=require(_0xd6c8('0x6'));var interaction=require(_0xd6c8('0x7'));var config=require(_0xd6c8('0x8'));var controller=require(_0xd6c8('0x9'));router['get']('/',auth[_0xd6c8('0xa')](),controller['index']);router[_0xd6c8('0xb')](_0xd6c8('0xc'),auth[_0xd6c8('0xa')](),controller[_0xd6c8('0xd')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xd6c8('0xa')](),controller[_0xd6c8('0xe')]);router[_0xd6c8('0xf')](_0xd6c8('0x10'),auth[_0xd6c8('0xa')](),controller['update']);router[_0xd6c8('0x11')](_0xd6c8('0x10'),auth[_0xd6c8('0xa')](),controller['destroy']);module[_0xd6c8('0x12')]=router;
\ No newline at end of file
index c51bc33..841c44b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb155=['moment','STRING'];(function(_0x5b0bc7,_0x132ec5){var _0x157f71=function(_0x1c9a86){while(--_0x1c9a86){_0x5b0bc7['push'](_0x5b0bc7['shift']());}};_0x157f71(++_0x132ec5);}(_0xb155,0x186));var _0x5b15=function(_0x367a3d,_0x452717){_0x367a3d=_0x367a3d-0x0;var _0x460539=_0xb155[_0x367a3d];return _0x460539;};'use strict';var moment=require(_0x5b15('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x5b15('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0x5b15('0x1')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x5b15('0x1')]}};
\ No newline at end of file
+var _0x343e=['STRING','DATE','sequelize','exports'];(function(_0x48c833,_0x25c24e){var _0x1a11f9=function(_0x4e1601){while(--_0x4e1601){_0x48c833['push'](_0x48c833['shift']());}};_0x1a11f9(++_0x25c24e);}(_0x343e,0x10e));var _0xe343=function(_0x3be0a4,_0x971e54){_0x3be0a4=_0x3be0a4-0x0;var _0x2ac575=_0x343e[_0x3be0a4];return _0x2ac575;};'use strict';var moment=require('moment');var Sequelize=require(_0xe343('0x0'));module[_0xe343('0x1')]={'uniqueid':{'type':Sequelize[_0xe343('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xe343('0x2')]},'joinAt':{'type':Sequelize[_0xe343('0x3')]},'leaveAt':{'type':Sequelize[_0xe343('0x3')]},'acceptAt':{'type':Sequelize[_0xe343('0x3')]},'exitAt':{'type':Sequelize[_0xe343('0x3')]},'reason':{'type':Sequelize[_0xe343('0x2')]}};
\ No newline at end of file
index b5d3096..d9d84a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x472f=['rows','catch','show','params','keys','include','find','create','body','describe','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','end','error','stack','name','map','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','options','OpenchannelQueueReport','includeAll','findAll'];(function(_0x538049,_0x1d9715){var _0x395460=function(_0x42d463){while(--_0x42d463){_0x538049['push'](_0x538049['shift']());}};_0x395460(++_0x1d9715);}(_0x472f,0x13a));var _0xf472=function(_0x48a044,_0x59c59c){_0x48a044=_0x48a044-0x0;var _0x2ebb55=_0x472f[_0x48a044];return _0x2ebb55;};'use strict';var emlformat=require(_0xf472('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf472('0x1'));var jsonpatch=require(_0xf472('0x2'));var rp=require('request-promise');var moment=require(_0xf472('0x3'));var BPromise=require(_0xf472('0x4'));var Mustache=require(_0xf472('0x5'));var util=require('util');var path=require(_0xf472('0x6'));var sox=require('sox');var csv=require(_0xf472('0x7'));var ejs=require(_0xf472('0x8'));var fs=require('fs');var fs_extra=require(_0xf472('0x9'));var _=require(_0xf472('0xa'));var squel=require(_0xf472('0xb'));var crypto=require('crypto');var jsforce=require(_0xf472('0xc'));var deskjs=require(_0xf472('0xd'));var toCsv=require(_0xf472('0x7'));var querystring=require(_0xf472('0xe'));var Papa=require(_0xf472('0xf'));var Redis=require(_0xf472('0x10'));var authService=require(_0xf472('0x11'));var qs=require(_0xf472('0x12'));var as=require(_0xf472('0x13'));var hardwareService=require(_0xf472('0x14'));var logger=require(_0xf472('0x15'))('api');var utils=require('../../config/utils');var config=require(_0xf472('0x16'));var licenseUtil=require(_0xf472('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5ecc2a,_0x426659){_0x426659=_0x426659||0xcc;return function(_0x4763f5){if(_0x4763f5){return _0x5ecc2a[_0xf472('0x18')](_0x426659);}return _0x5ecc2a[_0xf472('0x19')](_0x426659)['end']();};}function respondWithResult(_0x1533f0,_0x2a68e8){_0x2a68e8=_0x2a68e8||0xc8;return function(_0x56e469){if(_0x56e469){return _0x1533f0[_0xf472('0x19')](_0x2a68e8)['json'](_0x56e469);}};}function respondWithFilteredResult(_0x3fb6c9,_0x55cc0b){return function(_0x2d7b51){if(_0x2d7b51){var _0x4b0a92=typeof _0x55cc0b[_0xf472('0x1a')]===_0xf472('0x1b')&&typeof _0x55cc0b[_0xf472('0x1c')]===_0xf472('0x1b');var _0x48234c=_0x2d7b51[_0xf472('0x1d')];var _0x272590=_0x4b0a92?0x0:_0x55cc0b[_0xf472('0x1a')];var _0x1d6768=_0x4b0a92?_0x2d7b51[_0xf472('0x1d')]:_0x55cc0b[_0xf472('0x1a')]+_0x55cc0b[_0xf472('0x1c')];var _0x56dbda;if(_0x1d6768>=_0x48234c){_0x1d6768=_0x48234c;_0x56dbda=0xc8;}else{_0x56dbda=0xce;}_0x3fb6c9[_0xf472('0x19')](_0x56dbda);return _0x3fb6c9[_0xf472('0x1e')](_0xf472('0x1f'),_0x272590+'-'+_0x1d6768+'/'+_0x48234c)[_0xf472('0x20')](_0x2d7b51);}return null;};}function patchUpdates(_0x35bc36){return function(_0x122317){try{jsonpatch[_0xf472('0x21')](_0x122317,_0x35bc36,!![]);}catch(_0x257d5c){return BPromise[_0xf472('0x22')](_0x257d5c);}return _0x122317[_0xf472('0x23')]();};}function saveUpdates(_0x36caa5,_0x5709e6){return function(_0x3b0c6f){if(_0x3b0c6f){return _0x3b0c6f[_0xf472('0x24')](_0x36caa5)[_0xf472('0x25')](function(_0x1b18d7){return _0x1b18d7;});}return null;};}function removeEntity(_0x42f296,_0x45e82f){return function(_0x545b16){if(_0x545b16){return _0x545b16[_0xf472('0x26')]()['then'](function(){_0x42f296[_0xf472('0x19')](0xcc)[_0xf472('0x27')]();});}};}function handleEntityNotFound(_0x93b7d2,_0x1e1927){return function(_0x1bd9fd){if(!_0x1bd9fd){_0x93b7d2[_0xf472('0x18')](0x194);}return _0x1bd9fd;};}function handleError(_0x3b3564,_0x3b40b6){_0x3b40b6=_0x3b40b6||0x1f4;return function(_0x454450){logger[_0xf472('0x28')](_0x454450[_0xf472('0x29')]);if(_0x454450[_0xf472('0x2a')]){delete _0x454450[_0xf472('0x2a')];}_0x3b3564['status'](_0x3b40b6)['send'](_0x454450);};}exports['index']=function(_0x489cb4,_0x417cc6){var _0x42264a={},_0x333df0={},_0x57df1c={'count':0x0,'rows':[]};var _0x463342=_[_0xf472('0x2b')](db['OpenchannelQueueReport'][_0xf472('0x2c')],function(_0x56f3dc){return{'name':_0x56f3dc['fieldName'],'type':_0x56f3dc['type'][_0xf472('0x2d')]};});_0x333df0[_0xf472('0x2e')]=_['map'](_0x463342,_0xf472('0x2a'));_0x333df0[_0xf472('0x2f')]=_['keys'](_0x489cb4[_0xf472('0x2f')]);_0x333df0[_0xf472('0x30')]=_[_0xf472('0x31')](_0x333df0['model'],_0x333df0[_0xf472('0x2f')]);_0x42264a[_0xf472('0x32')]=_['intersection'](_0x333df0[_0xf472('0x2e')],qs[_0xf472('0x33')](_0x489cb4['query']['fields']));_0x42264a[_0xf472('0x32')]=_0x42264a[_0xf472('0x32')][_0xf472('0x34')]?_0x42264a[_0xf472('0x32')]:_0x333df0['model'];if(!_0x489cb4[_0xf472('0x2f')][_0xf472('0x35')]('nolimit')){_0x42264a['limit']=qs[_0xf472('0x1c')](_0x489cb4[_0xf472('0x2f')]['limit']);_0x42264a[_0xf472('0x1a')]=qs[_0xf472('0x1a')](_0x489cb4[_0xf472('0x2f')][_0xf472('0x1a')]);}_0x42264a[_0xf472('0x36')]=qs[_0xf472('0x37')](_0x489cb4[_0xf472('0x2f')][_0xf472('0x37')]);_0x42264a[_0xf472('0x38')]=qs[_0xf472('0x30')](_[_0xf472('0x39')](_0x489cb4[_0xf472('0x2f')],_0x333df0[_0xf472('0x30')]),_0x463342);if(_0x489cb4[_0xf472('0x2f')][_0xf472('0x3a')]){_0x42264a[_0xf472('0x38')]=_[_0xf472('0x3b')](_0x42264a[_0xf472('0x38')],{'$or':_['map'](_0x463342,function(_0x2f5e20){if(_0x2f5e20[_0xf472('0x3c')]!==_0xf472('0x3d')){var _0x27f8b0={};_0x27f8b0[_0x2f5e20['name']]={'$like':'%'+_0x489cb4['query']['filter']+'%'};return _0x27f8b0;}})});}_0x42264a=_[_0xf472('0x3b')]({},_0x42264a,_0x489cb4[_0xf472('0x3e')]);var _0x29e5b2={'where':_0x42264a[_0xf472('0x38')]};return db[_0xf472('0x3f')][_0xf472('0x1d')](_0x29e5b2)[_0xf472('0x25')](function(_0x42ad73){_0x57df1c[_0xf472('0x1d')]=_0x42ad73;if(_0x489cb4[_0xf472('0x2f')][_0xf472('0x40')]){_0x42264a['include']=[{'all':!![]}];}return db[_0xf472('0x3f')][_0xf472('0x41')](_0x42264a);})[_0xf472('0x25')](function(_0x57663e){_0x57df1c[_0xf472('0x42')]=_0x57663e;return _0x57df1c;})[_0xf472('0x25')](respondWithFilteredResult(_0x417cc6,_0x42264a))[_0xf472('0x43')](handleError(_0x417cc6,null));};exports[_0xf472('0x44')]=function(_0x3bddad,_0x5a0287){var _0x820c13={'raw':!![],'where':{'id':_0x3bddad[_0xf472('0x45')]['id']}},_0x3c234e={};_0x3c234e[_0xf472('0x2e')]=_[_0xf472('0x46')](db[_0xf472('0x3f')][_0xf472('0x2c')]);_0x3c234e['query']=_[_0xf472('0x46')](_0x3bddad[_0xf472('0x2f')]);_0x3c234e[_0xf472('0x30')]=_[_0xf472('0x31')](_0x3c234e[_0xf472('0x2e')],_0x3c234e['query']);_0x820c13['attributes']=_[_0xf472('0x31')](_0x3c234e['model'],qs['fields'](_0x3bddad[_0xf472('0x2f')]['fields']));_0x820c13[_0xf472('0x32')]=_0x820c13[_0xf472('0x32')][_0xf472('0x34')]?_0x820c13[_0xf472('0x32')]:_0x3c234e[_0xf472('0x2e')];if(_0x3bddad[_0xf472('0x2f')][_0xf472('0x40')]){_0x820c13[_0xf472('0x47')]=[{'all':!![]}];}_0x820c13=_[_0xf472('0x3b')]({},_0x820c13,_0x3bddad[_0xf472('0x3e')]);return db[_0xf472('0x3f')][_0xf472('0x48')](_0x820c13)['then'](handleEntityNotFound(_0x5a0287,null))[_0xf472('0x25')](respondWithResult(_0x5a0287,null))[_0xf472('0x43')](handleError(_0x5a0287,null));};exports['create']=function(_0x300083,_0x580899){return db[_0xf472('0x3f')][_0xf472('0x49')](_0x300083[_0xf472('0x4a')],{})[_0xf472('0x25')](respondWithResult(_0x580899,0xc9))[_0xf472('0x43')](handleError(_0x580899,null));};exports[_0xf472('0x24')]=function(_0x1a1ee5,_0x28192d){if(_0x1a1ee5['body']['id']){delete _0x1a1ee5[_0xf472('0x4a')]['id'];}return db['OpenchannelQueueReport']['find']({'where':{'id':_0x1a1ee5['params']['id']}})[_0xf472('0x25')](handleEntityNotFound(_0x28192d,null))[_0xf472('0x25')](saveUpdates(_0x1a1ee5[_0xf472('0x4a')],null))[_0xf472('0x25')](respondWithResult(_0x28192d,null))[_0xf472('0x43')](handleError(_0x28192d,null));};exports['destroy']=function(_0x370698,_0x17c71b){return db[_0xf472('0x3f')][_0xf472('0x48')]({'where':{'id':_0x370698[_0xf472('0x45')]['id']}})['then'](handleEntityNotFound(_0x17c71b,null))['then'](removeEntity(_0x17c71b,null))[_0xf472('0x43')](handleError(_0x17c71b,null));};exports[_0xf472('0x4b')]=function(_0x5cd805,_0x5d46fd){return db[_0xf472('0x3f')]['describe']()[_0xf472('0x25')](respondWithResult(_0x5d46fd,null))[_0xf472('0x43')](handleError(_0x5d46fd,null));};
\ No newline at end of file
+var _0xe6dd=['nolimit','order','sort','filter','merge','options','where','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','length','OpenchannelQueueReport','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/environment','../../config/license/util','json','offset','undefined','limit','count','status','set','save','update','then','destroy','end','sendStatus','error','stack','name','send','map','fieldName','type','model','query','filters','intersection','attributes','fields'];(function(_0x251de5,_0x57a6db){var _0x3f7ead=function(_0x13c305){while(--_0x13c305){_0x251de5['push'](_0x251de5['shift']());}};_0x3f7ead(++_0x57a6db);}(_0xe6dd,0xa2));var _0xde6d=function(_0xe080a5,_0x63e039){_0xe080a5=_0xe080a5-0x0;var _0x52011b=_0xe6dd[_0xe080a5];return _0x52011b;};'use strict';var emlformat=require(_0xde6d('0x0'));var rimraf=require(_0xde6d('0x1'));var zipdir=require(_0xde6d('0x2'));var jsonpatch=require(_0xde6d('0x3'));var rp=require('request-promise');var moment=require(_0xde6d('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xde6d('0x5'));var util=require(_0xde6d('0x6'));var path=require(_0xde6d('0x7'));var sox=require(_0xde6d('0x8'));var csv=require(_0xde6d('0x9'));var ejs=require(_0xde6d('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xde6d('0xb'));var squel=require(_0xde6d('0xc'));var crypto=require('crypto');var jsforce=require(_0xde6d('0xd'));var deskjs=require(_0xde6d('0xe'));var toCsv=require('to-csv');var querystring=require(_0xde6d('0xf'));var Papa=require(_0xde6d('0x10'));var Redis=require(_0xde6d('0x11'));var authService=require(_0xde6d('0x12'));var qs=require(_0xde6d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xde6d('0x14'));var licenseUtil=require(_0xde6d('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1707ab,_0x5b5f37){_0x5b5f37=_0x5b5f37||0xcc;return function(_0x186d2b){if(_0x186d2b){return _0x1707ab['sendStatus'](_0x5b5f37);}return _0x1707ab['status'](_0x5b5f37)['end']();};}function respondWithResult(_0x171c69,_0x4aa71d){_0x4aa71d=_0x4aa71d||0xc8;return function(_0x2795f3){if(_0x2795f3){return _0x171c69['status'](_0x4aa71d)[_0xde6d('0x16')](_0x2795f3);}};}function respondWithFilteredResult(_0x222ec3,_0x40f616){return function(_0x18b583){if(_0x18b583){var _0x3d59e6=typeof _0x40f616[_0xde6d('0x17')]===_0xde6d('0x18')&&typeof _0x40f616[_0xde6d('0x19')]===_0xde6d('0x18');var _0x3fdf00=_0x18b583['count'];var _0x203520=_0x3d59e6?0x0:_0x40f616['offset'];var _0x4ca9bd=_0x3d59e6?_0x18b583[_0xde6d('0x1a')]:_0x40f616[_0xde6d('0x17')]+_0x40f616['limit'];var _0x91bd5d;if(_0x4ca9bd>=_0x3fdf00){_0x4ca9bd=_0x3fdf00;_0x91bd5d=0xc8;}else{_0x91bd5d=0xce;}_0x222ec3[_0xde6d('0x1b')](_0x91bd5d);return _0x222ec3[_0xde6d('0x1c')]('Content-Range',_0x203520+'-'+_0x4ca9bd+'/'+_0x3fdf00)[_0xde6d('0x16')](_0x18b583);}return null;};}function patchUpdates(_0x47478f){return function(_0x3b99fd){try{jsonpatch['apply'](_0x3b99fd,_0x47478f,!![]);}catch(_0x4ef3ad){return BPromise['reject'](_0x4ef3ad);}return _0x3b99fd[_0xde6d('0x1d')]();};}function saveUpdates(_0x2a723c,_0x804090){return function(_0x388271){if(_0x388271){return _0x388271[_0xde6d('0x1e')](_0x2a723c)[_0xde6d('0x1f')](function(_0x3a348b){return _0x3a348b;});}return null;};}function removeEntity(_0x2fb46f,_0x3b665e){return function(_0x3138e4){if(_0x3138e4){return _0x3138e4[_0xde6d('0x20')]()['then'](function(){_0x2fb46f[_0xde6d('0x1b')](0xcc)[_0xde6d('0x21')]();});}};}function handleEntityNotFound(_0x373218,_0x935032){return function(_0x2a8e1a){if(!_0x2a8e1a){_0x373218[_0xde6d('0x22')](0x194);}return _0x2a8e1a;};}function handleError(_0x28cde5,_0x28ed74){_0x28ed74=_0x28ed74||0x1f4;return function(_0x59144b){logger[_0xde6d('0x23')](_0x59144b[_0xde6d('0x24')]);if(_0x59144b[_0xde6d('0x25')]){delete _0x59144b[_0xde6d('0x25')];}_0x28cde5[_0xde6d('0x1b')](_0x28ed74)[_0xde6d('0x26')](_0x59144b);};}exports['index']=function(_0x302c9c,_0x4a5907){var _0x54cf5c={},_0x42c1be={},_0x3a3dbd={'count':0x0,'rows':[]};var _0x3a8e6f=_[_0xde6d('0x27')](db['OpenchannelQueueReport']['rawAttributes'],function(_0x355c4f){return{'name':_0x355c4f[_0xde6d('0x28')],'type':_0x355c4f[_0xde6d('0x29')]['key']};});_0x42c1be[_0xde6d('0x2a')]=_[_0xde6d('0x27')](_0x3a8e6f,_0xde6d('0x25'));_0x42c1be[_0xde6d('0x2b')]=_['keys'](_0x302c9c[_0xde6d('0x2b')]);_0x42c1be[_0xde6d('0x2c')]=_[_0xde6d('0x2d')](_0x42c1be[_0xde6d('0x2a')],_0x42c1be['query']);_0x54cf5c[_0xde6d('0x2e')]=_[_0xde6d('0x2d')](_0x42c1be[_0xde6d('0x2a')],qs[_0xde6d('0x2f')](_0x302c9c[_0xde6d('0x2b')]['fields']));_0x54cf5c[_0xde6d('0x2e')]=_0x54cf5c['attributes']['length']?_0x54cf5c['attributes']:_0x42c1be[_0xde6d('0x2a')];if(!_0x302c9c['query']['hasOwnProperty'](_0xde6d('0x30'))){_0x54cf5c[_0xde6d('0x19')]=qs[_0xde6d('0x19')](_0x302c9c[_0xde6d('0x2b')][_0xde6d('0x19')]);_0x54cf5c[_0xde6d('0x17')]=qs[_0xde6d('0x17')](_0x302c9c[_0xde6d('0x2b')][_0xde6d('0x17')]);}_0x54cf5c[_0xde6d('0x31')]=qs['sort'](_0x302c9c['query'][_0xde6d('0x32')]);_0x54cf5c['where']=qs['filters'](_['pick'](_0x302c9c[_0xde6d('0x2b')],_0x42c1be[_0xde6d('0x2c')]),_0x3a8e6f);if(_0x302c9c[_0xde6d('0x2b')][_0xde6d('0x33')]){_0x54cf5c['where']=_[_0xde6d('0x34')](_0x54cf5c['where'],{'$or':_[_0xde6d('0x27')](_0x3a8e6f,function(_0x46eb1f){if(_0x46eb1f[_0xde6d('0x29')]!=='VIRTUAL'){var _0x4eb6a5={};_0x4eb6a5[_0x46eb1f[_0xde6d('0x25')]]={'$like':'%'+_0x302c9c['query'][_0xde6d('0x33')]+'%'};return _0x4eb6a5;}})});}_0x54cf5c=_[_0xde6d('0x34')]({},_0x54cf5c,_0x302c9c[_0xde6d('0x35')]);var _0xfaa4da={'where':_0x54cf5c[_0xde6d('0x36')]};return db['OpenchannelQueueReport'][_0xde6d('0x1a')](_0xfaa4da)[_0xde6d('0x1f')](function(_0x8d197e){_0x3a3dbd['count']=_0x8d197e;if(_0x302c9c['query'][_0xde6d('0x37')]){_0x54cf5c[_0xde6d('0x38')]=[{'all':!![]}];}return db['OpenchannelQueueReport'][_0xde6d('0x39')](_0x54cf5c);})[_0xde6d('0x1f')](function(_0x32e18f){_0x3a3dbd[_0xde6d('0x3a')]=_0x32e18f;return _0x3a3dbd;})[_0xde6d('0x1f')](respondWithFilteredResult(_0x4a5907,_0x54cf5c))[_0xde6d('0x3b')](handleError(_0x4a5907,null));};exports[_0xde6d('0x3c')]=function(_0x55eb68,_0x55e41f){var _0xba444a={'raw':!![],'where':{'id':_0x55eb68[_0xde6d('0x3d')]['id']}},_0x159f7b={};_0x159f7b[_0xde6d('0x2a')]=_[_0xde6d('0x3e')](db['OpenchannelQueueReport'][_0xde6d('0x3f')]);_0x159f7b[_0xde6d('0x2b')]=_[_0xde6d('0x3e')](_0x55eb68[_0xde6d('0x2b')]);_0x159f7b[_0xde6d('0x2c')]=_[_0xde6d('0x2d')](_0x159f7b[_0xde6d('0x2a')],_0x159f7b[_0xde6d('0x2b')]);_0xba444a[_0xde6d('0x2e')]=_[_0xde6d('0x2d')](_0x159f7b[_0xde6d('0x2a')],qs[_0xde6d('0x2f')](_0x55eb68[_0xde6d('0x2b')][_0xde6d('0x2f')]));_0xba444a['attributes']=_0xba444a[_0xde6d('0x2e')][_0xde6d('0x40')]?_0xba444a[_0xde6d('0x2e')]:_0x159f7b[_0xde6d('0x2a')];if(_0x55eb68['query'][_0xde6d('0x37')]){_0xba444a[_0xde6d('0x38')]=[{'all':!![]}];}_0xba444a=_[_0xde6d('0x34')]({},_0xba444a,_0x55eb68[_0xde6d('0x35')]);return db[_0xde6d('0x41')][_0xde6d('0x42')](_0xba444a)[_0xde6d('0x1f')](handleEntityNotFound(_0x55e41f,null))['then'](respondWithResult(_0x55e41f,null))[_0xde6d('0x3b')](handleError(_0x55e41f,null));};exports[_0xde6d('0x43')]=function(_0x365f7e,_0x577a48){return db[_0xde6d('0x41')][_0xde6d('0x43')](_0x365f7e[_0xde6d('0x44')],{})[_0xde6d('0x1f')](respondWithResult(_0x577a48,0xc9))['catch'](handleError(_0x577a48,null));};exports['update']=function(_0x4b550e,_0x535e6c){if(_0x4b550e[_0xde6d('0x44')]['id']){delete _0x4b550e['body']['id'];}return db[_0xde6d('0x41')][_0xde6d('0x42')]({'where':{'id':_0x4b550e['params']['id']}})[_0xde6d('0x1f')](handleEntityNotFound(_0x535e6c,null))['then'](saveUpdates(_0x4b550e['body'],null))['then'](respondWithResult(_0x535e6c,null))['catch'](handleError(_0x535e6c,null));};exports[_0xde6d('0x20')]=function(_0x5a1316,_0x3d503f){return db[_0xde6d('0x41')][_0xde6d('0x42')]({'where':{'id':_0x5a1316['params']['id']}})['then'](handleEntityNotFound(_0x3d503f,null))[_0xde6d('0x1f')](removeEntity(_0x3d503f,null))['catch'](handleError(_0x3d503f,null));};exports['describe']=function(_0x2b248d,_0x9d034a){return db['OpenchannelQueueReport'][_0xde6d('0x45')]()[_0xde6d('0x1f')](respondWithResult(_0x9d034a,null))['catch'](handleError(_0x9d034a,null));};
\ No newline at end of file
index 56ed066..d2ee591 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['bluebird','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','lodash','util','../../config/logger','api','moment'];(function(_0x25a582,_0x4fc348){var _0x189c67=function(_0x587f4d){while(--_0x587f4d){_0x25a582['push'](_0x25a582['shift']());}};_0x189c67(++_0x4fc348);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xc4aa[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var logger=require(_0xac4a('0x2'))(_0xac4a('0x3'));var moment=require(_0xac4a('0x4'));var BPromise=require(_0xac4a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xac4a('0x6'));var attributes=require(_0xac4a('0x7'));module[_0xac4a('0x8')]=function(_0x215f39,_0x96be2b){return _0x215f39[_0xac4a('0x9')](_0xac4a('0xa'),attributes,{'tableName':_0xac4a('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x814b=['../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','uniqueid','lodash','util'];(function(_0x4f3b2d,_0x3bbf46){var _0x3dddfa=function(_0xb8179a){while(--_0xb8179a){_0x4f3b2d['push'](_0x4f3b2d['shift']());}};_0x3dddfa(++_0x3bbf46);}(_0x814b,0x1a2));var _0xb814=function(_0x2d3a4d,_0x47561e){_0x2d3a4d=_0x2d3a4d-0x0;var _0x3a94a3=_0x814b[_0x2d3a4d];return _0x3a94a3;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var logger=require(_0xb814('0x2'))(_0xb814('0x3'));var moment=require(_0xb814('0x4'));var BPromise=require(_0xb814('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb814('0x6'));var rimraf=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var attributes=require(_0xb814('0x9'));module[_0xb814('0xa')]=function(_0x322a70,_0x53e507){return _0x322a70[_0xb814('0xb')](_0xb814('0xc'),attributes,{'tableName':'report_openchannel_queue','paranoid':![],'indexes':[{'name':_0xb814('0xd'),'fields':[_0xb814('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 7666c46..70f740a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c3d=['OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','OpenchannelQueueReport,\x20%s,\x20%s','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','body','options','raw','UpdateOpenchannelQueueReport','update','where','attributes','limit','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','debug'];(function(_0x375765,_0x1ab276){var _0x1eec64=function(_0x5467fd){while(--_0x5467fd){_0x375765['push'](_0x375765['shift']());}};_0x1eec64(++_0x1ab276);}(_0x1c3d,0x1b8));var _0xd1c3=function(_0x5292a9,_0x37f0c5){_0x5292a9=_0x5292a9-0x0;var _0x32ff30=_0x1c3d[_0x5292a9];return _0x32ff30;};'use strict';var _=require('lodash');var util=require(_0xd1c3('0x0'));var moment=require(_0xd1c3('0x1'));var BPromise=require(_0xd1c3('0x2'));var rs=require(_0xd1c3('0x3'));var fs=require('fs');var Redis=require(_0xd1c3('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xd1c3('0x5'))(_0xd1c3('0x6'));var config=require(_0xd1c3('0x7'));var jayson=require(_0xd1c3('0x8'));var client=jayson[_0xd1c3('0x9')][_0xd1c3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5adcb7,_0x398766,_0x420ab0){return new BPromise(function(_0x5db2f0,_0x1afc71){return client[_0xd1c3('0xb')](_0x5adcb7,_0x420ab0)[_0xd1c3('0xc')](function(_0x18556c){logger[_0xd1c3('0xd')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x398766,'request\x20sent');logger[_0xd1c3('0xe')](_0xd1c3('0xf'),_0x398766,_0xd1c3('0x10'),JSON[_0xd1c3('0x11')](_0x18556c));if(_0x18556c[_0xd1c3('0x12')]){if(_0x18556c[_0xd1c3('0x12')][_0xd1c3('0x13')]===0x1f4){logger[_0xd1c3('0x12')](_0xd1c3('0x14'),_0x398766,_0x18556c['error'][_0xd1c3('0x15')]);return _0x1afc71(_0x18556c['error']['message']);}logger[_0xd1c3('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x398766,_0x18556c[_0xd1c3('0x12')][_0xd1c3('0x15')]);return _0x5db2f0(_0x18556c[_0xd1c3('0x12')]['message']);}else{logger[_0xd1c3('0xd')](_0xd1c3('0x14'),_0x398766,_0xd1c3('0x10'));_0x5db2f0(_0x18556c[_0xd1c3('0x16')][_0xd1c3('0x15')]);}})[_0xd1c3('0x17')](function(_0x586fa7){logger[_0xd1c3('0x12')](_0xd1c3('0x14'),_0x398766,_0x586fa7);_0x1afc71(_0x586fa7);});});}exports[_0xd1c3('0x18')]=function(_0x5d26c2){var _0x53a5e1=this;return new Promise(function(_0x14f6cb,_0x3a1a74){return db[_0xd1c3('0x19')][_0xd1c3('0x1a')](_0x5d26c2[_0xd1c3('0x1b')],{'raw':_0x5d26c2['options']?_0x5d26c2[_0xd1c3('0x1c')][_0xd1c3('0x1d')]===undefined?!![]:![]:!![]})[_0xd1c3('0xc')](function(_0x588f4e){logger['info'](_0xd1c3('0x18'),_0x5d26c2);logger[_0xd1c3('0xe')]('CreateOpenchannelQueueReport',_0x5d26c2,JSON['stringify'](_0x588f4e));_0x14f6cb(_0x588f4e);})[_0xd1c3('0x17')](function(_0xc45d5d){logger[_0xd1c3('0x12')](_0xd1c3('0x18'),_0xc45d5d[_0xd1c3('0x15')],_0x5d26c2);_0x3a1a74(_0x53a5e1[_0xd1c3('0x12')](0x1f4,_0xc45d5d[_0xd1c3('0x15')]));});});};exports[_0xd1c3('0x1e')]=function(_0x33c380){var _0x218ef1=this;return new Promise(function(_0x5a9d5d,_0x56091a){return db[_0xd1c3('0x19')][_0xd1c3('0x1f')](_0x33c380[_0xd1c3('0x1b')],{'raw':_0x33c380[_0xd1c3('0x1c')]?_0x33c380['options'][_0xd1c3('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x33c380[_0xd1c3('0x1c')]?_0x33c380['options'][_0xd1c3('0x20')]||null:null,'attributes':_0x33c380[_0xd1c3('0x1c')]?_0x33c380[_0xd1c3('0x1c')][_0xd1c3('0x21')]||null:null,'limit':_0x33c380[_0xd1c3('0x1c')]?_0x33c380[_0xd1c3('0x1c')][_0xd1c3('0x22')]||null:null})['then'](function(_0x57309e){logger[_0xd1c3('0xd')](_0xd1c3('0x1e'),_0x33c380);logger[_0xd1c3('0xe')](_0xd1c3('0x1e'),_0x33c380,JSON[_0xd1c3('0x11')](_0x57309e));_0x5a9d5d(_0x57309e);})['catch'](function(_0x331bad){logger[_0xd1c3('0x12')]('UpdateOpenchannelQueueReport',_0x331bad[_0xd1c3('0x15')],_0x33c380);_0x56091a(_0x218ef1['error'](0x1f4,_0x331bad[_0xd1c3('0x15')]));});});};
\ No newline at end of file
+var _0xde9f=['client','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','OpenchannelQueueReport','options','raw','CreateOpenchannelQueueReport','catch','UpdateOpenchannelQueueReport','update','body','where','attributes','limit','lodash','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0xde9f,0x118));var _0xfde9=function(_0x5f382f,_0x3f1432){_0x5f382f=_0x5f382f-0x0;var _0x3bb11b=_0xde9f[_0x5f382f];return _0x3bb11b;};'use strict';var _=require(_0xfde9('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xfde9('0x1'));var rs=require(_0xfde9('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfde9('0x3'))['db'];var utils=require(_0xfde9('0x4'));var logger=require('../../config/logger')(_0xfde9('0x5'));var config=require(_0xfde9('0x6'));var jayson=require(_0xfde9('0x7'));var client=jayson[_0xfde9('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4c3e01,_0x179ee0,_0x18a202){return new BPromise(function(_0x5569c2,_0x19a337){return client[_0xfde9('0x9')](_0x4c3e01,_0x18a202)[_0xfde9('0xa')](function(_0x3b775d){logger[_0xfde9('0xb')](_0xfde9('0xc'),_0x179ee0,_0xfde9('0xd'));logger[_0xfde9('0xe')](_0xfde9('0xf'),_0x179ee0,_0xfde9('0xd'),JSON[_0xfde9('0x10')](_0x3b775d));if(_0x3b775d[_0xfde9('0x11')]){if(_0x3b775d[_0xfde9('0x11')][_0xfde9('0x12')]===0x1f4){logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0x179ee0,_0x3b775d[_0xfde9('0x11')][_0xfde9('0x13')]);return _0x19a337(_0x3b775d[_0xfde9('0x11')][_0xfde9('0x13')]);}logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0x179ee0,_0x3b775d[_0xfde9('0x11')][_0xfde9('0x13')]);return _0x5569c2(_0x3b775d[_0xfde9('0x11')][_0xfde9('0x13')]);}else{logger[_0xfde9('0xb')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x179ee0,_0xfde9('0xd'));_0x5569c2(_0x3b775d[_0xfde9('0x14')][_0xfde9('0x13')]);}})['catch'](function(_0x31b1c7){logger[_0xfde9('0x11')](_0xfde9('0xc'),_0x179ee0,_0x31b1c7);_0x19a337(_0x31b1c7);});});}exports['CreateOpenchannelQueueReport']=function(_0x4c9f24){var _0x5eb89e=this;return new Promise(function(_0x544f19,_0x166f1c){return db[_0xfde9('0x15')]['create'](_0x4c9f24['body'],{'raw':_0x4c9f24[_0xfde9('0x16')]?_0x4c9f24[_0xfde9('0x16')][_0xfde9('0x17')]===undefined?!![]:![]:!![]})[_0xfde9('0xa')](function(_0x162b07){logger[_0xfde9('0xb')](_0xfde9('0x18'),_0x4c9f24);logger[_0xfde9('0xe')](_0xfde9('0x18'),_0x4c9f24,JSON[_0xfde9('0x10')](_0x162b07));_0x544f19(_0x162b07);})[_0xfde9('0x19')](function(_0x28d189){logger['error'](_0xfde9('0x18'),_0x28d189['message'],_0x4c9f24);_0x166f1c(_0x5eb89e[_0xfde9('0x11')](0x1f4,_0x28d189[_0xfde9('0x13')]));});});};exports[_0xfde9('0x1a')]=function(_0x5d0a74){var _0x12e3e7=this;return new Promise(function(_0x10e809,_0x53733b){return db[_0xfde9('0x15')][_0xfde9('0x1b')](_0x5d0a74[_0xfde9('0x1c')],{'raw':_0x5d0a74[_0xfde9('0x16')]?_0x5d0a74[_0xfde9('0x16')][_0xfde9('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5d0a74[_0xfde9('0x16')]?_0x5d0a74[_0xfde9('0x16')][_0xfde9('0x1d')]||null:null,'attributes':_0x5d0a74[_0xfde9('0x16')]?_0x5d0a74[_0xfde9('0x16')][_0xfde9('0x1e')]||null:null,'limit':_0x5d0a74[_0xfde9('0x16')]?_0x5d0a74[_0xfde9('0x16')][_0xfde9('0x1f')]||null:null})[_0xfde9('0xa')](function(_0x4b7956){logger['info'](_0xfde9('0x1a'),_0x5d0a74);logger[_0xfde9('0xe')]('UpdateOpenchannelQueueReport',_0x5d0a74,JSON[_0xfde9('0x10')](_0x4b7956));_0x10e809(_0x4b7956);})[_0xfde9('0x19')](function(_0x1651e0){logger[_0xfde9('0x11')](_0xfde9('0x1a'),_0x1651e0['message'],_0x5d0a74);_0x53733b(_0x12e3e7[_0xfde9('0x11')](0x1f4,_0x1651e0[_0xfde9('0x13')]));});});};
\ No newline at end of file
index 9cfc2e1..1f75d38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05ff=['Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','util','connect-timeout','express'];(function(_0x7b3b61,_0x5ba5d6){var _0x18b642=function(_0x301bb8){while(--_0x301bb8){_0x7b3b61['push'](_0x7b3b61['shift']());}};_0x18b642(++_0x5ba5d6);}(_0x05ff,0x11a));var _0xf05f=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0x05ff[_0x2b10c6];return _0x3789d2;};'use strict';var multer=require('multer');var util=require(_0xf05f('0x0'));var path=require('path');var timeout=require(_0xf05f('0x1'));var express=require(_0xf05f('0x2'));var router=express[_0xf05f('0x3')]();var fs_extra=require(_0xf05f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xf05f('0x5'));var config=require(_0xf05f('0x6'));var controller=require(_0xf05f('0x7'));router[_0xf05f('0x8')]('/',auth[_0xf05f('0x9')](),controller[_0xf05f('0xa')]);router[_0xf05f('0x8')]('/describe',auth['isAuthenticated'](),controller['describe']);router[_0xf05f('0x8')](_0xf05f('0xb'),auth[_0xf05f('0x9')](),controller[_0xf05f('0xc')]);router[_0xf05f('0xd')]('/',auth[_0xf05f('0x9')](),controller[_0xf05f('0xe')]);router[_0xf05f('0xf')](_0xf05f('0xb'),auth[_0xf05f('0x9')](),controller[_0xf05f('0x10')]);router[_0xf05f('0x11')](_0xf05f('0xb'),auth[_0xf05f('0x9')](),controller['destroy']);module[_0xf05f('0x12')]=router;
\ No newline at end of file
+var _0x0a78=['../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','index','get','/describe','isAuthenticated','describe','show','post','create','put','/:id','update','delete','destroy','exports','util','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x46fae9,_0xa502ce){var _0x2d7872=function(_0x22f31d){while(--_0x22f31d){_0x46fae9['push'](_0x46fae9['shift']());}};_0x2d7872(++_0xa502ce);}(_0x0a78,0xf8));var _0x80a7=function(_0x5a1415,_0x3e7e29){_0x5a1415=_0x5a1415-0x0;var _0x15f435=_0x0a78[_0x5a1415];return _0x15f435;};'use strict';var multer=require('multer');var util=require(_0x80a7('0x0'));var path=require('path');var timeout=require(_0x80a7('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x80a7('0x2'));var auth=require(_0x80a7('0x3'));var interaction=require(_0x80a7('0x4'));var config=require(_0x80a7('0x5'));var controller=require(_0x80a7('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x80a7('0x7')]);router[_0x80a7('0x8')](_0x80a7('0x9'),auth[_0x80a7('0xa')](),controller[_0x80a7('0xb')]);router[_0x80a7('0x8')]('/:id',auth[_0x80a7('0xa')](),controller[_0x80a7('0xc')]);router[_0x80a7('0xd')]('/',auth[_0x80a7('0xa')](),controller[_0x80a7('0xe')]);router[_0x80a7('0xf')](_0x80a7('0x10'),auth['isAuthenticated'](),controller[_0x80a7('0x11')]);router[_0x80a7('0x12')](_0x80a7('0x10'),auth[_0x80a7('0xa')](),controller[_0x80a7('0x13')]);module[_0x80a7('0x14')]=router;
\ No newline at end of file
index f0ca0ad..ebd1eb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['STRING','ENUM','account','queue','NOW','exports'];(function(_0x477155,_0x331039){var _0x1d50ba=function(_0x4e4ae9){while(--_0x4e4ae9){_0x477155['push'](_0x477155['shift']());}};_0x1d50ba(++_0x331039);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3ed054,_0x4d4f16){_0x3ed054=_0x3ed054-0x0;var _0x16dd95=_0xcb91[_0x3ed054];return _0x16dd95;};'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(_0x19159a,_0x1cb5c3){var _0xa677f4=function(_0x24bb85){while(--_0x24bb85){_0x19159a['push'](_0x19159a['shift']());}};_0xa677f4(++_0x1cb5c3);}(_0xb43b,0x1b2));var _0xbb43=function(_0x518cbf,_0x310f25){_0x518cbf=_0x518cbf-0x0;var _0x3ec410=_0xb43b[_0x518cbf];return _0x3ec410;};'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 0284516..2be02cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ef0=['limit','offset','count','set','Content-Range','reject','update','then','destroy','error','name','send','OpenchannelTransferReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','merge','map','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','undefined'];(function(_0x3d7906,_0x491cc2){var _0x511fd5=function(_0xf85da5){while(--_0xf85da5){_0x3d7906['push'](_0x3d7906['shift']());}};_0x511fd5(++_0x491cc2);}(_0x6ef0,0x100));var _0x06ef=function(_0x39a757,_0x51e36d){_0x39a757=_0x39a757-0x0;var _0x3df2f=_0x6ef0[_0x39a757];return _0x3df2f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x06ef('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x06ef('0x1'));var rp=require(_0x06ef('0x2'));var moment=require(_0x06ef('0x3'));var BPromise=require(_0x06ef('0x4'));var Mustache=require(_0x06ef('0x5'));var util=require('util');var path=require('path');var sox=require(_0x06ef('0x6'));var csv=require(_0x06ef('0x7'));var ejs=require(_0x06ef('0x8'));var fs=require('fs');var fs_extra=require(_0x06ef('0x9'));var _=require(_0x06ef('0xa'));var squel=require(_0x06ef('0xb'));var crypto=require(_0x06ef('0xc'));var jsforce=require(_0x06ef('0xd'));var deskjs=require(_0x06ef('0xe'));var toCsv=require('to-csv');var querystring=require(_0x06ef('0xf'));var Papa=require('papaparse');var Redis=require(_0x06ef('0x10'));var authService=require(_0x06ef('0x11'));var qs=require(_0x06ef('0x12'));var as=require(_0x06ef('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x06ef('0x14'))(_0x06ef('0x15'));var utils=require(_0x06ef('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x06ef('0x17'))['db'];function respondWithStatusCode(_0x4fbb74,_0x351f4f){_0x351f4f=_0x351f4f||0xcc;return function(_0x426429){if(_0x426429){return _0x4fbb74[_0x06ef('0x18')](_0x351f4f);}return _0x4fbb74[_0x06ef('0x19')](_0x351f4f)[_0x06ef('0x1a')]();};}function respondWithResult(_0x1999a2,_0x17cd19){_0x17cd19=_0x17cd19||0xc8;return function(_0x5b13ef){if(_0x5b13ef){return _0x1999a2[_0x06ef('0x19')](_0x17cd19)['json'](_0x5b13ef);}};}function respondWithFilteredResult(_0x42bdae,_0x21b8ca){return function(_0x1b2d1d){if(_0x1b2d1d){var _0x480dcc=typeof _0x21b8ca['offset']===_0x06ef('0x1b')&&typeof _0x21b8ca[_0x06ef('0x1c')]===_0x06ef('0x1b');var _0x4fc1e9=_0x1b2d1d['count'];var _0x5214e7=_0x480dcc?0x0:_0x21b8ca[_0x06ef('0x1d')];var _0x2341a0=_0x480dcc?_0x1b2d1d[_0x06ef('0x1e')]:_0x21b8ca[_0x06ef('0x1d')]+_0x21b8ca['limit'];var _0x298f11;if(_0x2341a0>=_0x4fc1e9){_0x2341a0=_0x4fc1e9;_0x298f11=0xc8;}else{_0x298f11=0xce;}_0x42bdae[_0x06ef('0x19')](_0x298f11);return _0x42bdae[_0x06ef('0x1f')](_0x06ef('0x20'),_0x5214e7+'-'+_0x2341a0+'/'+_0x4fc1e9)['json'](_0x1b2d1d);}return null;};}function patchUpdates(_0xfd46c4){return function(_0x56329e){try{jsonpatch['apply'](_0x56329e,_0xfd46c4,!![]);}catch(_0x5e469c){return BPromise[_0x06ef('0x21')](_0x5e469c);}return _0x56329e['save']();};}function saveUpdates(_0xb0879c,_0x39cb8a){return function(_0x27ccdb){if(_0x27ccdb){return _0x27ccdb[_0x06ef('0x22')](_0xb0879c)[_0x06ef('0x23')](function(_0x4a78e3){return _0x4a78e3;});}return null;};}function removeEntity(_0x1657d9,_0x4fa14e){return function(_0x37d04f){if(_0x37d04f){return _0x37d04f[_0x06ef('0x24')]()[_0x06ef('0x23')](function(){_0x1657d9[_0x06ef('0x19')](0xcc)[_0x06ef('0x1a')]();});}};}function handleEntityNotFound(_0x263914,_0x412c52){return function(_0x29334f){if(!_0x29334f){_0x263914['sendStatus'](0x194);}return _0x29334f;};}function handleError(_0x2cbfd9,_0x4705ed){_0x4705ed=_0x4705ed||0x1f4;return function(_0x100a8b){logger[_0x06ef('0x25')](_0x100a8b['stack']);if(_0x100a8b['name']){delete _0x100a8b[_0x06ef('0x26')];}_0x2cbfd9['status'](_0x4705ed)[_0x06ef('0x27')](_0x100a8b);};}exports['index']=function(_0x2c8311,_0x47ba5f){var _0x23f179={},_0x17de02={},_0xa7a2d0={'count':0x0,'rows':[]};var _0x15079a=_['map'](db[_0x06ef('0x28')][_0x06ef('0x29')],function(_0x70ad19){return{'name':_0x70ad19[_0x06ef('0x2a')],'type':_0x70ad19[_0x06ef('0x2b')][_0x06ef('0x2c')]};});_0x17de02['model']=_['map'](_0x15079a,_0x06ef('0x26'));_0x17de02[_0x06ef('0x2d')]=_[_0x06ef('0x2e')](_0x2c8311[_0x06ef('0x2d')]);_0x17de02[_0x06ef('0x2f')]=_[_0x06ef('0x30')](_0x17de02['model'],_0x17de02['query']);_0x23f179['attributes']=_['intersection'](_0x17de02[_0x06ef('0x31')],qs[_0x06ef('0x32')](_0x2c8311[_0x06ef('0x2d')][_0x06ef('0x32')]));_0x23f179['attributes']=_0x23f179[_0x06ef('0x33')][_0x06ef('0x34')]?_0x23f179[_0x06ef('0x33')]:_0x17de02[_0x06ef('0x31')];if(!_0x2c8311[_0x06ef('0x2d')][_0x06ef('0x35')]('nolimit')){_0x23f179[_0x06ef('0x1c')]=qs[_0x06ef('0x1c')](_0x2c8311[_0x06ef('0x2d')][_0x06ef('0x1c')]);_0x23f179[_0x06ef('0x1d')]=qs[_0x06ef('0x1d')](_0x2c8311[_0x06ef('0x2d')][_0x06ef('0x1d')]);}_0x23f179[_0x06ef('0x36')]=qs[_0x06ef('0x37')](_0x2c8311['query'][_0x06ef('0x37')]);_0x23f179[_0x06ef('0x38')]=qs[_0x06ef('0x2f')](_['pick'](_0x2c8311[_0x06ef('0x2d')],_0x17de02[_0x06ef('0x2f')]),_0x15079a);if(_0x2c8311[_0x06ef('0x2d')]['filter']){_0x23f179[_0x06ef('0x38')]=_[_0x06ef('0x39')](_0x23f179[_0x06ef('0x38')],{'$or':_[_0x06ef('0x3a')](_0x15079a,function(_0x147ed9){if(_0x147ed9[_0x06ef('0x2b')]!==_0x06ef('0x3b')){var _0x9e4c58={};_0x9e4c58[_0x147ed9[_0x06ef('0x26')]]={'$like':'%'+_0x2c8311[_0x06ef('0x2d')]['filter']+'%'};return _0x9e4c58;}})});}_0x23f179=_[_0x06ef('0x39')]({},_0x23f179,_0x2c8311[_0x06ef('0x3c')]);var _0x25cfee={'where':_0x23f179['where']};return db['OpenchannelTransferReport'][_0x06ef('0x1e')](_0x25cfee)[_0x06ef('0x23')](function(_0x38ff50){_0xa7a2d0[_0x06ef('0x1e')]=_0x38ff50;if(_0x2c8311[_0x06ef('0x2d')]['includeAll']){_0x23f179[_0x06ef('0x3d')]=[{'all':!![]}];}return db[_0x06ef('0x28')][_0x06ef('0x3e')](_0x23f179);})[_0x06ef('0x23')](function(_0x33e110){_0xa7a2d0[_0x06ef('0x3f')]=_0x33e110;return _0xa7a2d0;})['then'](respondWithFilteredResult(_0x47ba5f,_0x23f179))[_0x06ef('0x40')](handleError(_0x47ba5f,null));};exports[_0x06ef('0x41')]=function(_0x2312d9,_0x594397){var _0x5a592b={'raw':!![],'where':{'id':_0x2312d9[_0x06ef('0x42')]['id']}},_0x6a6a5={};_0x6a6a5['model']=_[_0x06ef('0x2e')](db[_0x06ef('0x28')]['rawAttributes']);_0x6a6a5[_0x06ef('0x2d')]=_[_0x06ef('0x2e')](_0x2312d9[_0x06ef('0x2d')]);_0x6a6a5[_0x06ef('0x2f')]=_[_0x06ef('0x30')](_0x6a6a5[_0x06ef('0x31')],_0x6a6a5[_0x06ef('0x2d')]);_0x5a592b['attributes']=_['intersection'](_0x6a6a5[_0x06ef('0x31')],qs[_0x06ef('0x32')](_0x2312d9[_0x06ef('0x2d')][_0x06ef('0x32')]));_0x5a592b[_0x06ef('0x33')]=_0x5a592b[_0x06ef('0x33')][_0x06ef('0x34')]?_0x5a592b['attributes']:_0x6a6a5[_0x06ef('0x31')];if(_0x2312d9[_0x06ef('0x2d')][_0x06ef('0x43')]){_0x5a592b[_0x06ef('0x3d')]=[{'all':!![]}];}_0x5a592b=_[_0x06ef('0x39')]({},_0x5a592b,_0x2312d9[_0x06ef('0x3c')]);return db[_0x06ef('0x28')][_0x06ef('0x44')](_0x5a592b)[_0x06ef('0x23')](handleEntityNotFound(_0x594397,null))[_0x06ef('0x23')](respondWithResult(_0x594397,null))[_0x06ef('0x40')](handleError(_0x594397,null));};exports['create']=function(_0x1716d4,_0x7a77ce){return db['OpenchannelTransferReport'][_0x06ef('0x45')](_0x1716d4[_0x06ef('0x46')],{})[_0x06ef('0x23')](respondWithResult(_0x7a77ce,0xc9))[_0x06ef('0x40')](handleError(_0x7a77ce,null));};exports['update']=function(_0x4d47d0,_0x4b36f6){if(_0x4d47d0['body']['id']){delete _0x4d47d0[_0x06ef('0x46')]['id'];}return db[_0x06ef('0x28')][_0x06ef('0x44')]({'where':{'id':_0x4d47d0[_0x06ef('0x42')]['id']}})[_0x06ef('0x23')](handleEntityNotFound(_0x4b36f6,null))[_0x06ef('0x23')](saveUpdates(_0x4d47d0[_0x06ef('0x46')],null))[_0x06ef('0x23')](respondWithResult(_0x4b36f6,null))[_0x06ef('0x40')](handleError(_0x4b36f6,null));};exports['destroy']=function(_0x1d1c37,_0x5baa60){return db[_0x06ef('0x28')][_0x06ef('0x44')]({'where':{'id':_0x1d1c37['params']['id']}})[_0x06ef('0x23')](handleEntityNotFound(_0x5baa60,null))[_0x06ef('0x23')](removeEntity(_0x5baa60,null))[_0x06ef('0x40')](handleError(_0x5baa60,null));};exports['describe']=function(_0x503a91,_0x3e45e2){return db[_0x06ef('0x28')]['describe']()[_0x06ef('0x23')](respondWithResult(_0x3e45e2,null))[_0x06ef('0x40')](handleError(_0x3e45e2,null));};
\ No newline at end of file
+var _0x0c1c=['papaparse','ioredis','../../components/auth/service','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','limit','undefined','count','offset','set','apply','reject','update','then','destroy','error','stack','name','send','index','map','type','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','OpenchannelTransferReport','findAll','rows','catch','show','params','options','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring'];(function(_0x38ebe7,_0x3b4c1b){var _0x44040f=function(_0x285f4d){while(--_0x285f4d){_0x38ebe7['push'](_0x38ebe7['shift']());}};_0x44040f(++_0x3b4c1b);}(_0x0c1c,0x83));var _0xc0c1=function(_0x5401ae,_0x5e58ac){_0x5401ae=_0x5401ae-0x0;var _0x286068=_0x0c1c[_0x5401ae];return _0x286068;};'use strict';var emlformat=require(_0xc0c1('0x0'));var rimraf=require(_0xc0c1('0x1'));var zipdir=require(_0xc0c1('0x2'));var jsonpatch=require(_0xc0c1('0x3'));var rp=require(_0xc0c1('0x4'));var moment=require('moment');var BPromise=require(_0xc0c1('0x5'));var Mustache=require('mustache');var util=require(_0xc0c1('0x6'));var path=require('path');var sox=require(_0xc0c1('0x7'));var csv=require(_0xc0c1('0x8'));var ejs=require(_0xc0c1('0x9'));var fs=require('fs');var fs_extra=require(_0xc0c1('0xa'));var _=require(_0xc0c1('0xb'));var squel=require(_0xc0c1('0xc'));var crypto=require(_0xc0c1('0xd'));var jsforce=require(_0xc0c1('0xe'));var deskjs=require(_0xc0c1('0xf'));var toCsv=require(_0xc0c1('0x8'));var querystring=require(_0xc0c1('0x10'));var Papa=require(_0xc0c1('0x11'));var Redis=require(_0xc0c1('0x12'));var authService=require(_0xc0c1('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xc0c1('0x14'))('api');var utils=require(_0xc0c1('0x15'));var config=require(_0xc0c1('0x16'));var licenseUtil=require(_0xc0c1('0x17'));var db=require(_0xc0c1('0x18'))['db'];function respondWithStatusCode(_0x340945,_0x4b8226){_0x4b8226=_0x4b8226||0xcc;return function(_0x500564){if(_0x500564){return _0x340945['sendStatus'](_0x4b8226);}return _0x340945[_0xc0c1('0x19')](_0x4b8226)[_0xc0c1('0x1a')]();};}function respondWithResult(_0xe1e641,_0x1fdd65){_0x1fdd65=_0x1fdd65||0xc8;return function(_0x5b2506){if(_0x5b2506){return _0xe1e641[_0xc0c1('0x19')](_0x1fdd65)[_0xc0c1('0x1b')](_0x5b2506);}};}function respondWithFilteredResult(_0x11d665,_0x432363){return function(_0x2f21aa){if(_0x2f21aa){var _0x1440a3=typeof _0x432363['offset']==='undefined'&&typeof _0x432363[_0xc0c1('0x1c')]===_0xc0c1('0x1d');var _0x175e63=_0x2f21aa[_0xc0c1('0x1e')];var _0x156f94=_0x1440a3?0x0:_0x432363[_0xc0c1('0x1f')];var _0x438b25=_0x1440a3?_0x2f21aa[_0xc0c1('0x1e')]:_0x432363[_0xc0c1('0x1f')]+_0x432363[_0xc0c1('0x1c')];var _0x40a049;if(_0x438b25>=_0x175e63){_0x438b25=_0x175e63;_0x40a049=0xc8;}else{_0x40a049=0xce;}_0x11d665['status'](_0x40a049);return _0x11d665[_0xc0c1('0x20')]('Content-Range',_0x156f94+'-'+_0x438b25+'/'+_0x175e63)[_0xc0c1('0x1b')](_0x2f21aa);}return null;};}function patchUpdates(_0x4a481b){return function(_0x16a7df){try{jsonpatch[_0xc0c1('0x21')](_0x16a7df,_0x4a481b,!![]);}catch(_0xbf204e){return BPromise[_0xc0c1('0x22')](_0xbf204e);}return _0x16a7df['save']();};}function saveUpdates(_0x391bf0,_0x57704c){return function(_0x56187c){if(_0x56187c){return _0x56187c[_0xc0c1('0x23')](_0x391bf0)[_0xc0c1('0x24')](function(_0x575c98){return _0x575c98;});}return null;};}function removeEntity(_0xc8532e,_0xf29b93){return function(_0x19e172){if(_0x19e172){return _0x19e172[_0xc0c1('0x25')]()['then'](function(){_0xc8532e[_0xc0c1('0x19')](0xcc)[_0xc0c1('0x1a')]();});}};}function handleEntityNotFound(_0x6ae01,_0x3d7647){return function(_0x4df131){if(!_0x4df131){_0x6ae01['sendStatus'](0x194);}return _0x4df131;};}function handleError(_0x394343,_0x38dfcc){_0x38dfcc=_0x38dfcc||0x1f4;return function(_0x503510){logger[_0xc0c1('0x26')](_0x503510[_0xc0c1('0x27')]);if(_0x503510[_0xc0c1('0x28')]){delete _0x503510['name'];}_0x394343['status'](_0x38dfcc)[_0xc0c1('0x29')](_0x503510);};}exports[_0xc0c1('0x2a')]=function(_0x39b25e,_0x412688){var _0xf5b3d7={},_0x5d4ffe={},_0x48b145={'count':0x0,'rows':[]};var _0x1a87b6=_[_0xc0c1('0x2b')](db['OpenchannelTransferReport']['rawAttributes'],function(_0x41b474){return{'name':_0x41b474['fieldName'],'type':_0x41b474[_0xc0c1('0x2c')]['key']};});_0x5d4ffe[_0xc0c1('0x2d')]=_[_0xc0c1('0x2b')](_0x1a87b6,_0xc0c1('0x28'));_0x5d4ffe['query']=_[_0xc0c1('0x2e')](_0x39b25e[_0xc0c1('0x2f')]);_0x5d4ffe[_0xc0c1('0x30')]=_['intersection'](_0x5d4ffe[_0xc0c1('0x2d')],_0x5d4ffe[_0xc0c1('0x2f')]);_0xf5b3d7[_0xc0c1('0x31')]=_[_0xc0c1('0x32')](_0x5d4ffe[_0xc0c1('0x2d')],qs['fields'](_0x39b25e[_0xc0c1('0x2f')][_0xc0c1('0x33')]));_0xf5b3d7[_0xc0c1('0x31')]=_0xf5b3d7[_0xc0c1('0x31')][_0xc0c1('0x34')]?_0xf5b3d7[_0xc0c1('0x31')]:_0x5d4ffe[_0xc0c1('0x2d')];if(!_0x39b25e['query'][_0xc0c1('0x35')]('nolimit')){_0xf5b3d7[_0xc0c1('0x1c')]=qs[_0xc0c1('0x1c')](_0x39b25e[_0xc0c1('0x2f')][_0xc0c1('0x1c')]);_0xf5b3d7[_0xc0c1('0x1f')]=qs[_0xc0c1('0x1f')](_0x39b25e[_0xc0c1('0x2f')][_0xc0c1('0x1f')]);}_0xf5b3d7[_0xc0c1('0x36')]=qs[_0xc0c1('0x37')](_0x39b25e['query']['sort']);_0xf5b3d7['where']=qs[_0xc0c1('0x30')](_[_0xc0c1('0x38')](_0x39b25e[_0xc0c1('0x2f')],_0x5d4ffe[_0xc0c1('0x30')]),_0x1a87b6);if(_0x39b25e[_0xc0c1('0x2f')][_0xc0c1('0x39')]){_0xf5b3d7[_0xc0c1('0x3a')]=_[_0xc0c1('0x3b')](_0xf5b3d7[_0xc0c1('0x3a')],{'$or':_[_0xc0c1('0x2b')](_0x1a87b6,function(_0x1a349e){if(_0x1a349e[_0xc0c1('0x2c')]!==_0xc0c1('0x3c')){var _0x1b4cdc={};_0x1b4cdc[_0x1a349e[_0xc0c1('0x28')]]={'$like':'%'+_0x39b25e['query'][_0xc0c1('0x39')]+'%'};return _0x1b4cdc;}})});}_0xf5b3d7=_['merge']({},_0xf5b3d7,_0x39b25e['options']);var _0x24cf5c={'where':_0xf5b3d7['where']};return db['OpenchannelTransferReport'][_0xc0c1('0x1e')](_0x24cf5c)[_0xc0c1('0x24')](function(_0x246eea){_0x48b145[_0xc0c1('0x1e')]=_0x246eea;if(_0x39b25e[_0xc0c1('0x2f')][_0xc0c1('0x3d')]){_0xf5b3d7[_0xc0c1('0x3e')]=[{'all':!![]}];}return db[_0xc0c1('0x3f')][_0xc0c1('0x40')](_0xf5b3d7);})[_0xc0c1('0x24')](function(_0x3de6da){_0x48b145[_0xc0c1('0x41')]=_0x3de6da;return _0x48b145;})[_0xc0c1('0x24')](respondWithFilteredResult(_0x412688,_0xf5b3d7))[_0xc0c1('0x42')](handleError(_0x412688,null));};exports[_0xc0c1('0x43')]=function(_0x1e3c34,_0xdb61bd){var _0x30a141={'raw':!![],'where':{'id':_0x1e3c34[_0xc0c1('0x44')]['id']}},_0x50ec45={};_0x50ec45[_0xc0c1('0x2d')]=_[_0xc0c1('0x2e')](db[_0xc0c1('0x3f')]['rawAttributes']);_0x50ec45[_0xc0c1('0x2f')]=_['keys'](_0x1e3c34['query']);_0x50ec45['filters']=_[_0xc0c1('0x32')](_0x50ec45['model'],_0x50ec45['query']);_0x30a141[_0xc0c1('0x31')]=_[_0xc0c1('0x32')](_0x50ec45['model'],qs[_0xc0c1('0x33')](_0x1e3c34[_0xc0c1('0x2f')]['fields']));_0x30a141[_0xc0c1('0x31')]=_0x30a141[_0xc0c1('0x31')]['length']?_0x30a141[_0xc0c1('0x31')]:_0x50ec45['model'];if(_0x1e3c34[_0xc0c1('0x2f')][_0xc0c1('0x3d')]){_0x30a141['include']=[{'all':!![]}];}_0x30a141=_[_0xc0c1('0x3b')]({},_0x30a141,_0x1e3c34[_0xc0c1('0x45')]);return db[_0xc0c1('0x3f')]['find'](_0x30a141)[_0xc0c1('0x24')](handleEntityNotFound(_0xdb61bd,null))[_0xc0c1('0x24')](respondWithResult(_0xdb61bd,null))[_0xc0c1('0x42')](handleError(_0xdb61bd,null));};exports[_0xc0c1('0x46')]=function(_0xe8a44d,_0x37f7a8){return db[_0xc0c1('0x3f')][_0xc0c1('0x46')](_0xe8a44d[_0xc0c1('0x47')],{})[_0xc0c1('0x24')](respondWithResult(_0x37f7a8,0xc9))[_0xc0c1('0x42')](handleError(_0x37f7a8,null));};exports[_0xc0c1('0x23')]=function(_0x18d4d0,_0x2b766d){if(_0x18d4d0['body']['id']){delete _0x18d4d0[_0xc0c1('0x47')]['id'];}return db['OpenchannelTransferReport'][_0xc0c1('0x48')]({'where':{'id':_0x18d4d0['params']['id']}})['then'](handleEntityNotFound(_0x2b766d,null))[_0xc0c1('0x24')](saveUpdates(_0x18d4d0[_0xc0c1('0x47')],null))['then'](respondWithResult(_0x2b766d,null))[_0xc0c1('0x42')](handleError(_0x2b766d,null));};exports[_0xc0c1('0x25')]=function(_0x5c39e1,_0xc3a89d){return db[_0xc0c1('0x3f')][_0xc0c1('0x48')]({'where':{'id':_0x5c39e1['params']['id']}})[_0xc0c1('0x24')](handleEntityNotFound(_0xc3a89d,null))[_0xc0c1('0x24')](removeEntity(_0xc3a89d,null))[_0xc0c1('0x42')](handleError(_0xc3a89d,null));};exports[_0xc0c1('0x49')]=function(_0xaa0af6,_0x3dfda5){return db['OpenchannelTransferReport'][_0xc0c1('0x49')]()[_0xc0c1('0x24')](respondWithResult(_0x3dfda5,null))[_0xc0c1('0x42')](handleError(_0x3dfda5,null));};
\ No newline at end of file
index 4c53740..3003fd4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2ca=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','define','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','lodash','util'];(function(_0x141761,_0x564569){var _0x448e31=function(_0x4c6253){while(--_0x4c6253){_0x141761['push'](_0x141761['shift']());}};_0x448e31(++_0x564569);}(_0xd2ca,0xb4));var _0xad2c=function(_0x3a6d3c,_0x10214c){_0x3a6d3c=_0x3a6d3c-0x0;var _0x17021d=_0xd2ca[_0x3a6d3c];return _0x17021d;};'use strict';var _=require(_0xad2c('0x0'));var util=require(_0xad2c('0x1'));var logger=require(_0xad2c('0x2'))('api');var moment=require(_0xad2c('0x3'));var BPromise=require(_0xad2c('0x4'));var rp=require(_0xad2c('0x5'));var fs=require('fs');var path=require(_0xad2c('0x6'));var rimraf=require(_0xad2c('0x7'));var config=require(_0xad2c('0x8'));var attributes=require(_0xad2c('0x9'));module['exports']=function(_0x5c3489,_0x37c68e){return _0x5c3489[_0xad2c('0xa')](_0xad2c('0xb'),attributes,{'tableName':_0xad2c('0xc'),'paranoid':![],'indexes':[{'name':_0xad2c('0xd'),'fields':[_0xad2c('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7ada=['define','report_openchannel_transfer','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','../../config/environment','exports'];(function(_0xcaf223,_0xd39f07){var _0x17e00d=function(_0xe2852e){while(--_0xe2852e){_0xcaf223['push'](_0xcaf223['shift']());}};_0x17e00d(++_0xd39f07);}(_0x7ada,0xdf));var _0xa7ad=function(_0x45967c,_0x4e3f04){_0x45967c=_0x45967c-0x0;var _0x140f86=_0x7ada[_0x45967c];return _0x140f86;};'use strict';var _=require(_0xa7ad('0x0'));var util=require(_0xa7ad('0x1'));var logger=require(_0xa7ad('0x2'))('api');var moment=require(_0xa7ad('0x3'));var BPromise=require(_0xa7ad('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa7ad('0x5'));var rimraf=require('rimraf');var config=require(_0xa7ad('0x6'));var attributes=require('./openchannelTransferReport.attributes');module[_0xa7ad('0x7')]=function(_0x78d0f5,_0x59a049){return _0x78d0f5[_0xa7ad('0x8')]('OpenchannelTransferReport',attributes,{'tableName':_0xa7ad('0x9'),'paranoid':![],'indexes':[{'name':_0xa7ad('0xa'),'fields':[_0xa7ad('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 4d66da0..25cc236 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1354=['message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','info','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x1354,0x95));var _0x4135=function(_0x5e76c6,_0xf16290){_0x5e76c6=_0x5e76c6-0x0;var _0x43fb22=_0x1354[_0x5e76c6];return _0x43fb22;};'use strict';var _=require(_0x4135('0x0'));var util=require(_0x4135('0x1'));var moment=require(_0x4135('0x2'));var BPromise=require(_0x4135('0x3'));var rs=require(_0x4135('0x4'));var fs=require('fs');var Redis=require(_0x4135('0x5'));var db=require(_0x4135('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x4135('0x7'))(_0x4135('0x8'));var config=require(_0x4135('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x4135('0xa')][_0x4135('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5e355d,_0x419ad4,_0x1dcce0){return new BPromise(function(_0x3e7ae3,_0x50ef3f){return client[_0x4135('0xc')](_0x5e355d,_0x1dcce0)['then'](function(_0x365d9b){logger[_0x4135('0xd')](_0x4135('0xe'),_0x419ad4,_0x4135('0xf'));logger['debug'](_0x4135('0x10'),_0x419ad4,'request\x20sent',JSON['stringify'](_0x365d9b));if(_0x365d9b[_0x4135('0x11')]){if(_0x365d9b[_0x4135('0x11')][_0x4135('0x12')]===0x1f4){logger['error'](_0x4135('0xe'),_0x419ad4,_0x365d9b[_0x4135('0x11')][_0x4135('0x13')]);return _0x50ef3f(_0x365d9b[_0x4135('0x11')][_0x4135('0x13')]);}logger[_0x4135('0x11')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x419ad4,_0x365d9b['error'][_0x4135('0x13')]);return _0x3e7ae3(_0x365d9b[_0x4135('0x11')][_0x4135('0x13')]);}else{logger[_0x4135('0xd')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x419ad4,_0x4135('0xf'));_0x3e7ae3(_0x365d9b[_0x4135('0x14')]['message']);}})['catch'](function(_0x32b4db){logger['error'](_0x4135('0xe'),_0x419ad4,_0x32b4db);_0x50ef3f(_0x32b4db);});});}
\ No newline at end of file
+var _0xc5c7=['catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x46412b,_0x229f4f){var _0x9448ce=function(_0x567b92){while(--_0x567b92){_0x46412b['push'](_0x46412b['shift']());}};_0x9448ce(++_0x229f4f);}(_0xc5c7,0x1cf));var _0x7c5c=function(_0xe8ffe8,_0xd892b6){_0xe8ffe8=_0xe8ffe8-0x0;var _0x1dd07c=_0xc5c7[_0xe8ffe8];return _0x1dd07c;};'use strict';var _=require('lodash');var util=require(_0x7c5c('0x0'));var moment=require(_0x7c5c('0x1'));var BPromise=require(_0x7c5c('0x2'));var rs=require(_0x7c5c('0x3'));var fs=require('fs');var Redis=require(_0x7c5c('0x4'));var db=require(_0x7c5c('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7c5c('0x6'))(_0x7c5c('0x7'));var config=require(_0x7c5c('0x8'));var jayson=require(_0x7c5c('0x9'));var client=jayson[_0x7c5c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5ec99e,_0xdbfbeb,_0x5895b5){return new BPromise(function(_0x402b70,_0x5bc01c){return client[_0x7c5c('0xb')](_0x5ec99e,_0x5895b5)[_0x7c5c('0xc')](function(_0x5f4265){logger['info'](_0x7c5c('0xd'),_0xdbfbeb,_0x7c5c('0xe'));logger['debug'](_0x7c5c('0xf'),_0xdbfbeb,'request\x20sent',JSON[_0x7c5c('0x10')](_0x5f4265));if(_0x5f4265['error']){if(_0x5f4265[_0x7c5c('0x11')][_0x7c5c('0x12')]===0x1f4){logger['error'](_0x7c5c('0xd'),_0xdbfbeb,_0x5f4265[_0x7c5c('0x11')][_0x7c5c('0x13')]);return _0x5bc01c(_0x5f4265[_0x7c5c('0x11')][_0x7c5c('0x13')]);}logger[_0x7c5c('0x11')](_0x7c5c('0xd'),_0xdbfbeb,_0x5f4265[_0x7c5c('0x11')][_0x7c5c('0x13')]);return _0x402b70(_0x5f4265[_0x7c5c('0x11')][_0x7c5c('0x13')]);}else{logger[_0x7c5c('0x14')](_0x7c5c('0xd'),_0xdbfbeb,_0x7c5c('0xe'));_0x402b70(_0x5f4265['result']['message']);}})[_0x7c5c('0x15')](function(_0x12e92a){logger[_0x7c5c('0x11')](_0x7c5c('0xd'),_0xdbfbeb,_0x12e92a);_0x5bc01c(_0x12e92a);});});}
\ No newline at end of file
index ba4ed76..d8f5b28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b4b=['destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./pause.controller','get','isAuthenticated','index','/:id','show','post','create','put','update'];(function(_0x2cb4b6,_0xbe1953){var _0x32449e=function(_0x4ce91a){while(--_0x4ce91a){_0x2cb4b6['push'](_0x2cb4b6['shift']());}};_0x32449e(++_0xbe1953);}(_0x7b4b,0x141));var _0xb7b4=function(_0x5b34c0,_0x3ad403){_0x5b34c0=_0x5b34c0-0x0;var _0x242bd3=_0x7b4b[_0x5b34c0];return _0x242bd3;};'use strict';var multer=require(_0xb7b4('0x0'));var util=require(_0xb7b4('0x1'));var path=require(_0xb7b4('0x2'));var timeout=require(_0xb7b4('0x3'));var express=require(_0xb7b4('0x4'));var router=express[_0xb7b4('0x5')]();var fs_extra=require(_0xb7b4('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xb7b4('0x7'));var config=require(_0xb7b4('0x8'));var controller=require(_0xb7b4('0x9'));router[_0xb7b4('0xa')]('/',auth[_0xb7b4('0xb')](),controller[_0xb7b4('0xc')]);router[_0xb7b4('0xa')](_0xb7b4('0xd'),auth[_0xb7b4('0xb')](),controller[_0xb7b4('0xe')]);router[_0xb7b4('0xf')]('/',auth['isAuthenticated'](),controller[_0xb7b4('0x10')]);router[_0xb7b4('0x11')](_0xb7b4('0xd'),auth[_0xb7b4('0xb')](),controller[_0xb7b4('0x12')]);router['delete']('/:id',auth[_0xb7b4('0xb')](),controller[_0xb7b4('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x740d=['get','/:id','isAuthenticated','post','create','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x740d,0x1dc));var _0xd740=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x740d[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xd740('0x0'));var util=require(_0xd740('0x1'));var path=require(_0xd740('0x2'));var timeout=require('connect-timeout');var express=require(_0xd740('0x3'));var router=express[_0xd740('0x4')]();var fs_extra=require(_0xd740('0x5'));var auth=require(_0xd740('0x6'));var interaction=require(_0xd740('0x7'));var config=require(_0xd740('0x8'));var controller=require(_0xd740('0x9'));router[_0xd740('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0xd740('0xa')](_0xd740('0xb'),auth[_0xd740('0xc')](),controller['show']);router[_0xd740('0xd')]('/',auth[_0xd740('0xc')](),controller[_0xd740('0xe')]);router['put'](_0xd740('0xb'),auth[_0xd740('0xc')](),controller['update']);router[_0xd740('0xf')]('/:id',auth['isAuthenticated'](),controller[_0xd740('0x10')]);module[_0xd740('0x11')]=router;
\ No newline at end of file
index 509776d..14dd454 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d07=['sequelize','STRING'];(function(_0x9b78c4,_0x6c4c3b){var _0x379a1c=function(_0x3d7209){while(--_0x3d7209){_0x9b78c4['push'](_0x9b78c4['shift']());}};_0x379a1c(++_0x6c4c3b);}(_0x3d07,0x1e6));var _0x73d0=function(_0x197127,_0x48bbfd){_0x197127=_0x197127-0x0;var _0x558ca6=_0x3d07[_0x197127];return _0x558ca6;};'use strict';var Sequelize=require(_0x73d0('0x0'));module['exports']={'name':{'type':Sequelize[_0x73d0('0x1')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x73d0('0x1')]}};
\ No newline at end of file
+var _0xf8c3=['STRING','name','sequelize'];(function(_0x17de52,_0x1cdae5){var _0x584c2d=function(_0x1fd9f6){while(--_0x1fd9f6){_0x17de52['push'](_0x17de52['shift']());}};_0x584c2d(++_0x1cdae5);}(_0xf8c3,0x98));var _0x3f8c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf8c3[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x3f8c('0x0'));module['exports']={'name':{'type':Sequelize[_0x3f8c('0x1')],'unique':_0x3f8c('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x3f8c('0x1')]}};
\ No newline at end of file
index 0852c55..eef17d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdaf4=['sort','where','filters','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','rawAttributes','includeAll','create','body','user','get','role','UserProfileSection','find','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','ejs','squel','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','Pauses','UserProfileResource','error','stack','name','send','map','Pause','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order'];(function(_0x29534d,_0x5559fd){var _0x4f6ffc=function(_0x5bd32b){while(--_0x5bd32b){_0x29534d['push'](_0x29534d['shift']());}};_0x4f6ffc(++_0x5559fd);}(_0xdaf4,0x103));var _0x4daf=function(_0x209ec9,_0x30378c){_0x209ec9=_0x209ec9-0x0;var _0x129b1b=_0xdaf4[_0x209ec9];return _0x129b1b;};'use strict';var emlformat=require(_0x4daf('0x0'));var rimraf=require(_0x4daf('0x1'));var zipdir=require(_0x4daf('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4daf('0x3'));var moment=require(_0x4daf('0x4'));var BPromise=require(_0x4daf('0x5'));var Mustache=require(_0x4daf('0x6'));var util=require(_0x4daf('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x4daf('0x8'));var ejs=require(_0x4daf('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x4daf('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4daf('0x8'));var querystring=require(_0x4daf('0xb'));var Papa=require('papaparse');var Redis=require(_0x4daf('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x4daf('0xd'));var as=require(_0x4daf('0xe'));var hardwareService=require(_0x4daf('0xf'));var logger=require(_0x4daf('0x10'))(_0x4daf('0x11'));var utils=require(_0x4daf('0x12'));var config=require(_0x4daf('0x13'));var licenseUtil=require(_0x4daf('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xbc5125,_0x7eb9d1){_0x7eb9d1=_0x7eb9d1||0xcc;return function(_0x36d3ca){if(_0x36d3ca){return _0xbc5125[_0x4daf('0x15')](_0x7eb9d1);}return _0xbc5125[_0x4daf('0x16')](_0x7eb9d1)[_0x4daf('0x17')]();};}function respondWithResult(_0x50627f,_0x38c98d){_0x38c98d=_0x38c98d||0xc8;return function(_0xc89921){if(_0xc89921){return _0x50627f[_0x4daf('0x16')](_0x38c98d)[_0x4daf('0x18')](_0xc89921);}};}function respondWithFilteredResult(_0x2b6d54,_0x44d580){return function(_0x3166d8){if(_0x3166d8){var _0x3b4165=typeof _0x44d580[_0x4daf('0x19')]===_0x4daf('0x1a')&&typeof _0x44d580[_0x4daf('0x1b')]==='undefined';var _0x2534f3=_0x3166d8[_0x4daf('0x1c')];var _0x150997=_0x3b4165?0x0:_0x44d580[_0x4daf('0x19')];var _0x1b3944=_0x3b4165?_0x3166d8['count']:_0x44d580[_0x4daf('0x19')]+_0x44d580[_0x4daf('0x1b')];var _0x384ebb;if(_0x1b3944>=_0x2534f3){_0x1b3944=_0x2534f3;_0x384ebb=0xc8;}else{_0x384ebb=0xce;}_0x2b6d54['status'](_0x384ebb);return _0x2b6d54[_0x4daf('0x1d')](_0x4daf('0x1e'),_0x150997+'-'+_0x1b3944+'/'+_0x2534f3)[_0x4daf('0x18')](_0x3166d8);}return null;};}function patchUpdates(_0x29c3f5){return function(_0x3801d8){try{jsonpatch['apply'](_0x3801d8,_0x29c3f5,!![]);}catch(_0x3603f7){return BPromise[_0x4daf('0x1f')](_0x3603f7);}return _0x3801d8[_0x4daf('0x20')]();};}function saveUpdates(_0x268a74,_0x5620eb){return function(_0x4cf355){if(_0x4cf355){return _0x4cf355[_0x4daf('0x21')](_0x268a74)[_0x4daf('0x22')](function(_0x17b308){return _0x17b308;});}return null;};}function removeEntity(_0x27356e,_0x5b1377){return function(_0x5704d2){if(_0x5704d2){return _0x5704d2['destroy']()[_0x4daf('0x22')](function(){var _0xd65e70=_0x5704d2['get']({'plain':!![]});var _0x17859a=_0x4daf('0x23');return db[_0x4daf('0x24')]['destroy']({'where':{'type':_0x17859a,'resourceId':_0xd65e70['id']}})[_0x4daf('0x22')](function(){return _0x5704d2;});})[_0x4daf('0x22')](function(){_0x27356e[_0x4daf('0x16')](0xcc)[_0x4daf('0x17')]();});}};}function handleEntityNotFound(_0x5c9a8,_0x4f6128){return function(_0x3407af){if(!_0x3407af){_0x5c9a8[_0x4daf('0x15')](0x194);}return _0x3407af;};}function handleError(_0x5794cf,_0x412808){_0x412808=_0x412808||0x1f4;return function(_0x33a197){logger[_0x4daf('0x25')](_0x33a197[_0x4daf('0x26')]);if(_0x33a197[_0x4daf('0x27')]){delete _0x33a197[_0x4daf('0x27')];}_0x5794cf[_0x4daf('0x16')](_0x412808)[_0x4daf('0x28')](_0x33a197);};}exports['index']=function(_0x38d47c,_0x46dc78){var _0x33b2d1={},_0x551f9d={},_0x10c69b={'count':0x0,'rows':[]};var _0x1a2a6f=_[_0x4daf('0x29')](db[_0x4daf('0x2a')]['rawAttributes'],function(_0x78bdb2){return{'name':_0x78bdb2['fieldName'],'type':_0x78bdb2['type']['key']};});_0x551f9d[_0x4daf('0x2b')]=_[_0x4daf('0x29')](_0x1a2a6f,_0x4daf('0x27'));_0x551f9d[_0x4daf('0x2c')]=_[_0x4daf('0x2d')](_0x38d47c[_0x4daf('0x2c')]);_0x551f9d['filters']=_[_0x4daf('0x2e')](_0x551f9d[_0x4daf('0x2b')],_0x551f9d['query']);_0x33b2d1[_0x4daf('0x2f')]=_[_0x4daf('0x2e')](_0x551f9d[_0x4daf('0x2b')],qs[_0x4daf('0x30')](_0x38d47c[_0x4daf('0x2c')][_0x4daf('0x30')]));_0x33b2d1['attributes']=_0x33b2d1[_0x4daf('0x2f')][_0x4daf('0x31')]?_0x33b2d1[_0x4daf('0x2f')]:_0x551f9d['model'];if(!_0x38d47c[_0x4daf('0x2c')][_0x4daf('0x32')](_0x4daf('0x33'))){_0x33b2d1[_0x4daf('0x1b')]=qs['limit'](_0x38d47c[_0x4daf('0x2c')][_0x4daf('0x1b')]);_0x33b2d1[_0x4daf('0x19')]=qs[_0x4daf('0x19')](_0x38d47c['query'][_0x4daf('0x19')]);}_0x33b2d1[_0x4daf('0x34')]=qs[_0x4daf('0x35')](_0x38d47c[_0x4daf('0x2c')][_0x4daf('0x35')]);_0x33b2d1[_0x4daf('0x36')]=qs[_0x4daf('0x37')](_[_0x4daf('0x38')](_0x38d47c[_0x4daf('0x2c')],_0x551f9d[_0x4daf('0x37')]),_0x1a2a6f);if(_0x38d47c['query'][_0x4daf('0x39')]){_0x33b2d1[_0x4daf('0x36')]=_[_0x4daf('0x3a')](_0x33b2d1['where'],{'$or':_[_0x4daf('0x29')](_0x1a2a6f,function(_0x412098){if(_0x412098['type']!==_0x4daf('0x3b')){var _0x339f14={};_0x339f14[_0x412098[_0x4daf('0x27')]]={'$like':'%'+_0x38d47c[_0x4daf('0x2c')]['filter']+'%'};return _0x339f14;}})});}_0x33b2d1=_['merge']({},_0x33b2d1,_0x38d47c[_0x4daf('0x3c')]);var _0x823941={'where':_0x33b2d1[_0x4daf('0x36')]};return db['Pause'][_0x4daf('0x1c')](_0x823941)[_0x4daf('0x22')](function(_0x16cc9b){_0x10c69b[_0x4daf('0x1c')]=_0x16cc9b;if(_0x38d47c['query']['includeAll']){_0x33b2d1[_0x4daf('0x3d')]=[{'all':!![]}];}return db[_0x4daf('0x2a')][_0x4daf('0x3e')](_0x33b2d1);})[_0x4daf('0x22')](function(_0x5bc498){_0x10c69b[_0x4daf('0x3f')]=_0x5bc498;return _0x10c69b;})[_0x4daf('0x22')](respondWithFilteredResult(_0x46dc78,_0x33b2d1))[_0x4daf('0x40')](handleError(_0x46dc78,null));};exports[_0x4daf('0x41')]=function(_0x183d75,_0x5de5ce){var _0x24f57c={'raw':!![],'where':{'id':_0x183d75['params']['id']}},_0xb7496a={};_0xb7496a['model']=_[_0x4daf('0x2d')](db['Pause'][_0x4daf('0x42')]);_0xb7496a[_0x4daf('0x2c')]=_[_0x4daf('0x2d')](_0x183d75[_0x4daf('0x2c')]);_0xb7496a['filters']=_[_0x4daf('0x2e')](_0xb7496a[_0x4daf('0x2b')],_0xb7496a[_0x4daf('0x2c')]);_0x24f57c['attributes']=_['intersection'](_0xb7496a[_0x4daf('0x2b')],qs[_0x4daf('0x30')](_0x183d75[_0x4daf('0x2c')][_0x4daf('0x30')]));_0x24f57c[_0x4daf('0x2f')]=_0x24f57c['attributes']['length']?_0x24f57c[_0x4daf('0x2f')]:_0xb7496a[_0x4daf('0x2b')];if(_0x183d75['query'][_0x4daf('0x43')]){_0x24f57c['include']=[{'all':!![]}];}_0x24f57c=_['merge']({},_0x24f57c,_0x183d75[_0x4daf('0x3c')]);return db[_0x4daf('0x2a')]['find'](_0x24f57c)[_0x4daf('0x22')](handleEntityNotFound(_0x5de5ce,null))[_0x4daf('0x22')](respondWithResult(_0x5de5ce,null))[_0x4daf('0x40')](handleError(_0x5de5ce,null));};exports[_0x4daf('0x44')]=function(_0x179170,_0x43e147){return db[_0x4daf('0x2a')][_0x4daf('0x44')](_0x179170[_0x4daf('0x45')],{})[_0x4daf('0x22')](function(_0x4e9761){var _0xbad255=_0x179170[_0x4daf('0x46')][_0x4daf('0x47')]({'plain':!![]});if(!_0xbad255)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xbad255[_0x4daf('0x48')]===_0x4daf('0x46')){var _0x59368c=_0x4e9761[_0x4daf('0x47')]({'plain':!![]});var _0x34398b=_0x4daf('0x23');return db[_0x4daf('0x49')][_0x4daf('0x4a')]({'where':{'name':_0x34398b,'userProfileId':_0xbad255['userProfileId']},'raw':!![]})['then'](function(_0x3bb74a){if(_0x3bb74a&&_0x3bb74a['autoAssociation']===0x0){return db[_0x4daf('0x24')]['create']({'name':_0x59368c['name'],'resourceId':_0x59368c['id'],'type':_0x3bb74a['name'],'sectionId':_0x3bb74a['id']},{})[_0x4daf('0x22')](function(){return _0x4e9761;});}else{return _0x4e9761;}})[_0x4daf('0x40')](function(_0xbf4967){logger['error'](_0x4daf('0x4b'),_0xbf4967);throw _0xbf4967;});}return _0x4e9761;})['then'](respondWithResult(_0x43e147,0xc9))[_0x4daf('0x40')](handleError(_0x43e147,null));};exports[_0x4daf('0x21')]=function(_0x155eeb,_0x30102b){if(_0x155eeb[_0x4daf('0x45')]['id']){delete _0x155eeb[_0x4daf('0x45')]['id'];}return db[_0x4daf('0x2a')][_0x4daf('0x4a')]({'where':{'id':_0x155eeb[_0x4daf('0x4c')]['id']}})['then'](handleEntityNotFound(_0x30102b,null))[_0x4daf('0x22')](saveUpdates(_0x155eeb[_0x4daf('0x45')],null))[_0x4daf('0x22')](respondWithResult(_0x30102b,null))['catch'](handleError(_0x30102b,null));};exports[_0x4daf('0x4d')]=function(_0x2d1267,_0x5628d7){return db[_0x4daf('0x2a')][_0x4daf('0x4a')]({'where':{'id':_0x2d1267[_0x4daf('0x4c')]['id']}})[_0x4daf('0x22')](handleEntityNotFound(_0x5628d7,null))[_0x4daf('0x22')](removeEntity(_0x5628d7,null))[_0x4daf('0x40')](handleError(_0x5628d7,null));};
\ No newline at end of file
+var _0xf40d=['count','set','Content-Range','apply','update','then','get','Pauses','end','stack','name','send','Pause','fieldName','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','map','VIRTUAL','options','include','findAll','catch','show','params','keys','rawAttributes','includeAll','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','limit','undefined'];(function(_0x413f65,_0x5e9011){var _0x22ebaf=function(_0x134ca5){while(--_0x134ca5){_0x413f65['push'](_0x413f65['shift']());}};_0x22ebaf(++_0x5e9011);}(_0xf40d,0xd7));var _0xdf40=function(_0x373507,_0x113fb9){_0x373507=_0x373507-0x0;var _0x30b9e8=_0xf40d[_0x373507];return _0x30b9e8;};'use strict';var emlformat=require(_0xdf40('0x0'));var rimraf=require(_0xdf40('0x1'));var zipdir=require(_0xdf40('0x2'));var jsonpatch=require(_0xdf40('0x3'));var rp=require(_0xdf40('0x4'));var moment=require('moment');var BPromise=require(_0xdf40('0x5'));var Mustache=require(_0xdf40('0x6'));var util=require(_0xdf40('0x7'));var path=require(_0xdf40('0x8'));var sox=require(_0xdf40('0x9'));var csv=require(_0xdf40('0xa'));var ejs=require(_0xdf40('0xb'));var fs=require('fs');var fs_extra=require(_0xdf40('0xc'));var _=require(_0xdf40('0xd'));var squel=require(_0xdf40('0xe'));var crypto=require(_0xdf40('0xf'));var jsforce=require('jsforce');var deskjs=require(_0xdf40('0x10'));var toCsv=require(_0xdf40('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xdf40('0x11'));var authService=require(_0xdf40('0x12'));var qs=require(_0xdf40('0x13'));var as=require(_0xdf40('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdf40('0x15'))(_0xdf40('0x16'));var utils=require('../../config/utils');var config=require(_0xdf40('0x17'));var licenseUtil=require(_0xdf40('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xa7d885,_0x25cf77){_0x25cf77=_0x25cf77||0xcc;return function(_0x19441e){if(_0x19441e){return _0xa7d885[_0xdf40('0x19')](_0x25cf77);}return _0xa7d885[_0xdf40('0x1a')](_0x25cf77)['end']();};}function respondWithResult(_0x25d868,_0x197727){_0x197727=_0x197727||0xc8;return function(_0xe81214){if(_0xe81214){return _0x25d868[_0xdf40('0x1a')](_0x197727)[_0xdf40('0x1b')](_0xe81214);}};}function respondWithFilteredResult(_0x15db27,_0x4261d8){return function(_0x1e8676){if(_0x1e8676){var _0x5e210c=typeof _0x4261d8[_0xdf40('0x1c')]==='undefined'&&typeof _0x4261d8[_0xdf40('0x1d')]===_0xdf40('0x1e');var _0x7a33eb=_0x1e8676[_0xdf40('0x1f')];var _0xfd9c07=_0x5e210c?0x0:_0x4261d8['offset'];var _0x59e418=_0x5e210c?_0x1e8676[_0xdf40('0x1f')]:_0x4261d8[_0xdf40('0x1c')]+_0x4261d8['limit'];var _0x35e1ed;if(_0x59e418>=_0x7a33eb){_0x59e418=_0x7a33eb;_0x35e1ed=0xc8;}else{_0x35e1ed=0xce;}_0x15db27[_0xdf40('0x1a')](_0x35e1ed);return _0x15db27[_0xdf40('0x20')](_0xdf40('0x21'),_0xfd9c07+'-'+_0x59e418+'/'+_0x7a33eb)[_0xdf40('0x1b')](_0x1e8676);}return null;};}function patchUpdates(_0x449cf8){return function(_0x3750a5){try{jsonpatch[_0xdf40('0x22')](_0x3750a5,_0x449cf8,!![]);}catch(_0x285d56){return BPromise['reject'](_0x285d56);}return _0x3750a5['save']();};}function saveUpdates(_0x5b42eb,_0x9e4ad7){return function(_0x411d38){if(_0x411d38){return _0x411d38[_0xdf40('0x23')](_0x5b42eb)[_0xdf40('0x24')](function(_0x5326aa){return _0x5326aa;});}return null;};}function removeEntity(_0x223b8e,_0x3cfd2d){return function(_0x1e0528){if(_0x1e0528){return _0x1e0528['destroy']()[_0xdf40('0x24')](function(){var _0x156f29=_0x1e0528[_0xdf40('0x25')]({'plain':!![]});var _0x5e1ad5=_0xdf40('0x26');return db['UserProfileResource']['destroy']({'where':{'type':_0x5e1ad5,'resourceId':_0x156f29['id']}})[_0xdf40('0x24')](function(){return _0x1e0528;});})[_0xdf40('0x24')](function(){_0x223b8e[_0xdf40('0x1a')](0xcc)[_0xdf40('0x27')]();});}};}function handleEntityNotFound(_0x32e836,_0x7480d7){return function(_0x3e18f8){if(!_0x3e18f8){_0x32e836['sendStatus'](0x194);}return _0x3e18f8;};}function handleError(_0xe61d04,_0x2d3c26){_0x2d3c26=_0x2d3c26||0x1f4;return function(_0x288987){logger['error'](_0x288987[_0xdf40('0x28')]);if(_0x288987['name']){delete _0x288987[_0xdf40('0x29')];}_0xe61d04[_0xdf40('0x1a')](_0x2d3c26)[_0xdf40('0x2a')](_0x288987);};}exports['index']=function(_0x34984,_0x1e0de2){var _0x25a159={},_0x288b43={},_0x331470={'count':0x0,'rows':[]};var _0x2c801a=_['map'](db[_0xdf40('0x2b')]['rawAttributes'],function(_0x2efcea){return{'name':_0x2efcea[_0xdf40('0x2c')],'type':_0x2efcea['type'][_0xdf40('0x2d')]};});_0x288b43[_0xdf40('0x2e')]=_['map'](_0x2c801a,_0xdf40('0x29'));_0x288b43[_0xdf40('0x2f')]=_['keys'](_0x34984['query']);_0x288b43[_0xdf40('0x30')]=_[_0xdf40('0x31')](_0x288b43[_0xdf40('0x2e')],_0x288b43[_0xdf40('0x2f')]);_0x25a159['attributes']=_[_0xdf40('0x31')](_0x288b43[_0xdf40('0x2e')],qs[_0xdf40('0x32')](_0x34984[_0xdf40('0x2f')][_0xdf40('0x32')]));_0x25a159['attributes']=_0x25a159[_0xdf40('0x33')]['length']?_0x25a159[_0xdf40('0x33')]:_0x288b43[_0xdf40('0x2e')];if(!_0x34984[_0xdf40('0x2f')][_0xdf40('0x34')]('nolimit')){_0x25a159['limit']=qs[_0xdf40('0x1d')](_0x34984['query'][_0xdf40('0x1d')]);_0x25a159[_0xdf40('0x1c')]=qs['offset'](_0x34984['query'][_0xdf40('0x1c')]);}_0x25a159[_0xdf40('0x35')]=qs[_0xdf40('0x36')](_0x34984[_0xdf40('0x2f')][_0xdf40('0x36')]);_0x25a159[_0xdf40('0x37')]=qs[_0xdf40('0x30')](_[_0xdf40('0x38')](_0x34984[_0xdf40('0x2f')],_0x288b43[_0xdf40('0x30')]),_0x2c801a);if(_0x34984['query'][_0xdf40('0x39')]){_0x25a159[_0xdf40('0x37')]=_[_0xdf40('0x3a')](_0x25a159[_0xdf40('0x37')],{'$or':_[_0xdf40('0x3b')](_0x2c801a,function(_0x4d57d2){if(_0x4d57d2['type']!==_0xdf40('0x3c')){var _0x2e4422={};_0x2e4422[_0x4d57d2[_0xdf40('0x29')]]={'$like':'%'+_0x34984['query'][_0xdf40('0x39')]+'%'};return _0x2e4422;}})});}_0x25a159=_[_0xdf40('0x3a')]({},_0x25a159,_0x34984[_0xdf40('0x3d')]);var _0xff0cab={'where':_0x25a159[_0xdf40('0x37')]};return db[_0xdf40('0x2b')]['count'](_0xff0cab)[_0xdf40('0x24')](function(_0x2038c8){_0x331470['count']=_0x2038c8;if(_0x34984[_0xdf40('0x2f')]['includeAll']){_0x25a159[_0xdf40('0x3e')]=[{'all':!![]}];}return db[_0xdf40('0x2b')][_0xdf40('0x3f')](_0x25a159);})['then'](function(_0x5a7455){_0x331470['rows']=_0x5a7455;return _0x331470;})[_0xdf40('0x24')](respondWithFilteredResult(_0x1e0de2,_0x25a159))[_0xdf40('0x40')](handleError(_0x1e0de2,null));};exports[_0xdf40('0x41')]=function(_0x4f9b9a,_0x44d4da){var _0x23dc3e={'raw':!![],'where':{'id':_0x4f9b9a[_0xdf40('0x42')]['id']}},_0xbde90f={};_0xbde90f[_0xdf40('0x2e')]=_[_0xdf40('0x43')](db[_0xdf40('0x2b')][_0xdf40('0x44')]);_0xbde90f['query']=_[_0xdf40('0x43')](_0x4f9b9a['query']);_0xbde90f['filters']=_[_0xdf40('0x31')](_0xbde90f[_0xdf40('0x2e')],_0xbde90f[_0xdf40('0x2f')]);_0x23dc3e[_0xdf40('0x33')]=_[_0xdf40('0x31')](_0xbde90f[_0xdf40('0x2e')],qs[_0xdf40('0x32')](_0x4f9b9a[_0xdf40('0x2f')][_0xdf40('0x32')]));_0x23dc3e[_0xdf40('0x33')]=_0x23dc3e[_0xdf40('0x33')]['length']?_0x23dc3e[_0xdf40('0x33')]:_0xbde90f[_0xdf40('0x2e')];if(_0x4f9b9a[_0xdf40('0x2f')][_0xdf40('0x45')]){_0x23dc3e[_0xdf40('0x3e')]=[{'all':!![]}];}_0x23dc3e=_['merge']({},_0x23dc3e,_0x4f9b9a[_0xdf40('0x3d')]);return db['Pause'][_0xdf40('0x46')](_0x23dc3e)[_0xdf40('0x24')](handleEntityNotFound(_0x44d4da,null))['then'](respondWithResult(_0x44d4da,null))[_0xdf40('0x40')](handleError(_0x44d4da,null));};exports['create']=function(_0x105ef4,_0x533203){return db[_0xdf40('0x2b')]['create'](_0x105ef4[_0xdf40('0x47')],{})[_0xdf40('0x24')](function(_0x2cd5ae){var _0x445490=_0x105ef4[_0xdf40('0x48')][_0xdf40('0x25')]({'plain':!![]});if(!_0x445490)throw new Error(_0xdf40('0x49'));if(_0x445490[_0xdf40('0x4a')]===_0xdf40('0x48')){var _0x3f0e15=_0x2cd5ae['get']({'plain':!![]});var _0x3e96ba=_0xdf40('0x26');return db[_0xdf40('0x4b')][_0xdf40('0x46')]({'where':{'name':_0x3e96ba,'userProfileId':_0x445490[_0xdf40('0x4c')]},'raw':!![]})[_0xdf40('0x24')](function(_0x5926b1){if(_0x5926b1&&_0x5926b1[_0xdf40('0x4d')]===0x0){return db[_0xdf40('0x4e')][_0xdf40('0x4f')]({'name':_0x3f0e15[_0xdf40('0x29')],'resourceId':_0x3f0e15['id'],'type':_0x5926b1[_0xdf40('0x29')],'sectionId':_0x5926b1['id']},{})[_0xdf40('0x24')](function(){return _0x2cd5ae;});}else{return _0x2cd5ae;}})[_0xdf40('0x40')](function(_0x1621d2){logger['error'](_0xdf40('0x50'),_0x1621d2);throw _0x1621d2;});}return _0x2cd5ae;})['then'](respondWithResult(_0x533203,0xc9))[_0xdf40('0x40')](handleError(_0x533203,null));};exports[_0xdf40('0x23')]=function(_0x2b527c,_0x327434){if(_0x2b527c[_0xdf40('0x47')]['id']){delete _0x2b527c[_0xdf40('0x47')]['id'];}return db[_0xdf40('0x2b')][_0xdf40('0x46')]({'where':{'id':_0x2b527c[_0xdf40('0x42')]['id']}})[_0xdf40('0x24')](handleEntityNotFound(_0x327434,null))[_0xdf40('0x24')](saveUpdates(_0x2b527c[_0xdf40('0x47')],null))[_0xdf40('0x24')](respondWithResult(_0x327434,null))[_0xdf40('0x40')](handleError(_0x327434,null));};exports[_0xdf40('0x51')]=function(_0x295834,_0x28c1db){return db['Pause']['find']({'where':{'id':_0x295834[_0xdf40('0x42')]['id']}})[_0xdf40('0x24')](handleEntityNotFound(_0x28c1db,null))['then'](removeEntity(_0x28c1db,null))[_0xdf40('0x40')](handleError(_0x28c1db,null));};
\ No newline at end of file
index 8ed50a3..d3da552 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Pause','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./pause.attributes'];(function(_0x36ed48,_0x1ee0d4){var _0x51c63a=function(_0x2d0a40){while(--_0x2d0a40){_0x36ed48['push'](_0x36ed48['shift']());}};_0x51c63a(++_0x1ee0d4);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x55ca=['./pause.attributes','exports','define','tools_pauses','lodash','util','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x30cd7e,_0x4db10a){var _0x462a02=function(_0x157d81){while(--_0x157d81){_0x30cd7e['push'](_0x30cd7e['shift']());}};_0x462a02(++_0x4db10a);}(_0x55ca,0x126));var _0xa55c=function(_0x155bbf,_0x1bca34){_0x155bbf=_0x155bbf-0x0;var _0x1cb0ac=_0x55ca[_0x155bbf];return _0x1cb0ac;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xa55c('0x2'));var rp=require(_0xa55c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var attributes=require(_0xa55c('0x6'));module[_0xa55c('0x7')]=function(_0x3c97c8,_0x279caa){return _0x3c97c8[_0xa55c('0x8')]('Pause',attributes,{'tableName':_0xa55c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 85f024b..0804f2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x539359,_0x27a927){var _0x260da4=function(_0x416cfd){while(--_0x416cfd){_0x539359['push'](_0x539359['shift']());}};_0x260da4(++_0x27a927);}(_0x7a54,0x106));var _0x47a5=function(_0x2752a3,_0x4470b9){_0x2752a3=_0x2752a3-0x0;var _0x313d78=_0x7a54[_0x2752a3];return _0x313d78;};'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
+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(_0x182dd5,_0x40ef5e){var _0x2c3b56=function(_0x49b999){while(--_0x49b999){_0x182dd5['push'](_0x182dd5['shift']());}};_0x2c3b56(++_0x40ef5e);}(_0x7a54,0x106));var _0x47a5=function(_0x222c82,_0x14979d){_0x222c82=_0x222c82-0x0;var _0xdc3e28=_0x7a54[_0x222c82];return _0xdc3e28;};'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 20e2a0f..5610315 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x425d=['isAuthenticated','index','/webhook','/:id','show','/:id/download','download','diskStorage','join','root','server/files/plugins','originalname','format','%s-%s%s','basename','extname','now','single','file','upload','post','webhookPost','put','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./plugin.controller','get'];(function(_0x180bce,_0x46dd34){var _0x326314=function(_0x2e26ed){while(--_0x2e26ed){_0x180bce['push'](_0x180bce['shift']());}};_0x326314(++_0x46dd34);}(_0x425d,0x1e0));var _0xd425=function(_0x2dd62d,_0x128ccd){_0x2dd62d=_0x2dd62d-0x0;var _0x18e1a5=_0x425d[_0x2dd62d];return _0x18e1a5;};'use strict';var multer=require(_0xd425('0x0'));var util=require('util');var path=require(_0xd425('0x1'));var timeout=require(_0xd425('0x2'));var express=require(_0xd425('0x3'));var router=express[_0xd425('0x4')]();var fs_extra=require(_0xd425('0x5'));var auth=require(_0xd425('0x6'));var interaction=require(_0xd425('0x7'));var config=require('../../config/environment');var controller=require(_0xd425('0x8'));router[_0xd425('0x9')]('/',auth[_0xd425('0xa')](),controller[_0xd425('0xb')]);router[_0xd425('0x9')](_0xd425('0xc'),controller['webhookGet']);router[_0xd425('0x9')](_0xd425('0xd'),auth[_0xd425('0xa')](),controller[_0xd425('0xe')]);router[_0xd425('0x9')](_0xd425('0xf'),auth[_0xd425('0xa')](),controller[_0xd425('0x10')]);var upload=multer({'storage':multer[_0xd425('0x11')]({'destination':function(_0x35a7f4,_0x3d2bcf,_0x10d463){_0x10d463(null,path[_0xd425('0x12')](config[_0xd425('0x13')],_0xd425('0x14')));},'filename':function(_0x2385a5,_0x9bb611,_0x3cacf7){_0x9bb611[_0xd425('0x15')]=_0x9bb611[_0xd425('0x15')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x3cacf7(null,util[_0xd425('0x16')](_0xd425('0x17'),path[_0xd425('0x18')](_0x9bb611['originalname'],path[_0xd425('0x19')](_0x9bb611[_0xd425('0x15')])),Date[_0xd425('0x1a')](),path[_0xd425('0x19')](_0x9bb611[_0xd425('0x15')])));}})});router['post']('/',upload[_0xd425('0x1b')](_0xd425('0x1c')),controller[_0xd425('0x1d')]);router[_0xd425('0x1e')]('/webhook',controller[_0xd425('0x1f')]);router[_0xd425('0x20')](_0xd425('0xd'),auth[_0xd425('0xa')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xd425('0x21')]);module[_0xd425('0x22')]=router;
\ No newline at end of file
+var _0xaba6=['get','webhookGet','isAuthenticated','show','/:id/download','download','diskStorage','root','server/files/plugins','originalname','format','%s-%s%s','basename','extname','now','post','single','file','upload','/webhook','put','/:id','delete','multer','util','fs-extra','../../components/auth/service','../../config/environment','./plugin.controller'];(function(_0x35e003,_0x21f047){var _0x2d7382=function(_0x47790d){while(--_0x47790d){_0x35e003['push'](_0x35e003['shift']());}};_0x2d7382(++_0x21f047);}(_0xaba6,0xe2));var _0x6aba=function(_0x1c9b8e,_0x444821){_0x1c9b8e=_0x1c9b8e-0x0;var _0x35a635=_0xaba6[_0x1c9b8e];return _0x35a635;};'use strict';var multer=require(_0x6aba('0x0'));var util=require(_0x6aba('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x6aba('0x2'));var auth=require(_0x6aba('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x6aba('0x4'));var controller=require(_0x6aba('0x5'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x6aba('0x6')]('/webhook',controller[_0x6aba('0x7')]);router[_0x6aba('0x6')]('/:id',auth[_0x6aba('0x8')](),controller[_0x6aba('0x9')]);router['get'](_0x6aba('0xa'),auth[_0x6aba('0x8')](),controller[_0x6aba('0xb')]);var upload=multer({'storage':multer[_0x6aba('0xc')]({'destination':function(_0xdbc119,_0x4089c6,_0x181426){_0x181426(null,path['join'](config[_0x6aba('0xd')],_0x6aba('0xe')));},'filename':function(_0x43867b,_0x254007,_0x53e604){_0x254007[_0x6aba('0xf')]=_0x254007[_0x6aba('0xf')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x53e604(null,util[_0x6aba('0x10')](_0x6aba('0x11'),path[_0x6aba('0x12')](_0x254007['originalname'],path[_0x6aba('0x13')](_0x254007[_0x6aba('0xf')])),Date[_0x6aba('0x14')](),path['extname'](_0x254007[_0x6aba('0xf')])));}})});router[_0x6aba('0x15')]('/',upload[_0x6aba('0x16')](_0x6aba('0x17')),controller[_0x6aba('0x18')]);router[_0x6aba('0x15')](_0x6aba('0x19'),controller['webhookPost']);router[_0x6aba('0x1a')](_0x6aba('0x1b'),auth[_0x6aba('0x8')](),controller['update']);router[_0x6aba('0x1c')]('/:id',auth['isAuthenticated'](),controller[_0x6aba('0x1c')]);module['exports']=router;
\ No newline at end of file
index edaed23..cc30d80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd8d=['BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always','sequelize','exports','ENUM','script','TEXT','STRING','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'];(function(_0x585d09,_0x1274bc){var _0x7d9a14=function(_0x343d4e){while(--_0x343d4e){_0x585d09['push'](_0x585d09['shift']());}};_0x7d9a14(++_0x1274bc);}(_0xcd8d,0x1a9));var _0xdcd8=function(_0x52085a,_0x3717ca){_0x52085a=_0x52085a-0x0;var _0x5afc1a=_0xcd8d[_0x52085a];return _0x5afc1a;};'use strict';var Sequelize=require(_0xdcd8('0x0'));module[_0xdcd8('0x1')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xdcd8('0x2')]('html',_0xdcd8('0x3'))},'description':{'type':Sequelize[_0xdcd8('0x4')]},'version':{'type':Sequelize[_0xdcd8('0x4')]},'path':{'type':Sequelize[_0xdcd8('0x5')],'comment':_0xdcd8('0x6')},'active':{'type':Sequelize[_0xdcd8('0x7')],'defaultValue':0x0,'comment':_0xdcd8('0x8')},'sidebar':{'type':Sequelize[_0xdcd8('0x2')](_0xdcd8('0x9'),_0xdcd8('0xa'),_0xdcd8('0xb'),'never'),'defaultValue':_0xdcd8('0xb'),'comment':'Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'},'icon':{'type':Sequelize[_0xdcd8('0x5')]},'adminUrl':{'type':Sequelize[_0xdcd8('0x5')]},'agentUrl':{'type':Sequelize[_0xdcd8('0x5')]},'scriptName':{'type':Sequelize[_0xdcd8('0x5')]},'scriptPath':{'type':Sequelize[_0xdcd8('0x5')]}};
\ No newline at end of file
+var _0xd4e8=['ENUM','script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','never','always','sequelize','exports','STRING'];(function(_0x8d2259,_0x2a05a8){var _0x4b3aae=function(_0x749dba){while(--_0x749dba){_0x8d2259['push'](_0x8d2259['shift']());}};_0x4b3aae(++_0x2a05a8);}(_0xd4e8,0xe7));var _0x8d4e=function(_0x426dd2,_0x4b0012){_0x426dd2=_0x426dd2-0x0;var _0x4bc76c=_0xd4e8[_0x426dd2];return _0x4bc76c;};'use strict';var Sequelize=require(_0x8d4e('0x0'));module[_0x8d4e('0x1')]={'name':{'type':Sequelize[_0x8d4e('0x2')]},'type':{'type':Sequelize[_0x8d4e('0x3')]('html',_0x8d4e('0x4'))},'description':{'type':Sequelize[_0x8d4e('0x5')]},'version':{'type':Sequelize[_0x8d4e('0x5')]},'path':{'type':Sequelize[_0x8d4e('0x2')],'comment':_0x8d4e('0x6')},'active':{'type':Sequelize[_0x8d4e('0x7')],'defaultValue':0x0,'comment':_0x8d4e('0x8')},'sidebar':{'type':Sequelize['ENUM'](_0x8d4e('0x9'),_0x8d4e('0xa'),'always',_0x8d4e('0xb')),'defaultValue':_0x8d4e('0xc'),'comment':'Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.'},'icon':{'type':Sequelize[_0x8d4e('0x2')]},'adminUrl':{'type':Sequelize[_0x8d4e('0x2')]},'agentUrl':{'type':Sequelize['STRING']},'scriptName':{'type':Sequelize['STRING']},'scriptPath':{'type':Sequelize[_0x8d4e('0x2')]}};
\ No newline at end of file
index fcf4227..8178f07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13f2=['../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./plugin.socket','sendStatus','status','offset','undefined','count','limit','set','apply','reject','save','update','then','get','Plugins','UserProfileResource','destroy','error','stack','name','index','map','rawAttributes','fieldName','type','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','params','Plugin','find','download','path','join','root','server/files/plugins','%s.zip','basename','warning','code','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','glob','**/*','dirname','attachments/**/*','finalize','close','existsSync','Plugin\x20not\x20found','format','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','file','filename','extname','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','readdirSync','some','Plugin\x20manifest\x20missing','readFileSync','Invalid\x20manifest:\x20type\x20missing','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','views','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','scriptName','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','version','html','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','scriptPath','body','role','user','UserProfileSection','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','send','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','\x27PATH\x27\x20parameter\x20not\x20specified','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','port','http://localhost:','json','encoding','method','%s%s','headers','content-length','content-type','statusCode','resolve','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','extract-zip','rimraf','archiver','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils'];(function(_0x79ebc5,_0x2df5d1){var _0x3813b6=function(_0x4e2769){while(--_0x4e2769){_0x79ebc5['push'](_0x79ebc5['shift']());}};_0x3813b6(++_0x2df5d1);}(_0x13f2,0x90));var _0x213f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x13f2[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x213f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x213f('0x1'));var jsonpatch=require(_0x213f('0x2'));var rp=require(_0x213f('0x3'));var moment=require(_0x213f('0x4'));var BPromise=require(_0x213f('0x5'));var Mustache=require(_0x213f('0x6'));var util=require(_0x213f('0x7'));var path=require('path');var sox=require(_0x213f('0x8'));var csv=require(_0x213f('0x9'));var ejs=require(_0x213f('0xa'));var fs=require('fs');var fs_extra=require(_0x213f('0xb'));var _=require(_0x213f('0xc'));var squel=require(_0x213f('0xd'));var crypto=require(_0x213f('0xe'));var jsforce=require(_0x213f('0xf'));var deskjs=require(_0x213f('0x10'));var toCsv=require('to-csv');var querystring=require(_0x213f('0x11'));var Papa=require(_0x213f('0x12'));var extract=require(_0x213f('0x13'));var rimraf=require(_0x213f('0x14'));var archiver=require(_0x213f('0x15'));var Redis=require('ioredis');var authService=require(_0x213f('0x16'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x213f('0x17'));var logger=require(_0x213f('0x18'))(_0x213f('0x19'));var utils=require(_0x213f('0x1a'));var config=require(_0x213f('0x1b'));var licenseUtil=require(_0x213f('0x1c'));var db=require(_0x213f('0x1d'))['db'];config[_0x213f('0x1e')]=_['defaults'](config['redis'],{'host':_0x213f('0x1f'),'port':0x18eb});var socket=require(_0x213f('0x20'))(new Redis(config[_0x213f('0x1e')]));require(_0x213f('0x21'))['register'](socket);function respondWithStatusCode(_0xdad3de,_0x13c54f){_0x13c54f=_0x13c54f||0xcc;return function(_0x44eea2){if(_0x44eea2){return _0xdad3de[_0x213f('0x22')](_0x13c54f);}return _0xdad3de['status'](_0x13c54f)['end']();};}function respondWithResult(_0x54d664,_0x181320){_0x181320=_0x181320||0xc8;return function(_0x4767b0){if(_0x4767b0){return _0x54d664[_0x213f('0x23')](_0x181320)['json'](_0x4767b0);}};}function respondWithFilteredResult(_0x4c56c0,_0x3a2a27){return function(_0x584574){if(_0x584574){var _0x556d9f=typeof _0x3a2a27[_0x213f('0x24')]===_0x213f('0x25')&&typeof _0x3a2a27['limit']===_0x213f('0x25');var _0x50547d=_0x584574[_0x213f('0x26')];var _0x58021d=_0x556d9f?0x0:_0x3a2a27[_0x213f('0x24')];var _0x3fcf6d=_0x556d9f?_0x584574[_0x213f('0x26')]:_0x3a2a27[_0x213f('0x24')]+_0x3a2a27[_0x213f('0x27')];var _0x416b4b;if(_0x3fcf6d>=_0x50547d){_0x3fcf6d=_0x50547d;_0x416b4b=0xc8;}else{_0x416b4b=0xce;}_0x4c56c0[_0x213f('0x23')](_0x416b4b);return _0x4c56c0[_0x213f('0x28')]('Content-Range',_0x58021d+'-'+_0x3fcf6d+'/'+_0x50547d)['json'](_0x584574);}return null;};}function patchUpdates(_0x1ec3fd){return function(_0x39fd07){try{jsonpatch[_0x213f('0x29')](_0x39fd07,_0x1ec3fd,!![]);}catch(_0x22c79f){return BPromise[_0x213f('0x2a')](_0x22c79f);}return _0x39fd07[_0x213f('0x2b')]();};}function saveUpdates(_0x4204cc,_0x51b795){return function(_0x2cb0c2){if(_0x2cb0c2){return _0x2cb0c2[_0x213f('0x2c')](_0x4204cc)[_0x213f('0x2d')](function(_0x7d7325){return _0x7d7325;});}return null;};}function removeEntity(_0x33ae69,_0x389da2){return function(_0xf14104){if(_0xf14104){return _0xf14104['destroy']()[_0x213f('0x2d')](function(){var _0x28f1f8=_0xf14104[_0x213f('0x2e')]({'plain':!![]});var _0x190731=_0x213f('0x2f');return db[_0x213f('0x30')][_0x213f('0x31')]({'where':{'type':_0x190731,'resourceId':_0x28f1f8['id']}})[_0x213f('0x2d')](function(){return _0xf14104;});})['then'](function(){_0x33ae69[_0x213f('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5dbbf5,_0x55c1f5){return function(_0x203896){if(!_0x203896){_0x5dbbf5['sendStatus'](0x194);}return _0x203896;};}function handleError(_0x341cb3,_0x38fafd){_0x38fafd=_0x38fafd||0x1f4;return function(_0x16d36a){logger[_0x213f('0x32')](_0x16d36a[_0x213f('0x33')]);if(_0x16d36a[_0x213f('0x34')]){delete _0x16d36a[_0x213f('0x34')];}_0x341cb3[_0x213f('0x23')](_0x38fafd)['send'](_0x16d36a);};}exports[_0x213f('0x35')]=function(_0x311b4d,_0x383554){var _0x1808b7={},_0x181f9a={},_0x43a823={'count':0x0,'rows':[]};var _0xe18f6f=_[_0x213f('0x36')](db['Plugin'][_0x213f('0x37')],function(_0x3cd86e){return{'name':_0x3cd86e[_0x213f('0x38')],'type':_0x3cd86e[_0x213f('0x39')]['key']};});_0x181f9a[_0x213f('0x3a')]=_['map'](_0xe18f6f,_0x213f('0x34'));_0x181f9a['query']=_[_0x213f('0x3b')](_0x311b4d['query']);_0x181f9a[_0x213f('0x3c')]=_[_0x213f('0x3d')](_0x181f9a[_0x213f('0x3a')],_0x181f9a[_0x213f('0x3e')]);_0x1808b7[_0x213f('0x3f')]=_['intersection'](_0x181f9a[_0x213f('0x3a')],qs[_0x213f('0x40')](_0x311b4d[_0x213f('0x3e')][_0x213f('0x40')]));_0x1808b7[_0x213f('0x3f')]=_0x1808b7[_0x213f('0x3f')][_0x213f('0x41')]?_0x1808b7[_0x213f('0x3f')]:_0x181f9a[_0x213f('0x3a')];if(!_0x311b4d[_0x213f('0x3e')][_0x213f('0x42')]('nolimit')){_0x1808b7['limit']=qs[_0x213f('0x27')](_0x311b4d[_0x213f('0x3e')]['limit']);_0x1808b7[_0x213f('0x24')]=qs[_0x213f('0x24')](_0x311b4d['query'][_0x213f('0x24')]);}_0x1808b7[_0x213f('0x43')]=qs[_0x213f('0x44')](_0x311b4d['query']['sort']);_0x1808b7['where']=qs[_0x213f('0x3c')](_[_0x213f('0x45')](_0x311b4d[_0x213f('0x3e')],_0x181f9a[_0x213f('0x3c')]),_0xe18f6f);if(_0x311b4d[_0x213f('0x3e')][_0x213f('0x46')]){_0x1808b7[_0x213f('0x47')]=_[_0x213f('0x48')](_0x1808b7['where'],{'$or':_['map'](_0xe18f6f,function(_0x598671){if(_0x598671[_0x213f('0x39')]!=='VIRTUAL'){var _0x5a91f6={};_0x5a91f6[_0x598671[_0x213f('0x34')]]={'$like':'%'+_0x311b4d[_0x213f('0x3e')][_0x213f('0x46')]+'%'};return _0x5a91f6;}})});}_0x1808b7=_['merge']({},_0x1808b7,_0x311b4d[_0x213f('0x49')]);var _0x39ff3d={'where':_0x1808b7[_0x213f('0x47')]};return db['Plugin'][_0x213f('0x26')](_0x39ff3d)[_0x213f('0x2d')](function(_0x4372df){_0x43a823[_0x213f('0x26')]=_0x4372df;if(_0x311b4d['query'][_0x213f('0x4a')]){_0x1808b7[_0x213f('0x4b')]=[{'all':!![]}];}return db['Plugin'][_0x213f('0x4c')](_0x1808b7);})['then'](function(_0x3f4976){_0x43a823[_0x213f('0x4d')]=_0x3f4976;return _0x43a823;})[_0x213f('0x2d')](respondWithFilteredResult(_0x383554,_0x1808b7))[_0x213f('0x4e')](handleError(_0x383554,null));};exports['show']=function(_0xf3b3fb,_0x144cb0){var _0x2665b6={'raw':!![],'where':{'id':_0xf3b3fb[_0x213f('0x4f')]['id']}},_0x3f2a7b={};_0x3f2a7b[_0x213f('0x3a')]=_[_0x213f('0x3b')](db[_0x213f('0x50')][_0x213f('0x37')]);_0x3f2a7b['query']=_[_0x213f('0x3b')](_0xf3b3fb[_0x213f('0x3e')]);_0x3f2a7b[_0x213f('0x3c')]=_['intersection'](_0x3f2a7b['model'],_0x3f2a7b[_0x213f('0x3e')]);_0x2665b6[_0x213f('0x3f')]=_[_0x213f('0x3d')](_0x3f2a7b[_0x213f('0x3a')],qs[_0x213f('0x40')](_0xf3b3fb[_0x213f('0x3e')][_0x213f('0x40')]));_0x2665b6[_0x213f('0x3f')]=_0x2665b6['attributes'][_0x213f('0x41')]?_0x2665b6['attributes']:_0x3f2a7b['model'];if(_0xf3b3fb[_0x213f('0x3e')][_0x213f('0x4a')]){_0x2665b6[_0x213f('0x4b')]=[{'all':!![]}];}_0x2665b6=_[_0x213f('0x48')]({},_0x2665b6,_0xf3b3fb[_0x213f('0x49')]);return db[_0x213f('0x50')][_0x213f('0x51')](_0x2665b6)[_0x213f('0x2d')](handleEntityNotFound(_0x144cb0,null))['then'](respondWithResult(_0x144cb0,null))[_0x213f('0x4e')](handleError(_0x144cb0,null));};exports[_0x213f('0x52')]=function(_0xab9ce3,_0x1cba4a,_0x176498){return db[_0x213f('0x50')]['find']({'where':{'id':_0xab9ce3[_0x213f('0x4f')]['id']},'attributes':['name',_0x213f('0x53')],'raw':!![]})[_0x213f('0x2d')](handleEntityNotFound(_0x1cba4a,null))[_0x213f('0x2d')](function(_0x904381){if(_0x904381){var _0x51518f=path[_0x213f('0x54')](config[_0x213f('0x55')],_0x213f('0x56'),util['format'](_0x213f('0x57'),path[_0x213f('0x58')](_0x904381[_0x213f('0x53')])));var _0x4c0b51=fs['createWriteStream'](_0x51518f);var _0x15759f=archiver('zip',{'zlib':{'level':0x9}});_0x15759f['on'](_0x213f('0x59'),function(_0x50981e){if(_0x50981e[_0x213f('0x5a')]===_0x213f('0x5b')){logger['error'](_0x50981e);}else{throw new db[(_0x213f('0x5c'))][(_0x213f('0x5d'))](_0x213f('0x5e'));}});_0x15759f['on'](_0x213f('0x32'),function(_0x3f7a56){throw new db['Sequelize'][(_0x213f('0x5d'))](_0x213f('0x5e'));});_0x15759f[_0x213f('0x5f')](_0x4c0b51);_0x15759f[_0x213f('0x60')](_0x213f('0x61'),{'cwd':path['join'](config[_0x213f('0x55')],_0x213f('0x56'),path[_0x213f('0x62')](_0x904381[_0x213f('0x53')])),'ignore':[path[_0x213f('0x54')](path[_0x213f('0x58')](_0x904381[_0x213f('0x53')]),'node_modules/**/*'),path[_0x213f('0x54')](path['basename'](_0x904381['path']),_0x213f('0x63'))],'nodir':!![]})[_0x213f('0x64')]();_0x4c0b51['on'](_0x213f('0x65'),function(){if(!fs[_0x213f('0x66')](_0x51518f)){throw new db['Sequelize'][(_0x213f('0x5d'))](_0x213f('0x67'));}return _0x1cba4a[_0x213f('0x52')](_0x51518f,util[_0x213f('0x68')](_0x213f('0x57'),path['basename'](_0x904381[_0x213f('0x53')])),function(_0x308bbf){if(_0x308bbf){throw new db['Sequelize'][(_0x213f('0x5d'))](_0x213f('0x69'));}fs[_0x213f('0x6a')](_0x51518f);logger[_0x213f('0x6b')](_0x213f('0x6c'));logger['info'](_0x213f('0x6d'));});});}return null;})[_0x213f('0x4e')](handleError(_0x1cba4a,null));};exports['upload']=function(_0x4036d8,_0x20f090,_0x206400){var _0x35e8f6=path[_0x213f('0x58')](_0x4036d8[_0x213f('0x6e')][_0x213f('0x6f')],path[_0x213f('0x70')](_0x4036d8[_0x213f('0x6e')]['filename']));var _0x8864c2=path['join'](config[_0x213f('0x55')],_0x213f('0x56'),_0x4036d8[_0x213f('0x6e')]['filename']);var _0x291ebc=path[_0x213f('0x54')](config['root'],_0x213f('0x56'),_0x35e8f6);logger[_0x213f('0x6b')](_0x213f('0x71'),_0x8864c2);logger['info'](_0x213f('0x72'),_0x291ebc);try{fs[_0x213f('0x73')](_0x8864c2,parseInt(_0x213f('0x74'),0x8));extract(_0x8864c2,{'dir':_0x291ebc},function(_0xb56bdb){if(_0xb56bdb){logger[_0x213f('0x32')](_0xb56bdb);handleError(_0xb56bdb,!![]);};var _0x374d44=fs['readdirSync'](_0x291ebc);if(_0x374d44['length']>0x1){removeReferences(_0x8864c2,_0x291ebc);logger[_0x213f('0x32')](_0x213f('0x75'));return _0x206400(new Error(_0x213f('0x75')));}var _0x3d3e86=fs[_0x213f('0x76')](path[_0x213f('0x54')](_0x291ebc,_0x374d44[0x0]));if(_0x3d3e86[_0x213f('0x77')]()){removeReferences(_0x8864c2,_0x291ebc);logger[_0x213f('0x32')]('Invalid\x20plugin\x20structure');return _0x206400(new Error(_0x213f('0x75')));}if(_0x3d3e86[_0x213f('0x78')]()){var _0x1d897a=fs[_0x213f('0x79')](path[_0x213f('0x54')](_0x291ebc,_0x374d44[0x0]));if(_0x1d897a[_0x213f('0x41')]===0x0){removeReferences(_0x8864c2,_0x291ebc);logger[_0x213f('0x32')]('Invalid\x20plugin\x20structure');return _0x206400(new Error(_0x213f('0x75')));}var _0x47e823=_0x1d897a[_0x213f('0x7a')](function(_0xfd2039){return _0xfd2039==='manifest.json';});if(!_0x47e823){return _0x206400(new Error(_0x213f('0x7b')));}var _0x2f23d5=fs[_0x213f('0x7c')](path[_0x213f('0x54')](_0x291ebc,_0x374d44[0x0],'manifest.json'));var _0x2a48e0=JSON['parse'](_0x2f23d5);if('undefined'==typeof _0x2a48e0[_0x213f('0x34')]){return _0x206400(new Error('Invalid\x20manifest:\x20name\x20missing'));}if(_0x213f('0x25')==typeof _0x2a48e0[_0x213f('0x39')]){return _0x206400(new Error(_0x213f('0x7d')));}if(_0x213f('0x25')==typeof _0x2a48e0['version']){return _0x206400(new Error(_0x213f('0x7e')));}if(_0x213f('0x25')==typeof _0x2a48e0['parameters']){return _0x206400(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0x2a48e0[_0x213f('0x39')]==='html'){if(_0x213f('0x25')==typeof _0x2a48e0[_0x213f('0x7f')][_0x213f('0x80')]){return _0x206400(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0x213f('0x25')==typeof _0x2a48e0[_0x213f('0x7f')][_0x213f('0x80')][_0x213f('0x81')]&&'undefined'==typeof _0x2a48e0[_0x213f('0x7f')][_0x213f('0x80')][_0x213f('0x82')]){return _0x206400(new Error(_0x213f('0x83')));}}else if(_0x2a48e0[_0x213f('0x39')]==='script'){if('undefined'==typeof _0x2a48e0[_0x213f('0x7f')][_0x213f('0x84')]){return _0x206400(new Error('Invalid\x20manifest:\x20script\x20name\x20missing'));}if(_0x213f('0x25')==typeof _0x2a48e0['parameters']['scriptPath']){return _0x206400(new Error(_0x213f('0x85')));}}else{return _0x206400(new Error(_0x213f('0x86')));}var _0xcd5c36=_0x2a48e0[_0x213f('0x34')];var _0x279796=_0x2a48e0[_0x213f('0x87')];var _0x118004=_0x2a48e0[_0x213f('0x39')];var _0xbf1239=_0x2a48e0[_0x213f('0x88')]?_0x2a48e0['sidebar']:_0x213f('0x89');var _0x3913aa=_0x2a48e0[_0x213f('0x8a')]?_0x2a48e0[_0x213f('0x8a')]:_0x213f('0x8b');var _0x2a31fd='';var _0x525da4='';var _0x5936b='';var _0x34f8dd='';var _0x424ab1=_0x2a48e0[_0x213f('0x8c')];if(_0x118004===_0x213f('0x8d')){if(_0x213f('0x25')!=typeof _0x2a48e0[_0x213f('0x7f')][_0x213f('0x80')][_0x213f('0x81')]){var _0x24ff19=_0x2a48e0[_0x213f('0x7f')]['views'][_0x213f('0x81')];if(!/^(f|ht)tps?:\/\//i[_0x213f('0x8e')](_0x24ff19)){_0x2a31fd=path[_0x213f('0x54')](_0x213f('0x8f'),_0x35e8f6,_0x374d44[0x0],_0x24ff19);}else{_0x2a31fd=_0x24ff19;}}else{logger[_0x213f('0x6b')](_0x213f('0x90'));}if(_0x213f('0x25')!=typeof _0x2a48e0[_0x213f('0x7f')][_0x213f('0x80')]['agent']){var _0x186ec1=_0x2a48e0['parameters']['views']['agent'];if(!/^(f|ht)tps?:\/\//i[_0x213f('0x8e')](_0x186ec1)){_0x525da4=path['join']('plugins',_0x35e8f6,_0x374d44[0x0],_0x186ec1);}else{_0x525da4=_0x186ec1;}}else{logger[_0x213f('0x6b')]('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x118004==='script'){_0x5936b=_0x2a48e0[_0x213f('0x7f')][_0x213f('0x84')];_0x34f8dd=_0x2a48e0[_0x213f('0x7f')][_0x213f('0x91')];if(_0x213f('0x25')!=typeof _0x2a48e0[_0x213f('0x7f')]['views']){if(_0x213f('0x25')!=typeof _0x2a48e0[_0x213f('0x7f')][_0x213f('0x80')][_0x213f('0x81')]){var _0x24ff19=_0x2a48e0['parameters'][_0x213f('0x80')][_0x213f('0x81')];if(!/^(f|ht)tps?:\/\//i[_0x213f('0x8e')](_0x24ff19)){_0x2a31fd=path[_0x213f('0x54')](_0x213f('0x8f'),_0x35e8f6,_0x374d44[0x0],_0x24ff19);}else{_0x2a31fd=_0x24ff19;}}if('undefined'!=typeof _0x2a48e0[_0x213f('0x7f')]['views'][_0x213f('0x82')]){var _0x186ec1=_0x2a48e0[_0x213f('0x7f')][_0x213f('0x80')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0x213f('0x8e')](_0x186ec1)){_0x525da4=path[_0x213f('0x54')](_0x213f('0x8f'),_0x35e8f6,_0x374d44[0x0],_0x186ec1);}else{_0x525da4=_0x186ec1;}}}}var _0x26052b={'name':_0xcd5c36,'description':_0x279796,'path':path[_0x213f('0x54')](_0x35e8f6,_0x374d44[0x0]),'type':_0x118004,'sidebar':_0xbf1239,'icon':_0x3913aa,'adminUrl':_0x2a31fd,'agentUrl':_0x525da4,'scriptName':_0x5936b,'scriptPath':_0x34f8dd,'version':_0x424ab1};removeReferences(_0x8864c2,null);return db['Plugin']['create'](_0x26052b)['then'](function(_0xed76ab){var _0x4b31be={'role':_0x4036d8[_0x213f('0x92')][_0x213f('0x93')],'userProfileId':_0x4036d8['body']['userProfileId']};if(!_0x4b31be)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4b31be[_0x213f('0x93')]===_0x213f('0x94')){var _0x2c21c5=_0xed76ab[_0x213f('0x2e')]({'plain':!![]});return db[_0x213f('0x95')][_0x213f('0x51')]({'where':{'name':_0x213f('0x2f'),'userProfileId':_0x4b31be['userProfileId']},'raw':!![]})[_0x213f('0x2d')](function(_0x51c859){if(_0x51c859&&_0x51c859['autoAssociation']===0x0){return db[_0x213f('0x30')][_0x213f('0x96')]({'name':_0x2c21c5[_0x213f('0x34')],'resourceId':_0x2c21c5['id'],'type':_0x51c859[_0x213f('0x34')],'sectionId':_0x51c859['id']},{})[_0x213f('0x2d')](function(){return _0xed76ab;});}else{return _0xed76ab;}})['catch'](function(_0x523cd4){logger[_0x213f('0x32')](_0x213f('0x97'),_0x523cd4);throw _0x523cd4;});}return _0xed76ab;})[_0x213f('0x2d')](respondWithResult(_0x20f090,null))['catch'](handleError(_0x20f090,null));}});}catch(_0x33b404){_0x20f090[_0x213f('0x23')](0x1f4)[_0x213f('0x98')](_0x33b404);}};function removeReferences(_0x5c918d,_0x31ec9b){try{if(_0x5c918d){fs[_0x213f('0x6a')](_0x5c918d);logger[_0x213f('0x6b')](_0x213f('0x99'));}if(_0x31ec9b){rimraf(_0x31ec9b,function(){});logger['info'](_0x213f('0x9a'));}}catch(_0x20ae86){logger[_0x213f('0x32')](_0x20ae86);}}exports[_0x213f('0x2c')]=function(_0x5bd74c,_0x4f8729,_0x2eddc2){return db[_0x213f('0x50')]['find']({'where':{'id':_0x5bd74c[_0x213f('0x4f')]['id']}})['then'](handleEntityNotFound(_0x4f8729,null))[_0x213f('0x2d')](saveUpdates(_0x5bd74c[_0x213f('0x92')],null))['then'](respondWithResult(_0x4f8729,null))[_0x213f('0x4e')](handleError(_0x4f8729,null));};exports[_0x213f('0x9b')]=function(_0x109624,_0x2a9fc7,_0x59ef6b){return db['Plugin']['find']({'where':{'id':_0x109624['params']['id']}})['then'](function(_0x172624){if(_0x172624){return _0x172624['destroy']();}})[_0x213f('0x2d')](function(_0x42c19b){rimraf(path['join'](config[_0x213f('0x55')],_0x213f('0x56'),path[_0x213f('0x62')](_0x42c19b[_0x213f('0x53')])),function(){});return _0x42c19b;})[_0x213f('0x2d')](handleEntityNotFound(_0x2a9fc7,null))['then'](respondWithStatusCode(_0x2a9fc7,null))[_0x213f('0x4e')](handleError(_0x2a9fc7,null));};exports[_0x213f('0x9c')]=function(_0x4cf5d2,_0x564c38,_0x22f8af){return BPromise['resolve']()[_0x213f('0x2d')](function(){if(!_0x4cf5d2[_0x213f('0x3e')][_0x213f('0x53')]){throw new Error(_0x213f('0x9d'));}if(!_0x4cf5d2['query']['port']){throw new Error(_0x213f('0x9e'));}var _0x380030=_0x4cf5d2['query'][_0x213f('0x9f')]?_0x4cf5d2[_0x213f('0x3e')][_0x213f('0x9f')]+':'+_0x4cf5d2[_0x213f('0x3e')][_0x213f('0xa0')]:_0x213f('0xa1')+_0x4cf5d2[_0x213f('0x3e')][_0x213f('0xa0')];var _0x3c5e39=_0x4cf5d2[_0x213f('0x3e')][_0x213f('0xa2')]?_0x4cf5d2[_0x213f('0x3e')][_0x213f('0xa2')]:!![];var _0x232faf=_0x4cf5d2[_0x213f('0x3e')][_0x213f('0xa3')]?_0x4cf5d2[_0x213f('0x3e')][_0x213f('0xa3')]:null;var _0x15f760={'method':_0x4cf5d2[_0x213f('0xa4')],'uri':util[_0x213f('0x68')](_0x213f('0xa5'),_0x380030,_0x4cf5d2['query'][_0x213f('0x53')]),'json':_0x3c5e39,'resolveWithFullResponse':!![],'encoding':_0x232faf,'qs':_0x4cf5d2['query']};if(_0x4cf5d2[_0x213f('0xa6')]){_0x15f760[_0x213f('0xa6')]=_0x4cf5d2[_0x213f('0xa6')];if(_0x15f760[_0x213f('0xa6')][_0x213f('0xa7')]){delete _0x15f760['headers']['content-length'];}}if(_0x15f760[_0x213f('0xa6')][_0x213f('0xa8')]){delete _0x15f760[_0x213f('0xa6')][_0x213f('0xa8')];}return rp(_0x15f760);})[_0x213f('0x2d')](function(_0x577671){if(_0x577671){_0x564c38['set'](_0x577671[_0x213f('0xa6')]);logger[_0x213f('0x6b')](_0x577671[_0x213f('0x92')]);if(_['endsWith'](_0x4cf5d2[_0x213f('0x3e')][_0x213f('0x53')],_0x213f('0x52'))&&_0x577671[_0x213f('0xa9')]==0x1f4){return _0x564c38['sendStatus'](_0x577671[_0x213f('0xa9')]);}else{return _0x564c38[_0x213f('0x23')](_0x577671[_0x213f('0xa9')])['send'](_0x577671[_0x213f('0x92')]);}}else{return _0x564c38['sendStatus'](0xc8);}})[_0x213f('0x4e')](handleError(_0x564c38,null));};exports['webhookPost']=function(_0xb48a98,_0x160bd9,_0x18b3ce){return BPromise[_0x213f('0xaa')]()[_0x213f('0x2d')](function(){if(!_0xb48a98[_0x213f('0x3e')][_0x213f('0x53')]){throw new Error(_0x213f('0x9d'));}if(!_0xb48a98[_0x213f('0x3e')]['port']){throw new Error(_0x213f('0x9e'));}var _0x2b0f60=_0xb48a98[_0x213f('0x3e')]['hostname']?_0xb48a98[_0x213f('0x3e')][_0x213f('0x9f')]+':'+_0xb48a98[_0x213f('0x3e')][_0x213f('0xa0')]:_0x213f('0xa1')+_0xb48a98[_0x213f('0x3e')][_0x213f('0xa0')];var _0xfbbff2=_0xb48a98[_0x213f('0x3e')][_0x213f('0xa2')]?_0xb48a98[_0x213f('0x3e')]['json']:!![];var _0x77cbb9=_0xb48a98[_0x213f('0x3e')][_0x213f('0xa3')]?_0xb48a98['query'][_0x213f('0xa3')]:null;var _0x4aead4={'method':_0xb48a98[_0x213f('0xa4')],'uri':util[_0x213f('0x68')]('%s%s',_0x2b0f60,_0xb48a98[_0x213f('0x3e')][_0x213f('0x53')]),'json':_0xfbbff2,'resolveWithFullResponse':!![],'encoding':_0x77cbb9,'body':_0xb48a98['body']};if(_0xb48a98[_0x213f('0xa6')]){_0x4aead4[_0x213f('0xa6')]=_0xb48a98[_0x213f('0xa6')];if(_0x4aead4[_0x213f('0xa6')]['content-length']){delete _0x4aead4[_0x213f('0xa6')][_0x213f('0xa7')];}}if(_0x4aead4['headers']['content-type']){delete _0x4aead4[_0x213f('0xa6')][_0x213f('0xa8')];}return rp(_0x4aead4);})['then'](function(_0x5cfa5e){if(_0x5cfa5e){_0x160bd9[_0x213f('0x28')](_0x5cfa5e['headers']);logger[_0x213f('0x6b')](_0x5cfa5e[_0x213f('0x92')]);return _0x160bd9[_0x213f('0x23')](_0x5cfa5e[_0x213f('0xa9')])[_0x213f('0x98')](_0x5cfa5e[_0x213f('0x92')]);}else{return _0x160bd9[_0x213f('0x22')](0xc8);}})[_0x213f('0x4e')](handleError(_0x160bd9,null));};
\ No newline at end of file
+var _0x2c64=['findAll','rows','catch','show','params','rawAttributes','length','include','join','root','format','basename','createWriteStream','zip','warning','code','ENOENT','Sequelize','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','**/*','server/files/plugins','dirname','node_modules/**/*','attachments/**/*','finalize','close','existsSync','Error','Plugin\x20not\x20found','download','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','upload','filename','extname','file','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','isFile','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','type','views','parameters','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','scriptName','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','html','plugins','Warning:\x20admin\x20view\x20not\x20specified','test','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','find','delete','webhookGet','resolve','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','port','encoding','%s%s','headers','content-length','content-type','statusCode','\x27PATH\x27\x20parameter\x20not\x20specified','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','extract-zip','rimraf','archiver','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','./plugin.socket','register','sendStatus','status','undefined','limit','offset','count','set','Content-Range','json','apply','save','then','destroy','get','Plugins','UserProfileResource','end','error','name','send','index','Plugin','fieldName','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','includeAll'];(function(_0x12cc57,_0xf0f1ce){var _0x2a6cbf=function(_0x475db0){while(--_0x475db0){_0x12cc57['push'](_0x12cc57['shift']());}};_0x2a6cbf(++_0xf0f1ce);}(_0x2c64,0x1b4));var _0x42c6=function(_0x525af9,_0x4edd23){_0x525af9=_0x525af9-0x0;var _0x129fbf=_0x2c64[_0x525af9];return _0x129fbf;};'use strict';var emlformat=require(_0x42c6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x42c6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x42c6('0x2'));var moment=require(_0x42c6('0x3'));var BPromise=require(_0x42c6('0x4'));var Mustache=require(_0x42c6('0x5'));var util=require(_0x42c6('0x6'));var path=require(_0x42c6('0x7'));var sox=require(_0x42c6('0x8'));var csv=require(_0x42c6('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x42c6('0xa'));var _=require('lodash');var squel=require(_0x42c6('0xb'));var crypto=require(_0x42c6('0xc'));var jsforce=require(_0x42c6('0xd'));var deskjs=require(_0x42c6('0xe'));var toCsv=require(_0x42c6('0x9'));var querystring=require(_0x42c6('0xf'));var Papa=require('papaparse');var extract=require(_0x42c6('0x10'));var rimraf=require(_0x42c6('0x11'));var archiver=require(_0x42c6('0x12'));var Redis=require(_0x42c6('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x42c6('0x14'));var as=require(_0x42c6('0x15'));var hardwareService=require(_0x42c6('0x16'));var logger=require(_0x42c6('0x17'))(_0x42c6('0x18'));var utils=require(_0x42c6('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x42c6('0x1a'))['db'];config[_0x42c6('0x1b')]=_[_0x42c6('0x1c')](config[_0x42c6('0x1b')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x42c6('0x1b')]));require(_0x42c6('0x1d'))[_0x42c6('0x1e')](socket);function respondWithStatusCode(_0x45d4d5,_0x43c38f){_0x43c38f=_0x43c38f||0xcc;return function(_0x2ef919){if(_0x2ef919){return _0x45d4d5[_0x42c6('0x1f')](_0x43c38f);}return _0x45d4d5[_0x42c6('0x20')](_0x43c38f)['end']();};}function respondWithResult(_0xdd0f54,_0x24b867){_0x24b867=_0x24b867||0xc8;return function(_0x18c456){if(_0x18c456){return _0xdd0f54['status'](_0x24b867)['json'](_0x18c456);}};}function respondWithFilteredResult(_0x4606d8,_0x54416c){return function(_0x4e6b75){if(_0x4e6b75){var _0x188aa0=typeof _0x54416c['offset']===_0x42c6('0x21')&&typeof _0x54416c[_0x42c6('0x22')]===_0x42c6('0x21');var _0x44fd6a=_0x4e6b75['count'];var _0x1b07af=_0x188aa0?0x0:_0x54416c[_0x42c6('0x23')];var _0x1aea05=_0x188aa0?_0x4e6b75[_0x42c6('0x24')]:_0x54416c[_0x42c6('0x23')]+_0x54416c[_0x42c6('0x22')];var _0x1e17e7;if(_0x1aea05>=_0x44fd6a){_0x1aea05=_0x44fd6a;_0x1e17e7=0xc8;}else{_0x1e17e7=0xce;}_0x4606d8[_0x42c6('0x20')](_0x1e17e7);return _0x4606d8[_0x42c6('0x25')](_0x42c6('0x26'),_0x1b07af+'-'+_0x1aea05+'/'+_0x44fd6a)[_0x42c6('0x27')](_0x4e6b75);}return null;};}function patchUpdates(_0x5d291c){return function(_0xc3ca2e){try{jsonpatch[_0x42c6('0x28')](_0xc3ca2e,_0x5d291c,!![]);}catch(_0x51ddd4){return BPromise['reject'](_0x51ddd4);}return _0xc3ca2e[_0x42c6('0x29')]();};}function saveUpdates(_0x12a53d,_0x196443){return function(_0xa97f24){if(_0xa97f24){return _0xa97f24['update'](_0x12a53d)[_0x42c6('0x2a')](function(_0x459dc4){return _0x459dc4;});}return null;};}function removeEntity(_0x2ba0d7,_0x49a973){return function(_0x24fc15){if(_0x24fc15){return _0x24fc15[_0x42c6('0x2b')]()[_0x42c6('0x2a')](function(){var _0x2463a6=_0x24fc15[_0x42c6('0x2c')]({'plain':!![]});var _0x17d7f1=_0x42c6('0x2d');return db[_0x42c6('0x2e')][_0x42c6('0x2b')]({'where':{'type':_0x17d7f1,'resourceId':_0x2463a6['id']}})[_0x42c6('0x2a')](function(){return _0x24fc15;});})['then'](function(){_0x2ba0d7['status'](0xcc)[_0x42c6('0x2f')]();});}};}function handleEntityNotFound(_0x52c871,_0x2d2b63){return function(_0x1a61fe){if(!_0x1a61fe){_0x52c871['sendStatus'](0x194);}return _0x1a61fe;};}function handleError(_0x226557,_0xad9c9f){_0xad9c9f=_0xad9c9f||0x1f4;return function(_0x2e641b){logger[_0x42c6('0x30')](_0x2e641b['stack']);if(_0x2e641b[_0x42c6('0x31')]){delete _0x2e641b['name'];}_0x226557[_0x42c6('0x20')](_0xad9c9f)[_0x42c6('0x32')](_0x2e641b);};}exports[_0x42c6('0x33')]=function(_0x2be3e7,_0x212110){var _0x551eb1={},_0x4881fd={},_0x467877={'count':0x0,'rows':[]};var _0x4434dc=_['map'](db[_0x42c6('0x34')]['rawAttributes'],function(_0x1fe7ee){return{'name':_0x1fe7ee[_0x42c6('0x35')],'type':_0x1fe7ee['type'][_0x42c6('0x36')]};});_0x4881fd[_0x42c6('0x37')]=_['map'](_0x4434dc,'name');_0x4881fd[_0x42c6('0x38')]=_[_0x42c6('0x39')](_0x2be3e7['query']);_0x4881fd[_0x42c6('0x3a')]=_[_0x42c6('0x3b')](_0x4881fd[_0x42c6('0x37')],_0x4881fd[_0x42c6('0x38')]);_0x551eb1['attributes']=_[_0x42c6('0x3b')](_0x4881fd[_0x42c6('0x37')],qs[_0x42c6('0x3c')](_0x2be3e7[_0x42c6('0x38')][_0x42c6('0x3c')]));_0x551eb1[_0x42c6('0x3d')]=_0x551eb1['attributes']['length']?_0x551eb1[_0x42c6('0x3d')]:_0x4881fd[_0x42c6('0x37')];if(!_0x2be3e7[_0x42c6('0x38')][_0x42c6('0x3e')](_0x42c6('0x3f'))){_0x551eb1[_0x42c6('0x22')]=qs[_0x42c6('0x22')](_0x2be3e7['query'][_0x42c6('0x22')]);_0x551eb1[_0x42c6('0x23')]=qs[_0x42c6('0x23')](_0x2be3e7[_0x42c6('0x38')][_0x42c6('0x23')]);}_0x551eb1[_0x42c6('0x40')]=qs[_0x42c6('0x41')](_0x2be3e7['query'][_0x42c6('0x41')]);_0x551eb1[_0x42c6('0x42')]=qs['filters'](_[_0x42c6('0x43')](_0x2be3e7[_0x42c6('0x38')],_0x4881fd[_0x42c6('0x3a')]),_0x4434dc);if(_0x2be3e7[_0x42c6('0x38')][_0x42c6('0x44')]){_0x551eb1[_0x42c6('0x42')]=_[_0x42c6('0x45')](_0x551eb1[_0x42c6('0x42')],{'$or':_[_0x42c6('0x46')](_0x4434dc,function(_0x4291f0){if(_0x4291f0['type']!==_0x42c6('0x47')){var _0x5b8482={};_0x5b8482[_0x4291f0[_0x42c6('0x31')]]={'$like':'%'+_0x2be3e7[_0x42c6('0x38')]['filter']+'%'};return _0x5b8482;}})});}_0x551eb1=_[_0x42c6('0x45')]({},_0x551eb1,_0x2be3e7[_0x42c6('0x48')]);var _0x1ddce0={'where':_0x551eb1['where']};return db['Plugin'][_0x42c6('0x24')](_0x1ddce0)[_0x42c6('0x2a')](function(_0x3a0ad6){_0x467877[_0x42c6('0x24')]=_0x3a0ad6;if(_0x2be3e7['query'][_0x42c6('0x49')]){_0x551eb1['include']=[{'all':!![]}];}return db[_0x42c6('0x34')][_0x42c6('0x4a')](_0x551eb1);})[_0x42c6('0x2a')](function(_0x2809c2){_0x467877[_0x42c6('0x4b')]=_0x2809c2;return _0x467877;})[_0x42c6('0x2a')](respondWithFilteredResult(_0x212110,_0x551eb1))[_0x42c6('0x4c')](handleError(_0x212110,null));};exports[_0x42c6('0x4d')]=function(_0x2e8118,_0x4dce01){var _0x570751={'raw':!![],'where':{'id':_0x2e8118[_0x42c6('0x4e')]['id']}},_0x447b4c={};_0x447b4c[_0x42c6('0x37')]=_[_0x42c6('0x39')](db[_0x42c6('0x34')][_0x42c6('0x4f')]);_0x447b4c[_0x42c6('0x38')]=_['keys'](_0x2e8118[_0x42c6('0x38')]);_0x447b4c[_0x42c6('0x3a')]=_[_0x42c6('0x3b')](_0x447b4c[_0x42c6('0x37')],_0x447b4c[_0x42c6('0x38')]);_0x570751[_0x42c6('0x3d')]=_[_0x42c6('0x3b')](_0x447b4c[_0x42c6('0x37')],qs[_0x42c6('0x3c')](_0x2e8118[_0x42c6('0x38')][_0x42c6('0x3c')]));_0x570751[_0x42c6('0x3d')]=_0x570751[_0x42c6('0x3d')][_0x42c6('0x50')]?_0x570751[_0x42c6('0x3d')]:_0x447b4c['model'];if(_0x2e8118['query']['includeAll']){_0x570751[_0x42c6('0x51')]=[{'all':!![]}];}_0x570751=_[_0x42c6('0x45')]({},_0x570751,_0x2e8118[_0x42c6('0x48')]);return db[_0x42c6('0x34')]['find'](_0x570751)[_0x42c6('0x2a')](handleEntityNotFound(_0x4dce01,null))['then'](respondWithResult(_0x4dce01,null))['catch'](handleError(_0x4dce01,null));};exports['download']=function(_0x5529c5,_0x2e9847,_0x208559){return db[_0x42c6('0x34')]['find']({'where':{'id':_0x5529c5[_0x42c6('0x4e')]['id']},'attributes':[_0x42c6('0x31'),_0x42c6('0x7')],'raw':!![]})[_0x42c6('0x2a')](handleEntityNotFound(_0x2e9847,null))[_0x42c6('0x2a')](function(_0x5ab13f){if(_0x5ab13f){var _0x10a068=path[_0x42c6('0x52')](config[_0x42c6('0x53')],'server/files/plugins',util[_0x42c6('0x54')]('%s.zip',path[_0x42c6('0x55')](_0x5ab13f[_0x42c6('0x7')])));var _0x255b51=fs[_0x42c6('0x56')](_0x10a068);var _0x29cfae=archiver(_0x42c6('0x57'),{'zlib':{'level':0x9}});_0x29cfae['on'](_0x42c6('0x58'),function(_0x1e4777){if(_0x1e4777[_0x42c6('0x59')]===_0x42c6('0x5a')){logger[_0x42c6('0x30')](_0x1e4777);}else{throw new db[(_0x42c6('0x5b'))]['Error']('Error\x20while\x20generating\x20the\x20zip\x20archive');}});_0x29cfae['on'](_0x42c6('0x30'),function(_0x264b32){throw new db['Sequelize']['Error'](_0x42c6('0x5c'));});_0x29cfae[_0x42c6('0x5d')](_0x255b51);_0x29cfae['glob'](_0x42c6('0x5e'),{'cwd':path[_0x42c6('0x52')](config[_0x42c6('0x53')],_0x42c6('0x5f'),path[_0x42c6('0x60')](_0x5ab13f[_0x42c6('0x7')])),'ignore':[path['join'](path['basename'](_0x5ab13f[_0x42c6('0x7')]),_0x42c6('0x61')),path[_0x42c6('0x52')](path[_0x42c6('0x55')](_0x5ab13f['path']),_0x42c6('0x62'))],'nodir':!![]})[_0x42c6('0x63')]();_0x255b51['on'](_0x42c6('0x64'),function(){if(!fs[_0x42c6('0x65')](_0x10a068)){throw new db[(_0x42c6('0x5b'))][(_0x42c6('0x66'))](_0x42c6('0x67'));}return _0x2e9847[_0x42c6('0x68')](_0x10a068,util[_0x42c6('0x54')]('%s.zip',path[_0x42c6('0x55')](_0x5ab13f[_0x42c6('0x7')])),function(_0x3cf917){if(_0x3cf917){throw new db[(_0x42c6('0x5b'))]['Error'](_0x42c6('0x69'));}fs[_0x42c6('0x6a')](_0x10a068);logger[_0x42c6('0x6b')]('Download\x20completed');logger['info']('Temporary\x20file\x20removed');});});}return null;})['catch'](handleError(_0x2e9847,null));};exports[_0x42c6('0x6c')]=function(_0x2132b4,_0x4d2faf,_0x2adffe){var _0x5b4e57=path[_0x42c6('0x55')](_0x2132b4['file'][_0x42c6('0x6d')],path[_0x42c6('0x6e')](_0x2132b4[_0x42c6('0x6f')]['filename']));var _0x508125=path[_0x42c6('0x52')](config[_0x42c6('0x53')],_0x42c6('0x5f'),_0x2132b4['file'][_0x42c6('0x6d')]);var _0x56d79d=path['join'](config['root'],'server/files/plugins',_0x5b4e57);logger[_0x42c6('0x6b')](_0x42c6('0x70'),_0x508125);logger['info'](_0x42c6('0x71'),_0x56d79d);try{fs[_0x42c6('0x72')](_0x508125,parseInt(_0x42c6('0x73'),0x8));extract(_0x508125,{'dir':_0x56d79d},function(_0x132d7f){if(_0x132d7f){logger[_0x42c6('0x30')](_0x132d7f);handleError(_0x132d7f,!![]);};var _0x43fef0=fs[_0x42c6('0x74')](_0x56d79d);if(_0x43fef0[_0x42c6('0x50')]>0x1){removeReferences(_0x508125,_0x56d79d);logger[_0x42c6('0x30')](_0x42c6('0x75'));return _0x2adffe(new Error(_0x42c6('0x75')));}var _0xde99db=fs['lstatSync'](path[_0x42c6('0x52')](_0x56d79d,_0x43fef0[0x0]));if(_0xde99db[_0x42c6('0x76')]()){removeReferences(_0x508125,_0x56d79d);logger[_0x42c6('0x30')](_0x42c6('0x75'));return _0x2adffe(new Error(_0x42c6('0x75')));}if(_0xde99db['isDirectory']()){var _0x25a7ed=fs[_0x42c6('0x74')](path['join'](_0x56d79d,_0x43fef0[0x0]));if(_0x25a7ed[_0x42c6('0x50')]===0x0){removeReferences(_0x508125,_0x56d79d);logger['error'](_0x42c6('0x75'));return _0x2adffe(new Error('Invalid\x20plugin\x20structure'));}var _0x47587f=_0x25a7ed[_0x42c6('0x77')](function(_0x228440){return _0x228440===_0x42c6('0x78');});if(!_0x47587f){return _0x2adffe(new Error(_0x42c6('0x79')));}var _0x20fb79=fs[_0x42c6('0x7a')](path[_0x42c6('0x52')](_0x56d79d,_0x43fef0[0x0],_0x42c6('0x78')));var _0x52347a=JSON[_0x42c6('0x7b')](_0x20fb79);if('undefined'==typeof _0x52347a[_0x42c6('0x31')]){return _0x2adffe(new Error(_0x42c6('0x7c')));}if(_0x42c6('0x21')==typeof _0x52347a['type']){return _0x2adffe(new Error(_0x42c6('0x7d')));}if(_0x42c6('0x21')==typeof _0x52347a[_0x42c6('0x7e')]){return _0x2adffe(new Error(_0x42c6('0x7f')));}if(_0x42c6('0x21')==typeof _0x52347a['parameters']){return _0x2adffe(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0x52347a[_0x42c6('0x80')]==='html'){if(_0x42c6('0x21')==typeof _0x52347a['parameters'][_0x42c6('0x81')]){return _0x2adffe(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0x42c6('0x21')==typeof _0x52347a[_0x42c6('0x82')][_0x42c6('0x81')][_0x42c6('0x83')]&&_0x42c6('0x21')==typeof _0x52347a['parameters'][_0x42c6('0x81')][_0x42c6('0x84')]){return _0x2adffe(new Error(_0x42c6('0x85')));}}else if(_0x52347a[_0x42c6('0x80')]==='script'){if(_0x42c6('0x21')==typeof _0x52347a['parameters'][_0x42c6('0x86')]){return _0x2adffe(new Error('Invalid\x20manifest:\x20script\x20name\x20missing'));}if(_0x42c6('0x21')==typeof _0x52347a[_0x42c6('0x82')][_0x42c6('0x87')]){return _0x2adffe(new Error(_0x42c6('0x88')));}}else{return _0x2adffe(new Error(_0x42c6('0x89')));}var _0x50bdff=_0x52347a[_0x42c6('0x31')];var _0x405877=_0x52347a[_0x42c6('0x8a')];var _0x3ffbee=_0x52347a[_0x42c6('0x80')];var _0x528ecf=_0x52347a[_0x42c6('0x8b')]?_0x52347a[_0x42c6('0x8b')]:_0x42c6('0x8c');var _0x4064cc=_0x52347a['icon']?_0x52347a[_0x42c6('0x8d')]:'icon-apps';var _0x597c66='';var _0x48c52d='';var _0x180a4e='';var _0x532fd9='';var _0xd131fe=_0x52347a['version'];if(_0x3ffbee===_0x42c6('0x8e')){if(_0x42c6('0x21')!=typeof _0x52347a[_0x42c6('0x82')][_0x42c6('0x81')][_0x42c6('0x83')]){var _0x480e4b=_0x52347a['parameters'][_0x42c6('0x81')][_0x42c6('0x83')];if(!/^(f|ht)tps?:\/\//i['test'](_0x480e4b)){_0x597c66=path[_0x42c6('0x52')](_0x42c6('0x8f'),_0x5b4e57,_0x43fef0[0x0],_0x480e4b);}else{_0x597c66=_0x480e4b;}}else{logger[_0x42c6('0x6b')](_0x42c6('0x90'));}if(_0x42c6('0x21')!=typeof _0x52347a[_0x42c6('0x82')][_0x42c6('0x81')][_0x42c6('0x84')]){var _0x35c314=_0x52347a[_0x42c6('0x82')][_0x42c6('0x81')][_0x42c6('0x84')];if(!/^(f|ht)tps?:\/\//i[_0x42c6('0x91')](_0x35c314)){_0x48c52d=path[_0x42c6('0x52')](_0x42c6('0x8f'),_0x5b4e57,_0x43fef0[0x0],_0x35c314);}else{_0x48c52d=_0x35c314;}}else{logger[_0x42c6('0x6b')]('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x3ffbee==='script'){_0x180a4e=_0x52347a['parameters'][_0x42c6('0x86')];_0x532fd9=_0x52347a[_0x42c6('0x82')][_0x42c6('0x87')];if(_0x42c6('0x21')!=typeof _0x52347a[_0x42c6('0x82')][_0x42c6('0x81')]){if(_0x42c6('0x21')!=typeof _0x52347a[_0x42c6('0x82')][_0x42c6('0x81')][_0x42c6('0x83')]){var _0x480e4b=_0x52347a[_0x42c6('0x82')][_0x42c6('0x81')][_0x42c6('0x83')];if(!/^(f|ht)tps?:\/\//i['test'](_0x480e4b)){_0x597c66=path['join'](_0x42c6('0x8f'),_0x5b4e57,_0x43fef0[0x0],_0x480e4b);}else{_0x597c66=_0x480e4b;}}if(_0x42c6('0x21')!=typeof _0x52347a['parameters'][_0x42c6('0x81')][_0x42c6('0x84')]){var _0x35c314=_0x52347a[_0x42c6('0x82')][_0x42c6('0x81')][_0x42c6('0x84')];if(!/^(f|ht)tps?:\/\//i['test'](_0x35c314)){_0x48c52d=path[_0x42c6('0x52')](_0x42c6('0x8f'),_0x5b4e57,_0x43fef0[0x0],_0x35c314);}else{_0x48c52d=_0x35c314;}}}}var _0x25d9d0={'name':_0x50bdff,'description':_0x405877,'path':path[_0x42c6('0x52')](_0x5b4e57,_0x43fef0[0x0]),'type':_0x3ffbee,'sidebar':_0x528ecf,'icon':_0x4064cc,'adminUrl':_0x597c66,'agentUrl':_0x48c52d,'scriptName':_0x180a4e,'scriptPath':_0x532fd9,'version':_0xd131fe};removeReferences(_0x508125,null);return db[_0x42c6('0x34')][_0x42c6('0x92')](_0x25d9d0)['then'](function(_0x2b47d2){var _0x5e7bec={'role':_0x2132b4[_0x42c6('0x93')][_0x42c6('0x94')],'userProfileId':_0x2132b4['body'][_0x42c6('0x95')]};if(!_0x5e7bec)throw new Error(_0x42c6('0x96'));if(_0x5e7bec['role']===_0x42c6('0x97')){var _0x2fba04=_0x2b47d2[_0x42c6('0x2c')]({'plain':!![]});return db[_0x42c6('0x98')]['find']({'where':{'name':_0x42c6('0x2d'),'userProfileId':_0x5e7bec['userProfileId']},'raw':!![]})[_0x42c6('0x2a')](function(_0x1d69dc){if(_0x1d69dc&&_0x1d69dc[_0x42c6('0x99')]===0x0){return db[_0x42c6('0x2e')]['create']({'name':_0x2fba04[_0x42c6('0x31')],'resourceId':_0x2fba04['id'],'type':_0x1d69dc[_0x42c6('0x31')],'sectionId':_0x1d69dc['id']},{})[_0x42c6('0x2a')](function(){return _0x2b47d2;});}else{return _0x2b47d2;}})[_0x42c6('0x4c')](function(_0x142e0a){logger[_0x42c6('0x30')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x142e0a);throw _0x142e0a;});}return _0x2b47d2;})[_0x42c6('0x2a')](respondWithResult(_0x4d2faf,null))['catch'](handleError(_0x4d2faf,null));}});}catch(_0x47b707){_0x4d2faf[_0x42c6('0x20')](0x1f4)[_0x42c6('0x32')](_0x47b707);}};function removeReferences(_0x45b5de,_0x2ea69e){try{if(_0x45b5de){fs[_0x42c6('0x6a')](_0x45b5de);logger['info'](_0x42c6('0x9a'));}if(_0x2ea69e){rimraf(_0x2ea69e,function(){});logger['info'](_0x42c6('0x9b'));}}catch(_0x10141f){logger['error'](_0x10141f);}}exports['update']=function(_0x370877,_0x38f691,_0x5e4b53){return db[_0x42c6('0x34')][_0x42c6('0x9c')]({'where':{'id':_0x370877[_0x42c6('0x4e')]['id']}})['then'](handleEntityNotFound(_0x38f691,null))[_0x42c6('0x2a')](saveUpdates(_0x370877['body'],null))[_0x42c6('0x2a')](respondWithResult(_0x38f691,null))[_0x42c6('0x4c')](handleError(_0x38f691,null));};exports[_0x42c6('0x9d')]=function(_0x5957c9,_0xd8dbf,_0x2f0fd7){return db[_0x42c6('0x34')][_0x42c6('0x9c')]({'where':{'id':_0x5957c9[_0x42c6('0x4e')]['id']}})[_0x42c6('0x2a')](function(_0x57024b){if(_0x57024b){return _0x57024b[_0x42c6('0x2b')]();}})[_0x42c6('0x2a')](function(_0x4dcc66){rimraf(path[_0x42c6('0x52')](config[_0x42c6('0x53')],_0x42c6('0x5f'),path['dirname'](_0x4dcc66[_0x42c6('0x7')])),function(){});return _0x4dcc66;})['then'](handleEntityNotFound(_0xd8dbf,null))[_0x42c6('0x2a')](respondWithStatusCode(_0xd8dbf,null))['catch'](handleError(_0xd8dbf,null));};exports[_0x42c6('0x9e')]=function(_0x458ccb,_0x3d5e88,_0x4f584c){return BPromise[_0x42c6('0x9f')]()[_0x42c6('0x2a')](function(){if(!_0x458ccb[_0x42c6('0x38')][_0x42c6('0x7')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x458ccb[_0x42c6('0x38')]['port']){throw new Error(_0x42c6('0xa0'));}var _0xa7399d=_0x458ccb['query']['hostname']?_0x458ccb['query'][_0x42c6('0xa1')]+':'+_0x458ccb[_0x42c6('0x38')][_0x42c6('0xa2')]:'http://localhost:'+_0x458ccb['query'][_0x42c6('0xa2')];var _0x5957c3=_0x458ccb[_0x42c6('0x38')]['json']?_0x458ccb[_0x42c6('0x38')]['json']:!![];var _0x443b90=_0x458ccb[_0x42c6('0x38')][_0x42c6('0xa3')]?_0x458ccb[_0x42c6('0x38')][_0x42c6('0xa3')]:null;var _0x11d29f={'method':_0x458ccb['method'],'uri':util[_0x42c6('0x54')](_0x42c6('0xa4'),_0xa7399d,_0x458ccb['query'][_0x42c6('0x7')]),'json':_0x5957c3,'resolveWithFullResponse':!![],'encoding':_0x443b90,'qs':_0x458ccb[_0x42c6('0x38')]};if(_0x458ccb[_0x42c6('0xa5')]){_0x11d29f[_0x42c6('0xa5')]=_0x458ccb[_0x42c6('0xa5')];if(_0x11d29f[_0x42c6('0xa5')][_0x42c6('0xa6')]){delete _0x11d29f[_0x42c6('0xa5')]['content-length'];}}if(_0x11d29f[_0x42c6('0xa5')][_0x42c6('0xa7')]){delete _0x11d29f[_0x42c6('0xa5')][_0x42c6('0xa7')];}return rp(_0x11d29f);})['then'](function(_0xf56bc3){if(_0xf56bc3){_0x3d5e88[_0x42c6('0x25')](_0xf56bc3[_0x42c6('0xa5')]);logger[_0x42c6('0x6b')](_0xf56bc3['body']);if(_['endsWith'](_0x458ccb[_0x42c6('0x38')][_0x42c6('0x7')],_0x42c6('0x68'))&&_0xf56bc3[_0x42c6('0xa8')]==0x1f4){return _0x3d5e88[_0x42c6('0x1f')](_0xf56bc3[_0x42c6('0xa8')]);}else{return _0x3d5e88['status'](_0xf56bc3[_0x42c6('0xa8')])[_0x42c6('0x32')](_0xf56bc3['body']);}}else{return _0x3d5e88[_0x42c6('0x1f')](0xc8);}})[_0x42c6('0x4c')](handleError(_0x3d5e88,null));};exports['webhookPost']=function(_0x1a1f16,_0x430bc6,_0xed950f){return BPromise[_0x42c6('0x9f')]()[_0x42c6('0x2a')](function(){if(!_0x1a1f16[_0x42c6('0x38')][_0x42c6('0x7')]){throw new Error(_0x42c6('0xa9'));}if(!_0x1a1f16[_0x42c6('0x38')][_0x42c6('0xa2')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x5dacb3=_0x1a1f16[_0x42c6('0x38')][_0x42c6('0xa1')]?_0x1a1f16[_0x42c6('0x38')][_0x42c6('0xa1')]+':'+_0x1a1f16['query']['port']:'http://localhost:'+_0x1a1f16['query']['port'];var _0x1aec0e=_0x1a1f16[_0x42c6('0x38')][_0x42c6('0x27')]?_0x1a1f16[_0x42c6('0x38')]['json']:!![];var _0xb60865=_0x1a1f16[_0x42c6('0x38')][_0x42c6('0xa3')]?_0x1a1f16[_0x42c6('0x38')][_0x42c6('0xa3')]:null;var _0x2cc826={'method':_0x1a1f16['method'],'uri':util[_0x42c6('0x54')](_0x42c6('0xa4'),_0x5dacb3,_0x1a1f16[_0x42c6('0x38')][_0x42c6('0x7')]),'json':_0x1aec0e,'resolveWithFullResponse':!![],'encoding':_0xb60865,'body':_0x1a1f16['body']};if(_0x1a1f16[_0x42c6('0xa5')]){_0x2cc826[_0x42c6('0xa5')]=_0x1a1f16[_0x42c6('0xa5')];if(_0x2cc826['headers']['content-length']){delete _0x2cc826[_0x42c6('0xa5')][_0x42c6('0xa6')];}}if(_0x2cc826[_0x42c6('0xa5')][_0x42c6('0xa7')]){delete _0x2cc826[_0x42c6('0xa5')][_0x42c6('0xa7')];}return rp(_0x2cc826);})[_0x42c6('0x2a')](function(_0x2a9c32){if(_0x2a9c32){_0x430bc6[_0x42c6('0x25')](_0x2a9c32[_0x42c6('0xa5')]);logger[_0x42c6('0x6b')](_0x2a9c32[_0x42c6('0x93')]);return _0x430bc6[_0x42c6('0x20')](_0x2a9c32[_0x42c6('0xa8')])[_0x42c6('0x32')](_0x2a9c32[_0x42c6('0x93')]);}else{return _0x430bc6[_0x42c6('0x1f')](0xc8);}})[_0x42c6('0x4c')](handleError(_0x430bc6,null));};
\ No newline at end of file
index d52c901..b28d17f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb138=['setMaxListeners','save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','Plugin'];(function(_0x3e69ae,_0x366e8d){var _0x3d7f42=function(_0x5df093){while(--_0x5df093){_0x3e69ae['push'](_0x3e69ae['shift']());}};_0x3d7f42(++_0x366e8d);}(_0xb138,0x1dd));var _0x8b13=function(_0x4143d1,_0x4716d0){_0x4143d1=_0x4143d1-0x0;var _0x28d009=_0xb138[_0x4143d1];return _0x28d009;};'use strict';var EventEmitter=require(_0x8b13('0x0'));var Plugin=require(_0x8b13('0x1'))['db'][_0x8b13('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0x8b13('0x3')](0x0);var events={'afterCreate':_0x8b13('0x4'),'afterUpdate':_0x8b13('0x5'),'afterDestroy':_0x8b13('0x6')};function emitEvent(_0x5369d4){return function(_0x4411a0,_0x241acb,_0x3af81a){PluginEvents['emit'](_0x5369d4+':'+_0x4411a0['id'],_0x4411a0);PluginEvents[_0x8b13('0x7')](_0x5369d4,_0x4411a0);_0x3af81a(null);};}for(var e in events){if(events[_0x8b13('0x8')](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module[_0x8b13('0x9')]=PluginEvents;
\ No newline at end of file
+var _0x0d4d=['events','../../mysqldb','Plugin','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0x5a5b6e,_0x3a7a97){var _0x2e639c=function(_0xf924e){while(--_0xf924e){_0x5a5b6e['push'](_0x5a5b6e['shift']());}};_0x2e639c(++_0x3a7a97);}(_0x0d4d,0x132));var _0xd0d4=function(_0x18097f,_0x2c8bf0){_0x18097f=_0x18097f-0x0;var _0x5401dd=_0x0d4d[_0x18097f];return _0x5401dd;};'use strict';var EventEmitter=require(_0xd0d4('0x0'));var Plugin=require(_0xd0d4('0x1'))['db'][_0xd0d4('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0xd0d4('0x3')](0x0);var events={'afterCreate':_0xd0d4('0x4'),'afterUpdate':_0xd0d4('0x5'),'afterDestroy':'remove'};function emitEvent(_0x984664){return function(_0x58909f,_0x2e99ee,_0x3787f4){PluginEvents['emit'](_0x984664+':'+_0x58909f['id'],_0x58909f);PluginEvents[_0xd0d4('0x6')](_0x984664,_0x58909f);_0x3787f4(null);};}for(var e in events){if(events[_0xd0d4('0x7')](e)){var event=events[e];Plugin[_0xd0d4('0x8')](e,emitEvent(event));}}module['exports']=PluginEvents;
\ No newline at end of file
index 6ec5768..202c42e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ae5=['plugins','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./plugin.attributes','exports','Plugin'];(function(_0x3635ce,_0x33a6f9){var _0x97ecd0=function(_0x123d98){while(--_0x123d98){_0x3635ce['push'](_0x3635ce['shift']());}};_0x97ecd0(++_0x33a6f9);}(_0x6ae5,0x1d5));var _0x56ae=function(_0xb0b1b1,_0x11742c){_0xb0b1b1=_0xb0b1b1-0x0;var _0x1e457b=_0x6ae5[_0xb0b1b1];return _0x1e457b;};'use strict';var _=require(_0x56ae('0x0'));var util=require(_0x56ae('0x1'));var logger=require(_0x56ae('0x2'))(_0x56ae('0x3'));var moment=require(_0x56ae('0x4'));var BPromise=require('bluebird');var rp=require(_0x56ae('0x5'));var fs=require('fs');var path=require(_0x56ae('0x6'));var rimraf=require('rimraf');var config=require(_0x56ae('0x7'));var attributes=require(_0x56ae('0x8'));module[_0x56ae('0x9')]=function(_0x209518,_0x4d4046){return _0x209518['define'](_0x56ae('0xa'),attributes,{'tableName':_0x56ae('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2f7e=['bluebird','request-promise','path','rimraf','../../config/environment','./plugin.attributes','exports','define','Plugin','plugins','lodash','util','api','moment'];(function(_0x16b3f7,_0x3cb622){var _0x4c662b=function(_0xa8fd73){while(--_0xa8fd73){_0x16b3f7['push'](_0x16b3f7['shift']());}};_0x4c662b(++_0x3cb622);}(_0x2f7e,0x122));var _0xe2f7=function(_0x274d61,_0x15f4e6){_0x274d61=_0x274d61-0x0;var _0xbf3d7=_0x2f7e[_0x274d61];return _0xbf3d7;};'use strict';var _=require(_0xe2f7('0x0'));var util=require(_0xe2f7('0x1'));var logger=require('../../config/logger')(_0xe2f7('0x2'));var moment=require(_0xe2f7('0x3'));var BPromise=require(_0xe2f7('0x4'));var rp=require(_0xe2f7('0x5'));var fs=require('fs');var path=require(_0xe2f7('0x6'));var rimraf=require(_0xe2f7('0x7'));var config=require(_0xe2f7('0x8'));var attributes=require(_0xe2f7('0x9'));module[_0xe2f7('0xa')]=function(_0x734e2,_0x4dc5d0){return _0x734e2[_0xe2f7('0xb')](_0xe2f7('0xc'),attributes,{'tableName':_0xe2f7('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 62b07f1..30f3b18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2977=['register','request','Plugin,\x20%s,\x20%s','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreatePlugin','body','options','raw','then','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','redis','defaults','socket.io-emitter','./plugin.socket'];(function(_0x2c0984,_0x18fdf9){var _0x4235f5=function(_0x9a827c){while(--_0x9a827c){_0x2c0984['push'](_0x2c0984['shift']());}};_0x4235f5(++_0x18fdf9);}(_0x2977,0xf2));var _0x7297=function(_0x550e1e,_0x170390){_0x550e1e=_0x550e1e-0x0;var _0x5a5039=_0x2977[_0x550e1e];return _0x5a5039;};'use strict';var _=require(_0x7297('0x0'));var util=require(_0x7297('0x1'));var moment=require('moment');var BPromise=require(_0x7297('0x2'));var rs=require(_0x7297('0x3'));var fs=require('fs');var Redis=require(_0x7297('0x4'));var db=require(_0x7297('0x5'))['db'];var utils=require(_0x7297('0x6'));var logger=require('../../config/logger')(_0x7297('0x7'));var config=require(_0x7297('0x8'));var jayson=require(_0x7297('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x7297('0xa')]=_[_0x7297('0xb')](config[_0x7297('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x7297('0xc'))(new Redis(config[_0x7297('0xa')]));require(_0x7297('0xd'))[_0x7297('0xe')](socket);function respondWithRpcPromise(_0x4ffc20,_0x3f8fab,_0x5dd80d){return new BPromise(function(_0x3aa509,_0x221ba7){return client[_0x7297('0xf')](_0x4ffc20,_0x5dd80d)['then'](function(_0x45931b){logger['info'](_0x7297('0x10'),_0x3f8fab,_0x7297('0x11'));logger[_0x7297('0x12')](_0x7297('0x13'),_0x3f8fab,'request\x20sent',JSON[_0x7297('0x14')](_0x45931b));if(_0x45931b['error']){if(_0x45931b[_0x7297('0x15')][_0x7297('0x16')]===0x1f4){logger['error'](_0x7297('0x10'),_0x3f8fab,_0x45931b[_0x7297('0x15')][_0x7297('0x17')]);return _0x221ba7(_0x45931b[_0x7297('0x15')][_0x7297('0x17')]);}logger[_0x7297('0x15')]('Plugin,\x20%s,\x20%s',_0x3f8fab,_0x45931b[_0x7297('0x15')][_0x7297('0x17')]);return _0x3aa509(_0x45931b[_0x7297('0x15')][_0x7297('0x17')]);}else{logger[_0x7297('0x18')](_0x7297('0x10'),_0x3f8fab,'request\x20sent');_0x3aa509(_0x45931b[_0x7297('0x19')][_0x7297('0x17')]);}})[_0x7297('0x1a')](function(_0x1f64c1){logger['error'](_0x7297('0x10'),_0x3f8fab,_0x1f64c1);_0x221ba7(_0x1f64c1);});});}exports[_0x7297('0x1b')]=function(_0x4bec01){var _0x2f08a3=this;return new Promise(function(_0x5f3db1,_0x17fdfc){return db['Plugin']['create'](_0x4bec01[_0x7297('0x1c')],{'raw':_0x4bec01[_0x7297('0x1d')]?_0x4bec01[_0x7297('0x1d')][_0x7297('0x1e')]===undefined?!![]:![]:!![]})[_0x7297('0x1f')](function(_0x29c4b0){logger[_0x7297('0x18')](_0x7297('0x1b'),_0x4bec01);logger['debug'](_0x7297('0x1b'),_0x4bec01,JSON[_0x7297('0x14')](_0x29c4b0));_0x5f3db1(_0x29c4b0);})[_0x7297('0x1a')](function(_0x1c5fab){logger['error'](_0x7297('0x1b'),_0x1c5fab[_0x7297('0x17')],_0x4bec01);_0x17fdfc(_0x2f08a3[_0x7297('0x15')](0x1f4,_0x1c5fab['message']));});});};
\ No newline at end of file
+var _0x4a34=['CreatePlugin','lodash','bluebird','randomstring','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','then','info','request\x20sent','debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','Plugin,\x20%s,\x20%s','message','result','catch','Plugin','create','body','options','raw'];(function(_0x197d2f,_0x25cb01){var _0x1dbdab=function(_0x1ee78f){while(--_0x1ee78f){_0x197d2f['push'](_0x197d2f['shift']());}};_0x1dbdab(++_0x25cb01);}(_0x4a34,0x1ae));var _0x44a3=function(_0x5816ca,_0x484226){_0x5816ca=_0x5816ca-0x0;var _0x63fe46=_0x4a34[_0x5816ca];return _0x63fe46;};'use strict';var _=require(_0x44a3('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x44a3('0x1'));var rs=require(_0x44a3('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x44a3('0x3'));var logger=require(_0x44a3('0x4'))('rpc');var config=require(_0x44a3('0x5'));var jayson=require(_0x44a3('0x6'));var client=jayson[_0x44a3('0x7')][_0x44a3('0x8')]({'port':0x232a});config[_0x44a3('0x9')]=_[_0x44a3('0xa')](config[_0x44a3('0x9')],{'host':_0x44a3('0xb'),'port':0x18eb});var socket=require(_0x44a3('0xc'))(new Redis(config[_0x44a3('0x9')]));require(_0x44a3('0xd'))[_0x44a3('0xe')](socket);function respondWithRpcPromise(_0x3cb976,_0x5c6665,_0x29a560){return new BPromise(function(_0x343770,_0x464297){return client['request'](_0x3cb976,_0x29a560)[_0x44a3('0xf')](function(_0x2f8d62){logger[_0x44a3('0x10')]('Plugin,\x20%s,\x20%s',_0x5c6665,_0x44a3('0x11'));logger[_0x44a3('0x12')](_0x44a3('0x13'),_0x5c6665,_0x44a3('0x11'),JSON[_0x44a3('0x14')](_0x2f8d62));if(_0x2f8d62['error']){if(_0x2f8d62[_0x44a3('0x15')][_0x44a3('0x16')]===0x1f4){logger[_0x44a3('0x15')](_0x44a3('0x17'),_0x5c6665,_0x2f8d62['error'][_0x44a3('0x18')]);return _0x464297(_0x2f8d62[_0x44a3('0x15')]['message']);}logger['error']('Plugin,\x20%s,\x20%s',_0x5c6665,_0x2f8d62['error'][_0x44a3('0x18')]);return _0x343770(_0x2f8d62[_0x44a3('0x15')][_0x44a3('0x18')]);}else{logger[_0x44a3('0x10')](_0x44a3('0x17'),_0x5c6665,_0x44a3('0x11'));_0x343770(_0x2f8d62[_0x44a3('0x19')]['message']);}})[_0x44a3('0x1a')](function(_0x4cf395){logger[_0x44a3('0x15')](_0x44a3('0x17'),_0x5c6665,_0x4cf395);_0x464297(_0x4cf395);});});}exports['CreatePlugin']=function(_0xb9e626){var _0x4440f9=this;return new Promise(function(_0x45a62d,_0x2d9a70){return db[_0x44a3('0x1b')][_0x44a3('0x1c')](_0xb9e626[_0x44a3('0x1d')],{'raw':_0xb9e626[_0x44a3('0x1e')]?_0xb9e626['options'][_0x44a3('0x1f')]===undefined?!![]:![]:!![]})[_0x44a3('0xf')](function(_0x371db7){logger[_0x44a3('0x10')](_0x44a3('0x20'),_0xb9e626);logger[_0x44a3('0x12')](_0x44a3('0x20'),_0xb9e626,JSON[_0x44a3('0x14')](_0x371db7));_0x45a62d(_0x371db7);})[_0x44a3('0x1a')](function(_0x24d339){logger[_0x44a3('0x15')](_0x44a3('0x20'),_0x24d339[_0x44a3('0x18')],_0xb9e626);_0x2d9a70(_0x4440f9[_0x44a3('0x15')](0x1f4,_0x24d339[_0x44a3('0x18')]));});});};
\ No newline at end of file
index 8efa5f2..799eefe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f38=['removeListener','register','length','plugin:','update','emit'];(function(_0x35e2da,_0x3c5ad8){var _0x4e3fe6=function(_0x249c1f){while(--_0x249c1f){_0x35e2da['push'](_0x35e2da['shift']());}};_0x4e3fe6(++_0x3c5ad8);}(_0x3f38,0xee));var _0x83f3=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x3f38[_0x3ab51d];return _0x29a04e;};'use strict';var PluginEvents=require('./plugin.events');var events=['save','remove',_0x83f3('0x0')];function createListener(_0x7de14c,_0x18769a){return function(_0x460189){_0x18769a[_0x83f3('0x1')](_0x7de14c,_0x460189);};}function removeListener(_0xfd594a,_0x51bcc5){return function(){PluginEvents[_0x83f3('0x2')](_0xfd594a,_0x51bcc5);};}exports[_0x83f3('0x3')]=function(_0x3828d1){for(var _0x4c5f43=0x0,_0x4f4356=events[_0x83f3('0x4')];_0x4c5f43<_0x4f4356;_0x4c5f43++){var _0x9e6a96=events[_0x4c5f43];var _0x7c0cce=createListener(_0x83f3('0x5')+_0x9e6a96,_0x3828d1);PluginEvents['on'](_0x9e6a96,_0x7c0cce);}};
\ No newline at end of file
+var _0xcaa8=['remove','emit','removeListener','register','length','plugin:','save'];(function(_0x1c81c3,_0x37d64c){var _0x358dd=function(_0xaf8814){while(--_0xaf8814){_0x1c81c3['push'](_0x1c81c3['shift']());}};_0x358dd(++_0x37d64c);}(_0xcaa8,0x1db));var _0x8caa=function(_0x43a882,_0x1212b0){_0x43a882=_0x43a882-0x0;var _0x5b3ca5=_0xcaa8[_0x43a882];return _0x5b3ca5;};'use strict';var PluginEvents=require('./plugin.events');var events=[_0x8caa('0x0'),_0x8caa('0x1'),'update'];function createListener(_0x44bfbd,_0x372ca4){return function(_0x228dc1){_0x372ca4[_0x8caa('0x2')](_0x44bfbd,_0x228dc1);};}function removeListener(_0x202e38,_0x2c71b6){return function(){PluginEvents[_0x8caa('0x3')](_0x202e38,_0x2c71b6);};}exports[_0x8caa('0x4')]=function(_0x540a0e){for(var _0xf334a0=0x0,_0x364ccf=events[_0x8caa('0x5')];_0xf334a0<_0x364ccf;_0xf334a0++){var _0x550d53=events[_0xf334a0];var _0x189c72=createListener(_0x8caa('0x6')+_0x550d53,_0x540a0e);PluginEvents['on'](_0x550d53,_0x189c72);}};
\ No newline at end of file
index 1889fa1..345900f 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(_0x3b1192,_0xc0609b){var _0x922703=function(_0x4a085e){while(--_0x4a085e){_0x3b1192['push'](_0x3b1192['shift']());}};_0x922703(++_0xc0609b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xa9e0[_0x38a7ac];return _0x53061a;};'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(_0x4e0b60,_0x40f3f7){var _0x299acd=function(_0x55a60c){while(--_0x55a60c){_0x4e0b60['push'](_0x4e0b60['shift']());}};_0x299acd(++_0x40f3f7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x92c450,_0x41f1e3){_0x92c450=_0x92c450-0x0;var _0x2a9599=_0xa9e0[_0x92c450];return _0x2a9599;};'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 0cfe230..5004c27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb903=['../../config/pm2','../../config/logger','api','child_process','exec','bluebird','sendStatus','json','info','error','name','express','motion2','length','show','describe','params','then','create','body','script','join','../../files/plugins','cwd','chdir','start','dump','catch','status','Missing\x20name\x20and/or\x20path','update','restart','stop','hasOwnProperty','send','Unknown\x20status','destroy','delete','lodash'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xb903,0x185));var _0x3b90=function(_0x16f8a3,_0x2dca50){_0x16f8a3=_0x16f8a3-0x0;var _0x353946=_0xb903[_0x16f8a3];return _0x353946;};'use strict';var _=require(_0x3b90('0x0'));var pm2=require(_0x3b90('0x1'));var logger=require(_0x3b90('0x2'))(_0x3b90('0x3'));var path=require('path');var exec=require(_0x3b90('0x4'))[_0x3b90('0x5')];var BPromise=require(_0x3b90('0x6'));function handleEntityNotFound(_0x1cd5d8,_0x30d8db){return function(_0x40f726){if(!_0x40f726){_0x1cd5d8[_0x3b90('0x7')](0x194);;}return _0x40f726;};}function respondWithResult(_0x5acd76,_0x15b68f){_0x15b68f=_0x15b68f||0xc8;return function(_0x5e845a){if(_0x5e845a){return _0x5acd76['status'](_0x15b68f)[_0x3b90('0x8')](_0x5e845a);}return null;};}function handleError(_0x2e4c06,_0x42efe8){_0x42efe8=_0x42efe8||0x1f4;return function(_0x1b1fbf){logger['error'](_0x1b1fbf['stack']);if(_0x1b1fbf['name']){delete _0x1b1fbf['name'];}_0x2e4c06['status'](_0x42efe8)['send'](_0x1b1fbf);};}function execChildProcess(){return new BPromise(function(_0x336913,_0x5af39c){exec('npm\x20install',function(_0x30c49c,_0x233509,_0x4bb8f4){logger[_0x3b90('0x9')](_0x233509);logger[_0x3b90('0x9')](_0x4bb8f4);if(_0x30c49c){logger[_0x3b90('0xa')](_0x30c49c);return _0x5af39c(_0x30c49c);}return _0x336913(_0x233509);});});}exports['index']=function(_0x5447df,_0x58c4d1){return pm2['list']()['then'](function(_0x3a0a55){if(_0x3a0a55){var _0x2c72fb=_['reject'](_0x3a0a55,function(_0x51fb66){return _0x51fb66[_0x3b90('0xb')]===_0x3b90('0xc')||_0x51fb66[_0x3b90('0xb')]===_0x3b90('0xd');});return{'rows':_0x2c72fb,'count':_0x2c72fb[_0x3b90('0xe')]};}return null;})['then'](respondWithResult(_0x58c4d1,null))['catch'](handleError(_0x58c4d1,null));};exports[_0x3b90('0xf')]=function(_0x5420dc,_0x4e9120){return pm2[_0x3b90('0x10')](_0x5420dc[_0x3b90('0x11')]['id'])[_0x3b90('0x12')](respondWithResult(_0x4e9120,null))[_0x3b90('0x12')](handleEntityNotFound(_0x4e9120,null))['catch'](handleError(_0x4e9120,null));};exports[_0x3b90('0x13')]=function(_0x5d140f,_0xd8d873){if(_0x5d140f[_0x3b90('0x14')]['name']&&_0x5d140f[_0x3b90('0x14')][_0x3b90('0x15')]){var _0x3642c0=path[_0x3b90('0x16')](__dirname,_0x3b90('0x17'),_0x5d140f[_0x3b90('0x14')][_0x3b90('0x15')]);var _0x2f4270=process[_0x3b90('0x18')]();process[_0x3b90('0x19')](path['dirname'](_0x3642c0));return execChildProcess()[_0x3b90('0x12')](function(_0x36b93e){process[_0x3b90('0x19')](_0x2f4270);return pm2[_0x3b90('0x1a')]({'name':_0x5d140f[_0x3b90('0x14')][_0x3b90('0xb')],'script':_0x3642c0});})['then'](function(_0x4b308c){pm2[_0x3b90('0x1b')]();return _0x4b308c[0x0];})[_0x3b90('0x12')](respondWithResult(_0xd8d873,0xc9))[_0x3b90('0x1c')](handleError(_0xd8d873,null));}else{return _0xd8d873[_0x3b90('0x1d')](0x1f4)['send']({'message':_0x3b90('0x1e')});}};exports[_0x3b90('0x1f')]=function(_0x1787d1,_0x4caead){if(_0x1787d1[_0x3b90('0x14')]['id']){delete _0x1787d1[_0x3b90('0x14')]['id'];}var _0x17ec7f={'online':_0x3b90('0x20'),'stopped':_0x3b90('0x21')};if(_0x17ec7f[_0x3b90('0x22')](_0x1787d1['body'][_0x3b90('0x1d')])){return pm2[_0x17ec7f[_0x1787d1['body'][_0x3b90('0x1d')]]](_0x1787d1[_0x3b90('0x11')]['id'])[_0x3b90('0x12')](respondWithResult(_0x4caead,0xc8))[_0x3b90('0x1c')](handleError(_0x4caead,null));}else{return _0x4caead[_0x3b90('0x1d')](0x1f4)[_0x3b90('0x23')]({'message':_0x3b90('0x24')});}};exports[_0x3b90('0x25')]=function(_0x500ceb,_0x4d1f31){if(_0x500ceb[_0x3b90('0x14')]['id']){delete _0x500ceb[_0x3b90('0x14')]['id'];}if(_0x500ceb[_0x3b90('0x11')]['id']){return pm2[_0x3b90('0x26')](_0x500ceb['params']['id'])['then'](function(_0xd33ac9){pm2[_0x3b90('0x1b')]();return _0xd33ac9[0x0];})[_0x3b90('0x12')](respondWithResult(_0x4d1f31,null))['catch'](handleError(_0x4d1f31,null));}else{return _0x4d1f31[_0x3b90('0x1d')](0x1f4)['send']({'message':'Unknown\x20id'});}};
\ No newline at end of file
+var _0xf109=['name','send','info','index','list','express','motion2','then','catch','params','create','body','script','join','../../files/plugins','cwd','chdir','dirname','start','restart','stop','hasOwnProperty','Unknown\x20status','destroy','dump','Unknown\x20id','lodash','../../config/pm2','../../config/logger','exec','bluebird','sendStatus','status','json','error','stack'];(function(_0x5093e9,_0x5154d0){var _0x4c9a22=function(_0x15176d){while(--_0x15176d){_0x5093e9['push'](_0x5093e9['shift']());}};_0x4c9a22(++_0x5154d0);}(_0xf109,0xce));var _0x9f10=function(_0x2db12b,_0x30ab1d){_0x2db12b=_0x2db12b-0x0;var _0x20990b=_0xf109[_0x2db12b];return _0x20990b;};'use strict';var _=require(_0x9f10('0x0'));var pm2=require(_0x9f10('0x1'));var logger=require(_0x9f10('0x2'))('api');var path=require('path');var exec=require('child_process')[_0x9f10('0x3')];var BPromise=require(_0x9f10('0x4'));function handleEntityNotFound(_0x74d0ee,_0x26f01c){return function(_0x4027f4){if(!_0x4027f4){_0x74d0ee[_0x9f10('0x5')](0x194);;}return _0x4027f4;};}function respondWithResult(_0x408fe8,_0xd3137b){_0xd3137b=_0xd3137b||0xc8;return function(_0x227a29){if(_0x227a29){return _0x408fe8[_0x9f10('0x6')](_0xd3137b)[_0x9f10('0x7')](_0x227a29);}return null;};}function handleError(_0x5c8719,_0x42a8cd){_0x42a8cd=_0x42a8cd||0x1f4;return function(_0x3019eb){logger[_0x9f10('0x8')](_0x3019eb[_0x9f10('0x9')]);if(_0x3019eb[_0x9f10('0xa')]){delete _0x3019eb['name'];}_0x5c8719[_0x9f10('0x6')](_0x42a8cd)[_0x9f10('0xb')](_0x3019eb);};}function execChildProcess(){return new BPromise(function(_0x4522d9,_0x4e577d){exec('npm\x20install',function(_0x3fac2b,_0x311935,_0x407336){logger['info'](_0x311935);logger[_0x9f10('0xc')](_0x407336);if(_0x3fac2b){logger[_0x9f10('0x8')](_0x3fac2b);return _0x4e577d(_0x3fac2b);}return _0x4522d9(_0x311935);});});}exports[_0x9f10('0xd')]=function(_0x58067f,_0x9a3ae6){return pm2[_0x9f10('0xe')]()['then'](function(_0x40a48a){if(_0x40a48a){var _0x236e28=_['reject'](_0x40a48a,function(_0x59bcad){return _0x59bcad[_0x9f10('0xa')]===_0x9f10('0xf')||_0x59bcad['name']===_0x9f10('0x10');});return{'rows':_0x236e28,'count':_0x236e28['length']};}return null;})[_0x9f10('0x11')](respondWithResult(_0x9a3ae6,null))[_0x9f10('0x12')](handleError(_0x9a3ae6,null));};exports['show']=function(_0x11cc56,_0xd2950c){return pm2['describe'](_0x11cc56[_0x9f10('0x13')]['id'])['then'](respondWithResult(_0xd2950c,null))[_0x9f10('0x11')](handleEntityNotFound(_0xd2950c,null))['catch'](handleError(_0xd2950c,null));};exports[_0x9f10('0x14')]=function(_0x56fb44,_0x54c262){if(_0x56fb44[_0x9f10('0x15')][_0x9f10('0xa')]&&_0x56fb44[_0x9f10('0x15')][_0x9f10('0x16')]){var _0xa810c=path[_0x9f10('0x17')](__dirname,_0x9f10('0x18'),_0x56fb44['body'][_0x9f10('0x16')]);var _0x58e6ba=process[_0x9f10('0x19')]();process[_0x9f10('0x1a')](path[_0x9f10('0x1b')](_0xa810c));return execChildProcess()['then'](function(_0x2f31fb){process[_0x9f10('0x1a')](_0x58e6ba);return pm2[_0x9f10('0x1c')]({'name':_0x56fb44['body'][_0x9f10('0xa')],'script':_0xa810c});})[_0x9f10('0x11')](function(_0x44b99d){pm2['dump']();return _0x44b99d[0x0];})[_0x9f10('0x11')](respondWithResult(_0x54c262,0xc9))[_0x9f10('0x12')](handleError(_0x54c262,null));}else{return _0x54c262[_0x9f10('0x6')](0x1f4)[_0x9f10('0xb')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports['update']=function(_0x5c1800,_0x385a39){if(_0x5c1800['body']['id']){delete _0x5c1800[_0x9f10('0x15')]['id'];}var _0x1de75a={'online':_0x9f10('0x1d'),'stopped':_0x9f10('0x1e')};if(_0x1de75a[_0x9f10('0x1f')](_0x5c1800['body'][_0x9f10('0x6')])){return pm2[_0x1de75a[_0x5c1800[_0x9f10('0x15')][_0x9f10('0x6')]]](_0x5c1800[_0x9f10('0x13')]['id'])[_0x9f10('0x11')](respondWithResult(_0x385a39,0xc8))[_0x9f10('0x12')](handleError(_0x385a39,null));}else{return _0x385a39['status'](0x1f4)[_0x9f10('0xb')]({'message':_0x9f10('0x20')});}};exports[_0x9f10('0x21')]=function(_0x1b03ee,_0x49b3f4){if(_0x1b03ee[_0x9f10('0x15')]['id']){delete _0x1b03ee[_0x9f10('0x15')]['id'];}if(_0x1b03ee[_0x9f10('0x13')]['id']){return pm2['delete'](_0x1b03ee[_0x9f10('0x13')]['id'])['then'](function(_0x1069ba){pm2[_0x9f10('0x22')]();return _0x1069ba[0x0];})[_0x9f10('0x11')](respondWithResult(_0x49b3f4,null))['catch'](handleError(_0x49b3f4,null));}else{return _0x49b3f4[_0x9f10('0x6')](0x1f4)[_0x9f10('0xb')]({'message':_0x9f10('0x23')});}};
\ No newline at end of file
index fc5956f..bcd71d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf67e=['getAgents','/queues','getQueues','exports','express','../../components/auth/service','get','/agents','isAuthenticated'];(function(_0x29cc9a,_0x3e20ac){var _0x1eab85=function(_0x2d4252){while(--_0x2d4252){_0x29cc9a['push'](_0x29cc9a['shift']());}};_0x1eab85(++_0x3e20ac);}(_0xf67e,0x175));var _0xef67=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0xf67e[_0x465a0c];return _0x1e202e;};'use strict';var express=require(_0xef67('0x0'));var router=express['Router']();var auth=require(_0xef67('0x1'));var controller=require('./realtime.controller');router[_0xef67('0x2')](_0xef67('0x3'),auth[_0xef67('0x4')](),controller[_0xef67('0x5')]);router[_0xef67('0x2')](_0xef67('0x6'),auth[_0xef67('0x4')](),controller[_0xef67('0x7')]);module[_0xef67('0x8')]=router;
\ No newline at end of file
+var _0xb201=['/agents','isAuthenticated','getAgents','/queues','getQueues','exports','express','Router','../../components/auth/service','./realtime.controller','get'];(function(_0x1767f1,_0xbab6a6){var _0x453c2c=function(_0x52a278){while(--_0x52a278){_0x1767f1['push'](_0x1767f1['shift']());}};_0x453c2c(++_0xbab6a6);}(_0xb201,0xb6));var _0x1b20=function(_0x4c1ead,_0x13fc40){_0x4c1ead=_0x4c1ead-0x0;var _0x54b875=_0xb201[_0x4c1ead];return _0x54b875;};'use strict';var express=require(_0x1b20('0x0'));var router=express[_0x1b20('0x1')]();var auth=require(_0x1b20('0x2'));var controller=require(_0x1b20('0x3'));router[_0x1b20('0x4')](_0x1b20('0x5'),auth[_0x1b20('0x6')](),controller[_0x1b20('0x7')]);router[_0x1b20('0x4')](_0x1b20('0x8'),auth[_0x1b20('0x6')](),controller[_0x1b20('0x9')]);module[_0x1b20('0xa')]=router;
\ No newline at end of file
index 650aa0e..e59b1cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53b7=['Channel\x20parameter\x20%s\x20is\x20invalid','toLowerCase','sort','validateSortParameter','fields','join','getAgentIdsByQueues','rows','getSortedAgentsIdsByStatus','getAgentIdsByStatus','length','map','User','fieldName','type','agent','getOptions','raw','sequelize','literal','FIELD(id,','order','forEach','push','Pause','where','merge','user','userProfileId','Agents','online','extraQueryConditions','getResources','findAndCountAll','count','find','filterAgentAttributes','globalStatus','getAgentStatus','voiceStatus','talking','pause','Status','pick','catch','isValidChannel','startCase','Queue','rawAttributes','voice','dialActive','dialMethod','outbound','QueueCampaigns','assign','getRealtimeQueues','initializeQueues','lodash','util','../../components/realtime/agents','../../components/realtime/queues','../../components/parsers/qs','../../config/utils','../../mysqldb','../../errors/api','APIBadRequestError','handleError','offset','undefined','set','Content-Range','getAgents','getChannels','globalStatusFilter','query','pauseTypeFilter','*pause','resolve','then','channel','format'];(function(_0x4348cc,_0x1143d3){var _0x362214=function(_0x3f8b39){while(--_0x3f8b39){_0x4348cc['push'](_0x4348cc['shift']());}};_0x362214(++_0x1143d3);}(_0x53b7,0x17d));var _0x753b=function(_0xc3a63e,_0x23787a){_0xc3a63e=_0xc3a63e-0x0;var _0xcc536c=_0x53b7[_0xc3a63e];return _0xcc536c;};'use strict';var _=require(_0x753b('0x0'));var util=require(_0x753b('0x1'));var rta=require(_0x753b('0x2'));var rtq=require(_0x753b('0x3'));var qs=require(_0x753b('0x4'));var utils=require(_0x753b('0x5'));var db=require(_0x753b('0x6'))['db'];var APIBadRequestError=require(_0x753b('0x7'))[_0x753b('0x8')];var APIHandleError=require(_0x753b('0x7'))[_0x753b('0x9')];function respondWithFilteredResult(_0x2e6c8a,_0x4501b1){return function(_0xecf5ad){if(_0xecf5ad){var _0x4f4e04=typeof _0x4501b1[_0x753b('0xa')]===_0x753b('0xb')&&typeof _0x4501b1['limit']===_0x753b('0xb');var _0x2d4b4f=_0xecf5ad['count'];var _0x24a189=_0x4f4e04?0x0:_0x4501b1['offset'];var _0x29abf3=_0x4f4e04?_0xecf5ad['count']:_0x4501b1[_0x753b('0xa')]+_0x4501b1['limit'];var _0x4a0507;if(_0x29abf3>=_0x2d4b4f){_0x29abf3=_0x2d4b4f;_0x4a0507=0xc8;}else{_0x4a0507=0xce;}_0x2e6c8a['status'](_0x4a0507);return _0x2e6c8a[_0x753b('0xc')](_0x753b('0xd'),_0x24a189+'-'+_0x29abf3+'/'+_0x2d4b4f)['json'](_0xecf5ad);}return null;};}exports[_0x753b('0xe')]=function(_0x276e40,_0x1ed848){var _0x353f90={'count':0x0,'rows':[]};var _0x1c5829={};var _0x2fcf32;var _0x40f410=utils[_0x753b('0xf')]();var _0x1c542c;var _0x355f9e;var _0x5f1cbc=_0x276e40['query']['globalQueueFilter'];var _0x26172d=_0x276e40['query'][_0x753b('0x10')];var _0x1af801=_0x276e40[_0x753b('0x11')][_0x753b('0x12')];var _0xadcaee=_0x26172d==='pause'||_0x26172d===_0x753b('0x13')?!![]:![];var _0x19d286=[];var _0x8e36ff;var _0x5553af;Promise[_0x753b('0x14')]()[_0x753b('0x15')](function(){if(_0x276e40[_0x753b('0x11')][_0x753b('0x16')]){if(!utils['isValidChannel'](_0x276e40[_0x753b('0x11')]['channel'])){throw new APIBadRequestError(util[_0x753b('0x17')](_0x753b('0x18'),_0x276e40[_0x753b('0x11')][_0x753b('0x16')]));}_0x2fcf32=_0x276e40['query'][_0x753b('0x16')][_0x753b('0x19')]();}if(!_0x276e40[_0x753b('0x11')][_0x753b('0x1a')]||!_0x276e40[_0x753b('0x11')]['sort']['includes']('globalStatus')){_0x276e40[_0x753b('0x11')][_0x753b('0x1a')]=rta[_0x753b('0x1b')](_0x276e40[_0x753b('0x11')][_0x753b('0x1a')]);return;}var _0x8395c7=rta['getUpdatedSortOptions'](_0x276e40['query'][_0x753b('0x1a')]);_0x276e40[_0x753b('0x11')]['sort']=_0x8395c7[_0x753b('0x1c')][_0x753b('0x1d')](',');_0x8e36ff=_0x8395c7['order'];})[_0x753b('0x15')](function(){if(!_0x5f1cbc){return[];}return rta[_0x753b('0x1e')](_0x5f1cbc,_0x2fcf32);})[_0x753b('0x15')](function(_0x28b6d7){_0x19d286=_0x28b6d7;return rta['getRealtimeAgents']();})['then'](function(_0x5e0095){_0x355f9e=_0x5e0095[_0x753b('0x1f')];if((!_0x26172d||_0xadcaee)&&!_0x8e36ff){return _0x19d286;}if(_0x8e36ff&&!_0x26172d){return rta[_0x753b('0x20')](_0x355f9e,_0x19d286,_0x8e36ff);}else{return rta[_0x753b('0x21')](_0x355f9e,_0x19d286,_0x26172d);}})[_0x753b('0x15')](function(_0x59ef51){_0x19d286=_0x59ef51;var _0xde0a80=![];if(_0x19d286[_0x753b('0x22')]===0x0){if(_0x5f1cbc||_0x26172d){_0xde0a80=!![];}if(_0xadcaee){_0xde0a80=![];}}if(_0xde0a80){return _0x353f90;}var _0x3af2a6=_[_0x753b('0x23')](db[_0x753b('0x24')]['rawAttributes'],function(_0x1368e6){return{'name':_0x1368e6[_0x753b('0x25')],'type':_0x1368e6[_0x753b('0x26')]['key']};});_0x276e40[_0x753b('0x11')]['role']=_0x753b('0x27');_0x1c5829=qs[_0x753b('0x28')](_0x3af2a6,_0x276e40);_0x1c5829[_0x753b('0x29')]=!![];var _0xdbbd87=[];if(_0x19d286[_0x753b('0x22')]>0x0){_0xdbbd87['push']({'id':{'$in':_0x19d286}});if(_0x8e36ff&&!_0x26172d){_0x5553af=[db[_0x753b('0x2a')][_0x753b('0x2b')](_0x753b('0x2c')+_0x19d286+')')];_0x1c5829[_0x753b('0x2d')]=_0x5553af;}}if(_0xadcaee){_0x40f410[_0x753b('0x2e')](function(_0x3ef351){var _0x4ff54c=!![];if(_0x26172d===_0x753b('0x13')&&_0x2fcf32!==_0x3ef351){_0x4ff54c=![];}_0xdbbd87[_0x753b('0x2f')]({[_0x3ef351+_0x753b('0x30')]:_0x4ff54c});});if(_0x1af801){_0xdbbd87[_0x753b('0x2f')]({'pauseType':_0x1af801});}}else if(_0x26172d){_0x40f410[_0x753b('0x2e')](function(_0x311699){_0xdbbd87['push']({[_0x311699+_0x753b('0x30')]:![]});});}_0x1c5829[_0x753b('0x31')]=_[_0x753b('0x32')](_0x1c5829[_0x753b('0x31')],{'$and':_0xdbbd87});if(_0x276e40['user']['role']==='user'){var _0x304ea3={'params':{'id':_0x276e40[_0x753b('0x33')][_0x753b('0x34')]},'query':{'section':_0x753b('0x35'),'role':_0x753b('0x27'),'raw':!![],'ids':_0x19d286,'customSorting':_0x5553af}};if(_0x276e40[_0x753b('0x11')][_0x753b('0x36')]){_0x304ea3['query']['online']=!![];}if(_0xadcaee){_0x304ea3[_0x753b('0x11')][_0x753b('0x37')]=_0xdbbd87;}_0x304ea3[_0x753b('0x11')]=Object['assign'](_0x304ea3['query'],_0x276e40['query']);return db['UserProfile'][_0x753b('0x38')](_0x304ea3);}return db[_0x753b('0x24')][_0x753b('0x39')](_0x1c5829);})[_0x753b('0x15')](function(_0x3de2a6){_0x353f90[_0x753b('0x3a')]=_0x3de2a6['count'];_0x1c542c=_0x3de2a6['rows'];return _0x1c542c['map'](function(_0x530847){var _0x445364=_[_0x753b('0x3b')](_0x355f9e,['id',_0x530847['id']]);if(_0x445364){var _0x43da75=rta[_0x753b('0x3c')](_0x445364);_[_0x753b('0x32')](_0x530847,_0x43da75);}_0x530847[_0x753b('0x3d')]=rta[_0x753b('0x3e')](_0x530847);if(_0x530847[_0x753b('0x3d')]['includes']('pause')){_0x40f410[_0x753b('0x2e')](function(_0x33423a){if(_0x530847[_0x33423a+_0x753b('0x30')]){if(_0x33423a==='voice'){if(_0x530847[_0x753b('0x3f')]!==_0x753b('0x40')){_0x530847[_0x753b('0x3f')]=_0x753b('0x41');}}else{_0x530847[_0x33423a+_0x753b('0x42')]=_0x753b('0x41');}}});}return _0x530847;});})[_0x753b('0x15')](function(_0x45902a){if(!_0x8e36ff||_0x5553af){return _0x45902a;}return rta['sortAgentsByStatus'](_0x45902a,_0x8e36ff);})['then'](function(_0xb152c8){var _0x37980f=rta['getRealtimeAgentsQueryFields']();_0x353f90[_0x753b('0x1f')]=_0xb152c8[_0x753b('0x23')](function(_0x17a011){return _[_0x753b('0x43')](_0x17a011,_0x37980f);});return _0x353f90;})[_0x753b('0x15')](respondWithFilteredResult(_0x1ed848,_0x1c5829))[_0x753b('0x44')](APIHandleError(_0x1ed848));};exports['getQueues']=function(_0x5da44a,_0xf49751){var _0x34e1bb={'count':0x0,'rows':[]};var _0x49ded3={};var _0x4e7a12;var _0x1beac5;var _0x267a15;Promise[_0x753b('0x14')]()['then'](function(){if(_0x5da44a[_0x753b('0x11')]['channel']){if(!utils[_0x753b('0x45')](_0x5da44a[_0x753b('0x11')][_0x753b('0x16')])){throw new APIBadRequestError(util[_0x753b('0x17')](_0x753b('0x18'),_0x5da44a['query']['channel']));}_0x4e7a12=_0x5da44a[_0x753b('0x11')][_0x753b('0x16')][_0x753b('0x19')]();}var _0x408b24=_[_0x753b('0x46')](_0x4e7a12)+_0x753b('0x47');var _0xf0aeac=_[_0x753b('0x23')](db[_0x408b24][_0x753b('0x48')],function(_0x28f07f){return{'name':_0x28f07f[_0x753b('0x25')],'type':_0x28f07f[_0x753b('0x26')]['key']};});if(!_0x5da44a[_0x753b('0x11')][_0x753b('0x1c')]){var _0x5397f5=['id','name'];if(_0x4e7a12===_0x753b('0x49')){_0x5397f5[_0x753b('0x2f')](_0x753b('0x26'));if(_0x5da44a['query']['type']==='outbound'){_0x5397f5[_0x753b('0x2f')]([_0x753b('0x4a'),_0x753b('0x4b')]);}}_0x5da44a[_0x753b('0x11')][_0x753b('0x1c')]=_0x5397f5[_0x753b('0x1d')](',');}_0x49ded3=qs[_0x753b('0x28')](_0xf0aeac,_0x5da44a);if(_0x5da44a['user']['role']==='user'){var _0x3aefcb={'params':{'id':_0x5da44a['user'][_0x753b('0x34')]},'query':{'section':_0x4e7a12===_0x753b('0x49')&&_0x5da44a[_0x753b('0x11')][_0x753b('0x26')]===_0x753b('0x4c')?_0x753b('0x4d'):_[_0x753b('0x46')](_0x4e7a12)+'Queues','type':_0x5da44a[_0x753b('0x11')][_0x753b('0x26')],'nolimit':!![],'sort':'name','filter':_0x5da44a[_0x753b('0x11')]['filter']}};_0x3aefcb['query']=Object[_0x753b('0x4e')](_0x3aefcb[_0x753b('0x11')],_0x5da44a[_0x753b('0x11')]);delete _0x3aefcb[_0x753b('0x11')]['id'];return db['UserProfile'][_0x753b('0x38')](_0x3aefcb);}return db[_0x408b24][_0x753b('0x39')](_0x49ded3);})[_0x753b('0x15')](function(_0x5eb184){_0x34e1bb[_0x753b('0x3a')]=_0x5eb184[_0x753b('0x3a')];_0x1beac5=_0x5eb184[_0x753b('0x1f')];return rtq[_0x753b('0x4f')](_0x5da44a,_0x4e7a12);})[_0x753b('0x15')](function(_0x9e9f49){_0x267a15=_0x9e9f49[_0x753b('0x1f')];return rtq[_0x753b('0x50')](_0x1beac5,_0x267a15,_0x4e7a12,_0x5da44a[_0x753b('0x11')]['type']);})[_0x753b('0x15')](function(_0x15c261){_0x34e1bb[_0x753b('0x1f')]=_0x15c261;return _0x34e1bb;})[_0x753b('0x15')](respondWithFilteredResult(_0xf49751,_0x49ded3))[_0x753b('0x44')](APIHandleError(_0xf49751));};
\ No newline at end of file
+var _0xb4ab=['literal','FIELD(id,','order','forEach','Pause','where','merge','user','userProfileId','Agents','online','assign','UserProfile','getResources','rows','find','filterAgentAttributes','getAgentStatus','includes','voice','voiceStatus','talking','Status','sortAgentsByStatus','getRealtimeAgentsQueryFields','catch','getQueues','resolve','startCase','Queue','outbound','dialMethod','QueueCampaigns','Queues','filter','getRealtimeQueues','util','../../components/realtime/agents','../../components/realtime/queues','../../components/parsers/qs','../../config/utils','../../errors/api','APIBadRequestError','handleError','undefined','limit','count','offset','status','set','json','getChannels','globalQueueFilter','query','globalStatusFilter','pause','*pause','channel','isValidChannel','format','Channel\x20parameter\x20%s\x20is\x20invalid','toLowerCase','sort','globalStatus','validateSortParameter','getUpdatedSortOptions','fields','join','then','getAgentIdsByQueues','getRealtimeAgents','getSortedAgentsIdsByStatus','getAgentIdsByStatus','length','map','rawAttributes','fieldName','type','key','role','agent','getOptions','raw','push','sequelize'];(function(_0x48999d,_0x1e02cb){var _0x1ad0d1=function(_0x3f974e){while(--_0x3f974e){_0x48999d['push'](_0x48999d['shift']());}};_0x1ad0d1(++_0x1e02cb);}(_0xb4ab,0x1cd));var _0xbb4a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb4ab[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0xbb4a('0x0'));var rta=require(_0xbb4a('0x1'));var rtq=require(_0xbb4a('0x2'));var qs=require(_0xbb4a('0x3'));var utils=require(_0xbb4a('0x4'));var db=require('../../mysqldb')['db'];var APIBadRequestError=require(_0xbb4a('0x5'))[_0xbb4a('0x6')];var APIHandleError=require('../../errors/api')[_0xbb4a('0x7')];function respondWithFilteredResult(_0x1fa9dc,_0x41e7b5){return function(_0xa8654){if(_0xa8654){var _0x210cbb=typeof _0x41e7b5['offset']===_0xbb4a('0x8')&&typeof _0x41e7b5[_0xbb4a('0x9')]===_0xbb4a('0x8');var _0x19ef0e=_0xa8654[_0xbb4a('0xa')];var _0x489a50=_0x210cbb?0x0:_0x41e7b5[_0xbb4a('0xb')];var _0x261040=_0x210cbb?_0xa8654[_0xbb4a('0xa')]:_0x41e7b5[_0xbb4a('0xb')]+_0x41e7b5['limit'];var _0x5e150f;if(_0x261040>=_0x19ef0e){_0x261040=_0x19ef0e;_0x5e150f=0xc8;}else{_0x5e150f=0xce;}_0x1fa9dc[_0xbb4a('0xc')](_0x5e150f);return _0x1fa9dc[_0xbb4a('0xd')]('Content-Range',_0x489a50+'-'+_0x261040+'/'+_0x19ef0e)[_0xbb4a('0xe')](_0xa8654);}return null;};}exports['getAgents']=function(_0x4d5d7d,_0x183ecc){var _0x1f71f9={'count':0x0,'rows':[]};var _0x26e640={};var _0xf02b4b;var _0x2427f5=utils[_0xbb4a('0xf')]();var _0x52201e;var _0xc84b98;var _0x45c91f=_0x4d5d7d['query'][_0xbb4a('0x10')];var _0x33c9b1=_0x4d5d7d[_0xbb4a('0x11')][_0xbb4a('0x12')];var _0x1d2e82=_0x4d5d7d[_0xbb4a('0x11')]['pauseTypeFilter'];var _0x1251f9=_0x33c9b1===_0xbb4a('0x13')||_0x33c9b1===_0xbb4a('0x14')?!![]:![];var _0x37eb4d=[];var _0x16bbc4;var _0x6cbd5c;Promise['resolve']()['then'](function(){if(_0x4d5d7d[_0xbb4a('0x11')][_0xbb4a('0x15')]){if(!utils[_0xbb4a('0x16')](_0x4d5d7d[_0xbb4a('0x11')][_0xbb4a('0x15')])){throw new APIBadRequestError(util[_0xbb4a('0x17')](_0xbb4a('0x18'),_0x4d5d7d[_0xbb4a('0x11')]['channel']));}_0xf02b4b=_0x4d5d7d[_0xbb4a('0x11')]['channel'][_0xbb4a('0x19')]();}if(!_0x4d5d7d[_0xbb4a('0x11')][_0xbb4a('0x1a')]||!_0x4d5d7d['query'][_0xbb4a('0x1a')]['includes'](_0xbb4a('0x1b'))){_0x4d5d7d[_0xbb4a('0x11')]['sort']=rta[_0xbb4a('0x1c')](_0x4d5d7d['query'][_0xbb4a('0x1a')]);return;}var _0x5a37db=rta[_0xbb4a('0x1d')](_0x4d5d7d[_0xbb4a('0x11')][_0xbb4a('0x1a')]);_0x4d5d7d[_0xbb4a('0x11')][_0xbb4a('0x1a')]=_0x5a37db[_0xbb4a('0x1e')][_0xbb4a('0x1f')](',');_0x16bbc4=_0x5a37db['order'];})[_0xbb4a('0x20')](function(){if(!_0x45c91f){return[];}return rta[_0xbb4a('0x21')](_0x45c91f,_0xf02b4b);})[_0xbb4a('0x20')](function(_0x39ee55){_0x37eb4d=_0x39ee55;return rta[_0xbb4a('0x22')]();})[_0xbb4a('0x20')](function(_0x1f0516){_0xc84b98=_0x1f0516['rows'];if((!_0x33c9b1||_0x1251f9)&&!_0x16bbc4){return _0x37eb4d;}if(_0x16bbc4&&!_0x33c9b1){return rta[_0xbb4a('0x23')](_0xc84b98,_0x37eb4d,_0x16bbc4);}else{return rta[_0xbb4a('0x24')](_0xc84b98,_0x37eb4d,_0x33c9b1);}})[_0xbb4a('0x20')](function(_0x5f5489){_0x37eb4d=_0x5f5489;var _0x17fba8=![];if(_0x37eb4d[_0xbb4a('0x25')]===0x0){if(_0x45c91f||_0x33c9b1){_0x17fba8=!![];}if(_0x1251f9){_0x17fba8=![];}}if(_0x17fba8){return _0x1f71f9;}var _0x34c251=_[_0xbb4a('0x26')](db['User'][_0xbb4a('0x27')],function(_0x439e9e){return{'name':_0x439e9e[_0xbb4a('0x28')],'type':_0x439e9e[_0xbb4a('0x29')][_0xbb4a('0x2a')]};});_0x4d5d7d[_0xbb4a('0x11')][_0xbb4a('0x2b')]=_0xbb4a('0x2c');_0x26e640=qs[_0xbb4a('0x2d')](_0x34c251,_0x4d5d7d);_0x26e640[_0xbb4a('0x2e')]=!![];var _0x33060d=[];if(_0x37eb4d['length']>0x0){_0x33060d[_0xbb4a('0x2f')]({'id':{'$in':_0x37eb4d}});if(_0x16bbc4&&!_0x33c9b1){_0x6cbd5c=[db[_0xbb4a('0x30')][_0xbb4a('0x31')](_0xbb4a('0x32')+_0x37eb4d+')')];_0x26e640[_0xbb4a('0x33')]=_0x6cbd5c;}}if(_0x1251f9){_0x2427f5[_0xbb4a('0x34')](function(_0x4d511f){var _0x983bd1=!![];if(_0x33c9b1===_0xbb4a('0x14')&&_0xf02b4b!==_0x4d511f){_0x983bd1=![];}_0x33060d[_0xbb4a('0x2f')]({[_0x4d511f+'Pause']:_0x983bd1});});if(_0x1d2e82){_0x33060d[_0xbb4a('0x2f')]({'pauseType':_0x1d2e82});}}else if(_0x33c9b1){_0x2427f5[_0xbb4a('0x34')](function(_0x3add75){_0x33060d['push']({[_0x3add75+_0xbb4a('0x35')]:![]});});}_0x26e640[_0xbb4a('0x36')]=_[_0xbb4a('0x37')](_0x26e640[_0xbb4a('0x36')],{'$and':_0x33060d});if(_0x4d5d7d['user'][_0xbb4a('0x2b')]===_0xbb4a('0x38')){var _0x370a55={'params':{'id':_0x4d5d7d[_0xbb4a('0x38')][_0xbb4a('0x39')]},'query':{'section':_0xbb4a('0x3a'),'role':'agent','raw':!![],'ids':_0x37eb4d,'customSorting':_0x6cbd5c}};if(_0x4d5d7d[_0xbb4a('0x11')]['online']){_0x370a55[_0xbb4a('0x11')][_0xbb4a('0x3b')]=!![];}if(_0x1251f9){_0x370a55[_0xbb4a('0x11')]['extraQueryConditions']=_0x33060d;}_0x370a55['query']=Object[_0xbb4a('0x3c')](_0x370a55[_0xbb4a('0x11')],_0x4d5d7d[_0xbb4a('0x11')]);return db[_0xbb4a('0x3d')][_0xbb4a('0x3e')](_0x370a55);}return db['User']['findAndCountAll'](_0x26e640);})['then'](function(_0x5ace09){_0x1f71f9['count']=_0x5ace09[_0xbb4a('0xa')];_0x52201e=_0x5ace09[_0xbb4a('0x3f')];return _0x52201e[_0xbb4a('0x26')](function(_0x3b1850){var _0x55da96=_[_0xbb4a('0x40')](_0xc84b98,['id',_0x3b1850['id']]);if(_0x55da96){var _0x59d7fe=rta[_0xbb4a('0x41')](_0x55da96);_[_0xbb4a('0x37')](_0x3b1850,_0x59d7fe);}_0x3b1850[_0xbb4a('0x1b')]=rta[_0xbb4a('0x42')](_0x3b1850);if(_0x3b1850[_0xbb4a('0x1b')][_0xbb4a('0x43')](_0xbb4a('0x13'))){_0x2427f5[_0xbb4a('0x34')](function(_0x4b936e){if(_0x3b1850[_0x4b936e+_0xbb4a('0x35')]){if(_0x4b936e===_0xbb4a('0x44')){if(_0x3b1850[_0xbb4a('0x45')]!==_0xbb4a('0x46')){_0x3b1850[_0xbb4a('0x45')]='pause';}}else{_0x3b1850[_0x4b936e+_0xbb4a('0x47')]=_0xbb4a('0x13');}}});}return _0x3b1850;});})[_0xbb4a('0x20')](function(_0x3ede8c){if(!_0x16bbc4||_0x6cbd5c){return _0x3ede8c;}return rta[_0xbb4a('0x48')](_0x3ede8c,_0x16bbc4);})[_0xbb4a('0x20')](function(_0x55518d){var _0x1bdec3=rta[_0xbb4a('0x49')]();_0x1f71f9[_0xbb4a('0x3f')]=_0x55518d[_0xbb4a('0x26')](function(_0x313e53){return _['pick'](_0x313e53,_0x1bdec3);});return _0x1f71f9;})[_0xbb4a('0x20')](respondWithFilteredResult(_0x183ecc,_0x26e640))[_0xbb4a('0x4a')](APIHandleError(_0x183ecc));};exports[_0xbb4a('0x4b')]=function(_0x3fe5c1,_0x57e156){var _0x2a7941={'count':0x0,'rows':[]};var _0x425fd2={};var _0x3c2900;var _0x303efc;var _0xdbef4d;Promise[_0xbb4a('0x4c')]()['then'](function(){if(_0x3fe5c1[_0xbb4a('0x11')][_0xbb4a('0x15')]){if(!utils['isValidChannel'](_0x3fe5c1[_0xbb4a('0x11')][_0xbb4a('0x15')])){throw new APIBadRequestError(util['format'](_0xbb4a('0x18'),_0x3fe5c1[_0xbb4a('0x11')][_0xbb4a('0x15')]));}_0x3c2900=_0x3fe5c1[_0xbb4a('0x11')][_0xbb4a('0x15')][_0xbb4a('0x19')]();}var _0x3a6661=_[_0xbb4a('0x4d')](_0x3c2900)+_0xbb4a('0x4e');var _0x22dce8=_['map'](db[_0x3a6661][_0xbb4a('0x27')],function(_0x4980a9){return{'name':_0x4980a9[_0xbb4a('0x28')],'type':_0x4980a9[_0xbb4a('0x29')]['key']};});if(!_0x3fe5c1[_0xbb4a('0x11')][_0xbb4a('0x1e')]){var _0x59d9f4=['id','name'];if(_0x3c2900==='voice'){_0x59d9f4['push'](_0xbb4a('0x29'));if(_0x3fe5c1[_0xbb4a('0x11')][_0xbb4a('0x29')]===_0xbb4a('0x4f')){_0x59d9f4['push'](['dialActive',_0xbb4a('0x50')]);}}_0x3fe5c1[_0xbb4a('0x11')]['fields']=_0x59d9f4[_0xbb4a('0x1f')](',');}_0x425fd2=qs[_0xbb4a('0x2d')](_0x22dce8,_0x3fe5c1);if(_0x3fe5c1[_0xbb4a('0x38')][_0xbb4a('0x2b')]===_0xbb4a('0x38')){var _0x2d1f41={'params':{'id':_0x3fe5c1[_0xbb4a('0x38')][_0xbb4a('0x39')]},'query':{'section':_0x3c2900==='voice'&&_0x3fe5c1['query'][_0xbb4a('0x29')]===_0xbb4a('0x4f')?_0xbb4a('0x51'):_[_0xbb4a('0x4d')](_0x3c2900)+_0xbb4a('0x52'),'type':_0x3fe5c1[_0xbb4a('0x11')][_0xbb4a('0x29')],'nolimit':!![],'sort':'name','filter':_0x3fe5c1[_0xbb4a('0x11')][_0xbb4a('0x53')]}};_0x2d1f41['query']=Object[_0xbb4a('0x3c')](_0x2d1f41[_0xbb4a('0x11')],_0x3fe5c1['query']);delete _0x2d1f41['query']['id'];return db[_0xbb4a('0x3d')][_0xbb4a('0x3e')](_0x2d1f41);}return db[_0x3a6661]['findAndCountAll'](_0x425fd2);})['then'](function(_0x10cddc){_0x2a7941['count']=_0x10cddc[_0xbb4a('0xa')];_0x303efc=_0x10cddc[_0xbb4a('0x3f')];return rtq[_0xbb4a('0x54')](_0x3fe5c1,_0x3c2900);})[_0xbb4a('0x20')](function(_0x1d6b98){_0xdbef4d=_0x1d6b98[_0xbb4a('0x3f')];return rtq['initializeQueues'](_0x303efc,_0xdbef4d,_0x3c2900,_0x3fe5c1['query'][_0xbb4a('0x29')]);})[_0xbb4a('0x20')](function(_0x53abaa){_0x2a7941[_0xbb4a('0x3f')]=_0x53abaa;return _0x2a7941;})[_0xbb4a('0x20')](respondWithFilteredResult(_0x57e156,_0x425fd2))[_0xbb4a('0x4a')](APIHandleError(_0x57e156));};
\ No newline at end of file
index 0bbe23b..a5611c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x1b593d,_0xceeaa4){var _0x4285b3=function(_0x3ace01){while(--_0x3ace01){_0x1b593d['push'](_0x1b593d['shift']());}};_0x4285b3(++_0xceeaa4);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x102977,_0x3a99a6){_0x102977=_0x102977-0x0;var _0x15c466=_0xcb91[_0x102977];return _0x15c466;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x1cb9('0x0'));var timeout=require(_0x1cb9('0x1'));var express=require(_0x1cb9('0x2'));var router=express[_0x1cb9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1cb9('0x4'));var interaction=require(_0x1cb9('0x5'));var config=require('../../config/environment');module[_0x1cb9('0x6')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x3b3e58,_0xede0e5){var _0x339573=function(_0x55b3a7){while(--_0x55b3a7){_0x3b3e58['push'](_0x3b3e58['shift']());}};_0x339573(++_0xede0e5);}(_0xe706,0xa3));var _0x6e70=function(_0x292bab,_0x18b725){_0x292bab=_0x292bab-0x0;var _0x3a1de1=_0xe706[_0x292bab];return _0x3a1de1;};'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 3eae22e..4af89fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab36=['exports','INTEGER','STRING','DATE','sequelize'];(function(_0x3f3fd8,_0x4a9ad8){var _0x38194c=function(_0x309022){while(--_0x309022){_0x3f3fd8['push'](_0x3f3fd8['shift']());}};_0x38194c(++_0x4a9ad8);}(_0xab36,0x1df));var _0x6ab3=function(_0x150201,_0x5b5389){_0x150201=_0x150201-0x0;var _0xfbac86=_0xab36[_0x150201];return _0xfbac86;};'use strict';var Sequelize=require(_0x6ab3('0x0'));module[_0x6ab3('0x1')]={'state':{'type':Sequelize[_0x6ab3('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x6ab3('0x3')]},'scheduledat':{'type':Sequelize[_0x6ab3('0x4')]},'uniqueid':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x6ab3('0x4')]},'responsetime':{'type':Sequelize[_0x6ab3('0x4')]},'ringtime':{'type':Sequelize[_0x6ab3('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x6ab3('0x3')]},'membername':{'type':Sequelize[_0x6ab3('0x3')]}};
\ No newline at end of file
+var _0x02ca=['INTEGER','STRING','DATE','sequelize'];(function(_0xd812c2,_0x1bde7d){var _0x566d20=function(_0x46918d){while(--_0x46918d){_0xd812c2['push'](_0xd812c2['shift']());}};_0x566d20(++_0x1bde7d);}(_0x02ca,0x97));var _0xa02c=function(_0x468e19,_0x5ab820){_0x468e19=_0x468e19-0x0;var _0x28777d=_0x02ca[_0x468e19];return _0x28777d;};'use strict';var Sequelize=require(_0xa02c('0x0'));module['exports']={'state':{'type':Sequelize[_0xa02c('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xa02c('0x2')]},'scheduledat':{'type':Sequelize[_0xa02c('0x3')]},'uniqueid':{'type':Sequelize[_0xa02c('0x2')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0xa02c('0x3')]},'ringtime':{'type':Sequelize[_0xa02c('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xa02c('0x2')]},'campaigntype':{'type':Sequelize[_0xa02c('0x2')]},'membername':{'type':Sequelize[_0xa02c('0x2')]}};
\ No newline at end of file
index ef7679d..a0cb649 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bd0=['define','ReportAgentPreview','report_agent_preview','lodash','util','../../config/logger','api','moment','bluebird','rimraf','./reportAgentPreview.attributes','exports'];(function(_0x1c98dd,_0x314f9e){var _0x23b146=function(_0x111ed8){while(--_0x111ed8){_0x1c98dd['push'](_0x1c98dd['shift']());}};_0x23b146(++_0x314f9e);}(_0x9bd0,0x1cb));var _0x09bd=function(_0x392424,_0x5c3b81){_0x392424=_0x392424-0x0;var _0x5c08db=_0x9bd0[_0x392424];return _0x5c08db;};'use strict';var _=require(_0x09bd('0x0'));var util=require(_0x09bd('0x1'));var logger=require(_0x09bd('0x2'))(_0x09bd('0x3'));var moment=require(_0x09bd('0x4'));var BPromise=require(_0x09bd('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x09bd('0x6'));var config=require('../../config/environment');var attributes=require(_0x09bd('0x7'));module[_0x09bd('0x8')]=function(_0x4f4437,_0x152899){return _0x4f4437[_0x09bd('0x9')](_0x09bd('0xa'),attributes,{'tableName':_0x09bd('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x03d8=['api','moment','bluebird','request-promise','path','../../config/environment','exports','define','report_agent_preview','lodash','util','../../config/logger'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x03d8,0x105));var _0x803d=function(_0x386474,_0xa64af2){_0x386474=_0x386474-0x0;var _0xc4737c=_0x03d8[_0x386474];return _0xc4737c;};'use strict';var _=require(_0x803d('0x0'));var util=require(_0x803d('0x1'));var logger=require(_0x803d('0x2'))(_0x803d('0x3'));var moment=require(_0x803d('0x4'));var BPromise=require(_0x803d('0x5'));var rp=require(_0x803d('0x6'));var fs=require('fs');var path=require(_0x803d('0x7'));var rimraf=require('rimraf');var config=require(_0x803d('0x8'));var attributes=require('./reportAgentPreview.attributes');module[_0x803d('0x9')]=function(_0x18cd07,_0x2f6efc){return _0x18cd07[_0x803d('0xa')]('ReportAgentPreview',attributes,{'tableName':_0x803d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4468114..4421ede 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90a1=['error','code','message','ReportAgentPreview,\x20%s,\x20%s','catch','ReportAgentPreview','create','body','options','raw','CreateReportAgentPreview','debug','stringify','lodash','util','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','ReportAgentPreview,\x20%s,\x20%s,\x20%s'];(function(_0x4f3b2d,_0x3bbf46){var _0x3dddfa=function(_0xb8179a){while(--_0xb8179a){_0x4f3b2d['push'](_0x4f3b2d['shift']());}};_0x3dddfa(++_0x3bbf46);}(_0x90a1,0xd1));var _0x190a=function(_0x5a776b,_0x46f785){_0x5a776b=_0x5a776b-0x0;var _0xbbef59=_0x90a1[_0x5a776b];return _0xbbef59;};'use strict';var _=require(_0x190a('0x0'));var util=require(_0x190a('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x190a('0x2'));var fs=require('fs');var Redis=require(_0x190a('0x3'));var db=require(_0x190a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x190a('0x5'))(_0x190a('0x6'));var config=require(_0x190a('0x7'));var jayson=require(_0x190a('0x8'));var client=jayson['client'][_0x190a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x57e352,_0x597b45,_0x294220){return new BPromise(function(_0x3d72df,_0x4aef2c){return client[_0x190a('0xa')](_0x57e352,_0x294220)[_0x190a('0xb')](function(_0x2bdd94){logger[_0x190a('0xc')]('ReportAgentPreview,\x20%s,\x20%s',_0x597b45,_0x190a('0xd'));logger['debug'](_0x190a('0xe'),_0x597b45,'request\x20sent',JSON['stringify'](_0x2bdd94));if(_0x2bdd94[_0x190a('0xf')]){if(_0x2bdd94['error'][_0x190a('0x10')]===0x1f4){logger['error']('ReportAgentPreview,\x20%s,\x20%s',_0x597b45,_0x2bdd94[_0x190a('0xf')][_0x190a('0x11')]);return _0x4aef2c(_0x2bdd94[_0x190a('0xf')][_0x190a('0x11')]);}logger[_0x190a('0xf')](_0x190a('0x12'),_0x597b45,_0x2bdd94[_0x190a('0xf')]['message']);return _0x3d72df(_0x2bdd94[_0x190a('0xf')]['message']);}else{logger['info']('ReportAgentPreview,\x20%s,\x20%s',_0x597b45,_0x190a('0xd'));_0x3d72df(_0x2bdd94['result'][_0x190a('0x11')]);}})[_0x190a('0x13')](function(_0x1b4a5b){logger[_0x190a('0xf')](_0x190a('0x12'),_0x597b45,_0x1b4a5b);_0x4aef2c(_0x1b4a5b);});});}exports['CreateReportAgentPreview']=function(_0x47ccba){var _0x16ec02=this;return new Promise(function(_0x13a8b0,_0xb8b3c1){return db[_0x190a('0x14')][_0x190a('0x15')](_0x47ccba[_0x190a('0x16')],{'raw':_0x47ccba[_0x190a('0x17')]?_0x47ccba[_0x190a('0x17')][_0x190a('0x18')]===undefined?!![]:![]:!![]})[_0x190a('0xb')](function(_0x3fd997){logger[_0x190a('0xc')](_0x190a('0x19'),_0x47ccba);logger[_0x190a('0x1a')](_0x190a('0x19'),_0x47ccba,JSON[_0x190a('0x1b')](_0x3fd997));_0x13a8b0(_0x3fd997);})[_0x190a('0x13')](function(_0x576ea9){logger[_0x190a('0xf')](_0x190a('0x19'),_0x576ea9[_0x190a('0x11')],_0x47ccba);_0xb8b3c1(_0x16ec02[_0x190a('0xf')](0x1f4,_0x576ea9[_0x190a('0x11')]));});});};
\ No newline at end of file
+var _0xb982=['catch','ReportAgentPreview','body','options','raw','CreateReportAgentPreview','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','debug','request\x20sent','stringify','error','ReportAgentPreview,\x20%s,\x20%s','message','result'];(function(_0x4c6977,_0x3ae478){var _0x53803c=function(_0x2793b2){while(--_0x2793b2){_0x4c6977['push'](_0x4c6977['shift']());}};_0x53803c(++_0x3ae478);}(_0xb982,0x12f));var _0x2b98=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xb982[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x2b98('0x0'));var util=require(_0x2b98('0x1'));var moment=require(_0x2b98('0x2'));var BPromise=require(_0x2b98('0x3'));var rs=require(_0x2b98('0x4'));var fs=require('fs');var Redis=require(_0x2b98('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2b98('0x6'))(_0x2b98('0x7'));var config=require(_0x2b98('0x8'));var jayson=require(_0x2b98('0x9'));var client=jayson[_0x2b98('0xa')][_0x2b98('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5c0c11,_0x32b52c,_0x213ab3){return new BPromise(function(_0x30f805,_0x3ad4d2){return client['request'](_0x5c0c11,_0x213ab3)[_0x2b98('0xc')](function(_0x450c21){logger[_0x2b98('0xd')]('ReportAgentPreview,\x20%s,\x20%s',_0x32b52c,'request\x20sent');logger[_0x2b98('0xe')]('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0x32b52c,_0x2b98('0xf'),JSON[_0x2b98('0x10')](_0x450c21));if(_0x450c21['error']){if(_0x450c21['error']['code']===0x1f4){logger[_0x2b98('0x11')](_0x2b98('0x12'),_0x32b52c,_0x450c21['error'][_0x2b98('0x13')]);return _0x3ad4d2(_0x450c21['error'][_0x2b98('0x13')]);}logger[_0x2b98('0x11')](_0x2b98('0x12'),_0x32b52c,_0x450c21['error'][_0x2b98('0x13')]);return _0x30f805(_0x450c21[_0x2b98('0x11')]['message']);}else{logger[_0x2b98('0xd')]('ReportAgentPreview,\x20%s,\x20%s',_0x32b52c,_0x2b98('0xf'));_0x30f805(_0x450c21[_0x2b98('0x14')][_0x2b98('0x13')]);}})[_0x2b98('0x15')](function(_0x67e49c){logger[_0x2b98('0x11')]('ReportAgentPreview,\x20%s,\x20%s',_0x32b52c,_0x67e49c);_0x3ad4d2(_0x67e49c);});});}exports['CreateReportAgentPreview']=function(_0x46fe85){var _0x24f6b9=this;return new Promise(function(_0x2a8989,_0x41e365){return db[_0x2b98('0x16')]['create'](_0x46fe85[_0x2b98('0x17')],{'raw':_0x46fe85[_0x2b98('0x18')]?_0x46fe85[_0x2b98('0x18')][_0x2b98('0x19')]===undefined?!![]:![]:!![]})[_0x2b98('0xc')](function(_0x64c91f){logger[_0x2b98('0xd')]('CreateReportAgentPreview',_0x46fe85);logger[_0x2b98('0xe')]('CreateReportAgentPreview',_0x46fe85,JSON[_0x2b98('0x10')](_0x64c91f));_0x2a8989(_0x64c91f);})[_0x2b98('0x15')](function(_0x152130){logger['error'](_0x2b98('0x1a'),_0x152130[_0x2b98('0x13')],_0x46fe85);_0x41e365(_0x24f6b9[_0x2b98('0x11')](0x1f4,_0x152130[_0x2b98('0x13')]));});});};
\ No newline at end of file
index e5672f3..f53eac9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a8=['/whatsapp/queues','whatsappQueues','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelRedirect','/voice/queues/:id','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents','agents','put','agentCapacity','/telephones','/trunks','trunks','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','openchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','mail','showMailQueues','/chat/queues/:id/notify','queueNotify','chat','/chat/queues/:id','/fax/queues/:id/notify','fax','/fax/queues/:id','/openchannel/queues/:id/notify','/openchannel/queues/:id','/sms/queues/:id/notify','sms','whatsapp','/sms/queues/:id','showWhatsappQueues','/agents/:id/notify','exports','util','path','Router','./rpc.controller','get','isAuthenticated','voiceChannels','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','chatQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','smsQueues'];(function(_0x13b330,_0x297092){var _0x1f666c=function(_0x5ebc84){while(--_0x5ebc84){_0x13b330['push'](_0x13b330['shift']());}};_0x1f666c(++_0x297092);}(_0x14a8,0x15f));var _0x814a=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x14a8[_0x126558];return _0x1f6d14;};'use strict';var multer=require('multer');var util=require(_0x814a('0x0'));var path=require(_0x814a('0x1'));var express=require('express');var router=express[_0x814a('0x2')]();var auth=require('../../components/auth/service');var controller=require(_0x814a('0x3'));router[_0x814a('0x4')]('/voice/channels',auth[_0x814a('0x5')](),controller[_0x814a('0x6')]);router[_0x814a('0x4')](_0x814a('0x7'),auth[_0x814a('0x5')](),controller[_0x814a('0x8')]);router[_0x814a('0x4')]('/voice/channels/:uniqueid/stopmixmonitor',auth['isAuthenticated'](),controller[_0x814a('0x9')]);router[_0x814a('0x4')](_0x814a('0xa'),auth['isAuthenticated'](),controller[_0x814a('0xb')]);router['get']('/chat/queues',auth[_0x814a('0x5')](),controller[_0x814a('0xc')]);router[_0x814a('0x4')]('/mail/queues',auth[_0x814a('0x5')](),controller['mailQueues']);router['get'](_0x814a('0xd'),auth[_0x814a('0x5')](),controller[_0x814a('0xe')]);router['get'](_0x814a('0xf'),auth['isAuthenticated'](),controller[_0x814a('0x10')]);router[_0x814a('0x4')](_0x814a('0x11'),auth[_0x814a('0x5')](),controller[_0x814a('0x12')]);router[_0x814a('0x4')](_0x814a('0x13'),auth[_0x814a('0x5')](),controller[_0x814a('0x14')]);router[_0x814a('0x4')]('/fax/queues',auth[_0x814a('0x5')](),controller['faxQueues']);router[_0x814a('0x4')]('/voice/queues/preview/:id',auth[_0x814a('0x5')](),controller[_0x814a('0x15')]);router[_0x814a('0x4')](_0x814a('0x16'),auth[_0x814a('0x5')](),controller[_0x814a('0x17')]);router[_0x814a('0x4')](_0x814a('0x18'),auth[_0x814a('0x5')](),controller['voiceQueuesChannel']);router[_0x814a('0x4')](_0x814a('0x19'),auth[_0x814a('0x5')](),controller['voiceQueuesChannelHangup']);router[_0x814a('0x4')]('/voice/queues/channels/:uniqueid/redirect/:exten',auth[_0x814a('0x5')](),controller[_0x814a('0x1a')]);router['get']('/voice/queues/:id',auth[_0x814a('0x5')](),controller['showVoiceQueues']);router['put'](_0x814a('0x1b'),auth['isAuthenticated'](),controller[_0x814a('0x1c')]);router[_0x814a('0x4')](_0x814a('0x1d'),auth[_0x814a('0x5')](),controller[_0x814a('0x1e')]);router['get'](_0x814a('0x1f'),auth['isAuthenticated'](),controller[_0x814a('0x20')]);router[_0x814a('0x4')](_0x814a('0x21'),auth['isAuthenticated'](),controller[_0x814a('0x22')]);router[_0x814a('0x23')]('/agents/:id/capacity',auth['isAuthenticated'](),controller[_0x814a('0x24')]);router[_0x814a('0x4')](_0x814a('0x25'),auth[_0x814a('0x5')](),controller['telephones']);router['get'](_0x814a('0x26'),auth[_0x814a('0x5')](),controller[_0x814a('0x27')]);router[_0x814a('0x4')]('/campaigns',auth[_0x814a('0x5')](),controller[_0x814a('0x28')]);router[_0x814a('0x4')](_0x814a('0x29'),auth[_0x814a('0x5')](),controller[_0x814a('0x2a')]);router['get'](_0x814a('0x2b'),auth[_0x814a('0x5')](),controller[_0x814a('0x2c')]);router[_0x814a('0x4')](_0x814a('0x2d'),auth[_0x814a('0x5')](),controller['mailQueuesWaitingInteractions']);router['get']('/openchannel/queues/waitinginteractions',auth[_0x814a('0x5')](),controller[_0x814a('0x2e')]);router[_0x814a('0x4')]('/openchannel/queues/:id/waitinginteractions',auth[_0x814a('0x5')](),controller[_0x814a('0x2f')]);router[_0x814a('0x4')](_0x814a('0x30'),auth[_0x814a('0x5')](),controller[_0x814a('0x31')]);router[_0x814a('0x4')](_0x814a('0x32'),auth[_0x814a('0x5')](),controller[_0x814a('0x33')]);router[_0x814a('0x4')](_0x814a('0x34'),auth[_0x814a('0x5')](),controller[_0x814a('0x35')]);router[_0x814a('0x36')](_0x814a('0x37'),auth[_0x814a('0x5')](),controller['queueNotify'](_0x814a('0x38')));router[_0x814a('0x4')]('/mail/queues/:id',auth[_0x814a('0x5')](),controller[_0x814a('0x39')]);router[_0x814a('0x36')](_0x814a('0x3a'),auth['isAuthenticated'](),controller[_0x814a('0x3b')](_0x814a('0x3c')));router[_0x814a('0x4')](_0x814a('0x3d'),auth[_0x814a('0x5')](),controller['showChatQueues']);router[_0x814a('0x36')](_0x814a('0x3e'),auth['isAuthenticated'](),controller[_0x814a('0x3b')](_0x814a('0x3f')));router[_0x814a('0x4')](_0x814a('0x40'),auth[_0x814a('0x5')](),controller['showFaxQueues']);router['post'](_0x814a('0x41'),auth[_0x814a('0x5')](),controller['queueNotify']('openchannel'));router[_0x814a('0x4')](_0x814a('0x42'),auth[_0x814a('0x5')](),controller['showOpenchannelQueues']);router['post'](_0x814a('0x43'),auth[_0x814a('0x5')](),controller[_0x814a('0x3b')](_0x814a('0x44')));router[_0x814a('0x36')]('/whatsapp/queues/:id/notify',auth[_0x814a('0x5')](),controller[_0x814a('0x3b')](_0x814a('0x45')));router['get'](_0x814a('0x46'),auth[_0x814a('0x5')](),controller['showSmsQueues']);router[_0x814a('0x4')]('/whatsapp/queues/:id',auth['isAuthenticated'](),controller[_0x814a('0x47')]);router['post'](_0x814a('0x48'),auth[_0x814a('0x5')](),controller['agentNotify']);module[_0x814a('0x49')]=router;
\ No newline at end of file
+var _0xac18=['/campaigns','/fax/accounts','faxAccounts','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','openchannelQueuesIdWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','post','/chat/queues/:id/notify','chat','fax','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','/openchannel/queues/:id','showOpenchannelQueues','sms','/whatsapp/queues/:id/notify','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','util','path','../../components/auth/service','./rpc.controller','isAuthenticated','voiceChannels','get','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','/chat/queues','chatQueues','/mail/queues','mailQueues','/mail/accounts','openchannelQueues','smsQueues','/whatsapp/queues','whatsappQueues','/fax/queues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels','/voice/queues/channels/:uniqueid','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','showVoiceQueues','put','/voice/queues/:id','updateVoiceQueue','outbound','/outbound/channels','/agents','/agents/:id/capacity','agentCapacity','telephones','/trunks','trunks'];(function(_0x441c95,_0x6e8428){var _0xb8a78f=function(_0x30f84d){while(--_0x30f84d){_0x441c95['push'](_0x441c95['shift']());}};_0xb8a78f(++_0x6e8428);}(_0xac18,0x6a));var _0x8ac1=function(_0x1a906c,_0x437902){_0x1a906c=_0x1a906c-0x0;var _0x5a153c=_0xac18[_0x1a906c];return _0x5a153c;};'use strict';var multer=require('multer');var util=require(_0x8ac1('0x0'));var path=require(_0x8ac1('0x1'));var express=require('express');var router=express['Router']();var auth=require(_0x8ac1('0x2'));var controller=require(_0x8ac1('0x3'));router['get']('/voice/channels',auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x5')]);router[_0x8ac1('0x6')](_0x8ac1('0x7'),auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x8')]);router[_0x8ac1('0x6')](_0x8ac1('0x9'),auth['isAuthenticated'](),controller['voiceChannelStopMixMonitor']);router[_0x8ac1('0x6')]('/voice/queues',auth[_0x8ac1('0x4')](),controller['voiceQueues']);router[_0x8ac1('0x6')](_0x8ac1('0xa'),auth[_0x8ac1('0x4')](),controller[_0x8ac1('0xb')]);router[_0x8ac1('0x6')](_0x8ac1('0xc'),auth[_0x8ac1('0x4')](),controller[_0x8ac1('0xd')]);router['get'](_0x8ac1('0xe'),auth['isAuthenticated'](),controller['mailAccounts']);router[_0x8ac1('0x6')]('/openchannel/queues',auth[_0x8ac1('0x4')](),controller[_0x8ac1('0xf')]);router['get']('/sms/queues',auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x10')]);router[_0x8ac1('0x6')](_0x8ac1('0x11'),auth['isAuthenticated'](),controller[_0x8ac1('0x12')]);router[_0x8ac1('0x6')](_0x8ac1('0x13'),auth['isAuthenticated'](),controller['faxQueues']);router['get'](_0x8ac1('0x14'),auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x15')]);router[_0x8ac1('0x6')](_0x8ac1('0x16'),auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x17')]);router[_0x8ac1('0x6')](_0x8ac1('0x18'),auth[_0x8ac1('0x4')](),controller['voiceQueuesChannel']);router[_0x8ac1('0x6')]('/voice/queues/channels/:uniqueid/hangup',auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x19')]);router[_0x8ac1('0x6')](_0x8ac1('0x1a'),auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x1b')]);router[_0x8ac1('0x6')]('/voice/queues/:id',auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x1c')]);router[_0x8ac1('0x1d')](_0x8ac1('0x1e'),auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x1f')]);router[_0x8ac1('0x6')]('/outbound',auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x20')]);router[_0x8ac1('0x6')](_0x8ac1('0x21'),auth[_0x8ac1('0x4')](),controller['outboundChannels']);router['get'](_0x8ac1('0x22'),auth[_0x8ac1('0x4')](),controller['agents']);router[_0x8ac1('0x1d')](_0x8ac1('0x23'),auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x24')]);router[_0x8ac1('0x6')]('/telephones',auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x25')]);router[_0x8ac1('0x6')](_0x8ac1('0x26'),auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x27')]);router[_0x8ac1('0x6')](_0x8ac1('0x28'),auth[_0x8ac1('0x4')](),controller['campaigns']);router[_0x8ac1('0x6')](_0x8ac1('0x29'),auth['isAuthenticated'](),controller[_0x8ac1('0x2a')]);router[_0x8ac1('0x6')]('/chat/queues/waitinginteractions',auth[_0x8ac1('0x4')](),controller['chatQueuesWaitingInteractions']);router[_0x8ac1('0x6')](_0x8ac1('0x2b'),auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x2c')]);router['get'](_0x8ac1('0x2d'),auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x2e')]);router[_0x8ac1('0x6')](_0x8ac1('0x2f'),auth['isAuthenticated'](),controller[_0x8ac1('0x30')]);router[_0x8ac1('0x6')](_0x8ac1('0x31'),auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x32')]);router[_0x8ac1('0x6')]('/whatsapp/queues/waitinginteractions',auth['isAuthenticated'](),controller['whatsappQueuesWaitingInteractions']);router['get'](_0x8ac1('0x33'),auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x34')]);router['post'](_0x8ac1('0x35'),auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x36')](_0x8ac1('0x37')));router[_0x8ac1('0x6')](_0x8ac1('0x38'),auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x39')]);router[_0x8ac1('0x3a')](_0x8ac1('0x3b'),auth[_0x8ac1('0x4')](),controller['queueNotify'](_0x8ac1('0x3c')));router[_0x8ac1('0x6')]('/chat/queues/:id',auth[_0x8ac1('0x4')](),controller['showChatQueues']);router[_0x8ac1('0x3a')]('/fax/queues/:id/notify',auth[_0x8ac1('0x4')](),controller['queueNotify'](_0x8ac1('0x3d')));router['get'](_0x8ac1('0x3e'),auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x3f')]);router[_0x8ac1('0x3a')](_0x8ac1('0x40'),auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x36')]('openchannel'));router[_0x8ac1('0x6')](_0x8ac1('0x41'),auth['isAuthenticated'](),controller[_0x8ac1('0x42')]);router[_0x8ac1('0x3a')]('/sms/queues/:id/notify',auth['isAuthenticated'](),controller[_0x8ac1('0x36')](_0x8ac1('0x43')));router[_0x8ac1('0x3a')](_0x8ac1('0x44'),auth[_0x8ac1('0x4')](),controller['queueNotify']('whatsapp'));router[_0x8ac1('0x6')]('/sms/queues/:id',auth['isAuthenticated'](),controller['showSmsQueues']);router['get']('/whatsapp/queues/:id',auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x45')]);router[_0x8ac1('0x3a')](_0x8ac1('0x46'),auth[_0x8ac1('0x4')](),controller[_0x8ac1('0x47')]);module[_0x8ac1('0x48')]=router;
\ No newline at end of file
index 7eb36f9..6b7a81b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['MailQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','map','queue_id','value','indexOf','smsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','Account','\x20Message\x20not\x20found','update','queue','From','QueueId','TransferReport','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','channel','Channel\x20field\x20is\x20mandatory','Website','Agent\x20not\x20found','InteractionId','agentTransferTimeout','moment','lodash','util','../../mysqldb','../../config/logger','api','client','http','request','then','error','code','message','result','status','sendStatus','stack','name','isNil','rows','voiceChannels','VoiceChannels','catch','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','query','params','VoiceChannelStopMixMonitor','voiceQueues','VoiceQueues','showVoiceQueues','updateVoiceQueue','UpdateVoiceQueue','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','Outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','body','interaction','user','hasOwnProperty','MemberReport','findAll','INTERACTION','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','findOrCreate','interface','SIP/%s','agent','internal','AgentCapacity','capacity','telephones','Telephones','trunks','Campaigns','chatQueues','ChatQueues','showChatQueues','MailQueues','showMailQueues','mailAccounts','openchannelQueues','OpenchannelQueues','smsQueues','showSmsQueues','WhatsappQueues','showWhatsappQueues','faxQueues','showFaxQueues','FaxQueues','faxAccounts','FaxAccounts','mailQueuesWaitingInteractions'];(function(_0x155635,_0x25fa8c){var _0x1a0a8=function(_0x2a9c2f){while(--_0x2a9c2f){_0x155635['push'](_0x155635['shift']());}};_0x1a0a8(++_0x25fa8c);}(_0xbaf0,0x12a));var _0x0baf=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xbaf0[_0x3947c9];return _0x2e7871;};'use strict';var BPromise=require('bluebird');var moment=require(_0x0baf('0x0'));var _=require(_0x0baf('0x1'));var util=require(_0x0baf('0x2'));var db=require(_0x0baf('0x3'))['db'];var logger=require(_0x0baf('0x4'))(_0x0baf('0x5'));var jayson=require('jayson/promise');var amiClient=jayson[_0x0baf('0x6')][_0x0baf('0x7')]({'port':0x232a});var mailClient=jayson[_0x0baf('0x6')][_0x0baf('0x7')]({'port':0x232b});var routingClient=jayson[_0x0baf('0x6')][_0x0baf('0x7')]({'port':0x232c});function respondWithRpcPromise(_0x1a10b1,_0x2dcaac,_0x1d0a0d){return new BPromise(function(_0x5f5030,_0x11b947){var _0x5f20aa=_0x1d0a0d?_0x1d0a0d:amiClient;return _0x5f20aa[_0x0baf('0x8')](_0x1a10b1,_0x2dcaac)[_0x0baf('0x9')](function(_0x465528){if(_0x465528[_0x0baf('0xa')]){if(_0x465528[_0x0baf('0xa')][_0x0baf('0xb')]===0x1f4){return _0x11b947(_0x465528[_0x0baf('0xa')][_0x0baf('0xc')]);}return _0x5f5030(_0x465528[_0x0baf('0xa')][_0x0baf('0xc')]);}else{_0x5f5030(_0x465528[_0x0baf('0xd')]);}})['catch'](function(_0x5a53e2){_0x11b947(_0x5a53e2);});});}function respondWithResult(_0x465dd7,_0xe4378c){_0xe4378c=_0xe4378c||0xc8;return function(_0x5db689){if(_0x5db689){return _0x465dd7[_0x0baf('0xe')](_0xe4378c)['json'](_0x5db689);}return _0x465dd7[_0x0baf('0xf')](0x194);};}function handleError(_0x49e44b,_0x1c76a8){_0x1c76a8=_0x1c76a8||0x1f4;return function(_0x1f50c3){logger[_0x0baf('0xa')](_0x1f50c3[_0x0baf('0x10')]);if(_0x1f50c3[_0x0baf('0x11')]){delete _0x1f50c3[_0x0baf('0x11')];}_0x49e44b['status'](_0x1c76a8)['send'](_0x1f50c3);};}function findById(_0x2312c7){return function(_0x38395b){if(!_[_0x0baf('0x12')](_0x2312c7)&&!_[_0x0baf('0x12')](_0x38395b)&&!_[_0x0baf('0x12')](_0x38395b[_0x0baf('0x13')])){return _['find'](_0x38395b[_0x0baf('0x13')],function(_0xfbecec){return _0xfbecec['id']==_0x2312c7;});}return null;};}exports[_0x0baf('0x14')]=function(_0x3e9cb4,_0x47070d){return respondWithRpcPromise(_0x0baf('0x15'),_0x3e9cb4['query'])['then'](respondWithResult(_0x47070d,null))[_0x0baf('0x16')](handleError(_0x47070d,null));};exports[_0x0baf('0x17')]=function(_0x32e839,_0x1848e8){return respondWithRpcPromise(_0x0baf('0x18'),_[_0x0baf('0x19')](_0x32e839[_0x0baf('0x1a')],_0x32e839[_0x0baf('0x1b')]))[_0x0baf('0x9')](respondWithResult(_0x1848e8,null))[_0x0baf('0x16')](handleError(_0x1848e8,null));};exports['voiceChannelStopMixMonitor']=function(_0x334bd6,_0x482522){return respondWithRpcPromise(_0x0baf('0x1c'),_['merge'](_0x334bd6['query'],_0x334bd6[_0x0baf('0x1b')]))['then'](respondWithResult(_0x482522,null))['catch'](handleError(_0x482522,null));};exports[_0x0baf('0x1d')]=function(_0x27b59c,_0x34e264){return respondWithRpcPromise(_0x0baf('0x1e'),_0x27b59c[_0x0baf('0x1a')])['then'](respondWithResult(_0x34e264,null))[_0x0baf('0x16')](handleError(_0x34e264,null));};exports[_0x0baf('0x1f')]=function(_0x1ca35a,_0x366e71){return respondWithRpcPromise(_0x0baf('0x1e'),_0x1ca35a[_0x0baf('0x1a')])[_0x0baf('0x9')](findById(_0x1ca35a['params']['id']))[_0x0baf('0x9')](respondWithResult(_0x366e71,null))[_0x0baf('0x16')](handleError(_0x366e71,null));};exports[_0x0baf('0x20')]=function(_0x265915,_0x55c715){return respondWithRpcPromise(_0x0baf('0x21'),_[_0x0baf('0x19')](_0x265915['body'],_0x265915[_0x0baf('0x1b')]))[_0x0baf('0x9')](respondWithResult(_0x55c715,null))[_0x0baf('0x16')](handleError(_0x55c715,null));};exports[_0x0baf('0x22')]=function(_0xd14f0f,_0x366924){return respondWithRpcPromise(_0x0baf('0x23'),_['merge'](_0xd14f0f[_0x0baf('0x1a')],_0xd14f0f[_0x0baf('0x1b')]))[_0x0baf('0x9')](respondWithResult(_0x366924,null))[_0x0baf('0x16')](handleError(_0x366924,null));};exports[_0x0baf('0x24')]=function(_0x275ea1,_0x2fc983){return respondWithRpcPromise(_0x0baf('0x25'),_0x275ea1[_0x0baf('0x1a')])[_0x0baf('0x9')](respondWithResult(_0x2fc983,null))[_0x0baf('0x16')](handleError(_0x2fc983,null));};exports[_0x0baf('0x26')]=function(_0x45294a,_0x3a3353){return respondWithRpcPromise('VoiceQueuesChannel',_[_0x0baf('0x19')](_0x45294a['query'],_0x45294a[_0x0baf('0x1b')]))[_0x0baf('0x9')](respondWithResult(_0x3a3353,null))[_0x0baf('0x16')](handleError(_0x3a3353,null));};exports[_0x0baf('0x27')]=function(_0x5300a5,_0x1a2b03){return respondWithRpcPromise(_0x0baf('0x28'),_['merge'](_0x5300a5[_0x0baf('0x1a')],_0x5300a5[_0x0baf('0x1b')]))[_0x0baf('0x9')](respondWithResult(_0x1a2b03,null))[_0x0baf('0x16')](handleError(_0x1a2b03,null));};exports[_0x0baf('0x29')]=function(_0x1b0991,_0xe03d82){return respondWithRpcPromise(_0x0baf('0x2a'),_['merge'](_0x1b0991[_0x0baf('0x1a')],_0x1b0991[_0x0baf('0x1b')]))['then'](respondWithResult(_0xe03d82,null))[_0x0baf('0x16')](handleError(_0xe03d82,null));};exports['outbound']=function(_0x5c545f,_0x11bc49){return respondWithRpcPromise(_0x0baf('0x2b'),_0x5c545f['query'])['then'](respondWithResult(_0x11bc49,null))[_0x0baf('0x16')](handleError(_0x11bc49,null));};exports[_0x0baf('0x2c')]=function(_0x3412bc,_0xb2d9ab){return respondWithRpcPromise(_0x0baf('0x2d'),_0x3412bc[_0x0baf('0x1a')])[_0x0baf('0x9')](respondWithResult(_0xb2d9ab,null))[_0x0baf('0x16')](handleError(_0xb2d9ab,null));};exports[_0x0baf('0x2e')]=function(_0x36c6d2,_0x200864){var _0x148540;return respondWithRpcPromise(_0x0baf('0x2f'),_0x36c6d2[_0x0baf('0x1a')])['then'](function(_0x3573ce){_0x148540=_0x3573ce;return respondWithRpcPromise(_0x0baf('0x2f'),_0x36c6d2['query'],routingClient);})[_0x0baf('0x9')](function(_0x324369){return _[_0x0baf('0x19')]({},_0x324369,_0x148540);})[_0x0baf('0x9')](respondWithResult(_0x200864,null))[_0x0baf('0x16')](handleError(_0x200864,null));};exports[_0x0baf('0x30')]=function(_0x57b581,_0x23ad34){if(_0x57b581[_0x0baf('0x31')]&&_0x57b581['body'][_0x0baf('0x32')]&&_0x57b581[_0x0baf('0x33')]&&_0x57b581[_0x0baf('0x33')][_0x0baf('0x11')]){for(var _0x504031 in _0x57b581[_0x0baf('0x31')][_0x0baf('0x32')]){if(_0x57b581[_0x0baf('0x31')][_0x0baf('0x32')][_0x0baf('0x34')](_0x504031)){db[_0x0baf('0x35')][_0x0baf('0x36')]({'where':{'channel':_0x504031,'membername':_0x57b581[_0x0baf('0x33')][_0x0baf('0x11')],'type':_0x0baf('0x37'),'exitAt':null,'uniqueid':_0x57b581['body'][_0x0baf('0x32')][_0x504031]&&_0x57b581[_0x0baf('0x31')][_0x0baf('0x32')][_0x504031][_0x0baf('0x38')]?{'$notIn':_0x57b581[_0x0baf('0x31')]['interaction'][_0x504031]}:{'$ne':null}}})[_0x0baf('0x9')](function(_0x310240){var _0x27c3ee=moment()[_0x0baf('0x39')](_0x0baf('0x3a'));for(var _0x54ed41=0x0,_0x2a0924=_0x310240[_0x0baf('0x38')];_0x54ed41<_0x2a0924;_0x54ed41+=0x1){_0x310240[_0x54ed41][_0x0baf('0x3b')]({'exitAt':_0x27c3ee});}});for(var _0x1522b0=0x0;_0x1522b0<_0x57b581[_0x0baf('0x31')][_0x0baf('0x32')][_0x504031][_0x0baf('0x38')];_0x1522b0+=0x1){db['MemberReport'][_0x0baf('0x3c')]({'where':{'channel':_0x504031,'membername':_0x57b581[_0x0baf('0x33')][_0x0baf('0x11')],'type':'INTERACTION','uniqueid':_0x57b581[_0x0baf('0x31')][_0x0baf('0x32')][_0x504031][_0x1522b0],'exitAt':null},'defaults':{'channel':_0x504031,'membername':_0x57b581[_0x0baf('0x33')][_0x0baf('0x11')],'interface':_[_0x0baf('0x12')](_0x57b581[_0x0baf('0x33')][_0x0baf('0x3d')])?util['format'](_0x0baf('0x3e'),_0x57b581[_0x0baf('0x33')][_0x0baf('0x11')]):_0x57b581[_0x0baf('0x33')][_0x0baf('0x3d')],'type':_0x0baf('0x37'),'enterAt':moment()[_0x0baf('0x39')](_0x0baf('0x3a')),'role':_0x0baf('0x3f'),'internal':_0x57b581[_0x0baf('0x33')][_0x0baf('0x40')],'uniqueid':_0x57b581['body']['interaction'][_0x504031][_0x1522b0]}});}}}}return respondWithRpcPromise(_0x0baf('0x41'),{'id':_0x57b581[_0x0baf('0x1b')]['id'],'capacity':_0x57b581[_0x0baf('0x31')][_0x0baf('0x42')]},routingClient)[_0x0baf('0x9')](respondWithResult(_0x23ad34,null))[_0x0baf('0x16')](handleError(_0x23ad34,null));};exports[_0x0baf('0x43')]=function(_0x4b492c,_0x3fe534){return respondWithRpcPromise(_0x0baf('0x44'),_0x4b492c[_0x0baf('0x1a')])[_0x0baf('0x9')](respondWithResult(_0x3fe534,null))[_0x0baf('0x16')](handleError(_0x3fe534,null));};exports[_0x0baf('0x45')]=function(_0x5e1849,_0x3eebe5){return respondWithRpcPromise('Trunks',_0x5e1849[_0x0baf('0x1a')])['then'](respondWithResult(_0x3eebe5,null))[_0x0baf('0x16')](handleError(_0x3eebe5,null));};exports['campaigns']=function(_0x35b1a5,_0x4c035b){return respondWithRpcPromise(_0x0baf('0x46'),_0x35b1a5[_0x0baf('0x1a')])[_0x0baf('0x9')](respondWithResult(_0x4c035b,null))[_0x0baf('0x16')](handleError(_0x4c035b,null));};exports[_0x0baf('0x47')]=function(_0x576475,_0x21f179){return respondWithRpcPromise(_0x0baf('0x48'),_0x576475[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x21f179,null))[_0x0baf('0x16')](handleError(_0x21f179,null));};exports[_0x0baf('0x49')]=function(_0x480834,_0x402f4d){return respondWithRpcPromise(_0x0baf('0x48'),_0x480834[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](findById(_0x480834[_0x0baf('0x1b')]['id']))[_0x0baf('0x9')](respondWithResult(_0x402f4d,null))[_0x0baf('0x16')](handleError(_0x402f4d,null));};exports['mailQueues']=function(_0x48e855,_0x23f6ea){return respondWithRpcPromise(_0x0baf('0x4a'),_0x48e855[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x23f6ea,null))[_0x0baf('0x16')](handleError(_0x23f6ea,null));};exports[_0x0baf('0x4b')]=function(_0xaa4293,_0x14a667){return respondWithRpcPromise(_0x0baf('0x4a'),_0xaa4293['query'],routingClient)[_0x0baf('0x9')](findById(_0xaa4293[_0x0baf('0x1b')]['id']))[_0x0baf('0x9')](respondWithResult(_0x14a667,null))[_0x0baf('0x16')](handleError(_0x14a667,null));};exports[_0x0baf('0x4c')]=function(_0xebfc0c,_0x26f5c9){return respondWithRpcPromise('MailAccounts',_0xebfc0c[_0x0baf('0x1a')],mailClient)[_0x0baf('0x9')](respondWithResult(_0x26f5c9,null))[_0x0baf('0x16')](handleError(_0x26f5c9,null));};exports[_0x0baf('0x4d')]=function(_0x1c7d88,_0x1a6d22){return respondWithRpcPromise(_0x0baf('0x4e'),_0x1c7d88[_0x0baf('0x1a')],routingClient)['then'](respondWithResult(_0x1a6d22,null))[_0x0baf('0x16')](handleError(_0x1a6d22,null));};exports['showOpenchannelQueues']=function(_0x3c00e7,_0x5f2fbe){return respondWithRpcPromise('OpenchannelQueues',_0x3c00e7[_0x0baf('0x1a')],routingClient)['then'](findById(_0x3c00e7[_0x0baf('0x1b')]['id']))[_0x0baf('0x9')](respondWithResult(_0x5f2fbe,null))['catch'](handleError(_0x5f2fbe,null));};exports[_0x0baf('0x4f')]=function(_0xfb6708,_0x156572){return respondWithRpcPromise('SmsQueues',_0xfb6708['query'],routingClient)[_0x0baf('0x9')](respondWithResult(_0x156572,null))[_0x0baf('0x16')](handleError(_0x156572,null));};exports[_0x0baf('0x50')]=function(_0x7f49e,_0x784e1a){return respondWithRpcPromise('SmsQueues',_0x7f49e[_0x0baf('0x1a')],routingClient)['then'](findById(_0x7f49e['params']['id']))['then'](respondWithResult(_0x784e1a,null))[_0x0baf('0x16')](handleError(_0x784e1a,null));};exports['whatsappQueues']=function(_0x4946d4,_0x11a81e){return respondWithRpcPromise(_0x0baf('0x51'),_0x4946d4[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x11a81e,null))[_0x0baf('0x16')](handleError(_0x11a81e,null));};exports[_0x0baf('0x52')]=function(_0x4c05d6,_0xec3b32){return respondWithRpcPromise(_0x0baf('0x51'),_0x4c05d6[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](findById(_0x4c05d6[_0x0baf('0x1b')]['id']))[_0x0baf('0x9')](respondWithResult(_0xec3b32,null))['catch'](handleError(_0xec3b32,null));};exports[_0x0baf('0x53')]=function(_0x468363,_0x29fd46){return respondWithRpcPromise('FaxQueues',_0x468363[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x29fd46,null))[_0x0baf('0x16')](handleError(_0x29fd46,null));};exports[_0x0baf('0x54')]=function(_0x125906,_0x27a959){return respondWithRpcPromise(_0x0baf('0x55'),_0x125906['query'],routingClient)['then'](findById(_0x125906['params']['id']))[_0x0baf('0x9')](respondWithResult(_0x27a959,null))[_0x0baf('0x16')](handleError(_0x27a959,null));};exports[_0x0baf('0x56')]=function(_0x12b9b5,_0x3e65d4){return respondWithRpcPromise(_0x0baf('0x57'),_0x12b9b5['query'])['then'](respondWithResult(_0x3e65d4,null))[_0x0baf('0x16')](handleError(_0x3e65d4,null));};exports['chatQueuesWaitingInteractions']=function(_0x22cd07,_0x3e9b79){return respondWithRpcPromise('ChatQueuesWaitingInteractions',_0x22cd07[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x3e9b79,null))[_0x0baf('0x16')](handleError(_0x3e9b79,null));};exports[_0x0baf('0x58')]=function(_0x115ff5,_0x33a5af){return respondWithRpcPromise(_0x0baf('0x59'),_0x115ff5[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x33a5af,null))['catch'](handleError(_0x33a5af,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x58a079,_0x493784){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x58a079[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x493784,null))[_0x0baf('0x16')](handleError(_0x493784,null));};exports[_0x0baf('0x5a')]=function(_0x5093f5,_0x1be7f2){return respondWithRpcPromise(_0x0baf('0x5b'),_0x5093f5['query'],routingClient)['then'](function(_0x43aecd){if(_0x5093f5[_0x0baf('0x1a')][_0x0baf('0x5c')]!==undefined){var _0x442e5f=_(_0x43aecd[_0x0baf('0x13')])[_0x0baf('0x5d')]([_0x5093f5[_0x0baf('0x1a')][_0x0baf('0x5c')],_0x5093f5['params']['id']])[_0x0baf('0x5e')](_0x0baf('0x5f'))['uniq']()[_0x0baf('0x60')]();return _0x43aecd[_0x0baf('0x13')]['filter'](function(_0x97d385){return _0x442e5f[_0x0baf('0x61')](_0x97d385[_0x0baf('0x5f')])>-0x1;});}else{return _0x43aecd[_0x0baf('0x13')][_0x0baf('0x5d')](function(_0x4fc5af){return _0x4fc5af['queue_id']===parseInt(_0x5093f5[_0x0baf('0x1b')]['id']);});}})[_0x0baf('0x9')](respondWithResult(_0x1be7f2,null))['catch'](handleError(_0x1be7f2,null));};exports[_0x0baf('0x62')]=function(_0x59dad5,_0x21ad25){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x59dad5[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x21ad25,null))[_0x0baf('0x16')](handleError(_0x21ad25,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x3c2bc1,_0x5008c5){return respondWithRpcPromise(_0x0baf('0x63'),_0x3c2bc1[_0x0baf('0x1a')],routingClient)[_0x0baf('0x9')](respondWithResult(_0x5008c5,null))[_0x0baf('0x16')](handleError(_0x5008c5,null));};exports[_0x0baf('0x64')]=function(_0x52e845,_0x866e6e){return respondWithRpcPromise(_0x0baf('0x65'),_0x52e845['query'],routingClient)[_0x0baf('0x9')](respondWithResult(_0x866e6e,null))[_0x0baf('0x16')](handleError(_0x866e6e,null));};exports[_0x0baf('0x66')]=function(_0x379c54){return function(_0x1cbbcc,_0x250df2){var _0xa4fd1b,_0x1cda78;var _0x44ef57=_[_0x0baf('0x67')](_0x379c54);var _0x3b7abf=_0x379c54===_0x0baf('0x68')?'Website':'Account';return db[_0x44ef57+_0x0baf('0x69')][_0x0baf('0x6a')]({'raw':!![],'where':{'id':_0x1cbbcc[_0x0baf('0x1b')]['id']}})['then'](function(_0x507783){if(_[_0x0baf('0x12')](_0x507783)){throw new Error(_0x44ef57+_0x0baf('0x6b'));}_0xa4fd1b=_0x507783;return db[_0x44ef57+_0x0baf('0x6c')][_0x0baf('0x6a')]({'where':{'id':_0x1cbbcc[_0x0baf('0x31')][_0x0baf('0x6d')]},'include':[{'model':db[_0x44ef57+_0x0baf('0x6e')],'as':_0x0baf('0x6e')},{'model':db[_0x44ef57+_0x3b7abf],'as':_0x0baf('0x6f')}]});})['then'](function(_0x1590a5){if(_[_0x0baf('0x12')](_0x1590a5)){throw new Error(_0x44ef57+_0x0baf('0x70'));}_0x1cda78=_0x1590a5;return _0x1590a5[_0x0baf('0x71')]({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0x5d26e6={'uniqueid':_0x379c54+'.'+_0x1cda78['id']+'.'+_0x1cda78['Interaction']['id'],'FromUserId':_0x1cbbcc[_0x0baf('0x33')]['id'],'type':_0x0baf('0x72')};_0x5d26e6[_0x44ef57+'MessageId']=_0x1cda78['id'];_0x5d26e6[_0x44ef57+'InteractionId']=_0x1cda78[_0x0baf('0x6e')]['id'];_0x5d26e6[_0x0baf('0x73')+_0x44ef57+_0x3b7abf+'Id']=_0x1cda78['Account']['id'];_0x5d26e6['To'+_0x44ef57+_0x0baf('0x74')]=_0xa4fd1b['id'];return db[_0x44ef57+_0x0baf('0x75')][_0x0baf('0x76')](_0x5d26e6);})[_0x0baf('0x9')](function(){return respondWithRpcPromise(_0x0baf('0x77'),{'channel':_0x379c54,'interaction':_0x1cda78[_0x0baf('0x6e')],'message':_0x1cda78,'account':_0x1cda78[_0x0baf('0x6f')],'applications':[{'id':0x0,'priority':0x1,'app':_0x0baf('0x72'),'appdata':_0xa4fd1b[_0x0baf('0x11')]+','+(_0x1cda78[_0x0baf('0x6f')][_0x0baf('0x78')]||0x12c),'interval':_0x0baf('0x79')}],'transfer':!![]},routingClient);})['then'](respondWithResult(_0x250df2,null))[_0x0baf('0x16')](handleError(_0x250df2,null));};};exports[_0x0baf('0x7a')]=function(_0x1e1adb,_0x3bd15b){var _0x3c37b4,_0x195303;if(_['isNil'](_0x1e1adb[_0x0baf('0x31')][_0x0baf('0x7b')])){throw new Error(_0x0baf('0x7c'));}var _0x457ae8=_0x1e1adb[_0x0baf('0x31')]['channel'];var _0x3761b5=_[_0x0baf('0x67')](_0x457ae8);var _0x2eae1b=_0x457ae8===_0x0baf('0x68')?_0x0baf('0x7d'):'Account';return db['User'][_0x0baf('0x6a')]({'raw':!![],'where':{'id':_0x1e1adb['params']['id'],'role':_0x0baf('0x3f')}})['then'](function(_0x32d8b6){if(_[_0x0baf('0x12')](_0x32d8b6)){throw new Error(_0x0baf('0x7e'));}_0x3c37b4=_0x32d8b6;return db[_0x3761b5+_0x0baf('0x6c')]['findOne']({'where':{'id':_0x1e1adb[_0x0baf('0x31')][_0x0baf('0x6d')]},'include':[{'model':db[_0x3761b5+_0x0baf('0x6e')],'as':'Interaction'},{'model':db[_0x3761b5+_0x2eae1b],'as':'Account'}]});})['then'](function(_0x4d4884){if(_[_0x0baf('0x12')](_0x4d4884)){throw new Error(_0x3761b5+_0x0baf('0x70'));}_0x195303=_0x4d4884;return _0x4d4884[_0x0baf('0x71')]({'read':0x0,'readAt':null,'UserId':null});})[_0x0baf('0x9')](function(){var _0x597830={'uniqueid':_0x457ae8+'.'+_0x195303['id']+'.'+_0x195303[_0x0baf('0x6e')]['id'],'FromUserId':_0x1e1adb[_0x0baf('0x33')]['id'],'type':_0x0baf('0x3f'),'ToUserId':_0x3c37b4['id']};_0x597830[_0x3761b5+'MessageId']=_0x195303['id'];_0x597830[_0x3761b5+_0x0baf('0x7f')]=_0x195303[_0x0baf('0x6e')]['id'];_0x597830['From'+_0x3761b5+_0x2eae1b+'Id']=_0x195303[_0x0baf('0x6f')]['id'];return db[_0x3761b5+'TransferReport'][_0x0baf('0x76')](_0x597830);})[_0x0baf('0x9')](function(){return respondWithRpcPromise(_0x0baf('0x77'),{'channel':_0x457ae8,'interaction':_0x195303[_0x0baf('0x6e')],'message':_0x195303,'account':_0x195303['Account'],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x3c37b4[_0x0baf('0x11')]+','+(_0x195303['Account'][_0x0baf('0x80')]||0x12c),'interval':_0x0baf('0x79')}],'transfer':!![]},routingClient);})[_0x0baf('0x9')](respondWithResult(_0x3bd15b,null))[_0x0baf('0x16')](handleError(_0x3bd15b,null));};
\ No newline at end of file
+var _0xa9e0=['mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','filter','map','queue_id','uniq','indexOf','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','queueNotify','chat','Website','Account','findOne','\x20Queue\x20not\x20found','Message','Interaction','\x20Message\x20not\x20found','MessageId','InteractionId','From','QueueId','create','Start','queue','queueTransferTimeout','*,*,*,*','agentNotify','Channel\x20field\x20is\x20mandatory','channel','capitalize','User','messageId','update','bluebird','moment','lodash','../../config/logger','jayson/promise','client','http','then','error','code','catch','status','sendStatus','stack','name','send','isNil','find','rows','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','voiceQueues','showVoiceQueues','VoiceQueues','updateVoiceQueue','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','outboundChannels','Agents','agentCapacity','interaction','user','hasOwnProperty','MemberReport','findAll','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','INTERACTION','interface','SIP/%s','agent','internal','AgentCapacity','telephones','Telephones','Trunks','campaigns','ChatQueues','mailQueues','showMailQueues','MailQueues','mailAccounts','MailAccounts','openchannelQueues','OpenchannelQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','faxQueues','FaxQueues','showFaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'use strict';var BPromise=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var util=require('util');var db=require('../../mysqldb')['db'];var logger=require(_0x0a9e('0x3'))('api');var jayson=require(_0x0a9e('0x4'));var amiClient=jayson[_0x0a9e('0x5')][_0x0a9e('0x6')]({'port':0x232a});var mailClient=jayson[_0x0a9e('0x5')][_0x0a9e('0x6')]({'port':0x232b});var routingClient=jayson['client'][_0x0a9e('0x6')]({'port':0x232c});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){var _0x56465b=_0x5f41ea?_0x5f41ea:amiClient;return _0x56465b['request'](_0x441e3a,_0x2cc193)[_0x0a9e('0x7')](function(_0xf81284){if(_0xf81284[_0x0a9e('0x8')]){if(_0xf81284[_0x0a9e('0x8')][_0x0a9e('0x9')]===0x1f4){return _0xe42b77(_0xf81284[_0x0a9e('0x8')]['message']);}return _0x503809(_0xf81284['error']['message']);}else{_0x503809(_0xf81284['result']);}})[_0x0a9e('0xa')](function(_0x36471c){_0xe42b77(_0x36471c);});});}function respondWithResult(_0xd5b662,_0x26d672){_0x26d672=_0x26d672||0xc8;return function(_0x32d742){if(_0x32d742){return _0xd5b662[_0x0a9e('0xb')](_0x26d672)['json'](_0x32d742);}return _0xd5b662[_0x0a9e('0xc')](0x194);};}function handleError(_0x239b12,_0x2b4227){_0x2b4227=_0x2b4227||0x1f4;return function(_0x281129){logger[_0x0a9e('0x8')](_0x281129[_0x0a9e('0xd')]);if(_0x281129['name']){delete _0x281129[_0x0a9e('0xe')];}_0x239b12['status'](_0x2b4227)[_0x0a9e('0xf')](_0x281129);};}function findById(_0x519dfd){return function(_0x16033c){if(!_[_0x0a9e('0x10')](_0x519dfd)&&!_['isNil'](_0x16033c)&&!_[_0x0a9e('0x10')](_0x16033c['rows'])){return _[_0x0a9e('0x11')](_0x16033c[_0x0a9e('0x12')],function(_0x106033){return _0x106033['id']==_0x519dfd;});}return null;};}exports[_0x0a9e('0x13')]=function(_0x31b1ca,_0x2eb11f){return respondWithRpcPromise(_0x0a9e('0x14'),_0x31b1ca[_0x0a9e('0x15')])[_0x0a9e('0x7')](respondWithResult(_0x2eb11f,null))[_0x0a9e('0xa')](handleError(_0x2eb11f,null));};exports[_0x0a9e('0x16')]=function(_0x105080,_0x4bb1e3){return respondWithRpcPromise(_0x0a9e('0x17'),_[_0x0a9e('0x18')](_0x105080['query'],_0x105080[_0x0a9e('0x19')]))['then'](respondWithResult(_0x4bb1e3,null))['catch'](handleError(_0x4bb1e3,null));};exports[_0x0a9e('0x1a')]=function(_0x432e56,_0x38e7c4){return respondWithRpcPromise(_0x0a9e('0x1b'),_['merge'](_0x432e56[_0x0a9e('0x15')],_0x432e56[_0x0a9e('0x19')]))[_0x0a9e('0x7')](respondWithResult(_0x38e7c4,null))[_0x0a9e('0xa')](handleError(_0x38e7c4,null));};exports[_0x0a9e('0x1c')]=function(_0x42ac8f,_0x16b1ca){return respondWithRpcPromise('VoiceQueues',_0x42ac8f['query'])[_0x0a9e('0x7')](respondWithResult(_0x16b1ca,null))[_0x0a9e('0xa')](handleError(_0x16b1ca,null));};exports[_0x0a9e('0x1d')]=function(_0x33161b,_0x526cf3){return respondWithRpcPromise(_0x0a9e('0x1e'),_0x33161b['query'])[_0x0a9e('0x7')](findById(_0x33161b['params']['id']))[_0x0a9e('0x7')](respondWithResult(_0x526cf3,null))[_0x0a9e('0xa')](handleError(_0x526cf3,null));};exports[_0x0a9e('0x1f')]=function(_0x14433c,_0x140511){return respondWithRpcPromise(_0x0a9e('0x20'),_[_0x0a9e('0x18')](_0x14433c[_0x0a9e('0x21')],_0x14433c['params']))[_0x0a9e('0x7')](respondWithResult(_0x140511,null))[_0x0a9e('0xa')](handleError(_0x140511,null));};exports[_0x0a9e('0x22')]=function(_0x2ec755,_0x5c877d){return respondWithRpcPromise(_0x0a9e('0x23'),_[_0x0a9e('0x18')](_0x2ec755[_0x0a9e('0x15')],_0x2ec755[_0x0a9e('0x19')]))[_0x0a9e('0x7')](respondWithResult(_0x5c877d,null))[_0x0a9e('0xa')](handleError(_0x5c877d,null));};exports[_0x0a9e('0x24')]=function(_0x2e8759,_0x1dbde2){return respondWithRpcPromise('VoiceQueuesChannels',_0x2e8759[_0x0a9e('0x15')])['then'](respondWithResult(_0x1dbde2,null))[_0x0a9e('0xa')](handleError(_0x1dbde2,null));};exports[_0x0a9e('0x25')]=function(_0x1122db,_0x33bdb7){return respondWithRpcPromise(_0x0a9e('0x26'),_['merge'](_0x1122db[_0x0a9e('0x15')],_0x1122db[_0x0a9e('0x19')]))[_0x0a9e('0x7')](respondWithResult(_0x33bdb7,null))[_0x0a9e('0xa')](handleError(_0x33bdb7,null));};exports[_0x0a9e('0x27')]=function(_0x409319,_0x332d35){return respondWithRpcPromise(_0x0a9e('0x28'),_['merge'](_0x409319[_0x0a9e('0x15')],_0x409319['params']))[_0x0a9e('0x7')](respondWithResult(_0x332d35,null))[_0x0a9e('0xa')](handleError(_0x332d35,null));};exports[_0x0a9e('0x29')]=function(_0x3f3d41,_0x567193){return respondWithRpcPromise(_0x0a9e('0x2a'),_[_0x0a9e('0x18')](_0x3f3d41[_0x0a9e('0x15')],_0x3f3d41[_0x0a9e('0x19')]))['then'](respondWithResult(_0x567193,null))['catch'](handleError(_0x567193,null));};exports[_0x0a9e('0x2b')]=function(_0x5640eb,_0x24936a){return respondWithRpcPromise(_0x0a9e('0x2c'),_0x5640eb[_0x0a9e('0x15')])[_0x0a9e('0x7')](respondWithResult(_0x24936a,null))['catch'](handleError(_0x24936a,null));};exports[_0x0a9e('0x2d')]=function(_0x3bfce8,_0x3cae){return respondWithRpcPromise('OutboundChannels',_0x3bfce8[_0x0a9e('0x15')])[_0x0a9e('0x7')](respondWithResult(_0x3cae,null))[_0x0a9e('0xa')](handleError(_0x3cae,null));};exports['agents']=function(_0x546ef8,_0x11b61d){var _0x40d766;return respondWithRpcPromise('Agents',_0x546ef8[_0x0a9e('0x15')])[_0x0a9e('0x7')](function(_0x2e1b3a){_0x40d766=_0x2e1b3a;return respondWithRpcPromise(_0x0a9e('0x2e'),_0x546ef8['query'],routingClient);})['then'](function(_0x15e37d){return _[_0x0a9e('0x18')]({},_0x15e37d,_0x40d766);})['then'](respondWithResult(_0x11b61d,null))[_0x0a9e('0xa')](handleError(_0x11b61d,null));};exports[_0x0a9e('0x2f')]=function(_0x1459bb,_0x5b4f5e){if(_0x1459bb[_0x0a9e('0x21')]&&_0x1459bb[_0x0a9e('0x21')][_0x0a9e('0x30')]&&_0x1459bb[_0x0a9e('0x31')]&&_0x1459bb[_0x0a9e('0x31')][_0x0a9e('0xe')]){for(var _0x2881b3 in _0x1459bb[_0x0a9e('0x21')][_0x0a9e('0x30')]){if(_0x1459bb[_0x0a9e('0x21')][_0x0a9e('0x30')][_0x0a9e('0x32')](_0x2881b3)){db[_0x0a9e('0x33')][_0x0a9e('0x34')]({'where':{'channel':_0x2881b3,'membername':_0x1459bb[_0x0a9e('0x31')]['name'],'type':'INTERACTION','exitAt':null,'uniqueid':_0x1459bb[_0x0a9e('0x21')][_0x0a9e('0x30')][_0x2881b3]&&_0x1459bb[_0x0a9e('0x21')][_0x0a9e('0x30')][_0x2881b3][_0x0a9e('0x35')]?{'$notIn':_0x1459bb[_0x0a9e('0x21')][_0x0a9e('0x30')][_0x2881b3]}:{'$ne':null}}})[_0x0a9e('0x7')](function(_0x432fcc){var _0x25c6e6=moment()[_0x0a9e('0x36')](_0x0a9e('0x37'));for(var _0x5026aa=0x0,_0x117c99=_0x432fcc[_0x0a9e('0x35')];_0x5026aa<_0x117c99;_0x5026aa+=0x1){_0x432fcc[_0x5026aa][_0x0a9e('0x38')]({'exitAt':_0x25c6e6});}});for(var _0xfbd5ad=0x0;_0xfbd5ad<_0x1459bb[_0x0a9e('0x21')][_0x0a9e('0x30')][_0x2881b3][_0x0a9e('0x35')];_0xfbd5ad+=0x1){db[_0x0a9e('0x33')]['findOrCreate']({'where':{'channel':_0x2881b3,'membername':_0x1459bb[_0x0a9e('0x31')]['name'],'type':_0x0a9e('0x39'),'uniqueid':_0x1459bb[_0x0a9e('0x21')][_0x0a9e('0x30')][_0x2881b3][_0xfbd5ad],'exitAt':null},'defaults':{'channel':_0x2881b3,'membername':_0x1459bb['user'][_0x0a9e('0xe')],'interface':_[_0x0a9e('0x10')](_0x1459bb[_0x0a9e('0x31')][_0x0a9e('0x3a')])?util[_0x0a9e('0x36')](_0x0a9e('0x3b'),_0x1459bb[_0x0a9e('0x31')]['name']):_0x1459bb[_0x0a9e('0x31')][_0x0a9e('0x3a')],'type':_0x0a9e('0x39'),'enterAt':moment()[_0x0a9e('0x36')](_0x0a9e('0x37')),'role':_0x0a9e('0x3c'),'internal':_0x1459bb[_0x0a9e('0x31')][_0x0a9e('0x3d')],'uniqueid':_0x1459bb[_0x0a9e('0x21')]['interaction'][_0x2881b3][_0xfbd5ad]}});}}}}return respondWithRpcPromise(_0x0a9e('0x3e'),{'id':_0x1459bb[_0x0a9e('0x19')]['id'],'capacity':_0x1459bb['body']['capacity']},routingClient)['then'](respondWithResult(_0x5b4f5e,null))[_0x0a9e('0xa')](handleError(_0x5b4f5e,null));};exports[_0x0a9e('0x3f')]=function(_0x37edaa,_0x11545a){return respondWithRpcPromise(_0x0a9e('0x40'),_0x37edaa[_0x0a9e('0x15')])[_0x0a9e('0x7')](respondWithResult(_0x11545a,null))[_0x0a9e('0xa')](handleError(_0x11545a,null));};exports['trunks']=function(_0x4b1b9f,_0x53975a){return respondWithRpcPromise(_0x0a9e('0x41'),_0x4b1b9f[_0x0a9e('0x15')])[_0x0a9e('0x7')](respondWithResult(_0x53975a,null))['catch'](handleError(_0x53975a,null));};exports[_0x0a9e('0x42')]=function(_0x161aa7,_0x53d113){return respondWithRpcPromise('Campaigns',_0x161aa7[_0x0a9e('0x15')])['then'](respondWithResult(_0x53d113,null))[_0x0a9e('0xa')](handleError(_0x53d113,null));};exports['chatQueues']=function(_0x2e5e62,_0x3c20b2){return respondWithRpcPromise(_0x0a9e('0x43'),_0x2e5e62['query'],routingClient)[_0x0a9e('0x7')](respondWithResult(_0x3c20b2,null))[_0x0a9e('0xa')](handleError(_0x3c20b2,null));};exports['showChatQueues']=function(_0x50f687,_0x128aa6){return respondWithRpcPromise(_0x0a9e('0x43'),_0x50f687['query'],routingClient)[_0x0a9e('0x7')](findById(_0x50f687['params']['id']))[_0x0a9e('0x7')](respondWithResult(_0x128aa6,null))['catch'](handleError(_0x128aa6,null));};exports[_0x0a9e('0x44')]=function(_0x4a6deb,_0x5da27d){return respondWithRpcPromise('MailQueues',_0x4a6deb[_0x0a9e('0x15')],routingClient)['then'](respondWithResult(_0x5da27d,null))[_0x0a9e('0xa')](handleError(_0x5da27d,null));};exports[_0x0a9e('0x45')]=function(_0x3cfd00,_0x19b4df){return respondWithRpcPromise(_0x0a9e('0x46'),_0x3cfd00[_0x0a9e('0x15')],routingClient)[_0x0a9e('0x7')](findById(_0x3cfd00[_0x0a9e('0x19')]['id']))['then'](respondWithResult(_0x19b4df,null))[_0x0a9e('0xa')](handleError(_0x19b4df,null));};exports[_0x0a9e('0x47')]=function(_0x2642bb,_0x30c491){return respondWithRpcPromise(_0x0a9e('0x48'),_0x2642bb[_0x0a9e('0x15')],mailClient)['then'](respondWithResult(_0x30c491,null))[_0x0a9e('0xa')](handleError(_0x30c491,null));};exports[_0x0a9e('0x49')]=function(_0x5239ef,_0x3649cc){return respondWithRpcPromise('OpenchannelQueues',_0x5239ef[_0x0a9e('0x15')],routingClient)['then'](respondWithResult(_0x3649cc,null))['catch'](handleError(_0x3649cc,null));};exports['showOpenchannelQueues']=function(_0x273cb5,_0x49d231){return respondWithRpcPromise(_0x0a9e('0x4a'),_0x273cb5[_0x0a9e('0x15')],routingClient)[_0x0a9e('0x7')](findById(_0x273cb5[_0x0a9e('0x19')]['id']))[_0x0a9e('0x7')](respondWithResult(_0x49d231,null))[_0x0a9e('0xa')](handleError(_0x49d231,null));};exports['smsQueues']=function(_0x1627a7,_0x5854cc){return respondWithRpcPromise(_0x0a9e('0x4b'),_0x1627a7[_0x0a9e('0x15')],routingClient)[_0x0a9e('0x7')](respondWithResult(_0x5854cc,null))['catch'](handleError(_0x5854cc,null));};exports[_0x0a9e('0x4c')]=function(_0x156f1c,_0x119677){return respondWithRpcPromise(_0x0a9e('0x4b'),_0x156f1c['query'],routingClient)[_0x0a9e('0x7')](findById(_0x156f1c[_0x0a9e('0x19')]['id']))['then'](respondWithResult(_0x119677,null))[_0x0a9e('0xa')](handleError(_0x119677,null));};exports[_0x0a9e('0x4d')]=function(_0x88dcbf,_0x409b29){return respondWithRpcPromise(_0x0a9e('0x4e'),_0x88dcbf['query'],routingClient)[_0x0a9e('0x7')](respondWithResult(_0x409b29,null))[_0x0a9e('0xa')](handleError(_0x409b29,null));};exports[_0x0a9e('0x4f')]=function(_0x47bb43,_0x3528b7){return respondWithRpcPromise('WhatsappQueues',_0x47bb43['query'],routingClient)[_0x0a9e('0x7')](findById(_0x47bb43[_0x0a9e('0x19')]['id']))[_0x0a9e('0x7')](respondWithResult(_0x3528b7,null))[_0x0a9e('0xa')](handleError(_0x3528b7,null));};exports[_0x0a9e('0x50')]=function(_0xc8c264,_0x387489){return respondWithRpcPromise(_0x0a9e('0x51'),_0xc8c264[_0x0a9e('0x15')],routingClient)[_0x0a9e('0x7')](respondWithResult(_0x387489,null))[_0x0a9e('0xa')](handleError(_0x387489,null));};exports[_0x0a9e('0x52')]=function(_0x2bbb86,_0x2b8192){return respondWithRpcPromise(_0x0a9e('0x51'),_0x2bbb86[_0x0a9e('0x15')],routingClient)[_0x0a9e('0x7')](findById(_0x2bbb86[_0x0a9e('0x19')]['id']))['then'](respondWithResult(_0x2b8192,null))[_0x0a9e('0xa')](handleError(_0x2b8192,null));};exports[_0x0a9e('0x53')]=function(_0x243d12,_0x4edbb0){return respondWithRpcPromise(_0x0a9e('0x54'),_0x243d12[_0x0a9e('0x15')])['then'](respondWithResult(_0x4edbb0,null))[_0x0a9e('0xa')](handleError(_0x4edbb0,null));};exports[_0x0a9e('0x55')]=function(_0x3ef315,_0x427946){return respondWithRpcPromise(_0x0a9e('0x56'),_0x3ef315['query'],routingClient)['then'](respondWithResult(_0x427946,null))['catch'](handleError(_0x427946,null));};exports[_0x0a9e('0x57')]=function(_0x18bf5d,_0x1104ad){return respondWithRpcPromise(_0x0a9e('0x58'),_0x18bf5d[_0x0a9e('0x15')],routingClient)[_0x0a9e('0x7')](respondWithResult(_0x1104ad,null))[_0x0a9e('0xa')](handleError(_0x1104ad,null));};exports[_0x0a9e('0x59')]=function(_0x5512d1,_0x235f8f){return respondWithRpcPromise(_0x0a9e('0x5a'),_0x5512d1[_0x0a9e('0x15')],routingClient)['then'](respondWithResult(_0x235f8f,null))[_0x0a9e('0xa')](handleError(_0x235f8f,null));};exports['openchannelQueuesIdWaitingInteractions']=function(_0x4437ff,_0x44351d){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x4437ff[_0x0a9e('0x15')],routingClient)[_0x0a9e('0x7')](function(_0x2cc7a7){if(_0x4437ff[_0x0a9e('0x15')]['type']!==undefined){var _0x1d442c=_(_0x2cc7a7[_0x0a9e('0x12')])[_0x0a9e('0x5b')]([_0x4437ff[_0x0a9e('0x15')]['type'],_0x4437ff[_0x0a9e('0x19')]['id']])[_0x0a9e('0x5c')](_0x0a9e('0x5d'))[_0x0a9e('0x5e')]()['value']();return _0x2cc7a7[_0x0a9e('0x12')][_0x0a9e('0x5b')](function(_0x30a4c7){return _0x1d442c[_0x0a9e('0x5f')](_0x30a4c7[_0x0a9e('0x5d')])>-0x1;});}else{return _0x2cc7a7[_0x0a9e('0x12')][_0x0a9e('0x5b')](function(_0x3df0e3){return _0x3df0e3[_0x0a9e('0x5d')]===parseInt(_0x4437ff[_0x0a9e('0x19')]['id']);});}})[_0x0a9e('0x7')](respondWithResult(_0x44351d,null))[_0x0a9e('0xa')](handleError(_0x44351d,null));};exports[_0x0a9e('0x60')]=function(_0xe0749e,_0x5b35db){return respondWithRpcPromise(_0x0a9e('0x61'),_0xe0749e[_0x0a9e('0x15')],routingClient)[_0x0a9e('0x7')](respondWithResult(_0x5b35db,null))['catch'](handleError(_0x5b35db,null));};exports[_0x0a9e('0x62')]=function(_0x33dda0,_0x8cea96){return respondWithRpcPromise(_0x0a9e('0x63'),_0x33dda0['query'],routingClient)['then'](respondWithResult(_0x8cea96,null))[_0x0a9e('0xa')](handleError(_0x8cea96,null));};exports[_0x0a9e('0x64')]=function(_0x4c54fa,_0x45108c){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x4c54fa[_0x0a9e('0x15')],routingClient)[_0x0a9e('0x7')](respondWithResult(_0x45108c,null))['catch'](handleError(_0x45108c,null));};exports[_0x0a9e('0x65')]=function(_0x41cf12){return function(_0x2d2286,_0x42b959){var _0x3755fe,_0x1f42a0;var _0x444f1f=_['capitalize'](_0x41cf12);var _0x2973d3=_0x41cf12===_0x0a9e('0x66')?_0x0a9e('0x67'):_0x0a9e('0x68');return db[_0x444f1f+'Queue'][_0x0a9e('0x69')]({'raw':!![],'where':{'id':_0x2d2286[_0x0a9e('0x19')]['id']}})['then'](function(_0x1d6834){if(_['isNil'](_0x1d6834)){throw new Error(_0x444f1f+_0x0a9e('0x6a'));}_0x3755fe=_0x1d6834;return db[_0x444f1f+_0x0a9e('0x6b')][_0x0a9e('0x69')]({'where':{'id':_0x2d2286[_0x0a9e('0x21')]['messageId']},'include':[{'model':db[_0x444f1f+'Interaction'],'as':_0x0a9e('0x6c')},{'model':db[_0x444f1f+_0x2973d3],'as':_0x0a9e('0x68')}]});})[_0x0a9e('0x7')](function(_0x5ac73d){if(_[_0x0a9e('0x10')](_0x5ac73d)){throw new Error(_0x444f1f+_0x0a9e('0x6d'));}_0x1f42a0=_0x5ac73d;return _0x5ac73d['update']({'read':0x0,'readAt':null,'UserId':null});})['then'](function(){var _0xf0a802={'uniqueid':_0x41cf12+'.'+_0x1f42a0['id']+'.'+_0x1f42a0['Interaction']['id'],'FromUserId':_0x2d2286['user']['id'],'type':'queue'};_0xf0a802[_0x444f1f+_0x0a9e('0x6e')]=_0x1f42a0['id'];_0xf0a802[_0x444f1f+_0x0a9e('0x6f')]=_0x1f42a0[_0x0a9e('0x6c')]['id'];_0xf0a802[_0x0a9e('0x70')+_0x444f1f+_0x2973d3+'Id']=_0x1f42a0[_0x0a9e('0x68')]['id'];_0xf0a802['To'+_0x444f1f+_0x0a9e('0x71')]=_0x3755fe['id'];return db[_0x444f1f+'TransferReport'][_0x0a9e('0x72')](_0xf0a802);})['then'](function(){return respondWithRpcPromise(_0x0a9e('0x73'),{'channel':_0x41cf12,'interaction':_0x1f42a0[_0x0a9e('0x6c')],'message':_0x1f42a0,'account':_0x1f42a0[_0x0a9e('0x68')],'applications':[{'id':0x0,'priority':0x1,'app':_0x0a9e('0x74'),'appdata':_0x3755fe['name']+','+(_0x1f42a0[_0x0a9e('0x68')][_0x0a9e('0x75')]||0x12c),'interval':_0x0a9e('0x76')}],'transfer':!![]},routingClient);})['then'](respondWithResult(_0x42b959,null))[_0x0a9e('0xa')](handleError(_0x42b959,null));};};exports[_0x0a9e('0x77')]=function(_0x2a563d,_0x22063c){var _0x255e49,_0x1910bf;if(_[_0x0a9e('0x10')](_0x2a563d[_0x0a9e('0x21')]['channel'])){throw new Error(_0x0a9e('0x78'));}var _0x3325c5=_0x2a563d['body'][_0x0a9e('0x79')];var _0x982340=_[_0x0a9e('0x7a')](_0x3325c5);var _0x5a26c8=_0x3325c5===_0x0a9e('0x66')?'Website':_0x0a9e('0x68');return db[_0x0a9e('0x7b')][_0x0a9e('0x69')]({'raw':!![],'where':{'id':_0x2a563d[_0x0a9e('0x19')]['id'],'role':_0x0a9e('0x3c')}})[_0x0a9e('0x7')](function(_0x16a039){if(_[_0x0a9e('0x10')](_0x16a039)){throw new Error('Agent\x20not\x20found');}_0x255e49=_0x16a039;return db[_0x982340+_0x0a9e('0x6b')][_0x0a9e('0x69')]({'where':{'id':_0x2a563d[_0x0a9e('0x21')][_0x0a9e('0x7c')]},'include':[{'model':db[_0x982340+_0x0a9e('0x6c')],'as':_0x0a9e('0x6c')},{'model':db[_0x982340+_0x5a26c8],'as':_0x0a9e('0x68')}]});})[_0x0a9e('0x7')](function(_0x1808ba){if(_[_0x0a9e('0x10')](_0x1808ba)){throw new Error(_0x982340+_0x0a9e('0x6d'));}_0x1910bf=_0x1808ba;return _0x1808ba[_0x0a9e('0x7d')]({'read':0x0,'readAt':null,'UserId':null});})[_0x0a9e('0x7')](function(){var _0x4989f9={'uniqueid':_0x3325c5+'.'+_0x1910bf['id']+'.'+_0x1910bf[_0x0a9e('0x6c')]['id'],'FromUserId':_0x2a563d[_0x0a9e('0x31')]['id'],'type':_0x0a9e('0x3c'),'ToUserId':_0x255e49['id']};_0x4989f9[_0x982340+_0x0a9e('0x6e')]=_0x1910bf['id'];_0x4989f9[_0x982340+_0x0a9e('0x6f')]=_0x1910bf['Interaction']['id'];_0x4989f9[_0x0a9e('0x70')+_0x982340+_0x5a26c8+'Id']=_0x1910bf[_0x0a9e('0x68')]['id'];return db[_0x982340+'TransferReport'][_0x0a9e('0x72')](_0x4989f9);})['then'](function(){return respondWithRpcPromise(_0x0a9e('0x73'),{'channel':_0x3325c5,'interaction':_0x1910bf[_0x0a9e('0x6c')],'message':_0x1910bf,'account':_0x1910bf[_0x0a9e('0x68')],'applications':[{'id':0x0,'priority':0x1,'app':_0x0a9e('0x3c'),'appdata':_0x255e49['name']+','+(_0x1910bf[_0x0a9e('0x68')]['agentTransferTimeout']||0x12c),'interval':_0x0a9e('0x76')}],'transfer':!![]},routingClient);})[_0x0a9e('0x7')](respondWithResult(_0x22063c,null))['catch'](handleError(_0x22063c,null));};
\ No newline at end of file
index 1d0c4a6..488a838 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc73e=['express','fs-extra','../../components/interaction/service','../../config/environment','./schedule.controller','index','get','/:id','show','isAuthenticated','run','post','create','put','update','delete','destroy','multer','util','connect-timeout'];(function(_0x457af1,_0x30a5e1){var _0xc1b35e=function(_0xf95d66){while(--_0xf95d66){_0x457af1['push'](_0x457af1['shift']());}};_0xc1b35e(++_0x30a5e1);}(_0xc73e,0x165));var _0xec73=function(_0x399146,_0x2dc81f){_0x399146=_0x399146-0x0;var _0x2faa7c=_0xc73e[_0x399146];return _0x2faa7c;};'use strict';var multer=require(_0xec73('0x0'));var util=require(_0xec73('0x1'));var path=require('path');var timeout=require(_0xec73('0x2'));var express=require(_0xec73('0x3'));var router=express['Router']();var fs_extra=require(_0xec73('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xec73('0x5'));var config=require(_0xec73('0x6'));var controller=require(_0xec73('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xec73('0x8')]);router[_0xec73('0x9')](_0xec73('0xa'),auth['isAuthenticated'](),controller[_0xec73('0xb')]);router['get']('/:id/run',auth[_0xec73('0xc')](),controller[_0xec73('0xd')]);router[_0xec73('0xe')]('/',auth[_0xec73('0xc')](),controller[_0xec73('0xf')]);router[_0xec73('0x10')](_0xec73('0xa'),auth[_0xec73('0xc')](),controller[_0xec73('0x11')]);router[_0xec73('0x12')](_0xec73('0xa'),auth[_0xec73('0xc')](),controller[_0xec73('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x5065=['post','create','delete','destroy','exports','multer','util','connect-timeout','Router','../../components/auth/service','./schedule.controller','isAuthenticated','index','get','/:id','/:id/run'];(function(_0x57db4c,_0x8f9084){var _0x1758f2=function(_0x141a33){while(--_0x141a33){_0x57db4c['push'](_0x57db4c['shift']());}};_0x1758f2(++_0x8f9084);}(_0x5065,0x85));var _0x5506=function(_0x489168,_0x1ed07c){_0x489168=_0x489168-0x0;var _0x1ccc8d=_0x5065[_0x489168];return _0x1ccc8d;};'use strict';var multer=require(_0x5506('0x0'));var util=require(_0x5506('0x1'));var path=require('path');var timeout=require(_0x5506('0x2'));var express=require('express');var router=express[_0x5506('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5506('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x5506('0x5'));router['get']('/',auth[_0x5506('0x6')](),controller[_0x5506('0x7')]);router[_0x5506('0x8')](_0x5506('0x9'),auth[_0x5506('0x6')](),controller['show']);router[_0x5506('0x8')](_0x5506('0xa'),auth[_0x5506('0x6')](),controller['run']);router[_0x5506('0xb')]('/',auth['isAuthenticated'](),controller[_0x5506('0xc')]);router['put'](_0x5506('0x9'),auth[_0x5506('0x6')](),controller['update']);router[_0x5506('0xd')](_0x5506('0x9'),auth['isAuthenticated'](),controller[_0x5506('0xe')]);module[_0x5506('0xf')]=router;
\ No newline at end of file
index a519add..4fde7c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7dd=['DATE','INTEGER','ENUM','years','quarters','weeks','days','hours','csv','pdf','xlsx','custom','default','TEXT','sequelize','STRING','BOOLEAN','0\x200\x20*\x20*\x20*'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa7dd,0x140));var _0xda7d=function(_0xb2dfd7,_0x235881){_0xb2dfd7=_0xb2dfd7-0x0;var _0x51d3a9=_0xa7dd[_0xb2dfd7];return _0x51d3a9;};'use strict';var Sequelize=require(_0xda7d('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xda7d('0x1')]},'active':{'type':Sequelize[_0xda7d('0x2')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xda7d('0x1')],'allowNull':![],'defaultValue':_0xda7d('0x3')},'startAt':{'type':Sequelize[_0xda7d('0x4')],'allowNull':![]},'endAt':{'type':Sequelize[_0xda7d('0x4')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xda7d('0x5')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xda7d('0x6')](_0xda7d('0x7'),_0xda7d('0x8'),'months',_0xda7d('0x9'),_0xda7d('0xa'),_0xda7d('0xb'),'minutes'),'allowNull':![],'defaultValue':_0xda7d('0xa')},'output':{'type':Sequelize[_0xda7d('0x6')](_0xda7d('0xc'),_0xda7d('0xd'),_0xda7d('0xe')),'allowNull':![],'defaultValue':_0xda7d('0xc')},'type':{'type':Sequelize[_0xda7d('0x6')](_0xda7d('0xf'),_0xda7d('0x10')),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0xda7d('0x1')]},'cc':{'type':Sequelize[_0xda7d('0x11')]},'bcc':{'type':Sequelize[_0xda7d('0x11')]},'sendIfEmpty':{'type':Sequelize[_0xda7d('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x48e9=['years','weeks','days','minutes','ENUM','csv','pdf','xlsx','default','custom','BOOLEAN','TEXT','sequelize','exports','STRING','DATE','INTEGER'];(function(_0x52d1eb,_0x3b2687){var _0x31e197=function(_0x3ecec1){while(--_0x3ecec1){_0x52d1eb['push'](_0x52d1eb['shift']());}};_0x31e197(++_0x3b2687);}(_0x48e9,0xc7));var _0x948e=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x48e9[_0x42cae2];return _0x5f256f;};'use strict';var Sequelize=require(_0x948e('0x0'));module[_0x948e('0x1')]={'name':{'type':Sequelize[_0x948e('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x948e('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x948e('0x2')],'allowNull':![],'defaultValue':'0\x200\x20*\x20*\x20*'},'startAt':{'type':Sequelize[_0x948e('0x3')],'allowNull':![]},'endAt':{'type':Sequelize[_0x948e('0x3')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x948e('0x4')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0x948e('0x5'),'quarters','months',_0x948e('0x6'),_0x948e('0x7'),'hours',_0x948e('0x8')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize[_0x948e('0x9')](_0x948e('0xa'),_0x948e('0xb'),_0x948e('0xc')),'allowNull':![],'defaultValue':_0x948e('0xa')},'type':{'type':Sequelize[_0x948e('0x9')]('custom',_0x948e('0xd')),'allowNull':![],'defaultValue':_0x948e('0xe')},'sendMail':{'type':Sequelize[_0x948e('0xf')],'defaultValue':![]},'email':{'type':Sequelize[_0x948e('0x2')]},'cc':{'type':Sequelize[_0x948e('0x10')]},'bcc':{'type':Sequelize[_0x948e('0x10')]},'sendIfEmpty':{'type':Sequelize[_0x948e('0xf')],'defaultValue':!![]}};
\ No newline at end of file
index cdb3bef..b18e790 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ab3=['then','error','stack','name','send','index','Schedule','rawAttributes','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','filter','options','includeAll','include','rows','catch','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','run','../../config/schedule','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','get','Scheduler'];(function(_0x9782f5,_0x4bb4ac){var _0x3bdb54=function(_0x2ec44f){while(--_0x2ec44f){_0x9782f5['push'](_0x9782f5['shift']());}};_0x3bdb54(++_0x4bb4ac);}(_0x0ab3,0x86));var _0x30ab=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x0ab3[_0x397e5f];return _0x5302b8;};'use strict';var emlformat=require(_0x30ab('0x0'));var rimraf=require(_0x30ab('0x1'));var zipdir=require(_0x30ab('0x2'));var jsonpatch=require(_0x30ab('0x3'));var rp=require(_0x30ab('0x4'));var moment=require(_0x30ab('0x5'));var BPromise=require(_0x30ab('0x6'));var Mustache=require(_0x30ab('0x7'));var util=require('util');var path=require(_0x30ab('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x30ab('0x9'));var _=require(_0x30ab('0xa'));var squel=require(_0x30ab('0xb'));var crypto=require(_0x30ab('0xc'));var jsforce=require(_0x30ab('0xd'));var deskjs=require(_0x30ab('0xe'));var toCsv=require(_0x30ab('0xf'));var querystring=require(_0x30ab('0x10'));var Papa=require(_0x30ab('0x11'));var Redis=require('ioredis');var authService=require(_0x30ab('0x12'));var qs=require(_0x30ab('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x30ab('0x14'));var logger=require(_0x30ab('0x15'))(_0x30ab('0x16'));var utils=require(_0x30ab('0x17'));var config=require(_0x30ab('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x30ab('0x19'))['db'];function respondWithStatusCode(_0x2ddf2a,_0x4b2c2e){_0x4b2c2e=_0x4b2c2e||0xcc;return function(_0x260988){if(_0x260988){return _0x2ddf2a[_0x30ab('0x1a')](_0x4b2c2e);}return _0x2ddf2a[_0x30ab('0x1b')](_0x4b2c2e)[_0x30ab('0x1c')]();};}function respondWithResult(_0x2cce26,_0x227997){_0x227997=_0x227997||0xc8;return function(_0x5526b7){if(_0x5526b7){return _0x2cce26[_0x30ab('0x1b')](_0x227997)[_0x30ab('0x1d')](_0x5526b7);}};}function respondWithFilteredResult(_0x218e39,_0x1fdaa6){return function(_0x1f2bbc){if(_0x1f2bbc){var _0x1338c6=typeof _0x1fdaa6[_0x30ab('0x1e')]===_0x30ab('0x1f')&&typeof _0x1fdaa6[_0x30ab('0x20')]===_0x30ab('0x1f');var _0x1190ee=_0x1f2bbc[_0x30ab('0x21')];var _0x5650fd=_0x1338c6?0x0:_0x1fdaa6[_0x30ab('0x1e')];var _0x110114=_0x1338c6?_0x1f2bbc[_0x30ab('0x21')]:_0x1fdaa6['offset']+_0x1fdaa6[_0x30ab('0x20')];var _0x4bef5f;if(_0x110114>=_0x1190ee){_0x110114=_0x1190ee;_0x4bef5f=0xc8;}else{_0x4bef5f=0xce;}_0x218e39[_0x30ab('0x1b')](_0x4bef5f);return _0x218e39[_0x30ab('0x22')](_0x30ab('0x23'),_0x5650fd+'-'+_0x110114+'/'+_0x1190ee)[_0x30ab('0x1d')](_0x1f2bbc);}return null;};}function patchUpdates(_0x4bd914){return function(_0x1892e5){try{jsonpatch[_0x30ab('0x24')](_0x1892e5,_0x4bd914,!![]);}catch(_0x4fd379){return BPromise[_0x30ab('0x25')](_0x4fd379);}return _0x1892e5[_0x30ab('0x26')]();};}function saveUpdates(_0x571dd5,_0x22e9ac){return function(_0x277a9f){if(_0x277a9f){return _0x277a9f[_0x30ab('0x27')](_0x571dd5)['then'](function(_0x4df431){return _0x4df431;});}return null;};}function removeEntity(_0x564056,_0x5b4e1c){return function(_0x182f4a){if(_0x182f4a){return _0x182f4a['destroy']()['then'](function(){var _0x24a2e2=_0x182f4a[_0x30ab('0x28')]({'plain':!![]});var _0x39b18f=_0x30ab('0x29');return db['UserProfileResource']['destroy']({'where':{'type':_0x39b18f,'resourceId':_0x24a2e2['id']}})[_0x30ab('0x2a')](function(){return _0x182f4a;});})['then'](function(){_0x564056[_0x30ab('0x1b')](0xcc)[_0x30ab('0x1c')]();});}};}function handleEntityNotFound(_0x3ca07e,_0x19580){return function(_0x281647){if(!_0x281647){_0x3ca07e[_0x30ab('0x1a')](0x194);}return _0x281647;};}function handleError(_0x34a130,_0x258b7b){_0x258b7b=_0x258b7b||0x1f4;return function(_0x566d42){logger[_0x30ab('0x2b')](_0x566d42[_0x30ab('0x2c')]);if(_0x566d42['name']){delete _0x566d42[_0x30ab('0x2d')];}_0x34a130[_0x30ab('0x1b')](_0x258b7b)[_0x30ab('0x2e')](_0x566d42);};}exports[_0x30ab('0x2f')]=function(_0x190e3e,_0x438e6b){var _0x156b8c={},_0x41f53a={},_0xb9e53b={'count':0x0,'rows':[]};var _0x5af83=_['map'](db[_0x30ab('0x30')][_0x30ab('0x31')],function(_0x36b795){return{'name':_0x36b795['fieldName'],'type':_0x36b795[_0x30ab('0x32')][_0x30ab('0x33')]};});_0x41f53a[_0x30ab('0x34')]=_[_0x30ab('0x35')](_0x5af83,_0x30ab('0x2d'));_0x41f53a[_0x30ab('0x36')]=_[_0x30ab('0x37')](_0x190e3e[_0x30ab('0x36')]);_0x41f53a['filters']=_[_0x30ab('0x38')](_0x41f53a[_0x30ab('0x34')],_0x41f53a[_0x30ab('0x36')]);_0x156b8c[_0x30ab('0x39')]=_[_0x30ab('0x38')](_0x41f53a[_0x30ab('0x34')],qs[_0x30ab('0x3a')](_0x190e3e[_0x30ab('0x36')][_0x30ab('0x3a')]));_0x156b8c[_0x30ab('0x39')]=_0x156b8c[_0x30ab('0x39')][_0x30ab('0x3b')]?_0x156b8c[_0x30ab('0x39')]:_0x41f53a[_0x30ab('0x34')];if(!_0x190e3e[_0x30ab('0x36')][_0x30ab('0x3c')](_0x30ab('0x3d'))){_0x156b8c[_0x30ab('0x20')]=qs[_0x30ab('0x20')](_0x190e3e[_0x30ab('0x36')][_0x30ab('0x20')]);_0x156b8c[_0x30ab('0x1e')]=qs['offset'](_0x190e3e['query'][_0x30ab('0x1e')]);}_0x156b8c[_0x30ab('0x3e')]=qs[_0x30ab('0x3f')](_0x190e3e['query'][_0x30ab('0x3f')]);_0x156b8c[_0x30ab('0x40')]=qs[_0x30ab('0x41')](_[_0x30ab('0x42')](_0x190e3e[_0x30ab('0x36')],_0x41f53a['filters']),_0x5af83);if(_0x190e3e[_0x30ab('0x36')]['filter']){_0x156b8c[_0x30ab('0x40')]=_[_0x30ab('0x43')](_0x156b8c[_0x30ab('0x40')],{'$or':_['map'](_0x5af83,function(_0x537eed){if(_0x537eed[_0x30ab('0x32')]!=='VIRTUAL'){var _0x5015a8={};_0x5015a8[_0x537eed[_0x30ab('0x2d')]]={'$like':'%'+_0x190e3e[_0x30ab('0x36')][_0x30ab('0x44')]+'%'};return _0x5015a8;}})});}_0x156b8c=_[_0x30ab('0x43')]({},_0x156b8c,_0x190e3e[_0x30ab('0x45')]);var _0x525460={'where':_0x156b8c[_0x30ab('0x40')]};return db[_0x30ab('0x30')][_0x30ab('0x21')](_0x525460)[_0x30ab('0x2a')](function(_0x355b9f){_0xb9e53b[_0x30ab('0x21')]=_0x355b9f;if(_0x190e3e['query'][_0x30ab('0x46')]){_0x156b8c[_0x30ab('0x47')]=[{'all':!![]}];}return db[_0x30ab('0x30')]['findAll'](_0x156b8c);})['then'](function(_0x5a83ff){_0xb9e53b[_0x30ab('0x48')]=_0x5a83ff;return _0xb9e53b;})['then'](respondWithFilteredResult(_0x438e6b,_0x156b8c))[_0x30ab('0x49')](handleError(_0x438e6b,null));};exports[_0x30ab('0x4a')]=function(_0xa0093c,_0x51540a){var _0x54387d={'raw':![],'where':{'id':_0xa0093c[_0x30ab('0x4b')]['id']}},_0x6be034={};_0x6be034[_0x30ab('0x34')]=_['keys'](db['Schedule'][_0x30ab('0x31')]);_0x6be034[_0x30ab('0x36')]=_['keys'](_0xa0093c['query']);_0x6be034[_0x30ab('0x41')]=_[_0x30ab('0x38')](_0x6be034[_0x30ab('0x34')],_0x6be034[_0x30ab('0x36')]);_0x54387d[_0x30ab('0x39')]=_['intersection'](_0x6be034[_0x30ab('0x34')],qs[_0x30ab('0x3a')](_0xa0093c['query'][_0x30ab('0x3a')]));_0x54387d[_0x30ab('0x39')]=_0x54387d[_0x30ab('0x39')][_0x30ab('0x3b')]?_0x54387d[_0x30ab('0x39')]:_0x6be034[_0x30ab('0x34')];if(_0xa0093c['query'][_0x30ab('0x46')]){_0x54387d['include']=[{'all':!![]}];}_0x54387d=_[_0x30ab('0x43')]({},_0x54387d,_0xa0093c[_0x30ab('0x45')]);return db[_0x30ab('0x30')][_0x30ab('0x4c')](_0x54387d)[_0x30ab('0x2a')](handleEntityNotFound(_0x51540a,null))[_0x30ab('0x2a')](respondWithResult(_0x51540a,null))['catch'](handleError(_0x51540a,null));};exports[_0x30ab('0x4d')]=function(_0x206a02,_0x2f7045){return db['Schedule'][_0x30ab('0x4d')](_0x206a02['body'],{})[_0x30ab('0x2a')](function(_0x38c5ad){var _0x345779=_0x206a02[_0x30ab('0x4e')][_0x30ab('0x28')]({'plain':!![]});if(!_0x345779)throw new Error(_0x30ab('0x4f'));if(_0x345779[_0x30ab('0x50')]===_0x30ab('0x4e')){var _0x240c3d=_0x38c5ad[_0x30ab('0x28')]({'plain':!![]});var _0x4e14f4='Scheduler';return db[_0x30ab('0x51')][_0x30ab('0x4c')]({'where':{'name':_0x4e14f4,'userProfileId':_0x345779[_0x30ab('0x52')]},'raw':!![]})[_0x30ab('0x2a')](function(_0x48feb9){if(_0x48feb9&&_0x48feb9['autoAssociation']===0x0){return db['UserProfileResource'][_0x30ab('0x4d')]({'name':_0x240c3d[_0x30ab('0x2d')],'resourceId':_0x240c3d['id'],'type':_0x48feb9[_0x30ab('0x2d')],'sectionId':_0x48feb9['id']},{})[_0x30ab('0x2a')](function(){return _0x38c5ad;});}else{return _0x38c5ad;}})[_0x30ab('0x49')](function(_0x163c5d){logger['error'](_0x30ab('0x53'),_0x163c5d);throw _0x163c5d;});}return _0x38c5ad;})['then'](respondWithResult(_0x2f7045,0xc9))[_0x30ab('0x49')](handleError(_0x2f7045,null));};exports[_0x30ab('0x27')]=function(_0x962afb,_0x2cf67d){if(_0x962afb[_0x30ab('0x54')]['id']){delete _0x962afb[_0x30ab('0x54')]['id'];}return db['Schedule'][_0x30ab('0x4c')]({'where':{'id':_0x962afb['params']['id']}})['then'](handleEntityNotFound(_0x2cf67d,null))[_0x30ab('0x2a')](saveUpdates(_0x962afb['body'],null))['then'](respondWithResult(_0x2cf67d,null))[_0x30ab('0x49')](handleError(_0x2cf67d,null));};exports[_0x30ab('0x55')]=function(_0x5c82d0,_0x33843a){return db[_0x30ab('0x30')][_0x30ab('0x4c')]({'where':{'id':_0x5c82d0[_0x30ab('0x4b')]['id']}})[_0x30ab('0x2a')](handleEntityNotFound(_0x33843a,null))[_0x30ab('0x2a')](removeEntity(_0x33843a,null))[_0x30ab('0x49')](handleError(_0x33843a,null));};exports[_0x30ab('0x56')]=function(_0x2fbde4,_0x47428d,_0x1fe0a6){var _0x3edd25=require(_0x30ab('0x57'));return db[_0x30ab('0x30')][_0x30ab('0x4c')]({'where':{'id':_0x2fbde4[_0x30ab('0x4b')]['id']},'raw':!![]})[_0x30ab('0x2a')](handleEntityNotFound(_0x47428d,null))[_0x30ab('0x2a')](function(){_0x3edd25[_0x30ab('0x56')](_0x2fbde4[_0x30ab('0x4b')]['id']);})[_0x30ab('0x2a')](respondWithStatusCode(_0x47428d,null))[_0x30ab('0x49')](handleError(_0x47428d,null));};
\ No newline at end of file
+var _0xfdea=['type','key','model','map','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','rows','catch','show','params','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Scheduler','userProfileId','autoAssociation','run','../../config/schedule','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','apply','then','get','UserProfileResource','destroy','stack','name','send','index','Schedule','fieldName'];(function(_0x1406c1,_0x5e3765){var _0x77284c=function(_0x1ac77c){while(--_0x1ac77c){_0x1406c1['push'](_0x1406c1['shift']());}};_0x77284c(++_0x5e3765);}(_0xfdea,0x11d));var _0xafde=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0xfdea[_0x397e5f];return _0x5302b8;};'use strict';var emlformat=require(_0xafde('0x0'));var rimraf=require(_0xafde('0x1'));var zipdir=require(_0xafde('0x2'));var jsonpatch=require(_0xafde('0x3'));var rp=require(_0xafde('0x4'));var moment=require(_0xafde('0x5'));var BPromise=require(_0xafde('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0xafde('0x7'));var sox=require(_0xafde('0x8'));var csv=require(_0xafde('0x9'));var ejs=require(_0xafde('0xa'));var fs=require('fs');var fs_extra=require(_0xafde('0xb'));var _=require(_0xafde('0xc'));var squel=require(_0xafde('0xd'));var crypto=require(_0xafde('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xafde('0xf'));var toCsv=require('to-csv');var querystring=require(_0xafde('0x10'));var Papa=require(_0xafde('0x11'));var Redis=require(_0xafde('0x12'));var authService=require(_0xafde('0x13'));var qs=require(_0xafde('0x14'));var as=require(_0xafde('0x15'));var hardwareService=require(_0xafde('0x16'));var logger=require(_0xafde('0x17'))(_0xafde('0x18'));var utils=require('../../config/utils');var config=require(_0xafde('0x19'));var licenseUtil=require(_0xafde('0x1a'));var db=require(_0xafde('0x1b'))['db'];function respondWithStatusCode(_0x455a54,_0x18567d){_0x18567d=_0x18567d||0xcc;return function(_0x2a4100){if(_0x2a4100){return _0x455a54[_0xafde('0x1c')](_0x18567d);}return _0x455a54[_0xafde('0x1d')](_0x18567d)['end']();};}function respondWithResult(_0x3baa43,_0x14adad){_0x14adad=_0x14adad||0xc8;return function(_0x571d68){if(_0x571d68){return _0x3baa43[_0xafde('0x1d')](_0x14adad)[_0xafde('0x1e')](_0x571d68);}};}function respondWithFilteredResult(_0x53ace4,_0x47cfca){return function(_0x53f811){if(_0x53f811){var _0x53ad0d=typeof _0x47cfca['offset']===_0xafde('0x1f')&&typeof _0x47cfca['limit']===_0xafde('0x1f');var _0x3b6099=_0x53f811[_0xafde('0x20')];var _0x18334b=_0x53ad0d?0x0:_0x47cfca[_0xafde('0x21')];var _0x1d0d9e=_0x53ad0d?_0x53f811['count']:_0x47cfca[_0xafde('0x21')]+_0x47cfca[_0xafde('0x22')];var _0x492420;if(_0x1d0d9e>=_0x3b6099){_0x1d0d9e=_0x3b6099;_0x492420=0xc8;}else{_0x492420=0xce;}_0x53ace4[_0xafde('0x1d')](_0x492420);return _0x53ace4[_0xafde('0x23')]('Content-Range',_0x18334b+'-'+_0x1d0d9e+'/'+_0x3b6099)[_0xafde('0x1e')](_0x53f811);}return null;};}function patchUpdates(_0xac3c67){return function(_0x34a426){try{jsonpatch[_0xafde('0x24')](_0x34a426,_0xac3c67,!![]);}catch(_0x4d554a){return BPromise['reject'](_0x4d554a);}return _0x34a426['save']();};}function saveUpdates(_0x57e1e1,_0x10529f){return function(_0x1a84f7){if(_0x1a84f7){return _0x1a84f7['update'](_0x57e1e1)[_0xafde('0x25')](function(_0x400500){return _0x400500;});}return null;};}function removeEntity(_0x73656c,_0x73650c){return function(_0x2c46ee){if(_0x2c46ee){return _0x2c46ee['destroy']()['then'](function(){var _0x214e26=_0x2c46ee[_0xafde('0x26')]({'plain':!![]});var _0x523265='Scheduler';return db[_0xafde('0x27')][_0xafde('0x28')]({'where':{'type':_0x523265,'resourceId':_0x214e26['id']}})[_0xafde('0x25')](function(){return _0x2c46ee;});})[_0xafde('0x25')](function(){_0x73656c[_0xafde('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3df26c,_0x29d68b){return function(_0x1e92f9){if(!_0x1e92f9){_0x3df26c[_0xafde('0x1c')](0x194);}return _0x1e92f9;};}function handleError(_0x5ac598,_0x1bb6c7){_0x1bb6c7=_0x1bb6c7||0x1f4;return function(_0x37e219){logger['error'](_0x37e219[_0xafde('0x29')]);if(_0x37e219[_0xafde('0x2a')]){delete _0x37e219[_0xafde('0x2a')];}_0x5ac598[_0xafde('0x1d')](_0x1bb6c7)[_0xafde('0x2b')](_0x37e219);};}exports[_0xafde('0x2c')]=function(_0x4c51c8,_0x1f0e35){var _0x18e340={},_0x47ba9a={},_0x43afd4={'count':0x0,'rows':[]};var _0x4076b4=_['map'](db[_0xafde('0x2d')]['rawAttributes'],function(_0x427092){return{'name':_0x427092[_0xafde('0x2e')],'type':_0x427092[_0xafde('0x2f')][_0xafde('0x30')]};});_0x47ba9a[_0xafde('0x31')]=_[_0xafde('0x32')](_0x4076b4,'name');_0x47ba9a[_0xafde('0x33')]=_[_0xafde('0x34')](_0x4c51c8[_0xafde('0x33')]);_0x47ba9a['filters']=_[_0xafde('0x35')](_0x47ba9a[_0xafde('0x31')],_0x47ba9a['query']);_0x18e340['attributes']=_[_0xafde('0x35')](_0x47ba9a['model'],qs[_0xafde('0x36')](_0x4c51c8[_0xafde('0x33')][_0xafde('0x36')]));_0x18e340[_0xafde('0x37')]=_0x18e340[_0xafde('0x37')]['length']?_0x18e340['attributes']:_0x47ba9a[_0xafde('0x31')];if(!_0x4c51c8[_0xafde('0x33')][_0xafde('0x38')](_0xafde('0x39'))){_0x18e340['limit']=qs['limit'](_0x4c51c8[_0xafde('0x33')][_0xafde('0x22')]);_0x18e340[_0xafde('0x21')]=qs[_0xafde('0x21')](_0x4c51c8[_0xafde('0x33')]['offset']);}_0x18e340[_0xafde('0x3a')]=qs[_0xafde('0x3b')](_0x4c51c8['query']['sort']);_0x18e340[_0xafde('0x3c')]=qs[_0xafde('0x3d')](_[_0xafde('0x3e')](_0x4c51c8[_0xafde('0x33')],_0x47ba9a[_0xafde('0x3d')]),_0x4076b4);if(_0x4c51c8[_0xafde('0x33')][_0xafde('0x3f')]){_0x18e340['where']=_['merge'](_0x18e340[_0xafde('0x3c')],{'$or':_[_0xafde('0x32')](_0x4076b4,function(_0x47200c){if(_0x47200c['type']!=='VIRTUAL'){var _0x404cd6={};_0x404cd6[_0x47200c[_0xafde('0x2a')]]={'$like':'%'+_0x4c51c8['query']['filter']+'%'};return _0x404cd6;}})});}_0x18e340=_[_0xafde('0x40')]({},_0x18e340,_0x4c51c8[_0xafde('0x41')]);var _0xd6b575={'where':_0x18e340[_0xafde('0x3c')]};return db['Schedule'][_0xafde('0x20')](_0xd6b575)[_0xafde('0x25')](function(_0x24b087){_0x43afd4['count']=_0x24b087;if(_0x4c51c8[_0xafde('0x33')][_0xafde('0x42')]){_0x18e340['include']=[{'all':!![]}];}return db[_0xafde('0x2d')]['findAll'](_0x18e340);})[_0xafde('0x25')](function(_0x2286b9){_0x43afd4[_0xafde('0x43')]=_0x2286b9;return _0x43afd4;})['then'](respondWithFilteredResult(_0x1f0e35,_0x18e340))[_0xafde('0x44')](handleError(_0x1f0e35,null));};exports[_0xafde('0x45')]=function(_0x263179,_0x102224){var _0x261a5f={'raw':![],'where':{'id':_0x263179[_0xafde('0x46')]['id']}},_0x21ecf2={};_0x21ecf2[_0xafde('0x31')]=_[_0xafde('0x34')](db[_0xafde('0x2d')][_0xafde('0x47')]);_0x21ecf2[_0xafde('0x33')]=_[_0xafde('0x34')](_0x263179[_0xafde('0x33')]);_0x21ecf2['filters']=_['intersection'](_0x21ecf2[_0xafde('0x31')],_0x21ecf2[_0xafde('0x33')]);_0x261a5f[_0xafde('0x37')]=_[_0xafde('0x35')](_0x21ecf2[_0xafde('0x31')],qs[_0xafde('0x36')](_0x263179[_0xafde('0x33')][_0xafde('0x36')]));_0x261a5f[_0xafde('0x37')]=_0x261a5f[_0xafde('0x37')]['length']?_0x261a5f['attributes']:_0x21ecf2[_0xafde('0x31')];if(_0x263179['query'][_0xafde('0x42')]){_0x261a5f['include']=[{'all':!![]}];}_0x261a5f=_[_0xafde('0x40')]({},_0x261a5f,_0x263179[_0xafde('0x41')]);return db[_0xafde('0x2d')][_0xafde('0x48')](_0x261a5f)[_0xafde('0x25')](handleEntityNotFound(_0x102224,null))['then'](respondWithResult(_0x102224,null))[_0xafde('0x44')](handleError(_0x102224,null));};exports[_0xafde('0x49')]=function(_0x2695fb,_0x5edc55){return db[_0xafde('0x2d')]['create'](_0x2695fb[_0xafde('0x4a')],{})[_0xafde('0x25')](function(_0x4217b0){var _0x2c896e=_0x2695fb[_0xafde('0x4b')]['get']({'plain':!![]});if(!_0x2c896e)throw new Error(_0xafde('0x4c'));if(_0x2c896e[_0xafde('0x4d')]===_0xafde('0x4b')){var _0x30939e=_0x4217b0[_0xafde('0x26')]({'plain':!![]});var _0xcd3f77=_0xafde('0x4e');return db['UserProfileSection']['find']({'where':{'name':_0xcd3f77,'userProfileId':_0x2c896e[_0xafde('0x4f')]},'raw':!![]})[_0xafde('0x25')](function(_0x537abd){if(_0x537abd&&_0x537abd[_0xafde('0x50')]===0x0){return db['UserProfileResource'][_0xafde('0x49')]({'name':_0x30939e[_0xafde('0x2a')],'resourceId':_0x30939e['id'],'type':_0x537abd[_0xafde('0x2a')],'sectionId':_0x537abd['id']},{})[_0xafde('0x25')](function(){return _0x4217b0;});}else{return _0x4217b0;}})[_0xafde('0x44')](function(_0x2e9d59){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2e9d59);throw _0x2e9d59;});}return _0x4217b0;})[_0xafde('0x25')](respondWithResult(_0x5edc55,0xc9))[_0xafde('0x44')](handleError(_0x5edc55,null));};exports['update']=function(_0x5e8fc2,_0x435e5f){if(_0x5e8fc2[_0xafde('0x4a')]['id']){delete _0x5e8fc2['body']['id'];}return db[_0xafde('0x2d')][_0xafde('0x48')]({'where':{'id':_0x5e8fc2[_0xafde('0x46')]['id']}})['then'](handleEntityNotFound(_0x435e5f,null))[_0xafde('0x25')](saveUpdates(_0x5e8fc2['body'],null))[_0xafde('0x25')](respondWithResult(_0x435e5f,null))[_0xafde('0x44')](handleError(_0x435e5f,null));};exports[_0xafde('0x28')]=function(_0xec4586,_0x48c20e){return db[_0xafde('0x2d')][_0xafde('0x48')]({'where':{'id':_0xec4586[_0xafde('0x46')]['id']}})['then'](handleEntityNotFound(_0x48c20e,null))[_0xafde('0x25')](removeEntity(_0x48c20e,null))['catch'](handleError(_0x48c20e,null));};exports[_0xafde('0x51')]=function(_0x5deaa5,_0x5cf721,_0x1cf1f7){var _0x4e5a90=require(_0xafde('0x52'));return db['Schedule'][_0xafde('0x48')]({'where':{'id':_0x5deaa5[_0xafde('0x46')]['id']},'raw':!![]})[_0xafde('0x25')](handleEntityNotFound(_0x5cf721,null))[_0xafde('0x25')](function(){_0x4e5a90[_0xafde('0x51')](_0x5deaa5[_0xafde('0x46')]['id']);})[_0xafde('0x25')](respondWithStatusCode(_0x5cf721,null))['catch'](handleError(_0x5cf721,null));};
\ No newline at end of file
index 3b22380..e5890c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbf3=['exports','define','Schedule','tools_schedules','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','./schedule.attributes'];(function(_0x52220d,_0x3dab85){var _0x46aa7d=function(_0x185e57){while(--_0x185e57){_0x52220d['push'](_0x52220d['shift']());}};_0x46aa7d(++_0x3dab85);}(_0xbbf3,0x1d8));var _0x3bbf=function(_0x43d694,_0x313fec){_0x43d694=_0x43d694-0x0;var _0x8f6fb4=_0xbbf3[_0x43d694];return _0x8f6fb4;};'use strict';var _=require(_0x3bbf('0x0'));var util=require('util');var logger=require(_0x3bbf('0x1'))(_0x3bbf('0x2'));var moment=require('moment');var BPromise=require(_0x3bbf('0x3'));var rp=require(_0x3bbf('0x4'));var fs=require('fs');var path=require(_0x3bbf('0x5'));var rimraf=require(_0x3bbf('0x6'));var config=require('../../config/environment');var attributes=require(_0x3bbf('0x7'));module[_0x3bbf('0x8')]=function(_0x2b47a9,_0x1fba4d){return _0x2b47a9[_0x3bbf('0x9')](_0x3bbf('0xa'),attributes,{'tableName':_0x3bbf('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x81bf=['path','rimraf','../../config/environment','./schedule.attributes','define','Schedule','tools_schedules','util','../../config/logger','api','moment'];(function(_0xf0ec6e,_0xa183d3){var _0x8bbc27=function(_0x39822b){while(--_0x39822b){_0xf0ec6e['push'](_0xf0ec6e['shift']());}};_0x8bbc27(++_0xa183d3);}(_0x81bf,0x125));var _0xf81b=function(_0x25f206,_0x1121bb){_0x25f206=_0x25f206-0x0;var _0xf96267=_0x81bf[_0x25f206];return _0xf96267;};'use strict';var _=require('lodash');var util=require(_0xf81b('0x0'));var logger=require(_0xf81b('0x1'))(_0xf81b('0x2'));var moment=require(_0xf81b('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xf81b('0x4'));var rimraf=require(_0xf81b('0x5'));var config=require(_0xf81b('0x6'));var attributes=require(_0xf81b('0x7'));module['exports']=function(_0x424606,_0x4d3e08){return _0x424606[_0xf81b('0x8')](_0xf81b('0x9'),attributes,{'tableName':_0xf81b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5d0b2bf..9bb4a9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8be=['request','info','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','Schedule,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','http'];(function(_0x23ab15,_0x33c5e6){var _0x43841e=function(_0x1e93a7){while(--_0x1e93a7){_0x23ab15['push'](_0x23ab15['shift']());}};_0x43841e(++_0x33c5e6);}(_0xe8be,0x1d9));var _0xee8b=function(_0x4bed75,_0x211cc7){_0x4bed75=_0x4bed75-0x0;var _0x2dd8e8=_0xe8be[_0x4bed75];return _0x2dd8e8;};'use strict';var _=require(_0xee8b('0x0'));var util=require(_0xee8b('0x1'));var moment=require(_0xee8b('0x2'));var BPromise=require(_0xee8b('0x3'));var rs=require(_0xee8b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xee8b('0x5'));var logger=require(_0xee8b('0x6'))(_0xee8b('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xee8b('0x8')][_0xee8b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5da08d,_0x22f299,_0x135b01){return new BPromise(function(_0x6345f3,_0x3dbbf8){return client[_0xee8b('0xa')](_0x5da08d,_0x135b01)['then'](function(_0x5c5eca){logger[_0xee8b('0xb')]('Schedule,\x20%s,\x20%s',_0x22f299,_0xee8b('0xc'));logger[_0xee8b('0xd')](_0xee8b('0xe'),_0x22f299,'request\x20sent',JSON[_0xee8b('0xf')](_0x5c5eca));if(_0x5c5eca[_0xee8b('0x10')]){if(_0x5c5eca[_0xee8b('0x10')]['code']===0x1f4){logger[_0xee8b('0x10')](_0xee8b('0x11'),_0x22f299,_0x5c5eca[_0xee8b('0x10')][_0xee8b('0x12')]);return _0x3dbbf8(_0x5c5eca[_0xee8b('0x10')][_0xee8b('0x12')]);}logger[_0xee8b('0x10')](_0xee8b('0x11'),_0x22f299,_0x5c5eca[_0xee8b('0x10')][_0xee8b('0x12')]);return _0x6345f3(_0x5c5eca['error']['message']);}else{logger['info'](_0xee8b('0x11'),_0x22f299,'request\x20sent');_0x6345f3(_0x5c5eca[_0xee8b('0x13')][_0xee8b('0x12')]);}})[_0xee8b('0x14')](function(_0x3022d7){logger[_0xee8b('0x10')]('Schedule,\x20%s,\x20%s',_0x22f299,_0x3022d7);_0x3dbbf8(_0x3022d7);});});}
\ No newline at end of file
+var _0x3d54=['../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','moment','bluebird','randomstring','ioredis'];(function(_0x319c07,_0x5c57fb){var _0x2c5a9d=function(_0x3fdd50){while(--_0x3fdd50){_0x319c07['push'](_0x319c07['shift']());}};_0x2c5a9d(++_0x5c57fb);}(_0x3d54,0x150));var _0x43d5=function(_0x3760bd,_0x48b777){_0x3760bd=_0x3760bd-0x0;var _0x120363=_0x3d54[_0x3760bd];return _0x120363;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x43d5('0x0'));var BPromise=require(_0x43d5('0x1'));var rs=require(_0x43d5('0x2'));var fs=require('fs');var Redis=require(_0x43d5('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x43d5('0x4'));var logger=require(_0x43d5('0x5'))(_0x43d5('0x6'));var config=require(_0x43d5('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x43d5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x21cb4e,_0x47f310,_0x1e477f){return new BPromise(function(_0x528914,_0xd06330){return client[_0x43d5('0x9')](_0x21cb4e,_0x1e477f)[_0x43d5('0xa')](function(_0x1058c3){logger[_0x43d5('0xb')](_0x43d5('0xc'),_0x47f310,_0x43d5('0xd'));logger[_0x43d5('0xe')](_0x43d5('0xf'),_0x47f310,_0x43d5('0xd'),JSON[_0x43d5('0x10')](_0x1058c3));if(_0x1058c3[_0x43d5('0x11')]){if(_0x1058c3[_0x43d5('0x11')][_0x43d5('0x12')]===0x1f4){logger['error'](_0x43d5('0xc'),_0x47f310,_0x1058c3[_0x43d5('0x11')][_0x43d5('0x13')]);return _0xd06330(_0x1058c3[_0x43d5('0x11')][_0x43d5('0x13')]);}logger[_0x43d5('0x11')](_0x43d5('0xc'),_0x47f310,_0x1058c3[_0x43d5('0x11')][_0x43d5('0x13')]);return _0x528914(_0x1058c3[_0x43d5('0x11')][_0x43d5('0x13')]);}else{logger[_0x43d5('0xb')]('Schedule,\x20%s,\x20%s',_0x47f310,'request\x20sent');_0x528914(_0x1058c3['result'][_0x43d5('0x13')]);}})['catch'](function(_0x55b1ee){logger['error'](_0x43d5('0xc'),_0x47f310,_0x55b1ee);_0xd06330(_0x55b1ee);});});}
\ No newline at end of file
index a26d2d4..b1ffcfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb82d=['../../components/interaction/service','./screenRecording.controller','get','index','isAuthenticated','describe','/:id','show','/:id/download','download','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xb82d,0xc8));var _0xdb82=function(_0x540231,_0x117b98){_0x540231=_0x540231-0x0;var _0x31334b=_0xb82d[_0x540231];return _0x31334b;};'use strict';var multer=require(_0xdb82('0x0'));var util=require('util');var path=require(_0xdb82('0x1'));var timeout=require(_0xdb82('0x2'));var express=require(_0xdb82('0x3'));var router=express[_0xdb82('0x4')]();var fs_extra=require(_0xdb82('0x5'));var auth=require(_0xdb82('0x6'));var interaction=require(_0xdb82('0x7'));var config=require('../../config/environment');var controller=require(_0xdb82('0x8'));router[_0xdb82('0x9')]('/',auth['isAuthenticated'](),controller[_0xdb82('0xa')]);router[_0xdb82('0x9')]('/describe',auth[_0xdb82('0xb')](),controller[_0xdb82('0xc')]);router[_0xdb82('0x9')](_0xdb82('0xd'),auth[_0xdb82('0xb')](),controller[_0xdb82('0xe')]);router[_0xdb82('0x9')](_0xdb82('0xf'),auth[_0xdb82('0xb')](),controller[_0xdb82('0x10')]);router['post']('/',auth['isAuthenticated'](),controller[_0xdb82('0x11')]);router[_0xdb82('0x12')](_0xdb82('0xd'),auth[_0xdb82('0xb')](),controller[_0xdb82('0x13')]);router[_0xdb82('0x14')](_0xdb82('0xd'),auth['isAuthenticated'](),controller[_0xdb82('0x15')]);module[_0xdb82('0x16')]=router;
\ No newline at end of file
+var _0x7548=['post','create','put','update','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./screenRecording.controller','get','isAuthenticated','index','/describe','describe','show'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x7548,0x10a));var _0x8754=function(_0x37a27f,_0x459f3e){_0x37a27f=_0x37a27f-0x0;var _0x436167=_0x7548[_0x37a27f];return _0x436167;};'use strict';var multer=require(_0x8754('0x0'));var util=require(_0x8754('0x1'));var path=require('path');var timeout=require(_0x8754('0x2'));var express=require(_0x8754('0x3'));var router=express['Router']();var fs_extra=require(_0x8754('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x8754('0x5'));var config=require(_0x8754('0x6'));var controller=require(_0x8754('0x7'));router[_0x8754('0x8')]('/',auth[_0x8754('0x9')](),controller[_0x8754('0xa')]);router[_0x8754('0x8')](_0x8754('0xb'),auth['isAuthenticated'](),controller[_0x8754('0xc')]);router[_0x8754('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x8754('0xd')]);router[_0x8754('0x8')]('/:id/download',auth[_0x8754('0x9')](),controller['download']);router[_0x8754('0xe')]('/',auth[_0x8754('0x9')](),controller[_0x8754('0xf')]);router[_0x8754('0x10')]('/:id',auth[_0x8754('0x9')](),controller[_0x8754('0x11')]);router['delete']('/:id',auth[_0x8754('0x9')](),controller[_0x8754('0x12')]);module[_0x8754('0x13')]=router;
\ No newline at end of file
index e4a937f..fb485a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4b6=['value','extname','STRING','replace','setDataValue','INTEGER','startedAt','subtract','closedAt','duration','format','MM-DD-YYYY\x20HH:mm','toString','DATE','createdAt','updatedAt','moment','path','../../config/environment','exports','VIRTUAL','getDataValue'];(function(_0x577acd,_0x2dddb2){var _0x2bfd74=function(_0x39d069){while(--_0x39d069){_0x577acd['push'](_0x577acd['shift']());}};_0x2bfd74(++_0x2dddb2);}(_0xb4b6,0x7e));var _0x6b4b=function(_0x23784a,_0x101eb7){_0x23784a=_0x23784a-0x0;var _0x3bd9a8=_0xb4b6[_0x23784a];return _0x3bd9a8;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x6b4b('0x0'));var path=require(_0x6b4b('0x1'));var config=require(_0x6b4b('0x2'));module[_0x6b4b('0x3')]={'format':{'type':Sequelize[_0x6b4b('0x4')],'get':function(){return this[_0x6b4b('0x5')](_0x6b4b('0x6'))?path[_0x6b4b('0x7')](this[_0x6b4b('0x5')]('value')):undefined;}},'interactionid':{'type':Sequelize[_0x6b4b('0x8')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize[_0x6b4b('0x8')],'set':function(_0x25eef2){var _0x8b279d=_0x25eef2[_0x6b4b('0x9')](/\\/g,'/');this[_0x6b4b('0xa')]('value',_0x8b279d);}},'rating':{'type':Sequelize[_0x6b4b('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x6b4b('0xb')],'set':function(_0x40b391){this[_0x6b4b('0xa')](_0x6b4b('0xc'),moment()[_0x6b4b('0xd')](_0x40b391,'ms'));this[_0x6b4b('0xa')](_0x6b4b('0xe'),moment());this['setDataValue'](_0x6b4b('0xf'),_0x40b391);}},'startedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x6b4b('0x5')](_0x6b4b('0xc')))[_0x6b4b('0x10')](_0x6b4b('0x11'))[_0x6b4b('0x12')]();}},'closedAt':{'type':Sequelize[_0x6b4b('0x13')],'get':function(){return moment(this[_0x6b4b('0x5')]('closedAt'))[_0x6b4b('0x10')](_0x6b4b('0x11'))[_0x6b4b('0x12')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this['getDataValue'](_0x6b4b('0x14')))[_0x6b4b('0x10')]('MM-DD-YYYY\x20HH:mm')[_0x6b4b('0x12')]();}},'updatedAt':{'type':Sequelize[_0x6b4b('0x13')],'get':function(){return moment(this[_0x6b4b('0x5')](_0x6b4b('0x15')))[_0x6b4b('0x10')](_0x6b4b('0x11'))[_0x6b4b('0x12')]();}}};
\ No newline at end of file
+var _0x6f83=['subtract','closedAt','duration','DATE','MM-DD-YYYY\x20HH:mm','toString','format','createdAt','updatedAt','moment','path','exports','VIRTUAL','getDataValue','value','extname','STRING','replace','setDataValue','INTEGER','startedAt'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x6f83,0x72));var _0x36f8=function(_0xe44d90,_0x49c199){_0xe44d90=_0xe44d90-0x0;var _0x21b31c=_0x6f83[_0xe44d90];return _0x21b31c;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x36f8('0x0'));var path=require(_0x36f8('0x1'));var config=require('../../config/environment');module[_0x36f8('0x2')]={'format':{'type':Sequelize[_0x36f8('0x3')],'get':function(){return this[_0x36f8('0x4')](_0x36f8('0x5'))?path[_0x36f8('0x6')](this[_0x36f8('0x4')](_0x36f8('0x5'))):undefined;}},'interactionid':{'type':Sequelize[_0x36f8('0x7')]},'channel':{'type':Sequelize[_0x36f8('0x7')]},'value':{'type':Sequelize[_0x36f8('0x7')],'set':function(_0x27d94b){var _0x2c0367=_0x27d94b[_0x36f8('0x8')](/\\/g,'/');this[_0x36f8('0x9')](_0x36f8('0x5'),_0x2c0367);}},'rating':{'type':Sequelize[_0x36f8('0xa')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize['INTEGER'],'set':function(_0x48c7b2){this['setDataValue'](_0x36f8('0xb'),moment()[_0x36f8('0xc')](_0x48c7b2,'ms'));this[_0x36f8('0x9')](_0x36f8('0xd'),moment());this[_0x36f8('0x9')](_0x36f8('0xe'),_0x48c7b2);}},'startedAt':{'type':Sequelize[_0x36f8('0xf')],'get':function(){return moment(this[_0x36f8('0x4')](_0x36f8('0xb')))['format'](_0x36f8('0x10'))[_0x36f8('0x11')]();}},'closedAt':{'type':Sequelize[_0x36f8('0xf')],'get':function(){return moment(this[_0x36f8('0x4')]('closedAt'))[_0x36f8('0x12')](_0x36f8('0x10'))[_0x36f8('0x11')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x36f8('0x4')](_0x36f8('0x13')))[_0x36f8('0x12')]('MM-DD-YYYY\x20HH:mm')[_0x36f8('0x11')]();}},'updatedAt':{'type':Sequelize[_0x36f8('0xf')],'get':function(){return moment(this[_0x36f8('0x4')](_0x36f8('0x14')))['format']('MM-DD-YYYY\x20HH:mm')[_0x36f8('0x11')]();}}};
\ No newline at end of file
index 2a3ee30..8e4a451 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['fieldName','type','model','differenceBy','format','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','find','catch','create','body','duration','createdAt','closedAt','params','describe','../../components/encryptor','uniqueid','value','join','root','server/files/screen_recordings','%s.cypher','secrets','recording','existsSync','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','unlink','download','message','Not\x20found','isNil','cancellazione\x20fisica\x20documento\x20%s','info','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','map','ScreenRecording','rawAttributes'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x6aa7,0x178));var _0x76aa=function(_0x298986,_0x165aec){_0x298986=_0x298986-0x0;var _0x1e6a50=_0x6aa7[_0x298986];return _0x1e6a50;};'use strict';var emlformat=require(_0x76aa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x76aa('0x1'));var jsonpatch=require(_0x76aa('0x2'));var rp=require(_0x76aa('0x3'));var moment=require(_0x76aa('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x76aa('0x5'));var util=require(_0x76aa('0x6'));var path=require(_0x76aa('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x76aa('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x76aa('0x9'));var squel=require(_0x76aa('0xa'));var crypto=require(_0x76aa('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x76aa('0xc'));var toCsv=require(_0x76aa('0xd'));var querystring=require(_0x76aa('0xe'));var Papa=require('papaparse');var Redis=require(_0x76aa('0xf'));var authService=require(_0x76aa('0x10'));var qs=require(_0x76aa('0x11'));var as=require(_0x76aa('0x12'));var hardwareService=require(_0x76aa('0x13'));var logger=require(_0x76aa('0x14'))(_0x76aa('0x15'));var utils=require(_0x76aa('0x16'));var config=require(_0x76aa('0x17'));var licenseUtil=require(_0x76aa('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x112c39,_0x5df49c){_0x5df49c=_0x5df49c||0xcc;return function(_0x226536){if(_0x226536){return _0x112c39[_0x76aa('0x19')](_0x5df49c);}return _0x112c39[_0x76aa('0x1a')](_0x5df49c)[_0x76aa('0x1b')]();};}function respondWithResult(_0x10432c,_0x4e309f){_0x4e309f=_0x4e309f||0xc8;return function(_0x5f5b59){if(_0x5f5b59){return _0x10432c[_0x76aa('0x1a')](_0x4e309f)['json'](_0x5f5b59);}};}function respondWithFilteredResult(_0x180d92,_0x319bf1){return function(_0x5cf594){if(_0x5cf594){var _0x2111c7=typeof _0x319bf1['offset']===_0x76aa('0x1c')&&typeof _0x319bf1['limit']===_0x76aa('0x1c');var _0x413cf6=_0x5cf594[_0x76aa('0x1d')];var _0x21c16d=_0x2111c7?0x0:_0x319bf1[_0x76aa('0x1e')];var _0x3ead3f=_0x2111c7?_0x5cf594['count']:_0x319bf1['offset']+_0x319bf1[_0x76aa('0x1f')];var _0x454dd3;if(_0x3ead3f>=_0x413cf6){_0x3ead3f=_0x413cf6;_0x454dd3=0xc8;}else{_0x454dd3=0xce;}_0x180d92[_0x76aa('0x1a')](_0x454dd3);return _0x180d92[_0x76aa('0x20')](_0x76aa('0x21'),_0x21c16d+'-'+_0x3ead3f+'/'+_0x413cf6)[_0x76aa('0x22')](_0x5cf594);}return null;};}function patchUpdates(_0x19af92){return function(_0x2eaf48){try{jsonpatch[_0x76aa('0x23')](_0x2eaf48,_0x19af92,!![]);}catch(_0x5990c1){return BPromise[_0x76aa('0x24')](_0x5990c1);}return _0x2eaf48[_0x76aa('0x25')]();};}function saveUpdates(_0x338a6b,_0x5b3f55){return function(_0x41463a){if(_0x41463a){return _0x41463a[_0x76aa('0x26')](_0x338a6b)[_0x76aa('0x27')](function(_0x2bd2c6){return _0x2bd2c6;});}return null;};}function removeEntity(_0x29c50c,_0xc1044c){return function(_0x3cd039){if(_0x3cd039){return _0x3cd039[_0x76aa('0x28')]()[_0x76aa('0x27')](function(){_0x29c50c[_0x76aa('0x1a')](0xcc)[_0x76aa('0x1b')]();});}};}function handleEntityNotFound(_0x26b75e,_0x3599a9){return function(_0x4ef9b0){if(!_0x4ef9b0){_0x26b75e[_0x76aa('0x19')](0x194);}return _0x4ef9b0;};}function handleError(_0x1d6d15,_0x25c614){_0x25c614=_0x25c614||0x1f4;return function(_0x2e7ab4){logger[_0x76aa('0x29')](_0x2e7ab4[_0x76aa('0x2a')]);if(_0x2e7ab4[_0x76aa('0x2b')]){delete _0x2e7ab4[_0x76aa('0x2b')];}_0x1d6d15[_0x76aa('0x1a')](_0x25c614)[_0x76aa('0x2c')](_0x2e7ab4);};}exports['index']=function(_0x3fcb7f,_0x5a8030){var _0x994550={},_0x365ff8={},_0x2dec94={'count':0x0,'rows':[]};var _0x1e90b9=_[_0x76aa('0x2d')](db[_0x76aa('0x2e')][_0x76aa('0x2f')],function(_0x3827ec){return{'name':_0x3827ec[_0x76aa('0x30')],'type':_0x3827ec[_0x76aa('0x31')]['key']};});_0x365ff8[_0x76aa('0x32')]=_[_0x76aa('0x33')](_[_0x76aa('0x2d')](_0x1e90b9,_0x76aa('0x2b')),[_0x76aa('0x34')]);_0x365ff8[_0x76aa('0x35')]=_[_0x76aa('0x36')](_0x3fcb7f['query']);_0x365ff8[_0x76aa('0x37')]=_[_0x76aa('0x38')](_0x365ff8['model'],_0x365ff8[_0x76aa('0x35')]);_0x994550['attributes']=_[_0x76aa('0x38')](_0x365ff8['model'],qs[_0x76aa('0x39')](_0x3fcb7f['query']['fields']));_0x994550[_0x76aa('0x3a')]=_0x994550[_0x76aa('0x3a')][_0x76aa('0x3b')]?_0x994550[_0x76aa('0x3a')]:_0x365ff8['model'];if(!_0x3fcb7f['query'][_0x76aa('0x3c')](_0x76aa('0x3d'))){_0x994550[_0x76aa('0x1f')]=qs[_0x76aa('0x1f')](_0x3fcb7f[_0x76aa('0x35')]['limit']);_0x994550[_0x76aa('0x1e')]=qs['offset'](_0x3fcb7f['query'][_0x76aa('0x1e')]);}_0x994550[_0x76aa('0x3e')]=qs[_0x76aa('0x3f')](_0x3fcb7f[_0x76aa('0x35')]['sort']);_0x994550[_0x76aa('0x40')]=qs[_0x76aa('0x37')](_[_0x76aa('0x41')](_0x3fcb7f['query'],_0x365ff8[_0x76aa('0x37')]),_0x1e90b9);if(_0x3fcb7f[_0x76aa('0x35')][_0x76aa('0x42')]){_0x994550[_0x76aa('0x40')]=_[_0x76aa('0x43')](_0x994550[_0x76aa('0x40')],{'$or':_[_0x76aa('0x2d')](_0x1e90b9,function(_0x307d67){if(_0x307d67[_0x76aa('0x31')]!=='VIRTUAL'){var _0x1525cb={};_0x1525cb[_0x307d67[_0x76aa('0x2b')]]={'$like':'%'+_0x3fcb7f[_0x76aa('0x35')][_0x76aa('0x42')]+'%'};return _0x1525cb;}})});}_0x994550=_[_0x76aa('0x43')]({},_0x994550,_0x3fcb7f[_0x76aa('0x44')]);var _0x572fdb={'where':_0x994550['where']};return db[_0x76aa('0x2e')][_0x76aa('0x1d')](_0x572fdb)[_0x76aa('0x27')](function(_0x365612){_0x2dec94['count']=_0x365612;if(_0x3fcb7f[_0x76aa('0x35')][_0x76aa('0x45')]){_0x994550[_0x76aa('0x46')]=[{'all':!![]}];}return db[_0x76aa('0x2e')][_0x76aa('0x47')](_0x994550);})['then'](function(_0x13dafe){_0x2dec94['rows']=_0x13dafe;return _0x2dec94;})[_0x76aa('0x27')](respondWithFilteredResult(_0x5a8030,_0x994550))['catch'](handleError(_0x5a8030,null));};exports['show']=function(_0x4f7f3a,_0x144f0a){var _0x541594={'raw':![],'where':{'id':_0x4f7f3a['params']['id']}},_0x5cf314={};_0x5cf314[_0x76aa('0x32')]=_[_0x76aa('0x36')](db[_0x76aa('0x2e')][_0x76aa('0x2f')]);_0x5cf314[_0x76aa('0x35')]=_['keys'](_0x4f7f3a[_0x76aa('0x35')]);_0x5cf314[_0x76aa('0x37')]=_[_0x76aa('0x38')](_0x5cf314[_0x76aa('0x32')],_0x5cf314[_0x76aa('0x35')]);_0x541594['attributes']=_[_0x76aa('0x38')](_0x5cf314[_0x76aa('0x32')],qs['fields'](_0x4f7f3a[_0x76aa('0x35')]['fields']));_0x541594[_0x76aa('0x3a')]=_0x541594[_0x76aa('0x3a')][_0x76aa('0x3b')]?_0x541594[_0x76aa('0x3a')]:_0x5cf314[_0x76aa('0x32')];if(_0x4f7f3a[_0x76aa('0x35')][_0x76aa('0x45')]){_0x541594[_0x76aa('0x46')]=[{'all':!![]}];}_0x541594=_[_0x76aa('0x43')]({},_0x541594,_0x4f7f3a[_0x76aa('0x44')]);return db['ScreenRecording'][_0x76aa('0x48')](_0x541594)['then'](handleEntityNotFound(_0x144f0a,null))[_0x76aa('0x27')](respondWithResult(_0x144f0a,null))[_0x76aa('0x49')](handleError(_0x144f0a,null));};exports[_0x76aa('0x4a')]=function(_0x156d4e,_0x5ca721){return db['ScreenRecording'][_0x76aa('0x4a')](_0x156d4e['body'],{})[_0x76aa('0x27')](respondWithResult(_0x5ca721,0xc9))[_0x76aa('0x49')](handleError(_0x5ca721,null));};exports[_0x76aa('0x26')]=function(_0x2e5633,_0x30c577){if(_0x2e5633[_0x76aa('0x4b')]['id']){delete _0x2e5633['body']['id'];}delete _0x2e5633['body'][_0x76aa('0x4c')];delete _0x2e5633[_0x76aa('0x4b')][_0x76aa('0x4d')];delete _0x2e5633[_0x76aa('0x4b')][_0x76aa('0x4e')];delete _0x2e5633[_0x76aa('0x4b')]['value'];return db[_0x76aa('0x2e')][_0x76aa('0x48')]({'where':{'id':_0x2e5633[_0x76aa('0x4f')]['id']}})['then'](handleEntityNotFound(_0x30c577,null))[_0x76aa('0x27')](saveUpdates(_0x2e5633['body'],null))[_0x76aa('0x27')](respondWithResult(_0x30c577,null))['catch'](handleError(_0x30c577,null));};exports[_0x76aa('0x50')]=function(_0x4449c1,_0x3c63e5){return db[_0x76aa('0x2e')][_0x76aa('0x50')]()[_0x76aa('0x27')](respondWithResult(_0x3c63e5,null))[_0x76aa('0x49')](handleError(_0x3c63e5,null));};exports['download']=function(_0x186654,_0x5eeaa5,_0x3ee32){var _0x311bd5=require(_0x76aa('0x51'));var _0x53be10=![];var _0x3fa7ec={};if(_0x186654[_0x76aa('0x35')][_0x76aa('0x31')]&&_0x186654['query'][_0x76aa('0x31')]===_0x76aa('0x52')){_0x3fa7ec[_0x76aa('0x52')]=_0x186654[_0x76aa('0x4f')]['id'];}else{_0x3fa7ec['id']=_0x186654['params']['id'];}return db[_0x76aa('0x2e')][_0x76aa('0x48')]({'where':_0x3fa7ec,'attributes':['id',_0x76aa('0x53')],'raw':!![]})[_0x76aa('0x27')](handleEntityNotFound(_0x5eeaa5,null))[_0x76aa('0x27')](function(_0xf7732){if(_0xf7732){var _0x4e6c09=path[_0x76aa('0x54')](config[_0x76aa('0x55')],_0x76aa('0x56'),_0xf7732[_0x76aa('0x53')]);var _0x3967f3=util[_0x76aa('0x34')](_0x76aa('0x57'),_0x4e6c09);if(fs['existsSync'](_0x3967f3)){_0x53be10=!![];return _0x311bd5['decryptFile'](_0x3967f3,_0x4e6c09,config[_0x76aa('0x58')][_0x76aa('0x59')])['then'](function(){return _0xf7732;});}return _0xf7732;}})[_0x76aa('0x27')](function(_0x1e6f3c){if(_0x1e6f3c){var _0x4f832d=path[_0x76aa('0x54')](config[_0x76aa('0x55')],_0x76aa('0x56'),_0x1e6f3c[_0x76aa('0x53')]);if(!fs[_0x76aa('0x5a')](_0x4f832d)){throw new db[(_0x76aa('0x5b'))][(_0x76aa('0x5c'))](_0x76aa('0x5d'));}if(_0x1e6f3c[_0x76aa('0x5e')]){return _0x5eeaa5['download'](_0x4f832d,_0x1e6f3c[_0x76aa('0x5e')]+path['extname'](_0x4f832d),function(){if(_0x53be10){fs[_0x76aa('0x5f')](_0x4f832d);}});}else{return _0x5eeaa5[_0x76aa('0x60')](_0x4f832d,function(_0x2fef92){if(_0x53be10){fs[_0x76aa('0x5f')](_0x4f832d);}});}}})[_0x76aa('0x49')](function(_0x260ad2){if(_0x260ad2[_0x76aa('0x61')]===_0x76aa('0x5d')){_0x5eeaa5[_0x76aa('0x1a')](0x194)['send'](_0x76aa('0x62'));}else{return handleError(_0x5eeaa5,null);}});};exports[_0x76aa('0x28')]=function(_0x5c542b,_0xe5957d){return db[_0x76aa('0x2e')][_0x76aa('0x48')]({'where':{'id':_0x5c542b[_0x76aa('0x4f')]['id']}})[_0x76aa('0x27')](function(_0x5546b6){if(_[_0x76aa('0x63')](_0x5546b6)){throw new ReferenceError('Entity\x20not\x20found');}return _0x5546b6;})[_0x76aa('0x27')](function(_0x35881c){var _0x3e97f8=path[_0x76aa('0x54')](config[_0x76aa('0x55')],_0x76aa('0x56'),_0x35881c[_0x76aa('0x53')]);logger['info'](_0x76aa('0x64'),_0x3e97f8);if(!_[_0x76aa('0x63')](_0x35881c['value'])&&fs['existsSync'](_0x3e97f8)){logger[_0x76aa('0x65')](_0x76aa('0x66')+_0x3e97f8+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x76aa('0x67')](_0x3e97f8);}_0x3e97f8=_0x3e97f8+_0x76aa('0x68');if(!_[_0x76aa('0x63')](_0x35881c['value'])&&fs[_0x76aa('0x5a')](_0x3e97f8)){logger['info'](_0x76aa('0x66')+_0x3e97f8+_0x76aa('0x69'));fs[_0x76aa('0x67')](_0x3e97f8);}return _0x35881c;})[_0x76aa('0x27')](function(_0x55ca84){if(!_0x55ca84)throw new InternalError();return _0x55ca84['destroy']();})[_0x76aa('0x27')](function(){_0xe5957d['status'](0xcc)[_0x76aa('0x1b')]();})[_0x76aa('0x49')](handleError(_0xe5957d,null));};
\ No newline at end of file
+var _0x2eb2=['zip-dir','fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','update','then','destroy','end','stack','name','send','map','ScreenRecording','rawAttributes','fieldName','type','key','differenceBy','format','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','show','params','include','find','create','body','duration','createdAt','closedAt','value','describe','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','download','extname','unlink','message','Not\x20found','isNil','Entity\x20not\x20found','cancellazione\x20fisica\x20documento\x20%s','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','rimraf'];(function(_0xb55417,_0x40e0ef){var _0x5143e6=function(_0x2136c7){while(--_0x2136c7){_0xb55417['push'](_0xb55417['shift']());}};_0x5143e6(++_0x40e0ef);}(_0x2eb2,0x19f));var _0x22eb=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x2eb2[_0x501510];return _0x1e6ee5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x22eb('0x0'));var zipdir=require(_0x22eb('0x1'));var jsonpatch=require(_0x22eb('0x2'));var rp=require(_0x22eb('0x3'));var moment=require(_0x22eb('0x4'));var BPromise=require(_0x22eb('0x5'));var Mustache=require('mustache');var util=require(_0x22eb('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x22eb('0x7'));var ejs=require(_0x22eb('0x8'));var fs=require('fs');var fs_extra=require(_0x22eb('0x9'));var _=require(_0x22eb('0xa'));var squel=require(_0x22eb('0xb'));var crypto=require(_0x22eb('0xc'));var jsforce=require(_0x22eb('0xd'));var deskjs=require(_0x22eb('0xe'));var toCsv=require(_0x22eb('0x7'));var querystring=require(_0x22eb('0xf'));var Papa=require(_0x22eb('0x10'));var Redis=require(_0x22eb('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x22eb('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x22eb('0x13'))('api');var utils=require(_0x22eb('0x14'));var config=require(_0x22eb('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1f286c,_0x189f05){_0x189f05=_0x189f05||0xcc;return function(_0x128d43){if(_0x128d43){return _0x1f286c[_0x22eb('0x16')](_0x189f05);}return _0x1f286c[_0x22eb('0x17')](_0x189f05)['end']();};}function respondWithResult(_0x350ade,_0x53f14e){_0x53f14e=_0x53f14e||0xc8;return function(_0x1f5089){if(_0x1f5089){return _0x350ade['status'](_0x53f14e)[_0x22eb('0x18')](_0x1f5089);}};}function respondWithFilteredResult(_0x84c668,_0x53abbf){return function(_0x48b63c){if(_0x48b63c){var _0x4bc29a=typeof _0x53abbf[_0x22eb('0x19')]==='undefined'&&typeof _0x53abbf['limit']===_0x22eb('0x1a');var _0x4d9a71=_0x48b63c['count'];var _0xb7a73a=_0x4bc29a?0x0:_0x53abbf[_0x22eb('0x19')];var _0x385bcb=_0x4bc29a?_0x48b63c[_0x22eb('0x1b')]:_0x53abbf[_0x22eb('0x19')]+_0x53abbf['limit'];var _0x4182a8;if(_0x385bcb>=_0x4d9a71){_0x385bcb=_0x4d9a71;_0x4182a8=0xc8;}else{_0x4182a8=0xce;}_0x84c668[_0x22eb('0x17')](_0x4182a8);return _0x84c668[_0x22eb('0x1c')](_0x22eb('0x1d'),_0xb7a73a+'-'+_0x385bcb+'/'+_0x4d9a71)[_0x22eb('0x18')](_0x48b63c);}return null;};}function patchUpdates(_0x517313){return function(_0x2eb115){try{jsonpatch[_0x22eb('0x1e')](_0x2eb115,_0x517313,!![]);}catch(_0x2fc36e){return BPromise['reject'](_0x2fc36e);}return _0x2eb115['save']();};}function saveUpdates(_0x4335b7,_0x267d97){return function(_0x434ecb){if(_0x434ecb){return _0x434ecb[_0x22eb('0x1f')](_0x4335b7)[_0x22eb('0x20')](function(_0x3e8c1c){return _0x3e8c1c;});}return null;};}function removeEntity(_0x43dacb,_0x4e7e69){return function(_0x2e8f7c){if(_0x2e8f7c){return _0x2e8f7c[_0x22eb('0x21')]()[_0x22eb('0x20')](function(){_0x43dacb[_0x22eb('0x17')](0xcc)[_0x22eb('0x22')]();});}};}function handleEntityNotFound(_0x4da252,_0x12c133){return function(_0x6f8ff3){if(!_0x6f8ff3){_0x4da252[_0x22eb('0x16')](0x194);}return _0x6f8ff3;};}function handleError(_0x5a001e,_0xe0783c){_0xe0783c=_0xe0783c||0x1f4;return function(_0x259847){logger['error'](_0x259847[_0x22eb('0x23')]);if(_0x259847[_0x22eb('0x24')]){delete _0x259847[_0x22eb('0x24')];}_0x5a001e[_0x22eb('0x17')](_0xe0783c)[_0x22eb('0x25')](_0x259847);};}exports['index']=function(_0x49dd59,_0x2a950e){var _0x25e5bc={},_0x44cf91={},_0x7c0119={'count':0x0,'rows':[]};var _0x1599c7=_[_0x22eb('0x26')](db[_0x22eb('0x27')][_0x22eb('0x28')],function(_0x382784){return{'name':_0x382784[_0x22eb('0x29')],'type':_0x382784[_0x22eb('0x2a')][_0x22eb('0x2b')]};});_0x44cf91['model']=_[_0x22eb('0x2c')](_['map'](_0x1599c7,_0x22eb('0x24')),[_0x22eb('0x2d')]);_0x44cf91[_0x22eb('0x2e')]=_[_0x22eb('0x2f')](_0x49dd59[_0x22eb('0x2e')]);_0x44cf91[_0x22eb('0x30')]=_[_0x22eb('0x31')](_0x44cf91[_0x22eb('0x32')],_0x44cf91[_0x22eb('0x2e')]);_0x25e5bc[_0x22eb('0x33')]=_['intersection'](_0x44cf91['model'],qs[_0x22eb('0x34')](_0x49dd59['query']['fields']));_0x25e5bc[_0x22eb('0x33')]=_0x25e5bc[_0x22eb('0x33')][_0x22eb('0x35')]?_0x25e5bc[_0x22eb('0x33')]:_0x44cf91[_0x22eb('0x32')];if(!_0x49dd59[_0x22eb('0x2e')][_0x22eb('0x36')](_0x22eb('0x37'))){_0x25e5bc[_0x22eb('0x38')]=qs[_0x22eb('0x38')](_0x49dd59['query'][_0x22eb('0x38')]);_0x25e5bc['offset']=qs['offset'](_0x49dd59[_0x22eb('0x2e')][_0x22eb('0x19')]);}_0x25e5bc['order']=qs[_0x22eb('0x39')](_0x49dd59[_0x22eb('0x2e')][_0x22eb('0x39')]);_0x25e5bc[_0x22eb('0x3a')]=qs[_0x22eb('0x30')](_['pick'](_0x49dd59[_0x22eb('0x2e')],_0x44cf91[_0x22eb('0x30')]),_0x1599c7);if(_0x49dd59['query'][_0x22eb('0x3b')]){_0x25e5bc[_0x22eb('0x3a')]=_[_0x22eb('0x3c')](_0x25e5bc[_0x22eb('0x3a')],{'$or':_[_0x22eb('0x26')](_0x1599c7,function(_0x5382eb){if(_0x5382eb['type']!==_0x22eb('0x3d')){var _0x6cd651={};_0x6cd651[_0x5382eb['name']]={'$like':'%'+_0x49dd59[_0x22eb('0x2e')][_0x22eb('0x3b')]+'%'};return _0x6cd651;}})});}_0x25e5bc=_[_0x22eb('0x3c')]({},_0x25e5bc,_0x49dd59['options']);var _0x1d977c={'where':_0x25e5bc[_0x22eb('0x3a')]};return db[_0x22eb('0x27')][_0x22eb('0x1b')](_0x1d977c)[_0x22eb('0x20')](function(_0x39778e){_0x7c0119['count']=_0x39778e;if(_0x49dd59[_0x22eb('0x2e')][_0x22eb('0x3e')]){_0x25e5bc['include']=[{'all':!![]}];}return db[_0x22eb('0x27')][_0x22eb('0x3f')](_0x25e5bc);})[_0x22eb('0x20')](function(_0x30cb10){_0x7c0119[_0x22eb('0x40')]=_0x30cb10;return _0x7c0119;})[_0x22eb('0x20')](respondWithFilteredResult(_0x2a950e,_0x25e5bc))[_0x22eb('0x41')](handleError(_0x2a950e,null));};exports[_0x22eb('0x42')]=function(_0x1bafa3,_0x82ace8){var _0x3e1826={'raw':![],'where':{'id':_0x1bafa3[_0x22eb('0x43')]['id']}},_0x1cf1e0={};_0x1cf1e0[_0x22eb('0x32')]=_[_0x22eb('0x2f')](db[_0x22eb('0x27')][_0x22eb('0x28')]);_0x1cf1e0[_0x22eb('0x2e')]=_['keys'](_0x1bafa3[_0x22eb('0x2e')]);_0x1cf1e0[_0x22eb('0x30')]=_['intersection'](_0x1cf1e0[_0x22eb('0x32')],_0x1cf1e0[_0x22eb('0x2e')]);_0x3e1826['attributes']=_['intersection'](_0x1cf1e0['model'],qs[_0x22eb('0x34')](_0x1bafa3[_0x22eb('0x2e')]['fields']));_0x3e1826['attributes']=_0x3e1826[_0x22eb('0x33')][_0x22eb('0x35')]?_0x3e1826[_0x22eb('0x33')]:_0x1cf1e0[_0x22eb('0x32')];if(_0x1bafa3[_0x22eb('0x2e')][_0x22eb('0x3e')]){_0x3e1826[_0x22eb('0x44')]=[{'all':!![]}];}_0x3e1826=_[_0x22eb('0x3c')]({},_0x3e1826,_0x1bafa3['options']);return db['ScreenRecording'][_0x22eb('0x45')](_0x3e1826)['then'](handleEntityNotFound(_0x82ace8,null))[_0x22eb('0x20')](respondWithResult(_0x82ace8,null))['catch'](handleError(_0x82ace8,null));};exports[_0x22eb('0x46')]=function(_0x5c41c0,_0x4b2f86){return db['ScreenRecording']['create'](_0x5c41c0[_0x22eb('0x47')],{})['then'](respondWithResult(_0x4b2f86,0xc9))[_0x22eb('0x41')](handleError(_0x4b2f86,null));};exports[_0x22eb('0x1f')]=function(_0x490bef,_0x24e6ba){if(_0x490bef['body']['id']){delete _0x490bef[_0x22eb('0x47')]['id'];}delete _0x490bef[_0x22eb('0x47')][_0x22eb('0x48')];delete _0x490bef[_0x22eb('0x47')][_0x22eb('0x49')];delete _0x490bef[_0x22eb('0x47')][_0x22eb('0x4a')];delete _0x490bef[_0x22eb('0x47')][_0x22eb('0x4b')];return db['ScreenRecording'][_0x22eb('0x45')]({'where':{'id':_0x490bef[_0x22eb('0x43')]['id']}})['then'](handleEntityNotFound(_0x24e6ba,null))[_0x22eb('0x20')](saveUpdates(_0x490bef[_0x22eb('0x47')],null))[_0x22eb('0x20')](respondWithResult(_0x24e6ba,null))[_0x22eb('0x41')](handleError(_0x24e6ba,null));};exports['describe']=function(_0x6c0600,_0x169ae1){return db[_0x22eb('0x27')][_0x22eb('0x4c')]()[_0x22eb('0x20')](respondWithResult(_0x169ae1,null))[_0x22eb('0x41')](handleError(_0x169ae1,null));};exports['download']=function(_0x29d7ca,_0x4e5b9f,_0x3ff406){var _0x5eecef=require(_0x22eb('0x4d'));var _0x254b53=![];var _0x4028ef={};if(_0x29d7ca[_0x22eb('0x2e')][_0x22eb('0x2a')]&&_0x29d7ca['query']['type']===_0x22eb('0x4e')){_0x4028ef[_0x22eb('0x4e')]=_0x29d7ca['params']['id'];}else{_0x4028ef['id']=_0x29d7ca[_0x22eb('0x43')]['id'];}return db[_0x22eb('0x27')][_0x22eb('0x45')]({'where':_0x4028ef,'attributes':['id',_0x22eb('0x4b')],'raw':!![]})[_0x22eb('0x20')](handleEntityNotFound(_0x4e5b9f,null))[_0x22eb('0x20')](function(_0x3a8588){if(_0x3a8588){var _0x35c997=path[_0x22eb('0x4f')](config[_0x22eb('0x50')],_0x22eb('0x51'),_0x3a8588['value']);var _0x19cadf=util[_0x22eb('0x2d')](_0x22eb('0x52'),_0x35c997);if(fs[_0x22eb('0x53')](_0x19cadf)){_0x254b53=!![];return _0x5eecef[_0x22eb('0x54')](_0x19cadf,_0x35c997,config[_0x22eb('0x55')][_0x22eb('0x56')])[_0x22eb('0x20')](function(){return _0x3a8588;});}return _0x3a8588;}})[_0x22eb('0x20')](function(_0x9f8465){if(_0x9f8465){var _0x3e9ab5=path[_0x22eb('0x4f')](config[_0x22eb('0x50')],_0x22eb('0x51'),_0x9f8465['value']);if(!fs['existsSync'](_0x3e9ab5)){throw new db[(_0x22eb('0x57'))][(_0x22eb('0x58'))](_0x22eb('0x59'));}if(_0x9f8465[_0x22eb('0x5a')]){return _0x4e5b9f[_0x22eb('0x5b')](_0x3e9ab5,_0x9f8465['filename']+path[_0x22eb('0x5c')](_0x3e9ab5),function(){if(_0x254b53){fs[_0x22eb('0x5d')](_0x3e9ab5);}});}else{return _0x4e5b9f['download'](_0x3e9ab5,function(_0x485408){if(_0x254b53){fs[_0x22eb('0x5d')](_0x3e9ab5);}});}}})[_0x22eb('0x41')](function(_0xb5c8ae){if(_0xb5c8ae[_0x22eb('0x5e')]===_0x22eb('0x59')){_0x4e5b9f[_0x22eb('0x17')](0x194)[_0x22eb('0x25')](_0x22eb('0x5f'));}else{return handleError(_0x4e5b9f,null);}});};exports[_0x22eb('0x21')]=function(_0x19b579,_0x164645){return db[_0x22eb('0x27')][_0x22eb('0x45')]({'where':{'id':_0x19b579[_0x22eb('0x43')]['id']}})['then'](function(_0x29dd8b){if(_[_0x22eb('0x60')](_0x29dd8b)){throw new ReferenceError(_0x22eb('0x61'));}return _0x29dd8b;})['then'](function(_0x1787ec){var _0x5ac4c5=path[_0x22eb('0x4f')](config['root'],_0x22eb('0x51'),_0x1787ec[_0x22eb('0x4b')]);logger['info'](_0x22eb('0x62'),_0x5ac4c5);if(!_[_0x22eb('0x60')](_0x1787ec['value'])&&fs['existsSync'](_0x5ac4c5)){logger[_0x22eb('0x63')](_0x22eb('0x64')+_0x5ac4c5+_0x22eb('0x65'));fs[_0x22eb('0x66')](_0x5ac4c5);}_0x5ac4c5=_0x5ac4c5+_0x22eb('0x67');if(!_[_0x22eb('0x60')](_0x1787ec['value'])&&fs[_0x22eb('0x53')](_0x5ac4c5)){logger['info']('File:\x20\x22'+_0x5ac4c5+_0x22eb('0x65'));fs[_0x22eb('0x66')](_0x5ac4c5);}return _0x1787ec;})[_0x22eb('0x20')](function(_0x22b5c6){if(!_0x22b5c6)throw new InternalError();return _0x22b5c6[_0x22eb('0x21')]();})[_0x22eb('0x20')](function(){_0x164645[_0x22eb('0x17')](0xcc)[_0x22eb('0x22')]();})['catch'](handleError(_0x164645,null));};
\ No newline at end of file
index bd7b2f5..459adf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdfe=['interactionid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','exports','define'];(function(_0xce2c5f,_0x4d64d4){var _0x20db49=function(_0x3dd0f0){while(--_0x3dd0f0){_0xce2c5f['push'](_0xce2c5f['shift']());}};_0x20db49(++_0x4d64d4);}(_0xfdfe,0x7a));var _0xefdf=function(_0x5802e6,_0x5482be){_0x5802e6=_0x5802e6-0x0;var _0x3fffbc=_0xfdfe[_0x5802e6];return _0x3fffbc;};'use strict';var _=require(_0xefdf('0x0'));var util=require(_0xefdf('0x1'));var logger=require(_0xefdf('0x2'))(_0xefdf('0x3'));var moment=require('moment');var BPromise=require(_0xefdf('0x4'));var rp=require(_0xefdf('0x5'));var fs=require('fs');var path=require(_0xefdf('0x6'));var rimraf=require(_0xefdf('0x7'));var config=require('../../config/environment');var attributes=require('./screenRecording.attributes');module[_0xefdf('0x8')]=function(_0x2149a9,_0x5de0c7){return _0x2149a9[_0xefdf('0x9')]('ScreenRecording',attributes,{'tableName':'screen_recordings','paranoid':![],'indexes':[{'name':_0xefdf('0xa'),'fields':[_0xefdf('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfa24=['bluebird','request-promise','path','rimraf','./screenRecording.attributes','exports','define','ScreenRecording','screen_recordings','interactionid','lodash','util','../../config/logger','moment'];(function(_0x35da42,_0x5c2610){var _0x370035=function(_0x546db5){while(--_0x546db5){_0x35da42['push'](_0x35da42['shift']());}};_0x370035(++_0x5c2610);}(_0xfa24,0xce));var _0x4fa2=function(_0x1e17eb,_0x2e15c5){_0x1e17eb=_0x1e17eb-0x0;var _0x4de4c7=_0xfa24[_0x1e17eb];return _0x4de4c7;};'use strict';var _=require(_0x4fa2('0x0'));var util=require(_0x4fa2('0x1'));var logger=require(_0x4fa2('0x2'))('api');var moment=require(_0x4fa2('0x3'));var BPromise=require(_0x4fa2('0x4'));var rp=require(_0x4fa2('0x5'));var fs=require('fs');var path=require(_0x4fa2('0x6'));var rimraf=require(_0x4fa2('0x7'));var config=require('../../config/environment');var attributes=require(_0x4fa2('0x8'));module[_0x4fa2('0x9')]=function(_0x2792e3,_0xed8882){return _0x2792e3[_0x4fa2('0xa')](_0x4fa2('0xb'),attributes,{'tableName':_0x4fa2('0xc'),'paranoid':![],'indexes':[{'name':_0x4fa2('0xd'),'fields':[_0x4fa2('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 301cd2a..afa35f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef63=['ScreenRecording,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','ScreenRecording,\x20%s,\x20%s'];(function(_0x1a08ae,_0x16862c){var _0x117fe2=function(_0x5b4453){while(--_0x5b4453){_0x1a08ae['push'](_0x1a08ae['shift']());}};_0x117fe2(++_0x16862c);}(_0xef63,0x17f));var _0x3ef6=function(_0x30e338,_0x836ad9){_0x30e338=_0x30e338-0x0;var _0x3327c3=_0xef63[_0x30e338];return _0x3327c3;};'use strict';var _=require(_0x3ef6('0x0'));var util=require(_0x3ef6('0x1'));var moment=require(_0x3ef6('0x2'));var BPromise=require('bluebird');var rs=require(_0x3ef6('0x3'));var fs=require('fs');var Redis=require(_0x3ef6('0x4'));var db=require(_0x3ef6('0x5'))['db'];var utils=require(_0x3ef6('0x6'));var logger=require(_0x3ef6('0x7'))(_0x3ef6('0x8'));var config=require('../../config/environment');var jayson=require(_0x3ef6('0x9'));var client=jayson[_0x3ef6('0xa')][_0x3ef6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x35bcbb,_0x2a2b9a,_0x2801c1){return new BPromise(function(_0x211dfc,_0x3e9e42){return client[_0x3ef6('0xc')](_0x35bcbb,_0x2801c1)[_0x3ef6('0xd')](function(_0x2c96cc){logger[_0x3ef6('0xe')](_0x3ef6('0xf'),_0x2a2b9a,'request\x20sent');logger['debug'](_0x3ef6('0x10'),_0x2a2b9a,'request\x20sent',JSON['stringify'](_0x2c96cc));if(_0x2c96cc[_0x3ef6('0x11')]){if(_0x2c96cc[_0x3ef6('0x11')][_0x3ef6('0x12')]===0x1f4){logger[_0x3ef6('0x11')]('ScreenRecording,\x20%s,\x20%s',_0x2a2b9a,_0x2c96cc[_0x3ef6('0x11')][_0x3ef6('0x13')]);return _0x3e9e42(_0x2c96cc['error'][_0x3ef6('0x13')]);}logger[_0x3ef6('0x11')]('ScreenRecording,\x20%s,\x20%s',_0x2a2b9a,_0x2c96cc['error'][_0x3ef6('0x13')]);return _0x211dfc(_0x2c96cc['error'][_0x3ef6('0x13')]);}else{logger[_0x3ef6('0xe')](_0x3ef6('0xf'),_0x2a2b9a,'request\x20sent');_0x211dfc(_0x2c96cc[_0x3ef6('0x14')][_0x3ef6('0x13')]);}})['catch'](function(_0x1f9cb8){logger[_0x3ef6('0x11')](_0x3ef6('0xf'),_0x2a2b9a,_0x1f9cb8);_0x3e9e42(_0x1f9cb8);});});}
\ No newline at end of file
+var _0xae9b=['code','message','result','catch','lodash','util','moment','bluebird','../../config/utils','../../config/logger','../../config/environment','client','http','request','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','stringify','error'];(function(_0x9472f6,_0x46fbaa){var _0x32802d=function(_0x35e2b1){while(--_0x35e2b1){_0x9472f6['push'](_0x9472f6['shift']());}};_0x32802d(++_0x46fbaa);}(_0xae9b,0x144));var _0xbae9=function(_0x12fcaa,_0x54a756){_0x12fcaa=_0x12fcaa-0x0;var _0x1e4346=_0xae9b[_0x12fcaa];return _0x1e4346;};'use strict';var _=require(_0xbae9('0x0'));var util=require(_0xbae9('0x1'));var moment=require(_0xbae9('0x2'));var BPromise=require(_0xbae9('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xbae9('0x4'));var logger=require(_0xbae9('0x5'))('rpc');var config=require(_0xbae9('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xbae9('0x7')][_0xbae9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d7baa,_0x21eaaf,_0x40e591){return new BPromise(function(_0x17302c,_0x2a5465){return client[_0xbae9('0x9')](_0x1d7baa,_0x40e591)['then'](function(_0x221416){logger[_0xbae9('0xa')](_0xbae9('0xb'),_0x21eaaf,_0xbae9('0xc'));logger[_0xbae9('0xd')]('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x21eaaf,_0xbae9('0xc'),JSON[_0xbae9('0xe')](_0x221416));if(_0x221416[_0xbae9('0xf')]){if(_0x221416[_0xbae9('0xf')][_0xbae9('0x10')]===0x1f4){logger[_0xbae9('0xf')](_0xbae9('0xb'),_0x21eaaf,_0x221416['error'][_0xbae9('0x11')]);return _0x2a5465(_0x221416[_0xbae9('0xf')][_0xbae9('0x11')]);}logger[_0xbae9('0xf')](_0xbae9('0xb'),_0x21eaaf,_0x221416['error'][_0xbae9('0x11')]);return _0x17302c(_0x221416[_0xbae9('0xf')]['message']);}else{logger[_0xbae9('0xa')](_0xbae9('0xb'),_0x21eaaf,_0xbae9('0xc'));_0x17302c(_0x221416[_0xbae9('0x12')][_0xbae9('0x11')]);}})[_0xbae9('0x13')](function(_0x16400d){logger[_0xbae9('0xf')]('ScreenRecording,\x20%s,\x20%s',_0x21eaaf,_0x16400d);_0x2a5465(_0x16400d);});});}
\ No newline at end of file
index 4ff0f77..7e0ba4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc255=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','/now','getDate','/:id','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','getPreferred','diskStorage','join','root','server/files/images/logos/','format','%s%s','logo','extname','originalname','file','logologin','single','addLogoLogin','preferred','post','favicon','/:id/favicon','addFavicon','put','exports','multer','path'];(function(_0x14324d,_0x1b64e0){var _0x1f6358=function(_0x1aec64){while(--_0x1aec64){_0x14324d['push'](_0x14324d['shift']());}};_0x1f6358(++_0x1b64e0);}(_0xc255,0x181));var _0x5c25=function(_0xbf1132,_0x176b34){_0xbf1132=_0xbf1132-0x0;var _0xe63ce4=_0xc255[_0xbf1132];return _0xe63ce4;};'use strict';var multer=require(_0x5c25('0x0'));var util=require('util');var path=require(_0x5c25('0x1'));var timeout=require(_0x5c25('0x2'));var express=require(_0x5c25('0x3'));var router=express[_0x5c25('0x4')]();var fs_extra=require(_0x5c25('0x5'));var auth=require(_0x5c25('0x6'));var interaction=require(_0x5c25('0x7'));var config=require(_0x5c25('0x8'));var controller=require(_0x5c25('0x9'));router[_0x5c25('0xa')]('/',auth[_0x5c25('0xb')](),controller['index']);router[_0x5c25('0xa')](_0x5c25('0xc'),controller[_0x5c25('0xd')]);router[_0x5c25('0xa')](_0x5c25('0xe'),controller['show']);router[_0x5c25('0xa')](_0x5c25('0xf'),controller[_0x5c25('0x10')]);router[_0x5c25('0xa')](_0x5c25('0x11'),controller[_0x5c25('0x12')]);router[_0x5c25('0xa')](_0x5c25('0x13'),controller[_0x5c25('0x14')]);router[_0x5c25('0xa')](_0x5c25('0x15'),controller[_0x5c25('0x16')]);router[_0x5c25('0xa')]('/:id/favicon',controller['getFavicon']);var upload=multer({'storage':multer[_0x5c25('0x17')]({'destination':function(_0x115d12,_0x34b583,_0x92db02){_0x92db02(null,path[_0x5c25('0x18')](config[_0x5c25('0x19')],_0x5c25('0x1a')));},'filename':function(_0x57601a,_0x4242df,_0x14b56e){_0x14b56e(null,util[_0x5c25('0x1b')](_0x5c25('0x1c'),_0x5c25('0x1d'),path[_0x5c25('0x1e')](_0x4242df[_0x5c25('0x1f')])));}})});router['post'](_0x5c25('0xf'),upload['single'](_0x5c25('0x20')),controller['addLogo']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3a9f47,_0x4ca6b5,_0x200ce7){_0x200ce7(null,path[_0x5c25('0x18')](config[_0x5c25('0x19')],_0x5c25('0x1a')));},'filename':function(_0x163402,_0x54b51a,_0x3c0105){_0x3c0105(null,util['format'](_0x5c25('0x1c'),_0x5c25('0x21'),path[_0x5c25('0x1e')](_0x54b51a[_0x5c25('0x1f')])));}})});router['post'](_0x5c25('0x11'),upload[_0x5c25('0x22')](_0x5c25('0x20')),controller[_0x5c25('0x23')]);var upload=multer({'storage':multer[_0x5c25('0x17')]({'destination':function(_0x260a5e,_0x3c0141,_0x4de060){_0x4de060(null,path[_0x5c25('0x18')](config[_0x5c25('0x19')],_0x5c25('0x1a')));},'filename':function(_0x395e10,_0x35b49f,_0x4174d7){_0x4174d7(null,util[_0x5c25('0x1b')]('%s%s',_0x5c25('0x24'),path[_0x5c25('0x1e')](_0x35b49f['originalname'])));}})});router[_0x5c25('0x25')](_0x5c25('0x15'),upload['single']('file'),controller['addPreferred']);var upload=multer({'storage':multer[_0x5c25('0x17')]({'destination':function(_0x21713f,_0x843c2d,_0x41e5e6){_0x41e5e6(null,path[_0x5c25('0x18')](config[_0x5c25('0x19')],_0x5c25('0x1a')));},'filename':function(_0x3934dc,_0x33e4be,_0x5ebb10){_0x5ebb10(null,util[_0x5c25('0x1b')](_0x5c25('0x1c'),_0x5c25('0x26'),path['extname'](_0x33e4be[_0x5c25('0x1f')])));}})});router['post'](_0x5c25('0x27'),upload[_0x5c25('0x22')](_0x5c25('0x20')),controller[_0x5c25('0x28')]);router[_0x5c25('0x29')](_0x5c25('0xe'),auth[_0x5c25('0xb')](),controller['update']);module[_0x5c25('0x2a')]=router;
\ No newline at end of file
+var _0xc89b=['getLogo','getLogoLogin','gdpr','/:id/preferred','getPreferred','getFavicon','diskStorage','join','root','server/files/images/logos/','format','%s%s','extname','post','file','addLogo','originalname','/:id/logo_login','single','addLogoLogin','preferred','addPreferred','favicon','/:id/favicon','addFavicon','exports','connect-timeout','Router','fs-extra','../../components/auth/service','./setting.controller','get','isAuthenticated','/now','getDate','/:id','show','/:id/logo'];(function(_0x9faff7,_0x59a564){var _0x4f8043=function(_0x5f060d){while(--_0x5f060d){_0x9faff7['push'](_0x9faff7['shift']());}};_0x4f8043(++_0x59a564);}(_0xc89b,0x1e2));var _0xbc89=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xc89b[_0x220dbb];return _0x2b77de;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xbc89('0x0'));var express=require('express');var router=express[_0xbc89('0x1')]();var fs_extra=require(_0xbc89('0x2'));var auth=require(_0xbc89('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbc89('0x4'));router[_0xbc89('0x5')]('/',auth[_0xbc89('0x6')](),controller['index']);router['get'](_0xbc89('0x7'),controller[_0xbc89('0x8')]);router[_0xbc89('0x5')](_0xbc89('0x9'),controller[_0xbc89('0xa')]);router[_0xbc89('0x5')](_0xbc89('0xb'),controller[_0xbc89('0xc')]);router['get']('/:id/logo_login',controller[_0xbc89('0xd')]);router['get']('/:id/gdpr',controller[_0xbc89('0xe')]);router['get'](_0xbc89('0xf'),controller[_0xbc89('0x10')]);router[_0xbc89('0x5')]('/:id/favicon',controller[_0xbc89('0x11')]);var upload=multer({'storage':multer[_0xbc89('0x12')]({'destination':function(_0x47e5af,_0x50578c,_0x5e8fce){_0x5e8fce(null,path[_0xbc89('0x13')](config[_0xbc89('0x14')],_0xbc89('0x15')));},'filename':function(_0x14e4cf,_0x3e9212,_0x40c55a){_0x40c55a(null,util[_0xbc89('0x16')](_0xbc89('0x17'),'logo',path[_0xbc89('0x18')](_0x3e9212['originalname'])));}})});router[_0xbc89('0x19')](_0xbc89('0xb'),upload['single'](_0xbc89('0x1a')),controller[_0xbc89('0x1b')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x5b8fa2,_0x590374,_0x37b2a5){_0x37b2a5(null,path[_0xbc89('0x13')](config[_0xbc89('0x14')],_0xbc89('0x15')));},'filename':function(_0x450b71,_0xbd785b,_0x2bfcda){_0x2bfcda(null,util[_0xbc89('0x16')](_0xbc89('0x17'),'logologin',path[_0xbc89('0x18')](_0xbd785b[_0xbc89('0x1c')])));}})});router[_0xbc89('0x19')](_0xbc89('0x1d'),upload[_0xbc89('0x1e')](_0xbc89('0x1a')),controller[_0xbc89('0x1f')]);var upload=multer({'storage':multer[_0xbc89('0x12')]({'destination':function(_0x48623f,_0x3c456e,_0x98735c){_0x98735c(null,path[_0xbc89('0x13')](config[_0xbc89('0x14')],_0xbc89('0x15')));},'filename':function(_0x1b8433,_0x3c7d76,_0x31103c){_0x31103c(null,util[_0xbc89('0x16')](_0xbc89('0x17'),_0xbc89('0x20'),path[_0xbc89('0x18')](_0x3c7d76[_0xbc89('0x1c')])));}})});router[_0xbc89('0x19')](_0xbc89('0xf'),upload[_0xbc89('0x1e')]('file'),controller[_0xbc89('0x21')]);var upload=multer({'storage':multer[_0xbc89('0x12')]({'destination':function(_0x77aca1,_0x529fb5,_0xa93bb1){_0xa93bb1(null,path[_0xbc89('0x13')](config['root'],_0xbc89('0x15')));},'filename':function(_0x1a268d,_0x28fa60,_0xa575e1){_0xa575e1(null,util['format'](_0xbc89('0x17'),_0xbc89('0x22'),path['extname'](_0x28fa60['originalname'])));}})});router[_0xbc89('0x19')](_0xbc89('0x23'),upload[_0xbc89('0x1e')](_0xbc89('0x1a')),controller[_0xbc89('0x24')]);router['put'](_0xbc89('0x9'),auth['isAuthenticated'](),controller['update']);module[_0xbc89('0x25')]=router;
\ No newline at end of file
index fe2972f..3edb833 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['BOOLEAN','alternate','UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted'];(function(_0x250b67,_0x4396dc){var _0x292b11=function(_0x4fde0c){while(--_0x4fde0c){_0x250b67['push'](_0x250b67['shift']());}};_0x292b11(++_0x4396dc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'min_internal':{'type':Sequelize[_0x0a9e('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize['INTEGER'](0xb),'unique':_0x0a9e('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x5')},'logo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLogo':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x0a9e('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize[_0x0a9e('0x4')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0x0a9e('0x4')]},'defaultPageTitle':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x0a9e('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x7')},'chatTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x0a9e('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x0a9e('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize['INTEGER']},'transcribeRegion':{'type':Sequelize[_0x0a9e('0x4')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x0a9e('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x0a9e('0x4')]},'bucket':{'type':Sequelize[_0x0a9e('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x0a9e('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'previewRecallmeReminderInterval':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5,'validate':{'min':0x1}},'disabledCookie':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'limitTabs':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x14}};
\ No newline at end of file
+var _0x4fb9=['min_internal','INTEGER','min_mailbox','STRING','BOOLEAN','alternate','UNSIGNED','sequelize','exports'];(function(_0x25a64b,_0x2fe9b5){var _0x198f43=function(_0x5cfee6){while(--_0x5cfee6){_0x25a64b['push'](_0x25a64b['shift']());}};_0x198f43(++_0x2fe9b5);}(_0x4fb9,0xdf));var _0x94fb=function(_0x38d6ad,_0x1d7ea4){_0x38d6ad=_0x38d6ad-0x0;var _0x1581d4=_0x4fb9[_0x38d6ad];return _0x1581d4;};'use strict';var Sequelize=require(_0x94fb('0x0'));module[_0x94fb('0x1')]={'min_internal':{'type':Sequelize['INTEGER'](0xb),'unique':_0x94fb('0x2'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x94fb('0x3')](0xb),'unique':_0x94fb('0x4'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x94fb('0x3')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x94fb('0x5')],'defaultValue':'/var/opt/motion2/server/files/sounds/converted'},'logo':{'type':Sequelize[_0x94fb('0x5')]},'defaultLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x94fb('0x5')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x94fb('0x5')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x94fb('0x5')]},'turnaddr':{'type':Sequelize[_0x94fb('0x5')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0x94fb('0x5')]},'defaultPageTitle':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x94fb('0x3')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize['STRING'],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':![]},'split':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x94fb('0x3')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x94fb('0x5')],'defaultValue':_0x94fb('0x7')},'chatTimeout':{'type':Sequelize[_0x94fb('0x3')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x94fb('0x5')]},'defaultPreferred':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x94fb('0x5')]},'allowedLoginAttempts':{'type':Sequelize[_0x94fb('0x3')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x94fb('0x3')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x94fb('0x5')]},'defaultFavicon':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x94fb('0x3')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x94fb('0x3')]},'transcribeRegion':{'type':Sequelize['STRING']},'sentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x94fb('0x3')]},'sentimentRegion':{'type':Sequelize[_0x94fb('0x5')]},'language':{'type':Sequelize[_0x94fb('0x5')]},'bucket':{'type':Sequelize[_0x94fb('0x5')]},'googleSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x94fb('0x3')](0x2)[_0x94fb('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x94fb('0x3')](0x2)['UNSIGNED'],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize['INTEGER'](0x2)[_0x94fb('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x94fb('0x3')](0x2)[_0x94fb('0x8')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x94fb('0x3')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x94fb('0x3')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x94fb('0x3')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize[_0x94fb('0x3')],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x94fb('0x3')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':!![]},'previewRecallmeReminderInterval':{'type':Sequelize[_0x94fb('0x3')],'defaultValue':0x5,'validate':{'min':0x1}},'disabledCookie':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':![]},'limitTabs':{'type':Sequelize[_0x94fb('0x3')],'defaultValue':0x14},'filterFullName':{'type':Sequelize[_0x94fb('0x6')],'defaultValue':![]}};
\ No newline at end of file
index faa63ce..3b688e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5178=['Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','defaultLoginLogo','default_loginLogo.svg','default','securePassword','preferred','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','now','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','error','code','message','catch','sendStatus','end','status','offset','undefined','count','set','Content-Range','json','apply','reject','save','update','destroy','stack','send','index','Setting','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','where','pick','filter','merge','map','VIRTUAL','includeAll','include','options','find','body','addLogo','file','filename','logo','params','addLogoLogin','loginLogo','getLogo','server/files/images/logos','getLicense','favicon','defaultLogo','defaultPreferred','defaultFavicon','existsSync','root','toLower','join','default_logo.svg','upperFirst','custom'];(function(_0x1fc18b,_0x13d27d){var _0x16a351=function(_0x54a799){while(--_0x54a799){_0x1fc18b['push'](_0x1fc18b['shift']());}};_0x16a351(++_0x13d27d);}(_0x5178,0x171));var _0x8517=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x5178[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8517('0x0'));var zipdir=require(_0x8517('0x1'));var jsonpatch=require(_0x8517('0x2'));var rp=require(_0x8517('0x3'));var moment=require(_0x8517('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x8517('0x5'));var path=require(_0x8517('0x6'));var sox=require('sox');var csv=require(_0x8517('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8517('0x8'));var _=require(_0x8517('0x9'));var squel=require(_0x8517('0xa'));var crypto=require(_0x8517('0xb'));var jsforce=require(_0x8517('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8517('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x8517('0xd'));var authService=require(_0x8517('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x8517('0xf'));var hardwareService=require(_0x8517('0x10'));var logger=require(_0x8517('0x11'))(_0x8517('0x12'));var utils=require(_0x8517('0x13'));var config=require(_0x8517('0x14'));var licenseUtil=require(_0x8517('0x15'));var db=require(_0x8517('0x16'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x8517('0x17')][_0x8517('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x268128,_0x170214,_0x284a05,_0x49eba7){return new BPromise(function(_0x385219,_0x19dd9d){var _0x126e0b=_0x49eba7||client;return _0x126e0b[_0x8517('0x19')](_0x268128,_0x284a05)[_0x8517('0x1a')](function(_0x18a984){logger[_0x8517('0x1b')](_0x8517('0x1c'),_0x170214,_0x8517('0x1d'));logger[_0x8517('0x1e')](_0x8517('0x1f'),_0x170214,_0x8517('0x1d'),JSON['stringify'](_0x18a984));if(_0x18a984[_0x8517('0x20')]){if(_0x18a984[_0x8517('0x20')][_0x8517('0x21')]===0x1f4){logger[_0x8517('0x20')](_0x8517('0x1c'),_0x170214,_0x18a984[_0x8517('0x20')][_0x8517('0x22')]);return _0x19dd9d(_0x18a984['error'][_0x8517('0x22')]);}logger['error']('Setting,\x20%s,\x20%s',_0x170214,_0x18a984[_0x8517('0x20')][_0x8517('0x22')]);return _0x385219(_0x18a984[_0x8517('0x20')][_0x8517('0x22')]);}else{logger[_0x8517('0x1b')](_0x8517('0x1c'),_0x170214,'request\x20sent');_0x385219(_0x18a984['result'][_0x8517('0x22')]);}})[_0x8517('0x23')](function(_0x2c594f){logger[_0x8517('0x20')](_0x8517('0x1c'),_0x170214,_0x2c594f);_0x19dd9d(_0x2c594f);});});}function respondWithStatusCode(_0x2e6e47,_0x5f02ee){_0x5f02ee=_0x5f02ee||0xcc;return function(_0x181500){if(_0x181500){return _0x2e6e47[_0x8517('0x24')](_0x5f02ee);}return _0x2e6e47['status'](_0x5f02ee)[_0x8517('0x25')]();};}function respondWithResult(_0x2febd5,_0x42c779){_0x42c779=_0x42c779||0xc8;return function(_0x5492f6){if(_0x5492f6){return _0x2febd5[_0x8517('0x26')](_0x42c779)['json'](_0x5492f6);}};}function respondWithFilteredResult(_0x2880b6,_0x2a2b7e){return function(_0x448211){if(_0x448211){var _0x2b0c19=typeof _0x2a2b7e[_0x8517('0x27')]===_0x8517('0x28')&&typeof _0x2a2b7e['limit']===_0x8517('0x28');var _0x51d516=_0x448211[_0x8517('0x29')];var _0x70ee9d=_0x2b0c19?0x0:_0x2a2b7e[_0x8517('0x27')];var _0x355aa6=_0x2b0c19?_0x448211[_0x8517('0x29')]:_0x2a2b7e[_0x8517('0x27')]+_0x2a2b7e['limit'];var _0x20ec0a;if(_0x355aa6>=_0x51d516){_0x355aa6=_0x51d516;_0x20ec0a=0xc8;}else{_0x20ec0a=0xce;}_0x2880b6['status'](_0x20ec0a);return _0x2880b6[_0x8517('0x2a')](_0x8517('0x2b'),_0x70ee9d+'-'+_0x355aa6+'/'+_0x51d516)[_0x8517('0x2c')](_0x448211);}return null;};}function patchUpdates(_0x2d360c){return function(_0x3cf945){try{jsonpatch[_0x8517('0x2d')](_0x3cf945,_0x2d360c,!![]);}catch(_0x273b27){return BPromise[_0x8517('0x2e')](_0x273b27);}return _0x3cf945[_0x8517('0x2f')]();};}function saveUpdates(_0x559707,_0x3e8f81){return function(_0x1031b3){if(_0x1031b3){return _0x1031b3[_0x8517('0x30')](_0x559707)['then'](function(_0x5db173){return _0x5db173;});}return null;};}function removeEntity(_0x5cb78c,_0x25eb4c){return function(_0x4102b4){if(_0x4102b4){return _0x4102b4[_0x8517('0x31')]()[_0x8517('0x1a')](function(){_0x5cb78c[_0x8517('0x26')](0xcc)[_0x8517('0x25')]();});}};}function handleEntityNotFound(_0x5d9d04,_0x19dd26){return function(_0x234da4){if(!_0x234da4){_0x5d9d04[_0x8517('0x24')](0x194);}return _0x234da4;};}function handleError(_0x55785d,_0x43290c){_0x43290c=_0x43290c||0x1f4;return function(_0x5756d7){logger[_0x8517('0x20')](_0x5756d7[_0x8517('0x32')]);if(_0x5756d7['name']){delete _0x5756d7['name'];}_0x55785d[_0x8517('0x26')](_0x43290c)[_0x8517('0x33')](_0x5756d7);};}exports[_0x8517('0x34')]=function(_0x67c412,_0x4f93bd){var _0x5b1d34={},_0x2cb889={},_0x11a1b3={'count':0x0,'rows':[]};var _0x1835ac=_['map'](db[_0x8517('0x35')][_0x8517('0x36')],function(_0x4afa5b){return{'name':_0x4afa5b[_0x8517('0x37')],'type':_0x4afa5b[_0x8517('0x38')][_0x8517('0x39')]};});_0x2cb889[_0x8517('0x3a')]=_['map'](_0x1835ac,_0x8517('0x3b'));_0x2cb889[_0x8517('0x3c')]=_[_0x8517('0x3d')](_0x67c412[_0x8517('0x3c')]);_0x2cb889[_0x8517('0x3e')]=_[_0x8517('0x3f')](_0x2cb889[_0x8517('0x3a')],_0x2cb889[_0x8517('0x3c')]);_0x5b1d34[_0x8517('0x40')]=_[_0x8517('0x3f')](_0x2cb889[_0x8517('0x3a')],qs[_0x8517('0x41')](_0x67c412[_0x8517('0x3c')]['fields']));_0x5b1d34['attributes']=_0x5b1d34[_0x8517('0x40')][_0x8517('0x42')]?_0x5b1d34[_0x8517('0x40')]:_0x2cb889[_0x8517('0x3a')];if(!_0x67c412[_0x8517('0x3c')]['hasOwnProperty'](_0x8517('0x43'))){_0x5b1d34[_0x8517('0x44')]=qs['limit'](_0x67c412[_0x8517('0x3c')][_0x8517('0x44')]);_0x5b1d34[_0x8517('0x27')]=qs[_0x8517('0x27')](_0x67c412['query'][_0x8517('0x27')]);}_0x5b1d34[_0x8517('0x45')]=qs['sort'](_0x67c412[_0x8517('0x3c')][_0x8517('0x46')]);_0x5b1d34[_0x8517('0x47')]=qs['filters'](_[_0x8517('0x48')](_0x67c412[_0x8517('0x3c')],_0x2cb889[_0x8517('0x3e')]),_0x1835ac);if(_0x67c412[_0x8517('0x3c')][_0x8517('0x49')]){_0x5b1d34[_0x8517('0x47')]=_[_0x8517('0x4a')](_0x5b1d34['where'],{'$or':_[_0x8517('0x4b')](_0x1835ac,function(_0x1ea1fb){if(_0x1ea1fb['type']!==_0x8517('0x4c')){var _0x200a14={};_0x200a14[_0x1ea1fb[_0x8517('0x3b')]]={'$like':'%'+_0x67c412[_0x8517('0x3c')][_0x8517('0x49')]+'%'};return _0x200a14;}})});}_0x5b1d34=_[_0x8517('0x4a')]({},_0x5b1d34,_0x67c412['options']);var _0xad2c85={'where':_0x5b1d34[_0x8517('0x47')]};return db[_0x8517('0x35')]['count'](_0xad2c85)[_0x8517('0x1a')](function(_0x197480){_0x11a1b3['count']=_0x197480;if(_0x67c412[_0x8517('0x3c')][_0x8517('0x4d')]){_0x5b1d34['include']=[{'all':!![]}];}return db['Setting']['findAll'](_0x5b1d34);})[_0x8517('0x1a')](function(_0x250a14){_0x11a1b3['rows']=_0x250a14;return _0x11a1b3;})[_0x8517('0x1a')](respondWithFilteredResult(_0x4f93bd,_0x5b1d34))['catch'](handleError(_0x4f93bd,null));};exports['show']=function(_0x691afe,_0x2eae3f){var _0x3c8ecb={'raw':![],'where':{'id':_0x691afe['params']['id']}},_0x6c2607={};_0x6c2607[_0x8517('0x3a')]=_[_0x8517('0x3d')](db[_0x8517('0x35')]['rawAttributes']);_0x6c2607[_0x8517('0x3c')]=_[_0x8517('0x3d')](_0x691afe[_0x8517('0x3c')]);_0x6c2607[_0x8517('0x3e')]=_[_0x8517('0x3f')](_0x6c2607[_0x8517('0x3a')],_0x6c2607[_0x8517('0x3c')]);_0x3c8ecb['attributes']=_[_0x8517('0x3f')](_0x6c2607['model'],qs['fields'](_0x691afe[_0x8517('0x3c')][_0x8517('0x41')]));_0x3c8ecb[_0x8517('0x40')]=_0x3c8ecb[_0x8517('0x40')]['length']?_0x3c8ecb[_0x8517('0x40')]:_0x6c2607[_0x8517('0x3a')];if(_0x691afe['query']['includeAll']){_0x3c8ecb[_0x8517('0x4e')]=[{'all':!![]}];}_0x3c8ecb=_[_0x8517('0x4a')]({},_0x3c8ecb,_0x691afe[_0x8517('0x4f')]);return db['Setting'][_0x8517('0x50')](_0x3c8ecb)['then'](handleEntityNotFound(_0x2eae3f,null))[_0x8517('0x1a')](respondWithResult(_0x2eae3f,null))[_0x8517('0x23')](handleError(_0x2eae3f,null));};exports[_0x8517('0x30')]=function(_0x58c98b,_0x2a2cac){if(_0x58c98b[_0x8517('0x51')]['id']){delete _0x58c98b[_0x8517('0x51')]['id'];}return db[_0x8517('0x35')][_0x8517('0x50')]({'where':{'id':_0x58c98b['params']['id']}})['then'](handleEntityNotFound(_0x2a2cac,null))[_0x8517('0x1a')](saveUpdates(_0x58c98b[_0x8517('0x51')],null))[_0x8517('0x1a')](respondWithResult(_0x2a2cac,null))['catch'](handleError(_0x2a2cac,null));};exports[_0x8517('0x52')]=function(_0x1ce476,_0x445f9b,_0x4cc9e2){if(_0x1ce476['file']&&_0x1ce476[_0x8517('0x53')][_0x8517('0x54')]){_0x1ce476[_0x8517('0x51')][_0x8517('0x55')]=_0x1ce476[_0x8517('0x53')][_0x8517('0x54')];}return db[_0x8517('0x35')][_0x8517('0x50')]({'where':{'id':_0x1ce476[_0x8517('0x56')]['id']}})[_0x8517('0x1a')](handleEntityNotFound(_0x445f9b,null))[_0x8517('0x1a')](saveUpdates(_0x1ce476[_0x8517('0x51')],null))[_0x8517('0x1a')](respondWithResult(_0x445f9b,null))[_0x8517('0x23')](handleError(_0x445f9b,null));};exports[_0x8517('0x57')]=function(_0x46e6bb,_0x5c3932,_0x2d1352){if(_0x46e6bb[_0x8517('0x53')]&&_0x46e6bb[_0x8517('0x53')][_0x8517('0x54')]){_0x46e6bb[_0x8517('0x51')][_0x8517('0x58')]=_0x46e6bb[_0x8517('0x53')]['filename'];}return db[_0x8517('0x35')][_0x8517('0x50')]({'where':{'id':_0x46e6bb[_0x8517('0x56')]['id']}})[_0x8517('0x1a')](handleEntityNotFound(_0x5c3932,null))[_0x8517('0x1a')](saveUpdates(_0x46e6bb['body'],null))[_0x8517('0x1a')](respondWithResult(_0x5c3932,null))['catch'](handleError(_0x5c3932,null));};var utilLicense=require(_0x8517('0x15'));exports[_0x8517('0x59')]=function(_0x4147cf,_0x320dc4,_0x2351a9){var _0x56b659=_0x8517('0x5a');var _0x31928a={'custom':![]};return utilLicense[_0x8517('0x5b')]()[_0x8517('0x1a')](function(_0x575d0d){if(_0x575d0d){_0x31928a=_0x575d0d;}return db['Setting'][_0x8517('0x50')]({'where':{'id':_0x4147cf['params']['id']},'attributes':[_0x8517('0x55'),_0x8517('0x58'),'preferred',_0x8517('0x5c'),_0x8517('0x5d'),'defaultLoginLogo',_0x8517('0x5e'),_0x8517('0x5f')],'raw':!![]});})[_0x8517('0x1a')](handleEntityNotFound(_0x320dc4,null))[_0x8517('0x1a')](function(_0x836e5d){if(_0x836e5d){var _0x30260f=_0x836e5d[_0x8517('0x55')]&&fs[_0x8517('0x60')](path['join'](config[_0x8517('0x61')],_0x56b659,_[_0x8517('0x62')](_0x836e5d[_0x8517('0x55')])))?path[_0x8517('0x63')](config['root'],_0x56b659,_[_0x8517('0x62')](_0x836e5d['logo'])):path[_0x8517('0x63')](config[_0x8517('0x61')],_0x56b659,_[_0x8517('0x62')](_0x8517('0x64')));var _0x52af58='default'+_[_0x8517('0x65')](_0x8517('0x55'));if(_0x836e5d[_0x52af58]||!_0x31928a[_0x8517('0x66')]){_0x30260f=path[_0x8517('0x63')](config['root'],_0x56b659,_[_0x8517('0x62')](_0x8517('0x64')));}if(!fs[_0x8517('0x60')](_0x30260f)){throw new db[(_0x8517('0x67'))][(_0x8517('0x68'))](_[_0x8517('0x65')](_0x8517('0x55'))+_0x8517('0x69'));}return _0x320dc4[_0x8517('0x6a')](_0x30260f);}})[_0x8517('0x23')](handleError(_0x320dc4,null));};var utilLicense=require('../../config/license/util');exports[_0x8517('0x6b')]=function(_0x1afe9c,_0x121098,_0x512a09){var _0x7dfd74='server/files/images/logos';var _0x2a3d87={'custom':![]};return utilLicense[_0x8517('0x5b')]()['then'](function(_0x2504d3){if(_0x2504d3){_0x2a3d87=_0x2504d3;}return db[_0x8517('0x35')][_0x8517('0x50')]({'where':{'id':_0x1afe9c[_0x8517('0x56')]['id']},'attributes':[_0x8517('0x55'),_0x8517('0x58'),'preferred',_0x8517('0x5c'),'defaultLogo',_0x8517('0x6c'),_0x8517('0x5e'),_0x8517('0x5f')],'raw':!![]});})[_0x8517('0x1a')](handleEntityNotFound(_0x121098,null))['then'](function(_0x27dbe1){if(_0x27dbe1){var _0x670690=_0x27dbe1[_0x8517('0x58')]&&fs['existsSync'](path[_0x8517('0x63')](config[_0x8517('0x61')],_0x7dfd74,_[_0x8517('0x62')](_0x27dbe1[_0x8517('0x58')])))?path[_0x8517('0x63')](config[_0x8517('0x61')],_0x7dfd74,_[_0x8517('0x62')](_0x27dbe1['loginLogo'])):path[_0x8517('0x63')](config['root'],_0x7dfd74,_['toLower'](_0x8517('0x6d')));var _0x426bfa=_0x8517('0x6e')+_['upperFirst'](_0x8517('0x58'));if(_0x27dbe1[_0x426bfa]||!_0x2a3d87[_0x8517('0x66')]){_0x670690=path['join'](config[_0x8517('0x61')],_0x7dfd74,_['toLower']('default_loginLogo.svg'));}if(!fs[_0x8517('0x60')](_0x670690)){throw new db[(_0x8517('0x67'))][(_0x8517('0x68'))](_[_0x8517('0x65')](_0x8517('0x58'))+'\x20not\x20found');}return _0x121098[_0x8517('0x6a')](_0x670690);}})[_0x8517('0x23')](handleError(_0x121098,null));};exports['gdpr']=function(_0x5cc40c,_0x2e7412){return db[_0x8517('0x35')][_0x8517('0x50')]({'where':{'id':_0x5cc40c[_0x8517('0x56')]['id']},'attributes':[_0x8517('0x6f')]})[_0x8517('0x1a')](respondWithResult(_0x2e7412,null))['catch'](handleError(_0x2e7412,null));};exports['addPreferred']=function(_0x20e21a,_0x1c0cfc,_0x5f53da){if(_0x20e21a[_0x8517('0x53')]&&_0x20e21a[_0x8517('0x53')]['filename']){_0x20e21a[_0x8517('0x51')][_0x8517('0x70')]=_0x20e21a[_0x8517('0x53')]['filename'];}return db['Setting'][_0x8517('0x50')]({'where':{'id':_0x20e21a[_0x8517('0x56')]['id']}})[_0x8517('0x1a')](handleEntityNotFound(_0x1c0cfc,null))[_0x8517('0x1a')](saveUpdates(_0x20e21a[_0x8517('0x51')],null))['then'](respondWithResult(_0x1c0cfc,null))[_0x8517('0x23')](handleError(_0x1c0cfc,null));};var utilLicense=require(_0x8517('0x15'));exports['getPreferred']=function(_0x2c070b,_0x467832,_0x1da121){var _0x330c55=_0x8517('0x5a');var _0x276be5={'custom':![]};return utilLicense[_0x8517('0x5b')]()[_0x8517('0x1a')](function(_0x2df2e5){if(_0x2df2e5){_0x276be5=_0x2df2e5;}return db[_0x8517('0x35')][_0x8517('0x50')]({'where':{'id':_0x2c070b[_0x8517('0x56')]['id']},'attributes':[_0x8517('0x55'),_0x8517('0x58'),_0x8517('0x70'),_0x8517('0x5c'),_0x8517('0x5d'),_0x8517('0x6c'),_0x8517('0x5e'),'defaultFavicon'],'raw':!![]});})[_0x8517('0x1a')](handleEntityNotFound(_0x467832,null))[_0x8517('0x1a')](function(_0x41b3ea){if(_0x41b3ea){var _0x2baa2b=_0x41b3ea[_0x8517('0x70')]&&fs[_0x8517('0x60')](path[_0x8517('0x63')](config['root'],_0x330c55,_[_0x8517('0x62')](_0x41b3ea[_0x8517('0x70')])))?path[_0x8517('0x63')](config[_0x8517('0x61')],_0x330c55,_[_0x8517('0x62')](_0x41b3ea[_0x8517('0x70')])):path['join'](config[_0x8517('0x61')],_0x330c55,_[_0x8517('0x62')](_0x8517('0x71')));var _0x11e004=_0x8517('0x6e')+_['upperFirst'](_0x8517('0x70'));if(_0x41b3ea[_0x11e004]||!_0x276be5[_0x8517('0x66')]||!_0x276be5[_0x8517('0x70')]){_0x2baa2b=path[_0x8517('0x63')](config['root'],_0x330c55,_[_0x8517('0x62')]('default_preferred.png'));}if(!fs[_0x8517('0x60')](_0x2baa2b)){throw new db[(_0x8517('0x67'))][(_0x8517('0x68'))](_[_0x8517('0x65')](_0x8517('0x70'))+_0x8517('0x69'));}return _0x467832[_0x8517('0x6a')](_0x2baa2b);}})[_0x8517('0x23')](handleError(_0x467832,null));};exports[_0x8517('0x72')]=function(_0x4b958e,_0x20f01c,_0x23445b){if(_0x4b958e[_0x8517('0x53')]&&_0x4b958e[_0x8517('0x53')]['filename']){_0x4b958e[_0x8517('0x51')][_0x8517('0x5c')]=_0x4b958e[_0x8517('0x53')][_0x8517('0x54')];}return db[_0x8517('0x35')][_0x8517('0x50')]({'where':{'id':_0x4b958e[_0x8517('0x56')]['id']}})[_0x8517('0x1a')](handleEntityNotFound(_0x20f01c,null))[_0x8517('0x1a')](saveUpdates(_0x4b958e[_0x8517('0x51')],null))[_0x8517('0x1a')](respondWithResult(_0x20f01c,null))[_0x8517('0x23')](handleError(_0x20f01c,null));};var utilLicense=require('../../config/license/util');exports[_0x8517('0x73')]=function(_0xd6a27e,_0x4b6176,_0x35ccd0){var _0x26f366='server/files/images/logos';var _0x5df022={'custom':![]};return utilLicense['getLicense']()[_0x8517('0x1a')](function(_0x532cec){if(_0x532cec){_0x5df022=_0x532cec;}return db[_0x8517('0x35')]['find']({'where':{'id':_0xd6a27e[_0x8517('0x56')]['id']},'attributes':['logo',_0x8517('0x58'),'preferred',_0x8517('0x5c'),_0x8517('0x5d'),'defaultLoginLogo',_0x8517('0x5e'),_0x8517('0x5f')],'raw':!![]});})[_0x8517('0x1a')](handleEntityNotFound(_0x4b6176,null))[_0x8517('0x1a')](function(_0x327a31){if(_0x327a31){var _0x47db8d=_0x327a31['favicon']&&fs['existsSync'](path[_0x8517('0x63')](config[_0x8517('0x61')],_0x26f366,_[_0x8517('0x62')](_0x327a31[_0x8517('0x5c')])))?path['join'](config['root'],_0x26f366,_[_0x8517('0x62')](_0x327a31[_0x8517('0x5c')])):path['join'](config[_0x8517('0x61')],_0x26f366,_[_0x8517('0x62')](_0x8517('0x74')));var _0x327ef9='default'+_[_0x8517('0x65')](_0x8517('0x5c'));if(_0x327a31[_0x327ef9]||!_0x5df022[_0x8517('0x66')]){_0x47db8d=path[_0x8517('0x63')](config[_0x8517('0x61')],_0x26f366,_[_0x8517('0x62')]('default_favicon.ico'));}if(!fs[_0x8517('0x60')](_0x47db8d)){throw new db[(_0x8517('0x67'))][(_0x8517('0x68'))](_[_0x8517('0x65')](_0x8517('0x5c'))+'\x20not\x20found');}return _0x4b6176[_0x8517('0x6a')](_0x47db8d);}})[_0x8517('0x23')](handleError(_0x4b6176,null));};exports['getDate']=function(_0x179c2e,_0x33caf4){var _0x428756={'offset':moment()['utcOffset']()};_0x428756[_0x8517('0x75')]=moment()['utcOffset'](_0x428756[_0x8517('0x27')])['format']('YYYY-MM-DD\x20HH:mm:ss:SSS');return _0x33caf4[_0x8517('0x26')](0xc8)[_0x8517('0x33')](_0x428756);};
\ No newline at end of file
+var _0xfb3c=['debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','Setting,\x20%s,\x20%s','message','result','end','status','json','offset','limit','undefined','count','Content-Range','apply','reject','update','then','sendStatus','stack','name','send','index','map','Setting','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','sort','where','pick','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','options','find','body','params','file','filename','addLogoLogin','loginLogo','getLogo','getLicense','logo','preferred','defaultLogo','defaultPreferred','defaultFavicon','existsSync','join','root','toLower','default_logo.svg','default','upperFirst','custom','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','favicon','default_loginLogo.svg','securePassword','addPreferred','getPreferred','defaultLoginLogo','addFavicon','getFavicon','server/files/images/logos','default_favicon.ico','getDate','utcOffset','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','info','request\x20sent'];(function(_0x2e4e19,_0x493b50){var _0x9ba20b=function(_0x2f6456){while(--_0x2f6456){_0x2e4e19['push'](_0x2e4e19['shift']());}};_0x9ba20b(++_0x493b50);}(_0xfb3c,0x1df));var _0xcfb3=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0xfb3c[_0x27af45];return _0x18df21;};'use strict';var emlformat=require(_0xcfb3('0x0'));var rimraf=require(_0xcfb3('0x1'));var zipdir=require(_0xcfb3('0x2'));var jsonpatch=require(_0xcfb3('0x3'));var rp=require('request-promise');var moment=require(_0xcfb3('0x4'));var BPromise=require(_0xcfb3('0x5'));var Mustache=require('mustache');var util=require(_0xcfb3('0x6'));var path=require(_0xcfb3('0x7'));var sox=require('sox');var csv=require(_0xcfb3('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xcfb3('0x9'));var _=require(_0xcfb3('0xa'));var squel=require(_0xcfb3('0xb'));var crypto=require(_0xcfb3('0xc'));var jsforce=require(_0xcfb3('0xd'));var deskjs=require(_0xcfb3('0xe'));var toCsv=require(_0xcfb3('0x8'));var querystring=require(_0xcfb3('0xf'));var Papa=require(_0xcfb3('0x10'));var Redis=require('ioredis');var authService=require(_0xcfb3('0x11'));var qs=require(_0xcfb3('0x12'));var as=require(_0xcfb3('0x13'));var hardwareService=require(_0xcfb3('0x14'));var logger=require(_0xcfb3('0x15'))(_0xcfb3('0x16'));var utils=require(_0xcfb3('0x17'));var config=require(_0xcfb3('0x18'));var licenseUtil=require(_0xcfb3('0x19'));var db=require(_0xcfb3('0x1a'))['db'];var jayson=require(_0xcfb3('0x1b'));var client=jayson[_0xcfb3('0x1c')][_0xcfb3('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x324797,_0x295bcd,_0x4b41a8,_0x406f11){return new BPromise(function(_0x419ebf,_0x10ed44){var _0x5d1c65=_0x406f11||client;return _0x5d1c65[_0xcfb3('0x1e')](_0x324797,_0x4b41a8)['then'](function(_0x32281e){logger[_0xcfb3('0x1f')]('Setting,\x20%s,\x20%s',_0x295bcd,_0xcfb3('0x20'));logger[_0xcfb3('0x21')](_0xcfb3('0x22'),_0x295bcd,_0xcfb3('0x20'),JSON[_0xcfb3('0x23')](_0x32281e));if(_0x32281e['error']){if(_0x32281e[_0xcfb3('0x24')][_0xcfb3('0x25')]===0x1f4){logger[_0xcfb3('0x24')](_0xcfb3('0x26'),_0x295bcd,_0x32281e['error']['message']);return _0x10ed44(_0x32281e[_0xcfb3('0x24')][_0xcfb3('0x27')]);}logger[_0xcfb3('0x24')]('Setting,\x20%s,\x20%s',_0x295bcd,_0x32281e['error'][_0xcfb3('0x27')]);return _0x419ebf(_0x32281e['error'][_0xcfb3('0x27')]);}else{logger[_0xcfb3('0x1f')](_0xcfb3('0x26'),_0x295bcd,'request\x20sent');_0x419ebf(_0x32281e[_0xcfb3('0x28')]['message']);}})['catch'](function(_0x522161){logger[_0xcfb3('0x24')](_0xcfb3('0x26'),_0x295bcd,_0x522161);_0x10ed44(_0x522161);});});}function respondWithStatusCode(_0x14ae25,_0x400724){_0x400724=_0x400724||0xcc;return function(_0x79baa6){if(_0x79baa6){return _0x14ae25['sendStatus'](_0x400724);}return _0x14ae25['status'](_0x400724)[_0xcfb3('0x29')]();};}function respondWithResult(_0x292762,_0x21f1c5){_0x21f1c5=_0x21f1c5||0xc8;return function(_0x2df6c5){if(_0x2df6c5){return _0x292762[_0xcfb3('0x2a')](_0x21f1c5)[_0xcfb3('0x2b')](_0x2df6c5);}};}function respondWithFilteredResult(_0x2a9f2d,_0x50a8b8){return function(_0x3d8b4a){if(_0x3d8b4a){var _0x417e24=typeof _0x50a8b8[_0xcfb3('0x2c')]==='undefined'&&typeof _0x50a8b8[_0xcfb3('0x2d')]===_0xcfb3('0x2e');var _0xee0366=_0x3d8b4a[_0xcfb3('0x2f')];var _0x44c118=_0x417e24?0x0:_0x50a8b8[_0xcfb3('0x2c')];var _0x12c6b9=_0x417e24?_0x3d8b4a['count']:_0x50a8b8[_0xcfb3('0x2c')]+_0x50a8b8[_0xcfb3('0x2d')];var _0x34e6ac;if(_0x12c6b9>=_0xee0366){_0x12c6b9=_0xee0366;_0x34e6ac=0xc8;}else{_0x34e6ac=0xce;}_0x2a9f2d[_0xcfb3('0x2a')](_0x34e6ac);return _0x2a9f2d['set'](_0xcfb3('0x30'),_0x44c118+'-'+_0x12c6b9+'/'+_0xee0366)[_0xcfb3('0x2b')](_0x3d8b4a);}return null;};}function patchUpdates(_0x22db21){return function(_0x35ccd7){try{jsonpatch[_0xcfb3('0x31')](_0x35ccd7,_0x22db21,!![]);}catch(_0xaea3a0){return BPromise[_0xcfb3('0x32')](_0xaea3a0);}return _0x35ccd7['save']();};}function saveUpdates(_0x1b5939,_0x471670){return function(_0x102b61){if(_0x102b61){return _0x102b61[_0xcfb3('0x33')](_0x1b5939)['then'](function(_0x345c83){return _0x345c83;});}return null;};}function removeEntity(_0x4787a4,_0x57d05c){return function(_0x320f9b){if(_0x320f9b){return _0x320f9b['destroy']()[_0xcfb3('0x34')](function(){_0x4787a4[_0xcfb3('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2928d0,_0x366a80){return function(_0x5449b6){if(!_0x5449b6){_0x2928d0[_0xcfb3('0x35')](0x194);}return _0x5449b6;};}function handleError(_0x32c897,_0x3dea16){_0x3dea16=_0x3dea16||0x1f4;return function(_0x29f666){logger['error'](_0x29f666[_0xcfb3('0x36')]);if(_0x29f666['name']){delete _0x29f666[_0xcfb3('0x37')];}_0x32c897['status'](_0x3dea16)[_0xcfb3('0x38')](_0x29f666);};}exports[_0xcfb3('0x39')]=function(_0x5ded87,_0x1f4dff){var _0x2c0859={},_0xf7d4b1={},_0x3d66f9={'count':0x0,'rows':[]};var _0x360822=_[_0xcfb3('0x3a')](db[_0xcfb3('0x3b')][_0xcfb3('0x3c')],function(_0x1e2a45){return{'name':_0x1e2a45[_0xcfb3('0x3d')],'type':_0x1e2a45[_0xcfb3('0x3e')][_0xcfb3('0x3f')]};});_0xf7d4b1['model']=_[_0xcfb3('0x3a')](_0x360822,'name');_0xf7d4b1[_0xcfb3('0x40')]=_[_0xcfb3('0x41')](_0x5ded87[_0xcfb3('0x40')]);_0xf7d4b1[_0xcfb3('0x42')]=_[_0xcfb3('0x43')](_0xf7d4b1[_0xcfb3('0x44')],_0xf7d4b1['query']);_0x2c0859[_0xcfb3('0x45')]=_[_0xcfb3('0x43')](_0xf7d4b1[_0xcfb3('0x44')],qs['fields'](_0x5ded87[_0xcfb3('0x40')][_0xcfb3('0x46')]));_0x2c0859[_0xcfb3('0x45')]=_0x2c0859['attributes'][_0xcfb3('0x47')]?_0x2c0859[_0xcfb3('0x45')]:_0xf7d4b1[_0xcfb3('0x44')];if(!_0x5ded87[_0xcfb3('0x40')]['hasOwnProperty'](_0xcfb3('0x48'))){_0x2c0859[_0xcfb3('0x2d')]=qs[_0xcfb3('0x2d')](_0x5ded87[_0xcfb3('0x40')]['limit']);_0x2c0859['offset']=qs[_0xcfb3('0x2c')](_0x5ded87[_0xcfb3('0x40')][_0xcfb3('0x2c')]);}_0x2c0859['order']=qs['sort'](_0x5ded87[_0xcfb3('0x40')][_0xcfb3('0x49')]);_0x2c0859[_0xcfb3('0x4a')]=qs[_0xcfb3('0x42')](_[_0xcfb3('0x4b')](_0x5ded87[_0xcfb3('0x40')],_0xf7d4b1[_0xcfb3('0x42')]),_0x360822);if(_0x5ded87[_0xcfb3('0x40')]['filter']){_0x2c0859[_0xcfb3('0x4a')]=_[_0xcfb3('0x4c')](_0x2c0859[_0xcfb3('0x4a')],{'$or':_[_0xcfb3('0x3a')](_0x360822,function(_0x3db243){if(_0x3db243['type']!==_0xcfb3('0x4d')){var _0x310c3c={};_0x310c3c[_0x3db243[_0xcfb3('0x37')]]={'$like':'%'+_0x5ded87['query'][_0xcfb3('0x4e')]+'%'};return _0x310c3c;}})});}_0x2c0859=_['merge']({},_0x2c0859,_0x5ded87['options']);var _0x49975d={'where':_0x2c0859['where']};return db[_0xcfb3('0x3b')]['count'](_0x49975d)['then'](function(_0x37d4d4){_0x3d66f9[_0xcfb3('0x2f')]=_0x37d4d4;if(_0x5ded87[_0xcfb3('0x40')][_0xcfb3('0x4f')]){_0x2c0859[_0xcfb3('0x50')]=[{'all':!![]}];}return db[_0xcfb3('0x3b')][_0xcfb3('0x51')](_0x2c0859);})['then'](function(_0x23e82c){_0x3d66f9[_0xcfb3('0x52')]=_0x23e82c;return _0x3d66f9;})[_0xcfb3('0x34')](respondWithFilteredResult(_0x1f4dff,_0x2c0859))[_0xcfb3('0x53')](handleError(_0x1f4dff,null));};exports[_0xcfb3('0x54')]=function(_0x278854,_0x1b4cf4){var _0x3cf6c3={'raw':![],'where':{'id':_0x278854['params']['id']}},_0x1fb745={};_0x1fb745['model']=_['keys'](db[_0xcfb3('0x3b')][_0xcfb3('0x3c')]);_0x1fb745[_0xcfb3('0x40')]=_[_0xcfb3('0x41')](_0x278854[_0xcfb3('0x40')]);_0x1fb745['filters']=_[_0xcfb3('0x43')](_0x1fb745[_0xcfb3('0x44')],_0x1fb745[_0xcfb3('0x40')]);_0x3cf6c3[_0xcfb3('0x45')]=_[_0xcfb3('0x43')](_0x1fb745[_0xcfb3('0x44')],qs[_0xcfb3('0x46')](_0x278854[_0xcfb3('0x40')][_0xcfb3('0x46')]));_0x3cf6c3[_0xcfb3('0x45')]=_0x3cf6c3[_0xcfb3('0x45')][_0xcfb3('0x47')]?_0x3cf6c3[_0xcfb3('0x45')]:_0x1fb745['model'];if(_0x278854[_0xcfb3('0x40')][_0xcfb3('0x4f')]){_0x3cf6c3[_0xcfb3('0x50')]=[{'all':!![]}];}_0x3cf6c3=_[_0xcfb3('0x4c')]({},_0x3cf6c3,_0x278854[_0xcfb3('0x55')]);return db[_0xcfb3('0x3b')][_0xcfb3('0x56')](_0x3cf6c3)['then'](handleEntityNotFound(_0x1b4cf4,null))[_0xcfb3('0x34')](respondWithResult(_0x1b4cf4,null))[_0xcfb3('0x53')](handleError(_0x1b4cf4,null));};exports[_0xcfb3('0x33')]=function(_0x510d75,_0x13cc71){if(_0x510d75[_0xcfb3('0x57')]['id']){delete _0x510d75[_0xcfb3('0x57')]['id'];}return db[_0xcfb3('0x3b')][_0xcfb3('0x56')]({'where':{'id':_0x510d75[_0xcfb3('0x58')]['id']}})[_0xcfb3('0x34')](handleEntityNotFound(_0x13cc71,null))[_0xcfb3('0x34')](saveUpdates(_0x510d75[_0xcfb3('0x57')],null))[_0xcfb3('0x34')](respondWithResult(_0x13cc71,null))[_0xcfb3('0x53')](handleError(_0x13cc71,null));};exports['addLogo']=function(_0x4c673e,_0x917c76,_0x227cd7){if(_0x4c673e[_0xcfb3('0x59')]&&_0x4c673e['file'][_0xcfb3('0x5a')]){_0x4c673e['body']['logo']=_0x4c673e[_0xcfb3('0x59')]['filename'];}return db['Setting'][_0xcfb3('0x56')]({'where':{'id':_0x4c673e[_0xcfb3('0x58')]['id']}})['then'](handleEntityNotFound(_0x917c76,null))[_0xcfb3('0x34')](saveUpdates(_0x4c673e[_0xcfb3('0x57')],null))[_0xcfb3('0x34')](respondWithResult(_0x917c76,null))[_0xcfb3('0x53')](handleError(_0x917c76,null));};exports[_0xcfb3('0x5b')]=function(_0x4f226e,_0x34863a,_0x3d0abf){if(_0x4f226e['file']&&_0x4f226e[_0xcfb3('0x59')]['filename']){_0x4f226e['body'][_0xcfb3('0x5c')]=_0x4f226e[_0xcfb3('0x59')][_0xcfb3('0x5a')];}return db[_0xcfb3('0x3b')][_0xcfb3('0x56')]({'where':{'id':_0x4f226e[_0xcfb3('0x58')]['id']}})[_0xcfb3('0x34')](handleEntityNotFound(_0x34863a,null))[_0xcfb3('0x34')](saveUpdates(_0x4f226e[_0xcfb3('0x57')],null))['then'](respondWithResult(_0x34863a,null))[_0xcfb3('0x53')](handleError(_0x34863a,null));};var utilLicense=require(_0xcfb3('0x19'));exports[_0xcfb3('0x5d')]=function(_0x3dfd6f,_0x154d0a,_0x5a79fc){var _0x38703f='server/files/images/logos';var _0x58dc9a={'custom':![]};return utilLicense[_0xcfb3('0x5e')]()['then'](function(_0x53f7f4){if(_0x53f7f4){_0x58dc9a=_0x53f7f4;}return db[_0xcfb3('0x3b')]['find']({'where':{'id':_0x3dfd6f[_0xcfb3('0x58')]['id']},'attributes':[_0xcfb3('0x5f'),'loginLogo',_0xcfb3('0x60'),'favicon',_0xcfb3('0x61'),'defaultLoginLogo',_0xcfb3('0x62'),_0xcfb3('0x63')],'raw':!![]});})[_0xcfb3('0x34')](handleEntityNotFound(_0x154d0a,null))[_0xcfb3('0x34')](function(_0x1d5edf){if(_0x1d5edf){var _0x50d502=_0x1d5edf[_0xcfb3('0x5f')]&&fs[_0xcfb3('0x64')](path[_0xcfb3('0x65')](config[_0xcfb3('0x66')],_0x38703f,_['toLower'](_0x1d5edf[_0xcfb3('0x5f')])))?path[_0xcfb3('0x65')](config[_0xcfb3('0x66')],_0x38703f,_['toLower'](_0x1d5edf[_0xcfb3('0x5f')])):path['join'](config[_0xcfb3('0x66')],_0x38703f,_[_0xcfb3('0x67')](_0xcfb3('0x68')));var _0xafda8e=_0xcfb3('0x69')+_[_0xcfb3('0x6a')](_0xcfb3('0x5f'));if(_0x1d5edf[_0xafda8e]||!_0x58dc9a[_0xcfb3('0x6b')]){_0x50d502=path[_0xcfb3('0x65')](config['root'],_0x38703f,_[_0xcfb3('0x67')](_0xcfb3('0x68')));}if(!fs[_0xcfb3('0x64')](_0x50d502)){throw new db[(_0xcfb3('0x6c'))][(_0xcfb3('0x6d'))](_[_0xcfb3('0x6a')]('logo')+_0xcfb3('0x6e'));}return _0x154d0a[_0xcfb3('0x6f')](_0x50d502);}})[_0xcfb3('0x53')](handleError(_0x154d0a,null));};var utilLicense=require(_0xcfb3('0x19'));exports[_0xcfb3('0x70')]=function(_0x594492,_0x55fdf0,_0x46e03a){var _0x17f42d='server/files/images/logos';var _0x313bd3={'custom':![]};return utilLicense[_0xcfb3('0x5e')]()['then'](function(_0x8239d9){if(_0x8239d9){_0x313bd3=_0x8239d9;}return db[_0xcfb3('0x3b')][_0xcfb3('0x56')]({'where':{'id':_0x594492[_0xcfb3('0x58')]['id']},'attributes':[_0xcfb3('0x5f'),_0xcfb3('0x5c'),_0xcfb3('0x60'),_0xcfb3('0x71'),_0xcfb3('0x61'),'defaultLoginLogo',_0xcfb3('0x62'),'defaultFavicon'],'raw':!![]});})[_0xcfb3('0x34')](handleEntityNotFound(_0x55fdf0,null))['then'](function(_0x461aff){if(_0x461aff){var _0x477dc9=_0x461aff['loginLogo']&&fs[_0xcfb3('0x64')](path[_0xcfb3('0x65')](config[_0xcfb3('0x66')],_0x17f42d,_['toLower'](_0x461aff['loginLogo'])))?path[_0xcfb3('0x65')](config['root'],_0x17f42d,_['toLower'](_0x461aff[_0xcfb3('0x5c')])):path['join'](config[_0xcfb3('0x66')],_0x17f42d,_[_0xcfb3('0x67')](_0xcfb3('0x72')));var _0x23b9e5=_0xcfb3('0x69')+_['upperFirst'](_0xcfb3('0x5c'));if(_0x461aff[_0x23b9e5]||!_0x313bd3[_0xcfb3('0x6b')]){_0x477dc9=path[_0xcfb3('0x65')](config[_0xcfb3('0x66')],_0x17f42d,_['toLower'](_0xcfb3('0x72')));}if(!fs[_0xcfb3('0x64')](_0x477dc9)){throw new db[(_0xcfb3('0x6c'))][(_0xcfb3('0x6d'))](_[_0xcfb3('0x6a')](_0xcfb3('0x5c'))+_0xcfb3('0x6e'));}return _0x55fdf0[_0xcfb3('0x6f')](_0x477dc9);}})['catch'](handleError(_0x55fdf0,null));};exports['gdpr']=function(_0x5a7ea4,_0x205c7b){return db[_0xcfb3('0x3b')][_0xcfb3('0x56')]({'where':{'id':_0x5a7ea4[_0xcfb3('0x58')]['id']},'attributes':[_0xcfb3('0x73')]})[_0xcfb3('0x34')](respondWithResult(_0x205c7b,null))[_0xcfb3('0x53')](handleError(_0x205c7b,null));};exports[_0xcfb3('0x74')]=function(_0xd80b3f,_0x475893,_0x1ca967){if(_0xd80b3f[_0xcfb3('0x59')]&&_0xd80b3f['file'][_0xcfb3('0x5a')]){_0xd80b3f[_0xcfb3('0x57')][_0xcfb3('0x60')]=_0xd80b3f[_0xcfb3('0x59')][_0xcfb3('0x5a')];}return db[_0xcfb3('0x3b')][_0xcfb3('0x56')]({'where':{'id':_0xd80b3f[_0xcfb3('0x58')]['id']}})[_0xcfb3('0x34')](handleEntityNotFound(_0x475893,null))[_0xcfb3('0x34')](saveUpdates(_0xd80b3f[_0xcfb3('0x57')],null))[_0xcfb3('0x34')](respondWithResult(_0x475893,null))[_0xcfb3('0x53')](handleError(_0x475893,null));};var utilLicense=require(_0xcfb3('0x19'));exports[_0xcfb3('0x75')]=function(_0x3d7303,_0xc862ae,_0x54bf2b){var _0x36aa0a='server/files/images/logos';var _0x14f1b4={'custom':![]};return utilLicense[_0xcfb3('0x5e')]()[_0xcfb3('0x34')](function(_0x59da48){if(_0x59da48){_0x14f1b4=_0x59da48;}return db[_0xcfb3('0x3b')][_0xcfb3('0x56')]({'where':{'id':_0x3d7303[_0xcfb3('0x58')]['id']},'attributes':['logo',_0xcfb3('0x5c'),_0xcfb3('0x60'),'favicon',_0xcfb3('0x61'),_0xcfb3('0x76'),_0xcfb3('0x62'),_0xcfb3('0x63')],'raw':!![]});})[_0xcfb3('0x34')](handleEntityNotFound(_0xc862ae,null))[_0xcfb3('0x34')](function(_0x43ab84){if(_0x43ab84){var _0xa66cd7=_0x43ab84['preferred']&&fs[_0xcfb3('0x64')](path[_0xcfb3('0x65')](config[_0xcfb3('0x66')],_0x36aa0a,_[_0xcfb3('0x67')](_0x43ab84[_0xcfb3('0x60')])))?path[_0xcfb3('0x65')](config[_0xcfb3('0x66')],_0x36aa0a,_['toLower'](_0x43ab84[_0xcfb3('0x60')])):path[_0xcfb3('0x65')](config['root'],_0x36aa0a,_[_0xcfb3('0x67')]('default_preferred.png'));var _0xfe9184=_0xcfb3('0x69')+_['upperFirst']('preferred');if(_0x43ab84[_0xfe9184]||!_0x14f1b4['custom']||!_0x14f1b4['preferred']){_0xa66cd7=path['join'](config[_0xcfb3('0x66')],_0x36aa0a,_['toLower']('default_preferred.png'));}if(!fs[_0xcfb3('0x64')](_0xa66cd7)){throw new db[(_0xcfb3('0x6c'))][(_0xcfb3('0x6d'))](_['upperFirst'](_0xcfb3('0x60'))+_0xcfb3('0x6e'));}return _0xc862ae[_0xcfb3('0x6f')](_0xa66cd7);}})[_0xcfb3('0x53')](handleError(_0xc862ae,null));};exports[_0xcfb3('0x77')]=function(_0x5e7c38,_0x5a8447,_0x572750){if(_0x5e7c38[_0xcfb3('0x59')]&&_0x5e7c38[_0xcfb3('0x59')]['filename']){_0x5e7c38[_0xcfb3('0x57')][_0xcfb3('0x71')]=_0x5e7c38[_0xcfb3('0x59')][_0xcfb3('0x5a')];}return db[_0xcfb3('0x3b')]['find']({'where':{'id':_0x5e7c38['params']['id']}})['then'](handleEntityNotFound(_0x5a8447,null))[_0xcfb3('0x34')](saveUpdates(_0x5e7c38['body'],null))[_0xcfb3('0x34')](respondWithResult(_0x5a8447,null))[_0xcfb3('0x53')](handleError(_0x5a8447,null));};var utilLicense=require(_0xcfb3('0x19'));exports[_0xcfb3('0x78')]=function(_0x159e89,_0x57ca3a,_0x5d598b){var _0x1e3b96=_0xcfb3('0x79');var _0x356a02={'custom':![]};return utilLicense['getLicense']()[_0xcfb3('0x34')](function(_0x4a2544){if(_0x4a2544){_0x356a02=_0x4a2544;}return db[_0xcfb3('0x3b')]['find']({'where':{'id':_0x159e89[_0xcfb3('0x58')]['id']},'attributes':[_0xcfb3('0x5f'),'loginLogo','preferred',_0xcfb3('0x71'),_0xcfb3('0x61'),'defaultLoginLogo',_0xcfb3('0x62'),_0xcfb3('0x63')],'raw':!![]});})['then'](handleEntityNotFound(_0x57ca3a,null))[_0xcfb3('0x34')](function(_0x3f3f6f){if(_0x3f3f6f){var _0x2ae495=_0x3f3f6f['favicon']&&fs['existsSync'](path[_0xcfb3('0x65')](config[_0xcfb3('0x66')],_0x1e3b96,_[_0xcfb3('0x67')](_0x3f3f6f[_0xcfb3('0x71')])))?path['join'](config[_0xcfb3('0x66')],_0x1e3b96,_[_0xcfb3('0x67')](_0x3f3f6f[_0xcfb3('0x71')])):path[_0xcfb3('0x65')](config[_0xcfb3('0x66')],_0x1e3b96,_[_0xcfb3('0x67')](_0xcfb3('0x7a')));var _0x8ef956=_0xcfb3('0x69')+_[_0xcfb3('0x6a')](_0xcfb3('0x71'));if(_0x3f3f6f[_0x8ef956]||!_0x356a02[_0xcfb3('0x6b')]){_0x2ae495=path['join'](config[_0xcfb3('0x66')],_0x1e3b96,_[_0xcfb3('0x67')](_0xcfb3('0x7a')));}if(!fs[_0xcfb3('0x64')](_0x2ae495)){throw new db[(_0xcfb3('0x6c'))][(_0xcfb3('0x6d'))](_['upperFirst'](_0xcfb3('0x71'))+_0xcfb3('0x6e'));}return _0x57ca3a['download'](_0x2ae495);}})[_0xcfb3('0x53')](handleError(_0x57ca3a,null));};exports[_0xcfb3('0x7b')]=function(_0x1c71f8,_0x4fe51c){var _0x15233f={'offset':moment()[_0xcfb3('0x7c')]()};_0x15233f[_0xcfb3('0x7d')]=moment()[_0xcfb3('0x7c')](_0x15233f[_0xcfb3('0x2c')])[_0xcfb3('0x7e')](_0xcfb3('0x7f'));return _0x4fe51c['status'](0xc8)[_0xcfb3('0x38')](_0x15233f);};
\ No newline at end of file
index 698457b..79dd10b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','define','Setting','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./setting.attributes'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_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':'settings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7217=['../../config/environment','./setting.attributes','exports','define','Setting','settings','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x43f489,_0x2b4fea){var _0x4134b4=function(_0x4365f6){while(--_0x4365f6){_0x43f489['push'](_0x43f489['shift']());}};_0x4134b4(++_0x2b4fea);}(_0x7217,0x19e));var _0x7721=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0x7217[_0x2763f2];return _0x3ef471;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var logger=require(_0x7721('0x1'))(_0x7721('0x2'));var moment=require(_0x7721('0x3'));var BPromise=require(_0x7721('0x4'));var rp=require(_0x7721('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7721('0x6'));var attributes=require(_0x7721('0x7'));module[_0x7721('0x8')]=function(_0x3fe47c,_0xb239e0){return _0x3fe47c[_0x7721('0x9')](_0x7721('0xa'),attributes,{'tableName':_0x7721('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2a5ea1b..4ff894a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb31a=['map','model','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','Setting,\x20%s,\x20%s','message','result','ShowSetting','find','options','raw','where','attributes','include'];(function(_0x126b6a,_0x32497d){var _0x46f222=function(_0x429cb1){while(--_0x429cb1){_0x126b6a['push'](_0x126b6a['shift']());}};_0x46f222(++_0x32497d);}(_0xb31a,0x123));var _0xab31=function(_0x51351a,_0x566a25){_0x51351a=_0x51351a-0x0;var _0x27999d=_0xb31a[_0x51351a];return _0x27999d;};'use strict';var _=require(_0xab31('0x0'));var util=require(_0xab31('0x1'));var moment=require(_0xab31('0x2'));var BPromise=require('bluebird');var rs=require(_0xab31('0x3'));var fs=require('fs');var Redis=require(_0xab31('0x4'));var db=require(_0xab31('0x5'))['db'];var utils=require(_0xab31('0x6'));var logger=require('../../config/logger')(_0xab31('0x7'));var config=require('../../config/environment');var jayson=require(_0xab31('0x8'));var client=jayson[_0xab31('0x9')][_0xab31('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x436727,_0x2ca1eb,_0x38c346){return new BPromise(function(_0x1d9279,_0x513c16){return client[_0xab31('0xb')](_0x436727,_0x38c346)[_0xab31('0xc')](function(_0x43dec5){logger[_0xab31('0xd')]('Setting,\x20%s,\x20%s',_0x2ca1eb,_0xab31('0xe'));logger[_0xab31('0xf')]('Setting,\x20%s,\x20%s,\x20%s',_0x2ca1eb,_0xab31('0xe'),JSON[_0xab31('0x10')](_0x43dec5));if(_0x43dec5[_0xab31('0x11')]){if(_0x43dec5[_0xab31('0x11')][_0xab31('0x12')]===0x1f4){logger['error'](_0xab31('0x13'),_0x2ca1eb,_0x43dec5[_0xab31('0x11')]['message']);return _0x513c16(_0x43dec5[_0xab31('0x11')]['message']);}logger['error'](_0xab31('0x13'),_0x2ca1eb,_0x43dec5[_0xab31('0x11')][_0xab31('0x14')]);return _0x1d9279(_0x43dec5[_0xab31('0x11')][_0xab31('0x14')]);}else{logger[_0xab31('0xd')](_0xab31('0x13'),_0x2ca1eb,_0xab31('0xe'));_0x1d9279(_0x43dec5[_0xab31('0x15')][_0xab31('0x14')]);}})['catch'](function(_0x589e61){logger[_0xab31('0x11')](_0xab31('0x13'),_0x2ca1eb,_0x589e61);_0x513c16(_0x589e61);});});}exports[_0xab31('0x16')]=function(_0x5ca4a7){var _0x19a144=this;return new Promise(function(_0x359777,_0x3ac60c){return db['Setting'][_0xab31('0x17')]({'raw':_0x5ca4a7[_0xab31('0x18')]?_0x5ca4a7[_0xab31('0x18')][_0xab31('0x19')]===undefined?!![]:![]:!![],'where':_0x5ca4a7[_0xab31('0x18')]?_0x5ca4a7[_0xab31('0x18')][_0xab31('0x1a')]||null:null,'attributes':_0x5ca4a7[_0xab31('0x18')]?_0x5ca4a7[_0xab31('0x18')][_0xab31('0x1b')]||null:null,'include':_0x5ca4a7[_0xab31('0x18')]?_0x5ca4a7['options'][_0xab31('0x1c')]?_[_0xab31('0x1d')](_0x5ca4a7[_0xab31('0x18')][_0xab31('0x1c')],function(_0x351585){return{'model':db[_0x351585[_0xab31('0x1e')]],'as':_0x351585['as'],'attributes':_0x351585[_0xab31('0x1b')],'include':_0x351585[_0xab31('0x1c')]?_[_0xab31('0x1d')](_0x351585['include'],function(_0x5885b2){return{'model':db[_0x5885b2[_0xab31('0x1e')]],'as':_0x5885b2['as'],'attributes':_0x5885b2[_0xab31('0x1b')],'include':_0x5885b2[_0xab31('0x1c')]?_[_0xab31('0x1d')](_0x5885b2[_0xab31('0x1c')],function(_0x4c599f){return{'model':db[_0x4c599f[_0xab31('0x1e')]],'as':_0x4c599f['as'],'attributes':_0x4c599f[_0xab31('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3e228b){logger[_0xab31('0xd')](_0xab31('0x16'),_0x5ca4a7);logger[_0xab31('0xf')]('ShowSetting',_0x5ca4a7,JSON[_0xab31('0x10')](_0x3e228b));_0x359777(_0x3e228b);})[_0xab31('0x1f')](function(_0x5d8d1f){logger[_0xab31('0x11')](_0xab31('0x16'),_0x5d8d1f[_0xab31('0x14')],_0x5ca4a7);_0x3ac60c(_0x19a144[_0xab31('0x11')](0x1f4,_0x5d8d1f['message']));});});};
\ No newline at end of file
+var _0x11a9=['request','then','Setting,\x20%s,\x20%s','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','error','code','message','result','Setting','options','raw','where','attributes','include','map','model','info','ShowSetting','stringify','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x166e31,_0x4493cc){var _0x1103ac=function(_0x55bd2d){while(--_0x55bd2d){_0x166e31['push'](_0x166e31['shift']());}};_0x1103ac(++_0x4493cc);}(_0x11a9,0x1a1));var _0x911a=function(_0x53d541,_0x868e20){_0x53d541=_0x53d541-0x0;var _0x114cde=_0x11a9[_0x53d541];return _0x114cde;};'use strict';var _=require(_0x911a('0x0'));var util=require('util');var moment=require(_0x911a('0x1'));var BPromise=require(_0x911a('0x2'));var rs=require(_0x911a('0x3'));var fs=require('fs');var Redis=require(_0x911a('0x4'));var db=require(_0x911a('0x5'))['db'];var utils=require(_0x911a('0x6'));var logger=require(_0x911a('0x7'))(_0x911a('0x8'));var config=require(_0x911a('0x9'));var jayson=require(_0x911a('0xa'));var client=jayson['client'][_0x911a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1c5fac,_0x5e28af,_0x1f9301){return new BPromise(function(_0x394ab1,_0x271220){return client[_0x911a('0xc')](_0x1c5fac,_0x1f9301)[_0x911a('0xd')](function(_0x50fd2c){logger['info'](_0x911a('0xe'),_0x5e28af,_0x911a('0xf'));logger['debug'](_0x911a('0x10'),_0x5e28af,_0x911a('0xf'),JSON['stringify'](_0x50fd2c));if(_0x50fd2c[_0x911a('0x11')]){if(_0x50fd2c[_0x911a('0x11')][_0x911a('0x12')]===0x1f4){logger[_0x911a('0x11')](_0x911a('0xe'),_0x5e28af,_0x50fd2c[_0x911a('0x11')][_0x911a('0x13')]);return _0x271220(_0x50fd2c[_0x911a('0x11')][_0x911a('0x13')]);}logger[_0x911a('0x11')]('Setting,\x20%s,\x20%s',_0x5e28af,_0x50fd2c[_0x911a('0x11')][_0x911a('0x13')]);return _0x394ab1(_0x50fd2c[_0x911a('0x11')][_0x911a('0x13')]);}else{logger['info']('Setting,\x20%s,\x20%s',_0x5e28af,'request\x20sent');_0x394ab1(_0x50fd2c[_0x911a('0x14')][_0x911a('0x13')]);}})['catch'](function(_0x511a16){logger[_0x911a('0x11')](_0x911a('0xe'),_0x5e28af,_0x511a16);_0x271220(_0x511a16);});});}exports['ShowSetting']=function(_0x6d0988){var _0x3debfe=this;return new Promise(function(_0x40777a,_0x25a3d3){return db[_0x911a('0x15')]['find']({'raw':_0x6d0988[_0x911a('0x16')]?_0x6d0988['options'][_0x911a('0x17')]===undefined?!![]:![]:!![],'where':_0x6d0988['options']?_0x6d0988['options'][_0x911a('0x18')]||null:null,'attributes':_0x6d0988[_0x911a('0x16')]?_0x6d0988[_0x911a('0x16')][_0x911a('0x19')]||null:null,'include':_0x6d0988[_0x911a('0x16')]?_0x6d0988[_0x911a('0x16')][_0x911a('0x1a')]?_[_0x911a('0x1b')](_0x6d0988[_0x911a('0x16')][_0x911a('0x1a')],function(_0x3ba343){return{'model':db[_0x3ba343[_0x911a('0x1c')]],'as':_0x3ba343['as'],'attributes':_0x3ba343[_0x911a('0x19')],'include':_0x3ba343[_0x911a('0x1a')]?_[_0x911a('0x1b')](_0x3ba343[_0x911a('0x1a')],function(_0x362fce){return{'model':db[_0x362fce['model']],'as':_0x362fce['as'],'attributes':_0x362fce[_0x911a('0x19')],'include':_0x362fce[_0x911a('0x1a')]?_[_0x911a('0x1b')](_0x362fce[_0x911a('0x1a')],function(_0x5ac43d){return{'model':db[_0x5ac43d[_0x911a('0x1c')]],'as':_0x5ac43d['as'],'attributes':_0x5ac43d[_0x911a('0x19')]};}):[]};}):[]};}):[]:[]})[_0x911a('0xd')](function(_0x3c8460){logger[_0x911a('0x1d')](_0x911a('0x1e'),_0x6d0988);logger['debug']('ShowSetting',_0x6d0988,JSON[_0x911a('0x1f')](_0x3c8460));_0x40777a(_0x3c8460);})[_0x911a('0x20')](function(_0x1a945e){logger[_0x911a('0x11')](_0x911a('0x1e'),_0x1a945e[_0x911a('0x13')],_0x6d0988);_0x25a3d3(_0x3debfe[_0x911a('0x11')](0x1f4,_0x1a945e['message']));});});};
\ No newline at end of file
index 09dc400..acaf170 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['getInteractions','/:id/status','statusGet','/:id/users','post','create','addAnswer','/:id/notify','notify','addApplications','send','status','addAgents','put','/:id','update','delete','destroy','/:id/canned_answers','removeAnswers','removeAgents','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','index','/describe','isAuthenticated','/:id/dispositions','getDispositions','getAnswers','/:id/applications','getApplications'];(function(_0x5660c8,_0x331e2f){var _0x5e456a=function(_0x5c8404){while(--_0x5c8404){_0x5660c8['push'](_0x5660c8['shift']());}};_0x5e456a(++_0x331e2f);}(_0x7a54,0x106));var _0x47a5=function(_0x48ef7f,_0x45b469){_0x48ef7f=_0x48ef7f-0x0;var _0xfde57a=_0x7a54[_0x48ef7f];return _0xfde57a;};'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['describe']);router[_0x47a5('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x47a5('0x9')](_0x47a5('0xd'),auth['isAuthenticated'](),controller[_0x47a5('0xe')]);router['get']('/:id/canned_answers',auth[_0x47a5('0xc')](),controller[_0x47a5('0xf')]);router[_0x47a5('0x9')](_0x47a5('0x10'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);router[_0x47a5('0x9')]('/:id/interactions',auth[_0x47a5('0xc')](),controller[_0x47a5('0x12')]);router[_0x47a5('0x9')](_0x47a5('0x13'),controller[_0x47a5('0x14')]);router[_0x47a5('0x9')](_0x47a5('0x15'),auth[_0x47a5('0xc')](),controller['getAgents']);router[_0x47a5('0x16')]('/',auth[_0x47a5('0xc')](),controller[_0x47a5('0x17')]);router[_0x47a5('0x16')](_0x47a5('0xd'),auth['isAuthenticated'](),controller['addDisposition']);router[_0x47a5('0x16')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x47a5('0x18')]);router[_0x47a5('0x16')](_0x47a5('0x19'),controller[_0x47a5('0x1a')]);router[_0x47a5('0x16')](_0x47a5('0x10'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x1b')]);router[_0x47a5('0x16')]('/:id/send',auth[_0x47a5('0xc')](),controller[_0x47a5('0x1c')]);router['post'](_0x47a5('0x13'),controller[_0x47a5('0x1d')]);router[_0x47a5('0x16')]('/:id/users',auth[_0x47a5('0xc')](),controller[_0x47a5('0x1e')]);router[_0x47a5('0x1f')](_0x47a5('0x20'),auth['isAuthenticated'](),controller[_0x47a5('0x21')]);router[_0x47a5('0x22')]('/:id',auth[_0x47a5('0xc')](),controller[_0x47a5('0x23')]);router[_0x47a5('0x22')](_0x47a5('0xd'),auth[_0x47a5('0xc')](),controller['removeDispositions']);router['delete'](_0x47a5('0x24'),auth['isAuthenticated'](),controller[_0x47a5('0x25')]);router['delete'](_0x47a5('0x15'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x26')]);module[_0x47a5('0x27')]=router;
\ No newline at end of file
+var _0x7a54=['getInteractions','/:id/status','statusGet','/:id/users','post','create','addAnswer','/:id/notify','notify','addApplications','send','status','addAgents','put','/:id','update','delete','destroy','/:id/canned_answers','removeAnswers','removeAgents','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsAccount.controller','get','index','/describe','isAuthenticated','/:id/dispositions','getDispositions','getAnswers','/:id/applications','getApplications'];(function(_0x17d886,_0x50d062){var _0xfd8f94=function(_0x2d481a){while(--_0x2d481a){_0x17d886['push'](_0x17d886['shift']());}};_0xfd8f94(++_0x50d062);}(_0x7a54,0x106));var _0x47a5=function(_0x4daa9c,_0x297d61){_0x4daa9c=_0x4daa9c-0x0;var _0x5d0fd7=_0x7a54[_0x4daa9c];return _0x5d0fd7;};'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['describe']);router[_0x47a5('0x9')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x47a5('0x9')](_0x47a5('0xd'),auth['isAuthenticated'](),controller[_0x47a5('0xe')]);router['get']('/:id/canned_answers',auth[_0x47a5('0xc')](),controller[_0x47a5('0xf')]);router[_0x47a5('0x9')](_0x47a5('0x10'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);router[_0x47a5('0x9')]('/:id/interactions',auth[_0x47a5('0xc')](),controller[_0x47a5('0x12')]);router[_0x47a5('0x9')](_0x47a5('0x13'),controller[_0x47a5('0x14')]);router[_0x47a5('0x9')](_0x47a5('0x15'),auth[_0x47a5('0xc')](),controller['getAgents']);router[_0x47a5('0x16')]('/',auth[_0x47a5('0xc')](),controller[_0x47a5('0x17')]);router[_0x47a5('0x16')](_0x47a5('0xd'),auth['isAuthenticated'](),controller['addDisposition']);router[_0x47a5('0x16')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x47a5('0x18')]);router[_0x47a5('0x16')](_0x47a5('0x19'),controller[_0x47a5('0x1a')]);router[_0x47a5('0x16')](_0x47a5('0x10'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x1b')]);router[_0x47a5('0x16')]('/:id/send',auth[_0x47a5('0xc')](),controller[_0x47a5('0x1c')]);router['post'](_0x47a5('0x13'),controller[_0x47a5('0x1d')]);router[_0x47a5('0x16')]('/:id/users',auth[_0x47a5('0xc')](),controller[_0x47a5('0x1e')]);router[_0x47a5('0x1f')](_0x47a5('0x20'),auth['isAuthenticated'](),controller[_0x47a5('0x21')]);router[_0x47a5('0x22')]('/:id',auth[_0x47a5('0xc')](),controller[_0x47a5('0x23')]);router[_0x47a5('0x22')](_0x47a5('0xd'),auth[_0x47a5('0xc')](),controller['removeDispositions']);router['delete'](_0x47a5('0x24'),auth['isAuthenticated'](),controller[_0x47a5('0x25')]);router['delete'](_0x47a5('0x15'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x26')]);module[_0x47a5('0x27')]=router;
\ No newline at end of file
index 3ba4019..a74a8cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ce8=['setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','name','generate','ENUM','twilio','connectel','plivo','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'];(function(_0x1d46d8,_0x11b2d4){var _0x421dfa=function(_0x9f5020){while(--_0x9f5020){_0x1d46d8['push'](_0x1d46d8['shift']());}};_0x421dfa(++_0x11b2d4);}(_0x3ce8,0x1d1));var _0x83ce=function(_0x385dbe,_0x1fbec1){_0x385dbe=_0x385dbe-0x0;var _0x4a6472=_0x3ce8[_0x385dbe];return _0x4a6472;};'use strict';var Sequelize=require(_0x83ce('0x0'));var rs=require(_0x83ce('0x1'));module[_0x83ce('0x2')]={'name':{'type':Sequelize[_0x83ce('0x3')],'unique':_0x83ce('0x4'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0x83ce('0x3')],'defaultValue':function(){return rs[_0x83ce('0x5')]();}},'phone':{'type':Sequelize[_0x83ce('0x3')]},'type':{'type':Sequelize[_0x83ce('0x6')](_0x83ce('0x7'),'skebby',_0x83ce('0x8'),'clicksend',_0x83ce('0x9'),_0x83ce('0xa'),_0x83ce('0xb'),'csc',_0x83ce('0xc'),'intelepeer')},'accountSid':{'type':Sequelize[_0x83ce('0x3')]},'authId':{'type':Sequelize[_0x83ce('0x3')]},'authToken':{'type':Sequelize[_0x83ce('0x3')]},'smsMethod':{'type':Sequelize['ENUM']('SI','TI','GP')},'username':{'type':Sequelize[_0x83ce('0x3')]},'password':{'type':Sequelize[_0x83ce('0x3')]},'apiKey':{'type':Sequelize['STRING']},'applicationId':{'type':Sequelize[_0x83ce('0x3')]},'accountId':{'type':Sequelize[_0x83ce('0x3')]},'senderString':{'type':Sequelize[_0x83ce('0x3')]},'deliveryReport':{'type':Sequelize[_0x83ce('0xd')],'defaultValue':![]},'description':{'type':Sequelize[_0x83ce('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x83ce('0xe');}},'notificationSound':{'type':Sequelize[_0x83ce('0xd')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x83ce('0xd')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x83ce('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x83ce('0xd')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x83ce('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x83ce('0xd')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize['STRING']},'mandatoryDispositionPauseId':{'type':Sequelize[_0x83ce('0xf')],'comment':_0x83ce('0x10')},'mandatoryDisposition':{'type':Sequelize[_0x83ce('0xd')],'defaultValue':![],'comment':_0x83ce('0x11'),'set':function(_0x226d31){if(!_0x226d31)this[_0x83ce('0x12')](_0x83ce('0x13'),null);this[_0x83ce('0x12')](_0x83ce('0x14'),_0x226d31);}}};
\ No newline at end of file
+var _0x5a7a=['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','randomstring','exports','STRING','name','generate','twilio','connectel','clickatell','bandwidth','infobip','ENUM','BOOLEAN'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x5a7a,0x1e2));var _0xa5a7=function(_0x3c73f9,_0x51912d){_0x3c73f9=_0x3c73f9-0x0;var _0x1ca5db=_0x5a7a[_0x3c73f9];return _0x1ca5db;};'use strict';var Sequelize=require('sequelize');var rs=require(_0xa5a7('0x0'));module[_0xa5a7('0x1')]={'name':{'type':Sequelize[_0xa5a7('0x2')],'unique':_0xa5a7('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0xa5a7('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0xa5a7('0x2')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0xa5a7('0x4')]();}},'phone':{'type':Sequelize[_0xa5a7('0x2')]},'type':{'type':Sequelize['ENUM'](_0xa5a7('0x5'),'skebby',_0xa5a7('0x6'),'clicksend','plivo',_0xa5a7('0x7'),_0xa5a7('0x8'),'csc',_0xa5a7('0x9'),'intelepeer')},'accountSid':{'type':Sequelize[_0xa5a7('0x2')]},'authId':{'type':Sequelize[_0xa5a7('0x2')]},'authToken':{'type':Sequelize['STRING']},'smsMethod':{'type':Sequelize[_0xa5a7('0xa')]('SI','TI','GP')},'username':{'type':Sequelize[_0xa5a7('0x2')]},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize['STRING']},'applicationId':{'type':Sequelize[_0xa5a7('0x2')]},'accountId':{'type':Sequelize[_0xa5a7('0x2')]},'senderString':{'type':Sequelize[_0xa5a7('0x2')]},'deliveryReport':{'type':Sequelize[_0xa5a7('0xb')],'defaultValue':![]},'description':{'type':Sequelize[_0xa5a7('0x2')]},'notificationTemplate':{'type':Sequelize[_0xa5a7('0xc')],'defaultValue':function(){return _0xa5a7('0xd');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xa5a7('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0xa5a7('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xa5a7('0xb')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xa5a7('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xa5a7('0x2')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xa5a7('0xe')],'comment':_0xa5a7('0xf')},'mandatoryDisposition':{'type':Sequelize[_0xa5a7('0xb')],'defaultValue':![],'comment':_0xa5a7('0x10'),'set':function(_0x2e476f){if(!_0x2e476f)this[_0xa5a7('0x11')](_0xa5a7('0x12'),null);this[_0xa5a7('0x11')]('mandatoryDisposition',_0x2e476f);}}};
\ No newline at end of file
index d91f39d..a96ea5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2aa=['getApplications','getInteractions','Contact','User','Owner','fullname','Tag','Tags','color','tag','to\x20is\x20mandatory','List','DESC','out','dataValues','received\x20delivery\x20report\x20from','inspect','skebby','skebby_dispatch_id','connectel','requestid','statusInt','status_code','infobip','groupName','DELIVERED','redif','update','error_code','clickatell','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','DELIVRD','ACCEPTD','statusGet','message-id','state','addAgents','ids','userSmsAccount:save','removeAgents','userSmsAccount:remove','emit','eml-format','rimraf','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','jayson/promise','client','http','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','destroy','then','get','SmsAccounts','UserProfileResource','stack','name','index','Pause','mandatoryDispositionPause','SmsAccount','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','filter','where','merge','map','type','VIRTUAL','options','includeAll','include','findAll','rows','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','describe','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','hasOwnProperty','removeDispositions','getAnswers','CannedAnswer','removeAnswers','notify','sms','SmsApplication','Applications','orderBy','priority','asc','Sequelize','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','mobile','account','twilio','From','Body','messageId','from','text','clicksend','message_id','plivo','MessageUUID','results','csc','segmentedMessage','fromNumber','bandwidth','intelepeer','refid','ValidationError','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','list','omit','CmContact','contact','SmsInteraction','spread','created','autoclose','push','applications','close','unmanaged','interaction','SmsMessage','ContactId','UserId','waitForTheAssignedAgent','*,*,*,*','SmsQueue','queueId','queue','Start','startRouting','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','set','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','transaction','sequelize','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','finally','send'];(function(_0x178f48,_0x9bfb8f){var _0x12395d=function(_0x5a6e6f){while(--_0x5a6e6f){_0x178f48['push'](_0x178f48['shift']());}};_0x12395d(++_0x9bfb8f);}(_0xb2aa,0x115));var _0xab2a=function(_0x5014ea,_0x49334d){_0x5014ea=_0x5014ea-0x0;var _0x4a5600=_0xb2aa[_0x5014ea];return _0x4a5600;};'use strict';var emlformat=require(_0xab2a('0x0'));var rimraf=require(_0xab2a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xab2a('0x2'));var util=require('util');var path=require(_0xab2a('0x3'));var sox=require(_0xab2a('0x4'));var csv=require(_0xab2a('0x5'));var ejs=require(_0xab2a('0x6'));var fs=require('fs');var fs_extra=require(_0xab2a('0x7'));var _=require(_0xab2a('0x8'));var squel=require(_0xab2a('0x9'));var crypto=require(_0xab2a('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xab2a('0xb'));var toCsv=require(_0xab2a('0x5'));var querystring=require(_0xab2a('0xc'));var Papa=require(_0xab2a('0xd'));var Redis=require(_0xab2a('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xab2a('0xf'));var hardwareService=require(_0xab2a('0x10'));var logger=require(_0xab2a('0x11'))(_0xab2a('0x12'));var utils=require(_0xab2a('0x13'));var config=require(_0xab2a('0x14'));var licenseUtil=require(_0xab2a('0x15'));var db=require(_0xab2a('0x16'))['db'];config[_0xab2a('0x17')]=_[_0xab2a('0x18')](config[_0xab2a('0x17')],{'host':_0xab2a('0x19'),'port':0x18eb});var socket=require(_0xab2a('0x1a'))(new Redis(config[_0xab2a('0x17')]));require('./smsAccount.socket')['register'](socket);var jayson=require(_0xab2a('0x1b'));var client=jayson[_0xab2a('0x1c')][_0xab2a('0x1d')]({'port':0x232c});function respondWithRpcPromise(_0x233ea2,_0x312cdd,_0x258f96,_0x2b3085){return new BPromise(function(_0x44a7a0,_0x1df945){var _0x4da306=_0x2b3085||client;return _0x4da306['request'](_0x233ea2,_0x258f96)['then'](function(_0x4c9546){logger[_0xab2a('0x1e')](_0xab2a('0x1f'),_0x312cdd,_0xab2a('0x20'));logger[_0xab2a('0x21')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x312cdd,_0xab2a('0x20'),JSON[_0xab2a('0x22')](_0x4c9546));if(_0x4c9546['error']){if(_0x4c9546[_0xab2a('0x23')][_0xab2a('0x24')]===0x1f4){logger[_0xab2a('0x23')](_0xab2a('0x1f'),_0x312cdd,_0x4c9546[_0xab2a('0x23')][_0xab2a('0x25')]);return _0x1df945(_0x4c9546['error'][_0xab2a('0x25')]);}logger[_0xab2a('0x23')](_0xab2a('0x1f'),_0x312cdd,_0x4c9546[_0xab2a('0x23')][_0xab2a('0x25')]);return _0x44a7a0(_0x4c9546['error']['message']);}else{logger[_0xab2a('0x1e')]('SmsAccount,\x20%s,\x20%s',_0x312cdd,_0xab2a('0x20'));_0x44a7a0(_0x4c9546[_0xab2a('0x26')][_0xab2a('0x25')]);}})[_0xab2a('0x27')](function(_0x5343bc){logger['error'](_0xab2a('0x1f'),_0x312cdd,_0x5343bc);_0x1df945(_0x5343bc);});});}function respondWithStatusCode(_0x27e98d,_0x3df41f){_0x3df41f=_0x3df41f||0xcc;return function(_0x15c260){if(_0x15c260){return _0x27e98d[_0xab2a('0x28')](_0x3df41f);}return _0x27e98d[_0xab2a('0x29')](_0x3df41f)[_0xab2a('0x2a')]();};}function respondWithResult(_0x338397,_0x1f04a4){_0x1f04a4=_0x1f04a4||0xc8;return function(_0x50bc0c){if(_0x50bc0c){return _0x338397[_0xab2a('0x29')](_0x1f04a4)[_0xab2a('0x2b')](_0x50bc0c);}};}function respondWithFilteredResult(_0x1afc43,_0x2dced2){return function(_0x5f04ce){if(_0x5f04ce){var _0x21f572=typeof _0x2dced2['offset']===_0xab2a('0x2c')&&typeof _0x2dced2[_0xab2a('0x2d')]===_0xab2a('0x2c');var _0x3e84b4=_0x5f04ce[_0xab2a('0x2e')];var _0x1c0f46=_0x21f572?0x0:_0x2dced2[_0xab2a('0x2f')];var _0xcb281b=_0x21f572?_0x5f04ce[_0xab2a('0x2e')]:_0x2dced2[_0xab2a('0x2f')]+_0x2dced2['limit'];var _0x21a6f3;if(_0xcb281b>=_0x3e84b4){_0xcb281b=_0x3e84b4;_0x21a6f3=0xc8;}else{_0x21a6f3=0xce;}_0x1afc43['status'](_0x21a6f3);return _0x1afc43['set'](_0xab2a('0x30'),_0x1c0f46+'-'+_0xcb281b+'/'+_0x3e84b4)['json'](_0x5f04ce);}return null;};}function patchUpdates(_0x3cf9b8){return function(_0x3ed8b5){try{jsonpatch['apply'](_0x3ed8b5,_0x3cf9b8,!![]);}catch(_0x1582de){return BPromise['reject'](_0x1582de);}return _0x3ed8b5['save']();};}function saveUpdates(_0x47301f,_0x1c6eee){return function(_0x16129b){if(_0x16129b){return _0x16129b['update'](_0x47301f)['then'](function(_0x56910e){return _0x56910e;});}return null;};}function removeEntity(_0x4aa63c,_0x461c4f){return function(_0x2d711f){if(_0x2d711f){return _0x2d711f[_0xab2a('0x31')]()[_0xab2a('0x32')](function(){var _0x4db1d0=_0x2d711f[_0xab2a('0x33')]({'plain':!![]});var _0x268eae=_0xab2a('0x34');return db[_0xab2a('0x35')]['destroy']({'where':{'type':_0x268eae,'resourceId':_0x4db1d0['id']}})[_0xab2a('0x32')](function(){return _0x2d711f;});})['then'](function(){_0x4aa63c[_0xab2a('0x29')](0xcc)[_0xab2a('0x2a')]();});}};}function handleEntityNotFound(_0x53a61d,_0x18b908){return function(_0x4d68cb){if(!_0x4d68cb){_0x53a61d[_0xab2a('0x28')](0x194);}return _0x4d68cb;};}function handleError(_0x505809,_0x20bf29){_0x20bf29=_0x20bf29||0x1f4;return function(_0x430152){logger[_0xab2a('0x23')](_0x430152[_0xab2a('0x36')]);if(_0x430152[_0xab2a('0x37')]){delete _0x430152[_0xab2a('0x37')];}_0x505809['status'](_0x20bf29)['send'](_0x430152);};}exports[_0xab2a('0x38')]=function(_0x415b13,_0x584356){var _0x4cb9bc={'include':[{'model':db[_0xab2a('0x39')],'as':_0xab2a('0x3a')}]},_0x4ca7f5={},_0xad0f8a={'count':0x0,'rows':[]};var _0x4e9446=_['map'](db[_0xab2a('0x3b')][_0xab2a('0x3c')],function(_0x4b0358){return{'name':_0x4b0358[_0xab2a('0x3d')],'type':_0x4b0358['type'][_0xab2a('0x3e')]};});_0x4ca7f5[_0xab2a('0x3f')]=_['map'](_0x4e9446,'name');_0x4ca7f5[_0xab2a('0x40')]=_[_0xab2a('0x41')](_0x415b13['query']);_0x4ca7f5[_0xab2a('0x42')]=_[_0xab2a('0x43')](_0x4ca7f5['model'],_0x4ca7f5[_0xab2a('0x40')]);_0x4cb9bc[_0xab2a('0x44')]=_[_0xab2a('0x43')](_0x4ca7f5[_0xab2a('0x3f')],qs[_0xab2a('0x45')](_0x415b13['query'][_0xab2a('0x45')]));_0x4cb9bc[_0xab2a('0x44')]=_0x4cb9bc[_0xab2a('0x44')][_0xab2a('0x46')]?_0x4cb9bc[_0xab2a('0x44')]:_0x4ca7f5[_0xab2a('0x3f')];if(!_0x415b13[_0xab2a('0x40')]['hasOwnProperty'](_0xab2a('0x47'))){_0x4cb9bc[_0xab2a('0x2d')]=qs['limit'](_0x415b13[_0xab2a('0x40')][_0xab2a('0x2d')]);_0x4cb9bc[_0xab2a('0x2f')]=qs['offset'](_0x415b13['query'][_0xab2a('0x2f')]);}_0x4cb9bc[_0xab2a('0x48')]=qs['sort'](_0x415b13[_0xab2a('0x40')][_0xab2a('0x49')]);_0x4cb9bc['where']=qs['filters'](_[_0xab2a('0x4a')](_0x415b13[_0xab2a('0x40')],_0x4ca7f5[_0xab2a('0x42')]),_0x4e9446);if(_0x415b13[_0xab2a('0x40')][_0xab2a('0x4b')]){_0x4cb9bc[_0xab2a('0x4c')]=_[_0xab2a('0x4d')](_0x4cb9bc[_0xab2a('0x4c')],{'$or':_[_0xab2a('0x4e')](_0x4e9446,function(_0x2b958d){if(_0x2b958d[_0xab2a('0x4f')]!==_0xab2a('0x50')){var _0x18141d={};_0x18141d[_0x2b958d['name']]={'$like':'%'+_0x415b13[_0xab2a('0x40')][_0xab2a('0x4b')]+'%'};return _0x18141d;}})});}_0x4cb9bc=_[_0xab2a('0x4d')]({},_0x4cb9bc,_0x415b13[_0xab2a('0x51')]);var _0x54854d={'where':_0x4cb9bc[_0xab2a('0x4c')]};return db['SmsAccount']['count'](_0x54854d)[_0xab2a('0x32')](function(_0x380a5c){_0xad0f8a[_0xab2a('0x2e')]=_0x380a5c;if(_0x415b13['query'][_0xab2a('0x52')]){_0x4cb9bc[_0xab2a('0x53')]=[{'all':!![]}];}return db['SmsAccount'][_0xab2a('0x54')](_0x4cb9bc);})[_0xab2a('0x32')](function(_0x9b4d9b){_0xad0f8a[_0xab2a('0x55')]=_0x9b4d9b;return _0xad0f8a;})[_0xab2a('0x32')](respondWithFilteredResult(_0x584356,_0x4cb9bc))['catch'](handleError(_0x584356,null));};exports['show']=function(_0x14b856,_0x93d092){var _0x2be321={'raw':![],'where':{'id':_0x14b856[_0xab2a('0x56')]['id']},'include':[{'model':db[_0xab2a('0x39')],'as':_0xab2a('0x3a')}]},_0x31e5e6={};_0x31e5e6['model']=_[_0xab2a('0x41')](db[_0xab2a('0x3b')][_0xab2a('0x3c')]);_0x31e5e6[_0xab2a('0x40')]=_[_0xab2a('0x41')](_0x14b856[_0xab2a('0x40')]);_0x31e5e6[_0xab2a('0x42')]=_[_0xab2a('0x43')](_0x31e5e6[_0xab2a('0x3f')],_0x31e5e6[_0xab2a('0x40')]);_0x2be321[_0xab2a('0x44')]=_[_0xab2a('0x43')](_0x31e5e6[_0xab2a('0x3f')],qs[_0xab2a('0x45')](_0x14b856[_0xab2a('0x40')][_0xab2a('0x45')]));_0x2be321[_0xab2a('0x44')]=_0x2be321[_0xab2a('0x44')]['length']?_0x2be321['attributes']:_0x31e5e6[_0xab2a('0x3f')];if(_0x14b856[_0xab2a('0x40')][_0xab2a('0x52')]){_0x2be321[_0xab2a('0x53')]=[{'all':!![]}];}_0x2be321=_[_0xab2a('0x4d')]({},_0x2be321,_0x14b856['options']);return db['SmsAccount'][_0xab2a('0x57')](_0x2be321)['then'](handleEntityNotFound(_0x93d092,null))[_0xab2a('0x32')](respondWithResult(_0x93d092,null))[_0xab2a('0x27')](handleError(_0x93d092,null));};exports['create']=function(_0x2c5658,_0x329e2e){return db[_0xab2a('0x3b')][_0xab2a('0x58')](_0x2c5658[_0xab2a('0x59')],{})[_0xab2a('0x32')](function(_0x58ff73){var _0x3a2320=_0x2c5658[_0xab2a('0x5a')]['get']({'plain':!![]});if(!_0x3a2320)throw new Error(_0xab2a('0x5b'));if(_0x3a2320[_0xab2a('0x5c')]==='user'){var _0x45f73b=_0x58ff73[_0xab2a('0x33')]({'plain':!![]});var _0x2e44df=_0xab2a('0x34');return db['UserProfileSection'][_0xab2a('0x57')]({'where':{'name':_0x2e44df,'userProfileId':_0x3a2320[_0xab2a('0x5d')]},'raw':!![]})['then'](function(_0x19e548){if(_0x19e548&&_0x19e548[_0xab2a('0x5e')]===0x0){return db[_0xab2a('0x35')][_0xab2a('0x58')]({'name':_0x45f73b[_0xab2a('0x37')],'resourceId':_0x45f73b['id'],'type':_0x19e548[_0xab2a('0x37')],'sectionId':_0x19e548['id']},{})[_0xab2a('0x32')](function(){return _0x58ff73;});}else{return _0x58ff73;}})['catch'](function(_0x139004){logger['error'](_0xab2a('0x5f'),_0x139004);throw _0x139004;});}return _0x58ff73;})[_0xab2a('0x32')](respondWithResult(_0x329e2e,0xc9))[_0xab2a('0x27')](handleError(_0x329e2e,null));};exports['update']=function(_0x1d2ee7,_0x19102e){if(_0x1d2ee7[_0xab2a('0x59')]['id']){delete _0x1d2ee7['body']['id'];}return db[_0xab2a('0x3b')]['find']({'where':{'id':_0x1d2ee7[_0xab2a('0x56')]['id']},'include':[{'model':db[_0xab2a('0x39')],'as':'mandatoryDispositionPause'}]})[_0xab2a('0x32')](handleEntityNotFound(_0x19102e,null))[_0xab2a('0x32')](saveUpdates(_0x1d2ee7[_0xab2a('0x59')],null))[_0xab2a('0x32')](respondWithResult(_0x19102e,null))[_0xab2a('0x27')](handleError(_0x19102e,null));};exports[_0xab2a('0x31')]=function(_0x218136,_0x2e894e){return db[_0xab2a('0x3b')]['find']({'where':{'id':_0x218136['params']['id']}})[_0xab2a('0x32')](handleEntityNotFound(_0x2e894e,null))[_0xab2a('0x32')](removeEntity(_0x2e894e,null))[_0xab2a('0x27')](handleError(_0x2e894e,null));};exports[_0xab2a('0x60')]=function(_0x38a31d,_0x4e1b5f){return db[_0xab2a('0x3b')][_0xab2a('0x60')]()[_0xab2a('0x32')](respondWithResult(_0x4e1b5f,null))[_0xab2a('0x27')](handleError(_0x4e1b5f,null));};exports[_0xab2a('0x61')]=function(_0x48e4a2,_0xa652c6,_0x1f622f){if(_0x48e4a2[_0xab2a('0x59')]['id']){delete _0x48e4a2[_0xab2a('0x59')]['id'];}return db[_0xab2a('0x3b')][_0xab2a('0x57')]({'where':{'id':_0x48e4a2['params']['id']}})['then'](handleEntityNotFound(_0xa652c6,null))[_0xab2a('0x32')](function(_0x260260){if(_0x260260){_0x48e4a2[_0xab2a('0x59')][_0xab2a('0x62')]=_0x260260['id'];return db[_0xab2a('0x63')][_0xab2a('0x58')](_0x48e4a2[_0xab2a('0x59')]);}})[_0xab2a('0x32')](respondWithResult(_0xa652c6,null))[_0xab2a('0x27')](handleError(_0xa652c6,null));};exports[_0xab2a('0x64')]=function(_0x3b3b74,_0x815b0,_0x41e8f2){var _0x1c11dd={'raw':![],'where':{}};var _0xf732de={};var _0x18b39f={'count':0x0,'rows':[]};return db['SmsAccount'][_0xab2a('0x65')]({'where':{'id':_0x3b3b74[_0xab2a('0x56')]['id']}})[_0xab2a('0x32')](handleEntityNotFound(_0x815b0,null))[_0xab2a('0x32')](function(_0x5c41cd){if(_0x5c41cd){_0xf732de[_0xab2a('0x3f')]=_[_0xab2a('0x41')](db['Disposition'][_0xab2a('0x3c')]);_0xf732de[_0xab2a('0x40')]=_['keys'](_0x3b3b74['query']);_0xf732de[_0xab2a('0x42')]=_['intersection'](_0xf732de[_0xab2a('0x3f')],_0xf732de['query']);_0x1c11dd[_0xab2a('0x44')]=_['intersection'](_0xf732de[_0xab2a('0x3f')],qs['fields'](_0x3b3b74['query']['fields']));_0x1c11dd['attributes']=_0x1c11dd['attributes']['length']?_0x1c11dd[_0xab2a('0x44')]:_0xf732de['model'];if(!_0x3b3b74[_0xab2a('0x40')][_0xab2a('0x66')](_0xab2a('0x47'))){_0x1c11dd['limit']=qs['limit'](_0x3b3b74[_0xab2a('0x40')][_0xab2a('0x2d')]);_0x1c11dd['offset']=qs['offset'](_0x3b3b74['query']['offset']);}_0x1c11dd[_0xab2a('0x48')]=qs[_0xab2a('0x49')](_0x3b3b74[_0xab2a('0x40')]['sort']);_0x1c11dd[_0xab2a('0x4c')]=qs[_0xab2a('0x42')](_['pick'](_0x3b3b74['query'],_0xf732de['filters']));_0x1c11dd[_0xab2a('0x4c')][_0xab2a('0x62')]=_0x5c41cd['id'];if(_0x3b3b74[_0xab2a('0x40')][_0xab2a('0x4b')]){_0x1c11dd[_0xab2a('0x4c')]=_[_0xab2a('0x4d')](_0x1c11dd[_0xab2a('0x4c')],{'$or':_[_0xab2a('0x4e')](_0x1c11dd[_0xab2a('0x44')],function(_0x185f30){var _0x4243f3={};_0x4243f3[_0x185f30]={'$like':'%'+_0x3b3b74[_0xab2a('0x40')][_0xab2a('0x4b')]+'%'};return _0x4243f3;})});}_0x1c11dd=_[_0xab2a('0x4d')]({},_0x1c11dd,_0x3b3b74[_0xab2a('0x51')]);return db[_0xab2a('0x63')][_0xab2a('0x2e')]({'where':_0x1c11dd[_0xab2a('0x4c')]})[_0xab2a('0x32')](function(_0x289c37){_0x18b39f['count']=_0x289c37;if(_0x3b3b74[_0xab2a('0x40')][_0xab2a('0x52')]){_0x1c11dd[_0xab2a('0x53')]=[{'all':!![]}];}return db[_0xab2a('0x63')][_0xab2a('0x54')](_0x1c11dd);})['then'](function(_0x266693){_0x18b39f[_0xab2a('0x55')]=_0x266693;return _0x18b39f;});}})[_0xab2a('0x32')](respondWithFilteredResult(_0x815b0,_0x1c11dd))[_0xab2a('0x27')](handleError(_0x815b0,null));};exports[_0xab2a('0x67')]=function(_0x1a4adc,_0x101b6d,_0x5a5c4d){return db[_0xab2a('0x3b')]['find']({'where':{'id':_0x1a4adc[_0xab2a('0x56')]['id']}})[_0xab2a('0x32')](handleEntityNotFound(_0x101b6d,null))[_0xab2a('0x32')](function(_0x24783e){if(_0x24783e){return _0x24783e['removeDispositions'](_0x1a4adc[_0xab2a('0x40')]['ids']);}})[_0xab2a('0x32')](respondWithStatusCode(_0x101b6d,null))[_0xab2a('0x27')](handleError(_0x101b6d,null));};exports['addAnswer']=function(_0x2a159d,_0x3797b4,_0x5ce85c){if(_0x2a159d['body']['id']){delete _0x2a159d[_0xab2a('0x59')]['id'];}return db['SmsAccount'][_0xab2a('0x57')]({'where':{'id':_0x2a159d['params']['id']}})['then'](handleEntityNotFound(_0x3797b4,null))[_0xab2a('0x32')](function(_0x5cdab2){if(_0x5cdab2){_0x2a159d['body'][_0xab2a('0x62')]=_0x5cdab2['id'];return db['CannedAnswer'][_0xab2a('0x58')](_0x2a159d[_0xab2a('0x59')]);}})['then'](respondWithResult(_0x3797b4,null))['catch'](handleError(_0x3797b4,null));};exports[_0xab2a('0x68')]=function(_0x2faf6b,_0x1959cb,_0x4241d8){var _0x1499d8={'raw':![],'where':{}};var _0x4da22c={};var _0x2eb8d0={'count':0x0,'rows':[]};return db[_0xab2a('0x3b')]['findOne']({'where':{'id':_0x2faf6b['params']['id']}})[_0xab2a('0x32')](handleEntityNotFound(_0x1959cb,null))[_0xab2a('0x32')](function(_0x3dc468){if(_0x3dc468){_0x4da22c[_0xab2a('0x3f')]=_[_0xab2a('0x41')](db[_0xab2a('0x69')][_0xab2a('0x3c')]);_0x4da22c['query']=_[_0xab2a('0x41')](_0x2faf6b['query']);_0x4da22c[_0xab2a('0x42')]=_[_0xab2a('0x43')](_0x4da22c['model'],_0x4da22c[_0xab2a('0x40')]);_0x1499d8['attributes']=_[_0xab2a('0x43')](_0x4da22c['model'],qs['fields'](_0x2faf6b[_0xab2a('0x40')]['fields']));_0x1499d8['attributes']=_0x1499d8[_0xab2a('0x44')][_0xab2a('0x46')]?_0x1499d8[_0xab2a('0x44')]:_0x4da22c[_0xab2a('0x3f')];if(!_0x2faf6b[_0xab2a('0x40')][_0xab2a('0x66')](_0xab2a('0x47'))){_0x1499d8[_0xab2a('0x2d')]=qs[_0xab2a('0x2d')](_0x2faf6b['query'][_0xab2a('0x2d')]);_0x1499d8[_0xab2a('0x2f')]=qs[_0xab2a('0x2f')](_0x2faf6b[_0xab2a('0x40')]['offset']);}_0x1499d8[_0xab2a('0x48')]=qs[_0xab2a('0x49')](_0x2faf6b['query'][_0xab2a('0x49')]);_0x1499d8['where']=qs['filters'](_[_0xab2a('0x4a')](_0x2faf6b[_0xab2a('0x40')],_0x4da22c[_0xab2a('0x42')]));_0x1499d8[_0xab2a('0x4c')][_0xab2a('0x62')]=_0x3dc468['id'];if(_0x2faf6b[_0xab2a('0x40')][_0xab2a('0x4b')]){_0x1499d8[_0xab2a('0x4c')]=_[_0xab2a('0x4d')](_0x1499d8['where'],{'$or':_[_0xab2a('0x4e')](_0x1499d8[_0xab2a('0x44')],function(_0x15a6d9){var _0x14b6f5={};_0x14b6f5[_0x15a6d9]={'$like':'%'+_0x2faf6b['query']['filter']+'%'};return _0x14b6f5;})});}_0x1499d8=_['merge']({},_0x1499d8,_0x2faf6b['options']);return db[_0xab2a('0x69')][_0xab2a('0x2e')]({'where':_0x1499d8[_0xab2a('0x4c')]})[_0xab2a('0x32')](function(_0x3eae86){_0x2eb8d0[_0xab2a('0x2e')]=_0x3eae86;if(_0x2faf6b[_0xab2a('0x40')][_0xab2a('0x52')]){_0x1499d8[_0xab2a('0x53')]=[{'all':!![]}];}return db['CannedAnswer'][_0xab2a('0x54')](_0x1499d8);})[_0xab2a('0x32')](function(_0x50a822){_0x2eb8d0['rows']=_0x50a822;return _0x2eb8d0;});}})[_0xab2a('0x32')](respondWithFilteredResult(_0x1959cb,_0x1499d8))['catch'](handleError(_0x1959cb,null));};exports['removeAnswers']=function(_0x387530,_0x33fec5,_0x1862bf){return db[_0xab2a('0x3b')]['find']({'where':{'id':_0x387530[_0xab2a('0x56')]['id']}})[_0xab2a('0x32')](handleEntityNotFound(_0x33fec5,null))[_0xab2a('0x32')](function(_0x17ffac){if(_0x17ffac){return _0x17ffac[_0xab2a('0x6a')](_0x387530[_0xab2a('0x40')]['ids']);}})['then'](respondWithStatusCode(_0x33fec5,null))['catch'](handleError(_0x33fec5,null));};exports[_0xab2a('0x6b')]=function(_0x47f7d0,_0x1aa3a9,_0x382637){var _0x3e5110={'channel':_0xab2a('0x6c')};var _0x25a1a0=[];var _0x222dbd=[];var _0x5b3540={};return db[_0xab2a('0x3b')][_0xab2a('0x57')]({'where':{'id':_0x47f7d0[_0xab2a('0x56')]['id']},'include':[{'model':db[_0xab2a('0x6d')],'as':_0xab2a('0x6e')}]})[_0xab2a('0x32')](handleEntityNotFound(_0x1aa3a9,null))['then'](function(_0x3ec482){_0x3e5110['account']=_0x3ec482;_0x3e5110['applications']=_[_0xab2a('0x6f')](_0x3ec482['Applications'],[_0xab2a('0x70')],[_0xab2a('0x71')]);if(_0x3e5110['account'][_0xab2a('0x6e')]){delete _0x3e5110['account'][_0xab2a('0x6e')];}return db['CmContact'][_0xab2a('0x60')]();})[_0xab2a('0x32')](function(_0x50e4a1){if(!_0x50e4a1){throw new db[(_0xab2a('0x72'))]['ValidationError'](_0xab2a('0x73'));}_0x25a1a0=_[_0xab2a('0x74')](_[_0xab2a('0x41')](_0x50e4a1),[_0xab2a('0x75'),_0xab2a('0x76')]);_0x222dbd=_[_0xab2a('0x74')](_['keys'](_0x50e4a1),['createdAt','updatedAt','CompanyId',_0xab2a('0x77')]);_0x3e5110[_0xab2a('0x59')]={'mapKey':_0xab2a('0x78')};if(_0x3e5110[_0xab2a('0x79')][_0xab2a('0x4f')]){switch(_0x3e5110[_0xab2a('0x79')][_0xab2a('0x4f')]){case _0xab2a('0x7a'):_0x3e5110[_0xab2a('0x59')]['from']=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x7b')];_0x3e5110[_0xab2a('0x59')][_0xab2a('0x59')]=_0x47f7d0['body'][_0xab2a('0x7c')];_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7d')]=_0x47f7d0[_0xab2a('0x59')]['MessageSid'];break;case'skebby':_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7e')]='+'+_0x47f7d0[_0xab2a('0x59')]['sender'];_0x3e5110[_0xab2a('0x59')]['body']=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x7f')];break;case'connectel':_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7e')]=_0x47f7d0[_0xab2a('0x59')]['from'];_0x3e5110['body']['body']=_0x47f7d0[_0xab2a('0x59')]['message'];break;case _0xab2a('0x80'):_0x3e5110[_0xab2a('0x59')]['from']=_0x47f7d0['body']['from'];_0x3e5110['body']['body']=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x59')];_0x3e5110[_0xab2a('0x59')]['messageId']=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x81')];break;case _0xab2a('0x82'):_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7e')]=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x7b')];_0x3e5110[_0xab2a('0x59')]['body']=_0x47f7d0[_0xab2a('0x59')]['Text'];_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7d')]=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x83')];break;case'infobip':_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7e')]='+'+_0x47f7d0['body']['results'][0x0][_0xab2a('0x7e')];_0x3e5110[_0xab2a('0x59')][_0xab2a('0x59')]=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x84')][0x0][_0xab2a('0x7f')];_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7d')]=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x84')][0x0][_0xab2a('0x7d')];break;case _0xab2a('0x85'):_0x3e5110['body']['from']=_0x47f7d0[_0xab2a('0x59')]['originatingAddress'];_0x3e5110['body'][_0xab2a('0x59')]=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x86')][_0xab2a('0x25')];break;case'clickatell':_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7e')]=_0x47f7d0['body'][_0xab2a('0x87')];_0x3e5110[_0xab2a('0x59')][_0xab2a('0x59')]=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x7f')];_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7d')]=_0x47f7d0[_0xab2a('0x59')]['replyMessageId'];break;case _0xab2a('0x88'):_0x3e5110[_0xab2a('0x59')]['messageId']=_0x47f7d0[_0xab2a('0x59')][0x0][_0xab2a('0x25')]['id'];_0x3e5110[_0xab2a('0x59')]['from']=_0x47f7d0[_0xab2a('0x59')][0x0][_0xab2a('0x25')][_0xab2a('0x7e')];_0x3e5110[_0xab2a('0x59')][_0xab2a('0x59')]=_0x47f7d0[_0xab2a('0x59')][0x0][_0xab2a('0x25')][_0xab2a('0x7f')];break;case _0xab2a('0x89'):_0x3e5110[_0xab2a('0x59')]['from']=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x7e')];_0x3e5110[_0xab2a('0x59')][_0xab2a('0x59')]=_0x47f7d0['body'][_0xab2a('0x25')];_0x3e5110['body']['messageId']=_0x47f7d0[_0xab2a('0x59')][_0xab2a('0x8a')];break;}}if(_0x3e5110[_0xab2a('0x59')]['id']){delete _0x3e5110[_0xab2a('0x59')]['id'];}if(_['isNil'](_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7e')])){throw new db['Sequelize'][(_0xab2a('0x8b'))](_0xab2a('0x8c'));}if(_[_0xab2a('0x8d')](_0x3e5110[_0xab2a('0x59')][_0xab2a('0x59')])||_0x3e5110[_0xab2a('0x59')]['body']===''){throw new db[(_0xab2a('0x72'))][(_0xab2a('0x8b'))](_0xab2a('0x8e'));}if(_[_0xab2a('0x8d')](_0x3e5110[_0xab2a('0x59')][_0xab2a('0x8f')])){throw new db['Sequelize'][(_0xab2a('0x8b'))](_0xab2a('0x90')+_0x222dbd);}if(!_[_0xab2a('0x91')](_0x222dbd,_0x3e5110[_0xab2a('0x59')][_0xab2a('0x8f')])){throw new db['Sequelize'][(_0xab2a('0x8b'))](_0xab2a('0x92')+_0x222dbd);}_0x5b3540[_0x3e5110['body'][_0xab2a('0x8f')]]=_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7e')];return db[_0xab2a('0x93')][_0xab2a('0x57')]({'where':{'id':_0x3e5110[_0xab2a('0x79')]['ListId']},'include':[{'model':db['CmContact'],'as':_0xab2a('0x94'),'where':_0x5b3540,'limit':0x1,'order':[[_0xab2a('0x76'),'DESC']]}]});})[_0xab2a('0x32')](handleEntityNotFound(_0x1aa3a9,null))[_0xab2a('0x32')](function(_0x4d2cd6){if(_0x4d2cd6){_0x3e5110[_0xab2a('0x95')]=_[_0xab2a('0x96')](_0x4d2cd6,[_0xab2a('0x94')]);if(_0x4d2cd6['Contacts']['length']){return _0x4d2cd6[_0xab2a('0x94')][0x0];}var _0xe6626e=_[_0xab2a('0x18')](_0x3e5110[_0xab2a('0x59')],{'firstName':_0x3e5110['body'][_0xab2a('0x7e')],'ListId':_0x4d2cd6['id']});_0xe6626e[_0x3e5110[_0xab2a('0x59')][_0xab2a('0x8f')]]=_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7e')];return db[_0xab2a('0x97')][_0xab2a('0x58')](_0xe6626e,{'fields':_0x25a1a0,'raw':!![]});}})[_0xab2a('0x32')](handleEntityNotFound(_0x1aa3a9,null))[_0xab2a('0x32')](function(_0x5f3768){if(_0x5f3768){_0x3e5110[_0xab2a('0x98')]=_0x5f3768;var _0x160cba={'ContactId':_0x5f3768['id'],'phone':_0x3e5110[_0xab2a('0x59')]['from'],'SmsAccountId':_0x47f7d0[_0xab2a('0x56')]['id']};var _0x4239c3={'ContactId':_0x5f3768['id'],'SmsAccountId':_0x47f7d0[_0xab2a('0x56')]['id'],'closed':![]};return db[_0xab2a('0x99')][_0xab2a('0x57')]({'where':_0x4239c3})[_0xab2a('0x32')](function(_0x38b5b0){if(_0x38b5b0){return[_0x38b5b0,![]];}return db['SmsInteraction'][_0xab2a('0x58')](_0x160cba)[_0xab2a('0x32')](function(_0x49add5){return[_0x49add5,!![]];});});}})[_0xab2a('0x9a')](function(_0x7c38b6,_0x330674){_0x3e5110['interaction']=_0x7c38b6[_0xab2a('0x33')]({'plain':!![]});_0x3e5110['interaction'][_0xab2a('0x9b')]=![];if(_0x330674){if(_0x3e5110[_0xab2a('0x79')][_0xab2a('0x9c')]){_0x3e5110['applications'][_0xab2a('0x9d')]({'id':0x0,'priority':_0x3e5110[_0xab2a('0x9e')]['length']+0x1,'app':_0xab2a('0x9f'),'appdata':_0xab2a('0xa0'),'interval':'*,*,*,*'});}_0x3e5110[_0xab2a('0xa1')][_0xab2a('0x9b')]=!![];}return db[_0xab2a('0xa2')][_0xab2a('0x58')]({'phone':_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7e')],'messageId':_0x3e5110[_0xab2a('0x59')][_0xab2a('0x7d')],'body':_0x3e5110[_0xab2a('0x59')][_0xab2a('0x59')],'SmsAccountId':_0x47f7d0[_0xab2a('0x56')]['id'],'SmsInteractionId':_0x7c38b6['id'],'direction':'in','ContactId':_0x7c38b6[_0xab2a('0xa3')],'AttachmentId':_0x3e5110[_0xab2a('0x59')]['AttachmentId']});})[_0xab2a('0x32')](function(_0x43d1d0){_0x3e5110[_0xab2a('0x25')]=_0x43d1d0;if(!_0x3e5110['interaction'][_0xab2a('0xa4')])return;return db['User'][_0xab2a('0x57')]({'attributes':['id',_0xab2a('0x37')],'where':{'id':_0x3e5110['interaction'][_0xab2a('0xa4')]}});})[_0xab2a('0x32')](function(_0x598996){if(_0x598996){_0x3e5110['applications']['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x598996[_0xab2a('0x37')]+','+(_0x3e5110[_0xab2a('0x79')][_0xab2a('0xa5')]||0xa),'interval':_0xab2a('0xa6')});}if(!_0x3e5110[_0xab2a('0xa1')]['queueId'])return;return db[_0xab2a('0xa7')]['find']({'attributes':['id',_0xab2a('0x37')],'where':{'id':_0x3e5110[_0xab2a('0xa1')][_0xab2a('0xa8')]}});})[_0xab2a('0x32')](function(_0x1d3b96){if(_0x1d3b96){_0x3e5110[_0xab2a('0x9e')]['unshift']({'id':0x0,'priority':0x1,'app':_0xab2a('0xa9'),'appdata':_0x1d3b96[_0xab2a('0x37')]+','+(_0x3e5110[_0xab2a('0x79')]['waitForTheAssignedQueue']||0x12c),'interval':_0xab2a('0xa6')});}return respondWithRpcPromise(_0xab2a('0xaa'),_0xab2a('0xab'),_0x3e5110);})['then'](function(_0x4dfef2){if(_0x4dfef2){var _0xcc3f63=0xc8;var _0xdd1d41=_0xab2a('0xac');logger[_0xab2a('0x1e')](_0xab2a('0xad'),_0xdd1d41,_0xcc3f63,_0xab2a('0xae'));logger[_0xab2a('0x21')](_0xab2a('0xaf'),_0xdd1d41,_0xcc3f63,_0xab2a('0xae'),JSON[_0xab2a('0x22')](_0x4dfef2));if(_0x3e5110[_0xab2a('0x79')][_0xab2a('0x4f')]===_0xab2a('0x7a')){return _0x1aa3a9[_0xab2a('0x29')](_0xcc3f63)[_0xab2a('0xb0')](_0xab2a('0xb1'),_0xab2a('0xb2'))['send'](_0xab2a('0xb3'));}else{return _0x1aa3a9[_0xab2a('0x29')](_0xcc3f63)[_0xab2a('0x2b')](_0x4dfef2);}}})[_0xab2a('0x27')](handleError(_0x1aa3a9,null));};exports[_0xab2a('0xb4')]=function(_0x390528,_0x309a25){var _0x423f7a=_0x390528[_0xab2a('0x56')]['id'];var _0x9392b6=_0x390528[_0xab2a('0x59')];var _0x428c3e=0xc8;var _0x126aef=null;return db['sequelize'][_0xab2a('0xb5')]({'isolationLevel':db[_0xab2a('0xb6')]['Transaction'][_0xab2a('0xb7')][_0xab2a('0xb8')]},function(_0x71fe83){return db['SmsAccount']['findOne']({'where':{'id':_0x423f7a},'transaction':_0x71fe83})['then'](function(_0x24aab6){if(_0x24aab6){return db['SmsApplication'][_0xab2a('0x31')]({'where':{'SmsAccountId':_0x423f7a},'transaction':_0x71fe83})[_0xab2a('0x32')](function(){var _0x14403b=_[_0xab2a('0x4e')](_0x9392b6,function(_0x3a8cca){_0x3a8cca[_0xab2a('0x62')]=_0x423f7a;return _0x3a8cca;});return db[_0xab2a('0x6d')][_0xab2a('0xb9')](_0x14403b,{'transaction':_0x71fe83});});}else{_0x428c3e=0x194;_0x126aef=[];}});})[_0xab2a('0x32')](function(){if(_0x428c3e!==0x194){return db[_0xab2a('0x6d')][_0xab2a('0xba')]({'where':{'SmsAccountId':_0x423f7a},'order':'priority'})[_0xab2a('0x32')](function(_0x428d4e){_0x126aef=_0x428d4e;});}})['catch'](function(_0x312c1f){_0x428c3e=0x1f4;logger[_0xab2a('0x23')](_0x312c1f[_0xab2a('0x36')]);if(_0x312c1f[_0xab2a('0x37')]){delete _0x312c1f['name'];}_0x126aef=_0x312c1f;})[_0xab2a('0xbb')](function(){if(_0x126aef===null){_0x309a25['sendStatus'](_0x428c3e);}else{if(_0x428c3e===0x1f4){_0x309a25[_0xab2a('0x29')](_0x428c3e)[_0xab2a('0xbc')](_0x126aef);}else{_0x309a25['status'](_0x428c3e)[_0xab2a('0x2b')](_0x126aef);}}});};exports[_0xab2a('0xbd')]=function(_0x415d60,_0x3394d8,_0x31d1aa){var _0x4f0c80={};var _0x157032={};var _0xab39e2;var _0xf45edb;return db[_0xab2a('0x3b')][_0xab2a('0x65')]({'where':{'id':_0x415d60[_0xab2a('0x56')]['id']}})['then'](handleEntityNotFound(_0x3394d8,null))[_0xab2a('0x32')](function(_0x5305a4){if(_0x5305a4){_0xab39e2=_0x5305a4;_0x157032['model']=_[_0xab2a('0x41')](db[_0xab2a('0x6d')][_0xab2a('0x3c')]);_0x157032[_0xab2a('0x40')]=_[_0xab2a('0x41')](_0x415d60[_0xab2a('0x40')]);_0x157032[_0xab2a('0x42')]=_[_0xab2a('0x43')](_0x157032[_0xab2a('0x3f')],_0x157032[_0xab2a('0x40')]);_0x4f0c80[_0xab2a('0x44')]=_['intersection'](_0x157032['model'],qs[_0xab2a('0x45')](_0x415d60[_0xab2a('0x40')][_0xab2a('0x45')]));_0x4f0c80[_0xab2a('0x44')]=_0x4f0c80[_0xab2a('0x44')][_0xab2a('0x46')]?_0x4f0c80[_0xab2a('0x44')]:_0x157032['model'];_0x4f0c80['order']=qs[_0xab2a('0x49')](_0x415d60[_0xab2a('0x40')]['sort']);_0x4f0c80[_0xab2a('0x4c')]=qs[_0xab2a('0x42')](_[_0xab2a('0x4a')](_0x415d60['query'],_0x157032[_0xab2a('0x42')]));if(_0x415d60['query'][_0xab2a('0x4b')]){_0x4f0c80[_0xab2a('0x4c')]=_['merge'](_0x4f0c80[_0xab2a('0x4c')],{'$or':_[_0xab2a('0x4e')](_0x4f0c80[_0xab2a('0x44')],function(_0x523a59){var _0xa58e38={};_0xa58e38[_0x523a59]={'$like':'%'+_0x415d60[_0xab2a('0x40')][_0xab2a('0x4b')]+'%'};return _0xa58e38;})});}_0x4f0c80=_[_0xab2a('0x4d')]({},_0x4f0c80,_0x415d60[_0xab2a('0x51')]);return _0xab39e2[_0xab2a('0xbd')](_0x4f0c80);}})[_0xab2a('0x32')](function(_0x52eeb1){if(_0x52eeb1){_0xf45edb=_0x52eeb1['length'];if(!_0x415d60[_0xab2a('0x40')][_0xab2a('0x66')]('nolimit')){_0x4f0c80['limit']=qs[_0xab2a('0x2d')](_0x415d60['query']['limit']);_0x4f0c80[_0xab2a('0x2f')]=qs['offset'](_0x415d60[_0xab2a('0x40')][_0xab2a('0x2f')]);}return _0xab39e2[_0xab2a('0xbd')](_0x4f0c80);}})[_0xab2a('0x32')](function(_0x7c95e5){if(_0x7c95e5){return _0x7c95e5?{'count':_0xf45edb,'rows':_0x7c95e5}:null;}})[_0xab2a('0x32')](respondWithResult(_0x3394d8,null))[_0xab2a('0x27')](handleError(_0x3394d8,null));};exports[_0xab2a('0xbe')]=function(_0x27ba63,_0x49324a,_0x1618c5){var _0x185fb6={'raw':![],'where':{}};var _0x4c0847={};var _0x52ad12={'count':0x0,'rows':[]};return db[_0xab2a('0x3b')][_0xab2a('0x65')]({'where':{'id':_0x27ba63[_0xab2a('0x56')]['id']}})[_0xab2a('0x32')](handleEntityNotFound(_0x49324a,null))[_0xab2a('0x32')](function(_0x36883b){if(_0x36883b){_0x4c0847[_0xab2a('0x3f')]=_[_0xab2a('0x41')](db[_0xab2a('0x99')][_0xab2a('0x3c')]);_0x4c0847[_0xab2a('0x40')]=_[_0xab2a('0x41')](_0x27ba63[_0xab2a('0x40')]);_0x4c0847[_0xab2a('0x42')]=_[_0xab2a('0x43')](_0x4c0847[_0xab2a('0x3f')],_0x4c0847[_0xab2a('0x40')]);_0x185fb6[_0xab2a('0x44')]=_[_0xab2a('0x43')](_0x4c0847[_0xab2a('0x3f')],qs[_0xab2a('0x45')](_0x27ba63[_0xab2a('0x40')][_0xab2a('0x45')]));_0x185fb6[_0xab2a('0x44')]=_0x185fb6[_0xab2a('0x44')][_0xab2a('0x46')]?_0x185fb6[_0xab2a('0x44')]:_0x4c0847['model'];if(!_0x27ba63[_0xab2a('0x40')][_0xab2a('0x66')](_0xab2a('0x47'))){_0x185fb6[_0xab2a('0x2d')]=qs[_0xab2a('0x2d')](_0x27ba63[_0xab2a('0x40')][_0xab2a('0x2d')]);_0x185fb6[_0xab2a('0x2f')]=qs[_0xab2a('0x2f')](_0x27ba63[_0xab2a('0x40')][_0xab2a('0x2f')]);}_0x185fb6[_0xab2a('0x48')]=qs[_0xab2a('0x49')](_0x27ba63[_0xab2a('0x40')]['sort']);_0x185fb6[_0xab2a('0x4c')]=qs['filters'](_[_0xab2a('0x4a')](_0x27ba63[_0xab2a('0x40')],_0x4c0847[_0xab2a('0x42')]));_0x185fb6[_0xab2a('0x4c')][_0xab2a('0x62')]=_0x36883b['id'];if(_0x27ba63[_0xab2a('0x40')][_0xab2a('0x4b')]){_0x185fb6[_0xab2a('0x4c')]=_[_0xab2a('0x4d')](_0x185fb6[_0xab2a('0x4c')],{'$or':_['map'](_0x185fb6[_0xab2a('0x44')],function(_0x9094cf){var _0x28eb7b={};_0x28eb7b[_0x9094cf]={'$like':'%'+_0x27ba63[_0xab2a('0x40')][_0xab2a('0x4b')]+'%'};return _0x28eb7b;})});}_0x185fb6=_[_0xab2a('0x4d')]({},_0x185fb6,_0x27ba63[_0xab2a('0x51')]);return db[_0xab2a('0x99')][_0xab2a('0x2e')]({'where':_0x185fb6[_0xab2a('0x4c')]})[_0xab2a('0x32')](function(_0x5d7fe4){_0x52ad12[_0xab2a('0x2e')]=_0x5d7fe4;if(_0x27ba63[_0xab2a('0x40')][_0xab2a('0x52')]){_0x185fb6[_0xab2a('0x53')]=[{'model':db['CmContact'],'as':_0xab2a('0xbf'),'required':![]},{'model':db[_0xab2a('0xc0')],'as':_0xab2a('0xc1'),'attributes':[_0xab2a('0x37'),_0xab2a('0xc2'),'internal'],'required':![]},{'model':db[_0xab2a('0xc3')],'as':_0xab2a('0xc4'),'attributes':['id','name',_0xab2a('0xc5')],'where':_0x27ba63[_0xab2a('0x40')][_0xab2a('0xc6')]?{'id':_0x27ba63[_0xab2a('0x40')]['tag']}:undefined,'required':_0x27ba63[_0xab2a('0x40')][_0xab2a('0xc6')]?!![]:![]}];}return db[_0xab2a('0x99')][_0xab2a('0x54')](_0x185fb6);})[_0xab2a('0x32')](function(_0x50ae4f){_0x52ad12[_0xab2a('0x55')]=_0x50ae4f;return _0x52ad12;});}})[_0xab2a('0x32')](respondWithFilteredResult(_0x49324a,_0x185fb6))[_0xab2a('0x27')](handleError(_0x49324a,null));};exports[_0xab2a('0xbc')]=function(_0x4dfed5,_0x3b159d,_0x16ae1d){var _0x4c790f,_0x1c419a,_0x58d3d4;if(_[_0xab2a('0x8d')](_0x4dfed5['body'][_0xab2a('0x59')])||_0x4dfed5[_0xab2a('0x59')][_0xab2a('0x59')]===''){throw new db[(_0xab2a('0x72'))][(_0xab2a('0x8b'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xab2a('0x8d')](_0x4dfed5[_0xab2a('0x59')]['to'])){throw new db['Sequelize']['ValidationError'](_0xab2a('0xc7'));}_0x4c790f=_0x4dfed5['body']['to'];return db[_0xab2a('0x3b')]['find']({'where':{'id':_0x4dfed5[_0xab2a('0x56')]['id']},'include':[{'model':db['CmList'],'as':_0xab2a('0xc8'),'include':[{'model':db['CmContact'],'as':_0xab2a('0x94'),'where':{'mobile':_0x4c790f},'limit':0x1,'order':[[_0xab2a('0x76'),_0xab2a('0xc9')]]}]}]})[_0xab2a('0x32')](handleEntityNotFound(_0x3b159d,null))['then'](function(_0x4c4b60){if(_0x4c4b60&&_0x4c4b60['List']){_0x1c419a=_0x4c4b60[_0xab2a('0x33')]({'plain':!![]});if(_0x1c419a[_0xab2a('0xc8')]&&_0x1c419a[_0xab2a('0xc8')][_0xab2a('0x94')][_0xab2a('0x46')]){return _0x1c419a[_0xab2a('0xc8')][_0xab2a('0x94')][0x0];}return db[_0xab2a('0x97')][_0xab2a('0x58')](_[_0xab2a('0x18')](_0x4dfed5[_0xab2a('0x59')],{'firstName':_0x4c790f,'mobile':_0x4c790f,'phone':_0x4c790f,'ListId':_0x1c419a[_0xab2a('0x77')]}));}})[_0xab2a('0x32')](handleEntityNotFound(_0x3b159d,null))[_0xab2a('0x32')](function(_0x4acead){if(_0x4acead){_0x58d3d4=_0x4acead;return db['SmsInteraction'][_0xab2a('0x57')]({'where':{'ContactId':_0x58d3d4['id'],'closed':![],'SmsAccountId':_0x1c419a['id']}})['then'](function(_0x5eb3da){if(_0x5eb3da){return[_0x5eb3da,![]];}return db[_0xab2a('0x99')][_0xab2a('0x58')]({'UserId':_0x4dfed5[_0xab2a('0x5a')]['id'],'ContactId':_0x58d3d4['id'],'SmsAccountId':_0x1c419a['id'],'phone':_0x4c790f,'firstMsgDirection':_0xab2a('0xca'),'Messages':[_[_0xab2a('0x4d')](_0x4dfed5[_0xab2a('0x59')],{'read':![],'body':_0x4dfed5[_0xab2a('0x59')]['body'],'phone':_0x4c790f,'SmsAccountId':_0x1c419a['id'],'UserId':_0x4dfed5[_0xab2a('0x5a')]['id'],'ContactId':_0x58d3d4['id']})]},{'include':[{'model':db[_0xab2a('0xa2')],'as':'Messages'}]})[_0xab2a('0x32')](function(_0x22949a){return[_0x22949a,!![]];});});}})[_0xab2a('0x9a')](function(_0x1fef6e,_0x731e6b){if(_0x731e6b){return _0x1fef6e;}return db[_0xab2a('0xa2')][_0xab2a('0x58')](_[_0xab2a('0x4d')](_0x4dfed5[_0xab2a('0x59')],{'read':![],'body':_0x4dfed5['body'][_0xab2a('0x59')],'phone':_0x4c790f,'SmsAccountId':_0x1c419a['id'],'SmsInteractionId':_0x1fef6e['id'],'UserId':_0x4dfed5[_0xab2a('0x5a')]['id'],'ContactId':_0x58d3d4['id']}))[_0xab2a('0x32')](function(_0x522c1d){_0x1fef6e[_0xab2a('0xcb')]['Messages']=[];_0x1fef6e[_0xab2a('0xcb')]['Messages'][_0xab2a('0x9d')](_0x522c1d['dataValues']);return _0x1fef6e;});})[_0xab2a('0x32')](respondWithResult(_0x3b159d,null))[_0xab2a('0x27')](handleError(_0x3b159d,null));};exports[_0xab2a('0x29')]=function(_0x4f81ec,_0x50c526,_0x481c19){if(_0x4f81ec['body']['id']){delete _0x4f81ec[_0xab2a('0x59')]['id'];}var _0x4a144f,_0x54bd6d,_0x322258;return db[_0xab2a('0x3b')][_0xab2a('0x57')]({'where':{'id':_0x4f81ec[_0xab2a('0x56')]['id']}})[_0xab2a('0x32')](handleEntityNotFound(_0x50c526,null))[_0xab2a('0x32')](function(_0x5009b3){if(_0x5009b3){_0x322258=_0x5009b3;logger[_0xab2a('0x21')](_0xab2a('0xad'),'status',_0xab2a('0xcc'),_0x5009b3[_0xab2a('0x4f')],util[_0xab2a('0xcd')](_0x4f81ec[_0xab2a('0x59')],{'showHidden':![],'depth':null}));switch(_0x5009b3[_0xab2a('0x4f')]){case _0xab2a('0xce'):if(_0x4f81ec['body']['skebby_dispatch_id']&&_0x4f81ec['body']['status']){_0x54bd6d=_0x4f81ec['body'][_0xab2a('0x29')];return db[_0xab2a('0xa2')]['find']({'where':{'messageId':_0x4f81ec[_0xab2a('0x59')][_0xab2a('0xcf')]}});}break;case _0xab2a('0xd0'):if(_0x4f81ec[_0xab2a('0x59')][_0xab2a('0xd1')]&&_0x4f81ec[_0xab2a('0x59')][_0xab2a('0xd2')]){_0x54bd6d=_0x4f81ec[_0xab2a('0x59')]['statusInt'];return db[_0xab2a('0xa2')]['find']({'where':{'messageId':_0x4f81ec[_0xab2a('0x59')]['requestid']}});}break;case'clicksend':if(_0x4f81ec[_0xab2a('0x59')][_0xab2a('0x81')]&&_0x4f81ec['body'][_0xab2a('0xd3')]){_0x54bd6d=_0x4f81ec['body'][_0xab2a('0xd3')];return db[_0xab2a('0xa2')][_0xab2a('0x57')]({'where':{'messageId':_0x4f81ec['body'][_0xab2a('0x81')]}});}break;case _0xab2a('0xd4'):var _0x6088ab=_0x4f81ec[_0xab2a('0x59')][_0xab2a('0x84')][0x0];if(_0x6088ab['messageId']&&_0x6088ab[_0xab2a('0x29')][_0xab2a('0xd5')]===_0xab2a('0xd6')){_0x54bd6d=_0x6088ab['status'][_0xab2a('0xd5')];return db[_0xab2a('0xa2')][_0xab2a('0x57')]({'where':{'messageId':_0x6088ab[_0xab2a('0x7d')]}});}break;case'clickatell':if(_0x4f81ec[_0xab2a('0x59')][_0xab2a('0x7d')]&&_0x4f81ec[_0xab2a('0x59')]['status']){_0x54bd6d=_0x4f81ec[_0xab2a('0x59')][_0xab2a('0x29')];return db['SmsMessage'][_0xab2a('0x57')]({'where':{'messageId':_0x4f81ec[_0xab2a('0x59')]['messageId']}});}break;case _0xab2a('0x88'):if(_0x4f81ec[_0xab2a('0x59')][0x0][_0xab2a('0x25')]['id']){_0x54bd6d=_0x4f81ec[_0xab2a('0x59')][0x0][_0xab2a('0x4f')];return db['SmsMessage']['find']({'where':{'messageId':_0x4f81ec['body'][0x0][_0xab2a('0x25')]['id']}});}break;case'intelepeer':if(_0x4f81ec[_0xab2a('0x59')]['redif']&&_0x4f81ec[_0xab2a('0x59')][_0xab2a('0x29')]){_0x54bd6d=_0x4f81ec[_0xab2a('0x59')][_0xab2a('0x29')];return db[_0xab2a('0xa2')][_0xab2a('0x57')]({'where':{'messageId':_0x4f81ec['body'][_0xab2a('0xd7')]}});}break;}}})['then'](handleEntityNotFound(_0x50c526,null))[_0xab2a('0x32')](function(_0x103266){if(_0x103266){_0x4a144f=_0x103266;switch(_0x322258['type']){case _0xab2a('0xce'):if(_0x54bd6d==='DELIVERED'){return _0x4a144f[_0xab2a('0xd8')]({'read':!![]});}else{logger[_0xab2a('0x23')](_0xab2a('0xad'),'status',_0xab2a('0xce'),util[_0xab2a('0xcd')](_0x4f81ec[_0xab2a('0x59')],{'showHidden':![],'depth':null}));}break;case _0xab2a('0xd0'):if(_0x54bd6d==='1'){return _0x4a144f['update']({'read':!![]});}else{logger[_0xab2a('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xab2a('0x29'),_0xab2a('0xce'),util['inspect'](_0x4f81ec['body'],{'showHidden':![],'depth':null}));}break;case'clicksend':if(!_0x4f81ec[_0xab2a('0x59')][_0xab2a('0xd9')]&&_0x54bd6d>=0xc8&&_0x54bd6d<=0xce){return _0x4a144f[_0xab2a('0xd8')]({'read':!![]});}else{logger['error'](_0xab2a('0xad'),_0xab2a('0x29'),'clicksend',util[_0xab2a('0xcd')](_0x4f81ec[_0xab2a('0x59')],{'showHidden':![],'depth':null}));}break;case _0xab2a('0xd4'):var _0x2f9b9b=_0x4f81ec['body'][_0xab2a('0x84')][0x0];if(_0x2f9b9b['status'][_0xab2a('0xd5')]==='DELIVERED'){return _0x4a144f['update']({'read':!![]});}else{logger[_0xab2a('0x23')](_0xab2a('0xad'),'status',_0xab2a('0xd4'),util['inspect'](_0x4f81ec['body'],{'showHidden':![],'depth':null}));}break;case _0xab2a('0xda'):if(_0x54bd6d==_0xab2a('0xdb')||_0x54bd6d==_0xab2a('0xdc')){return _0x4a144f[_0xab2a('0xd8')]({'read':!![]});}else{logger[_0xab2a('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xab2a('0xda'),util[_0xab2a('0xcd')](_0x4f81ec[_0xab2a('0x59')],{'showHidden':![],'depth':null}));}break;case _0xab2a('0x88'):if(_0x54bd6d==_0xab2a('0xdd')){return _0x4a144f[_0xab2a('0xd8')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xab2a('0x29'),_0xab2a('0x88'),util[_0xab2a('0xcd')](_0x4f81ec[_0xab2a('0x59')],{'showHidden':![],'depth':null}));}break;case _0xab2a('0x89'):if(_0x54bd6d===_0xab2a('0xde')||_0x54bd6d===_0xab2a('0xdf')){return _0x4a144f[_0xab2a('0xd8')]({'read':!![]});}else{logger['error'](_0xab2a('0xad'),_0xab2a('0x29'),_0xab2a('0x89'),util[_0xab2a('0xcd')](_0x4f81ec[_0xab2a('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x4a144f;}})[_0xab2a('0x32')](respondWithResult(_0x50c526,null))[_0xab2a('0x27')](handleError(_0x50c526,null));};exports[_0xab2a('0xe0')]=function(_0x23ca4b,_0x4e77ac,_0x5633c7){var _0x900b75,_0x1a38da,_0x14f9e2;return db[_0xab2a('0x3b')][_0xab2a('0x57')]({'where':{'id':_0x23ca4b['params']['id']}})[_0xab2a('0x32')](handleEntityNotFound(_0x4e77ac,null))[_0xab2a('0x32')](function(_0x4c06b9){if(_0x4c06b9){_0x14f9e2=_0x4c06b9;logger[_0xab2a('0x21')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xab2a('0x29'),'received\x20delivery\x20report\x20from',_0x4c06b9[_0xab2a('0x4f')],util[_0xab2a('0xcd')](_0x23ca4b[_0xab2a('0x40')],{'showHidden':![],'depth':null}));switch(_0x4c06b9['type']){case _0xab2a('0x85'):if(_0x23ca4b[_0xab2a('0x40')][_0xab2a('0xe1')]&&_0x23ca4b[_0xab2a('0x40')][_0xab2a('0xe2')]){_0x1a38da=_0x23ca4b[_0xab2a('0x40')][_0xab2a('0xe2')];return db['SmsMessage'][_0xab2a('0x57')]({'where':{'messageId':_0x23ca4b['query']['message-id']}});}break;}}})[_0xab2a('0x32')](handleEntityNotFound(_0x4e77ac,null))['then'](function(_0x551414){if(_0x551414){_0x900b75=_0x551414;switch(_0x14f9e2[_0xab2a('0x4f')]){case _0xab2a('0x85'):if(_0x1a38da==='2'||_0x1a38da==='6'){return _0x900b75[_0xab2a('0xd8')]({'read':!![]});}else{logger['error'](_0xab2a('0xad'),_0xab2a('0x29'),'csc',util['inspect'](_0x23ca4b[_0xab2a('0x40')],{'showHidden':![],'depth':null}));};break;}return _0x900b75;}})['then'](respondWithResult(_0x4e77ac,null))[_0xab2a('0x27')](handleError(_0x4e77ac,null));};exports['addAgents']=function(_0x53068d,_0x5a810a,_0x4f7947){return db['SmsAccount'][_0xab2a('0x57')]({'where':{'id':_0x53068d[_0xab2a('0x56')]['id']}})[_0xab2a('0x32')](handleEntityNotFound(_0x5a810a,null))[_0xab2a('0x32')](function(_0xec33a){if(_0xec33a){return _0xec33a[_0xab2a('0xe3')](_0x53068d['body'][_0xab2a('0xe4')],_[_0xab2a('0x96')](_0x53068d[_0xab2a('0x59')],[_0xab2a('0xe4'),'id'])||{})[_0xab2a('0x9a')](function(_0x1a6911){for(var _0x33b1da=0x0;_0x33b1da<_0x53068d[_0xab2a('0x59')][_0xab2a('0xe4')]['length'];_0x33b1da+=0x1){socket['emit'](_0xab2a('0xe5'),{'UserId':Number(_0x53068d['body'][_0xab2a('0xe4')][_0x33b1da]),'SmsAccountId':Number(_0x53068d[_0xab2a('0x56')]['id'])});}return _0x1a6911;});}})['then'](respondWithResult(_0x5a810a,null))['catch'](handleError(_0x5a810a,null));};exports[_0xab2a('0xe6')]=function(_0x923710,_0x1a96e7,_0xc4a8c4){return db[_0xab2a('0x3b')]['find']({'where':{'id':_0x923710['params']['id']}})['then'](handleEntityNotFound(_0x1a96e7,null))['then'](function(_0x545118){if(_0x545118){return _0x545118[_0xab2a('0xe6')](_0x923710[_0xab2a('0x40')][_0xab2a('0xe4')])[_0xab2a('0x32')](function(){if(_['isArray'](_0x923710[_0xab2a('0x40')][_0xab2a('0xe4')])){for(var _0x404b1b=0x0;_0x404b1b<_0x923710[_0xab2a('0x40')]['ids'][_0xab2a('0x46')];_0x404b1b+=0x1){socket['emit'](_0xab2a('0xe7'),{'UserId':Number(_0x923710[_0xab2a('0x40')][_0xab2a('0xe4')][_0x404b1b]),'SmsAccountId':Number(_0x923710['params']['id'])});}}else{socket[_0xab2a('0xe8')](_0xab2a('0xe7'),{'UserId':Number(_0x923710['query'][_0xab2a('0xe4')]),'SmsAccountId':Number(_0x923710[_0xab2a('0x56')]['id'])});}});}})[_0xab2a('0x32')](respondWithStatusCode(_0x1a96e7,null))[_0xab2a('0x27')](handleError(_0x1a96e7,null));};exports['getAgents']=function(_0x206923,_0x45e7cd,_0x1a6de9){var _0x17dea6={};var _0x4dc6fd={};var _0x2851fd;var _0xda884;return db[_0xab2a('0x3b')][_0xab2a('0x65')]({'where':{'id':_0x206923[_0xab2a('0x56')]['id']}})['then'](handleEntityNotFound(_0x45e7cd,null))[_0xab2a('0x32')](function(_0x2b64c0){if(_0x2b64c0){_0x2851fd=_0x2b64c0;_0x4dc6fd[_0xab2a('0x3f')]=_[_0xab2a('0x41')](db[_0xab2a('0xc0')][_0xab2a('0x3c')]);_0x4dc6fd[_0xab2a('0x40')]=_[_0xab2a('0x41')](_0x206923[_0xab2a('0x40')]);_0x4dc6fd[_0xab2a('0x42')]=_[_0xab2a('0x43')](_0x4dc6fd[_0xab2a('0x3f')],_0x4dc6fd['query']);_0x17dea6[_0xab2a('0x44')]=_[_0xab2a('0x43')](_0x4dc6fd[_0xab2a('0x3f')],qs[_0xab2a('0x45')](_0x206923[_0xab2a('0x40')][_0xab2a('0x45')]));_0x17dea6[_0xab2a('0x44')]=_0x17dea6[_0xab2a('0x44')][_0xab2a('0x46')]?_0x17dea6[_0xab2a('0x44')]:_0x4dc6fd[_0xab2a('0x3f')];_0x17dea6[_0xab2a('0x48')]=qs[_0xab2a('0x49')](_0x206923['query'][_0xab2a('0x49')]);_0x17dea6[_0xab2a('0x4c')]=qs['filters'](_[_0xab2a('0x4a')](_0x206923[_0xab2a('0x40')],_0x4dc6fd['filters']));if(_0x206923[_0xab2a('0x40')][_0xab2a('0x4b')]){_0x17dea6[_0xab2a('0x4c')]=_[_0xab2a('0x4d')](_0x17dea6[_0xab2a('0x4c')],{'$or':_[_0xab2a('0x4e')](_0x17dea6[_0xab2a('0x44')],function(_0x59b185){var _0x19233d={};_0x19233d[_0x59b185]={'$like':'%'+_0x206923[_0xab2a('0x40')][_0xab2a('0x4b')]+'%'};return _0x19233d;})});}_0x17dea6=_['merge']({},_0x17dea6,_0x206923[_0xab2a('0x51')]);return _0x2851fd['getAgents'](_0x17dea6);}})['then'](function(_0x20107e){if(_0x20107e){_0xda884=_0x20107e[_0xab2a('0x46')];if(!_0x206923[_0xab2a('0x40')]['hasOwnProperty'](_0xab2a('0x47'))){_0x17dea6[_0xab2a('0x2d')]=qs['limit'](_0x206923[_0xab2a('0x40')][_0xab2a('0x2d')]);_0x17dea6[_0xab2a('0x2f')]=qs[_0xab2a('0x2f')](_0x206923[_0xab2a('0x40')][_0xab2a('0x2f')]);}return _0x2851fd['getAgents'](_0x17dea6);}})[_0xab2a('0x32')](function(_0x333daa){if(_0x333daa){return _0x333daa?{'count':_0xda884,'rows':_0x333daa}:null;}})[_0xab2a('0x32')](respondWithResult(_0x45e7cd,null))[_0xab2a('0x27')](handleError(_0x45e7cd,null));};
\ No newline at end of file
+var _0x567a=['rimraf','fast-json-patch','request-promise','bluebird','path','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./smsAccount.socket','register','jayson/promise','http','request','then','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsAccount,\x20%s,\x20%s','message','info','result','catch','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','destroy','get','SmsAccounts','end','sendStatus','stack','name','send','Pause','map','SmsAccount','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','filters','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','autoAssociation','UserProfileResource','body','describe','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','hasOwnProperty','filter','removeDispositions','ids','addAnswer','CannedAnswer','removeAnswers','notify','sms','SmsApplication','Applications','applications','orderBy','priority','asc','account','Sequelize','ValidationError','difference','createdAt','updatedAt','CompanyId','mobile','twilio','From','Body','messageId','sender','text','connectel','from','message_id','plivo','Text','MessageUUID','results','csc','segmentedMessage','clickatell','fromNumber','intelepeer','refid','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','CmList','CmContact','list','omit','Contacts','contact','SmsInteraction','spread','interaction','created','autoclose','close','*,*,*,*','ContactId','AttachmentId','User','UserId','unshift','agent','waitForTheAssignedAgent','queueId','SmsQueue','queue','waitForTheAssignedQueue','Start','startRouting','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','entity\x20found','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','finally','getApplications','getInteractions','Contact','Owner','fullname','internal','Tags','tag','to\x20is\x20mandatory','List','DESC','ListId','out','SmsMessage','Messages','dataValues','push','received\x20delivery\x20report\x20from','inspect','skebby','skebby_dispatch_id','requestid','statusInt','clicksend','status_code','infobip','groupName','bandwidth','redif','DELIVERED','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','DELIVRD','ACCEPTD','statusGet','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents'];(function(_0x16f2df,_0x23470a){var _0x5975f1=function(_0x741aff){while(--_0x741aff){_0x16f2df['push'](_0x16f2df['shift']());}};_0x5975f1(++_0x23470a);}(_0x567a,0xec));var _0xa567=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x567a[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa567('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa567('0x1'));var rp=require(_0xa567('0x2'));var moment=require('moment');var BPromise=require(_0xa567('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xa567('0x4'));var sox=require(_0xa567('0x5'));var csv=require(_0xa567('0x6'));var ejs=require(_0xa567('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa567('0x8'));var crypto=require(_0xa567('0x9'));var jsforce=require(_0xa567('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa567('0xb'));var Papa=require(_0xa567('0xc'));var Redis=require(_0xa567('0xd'));var authService=require('../../components/auth/service');var qs=require(_0xa567('0xe'));var as=require(_0xa567('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa567('0x10'))(_0xa567('0x11'));var utils=require(_0xa567('0x12'));var config=require(_0xa567('0x13'));var licenseUtil=require(_0xa567('0x14'));var db=require(_0xa567('0x15'))['db'];config[_0xa567('0x16')]=_[_0xa567('0x17')](config[_0xa567('0x16')],{'host':'localhost','port':0x18eb});var socket=require(_0xa567('0x18'))(new Redis(config[_0xa567('0x16')]));require(_0xa567('0x19'))[_0xa567('0x1a')](socket);var jayson=require(_0xa567('0x1b'));var client=jayson['client'][_0xa567('0x1c')]({'port':0x232c});function respondWithRpcPromise(_0x19792f,_0x4dbc69,_0x3f89fe,_0x195a21){return new BPromise(function(_0x588e7c,_0x4f90ee){var _0x1c121b=_0x195a21||client;return _0x1c121b[_0xa567('0x1d')](_0x19792f,_0x3f89fe)[_0xa567('0x1e')](function(_0x401ea1){logger['info']('SmsAccount,\x20%s,\x20%s',_0x4dbc69,_0xa567('0x1f'));logger[_0xa567('0x20')](_0xa567('0x21'),_0x4dbc69,_0xa567('0x1f'),JSON[_0xa567('0x22')](_0x401ea1));if(_0x401ea1[_0xa567('0x23')]){if(_0x401ea1['error'][_0xa567('0x24')]===0x1f4){logger['error'](_0xa567('0x25'),_0x4dbc69,_0x401ea1['error']['message']);return _0x4f90ee(_0x401ea1['error'][_0xa567('0x26')]);}logger[_0xa567('0x23')](_0xa567('0x25'),_0x4dbc69,_0x401ea1['error'][_0xa567('0x26')]);return _0x588e7c(_0x401ea1['error'][_0xa567('0x26')]);}else{logger[_0xa567('0x27')](_0xa567('0x25'),_0x4dbc69,'request\x20sent');_0x588e7c(_0x401ea1[_0xa567('0x28')][_0xa567('0x26')]);}})[_0xa567('0x29')](function(_0xb18abb){logger[_0xa567('0x23')](_0xa567('0x25'),_0x4dbc69,_0xb18abb);_0x4f90ee(_0xb18abb);});});}function respondWithStatusCode(_0x621b58,_0x5bab06){_0x5bab06=_0x5bab06||0xcc;return function(_0x3c42b9){if(_0x3c42b9){return _0x621b58['sendStatus'](_0x5bab06);}return _0x621b58['status'](_0x5bab06)['end']();};}function respondWithResult(_0x8d386,_0x451317){_0x451317=_0x451317||0xc8;return function(_0x291e31){if(_0x291e31){return _0x8d386[_0xa567('0x2a')](_0x451317)[_0xa567('0x2b')](_0x291e31);}};}function respondWithFilteredResult(_0x476133,_0x50ada4){return function(_0x46e74a){if(_0x46e74a){var _0x2353b9=typeof _0x50ada4[_0xa567('0x2c')]===_0xa567('0x2d')&&typeof _0x50ada4[_0xa567('0x2e')]===_0xa567('0x2d');var _0x3a4731=_0x46e74a[_0xa567('0x2f')];var _0x53b741=_0x2353b9?0x0:_0x50ada4[_0xa567('0x2c')];var _0xaacf92=_0x2353b9?_0x46e74a[_0xa567('0x2f')]:_0x50ada4['offset']+_0x50ada4[_0xa567('0x2e')];var _0x4b1f15;if(_0xaacf92>=_0x3a4731){_0xaacf92=_0x3a4731;_0x4b1f15=0xc8;}else{_0x4b1f15=0xce;}_0x476133[_0xa567('0x2a')](_0x4b1f15);return _0x476133[_0xa567('0x30')](_0xa567('0x31'),_0x53b741+'-'+_0xaacf92+'/'+_0x3a4731)[_0xa567('0x2b')](_0x46e74a);}return null;};}function patchUpdates(_0x6769e2){return function(_0x45dfa8){try{jsonpatch[_0xa567('0x32')](_0x45dfa8,_0x6769e2,!![]);}catch(_0x568e65){return BPromise['reject'](_0x568e65);}return _0x45dfa8[_0xa567('0x33')]();};}function saveUpdates(_0x5cac6a,_0x1a129f){return function(_0x17a51){if(_0x17a51){return _0x17a51[_0xa567('0x34')](_0x5cac6a)[_0xa567('0x1e')](function(_0x566ddf){return _0x566ddf;});}return null;};}function removeEntity(_0x25ce00,_0x14b123){return function(_0x424212){if(_0x424212){return _0x424212[_0xa567('0x35')]()['then'](function(){var _0x3f00f0=_0x424212[_0xa567('0x36')]({'plain':!![]});var _0x136357=_0xa567('0x37');return db['UserProfileResource'][_0xa567('0x35')]({'where':{'type':_0x136357,'resourceId':_0x3f00f0['id']}})[_0xa567('0x1e')](function(){return _0x424212;});})[_0xa567('0x1e')](function(){_0x25ce00[_0xa567('0x2a')](0xcc)[_0xa567('0x38')]();});}};}function handleEntityNotFound(_0x706440,_0x121121){return function(_0x5938bf){if(!_0x5938bf){_0x706440[_0xa567('0x39')](0x194);}return _0x5938bf;};}function handleError(_0x1975e7,_0xc51e60){_0xc51e60=_0xc51e60||0x1f4;return function(_0x23e0f9){logger[_0xa567('0x23')](_0x23e0f9[_0xa567('0x3a')]);if(_0x23e0f9[_0xa567('0x3b')]){delete _0x23e0f9[_0xa567('0x3b')];}_0x1975e7[_0xa567('0x2a')](_0xc51e60)[_0xa567('0x3c')](_0x23e0f9);};}exports['index']=function(_0xc0ea44,_0x58af3d){var _0x59d9ae={'include':[{'model':db[_0xa567('0x3d')],'as':'mandatoryDispositionPause'}]},_0x32ae9c={},_0xe00862={'count':0x0,'rows':[]};var _0x5a8899=_[_0xa567('0x3e')](db[_0xa567('0x3f')][_0xa567('0x40')],function(_0x102e88){return{'name':_0x102e88[_0xa567('0x41')],'type':_0x102e88[_0xa567('0x42')][_0xa567('0x43')]};});_0x32ae9c[_0xa567('0x44')]=_[_0xa567('0x3e')](_0x5a8899,_0xa567('0x3b'));_0x32ae9c[_0xa567('0x45')]=_['keys'](_0xc0ea44[_0xa567('0x45')]);_0x32ae9c['filters']=_[_0xa567('0x46')](_0x32ae9c[_0xa567('0x44')],_0x32ae9c[_0xa567('0x45')]);_0x59d9ae[_0xa567('0x47')]=_['intersection'](_0x32ae9c[_0xa567('0x44')],qs['fields'](_0xc0ea44[_0xa567('0x45')][_0xa567('0x48')]));_0x59d9ae[_0xa567('0x47')]=_0x59d9ae[_0xa567('0x47')][_0xa567('0x49')]?_0x59d9ae[_0xa567('0x47')]:_0x32ae9c[_0xa567('0x44')];if(!_0xc0ea44[_0xa567('0x45')]['hasOwnProperty'](_0xa567('0x4a'))){_0x59d9ae[_0xa567('0x2e')]=qs[_0xa567('0x2e')](_0xc0ea44[_0xa567('0x45')]['limit']);_0x59d9ae[_0xa567('0x2c')]=qs[_0xa567('0x2c')](_0xc0ea44[_0xa567('0x45')][_0xa567('0x2c')]);}_0x59d9ae[_0xa567('0x4b')]=qs[_0xa567('0x4c')](_0xc0ea44[_0xa567('0x45')][_0xa567('0x4c')]);_0x59d9ae[_0xa567('0x4d')]=qs['filters'](_[_0xa567('0x4e')](_0xc0ea44[_0xa567('0x45')],_0x32ae9c['filters']),_0x5a8899);if(_0xc0ea44[_0xa567('0x45')]['filter']){_0x59d9ae[_0xa567('0x4d')]=_[_0xa567('0x4f')](_0x59d9ae[_0xa567('0x4d')],{'$or':_['map'](_0x5a8899,function(_0x3c86b5){if(_0x3c86b5['type']!==_0xa567('0x50')){var _0x51691f={};_0x51691f[_0x3c86b5[_0xa567('0x3b')]]={'$like':'%'+_0xc0ea44['query']['filter']+'%'};return _0x51691f;}})});}_0x59d9ae=_[_0xa567('0x4f')]({},_0x59d9ae,_0xc0ea44[_0xa567('0x51')]);var _0x3c16f2={'where':_0x59d9ae[_0xa567('0x4d')]};return db[_0xa567('0x3f')][_0xa567('0x2f')](_0x3c16f2)[_0xa567('0x1e')](function(_0x465b71){_0xe00862['count']=_0x465b71;if(_0xc0ea44[_0xa567('0x45')][_0xa567('0x52')]){_0x59d9ae[_0xa567('0x53')]=[{'all':!![]}];}return db[_0xa567('0x3f')][_0xa567('0x54')](_0x59d9ae);})['then'](function(_0x2aeac0){_0xe00862[_0xa567('0x55')]=_0x2aeac0;return _0xe00862;})['then'](respondWithFilteredResult(_0x58af3d,_0x59d9ae))[_0xa567('0x29')](handleError(_0x58af3d,null));};exports[_0xa567('0x56')]=function(_0x3e8328,_0x23afba){var _0xcc0241={'raw':![],'where':{'id':_0x3e8328[_0xa567('0x57')]['id']},'include':[{'model':db[_0xa567('0x3d')],'as':'mandatoryDispositionPause'}]},_0x2a4bea={};_0x2a4bea[_0xa567('0x44')]=_[_0xa567('0x58')](db[_0xa567('0x3f')][_0xa567('0x40')]);_0x2a4bea[_0xa567('0x45')]=_[_0xa567('0x58')](_0x3e8328[_0xa567('0x45')]);_0x2a4bea[_0xa567('0x59')]=_[_0xa567('0x46')](_0x2a4bea[_0xa567('0x44')],_0x2a4bea[_0xa567('0x45')]);_0xcc0241[_0xa567('0x47')]=_[_0xa567('0x46')](_0x2a4bea['model'],qs[_0xa567('0x48')](_0x3e8328[_0xa567('0x45')]['fields']));_0xcc0241[_0xa567('0x47')]=_0xcc0241[_0xa567('0x47')][_0xa567('0x49')]?_0xcc0241[_0xa567('0x47')]:_0x2a4bea[_0xa567('0x44')];if(_0x3e8328[_0xa567('0x45')][_0xa567('0x52')]){_0xcc0241[_0xa567('0x53')]=[{'all':!![]}];}_0xcc0241=_[_0xa567('0x4f')]({},_0xcc0241,_0x3e8328[_0xa567('0x51')]);return db[_0xa567('0x3f')][_0xa567('0x5a')](_0xcc0241)['then'](handleEntityNotFound(_0x23afba,null))['then'](respondWithResult(_0x23afba,null))['catch'](handleError(_0x23afba,null));};exports[_0xa567('0x5b')]=function(_0x27578e,_0x11bde8){return db['SmsAccount'][_0xa567('0x5b')](_0x27578e['body'],{})['then'](function(_0x1d2450){var _0x4d23ec=_0x27578e[_0xa567('0x5c')][_0xa567('0x36')]({'plain':!![]});if(!_0x4d23ec)throw new Error(_0xa567('0x5d'));if(_0x4d23ec['role']===_0xa567('0x5c')){var _0x4b5a33=_0x1d2450[_0xa567('0x36')]({'plain':!![]});var _0x3d31d3=_0xa567('0x37');return db['UserProfileSection'][_0xa567('0x5a')]({'where':{'name':_0x3d31d3,'userProfileId':_0x4d23ec['userProfileId']},'raw':!![]})['then'](function(_0x520cf7){if(_0x520cf7&&_0x520cf7[_0xa567('0x5e')]===0x0){return db[_0xa567('0x5f')][_0xa567('0x5b')]({'name':_0x4b5a33[_0xa567('0x3b')],'resourceId':_0x4b5a33['id'],'type':_0x520cf7[_0xa567('0x3b')],'sectionId':_0x520cf7['id']},{})[_0xa567('0x1e')](function(){return _0x1d2450;});}else{return _0x1d2450;}})[_0xa567('0x29')](function(_0x36d0d5){logger[_0xa567('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x36d0d5);throw _0x36d0d5;});}return _0x1d2450;})[_0xa567('0x1e')](respondWithResult(_0x11bde8,0xc9))['catch'](handleError(_0x11bde8,null));};exports[_0xa567('0x34')]=function(_0x4d4bda,_0x58a381){if(_0x4d4bda[_0xa567('0x60')]['id']){delete _0x4d4bda[_0xa567('0x60')]['id'];}return db[_0xa567('0x3f')]['find']({'where':{'id':_0x4d4bda['params']['id']},'include':[{'model':db[_0xa567('0x3d')],'as':'mandatoryDispositionPause'}]})[_0xa567('0x1e')](handleEntityNotFound(_0x58a381,null))['then'](saveUpdates(_0x4d4bda[_0xa567('0x60')],null))[_0xa567('0x1e')](respondWithResult(_0x58a381,null))['catch'](handleError(_0x58a381,null));};exports[_0xa567('0x35')]=function(_0x155dd8,_0x475a0c){return db[_0xa567('0x3f')][_0xa567('0x5a')]({'where':{'id':_0x155dd8[_0xa567('0x57')]['id']}})['then'](handleEntityNotFound(_0x475a0c,null))[_0xa567('0x1e')](removeEntity(_0x475a0c,null))[_0xa567('0x29')](handleError(_0x475a0c,null));};exports[_0xa567('0x61')]=function(_0x1bdcd2,_0x17c671){return db[_0xa567('0x3f')][_0xa567('0x61')]()[_0xa567('0x1e')](respondWithResult(_0x17c671,null))[_0xa567('0x29')](handleError(_0x17c671,null));};exports[_0xa567('0x62')]=function(_0x5570fc,_0x5ced1f,_0x527c5b){if(_0x5570fc[_0xa567('0x60')]['id']){delete _0x5570fc[_0xa567('0x60')]['id'];}return db[_0xa567('0x3f')][_0xa567('0x5a')]({'where':{'id':_0x5570fc[_0xa567('0x57')]['id']}})[_0xa567('0x1e')](handleEntityNotFound(_0x5ced1f,null))[_0xa567('0x1e')](function(_0x3d561f){if(_0x3d561f){_0x5570fc[_0xa567('0x60')][_0xa567('0x63')]=_0x3d561f['id'];return db[_0xa567('0x64')]['create'](_0x5570fc[_0xa567('0x60')]);}})[_0xa567('0x1e')](respondWithResult(_0x5ced1f,null))['catch'](handleError(_0x5ced1f,null));};exports[_0xa567('0x65')]=function(_0x569420,_0x3f3a0e,_0x171617){var _0x226397={'raw':![],'where':{}};var _0x52730a={};var _0x9a4a3f={'count':0x0,'rows':[]};return db['SmsAccount'][_0xa567('0x66')]({'where':{'id':_0x569420[_0xa567('0x57')]['id']}})[_0xa567('0x1e')](handleEntityNotFound(_0x3f3a0e,null))[_0xa567('0x1e')](function(_0x1b6b51){if(_0x1b6b51){_0x52730a[_0xa567('0x44')]=_[_0xa567('0x58')](db[_0xa567('0x64')][_0xa567('0x40')]);_0x52730a[_0xa567('0x45')]=_['keys'](_0x569420['query']);_0x52730a[_0xa567('0x59')]=_[_0xa567('0x46')](_0x52730a[_0xa567('0x44')],_0x52730a[_0xa567('0x45')]);_0x226397['attributes']=_[_0xa567('0x46')](_0x52730a['model'],qs['fields'](_0x569420['query'][_0xa567('0x48')]));_0x226397[_0xa567('0x47')]=_0x226397['attributes']['length']?_0x226397[_0xa567('0x47')]:_0x52730a['model'];if(!_0x569420[_0xa567('0x45')][_0xa567('0x67')](_0xa567('0x4a'))){_0x226397[_0xa567('0x2e')]=qs[_0xa567('0x2e')](_0x569420[_0xa567('0x45')][_0xa567('0x2e')]);_0x226397[_0xa567('0x2c')]=qs[_0xa567('0x2c')](_0x569420[_0xa567('0x45')]['offset']);}_0x226397[_0xa567('0x4b')]=qs[_0xa567('0x4c')](_0x569420['query'][_0xa567('0x4c')]);_0x226397[_0xa567('0x4d')]=qs[_0xa567('0x59')](_['pick'](_0x569420['query'],_0x52730a[_0xa567('0x59')]));_0x226397['where'][_0xa567('0x63')]=_0x1b6b51['id'];if(_0x569420[_0xa567('0x45')][_0xa567('0x68')]){_0x226397[_0xa567('0x4d')]=_[_0xa567('0x4f')](_0x226397[_0xa567('0x4d')],{'$or':_[_0xa567('0x3e')](_0x226397[_0xa567('0x47')],function(_0x1fcfb2){var _0x427790={};_0x427790[_0x1fcfb2]={'$like':'%'+_0x569420[_0xa567('0x45')][_0xa567('0x68')]+'%'};return _0x427790;})});}_0x226397=_[_0xa567('0x4f')]({},_0x226397,_0x569420[_0xa567('0x51')]);return db[_0xa567('0x64')][_0xa567('0x2f')]({'where':_0x226397[_0xa567('0x4d')]})['then'](function(_0x3ceeeb){_0x9a4a3f['count']=_0x3ceeeb;if(_0x569420[_0xa567('0x45')][_0xa567('0x52')]){_0x226397[_0xa567('0x53')]=[{'all':!![]}];}return db['Disposition'][_0xa567('0x54')](_0x226397);})[_0xa567('0x1e')](function(_0x11deda){_0x9a4a3f[_0xa567('0x55')]=_0x11deda;return _0x9a4a3f;});}})[_0xa567('0x1e')](respondWithFilteredResult(_0x3f3a0e,_0x226397))[_0xa567('0x29')](handleError(_0x3f3a0e,null));};exports['removeDispositions']=function(_0x5a6f23,_0xc4a1ba,_0x388067){return db[_0xa567('0x3f')][_0xa567('0x5a')]({'where':{'id':_0x5a6f23[_0xa567('0x57')]['id']}})[_0xa567('0x1e')](handleEntityNotFound(_0xc4a1ba,null))[_0xa567('0x1e')](function(_0x362278){if(_0x362278){return _0x362278[_0xa567('0x69')](_0x5a6f23[_0xa567('0x45')][_0xa567('0x6a')]);}})[_0xa567('0x1e')](respondWithStatusCode(_0xc4a1ba,null))['catch'](handleError(_0xc4a1ba,null));};exports[_0xa567('0x6b')]=function(_0xfe5dd7,_0x1eef0c,_0xe7fa6a){if(_0xfe5dd7[_0xa567('0x60')]['id']){delete _0xfe5dd7[_0xa567('0x60')]['id'];}return db[_0xa567('0x3f')][_0xa567('0x5a')]({'where':{'id':_0xfe5dd7['params']['id']}})[_0xa567('0x1e')](handleEntityNotFound(_0x1eef0c,null))[_0xa567('0x1e')](function(_0xa3090d){if(_0xa3090d){_0xfe5dd7[_0xa567('0x60')][_0xa567('0x63')]=_0xa3090d['id'];return db[_0xa567('0x6c')]['create'](_0xfe5dd7['body']);}})[_0xa567('0x1e')](respondWithResult(_0x1eef0c,null))[_0xa567('0x29')](handleError(_0x1eef0c,null));};exports['getAnswers']=function(_0x226c0f,_0x48d03b,_0x382b02){var _0x6bd8da={'raw':![],'where':{}};var _0x37be87={};var _0x34b705={'count':0x0,'rows':[]};return db[_0xa567('0x3f')][_0xa567('0x66')]({'where':{'id':_0x226c0f[_0xa567('0x57')]['id']}})[_0xa567('0x1e')](handleEntityNotFound(_0x48d03b,null))[_0xa567('0x1e')](function(_0x55d97b){if(_0x55d97b){_0x37be87[_0xa567('0x44')]=_[_0xa567('0x58')](db[_0xa567('0x6c')][_0xa567('0x40')]);_0x37be87[_0xa567('0x45')]=_['keys'](_0x226c0f[_0xa567('0x45')]);_0x37be87['filters']=_[_0xa567('0x46')](_0x37be87['model'],_0x37be87[_0xa567('0x45')]);_0x6bd8da[_0xa567('0x47')]=_[_0xa567('0x46')](_0x37be87['model'],qs[_0xa567('0x48')](_0x226c0f[_0xa567('0x45')][_0xa567('0x48')]));_0x6bd8da[_0xa567('0x47')]=_0x6bd8da['attributes'][_0xa567('0x49')]?_0x6bd8da[_0xa567('0x47')]:_0x37be87[_0xa567('0x44')];if(!_0x226c0f[_0xa567('0x45')]['hasOwnProperty'](_0xa567('0x4a'))){_0x6bd8da[_0xa567('0x2e')]=qs[_0xa567('0x2e')](_0x226c0f[_0xa567('0x45')][_0xa567('0x2e')]);_0x6bd8da[_0xa567('0x2c')]=qs[_0xa567('0x2c')](_0x226c0f['query'][_0xa567('0x2c')]);}_0x6bd8da['order']=qs[_0xa567('0x4c')](_0x226c0f['query'][_0xa567('0x4c')]);_0x6bd8da[_0xa567('0x4d')]=qs[_0xa567('0x59')](_['pick'](_0x226c0f['query'],_0x37be87[_0xa567('0x59')]));_0x6bd8da[_0xa567('0x4d')][_0xa567('0x63')]=_0x55d97b['id'];if(_0x226c0f[_0xa567('0x45')]['filter']){_0x6bd8da[_0xa567('0x4d')]=_[_0xa567('0x4f')](_0x6bd8da[_0xa567('0x4d')],{'$or':_[_0xa567('0x3e')](_0x6bd8da[_0xa567('0x47')],function(_0x50d401){var _0x2e6cc6={};_0x2e6cc6[_0x50d401]={'$like':'%'+_0x226c0f[_0xa567('0x45')][_0xa567('0x68')]+'%'};return _0x2e6cc6;})});}_0x6bd8da=_[_0xa567('0x4f')]({},_0x6bd8da,_0x226c0f[_0xa567('0x51')]);return db[_0xa567('0x6c')][_0xa567('0x2f')]({'where':_0x6bd8da[_0xa567('0x4d')]})[_0xa567('0x1e')](function(_0x50ea2a){_0x34b705[_0xa567('0x2f')]=_0x50ea2a;if(_0x226c0f['query']['includeAll']){_0x6bd8da[_0xa567('0x53')]=[{'all':!![]}];}return db[_0xa567('0x6c')]['findAll'](_0x6bd8da);})[_0xa567('0x1e')](function(_0x4c124d){_0x34b705['rows']=_0x4c124d;return _0x34b705;});}})['then'](respondWithFilteredResult(_0x48d03b,_0x6bd8da))[_0xa567('0x29')](handleError(_0x48d03b,null));};exports[_0xa567('0x6d')]=function(_0x5212d8,_0x2bae0,_0x5a7415){return db[_0xa567('0x3f')][_0xa567('0x5a')]({'where':{'id':_0x5212d8[_0xa567('0x57')]['id']}})[_0xa567('0x1e')](handleEntityNotFound(_0x2bae0,null))[_0xa567('0x1e')](function(_0x579c54){if(_0x579c54){return _0x579c54['removeAnswers'](_0x5212d8['query']['ids']);}})[_0xa567('0x1e')](respondWithStatusCode(_0x2bae0,null))[_0xa567('0x29')](handleError(_0x2bae0,null));};exports[_0xa567('0x6e')]=function(_0x30c141,_0x36ac31,_0x37a6f4){var _0x320e0d={'channel':_0xa567('0x6f')};var _0x595d48=[];var _0x351a1b=[];var _0x53ddcc={};return db['SmsAccount'][_0xa567('0x5a')]({'where':{'id':_0x30c141[_0xa567('0x57')]['id']},'include':[{'model':db[_0xa567('0x70')],'as':_0xa567('0x71')}]})[_0xa567('0x1e')](handleEntityNotFound(_0x36ac31,null))[_0xa567('0x1e')](function(_0x361433){_0x320e0d['account']=_0x361433;_0x320e0d[_0xa567('0x72')]=_[_0xa567('0x73')](_0x361433[_0xa567('0x71')],[_0xa567('0x74')],[_0xa567('0x75')]);if(_0x320e0d['account']['Applications']){delete _0x320e0d[_0xa567('0x76')][_0xa567('0x71')];}return db['CmContact'][_0xa567('0x61')]();})['then'](function(_0x379a3f){if(!_0x379a3f){throw new db[(_0xa567('0x77'))][(_0xa567('0x78'))]('no\x20available\x20attributes');}_0x595d48=_[_0xa567('0x79')](_['keys'](_0x379a3f),[_0xa567('0x7a'),_0xa567('0x7b')]);_0x351a1b=_['difference'](_[_0xa567('0x58')](_0x379a3f),[_0xa567('0x7a'),_0xa567('0x7b'),_0xa567('0x7c'),'ListId']);_0x320e0d[_0xa567('0x60')]={'mapKey':_0xa567('0x7d')};if(_0x320e0d['account'][_0xa567('0x42')]){switch(_0x320e0d[_0xa567('0x76')]['type']){case _0xa567('0x7e'):_0x320e0d[_0xa567('0x60')]['from']=_0x30c141[_0xa567('0x60')][_0xa567('0x7f')];_0x320e0d[_0xa567('0x60')][_0xa567('0x60')]=_0x30c141[_0xa567('0x60')][_0xa567('0x80')];_0x320e0d[_0xa567('0x60')][_0xa567('0x81')]=_0x30c141['body']['MessageSid'];break;case'skebby':_0x320e0d[_0xa567('0x60')]['from']='+'+_0x30c141[_0xa567('0x60')][_0xa567('0x82')];_0x320e0d[_0xa567('0x60')]['body']=_0x30c141['body'][_0xa567('0x83')];break;case _0xa567('0x84'):_0x320e0d[_0xa567('0x60')][_0xa567('0x85')]=_0x30c141[_0xa567('0x60')][_0xa567('0x85')];_0x320e0d['body'][_0xa567('0x60')]=_0x30c141['body'][_0xa567('0x26')];break;case'clicksend':_0x320e0d[_0xa567('0x60')][_0xa567('0x85')]=_0x30c141[_0xa567('0x60')][_0xa567('0x85')];_0x320e0d[_0xa567('0x60')]['body']=_0x30c141[_0xa567('0x60')][_0xa567('0x60')];_0x320e0d[_0xa567('0x60')][_0xa567('0x81')]=_0x30c141[_0xa567('0x60')][_0xa567('0x86')];break;case _0xa567('0x87'):_0x320e0d['body'][_0xa567('0x85')]=_0x30c141[_0xa567('0x60')]['From'];_0x320e0d['body'][_0xa567('0x60')]=_0x30c141[_0xa567('0x60')][_0xa567('0x88')];_0x320e0d[_0xa567('0x60')]['messageId']=_0x30c141[_0xa567('0x60')][_0xa567('0x89')];break;case'infobip':_0x320e0d[_0xa567('0x60')][_0xa567('0x85')]='+'+_0x30c141['body']['results'][0x0][_0xa567('0x85')];_0x320e0d[_0xa567('0x60')][_0xa567('0x60')]=_0x30c141[_0xa567('0x60')][_0xa567('0x8a')][0x0]['text'];_0x320e0d['body'][_0xa567('0x81')]=_0x30c141[_0xa567('0x60')]['results'][0x0]['messageId'];break;case _0xa567('0x8b'):_0x320e0d[_0xa567('0x60')][_0xa567('0x85')]=_0x30c141['body']['originatingAddress'];_0x320e0d[_0xa567('0x60')][_0xa567('0x60')]=_0x30c141[_0xa567('0x60')][_0xa567('0x8c')][_0xa567('0x26')];break;case _0xa567('0x8d'):_0x320e0d[_0xa567('0x60')][_0xa567('0x85')]=_0x30c141[_0xa567('0x60')][_0xa567('0x8e')];_0x320e0d[_0xa567('0x60')][_0xa567('0x60')]=_0x30c141[_0xa567('0x60')][_0xa567('0x83')];_0x320e0d[_0xa567('0x60')][_0xa567('0x81')]=_0x30c141[_0xa567('0x60')]['replyMessageId'];break;case'bandwidth':_0x320e0d[_0xa567('0x60')][_0xa567('0x81')]=_0x30c141[_0xa567('0x60')][0x0][_0xa567('0x26')]['id'];_0x320e0d[_0xa567('0x60')][_0xa567('0x85')]=_0x30c141[_0xa567('0x60')][0x0][_0xa567('0x26')][_0xa567('0x85')];_0x320e0d[_0xa567('0x60')][_0xa567('0x60')]=_0x30c141[_0xa567('0x60')][0x0][_0xa567('0x26')][_0xa567('0x83')];break;case _0xa567('0x8f'):_0x320e0d['body'][_0xa567('0x85')]=_0x30c141[_0xa567('0x60')][_0xa567('0x85')];_0x320e0d[_0xa567('0x60')][_0xa567('0x60')]=_0x30c141[_0xa567('0x60')][_0xa567('0x26')];_0x320e0d['body'][_0xa567('0x81')]=_0x30c141[_0xa567('0x60')][_0xa567('0x90')];break;}}if(_0x320e0d[_0xa567('0x60')]['id']){delete _0x320e0d['body']['id'];}if(_[_0xa567('0x91')](_0x320e0d[_0xa567('0x60')][_0xa567('0x85')])){throw new db[(_0xa567('0x77'))][(_0xa567('0x78'))](_0xa567('0x92'));}if(_[_0xa567('0x91')](_0x320e0d[_0xa567('0x60')][_0xa567('0x60')])||_0x320e0d['body'][_0xa567('0x60')]===''){throw new db['Sequelize']['ValidationError'](_0xa567('0x93'));}if(_[_0xa567('0x91')](_0x320e0d['body'][_0xa567('0x94')])){throw new db[(_0xa567('0x77'))]['ValidationError'](_0xa567('0x95')+_0x351a1b);}if(!_[_0xa567('0x96')](_0x351a1b,_0x320e0d['body'][_0xa567('0x94')])){throw new db[(_0xa567('0x77'))][(_0xa567('0x78'))](_0xa567('0x97')+_0x351a1b);}_0x53ddcc[_0x320e0d[_0xa567('0x60')][_0xa567('0x94')]]=_0x320e0d[_0xa567('0x60')]['from'];return db[_0xa567('0x98')][_0xa567('0x5a')]({'where':{'id':_0x320e0d[_0xa567('0x76')]['ListId']},'include':[{'model':db[_0xa567('0x99')],'as':'Contacts','where':_0x53ddcc,'limit':0x1,'order':[[_0xa567('0x7b'),'DESC']]}]});})['then'](handleEntityNotFound(_0x36ac31,null))[_0xa567('0x1e')](function(_0x57bbe3){if(_0x57bbe3){_0x320e0d[_0xa567('0x9a')]=_[_0xa567('0x9b')](_0x57bbe3,[_0xa567('0x9c')]);if(_0x57bbe3[_0xa567('0x9c')][_0xa567('0x49')]){return _0x57bbe3[_0xa567('0x9c')][0x0];}var _0x5e659b=_[_0xa567('0x17')](_0x320e0d[_0xa567('0x60')],{'firstName':_0x320e0d[_0xa567('0x60')]['from'],'ListId':_0x57bbe3['id']});_0x5e659b[_0x320e0d[_0xa567('0x60')][_0xa567('0x94')]]=_0x320e0d['body'][_0xa567('0x85')];return db[_0xa567('0x99')][_0xa567('0x5b')](_0x5e659b,{'fields':_0x595d48,'raw':!![]});}})[_0xa567('0x1e')](handleEntityNotFound(_0x36ac31,null))[_0xa567('0x1e')](function(_0x715f7d){if(_0x715f7d){_0x320e0d[_0xa567('0x9d')]=_0x715f7d;var _0x2d81ae={'ContactId':_0x715f7d['id'],'phone':_0x320e0d[_0xa567('0x60')]['from'],'SmsAccountId':_0x30c141[_0xa567('0x57')]['id']};var _0x4a3199={'ContactId':_0x715f7d['id'],'SmsAccountId':_0x30c141[_0xa567('0x57')]['id'],'closed':![]};return db['SmsInteraction'][_0xa567('0x5a')]({'where':_0x4a3199})[_0xa567('0x1e')](function(_0x411864){if(_0x411864){return[_0x411864,![]];}return db[_0xa567('0x9e')][_0xa567('0x5b')](_0x2d81ae)['then'](function(_0x5c6cf8){return[_0x5c6cf8,!![]];});});}})[_0xa567('0x9f')](function(_0x379597,_0x27ad93){_0x320e0d['interaction']=_0x379597[_0xa567('0x36')]({'plain':!![]});_0x320e0d[_0xa567('0xa0')][_0xa567('0xa1')]=![];if(_0x27ad93){if(_0x320e0d[_0xa567('0x76')][_0xa567('0xa2')]){_0x320e0d[_0xa567('0x72')]['push']({'id':0x0,'priority':_0x320e0d[_0xa567('0x72')]['length']+0x1,'app':_0xa567('0xa3'),'appdata':'unmanaged','interval':_0xa567('0xa4')});}_0x320e0d[_0xa567('0xa0')]['created']=!![];}return db['SmsMessage'][_0xa567('0x5b')]({'phone':_0x320e0d[_0xa567('0x60')][_0xa567('0x85')],'messageId':_0x320e0d[_0xa567('0x60')]['messageId'],'body':_0x320e0d[_0xa567('0x60')][_0xa567('0x60')],'SmsAccountId':_0x30c141[_0xa567('0x57')]['id'],'SmsInteractionId':_0x379597['id'],'direction':'in','ContactId':_0x379597[_0xa567('0xa5')],'AttachmentId':_0x320e0d[_0xa567('0x60')][_0xa567('0xa6')]});})[_0xa567('0x1e')](function(_0x2442c5){_0x320e0d[_0xa567('0x26')]=_0x2442c5;if(!_0x320e0d['interaction']['UserId'])return;return db[_0xa567('0xa7')][_0xa567('0x5a')]({'attributes':['id','name'],'where':{'id':_0x320e0d[_0xa567('0xa0')][_0xa567('0xa8')]}});})[_0xa567('0x1e')](function(_0x2c9319){if(_0x2c9319){_0x320e0d[_0xa567('0x72')][_0xa567('0xa9')]({'id':0x0,'priority':0x0,'app':_0xa567('0xaa'),'appdata':_0x2c9319[_0xa567('0x3b')]+','+(_0x320e0d[_0xa567('0x76')][_0xa567('0xab')]||0xa),'interval':_0xa567('0xa4')});}if(!_0x320e0d['interaction'][_0xa567('0xac')])return;return db[_0xa567('0xad')][_0xa567('0x5a')]({'attributes':['id','name'],'where':{'id':_0x320e0d[_0xa567('0xa0')][_0xa567('0xac')]}});})[_0xa567('0x1e')](function(_0x20e22f){if(_0x20e22f){_0x320e0d[_0xa567('0x72')][_0xa567('0xa9')]({'id':0x0,'priority':0x1,'app':_0xa567('0xae'),'appdata':_0x20e22f[_0xa567('0x3b')]+','+(_0x320e0d[_0xa567('0x76')][_0xa567('0xaf')]||0x12c),'interval':_0xa567('0xa4')});}return respondWithRpcPromise(_0xa567('0xb0'),_0xa567('0xb1'),_0x320e0d);})[_0xa567('0x1e')](function(_0x5de177){if(_0x5de177){var _0x39081d=0xc8;var _0x1bd6d5='receiveMessage';logger[_0xa567('0x27')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x1bd6d5,_0x39081d,'entity\x20found');logger[_0xa567('0x20')](_0xa567('0xb2'),_0x1bd6d5,_0x39081d,_0xa567('0xb3'),JSON[_0xa567('0x22')](_0x5de177));if(_0x320e0d[_0xa567('0x76')]['type']===_0xa567('0x7e')){return _0x36ac31[_0xa567('0x2a')](_0x39081d)[_0xa567('0x30')](_0xa567('0xb4'),_0xa567('0xb5'))[_0xa567('0x3c')](_0xa567('0xb6'));}else{return _0x36ac31['status'](_0x39081d)[_0xa567('0x2b')](_0x5de177);}}})[_0xa567('0x29')](handleError(_0x36ac31,null));};exports[_0xa567('0xb7')]=function(_0x298d75,_0x2aa134){var _0x1afefa=_0x298d75[_0xa567('0x57')]['id'];var _0x1a71b0=_0x298d75[_0xa567('0x60')];var _0x1025e9=0xc8;var _0x354a7f=null;return db['sequelize'][_0xa567('0xb8')]({'isolationLevel':db[_0xa567('0xb9')][_0xa567('0xba')][_0xa567('0xbb')][_0xa567('0xbc')]},function(_0x1c3f40){return db[_0xa567('0x3f')][_0xa567('0x66')]({'where':{'id':_0x1afefa},'transaction':_0x1c3f40})[_0xa567('0x1e')](function(_0x3a2467){if(_0x3a2467){return db[_0xa567('0x70')][_0xa567('0x35')]({'where':{'SmsAccountId':_0x1afefa},'transaction':_0x1c3f40})['then'](function(){var _0x5f0e5a=_['map'](_0x1a71b0,function(_0x33fc00){_0x33fc00[_0xa567('0x63')]=_0x1afefa;return _0x33fc00;});return db[_0xa567('0x70')][_0xa567('0xbd')](_0x5f0e5a,{'transaction':_0x1c3f40});});}else{_0x1025e9=0x194;_0x354a7f=[];}});})[_0xa567('0x1e')](function(){if(_0x1025e9!==0x194){return db[_0xa567('0x70')][_0xa567('0xbe')]({'where':{'SmsAccountId':_0x1afefa},'order':_0xa567('0x74')})[_0xa567('0x1e')](function(_0x44e8d8){_0x354a7f=_0x44e8d8;});}})[_0xa567('0x29')](function(_0x59c94e){_0x1025e9=0x1f4;logger[_0xa567('0x23')](_0x59c94e[_0xa567('0x3a')]);if(_0x59c94e['name']){delete _0x59c94e[_0xa567('0x3b')];}_0x354a7f=_0x59c94e;})[_0xa567('0xbf')](function(){if(_0x354a7f===null){_0x2aa134[_0xa567('0x39')](_0x1025e9);}else{if(_0x1025e9===0x1f4){_0x2aa134[_0xa567('0x2a')](_0x1025e9)[_0xa567('0x3c')](_0x354a7f);}else{_0x2aa134[_0xa567('0x2a')](_0x1025e9)['json'](_0x354a7f);}}});};exports[_0xa567('0xc0')]=function(_0x5748a6,_0x3e33b9,_0x2fc119){var _0x3a929e={};var _0x5f10ae={};var _0x224f70;var _0x39a23e;return db[_0xa567('0x3f')][_0xa567('0x66')]({'where':{'id':_0x5748a6[_0xa567('0x57')]['id']}})[_0xa567('0x1e')](handleEntityNotFound(_0x3e33b9,null))[_0xa567('0x1e')](function(_0x7ffc7b){if(_0x7ffc7b){_0x224f70=_0x7ffc7b;_0x5f10ae[_0xa567('0x44')]=_[_0xa567('0x58')](db[_0xa567('0x70')]['rawAttributes']);_0x5f10ae['query']=_[_0xa567('0x58')](_0x5748a6[_0xa567('0x45')]);_0x5f10ae[_0xa567('0x59')]=_['intersection'](_0x5f10ae[_0xa567('0x44')],_0x5f10ae[_0xa567('0x45')]);_0x3a929e[_0xa567('0x47')]=_[_0xa567('0x46')](_0x5f10ae[_0xa567('0x44')],qs[_0xa567('0x48')](_0x5748a6[_0xa567('0x45')][_0xa567('0x48')]));_0x3a929e[_0xa567('0x47')]=_0x3a929e[_0xa567('0x47')][_0xa567('0x49')]?_0x3a929e[_0xa567('0x47')]:_0x5f10ae['model'];_0x3a929e[_0xa567('0x4b')]=qs['sort'](_0x5748a6[_0xa567('0x45')]['sort']);_0x3a929e[_0xa567('0x4d')]=qs[_0xa567('0x59')](_[_0xa567('0x4e')](_0x5748a6[_0xa567('0x45')],_0x5f10ae[_0xa567('0x59')]));if(_0x5748a6[_0xa567('0x45')][_0xa567('0x68')]){_0x3a929e[_0xa567('0x4d')]=_[_0xa567('0x4f')](_0x3a929e[_0xa567('0x4d')],{'$or':_[_0xa567('0x3e')](_0x3a929e[_0xa567('0x47')],function(_0x480e3f){var _0x4ed978={};_0x4ed978[_0x480e3f]={'$like':'%'+_0x5748a6[_0xa567('0x45')][_0xa567('0x68')]+'%'};return _0x4ed978;})});}_0x3a929e=_[_0xa567('0x4f')]({},_0x3a929e,_0x5748a6[_0xa567('0x51')]);return _0x224f70['getApplications'](_0x3a929e);}})['then'](function(_0x2ad84c){if(_0x2ad84c){_0x39a23e=_0x2ad84c[_0xa567('0x49')];if(!_0x5748a6[_0xa567('0x45')]['hasOwnProperty'](_0xa567('0x4a'))){_0x3a929e[_0xa567('0x2e')]=qs[_0xa567('0x2e')](_0x5748a6['query'][_0xa567('0x2e')]);_0x3a929e[_0xa567('0x2c')]=qs[_0xa567('0x2c')](_0x5748a6[_0xa567('0x45')][_0xa567('0x2c')]);}return _0x224f70[_0xa567('0xc0')](_0x3a929e);}})[_0xa567('0x1e')](function(_0x487908){if(_0x487908){return _0x487908?{'count':_0x39a23e,'rows':_0x487908}:null;}})[_0xa567('0x1e')](respondWithResult(_0x3e33b9,null))[_0xa567('0x29')](handleError(_0x3e33b9,null));};exports[_0xa567('0xc1')]=function(_0x46b392,_0xbb05e,_0x284a07){var _0x115d31={'raw':![],'where':{}};var _0x7046ac={};var _0x171f96={'count':0x0,'rows':[]};return db[_0xa567('0x3f')]['findOne']({'where':{'id':_0x46b392['params']['id']}})[_0xa567('0x1e')](handleEntityNotFound(_0xbb05e,null))[_0xa567('0x1e')](function(_0x305bca){if(_0x305bca){_0x7046ac[_0xa567('0x44')]=_[_0xa567('0x58')](db[_0xa567('0x9e')]['rawAttributes']);_0x7046ac[_0xa567('0x45')]=_[_0xa567('0x58')](_0x46b392[_0xa567('0x45')]);_0x7046ac[_0xa567('0x59')]=_[_0xa567('0x46')](_0x7046ac[_0xa567('0x44')],_0x7046ac[_0xa567('0x45')]);_0x115d31['attributes']=_[_0xa567('0x46')](_0x7046ac['model'],qs['fields'](_0x46b392[_0xa567('0x45')][_0xa567('0x48')]));_0x115d31[_0xa567('0x47')]=_0x115d31[_0xa567('0x47')][_0xa567('0x49')]?_0x115d31['attributes']:_0x7046ac[_0xa567('0x44')];if(!_0x46b392[_0xa567('0x45')][_0xa567('0x67')](_0xa567('0x4a'))){_0x115d31[_0xa567('0x2e')]=qs[_0xa567('0x2e')](_0x46b392[_0xa567('0x45')]['limit']);_0x115d31['offset']=qs['offset'](_0x46b392[_0xa567('0x45')][_0xa567('0x2c')]);}_0x115d31[_0xa567('0x4b')]=qs[_0xa567('0x4c')](_0x46b392[_0xa567('0x45')]['sort']);_0x115d31[_0xa567('0x4d')]=qs['filters'](_[_0xa567('0x4e')](_0x46b392[_0xa567('0x45')],_0x7046ac[_0xa567('0x59')]));_0x115d31['where'][_0xa567('0x63')]=_0x305bca['id'];if(_0x46b392[_0xa567('0x45')][_0xa567('0x68')]){_0x115d31['where']=_[_0xa567('0x4f')](_0x115d31[_0xa567('0x4d')],{'$or':_[_0xa567('0x3e')](_0x115d31[_0xa567('0x47')],function(_0x49fa62){var _0x10e6d5={};_0x10e6d5[_0x49fa62]={'$like':'%'+_0x46b392[_0xa567('0x45')][_0xa567('0x68')]+'%'};return _0x10e6d5;})});}_0x115d31=_[_0xa567('0x4f')]({},_0x115d31,_0x46b392['options']);return db['SmsInteraction'][_0xa567('0x2f')]({'where':_0x115d31[_0xa567('0x4d')]})[_0xa567('0x1e')](function(_0x24b679){_0x171f96[_0xa567('0x2f')]=_0x24b679;if(_0x46b392['query']['includeAll']){_0x115d31[_0xa567('0x53')]=[{'model':db[_0xa567('0x99')],'as':_0xa567('0xc2'),'required':![]},{'model':db['User'],'as':_0xa567('0xc3'),'attributes':[_0xa567('0x3b'),_0xa567('0xc4'),_0xa567('0xc5')],'required':![]},{'model':db['Tag'],'as':_0xa567('0xc6'),'attributes':['id',_0xa567('0x3b'),'color'],'where':_0x46b392[_0xa567('0x45')][_0xa567('0xc7')]?{'id':_0x46b392[_0xa567('0x45')]['tag']}:undefined,'required':_0x46b392[_0xa567('0x45')][_0xa567('0xc7')]?!![]:![]}];}return db[_0xa567('0x9e')][_0xa567('0x54')](_0x115d31);})[_0xa567('0x1e')](function(_0x5c26ac){_0x171f96[_0xa567('0x55')]=_0x5c26ac;return _0x171f96;});}})[_0xa567('0x1e')](respondWithFilteredResult(_0xbb05e,_0x115d31))[_0xa567('0x29')](handleError(_0xbb05e,null));};exports[_0xa567('0x3c')]=function(_0x367c6f,_0x13f060,_0x5a2609){var _0x1b5616,_0x4bbfdc,_0x14b3d6;if(_[_0xa567('0x91')](_0x367c6f[_0xa567('0x60')]['body'])||_0x367c6f[_0xa567('0x60')][_0xa567('0x60')]===''){throw new db['Sequelize']['ValidationError'](_0xa567('0x93'));}if(_[_0xa567('0x91')](_0x367c6f[_0xa567('0x60')]['to'])){throw new db[(_0xa567('0x77'))][(_0xa567('0x78'))](_0xa567('0xc8'));}_0x1b5616=_0x367c6f[_0xa567('0x60')]['to'];return db['SmsAccount'][_0xa567('0x5a')]({'where':{'id':_0x367c6f[_0xa567('0x57')]['id']},'include':[{'model':db[_0xa567('0x98')],'as':_0xa567('0xc9'),'include':[{'model':db['CmContact'],'as':_0xa567('0x9c'),'where':{'mobile':_0x1b5616},'limit':0x1,'order':[[_0xa567('0x7b'),_0xa567('0xca')]]}]}]})[_0xa567('0x1e')](handleEntityNotFound(_0x13f060,null))[_0xa567('0x1e')](function(_0x8bb7f0){if(_0x8bb7f0&&_0x8bb7f0[_0xa567('0xc9')]){_0x4bbfdc=_0x8bb7f0['get']({'plain':!![]});if(_0x4bbfdc[_0xa567('0xc9')]&&_0x4bbfdc[_0xa567('0xc9')][_0xa567('0x9c')]['length']){return _0x4bbfdc[_0xa567('0xc9')][_0xa567('0x9c')][0x0];}return db['CmContact'][_0xa567('0x5b')](_['defaults'](_0x367c6f[_0xa567('0x60')],{'firstName':_0x1b5616,'mobile':_0x1b5616,'phone':_0x1b5616,'ListId':_0x4bbfdc[_0xa567('0xcb')]}));}})[_0xa567('0x1e')](handleEntityNotFound(_0x13f060,null))[_0xa567('0x1e')](function(_0x18c7bf){if(_0x18c7bf){_0x14b3d6=_0x18c7bf;return db['SmsInteraction']['find']({'where':{'ContactId':_0x14b3d6['id'],'closed':![],'SmsAccountId':_0x4bbfdc['id']}})[_0xa567('0x1e')](function(_0x5812c9){if(_0x5812c9){return[_0x5812c9,![]];}return db[_0xa567('0x9e')][_0xa567('0x5b')]({'UserId':_0x367c6f[_0xa567('0x5c')]['id'],'ContactId':_0x14b3d6['id'],'SmsAccountId':_0x4bbfdc['id'],'phone':_0x1b5616,'firstMsgDirection':_0xa567('0xcc'),'Messages':[_[_0xa567('0x4f')](_0x367c6f['body'],{'read':![],'body':_0x367c6f[_0xa567('0x60')]['body'],'phone':_0x1b5616,'SmsAccountId':_0x4bbfdc['id'],'UserId':_0x367c6f[_0xa567('0x5c')]['id'],'ContactId':_0x14b3d6['id']})]},{'include':[{'model':db[_0xa567('0xcd')],'as':_0xa567('0xce')}]})[_0xa567('0x1e')](function(_0x49ad1a){return[_0x49ad1a,!![]];});});}})['spread'](function(_0x4fdb05,_0x43bc14){if(_0x43bc14){return _0x4fdb05;}return db['SmsMessage']['create'](_[_0xa567('0x4f')](_0x367c6f[_0xa567('0x60')],{'read':![],'body':_0x367c6f['body'][_0xa567('0x60')],'phone':_0x1b5616,'SmsAccountId':_0x4bbfdc['id'],'SmsInteractionId':_0x4fdb05['id'],'UserId':_0x367c6f['user']['id'],'ContactId':_0x14b3d6['id']}))[_0xa567('0x1e')](function(_0x5ace7f){_0x4fdb05[_0xa567('0xcf')][_0xa567('0xce')]=[];_0x4fdb05[_0xa567('0xcf')][_0xa567('0xce')][_0xa567('0xd0')](_0x5ace7f[_0xa567('0xcf')]);return _0x4fdb05;});})[_0xa567('0x1e')](respondWithResult(_0x13f060,null))[_0xa567('0x29')](handleError(_0x13f060,null));};exports[_0xa567('0x2a')]=function(_0x4dfd63,_0x2d6a18,_0x53a711){if(_0x4dfd63[_0xa567('0x60')]['id']){delete _0x4dfd63[_0xa567('0x60')]['id'];}var _0x3240e6,_0x26358a,_0x49bc9c;return db[_0xa567('0x3f')][_0xa567('0x5a')]({'where':{'id':_0x4dfd63[_0xa567('0x57')]['id']}})['then'](handleEntityNotFound(_0x2d6a18,null))[_0xa567('0x1e')](function(_0x567ad9){if(_0x567ad9){_0x49bc9c=_0x567ad9;logger[_0xa567('0x20')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xa567('0x2a'),_0xa567('0xd1'),_0x567ad9[_0xa567('0x42')],util[_0xa567('0xd2')](_0x4dfd63[_0xa567('0x60')],{'showHidden':![],'depth':null}));switch(_0x567ad9[_0xa567('0x42')]){case _0xa567('0xd3'):if(_0x4dfd63[_0xa567('0x60')]['skebby_dispatch_id']&&_0x4dfd63[_0xa567('0x60')][_0xa567('0x2a')]){_0x26358a=_0x4dfd63[_0xa567('0x60')][_0xa567('0x2a')];return db[_0xa567('0xcd')][_0xa567('0x5a')]({'where':{'messageId':_0x4dfd63[_0xa567('0x60')][_0xa567('0xd4')]}});}break;case _0xa567('0x84'):if(_0x4dfd63[_0xa567('0x60')][_0xa567('0xd5')]&&_0x4dfd63[_0xa567('0x60')][_0xa567('0xd6')]){_0x26358a=_0x4dfd63[_0xa567('0x60')][_0xa567('0xd6')];return db[_0xa567('0xcd')][_0xa567('0x5a')]({'where':{'messageId':_0x4dfd63[_0xa567('0x60')][_0xa567('0xd5')]}});}break;case _0xa567('0xd7'):if(_0x4dfd63[_0xa567('0x60')][_0xa567('0x86')]&&_0x4dfd63['body'][_0xa567('0xd8')]){_0x26358a=_0x4dfd63[_0xa567('0x60')]['status_code'];return db['SmsMessage'][_0xa567('0x5a')]({'where':{'messageId':_0x4dfd63[_0xa567('0x60')][_0xa567('0x86')]}});}break;case _0xa567('0xd9'):var _0x4873ac=_0x4dfd63[_0xa567('0x60')]['results'][0x0];if(_0x4873ac[_0xa567('0x81')]&&_0x4873ac[_0xa567('0x2a')][_0xa567('0xda')]==='DELIVERED'){_0x26358a=_0x4873ac[_0xa567('0x2a')][_0xa567('0xda')];return db[_0xa567('0xcd')][_0xa567('0x5a')]({'where':{'messageId':_0x4873ac[_0xa567('0x81')]}});}break;case _0xa567('0x8d'):if(_0x4dfd63[_0xa567('0x60')][_0xa567('0x81')]&&_0x4dfd63[_0xa567('0x60')][_0xa567('0x2a')]){_0x26358a=_0x4dfd63[_0xa567('0x60')][_0xa567('0x2a')];return db[_0xa567('0xcd')][_0xa567('0x5a')]({'where':{'messageId':_0x4dfd63['body'][_0xa567('0x81')]}});}break;case _0xa567('0xdb'):if(_0x4dfd63[_0xa567('0x60')][0x0][_0xa567('0x26')]['id']){_0x26358a=_0x4dfd63[_0xa567('0x60')][0x0][_0xa567('0x42')];return db[_0xa567('0xcd')]['find']({'where':{'messageId':_0x4dfd63[_0xa567('0x60')][0x0][_0xa567('0x26')]['id']}});}break;case'intelepeer':if(_0x4dfd63[_0xa567('0x60')][_0xa567('0xdc')]&&_0x4dfd63[_0xa567('0x60')][_0xa567('0x2a')]){_0x26358a=_0x4dfd63[_0xa567('0x60')][_0xa567('0x2a')];return db['SmsMessage']['find']({'where':{'messageId':_0x4dfd63['body'][_0xa567('0xdc')]}});}break;}}})['then'](handleEntityNotFound(_0x2d6a18,null))[_0xa567('0x1e')](function(_0x52267a){if(_0x52267a){_0x3240e6=_0x52267a;switch(_0x49bc9c[_0xa567('0x42')]){case _0xa567('0xd3'):if(_0x26358a===_0xa567('0xdd')){return _0x3240e6[_0xa567('0x34')]({'read':!![]});}else{logger[_0xa567('0x23')](_0xa567('0x21'),_0xa567('0x2a'),_0xa567('0xd3'),util[_0xa567('0xd2')](_0x4dfd63[_0xa567('0x60')],{'showHidden':![],'depth':null}));}break;case _0xa567('0x84'):if(_0x26358a==='1'){return _0x3240e6['update']({'read':!![]});}else{logger[_0xa567('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xa567('0x2a'),'skebby',util[_0xa567('0xd2')](_0x4dfd63['body'],{'showHidden':![],'depth':null}));}break;case _0xa567('0xd7'):if(!_0x4dfd63[_0xa567('0x60')]['error_code']&&_0x26358a>=0xc8&&_0x26358a<=0xce){return _0x3240e6[_0xa567('0x34')]({'read':!![]});}else{logger[_0xa567('0x23')](_0xa567('0x21'),_0xa567('0x2a'),'clicksend',util[_0xa567('0xd2')](_0x4dfd63[_0xa567('0x60')],{'showHidden':![],'depth':null}));}break;case _0xa567('0xd9'):var _0xcdec53=_0x4dfd63[_0xa567('0x60')][_0xa567('0x8a')][0x0];if(_0xcdec53['status']['groupName']===_0xa567('0xdd')){return _0x3240e6['update']({'read':!![]});}else{logger['error'](_0xa567('0x21'),_0xa567('0x2a'),_0xa567('0xd9'),util[_0xa567('0xd2')](_0x4dfd63[_0xa567('0x60')],{'showHidden':![],'depth':null}));}break;case _0xa567('0x8d'):if(_0x26358a==_0xa567('0xde')||_0x26358a==_0xa567('0xdf')){return _0x3240e6[_0xa567('0x34')]({'read':!![]});}else{logger[_0xa567('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xa567('0x2a'),_0xa567('0x8d'),util[_0xa567('0xd2')](_0x4dfd63['body'],{'showHidden':![],'depth':null}));}break;case _0xa567('0xdb'):if(_0x26358a=='message-delivered'){return _0x3240e6['update']({'read':!![]});}else{logger[_0xa567('0x23')](_0xa567('0x21'),_0xa567('0x2a'),_0xa567('0xdb'),util[_0xa567('0xd2')](_0x4dfd63['body'],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x26358a===_0xa567('0xe0')||_0x26358a===_0xa567('0xe1')){return _0x3240e6[_0xa567('0x34')]({'read':!![]});}else{logger[_0xa567('0x23')](_0xa567('0x21'),_0xa567('0x2a'),'intelepeer',util[_0xa567('0xd2')](_0x4dfd63[_0xa567('0x60')],{'showHidden':![],'depth':null}));}break;}return _0x3240e6;}})[_0xa567('0x1e')](respondWithResult(_0x2d6a18,null))[_0xa567('0x29')](handleError(_0x2d6a18,null));};exports[_0xa567('0xe2')]=function(_0xf00936,_0x5e4a4b,_0x389f4b){var _0x172213,_0xa2764e,_0x3415e4;return db[_0xa567('0x3f')][_0xa567('0x5a')]({'where':{'id':_0xf00936[_0xa567('0x57')]['id']}})[_0xa567('0x1e')](handleEntityNotFound(_0x5e4a4b,null))[_0xa567('0x1e')](function(_0x517365){if(_0x517365){_0x3415e4=_0x517365;logger[_0xa567('0x20')](_0xa567('0x21'),'status',_0xa567('0xd1'),_0x517365['type'],util[_0xa567('0xd2')](_0xf00936[_0xa567('0x45')],{'showHidden':![],'depth':null}));switch(_0x517365[_0xa567('0x42')]){case'csc':if(_0xf00936[_0xa567('0x45')][_0xa567('0xe3')]&&_0xf00936['query']['state']){_0xa2764e=_0xf00936[_0xa567('0x45')][_0xa567('0xe4')];return db[_0xa567('0xcd')]['find']({'where':{'messageId':_0xf00936[_0xa567('0x45')][_0xa567('0xe3')]}});}break;}}})['then'](handleEntityNotFound(_0x5e4a4b,null))[_0xa567('0x1e')](function(_0x577e25){if(_0x577e25){_0x172213=_0x577e25;switch(_0x3415e4['type']){case _0xa567('0x8b'):if(_0xa2764e==='2'||_0xa2764e==='6'){return _0x172213['update']({'read':!![]});}else{logger[_0xa567('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xa567('0x2a'),_0xa567('0x8b'),util[_0xa567('0xd2')](_0xf00936[_0xa567('0x45')],{'showHidden':![],'depth':null}));};break;}return _0x172213;}})['then'](respondWithResult(_0x5e4a4b,null))[_0xa567('0x29')](handleError(_0x5e4a4b,null));};exports[_0xa567('0xe5')]=function(_0x1e1e74,_0xc3c263,_0xec0029){return db[_0xa567('0x3f')][_0xa567('0x5a')]({'where':{'id':_0x1e1e74[_0xa567('0x57')]['id']}})[_0xa567('0x1e')](handleEntityNotFound(_0xc3c263,null))[_0xa567('0x1e')](function(_0x4dcf8b){if(_0x4dcf8b){return _0x4dcf8b[_0xa567('0xe5')](_0x1e1e74[_0xa567('0x60')][_0xa567('0x6a')],_['omit'](_0x1e1e74[_0xa567('0x60')],[_0xa567('0x6a'),'id'])||{})[_0xa567('0x9f')](function(_0x5c00fb){for(var _0x3b069d=0x0;_0x3b069d<_0x1e1e74[_0xa567('0x60')][_0xa567('0x6a')]['length'];_0x3b069d+=0x1){socket[_0xa567('0xe6')](_0xa567('0xe7'),{'UserId':Number(_0x1e1e74[_0xa567('0x60')]['ids'][_0x3b069d]),'SmsAccountId':Number(_0x1e1e74[_0xa567('0x57')]['id'])});}return _0x5c00fb;});}})[_0xa567('0x1e')](respondWithResult(_0xc3c263,null))[_0xa567('0x29')](handleError(_0xc3c263,null));};exports[_0xa567('0xe8')]=function(_0x1a3d0b,_0x2c24b0,_0x437174){return db[_0xa567('0x3f')][_0xa567('0x5a')]({'where':{'id':_0x1a3d0b['params']['id']}})[_0xa567('0x1e')](handleEntityNotFound(_0x2c24b0,null))['then'](function(_0x4aa99c){if(_0x4aa99c){return _0x4aa99c[_0xa567('0xe8')](_0x1a3d0b[_0xa567('0x45')]['ids'])[_0xa567('0x1e')](function(){if(_[_0xa567('0xe9')](_0x1a3d0b[_0xa567('0x45')][_0xa567('0x6a')])){for(var _0x472193=0x0;_0x472193<_0x1a3d0b['query'][_0xa567('0x6a')][_0xa567('0x49')];_0x472193+=0x1){socket['emit']('userSmsAccount:remove',{'UserId':Number(_0x1a3d0b['query'][_0xa567('0x6a')][_0x472193]),'SmsAccountId':Number(_0x1a3d0b[_0xa567('0x57')]['id'])});}}else{socket[_0xa567('0xe6')](_0xa567('0xea'),{'UserId':Number(_0x1a3d0b[_0xa567('0x45')][_0xa567('0x6a')]),'SmsAccountId':Number(_0x1a3d0b[_0xa567('0x57')]['id'])});}});}})['then'](respondWithStatusCode(_0x2c24b0,null))[_0xa567('0x29')](handleError(_0x2c24b0,null));};exports[_0xa567('0xeb')]=function(_0x374b3d,_0xcdfbb5,_0x50ff93){var _0x36d1de={};var _0x1afa87={};var _0x30a45d;var _0x12addd;return db[_0xa567('0x3f')]['findOne']({'where':{'id':_0x374b3d[_0xa567('0x57')]['id']}})[_0xa567('0x1e')](handleEntityNotFound(_0xcdfbb5,null))[_0xa567('0x1e')](function(_0x6900c6){if(_0x6900c6){_0x30a45d=_0x6900c6;_0x1afa87[_0xa567('0x44')]=_[_0xa567('0x58')](db[_0xa567('0xa7')][_0xa567('0x40')]);_0x1afa87[_0xa567('0x45')]=_[_0xa567('0x58')](_0x374b3d['query']);_0x1afa87[_0xa567('0x59')]=_[_0xa567('0x46')](_0x1afa87[_0xa567('0x44')],_0x1afa87[_0xa567('0x45')]);_0x36d1de[_0xa567('0x47')]=_[_0xa567('0x46')](_0x1afa87[_0xa567('0x44')],qs[_0xa567('0x48')](_0x374b3d['query'][_0xa567('0x48')]));_0x36d1de['attributes']=_0x36d1de[_0xa567('0x47')][_0xa567('0x49')]?_0x36d1de['attributes']:_0x1afa87[_0xa567('0x44')];_0x36d1de[_0xa567('0x4b')]=qs[_0xa567('0x4c')](_0x374b3d[_0xa567('0x45')][_0xa567('0x4c')]);_0x36d1de[_0xa567('0x4d')]=qs['filters'](_[_0xa567('0x4e')](_0x374b3d[_0xa567('0x45')],_0x1afa87['filters']));if(_0x374b3d[_0xa567('0x45')]['filter']){_0x36d1de[_0xa567('0x4d')]=_[_0xa567('0x4f')](_0x36d1de['where'],{'$or':_[_0xa567('0x3e')](_0x36d1de[_0xa567('0x47')],function(_0x4eff40){var _0x15989f={};_0x15989f[_0x4eff40]={'$like':'%'+_0x374b3d[_0xa567('0x45')][_0xa567('0x68')]+'%'};return _0x15989f;})});}_0x36d1de=_[_0xa567('0x4f')]({},_0x36d1de,_0x374b3d[_0xa567('0x51')]);return _0x30a45d[_0xa567('0xeb')](_0x36d1de);}})['then'](function(_0x29deb7){if(_0x29deb7){_0x12addd=_0x29deb7['length'];if(!_0x374b3d[_0xa567('0x45')][_0xa567('0x67')](_0xa567('0x4a'))){_0x36d1de['limit']=qs[_0xa567('0x2e')](_0x374b3d[_0xa567('0x45')][_0xa567('0x2e')]);_0x36d1de[_0xa567('0x2c')]=qs[_0xa567('0x2c')](_0x374b3d['query']['offset']);}return _0x30a45d[_0xa567('0xeb')](_0x36d1de);}})[_0xa567('0x1e')](function(_0x52cc06){if(_0x52cc06){return _0x52cc06?{'count':_0x12addd,'rows':_0x52cc06}:null;}})[_0xa567('0x1e')](respondWithResult(_0xcdfbb5,null))['catch'](handleError(_0xcdfbb5,null));};
\ No newline at end of file
index c928cb3..d69ee78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf84e=['setMaxListeners','save','remove','emit','hasOwnProperty','events','../../mysqldb','SmsAccount'];(function(_0x2b6889,_0x1cb53a){var _0x116ab2=function(_0x2dbb5a){while(--_0x2dbb5a){_0x2b6889['push'](_0x2b6889['shift']());}};_0x116ab2(++_0x1cb53a);}(_0xf84e,0xf5));var _0xef84=function(_0x3dae40,_0x5ac8fb){_0x3dae40=_0x3dae40-0x0;var _0x4a3858=_0xf84e[_0x3dae40];return _0x4a3858;};'use strict';var EventEmitter=require(_0xef84('0x0'));var SmsAccount=require(_0xef84('0x1'))['db'][_0xef84('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xef84('0x3')](0x0);var events={'afterCreate':_0xef84('0x4'),'afterUpdate':'update','afterDestroy':_0xef84('0x5')};function emitEvent(_0x1a153e){return function(_0x121557,_0x466728,_0xb1cd5d){SmsAccountEvents['emit'](_0x1a153e+':'+_0x121557['id'],_0x121557);SmsAccountEvents[_0xef84('0x6')](_0x1a153e,_0x121557);_0xb1cd5d(null);};}for(var e in events){if(events[_0xef84('0x7')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module['exports']=SmsAccountEvents;
\ No newline at end of file
+var _0xa2dc=['emit','hasOwnProperty','../../mysqldb','SmsAccount','setMaxListeners','remove'];(function(_0x594d7a,_0x3b313f){var _0x3f32e6=function(_0x5bb756){while(--_0x5bb756){_0x594d7a['push'](_0x594d7a['shift']());}};_0x3f32e6(++_0x3b313f);}(_0xa2dc,0xfe));var _0xca2d=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0xa2dc[_0x297fd3];return _0x2af381;};'use strict';var EventEmitter=require('events');var SmsAccount=require(_0xca2d('0x0'))['db'][_0xca2d('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xca2d('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xca2d('0x3')};function emitEvent(_0x5b2bfb){return function(_0x4a1cfb,_0x43be0d,_0x2bdf6e){SmsAccountEvents[_0xca2d('0x4')](_0x5b2bfb+':'+_0x4a1cfb['id'],_0x4a1cfb);SmsAccountEvents[_0xca2d('0x4')](_0x5b2bfb,_0x4a1cfb);_0x2bdf6e(null);};}for(var e in events){if(events[_0xca2d('0x5')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module['exports']=SmsAccountEvents;
\ No newline at end of file
index 4e69175..0add7c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c66=['bluebird','request-promise','path','rimraf','./smsAccount.attributes','exports','define','SmsAccount','sms_accounts','lodash','../../config/logger'];(function(_0x4c4037,_0x15054b){var _0x357862=function(_0x480015){while(--_0x480015){_0x4c4037['push'](_0x4c4037['shift']());}};_0x357862(++_0x15054b);}(_0x1c66,0xc4));var _0x61c6=function(_0xd016b3,_0x19d0f8){_0xd016b3=_0xd016b3-0x0;var _0x3f2a46=_0x1c66[_0xd016b3];return _0x3f2a46;};'use strict';var _=require(_0x61c6('0x0'));var util=require('util');var logger=require(_0x61c6('0x1'))('api');var moment=require('moment');var BPromise=require(_0x61c6('0x2'));var rp=require(_0x61c6('0x3'));var fs=require('fs');var path=require(_0x61c6('0x4'));var rimraf=require(_0x61c6('0x5'));var config=require('../../config/environment');var attributes=require(_0x61c6('0x6'));module[_0x61c6('0x7')]=function(_0x30bc5d,_0x37dd0a){return _0x30bc5d[_0x61c6('0x8')](_0x61c6('0x9'),attributes,{'tableName':_0x61c6('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1f55=['exports','define','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x350343,_0x256f69){var _0x9afc1c=function(_0x47ab32){while(--_0x47ab32){_0x350343['push'](_0x350343['shift']());}};_0x9afc1c(++_0x256f69);}(_0x1f55,0x136));var _0x51f5=function(_0x14f605,_0x10f628){_0x14f605=_0x14f605-0x0;var _0x4ecaa2=_0x1f55[_0x14f605];return _0x4ecaa2;};'use strict';var _=require(_0x51f5('0x0'));var util=require(_0x51f5('0x1'));var logger=require('../../config/logger')(_0x51f5('0x2'));var moment=require(_0x51f5('0x3'));var BPromise=require(_0x51f5('0x4'));var rp=require(_0x51f5('0x5'));var fs=require('fs');var path=require(_0x51f5('0x6'));var rimraf=require(_0x51f5('0x7'));var config=require(_0x51f5('0x8'));var attributes=require('./smsAccount.attributes');module[_0x51f5('0x9')]=function(_0x2811c1,_0x10e9c5){return _0x2811c1[_0x51f5('0xa')]('SmsAccount',attributes,{'tableName':'sms_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 414c2ac..6b60798 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa192=['find','options','raw','where','attributes','map','include','model','then','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','defaults','redis','localhost','socket.io-emitter','./smsAccount.socket','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','ShowSmsAccount','SmsAccount'];(function(_0x16c974,_0xad66cb){var _0x4dc29c=function(_0x471c40){while(--_0x471c40){_0x16c974['push'](_0x16c974['shift']());}};_0x4dc29c(++_0xad66cb);}(_0xa192,0x157));var _0x2a19=function(_0x10a2bf,_0x21f48b){_0x10a2bf=_0x10a2bf-0x0;var _0x2224db=_0xa192[_0x10a2bf];return _0x2224db;};'use strict';var _=require(_0x2a19('0x0'));var util=require(_0x2a19('0x1'));var moment=require(_0x2a19('0x2'));var BPromise=require(_0x2a19('0x3'));var rs=require(_0x2a19('0x4'));var fs=require('fs');var Redis=require(_0x2a19('0x5'));var db=require(_0x2a19('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x2a19('0x7'))(_0x2a19('0x8'));var config=require(_0x2a19('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x2a19('0xa')]({'port':0x232a});config['redis']=_[_0x2a19('0xb')](config[_0x2a19('0xc')],{'host':_0x2a19('0xd'),'port':0x18eb});var socket=require(_0x2a19('0xe'))(new Redis(config['redis']));require(_0x2a19('0xf'))['register'](socket);function respondWithRpcPromise(_0x1b46e8,_0x1c2161,_0x4e81ce){return new BPromise(function(_0x1ee3c4,_0x40f35e){return client['request'](_0x1b46e8,_0x4e81ce)['then'](function(_0x25ffdb){logger[_0x2a19('0x10')](_0x2a19('0x11'),_0x1c2161,_0x2a19('0x12'));logger[_0x2a19('0x13')](_0x2a19('0x14'),_0x1c2161,_0x2a19('0x12'),JSON[_0x2a19('0x15')](_0x25ffdb));if(_0x25ffdb[_0x2a19('0x16')]){if(_0x25ffdb[_0x2a19('0x16')]['code']===0x1f4){logger['error'](_0x2a19('0x11'),_0x1c2161,_0x25ffdb[_0x2a19('0x16')][_0x2a19('0x17')]);return _0x40f35e(_0x25ffdb[_0x2a19('0x16')]['message']);}logger['error'](_0x2a19('0x11'),_0x1c2161,_0x25ffdb['error'][_0x2a19('0x17')]);return _0x1ee3c4(_0x25ffdb[_0x2a19('0x16')][_0x2a19('0x17')]);}else{logger[_0x2a19('0x10')](_0x2a19('0x11'),_0x1c2161,'request\x20sent');_0x1ee3c4(_0x25ffdb[_0x2a19('0x18')]['message']);}})['catch'](function(_0x593ac4){logger[_0x2a19('0x16')]('SmsAccount,\x20%s,\x20%s',_0x1c2161,_0x593ac4);_0x40f35e(_0x593ac4);});});}exports[_0x2a19('0x19')]=function(_0x22c001){var _0x16a6a1=this;return new Promise(function(_0x43ae96,_0x2ebaa2){return db[_0x2a19('0x1a')][_0x2a19('0x1b')]({'raw':_0x22c001[_0x2a19('0x1c')]?_0x22c001[_0x2a19('0x1c')][_0x2a19('0x1d')]===undefined?!![]:![]:!![],'where':_0x22c001[_0x2a19('0x1c')]?_0x22c001[_0x2a19('0x1c')][_0x2a19('0x1e')]||null:null,'attributes':_0x22c001['options']?_0x22c001[_0x2a19('0x1c')][_0x2a19('0x1f')]||null:null,'include':_0x22c001[_0x2a19('0x1c')]?_0x22c001[_0x2a19('0x1c')]['include']?_[_0x2a19('0x20')](_0x22c001[_0x2a19('0x1c')][_0x2a19('0x21')],function(_0xe6e955){return{'model':db[_0xe6e955[_0x2a19('0x22')]],'as':_0xe6e955['as'],'attributes':_0xe6e955[_0x2a19('0x1f')],'include':_0xe6e955['include']?_['map'](_0xe6e955['include'],function(_0x27e091){return{'model':db[_0x27e091[_0x2a19('0x22')]],'as':_0x27e091['as'],'attributes':_0x27e091[_0x2a19('0x1f')],'include':_0x27e091[_0x2a19('0x21')]?_['map'](_0x27e091[_0x2a19('0x21')],function(_0x4e9b0c){return{'model':db[_0x4e9b0c[_0x2a19('0x22')]],'as':_0x4e9b0c['as'],'attributes':_0x4e9b0c[_0x2a19('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x2a19('0x23')](function(_0x542070){logger[_0x2a19('0x10')](_0x2a19('0x19'),_0x22c001);logger[_0x2a19('0x13')]('ShowSmsAccount',_0x22c001,JSON[_0x2a19('0x15')](_0x542070));_0x43ae96(_0x542070);})[_0x2a19('0x24')](function(_0x1e85d5){logger[_0x2a19('0x16')]('ShowSmsAccount',_0x1e85d5[_0x2a19('0x17')],_0x22c001);_0x2ebaa2(_0x16a6a1[_0x2a19('0x16')](0x1f4,_0x1e85d5['message']));});});};
\ No newline at end of file
+var _0x802d=['util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./smsAccount.socket','request','info','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','code','error','SmsAccount,\x20%s,\x20%s','message','catch','SmsAccount','find','options','raw','where','attributes','include','model','map','then','ShowSmsAccount','stringify','lodash'];(function(_0x28c328,_0x4a7238){var _0x4b9604=function(_0x55183f){while(--_0x55183f){_0x28c328['push'](_0x28c328['shift']());}};_0x4b9604(++_0x4a7238);}(_0x802d,0xe9));var _0xd802=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0x802d[_0x9df060];return _0x338dfe;};'use strict';var _=require(_0xd802('0x0'));var util=require(_0xd802('0x1'));var moment=require(_0xd802('0x2'));var BPromise=require(_0xd802('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd802('0x4'));var db=require(_0xd802('0x5'))['db'];var utils=require(_0xd802('0x6'));var logger=require(_0xd802('0x7'))(_0xd802('0x8'));var config=require('../../config/environment');var jayson=require(_0xd802('0x9'));var client=jayson[_0xd802('0xa')][_0xd802('0xb')]({'port':0x232a});config[_0xd802('0xc')]=_[_0xd802('0xd')](config[_0xd802('0xc')],{'host':_0xd802('0xe'),'port':0x18eb});var socket=require(_0xd802('0xf'))(new Redis(config[_0xd802('0xc')]));require(_0xd802('0x10'))['register'](socket);function respondWithRpcPromise(_0x4458d4,_0x30b67a,_0x170cac){return new BPromise(function(_0x9e1661,_0x3772b1){return client[_0xd802('0x11')](_0x4458d4,_0x170cac)['then'](function(_0x1fa98b){logger[_0xd802('0x12')]('SmsAccount,\x20%s,\x20%s',_0x30b67a,_0xd802('0x13'));logger[_0xd802('0x14')](_0xd802('0x15'),_0x30b67a,'request\x20sent',JSON['stringify'](_0x1fa98b));if(_0x1fa98b['error']){if(_0x1fa98b['error'][_0xd802('0x16')]===0x1f4){logger[_0xd802('0x17')](_0xd802('0x18'),_0x30b67a,_0x1fa98b[_0xd802('0x17')][_0xd802('0x19')]);return _0x3772b1(_0x1fa98b['error']['message']);}logger[_0xd802('0x17')](_0xd802('0x18'),_0x30b67a,_0x1fa98b[_0xd802('0x17')]['message']);return _0x9e1661(_0x1fa98b[_0xd802('0x17')]['message']);}else{logger['info'](_0xd802('0x18'),_0x30b67a,'request\x20sent');_0x9e1661(_0x1fa98b['result'][_0xd802('0x19')]);}})[_0xd802('0x1a')](function(_0x2b1da6){logger[_0xd802('0x17')](_0xd802('0x18'),_0x30b67a,_0x2b1da6);_0x3772b1(_0x2b1da6);});});}exports['ShowSmsAccount']=function(_0x1f2a9f){var _0x3131ca=this;return new Promise(function(_0x3cd237,_0x3a1f8f){return db[_0xd802('0x1b')][_0xd802('0x1c')]({'raw':_0x1f2a9f[_0xd802('0x1d')]?_0x1f2a9f[_0xd802('0x1d')][_0xd802('0x1e')]===undefined?!![]:![]:!![],'where':_0x1f2a9f[_0xd802('0x1d')]?_0x1f2a9f[_0xd802('0x1d')][_0xd802('0x1f')]||null:null,'attributes':_0x1f2a9f[_0xd802('0x1d')]?_0x1f2a9f[_0xd802('0x1d')][_0xd802('0x20')]||null:null,'include':_0x1f2a9f[_0xd802('0x1d')]?_0x1f2a9f[_0xd802('0x1d')][_0xd802('0x21')]?_['map'](_0x1f2a9f[_0xd802('0x1d')][_0xd802('0x21')],function(_0x42fb59){return{'model':db[_0x42fb59[_0xd802('0x22')]],'as':_0x42fb59['as'],'attributes':_0x42fb59[_0xd802('0x20')],'include':_0x42fb59['include']?_[_0xd802('0x23')](_0x42fb59[_0xd802('0x21')],function(_0x52503a){return{'model':db[_0x52503a[_0xd802('0x22')]],'as':_0x52503a['as'],'attributes':_0x52503a[_0xd802('0x20')],'include':_0x52503a[_0xd802('0x21')]?_[_0xd802('0x23')](_0x52503a['include'],function(_0x1dbb59){return{'model':db[_0x1dbb59[_0xd802('0x22')]],'as':_0x1dbb59['as'],'attributes':_0x1dbb59[_0xd802('0x20')]};}):[]};}):[]};}):[]:[]})[_0xd802('0x24')](function(_0x1b7c9c){logger[_0xd802('0x12')]('ShowSmsAccount',_0x1f2a9f);logger[_0xd802('0x14')](_0xd802('0x25'),_0x1f2a9f,JSON[_0xd802('0x26')](_0x1b7c9c));_0x3cd237(_0x1b7c9c);})[_0xd802('0x1a')](function(_0xe9aee9){logger['error'](_0xd802('0x25'),_0xe9aee9[_0xd802('0x19')],_0x1f2a9f);_0x3a1f8f(_0x3131ca['error'](0x1f4,_0xe9aee9[_0xd802('0x19')]));});});};
\ No newline at end of file
index 12c46ea..6aacfbf 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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'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(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'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 42b713e..7768695 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
+var _0x34e8=['../../config/environment','./smsApplication.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x5316c9,_0x1599b8){var _0x4b7507=function(_0x49dc0c){while(--_0x49dc0c){_0x5316c9['push'](_0x5316c9['shift']());}};_0x4b7507(++_0x1599b8);}(_0x34e8,0x12c));var _0x834e=function(_0x5d13a1,_0xa09e0b){_0x5d13a1=_0x5d13a1-0x0;var _0x4ab8e3=_0x34e8[_0x5d13a1];return _0x4ab8e3;};'use strict';var multer=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var path=require(_0x834e('0x2'));var timeout=require(_0x834e('0x3'));var express=require('express');var router=express[_0x834e('0x4')]();var fs_extra=require(_0x834e('0x5'));var auth=require(_0x834e('0x6'));var interaction=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var controller=require(_0x834e('0x9'));router[_0x834e('0xa')]('/',auth['isAuthenticated'](),controller[_0x834e('0xb')]);router['get'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0xe')]);router[_0x834e('0xf')]('/',auth[_0x834e('0xd')](),controller[_0x834e('0x10')]);router[_0x834e('0x11')](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0x12')]);router[_0x834e('0x13')](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0x14')]);module[_0x834e('0x15')]=router;
\ No newline at end of file
index 37860ff..d80c2d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e8=['INTEGER','noop','TEXT','STRING','*,*,*,*','exports'];(function(_0x2f48a7,_0x54ea3c){var _0x3546f6=function(_0x2323d4){while(--_0x2323d4){_0x2f48a7['push'](_0x2f48a7['shift']());}};_0x3546f6(++_0x54ea3c);}(_0x93e8,0xd7));var _0x893e=function(_0x40220a,_0x22feb1){_0x40220a=_0x40220a-0x0;var _0x3903cc=_0x93e8[_0x40220a];return _0x3903cc;};'use strict';var Sequelize=require('sequelize');module[_0x893e('0x0')]={'priority':{'type':Sequelize[_0x893e('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x893e('0x2')},'appdata':{'type':Sequelize[_0x893e('0x3')]()},'description':{'type':Sequelize[_0x893e('0x4')]},'interval':{'type':Sequelize[_0x893e('0x4')],'defaultValue':_0x893e('0x5')}};
\ No newline at end of file
+var _0x90cf=['STRING','noop','TEXT','*,*,*,*','sequelize','exports'];(function(_0x4600e8,_0x2f7d23){var _0x28d365=function(_0x14a3ed){while(--_0x14a3ed){_0x4600e8['push'](_0x4600e8['shift']());}};_0x28d365(++_0x2f7d23);}(_0x90cf,0xca));var _0xf90c=function(_0x39bd80,_0x290b2d){_0x39bd80=_0x39bd80-0x0;var _0x514e67=_0x90cf[_0x39bd80];return _0x514e67;};'use strict';var Sequelize=require(_0xf90c('0x0'));module[_0xf90c('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xf90c('0x2')],'allowNull':![],'defaultValue':_0xf90c('0x3')},'appdata':{'type':Sequelize[_0xf90c('0x4')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xf90c('0x2')],'defaultValue':_0xf90c('0x5')}};
\ No newline at end of file
index ef6c563..5db3a97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde32=['../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','destroy','then','error','stack','name','send','index','SmsApplication','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','include','findAll','catch','show','params','includeAll','options','create','body','find','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x654102,_0x4fa2f9){var _0x3cc306=function(_0x4be5d2){while(--_0x4be5d2){_0x654102['push'](_0x654102['shift']());}};_0x3cc306(++_0x4fa2f9);}(_0xde32,0xc8));var _0x2de3=function(_0x512706,_0x662d32){_0x512706=_0x512706-0x0;var _0x51d92d=_0xde32[_0x512706];return _0x51d92d;};'use strict';var emlformat=require(_0x2de3('0x0'));var rimraf=require(_0x2de3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2de3('0x2'));var rp=require(_0x2de3('0x3'));var moment=require(_0x2de3('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2de3('0x5'));var util=require(_0x2de3('0x6'));var path=require(_0x2de3('0x7'));var sox=require(_0x2de3('0x8'));var csv=require(_0x2de3('0x9'));var ejs=require(_0x2de3('0xa'));var fs=require('fs');var fs_extra=require(_0x2de3('0xb'));var _=require(_0x2de3('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x2de3('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x2de3('0x9'));var querystring=require(_0x2de3('0xe'));var Papa=require('papaparse');var Redis=require(_0x2de3('0xf'));var authService=require(_0x2de3('0x10'));var qs=require(_0x2de3('0x11'));var as=require(_0x2de3('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2de3('0x13'))(_0x2de3('0x14'));var utils=require(_0x2de3('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x2de3('0x16'));var db=require(_0x2de3('0x17'))['db'];function respondWithStatusCode(_0x3a5bda,_0x8f0c05){_0x8f0c05=_0x8f0c05||0xcc;return function(_0x1618e2){if(_0x1618e2){return _0x3a5bda[_0x2de3('0x18')](_0x8f0c05);}return _0x3a5bda['status'](_0x8f0c05)[_0x2de3('0x19')]();};}function respondWithResult(_0x24b1c6,_0x4ec5ae){_0x4ec5ae=_0x4ec5ae||0xc8;return function(_0x187b6b){if(_0x187b6b){return _0x24b1c6[_0x2de3('0x1a')](_0x4ec5ae)[_0x2de3('0x1b')](_0x187b6b);}};}function respondWithFilteredResult(_0x2b0221,_0x54fb34){return function(_0x399d13){if(_0x399d13){var _0xde127b=typeof _0x54fb34[_0x2de3('0x1c')]===_0x2de3('0x1d')&&typeof _0x54fb34['limit']===_0x2de3('0x1d');var _0x37b505=_0x399d13[_0x2de3('0x1e')];var _0x4817db=_0xde127b?0x0:_0x54fb34[_0x2de3('0x1c')];var _0x11aea2=_0xde127b?_0x399d13['count']:_0x54fb34[_0x2de3('0x1c')]+_0x54fb34[_0x2de3('0x1f')];var _0x2438bd;if(_0x11aea2>=_0x37b505){_0x11aea2=_0x37b505;_0x2438bd=0xc8;}else{_0x2438bd=0xce;}_0x2b0221[_0x2de3('0x1a')](_0x2438bd);return _0x2b0221[_0x2de3('0x20')](_0x2de3('0x21'),_0x4817db+'-'+_0x11aea2+'/'+_0x37b505)['json'](_0x399d13);}return null;};}function patchUpdates(_0x395def){return function(_0xebe1cb){try{jsonpatch[_0x2de3('0x22')](_0xebe1cb,_0x395def,!![]);}catch(_0x2ef995){return BPromise['reject'](_0x2ef995);}return _0xebe1cb['save']();};}function saveUpdates(_0x22e612,_0x57d2e6){return function(_0x3691ef){if(_0x3691ef){return _0x3691ef['update'](_0x22e612)['then'](function(_0xf70392){return _0xf70392;});}return null;};}function removeEntity(_0x59cfa9,_0x152858){return function(_0x1b874c){if(_0x1b874c){return _0x1b874c[_0x2de3('0x23')]()[_0x2de3('0x24')](function(){_0x59cfa9[_0x2de3('0x1a')](0xcc)[_0x2de3('0x19')]();});}};}function handleEntityNotFound(_0x2f1e40,_0x373d80){return function(_0x24423f){if(!_0x24423f){_0x2f1e40[_0x2de3('0x18')](0x194);}return _0x24423f;};}function handleError(_0x556c49,_0x425b5d){_0x425b5d=_0x425b5d||0x1f4;return function(_0x31e6aa){logger[_0x2de3('0x25')](_0x31e6aa[_0x2de3('0x26')]);if(_0x31e6aa[_0x2de3('0x27')]){delete _0x31e6aa[_0x2de3('0x27')];}_0x556c49[_0x2de3('0x1a')](_0x425b5d)[_0x2de3('0x28')](_0x31e6aa);};}exports[_0x2de3('0x29')]=function(_0x4eea11,_0x392762){var _0x438c3e={},_0x36967b={},_0x3852f7={'count':0x0,'rows':[]};var _0xd1179d=_['map'](db[_0x2de3('0x2a')][_0x2de3('0x2b')],function(_0x1028af){return{'name':_0x1028af[_0x2de3('0x2c')],'type':_0x1028af[_0x2de3('0x2d')]['key']};});_0x36967b[_0x2de3('0x2e')]=_['map'](_0xd1179d,_0x2de3('0x27'));_0x36967b[_0x2de3('0x2f')]=_[_0x2de3('0x30')](_0x4eea11[_0x2de3('0x2f')]);_0x36967b[_0x2de3('0x31')]=_['intersection'](_0x36967b['model'],_0x36967b[_0x2de3('0x2f')]);_0x438c3e['attributes']=_[_0x2de3('0x32')](_0x36967b[_0x2de3('0x2e')],qs[_0x2de3('0x33')](_0x4eea11[_0x2de3('0x2f')][_0x2de3('0x33')]));_0x438c3e[_0x2de3('0x34')]=_0x438c3e[_0x2de3('0x34')][_0x2de3('0x35')]?_0x438c3e[_0x2de3('0x34')]:_0x36967b[_0x2de3('0x2e')];if(!_0x4eea11[_0x2de3('0x2f')][_0x2de3('0x36')](_0x2de3('0x37'))){_0x438c3e['limit']=qs[_0x2de3('0x1f')](_0x4eea11['query'][_0x2de3('0x1f')]);_0x438c3e['offset']=qs[_0x2de3('0x1c')](_0x4eea11[_0x2de3('0x2f')][_0x2de3('0x1c')]);}_0x438c3e[_0x2de3('0x38')]=qs[_0x2de3('0x39')](_0x4eea11[_0x2de3('0x2f')][_0x2de3('0x39')]);_0x438c3e[_0x2de3('0x3a')]=qs[_0x2de3('0x31')](_[_0x2de3('0x3b')](_0x4eea11[_0x2de3('0x2f')],_0x36967b['filters']),_0xd1179d);if(_0x4eea11[_0x2de3('0x2f')][_0x2de3('0x3c')]){_0x438c3e[_0x2de3('0x3a')]=_[_0x2de3('0x3d')](_0x438c3e[_0x2de3('0x3a')],{'$or':_[_0x2de3('0x3e')](_0xd1179d,function(_0x2a2304){if(_0x2a2304[_0x2de3('0x2d')]!=='VIRTUAL'){var _0x64cbfd={};_0x64cbfd[_0x2a2304[_0x2de3('0x27')]]={'$like':'%'+_0x4eea11[_0x2de3('0x2f')][_0x2de3('0x3c')]+'%'};return _0x64cbfd;}})});}_0x438c3e=_['merge']({},_0x438c3e,_0x4eea11['options']);var _0x24071a={'where':_0x438c3e[_0x2de3('0x3a')]};return db[_0x2de3('0x2a')][_0x2de3('0x1e')](_0x24071a)[_0x2de3('0x24')](function(_0x5f4cbe){_0x3852f7[_0x2de3('0x1e')]=_0x5f4cbe;if(_0x4eea11[_0x2de3('0x2f')]['includeAll']){_0x438c3e[_0x2de3('0x3f')]=[{'all':!![]}];}return db[_0x2de3('0x2a')][_0x2de3('0x40')](_0x438c3e);})[_0x2de3('0x24')](function(_0x32da66){_0x3852f7['rows']=_0x32da66;return _0x3852f7;})[_0x2de3('0x24')](respondWithFilteredResult(_0x392762,_0x438c3e))[_0x2de3('0x41')](handleError(_0x392762,null));};exports[_0x2de3('0x42')]=function(_0x4afbe6,_0x1a0b3b){var _0x46b563={'raw':!![],'where':{'id':_0x4afbe6[_0x2de3('0x43')]['id']}},_0x2e075e={};_0x2e075e[_0x2de3('0x2e')]=_[_0x2de3('0x30')](db[_0x2de3('0x2a')][_0x2de3('0x2b')]);_0x2e075e['query']=_[_0x2de3('0x30')](_0x4afbe6[_0x2de3('0x2f')]);_0x2e075e['filters']=_['intersection'](_0x2e075e['model'],_0x2e075e[_0x2de3('0x2f')]);_0x46b563[_0x2de3('0x34')]=_['intersection'](_0x2e075e[_0x2de3('0x2e')],qs[_0x2de3('0x33')](_0x4afbe6[_0x2de3('0x2f')][_0x2de3('0x33')]));_0x46b563['attributes']=_0x46b563[_0x2de3('0x34')]['length']?_0x46b563['attributes']:_0x2e075e[_0x2de3('0x2e')];if(_0x4afbe6[_0x2de3('0x2f')][_0x2de3('0x44')]){_0x46b563['include']=[{'all':!![]}];}_0x46b563=_[_0x2de3('0x3d')]({},_0x46b563,_0x4afbe6[_0x2de3('0x45')]);return db[_0x2de3('0x2a')]['find'](_0x46b563)['then'](handleEntityNotFound(_0x1a0b3b,null))[_0x2de3('0x24')](respondWithResult(_0x1a0b3b,null))[_0x2de3('0x41')](handleError(_0x1a0b3b,null));};exports[_0x2de3('0x46')]=function(_0x3a9946,_0x5c4006){return db[_0x2de3('0x2a')][_0x2de3('0x46')](_0x3a9946[_0x2de3('0x47')],{})[_0x2de3('0x24')](respondWithResult(_0x5c4006,0xc9))[_0x2de3('0x41')](handleError(_0x5c4006,null));};exports['update']=function(_0x5289e1,_0x59336c){if(_0x5289e1[_0x2de3('0x47')]['id']){delete _0x5289e1[_0x2de3('0x47')]['id'];}return db[_0x2de3('0x2a')]['find']({'where':{'id':_0x5289e1[_0x2de3('0x43')]['id']}})['then'](handleEntityNotFound(_0x59336c,null))[_0x2de3('0x24')](saveUpdates(_0x5289e1['body'],null))[_0x2de3('0x24')](respondWithResult(_0x59336c,null))['catch'](handleError(_0x59336c,null));};exports[_0x2de3('0x23')]=function(_0xe2b2b2,_0x2a40c4){return db['SmsApplication'][_0x2de3('0x48')]({'where':{'id':_0xe2b2b2[_0x2de3('0x43')]['id']}})['then'](handleEntityNotFound(_0x2a40c4,null))['then'](removeEntity(_0x2a40c4,null))[_0x2de3('0x41')](handleError(_0x2a40c4,null));};
\ No newline at end of file
+var _0x0372=['SmsApplication','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','merge','VIRTUAL','options','count','includeAll','include','findAll','show','params','find','create','catch','body','destroy','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','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','offset','Content-Range','apply','reject','save','update','then','error','stack','name','index','map'];(function(_0x45fbc7,_0x2cf50d){var _0x392cfd=function(_0x33cbed){while(--_0x33cbed){_0x45fbc7['push'](_0x45fbc7['shift']());}};_0x392cfd(++_0x2cf50d);}(_0x0372,0x6a));var _0x2037=function(_0x55c00d,_0x520cb6){_0x55c00d=_0x55c00d-0x0;var _0x254a8f=_0x0372[_0x55c00d];return _0x254a8f;};'use strict';var emlformat=require(_0x2037('0x0'));var rimraf=require(_0x2037('0x1'));var zipdir=require(_0x2037('0x2'));var jsonpatch=require(_0x2037('0x3'));var rp=require(_0x2037('0x4'));var moment=require(_0x2037('0x5'));var BPromise=require(_0x2037('0x6'));var Mustache=require(_0x2037('0x7'));var util=require(_0x2037('0x8'));var path=require(_0x2037('0x9'));var sox=require(_0x2037('0xa'));var csv=require(_0x2037('0xb'));var ejs=require(_0x2037('0xc'));var fs=require('fs');var fs_extra=require(_0x2037('0xd'));var _=require(_0x2037('0xe'));var squel=require(_0x2037('0xf'));var crypto=require(_0x2037('0x10'));var jsforce=require(_0x2037('0x11'));var deskjs=require(_0x2037('0x12'));var toCsv=require(_0x2037('0xb'));var querystring=require(_0x2037('0x13'));var Papa=require(_0x2037('0x14'));var Redis=require(_0x2037('0x15'));var authService=require('../../components/auth/service');var qs=require(_0x2037('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2037('0x17'));var logger=require(_0x2037('0x18'))(_0x2037('0x19'));var utils=require(_0x2037('0x1a'));var config=require(_0x2037('0x1b'));var licenseUtil=require(_0x2037('0x1c'));var db=require(_0x2037('0x1d'))['db'];function respondWithStatusCode(_0x221f95,_0x625760){_0x625760=_0x625760||0xcc;return function(_0x1a77cf){if(_0x1a77cf){return _0x221f95[_0x2037('0x1e')](_0x625760);}return _0x221f95[_0x2037('0x1f')](_0x625760)[_0x2037('0x20')]();};}function respondWithResult(_0x1474fb,_0x39be5c){_0x39be5c=_0x39be5c||0xc8;return function(_0x559b36){if(_0x559b36){return _0x1474fb[_0x2037('0x1f')](_0x39be5c)[_0x2037('0x21')](_0x559b36);}};}function respondWithFilteredResult(_0xa26856,_0x2f9020){return function(_0x135a01){if(_0x135a01){var _0x2b359d=typeof _0x2f9020['offset']===_0x2037('0x22')&&typeof _0x2f9020[_0x2037('0x23')]===_0x2037('0x22');var _0x4156e9=_0x135a01['count'];var _0x247c22=_0x2b359d?0x0:_0x2f9020[_0x2037('0x24')];var _0x5ebf3c=_0x2b359d?_0x135a01['count']:_0x2f9020['offset']+_0x2f9020[_0x2037('0x23')];var _0x5e3d44;if(_0x5ebf3c>=_0x4156e9){_0x5ebf3c=_0x4156e9;_0x5e3d44=0xc8;}else{_0x5e3d44=0xce;}_0xa26856[_0x2037('0x1f')](_0x5e3d44);return _0xa26856['set'](_0x2037('0x25'),_0x247c22+'-'+_0x5ebf3c+'/'+_0x4156e9)[_0x2037('0x21')](_0x135a01);}return null;};}function patchUpdates(_0xbb66a4){return function(_0x4324d0){try{jsonpatch[_0x2037('0x26')](_0x4324d0,_0xbb66a4,!![]);}catch(_0x37b36a){return BPromise[_0x2037('0x27')](_0x37b36a);}return _0x4324d0[_0x2037('0x28')]();};}function saveUpdates(_0x42401e,_0x9b1169){return function(_0x395390){if(_0x395390){return _0x395390[_0x2037('0x29')](_0x42401e)[_0x2037('0x2a')](function(_0x28c241){return _0x28c241;});}return null;};}function removeEntity(_0x558228,_0x552f99){return function(_0x178449){if(_0x178449){return _0x178449['destroy']()[_0x2037('0x2a')](function(){_0x558228[_0x2037('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c6df,_0x49cbb1){return function(_0x1305a7){if(!_0x1305a7){_0x3c6df['sendStatus'](0x194);}return _0x1305a7;};}function handleError(_0xc2d6cb,_0xe0687e){_0xe0687e=_0xe0687e||0x1f4;return function(_0x2e71eb){logger[_0x2037('0x2b')](_0x2e71eb[_0x2037('0x2c')]);if(_0x2e71eb[_0x2037('0x2d')]){delete _0x2e71eb[_0x2037('0x2d')];}_0xc2d6cb[_0x2037('0x1f')](_0xe0687e)['send'](_0x2e71eb);};}exports[_0x2037('0x2e')]=function(_0x28eb86,_0x6150a7){var _0x3b0684={},_0x53a446={},_0x1ffda1={'count':0x0,'rows':[]};var _0x6bbe82=_[_0x2037('0x2f')](db[_0x2037('0x30')][_0x2037('0x31')],function(_0x58eb3f){return{'name':_0x58eb3f['fieldName'],'type':_0x58eb3f[_0x2037('0x32')][_0x2037('0x33')]};});_0x53a446[_0x2037('0x34')]=_[_0x2037('0x2f')](_0x6bbe82,_0x2037('0x2d'));_0x53a446[_0x2037('0x35')]=_[_0x2037('0x36')](_0x28eb86[_0x2037('0x35')]);_0x53a446[_0x2037('0x37')]=_[_0x2037('0x38')](_0x53a446[_0x2037('0x34')],_0x53a446['query']);_0x3b0684[_0x2037('0x39')]=_[_0x2037('0x38')](_0x53a446[_0x2037('0x34')],qs[_0x2037('0x3a')](_0x28eb86[_0x2037('0x35')]['fields']));_0x3b0684['attributes']=_0x3b0684[_0x2037('0x39')][_0x2037('0x3b')]?_0x3b0684[_0x2037('0x39')]:_0x53a446[_0x2037('0x34')];if(!_0x28eb86['query']['hasOwnProperty']('nolimit')){_0x3b0684['limit']=qs[_0x2037('0x23')](_0x28eb86[_0x2037('0x35')][_0x2037('0x23')]);_0x3b0684[_0x2037('0x24')]=qs[_0x2037('0x24')](_0x28eb86[_0x2037('0x35')][_0x2037('0x24')]);}_0x3b0684[_0x2037('0x3c')]=qs['sort'](_0x28eb86[_0x2037('0x35')][_0x2037('0x3d')]);_0x3b0684[_0x2037('0x3e')]=qs[_0x2037('0x37')](_['pick'](_0x28eb86[_0x2037('0x35')],_0x53a446[_0x2037('0x37')]),_0x6bbe82);if(_0x28eb86[_0x2037('0x35')]['filter']){_0x3b0684['where']=_[_0x2037('0x3f')](_0x3b0684[_0x2037('0x3e')],{'$or':_[_0x2037('0x2f')](_0x6bbe82,function(_0x5009f2){if(_0x5009f2[_0x2037('0x32')]!==_0x2037('0x40')){var _0x529be6={};_0x529be6[_0x5009f2['name']]={'$like':'%'+_0x28eb86[_0x2037('0x35')]['filter']+'%'};return _0x529be6;}})});}_0x3b0684=_[_0x2037('0x3f')]({},_0x3b0684,_0x28eb86[_0x2037('0x41')]);var _0x462267={'where':_0x3b0684['where']};return db['SmsApplication'][_0x2037('0x42')](_0x462267)[_0x2037('0x2a')](function(_0x18d49b){_0x1ffda1['count']=_0x18d49b;if(_0x28eb86[_0x2037('0x35')][_0x2037('0x43')]){_0x3b0684[_0x2037('0x44')]=[{'all':!![]}];}return db['SmsApplication'][_0x2037('0x45')](_0x3b0684);})['then'](function(_0x355982){_0x1ffda1['rows']=_0x355982;return _0x1ffda1;})[_0x2037('0x2a')](respondWithFilteredResult(_0x6150a7,_0x3b0684))['catch'](handleError(_0x6150a7,null));};exports[_0x2037('0x46')]=function(_0x4e0de6,_0x6c9051){var _0x3f0e8c={'raw':!![],'where':{'id':_0x4e0de6[_0x2037('0x47')]['id']}},_0x235758={};_0x235758[_0x2037('0x34')]=_['keys'](db['SmsApplication']['rawAttributes']);_0x235758[_0x2037('0x35')]=_[_0x2037('0x36')](_0x4e0de6[_0x2037('0x35')]);_0x235758['filters']=_['intersection'](_0x235758['model'],_0x235758[_0x2037('0x35')]);_0x3f0e8c[_0x2037('0x39')]=_[_0x2037('0x38')](_0x235758[_0x2037('0x34')],qs['fields'](_0x4e0de6['query'][_0x2037('0x3a')]));_0x3f0e8c['attributes']=_0x3f0e8c[_0x2037('0x39')][_0x2037('0x3b')]?_0x3f0e8c[_0x2037('0x39')]:_0x235758[_0x2037('0x34')];if(_0x4e0de6[_0x2037('0x35')][_0x2037('0x43')]){_0x3f0e8c[_0x2037('0x44')]=[{'all':!![]}];}_0x3f0e8c=_[_0x2037('0x3f')]({},_0x3f0e8c,_0x4e0de6[_0x2037('0x41')]);return db['SmsApplication'][_0x2037('0x48')](_0x3f0e8c)[_0x2037('0x2a')](handleEntityNotFound(_0x6c9051,null))[_0x2037('0x2a')](respondWithResult(_0x6c9051,null))['catch'](handleError(_0x6c9051,null));};exports[_0x2037('0x49')]=function(_0x281409,_0x2c067f){return db[_0x2037('0x30')][_0x2037('0x49')](_0x281409['body'],{})[_0x2037('0x2a')](respondWithResult(_0x2c067f,0xc9))[_0x2037('0x4a')](handleError(_0x2c067f,null));};exports[_0x2037('0x29')]=function(_0x328306,_0xc6eb6b){if(_0x328306[_0x2037('0x4b')]['id']){delete _0x328306['body']['id'];}return db[_0x2037('0x30')][_0x2037('0x48')]({'where':{'id':_0x328306[_0x2037('0x47')]['id']}})[_0x2037('0x2a')](handleEntityNotFound(_0xc6eb6b,null))['then'](saveUpdates(_0x328306[_0x2037('0x4b')],null))[_0x2037('0x2a')](respondWithResult(_0xc6eb6b,null))[_0x2037('0x4a')](handleError(_0xc6eb6b,null));};exports[_0x2037('0x4c')]=function(_0x2200e7,_0x598d8f){return db[_0x2037('0x30')][_0x2037('0x48')]({'where':{'id':_0x2200e7[_0x2037('0x47')]['id']}})[_0x2037('0x2a')](handleEntityNotFound(_0x598d8f,null))[_0x2037('0x2a')](removeEntity(_0x598d8f,null))[_0x2037('0x4a')](handleError(_0x598d8f,null));};
\ No newline at end of file
index d916126..ac17cf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd436=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','SmsApplication','sms_applications','utf8mb4','util','../../config/logger','api'];(function(_0x4ede09,_0x18801d){var _0x253193=function(_0xa4c752){while(--_0xa4c752){_0x4ede09['push'](_0x4ede09['shift']());}};_0x253193(++_0x18801d);}(_0xd436,0x1af));var _0x6d43=function(_0x2e2e41,_0x3a7848){_0x2e2e41=_0x2e2e41-0x0;var _0x266226=_0xd436[_0x2e2e41];return _0x266226;};'use strict';var _=require('lodash');var util=require(_0x6d43('0x0'));var logger=require(_0x6d43('0x1'))(_0x6d43('0x2'));var moment=require(_0x6d43('0x3'));var BPromise=require(_0x6d43('0x4'));var rp=require(_0x6d43('0x5'));var fs=require('fs');var path=require(_0x6d43('0x6'));var rimraf=require(_0x6d43('0x7'));var config=require(_0x6d43('0x8'));var attributes=require('./smsApplication.attributes');module[_0x6d43('0x9')]=function(_0x31ae02,_0xf863e4){return _0x31ae02[_0x6d43('0xa')](_0x6d43('0xb'),attributes,{'tableName':_0x6d43('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x6d43('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xf5f8=['bluebird','request-promise','rimraf','../../config/environment','./smsApplication.attributes','define','SmsApplication','sms_applications','utf8mb4','lodash','util','../../config/logger','api','moment'];(function(_0x359324,_0x51af5c){var _0x239d1b=function(_0x3aaa3f){while(--_0x3aaa3f){_0x359324['push'](_0x359324['shift']());}};_0x239d1b(++_0x51af5c);}(_0xf5f8,0x1bb));var _0x8f5f=function(_0xfa5fec,_0x532cc4){_0xfa5fec=_0xfa5fec-0x0;var _0x270820=_0xf5f8[_0xfa5fec];return _0x270820;};'use strict';var _=require(_0x8f5f('0x0'));var util=require(_0x8f5f('0x1'));var logger=require(_0x8f5f('0x2'))(_0x8f5f('0x3'));var moment=require(_0x8f5f('0x4'));var BPromise=require(_0x8f5f('0x5'));var rp=require(_0x8f5f('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8f5f('0x7'));var config=require(_0x8f5f('0x8'));var attributes=require(_0x8f5f('0x9'));module['exports']=function(_0x5635f8,_0x41659c){return _0x5635f8[_0x8f5f('0xa')](_0x8f5f('0xb'),attributes,{'tableName':_0x8f5f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x8f5f('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index ce7e776..1505f96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46cb=['debug','stringify','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','SmsApplication,\x20%s,\x20%s','request\x20sent'];(function(_0x1e8616,_0x1809f6){var _0x52af81=function(_0x3cd159){while(--_0x3cd159){_0x1e8616['push'](_0x1e8616['shift']());}};_0x52af81(++_0x1809f6);}(_0x46cb,0x84));var _0xb46c=function(_0x3849ff,_0x4ae25e){_0x3849ff=_0x3849ff-0x0;var _0x3ab676=_0x46cb[_0x3849ff];return _0x3ab676;};'use strict';var _=require(_0xb46c('0x0'));var util=require(_0xb46c('0x1'));var moment=require(_0xb46c('0x2'));var BPromise=require(_0xb46c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb46c('0x4'));var db=require(_0xb46c('0x5'))['db'];var utils=require(_0xb46c('0x6'));var logger=require(_0xb46c('0x7'))('rpc');var config=require(_0xb46c('0x8'));var jayson=require(_0xb46c('0x9'));var client=jayson[_0xb46c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x16554f,_0x595776,_0xc2a7af){return new BPromise(function(_0x2bf067,_0x5d6405){return client['request'](_0x16554f,_0xc2a7af)[_0xb46c('0xb')](function(_0x12a113){logger[_0xb46c('0xc')](_0xb46c('0xd'),_0x595776,_0xb46c('0xe'));logger[_0xb46c('0xf')]('SmsApplication,\x20%s,\x20%s,\x20%s',_0x595776,_0xb46c('0xe'),JSON[_0xb46c('0x10')](_0x12a113));if(_0x12a113[_0xb46c('0x11')]){if(_0x12a113[_0xb46c('0x11')]['code']===0x1f4){logger[_0xb46c('0x11')](_0xb46c('0xd'),_0x595776,_0x12a113[_0xb46c('0x11')]['message']);return _0x5d6405(_0x12a113[_0xb46c('0x11')][_0xb46c('0x12')]);}logger['error'](_0xb46c('0xd'),_0x595776,_0x12a113[_0xb46c('0x11')][_0xb46c('0x12')]);return _0x2bf067(_0x12a113[_0xb46c('0x11')][_0xb46c('0x12')]);}else{logger[_0xb46c('0xc')](_0xb46c('0xd'),_0x595776,'request\x20sent');_0x2bf067(_0x12a113[_0xb46c('0x13')][_0xb46c('0x12')]);}})[_0xb46c('0x14')](function(_0x118f95){logger[_0xb46c('0x11')](_0xb46c('0xd'),_0x595776,_0x118f95);_0x5d6405(_0x118f95);});});}
\ No newline at end of file
+var _0xd2f5=['result','catch','lodash','util','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment','client','http','info','request\x20sent','debug','stringify','error','code','SmsApplication,\x20%s,\x20%s','message'];(function(_0x16c1a9,_0x2d16c8){var _0x3037b0=function(_0x58236f){while(--_0x58236f){_0x16c1a9['push'](_0x16c1a9['shift']());}};_0x3037b0(++_0x2d16c8);}(_0xd2f5,0x12e));var _0x5d2f=function(_0x2f20a8,_0x235191){_0x2f20a8=_0x2f20a8-0x0;var _0x11337b=_0xd2f5[_0x2f20a8];return _0x11337b;};'use strict';var _=require(_0x5d2f('0x0'));var util=require(_0x5d2f('0x1'));var moment=require(_0x5d2f('0x2'));var BPromise=require(_0x5d2f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5d2f('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5d2f('0x5'))(_0x5d2f('0x6'));var config=require(_0x5d2f('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x5d2f('0x8')][_0x5d2f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xbf53b,_0x57673f,_0x3062bf){return new BPromise(function(_0x72bf9f,_0x330195){return client['request'](_0xbf53b,_0x3062bf)['then'](function(_0x43293d){logger[_0x5d2f('0xa')]('SmsApplication,\x20%s,\x20%s',_0x57673f,_0x5d2f('0xb'));logger[_0x5d2f('0xc')]('SmsApplication,\x20%s,\x20%s,\x20%s',_0x57673f,'request\x20sent',JSON[_0x5d2f('0xd')](_0x43293d));if(_0x43293d[_0x5d2f('0xe')]){if(_0x43293d['error'][_0x5d2f('0xf')]===0x1f4){logger[_0x5d2f('0xe')](_0x5d2f('0x10'),_0x57673f,_0x43293d[_0x5d2f('0xe')][_0x5d2f('0x11')]);return _0x330195(_0x43293d[_0x5d2f('0xe')][_0x5d2f('0x11')]);}logger['error']('SmsApplication,\x20%s,\x20%s',_0x57673f,_0x43293d['error']['message']);return _0x72bf9f(_0x43293d[_0x5d2f('0xe')]['message']);}else{logger[_0x5d2f('0xa')](_0x5d2f('0x10'),_0x57673f,_0x5d2f('0xb'));_0x72bf9f(_0x43293d[_0x5d2f('0x12')]['message']);}})[_0x5d2f('0x13')](function(_0x875750){logger['error'](_0x5d2f('0x10'),_0x57673f,_0x875750);_0x330195(_0x875750);});});}
\ No newline at end of file
index 50a6b8b..e14f1ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe605=['./smsInteraction.controller','get','isAuthenticated','index','show','/:id/messages','getMessages','/:id/download','download','post','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','/:id','update','delete','smsinteraction:destroy','removeTags','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x611fd0,_0x14de49){var _0xf3f00a=function(_0x3dde98){while(--_0x3dde98){_0x611fd0['push'](_0x611fd0['shift']());}};_0xf3f00a(++_0x14de49);}(_0xe605,0x92));var _0x5e60=function(_0x7cfca,_0x54d06a){_0x7cfca=_0x7cfca-0x0;var _0x4196b3=_0xe605[_0x7cfca];return _0x4196b3;};'use strict';var multer=require(_0x5e60('0x0'));var util=require(_0x5e60('0x1'));var path=require('path');var timeout=require(_0x5e60('0x2'));var express=require(_0x5e60('0x3'));var router=express[_0x5e60('0x4')]();var fs_extra=require(_0x5e60('0x5'));var auth=require(_0x5e60('0x6'));var interaction=require(_0x5e60('0x7'));var config=require(_0x5e60('0x8'));var controller=require(_0x5e60('0x9'));router[_0x5e60('0xa')]('/',auth[_0x5e60('0xb')](),controller[_0x5e60('0xc')]);router[_0x5e60('0xa')]('/describe',auth[_0x5e60('0xb')](),controller['describe']);router['get']('/:id',auth[_0x5e60('0xb')](),controller[_0x5e60('0xd')]);router[_0x5e60('0xa')](_0x5e60('0xe'),auth[_0x5e60('0xb')](),controller[_0x5e60('0xf')]);router['get'](_0x5e60('0x10'),auth['isAuthenticated'](),controller[_0x5e60('0x11')]);router[_0x5e60('0x12')]('/',auth[_0x5e60('0xb')](),controller['create']);router[_0x5e60('0x12')](_0x5e60('0xe'),auth[_0x5e60('0xb')](),controller[_0x5e60('0x13')]);router[_0x5e60('0x12')](_0x5e60('0x14'),auth['isAuthenticated'](),interaction[_0x5e60('0x15')](_0x5e60('0x16'),_0x5e60('0x17')),controller[_0x5e60('0x18')]);router['put'](_0x5e60('0x19'),auth['isAuthenticated'](),interaction[_0x5e60('0x15')](_0x5e60('0x16'),'smsinteraction:update'),controller[_0x5e60('0x1a')]);router[_0x5e60('0x1b')](_0x5e60('0x19'),auth[_0x5e60('0xb')](),interaction['tracked'](_0x5e60('0x16'),_0x5e60('0x1c')),controller['destroy']);router[_0x5e60('0x1b')](_0x5e60('0x14'),auth[_0x5e60('0xb')](),controller[_0x5e60('0x1d')]);module[_0x5e60('0x1e')]=router;
\ No newline at end of file
+var _0xed3c=['sms','smsinteraction:addtags','addTags','put','tracked','smsinteraction:update','update','delete','/:id','smsinteraction:destroy','destroy','/:id/tags','removeTags','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','./smsInteraction.controller','get','isAuthenticated','index','describe','show','/:id/messages','getMessages','/:id/download','download','create','post','addMessage'];(function(_0x15b0a0,_0x1bc945){var _0x5299b2=function(_0x3eccbd){while(--_0x3eccbd){_0x15b0a0['push'](_0x15b0a0['shift']());}};_0x5299b2(++_0x1bc945);}(_0xed3c,0x1a6));var _0xced3=function(_0x3865ea,_0x45f818){_0x3865ea=_0x3865ea-0x0;var _0x9845a6=_0xed3c[_0x3865ea];return _0x9845a6;};'use strict';var multer=require(_0xced3('0x0'));var util=require(_0xced3('0x1'));var path=require(_0xced3('0x2'));var timeout=require(_0xced3('0x3'));var express=require('express');var router=express[_0xced3('0x4')]();var fs_extra=require(_0xced3('0x5'));var auth=require(_0xced3('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xced3('0x7'));router[_0xced3('0x8')]('/',auth[_0xced3('0x9')](),controller[_0xced3('0xa')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0xced3('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0xced3('0xc')]);router[_0xced3('0x8')](_0xced3('0xd'),auth[_0xced3('0x9')](),controller[_0xced3('0xe')]);router['get'](_0xced3('0xf'),auth[_0xced3('0x9')](),controller[_0xced3('0x10')]);router['post']('/',auth[_0xced3('0x9')](),controller[_0xced3('0x11')]);router[_0xced3('0x12')](_0xced3('0xd'),auth[_0xced3('0x9')](),controller[_0xced3('0x13')]);router[_0xced3('0x12')]('/:id/tags',auth[_0xced3('0x9')](),interaction['tracked'](_0xced3('0x14'),_0xced3('0x15')),controller[_0xced3('0x16')]);router[_0xced3('0x17')]('/:id',auth[_0xced3('0x9')](),interaction[_0xced3('0x18')]('sms',_0xced3('0x19')),controller[_0xced3('0x1a')]);router[_0xced3('0x1b')](_0xced3('0x1c'),auth['isAuthenticated'](),interaction[_0xced3('0x18')]('sms',_0xced3('0x1d')),controller[_0xced3('0x1e')]);router[_0xced3('0x1b')](_0xced3('0x1f'),auth[_0xced3('0x9')](),controller[_0xced3('0x20')]);module[_0xced3('0x21')]=router;
\ No newline at end of file
index cd76a7e..a056ccf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x173d=['moment','DATE','STRING','out','ENUM','BOOLEAN'];(function(_0x19409d,_0xf48905){var _0x5de146=function(_0x117745){while(--_0x117745){_0x19409d['push'](_0x19409d['shift']());}};_0x5de146(++_0xf48905);}(_0x173d,0x108));var _0xd173=function(_0x5dc6c2,_0x47026b){_0x5dc6c2=_0x5dc6c2-0x0;var _0x4b0f54=_0x173d[_0x5dc6c2];return _0x4b0f54;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xd173('0x0'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xd173('0x1')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xd173('0x2')]},'thirdDisposition':{'type':Sequelize[_0xd173('0x2')]},'note':{'type':Sequelize[_0xd173('0x2')]},'phone':{'type':Sequelize[_0xd173('0x2')]},'read1stAt':{'type':Sequelize[_0xd173('0x1')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0xd173('0x3')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xd173('0x1')]},'lastMsgDirection':{'type':Sequelize[_0xd173('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xd173('0x5')],'defaultValue':![]},'queueId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x110f=['STRING','ENUM','out','DATE','BOOLEAN','INTEGER','sequelize','moment'];(function(_0x51fc20,_0x20453f){var _0x4d9798=function(_0x3b7e83){while(--_0x3b7e83){_0x51fc20['push'](_0x51fc20['shift']());}};_0x4d9798(++_0x20453f);}(_0x110f,0x1e6));var _0xf110=function(_0x326a32,_0x2c9616){_0x326a32=_0x326a32-0x0;var _0x13abd3=_0x110f[_0x326a32];return _0x13abd3;};'use strict';var Sequelize=require(_0xf110('0x0'));var moment=require(_0xf110('0x1'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xf110('0x2')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xf110('0x2')]},'note':{'type':Sequelize[_0xf110('0x2')]},'phone':{'type':Sequelize[_0xf110('0x2')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0xf110('0x3')]('in',_0xf110('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xf110('0x5')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xf110('0x4')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xf110('0x6')],'defaultValue':![]},'queueId':{'type':Sequelize[_0xf110('0x7')]}};
\ No newline at end of file
index 70a8ada..0d52886 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15cb=['ids','omit','getMessages','nolimit','limit','order','sort','where','pick','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','addTags','setTags','spread','Tag','removeTags','unix','root','server','tmp','join','User','fullname','push','CmContact','lastName','Messages','createdAt','direction','secret','read','Owner','get','mkdirSync','Account','N.A.','toString','closed','closedAt','disposition','System','Contact','out','value','renderFile','downloadInteraction.ejs','transcript-','.pdf','Sms','createPdfFromHTML','download','log','err','unlinkSync','rimraf','moment','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','localhost','socket.io-emitter','redis','./smsInteraction.socket','register','sendStatus','end','json','offset','count','status','set','Content-Range','update','destroy','then','error','stack','name','send','index','map','SmsInteraction','findAll','user','catch','show','params','rawAttributes','query','keys','filters','intersection','model','attributes','fields','includeAll','include','merge','options','find','create','body','describe','addMessage','SmsMessage'];(function(_0x35675f,_0x2d6db6){var _0x26f03f=function(_0xb60831){while(--_0xb60831){_0x35675f['push'](_0x35675f['shift']());}};_0x26f03f(++_0x2d6db6);}(_0x15cb,0xa9));var _0xb15c=function(_0x4e7fef,_0x2ecfbb){_0x4e7fef=_0x4e7fef-0x0;var _0x5d7a7f=_0x15cb[_0x4e7fef];return _0x5d7a7f;};'use strict';var rimraf=require(_0xb15c('0x0'));var zipdir=require('zip-dir');var moment=require(_0xb15c('0x1'));var BPromise=require('bluebird');var util=require('util');var path=require('path');var ejs=require(_0xb15c('0x2'));var fs=require('fs');var _=require(_0xb15c('0x3'));var Redis=require(_0xb15c('0x4'));var interaction=require(_0xb15c('0x5'));var qs=require(_0xb15c('0x6'));var pdf=require('../../components/export/pdf');var logger=require('../../config/logger')(_0xb15c('0x7'));var config=require(_0xb15c('0x8'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xb15c('0x9'),'port':0x18eb});var socket=require(_0xb15c('0xa'))(new Redis(config[_0xb15c('0xb')]));require(_0xb15c('0xc'))[_0xb15c('0xd')](socket);function respondWithStatusCode(_0x4bafef,_0x533fcf){_0x533fcf=_0x533fcf||0xcc;return function(_0x515b78){if(_0x515b78){return _0x4bafef[_0xb15c('0xe')](_0x533fcf);}return _0x4bafef['status'](_0x533fcf)[_0xb15c('0xf')]();};}function respondWithResult(_0x140f02,_0x23540c){_0x23540c=_0x23540c||0xc8;return function(_0x10dbae){if(_0x10dbae){return _0x140f02['status'](_0x23540c)[_0xb15c('0x10')](_0x10dbae);}};}function respondWithFilteredResult(_0x5460e3,_0x5008fd){return function(_0x387c86){if(_0x387c86){var _0x4c0785=typeof _0x5008fd[_0xb15c('0x11')]==='undefined'&&typeof _0x5008fd['limit']==='undefined';var _0x19d7b2=_0x387c86['count'];var _0x31b675=_0x4c0785?0x0:_0x5008fd[_0xb15c('0x11')];var _0x3f73f7=_0x4c0785?_0x387c86[_0xb15c('0x12')]:_0x5008fd[_0xb15c('0x11')]+_0x5008fd['limit'];var _0x220d71;if(_0x3f73f7>=_0x19d7b2){_0x3f73f7=_0x19d7b2;_0x220d71=0xc8;}else{_0x220d71=0xce;}_0x5460e3[_0xb15c('0x13')](_0x220d71);return _0x5460e3[_0xb15c('0x14')](_0xb15c('0x15'),_0x31b675+'-'+_0x3f73f7+'/'+_0x19d7b2)[_0xb15c('0x10')](_0x387c86);}return null;};}function saveUpdates(_0x4878b9){return function(_0x4e3f4d){if(_0x4e3f4d){return _0x4e3f4d[_0xb15c('0x16')](_0x4878b9)['then'](function(_0x5f1def){return _0x5f1def;});}return null;};}function removeEntity(_0x5cf570){return function(_0x30df0b){if(_0x30df0b){return _0x30df0b[_0xb15c('0x17')]()[_0xb15c('0x18')](function(){_0x5cf570[_0xb15c('0x13')](0xcc)[_0xb15c('0xf')]();});}};}function handleEntityNotFound(_0x5a6c60){return function(_0x3505c4){if(!_0x3505c4){_0x5a6c60[_0xb15c('0xe')](0x194);}return _0x3505c4;};}function handleError(_0x2c2a55,_0x582d4f){_0x582d4f=_0x582d4f||0x1f4;return function(_0x6c3424){logger[_0xb15c('0x19')](_0x6c3424[_0xb15c('0x1a')]);if(_0x6c3424[_0xb15c('0x1b')]){delete _0x6c3424[_0xb15c('0x1b')];}_0x2c2a55[_0xb15c('0x13')](_0x582d4f)[_0xb15c('0x1c')](_0x6c3424);};}exports[_0xb15c('0x1d')]=function(_0x42b13a,_0x4a7b15){var _0x157e7c={};var _0x4a7c0b=_[_0xb15c('0x1e')](db[_0xb15c('0x1f')]['rawAttributes'],function(_0xd96ccf){return{'name':_0xd96ccf['fieldName'],'type':_0xd96ccf['type']['key']};});_0x157e7c=qs['getOptions'](_0x4a7c0b,_0x42b13a);return interaction[_0xb15c('0x20')]('sms',_0x42b13a['query'],_0x42b13a[_0xb15c('0x21')],_0x157e7c,_0x4a7c0b)['then'](respondWithFilteredResult(_0x4a7b15,_0x157e7c))[_0xb15c('0x22')](handleError(_0x4a7b15,null));};exports[_0xb15c('0x23')]=function(_0x24e2bb,_0x408ae5){var _0x316b9f={'raw':![],'where':{'id':_0x24e2bb[_0xb15c('0x24')]['id']}},_0x48e145={};_0x48e145['model']=_['keys'](db[_0xb15c('0x1f')][_0xb15c('0x25')]);_0x48e145[_0xb15c('0x26')]=_[_0xb15c('0x27')](_0x24e2bb[_0xb15c('0x26')]);_0x48e145[_0xb15c('0x28')]=_[_0xb15c('0x29')](_0x48e145[_0xb15c('0x2a')],_0x48e145[_0xb15c('0x26')]);_0x316b9f[_0xb15c('0x2b')]=_[_0xb15c('0x29')](_0x48e145[_0xb15c('0x2a')],qs[_0xb15c('0x2c')](_0x24e2bb['query'][_0xb15c('0x2c')]));_0x316b9f[_0xb15c('0x2b')]=_0x316b9f['attributes']['length']?_0x316b9f[_0xb15c('0x2b')]:_0x48e145['model'];if(_0x24e2bb[_0xb15c('0x26')][_0xb15c('0x2d')]){_0x316b9f[_0xb15c('0x2e')]=[{'all':!![]}];}_0x316b9f=_[_0xb15c('0x2f')]({},_0x316b9f,_0x24e2bb[_0xb15c('0x30')]);return db[_0xb15c('0x1f')][_0xb15c('0x31')](_0x316b9f)['then'](handleEntityNotFound(_0x408ae5,null))[_0xb15c('0x18')](respondWithResult(_0x408ae5,null))['catch'](handleError(_0x408ae5,null));};exports[_0xb15c('0x32')]=function(_0x1e60d6,_0x3366a6){return db[_0xb15c('0x1f')][_0xb15c('0x32')](_0x1e60d6[_0xb15c('0x33')],{})['then'](respondWithResult(_0x3366a6,0xc9))[_0xb15c('0x22')](handleError(_0x3366a6,null));};exports[_0xb15c('0x16')]=function(_0x326bfc,_0x7b762b){if(_0x326bfc[_0xb15c('0x33')]['id']){delete _0x326bfc[_0xb15c('0x33')]['id'];}return db['SmsInteraction'][_0xb15c('0x31')]({'where':{'id':_0x326bfc[_0xb15c('0x24')]['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x7b762b,null))[_0xb15c('0x18')](saveUpdates(_0x326bfc[_0xb15c('0x33')],null))[_0xb15c('0x18')](respondWithResult(_0x7b762b,null))[_0xb15c('0x22')](handleError(_0x7b762b,null));};exports[_0xb15c('0x17')]=function(_0x20fb22,_0x5ced8f){return db[_0xb15c('0x1f')][_0xb15c('0x31')]({'where':{'id':_0x20fb22[_0xb15c('0x24')]['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x5ced8f,null))[_0xb15c('0x18')](removeEntity(_0x5ced8f,null))['catch'](handleError(_0x5ced8f,null));};exports[_0xb15c('0x34')]=function(_0x4b20d,_0x2d56c2){return db[_0xb15c('0x1f')]['describe']()['then'](respondWithResult(_0x2d56c2,null))[_0xb15c('0x22')](handleError(_0x2d56c2,null));};exports[_0xb15c('0x35')]=function(_0x4f632f,_0x268262){return db[_0xb15c('0x36')][_0xb15c('0x31')]({'where':{'id':_0x4f632f[_0xb15c('0x24')]['id']}})['then'](handleEntityNotFound(_0x268262,null))[_0xb15c('0x18')](function(_0x21a57e){if(_0x21a57e){return _0x21a57e['addMessage'](_0x4f632f['body'][_0xb15c('0x37')],_[_0xb15c('0x38')](_0x4f632f[_0xb15c('0x33')],['ids','id'])||{});}})[_0xb15c('0x18')](respondWithResult(_0x268262,null))[_0xb15c('0x22')](handleError(_0x268262,null));};exports[_0xb15c('0x39')]=function(_0x58fdb8,_0x4a9452){var _0xe9602c={'raw':![],'where':{}};var _0x3bf3e2={};var _0x13ee77={'count':0x0,'rows':[]};return db['SmsInteraction']['findOne']({'where':{'id':_0x58fdb8[_0xb15c('0x24')]['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x4a9452,null))[_0xb15c('0x18')](function(_0x13cd4a){if(_0x13cd4a){_0x3bf3e2[_0xb15c('0x2a')]=_[_0xb15c('0x27')](db[_0xb15c('0x36')][_0xb15c('0x25')]);_0x3bf3e2[_0xb15c('0x26')]=_['keys'](_0x58fdb8[_0xb15c('0x26')]);_0x3bf3e2['filters']=_[_0xb15c('0x29')](_0x3bf3e2[_0xb15c('0x2a')],_0x3bf3e2[_0xb15c('0x26')]);_0xe9602c[_0xb15c('0x2b')]=_[_0xb15c('0x29')](_0x3bf3e2[_0xb15c('0x2a')],qs[_0xb15c('0x2c')](_0x58fdb8[_0xb15c('0x26')]['fields']));_0xe9602c[_0xb15c('0x2b')]=_0xe9602c[_0xb15c('0x2b')]['length']?_0xe9602c[_0xb15c('0x2b')]:_0x3bf3e2[_0xb15c('0x2a')];if(!_0x58fdb8[_0xb15c('0x26')]['hasOwnProperty'](_0xb15c('0x3a'))){_0xe9602c['limit']=qs[_0xb15c('0x3b')](_0x58fdb8[_0xb15c('0x26')][_0xb15c('0x3b')]);_0xe9602c[_0xb15c('0x11')]=qs[_0xb15c('0x11')](_0x58fdb8[_0xb15c('0x26')][_0xb15c('0x11')]);}_0xe9602c[_0xb15c('0x3c')]=qs[_0xb15c('0x3d')](_0x58fdb8[_0xb15c('0x26')][_0xb15c('0x3d')]);_0xe9602c[_0xb15c('0x3e')]=qs['filters'](_[_0xb15c('0x3f')](_0x58fdb8[_0xb15c('0x26')],_0x3bf3e2[_0xb15c('0x28')]));_0xe9602c[_0xb15c('0x3e')]['SmsInteractionId']=_0x13cd4a['id'];if(_0x58fdb8[_0xb15c('0x26')][_0xb15c('0x40')]){_0xe9602c['where']=_[_0xb15c('0x2f')](_0xe9602c['where'],{'$or':_[_0xb15c('0x1e')](_0xe9602c[_0xb15c('0x2b')],function(_0x4a8b85){var _0x924611={};_0x924611[_0x4a8b85]={'$like':'%'+_0x58fdb8[_0xb15c('0x26')][_0xb15c('0x40')]+'%'};return _0x924611;})});}if(_0x58fdb8['query'][_0xb15c('0x41')]){var _0x2e4734=_0x58fdb8[_0xb15c('0x26')][_0xb15c('0x41')][_0xb15c('0x42')](',');var _0x4f4dbb={};_0x4f4dbb[_0x2e4734[0x0]]={'$gte':moment(_0x2e4734[0x1])[_0xb15c('0x43')](_0xb15c('0x44'))};_0xe9602c[_0xb15c('0x3e')]=_[_0xb15c('0x2f')](_0xe9602c[_0xb15c('0x3e')],_0x4f4dbb);}_0xe9602c=_[_0xb15c('0x2f')]({},_0xe9602c,_0x58fdb8[_0xb15c('0x30')]);return db[_0xb15c('0x36')]['count']({'where':_0xe9602c[_0xb15c('0x3e')]})[_0xb15c('0x18')](function(_0x25ef58){_0x13ee77[_0xb15c('0x12')]=_0x25ef58;if(_0x58fdb8[_0xb15c('0x26')][_0xb15c('0x2d')]){_0xe9602c[_0xb15c('0x2e')]=[{'all':!![]}];}return db['SmsMessage'][_0xb15c('0x20')](_0xe9602c);})[_0xb15c('0x18')](function(_0x297d13){_0x13ee77['rows']=_0x297d13;return _0x13ee77;});}})[_0xb15c('0x18')](respondWithFilteredResult(_0x4a9452,_0xe9602c))['catch'](handleError(_0x4a9452,null));};exports[_0xb15c('0x45')]=function(_0x1d6856,_0x52ef2b){return db[_0xb15c('0x1f')][_0xb15c('0x31')]({'where':{'id':_0x1d6856[_0xb15c('0x24')]['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x52ef2b,null))[_0xb15c('0x18')](function(_0x575493){if(_0x575493){return _0x575493[_0xb15c('0x46')](_0x1d6856['body'][_0xb15c('0x37')],_[_0xb15c('0x38')](_0x1d6856[_0xb15c('0x33')],[_0xb15c('0x37'),'id'])||{})[_0xb15c('0x47')](function(){return db[_0xb15c('0x48')][_0xb15c('0x20')]({'attributes':['id',_0xb15c('0x1b'),'color'],'where':{'id':_0x1d6856[_0xb15c('0x33')]['ids']}});})[_0xb15c('0x18')](function(_0x5f5daf){socket['emit']('smsInteractionTags:save',{'id':Number(_0x1d6856[_0xb15c('0x24')]['id']),'tags':_0x5f5daf||[]});return{'id':Number(_0x1d6856[_0xb15c('0x24')]['id']),'tags':_0x5f5daf||[]};});}})[_0xb15c('0x18')](respondWithResult(_0x52ef2b,null))[_0xb15c('0x22')](handleError(_0x52ef2b,null));};exports[_0xb15c('0x49')]=function(_0x5ab37a,_0x15453d){return db[_0xb15c('0x1f')][_0xb15c('0x31')]({'where':{'id':_0x5ab37a['params']['id']}})[_0xb15c('0x18')](handleEntityNotFound(_0x15453d,null))[_0xb15c('0x18')](function(_0x4974da){if(_0x4974da){return _0x4974da[_0xb15c('0x49')](_0x5ab37a[_0xb15c('0x26')][_0xb15c('0x37')]);}})['then'](respondWithStatusCode(_0x15453d,null))[_0xb15c('0x22')](handleError(_0x15453d,null));};exports['download']=function(_0x3ef8f5,_0x1d27ef){var _0x4f1944=moment()[_0xb15c('0x4a')]()['toString']();var _0x4e98b1=path['join'](config[_0xb15c('0x4b')],_0xb15c('0x4c'),'files',_0xb15c('0x4d'));var _0x1a4f9a=path[_0xb15c('0x4e')](_0x4e98b1,_0x4f1944);var _0x12f39e=util[_0xb15c('0x43')]('transcript-%d-%s.zip',_0x3ef8f5[_0xb15c('0x24')]['id'],_0x4f1944);var _0x21189f=path['join'](_0x4e98b1,_0x12f39e);var _0x3fa7ba=[];_0x3fa7ba['push']({'model':db[_0xb15c('0x4f')],'as':_0xb15c('0x4f'),'attributes':['id',_0xb15c('0x50')],'raw':!![]});_0x3fa7ba[_0xb15c('0x51')]({'model':db[_0xb15c('0x52')],'as':'Contact','attributes':['id','firstName',_0xb15c('0x53')],'raw':!![]});var _0x3a5970=[{'model':db[_0xb15c('0x36')],'as':_0xb15c('0x54'),'attributes':['id','body',_0xb15c('0x55'),_0xb15c('0x56'),_0xb15c('0x57'),_0xb15c('0x58')],'include':_0x3fa7ba}];_0x3a5970['push']({'model':db['SmsAccount'],'as':'Account','attributes':['id',_0xb15c('0x1b')]});_0x3a5970['push']({'model':db[_0xb15c('0x4f')],'as':_0xb15c('0x59'),'attributes':['id',_0xb15c('0x50')]});return db['SmsInteraction'][_0xb15c('0x31')]({'where':{'id':_0x3ef8f5['params']['id']},'include':_0x3a5970})[_0xb15c('0x18')](handleEntityNotFound(_0x1d27ef,null))[_0xb15c('0x18')](function(_0x3378b){if(_0x3378b){var _0x2668c2=_0x3378b[_0xb15c('0x5a')]({'plain':!![]});fs[_0xb15c('0x5b')](_0x1a4f9a);var _0x15bc48={'channel':'Sms','account':_0x2668c2[_0xb15c('0x5c')]['name'],'agent':_0x2668c2[_0xb15c('0x59')]?_0x2668c2['Owner'][_0xb15c('0x50')]:_0xb15c('0x5d'),'createdAt':moment(_0x2668c2[_0xb15c('0x55')])[_0xb15c('0x43')](_0xb15c('0x44'))[_0xb15c('0x5e')](),'closedAt':_0x2668c2[_0xb15c('0x5f')]?moment(_0x2668c2[_0xb15c('0x60')])['format']('YYYY-MM-DD\x20HH:mm:ss')[_0xb15c('0x5e')]():'','disposition':_0x2668c2[_0xb15c('0x61')],'messages':_(_0x2668c2[_0xb15c('0x54')])[_0xb15c('0x40')]({'secret':![]})['map'](function(_0x34eced){return{'date':moment(_0x34eced[_0xb15c('0x55')])[_0xb15c('0x43')](_0xb15c('0x44'))['toString'](),'sender':_0x34eced[_0xb15c('0x56')]==='out'?_0x34eced[_0xb15c('0x4f')]?_0x34eced[_0xb15c('0x4f')][_0xb15c('0x50')]:_0xb15c('0x62'):_0x34eced[_0xb15c('0x63')]['firstName']+(_0x34eced[_0xb15c('0x63')]['lastName']?'\x20'+_0x34eced[_0xb15c('0x63')]['lastName']:''),'body':_0x34eced[_0xb15c('0x33')],'direction':_0x34eced['direction']===_0xb15c('0x64')?'A':'C','secret':_0x34eced[_0xb15c('0x57')],'read':_0x34eced[_0xb15c('0x58')]};})[_0xb15c('0x65')]()};return ejs[_0xb15c('0x66')](path['join'](config[_0xb15c('0x4b')],_0xb15c('0x4c'),'views',_0xb15c('0x67')),{'interaction':_0x15bc48})[_0xb15c('0x18')](function(_0x15ec2c){var _0x2507f6=path[_0xb15c('0x4e')](_0x1a4f9a,_0xb15c('0x68')+_0x2668c2['id']+'-'+_0x4f1944+_0xb15c('0x69'));var _0x47a437={'path':_0x2507f6,'channel':_0xb15c('0x6a'),'interactionId':_0x2668c2['id']};return pdf[_0xb15c('0x6b')](_0x15ec2c,_0x47a437);})[_0xb15c('0x18')](function(){return new BPromise(function(_0x13b06c,_0x9b9217){zipdir(_0x1a4f9a,{'saveTo':_0x21189f},function(_0x222003,_0x140525){if(_0x222003)return _0x9b9217(_0x222003);return _0x13b06c(_0x140525);});})[_0xb15c('0x18')](function(){return new BPromise(function(_0x119347,_0x23c129){rimraf(_0x1a4f9a,function(_0x127aa5){if(_0x127aa5)_0x23c129(_0x127aa5);return _0x119347();});});})['then'](function(){return _0x1d27ef[_0xb15c('0x6c')](_0x21189f,_0x12f39e,function(_0x5abc8c){if(_0x5abc8c){console[_0xb15c('0x6d')](_0xb15c('0x6e'),_0x5abc8c);}else{fs[_0xb15c('0x6f')](_0x21189f);}});});});}else{return _0x1d27ef[_0xb15c('0xe')](0xc8);}})[_0xb15c('0x22')](handleError(_0x1d27ef,null));};
\ No newline at end of file
+var _0x5031=['socket.io-emitter','./smsInteraction.socket','sendStatus','status','offset','undefined','limit','count','Content-Range','json','update','then','destroy','stack','name','send','index','SmsInteraction','rawAttributes','type','key','getOptions','findAll','sms','user','catch','show','params','model','keys','query','filters','intersection','attributes','fields','includeAll','include','merge','options','find','create','body','describe','addMessage','SmsMessage','ids','getMessages','findOne','length','hasOwnProperty','nolimit','order','sort','pick','where','SmsInteractionId','filter','map','split','format','rows','addTags','setTags','omit','spread','Tag','color','emit','removeTags','unix','toString','root','files','tmp','join','push','User','fullname','CmContact','Contact','lastName','Messages','createdAt','secret','read','SmsAccount','Account','get','Sms','Owner','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','disposition','direction','out','System','firstName','value','renderFile','server','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','download','log','err','rimraf','moment','path','lodash','ioredis','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','defaults','redis','localhost'];(function(_0x34bc6c,_0x10d089){var _0x168820=function(_0xb058d9){while(--_0xb058d9){_0x34bc6c['push'](_0x34bc6c['shift']());}};_0x168820(++_0x10d089);}(_0x5031,0x6d));var _0x1503=function(_0x5de0b1,_0x407bea){_0x5de0b1=_0x5de0b1-0x0;var _0x1f7498=_0x5031[_0x5de0b1];return _0x1f7498;};'use strict';var rimraf=require(_0x1503('0x0'));var zipdir=require('zip-dir');var moment=require(_0x1503('0x1'));var BPromise=require('bluebird');var util=require('util');var path=require(_0x1503('0x2'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x1503('0x3'));var Redis=require(_0x1503('0x4'));var interaction=require('../../components/interaction/service');var qs=require(_0x1503('0x5'));var pdf=require(_0x1503('0x6'));var logger=require(_0x1503('0x7'))(_0x1503('0x8'));var config=require(_0x1503('0x9'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x1503('0xa')](config[_0x1503('0xb')],{'host':_0x1503('0xc'),'port':0x18eb});var socket=require(_0x1503('0xd'))(new Redis(config[_0x1503('0xb')]));require(_0x1503('0xe'))['register'](socket);function respondWithStatusCode(_0x57546c,_0x53e054){_0x53e054=_0x53e054||0xcc;return function(_0x7614e0){if(_0x7614e0){return _0x57546c[_0x1503('0xf')](_0x53e054);}return _0x57546c[_0x1503('0x10')](_0x53e054)['end']();};}function respondWithResult(_0x13f122,_0xcb3208){_0xcb3208=_0xcb3208||0xc8;return function(_0x1da437){if(_0x1da437){return _0x13f122[_0x1503('0x10')](_0xcb3208)['json'](_0x1da437);}};}function respondWithFilteredResult(_0x5ec7dd,_0x497467){return function(_0x530ed6){if(_0x530ed6){var _0x3d6f1e=typeof _0x497467[_0x1503('0x11')]===_0x1503('0x12')&&typeof _0x497467[_0x1503('0x13')]===_0x1503('0x12');var _0x3c1dc4=_0x530ed6[_0x1503('0x14')];var _0x4ca5d4=_0x3d6f1e?0x0:_0x497467[_0x1503('0x11')];var _0x713592=_0x3d6f1e?_0x530ed6['count']:_0x497467[_0x1503('0x11')]+_0x497467[_0x1503('0x13')];var _0x1bb5d7;if(_0x713592>=_0x3c1dc4){_0x713592=_0x3c1dc4;_0x1bb5d7=0xc8;}else{_0x1bb5d7=0xce;}_0x5ec7dd['status'](_0x1bb5d7);return _0x5ec7dd['set'](_0x1503('0x15'),_0x4ca5d4+'-'+_0x713592+'/'+_0x3c1dc4)[_0x1503('0x16')](_0x530ed6);}return null;};}function saveUpdates(_0x20220d){return function(_0x27df24){if(_0x27df24){return _0x27df24[_0x1503('0x17')](_0x20220d)[_0x1503('0x18')](function(_0x1e94d6){return _0x1e94d6;});}return null;};}function removeEntity(_0x75083f){return function(_0x312cdb){if(_0x312cdb){return _0x312cdb[_0x1503('0x19')]()[_0x1503('0x18')](function(){_0x75083f[_0x1503('0x10')](0xcc)['end']();});}};}function handleEntityNotFound(_0xc8f7bb){return function(_0x2f2654){if(!_0x2f2654){_0xc8f7bb[_0x1503('0xf')](0x194);}return _0x2f2654;};}function handleError(_0x8de705,_0x35e323){_0x35e323=_0x35e323||0x1f4;return function(_0x10a0dc){logger['error'](_0x10a0dc[_0x1503('0x1a')]);if(_0x10a0dc['name']){delete _0x10a0dc[_0x1503('0x1b')];}_0x8de705[_0x1503('0x10')](_0x35e323)[_0x1503('0x1c')](_0x10a0dc);};}exports[_0x1503('0x1d')]=function(_0x1f93d1,_0x43595){var _0x50ed49={};var _0x111510=_['map'](db[_0x1503('0x1e')][_0x1503('0x1f')],function(_0x58cf3a){return{'name':_0x58cf3a['fieldName'],'type':_0x58cf3a[_0x1503('0x20')][_0x1503('0x21')]};});_0x50ed49=qs[_0x1503('0x22')](_0x111510,_0x1f93d1);return interaction[_0x1503('0x23')](_0x1503('0x24'),_0x1f93d1['query'],_0x1f93d1[_0x1503('0x25')],_0x50ed49,_0x111510)[_0x1503('0x18')](respondWithFilteredResult(_0x43595,_0x50ed49))[_0x1503('0x26')](handleError(_0x43595,null));};exports[_0x1503('0x27')]=function(_0x38bf5c,_0x3d7469){var _0x567ba4={'raw':![],'where':{'id':_0x38bf5c[_0x1503('0x28')]['id']}},_0x4c9ed2={};_0x4c9ed2[_0x1503('0x29')]=_['keys'](db[_0x1503('0x1e')]['rawAttributes']);_0x4c9ed2['query']=_[_0x1503('0x2a')](_0x38bf5c[_0x1503('0x2b')]);_0x4c9ed2[_0x1503('0x2c')]=_[_0x1503('0x2d')](_0x4c9ed2[_0x1503('0x29')],_0x4c9ed2[_0x1503('0x2b')]);_0x567ba4[_0x1503('0x2e')]=_[_0x1503('0x2d')](_0x4c9ed2[_0x1503('0x29')],qs[_0x1503('0x2f')](_0x38bf5c['query']['fields']));_0x567ba4['attributes']=_0x567ba4['attributes']['length']?_0x567ba4[_0x1503('0x2e')]:_0x4c9ed2['model'];if(_0x38bf5c[_0x1503('0x2b')][_0x1503('0x30')]){_0x567ba4[_0x1503('0x31')]=[{'all':!![]}];}_0x567ba4=_[_0x1503('0x32')]({},_0x567ba4,_0x38bf5c[_0x1503('0x33')]);return db[_0x1503('0x1e')][_0x1503('0x34')](_0x567ba4)[_0x1503('0x18')](handleEntityNotFound(_0x3d7469,null))[_0x1503('0x18')](respondWithResult(_0x3d7469,null))[_0x1503('0x26')](handleError(_0x3d7469,null));};exports[_0x1503('0x35')]=function(_0x49e6ab,_0x4fbb4d){return db[_0x1503('0x1e')][_0x1503('0x35')](_0x49e6ab[_0x1503('0x36')],{})[_0x1503('0x18')](respondWithResult(_0x4fbb4d,0xc9))[_0x1503('0x26')](handleError(_0x4fbb4d,null));};exports[_0x1503('0x17')]=function(_0x2af3d1,_0x109a07){if(_0x2af3d1[_0x1503('0x36')]['id']){delete _0x2af3d1[_0x1503('0x36')]['id'];}return db[_0x1503('0x1e')][_0x1503('0x34')]({'where':{'id':_0x2af3d1['params']['id']}})['then'](handleEntityNotFound(_0x109a07,null))[_0x1503('0x18')](saveUpdates(_0x2af3d1['body'],null))[_0x1503('0x18')](respondWithResult(_0x109a07,null))[_0x1503('0x26')](handleError(_0x109a07,null));};exports['destroy']=function(_0x115550,_0x2dad91){return db[_0x1503('0x1e')]['find']({'where':{'id':_0x115550['params']['id']}})['then'](handleEntityNotFound(_0x2dad91,null))[_0x1503('0x18')](removeEntity(_0x2dad91,null))['catch'](handleError(_0x2dad91,null));};exports[_0x1503('0x37')]=function(_0xb882a3,_0x32f2be){return db[_0x1503('0x1e')]['describe']()['then'](respondWithResult(_0x32f2be,null))[_0x1503('0x26')](handleError(_0x32f2be,null));};exports[_0x1503('0x38')]=function(_0x115356,_0x109e93){return db[_0x1503('0x39')][_0x1503('0x34')]({'where':{'id':_0x115356[_0x1503('0x28')]['id']}})[_0x1503('0x18')](handleEntityNotFound(_0x109e93,null))[_0x1503('0x18')](function(_0x21ff81){if(_0x21ff81){return _0x21ff81['addMessage'](_0x115356[_0x1503('0x36')][_0x1503('0x3a')],_['omit'](_0x115356[_0x1503('0x36')],[_0x1503('0x3a'),'id'])||{});}})[_0x1503('0x18')](respondWithResult(_0x109e93,null))[_0x1503('0x26')](handleError(_0x109e93,null));};exports[_0x1503('0x3b')]=function(_0x51d258,_0x5c87df){var _0xc873c5={'raw':![],'where':{}};var _0x5347db={};var _0x11c06c={'count':0x0,'rows':[]};return db[_0x1503('0x1e')][_0x1503('0x3c')]({'where':{'id':_0x51d258[_0x1503('0x28')]['id']}})[_0x1503('0x18')](handleEntityNotFound(_0x5c87df,null))[_0x1503('0x18')](function(_0x536f1f){if(_0x536f1f){_0x5347db['model']=_['keys'](db['SmsMessage'][_0x1503('0x1f')]);_0x5347db[_0x1503('0x2b')]=_['keys'](_0x51d258['query']);_0x5347db['filters']=_[_0x1503('0x2d')](_0x5347db[_0x1503('0x29')],_0x5347db[_0x1503('0x2b')]);_0xc873c5['attributes']=_['intersection'](_0x5347db[_0x1503('0x29')],qs[_0x1503('0x2f')](_0x51d258['query'][_0x1503('0x2f')]));_0xc873c5[_0x1503('0x2e')]=_0xc873c5[_0x1503('0x2e')][_0x1503('0x3d')]?_0xc873c5['attributes']:_0x5347db[_0x1503('0x29')];if(!_0x51d258['query'][_0x1503('0x3e')](_0x1503('0x3f'))){_0xc873c5['limit']=qs[_0x1503('0x13')](_0x51d258[_0x1503('0x2b')][_0x1503('0x13')]);_0xc873c5[_0x1503('0x11')]=qs[_0x1503('0x11')](_0x51d258[_0x1503('0x2b')][_0x1503('0x11')]);}_0xc873c5[_0x1503('0x40')]=qs[_0x1503('0x41')](_0x51d258[_0x1503('0x2b')][_0x1503('0x41')]);_0xc873c5['where']=qs[_0x1503('0x2c')](_[_0x1503('0x42')](_0x51d258[_0x1503('0x2b')],_0x5347db[_0x1503('0x2c')]));_0xc873c5[_0x1503('0x43')][_0x1503('0x44')]=_0x536f1f['id'];if(_0x51d258['query'][_0x1503('0x45')]){_0xc873c5['where']=_['merge'](_0xc873c5[_0x1503('0x43')],{'$or':_[_0x1503('0x46')](_0xc873c5['attributes'],function(_0x46dcf4){var _0x1a47fa={};_0x1a47fa[_0x46dcf4]={'$like':'%'+_0x51d258[_0x1503('0x2b')][_0x1503('0x45')]+'%'};return _0x1a47fa;})});}if(_0x51d258['query']['$gte']){var _0x18ce2b=_0x51d258[_0x1503('0x2b')]['$gte'][_0x1503('0x47')](',');var _0x500c2a={};_0x500c2a[_0x18ce2b[0x0]]={'$gte':moment(_0x18ce2b[0x1])[_0x1503('0x48')]('YYYY-MM-DD\x20HH:mm:ss')};_0xc873c5[_0x1503('0x43')]=_[_0x1503('0x32')](_0xc873c5[_0x1503('0x43')],_0x500c2a);}_0xc873c5=_[_0x1503('0x32')]({},_0xc873c5,_0x51d258[_0x1503('0x33')]);return db[_0x1503('0x39')][_0x1503('0x14')]({'where':_0xc873c5[_0x1503('0x43')]})[_0x1503('0x18')](function(_0x1581e1){_0x11c06c[_0x1503('0x14')]=_0x1581e1;if(_0x51d258[_0x1503('0x2b')]['includeAll']){_0xc873c5[_0x1503('0x31')]=[{'all':!![]}];}return db[_0x1503('0x39')]['findAll'](_0xc873c5);})[_0x1503('0x18')](function(_0x2f8e6d){_0x11c06c[_0x1503('0x49')]=_0x2f8e6d;return _0x11c06c;});}})[_0x1503('0x18')](respondWithFilteredResult(_0x5c87df,_0xc873c5))[_0x1503('0x26')](handleError(_0x5c87df,null));};exports[_0x1503('0x4a')]=function(_0x25bd8f,_0x22009f){return db['SmsInteraction'][_0x1503('0x34')]({'where':{'id':_0x25bd8f[_0x1503('0x28')]['id']}})[_0x1503('0x18')](handleEntityNotFound(_0x22009f,null))['then'](function(_0x271aad){if(_0x271aad){return _0x271aad[_0x1503('0x4b')](_0x25bd8f['body'][_0x1503('0x3a')],_[_0x1503('0x4c')](_0x25bd8f['body'],[_0x1503('0x3a'),'id'])||{})[_0x1503('0x4d')](function(){return db[_0x1503('0x4e')][_0x1503('0x23')]({'attributes':['id','name',_0x1503('0x4f')],'where':{'id':_0x25bd8f[_0x1503('0x36')][_0x1503('0x3a')]}});})[_0x1503('0x18')](function(_0x43b131){socket[_0x1503('0x50')]('smsInteractionTags:save',{'id':Number(_0x25bd8f[_0x1503('0x28')]['id']),'tags':_0x43b131||[]});return{'id':Number(_0x25bd8f[_0x1503('0x28')]['id']),'tags':_0x43b131||[]};});}})[_0x1503('0x18')](respondWithResult(_0x22009f,null))[_0x1503('0x26')](handleError(_0x22009f,null));};exports[_0x1503('0x51')]=function(_0x3b58b8,_0x5132d8){return db[_0x1503('0x1e')][_0x1503('0x34')]({'where':{'id':_0x3b58b8[_0x1503('0x28')]['id']}})[_0x1503('0x18')](handleEntityNotFound(_0x5132d8,null))['then'](function(_0x2872e0){if(_0x2872e0){return _0x2872e0['removeTags'](_0x3b58b8[_0x1503('0x2b')][_0x1503('0x3a')]);}})['then'](respondWithStatusCode(_0x5132d8,null))[_0x1503('0x26')](handleError(_0x5132d8,null));};exports['download']=function(_0x3166ac,_0x5cf51c){var _0x714f55=moment()[_0x1503('0x52')]()[_0x1503('0x53')]();var _0x403b9c=path['join'](config[_0x1503('0x54')],'server',_0x1503('0x55'),_0x1503('0x56'));var _0x2ab44b=path['join'](_0x403b9c,_0x714f55);var _0xb3db79=util['format']('transcript-%d-%s.zip',_0x3166ac['params']['id'],_0x714f55);var _0x4db6f4=path[_0x1503('0x57')](_0x403b9c,_0xb3db79);var _0x536d43=[];_0x536d43[_0x1503('0x58')]({'model':db['User'],'as':_0x1503('0x59'),'attributes':['id',_0x1503('0x5a')],'raw':!![]});_0x536d43[_0x1503('0x58')]({'model':db[_0x1503('0x5b')],'as':_0x1503('0x5c'),'attributes':['id','firstName',_0x1503('0x5d')],'raw':!![]});var _0x26fbc4=[{'model':db['SmsMessage'],'as':_0x1503('0x5e'),'attributes':['id',_0x1503('0x36'),_0x1503('0x5f'),'direction',_0x1503('0x60'),_0x1503('0x61')],'include':_0x536d43}];_0x26fbc4[_0x1503('0x58')]({'model':db[_0x1503('0x62')],'as':_0x1503('0x63'),'attributes':['id',_0x1503('0x1b')]});_0x26fbc4[_0x1503('0x58')]({'model':db[_0x1503('0x59')],'as':'Owner','attributes':['id',_0x1503('0x5a')]});return db['SmsInteraction'][_0x1503('0x34')]({'where':{'id':_0x3166ac[_0x1503('0x28')]['id']},'include':_0x26fbc4})[_0x1503('0x18')](handleEntityNotFound(_0x5cf51c,null))['then'](function(_0x4d68ee){if(_0x4d68ee){var _0x2b2432=_0x4d68ee[_0x1503('0x64')]({'plain':!![]});fs['mkdirSync'](_0x2ab44b);var _0x16fa98={'channel':_0x1503('0x65'),'account':_0x2b2432[_0x1503('0x63')]['name'],'agent':_0x2b2432[_0x1503('0x66')]?_0x2b2432[_0x1503('0x66')]['fullname']:'N.A.','createdAt':moment(_0x2b2432[_0x1503('0x5f')])[_0x1503('0x48')](_0x1503('0x67'))[_0x1503('0x53')](),'closedAt':_0x2b2432[_0x1503('0x68')]?moment(_0x2b2432[_0x1503('0x69')])[_0x1503('0x48')](_0x1503('0x67'))[_0x1503('0x53')]():'','disposition':_0x2b2432[_0x1503('0x6a')],'messages':_(_0x2b2432[_0x1503('0x5e')])[_0x1503('0x45')]({'secret':![]})[_0x1503('0x46')](function(_0x2807a9){return{'date':moment(_0x2807a9['createdAt'])[_0x1503('0x48')](_0x1503('0x67'))[_0x1503('0x53')](),'sender':_0x2807a9[_0x1503('0x6b')]===_0x1503('0x6c')?_0x2807a9[_0x1503('0x59')]?_0x2807a9[_0x1503('0x59')][_0x1503('0x5a')]:_0x1503('0x6d'):_0x2807a9['Contact'][_0x1503('0x6e')]+(_0x2807a9[_0x1503('0x5c')]['lastName']?'\x20'+_0x2807a9['Contact'][_0x1503('0x5d')]:''),'body':_0x2807a9['body'],'direction':_0x2807a9[_0x1503('0x6b')]===_0x1503('0x6c')?'A':'C','secret':_0x2807a9[_0x1503('0x60')],'read':_0x2807a9[_0x1503('0x61')]};})[_0x1503('0x6f')]()};return ejs[_0x1503('0x70')](path[_0x1503('0x57')](config[_0x1503('0x54')],_0x1503('0x71'),_0x1503('0x72'),_0x1503('0x73')),{'interaction':_0x16fa98})[_0x1503('0x18')](function(_0x1eba70){var _0x3f0c38=path[_0x1503('0x57')](_0x2ab44b,_0x1503('0x74')+_0x2b2432['id']+'-'+_0x714f55+_0x1503('0x75'));var _0x230565={'path':_0x3f0c38,'channel':_0x1503('0x65'),'interactionId':_0x2b2432['id']};return pdf[_0x1503('0x76')](_0x1eba70,_0x230565);})[_0x1503('0x18')](function(){return new BPromise(function(_0x2495d3,_0x3e3229){zipdir(_0x2ab44b,{'saveTo':_0x4db6f4},function(_0x5a04c3,_0x58a06b){if(_0x5a04c3)return _0x3e3229(_0x5a04c3);return _0x2495d3(_0x58a06b);});})[_0x1503('0x18')](function(){return new BPromise(function(_0x401460,_0x1c2805){rimraf(_0x2ab44b,function(_0x281db9){if(_0x281db9)_0x1c2805(_0x281db9);return _0x401460();});});})[_0x1503('0x18')](function(){return _0x5cf51c[_0x1503('0x77')](_0x4db6f4,_0xb3db79,function(_0x46a639){if(_0x46a639){console[_0x1503('0x78')](_0x1503('0x79'),_0x46a639);}else{fs['unlinkSync'](_0x4db6f4);}});});});}else{return _0x5cf51c['sendStatus'](0xc8);}})[_0x1503('0x26')](handleError(_0x5cf51c,null));};
\ No newline at end of file
index 978c521..03a5059 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c3c=['events','../../mysqldb','SmsInteraction','setMaxListeners','save','update','remove','getUsers','Users','map','findAll','then','setDataValue','unreadMessages','emit','catch','hook','exports'];(function(_0x313bd3,_0xec7f3a){var _0x2125e9=function(_0x5b3f9a){while(--_0x5b3f9a){_0x313bd3['push'](_0x313bd3['shift']());}};_0x2125e9(++_0xec7f3a);}(_0x5c3c,0x132));var _0xc5c3=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0x5c3c[_0x49ca18];return _0x145d54;};'use strict';var EventEmitter=require(_0xc5c3('0x0'));var SmsInteraction=require(_0xc5c3('0x1'))['db'][_0xc5c3('0x2')];var SmsMessage=require(_0xc5c3('0x1'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0xc5c3('0x3')](0x0);var events={'afterCreate':_0xc5c3('0x4'),'afterUpdate':_0xc5c3('0x5'),'afterDestroy':_0xc5c3('0x6')};function emitEvent(_0x2535e0){return function(_0x36525d,_0xe85098,_0x23a6b5){_0x36525d[_0xc5c3('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x4b8404){_0x36525d['setDataValue'](_0xc5c3('0x8'),_0x4b8404[_0xc5c3('0x9')](function(_0x593b35){return{'id':_0x593b35['id']};}));return SmsMessage[_0xc5c3('0xa')]({'where':{'SmsInteractionId':_0x36525d['id'],'direction':'in','read':![]},'raw':!![]});})[_0xc5c3('0xb')](function(_0x52f3eb){_0x36525d[_0xc5c3('0xc')](_0xc5c3('0xd'),_0x52f3eb['length']);SmsInteractionEvents[_0xc5c3('0xe')](_0x2535e0+':'+_0x36525d['id'],_0x36525d);SmsInteractionEvents[_0xc5c3('0xe')](_0x2535e0,_0x36525d);_0x23a6b5(null);})[_0xc5c3('0xf')](_0x23a6b5(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction[_0xc5c3('0x10')](e,emitEvent(event));}}module[_0xc5c3('0x11')]=SmsInteractionEvents;
\ No newline at end of file
+var _0x93e9=['getUsers','then','setDataValue','map','findAll','unreadMessages','emit','hook','events','../../mysqldb','SmsInteraction','SmsMessage','setMaxListeners','save'];(function(_0x22ad1d,_0xf35cc){var _0xbeed0f=function(_0x57b994){while(--_0x57b994){_0x22ad1d['push'](_0x22ad1d['shift']());}};_0xbeed0f(++_0xf35cc);}(_0x93e9,0xcc));var _0x993e=function(_0xb9c8d3,_0x1c9980){_0xb9c8d3=_0xb9c8d3-0x0;var _0x48e6a8=_0x93e9[_0xb9c8d3];return _0x48e6a8;};'use strict';var EventEmitter=require(_0x993e('0x0'));var SmsInteraction=require(_0x993e('0x1'))['db'][_0x993e('0x2')];var SmsMessage=require(_0x993e('0x1'))['db'][_0x993e('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x993e('0x4')](0x0);var events={'afterCreate':_0x993e('0x5'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x1b762e){return function(_0x255045,_0x15ce9b,_0x45f52e){_0x255045[_0x993e('0x6')]({'attributes':['id'],'raw':!![]})[_0x993e('0x7')](function(_0x12ac94){_0x255045[_0x993e('0x8')]('Users',_0x12ac94[_0x993e('0x9')](function(_0x69ff1){return{'id':_0x69ff1['id']};}));return SmsMessage[_0x993e('0xa')]({'where':{'SmsInteractionId':_0x255045['id'],'direction':'in','read':![]},'raw':!![]});})[_0x993e('0x7')](function(_0x2cd389){_0x255045[_0x993e('0x8')](_0x993e('0xb'),_0x2cd389['length']);SmsInteractionEvents[_0x993e('0xc')](_0x1b762e+':'+_0x255045['id'],_0x255045);SmsInteractionEvents[_0x993e('0xc')](_0x1b762e,_0x255045);_0x45f52e(null);})['catch'](_0x45f52e(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction[_0x993e('0xd')](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
index ec45180..b1f8ce5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x031e=['lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./smsInteraction.attributes','exports','define','SmsInteraction','sms_interactions','changed','closedAt','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x4c1052,_0x385e7a){var _0x3ebcdd=function(_0x1b98cd){while(--_0x1b98cd){_0x4c1052['push'](_0x4c1052['shift']());}};_0x3ebcdd(++_0x385e7a);}(_0x031e,0x1d0));var _0xe031=function(_0x4828b1,_0x5c8cf3){_0x4828b1=_0x4828b1-0x0;var _0x1fec1b=_0x031e[_0x4828b1];return _0x1fec1b;};'use strict';var _=require(_0xe031('0x0'));var util=require('util');var logger=require(_0xe031('0x1'))(_0xe031('0x2'));var moment=require(_0xe031('0x3'));var BPromise=require(_0xe031('0x4'));var rp=require(_0xe031('0x5'));var fs=require('fs');var path=require(_0xe031('0x6'));var rimraf=require('rimraf');var config=require(_0xe031('0x7'));var attributes=require(_0xe031('0x8'));module[_0xe031('0x9')]=function(_0x21f276,_0x574282){return _0x21f276[_0xe031('0xa')](_0xe031('0xb'),attributes,{'tableName':_0xe031('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4203fd,_0x4ae18b,_0x5083e7){if(_0x4203fd[_0xe031('0xd')]('closed')){_0x4203fd[_0xe031('0xe')]=moment()['format'](_0xe031('0xf'));}_0x5083e7(null,_0x4203fd);}}});};
\ No newline at end of file
+var _0xc9e4=['path','rimraf','exports','define','SmsInteraction','sms_interactions','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','request-promise'];(function(_0x3034a4,_0x1b3d2b){var _0x44183f=function(_0x11205b){while(--_0x11205b){_0x3034a4['push'](_0x3034a4['shift']());}};_0x44183f(++_0x1b3d2b);}(_0xc9e4,0xa0));var _0x4c9e=function(_0x327d6e,_0x5923bd){_0x327d6e=_0x327d6e-0x0;var _0x4dc5d3=_0xc9e4[_0x327d6e];return _0x4dc5d3;};'use strict';var _=require(_0x4c9e('0x0'));var util=require(_0x4c9e('0x1'));var logger=require(_0x4c9e('0x2'))(_0x4c9e('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x4c9e('0x4'));var fs=require('fs');var path=require(_0x4c9e('0x5'));var rimraf=require(_0x4c9e('0x6'));var config=require('../../config/environment');var attributes=require('./smsInteraction.attributes');module[_0x4c9e('0x7')]=function(_0x384093,_0x227f05){return _0x384093[_0x4c9e('0x8')](_0x4c9e('0x9'),attributes,{'tableName':_0x4c9e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1e9994,_0x6c7ec4,_0x2293d9){if(_0x1e9994[_0x4c9e('0xb')](_0x4c9e('0xc'))){_0x1e9994[_0x4c9e('0xd')]=moment()['format'](_0x4c9e('0xe'));}_0x2293d9(null,_0x1e9994);}}});};
\ No newline at end of file
index 6929b6d..5f06f71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7de=['result','catch','SmsInteraction','update','options','raw','where','attributes','UpdateSmsInteraction','debug','AddTagsToSmsInteraction','find','addTags','body','ids','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x81dcac,_0x8ff7db){var _0xc7803b=function(_0x499b29){while(--_0x499b29){_0x81dcac['push'](_0x81dcac['shift']());}};_0xc7803b(++_0x8ff7db);}(_0xb7de,0x92));var _0xeb7d=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xb7de[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0xeb7d('0x0'));var util=require(_0xeb7d('0x1'));var moment=require('moment');var BPromise=require(_0xeb7d('0x2'));var rs=require(_0xeb7d('0x3'));var fs=require('fs');var Redis=require(_0xeb7d('0x4'));var db=require(_0xeb7d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xeb7d('0x6'))(_0xeb7d('0x7'));var config=require(_0xeb7d('0x8'));var jayson=require(_0xeb7d('0x9'));var client=jayson['client'][_0xeb7d('0xa')]({'port':0x232a});config[_0xeb7d('0xb')]=_[_0xeb7d('0xc')](config[_0xeb7d('0xb')],{'host':_0xeb7d('0xd'),'port':0x18eb});var socket=require(_0xeb7d('0xe'))(new Redis(config[_0xeb7d('0xb')]));require(_0xeb7d('0xf'))[_0xeb7d('0x10')](socket);function respondWithRpcPromise(_0x12b47b,_0x4252e3,_0x193c89){return new BPromise(function(_0x3811c3,_0x35a9b4){return client[_0xeb7d('0x11')](_0x12b47b,_0x193c89)[_0xeb7d('0x12')](function(_0x1d8766){logger[_0xeb7d('0x13')](_0xeb7d('0x14'),_0x4252e3,_0xeb7d('0x15'));logger['debug']('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x4252e3,_0xeb7d('0x15'),JSON[_0xeb7d('0x16')](_0x1d8766));if(_0x1d8766[_0xeb7d('0x17')]){if(_0x1d8766[_0xeb7d('0x17')][_0xeb7d('0x18')]===0x1f4){logger[_0xeb7d('0x17')](_0xeb7d('0x14'),_0x4252e3,_0x1d8766[_0xeb7d('0x17')]['message']);return _0x35a9b4(_0x1d8766[_0xeb7d('0x17')][_0xeb7d('0x19')]);}logger[_0xeb7d('0x17')](_0xeb7d('0x14'),_0x4252e3,_0x1d8766[_0xeb7d('0x17')][_0xeb7d('0x19')]);return _0x3811c3(_0x1d8766[_0xeb7d('0x17')]['message']);}else{logger[_0xeb7d('0x13')](_0xeb7d('0x14'),_0x4252e3,_0xeb7d('0x15'));_0x3811c3(_0x1d8766[_0xeb7d('0x1a')][_0xeb7d('0x19')]);}})[_0xeb7d('0x1b')](function(_0xe602a2){logger[_0xeb7d('0x17')](_0xeb7d('0x14'),_0x4252e3,_0xe602a2);_0x35a9b4(_0xe602a2);});});}exports['UpdateSmsInteraction']=function(_0x32393d){var _0x32938e=this;return new Promise(function(_0x41b708,_0x170126){return db[_0xeb7d('0x1c')][_0xeb7d('0x1d')](_0x32393d['body'],{'raw':_0x32393d['options']?_0x32393d[_0xeb7d('0x1e')][_0xeb7d('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x32393d[_0xeb7d('0x1e')]?_0x32393d[_0xeb7d('0x1e')][_0xeb7d('0x20')]||null:null,'attributes':_0x32393d[_0xeb7d('0x1e')]?_0x32393d[_0xeb7d('0x1e')][_0xeb7d('0x21')]||null:null,'limit':_0x32393d[_0xeb7d('0x1e')]?_0x32393d['options']['limit']||null:null})[_0xeb7d('0x12')](function(_0x306bd5){logger[_0xeb7d('0x13')](_0xeb7d('0x22'),_0x32393d);logger[_0xeb7d('0x23')]('UpdateSmsInteraction',_0x32393d,JSON[_0xeb7d('0x16')](_0x306bd5));_0x41b708(_0x306bd5);})[_0xeb7d('0x1b')](function(_0x77288d){logger['error'](_0xeb7d('0x22'),_0x77288d['message'],_0x32393d);_0x170126(_0x32938e[_0xeb7d('0x17')](0x1f4,_0x77288d[_0xeb7d('0x19')]));});});};exports[_0xeb7d('0x24')]=function(_0x1ef92d){return new Promise(function(_0x3b0531,_0x53e608){return db['SmsInteraction'][_0xeb7d('0x25')]({'where':_0x1ef92d['options']?_0x1ef92d[_0xeb7d('0x1e')]['where']||null:null})['then'](function(_0xe55335){if(_0xe55335){return _0xe55335[_0xeb7d('0x26')](_0x1ef92d[_0xeb7d('0x27')][_0xeb7d('0x28')],_['omit'](_0x1ef92d[_0xeb7d('0x27')],[_0xeb7d('0x28'),'id'])||{});}})[_0xeb7d('0x29')](function(_0x27e1ab){logger[_0xeb7d('0x13')](_0xeb7d('0x2a'),_0x1ef92d);logger['debug'](_0xeb7d('0x2a'),_0x1ef92d,JSON['stringify'](_0x27e1ab));_0x3b0531(_0x27e1ab);})[_0xeb7d('0x1b')](function(_0x16650e){logger['error']('AddTags',_0x16650e[_0xeb7d('0x19')],_0x1ef92d);_0x53e608(_this[_0xeb7d('0x17')](0x1f4,_0x16650e[_0xeb7d('0x19')]));});});};
\ No newline at end of file
+var _0xa731=['register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','UpdateSmsInteraction','update','body','options','where','attributes','AddTagsToSmsInteraction','SmsInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults','localhost'];(function(_0x5e6e6a,_0x5bf0c7){var _0x40f692=function(_0x42e591){while(--_0x42e591){_0x5e6e6a['push'](_0x5e6e6a['shift']());}};_0x40f692(++_0x5bf0c7);}(_0xa731,0x1b5));var _0x1a73=function(_0x28863c,_0x4b14c0){_0x28863c=_0x28863c-0x0;var _0x9bb2c1=_0xa731[_0x28863c];return _0x9bb2c1;};'use strict';var _=require(_0x1a73('0x0'));var util=require(_0x1a73('0x1'));var moment=require('moment');var BPromise=require(_0x1a73('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1a73('0x3'));var db=require(_0x1a73('0x4'))['db'];var utils=require(_0x1a73('0x5'));var logger=require(_0x1a73('0x6'))(_0x1a73('0x7'));var config=require(_0x1a73('0x8'));var jayson=require(_0x1a73('0x9'));var client=jayson[_0x1a73('0xa')]['http']({'port':0x232a});config[_0x1a73('0xb')]=_[_0x1a73('0xc')](config[_0x1a73('0xb')],{'host':_0x1a73('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1a73('0xb')]));require('./smsInteraction.socket')[_0x1a73('0xe')](socket);function respondWithRpcPromise(_0x1161c4,_0x3f3e0b,_0x19ddd5){return new BPromise(function(_0x4940f3,_0x2fe70d){return client[_0x1a73('0xf')](_0x1161c4,_0x19ddd5)[_0x1a73('0x10')](function(_0x38278b){logger[_0x1a73('0x11')](_0x1a73('0x12'),_0x3f3e0b,_0x1a73('0x13'));logger[_0x1a73('0x14')](_0x1a73('0x15'),_0x3f3e0b,_0x1a73('0x13'),JSON[_0x1a73('0x16')](_0x38278b));if(_0x38278b[_0x1a73('0x17')]){if(_0x38278b['error']['code']===0x1f4){logger[_0x1a73('0x17')](_0x1a73('0x12'),_0x3f3e0b,_0x38278b['error']['message']);return _0x2fe70d(_0x38278b[_0x1a73('0x17')][_0x1a73('0x18')]);}logger[_0x1a73('0x17')](_0x1a73('0x12'),_0x3f3e0b,_0x38278b[_0x1a73('0x17')]['message']);return _0x4940f3(_0x38278b[_0x1a73('0x17')][_0x1a73('0x18')]);}else{logger[_0x1a73('0x11')](_0x1a73('0x12'),_0x3f3e0b,_0x1a73('0x13'));_0x4940f3(_0x38278b[_0x1a73('0x19')][_0x1a73('0x18')]);}})[_0x1a73('0x1a')](function(_0x4632cc){logger[_0x1a73('0x17')](_0x1a73('0x12'),_0x3f3e0b,_0x4632cc);_0x2fe70d(_0x4632cc);});});}exports[_0x1a73('0x1b')]=function(_0x2cb063){var _0x574383=this;return new Promise(function(_0x466c62,_0x2722a6){return db['SmsInteraction'][_0x1a73('0x1c')](_0x2cb063[_0x1a73('0x1d')],{'raw':_0x2cb063[_0x1a73('0x1e')]?_0x2cb063['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2cb063['options']?_0x2cb063['options'][_0x1a73('0x1f')]||null:null,'attributes':_0x2cb063[_0x1a73('0x1e')]?_0x2cb063[_0x1a73('0x1e')][_0x1a73('0x20')]||null:null,'limit':_0x2cb063[_0x1a73('0x1e')]?_0x2cb063[_0x1a73('0x1e')]['limit']||null:null})[_0x1a73('0x10')](function(_0x4d5d28){logger[_0x1a73('0x11')](_0x1a73('0x1b'),_0x2cb063);logger[_0x1a73('0x14')](_0x1a73('0x1b'),_0x2cb063,JSON[_0x1a73('0x16')](_0x4d5d28));_0x466c62(_0x4d5d28);})[_0x1a73('0x1a')](function(_0x52b0b0){logger[_0x1a73('0x17')](_0x1a73('0x1b'),_0x52b0b0[_0x1a73('0x18')],_0x2cb063);_0x2722a6(_0x574383[_0x1a73('0x17')](0x1f4,_0x52b0b0[_0x1a73('0x18')]));});});};exports[_0x1a73('0x21')]=function(_0x52449a){return new Promise(function(_0x257f99,_0x2bce3c){return db[_0x1a73('0x22')][_0x1a73('0x23')]({'where':_0x52449a[_0x1a73('0x1e')]?_0x52449a[_0x1a73('0x1e')][_0x1a73('0x1f')]||null:null})[_0x1a73('0x10')](function(_0xe89086){if(_0xe89086){return _0xe89086[_0x1a73('0x24')](_0x52449a['body'][_0x1a73('0x25')],_[_0x1a73('0x26')](_0x52449a['body'],[_0x1a73('0x25'),'id'])||{});}})[_0x1a73('0x27')](function(_0x168870){logger[_0x1a73('0x11')]('AddTags',_0x52449a);logger[_0x1a73('0x14')](_0x1a73('0x28'),_0x52449a,JSON[_0x1a73('0x16')](_0x168870));_0x257f99(_0x168870);})[_0x1a73('0x1a')](function(_0x31d084){logger[_0x1a73('0x17')]('AddTags',_0x31d084['message'],_0x52449a);_0x2bce3c(_this[_0x1a73('0x17')](0x1f4,_0x31d084['message']));});});};
\ No newline at end of file
index 9c78316..7b41529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d19=['smsInteraction:','./smsInteraction.events','remove','update','emit','removeListener','register','length'];(function(_0xbb14db,_0x3ee8c6){var _0x36bed7=function(_0x16c478){while(--_0x16c478){_0xbb14db['push'](_0xbb14db['shift']());}};_0x36bed7(++_0x3ee8c6);}(_0x1d19,0xb1));var _0x91d1=function(_0x53a79a,_0x75fb0a){_0x53a79a=_0x53a79a-0x0;var _0x3ab77a=_0x1d19[_0x53a79a];return _0x3ab77a;};'use strict';var SmsInteractionEvents=require(_0x91d1('0x0'));var events=['save',_0x91d1('0x1'),_0x91d1('0x2')];function createListener(_0x33a1c9,_0x118d51){return function(_0x1a8244){_0x118d51[_0x91d1('0x3')](_0x33a1c9,_0x1a8244);};}function removeListener(_0x2d470c,_0x349f3e){return function(){SmsInteractionEvents[_0x91d1('0x4')](_0x2d470c,_0x349f3e);};}exports[_0x91d1('0x5')]=function(_0x37311d){for(var _0xde4117=0x0,_0x29bf64=events[_0x91d1('0x6')];_0xde4117<_0x29bf64;_0xde4117++){var _0x4ea41c=events[_0xde4117];var _0x11422f=createListener(_0x91d1('0x7')+_0x4ea41c,_0x37311d);SmsInteractionEvents['on'](_0x4ea41c,_0x11422f);}};
\ No newline at end of file
+var _0x32ef=['length','smsInteraction:','./smsInteraction.events','save','remove','update','emit','removeListener'];(function(_0x3c0aff,_0x26d0e4){var _0xee92c0=function(_0x6c9765){while(--_0x6c9765){_0x3c0aff['push'](_0x3c0aff['shift']());}};_0xee92c0(++_0x26d0e4);}(_0x32ef,0x152));var _0xf32e=function(_0x56c2be,_0x1c2e85){_0x56c2be=_0x56c2be-0x0;var _0x19ad1f=_0x32ef[_0x56c2be];return _0x19ad1f;};'use strict';var SmsInteractionEvents=require(_0xf32e('0x0'));var events=[_0xf32e('0x1'),_0xf32e('0x2'),_0xf32e('0x3')];function createListener(_0x3d99ee,_0x5cc7ca){return function(_0x29f693){_0x5cc7ca[_0xf32e('0x4')](_0x3d99ee,_0x29f693);};}function removeListener(_0x3fc546,_0x57115e){return function(){SmsInteractionEvents[_0xf32e('0x5')](_0x3fc546,_0x57115e);};}exports['register']=function(_0x27cedc){for(var _0x8a8853=0x0,_0x2cc05e=events[_0xf32e('0x6')];_0x8a8853<_0x2cc05e;_0x8a8853++){var _0x3fcc36=events[_0x8a8853];var _0x1b91dc=createListener(_0xf32e('0x7')+_0x3fcc36,_0x27cedc);SmsInteractionEvents['on'](_0x3fcc36,_0x1b91dc);}};
\ No newline at end of file
index f903a6f..7e377f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23db=['sms','/:id/status','put','update','/:id/accept','/:id/reject','reject','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','tracked'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x23db,0x141));var _0xb23d=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x23db[_0x31e29a];return _0x32d892;};'use strict';var multer=require(_0xb23d('0x0'));var util=require(_0xb23d('0x1'));var path=require(_0xb23d('0x2'));var timeout=require(_0xb23d('0x3'));var express=require(_0xb23d('0x4'));var router=express[_0xb23d('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb23d('0x6'));var config=require(_0xb23d('0x7'));var controller=require('./smsMessage.controller');router[_0xb23d('0x8')]('/',auth[_0xb23d('0x9')](),controller[_0xb23d('0xa')]);router[_0xb23d('0x8')](_0xb23d('0xb'),auth[_0xb23d('0x9')](),controller[_0xb23d('0xc')]);router[_0xb23d('0x8')](_0xb23d('0xd'),auth['isAuthenticated'](),controller[_0xb23d('0xe')]);router[_0xb23d('0xf')]('/',auth[_0xb23d('0x9')](),interaction[_0xb23d('0x10')](_0xb23d('0x11'),'smsmessage:create'),controller['create']);router['post'](_0xb23d('0x12'),controller['status']);router[_0xb23d('0x13')](_0xb23d('0xd'),auth[_0xb23d('0x9')](),controller[_0xb23d('0x14')]);router[_0xb23d('0x13')](_0xb23d('0x15'),auth[_0xb23d('0x9')](),controller['accept']);router[_0xb23d('0x13')](_0xb23d('0x16'),auth[_0xb23d('0x9')](),controller[_0xb23d('0x17')]);router[_0xb23d('0x18')](_0xb23d('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xb23d('0x19')]=router;
\ No newline at end of file
+var _0xd159=['/:id','show','post','tracked','sms','create','/:id/status','status','put','update','/:id/accept','accept','delete','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsMessage.controller','isAuthenticated','get','/describe'];(function(_0x39f112,_0x1570a4){var _0x295a51=function(_0x8de886){while(--_0x8de886){_0x39f112['push'](_0x39f112['shift']());}};_0x295a51(++_0x1570a4);}(_0xd159,0x19d));var _0x9d15=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd159[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x9d15('0x0'));var util=require(_0x9d15('0x1'));var path=require(_0x9d15('0x2'));var timeout=require(_0x9d15('0x3'));var express=require('express');var router=express[_0x9d15('0x4')]();var fs_extra=require(_0x9d15('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9d15('0x6'));var config=require(_0x9d15('0x7'));var controller=require(_0x9d15('0x8'));router['get']('/',auth[_0x9d15('0x9')](),controller['index']);router[_0x9d15('0xa')](_0x9d15('0xb'),auth[_0x9d15('0x9')](),controller['describe']);router[_0x9d15('0xa')](_0x9d15('0xc'),auth[_0x9d15('0x9')](),controller[_0x9d15('0xd')]);router[_0x9d15('0xe')]('/',auth[_0x9d15('0x9')](),interaction[_0x9d15('0xf')](_0x9d15('0x10'),'smsmessage:create'),controller[_0x9d15('0x11')]);router['post'](_0x9d15('0x12'),controller[_0x9d15('0x13')]);router[_0x9d15('0x14')](_0x9d15('0xc'),auth[_0x9d15('0x9')](),controller[_0x9d15('0x15')]);router[_0x9d15('0x14')](_0x9d15('0x16'),auth['isAuthenticated'](),controller[_0x9d15('0x17')]);router[_0x9d15('0x14')]('/:id/reject',auth[_0x9d15('0x9')](),controller['reject']);router[_0x9d15('0x18')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index d4e2562..43963c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40fd=['STRING','sequelize','TEXT','BOOLEAN','ENUM','out'];(function(_0x541f70,_0x5781d0){var _0x1794de=function(_0x128a4f){while(--_0x128a4f){_0x541f70['push'](_0x541f70['shift']());}};_0x1794de(++_0x5781d0);}(_0x40fd,0x187));var _0xd40f=function(_0x58fbb0,_0xe497b5){_0x58fbb0=_0x58fbb0-0x0;var _0x1783d2=_0x40fd[_0x58fbb0];return _0x1783d2;};'use strict';var Sequelize=require(_0xd40f('0x0'));module['exports']={'body':{'type':Sequelize[_0xd40f('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xd40f('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0xd40f('0x3')]('in',_0xd40f('0x4')),'defaultValue':_0xd40f('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0xd40f('0x5')](0xbe)},'phone':{'type':Sequelize[_0xd40f('0x5')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize[_0xd40f('0x2')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xd40f('0x5')]},'providerResponse':{'type':Sequelize[_0xd40f('0x1')]}};
\ No newline at end of file
+var _0x921f=['BOOLEAN','ENUM','out','STRING','DATE','exports','TEXT'];(function(_0x17038a,_0xfbda08){var _0x1a0aa1=function(_0x37d250){while(--_0x37d250){_0x17038a['push'](_0x17038a['shift']());}};_0x1a0aa1(++_0xfbda08);}(_0x921f,0x186));var _0xf921=function(_0x523cbc,_0x37a831){_0x523cbc=_0x523cbc-0x0;var _0x5d0eb8=_0x921f[_0x523cbc];return _0x5d0eb8;};'use strict';var Sequelize=require('sequelize');module[_0xf921('0x0')]={'body':{'type':Sequelize[_0xf921('0x1')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xf921('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0xf921('0x3')]('in','out'),'defaultValue':_0xf921('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0xf921('0x5')](0xbe)},'phone':{'type':Sequelize[_0xf921('0x5')]},'readAt':{'type':Sequelize[_0xf921('0x6')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0xf921('0x5')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 851f99e..43a898f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e56=['set','Content-Range','apply','reject','save','update','stack','name','send','index','map','SmsMessage','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','VIRTUAL','options','findAll','rows','show','params','includeAll','include','merge','find','body','describe','sms-interactions','sms','read','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','SmsInteraction','SmsInteractionId','isNil','format','info','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','contact','fullname','internal','manual','interface','SIP/%s','channel','motionChannel','event','accept','EventManager','acceptmessage','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','Sequelize','User','email','rejectmessage','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','messageId','sent','Status','plivio','infobip','groupName','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./smsMessage.socket','register','client','http','request','then','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','SmsMessage,\x20%s,\x20%s','message','catch','sendStatus','status','end','json','offset','undefined','limit','count'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0x0e56,0xf5));var _0x60e5=function(_0x1a595a,_0x263824){_0x1a595a=_0x1a595a-0x0;var _0x33f008=_0x0e56[_0x1a595a];return _0x33f008;};'use strict';var emlformat=require(_0x60e5('0x0'));var rimraf=require(_0x60e5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x60e5('0x2'));var rp=require(_0x60e5('0x3'));var moment=require('moment');var BPromise=require(_0x60e5('0x4'));var Mustache=require(_0x60e5('0x5'));var util=require(_0x60e5('0x6'));var path=require(_0x60e5('0x7'));var sox=require(_0x60e5('0x8'));var csv=require(_0x60e5('0x9'));var ejs=require(_0x60e5('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x60e5('0xb'));var squel=require(_0x60e5('0xc'));var crypto=require(_0x60e5('0xd'));var jsforce=require(_0x60e5('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x60e5('0x9'));var querystring=require(_0x60e5('0xf'));var Papa=require(_0x60e5('0x10'));var Redis=require(_0x60e5('0x11'));var authService=require(_0x60e5('0x12'));var qs=require(_0x60e5('0x13'));var as=require(_0x60e5('0x14'));var hardwareService=require(_0x60e5('0x15'));var logger=require(_0x60e5('0x16'))(_0x60e5('0x17'));var utils=require(_0x60e5('0x18'));var config=require(_0x60e5('0x19'));var licenseUtil=require(_0x60e5('0x1a'));var db=require(_0x60e5('0x1b'))['db'];config[_0x60e5('0x1c')]=_[_0x60e5('0x1d')](config['redis'],{'host':_0x60e5('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x60e5('0x1f'))[_0x60e5('0x20')](socket);var jayson=require('jayson/promise');var client=jayson[_0x60e5('0x21')][_0x60e5('0x22')]({'port':0x232c});var client9002=jayson[_0x60e5('0x21')][_0x60e5('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x546cfc,_0x23a88e,_0x622ead,_0x3fbc43){return new BPromise(function(_0x1ed08d,_0x39a5a0){var _0x1df84a=_0x3fbc43||client;return _0x1df84a[_0x60e5('0x23')](_0x546cfc,_0x622ead)[_0x60e5('0x24')](function(_0x3060b6){logger['info']('SmsMessage,\x20%s,\x20%s',_0x23a88e,'request\x20sent');logger['debug'](_0x60e5('0x25'),_0x23a88e,_0x60e5('0x26'),JSON[_0x60e5('0x27')](_0x3060b6));if(_0x3060b6['error']){if(_0x3060b6[_0x60e5('0x28')][_0x60e5('0x29')]===0x1f4){logger[_0x60e5('0x28')](_0x60e5('0x2a'),_0x23a88e,_0x3060b6[_0x60e5('0x28')][_0x60e5('0x2b')]);return _0x39a5a0(_0x3060b6[_0x60e5('0x28')][_0x60e5('0x2b')]);}logger[_0x60e5('0x28')](_0x60e5('0x2a'),_0x23a88e,_0x3060b6[_0x60e5('0x28')]['message']);return _0x1ed08d(_0x3060b6['error'][_0x60e5('0x2b')]);}else{logger['info']('SmsMessage,\x20%s,\x20%s',_0x23a88e,_0x60e5('0x26'));_0x1ed08d(_0x3060b6['result'][_0x60e5('0x2b')]);}})[_0x60e5('0x2c')](function(_0x476d0a){logger[_0x60e5('0x28')](_0x60e5('0x2a'),_0x23a88e,_0x476d0a);_0x39a5a0(_0x476d0a);});});}function respondWithStatusCode(_0x59e702,_0x1b23bc){_0x1b23bc=_0x1b23bc||0xcc;return function(_0x4fdcda){if(_0x4fdcda){return _0x59e702[_0x60e5('0x2d')](_0x1b23bc);}return _0x59e702[_0x60e5('0x2e')](_0x1b23bc)[_0x60e5('0x2f')]();};}function respondWithResult(_0x59d16f,_0xefae42){_0xefae42=_0xefae42||0xc8;return function(_0x1f6eb4){if(_0x1f6eb4){return _0x59d16f['status'](_0xefae42)[_0x60e5('0x30')](_0x1f6eb4);}};}function respondWithFilteredResult(_0xd10ec1,_0x46ebed){return function(_0x49ba26){if(_0x49ba26){var _0xb1d302=typeof _0x46ebed[_0x60e5('0x31')]===_0x60e5('0x32')&&typeof _0x46ebed[_0x60e5('0x33')]===_0x60e5('0x32');var _0x40ce94=_0x49ba26[_0x60e5('0x34')];var _0x22116d=_0xb1d302?0x0:_0x46ebed[_0x60e5('0x31')];var _0x3bc937=_0xb1d302?_0x49ba26[_0x60e5('0x34')]:_0x46ebed[_0x60e5('0x31')]+_0x46ebed['limit'];var _0x22be5e;if(_0x3bc937>=_0x40ce94){_0x3bc937=_0x40ce94;_0x22be5e=0xc8;}else{_0x22be5e=0xce;}_0xd10ec1[_0x60e5('0x2e')](_0x22be5e);return _0xd10ec1[_0x60e5('0x35')](_0x60e5('0x36'),_0x22116d+'-'+_0x3bc937+'/'+_0x40ce94)['json'](_0x49ba26);}return null;};}function patchUpdates(_0x4842a4){return function(_0x4aa55f){try{jsonpatch[_0x60e5('0x37')](_0x4aa55f,_0x4842a4,!![]);}catch(_0x2e2961){return BPromise[_0x60e5('0x38')](_0x2e2961);}return _0x4aa55f[_0x60e5('0x39')]();};}function saveUpdates(_0x13fbb8,_0x4ddabe){return function(_0x1f0c0b){if(_0x1f0c0b){return _0x1f0c0b[_0x60e5('0x3a')](_0x13fbb8)[_0x60e5('0x24')](function(_0x1b0988){return _0x1b0988;});}return null;};}function removeEntity(_0x5d8fce,_0x53b686){return function(_0x43c8ed){if(_0x43c8ed){return _0x43c8ed['destroy']()[_0x60e5('0x24')](function(){_0x5d8fce[_0x60e5('0x2e')](0xcc)[_0x60e5('0x2f')]();});}};}function handleEntityNotFound(_0x1d0e5f,_0x5ce922){return function(_0x308ec1){if(!_0x308ec1){_0x1d0e5f[_0x60e5('0x2d')](0x194);}return _0x308ec1;};}function handleError(_0x1bbb7d,_0x19c964){_0x19c964=_0x19c964||0x1f4;return function(_0x495a19){logger[_0x60e5('0x28')](_0x495a19[_0x60e5('0x3b')]);if(_0x495a19[_0x60e5('0x3c')]){delete _0x495a19['name'];}_0x1bbb7d[_0x60e5('0x2e')](_0x19c964)[_0x60e5('0x3d')](_0x495a19);};}exports[_0x60e5('0x3e')]=function(_0x2f3bfd,_0x29ee1b){var _0x1f8fcd={},_0x4fa4c9={},_0x493398={'count':0x0,'rows':[]};var _0x437351=_[_0x60e5('0x3f')](db[_0x60e5('0x40')]['rawAttributes'],function(_0x4c5af7){return{'name':_0x4c5af7[_0x60e5('0x41')],'type':_0x4c5af7[_0x60e5('0x42')][_0x60e5('0x43')]};});_0x4fa4c9[_0x60e5('0x44')]=_['map'](_0x437351,_0x60e5('0x3c'));_0x4fa4c9[_0x60e5('0x45')]=_[_0x60e5('0x46')](_0x2f3bfd[_0x60e5('0x45')]);_0x4fa4c9[_0x60e5('0x47')]=_[_0x60e5('0x48')](_0x4fa4c9[_0x60e5('0x44')],_0x4fa4c9['query']);_0x1f8fcd[_0x60e5('0x49')]=_[_0x60e5('0x48')](_0x4fa4c9[_0x60e5('0x44')],qs[_0x60e5('0x4a')](_0x2f3bfd[_0x60e5('0x45')][_0x60e5('0x4a')]));_0x1f8fcd[_0x60e5('0x49')]=_0x1f8fcd[_0x60e5('0x49')][_0x60e5('0x4b')]?_0x1f8fcd[_0x60e5('0x49')]:_0x4fa4c9['model'];if(!_0x2f3bfd[_0x60e5('0x45')][_0x60e5('0x4c')]('nolimit')){_0x1f8fcd[_0x60e5('0x33')]=qs[_0x60e5('0x33')](_0x2f3bfd[_0x60e5('0x45')][_0x60e5('0x33')]);_0x1f8fcd[_0x60e5('0x31')]=qs[_0x60e5('0x31')](_0x2f3bfd[_0x60e5('0x45')][_0x60e5('0x31')]);}_0x1f8fcd[_0x60e5('0x4d')]=qs['sort'](_0x2f3bfd[_0x60e5('0x45')][_0x60e5('0x4e')]);_0x1f8fcd[_0x60e5('0x4f')]=qs['filters'](_['pick'](_0x2f3bfd[_0x60e5('0x45')],_0x4fa4c9[_0x60e5('0x47')]),_0x437351);if(_0x2f3bfd[_0x60e5('0x45')][_0x60e5('0x50')]){_0x1f8fcd[_0x60e5('0x4f')]=_['merge'](_0x1f8fcd[_0x60e5('0x4f')],{'$or':_[_0x60e5('0x3f')](_0x437351,function(_0x58eaf9){if(_0x58eaf9['type']!==_0x60e5('0x51')){var _0x33d078={};_0x33d078[_0x58eaf9[_0x60e5('0x3c')]]={'$like':'%'+_0x2f3bfd[_0x60e5('0x45')]['filter']+'%'};return _0x33d078;}})});}_0x1f8fcd=_['merge']({},_0x1f8fcd,_0x2f3bfd[_0x60e5('0x52')]);var _0x3cde7f={'where':_0x1f8fcd[_0x60e5('0x4f')]};return db['SmsMessage'][_0x60e5('0x34')](_0x3cde7f)[_0x60e5('0x24')](function(_0x6df962){_0x493398[_0x60e5('0x34')]=_0x6df962;if(_0x2f3bfd[_0x60e5('0x45')]['includeAll']){_0x1f8fcd['include']=[{'all':!![]}];}return db['SmsMessage'][_0x60e5('0x53')](_0x1f8fcd);})[_0x60e5('0x24')](function(_0x191023){_0x493398[_0x60e5('0x54')]=_0x191023;return _0x493398;})[_0x60e5('0x24')](respondWithFilteredResult(_0x29ee1b,_0x1f8fcd))[_0x60e5('0x2c')](handleError(_0x29ee1b,null));};exports[_0x60e5('0x55')]=function(_0x407af0,_0x501e57){var _0x475dc9={'raw':!![],'where':{'id':_0x407af0[_0x60e5('0x56')]['id']}},_0x4265c2={};_0x4265c2[_0x60e5('0x44')]=_[_0x60e5('0x46')](db[_0x60e5('0x40')]['rawAttributes']);_0x4265c2[_0x60e5('0x45')]=_[_0x60e5('0x46')](_0x407af0[_0x60e5('0x45')]);_0x4265c2[_0x60e5('0x47')]=_['intersection'](_0x4265c2[_0x60e5('0x44')],_0x4265c2[_0x60e5('0x45')]);_0x475dc9[_0x60e5('0x49')]=_[_0x60e5('0x48')](_0x4265c2[_0x60e5('0x44')],qs[_0x60e5('0x4a')](_0x407af0[_0x60e5('0x45')][_0x60e5('0x4a')]));_0x475dc9[_0x60e5('0x49')]=_0x475dc9['attributes'][_0x60e5('0x4b')]?_0x475dc9[_0x60e5('0x49')]:_0x4265c2['model'];if(_0x407af0[_0x60e5('0x45')][_0x60e5('0x57')]){_0x475dc9[_0x60e5('0x58')]=[{'all':!![]}];}_0x475dc9=_[_0x60e5('0x59')]({},_0x475dc9,_0x407af0[_0x60e5('0x52')]);return db[_0x60e5('0x40')][_0x60e5('0x5a')](_0x475dc9)[_0x60e5('0x24')](handleEntityNotFound(_0x501e57,null))[_0x60e5('0x24')](respondWithResult(_0x501e57,null))[_0x60e5('0x2c')](handleError(_0x501e57,null));};exports['create']=function(_0x36a7c2,_0x3dcb1d){return db[_0x60e5('0x40')]['create'](_0x36a7c2[_0x60e5('0x5b')],{})['then'](respondWithResult(_0x3dcb1d,0xc9))['catch'](handleError(_0x3dcb1d,null));};exports['update']=function(_0x4aaa2e,_0x4d8f1a){if(_0x4aaa2e[_0x60e5('0x5b')]['id']){delete _0x4aaa2e[_0x60e5('0x5b')]['id'];}return db['SmsMessage']['find']({'where':{'id':_0x4aaa2e[_0x60e5('0x56')]['id']}})['then'](handleEntityNotFound(_0x4d8f1a,null))['then'](saveUpdates(_0x4aaa2e[_0x60e5('0x5b')],null))[_0x60e5('0x24')](respondWithResult(_0x4d8f1a,null))[_0x60e5('0x2c')](handleError(_0x4d8f1a,null));};exports['destroy']=function(_0xd9ee89,_0x20b114){return db[_0x60e5('0x40')][_0x60e5('0x5a')]({'where':{'id':_0xd9ee89[_0x60e5('0x56')]['id']}})[_0x60e5('0x24')](handleEntityNotFound(_0x20b114,null))['then'](removeEntity(_0x20b114,null))[_0x60e5('0x2c')](handleError(_0x20b114,null));};exports[_0x60e5('0x5c')]=function(_0x587cf3,_0x10def1){return db[_0x60e5('0x40')][_0x60e5('0x5c')]()[_0x60e5('0x24')](respondWithResult(_0x10def1,null))['catch'](handleError(_0x10def1,null));};var interaction_log=require(_0x60e5('0x16'))(_0x60e5('0x5d'));exports['accept']=function(_0x212d9e,_0x436863,_0x2bf061){var _0xe79613={'agent':{},'channel':_0x60e5('0x5e')};if(_0x212d9e[_0x60e5('0x5b')]['id']){delete _0x212d9e[_0x60e5('0x5b')]['id'];}_0x212d9e[_0x60e5('0x5b')][_0x60e5('0x5f')]=!![];_0x212d9e['body']['readAt']=moment()['format'](_0x60e5('0x60'));_0x212d9e['body'][_0x60e5('0x61')]=_0x212d9e[_0x60e5('0x5b')]['UserId']||_0x212d9e[_0x60e5('0x62')]['id'];_0xe79613[_0x60e5('0x63')]['id']=_0x212d9e[_0x60e5('0x5b')][_0x60e5('0x61')];return db[_0x60e5('0x40')][_0x60e5('0x5a')]({'where':{'id':_0x212d9e['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x436863,null))[_0x60e5('0x24')](saveUpdates(_0x212d9e[_0x60e5('0x5b')],null))[_0x60e5('0x24')](function(_0x36e221){if(_0x36e221){_0xe79613[_0x60e5('0x2b')]=_0x36e221[_0x60e5('0x64')]({'plain':!![]});return db[_0x60e5('0x65')][_0x60e5('0x5a')]({'where':{'id':_0x36e221[_0x60e5('0x66')]}});}return null;})[_0x60e5('0x24')](handleEntityNotFound(_0x436863,null))['then'](function(_0x621d45){if(_0x621d45){return _0x621d45[_0x60e5('0x3a')]({'UserId':_0x212d9e[_0x60e5('0x5b')][_0x60e5('0x61')],'read1stAt':_[_0x60e5('0x67')](_0x621d45['read1stAt'])?moment()[_0x60e5('0x68')](_0x60e5('0x60')):undefined});}return null;})[_0x60e5('0x24')](function(_0x4454a9){if(_0x4454a9){_0xe79613['interaction']=_0x4454a9[_0x60e5('0x64')]({'plain':!![]});interaction_log[_0x60e5('0x69')](_0x60e5('0x6a'),_0x212d9e[_0x60e5('0x62')]['id'],_0x212d9e['user']['name'],_0x212d9e[_0x60e5('0x62')][_0x60e5('0x6b')],_0xe79613[_0x60e5('0x6c')]['id'],_0x212d9e[_0x60e5('0x5b')]?JSON[_0x60e5('0x27')](_0x212d9e[_0x60e5('0x5b')]):_0x60e5('0x6d'));return respondWithRpcPromise(_0x60e5('0x6e'),_0x60e5('0x6f'),_0xe79613);}return null;})['then'](function(_0x5d9cc8){var _0xaea69=_0x60e5('0x70')+_0x5d9cc8[_0x60e5('0x2b')][_0x60e5('0x71')];return db[_0x60e5('0x72')][_0x60e5('0x45')](_0xaea69,{'type':db['Sequelize'][_0x60e5('0x73')]['SELECT'],'raw':!![]})['then'](function(_0x561d89){return _0x561d89;});})[_0x60e5('0x24')](function(_0x125879){if(_0x125879){_0xe79613[_0x60e5('0x2b')][_0x60e5('0x74')]=_0x125879[0x0];if(!_0x212d9e[_0x60e5('0x5b')][_0x60e5('0x61')])return;return db['User'][_0x60e5('0x5a')]({'where':{'id':_0x212d9e[_0x60e5('0x5b')]['UserId'],'role':_0x60e5('0x63')},'attributes':['id',_0x60e5('0x3c'),_0x60e5('0x75'),'email',_0x60e5('0x76')],'raw':!![]});}return null;})[_0x60e5('0x24')](function(_0x3cd2d3){if(!_0x3cd2d3)return null;_0xe79613[_0x60e5('0x2b')][_0x60e5('0x63')]=_0x3cd2d3;return _0xe79613;})['then'](function(_0x4e74f9){if(_0x4e74f9){if(_0x212d9e['body'][_0x60e5('0x77')]){_0xe79613[_0x60e5('0x2b')][_0x60e5('0x78')]=util[_0x60e5('0x68')](_0x60e5('0x79'),_0x212d9e[_0x60e5('0x62')][_0x60e5('0x3c')]);_0xe79613[_0x60e5('0x2b')][_0x60e5('0x7a')]=_0xe79613['channel'];_0xe79613[_0x60e5('0x2b')][_0x60e5('0x7b')]=_0xe79613[_0x60e5('0x7a')];_0xe79613[_0x60e5('0x2b')][_0x60e5('0x7c')]=_0x60e5('0x7d');return respondWithRpcPromise(_0x60e5('0x7e'),_0x60e5('0x7e'),{'event':_0x60e5('0x7f'),'message':_0xe79613[_0x60e5('0x2b')]},client9002)['then'](function(){return _0xe79613;});}return _0xe79613;}return null;})[_0x60e5('0x24')](respondWithResult(_0x436863,null))[_0x60e5('0x2c')](handleError(_0x436863,null));};var interaction_log=require(_0x60e5('0x16'))('sms-interactions');exports[_0x60e5('0x38')]=function(_0x3c123d,_0x374bad,_0x41d274){var _0x42fc2d={'agent':{},'channel':_0x60e5('0x5e')};if(_0x3c123d[_0x60e5('0x5b')]['id']){delete _0x3c123d[_0x60e5('0x5b')]['id'];}_0x3c123d['body']['UserId']=_0x3c123d[_0x60e5('0x5b')]['UserId']||_0x3c123d[_0x60e5('0x62')]['id'];_0x42fc2d[_0x60e5('0x63')]['id']=_0x3c123d[_0x60e5('0x5b')][_0x60e5('0x61')];return db[_0x60e5('0x40')][_0x60e5('0x5a')]({'where':{'id':_0x3c123d[_0x60e5('0x56')]['id'],'UserId':null}})[_0x60e5('0x24')](handleEntityNotFound(_0x374bad,null))[_0x60e5('0x24')](function(_0xf40b25){if(_0xf40b25){_0x42fc2d[_0x60e5('0x2b')]=_0xf40b25[_0x60e5('0x64')]({'plain':!![]});return db[_0x60e5('0x65')]['find']({'where':{'id':_0xf40b25[_0x60e5('0x66')]}});}return null;})['then'](handleEntityNotFound(_0x374bad,null))[_0x60e5('0x24')](function(_0x7107a){if(_0x7107a){_0x42fc2d[_0x60e5('0x6c')]=_0x7107a[_0x60e5('0x64')]({'plain':!![]});interaction_log[_0x60e5('0x69')](_0x60e5('0x80'),_0x3c123d[_0x60e5('0x62')]['id'],_0x3c123d[_0x60e5('0x62')][_0x60e5('0x3c')],_0x3c123d['user'][_0x60e5('0x6b')],_0x42fc2d[_0x60e5('0x6c')]['id'],_0x3c123d[_0x60e5('0x5b')]?JSON[_0x60e5('0x27')](_0x3c123d['body']):_0x60e5('0x6d'));return respondWithRpcPromise('RejectMessage',_0x60e5('0x81'),_0x42fc2d);}return null;})[_0x60e5('0x24')](function(_0xfde7cc){var _0x55877b=_0x60e5('0x70')+_0xfde7cc[_0x60e5('0x2b')][_0x60e5('0x71')];return db[_0x60e5('0x72')][_0x60e5('0x45')](_0x55877b,{'type':db[_0x60e5('0x82')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x330e0e){return _0x330e0e;});})['then'](function(_0x371f1c){if(_0x371f1c){_0x42fc2d[_0x60e5('0x2b')][_0x60e5('0x74')]=_0x371f1c[0x0];if(!_0x3c123d['body'][_0x60e5('0x61')])return;return db[_0x60e5('0x83')]['find']({'where':{'id':_0x3c123d[_0x60e5('0x5b')][_0x60e5('0x61')],'role':_0x60e5('0x63')},'attributes':['id',_0x60e5('0x3c'),_0x60e5('0x75'),_0x60e5('0x84'),_0x60e5('0x76')],'raw':!![]});}return null;})[_0x60e5('0x24')](function(_0x50c19d){if(!_0x50c19d)return null;_0x42fc2d[_0x60e5('0x2b')][_0x60e5('0x63')]=_0x50c19d;return _0x42fc2d;})[_0x60e5('0x24')](function(_0x225c9f){if(_0x225c9f){_0x225c9f[_0x60e5('0x2b')][_0x60e5('0x78')]=util[_0x60e5('0x68')]('SIP/%s',_0x3c123d[_0x60e5('0x62')][_0x60e5('0x3c')]);_0x225c9f[_0x60e5('0x2b')][_0x60e5('0x7a')]=_0x42fc2d[_0x60e5('0x7a')];_0x225c9f[_0x60e5('0x2b')]['motionChannel']=_0x42fc2d['channel'];_0x225c9f[_0x60e5('0x2b')][_0x60e5('0x7c')]='reject';respondWithRpcPromise(_0x60e5('0x7e'),_0x60e5('0x7e'),{'event':_0x60e5('0x85'),'message':_0x225c9f[_0x60e5('0x2b')]},client9002);return _0x42fc2d;}return null;})[_0x60e5('0x24')](respondWithResult(_0x374bad,null))[_0x60e5('0x2c')](handleError(_0x374bad,null));};exports[_0x60e5('0x2e')]=function(_0x3845e6,_0x215779,_0xd38fcf){if(_0x3845e6[_0x60e5('0x5b')]['id']){delete _0x3845e6['body']['id'];}var _0x489f4f;return db[_0x60e5('0x40')][_0x60e5('0x5a')]({'where':{'id':_0x3845e6[_0x60e5('0x56')]['id']}})[_0x60e5('0x24')](handleEntityNotFound(_0x215779,null))[_0x60e5('0x24')](function(_0x455b68){if(_0x455b68){_0x489f4f=_0x455b68;return db[_0x60e5('0x86')][_0x60e5('0x5a')]({'where':{'id':_0x455b68[_0x60e5('0x87')]}});}})[_0x60e5('0x24')](handleEntityNotFound(_0x215779,null))[_0x60e5('0x24')](function(_0x556c81){if(_0x556c81){logger['debug'](_0x60e5('0x25'),_0x60e5('0x2e'),_0x60e5('0x88'),_0x556c81[_0x60e5('0x42')],util[_0x60e5('0x89')](_0x3845e6[_0x60e5('0x5b')],{'showHidden':![],'depth':null}));switch(_0x556c81['type']){case _0x60e5('0x8a'):if(_0x3845e6[_0x60e5('0x5b')][_0x60e5('0x8b')]&&_0x3845e6[_0x60e5('0x5b')][_0x60e5('0x8b')]===_0x489f4f['messageId']){return _0x489f4f['update']({'read':!![]});}else{logger[_0x60e5('0x28')](_0x60e5('0x8c'),_0x60e5('0x2e'),_0x60e5('0x8a'),util[_0x60e5('0x89')](_0x3845e6[_0x60e5('0x5b')],{'showHidden':![],'depth':null}));}break;case _0x60e5('0x8d'):if(_0x3845e6[_0x60e5('0x5b')][_0x60e5('0x8e')]&&_0x3845e6[_0x60e5('0x5b')]['MessageUUID']===_0x489f4f[_0x60e5('0x8f')]&&_['indexOf']([_0x60e5('0x90'),'delivered'],_0x3845e6[_0x60e5('0x5b')][_0x60e5('0x91')])>=0x0){return _0x489f4f[_0x60e5('0x3a')]({'read':!![]});}else{logger['error'](_0x60e5('0x8c'),_0x60e5('0x2e'),_0x60e5('0x92'),util['inspect'](_0x3845e6[_0x60e5('0x5b')],{'showHidden':![],'depth':null}));}break;case _0x60e5('0x93'):var _0x222268=_0x3845e6[_0x60e5('0x5b')]['results'][0x0];if(_0x222268[_0x60e5('0x2e')][_0x60e5('0x94')]==='DELIVERED'){return _0x489f4f[_0x60e5('0x3a')]({'read':!![]});}else{logger[_0x60e5('0x28')](_0x60e5('0x8c'),'status','infobip',util[_0x60e5('0x89')](_0x3845e6[_0x60e5('0x5b')],{'showHidden':![],'depth':null}));}break;}return _0x489f4f;}})[_0x60e5('0x24')](respondWithResult(_0x215779,null))['catch'](handleError(_0x215779,null));};
\ No newline at end of file
+var _0x97e6=['readAt','format','UserId','agent','read1stAt','YYYY-MM-DD\x20HH:mm:ss','get','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','interaction','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','EventManager','acceptmessage','SmsInteractionId','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','rejectMessage','event','reject','received\x20delivery\x20report\x20from','twilio','MessageSid','messageId','inspect','plivo','MessageUUID','sent','delivered','Status','infobip','results','groupName','DELIVERED','SmsAccount,\x20%s,\x20%s,\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','info','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsMessage,\x20%s,\x20%s','message','result','sendStatus','status','json','undefined','offset','count','limit','set','Content-Range','apply','save','update','then','destroy','end','stack','name','SmsMessage','type','key','map','query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','catch','show','params','rawAttributes','intersection','find','create','body','describe','sms-interactions','accept','sms'];(function(_0x231e50,_0x3ab8a5){var _0x52a3e7=function(_0x16cd43){while(--_0x16cd43){_0x231e50['push'](_0x231e50['shift']());}};_0x52a3e7(++_0x3ab8a5);}(_0x97e6,0x159));var _0x697e=function(_0x3cadbd,_0x12bc43){_0x3cadbd=_0x3cadbd-0x0;var _0x296da9=_0x97e6[_0x3cadbd];return _0x296da9;};'use strict';var emlformat=require(_0x697e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x697e('0x1'));var jsonpatch=require(_0x697e('0x2'));var rp=require(_0x697e('0x3'));var moment=require('moment');var BPromise=require(_0x697e('0x4'));var Mustache=require(_0x697e('0x5'));var util=require('util');var path=require(_0x697e('0x6'));var sox=require('sox');var csv=require(_0x697e('0x7'));var ejs=require(_0x697e('0x8'));var fs=require('fs');var fs_extra=require(_0x697e('0x9'));var _=require(_0x697e('0xa'));var squel=require(_0x697e('0xb'));var crypto=require(_0x697e('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x697e('0x7'));var querystring=require(_0x697e('0xd'));var Papa=require(_0x697e('0xe'));var Redis=require('ioredis');var authService=require(_0x697e('0xf'));var qs=require(_0x697e('0x10'));var as=require(_0x697e('0x11'));var hardwareService=require(_0x697e('0x12'));var logger=require(_0x697e('0x13'))('api');var utils=require(_0x697e('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x697e('0x15'))['db'];config[_0x697e('0x16')]=_[_0x697e('0x17')](config['redis'],{'host':_0x697e('0x18'),'port':0x18eb});var socket=require(_0x697e('0x19'))(new Redis(config['redis']));require('./smsMessage.socket')[_0x697e('0x1a')](socket);var jayson=require(_0x697e('0x1b'));var client=jayson[_0x697e('0x1c')][_0x697e('0x1d')]({'port':0x232c});var client9002=jayson[_0x697e('0x1c')][_0x697e('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x1f0f4f,_0x32ff03,_0x3931a5,_0x5bc624){return new BPromise(function(_0x316bdb,_0x19a938){var _0x5581e7=_0x5bc624||client;return _0x5581e7[_0x697e('0x1e')](_0x1f0f4f,_0x3931a5)['then'](function(_0x233404){logger[_0x697e('0x1f')]('SmsMessage,\x20%s,\x20%s',_0x32ff03,_0x697e('0x20'));logger[_0x697e('0x21')](_0x697e('0x22'),_0x32ff03,_0x697e('0x20'),JSON[_0x697e('0x23')](_0x233404));if(_0x233404[_0x697e('0x24')]){if(_0x233404[_0x697e('0x24')][_0x697e('0x25')]===0x1f4){logger[_0x697e('0x24')](_0x697e('0x26'),_0x32ff03,_0x233404[_0x697e('0x24')]['message']);return _0x19a938(_0x233404[_0x697e('0x24')]['message']);}logger[_0x697e('0x24')](_0x697e('0x26'),_0x32ff03,_0x233404['error'][_0x697e('0x27')]);return _0x316bdb(_0x233404['error'][_0x697e('0x27')]);}else{logger[_0x697e('0x1f')](_0x697e('0x26'),_0x32ff03,_0x697e('0x20'));_0x316bdb(_0x233404[_0x697e('0x28')]['message']);}})['catch'](function(_0xc3d9d0){logger[_0x697e('0x24')](_0x697e('0x26'),_0x32ff03,_0xc3d9d0);_0x19a938(_0xc3d9d0);});});}function respondWithStatusCode(_0x3f6432,_0xb33a1c){_0xb33a1c=_0xb33a1c||0xcc;return function(_0x411c63){if(_0x411c63){return _0x3f6432[_0x697e('0x29')](_0xb33a1c);}return _0x3f6432['status'](_0xb33a1c)['end']();};}function respondWithResult(_0x1e3803,_0x2cc855){_0x2cc855=_0x2cc855||0xc8;return function(_0xfa2388){if(_0xfa2388){return _0x1e3803[_0x697e('0x2a')](_0x2cc855)[_0x697e('0x2b')](_0xfa2388);}};}function respondWithFilteredResult(_0x46e01b,_0x33f4b5){return function(_0x55833e){if(_0x55833e){var _0x492b6a=typeof _0x33f4b5['offset']===_0x697e('0x2c')&&typeof _0x33f4b5['limit']==='undefined';var _0x5785e5=_0x55833e['count'];var _0x367f74=_0x492b6a?0x0:_0x33f4b5[_0x697e('0x2d')];var _0x164cef=_0x492b6a?_0x55833e[_0x697e('0x2e')]:_0x33f4b5['offset']+_0x33f4b5[_0x697e('0x2f')];var _0x1eafca;if(_0x164cef>=_0x5785e5){_0x164cef=_0x5785e5;_0x1eafca=0xc8;}else{_0x1eafca=0xce;}_0x46e01b[_0x697e('0x2a')](_0x1eafca);return _0x46e01b[_0x697e('0x30')](_0x697e('0x31'),_0x367f74+'-'+_0x164cef+'/'+_0x5785e5)[_0x697e('0x2b')](_0x55833e);}return null;};}function patchUpdates(_0x5c54f9){return function(_0x5c2b84){try{jsonpatch[_0x697e('0x32')](_0x5c2b84,_0x5c54f9,!![]);}catch(_0x4160e3){return BPromise['reject'](_0x4160e3);}return _0x5c2b84[_0x697e('0x33')]();};}function saveUpdates(_0x19fd4c,_0x4cb9f6){return function(_0xd951b0){if(_0xd951b0){return _0xd951b0[_0x697e('0x34')](_0x19fd4c)[_0x697e('0x35')](function(_0x4171bd){return _0x4171bd;});}return null;};}function removeEntity(_0x1b7152,_0x390d4a){return function(_0x57f82b){if(_0x57f82b){return _0x57f82b[_0x697e('0x36')]()['then'](function(){_0x1b7152['status'](0xcc)[_0x697e('0x37')]();});}};}function handleEntityNotFound(_0x1c1040,_0x2bcac5){return function(_0x4e9052){if(!_0x4e9052){_0x1c1040[_0x697e('0x29')](0x194);}return _0x4e9052;};}function handleError(_0x27f773,_0x343135){_0x343135=_0x343135||0x1f4;return function(_0x4f61c2){logger[_0x697e('0x24')](_0x4f61c2[_0x697e('0x38')]);if(_0x4f61c2[_0x697e('0x39')]){delete _0x4f61c2[_0x697e('0x39')];}_0x27f773[_0x697e('0x2a')](_0x343135)['send'](_0x4f61c2);};}exports['index']=function(_0x2cb01e,_0x37655a){var _0x28ed6e={},_0x2bb49c={},_0xcf366d={'count':0x0,'rows':[]};var _0x170dbb=_['map'](db[_0x697e('0x3a')]['rawAttributes'],function(_0x3c796d){return{'name':_0x3c796d['fieldName'],'type':_0x3c796d[_0x697e('0x3b')][_0x697e('0x3c')]};});_0x2bb49c['model']=_[_0x697e('0x3d')](_0x170dbb,_0x697e('0x39'));_0x2bb49c[_0x697e('0x3e')]=_[_0x697e('0x3f')](_0x2cb01e[_0x697e('0x3e')]);_0x2bb49c[_0x697e('0x40')]=_['intersection'](_0x2bb49c[_0x697e('0x41')],_0x2bb49c[_0x697e('0x3e')]);_0x28ed6e[_0x697e('0x42')]=_['intersection'](_0x2bb49c[_0x697e('0x41')],qs['fields'](_0x2cb01e[_0x697e('0x3e')][_0x697e('0x43')]));_0x28ed6e[_0x697e('0x42')]=_0x28ed6e['attributes'][_0x697e('0x44')]?_0x28ed6e[_0x697e('0x42')]:_0x2bb49c[_0x697e('0x41')];if(!_0x2cb01e[_0x697e('0x3e')][_0x697e('0x45')](_0x697e('0x46'))){_0x28ed6e['limit']=qs[_0x697e('0x2f')](_0x2cb01e[_0x697e('0x3e')][_0x697e('0x2f')]);_0x28ed6e['offset']=qs[_0x697e('0x2d')](_0x2cb01e['query']['offset']);}_0x28ed6e[_0x697e('0x47')]=qs[_0x697e('0x48')](_0x2cb01e['query'][_0x697e('0x48')]);_0x28ed6e['where']=qs[_0x697e('0x40')](_[_0x697e('0x49')](_0x2cb01e[_0x697e('0x3e')],_0x2bb49c['filters']),_0x170dbb);if(_0x2cb01e[_0x697e('0x3e')][_0x697e('0x4a')]){_0x28ed6e[_0x697e('0x4b')]=_['merge'](_0x28ed6e['where'],{'$or':_[_0x697e('0x3d')](_0x170dbb,function(_0x2909b1){if(_0x2909b1[_0x697e('0x3b')]!==_0x697e('0x4c')){var _0x177225={};_0x177225[_0x2909b1[_0x697e('0x39')]]={'$like':'%'+_0x2cb01e[_0x697e('0x3e')][_0x697e('0x4a')]+'%'};return _0x177225;}})});}_0x28ed6e=_[_0x697e('0x4d')]({},_0x28ed6e,_0x2cb01e[_0x697e('0x4e')]);var _0x13986c={'where':_0x28ed6e[_0x697e('0x4b')]};return db[_0x697e('0x3a')]['count'](_0x13986c)[_0x697e('0x35')](function(_0x44a90a){_0xcf366d[_0x697e('0x2e')]=_0x44a90a;if(_0x2cb01e[_0x697e('0x3e')][_0x697e('0x4f')]){_0x28ed6e[_0x697e('0x50')]=[{'all':!![]}];}return db[_0x697e('0x3a')]['findAll'](_0x28ed6e);})[_0x697e('0x35')](function(_0x70a9f3){_0xcf366d['rows']=_0x70a9f3;return _0xcf366d;})[_0x697e('0x35')](respondWithFilteredResult(_0x37655a,_0x28ed6e))[_0x697e('0x51')](handleError(_0x37655a,null));};exports[_0x697e('0x52')]=function(_0x17f4bb,_0x2605d4){var _0x345c05={'raw':!![],'where':{'id':_0x17f4bb[_0x697e('0x53')]['id']}},_0x57641c={};_0x57641c[_0x697e('0x41')]=_[_0x697e('0x3f')](db[_0x697e('0x3a')][_0x697e('0x54')]);_0x57641c['query']=_[_0x697e('0x3f')](_0x17f4bb['query']);_0x57641c[_0x697e('0x40')]=_[_0x697e('0x55')](_0x57641c['model'],_0x57641c[_0x697e('0x3e')]);_0x345c05[_0x697e('0x42')]=_[_0x697e('0x55')](_0x57641c[_0x697e('0x41')],qs['fields'](_0x17f4bb[_0x697e('0x3e')][_0x697e('0x43')]));_0x345c05[_0x697e('0x42')]=_0x345c05['attributes'][_0x697e('0x44')]?_0x345c05[_0x697e('0x42')]:_0x57641c[_0x697e('0x41')];if(_0x17f4bb['query']['includeAll']){_0x345c05[_0x697e('0x50')]=[{'all':!![]}];}_0x345c05=_[_0x697e('0x4d')]({},_0x345c05,_0x17f4bb['options']);return db[_0x697e('0x3a')][_0x697e('0x56')](_0x345c05)[_0x697e('0x35')](handleEntityNotFound(_0x2605d4,null))[_0x697e('0x35')](respondWithResult(_0x2605d4,null))[_0x697e('0x51')](handleError(_0x2605d4,null));};exports['create']=function(_0x532805,_0x4c2d31){return db[_0x697e('0x3a')][_0x697e('0x57')](_0x532805[_0x697e('0x58')],{})[_0x697e('0x35')](respondWithResult(_0x4c2d31,0xc9))[_0x697e('0x51')](handleError(_0x4c2d31,null));};exports[_0x697e('0x34')]=function(_0x56b1c9,_0x524692){if(_0x56b1c9[_0x697e('0x58')]['id']){delete _0x56b1c9['body']['id'];}return db[_0x697e('0x3a')][_0x697e('0x56')]({'where':{'id':_0x56b1c9[_0x697e('0x53')]['id']}})[_0x697e('0x35')](handleEntityNotFound(_0x524692,null))[_0x697e('0x35')](saveUpdates(_0x56b1c9[_0x697e('0x58')],null))[_0x697e('0x35')](respondWithResult(_0x524692,null))[_0x697e('0x51')](handleError(_0x524692,null));};exports[_0x697e('0x36')]=function(_0x5eeacf,_0xce8a6c){return db['SmsMessage']['find']({'where':{'id':_0x5eeacf[_0x697e('0x53')]['id']}})[_0x697e('0x35')](handleEntityNotFound(_0xce8a6c,null))[_0x697e('0x35')](removeEntity(_0xce8a6c,null))[_0x697e('0x51')](handleError(_0xce8a6c,null));};exports['describe']=function(_0x25d33d,_0x572f1b){return db['SmsMessage'][_0x697e('0x59')]()[_0x697e('0x35')](respondWithResult(_0x572f1b,null))[_0x697e('0x51')](handleError(_0x572f1b,null));};var interaction_log=require('../../config/logger')(_0x697e('0x5a'));exports[_0x697e('0x5b')]=function(_0x3000ac,_0x4524ea,_0x3b463b){var _0x57f0a5={'agent':{},'channel':_0x697e('0x5c')};if(_0x3000ac[_0x697e('0x58')]['id']){delete _0x3000ac['body']['id'];}_0x3000ac[_0x697e('0x58')]['read']=!![];_0x3000ac[_0x697e('0x58')][_0x697e('0x5d')]=moment()[_0x697e('0x5e')]('YYYY-MM-DD\x20HH:mm:ss');_0x3000ac[_0x697e('0x58')][_0x697e('0x5f')]=_0x3000ac['body'][_0x697e('0x5f')]||_0x3000ac['user']['id'];_0x57f0a5[_0x697e('0x60')]['id']=_0x3000ac[_0x697e('0x58')][_0x697e('0x5f')];return db[_0x697e('0x3a')][_0x697e('0x56')]({'where':{'id':_0x3000ac[_0x697e('0x53')]['id'],'UserId':null}})[_0x697e('0x35')](handleEntityNotFound(_0x4524ea,null))[_0x697e('0x35')](saveUpdates(_0x3000ac[_0x697e('0x58')],null))['then'](function(_0x2c63e4){if(_0x2c63e4){_0x57f0a5[_0x697e('0x27')]=_0x2c63e4['get']({'plain':!![]});return db['SmsInteraction'][_0x697e('0x56')]({'where':{'id':_0x2c63e4['SmsInteractionId']}});}return null;})[_0x697e('0x35')](handleEntityNotFound(_0x4524ea,null))[_0x697e('0x35')](function(_0x148e23){if(_0x148e23){return _0x148e23[_0x697e('0x34')]({'UserId':_0x3000ac[_0x697e('0x58')][_0x697e('0x5f')],'read1stAt':_['isNil'](_0x148e23[_0x697e('0x61')])?moment()[_0x697e('0x5e')](_0x697e('0x62')):undefined});}return null;})[_0x697e('0x35')](function(_0x435060){if(_0x435060){_0x57f0a5['interaction']=_0x435060[_0x697e('0x63')]({'plain':!![]});interaction_log[_0x697e('0x1f')](_0x697e('0x64'),_0x3000ac[_0x697e('0x65')]['id'],_0x3000ac[_0x697e('0x65')][_0x697e('0x39')],_0x3000ac[_0x697e('0x65')][_0x697e('0x66')],_0x57f0a5[_0x697e('0x67')]['id'],_0x3000ac[_0x697e('0x58')]?JSON[_0x697e('0x23')](_0x3000ac[_0x697e('0x58')]):'null');return respondWithRpcPromise(_0x697e('0x68'),_0x697e('0x69'),_0x57f0a5);}return null;})[_0x697e('0x35')](function(_0x320e39){var _0x121656=_0x697e('0x6a')+_0x320e39[_0x697e('0x27')][_0x697e('0x6b')];return db[_0x697e('0x6c')]['query'](_0x121656,{'type':db[_0x697e('0x6d')][_0x697e('0x6e')][_0x697e('0x6f')],'raw':!![]})['then'](function(_0x48cc83){return _0x48cc83;});})['then'](function(_0x1cf629){if(_0x1cf629){_0x57f0a5[_0x697e('0x27')][_0x697e('0x70')]=_0x1cf629[0x0];if(!_0x3000ac['body'][_0x697e('0x5f')])return;return db[_0x697e('0x71')][_0x697e('0x56')]({'where':{'id':_0x3000ac['body'][_0x697e('0x5f')],'role':'agent'},'attributes':['id',_0x697e('0x39'),_0x697e('0x72'),_0x697e('0x73'),_0x697e('0x74')],'raw':!![]});}return null;})[_0x697e('0x35')](function(_0x206513){if(!_0x206513)return null;_0x57f0a5[_0x697e('0x27')]['agent']=_0x206513;return _0x57f0a5;})[_0x697e('0x35')](function(_0x47a599){if(_0x47a599){if(_0x3000ac[_0x697e('0x58')][_0x697e('0x75')]){_0x57f0a5[_0x697e('0x27')][_0x697e('0x76')]=util['format'](_0x697e('0x77'),_0x3000ac['user'][_0x697e('0x39')]);_0x57f0a5[_0x697e('0x27')][_0x697e('0x78')]=_0x57f0a5[_0x697e('0x78')];_0x57f0a5['message'][_0x697e('0x79')]=_0x57f0a5['channel'];_0x57f0a5['message']['event']=_0x697e('0x5b');return respondWithRpcPromise(_0x697e('0x7a'),'EventManager',{'event':_0x697e('0x7b'),'message':_0x57f0a5[_0x697e('0x27')]},client9002)[_0x697e('0x35')](function(){return _0x57f0a5;});}return _0x57f0a5;}return null;})[_0x697e('0x35')](respondWithResult(_0x4524ea,null))[_0x697e('0x51')](handleError(_0x4524ea,null));};var interaction_log=require(_0x697e('0x13'))(_0x697e('0x5a'));exports['reject']=function(_0x3e9554,_0x44213d,_0x536bac){var _0x3ee30f={'agent':{},'channel':_0x697e('0x5c')};if(_0x3e9554[_0x697e('0x58')]['id']){delete _0x3e9554['body']['id'];}_0x3e9554[_0x697e('0x58')][_0x697e('0x5f')]=_0x3e9554[_0x697e('0x58')][_0x697e('0x5f')]||_0x3e9554['user']['id'];_0x3ee30f['agent']['id']=_0x3e9554[_0x697e('0x58')][_0x697e('0x5f')];return db[_0x697e('0x3a')][_0x697e('0x56')]({'where':{'id':_0x3e9554[_0x697e('0x53')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x44213d,null))['then'](function(_0x14af20){if(_0x14af20){_0x3ee30f[_0x697e('0x27')]=_0x14af20['get']({'plain':!![]});return db['SmsInteraction'][_0x697e('0x56')]({'where':{'id':_0x14af20[_0x697e('0x7c')]}});}return null;})[_0x697e('0x35')](handleEntityNotFound(_0x44213d,null))[_0x697e('0x35')](function(_0x50e7c3){if(_0x50e7c3){_0x3ee30f[_0x697e('0x67')]=_0x50e7c3['get']({'plain':!![]});interaction_log['info'](_0x697e('0x7d'),_0x3e9554[_0x697e('0x65')]['id'],_0x3e9554[_0x697e('0x65')][_0x697e('0x39')],_0x3e9554['user'][_0x697e('0x66')],_0x3ee30f[_0x697e('0x67')]['id'],_0x3e9554[_0x697e('0x58')]?JSON[_0x697e('0x23')](_0x3e9554['body']):_0x697e('0x7e'));return respondWithRpcPromise(_0x697e('0x7f'),_0x697e('0x80'),_0x3ee30f);}return null;})[_0x697e('0x35')](function(_0x49ab53){var _0x3750d5='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x49ab53[_0x697e('0x27')][_0x697e('0x6b')];return db['sequelize'][_0x697e('0x3e')](_0x3750d5,{'type':db[_0x697e('0x6d')]['QueryTypes'][_0x697e('0x6f')],'raw':!![]})[_0x697e('0x35')](function(_0x8f12a3){return _0x8f12a3;});})['then'](function(_0x29de13){if(_0x29de13){_0x3ee30f[_0x697e('0x27')][_0x697e('0x70')]=_0x29de13[0x0];if(!_0x3e9554['body'][_0x697e('0x5f')])return;return db[_0x697e('0x71')][_0x697e('0x56')]({'where':{'id':_0x3e9554[_0x697e('0x58')]['UserId'],'role':'agent'},'attributes':['id',_0x697e('0x39'),_0x697e('0x72'),_0x697e('0x73'),_0x697e('0x74')],'raw':!![]});}return null;})[_0x697e('0x35')](function(_0x611687){if(!_0x611687)return null;_0x3ee30f[_0x697e('0x27')][_0x697e('0x60')]=_0x611687;return _0x3ee30f;})[_0x697e('0x35')](function(_0x4019b2){if(_0x4019b2){_0x4019b2[_0x697e('0x27')][_0x697e('0x76')]=util[_0x697e('0x5e')](_0x697e('0x77'),_0x3e9554['user']['name']);_0x4019b2[_0x697e('0x27')][_0x697e('0x78')]=_0x3ee30f[_0x697e('0x78')];_0x4019b2['message']['motionChannel']=_0x3ee30f['channel'];_0x4019b2[_0x697e('0x27')][_0x697e('0x81')]=_0x697e('0x82');respondWithRpcPromise(_0x697e('0x7a'),_0x697e('0x7a'),{'event':'rejectmessage','message':_0x4019b2[_0x697e('0x27')]},client9002);return _0x3ee30f;}return null;})['then'](respondWithResult(_0x44213d,null))['catch'](handleError(_0x44213d,null));};exports[_0x697e('0x2a')]=function(_0x4e2d0c,_0x26fcb8,_0x436f64){if(_0x4e2d0c[_0x697e('0x58')]['id']){delete _0x4e2d0c['body']['id'];}var _0x3ffd43;return db[_0x697e('0x3a')][_0x697e('0x56')]({'where':{'id':_0x4e2d0c[_0x697e('0x53')]['id']}})[_0x697e('0x35')](handleEntityNotFound(_0x26fcb8,null))[_0x697e('0x35')](function(_0x533bb7){if(_0x533bb7){_0x3ffd43=_0x533bb7;return db['SmsAccount'][_0x697e('0x56')]({'where':{'id':_0x533bb7['SmsAccountId']}});}})['then'](handleEntityNotFound(_0x26fcb8,null))[_0x697e('0x35')](function(_0x88f113){if(_0x88f113){logger[_0x697e('0x21')](_0x697e('0x22'),_0x697e('0x2a'),_0x697e('0x83'),_0x88f113[_0x697e('0x3b')],util['inspect'](_0x4e2d0c[_0x697e('0x58')],{'showHidden':![],'depth':null}));switch(_0x88f113[_0x697e('0x3b')]){case _0x697e('0x84'):if(_0x4e2d0c[_0x697e('0x58')]['MessageSid']&&_0x4e2d0c[_0x697e('0x58')][_0x697e('0x85')]===_0x3ffd43[_0x697e('0x86')]){return _0x3ffd43[_0x697e('0x34')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x697e('0x2a'),_0x697e('0x84'),util[_0x697e('0x87')](_0x4e2d0c[_0x697e('0x58')],{'showHidden':![],'depth':null}));}break;case _0x697e('0x88'):if(_0x4e2d0c['body']['MessageUUID']&&_0x4e2d0c['body'][_0x697e('0x89')]===_0x3ffd43[_0x697e('0x86')]&&_['indexOf']([_0x697e('0x8a'),_0x697e('0x8b')],_0x4e2d0c[_0x697e('0x58')][_0x697e('0x8c')])>=0x0){return _0x3ffd43[_0x697e('0x34')]({'read':!![]});}else{logger[_0x697e('0x24')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x697e('0x2a'),'plivio',util['inspect'](_0x4e2d0c['body'],{'showHidden':![],'depth':null}));}break;case _0x697e('0x8d'):var _0x204155=_0x4e2d0c[_0x697e('0x58')][_0x697e('0x8e')][0x0];if(_0x204155[_0x697e('0x2a')][_0x697e('0x8f')]===_0x697e('0x90')){return _0x3ffd43[_0x697e('0x34')]({'read':!![]});}else{logger[_0x697e('0x24')](_0x697e('0x91'),_0x697e('0x2a'),_0x697e('0x8d'),util['inspect'](_0x4e2d0c[_0x697e('0x58')],{'showHidden':![],'depth':null}));}break;}return _0x3ffd43;}})[_0x697e('0x35')](respondWithResult(_0x26fcb8,null))['catch'](handleError(_0x26fcb8,null));};
\ No newline at end of file
index a95e6fc..a7cd62d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7176=['remove','emit','exports','../../mysqldb','SmsMessage','setMaxListeners','save','update'];(function(_0x399bd4,_0x3c84ab){var _0x12d41b=function(_0x2341dc){while(--_0x2341dc){_0x399bd4['push'](_0x399bd4['shift']());}};_0x12d41b(++_0x3c84ab);}(_0x7176,0x1f3));var _0x6717=function(_0x5a1419,_0x32ab66){_0x5a1419=_0x5a1419-0x0;var _0x147fce=_0x7176[_0x5a1419];return _0x147fce;};'use strict';var EventEmitter=require('events');var SmsMessage=require(_0x6717('0x0'))['db'][_0x6717('0x1')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x6717('0x2')](0x0);var events={'afterCreate':_0x6717('0x3'),'afterUpdate':_0x6717('0x4'),'afterDestroy':_0x6717('0x5')};function emitEvent(_0x2e85a2){return function(_0x641403,_0x82e57c,_0x444ceb){SmsMessageEvents[_0x6717('0x6')](_0x2e85a2+':'+_0x641403['id'],_0x641403);SmsMessageEvents['emit'](_0x2e85a2,_0x641403);_0x444ceb(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage['hook'](e,emitEvent(event));}}module[_0x6717('0x7')]=SmsMessageEvents;
\ No newline at end of file
+var _0xeb58=['hook','exports','../../mysqldb','setMaxListeners','save','update','emit','hasOwnProperty'];(function(_0xd0b415,_0x149675){var _0x2bdf2c=function(_0x59fbfa){while(--_0x59fbfa){_0xd0b415['push'](_0xd0b415['shift']());}};_0x2bdf2c(++_0x149675);}(_0xeb58,0xda));var _0x8eb5=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xeb58[_0x28947d];return _0x12d2ee;};'use strict';var EventEmitter=require('events');var SmsMessage=require(_0x8eb5('0x0'))['db']['SmsMessage'];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x8eb5('0x1')](0x0);var events={'afterCreate':_0x8eb5('0x2'),'afterUpdate':_0x8eb5('0x3'),'afterDestroy':'remove'};function emitEvent(_0xc316bf){return function(_0x5605d5,_0x4805a9,_0x30a81f){SmsMessageEvents['emit'](_0xc316bf+':'+_0x5605d5['id'],_0x5605d5);SmsMessageEvents[_0x8eb5('0x4')](_0xc316bf,_0x5605d5);_0x30a81f(null);};}for(var e in events){if(events[_0x8eb5('0x5')](e)){var event=events[e];SmsMessage[_0x8eb5('0x6')](e,emitEvent(event));}}module[_0x8eb5('0x7')]=SmsMessageEvents;
\ No newline at end of file
index 02c3a45..5b44488 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9935=['senderString','https://smsapi.connectel.se/api/v2/send/','requestid','connectel','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','%s:%s','https://rest.clicksend.com/v3/sms/send','format','Basic\x20%s','base64','http_code','data','queued_count','clickSend','authId','toString','message_uuid','plivo','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','Missing\x20parameters:\x20base_url','csc','apiKey','login','text','sort','length','digest','signature=','/external/get/send.php?','keys','Missing\x20parameters:\x20apiKey','uuid','UTF-8','apiMessageId','clickatell','bandwidth','accountId','/messages','applicationId','intelepeer','Bearer\x20','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','Token\x20not\x20received','finally','utf8mb4_unicode_ci','../../config/logger','moment','bluebird','request-promise','path','rimraf','./smsMessage.attributes','define','SmsMessage','messageId','fti_sms_messages','FULLTEXT','models','get','toLowerCase','out','secret','UserId','SmsInteraction','findOne','SmsInteractionId','then','update','createdAt','direction','catch','SmsAccount','find','SmsAccountId','type','twilio','accountSid','phone','messages','create','body','remote','/api/sms/messages/','/status?token=','token','error','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','password','smsMethod','sender','login?username=','username','&password=','GET','split','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','read','Missing\x20parameters:\x20username,\x20password','authToken'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0x9935,0x198));var _0x5993=function(_0xe92ce1,_0x143a04){_0xe92ce1=_0xe92ce1-0x0;var _0x1c71e7=_0x9935[_0xe92ce1];return _0x1c71e7;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5993('0x0'))('api');var moment=require(_0x5993('0x1'));var BPromise=require(_0x5993('0x2'));var rp=require(_0x5993('0x3'));var fs=require('fs');var path=require(_0x5993('0x4'));var rimraf=require(_0x5993('0x5'));var config=require('../../config/environment');var attributes=require(_0x5993('0x6'));module['exports']=function(_0x3856e4,_0x3055bc){return _0x3856e4[_0x5993('0x7')](_0x5993('0x8'),attributes,{'tableName':'sms_messages','paranoid':![],'indexes':[{'name':_0x5993('0x9'),'fields':[_0x5993('0x9')]},{'name':_0x5993('0xa'),'fields':['body'],'type':_0x5993('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3edea2,_0x281d90,_0x4dac07){var _0x4ba093=_0x3856e4[_0x5993('0xc')];var _0x5a8993=_0x3edea2[_0x5993('0xd')]({'plain':!![]});if(_0x5a8993['direction'][_0x5993('0xe')]()==='in'||_0x5a8993['direction'][_0x5993('0xe')]()===_0x5993('0xf')&&!_0x5a8993[_0x5993('0x10')]&&!_['isNil'](_0x5a8993[_0x5993('0x11')])&&!_['isNil'](_0x5a8993['SmsInteractionId'])){_0x4ba093[_0x5993('0x12')][_0x5993('0x13')]({'where':{'id':_0x5a8993[_0x5993('0x14')]}})[_0x5993('0x15')](function(_0x2f0391){if(_0x2f0391){_0x2f0391[_0x5993('0x16')]({'lastMsgAt':_0x5a8993[_0x5993('0x17')],'lastMsgDirection':_0x5a8993[_0x5993('0x18')][_0x5993('0xe')]()});}})[_0x5993('0x19')](function(_0x510907){console['error'](_0x510907);});}if(_0x5a8993[_0x5993('0x18')]==='out'&&!_0x5a8993[_0x5993('0x10')]){var _0x35e6f9;_0x4ba093[_0x5993('0x1a')][_0x5993('0x1b')]({'where':{'id':_0x5a8993[_0x5993('0x1c')]},'raw':!![]})[_0x5993('0x15')](function(_0x4cf76d){_0x35e6f9=_0x4cf76d;if(_0x35e6f9&&_0x35e6f9[_0x5993('0x1d')]){switch(_0x35e6f9[_0x5993('0x1d')]){case _0x5993('0x1e'):var _0x32f8ab=require(_0x5993('0x1e'));if(_0x35e6f9[_0x5993('0x1f')]&&_0x35e6f9['authToken']&&_0x35e6f9[_0x5993('0x20')]){var _0x172392=new _0x32f8ab(_0x35e6f9[_0x5993('0x1f')],_0x35e6f9['authToken']);_0x172392[_0x5993('0x21')][_0x5993('0x22')]({'body':_0x5a8993[_0x5993('0x23')],'to':_0x5a8993['phone'],'from':_0x35e6f9[_0x5993('0x20')],'statusCallback':_0x35e6f9[_0x5993('0x24')]+_0x5993('0x25')+_0x5a8993['id']+_0x5993('0x26')+_0x35e6f9[_0x5993('0x27')]})[_0x5993('0x15')](function(_0x308b1d){if(_0x308b1d['sid']){return _0x3edea2[_0x5993('0x16')]({'messageId':_0x308b1d['sid']});}})[_0x5993('0x19')](function(_0x15e7e5){logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),'twilio',util[_0x5993('0x2b')](_0x15e7e5,{'showHidden':![],'depth':null}));});}else{logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),'twilio',_0x5993('0x2c'));}break;case _0x5993('0x2d'):var _0x46fcd9='https://api.skebby.it/API/v1.0/REST/';if(_0x35e6f9['username']&&_0x35e6f9[_0x5993('0x2e')]){var _0x4c96c8={'recipient':[_0x5a8993[_0x5993('0x20')]],'message':_0x5a8993[_0x5993('0x23')],'message_type':_0x35e6f9[_0x5993('0x2f')]};if(_0x35e6f9[_0x5993('0x2f')]&&_0x35e6f9['smsMethod']!=='SI'){_0x4c96c8[_0x5993('0x30')]=_0x35e6f9[_0x5993('0x20')];}var _0x44796d={'url':_0x46fcd9+_0x5993('0x31')+_0x35e6f9[_0x5993('0x32')]+_0x5993('0x33')+_0x35e6f9[_0x5993('0x2e')],'method':_0x5993('0x34')};rp(_0x44796d)['then'](function(_0x31fa50){var _0x233a8b=_0x31fa50[_0x5993('0x35')](';');var _0x3c840b={'user_key':_0x233a8b[0x0],'session_key':_0x233a8b[0x1]};_0x44796d={'url':_0x46fcd9+_0x5993('0x36'),'method':_0x5993('0x37'),'headers':{'user_key':_0x3c840b[_0x5993('0x38')],'Session_key':_0x3c840b[_0x5993('0x39')]},'json':!![],'body':_0x4c96c8};return rp(_0x44796d);})[_0x5993('0x15')](function(_0x3cf7a0){if(_0x3cf7a0[_0x5993('0x3a')]>=0x1){var _0xd247f1={'messageId':_0x3cf7a0[_0x5993('0x3b')]};if(_0x35e6f9['smsMethod']!=='GP'||!_0x35e6f9[_0x5993('0x3c')]){_0xd247f1[_0x5993('0x3d')]=!![];}return _0x3edea2[_0x5993('0x16')](_0xd247f1);}else{return logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),'skebby',util[_0x5993('0x2b')](_0x3cf7a0,{'showHidden':![],'depth':null}));}})[_0x5993('0x19')](function(_0x439726){return logger['error'](_0x5993('0x29'),'afterCreate',_0x5993('0x2d'),util[_0x5993('0x2b')](_0x439726,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x5993('0x29'),'afterCreate','skebby',_0x5993('0x3e'));}break;case'connectel':if(_0x35e6f9[_0x5993('0x3f')]){var _0x22d033={'recipient':_0x5a8993[_0x5993('0x20')],'message':_0x5a8993[_0x5993('0x23')],'sender':_0x35e6f9[_0x5993('0x40')]||_0x35e6f9[_0x5993('0x20')],'authorization':_0x35e6f9[_0x5993('0x3f')]};var _0x281d90={'method':_0x5993('0x37'),'uri':_0x5993('0x41'),'body':_0x22d033,'json':!![]};rp(_0x281d90)[_0x5993('0x15')](function(_0x47990c){var _0x2e57d8={'messageId':_0x47990c[_0x5993('0x42')]};if(!_0x35e6f9[_0x5993('0x3c')]){_0x2e57d8[_0x5993('0x3d')]=!![];}return _0x3edea2[_0x5993('0x16')](_0x2e57d8);})[_0x5993('0x19')](function(_0x40aee9){logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x43'),util['inspect'](_0x40aee9,{'showHidden':![],'depth':null}));});}else{logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x43'),_0x5993('0x44'));}break;case _0x5993('0x45'):if(_0x35e6f9[_0x5993('0x32')]&&_0x35e6f9[_0x5993('0x2e')]){var _0x22d033={'messages':[{'source':_0x5993('0x46'),'to':_0x5a8993[_0x5993('0x20')],'body':_0x5a8993['body'],'from':_0x35e6f9[_0x5993('0x40')]||_0x35e6f9['phone']}]};var _0x36e0a0=util['format'](_0x5993('0x47'),_0x35e6f9[_0x5993('0x32')],_0x35e6f9['password']);var _0x281d90={'method':_0x5993('0x37'),'uri':_0x5993('0x48'),'body':_0x22d033,'headers':{'Authorization':util[_0x5993('0x49')](_0x5993('0x4a'),new Buffer(_0x36e0a0)['toString'](_0x5993('0x4b')))},'json':!![]};rp(_0x281d90)[_0x5993('0x15')](function(_0x25c5e1){if(_0x25c5e1[_0x5993('0x4c')]>=0xc8&&_0x25c5e1[_0x5993('0x4c')]<=0xce){if(_0x25c5e1[_0x5993('0x4d')]&&_0x25c5e1[_0x5993('0x4d')][_0x5993('0x4e')]>0x0){var _0x5cd973=_['head'](_0x25c5e1['data'][_0x5993('0x21')]);var _0x50c99d={'messageId':_0x5cd973['message_id']};if(!_0x35e6f9[_0x5993('0x3c')]){_0x50c99d['read']=!![];}return _0x3edea2[_0x5993('0x16')](_0x50c99d);}else{logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),'clickSend',util[_0x5993('0x2b')](_0x25c5e1,{'showHidden':![],'depth':null}));}}else{logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x4f'),util[_0x5993('0x2b')](_0x25c5e1,{'showHidden':![],'depth':null}));}})['catch'](function(_0x592600){logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),'clickSend',util['inspect'](_0x592600,{'showHidden':![],'depth':null}));});}else{logger[_0x5993('0x28')](_0x5993('0x29'),'afterCreate',_0x5993('0x4f'),_0x5993('0x3e'));}break;case'plivo':if(_0x35e6f9[_0x5993('0x50')]&&_0x35e6f9[_0x5993('0x3f')]){var _0x22d033={'dst':_0x5a8993['phone'],'text':_0x5a8993[_0x5993('0x23')],'src':_0x35e6f9['senderString']||_0x35e6f9[_0x5993('0x20')],'url':_0x35e6f9[_0x5993('0x24')]+_0x5993('0x25')+_0x5a8993['id']+_0x5993('0x26')+_0x35e6f9[_0x5993('0x27')]};var _0x36e0a0=util[_0x5993('0x49')]('%s:%s',_0x35e6f9[_0x5993('0x50')],_0x35e6f9[_0x5993('0x3f')]);var _0x281d90={'method':_0x5993('0x37'),'uri':util['format']('https://api.plivo.com/v1/Account/%s/Message/',_0x35e6f9['authId']),'body':_0x22d033,'headers':{'Authorization':util[_0x5993('0x49')]('Basic\x20%s',new Buffer(_0x36e0a0)[_0x5993('0x51')]('base64'))},'json':!![]};rp(_0x281d90)[_0x5993('0x15')](function(_0x639da1){var _0x27596d={'messageId':_0x639da1[_0x5993('0x52')][0x0]};return _0x3edea2[_0x5993('0x16')](_0x27596d);})[_0x5993('0x19')](function(_0x43df4e){logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x53'),util['inspect'](_0x43df4e,{'showHidden':![],'depth':null}));});}else{logger[_0x5993('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x5993('0x2a'),'plivo','Missing\x20parameters:\x20authId,\x20authToken');}break;case _0x5993('0x54'):if(_0x35e6f9[_0x5993('0x32')]&&_0x35e6f9['password']){if(_0x35e6f9[_0x5993('0x55')]){var _0x2251fb={'method':_0x5993('0x37'),'uri':_0x35e6f9['baseUrl']+_0x5993('0x56'),'body':{'username':_0x35e6f9['username'],'password':_0x35e6f9[_0x5993('0x2e')]},'json':!![]};return rp(_0x2251fb)[_0x5993('0x15')](function(_0x59c2bf){var _0x3607a7={'method':_0x5993('0x37'),'uri':_0x35e6f9['baseUrl']+_0x5993('0x57'),'body':{'messages':[{'from':_0x35e6f9[_0x5993('0x20')],'destinations':[{'to':_0x5a8993[_0x5993('0x20')]}],'text':_0x5a8993['body'],'notifyUrl':_0x35e6f9[_0x5993('0x24')]+_0x5993('0x25')+_0x5a8993['id']+_0x5993('0x26')+_0x35e6f9[_0x5993('0x27')],'notifyContentType':_0x5993('0x58'),'callbackData':_0x35e6f9[_0x5993('0x20')]+';'+_0x5a8993['body']}]},'headers':{'Authorization':'IBSSO\x20'+_0x59c2bf[_0x5993('0x27')]},'json':!![]};return rp(_0x3607a7)[_0x5993('0x15')](function(_0x55d896){if(_0x55d896['messages']){var _0x2a51af={'messageId':_0x55d896[_0x5993('0x21')][0x0][_0x5993('0x9')]};if(!_0x35e6f9[_0x5993('0x3c')]){_0x2a51af[_0x5993('0x3d')]=!![];}return _0x3edea2[_0x5993('0x16')](_0x2a51af);}else{return logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),'infobip',util[_0x5993('0x2b')](_0x55d896,{'showHidden':![],'depth':null}));}});})[_0x5993('0x19')](function(_0x1b5ef8){return logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x54'),util[_0x5993('0x2b')](_0x1b5ef8,{'showHidden':![],'depth':null}));});}else{logger[_0x5993('0x28')](_0x5993('0x29'),'afterCreate','infobip',_0x5993('0x59'));}}else{logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x54'),_0x5993('0x3e'));}break;case _0x5993('0x5a'):var _0x254bc0=require('crypto');if(_0x35e6f9[_0x5993('0x5b')]){var _0x2a3037={};_0x2a3037[_0x5993('0x5c')]=_0x35e6f9[_0x5993('0x32')];_0x2a3037['phone']=_0x5a8993['phone'];_0x2a3037[_0x5993('0x30')]=_0x35e6f9['phone'];_0x2a3037[_0x5993('0x5d')]=_0x5a8993[_0x5993('0x23')];_0x2a3037['timestamp']=+new Date();var _0x53846d='';var _0xce93bb='';var _0x57b7eb=Object['keys'](_0x2a3037);_0x57b7eb[_0x5993('0x5e')]();for(var _0x1a8566=0x0;_0x1a8566<_0x57b7eb[_0x5993('0x5f')];_0x1a8566++){if(_0x53846d!=''){_0x53846d+='&';}_0x53846d+=_0x57b7eb[_0x1a8566]+'='+encodeURIComponent(_0x2a3037[_0x57b7eb[_0x1a8566]]);_0xce93bb+=_0x2a3037[_0x57b7eb[_0x1a8566]];}_0xce93bb+=_0x35e6f9[_0x5993('0x5b')];_0xce93bb=_0x254bc0['createHash']('md5')[_0x5993('0x16')](_0xce93bb)[_0x5993('0x60')]('hex');if(_0x53846d!==''){_0x53846d+='&';}_0x53846d+=_0x5993('0x61')+_0xce93bb;var _0x44796d={'method':_0x5993('0x34'),'uri':_0x35e6f9['baseUrl']+_0x5993('0x62')+_0x53846d,'json':!![]};return rp(_0x44796d)[_0x5993('0x15')](function(_0x303745){var _0x37a554=Object[_0x5993('0x63')](_0x303745);if(_0x303745[_0x37a554[0x0]][_0x5993('0x28')]&&parseInt(_0x303745[_0x37a554[0x0]][_0x5993('0x28')])===0x0){var _0x255c91={'messageId':_0x303745[_0x37a554[0x0]]['id_sms']};if(!_0x35e6f9['deliveryReport']){_0x255c91[_0x5993('0x3d')]=!![];}return _0x3edea2[_0x5993('0x16')](_0x255c91);}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x5993('0x2a'),'csc',util[_0x5993('0x2b')](_0x303745[_0x5993('0x28')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x2178ca){return logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x5a'),util[_0x5993('0x2b')](_0x2178ca,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x5a'),_0x5993('0x64'));}break;case'clickatell':if(_0x35e6f9[_0x5993('0x5b')]){var _0x1ebbfd={'method':_0x5993('0x37'),'uri':'https://platform.clickatell.com/messages','headers':{'Authorization':_0x35e6f9[_0x5993('0x5b')]},'body':{'content':_0x5a8993[_0x5993('0x23')],'to':[_0x5a8993[_0x5993('0x20')]],'from':_0x35e6f9[_0x5993('0x20')],'binary':![],'clientMessageId':_0x5993('0x65'),'charset':_0x5993('0x66')},'json':!![]};rp(_0x1ebbfd)[_0x5993('0x15')](function(_0x36f15e){if(!_0x36f15e[_0x5993('0x28')]){var _0x5acbb0={'messageId':_0x36f15e[_0x5993('0x21')][0x0][_0x5993('0x67')]};if(!_0x35e6f9[_0x5993('0x3c')]){_0x5acbb0[_0x5993('0x3d')]=!![];}return _0x3edea2[_0x5993('0x16')](_0x5acbb0);}else{return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x5993('0x68'),util[_0x5993('0x2b')](_0x36f15e['error'],{'showHidden':![],'depth':null}));}})['catch'](function(_0x4b8c9c){return logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x68'),util[_0x5993('0x2b')](_0x4b8c9c,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x68'),_0x5993('0x64'));}break;case _0x5993('0x69'):if(_0x35e6f9[_0x5993('0x32')]&&_0x35e6f9['password']){var _0x36e0a0=util[_0x5993('0x49')](_0x5993('0x47'),_0x35e6f9[_0x5993('0x32')],_0x35e6f9[_0x5993('0x2e')]);var _0x281d90={'method':_0x5993('0x37'),'uri':'https://messaging.bandwidth.com/api/v2/users/'+_0x35e6f9[_0x5993('0x6a')]+_0x5993('0x6b'),'body':{'to':[_0x5a8993[_0x5993('0x20')]],'text':_0x5a8993[_0x5993('0x23')],'from':_0x35e6f9['phone'],'applicationId':_0x35e6f9[_0x5993('0x6c')]},'headers':{'Authorization':util['format'](_0x5993('0x4a'),new Buffer(_0x36e0a0)[_0x5993('0x51')](_0x5993('0x4b')))},'json':!![]};rp(_0x281d90)['then'](function(_0x567de3){if(_0x567de3['id']){var _0x33b15e={'messageId':_0x567de3['id']};return _0x3edea2[_0x5993('0x16')](_0x33b15e);}else{logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x69'),util[_0x5993('0x2b')](_0x567de3,{'showHidden':![],'depth':null}));}})[_0x5993('0x19')](function(_0x48a261){logger['error'](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x69'),util[_0x5993('0x2b')](_0x48a261,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x5993('0x2a'),_0x5993('0x69'),_0x5993('0x3e'));}break;case _0x5993('0x6d'):if(_0x35e6f9[_0x5993('0x5b')]){var _0x565aa4={};var _0x44796d={'method':_0x5993('0x37'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':_0x5993('0x6e')+_0x35e6f9[_0x5993('0x5b')],'Content-Type':_0x5993('0x58')},'body':{'from':_0x35e6f9['phone'],'to':_0x5a8993[_0x5993('0x20')],'text':_0x5a8993[_0x5993('0x23')]},'json':!![]};return rp(_0x44796d)[_0x5993('0x15')](function(_0x36fb7d){if(_0x36fb7d['code']==0xca){_0x565aa4[_0x5993('0x6f')]=_0x36fb7d;var _0x2734e0={'method':'POST','uri':_0x5993('0x70'),'headers':{'Authorization':_0x5993('0x6e')+_0x35e6f9[_0x5993('0x5b')],'Content-Type':'application/json'},'body':{'refid':_0x565aa4[_0x5993('0x6f')][_0x5993('0x71')]},'json':!![]};return rp(_0x2734e0)[_0x5993('0x15')](function(_0x3ca1ea){_0x565aa4[_0x5993('0x72')]=_0x3ca1ea;var _0x18b1ba={'messageId':_0x565aa4[_0x5993('0x6f')][_0x5993('0x71')],'read':!![]};return _0x3edea2[_0x5993('0x16')](_0x18b1ba);});}else{return logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x6d'),util[_0x5993('0x2b')](_0x36fb7d,{'showHidden':![],'depth':null}));}})[_0x5993('0x19')](function(_0x5cd6a0){return logger[_0x5993('0x28')](_0x5993('0x29'),_0x5993('0x2a'),_0x5993('0x6d'),util[_0x5993('0x2b')](_0x5cd6a0,{'showHidden':![],'depth':null}));});}else{return logger[_0x5993('0x28')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x5993('0x2a'),'intelepeer',_0x5993('0x73'));}break;}}})[_0x5993('0x74')](function(){_0x4dac07();});}else{_0x4dac07();}}},'charset':'utf8mb4','collate':_0x5993('0x75')});};
\ No newline at end of file
+var _0xc0a1=['twilio','accountSid','authToken','create','phone','/api/sms/messages/','/status?token=','token','update','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','password','smsMethod','login?username=','username','GET','split','sms','POST','user_key','session_key','total_sent','internal_order_id','deliveryReport','Missing\x20parameters:\x20username,\x20password','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','requestid','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','format','%s:%s','Basic\x20%s','base64','http_code','data','queued_count','head','messages','message_id','read','clickSend','plivo','authId','remote','toString','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','IBSSO\x20','Missing\x20parameters:\x20base_url','csc','crypto','sender','text','keys','sort','length','apiKey','createHash','md5','digest','hex','signature=','/external/get/send.php?','Missing\x20parameters:\x20apiKey','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','clickatell','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','application/json','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','Bearer\x20','refid','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','request-promise','path','rimraf','exports','SmsMessage','sms_messages','messageId','fti_sms_messages','body','models','get','toLowerCase','direction','out','secret','UserId','SmsInteractionId','findOne','then','createdAt','catch','error','SmsAccount','find','SmsAccountId','type'];(function(_0xd4636c,_0x34dbf6){var _0x5ee17d=function(_0x223c38){while(--_0x223c38){_0xd4636c['push'](_0xd4636c['shift']());}};_0x5ee17d(++_0x34dbf6);}(_0xc0a1,0xe2));var _0x1c0a=function(_0x31ce3d,_0x581047){_0x31ce3d=_0x31ce3d-0x0;var _0x203d95=_0xc0a1[_0x31ce3d];return _0x203d95;};'use strict';var _=require(_0x1c0a('0x0'));var util=require(_0x1c0a('0x1'));var logger=require(_0x1c0a('0x2'))(_0x1c0a('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1c0a('0x4'));var fs=require('fs');var path=require(_0x1c0a('0x5'));var rimraf=require(_0x1c0a('0x6'));var config=require('../../config/environment');var attributes=require('./smsMessage.attributes');module[_0x1c0a('0x7')]=function(_0x3ca7f2,_0x2c3ad2){return _0x3ca7f2['define'](_0x1c0a('0x8'),attributes,{'tableName':_0x1c0a('0x9'),'paranoid':![],'indexes':[{'name':_0x1c0a('0xa'),'fields':[_0x1c0a('0xa')]},{'name':_0x1c0a('0xb'),'fields':[_0x1c0a('0xc')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x4c6cd5,_0x14ee3a,_0x50206f){var _0x127d1c=_0x3ca7f2[_0x1c0a('0xd')];var _0x528ee9=_0x4c6cd5[_0x1c0a('0xe')]({'plain':!![]});if(_0x528ee9['direction'][_0x1c0a('0xf')]()==='in'||_0x528ee9[_0x1c0a('0x10')]['toLowerCase']()===_0x1c0a('0x11')&&!_0x528ee9[_0x1c0a('0x12')]&&!_['isNil'](_0x528ee9[_0x1c0a('0x13')])&&!_['isNil'](_0x528ee9[_0x1c0a('0x14')])){_0x127d1c['SmsInteraction'][_0x1c0a('0x15')]({'where':{'id':_0x528ee9[_0x1c0a('0x14')]}})[_0x1c0a('0x16')](function(_0x21c2a0){if(_0x21c2a0){_0x21c2a0['update']({'lastMsgAt':_0x528ee9[_0x1c0a('0x17')],'lastMsgDirection':_0x528ee9[_0x1c0a('0x10')]['toLowerCase']()});}})[_0x1c0a('0x18')](function(_0x54c0bc){console[_0x1c0a('0x19')](_0x54c0bc);});}if(_0x528ee9[_0x1c0a('0x10')]===_0x1c0a('0x11')&&!_0x528ee9[_0x1c0a('0x12')]){var _0x30bf9d;_0x127d1c[_0x1c0a('0x1a')][_0x1c0a('0x1b')]({'where':{'id':_0x528ee9[_0x1c0a('0x1c')]},'raw':!![]})[_0x1c0a('0x16')](function(_0x48332b){_0x30bf9d=_0x48332b;if(_0x30bf9d&&_0x30bf9d[_0x1c0a('0x1d')]){switch(_0x30bf9d[_0x1c0a('0x1d')]){case _0x1c0a('0x1e'):var _0x13492=require(_0x1c0a('0x1e'));if(_0x30bf9d[_0x1c0a('0x1f')]&&_0x30bf9d[_0x1c0a('0x20')]&&_0x30bf9d['phone']){var _0x26b9e2=new _0x13492(_0x30bf9d['accountSid'],_0x30bf9d[_0x1c0a('0x20')]);_0x26b9e2['messages'][_0x1c0a('0x21')]({'body':_0x528ee9[_0x1c0a('0xc')],'to':_0x528ee9[_0x1c0a('0x22')],'from':_0x30bf9d['phone'],'statusCallback':_0x30bf9d['remote']+_0x1c0a('0x23')+_0x528ee9['id']+_0x1c0a('0x24')+_0x30bf9d[_0x1c0a('0x25')]})[_0x1c0a('0x16')](function(_0x123ea8){if(_0x123ea8['sid']){return _0x4c6cd5[_0x1c0a('0x26')]({'messageId':_0x123ea8[_0x1c0a('0x27')]});}})[_0x1c0a('0x18')](function(_0x1f406f){logger[_0x1c0a('0x19')](_0x1c0a('0x28'),_0x1c0a('0x29'),_0x1c0a('0x1e'),util[_0x1c0a('0x2a')](_0x1f406f,{'showHidden':![],'depth':null}));});}else{logger[_0x1c0a('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1c0a('0x29'),_0x1c0a('0x1e'),_0x1c0a('0x2b'));}break;case _0x1c0a('0x2c'):var _0x33077e=_0x1c0a('0x2d');if(_0x30bf9d['username']&&_0x30bf9d[_0x1c0a('0x2e')]){var _0x262ffd={'recipient':[_0x528ee9[_0x1c0a('0x22')]],'message':_0x528ee9[_0x1c0a('0xc')],'message_type':_0x30bf9d[_0x1c0a('0x2f')]};if(_0x30bf9d[_0x1c0a('0x2f')]&&_0x30bf9d['smsMethod']!=='SI'){_0x262ffd['sender']=_0x30bf9d[_0x1c0a('0x22')];}var _0x854c65={'url':_0x33077e+_0x1c0a('0x30')+_0x30bf9d[_0x1c0a('0x31')]+'&password='+_0x30bf9d[_0x1c0a('0x2e')],'method':_0x1c0a('0x32')};rp(_0x854c65)[_0x1c0a('0x16')](function(_0x469e21){var _0x29d95b=_0x469e21[_0x1c0a('0x33')](';');var _0xa98a6={'user_key':_0x29d95b[0x0],'session_key':_0x29d95b[0x1]};_0x854c65={'url':_0x33077e+_0x1c0a('0x34'),'method':_0x1c0a('0x35'),'headers':{'user_key':_0xa98a6[_0x1c0a('0x36')],'Session_key':_0xa98a6[_0x1c0a('0x37')]},'json':!![],'body':_0x262ffd};return rp(_0x854c65);})[_0x1c0a('0x16')](function(_0x3e0c04){if(_0x3e0c04[_0x1c0a('0x38')]>=0x1){var _0x3d462a={'messageId':_0x3e0c04[_0x1c0a('0x39')]};if(_0x30bf9d[_0x1c0a('0x2f')]!=='GP'||!_0x30bf9d[_0x1c0a('0x3a')]){_0x3d462a['read']=!![];}return _0x4c6cd5[_0x1c0a('0x26')](_0x3d462a);}else{return logger[_0x1c0a('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','skebby',util['inspect'](_0x3e0c04,{'showHidden':![],'depth':null}));}})[_0x1c0a('0x18')](function(_0x438fdd){return logger[_0x1c0a('0x19')](_0x1c0a('0x28'),_0x1c0a('0x29'),_0x1c0a('0x2c'),util[_0x1c0a('0x2a')](_0x438fdd,{'showHidden':![],'depth':null}));});}else{logger[_0x1c0a('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x1c0a('0x2c'),_0x1c0a('0x3b'));}break;case _0x1c0a('0x3c'):if(_0x30bf9d[_0x1c0a('0x20')]){var _0x4fbaaa={'recipient':_0x528ee9[_0x1c0a('0x22')],'message':_0x528ee9[_0x1c0a('0xc')],'sender':_0x30bf9d[_0x1c0a('0x3d')]||_0x30bf9d['phone'],'authorization':_0x30bf9d[_0x1c0a('0x20')]};var _0x14ee3a={'method':_0x1c0a('0x35'),'uri':_0x1c0a('0x3e'),'body':_0x4fbaaa,'json':!![]};rp(_0x14ee3a)[_0x1c0a('0x16')](function(_0x55b509){var _0x53395c={'messageId':_0x55b509[_0x1c0a('0x3f')]};if(!_0x30bf9d[_0x1c0a('0x3a')]){_0x53395c['read']=!![];}return _0x4c6cd5[_0x1c0a('0x26')](_0x53395c);})[_0x1c0a('0x18')](function(_0x4ccc17){logger[_0x1c0a('0x19')](_0x1c0a('0x28'),_0x1c0a('0x29'),_0x1c0a('0x3c'),util[_0x1c0a('0x2a')](_0x4ccc17,{'showHidden':![],'depth':null}));});}else{logger[_0x1c0a('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1c0a('0x29'),_0x1c0a('0x3c'),_0x1c0a('0x40'));}break;case _0x1c0a('0x41'):if(_0x30bf9d[_0x1c0a('0x31')]&&_0x30bf9d[_0x1c0a('0x2e')]){var _0x4fbaaa={'messages':[{'source':_0x1c0a('0x42'),'to':_0x528ee9[_0x1c0a('0x22')],'body':_0x528ee9[_0x1c0a('0xc')],'from':_0x30bf9d[_0x1c0a('0x3d')]||_0x30bf9d[_0x1c0a('0x22')]}]};var _0x5230e7=util[_0x1c0a('0x43')](_0x1c0a('0x44'),_0x30bf9d[_0x1c0a('0x31')],_0x30bf9d[_0x1c0a('0x2e')]);var _0x14ee3a={'method':_0x1c0a('0x35'),'uri':'https://rest.clicksend.com/v3/sms/send','body':_0x4fbaaa,'headers':{'Authorization':util['format'](_0x1c0a('0x45'),new Buffer(_0x5230e7)['toString'](_0x1c0a('0x46')))},'json':!![]};rp(_0x14ee3a)['then'](function(_0x556d22){if(_0x556d22[_0x1c0a('0x47')]>=0xc8&&_0x556d22['http_code']<=0xce){if(_0x556d22[_0x1c0a('0x48')]&&_0x556d22[_0x1c0a('0x48')][_0x1c0a('0x49')]>0x0){var _0x404251=_[_0x1c0a('0x4a')](_0x556d22[_0x1c0a('0x48')][_0x1c0a('0x4b')]);var _0x355ccd={'messageId':_0x404251[_0x1c0a('0x4c')]};if(!_0x30bf9d[_0x1c0a('0x3a')]){_0x355ccd[_0x1c0a('0x4d')]=!![];}return _0x4c6cd5['update'](_0x355ccd);}else{logger['error'](_0x1c0a('0x28'),_0x1c0a('0x29'),_0x1c0a('0x4e'),util['inspect'](_0x556d22,{'showHidden':![],'depth':null}));}}else{logger[_0x1c0a('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1c0a('0x29'),_0x1c0a('0x4e'),util['inspect'](_0x556d22,{'showHidden':![],'depth':null}));}})['catch'](function(_0x46b094){logger[_0x1c0a('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1c0a('0x29'),'clickSend',util['inspect'](_0x46b094,{'showHidden':![],'depth':null}));});}else{logger[_0x1c0a('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x1c0a('0x4e'),_0x1c0a('0x3b'));}break;case _0x1c0a('0x4f'):if(_0x30bf9d[_0x1c0a('0x50')]&&_0x30bf9d[_0x1c0a('0x20')]){var _0x4fbaaa={'dst':_0x528ee9['phone'],'text':_0x528ee9[_0x1c0a('0xc')],'src':_0x30bf9d[_0x1c0a('0x3d')]||_0x30bf9d['phone'],'url':_0x30bf9d[_0x1c0a('0x51')]+_0x1c0a('0x23')+_0x528ee9['id']+_0x1c0a('0x24')+_0x30bf9d[_0x1c0a('0x25')]};var _0x5230e7=util[_0x1c0a('0x43')]('%s:%s',_0x30bf9d[_0x1c0a('0x50')],_0x30bf9d[_0x1c0a('0x20')]);var _0x14ee3a={'method':'POST','uri':util[_0x1c0a('0x43')]('https://api.plivo.com/v1/Account/%s/Message/',_0x30bf9d[_0x1c0a('0x50')]),'body':_0x4fbaaa,'headers':{'Authorization':util['format']('Basic\x20%s',new Buffer(_0x5230e7)[_0x1c0a('0x52')](_0x1c0a('0x46')))},'json':!![]};rp(_0x14ee3a)[_0x1c0a('0x16')](function(_0x3b5602){var _0x1d209a={'messageId':_0x3b5602[_0x1c0a('0x53')][0x0]};return _0x4c6cd5['update'](_0x1d209a);})[_0x1c0a('0x18')](function(_0x4b25ba){logger[_0x1c0a('0x19')](_0x1c0a('0x28'),_0x1c0a('0x29'),_0x1c0a('0x4f'),util[_0x1c0a('0x2a')](_0x4b25ba,{'showHidden':![],'depth':null}));});}else{logger[_0x1c0a('0x19')](_0x1c0a('0x28'),_0x1c0a('0x29'),_0x1c0a('0x4f'),_0x1c0a('0x54'));}break;case _0x1c0a('0x55'):if(_0x30bf9d[_0x1c0a('0x31')]&&_0x30bf9d[_0x1c0a('0x2e')]){if(_0x30bf9d[_0x1c0a('0x56')]){var _0x6f69f8={'method':_0x1c0a('0x35'),'uri':_0x30bf9d['baseUrl']+_0x1c0a('0x57'),'body':{'username':_0x30bf9d['username'],'password':_0x30bf9d[_0x1c0a('0x2e')]},'json':!![]};return rp(_0x6f69f8)[_0x1c0a('0x16')](function(_0x27186d){var _0x5a77eb={'method':_0x1c0a('0x35'),'uri':_0x30bf9d['baseUrl']+_0x1c0a('0x58'),'body':{'messages':[{'from':_0x30bf9d['phone'],'destinations':[{'to':_0x528ee9[_0x1c0a('0x22')]}],'text':_0x528ee9[_0x1c0a('0xc')],'notifyUrl':_0x30bf9d[_0x1c0a('0x51')]+_0x1c0a('0x23')+_0x528ee9['id']+_0x1c0a('0x24')+_0x30bf9d['token'],'notifyContentType':'application/json','callbackData':_0x30bf9d[_0x1c0a('0x22')]+';'+_0x528ee9[_0x1c0a('0xc')]}]},'headers':{'Authorization':_0x1c0a('0x59')+_0x27186d[_0x1c0a('0x25')]},'json':!![]};return rp(_0x5a77eb)['then'](function(_0x579663){if(_0x579663['messages']){var _0x3af31b={'messageId':_0x579663[_0x1c0a('0x4b')][0x0][_0x1c0a('0xa')]};if(!_0x30bf9d[_0x1c0a('0x3a')]){_0x3af31b[_0x1c0a('0x4d')]=!![];}return _0x4c6cd5[_0x1c0a('0x26')](_0x3af31b);}else{return logger[_0x1c0a('0x19')](_0x1c0a('0x28'),_0x1c0a('0x29'),_0x1c0a('0x55'),util[_0x1c0a('0x2a')](_0x579663,{'showHidden':![],'depth':null}));}});})[_0x1c0a('0x18')](function(_0x2942e4){return logger[_0x1c0a('0x19')](_0x1c0a('0x28'),_0x1c0a('0x29'),'infobip',util['inspect'](_0x2942e4,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1c0a('0x29'),_0x1c0a('0x55'),_0x1c0a('0x5a'));}}else{logger['error'](_0x1c0a('0x28'),_0x1c0a('0x29'),_0x1c0a('0x55'),_0x1c0a('0x3b'));}break;case _0x1c0a('0x5b'):var _0x2988ff=require(_0x1c0a('0x5c'));if(_0x30bf9d['apiKey']){var _0x3296ef={};_0x3296ef['login']=_0x30bf9d[_0x1c0a('0x31')];_0x3296ef[_0x1c0a('0x22')]=_0x528ee9['phone'];_0x3296ef[_0x1c0a('0x5d')]=_0x30bf9d[_0x1c0a('0x22')];_0x3296ef[_0x1c0a('0x5e')]=_0x528ee9[_0x1c0a('0xc')];_0x3296ef['timestamp']=+new Date();var _0x51c850='';var _0x177d9e='';var _0xf60e41=Object[_0x1c0a('0x5f')](_0x3296ef);_0xf60e41[_0x1c0a('0x60')]();for(var _0x1f72d4=0x0;_0x1f72d4<_0xf60e41[_0x1c0a('0x61')];_0x1f72d4++){if(_0x51c850!=''){_0x51c850+='&';}_0x51c850+=_0xf60e41[_0x1f72d4]+'='+encodeURIComponent(_0x3296ef[_0xf60e41[_0x1f72d4]]);_0x177d9e+=_0x3296ef[_0xf60e41[_0x1f72d4]];}_0x177d9e+=_0x30bf9d[_0x1c0a('0x62')];_0x177d9e=_0x2988ff[_0x1c0a('0x63')](_0x1c0a('0x64'))[_0x1c0a('0x26')](_0x177d9e)[_0x1c0a('0x65')](_0x1c0a('0x66'));if(_0x51c850!==''){_0x51c850+='&';}_0x51c850+=_0x1c0a('0x67')+_0x177d9e;var _0x854c65={'method':'GET','uri':_0x30bf9d[_0x1c0a('0x56')]+_0x1c0a('0x68')+_0x51c850,'json':!![]};return rp(_0x854c65)['then'](function(_0xe46254){var _0x29ba5a=Object['keys'](_0xe46254);if(_0xe46254[_0x29ba5a[0x0]][_0x1c0a('0x19')]&&parseInt(_0xe46254[_0x29ba5a[0x0]]['error'])===0x0){var _0x503fdf={'messageId':_0xe46254[_0x29ba5a[0x0]]['id_sms']};if(!_0x30bf9d[_0x1c0a('0x3a')]){_0x503fdf[_0x1c0a('0x4d')]=!![];}return _0x4c6cd5[_0x1c0a('0x26')](_0x503fdf);}else{return logger[_0x1c0a('0x19')](_0x1c0a('0x28'),_0x1c0a('0x29'),_0x1c0a('0x5b'),util['inspect'](_0xe46254[_0x1c0a('0x19')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x5f5a2d){return logger[_0x1c0a('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1c0a('0x29'),_0x1c0a('0x5b'),util[_0x1c0a('0x2a')](_0x5f5a2d,{'showHidden':![],'depth':null}));});}else{logger[_0x1c0a('0x19')](_0x1c0a('0x28'),_0x1c0a('0x29'),_0x1c0a('0x5b'),_0x1c0a('0x69'));}break;case'clickatell':if(_0x30bf9d['apiKey']){var _0x2d2fbe={'method':'POST','uri':_0x1c0a('0x6a'),'headers':{'Authorization':_0x30bf9d['apiKey']},'body':{'content':_0x528ee9[_0x1c0a('0xc')],'to':[_0x528ee9['phone']],'from':_0x30bf9d[_0x1c0a('0x22')],'binary':![],'clientMessageId':_0x1c0a('0x6b'),'charset':_0x1c0a('0x6c')},'json':!![]};rp(_0x2d2fbe)[_0x1c0a('0x16')](function(_0x4ceb07){if(!_0x4ceb07['error']){var _0x1941a8={'messageId':_0x4ceb07[_0x1c0a('0x4b')][0x0][_0x1c0a('0x6d')]};if(!_0x30bf9d[_0x1c0a('0x3a')]){_0x1941a8[_0x1c0a('0x4d')]=!![];}return _0x4c6cd5[_0x1c0a('0x26')](_0x1941a8);}else{return logger['error'](_0x1c0a('0x28'),'afterCreate',_0x1c0a('0x6e'),util[_0x1c0a('0x2a')](_0x4ceb07[_0x1c0a('0x19')],{'showHidden':![],'depth':null}));}})[_0x1c0a('0x18')](function(_0x1bee07){return logger[_0x1c0a('0x19')](_0x1c0a('0x28'),_0x1c0a('0x29'),_0x1c0a('0x6e'),util[_0x1c0a('0x2a')](_0x1bee07,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x1c0a('0x29'),_0x1c0a('0x6e'),_0x1c0a('0x69'));}break;case _0x1c0a('0x6f'):if(_0x30bf9d[_0x1c0a('0x31')]&&_0x30bf9d['password']){var _0x5230e7=util[_0x1c0a('0x43')](_0x1c0a('0x44'),_0x30bf9d['username'],_0x30bf9d[_0x1c0a('0x2e')]);var _0x14ee3a={'method':_0x1c0a('0x35'),'uri':_0x1c0a('0x70')+_0x30bf9d[_0x1c0a('0x71')]+_0x1c0a('0x72'),'body':{'to':[_0x528ee9[_0x1c0a('0x22')]],'text':_0x528ee9[_0x1c0a('0xc')],'from':_0x30bf9d['phone'],'applicationId':_0x30bf9d[_0x1c0a('0x73')]},'headers':{'Authorization':util['format'](_0x1c0a('0x45'),new Buffer(_0x5230e7)['toString'](_0x1c0a('0x46')))},'json':!![]};rp(_0x14ee3a)[_0x1c0a('0x16')](function(_0x1140e8){if(_0x1140e8['id']){var _0x4608c5={'messageId':_0x1140e8['id']};return _0x4c6cd5[_0x1c0a('0x26')](_0x4608c5);}else{logger[_0x1c0a('0x19')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x1c0a('0x6f'),util[_0x1c0a('0x2a')](_0x1140e8,{'showHidden':![],'depth':null}));}})['catch'](function(_0x4254cd){logger[_0x1c0a('0x19')](_0x1c0a('0x28'),_0x1c0a('0x29'),_0x1c0a('0x6f'),util[_0x1c0a('0x2a')](_0x4254cd,{'showHidden':![],'depth':null}));});}else{logger[_0x1c0a('0x19')](_0x1c0a('0x28'),_0x1c0a('0x29'),_0x1c0a('0x6f'),_0x1c0a('0x3b'));}break;case _0x1c0a('0x74'):if(_0x30bf9d[_0x1c0a('0x62')]){var _0x5420bd={};var _0x854c65={'method':_0x1c0a('0x35'),'uri':_0x1c0a('0x75'),'headers':{'Authorization':'Bearer\x20'+_0x30bf9d[_0x1c0a('0x62')],'Content-Type':_0x1c0a('0x76')},'body':{'from':_0x30bf9d[_0x1c0a('0x22')],'to':_0x528ee9['phone'],'text':_0x528ee9[_0x1c0a('0xc')]},'json':!![]};return rp(_0x854c65)[_0x1c0a('0x16')](function(_0x5c7e1b){if(_0x5c7e1b[_0x1c0a('0x77')]==0xca){_0x5420bd[_0x1c0a('0x78')]=_0x5c7e1b;var _0x533460={'method':'POST','uri':_0x1c0a('0x79'),'headers':{'Authorization':_0x1c0a('0x7a')+_0x30bf9d[_0x1c0a('0x62')],'Content-Type':_0x1c0a('0x76')},'body':{'refid':_0x5420bd[_0x1c0a('0x78')][_0x1c0a('0x7b')]},'json':!![]};return rp(_0x533460)['then'](function(_0x1624a1){_0x5420bd['status']=_0x1624a1;var _0x3e89ae={'messageId':_0x5420bd['message'][_0x1c0a('0x7b')],'read':!![]};return _0x4c6cd5[_0x1c0a('0x26')](_0x3e89ae);});}else{return logger[_0x1c0a('0x19')](_0x1c0a('0x28'),_0x1c0a('0x29'),_0x1c0a('0x74'),util[_0x1c0a('0x2a')](_0x5c7e1b,{'showHidden':![],'depth':null}));}})[_0x1c0a('0x18')](function(_0x3b7a6a){return logger['error'](_0x1c0a('0x28'),'afterCreate',_0x1c0a('0x74'),util['inspect'](_0x3b7a6a,{'showHidden':![],'depth':null}));});}else{return logger[_0x1c0a('0x19')](_0x1c0a('0x28'),'afterCreate',_0x1c0a('0x74'),_0x1c0a('0x7c'));}break;}}})[_0x1c0a('0x7d')](function(){_0x50206f();});}else{_0x50206f();}}},'charset':_0x1c0a('0x7e'),'collate':_0x1c0a('0x7f')});};
\ No newline at end of file
index f8d94ef..a97c64b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d81=['register','request','then','info','request\x20sent','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsMessage,\x20%s,\x20%s','message','result','catch','CreateSmsMessage','options','raw','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','defaults','socket.io-emitter','redis'];(function(_0x1fa759,_0x4ecdce){var _0x2da9f4=function(_0x463e2a){while(--_0x463e2a){_0x1fa759['push'](_0x1fa759['shift']());}};_0x2da9f4(++_0x4ecdce);}(_0x3d81,0x178));var _0x13d8=function(_0x3e4a41,_0x4685fd){_0x3e4a41=_0x3e4a41-0x0;var _0x21a3e8=_0x3d81[_0x3e4a41];return _0x21a3e8;};'use strict';var _=require(_0x13d8('0x0'));var util=require(_0x13d8('0x1'));var moment=require('moment');var BPromise=require(_0x13d8('0x2'));var rs=require(_0x13d8('0x3'));var fs=require('fs');var Redis=require(_0x13d8('0x4'));var db=require(_0x13d8('0x5'))['db'];var utils=require(_0x13d8('0x6'));var logger=require(_0x13d8('0x7'))('rpc');var config=require(_0x13d8('0x8'));var jayson=require(_0x13d8('0x9'));var client=jayson['client'][_0x13d8('0xa')]({'port':0x232a});config['redis']=_[_0x13d8('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x13d8('0xc'))(new Redis(config[_0x13d8('0xd')]));require('./smsMessage.socket')[_0x13d8('0xe')](socket);function respondWithRpcPromise(_0x4ea336,_0x41744a,_0x4bfa9b){return new BPromise(function(_0x48e9ff,_0x1a65e9){return client[_0x13d8('0xf')](_0x4ea336,_0x4bfa9b)[_0x13d8('0x10')](function(_0x602b40){logger[_0x13d8('0x11')]('SmsMessage,\x20%s,\x20%s',_0x41744a,_0x13d8('0x12'));logger['debug'](_0x13d8('0x13'),_0x41744a,_0x13d8('0x12'),JSON[_0x13d8('0x14')](_0x602b40));if(_0x602b40['error']){if(_0x602b40[_0x13d8('0x15')][_0x13d8('0x16')]===0x1f4){logger['error']('SmsMessage,\x20%s,\x20%s',_0x41744a,_0x602b40['error']['message']);return _0x1a65e9(_0x602b40['error']['message']);}logger['error'](_0x13d8('0x17'),_0x41744a,_0x602b40['error'][_0x13d8('0x18')]);return _0x48e9ff(_0x602b40['error'][_0x13d8('0x18')]);}else{logger[_0x13d8('0x11')](_0x13d8('0x17'),_0x41744a,_0x13d8('0x12'));_0x48e9ff(_0x602b40[_0x13d8('0x19')]['message']);}})[_0x13d8('0x1a')](function(_0x5d5bb7){logger[_0x13d8('0x15')]('SmsMessage,\x20%s,\x20%s',_0x41744a,_0x5d5bb7);_0x1a65e9(_0x5d5bb7);});});}exports[_0x13d8('0x1b')]=function(_0x142f41){var _0x9ddd2b=this;return new Promise(function(_0x1f70be,_0x38012a){return db['SmsMessage']['create'](_0x142f41['body'],{'raw':_0x142f41[_0x13d8('0x1c')]?_0x142f41[_0x13d8('0x1c')][_0x13d8('0x1d')]===undefined?!![]:![]:!![]})[_0x13d8('0x10')](function(_0x5d7ba0){logger['info'](_0x13d8('0x1b'),_0x142f41);logger['debug'](_0x13d8('0x1b'),_0x142f41,JSON['stringify'](_0x5d7ba0));_0x1f70be(_0x5d7ba0);})[_0x13d8('0x1a')](function(_0x37e796){logger[_0x13d8('0x15')](_0x13d8('0x1b'),_0x37e796['message'],_0x142f41);_0x38012a(_0x9ddd2b[_0x13d8('0x15')](0x1f4,_0x37e796['message']));});});};
\ No newline at end of file
+var _0xc551=['./smsMessage.socket','register','request','info','SmsMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateSmsMessage','SmsMessage','create','body','options','then','debug','lodash','util','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter'];(function(_0x23d3ea,_0x3cecf5){var _0x53fb06=function(_0x24963b){while(--_0x24963b){_0x23d3ea['push'](_0x23d3ea['shift']());}};_0x53fb06(++_0x3cecf5);}(_0xc551,0x1c0));var _0x1c55=function(_0x588ffc,_0x58725e){_0x588ffc=_0x588ffc-0x0;var _0x3f86ce=_0xc551[_0x588ffc];return _0x3f86ce;};'use strict';var _=require(_0x1c55('0x0'));var util=require(_0x1c55('0x1'));var moment=require(_0x1c55('0x2'));var BPromise=require(_0x1c55('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1c55('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1c55('0x5'))(_0x1c55('0x6'));var config=require(_0x1c55('0x7'));var jayson=require(_0x1c55('0x8'));var client=jayson[_0x1c55('0x9')][_0x1c55('0xa')]({'port':0x232a});config[_0x1c55('0xb')]=_[_0x1c55('0xc')](config[_0x1c55('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x1c55('0xd'))(new Redis(config[_0x1c55('0xb')]));require(_0x1c55('0xe'))[_0x1c55('0xf')](socket);function respondWithRpcPromise(_0x31a0fe,_0x15661e,_0x100800){return new BPromise(function(_0x569f0f,_0x43f30d){return client[_0x1c55('0x10')](_0x31a0fe,_0x100800)['then'](function(_0x44858c){logger[_0x1c55('0x11')](_0x1c55('0x12'),_0x15661e,_0x1c55('0x13'));logger['debug']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x15661e,'request\x20sent',JSON[_0x1c55('0x14')](_0x44858c));if(_0x44858c[_0x1c55('0x15')]){if(_0x44858c[_0x1c55('0x15')][_0x1c55('0x16')]===0x1f4){logger['error'](_0x1c55('0x12'),_0x15661e,_0x44858c['error'][_0x1c55('0x17')]);return _0x43f30d(_0x44858c[_0x1c55('0x15')][_0x1c55('0x17')]);}logger[_0x1c55('0x15')](_0x1c55('0x12'),_0x15661e,_0x44858c[_0x1c55('0x15')][_0x1c55('0x17')]);return _0x569f0f(_0x44858c[_0x1c55('0x15')][_0x1c55('0x17')]);}else{logger[_0x1c55('0x11')](_0x1c55('0x12'),_0x15661e,'request\x20sent');_0x569f0f(_0x44858c[_0x1c55('0x18')][_0x1c55('0x17')]);}})[_0x1c55('0x19')](function(_0x1ecd72){logger[_0x1c55('0x15')]('SmsMessage,\x20%s,\x20%s',_0x15661e,_0x1ecd72);_0x43f30d(_0x1ecd72);});});}exports[_0x1c55('0x1a')]=function(_0x8c15){var _0x437d64=this;return new Promise(function(_0x521c0e,_0x7eff72){return db[_0x1c55('0x1b')][_0x1c55('0x1c')](_0x8c15[_0x1c55('0x1d')],{'raw':_0x8c15[_0x1c55('0x1e')]?_0x8c15['options']['raw']===undefined?!![]:![]:!![]})[_0x1c55('0x1f')](function(_0x32ad5d){logger[_0x1c55('0x11')](_0x1c55('0x1a'),_0x8c15);logger[_0x1c55('0x20')](_0x1c55('0x1a'),_0x8c15,JSON['stringify'](_0x32ad5d));_0x521c0e(_0x32ad5d);})[_0x1c55('0x19')](function(_0x573397){logger[_0x1c55('0x15')](_0x1c55('0x1a'),_0x573397[_0x1c55('0x17')],_0x8c15);_0x7eff72(_0x437d64[_0x1c55('0x15')](0x1f4,_0x573397[_0x1c55('0x17')]));});});};
\ No newline at end of file
index e5db678..5e7e29e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1098=['./smsMessage.events','save','remove','update','emit','removeListener','register','length','smsMessage:'];(function(_0x306018,_0x27a09a){var _0x211343=function(_0x1dd7ab){while(--_0x1dd7ab){_0x306018['push'](_0x306018['shift']());}};_0x211343(++_0x27a09a);}(_0x1098,0xa2));var _0x8109=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1098[_0x3dd15e];return _0x231fd0;};'use strict';var SmsMessageEvents=require(_0x8109('0x0'));var events=[_0x8109('0x1'),_0x8109('0x2'),_0x8109('0x3')];function createListener(_0x566ef4,_0x1b672c){return function(_0x167a74){_0x1b672c[_0x8109('0x4')](_0x566ef4,_0x167a74);};}function removeListener(_0x3f32e3,_0x1217f6){return function(){SmsMessageEvents[_0x8109('0x5')](_0x3f32e3,_0x1217f6);};}exports[_0x8109('0x6')]=function(_0x5262b2){for(var _0x170d69=0x0,_0x608c62=events[_0x8109('0x7')];_0x170d69<_0x608c62;_0x170d69++){var _0x4b8581=events[_0x170d69];var _0x5f32fc=createListener(_0x8109('0x8')+_0x4b8581,_0x5262b2);SmsMessageEvents['on'](_0x4b8581,_0x5f32fc);}};
\ No newline at end of file
+var _0x014e=['length','smsMessage:','./smsMessage.events','remove','update','register'];(function(_0x5ee4c3,_0x57f249){var _0xa11758=function(_0x31ed05){while(--_0x31ed05){_0x5ee4c3['push'](_0x5ee4c3['shift']());}};_0xa11758(++_0x57f249);}(_0x014e,0x92));var _0xe014=function(_0x17ff1b,_0x5d5a71){_0x17ff1b=_0x17ff1b-0x0;var _0x26799f=_0x014e[_0x17ff1b];return _0x26799f;};'use strict';var SmsMessageEvents=require(_0xe014('0x0'));var events=['save',_0xe014('0x1'),_0xe014('0x2')];function createListener(_0x115518,_0x5046ca){return function(_0x1a1214){_0x5046ca['emit'](_0x115518,_0x1a1214);};}function removeListener(_0x1290f7,_0x112335){return function(){SmsMessageEvents['removeListener'](_0x1290f7,_0x112335);};}exports[_0xe014('0x3')]=function(_0x5e7f5d){for(var _0x5a3c25=0x0,_0x2f7131=events[_0xe014('0x4')];_0x5a3c25<_0x2f7131;_0x5a3c25++){var _0x24632e=events[_0x5a3c25];var _0x27ee06=createListener(_0xe014('0x5')+_0x24632e,_0x5e7f5d);SmsMessageEvents['on'](_0x24632e,_0x27ee06);}};
\ No newline at end of file
index 7140d4d..5e5155a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ba7=['getMembers','getTeams','/:id/users','getAgents','post','/:id/teams','addTeams','addAgents','put','update','destroy','delete','removeAgents','exports','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','describe','/:id'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0x2ba7,0x8b));var _0x72ba=function(_0x2f65e1,_0x38de8a){_0x2f65e1=_0x2f65e1-0x0;var _0x23288e=_0x2ba7[_0x2f65e1];return _0x23288e;};'use strict';var multer=require(_0x72ba('0x0'));var util=require('util');var path=require(_0x72ba('0x1'));var timeout=require('connect-timeout');var express=require(_0x72ba('0x2'));var router=express['Router']();var fs_extra=require(_0x72ba('0x3'));var auth=require(_0x72ba('0x4'));var interaction=require(_0x72ba('0x5'));var config=require('../../config/environment');var controller=require('./smsQueue.controller');router[_0x72ba('0x6')]('/',auth[_0x72ba('0x7')](),controller[_0x72ba('0x8')]);router[_0x72ba('0x6')]('/describe',auth['isAuthenticated'](),controller[_0x72ba('0x9')]);router[_0x72ba('0x6')](_0x72ba('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x72ba('0x6')]('/:id/members',auth[_0x72ba('0x7')](),controller[_0x72ba('0xb')]);router[_0x72ba('0x6')]('/:id/teams',auth[_0x72ba('0x7')](),controller[_0x72ba('0xc')]);router[_0x72ba('0x6')](_0x72ba('0xd'),auth[_0x72ba('0x7')](),controller[_0x72ba('0xe')]);router[_0x72ba('0xf')]('/',auth[_0x72ba('0x7')](),controller['create']);router[_0x72ba('0xf')](_0x72ba('0x10'),auth['isAuthenticated'](),controller[_0x72ba('0x11')]);router[_0x72ba('0xf')](_0x72ba('0xd'),auth[_0x72ba('0x7')](),controller[_0x72ba('0x12')]);router[_0x72ba('0x13')]('/:id',auth[_0x72ba('0x7')](),controller[_0x72ba('0x14')]);router['delete'](_0x72ba('0xa'),auth[_0x72ba('0x7')](),controller[_0x72ba('0x15')]);router[_0x72ba('0x16')](_0x72ba('0x10'),auth[_0x72ba('0x7')](),controller['removeTeams']);router[_0x72ba('0x16')](_0x72ba('0xd'),auth[_0x72ba('0x7')](),controller[_0x72ba('0x17')]);module[_0x72ba('0x18')]=router;
\ No newline at end of file
+var _0x6001=['describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','post','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./smsQueue.controller','get','isAuthenticated','index','/describe'];(function(_0x200276,_0x3a39b5){var _0x496325=function(_0x36551d){while(--_0x36551d){_0x200276['push'](_0x200276['shift']());}};_0x496325(++_0x3a39b5);}(_0x6001,0x129));var _0x1600=function(_0x148bd2,_0x3338c6){_0x148bd2=_0x148bd2-0x0;var _0x38c56f=_0x6001[_0x148bd2];return _0x38c56f;};'use strict';var multer=require(_0x1600('0x0'));var util=require(_0x1600('0x1'));var path=require(_0x1600('0x2'));var timeout=require(_0x1600('0x3'));var express=require(_0x1600('0x4'));var router=express[_0x1600('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x1600('0x6'));var interaction=require(_0x1600('0x7'));var config=require('../../config/environment');var controller=require(_0x1600('0x8'));router[_0x1600('0x9')]('/',auth[_0x1600('0xa')](),controller[_0x1600('0xb')]);router[_0x1600('0x9')](_0x1600('0xc'),auth[_0x1600('0xa')](),controller[_0x1600('0xd')]);router[_0x1600('0x9')](_0x1600('0xe'),auth['isAuthenticated'](),controller[_0x1600('0xf')]);router[_0x1600('0x9')](_0x1600('0x10'),auth[_0x1600('0xa')](),controller[_0x1600('0x11')]);router[_0x1600('0x9')](_0x1600('0x12'),auth[_0x1600('0xa')](),controller[_0x1600('0x13')]);router[_0x1600('0x9')](_0x1600('0x14'),auth['isAuthenticated'](),controller['getAgents']);router[_0x1600('0x15')]('/',auth['isAuthenticated'](),controller['create']);router[_0x1600('0x15')]('/:id/teams',auth[_0x1600('0xa')](),controller[_0x1600('0x16')]);router['post'](_0x1600('0x14'),auth[_0x1600('0xa')](),controller[_0x1600('0x17')]);router[_0x1600('0x18')](_0x1600('0xe'),auth['isAuthenticated'](),controller[_0x1600('0x19')]);router[_0x1600('0x1a')](_0x1600('0xe'),auth[_0x1600('0xa')](),controller[_0x1600('0x1b')]);router['delete'](_0x1600('0x12'),auth['isAuthenticated'](),controller[_0x1600('0x1c')]);router['delete'](_0x1600('0x14'),auth[_0x1600('0xa')](),controller[_0x1600('0x1d')]);module[_0x1600('0x1e')]=router;
\ No newline at end of file
index d68d33d..62aa5ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7282=['INTEGER','ENUM','rrmemory','beepall','roundrobin','sequelize','STRING','name'];(function(_0x19cbde,_0x4f8b31){var _0x1da364=function(_0x26c4dd){while(--_0x26c4dd){_0x19cbde['push'](_0x19cbde['shift']());}};_0x1da364(++_0x4f8b31);}(_0x7282,0x95));var _0x2728=function(_0x42e6e7,_0x4ee4f6){_0x42e6e7=_0x42e6e7-0x0;var _0x32909b=_0x7282[_0x42e6e7];return _0x32909b;};'use strict';var Sequelize=require(_0x2728('0x0'));module['exports']={'name':{'type':Sequelize[_0x2728('0x1')],'unique':_0x2728('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x2728('0x1')]},'timeout':{'type':Sequelize[_0x2728('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x2728('0x4')](_0x2728('0x5'),_0x2728('0x6'),_0x2728('0x7'))}};
\ No newline at end of file
+var _0x5bfa=['STRING','name','ENUM','sequelize','exports'];(function(_0xcc4e8,_0x3c8fb4){var _0x31f6ea=function(_0x2d9302){while(--_0x2d9302){_0xcc4e8['push'](_0xcc4e8['shift']());}};_0x31f6ea(++_0x3c8fb4);}(_0x5bfa,0x13e));var _0xa5bf=function(_0x126f47,_0x2199e9){_0x126f47=_0x126f47-0x0;var _0x49508a=_0x5bfa[_0x126f47];return _0x49508a;};'use strict';var Sequelize=require(_0xa5bf('0x0'));module[_0xa5bf('0x1')]={'name':{'type':Sequelize[_0xa5bf('0x2')],'unique':_0xa5bf('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xa5bf('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xa5bf('0x4')]('rrmemory','beepall','roundrobin')}};
\ No newline at end of file
index badad84..ff9c3b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['%s/%s','pick','filter','getTeams','addTeams','ids','findAll','online','voicePause','interface','flatMap','Agents','sequelize','transaction','each','forEach','userSmsQueue:save','removeTeams','Team','field','tq.TeamId','from','team_has_sms_queues','join','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','value','find','isEmpty','removeAgents','emit','userSmsQueue:remove','addAgents','omit','spread','isArray','getAgents','util','squel','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./smsQueue.socket','register','sendStatus','status','end','json','offset','limit','undefined','set','Content-Range','update','then','destroy','SmsQueues','UserProfileResource','error','stack','name','send','index','SmsQueue','rawAttributes','type','key','getOptions','where','count','include','query','rows','catch','show','model','keys','filters','fields','attributes','length','includeAll','options','create','user','get','role','autoAssociation','body','params','describe','getMembers','findOne','intersection','hasOwnProperty','nolimit','order','sort','SmsQueueId','merge','UserSmsQueue','User','findAndCountAll','map','UserId','agent','smsPause','updatedAt','createdAt','format'];(function(_0x459423,_0x3416a8){var _0x42ed14=function(_0x1d4f69){while(--_0x1d4f69){_0x459423['push'](_0x459423['shift']());}};_0x42ed14(++_0x3416a8);}(_0xadb5,0xad));var _0x5adb=function(_0x31db03,_0x13410c){_0x31db03=_0x31db03-0x0;var _0x5169d2=_0xadb5[_0x31db03];return _0x5169d2;};'use strict';var BPromise=require('bluebird');var util=require(_0x5adb('0x0'));var _=require('lodash');var squel=require(_0x5adb('0x1'));var Redis=require(_0x5adb('0x2'));var qs=require(_0x5adb('0x3'));var logger=require('../../config/logger')(_0x5adb('0x4'));var config=require(_0x5adb('0x5'));var db=require(_0x5adb('0x6'))['db'];config['redis']=_[_0x5adb('0x7')](config[_0x5adb('0x8')],{'host':_0x5adb('0x9'),'port':0x18eb});var socket=require(_0x5adb('0xa'))(new Redis(config[_0x5adb('0x8')]));require(_0x5adb('0xb'))[_0x5adb('0xc')](socket);function respondWithStatusCode(_0x6d1b45,_0x41261c){_0x41261c=_0x41261c||0xcc;return function(_0x7293ab){if(_0x7293ab){return _0x6d1b45[_0x5adb('0xd')](_0x41261c);}return _0x6d1b45[_0x5adb('0xe')](_0x41261c)[_0x5adb('0xf')]();};}function respondWithResult(_0x275428,_0x563d86){_0x563d86=_0x563d86||0xc8;return function(_0x4c268d){if(_0x4c268d){return _0x275428[_0x5adb('0xe')](_0x563d86)[_0x5adb('0x10')](_0x4c268d);}};}function respondWithFilteredResult(_0x82e67e,_0x53b772){return function(_0x29f0d5){if(_0x29f0d5){var _0x56012f=typeof _0x53b772[_0x5adb('0x11')]==='undefined'&&typeof _0x53b772[_0x5adb('0x12')]===_0x5adb('0x13');var _0x44abe3=_0x29f0d5['count'];var _0x2a545b=_0x56012f?0x0:_0x53b772[_0x5adb('0x11')];var _0xf82f72=_0x56012f?_0x29f0d5['count']:_0x53b772[_0x5adb('0x11')]+_0x53b772['limit'];var _0x367d82;if(_0xf82f72>=_0x44abe3){_0xf82f72=_0x44abe3;_0x367d82=0xc8;}else{_0x367d82=0xce;}_0x82e67e[_0x5adb('0xe')](_0x367d82);return _0x82e67e[_0x5adb('0x14')](_0x5adb('0x15'),_0x2a545b+'-'+_0xf82f72+'/'+_0x44abe3)[_0x5adb('0x10')](_0x29f0d5);}return null;};}function saveUpdates(_0x39d24d){return function(_0xa29dc){if(_0xa29dc){return _0xa29dc[_0x5adb('0x16')](_0x39d24d)[_0x5adb('0x17')](function(_0x529b65){return _0x529b65;});}return null;};}function removeEntity(_0x3fff62){return function(_0x5de028){if(_0x5de028){return _0x5de028[_0x5adb('0x18')]()['then'](function(){var _0x3ef465=_0x5de028['get']({'plain':!![]});var _0x5e218c=_0x5adb('0x19');return db[_0x5adb('0x1a')][_0x5adb('0x18')]({'where':{'type':_0x5e218c,'resourceId':_0x3ef465['id']}})[_0x5adb('0x17')](function(){return _0x5de028;});})[_0x5adb('0x17')](function(){_0x3fff62['status'](0xcc)[_0x5adb('0xf')]();});}};}function handleEntityNotFound(_0x5c296e){return function(_0x4e9f16){if(!_0x4e9f16){_0x5c296e[_0x5adb('0xd')](0x194);}return _0x4e9f16;};}function handleError(_0x379b33,_0x1a38d3){_0x1a38d3=_0x1a38d3||0x1f4;return function(_0x1a8014){logger[_0x5adb('0x1b')](_0x1a8014[_0x5adb('0x1c')]);if(_0x1a8014[_0x5adb('0x1d')]){delete _0x1a8014['name'];}_0x379b33[_0x5adb('0xe')](_0x1a38d3)[_0x5adb('0x1e')](_0x1a8014);};}exports[_0x5adb('0x1f')]=function(_0x3839fb,_0xeb556c){var _0x49f203={};var _0x2fee18={'count':0x0,'rows':[]};var _0x2e1e63=_['map'](db[_0x5adb('0x20')][_0x5adb('0x21')],function(_0x1a0acd){return{'name':_0x1a0acd['fieldName'],'type':_0x1a0acd[_0x5adb('0x22')][_0x5adb('0x23')]};});_0x49f203=qs[_0x5adb('0x24')](_0x2e1e63,_0x3839fb);var _0x2c64a3={'where':_0x49f203[_0x5adb('0x25')]};return db[_0x5adb('0x20')]['count'](_0x2c64a3)['then'](function(_0x5d457e){_0x2fee18[_0x5adb('0x26')]=_0x5d457e;_0x49f203[_0x5adb('0x27')]=qs[_0x5adb('0x27')](_0x3839fb[_0x5adb('0x28')]);return db[_0x5adb('0x20')]['findAll'](_0x49f203);})[_0x5adb('0x17')](function(_0x34b793){_0x2fee18[_0x5adb('0x29')]=_0x34b793;return _0x2fee18;})[_0x5adb('0x17')](respondWithFilteredResult(_0xeb556c,_0x49f203))[_0x5adb('0x2a')](handleError(_0xeb556c,null));};exports[_0x5adb('0x2b')]=function(_0x28190d,_0x28bf1f){var _0x138bf6={'raw':!![],'where':{'id':_0x28190d['params']['id']}},_0x260295={};_0x260295[_0x5adb('0x2c')]=_['keys'](db[_0x5adb('0x20')][_0x5adb('0x21')]);_0x260295['query']=_[_0x5adb('0x2d')](_0x28190d[_0x5adb('0x28')]);_0x260295[_0x5adb('0x2e')]=_['intersection'](_0x260295[_0x5adb('0x2c')],_0x260295[_0x5adb('0x28')]);_0x138bf6['attributes']=_['intersection'](_0x260295[_0x5adb('0x2c')],qs['fields'](_0x28190d[_0x5adb('0x28')][_0x5adb('0x2f')]));_0x138bf6[_0x5adb('0x30')]=_0x138bf6[_0x5adb('0x30')][_0x5adb('0x31')]?_0x138bf6['attributes']:_0x260295[_0x5adb('0x2c')];if(_0x28190d[_0x5adb('0x28')][_0x5adb('0x32')]){_0x138bf6['include']=[{'all':!![]}];}_0x138bf6=_['merge']({},_0x138bf6,_0x28190d[_0x5adb('0x33')]);return db[_0x5adb('0x20')]['find'](_0x138bf6)[_0x5adb('0x17')](handleEntityNotFound(_0x28bf1f,null))['then'](respondWithResult(_0x28bf1f,null))[_0x5adb('0x2a')](handleError(_0x28bf1f,null));};exports['create']=function(_0x11cb37,_0x4d052f){return db[_0x5adb('0x20')][_0x5adb('0x34')](_0x11cb37['body'],{})[_0x5adb('0x17')](function(_0x5a6a79){var _0xadbe37=_0x11cb37[_0x5adb('0x35')][_0x5adb('0x36')]({'plain':!![]});if(!_0xadbe37)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xadbe37[_0x5adb('0x37')]===_0x5adb('0x35')){var _0xcdaf8e=_0x5a6a79[_0x5adb('0x36')]({'plain':!![]});var _0x22aa95='SmsQueues';return db['UserProfileSection']['find']({'where':{'name':_0x22aa95,'userProfileId':_0xadbe37['userProfileId']},'raw':!![]})[_0x5adb('0x17')](function(_0x2fbe14){if(_0x2fbe14&&_0x2fbe14[_0x5adb('0x38')]===0x0){return db[_0x5adb('0x1a')][_0x5adb('0x34')]({'name':_0xcdaf8e[_0x5adb('0x1d')],'resourceId':_0xcdaf8e['id'],'type':_0x2fbe14[_0x5adb('0x1d')],'sectionId':_0x2fbe14['id']},{})[_0x5adb('0x17')](function(){return _0x5a6a79;});}else{return _0x5a6a79;}})['catch'](function(_0x53f2c6){logger[_0x5adb('0x1b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x53f2c6);throw _0x53f2c6;});}return _0x5a6a79;})[_0x5adb('0x17')](respondWithResult(_0x4d052f,0xc9))[_0x5adb('0x2a')](handleError(_0x4d052f,null));};exports[_0x5adb('0x16')]=function(_0x121714,_0xdfecfd){if(_0x121714['body']['id']){delete _0x121714[_0x5adb('0x39')]['id'];}return db[_0x5adb('0x20')]['find']({'where':{'id':_0x121714[_0x5adb('0x3a')]['id']}})[_0x5adb('0x17')](handleEntityNotFound(_0xdfecfd,null))['then'](saveUpdates(_0x121714[_0x5adb('0x39')],null))[_0x5adb('0x17')](respondWithResult(_0xdfecfd,null))[_0x5adb('0x2a')](handleError(_0xdfecfd,null));};exports[_0x5adb('0x18')]=function(_0xea3307,_0x4362ec){return db[_0x5adb('0x20')]['find']({'where':{'id':_0xea3307['params']['id']}})[_0x5adb('0x17')](handleEntityNotFound(_0x4362ec,null))[_0x5adb('0x17')](removeEntity(_0x4362ec,null))[_0x5adb('0x2a')](handleError(_0x4362ec,null));};exports[_0x5adb('0x3b')]=function(_0x57b8af,_0x507e48){return db[_0x5adb('0x20')][_0x5adb('0x3b')]()[_0x5adb('0x17')](respondWithResult(_0x507e48,null))[_0x5adb('0x2a')](handleError(_0x507e48,null));};exports[_0x5adb('0x3c')]=function(_0x5358c0,_0x182cbc){var _0x437f52={'raw':!![],'where':{}},_0x5b574c={},_0x7786c4;return db[_0x5adb('0x20')][_0x5adb('0x3d')]({'where':{'id':_0x5358c0[_0x5adb('0x3a')]['id']}})[_0x5adb('0x17')](handleEntityNotFound(_0x182cbc,null))[_0x5adb('0x17')](function(_0x39840e){if(_0x39840e){_0x7786c4=_0x39840e[_0x5adb('0x36')]({'plain':!![]});_0x5b574c['model']=_[_0x5adb('0x2d')](db['UserSmsQueue']['rawAttributes']);_0x5b574c['query']=_[_0x5adb('0x2d')](_0x5358c0[_0x5adb('0x28')]);_0x5b574c[_0x5adb('0x2e')]=_['intersection'](_0x5b574c[_0x5adb('0x2c')],_0x5b574c['query']);_0x437f52[_0x5adb('0x30')]=_[_0x5adb('0x3e')](_0x5b574c[_0x5adb('0x2c')],qs['fields'](_0x5358c0[_0x5adb('0x28')]['fields']));_0x437f52[_0x5adb('0x30')]=_0x437f52[_0x5adb('0x30')]['length']?_0x437f52[_0x5adb('0x30')]:_0x5b574c[_0x5adb('0x2c')];if(!_0x5358c0[_0x5adb('0x28')][_0x5adb('0x3f')](_0x5adb('0x40'))){_0x437f52['limit']=qs[_0x5adb('0x12')](_0x5358c0[_0x5adb('0x28')][_0x5adb('0x12')]);_0x437f52[_0x5adb('0x11')]=qs['offset'](_0x5358c0[_0x5adb('0x28')][_0x5adb('0x11')]);}_0x437f52[_0x5adb('0x41')]=qs['sort'](_0x5358c0[_0x5adb('0x28')][_0x5adb('0x42')]);_0x437f52[_0x5adb('0x25')]=qs[_0x5adb('0x2e')](_['pick'](_0x5358c0[_0x5adb('0x28')],_0x5b574c[_0x5adb('0x2e')]));_0x437f52[_0x5adb('0x25')][_0x5adb('0x43')]=_0x39840e['id'];if(_0x5358c0[_0x5adb('0x28')]['filter']){_0x437f52[_0x5adb('0x25')]=_['merge'](_0x437f52[_0x5adb('0x25')],{'$or':_['map'](_0x437f52[_0x5adb('0x30')],function(_0x35df22){var _0x1a9358={};_0x1a9358[_0x35df22]={'$like':'%'+_0x5358c0[_0x5adb('0x28')]['filter']+'%'};return _0x1a9358;})});}_0x437f52=_[_0x5adb('0x44')]({},_0x437f52,_0x5358c0[_0x5adb('0x33')]);return db[_0x5adb('0x45')]['findAll'](_0x437f52);}})['then'](function(_0x4ddfdf){if(_0x4ddfdf){return db[_0x5adb('0x46')][_0x5adb('0x47')]({'where':{'id':_[_0x5adb('0x48')](_0x4ddfdf,_0x5adb('0x49')),'role':_0x5adb('0x4a')},'attributes':['id',_0x5adb('0x1d'),_0x5adb('0x4b'),_0x5adb('0x4c'),_0x5adb('0x4d')]});}})[_0x5adb('0x17')](function(_0x452767){if(_0x452767){return{'count':_0x452767[_0x5adb('0x26')],'rows':_[_0x5adb('0x48')](_0x452767['rows'],function(_0x49f4c8){return{'membername':_0x49f4c8[_0x5adb('0x1d')],'UserId':_0x49f4c8['id'],'queue_name':_0x7786c4[_0x5adb('0x1d')],'SmsQueueId':_0x7786c4['id'],'interface':util[_0x5adb('0x4e')](_0x5adb('0x4f'),'SIP',_0x49f4c8[_0x5adb('0x1d')]),'penalty':0x0,'paused':_0x49f4c8[_0x5adb('0x4b')],'createdAt':_0x49f4c8['createdAt'],'updatedAt':_0x49f4c8[_0x5adb('0x4c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x5adb('0x17')](respondWithFilteredResult(_0x182cbc,_0x437f52))[_0x5adb('0x2a')](handleError(_0x182cbc,null));};exports['getTeams']=function(_0x30d185,_0x409357){var _0x19df2f={};var _0x30c92c={};var _0x330290;var _0x428019;return db['SmsQueue'][_0x5adb('0x3d')]({'where':{'id':_0x30d185[_0x5adb('0x3a')]['id']}})[_0x5adb('0x17')](handleEntityNotFound(_0x409357,null))['then'](function(_0xcd71d2){if(_0xcd71d2){_0x330290=_0xcd71d2;_0x30c92c[_0x5adb('0x2c')]=_[_0x5adb('0x2d')](db['Team'][_0x5adb('0x21')]);_0x30c92c['query']=_[_0x5adb('0x2d')](_0x30d185[_0x5adb('0x28')]);_0x30c92c[_0x5adb('0x2e')]=_['intersection'](_0x30c92c[_0x5adb('0x2c')],_0x30c92c[_0x5adb('0x28')]);_0x19df2f['attributes']=_[_0x5adb('0x3e')](_0x30c92c[_0x5adb('0x2c')],qs[_0x5adb('0x2f')](_0x30d185[_0x5adb('0x28')]['fields']));_0x19df2f[_0x5adb('0x30')]=_0x19df2f[_0x5adb('0x30')][_0x5adb('0x31')]?_0x19df2f[_0x5adb('0x30')]:_0x30c92c['model'];_0x19df2f['order']=qs[_0x5adb('0x42')](_0x30d185['query']['sort']);_0x19df2f['where']=qs[_0x5adb('0x2e')](_[_0x5adb('0x50')](_0x30d185['query'],_0x30c92c[_0x5adb('0x2e')]));if(_0x30d185[_0x5adb('0x28')][_0x5adb('0x51')]){_0x19df2f[_0x5adb('0x25')]=_[_0x5adb('0x44')](_0x19df2f[_0x5adb('0x25')],{'$or':_[_0x5adb('0x48')](_0x19df2f[_0x5adb('0x30')],function(_0x5240c1){var _0x4b9e80={};_0x4b9e80[_0x5240c1]={'$like':'%'+_0x30d185['query'][_0x5adb('0x51')]+'%'};return _0x4b9e80;})});}_0x19df2f=_[_0x5adb('0x44')]({},_0x19df2f,_0x30d185[_0x5adb('0x33')]);return _0x330290[_0x5adb('0x52')](_0x19df2f);}})[_0x5adb('0x17')](function(_0x2f6ef7){if(_0x2f6ef7){_0x428019=_0x2f6ef7[_0x5adb('0x31')];if(!_0x30d185[_0x5adb('0x28')]['hasOwnProperty']('nolimit')){_0x19df2f[_0x5adb('0x12')]=qs[_0x5adb('0x12')](_0x30d185[_0x5adb('0x28')][_0x5adb('0x12')]);_0x19df2f[_0x5adb('0x11')]=qs[_0x5adb('0x11')](_0x30d185[_0x5adb('0x28')][_0x5adb('0x11')]);}return _0x330290[_0x5adb('0x52')](_0x19df2f);}})[_0x5adb('0x17')](function(_0x484f3d){if(_0x484f3d){return _0x484f3d?{'count':_0x428019,'rows':_0x484f3d}:null;}})[_0x5adb('0x17')](respondWithResult(_0x409357,null))[_0x5adb('0x2a')](handleError(_0x409357,null));};exports[_0x5adb('0x53')]=function(_0x5d3aa4,_0x31f041){var _0xa1bd33=_0x5d3aa4['body'][_0x5adb('0x54')];return db['Team'][_0x5adb('0x55')]({'where':{'id':_0xa1bd33},'attributes':['id'],'include':[{'model':db[_0x5adb('0x46')],'as':'Agents','attributes':['id',_0x5adb('0x1d'),_0x5adb('0x56'),_0x5adb('0x57'),_0x5adb('0x58')],'raw':!![]}]})[_0x5adb('0x17')](function(_0x10f54a){if(_0x10f54a){var _0x3cee6c=_[_0x5adb('0x59')](_0x10f54a,function(_0x49a8a6){var _0x3786b4=_0x49a8a6[_0x5adb('0x36')]({'plain':!![]});return _0x3786b4[_0x5adb('0x5a')];});return db['SmsQueue']['find']({'where':{'id':_0x5d3aa4[_0x5adb('0x3a')]['id']}})['then'](function(_0x27d3d8){return db[_0x5adb('0x5b')][_0x5adb('0x5c')](function(_0x50600f){return _0x27d3d8[_0x5adb('0x53')](_0xa1bd33,{'transaction':_0x50600f})[_0x5adb('0x17')](function(){return BPromise[_0x5adb('0x5d')](_0x3cee6c,function(_0x3ecc56){return db[_0x5adb('0x45')]['findOrCreate']({'where':{'UserId':_0x3ecc56['id'],'SmsQueueId':_0x5d3aa4[_0x5adb('0x3a')]['id']},'transaction':_0x50600f});});})[_0x5adb('0x17')](function(){_0x3cee6c[_0x5adb('0x5e')](function(_0xe3d12d){socket['emit'](_0x5adb('0x5f'),{'UserId':_0xe3d12d['id'],'SmsQueueId':_0x27d3d8['id']});});});});});}})[_0x5adb('0x17')](respondWithStatusCode(_0x31f041,null))[_0x5adb('0x2a')](handleError(_0x31f041,null));};exports[_0x5adb('0x60')]=function(_0x15d4f1,_0x20faf6){return db[_0x5adb('0x61')]['findAll']({'where':{'id':_0x15d4f1[_0x5adb('0x28')][_0x5adb('0x54')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x5adb('0x5a'),'attributes':['id'],'raw':!![]}]})[_0x5adb('0x17')](handleEntityNotFound(_0x20faf6,null))['then'](function(_0x462fa0){var _0x50f8ed=_[_0x5adb('0x48')](_0x462fa0,'id');var _0x268df2=[];var _0x4a2ebc=[];var _0x167432=squel['select']();_0x167432[_0x5adb('0x62')](_0x5adb('0x63'))[_0x5adb('0x64')](_0x5adb('0x65'),'tq')[_0x5adb('0x66')]('user_has_teams','ut',_0x5adb('0x67'))[_0x5adb('0x25')](_0x5adb('0x68'),_0x15d4f1[_0x5adb('0x3a')]['id']);for(var _0x47c631=0x0;_0x47c631<_0x462fa0['length'];_0x47c631+=0x1){let _0x3f3db9=_0x462fa0[_0x47c631];for(var _0x461a07=0x0;_0x461a07<_0x3f3db9[_0x5adb('0x5a')][_0x5adb('0x31')];_0x461a07+=0x1){let _0x277668=_0x3f3db9[_0x5adb('0x5a')][_0x461a07];var _0x31f5b2=_0x167432['clone']();_0x31f5b2[_0x5adb('0x25')](_0x5adb('0x69'),_0x277668['id']);_0x4a2ebc[_0x5adb('0x6a')](db[_0x5adb('0x5b')]['query'](_0x31f5b2[_0x5adb('0x6b')](),{'type':db[_0x5adb('0x5b')][_0x5adb('0x6c')][_0x5adb('0x6d')]})[_0x5adb('0x17')](function(_0x188cbd){if(_0x188cbd[_0x5adb('0x31')]===0x1){return _0x277668['id'];}else{var _0x2d1b65=_[_0x5adb('0x6e')](_['map'](_0x188cbd,_0x5adb('0x6f')),function(_0x456799){return _['includes'](_0x50f8ed,_0x456799);});if(_0x2d1b65){return _0x277668['id'];}}}));}}return BPromise[_0x5adb('0x70')](_0x4a2ebc)[_0x5adb('0x17')](function(_0x2b8915){_0x268df2=_(_0x268df2)[_0x5adb('0x71')](_0x2b8915)[_0x5adb('0x72')]()[_0x5adb('0x73')]();return db[_0x5adb('0x20')][_0x5adb('0x74')]({'where':{'id':_0x15d4f1['params']['id']}})[_0x5adb('0x17')](function(_0x2386c0){return db['sequelize'][_0x5adb('0x5c')](function(_0x58a26f){return _0x2386c0[_0x5adb('0x60')](_0x15d4f1['query']['ids'],{'transaction':_0x58a26f})[_0x5adb('0x17')](function(){if(!_[_0x5adb('0x75')](_0x268df2)){return _0x2386c0[_0x5adb('0x76')](_0x268df2,{'transaction':_0x58a26f});}})['then'](function(){_0x268df2[_0x5adb('0x5e')](function(_0x321c3a){socket[_0x5adb('0x77')](_0x5adb('0x78'),{'UserId':_0x321c3a,'SmsQueueId':_0x2386c0['id']});});});});});});})[_0x5adb('0x17')](respondWithStatusCode(_0x20faf6,null))[_0x5adb('0x2a')](handleError(_0x20faf6,null));};exports[_0x5adb('0x79')]=function(_0x463e84,_0x28bd33){return db[_0x5adb('0x20')][_0x5adb('0x74')]({'where':{'id':_0x463e84[_0x5adb('0x3a')]['id']}})['then'](handleEntityNotFound(_0x28bd33,null))['then'](function(_0x312463){if(_0x312463){return _0x312463[_0x5adb('0x79')](_0x463e84['body'][_0x5adb('0x54')],_[_0x5adb('0x7a')](_0x463e84[_0x5adb('0x39')],[_0x5adb('0x54'),'id'])||{})[_0x5adb('0x7b')](function(_0x24cd3b){for(var _0x15626b=0x0;_0x15626b<_0x463e84[_0x5adb('0x39')][_0x5adb('0x54')]['length'];_0x15626b+=0x1){socket[_0x5adb('0x77')](_0x5adb('0x5f'),{'UserId':Number(_0x463e84[_0x5adb('0x39')]['ids'][_0x15626b]),'SmsQueueId':Number(_0x463e84[_0x5adb('0x3a')]['id'])});}return _0x24cd3b;});}})[_0x5adb('0x17')](respondWithResult(_0x28bd33,null))[_0x5adb('0x2a')](handleError(_0x28bd33,null));};exports[_0x5adb('0x76')]=function(_0x64475f,_0x2a78f9){return db['SmsQueue'][_0x5adb('0x74')]({'where':{'id':_0x64475f[_0x5adb('0x3a')]['id']}})[_0x5adb('0x17')](handleEntityNotFound(_0x2a78f9,null))[_0x5adb('0x17')](function(_0x2c3af8){if(_0x2c3af8){return _0x2c3af8[_0x5adb('0x76')](_0x64475f[_0x5adb('0x28')][_0x5adb('0x54')])[_0x5adb('0x17')](function(){if(_[_0x5adb('0x7c')](_0x64475f['query'][_0x5adb('0x54')])){for(var _0x5b9565=0x0;_0x5b9565<_0x64475f[_0x5adb('0x28')][_0x5adb('0x54')][_0x5adb('0x31')];_0x5b9565+=0x1){socket[_0x5adb('0x77')](_0x5adb('0x78'),{'UserId':Number(_0x64475f['query']['ids'][_0x5b9565]),'SmsQueueId':Number(_0x64475f[_0x5adb('0x3a')]['id'])});}}else{socket[_0x5adb('0x77')](_0x5adb('0x78'),{'UserId':Number(_0x64475f[_0x5adb('0x28')][_0x5adb('0x54')]),'SmsQueueId':Number(_0x64475f[_0x5adb('0x3a')]['id'])});}});}})['then'](respondWithStatusCode(_0x2a78f9,null))['catch'](handleError(_0x2a78f9,null));};exports[_0x5adb('0x7d')]=function(_0xd5b95d,_0x9d80fd){var _0x4f5721={};var _0x542626={};var _0x227c17;var _0x5982a5;return db[_0x5adb('0x20')][_0x5adb('0x3d')]({'where':{'id':_0xd5b95d['params']['id']}})['then'](handleEntityNotFound(_0x9d80fd,null))[_0x5adb('0x17')](function(_0x4bb198){if(_0x4bb198){_0x227c17=_0x4bb198;_0x542626['model']=_[_0x5adb('0x2d')](db[_0x5adb('0x46')][_0x5adb('0x21')]);_0x542626[_0x5adb('0x28')]=_[_0x5adb('0x2d')](_0xd5b95d[_0x5adb('0x28')]);_0x542626[_0x5adb('0x2e')]=_[_0x5adb('0x3e')](_0x542626[_0x5adb('0x2c')],_0x542626[_0x5adb('0x28')]);_0x4f5721[_0x5adb('0x30')]=_[_0x5adb('0x3e')](_0x542626[_0x5adb('0x2c')],qs['fields'](_0xd5b95d[_0x5adb('0x28')]['fields']));_0x4f5721[_0x5adb('0x30')]=_0x4f5721[_0x5adb('0x30')][_0x5adb('0x31')]?_0x4f5721[_0x5adb('0x30')]:_0x542626[_0x5adb('0x2c')];_0x4f5721[_0x5adb('0x41')]=qs[_0x5adb('0x42')](_0xd5b95d[_0x5adb('0x28')][_0x5adb('0x42')]);_0x4f5721[_0x5adb('0x25')]=qs[_0x5adb('0x2e')](_[_0x5adb('0x50')](_0xd5b95d['query'],_0x542626[_0x5adb('0x2e')]));if(_0xd5b95d[_0x5adb('0x28')][_0x5adb('0x51')]){_0x4f5721[_0x5adb('0x25')]=_[_0x5adb('0x44')](_0x4f5721[_0x5adb('0x25')],{'$or':_[_0x5adb('0x48')](_0x4f5721[_0x5adb('0x30')],function(_0x57c160){var _0xe7ddc4={};_0xe7ddc4[_0x57c160]={'$like':'%'+_0xd5b95d[_0x5adb('0x28')][_0x5adb('0x51')]+'%'};return _0xe7ddc4;})});}_0x4f5721=_['merge']({},_0x4f5721,_0xd5b95d[_0x5adb('0x33')]);return _0x227c17['getAgents'](_0x4f5721);}})[_0x5adb('0x17')](function(_0x50c3a3){if(_0x50c3a3){_0x5982a5=_0x50c3a3['length'];if(!_0xd5b95d[_0x5adb('0x28')][_0x5adb('0x3f')](_0x5adb('0x40'))){_0x4f5721[_0x5adb('0x12')]=qs[_0x5adb('0x12')](_0xd5b95d[_0x5adb('0x28')][_0x5adb('0x12')]);_0x4f5721[_0x5adb('0x11')]=qs[_0x5adb('0x11')](_0xd5b95d[_0x5adb('0x28')][_0x5adb('0x11')]);}return _0x227c17[_0x5adb('0x7d')](_0x4f5721);}})['then'](function(_0x364da7){if(_0x364da7){return _0x364da7?{'count':_0x5982a5,'rows':_0x364da7}:null;}})['then'](respondWithResult(_0x9d80fd,null))[_0x5adb('0x2a')](handleError(_0x9d80fd,null));};
\ No newline at end of file
+var _0xadb5=['%s/%s','pick','filter','getTeams','addTeams','ids','findAll','online','voicePause','interface','flatMap','Agents','sequelize','transaction','each','forEach','userSmsQueue:save','removeTeams','Team','field','tq.TeamId','from','team_has_sms_queues','join','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','all','union','compact','value','find','isEmpty','removeAgents','emit','userSmsQueue:remove','addAgents','omit','spread','isArray','getAgents','util','squel','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./smsQueue.socket','register','sendStatus','status','end','json','offset','limit','undefined','set','Content-Range','update','then','destroy','SmsQueues','UserProfileResource','error','stack','name','send','index','SmsQueue','rawAttributes','type','key','getOptions','where','count','include','query','rows','catch','show','model','keys','filters','fields','attributes','length','includeAll','options','create','user','get','role','autoAssociation','body','params','describe','getMembers','findOne','intersection','hasOwnProperty','nolimit','order','sort','SmsQueueId','merge','UserSmsQueue','User','findAndCountAll','map','UserId','agent','smsPause','updatedAt','createdAt','format'];(function(_0x539fb2,_0x5b6718){var _0x4d583d=function(_0x55fa69){while(--_0x55fa69){_0x539fb2['push'](_0x539fb2['shift']());}};_0x4d583d(++_0x5b6718);}(_0xadb5,0xad));var _0x5adb=function(_0x3b2aba,_0x43ed9b){_0x3b2aba=_0x3b2aba-0x0;var _0x29d703=_0xadb5[_0x3b2aba];return _0x29d703;};'use strict';var BPromise=require('bluebird');var util=require(_0x5adb('0x0'));var _=require('lodash');var squel=require(_0x5adb('0x1'));var Redis=require(_0x5adb('0x2'));var qs=require(_0x5adb('0x3'));var logger=require('../../config/logger')(_0x5adb('0x4'));var config=require(_0x5adb('0x5'));var db=require(_0x5adb('0x6'))['db'];config['redis']=_[_0x5adb('0x7')](config[_0x5adb('0x8')],{'host':_0x5adb('0x9'),'port':0x18eb});var socket=require(_0x5adb('0xa'))(new Redis(config[_0x5adb('0x8')]));require(_0x5adb('0xb'))[_0x5adb('0xc')](socket);function respondWithStatusCode(_0x6d1b45,_0x41261c){_0x41261c=_0x41261c||0xcc;return function(_0x7293ab){if(_0x7293ab){return _0x6d1b45[_0x5adb('0xd')](_0x41261c);}return _0x6d1b45[_0x5adb('0xe')](_0x41261c)[_0x5adb('0xf')]();};}function respondWithResult(_0x275428,_0x563d86){_0x563d86=_0x563d86||0xc8;return function(_0x4c268d){if(_0x4c268d){return _0x275428[_0x5adb('0xe')](_0x563d86)[_0x5adb('0x10')](_0x4c268d);}};}function respondWithFilteredResult(_0x82e67e,_0x53b772){return function(_0x29f0d5){if(_0x29f0d5){var _0x56012f=typeof _0x53b772[_0x5adb('0x11')]==='undefined'&&typeof _0x53b772[_0x5adb('0x12')]===_0x5adb('0x13');var _0x44abe3=_0x29f0d5['count'];var _0x2a545b=_0x56012f?0x0:_0x53b772[_0x5adb('0x11')];var _0xf82f72=_0x56012f?_0x29f0d5['count']:_0x53b772[_0x5adb('0x11')]+_0x53b772['limit'];var _0x367d82;if(_0xf82f72>=_0x44abe3){_0xf82f72=_0x44abe3;_0x367d82=0xc8;}else{_0x367d82=0xce;}_0x82e67e[_0x5adb('0xe')](_0x367d82);return _0x82e67e[_0x5adb('0x14')](_0x5adb('0x15'),_0x2a545b+'-'+_0xf82f72+'/'+_0x44abe3)[_0x5adb('0x10')](_0x29f0d5);}return null;};}function saveUpdates(_0x39d24d){return function(_0xa29dc){if(_0xa29dc){return _0xa29dc[_0x5adb('0x16')](_0x39d24d)[_0x5adb('0x17')](function(_0x529b65){return _0x529b65;});}return null;};}function removeEntity(_0x3fff62){return function(_0x5de028){if(_0x5de028){return _0x5de028[_0x5adb('0x18')]()['then'](function(){var _0x3ef465=_0x5de028['get']({'plain':!![]});var _0x5e218c=_0x5adb('0x19');return db[_0x5adb('0x1a')][_0x5adb('0x18')]({'where':{'type':_0x5e218c,'resourceId':_0x3ef465['id']}})[_0x5adb('0x17')](function(){return _0x5de028;});})[_0x5adb('0x17')](function(){_0x3fff62['status'](0xcc)[_0x5adb('0xf')]();});}};}function handleEntityNotFound(_0x5c296e){return function(_0x4e9f16){if(!_0x4e9f16){_0x5c296e[_0x5adb('0xd')](0x194);}return _0x4e9f16;};}function handleError(_0x379b33,_0x1a38d3){_0x1a38d3=_0x1a38d3||0x1f4;return function(_0x1a8014){logger[_0x5adb('0x1b')](_0x1a8014[_0x5adb('0x1c')]);if(_0x1a8014[_0x5adb('0x1d')]){delete _0x1a8014['name'];}_0x379b33[_0x5adb('0xe')](_0x1a38d3)[_0x5adb('0x1e')](_0x1a8014);};}exports[_0x5adb('0x1f')]=function(_0x3839fb,_0xeb556c){var _0x49f203={};var _0x2fee18={'count':0x0,'rows':[]};var _0x2e1e63=_['map'](db[_0x5adb('0x20')][_0x5adb('0x21')],function(_0x1a0acd){return{'name':_0x1a0acd['fieldName'],'type':_0x1a0acd[_0x5adb('0x22')][_0x5adb('0x23')]};});_0x49f203=qs[_0x5adb('0x24')](_0x2e1e63,_0x3839fb);var _0x2c64a3={'where':_0x49f203[_0x5adb('0x25')]};return db[_0x5adb('0x20')]['count'](_0x2c64a3)['then'](function(_0x5d457e){_0x2fee18[_0x5adb('0x26')]=_0x5d457e;_0x49f203[_0x5adb('0x27')]=qs[_0x5adb('0x27')](_0x3839fb[_0x5adb('0x28')]);return db[_0x5adb('0x20')]['findAll'](_0x49f203);})[_0x5adb('0x17')](function(_0x34b793){_0x2fee18[_0x5adb('0x29')]=_0x34b793;return _0x2fee18;})[_0x5adb('0x17')](respondWithFilteredResult(_0xeb556c,_0x49f203))[_0x5adb('0x2a')](handleError(_0xeb556c,null));};exports[_0x5adb('0x2b')]=function(_0x28190d,_0x28bf1f){var _0x138bf6={'raw':!![],'where':{'id':_0x28190d['params']['id']}},_0x260295={};_0x260295[_0x5adb('0x2c')]=_['keys'](db[_0x5adb('0x20')][_0x5adb('0x21')]);_0x260295['query']=_[_0x5adb('0x2d')](_0x28190d[_0x5adb('0x28')]);_0x260295[_0x5adb('0x2e')]=_['intersection'](_0x260295[_0x5adb('0x2c')],_0x260295[_0x5adb('0x28')]);_0x138bf6['attributes']=_['intersection'](_0x260295[_0x5adb('0x2c')],qs['fields'](_0x28190d[_0x5adb('0x28')][_0x5adb('0x2f')]));_0x138bf6[_0x5adb('0x30')]=_0x138bf6[_0x5adb('0x30')][_0x5adb('0x31')]?_0x138bf6['attributes']:_0x260295[_0x5adb('0x2c')];if(_0x28190d[_0x5adb('0x28')][_0x5adb('0x32')]){_0x138bf6['include']=[{'all':!![]}];}_0x138bf6=_['merge']({},_0x138bf6,_0x28190d[_0x5adb('0x33')]);return db[_0x5adb('0x20')]['find'](_0x138bf6)[_0x5adb('0x17')](handleEntityNotFound(_0x28bf1f,null))['then'](respondWithResult(_0x28bf1f,null))[_0x5adb('0x2a')](handleError(_0x28bf1f,null));};exports['create']=function(_0x11cb37,_0x4d052f){return db[_0x5adb('0x20')][_0x5adb('0x34')](_0x11cb37['body'],{})[_0x5adb('0x17')](function(_0x5a6a79){var _0xadbe37=_0x11cb37[_0x5adb('0x35')][_0x5adb('0x36')]({'plain':!![]});if(!_0xadbe37)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xadbe37[_0x5adb('0x37')]===_0x5adb('0x35')){var _0xcdaf8e=_0x5a6a79[_0x5adb('0x36')]({'plain':!![]});var _0x22aa95='SmsQueues';return db['UserProfileSection']['find']({'where':{'name':_0x22aa95,'userProfileId':_0xadbe37['userProfileId']},'raw':!![]})[_0x5adb('0x17')](function(_0x2fbe14){if(_0x2fbe14&&_0x2fbe14[_0x5adb('0x38')]===0x0){return db[_0x5adb('0x1a')][_0x5adb('0x34')]({'name':_0xcdaf8e[_0x5adb('0x1d')],'resourceId':_0xcdaf8e['id'],'type':_0x2fbe14[_0x5adb('0x1d')],'sectionId':_0x2fbe14['id']},{})[_0x5adb('0x17')](function(){return _0x5a6a79;});}else{return _0x5a6a79;}})['catch'](function(_0x53f2c6){logger[_0x5adb('0x1b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x53f2c6);throw _0x53f2c6;});}return _0x5a6a79;})[_0x5adb('0x17')](respondWithResult(_0x4d052f,0xc9))[_0x5adb('0x2a')](handleError(_0x4d052f,null));};exports[_0x5adb('0x16')]=function(_0x121714,_0xdfecfd){if(_0x121714['body']['id']){delete _0x121714[_0x5adb('0x39')]['id'];}return db[_0x5adb('0x20')]['find']({'where':{'id':_0x121714[_0x5adb('0x3a')]['id']}})[_0x5adb('0x17')](handleEntityNotFound(_0xdfecfd,null))['then'](saveUpdates(_0x121714[_0x5adb('0x39')],null))[_0x5adb('0x17')](respondWithResult(_0xdfecfd,null))[_0x5adb('0x2a')](handleError(_0xdfecfd,null));};exports[_0x5adb('0x18')]=function(_0xea3307,_0x4362ec){return db[_0x5adb('0x20')]['find']({'where':{'id':_0xea3307['params']['id']}})[_0x5adb('0x17')](handleEntityNotFound(_0x4362ec,null))[_0x5adb('0x17')](removeEntity(_0x4362ec,null))[_0x5adb('0x2a')](handleError(_0x4362ec,null));};exports[_0x5adb('0x3b')]=function(_0x57b8af,_0x507e48){return db[_0x5adb('0x20')][_0x5adb('0x3b')]()[_0x5adb('0x17')](respondWithResult(_0x507e48,null))[_0x5adb('0x2a')](handleError(_0x507e48,null));};exports[_0x5adb('0x3c')]=function(_0x5358c0,_0x182cbc){var _0x437f52={'raw':!![],'where':{}},_0x5b574c={},_0x7786c4;return db[_0x5adb('0x20')][_0x5adb('0x3d')]({'where':{'id':_0x5358c0[_0x5adb('0x3a')]['id']}})[_0x5adb('0x17')](handleEntityNotFound(_0x182cbc,null))[_0x5adb('0x17')](function(_0x39840e){if(_0x39840e){_0x7786c4=_0x39840e[_0x5adb('0x36')]({'plain':!![]});_0x5b574c['model']=_[_0x5adb('0x2d')](db['UserSmsQueue']['rawAttributes']);_0x5b574c['query']=_[_0x5adb('0x2d')](_0x5358c0[_0x5adb('0x28')]);_0x5b574c[_0x5adb('0x2e')]=_['intersection'](_0x5b574c[_0x5adb('0x2c')],_0x5b574c['query']);_0x437f52[_0x5adb('0x30')]=_[_0x5adb('0x3e')](_0x5b574c[_0x5adb('0x2c')],qs['fields'](_0x5358c0[_0x5adb('0x28')]['fields']));_0x437f52[_0x5adb('0x30')]=_0x437f52[_0x5adb('0x30')]['length']?_0x437f52[_0x5adb('0x30')]:_0x5b574c[_0x5adb('0x2c')];if(!_0x5358c0[_0x5adb('0x28')][_0x5adb('0x3f')](_0x5adb('0x40'))){_0x437f52['limit']=qs[_0x5adb('0x12')](_0x5358c0[_0x5adb('0x28')][_0x5adb('0x12')]);_0x437f52[_0x5adb('0x11')]=qs['offset'](_0x5358c0[_0x5adb('0x28')][_0x5adb('0x11')]);}_0x437f52[_0x5adb('0x41')]=qs['sort'](_0x5358c0[_0x5adb('0x28')][_0x5adb('0x42')]);_0x437f52[_0x5adb('0x25')]=qs[_0x5adb('0x2e')](_['pick'](_0x5358c0[_0x5adb('0x28')],_0x5b574c[_0x5adb('0x2e')]));_0x437f52[_0x5adb('0x25')][_0x5adb('0x43')]=_0x39840e['id'];if(_0x5358c0[_0x5adb('0x28')]['filter']){_0x437f52[_0x5adb('0x25')]=_['merge'](_0x437f52[_0x5adb('0x25')],{'$or':_['map'](_0x437f52[_0x5adb('0x30')],function(_0x35df22){var _0x1a9358={};_0x1a9358[_0x35df22]={'$like':'%'+_0x5358c0[_0x5adb('0x28')]['filter']+'%'};return _0x1a9358;})});}_0x437f52=_[_0x5adb('0x44')]({},_0x437f52,_0x5358c0[_0x5adb('0x33')]);return db[_0x5adb('0x45')]['findAll'](_0x437f52);}})['then'](function(_0x4ddfdf){if(_0x4ddfdf){return db[_0x5adb('0x46')][_0x5adb('0x47')]({'where':{'id':_[_0x5adb('0x48')](_0x4ddfdf,_0x5adb('0x49')),'role':_0x5adb('0x4a')},'attributes':['id',_0x5adb('0x1d'),_0x5adb('0x4b'),_0x5adb('0x4c'),_0x5adb('0x4d')]});}})[_0x5adb('0x17')](function(_0x452767){if(_0x452767){return{'count':_0x452767[_0x5adb('0x26')],'rows':_[_0x5adb('0x48')](_0x452767['rows'],function(_0x49f4c8){return{'membername':_0x49f4c8[_0x5adb('0x1d')],'UserId':_0x49f4c8['id'],'queue_name':_0x7786c4[_0x5adb('0x1d')],'SmsQueueId':_0x7786c4['id'],'interface':util[_0x5adb('0x4e')](_0x5adb('0x4f'),'SIP',_0x49f4c8[_0x5adb('0x1d')]),'penalty':0x0,'paused':_0x49f4c8[_0x5adb('0x4b')],'createdAt':_0x49f4c8['createdAt'],'updatedAt':_0x49f4c8[_0x5adb('0x4c')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x5adb('0x17')](respondWithFilteredResult(_0x182cbc,_0x437f52))[_0x5adb('0x2a')](handleError(_0x182cbc,null));};exports['getTeams']=function(_0x30d185,_0x409357){var _0x19df2f={};var _0x30c92c={};var _0x330290;var _0x428019;return db['SmsQueue'][_0x5adb('0x3d')]({'where':{'id':_0x30d185[_0x5adb('0x3a')]['id']}})[_0x5adb('0x17')](handleEntityNotFound(_0x409357,null))['then'](function(_0xcd71d2){if(_0xcd71d2){_0x330290=_0xcd71d2;_0x30c92c[_0x5adb('0x2c')]=_[_0x5adb('0x2d')](db['Team'][_0x5adb('0x21')]);_0x30c92c['query']=_[_0x5adb('0x2d')](_0x30d185[_0x5adb('0x28')]);_0x30c92c[_0x5adb('0x2e')]=_['intersection'](_0x30c92c[_0x5adb('0x2c')],_0x30c92c[_0x5adb('0x28')]);_0x19df2f['attributes']=_[_0x5adb('0x3e')](_0x30c92c[_0x5adb('0x2c')],qs[_0x5adb('0x2f')](_0x30d185[_0x5adb('0x28')]['fields']));_0x19df2f[_0x5adb('0x30')]=_0x19df2f[_0x5adb('0x30')][_0x5adb('0x31')]?_0x19df2f[_0x5adb('0x30')]:_0x30c92c['model'];_0x19df2f['order']=qs[_0x5adb('0x42')](_0x30d185['query']['sort']);_0x19df2f['where']=qs[_0x5adb('0x2e')](_[_0x5adb('0x50')](_0x30d185['query'],_0x30c92c[_0x5adb('0x2e')]));if(_0x30d185[_0x5adb('0x28')][_0x5adb('0x51')]){_0x19df2f[_0x5adb('0x25')]=_[_0x5adb('0x44')](_0x19df2f[_0x5adb('0x25')],{'$or':_[_0x5adb('0x48')](_0x19df2f[_0x5adb('0x30')],function(_0x5240c1){var _0x4b9e80={};_0x4b9e80[_0x5240c1]={'$like':'%'+_0x30d185['query'][_0x5adb('0x51')]+'%'};return _0x4b9e80;})});}_0x19df2f=_[_0x5adb('0x44')]({},_0x19df2f,_0x30d185[_0x5adb('0x33')]);return _0x330290[_0x5adb('0x52')](_0x19df2f);}})[_0x5adb('0x17')](function(_0x2f6ef7){if(_0x2f6ef7){_0x428019=_0x2f6ef7[_0x5adb('0x31')];if(!_0x30d185[_0x5adb('0x28')]['hasOwnProperty']('nolimit')){_0x19df2f[_0x5adb('0x12')]=qs[_0x5adb('0x12')](_0x30d185[_0x5adb('0x28')][_0x5adb('0x12')]);_0x19df2f[_0x5adb('0x11')]=qs[_0x5adb('0x11')](_0x30d185[_0x5adb('0x28')][_0x5adb('0x11')]);}return _0x330290[_0x5adb('0x52')](_0x19df2f);}})[_0x5adb('0x17')](function(_0x484f3d){if(_0x484f3d){return _0x484f3d?{'count':_0x428019,'rows':_0x484f3d}:null;}})[_0x5adb('0x17')](respondWithResult(_0x409357,null))[_0x5adb('0x2a')](handleError(_0x409357,null));};exports[_0x5adb('0x53')]=function(_0x5d3aa4,_0x31f041){var _0xa1bd33=_0x5d3aa4['body'][_0x5adb('0x54')];return db['Team'][_0x5adb('0x55')]({'where':{'id':_0xa1bd33},'attributes':['id'],'include':[{'model':db[_0x5adb('0x46')],'as':'Agents','attributes':['id',_0x5adb('0x1d'),_0x5adb('0x56'),_0x5adb('0x57'),_0x5adb('0x58')],'raw':!![]}]})[_0x5adb('0x17')](function(_0x10f54a){if(_0x10f54a){var _0x3cee6c=_[_0x5adb('0x59')](_0x10f54a,function(_0x49a8a6){var _0x3786b4=_0x49a8a6[_0x5adb('0x36')]({'plain':!![]});return _0x3786b4[_0x5adb('0x5a')];});return db['SmsQueue']['find']({'where':{'id':_0x5d3aa4[_0x5adb('0x3a')]['id']}})['then'](function(_0x27d3d8){return db[_0x5adb('0x5b')][_0x5adb('0x5c')](function(_0x50600f){return _0x27d3d8[_0x5adb('0x53')](_0xa1bd33,{'transaction':_0x50600f})[_0x5adb('0x17')](function(){return BPromise[_0x5adb('0x5d')](_0x3cee6c,function(_0x3ecc56){return db[_0x5adb('0x45')]['findOrCreate']({'where':{'UserId':_0x3ecc56['id'],'SmsQueueId':_0x5d3aa4[_0x5adb('0x3a')]['id']},'transaction':_0x50600f});});})[_0x5adb('0x17')](function(){_0x3cee6c[_0x5adb('0x5e')](function(_0xe3d12d){socket['emit'](_0x5adb('0x5f'),{'UserId':_0xe3d12d['id'],'SmsQueueId':_0x27d3d8['id']});});});});});}})[_0x5adb('0x17')](respondWithStatusCode(_0x31f041,null))[_0x5adb('0x2a')](handleError(_0x31f041,null));};exports[_0x5adb('0x60')]=function(_0x15d4f1,_0x20faf6){return db[_0x5adb('0x61')]['findAll']({'where':{'id':_0x15d4f1[_0x5adb('0x28')][_0x5adb('0x54')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x5adb('0x5a'),'attributes':['id'],'raw':!![]}]})[_0x5adb('0x17')](handleEntityNotFound(_0x20faf6,null))['then'](function(_0x462fa0){var _0x50f8ed=_[_0x5adb('0x48')](_0x462fa0,'id');var _0x268df2=[];var _0x4a2ebc=[];var _0x167432=squel['select']();_0x167432[_0x5adb('0x62')](_0x5adb('0x63'))[_0x5adb('0x64')](_0x5adb('0x65'),'tq')[_0x5adb('0x66')]('user_has_teams','ut',_0x5adb('0x67'))[_0x5adb('0x25')](_0x5adb('0x68'),_0x15d4f1[_0x5adb('0x3a')]['id']);for(var _0x47c631=0x0;_0x47c631<_0x462fa0['length'];_0x47c631+=0x1){let _0x3f3db9=_0x462fa0[_0x47c631];for(var _0x461a07=0x0;_0x461a07<_0x3f3db9[_0x5adb('0x5a')][_0x5adb('0x31')];_0x461a07+=0x1){let _0x277668=_0x3f3db9[_0x5adb('0x5a')][_0x461a07];var _0x31f5b2=_0x167432['clone']();_0x31f5b2[_0x5adb('0x25')](_0x5adb('0x69'),_0x277668['id']);_0x4a2ebc[_0x5adb('0x6a')](db[_0x5adb('0x5b')]['query'](_0x31f5b2[_0x5adb('0x6b')](),{'type':db[_0x5adb('0x5b')][_0x5adb('0x6c')][_0x5adb('0x6d')]})[_0x5adb('0x17')](function(_0x188cbd){if(_0x188cbd[_0x5adb('0x31')]===0x1){return _0x277668['id'];}else{var _0x2d1b65=_[_0x5adb('0x6e')](_['map'](_0x188cbd,_0x5adb('0x6f')),function(_0x456799){return _['includes'](_0x50f8ed,_0x456799);});if(_0x2d1b65){return _0x277668['id'];}}}));}}return BPromise[_0x5adb('0x70')](_0x4a2ebc)[_0x5adb('0x17')](function(_0x2b8915){_0x268df2=_(_0x268df2)[_0x5adb('0x71')](_0x2b8915)[_0x5adb('0x72')]()[_0x5adb('0x73')]();return db[_0x5adb('0x20')][_0x5adb('0x74')]({'where':{'id':_0x15d4f1['params']['id']}})[_0x5adb('0x17')](function(_0x2386c0){return db['sequelize'][_0x5adb('0x5c')](function(_0x58a26f){return _0x2386c0[_0x5adb('0x60')](_0x15d4f1['query']['ids'],{'transaction':_0x58a26f})[_0x5adb('0x17')](function(){if(!_[_0x5adb('0x75')](_0x268df2)){return _0x2386c0[_0x5adb('0x76')](_0x268df2,{'transaction':_0x58a26f});}})['then'](function(){_0x268df2[_0x5adb('0x5e')](function(_0x321c3a){socket[_0x5adb('0x77')](_0x5adb('0x78'),{'UserId':_0x321c3a,'SmsQueueId':_0x2386c0['id']});});});});});});})[_0x5adb('0x17')](respondWithStatusCode(_0x20faf6,null))[_0x5adb('0x2a')](handleError(_0x20faf6,null));};exports[_0x5adb('0x79')]=function(_0x463e84,_0x28bd33){return db[_0x5adb('0x20')][_0x5adb('0x74')]({'where':{'id':_0x463e84[_0x5adb('0x3a')]['id']}})['then'](handleEntityNotFound(_0x28bd33,null))['then'](function(_0x312463){if(_0x312463){return _0x312463[_0x5adb('0x79')](_0x463e84['body'][_0x5adb('0x54')],_[_0x5adb('0x7a')](_0x463e84[_0x5adb('0x39')],[_0x5adb('0x54'),'id'])||{})[_0x5adb('0x7b')](function(_0x24cd3b){for(var _0x15626b=0x0;_0x15626b<_0x463e84[_0x5adb('0x39')][_0x5adb('0x54')]['length'];_0x15626b+=0x1){socket[_0x5adb('0x77')](_0x5adb('0x5f'),{'UserId':Number(_0x463e84[_0x5adb('0x39')]['ids'][_0x15626b]),'SmsQueueId':Number(_0x463e84[_0x5adb('0x3a')]['id'])});}return _0x24cd3b;});}})[_0x5adb('0x17')](respondWithResult(_0x28bd33,null))[_0x5adb('0x2a')](handleError(_0x28bd33,null));};exports[_0x5adb('0x76')]=function(_0x64475f,_0x2a78f9){return db['SmsQueue'][_0x5adb('0x74')]({'where':{'id':_0x64475f[_0x5adb('0x3a')]['id']}})[_0x5adb('0x17')](handleEntityNotFound(_0x2a78f9,null))[_0x5adb('0x17')](function(_0x2c3af8){if(_0x2c3af8){return _0x2c3af8[_0x5adb('0x76')](_0x64475f[_0x5adb('0x28')][_0x5adb('0x54')])[_0x5adb('0x17')](function(){if(_[_0x5adb('0x7c')](_0x64475f['query'][_0x5adb('0x54')])){for(var _0x5b9565=0x0;_0x5b9565<_0x64475f[_0x5adb('0x28')][_0x5adb('0x54')][_0x5adb('0x31')];_0x5b9565+=0x1){socket[_0x5adb('0x77')](_0x5adb('0x78'),{'UserId':Number(_0x64475f['query']['ids'][_0x5b9565]),'SmsQueueId':Number(_0x64475f[_0x5adb('0x3a')]['id'])});}}else{socket[_0x5adb('0x77')](_0x5adb('0x78'),{'UserId':Number(_0x64475f[_0x5adb('0x28')][_0x5adb('0x54')]),'SmsQueueId':Number(_0x64475f[_0x5adb('0x3a')]['id'])});}});}})['then'](respondWithStatusCode(_0x2a78f9,null))['catch'](handleError(_0x2a78f9,null));};exports[_0x5adb('0x7d')]=function(_0xd5b95d,_0x9d80fd){var _0x4f5721={};var _0x542626={};var _0x227c17;var _0x5982a5;return db[_0x5adb('0x20')][_0x5adb('0x3d')]({'where':{'id':_0xd5b95d['params']['id']}})['then'](handleEntityNotFound(_0x9d80fd,null))[_0x5adb('0x17')](function(_0x4bb198){if(_0x4bb198){_0x227c17=_0x4bb198;_0x542626['model']=_[_0x5adb('0x2d')](db[_0x5adb('0x46')][_0x5adb('0x21')]);_0x542626[_0x5adb('0x28')]=_[_0x5adb('0x2d')](_0xd5b95d[_0x5adb('0x28')]);_0x542626[_0x5adb('0x2e')]=_[_0x5adb('0x3e')](_0x542626[_0x5adb('0x2c')],_0x542626[_0x5adb('0x28')]);_0x4f5721[_0x5adb('0x30')]=_[_0x5adb('0x3e')](_0x542626[_0x5adb('0x2c')],qs['fields'](_0xd5b95d[_0x5adb('0x28')]['fields']));_0x4f5721[_0x5adb('0x30')]=_0x4f5721[_0x5adb('0x30')][_0x5adb('0x31')]?_0x4f5721[_0x5adb('0x30')]:_0x542626[_0x5adb('0x2c')];_0x4f5721[_0x5adb('0x41')]=qs[_0x5adb('0x42')](_0xd5b95d[_0x5adb('0x28')][_0x5adb('0x42')]);_0x4f5721[_0x5adb('0x25')]=qs[_0x5adb('0x2e')](_[_0x5adb('0x50')](_0xd5b95d['query'],_0x542626[_0x5adb('0x2e')]));if(_0xd5b95d[_0x5adb('0x28')][_0x5adb('0x51')]){_0x4f5721[_0x5adb('0x25')]=_[_0x5adb('0x44')](_0x4f5721[_0x5adb('0x25')],{'$or':_[_0x5adb('0x48')](_0x4f5721[_0x5adb('0x30')],function(_0x57c160){var _0xe7ddc4={};_0xe7ddc4[_0x57c160]={'$like':'%'+_0xd5b95d[_0x5adb('0x28')][_0x5adb('0x51')]+'%'};return _0xe7ddc4;})});}_0x4f5721=_['merge']({},_0x4f5721,_0xd5b95d[_0x5adb('0x33')]);return _0x227c17['getAgents'](_0x4f5721);}})[_0x5adb('0x17')](function(_0x50c3a3){if(_0x50c3a3){_0x5982a5=_0x50c3a3['length'];if(!_0xd5b95d[_0x5adb('0x28')][_0x5adb('0x3f')](_0x5adb('0x40'))){_0x4f5721[_0x5adb('0x12')]=qs[_0x5adb('0x12')](_0xd5b95d[_0x5adb('0x28')][_0x5adb('0x12')]);_0x4f5721[_0x5adb('0x11')]=qs[_0x5adb('0x11')](_0xd5b95d[_0x5adb('0x28')][_0x5adb('0x11')]);}return _0x227c17[_0x5adb('0x7d')](_0x4f5721);}})['then'](function(_0x364da7){if(_0x364da7){return _0x364da7?{'count':_0x5982a5,'rows':_0x364da7}:null;}})['then'](respondWithResult(_0x9d80fd,null))[_0x5adb('0x2a')](handleError(_0x9d80fd,null));};
\ No newline at end of file
index a799e2b..a0fb576 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa075=['hasOwnProperty','exports','events','../../mysqldb','SmsQueue','save','remove','emit'];(function(_0x553ac2,_0x156cf0){var _0x2182d8=function(_0x594e0f){while(--_0x594e0f){_0x553ac2['push'](_0x553ac2['shift']());}};_0x2182d8(++_0x156cf0);}(_0xa075,0x102));var _0x5a07=function(_0x229d07,_0x484444){_0x229d07=_0x229d07-0x0;var _0x288dd3=_0xa075[_0x229d07];return _0x288dd3;};'use strict';var EventEmitter=require(_0x5a07('0x0'));var SmsQueue=require(_0x5a07('0x1'))['db'][_0x5a07('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5a07('0x3'),'afterUpdate':'update','afterDestroy':_0x5a07('0x4')};function emitEvent(_0x5447b9){return function(_0x301161,_0x1bd1d1,_0x22175c){SmsQueueEvents[_0x5a07('0x5')](_0x5447b9+':'+_0x301161['id'],_0x301161);SmsQueueEvents[_0x5a07('0x5')](_0x5447b9,_0x301161);_0x22175c(null);};}for(var e in events){if(events[_0x5a07('0x6')](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module[_0x5a07('0x7')]=SmsQueueEvents;
\ No newline at end of file
+var _0xed89=['hook','events','../../mysqldb','SmsQueue','setMaxListeners','save','update','remove','emit'];(function(_0x51a97d,_0x1760b9){var _0x398497=function(_0x5bd3ab){while(--_0x5bd3ab){_0x51a97d['push'](_0x51a97d['shift']());}};_0x398497(++_0x1760b9);}(_0xed89,0x17b));var _0x9ed8=function(_0x499565,_0x1c6d41){_0x499565=_0x499565-0x0;var _0x46bdc8=_0xed89[_0x499565];return _0x46bdc8;};'use strict';var EventEmitter=require(_0x9ed8('0x0'));var SmsQueue=require(_0x9ed8('0x1'))['db'][_0x9ed8('0x2')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0x9ed8('0x3')](0x0);var events={'afterCreate':_0x9ed8('0x4'),'afterUpdate':_0x9ed8('0x5'),'afterDestroy':_0x9ed8('0x6')};function emitEvent(_0x419a59){return function(_0xe0b30b,_0x6f0eea,_0x48ae9f){SmsQueueEvents[_0x9ed8('0x7')](_0x419a59+':'+_0xe0b30b['id'],_0xe0b30b);SmsQueueEvents[_0x9ed8('0x7')](_0x419a59,_0xe0b30b);_0x48ae9f(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsQueue[_0x9ed8('0x8')](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
index eddbc33..2102239 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb33b=['../../config/environment','./smsQueue.attributes','define','sms_queues','lodash','util','api','bluebird','request-promise','path','rimraf'];(function(_0x2ecb8b,_0x4d2942){var _0x4769c5=function(_0x159613){while(--_0x159613){_0x2ecb8b['push'](_0x2ecb8b['shift']());}};_0x4769c5(++_0x4d2942);}(_0xb33b,0xbf));var _0xbb33=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb33b[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xbb33('0x0'));var util=require(_0xbb33('0x1'));var logger=require('../../config/logger')(_0xbb33('0x2'));var moment=require('moment');var BPromise=require(_0xbb33('0x3'));var rp=require(_0xbb33('0x4'));var fs=require('fs');var path=require(_0xbb33('0x5'));var rimraf=require(_0xbb33('0x6'));var config=require(_0xbb33('0x7'));var attributes=require(_0xbb33('0x8'));module['exports']=function(_0x9ada8,_0x240137){return _0x9ada8[_0xbb33('0x9')]('SmsQueue',attributes,{'tableName':_0xbb33('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfd2f=['SmsQueue','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','exports','define'];(function(_0x3b046f,_0xb91ae){var _0x435e86=function(_0x33890f){while(--_0x33890f){_0x3b046f['push'](_0x3b046f['shift']());}};_0x435e86(++_0xb91ae);}(_0xfd2f,0x11f));var _0xffd2=function(_0x117c1d,_0x2f3cb9){_0x117c1d=_0x117c1d-0x0;var _0x37b4ec=_0xfd2f[_0x117c1d];return _0x37b4ec;};'use strict';var _=require(_0xffd2('0x0'));var util=require(_0xffd2('0x1'));var logger=require(_0xffd2('0x2'))('api');var moment=require(_0xffd2('0x3'));var BPromise=require(_0xffd2('0x4'));var rp=require(_0xffd2('0x5'));var fs=require('fs');var path=require(_0xffd2('0x6'));var rimraf=require(_0xffd2('0x7'));var config=require('../../config/environment');var attributes=require('./smsQueue.attributes');module[_0xffd2('0x8')]=function(_0x552d69,_0x6e6990){return _0x552d69[_0xffd2('0x9')](_0xffd2('0xa'),attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 75e7cea..834401d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1c1=['findAll','options','raw','where','limit','map','include','model','attributes','ShowSmsQueue','find','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','./smsQueue.socket','register','request','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetSmsQueue','SmsQueue'];(function(_0x22fba1,_0x40ac90){var _0x365955=function(_0xbf6f98){while(--_0xbf6f98){_0x22fba1['push'](_0x22fba1['shift']());}};_0x365955(++_0x40ac90);}(_0xe1c1,0x14b));var _0x1e1c=function(_0xc77819,_0x139fdc){_0xc77819=_0xc77819-0x0;var _0x1c9434=_0xe1c1[_0xc77819];return _0x1c9434;};'use strict';var _=require(_0x1e1c('0x0'));var util=require(_0x1e1c('0x1'));var moment=require(_0x1e1c('0x2'));var BPromise=require('bluebird');var rs=require(_0x1e1c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1e1c('0x4'))['db'];var utils=require(_0x1e1c('0x5'));var logger=require(_0x1e1c('0x6'))(_0x1e1c('0x7'));var config=require(_0x1e1c('0x8'));var jayson=require(_0x1e1c('0x9'));var client=jayson['client'][_0x1e1c('0xa')]({'port':0x232a});config[_0x1e1c('0xb')]=_['defaults'](config[_0x1e1c('0xb')],{'host':_0x1e1c('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x1e1c('0xd'))[_0x1e1c('0xe')](socket);function respondWithRpcPromise(_0x16e8cd,_0x507efb,_0x3c8236){return new BPromise(function(_0x5b8624,_0x23506d){return client[_0x1e1c('0xf')](_0x16e8cd,_0x3c8236)[_0x1e1c('0x10')](function(_0x202db3){logger[_0x1e1c('0x11')](_0x1e1c('0x12'),_0x507efb,_0x1e1c('0x13'));logger[_0x1e1c('0x14')](_0x1e1c('0x15'),_0x507efb,_0x1e1c('0x13'),JSON[_0x1e1c('0x16')](_0x202db3));if(_0x202db3[_0x1e1c('0x17')]){if(_0x202db3[_0x1e1c('0x17')][_0x1e1c('0x18')]===0x1f4){logger[_0x1e1c('0x17')](_0x1e1c('0x12'),_0x507efb,_0x202db3['error'][_0x1e1c('0x19')]);return _0x23506d(_0x202db3[_0x1e1c('0x17')][_0x1e1c('0x19')]);}logger[_0x1e1c('0x17')](_0x1e1c('0x12'),_0x507efb,_0x202db3['error'][_0x1e1c('0x19')]);return _0x5b8624(_0x202db3[_0x1e1c('0x17')][_0x1e1c('0x19')]);}else{logger[_0x1e1c('0x11')]('SmsQueue,\x20%s,\x20%s',_0x507efb,'request\x20sent');_0x5b8624(_0x202db3['result'][_0x1e1c('0x19')]);}})[_0x1e1c('0x1a')](function(_0x4e337a){logger[_0x1e1c('0x17')]('SmsQueue,\x20%s,\x20%s',_0x507efb,_0x4e337a);_0x23506d(_0x4e337a);});});}exports[_0x1e1c('0x1b')]=function(_0x24af7f){var _0x34a43a=this;return new Promise(function(_0x4abaea,_0x3f8ed3){return db[_0x1e1c('0x1c')][_0x1e1c('0x1d')]({'raw':_0x24af7f[_0x1e1c('0x1e')]?_0x24af7f[_0x1e1c('0x1e')][_0x1e1c('0x1f')]===undefined?!![]:![]:!![],'where':_0x24af7f[_0x1e1c('0x1e')]?_0x24af7f[_0x1e1c('0x1e')][_0x1e1c('0x20')]||null:null,'attributes':_0x24af7f[_0x1e1c('0x1e')]?_0x24af7f[_0x1e1c('0x1e')]['attributes']||null:null,'limit':_0x24af7f[_0x1e1c('0x1e')]?_0x24af7f[_0x1e1c('0x1e')][_0x1e1c('0x21')]||null:null,'include':_0x24af7f['options']?_0x24af7f['options']['include']?_[_0x1e1c('0x22')](_0x24af7f['options'][_0x1e1c('0x23')],function(_0xbd5130){return{'model':db[_0xbd5130['model']],'as':_0xbd5130['as'],'attributes':_0xbd5130['attributes'],'include':_0xbd5130[_0x1e1c('0x23')]?_['map'](_0xbd5130[_0x1e1c('0x23')],function(_0x4083f5){return{'model':db[_0x4083f5['model']],'as':_0x4083f5['as'],'attributes':_0x4083f5['attributes'],'include':_0x4083f5['include']?_[_0x1e1c('0x22')](_0x4083f5[_0x1e1c('0x23')],function(_0x362857){return{'model':db[_0x362857[_0x1e1c('0x24')]],'as':_0x362857['as'],'attributes':_0x362857[_0x1e1c('0x25')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x36b3d9){logger[_0x1e1c('0x11')]('GetSmsQueue',_0x24af7f);logger[_0x1e1c('0x14')]('GetSmsQueue',_0x24af7f,JSON[_0x1e1c('0x16')](_0x36b3d9));_0x4abaea(_0x36b3d9);})[_0x1e1c('0x1a')](function(_0x15ec17){logger['error'](_0x1e1c('0x1b'),_0x15ec17[_0x1e1c('0x19')],_0x24af7f);_0x3f8ed3(_0x34a43a['error'](0x1f4,_0x15ec17[_0x1e1c('0x19')]));});});};exports[_0x1e1c('0x26')]=function(_0x2baeb3){var _0x5e700b=this;return new Promise(function(_0x59d7be,_0x3f607e){return db['SmsQueue'][_0x1e1c('0x27')]({'raw':_0x2baeb3[_0x1e1c('0x1e')]?_0x2baeb3[_0x1e1c('0x1e')][_0x1e1c('0x1f')]===undefined?!![]:![]:!![],'where':_0x2baeb3[_0x1e1c('0x1e')]?_0x2baeb3[_0x1e1c('0x1e')][_0x1e1c('0x20')]||null:null,'attributes':_0x2baeb3[_0x1e1c('0x1e')]?_0x2baeb3[_0x1e1c('0x1e')][_0x1e1c('0x25')]||null:null,'include':_0x2baeb3[_0x1e1c('0x1e')]?_0x2baeb3[_0x1e1c('0x1e')][_0x1e1c('0x23')]?_[_0x1e1c('0x22')](_0x2baeb3['options']['include'],function(_0xbdfb39){return{'model':db[_0xbdfb39['model']],'as':_0xbdfb39['as'],'attributes':_0xbdfb39[_0x1e1c('0x25')],'include':_0xbdfb39['include']?_['map'](_0xbdfb39['include'],function(_0x98c579){return{'model':db[_0x98c579[_0x1e1c('0x24')]],'as':_0x98c579['as'],'attributes':_0x98c579[_0x1e1c('0x25')],'include':_0x98c579[_0x1e1c('0x23')]?_[_0x1e1c('0x22')](_0x98c579[_0x1e1c('0x23')],function(_0xe4ad0a){return{'model':db[_0xe4ad0a[_0x1e1c('0x24')]],'as':_0xe4ad0a['as'],'attributes':_0xe4ad0a[_0x1e1c('0x25')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x20e528){logger[_0x1e1c('0x11')](_0x1e1c('0x26'),_0x2baeb3);logger['debug'](_0x1e1c('0x26'),_0x2baeb3,JSON[_0x1e1c('0x16')](_0x20e528));_0x59d7be(_0x20e528);})[_0x1e1c('0x1a')](function(_0x3e5bd3){logger['error'](_0x1e1c('0x26'),_0x3e5bd3[_0x1e1c('0x19')],_0x2baeb3);_0x3f607e(_0x5e700b[_0x1e1c('0x17')](0x1f4,_0x3e5bd3['message']));});});};
\ No newline at end of file
+var _0x7439=['defaults','localhost','socket.io-emitter','./smsQueue.socket','register','request','then','info','debug','SmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','SmsQueue,\x20%s,\x20%s','error','message','GetSmsQueue','SmsQueue','findAll','options','where','attributes','limit','map','model','include','catch','ShowSmsQueue','raw','stringify','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis'];(function(_0x396b02,_0x20798d){var _0x2c227c=function(_0x1f3c45){while(--_0x1f3c45){_0x396b02['push'](_0x396b02['shift']());}};_0x2c227c(++_0x20798d);}(_0x7439,0x172));var _0x9743=function(_0x56c5d9,_0x3a2eb5){_0x56c5d9=_0x56c5d9-0x0;var _0x26bdd9=_0x7439[_0x56c5d9];return _0x26bdd9;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x9743('0x0'));var BPromise=require('bluebird');var rs=require(_0x9743('0x1'));var fs=require('fs');var Redis=require(_0x9743('0x2'));var db=require(_0x9743('0x3'))['db'];var utils=require(_0x9743('0x4'));var logger=require('../../config/logger')(_0x9743('0x5'));var config=require(_0x9743('0x6'));var jayson=require(_0x9743('0x7'));var client=jayson['client'][_0x9743('0x8')]({'port':0x232a});config[_0x9743('0x9')]=_[_0x9743('0xa')](config[_0x9743('0x9')],{'host':_0x9743('0xb'),'port':0x18eb});var socket=require(_0x9743('0xc'))(new Redis(config['redis']));require(_0x9743('0xd'))[_0x9743('0xe')](socket);function respondWithRpcPromise(_0x308fdd,_0x367c63,_0x4b160e){return new BPromise(function(_0x34d3ff,_0x426e14){return client[_0x9743('0xf')](_0x308fdd,_0x4b160e)[_0x9743('0x10')](function(_0x2d11b1){logger[_0x9743('0x11')]('SmsQueue,\x20%s,\x20%s',_0x367c63,'request\x20sent');logger[_0x9743('0x12')](_0x9743('0x13'),_0x367c63,_0x9743('0x14'),JSON['stringify'](_0x2d11b1));if(_0x2d11b1['error']){if(_0x2d11b1['error']['code']===0x1f4){logger['error'](_0x9743('0x15'),_0x367c63,_0x2d11b1[_0x9743('0x16')][_0x9743('0x17')]);return _0x426e14(_0x2d11b1[_0x9743('0x16')][_0x9743('0x17')]);}logger[_0x9743('0x16')]('SmsQueue,\x20%s,\x20%s',_0x367c63,_0x2d11b1[_0x9743('0x16')]['message']);return _0x34d3ff(_0x2d11b1[_0x9743('0x16')][_0x9743('0x17')]);}else{logger['info'](_0x9743('0x15'),_0x367c63,_0x9743('0x14'));_0x34d3ff(_0x2d11b1['result'][_0x9743('0x17')]);}})['catch'](function(_0x3af993){logger[_0x9743('0x16')](_0x9743('0x15'),_0x367c63,_0x3af993);_0x426e14(_0x3af993);});});}exports[_0x9743('0x18')]=function(_0x1681cd){var _0x558c57=this;return new Promise(function(_0x1d2b1a,_0x3483fe){return db[_0x9743('0x19')][_0x9743('0x1a')]({'raw':_0x1681cd[_0x9743('0x1b')]?_0x1681cd[_0x9743('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x1681cd[_0x9743('0x1b')]?_0x1681cd['options'][_0x9743('0x1c')]||null:null,'attributes':_0x1681cd[_0x9743('0x1b')]?_0x1681cd[_0x9743('0x1b')][_0x9743('0x1d')]||null:null,'limit':_0x1681cd[_0x9743('0x1b')]?_0x1681cd[_0x9743('0x1b')][_0x9743('0x1e')]||null:null,'include':_0x1681cd[_0x9743('0x1b')]?_0x1681cd[_0x9743('0x1b')]['include']?_[_0x9743('0x1f')](_0x1681cd[_0x9743('0x1b')]['include'],function(_0x921aa7){return{'model':db[_0x921aa7[_0x9743('0x20')]],'as':_0x921aa7['as'],'attributes':_0x921aa7[_0x9743('0x1d')],'include':_0x921aa7['include']?_['map'](_0x921aa7['include'],function(_0x1fc7bc){return{'model':db[_0x1fc7bc[_0x9743('0x20')]],'as':_0x1fc7bc['as'],'attributes':_0x1fc7bc[_0x9743('0x1d')],'include':_0x1fc7bc[_0x9743('0x21')]?_[_0x9743('0x1f')](_0x1fc7bc[_0x9743('0x21')],function(_0x22f688){return{'model':db[_0x22f688[_0x9743('0x20')]],'as':_0x22f688['as'],'attributes':_0x22f688[_0x9743('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x9743('0x10')](function(_0xea6855){logger['info'](_0x9743('0x18'),_0x1681cd);logger['debug'](_0x9743('0x18'),_0x1681cd,JSON['stringify'](_0xea6855));_0x1d2b1a(_0xea6855);})[_0x9743('0x22')](function(_0x2fca21){logger['error']('GetSmsQueue',_0x2fca21[_0x9743('0x17')],_0x1681cd);_0x3483fe(_0x558c57[_0x9743('0x16')](0x1f4,_0x2fca21['message']));});});};exports[_0x9743('0x23')]=function(_0x301986){var _0x1a71fd=this;return new Promise(function(_0x324793,_0x5e2839){return db[_0x9743('0x19')]['find']({'raw':_0x301986[_0x9743('0x1b')]?_0x301986[_0x9743('0x1b')][_0x9743('0x24')]===undefined?!![]:![]:!![],'where':_0x301986['options']?_0x301986[_0x9743('0x1b')][_0x9743('0x1c')]||null:null,'attributes':_0x301986[_0x9743('0x1b')]?_0x301986[_0x9743('0x1b')][_0x9743('0x1d')]||null:null,'include':_0x301986[_0x9743('0x1b')]?_0x301986[_0x9743('0x1b')][_0x9743('0x21')]?_[_0x9743('0x1f')](_0x301986[_0x9743('0x1b')][_0x9743('0x21')],function(_0x9a7a74){return{'model':db[_0x9a7a74['model']],'as':_0x9a7a74['as'],'attributes':_0x9a7a74[_0x9743('0x1d')],'include':_0x9a7a74[_0x9743('0x21')]?_['map'](_0x9a7a74[_0x9743('0x21')],function(_0x43e42f){return{'model':db[_0x43e42f[_0x9743('0x20')]],'as':_0x43e42f['as'],'attributes':_0x43e42f[_0x9743('0x1d')],'include':_0x43e42f[_0x9743('0x21')]?_[_0x9743('0x1f')](_0x43e42f[_0x9743('0x21')],function(_0x3cbf6a){return{'model':db[_0x3cbf6a['model']],'as':_0x3cbf6a['as'],'attributes':_0x3cbf6a['attributes']};}):[]};}):[]};}):[]:[]})[_0x9743('0x10')](function(_0x1f7627){logger['info'](_0x9743('0x23'),_0x301986);logger[_0x9743('0x12')](_0x9743('0x23'),_0x301986,JSON[_0x9743('0x25')](_0x1f7627));_0x324793(_0x1f7627);})[_0x9743('0x22')](function(_0x242fcd){logger[_0x9743('0x16')](_0x9743('0x23'),_0x242fcd[_0x9743('0x17')],_0x301986);_0x5e2839(_0x1a71fd['error'](0x1f4,_0x242fcd['message']));});});};
\ No newline at end of file
index 84f6b17..29a5180 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93c3=['smsQueue:','./smsQueue.events','save','remove','emit','removeListener','register','length'];(function(_0x43f47b,_0x311636){var _0x4af9a6=function(_0x4fb7f0){while(--_0x4fb7f0){_0x43f47b['push'](_0x43f47b['shift']());}};_0x4af9a6(++_0x311636);}(_0x93c3,0x1f1));var _0x393c=function(_0x342911,_0x4c66ca){_0x342911=_0x342911-0x0;var _0x591627=_0x93c3[_0x342911];return _0x591627;};'use strict';var SmsQueueEvents=require(_0x393c('0x0'));var events=[_0x393c('0x1'),_0x393c('0x2'),'update'];function createListener(_0x6153a6,_0x3ba2d8){return function(_0x3e9d00){_0x3ba2d8[_0x393c('0x3')](_0x6153a6,_0x3e9d00);};}function removeListener(_0x5536df,_0x2dd278){return function(){SmsQueueEvents[_0x393c('0x4')](_0x5536df,_0x2dd278);};}exports[_0x393c('0x5')]=function(_0x27e02f){for(var _0x27d4a5=0x0,_0x2c9afa=events[_0x393c('0x6')];_0x27d4a5<_0x2c9afa;_0x27d4a5++){var _0x1c7e76=events[_0x27d4a5];var _0x52b40c=createListener(_0x393c('0x7')+_0x1c7e76,_0x27e02f);SmsQueueEvents['on'](_0x1c7e76,_0x52b40c);}};
\ No newline at end of file
+var _0x13ca=['emit','removeListener','register','length','./smsQueue.events','remove','update'];(function(_0x59162a,_0x10e547){var _0x35e50d=function(_0x578425){while(--_0x578425){_0x59162a['push'](_0x59162a['shift']());}};_0x35e50d(++_0x10e547);}(_0x13ca,0xf2));var _0xa13c=function(_0x211f66,_0x6d409f){_0x211f66=_0x211f66-0x0;var _0x324240=_0x13ca[_0x211f66];return _0x324240;};'use strict';var SmsQueueEvents=require(_0xa13c('0x0'));var events=['save',_0xa13c('0x1'),_0xa13c('0x2')];function createListener(_0x318298,_0x240054){return function(_0x839b1d){_0x240054[_0xa13c('0x3')](_0x318298,_0x839b1d);};}function removeListener(_0x40f0cb,_0x5189b2){return function(){SmsQueueEvents[_0xa13c('0x4')](_0x40f0cb,_0x5189b2);};}exports[_0xa13c('0x5')]=function(_0x486363){for(var _0x54d4f6=0x0,_0x2845cc=events[_0xa13c('0x6')];_0x54d4f6<_0x2845cc;_0x54d4f6++){var _0x380f39=events[_0x54d4f6];var _0x13e3fa=createListener('smsQueue:'+_0x380f39,_0x486363);SmsQueueEvents['on'](_0x380f39,_0x13e3fa);}};
\ No newline at end of file
index 116f575..7aa0c91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ca9=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','delete'];(function(_0x147497,_0x43e433){var _0x35f45=function(_0x584421){while(--_0x584421){_0x147497['push'](_0x147497['shift']());}};_0x35f45(++_0x43e433);}(_0x8ca9,0x9c));var _0x98ca=function(_0x37980a,_0x3425e7){_0x37980a=_0x37980a-0x0;var _0x4f9131=_0x8ca9[_0x37980a];return _0x4f9131;};'use strict';var multer=require(_0x98ca('0x0'));var util=require(_0x98ca('0x1'));var path=require(_0x98ca('0x2'));var timeout=require(_0x98ca('0x3'));var express=require(_0x98ca('0x4'));var router=express[_0x98ca('0x5')]();var fs_extra=require(_0x98ca('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x98ca('0x7'));var controller=require('./smsQueueReport.controller');router[_0x98ca('0x8')]('/',auth['isAuthenticated'](),controller[_0x98ca('0x9')]);router[_0x98ca('0x8')](_0x98ca('0xa'),auth[_0x98ca('0xb')](),controller[_0x98ca('0xc')]);router[_0x98ca('0x8')](_0x98ca('0xd'),auth[_0x98ca('0xb')](),controller[_0x98ca('0xe')]);router[_0x98ca('0xf')]('/',auth[_0x98ca('0xb')](),controller[_0x98ca('0x10')]);router[_0x98ca('0x11')](_0x98ca('0xd'),auth[_0x98ca('0xb')](),controller[_0x98ca('0x12')]);router[_0x98ca('0x13')](_0x98ca('0xd'),auth['isAuthenticated'](),controller[_0x98ca('0x14')]);module[_0x98ca('0x15')]=router;
\ No newline at end of file
+var _0x15cb=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsQueueReport.controller','get','/describe','isAuthenticated','describe','/:id','show','update','delete','destroy','util'];(function(_0xec6f07,_0x56e43d){var _0x9c33f6=function(_0x50d58e){while(--_0x50d58e){_0xec6f07['push'](_0xec6f07['shift']());}};_0x9c33f6(++_0x56e43d);}(_0x15cb,0x16f));var _0xb15c=function(_0x593e3a,_0x5978bb){_0x593e3a=_0x593e3a-0x0;var _0xe8d2ac=_0x15cb[_0x593e3a];return _0xe8d2ac;};'use strict';var multer=require('multer');var util=require(_0xb15c('0x0'));var path=require('path');var timeout=require(_0xb15c('0x1'));var express=require('express');var router=express[_0xb15c('0x2')]();var fs_extra=require(_0xb15c('0x3'));var auth=require(_0xb15c('0x4'));var interaction=require(_0xb15c('0x5'));var config=require('../../config/environment');var controller=require(_0xb15c('0x6'));router[_0xb15c('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0xb15c('0x7')](_0xb15c('0x8'),auth[_0xb15c('0x9')](),controller[_0xb15c('0xa')]);router[_0xb15c('0x7')](_0xb15c('0xb'),auth[_0xb15c('0x9')](),controller[_0xb15c('0xc')]);router['post']('/',auth[_0xb15c('0x9')](),controller['create']);router['put']('/:id',auth[_0xb15c('0x9')](),controller[_0xb15c('0xd')]);router[_0xb15c('0xe')](_0xb15c('0xb'),auth[_0xb15c('0x9')](),controller[_0xb15c('0xf')]);module['exports']=router;
\ No newline at end of file
index 65ce568..c16028d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2fd=['DATE','STRING','moment','sequelize','exports'];(function(_0x2c21ee,_0x3424a5){var _0x2c18ef=function(_0x467991){while(--_0x467991){_0x2c21ee['push'](_0x2c21ee['shift']());}};_0x2c18ef(++_0x3424a5);}(_0xb2fd,0xb1));var _0xdb2f=function(_0x4abc0a,_0x2e6dc6){_0x4abc0a=_0x4abc0a-0x0;var _0x54c7cd=_0xb2fd[_0x4abc0a];return _0x54c7cd;};'use strict';var moment=require(_0xdb2f('0x0'));var Sequelize=require(_0xdb2f('0x1'));module[_0xdb2f('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xdb2f('0x3')]},'acceptAt':{'type':Sequelize[_0xdb2f('0x3')]},'exitAt':{'type':Sequelize[_0xdb2f('0x3')]},'reason':{'type':Sequelize[_0xdb2f('0x4')]}};
\ No newline at end of file
+var _0x8e14=['DATE','moment','sequelize','exports','STRING'];(function(_0x2fa2fb,_0x179774){var _0xecbc37=function(_0x4de309){while(--_0x4de309){_0x2fa2fb['push'](_0x2fa2fb['shift']());}};_0xecbc37(++_0x179774);}(_0x8e14,0x1c8));var _0x48e1=function(_0x521068,_0x3ae14e){_0x521068=_0x521068-0x0;var _0x26180e=_0x8e14[_0x521068];return _0x26180e;};'use strict';var moment=require(_0x48e1('0x0'));var Sequelize=require(_0x48e1('0x1'));module[_0x48e1('0x2')]={'uniqueid':{'type':Sequelize[_0x48e1('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x48e1('0x3')]},'joinAt':{'type':Sequelize[_0x48e1('0x4')]},'leaveAt':{'type':Sequelize[_0x48e1('0x4')]},'acceptAt':{'type':Sequelize[_0x48e1('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x48e1('0x3')]}};
\ No newline at end of file
index eb4e2be..a571515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc21=['save','update','then','end','error','stack','name','send','SmsQueueReport','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','rawAttributes','include','find','create','body','destroy','describe','rimraf','request-promise','moment','bluebird','mustache','util','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply'];(function(_0x2e9f44,_0x56a9d1){var _0x1ec7d6=function(_0x3451ac){while(--_0x3451ac){_0x2e9f44['push'](_0x2e9f44['shift']());}};_0x1ec7d6(++_0x56a9d1);}(_0xbc21,0x10a));var _0x1bc2=function(_0x9471c2,_0x5af891){_0x9471c2=_0x9471c2-0x0;var _0x2997da=_0xbc21[_0x9471c2];return _0x2997da;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1bc2('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x1bc2('0x1'));var moment=require(_0x1bc2('0x2'));var BPromise=require(_0x1bc2('0x3'));var Mustache=require(_0x1bc2('0x4'));var util=require(_0x1bc2('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x1bc2('0x6'));var ejs=require(_0x1bc2('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1bc2('0x8'));var squel=require(_0x1bc2('0x9'));var crypto=require(_0x1bc2('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x1bc2('0xb'));var toCsv=require('to-csv');var querystring=require(_0x1bc2('0xc'));var Papa=require('papaparse');var Redis=require(_0x1bc2('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x1bc2('0xe'));var as=require(_0x1bc2('0xf'));var hardwareService=require(_0x1bc2('0x10'));var logger=require(_0x1bc2('0x11'))(_0x1bc2('0x12'));var utils=require('../../config/utils');var config=require(_0x1bc2('0x13'));var licenseUtil=require(_0x1bc2('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x33a5ce,_0x5a9c60){_0x5a9c60=_0x5a9c60||0xcc;return function(_0x2c579b){if(_0x2c579b){return _0x33a5ce[_0x1bc2('0x15')](_0x5a9c60);}return _0x33a5ce[_0x1bc2('0x16')](_0x5a9c60)['end']();};}function respondWithResult(_0x42d247,_0x467130){_0x467130=_0x467130||0xc8;return function(_0x21f8ce){if(_0x21f8ce){return _0x42d247['status'](_0x467130)[_0x1bc2('0x17')](_0x21f8ce);}};}function respondWithFilteredResult(_0x1ba664,_0x263a57){return function(_0x497d3c){if(_0x497d3c){var _0x3c59e6=typeof _0x263a57[_0x1bc2('0x18')]===_0x1bc2('0x19')&&typeof _0x263a57['limit']==='undefined';var _0x42cfbf=_0x497d3c['count'];var _0x55b7e2=_0x3c59e6?0x0:_0x263a57[_0x1bc2('0x18')];var _0x461468=_0x3c59e6?_0x497d3c[_0x1bc2('0x1a')]:_0x263a57[_0x1bc2('0x18')]+_0x263a57['limit'];var _0x429f66;if(_0x461468>=_0x42cfbf){_0x461468=_0x42cfbf;_0x429f66=0xc8;}else{_0x429f66=0xce;}_0x1ba664['status'](_0x429f66);return _0x1ba664[_0x1bc2('0x1b')](_0x1bc2('0x1c'),_0x55b7e2+'-'+_0x461468+'/'+_0x42cfbf)[_0x1bc2('0x17')](_0x497d3c);}return null;};}function patchUpdates(_0x277d58){return function(_0x10b2ba){try{jsonpatch[_0x1bc2('0x1d')](_0x10b2ba,_0x277d58,!![]);}catch(_0x5af379){return BPromise['reject'](_0x5af379);}return _0x10b2ba[_0x1bc2('0x1e')]();};}function saveUpdates(_0x5190bd,_0x202f56){return function(_0x24e2d1){if(_0x24e2d1){return _0x24e2d1[_0x1bc2('0x1f')](_0x5190bd)[_0x1bc2('0x20')](function(_0x16b57f){return _0x16b57f;});}return null;};}function removeEntity(_0x4f23d7,_0x31fa55){return function(_0x47a028){if(_0x47a028){return _0x47a028['destroy']()[_0x1bc2('0x20')](function(){_0x4f23d7[_0x1bc2('0x16')](0xcc)[_0x1bc2('0x21')]();});}};}function handleEntityNotFound(_0x100a50,_0x1b1d3d){return function(_0x2e1832){if(!_0x2e1832){_0x100a50['sendStatus'](0x194);}return _0x2e1832;};}function handleError(_0x575da8,_0x186bcb){_0x186bcb=_0x186bcb||0x1f4;return function(_0x2c8270){logger[_0x1bc2('0x22')](_0x2c8270[_0x1bc2('0x23')]);if(_0x2c8270[_0x1bc2('0x24')]){delete _0x2c8270[_0x1bc2('0x24')];}_0x575da8[_0x1bc2('0x16')](_0x186bcb)[_0x1bc2('0x25')](_0x2c8270);};}exports['index']=function(_0x30184c,_0x381905){var _0x2d1952={},_0x5e62b0={},_0x44bfde={'count':0x0,'rows':[]};var _0x2fd887=_['map'](db[_0x1bc2('0x26')]['rawAttributes'],function(_0x5c03e3){return{'name':_0x5c03e3[_0x1bc2('0x27')],'type':_0x5c03e3[_0x1bc2('0x28')][_0x1bc2('0x29')]};});_0x5e62b0[_0x1bc2('0x2a')]=_[_0x1bc2('0x2b')](_0x2fd887,_0x1bc2('0x24'));_0x5e62b0[_0x1bc2('0x2c')]=_[_0x1bc2('0x2d')](_0x30184c[_0x1bc2('0x2c')]);_0x5e62b0[_0x1bc2('0x2e')]=_[_0x1bc2('0x2f')](_0x5e62b0['model'],_0x5e62b0[_0x1bc2('0x2c')]);_0x2d1952[_0x1bc2('0x30')]=_['intersection'](_0x5e62b0[_0x1bc2('0x2a')],qs[_0x1bc2('0x31')](_0x30184c[_0x1bc2('0x2c')]['fields']));_0x2d1952['attributes']=_0x2d1952[_0x1bc2('0x30')][_0x1bc2('0x32')]?_0x2d1952[_0x1bc2('0x30')]:_0x5e62b0[_0x1bc2('0x2a')];if(!_0x30184c[_0x1bc2('0x2c')][_0x1bc2('0x33')](_0x1bc2('0x34'))){_0x2d1952[_0x1bc2('0x35')]=qs[_0x1bc2('0x35')](_0x30184c['query'][_0x1bc2('0x35')]);_0x2d1952['offset']=qs[_0x1bc2('0x18')](_0x30184c[_0x1bc2('0x2c')][_0x1bc2('0x18')]);}_0x2d1952['order']=qs[_0x1bc2('0x36')](_0x30184c['query'][_0x1bc2('0x36')]);_0x2d1952[_0x1bc2('0x37')]=qs[_0x1bc2('0x2e')](_[_0x1bc2('0x38')](_0x30184c[_0x1bc2('0x2c')],_0x5e62b0[_0x1bc2('0x2e')]),_0x2fd887);if(_0x30184c[_0x1bc2('0x2c')][_0x1bc2('0x39')]){_0x2d1952['where']=_[_0x1bc2('0x3a')](_0x2d1952[_0x1bc2('0x37')],{'$or':_[_0x1bc2('0x2b')](_0x2fd887,function(_0x29a093){if(_0x29a093[_0x1bc2('0x28')]!==_0x1bc2('0x3b')){var _0x49a301={};_0x49a301[_0x29a093[_0x1bc2('0x24')]]={'$like':'%'+_0x30184c[_0x1bc2('0x2c')][_0x1bc2('0x39')]+'%'};return _0x49a301;}})});}_0x2d1952=_[_0x1bc2('0x3a')]({},_0x2d1952,_0x30184c[_0x1bc2('0x3c')]);var _0x5b9f2b={'where':_0x2d1952[_0x1bc2('0x37')]};return db['SmsQueueReport'][_0x1bc2('0x1a')](_0x5b9f2b)['then'](function(_0x41910c){_0x44bfde[_0x1bc2('0x1a')]=_0x41910c;if(_0x30184c[_0x1bc2('0x2c')][_0x1bc2('0x3d')]){_0x2d1952['include']=[{'all':!![]}];}return db[_0x1bc2('0x26')][_0x1bc2('0x3e')](_0x2d1952);})[_0x1bc2('0x20')](function(_0x5975a3){_0x44bfde[_0x1bc2('0x3f')]=_0x5975a3;return _0x44bfde;})[_0x1bc2('0x20')](respondWithFilteredResult(_0x381905,_0x2d1952))[_0x1bc2('0x40')](handleError(_0x381905,null));};exports[_0x1bc2('0x41')]=function(_0x4341e4,_0x33bf8d){var _0x47e63a={'raw':!![],'where':{'id':_0x4341e4[_0x1bc2('0x42')]['id']}},_0x37f8ab={};_0x37f8ab[_0x1bc2('0x2a')]=_[_0x1bc2('0x2d')](db[_0x1bc2('0x26')][_0x1bc2('0x43')]);_0x37f8ab['query']=_[_0x1bc2('0x2d')](_0x4341e4[_0x1bc2('0x2c')]);_0x37f8ab[_0x1bc2('0x2e')]=_['intersection'](_0x37f8ab[_0x1bc2('0x2a')],_0x37f8ab[_0x1bc2('0x2c')]);_0x47e63a[_0x1bc2('0x30')]=_[_0x1bc2('0x2f')](_0x37f8ab[_0x1bc2('0x2a')],qs[_0x1bc2('0x31')](_0x4341e4[_0x1bc2('0x2c')]['fields']));_0x47e63a['attributes']=_0x47e63a[_0x1bc2('0x30')]['length']?_0x47e63a[_0x1bc2('0x30')]:_0x37f8ab[_0x1bc2('0x2a')];if(_0x4341e4['query'][_0x1bc2('0x3d')]){_0x47e63a[_0x1bc2('0x44')]=[{'all':!![]}];}_0x47e63a=_[_0x1bc2('0x3a')]({},_0x47e63a,_0x4341e4[_0x1bc2('0x3c')]);return db[_0x1bc2('0x26')][_0x1bc2('0x45')](_0x47e63a)[_0x1bc2('0x20')](handleEntityNotFound(_0x33bf8d,null))[_0x1bc2('0x20')](respondWithResult(_0x33bf8d,null))[_0x1bc2('0x40')](handleError(_0x33bf8d,null));};exports[_0x1bc2('0x46')]=function(_0x175604,_0x1935d6){return db[_0x1bc2('0x26')][_0x1bc2('0x46')](_0x175604[_0x1bc2('0x47')],{})['then'](respondWithResult(_0x1935d6,0xc9))['catch'](handleError(_0x1935d6,null));};exports[_0x1bc2('0x1f')]=function(_0x59a65a,_0x847443){if(_0x59a65a[_0x1bc2('0x47')]['id']){delete _0x59a65a[_0x1bc2('0x47')]['id'];}return db[_0x1bc2('0x26')][_0x1bc2('0x45')]({'where':{'id':_0x59a65a['params']['id']}})[_0x1bc2('0x20')](handleEntityNotFound(_0x847443,null))[_0x1bc2('0x20')](saveUpdates(_0x59a65a[_0x1bc2('0x47')],null))[_0x1bc2('0x20')](respondWithResult(_0x847443,null))['catch'](handleError(_0x847443,null));};exports[_0x1bc2('0x48')]=function(_0x2ad450,_0x5b71a4){return db[_0x1bc2('0x26')][_0x1bc2('0x45')]({'where':{'id':_0x2ad450['params']['id']}})[_0x1bc2('0x20')](handleEntityNotFound(_0x5b71a4,null))[_0x1bc2('0x20')](removeEntity(_0x5b71a4,null))[_0x1bc2('0x40')](handleError(_0x5b71a4,null));};exports[_0x1bc2('0x49')]=function(_0x1a073d,_0x3564eb){return db[_0x1bc2('0x26')][_0x1bc2('0x49')]()[_0x1bc2('0x20')](respondWithResult(_0x3564eb,null))['catch'](handleError(_0x3564eb,null));};
\ No newline at end of file
+var _0x81ea=['index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','SmsQueueReport','includeAll','include','findAll','rows','catch','show','fields','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','squel','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','sendStatus','status','end','offset','undefined','limit','count','set','json','reject','save','update','destroy','then','error','stack','name','send'];(function(_0x57d360,_0x4dc9d8){var _0x36fcdc=function(_0x26ff5b){while(--_0x26ff5b){_0x57d360['push'](_0x57d360['shift']());}};_0x36fcdc(++_0x4dc9d8);}(_0x81ea,0xc1));var _0xa81e=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x81ea[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0xa81e('0x0'));var rimraf=require(_0xa81e('0x1'));var zipdir=require(_0xa81e('0x2'));var jsonpatch=require(_0xa81e('0x3'));var rp=require(_0xa81e('0x4'));var moment=require(_0xa81e('0x5'));var BPromise=require(_0xa81e('0x6'));var Mustache=require(_0xa81e('0x7'));var util=require('util');var path=require(_0xa81e('0x8'));var sox=require(_0xa81e('0x9'));var csv=require(_0xa81e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa81e('0xb'));var _=require('lodash');var squel=require(_0xa81e('0xc'));var crypto=require(_0xa81e('0xd'));var jsforce=require(_0xa81e('0xe'));var deskjs=require(_0xa81e('0xf'));var toCsv=require(_0xa81e('0xa'));var querystring=require(_0xa81e('0x10'));var Papa=require('papaparse');var Redis=require(_0xa81e('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xa81e('0x12'));var as=require(_0xa81e('0x13'));var hardwareService=require(_0xa81e('0x14'));var logger=require(_0xa81e('0x15'))(_0xa81e('0x16'));var utils=require(_0xa81e('0x17'));var config=require(_0xa81e('0x18'));var licenseUtil=require(_0xa81e('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x9dfaaa,_0x2ed13e){_0x2ed13e=_0x2ed13e||0xcc;return function(_0x467746){if(_0x467746){return _0x9dfaaa[_0xa81e('0x1a')](_0x2ed13e);}return _0x9dfaaa[_0xa81e('0x1b')](_0x2ed13e)[_0xa81e('0x1c')]();};}function respondWithResult(_0x3804c4,_0x50f974){_0x50f974=_0x50f974||0xc8;return function(_0x3b03ab){if(_0x3b03ab){return _0x3804c4[_0xa81e('0x1b')](_0x50f974)['json'](_0x3b03ab);}};}function respondWithFilteredResult(_0xf9c519,_0x2d254b){return function(_0x39a201){if(_0x39a201){var _0x1577b3=typeof _0x2d254b[_0xa81e('0x1d')]===_0xa81e('0x1e')&&typeof _0x2d254b[_0xa81e('0x1f')]===_0xa81e('0x1e');var _0x54200b=_0x39a201[_0xa81e('0x20')];var _0x6d297b=_0x1577b3?0x0:_0x2d254b[_0xa81e('0x1d')];var _0x3e5150=_0x1577b3?_0x39a201[_0xa81e('0x20')]:_0x2d254b[_0xa81e('0x1d')]+_0x2d254b[_0xa81e('0x1f')];var _0x31ba6a;if(_0x3e5150>=_0x54200b){_0x3e5150=_0x54200b;_0x31ba6a=0xc8;}else{_0x31ba6a=0xce;}_0xf9c519[_0xa81e('0x1b')](_0x31ba6a);return _0xf9c519[_0xa81e('0x21')]('Content-Range',_0x6d297b+'-'+_0x3e5150+'/'+_0x54200b)[_0xa81e('0x22')](_0x39a201);}return null;};}function patchUpdates(_0x4a63e7){return function(_0xf52b90){try{jsonpatch['apply'](_0xf52b90,_0x4a63e7,!![]);}catch(_0x1bd295){return BPromise[_0xa81e('0x23')](_0x1bd295);}return _0xf52b90[_0xa81e('0x24')]();};}function saveUpdates(_0x464374,_0x454bba){return function(_0x2866cc){if(_0x2866cc){return _0x2866cc[_0xa81e('0x25')](_0x464374)['then'](function(_0x2a5d46){return _0x2a5d46;});}return null;};}function removeEntity(_0x53010a,_0x268b71){return function(_0x2a62ec){if(_0x2a62ec){return _0x2a62ec[_0xa81e('0x26')]()[_0xa81e('0x27')](function(){_0x53010a[_0xa81e('0x1b')](0xcc)[_0xa81e('0x1c')]();});}};}function handleEntityNotFound(_0xe94b31,_0x208379){return function(_0x4406db){if(!_0x4406db){_0xe94b31[_0xa81e('0x1a')](0x194);}return _0x4406db;};}function handleError(_0x8b8eeb,_0x5b0a4c){_0x5b0a4c=_0x5b0a4c||0x1f4;return function(_0x18f02d){logger[_0xa81e('0x28')](_0x18f02d[_0xa81e('0x29')]);if(_0x18f02d[_0xa81e('0x2a')]){delete _0x18f02d[_0xa81e('0x2a')];}_0x8b8eeb[_0xa81e('0x1b')](_0x5b0a4c)[_0xa81e('0x2b')](_0x18f02d);};}exports[_0xa81e('0x2c')]=function(_0x27056e,_0x3cf8d2){var _0x47612c={},_0x55acd3={},_0x266c27={'count':0x0,'rows':[]};var _0x3b0d76=_[_0xa81e('0x2d')](db['SmsQueueReport'][_0xa81e('0x2e')],function(_0x2704d7){return{'name':_0x2704d7[_0xa81e('0x2f')],'type':_0x2704d7[_0xa81e('0x30')][_0xa81e('0x31')]};});_0x55acd3[_0xa81e('0x32')]=_[_0xa81e('0x2d')](_0x3b0d76,'name');_0x55acd3[_0xa81e('0x33')]=_[_0xa81e('0x34')](_0x27056e['query']);_0x55acd3[_0xa81e('0x35')]=_[_0xa81e('0x36')](_0x55acd3[_0xa81e('0x32')],_0x55acd3[_0xa81e('0x33')]);_0x47612c[_0xa81e('0x37')]=_[_0xa81e('0x36')](_0x55acd3['model'],qs['fields'](_0x27056e[_0xa81e('0x33')]['fields']));_0x47612c['attributes']=_0x47612c[_0xa81e('0x37')][_0xa81e('0x38')]?_0x47612c[_0xa81e('0x37')]:_0x55acd3[_0xa81e('0x32')];if(!_0x27056e[_0xa81e('0x33')][_0xa81e('0x39')](_0xa81e('0x3a'))){_0x47612c[_0xa81e('0x1f')]=qs[_0xa81e('0x1f')](_0x27056e[_0xa81e('0x33')][_0xa81e('0x1f')]);_0x47612c[_0xa81e('0x1d')]=qs['offset'](_0x27056e['query']['offset']);}_0x47612c[_0xa81e('0x3b')]=qs[_0xa81e('0x3c')](_0x27056e[_0xa81e('0x33')]['sort']);_0x47612c[_0xa81e('0x3d')]=qs[_0xa81e('0x35')](_[_0xa81e('0x3e')](_0x27056e['query'],_0x55acd3[_0xa81e('0x35')]),_0x3b0d76);if(_0x27056e[_0xa81e('0x33')][_0xa81e('0x3f')]){_0x47612c[_0xa81e('0x3d')]=_[_0xa81e('0x40')](_0x47612c[_0xa81e('0x3d')],{'$or':_[_0xa81e('0x2d')](_0x3b0d76,function(_0x2dae14){if(_0x2dae14[_0xa81e('0x30')]!=='VIRTUAL'){var _0x29c3be={};_0x29c3be[_0x2dae14[_0xa81e('0x2a')]]={'$like':'%'+_0x27056e[_0xa81e('0x33')][_0xa81e('0x3f')]+'%'};return _0x29c3be;}})});}_0x47612c=_[_0xa81e('0x40')]({},_0x47612c,_0x27056e[_0xa81e('0x41')]);var _0x55a5cd={'where':_0x47612c['where']};return db[_0xa81e('0x42')]['count'](_0x55a5cd)['then'](function(_0x4c0577){_0x266c27[_0xa81e('0x20')]=_0x4c0577;if(_0x27056e[_0xa81e('0x33')][_0xa81e('0x43')]){_0x47612c[_0xa81e('0x44')]=[{'all':!![]}];}return db[_0xa81e('0x42')][_0xa81e('0x45')](_0x47612c);})['then'](function(_0x2d52bb){_0x266c27[_0xa81e('0x46')]=_0x2d52bb;return _0x266c27;})[_0xa81e('0x27')](respondWithFilteredResult(_0x3cf8d2,_0x47612c))[_0xa81e('0x47')](handleError(_0x3cf8d2,null));};exports[_0xa81e('0x48')]=function(_0x1d624b,_0xf670b5){var _0x31d3b2={'raw':!![],'where':{'id':_0x1d624b['params']['id']}},_0x1f58c4={};_0x1f58c4[_0xa81e('0x32')]=_[_0xa81e('0x34')](db[_0xa81e('0x42')][_0xa81e('0x2e')]);_0x1f58c4[_0xa81e('0x33')]=_['keys'](_0x1d624b['query']);_0x1f58c4['filters']=_[_0xa81e('0x36')](_0x1f58c4[_0xa81e('0x32')],_0x1f58c4['query']);_0x31d3b2[_0xa81e('0x37')]=_['intersection'](_0x1f58c4[_0xa81e('0x32')],qs[_0xa81e('0x49')](_0x1d624b[_0xa81e('0x33')][_0xa81e('0x49')]));_0x31d3b2['attributes']=_0x31d3b2[_0xa81e('0x37')]['length']?_0x31d3b2[_0xa81e('0x37')]:_0x1f58c4[_0xa81e('0x32')];if(_0x1d624b[_0xa81e('0x33')]['includeAll']){_0x31d3b2[_0xa81e('0x44')]=[{'all':!![]}];}_0x31d3b2=_['merge']({},_0x31d3b2,_0x1d624b[_0xa81e('0x41')]);return db[_0xa81e('0x42')][_0xa81e('0x4a')](_0x31d3b2)['then'](handleEntityNotFound(_0xf670b5,null))['then'](respondWithResult(_0xf670b5,null))[_0xa81e('0x47')](handleError(_0xf670b5,null));};exports[_0xa81e('0x4b')]=function(_0x50657b,_0x2e8ac4){return db[_0xa81e('0x42')][_0xa81e('0x4b')](_0x50657b[_0xa81e('0x4c')],{})[_0xa81e('0x27')](respondWithResult(_0x2e8ac4,0xc9))[_0xa81e('0x47')](handleError(_0x2e8ac4,null));};exports[_0xa81e('0x25')]=function(_0x42d6ec,_0x46bc58){if(_0x42d6ec['body']['id']){delete _0x42d6ec['body']['id'];}return db[_0xa81e('0x42')][_0xa81e('0x4a')]({'where':{'id':_0x42d6ec['params']['id']}})[_0xa81e('0x27')](handleEntityNotFound(_0x46bc58,null))['then'](saveUpdates(_0x42d6ec['body'],null))[_0xa81e('0x27')](respondWithResult(_0x46bc58,null))[_0xa81e('0x47')](handleError(_0x46bc58,null));};exports[_0xa81e('0x26')]=function(_0x26b905,_0x11985f){return db[_0xa81e('0x42')]['find']({'where':{'id':_0x26b905[_0xa81e('0x4d')]['id']}})[_0xa81e('0x27')](handleEntityNotFound(_0x11985f,null))[_0xa81e('0x27')](removeEntity(_0x11985f,null))[_0xa81e('0x47')](handleError(_0x11985f,null));};exports['describe']=function(_0x4783d8,_0x2ed9ef){return db['SmsQueueReport'][_0xa81e('0x4e')]()[_0xa81e('0x27')](respondWithResult(_0x2ed9ef,null))[_0xa81e('0x47')](handleError(_0x2ed9ef,null));};
\ No newline at end of file
index 64288df..481c14a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['define','SmsQueueReport','uniqueid','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./smsQueueReport.attributes','exports'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa9e0[_0x13ea00];return _0x1f7347;};'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':'report_sms_queue','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0a9e('0xb')]}],'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(_0x5a0e06,_0x5559c7){var _0x8157a=function(_0x4a04e1){while(--_0x4a04e1){_0x5a0e06['push'](_0x5a0e06['shift']());}};_0x8157a(++_0x5559c7);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4f3c9b,_0x28e078){_0x4f3c9b=_0x4f3c9b-0x0;var _0x84e58a=_0xcb91[_0x4f3c9b];return _0x84e58a;};'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 31a6304..68707b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e7a=['client','request','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateSmsQueueReport','SmsQueueReport','body','options','raw','UpdateSmsQueueReport','update','attributes','limit','then','stringify','util','bluebird','randomstring','ioredis','../../config/utils','../../config/environment'];(function(_0x46aecd,_0x368362){var _0x345cf2=function(_0x496c8d){while(--_0x496c8d){_0x46aecd['push'](_0x46aecd['shift']());}};_0x345cf2(++_0x368362);}(_0x0e7a,0x139));var _0xa0e7=function(_0x3896ea,_0x489972){_0x3896ea=_0x3896ea-0x0;var _0x3527bf=_0x0e7a[_0x3896ea];return _0x3527bf;};'use strict';var _=require('lodash');var util=require(_0xa0e7('0x0'));var moment=require('moment');var BPromise=require(_0xa0e7('0x1'));var rs=require(_0xa0e7('0x2'));var fs=require('fs');var Redis=require(_0xa0e7('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xa0e7('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xa0e7('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xa0e7('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5b2b9c,_0x1ce4fd,_0x285bbf){return new BPromise(function(_0x5c5318,_0x40c47b){return client[_0xa0e7('0x7')](_0x5b2b9c,_0x285bbf)['then'](function(_0x58b2e9){logger[_0xa0e7('0x8')](_0xa0e7('0x9'),_0x1ce4fd,_0xa0e7('0xa'));logger[_0xa0e7('0xb')](_0xa0e7('0xc'),_0x1ce4fd,_0xa0e7('0xa'),JSON['stringify'](_0x58b2e9));if(_0x58b2e9[_0xa0e7('0xd')]){if(_0x58b2e9[_0xa0e7('0xd')][_0xa0e7('0xe')]===0x1f4){logger[_0xa0e7('0xd')](_0xa0e7('0x9'),_0x1ce4fd,_0x58b2e9[_0xa0e7('0xd')]['message']);return _0x40c47b(_0x58b2e9[_0xa0e7('0xd')][_0xa0e7('0xf')]);}logger[_0xa0e7('0xd')]('SmsQueueReport,\x20%s,\x20%s',_0x1ce4fd,_0x58b2e9['error'][_0xa0e7('0xf')]);return _0x5c5318(_0x58b2e9[_0xa0e7('0xd')][_0xa0e7('0xf')]);}else{logger[_0xa0e7('0x8')](_0xa0e7('0x9'),_0x1ce4fd,_0xa0e7('0xa'));_0x5c5318(_0x58b2e9[_0xa0e7('0x10')][_0xa0e7('0xf')]);}})[_0xa0e7('0x11')](function(_0xeb26f0){logger[_0xa0e7('0xd')](_0xa0e7('0x9'),_0x1ce4fd,_0xeb26f0);_0x40c47b(_0xeb26f0);});});}exports[_0xa0e7('0x12')]=function(_0xb633aa){var _0x24c86f=this;return new Promise(function(_0x4a86ab,_0x3ea1cf){return db[_0xa0e7('0x13')]['create'](_0xb633aa[_0xa0e7('0x14')],{'raw':_0xb633aa['options']?_0xb633aa[_0xa0e7('0x15')][_0xa0e7('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x4efded){logger[_0xa0e7('0x8')](_0xa0e7('0x12'),_0xb633aa);logger[_0xa0e7('0xb')](_0xa0e7('0x12'),_0xb633aa,JSON['stringify'](_0x4efded));_0x4a86ab(_0x4efded);})[_0xa0e7('0x11')](function(_0xa191a){logger[_0xa0e7('0xd')](_0xa0e7('0x12'),_0xa191a['message'],_0xb633aa);_0x3ea1cf(_0x24c86f['error'](0x1f4,_0xa191a[_0xa0e7('0xf')]));});});};exports[_0xa0e7('0x17')]=function(_0x7a5df2){var _0x2f7168=this;return new Promise(function(_0xbae671,_0x42eb5d){return db[_0xa0e7('0x13')][_0xa0e7('0x18')](_0x7a5df2[_0xa0e7('0x14')],{'raw':_0x7a5df2[_0xa0e7('0x15')]?_0x7a5df2[_0xa0e7('0x15')][_0xa0e7('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x7a5df2[_0xa0e7('0x15')]?_0x7a5df2[_0xa0e7('0x15')]['where']||null:null,'attributes':_0x7a5df2['options']?_0x7a5df2['options'][_0xa0e7('0x19')]||null:null,'limit':_0x7a5df2[_0xa0e7('0x15')]?_0x7a5df2[_0xa0e7('0x15')][_0xa0e7('0x1a')]||null:null})[_0xa0e7('0x1b')](function(_0x12eb6f){logger['info']('UpdateSmsQueueReport',_0x7a5df2);logger['debug'](_0xa0e7('0x17'),_0x7a5df2,JSON[_0xa0e7('0x1c')](_0x12eb6f));_0xbae671(_0x12eb6f);})[_0xa0e7('0x11')](function(_0x492536){logger[_0xa0e7('0xd')](_0xa0e7('0x17'),_0x492536['message'],_0x7a5df2);_0x42eb5d(_0x2f7168[_0xa0e7('0xd')](0x1f4,_0x492536[_0xa0e7('0xf')]));});});};
\ No newline at end of file
+var _0x96ae=['client','request','then','SmsQueueReport,\x20%s,\x20%s','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','CreateSmsQueueReport','SmsQueueReport','create','body','options','raw','info','stringify','catch','UpdateSmsQueueReport','where','attributes','limit','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x2219bd,_0x9cfd12){var _0xb72639=function(_0x2113f3){while(--_0x2113f3){_0x2219bd['push'](_0x2219bd['shift']());}};_0xb72639(++_0x9cfd12);}(_0x96ae,0x1d2));var _0xe96a=function(_0x1194d1,_0x71821b){_0x1194d1=_0x1194d1-0x0;var _0x24c777=_0x96ae[_0x1194d1];return _0x24c777;};'use strict';var _=require(_0xe96a('0x0'));var util=require('util');var moment=require(_0xe96a('0x1'));var BPromise=require('bluebird');var rs=require(_0xe96a('0x2'));var fs=require('fs');var Redis=require(_0xe96a('0x3'));var db=require(_0xe96a('0x4'))['db'];var utils=require(_0xe96a('0x5'));var logger=require(_0xe96a('0x6'))(_0xe96a('0x7'));var config=require(_0xe96a('0x8'));var jayson=require(_0xe96a('0x9'));var client=jayson[_0xe96a('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3d07e7,_0x89878f,_0x2abfd5){return new BPromise(function(_0x3743a2,_0x4b916c){return client[_0xe96a('0xb')](_0x3d07e7,_0x2abfd5)[_0xe96a('0xc')](function(_0x4eb699){logger['info'](_0xe96a('0xd'),_0x89878f,'request\x20sent');logger[_0xe96a('0xe')](_0xe96a('0xf'),_0x89878f,_0xe96a('0x10'),JSON['stringify'](_0x4eb699));if(_0x4eb699[_0xe96a('0x11')]){if(_0x4eb699[_0xe96a('0x11')][_0xe96a('0x12')]===0x1f4){logger['error'](_0xe96a('0xd'),_0x89878f,_0x4eb699[_0xe96a('0x11')]['message']);return _0x4b916c(_0x4eb699['error'][_0xe96a('0x13')]);}logger[_0xe96a('0x11')](_0xe96a('0xd'),_0x89878f,_0x4eb699['error']['message']);return _0x3743a2(_0x4eb699[_0xe96a('0x11')][_0xe96a('0x13')]);}else{logger['info'](_0xe96a('0xd'),_0x89878f,_0xe96a('0x10'));_0x3743a2(_0x4eb699[_0xe96a('0x14')][_0xe96a('0x13')]);}})['catch'](function(_0x1a0490){logger[_0xe96a('0x11')](_0xe96a('0xd'),_0x89878f,_0x1a0490);_0x4b916c(_0x1a0490);});});}exports[_0xe96a('0x15')]=function(_0x4bc528){var _0x3e8936=this;return new Promise(function(_0x5c9a9b,_0x16303d){return db[_0xe96a('0x16')][_0xe96a('0x17')](_0x4bc528[_0xe96a('0x18')],{'raw':_0x4bc528[_0xe96a('0x19')]?_0x4bc528[_0xe96a('0x19')][_0xe96a('0x1a')]===undefined?!![]:![]:!![]})[_0xe96a('0xc')](function(_0x4fc820){logger[_0xe96a('0x1b')](_0xe96a('0x15'),_0x4bc528);logger[_0xe96a('0xe')](_0xe96a('0x15'),_0x4bc528,JSON[_0xe96a('0x1c')](_0x4fc820));_0x5c9a9b(_0x4fc820);})[_0xe96a('0x1d')](function(_0x2013a0){logger[_0xe96a('0x11')]('CreateSmsQueueReport',_0x2013a0['message'],_0x4bc528);_0x16303d(_0x3e8936[_0xe96a('0x11')](0x1f4,_0x2013a0[_0xe96a('0x13')]));});});};exports[_0xe96a('0x1e')]=function(_0x50f393){var _0x117d12=this;return new Promise(function(_0x1b2c52,_0x15948d){return db[_0xe96a('0x16')]['update'](_0x50f393[_0xe96a('0x18')],{'raw':_0x50f393[_0xe96a('0x19')]?_0x50f393[_0xe96a('0x19')][_0xe96a('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x50f393[_0xe96a('0x19')]?_0x50f393[_0xe96a('0x19')][_0xe96a('0x1f')]||null:null,'attributes':_0x50f393[_0xe96a('0x19')]?_0x50f393[_0xe96a('0x19')][_0xe96a('0x20')]||null:null,'limit':_0x50f393[_0xe96a('0x19')]?_0x50f393[_0xe96a('0x19')][_0xe96a('0x21')]||null:null})[_0xe96a('0xc')](function(_0x9bcfed){logger['info']('UpdateSmsQueueReport',_0x50f393);logger['debug'](_0xe96a('0x1e'),_0x50f393,JSON[_0xe96a('0x1c')](_0x9bcfed));_0x1b2c52(_0x9bcfed);})[_0xe96a('0x1d')](function(_0xfe4726){logger[_0xe96a('0x11')](_0xe96a('0x1e'),_0xfe4726[_0xe96a('0x13')],_0x50f393);_0x15948d(_0x117d12[_0xe96a('0x11')](0x1f4,_0xfe4726[_0xe96a('0x13')]));});});};
\ No newline at end of file
index 8e2ff3c..ecfee77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1224=['../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x1e2018,_0xf72ec9){var _0x73abb4=function(_0x118e79){while(--_0x118e79){_0x1e2018['push'](_0x1e2018['shift']());}};_0x73abb4(++_0xf72ec9);}(_0x1224,0x10d));var _0x4122=function(_0x29e871,_0x330b98){_0x29e871=_0x29e871-0x0;var _0x3380e3=_0x1224[_0x29e871];return _0x3380e3;};'use strict';var multer=require(_0x4122('0x0'));var util=require(_0x4122('0x1'));var path=require(_0x4122('0x2'));var timeout=require(_0x4122('0x3'));var express=require(_0x4122('0x4'));var router=express[_0x4122('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x4122('0x6'));var interaction=require(_0x4122('0x7'));var config=require(_0x4122('0x8'));var controller=require('./smsTransferReport.controller');router[_0x4122('0x9')]('/',auth[_0x4122('0xa')](),controller[_0x4122('0xb')]);router[_0x4122('0x9')](_0x4122('0xc'),auth[_0x4122('0xa')](),controller[_0x4122('0xd')]);router[_0x4122('0x9')](_0x4122('0xe'),auth[_0x4122('0xa')](),controller[_0x4122('0xf')]);router[_0x4122('0x10')]('/',auth[_0x4122('0xa')](),controller[_0x4122('0x11')]);router[_0x4122('0x12')](_0x4122('0xe'),auth[_0x4122('0xa')](),controller[_0x4122('0x13')]);router[_0x4122('0x14')](_0x4122('0xe'),auth[_0x4122('0xa')](),controller[_0x4122('0x15')]);module[_0x4122('0x16')]=router;
\ No newline at end of file
+var _0xe181=['/describe','isAuthenticated','describe','show','post','create','put','update','delete','/:id','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsTransferReport.controller','index','get'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe181,0x68));var _0x1e18=function(_0x2f653f,_0x1cef4e){_0x2f653f=_0x2f653f-0x0;var _0x479836=_0xe181[_0x2f653f];return _0x479836;};'use strict';var multer=require(_0x1e18('0x0'));var util=require('util');var path=require(_0x1e18('0x1'));var timeout=require(_0x1e18('0x2'));var express=require(_0x1e18('0x3'));var router=express[_0x1e18('0x4')]();var fs_extra=require(_0x1e18('0x5'));var auth=require(_0x1e18('0x6'));var interaction=require(_0x1e18('0x7'));var config=require('../../config/environment');var controller=require(_0x1e18('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x1e18('0x9')]);router[_0x1e18('0xa')](_0x1e18('0xb'),auth[_0x1e18('0xc')](),controller[_0x1e18('0xd')]);router[_0x1e18('0xa')]('/:id',auth[_0x1e18('0xc')](),controller[_0x1e18('0xe')]);router[_0x1e18('0xf')]('/',auth[_0x1e18('0xc')](),controller[_0x1e18('0x10')]);router[_0x1e18('0x11')]('/:id',auth[_0x1e18('0xc')](),controller[_0x1e18('0x12')]);router[_0x1e18('0x13')](_0x1e18('0x14'),auth[_0x1e18('0xc')](),controller[_0x1e18('0x15')]);module[_0x1e18('0x16')]=router;
\ No newline at end of file
index e84fcaa..6e688c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['moment','sequelize','ENUM','queue','DATE'];(function(_0x123650,_0x35faac){var _0x1fcc93=function(_0x1658b9){while(--_0x1658b9){_0x123650['push'](_0x123650['shift']());}};_0x1fcc93(++_0x35faac);}(_0x4b84,0x1cc));var _0x44b8=function(_0x9a3e0f,_0x2f796d){_0x9a3e0f=_0x9a3e0f-0x0;var _0x3d2a9a=_0x4b84[_0x9a3e0f];return _0x3d2a9a;};'use strict';var moment=require(_0x44b8('0x0'));var Sequelize=require(_0x44b8('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x44b8('0x2')]('account','agent',_0x44b8('0x3')),'allowNull':![],'defaultValue':_0x44b8('0x3')},'transferredAt':{'type':Sequelize[_0x44b8('0x4')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x2714ec,_0x36daa4){var _0x2608e5=function(_0x408468){while(--_0x408468){_0x2714ec['push'](_0x2714ec['shift']());}};_0x2608e5(++_0x36daa4);}(_0x9bde,0xe1));var _0xe9bd=function(_0x8cbfeb,_0x56951d){_0x8cbfeb=_0x8cbfeb-0x0;var _0x16596e=_0x9bde[_0x8cbfeb];return _0x16596e;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
index 66086bd..fd77f48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5ae=['fields','attributes','length','nolimit','limit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','fs-extra','lodash','squel','crypto','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','offset','undefined','count','status','json','reject','save','update','destroy','then','error','stack','name','send','map','SmsTransferReport','rawAttributes','fieldName','type','key','query','keys','model','intersection'];(function(_0x21d799,_0x22fb73){var _0x230ed0=function(_0x1bce7a){while(--_0x1bce7a){_0x21d799['push'](_0x21d799['shift']());}};_0x230ed0(++_0x22fb73);}(_0xe5ae,0x186));var _0xee5a=function(_0x499210,_0x325b29){_0x499210=_0x499210-0x0;var _0x2e153d=_0xe5ae[_0x499210];return _0x2e153d;};'use strict';var emlformat=require(_0xee5a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xee5a('0x1'));var jsonpatch=require(_0xee5a('0x2'));var rp=require(_0xee5a('0x3'));var moment=require(_0xee5a('0x4'));var BPromise=require(_0xee5a('0x5'));var Mustache=require('mustache');var util=require(_0xee5a('0x6'));var path=require(_0xee5a('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xee5a('0x8'));var _=require(_0xee5a('0x9'));var squel=require(_0xee5a('0xa'));var crypto=require(_0xee5a('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xee5a('0xc'));var querystring=require(_0xee5a('0xd'));var Papa=require('papaparse');var Redis=require(_0xee5a('0xe'));var authService=require(_0xee5a('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xee5a('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xee5a('0x11'))(_0xee5a('0x12'));var utils=require(_0xee5a('0x13'));var config=require(_0xee5a('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xee5a('0x15'))['db'];function respondWithStatusCode(_0x430aef,_0x559319){_0x559319=_0x559319||0xcc;return function(_0x27f102){if(_0x27f102){return _0x430aef[_0xee5a('0x16')](_0x559319);}return _0x430aef['status'](_0x559319)[_0xee5a('0x17')]();};}function respondWithResult(_0x43d39d,_0xec2afa){_0xec2afa=_0xec2afa||0xc8;return function(_0x456d18){if(_0x456d18){return _0x43d39d['status'](_0xec2afa)['json'](_0x456d18);}};}function respondWithFilteredResult(_0x5a0fc5,_0x5e260f){return function(_0x430cbd){if(_0x430cbd){var _0x56a558=typeof _0x5e260f[_0xee5a('0x18')]===_0xee5a('0x19')&&typeof _0x5e260f['limit']===_0xee5a('0x19');var _0x2217b0=_0x430cbd[_0xee5a('0x1a')];var _0x1fb0c1=_0x56a558?0x0:_0x5e260f[_0xee5a('0x18')];var _0x1af20c=_0x56a558?_0x430cbd[_0xee5a('0x1a')]:_0x5e260f[_0xee5a('0x18')]+_0x5e260f['limit'];var _0x31b1cf;if(_0x1af20c>=_0x2217b0){_0x1af20c=_0x2217b0;_0x31b1cf=0xc8;}else{_0x31b1cf=0xce;}_0x5a0fc5[_0xee5a('0x1b')](_0x31b1cf);return _0x5a0fc5['set']('Content-Range',_0x1fb0c1+'-'+_0x1af20c+'/'+_0x2217b0)[_0xee5a('0x1c')](_0x430cbd);}return null;};}function patchUpdates(_0x3ad1f9){return function(_0x2af120){try{jsonpatch['apply'](_0x2af120,_0x3ad1f9,!![]);}catch(_0x1bb682){return BPromise[_0xee5a('0x1d')](_0x1bb682);}return _0x2af120[_0xee5a('0x1e')]();};}function saveUpdates(_0x1e3971,_0x3ff11e){return function(_0xa28ab2){if(_0xa28ab2){return _0xa28ab2[_0xee5a('0x1f')](_0x1e3971)['then'](function(_0xea04b1){return _0xea04b1;});}return null;};}function removeEntity(_0x3dd12c,_0x217655){return function(_0x3afcca){if(_0x3afcca){return _0x3afcca[_0xee5a('0x20')]()[_0xee5a('0x21')](function(){_0x3dd12c['status'](0xcc)[_0xee5a('0x17')]();});}};}function handleEntityNotFound(_0x3cf068,_0x559b9e){return function(_0x1de749){if(!_0x1de749){_0x3cf068[_0xee5a('0x16')](0x194);}return _0x1de749;};}function handleError(_0x1ff5a3,_0x47e2c4){_0x47e2c4=_0x47e2c4||0x1f4;return function(_0x14650b){logger[_0xee5a('0x22')](_0x14650b[_0xee5a('0x23')]);if(_0x14650b[_0xee5a('0x24')]){delete _0x14650b['name'];}_0x1ff5a3[_0xee5a('0x1b')](_0x47e2c4)[_0xee5a('0x25')](_0x14650b);};}exports['index']=function(_0x5c9ecd,_0x9f68d6){var _0xed11e1={},_0x5cb51f={},_0x46ac42={'count':0x0,'rows':[]};var _0x51079c=_[_0xee5a('0x26')](db[_0xee5a('0x27')][_0xee5a('0x28')],function(_0x3b6357){return{'name':_0x3b6357[_0xee5a('0x29')],'type':_0x3b6357[_0xee5a('0x2a')][_0xee5a('0x2b')]};});_0x5cb51f['model']=_[_0xee5a('0x26')](_0x51079c,_0xee5a('0x24'));_0x5cb51f[_0xee5a('0x2c')]=_[_0xee5a('0x2d')](_0x5c9ecd[_0xee5a('0x2c')]);_0x5cb51f['filters']=_['intersection'](_0x5cb51f[_0xee5a('0x2e')],_0x5cb51f[_0xee5a('0x2c')]);_0xed11e1['attributes']=_[_0xee5a('0x2f')](_0x5cb51f[_0xee5a('0x2e')],qs[_0xee5a('0x30')](_0x5c9ecd['query'][_0xee5a('0x30')]));_0xed11e1['attributes']=_0xed11e1[_0xee5a('0x31')][_0xee5a('0x32')]?_0xed11e1['attributes']:_0x5cb51f[_0xee5a('0x2e')];if(!_0x5c9ecd[_0xee5a('0x2c')]['hasOwnProperty'](_0xee5a('0x33'))){_0xed11e1['limit']=qs['limit'](_0x5c9ecd['query'][_0xee5a('0x34')]);_0xed11e1['offset']=qs[_0xee5a('0x18')](_0x5c9ecd[_0xee5a('0x2c')][_0xee5a('0x18')]);}_0xed11e1[_0xee5a('0x35')]=qs[_0xee5a('0x36')](_0x5c9ecd[_0xee5a('0x2c')][_0xee5a('0x36')]);_0xed11e1[_0xee5a('0x37')]=qs[_0xee5a('0x38')](_[_0xee5a('0x39')](_0x5c9ecd[_0xee5a('0x2c')],_0x5cb51f[_0xee5a('0x38')]),_0x51079c);if(_0x5c9ecd[_0xee5a('0x2c')][_0xee5a('0x3a')]){_0xed11e1[_0xee5a('0x37')]=_['merge'](_0xed11e1[_0xee5a('0x37')],{'$or':_[_0xee5a('0x26')](_0x51079c,function(_0x451e39){if(_0x451e39['type']!==_0xee5a('0x3b')){var _0x221d75={};_0x221d75[_0x451e39[_0xee5a('0x24')]]={'$like':'%'+_0x5c9ecd['query'][_0xee5a('0x3a')]+'%'};return _0x221d75;}})});}_0xed11e1=_[_0xee5a('0x3c')]({},_0xed11e1,_0x5c9ecd[_0xee5a('0x3d')]);var _0x118fb5={'where':_0xed11e1['where']};return db[_0xee5a('0x27')]['count'](_0x118fb5)[_0xee5a('0x21')](function(_0x59fa75){_0x46ac42[_0xee5a('0x1a')]=_0x59fa75;if(_0x5c9ecd[_0xee5a('0x2c')][_0xee5a('0x3e')]){_0xed11e1[_0xee5a('0x3f')]=[{'all':!![]}];}return db[_0xee5a('0x27')][_0xee5a('0x40')](_0xed11e1);})[_0xee5a('0x21')](function(_0xfdb6e5){_0x46ac42[_0xee5a('0x41')]=_0xfdb6e5;return _0x46ac42;})['then'](respondWithFilteredResult(_0x9f68d6,_0xed11e1))[_0xee5a('0x42')](handleError(_0x9f68d6,null));};exports[_0xee5a('0x43')]=function(_0x3746d3,_0x91534a){var _0x2b1659={'raw':!![],'where':{'id':_0x3746d3[_0xee5a('0x44')]['id']}},_0x5761be={};_0x5761be['model']=_['keys'](db['SmsTransferReport'][_0xee5a('0x28')]);_0x5761be['query']=_[_0xee5a('0x2d')](_0x3746d3[_0xee5a('0x2c')]);_0x5761be[_0xee5a('0x38')]=_[_0xee5a('0x2f')](_0x5761be[_0xee5a('0x2e')],_0x5761be[_0xee5a('0x2c')]);_0x2b1659[_0xee5a('0x31')]=_['intersection'](_0x5761be[_0xee5a('0x2e')],qs['fields'](_0x3746d3[_0xee5a('0x2c')]['fields']));_0x2b1659['attributes']=_0x2b1659[_0xee5a('0x31')][_0xee5a('0x32')]?_0x2b1659[_0xee5a('0x31')]:_0x5761be['model'];if(_0x3746d3['query'][_0xee5a('0x3e')]){_0x2b1659['include']=[{'all':!![]}];}_0x2b1659=_[_0xee5a('0x3c')]({},_0x2b1659,_0x3746d3['options']);return db[_0xee5a('0x27')]['find'](_0x2b1659)[_0xee5a('0x21')](handleEntityNotFound(_0x91534a,null))[_0xee5a('0x21')](respondWithResult(_0x91534a,null))[_0xee5a('0x42')](handleError(_0x91534a,null));};exports[_0xee5a('0x45')]=function(_0x42231b,_0x158dfc){return db[_0xee5a('0x27')][_0xee5a('0x45')](_0x42231b[_0xee5a('0x46')],{})[_0xee5a('0x21')](respondWithResult(_0x158dfc,0xc9))[_0xee5a('0x42')](handleError(_0x158dfc,null));};exports['update']=function(_0x5a8962,_0x5a3d27){if(_0x5a8962['body']['id']){delete _0x5a8962['body']['id'];}return db[_0xee5a('0x27')][_0xee5a('0x47')]({'where':{'id':_0x5a8962[_0xee5a('0x44')]['id']}})[_0xee5a('0x21')](handleEntityNotFound(_0x5a3d27,null))[_0xee5a('0x21')](saveUpdates(_0x5a8962['body'],null))[_0xee5a('0x21')](respondWithResult(_0x5a3d27,null))['catch'](handleError(_0x5a3d27,null));};exports[_0xee5a('0x20')]=function(_0x2a0d98,_0x15777c){return db[_0xee5a('0x27')][_0xee5a('0x47')]({'where':{'id':_0x2a0d98[_0xee5a('0x44')]['id']}})[_0xee5a('0x21')](handleEntityNotFound(_0x15777c,null))[_0xee5a('0x21')](removeEntity(_0x15777c,null))[_0xee5a('0x42')](handleError(_0x15777c,null));};exports[_0xee5a('0x48')]=function(_0xe1c05e,_0x1306fc){return db[_0xee5a('0x27')]['describe']()[_0xee5a('0x21')](respondWithResult(_0x1306fc,null))[_0xee5a('0x42')](handleError(_0x1306fc,null));};
\ No newline at end of file
+var _0x0999=['limit','set','apply','reject','save','update','destroy','then','error','name','send','index','map','SmsTransferReport','rawAttributes','fieldName','type','key','model','attributes','intersection','query','fields','length','nolimit','order','sort','filters','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','params','keys','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','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/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count'];(function(_0x1b3564,_0x16c919){var _0x504069=function(_0x9322b6){while(--_0x9322b6){_0x1b3564['push'](_0x1b3564['shift']());}};_0x504069(++_0x16c919);}(_0x0999,0x1b2));var _0x9099=function(_0x53f0db,_0x35c67c){_0x53f0db=_0x53f0db-0x0;var _0xae0a5c=_0x0999[_0x53f0db];return _0xae0a5c;};'use strict';var emlformat=require(_0x9099('0x0'));var rimraf=require(_0x9099('0x1'));var zipdir=require(_0x9099('0x2'));var jsonpatch=require(_0x9099('0x3'));var rp=require(_0x9099('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x9099('0x5'));var path=require(_0x9099('0x6'));var sox=require(_0x9099('0x7'));var csv=require(_0x9099('0x8'));var ejs=require(_0x9099('0x9'));var fs=require('fs');var fs_extra=require(_0x9099('0xa'));var _=require(_0x9099('0xb'));var squel=require('squel');var crypto=require(_0x9099('0xc'));var jsforce=require(_0x9099('0xd'));var deskjs=require(_0x9099('0xe'));var toCsv=require(_0x9099('0x8'));var querystring=require(_0x9099('0xf'));var Papa=require(_0x9099('0x10'));var Redis=require(_0x9099('0x11'));var authService=require(_0x9099('0x12'));var qs=require(_0x9099('0x13'));var as=require(_0x9099('0x14'));var hardwareService=require(_0x9099('0x15'));var logger=require(_0x9099('0x16'))(_0x9099('0x17'));var utils=require(_0x9099('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x9099('0x19'));var db=require(_0x9099('0x1a'))['db'];function respondWithStatusCode(_0x1f5816,_0x50b68f){_0x50b68f=_0x50b68f||0xcc;return function(_0x3132fe){if(_0x3132fe){return _0x1f5816[_0x9099('0x1b')](_0x50b68f);}return _0x1f5816[_0x9099('0x1c')](_0x50b68f)[_0x9099('0x1d')]();};}function respondWithResult(_0x4b75b6,_0x266d1f){_0x266d1f=_0x266d1f||0xc8;return function(_0x261cf8){if(_0x261cf8){return _0x4b75b6['status'](_0x266d1f)[_0x9099('0x1e')](_0x261cf8);}};}function respondWithFilteredResult(_0xcde811,_0x457466){return function(_0x56161a){if(_0x56161a){var _0x47c4a1=typeof _0x457466[_0x9099('0x1f')]===_0x9099('0x20')&&typeof _0x457466['limit']===_0x9099('0x20');var _0x282090=_0x56161a[_0x9099('0x21')];var _0xeb3af=_0x47c4a1?0x0:_0x457466[_0x9099('0x1f')];var _0x1a9578=_0x47c4a1?_0x56161a[_0x9099('0x21')]:_0x457466['offset']+_0x457466[_0x9099('0x22')];var _0x3d7177;if(_0x1a9578>=_0x282090){_0x1a9578=_0x282090;_0x3d7177=0xc8;}else{_0x3d7177=0xce;}_0xcde811[_0x9099('0x1c')](_0x3d7177);return _0xcde811[_0x9099('0x23')]('Content-Range',_0xeb3af+'-'+_0x1a9578+'/'+_0x282090)[_0x9099('0x1e')](_0x56161a);}return null;};}function patchUpdates(_0x5dac6d){return function(_0x45f0aa){try{jsonpatch[_0x9099('0x24')](_0x45f0aa,_0x5dac6d,!![]);}catch(_0xa38cc3){return BPromise[_0x9099('0x25')](_0xa38cc3);}return _0x45f0aa[_0x9099('0x26')]();};}function saveUpdates(_0xf6e561,_0x3a3855){return function(_0x22b8c8){if(_0x22b8c8){return _0x22b8c8[_0x9099('0x27')](_0xf6e561)['then'](function(_0x5849bf){return _0x5849bf;});}return null;};}function removeEntity(_0x348793,_0x501432){return function(_0x44bcc0){if(_0x44bcc0){return _0x44bcc0[_0x9099('0x28')]()[_0x9099('0x29')](function(){_0x348793['status'](0xcc)[_0x9099('0x1d')]();});}};}function handleEntityNotFound(_0xd3c576,_0x33a861){return function(_0x301402){if(!_0x301402){_0xd3c576[_0x9099('0x1b')](0x194);}return _0x301402;};}function handleError(_0x4974a2,_0x4504f6){_0x4504f6=_0x4504f6||0x1f4;return function(_0x287cc8){logger[_0x9099('0x2a')](_0x287cc8['stack']);if(_0x287cc8[_0x9099('0x2b')]){delete _0x287cc8['name'];}_0x4974a2[_0x9099('0x1c')](_0x4504f6)[_0x9099('0x2c')](_0x287cc8);};}exports[_0x9099('0x2d')]=function(_0x4a8cd9,_0x19af6f){var _0x3c2e60={},_0x37749e={},_0x273393={'count':0x0,'rows':[]};var _0x3f34eb=_[_0x9099('0x2e')](db[_0x9099('0x2f')][_0x9099('0x30')],function(_0x15d836){return{'name':_0x15d836[_0x9099('0x31')],'type':_0x15d836[_0x9099('0x32')][_0x9099('0x33')]};});_0x37749e[_0x9099('0x34')]=_[_0x9099('0x2e')](_0x3f34eb,_0x9099('0x2b'));_0x37749e['query']=_['keys'](_0x4a8cd9['query']);_0x37749e['filters']=_['intersection'](_0x37749e[_0x9099('0x34')],_0x37749e['query']);_0x3c2e60[_0x9099('0x35')]=_[_0x9099('0x36')](_0x37749e[_0x9099('0x34')],qs['fields'](_0x4a8cd9[_0x9099('0x37')][_0x9099('0x38')]));_0x3c2e60[_0x9099('0x35')]=_0x3c2e60[_0x9099('0x35')][_0x9099('0x39')]?_0x3c2e60['attributes']:_0x37749e['model'];if(!_0x4a8cd9['query']['hasOwnProperty'](_0x9099('0x3a'))){_0x3c2e60[_0x9099('0x22')]=qs['limit'](_0x4a8cd9[_0x9099('0x37')][_0x9099('0x22')]);_0x3c2e60['offset']=qs[_0x9099('0x1f')](_0x4a8cd9[_0x9099('0x37')][_0x9099('0x1f')]);}_0x3c2e60[_0x9099('0x3b')]=qs['sort'](_0x4a8cd9[_0x9099('0x37')][_0x9099('0x3c')]);_0x3c2e60['where']=qs[_0x9099('0x3d')](_[_0x9099('0x3e')](_0x4a8cd9[_0x9099('0x37')],_0x37749e[_0x9099('0x3d')]),_0x3f34eb);if(_0x4a8cd9[_0x9099('0x37')][_0x9099('0x3f')]){_0x3c2e60[_0x9099('0x40')]=_[_0x9099('0x41')](_0x3c2e60['where'],{'$or':_['map'](_0x3f34eb,function(_0x590cea){if(_0x590cea[_0x9099('0x32')]!=='VIRTUAL'){var _0x1fb89b={};_0x1fb89b[_0x590cea['name']]={'$like':'%'+_0x4a8cd9[_0x9099('0x37')]['filter']+'%'};return _0x1fb89b;}})});}_0x3c2e60=_['merge']({},_0x3c2e60,_0x4a8cd9[_0x9099('0x42')]);var _0x153a28={'where':_0x3c2e60[_0x9099('0x40')]};return db[_0x9099('0x2f')][_0x9099('0x21')](_0x153a28)['then'](function(_0x2b7f9f){_0x273393['count']=_0x2b7f9f;if(_0x4a8cd9[_0x9099('0x37')][_0x9099('0x43')]){_0x3c2e60[_0x9099('0x44')]=[{'all':!![]}];}return db[_0x9099('0x2f')][_0x9099('0x45')](_0x3c2e60);})['then'](function(_0x4961b1){_0x273393[_0x9099('0x46')]=_0x4961b1;return _0x273393;})[_0x9099('0x29')](respondWithFilteredResult(_0x19af6f,_0x3c2e60))[_0x9099('0x47')](handleError(_0x19af6f,null));};exports['show']=function(_0xe5be98,_0x155dbd){var _0x48e3ca={'raw':!![],'where':{'id':_0xe5be98[_0x9099('0x48')]['id']}},_0x220fd0={};_0x220fd0[_0x9099('0x34')]=_[_0x9099('0x49')](db[_0x9099('0x2f')][_0x9099('0x30')]);_0x220fd0[_0x9099('0x37')]=_[_0x9099('0x49')](_0xe5be98['query']);_0x220fd0['filters']=_[_0x9099('0x36')](_0x220fd0[_0x9099('0x34')],_0x220fd0[_0x9099('0x37')]);_0x48e3ca[_0x9099('0x35')]=_[_0x9099('0x36')](_0x220fd0[_0x9099('0x34')],qs[_0x9099('0x38')](_0xe5be98[_0x9099('0x37')][_0x9099('0x38')]));_0x48e3ca[_0x9099('0x35')]=_0x48e3ca[_0x9099('0x35')][_0x9099('0x39')]?_0x48e3ca[_0x9099('0x35')]:_0x220fd0[_0x9099('0x34')];if(_0xe5be98['query'][_0x9099('0x43')]){_0x48e3ca[_0x9099('0x44')]=[{'all':!![]}];}_0x48e3ca=_[_0x9099('0x41')]({},_0x48e3ca,_0xe5be98[_0x9099('0x42')]);return db[_0x9099('0x2f')][_0x9099('0x4a')](_0x48e3ca)[_0x9099('0x29')](handleEntityNotFound(_0x155dbd,null))[_0x9099('0x29')](respondWithResult(_0x155dbd,null))[_0x9099('0x47')](handleError(_0x155dbd,null));};exports[_0x9099('0x4b')]=function(_0x16ae41,_0x125616){return db[_0x9099('0x2f')][_0x9099('0x4b')](_0x16ae41['body'],{})['then'](respondWithResult(_0x125616,0xc9))[_0x9099('0x47')](handleError(_0x125616,null));};exports[_0x9099('0x27')]=function(_0x172c9e,_0x389295){if(_0x172c9e[_0x9099('0x4c')]['id']){delete _0x172c9e['body']['id'];}return db[_0x9099('0x2f')][_0x9099('0x4a')]({'where':{'id':_0x172c9e[_0x9099('0x48')]['id']}})[_0x9099('0x29')](handleEntityNotFound(_0x389295,null))['then'](saveUpdates(_0x172c9e['body'],null))[_0x9099('0x29')](respondWithResult(_0x389295,null))[_0x9099('0x47')](handleError(_0x389295,null));};exports['destroy']=function(_0x42f9ed,_0xe82035){return db[_0x9099('0x2f')][_0x9099('0x4a')]({'where':{'id':_0x42f9ed[_0x9099('0x48')]['id']}})[_0x9099('0x29')](handleEntityNotFound(_0xe82035,null))[_0x9099('0x29')](removeEntity(_0xe82035,null))[_0x9099('0x47')](handleError(_0xe82035,null));};exports['describe']=function(_0x2e1a55,_0xaef3ca){return db[_0x9099('0x2f')][_0x9099('0x4d')]()[_0x9099('0x29')](respondWithResult(_0xaef3ca,null))[_0x9099('0x47')](handleError(_0xaef3ca,null));};
\ No newline at end of file
index fb8474f..30d6932 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3248=['SmsTransferReport','report_sms_transfer','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./smsTransferReport.attributes','define'];(function(_0x5c110f,_0x3c4bd8){var _0x5ebfc5=function(_0x2549df){while(--_0x2549df){_0x5c110f['push'](_0x5c110f['shift']());}};_0x5ebfc5(++_0x3c4bd8);}(_0x3248,0x1b0));var _0x8324=function(_0x9c7acc,_0x4dccb5){_0x9c7acc=_0x9c7acc-0x0;var _0x2a7873=_0x3248[_0x9c7acc];return _0x2a7873;};'use strict';var _=require(_0x8324('0x0'));var util=require(_0x8324('0x1'));var logger=require(_0x8324('0x2'))(_0x8324('0x3'));var moment=require(_0x8324('0x4'));var BPromise=require(_0x8324('0x5'));var rp=require(_0x8324('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8324('0x7'));var attributes=require(_0x8324('0x8'));module['exports']=function(_0x18edd2,_0x283f5f){return _0x18edd2[_0x8324('0x9')](_0x8324('0xa'),attributes,{'tableName':_0x8324('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x8324('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x34aa=['exports','define','SmsTransferReport','report_sms_transfer','uniqueid','lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./smsTransferReport.attributes'];(function(_0x1f2c15,_0x202189){var _0x16a8bf=function(_0x2dbdca){while(--_0x2dbdca){_0x1f2c15['push'](_0x1f2c15['shift']());}};_0x16a8bf(++_0x202189);}(_0x34aa,0x171));var _0xa34a=function(_0x5f08a6,_0x400121){_0x5f08a6=_0x5f08a6-0x0;var _0x5d0641=_0x34aa[_0x5f08a6];return _0x5d0641;};'use strict';var _=require(_0xa34a('0x0'));var util=require('util');var logger=require(_0xa34a('0x1'))(_0xa34a('0x2'));var moment=require(_0xa34a('0x3'));var BPromise=require(_0xa34a('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa34a('0x5'));var rimraf=require(_0xa34a('0x6'));var config=require(_0xa34a('0x7'));var attributes=require(_0xa34a('0x8'));module[_0xa34a('0x9')]=function(_0x475f8f,_0x27349c){return _0x475f8f[_0xa34a('0xa')](_0xa34a('0xb'),attributes,{'tableName':_0xa34a('0xc'),'paranoid':![],'indexes':[{'name':_0xa34a('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 809a68a..3db77bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31af=['client','http','request','then','info','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x31af,0xde));var _0xf31a=function(_0x223715,_0x43336e){_0x223715=_0x223715-0x0;var _0x528f91=_0x31af[_0x223715];return _0x528f91;};'use strict';var _=require(_0xf31a('0x0'));var util=require(_0xf31a('0x1'));var moment=require(_0xf31a('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf31a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xf31a('0x4'));var logger=require(_0xf31a('0x5'))(_0xf31a('0x6'));var config=require(_0xf31a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf31a('0x8')][_0xf31a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x405926,_0x1dc7cc,_0x47b7a1){return new BPromise(function(_0x31f8e7,_0xe5778a){return client[_0xf31a('0xa')](_0x405926,_0x47b7a1)[_0xf31a('0xb')](function(_0x48cc46){logger[_0xf31a('0xc')](_0xf31a('0xd'),_0x1dc7cc,_0xf31a('0xe'));logger[_0xf31a('0xf')](_0xf31a('0x10'),_0x1dc7cc,'request\x20sent',JSON[_0xf31a('0x11')](_0x48cc46));if(_0x48cc46[_0xf31a('0x12')]){if(_0x48cc46[_0xf31a('0x12')][_0xf31a('0x13')]===0x1f4){logger['error'](_0xf31a('0xd'),_0x1dc7cc,_0x48cc46[_0xf31a('0x12')]['message']);return _0xe5778a(_0x48cc46[_0xf31a('0x12')][_0xf31a('0x14')]);}logger[_0xf31a('0x12')](_0xf31a('0xd'),_0x1dc7cc,_0x48cc46[_0xf31a('0x12')][_0xf31a('0x14')]);return _0x31f8e7(_0x48cc46[_0xf31a('0x12')][_0xf31a('0x14')]);}else{logger[_0xf31a('0xc')](_0xf31a('0xd'),_0x1dc7cc,_0xf31a('0xe'));_0x31f8e7(_0x48cc46[_0xf31a('0x15')][_0xf31a('0x14')]);}})[_0xf31a('0x16')](function(_0x1429c8){logger['error'](_0xf31a('0xd'),_0x1dc7cc,_0x1429c8);_0xe5778a(_0x1429c8);});});}
\ No newline at end of file
+var _0xf0ba=['rpc','jayson/promise','then','info','request\x20sent','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsTransferReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xf0ba,0x1ed));var _0xaf0b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf0ba[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xaf0b('0x0'));var util=require(_0xaf0b('0x1'));var moment=require(_0xaf0b('0x2'));var BPromise=require(_0xaf0b('0x3'));var rs=require(_0xaf0b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaf0b('0x5'))['db'];var utils=require(_0xaf0b('0x6'));var logger=require('../../config/logger')(_0xaf0b('0x7'));var config=require('../../config/environment');var jayson=require(_0xaf0b('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x53b32d,_0x1d260e,_0x17b6d5){return new BPromise(function(_0x3439d5,_0xd67a9){return client['request'](_0x53b32d,_0x17b6d5)[_0xaf0b('0x9')](function(_0x4242b1){logger[_0xaf0b('0xa')]('SmsTransferReport,\x20%s,\x20%s',_0x1d260e,_0xaf0b('0xb'));logger['debug'](_0xaf0b('0xc'),_0x1d260e,_0xaf0b('0xb'),JSON[_0xaf0b('0xd')](_0x4242b1));if(_0x4242b1['error']){if(_0x4242b1[_0xaf0b('0xe')][_0xaf0b('0xf')]===0x1f4){logger[_0xaf0b('0xe')](_0xaf0b('0x10'),_0x1d260e,_0x4242b1[_0xaf0b('0xe')][_0xaf0b('0x11')]);return _0xd67a9(_0x4242b1['error'][_0xaf0b('0x11')]);}logger[_0xaf0b('0xe')](_0xaf0b('0x10'),_0x1d260e,_0x4242b1[_0xaf0b('0xe')]['message']);return _0x3439d5(_0x4242b1[_0xaf0b('0xe')][_0xaf0b('0x11')]);}else{logger[_0xaf0b('0xa')](_0xaf0b('0x10'),_0x1d260e,_0xaf0b('0xb'));_0x3439d5(_0x4242b1[_0xaf0b('0x12')][_0xaf0b('0x11')]);}})[_0xaf0b('0x13')](function(_0x4885da){logger[_0xaf0b('0xe')]('SmsTransferReport,\x20%s,\x20%s',_0x1d260e,_0x4885da);_0xd67a9(_0x4885da);});});}
\ No newline at end of file
index 356289c..1b023bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93c7=['server/files/sounds/original/','originalname','replace','format','basename','extname','now','post','file','create','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../config/environment','./sound.controller','get','isAuthenticated','index','/:id','show','/:id/download','diskStorage','root'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x93c7,0x13a));var _0x793c=function(_0x164126,_0x139cac){_0x164126=_0x164126-0x0;var _0x31d4fd=_0x93c7[_0x164126];return _0x31d4fd;};'use strict';var multer=require(_0x793c('0x0'));var util=require(_0x793c('0x1'));var path=require(_0x793c('0x2'));var timeout=require(_0x793c('0x3'));var express=require('express');var router=express[_0x793c('0x4')]();var fs_extra=require(_0x793c('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x793c('0x6'));var controller=require(_0x793c('0x7'));router[_0x793c('0x8')]('/',auth[_0x793c('0x9')](),controller[_0x793c('0xa')]);router[_0x793c('0x8')](_0x793c('0xb'),auth[_0x793c('0x9')](),controller[_0x793c('0xc')]);router[_0x793c('0x8')](_0x793c('0xd'),auth[_0x793c('0x9')](),controller['download']);var upload=multer({'storage':multer[_0x793c('0xe')]({'destination':function(_0x4e2438,_0x20e93f,_0x47b3f9){_0x47b3f9(null,path['join'](config[_0x793c('0xf')],_0x793c('0x10')));},'filename':function(_0x24cdf1,_0x38c76a,_0x4af2fa){_0x38c76a[_0x793c('0x11')]=_0x38c76a[_0x793c('0x11')][_0x793c('0x12')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x4af2fa(null,util[_0x793c('0x13')]('%s-%s%s',path[_0x793c('0x14')](_0x38c76a[_0x793c('0x11')],path[_0x793c('0x15')](_0x38c76a[_0x793c('0x11')])),Date[_0x793c('0x16')](),path[_0x793c('0x15')](_0x38c76a[_0x793c('0x11')])));}})});router[_0x793c('0x17')]('/',upload['single'](_0x793c('0x18')),controller[_0x793c('0x19')]);router[_0x793c('0x1a')](_0x793c('0xb'),auth['isAuthenticated'](),controller[_0x793c('0x1b')]);router['delete'](_0x793c('0xb'),auth[_0x793c('0x9')](),controller[_0x793c('0x1c')]);module[_0x793c('0x1d')]=router;
\ No newline at end of file
+var _0xacaf=['util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./sound.controller','get','/:id','isAuthenticated','show','/:id/download','download','diskStorage','join','root','originalname','format','basename','extname','now','post','create','put','delete','multer'];(function(_0xce95ca,_0xc100aa){var _0x1b2fd0=function(_0x2203a3){while(--_0x2203a3){_0xce95ca['push'](_0xce95ca['shift']());}};_0x1b2fd0(++_0xc100aa);}(_0xacaf,0xbc));var _0xfaca=function(_0x54de5d,_0x1f8b26){_0x54de5d=_0x54de5d-0x0;var _0x1b349e=_0xacaf[_0x54de5d];return _0x1b349e;};'use strict';var multer=require(_0xfaca('0x0'));var util=require(_0xfaca('0x1'));var path=require(_0xfaca('0x2'));var timeout=require(_0xfaca('0x3'));var express=require(_0xfaca('0x4'));var router=express[_0xfaca('0x5')]();var fs_extra=require(_0xfaca('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xfaca('0x7'));var config=require('../../config/environment');var controller=require(_0xfaca('0x8'));router[_0xfaca('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xfaca('0x9')](_0xfaca('0xa'),auth[_0xfaca('0xb')](),controller[_0xfaca('0xc')]);router[_0xfaca('0x9')](_0xfaca('0xd'),auth[_0xfaca('0xb')](),controller[_0xfaca('0xe')]);var upload=multer({'storage':multer[_0xfaca('0xf')]({'destination':function(_0x47d5ea,_0xfb0981,_0x33c75a){_0x33c75a(null,path[_0xfaca('0x10')](config[_0xfaca('0x11')],'server/files/sounds/original/'));},'filename':function(_0xf9517,_0x84d202,_0x76e1f8){_0x84d202['originalname']=_0x84d202[_0xfaca('0x12')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x76e1f8(null,util[_0xfaca('0x13')]('%s-%s%s',path[_0xfaca('0x14')](_0x84d202[_0xfaca('0x12')],path[_0xfaca('0x15')](_0x84d202[_0xfaca('0x12')])),Date[_0xfaca('0x16')](),path[_0xfaca('0x15')](_0x84d202[_0xfaca('0x12')])));}})});router[_0xfaca('0x17')]('/',upload['single']('file'),controller[_0xfaca('0x18')]);router[_0xfaca('0x19')]('/:id',auth[_0xfaca('0xb')](),controller['update']);router['delete'](_0xfaca('0xa'),auth['isAuthenticated'](),controller[_0xfaca('0x1a')]);module['exports']=router;
\ No newline at end of file
index 4128e10..87a2391 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x793c=['FLOAT','INTEGER','BIGINT','STRING','name'];(function(_0x204735,_0x5885fb){var _0xbd6432=function(_0x293971){while(--_0x293971){_0x204735['push'](_0x204735['shift']());}};_0xbd6432(++_0x5885fb);}(_0x793c,0x99));var _0xc793=function(_0x3fba9f,_0x3b7b9b){_0x3fba9f=_0x3fba9f-0x0;var _0x192cf1=_0x793c[_0x3fba9f];return _0x192cf1;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xc793('0x0')],'unique':_0xc793('0x1'),'allowNull':![]},'save_name':{'type':Sequelize[_0xc793('0x0')]},'display_name':{'type':Sequelize[_0xc793('0x0')],'defaultValue':''},'description':{'type':Sequelize[_0xc793('0x0')]},'original_format':{'type':Sequelize[_0xc793('0x0')]},'original_duration':{'type':Sequelize[_0xc793('0x2')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0xc793('0x3')]},'original_bitRate':{'type':Sequelize[_0xc793('0x4')]},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize[_0xc793('0x0')]},'converted_duration':{'type':Sequelize[_0xc793('0x2')]},'converted_sampleCount':{'type':Sequelize[_0xc793('0x4')]},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize['BIGINT']},'converted_sampleRate':{'type':Sequelize[_0xc793('0x3')]}};
\ No newline at end of file
+var _0xec54=['BIGINT','INTEGER','FLOAT','exports','STRING'];(function(_0x1a8913,_0x506f3a){var _0x3d084e=function(_0x4a1c3){while(--_0x4a1c3){_0x1a8913['push'](_0x1a8913['shift']());}};_0x3d084e(++_0x506f3a);}(_0xec54,0x134));var _0x4ec5=function(_0x366a21,_0x3d8368){_0x366a21=_0x366a21-0x0;var _0x2743ca=_0xec54[_0x366a21];return _0x2743ca;};'use strict';var Sequelize=require('sequelize');module[_0x4ec5('0x0')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'save_name':{'type':Sequelize[_0x4ec5('0x1')]},'display_name':{'type':Sequelize[_0x4ec5('0x1')],'defaultValue':''},'description':{'type':Sequelize[_0x4ec5('0x1')]},'original_format':{'type':Sequelize[_0x4ec5('0x1')]},'original_duration':{'type':Sequelize['FLOAT']},'original_sampleCount':{'type':Sequelize[_0x4ec5('0x2')]},'original_channelCount':{'type':Sequelize['INTEGER']},'original_bitRate':{'type':Sequelize['BIGINT']},'original_sampleRate':{'type':Sequelize[_0x4ec5('0x3')]},'converted_format':{'type':Sequelize[_0x4ec5('0x1')]},'converted_duration':{'type':Sequelize[_0x4ec5('0x4')]},'converted_sampleCount':{'type':Sequelize[_0x4ec5('0x2')]},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize[_0x4ec5('0x2')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 411abce..89a01f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4312=['sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','get','Sounds','UserProfileResource','error','stack','name','index','map','Sound','rawAttributes','type','key','query','filters','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','fields','download','find','save_name','converted_format','existsSync','root','Sequelize','ValidationError','Sound\x20not\x20found','join','server/files/sounds/converted','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','0777','transcode','send','src','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','sampleRate','converted_duration','converted_sampleCount','converted_bitRate','bitRate','converted_sampleRate','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','delete','original_format','unlinkSync','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path'];(function(_0x4b3d43,_0x3e1786){var _0x11e498=function(_0x2bb0bf){while(--_0x2bb0bf){_0x4b3d43['push'](_0x4b3d43['shift']());}};_0x11e498(++_0x3e1786);}(_0x4312,0x189));var _0x2431=function(_0x101125,_0x2c5953){_0x101125=_0x101125-0x0;var _0x40f6b0=_0x4312[_0x101125];return _0x40f6b0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2431('0x0'));var zipdir=require(_0x2431('0x1'));var jsonpatch=require(_0x2431('0x2'));var rp=require(_0x2431('0x3'));var moment=require(_0x2431('0x4'));var BPromise=require(_0x2431('0x5'));var Mustache=require(_0x2431('0x6'));var util=require(_0x2431('0x7'));var path=require(_0x2431('0x8'));var sox=require(_0x2431('0x9'));var csv=require(_0x2431('0xa'));var ejs=require(_0x2431('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2431('0xc'));var squel=require(_0x2431('0xd'));var crypto=require(_0x2431('0xe'));var jsforce=require(_0x2431('0xf'));var deskjs=require(_0x2431('0x10'));var toCsv=require('to-csv');var querystring=require(_0x2431('0x11'));var Papa=require('papaparse');var Redis=require(_0x2431('0x12'));var authService=require(_0x2431('0x13'));var qs=require(_0x2431('0x14'));var as=require(_0x2431('0x15'));var hardwareService=require(_0x2431('0x16'));var logger=require(_0x2431('0x17'))(_0x2431('0x18'));var utils=require(_0x2431('0x19'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2431('0x1a'))['db'];function respondWithStatusCode(_0x5b4881,_0x332229){_0x332229=_0x332229||0xcc;return function(_0x4b354b){if(_0x4b354b){return _0x5b4881[_0x2431('0x1b')](_0x332229);}return _0x5b4881['status'](_0x332229)[_0x2431('0x1c')]();};}function respondWithResult(_0x49c3f0,_0x294614){_0x294614=_0x294614||0xc8;return function(_0xd514f0){if(_0xd514f0){return _0x49c3f0[_0x2431('0x1d')](_0x294614)[_0x2431('0x1e')](_0xd514f0);}};}function respondWithFilteredResult(_0x2cad49,_0x8f101f){return function(_0x46e0a3){if(_0x46e0a3){var _0x534b04=typeof _0x8f101f[_0x2431('0x1f')]===_0x2431('0x20')&&typeof _0x8f101f[_0x2431('0x21')]===_0x2431('0x20');var _0x3487a7=_0x46e0a3[_0x2431('0x22')];var _0x4542c4=_0x534b04?0x0:_0x8f101f[_0x2431('0x1f')];var _0xe77b9e=_0x534b04?_0x46e0a3[_0x2431('0x22')]:_0x8f101f['offset']+_0x8f101f['limit'];var _0x4366ed;if(_0xe77b9e>=_0x3487a7){_0xe77b9e=_0x3487a7;_0x4366ed=0xc8;}else{_0x4366ed=0xce;}_0x2cad49[_0x2431('0x1d')](_0x4366ed);return _0x2cad49[_0x2431('0x23')]('Content-Range',_0x4542c4+'-'+_0xe77b9e+'/'+_0x3487a7)[_0x2431('0x1e')](_0x46e0a3);}return null;};}function patchUpdates(_0x5d0936){return function(_0x57ca5b){try{jsonpatch[_0x2431('0x24')](_0x57ca5b,_0x5d0936,!![]);}catch(_0x3ad7b8){return BPromise['reject'](_0x3ad7b8);}return _0x57ca5b[_0x2431('0x25')]();};}function saveUpdates(_0x5a0315,_0xe8b838){return function(_0x24f24f){if(_0x24f24f){return _0x24f24f[_0x2431('0x26')](_0x5a0315)[_0x2431('0x27')](function(_0x2bdb4e){return _0x2bdb4e;});}return null;};}function removeEntity(_0x515e1d,_0x1bf2ec){return function(_0x4c41c4){if(_0x4c41c4){return _0x4c41c4[_0x2431('0x28')]()[_0x2431('0x27')](function(){var _0x3121cf=_0x4c41c4[_0x2431('0x29')]({'plain':!![]});var _0x1a8c95=_0x2431('0x2a');return db[_0x2431('0x2b')][_0x2431('0x28')]({'where':{'type':_0x1a8c95,'resourceId':_0x3121cf['id']}})[_0x2431('0x27')](function(){return _0x4c41c4;});})[_0x2431('0x27')](function(){_0x515e1d[_0x2431('0x1d')](0xcc)[_0x2431('0x1c')]();});}};}function handleEntityNotFound(_0x604468,_0x9d6e5d){return function(_0x573c5f){if(!_0x573c5f){_0x604468[_0x2431('0x1b')](0x194);}return _0x573c5f;};}function handleError(_0x3f3705,_0x55c408){_0x55c408=_0x55c408||0x1f4;return function(_0x8bf8c3){logger[_0x2431('0x2c')](_0x8bf8c3[_0x2431('0x2d')]);if(_0x8bf8c3[_0x2431('0x2e')]){delete _0x8bf8c3[_0x2431('0x2e')];}_0x3f3705[_0x2431('0x1d')](_0x55c408)['send'](_0x8bf8c3);};}exports[_0x2431('0x2f')]=function(_0x1d7f34,_0x331671){var _0x354ab4={},_0x2f0272={},_0x20edb4={'count':0x0,'rows':[]};var _0x39598b=_[_0x2431('0x30')](db[_0x2431('0x31')][_0x2431('0x32')],function(_0x4d164f){return{'name':_0x4d164f['fieldName'],'type':_0x4d164f[_0x2431('0x33')][_0x2431('0x34')]};});_0x2f0272['model']=_[_0x2431('0x30')](_0x39598b,_0x2431('0x2e'));_0x2f0272[_0x2431('0x35')]=_['keys'](_0x1d7f34[_0x2431('0x35')]);_0x2f0272[_0x2431('0x36')]=_['intersection'](_0x2f0272['model'],_0x2f0272[_0x2431('0x35')]);_0x354ab4['attributes']=_[_0x2431('0x37')](_0x2f0272[_0x2431('0x38')],qs['fields'](_0x1d7f34['query']['fields']));_0x354ab4[_0x2431('0x39')]=_0x354ab4['attributes'][_0x2431('0x3a')]?_0x354ab4['attributes']:_0x2f0272[_0x2431('0x38')];if(!_0x1d7f34[_0x2431('0x35')][_0x2431('0x3b')](_0x2431('0x3c'))){_0x354ab4[_0x2431('0x21')]=qs[_0x2431('0x21')](_0x1d7f34[_0x2431('0x35')][_0x2431('0x21')]);_0x354ab4[_0x2431('0x1f')]=qs[_0x2431('0x1f')](_0x1d7f34[_0x2431('0x35')][_0x2431('0x1f')]);}_0x354ab4[_0x2431('0x3d')]=qs['sort'](_0x1d7f34[_0x2431('0x35')][_0x2431('0x3e')]);_0x354ab4[_0x2431('0x3f')]=qs[_0x2431('0x36')](_[_0x2431('0x40')](_0x1d7f34[_0x2431('0x35')],_0x2f0272[_0x2431('0x36')]),_0x39598b);if(_0x1d7f34[_0x2431('0x35')][_0x2431('0x41')]){_0x354ab4['where']=_[_0x2431('0x42')](_0x354ab4['where'],{'$or':_[_0x2431('0x30')](_0x39598b,function(_0x571974){if(_0x571974[_0x2431('0x33')]!==_0x2431('0x43')){var _0x4b63bc={};_0x4b63bc[_0x571974[_0x2431('0x2e')]]={'$like':'%'+_0x1d7f34[_0x2431('0x35')][_0x2431('0x41')]+'%'};return _0x4b63bc;}})});}_0x354ab4=_[_0x2431('0x42')]({},_0x354ab4,_0x1d7f34[_0x2431('0x44')]);var _0x5c2202={'where':_0x354ab4[_0x2431('0x3f')]};return db[_0x2431('0x31')][_0x2431('0x22')](_0x5c2202)[_0x2431('0x27')](function(_0x5bc5fd){_0x20edb4[_0x2431('0x22')]=_0x5bc5fd;if(_0x1d7f34[_0x2431('0x35')][_0x2431('0x45')]){_0x354ab4[_0x2431('0x46')]=[{'all':!![]}];}return db['Sound'][_0x2431('0x47')](_0x354ab4);})['then'](function(_0x4b5f3e){_0x20edb4[_0x2431('0x48')]=_0x4b5f3e;return _0x20edb4;})[_0x2431('0x27')](respondWithFilteredResult(_0x331671,_0x354ab4))[_0x2431('0x49')](handleError(_0x331671,null));};exports[_0x2431('0x4a')]=function(_0x2f12b4,_0xa8532e){var _0x56b3bf={'raw':!![],'where':{'id':_0x2f12b4[_0x2431('0x4b')]['id']}},_0x58d610={};_0x58d610['model']=_[_0x2431('0x4c')](db[_0x2431('0x31')][_0x2431('0x32')]);_0x58d610[_0x2431('0x35')]=_[_0x2431('0x4c')](_0x2f12b4[_0x2431('0x35')]);_0x58d610['filters']=_[_0x2431('0x37')](_0x58d610[_0x2431('0x38')],_0x58d610[_0x2431('0x35')]);_0x56b3bf['attributes']=_[_0x2431('0x37')](_0x58d610[_0x2431('0x38')],qs[_0x2431('0x4d')](_0x2f12b4[_0x2431('0x35')][_0x2431('0x4d')]));_0x56b3bf['attributes']=_0x56b3bf['attributes'][_0x2431('0x3a')]?_0x56b3bf['attributes']:_0x58d610[_0x2431('0x38')];if(_0x2f12b4[_0x2431('0x35')][_0x2431('0x45')]){_0x56b3bf['include']=[{'all':!![]}];}_0x56b3bf=_[_0x2431('0x42')]({},_0x56b3bf,_0x2f12b4['options']);return db['Sound']['find'](_0x56b3bf)['then'](handleEntityNotFound(_0xa8532e,null))['then'](respondWithResult(_0xa8532e,null))[_0x2431('0x49')](handleError(_0xa8532e,null));};exports[_0x2431('0x4e')]=function(_0x1ee0f9,_0x27746d,_0x5e3b3c){return db[_0x2431('0x31')][_0x2431('0x4f')]({'where':{'id':_0x1ee0f9[_0x2431('0x4b')]['id']},'attributes':['name',_0x2431('0x50'),_0x2431('0x51')],'raw':!![]})[_0x2431('0x27')](handleEntityNotFound(_0x27746d,null))['then'](function(_0x222716){if(_0x222716){if(!fs[_0x2431('0x52')](path['join'](config[_0x2431('0x53')],'server/files/sounds/converted',_0x222716[_0x2431('0x50')]+'.'+_0x222716[_0x2431('0x51')]))){throw new db[(_0x2431('0x54'))][(_0x2431('0x55'))](_0x2431('0x56'));}return _0x27746d['download'](path[_0x2431('0x57')](config[_0x2431('0x53')],_0x2431('0x58'),util[_0x2431('0x59')](_0x2431('0x5a'),_0x222716[_0x2431('0x50')],_0x222716[_0x2431('0x51')])),util['format']('%s.%s',_0x222716[_0x2431('0x2e')],_0x222716['converted_format']));}return null;})[_0x2431('0x49')](handleError(_0x27746d,null));};exports[_0x2431('0x5b')]=function(_0x3b135d,_0xe47991,_0x1932e0){var _0x5d51ab={'name':path[_0x2431('0x5c')](_0x3b135d['file'][_0x2431('0x5d')],path[_0x2431('0x5e')](_0x3b135d['file'][_0x2431('0x5d')])),'save_name':path[_0x2431('0x5c')](_0x3b135d[_0x2431('0x5f')][_0x2431('0x60')],path[_0x2431('0x5e')](_0x3b135d[_0x2431('0x5f')]['filename'])),'original_format':path['extname'](_0x3b135d[_0x2431('0x5f')][_0x2431('0x5d')])[_0x2431('0x61')](0x1),'converted_format':_0x2431('0x62')};var _0x4552e7=path[_0x2431('0x57')](config[_0x2431('0x53')],_0x2431('0x63'),_0x3b135d['file'][_0x2431('0x60')]);var _0x45cfe3=path['join'](config[_0x2431('0x53')],_0x2431('0x58'),util[_0x2431('0x59')](_0x2431('0x5a'),path['basename'](_0x3b135d[_0x2431('0x5f')][_0x2431('0x60')],path[_0x2431('0x5e')](_0x3b135d['file'][_0x2431('0x60')])),_0x5d51ab[_0x2431('0x51')]));logger[_0x2431('0x64')](_0x2431('0x65'),_0x4552e7);logger[_0x2431('0x64')](_0x2431('0x66'),_0x45cfe3);try{fs[_0x2431('0x67')](_0x4552e7,parseInt(_0x2431('0x68'),0x8));var _0x14dfb4=sox[_0x2431('0x69')](_0x4552e7,_0x45cfe3,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x14dfb4['on'](_0x2431('0x2c'),function(_0x11d9d9){fs['unlinkSync'](_0x4552e7);_0xe47991[_0x2431('0x1d')](0x1f4)[_0x2431('0x6a')](_0x11d9d9);});_0x14dfb4['on'](_0x2431('0x6b'),function(_0x1f3432){_0x5d51ab[_0x2431('0x6c')]=isNaN(_0x1f3432[_0x2431('0x6d')])?null:_0x1f3432[_0x2431('0x6d')]*0x3e8;_0x5d51ab[_0x2431('0x6e')]=isNaN(_0x1f3432[_0x2431('0x6f')])?null:_0x1f3432[_0x2431('0x6f')];_0x5d51ab[_0x2431('0x70')]=isNaN(_0x1f3432[_0x2431('0x71')])?null:_0x1f3432['channelCount'];_0x5d51ab[_0x2431('0x72')]=isNaN(_0x1f3432['bitRate'])?null:_0x1f3432['bitRate'];_0x5d51ab['original_sampleRate']=isNaN(_0x1f3432[_0x2431('0x73')])?null:_0x1f3432[_0x2431('0x73')];});_0x14dfb4['on']('dest',function(_0x31c36f){_0x5d51ab[_0x2431('0x74')]=isNaN(_0x31c36f['duration'])?null:_0x31c36f['duration']*0x3e8;_0x5d51ab[_0x2431('0x75')]=isNaN(_0x31c36f['sampleCount'])?null:_0x31c36f[_0x2431('0x6f')];_0x5d51ab['converted_channelCount']=isNaN(_0x31c36f[_0x2431('0x71')])?null:_0x31c36f[_0x2431('0x71')];_0x5d51ab[_0x2431('0x76')]=isNaN(_0x31c36f[_0x2431('0x77')])?null:_0x31c36f[_0x2431('0x77')];_0x5d51ab[_0x2431('0x78')]=isNaN(_0x31c36f[_0x2431('0x73')])?null:_0x31c36f[_0x2431('0x73')];});_0x14dfb4['on'](_0x2431('0x1c'),function(){fs[_0x2431('0x67')](_0x45cfe3,parseInt(_0x2431('0x68'),0x8));return db[_0x2431('0x31')][_0x2431('0x5b')](_0x5d51ab)[_0x2431('0x27')](function(_0x60c649){var _0x170c85={'role':_0x3b135d[_0x2431('0x79')]['role'],'userProfileId':_0x3b135d[_0x2431('0x79')][_0x2431('0x7a')]};if(!_0x170c85)throw new Error(_0x2431('0x7b'));if(_0x170c85[_0x2431('0x7c')]===_0x2431('0x7d')){var _0x576c65=_0x60c649['get']({'plain':!![]});return db[_0x2431('0x7e')][_0x2431('0x4f')]({'where':{'name':_0x2431('0x2a'),'userProfileId':_0x170c85[_0x2431('0x7a')]},'raw':!![]})['then'](function(_0x3c5064){if(_0x3c5064&&_0x3c5064[_0x2431('0x7f')]===0x0){return db[_0x2431('0x2b')][_0x2431('0x5b')]({'name':_0x576c65[_0x2431('0x2e')],'resourceId':_0x576c65['id'],'type':_0x3c5064[_0x2431('0x2e')],'sectionId':_0x3c5064['id']},{})[_0x2431('0x27')](function(){return _0x60c649;});}else{return _0x60c649;}})[_0x2431('0x49')](function(_0x4a4d9f){logger[_0x2431('0x2c')](_0x2431('0x80'),_0x4a4d9f);throw _0x4a4d9f;});}return _0x60c649;})[_0x2431('0x27')](respondWithResult(_0xe47991,null))[_0x2431('0x49')](handleError(_0xe47991,null));});_0x14dfb4[_0x2431('0x81')]();}catch(_0x42e10d){_0xe47991[_0x2431('0x1d')](0x1f4)[_0x2431('0x6a')](_0x42e10d);}};exports['update']=function(_0x3c1f36,_0x4026bd,_0x1259d9){return db[_0x2431('0x31')]['find']({'where':{'id':_0x3c1f36[_0x2431('0x4b')]['id']}})[_0x2431('0x27')](handleEntityNotFound(_0x4026bd,null))[_0x2431('0x27')](saveUpdates(_[_0x2431('0x40')](_0x3c1f36[_0x2431('0x79')],[_0x2431('0x2e'),_0x2431('0x82')]),null))[_0x2431('0x27')](respondWithResult(_0x4026bd,null))[_0x2431('0x49')](handleError(_0x4026bd,null));};exports[_0x2431('0x83')]=function(_0x20806e,_0x4135ee,_0x10ab8e){return db[_0x2431('0x31')]['find']({'where':{'id':_0x20806e[_0x2431('0x4b')]['id']}})['then'](function(_0x25a090){if(_0x25a090){return _0x25a090['destroy']();}})['then'](function(_0x23f177){var _0x5c974b=path[_0x2431('0x57')](config[_0x2431('0x53')],'server/files/sounds/original',util[_0x2431('0x59')](_0x2431('0x5a'),_0x23f177[_0x2431('0x50')],_0x23f177[_0x2431('0x84')]));var _0x432997=path[_0x2431('0x57')](config[_0x2431('0x53')],_0x2431('0x58'),util[_0x2431('0x59')](_0x2431('0x5a'),_0x23f177['save_name'],_0x23f177[_0x2431('0x51')]));fs[_0x2431('0x85')](_0x5c974b);fs[_0x2431('0x85')](_0x432997);return _0x23f177;})[_0x2431('0x27')](function(_0x1893bc){if(_0x1893bc){return _0x4135ee['status'](0xcc)[_0x2431('0x1c')]();}})[_0x2431('0x27')](handleEntityNotFound(_0x4135ee,null))['catch'](handleError(_0x4135ee,null));};
\ No newline at end of file
+var _0x88f0=['hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','save_name','converted_format','server/files/sounds/converted','ValidationError','download','root','format','%s.%s','create','basename','file','extname','originalname','filename','substring','wav','join','Sound\x20upload\x20filepath:\x20%s','chmodSync','transcode','error','unlinkSync','src','original_duration','duration','original_sampleCount','sampleCount','channelCount','original_bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','bitRate','0777','body','role','user','get','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','description','delete','original_format','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','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/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','Sounds','UserProfileResource','name','send','index','map','Sound','rawAttributes','fieldName','type','key','keys','query','filters','intersection','attributes','model','fields'];(function(_0x4057f9,_0x17c5b5){var _0x5552b7=function(_0xeb792f){while(--_0xeb792f){_0x4057f9['push'](_0x4057f9['shift']());}};_0x5552b7(++_0x17c5b5);}(_0x88f0,0xc1));var _0x088f=function(_0x3aea4e,_0x3da357){_0x3aea4e=_0x3aea4e-0x0;var _0x2e9db0=_0x88f0[_0x3aea4e];return _0x2e9db0;};'use strict';var emlformat=require(_0x088f('0x0'));var rimraf=require(_0x088f('0x1'));var zipdir=require(_0x088f('0x2'));var jsonpatch=require(_0x088f('0x3'));var rp=require(_0x088f('0x4'));var moment=require(_0x088f('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x088f('0x6'));var util=require(_0x088f('0x7'));var path=require('path');var sox=require(_0x088f('0x8'));var csv=require(_0x088f('0x9'));var ejs=require(_0x088f('0xa'));var fs=require('fs');var fs_extra=require(_0x088f('0xb'));var _=require('lodash');var squel=require(_0x088f('0xc'));var crypto=require(_0x088f('0xd'));var jsforce=require(_0x088f('0xe'));var deskjs=require(_0x088f('0xf'));var toCsv=require(_0x088f('0x9'));var querystring=require(_0x088f('0x10'));var Papa=require(_0x088f('0x11'));var Redis=require(_0x088f('0x12'));var authService=require(_0x088f('0x13'));var qs=require(_0x088f('0x14'));var as=require(_0x088f('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x088f('0x16'))(_0x088f('0x17'));var utils=require(_0x088f('0x18'));var config=require(_0x088f('0x19'));var licenseUtil=require(_0x088f('0x1a'));var db=require(_0x088f('0x1b'))['db'];function respondWithStatusCode(_0x4d18a1,_0x3a9190){_0x3a9190=_0x3a9190||0xcc;return function(_0x44b9b2){if(_0x44b9b2){return _0x4d18a1[_0x088f('0x1c')](_0x3a9190);}return _0x4d18a1[_0x088f('0x1d')](_0x3a9190)[_0x088f('0x1e')]();};}function respondWithResult(_0x40fa62,_0x405b69){_0x405b69=_0x405b69||0xc8;return function(_0x343758){if(_0x343758){return _0x40fa62[_0x088f('0x1d')](_0x405b69)[_0x088f('0x1f')](_0x343758);}};}function respondWithFilteredResult(_0x3e862b,_0x1fee8c){return function(_0x4ec8a3){if(_0x4ec8a3){var _0x1675d3=typeof _0x1fee8c[_0x088f('0x20')]===_0x088f('0x21')&&typeof _0x1fee8c[_0x088f('0x22')]===_0x088f('0x21');var _0x163125=_0x4ec8a3[_0x088f('0x23')];var _0x3e51e9=_0x1675d3?0x0:_0x1fee8c['offset'];var _0x398b6d=_0x1675d3?_0x4ec8a3['count']:_0x1fee8c['offset']+_0x1fee8c[_0x088f('0x22')];var _0x7cdaa1;if(_0x398b6d>=_0x163125){_0x398b6d=_0x163125;_0x7cdaa1=0xc8;}else{_0x7cdaa1=0xce;}_0x3e862b[_0x088f('0x1d')](_0x7cdaa1);return _0x3e862b[_0x088f('0x24')](_0x088f('0x25'),_0x3e51e9+'-'+_0x398b6d+'/'+_0x163125)[_0x088f('0x1f')](_0x4ec8a3);}return null;};}function patchUpdates(_0x4642d7){return function(_0x520401){try{jsonpatch['apply'](_0x520401,_0x4642d7,!![]);}catch(_0x506907){return BPromise[_0x088f('0x26')](_0x506907);}return _0x520401[_0x088f('0x27')]();};}function saveUpdates(_0x11fca,_0x495442){return function(_0x42665f){if(_0x42665f){return _0x42665f[_0x088f('0x28')](_0x11fca)[_0x088f('0x29')](function(_0x1df068){return _0x1df068;});}return null;};}function removeEntity(_0x59f316,_0x3c2ba4){return function(_0x325da8){if(_0x325da8){return _0x325da8[_0x088f('0x2a')]()['then'](function(){var _0x58f85e=_0x325da8['get']({'plain':!![]});var _0x5266ad=_0x088f('0x2b');return db[_0x088f('0x2c')]['destroy']({'where':{'type':_0x5266ad,'resourceId':_0x58f85e['id']}})[_0x088f('0x29')](function(){return _0x325da8;});})['then'](function(){_0x59f316[_0x088f('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x58be6c,_0x256503){return function(_0x428885){if(!_0x428885){_0x58be6c[_0x088f('0x1c')](0x194);}return _0x428885;};}function handleError(_0x350964,_0x26ecac){_0x26ecac=_0x26ecac||0x1f4;return function(_0x3e7c2d){logger['error'](_0x3e7c2d['stack']);if(_0x3e7c2d[_0x088f('0x2d')]){delete _0x3e7c2d['name'];}_0x350964[_0x088f('0x1d')](_0x26ecac)[_0x088f('0x2e')](_0x3e7c2d);};}exports[_0x088f('0x2f')]=function(_0x453143,_0x53ddfa){var _0x1f110f={},_0x18d3b3={},_0x586bf2={'count':0x0,'rows':[]};var _0x4ecf61=_[_0x088f('0x30')](db[_0x088f('0x31')][_0x088f('0x32')],function(_0x4a24ca){return{'name':_0x4a24ca[_0x088f('0x33')],'type':_0x4a24ca[_0x088f('0x34')][_0x088f('0x35')]};});_0x18d3b3['model']=_[_0x088f('0x30')](_0x4ecf61,_0x088f('0x2d'));_0x18d3b3['query']=_[_0x088f('0x36')](_0x453143[_0x088f('0x37')]);_0x18d3b3[_0x088f('0x38')]=_[_0x088f('0x39')](_0x18d3b3['model'],_0x18d3b3['query']);_0x1f110f[_0x088f('0x3a')]=_[_0x088f('0x39')](_0x18d3b3[_0x088f('0x3b')],qs[_0x088f('0x3c')](_0x453143[_0x088f('0x37')][_0x088f('0x3c')]));_0x1f110f[_0x088f('0x3a')]=_0x1f110f['attributes']['length']?_0x1f110f[_0x088f('0x3a')]:_0x18d3b3[_0x088f('0x3b')];if(!_0x453143[_0x088f('0x37')][_0x088f('0x3d')](_0x088f('0x3e'))){_0x1f110f[_0x088f('0x22')]=qs['limit'](_0x453143[_0x088f('0x37')][_0x088f('0x22')]);_0x1f110f[_0x088f('0x20')]=qs[_0x088f('0x20')](_0x453143[_0x088f('0x37')][_0x088f('0x20')]);}_0x1f110f[_0x088f('0x3f')]=qs[_0x088f('0x40')](_0x453143[_0x088f('0x37')]['sort']);_0x1f110f[_0x088f('0x41')]=qs[_0x088f('0x38')](_[_0x088f('0x42')](_0x453143[_0x088f('0x37')],_0x18d3b3['filters']),_0x4ecf61);if(_0x453143[_0x088f('0x37')][_0x088f('0x43')]){_0x1f110f[_0x088f('0x41')]=_[_0x088f('0x44')](_0x1f110f[_0x088f('0x41')],{'$or':_[_0x088f('0x30')](_0x4ecf61,function(_0x161fb7){if(_0x161fb7[_0x088f('0x34')]!==_0x088f('0x45')){var _0x38c351={};_0x38c351[_0x161fb7[_0x088f('0x2d')]]={'$like':'%'+_0x453143[_0x088f('0x37')][_0x088f('0x43')]+'%'};return _0x38c351;}})});}_0x1f110f=_[_0x088f('0x44')]({},_0x1f110f,_0x453143[_0x088f('0x46')]);var _0x49c0d9={'where':_0x1f110f[_0x088f('0x41')]};return db[_0x088f('0x31')][_0x088f('0x23')](_0x49c0d9)[_0x088f('0x29')](function(_0x1f8b0c){_0x586bf2[_0x088f('0x23')]=_0x1f8b0c;if(_0x453143[_0x088f('0x37')][_0x088f('0x47')]){_0x1f110f[_0x088f('0x48')]=[{'all':!![]}];}return db[_0x088f('0x31')][_0x088f('0x49')](_0x1f110f);})['then'](function(_0x49af3e){_0x586bf2[_0x088f('0x4a')]=_0x49af3e;return _0x586bf2;})['then'](respondWithFilteredResult(_0x53ddfa,_0x1f110f))[_0x088f('0x4b')](handleError(_0x53ddfa,null));};exports[_0x088f('0x4c')]=function(_0x4c10e5,_0x120d7e){var _0x3ad8eb={'raw':!![],'where':{'id':_0x4c10e5[_0x088f('0x4d')]['id']}},_0x23419a={};_0x23419a[_0x088f('0x3b')]=_[_0x088f('0x36')](db[_0x088f('0x31')][_0x088f('0x32')]);_0x23419a['query']=_[_0x088f('0x36')](_0x4c10e5[_0x088f('0x37')]);_0x23419a[_0x088f('0x38')]=_[_0x088f('0x39')](_0x23419a[_0x088f('0x3b')],_0x23419a[_0x088f('0x37')]);_0x3ad8eb[_0x088f('0x3a')]=_['intersection'](_0x23419a['model'],qs[_0x088f('0x3c')](_0x4c10e5['query'][_0x088f('0x3c')]));_0x3ad8eb[_0x088f('0x3a')]=_0x3ad8eb[_0x088f('0x3a')][_0x088f('0x4e')]?_0x3ad8eb['attributes']:_0x23419a[_0x088f('0x3b')];if(_0x4c10e5[_0x088f('0x37')][_0x088f('0x47')]){_0x3ad8eb[_0x088f('0x48')]=[{'all':!![]}];}_0x3ad8eb=_[_0x088f('0x44')]({},_0x3ad8eb,_0x4c10e5[_0x088f('0x46')]);return db['Sound'][_0x088f('0x4f')](_0x3ad8eb)[_0x088f('0x29')](handleEntityNotFound(_0x120d7e,null))[_0x088f('0x29')](respondWithResult(_0x120d7e,null))[_0x088f('0x4b')](handleError(_0x120d7e,null));};exports['download']=function(_0x1fff02,_0xb26568,_0x32c49f){return db['Sound'][_0x088f('0x4f')]({'where':{'id':_0x1fff02[_0x088f('0x4d')]['id']},'attributes':[_0x088f('0x2d'),_0x088f('0x50'),_0x088f('0x51')],'raw':!![]})[_0x088f('0x29')](handleEntityNotFound(_0xb26568,null))['then'](function(_0x4c8e54){if(_0x4c8e54){if(!fs['existsSync'](path['join'](config['root'],_0x088f('0x52'),_0x4c8e54[_0x088f('0x50')]+'.'+_0x4c8e54[_0x088f('0x51')]))){throw new db['Sequelize'][(_0x088f('0x53'))]('Sound\x20not\x20found');}return _0xb26568[_0x088f('0x54')](path['join'](config[_0x088f('0x55')],_0x088f('0x52'),util[_0x088f('0x56')](_0x088f('0x57'),_0x4c8e54[_0x088f('0x50')],_0x4c8e54[_0x088f('0x51')])),util[_0x088f('0x56')](_0x088f('0x57'),_0x4c8e54[_0x088f('0x2d')],_0x4c8e54[_0x088f('0x51')]));}return null;})[_0x088f('0x4b')](handleError(_0xb26568,null));};exports[_0x088f('0x58')]=function(_0x3deb96,_0x313eca,_0x161b6d){var _0x55896a={'name':path[_0x088f('0x59')](_0x3deb96[_0x088f('0x5a')]['originalname'],path[_0x088f('0x5b')](_0x3deb96[_0x088f('0x5a')][_0x088f('0x5c')])),'save_name':path[_0x088f('0x59')](_0x3deb96[_0x088f('0x5a')][_0x088f('0x5d')],path[_0x088f('0x5b')](_0x3deb96[_0x088f('0x5a')][_0x088f('0x5d')])),'original_format':path[_0x088f('0x5b')](_0x3deb96['file'][_0x088f('0x5c')])[_0x088f('0x5e')](0x1),'converted_format':_0x088f('0x5f')};var _0x5ade56=path[_0x088f('0x60')](config[_0x088f('0x55')],'server/files/sounds/original',_0x3deb96[_0x088f('0x5a')]['filename']);var _0x1d193e=path[_0x088f('0x60')](config[_0x088f('0x55')],_0x088f('0x52'),util[_0x088f('0x56')]('%s.%s',path[_0x088f('0x59')](_0x3deb96[_0x088f('0x5a')][_0x088f('0x5d')],path[_0x088f('0x5b')](_0x3deb96[_0x088f('0x5a')][_0x088f('0x5d')])),_0x55896a[_0x088f('0x51')]));logger['info'](_0x088f('0x61'),_0x5ade56);logger['info']('Sound\x20upload\x20destination:\x20%s',_0x1d193e);try{fs[_0x088f('0x62')](_0x5ade56,parseInt('0777',0x8));var _0x3c1b6a=sox[_0x088f('0x63')](_0x5ade56,_0x1d193e,{'sampleRate':0x1f40,'format':_0x088f('0x5f'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3c1b6a['on'](_0x088f('0x64'),function(_0x63867){fs[_0x088f('0x65')](_0x5ade56);_0x313eca['status'](0x1f4)[_0x088f('0x2e')](_0x63867);});_0x3c1b6a['on'](_0x088f('0x66'),function(_0x321df0){_0x55896a[_0x088f('0x67')]=isNaN(_0x321df0[_0x088f('0x68')])?null:_0x321df0['duration']*0x3e8;_0x55896a[_0x088f('0x69')]=isNaN(_0x321df0['sampleCount'])?null:_0x321df0[_0x088f('0x6a')];_0x55896a['original_channelCount']=isNaN(_0x321df0[_0x088f('0x6b')])?null:_0x321df0[_0x088f('0x6b')];_0x55896a[_0x088f('0x6c')]=isNaN(_0x321df0['bitRate'])?null:_0x321df0['bitRate'];_0x55896a[_0x088f('0x6d')]=isNaN(_0x321df0[_0x088f('0x6e')])?null:_0x321df0[_0x088f('0x6e')];});_0x3c1b6a['on'](_0x088f('0x6f'),function(_0x411a9a){_0x55896a[_0x088f('0x70')]=isNaN(_0x411a9a[_0x088f('0x68')])?null:_0x411a9a[_0x088f('0x68')]*0x3e8;_0x55896a[_0x088f('0x71')]=isNaN(_0x411a9a[_0x088f('0x6a')])?null:_0x411a9a['sampleCount'];_0x55896a[_0x088f('0x72')]=isNaN(_0x411a9a[_0x088f('0x6b')])?null:_0x411a9a[_0x088f('0x6b')];_0x55896a['converted_bitRate']=isNaN(_0x411a9a[_0x088f('0x73')])?null:_0x411a9a[_0x088f('0x73')];_0x55896a['converted_sampleRate']=isNaN(_0x411a9a[_0x088f('0x6e')])?null:_0x411a9a[_0x088f('0x6e')];});_0x3c1b6a['on']('end',function(){fs[_0x088f('0x62')](_0x1d193e,parseInt(_0x088f('0x74'),0x8));return db[_0x088f('0x31')][_0x088f('0x58')](_0x55896a)[_0x088f('0x29')](function(_0xfc78c){var _0x3b7a87={'role':_0x3deb96[_0x088f('0x75')][_0x088f('0x76')],'userProfileId':_0x3deb96[_0x088f('0x75')]['userProfileId']};if(!_0x3b7a87)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3b7a87[_0x088f('0x76')]===_0x088f('0x77')){var _0x24ab18=_0xfc78c[_0x088f('0x78')]({'plain':!![]});return db['UserProfileSection'][_0x088f('0x4f')]({'where':{'name':_0x088f('0x2b'),'userProfileId':_0x3b7a87[_0x088f('0x79')]},'raw':!![]})[_0x088f('0x29')](function(_0x2d82f8){if(_0x2d82f8&&_0x2d82f8[_0x088f('0x7a')]===0x0){return db[_0x088f('0x2c')][_0x088f('0x58')]({'name':_0x24ab18[_0x088f('0x2d')],'resourceId':_0x24ab18['id'],'type':_0x2d82f8[_0x088f('0x2d')],'sectionId':_0x2d82f8['id']},{})['then'](function(){return _0xfc78c;});}else{return _0xfc78c;}})[_0x088f('0x4b')](function(_0x5b0178){logger[_0x088f('0x64')](_0x088f('0x7b'),_0x5b0178);throw _0x5b0178;});}return _0xfc78c;})[_0x088f('0x29')](respondWithResult(_0x313eca,null))[_0x088f('0x4b')](handleError(_0x313eca,null));});_0x3c1b6a['start']();}catch(_0x201123){_0x313eca[_0x088f('0x1d')](0x1f4)[_0x088f('0x2e')](_0x201123);}};exports[_0x088f('0x28')]=function(_0x555612,_0x33cc4b,_0x2e303c){return db[_0x088f('0x31')][_0x088f('0x4f')]({'where':{'id':_0x555612[_0x088f('0x4d')]['id']}})[_0x088f('0x29')](handleEntityNotFound(_0x33cc4b,null))['then'](saveUpdates(_[_0x088f('0x42')](_0x555612[_0x088f('0x75')],['name',_0x088f('0x7c')]),null))[_0x088f('0x29')](respondWithResult(_0x33cc4b,null))['catch'](handleError(_0x33cc4b,null));};exports[_0x088f('0x7d')]=function(_0x4d0ff6,_0x3039f8,_0x43eba6){return db[_0x088f('0x31')][_0x088f('0x4f')]({'where':{'id':_0x4d0ff6[_0x088f('0x4d')]['id']}})[_0x088f('0x29')](function(_0x7b5aa6){if(_0x7b5aa6){return _0x7b5aa6['destroy']();}})[_0x088f('0x29')](function(_0x695261){var _0x2b68dc=path['join'](config['root'],'server/files/sounds/original',util[_0x088f('0x56')](_0x088f('0x57'),_0x695261[_0x088f('0x50')],_0x695261[_0x088f('0x7e')]));var _0x593287=path[_0x088f('0x60')](config[_0x088f('0x55')],_0x088f('0x52'),util[_0x088f('0x56')](_0x088f('0x57'),_0x695261[_0x088f('0x50')],_0x695261[_0x088f('0x51')]));fs[_0x088f('0x65')](_0x2b68dc);fs['unlinkSync'](_0x593287);return _0x695261;})[_0x088f('0x29')](function(_0x1a093a){if(_0x1a093a){return _0x3039f8[_0x088f('0x1d')](0xcc)[_0x088f('0x1e')]();}})[_0x088f('0x29')](handleEntityNotFound(_0x3039f8,null))['catch'](handleError(_0x3039f8,null));};
\ No newline at end of file
index 627bf65..0de5b31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e08=['path','rimraf','../../config/environment','./sound.attributes','exports','define','Sound','tools_sounds','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0xe94a77,_0x368dcc){var _0x54387e=function(_0x3998ec){while(--_0x3998ec){_0xe94a77['push'](_0xe94a77['shift']());}};_0x54387e(++_0x368dcc);}(_0x8e08,0x1ac));var _0x88e0=function(_0x2a3374,_0x2a8028){_0x2a3374=_0x2a3374-0x0;var _0x35590a=_0x8e08[_0x2a3374];return _0x35590a;};'use strict';var _=require(_0x88e0('0x0'));var util=require(_0x88e0('0x1'));var logger=require(_0x88e0('0x2'))(_0x88e0('0x3'));var moment=require(_0x88e0('0x4'));var BPromise=require(_0x88e0('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x88e0('0x6'));var rimraf=require(_0x88e0('0x7'));var config=require(_0x88e0('0x8'));var attributes=require(_0x88e0('0x9'));module[_0x88e0('0xa')]=function(_0x4b7c80,_0x37aa00){return _0x4b7c80[_0x88e0('0xb')](_0x88e0('0xc'),attributes,{'tableName':_0x88e0('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x014b=['../../config/environment','./sound.attributes','exports','define','Sound','tools_sounds','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x39a588,_0xb08aee){var _0xff2835=function(_0x4b0640){while(--_0x4b0640){_0x39a588['push'](_0x39a588['shift']());}};_0xff2835(++_0xb08aee);}(_0x014b,0xbc));var _0xb014=function(_0x59605e,_0xb51758){_0x59605e=_0x59605e-0x0;var _0x56807d=_0x014b[_0x59605e];return _0x56807d;};'use strict';var _=require(_0xb014('0x0'));var util=require('util');var logger=require(_0xb014('0x1'))(_0xb014('0x2'));var moment=require(_0xb014('0x3'));var BPromise=require(_0xb014('0x4'));var rp=require(_0xb014('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb014('0x6'));var config=require(_0xb014('0x7'));var attributes=require(_0xb014('0x8'));module[_0xb014('0x9')]=function(_0x4c136b,_0x389ac0){return _0x4c136b[_0xb014('0xa')](_0xb014('0xb'),attributes,{'tableName':_0xb014('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cd0368a..9e5c279 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c41=['attributes','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','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','ShowSound','Sound','find','options','raw','where','include','map','model'];(function(_0x311600,_0x5406e4){var _0x48e1e4=function(_0x4b7563){while(--_0x4b7563){_0x311600['push'](_0x311600['shift']());}};_0x48e1e4(++_0x5406e4);}(_0x3c41,0x1f1));var _0x13c4=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x3c41[_0x501510];return _0x1e6ee5;};'use strict';var _=require('lodash');var util=require(_0x13c4('0x0'));var moment=require('moment');var BPromise=require(_0x13c4('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x13c4('0x2'));var db=require(_0x13c4('0x3'))['db'];var utils=require(_0x13c4('0x4'));var logger=require(_0x13c4('0x5'))(_0x13c4('0x6'));var config=require('../../config/environment');var jayson=require(_0x13c4('0x7'));var client=jayson[_0x13c4('0x8')][_0x13c4('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x53895e,_0x53c2ac,_0x3991ec){return new BPromise(function(_0x12933f,_0x490941){return client[_0x13c4('0xa')](_0x53895e,_0x3991ec)[_0x13c4('0xb')](function(_0x6a8ce3){logger[_0x13c4('0xc')](_0x13c4('0xd'),_0x53c2ac,_0x13c4('0xe'));logger[_0x13c4('0xf')](_0x13c4('0x10'),_0x53c2ac,_0x13c4('0xe'),JSON[_0x13c4('0x11')](_0x6a8ce3));if(_0x6a8ce3[_0x13c4('0x12')]){if(_0x6a8ce3[_0x13c4('0x12')][_0x13c4('0x13')]===0x1f4){logger[_0x13c4('0x12')]('Sound,\x20%s,\x20%s',_0x53c2ac,_0x6a8ce3[_0x13c4('0x12')][_0x13c4('0x14')]);return _0x490941(_0x6a8ce3[_0x13c4('0x12')]['message']);}logger[_0x13c4('0x12')]('Sound,\x20%s,\x20%s',_0x53c2ac,_0x6a8ce3[_0x13c4('0x12')][_0x13c4('0x14')]);return _0x12933f(_0x6a8ce3[_0x13c4('0x12')][_0x13c4('0x14')]);}else{logger[_0x13c4('0xc')](_0x13c4('0xd'),_0x53c2ac,_0x13c4('0xe'));_0x12933f(_0x6a8ce3[_0x13c4('0x15')]['message']);}})['catch'](function(_0x4c0dc6){logger[_0x13c4('0x12')](_0x13c4('0xd'),_0x53c2ac,_0x4c0dc6);_0x490941(_0x4c0dc6);});});}exports[_0x13c4('0x16')]=function(_0x1ba897){var _0x233f3=this;return new Promise(function(_0x736948,_0x2e442f){return db[_0x13c4('0x17')][_0x13c4('0x18')]({'raw':_0x1ba897[_0x13c4('0x19')]?_0x1ba897[_0x13c4('0x19')][_0x13c4('0x1a')]===undefined?!![]:![]:!![],'where':_0x1ba897[_0x13c4('0x19')]?_0x1ba897[_0x13c4('0x19')][_0x13c4('0x1b')]||null:null,'attributes':_0x1ba897[_0x13c4('0x19')]?_0x1ba897[_0x13c4('0x19')]['attributes']||null:null,'include':_0x1ba897[_0x13c4('0x19')]?_0x1ba897[_0x13c4('0x19')][_0x13c4('0x1c')]?_[_0x13c4('0x1d')](_0x1ba897[_0x13c4('0x19')][_0x13c4('0x1c')],function(_0xd9c025){return{'model':db[_0xd9c025[_0x13c4('0x1e')]],'as':_0xd9c025['as'],'attributes':_0xd9c025[_0x13c4('0x1f')],'include':_0xd9c025[_0x13c4('0x1c')]?_['map'](_0xd9c025[_0x13c4('0x1c')],function(_0x8aff00){return{'model':db[_0x8aff00['model']],'as':_0x8aff00['as'],'attributes':_0x8aff00[_0x13c4('0x1f')],'include':_0x8aff00[_0x13c4('0x1c')]?_[_0x13c4('0x1d')](_0x8aff00[_0x13c4('0x1c')],function(_0xf4bfa5){return{'model':db[_0xf4bfa5['model']],'as':_0xf4bfa5['as'],'attributes':_0xf4bfa5[_0x13c4('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x13c4('0xb')](function(_0x1860a8){logger[_0x13c4('0xc')](_0x13c4('0x16'),_0x1ba897);logger[_0x13c4('0xf')](_0x13c4('0x16'),_0x1ba897,JSON[_0x13c4('0x11')](_0x1860a8));_0x736948(_0x1860a8);})[_0x13c4('0x20')](function(_0x36d152){logger[_0x13c4('0x12')](_0x13c4('0x16'),_0x36d152['message'],_0x1ba897);_0x2e442f(_0x233f3[_0x13c4('0x12')](0x1f4,_0x36d152[_0x13c4('0x14')]));});});};
\ No newline at end of file
+var _0x4614=['../../config/logger','rpc','../../config/environment','jayson/promise','client','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','Sound','find','options','raw','where','attributes','include','map','model','util','randomstring','ioredis','../../config/utils'];(function(_0x1ec715,_0x1c5a90){var _0x4a424b=function(_0x414545){while(--_0x414545){_0x1ec715['push'](_0x1ec715['shift']());}};_0x4a424b(++_0x1c5a90);}(_0x4614,0xfc));var _0x4461=function(_0x5087d7,_0xd455f2){_0x5087d7=_0x5087d7-0x0;var _0x7dd873=_0x4614[_0x5087d7];return _0x7dd873;};'use strict';var _=require('lodash');var util=require(_0x4461('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x4461('0x1'));var fs=require('fs');var Redis=require(_0x4461('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x4461('0x3'));var logger=require(_0x4461('0x4'))(_0x4461('0x5'));var config=require(_0x4461('0x6'));var jayson=require(_0x4461('0x7'));var client=jayson[_0x4461('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3813c8,_0x3bd4d1,_0xbd30c5){return new BPromise(function(_0x411c43,_0xd0821){return client[_0x4461('0x9')](_0x3813c8,_0xbd30c5)[_0x4461('0xa')](function(_0x269f17){logger[_0x4461('0xb')](_0x4461('0xc'),_0x3bd4d1,_0x4461('0xd'));logger[_0x4461('0xe')](_0x4461('0xf'),_0x3bd4d1,_0x4461('0xd'),JSON[_0x4461('0x10')](_0x269f17));if(_0x269f17['error']){if(_0x269f17[_0x4461('0x11')][_0x4461('0x12')]===0x1f4){logger[_0x4461('0x11')]('Sound,\x20%s,\x20%s',_0x3bd4d1,_0x269f17[_0x4461('0x11')][_0x4461('0x13')]);return _0xd0821(_0x269f17[_0x4461('0x11')][_0x4461('0x13')]);}logger['error'](_0x4461('0xc'),_0x3bd4d1,_0x269f17[_0x4461('0x11')]['message']);return _0x411c43(_0x269f17[_0x4461('0x11')][_0x4461('0x13')]);}else{logger['info'](_0x4461('0xc'),_0x3bd4d1,_0x4461('0xd'));_0x411c43(_0x269f17[_0x4461('0x14')][_0x4461('0x13')]);}})[_0x4461('0x15')](function(_0x1cf7db){logger[_0x4461('0x11')](_0x4461('0xc'),_0x3bd4d1,_0x1cf7db);_0xd0821(_0x1cf7db);});});}exports[_0x4461('0x16')]=function(_0x5d9fbb){var _0x47054f=this;return new Promise(function(_0x28d1da,_0x50513c){return db[_0x4461('0x17')][_0x4461('0x18')]({'raw':_0x5d9fbb['options']?_0x5d9fbb[_0x4461('0x19')][_0x4461('0x1a')]===undefined?!![]:![]:!![],'where':_0x5d9fbb[_0x4461('0x19')]?_0x5d9fbb[_0x4461('0x19')][_0x4461('0x1b')]||null:null,'attributes':_0x5d9fbb[_0x4461('0x19')]?_0x5d9fbb[_0x4461('0x19')][_0x4461('0x1c')]||null:null,'include':_0x5d9fbb[_0x4461('0x19')]?_0x5d9fbb[_0x4461('0x19')][_0x4461('0x1d')]?_[_0x4461('0x1e')](_0x5d9fbb[_0x4461('0x19')][_0x4461('0x1d')],function(_0x1ab346){return{'model':db[_0x1ab346[_0x4461('0x1f')]],'as':_0x1ab346['as'],'attributes':_0x1ab346[_0x4461('0x1c')],'include':_0x1ab346[_0x4461('0x1d')]?_[_0x4461('0x1e')](_0x1ab346[_0x4461('0x1d')],function(_0x56fc87){return{'model':db[_0x56fc87['model']],'as':_0x56fc87['as'],'attributes':_0x56fc87[_0x4461('0x1c')],'include':_0x56fc87[_0x4461('0x1d')]?_[_0x4461('0x1e')](_0x56fc87[_0x4461('0x1d')],function(_0x27efed){return{'model':db[_0x27efed[_0x4461('0x1f')]],'as':_0x27efed['as'],'attributes':_0x27efed[_0x4461('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x4461('0xa')](function(_0x54322b){logger[_0x4461('0xb')]('ShowSound',_0x5d9fbb);logger[_0x4461('0xe')]('ShowSound',_0x5d9fbb,JSON[_0x4461('0x10')](_0x54322b));_0x28d1da(_0x54322b);})[_0x4461('0x15')](function(_0x413bc4){logger[_0x4461('0x11')](_0x4461('0x16'),_0x413bc4[_0x4461('0x13')],_0x5d9fbb);_0x50513c(_0x47054f[_0x4461('0x11')](0x1f4,_0x413bc4['message']));});});};
\ No newline at end of file
index 61255f5..80d2b81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['get','isAuthenticated','/:id','show','create','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./squareMessage.controller'];(function(_0x3f7b6c,_0x2595df){var _0x36c983=function(_0x4b8761){while(--_0x4b8761){_0x3f7b6c['push'](_0x3f7b6c['shift']());}};_0x36c983(++_0x2595df);}(_0x14a0,0x8e));var _0x014a=function(_0x1b8b66,_0x2f9a50){_0x1b8b66=_0x1b8b66-0x0;var _0x795e0c=_0x14a0[_0x1b8b66];return _0x795e0c;};'use strict';var multer=require('multer');var util=require(_0x014a('0x0'));var path=require(_0x014a('0x1'));var timeout=require(_0x014a('0x2'));var express=require(_0x014a('0x3'));var router=express[_0x014a('0x4')]();var fs_extra=require(_0x014a('0x5'));var auth=require(_0x014a('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x014a('0x7'));router[_0x014a('0x8')]('/',auth[_0x014a('0x9')](),controller['index']);router['get'](_0x014a('0xa'),auth[_0x014a('0x9')](),controller[_0x014a('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x014a('0xc')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0x014a('0xd')]('/:id',auth[_0x014a('0x9')](),controller[_0x014a('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x757a=['destroy','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareMessage.controller','get','index','isAuthenticated','show','post','create','/:id','update','delete'];(function(_0x413baa,_0x595923){var _0x262882=function(_0x9c4b9b){while(--_0x9c4b9b){_0x413baa['push'](_0x413baa['shift']());}};_0x262882(++_0x595923);}(_0x757a,0xde));var _0xa757=function(_0x1ccb9b,_0x3a0c97){_0x1ccb9b=_0x1ccb9b-0x0;var _0x453dcd=_0x757a[_0x1ccb9b];return _0x453dcd;};'use strict';var multer=require('multer');var util=require(_0xa757('0x0'));var path=require(_0xa757('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xa757('0x2'));var auth=require(_0xa757('0x3'));var interaction=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var controller=require(_0xa757('0x6'));router[_0xa757('0x7')]('/',auth['isAuthenticated'](),controller[_0xa757('0x8')]);router[_0xa757('0x7')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0xa')]);router[_0xa757('0xb')]('/',auth[_0xa757('0x9')](),controller[_0xa757('0xc')]);router['put'](_0xa757('0xd'),auth[_0xa757('0x9')](),controller[_0xa757('0xe')]);router[_0xa757('0xf')](_0xa757('0xd'),auth[_0xa757('0x9')](),controller[_0xa757('0x10')]);module['exports']=router;
\ No newline at end of file
index a8a1560..2b46cf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf53=['medium','exports','STRING'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbf53,0xd9));var _0x3bf5=function(_0x3eb209,_0x5bb276){_0x3eb209=_0x3eb209-0x0;var _0x2870f3=_0xbf53[_0x3eb209];return _0x2870f3;};'use strict';var Sequelize=require('sequelize');module[_0x3bf5('0x0')]={'uniqueid':{'type':Sequelize[_0x3bf5('0x1')]},'body':{'type':Sequelize['TEXT'](_0x3bf5('0x2')),'allowNull':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'out','allowNull':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0xeca4=['ENUM','out','TEXT'];(function(_0x15318c,_0x2e50e4){var _0x10d3ce=function(_0x2fecdd){while(--_0x2fecdd){_0x15318c['push'](_0x15318c['shift']());}};_0x10d3ce(++_0x2e50e4);}(_0xeca4,0xf5));var _0x4eca=function(_0x10d193,_0x2e437b){_0x10d193=_0x10d193-0x0;var _0x3ed3c1=_0xeca4[_0x10d193];return _0x3ed3c1;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize[_0x4eca('0x0')]('medium'),'allowNull':![]},'direction':{'type':Sequelize[_0x4eca('0x1')]('in',_0x4eca('0x2')),'defaultValue':_0x4eca('0x2'),'allowNull':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x4eca('0x0')]}};
\ No newline at end of file
index e8d6791..ab43ef6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x605b=['sort','where','filters','pick','filter','merge','type','VIRTUAL','options','SquareMessage','includeAll','findAll','rows','catch','params','keys','length','include','find','create','body','destroy','eml-format','rimraf','zip-dir','fast-json-patch','moment','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','stack','name','send','map','rawAttributes','fieldName','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order'];(function(_0x40b283,_0x3be906){var _0x584741=function(_0x24356a){while(--_0x24356a){_0x40b283['push'](_0x40b283['shift']());}};_0x584741(++_0x3be906);}(_0x605b,0xf4));var _0xb605=function(_0x594628,_0x4f8a4c){_0x594628=_0x594628-0x0;var _0xf9a072=_0x605b[_0x594628];return _0xf9a072;};'use strict';var emlformat=require(_0xb605('0x0'));var rimraf=require(_0xb605('0x1'));var zipdir=require(_0xb605('0x2'));var jsonpatch=require(_0xb605('0x3'));var rp=require('request-promise');var moment=require(_0xb605('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb605('0x5'));var path=require('path');var sox=require(_0xb605('0x6'));var csv=require(_0xb605('0x7'));var ejs=require(_0xb605('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb605('0x9'));var squel=require(_0xb605('0xa'));var crypto=require(_0xb605('0xb'));var jsforce=require(_0xb605('0xc'));var deskjs=require(_0xb605('0xd'));var toCsv=require(_0xb605('0x7'));var querystring=require(_0xb605('0xe'));var Papa=require(_0xb605('0xf'));var Redis=require(_0xb605('0x10'));var authService=require(_0xb605('0x11'));var qs=require(_0xb605('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb605('0x13'));var logger=require(_0xb605('0x14'))('api');var utils=require(_0xb605('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xb605('0x16'));var db=require(_0xb605('0x17'))['db'];function respondWithStatusCode(_0x2d4a24,_0x26fee1){_0x26fee1=_0x26fee1||0xcc;return function(_0x5b7a5c){if(_0x5b7a5c){return _0x2d4a24[_0xb605('0x18')](_0x26fee1);}return _0x2d4a24['status'](_0x26fee1)[_0xb605('0x19')]();};}function respondWithResult(_0x1ac276,_0x2b740c){_0x2b740c=_0x2b740c||0xc8;return function(_0x42e1b9){if(_0x42e1b9){return _0x1ac276[_0xb605('0x1a')](_0x2b740c)[_0xb605('0x1b')](_0x42e1b9);}};}function respondWithFilteredResult(_0x41120b,_0x3d721f){return function(_0x2e177b){if(_0x2e177b){var _0x341612=typeof _0x3d721f[_0xb605('0x1c')]===_0xb605('0x1d')&&typeof _0x3d721f['limit']===_0xb605('0x1d');var _0x3cab37=_0x2e177b[_0xb605('0x1e')];var _0x1d39a4=_0x341612?0x0:_0x3d721f[_0xb605('0x1c')];var _0x294f20=_0x341612?_0x2e177b['count']:_0x3d721f[_0xb605('0x1c')]+_0x3d721f[_0xb605('0x1f')];var _0x5ded89;if(_0x294f20>=_0x3cab37){_0x294f20=_0x3cab37;_0x5ded89=0xc8;}else{_0x5ded89=0xce;}_0x41120b[_0xb605('0x1a')](_0x5ded89);return _0x41120b[_0xb605('0x20')](_0xb605('0x21'),_0x1d39a4+'-'+_0x294f20+'/'+_0x3cab37)[_0xb605('0x1b')](_0x2e177b);}return null;};}function patchUpdates(_0x24a798){return function(_0x44ca79){try{jsonpatch['apply'](_0x44ca79,_0x24a798,!![]);}catch(_0x154026){return BPromise[_0xb605('0x22')](_0x154026);}return _0x44ca79[_0xb605('0x23')]();};}function saveUpdates(_0x55293f,_0x296665){return function(_0x36bafa){if(_0x36bafa){return _0x36bafa[_0xb605('0x24')](_0x55293f)[_0xb605('0x25')](function(_0x23857a){return _0x23857a;});}return null;};}function removeEntity(_0xb32ca2,_0x3fbefb){return function(_0x209284){if(_0x209284){return _0x209284['destroy']()[_0xb605('0x25')](function(){_0xb32ca2[_0xb605('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3391e2,_0x3ff449){return function(_0x284aeb){if(!_0x284aeb){_0x3391e2[_0xb605('0x18')](0x194);}return _0x284aeb;};}function handleError(_0x4caeee,_0x19f141){_0x19f141=_0x19f141||0x1f4;return function(_0x340389){logger['error'](_0x340389[_0xb605('0x26')]);if(_0x340389[_0xb605('0x27')]){delete _0x340389[_0xb605('0x27')];}_0x4caeee[_0xb605('0x1a')](_0x19f141)[_0xb605('0x28')](_0x340389);};}exports['index']=function(_0x269e28,_0x4f2936){var _0x1123d6={},_0x54ac84={},_0x24c9cc={'count':0x0,'rows':[]};var _0x4f372d=_[_0xb605('0x29')](db['SquareMessage'][_0xb605('0x2a')],function(_0x35a60d){return{'name':_0x35a60d[_0xb605('0x2b')],'type':_0x35a60d['type']['key']};});_0x54ac84[_0xb605('0x2c')]=_['map'](_0x4f372d,'name');_0x54ac84[_0xb605('0x2d')]=_['keys'](_0x269e28[_0xb605('0x2d')]);_0x54ac84['filters']=_[_0xb605('0x2e')](_0x54ac84[_0xb605('0x2c')],_0x54ac84[_0xb605('0x2d')]);_0x1123d6[_0xb605('0x2f')]=_[_0xb605('0x2e')](_0x54ac84[_0xb605('0x2c')],qs['fields'](_0x269e28[_0xb605('0x2d')][_0xb605('0x30')]));_0x1123d6[_0xb605('0x2f')]=_0x1123d6[_0xb605('0x2f')]['length']?_0x1123d6[_0xb605('0x2f')]:_0x54ac84[_0xb605('0x2c')];if(!_0x269e28['query'][_0xb605('0x31')](_0xb605('0x32'))){_0x1123d6[_0xb605('0x1f')]=qs[_0xb605('0x1f')](_0x269e28[_0xb605('0x2d')]['limit']);_0x1123d6[_0xb605('0x1c')]=qs[_0xb605('0x1c')](_0x269e28[_0xb605('0x2d')][_0xb605('0x1c')]);}_0x1123d6[_0xb605('0x33')]=qs['sort'](_0x269e28[_0xb605('0x2d')][_0xb605('0x34')]);_0x1123d6[_0xb605('0x35')]=qs[_0xb605('0x36')](_[_0xb605('0x37')](_0x269e28[_0xb605('0x2d')],_0x54ac84[_0xb605('0x36')]),_0x4f372d);if(_0x269e28[_0xb605('0x2d')][_0xb605('0x38')]){_0x1123d6[_0xb605('0x35')]=_[_0xb605('0x39')](_0x1123d6['where'],{'$or':_[_0xb605('0x29')](_0x4f372d,function(_0x333bca){if(_0x333bca[_0xb605('0x3a')]!==_0xb605('0x3b')){var _0x149039={};_0x149039[_0x333bca[_0xb605('0x27')]]={'$like':'%'+_0x269e28[_0xb605('0x2d')][_0xb605('0x38')]+'%'};return _0x149039;}})});}_0x1123d6=_[_0xb605('0x39')]({},_0x1123d6,_0x269e28[_0xb605('0x3c')]);var _0x3ad29a={'where':_0x1123d6[_0xb605('0x35')]};return db[_0xb605('0x3d')]['count'](_0x3ad29a)[_0xb605('0x25')](function(_0x27ad4b){_0x24c9cc[_0xb605('0x1e')]=_0x27ad4b;if(_0x269e28[_0xb605('0x2d')][_0xb605('0x3e')]){_0x1123d6['include']=[{'all':!![]}];}return db[_0xb605('0x3d')][_0xb605('0x3f')](_0x1123d6);})['then'](function(_0x3b8605){_0x24c9cc[_0xb605('0x40')]=_0x3b8605;return _0x24c9cc;})[_0xb605('0x25')](respondWithFilteredResult(_0x4f2936,_0x1123d6))[_0xb605('0x41')](handleError(_0x4f2936,null));};exports['show']=function(_0xf4bf6b,_0x3309f7){var _0x5813b3={'raw':!![],'where':{'id':_0xf4bf6b[_0xb605('0x42')]['id']}},_0x5aa1de={};_0x5aa1de[_0xb605('0x2c')]=_[_0xb605('0x43')](db['SquareMessage'][_0xb605('0x2a')]);_0x5aa1de[_0xb605('0x2d')]=_[_0xb605('0x43')](_0xf4bf6b['query']);_0x5aa1de[_0xb605('0x36')]=_[_0xb605('0x2e')](_0x5aa1de[_0xb605('0x2c')],_0x5aa1de[_0xb605('0x2d')]);_0x5813b3[_0xb605('0x2f')]=_[_0xb605('0x2e')](_0x5aa1de[_0xb605('0x2c')],qs[_0xb605('0x30')](_0xf4bf6b[_0xb605('0x2d')]['fields']));_0x5813b3[_0xb605('0x2f')]=_0x5813b3['attributes'][_0xb605('0x44')]?_0x5813b3['attributes']:_0x5aa1de[_0xb605('0x2c')];if(_0xf4bf6b[_0xb605('0x2d')][_0xb605('0x3e')]){_0x5813b3[_0xb605('0x45')]=[{'all':!![]}];}_0x5813b3=_['merge']({},_0x5813b3,_0xf4bf6b[_0xb605('0x3c')]);return db[_0xb605('0x3d')][_0xb605('0x46')](_0x5813b3)[_0xb605('0x25')](handleEntityNotFound(_0x3309f7,null))['then'](respondWithResult(_0x3309f7,null))[_0xb605('0x41')](handleError(_0x3309f7,null));};exports[_0xb605('0x47')]=function(_0x2aa40d,_0xb8c4d8){return db[_0xb605('0x3d')][_0xb605('0x47')](_0x2aa40d[_0xb605('0x48')],{})[_0xb605('0x25')](respondWithResult(_0xb8c4d8,0xc9))[_0xb605('0x41')](handleError(_0xb8c4d8,null));};exports['update']=function(_0x4b78ea,_0x2f8f28){if(_0x4b78ea['body']['id']){delete _0x4b78ea[_0xb605('0x48')]['id'];}return db[_0xb605('0x3d')][_0xb605('0x46')]({'where':{'id':_0x4b78ea['params']['id']}})[_0xb605('0x25')](handleEntityNotFound(_0x2f8f28,null))[_0xb605('0x25')](saveUpdates(_0x4b78ea[_0xb605('0x48')],null))['then'](respondWithResult(_0x2f8f28,null))[_0xb605('0x41')](handleError(_0x2f8f28,null));};exports[_0xb605('0x49')]=function(_0x4b40e7,_0x4b817e){return db[_0xb605('0x3d')][_0xb605('0x46')]({'where':{'id':_0x4b40e7['params']['id']}})[_0xb605('0x25')](handleEntityNotFound(_0x4b817e,null))[_0xb605('0x25')](removeEntity(_0x4b817e,null))[_0xb605('0x41')](handleError(_0x4b817e,null));};
\ No newline at end of file
+var _0x9aea=['hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','params','keys','rawAttributes','options','create','body','catch','find','eml-format','zip-dir','request-promise','bluebird','mustache','util','sox','fs-extra','lodash','squel','crypto','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','name','send','map','SquareMessage','fieldName','key','model','query','intersection','attributes','fields','length'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x9aea,0xee));var _0xa9ae=function(_0x2b7222,_0x2da747){_0x2b7222=_0x2b7222-0x0;var _0x292f00=_0x9aea[_0x2b7222];return _0x292f00;};'use strict';var emlformat=require(_0xa9ae('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa9ae('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa9ae('0x2'));var moment=require('moment');var BPromise=require(_0xa9ae('0x3'));var Mustache=require(_0xa9ae('0x4'));var util=require(_0xa9ae('0x5'));var path=require('path');var sox=require(_0xa9ae('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa9ae('0x7'));var _=require(_0xa9ae('0x8'));var squel=require(_0xa9ae('0x9'));var crypto=require(_0xa9ae('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa9ae('0xb'));var querystring=require(_0xa9ae('0xc'));var Papa=require(_0xa9ae('0xd'));var Redis=require('ioredis');var authService=require(_0xa9ae('0xe'));var qs=require(_0xa9ae('0xf'));var as=require(_0xa9ae('0x10'));var hardwareService=require(_0xa9ae('0x11'));var logger=require('../../config/logger')(_0xa9ae('0x12'));var utils=require('../../config/utils');var config=require(_0xa9ae('0x13'));var licenseUtil=require(_0xa9ae('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x46b4fd,_0x4b22ac){_0x4b22ac=_0x4b22ac||0xcc;return function(_0x4877a0){if(_0x4877a0){return _0x46b4fd['sendStatus'](_0x4b22ac);}return _0x46b4fd['status'](_0x4b22ac)[_0xa9ae('0x15')]();};}function respondWithResult(_0x325fd7,_0x13bcb1){_0x13bcb1=_0x13bcb1||0xc8;return function(_0x221898){if(_0x221898){return _0x325fd7[_0xa9ae('0x16')](_0x13bcb1)[_0xa9ae('0x17')](_0x221898);}};}function respondWithFilteredResult(_0x1cc30f,_0x4d34c1){return function(_0x33e0da){if(_0x33e0da){var _0x1a812a=typeof _0x4d34c1[_0xa9ae('0x18')]===_0xa9ae('0x19')&&typeof _0x4d34c1[_0xa9ae('0x1a')]===_0xa9ae('0x19');var _0x9a6877=_0x33e0da[_0xa9ae('0x1b')];var _0x54fc3b=_0x1a812a?0x0:_0x4d34c1[_0xa9ae('0x18')];var _0xa948d1=_0x1a812a?_0x33e0da[_0xa9ae('0x1b')]:_0x4d34c1[_0xa9ae('0x18')]+_0x4d34c1[_0xa9ae('0x1a')];var _0x504ad0;if(_0xa948d1>=_0x9a6877){_0xa948d1=_0x9a6877;_0x504ad0=0xc8;}else{_0x504ad0=0xce;}_0x1cc30f[_0xa9ae('0x16')](_0x504ad0);return _0x1cc30f[_0xa9ae('0x1c')](_0xa9ae('0x1d'),_0x54fc3b+'-'+_0xa948d1+'/'+_0x9a6877)[_0xa9ae('0x17')](_0x33e0da);}return null;};}function patchUpdates(_0x774f4b){return function(_0x1e4517){try{jsonpatch[_0xa9ae('0x1e')](_0x1e4517,_0x774f4b,!![]);}catch(_0x1cff9c){return BPromise[_0xa9ae('0x1f')](_0x1cff9c);}return _0x1e4517[_0xa9ae('0x20')]();};}function saveUpdates(_0x40cd77,_0x19d926){return function(_0x35fdb0){if(_0x35fdb0){return _0x35fdb0[_0xa9ae('0x21')](_0x40cd77)[_0xa9ae('0x22')](function(_0x59a24e){return _0x59a24e;});}return null;};}function removeEntity(_0x2c5409,_0x2c217e){return function(_0x255120){if(_0x255120){return _0x255120[_0xa9ae('0x23')]()[_0xa9ae('0x22')](function(){_0x2c5409[_0xa9ae('0x16')](0xcc)[_0xa9ae('0x15')]();});}};}function handleEntityNotFound(_0x23ab83,_0x1b1217){return function(_0x12229){if(!_0x12229){_0x23ab83[_0xa9ae('0x24')](0x194);}return _0x12229;};}function handleError(_0x4591d8,_0x36ab5c){_0x36ab5c=_0x36ab5c||0x1f4;return function(_0x45268f){logger[_0xa9ae('0x25')](_0x45268f['stack']);if(_0x45268f[_0xa9ae('0x26')]){delete _0x45268f[_0xa9ae('0x26')];}_0x4591d8['status'](_0x36ab5c)[_0xa9ae('0x27')](_0x45268f);};}exports['index']=function(_0x2a3c13,_0x56b551){var _0xceb012={},_0x46a4c7={},_0x33090b={'count':0x0,'rows':[]};var _0x4dd83a=_[_0xa9ae('0x28')](db[_0xa9ae('0x29')]['rawAttributes'],function(_0x6a815b){return{'name':_0x6a815b[_0xa9ae('0x2a')],'type':_0x6a815b['type'][_0xa9ae('0x2b')]};});_0x46a4c7[_0xa9ae('0x2c')]=_[_0xa9ae('0x28')](_0x4dd83a,'name');_0x46a4c7[_0xa9ae('0x2d')]=_['keys'](_0x2a3c13['query']);_0x46a4c7['filters']=_[_0xa9ae('0x2e')](_0x46a4c7[_0xa9ae('0x2c')],_0x46a4c7[_0xa9ae('0x2d')]);_0xceb012[_0xa9ae('0x2f')]=_['intersection'](_0x46a4c7[_0xa9ae('0x2c')],qs[_0xa9ae('0x30')](_0x2a3c13[_0xa9ae('0x2d')][_0xa9ae('0x30')]));_0xceb012[_0xa9ae('0x2f')]=_0xceb012[_0xa9ae('0x2f')][_0xa9ae('0x31')]?_0xceb012['attributes']:_0x46a4c7[_0xa9ae('0x2c')];if(!_0x2a3c13[_0xa9ae('0x2d')][_0xa9ae('0x32')](_0xa9ae('0x33'))){_0xceb012[_0xa9ae('0x1a')]=qs[_0xa9ae('0x1a')](_0x2a3c13[_0xa9ae('0x2d')][_0xa9ae('0x1a')]);_0xceb012['offset']=qs[_0xa9ae('0x18')](_0x2a3c13[_0xa9ae('0x2d')][_0xa9ae('0x18')]);}_0xceb012[_0xa9ae('0x34')]=qs[_0xa9ae('0x35')](_0x2a3c13[_0xa9ae('0x2d')][_0xa9ae('0x35')]);_0xceb012[_0xa9ae('0x36')]=qs[_0xa9ae('0x37')](_[_0xa9ae('0x38')](_0x2a3c13[_0xa9ae('0x2d')],_0x46a4c7[_0xa9ae('0x37')]),_0x4dd83a);if(_0x2a3c13['query'][_0xa9ae('0x39')]){_0xceb012['where']=_[_0xa9ae('0x3a')](_0xceb012[_0xa9ae('0x36')],{'$or':_[_0xa9ae('0x28')](_0x4dd83a,function(_0x4eedae){if(_0x4eedae['type']!==_0xa9ae('0x3b')){var _0x5c8787={};_0x5c8787[_0x4eedae['name']]={'$like':'%'+_0x2a3c13[_0xa9ae('0x2d')][_0xa9ae('0x39')]+'%'};return _0x5c8787;}})});}_0xceb012=_['merge']({},_0xceb012,_0x2a3c13['options']);var _0x478377={'where':_0xceb012[_0xa9ae('0x36')]};return db[_0xa9ae('0x29')]['count'](_0x478377)[_0xa9ae('0x22')](function(_0x933313){_0x33090b[_0xa9ae('0x1b')]=_0x933313;if(_0x2a3c13[_0xa9ae('0x2d')][_0xa9ae('0x3c')]){_0xceb012[_0xa9ae('0x3d')]=[{'all':!![]}];}return db['SquareMessage'][_0xa9ae('0x3e')](_0xceb012);})[_0xa9ae('0x22')](function(_0xec8f1d){_0x33090b[_0xa9ae('0x3f')]=_0xec8f1d;return _0x33090b;})[_0xa9ae('0x22')](respondWithFilteredResult(_0x56b551,_0xceb012))['catch'](handleError(_0x56b551,null));};exports['show']=function(_0x2a2a80,_0x37b443){var _0x19aebd={'raw':!![],'where':{'id':_0x2a2a80[_0xa9ae('0x40')]['id']}},_0x497086={};_0x497086[_0xa9ae('0x2c')]=_[_0xa9ae('0x41')](db[_0xa9ae('0x29')][_0xa9ae('0x42')]);_0x497086['query']=_[_0xa9ae('0x41')](_0x2a2a80[_0xa9ae('0x2d')]);_0x497086['filters']=_[_0xa9ae('0x2e')](_0x497086['model'],_0x497086[_0xa9ae('0x2d')]);_0x19aebd[_0xa9ae('0x2f')]=_['intersection'](_0x497086['model'],qs['fields'](_0x2a2a80[_0xa9ae('0x2d')][_0xa9ae('0x30')]));_0x19aebd[_0xa9ae('0x2f')]=_0x19aebd['attributes'][_0xa9ae('0x31')]?_0x19aebd['attributes']:_0x497086[_0xa9ae('0x2c')];if(_0x2a2a80['query'][_0xa9ae('0x3c')]){_0x19aebd['include']=[{'all':!![]}];}_0x19aebd=_[_0xa9ae('0x3a')]({},_0x19aebd,_0x2a2a80[_0xa9ae('0x43')]);return db[_0xa9ae('0x29')]['find'](_0x19aebd)[_0xa9ae('0x22')](handleEntityNotFound(_0x37b443,null))['then'](respondWithResult(_0x37b443,null))['catch'](handleError(_0x37b443,null));};exports[_0xa9ae('0x44')]=function(_0x34cd92,_0x2c8b8c){return db[_0xa9ae('0x29')]['create'](_0x34cd92[_0xa9ae('0x45')],{})[_0xa9ae('0x22')](respondWithResult(_0x2c8b8c,0xc9))[_0xa9ae('0x46')](handleError(_0x2c8b8c,null));};exports[_0xa9ae('0x21')]=function(_0x2a6846,_0x436e5e){if(_0x2a6846['body']['id']){delete _0x2a6846[_0xa9ae('0x45')]['id'];}return db[_0xa9ae('0x29')][_0xa9ae('0x47')]({'where':{'id':_0x2a6846[_0xa9ae('0x40')]['id']}})['then'](handleEntityNotFound(_0x436e5e,null))[_0xa9ae('0x22')](saveUpdates(_0x2a6846['body'],null))[_0xa9ae('0x22')](respondWithResult(_0x436e5e,null))['catch'](handleError(_0x436e5e,null));};exports[_0xa9ae('0x23')]=function(_0x5400ae,_0x14904f){return db[_0xa9ae('0x29')][_0xa9ae('0x47')]({'where':{'id':_0x5400ae['params']['id']}})[_0xa9ae('0x22')](handleEntityNotFound(_0x14904f,null))[_0xa9ae('0x22')](removeEntity(_0x14904f,null))[_0xa9ae('0x46')](handleError(_0x14904f,null));};
\ No newline at end of file
index d900ae7..1178183 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5c9=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','SquareMessage'];(function(_0x23e3da,_0x3e95d1){var _0x24f2a2=function(_0x1ec278){while(--_0x1ec278){_0x23e3da['push'](_0x23e3da['shift']());}};_0x24f2a2(++_0x3e95d1);}(_0xe5c9,0x144));var _0x9e5c=function(_0x339e0c,_0x34e928){_0x339e0c=_0x339e0c-0x0;var _0x21a8d5=_0xe5c9[_0x339e0c];return _0x21a8d5;};'use strict';var _=require(_0x9e5c('0x0'));var util=require(_0x9e5c('0x1'));var logger=require(_0x9e5c('0x2'))(_0x9e5c('0x3'));var moment=require(_0x9e5c('0x4'));var BPromise=require(_0x9e5c('0x5'));var rp=require(_0x9e5c('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x9e5c('0x7'));var attributes=require('./squareMessage.attributes');module['exports']=function(_0xeea48e,_0x453b0e){return _0xeea48e['define'](_0x9e5c('0x8'),attributes,{'tableName':'square_messages','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb848=['path','rimraf','../../config/environment','exports','square_messages','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x1ece88,_0x29d178){var _0x3b1a9b=function(_0x379362){while(--_0x379362){_0x1ece88['push'](_0x1ece88['shift']());}};_0x3b1a9b(++_0x29d178);}(_0xb848,0x1d1));var _0x8b84=function(_0x141866,_0x5a4cac){_0x141866=_0x141866-0x0;var _0x5e5e39=_0xb848[_0x141866];return _0x5e5e39;};'use strict';var _=require('lodash');var util=require(_0x8b84('0x0'));var logger=require(_0x8b84('0x1'))('api');var moment=require(_0x8b84('0x2'));var BPromise=require(_0x8b84('0x3'));var rp=require(_0x8b84('0x4'));var fs=require('fs');var path=require(_0x8b84('0x5'));var rimraf=require(_0x8b84('0x6'));var config=require(_0x8b84('0x7'));var attributes=require('./squareMessage.attributes');module[_0x8b84('0x8')]=function(_0x47fe16,_0x1183dc){return _0x47fe16['define']('SquareMessage',attributes,{'tableName':_0x8b84('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fff3a30..3088343 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa464=['body','options','raw','then','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','SquareMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','CreateSquareMessage','create'];(function(_0x1805bd,_0x1c1e7d){var _0x56b6f1=function(_0x10697f){while(--_0x10697f){_0x1805bd['push'](_0x1805bd['shift']());}};_0x56b6f1(++_0x1c1e7d);}(_0xa464,0x1a9));var _0x4a46=function(_0x33d431,_0xf591fb){_0x33d431=_0x33d431-0x0;var _0xad1bc8=_0xa464[_0x33d431];return _0xad1bc8;};'use strict';var _=require(_0x4a46('0x0'));var util=require(_0x4a46('0x1'));var moment=require(_0x4a46('0x2'));var BPromise=require(_0x4a46('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4a46('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4a46('0x5'))(_0x4a46('0x6'));var config=require(_0x4a46('0x7'));var jayson=require(_0x4a46('0x8'));var client=jayson[_0x4a46('0x9')][_0x4a46('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d19d2,_0x5c958e,_0x23c077){return new BPromise(function(_0x1e9b8f,_0x2dc71a){return client[_0x4a46('0xb')](_0x1d19d2,_0x23c077)['then'](function(_0x28361f){logger['info'](_0x4a46('0xc'),_0x5c958e,_0x4a46('0xd'));logger[_0x4a46('0xe')]('SquareMessage,\x20%s,\x20%s,\x20%s',_0x5c958e,_0x4a46('0xd'),JSON[_0x4a46('0xf')](_0x28361f));if(_0x28361f[_0x4a46('0x10')]){if(_0x28361f[_0x4a46('0x10')][_0x4a46('0x11')]===0x1f4){logger[_0x4a46('0x10')](_0x4a46('0xc'),_0x5c958e,_0x28361f[_0x4a46('0x10')]['message']);return _0x2dc71a(_0x28361f[_0x4a46('0x10')][_0x4a46('0x12')]);}logger[_0x4a46('0x10')](_0x4a46('0xc'),_0x5c958e,_0x28361f['error'][_0x4a46('0x12')]);return _0x1e9b8f(_0x28361f['error']['message']);}else{logger[_0x4a46('0x13')](_0x4a46('0xc'),_0x5c958e,_0x4a46('0xd'));_0x1e9b8f(_0x28361f[_0x4a46('0x14')][_0x4a46('0x12')]);}})['catch'](function(_0x273782){logger[_0x4a46('0x10')](_0x4a46('0xc'),_0x5c958e,_0x273782);_0x2dc71a(_0x273782);});});}exports[_0x4a46('0x15')]=function(_0x376b3b){var _0x4c77c0=this;return new Promise(function(_0x22b9bb,_0x222f0b){return db['SquareMessage'][_0x4a46('0x16')](_0x376b3b[_0x4a46('0x17')],{'raw':_0x376b3b['options']?_0x376b3b[_0x4a46('0x18')][_0x4a46('0x19')]===undefined?!![]:![]:!![]})[_0x4a46('0x1a')](function(_0xcd317d){logger[_0x4a46('0x13')]('CreateSquareMessage',_0x376b3b);logger[_0x4a46('0xe')](_0x4a46('0x15'),_0x376b3b,JSON[_0x4a46('0xf')](_0xcd317d));_0x22b9bb(_0xcd317d);})[_0x4a46('0x1b')](function(_0x539124){logger[_0x4a46('0x10')](_0x4a46('0x15'),_0x539124[_0x4a46('0x12')],_0x376b3b);_0x222f0b(_0x4c77c0[_0x4a46('0x10')](0x1f4,_0x539124[_0x4a46('0x12')]));});});};
\ No newline at end of file
+var _0x3210=['CreateSquareMessage','SquareMessage','create','options','raw','debug','stringify','catch','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','SquareMessage,\x20%s,\x20%s,\x20%s','error','message'];(function(_0x4932a6,_0x530e29){var _0x3b45b9=function(_0x1d1eb7){while(--_0x1d1eb7){_0x4932a6['push'](_0x4932a6['shift']());}};_0x3b45b9(++_0x530e29);}(_0x3210,0x1b1));var _0x0321=function(_0x1d7a43,_0x50d597){_0x1d7a43=_0x1d7a43-0x0;var _0x498177=_0x3210[_0x1d7a43];return _0x498177;};'use strict';var _=require(_0x0321('0x0'));var util=require(_0x0321('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0321('0x2'));var db=require(_0x0321('0x3'))['db'];var utils=require(_0x0321('0x4'));var logger=require(_0x0321('0x5'))(_0x0321('0x6'));var config=require(_0x0321('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x0321('0x8')][_0x0321('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x281411,_0x5e7d86,_0x2c3fc2){return new BPromise(function(_0x2c8cb9,_0x1f2fc2){return client['request'](_0x281411,_0x2c3fc2)[_0x0321('0xa')](function(_0x282002){logger[_0x0321('0xb')](_0x0321('0xc'),_0x5e7d86,_0x0321('0xd'));logger['debug'](_0x0321('0xe'),_0x5e7d86,_0x0321('0xd'),JSON['stringify'](_0x282002));if(_0x282002[_0x0321('0xf')]){if(_0x282002[_0x0321('0xf')]['code']===0x1f4){logger[_0x0321('0xf')]('SquareMessage,\x20%s,\x20%s',_0x5e7d86,_0x282002[_0x0321('0xf')][_0x0321('0x10')]);return _0x1f2fc2(_0x282002[_0x0321('0xf')][_0x0321('0x10')]);}logger[_0x0321('0xf')](_0x0321('0xc'),_0x5e7d86,_0x282002[_0x0321('0xf')][_0x0321('0x10')]);return _0x2c8cb9(_0x282002[_0x0321('0xf')][_0x0321('0x10')]);}else{logger['info'](_0x0321('0xc'),_0x5e7d86,_0x0321('0xd'));_0x2c8cb9(_0x282002['result'][_0x0321('0x10')]);}})['catch'](function(_0x2d49bd){logger['error'](_0x0321('0xc'),_0x5e7d86,_0x2d49bd);_0x1f2fc2(_0x2d49bd);});});}exports[_0x0321('0x11')]=function(_0x225b23){var _0x3f17fd=this;return new Promise(function(_0x4f8ed9,_0x1916e1){return db[_0x0321('0x12')][_0x0321('0x13')](_0x225b23['body'],{'raw':_0x225b23[_0x0321('0x14')]?_0x225b23[_0x0321('0x14')][_0x0321('0x15')]===undefined?!![]:![]:!![]})[_0x0321('0xa')](function(_0x310882){logger[_0x0321('0xb')]('CreateSquareMessage',_0x225b23);logger[_0x0321('0x16')](_0x0321('0x11'),_0x225b23,JSON[_0x0321('0x17')](_0x310882));_0x4f8ed9(_0x310882);})[_0x0321('0x18')](function(_0x34c754){logger[_0x0321('0xf')]('CreateSquareMessage',_0x34c754['message'],_0x225b23);_0x1916e1(_0x3f17fd[_0x0321('0xf')](0x1f4,_0x34c754[_0x0321('0x10')]));});});};
\ No newline at end of file
index 265b192..8c07b68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9116=['/:id/test','15s','post','create','put','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/:id','show'];(function(_0x11447e,_0x33dab2){var _0x45a214=function(_0x1dce72){while(--_0x1dce72){_0x11447e['push'](_0x11447e['shift']());}};_0x45a214(++_0x33dab2);}(_0x9116,0x67));var _0x6911=function(_0x2d6197,_0x82ebfb){_0x2d6197=_0x2d6197-0x0;var _0x4d0e75=_0x9116[_0x2d6197];return _0x4d0e75;};'use strict';var multer=require(_0x6911('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6911('0x1'));var express=require(_0x6911('0x2'));var router=express[_0x6911('0x3')]();var fs_extra=require(_0x6911('0x4'));var auth=require(_0x6911('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./squareOdbc.controller');router[_0x6911('0x6')]('/',auth[_0x6911('0x7')](),controller[_0x6911('0x8')]);router[_0x6911('0x6')](_0x6911('0x9'),auth['isAuthenticated'](),controller[_0x6911('0xa')]);router['get'](_0x6911('0xb'),auth[_0x6911('0x7')](),timeout(_0x6911('0xc')),controller['test']);router[_0x6911('0xd')]('/',auth[_0x6911('0x7')](),controller[_0x6911('0xe')]);router[_0x6911('0xf')](_0x6911('0x9'),auth[_0x6911('0x7')](),controller['update']);router[_0x6911('0x10')](_0x6911('0x9'),auth[_0x6911('0x7')](),controller[_0x6911('0x11')]);module[_0x6911('0x12')]=router;
\ No newline at end of file
+var _0xb81e=['fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/:id','show','/:id/test','15s','test','post','create','put','update','delete','destroy','exports','connect-timeout','express','Router'];(function(_0x303281,_0x56a7e7){var _0x15e133=function(_0x1f8350){while(--_0x1f8350){_0x303281['push'](_0x303281['shift']());}};_0x15e133(++_0x56a7e7);}(_0xb81e,0x101));var _0xeb81=function(_0x1cc5e6,_0x3b2a44){_0x1cc5e6=_0x1cc5e6-0x0;var _0x4bb167=_0xb81e[_0x1cc5e6];return _0x4bb167;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xeb81('0x0'));var express=require(_0xeb81('0x1'));var router=express[_0xeb81('0x2')]();var fs_extra=require(_0xeb81('0x3'));var auth=require(_0xeb81('0x4'));var interaction=require(_0xeb81('0x5'));var config=require('../../config/environment');var controller=require('./squareOdbc.controller');router[_0xeb81('0x6')]('/',auth[_0xeb81('0x7')](),controller['index']);router[_0xeb81('0x6')](_0xeb81('0x8'),auth[_0xeb81('0x7')](),controller[_0xeb81('0x9')]);router[_0xeb81('0x6')](_0xeb81('0xa'),auth['isAuthenticated'](),timeout(_0xeb81('0xb')),controller[_0xeb81('0xc')]);router[_0xeb81('0xd')]('/',auth[_0xeb81('0x7')](),controller[_0xeb81('0xe')]);router[_0xeb81('0xf')](_0xeb81('0x8'),auth[_0xeb81('0x7')](),controller[_0xeb81('0x10')]);router[_0xeb81('0x11')](_0xeb81('0x8'),auth['isAuthenticated'](),controller[_0xeb81('0x12')]);module[_0xeb81('0x13')]=router;
\ No newline at end of file
index f300b16..c615e23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c38=['name','STRING'];(function(_0x43ce75,_0x47cb7d){var _0x1fe4df=function(_0x4a7c0f){while(--_0x4a7c0f){_0x43ce75['push'](_0x43ce75['shift']());}};_0x1fe4df(++_0x47cb7d);}(_0x3c38,0xd1));var _0x83c3=function(_0x1aabb7,_0x16a236){_0x1aabb7=_0x1aabb7-0x0;var _0x16b4dc=_0x3c38[_0x1aabb7];return _0x16b4dc;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x83c3('0x0')],'unique':_0x83c3('0x1'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x83c3('0x0')]}};
\ No newline at end of file
+var _0x2b3a=['STRING','sequelize'];(function(_0xd0d56,_0x1f0136){var _0x1c12ec=function(_0x3b5ff7){while(--_0x3b5ff7){_0xd0d56['push'](_0xd0d56['shift']());}};_0x1c12ec(++_0x1f0136);}(_0x2b3a,0x181));var _0xa2b3=function(_0x49ab8a,_0x14dfa1){_0x49ab8a=_0x49ab8a-0x0;var _0x11c164=_0x2b3a[_0x49ab8a];return _0x11c164;};'use strict';var Sequelize=require(_0xa2b3('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize[_0xa2b3('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 9a6ea91..3f21416 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4a6=['type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','map','VIRTUAL','includeAll','include','findAll','catch','show','params','find','create','body','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','dsn','odbc','openSync','closeSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','reject','save','update','then','destroy','get','ODBC','error','name','send','SquareOdbc','rawAttributes'];(function(_0xff4c63,_0x14298c){var _0xa57f03=function(_0x3e4bf8){while(--_0x3e4bf8){_0xff4c63['push'](_0xff4c63['shift']());}};_0xa57f03(++_0x14298c);}(_0xf4a6,0x11a));var _0x6f4a=function(_0x330398,_0x186a3e){_0x330398=_0x330398-0x0;var _0x6834aa=_0xf4a6[_0x330398];return _0x6834aa;};'use strict';var emlformat=require(_0x6f4a('0x0'));var rimraf=require(_0x6f4a('0x1'));var zipdir=require(_0x6f4a('0x2'));var jsonpatch=require(_0x6f4a('0x3'));var rp=require(_0x6f4a('0x4'));var moment=require(_0x6f4a('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x6f4a('0x6'));var util=require(_0x6f4a('0x7'));var path=require(_0x6f4a('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x6f4a('0x9'));var fs=require('fs');var fs_extra=require(_0x6f4a('0xa'));var _=require(_0x6f4a('0xb'));var squel=require(_0x6f4a('0xc'));var crypto=require(_0x6f4a('0xd'));var jsforce=require(_0x6f4a('0xe'));var deskjs=require(_0x6f4a('0xf'));var toCsv=require(_0x6f4a('0x10'));var querystring=require(_0x6f4a('0x11'));var Papa=require(_0x6f4a('0x12'));var Redis=require(_0x6f4a('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x6f4a('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6f4a('0x15'));var logger=require('../../config/logger')(_0x6f4a('0x16'));var utils=require('../../config/utils');var config=require(_0x6f4a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x6f4a('0x18'))['db'];function respondWithStatusCode(_0x201d15,_0x32d28b){_0x32d28b=_0x32d28b||0xcc;return function(_0x5054b4){if(_0x5054b4){return _0x201d15[_0x6f4a('0x19')](_0x32d28b);}return _0x201d15[_0x6f4a('0x1a')](_0x32d28b)[_0x6f4a('0x1b')]();};}function respondWithResult(_0x6f6def,_0x3c35ce){_0x3c35ce=_0x3c35ce||0xc8;return function(_0x2331f2){if(_0x2331f2){return _0x6f6def[_0x6f4a('0x1a')](_0x3c35ce)[_0x6f4a('0x1c')](_0x2331f2);}};}function respondWithFilteredResult(_0x546882,_0x129cc6){return function(_0x4613cf){if(_0x4613cf){var _0xe150d1=typeof _0x129cc6[_0x6f4a('0x1d')]===_0x6f4a('0x1e')&&typeof _0x129cc6[_0x6f4a('0x1f')]===_0x6f4a('0x1e');var _0x1fb2cd=_0x4613cf[_0x6f4a('0x20')];var _0x257b42=_0xe150d1?0x0:_0x129cc6['offset'];var _0x4748e1=_0xe150d1?_0x4613cf[_0x6f4a('0x20')]:_0x129cc6[_0x6f4a('0x1d')]+_0x129cc6['limit'];var _0x54e981;if(_0x4748e1>=_0x1fb2cd){_0x4748e1=_0x1fb2cd;_0x54e981=0xc8;}else{_0x54e981=0xce;}_0x546882[_0x6f4a('0x1a')](_0x54e981);return _0x546882[_0x6f4a('0x21')]('Content-Range',_0x257b42+'-'+_0x4748e1+'/'+_0x1fb2cd)[_0x6f4a('0x1c')](_0x4613cf);}return null;};}function patchUpdates(_0xbc6559){return function(_0xbc4162){try{jsonpatch['apply'](_0xbc4162,_0xbc6559,!![]);}catch(_0x1b93b8){return BPromise[_0x6f4a('0x22')](_0x1b93b8);}return _0xbc4162[_0x6f4a('0x23')]();};}function saveUpdates(_0xaabde6,_0x2568d5){return function(_0x4e061b){if(_0x4e061b){return _0x4e061b[_0x6f4a('0x24')](_0xaabde6)[_0x6f4a('0x25')](function(_0x498ee5){return _0x498ee5;});}return null;};}function removeEntity(_0xc29007,_0x5874d1){return function(_0xa9aed1){if(_0xa9aed1){return _0xa9aed1[_0x6f4a('0x26')]()[_0x6f4a('0x25')](function(){var _0x4f039b=_0xa9aed1[_0x6f4a('0x27')]({'plain':!![]});var _0x457976=_0x6f4a('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x457976,'resourceId':_0x4f039b['id']}})[_0x6f4a('0x25')](function(){return _0xa9aed1;});})[_0x6f4a('0x25')](function(){_0xc29007[_0x6f4a('0x1a')](0xcc)[_0x6f4a('0x1b')]();});}};}function handleEntityNotFound(_0x3234e8,_0x85e0bd){return function(_0x40723a){if(!_0x40723a){_0x3234e8['sendStatus'](0x194);}return _0x40723a;};}function handleError(_0x5aefde,_0x43e24b){_0x43e24b=_0x43e24b||0x1f4;return function(_0x4f8f68){logger[_0x6f4a('0x29')](_0x4f8f68['stack']);if(_0x4f8f68[_0x6f4a('0x2a')]){delete _0x4f8f68[_0x6f4a('0x2a')];}_0x5aefde[_0x6f4a('0x1a')](_0x43e24b)[_0x6f4a('0x2b')](_0x4f8f68);};}exports['index']=function(_0x471412,_0x1a2ac6){var _0x24ac9c={},_0x23a98e={},_0x1f6223={'count':0x0,'rows':[]};var _0xa7b003=_['map'](db[_0x6f4a('0x2c')][_0x6f4a('0x2d')],function(_0x3a35f4){return{'name':_0x3a35f4['fieldName'],'type':_0x3a35f4[_0x6f4a('0x2e')][_0x6f4a('0x2f')]};});_0x23a98e[_0x6f4a('0x30')]=_['map'](_0xa7b003,'name');_0x23a98e[_0x6f4a('0x31')]=_[_0x6f4a('0x32')](_0x471412[_0x6f4a('0x31')]);_0x23a98e['filters']=_[_0x6f4a('0x33')](_0x23a98e[_0x6f4a('0x30')],_0x23a98e[_0x6f4a('0x31')]);_0x24ac9c[_0x6f4a('0x34')]=_[_0x6f4a('0x33')](_0x23a98e[_0x6f4a('0x30')],qs['fields'](_0x471412[_0x6f4a('0x31')][_0x6f4a('0x35')]));_0x24ac9c['attributes']=_0x24ac9c[_0x6f4a('0x34')][_0x6f4a('0x36')]?_0x24ac9c[_0x6f4a('0x34')]:_0x23a98e[_0x6f4a('0x30')];if(!_0x471412[_0x6f4a('0x31')][_0x6f4a('0x37')]('nolimit')){_0x24ac9c[_0x6f4a('0x1f')]=qs['limit'](_0x471412[_0x6f4a('0x31')][_0x6f4a('0x1f')]);_0x24ac9c[_0x6f4a('0x1d')]=qs['offset'](_0x471412['query'][_0x6f4a('0x1d')]);}_0x24ac9c[_0x6f4a('0x38')]=qs[_0x6f4a('0x39')](_0x471412[_0x6f4a('0x31')]['sort']);_0x24ac9c[_0x6f4a('0x3a')]=qs[_0x6f4a('0x3b')](_['pick'](_0x471412[_0x6f4a('0x31')],_0x23a98e[_0x6f4a('0x3b')]),_0xa7b003);if(_0x471412['query'][_0x6f4a('0x3c')]){_0x24ac9c[_0x6f4a('0x3a')]=_[_0x6f4a('0x3d')](_0x24ac9c[_0x6f4a('0x3a')],{'$or':_[_0x6f4a('0x3e')](_0xa7b003,function(_0x4ffaec){if(_0x4ffaec[_0x6f4a('0x2e')]!==_0x6f4a('0x3f')){var _0x333437={};_0x333437[_0x4ffaec[_0x6f4a('0x2a')]]={'$like':'%'+_0x471412[_0x6f4a('0x31')]['filter']+'%'};return _0x333437;}})});}_0x24ac9c=_[_0x6f4a('0x3d')]({},_0x24ac9c,_0x471412['options']);var _0x190066={'where':_0x24ac9c[_0x6f4a('0x3a')]};return db[_0x6f4a('0x2c')]['count'](_0x190066)[_0x6f4a('0x25')](function(_0x298f55){_0x1f6223['count']=_0x298f55;if(_0x471412[_0x6f4a('0x31')][_0x6f4a('0x40')]){_0x24ac9c[_0x6f4a('0x41')]=[{'all':!![]}];}return db[_0x6f4a('0x2c')][_0x6f4a('0x42')](_0x24ac9c);})[_0x6f4a('0x25')](function(_0x278d5c){_0x1f6223['rows']=_0x278d5c;return _0x1f6223;})[_0x6f4a('0x25')](respondWithFilteredResult(_0x1a2ac6,_0x24ac9c))[_0x6f4a('0x43')](handleError(_0x1a2ac6,null));};exports[_0x6f4a('0x44')]=function(_0x481671,_0x9bd936){var _0x5e2c81={'raw':!![],'where':{'id':_0x481671[_0x6f4a('0x45')]['id']}},_0x185d6={};_0x185d6[_0x6f4a('0x30')]=_[_0x6f4a('0x32')](db[_0x6f4a('0x2c')][_0x6f4a('0x2d')]);_0x185d6[_0x6f4a('0x31')]=_[_0x6f4a('0x32')](_0x481671[_0x6f4a('0x31')]);_0x185d6[_0x6f4a('0x3b')]=_[_0x6f4a('0x33')](_0x185d6[_0x6f4a('0x30')],_0x185d6['query']);_0x5e2c81['attributes']=_[_0x6f4a('0x33')](_0x185d6[_0x6f4a('0x30')],qs['fields'](_0x481671[_0x6f4a('0x31')][_0x6f4a('0x35')]));_0x5e2c81['attributes']=_0x5e2c81[_0x6f4a('0x34')][_0x6f4a('0x36')]?_0x5e2c81[_0x6f4a('0x34')]:_0x185d6[_0x6f4a('0x30')];if(_0x481671[_0x6f4a('0x31')][_0x6f4a('0x40')]){_0x5e2c81['include']=[{'all':!![]}];}_0x5e2c81=_[_0x6f4a('0x3d')]({},_0x5e2c81,_0x481671['options']);return db[_0x6f4a('0x2c')][_0x6f4a('0x46')](_0x5e2c81)[_0x6f4a('0x25')](handleEntityNotFound(_0x9bd936,null))['then'](respondWithResult(_0x9bd936,null))[_0x6f4a('0x43')](handleError(_0x9bd936,null));};exports[_0x6f4a('0x47')]=function(_0x2c45ea,_0x3cd84a){return db[_0x6f4a('0x2c')][_0x6f4a('0x47')](_0x2c45ea[_0x6f4a('0x48')],{})[_0x6f4a('0x25')](function(_0xce9a72){var _0x509400=_0x2c45ea['user']['get']({'plain':!![]});if(!_0x509400)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x509400[_0x6f4a('0x49')]==='user'){var _0x31384b=_0xce9a72[_0x6f4a('0x27')]({'plain':!![]});var _0x5f47cd=_0x6f4a('0x28');return db['UserProfileSection'][_0x6f4a('0x46')]({'where':{'name':_0x5f47cd,'userProfileId':_0x509400[_0x6f4a('0x4a')]},'raw':!![]})[_0x6f4a('0x25')](function(_0x737aca){if(_0x737aca&&_0x737aca[_0x6f4a('0x4b')]===0x0){return db[_0x6f4a('0x4c')][_0x6f4a('0x47')]({'name':_0x31384b[_0x6f4a('0x2a')],'resourceId':_0x31384b['id'],'type':_0x737aca[_0x6f4a('0x2a')],'sectionId':_0x737aca['id']},{})[_0x6f4a('0x25')](function(){return _0xce9a72;});}else{return _0xce9a72;}})[_0x6f4a('0x43')](function(_0x23071f){logger[_0x6f4a('0x29')](_0x6f4a('0x4d'),_0x23071f);throw _0x23071f;});}return _0xce9a72;})['then'](respondWithResult(_0x3cd84a,0xc9))[_0x6f4a('0x43')](handleError(_0x3cd84a,null));};exports['update']=function(_0x31741a,_0x74f5dd){if(_0x31741a[_0x6f4a('0x48')]['id']){delete _0x31741a[_0x6f4a('0x48')]['id'];}return db['SquareOdbc'][_0x6f4a('0x46')]({'where':{'id':_0x31741a[_0x6f4a('0x45')]['id']}})[_0x6f4a('0x25')](handleEntityNotFound(_0x74f5dd,null))[_0x6f4a('0x25')](saveUpdates(_0x31741a['body'],null))[_0x6f4a('0x25')](respondWithResult(_0x74f5dd,null))[_0x6f4a('0x43')](handleError(_0x74f5dd,null));};exports[_0x6f4a('0x26')]=function(_0x2f0f6c,_0x572eb8){return db[_0x6f4a('0x2c')][_0x6f4a('0x46')]({'where':{'id':_0x2f0f6c['params']['id']}})['then'](handleEntityNotFound(_0x572eb8,null))[_0x6f4a('0x25')](removeEntity(_0x572eb8,null))[_0x6f4a('0x43')](handleError(_0x572eb8,null));};exports['test']=function(_0xa16cf1,_0x3ad735,_0x356c38){var _0xd1226;return db[_0x6f4a('0x2c')][_0x6f4a('0x46')]({'where':{'id':_0xa16cf1[_0x6f4a('0x45')]['id']},'attributes':['id',_0x6f4a('0x4e')]})[_0x6f4a('0x25')](handleEntityNotFound(_0x3ad735,null))['then'](function(_0x3b0271){if(_0x3b0271){var _0x25334d=require(_0x6f4a('0x4f'))();_0x25334d[_0x6f4a('0x50')](_0x3b0271[_0x6f4a('0x4e')]);_0x25334d[_0x6f4a('0x51')]();return _0x3b0271;}})[_0x6f4a('0x25')](respondWithResult(_0x3ad735,null))['catch'](handleError(_0x3ad735,null));};
\ No newline at end of file
+var _0x0e5f=['user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','dsn','openSync','closeSync','rimraf','request-promise','moment','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','ODBC','UserProfileResource','sendStatus','error','stack','name','send','index','map','SquareOdbc','fieldName','type','key','query','keys','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','rawAttributes','find','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x0e5f,0x161));var _0xf0e5=function(_0x45a920,_0x34f5d6){_0x45a920=_0x45a920-0x0;var _0x927902=_0x0e5f[_0x45a920];return _0x927902;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf0e5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xf0e5('0x1'));var moment=require(_0xf0e5('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xf0e5('0x3'));var sox=require(_0xf0e5('0x4'));var csv=require(_0xf0e5('0x5'));var ejs=require(_0xf0e5('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf0e5('0x7'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xf0e5('0x8'));var deskjs=require(_0xf0e5('0x9'));var toCsv=require(_0xf0e5('0x5'));var querystring=require(_0xf0e5('0xa'));var Papa=require(_0xf0e5('0xb'));var Redis=require(_0xf0e5('0xc'));var authService=require('../../components/auth/service');var qs=require(_0xf0e5('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf0e5('0xe'));var logger=require(_0xf0e5('0xf'))(_0xf0e5('0x10'));var utils=require(_0xf0e5('0x11'));var config=require(_0xf0e5('0x12'));var licenseUtil=require(_0xf0e5('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x44d6bb,_0x68e8ac){_0x68e8ac=_0x68e8ac||0xcc;return function(_0x17fd73){if(_0x17fd73){return _0x44d6bb['sendStatus'](_0x68e8ac);}return _0x44d6bb['status'](_0x68e8ac)[_0xf0e5('0x14')]();};}function respondWithResult(_0x10cc85,_0x2dca2c){_0x2dca2c=_0x2dca2c||0xc8;return function(_0x44194a){if(_0x44194a){return _0x10cc85[_0xf0e5('0x15')](_0x2dca2c)[_0xf0e5('0x16')](_0x44194a);}};}function respondWithFilteredResult(_0x2e604a,_0x109651){return function(_0x263864){if(_0x263864){var _0x127ce5=typeof _0x109651[_0xf0e5('0x17')]===_0xf0e5('0x18')&&typeof _0x109651[_0xf0e5('0x19')]===_0xf0e5('0x18');var _0x25a4a7=_0x263864[_0xf0e5('0x1a')];var _0x1c3b24=_0x127ce5?0x0:_0x109651[_0xf0e5('0x17')];var _0x2fca90=_0x127ce5?_0x263864[_0xf0e5('0x1a')]:_0x109651['offset']+_0x109651[_0xf0e5('0x19')];var _0x5e672e;if(_0x2fca90>=_0x25a4a7){_0x2fca90=_0x25a4a7;_0x5e672e=0xc8;}else{_0x5e672e=0xce;}_0x2e604a[_0xf0e5('0x15')](_0x5e672e);return _0x2e604a[_0xf0e5('0x1b')](_0xf0e5('0x1c'),_0x1c3b24+'-'+_0x2fca90+'/'+_0x25a4a7)[_0xf0e5('0x16')](_0x263864);}return null;};}function patchUpdates(_0x2ea413){return function(_0x217dd6){try{jsonpatch[_0xf0e5('0x1d')](_0x217dd6,_0x2ea413,!![]);}catch(_0x3232bd){return BPromise[_0xf0e5('0x1e')](_0x3232bd);}return _0x217dd6[_0xf0e5('0x1f')]();};}function saveUpdates(_0x5a143e,_0x4c75a9){return function(_0x3006f0){if(_0x3006f0){return _0x3006f0[_0xf0e5('0x20')](_0x5a143e)[_0xf0e5('0x21')](function(_0x4e6ff0){return _0x4e6ff0;});}return null;};}function removeEntity(_0x547ddd,_0x940134){return function(_0x3bcbac){if(_0x3bcbac){return _0x3bcbac[_0xf0e5('0x22')]()[_0xf0e5('0x21')](function(){var _0x298a95=_0x3bcbac['get']({'plain':!![]});var _0xfc8794=_0xf0e5('0x23');return db[_0xf0e5('0x24')][_0xf0e5('0x22')]({'where':{'type':_0xfc8794,'resourceId':_0x298a95['id']}})['then'](function(){return _0x3bcbac;});})[_0xf0e5('0x21')](function(){_0x547ddd['status'](0xcc)[_0xf0e5('0x14')]();});}};}function handleEntityNotFound(_0x213b4e,_0x2a9cb0){return function(_0x247050){if(!_0x247050){_0x213b4e[_0xf0e5('0x25')](0x194);}return _0x247050;};}function handleError(_0x1eba48,_0x174062){_0x174062=_0x174062||0x1f4;return function(_0x155934){logger[_0xf0e5('0x26')](_0x155934[_0xf0e5('0x27')]);if(_0x155934[_0xf0e5('0x28')]){delete _0x155934[_0xf0e5('0x28')];}_0x1eba48['status'](_0x174062)[_0xf0e5('0x29')](_0x155934);};}exports[_0xf0e5('0x2a')]=function(_0x47d770,_0x5087bf){var _0x9e562f={},_0x3c9cfb={},_0x547f66={'count':0x0,'rows':[]};var _0x19e51a=_[_0xf0e5('0x2b')](db[_0xf0e5('0x2c')]['rawAttributes'],function(_0x52a3ef){return{'name':_0x52a3ef[_0xf0e5('0x2d')],'type':_0x52a3ef[_0xf0e5('0x2e')][_0xf0e5('0x2f')]};});_0x3c9cfb['model']=_[_0xf0e5('0x2b')](_0x19e51a,'name');_0x3c9cfb[_0xf0e5('0x30')]=_[_0xf0e5('0x31')](_0x47d770['query']);_0x3c9cfb['filters']=_[_0xf0e5('0x32')](_0x3c9cfb['model'],_0x3c9cfb[_0xf0e5('0x30')]);_0x9e562f[_0xf0e5('0x33')]=_[_0xf0e5('0x32')](_0x3c9cfb[_0xf0e5('0x34')],qs['fields'](_0x47d770['query'][_0xf0e5('0x35')]));_0x9e562f[_0xf0e5('0x33')]=_0x9e562f[_0xf0e5('0x33')][_0xf0e5('0x36')]?_0x9e562f[_0xf0e5('0x33')]:_0x3c9cfb[_0xf0e5('0x34')];if(!_0x47d770['query'][_0xf0e5('0x37')](_0xf0e5('0x38'))){_0x9e562f[_0xf0e5('0x19')]=qs[_0xf0e5('0x19')](_0x47d770[_0xf0e5('0x30')][_0xf0e5('0x19')]);_0x9e562f['offset']=qs[_0xf0e5('0x17')](_0x47d770['query'][_0xf0e5('0x17')]);}_0x9e562f[_0xf0e5('0x39')]=qs[_0xf0e5('0x3a')](_0x47d770[_0xf0e5('0x30')]['sort']);_0x9e562f[_0xf0e5('0x3b')]=qs[_0xf0e5('0x3c')](_['pick'](_0x47d770[_0xf0e5('0x30')],_0x3c9cfb['filters']),_0x19e51a);if(_0x47d770[_0xf0e5('0x30')][_0xf0e5('0x3d')]){_0x9e562f[_0xf0e5('0x3b')]=_[_0xf0e5('0x3e')](_0x9e562f[_0xf0e5('0x3b')],{'$or':_[_0xf0e5('0x2b')](_0x19e51a,function(_0x1595d0){if(_0x1595d0['type']!==_0xf0e5('0x3f')){var _0x202a26={};_0x202a26[_0x1595d0['name']]={'$like':'%'+_0x47d770[_0xf0e5('0x30')]['filter']+'%'};return _0x202a26;}})});}_0x9e562f=_[_0xf0e5('0x3e')]({},_0x9e562f,_0x47d770[_0xf0e5('0x40')]);var _0x278034={'where':_0x9e562f[_0xf0e5('0x3b')]};return db[_0xf0e5('0x2c')][_0xf0e5('0x1a')](_0x278034)[_0xf0e5('0x21')](function(_0x1dcf15){_0x547f66[_0xf0e5('0x1a')]=_0x1dcf15;if(_0x47d770['query'][_0xf0e5('0x41')]){_0x9e562f[_0xf0e5('0x42')]=[{'all':!![]}];}return db[_0xf0e5('0x2c')][_0xf0e5('0x43')](_0x9e562f);})[_0xf0e5('0x21')](function(_0x135d14){_0x547f66['rows']=_0x135d14;return _0x547f66;})[_0xf0e5('0x21')](respondWithFilteredResult(_0x5087bf,_0x9e562f))[_0xf0e5('0x44')](handleError(_0x5087bf,null));};exports[_0xf0e5('0x45')]=function(_0x2c0acc,_0x5d8393){var _0x87cafc={'raw':!![],'where':{'id':_0x2c0acc[_0xf0e5('0x46')]['id']}},_0x1d91d1={};_0x1d91d1[_0xf0e5('0x34')]=_[_0xf0e5('0x31')](db['SquareOdbc'][_0xf0e5('0x47')]);_0x1d91d1[_0xf0e5('0x30')]=_[_0xf0e5('0x31')](_0x2c0acc['query']);_0x1d91d1[_0xf0e5('0x3c')]=_['intersection'](_0x1d91d1['model'],_0x1d91d1[_0xf0e5('0x30')]);_0x87cafc['attributes']=_['intersection'](_0x1d91d1[_0xf0e5('0x34')],qs[_0xf0e5('0x35')](_0x2c0acc['query']['fields']));_0x87cafc[_0xf0e5('0x33')]=_0x87cafc[_0xf0e5('0x33')][_0xf0e5('0x36')]?_0x87cafc[_0xf0e5('0x33')]:_0x1d91d1[_0xf0e5('0x34')];if(_0x2c0acc['query'][_0xf0e5('0x41')]){_0x87cafc[_0xf0e5('0x42')]=[{'all':!![]}];}_0x87cafc=_[_0xf0e5('0x3e')]({},_0x87cafc,_0x2c0acc[_0xf0e5('0x40')]);return db[_0xf0e5('0x2c')][_0xf0e5('0x48')](_0x87cafc)[_0xf0e5('0x21')](handleEntityNotFound(_0x5d8393,null))[_0xf0e5('0x21')](respondWithResult(_0x5d8393,null))['catch'](handleError(_0x5d8393,null));};exports['create']=function(_0x47362a,_0x1593ee){return db[_0xf0e5('0x2c')][_0xf0e5('0x49')](_0x47362a['body'],{})[_0xf0e5('0x21')](function(_0x40182e){var _0x62cba0=_0x47362a['user'][_0xf0e5('0x4a')]({'plain':!![]});if(!_0x62cba0)throw new Error(_0xf0e5('0x4b'));if(_0x62cba0[_0xf0e5('0x4c')]===_0xf0e5('0x4d')){var _0x8b8a82=_0x40182e['get']({'plain':!![]});var _0x56dd78='ODBC';return db[_0xf0e5('0x4e')]['find']({'where':{'name':_0x56dd78,'userProfileId':_0x62cba0[_0xf0e5('0x4f')]},'raw':!![]})[_0xf0e5('0x21')](function(_0xab3a80){if(_0xab3a80&&_0xab3a80[_0xf0e5('0x50')]===0x0){return db['UserProfileResource'][_0xf0e5('0x49')]({'name':_0x8b8a82[_0xf0e5('0x28')],'resourceId':_0x8b8a82['id'],'type':_0xab3a80['name'],'sectionId':_0xab3a80['id']},{})[_0xf0e5('0x21')](function(){return _0x40182e;});}else{return _0x40182e;}})[_0xf0e5('0x44')](function(_0x5165b3){logger[_0xf0e5('0x26')](_0xf0e5('0x51'),_0x5165b3);throw _0x5165b3;});}return _0x40182e;})[_0xf0e5('0x21')](respondWithResult(_0x1593ee,0xc9))[_0xf0e5('0x44')](handleError(_0x1593ee,null));};exports[_0xf0e5('0x20')]=function(_0xc80f50,_0x346204){if(_0xc80f50['body']['id']){delete _0xc80f50[_0xf0e5('0x52')]['id'];}return db[_0xf0e5('0x2c')]['find']({'where':{'id':_0xc80f50[_0xf0e5('0x46')]['id']}})['then'](handleEntityNotFound(_0x346204,null))[_0xf0e5('0x21')](saveUpdates(_0xc80f50[_0xf0e5('0x52')],null))[_0xf0e5('0x21')](respondWithResult(_0x346204,null))[_0xf0e5('0x44')](handleError(_0x346204,null));};exports[_0xf0e5('0x22')]=function(_0x163535,_0x14a91b){return db[_0xf0e5('0x2c')][_0xf0e5('0x48')]({'where':{'id':_0x163535[_0xf0e5('0x46')]['id']}})[_0xf0e5('0x21')](handleEntityNotFound(_0x14a91b,null))[_0xf0e5('0x21')](removeEntity(_0x14a91b,null))[_0xf0e5('0x44')](handleError(_0x14a91b,null));};exports['test']=function(_0x4223fd,_0x3014af,_0x88ddd1){var _0x45cf02;return db[_0xf0e5('0x2c')][_0xf0e5('0x48')]({'where':{'id':_0x4223fd[_0xf0e5('0x46')]['id']},'attributes':['id',_0xf0e5('0x53')]})['then'](handleEntityNotFound(_0x3014af,null))[_0xf0e5('0x21')](function(_0x520077){if(_0x520077){var _0x379d7d=require('odbc')();_0x379d7d[_0xf0e5('0x54')](_0x520077[_0xf0e5('0x53')]);_0x379d7d[_0xf0e5('0x55')]();return _0x520077;}})[_0xf0e5('0x21')](respondWithResult(_0x3014af,null))['catch'](handleError(_0x3014af,null));};
\ No newline at end of file
index 4eac4d3..686024c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4d0=['./squareOdbc.attributes','exports','define','square_odbc','lodash','util','../../config/logger','api','bluebird','request-promise','../../config/environment'];(function(_0x367031,_0x44490a){var _0x1aac4a=function(_0x25a182){while(--_0x25a182){_0x367031['push'](_0x367031['shift']());}};_0x1aac4a(++_0x44490a);}(_0xc4d0,0x17a));var _0x0c4d=function(_0x2b012b,_0x463e28){_0x2b012b=_0x2b012b-0x0;var _0x32c4cf=_0xc4d0[_0x2b012b];return _0x32c4cf;};'use strict';var _=require(_0x0c4d('0x0'));var util=require(_0x0c4d('0x1'));var logger=require(_0x0c4d('0x2'))(_0x0c4d('0x3'));var moment=require('moment');var BPromise=require(_0x0c4d('0x4'));var rp=require(_0x0c4d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x0c4d('0x6'));var attributes=require(_0x0c4d('0x7'));module[_0x0c4d('0x8')]=function(_0x26de1c,_0x413d99){return _0x26de1c[_0x0c4d('0x9')]('SquareOdbc',attributes,{'tableName':_0x0c4d('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6863=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./squareOdbc.attributes','exports','SquareOdbc','square_odbc','lodash','util'];(function(_0x369e6b,_0xff60fe){var _0xd68fbc=function(_0x1ab384){while(--_0x1ab384){_0x369e6b['push'](_0x369e6b['shift']());}};_0xd68fbc(++_0xff60fe);}(_0x6863,0x8d));var _0x3686=function(_0x1b005f,_0x406c5f){_0x1b005f=_0x1b005f-0x0;var _0x26cce1=_0x6863[_0x1b005f];return _0x26cce1;};'use strict';var _=require(_0x3686('0x0'));var util=require(_0x3686('0x1'));var logger=require(_0x3686('0x2'))(_0x3686('0x3'));var moment=require('moment');var BPromise=require(_0x3686('0x4'));var rp=require(_0x3686('0x5'));var fs=require('fs');var path=require(_0x3686('0x6'));var rimraf=require(_0x3686('0x7'));var config=require(_0x3686('0x8'));var attributes=require(_0x3686('0x9'));module[_0x3686('0xa')]=function(_0x170562,_0x43e4ba){return _0x170562['define'](_0x3686('0xb'),attributes,{'tableName':_0x3686('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5f96e77..fc43853 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5936=['util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','request','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','message','result','ShowSquareOdbc','SquareOdbc','find','options','raw','where','include','map','model','attributes','then','catch'];(function(_0x131a9c,_0x4380c5){var _0x1cc059=function(_0x511007){while(--_0x511007){_0x131a9c['push'](_0x131a9c['shift']());}};_0x1cc059(++_0x4380c5);}(_0x5936,0x1d1));var _0x6593=function(_0x2c971e,_0x4c27f9){_0x2c971e=_0x2c971e-0x0;var _0x2c1871=_0x5936[_0x2c971e];return _0x2c1871;};'use strict';var _=require('lodash');var util=require(_0x6593('0x0'));var moment=require(_0x6593('0x1'));var BPromise=require(_0x6593('0x2'));var rs=require(_0x6593('0x3'));var fs=require('fs');var Redis=require(_0x6593('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6593('0x5'));var logger=require('../../config/logger')(_0x6593('0x6'));var config=require(_0x6593('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x6593('0x8')][_0x6593('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xbf9430,_0x26d189,_0x4da94a){return new BPromise(function(_0x309b02,_0x24730a){return client[_0x6593('0xa')](_0xbf9430,_0x4da94a)['then'](function(_0x572d46){logger[_0x6593('0xb')](_0x6593('0xc'),_0x26d189,_0x6593('0xd'));logger['debug'](_0x6593('0xe'),_0x26d189,_0x6593('0xd'),JSON[_0x6593('0xf')](_0x572d46));if(_0x572d46[_0x6593('0x10')]){if(_0x572d46[_0x6593('0x10')]['code']===0x1f4){logger[_0x6593('0x10')]('SquareOdbc,\x20%s,\x20%s',_0x26d189,_0x572d46[_0x6593('0x10')]['message']);return _0x24730a(_0x572d46[_0x6593('0x10')][_0x6593('0x11')]);}logger[_0x6593('0x10')](_0x6593('0xc'),_0x26d189,_0x572d46[_0x6593('0x10')][_0x6593('0x11')]);return _0x309b02(_0x572d46[_0x6593('0x10')][_0x6593('0x11')]);}else{logger[_0x6593('0xb')](_0x6593('0xc'),_0x26d189,_0x6593('0xd'));_0x309b02(_0x572d46[_0x6593('0x12')][_0x6593('0x11')]);}})['catch'](function(_0x2949ce){logger[_0x6593('0x10')]('SquareOdbc,\x20%s,\x20%s',_0x26d189,_0x2949ce);_0x24730a(_0x2949ce);});});}exports[_0x6593('0x13')]=function(_0x3a6164){var _0x198e69=this;return new Promise(function(_0x584dcd,_0xa7d40){return db[_0x6593('0x14')][_0x6593('0x15')]({'raw':_0x3a6164[_0x6593('0x16')]?_0x3a6164[_0x6593('0x16')][_0x6593('0x17')]===undefined?!![]:![]:!![],'where':_0x3a6164[_0x6593('0x16')]?_0x3a6164[_0x6593('0x16')][_0x6593('0x18')]||null:null,'attributes':_0x3a6164[_0x6593('0x16')]?_0x3a6164['options']['attributes']||null:null,'include':_0x3a6164[_0x6593('0x16')]?_0x3a6164[_0x6593('0x16')][_0x6593('0x19')]?_[_0x6593('0x1a')](_0x3a6164['options'][_0x6593('0x19')],function(_0x2f5e32){return{'model':db[_0x2f5e32[_0x6593('0x1b')]],'as':_0x2f5e32['as'],'attributes':_0x2f5e32[_0x6593('0x1c')],'include':_0x2f5e32['include']?_[_0x6593('0x1a')](_0x2f5e32[_0x6593('0x19')],function(_0xff5ae5){return{'model':db[_0xff5ae5[_0x6593('0x1b')]],'as':_0xff5ae5['as'],'attributes':_0xff5ae5[_0x6593('0x1c')],'include':_0xff5ae5['include']?_[_0x6593('0x1a')](_0xff5ae5[_0x6593('0x19')],function(_0x43c277){return{'model':db[_0x43c277[_0x6593('0x1b')]],'as':_0x43c277['as'],'attributes':_0x43c277[_0x6593('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x6593('0x1d')](function(_0x25fabd){logger[_0x6593('0xb')](_0x6593('0x13'),_0x3a6164);logger['debug']('ShowSquareOdbc',_0x3a6164,JSON['stringify'](_0x25fabd));_0x584dcd(_0x25fabd);})[_0x6593('0x1e')](function(_0x35ce4a){logger[_0x6593('0x10')]('ShowSquareOdbc',_0x35ce4a[_0x6593('0x11')],_0x3a6164);_0xa7d40(_0x198e69[_0x6593('0x10')](0x1f4,_0x35ce4a[_0x6593('0x11')]));});});};
\ No newline at end of file
+var _0x2f1b=['map','include','model','then','stringify','lodash','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','client','http','request','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ShowSquareOdbc','SquareOdbc','find','options','raw','where','attributes'];(function(_0x3d5df9,_0x5b3623){var _0x50ba39=function(_0x3c0de0){while(--_0x3c0de0){_0x3d5df9['push'](_0x3d5df9['shift']());}};_0x50ba39(++_0x5b3623);}(_0x2f1b,0x185));var _0xb2f1=function(_0x209ee8,_0x4e4cd6){_0x209ee8=_0x209ee8-0x0;var _0x101de4=_0x2f1b[_0x209ee8];return _0x101de4;};'use strict';var _=require(_0xb2f1('0x0'));var util=require('util');var moment=require(_0xb2f1('0x1'));var BPromise=require(_0xb2f1('0x2'));var rs=require(_0xb2f1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb2f1('0x4'));var logger=require('../../config/logger')(_0xb2f1('0x5'));var config=require(_0xb2f1('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xb2f1('0x7')][_0xb2f1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x280701,_0x163cf3,_0x3a64a1){return new BPromise(function(_0x5a11e0,_0x251ecc){return client[_0xb2f1('0x9')](_0x280701,_0x3a64a1)['then'](function(_0x42d10d){logger[_0xb2f1('0xa')](_0xb2f1('0xb'),_0x163cf3,_0xb2f1('0xc'));logger[_0xb2f1('0xd')](_0xb2f1('0xe'),_0x163cf3,_0xb2f1('0xc'),JSON['stringify'](_0x42d10d));if(_0x42d10d['error']){if(_0x42d10d[_0xb2f1('0xf')][_0xb2f1('0x10')]===0x1f4){logger[_0xb2f1('0xf')](_0xb2f1('0xb'),_0x163cf3,_0x42d10d['error']['message']);return _0x251ecc(_0x42d10d[_0xb2f1('0xf')][_0xb2f1('0x11')]);}logger[_0xb2f1('0xf')](_0xb2f1('0xb'),_0x163cf3,_0x42d10d[_0xb2f1('0xf')]['message']);return _0x5a11e0(_0x42d10d['error'][_0xb2f1('0x11')]);}else{logger[_0xb2f1('0xa')](_0xb2f1('0xb'),_0x163cf3,_0xb2f1('0xc'));_0x5a11e0(_0x42d10d[_0xb2f1('0x12')][_0xb2f1('0x11')]);}})[_0xb2f1('0x13')](function(_0x4152c9){logger[_0xb2f1('0xf')](_0xb2f1('0xb'),_0x163cf3,_0x4152c9);_0x251ecc(_0x4152c9);});});}exports[_0xb2f1('0x14')]=function(_0x23f4cd){var _0x4b9f6d=this;return new Promise(function(_0x18b651,_0x1d4908){return db[_0xb2f1('0x15')][_0xb2f1('0x16')]({'raw':_0x23f4cd[_0xb2f1('0x17')]?_0x23f4cd[_0xb2f1('0x17')][_0xb2f1('0x18')]===undefined?!![]:![]:!![],'where':_0x23f4cd[_0xb2f1('0x17')]?_0x23f4cd['options'][_0xb2f1('0x19')]||null:null,'attributes':_0x23f4cd[_0xb2f1('0x17')]?_0x23f4cd['options'][_0xb2f1('0x1a')]||null:null,'include':_0x23f4cd['options']?_0x23f4cd[_0xb2f1('0x17')]['include']?_[_0xb2f1('0x1b')](_0x23f4cd['options'][_0xb2f1('0x1c')],function(_0x5a8fd9){return{'model':db[_0x5a8fd9['model']],'as':_0x5a8fd9['as'],'attributes':_0x5a8fd9['attributes'],'include':_0x5a8fd9['include']?_[_0xb2f1('0x1b')](_0x5a8fd9['include'],function(_0x3b2baa){return{'model':db[_0x3b2baa[_0xb2f1('0x1d')]],'as':_0x3b2baa['as'],'attributes':_0x3b2baa[_0xb2f1('0x1a')],'include':_0x3b2baa['include']?_['map'](_0x3b2baa[_0xb2f1('0x1c')],function(_0x3f41cd){return{'model':db[_0x3f41cd[_0xb2f1('0x1d')]],'as':_0x3f41cd['as'],'attributes':_0x3f41cd[_0xb2f1('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xb2f1('0x1e')](function(_0x52b20a){logger[_0xb2f1('0xa')](_0xb2f1('0x14'),_0x23f4cd);logger['debug'](_0xb2f1('0x14'),_0x23f4cd,JSON[_0xb2f1('0x1f')](_0x52b20a));_0x18b651(_0x52b20a);})[_0xb2f1('0x13')](function(_0x3d9940){logger[_0xb2f1('0xf')](_0xb2f1('0x14'),_0x3d9940[_0xb2f1('0x11')],_0x23f4cd);_0x1d4908(_0x4b9f6d[_0xb2f1('0xf')](0x1f4,_0x3d9940[_0xb2f1('0x11')]));});});};
\ No newline at end of file
index 0da0ea5..018e49d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c84=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','delete','destroy','exports','util','path','connect-timeout'];(function(_0x15f8cc,_0x277506){var _0x526e05=function(_0xb3bf18){while(--_0xb3bf18){_0x15f8cc['push'](_0x15f8cc['shift']());}};_0x526e05(++_0x277506);}(_0x1c84,0xad));var _0x41c8=function(_0x26b622,_0x237e9e){_0x26b622=_0x26b622-0x0;var _0x58a028=_0x1c84[_0x26b622];return _0x58a028;};'use strict';var multer=require('multer');var util=require(_0x41c8('0x0'));var path=require(_0x41c8('0x1'));var timeout=require(_0x41c8('0x2'));var express=require(_0x41c8('0x3'));var router=express[_0x41c8('0x4')]();var fs_extra=require(_0x41c8('0x5'));var auth=require(_0x41c8('0x6'));var interaction=require(_0x41c8('0x7'));var config=require(_0x41c8('0x8'));var controller=require(_0x41c8('0x9'));router['get']('/',auth[_0x41c8('0xa')](),controller[_0x41c8('0xb')]);router[_0x41c8('0xc')](_0x41c8('0xd'),auth[_0x41c8('0xa')](),controller[_0x41c8('0xe')]);router[_0x41c8('0xf')]('/',auth[_0x41c8('0xa')](),controller[_0x41c8('0x10')]);router[_0x41c8('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x41c8('0x12')]);router[_0x41c8('0x13')](_0x41c8('0xd'),auth[_0x41c8('0xa')](),controller[_0x41c8('0x14')]);module[_0x41c8('0x15')]=router;
\ No newline at end of file
+var _0x927f=['get','isAuthenticated','index','/:id','show','create','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x5ea451,_0x133637){var _0x37a06a=function(_0x6fb5bf){while(--_0x6fb5bf){_0x5ea451['push'](_0x5ea451['shift']());}};_0x37a06a(++_0x133637);}(_0x927f,0xd9));var _0xf927=function(_0xeda888,_0x2e4430){_0xeda888=_0xeda888-0x0;var _0xc5ae50=_0x927f[_0xeda888];return _0xc5ae50;};'use strict';var multer=require(_0xf927('0x0'));var util=require('util');var path=require(_0xf927('0x1'));var timeout=require(_0xf927('0x2'));var express=require(_0xf927('0x3'));var router=express[_0xf927('0x4')]();var fs_extra=require(_0xf927('0x5'));var auth=require(_0xf927('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xf927('0x7'));var controller=require('./squareProject.controller');router[_0xf927('0x8')]('/',auth[_0xf927('0x9')](),controller[_0xf927('0xa')]);router[_0xf927('0x8')](_0xf927('0xb'),auth[_0xf927('0x9')](),controller[_0xf927('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0xf927('0xd')]);router['put'](_0xf927('0xb'),auth[_0xf927('0x9')](),controller['update']);router['delete'](_0xf927('0xb'),auth[_0xf927('0x9')](),controller['destroy']);module[_0xf927('0xe')]=router;
\ No newline at end of file
index f22ac17..4bafdb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b29=['production','toString','DATE','exports','STRING','name','BLOB','long','getDataValue','preproduction','utf8'];(function(_0x41f81e,_0x19bfe2){var _0x3a4b6d=function(_0x27dddf){while(--_0x27dddf){_0x41f81e['push'](_0x41f81e['shift']());}};_0x3a4b6d(++_0x19bfe2);}(_0x2b29,0x163));var _0x92b2=function(_0x1d0d9f,_0x7f1496){_0x1d0d9f=_0x1d0d9f-0x0;var _0x2ec7f2=_0x2b29[_0x1d0d9f];return _0x2ec7f2;};'use strict';var Sequelize=require('sequelize');module[_0x92b2('0x0')]={'name':{'type':Sequelize[_0x92b2('0x1')],'unique':_0x92b2('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x92b2('0x1')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0x92b2('0x3')](_0x92b2('0x4')),'get':function(){if(this[_0x92b2('0x5')](_0x92b2('0x6'))){return this[_0x92b2('0x5')](_0x92b2('0x6'))['toString'](_0x92b2('0x7'));}}},'production':{'type':Sequelize['BLOB'](_0x92b2('0x4')),'get':function(){if(this[_0x92b2('0x5')]('production')){return this[_0x92b2('0x5')](_0x92b2('0x8'))[_0x92b2('0x9')](_0x92b2('0x7'));}}},'savedAt':{'type':Sequelize['DATE']},'publishedAt':{'type':Sequelize[_0x92b2('0xa')]}};
\ No newline at end of file
+var _0xba49=['utf8','production','toString','DATE','sequelize','exports','name','STRING','BLOB','long','getDataValue','preproduction'];(function(_0xb068e9,_0x480826){var _0x5c6672=function(_0x53b169){while(--_0x53b169){_0xb068e9['push'](_0xb068e9['shift']());}};_0x5c6672(++_0x480826);}(_0xba49,0x1b4));var _0x9ba4=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0xba49[_0x29d94e];return _0x106237;};'use strict';var Sequelize=require(_0x9ba4('0x0'));module[_0x9ba4('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x9ba4('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x9ba4('0x3')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0x9ba4('0x4')](_0x9ba4('0x5')),'get':function(){if(this[_0x9ba4('0x6')](_0x9ba4('0x7'))){return this[_0x9ba4('0x6')](_0x9ba4('0x7'))['toString'](_0x9ba4('0x8'));}}},'production':{'type':Sequelize[_0x9ba4('0x4')](_0x9ba4('0x5')),'get':function(){if(this[_0x9ba4('0x6')](_0x9ba4('0x9'))){return this['getDataValue'](_0x9ba4('0x9'))[_0x9ba4('0xa')](_0x9ba4('0x8'));}}},'savedAt':{'type':Sequelize[_0x9ba4('0xb')]},'publishedAt':{'type':Sequelize[_0x9ba4('0xb')]}};
\ No newline at end of file
index ad0426a..3e0582a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6ea=['include','findAll','catch','show','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','production','lodash','../../components/parsers/qs','api','../../config/environment','defaults','redis','localhost','socket.io-emitter','./squareProject.socket','status','json','offset','undefined','count','limit','set','Content-Range','update','then','get','SquareProjects','UserProfileResource','destroy','publish','agi','stringify','sendStatus','error','stack','name','send','index','map','SquareProject','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll'];(function(_0x1998bb,_0x1f1da1){var _0x4ae4c9=function(_0x4741e8){while(--_0x4741e8){_0x1998bb['push'](_0x1998bb['shift']());}};_0x4ae4c9(++_0x1f1da1);}(_0xe6ea,0x1b3));var _0xae6e=function(_0x556839,_0x3ea1e7){_0x556839=_0x556839-0x0;var _0x281b3f=_0xe6ea[_0x556839];return _0x281b3f;};'use strict';var _=require(_0xae6e('0x0'));var Redis=require('ioredis');var qs=require(_0xae6e('0x1'));var logger=require('../../config/logger')(_0xae6e('0x2'));var config=require(_0xae6e('0x3'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xae6e('0x4')](config[_0xae6e('0x5')],{'host':_0xae6e('0x6'),'port':0x18eb});var socket=require(_0xae6e('0x7'))(new Redis(config[_0xae6e('0x5')]));require(_0xae6e('0x8'))['register'](socket);function respondWithResult(_0x49cea1,_0x285208){_0x285208=_0x285208||0xc8;return function(_0x4b5db7){if(_0x4b5db7){return _0x49cea1[_0xae6e('0x9')](_0x285208)[_0xae6e('0xa')](_0x4b5db7);}};}function respondWithFilteredResult(_0x1fc307,_0x54c454){return function(_0x1af8fc){if(_0x1af8fc){var _0x40d140=typeof _0x54c454[_0xae6e('0xb')]===_0xae6e('0xc')&&typeof _0x54c454['limit']===_0xae6e('0xc');var _0x1d1b37=_0x1af8fc[_0xae6e('0xd')];var _0x5c920a=_0x40d140?0x0:_0x54c454[_0xae6e('0xb')];var _0xc2236e=_0x40d140?_0x1af8fc[_0xae6e('0xd')]:_0x54c454[_0xae6e('0xb')]+_0x54c454[_0xae6e('0xe')];var _0x17baf0;if(_0xc2236e>=_0x1d1b37){_0xc2236e=_0x1d1b37;_0x17baf0=0xc8;}else{_0x17baf0=0xce;}_0x1fc307[_0xae6e('0x9')](_0x17baf0);return _0x1fc307[_0xae6e('0xf')](_0xae6e('0x10'),_0x5c920a+'-'+_0xc2236e+'/'+_0x1d1b37)[_0xae6e('0xa')](_0x1af8fc);}return null;};}function saveUpdates(_0x3758a0){return function(_0xdd92e2){if(_0xdd92e2){return _0xdd92e2[_0xae6e('0x11')](_0x3758a0)[_0xae6e('0x12')](function(_0xf17e2d){return _0xf17e2d;});}return null;};}function removeEntity(_0x524860){return function(_0x3761e5){if(_0x3761e5){return _0x3761e5['destroy']()[_0xae6e('0x12')](function(){var _0x5e3dc9=_0x3761e5[_0xae6e('0x13')]({'plain':!![]});var _0x18b6da=_0xae6e('0x14');return db[_0xae6e('0x15')][_0xae6e('0x16')]({'where':{'type':_0x18b6da,'resourceId':_0x5e3dc9['id']}})[_0xae6e('0x12')](function(){return _0x3761e5;});})[_0xae6e('0x12')](function(){var _0x197fe8=new Redis(config[_0xae6e('0x5')]);_0x197fe8[_0xae6e('0x17')](_0xae6e('0x18'),JSON[_0xae6e('0x19')]({'id':_0x3761e5['id'],'deleted':!![]}));})['then'](function(){_0x524860[_0xae6e('0x9')](0xcc)['end']();});}};}function handleEntityNotFound(_0x20c425){return function(_0x26edf1){if(!_0x26edf1){_0x20c425[_0xae6e('0x1a')](0x194);}return _0x26edf1;};}function handleError(_0x318709,_0x441d90){_0x441d90=_0x441d90||0x1f4;return function(_0x4eb590){logger[_0xae6e('0x1b')](_0x4eb590[_0xae6e('0x1c')]);if(_0x4eb590[_0xae6e('0x1d')]){delete _0x4eb590[_0xae6e('0x1d')];}_0x318709['status'](_0x441d90)[_0xae6e('0x1e')](_0x4eb590);};}exports[_0xae6e('0x1f')]=function(_0x2ae3dc,_0x17da19){var _0x3cff81={},_0x574412={},_0x1f4105={'count':0x0,'rows':[]};var _0x13bc98=_[_0xae6e('0x20')](db[_0xae6e('0x21')][_0xae6e('0x22')],function(_0x3ef460){return{'name':_0x3ef460[_0xae6e('0x23')],'type':_0x3ef460[_0xae6e('0x24')]['key']};});_0x574412[_0xae6e('0x25')]=_['map'](_0x13bc98,'name');_0x574412[_0xae6e('0x26')]=_[_0xae6e('0x27')](_0x2ae3dc['query']);_0x574412['filters']=_[_0xae6e('0x28')](_0x574412[_0xae6e('0x25')],_0x574412[_0xae6e('0x26')]);_0x3cff81[_0xae6e('0x29')]=_['intersection'](_0x574412[_0xae6e('0x25')],qs[_0xae6e('0x2a')](_0x2ae3dc[_0xae6e('0x26')][_0xae6e('0x2a')]));_0x3cff81[_0xae6e('0x29')]=_0x3cff81[_0xae6e('0x29')][_0xae6e('0x2b')]?_0x3cff81[_0xae6e('0x29')]:_0x574412[_0xae6e('0x25')];if(!_0x2ae3dc[_0xae6e('0x26')][_0xae6e('0x2c')]('nolimit')){_0x3cff81[_0xae6e('0xe')]=qs['limit'](_0x2ae3dc[_0xae6e('0x26')][_0xae6e('0xe')]);_0x3cff81['offset']=qs[_0xae6e('0xb')](_0x2ae3dc['query']['offset']);}_0x3cff81[_0xae6e('0x2d')]=qs[_0xae6e('0x2e')](_0x2ae3dc[_0xae6e('0x26')][_0xae6e('0x2e')]);_0x3cff81[_0xae6e('0x2f')]=qs[_0xae6e('0x30')](_[_0xae6e('0x31')](_0x2ae3dc['query'],_0x574412[_0xae6e('0x30')]),_0x13bc98);if(_0x2ae3dc['query']['filter']){_0x3cff81['where']=_[_0xae6e('0x32')](_0x3cff81['where'],{'$or':_[_0xae6e('0x20')](_0x13bc98,function(_0x2ef86a){if(_0x2ef86a[_0xae6e('0x24')]!==_0xae6e('0x33')){var _0x9507d8={};_0x9507d8[_0x2ef86a['name']]={'$like':'%'+_0x2ae3dc['query'][_0xae6e('0x34')]+'%'};return _0x9507d8;}})});}_0x3cff81=_[_0xae6e('0x32')]({},_0x3cff81,_0x2ae3dc[_0xae6e('0x35')]);var _0x5625d8={'where':_0x3cff81[_0xae6e('0x2f')]};return db['SquareProject'][_0xae6e('0xd')](_0x5625d8)[_0xae6e('0x12')](function(_0x31c995){_0x1f4105[_0xae6e('0xd')]=_0x31c995;if(_0x2ae3dc[_0xae6e('0x26')][_0xae6e('0x36')]){_0x3cff81[_0xae6e('0x37')]=[{'all':!![]}];}return db['SquareProject'][_0xae6e('0x38')](_0x3cff81);})[_0xae6e('0x12')](function(_0x49dc02){_0x1f4105['rows']=_0x49dc02;return _0x1f4105;})[_0xae6e('0x12')](respondWithFilteredResult(_0x17da19,_0x3cff81))[_0xae6e('0x39')](handleError(_0x17da19,null));};exports[_0xae6e('0x3a')]=function(_0xc8a59b,_0x54aa3f){var _0x19ae25={'raw':![],'where':{'id':_0xc8a59b['params']['id']}},_0x47e8fd={};_0x47e8fd[_0xae6e('0x25')]=_[_0xae6e('0x27')](db[_0xae6e('0x21')][_0xae6e('0x22')]);_0x47e8fd[_0xae6e('0x26')]=_[_0xae6e('0x27')](_0xc8a59b[_0xae6e('0x26')]);_0x47e8fd[_0xae6e('0x30')]=_[_0xae6e('0x28')](_0x47e8fd[_0xae6e('0x25')],_0x47e8fd[_0xae6e('0x26')]);_0x19ae25[_0xae6e('0x29')]=_[_0xae6e('0x28')](_0x47e8fd['model'],qs[_0xae6e('0x2a')](_0xc8a59b[_0xae6e('0x26')][_0xae6e('0x2a')]));_0x19ae25[_0xae6e('0x29')]=_0x19ae25[_0xae6e('0x29')][_0xae6e('0x2b')]?_0x19ae25[_0xae6e('0x29')]:_0x47e8fd['model'];if(_0xc8a59b[_0xae6e('0x26')][_0xae6e('0x36')]){_0x19ae25[_0xae6e('0x37')]=[{'all':!![]}];}_0x19ae25=_[_0xae6e('0x32')]({},_0x19ae25,_0xc8a59b[_0xae6e('0x35')]);return db[_0xae6e('0x21')]['find'](_0x19ae25)[_0xae6e('0x12')](handleEntityNotFound(_0x54aa3f,null))['then'](respondWithResult(_0x54aa3f,null))[_0xae6e('0x39')](handleError(_0x54aa3f,null));};exports[_0xae6e('0x3b')]=function(_0x12c622,_0x1be104){return db[_0xae6e('0x21')][_0xae6e('0x3b')](_0x12c622[_0xae6e('0x3c')],{})['then'](function(_0x39748d){var _0x4bb414=_0x12c622['user'][_0xae6e('0x13')]({'plain':!![]});if(!_0x4bb414)throw new Error(_0xae6e('0x3d'));if(_0x4bb414[_0xae6e('0x3e')]===_0xae6e('0x3f')){var _0x175705=_0x39748d[_0xae6e('0x13')]({'plain':!![]});var _0x4871f2=_0xae6e('0x14');return db['UserProfileSection']['find']({'where':{'name':_0x4871f2,'userProfileId':_0x4bb414[_0xae6e('0x40')]},'raw':!![]})[_0xae6e('0x12')](function(_0x2a39e9){if(_0x2a39e9&&_0x2a39e9[_0xae6e('0x41')]===0x0){return db['UserProfileResource']['create']({'name':_0x175705['name'],'resourceId':_0x175705['id'],'type':_0x2a39e9[_0xae6e('0x1d')],'sectionId':_0x2a39e9['id']},{})[_0xae6e('0x12')](function(){return _0x39748d;});}else{return _0x39748d;}})[_0xae6e('0x39')](function(_0xf29a11){logger[_0xae6e('0x1b')](_0xae6e('0x42'),_0xf29a11);throw _0xf29a11;});}return _0x39748d;})['then'](respondWithResult(_0x1be104,0xc9))[_0xae6e('0x39')](handleError(_0x1be104,null));};exports[_0xae6e('0x11')]=function(_0x2b5a28,_0x294a28){if(_0x2b5a28[_0xae6e('0x3c')]['id']){delete _0x2b5a28[_0xae6e('0x3c')]['id'];}return db[_0xae6e('0x21')][_0xae6e('0x43')]({'where':{'id':_0x2b5a28[_0xae6e('0x44')]['id']}})['then'](handleEntityNotFound(_0x294a28,null))[_0xae6e('0x12')](saveUpdates(_0x2b5a28['body'],null))[_0xae6e('0x12')](function(_0x1b0213){if(!_0x1b0213)return;var _0x19ef3f=_0x1b0213['get']({'plain':!![]});return _0x19ef3f;})[_0xae6e('0x12')](function(_0x5a6b18){var _0x2175a5=new Redis(config['redis']);_0x2175a5['publish'](_0xae6e('0x18'),JSON[_0xae6e('0x19')](_['pick'](_0x5a6b18,['id',_0xae6e('0x1d'),_0xae6e('0x45')])));return _0x5a6b18;})[_0xae6e('0x12')](respondWithResult(_0x294a28,null))[_0xae6e('0x39')](handleError(_0x294a28,null));};exports[_0xae6e('0x16')]=function(_0x3ac361,_0x348a98){return db[_0xae6e('0x21')]['find']({'where':{'id':_0x3ac361[_0xae6e('0x44')]['id']}})[_0xae6e('0x12')](handleEntityNotFound(_0x348a98,null))[_0xae6e('0x12')](removeEntity(_0x348a98,null))[_0xae6e('0x39')](handleError(_0x348a98,null));};
\ No newline at end of file
+var _0x0d50=['then','get','UserProfileResource','publish','stringify','end','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','pick','merge','where','VIRTUAL','filter','includeAll','include','SquareProject','findAll','rows','catch','show','fields','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','agi','production','params','lodash','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register','json','offset','undefined','limit','count','status','set','Content-Range','update','destroy'];(function(_0xbb2f53,_0x4ca3f4){var _0x3774df=function(_0x396896){while(--_0x396896){_0xbb2f53['push'](_0xbb2f53['shift']());}};_0x3774df(++_0x4ca3f4);}(_0x0d50,0x1b2));var _0x00d5=function(_0x199973,_0x5b279f){_0x199973=_0x199973-0x0;var _0x1b1646=_0x0d50[_0x199973];return _0x1b1646;};'use strict';var _=require(_0x00d5('0x0'));var Redis=require(_0x00d5('0x1'));var qs=require(_0x00d5('0x2'));var logger=require(_0x00d5('0x3'))('api');var config=require(_0x00d5('0x4'));var db=require(_0x00d5('0x5'))['db'];config[_0x00d5('0x6')]=_[_0x00d5('0x7')](config[_0x00d5('0x6')],{'host':_0x00d5('0x8'),'port':0x18eb});var socket=require(_0x00d5('0x9'))(new Redis(config[_0x00d5('0x6')]));require(_0x00d5('0xa'))[_0x00d5('0xb')](socket);function respondWithResult(_0x28e638,_0x5d5bc4){_0x5d5bc4=_0x5d5bc4||0xc8;return function(_0x33fd1d){if(_0x33fd1d){return _0x28e638['status'](_0x5d5bc4)[_0x00d5('0xc')](_0x33fd1d);}};}function respondWithFilteredResult(_0x1aacac,_0x3f357e){return function(_0x37287d){if(_0x37287d){var _0x179648=typeof _0x3f357e[_0x00d5('0xd')]===_0x00d5('0xe')&&typeof _0x3f357e[_0x00d5('0xf')]===_0x00d5('0xe');var _0x40a62f=_0x37287d[_0x00d5('0x10')];var _0x9aa0a3=_0x179648?0x0:_0x3f357e[_0x00d5('0xd')];var _0x3d29f=_0x179648?_0x37287d['count']:_0x3f357e['offset']+_0x3f357e[_0x00d5('0xf')];var _0x506844;if(_0x3d29f>=_0x40a62f){_0x3d29f=_0x40a62f;_0x506844=0xc8;}else{_0x506844=0xce;}_0x1aacac[_0x00d5('0x11')](_0x506844);return _0x1aacac[_0x00d5('0x12')](_0x00d5('0x13'),_0x9aa0a3+'-'+_0x3d29f+'/'+_0x40a62f)[_0x00d5('0xc')](_0x37287d);}return null;};}function saveUpdates(_0x3d3632){return function(_0x3d2553){if(_0x3d2553){return _0x3d2553[_0x00d5('0x14')](_0x3d3632)['then'](function(_0x5e3fae){return _0x5e3fae;});}return null;};}function removeEntity(_0x574f99){return function(_0x114f52){if(_0x114f52){return _0x114f52[_0x00d5('0x15')]()[_0x00d5('0x16')](function(){var _0x1ce009=_0x114f52[_0x00d5('0x17')]({'plain':!![]});var _0x8f6e3d='SquareProjects';return db[_0x00d5('0x18')][_0x00d5('0x15')]({'where':{'type':_0x8f6e3d,'resourceId':_0x1ce009['id']}})[_0x00d5('0x16')](function(){return _0x114f52;});})[_0x00d5('0x16')](function(){var _0x242443=new Redis(config['redis']);_0x242443[_0x00d5('0x19')]('agi',JSON[_0x00d5('0x1a')]({'id':_0x114f52['id'],'deleted':!![]}));})[_0x00d5('0x16')](function(){_0x574f99['status'](0xcc)[_0x00d5('0x1b')]();});}};}function handleEntityNotFound(_0x225d67){return function(_0x15788f){if(!_0x15788f){_0x225d67[_0x00d5('0x1c')](0x194);}return _0x15788f;};}function handleError(_0x44ee25,_0x262638){_0x262638=_0x262638||0x1f4;return function(_0x19d0dd){logger[_0x00d5('0x1d')](_0x19d0dd[_0x00d5('0x1e')]);if(_0x19d0dd[_0x00d5('0x1f')]){delete _0x19d0dd[_0x00d5('0x1f')];}_0x44ee25['status'](_0x262638)[_0x00d5('0x20')](_0x19d0dd);};}exports[_0x00d5('0x21')]=function(_0x5457b0,_0x5479cb){var _0x29f827={},_0x535305={},_0x364246={'count':0x0,'rows':[]};var _0x13aac0=_[_0x00d5('0x22')](db['SquareProject'][_0x00d5('0x23')],function(_0x1a060a){return{'name':_0x1a060a[_0x00d5('0x24')],'type':_0x1a060a[_0x00d5('0x25')][_0x00d5('0x26')]};});_0x535305[_0x00d5('0x27')]=_[_0x00d5('0x22')](_0x13aac0,_0x00d5('0x1f'));_0x535305[_0x00d5('0x28')]=_[_0x00d5('0x29')](_0x5457b0['query']);_0x535305[_0x00d5('0x2a')]=_[_0x00d5('0x2b')](_0x535305[_0x00d5('0x27')],_0x535305[_0x00d5('0x28')]);_0x29f827[_0x00d5('0x2c')]=_[_0x00d5('0x2b')](_0x535305['model'],qs['fields'](_0x5457b0[_0x00d5('0x28')]['fields']));_0x29f827[_0x00d5('0x2c')]=_0x29f827[_0x00d5('0x2c')][_0x00d5('0x2d')]?_0x29f827[_0x00d5('0x2c')]:_0x535305[_0x00d5('0x27')];if(!_0x5457b0[_0x00d5('0x28')][_0x00d5('0x2e')](_0x00d5('0x2f'))){_0x29f827[_0x00d5('0xf')]=qs['limit'](_0x5457b0[_0x00d5('0x28')][_0x00d5('0xf')]);_0x29f827['offset']=qs[_0x00d5('0xd')](_0x5457b0[_0x00d5('0x28')][_0x00d5('0xd')]);}_0x29f827[_0x00d5('0x30')]=qs[_0x00d5('0x31')](_0x5457b0[_0x00d5('0x28')][_0x00d5('0x31')]);_0x29f827['where']=qs[_0x00d5('0x2a')](_[_0x00d5('0x32')](_0x5457b0[_0x00d5('0x28')],_0x535305['filters']),_0x13aac0);if(_0x5457b0[_0x00d5('0x28')]['filter']){_0x29f827['where']=_[_0x00d5('0x33')](_0x29f827[_0x00d5('0x34')],{'$or':_[_0x00d5('0x22')](_0x13aac0,function(_0x4c6cef){if(_0x4c6cef[_0x00d5('0x25')]!==_0x00d5('0x35')){var _0x2f507f={};_0x2f507f[_0x4c6cef[_0x00d5('0x1f')]]={'$like':'%'+_0x5457b0[_0x00d5('0x28')][_0x00d5('0x36')]+'%'};return _0x2f507f;}})});}_0x29f827=_[_0x00d5('0x33')]({},_0x29f827,_0x5457b0['options']);var _0x3896b0={'where':_0x29f827['where']};return db['SquareProject'][_0x00d5('0x10')](_0x3896b0)[_0x00d5('0x16')](function(_0x396d0b){_0x364246[_0x00d5('0x10')]=_0x396d0b;if(_0x5457b0[_0x00d5('0x28')][_0x00d5('0x37')]){_0x29f827[_0x00d5('0x38')]=[{'all':!![]}];}return db[_0x00d5('0x39')][_0x00d5('0x3a')](_0x29f827);})[_0x00d5('0x16')](function(_0x14beda){_0x364246[_0x00d5('0x3b')]=_0x14beda;return _0x364246;})['then'](respondWithFilteredResult(_0x5479cb,_0x29f827))[_0x00d5('0x3c')](handleError(_0x5479cb,null));};exports[_0x00d5('0x3d')]=function(_0x1065b6,_0x232f79){var _0x4b2c69={'raw':![],'where':{'id':_0x1065b6['params']['id']}},_0x8615bd={};_0x8615bd[_0x00d5('0x27')]=_['keys'](db[_0x00d5('0x39')][_0x00d5('0x23')]);_0x8615bd[_0x00d5('0x28')]=_[_0x00d5('0x29')](_0x1065b6[_0x00d5('0x28')]);_0x8615bd[_0x00d5('0x2a')]=_[_0x00d5('0x2b')](_0x8615bd['model'],_0x8615bd[_0x00d5('0x28')]);_0x4b2c69[_0x00d5('0x2c')]=_['intersection'](_0x8615bd[_0x00d5('0x27')],qs[_0x00d5('0x3e')](_0x1065b6[_0x00d5('0x28')]['fields']));_0x4b2c69['attributes']=_0x4b2c69[_0x00d5('0x2c')][_0x00d5('0x2d')]?_0x4b2c69['attributes']:_0x8615bd[_0x00d5('0x27')];if(_0x1065b6['query']['includeAll']){_0x4b2c69[_0x00d5('0x38')]=[{'all':!![]}];}_0x4b2c69=_[_0x00d5('0x33')]({},_0x4b2c69,_0x1065b6[_0x00d5('0x3f')]);return db[_0x00d5('0x39')][_0x00d5('0x40')](_0x4b2c69)[_0x00d5('0x16')](handleEntityNotFound(_0x232f79,null))[_0x00d5('0x16')](respondWithResult(_0x232f79,null))[_0x00d5('0x3c')](handleError(_0x232f79,null));};exports[_0x00d5('0x41')]=function(_0x5e6990,_0x3a08e9){return db[_0x00d5('0x39')][_0x00d5('0x41')](_0x5e6990[_0x00d5('0x42')],{})[_0x00d5('0x16')](function(_0x309d8c){var _0xa63a28=_0x5e6990[_0x00d5('0x43')][_0x00d5('0x17')]({'plain':!![]});if(!_0xa63a28)throw new Error(_0x00d5('0x44'));if(_0xa63a28[_0x00d5('0x45')]===_0x00d5('0x43')){var _0x339c04=_0x309d8c['get']({'plain':!![]});var _0x5e5c1c='SquareProjects';return db[_0x00d5('0x46')][_0x00d5('0x40')]({'where':{'name':_0x5e5c1c,'userProfileId':_0xa63a28[_0x00d5('0x47')]},'raw':!![]})['then'](function(_0x5c8c6c){if(_0x5c8c6c&&_0x5c8c6c[_0x00d5('0x48')]===0x0){return db[_0x00d5('0x18')][_0x00d5('0x41')]({'name':_0x339c04[_0x00d5('0x1f')],'resourceId':_0x339c04['id'],'type':_0x5c8c6c[_0x00d5('0x1f')],'sectionId':_0x5c8c6c['id']},{})[_0x00d5('0x16')](function(){return _0x309d8c;});}else{return _0x309d8c;}})['catch'](function(_0x1bb7af){logger[_0x00d5('0x1d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1bb7af);throw _0x1bb7af;});}return _0x309d8c;})[_0x00d5('0x16')](respondWithResult(_0x3a08e9,0xc9))['catch'](handleError(_0x3a08e9,null));};exports[_0x00d5('0x14')]=function(_0x2a2e4a,_0x8d4c06){if(_0x2a2e4a['body']['id']){delete _0x2a2e4a[_0x00d5('0x42')]['id'];}return db[_0x00d5('0x39')][_0x00d5('0x40')]({'where':{'id':_0x2a2e4a['params']['id']}})[_0x00d5('0x16')](handleEntityNotFound(_0x8d4c06,null))[_0x00d5('0x16')](saveUpdates(_0x2a2e4a['body'],null))['then'](function(_0x1aa453){if(!_0x1aa453)return;var _0x901c85=_0x1aa453[_0x00d5('0x17')]({'plain':!![]});return _0x901c85;})[_0x00d5('0x16')](function(_0xa41a3b){var _0x27f071=new Redis(config[_0x00d5('0x6')]);_0x27f071[_0x00d5('0x19')](_0x00d5('0x49'),JSON[_0x00d5('0x1a')](_[_0x00d5('0x32')](_0xa41a3b,['id',_0x00d5('0x1f'),_0x00d5('0x4a')])));return _0xa41a3b;})[_0x00d5('0x16')](respondWithResult(_0x8d4c06,null))['catch'](handleError(_0x8d4c06,null));};exports[_0x00d5('0x15')]=function(_0x3b0059,_0xcb7c2c){return db[_0x00d5('0x39')]['find']({'where':{'id':_0x3b0059[_0x00d5('0x4b')]['id']}})['then'](handleEntityNotFound(_0xcb7c2c,null))[_0x00d5('0x16')](removeEntity(_0xcb7c2c,null))[_0x00d5('0x3c')](handleError(_0xcb7c2c,null));};
\ No newline at end of file
index f7af9b4..2f96c37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf0c=['save','update','remove','emit','hasOwnProperty','hook','events','../../mysqldb','setMaxListeners'];(function(_0x5a58cd,_0x1ac675){var _0xd3bca5=function(_0x224f41){while(--_0x224f41){_0x5a58cd['push'](_0x5a58cd['shift']());}};_0xd3bca5(++_0x1ac675);}(_0xaf0c,0x180));var _0xcaf0=function(_0x4ea17a,_0x4b9c83){_0x4ea17a=_0x4ea17a-0x0;var _0x58e65f=_0xaf0c[_0x4ea17a];return _0x58e65f;};'use strict';var EventEmitter=require(_0xcaf0('0x0'));var SquareProject=require(_0xcaf0('0x1'))['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xcaf0('0x2')](0x0);var events={'afterCreate':_0xcaf0('0x3'),'afterUpdate':_0xcaf0('0x4'),'afterDestroy':_0xcaf0('0x5')};function emitEvent(_0x31e5be){return function(_0x1f1825,_0x4520a7,_0x4a6642){SquareProjectEvents[_0xcaf0('0x6')](_0x31e5be+':'+_0x1f1825['id'],_0x1f1825);SquareProjectEvents[_0xcaf0('0x6')](_0x31e5be,_0x1f1825);_0x4a6642(null);};}for(var e in events){if(events[_0xcaf0('0x7')](e)){var event=events[e];SquareProject[_0xcaf0('0x8')](e,emitEvent(event));}}module['exports']=SquareProjectEvents;
\ No newline at end of file
+var _0x1d2e=['hasOwnProperty','hook','exports','events','../../mysqldb','SquareProject','save','update','remove','emit'];(function(_0xd2a212,_0x3a68d9){var _0x534f86=function(_0xc3f263){while(--_0xc3f263){_0xd2a212['push'](_0xd2a212['shift']());}};_0x534f86(++_0x3a68d9);}(_0x1d2e,0xcb));var _0xe1d2=function(_0x33293d,_0x29e08c){_0x33293d=_0x33293d-0x0;var _0x29046e=_0x1d2e[_0x33293d];return _0x29046e;};'use strict';var EventEmitter=require(_0xe1d2('0x0'));var SquareProject=require(_0xe1d2('0x1'))['db'][_0xe1d2('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe1d2('0x3'),'afterUpdate':_0xe1d2('0x4'),'afterDestroy':_0xe1d2('0x5')};function emitEvent(_0x3aabc4){return function(_0xd91e5b,_0x4acb0c,_0x330186){SquareProjectEvents[_0xe1d2('0x6')](_0x3aabc4+':'+_0xd91e5b['id'],_0xd91e5b);SquareProjectEvents[_0xe1d2('0x6')](_0x3aabc4,_0xd91e5b);_0x330186(null);};}for(var e in events){if(events[_0xe1d2('0x7')](e)){var event=events[e];SquareProject[_0xe1d2('0x8')](e,emitEvent(event));}}module[_0xe1d2('0x9')]=SquareProjectEvents;
\ No newline at end of file
index a64942e..72e22d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1455=['YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','square_projects','changed','preproduction','savedAt','format'];(function(_0x524f17,_0x42db4b){var _0xb250fa=function(_0x3aab6a){while(--_0x3aab6a){_0x524f17['push'](_0x524f17['shift']());}};_0xb250fa(++_0x42db4b);}(_0x1455,0x133));var _0x5145=function(_0x2ba214,_0x3d0f91){_0x2ba214=_0x2ba214-0x0;var _0x5b4811=_0x1455[_0x2ba214];return _0x5b4811;};'use strict';var _=require(_0x5145('0x0'));var util=require(_0x5145('0x1'));var logger=require(_0x5145('0x2'))(_0x5145('0x3'));var moment=require(_0x5145('0x4'));var BPromise=require(_0x5145('0x5'));var rp=require(_0x5145('0x6'));var fs=require('fs');var path=require(_0x5145('0x7'));var rimraf=require(_0x5145('0x8'));var config=require(_0x5145('0x9'));var attributes=require('./squareProject.attributes');module['exports']=function(_0x8bac8b,_0x36b5b4){return _0x8bac8b[_0x5145('0xa')]('SquareProject',attributes,{'tableName':_0x5145('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x27fc83,_0x30b53b,_0x1479ac){if(_0x27fc83[_0x5145('0xc')](_0x5145('0xd'))){_0x27fc83[_0x5145('0xe')]=moment()[_0x5145('0xf')](_0x5145('0x10'));}if(_0x27fc83[_0x5145('0xc')](_0x5145('0x11'))){_0x27fc83[_0x5145('0x12')]=moment()[_0x5145('0xf')]('YYYY-MM-DD\x20HH:mm:ss');}_0x1479ac(null,_0x27fc83);}}});};
\ No newline at end of file
+var _0x0386=['util','../../config/logger','moment','path','./squareProject.attributes','exports','define','SquareProject','square_projects','changed','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','publishedAt','lodash'];(function(_0x2005fd,_0x53236d){var _0x3fd506=function(_0x61960c){while(--_0x61960c){_0x2005fd['push'](_0x2005fd['shift']());}};_0x3fd506(++_0x53236d);}(_0x0386,0x8f));var _0x6038=function(_0x311ac7,_0x1e6921){_0x311ac7=_0x311ac7-0x0;var _0x4bcf18=_0x0386[_0x311ac7];return _0x4bcf18;};'use strict';var _=require(_0x6038('0x0'));var util=require(_0x6038('0x1'));var logger=require(_0x6038('0x2'))('api');var moment=require(_0x6038('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x6038('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6038('0x5'));module[_0x6038('0x6')]=function(_0xc69f9a,_0x69584a){return _0xc69f9a[_0x6038('0x7')](_0x6038('0x8'),attributes,{'tableName':_0x6038('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x390717,_0x102853,_0x2fa2e9){if(_0x390717[_0x6038('0xa')](_0x6038('0xb'))){_0x390717[_0x6038('0xc')]=moment()[_0x6038('0xd')](_0x6038('0xe'));}if(_0x390717[_0x6038('0xa')]('production')){_0x390717[_0x6038('0xf')]=moment()[_0x6038('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0x2fa2e9(null,_0x390717);}}});};
\ No newline at end of file
index 74d40aa..74ebfb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2915=['redis','socket.io-emitter','./squareProject.socket','register','GetSquareProjects','SquareProject','findAll','options','raw','where','attributes','limit','include','model','map','then','info','debug','catch','error','message','ShowSquareProject','find','ioredis','../../mysqldb','../../config/logger','../../config/environment'];(function(_0x5823a7,_0x3cc2d7){var _0x4f1d86=function(_0x26ff02){while(--_0x26ff02){_0x5823a7['push'](_0x5823a7['shift']());}};_0x4f1d86(++_0x3cc2d7);}(_0x2915,0x191));var _0x5291=function(_0x97385e,_0x17e853){_0x97385e=_0x97385e-0x0;var _0x5d337e=_0x2915[_0x97385e];return _0x5d337e;};'use strict';var _=require('lodash');var Redis=require(_0x5291('0x0'));var db=require(_0x5291('0x1'))['db'];var logger=require(_0x5291('0x2'))('rpc');var config=require(_0x5291('0x3'));config[_0x5291('0x4')]=_['defaults'](config[_0x5291('0x4')],{'host':'localhost','port':0x18eb});var socket=require(_0x5291('0x5'))(new Redis(config[_0x5291('0x4')]));require(_0x5291('0x6'))[_0x5291('0x7')](socket);exports[_0x5291('0x8')]=function(_0x574288){var _0x556482=this;return new Promise(function(_0x367781,_0x19c499){return db[_0x5291('0x9')][_0x5291('0xa')]({'raw':_0x574288['options']?_0x574288[_0x5291('0xb')][_0x5291('0xc')]===undefined?!![]:![]:!![],'where':_0x574288[_0x5291('0xb')]?_0x574288[_0x5291('0xb')][_0x5291('0xd')]||null:null,'attributes':_0x574288[_0x5291('0xb')]?_0x574288['options'][_0x5291('0xe')]||null:null,'limit':_0x574288[_0x5291('0xb')]?_0x574288[_0x5291('0xb')][_0x5291('0xf')]||null:null,'include':_0x574288['options']?_0x574288[_0x5291('0xb')][_0x5291('0x10')]?_['map'](_0x574288[_0x5291('0xb')]['include'],function(_0x4d5c4a){return{'model':db[_0x4d5c4a[_0x5291('0x11')]],'as':_0x4d5c4a['as'],'attributes':_0x4d5c4a[_0x5291('0xe')],'include':_0x4d5c4a['include']?_[_0x5291('0x12')](_0x4d5c4a['include'],function(_0x4614ba){return{'model':db[_0x4614ba[_0x5291('0x11')]],'as':_0x4614ba['as'],'attributes':_0x4614ba[_0x5291('0xe')],'include':_0x4614ba[_0x5291('0x10')]?_[_0x5291('0x12')](_0x4614ba[_0x5291('0x10')],function(_0x108b8d){return{'model':db[_0x108b8d[_0x5291('0x11')]],'as':_0x108b8d['as'],'attributes':_0x108b8d[_0x5291('0xe')]};}):[]};}):[]};}):[]:[]})[_0x5291('0x13')](function(_0x4f0004){logger[_0x5291('0x14')](_0x5291('0x8'),_0x574288);logger[_0x5291('0x15')](_0x5291('0x8'),_0x574288,JSON['stringify'](_0x4f0004));_0x367781(_0x4f0004);})[_0x5291('0x16')](function(_0x2d4567){logger[_0x5291('0x17')](_0x5291('0x8'),_0x2d4567['message'],_0x574288);_0x19c499(_0x556482[_0x5291('0x17')](0x1f4,_0x2d4567[_0x5291('0x18')]));});});};exports[_0x5291('0x19')]=function(_0x1895b3){var _0x3ed80c=this;return new Promise(function(_0x4bc280,_0x178bb4){return db[_0x5291('0x9')][_0x5291('0x1a')]({'raw':_0x1895b3[_0x5291('0xb')]?_0x1895b3[_0x5291('0xb')][_0x5291('0xc')]===undefined?!![]:![]:!![],'where':_0x1895b3['options']?_0x1895b3[_0x5291('0xb')]['where']||null:null,'attributes':_0x1895b3[_0x5291('0xb')]?_0x1895b3[_0x5291('0xb')]['attributes']||null:null,'include':_0x1895b3[_0x5291('0xb')]?_0x1895b3[_0x5291('0xb')][_0x5291('0x10')]?_[_0x5291('0x12')](_0x1895b3[_0x5291('0xb')][_0x5291('0x10')],function(_0x2eb69a){return{'model':db[_0x2eb69a[_0x5291('0x11')]],'as':_0x2eb69a['as'],'attributes':_0x2eb69a[_0x5291('0xe')],'include':_0x2eb69a['include']?_[_0x5291('0x12')](_0x2eb69a['include'],function(_0x410aee){return{'model':db[_0x410aee['model']],'as':_0x410aee['as'],'attributes':_0x410aee['attributes'],'include':_0x410aee['include']?_[_0x5291('0x12')](_0x410aee[_0x5291('0x10')],function(_0x4b69c1){return{'model':db[_0x4b69c1['model']],'as':_0x4b69c1['as'],'attributes':_0x4b69c1[_0x5291('0xe')]};}):[]};}):[]};}):[]:[]})[_0x5291('0x13')](function(_0x4deb6e){logger[_0x5291('0x14')](_0x5291('0x19'),_0x1895b3);logger['debug'](_0x5291('0x19'),_0x1895b3,JSON['stringify'](_0x4deb6e));_0x4bc280(_0x4deb6e);})[_0x5291('0x16')](function(_0x153cf2){logger[_0x5291('0x17')](_0x5291('0x19'),_0x153cf2[_0x5291('0x18')],_0x1895b3);_0x178bb4(_0x3ed80c[_0x5291('0x17')](0x1f4,_0x153cf2[_0x5291('0x18')]));});});};
\ No newline at end of file
+var _0x051f=['GetSquareProjects','options','raw','where','limit','include','map','model','attributes','then','info','debug','catch','error','message','SquareProject','find','ShowSquareProject','stringify','ioredis','../../mysqldb','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','register'];(function(_0x44bcb0,_0x235aa9){var _0xfaf881=function(_0x25d81d){while(--_0x25d81d){_0x44bcb0['push'](_0x44bcb0['shift']());}};_0xfaf881(++_0x235aa9);}(_0x051f,0x83));var _0xf051=function(_0x314397,_0x550526){_0x314397=_0x314397-0x0;var _0x1ec45e=_0x051f[_0x314397];return _0x1ec45e;};'use strict';var _=require('lodash');var Redis=require(_0xf051('0x0'));var db=require(_0xf051('0x1'))['db'];var logger=require('../../config/logger')(_0xf051('0x2'));var config=require(_0xf051('0x3'));config[_0xf051('0x4')]=_[_0xf051('0x5')](config[_0xf051('0x4')],{'host':_0xf051('0x6'),'port':0x18eb});var socket=require(_0xf051('0x7'))(new Redis(config[_0xf051('0x4')]));require('./squareProject.socket')[_0xf051('0x8')](socket);exports[_0xf051('0x9')]=function(_0x50b7c6){var _0x2a6a0e=this;return new Promise(function(_0x14106c,_0xdc833f){return db['SquareProject']['findAll']({'raw':_0x50b7c6[_0xf051('0xa')]?_0x50b7c6[_0xf051('0xa')][_0xf051('0xb')]===undefined?!![]:![]:!![],'where':_0x50b7c6[_0xf051('0xa')]?_0x50b7c6[_0xf051('0xa')][_0xf051('0xc')]||null:null,'attributes':_0x50b7c6[_0xf051('0xa')]?_0x50b7c6[_0xf051('0xa')]['attributes']||null:null,'limit':_0x50b7c6[_0xf051('0xa')]?_0x50b7c6[_0xf051('0xa')][_0xf051('0xd')]||null:null,'include':_0x50b7c6[_0xf051('0xa')]?_0x50b7c6['options'][_0xf051('0xe')]?_[_0xf051('0xf')](_0x50b7c6[_0xf051('0xa')][_0xf051('0xe')],function(_0x55d5ca){return{'model':db[_0x55d5ca[_0xf051('0x10')]],'as':_0x55d5ca['as'],'attributes':_0x55d5ca[_0xf051('0x11')],'include':_0x55d5ca[_0xf051('0xe')]?_[_0xf051('0xf')](_0x55d5ca[_0xf051('0xe')],function(_0x3b0f97){return{'model':db[_0x3b0f97[_0xf051('0x10')]],'as':_0x3b0f97['as'],'attributes':_0x3b0f97[_0xf051('0x11')],'include':_0x3b0f97[_0xf051('0xe')]?_[_0xf051('0xf')](_0x3b0f97[_0xf051('0xe')],function(_0x14d096){return{'model':db[_0x14d096[_0xf051('0x10')]],'as':_0x14d096['as'],'attributes':_0x14d096['attributes']};}):[]};}):[]};}):[]:[]})[_0xf051('0x12')](function(_0x22a697){logger[_0xf051('0x13')](_0xf051('0x9'),_0x50b7c6);logger[_0xf051('0x14')](_0xf051('0x9'),_0x50b7c6,JSON['stringify'](_0x22a697));_0x14106c(_0x22a697);})[_0xf051('0x15')](function(_0x4d59e1){logger[_0xf051('0x16')](_0xf051('0x9'),_0x4d59e1['message'],_0x50b7c6);_0xdc833f(_0x2a6a0e[_0xf051('0x16')](0x1f4,_0x4d59e1[_0xf051('0x17')]));});});};exports['ShowSquareProject']=function(_0x221f89){var _0x51344c=this;return new Promise(function(_0x1fffa0,_0x4c1192){return db[_0xf051('0x18')][_0xf051('0x19')]({'raw':_0x221f89[_0xf051('0xa')]?_0x221f89[_0xf051('0xa')][_0xf051('0xb')]===undefined?!![]:![]:!![],'where':_0x221f89['options']?_0x221f89['options'][_0xf051('0xc')]||null:null,'attributes':_0x221f89[_0xf051('0xa')]?_0x221f89[_0xf051('0xa')][_0xf051('0x11')]||null:null,'include':_0x221f89[_0xf051('0xa')]?_0x221f89[_0xf051('0xa')][_0xf051('0xe')]?_['map'](_0x221f89['options'][_0xf051('0xe')],function(_0x5b96b9){return{'model':db[_0x5b96b9[_0xf051('0x10')]],'as':_0x5b96b9['as'],'attributes':_0x5b96b9['attributes'],'include':_0x5b96b9[_0xf051('0xe')]?_[_0xf051('0xf')](_0x5b96b9[_0xf051('0xe')],function(_0x2d036a){return{'model':db[_0x2d036a[_0xf051('0x10')]],'as':_0x2d036a['as'],'attributes':_0x2d036a['attributes'],'include':_0x2d036a['include']?_[_0xf051('0xf')](_0x2d036a[_0xf051('0xe')],function(_0xff862d){return{'model':db[_0xff862d[_0xf051('0x10')]],'as':_0xff862d['as'],'attributes':_0xff862d[_0xf051('0x11')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x46a059){logger['info'](_0xf051('0x1a'),_0x221f89);logger[_0xf051('0x14')]('ShowSquareProject',_0x221f89,JSON[_0xf051('0x1b')](_0x46a059));_0x1fffa0(_0x46a059);})[_0xf051('0x15')](function(_0x174b2a){logger[_0xf051('0x16')](_0xf051('0x1a'),_0x174b2a['message'],_0x221f89);_0x4c1192(_0x51344c[_0xf051('0x16')](0x1f4,_0x174b2a[_0xf051('0x17')]));});});};
\ No newline at end of file
index 7c272ea..c39617f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c5f=['save','update','emit','register','length','squareProject:'];(function(_0x1602fb,_0x20b6b3){var _0x461831=function(_0x4a19f1){while(--_0x4a19f1){_0x1602fb['push'](_0x1602fb['shift']());}};_0x461831(++_0x20b6b3);}(_0x6c5f,0x1f2));var _0xf6c5=function(_0x27d5ae,_0x154c63){_0x27d5ae=_0x27d5ae-0x0;var _0x559f53=_0x6c5f[_0x27d5ae];return _0x559f53;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=[_0xf6c5('0x0'),'remove',_0xf6c5('0x1')];function createListener(_0x3e901d,_0x52f4a9){return function(_0x3a7921){_0x52f4a9[_0xf6c5('0x2')](_0x3e901d,_0x3a7921);};}function removeListener(_0x4be855,_0x272e10){return function(){SquareProjectEvents['removeListener'](_0x4be855,_0x272e10);};}exports[_0xf6c5('0x3')]=function(_0x2d9905){for(var _0x4bf92c=0x0,_0x7df28e=events[_0xf6c5('0x4')];_0x4bf92c<_0x7df28e;_0x4bf92c++){var _0x95138b=events[_0x4bf92c];var _0x1263b6=createListener(_0xf6c5('0x5')+_0x95138b,_0x2d9905);SquareProjectEvents['on'](_0x95138b,_0x1263b6);}};
\ No newline at end of file
+var _0xdbee=['removeListener','register','length','squareProject:','update','emit'];(function(_0x2cec1b,_0x5ae4b4){var _0x1ad27b=function(_0xd43a54){while(--_0xd43a54){_0x2cec1b['push'](_0x2cec1b['shift']());}};_0x1ad27b(++_0x5ae4b4);}(_0xdbee,0x9a));var _0xedbe=function(_0x2e7b5c,_0x1d98e4){_0x2e7b5c=_0x2e7b5c-0x0;var _0x3f1fff=_0xdbee[_0x2e7b5c];return _0x3f1fff;};'use strict';var SquareProjectEvents=require('./squareProject.events');var events=['save','remove',_0xedbe('0x0')];function createListener(_0xaba264,_0x18b05d){return function(_0x2eafcf){_0x18b05d[_0xedbe('0x1')](_0xaba264,_0x2eafcf);};}function removeListener(_0x5ee7b2,_0x23817e){return function(){SquareProjectEvents[_0xedbe('0x2')](_0x5ee7b2,_0x23817e);};}exports[_0xedbe('0x3')]=function(_0x134cc8){for(var _0x5c7499=0x0,_0x236426=events[_0xedbe('0x4')];_0x5c7499<_0x236426;_0x5c7499++){var _0x93dcd8=events[_0x5c7499];var _0x4129fd=createListener(_0xedbe('0x5')+_0x93dcd8,_0x134cc8);SquareProjectEvents['on'](_0x93dcd8,_0x4129fd);}};
\ No newline at end of file
index 4d3ea76..70698f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','/:id','show','/:id/download','download','post','create','put','delete','destroy','exports'];(function(_0xa98662,_0x1f2eaf){var _0x31ba10=function(_0x4edbd7){while(--_0x4edbd7){_0xa98662['push'](_0xa98662['shift']());}};_0x31ba10(++_0x1f2eaf);}(_0x814b,0x1a2));var _0xb814=function(_0x4105a8,_0x198324){_0x4105a8=_0x4105a8-0x0;var _0x553f0c=_0x814b[_0x4105a8];return _0x553f0c;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')]('/',auth[_0xb814('0xb')](),controller['index']);router[_0xb814('0xa')](_0xb814('0xc'),auth['isAuthenticated'](),controller[_0xb814('0xd')]);router[_0xb814('0xa')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0xf')]);router[_0xb814('0x10')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0x12')](_0xb814('0xc'),auth[_0xb814('0xb')](),controller['update']);router[_0xb814('0x13')]('/:id',auth[_0xb814('0xb')](),controller[_0xb814('0x14')]);module[_0xb814('0x15')]=router;
\ No newline at end of file
+var _0x5fab=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','/:id','show','/:id/download','download','create','put','update','delete','destroy','multer','util','connect-timeout'];(function(_0x57ec8d,_0x59d2dd){var _0x2a6efd=function(_0x484881){while(--_0x484881){_0x57ec8d['push'](_0x57ec8d['shift']());}};_0x2a6efd(++_0x59d2dd);}(_0x5fab,0x177));var _0xb5fa=function(_0x5a636f,_0x3fec2b){_0x5a636f=_0x5a636f-0x0;var _0x6a8cfb=_0x5fab[_0x5a636f];return _0x6a8cfb;};'use strict';var multer=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var path=require('path');var timeout=require(_0xb5fa('0x2'));var express=require(_0xb5fa('0x3'));var router=express[_0xb5fa('0x4')]();var fs_extra=require(_0xb5fa('0x5'));var auth=require(_0xb5fa('0x6'));var interaction=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var controller=require(_0xb5fa('0x9'));router[_0xb5fa('0xa')]('/',auth[_0xb5fa('0xb')](),controller['index']);router['get'](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0xd')]);router['get'](_0xb5fa('0xe'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0xb5fa('0x10')]);router[_0xb5fa('0x11')](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x12')]);router[_0xb5fa('0x13')](_0xb5fa('0xc'),auth[_0xb5fa('0xb')](),controller[_0xb5fa('0x14')]);module['exports']=router;
\ No newline at end of file
index be10fd4..7146459 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeff8=['STRING','VIRTUAL','getDataValue','savePath','substring','lastIndexOf','sequelize','exports'];(function(_0x16a4a1,_0x5c549b){var _0x3b144a=function(_0x4d6913){while(--_0x4d6913){_0x16a4a1['push'](_0x16a4a1['shift']());}};_0x3b144a(++_0x5c549b);}(_0xeff8,0x186));var _0x8eff=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xeff8[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require(_0x8eff('0x0'));module[_0x8eff('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x8eff('0x2')]},'calleridname':{'type':Sequelize[_0x8eff('0x2')]},'context':{'type':Sequelize[_0x8eff('0x2')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x8eff('0x2')]},'accountcode':{'type':Sequelize[_0x8eff('0x2')]},'dnid':{'type':Sequelize[_0x8eff('0x2')]},'projectName':{'type':Sequelize[_0x8eff('0x2')]},'saveName':{'type':Sequelize['STRING']},'filename':{'type':Sequelize[_0x8eff('0x2')]},'savePath':{'type':Sequelize[_0x8eff('0x2')]},'format':{'type':Sequelize[_0x8eff('0x3')],'get':function(){var _0x323b2='';var _0x491f01=this[_0x8eff('0x4')](_0x8eff('0x5'));if(_0x491f01){_0x323b2=_0x491f01[_0x8eff('0x6')](_0x491f01[_0x8eff('0x7')]('.'));}return _0x323b2;}}};
\ No newline at end of file
+var _0x2eb2=['substring','lastIndexOf','exports','STRING','VIRTUAL','getDataValue','savePath'];(function(_0xc4001c,_0x1bf8f0){var _0x49f7bc=function(_0x1059b8){while(--_0x1059b8){_0xc4001c['push'](_0xc4001c['shift']());}};_0x49f7bc(++_0x1bf8f0);}(_0x2eb2,0x19f));var _0x22eb=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0x2eb2[_0x47b58b];return _0x46bebe;};'use strict';var Sequelize=require('sequelize');module[_0x22eb('0x0')]={'uniqueid':{'type':Sequelize[_0x22eb('0x1')]},'callerid':{'type':Sequelize[_0x22eb('0x1')]},'calleridname':{'type':Sequelize[_0x22eb('0x1')]},'context':{'type':Sequelize[_0x22eb('0x1')]},'extension':{'type':Sequelize[_0x22eb('0x1')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x22eb('0x1')]},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize['STRING']},'saveName':{'type':Sequelize[_0x22eb('0x1')]},'filename':{'type':Sequelize[_0x22eb('0x1')]},'savePath':{'type':Sequelize[_0x22eb('0x1')]},'format':{'type':Sequelize[_0x22eb('0x2')],'get':function(){var _0x4539d0='';var _0x396806=this[_0x22eb('0x3')](_0x22eb('0x4'));if(_0x396806){_0x4539d0=_0x396806[_0x22eb('0x5')](_0x396806[_0x22eb('0x6')]('.'));}return _0x4539d0;}}};
\ No newline at end of file
index bb8d075..840bcfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dd9=['to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','save','update','then','error','name','map','SquareRecording','rawAttributes','type','key','query','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','includeAll','findAll','rows','catch','show','keys','include','find','create','body','download','uniqueid','params','savePath','format','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','destroy','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','moment','bluebird','mustache','path','sox'];(function(_0x37bd26,_0x5ad346){var _0xe83dc4=function(_0x1ac229){while(--_0x1ac229){_0x37bd26['push'](_0x37bd26['shift']());}};_0xe83dc4(++_0x5ad346);}(_0x2dd9,0x182));var _0x92dd=function(_0xef150d,_0x2287a6){_0xef150d=_0xef150d-0x0;var _0x34eb21=_0x2dd9[_0xef150d];return _0x34eb21;};'use strict';var emlformat=require(_0x92dd('0x0'));var rimraf=require(_0x92dd('0x1'));var zipdir=require(_0x92dd('0x2'));var jsonpatch=require(_0x92dd('0x3'));var rp=require(_0x92dd('0x4'));var moment=require(_0x92dd('0x5'));var BPromise=require(_0x92dd('0x6'));var Mustache=require(_0x92dd('0x7'));var util=require('util');var path=require(_0x92dd('0x8'));var sox=require(_0x92dd('0x9'));var csv=require(_0x92dd('0xa'));var ejs=require(_0x92dd('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x92dd('0xc'));var squel=require(_0x92dd('0xd'));var crypto=require(_0x92dd('0xe'));var jsforce=require(_0x92dd('0xf'));var deskjs=require(_0x92dd('0x10'));var toCsv=require(_0x92dd('0xa'));var querystring=require(_0x92dd('0x11'));var Papa=require('papaparse');var Redis=require(_0x92dd('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x92dd('0x13'));var as=require(_0x92dd('0x14'));var hardwareService=require(_0x92dd('0x15'));var logger=require(_0x92dd('0x16'))(_0x92dd('0x17'));var utils=require('../../config/utils');var config=require(_0x92dd('0x18'));var licenseUtil=require(_0x92dd('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x584d55,_0x58eab8){_0x58eab8=_0x58eab8||0xcc;return function(_0xe80c72){if(_0xe80c72){return _0x584d55[_0x92dd('0x1a')](_0x58eab8);}return _0x584d55[_0x92dd('0x1b')](_0x58eab8)[_0x92dd('0x1c')]();};}function respondWithResult(_0x48f2cb,_0x441a0a){_0x441a0a=_0x441a0a||0xc8;return function(_0x39cc62){if(_0x39cc62){return _0x48f2cb['status'](_0x441a0a)[_0x92dd('0x1d')](_0x39cc62);}};}function respondWithFilteredResult(_0x3bd8f0,_0x95882f){return function(_0x31fef2){if(_0x31fef2){var _0x2a05da=typeof _0x95882f[_0x92dd('0x1e')]==='undefined'&&typeof _0x95882f[_0x92dd('0x1f')]===_0x92dd('0x20');var _0x41ae9d=_0x31fef2[_0x92dd('0x21')];var _0x356a6e=_0x2a05da?0x0:_0x95882f[_0x92dd('0x1e')];var _0x4e029d=_0x2a05da?_0x31fef2[_0x92dd('0x21')]:_0x95882f[_0x92dd('0x1e')]+_0x95882f['limit'];var _0x237105;if(_0x4e029d>=_0x41ae9d){_0x4e029d=_0x41ae9d;_0x237105=0xc8;}else{_0x237105=0xce;}_0x3bd8f0[_0x92dd('0x1b')](_0x237105);return _0x3bd8f0[_0x92dd('0x22')]('Content-Range',_0x356a6e+'-'+_0x4e029d+'/'+_0x41ae9d)[_0x92dd('0x1d')](_0x31fef2);}return null;};}function patchUpdates(_0x390fbc){return function(_0x1b29d0){try{jsonpatch[_0x92dd('0x23')](_0x1b29d0,_0x390fbc,!![]);}catch(_0x1b17e3){return BPromise['reject'](_0x1b17e3);}return _0x1b29d0[_0x92dd('0x24')]();};}function saveUpdates(_0x215569,_0x19f0bf){return function(_0x53349b){if(_0x53349b){return _0x53349b[_0x92dd('0x25')](_0x215569)['then'](function(_0x3314c7){return _0x3314c7;});}return null;};}function removeEntity(_0x4a1813,_0x362392){return function(_0xae8d7){if(_0xae8d7){return _0xae8d7['destroy']()[_0x92dd('0x26')](function(){_0x4a1813['status'](0xcc)[_0x92dd('0x1c')]();});}};}function handleEntityNotFound(_0x29a86d,_0x32a30d){return function(_0x505325){if(!_0x505325){_0x29a86d[_0x92dd('0x1a')](0x194);}return _0x505325;};}function handleError(_0x199c2a,_0xffd265){_0xffd265=_0xffd265||0x1f4;return function(_0x1fb64b){logger[_0x92dd('0x27')](_0x1fb64b['stack']);if(_0x1fb64b[_0x92dd('0x28')]){delete _0x1fb64b[_0x92dd('0x28')];}_0x199c2a[_0x92dd('0x1b')](_0xffd265)['send'](_0x1fb64b);};}exports['index']=function(_0x4b89e3,_0x3efd9b){var _0x260006={},_0x373c41={},_0x3b6ad8={'count':0x0,'rows':[]};var _0x2f5849=_[_0x92dd('0x29')](db[_0x92dd('0x2a')][_0x92dd('0x2b')],function(_0x3b31a1){return{'name':_0x3b31a1['fieldName'],'type':_0x3b31a1[_0x92dd('0x2c')][_0x92dd('0x2d')]};});_0x373c41['model']=_[_0x92dd('0x29')](_0x2f5849,'name');_0x373c41[_0x92dd('0x2e')]=_['keys'](_0x4b89e3[_0x92dd('0x2e')]);_0x373c41['filters']=_[_0x92dd('0x2f')](_0x373c41['model'],_0x373c41[_0x92dd('0x2e')]);_0x260006[_0x92dd('0x30')]=_[_0x92dd('0x2f')](_0x373c41[_0x92dd('0x31')],qs[_0x92dd('0x32')](_0x4b89e3[_0x92dd('0x2e')][_0x92dd('0x32')]));_0x260006['attributes']=_0x260006[_0x92dd('0x30')][_0x92dd('0x33')]?_0x260006[_0x92dd('0x30')]:_0x373c41[_0x92dd('0x31')];if(!_0x4b89e3[_0x92dd('0x2e')][_0x92dd('0x34')](_0x92dd('0x35'))){_0x260006['limit']=qs[_0x92dd('0x1f')](_0x4b89e3[_0x92dd('0x2e')][_0x92dd('0x1f')]);_0x260006[_0x92dd('0x1e')]=qs[_0x92dd('0x1e')](_0x4b89e3['query'][_0x92dd('0x1e')]);}_0x260006[_0x92dd('0x36')]=qs[_0x92dd('0x37')](_0x4b89e3[_0x92dd('0x2e')]['sort']);_0x260006[_0x92dd('0x38')]=qs[_0x92dd('0x39')](_[_0x92dd('0x3a')](_0x4b89e3[_0x92dd('0x2e')],_0x373c41['filters']),_0x2f5849);if(_0x4b89e3[_0x92dd('0x2e')][_0x92dd('0x3b')]){_0x260006[_0x92dd('0x38')]=_[_0x92dd('0x3c')](_0x260006[_0x92dd('0x38')],{'$or':_[_0x92dd('0x29')](_0x2f5849,function(_0x11e6bd){if(_0x11e6bd[_0x92dd('0x2c')]!=='VIRTUAL'){var _0x68b08={};_0x68b08[_0x11e6bd[_0x92dd('0x28')]]={'$like':'%'+_0x4b89e3[_0x92dd('0x2e')][_0x92dd('0x3b')]+'%'};return _0x68b08;}})});}_0x260006=_['merge']({},_0x260006,_0x4b89e3[_0x92dd('0x3d')]);var _0x292690={'where':_0x260006[_0x92dd('0x38')]};return db[_0x92dd('0x2a')][_0x92dd('0x21')](_0x292690)[_0x92dd('0x26')](function(_0x2cec40){_0x3b6ad8[_0x92dd('0x21')]=_0x2cec40;if(_0x4b89e3['query'][_0x92dd('0x3e')]){_0x260006['include']=[{'all':!![]}];}return db[_0x92dd('0x2a')][_0x92dd('0x3f')](_0x260006);})['then'](function(_0x1bf8d5){_0x3b6ad8[_0x92dd('0x40')]=_0x1bf8d5;return _0x3b6ad8;})[_0x92dd('0x26')](respondWithFilteredResult(_0x3efd9b,_0x260006))[_0x92dd('0x41')](handleError(_0x3efd9b,null));};exports[_0x92dd('0x42')]=function(_0x5cd686,_0x186b7b){var _0x32940f={'raw':!![],'where':{'id':_0x5cd686['params']['id']}},_0x4df661={};_0x4df661[_0x92dd('0x31')]=_[_0x92dd('0x43')](db['SquareRecording'][_0x92dd('0x2b')]);_0x4df661[_0x92dd('0x2e')]=_['keys'](_0x5cd686[_0x92dd('0x2e')]);_0x4df661[_0x92dd('0x39')]=_[_0x92dd('0x2f')](_0x4df661['model'],_0x4df661['query']);_0x32940f[_0x92dd('0x30')]=_['intersection'](_0x4df661[_0x92dd('0x31')],qs['fields'](_0x5cd686[_0x92dd('0x2e')][_0x92dd('0x32')]));_0x32940f[_0x92dd('0x30')]=_0x32940f[_0x92dd('0x30')][_0x92dd('0x33')]?_0x32940f[_0x92dd('0x30')]:_0x4df661[_0x92dd('0x31')];if(_0x5cd686[_0x92dd('0x2e')][_0x92dd('0x3e')]){_0x32940f[_0x92dd('0x44')]=[{'all':!![]}];}_0x32940f=_[_0x92dd('0x3c')]({},_0x32940f,_0x5cd686[_0x92dd('0x3d')]);return db['SquareRecording'][_0x92dd('0x45')](_0x32940f)[_0x92dd('0x26')](handleEntityNotFound(_0x186b7b,null))[_0x92dd('0x26')](respondWithResult(_0x186b7b,null))['catch'](handleError(_0x186b7b,null));};exports[_0x92dd('0x46')]=function(_0x10a1c3,_0x430b38){return db['SquareRecording']['create'](_0x10a1c3['body'],{})[_0x92dd('0x26')](respondWithResult(_0x430b38,0xc9))[_0x92dd('0x41')](handleError(_0x430b38,null));};exports[_0x92dd('0x25')]=function(_0x2d8b23,_0x2ce466){if(_0x2d8b23[_0x92dd('0x47')]['id']){delete _0x2d8b23[_0x92dd('0x47')]['id'];}return db[_0x92dd('0x2a')][_0x92dd('0x45')]({'where':{'id':_0x2d8b23['params']['id']}})[_0x92dd('0x26')](handleEntityNotFound(_0x2ce466,null))['then'](saveUpdates(_0x2d8b23['body'],null))[_0x92dd('0x26')](respondWithResult(_0x2ce466,null))['catch'](handleError(_0x2ce466,null));};exports[_0x92dd('0x48')]=function(_0x217671,_0x3e8b09,_0x3bfbd3){var _0x9b397d=require('../../components/encryptor');var _0x5e13f4=![];var _0x166615={};if(_0x217671['query']['type']&&_0x217671[_0x92dd('0x2e')][_0x92dd('0x2c')]===_0x92dd('0x49')){_0x166615[_0x92dd('0x49')]=_0x217671[_0x92dd('0x4a')]['id'];}else{_0x166615['id']=_0x217671[_0x92dd('0x4a')]['id'];}return db[_0x92dd('0x2a')][_0x92dd('0x45')]({'where':_0x166615,'attributes':['id',_0x92dd('0x4b'),'filename'],'raw':!![]})['then'](handleEntityNotFound(_0x3e8b09,null))[_0x92dd('0x26')](function(_0x5ed487){if(_0x5ed487){var _0x1d6112=_0x5ed487[_0x92dd('0x4b')];var _0x1c6f5a=util[_0x92dd('0x4c')](_0x92dd('0x4d'),_0x1d6112);if(fs[_0x92dd('0x4e')](_0x1c6f5a)){_0x5e13f4=!![];return _0x9b397d[_0x92dd('0x4f')](_0x1c6f5a,_0x1d6112,config[_0x92dd('0x50')][_0x92dd('0x51')])[_0x92dd('0x26')](function(){return _0x5ed487;});}return _0x5ed487;}})['then'](function(_0x2a8468){if(_0x2a8468){var _0x409893=_0x2a8468[_0x92dd('0x4b')];if(!fs[_0x92dd('0x4e')](_0x409893)){throw new db[(_0x92dd('0x52'))][(_0x92dd('0x53'))](_0x92dd('0x54'));}if(_0x2a8468[_0x92dd('0x55')]){return _0x3e8b09[_0x92dd('0x48')](_0x409893,_0x2a8468['filename']+path[_0x92dd('0x56')](_0x409893),function(){if(_0x5e13f4){fs[_0x92dd('0x57')](_0x409893);}});}else{return _0x3e8b09[_0x92dd('0x48')](_0x409893,function(_0x1bf0b9){if(_0x5e13f4){fs['unlink'](_0x409893);}});}}})[_0x92dd('0x41')](function(_0xe0ef6e){if(_0xe0ef6e[_0x92dd('0x58')]==='SquareRecording\x20not\x20found'){_0x3e8b09['status'](0x194)['send'](_0x92dd('0x59'));}else{return handleError(_0x3e8b09,null);}});};exports[_0x92dd('0x5a')]=function(_0x1bff0a,_0x51ebd9){return db[_0x92dd('0x2a')][_0x92dd('0x45')]({'where':{'id':_0x1bff0a[_0x92dd('0x4a')]['id']}})[_0x92dd('0x26')](function(_0x52bc2f){if(_[_0x92dd('0x5b')](_0x52bc2f)){throw new ReferenceError(_0x92dd('0x5c'));}return _0x52bc2f;})[_0x92dd('0x26')](function(_0x2e45eb){var _0x173fed=_0x2e45eb[_0x92dd('0x4b')];logger[_0x92dd('0x5d')](_0x92dd('0x5e'),_0x173fed);if(!_['isNil'](_0x2e45eb[_0x92dd('0x4b')])&&fs[_0x92dd('0x4e')](_0x173fed)){logger[_0x92dd('0x5d')](_0x92dd('0x5f')+_0x173fed+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x92dd('0x60')](_0x173fed);}_0x173fed=_0x173fed+_0x92dd('0x61');if(!_['isNil'](_0x2e45eb[_0x92dd('0x4b')])&&fs[_0x92dd('0x4e')](_0x173fed)){logger[_0x92dd('0x5d')](_0x92dd('0x5f')+_0x173fed+_0x92dd('0x62'));fs[_0x92dd('0x60')](_0x173fed);}return _0x2e45eb;})['then'](function(_0x5b66e4){if(!_0x5b66e4)throw new InternalError();return _0x5b66e4[_0x92dd('0x5a')]();})[_0x92dd('0x26')](function(){_0x51ebd9[_0x92dd('0x1b')](0xcc)['end']();})[_0x92dd('0x41')](handleError(_0x51ebd9,null));};
\ No newline at end of file
+var _0x450f=['fs-extra','lodash','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','SquareRecording','rawAttributes','type','key','model','map','query','keys','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','filters','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params','intersection','length','find','create','body','../../components/encryptor','uniqueid','savePath','format','%s.cypher','decryptFile','secrets','existsSync','Sequelize','ValidationError','filename','download','extname','unlink','message','SquareRecording\x20not\x20found','Not\x20found','isNil','info','cancellazione\x20fisica\x20documento\x20%s','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','File:\x20\x22','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs'];(function(_0xd0c3a7,_0x122311){var _0x5cab88=function(_0xb7504a){while(--_0xb7504a){_0xd0c3a7['push'](_0xd0c3a7['shift']());}};_0x5cab88(++_0x122311);}(_0x450f,0x11d));var _0xf450=function(_0x2d5291,_0x56fe0e){_0x2d5291=_0x2d5291-0x0;var _0x349cfe=_0x450f[_0x2d5291];return _0x349cfe;};'use strict';var emlformat=require(_0xf450('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf450('0x1'));var jsonpatch=require(_0xf450('0x2'));var rp=require(_0xf450('0x3'));var moment=require(_0xf450('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xf450('0x5'));var util=require(_0xf450('0x6'));var path=require(_0xf450('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf450('0x8'));var fs=require('fs');var fs_extra=require(_0xf450('0x9'));var _=require(_0xf450('0xa'));var squel=require(_0xf450('0xb'));var crypto=require(_0xf450('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf450('0xd'));var querystring=require(_0xf450('0xe'));var Papa=require(_0xf450('0xf'));var Redis=require(_0xf450('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xf450('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf450('0x12'))(_0xf450('0x13'));var utils=require(_0xf450('0x14'));var config=require(_0xf450('0x15'));var licenseUtil=require(_0xf450('0x16'));var db=require(_0xf450('0x17'))['db'];function respondWithStatusCode(_0x56f9e1,_0x1a2043){_0x1a2043=_0x1a2043||0xcc;return function(_0x1656be){if(_0x1656be){return _0x56f9e1[_0xf450('0x18')](_0x1a2043);}return _0x56f9e1[_0xf450('0x19')](_0x1a2043)[_0xf450('0x1a')]();};}function respondWithResult(_0x45fb24,_0x4f2800){_0x4f2800=_0x4f2800||0xc8;return function(_0x2fee7e){if(_0x2fee7e){return _0x45fb24[_0xf450('0x19')](_0x4f2800)[_0xf450('0x1b')](_0x2fee7e);}};}function respondWithFilteredResult(_0x135430,_0x529a70){return function(_0x3e6741){if(_0x3e6741){var _0x51a0e4=typeof _0x529a70['offset']==='undefined'&&typeof _0x529a70['limit']===_0xf450('0x1c');var _0x771031=_0x3e6741[_0xf450('0x1d')];var _0x4ee133=_0x51a0e4?0x0:_0x529a70['offset'];var _0x5147f9=_0x51a0e4?_0x3e6741[_0xf450('0x1d')]:_0x529a70[_0xf450('0x1e')]+_0x529a70['limit'];var _0x61e6ff;if(_0x5147f9>=_0x771031){_0x5147f9=_0x771031;_0x61e6ff=0xc8;}else{_0x61e6ff=0xce;}_0x135430[_0xf450('0x19')](_0x61e6ff);return _0x135430['set'](_0xf450('0x1f'),_0x4ee133+'-'+_0x5147f9+'/'+_0x771031)[_0xf450('0x1b')](_0x3e6741);}return null;};}function patchUpdates(_0x55e51f){return function(_0xa4ac19){try{jsonpatch['apply'](_0xa4ac19,_0x55e51f,!![]);}catch(_0x2af4e4){return BPromise[_0xf450('0x20')](_0x2af4e4);}return _0xa4ac19[_0xf450('0x21')]();};}function saveUpdates(_0x6bf63f,_0xc46730){return function(_0x4bdae3){if(_0x4bdae3){return _0x4bdae3[_0xf450('0x22')](_0x6bf63f)[_0xf450('0x23')](function(_0x4f07f0){return _0x4f07f0;});}return null;};}function removeEntity(_0x4c40f4,_0x415b06){return function(_0x3d6b5e){if(_0x3d6b5e){return _0x3d6b5e[_0xf450('0x24')]()[_0xf450('0x23')](function(){_0x4c40f4[_0xf450('0x19')](0xcc)[_0xf450('0x1a')]();});}};}function handleEntityNotFound(_0x81ae9a,_0x5ac739){return function(_0x467ef9){if(!_0x467ef9){_0x81ae9a[_0xf450('0x18')](0x194);}return _0x467ef9;};}function handleError(_0x4600b9,_0xde184a){_0xde184a=_0xde184a||0x1f4;return function(_0x1ba74c){logger[_0xf450('0x25')](_0x1ba74c[_0xf450('0x26')]);if(_0x1ba74c[_0xf450('0x27')]){delete _0x1ba74c[_0xf450('0x27')];}_0x4600b9[_0xf450('0x19')](_0xde184a)[_0xf450('0x28')](_0x1ba74c);};}exports[_0xf450('0x29')]=function(_0x58097c,_0x289464){var _0x2ffca6={},_0x4a2ac7={},_0x5751d9={'count':0x0,'rows':[]};var _0x21bd59=_['map'](db[_0xf450('0x2a')][_0xf450('0x2b')],function(_0x1abac0){return{'name':_0x1abac0['fieldName'],'type':_0x1abac0[_0xf450('0x2c')][_0xf450('0x2d')]};});_0x4a2ac7[_0xf450('0x2e')]=_[_0xf450('0x2f')](_0x21bd59,_0xf450('0x27'));_0x4a2ac7[_0xf450('0x30')]=_[_0xf450('0x31')](_0x58097c[_0xf450('0x30')]);_0x4a2ac7['filters']=_['intersection'](_0x4a2ac7['model'],_0x4a2ac7[_0xf450('0x30')]);_0x2ffca6[_0xf450('0x32')]=_['intersection'](_0x4a2ac7[_0xf450('0x2e')],qs[_0xf450('0x33')](_0x58097c[_0xf450('0x30')][_0xf450('0x33')]));_0x2ffca6['attributes']=_0x2ffca6[_0xf450('0x32')]['length']?_0x2ffca6[_0xf450('0x32')]:_0x4a2ac7[_0xf450('0x2e')];if(!_0x58097c['query'][_0xf450('0x34')](_0xf450('0x35'))){_0x2ffca6['limit']=qs[_0xf450('0x36')](_0x58097c[_0xf450('0x30')]['limit']);_0x2ffca6[_0xf450('0x1e')]=qs[_0xf450('0x1e')](_0x58097c[_0xf450('0x30')][_0xf450('0x1e')]);}_0x2ffca6[_0xf450('0x37')]=qs[_0xf450('0x38')](_0x58097c[_0xf450('0x30')][_0xf450('0x38')]);_0x2ffca6[_0xf450('0x39')]=qs[_0xf450('0x3a')](_['pick'](_0x58097c[_0xf450('0x30')],_0x4a2ac7[_0xf450('0x3a')]),_0x21bd59);if(_0x58097c[_0xf450('0x30')]['filter']){_0x2ffca6[_0xf450('0x39')]=_[_0xf450('0x3b')](_0x2ffca6[_0xf450('0x39')],{'$or':_[_0xf450('0x2f')](_0x21bd59,function(_0x1023aa){if(_0x1023aa[_0xf450('0x2c')]!==_0xf450('0x3c')){var _0x2410af={};_0x2410af[_0x1023aa[_0xf450('0x27')]]={'$like':'%'+_0x58097c['query'][_0xf450('0x3d')]+'%'};return _0x2410af;}})});}_0x2ffca6=_['merge']({},_0x2ffca6,_0x58097c[_0xf450('0x3e')]);var _0x45f868={'where':_0x2ffca6[_0xf450('0x39')]};return db[_0xf450('0x2a')]['count'](_0x45f868)['then'](function(_0x4b75da){_0x5751d9[_0xf450('0x1d')]=_0x4b75da;if(_0x58097c[_0xf450('0x30')][_0xf450('0x3f')]){_0x2ffca6[_0xf450('0x40')]=[{'all':!![]}];}return db[_0xf450('0x2a')]['findAll'](_0x2ffca6);})[_0xf450('0x23')](function(_0x443675){_0x5751d9[_0xf450('0x41')]=_0x443675;return _0x5751d9;})[_0xf450('0x23')](respondWithFilteredResult(_0x289464,_0x2ffca6))[_0xf450('0x42')](handleError(_0x289464,null));};exports[_0xf450('0x43')]=function(_0x3ae39b,_0x2d6c91){var _0x3ea407={'raw':!![],'where':{'id':_0x3ae39b[_0xf450('0x44')]['id']}},_0x2825eb={};_0x2825eb[_0xf450('0x2e')]=_['keys'](db[_0xf450('0x2a')][_0xf450('0x2b')]);_0x2825eb[_0xf450('0x30')]=_[_0xf450('0x31')](_0x3ae39b[_0xf450('0x30')]);_0x2825eb[_0xf450('0x3a')]=_[_0xf450('0x45')](_0x2825eb['model'],_0x2825eb['query']);_0x3ea407[_0xf450('0x32')]=_[_0xf450('0x45')](_0x2825eb['model'],qs[_0xf450('0x33')](_0x3ae39b[_0xf450('0x30')][_0xf450('0x33')]));_0x3ea407[_0xf450('0x32')]=_0x3ea407[_0xf450('0x32')][_0xf450('0x46')]?_0x3ea407[_0xf450('0x32')]:_0x2825eb[_0xf450('0x2e')];if(_0x3ae39b['query'][_0xf450('0x3f')]){_0x3ea407[_0xf450('0x40')]=[{'all':!![]}];}_0x3ea407=_[_0xf450('0x3b')]({},_0x3ea407,_0x3ae39b[_0xf450('0x3e')]);return db[_0xf450('0x2a')][_0xf450('0x47')](_0x3ea407)['then'](handleEntityNotFound(_0x2d6c91,null))['then'](respondWithResult(_0x2d6c91,null))[_0xf450('0x42')](handleError(_0x2d6c91,null));};exports[_0xf450('0x48')]=function(_0x523a4f,_0x4f7808){return db[_0xf450('0x2a')][_0xf450('0x48')](_0x523a4f['body'],{})[_0xf450('0x23')](respondWithResult(_0x4f7808,0xc9))[_0xf450('0x42')](handleError(_0x4f7808,null));};exports[_0xf450('0x22')]=function(_0x2c6425,_0x4120cd){if(_0x2c6425[_0xf450('0x49')]['id']){delete _0x2c6425[_0xf450('0x49')]['id'];}return db[_0xf450('0x2a')]['find']({'where':{'id':_0x2c6425['params']['id']}})[_0xf450('0x23')](handleEntityNotFound(_0x4120cd,null))[_0xf450('0x23')](saveUpdates(_0x2c6425[_0xf450('0x49')],null))[_0xf450('0x23')](respondWithResult(_0x4120cd,null))[_0xf450('0x42')](handleError(_0x4120cd,null));};exports['download']=function(_0x2985bf,_0x5b026d,_0xccf021){var _0x3d8089=require(_0xf450('0x4a'));var _0x2fe5c9=![];var _0x269096={};if(_0x2985bf[_0xf450('0x30')][_0xf450('0x2c')]&&_0x2985bf[_0xf450('0x30')][_0xf450('0x2c')]==='uniqueid'){_0x269096[_0xf450('0x4b')]=_0x2985bf[_0xf450('0x44')]['id'];}else{_0x269096['id']=_0x2985bf[_0xf450('0x44')]['id'];}return db['SquareRecording'][_0xf450('0x47')]({'where':_0x269096,'attributes':['id',_0xf450('0x4c'),'filename'],'raw':!![]})[_0xf450('0x23')](handleEntityNotFound(_0x5b026d,null))[_0xf450('0x23')](function(_0x36c27e){if(_0x36c27e){var _0x8f5f7a=_0x36c27e[_0xf450('0x4c')];var _0x185d54=util[_0xf450('0x4d')](_0xf450('0x4e'),_0x8f5f7a);if(fs['existsSync'](_0x185d54)){_0x2fe5c9=!![];return _0x3d8089[_0xf450('0x4f')](_0x185d54,_0x8f5f7a,config[_0xf450('0x50')]['recording'])[_0xf450('0x23')](function(){return _0x36c27e;});}return _0x36c27e;}})['then'](function(_0x56f7c1){if(_0x56f7c1){var _0x4c2dd4=_0x56f7c1[_0xf450('0x4c')];if(!fs[_0xf450('0x51')](_0x4c2dd4)){throw new db[(_0xf450('0x52'))][(_0xf450('0x53'))]('SquareRecording\x20not\x20found');}if(_0x56f7c1[_0xf450('0x54')]){return _0x5b026d[_0xf450('0x55')](_0x4c2dd4,_0x56f7c1[_0xf450('0x54')]+path[_0xf450('0x56')](_0x4c2dd4),function(){if(_0x2fe5c9){fs[_0xf450('0x57')](_0x4c2dd4);}});}else{return _0x5b026d[_0xf450('0x55')](_0x4c2dd4,function(_0x167827){if(_0x2fe5c9){fs['unlink'](_0x4c2dd4);}});}}})[_0xf450('0x42')](function(_0x30d9e0){if(_0x30d9e0[_0xf450('0x58')]===_0xf450('0x59')){_0x5b026d[_0xf450('0x19')](0x194)['send'](_0xf450('0x5a'));}else{return handleError(_0x5b026d,null);}});};exports[_0xf450('0x24')]=function(_0x2a4ab1,_0xedc12d){return db[_0xf450('0x2a')]['find']({'where':{'id':_0x2a4ab1[_0xf450('0x44')]['id']}})[_0xf450('0x23')](function(_0xc91365){if(_[_0xf450('0x5b')](_0xc91365)){throw new ReferenceError('Entity\x20not\x20found');}return _0xc91365;})[_0xf450('0x23')](function(_0x54da23){var _0x4de5c0=_0x54da23['savePath'];logger[_0xf450('0x5c')](_0xf450('0x5d'),_0x4de5c0);if(!_['isNil'](_0x54da23['savePath'])&&fs[_0xf450('0x51')](_0x4de5c0)){logger[_0xf450('0x5c')]('File:\x20\x22'+_0x4de5c0+_0xf450('0x5e'));fs[_0xf450('0x5f')](_0x4de5c0);}_0x4de5c0=_0x4de5c0+_0xf450('0x60');if(!_[_0xf450('0x5b')](_0x54da23[_0xf450('0x4c')])&&fs[_0xf450('0x51')](_0x4de5c0)){logger['info'](_0xf450('0x61')+_0x4de5c0+_0xf450('0x5e'));fs[_0xf450('0x5f')](_0x4de5c0);}return _0x54da23;})[_0xf450('0x23')](function(_0x33b736){if(!_0x33b736)throw new InternalError();return _0x33b736[_0xf450('0x24')]();})[_0xf450('0x23')](function(){_0xedc12d[_0xf450('0x19')](0xcc)[_0xf450('0x1a')]();})[_0xf450('0x42')](handleError(_0xedc12d,null));};
\ No newline at end of file
index 9070fa7..a290748 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3fe=['lodash','../../config/logger','api','bluebird','request-promise','path','../../config/environment','exports','square_recordings'];(function(_0x40f351,_0x152dca){var _0x4cd285=function(_0x1311a9){while(--_0x1311a9){_0x40f351['push'](_0x40f351['shift']());}};_0x4cd285(++_0x152dca);}(_0xa3fe,0xd8));var _0xea3f=function(_0x32be86,_0x421ec3){_0x32be86=_0x32be86-0x0;var _0x11711d=_0xa3fe[_0x32be86];return _0x11711d;};'use strict';var _=require(_0xea3f('0x0'));var util=require('util');var logger=require(_0xea3f('0x1'))(_0xea3f('0x2'));var moment=require('moment');var BPromise=require(_0xea3f('0x3'));var rp=require(_0xea3f('0x4'));var fs=require('fs');var path=require(_0xea3f('0x5'));var rimraf=require('rimraf');var config=require(_0xea3f('0x6'));var attributes=require('./squareRecording.attributes');module[_0xea3f('0x7')]=function(_0x7ea359,_0x4150b2){return _0x7ea359['define']('SquareRecording',attributes,{'tableName':_0xea3f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcaef=['api','moment','request-promise','rimraf','../../config/environment','exports','define','util','../../config/logger'];(function(_0x528d4d,_0x4bc214){var _0x2d760a=function(_0x5110e2){while(--_0x5110e2){_0x528d4d['push'](_0x528d4d['shift']());}};_0x2d760a(++_0x4bc214);}(_0xcaef,0x1c9));var _0xfcae=function(_0x101e7b,_0x4ef05b){_0x101e7b=_0x101e7b-0x0;var _0x4995c0=_0xcaef[_0x101e7b];return _0x4995c0;};'use strict';var _=require('lodash');var util=require(_0xfcae('0x0'));var logger=require(_0xfcae('0x1'))(_0xfcae('0x2'));var moment=require(_0xfcae('0x3'));var BPromise=require('bluebird');var rp=require(_0xfcae('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfcae('0x5'));var config=require(_0xfcae('0x6'));var attributes=require('./squareRecording.attributes');module[_0xfcae('0x7')]=function(_0x19dd62,_0x4e8311){return _0x19dd62[_0xfcae('0x8')]('SquareRecording',attributes,{'tableName':'square_recordings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 019909d..26558bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34ec=['../../config/logger','jayson/promise','client','http','then','info','request\x20sent','stringify','error','code','SquareRecording,\x20%s,\x20%s','message','result','catch','CreateSquareRecording','SquareRecording','body','options','raw','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x529296,_0x1a6a23){var _0x1796bf=function(_0x3cae53){while(--_0x3cae53){_0x529296['push'](_0x529296['shift']());}};_0x1796bf(++_0x1a6a23);}(_0x34ec,0x173));var _0xc34e=function(_0x1f8c5d,_0xf46077){_0x1f8c5d=_0x1f8c5d-0x0;var _0x23fb07=_0x34ec[_0x1f8c5d];return _0x23fb07;};'use strict';var _=require(_0xc34e('0x0'));var util=require(_0xc34e('0x1'));var moment=require(_0xc34e('0x2'));var BPromise=require(_0xc34e('0x3'));var rs=require(_0xc34e('0x4'));var fs=require('fs');var Redis=require(_0xc34e('0x5'));var db=require(_0xc34e('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xc34e('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc34e('0x8'));var client=jayson[_0xc34e('0x9')][_0xc34e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5fe6e2,_0x5cde63,_0x41de27){return new BPromise(function(_0x2792b4,_0x4e3019){return client['request'](_0x5fe6e2,_0x41de27)[_0xc34e('0xb')](function(_0x10aa4){logger[_0xc34e('0xc')]('SquareRecording,\x20%s,\x20%s',_0x5cde63,_0xc34e('0xd'));logger['debug']('SquareRecording,\x20%s,\x20%s,\x20%s',_0x5cde63,_0xc34e('0xd'),JSON[_0xc34e('0xe')](_0x10aa4));if(_0x10aa4[_0xc34e('0xf')]){if(_0x10aa4['error'][_0xc34e('0x10')]===0x1f4){logger['error'](_0xc34e('0x11'),_0x5cde63,_0x10aa4['error'][_0xc34e('0x12')]);return _0x4e3019(_0x10aa4[_0xc34e('0xf')][_0xc34e('0x12')]);}logger[_0xc34e('0xf')](_0xc34e('0x11'),_0x5cde63,_0x10aa4[_0xc34e('0xf')][_0xc34e('0x12')]);return _0x2792b4(_0x10aa4['error'][_0xc34e('0x12')]);}else{logger[_0xc34e('0xc')](_0xc34e('0x11'),_0x5cde63,_0xc34e('0xd'));_0x2792b4(_0x10aa4[_0xc34e('0x13')]['message']);}})[_0xc34e('0x14')](function(_0x29f738){logger['error']('SquareRecording,\x20%s,\x20%s',_0x5cde63,_0x29f738);_0x4e3019(_0x29f738);});});}exports[_0xc34e('0x15')]=function(_0x135c25){var _0x114ef0=this;return new Promise(function(_0x48d6b1,_0x2dd409){return db[_0xc34e('0x16')]['create'](_0x135c25[_0xc34e('0x17')],{'raw':_0x135c25[_0xc34e('0x18')]?_0x135c25[_0xc34e('0x18')][_0xc34e('0x19')]===undefined?!![]:![]:!![]})[_0xc34e('0xb')](function(_0xd9b64f){logger['info']('CreateSquareRecording',_0x135c25);logger[_0xc34e('0x1a')]('CreateSquareRecording',_0x135c25,JSON[_0xc34e('0xe')](_0xd9b64f));_0x48d6b1(_0xd9b64f);})['catch'](function(_0x26f524){logger[_0xc34e('0xf')](_0xc34e('0x15'),_0x26f524[_0xc34e('0x12')],_0x135c25);_0x2dd409(_0x114ef0[_0xc34e('0xf')](0x1f4,_0x26f524[_0xc34e('0x12')]));});});};
\ No newline at end of file
+var _0xd9e6=['SquareRecording','body','options','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','CreateSquareRecording'];(function(_0x77a3a7,_0x1c0bd0){var _0x45bc8f=function(_0x34b065){while(--_0x34b065){_0x77a3a7['push'](_0x77a3a7['shift']());}};_0x45bc8f(++_0x1c0bd0);}(_0xd9e6,0x13b));var _0x6d9e=function(_0xfe2d2b,_0x516547){_0xfe2d2b=_0xfe2d2b-0x0;var _0x3379ae=_0xd9e6[_0xfe2d2b];return _0x3379ae;};'use strict';var _=require('lodash');var util=require(_0x6d9e('0x0'));var moment=require(_0x6d9e('0x1'));var BPromise=require(_0x6d9e('0x2'));var rs=require(_0x6d9e('0x3'));var fs=require('fs');var Redis=require(_0x6d9e('0x4'));var db=require(_0x6d9e('0x5'))['db'];var utils=require(_0x6d9e('0x6'));var logger=require('../../config/logger')(_0x6d9e('0x7'));var config=require(_0x6d9e('0x8'));var jayson=require(_0x6d9e('0x9'));var client=jayson[_0x6d9e('0xa')][_0x6d9e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1a82d1,_0x46fc6a,_0x2135a7){return new BPromise(function(_0x53a782,_0x594621){return client[_0x6d9e('0xc')](_0x1a82d1,_0x2135a7)[_0x6d9e('0xd')](function(_0x1ee69d){logger[_0x6d9e('0xe')](_0x6d9e('0xf'),_0x46fc6a,_0x6d9e('0x10'));logger[_0x6d9e('0x11')]('SquareRecording,\x20%s,\x20%s,\x20%s',_0x46fc6a,_0x6d9e('0x10'),JSON[_0x6d9e('0x12')](_0x1ee69d));if(_0x1ee69d[_0x6d9e('0x13')]){if(_0x1ee69d[_0x6d9e('0x13')]['code']===0x1f4){logger['error'](_0x6d9e('0xf'),_0x46fc6a,_0x1ee69d[_0x6d9e('0x13')]['message']);return _0x594621(_0x1ee69d['error'][_0x6d9e('0x14')]);}logger[_0x6d9e('0x13')]('SquareRecording,\x20%s,\x20%s',_0x46fc6a,_0x1ee69d['error']['message']);return _0x53a782(_0x1ee69d[_0x6d9e('0x13')][_0x6d9e('0x14')]);}else{logger[_0x6d9e('0xe')](_0x6d9e('0xf'),_0x46fc6a,_0x6d9e('0x10'));_0x53a782(_0x1ee69d[_0x6d9e('0x15')]['message']);}})['catch'](function(_0x3e156c){logger['error'](_0x6d9e('0xf'),_0x46fc6a,_0x3e156c);_0x594621(_0x3e156c);});});}exports[_0x6d9e('0x16')]=function(_0x517c63){var _0x35bf1b=this;return new Promise(function(_0x53333e,_0x252b3a){return db[_0x6d9e('0x17')]['create'](_0x517c63[_0x6d9e('0x18')],{'raw':_0x517c63['options']?_0x517c63[_0x6d9e('0x19')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x178a2c){logger['info'](_0x6d9e('0x16'),_0x517c63);logger[_0x6d9e('0x11')](_0x6d9e('0x16'),_0x517c63,JSON[_0x6d9e('0x12')](_0x178a2c));_0x53333e(_0x178a2c);})['catch'](function(_0x54015c){logger[_0x6d9e('0x13')](_0x6d9e('0x16'),_0x54015c['message'],_0x517c63);_0x252b3a(_0x35bf1b[_0x6d9e('0x13')](0x1f4,_0x54015c['message']));});});};
\ No newline at end of file
index 0ebc07a..6c4b38d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['/:id','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index','/describe','show','post','create','put'];(function(_0x29efce,_0x39add5){var _0x4fe167=function(_0x5b5b33){while(--_0x5b5b33){_0x29efce['push'](_0x29efce['shift']());}};_0x4fe167(++_0x39add5);}(_0xbaf0,0x12a));var _0x0baf=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xbaf0[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require('multer');var util=require(_0x0baf('0x0'));var path=require(_0x0baf('0x1'));var timeout=require(_0x0baf('0x2'));var express=require(_0x0baf('0x3'));var router=express[_0x0baf('0x4')]();var fs_extra=require(_0x0baf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0baf('0x6'));var config=require(_0x0baf('0x7'));var controller=require(_0x0baf('0x8'));router[_0x0baf('0x9')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xb')]);router[_0x0baf('0x9')](_0x0baf('0xc'),auth[_0x0baf('0xa')](),controller['describe']);router[_0x0baf('0x9')]('/:id',auth[_0x0baf('0xa')](),controller[_0x0baf('0xd')]);router[_0x0baf('0xe')]('/',auth[_0x0baf('0xa')](),controller[_0x0baf('0xf')]);router[_0x0baf('0x10')](_0x0baf('0x11'),auth[_0x0baf('0xa')](),controller[_0x0baf('0x12')]);router[_0x0baf('0x13')](_0x0baf('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0x0baf('0x14')]=router;
\ No newline at end of file
+var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','isAuthenticated','index'];(function(_0x4f99fc,_0x4cf9d7){var _0x3a034c=function(_0x5917fa){while(--_0x5917fa){_0x4f99fc['push'](_0x4f99fc['shift']());}};_0x3a034c(++_0x4cf9d7);}(_0xe706,0xa3));var _0x6e70=function(_0x208ff7,_0x12129a){_0x208ff7=_0x208ff7-0x0;var _0x266751=_0xe706[_0x208ff7];return _0x266751;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
index cd1d9e6..2fbe100 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5dc=['STRING','DATE'];(function(_0x54cb24,_0xa4c4b5){var _0x54496e=function(_0x50386b){while(--_0x50386b){_0x54cb24['push'](_0x54cb24['shift']());}};_0x54496e(++_0xa4c4b5);}(_0xc5dc,0xc2));var _0xcc5d=function(_0x4eb28f,_0x317417){_0x4eb28f=_0x4eb28f-0x0;var _0x1eaa29=_0xc5dc[_0x4eb28f];return _0x1eaa29;};'use strict';var Sequelize=require('sequelize');module['exports']={'network':{'type':Sequelize[_0xcc5d('0x0')]},'network_script':{'type':Sequelize['STRING']},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xcc5d('0x0')]},'language':{'type':Sequelize[_0xcc5d('0x0')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0xcc5d('0x0')]},'version':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xcc5d('0x0')]},'calleridname':{'type':Sequelize[_0xcc5d('0x0')]},'callingpres':{'type':Sequelize[_0xcc5d('0x0')]},'callingani2':{'type':Sequelize[_0xcc5d('0x0')]},'callington':{'type':Sequelize[_0xcc5d('0x0')]},'callingtns':{'type':Sequelize[_0xcc5d('0x0')]},'dnid':{'type':Sequelize['STRING']},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xcc5d('0x0')]},'extension':{'type':Sequelize[_0xcc5d('0x0')]},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xcc5d('0x0')]},'threadid':{'type':Sequelize[_0xcc5d('0x0')]},'project_name':{'type':Sequelize[_0xcc5d('0x0')]},'joinAt':{'type':Sequelize[_0xcc5d('0x1')]},'leaveAt':{'type':Sequelize[_0xcc5d('0x1')]},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x1ab4=['sequelize','exports','STRING','DATE'];(function(_0x494584,_0x4b31ab){var _0x795467=function(_0x15fadd){while(--_0x15fadd){_0x494584['push'](_0x494584['shift']());}};_0x795467(++_0x4b31ab);}(_0x1ab4,0x1b8));var _0x41ab=function(_0x1ee24c,_0x18ccfe){_0x1ee24c=_0x1ee24c-0x0;var _0x2e5c77=_0x1ab4[_0x1ee24c];return _0x2e5c77;};'use strict';var Sequelize=require(_0x41ab('0x0'));module[_0x41ab('0x1')]={'network':{'type':Sequelize['STRING']},'network_script':{'type':Sequelize[_0x41ab('0x2')]},'request':{'type':Sequelize[_0x41ab('0x2')]},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x41ab('0x2')]},'uniqueid':{'type':Sequelize[_0x41ab('0x2')]},'version':{'type':Sequelize[_0x41ab('0x2')]},'callerid':{'type':Sequelize[_0x41ab('0x2')]},'calleridname':{'type':Sequelize[_0x41ab('0x2')]},'callingpres':{'type':Sequelize[_0x41ab('0x2')]},'callingani2':{'type':Sequelize['STRING']},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0x41ab('0x2')]},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x41ab('0x2')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x41ab('0x2')]},'enhanced':{'type':Sequelize[_0x41ab('0x2')]},'accountcode':{'type':Sequelize[_0x41ab('0x2')]},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x41ab('0x3')]},'bot':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 355510e..895ea12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd397=['catch','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','filter','merge','options','SquareReport','includeAll','findAll','rows','show','params','length','find'];(function(_0x382a00,_0x38a9f6){var _0x5df870=function(_0x3e8557){while(--_0x3e8557){_0x382a00['push'](_0x382a00['shift']());}};_0x5df870(++_0x38a9f6);}(_0xd397,0x1c6));var _0x7d39=function(_0x3561a5,_0x382ed1){_0x3561a5=_0x3561a5-0x0;var _0x4612cb=_0xd397[_0x3561a5];return _0x4612cb;};'use strict';var emlformat=require(_0x7d39('0x0'));var rimraf=require(_0x7d39('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7d39('0x2'));var rp=require(_0x7d39('0x3'));var moment=require(_0x7d39('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x7d39('0x5'));var util=require(_0x7d39('0x6'));var path=require(_0x7d39('0x7'));var sox=require(_0x7d39('0x8'));var csv=require(_0x7d39('0x9'));var ejs=require(_0x7d39('0xa'));var fs=require('fs');var fs_extra=require(_0x7d39('0xb'));var _=require(_0x7d39('0xc'));var squel=require('squel');var crypto=require(_0x7d39('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x7d39('0xe'));var toCsv=require('to-csv');var querystring=require(_0x7d39('0xf'));var Papa=require(_0x7d39('0x10'));var Redis=require(_0x7d39('0x11'));var authService=require(_0x7d39('0x12'));var qs=require(_0x7d39('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x7d39('0x14'))(_0x7d39('0x15'));var utils=require(_0x7d39('0x16'));var config=require(_0x7d39('0x17'));var licenseUtil=require(_0x7d39('0x18'));var db=require(_0x7d39('0x19'))['db'];function respondWithStatusCode(_0x2f8ac7,_0x486d6a){_0x486d6a=_0x486d6a||0xcc;return function(_0x4f9c08){if(_0x4f9c08){return _0x2f8ac7['sendStatus'](_0x486d6a);}return _0x2f8ac7[_0x7d39('0x1a')](_0x486d6a)[_0x7d39('0x1b')]();};}function respondWithResult(_0x29917c,_0xb212a9){_0xb212a9=_0xb212a9||0xc8;return function(_0x2c15b5){if(_0x2c15b5){return _0x29917c[_0x7d39('0x1a')](_0xb212a9)[_0x7d39('0x1c')](_0x2c15b5);}};}function respondWithFilteredResult(_0x3d51e5,_0x1e3a5e){return function(_0x371174){if(_0x371174){var _0x5dd215=typeof _0x1e3a5e[_0x7d39('0x1d')]===_0x7d39('0x1e')&&typeof _0x1e3a5e[_0x7d39('0x1f')]===_0x7d39('0x1e');var _0x2430ba=_0x371174[_0x7d39('0x20')];var _0x34d3e3=_0x5dd215?0x0:_0x1e3a5e['offset'];var _0x20ba05=_0x5dd215?_0x371174[_0x7d39('0x20')]:_0x1e3a5e[_0x7d39('0x1d')]+_0x1e3a5e[_0x7d39('0x1f')];var _0x261b70;if(_0x20ba05>=_0x2430ba){_0x20ba05=_0x2430ba;_0x261b70=0xc8;}else{_0x261b70=0xce;}_0x3d51e5[_0x7d39('0x1a')](_0x261b70);return _0x3d51e5[_0x7d39('0x21')]('Content-Range',_0x34d3e3+'-'+_0x20ba05+'/'+_0x2430ba)[_0x7d39('0x1c')](_0x371174);}return null;};}function patchUpdates(_0x163dc8){return function(_0x25e007){try{jsonpatch[_0x7d39('0x22')](_0x25e007,_0x163dc8,!![]);}catch(_0x229e02){return BPromise[_0x7d39('0x23')](_0x229e02);}return _0x25e007[_0x7d39('0x24')]();};}function saveUpdates(_0x4b2b08,_0x1de55f){return function(_0x410153){if(_0x410153){return _0x410153[_0x7d39('0x25')](_0x4b2b08)[_0x7d39('0x26')](function(_0x4249dd){return _0x4249dd;});}return null;};}function removeEntity(_0x3addd6,_0x409ae3){return function(_0x146a4a){if(_0x146a4a){return _0x146a4a[_0x7d39('0x27')]()[_0x7d39('0x26')](function(){_0x3addd6[_0x7d39('0x1a')](0xcc)[_0x7d39('0x1b')]();});}};}function handleEntityNotFound(_0x363708,_0x277116){return function(_0x41fc98){if(!_0x41fc98){_0x363708[_0x7d39('0x28')](0x194);}return _0x41fc98;};}function handleError(_0x30b1e1,_0x25f269){_0x25f269=_0x25f269||0x1f4;return function(_0x489e66){logger['error'](_0x489e66[_0x7d39('0x29')]);if(_0x489e66['name']){delete _0x489e66[_0x7d39('0x2a')];}_0x30b1e1[_0x7d39('0x1a')](_0x25f269)[_0x7d39('0x2b')](_0x489e66);};}exports[_0x7d39('0x2c')]=function(_0x2cd01f,_0x56af4c){var _0x10b108={},_0x157fb2={},_0x2a2f1a={'count':0x0,'rows':[]};var _0x8a1aa9=_[_0x7d39('0x2d')](db['SquareReport'][_0x7d39('0x2e')],function(_0x3b7f89){return{'name':_0x3b7f89[_0x7d39('0x2f')],'type':_0x3b7f89[_0x7d39('0x30')]['key']};});_0x157fb2[_0x7d39('0x31')]=_[_0x7d39('0x2d')](_0x8a1aa9,_0x7d39('0x2a'));_0x157fb2['query']=_[_0x7d39('0x32')](_0x2cd01f[_0x7d39('0x33')]);_0x157fb2[_0x7d39('0x34')]=_[_0x7d39('0x35')](_0x157fb2['model'],_0x157fb2[_0x7d39('0x33')]);_0x10b108[_0x7d39('0x36')]=_[_0x7d39('0x35')](_0x157fb2[_0x7d39('0x31')],qs[_0x7d39('0x37')](_0x2cd01f[_0x7d39('0x33')]['fields']));_0x10b108['attributes']=_0x10b108[_0x7d39('0x36')]['length']?_0x10b108[_0x7d39('0x36')]:_0x157fb2[_0x7d39('0x31')];if(!_0x2cd01f[_0x7d39('0x33')][_0x7d39('0x38')](_0x7d39('0x39'))){_0x10b108[_0x7d39('0x1f')]=qs[_0x7d39('0x1f')](_0x2cd01f[_0x7d39('0x33')][_0x7d39('0x1f')]);_0x10b108['offset']=qs['offset'](_0x2cd01f[_0x7d39('0x33')]['offset']);}_0x10b108['order']=qs[_0x7d39('0x3a')](_0x2cd01f[_0x7d39('0x33')]['sort']);_0x10b108[_0x7d39('0x3b')]=qs[_0x7d39('0x34')](_['pick'](_0x2cd01f[_0x7d39('0x33')],_0x157fb2[_0x7d39('0x34')]),_0x8a1aa9);if(_0x2cd01f[_0x7d39('0x33')]['filter']){_0x10b108['where']=_['merge'](_0x10b108[_0x7d39('0x3b')],{'$or':_[_0x7d39('0x2d')](_0x8a1aa9,function(_0x18a97c){if(_0x18a97c[_0x7d39('0x30')]!=='VIRTUAL'){var _0x2ff4ac={};_0x2ff4ac[_0x18a97c[_0x7d39('0x2a')]]={'$like':'%'+_0x2cd01f['query'][_0x7d39('0x3c')]+'%'};return _0x2ff4ac;}})});}_0x10b108=_[_0x7d39('0x3d')]({},_0x10b108,_0x2cd01f[_0x7d39('0x3e')]);var _0x2f228f={'where':_0x10b108[_0x7d39('0x3b')]};return db[_0x7d39('0x3f')][_0x7d39('0x20')](_0x2f228f)[_0x7d39('0x26')](function(_0x3e906b){_0x2a2f1a['count']=_0x3e906b;if(_0x2cd01f[_0x7d39('0x33')][_0x7d39('0x40')]){_0x10b108['include']=[{'all':!![]}];}return db[_0x7d39('0x3f')][_0x7d39('0x41')](_0x10b108);})[_0x7d39('0x26')](function(_0x54e228){_0x2a2f1a[_0x7d39('0x42')]=_0x54e228;return _0x2a2f1a;})[_0x7d39('0x26')](respondWithFilteredResult(_0x56af4c,_0x10b108))['catch'](handleError(_0x56af4c,null));};exports[_0x7d39('0x43')]=function(_0x21e604,_0x20cab7){var _0x5f07aa={'raw':!![],'where':{'id':_0x21e604[_0x7d39('0x44')]['id']}},_0x57cb55={};_0x57cb55['model']=_['keys'](db[_0x7d39('0x3f')][_0x7d39('0x2e')]);_0x57cb55[_0x7d39('0x33')]=_[_0x7d39('0x32')](_0x21e604['query']);_0x57cb55[_0x7d39('0x34')]=_[_0x7d39('0x35')](_0x57cb55['model'],_0x57cb55['query']);_0x5f07aa['attributes']=_['intersection'](_0x57cb55[_0x7d39('0x31')],qs[_0x7d39('0x37')](_0x21e604['query'][_0x7d39('0x37')]));_0x5f07aa[_0x7d39('0x36')]=_0x5f07aa[_0x7d39('0x36')][_0x7d39('0x45')]?_0x5f07aa[_0x7d39('0x36')]:_0x57cb55[_0x7d39('0x31')];if(_0x21e604['query'][_0x7d39('0x40')]){_0x5f07aa['include']=[{'all':!![]}];}_0x5f07aa=_[_0x7d39('0x3d')]({},_0x5f07aa,_0x21e604['options']);return db[_0x7d39('0x3f')][_0x7d39('0x46')](_0x5f07aa)[_0x7d39('0x26')](handleEntityNotFound(_0x20cab7,null))[_0x7d39('0x26')](respondWithResult(_0x20cab7,null))[_0x7d39('0x47')](handleError(_0x20cab7,null));};exports[_0x7d39('0x48')]=function(_0x4100bb,_0x407210){return db[_0x7d39('0x3f')][_0x7d39('0x48')](_0x4100bb[_0x7d39('0x49')],{})['then'](respondWithResult(_0x407210,0xc9))[_0x7d39('0x47')](handleError(_0x407210,null));};exports[_0x7d39('0x25')]=function(_0x12a18a,_0x41ed1d){if(_0x12a18a[_0x7d39('0x49')]['id']){delete _0x12a18a['body']['id'];}return db['SquareReport']['find']({'where':{'id':_0x12a18a[_0x7d39('0x44')]['id']}})[_0x7d39('0x26')](handleEntityNotFound(_0x41ed1d,null))['then'](saveUpdates(_0x12a18a[_0x7d39('0x49')],null))[_0x7d39('0x26')](respondWithResult(_0x41ed1d,null))[_0x7d39('0x47')](handleError(_0x41ed1d,null));};exports[_0x7d39('0x27')]=function(_0x39f38d,_0x49ddf1){return db[_0x7d39('0x3f')]['find']({'where':{'id':_0x39f38d[_0x7d39('0x44')]['id']}})[_0x7d39('0x26')](handleEntityNotFound(_0x49ddf1,null))[_0x7d39('0x26')](removeEntity(_0x49ddf1,null))[_0x7d39('0x47')](handleError(_0x49ddf1,null));};exports[_0x7d39('0x4a')]=function(_0x33790f,_0x4b7e89){return db[_0x7d39('0x3f')][_0x7d39('0x4a')]()[_0x7d39('0x26')](respondWithResult(_0x4b7e89,null))[_0x7d39('0x47')](handleError(_0x4b7e89,null));};
\ No newline at end of file
+var _0xc00c=['show','params','keys','options','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','SquareReport','rawAttributes','fieldName','type','model','query','filters','attributes','intersection','fields','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','catch'];(function(_0x81db4a,_0x11907b){var _0x43eb9b=function(_0x41a134){while(--_0x41a134){_0x81db4a['push'](_0x81db4a['shift']());}};_0x43eb9b(++_0x11907b);}(_0xc00c,0x1b8));var _0xcc00=function(_0x174ef5,_0x256e8e){_0x174ef5=_0x174ef5-0x0;var _0x1cc379=_0xc00c[_0x174ef5];return _0x1cc379;};'use strict';var emlformat=require(_0xcc00('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xcc00('0x1'));var jsonpatch=require(_0xcc00('0x2'));var rp=require(_0xcc00('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xcc00('0x4'));var util=require(_0xcc00('0x5'));var path=require(_0xcc00('0x6'));var sox=require(_0xcc00('0x7'));var csv=require('to-csv');var ejs=require(_0xcc00('0x8'));var fs=require('fs');var fs_extra=require(_0xcc00('0x9'));var _=require(_0xcc00('0xa'));var squel=require(_0xcc00('0xb'));var crypto=require(_0xcc00('0xc'));var jsforce=require(_0xcc00('0xd'));var deskjs=require(_0xcc00('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xcc00('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xcc00('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcc00('0x11'));var logger=require('../../config/logger')(_0xcc00('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xcc00('0x13'));var db=require(_0xcc00('0x14'))['db'];function respondWithStatusCode(_0x20ea0e,_0x1e6678){_0x1e6678=_0x1e6678||0xcc;return function(_0x4bd170){if(_0x4bd170){return _0x20ea0e[_0xcc00('0x15')](_0x1e6678);}return _0x20ea0e[_0xcc00('0x16')](_0x1e6678)[_0xcc00('0x17')]();};}function respondWithResult(_0x128e30,_0x20de93){_0x20de93=_0x20de93||0xc8;return function(_0x23d337){if(_0x23d337){return _0x128e30[_0xcc00('0x16')](_0x20de93)[_0xcc00('0x18')](_0x23d337);}};}function respondWithFilteredResult(_0x1a7c34,_0x763622){return function(_0xbcadef){if(_0xbcadef){var _0x18995b=typeof _0x763622[_0xcc00('0x19')]===_0xcc00('0x1a')&&typeof _0x763622[_0xcc00('0x1b')]===_0xcc00('0x1a');var _0x175663=_0xbcadef[_0xcc00('0x1c')];var _0x11137b=_0x18995b?0x0:_0x763622[_0xcc00('0x19')];var _0x4a16c7=_0x18995b?_0xbcadef['count']:_0x763622[_0xcc00('0x19')]+_0x763622[_0xcc00('0x1b')];var _0x3a240e;if(_0x4a16c7>=_0x175663){_0x4a16c7=_0x175663;_0x3a240e=0xc8;}else{_0x3a240e=0xce;}_0x1a7c34['status'](_0x3a240e);return _0x1a7c34[_0xcc00('0x1d')](_0xcc00('0x1e'),_0x11137b+'-'+_0x4a16c7+'/'+_0x175663)[_0xcc00('0x18')](_0xbcadef);}return null;};}function patchUpdates(_0x2b063b){return function(_0x171e43){try{jsonpatch[_0xcc00('0x1f')](_0x171e43,_0x2b063b,!![]);}catch(_0x300405){return BPromise[_0xcc00('0x20')](_0x300405);}return _0x171e43[_0xcc00('0x21')]();};}function saveUpdates(_0x576152,_0x81bb5a){return function(_0x5cae2e){if(_0x5cae2e){return _0x5cae2e[_0xcc00('0x22')](_0x576152)['then'](function(_0x2f253b){return _0x2f253b;});}return null;};}function removeEntity(_0x36f493,_0x393c0b){return function(_0x13c29b){if(_0x13c29b){return _0x13c29b['destroy']()[_0xcc00('0x23')](function(){_0x36f493[_0xcc00('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0xbe09f,_0x5c3fba){return function(_0x239e02){if(!_0x239e02){_0xbe09f[_0xcc00('0x15')](0x194);}return _0x239e02;};}function handleError(_0xa9f5d9,_0x1713bd){_0x1713bd=_0x1713bd||0x1f4;return function(_0x39184b){logger[_0xcc00('0x24')](_0x39184b[_0xcc00('0x25')]);if(_0x39184b[_0xcc00('0x26')]){delete _0x39184b[_0xcc00('0x26')];}_0xa9f5d9[_0xcc00('0x16')](_0x1713bd)[_0xcc00('0x27')](_0x39184b);};}exports[_0xcc00('0x28')]=function(_0x184896,_0x18f140){var _0x4c371b={},_0x53dd0d={},_0x565bc6={'count':0x0,'rows':[]};var _0x1bda65=_[_0xcc00('0x29')](db[_0xcc00('0x2a')][_0xcc00('0x2b')],function(_0x3781be){return{'name':_0x3781be[_0xcc00('0x2c')],'type':_0x3781be[_0xcc00('0x2d')]['key']};});_0x53dd0d[_0xcc00('0x2e')]=_[_0xcc00('0x29')](_0x1bda65,_0xcc00('0x26'));_0x53dd0d[_0xcc00('0x2f')]=_['keys'](_0x184896[_0xcc00('0x2f')]);_0x53dd0d[_0xcc00('0x30')]=_['intersection'](_0x53dd0d[_0xcc00('0x2e')],_0x53dd0d['query']);_0x4c371b[_0xcc00('0x31')]=_[_0xcc00('0x32')](_0x53dd0d[_0xcc00('0x2e')],qs[_0xcc00('0x33')](_0x184896['query'][_0xcc00('0x33')]));_0x4c371b[_0xcc00('0x31')]=_0x4c371b[_0xcc00('0x31')][_0xcc00('0x34')]?_0x4c371b[_0xcc00('0x31')]:_0x53dd0d[_0xcc00('0x2e')];if(!_0x184896['query']['hasOwnProperty'](_0xcc00('0x35'))){_0x4c371b[_0xcc00('0x1b')]=qs[_0xcc00('0x1b')](_0x184896['query'][_0xcc00('0x1b')]);_0x4c371b[_0xcc00('0x19')]=qs[_0xcc00('0x19')](_0x184896[_0xcc00('0x2f')][_0xcc00('0x19')]);}_0x4c371b['order']=qs[_0xcc00('0x36')](_0x184896[_0xcc00('0x2f')][_0xcc00('0x36')]);_0x4c371b[_0xcc00('0x37')]=qs[_0xcc00('0x30')](_[_0xcc00('0x38')](_0x184896[_0xcc00('0x2f')],_0x53dd0d[_0xcc00('0x30')]),_0x1bda65);if(_0x184896[_0xcc00('0x2f')][_0xcc00('0x39')]){_0x4c371b['where']=_[_0xcc00('0x3a')](_0x4c371b['where'],{'$or':_[_0xcc00('0x29')](_0x1bda65,function(_0x533ce3){if(_0x533ce3[_0xcc00('0x2d')]!==_0xcc00('0x3b')){var _0x4b93f6={};_0x4b93f6[_0x533ce3[_0xcc00('0x26')]]={'$like':'%'+_0x184896[_0xcc00('0x2f')][_0xcc00('0x39')]+'%'};return _0x4b93f6;}})});}_0x4c371b=_['merge']({},_0x4c371b,_0x184896['options']);var _0x42f61b={'where':_0x4c371b[_0xcc00('0x37')]};return db[_0xcc00('0x2a')][_0xcc00('0x1c')](_0x42f61b)[_0xcc00('0x23')](function(_0x5a2cff){_0x565bc6[_0xcc00('0x1c')]=_0x5a2cff;if(_0x184896[_0xcc00('0x2f')][_0xcc00('0x3c')]){_0x4c371b['include']=[{'all':!![]}];}return db[_0xcc00('0x2a')][_0xcc00('0x3d')](_0x4c371b);})[_0xcc00('0x23')](function(_0x38112e){_0x565bc6[_0xcc00('0x3e')]=_0x38112e;return _0x565bc6;})[_0xcc00('0x23')](respondWithFilteredResult(_0x18f140,_0x4c371b))[_0xcc00('0x3f')](handleError(_0x18f140,null));};exports[_0xcc00('0x40')]=function(_0x3a81b9,_0x336ae8){var _0x3d9f4d={'raw':!![],'where':{'id':_0x3a81b9[_0xcc00('0x41')]['id']}},_0x2d9fd0={};_0x2d9fd0['model']=_[_0xcc00('0x42')](db['SquareReport']['rawAttributes']);_0x2d9fd0[_0xcc00('0x2f')]=_[_0xcc00('0x42')](_0x3a81b9[_0xcc00('0x2f')]);_0x2d9fd0[_0xcc00('0x30')]=_[_0xcc00('0x32')](_0x2d9fd0[_0xcc00('0x2e')],_0x2d9fd0['query']);_0x3d9f4d[_0xcc00('0x31')]=_[_0xcc00('0x32')](_0x2d9fd0[_0xcc00('0x2e')],qs[_0xcc00('0x33')](_0x3a81b9[_0xcc00('0x2f')][_0xcc00('0x33')]));_0x3d9f4d[_0xcc00('0x31')]=_0x3d9f4d[_0xcc00('0x31')][_0xcc00('0x34')]?_0x3d9f4d[_0xcc00('0x31')]:_0x2d9fd0[_0xcc00('0x2e')];if(_0x3a81b9['query']['includeAll']){_0x3d9f4d['include']=[{'all':!![]}];}_0x3d9f4d=_[_0xcc00('0x3a')]({},_0x3d9f4d,_0x3a81b9[_0xcc00('0x43')]);return db[_0xcc00('0x2a')][_0xcc00('0x44')](_0x3d9f4d)[_0xcc00('0x23')](handleEntityNotFound(_0x336ae8,null))[_0xcc00('0x23')](respondWithResult(_0x336ae8,null))[_0xcc00('0x3f')](handleError(_0x336ae8,null));};exports[_0xcc00('0x45')]=function(_0x3043ea,_0xc866b8){return db[_0xcc00('0x2a')][_0xcc00('0x45')](_0x3043ea['body'],{})['then'](respondWithResult(_0xc866b8,0xc9))[_0xcc00('0x3f')](handleError(_0xc866b8,null));};exports[_0xcc00('0x22')]=function(_0x3743f0,_0x16ddea){if(_0x3743f0[_0xcc00('0x46')]['id']){delete _0x3743f0['body']['id'];}return db['SquareReport']['find']({'where':{'id':_0x3743f0[_0xcc00('0x41')]['id']}})[_0xcc00('0x23')](handleEntityNotFound(_0x16ddea,null))['then'](saveUpdates(_0x3743f0[_0xcc00('0x46')],null))['then'](respondWithResult(_0x16ddea,null))['catch'](handleError(_0x16ddea,null));};exports['destroy']=function(_0x5100e0,_0x4c9db0){return db[_0xcc00('0x2a')][_0xcc00('0x44')]({'where':{'id':_0x5100e0[_0xcc00('0x41')]['id']}})[_0xcc00('0x23')](handleEntityNotFound(_0x4c9db0,null))['then'](removeEntity(_0x4c9db0,null))[_0xcc00('0x3f')](handleError(_0x4c9db0,null));};exports[_0xcc00('0x47')]=function(_0x2b894a,_0x48f302){return db[_0xcc00('0x2a')][_0xcc00('0x47')]()['then'](respondWithResult(_0x48f302,null))['catch'](handleError(_0x48f302,null));};
\ No newline at end of file
index 78d5fdb..f1618ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x317c=['leaveAt','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./squareReport.attributes','define','SquareReport','report_square','uid_pname'];(function(_0x221eb2,_0x2d65bc){var _0x3760ee=function(_0x3a88ee){while(--_0x3a88ee){_0x221eb2['push'](_0x221eb2['shift']());}};_0x3760ee(++_0x2d65bc);}(_0x317c,0x135));var _0xc317=function(_0x9ef8ff,_0x1d7578){_0x9ef8ff=_0x9ef8ff-0x0;var _0x43d4e1=_0x317c[_0x9ef8ff];return _0x43d4e1;};'use strict';var _=require(_0xc317('0x0'));var util=require(_0xc317('0x1'));var logger=require(_0xc317('0x2'))(_0xc317('0x3'));var moment=require(_0xc317('0x4'));var BPromise=require('bluebird');var rp=require(_0xc317('0x5'));var fs=require('fs');var path=require(_0xc317('0x6'));var rimraf=require(_0xc317('0x7'));var config=require('../../config/environment');var attributes=require(_0xc317('0x8'));module['exports']=function(_0x17115d,_0x437187){return _0x17115d[_0xc317('0x9')](_0xc317('0xa'),attributes,{'tableName':_0xc317('0xb'),'paranoid':![],'indexes':[{'name':_0xc317('0xc'),'fields':['uniqueid','project_name']},{'name':_0xc317('0xd'),'fields':[_0xc317('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9b0f=['../../config/environment','./squareReport.attributes','exports','report_square','uid_pname','uniqueid','project_name','leaveAt','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x58788d,_0x88b74f){var _0x58ceba=function(_0x16a416){while(--_0x16a416){_0x58788d['push'](_0x58788d['shift']());}};_0x58ceba(++_0x88b74f);}(_0x9b0f,0x143));var _0xf9b0=function(_0x111c6c,_0x5ac573){_0x111c6c=_0x111c6c-0x0;var _0x2e983a=_0x9b0f[_0x111c6c];return _0x2e983a;};'use strict';var _=require(_0xf9b0('0x0'));var util=require(_0xf9b0('0x1'));var logger=require(_0xf9b0('0x2'))(_0xf9b0('0x3'));var moment=require(_0xf9b0('0x4'));var BPromise=require(_0xf9b0('0x5'));var rp=require(_0xf9b0('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf9b0('0x7'));var attributes=require(_0xf9b0('0x8'));module[_0xf9b0('0x9')]=function(_0x80b590,_0xcab75a){return _0x80b590['define']('SquareReport',attributes,{'tableName':_0xf9b0('0xa'),'paranoid':![],'indexes':[{'name':_0xf9b0('0xb'),'fields':[_0xf9b0('0xc'),_0xf9b0('0xd')]},{'name':'leaveAt','fields':[_0xf9b0('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 68b427c..39689cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5c6=['raw','info','UpdateSquareReport','body','where','attributes','limit','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','request','then','SquareReport,\x20%s,\x20%s','debug','SquareReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreateSquareReport','create','options'];(function(_0x12e13a,_0x3f8461){var _0xf4cf3c=function(_0x54012f){while(--_0x54012f){_0x12e13a['push'](_0x12e13a['shift']());}};_0xf4cf3c(++_0x3f8461);}(_0xa5c6,0xff));var _0x6a5c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xa5c6[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x6a5c('0x0'));var util=require(_0x6a5c('0x1'));var moment=require('moment');var BPromise=require(_0x6a5c('0x2'));var rs=require(_0x6a5c('0x3'));var fs=require('fs');var Redis=require(_0x6a5c('0x4'));var db=require(_0x6a5c('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6a5c('0x6'))(_0x6a5c('0x7'));var config=require(_0x6a5c('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x6a5c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2c7b7b,_0x1edebb,_0x72462f){return new BPromise(function(_0x42eaf7,_0x171e2f){return client[_0x6a5c('0xa')](_0x2c7b7b,_0x72462f)[_0x6a5c('0xb')](function(_0x2159e0){logger['info'](_0x6a5c('0xc'),_0x1edebb,'request\x20sent');logger[_0x6a5c('0xd')](_0x6a5c('0xe'),_0x1edebb,_0x6a5c('0xf'),JSON[_0x6a5c('0x10')](_0x2159e0));if(_0x2159e0[_0x6a5c('0x11')]){if(_0x2159e0['error'][_0x6a5c('0x12')]===0x1f4){logger[_0x6a5c('0x11')](_0x6a5c('0xc'),_0x1edebb,_0x2159e0[_0x6a5c('0x11')][_0x6a5c('0x13')]);return _0x171e2f(_0x2159e0[_0x6a5c('0x11')][_0x6a5c('0x13')]);}logger[_0x6a5c('0x11')](_0x6a5c('0xc'),_0x1edebb,_0x2159e0['error']['message']);return _0x42eaf7(_0x2159e0['error']['message']);}else{logger['info'](_0x6a5c('0xc'),_0x1edebb,_0x6a5c('0xf'));_0x42eaf7(_0x2159e0['result']['message']);}})[_0x6a5c('0x14')](function(_0x53e5b7){logger[_0x6a5c('0x11')](_0x6a5c('0xc'),_0x1edebb,_0x53e5b7);_0x171e2f(_0x53e5b7);});});}exports[_0x6a5c('0x15')]=function(_0x1f07d2){var _0x17ffa3=this;return new Promise(function(_0x2028b9,_0x36b5c9){return db['SquareReport'][_0x6a5c('0x16')](_0x1f07d2['body'],{'raw':_0x1f07d2[_0x6a5c('0x17')]?_0x1f07d2[_0x6a5c('0x17')][_0x6a5c('0x18')]===undefined?!![]:![]:!![]})[_0x6a5c('0xb')](function(_0x16a150){logger[_0x6a5c('0x19')]('CreateSquareReport',_0x1f07d2);logger[_0x6a5c('0xd')](_0x6a5c('0x15'),_0x1f07d2,JSON[_0x6a5c('0x10')](_0x16a150));_0x2028b9(_0x16a150);})[_0x6a5c('0x14')](function(_0x519ec2){logger[_0x6a5c('0x11')](_0x6a5c('0x15'),_0x519ec2[_0x6a5c('0x13')],_0x1f07d2);_0x36b5c9(_0x17ffa3[_0x6a5c('0x11')](0x1f4,_0x519ec2['message']));});});};exports[_0x6a5c('0x1a')]=function(_0x471c78){var _0x4d6e65=this;return new Promise(function(_0x40774d,_0x3d299e){return db['SquareReport']['update'](_0x471c78[_0x6a5c('0x1b')],{'raw':_0x471c78[_0x6a5c('0x17')]?_0x471c78[_0x6a5c('0x17')][_0x6a5c('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x471c78[_0x6a5c('0x17')]?_0x471c78[_0x6a5c('0x17')][_0x6a5c('0x1c')]||null:null,'attributes':_0x471c78['options']?_0x471c78[_0x6a5c('0x17')][_0x6a5c('0x1d')]||null:null,'limit':_0x471c78[_0x6a5c('0x17')]?_0x471c78['options'][_0x6a5c('0x1e')]||null:null})[_0x6a5c('0xb')](function(_0xe1481f){logger[_0x6a5c('0x19')](_0x6a5c('0x1a'),_0x471c78);logger[_0x6a5c('0xd')](_0x6a5c('0x1a'),_0x471c78,JSON[_0x6a5c('0x10')](_0xe1481f));_0x40774d(_0xe1481f);})[_0x6a5c('0x14')](function(_0x3eabd8){logger[_0x6a5c('0x11')](_0x6a5c('0x1a'),_0x3eabd8[_0x6a5c('0x13')],_0x471c78);_0x3d299e(_0x4d6e65[_0x6a5c('0x11')](0x1f4,_0x3eabd8[_0x6a5c('0x13')]));});});};
\ No newline at end of file
+var _0x46ee=['http','request','then','info','SquareReport,\x20%s,\x20%s','debug','SquareReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateSquareReport','SquareReport','create','options','raw','UpdateSquareReport','update','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client'];(function(_0x3aa949,_0x3b8ade){var _0x4a1294=function(_0x231b9c){while(--_0x231b9c){_0x3aa949['push'](_0x3aa949['shift']());}};_0x4a1294(++_0x3b8ade);}(_0x46ee,0x84));var _0xe46e=function(_0x5818d9,_0xa1f324){_0x5818d9=_0x5818d9-0x0;var _0xc49de4=_0x46ee[_0x5818d9];return _0xc49de4;};'use strict';var _=require(_0xe46e('0x0'));var util=require(_0xe46e('0x1'));var moment=require(_0xe46e('0x2'));var BPromise=require(_0xe46e('0x3'));var rs=require(_0xe46e('0x4'));var fs=require('fs');var Redis=require(_0xe46e('0x5'));var db=require(_0xe46e('0x6'))['db'];var utils=require(_0xe46e('0x7'));var logger=require(_0xe46e('0x8'))('rpc');var config=require(_0xe46e('0x9'));var jayson=require(_0xe46e('0xa'));var client=jayson[_0xe46e('0xb')][_0xe46e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2b95e0,_0x33b5d4,_0x4a48d1){return new BPromise(function(_0x20339e,_0x171523){return client[_0xe46e('0xd')](_0x2b95e0,_0x4a48d1)[_0xe46e('0xe')](function(_0x44d6ee){logger[_0xe46e('0xf')](_0xe46e('0x10'),_0x33b5d4,'request\x20sent');logger[_0xe46e('0x11')](_0xe46e('0x12'),_0x33b5d4,_0xe46e('0x13'),JSON[_0xe46e('0x14')](_0x44d6ee));if(_0x44d6ee['error']){if(_0x44d6ee[_0xe46e('0x15')][_0xe46e('0x16')]===0x1f4){logger['error'](_0xe46e('0x10'),_0x33b5d4,_0x44d6ee[_0xe46e('0x15')][_0xe46e('0x17')]);return _0x171523(_0x44d6ee[_0xe46e('0x15')][_0xe46e('0x17')]);}logger[_0xe46e('0x15')](_0xe46e('0x10'),_0x33b5d4,_0x44d6ee['error'][_0xe46e('0x17')]);return _0x20339e(_0x44d6ee[_0xe46e('0x15')][_0xe46e('0x17')]);}else{logger[_0xe46e('0xf')]('SquareReport,\x20%s,\x20%s',_0x33b5d4,_0xe46e('0x13'));_0x20339e(_0x44d6ee[_0xe46e('0x18')][_0xe46e('0x17')]);}})[_0xe46e('0x19')](function(_0x4a5960){logger[_0xe46e('0x15')](_0xe46e('0x10'),_0x33b5d4,_0x4a5960);_0x171523(_0x4a5960);});});}exports[_0xe46e('0x1a')]=function(_0xb96b7a){var _0x72d986=this;return new Promise(function(_0x55ab05,_0xd3f7a2){return db[_0xe46e('0x1b')][_0xe46e('0x1c')](_0xb96b7a['body'],{'raw':_0xb96b7a[_0xe46e('0x1d')]?_0xb96b7a[_0xe46e('0x1d')][_0xe46e('0x1e')]===undefined?!![]:![]:!![]})[_0xe46e('0xe')](function(_0x4fa9e){logger[_0xe46e('0xf')](_0xe46e('0x1a'),_0xb96b7a);logger['debug'](_0xe46e('0x1a'),_0xb96b7a,JSON[_0xe46e('0x14')](_0x4fa9e));_0x55ab05(_0x4fa9e);})[_0xe46e('0x19')](function(_0xde47ed){logger['error'](_0xe46e('0x1a'),_0xde47ed[_0xe46e('0x17')],_0xb96b7a);_0xd3f7a2(_0x72d986[_0xe46e('0x15')](0x1f4,_0xde47ed['message']));});});};exports[_0xe46e('0x1f')]=function(_0x22e51f){var _0x407c3f=this;return new Promise(function(_0x2b04d2,_0x692332){return db[_0xe46e('0x1b')][_0xe46e('0x20')](_0x22e51f['body'],{'raw':_0x22e51f['options']?_0x22e51f[_0xe46e('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x22e51f[_0xe46e('0x1d')]?_0x22e51f[_0xe46e('0x1d')][_0xe46e('0x21')]||null:null,'attributes':_0x22e51f[_0xe46e('0x1d')]?_0x22e51f['options'][_0xe46e('0x22')]||null:null,'limit':_0x22e51f[_0xe46e('0x1d')]?_0x22e51f[_0xe46e('0x1d')][_0xe46e('0x23')]||null:null})[_0xe46e('0xe')](function(_0xe27a29){logger[_0xe46e('0xf')](_0xe46e('0x1f'),_0x22e51f);logger[_0xe46e('0x11')](_0xe46e('0x1f'),_0x22e51f,JSON[_0xe46e('0x14')](_0xe27a29));_0x2b04d2(_0xe27a29);})['catch'](function(_0x295e75){logger['error'](_0xe46e('0x1f'),_0x295e75[_0xe46e('0x17')],_0x22e51f);_0x692332(_0x407c3f[_0xe46e('0x15')](0x1f4,_0x295e75[_0xe46e('0x17')]));});});};
\ No newline at end of file
index 684137f..debc295 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8626=['show','post','create','put','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','index','describe','/:id'];(function(_0x4340f1,_0x59a0a1){var _0xef7e7f=function(_0x573f3e){while(--_0x573f3e){_0x4340f1['push'](_0x4340f1['shift']());}};_0xef7e7f(++_0x59a0a1);}(_0x8626,0x99));var _0x6862=function(_0x441373,_0x191d91){_0x441373=_0x441373-0x0;var _0x154122=_0x8626[_0x441373];return _0x154122;};'use strict';var multer=require(_0x6862('0x0'));var util=require(_0x6862('0x1'));var path=require(_0x6862('0x2'));var timeout=require(_0x6862('0x3'));var express=require(_0x6862('0x4'));var router=express['Router']();var fs_extra=require(_0x6862('0x5'));var auth=require(_0x6862('0x6'));var interaction=require(_0x6862('0x7'));var config=require(_0x6862('0x8'));var controller=require(_0x6862('0x9'));router[_0x6862('0xa')]('/',auth[_0x6862('0xb')](),controller[_0x6862('0xc')]);router[_0x6862('0xa')]('/describe',auth[_0x6862('0xb')](),controller[_0x6862('0xd')]);router[_0x6862('0xa')](_0x6862('0xe'),auth[_0x6862('0xb')](),controller[_0x6862('0xf')]);router[_0x6862('0x10')]('/',auth[_0x6862('0xb')](),controller[_0x6862('0x11')]);router[_0x6862('0x12')](_0x6862('0xe'),auth[_0x6862('0xb')](),controller['update']);router['delete'](_0x6862('0xe'),auth['isAuthenticated'](),controller[_0x6862('0x13')]);module[_0x6862('0x14')]=router;
\ No newline at end of file
+var _0xe171=['path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','isAuthenticated','index','get','/describe','describe','/:id','show','create','put','destroy','multer','util'];(function(_0x2a0df6,_0xb784a9){var _0x156665=function(_0x5a6d6a){while(--_0x5a6d6a){_0x2a0df6['push'](_0x2a0df6['shift']());}};_0x156665(++_0xb784a9);}(_0xe171,0xfa));var _0x1e17=function(_0x4120b0,_0x5d9e9b){_0x4120b0=_0x4120b0-0x0;var _0xc3a935=_0xe171[_0x4120b0];return _0xc3a935;};'use strict';var multer=require(_0x1e17('0x0'));var util=require(_0x1e17('0x1'));var path=require(_0x1e17('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x1e17('0x3'));var auth=require(_0x1e17('0x4'));var interaction=require(_0x1e17('0x5'));var config=require(_0x1e17('0x6'));var controller=require(_0x1e17('0x7'));router['get']('/',auth[_0x1e17('0x8')](),controller[_0x1e17('0x9')]);router[_0x1e17('0xa')](_0x1e17('0xb'),auth[_0x1e17('0x8')](),controller[_0x1e17('0xc')]);router['get'](_0x1e17('0xd'),auth[_0x1e17('0x8')](),controller[_0x1e17('0xe')]);router['post']('/',auth[_0x1e17('0x8')](),controller[_0x1e17('0xf')]);router[_0x1e17('0x10')]('/:id',auth[_0x1e17('0x8')](),controller['update']);router['delete'](_0x1e17('0xd'),auth[_0x1e17('0x8')](),controller[_0x1e17('0x11')]);module['exports']=router;
\ No newline at end of file
index 956a730..287b698 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc88=['STRING','TEXT','sequelize'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xcc88,0x1c4));var _0x8cc8=function(_0xdf18c,_0x5b888c){_0xdf18c=_0xdf18c-0x0;var _0x25c19e=_0xcc88[_0xdf18c];return _0x25c19e;};'use strict';var Sequelize=require(_0x8cc8('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x8cc8('0x1')]},'node':{'type':Sequelize[_0x8cc8('0x1')]},'application':{'type':Sequelize[_0x8cc8('0x1')]},'data':{'type':Sequelize[_0x8cc8('0x2')]},'project_name':{'type':Sequelize[_0x8cc8('0x1')]},'callerid':{'type':Sequelize[_0x8cc8('0x1')]}};
\ No newline at end of file
+var _0x544b=['STRING','TEXT','sequelize','exports'];(function(_0x27d1e1,_0x3cea80){var _0xb3a85f=function(_0x10c70f){while(--_0x10c70f){_0x27d1e1['push'](_0x27d1e1['shift']());}};_0xb3a85f(++_0x3cea80);}(_0x544b,0xfa));var _0xb544=function(_0x289a39,_0x159f19){_0x289a39=_0x289a39-0x0;var _0x3fb2ba=_0x544b[_0x289a39];return _0x3fb2ba;};'use strict';var Sequelize=require(_0xb544('0x0'));module[_0xb544('0x1')]={'uniqueid':{'type':Sequelize[_0xb544('0x2')]},'node':{'type':Sequelize[_0xb544('0x2')]},'application':{'type':Sequelize[_0xb544('0x2')]},'data':{'type':Sequelize[_0xb544('0x3')]},'project_name':{'type':Sequelize[_0xb544('0x2')]},'callerid':{'type':Sequelize[_0xb544('0x2')]}};
\ No newline at end of file
index 4b8ca46..167d84b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e55=['rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','SquareDetailsReport','findAll','rows','catch','show','params','keys','length','includeAll','include','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','sendStatus','name','send','index','map'];(function(_0x5a84c3,_0x3323bf){var _0x27f899=function(_0x415a6c){while(--_0x415a6c){_0x5a84c3['push'](_0x5a84c3['shift']());}};_0x27f899(++_0x3323bf);}(_0x2e55,0x1a2));var _0x52e5=function(_0x1443eb,_0x203408){_0x1443eb=_0x1443eb-0x0;var _0x2b8810=_0x2e55[_0x1443eb];return _0x2b8810;};'use strict';var emlformat=require(_0x52e5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x52e5('0x1'));var jsonpatch=require(_0x52e5('0x2'));var rp=require(_0x52e5('0x3'));var moment=require(_0x52e5('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x52e5('0x5'));var path=require(_0x52e5('0x6'));var sox=require(_0x52e5('0x7'));var csv=require(_0x52e5('0x8'));var ejs=require(_0x52e5('0x9'));var fs=require('fs');var fs_extra=require(_0x52e5('0xa'));var _=require(_0x52e5('0xb'));var squel=require(_0x52e5('0xc'));var crypto=require(_0x52e5('0xd'));var jsforce=require(_0x52e5('0xe'));var deskjs=require(_0x52e5('0xf'));var toCsv=require(_0x52e5('0x8'));var querystring=require(_0x52e5('0x10'));var Papa=require(_0x52e5('0x11'));var Redis=require(_0x52e5('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x52e5('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x52e5('0x14'));var logger=require(_0x52e5('0x15'))(_0x52e5('0x16'));var utils=require(_0x52e5('0x17'));var config=require(_0x52e5('0x18'));var licenseUtil=require(_0x52e5('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x448644,_0x3a0661){_0x3a0661=_0x3a0661||0xcc;return function(_0x50afa6){if(_0x50afa6){return _0x448644['sendStatus'](_0x3a0661);}return _0x448644[_0x52e5('0x1a')](_0x3a0661)[_0x52e5('0x1b')]();};}function respondWithResult(_0xc6dc4,_0x361fcc){_0x361fcc=_0x361fcc||0xc8;return function(_0x278d63){if(_0x278d63){return _0xc6dc4['status'](_0x361fcc)[_0x52e5('0x1c')](_0x278d63);}};}function respondWithFilteredResult(_0x54a3df,_0x1b381a){return function(_0xae30aa){if(_0xae30aa){var _0x3eea18=typeof _0x1b381a[_0x52e5('0x1d')]===_0x52e5('0x1e')&&typeof _0x1b381a[_0x52e5('0x1f')]===_0x52e5('0x1e');var _0x28622a=_0xae30aa[_0x52e5('0x20')];var _0x3c16b4=_0x3eea18?0x0:_0x1b381a[_0x52e5('0x1d')];var _0x1734a7=_0x3eea18?_0xae30aa[_0x52e5('0x20')]:_0x1b381a[_0x52e5('0x1d')]+_0x1b381a[_0x52e5('0x1f')];var _0x1a2083;if(_0x1734a7>=_0x28622a){_0x1734a7=_0x28622a;_0x1a2083=0xc8;}else{_0x1a2083=0xce;}_0x54a3df[_0x52e5('0x1a')](_0x1a2083);return _0x54a3df['set'](_0x52e5('0x21'),_0x3c16b4+'-'+_0x1734a7+'/'+_0x28622a)[_0x52e5('0x1c')](_0xae30aa);}return null;};}function patchUpdates(_0x5344b3){return function(_0x5c627e){try{jsonpatch['apply'](_0x5c627e,_0x5344b3,!![]);}catch(_0x4450dc){return BPromise[_0x52e5('0x22')](_0x4450dc);}return _0x5c627e[_0x52e5('0x23')]();};}function saveUpdates(_0x4eff9a,_0x208716){return function(_0xe22482){if(_0xe22482){return _0xe22482[_0x52e5('0x24')](_0x4eff9a)[_0x52e5('0x25')](function(_0x33654b){return _0x33654b;});}return null;};}function removeEntity(_0x166f2e,_0x11b686){return function(_0x22f444){if(_0x22f444){return _0x22f444[_0x52e5('0x26')]()[_0x52e5('0x25')](function(){_0x166f2e[_0x52e5('0x1a')](0xcc)[_0x52e5('0x1b')]();});}};}function handleEntityNotFound(_0x5e2a36,_0xe16359){return function(_0x3993aa){if(!_0x3993aa){_0x5e2a36[_0x52e5('0x27')](0x194);}return _0x3993aa;};}function handleError(_0x1bf414,_0x3e9843){_0x3e9843=_0x3e9843||0x1f4;return function(_0x227761){logger['error'](_0x227761['stack']);if(_0x227761[_0x52e5('0x28')]){delete _0x227761[_0x52e5('0x28')];}_0x1bf414['status'](_0x3e9843)[_0x52e5('0x29')](_0x227761);};}exports[_0x52e5('0x2a')]=function(_0x17899b,_0x26293f){var _0x188026={},_0x338fe={},_0x5db1cb={'count':0x0,'rows':[]};var _0x2e8e79=_[_0x52e5('0x2b')](db['SquareDetailsReport'][_0x52e5('0x2c')],function(_0x183b87){return{'name':_0x183b87[_0x52e5('0x2d')],'type':_0x183b87[_0x52e5('0x2e')][_0x52e5('0x2f')]};});_0x338fe[_0x52e5('0x30')]=_[_0x52e5('0x2b')](_0x2e8e79,_0x52e5('0x28'));_0x338fe[_0x52e5('0x31')]=_['keys'](_0x17899b[_0x52e5('0x31')]);_0x338fe[_0x52e5('0x32')]=_[_0x52e5('0x33')](_0x338fe[_0x52e5('0x30')],_0x338fe[_0x52e5('0x31')]);_0x188026[_0x52e5('0x34')]=_[_0x52e5('0x33')](_0x338fe[_0x52e5('0x30')],qs['fields'](_0x17899b[_0x52e5('0x31')][_0x52e5('0x35')]));_0x188026['attributes']=_0x188026['attributes']['length']?_0x188026[_0x52e5('0x34')]:_0x338fe['model'];if(!_0x17899b[_0x52e5('0x31')][_0x52e5('0x36')](_0x52e5('0x37'))){_0x188026['limit']=qs[_0x52e5('0x1f')](_0x17899b[_0x52e5('0x31')][_0x52e5('0x1f')]);_0x188026['offset']=qs[_0x52e5('0x1d')](_0x17899b[_0x52e5('0x31')]['offset']);}_0x188026[_0x52e5('0x38')]=qs['sort'](_0x17899b[_0x52e5('0x31')][_0x52e5('0x39')]);_0x188026[_0x52e5('0x3a')]=qs['filters'](_[_0x52e5('0x3b')](_0x17899b[_0x52e5('0x31')],_0x338fe[_0x52e5('0x32')]),_0x2e8e79);if(_0x17899b[_0x52e5('0x31')][_0x52e5('0x3c')]){_0x188026['where']=_[_0x52e5('0x3d')](_0x188026[_0x52e5('0x3a')],{'$or':_['map'](_0x2e8e79,function(_0x54cb5d){if(_0x54cb5d[_0x52e5('0x2e')]!=='VIRTUAL'){var _0xd1fd1b={};_0xd1fd1b[_0x54cb5d['name']]={'$like':'%'+_0x17899b[_0x52e5('0x31')]['filter']+'%'};return _0xd1fd1b;}})});}_0x188026=_['merge']({},_0x188026,_0x17899b[_0x52e5('0x3e')]);var _0xbcd06e={'where':_0x188026[_0x52e5('0x3a')]};return db[_0x52e5('0x3f')][_0x52e5('0x20')](_0xbcd06e)[_0x52e5('0x25')](function(_0x1e9a8b){_0x5db1cb[_0x52e5('0x20')]=_0x1e9a8b;if(_0x17899b['query']['includeAll']){_0x188026['include']=[{'all':!![]}];}return db['SquareDetailsReport'][_0x52e5('0x40')](_0x188026);})[_0x52e5('0x25')](function(_0x25848c){_0x5db1cb[_0x52e5('0x41')]=_0x25848c;return _0x5db1cb;})['then'](respondWithFilteredResult(_0x26293f,_0x188026))[_0x52e5('0x42')](handleError(_0x26293f,null));};exports[_0x52e5('0x43')]=function(_0x141259,_0x49b6a7){var _0x17a16e={'raw':!![],'where':{'id':_0x141259[_0x52e5('0x44')]['id']}},_0x30ff89={};_0x30ff89[_0x52e5('0x30')]=_[_0x52e5('0x45')](db[_0x52e5('0x3f')][_0x52e5('0x2c')]);_0x30ff89['query']=_[_0x52e5('0x45')](_0x141259['query']);_0x30ff89[_0x52e5('0x32')]=_[_0x52e5('0x33')](_0x30ff89[_0x52e5('0x30')],_0x30ff89[_0x52e5('0x31')]);_0x17a16e[_0x52e5('0x34')]=_['intersection'](_0x30ff89[_0x52e5('0x30')],qs[_0x52e5('0x35')](_0x141259[_0x52e5('0x31')][_0x52e5('0x35')]));_0x17a16e['attributes']=_0x17a16e[_0x52e5('0x34')][_0x52e5('0x46')]?_0x17a16e[_0x52e5('0x34')]:_0x30ff89[_0x52e5('0x30')];if(_0x141259['query'][_0x52e5('0x47')]){_0x17a16e[_0x52e5('0x48')]=[{'all':!![]}];}_0x17a16e=_['merge']({},_0x17a16e,_0x141259[_0x52e5('0x3e')]);return db[_0x52e5('0x3f')]['find'](_0x17a16e)['then'](handleEntityNotFound(_0x49b6a7,null))['then'](respondWithResult(_0x49b6a7,null))['catch'](handleError(_0x49b6a7,null));};exports['create']=function(_0x35925f,_0x372474){return db[_0x52e5('0x3f')][_0x52e5('0x49')](_0x35925f[_0x52e5('0x4a')],{})[_0x52e5('0x25')](respondWithResult(_0x372474,0xc9))[_0x52e5('0x42')](handleError(_0x372474,null));};exports[_0x52e5('0x24')]=function(_0x81377,_0x356e04){if(_0x81377['body']['id']){delete _0x81377['body']['id'];}return db[_0x52e5('0x3f')][_0x52e5('0x4b')]({'where':{'id':_0x81377[_0x52e5('0x44')]['id']}})[_0x52e5('0x25')](handleEntityNotFound(_0x356e04,null))[_0x52e5('0x25')](saveUpdates(_0x81377[_0x52e5('0x4a')],null))[_0x52e5('0x25')](respondWithResult(_0x356e04,null))[_0x52e5('0x42')](handleError(_0x356e04,null));};exports[_0x52e5('0x26')]=function(_0x50a475,_0x4dbe82){return db[_0x52e5('0x3f')][_0x52e5('0x4b')]({'where':{'id':_0x50a475[_0x52e5('0x44')]['id']}})[_0x52e5('0x25')](handleEntityNotFound(_0x4dbe82,null))[_0x52e5('0x25')](removeEntity(_0x4dbe82,null))['catch'](handleError(_0x4dbe82,null));};exports[_0x52e5('0x4c')]=function(_0x35dc1c,_0x1bff6b){return db[_0x52e5('0x3f')][_0x52e5('0x4c')]()['then'](respondWithResult(_0x1bff6b,null))[_0x52e5('0x42')](handleError(_0x1bff6b,null));};
\ No newline at end of file
+var _0xcfd7=['path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','then','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','SquareDetailsReport','includeAll','catch','show','include','find','create','body','params','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util'];(function(_0x5f2481,_0x313fd9){var _0x49f81f=function(_0x3af35b){while(--_0x3af35b){_0x5f2481['push'](_0x5f2481['shift']());}};_0x49f81f(++_0x313fd9);}(_0xcfd7,0x1d9));var _0x7cfd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcfd7[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x7cfd('0x0'));var rimraf=require(_0x7cfd('0x1'));var zipdir=require(_0x7cfd('0x2'));var jsonpatch=require(_0x7cfd('0x3'));var rp=require('request-promise');var moment=require(_0x7cfd('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x7cfd('0x5'));var util=require(_0x7cfd('0x6'));var path=require(_0x7cfd('0x7'));var sox=require(_0x7cfd('0x8'));var csv=require(_0x7cfd('0x9'));var ejs=require(_0x7cfd('0xa'));var fs=require('fs');var fs_extra=require(_0x7cfd('0xb'));var _=require(_0x7cfd('0xc'));var squel=require(_0x7cfd('0xd'));var crypto=require(_0x7cfd('0xe'));var jsforce=require(_0x7cfd('0xf'));var deskjs=require(_0x7cfd('0x10'));var toCsv=require(_0x7cfd('0x9'));var querystring=require(_0x7cfd('0x11'));var Papa=require(_0x7cfd('0x12'));var Redis=require(_0x7cfd('0x13'));var authService=require(_0x7cfd('0x14'));var qs=require(_0x7cfd('0x15'));var as=require(_0x7cfd('0x16'));var hardwareService=require(_0x7cfd('0x17'));var logger=require('../../config/logger')(_0x7cfd('0x18'));var utils=require(_0x7cfd('0x19'));var config=require(_0x7cfd('0x1a'));var licenseUtil=require(_0x7cfd('0x1b'));var db=require(_0x7cfd('0x1c'))['db'];function respondWithStatusCode(_0xed2723,_0x3f8824){_0x3f8824=_0x3f8824||0xcc;return function(_0x555e1b){if(_0x555e1b){return _0xed2723['sendStatus'](_0x3f8824);}return _0xed2723[_0x7cfd('0x1d')](_0x3f8824)[_0x7cfd('0x1e')]();};}function respondWithResult(_0x497917,_0x1f41ab){_0x1f41ab=_0x1f41ab||0xc8;return function(_0x3a2180){if(_0x3a2180){return _0x497917[_0x7cfd('0x1d')](_0x1f41ab)[_0x7cfd('0x1f')](_0x3a2180);}};}function respondWithFilteredResult(_0x558d3e,_0xb216ab){return function(_0x27224f){if(_0x27224f){var _0x398694=typeof _0xb216ab[_0x7cfd('0x20')]===_0x7cfd('0x21')&&typeof _0xb216ab['limit']===_0x7cfd('0x21');var _0x2d33c4=_0x27224f[_0x7cfd('0x22')];var _0x663153=_0x398694?0x0:_0xb216ab['offset'];var _0x9cb96f=_0x398694?_0x27224f[_0x7cfd('0x22')]:_0xb216ab[_0x7cfd('0x20')]+_0xb216ab[_0x7cfd('0x23')];var _0x395317;if(_0x9cb96f>=_0x2d33c4){_0x9cb96f=_0x2d33c4;_0x395317=0xc8;}else{_0x395317=0xce;}_0x558d3e['status'](_0x395317);return _0x558d3e['set'](_0x7cfd('0x24'),_0x663153+'-'+_0x9cb96f+'/'+_0x2d33c4)[_0x7cfd('0x1f')](_0x27224f);}return null;};}function patchUpdates(_0x37a374){return function(_0x5dcb9d){try{jsonpatch[_0x7cfd('0x25')](_0x5dcb9d,_0x37a374,!![]);}catch(_0x45e0b1){return BPromise[_0x7cfd('0x26')](_0x45e0b1);}return _0x5dcb9d[_0x7cfd('0x27')]();};}function saveUpdates(_0x392a53,_0x41315a){return function(_0x141b76){if(_0x141b76){return _0x141b76[_0x7cfd('0x28')](_0x392a53)[_0x7cfd('0x29')](function(_0x79292c){return _0x79292c;});}return null;};}function removeEntity(_0x4cca7b,_0x37f6c4){return function(_0x5a8416){if(_0x5a8416){return _0x5a8416['destroy']()[_0x7cfd('0x29')](function(){_0x4cca7b[_0x7cfd('0x1d')](0xcc)[_0x7cfd('0x1e')]();});}};}function handleEntityNotFound(_0x27428c,_0x129e34){return function(_0x1f92ed){if(!_0x1f92ed){_0x27428c[_0x7cfd('0x2a')](0x194);}return _0x1f92ed;};}function handleError(_0x557564,_0x4a8b1c){_0x4a8b1c=_0x4a8b1c||0x1f4;return function(_0x123685){logger[_0x7cfd('0x2b')](_0x123685[_0x7cfd('0x2c')]);if(_0x123685[_0x7cfd('0x2d')]){delete _0x123685[_0x7cfd('0x2d')];}_0x557564[_0x7cfd('0x1d')](_0x4a8b1c)['send'](_0x123685);};}exports[_0x7cfd('0x2e')]=function(_0x52a3d4,_0x5a2e64){var _0x2797bd={},_0xe0e0bf={},_0x5f54a5={'count':0x0,'rows':[]};var _0xa6eb69=_[_0x7cfd('0x2f')](db['SquareDetailsReport'][_0x7cfd('0x30')],function(_0x5930b9){return{'name':_0x5930b9[_0x7cfd('0x31')],'type':_0x5930b9[_0x7cfd('0x32')][_0x7cfd('0x33')]};});_0xe0e0bf[_0x7cfd('0x34')]=_[_0x7cfd('0x2f')](_0xa6eb69,'name');_0xe0e0bf[_0x7cfd('0x35')]=_[_0x7cfd('0x36')](_0x52a3d4[_0x7cfd('0x35')]);_0xe0e0bf[_0x7cfd('0x37')]=_['intersection'](_0xe0e0bf[_0x7cfd('0x34')],_0xe0e0bf[_0x7cfd('0x35')]);_0x2797bd[_0x7cfd('0x38')]=_[_0x7cfd('0x39')](_0xe0e0bf['model'],qs['fields'](_0x52a3d4[_0x7cfd('0x35')][_0x7cfd('0x3a')]));_0x2797bd[_0x7cfd('0x38')]=_0x2797bd[_0x7cfd('0x38')][_0x7cfd('0x3b')]?_0x2797bd['attributes']:_0xe0e0bf[_0x7cfd('0x34')];if(!_0x52a3d4[_0x7cfd('0x35')][_0x7cfd('0x3c')](_0x7cfd('0x3d'))){_0x2797bd[_0x7cfd('0x23')]=qs['limit'](_0x52a3d4[_0x7cfd('0x35')][_0x7cfd('0x23')]);_0x2797bd[_0x7cfd('0x20')]=qs['offset'](_0x52a3d4['query'][_0x7cfd('0x20')]);}_0x2797bd['order']=qs[_0x7cfd('0x3e')](_0x52a3d4['query']['sort']);_0x2797bd[_0x7cfd('0x3f')]=qs['filters'](_[_0x7cfd('0x40')](_0x52a3d4[_0x7cfd('0x35')],_0xe0e0bf[_0x7cfd('0x37')]),_0xa6eb69);if(_0x52a3d4[_0x7cfd('0x35')][_0x7cfd('0x41')]){_0x2797bd[_0x7cfd('0x3f')]=_[_0x7cfd('0x42')](_0x2797bd[_0x7cfd('0x3f')],{'$or':_[_0x7cfd('0x2f')](_0xa6eb69,function(_0x5e44a8){if(_0x5e44a8[_0x7cfd('0x32')]!==_0x7cfd('0x43')){var _0x4b4c83={};_0x4b4c83[_0x5e44a8[_0x7cfd('0x2d')]]={'$like':'%'+_0x52a3d4[_0x7cfd('0x35')][_0x7cfd('0x41')]+'%'};return _0x4b4c83;}})});}_0x2797bd=_[_0x7cfd('0x42')]({},_0x2797bd,_0x52a3d4[_0x7cfd('0x44')]);var _0x39d425={'where':_0x2797bd['where']};return db[_0x7cfd('0x45')][_0x7cfd('0x22')](_0x39d425)[_0x7cfd('0x29')](function(_0x30bc0c){_0x5f54a5[_0x7cfd('0x22')]=_0x30bc0c;if(_0x52a3d4[_0x7cfd('0x35')][_0x7cfd('0x46')]){_0x2797bd['include']=[{'all':!![]}];}return db[_0x7cfd('0x45')]['findAll'](_0x2797bd);})[_0x7cfd('0x29')](function(_0x4d1f73){_0x5f54a5['rows']=_0x4d1f73;return _0x5f54a5;})['then'](respondWithFilteredResult(_0x5a2e64,_0x2797bd))[_0x7cfd('0x47')](handleError(_0x5a2e64,null));};exports[_0x7cfd('0x48')]=function(_0x59d6da,_0x4c7d0b){var _0x3ec5b3={'raw':!![],'where':{'id':_0x59d6da['params']['id']}},_0x275e8d={};_0x275e8d[_0x7cfd('0x34')]=_[_0x7cfd('0x36')](db['SquareDetailsReport'][_0x7cfd('0x30')]);_0x275e8d[_0x7cfd('0x35')]=_[_0x7cfd('0x36')](_0x59d6da[_0x7cfd('0x35')]);_0x275e8d[_0x7cfd('0x37')]=_[_0x7cfd('0x39')](_0x275e8d[_0x7cfd('0x34')],_0x275e8d[_0x7cfd('0x35')]);_0x3ec5b3['attributes']=_[_0x7cfd('0x39')](_0x275e8d['model'],qs['fields'](_0x59d6da['query'][_0x7cfd('0x3a')]));_0x3ec5b3[_0x7cfd('0x38')]=_0x3ec5b3['attributes'][_0x7cfd('0x3b')]?_0x3ec5b3[_0x7cfd('0x38')]:_0x275e8d[_0x7cfd('0x34')];if(_0x59d6da[_0x7cfd('0x35')][_0x7cfd('0x46')]){_0x3ec5b3[_0x7cfd('0x49')]=[{'all':!![]}];}_0x3ec5b3=_['merge']({},_0x3ec5b3,_0x59d6da['options']);return db[_0x7cfd('0x45')][_0x7cfd('0x4a')](_0x3ec5b3)[_0x7cfd('0x29')](handleEntityNotFound(_0x4c7d0b,null))[_0x7cfd('0x29')](respondWithResult(_0x4c7d0b,null))[_0x7cfd('0x47')](handleError(_0x4c7d0b,null));};exports[_0x7cfd('0x4b')]=function(_0x51c5e1,_0x294d7b){return db[_0x7cfd('0x45')][_0x7cfd('0x4b')](_0x51c5e1[_0x7cfd('0x4c')],{})['then'](respondWithResult(_0x294d7b,0xc9))[_0x7cfd('0x47')](handleError(_0x294d7b,null));};exports['update']=function(_0x2fb1e3,_0xa7c303){if(_0x2fb1e3['body']['id']){delete _0x2fb1e3[_0x7cfd('0x4c')]['id'];}return db[_0x7cfd('0x45')][_0x7cfd('0x4a')]({'where':{'id':_0x2fb1e3[_0x7cfd('0x4d')]['id']}})[_0x7cfd('0x29')](handleEntityNotFound(_0xa7c303,null))[_0x7cfd('0x29')](saveUpdates(_0x2fb1e3['body'],null))[_0x7cfd('0x29')](respondWithResult(_0xa7c303,null))[_0x7cfd('0x47')](handleError(_0xa7c303,null));};exports[_0x7cfd('0x4e')]=function(_0x4e8e58,_0x25e3e2){return db[_0x7cfd('0x45')][_0x7cfd('0x4a')]({'where':{'id':_0x4e8e58[_0x7cfd('0x4d')]['id']}})[_0x7cfd('0x29')](handleEntityNotFound(_0x25e3e2,null))[_0x7cfd('0x29')](removeEntity(_0x25e3e2,null))['catch'](handleError(_0x25e3e2,null));};exports['describe']=function(_0x54dcce,_0x4a7cfd){return db[_0x7cfd('0x45')][_0x7cfd('0x4f')]()[_0x7cfd('0x29')](respondWithResult(_0x4a7cfd,null))[_0x7cfd('0x47')](handleError(_0x4a7cfd,null));};
\ No newline at end of file
index 13a5c68..d68b4d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19c1=['exports','report_square_details','lodash','../../config/logger','api','request-promise','path','../../config/environment'];(function(_0x58f9ff,_0x5d2dd4){var _0x36ecce=function(_0x10b514){while(--_0x10b514){_0x58f9ff['push'](_0x58f9ff['shift']());}};_0x36ecce(++_0x5d2dd4);}(_0x19c1,0x172));var _0x119c=function(_0x3db384,_0x1e2f2f){_0x3db384=_0x3db384-0x0;var _0x396190=_0x19c1[_0x3db384];return _0x396190;};'use strict';var _=require(_0x119c('0x0'));var util=require('util');var logger=require(_0x119c('0x1'))(_0x119c('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x119c('0x3'));var fs=require('fs');var path=require(_0x119c('0x4'));var rimraf=require('rimraf');var config=require(_0x119c('0x5'));var attributes=require('./squareReportDetail.attributes');module[_0x119c('0x6')]=function(_0x505aeb,_0x1dddb7){return _0x505aeb['define']('SquareDetailsReport',attributes,{'tableName':_0x119c('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc1d4=['bluebird','request-promise','path','rimraf','./squareReportDetail.attributes','exports','define','SquareDetailsReport','report_square_details','lodash','../../config/logger','moment'];(function(_0x2f0e3d,_0x3269b5){var _0x46c2c9=function(_0x4a648e){while(--_0x4a648e){_0x2f0e3d['push'](_0x2f0e3d['shift']());}};_0x46c2c9(++_0x3269b5);}(_0xc1d4,0x17d));var _0x4c1d=function(_0x260593,_0x3341bc){_0x260593=_0x260593-0x0;var _0x2a4114=_0xc1d4[_0x260593];return _0x2a4114;};'use strict';var _=require(_0x4c1d('0x0'));var util=require('util');var logger=require(_0x4c1d('0x1'))('api');var moment=require(_0x4c1d('0x2'));var BPromise=require(_0x4c1d('0x3'));var rp=require(_0x4c1d('0x4'));var fs=require('fs');var path=require(_0x4c1d('0x5'));var rimraf=require(_0x4c1d('0x6'));var config=require('../../config/environment');var attributes=require(_0x4c1d('0x7'));module[_0x4c1d('0x8')]=function(_0x38de48,_0x2bfd70){return _0x38de48[_0x4c1d('0x9')](_0x4c1d('0xa'),attributes,{'tableName':_0x4c1d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7c5feb0..2b6f725 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0972=['info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CreateSquareDetailsReport','SquareDetailsReport','create','body','options','raw','catch','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x4f6e04,_0x147e66){var _0x7dac2=function(_0x42bb24){while(--_0x42bb24){_0x4f6e04['push'](_0x4f6e04['shift']());}};_0x7dac2(++_0x147e66);}(_0x0972,0x64));var _0x2097=function(_0x4607b1,_0x11de0b){_0x4607b1=_0x4607b1-0x0;var _0x16a702=_0x0972[_0x4607b1];return _0x16a702;};'use strict';var _=require('lodash');var util=require(_0x2097('0x0'));var moment=require('moment');var BPromise=require(_0x2097('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2097('0x2'));var db=require(_0x2097('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x2097('0x4'))(_0x2097('0x5'));var config=require(_0x2097('0x6'));var jayson=require(_0x2097('0x7'));var client=jayson[_0x2097('0x8')][_0x2097('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2b4f21,_0x59739f,_0x332aac){return new BPromise(function(_0x1e661a,_0x11d263){return client[_0x2097('0xa')](_0x2b4f21,_0x332aac)[_0x2097('0xb')](function(_0x59d947){logger[_0x2097('0xc')](_0x2097('0xd'),_0x59739f,_0x2097('0xe'));logger[_0x2097('0xf')](_0x2097('0x10'),_0x59739f,_0x2097('0xe'),JSON[_0x2097('0x11')](_0x59d947));if(_0x59d947[_0x2097('0x12')]){if(_0x59d947[_0x2097('0x12')][_0x2097('0x13')]===0x1f4){logger[_0x2097('0x12')](_0x2097('0xd'),_0x59739f,_0x59d947[_0x2097('0x12')][_0x2097('0x14')]);return _0x11d263(_0x59d947[_0x2097('0x12')][_0x2097('0x14')]);}logger[_0x2097('0x12')](_0x2097('0xd'),_0x59739f,_0x59d947[_0x2097('0x12')][_0x2097('0x14')]);return _0x1e661a(_0x59d947['error'][_0x2097('0x14')]);}else{logger[_0x2097('0xc')]('SquareDetailsReport,\x20%s,\x20%s',_0x59739f,'request\x20sent');_0x1e661a(_0x59d947['result'][_0x2097('0x14')]);}})['catch'](function(_0x28c35c){logger[_0x2097('0x12')](_0x2097('0xd'),_0x59739f,_0x28c35c);_0x11d263(_0x28c35c);});});}exports[_0x2097('0x15')]=function(_0x44c584){var _0x53e2b4=this;return new Promise(function(_0x324652,_0x140094){return db[_0x2097('0x16')][_0x2097('0x17')](_0x44c584[_0x2097('0x18')],{'raw':_0x44c584[_0x2097('0x19')]?_0x44c584[_0x2097('0x19')][_0x2097('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x4d957e){logger[_0x2097('0xc')]('CreateSquareDetailsReport',_0x44c584);logger[_0x2097('0xf')](_0x2097('0x15'),_0x44c584,JSON['stringify'](_0x4d957e));_0x324652(_0x4d957e);})[_0x2097('0x1b')](function(_0x5b0582){logger[_0x2097('0x12')](_0x2097('0x15'),_0x5b0582[_0x2097('0x14')],_0x44c584);_0x140094(_0x53e2b4[_0x2097('0x12')](0x1f4,_0x5b0582[_0x2097('0x14')]));});});};
\ No newline at end of file
+var _0xe493=['randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSquareDetailsReport','create','options','raw','lodash','util','moment','bluebird'];(function(_0x3b0c2c,_0x25047e){var _0x51861d=function(_0x20cd60){while(--_0x20cd60){_0x3b0c2c['push'](_0x3b0c2c['shift']());}};_0x51861d(++_0x25047e);}(_0xe493,0x7e));var _0x3e49=function(_0x5aaf95,_0x2822c2){_0x5aaf95=_0x5aaf95-0x0;var _0x289243=_0xe493[_0x5aaf95];return _0x289243;};'use strict';var _=require(_0x3e49('0x0'));var util=require(_0x3e49('0x1'));var moment=require(_0x3e49('0x2'));var BPromise=require(_0x3e49('0x3'));var rs=require(_0x3e49('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3e49('0x5'))['db'];var utils=require(_0x3e49('0x6'));var logger=require('../../config/logger')(_0x3e49('0x7'));var config=require('../../config/environment');var jayson=require(_0x3e49('0x8'));var client=jayson[_0x3e49('0x9')][_0x3e49('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3f7821,_0x12dd84,_0x3626b6){return new BPromise(function(_0x4e96ac,_0x56b767){return client['request'](_0x3f7821,_0x3626b6)[_0x3e49('0xb')](function(_0x8b8c0e){logger[_0x3e49('0xc')](_0x3e49('0xd'),_0x12dd84,_0x3e49('0xe'));logger[_0x3e49('0xf')](_0x3e49('0x10'),_0x12dd84,_0x3e49('0xe'),JSON[_0x3e49('0x11')](_0x8b8c0e));if(_0x8b8c0e[_0x3e49('0x12')]){if(_0x8b8c0e[_0x3e49('0x12')]['code']===0x1f4){logger[_0x3e49('0x12')](_0x3e49('0xd'),_0x12dd84,_0x8b8c0e['error'][_0x3e49('0x13')]);return _0x56b767(_0x8b8c0e[_0x3e49('0x12')]['message']);}logger[_0x3e49('0x12')](_0x3e49('0xd'),_0x12dd84,_0x8b8c0e['error'][_0x3e49('0x13')]);return _0x4e96ac(_0x8b8c0e[_0x3e49('0x12')][_0x3e49('0x13')]);}else{logger[_0x3e49('0xc')](_0x3e49('0xd'),_0x12dd84,_0x3e49('0xe'));_0x4e96ac(_0x8b8c0e[_0x3e49('0x14')][_0x3e49('0x13')]);}})[_0x3e49('0x15')](function(_0x1d9cce){logger[_0x3e49('0x12')](_0x3e49('0xd'),_0x12dd84,_0x1d9cce);_0x56b767(_0x1d9cce);});});}exports[_0x3e49('0x16')]=function(_0x3ae5f4){var _0x448c36=this;return new Promise(function(_0x4e1cdf,_0xf33205){return db['SquareDetailsReport'][_0x3e49('0x17')](_0x3ae5f4['body'],{'raw':_0x3ae5f4[_0x3e49('0x18')]?_0x3ae5f4['options'][_0x3e49('0x19')]===undefined?!![]:![]:!![]})[_0x3e49('0xb')](function(_0x420d7b){logger['info'](_0x3e49('0x16'),_0x3ae5f4);logger['debug'](_0x3e49('0x16'),_0x3ae5f4,JSON[_0x3e49('0x11')](_0x420d7b));_0x4e1cdf(_0x420d7b);})[_0x3e49('0x15')](function(_0x5e0f1d){logger['error'](_0x3e49('0x16'),_0x5e0f1d['message'],_0x3ae5f4);_0xf33205(_0x448c36[_0x3e49('0x12')](0x1f4,_0x5e0f1d[_0x3e49('0x13')]));});});};
\ No newline at end of file
index 5b0fdda..4fe2e78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x483b=['/process/:pid/kill','isAuthenticated','killProcess','exports','Router','../../components/auth/service','./system.controller'];(function(_0x204474,_0x5cfef6){var _0x567e42=function(_0x5ab080){while(--_0x5ab080){_0x204474['push'](_0x204474['shift']());}};_0x567e42(++_0x5cfef6);}(_0x483b,0xeb));var _0xb483=function(_0x49ac7c,_0xa9fa22){_0x49ac7c=_0x49ac7c-0x0;var _0x294359=_0x483b[_0x49ac7c];return _0x294359;};'use strict';var express=require('express');var router=express[_0xb483('0x0')]();var auth=require(_0xb483('0x1'));var controller=require(_0xb483('0x2'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xb483('0x3'),auth[_0xb483('0x4')](),controller[_0xb483('0x5')]);module[_0xb483('0x6')]=router;
\ No newline at end of file
+var _0x6cbe=['../../components/auth/service','./system.controller','get','isAuthenticated','index','exports','Router'];(function(_0x55a13a,_0x31580a){var _0xd4188d=function(_0x163d8){while(--_0x163d8){_0x55a13a['push'](_0x55a13a['shift']());}};_0xd4188d(++_0x31580a);}(_0x6cbe,0x1e9));var _0xe6cb=function(_0x1cee63,_0x16f7f5){_0x1cee63=_0x1cee63-0x0;var _0x2465a9=_0x6cbe[_0x1cee63];return _0x2465a9;};'use strict';var express=require('express');var router=express[_0xe6cb('0x0')]();var auth=require(_0xe6cb('0x1'));var controller=require(_0xe6cb('0x2'));router[_0xe6cb('0x3')]('/',auth[_0xe6cb('0x4')](),controller[_0xe6cb('0x5')]);router[_0xe6cb('0x3')]('/process/:pid/kill',auth['isAuthenticated'](),controller['killProcess']);module[_0xe6cb('0x6')]=router;
\ No newline at end of file
index eeb6e52..510992c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b5b=['format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','pid','then','split','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','params','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','catch','exec','../../config/logger','api','util','bluebird','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','send','index','getAllData','json','killProcess','components/import/cm'];(function(_0x110989,_0xb79ea7){var _0xd0f211=function(_0x4ed059){while(--_0x4ed059){_0x110989['push'](_0x110989['shift']());}};_0xd0f211(++_0xb79ea7);}(_0x6b5b,0x1a3));var _0xb6b5=function(_0x44f545,_0xe5f5d7){_0x44f545=_0x44f545-0x0;var _0x33d866=_0x6b5b[_0x44f545];return _0x33d866;};'use strict';var info=require('systeminformation');var exec=require('child_process')[_0xb6b5('0x0')];var logger=require(_0xb6b5('0x1'))(_0xb6b5('0x2'));var util=require(_0xb6b5('0x3'));var BPromise=require(_0xb6b5('0x4'));var _=require('lodash');function handleError(_0xbf2ff4,_0x30cec9,_0x1e39b0){_0x30cec9=_0x30cec9||0x1f4;return function(_0x2b9d07){logger[_0xb6b5('0x5')](_0xb6b5('0x6'),_0x1e39b0,_0x30cec9,util[_0xb6b5('0x7')](_0x2b9d07,{'showHidden':![],'depth':null}));delete _0x2b9d07[_0xb6b5('0x8')];_0xbf2ff4[_0xb6b5('0x9')](_0x30cec9)[_0xb6b5('0xa')](_0x2b9d07);};}exports[_0xb6b5('0xb')]=function(_0x37277a,_0x11a678){return info[_0xb6b5('0xc')]()['then'](function(_0xf2d914){return _0x11a678['status'](0xc8)['json'](_0xf2d914);})['catch'](function(_0x239607){return _0x11a678['status'](0x1f4)[_0xb6b5('0xd')](_0x239607);});};exports[_0xb6b5('0xe')]=function(_0x5f5b96,_0x1d3a26){var _0x216895=[_0xb6b5('0xf')];return new BPromise(function(_0x56799e,_0x5316c4){return exec(util[_0xb6b5('0x10')](_0xb6b5('0x11'),_0x5f5b96['params'][_0xb6b5('0x12')]),function(_0x6457c0,_0x1a22ef,_0x577a29){if(_0x6457c0){return _0x5316c4(_0x6457c0);}return _0x56799e(_0x1a22ef);});})[_0xb6b5('0x13')](function(_0x4a526e){var _0x4e8eed=![];var _0x9342a3=_0x4a526e[_0xb6b5('0x14')](/\n/);for(var _0x2b94e6=0x0,_0x5067f6=_0x216895[_0xb6b5('0x15')];_0x2b94e6<_0x5067f6,_0x4e8eed===![];_0x2b94e6+=0x1){if(_0x4a526e[_0xb6b5('0x16')](_0x216895[_0x2b94e6])>=0x0){_0x4e8eed=!![];}}if(!_0x4e8eed){throw new Error(util['format'](_0xb6b5('0x17'),_0x5f5b96[_0xb6b5('0x18')][_0xb6b5('0x12')]));}process[_0xb6b5('0x19')](_0x5f5b96[_0xb6b5('0x18')]['pid'],_0xb6b5('0x1a'));return _0x1d3a26['status'](0xc8)[_0xb6b5('0xd')]({'message':util[_0xb6b5('0x10')](_0xb6b5('0x1b'),_0x5f5b96[_0xb6b5('0x18')]['pid'])});})[_0xb6b5('0x1c')](handleError(_0x1d3a26,null,'killProcess'));};
\ No newline at end of file
+var _0x303a=['killProcess','components/import/cm','format','params','pid','split','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','kill','catch','child_process','exec','../../config/logger','api','util','bluebird','lodash','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','name','status','send','getAllData','then','json'];(function(_0x5bee96,_0x52cd81){var _0x52e45a=function(_0x2cf801){while(--_0x2cf801){_0x5bee96['push'](_0x5bee96['shift']());}};_0x52e45a(++_0x52cd81);}(_0x303a,0xb2));var _0xa303=function(_0x4855fa,_0x490cf3){_0x4855fa=_0x4855fa-0x0;var _0x4b7a91=_0x303a[_0x4855fa];return _0x4b7a91;};'use strict';var info=require('systeminformation');var exec=require(_0xa303('0x0'))[_0xa303('0x1')];var logger=require(_0xa303('0x2'))(_0xa303('0x3'));var util=require(_0xa303('0x4'));var BPromise=require(_0xa303('0x5'));var _=require(_0xa303('0x6'));function handleError(_0x306b97,_0x3620aa,_0x229cb4){_0x3620aa=_0x3620aa||0x1f4;return function(_0x176555){logger['error'](_0xa303('0x7'),_0x229cb4,_0x3620aa,util['inspect'](_0x176555,{'showHidden':![],'depth':null}));delete _0x176555[_0xa303('0x8')];_0x306b97[_0xa303('0x9')](_0x3620aa)[_0xa303('0xa')](_0x176555);};}exports['index']=function(_0x493754,_0x30f884){return info[_0xa303('0xb')]()[_0xa303('0xc')](function(_0x3758b6){return _0x30f884['status'](0xc8)[_0xa303('0xd')](_0x3758b6);})['catch'](function(_0x27d275){return _0x30f884['status'](0x1f4)[_0xa303('0xd')](_0x27d275);});};exports[_0xa303('0xe')]=function(_0x3b956d,_0x53959a){var _0x2f7225=[_0xa303('0xf')];return new BPromise(function(_0x2dc5a3,_0x24209d){return exec(util[_0xa303('0x10')]('ps\x20-p\x20%s\x20-ww\x20-o\x20args',_0x3b956d[_0xa303('0x11')][_0xa303('0x12')]),function(_0x10d6bc,_0x2d2907,_0xd7e31){if(_0x10d6bc){return _0x24209d(_0x10d6bc);}return _0x2dc5a3(_0x2d2907);});})['then'](function(_0x1b5687){var _0x4e37a9=![];var _0x53eb89=_0x1b5687[_0xa303('0x13')](/\n/);for(var _0xcdbdd6=0x0,_0x3eb53b=_0x2f7225['length'];_0xcdbdd6<_0x3eb53b,_0x4e37a9===![];_0xcdbdd6+=0x1){if(_0x1b5687[_0xa303('0x14')](_0x2f7225[_0xcdbdd6])>=0x0){_0x4e37a9=!![];}}if(!_0x4e37a9){throw new Error(util[_0xa303('0x10')](_0xa303('0x15'),_0x3b956d[_0xa303('0x11')][_0xa303('0x12')]));}process[_0xa303('0x16')](_0x3b956d[_0xa303('0x11')]['pid'],'SIGINT');return _0x53959a[_0xa303('0x9')](0xc8)[_0xa303('0xd')]({'message':util[_0xa303('0x10')]('Process\x20with\x20pid\x20%s\x20killed\x20correctly',_0x3b956d['params'][_0xa303('0x12')])});})[_0xa303('0x17')](handleError(_0x53959a,null,_0xa303('0xe')));};
\ No newline at end of file
index bd10a26..09909d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3147=['./tag.controller','get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x34b821,_0x504e55){var _0x5e00a0=function(_0x242892){while(--_0x242892){_0x34b821['push'](_0x34b821['shift']());}};_0x5e00a0(++_0x504e55);}(_0x3147,0x1b0));var _0x7314=function(_0x5a25ee,_0xaf9ae6){_0x5a25ee=_0x5a25ee-0x0;var _0x22e977=_0x3147[_0x5a25ee];return _0x22e977;};'use strict';var multer=require(_0x7314('0x0'));var util=require(_0x7314('0x1'));var path=require(_0x7314('0x2'));var timeout=require(_0x7314('0x3'));var express=require(_0x7314('0x4'));var router=express[_0x7314('0x5')]();var fs_extra=require(_0x7314('0x6'));var auth=require(_0x7314('0x7'));var interaction=require(_0x7314('0x8'));var config=require('../../config/environment');var controller=require(_0x7314('0x9'));router[_0x7314('0xa')]('/',auth[_0x7314('0xb')](),controller['index']);router[_0x7314('0xa')](_0x7314('0xc'),auth[_0x7314('0xb')](),controller[_0x7314('0xd')]);router[_0x7314('0xe')]('/',auth[_0x7314('0xb')](),controller[_0x7314('0xf')]);router[_0x7314('0x10')](_0x7314('0xc'),auth[_0x7314('0xb')](),controller[_0x7314('0x11')]);router[_0x7314('0x12')](_0x7314('0xc'),auth['isAuthenticated'](),controller[_0x7314('0x13')]);module[_0x7314('0x14')]=router;
\ No newline at end of file
+var _0xe4bb=['path','Router','fs-extra','../../components/interaction/service','../../config/environment','./tag.controller','isAuthenticated','index','get','show','post','create','put','/:id','delete','destroy','exports','multer','util'];(function(_0x286079,_0x2361df){var _0x560c75=function(_0x34249a){while(--_0x34249a){_0x286079['push'](_0x286079['shift']());}};_0x560c75(++_0x2361df);}(_0xe4bb,0x154));var _0xbe4b=function(_0x4d4499,_0x31c532){_0x4d4499=_0x4d4499-0x0;var _0x3aba05=_0xe4bb[_0x4d4499];return _0x3aba05;};'use strict';var multer=require(_0xbe4b('0x0'));var util=require(_0xbe4b('0x1'));var path=require(_0xbe4b('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xbe4b('0x3')]();var fs_extra=require(_0xbe4b('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xbe4b('0x5'));var config=require(_0xbe4b('0x6'));var controller=require(_0xbe4b('0x7'));router['get']('/',auth[_0xbe4b('0x8')](),controller[_0xbe4b('0x9')]);router[_0xbe4b('0xa')]('/:id',auth[_0xbe4b('0x8')](),controller[_0xbe4b('0xb')]);router[_0xbe4b('0xc')]('/',auth[_0xbe4b('0x8')](),controller[_0xbe4b('0xd')]);router[_0xbe4b('0xe')](_0xbe4b('0xf'),auth['isAuthenticated'](),controller['update']);router[_0xbe4b('0x10')](_0xbe4b('0xf'),auth[_0xbe4b('0x8')](),controller[_0xbe4b('0x11')]);module[_0xbe4b('0x12')]=router;
\ No newline at end of file
index 96e093f..50ed94b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9649=['sequelize','exports','name','STRING','#0091EA'];(function(_0x176513,_0x23a166){var _0x43881b=function(_0x4aad01){while(--_0x4aad01){_0x176513['push'](_0x176513['shift']());}};_0x43881b(++_0x23a166);}(_0x9649,0x118));var _0x9964=function(_0xc632d4,_0x2811cb){_0xc632d4=_0xc632d4-0x0;var _0x15aae3=_0x9649[_0xc632d4];return _0x15aae3;};'use strict';var Sequelize=require(_0x9964('0x0'));module[_0x9964('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x9964('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x9964('0x3')],'defaultValue':_0x9964('0x4')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6f18=['#0091EA','sequelize','STRING'];(function(_0x37bd26,_0x5ad346){var _0xe83dc4=function(_0x1ac229){while(--_0x1ac229){_0x37bd26['push'](_0x37bd26['shift']());}};_0xe83dc4(++_0x5ad346);}(_0x6f18,0x1b4));var _0x86f1=function(_0x8b22c4,_0x426eb7){_0x8b22c4=_0x8b22c4-0x0;var _0x2d8fee=_0x6f18[_0x8b22c4];return _0x2d8fee;};'use strict';var Sequelize=require(_0x86f1('0x0'));module['exports']={'name':{'type':Sequelize[_0x86f1('0x1')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x86f1('0x1')],'defaultValue':_0x86f1('0x2')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4bf42ae..54fa1a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7794=['stack','name','send','Tag','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','catch','show','params','includeAll','options','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','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','fs-extra','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','../../mysqldb','status','end','json','offset','undefined','count','limit','Content-Range','apply','save','update','then','destroy','get','Tags','UserProfileResource','sendStatus','error'];(function(_0x23bcd0,_0x507df5){var _0x1eee6a=function(_0x37afbc){while(--_0x37afbc){_0x23bcd0['push'](_0x23bcd0['shift']());}};_0x1eee6a(++_0x507df5);}(_0x7794,0x7b));var _0x4779=function(_0x586539,_0x45e161){_0x586539=_0x586539-0x0;var _0x491c5e=_0x7794[_0x586539];return _0x491c5e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4779('0x0'));var zipdir=require(_0x4779('0x1'));var jsonpatch=require(_0x4779('0x2'));var rp=require(_0x4779('0x3'));var moment=require('moment');var BPromise=require(_0x4779('0x4'));var Mustache=require(_0x4779('0x5'));var util=require('util');var path=require(_0x4779('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4779('0x7'));var _=require(_0x4779('0x8'));var squel=require('squel');var crypto=require(_0x4779('0x9'));var jsforce=require(_0x4779('0xa'));var deskjs=require(_0x4779('0xb'));var toCsv=require(_0x4779('0xc'));var querystring=require(_0x4779('0xd'));var Papa=require(_0x4779('0xe'));var Redis=require(_0x4779('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x4779('0x10'));var as=require(_0x4779('0x11'));var hardwareService=require(_0x4779('0x12'));var logger=require(_0x4779('0x13'))(_0x4779('0x14'));var utils=require(_0x4779('0x15'));var config=require(_0x4779('0x16'));var licenseUtil=require(_0x4779('0x17'));var db=require(_0x4779('0x18'))['db'];function respondWithStatusCode(_0x13c989,_0x50e17e){_0x50e17e=_0x50e17e||0xcc;return function(_0x5b1219){if(_0x5b1219){return _0x13c989['sendStatus'](_0x50e17e);}return _0x13c989[_0x4779('0x19')](_0x50e17e)[_0x4779('0x1a')]();};}function respondWithResult(_0xb9a06f,_0xddf5cd){_0xddf5cd=_0xddf5cd||0xc8;return function(_0x4fe370){if(_0x4fe370){return _0xb9a06f[_0x4779('0x19')](_0xddf5cd)[_0x4779('0x1b')](_0x4fe370);}};}function respondWithFilteredResult(_0x4d71a0,_0x599deb){return function(_0x1dbbe1){if(_0x1dbbe1){var _0x2de2be=typeof _0x599deb[_0x4779('0x1c')]===_0x4779('0x1d')&&typeof _0x599deb['limit']==='undefined';var _0x445e0b=_0x1dbbe1[_0x4779('0x1e')];var _0x19fbb6=_0x2de2be?0x0:_0x599deb['offset'];var _0x3dbe70=_0x2de2be?_0x1dbbe1['count']:_0x599deb[_0x4779('0x1c')]+_0x599deb[_0x4779('0x1f')];var _0x478fa5;if(_0x3dbe70>=_0x445e0b){_0x3dbe70=_0x445e0b;_0x478fa5=0xc8;}else{_0x478fa5=0xce;}_0x4d71a0[_0x4779('0x19')](_0x478fa5);return _0x4d71a0['set'](_0x4779('0x20'),_0x19fbb6+'-'+_0x3dbe70+'/'+_0x445e0b)[_0x4779('0x1b')](_0x1dbbe1);}return null;};}function patchUpdates(_0x143ef6){return function(_0x298e25){try{jsonpatch[_0x4779('0x21')](_0x298e25,_0x143ef6,!![]);}catch(_0x1ce270){return BPromise['reject'](_0x1ce270);}return _0x298e25[_0x4779('0x22')]();};}function saveUpdates(_0x4f2158,_0x4ad246){return function(_0xd983f0){if(_0xd983f0){return _0xd983f0[_0x4779('0x23')](_0x4f2158)[_0x4779('0x24')](function(_0x2b7ab6){return _0x2b7ab6;});}return null;};}function removeEntity(_0x555cd6,_0x152887){return function(_0x29a39a){if(_0x29a39a){return _0x29a39a[_0x4779('0x25')]()['then'](function(){var _0x340648=_0x29a39a[_0x4779('0x26')]({'plain':!![]});var _0x577b13=_0x4779('0x27');return db[_0x4779('0x28')]['destroy']({'where':{'type':_0x577b13,'resourceId':_0x340648['id']}})[_0x4779('0x24')](function(){return _0x29a39a;});})[_0x4779('0x24')](function(){_0x555cd6[_0x4779('0x19')](0xcc)[_0x4779('0x1a')]();});}};}function handleEntityNotFound(_0x2634c2,_0x254562){return function(_0xeb1850){if(!_0xeb1850){_0x2634c2[_0x4779('0x29')](0x194);}return _0xeb1850;};}function handleError(_0x4b9066,_0x44c162){_0x44c162=_0x44c162||0x1f4;return function(_0x1607a5){logger[_0x4779('0x2a')](_0x1607a5[_0x4779('0x2b')]);if(_0x1607a5[_0x4779('0x2c')]){delete _0x1607a5[_0x4779('0x2c')];}_0x4b9066[_0x4779('0x19')](_0x44c162)[_0x4779('0x2d')](_0x1607a5);};}exports['index']=function(_0x5b1b36,_0x179717){var _0x986bed={},_0xc7e4d1={},_0x15da6d={'count':0x0,'rows':[]};var _0x335d48=_['map'](db[_0x4779('0x2e')][_0x4779('0x2f')],function(_0x1fa222){return{'name':_0x1fa222[_0x4779('0x30')],'type':_0x1fa222['type']['key']};});_0xc7e4d1[_0x4779('0x31')]=_['map'](_0x335d48,_0x4779('0x2c'));_0xc7e4d1[_0x4779('0x32')]=_[_0x4779('0x33')](_0x5b1b36[_0x4779('0x32')]);_0xc7e4d1[_0x4779('0x34')]=_[_0x4779('0x35')](_0xc7e4d1[_0x4779('0x31')],_0xc7e4d1[_0x4779('0x32')]);_0x986bed[_0x4779('0x36')]=_[_0x4779('0x35')](_0xc7e4d1[_0x4779('0x31')],qs[_0x4779('0x37')](_0x5b1b36['query']['fields']));_0x986bed[_0x4779('0x36')]=_0x986bed['attributes'][_0x4779('0x38')]?_0x986bed['attributes']:_0xc7e4d1[_0x4779('0x31')];if(!_0x5b1b36[_0x4779('0x32')][_0x4779('0x39')](_0x4779('0x3a'))){_0x986bed[_0x4779('0x1f')]=qs['limit'](_0x5b1b36['query'][_0x4779('0x1f')]);_0x986bed[_0x4779('0x1c')]=qs[_0x4779('0x1c')](_0x5b1b36[_0x4779('0x32')][_0x4779('0x1c')]);}_0x986bed[_0x4779('0x3b')]=qs[_0x4779('0x3c')](_0x5b1b36[_0x4779('0x32')][_0x4779('0x3c')]);_0x986bed[_0x4779('0x3d')]=qs[_0x4779('0x34')](_[_0x4779('0x3e')](_0x5b1b36[_0x4779('0x32')],_0xc7e4d1[_0x4779('0x34')]),_0x335d48);if(_0x5b1b36[_0x4779('0x32')][_0x4779('0x3f')]){_0x986bed[_0x4779('0x3d')]=_[_0x4779('0x40')](_0x986bed[_0x4779('0x3d')],{'$or':_['map'](_0x335d48,function(_0xa48aa1){if(_0xa48aa1['type']!==_0x4779('0x41')){var _0x1cc7da={};_0x1cc7da[_0xa48aa1[_0x4779('0x2c')]]={'$like':'%'+_0x5b1b36[_0x4779('0x32')][_0x4779('0x3f')]+'%'};return _0x1cc7da;}})});}_0x986bed=_[_0x4779('0x40')]({},_0x986bed,_0x5b1b36['options']);var _0x2ab9c3={'where':_0x986bed['where']};return db[_0x4779('0x2e')][_0x4779('0x1e')](_0x2ab9c3)[_0x4779('0x24')](function(_0x3a3589){_0x15da6d[_0x4779('0x1e')]=_0x3a3589;if(_0x5b1b36[_0x4779('0x32')]['includeAll']){_0x986bed[_0x4779('0x42')]=[{'all':!![]}];}return db['Tag'][_0x4779('0x43')](_0x986bed);})[_0x4779('0x24')](function(_0x2e60ab){_0x15da6d['rows']=_0x2e60ab;return _0x15da6d;})[_0x4779('0x24')](respondWithFilteredResult(_0x179717,_0x986bed))[_0x4779('0x44')](handleError(_0x179717,null));};exports[_0x4779('0x45')]=function(_0x15520d,_0xbc5a86){var _0x3b0bfd={'raw':!![],'where':{'id':_0x15520d[_0x4779('0x46')]['id']}},_0x13f768={};_0x13f768[_0x4779('0x31')]=_[_0x4779('0x33')](db[_0x4779('0x2e')][_0x4779('0x2f')]);_0x13f768[_0x4779('0x32')]=_[_0x4779('0x33')](_0x15520d[_0x4779('0x32')]);_0x13f768['filters']=_['intersection'](_0x13f768[_0x4779('0x31')],_0x13f768[_0x4779('0x32')]);_0x3b0bfd[_0x4779('0x36')]=_[_0x4779('0x35')](_0x13f768[_0x4779('0x31')],qs[_0x4779('0x37')](_0x15520d[_0x4779('0x32')][_0x4779('0x37')]));_0x3b0bfd['attributes']=_0x3b0bfd[_0x4779('0x36')][_0x4779('0x38')]?_0x3b0bfd[_0x4779('0x36')]:_0x13f768[_0x4779('0x31')];if(_0x15520d[_0x4779('0x32')][_0x4779('0x47')]){_0x3b0bfd['include']=[{'all':!![]}];}_0x3b0bfd=_[_0x4779('0x40')]({},_0x3b0bfd,_0x15520d[_0x4779('0x48')]);return db[_0x4779('0x2e')][_0x4779('0x49')](_0x3b0bfd)[_0x4779('0x24')](handleEntityNotFound(_0xbc5a86,null))['then'](respondWithResult(_0xbc5a86,null))[_0x4779('0x44')](handleError(_0xbc5a86,null));};exports[_0x4779('0x4a')]=function(_0x3873d4,_0x4a1040){return db[_0x4779('0x2e')]['create'](_0x3873d4[_0x4779('0x4b')],{})[_0x4779('0x24')](function(_0x397216){var _0x4f0aaf=_0x3873d4[_0x4779('0x4c')]['get']({'plain':!![]});if(!_0x4f0aaf)throw new Error(_0x4779('0x4d'));if(_0x4f0aaf[_0x4779('0x4e')]===_0x4779('0x4c')){var _0x58e14e=_0x397216['get']({'plain':!![]});var _0x5dc79a=_0x4779('0x27');return db[_0x4779('0x4f')]['find']({'where':{'name':_0x5dc79a,'userProfileId':_0x4f0aaf[_0x4779('0x50')]},'raw':!![]})[_0x4779('0x24')](function(_0x3c7493){if(_0x3c7493&&_0x3c7493[_0x4779('0x51')]===0x0){return db[_0x4779('0x28')]['create']({'name':_0x58e14e[_0x4779('0x2c')],'resourceId':_0x58e14e['id'],'type':_0x3c7493[_0x4779('0x2c')],'sectionId':_0x3c7493['id']},{})[_0x4779('0x24')](function(){return _0x397216;});}else{return _0x397216;}})[_0x4779('0x44')](function(_0x15c180){logger[_0x4779('0x2a')](_0x4779('0x52'),_0x15c180);throw _0x15c180;});}return _0x397216;})[_0x4779('0x24')](respondWithResult(_0x4a1040,0xc9))['catch'](handleError(_0x4a1040,null));};exports['update']=function(_0x1e4bff,_0x34e951){if(_0x1e4bff[_0x4779('0x4b')]['id']){delete _0x1e4bff[_0x4779('0x4b')]['id'];}return db['Tag'][_0x4779('0x49')]({'where':{'id':_0x1e4bff[_0x4779('0x46')]['id']}})['then'](handleEntityNotFound(_0x34e951,null))[_0x4779('0x24')](saveUpdates(_0x1e4bff[_0x4779('0x4b')],null))[_0x4779('0x24')](respondWithResult(_0x34e951,null))['catch'](handleError(_0x34e951,null));};exports['destroy']=function(_0x225734,_0xe836e0){return db['Tag'][_0x4779('0x49')]({'where':{'id':_0x225734[_0x4779('0x46')]['id']}})[_0x4779('0x24')](handleEntityNotFound(_0xe836e0,null))[_0x4779('0x24')](removeEntity(_0xe836e0,null))[_0x4779('0x44')](handleError(_0xe836e0,null));};
\ No newline at end of file
+var _0xd52a=['offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','get','Tags','UserProfileResource','then','stack','name','send','index','map','Tag','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','rows','catch','params','rawAttributes','find','body','user','role','UserProfileSection','autoAssociation','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','lodash','crypto','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','status','end','json'];(function(_0x35de52,_0x19249c){var _0x257872=function(_0x36f03d){while(--_0x36f03d){_0x35de52['push'](_0x35de52['shift']());}};_0x257872(++_0x19249c);}(_0xd52a,0xca));var _0xad52=function(_0x2f1fd5,_0x5300fd){_0x2f1fd5=_0x2f1fd5-0x0;var _0x5d5642=_0xd52a[_0x2f1fd5];return _0x5d5642;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xad52('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xad52('0x1'));var rp=require(_0xad52('0x2'));var moment=require(_0xad52('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xad52('0x4'));var util=require(_0xad52('0x5'));var path=require(_0xad52('0x6'));var sox=require(_0xad52('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xad52('0x8'));var squel=require('squel');var crypto=require(_0xad52('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xad52('0xa'));var toCsv=require(_0xad52('0xb'));var querystring=require('querystring');var Papa=require(_0xad52('0xc'));var Redis=require('ioredis');var authService=require(_0xad52('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xad52('0xe'));var hardwareService=require(_0xad52('0xf'));var logger=require(_0xad52('0x10'))(_0xad52('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xad52('0x12'))['db'];function respondWithStatusCode(_0x79b1e7,_0x378b0c){_0x378b0c=_0x378b0c||0xcc;return function(_0x41331e){if(_0x41331e){return _0x79b1e7[_0xad52('0x13')](_0x378b0c);}return _0x79b1e7[_0xad52('0x14')](_0x378b0c)[_0xad52('0x15')]();};}function respondWithResult(_0xd04cde,_0x3d2df6){_0x3d2df6=_0x3d2df6||0xc8;return function(_0x5727a2){if(_0x5727a2){return _0xd04cde[_0xad52('0x14')](_0x3d2df6)[_0xad52('0x16')](_0x5727a2);}};}function respondWithFilteredResult(_0x3bc8f6,_0x42eb20){return function(_0x38be7e){if(_0x38be7e){var _0xcb6cd5=typeof _0x42eb20[_0xad52('0x17')]===_0xad52('0x18')&&typeof _0x42eb20[_0xad52('0x19')]==='undefined';var _0x4abd73=_0x38be7e[_0xad52('0x1a')];var _0x39128c=_0xcb6cd5?0x0:_0x42eb20[_0xad52('0x17')];var _0x1c19e9=_0xcb6cd5?_0x38be7e[_0xad52('0x1a')]:_0x42eb20['offset']+_0x42eb20[_0xad52('0x19')];var _0x5a71c4;if(_0x1c19e9>=_0x4abd73){_0x1c19e9=_0x4abd73;_0x5a71c4=0xc8;}else{_0x5a71c4=0xce;}_0x3bc8f6[_0xad52('0x14')](_0x5a71c4);return _0x3bc8f6[_0xad52('0x1b')](_0xad52('0x1c'),_0x39128c+'-'+_0x1c19e9+'/'+_0x4abd73)['json'](_0x38be7e);}return null;};}function patchUpdates(_0x24fb52){return function(_0x593dfd){try{jsonpatch[_0xad52('0x1d')](_0x593dfd,_0x24fb52,!![]);}catch(_0x179a64){return BPromise[_0xad52('0x1e')](_0x179a64);}return _0x593dfd[_0xad52('0x1f')]();};}function saveUpdates(_0x2c182f,_0x2f1526){return function(_0x4b5f2f){if(_0x4b5f2f){return _0x4b5f2f[_0xad52('0x20')](_0x2c182f)['then'](function(_0x1aac2e){return _0x1aac2e;});}return null;};}function removeEntity(_0x2acbb4,_0x2fa90c){return function(_0x5bce67){if(_0x5bce67){return _0x5bce67[_0xad52('0x21')]()['then'](function(){var _0x5437e3=_0x5bce67[_0xad52('0x22')]({'plain':!![]});var _0x583999=_0xad52('0x23');return db[_0xad52('0x24')]['destroy']({'where':{'type':_0x583999,'resourceId':_0x5437e3['id']}})['then'](function(){return _0x5bce67;});})[_0xad52('0x25')](function(){_0x2acbb4[_0xad52('0x14')](0xcc)[_0xad52('0x15')]();});}};}function handleEntityNotFound(_0x50431e,_0x132e94){return function(_0x5771ce){if(!_0x5771ce){_0x50431e[_0xad52('0x13')](0x194);}return _0x5771ce;};}function handleError(_0x3b5613,_0x25fd54){_0x25fd54=_0x25fd54||0x1f4;return function(_0x231bbe){logger['error'](_0x231bbe[_0xad52('0x26')]);if(_0x231bbe[_0xad52('0x27')]){delete _0x231bbe['name'];}_0x3b5613[_0xad52('0x14')](_0x25fd54)[_0xad52('0x28')](_0x231bbe);};}exports[_0xad52('0x29')]=function(_0x75dfb6,_0x32f4fe){var _0x558f90={},_0x5ccd33={},_0x4c389e={'count':0x0,'rows':[]};var _0xc2553d=_[_0xad52('0x2a')](db[_0xad52('0x2b')]['rawAttributes'],function(_0x52e3cc){return{'name':_0x52e3cc[_0xad52('0x2c')],'type':_0x52e3cc[_0xad52('0x2d')][_0xad52('0x2e')]};});_0x5ccd33[_0xad52('0x2f')]=_[_0xad52('0x2a')](_0xc2553d,_0xad52('0x27'));_0x5ccd33['query']=_[_0xad52('0x30')](_0x75dfb6[_0xad52('0x31')]);_0x5ccd33[_0xad52('0x32')]=_[_0xad52('0x33')](_0x5ccd33[_0xad52('0x2f')],_0x5ccd33[_0xad52('0x31')]);_0x558f90[_0xad52('0x34')]=_[_0xad52('0x33')](_0x5ccd33[_0xad52('0x2f')],qs[_0xad52('0x35')](_0x75dfb6[_0xad52('0x31')]['fields']));_0x558f90[_0xad52('0x34')]=_0x558f90[_0xad52('0x34')][_0xad52('0x36')]?_0x558f90[_0xad52('0x34')]:_0x5ccd33[_0xad52('0x2f')];if(!_0x75dfb6[_0xad52('0x31')]['hasOwnProperty'](_0xad52('0x37'))){_0x558f90[_0xad52('0x19')]=qs[_0xad52('0x19')](_0x75dfb6['query'][_0xad52('0x19')]);_0x558f90[_0xad52('0x17')]=qs[_0xad52('0x17')](_0x75dfb6['query'][_0xad52('0x17')]);}_0x558f90[_0xad52('0x38')]=qs[_0xad52('0x39')](_0x75dfb6['query'][_0xad52('0x39')]);_0x558f90[_0xad52('0x3a')]=qs[_0xad52('0x32')](_[_0xad52('0x3b')](_0x75dfb6[_0xad52('0x31')],_0x5ccd33[_0xad52('0x32')]),_0xc2553d);if(_0x75dfb6['query'][_0xad52('0x3c')]){_0x558f90['where']=_[_0xad52('0x3d')](_0x558f90[_0xad52('0x3a')],{'$or':_[_0xad52('0x2a')](_0xc2553d,function(_0xac8fbe){if(_0xac8fbe[_0xad52('0x2d')]!=='VIRTUAL'){var _0x12c7d8={};_0x12c7d8[_0xac8fbe[_0xad52('0x27')]]={'$like':'%'+_0x75dfb6[_0xad52('0x31')]['filter']+'%'};return _0x12c7d8;}})});}_0x558f90=_[_0xad52('0x3d')]({},_0x558f90,_0x75dfb6[_0xad52('0x3e')]);var _0x17ef03={'where':_0x558f90['where']};return db[_0xad52('0x2b')]['count'](_0x17ef03)[_0xad52('0x25')](function(_0x355381){_0x4c389e[_0xad52('0x1a')]=_0x355381;if(_0x75dfb6[_0xad52('0x31')]['includeAll']){_0x558f90[_0xad52('0x3f')]=[{'all':!![]}];}return db[_0xad52('0x2b')][_0xad52('0x40')](_0x558f90);})[_0xad52('0x25')](function(_0x3886ec){_0x4c389e[_0xad52('0x41')]=_0x3886ec;return _0x4c389e;})[_0xad52('0x25')](respondWithFilteredResult(_0x32f4fe,_0x558f90))[_0xad52('0x42')](handleError(_0x32f4fe,null));};exports['show']=function(_0x70e058,_0x52f4a2){var _0x452382={'raw':!![],'where':{'id':_0x70e058[_0xad52('0x43')]['id']}},_0x38c473={};_0x38c473[_0xad52('0x2f')]=_[_0xad52('0x30')](db[_0xad52('0x2b')][_0xad52('0x44')]);_0x38c473[_0xad52('0x31')]=_[_0xad52('0x30')](_0x70e058[_0xad52('0x31')]);_0x38c473[_0xad52('0x32')]=_[_0xad52('0x33')](_0x38c473[_0xad52('0x2f')],_0x38c473[_0xad52('0x31')]);_0x452382[_0xad52('0x34')]=_[_0xad52('0x33')](_0x38c473[_0xad52('0x2f')],qs[_0xad52('0x35')](_0x70e058[_0xad52('0x31')][_0xad52('0x35')]));_0x452382['attributes']=_0x452382[_0xad52('0x34')][_0xad52('0x36')]?_0x452382[_0xad52('0x34')]:_0x38c473['model'];if(_0x70e058[_0xad52('0x31')]['includeAll']){_0x452382[_0xad52('0x3f')]=[{'all':!![]}];}_0x452382=_['merge']({},_0x452382,_0x70e058['options']);return db[_0xad52('0x2b')][_0xad52('0x45')](_0x452382)[_0xad52('0x25')](handleEntityNotFound(_0x52f4a2,null))[_0xad52('0x25')](respondWithResult(_0x52f4a2,null))['catch'](handleError(_0x52f4a2,null));};exports['create']=function(_0x254416,_0x5dede4){return db[_0xad52('0x2b')]['create'](_0x254416[_0xad52('0x46')],{})[_0xad52('0x25')](function(_0x8168f7){var _0x15d989=_0x254416[_0xad52('0x47')][_0xad52('0x22')]({'plain':!![]});if(!_0x15d989)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x15d989[_0xad52('0x48')]===_0xad52('0x47')){var _0x44c401=_0x8168f7[_0xad52('0x22')]({'plain':!![]});var _0x4ab950=_0xad52('0x23');return db[_0xad52('0x49')][_0xad52('0x45')]({'where':{'name':_0x4ab950,'userProfileId':_0x15d989['userProfileId']},'raw':!![]})[_0xad52('0x25')](function(_0x354442){if(_0x354442&&_0x354442[_0xad52('0x4a')]===0x0){return db[_0xad52('0x24')]['create']({'name':_0x44c401[_0xad52('0x27')],'resourceId':_0x44c401['id'],'type':_0x354442[_0xad52('0x27')],'sectionId':_0x354442['id']},{})[_0xad52('0x25')](function(){return _0x8168f7;});}else{return _0x8168f7;}})[_0xad52('0x42')](function(_0x197fac){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x197fac);throw _0x197fac;});}return _0x8168f7;})[_0xad52('0x25')](respondWithResult(_0x5dede4,0xc9))[_0xad52('0x42')](handleError(_0x5dede4,null));};exports[_0xad52('0x20')]=function(_0x93114f,_0x2df920){if(_0x93114f['body']['id']){delete _0x93114f[_0xad52('0x46')]['id'];}return db['Tag'][_0xad52('0x45')]({'where':{'id':_0x93114f[_0xad52('0x43')]['id']}})[_0xad52('0x25')](handleEntityNotFound(_0x2df920,null))['then'](saveUpdates(_0x93114f[_0xad52('0x46')],null))['then'](respondWithResult(_0x2df920,null))[_0xad52('0x42')](handleError(_0x2df920,null));};exports[_0xad52('0x21')]=function(_0xc95e44,_0x506889){return db['Tag'][_0xad52('0x45')]({'where':{'id':_0xc95e44['params']['id']}})[_0xad52('0x25')](handleEntityNotFound(_0x506889,null))[_0xad52('0x25')](removeEntity(_0x506889,null))['catch'](handleError(_0x506889,null));};
\ No newline at end of file
index 28bfd1d..4ec1a52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a71=['request-promise','rimraf','../../config/environment','./tag.attributes','exports','define','tools_tags','util','api','moment','bluebird'];(function(_0x1f3da6,_0x525a2f){var _0x335a3b=function(_0x16ebd5){while(--_0x16ebd5){_0x1f3da6['push'](_0x1f3da6['shift']());}};_0x335a3b(++_0x525a2f);}(_0x9a71,0x80));var _0x19a7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9a71[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x19a7('0x0'));var logger=require('../../config/logger')(_0x19a7('0x1'));var moment=require(_0x19a7('0x2'));var BPromise=require(_0x19a7('0x3'));var rp=require(_0x19a7('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x19a7('0x5'));var config=require(_0x19a7('0x6'));var attributes=require(_0x19a7('0x7'));module[_0x19a7('0x8')]=function(_0xef1757,_0x24a98b){return _0xef1757[_0x19a7('0x9')]('Tag',attributes,{'tableName':_0x19a7('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3d15=['rimraf','../../config/environment','./tag.attributes','Tag','tools_tags','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0x3d15,0x127));var _0x53d1=function(_0x16803d,_0x2d35fa){_0x16803d=_0x16803d-0x0;var _0x47bd54=_0x3d15[_0x16803d];return _0x47bd54;};'use strict';var _=require('lodash');var util=require(_0x53d1('0x0'));var logger=require(_0x53d1('0x1'))('api');var moment=require(_0x53d1('0x2'));var BPromise=require(_0x53d1('0x3'));var rp=require(_0x53d1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x53d1('0x5'));var config=require(_0x53d1('0x6'));var attributes=require(_0x53d1('0x7'));module['exports']=function(_0x3b3e81,_0x74eec6){return _0x3b3e81['define'](_0x53d1('0x8'),attributes,{'tableName':_0x53d1('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e8678c3..e0c6fc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf72b=['../../config/environment','jayson/promise','client','request','Tag,\x20%s,\x20%s','request\x20sent','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x6d97b2,_0x3c1332){var _0x514465=function(_0x13c3ce){while(--_0x13c3ce){_0x6d97b2['push'](_0x6d97b2['shift']());}};_0x514465(++_0x3c1332);}(_0xf72b,0x1d9));var _0xbf72=function(_0x2f759d,_0x23b2cb){_0x2f759d=_0x2f759d-0x0;var _0x3464f9=_0xf72b[_0x2f759d];return _0x3464f9;};'use strict';var _=require(_0xbf72('0x0'));var util=require('util');var moment=require(_0xbf72('0x1'));var BPromise=require('bluebird');var rs=require(_0xbf72('0x2'));var fs=require('fs');var Redis=require(_0xbf72('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xbf72('0x4'));var logger=require(_0xbf72('0x5'))(_0xbf72('0x6'));var config=require(_0xbf72('0x7'));var jayson=require(_0xbf72('0x8'));var client=jayson[_0xbf72('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41c11d,_0xc0842b,_0x119807){return new BPromise(function(_0xd0402c,_0xdd6177){return client[_0xbf72('0xa')](_0x41c11d,_0x119807)['then'](function(_0x455891){logger['info'](_0xbf72('0xb'),_0xc0842b,_0xbf72('0xc'));logger['debug'](_0xbf72('0xd'),_0xc0842b,_0xbf72('0xc'),JSON[_0xbf72('0xe')](_0x455891));if(_0x455891[_0xbf72('0xf')]){if(_0x455891[_0xbf72('0xf')][_0xbf72('0x10')]===0x1f4){logger[_0xbf72('0xf')](_0xbf72('0xb'),_0xc0842b,_0x455891['error'][_0xbf72('0x11')]);return _0xdd6177(_0x455891[_0xbf72('0xf')][_0xbf72('0x11')]);}logger['error'](_0xbf72('0xb'),_0xc0842b,_0x455891['error']['message']);return _0xd0402c(_0x455891['error'][_0xbf72('0x11')]);}else{logger[_0xbf72('0x12')](_0xbf72('0xb'),_0xc0842b,_0xbf72('0xc'));_0xd0402c(_0x455891[_0xbf72('0x13')][_0xbf72('0x11')]);}})['catch'](function(_0x266ce2){logger[_0xbf72('0xf')](_0xbf72('0xb'),_0xc0842b,_0x266ce2);_0xdd6177(_0x266ce2);});});}
\ No newline at end of file
+var _0xac9d=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','info','Tag,\x20%s,\x20%s','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment'];(function(_0x15f299,_0x49e714){var _0x573537=function(_0x30d5d6){while(--_0x30d5d6){_0x15f299['push'](_0x15f299['shift']());}};_0x573537(++_0x49e714);}(_0xac9d,0x14d));var _0xdac9=function(_0x2330cf,_0x5add9f){_0x2330cf=_0x2330cf-0x0;var _0x5e230f=_0xac9d[_0x2330cf];return _0x5e230f;};'use strict';var _=require(_0xdac9('0x0'));var util=require(_0xdac9('0x1'));var moment=require(_0xdac9('0x2'));var BPromise=require(_0xdac9('0x3'));var rs=require(_0xdac9('0x4'));var fs=require('fs');var Redis=require(_0xdac9('0x5'));var db=require(_0xdac9('0x6'))['db'];var utils=require(_0xdac9('0x7'));var logger=require('../../config/logger')(_0xdac9('0x8'));var config=require('../../config/environment');var jayson=require(_0xdac9('0x9'));var client=jayson[_0xdac9('0xa')][_0xdac9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x776b6c,_0x1c78c5,_0x39f560){return new BPromise(function(_0x5531af,_0x2b1d6f){return client['request'](_0x776b6c,_0x39f560)[_0xdac9('0xc')](function(_0x3a013b){logger[_0xdac9('0xd')](_0xdac9('0xe'),_0x1c78c5,_0xdac9('0xf'));logger[_0xdac9('0x10')](_0xdac9('0x11'),_0x1c78c5,_0xdac9('0xf'),JSON[_0xdac9('0x12')](_0x3a013b));if(_0x3a013b['error']){if(_0x3a013b[_0xdac9('0x13')][_0xdac9('0x14')]===0x1f4){logger['error'](_0xdac9('0xe'),_0x1c78c5,_0x3a013b[_0xdac9('0x13')][_0xdac9('0x15')]);return _0x2b1d6f(_0x3a013b['error'][_0xdac9('0x15')]);}logger[_0xdac9('0x13')](_0xdac9('0xe'),_0x1c78c5,_0x3a013b['error']['message']);return _0x5531af(_0x3a013b[_0xdac9('0x13')][_0xdac9('0x15')]);}else{logger['info'](_0xdac9('0xe'),_0x1c78c5,_0xdac9('0xf'));_0x5531af(_0x3a013b[_0xdac9('0x16')][_0xdac9('0x15')]);}})[_0xdac9('0x17')](function(_0x393acc){logger[_0xdac9('0x13')](_0xdac9('0xe'),_0x1c78c5,_0x393acc);_0x2b1d6f(_0x393acc);});});}
\ No newline at end of file
index 63be30c..9ffe220 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0xa9e0[_0x173d7e];return _0x2220d6;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'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 324ea07..2953926 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['STRING','sequelize','exports'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0xe706,0xa3));var _0x6e70=function(_0x1d895d,_0x3e5c93){_0x1d895d=_0x1d895d-0x0;var _0x2dae23=_0xe706[_0x1d895d];return _0x2dae23;};'use strict';var Sequelize=require(_0x6e70('0x0'));module[_0x6e70('0x1')]={'name':{'type':Sequelize[_0x6e70('0x2')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize[_0x6e70('0x2')]}};
\ No newline at end of file
+var _0x0713=['STRING','name'];(function(_0x52c1d4,_0x2d5e63){var _0x4f08be=function(_0x3d541f){while(--_0x3d541f){_0x52c1d4['push'](_0x52c1d4['shift']());}};_0x4f08be(++_0x2d5e63);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x3071('0x0')],'allowNull':![],'unique':_0x3071('0x1')},'description':{'type':Sequelize[_0x3071('0x0')]}};
\ No newline at end of file
index f28514e..8ec9a1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27ce=['Whatsapp','through','penalty','QueueId','User','findOrCreate','emit','Queue:save','online','isNil','interface','format','voicePause','TeamVoiceQueue','all','TeamVoicePrefix','UserVoicePrefix','upsert','VoicePrefixId','spread','removeAgents','Queue:remove','UserVoiceQueueRt','nolimit','getAgents','rimraf','zip-dir','request-promise','moment','mustache','sox','squel','crypto','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','defaults','redis','./team.socket','sendStatus','status','end','json','offset','undefined','limit','count','reject','update','then','error','stack','name','send','Team','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge','map','VIRTUAL','filter','options','include','findAll','rows','includeAll','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','Teams','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','destroy','transaction','Sequelize','QueryTypes','SELECT','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','sequelize','UserVoiceQueue','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','MailQueueId','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','getQueues','channel','isValidChannel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queue','Queues','addQueues','findOne','ids','removeQueues','addAgents','isArray','Voice','Chat','Mail','Sms','Fax','Openchannel'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x27ce,0x137));var _0xe27c=function(_0x377696,_0x251061){_0x377696=_0x377696-0x0;var _0x43bb54=_0x27ce[_0x377696];return _0x43bb54;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe27c('0x0'));var zipdir=require(_0xe27c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe27c('0x2'));var moment=require(_0xe27c('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xe27c('0x4'));var util=require('util');var path=require('path');var sox=require(_0xe27c('0x5'));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(_0xe27c('0x6'));var crypto=require(_0xe27c('0x7'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xe27c('0x8'));var Redis=require(_0xe27c('0x9'));var authService=require(_0xe27c('0xa'));var qs=require(_0xe27c('0xb'));var as=require(_0xe27c('0xc'));var hardwareService=require(_0xe27c('0xd'));var logger=require('../../config/logger')(_0xe27c('0xe'));var utils=require('../../config/utils');var config=require(_0xe27c('0xf'));var licenseUtil=require('../../config/license/util');var db=require(_0xe27c('0x10'))['db'];config['redis']=_[_0xe27c('0x11')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe27c('0x12')]));require(_0xe27c('0x13'))['register'](socket);function respondWithStatusCode(_0x55d872,_0x54b4f0){_0x54b4f0=_0x54b4f0||0xcc;return function(_0x4acd45){if(_0x4acd45){return _0x55d872[_0xe27c('0x14')](_0x54b4f0);}return _0x55d872[_0xe27c('0x15')](_0x54b4f0)[_0xe27c('0x16')]();};}function respondWithResult(_0x90ee76,_0x180c7e){_0x180c7e=_0x180c7e||0xc8;return function(_0x70d940){if(_0x70d940){return _0x90ee76[_0xe27c('0x15')](_0x180c7e)[_0xe27c('0x17')](_0x70d940);}};}function respondWithFilteredResult(_0x2ec631,_0x4e322e){return function(_0x29f3d8){if(_0x29f3d8){var _0x546610=typeof _0x4e322e[_0xe27c('0x18')]===_0xe27c('0x19')&&typeof _0x4e322e[_0xe27c('0x1a')]===_0xe27c('0x19');var _0x1748d2=_0x29f3d8['count'];var _0xf7c2ac=_0x546610?0x0:_0x4e322e[_0xe27c('0x18')];var _0xb42252=_0x546610?_0x29f3d8[_0xe27c('0x1b')]:_0x4e322e[_0xe27c('0x18')]+_0x4e322e['limit'];var _0x5aaf31;if(_0xb42252>=_0x1748d2){_0xb42252=_0x1748d2;_0x5aaf31=0xc8;}else{_0x5aaf31=0xce;}_0x2ec631[_0xe27c('0x15')](_0x5aaf31);return _0x2ec631['set']('Content-Range',_0xf7c2ac+'-'+_0xb42252+'/'+_0x1748d2)[_0xe27c('0x17')](_0x29f3d8);}return null;};}function patchUpdates(_0x46dcf0){return function(_0x3abad1){try{jsonpatch['apply'](_0x3abad1,_0x46dcf0,!![]);}catch(_0x42ca39){return BPromise[_0xe27c('0x1c')](_0x42ca39);}return _0x3abad1['save']();};}function saveUpdates(_0x2168a6,_0x341473){return function(_0x596e64){if(_0x596e64){return _0x596e64[_0xe27c('0x1d')](_0x2168a6)[_0xe27c('0x1e')](function(_0x5255a3){return _0x5255a3;});}return null;};}function handleEntityNotFound(_0x5d14ab,_0x3b76b7){return function(_0x11fabd){if(!_0x11fabd){_0x5d14ab['sendStatus'](0x194);}return _0x11fabd;};}function handleError(_0x5bf52e,_0xc24e5d){_0xc24e5d=_0xc24e5d||0x1f4;return function(_0x365d9c){logger[_0xe27c('0x1f')](_0x365d9c[_0xe27c('0x20')]);if(_0x365d9c['name']){delete _0x365d9c[_0xe27c('0x21')];}_0x5bf52e['status'](_0xc24e5d)[_0xe27c('0x22')](_0x365d9c);};}exports['index']=function(_0x4b535a,_0x26043f){var _0x17b03c={},_0x5f5d6a={},_0x2fbe0e={'count':0x0,'rows':[]};var _0x1a360c=_['map'](db[_0xe27c('0x23')][_0xe27c('0x24')],function(_0x586c62){return{'name':_0x586c62[_0xe27c('0x25')],'type':_0x586c62[_0xe27c('0x26')]['key']};});_0x5f5d6a[_0xe27c('0x27')]=_['map'](_0x1a360c,'name');_0x5f5d6a[_0xe27c('0x28')]=_[_0xe27c('0x29')](_0x4b535a[_0xe27c('0x28')]);_0x5f5d6a[_0xe27c('0x2a')]=_['intersection'](_0x5f5d6a[_0xe27c('0x27')],_0x5f5d6a['query']);_0x17b03c['attributes']=_[_0xe27c('0x2b')](_0x5f5d6a[_0xe27c('0x27')],qs[_0xe27c('0x2c')](_0x4b535a[_0xe27c('0x28')][_0xe27c('0x2c')]));_0x17b03c[_0xe27c('0x2d')]=_0x17b03c[_0xe27c('0x2d')][_0xe27c('0x2e')]?_0x17b03c['attributes']:_0x5f5d6a[_0xe27c('0x27')];if(!_0x4b535a[_0xe27c('0x28')][_0xe27c('0x2f')]('nolimit')){_0x17b03c['limit']=qs[_0xe27c('0x1a')](_0x4b535a[_0xe27c('0x28')][_0xe27c('0x1a')]);_0x17b03c['offset']=qs[_0xe27c('0x18')](_0x4b535a[_0xe27c('0x28')][_0xe27c('0x18')]);}_0x17b03c[_0xe27c('0x30')]=qs[_0xe27c('0x31')](_0x4b535a[_0xe27c('0x28')]['sort']);_0x17b03c[_0xe27c('0x32')]=qs[_0xe27c('0x2a')](_[_0xe27c('0x33')](_0x4b535a[_0xe27c('0x28')],_0x5f5d6a[_0xe27c('0x2a')]),_0x1a360c);if(_0x4b535a[_0xe27c('0x28')]['filter']){_0x17b03c['where']=_[_0xe27c('0x34')](_0x17b03c[_0xe27c('0x32')],{'$or':_[_0xe27c('0x35')](_0x1a360c,function(_0x94e139){if(_0x94e139[_0xe27c('0x26')]!==_0xe27c('0x36')){var _0x3b75b7={};_0x3b75b7[_0x94e139[_0xe27c('0x21')]]={'$like':'%'+_0x4b535a['query'][_0xe27c('0x37')]+'%'};return _0x3b75b7;}})});}_0x17b03c=_[_0xe27c('0x34')]({},_0x17b03c,_0x4b535a[_0xe27c('0x38')]);var _0x251b59={'where':_0x17b03c[_0xe27c('0x32')]};return db[_0xe27c('0x23')][_0xe27c('0x1b')](_0x251b59)[_0xe27c('0x1e')](function(_0x32c12c){_0x2fbe0e['count']=_0x32c12c;if(_0x4b535a[_0xe27c('0x28')]['includeAll']){_0x17b03c[_0xe27c('0x39')]=[{'all':!![]}];}return db[_0xe27c('0x23')][_0xe27c('0x3a')](_0x17b03c);})[_0xe27c('0x1e')](function(_0x4afc79){_0x2fbe0e[_0xe27c('0x3b')]=_0x4afc79;return _0x2fbe0e;})['then'](respondWithFilteredResult(_0x26043f,_0x17b03c))['catch'](handleError(_0x26043f,null));};exports['show']=function(_0x15aa68,_0x1bab72){var _0xf7134a={'raw':![],'where':{'id':_0x15aa68['params']['id']}},_0x205a64={};_0x205a64['model']=_[_0xe27c('0x29')](db[_0xe27c('0x23')]['rawAttributes']);_0x205a64[_0xe27c('0x28')]=_[_0xe27c('0x29')](_0x15aa68['query']);_0x205a64[_0xe27c('0x2a')]=_[_0xe27c('0x2b')](_0x205a64[_0xe27c('0x27')],_0x205a64[_0xe27c('0x28')]);_0xf7134a['attributes']=_['intersection'](_0x205a64[_0xe27c('0x27')],qs[_0xe27c('0x2c')](_0x15aa68[_0xe27c('0x28')][_0xe27c('0x2c')]));_0xf7134a[_0xe27c('0x2d')]=_0xf7134a['attributes'][_0xe27c('0x2e')]?_0xf7134a[_0xe27c('0x2d')]:_0x205a64['model'];if(_0x15aa68[_0xe27c('0x28')][_0xe27c('0x3c')]){_0xf7134a['include']=[{'all':!![]}];}_0xf7134a=_[_0xe27c('0x34')]({},_0xf7134a,_0x15aa68[_0xe27c('0x38')]);return db[_0xe27c('0x23')][_0xe27c('0x3d')](_0xf7134a)[_0xe27c('0x1e')](handleEntityNotFound(_0x1bab72,null))[_0xe27c('0x1e')](respondWithResult(_0x1bab72,null))[_0xe27c('0x3e')](handleError(_0x1bab72,null));};exports[_0xe27c('0x3f')]=function(_0x5f5338,_0x2d93ba){return db['Team']['create'](_0x5f5338['body'],{})[_0xe27c('0x1e')](function(_0x1b449a){var _0x26699b=_0x5f5338[_0xe27c('0x40')][_0xe27c('0x41')]({'plain':!![]});if(!_0x26699b)throw new Error(_0xe27c('0x42'));if(_0x26699b['role']===_0xe27c('0x40')){var _0x5bda13=_0x1b449a[_0xe27c('0x41')]({'plain':!![]});var _0x116eda=_0xe27c('0x43');return db[_0xe27c('0x44')][_0xe27c('0x3d')]({'where':{'name':_0x116eda,'userProfileId':_0x26699b['userProfileId']},'raw':!![]})['then'](function(_0x28d35e){if(_0x28d35e&&_0x28d35e['autoAssociation']===0x0){return db[_0xe27c('0x45')][_0xe27c('0x3f')]({'name':_0x5bda13[_0xe27c('0x21')],'resourceId':_0x5bda13['id'],'type':_0x28d35e[_0xe27c('0x21')],'sectionId':_0x28d35e['id']},{})[_0xe27c('0x1e')](function(){return _0x1b449a;});}else{return _0x1b449a;}})[_0xe27c('0x3e')](function(_0x598cb1){logger['error'](_0xe27c('0x46'),_0x598cb1);throw _0x598cb1;});}return _0x1b449a;})[_0xe27c('0x1e')](respondWithResult(_0x2d93ba,0xc9))[_0xe27c('0x3e')](handleError(_0x2d93ba,null));};exports[_0xe27c('0x1d')]=function(_0x2e0837,_0x19c21a){if(_0x2e0837[_0xe27c('0x47')]['id']){delete _0x2e0837[_0xe27c('0x47')]['id'];}return db[_0xe27c('0x23')][_0xe27c('0x3d')]({'where':{'id':_0x2e0837[_0xe27c('0x48')]['id']}})[_0xe27c('0x1e')](handleEntityNotFound(_0x19c21a,null))[_0xe27c('0x1e')](saveUpdates(_0x2e0837[_0xe27c('0x47')],null))[_0xe27c('0x1e')](respondWithResult(_0x19c21a,null))['catch'](handleError(_0x19c21a,null));};exports[_0xe27c('0x49')]=function(_0x3734a8,_0x32c829){var _0x36814e=_0x3734a8['params']['id'];var _0x5eda3e=[];return db['sequelize'][_0xe27c('0x4a')](function(_0x13499e){var _0x27000e='SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20'+_0x36814e;return db['sequelize']['query'](_0x27000e,{'type':db[_0xe27c('0x4b')][_0xe27c('0x4c')][_0xe27c('0x4d')],'raw':!![],'transaction':_0x13499e})[_0xe27c('0x1e')](function(_0x1fc838){_0x5eda3e=_[_0xe27c('0x35')](_0x1fc838,function(_0x16189e){return Number(_0x16189e['UserId']);});})[_0xe27c('0x1e')](function(){var _0x46d912=_0xe27c('0x4e')+_0x36814e;return db[_0xe27c('0x4f')][_0xe27c('0x28')](_0x46d912,{'type':db[_0xe27c('0x4b')]['QueryTypes'][_0xe27c('0x4d')],'raw':!![],'transaction':_0x13499e});})['then'](function(_0x4e19ff){var _0x43d57f=_[_0xe27c('0x35')](_0x4e19ff,function(_0x28442f){return Number(_0x28442f['VoiceQueueId']);});return db[_0xe27c('0x50')]['destroy']({'where':{'UserId':{'$in':_0x5eda3e},'VoiceQueueId':{'$in':_0x43d57f}},'transaction':_0x13499e});})[_0xe27c('0x1e')](function(){var _0x5e2683=_0xe27c('0x51')+_0x36814e;return db[_0xe27c('0x4f')][_0xe27c('0x28')](_0x5e2683,{'type':db[_0xe27c('0x4b')][_0xe27c('0x4c')][_0xe27c('0x4d')],'raw':!![],'transaction':_0x13499e});})[_0xe27c('0x1e')](function(_0x1323ff){var _0x32a23f=_[_0xe27c('0x35')](_0x1323ff,function(_0x2f8ab3){return Number(_0x2f8ab3[_0xe27c('0x52')]);});return db[_0xe27c('0x53')][_0xe27c('0x49')]({'where':{'UserId':{'$in':_0x5eda3e},'MailQueueId':{'$in':_0x32a23f}},'transaction':_0x13499e});})[_0xe27c('0x1e')](function(){var _0x1e3939=_0xe27c('0x54')+_0x36814e;return db['sequelize'][_0xe27c('0x28')](_0x1e3939,{'type':db[_0xe27c('0x4b')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x13499e});})[_0xe27c('0x1e')](function(_0x5640b3){var _0x169395=_[_0xe27c('0x35')](_0x5640b3,function(_0x423099){return Number(_0x423099['SmsQueueId']);});return db[_0xe27c('0x55')][_0xe27c('0x49')]({'where':{'UserId':{'$in':_0x5eda3e},'SmsQueueId':{'$in':_0x169395}},'transaction':_0x13499e});})[_0xe27c('0x1e')](function(){var _0x356047=_0xe27c('0x56')+_0x36814e;return db[_0xe27c('0x4f')]['query'](_0x356047,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x13499e});})[_0xe27c('0x1e')](function(_0x1c5e4a){var _0x155f62=_[_0xe27c('0x35')](_0x1c5e4a,function(_0x2e9129){return Number(_0x2e9129['ChatQueueId']);});return db[_0xe27c('0x57')]['destroy']({'where':{'UserId':{'$in':_0x5eda3e},'ChatQueueId':{'$in':_0x155f62}},'transaction':_0x13499e});})['then'](function(){var _0x3ced30=_0xe27c('0x58')+_0x36814e;return db[_0xe27c('0x4f')][_0xe27c('0x28')](_0x3ced30,{'type':db['Sequelize']['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x13499e});})[_0xe27c('0x1e')](function(_0x281d31){var _0x116e8d=_[_0xe27c('0x35')](_0x281d31,function(_0xad77f1){return Number(_0xad77f1[_0xe27c('0x59')]);});return db[_0xe27c('0x5a')][_0xe27c('0x49')]({'where':{'UserId':{'$in':_0x5eda3e},'FaxQueueId':{'$in':_0x116e8d}},'transaction':_0x13499e});})[_0xe27c('0x1e')](function(){var _0x2e8e44=_0xe27c('0x5b')+_0x36814e;return db['sequelize'][_0xe27c('0x28')](_0x2e8e44,{'type':db[_0xe27c('0x4b')][_0xe27c('0x4c')][_0xe27c('0x4d')],'raw':!![],'transaction':_0x13499e});})[_0xe27c('0x1e')](function(_0x382305){var _0x44f085=_['map'](_0x382305,function(_0x5bcba7){return Number(_0x5bcba7[_0xe27c('0x5c')]);});return db[_0xe27c('0x5d')]['destroy']({'where':{'UserId':{'$in':_0x5eda3e},'OpenchannelQueueId':{'$in':_0x44f085}},'transaction':_0x13499e});})[_0xe27c('0x1e')](function(){var _0x1cc47c=_0xe27c('0x5e')+_0x36814e;return db[_0xe27c('0x4f')]['query'](_0x1cc47c,{'type':db[_0xe27c('0x4b')][_0xe27c('0x4c')][_0xe27c('0x4d')],'raw':!![],'transaction':_0x13499e});})[_0xe27c('0x1e')](function(_0x45cfee){var _0x585523=_[_0xe27c('0x35')](_0x45cfee,function(_0x1d9e27){return Number(_0x1d9e27[_0xe27c('0x5f')]);});return db[_0xe27c('0x60')]['destroy']({'where':{'UserId':{'$in':_0x5eda3e},'WhatsappQueueId':{'$in':_0x585523}},'transaction':_0x13499e});})[_0xe27c('0x1e')](function(){return db['TeamVoicePrefix'][_0xe27c('0x3d')]({'where':{'TeamId':_0x36814e}});})['then'](function(_0x31d8cc){if(_0x31d8cc===null){return;}return db['UserVoicePrefix'][_0xe27c('0x49')]({'where':{'UserId':{'$in':_0x5eda3e},'VoicePrefixId':_0x31d8cc['VoicePrefixId']},'transaction':_0x13499e});})[_0xe27c('0x1e')](function(){return db[_0xe27c('0x23')][_0xe27c('0x49')]({'where':{'id':_0x36814e},'cascade':!![],'transaction':_0x13499e});})[_0xe27c('0x1e')](function(_0x4eaac9){if(_0x4eaac9===0x0){_0x32c829[_0xe27c('0x14')](0x194);}else{return db[_0xe27c('0x45')][_0xe27c('0x49')]({'where':{'type':_0xe27c('0x43'),'resourceId':_0x36814e},'cascade':!![],'transaction':_0x13499e})[_0xe27c('0x1e')](function(){_0x32c829[_0xe27c('0x15')](0xcc)[_0xe27c('0x16')]();});}})[_0xe27c('0x3e')](function(_0x46f385){_0x32c829[_0xe27c('0x15')](0x1f4)[_0xe27c('0x22')](_0x46f385);});});};exports[_0xe27c('0x61')]=function(_0x5f3ac8,_0x440850,_0x2959e1){return db[_0xe27c('0x23')]['findOne']({'where':{'id':_0x5f3ac8[_0xe27c('0x48')]['id']}})[_0xe27c('0x1e')](handleEntityNotFound(_0x440850,null))[_0xe27c('0x1e')](function(_0xb8c7d7){if(!_0x5f3ac8[_0xe27c('0x28')][_0xe27c('0x62')]||!utils[_0xe27c('0x63')](_0x5f3ac8[_0xe27c('0x28')]['channel'])){throw new db[(_0xe27c('0x4b'))][(_0xe27c('0x64'))](_0xe27c('0x65'));}var _0x56285b={};var _0x421265={};_0x421265[_0xe27c('0x27')]=_['keys'](db[_[_0xe27c('0x66')](_0x5f3ac8[_0xe27c('0x28')][_0xe27c('0x62')][_0xe27c('0x67')]())+_0xe27c('0x68')][_0xe27c('0x24')]);_0x421265['query']=_[_0xe27c('0x29')](_0x5f3ac8[_0xe27c('0x28')]);_0x421265[_0xe27c('0x2a')]=_[_0xe27c('0x2b')](_0x421265[_0xe27c('0x27')],_0x421265[_0xe27c('0x28')]);_0x56285b[_0xe27c('0x2d')]=_['intersection'](_0x421265['model'],qs[_0xe27c('0x2c')](_0x5f3ac8[_0xe27c('0x28')][_0xe27c('0x2c')]));_0x56285b[_0xe27c('0x2d')]=_0x56285b[_0xe27c('0x2d')][_0xe27c('0x2e')]?_0x56285b[_0xe27c('0x2d')]:_0x421265[_0xe27c('0x27')];_0x56285b[_0xe27c('0x1a')]=qs['limit'](_0x5f3ac8[_0xe27c('0x28')][_0xe27c('0x1a')]);_0x56285b[_0xe27c('0x18')]=qs[_0xe27c('0x18')](_0x5f3ac8[_0xe27c('0x28')]['offset']);_0x56285b[_0xe27c('0x30')]=qs[_0xe27c('0x31')](_0x5f3ac8['query'][_0xe27c('0x31')]);_0x56285b[_0xe27c('0x32')]=qs['filters'](_[_0xe27c('0x33')](_0x5f3ac8[_0xe27c('0x28')],_0x421265[_0xe27c('0x2a')]));_0x56285b=_['merge']({},_0x56285b,_0x5f3ac8['options']);return _0xb8c7d7[_0xe27c('0x41')+_[_0xe27c('0x66')](_0x5f3ac8[_0xe27c('0x28')][_0xe27c('0x62')][_0xe27c('0x67')]())+_0xe27c('0x69')](_0x56285b);})[_0xe27c('0x1e')](respondWithResult(_0x440850,null))[_0xe27c('0x3e')](handleError(_0x440850,null));};exports[_0xe27c('0x6a')]=function(_0x169573,_0x394105,_0x1cca0b){return db[_0xe27c('0x23')][_0xe27c('0x6b')]({'where':{'id':_0x169573[_0xe27c('0x48')]['id']}})[_0xe27c('0x1e')](function(_0x33215c){if(_0x33215c){if(!_0x169573[_0xe27c('0x47')][_0xe27c('0x62')]||!utils[_0xe27c('0x63')](_0x169573[_0xe27c('0x47')][_0xe27c('0x62')])){throw new db['Sequelize']['ValidationError'](_0xe27c('0x65'));}return _0x33215c['add'+_['capitalize'](_0x169573[_0xe27c('0x47')]['channel'][_0xe27c('0x67')]())+_0xe27c('0x69')](_0x169573['body'][_0xe27c('0x6c')]);}return null;})[_0xe27c('0x1e')](handleEntityNotFound(_0x394105,null))[_0xe27c('0x1e')](respondWithStatusCode(_0x394105,null))[_0xe27c('0x3e')](handleError(_0x394105,null));};exports[_0xe27c('0x6d')]=function(_0x22b955,_0x28d9c8,_0x468e26){return db['Team'][_0xe27c('0x6b')]({'where':{'id':_0x22b955[_0xe27c('0x48')]['id']}})[_0xe27c('0x1e')](function(_0x466af0){if(_0x466af0){if(!_0x22b955['query']['channel']||!utils[_0xe27c('0x63')](_0x22b955[_0xe27c('0x28')][_0xe27c('0x62')])){throw new db[(_0xe27c('0x4b'))][(_0xe27c('0x64'))](_0xe27c('0x65'));}return _0x466af0['remove'+_[_0xe27c('0x66')](_0x22b955[_0xe27c('0x28')][_0xe27c('0x62')][_0xe27c('0x67')]())+_0xe27c('0x69')](_0x22b955[_0xe27c('0x28')][_0xe27c('0x6c')]);}return null;})[_0xe27c('0x1e')](handleEntityNotFound(_0x28d9c8,null))[_0xe27c('0x1e')](respondWithStatusCode(_0x28d9c8,null))[_0xe27c('0x3e')](handleError(_0x28d9c8,null));};exports[_0xe27c('0x6e')]=function(_0x16cb4d,_0x5e4897){var _0x294bca=_[_0xe27c('0x6f')](_0x16cb4d[_0xe27c('0x47')][_0xe27c('0x6c')])?_0x16cb4d[_0xe27c('0x47')][_0xe27c('0x6c')]:[_0x16cb4d[_0xe27c('0x47')][_0xe27c('0x6c')]];var _0x1f253f=_0x16cb4d['params']['id'];return db[_0xe27c('0x23')][_0xe27c('0x3d')]({'where':{'id':_0x1f253f}})[_0xe27c('0x1e')](handleEntityNotFound(_0x5e4897,null))[_0xe27c('0x1e')](function(_0x3faa76){if(_0x3faa76){var _0x287f88=[_0xe27c('0x70'),_0xe27c('0x71'),_0xe27c('0x72'),_0xe27c('0x73'),_0xe27c('0x74'),_0xe27c('0x75'),_0xe27c('0x76')];return db[_0xe27c('0x4f')][_0xe27c('0x4a')](function(_0x56a764){var _0x5edca3=_[_0xe27c('0x35')](_0x287f88,function(_0x268187){var _0x561aa8={'attributes':['id',_0xe27c('0x21')]};if(_0x268187===_0xe27c('0x70')){_0x561aa8[_0xe27c('0x77')]={'attributes':[_0xe27c('0x78')]};}return _0x3faa76['get'+_0x268187+_0xe27c('0x69')](_0x561aa8)[_0xe27c('0x1e')](function(_0x69f1f1){var _0x3298db=_[_0xe27c('0x35')](_0x69f1f1,function(_0x55cea2){var _0x1be15c=_[_0xe27c('0x35')](_0x294bca,function(_0x51843b){var _0x14caae={'where':{'UserId':_0x51843b,[_0x268187+_0xe27c('0x79')]:_0x55cea2['id']},'transaction':_0x56a764};if(_0x268187===_0xe27c('0x70')){_0x14caae['defaults']={'penalty':_0x55cea2['TeamVoiceQueue'][_0xe27c('0x78')]};}return db[_0xe27c('0x7a')+_0x268187+_0xe27c('0x68')][_0xe27c('0x7b')](_0x14caae)[_0xe27c('0x1e')](function(){socket[_0xe27c('0x7c')](_0xe27c('0x40')+_0x268187+_0xe27c('0x7d'),{'UserId':_0x51843b,[_0x268187+_0xe27c('0x79')]:_0x55cea2['id']});if(_0x268187!==_0xe27c('0x70')){return;}return db[_0xe27c('0x7a')][_0xe27c('0x3a')]({'where':{'id':_0x294bca,'online':0x1},'attributes':['id','name',_0xe27c('0x7e'),'voicePause','interface'],'raw':!![]})[_0xe27c('0x1e')](function(_0x5b2a2d){var _0x5f2098=_[_0xe27c('0x35')](_0x5b2a2d,function(_0x4d8a2f){return db['UserVoiceQueueRt']['upsert']({'membername':_0x4d8a2f[_0xe27c('0x21')],'UserId':_0x4d8a2f['id'],'queue_name':_0x55cea2['name'],'VoiceQueueId':_0x55cea2['id'],'interface':_[_0xe27c('0x7f')](_0x4d8a2f[_0xe27c('0x80')])?util[_0xe27c('0x81')]('SIP/%s',_0x4d8a2f[_0xe27c('0x21')]):_0x4d8a2f[_0xe27c('0x80')],'paused':_0x4d8a2f[_0xe27c('0x82')]||![],'penalty':_0x55cea2[_0xe27c('0x83')]['penalty']},{'transaction':_0x56a764});});return Promise['all'](_0x5f2098);});});});return Promise['all'](_0x1be15c);});return Promise[_0xe27c('0x84')](_0x3298db);})[_0xe27c('0x1e')](function(){return db[_0xe27c('0x85')][_0xe27c('0x6b')]({'where':{'teamId':_0x1f253f}})['then'](function(_0x597ae1){if(_0x597ae1){var _0x58d6ae=_[_0xe27c('0x35')](_0x294bca,function(_0xd24a1e){db[_0xe27c('0x86')][_0xe27c('0x87')]({'UserId':_0xd24a1e,'VoicePrefixId':_0x597ae1[_0xe27c('0x88')]});});return Promise['all'](_0x58d6ae);}});});});return Promise[_0xe27c('0x84')](_0x5edca3)['then'](function(){return _0x3faa76['addAgents'](_0x294bca,{'transaction':_0x56a764})[_0xe27c('0x89')](function(_0x218e5b){return _0x218e5b;});});});}})[_0xe27c('0x1e')](respondWithResult(_0x5e4897,null))[_0xe27c('0x3e')](handleError(_0x5e4897,null));};exports['removeAgents']=function(_0x163412,_0x28ba1a){var _0x4b0010=_[_0xe27c('0x6f')](_0x163412['query'][_0xe27c('0x6c')])?_0x163412[_0xe27c('0x28')][_0xe27c('0x6c')]:[_0x163412['query'][_0xe27c('0x6c')]];var _0x6eb1d0=_0x163412['params']['id'];return db[_0xe27c('0x23')][_0xe27c('0x3d')]({'where':{'id':_0x6eb1d0}})['then'](handleEntityNotFound(_0x28ba1a,null))[_0xe27c('0x1e')](function(_0x286ecd){if(_0x286ecd){var _0x20cadf=[_0xe27c('0x70'),_0xe27c('0x71'),'Mail',_0xe27c('0x73'),'Fax','Openchannel',_0xe27c('0x76')];return db[_0xe27c('0x4f')]['transaction'](function(_0xe28143){var _0x3c52da=_[_0xe27c('0x35')](_0x20cadf,function(_0x140e23){var _0x24069a={'attributes':['id',_0xe27c('0x21')]};return _0x286ecd[_0xe27c('0x41')+_0x140e23+'Queues'](_0x24069a)['then'](function(_0x3258c7){var _0x2bcb69=_[_0xe27c('0x35')](_0x3258c7,function(_0x33e88d){return _0x33e88d[_0xe27c('0x8a')](_0x4b0010,{'transaction':_0xe28143})[_0xe27c('0x1e')](function(){var _0xd79997=_[_0xe27c('0x35')](_0x4b0010,function(_0x3b8b5f){socket[_0xe27c('0x7c')](_0xe27c('0x40')+_0x140e23+_0xe27c('0x8b'),{'UserId':Number(_0x3b8b5f),[_0x140e23+_0xe27c('0x79')]:_0x33e88d['id']});if(_0x140e23!=='Voice'){return;}return db[_0xe27c('0x8c')]['destroy']({'where':{'VoiceQueueId':_0x33e88d['id'],'UserId':_0x3b8b5f},'transaction':_0xe28143});});return Promise[_0xe27c('0x84')](_0xd79997);});});return Promise[_0xe27c('0x84')](_0x2bcb69);});});return Promise['all'](_0x3c52da)[_0xe27c('0x1e')](function(){return _0x286ecd[_0xe27c('0x8a')](_0x4b0010,{'transaction':_0xe28143});})[_0xe27c('0x1e')](function(){return db[_0xe27c('0x85')][_0xe27c('0x6b')]({'where':{'teamId':_0x6eb1d0}})[_0xe27c('0x1e')](function(_0x56e56c){if(_0x56e56c){var _0xd37cab=_[_0xe27c('0x35')](_0x4b0010,function(_0x18a5e4){db[_0xe27c('0x86')]['destroy']({'where':{'UserId':_0x18a5e4,'VoicePrefixId':_0x56e56c[_0xe27c('0x88')]}});});return Promise[_0xe27c('0x84')](_0xd37cab);}});});});}})[_0xe27c('0x1e')](respondWithStatusCode(_0x28ba1a,null))[_0xe27c('0x3e')](handleError(_0x28ba1a,null));};exports['getAgents']=function(_0x2a048d,_0x4a49bb,_0x5b9219){var _0x35b1fd={};var _0xcdacb4={};var _0x5678d0;var _0x1e71bb;return db[_0xe27c('0x23')][_0xe27c('0x6b')]({'where':{'id':_0x2a048d['params']['id']}})[_0xe27c('0x1e')](handleEntityNotFound(_0x4a49bb,null))['then'](function(_0x16a785){if(_0x16a785){_0x5678d0=_0x16a785;_0xcdacb4[_0xe27c('0x27')]=_['keys'](db[_0xe27c('0x7a')][_0xe27c('0x24')]);_0xcdacb4[_0xe27c('0x28')]=_[_0xe27c('0x29')](_0x2a048d['query']);_0xcdacb4[_0xe27c('0x2a')]=_['intersection'](_0xcdacb4[_0xe27c('0x27')],_0xcdacb4[_0xe27c('0x28')]);_0x35b1fd[_0xe27c('0x2d')]=_[_0xe27c('0x2b')](_0xcdacb4[_0xe27c('0x27')],qs[_0xe27c('0x2c')](_0x2a048d[_0xe27c('0x28')]['fields']));_0x35b1fd['attributes']=_0x35b1fd[_0xe27c('0x2d')][_0xe27c('0x2e')]?_0x35b1fd[_0xe27c('0x2d')]:_0xcdacb4['model'];_0x35b1fd[_0xe27c('0x30')]=qs['sort'](_0x2a048d[_0xe27c('0x28')][_0xe27c('0x31')]);_0x35b1fd['where']=qs['filters'](_[_0xe27c('0x33')](_0x2a048d[_0xe27c('0x28')],_0xcdacb4[_0xe27c('0x2a')]));if(_0x2a048d[_0xe27c('0x28')][_0xe27c('0x37')]){_0x35b1fd[_0xe27c('0x32')]=_[_0xe27c('0x34')](_0x35b1fd[_0xe27c('0x32')],{'$or':_['map'](_0x35b1fd['attributes'],function(_0xfe91f8){var _0x2d2853={};_0x2d2853[_0xfe91f8]={'$like':'%'+_0x2a048d[_0xe27c('0x28')]['filter']+'%'};return _0x2d2853;})});}_0x35b1fd=_[_0xe27c('0x34')]({},_0x35b1fd,_0x2a048d[_0xe27c('0x38')]);return _0x5678d0['getAgents'](_0x35b1fd);}})['then'](function(_0x1907ba){if(_0x1907ba){_0x1e71bb=_0x1907ba[_0xe27c('0x2e')];if(!_0x2a048d[_0xe27c('0x28')][_0xe27c('0x2f')](_0xe27c('0x8d'))){_0x35b1fd[_0xe27c('0x1a')]=qs[_0xe27c('0x1a')](_0x2a048d[_0xe27c('0x28')][_0xe27c('0x1a')]);_0x35b1fd[_0xe27c('0x18')]=qs['offset'](_0x2a048d[_0xe27c('0x28')][_0xe27c('0x18')]);}return _0x5678d0[_0xe27c('0x8e')](_0x35b1fd);}})[_0xe27c('0x1e')](function(_0x15cbbd){if(_0x15cbbd){return _0x15cbbd?{'count':_0x1e71bb,'rows':_0x15cbbd}:null;}})[_0xe27c('0x1e')](respondWithResult(_0x4a49bb,null))[_0xe27c('0x3e')](handleError(_0x4a49bb,null));};
\ No newline at end of file
+var _0x42ad=['fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','status','end','json','undefined','limit','count','offset','set','apply','then','sendStatus','error','name','index','map','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','merge','where','filter','Team','includeAll','rows','catch','show','params','keys','rawAttributes','include','options','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','Teams','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','sequelize','Sequelize','SELECT','UserId','QueryTypes','VoiceQueueId','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','UserSmsQueue','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','WhatsappQueueId','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix','send','findOne','channel','ValidationError','Unknown\x20channel','capitalize','toLowerCase','Queues','isValidChannel','add','ids','removeQueues','remove','addAgents','isArray','Chat','Mail','Openchannel','Whatsapp','transaction','Voice','through','QueueId','TeamVoiceQueue','penalty','User','findOrCreate','online','voicePause','interface','UserVoiceQueueRt','upsert','format','SIP/%s','all','VoicePrefixId','spread','removeAgents','Sms','Fax','emit','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv'];(function(_0x3ad5e8,_0x49cd96){var _0xdd51a4=function(_0x4dfff7){while(--_0x4dfff7){_0x3ad5e8['push'](_0x3ad5e8['shift']());}};_0xdd51a4(++_0x49cd96);}(_0x42ad,0x1a8));var _0xd42a=function(_0x3b84e6,_0x387fcf){_0x3b84e6=_0x3b84e6-0x0;var _0x4fbbb3=_0x42ad[_0x3b84e6];return _0x4fbbb3;};'use strict';var emlformat=require(_0xd42a('0x0'));var rimraf=require(_0xd42a('0x1'));var zipdir=require(_0xd42a('0x2'));var jsonpatch=require(_0xd42a('0x3'));var rp=require(_0xd42a('0x4'));var moment=require('moment');var BPromise=require(_0xd42a('0x5'));var Mustache=require(_0xd42a('0x6'));var util=require(_0xd42a('0x7'));var path=require(_0xd42a('0x8'));var sox=require(_0xd42a('0x9'));var csv=require(_0xd42a('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd42a('0xb'));var _=require(_0xd42a('0xc'));var squel=require(_0xd42a('0xd'));var crypto=require('crypto');var jsforce=require(_0xd42a('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd42a('0xf'));var Papa=require(_0xd42a('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xd42a('0x11'));var as=require(_0xd42a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xd42a('0x13'));var config=require(_0xd42a('0x14'));var licenseUtil=require(_0xd42a('0x15'));var db=require('../../mysqldb')['db'];config[_0xd42a('0x16')]=_[_0xd42a('0x17')](config[_0xd42a('0x16')],{'host':_0xd42a('0x18'),'port':0x18eb});var socket=require(_0xd42a('0x19'))(new Redis(config[_0xd42a('0x16')]));require('./team.socket')[_0xd42a('0x1a')](socket);function respondWithStatusCode(_0x151489,_0x3ab788){_0x3ab788=_0x3ab788||0xcc;return function(_0x1d74f0){if(_0x1d74f0){return _0x151489['sendStatus'](_0x3ab788);}return _0x151489[_0xd42a('0x1b')](_0x3ab788)[_0xd42a('0x1c')]();};}function respondWithResult(_0x14d76f,_0x2ea3d9){_0x2ea3d9=_0x2ea3d9||0xc8;return function(_0x510ce6){if(_0x510ce6){return _0x14d76f['status'](_0x2ea3d9)[_0xd42a('0x1d')](_0x510ce6);}};}function respondWithFilteredResult(_0x3543a8,_0x4b388f){return function(_0x3148b1){if(_0x3148b1){var _0x4b3f60=typeof _0x4b388f['offset']===_0xd42a('0x1e')&&typeof _0x4b388f[_0xd42a('0x1f')]===_0xd42a('0x1e');var _0x539b34=_0x3148b1[_0xd42a('0x20')];var _0x1f218a=_0x4b3f60?0x0:_0x4b388f[_0xd42a('0x21')];var _0x59bb8f=_0x4b3f60?_0x3148b1[_0xd42a('0x20')]:_0x4b388f[_0xd42a('0x21')]+_0x4b388f['limit'];var _0x2e1659;if(_0x59bb8f>=_0x539b34){_0x59bb8f=_0x539b34;_0x2e1659=0xc8;}else{_0x2e1659=0xce;}_0x3543a8[_0xd42a('0x1b')](_0x2e1659);return _0x3543a8[_0xd42a('0x22')]('Content-Range',_0x1f218a+'-'+_0x59bb8f+'/'+_0x539b34)[_0xd42a('0x1d')](_0x3148b1);}return null;};}function patchUpdates(_0x25e01d){return function(_0x1db6bf){try{jsonpatch[_0xd42a('0x23')](_0x1db6bf,_0x25e01d,!![]);}catch(_0x469a15){return BPromise['reject'](_0x469a15);}return _0x1db6bf['save']();};}function saveUpdates(_0x59e530,_0x45f9bd){return function(_0xbb7746){if(_0xbb7746){return _0xbb7746['update'](_0x59e530)[_0xd42a('0x24')](function(_0x2b1645){return _0x2b1645;});}return null;};}function handleEntityNotFound(_0x2234b4,_0x4e7a3f){return function(_0x5b2cd3){if(!_0x5b2cd3){_0x2234b4[_0xd42a('0x25')](0x194);}return _0x5b2cd3;};}function handleError(_0x4683dd,_0x2c640f){_0x2c640f=_0x2c640f||0x1f4;return function(_0x1092e6){logger[_0xd42a('0x26')](_0x1092e6['stack']);if(_0x1092e6[_0xd42a('0x27')]){delete _0x1092e6['name'];}_0x4683dd['status'](_0x2c640f)['send'](_0x1092e6);};}exports[_0xd42a('0x28')]=function(_0x4c55d8,_0x5d7739){var _0x34be23={},_0x3e6618={},_0x3da14c={'count':0x0,'rows':[]};var _0x36711d=_[_0xd42a('0x29')](db['Team']['rawAttributes'],function(_0x5f0ff2){return{'name':_0x5f0ff2['fieldName'],'type':_0x5f0ff2[_0xd42a('0x2a')]['key']};});_0x3e6618[_0xd42a('0x2b')]=_[_0xd42a('0x29')](_0x36711d,'name');_0x3e6618[_0xd42a('0x2c')]=_['keys'](_0x4c55d8[_0xd42a('0x2c')]);_0x3e6618[_0xd42a('0x2d')]=_['intersection'](_0x3e6618[_0xd42a('0x2b')],_0x3e6618[_0xd42a('0x2c')]);_0x34be23['attributes']=_[_0xd42a('0x2e')](_0x3e6618['model'],qs[_0xd42a('0x2f')](_0x4c55d8[_0xd42a('0x2c')]['fields']));_0x34be23[_0xd42a('0x30')]=_0x34be23['attributes'][_0xd42a('0x31')]?_0x34be23[_0xd42a('0x30')]:_0x3e6618[_0xd42a('0x2b')];if(!_0x4c55d8['query'][_0xd42a('0x32')](_0xd42a('0x33'))){_0x34be23[_0xd42a('0x1f')]=qs['limit'](_0x4c55d8[_0xd42a('0x2c')][_0xd42a('0x1f')]);_0x34be23['offset']=qs[_0xd42a('0x21')](_0x4c55d8[_0xd42a('0x2c')][_0xd42a('0x21')]);}_0x34be23[_0xd42a('0x34')]=qs[_0xd42a('0x35')](_0x4c55d8[_0xd42a('0x2c')][_0xd42a('0x35')]);_0x34be23['where']=qs[_0xd42a('0x2d')](_[_0xd42a('0x36')](_0x4c55d8[_0xd42a('0x2c')],_0x3e6618['filters']),_0x36711d);if(_0x4c55d8[_0xd42a('0x2c')]['filter']){_0x34be23['where']=_[_0xd42a('0x37')](_0x34be23[_0xd42a('0x38')],{'$or':_[_0xd42a('0x29')](_0x36711d,function(_0x171733){if(_0x171733[_0xd42a('0x2a')]!=='VIRTUAL'){var _0x4b5e12={};_0x4b5e12[_0x171733[_0xd42a('0x27')]]={'$like':'%'+_0x4c55d8[_0xd42a('0x2c')][_0xd42a('0x39')]+'%'};return _0x4b5e12;}})});}_0x34be23=_[_0xd42a('0x37')]({},_0x34be23,_0x4c55d8['options']);var _0x502a50={'where':_0x34be23[_0xd42a('0x38')]};return db[_0xd42a('0x3a')][_0xd42a('0x20')](_0x502a50)[_0xd42a('0x24')](function(_0x56ef4f){_0x3da14c[_0xd42a('0x20')]=_0x56ef4f;if(_0x4c55d8[_0xd42a('0x2c')][_0xd42a('0x3b')]){_0x34be23['include']=[{'all':!![]}];}return db[_0xd42a('0x3a')]['findAll'](_0x34be23);})[_0xd42a('0x24')](function(_0x11d498){_0x3da14c[_0xd42a('0x3c')]=_0x11d498;return _0x3da14c;})['then'](respondWithFilteredResult(_0x5d7739,_0x34be23))[_0xd42a('0x3d')](handleError(_0x5d7739,null));};exports[_0xd42a('0x3e')]=function(_0x32f7aa,_0x377fbb){var _0x370923={'raw':![],'where':{'id':_0x32f7aa[_0xd42a('0x3f')]['id']}},_0x501f5d={};_0x501f5d[_0xd42a('0x2b')]=_[_0xd42a('0x40')](db[_0xd42a('0x3a')][_0xd42a('0x41')]);_0x501f5d['query']=_[_0xd42a('0x40')](_0x32f7aa[_0xd42a('0x2c')]);_0x501f5d['filters']=_['intersection'](_0x501f5d[_0xd42a('0x2b')],_0x501f5d[_0xd42a('0x2c')]);_0x370923[_0xd42a('0x30')]=_[_0xd42a('0x2e')](_0x501f5d[_0xd42a('0x2b')],qs['fields'](_0x32f7aa[_0xd42a('0x2c')]['fields']));_0x370923[_0xd42a('0x30')]=_0x370923['attributes'][_0xd42a('0x31')]?_0x370923[_0xd42a('0x30')]:_0x501f5d['model'];if(_0x32f7aa[_0xd42a('0x2c')][_0xd42a('0x3b')]){_0x370923[_0xd42a('0x42')]=[{'all':!![]}];}_0x370923=_['merge']({},_0x370923,_0x32f7aa[_0xd42a('0x43')]);return db['Team']['find'](_0x370923)['then'](handleEntityNotFound(_0x377fbb,null))[_0xd42a('0x24')](respondWithResult(_0x377fbb,null))[_0xd42a('0x3d')](handleError(_0x377fbb,null));};exports[_0xd42a('0x44')]=function(_0x2dea86,_0x562508){return db[_0xd42a('0x3a')][_0xd42a('0x44')](_0x2dea86[_0xd42a('0x45')],{})['then'](function(_0x44ab5f){var _0x18b28a=_0x2dea86['user'][_0xd42a('0x46')]({'plain':!![]});if(!_0x18b28a)throw new Error(_0xd42a('0x47'));if(_0x18b28a[_0xd42a('0x48')]===_0xd42a('0x49')){var _0x42cdfe=_0x44ab5f[_0xd42a('0x46')]({'plain':!![]});var _0x140bb1=_0xd42a('0x4a');return db[_0xd42a('0x4b')][_0xd42a('0x4c')]({'where':{'name':_0x140bb1,'userProfileId':_0x18b28a[_0xd42a('0x4d')]},'raw':!![]})[_0xd42a('0x24')](function(_0x5c0d98){if(_0x5c0d98&&_0x5c0d98[_0xd42a('0x4e')]===0x0){return db[_0xd42a('0x4f')][_0xd42a('0x44')]({'name':_0x42cdfe['name'],'resourceId':_0x42cdfe['id'],'type':_0x5c0d98[_0xd42a('0x27')],'sectionId':_0x5c0d98['id']},{})[_0xd42a('0x24')](function(){return _0x44ab5f;});}else{return _0x44ab5f;}})[_0xd42a('0x3d')](function(_0x20e747){logger['error'](_0xd42a('0x50'),_0x20e747);throw _0x20e747;});}return _0x44ab5f;})[_0xd42a('0x24')](respondWithResult(_0x562508,0xc9))[_0xd42a('0x3d')](handleError(_0x562508,null));};exports['update']=function(_0x2eb6e7,_0x154e04){if(_0x2eb6e7['body']['id']){delete _0x2eb6e7['body']['id'];}return db[_0xd42a('0x3a')][_0xd42a('0x4c')]({'where':{'id':_0x2eb6e7[_0xd42a('0x3f')]['id']}})[_0xd42a('0x24')](handleEntityNotFound(_0x154e04,null))[_0xd42a('0x24')](saveUpdates(_0x2eb6e7[_0xd42a('0x45')],null))[_0xd42a('0x24')](respondWithResult(_0x154e04,null))['catch'](handleError(_0x154e04,null));};exports[_0xd42a('0x51')]=function(_0x272804,_0x49b285){var _0x7fcb3b=_0x272804[_0xd42a('0x3f')]['id'];var _0x43d4c6=[];return db['sequelize']['transaction'](function(_0x151450){var _0x15c928=_0xd42a('0x52')+_0x7fcb3b;return db[_0xd42a('0x53')]['query'](_0x15c928,{'type':db[_0xd42a('0x54')]['QueryTypes'][_0xd42a('0x55')],'raw':!![],'transaction':_0x151450})[_0xd42a('0x24')](function(_0x1edc05){_0x43d4c6=_[_0xd42a('0x29')](_0x1edc05,function(_0x329a2e){return Number(_0x329a2e[_0xd42a('0x56')]);});})[_0xd42a('0x24')](function(){var _0x4ddfec='SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20'+_0x7fcb3b;return db[_0xd42a('0x53')][_0xd42a('0x2c')](_0x4ddfec,{'type':db['Sequelize'][_0xd42a('0x57')][_0xd42a('0x55')],'raw':!![],'transaction':_0x151450});})[_0xd42a('0x24')](function(_0x207f38){var _0x28c56b=_[_0xd42a('0x29')](_0x207f38,function(_0x205050){return Number(_0x205050[_0xd42a('0x58')]);});return db['UserVoiceQueue'][_0xd42a('0x51')]({'where':{'UserId':{'$in':_0x43d4c6},'VoiceQueueId':{'$in':_0x28c56b}},'transaction':_0x151450});})[_0xd42a('0x24')](function(){var _0xabe3d8=_0xd42a('0x59')+_0x7fcb3b;return db[_0xd42a('0x53')][_0xd42a('0x2c')](_0xabe3d8,{'type':db[_0xd42a('0x54')][_0xd42a('0x57')][_0xd42a('0x55')],'raw':!![],'transaction':_0x151450});})[_0xd42a('0x24')](function(_0x1cd016){var _0x3e607f=_['map'](_0x1cd016,function(_0x41b4b2){return Number(_0x41b4b2['MailQueueId']);});return db[_0xd42a('0x5a')][_0xd42a('0x51')]({'where':{'UserId':{'$in':_0x43d4c6},'MailQueueId':{'$in':_0x3e607f}},'transaction':_0x151450});})[_0xd42a('0x24')](function(){var _0x2cfbbd=_0xd42a('0x5b')+_0x7fcb3b;return db[_0xd42a('0x53')][_0xd42a('0x2c')](_0x2cfbbd,{'type':db[_0xd42a('0x54')][_0xd42a('0x57')][_0xd42a('0x55')],'raw':!![],'transaction':_0x151450});})[_0xd42a('0x24')](function(_0x36979f){var _0x291b19=_[_0xd42a('0x29')](_0x36979f,function(_0x36a82b){return Number(_0x36a82b['SmsQueueId']);});return db[_0xd42a('0x5c')][_0xd42a('0x51')]({'where':{'UserId':{'$in':_0x43d4c6},'SmsQueueId':{'$in':_0x291b19}},'transaction':_0x151450});})[_0xd42a('0x24')](function(){var _0x7992d8='SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20'+_0x7fcb3b;return db[_0xd42a('0x53')]['query'](_0x7992d8,{'type':db['Sequelize'][_0xd42a('0x57')][_0xd42a('0x55')],'raw':!![],'transaction':_0x151450});})[_0xd42a('0x24')](function(_0x413ebb){var _0x4b5ff1=_['map'](_0x413ebb,function(_0xea5689){return Number(_0xea5689['ChatQueueId']);});return db[_0xd42a('0x5d')][_0xd42a('0x51')]({'where':{'UserId':{'$in':_0x43d4c6},'ChatQueueId':{'$in':_0x4b5ff1}},'transaction':_0x151450});})[_0xd42a('0x24')](function(){var _0xee12d6=_0xd42a('0x5e')+_0x7fcb3b;return db[_0xd42a('0x53')][_0xd42a('0x2c')](_0xee12d6,{'type':db[_0xd42a('0x54')][_0xd42a('0x57')][_0xd42a('0x55')],'raw':!![],'transaction':_0x151450});})[_0xd42a('0x24')](function(_0xcef229){var _0x370b7f=_['map'](_0xcef229,function(_0xda1f71){return Number(_0xda1f71[_0xd42a('0x5f')]);});return db['UserFaxQueue'][_0xd42a('0x51')]({'where':{'UserId':{'$in':_0x43d4c6},'FaxQueueId':{'$in':_0x370b7f}},'transaction':_0x151450});})[_0xd42a('0x24')](function(){var _0x4d1f4e=_0xd42a('0x60')+_0x7fcb3b;return db[_0xd42a('0x53')]['query'](_0x4d1f4e,{'type':db[_0xd42a('0x54')][_0xd42a('0x57')][_0xd42a('0x55')],'raw':!![],'transaction':_0x151450});})[_0xd42a('0x24')](function(_0x3d401e){var _0x1cfc70=_[_0xd42a('0x29')](_0x3d401e,function(_0x2b4e0){return Number(_0x2b4e0[_0xd42a('0x61')]);});return db[_0xd42a('0x62')]['destroy']({'where':{'UserId':{'$in':_0x43d4c6},'OpenchannelQueueId':{'$in':_0x1cfc70}},'transaction':_0x151450});})[_0xd42a('0x24')](function(){var _0x317b3e='SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20'+_0x7fcb3b;return db[_0xd42a('0x53')][_0xd42a('0x2c')](_0x317b3e,{'type':db['Sequelize'][_0xd42a('0x57')][_0xd42a('0x55')],'raw':!![],'transaction':_0x151450});})['then'](function(_0x6ff201){var _0x1787d4=_['map'](_0x6ff201,function(_0x562fea){return Number(_0x562fea[_0xd42a('0x63')]);});return db[_0xd42a('0x64')][_0xd42a('0x51')]({'where':{'UserId':{'$in':_0x43d4c6},'WhatsappQueueId':{'$in':_0x1787d4}},'transaction':_0x151450});})[_0xd42a('0x24')](function(){return db[_0xd42a('0x65')][_0xd42a('0x4c')]({'where':{'TeamId':_0x7fcb3b}});})['then'](function(_0x330651){if(_0x330651===null){return;}return db[_0xd42a('0x66')]['destroy']({'where':{'UserId':{'$in':_0x43d4c6},'VoicePrefixId':_0x330651['VoicePrefixId']},'transaction':_0x151450});})[_0xd42a('0x24')](function(){return db[_0xd42a('0x3a')]['destroy']({'where':{'id':_0x7fcb3b},'cascade':!![],'transaction':_0x151450});})[_0xd42a('0x24')](function(_0x1ade86){if(_0x1ade86===0x0){_0x49b285[_0xd42a('0x25')](0x194);}else{return db[_0xd42a('0x4f')]['destroy']({'where':{'type':_0xd42a('0x4a'),'resourceId':_0x7fcb3b},'cascade':!![],'transaction':_0x151450})[_0xd42a('0x24')](function(){_0x49b285[_0xd42a('0x1b')](0xcc)[_0xd42a('0x1c')]();});}})[_0xd42a('0x3d')](function(_0x51b382){_0x49b285[_0xd42a('0x1b')](0x1f4)[_0xd42a('0x67')](_0x51b382);});});};exports['getQueues']=function(_0x115cc9,_0x252dac,_0x3abac0){return db[_0xd42a('0x3a')][_0xd42a('0x68')]({'where':{'id':_0x115cc9[_0xd42a('0x3f')]['id']}})[_0xd42a('0x24')](handleEntityNotFound(_0x252dac,null))['then'](function(_0x50a2a2){if(!_0x115cc9[_0xd42a('0x2c')][_0xd42a('0x69')]||!utils['isValidChannel'](_0x115cc9[_0xd42a('0x2c')][_0xd42a('0x69')])){throw new db[(_0xd42a('0x54'))][(_0xd42a('0x6a'))](_0xd42a('0x6b'));}var _0x2e444c={};var _0x54a33b={};_0x54a33b[_0xd42a('0x2b')]=_[_0xd42a('0x40')](db[_[_0xd42a('0x6c')](_0x115cc9[_0xd42a('0x2c')][_0xd42a('0x69')][_0xd42a('0x6d')]())+'Queue'][_0xd42a('0x41')]);_0x54a33b[_0xd42a('0x2c')]=_[_0xd42a('0x40')](_0x115cc9[_0xd42a('0x2c')]);_0x54a33b[_0xd42a('0x2d')]=_[_0xd42a('0x2e')](_0x54a33b[_0xd42a('0x2b')],_0x54a33b[_0xd42a('0x2c')]);_0x2e444c[_0xd42a('0x30')]=_[_0xd42a('0x2e')](_0x54a33b['model'],qs['fields'](_0x115cc9['query'][_0xd42a('0x2f')]));_0x2e444c[_0xd42a('0x30')]=_0x2e444c[_0xd42a('0x30')][_0xd42a('0x31')]?_0x2e444c[_0xd42a('0x30')]:_0x54a33b[_0xd42a('0x2b')];_0x2e444c[_0xd42a('0x1f')]=qs[_0xd42a('0x1f')](_0x115cc9['query'][_0xd42a('0x1f')]);_0x2e444c[_0xd42a('0x21')]=qs[_0xd42a('0x21')](_0x115cc9['query'][_0xd42a('0x21')]);_0x2e444c[_0xd42a('0x34')]=qs[_0xd42a('0x35')](_0x115cc9[_0xd42a('0x2c')][_0xd42a('0x35')]);_0x2e444c[_0xd42a('0x38')]=qs[_0xd42a('0x2d')](_['pick'](_0x115cc9[_0xd42a('0x2c')],_0x54a33b[_0xd42a('0x2d')]));_0x2e444c=_['merge']({},_0x2e444c,_0x115cc9[_0xd42a('0x43')]);return _0x50a2a2[_0xd42a('0x46')+_[_0xd42a('0x6c')](_0x115cc9[_0xd42a('0x2c')]['channel']['toLowerCase']())+_0xd42a('0x6e')](_0x2e444c);})['then'](respondWithResult(_0x252dac,null))['catch'](handleError(_0x252dac,null));};exports['addQueues']=function(_0x23520a,_0x12d9cd,_0x553809){return db[_0xd42a('0x3a')][_0xd42a('0x68')]({'where':{'id':_0x23520a[_0xd42a('0x3f')]['id']}})[_0xd42a('0x24')](function(_0x4a9d96){if(_0x4a9d96){if(!_0x23520a[_0xd42a('0x45')]['channel']||!utils[_0xd42a('0x6f')](_0x23520a[_0xd42a('0x45')][_0xd42a('0x69')])){throw new db[(_0xd42a('0x54'))][(_0xd42a('0x6a'))](_0xd42a('0x6b'));}return _0x4a9d96[_0xd42a('0x70')+_[_0xd42a('0x6c')](_0x23520a[_0xd42a('0x45')][_0xd42a('0x69')][_0xd42a('0x6d')]())+_0xd42a('0x6e')](_0x23520a[_0xd42a('0x45')][_0xd42a('0x71')]);}return null;})[_0xd42a('0x24')](handleEntityNotFound(_0x12d9cd,null))[_0xd42a('0x24')](respondWithStatusCode(_0x12d9cd,null))[_0xd42a('0x3d')](handleError(_0x12d9cd,null));};exports[_0xd42a('0x72')]=function(_0x507648,_0x52b3f9,_0x2156be){return db[_0xd42a('0x3a')][_0xd42a('0x68')]({'where':{'id':_0x507648['params']['id']}})[_0xd42a('0x24')](function(_0x4bc0ed){if(_0x4bc0ed){if(!_0x507648['query'][_0xd42a('0x69')]||!utils[_0xd42a('0x6f')](_0x507648[_0xd42a('0x2c')]['channel'])){throw new db[(_0xd42a('0x54'))][(_0xd42a('0x6a'))](_0xd42a('0x6b'));}return _0x4bc0ed[_0xd42a('0x73')+_[_0xd42a('0x6c')](_0x507648[_0xd42a('0x2c')]['channel'][_0xd42a('0x6d')]())+_0xd42a('0x6e')](_0x507648['query']['ids']);}return null;})['then'](handleEntityNotFound(_0x52b3f9,null))[_0xd42a('0x24')](respondWithStatusCode(_0x52b3f9,null))[_0xd42a('0x3d')](handleError(_0x52b3f9,null));};exports[_0xd42a('0x74')]=function(_0x27d31d,_0x1f2aa3){var _0x2a53b2=_[_0xd42a('0x75')](_0x27d31d['body']['ids'])?_0x27d31d[_0xd42a('0x45')][_0xd42a('0x71')]:[_0x27d31d['body'][_0xd42a('0x71')]];var _0x1f7d16=_0x27d31d[_0xd42a('0x3f')]['id'];return db[_0xd42a('0x3a')][_0xd42a('0x4c')]({'where':{'id':_0x1f7d16}})['then'](handleEntityNotFound(_0x1f2aa3,null))[_0xd42a('0x24')](function(_0x4c9e1b){if(_0x4c9e1b){var _0x85c2a=['Voice',_0xd42a('0x76'),_0xd42a('0x77'),'Sms','Fax',_0xd42a('0x78'),_0xd42a('0x79')];return db[_0xd42a('0x53')][_0xd42a('0x7a')](function(_0x3cd623){var _0x5753f9=_[_0xd42a('0x29')](_0x85c2a,function(_0x1d5dfc){var _0x28a2ae={'attributes':['id',_0xd42a('0x27')]};if(_0x1d5dfc===_0xd42a('0x7b')){_0x28a2ae[_0xd42a('0x7c')]={'attributes':['penalty']};}return _0x4c9e1b[_0xd42a('0x46')+_0x1d5dfc+_0xd42a('0x6e')](_0x28a2ae)[_0xd42a('0x24')](function(_0x77c360){var _0x49ce04=_[_0xd42a('0x29')](_0x77c360,function(_0x397fa6){var _0x5d52d8=_[_0xd42a('0x29')](_0x2a53b2,function(_0x4a7d01){var _0x1c7bee={'where':{'UserId':_0x4a7d01,[_0x1d5dfc+_0xd42a('0x7d')]:_0x397fa6['id']},'transaction':_0x3cd623};if(_0x1d5dfc===_0xd42a('0x7b')){_0x1c7bee[_0xd42a('0x17')]={'penalty':_0x397fa6[_0xd42a('0x7e')][_0xd42a('0x7f')]};}return db[_0xd42a('0x80')+_0x1d5dfc+'Queue'][_0xd42a('0x81')](_0x1c7bee)[_0xd42a('0x24')](function(){socket['emit']('user'+_0x1d5dfc+'Queue:save',{'UserId':_0x4a7d01,[_0x1d5dfc+_0xd42a('0x7d')]:_0x397fa6['id']});if(_0x1d5dfc!=='Voice'){return;}return db[_0xd42a('0x80')]['findAll']({'where':{'id':_0x2a53b2,'online':0x1},'attributes':['id',_0xd42a('0x27'),_0xd42a('0x82'),_0xd42a('0x83'),_0xd42a('0x84')],'raw':!![]})['then'](function(_0xf218d3){var _0x37556b=_[_0xd42a('0x29')](_0xf218d3,function(_0x3bf2fd){return db[_0xd42a('0x85')][_0xd42a('0x86')]({'membername':_0x3bf2fd['name'],'UserId':_0x3bf2fd['id'],'queue_name':_0x397fa6[_0xd42a('0x27')],'VoiceQueueId':_0x397fa6['id'],'interface':_['isNil'](_0x3bf2fd[_0xd42a('0x84')])?util[_0xd42a('0x87')](_0xd42a('0x88'),_0x3bf2fd['name']):_0x3bf2fd[_0xd42a('0x84')],'paused':_0x3bf2fd[_0xd42a('0x83')]||![],'penalty':_0x397fa6['TeamVoiceQueue'][_0xd42a('0x7f')]},{'transaction':_0x3cd623});});return Promise[_0xd42a('0x89')](_0x37556b);});});});return Promise['all'](_0x5d52d8);});return Promise[_0xd42a('0x89')](_0x49ce04);})[_0xd42a('0x24')](function(){return db[_0xd42a('0x65')][_0xd42a('0x68')]({'where':{'teamId':_0x1f7d16}})[_0xd42a('0x24')](function(_0x5954ca){if(_0x5954ca){var _0x5c9605=_[_0xd42a('0x29')](_0x2a53b2,function(_0x601064){db[_0xd42a('0x66')][_0xd42a('0x86')]({'UserId':_0x601064,'VoicePrefixId':_0x5954ca[_0xd42a('0x8a')]});});return Promise[_0xd42a('0x89')](_0x5c9605);}});});});return Promise['all'](_0x5753f9)[_0xd42a('0x24')](function(){return _0x4c9e1b[_0xd42a('0x74')](_0x2a53b2,{'transaction':_0x3cd623})[_0xd42a('0x8b')](function(_0xc0a9b8){return _0xc0a9b8;});});});}})[_0xd42a('0x24')](respondWithResult(_0x1f2aa3,null))[_0xd42a('0x3d')](handleError(_0x1f2aa3,null));};exports[_0xd42a('0x8c')]=function(_0x32c221,_0x246820){var _0x5396c0=_[_0xd42a('0x75')](_0x32c221['query'][_0xd42a('0x71')])?_0x32c221['query'][_0xd42a('0x71')]:[_0x32c221[_0xd42a('0x2c')][_0xd42a('0x71')]];var _0x330f72=_0x32c221[_0xd42a('0x3f')]['id'];return db['Team'][_0xd42a('0x4c')]({'where':{'id':_0x330f72}})['then'](handleEntityNotFound(_0x246820,null))[_0xd42a('0x24')](function(_0xe00d6){if(_0xe00d6){var _0x429bdc=[_0xd42a('0x7b'),_0xd42a('0x76'),_0xd42a('0x77'),_0xd42a('0x8d'),_0xd42a('0x8e'),_0xd42a('0x78'),_0xd42a('0x79')];return db[_0xd42a('0x53')][_0xd42a('0x7a')](function(_0x5117ac){var _0x4a4663=_[_0xd42a('0x29')](_0x429bdc,function(_0x44f01b){var _0x520505={'attributes':['id',_0xd42a('0x27')]};return _0xe00d6[_0xd42a('0x46')+_0x44f01b+_0xd42a('0x6e')](_0x520505)[_0xd42a('0x24')](function(_0x35aaf1){var _0x3b2786=_['map'](_0x35aaf1,function(_0x2dbf56){return _0x2dbf56[_0xd42a('0x8c')](_0x5396c0,{'transaction':_0x5117ac})[_0xd42a('0x24')](function(){var _0x53604a=_[_0xd42a('0x29')](_0x5396c0,function(_0x43ab76){socket[_0xd42a('0x8f')](_0xd42a('0x49')+_0x44f01b+'Queue:remove',{'UserId':Number(_0x43ab76),[_0x44f01b+_0xd42a('0x7d')]:_0x2dbf56['id']});if(_0x44f01b!==_0xd42a('0x7b')){return;}return db[_0xd42a('0x85')][_0xd42a('0x51')]({'where':{'VoiceQueueId':_0x2dbf56['id'],'UserId':_0x43ab76},'transaction':_0x5117ac});});return Promise['all'](_0x53604a);});});return Promise[_0xd42a('0x89')](_0x3b2786);});});return Promise['all'](_0x4a4663)[_0xd42a('0x24')](function(){return _0xe00d6[_0xd42a('0x8c')](_0x5396c0,{'transaction':_0x5117ac});})[_0xd42a('0x24')](function(){return db[_0xd42a('0x65')][_0xd42a('0x68')]({'where':{'teamId':_0x330f72}})[_0xd42a('0x24')](function(_0x406bf4){if(_0x406bf4){var _0x794dda=_[_0xd42a('0x29')](_0x5396c0,function(_0x5a881b){db[_0xd42a('0x66')][_0xd42a('0x51')]({'where':{'UserId':_0x5a881b,'VoicePrefixId':_0x406bf4[_0xd42a('0x8a')]}});});return Promise['all'](_0x794dda);}});});});}})[_0xd42a('0x24')](respondWithStatusCode(_0x246820,null))['catch'](handleError(_0x246820,null));};exports[_0xd42a('0x90')]=function(_0x5a6e1c,_0x1a9ce2,_0x1e2ffe){var _0x301a56={};var _0x5b2a27={};var _0x59a97e;var _0x301f39;return db[_0xd42a('0x3a')]['findOne']({'where':{'id':_0x5a6e1c['params']['id']}})[_0xd42a('0x24')](handleEntityNotFound(_0x1a9ce2,null))['then'](function(_0x29cb87){if(_0x29cb87){_0x59a97e=_0x29cb87;_0x5b2a27[_0xd42a('0x2b')]=_['keys'](db[_0xd42a('0x80')][_0xd42a('0x41')]);_0x5b2a27[_0xd42a('0x2c')]=_['keys'](_0x5a6e1c[_0xd42a('0x2c')]);_0x5b2a27[_0xd42a('0x2d')]=_[_0xd42a('0x2e')](_0x5b2a27[_0xd42a('0x2b')],_0x5b2a27[_0xd42a('0x2c')]);_0x301a56['attributes']=_[_0xd42a('0x2e')](_0x5b2a27[_0xd42a('0x2b')],qs['fields'](_0x5a6e1c['query'][_0xd42a('0x2f')]));_0x301a56[_0xd42a('0x30')]=_0x301a56[_0xd42a('0x30')][_0xd42a('0x31')]?_0x301a56[_0xd42a('0x30')]:_0x5b2a27[_0xd42a('0x2b')];_0x301a56[_0xd42a('0x34')]=qs['sort'](_0x5a6e1c['query'][_0xd42a('0x35')]);_0x301a56[_0xd42a('0x38')]=qs[_0xd42a('0x2d')](_[_0xd42a('0x36')](_0x5a6e1c['query'],_0x5b2a27[_0xd42a('0x2d')]));if(_0x5a6e1c[_0xd42a('0x2c')][_0xd42a('0x39')]){_0x301a56['where']=_['merge'](_0x301a56[_0xd42a('0x38')],{'$or':_[_0xd42a('0x29')](_0x301a56[_0xd42a('0x30')],function(_0x130feb){var _0x4c47b4={};_0x4c47b4[_0x130feb]={'$like':'%'+_0x5a6e1c[_0xd42a('0x2c')][_0xd42a('0x39')]+'%'};return _0x4c47b4;})});}_0x301a56=_[_0xd42a('0x37')]({},_0x301a56,_0x5a6e1c['options']);return _0x59a97e[_0xd42a('0x90')](_0x301a56);}})[_0xd42a('0x24')](function(_0x4b61f5){if(_0x4b61f5){_0x301f39=_0x4b61f5[_0xd42a('0x31')];if(!_0x5a6e1c[_0xd42a('0x2c')][_0xd42a('0x32')]('nolimit')){_0x301a56[_0xd42a('0x1f')]=qs['limit'](_0x5a6e1c[_0xd42a('0x2c')][_0xd42a('0x1f')]);_0x301a56['offset']=qs[_0xd42a('0x21')](_0x5a6e1c[_0xd42a('0x2c')]['offset']);}return _0x59a97e[_0xd42a('0x90')](_0x301a56);}})[_0xd42a('0x24')](function(_0x32c69c){if(_0x32c69c){return _0x32c69c?{'count':_0x301f39,'rows':_0x32c69c}:null;}})[_0xd42a('0x24')](respondWithResult(_0x1a9ce2,null))[_0xd42a('0x3d')](handleError(_0x1a9ce2,null));};
\ No newline at end of file
index aa25488..83998e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1766=['update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','Team','setMaxListeners','save'];(function(_0x466821,_0x18270d){var _0x445e31=function(_0x49636c){while(--_0x49636c){_0x466821['push'](_0x466821['shift']());}};_0x445e31(++_0x18270d);}(_0x1766,0x9c));var _0x6176=function(_0x345202,_0x38eb0a){_0x345202=_0x345202-0x0;var _0x25bedc=_0x1766[_0x345202];return _0x25bedc;};'use strict';var EventEmitter=require('events');var Team=require(_0x6176('0x0'))['db'][_0x6176('0x1')];var TeamEvents=new EventEmitter();TeamEvents[_0x6176('0x2')](0x0);var events={'afterCreate':_0x6176('0x3'),'afterUpdate':_0x6176('0x4'),'afterDestroy':_0x6176('0x5')};function emitEvent(_0x2cb2ef){return function(_0x1e2c5b,_0x17ee7f,_0x295978){TeamEvents[_0x6176('0x6')](_0x2cb2ef+':'+_0x1e2c5b['id'],_0x1e2c5b);TeamEvents[_0x6176('0x6')](_0x2cb2ef,_0x1e2c5b);_0x295978(null);};}for(var e in events){if(events[_0x6176('0x7')](e)){var event=events[e];Team[_0x6176('0x8')](e,emitEvent(event));}}module[_0x6176('0x9')]=TeamEvents;
\ No newline at end of file
+var _0x8c12=['hook','exports','events','../../mysqldb','Team','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x22f971,_0x2d748e){var _0x284708=function(_0x45d8e5){while(--_0x45d8e5){_0x22f971['push'](_0x22f971['shift']());}};_0x284708(++_0x2d748e);}(_0x8c12,0x14c));var _0x28c1=function(_0xc783ae,_0x2e4531){_0xc783ae=_0xc783ae-0x0;var _0x5a9ffd=_0x8c12[_0xc783ae];return _0x5a9ffd;};'use strict';var EventEmitter=require(_0x28c1('0x0'));var Team=require(_0x28c1('0x1'))['db'][_0x28c1('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0x28c1('0x3')](0x0);var events={'afterCreate':_0x28c1('0x4'),'afterUpdate':'update','afterDestroy':_0x28c1('0x5')};function emitEvent(_0x37b745){return function(_0xeb53d7,_0x3917d3,_0x5ed154){TeamEvents[_0x28c1('0x6')](_0x37b745+':'+_0xeb53d7['id'],_0xeb53d7);TeamEvents[_0x28c1('0x6')](_0x37b745,_0xeb53d7);_0x5ed154(null);};}for(var e in events){if(events[_0x28c1('0x7')](e)){var event=events[e];Team[_0x28c1('0x8')](e,emitEvent(event));}}module[_0x28c1('0x9')]=TeamEvents;
\ No newline at end of file
index 42fc0cc..4d44b50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb0b=['get','then','setDataValue','catch','exports','define','teams','Chat','Fax','Openchannel','Sms','Whatsapp','resolve','all','lodash','./team.attributes'];(function(_0x113ff3,_0x43f59c){var _0x57717a=function(_0x236099){while(--_0x236099){_0x113ff3['push'](_0x113ff3['shift']());}};_0x57717a(++_0x43f59c);}(_0xeb0b,0x18e));var _0xbeb0=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xeb0b[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0xbeb0('0x0'));var attributes=require(_0xbeb0('0x1'));function getQueuesByChannel(_0xc8b913,_0x37584e){var _0x432785=_0xbeb0('0x2')+_0x37584e+'Queues';return _0xc8b913[_0x432785]()[_0xbeb0('0x3')](function(_0x29594a){return _['map'](_0x29594a,function(_0x2afd27){_0x2afd27[_0xbeb0('0x4')]('channel',_0x37584e);return _0x2afd27;});})[_0xbeb0('0x5')](function(_0x41625c){throw _0x41625c;});}module[_0xbeb0('0x6')]=function(_0x589815){return _0x589815[_0xbeb0('0x7')]('Team',attributes,{'tableName':_0xbeb0('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x32b751=this;var _0x30561a=[_0xbeb0('0x9'),_0xbeb0('0xa'),'Mail',_0xbeb0('0xb'),_0xbeb0('0xc'),'Voice',_0xbeb0('0xd')];return Promise[_0xbeb0('0xe')]()['then'](function(){var _0x53ff16=_['map'](_0x30561a,function(_0x3dc575){return getQueuesByChannel(_0x32b751,_0x3dc575);});return Promise[_0xbeb0('0xf')](_0x53ff16);})['catch'](function(_0x527a73){throw _0x527a73;});}}});};
\ No newline at end of file
+var _0x982a=['teams','Chat','Fax','Openchannel','Sms','Voice','Whatsapp','resolve','all','lodash','get','Queues','then','map','exports','define'];(function(_0x5e1ec3,_0x23538e){var _0x29daff=function(_0x16c8d2){while(--_0x16c8d2){_0x5e1ec3['push'](_0x5e1ec3['shift']());}};_0x29daff(++_0x23538e);}(_0x982a,0x119));var _0xa982=function(_0x34d5d2,_0x3dbc68){_0x34d5d2=_0x34d5d2-0x0;var _0x2b8d88=_0x982a[_0x34d5d2];return _0x2b8d88;};'use strict';var _=require(_0xa982('0x0'));var attributes=require('./team.attributes');function getQueuesByChannel(_0x1b51bb,_0x2d0164){var _0x265eb2=_0xa982('0x1')+_0x2d0164+_0xa982('0x2');return _0x1b51bb[_0x265eb2]()[_0xa982('0x3')](function(_0x429a36){return _[_0xa982('0x4')](_0x429a36,function(_0x396c38){_0x396c38['setDataValue']('channel',_0x2d0164);return _0x396c38;});})['catch'](function(_0x4c294c){throw _0x4c294c;});}module[_0xa982('0x5')]=function(_0x1add0b){return _0x1add0b[_0xa982('0x6')]('Team',attributes,{'tableName':_0xa982('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0xba40a0=this;var _0x218b1a=[_0xa982('0x8'),_0xa982('0x9'),'Mail',_0xa982('0xa'),_0xa982('0xb'),_0xa982('0xc'),_0xa982('0xd')];return Promise[_0xa982('0xe')]()['then'](function(){var _0xcaaae2=_[_0xa982('0x4')](_0x218b1a,function(_0xf901f7){return getQueuesByChannel(_0xba40a0,_0xf901f7);});return Promise[_0xa982('0xf')](_0xcaaae2);})['catch'](function(_0x1d0a2c){throw _0x1d0a2c;});}}});};
\ No newline at end of file
index 9e8a829..b3f4790 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21ff=['localhost','register','request','then','info','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','Team,\x20%s,\x20%s','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','redis'];(function(_0x4c1d2f,_0x497986){var _0x2edbad=function(_0x18cba9){while(--_0x18cba9){_0x4c1d2f['push'](_0x4c1d2f['shift']());}};_0x2edbad(++_0x497986);}(_0x21ff,0x101));var _0xf21f=function(_0x2eb5bc,_0x4634c6){_0x2eb5bc=_0x2eb5bc-0x0;var _0x51c7b1=_0x21ff[_0x2eb5bc];return _0x51c7b1;};'use strict';var _=require(_0xf21f('0x0'));var util=require('util');var moment=require(_0xf21f('0x1'));var BPromise=require(_0xf21f('0x2'));var rs=require(_0xf21f('0x3'));var fs=require('fs');var Redis=require(_0xf21f('0x4'));var db=require(_0xf21f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf21f('0x6'))(_0xf21f('0x7'));var config=require(_0xf21f('0x8'));var jayson=require(_0xf21f('0x9'));var client=jayson['client'][_0xf21f('0xa')]({'port':0x232a});config['redis']=_[_0xf21f('0xb')](config[_0xf21f('0xc')],{'host':_0xf21f('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./team.socket')[_0xf21f('0xe')](socket);function respondWithRpcPromise(_0xa66e97,_0x1dae5a,_0x36315d){return new BPromise(function(_0x26d9b9,_0x3a600e){return client[_0xf21f('0xf')](_0xa66e97,_0x36315d)[_0xf21f('0x10')](function(_0x1411a7){logger[_0xf21f('0x11')]('Team,\x20%s,\x20%s',_0x1dae5a,_0xf21f('0x12'));logger[_0xf21f('0x13')](_0xf21f('0x14'),_0x1dae5a,_0xf21f('0x12'),JSON[_0xf21f('0x15')](_0x1411a7));if(_0x1411a7[_0xf21f('0x16')]){if(_0x1411a7[_0xf21f('0x16')]['code']===0x1f4){logger['error']('Team,\x20%s,\x20%s',_0x1dae5a,_0x1411a7[_0xf21f('0x16')][_0xf21f('0x17')]);return _0x3a600e(_0x1411a7[_0xf21f('0x16')]['message']);}logger[_0xf21f('0x16')]('Team,\x20%s,\x20%s',_0x1dae5a,_0x1411a7[_0xf21f('0x16')][_0xf21f('0x17')]);return _0x26d9b9(_0x1411a7['error'][_0xf21f('0x17')]);}else{logger[_0xf21f('0x11')]('Team,\x20%s,\x20%s',_0x1dae5a,_0xf21f('0x12'));_0x26d9b9(_0x1411a7[_0xf21f('0x18')][_0xf21f('0x17')]);}})[_0xf21f('0x19')](function(_0x492cdf){logger[_0xf21f('0x16')](_0xf21f('0x1a'),_0x1dae5a,_0x492cdf);_0x3a600e(_0x492cdf);});});}
\ No newline at end of file
+var _0x978c=['socket.io-emitter','request','then','info','Team,\x20%s,\x20%s','request\x20sent','debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x978c,0xc4));var _0xc978=function(_0x174ef5,_0x256e8e){_0x174ef5=_0x174ef5-0x0;var _0x1cc379=_0x978c[_0x174ef5];return _0x1cc379;};'use strict';var _=require(_0xc978('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc978('0x1'));var fs=require('fs');var Redis=require(_0xc978('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc978('0x3'))(_0xc978('0x4'));var config=require(_0xc978('0x5'));var jayson=require(_0xc978('0x6'));var client=jayson[_0xc978('0x7')][_0xc978('0x8')]({'port':0x232a});config[_0xc978('0x9')]=_[_0xc978('0xa')](config[_0xc978('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xc978('0xb'))(new Redis(config[_0xc978('0x9')]));require('./team.socket')['register'](socket);function respondWithRpcPromise(_0x524826,_0x1f0587,_0x574707){return new BPromise(function(_0x1094cc,_0x33ebee){return client[_0xc978('0xc')](_0x524826,_0x574707)[_0xc978('0xd')](function(_0x274144){logger[_0xc978('0xe')](_0xc978('0xf'),_0x1f0587,_0xc978('0x10'));logger[_0xc978('0x11')](_0xc978('0x12'),_0x1f0587,_0xc978('0x10'),JSON[_0xc978('0x13')](_0x274144));if(_0x274144[_0xc978('0x14')]){if(_0x274144[_0xc978('0x14')]['code']===0x1f4){logger[_0xc978('0x14')](_0xc978('0xf'),_0x1f0587,_0x274144[_0xc978('0x14')]['message']);return _0x33ebee(_0x274144[_0xc978('0x14')][_0xc978('0x15')]);}logger[_0xc978('0x14')](_0xc978('0xf'),_0x1f0587,_0x274144[_0xc978('0x14')][_0xc978('0x15')]);return _0x1094cc(_0x274144[_0xc978('0x14')][_0xc978('0x15')]);}else{logger['info'](_0xc978('0xf'),_0x1f0587,'request\x20sent');_0x1094cc(_0x274144['result'][_0xc978('0x15')]);}})[_0xc978('0x16')](function(_0x54b015){logger[_0xc978('0x14')]('Team,\x20%s,\x20%s',_0x1f0587,_0x54b015);_0x33ebee(_0x54b015);});});}
\ No newline at end of file
index 18f4a1c..2fbd848 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf35d=['register','length','./team.events','remove','emit','removeListener'];(function(_0x4c2e71,_0x4a324c){var _0x4862d0=function(_0x55d054){while(--_0x55d054){_0x4c2e71['push'](_0x4c2e71['shift']());}};_0x4862d0(++_0x4a324c);}(_0xf35d,0x17c));var _0xdf35=function(_0x45e81e,_0x37adc6){_0x45e81e=_0x45e81e-0x0;var _0x334162=_0xf35d[_0x45e81e];return _0x334162;};'use strict';var TeamEvents=require(_0xdf35('0x0'));var events=['save',_0xdf35('0x1'),'update'];function createListener(_0x1c77d6,_0x2c4abd){return function(_0x5a1692){_0x2c4abd[_0xdf35('0x2')](_0x1c77d6,_0x5a1692);};}function removeListener(_0x523d72,_0x222e83){return function(){TeamEvents[_0xdf35('0x3')](_0x523d72,_0x222e83);};}exports[_0xdf35('0x4')]=function(_0x7cfe71){for(var _0x41036b=0x0,_0x30e2ee=events[_0xdf35('0x5')];_0x41036b<_0x30e2ee;_0x41036b++){var _0x5802cf=events[_0x41036b];var _0x49eb59=createListener('team:'+_0x5802cf,_0x7cfe71);TeamEvents['on'](_0x5802cf,_0x49eb59);}};
\ No newline at end of file
+var _0x7932=['./team.events','save','update','emit','register','length'];(function(_0x513eca,_0x593007){var _0x2c4e0b=function(_0x8886da){while(--_0x8886da){_0x513eca['push'](_0x513eca['shift']());}};_0x2c4e0b(++_0x593007);}(_0x7932,0xf0));var _0x2793=function(_0x3f0240,_0x188626){_0x3f0240=_0x3f0240-0x0;var _0x2722d8=_0x7932[_0x3f0240];return _0x2722d8;};'use strict';var TeamEvents=require(_0x2793('0x0'));var events=[_0x2793('0x1'),'remove',_0x2793('0x2')];function createListener(_0x426484,_0x295d48){return function(_0x13f93d){_0x295d48[_0x2793('0x3')](_0x426484,_0x13f93d);};}function removeListener(_0x47387d,_0x29539d){return function(){TeamEvents['removeListener'](_0x47387d,_0x29539d);};}exports[_0x2793('0x4')]=function(_0xacd552){for(var _0x45a3d2=0x0,_0x35659f=events[_0x2793('0x5')];_0x45a3d2<_0x35659f;_0x45a3d2++){var _0x36285c=events[_0x45a3d2];var _0x5c1b63=createListener('team:'+_0x36285c,_0xacd552);TeamEvents['on'](_0x36285c,_0x5c1b63);}};
\ No newline at end of file
index 31da514..e55871c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58e9=['exports','INTEGER','sequelize'];(function(_0x1f4c0b,_0x28f740){var _0xa2eddb=function(_0x51f179){while(--_0x51f179){_0x1f4c0b['push'](_0x1f4c0b['shift']());}};_0xa2eddb(++_0x28f740);}(_0x58e9,0x15e));var _0x958e=function(_0x1f0529,_0x57e665){_0x1f0529=_0x1f0529-0x0;var _0x43bfe6=_0x58e9[_0x1f0529];return _0x43bfe6;};'use strict';var Sequelize=require(_0x958e('0x0'));module[_0x958e('0x1')]={'TeamId':{'type':Sequelize['INTEGER']},'VoicePrefixId':{'type':Sequelize[_0x958e('0x2')]}};
\ No newline at end of file
+var _0xd863=['exports','INTEGER','sequelize'];(function(_0x5bac83,_0x3f9e04){var _0x44593a=function(_0x2b7393){while(--_0x2b7393){_0x5bac83['push'](_0x5bac83['shift']());}};_0x44593a(++_0x3f9e04);}(_0xd863,0x1c7));var _0x3d86=function(_0x5623f8,_0x5828b1){_0x5623f8=_0x5623f8-0x0;var _0x2afbba=_0xd863[_0x5623f8];return _0x2afbba;};'use strict';var Sequelize=require(_0x3d86('0x0'));module[_0x3d86('0x1')]={'TeamId':{'type':Sequelize[_0x3d86('0x2')]},'VoicePrefixId':{'type':Sequelize[_0x3d86('0x2')]}};
\ No newline at end of file
index 36ebcb5..efc6784 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8caf=['request-promise','rimraf','../../config/environment','./teamVoicePrefix.attributes','exports','TeamVoicePrefix','team_has_voice_prefixes','util','../../config/logger','api','moment','bluebird'];(function(_0xd01c26,_0x2269ba){var _0x2aedb6=function(_0xa8ea50){while(--_0xa8ea50){_0xd01c26['push'](_0xd01c26['shift']());}};_0x2aedb6(++_0x2269ba);}(_0x8caf,0x1ab));var _0xf8ca=function(_0x4e1d2d,_0x5a44e1){_0x4e1d2d=_0x4e1d2d-0x0;var _0x520f96=_0x8caf[_0x4e1d2d];return _0x520f96;};'use strict';var _=require('lodash');var util=require(_0xf8ca('0x0'));var logger=require(_0xf8ca('0x1'))(_0xf8ca('0x2'));var moment=require(_0xf8ca('0x3'));var BPromise=require(_0xf8ca('0x4'));var rp=require(_0xf8ca('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf8ca('0x6'));var config=require(_0xf8ca('0x7'));var attributes=require(_0xf8ca('0x8'));module[_0xf8ca('0x9')]=function(_0x1e2888,_0x20c10a){return _0x1e2888['define'](_0xf8ca('0xa'),attributes,{'tableName':_0xf8ca('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7229=['api','moment','path','rimraf','../../config/environment','./teamVoicePrefix.attributes','exports','TeamVoicePrefix','lodash','util','../../config/logger'];(function(_0x15904a,_0x4013b0){var _0x588463=function(_0xc84b9f){while(--_0xc84b9f){_0x15904a['push'](_0x15904a['shift']());}};_0x588463(++_0x4013b0);}(_0x7229,0x76));var _0x9722=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0x7229[_0x2b10c6];return _0x3789d2;};'use strict';var _=require(_0x9722('0x0'));var util=require(_0x9722('0x1'));var logger=require(_0x9722('0x2'))(_0x9722('0x3'));var moment=require(_0x9722('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x9722('0x5'));var rimraf=require(_0x9722('0x6'));var config=require(_0x9722('0x7'));var attributes=require(_0x9722('0x8'));module[_0x9722('0x9')]=function(_0x43e0ed,_0x2689b3){return _0x43e0ed['define'](_0x9722('0xa'),attributes,{'tableName':'team_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index cc404c8..5676e28 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(_0x18f302,_0x373c83){var _0x1c3aa9=function(_0x625aec){while(--_0x625aec){_0x18f302['push'](_0x18f302['shift']());}};_0x1c3aa9(++_0x373c83);}(_0xe706,0xa3));var _0x6e70=function(_0x237340,_0x39b15d){_0x237340=_0x237340-0x0;var _0x5542c8=_0xe706[_0x237340];return _0x5542c8;};'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 _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x34b436,_0x16e836){var _0x2e1e2b=function(_0x4138a5){while(--_0x4138a5){_0x34b436['push'](_0x34b436['shift']());}};_0x2e1e2b(++_0x16e836);}(_0xedd9,0xfc));var _0x9edd=function(_0xf95594,_0x44b311){_0xf95594=_0xf95594-0x0;var _0x54a375=_0xedd9[_0xf95594];return _0x54a375;};'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 feab27a..50bb034 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdba6=['sequelize','INTEGER'];(function(_0xfcfc35,_0x41125e){var _0x13a3c7=function(_0x594a49){while(--_0x594a49){_0xfcfc35['push'](_0xfcfc35['shift']());}};_0x13a3c7(++_0x41125e);}(_0xdba6,0xe6));var _0x6dba=function(_0x2b0fd0,_0x5a7d75){_0x2b0fd0=_0x2b0fd0-0x0;var _0x2aecb8=_0xdba6[_0x2b0fd0];return _0x2aecb8;};'use strict';var Sequelize=require(_0x6dba('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x6dba('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9ea0=['sequelize','exports','INTEGER'];(function(_0x22e69c,_0x77e0aa){var _0xfc34ec=function(_0x57c873){while(--_0x57c873){_0x22e69c['push'](_0x22e69c['shift']());}};_0xfc34ec(++_0x77e0aa);}(_0x9ea0,0xc0));var _0x09ea=function(_0x4e291f,_0x202c9){_0x4e291f=_0x4e291f-0x0;var _0x3b2d52=_0x9ea0[_0x4e291f];return _0x3b2d52;};'use strict';var Sequelize=require(_0x09ea('0x0'));module[_0x09ea('0x1')]={'penalty':{'type':Sequelize[_0x09ea('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 88ff47e..2aa0ef7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a9a=['bluebird','request-promise','rimraf','../../config/environment','exports','define','team_has_voice_queues','util','api','moment'];(function(_0x17179f,_0x12718a){var _0x1e5710=function(_0x2fb27f){while(--_0x2fb27f){_0x17179f['push'](_0x17179f['shift']());}};_0x1e5710(++_0x12718a);}(_0x0a9a,0x183));var _0xa0a9=function(_0x39ea52,_0x26e62a){_0x39ea52=_0x39ea52-0x0;var _0x13020c=_0x0a9a[_0x39ea52];return _0x13020c;};'use strict';var _=require('lodash');var util=require(_0xa0a9('0x0'));var logger=require('../../config/logger')(_0xa0a9('0x1'));var moment=require(_0xa0a9('0x2'));var BPromise=require(_0xa0a9('0x3'));var rp=require(_0xa0a9('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa0a9('0x5'));var config=require(_0xa0a9('0x6'));var attributes=require('./teamVoiceQueue.attributes');module[_0xa0a9('0x7')]=function(_0xc65bbb,_0x1aa717){return _0xc65bbb[_0xa0a9('0x8')]('TeamVoiceQueue',attributes,{'tableName':_0xa0a9('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc474=['lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes','exports','define','TeamVoiceQueue','team_has_voice_queues'];(function(_0x488262,_0x3521e9){var _0x47ea76=function(_0x435bb7){while(--_0x435bb7){_0x488262['push'](_0x488262['shift']());}};_0x47ea76(++_0x3521e9);}(_0xc474,0xfc));var _0x4c47=function(_0x5f0089,_0x227e2c){_0x5f0089=_0x5f0089-0x0;var _0x193892=_0xc474[_0x5f0089];return _0x193892;};'use strict';var _=require(_0x4c47('0x0'));var util=require(_0x4c47('0x1'));var logger=require(_0x4c47('0x2'))('api');var moment=require(_0x4c47('0x3'));var BPromise=require(_0x4c47('0x4'));var rp=require(_0x4c47('0x5'));var fs=require('fs');var path=require(_0x4c47('0x6'));var rimraf=require(_0x4c47('0x7'));var config=require(_0x4c47('0x8'));var attributes=require(_0x4c47('0x9'));module[_0x4c47('0xa')]=function(_0x58db78,_0x5aaf0e){return _0x58db78[_0x4c47('0xb')](_0x4c47('0xc'),attributes,{'tableName':_0x4c47('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5bf02a1..e26ff82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbfb=['message','request\x20sent','result','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x5615be,_0x33dc99){var _0x9a5b3b=function(_0x524b88){while(--_0x524b88){_0x5615be['push'](_0x5615be['shift']());}};_0x9a5b3b(++_0x33dc99);}(_0xdbfb,0x16b));var _0xbdbf=function(_0x291e42,_0x590d39){_0x291e42=_0x291e42-0x0;var _0x2ff7b9=_0xdbfb[_0x291e42];return _0x2ff7b9;};'use strict';var _=require(_0xbdbf('0x0'));var util=require(_0xbdbf('0x1'));var moment=require('moment');var BPromise=require(_0xbdbf('0x2'));var rs=require(_0xbdbf('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbdbf('0x4'))['db'];var utils=require(_0xbdbf('0x5'));var logger=require(_0xbdbf('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xbdbf('0x7'));var client=jayson[_0xbdbf('0x8')][_0xbdbf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1c818a,_0x1d068d,_0x2b6772){return new BPromise(function(_0x3ad2d4,_0x5e0644){return client[_0xbdbf('0xa')](_0x1c818a,_0x2b6772)[_0xbdbf('0xb')](function(_0x3426dc){logger[_0xbdbf('0xc')](_0xbdbf('0xd'),_0x1d068d,'request\x20sent');logger['debug'](_0xbdbf('0xe'),_0x1d068d,'request\x20sent',JSON[_0xbdbf('0xf')](_0x3426dc));if(_0x3426dc['error']){if(_0x3426dc['error']['code']===0x1f4){logger[_0xbdbf('0x10')]('TeamVoiceQueue,\x20%s,\x20%s',_0x1d068d,_0x3426dc[_0xbdbf('0x10')][_0xbdbf('0x11')]);return _0x5e0644(_0x3426dc[_0xbdbf('0x10')][_0xbdbf('0x11')]);}logger['error'](_0xbdbf('0xd'),_0x1d068d,_0x3426dc[_0xbdbf('0x10')][_0xbdbf('0x11')]);return _0x3ad2d4(_0x3426dc[_0xbdbf('0x10')][_0xbdbf('0x11')]);}else{logger[_0xbdbf('0xc')](_0xbdbf('0xd'),_0x1d068d,_0xbdbf('0x12'));_0x3ad2d4(_0x3426dc[_0xbdbf('0x13')][_0xbdbf('0x11')]);}})['catch'](function(_0x2f29cd){logger[_0xbdbf('0x10')]('TeamVoiceQueue,\x20%s,\x20%s',_0x1d068d,_0x2f29cd);_0x5e0644(_0x2f29cd);});});}
\ No newline at end of file
+var _0x3351=['error','code','message','result','catch','lodash','util','moment','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','TeamVoiceQueue,\x20%s,\x20%s','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x26f702,_0x3919bf){var _0x11417d=function(_0x1aa3e8){while(--_0x1aa3e8){_0x26f702['push'](_0x26f702['shift']());}};_0x11417d(++_0x3919bf);}(_0x3351,0x175));var _0x1335=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0x3351[_0x12d033];return _0x3b4e80;};'use strict';var _=require(_0x1335('0x0'));var util=require(_0x1335('0x1'));var moment=require(_0x1335('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1335('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1335('0x4'))(_0x1335('0x5'));var config=require(_0x1335('0x6'));var jayson=require(_0x1335('0x7'));var client=jayson[_0x1335('0x8')][_0x1335('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x387e44,_0x4033f0,_0x1793e6){return new BPromise(function(_0x19c13e,_0x53a9a2){return client[_0x1335('0xa')](_0x387e44,_0x1793e6)[_0x1335('0xb')](function(_0x4ef3a7){logger[_0x1335('0xc')](_0x1335('0xd'),_0x4033f0,'request\x20sent');logger[_0x1335('0xe')](_0x1335('0xf'),_0x4033f0,_0x1335('0x10'),JSON[_0x1335('0x11')](_0x4ef3a7));if(_0x4ef3a7[_0x1335('0x12')]){if(_0x4ef3a7[_0x1335('0x12')][_0x1335('0x13')]===0x1f4){logger[_0x1335('0x12')](_0x1335('0xd'),_0x4033f0,_0x4ef3a7[_0x1335('0x12')][_0x1335('0x14')]);return _0x53a9a2(_0x4ef3a7[_0x1335('0x12')][_0x1335('0x14')]);}logger[_0x1335('0x12')]('TeamVoiceQueue,\x20%s,\x20%s',_0x4033f0,_0x4ef3a7[_0x1335('0x12')][_0x1335('0x14')]);return _0x19c13e(_0x4ef3a7[_0x1335('0x12')]['message']);}else{logger[_0x1335('0xc')](_0x1335('0xd'),_0x4033f0,_0x1335('0x10'));_0x19c13e(_0x4ef3a7[_0x1335('0x15')][_0x1335('0x14')]);}})[_0x1335('0x16')](function(_0x2c9a69){logger[_0x1335('0x12')]('TeamVoiceQueue,\x20%s,\x20%s',_0x4033f0,_0x2c9a69);_0x53a9a2(_0x2c9a69);});});}
\ No newline at end of file
index 7c7ba5a..d057aef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4991=['multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./template.controller','get','index','/:id','isAuthenticated','show','post','create','delete','destroy','exports'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0x4991,0xf7));var _0x1499=function(_0x4308a2,_0x3035e0){_0x4308a2=_0x4308a2-0x0;var _0x3af6ce=_0x4991[_0x4308a2];return _0x3af6ce;};'use strict';var multer=require(_0x1499('0x0'));var util=require('util');var path=require(_0x1499('0x1'));var timeout=require('connect-timeout');var express=require(_0x1499('0x2'));var router=express[_0x1499('0x3')]();var fs_extra=require(_0x1499('0x4'));var auth=require(_0x1499('0x5'));var interaction=require(_0x1499('0x6'));var config=require(_0x1499('0x7'));var controller=require(_0x1499('0x8'));router[_0x1499('0x9')]('/',auth['isAuthenticated'](),controller[_0x1499('0xa')]);router[_0x1499('0x9')](_0x1499('0xb'),auth[_0x1499('0xc')](),controller[_0x1499('0xd')]);router[_0x1499('0xe')]('/',auth[_0x1499('0xc')](),controller[_0x1499('0xf')]);router['put'](_0x1499('0xb'),auth[_0x1499('0xc')](),controller['update']);router[_0x1499('0x10')](_0x1499('0xb'),auth['isAuthenticated'](),controller[_0x1499('0x11')]);module[_0x1499('0x12')]=router;
\ No newline at end of file
+var _0x11f3=['put','update','delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','/:id','isAuthenticated','post','create'];(function(_0x1ae74c,_0xd3c6f6){var _0x45f623=function(_0x4b45d2){while(--_0x4b45d2){_0x1ae74c['push'](_0x1ae74c['shift']());}};_0x45f623(++_0xd3c6f6);}(_0x11f3,0x149));var _0x311f=function(_0x3e81ad,_0x52018e){_0x3e81ad=_0x3e81ad-0x0;var _0x504310=_0x11f3[_0x3e81ad];return _0x504310;};'use strict';var multer=require(_0x311f('0x0'));var util=require(_0x311f('0x1'));var path=require(_0x311f('0x2'));var timeout=require('connect-timeout');var express=require(_0x311f('0x3'));var router=express['Router']();var fs_extra=require(_0x311f('0x4'));var auth=require(_0x311f('0x5'));var interaction=require(_0x311f('0x6'));var config=require('../../config/environment');var controller=require('./template.controller');router[_0x311f('0x7')]('/',auth['isAuthenticated'](),controller[_0x311f('0x8')]);router[_0x311f('0x7')](_0x311f('0x9'),auth[_0x311f('0xa')](),controller['show']);router[_0x311f('0xb')]('/',auth[_0x311f('0xa')](),controller[_0x311f('0xc')]);router[_0x311f('0xd')](_0x311f('0x9'),auth['isAuthenticated'](),controller[_0x311f('0xe')]);router[_0x311f('0xf')](_0x311f('0x9'),auth[_0x311f('0xa')](),controller[_0x311f('0x10')]);module[_0x311f('0x11')]=router;
\ No newline at end of file
index 2789c4e..c3d0484 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbee6=['STRING','TEXT','sequelize','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbee6,0xb6));var _0x6bee=function(_0x2e87d0,_0x4aa553){_0x2e87d0=_0x2e87d0-0x0;var _0x34dd65=_0xbee6[_0x2e87d0];return _0x34dd65;};'use strict';var Sequelize=require(_0x6bee('0x0'));module[_0x6bee('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x6bee('0x2')]},'html':{'type':Sequelize[_0x6bee('0x3')]}};
\ No newline at end of file
+var _0x8e10=['TEXT','sequelize','exports','STRING'];(function(_0x41590d,_0x53f2b4){var _0x96f4d3=function(_0x37e48e){while(--_0x37e48e){_0x41590d['push'](_0x41590d['shift']());}};_0x96f4d3(++_0x53f2b4);}(_0x8e10,0x1cd));var _0x08e1=function(_0x3f3519,_0xd53cae){_0x3f3519=_0x3f3519-0x0;var _0x23b6bf=_0x8e10[_0x3f3519];return _0x23b6bf;};'use strict';var Sequelize=require(_0x08e1('0x0'));module[_0x08e1('0x1')]={'name':{'type':Sequelize[_0x08e1('0x2')]},'description':{'type':Sequelize[_0x08e1('0x2')]},'html':{'type':Sequelize[_0x08e1('0x3')]}};
\ No newline at end of file
index 5623821..6b15d37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50be=['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','../../mysqldb','sendStatus','status','json','limit','count','offset','set','Content-Range','apply','reject','save','then','destroy','Templates','UserProfileResource','end','error','stack','name','send','map','Template','rawAttributes','key','query','keys','intersection','model','fields','attributes','hasOwnProperty','order','sort','filters','merge','where','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','length','body','user','get','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','zip-dir','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x50be,0x9f));var _0xe50b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x50be[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe50b('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe50b('0x1'));var moment=require(_0xe50b('0x2'));var BPromise=require(_0xe50b('0x3'));var Mustache=require(_0xe50b('0x4'));var util=require('util');var path=require(_0xe50b('0x5'));var sox=require('sox');var csv=require(_0xe50b('0x6'));var ejs=require(_0xe50b('0x7'));var fs=require('fs');var fs_extra=require(_0xe50b('0x8'));var _=require(_0xe50b('0x9'));var squel=require(_0xe50b('0xa'));var crypto=require(_0xe50b('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xe50b('0xc'));var toCsv=require(_0xe50b('0x6'));var querystring=require(_0xe50b('0xd'));var Papa=require(_0xe50b('0xe'));var Redis=require(_0xe50b('0xf'));var authService=require(_0xe50b('0x10'));var qs=require(_0xe50b('0x11'));var as=require(_0xe50b('0x12'));var hardwareService=require(_0xe50b('0x13'));var logger=require(_0xe50b('0x14'))(_0xe50b('0x15'));var utils=require(_0xe50b('0x16'));var config=require(_0xe50b('0x17'));var licenseUtil=require(_0xe50b('0x18'));var db=require(_0xe50b('0x19'))['db'];function respondWithStatusCode(_0x5cd9f1,_0x1a13fa){_0x1a13fa=_0x1a13fa||0xcc;return function(_0x212e51){if(_0x212e51){return _0x5cd9f1[_0xe50b('0x1a')](_0x1a13fa);}return _0x5cd9f1[_0xe50b('0x1b')](_0x1a13fa)['end']();};}function respondWithResult(_0x44f6f2,_0x205c51){_0x205c51=_0x205c51||0xc8;return function(_0x311716){if(_0x311716){return _0x44f6f2[_0xe50b('0x1b')](_0x205c51)[_0xe50b('0x1c')](_0x311716);}};}function respondWithFilteredResult(_0x5bf33b,_0x47dfd2){return function(_0x461998){if(_0x461998){var _0x1ba448=typeof _0x47dfd2['offset']==='undefined'&&typeof _0x47dfd2[_0xe50b('0x1d')]==='undefined';var _0x4c2090=_0x461998[_0xe50b('0x1e')];var _0x1f53ec=_0x1ba448?0x0:_0x47dfd2[_0xe50b('0x1f')];var _0x3eab1f=_0x1ba448?_0x461998['count']:_0x47dfd2[_0xe50b('0x1f')]+_0x47dfd2[_0xe50b('0x1d')];var _0x13fa74;if(_0x3eab1f>=_0x4c2090){_0x3eab1f=_0x4c2090;_0x13fa74=0xc8;}else{_0x13fa74=0xce;}_0x5bf33b[_0xe50b('0x1b')](_0x13fa74);return _0x5bf33b[_0xe50b('0x20')](_0xe50b('0x21'),_0x1f53ec+'-'+_0x3eab1f+'/'+_0x4c2090)['json'](_0x461998);}return null;};}function patchUpdates(_0x5611a1){return function(_0x20256e){try{jsonpatch[_0xe50b('0x22')](_0x20256e,_0x5611a1,!![]);}catch(_0x497d0f){return BPromise[_0xe50b('0x23')](_0x497d0f);}return _0x20256e[_0xe50b('0x24')]();};}function saveUpdates(_0x3c0862,_0x4d458a){return function(_0x1ce396){if(_0x1ce396){return _0x1ce396['update'](_0x3c0862)[_0xe50b('0x25')](function(_0x12bf89){return _0x12bf89;});}return null;};}function removeEntity(_0x48984d,_0x3731fe){return function(_0x1b3790){if(_0x1b3790){return _0x1b3790[_0xe50b('0x26')]()[_0xe50b('0x25')](function(){var _0x167454=_0x1b3790['get']({'plain':!![]});var _0x43375e=_0xe50b('0x27');return db[_0xe50b('0x28')][_0xe50b('0x26')]({'where':{'type':_0x43375e,'resourceId':_0x167454['id']}})[_0xe50b('0x25')](function(){return _0x1b3790;});})['then'](function(){_0x48984d[_0xe50b('0x1b')](0xcc)[_0xe50b('0x29')]();});}};}function handleEntityNotFound(_0x135134,_0xdfb42b){return function(_0x7ebd27){if(!_0x7ebd27){_0x135134[_0xe50b('0x1a')](0x194);}return _0x7ebd27;};}function handleError(_0x139005,_0x5bb9a0){_0x5bb9a0=_0x5bb9a0||0x1f4;return function(_0x881cab){logger[_0xe50b('0x2a')](_0x881cab[_0xe50b('0x2b')]);if(_0x881cab[_0xe50b('0x2c')]){delete _0x881cab['name'];}_0x139005[_0xe50b('0x1b')](_0x5bb9a0)[_0xe50b('0x2d')](_0x881cab);};}exports['index']=function(_0x38607c,_0x4ad231){var _0x4d6b1e={},_0x45e226={},_0xfdaf25={'count':0x0,'rows':[]};var _0x2ff023=_[_0xe50b('0x2e')](db[_0xe50b('0x2f')][_0xe50b('0x30')],function(_0x439d5b){return{'name':_0x439d5b['fieldName'],'type':_0x439d5b['type'][_0xe50b('0x31')]};});_0x45e226['model']=_[_0xe50b('0x2e')](_0x2ff023,_0xe50b('0x2c'));_0x45e226[_0xe50b('0x32')]=_[_0xe50b('0x33')](_0x38607c[_0xe50b('0x32')]);_0x45e226['filters']=_[_0xe50b('0x34')](_0x45e226[_0xe50b('0x35')],_0x45e226[_0xe50b('0x32')]);_0x4d6b1e['attributes']=_[_0xe50b('0x34')](_0x45e226[_0xe50b('0x35')],qs[_0xe50b('0x36')](_0x38607c['query']['fields']));_0x4d6b1e[_0xe50b('0x37')]=_0x4d6b1e[_0xe50b('0x37')]['length']?_0x4d6b1e[_0xe50b('0x37')]:_0x45e226[_0xe50b('0x35')];if(!_0x38607c[_0xe50b('0x32')][_0xe50b('0x38')]('nolimit')){_0x4d6b1e['limit']=qs['limit'](_0x38607c[_0xe50b('0x32')][_0xe50b('0x1d')]);_0x4d6b1e[_0xe50b('0x1f')]=qs[_0xe50b('0x1f')](_0x38607c[_0xe50b('0x32')][_0xe50b('0x1f')]);}_0x4d6b1e[_0xe50b('0x39')]=qs[_0xe50b('0x3a')](_0x38607c[_0xe50b('0x32')][_0xe50b('0x3a')]);_0x4d6b1e['where']=qs[_0xe50b('0x3b')](_['pick'](_0x38607c[_0xe50b('0x32')],_0x45e226['filters']),_0x2ff023);if(_0x38607c[_0xe50b('0x32')]['filter']){_0x4d6b1e['where']=_[_0xe50b('0x3c')](_0x4d6b1e[_0xe50b('0x3d')],{'$or':_[_0xe50b('0x2e')](_0x2ff023,function(_0x57aa35){if(_0x57aa35['type']!==_0xe50b('0x3e')){var _0x52253f={};_0x52253f[_0x57aa35[_0xe50b('0x2c')]]={'$like':'%'+_0x38607c['query'][_0xe50b('0x3f')]+'%'};return _0x52253f;}})});}_0x4d6b1e=_[_0xe50b('0x3c')]({},_0x4d6b1e,_0x38607c[_0xe50b('0x40')]);var _0x41395d={'where':_0x4d6b1e[_0xe50b('0x3d')]};return db[_0xe50b('0x2f')][_0xe50b('0x1e')](_0x41395d)[_0xe50b('0x25')](function(_0x26cde7){_0xfdaf25[_0xe50b('0x1e')]=_0x26cde7;if(_0x38607c['query'][_0xe50b('0x41')]){_0x4d6b1e[_0xe50b('0x42')]=[{'all':!![]}];}return db['Template'][_0xe50b('0x43')](_0x4d6b1e);})[_0xe50b('0x25')](function(_0xfd0de2){_0xfdaf25[_0xe50b('0x44')]=_0xfd0de2;return _0xfdaf25;})[_0xe50b('0x25')](respondWithFilteredResult(_0x4ad231,_0x4d6b1e))[_0xe50b('0x45')](handleError(_0x4ad231,null));};exports[_0xe50b('0x46')]=function(_0x4c8f76,_0x560b30){var _0x2e3273={'raw':!![],'where':{'id':_0x4c8f76[_0xe50b('0x47')]['id']}},_0x2d3521={};_0x2d3521[_0xe50b('0x35')]=_[_0xe50b('0x33')](db[_0xe50b('0x2f')][_0xe50b('0x30')]);_0x2d3521[_0xe50b('0x32')]=_['keys'](_0x4c8f76[_0xe50b('0x32')]);_0x2d3521['filters']=_[_0xe50b('0x34')](_0x2d3521[_0xe50b('0x35')],_0x2d3521[_0xe50b('0x32')]);_0x2e3273[_0xe50b('0x37')]=_[_0xe50b('0x34')](_0x2d3521[_0xe50b('0x35')],qs['fields'](_0x4c8f76[_0xe50b('0x32')]['fields']));_0x2e3273['attributes']=_0x2e3273[_0xe50b('0x37')][_0xe50b('0x48')]?_0x2e3273[_0xe50b('0x37')]:_0x2d3521[_0xe50b('0x35')];if(_0x4c8f76[_0xe50b('0x32')]['includeAll']){_0x2e3273[_0xe50b('0x42')]=[{'all':!![]}];}_0x2e3273=_[_0xe50b('0x3c')]({},_0x2e3273,_0x4c8f76[_0xe50b('0x40')]);return db['Template']['find'](_0x2e3273)[_0xe50b('0x25')](handleEntityNotFound(_0x560b30,null))['then'](respondWithResult(_0x560b30,null))[_0xe50b('0x45')](handleError(_0x560b30,null));};exports['create']=function(_0x321fb2,_0x3998d3){return db[_0xe50b('0x2f')]['create'](_0x321fb2[_0xe50b('0x49')],{})[_0xe50b('0x25')](function(_0x1eb7ee){var _0x1b7c32=_0x321fb2[_0xe50b('0x4a')][_0xe50b('0x4b')]({'plain':!![]});if(!_0x1b7c32)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1b7c32[_0xe50b('0x4c')]===_0xe50b('0x4a')){var _0x227cfd=_0x1eb7ee['get']({'plain':!![]});var _0x32cbfa='Templates';return db[_0xe50b('0x4d')]['find']({'where':{'name':_0x32cbfa,'userProfileId':_0x1b7c32[_0xe50b('0x4e')]},'raw':!![]})[_0xe50b('0x25')](function(_0x5d2835){if(_0x5d2835&&_0x5d2835[_0xe50b('0x4f')]===0x0){return db['UserProfileResource'][_0xe50b('0x50')]({'name':_0x227cfd[_0xe50b('0x2c')],'resourceId':_0x227cfd['id'],'type':_0x5d2835[_0xe50b('0x2c')],'sectionId':_0x5d2835['id']},{})[_0xe50b('0x25')](function(){return _0x1eb7ee;});}else{return _0x1eb7ee;}})[_0xe50b('0x45')](function(_0x217517){logger['error'](_0xe50b('0x51'),_0x217517);throw _0x217517;});}return _0x1eb7ee;})[_0xe50b('0x25')](respondWithResult(_0x3998d3,0xc9))[_0xe50b('0x45')](handleError(_0x3998d3,null));};exports[_0xe50b('0x52')]=function(_0x209598,_0x1d8cb8){if(_0x209598['body']['id']){delete _0x209598['body']['id'];}return db['Template'][_0xe50b('0x53')]({'where':{'id':_0x209598['params']['id']}})[_0xe50b('0x25')](handleEntityNotFound(_0x1d8cb8,null))[_0xe50b('0x25')](saveUpdates(_0x209598[_0xe50b('0x49')],null))[_0xe50b('0x25')](respondWithResult(_0x1d8cb8,null))['catch'](handleError(_0x1d8cb8,null));};exports[_0xe50b('0x26')]=function(_0xa4b5fa,_0x28cf40){return db[_0xe50b('0x2f')]['find']({'where':{'id':_0xa4b5fa['params']['id']}})['then'](handleEntityNotFound(_0x28cf40,null))[_0xe50b('0x25')](removeEntity(_0x28cf40,null))[_0xe50b('0x45')](handleError(_0x28cf40,null));};
\ No newline at end of file
+var _0x7695=['mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','count','set','apply','reject','save','then','Templates','UserProfileResource','end','error','name','send','index','Template','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','params','length','options','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','UserProfileSection','find','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','destroy','eml-format','rimraf','zip-dir','request-promise'];(function(_0x33e170,_0x4d981e){var _0x344a41=function(_0xbf1522){while(--_0xbf1522){_0x33e170['push'](_0x33e170['shift']());}};_0x344a41(++_0x4d981e);}(_0x7695,0xfb));var _0x5769=function(_0x4d08e8,_0x566593){_0x4d08e8=_0x4d08e8-0x0;var _0x460c6d=_0x7695[_0x4d08e8];return _0x460c6d;};'use strict';var emlformat=require(_0x5769('0x0'));var rimraf=require(_0x5769('0x1'));var zipdir=require(_0x5769('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5769('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x5769('0x4'));var util=require('util');var path=require(_0x5769('0x5'));var sox=require(_0x5769('0x6'));var csv=require(_0x5769('0x7'));var ejs=require(_0x5769('0x8'));var fs=require('fs');var fs_extra=require(_0x5769('0x9'));var _=require(_0x5769('0xa'));var squel=require(_0x5769('0xb'));var crypto=require(_0x5769('0xc'));var jsforce=require(_0x5769('0xd'));var deskjs=require(_0x5769('0xe'));var toCsv=require(_0x5769('0x7'));var querystring=require('querystring');var Papa=require(_0x5769('0xf'));var Redis=require(_0x5769('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x5769('0x11'));var hardwareService=require(_0x5769('0x12'));var logger=require(_0x5769('0x13'))(_0x5769('0x14'));var utils=require(_0x5769('0x15'));var config=require(_0x5769('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x5769('0x17'))['db'];function respondWithStatusCode(_0x3b8767,_0x38bfbb){_0x38bfbb=_0x38bfbb||0xcc;return function(_0x52d89e){if(_0x52d89e){return _0x3b8767[_0x5769('0x18')](_0x38bfbb);}return _0x3b8767[_0x5769('0x19')](_0x38bfbb)['end']();};}function respondWithResult(_0x3625ee,_0x2c3cf0){_0x2c3cf0=_0x2c3cf0||0xc8;return function(_0x4ee578){if(_0x4ee578){return _0x3625ee[_0x5769('0x19')](_0x2c3cf0)[_0x5769('0x1a')](_0x4ee578);}};}function respondWithFilteredResult(_0x2da2e6,_0x2e1616){return function(_0x3e8ec9){if(_0x3e8ec9){var _0x190f48=typeof _0x2e1616[_0x5769('0x1b')]==='undefined'&&typeof _0x2e1616[_0x5769('0x1c')]==='undefined';var _0x445ac7=_0x3e8ec9['count'];var _0x473d80=_0x190f48?0x0:_0x2e1616[_0x5769('0x1b')];var _0x5910f3=_0x190f48?_0x3e8ec9[_0x5769('0x1d')]:_0x2e1616[_0x5769('0x1b')]+_0x2e1616['limit'];var _0x106cd1;if(_0x5910f3>=_0x445ac7){_0x5910f3=_0x445ac7;_0x106cd1=0xc8;}else{_0x106cd1=0xce;}_0x2da2e6[_0x5769('0x19')](_0x106cd1);return _0x2da2e6[_0x5769('0x1e')]('Content-Range',_0x473d80+'-'+_0x5910f3+'/'+_0x445ac7)[_0x5769('0x1a')](_0x3e8ec9);}return null;};}function patchUpdates(_0x12149b){return function(_0xed3c5d){try{jsonpatch[_0x5769('0x1f')](_0xed3c5d,_0x12149b,!![]);}catch(_0x198879){return BPromise[_0x5769('0x20')](_0x198879);}return _0xed3c5d[_0x5769('0x21')]();};}function saveUpdates(_0x2f7401,_0x9020b8){return function(_0x3cbfea){if(_0x3cbfea){return _0x3cbfea['update'](_0x2f7401)[_0x5769('0x22')](function(_0x355534){return _0x355534;});}return null;};}function removeEntity(_0x513fd4,_0x519097){return function(_0x303903){if(_0x303903){return _0x303903['destroy']()[_0x5769('0x22')](function(){var _0x5443d8=_0x303903['get']({'plain':!![]});var _0x3e57ba=_0x5769('0x23');return db[_0x5769('0x24')]['destroy']({'where':{'type':_0x3e57ba,'resourceId':_0x5443d8['id']}})[_0x5769('0x22')](function(){return _0x303903;});})[_0x5769('0x22')](function(){_0x513fd4[_0x5769('0x19')](0xcc)[_0x5769('0x25')]();});}};}function handleEntityNotFound(_0x4ca809,_0x1a22ff){return function(_0x4f21a2){if(!_0x4f21a2){_0x4ca809['sendStatus'](0x194);}return _0x4f21a2;};}function handleError(_0x3c4348,_0x5dbb1b){_0x5dbb1b=_0x5dbb1b||0x1f4;return function(_0x4e414e){logger[_0x5769('0x26')](_0x4e414e['stack']);if(_0x4e414e['name']){delete _0x4e414e[_0x5769('0x27')];}_0x3c4348[_0x5769('0x19')](_0x5dbb1b)[_0x5769('0x28')](_0x4e414e);};}exports[_0x5769('0x29')]=function(_0x2232b5,_0x3d0148){var _0x496e7b={},_0x227926={},_0x153010={'count':0x0,'rows':[]};var _0x10d8b8=_['map'](db[_0x5769('0x2a')][_0x5769('0x2b')],function(_0x4b7044){return{'name':_0x4b7044[_0x5769('0x2c')],'type':_0x4b7044[_0x5769('0x2d')][_0x5769('0x2e')]};});_0x227926[_0x5769('0x2f')]=_[_0x5769('0x30')](_0x10d8b8,_0x5769('0x27'));_0x227926[_0x5769('0x31')]=_[_0x5769('0x32')](_0x2232b5[_0x5769('0x31')]);_0x227926[_0x5769('0x33')]=_['intersection'](_0x227926[_0x5769('0x2f')],_0x227926[_0x5769('0x31')]);_0x496e7b[_0x5769('0x34')]=_[_0x5769('0x35')](_0x227926[_0x5769('0x2f')],qs[_0x5769('0x36')](_0x2232b5[_0x5769('0x31')][_0x5769('0x36')]));_0x496e7b['attributes']=_0x496e7b['attributes']['length']?_0x496e7b[_0x5769('0x34')]:_0x227926['model'];if(!_0x2232b5['query'][_0x5769('0x37')](_0x5769('0x38'))){_0x496e7b['limit']=qs['limit'](_0x2232b5[_0x5769('0x31')]['limit']);_0x496e7b[_0x5769('0x1b')]=qs['offset'](_0x2232b5[_0x5769('0x31')][_0x5769('0x1b')]);}_0x496e7b[_0x5769('0x39')]=qs[_0x5769('0x3a')](_0x2232b5[_0x5769('0x31')][_0x5769('0x3a')]);_0x496e7b[_0x5769('0x3b')]=qs[_0x5769('0x33')](_[_0x5769('0x3c')](_0x2232b5['query'],_0x227926[_0x5769('0x33')]),_0x10d8b8);if(_0x2232b5[_0x5769('0x31')][_0x5769('0x3d')]){_0x496e7b['where']=_['merge'](_0x496e7b['where'],{'$or':_[_0x5769('0x30')](_0x10d8b8,function(_0x5c2c98){if(_0x5c2c98['type']!==_0x5769('0x3e')){var _0x479a18={};_0x479a18[_0x5c2c98[_0x5769('0x27')]]={'$like':'%'+_0x2232b5[_0x5769('0x31')][_0x5769('0x3d')]+'%'};return _0x479a18;}})});}_0x496e7b=_[_0x5769('0x3f')]({},_0x496e7b,_0x2232b5['options']);var _0x35073b={'where':_0x496e7b[_0x5769('0x3b')]};return db[_0x5769('0x2a')][_0x5769('0x1d')](_0x35073b)['then'](function(_0x3281d7){_0x153010['count']=_0x3281d7;if(_0x2232b5[_0x5769('0x31')][_0x5769('0x40')]){_0x496e7b[_0x5769('0x41')]=[{'all':!![]}];}return db[_0x5769('0x2a')][_0x5769('0x42')](_0x496e7b);})[_0x5769('0x22')](function(_0x52a011){_0x153010[_0x5769('0x43')]=_0x52a011;return _0x153010;})[_0x5769('0x22')](respondWithFilteredResult(_0x3d0148,_0x496e7b))[_0x5769('0x44')](handleError(_0x3d0148,null));};exports['show']=function(_0x575a65,_0x2b4506){var _0xdcdb={'raw':!![],'where':{'id':_0x575a65[_0x5769('0x45')]['id']}},_0x119799={};_0x119799[_0x5769('0x2f')]=_[_0x5769('0x32')](db['Template']['rawAttributes']);_0x119799[_0x5769('0x31')]=_[_0x5769('0x32')](_0x575a65[_0x5769('0x31')]);_0x119799[_0x5769('0x33')]=_[_0x5769('0x35')](_0x119799[_0x5769('0x2f')],_0x119799[_0x5769('0x31')]);_0xdcdb[_0x5769('0x34')]=_[_0x5769('0x35')](_0x119799['model'],qs[_0x5769('0x36')](_0x575a65['query'][_0x5769('0x36')]));_0xdcdb[_0x5769('0x34')]=_0xdcdb['attributes'][_0x5769('0x46')]?_0xdcdb['attributes']:_0x119799['model'];if(_0x575a65[_0x5769('0x31')][_0x5769('0x40')]){_0xdcdb['include']=[{'all':!![]}];}_0xdcdb=_[_0x5769('0x3f')]({},_0xdcdb,_0x575a65[_0x5769('0x47')]);return db['Template']['find'](_0xdcdb)[_0x5769('0x22')](handleEntityNotFound(_0x2b4506,null))[_0x5769('0x22')](respondWithResult(_0x2b4506,null))['catch'](handleError(_0x2b4506,null));};exports['create']=function(_0x1a0c7,_0x3aa5ef){return db[_0x5769('0x2a')]['create'](_0x1a0c7[_0x5769('0x48')],{})[_0x5769('0x22')](function(_0xcbc420){var _0x28a7c9=_0x1a0c7[_0x5769('0x49')]['get']({'plain':!![]});if(!_0x28a7c9)throw new Error(_0x5769('0x4a'));if(_0x28a7c9[_0x5769('0x4b')]===_0x5769('0x49')){var _0x3899fe=_0xcbc420[_0x5769('0x4c')]({'plain':!![]});var _0x935652='Templates';return db[_0x5769('0x4d')][_0x5769('0x4e')]({'where':{'name':_0x935652,'userProfileId':_0x28a7c9[_0x5769('0x4f')]},'raw':!![]})[_0x5769('0x22')](function(_0x8943ac){if(_0x8943ac&&_0x8943ac[_0x5769('0x50')]===0x0){return db[_0x5769('0x24')][_0x5769('0x51')]({'name':_0x3899fe[_0x5769('0x27')],'resourceId':_0x3899fe['id'],'type':_0x8943ac[_0x5769('0x27')],'sectionId':_0x8943ac['id']},{})['then'](function(){return _0xcbc420;});}else{return _0xcbc420;}})[_0x5769('0x44')](function(_0x258c86){logger[_0x5769('0x26')](_0x5769('0x52'),_0x258c86);throw _0x258c86;});}return _0xcbc420;})[_0x5769('0x22')](respondWithResult(_0x3aa5ef,0xc9))[_0x5769('0x44')](handleError(_0x3aa5ef,null));};exports[_0x5769('0x53')]=function(_0x697c72,_0x43a1bc){if(_0x697c72[_0x5769('0x48')]['id']){delete _0x697c72['body']['id'];}return db[_0x5769('0x2a')][_0x5769('0x4e')]({'where':{'id':_0x697c72[_0x5769('0x45')]['id']}})[_0x5769('0x22')](handleEntityNotFound(_0x43a1bc,null))[_0x5769('0x22')](saveUpdates(_0x697c72[_0x5769('0x48')],null))['then'](respondWithResult(_0x43a1bc,null))[_0x5769('0x44')](handleError(_0x43a1bc,null));};exports[_0x5769('0x54')]=function(_0x80a15d,_0x3231cf){return db[_0x5769('0x2a')][_0x5769('0x4e')]({'where':{'id':_0x80a15d['params']['id']}})['then'](handleEntityNotFound(_0x3231cf,null))[_0x5769('0x22')](removeEntity(_0x3231cf,null))[_0x5769('0x44')](handleError(_0x3231cf,null));};
\ No newline at end of file
index 25f44eb..a119ace 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf150=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./template.attributes','define','lodash'];(function(_0x56426b,_0x365a0a){var _0x2fc3d8=function(_0x12535a){while(--_0x12535a){_0x56426b['push'](_0x56426b['shift']());}};_0x2fc3d8(++_0x365a0a);}(_0xf150,0x133));var _0x0f15=function(_0x2afe6f,_0x31e21a){_0x2afe6f=_0x2afe6f-0x0;var _0x13a467=_0xf150[_0x2afe6f];return _0x13a467;};'use strict';var _=require(_0x0f15('0x0'));var util=require(_0x0f15('0x1'));var logger=require(_0x0f15('0x2'))(_0x0f15('0x3'));var moment=require('moment');var BPromise=require(_0x0f15('0x4'));var rp=require(_0x0f15('0x5'));var fs=require('fs');var path=require(_0x0f15('0x6'));var rimraf=require(_0x0f15('0x7'));var config=require(_0x0f15('0x8'));var attributes=require(_0x0f15('0x9'));module['exports']=function(_0x1f78ba,_0x541ce8){return _0x1f78ba[_0x0f15('0xa')]('Template',attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0a85=['tools_templates','lodash','util','api','bluebird','request-promise','rimraf','./template.attributes','exports'];(function(_0x31cb5f,_0x2df766){var _0x586042=function(_0x53c807){while(--_0x53c807){_0x31cb5f['push'](_0x31cb5f['shift']());}};_0x586042(++_0x2df766);}(_0x0a85,0x6d));var _0x50a8=function(_0xb511d2,_0x314174){_0xb511d2=_0xb511d2-0x0;var _0x20d8d2=_0x0a85[_0xb511d2];return _0x20d8d2;};'use strict';var _=require(_0x50a8('0x0'));var util=require(_0x50a8('0x1'));var logger=require('../../config/logger')(_0x50a8('0x2'));var moment=require('moment');var BPromise=require(_0x50a8('0x3'));var rp=require(_0x50a8('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x50a8('0x5'));var config=require('../../config/environment');var attributes=require(_0x50a8('0x6'));module[_0x50a8('0x7')]=function(_0x3cfe94,_0x32ec51){return _0x3cfe94['define']('Template',attributes,{'tableName':_0x50a8('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 519c579..7f7ac4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19f3=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Template,\x20%s,\x20%s','catch','GetTemplate','Template','findAll','options','raw','where','attributes','map','include','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x39bc44,_0x1d4373){var _0x2916d8=function(_0x1767ac){while(--_0x1767ac){_0x39bc44['push'](_0x39bc44['shift']());}};_0x2916d8(++_0x1d4373);}(_0x19f3,0x1e2));var _0x319f=function(_0x3bc3b4,_0x5acff4){_0x3bc3b4=_0x3bc3b4-0x0;var _0x4c546b=_0x19f3[_0x3bc3b4];return _0x4c546b;};'use strict';var _=require(_0x319f('0x0'));var util=require(_0x319f('0x1'));var moment=require(_0x319f('0x2'));var BPromise=require(_0x319f('0x3'));var rs=require(_0x319f('0x4'));var fs=require('fs');var Redis=require(_0x319f('0x5'));var db=require(_0x319f('0x6'))['db'];var utils=require(_0x319f('0x7'));var logger=require(_0x319f('0x8'))(_0x319f('0x9'));var config=require(_0x319f('0xa'));var jayson=require(_0x319f('0xb'));var client=jayson['client'][_0x319f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x178bfc,_0xa5c1a1,_0x18fa66){return new BPromise(function(_0x411fb9,_0x1e245d){return client[_0x319f('0xd')](_0x178bfc,_0x18fa66)[_0x319f('0xe')](function(_0x1356bd){logger[_0x319f('0xf')]('Template,\x20%s,\x20%s',_0xa5c1a1,_0x319f('0x10'));logger[_0x319f('0x11')](_0x319f('0x12'),_0xa5c1a1,'request\x20sent',JSON[_0x319f('0x13')](_0x1356bd));if(_0x1356bd['error']){if(_0x1356bd[_0x319f('0x14')][_0x319f('0x15')]===0x1f4){logger[_0x319f('0x14')]('Template,\x20%s,\x20%s',_0xa5c1a1,_0x1356bd[_0x319f('0x14')][_0x319f('0x16')]);return _0x1e245d(_0x1356bd['error'][_0x319f('0x16')]);}logger['error'](_0x319f('0x17'),_0xa5c1a1,_0x1356bd[_0x319f('0x14')][_0x319f('0x16')]);return _0x411fb9(_0x1356bd[_0x319f('0x14')][_0x319f('0x16')]);}else{logger[_0x319f('0xf')]('Template,\x20%s,\x20%s',_0xa5c1a1,_0x319f('0x10'));_0x411fb9(_0x1356bd['result'][_0x319f('0x16')]);}})[_0x319f('0x18')](function(_0x5daa38){logger['error']('Template,\x20%s,\x20%s',_0xa5c1a1,_0x5daa38);_0x1e245d(_0x5daa38);});});}exports[_0x319f('0x19')]=function(_0x58c363){var _0x42b8fa=this;return new Promise(function(_0x9cb643,_0x12c0de){return db[_0x319f('0x1a')][_0x319f('0x1b')]({'raw':_0x58c363[_0x319f('0x1c')]?_0x58c363[_0x319f('0x1c')][_0x319f('0x1d')]===undefined?!![]:![]:!![],'where':_0x58c363[_0x319f('0x1c')]?_0x58c363['options'][_0x319f('0x1e')]||null:null,'attributes':_0x58c363[_0x319f('0x1c')]?_0x58c363[_0x319f('0x1c')][_0x319f('0x1f')]||null:null,'limit':_0x58c363[_0x319f('0x1c')]?_0x58c363[_0x319f('0x1c')]['limit']||null:null,'include':_0x58c363[_0x319f('0x1c')]?_0x58c363[_0x319f('0x1c')]['include']?_[_0x319f('0x20')](_0x58c363[_0x319f('0x1c')][_0x319f('0x21')],function(_0x558b6c){return{'model':db[_0x558b6c[_0x319f('0x22')]],'as':_0x558b6c['as'],'attributes':_0x558b6c['attributes'],'include':_0x558b6c[_0x319f('0x21')]?_[_0x319f('0x20')](_0x558b6c[_0x319f('0x21')],function(_0x307e95){return{'model':db[_0x307e95[_0x319f('0x22')]],'as':_0x307e95['as'],'attributes':_0x307e95[_0x319f('0x1f')],'include':_0x307e95[_0x319f('0x21')]?_[_0x319f('0x20')](_0x307e95[_0x319f('0x21')],function(_0x21fa1e){return{'model':db[_0x21fa1e[_0x319f('0x22')]],'as':_0x21fa1e['as'],'attributes':_0x21fa1e['attributes']};}):[]};}):[]};}):[]:[]})[_0x319f('0xe')](function(_0x152eae){logger[_0x319f('0xf')](_0x319f('0x19'),_0x58c363);logger[_0x319f('0x11')](_0x319f('0x19'),_0x58c363,JSON[_0x319f('0x13')](_0x152eae));_0x9cb643(_0x152eae);})[_0x319f('0x18')](function(_0x590a42){logger[_0x319f('0x14')]('GetTemplate',_0x590a42[_0x319f('0x16')],_0x58c363);_0x12c0de(_0x42b8fa[_0x319f('0x14')](0x1f4,_0x590a42[_0x319f('0x16')]));});});};
\ No newline at end of file
+var _0x5dd3=['Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','GetTemplate','Template','findAll','options','raw','include','map','model','attributes','catch','lodash','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info'];(function(_0x56857c,_0x4868cb){var _0x4027e7=function(_0x1b452f){while(--_0x1b452f){_0x56857c['push'](_0x56857c['shift']());}};_0x4027e7(++_0x4868cb);}(_0x5dd3,0x1c5));var _0x35dd=function(_0x57dff9,_0x37bd67){_0x57dff9=_0x57dff9-0x0;var _0x346ae6=_0x5dd3[_0x57dff9];return _0x346ae6;};'use strict';var _=require(_0x35dd('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x35dd('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x35dd('0x2'))['db'];var utils=require(_0x35dd('0x3'));var logger=require(_0x35dd('0x4'))(_0x35dd('0x5'));var config=require(_0x35dd('0x6'));var jayson=require(_0x35dd('0x7'));var client=jayson[_0x35dd('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0xce14d1,_0x1c8324,_0x29cf4d){return new BPromise(function(_0x2399a7,_0xcfa95a){return client['request'](_0xce14d1,_0x29cf4d)[_0x35dd('0x9')](function(_0x1bde86){logger[_0x35dd('0xa')](_0x35dd('0xb'),_0x1c8324,_0x35dd('0xc'));logger[_0x35dd('0xd')](_0x35dd('0xe'),_0x1c8324,'request\x20sent',JSON[_0x35dd('0xf')](_0x1bde86));if(_0x1bde86[_0x35dd('0x10')]){if(_0x1bde86[_0x35dd('0x10')][_0x35dd('0x11')]===0x1f4){logger[_0x35dd('0x10')](_0x35dd('0xb'),_0x1c8324,_0x1bde86[_0x35dd('0x10')][_0x35dd('0x12')]);return _0xcfa95a(_0x1bde86['error'][_0x35dd('0x12')]);}logger[_0x35dd('0x10')](_0x35dd('0xb'),_0x1c8324,_0x1bde86[_0x35dd('0x10')][_0x35dd('0x12')]);return _0x2399a7(_0x1bde86[_0x35dd('0x10')][_0x35dd('0x12')]);}else{logger[_0x35dd('0xa')]('Template,\x20%s,\x20%s',_0x1c8324,_0x35dd('0xc'));_0x2399a7(_0x1bde86['result']['message']);}})['catch'](function(_0x14af94){logger[_0x35dd('0x10')](_0x35dd('0xb'),_0x1c8324,_0x14af94);_0xcfa95a(_0x14af94);});});}exports[_0x35dd('0x13')]=function(_0x454d39){var _0x415e3a=this;return new Promise(function(_0x506621,_0x1a9662){return db[_0x35dd('0x14')][_0x35dd('0x15')]({'raw':_0x454d39['options']?_0x454d39[_0x35dd('0x16')][_0x35dd('0x17')]===undefined?!![]:![]:!![],'where':_0x454d39[_0x35dd('0x16')]?_0x454d39[_0x35dd('0x16')]['where']||null:null,'attributes':_0x454d39[_0x35dd('0x16')]?_0x454d39['options']['attributes']||null:null,'limit':_0x454d39['options']?_0x454d39[_0x35dd('0x16')]['limit']||null:null,'include':_0x454d39[_0x35dd('0x16')]?_0x454d39['options'][_0x35dd('0x18')]?_[_0x35dd('0x19')](_0x454d39[_0x35dd('0x16')][_0x35dd('0x18')],function(_0x571079){return{'model':db[_0x571079[_0x35dd('0x1a')]],'as':_0x571079['as'],'attributes':_0x571079['attributes'],'include':_0x571079[_0x35dd('0x18')]?_[_0x35dd('0x19')](_0x571079[_0x35dd('0x18')],function(_0x3775c7){return{'model':db[_0x3775c7[_0x35dd('0x1a')]],'as':_0x3775c7['as'],'attributes':_0x3775c7[_0x35dd('0x1b')],'include':_0x3775c7[_0x35dd('0x18')]?_[_0x35dd('0x19')](_0x3775c7['include'],function(_0x179302){return{'model':db[_0x179302[_0x35dd('0x1a')]],'as':_0x179302['as'],'attributes':_0x179302[_0x35dd('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x35dd('0x9')](function(_0x295c8e){logger[_0x35dd('0xa')](_0x35dd('0x13'),_0x454d39);logger[_0x35dd('0xd')](_0x35dd('0x13'),_0x454d39,JSON['stringify'](_0x295c8e));_0x506621(_0x295c8e);})[_0x35dd('0x1c')](function(_0x33ff60){logger[_0x35dd('0x10')](_0x35dd('0x13'),_0x33ff60[_0x35dd('0x12')],_0x454d39);_0x1a9662(_0x415e3a[_0x35dd('0x10')](0x1f4,_0x33ff60[_0x35dd('0x12')]));});});};
\ No newline at end of file
index 60e2e19..29d80a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25c9=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','./trigger.controller','get','index','/:id','isAuthenticated','show','/:id/all_conditions','getAllConditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','post','addAnyCondition','addAction','put','update','delete','destroy','exports','multer','util','path'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x25c9,0x1d9));var _0x925c=function(_0x22772e,_0x1d7084){_0x22772e=_0x22772e-0x0;var _0x2c8470=_0x25c9[_0x22772e];return _0x2c8470;};'use strict';var multer=require(_0x925c('0x0'));var util=require(_0x925c('0x1'));var path=require(_0x925c('0x2'));var timeout=require(_0x925c('0x3'));var express=require(_0x925c('0x4'));var router=express[_0x925c('0x5')]();var fs_extra=require(_0x925c('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x925c('0x7'));var config=require('../../config/environment');var controller=require(_0x925c('0x8'));router[_0x925c('0x9')]('/',auth['isAuthenticated'](),controller[_0x925c('0xa')]);router['get'](_0x925c('0xb'),auth[_0x925c('0xc')](),controller[_0x925c('0xd')]);router[_0x925c('0x9')](_0x925c('0xe'),auth['isAuthenticated'](),controller[_0x925c('0xf')]);router[_0x925c('0x9')](_0x925c('0x10'),auth['isAuthenticated'](),controller[_0x925c('0x11')]);router['get'](_0x925c('0x12'),auth[_0x925c('0xc')](),controller[_0x925c('0x13')]);router[_0x925c('0x14')]('/',auth[_0x925c('0xc')](),controller['create']);router[_0x925c('0x14')](_0x925c('0xe'),auth[_0x925c('0xc')](),controller['addAllCondition']);router[_0x925c('0x14')](_0x925c('0x10'),auth[_0x925c('0xc')](),controller[_0x925c('0x15')]);router['post']('/:id/actions',auth[_0x925c('0xc')](),controller[_0x925c('0x16')]);router[_0x925c('0x17')](_0x925c('0xb'),auth[_0x925c('0xc')](),controller[_0x925c('0x18')]);router[_0x925c('0x19')]('/:id',auth['isAuthenticated'](),controller[_0x925c('0x1a')]);module[_0x925c('0x1b')]=router;
\ No newline at end of file
+var _0x5205=['post','addAction','put','update','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/all_conditions','/:id/any_conditions','getAnyConditions','/:id/actions','getActions','create','addAllCondition'];(function(_0x3b65d8,_0xaeaa56){var _0x29895d=function(_0x31765e){while(--_0x31765e){_0x3b65d8['push'](_0x3b65d8['shift']());}};_0x29895d(++_0xaeaa56);}(_0x5205,0x1e1));var _0x5520=function(_0x34c488,_0x267618){_0x34c488=_0x34c488-0x0;var _0x1e41f7=_0x5205[_0x34c488];return _0x1e41f7;};'use strict';var multer=require(_0x5520('0x0'));var util=require(_0x5520('0x1'));var path=require('path');var timeout=require(_0x5520('0x2'));var express=require(_0x5520('0x3'));var router=express['Router']();var fs_extra=require(_0x5520('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5520('0x5'));var config=require(_0x5520('0x6'));var controller=require('./trigger.controller');router[_0x5520('0x7')]('/',auth[_0x5520('0x8')](),controller[_0x5520('0x9')]);router[_0x5520('0x7')](_0x5520('0xa'),auth['isAuthenticated'](),controller[_0x5520('0xb')]);router[_0x5520('0x7')](_0x5520('0xc'),auth[_0x5520('0x8')](),controller['getAllConditions']);router[_0x5520('0x7')](_0x5520('0xd'),auth[_0x5520('0x8')](),controller[_0x5520('0xe')]);router[_0x5520('0x7')](_0x5520('0xf'),auth[_0x5520('0x8')](),controller[_0x5520('0x10')]);router['post']('/',auth[_0x5520('0x8')](),controller[_0x5520('0x11')]);router['post'](_0x5520('0xc'),auth['isAuthenticated'](),controller[_0x5520('0x12')]);router[_0x5520('0x13')](_0x5520('0xd'),auth['isAuthenticated'](),controller['addAnyCondition']);router[_0x5520('0x13')](_0x5520('0xf'),auth[_0x5520('0x8')](),controller[_0x5520('0x14')]);router[_0x5520('0x15')](_0x5520('0xa'),auth['isAuthenticated'](),controller[_0x5520('0x16')]);router['delete'](_0x5520('0xa'),auth[_0x5520('0x8')](),controller[_0x5520('0x17')]);module[_0x5520('0x18')]=router;
\ No newline at end of file
index 78d8d10..96c3901 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0b5=['sequelize','STRING'];(function(_0x9c3c56,_0x169b56){var _0x2dd782=function(_0x386962){while(--_0x386962){_0x9c3c56['push'](_0x9c3c56['shift']());}};_0x2dd782(++_0x169b56);}(_0xb0b5,0x17a));var _0x5b0b=function(_0xc8db6b,_0x320abd){_0xc8db6b=_0xc8db6b-0x0;var _0x12cb81=_0xb0b5[_0xc8db6b];return _0x12cb81;};'use strict';var Sequelize=require(_0x5b0b('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x5b0b('0x1')]},'status':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xefbd=['STRING','BOOLEAN','sequelize','exports'];(function(_0x18611d,_0x265042){var _0xfd9f93=function(_0x1a39fa){while(--_0x1a39fa){_0x18611d['push'](_0x18611d['shift']());}};_0xfd9f93(++_0x265042);}(_0xefbd,0x15a));var _0xdefb=function(_0xf7e88a,_0x52a949){_0xf7e88a=_0xf7e88a-0x0;var _0x52e42e=_0xefbd[_0xf7e88a];return _0x52e42e;};'use strict';var Sequelize=require(_0xdefb('0x0'));module[_0xdefb('0x1')]={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xdefb('0x2')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0xdefb('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 0e932ec..c504037 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x982c=['Trigger','rawAttributes','fieldName','type','key','map','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','includeAll','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addAllCondition','TriggerAllId','addAnyCondition','TriggerAnyId','Condition','findOne','getAllConditions','getAnyConditions','addAction','TriggerId','Action','getActions','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','Content-Range','reject','save','update','then','destroy','get','Triggers','end','error','stack','name','send','index'];(function(_0x335b9b,_0x1bd2d4){var _0x309863=function(_0x5c5a0a){while(--_0x5c5a0a){_0x335b9b['push'](_0x335b9b['shift']());}};_0x309863(++_0x1bd2d4);}(_0x982c,0x1c4));var _0xc982=function(_0x32eeeb,_0x9a72ad){_0x32eeeb=_0x32eeeb-0x0;var _0x28528=_0x982c[_0x32eeeb];return _0x28528;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc982('0x0'));var zipdir=require(_0xc982('0x1'));var jsonpatch=require(_0xc982('0x2'));var rp=require(_0xc982('0x3'));var moment=require(_0xc982('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc982('0x5'));var util=require(_0xc982('0x6'));var path=require(_0xc982('0x7'));var sox=require(_0xc982('0x8'));var csv=require(_0xc982('0x9'));var ejs=require(_0xc982('0xa'));var fs=require('fs');var fs_extra=require(_0xc982('0xb'));var _=require(_0xc982('0xc'));var squel=require('squel');var crypto=require(_0xc982('0xd'));var jsforce=require(_0xc982('0xe'));var deskjs=require(_0xc982('0xf'));var toCsv=require(_0xc982('0x9'));var querystring=require(_0xc982('0x10'));var Papa=require(_0xc982('0x11'));var Redis=require(_0xc982('0x12'));var authService=require(_0xc982('0x13'));var qs=require(_0xc982('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc982('0x15'));var logger=require(_0xc982('0x16'))(_0xc982('0x17'));var utils=require('../../config/utils');var config=require(_0xc982('0x18'));var licenseUtil=require(_0xc982('0x19'));var db=require(_0xc982('0x1a'))['db'];function respondWithStatusCode(_0x4265b8,_0x9870){_0x9870=_0x9870||0xcc;return function(_0x1d3add){if(_0x1d3add){return _0x4265b8[_0xc982('0x1b')](_0x9870);}return _0x4265b8[_0xc982('0x1c')](_0x9870)['end']();};}function respondWithResult(_0x56dc1e,_0x133ad3){_0x133ad3=_0x133ad3||0xc8;return function(_0x44bc7b){if(_0x44bc7b){return _0x56dc1e['status'](_0x133ad3)[_0xc982('0x1d')](_0x44bc7b);}};}function respondWithFilteredResult(_0x1c9b3e,_0x1abaf1){return function(_0x32bf33){if(_0x32bf33){var _0x5916e1=typeof _0x1abaf1[_0xc982('0x1e')]==='undefined'&&typeof _0x1abaf1[_0xc982('0x1f')]===_0xc982('0x20');var _0x3d9f04=_0x32bf33['count'];var _0x3d9303=_0x5916e1?0x0:_0x1abaf1[_0xc982('0x1e')];var _0x5574f4=_0x5916e1?_0x32bf33[_0xc982('0x21')]:_0x1abaf1[_0xc982('0x1e')]+_0x1abaf1[_0xc982('0x1f')];var _0x49b792;if(_0x5574f4>=_0x3d9f04){_0x5574f4=_0x3d9f04;_0x49b792=0xc8;}else{_0x49b792=0xce;}_0x1c9b3e[_0xc982('0x1c')](_0x49b792);return _0x1c9b3e['set'](_0xc982('0x22'),_0x3d9303+'-'+_0x5574f4+'/'+_0x3d9f04)['json'](_0x32bf33);}return null;};}function patchUpdates(_0x2a3d4f){return function(_0x2be030){try{jsonpatch['apply'](_0x2be030,_0x2a3d4f,!![]);}catch(_0x493164){return BPromise[_0xc982('0x23')](_0x493164);}return _0x2be030[_0xc982('0x24')]();};}function saveUpdates(_0x1bd331,_0x56a6c7){return function(_0x7bbaa6){if(_0x7bbaa6){return _0x7bbaa6[_0xc982('0x25')](_0x1bd331)[_0xc982('0x26')](function(_0x5f3d41){return _0x5f3d41;});}return null;};}function removeEntity(_0x2a71bb,_0x139477){return function(_0x45cb3e){if(_0x45cb3e){return _0x45cb3e[_0xc982('0x27')]()[_0xc982('0x26')](function(){var _0x411db8=_0x45cb3e[_0xc982('0x28')]({'plain':!![]});var _0x1a4ec1=_0xc982('0x29');return db['UserProfileResource'][_0xc982('0x27')]({'where':{'type':_0x1a4ec1,'resourceId':_0x411db8['id']}})[_0xc982('0x26')](function(){return _0x45cb3e;});})[_0xc982('0x26')](function(){_0x2a71bb[_0xc982('0x1c')](0xcc)[_0xc982('0x2a')]();});}};}function handleEntityNotFound(_0x4f0e53,_0x274cbf){return function(_0x39b10d){if(!_0x39b10d){_0x4f0e53[_0xc982('0x1b')](0x194);}return _0x39b10d;};}function handleError(_0x5d98c4,_0x1b08bf){_0x1b08bf=_0x1b08bf||0x1f4;return function(_0x3f121c){logger[_0xc982('0x2b')](_0x3f121c[_0xc982('0x2c')]);if(_0x3f121c[_0xc982('0x2d')]){delete _0x3f121c[_0xc982('0x2d')];}_0x5d98c4['status'](_0x1b08bf)[_0xc982('0x2e')](_0x3f121c);};}exports[_0xc982('0x2f')]=function(_0x451dd7,_0x2e4916){var _0x5aca2e={},_0x33876b={},_0x216172={'count':0x0,'rows':[]};var _0x939e1b=_['map'](db[_0xc982('0x30')][_0xc982('0x31')],function(_0x36dffa){return{'name':_0x36dffa[_0xc982('0x32')],'type':_0x36dffa[_0xc982('0x33')][_0xc982('0x34')]};});_0x33876b['model']=_[_0xc982('0x35')](_0x939e1b,_0xc982('0x2d'));_0x33876b['query']=_[_0xc982('0x36')](_0x451dd7[_0xc982('0x37')]);_0x33876b[_0xc982('0x38')]=_[_0xc982('0x39')](_0x33876b[_0xc982('0x3a')],_0x33876b['query']);_0x5aca2e[_0xc982('0x3b')]=_[_0xc982('0x39')](_0x33876b['model'],qs[_0xc982('0x3c')](_0x451dd7[_0xc982('0x37')][_0xc982('0x3c')]));_0x5aca2e[_0xc982('0x3b')]=_0x5aca2e[_0xc982('0x3b')][_0xc982('0x3d')]?_0x5aca2e[_0xc982('0x3b')]:_0x33876b[_0xc982('0x3a')];if(!_0x451dd7[_0xc982('0x37')][_0xc982('0x3e')](_0xc982('0x3f'))){_0x5aca2e[_0xc982('0x1f')]=qs[_0xc982('0x1f')](_0x451dd7['query'][_0xc982('0x1f')]);_0x5aca2e[_0xc982('0x1e')]=qs[_0xc982('0x1e')](_0x451dd7[_0xc982('0x37')]['offset']);}_0x5aca2e[_0xc982('0x40')]=qs[_0xc982('0x41')](_0x451dd7[_0xc982('0x37')][_0xc982('0x41')]);_0x5aca2e[_0xc982('0x42')]=qs[_0xc982('0x38')](_[_0xc982('0x43')](_0x451dd7['query'],_0x33876b['filters']),_0x939e1b);if(_0x451dd7[_0xc982('0x37')]['filter']){_0x5aca2e['where']=_[_0xc982('0x44')](_0x5aca2e['where'],{'$or':_['map'](_0x939e1b,function(_0x3af1d8){if(_0x3af1d8[_0xc982('0x33')]!==_0xc982('0x45')){var _0x5e5e9e={};_0x5e5e9e[_0x3af1d8[_0xc982('0x2d')]]={'$like':'%'+_0x451dd7[_0xc982('0x37')][_0xc982('0x46')]+'%'};return _0x5e5e9e;}})});}_0x5aca2e=_[_0xc982('0x44')]({},_0x5aca2e,_0x451dd7[_0xc982('0x47')]);var _0x2e6b7d={'where':_0x5aca2e[_0xc982('0x42')]};return db[_0xc982('0x30')]['count'](_0x2e6b7d)[_0xc982('0x26')](function(_0xce3e6a){_0x216172[_0xc982('0x21')]=_0xce3e6a;if(_0x451dd7['query']['includeAll']){_0x5aca2e[_0xc982('0x48')]=[{'all':!![]}];}return db[_0xc982('0x30')][_0xc982('0x49')](_0x5aca2e);})[_0xc982('0x26')](function(_0x18f4d8){_0x216172[_0xc982('0x4a')]=_0x18f4d8;return _0x216172;})[_0xc982('0x26')](respondWithFilteredResult(_0x2e4916,_0x5aca2e))[_0xc982('0x4b')](handleError(_0x2e4916,null));};exports[_0xc982('0x4c')]=function(_0x5b5339,_0x302b27){var _0x5b0c1c={'raw':![],'where':{'id':_0x5b5339[_0xc982('0x4d')]['id']}},_0x1457f1={};_0x1457f1[_0xc982('0x3a')]=_[_0xc982('0x36')](db['Trigger'][_0xc982('0x31')]);_0x1457f1['query']=_[_0xc982('0x36')](_0x5b5339[_0xc982('0x37')]);_0x1457f1[_0xc982('0x38')]=_[_0xc982('0x39')](_0x1457f1[_0xc982('0x3a')],_0x1457f1[_0xc982('0x37')]);_0x5b0c1c[_0xc982('0x3b')]=_[_0xc982('0x39')](_0x1457f1[_0xc982('0x3a')],qs[_0xc982('0x3c')](_0x5b5339[_0xc982('0x37')][_0xc982('0x3c')]));_0x5b0c1c['attributes']=_0x5b0c1c['attributes'][_0xc982('0x3d')]?_0x5b0c1c[_0xc982('0x3b')]:_0x1457f1[_0xc982('0x3a')];if(_0x5b5339[_0xc982('0x37')][_0xc982('0x4e')]){_0x5b0c1c['include']=[{'all':!![]}];}_0x5b0c1c=_[_0xc982('0x44')]({},_0x5b0c1c,_0x5b5339[_0xc982('0x47')]);return db[_0xc982('0x30')][_0xc982('0x4f')](_0x5b0c1c)[_0xc982('0x26')](handleEntityNotFound(_0x302b27,null))[_0xc982('0x26')](respondWithResult(_0x302b27,null))['catch'](handleError(_0x302b27,null));};exports[_0xc982('0x50')]=function(_0x4bcfef,_0x305eea){return db[_0xc982('0x30')][_0xc982('0x50')](_0x4bcfef['body'],{})[_0xc982('0x26')](function(_0x3f6a56){var _0x3f7d19=_0x4bcfef['user'][_0xc982('0x28')]({'plain':!![]});if(!_0x3f7d19)throw new Error(_0xc982('0x51'));if(_0x3f7d19[_0xc982('0x52')]===_0xc982('0x53')){var _0x155c3e=_0x3f6a56['get']({'plain':!![]});var _0x2133f1=_0xc982('0x29');return db[_0xc982('0x54')][_0xc982('0x4f')]({'where':{'name':_0x2133f1,'userProfileId':_0x3f7d19['userProfileId']},'raw':!![]})[_0xc982('0x26')](function(_0x18194b){if(_0x18194b&&_0x18194b['autoAssociation']===0x0){return db[_0xc982('0x55')]['create']({'name':_0x155c3e[_0xc982('0x2d')],'resourceId':_0x155c3e['id'],'type':_0x18194b[_0xc982('0x2d')],'sectionId':_0x18194b['id']},{})['then'](function(){return _0x3f6a56;});}else{return _0x3f6a56;}})['catch'](function(_0x767bc7){logger['error'](_0xc982('0x56'),_0x767bc7);throw _0x767bc7;});}return _0x3f6a56;})[_0xc982('0x26')](respondWithResult(_0x305eea,0xc9))[_0xc982('0x4b')](handleError(_0x305eea,null));};exports[_0xc982('0x25')]=function(_0x77640d,_0x4b134a){if(_0x77640d[_0xc982('0x57')]['id']){delete _0x77640d[_0xc982('0x57')]['id'];}return db[_0xc982('0x30')]['find']({'where':{'id':_0x77640d[_0xc982('0x4d')]['id']}})[_0xc982('0x26')](handleEntityNotFound(_0x4b134a,null))[_0xc982('0x26')](saveUpdates(_0x77640d['body'],null))[_0xc982('0x26')](respondWithResult(_0x4b134a,null))[_0xc982('0x4b')](handleError(_0x4b134a,null));};exports['destroy']=function(_0x554ea3,_0x5ebc04){return db[_0xc982('0x30')][_0xc982('0x4f')]({'where':{'id':_0x554ea3[_0xc982('0x4d')]['id']}})[_0xc982('0x26')](handleEntityNotFound(_0x5ebc04,null))[_0xc982('0x26')](removeEntity(_0x5ebc04,null))['catch'](handleError(_0x5ebc04,null));};exports[_0xc982('0x58')]=function(_0x452374,_0x141e25,_0xe02248){if(_0x452374[_0xc982('0x57')]['id']){delete _0x452374[_0xc982('0x57')]['id'];}return db['Trigger'][_0xc982('0x4f')]({'where':{'id':_0x452374[_0xc982('0x4d')]['id']}})[_0xc982('0x26')](handleEntityNotFound(_0x141e25,null))[_0xc982('0x26')](function(_0xe5f62){if(_0xe5f62){_0x452374[_0xc982('0x57')][_0xc982('0x59')]=_0xe5f62['id'];return db['Condition'][_0xc982('0x50')](_0x452374[_0xc982('0x57')]);}})['then'](respondWithResult(_0x141e25,null))[_0xc982('0x4b')](handleError(_0x141e25,null));};exports[_0xc982('0x5a')]=function(_0x31198c,_0x4d1571,_0x229668){if(_0x31198c[_0xc982('0x57')]['id']){delete _0x31198c['body']['id'];}return db[_0xc982('0x30')]['find']({'where':{'id':_0x31198c[_0xc982('0x4d')]['id']}})[_0xc982('0x26')](handleEntityNotFound(_0x4d1571,null))[_0xc982('0x26')](function(_0x1e3c92){if(_0x1e3c92){_0x31198c[_0xc982('0x57')][_0xc982('0x5b')]=_0x1e3c92['id'];return db[_0xc982('0x5c')]['create'](_0x31198c[_0xc982('0x57')]);}})[_0xc982('0x26')](respondWithResult(_0x4d1571,null))[_0xc982('0x4b')](handleError(_0x4d1571,null));};exports['getAllConditions']=function(_0x541673,_0x4a7ee2,_0x123124){var _0x44ed07={};var _0x1adef1={};var _0x20f97f;var _0x1972a4;return db[_0xc982('0x30')][_0xc982('0x5d')]({'where':{'id':_0x541673[_0xc982('0x4d')]['id']}})[_0xc982('0x26')](handleEntityNotFound(_0x4a7ee2,null))[_0xc982('0x26')](function(_0x1a136d){if(_0x1a136d){_0x20f97f=_0x1a136d;_0x1adef1[_0xc982('0x3a')]=_['keys'](db[_0xc982('0x5c')][_0xc982('0x31')]);_0x1adef1['query']=_[_0xc982('0x36')](_0x541673[_0xc982('0x37')]);_0x1adef1[_0xc982('0x38')]=_[_0xc982('0x39')](_0x1adef1[_0xc982('0x3a')],_0x1adef1[_0xc982('0x37')]);_0x44ed07[_0xc982('0x3b')]=_[_0xc982('0x39')](_0x1adef1[_0xc982('0x3a')],qs[_0xc982('0x3c')](_0x541673['query']['fields']));_0x44ed07[_0xc982('0x3b')]=_0x44ed07['attributes'][_0xc982('0x3d')]?_0x44ed07[_0xc982('0x3b')]:_0x1adef1[_0xc982('0x3a')];_0x44ed07[_0xc982('0x40')]=qs[_0xc982('0x41')](_0x541673[_0xc982('0x37')][_0xc982('0x41')]);_0x44ed07[_0xc982('0x42')]=qs[_0xc982('0x38')](_[_0xc982('0x43')](_0x541673[_0xc982('0x37')],_0x1adef1[_0xc982('0x38')]));if(_0x541673['query'][_0xc982('0x46')]){_0x44ed07[_0xc982('0x42')]=_[_0xc982('0x44')](_0x44ed07[_0xc982('0x42')],{'$or':_['map'](_0x44ed07[_0xc982('0x3b')],function(_0x313f63){var _0x19f8e9={};_0x19f8e9[_0x313f63]={'$like':'%'+_0x541673[_0xc982('0x37')][_0xc982('0x46')]+'%'};return _0x19f8e9;})});}_0x44ed07=_[_0xc982('0x44')]({},_0x44ed07,_0x541673[_0xc982('0x47')]);return _0x20f97f[_0xc982('0x5e')](_0x44ed07);}})[_0xc982('0x26')](function(_0x428215){if(_0x428215){_0x1972a4=_0x428215['length'];if(!_0x541673[_0xc982('0x37')][_0xc982('0x3e')](_0xc982('0x3f'))){_0x44ed07[_0xc982('0x1f')]=qs[_0xc982('0x1f')](_0x541673[_0xc982('0x37')]['limit']);_0x44ed07['offset']=qs['offset'](_0x541673[_0xc982('0x37')]['offset']);}return _0x20f97f[_0xc982('0x5e')](_0x44ed07);}})['then'](function(_0x5db841){if(_0x5db841){return _0x5db841?{'count':_0x1972a4,'rows':_0x5db841}:null;}})[_0xc982('0x26')](respondWithResult(_0x4a7ee2,null))[_0xc982('0x4b')](handleError(_0x4a7ee2,null));};exports[_0xc982('0x5f')]=function(_0x17bd41,_0x3b652c,_0x4dab79){var _0x55c70a={};var _0x384d84={};var _0x2c5dc4;var _0x4a1a5f;return db['Trigger'][_0xc982('0x5d')]({'where':{'id':_0x17bd41['params']['id']}})['then'](handleEntityNotFound(_0x3b652c,null))['then'](function(_0x2b6f22){if(_0x2b6f22){_0x2c5dc4=_0x2b6f22;_0x384d84[_0xc982('0x3a')]=_[_0xc982('0x36')](db['Condition'][_0xc982('0x31')]);_0x384d84[_0xc982('0x37')]=_[_0xc982('0x36')](_0x17bd41[_0xc982('0x37')]);_0x384d84[_0xc982('0x38')]=_[_0xc982('0x39')](_0x384d84['model'],_0x384d84['query']);_0x55c70a[_0xc982('0x3b')]=_[_0xc982('0x39')](_0x384d84[_0xc982('0x3a')],qs[_0xc982('0x3c')](_0x17bd41[_0xc982('0x37')][_0xc982('0x3c')]));_0x55c70a[_0xc982('0x3b')]=_0x55c70a[_0xc982('0x3b')][_0xc982('0x3d')]?_0x55c70a['attributes']:_0x384d84['model'];_0x55c70a[_0xc982('0x40')]=qs[_0xc982('0x41')](_0x17bd41['query']['sort']);_0x55c70a[_0xc982('0x42')]=qs[_0xc982('0x38')](_[_0xc982('0x43')](_0x17bd41['query'],_0x384d84[_0xc982('0x38')]));if(_0x17bd41[_0xc982('0x37')][_0xc982('0x46')]){_0x55c70a[_0xc982('0x42')]=_[_0xc982('0x44')](_0x55c70a[_0xc982('0x42')],{'$or':_[_0xc982('0x35')](_0x55c70a[_0xc982('0x3b')],function(_0x39b33b){var _0x1eedea={};_0x1eedea[_0x39b33b]={'$like':'%'+_0x17bd41['query'][_0xc982('0x46')]+'%'};return _0x1eedea;})});}_0x55c70a=_['merge']({},_0x55c70a,_0x17bd41[_0xc982('0x47')]);return _0x2c5dc4['getAnyConditions'](_0x55c70a);}})[_0xc982('0x26')](function(_0x1c3076){if(_0x1c3076){_0x4a1a5f=_0x1c3076[_0xc982('0x3d')];if(!_0x17bd41[_0xc982('0x37')][_0xc982('0x3e')](_0xc982('0x3f'))){_0x55c70a['limit']=qs[_0xc982('0x1f')](_0x17bd41[_0xc982('0x37')][_0xc982('0x1f')]);_0x55c70a[_0xc982('0x1e')]=qs['offset'](_0x17bd41[_0xc982('0x37')][_0xc982('0x1e')]);}return _0x2c5dc4[_0xc982('0x5f')](_0x55c70a);}})[_0xc982('0x26')](function(_0x4730da){if(_0x4730da){return _0x4730da?{'count':_0x4a1a5f,'rows':_0x4730da}:null;}})[_0xc982('0x26')](respondWithResult(_0x3b652c,null))[_0xc982('0x4b')](handleError(_0x3b652c,null));};exports[_0xc982('0x60')]=function(_0x483270,_0x226767,_0x1be572){if(_0x483270['body']['id']){delete _0x483270[_0xc982('0x57')]['id'];}return db['Trigger'][_0xc982('0x4f')]({'where':{'id':_0x483270['params']['id']}})[_0xc982('0x26')](handleEntityNotFound(_0x226767,null))['then'](function(_0x4bc8d2){if(_0x4bc8d2){_0x483270[_0xc982('0x57')][_0xc982('0x61')]=_0x4bc8d2['id'];return db['Action'][_0xc982('0x50')](_0x483270[_0xc982('0x57')]);}})['then'](respondWithResult(_0x226767,null))[_0xc982('0x4b')](handleError(_0x226767,null));};exports['getActions']=function(_0x20a55d,_0x2aac49,_0x2810b2){var _0x197b28={};var _0x29b6dd={};var _0x235808;var _0x1986f4;return db[_0xc982('0x30')][_0xc982('0x5d')]({'where':{'id':_0x20a55d[_0xc982('0x4d')]['id']}})[_0xc982('0x26')](handleEntityNotFound(_0x2aac49,null))[_0xc982('0x26')](function(_0xa8e340){if(_0xa8e340){_0x235808=_0xa8e340;_0x29b6dd[_0xc982('0x3a')]=_[_0xc982('0x36')](db[_0xc982('0x62')][_0xc982('0x31')]);_0x29b6dd['query']=_[_0xc982('0x36')](_0x20a55d[_0xc982('0x37')]);_0x29b6dd[_0xc982('0x38')]=_[_0xc982('0x39')](_0x29b6dd[_0xc982('0x3a')],_0x29b6dd[_0xc982('0x37')]);_0x197b28[_0xc982('0x3b')]=_[_0xc982('0x39')](_0x29b6dd['model'],qs[_0xc982('0x3c')](_0x20a55d[_0xc982('0x37')][_0xc982('0x3c')]));_0x197b28[_0xc982('0x3b')]=_0x197b28[_0xc982('0x3b')][_0xc982('0x3d')]?_0x197b28[_0xc982('0x3b')]:_0x29b6dd['model'];_0x197b28[_0xc982('0x40')]=qs[_0xc982('0x41')](_0x20a55d[_0xc982('0x37')][_0xc982('0x41')]);_0x197b28[_0xc982('0x42')]=qs['filters'](_[_0xc982('0x43')](_0x20a55d[_0xc982('0x37')],_0x29b6dd[_0xc982('0x38')]));if(_0x20a55d[_0xc982('0x37')]['filter']){_0x197b28[_0xc982('0x42')]=_['merge'](_0x197b28['where'],{'$or':_[_0xc982('0x35')](_0x197b28[_0xc982('0x3b')],function(_0x1d0d28){var _0x593d38={};_0x593d38[_0x1d0d28]={'$like':'%'+_0x20a55d['query'][_0xc982('0x46')]+'%'};return _0x593d38;})});}_0x197b28=_[_0xc982('0x44')]({},_0x197b28,_0x20a55d[_0xc982('0x47')]);return _0x235808[_0xc982('0x63')](_0x197b28);}})[_0xc982('0x26')](function(_0x371dc6){if(_0x371dc6){_0x1986f4=_0x371dc6[_0xc982('0x3d')];if(!_0x20a55d[_0xc982('0x37')][_0xc982('0x3e')](_0xc982('0x3f'))){_0x197b28['limit']=qs[_0xc982('0x1f')](_0x20a55d[_0xc982('0x37')][_0xc982('0x1f')]);_0x197b28[_0xc982('0x1e')]=qs['offset'](_0x20a55d[_0xc982('0x37')]['offset']);}return _0x235808[_0xc982('0x63')](_0x197b28);}})[_0xc982('0x26')](function(_0x12e520){if(_0x12e520){return _0x12e520?{'count':_0x1986f4,'rows':_0x12e520}:null;}})[_0xc982('0x26')](respondWithResult(_0x2aac49,null))['catch'](handleError(_0x2aac49,null));};
\ No newline at end of file
+var _0xbd40=['TriggerAnyId','getAllConditions','order','pick','getAnyConditions','findOne','TriggerId','getActions','Action','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','lodash','squel','crypto','jsforce','desk.js','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','limit','undefined','set','Content-Range','apply','reject','save','update','then','destroy','Triggers','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','VIRTUAL','Trigger','count','include','params','includeAll','options','find','catch','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','Condition'];(function(_0x572286,_0x32c2bc){var _0x25fcbb=function(_0x1ae69b){while(--_0x1ae69b){_0x572286['push'](_0x572286['shift']());}};_0x25fcbb(++_0x32c2bc);}(_0xbd40,0x120));var _0x0bd4=function(_0x55c2b2,_0x52003a){_0x55c2b2=_0x55c2b2-0x0;var _0x1f93b0=_0xbd40[_0x55c2b2];return _0x1f93b0;};'use strict';var emlformat=require(_0x0bd4('0x0'));var rimraf=require(_0x0bd4('0x1'));var zipdir=require(_0x0bd4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0bd4('0x3'));var moment=require(_0x0bd4('0x4'));var BPromise=require(_0x0bd4('0x5'));var Mustache=require(_0x0bd4('0x6'));var util=require(_0x0bd4('0x7'));var path=require(_0x0bd4('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0bd4('0x9'));var squel=require(_0x0bd4('0xa'));var crypto=require(_0x0bd4('0xb'));var jsforce=require(_0x0bd4('0xc'));var deskjs=require(_0x0bd4('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x0bd4('0xe'));var authService=require(_0x0bd4('0xf'));var qs=require(_0x0bd4('0x10'));var as=require(_0x0bd4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0bd4('0x12'))('api');var utils=require(_0x0bd4('0x13'));var config=require(_0x0bd4('0x14'));var licenseUtil=require(_0x0bd4('0x15'));var db=require(_0x0bd4('0x16'))['db'];function respondWithStatusCode(_0xe0381,_0x154ee8){_0x154ee8=_0x154ee8||0xcc;return function(_0x2199a2){if(_0x2199a2){return _0xe0381[_0x0bd4('0x17')](_0x154ee8);}return _0xe0381[_0x0bd4('0x18')](_0x154ee8)[_0x0bd4('0x19')]();};}function respondWithResult(_0x5e2bdb,_0x3331d1){_0x3331d1=_0x3331d1||0xc8;return function(_0x341564){if(_0x341564){return _0x5e2bdb[_0x0bd4('0x18')](_0x3331d1)[_0x0bd4('0x1a')](_0x341564);}};}function respondWithFilteredResult(_0x3b8549,_0x159116){return function(_0x2955c5){if(_0x2955c5){var _0x42224c=typeof _0x159116[_0x0bd4('0x1b')]==='undefined'&&typeof _0x159116[_0x0bd4('0x1c')]===_0x0bd4('0x1d');var _0xb45dbd=_0x2955c5['count'];var _0x1a3d30=_0x42224c?0x0:_0x159116['offset'];var _0x13e1f1=_0x42224c?_0x2955c5['count']:_0x159116[_0x0bd4('0x1b')]+_0x159116[_0x0bd4('0x1c')];var _0x1949ee;if(_0x13e1f1>=_0xb45dbd){_0x13e1f1=_0xb45dbd;_0x1949ee=0xc8;}else{_0x1949ee=0xce;}_0x3b8549[_0x0bd4('0x18')](_0x1949ee);return _0x3b8549[_0x0bd4('0x1e')](_0x0bd4('0x1f'),_0x1a3d30+'-'+_0x13e1f1+'/'+_0xb45dbd)[_0x0bd4('0x1a')](_0x2955c5);}return null;};}function patchUpdates(_0x25150b){return function(_0x2a55e7){try{jsonpatch[_0x0bd4('0x20')](_0x2a55e7,_0x25150b,!![]);}catch(_0x2e086a){return BPromise[_0x0bd4('0x21')](_0x2e086a);}return _0x2a55e7[_0x0bd4('0x22')]();};}function saveUpdates(_0x5dcca0,_0x20b499){return function(_0x1040c6){if(_0x1040c6){return _0x1040c6[_0x0bd4('0x23')](_0x5dcca0)[_0x0bd4('0x24')](function(_0x37e3f7){return _0x37e3f7;});}return null;};}function removeEntity(_0x530d43,_0x337b39){return function(_0x23f7a9){if(_0x23f7a9){return _0x23f7a9[_0x0bd4('0x25')]()['then'](function(){var _0x14bffa=_0x23f7a9['get']({'plain':!![]});var _0x1858e0=_0x0bd4('0x26');return db['UserProfileResource']['destroy']({'where':{'type':_0x1858e0,'resourceId':_0x14bffa['id']}})['then'](function(){return _0x23f7a9;});})['then'](function(){_0x530d43[_0x0bd4('0x18')](0xcc)[_0x0bd4('0x19')]();});}};}function handleEntityNotFound(_0x4e2322,_0x2ddffa){return function(_0x1166ad){if(!_0x1166ad){_0x4e2322[_0x0bd4('0x17')](0x194);}return _0x1166ad;};}function handleError(_0x14d284,_0x2abaa2){_0x2abaa2=_0x2abaa2||0x1f4;return function(_0x129fb3){logger[_0x0bd4('0x27')](_0x129fb3[_0x0bd4('0x28')]);if(_0x129fb3[_0x0bd4('0x29')]){delete _0x129fb3[_0x0bd4('0x29')];}_0x14d284['status'](_0x2abaa2)[_0x0bd4('0x2a')](_0x129fb3);};}exports['index']=function(_0x3ec8d5,_0xb9c08b){var _0x2a3530={},_0x499246={},_0xb7bb98={'count':0x0,'rows':[]};var _0x20ab34=_[_0x0bd4('0x2b')](db['Trigger'][_0x0bd4('0x2c')],function(_0x2b06ef){return{'name':_0x2b06ef[_0x0bd4('0x2d')],'type':_0x2b06ef[_0x0bd4('0x2e')][_0x0bd4('0x2f')]};});_0x499246[_0x0bd4('0x30')]=_[_0x0bd4('0x2b')](_0x20ab34,_0x0bd4('0x29'));_0x499246['query']=_[_0x0bd4('0x31')](_0x3ec8d5[_0x0bd4('0x32')]);_0x499246['filters']=_[_0x0bd4('0x33')](_0x499246['model'],_0x499246[_0x0bd4('0x32')]);_0x2a3530[_0x0bd4('0x34')]=_[_0x0bd4('0x33')](_0x499246[_0x0bd4('0x30')],qs[_0x0bd4('0x35')](_0x3ec8d5[_0x0bd4('0x32')][_0x0bd4('0x35')]));_0x2a3530[_0x0bd4('0x34')]=_0x2a3530['attributes'][_0x0bd4('0x36')]?_0x2a3530[_0x0bd4('0x34')]:_0x499246[_0x0bd4('0x30')];if(!_0x3ec8d5[_0x0bd4('0x32')][_0x0bd4('0x37')](_0x0bd4('0x38'))){_0x2a3530[_0x0bd4('0x1c')]=qs[_0x0bd4('0x1c')](_0x3ec8d5[_0x0bd4('0x32')][_0x0bd4('0x1c')]);_0x2a3530['offset']=qs[_0x0bd4('0x1b')](_0x3ec8d5[_0x0bd4('0x32')]['offset']);}_0x2a3530['order']=qs[_0x0bd4('0x39')](_0x3ec8d5['query']['sort']);_0x2a3530[_0x0bd4('0x3a')]=qs[_0x0bd4('0x3b')](_['pick'](_0x3ec8d5[_0x0bd4('0x32')],_0x499246[_0x0bd4('0x3b')]),_0x20ab34);if(_0x3ec8d5[_0x0bd4('0x32')][_0x0bd4('0x3c')]){_0x2a3530[_0x0bd4('0x3a')]=_[_0x0bd4('0x3d')](_0x2a3530['where'],{'$or':_['map'](_0x20ab34,function(_0x527f35){if(_0x527f35[_0x0bd4('0x2e')]!==_0x0bd4('0x3e')){var _0x459277={};_0x459277[_0x527f35[_0x0bd4('0x29')]]={'$like':'%'+_0x3ec8d5[_0x0bd4('0x32')][_0x0bd4('0x3c')]+'%'};return _0x459277;}})});}_0x2a3530=_[_0x0bd4('0x3d')]({},_0x2a3530,_0x3ec8d5['options']);var _0xa8f976={'where':_0x2a3530['where']};return db[_0x0bd4('0x3f')][_0x0bd4('0x40')](_0xa8f976)[_0x0bd4('0x24')](function(_0x10d43b){_0xb7bb98['count']=_0x10d43b;if(_0x3ec8d5[_0x0bd4('0x32')]['includeAll']){_0x2a3530[_0x0bd4('0x41')]=[{'all':!![]}];}return db[_0x0bd4('0x3f')]['findAll'](_0x2a3530);})[_0x0bd4('0x24')](function(_0x585440){_0xb7bb98['rows']=_0x585440;return _0xb7bb98;})[_0x0bd4('0x24')](respondWithFilteredResult(_0xb9c08b,_0x2a3530))['catch'](handleError(_0xb9c08b,null));};exports['show']=function(_0x400d04,_0x442763){var _0x4f7a6d={'raw':![],'where':{'id':_0x400d04[_0x0bd4('0x42')]['id']}},_0x3b7d2b={};_0x3b7d2b[_0x0bd4('0x30')]=_['keys'](db['Trigger'][_0x0bd4('0x2c')]);_0x3b7d2b['query']=_[_0x0bd4('0x31')](_0x400d04[_0x0bd4('0x32')]);_0x3b7d2b['filters']=_[_0x0bd4('0x33')](_0x3b7d2b['model'],_0x3b7d2b['query']);_0x4f7a6d[_0x0bd4('0x34')]=_[_0x0bd4('0x33')](_0x3b7d2b[_0x0bd4('0x30')],qs[_0x0bd4('0x35')](_0x400d04[_0x0bd4('0x32')][_0x0bd4('0x35')]));_0x4f7a6d['attributes']=_0x4f7a6d[_0x0bd4('0x34')][_0x0bd4('0x36')]?_0x4f7a6d[_0x0bd4('0x34')]:_0x3b7d2b[_0x0bd4('0x30')];if(_0x400d04[_0x0bd4('0x32')][_0x0bd4('0x43')]){_0x4f7a6d[_0x0bd4('0x41')]=[{'all':!![]}];}_0x4f7a6d=_[_0x0bd4('0x3d')]({},_0x4f7a6d,_0x400d04[_0x0bd4('0x44')]);return db[_0x0bd4('0x3f')][_0x0bd4('0x45')](_0x4f7a6d)[_0x0bd4('0x24')](handleEntityNotFound(_0x442763,null))[_0x0bd4('0x24')](respondWithResult(_0x442763,null))[_0x0bd4('0x46')](handleError(_0x442763,null));};exports['create']=function(_0x5b5b20,_0x2cd59b){return db[_0x0bd4('0x3f')]['create'](_0x5b5b20[_0x0bd4('0x47')],{})['then'](function(_0x63a611){var _0x39af8e=_0x5b5b20[_0x0bd4('0x48')][_0x0bd4('0x49')]({'plain':!![]});if(!_0x39af8e)throw new Error(_0x0bd4('0x4a'));if(_0x39af8e[_0x0bd4('0x4b')]===_0x0bd4('0x48')){var _0x5e1b46=_0x63a611[_0x0bd4('0x49')]({'plain':!![]});var _0x1881e2='Triggers';return db[_0x0bd4('0x4c')][_0x0bd4('0x45')]({'where':{'name':_0x1881e2,'userProfileId':_0x39af8e['userProfileId']},'raw':!![]})[_0x0bd4('0x24')](function(_0x3dba0d){if(_0x3dba0d&&_0x3dba0d[_0x0bd4('0x4d')]===0x0){return db[_0x0bd4('0x4e')][_0x0bd4('0x4f')]({'name':_0x5e1b46[_0x0bd4('0x29')],'resourceId':_0x5e1b46['id'],'type':_0x3dba0d[_0x0bd4('0x29')],'sectionId':_0x3dba0d['id']},{})[_0x0bd4('0x24')](function(){return _0x63a611;});}else{return _0x63a611;}})[_0x0bd4('0x46')](function(_0x2ce9d5){logger[_0x0bd4('0x27')](_0x0bd4('0x50'),_0x2ce9d5);throw _0x2ce9d5;});}return _0x63a611;})[_0x0bd4('0x24')](respondWithResult(_0x2cd59b,0xc9))[_0x0bd4('0x46')](handleError(_0x2cd59b,null));};exports[_0x0bd4('0x23')]=function(_0x37c3a4,_0x41adf9){if(_0x37c3a4[_0x0bd4('0x47')]['id']){delete _0x37c3a4[_0x0bd4('0x47')]['id'];}return db[_0x0bd4('0x3f')][_0x0bd4('0x45')]({'where':{'id':_0x37c3a4[_0x0bd4('0x42')]['id']}})[_0x0bd4('0x24')](handleEntityNotFound(_0x41adf9,null))['then'](saveUpdates(_0x37c3a4[_0x0bd4('0x47')],null))[_0x0bd4('0x24')](respondWithResult(_0x41adf9,null))[_0x0bd4('0x46')](handleError(_0x41adf9,null));};exports[_0x0bd4('0x25')]=function(_0x9b37f,_0x1031da){return db[_0x0bd4('0x3f')][_0x0bd4('0x45')]({'where':{'id':_0x9b37f[_0x0bd4('0x42')]['id']}})[_0x0bd4('0x24')](handleEntityNotFound(_0x1031da,null))[_0x0bd4('0x24')](removeEntity(_0x1031da,null))[_0x0bd4('0x46')](handleError(_0x1031da,null));};exports[_0x0bd4('0x51')]=function(_0x183c3f,_0x9f6f89,_0x5522d8){if(_0x183c3f[_0x0bd4('0x47')]['id']){delete _0x183c3f[_0x0bd4('0x47')]['id'];}return db['Trigger'][_0x0bd4('0x45')]({'where':{'id':_0x183c3f[_0x0bd4('0x42')]['id']}})[_0x0bd4('0x24')](handleEntityNotFound(_0x9f6f89,null))[_0x0bd4('0x24')](function(_0x271932){if(_0x271932){_0x183c3f[_0x0bd4('0x47')][_0x0bd4('0x52')]=_0x271932['id'];return db[_0x0bd4('0x53')][_0x0bd4('0x4f')](_0x183c3f[_0x0bd4('0x47')]);}})[_0x0bd4('0x24')](respondWithResult(_0x9f6f89,null))[_0x0bd4('0x46')](handleError(_0x9f6f89,null));};exports['addAnyCondition']=function(_0x21672c,_0x55f425,_0x2be042){if(_0x21672c[_0x0bd4('0x47')]['id']){delete _0x21672c[_0x0bd4('0x47')]['id'];}return db['Trigger'][_0x0bd4('0x45')]({'where':{'id':_0x21672c['params']['id']}})[_0x0bd4('0x24')](handleEntityNotFound(_0x55f425,null))[_0x0bd4('0x24')](function(_0x4b9b88){if(_0x4b9b88){_0x21672c['body'][_0x0bd4('0x54')]=_0x4b9b88['id'];return db[_0x0bd4('0x53')]['create'](_0x21672c[_0x0bd4('0x47')]);}})['then'](respondWithResult(_0x55f425,null))[_0x0bd4('0x46')](handleError(_0x55f425,null));};exports[_0x0bd4('0x55')]=function(_0x3db07b,_0x34a7b4,_0x2726ba){var _0x5ad940={};var _0x259a2a={};var _0x43c566;var _0x144c00;return db[_0x0bd4('0x3f')]['findOne']({'where':{'id':_0x3db07b[_0x0bd4('0x42')]['id']}})['then'](handleEntityNotFound(_0x34a7b4,null))[_0x0bd4('0x24')](function(_0x4e737b){if(_0x4e737b){_0x43c566=_0x4e737b;_0x259a2a[_0x0bd4('0x30')]=_['keys'](db[_0x0bd4('0x53')][_0x0bd4('0x2c')]);_0x259a2a[_0x0bd4('0x32')]=_['keys'](_0x3db07b[_0x0bd4('0x32')]);_0x259a2a['filters']=_[_0x0bd4('0x33')](_0x259a2a[_0x0bd4('0x30')],_0x259a2a[_0x0bd4('0x32')]);_0x5ad940['attributes']=_['intersection'](_0x259a2a[_0x0bd4('0x30')],qs['fields'](_0x3db07b[_0x0bd4('0x32')][_0x0bd4('0x35')]));_0x5ad940['attributes']=_0x5ad940[_0x0bd4('0x34')][_0x0bd4('0x36')]?_0x5ad940['attributes']:_0x259a2a[_0x0bd4('0x30')];_0x5ad940[_0x0bd4('0x56')]=qs[_0x0bd4('0x39')](_0x3db07b['query'][_0x0bd4('0x39')]);_0x5ad940[_0x0bd4('0x3a')]=qs[_0x0bd4('0x3b')](_[_0x0bd4('0x57')](_0x3db07b[_0x0bd4('0x32')],_0x259a2a[_0x0bd4('0x3b')]));if(_0x3db07b['query'][_0x0bd4('0x3c')]){_0x5ad940[_0x0bd4('0x3a')]=_[_0x0bd4('0x3d')](_0x5ad940[_0x0bd4('0x3a')],{'$or':_[_0x0bd4('0x2b')](_0x5ad940[_0x0bd4('0x34')],function(_0x1827b5){var _0x4c5710={};_0x4c5710[_0x1827b5]={'$like':'%'+_0x3db07b[_0x0bd4('0x32')][_0x0bd4('0x3c')]+'%'};return _0x4c5710;})});}_0x5ad940=_[_0x0bd4('0x3d')]({},_0x5ad940,_0x3db07b[_0x0bd4('0x44')]);return _0x43c566['getAllConditions'](_0x5ad940);}})[_0x0bd4('0x24')](function(_0x458fac){if(_0x458fac){_0x144c00=_0x458fac[_0x0bd4('0x36')];if(!_0x3db07b[_0x0bd4('0x32')][_0x0bd4('0x37')]('nolimit')){_0x5ad940[_0x0bd4('0x1c')]=qs[_0x0bd4('0x1c')](_0x3db07b[_0x0bd4('0x32')][_0x0bd4('0x1c')]);_0x5ad940[_0x0bd4('0x1b')]=qs[_0x0bd4('0x1b')](_0x3db07b[_0x0bd4('0x32')][_0x0bd4('0x1b')]);}return _0x43c566[_0x0bd4('0x55')](_0x5ad940);}})['then'](function(_0x2259fb){if(_0x2259fb){return _0x2259fb?{'count':_0x144c00,'rows':_0x2259fb}:null;}})['then'](respondWithResult(_0x34a7b4,null))[_0x0bd4('0x46')](handleError(_0x34a7b4,null));};exports[_0x0bd4('0x58')]=function(_0x15c96d,_0x35d10d,_0x5c9499){var _0x2c365e={};var _0x24568e={};var _0x1d077e;var _0x526710;return db[_0x0bd4('0x3f')][_0x0bd4('0x59')]({'where':{'id':_0x15c96d[_0x0bd4('0x42')]['id']}})['then'](handleEntityNotFound(_0x35d10d,null))[_0x0bd4('0x24')](function(_0x41a2bc){if(_0x41a2bc){_0x1d077e=_0x41a2bc;_0x24568e[_0x0bd4('0x30')]=_[_0x0bd4('0x31')](db[_0x0bd4('0x53')][_0x0bd4('0x2c')]);_0x24568e[_0x0bd4('0x32')]=_['keys'](_0x15c96d['query']);_0x24568e['filters']=_[_0x0bd4('0x33')](_0x24568e[_0x0bd4('0x30')],_0x24568e['query']);_0x2c365e[_0x0bd4('0x34')]=_[_0x0bd4('0x33')](_0x24568e[_0x0bd4('0x30')],qs[_0x0bd4('0x35')](_0x15c96d[_0x0bd4('0x32')][_0x0bd4('0x35')]));_0x2c365e['attributes']=_0x2c365e[_0x0bd4('0x34')][_0x0bd4('0x36')]?_0x2c365e[_0x0bd4('0x34')]:_0x24568e[_0x0bd4('0x30')];_0x2c365e[_0x0bd4('0x56')]=qs[_0x0bd4('0x39')](_0x15c96d[_0x0bd4('0x32')][_0x0bd4('0x39')]);_0x2c365e['where']=qs['filters'](_['pick'](_0x15c96d[_0x0bd4('0x32')],_0x24568e[_0x0bd4('0x3b')]));if(_0x15c96d[_0x0bd4('0x32')][_0x0bd4('0x3c')]){_0x2c365e[_0x0bd4('0x3a')]=_[_0x0bd4('0x3d')](_0x2c365e[_0x0bd4('0x3a')],{'$or':_[_0x0bd4('0x2b')](_0x2c365e[_0x0bd4('0x34')],function(_0x44eb9e){var _0x415ba2={};_0x415ba2[_0x44eb9e]={'$like':'%'+_0x15c96d['query'][_0x0bd4('0x3c')]+'%'};return _0x415ba2;})});}_0x2c365e=_[_0x0bd4('0x3d')]({},_0x2c365e,_0x15c96d['options']);return _0x1d077e['getAnyConditions'](_0x2c365e);}})['then'](function(_0x59ab44){if(_0x59ab44){_0x526710=_0x59ab44[_0x0bd4('0x36')];if(!_0x15c96d['query'][_0x0bd4('0x37')]('nolimit')){_0x2c365e['limit']=qs['limit'](_0x15c96d[_0x0bd4('0x32')][_0x0bd4('0x1c')]);_0x2c365e[_0x0bd4('0x1b')]=qs[_0x0bd4('0x1b')](_0x15c96d[_0x0bd4('0x32')]['offset']);}return _0x1d077e[_0x0bd4('0x58')](_0x2c365e);}})[_0x0bd4('0x24')](function(_0xed8b2a){if(_0xed8b2a){return _0xed8b2a?{'count':_0x526710,'rows':_0xed8b2a}:null;}})[_0x0bd4('0x24')](respondWithResult(_0x35d10d,null))['catch'](handleError(_0x35d10d,null));};exports['addAction']=function(_0x4bde91,_0x34346a,_0x430b4d){if(_0x4bde91[_0x0bd4('0x47')]['id']){delete _0x4bde91[_0x0bd4('0x47')]['id'];}return db[_0x0bd4('0x3f')][_0x0bd4('0x45')]({'where':{'id':_0x4bde91[_0x0bd4('0x42')]['id']}})[_0x0bd4('0x24')](handleEntityNotFound(_0x34346a,null))[_0x0bd4('0x24')](function(_0x3b5f5c){if(_0x3b5f5c){_0x4bde91[_0x0bd4('0x47')][_0x0bd4('0x5a')]=_0x3b5f5c['id'];return db['Action']['create'](_0x4bde91[_0x0bd4('0x47')]);}})[_0x0bd4('0x24')](respondWithResult(_0x34346a,null))[_0x0bd4('0x46')](handleError(_0x34346a,null));};exports[_0x0bd4('0x5b')]=function(_0x58df21,_0x2b0b30,_0x45dd29){var _0x16d768={};var _0x1156ae={};var _0x1be53c;var _0x1bd3af;return db[_0x0bd4('0x3f')][_0x0bd4('0x59')]({'where':{'id':_0x58df21[_0x0bd4('0x42')]['id']}})[_0x0bd4('0x24')](handleEntityNotFound(_0x2b0b30,null))[_0x0bd4('0x24')](function(_0x43a708){if(_0x43a708){_0x1be53c=_0x43a708;_0x1156ae[_0x0bd4('0x30')]=_['keys'](db[_0x0bd4('0x5c')][_0x0bd4('0x2c')]);_0x1156ae[_0x0bd4('0x32')]=_[_0x0bd4('0x31')](_0x58df21[_0x0bd4('0x32')]);_0x1156ae[_0x0bd4('0x3b')]=_[_0x0bd4('0x33')](_0x1156ae[_0x0bd4('0x30')],_0x1156ae['query']);_0x16d768[_0x0bd4('0x34')]=_[_0x0bd4('0x33')](_0x1156ae[_0x0bd4('0x30')],qs[_0x0bd4('0x35')](_0x58df21['query'][_0x0bd4('0x35')]));_0x16d768[_0x0bd4('0x34')]=_0x16d768[_0x0bd4('0x34')][_0x0bd4('0x36')]?_0x16d768[_0x0bd4('0x34')]:_0x1156ae[_0x0bd4('0x30')];_0x16d768[_0x0bd4('0x56')]=qs[_0x0bd4('0x39')](_0x58df21[_0x0bd4('0x32')][_0x0bd4('0x39')]);_0x16d768['where']=qs[_0x0bd4('0x3b')](_[_0x0bd4('0x57')](_0x58df21[_0x0bd4('0x32')],_0x1156ae[_0x0bd4('0x3b')]));if(_0x58df21[_0x0bd4('0x32')]['filter']){_0x16d768['where']=_[_0x0bd4('0x3d')](_0x16d768[_0x0bd4('0x3a')],{'$or':_[_0x0bd4('0x2b')](_0x16d768['attributes'],function(_0x251d99){var _0x5d3a87={};_0x5d3a87[_0x251d99]={'$like':'%'+_0x58df21[_0x0bd4('0x32')][_0x0bd4('0x3c')]+'%'};return _0x5d3a87;})});}_0x16d768=_[_0x0bd4('0x3d')]({},_0x16d768,_0x58df21[_0x0bd4('0x44')]);return _0x1be53c['getActions'](_0x16d768);}})[_0x0bd4('0x24')](function(_0x50ff77){if(_0x50ff77){_0x1bd3af=_0x50ff77[_0x0bd4('0x36')];if(!_0x58df21['query']['hasOwnProperty'](_0x0bd4('0x38'))){_0x16d768['limit']=qs[_0x0bd4('0x1c')](_0x58df21[_0x0bd4('0x32')][_0x0bd4('0x1c')]);_0x16d768[_0x0bd4('0x1b')]=qs[_0x0bd4('0x1b')](_0x58df21[_0x0bd4('0x32')][_0x0bd4('0x1b')]);}return _0x1be53c['getActions'](_0x16d768);}})[_0x0bd4('0x24')](function(_0x9564b5){if(_0x9564b5){return _0x9564b5?{'count':_0x1bd3af,'rows':_0x9564b5}:null;}})[_0x0bd4('0x24')](respondWithResult(_0x2b0b30,null))[_0x0bd4('0x46')](handleError(_0x2b0b30,null));};
\ No newline at end of file
index 4ac6d99..78c3227 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38d3=['define','Trigger','tools_triggers','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./trigger.attributes','exports'];(function(_0x566bdf,_0x1f4861){var _0x331215=function(_0x524d0d){while(--_0x524d0d){_0x566bdf['push'](_0x566bdf['shift']());}};_0x331215(++_0x1f4861);}(_0x38d3,0x1a7));var _0x338d=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x38d3[_0x3ab9ee];return _0x82ee88;};'use strict';var _=require(_0x338d('0x0'));var util=require(_0x338d('0x1'));var logger=require('../../config/logger')(_0x338d('0x2'));var moment=require(_0x338d('0x3'));var BPromise=require(_0x338d('0x4'));var rp=require(_0x338d('0x5'));var fs=require('fs');var path=require(_0x338d('0x6'));var rimraf=require(_0x338d('0x7'));var config=require(_0x338d('0x8'));var attributes=require(_0x338d('0x9'));module[_0x338d('0xa')]=function(_0x4e32b4,_0x2a056d){return _0x4e32b4[_0x338d('0xb')](_0x338d('0xc'),attributes,{'tableName':_0x338d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7e16=['api','request-promise','rimraf','../../config/environment','exports','define','Trigger','lodash','util','../../config/logger'];(function(_0x35a694,_0x14f929){var _0x35008f=function(_0x1130f4){while(--_0x1130f4){_0x35a694['push'](_0x35a694['shift']());}};_0x35008f(++_0x14f929);}(_0x7e16,0x16f));var _0x67e1=function(_0x1333f3,_0x5dc809){_0x1333f3=_0x1333f3-0x0;var _0x48bb51=_0x7e16[_0x1333f3];return _0x48bb51;};'use strict';var _=require(_0x67e1('0x0'));var util=require(_0x67e1('0x1'));var logger=require(_0x67e1('0x2'))(_0x67e1('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x67e1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x67e1('0x5'));var config=require(_0x67e1('0x6'));var attributes=require('./trigger.attributes');module[_0x67e1('0x7')]=function(_0x3b5769,_0x2e0cb9){return _0x3b5769[_0x67e1('0x8')](_0x67e1('0x9'),attributes,{'tableName':'tools_triggers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5d1c52a..07b05ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25cb=['Trigger','findAll','options','raw','where','attributes','limit','map','include','model','info','GetTrigger','ShowTrigger','find','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','Trigger,\x20%s,\x20%s','debug','Trigger,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch'];(function(_0x4eea4b,_0x2df371){var _0xe8bec8=function(_0x2bedce){while(--_0x2bedce){_0x4eea4b['push'](_0x4eea4b['shift']());}};_0xe8bec8(++_0x2df371);}(_0x25cb,0xec));var _0xb25c=function(_0x427d3a,_0x23724c){_0x427d3a=_0x427d3a-0x0;var _0xe5c521=_0x25cb[_0x427d3a];return _0xe5c521;};'use strict';var _=require(_0xb25c('0x0'));var util=require(_0xb25c('0x1'));var moment=require(_0xb25c('0x2'));var BPromise=require(_0xb25c('0x3'));var rs=require(_0xb25c('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb25c('0x5'))['db'];var utils=require(_0xb25c('0x6'));var logger=require(_0xb25c('0x7'))(_0xb25c('0x8'));var config=require(_0xb25c('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xb25c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5475da,_0x531d9a,_0x323b7c){return new BPromise(function(_0x17e909,_0x26e0f4){return client[_0xb25c('0xb')](_0x5475da,_0x323b7c)[_0xb25c('0xc')](function(_0x412e4e){logger['info'](_0xb25c('0xd'),_0x531d9a,'request\x20sent');logger[_0xb25c('0xe')](_0xb25c('0xf'),_0x531d9a,_0xb25c('0x10'),JSON[_0xb25c('0x11')](_0x412e4e));if(_0x412e4e[_0xb25c('0x12')]){if(_0x412e4e['error'][_0xb25c('0x13')]===0x1f4){logger[_0xb25c('0x12')](_0xb25c('0xd'),_0x531d9a,_0x412e4e[_0xb25c('0x12')][_0xb25c('0x14')]);return _0x26e0f4(_0x412e4e[_0xb25c('0x12')][_0xb25c('0x14')]);}logger[_0xb25c('0x12')](_0xb25c('0xd'),_0x531d9a,_0x412e4e[_0xb25c('0x12')][_0xb25c('0x14')]);return _0x17e909(_0x412e4e[_0xb25c('0x12')][_0xb25c('0x14')]);}else{logger['info'](_0xb25c('0xd'),_0x531d9a,_0xb25c('0x10'));_0x17e909(_0x412e4e[_0xb25c('0x15')][_0xb25c('0x14')]);}})[_0xb25c('0x16')](function(_0x16755d){logger[_0xb25c('0x12')](_0xb25c('0xd'),_0x531d9a,_0x16755d);_0x26e0f4(_0x16755d);});});}exports['GetTrigger']=function(_0x19234d){var _0x3720f1=this;return new Promise(function(_0x3b8c2e,_0x2f40c2){return db[_0xb25c('0x17')][_0xb25c('0x18')]({'raw':_0x19234d['options']?_0x19234d[_0xb25c('0x19')][_0xb25c('0x1a')]===undefined?!![]:![]:!![],'where':_0x19234d[_0xb25c('0x19')]?_0x19234d['options'][_0xb25c('0x1b')]||null:null,'attributes':_0x19234d[_0xb25c('0x19')]?_0x19234d[_0xb25c('0x19')][_0xb25c('0x1c')]||null:null,'limit':_0x19234d[_0xb25c('0x19')]?_0x19234d[_0xb25c('0x19')][_0xb25c('0x1d')]||null:null,'include':_0x19234d[_0xb25c('0x19')]?_0x19234d['options']['include']?_[_0xb25c('0x1e')](_0x19234d['options']['include'],function(_0x3bc94e){return{'model':db[_0x3bc94e['model']],'as':_0x3bc94e['as'],'attributes':_0x3bc94e[_0xb25c('0x1c')],'include':_0x3bc94e[_0xb25c('0x1f')]?_[_0xb25c('0x1e')](_0x3bc94e[_0xb25c('0x1f')],function(_0x313d37){return{'model':db[_0x313d37[_0xb25c('0x20')]],'as':_0x313d37['as'],'attributes':_0x313d37[_0xb25c('0x1c')],'include':_0x313d37['include']?_[_0xb25c('0x1e')](_0x313d37[_0xb25c('0x1f')],function(_0x273ba7){return{'model':db[_0x273ba7[_0xb25c('0x20')]],'as':_0x273ba7['as'],'attributes':_0x273ba7[_0xb25c('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xb25c('0xc')](function(_0x2a1518){logger[_0xb25c('0x21')](_0xb25c('0x22'),_0x19234d);logger[_0xb25c('0xe')](_0xb25c('0x22'),_0x19234d,JSON['stringify'](_0x2a1518));_0x3b8c2e(_0x2a1518);})[_0xb25c('0x16')](function(_0x8c2a22){logger['error']('GetTrigger',_0x8c2a22[_0xb25c('0x14')],_0x19234d);_0x2f40c2(_0x3720f1[_0xb25c('0x12')](0x1f4,_0x8c2a22[_0xb25c('0x14')]));});});};exports[_0xb25c('0x23')]=function(_0x4d8e5e){var _0x5e5b4f=this;return new Promise(function(_0x16f8af,_0x417b2d){return db['Trigger'][_0xb25c('0x24')]({'raw':_0x4d8e5e[_0xb25c('0x19')]?_0x4d8e5e[_0xb25c('0x19')][_0xb25c('0x1a')]===undefined?!![]:![]:!![],'where':_0x4d8e5e[_0xb25c('0x19')]?_0x4d8e5e['options'][_0xb25c('0x1b')]||null:null,'attributes':_0x4d8e5e[_0xb25c('0x19')]?_0x4d8e5e[_0xb25c('0x19')]['attributes']||null:null,'include':_0x4d8e5e[_0xb25c('0x19')]?_0x4d8e5e['options'][_0xb25c('0x1f')]?_['map'](_0x4d8e5e[_0xb25c('0x19')][_0xb25c('0x1f')],function(_0x36165e){return{'model':db[_0x36165e['model']],'as':_0x36165e['as'],'attributes':_0x36165e[_0xb25c('0x1c')],'include':_0x36165e['include']?_[_0xb25c('0x1e')](_0x36165e['include'],function(_0xe5adf4){return{'model':db[_0xe5adf4[_0xb25c('0x20')]],'as':_0xe5adf4['as'],'attributes':_0xe5adf4[_0xb25c('0x1c')],'include':_0xe5adf4[_0xb25c('0x1f')]?_['map'](_0xe5adf4[_0xb25c('0x1f')],function(_0x3af29c){return{'model':db[_0x3af29c['model']],'as':_0x3af29c['as'],'attributes':_0x3af29c[_0xb25c('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xb25c('0xc')](function(_0x46bd99){logger[_0xb25c('0x21')](_0xb25c('0x23'),_0x4d8e5e);logger[_0xb25c('0xe')](_0xb25c('0x23'),_0x4d8e5e,JSON[_0xb25c('0x11')](_0x46bd99));_0x16f8af(_0x46bd99);})[_0xb25c('0x16')](function(_0x28c96d){logger[_0xb25c('0x12')](_0xb25c('0x23'),_0x28c96d[_0xb25c('0x14')],_0x4d8e5e);_0x417b2d(_0x5e5b4f[_0xb25c('0x12')](0x1f4,_0x28c96d[_0xb25c('0x14')]));});});};
\ No newline at end of file
+var _0x6226=['Trigger','options','raw','attributes','include','model','map','then','GetTrigger','ShowTrigger','find','where','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','http','request','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch'];(function(_0x46644c,_0x369d11){var _0xa24bce=function(_0x42c589){while(--_0x42c589){_0x46644c['push'](_0x46644c['shift']());}};_0xa24bce(++_0x369d11);}(_0x6226,0xb6));var _0x6622=function(_0x529abc,_0x17b97e){_0x529abc=_0x529abc-0x0;var _0x453afa=_0x6226[_0x529abc];return _0x453afa;};'use strict';var _=require(_0x6622('0x0'));var util=require(_0x6622('0x1'));var moment=require(_0x6622('0x2'));var BPromise=require('bluebird');var rs=require(_0x6622('0x3'));var fs=require('fs');var Redis=require(_0x6622('0x4'));var db=require(_0x6622('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6622('0x6'))('rpc');var config=require(_0x6622('0x7'));var jayson=require(_0x6622('0x8'));var client=jayson['client'][_0x6622('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xb9ffd2,_0x2cc69e,_0x37616e){return new BPromise(function(_0x5d7b8e,_0x5bca4b){return client[_0x6622('0xa')](_0xb9ffd2,_0x37616e)['then'](function(_0x3e5daf){logger['info'](_0x6622('0xb'),_0x2cc69e,_0x6622('0xc'));logger[_0x6622('0xd')](_0x6622('0xe'),_0x2cc69e,_0x6622('0xc'),JSON[_0x6622('0xf')](_0x3e5daf));if(_0x3e5daf['error']){if(_0x3e5daf[_0x6622('0x10')][_0x6622('0x11')]===0x1f4){logger[_0x6622('0x10')](_0x6622('0xb'),_0x2cc69e,_0x3e5daf[_0x6622('0x10')][_0x6622('0x12')]);return _0x5bca4b(_0x3e5daf[_0x6622('0x10')]['message']);}logger[_0x6622('0x10')](_0x6622('0xb'),_0x2cc69e,_0x3e5daf['error'][_0x6622('0x12')]);return _0x5d7b8e(_0x3e5daf[_0x6622('0x10')][_0x6622('0x12')]);}else{logger[_0x6622('0x13')]('Trigger,\x20%s,\x20%s',_0x2cc69e,_0x6622('0xc'));_0x5d7b8e(_0x3e5daf[_0x6622('0x14')]['message']);}})[_0x6622('0x15')](function(_0x59dd3d){logger[_0x6622('0x10')](_0x6622('0xb'),_0x2cc69e,_0x59dd3d);_0x5bca4b(_0x59dd3d);});});}exports['GetTrigger']=function(_0x291fc2){var _0x44dd69=this;return new Promise(function(_0x10ad4d,_0x2288a1){return db[_0x6622('0x16')]['findAll']({'raw':_0x291fc2['options']?_0x291fc2[_0x6622('0x17')][_0x6622('0x18')]===undefined?!![]:![]:!![],'where':_0x291fc2['options']?_0x291fc2[_0x6622('0x17')]['where']||null:null,'attributes':_0x291fc2[_0x6622('0x17')]?_0x291fc2[_0x6622('0x17')][_0x6622('0x19')]||null:null,'limit':_0x291fc2['options']?_0x291fc2[_0x6622('0x17')]['limit']||null:null,'include':_0x291fc2['options']?_0x291fc2['options']['include']?_['map'](_0x291fc2[_0x6622('0x17')][_0x6622('0x1a')],function(_0x4bf723){return{'model':db[_0x4bf723[_0x6622('0x1b')]],'as':_0x4bf723['as'],'attributes':_0x4bf723[_0x6622('0x19')],'include':_0x4bf723[_0x6622('0x1a')]?_[_0x6622('0x1c')](_0x4bf723[_0x6622('0x1a')],function(_0x366279){return{'model':db[_0x366279[_0x6622('0x1b')]],'as':_0x366279['as'],'attributes':_0x366279[_0x6622('0x19')],'include':_0x366279[_0x6622('0x1a')]?_[_0x6622('0x1c')](_0x366279['include'],function(_0x595180){return{'model':db[_0x595180[_0x6622('0x1b')]],'as':_0x595180['as'],'attributes':_0x595180[_0x6622('0x19')]};}):[]};}):[]};}):[]:[]})[_0x6622('0x1d')](function(_0x16591d){logger[_0x6622('0x13')](_0x6622('0x1e'),_0x291fc2);logger[_0x6622('0xd')]('GetTrigger',_0x291fc2,JSON['stringify'](_0x16591d));_0x10ad4d(_0x16591d);})[_0x6622('0x15')](function(_0x4eb20f){logger[_0x6622('0x10')](_0x6622('0x1e'),_0x4eb20f[_0x6622('0x12')],_0x291fc2);_0x2288a1(_0x44dd69[_0x6622('0x10')](0x1f4,_0x4eb20f[_0x6622('0x12')]));});});};exports[_0x6622('0x1f')]=function(_0x16cf0f){var _0x5a0b40=this;return new Promise(function(_0x461eb1,_0x5f59fd){return db['Trigger'][_0x6622('0x20')]({'raw':_0x16cf0f[_0x6622('0x17')]?_0x16cf0f[_0x6622('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x16cf0f[_0x6622('0x17')]?_0x16cf0f[_0x6622('0x17')][_0x6622('0x21')]||null:null,'attributes':_0x16cf0f[_0x6622('0x17')]?_0x16cf0f[_0x6622('0x17')][_0x6622('0x19')]||null:null,'include':_0x16cf0f[_0x6622('0x17')]?_0x16cf0f[_0x6622('0x17')][_0x6622('0x1a')]?_[_0x6622('0x1c')](_0x16cf0f[_0x6622('0x17')][_0x6622('0x1a')],function(_0x203d74){return{'model':db[_0x203d74['model']],'as':_0x203d74['as'],'attributes':_0x203d74[_0x6622('0x19')],'include':_0x203d74[_0x6622('0x1a')]?_[_0x6622('0x1c')](_0x203d74['include'],function(_0x1836b7){return{'model':db[_0x1836b7[_0x6622('0x1b')]],'as':_0x1836b7['as'],'attributes':_0x1836b7[_0x6622('0x19')],'include':_0x1836b7[_0x6622('0x1a')]?_['map'](_0x1836b7[_0x6622('0x1a')],function(_0x30639e){return{'model':db[_0x30639e[_0x6622('0x1b')]],'as':_0x30639e['as'],'attributes':_0x30639e[_0x6622('0x19')]};}):[]};}):[]};}):[]:[]})[_0x6622('0x1d')](function(_0x27276c){logger[_0x6622('0x13')](_0x6622('0x1f'),_0x16cf0f);logger[_0x6622('0xd')](_0x6622('0x1f'),_0x16cf0f,JSON[_0x6622('0xf')](_0x27276c));_0x461eb1(_0x27276c);})[_0x6622('0x15')](function(_0x2a3ebd){logger['error'](_0x6622('0x1f'),_0x2a3ebd[_0x6622('0x12')],_0x16cf0f);_0x5f59fd(_0x5a0b40['error'](0x1f4,_0x2a3ebd['message']));});});};
\ No newline at end of file
index 479b34d..fe36005 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe050=['../../components/interaction/service','./trunk.controller','get','index','/:id','isAuthenticated','/:id/clone','clone','create','put','update','exports','multer','path','Router','../../components/auth/service'];(function(_0x88e558,_0x4e8960){var _0x5c2b09=function(_0x47653c){while(--_0x47653c){_0x88e558['push'](_0x88e558['shift']());}};_0x5c2b09(++_0x4e8960);}(_0xe050,0x16c));var _0x0e05=function(_0x165c55,_0x111b89){_0x165c55=_0x165c55-0x0;var _0x4fe39d=_0xe050[_0x165c55];return _0x4fe39d;};'use strict';var multer=require(_0x0e05('0x0'));var util=require('util');var path=require(_0x0e05('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0e05('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x0e05('0x3'));var interaction=require(_0x0e05('0x4'));var config=require('../../config/environment');var controller=require(_0x0e05('0x5'));router[_0x0e05('0x6')]('/',auth['isAuthenticated'](),controller[_0x0e05('0x7')]);router['get'](_0x0e05('0x8'),auth[_0x0e05('0x9')](),controller['show']);router['post'](_0x0e05('0xa'),auth[_0x0e05('0x9')](),controller[_0x0e05('0xb')]);router['post']('/',auth[_0x0e05('0x9')](),controller[_0x0e05('0xc')]);router[_0x0e05('0xd')](_0x0e05('0x8'),auth[_0x0e05('0x9')](),controller[_0x0e05('0xe')]);router['delete'](_0x0e05('0x8'),auth[_0x0e05('0x9')](),controller['destroy']);module[_0x0e05('0xf')]=router;
\ No newline at end of file
+var _0x343a=['put','update','delete','destroy','exports','multer','util','path','../../components/auth/service','./trunk.controller','get','isAuthenticated','index','/:id','show','post','/:id/clone'];(function(_0x52382d,_0x2065a6){var _0x128e5e=function(_0x1eaae8){while(--_0x1eaae8){_0x52382d['push'](_0x52382d['shift']());}};_0x128e5e(++_0x2065a6);}(_0x343a,0x8d));var _0xa343=function(_0x2f3b91,_0x5f412d){_0x2f3b91=_0x2f3b91-0x0;var _0x5714fe=_0x343a[_0x2f3b91];return _0x5714fe;};'use strict';var multer=require(_0xa343('0x0'));var util=require(_0xa343('0x1'));var path=require(_0xa343('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa343('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa343('0x4'));router[_0xa343('0x5')]('/',auth[_0xa343('0x6')](),controller[_0xa343('0x7')]);router[_0xa343('0x5')](_0xa343('0x8'),auth[_0xa343('0x6')](),controller[_0xa343('0x9')]);router[_0xa343('0xa')](_0xa343('0xb'),auth[_0xa343('0x6')](),controller['clone']);router[_0xa343('0xa')]('/',auth[_0xa343('0x6')](),controller['create']);router[_0xa343('0xc')](_0xa343('0x8'),auth[_0xa343('0x6')](),controller[_0xa343('0xd')]);router[_0xa343('0xe')](_0xa343('0x8'),auth[_0xa343('0x6')](),controller[_0xa343('0xf')]);module[_0xa343('0x10')]=router;
\ No newline at end of file
index 9a43e18..f598c48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe662=['exports','STRING','name','ENUM','friend','peer','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','setDataValue','transport','join','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','nonat','update','outgoing','getDataValue','nat','all','ulaw;alaw;gsm','allow','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','yes','never','INTEGER','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','pai','fingerprint','actpass','dynamic','BOOLEAN'];(function(_0x4f7035,_0x204fb5){var _0x283816=function(_0x7c2597){while(--_0x7c2597){_0x4f7035['push'](_0x4f7035['shift']());}};_0x283816(++_0x204fb5);}(_0xe662,0xf5));var _0x2e66=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0xe662[_0x5b561d];return _0x431060;};'use strict';var Sequelize=require('sequelize');module[_0x2e66('0x0')]={'name':{'type':Sequelize[_0x2e66('0x1')],'allowNull':![],'unique':_0x2e66('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x4'),'user',_0x2e66('0x5')),'allowNull':![],'defaultValue':_0x2e66('0x4')},'context':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x2e66('0x6')},'callingpres':{'type':Sequelize['ENUM']('ALLOWED_NOT_SCREENED',_0x2e66('0x7'),'ALLOWED_FAILED_SCREEN',_0x2e66('0x8'),_0x2e66('0x9'),_0x2e66('0xa'),_0x2e66('0xb'),_0x2e66('0xc'))},'deny':{'type':Sequelize[_0x2e66('0x1')]},'permit':{'type':Sequelize[_0x2e66('0x1')]},'secret':{'type':Sequelize[_0x2e66('0x1')]},'md5secret':{'type':Sequelize[_0x2e66('0x1')]},'remotesecret':{'type':Sequelize[_0x2e66('0x1')]},'transport':{'type':Sequelize[_0x2e66('0x1')],'defaultValue':'udp','set':function(_0x201cb5){this[_0x2e66('0xd')](_0x2e66('0xe'),_0x201cb5?_0x201cb5[_0x2e66('0xf')](','):null);},'get':function(){return this['getDataValue'](_0x2e66('0xe'))?this['getDataValue'](_0x2e66('0xe'))['split'](','):null;},'comment':_0x2e66('0x10')},'dtmfmode':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x11'),_0x2e66('0x12'),_0x2e66('0x13'),_0x2e66('0x14'),_0x2e66('0x15')),'defaultValue':_0x2e66('0x11')},'directmedia':{'type':Sequelize[_0x2e66('0x3')]('yes','no',_0x2e66('0x16'),_0x2e66('0x17'),_0x2e66('0x18')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x2e66('0x3')]('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x2e66('0x1')]},'directmediadeny':{'type':Sequelize[_0x2e66('0x1')]},'nat':{'type':Sequelize[_0x2e66('0x1')],'defaultValue':'force_rport,comedia','set':function(_0x42f8c7){this[_0x2e66('0xd')]('nat',_0x42f8c7?_0x42f8c7[_0x2e66('0xf')](','):null);},'get':function(){return this[_0x2e66('0x19')](_0x2e66('0x1a'))?this[_0x2e66('0x19')](_0x2e66('0x1a'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x2e66('0x1')]},'namedcallgroup':{'type':Sequelize[_0x2e66('0x1')]},'pickupgroup':{'type':Sequelize[_0x2e66('0x1')]},'namedpickupgroup':{'type':Sequelize[_0x2e66('0x1')]},'language':{'type':Sequelize[_0x2e66('0x1')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING'],'allowNull':!![]},'disallow':{'type':Sequelize[_0x2e66('0x1')],'defaultValue':_0x2e66('0x1b')},'allow':{'type':Sequelize[_0x2e66('0x1')],'allowNull':![],'defaultValue':_0x2e66('0x1c'),'set':function(_0x507b45){this[_0x2e66('0xd')](_0x2e66('0x1d'),_0x507b45?_0x507b45[_0x2e66('0xf')](';'):_0x2e66('0x1c'));},'get':function(){return this[_0x2e66('0x19')](_0x2e66('0x1d'))?this[_0x2e66('0x19')](_0x2e66('0x1d'))[_0x2e66('0x1e')](';'):null;},'comment':_0x2e66('0x1f')},'autoframing':{'type':Sequelize[_0x2e66('0x3')]('yes','no')},'insecure':{'type':Sequelize[_0x2e66('0x1')],'defaultValue':_0x2e66('0x20'),'set':function(_0x13ccbc){this[_0x2e66('0xd')]('insecure',_0x13ccbc?_0x13ccbc[_0x2e66('0xf')](','):null);},'get':function(){return this['getDataValue'](_0x2e66('0x21'))?this[_0x2e66('0x19')](_0x2e66('0x21'))[_0x2e66('0x1e')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM']('yes','no',_0x2e66('0x23'))},'promiscredir':{'type':Sequelize['ENUM'](_0x2e66('0x22'),'no')},'useclientcode':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no')},'accountcode':{'type':Sequelize[_0x2e66('0x24')](0xb)},'setvar':{'type':Sequelize[_0x2e66('0x1')]},'callerid':{'type':Sequelize[_0x2e66('0x1')],'defaultValue':_0x2e66('0x25')},'amaflags':{'type':Sequelize[_0x2e66('0x1')]},'callcounter':{'type':Sequelize[_0x2e66('0x3')]('yes','no'),'defaultValue':_0x2e66('0x22')},'busylevel':{'type':Sequelize[_0x2e66('0x24')](0xb)},'allowoverlap':{'type':Sequelize[_0x2e66('0x3')]('yes','no')},'allowsubscribe':{'type':Sequelize['ENUM'](_0x2e66('0x22'),'no')},'allowtransfer':{'type':Sequelize['ENUM'](_0x2e66('0x22'),'no')},'ignoresdpversion':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no')},'subscribecontext':{'type':Sequelize[_0x2e66('0x1')]},'template':{'type':Sequelize[_0x2e66('0x1')]},'videosupport':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no',_0x2e66('0x26')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize['ENUM'](_0x2e66('0x27'),_0x2e66('0x28'),_0x2e66('0x29'))},'session_expires':{'type':Sequelize['INTEGER'](0xb)},'session_minse':{'type':Sequelize[_0x2e66('0x24')](0xb)},'session_refresher':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x2a'),_0x2e66('0x2b')),'defaultValue':_0x2e66('0x2b')},'t38pt_usertpsource':{'type':Sequelize[_0x2e66('0x1')]},'regexten':{'type':Sequelize[_0x2e66('0x1')]},'fromdomain':{'type':Sequelize[_0x2e66('0x1')]},'fromuser':{'type':Sequelize[_0x2e66('0x1')]},'port':{'type':Sequelize[_0x2e66('0x24')](0x5)},'qualify':{'type':Sequelize['ENUM'](_0x2e66('0x22'),'no'),'defaultValue':_0x2e66('0x22')},'keepalive':{'type':Sequelize[_0x2e66('0x24')](0xb)},'defaultip':{'type':Sequelize[_0x2e66('0x1')]},'defaultuser':{'type':Sequelize[_0x2e66('0x1')]},'rtptimeout':{'type':Sequelize[_0x2e66('0x24')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0x2e66('0x24')](0xb)},'rtpkeepalive':{'type':Sequelize[_0x2e66('0x24')](0xb)},'sendrpid':{'type':Sequelize['ENUM'](_0x2e66('0x22'),'no',_0x2e66('0x2c')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x2e66('0x1')]},'callbackextension':{'type':Sequelize[_0x2e66('0x1')]},'timert1':{'type':Sequelize[_0x2e66('0x24')](0xb)},'timerb':{'type':Sequelize[_0x2e66('0x24')](0xb)},'qualifyfreq':{'type':Sequelize[_0x2e66('0x24')](0xb)},'contactpermit':{'type':Sequelize[_0x2e66('0x1')]},'contactdeny':{'type':Sequelize[_0x2e66('0x1')]},'contactacl':{'type':Sequelize[_0x2e66('0x1')]},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize[_0x2e66('0x24')](0xb)},'encryption':{'type':Sequelize[_0x2e66('0x3')]('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no')},'force_avp':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no')},'icesupport':{'type':Sequelize[_0x2e66('0x3')]('yes','no')},'dtlsenable':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no')},'dtlsverify':{'type':Sequelize[_0x2e66('0x3')]('yes','no',_0x2e66('0x2d'),'certificate')},'dtlsrekey':{'type':Sequelize[_0x2e66('0x24')](0xb)},'dtlscertfile':{'type':Sequelize[_0x2e66('0x1')]},'dtlsprivatekey':{'type':Sequelize['STRING']},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize['STRING']},'dtlscapath':{'type':Sequelize[_0x2e66('0x1')]},'dtlssetup':{'type':Sequelize[_0x2e66('0x3')]('active','passive',_0x2e66('0x2e')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x2e66('0x1')]},'usereqphone':{'type':Sequelize['ENUM'](_0x2e66('0x22'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize[_0x2e66('0x1')]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize['ENUM']('yes','no')},'subscribemwi':{'type':Sequelize[_0x2e66('0x3')](_0x2e66('0x22'),'no')},'vmexten':{'type':Sequelize[_0x2e66('0x1')]},'mohinterpret':{'type':Sequelize[_0x2e66('0x1')]},'mohsuggest':{'type':Sequelize[_0x2e66('0x1')]},'parkinglot':{'type':Sequelize[_0x2e66('0x1')]},'description':{'type':Sequelize[_0x2e66('0x1')]},'host':{'type':Sequelize[_0x2e66('0x1')],'defaultValue':_0x2e66('0x2f')},'canreinvite':{'type':Sequelize['ENUM'](_0x2e66('0x22'),'no',_0x2e66('0x16'),'update','update,nonat'),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0x2e66('0x1')]},'active':{'type':Sequelize[_0x2e66('0x30')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0x2e66('0x1')],'defaultValue':'no'}};
\ No newline at end of file
+var _0xd4de=['INTEGER','\x22\x22\x20<>','always','accept','refuse','uac','uas','fingerprint','certificate','active','passive','actpass','dynamic','update','update,nonat','sequelize','exports','STRING','name','peer','friend','from-voip-provider','ENUM','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB','udp','setDataValue','transport','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','auto','rfc2833','yes','nonat','outgoing','force_rport,comedia','join','nat','all','allow','ulaw;alaw;gsm','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','port,invite','insecure','never'];(function(_0x48b810,_0x173a5e){var _0x23c17d=function(_0x38531e){while(--_0x38531e){_0x48b810['push'](_0x48b810['shift']());}};_0x23c17d(++_0x173a5e);}(_0xd4de,0x1ec));var _0xed4d=function(_0x31419a,_0x43acaf){_0x31419a=_0x31419a-0x0;var _0x1acbc8=_0xd4de[_0x31419a];return _0x1acbc8;};'use strict';var Sequelize=require(_0xed4d('0x0'));module[_0xed4d('0x1')]={'name':{'type':Sequelize[_0xed4d('0x2')],'allowNull':![],'unique':_0xed4d('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM']('friend','user',_0xed4d('0x4')),'allowNull':![],'defaultValue':_0xed4d('0x5')},'context':{'type':Sequelize[_0xed4d('0x2')],'allowNull':![],'defaultValue':_0xed4d('0x6')},'callingpres':{'type':Sequelize[_0xed4d('0x7')](_0xed4d('0x8'),_0xed4d('0x9'),_0xed4d('0xa'),_0xed4d('0xb'),_0xed4d('0xc'),'PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN',_0xed4d('0xd'))},'deny':{'type':Sequelize[_0xed4d('0x2')]},'permit':{'type':Sequelize[_0xed4d('0x2')]},'secret':{'type':Sequelize[_0xed4d('0x2')]},'md5secret':{'type':Sequelize[_0xed4d('0x2')]},'remotesecret':{'type':Sequelize[_0xed4d('0x2')]},'transport':{'type':Sequelize[_0xed4d('0x2')],'defaultValue':_0xed4d('0xe'),'set':function(_0x324f1b){this[_0xed4d('0xf')](_0xed4d('0x10'),_0x324f1b?_0x324f1b['join'](','):null);},'get':function(){return this[_0xed4d('0x11')]('transport')?this[_0xed4d('0x11')]('transport')[_0xed4d('0x12')](','):null;},'comment':_0xed4d('0x13')},'dtmfmode':{'type':Sequelize[_0xed4d('0x7')]('rfc2833',_0xed4d('0x14'),_0xed4d('0x15'),_0xed4d('0x16'),_0xed4d('0x17')),'defaultValue':_0xed4d('0x18')},'directmedia':{'type':Sequelize['ENUM'](_0xed4d('0x19'),'no',_0xed4d('0x1a'),'update',_0xed4d('0x1b')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xed4d('0x7')](_0xed4d('0x19'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xed4d('0x2')]},'directmediadeny':{'type':Sequelize['STRING']},'nat':{'type':Sequelize[_0xed4d('0x2')],'defaultValue':_0xed4d('0x1c'),'set':function(_0x4fcead){this[_0xed4d('0xf')]('nat',_0x4fcead?_0x4fcead[_0xed4d('0x1d')](','):null);},'get':function(){return this[_0xed4d('0x11')]('nat')?this[_0xed4d('0x11')](_0xed4d('0x1e'))[_0xed4d('0x12')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0xed4d('0x2')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0xed4d('0x2')]},'language':{'type':Sequelize[_0xed4d('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING'],'allowNull':!![]},'disallow':{'type':Sequelize[_0xed4d('0x2')],'defaultValue':_0xed4d('0x1f')},'allow':{'type':Sequelize[_0xed4d('0x2')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x484ef1){this[_0xed4d('0xf')](_0xed4d('0x20'),_0x484ef1?_0x484ef1[_0xed4d('0x1d')](';'):_0xed4d('0x21'));},'get':function(){return this[_0xed4d('0x11')]('allow')?this[_0xed4d('0x11')](_0xed4d('0x20'))[_0xed4d('0x12')](';'):null;},'comment':_0xed4d('0x22')},'autoframing':{'type':Sequelize['ENUM'](_0xed4d('0x19'),'no')},'insecure':{'type':Sequelize[_0xed4d('0x2')],'defaultValue':_0xed4d('0x23'),'set':function(_0x110d36){this[_0xed4d('0xf')](_0xed4d('0x24'),_0x110d36?_0x110d36[_0xed4d('0x1d')](','):null);},'get':function(){return this[_0xed4d('0x11')](_0xed4d('0x24'))?this['getDataValue']('insecure')[_0xed4d('0x12')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0xed4d('0x7')](_0xed4d('0x19'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xed4d('0x7')](_0xed4d('0x19'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xed4d('0x7')](_0xed4d('0x19'),'no',_0xed4d('0x25'))},'promiscredir':{'type':Sequelize[_0xed4d('0x7')](_0xed4d('0x19'),'no')},'useclientcode':{'type':Sequelize[_0xed4d('0x7')](_0xed4d('0x19'),'no')},'accountcode':{'type':Sequelize[_0xed4d('0x26')](0xb)},'setvar':{'type':Sequelize[_0xed4d('0x2')]},'callerid':{'type':Sequelize[_0xed4d('0x2')],'defaultValue':_0xed4d('0x27')},'amaflags':{'type':Sequelize[_0xed4d('0x2')]},'callcounter':{'type':Sequelize[_0xed4d('0x7')](_0xed4d('0x19'),'no'),'defaultValue':'yes'},'busylevel':{'type':Sequelize['INTEGER'](0xb)},'allowoverlap':{'type':Sequelize['ENUM'](_0xed4d('0x19'),'no')},'allowsubscribe':{'type':Sequelize[_0xed4d('0x7')](_0xed4d('0x19'),'no')},'allowtransfer':{'type':Sequelize[_0xed4d('0x7')](_0xed4d('0x19'),'no')},'ignoresdpversion':{'type':Sequelize[_0xed4d('0x7')](_0xed4d('0x19'),'no')},'subscribecontext':{'type':Sequelize[_0xed4d('0x2')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0xed4d('0x7')]('yes','no',_0xed4d('0x28')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xed4d('0x26')](0xb)},'rfc2833compensate':{'type':Sequelize[_0xed4d('0x7')](_0xed4d('0x19'),'no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize['ENUM'](_0xed4d('0x29'),_0xed4d('0x2a'),'originate')},'session_expires':{'type':Sequelize[_0xed4d('0x26')](0xb)},'session_minse':{'type':Sequelize[_0xed4d('0x26')](0xb)},'session_refresher':{'type':Sequelize['ENUM'](_0xed4d('0x2b'),_0xed4d('0x2c')),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0xed4d('0x2')]},'regexten':{'type':Sequelize[_0xed4d('0x2')]},'fromdomain':{'type':Sequelize[_0xed4d('0x2')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER'](0x5)},'qualify':{'type':Sequelize['ENUM'](_0xed4d('0x19'),'no'),'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0xed4d('0x26')](0xb)},'defaultip':{'type':Sequelize[_0xed4d('0x2')]},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize[_0xed4d('0x26')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xed4d('0x26')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xed4d('0x26')](0xb)},'sendrpid':{'type':Sequelize[_0xed4d('0x7')]('yes','no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xed4d('0x2')]},'callbackextension':{'type':Sequelize['STRING']},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize['INTEGER'](0xb)},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb)},'contactpermit':{'type':Sequelize[_0xed4d('0x2')]},'contactdeny':{'type':Sequelize['STRING']},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize[_0xed4d('0x2')]},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize['INTEGER'](0xb)},'encryption':{'type':Sequelize[_0xed4d('0x7')](_0xed4d('0x19'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM']('yes','no')},'force_avp':{'type':Sequelize[_0xed4d('0x7')](_0xed4d('0x19'),'no')},'icesupport':{'type':Sequelize[_0xed4d('0x7')](_0xed4d('0x19'),'no')},'dtlsenable':{'type':Sequelize['ENUM'](_0xed4d('0x19'),'no')},'dtlsverify':{'type':Sequelize[_0xed4d('0x7')]('yes','no',_0xed4d('0x2d'),_0xed4d('0x2e'))},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb)},'dtlscertfile':{'type':Sequelize[_0xed4d('0x2')]},'dtlsprivatekey':{'type':Sequelize[_0xed4d('0x2')]},'dtlscipher':{'type':Sequelize['STRING']},'dtlscafile':{'type':Sequelize['STRING']},'dtlscapath':{'type':Sequelize[_0xed4d('0x2')]},'dtlssetup':{'type':Sequelize[_0xed4d('0x7')](_0xed4d('0x2f'),_0xed4d('0x30'),_0xed4d('0x31')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xed4d('0x2')]},'usereqphone':{'type':Sequelize[_0xed4d('0x7')]('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xed4d('0x2')]},'recordofffeature':{'type':Sequelize[_0xed4d('0x2')]},'call_limit':{'type':Sequelize[_0xed4d('0x26')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xed4d('0x7')](_0xed4d('0x19'),'no')},'subscribemwi':{'type':Sequelize[_0xed4d('0x7')](_0xed4d('0x19'),'no')},'vmexten':{'type':Sequelize['STRING']},'mohinterpret':{'type':Sequelize[_0xed4d('0x2')]},'mohsuggest':{'type':Sequelize[_0xed4d('0x2')]},'parkinglot':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xed4d('0x2')]},'host':{'type':Sequelize[_0xed4d('0x2')],'defaultValue':_0xed4d('0x32')},'canreinvite':{'type':Sequelize[_0xed4d('0x7')]('yes','no','nonat',_0xed4d('0x33'),_0xed4d('0x34')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0xed4d('0x2')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
index c977bdd..5cdf190 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['includeAll','findAll','rows','params','find','clone','rawAttributes','include','omit','createdAt','body','updatedAt','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','render','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','Reload','chan_sip.so','/etc/asterisk/sip_xcally_registers.conf','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../mysqldb','jayson/promise','client','http','request','info','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','Trunk,\x20%s,\x20%s','result','catch','sendStatus','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','then','destroy','get','Trunks','UserProfileResource','status','stack','name','index','map','Trunk','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options'];(function(_0x4fc376,_0x5aeac1){var _0x5355c8=function(_0x350759){while(--_0x350759){_0x4fc376['push'](_0x4fc376['shift']());}};_0x5355c8(++_0x5aeac1);}(_0x00bb,0x1d8));var _0xb00b=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0x00bb[_0x411add];return _0x238242;};'use strict';var emlformat=require(_0xb00b('0x0'));var rimraf=require(_0xb00b('0x1'));var zipdir=require(_0xb00b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb00b('0x3'));var moment=require('moment');var BPromise=require(_0xb00b('0x4'));var Mustache=require(_0xb00b('0x5'));var util=require('util');var path=require(_0xb00b('0x6'));var sox=require(_0xb00b('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb00b('0x8'));var squel=require(_0xb00b('0x9'));var crypto=require(_0xb00b('0xa'));var jsforce=require(_0xb00b('0xb'));var deskjs=require(_0xb00b('0xc'));var toCsv=require(_0xb00b('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb00b('0xe'));var authService=require(_0xb00b('0xf'));var qs=require(_0xb00b('0x10'));var as=require(_0xb00b('0x11'));var hardwareService=require(_0xb00b('0x12'));var logger=require('../../config/logger')(_0xb00b('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xb00b('0x14'))['db'];var jayson=require(_0xb00b('0x15'));var client=jayson[_0xb00b('0x16')][_0xb00b('0x17')]({'port':0x232a});function respondWithRpcPromise(_0xef5d52,_0x1f1c1d,_0x4ada81,_0x218de2){return new BPromise(function(_0xb0d42e,_0x482fe6){var _0x88d95e=_0x218de2||client;return _0x88d95e[_0xb00b('0x18')](_0xef5d52,_0x4ada81)['then'](function(_0x5da36b){logger[_0xb00b('0x19')]('Trunk,\x20%s,\x20%s',_0x1f1c1d,'request\x20sent');logger[_0xb00b('0x1a')](_0xb00b('0x1b'),_0x1f1c1d,_0xb00b('0x1c'),JSON[_0xb00b('0x1d')](_0x5da36b));if(_0x5da36b['error']){if(_0x5da36b[_0xb00b('0x1e')]['code']===0x1f4){logger[_0xb00b('0x1e')]('Trunk,\x20%s,\x20%s',_0x1f1c1d,_0x5da36b[_0xb00b('0x1e')]['message']);return _0x482fe6(_0x5da36b[_0xb00b('0x1e')][_0xb00b('0x1f')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x1f1c1d,_0x5da36b[_0xb00b('0x1e')]['message']);return _0xb0d42e(_0x5da36b[_0xb00b('0x1e')][_0xb00b('0x1f')]);}else{logger[_0xb00b('0x19')](_0xb00b('0x20'),_0x1f1c1d,'request\x20sent');_0xb0d42e(_0x5da36b[_0xb00b('0x21')]['message']);}})[_0xb00b('0x22')](function(_0x121ec7){logger['error'](_0xb00b('0x20'),_0x1f1c1d,_0x121ec7);_0x482fe6(_0x121ec7);});});}function respondWithStatusCode(_0x2896d1,_0x520444){_0x520444=_0x520444||0xcc;return function(_0x3ab3cc){if(_0x3ab3cc){return _0x2896d1[_0xb00b('0x23')](_0x520444);}return _0x2896d1['status'](_0x520444)[_0xb00b('0x24')]();};}function respondWithResult(_0x243fdb,_0x3c9500){_0x3c9500=_0x3c9500||0xc8;return function(_0x8caadf){if(_0x8caadf){return _0x243fdb['status'](_0x3c9500)['json'](_0x8caadf);}};}function respondWithFilteredResult(_0x3785e9,_0x490380){return function(_0x550587){if(_0x550587){var _0x4a635e=typeof _0x490380[_0xb00b('0x25')]===_0xb00b('0x26')&&typeof _0x490380[_0xb00b('0x27')]===_0xb00b('0x26');var _0x1f14fa=_0x550587[_0xb00b('0x28')];var _0x15d3b9=_0x4a635e?0x0:_0x490380['offset'];var _0x22c22d=_0x4a635e?_0x550587['count']:_0x490380[_0xb00b('0x25')]+_0x490380[_0xb00b('0x27')];var _0x5424ca;if(_0x22c22d>=_0x1f14fa){_0x22c22d=_0x1f14fa;_0x5424ca=0xc8;}else{_0x5424ca=0xce;}_0x3785e9['status'](_0x5424ca);return _0x3785e9[_0xb00b('0x29')](_0xb00b('0x2a'),_0x15d3b9+'-'+_0x22c22d+'/'+_0x1f14fa)[_0xb00b('0x2b')](_0x550587);}return null;};}function patchUpdates(_0x183233){return function(_0x303625){try{jsonpatch[_0xb00b('0x2c')](_0x303625,_0x183233,!![]);}catch(_0x2e160a){return BPromise[_0xb00b('0x2d')](_0x2e160a);}return _0x303625[_0xb00b('0x2e')]();};}function saveUpdates(_0x54e247,_0x2b5f41){return function(_0x44918d){if(_0x44918d){return _0x44918d['update'](_0x54e247)[_0xb00b('0x2f')](function(_0x2f3b37){return _0x2f3b37;});}return null;};}function removeEntity(_0x5a5e5a,_0x456241){return function(_0x4d2ee5){if(_0x4d2ee5){return _0x4d2ee5[_0xb00b('0x30')]()[_0xb00b('0x2f')](function(){var _0x322879=_0x4d2ee5[_0xb00b('0x31')]({'plain':!![]});var _0x338864=_0xb00b('0x32');return db[_0xb00b('0x33')]['destroy']({'where':{'type':_0x338864,'resourceId':_0x322879['id']}})['then'](function(){return _0x4d2ee5;});})['then'](function(){_0x5a5e5a[_0xb00b('0x34')](0xcc)[_0xb00b('0x24')]();});}};}function handleEntityNotFound(_0x45dcda,_0x2589cb){return function(_0x5cfa60){if(!_0x5cfa60){_0x45dcda[_0xb00b('0x23')](0x194);}return _0x5cfa60;};}function handleError(_0x266f8e,_0x341f46){_0x341f46=_0x341f46||0x1f4;return function(_0x1c7a9f){logger[_0xb00b('0x1e')](_0x1c7a9f[_0xb00b('0x35')]);if(_0x1c7a9f[_0xb00b('0x36')]){delete _0x1c7a9f[_0xb00b('0x36')];}_0x266f8e['status'](_0x341f46)['send'](_0x1c7a9f);};}exports[_0xb00b('0x37')]=function(_0x56022e,_0x1c8258){var _0x1c5400={},_0x29579b={},_0x45ca74={'count':0x0,'rows':[]};var _0x37c017=_[_0xb00b('0x38')](db[_0xb00b('0x39')]['rawAttributes'],function(_0x35f1ca){return{'name':_0x35f1ca[_0xb00b('0x3a')],'type':_0x35f1ca[_0xb00b('0x3b')][_0xb00b('0x3c')]};});_0x29579b[_0xb00b('0x3d')]=_[_0xb00b('0x38')](_0x37c017,'name');_0x29579b[_0xb00b('0x3e')]=_[_0xb00b('0x3f')](_0x56022e['query']);_0x29579b[_0xb00b('0x40')]=_[_0xb00b('0x41')](_0x29579b[_0xb00b('0x3d')],_0x29579b[_0xb00b('0x3e')]);_0x1c5400[_0xb00b('0x42')]=_['intersection'](_0x29579b[_0xb00b('0x3d')],qs[_0xb00b('0x43')](_0x56022e[_0xb00b('0x3e')][_0xb00b('0x43')]));_0x1c5400['attributes']=_0x1c5400['attributes'][_0xb00b('0x44')]?_0x1c5400[_0xb00b('0x42')]:_0x29579b[_0xb00b('0x3d')];if(!_0x56022e[_0xb00b('0x3e')][_0xb00b('0x45')](_0xb00b('0x46'))){_0x1c5400[_0xb00b('0x27')]=qs['limit'](_0x56022e[_0xb00b('0x3e')][_0xb00b('0x27')]);_0x1c5400[_0xb00b('0x25')]=qs[_0xb00b('0x25')](_0x56022e[_0xb00b('0x3e')][_0xb00b('0x25')]);}_0x1c5400[_0xb00b('0x47')]=qs[_0xb00b('0x48')](_0x56022e[_0xb00b('0x3e')][_0xb00b('0x48')]);_0x1c5400[_0xb00b('0x49')]=qs[_0xb00b('0x40')](_['pick'](_0x56022e[_0xb00b('0x3e')],_0x29579b[_0xb00b('0x40')]),_0x37c017);if(_0x56022e[_0xb00b('0x3e')][_0xb00b('0x4a')]){_0x1c5400[_0xb00b('0x49')]=_[_0xb00b('0x4b')](_0x1c5400[_0xb00b('0x49')],{'$or':_[_0xb00b('0x38')](_0x37c017,function(_0x10ba60){if(_0x10ba60[_0xb00b('0x3b')]!==_0xb00b('0x4c')){var _0x3b3031={};_0x3b3031[_0x10ba60['name']]={'$like':'%'+_0x56022e['query']['filter']+'%'};return _0x3b3031;}})});}_0x1c5400=_[_0xb00b('0x4b')]({},_0x1c5400,_0x56022e[_0xb00b('0x4d')]);var _0x481154={'where':_0x1c5400[_0xb00b('0x49')]};return db[_0xb00b('0x39')][_0xb00b('0x28')](_0x481154)[_0xb00b('0x2f')](function(_0x4b62b3){_0x45ca74['count']=_0x4b62b3;if(_0x56022e[_0xb00b('0x3e')][_0xb00b('0x4e')]){_0x1c5400['include']=[{'all':!![]}];}return db['Trunk'][_0xb00b('0x4f')](_0x1c5400);})[_0xb00b('0x2f')](function(_0x4e0be4){_0x45ca74[_0xb00b('0x50')]=_0x4e0be4;return _0x45ca74;})['then'](respondWithFilteredResult(_0x1c8258,_0x1c5400))['catch'](handleError(_0x1c8258,null));};exports['show']=function(_0x465d90,_0x481515){var _0x1f7b86={'raw':![],'where':{'id':_0x465d90[_0xb00b('0x51')]['id']}},_0x3178aa={};_0x3178aa[_0xb00b('0x3d')]=_[_0xb00b('0x3f')](db[_0xb00b('0x39')]['rawAttributes']);_0x3178aa['query']=_[_0xb00b('0x3f')](_0x465d90[_0xb00b('0x3e')]);_0x3178aa['filters']=_[_0xb00b('0x41')](_0x3178aa[_0xb00b('0x3d')],_0x3178aa['query']);_0x1f7b86[_0xb00b('0x42')]=_[_0xb00b('0x41')](_0x3178aa[_0xb00b('0x3d')],qs['fields'](_0x465d90['query'][_0xb00b('0x43')]));_0x1f7b86[_0xb00b('0x42')]=_0x1f7b86[_0xb00b('0x42')][_0xb00b('0x44')]?_0x1f7b86['attributes']:_0x3178aa[_0xb00b('0x3d')];if(_0x465d90[_0xb00b('0x3e')]['includeAll']){_0x1f7b86['include']=[{'all':!![]}];}_0x1f7b86=_[_0xb00b('0x4b')]({},_0x1f7b86,_0x465d90['options']);return db[_0xb00b('0x39')][_0xb00b('0x52')](_0x1f7b86)[_0xb00b('0x2f')](handleEntityNotFound(_0x481515,null))[_0xb00b('0x2f')](respondWithResult(_0x481515,null))[_0xb00b('0x22')](handleError(_0x481515,null));};exports[_0xb00b('0x53')]=function(_0x5a3b85,_0x5d52a5){var _0x51c9e3={'where':{'id':_0x5a3b85[_0xb00b('0x51')]['id']}},_0x37d4d2={};_0x37d4d2[_0xb00b('0x3d')]=_['keys'](db[_0xb00b('0x39')][_0xb00b('0x54')]);_0x51c9e3[_0xb00b('0x42')]=_['intersection'](_0x37d4d2[_0xb00b('0x3d')],qs[_0xb00b('0x43')](_0x5a3b85[_0xb00b('0x3e')][_0xb00b('0x43')]));_0x51c9e3[_0xb00b('0x42')]=_0x51c9e3[_0xb00b('0x42')][_0xb00b('0x44')]?_0x51c9e3[_0xb00b('0x42')]:_0x37d4d2['model'];if(_0x5a3b85[_0xb00b('0x3e')][_0xb00b('0x4e')]){_0x51c9e3[_0xb00b('0x55')]=[{'all':!![]}];}_0x51c9e3=_['merge']({},_0x51c9e3,_0x5a3b85[_0xb00b('0x4d')]);return db[_0xb00b('0x39')][_0xb00b('0x52')](_0x51c9e3)[_0xb00b('0x2f')](handleEntityNotFound(_0x5d52a5,null))[_0xb00b('0x2f')](function(_0x4bfe0b){if(_0x4bfe0b){var _0xfd4ecc=_0x4bfe0b[_0xb00b('0x31')]({'plain':!![]});_0xfd4ecc=qs[_0xb00b('0x56')](_0xfd4ecc,['id',_0xb00b('0x57'),'updatedAt']);_0x5a3b85[_0xb00b('0x58')]=_[_0xb00b('0x56')](_0x5a3b85[_0xb00b('0x58')],['id',_0xb00b('0x57'),_0xb00b('0x59')]);return db[_0xb00b('0x39')][_0xb00b('0x5a')](_['merge'](_0xfd4ecc,_0x5a3b85[_0xb00b('0x58')]),{'include':_0x5a3b85['query'][_0xb00b('0x4e')]?[{'all':!![]}]:undefined})['then'](function(_0x3b3272){var _0x530d4a=_0x5a3b85[_0xb00b('0x5b')]['get']({'plain':!![]});if(!_0x530d4a)throw new Error(_0xb00b('0x5c'));if(_0x530d4a[_0xb00b('0x5d')]===_0xb00b('0x5b')){var _0x4d1cec=_0x3b3272['get']({'plain':!![]});var _0x4f7a59=_0xb00b('0x32');return db[_0xb00b('0x5e')][_0xb00b('0x52')]({'where':{'name':_0x4f7a59,'userProfileId':_0x530d4a['userProfileId']},'raw':!![]})[_0xb00b('0x2f')](function(_0x37ae88){if(_0x37ae88&&_0x37ae88[_0xb00b('0x5f')]===0x0){return db[_0xb00b('0x33')][_0xb00b('0x5a')]({'name':_0x4d1cec['name'],'resourceId':_0x4d1cec['id'],'type':_0x37ae88[_0xb00b('0x36')],'sectionId':_0x37ae88['id']},{})[_0xb00b('0x2f')](function(){return _0x3b3272;});}else{return _0x3b3272;}})['catch'](function(_0xe1316d){logger[_0xb00b('0x1e')](_0xb00b('0x60'),_0xe1316d);throw _0xe1316d;});}return _0x3b3272;});}})['then'](respondWithResult(_0x5d52a5,0xc9))['catch'](handleError(_0x5d52a5,null));};exports[_0xb00b('0x5a')]=function(_0x188da7,_0x23762e,_0x49f0a2){var _0x5aac5f;return db['Trunk']['create'](_0x188da7[_0xb00b('0x58')],{'raw':!![]})['then'](function(_0x2434a0){_0x5aac5f=_0x2434a0;return db[_0xb00b('0x39')]['findAll']({'raw':!![]});})[_0xb00b('0x2f')](function(_0x1e7f3a){var _0x2d21ec=fs[_0xb00b('0x61')](path[_0xb00b('0x62')](config['root'],_0xb00b('0x63')),_0xb00b('0x64'));var _0x3d4482=fs[_0xb00b('0x61')](path[_0xb00b('0x62')](config[_0xb00b('0x65')],_0xb00b('0x66')),'utf8');var _0x27b3ae=ejs[_0xb00b('0x67')](_0x2d21ec,{'trunks':_0x1e7f3a||[]});fs[_0xb00b('0x68')](_0xb00b('0x69'),_0x27b3ae);if(_0x5aac5f[_0xb00b('0x6a')]){var _0x432b68=ejs[_0xb00b('0x67')](_0x3d4482,{'trunks':_0x1e7f3a||[]});fs[_0xb00b('0x68')]('/etc/asterisk/sip_xcally_registers.conf',_0x432b68);}})[_0xb00b('0x2f')](function(){return respondWithRpcPromise(_0xb00b('0x6b'),_0xb00b('0x5a'),{'module':_0xb00b('0x6c')});})[_0xb00b('0x2f')](function(){var _0xfb2b68=_0x188da7[_0xb00b('0x5b')][_0xb00b('0x31')]({'plain':!![]});if(!_0xfb2b68)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xfb2b68[_0xb00b('0x5d')]===_0xb00b('0x5b')){var _0x7803a0=_0x5aac5f[_0xb00b('0x31')]({'plain':!![]});return db[_0xb00b('0x5e')][_0xb00b('0x52')]({'where':{'name':_0xb00b('0x32'),'userProfileId':_0xfb2b68['userProfileId']},'raw':!![]})[_0xb00b('0x2f')](function(_0x37a4c0){if(_0x37a4c0&&_0x37a4c0[_0xb00b('0x5f')]===0x0){return db[_0xb00b('0x33')][_0xb00b('0x5a')]({'name':_0x7803a0[_0xb00b('0x36')],'resourceId':_0x7803a0['id'],'type':_0x37a4c0['name'],'sectionId':_0x37a4c0['id']},{})[_0xb00b('0x2f')](function(){return _0x5aac5f;});}else{return _0x5aac5f;}})['catch'](function(_0x135cbf){logger['error'](_0xb00b('0x60'),_0x135cbf);throw _0x135cbf;});}return _0x5aac5f;})[_0xb00b('0x2f')](respondWithResult(_0x23762e,0xc9))[_0xb00b('0x22')](handleError(_0x23762e,null));};exports['update']=function(_0x5287cc,_0x9ad1c6,_0x3c4850){var _0x33a483;return db[_0xb00b('0x39')][_0xb00b('0x52')]({'where':{'id':_0x5287cc[_0xb00b('0x51')]['id']}})[_0xb00b('0x2f')](handleEntityNotFound(_0x9ad1c6,null))[_0xb00b('0x2f')](saveUpdates(_0x5287cc[_0xb00b('0x58')],null))[_0xb00b('0x2f')](function(_0x257430){if(_0x257430){_0x33a483=_0x257430;return db[_0xb00b('0x39')][_0xb00b('0x4f')]({'raw':!![]});}})[_0xb00b('0x2f')](function(_0x4eb17d){if(_0x4eb17d){var _0x59503c=fs[_0xb00b('0x61')](path[_0xb00b('0x62')](config['root'],'server/files/templates/trunk.ejs'),_0xb00b('0x64'));var _0x391e98=fs[_0xb00b('0x61')](path['join'](config[_0xb00b('0x65')],_0xb00b('0x66')),_0xb00b('0x64'));var _0x45c9cd=ejs[_0xb00b('0x67')](_0x59503c,{'trunks':_0x4eb17d||[]});fs[_0xb00b('0x68')](_0xb00b('0x69'),_0x45c9cd);var _0x4a9125=ejs[_0xb00b('0x67')](_0x391e98,{'trunks':_0x4eb17d||[]});fs['writeFileSync'](_0xb00b('0x6d'),_0x4a9125);return respondWithRpcPromise(_0xb00b('0x6b'),'update',{'module':_0xb00b('0x6c')});}return null;})[_0xb00b('0x2f')](function(_0xe80a21){if(_0xe80a21){return _0x33a483;}})[_0xb00b('0x2f')](respondWithResult(_0x9ad1c6,null))[_0xb00b('0x22')](handleError(_0x9ad1c6,null));};exports[_0xb00b('0x30')]=function(_0xc41c1f,_0x2423b2,_0x36ba5c){var _0x383d16;return db[_0xb00b('0x39')][_0xb00b('0x52')]({'where':{'id':_0xc41c1f['params']['id']}})[_0xb00b('0x2f')](handleEntityNotFound(_0x2423b2,null))[_0xb00b('0x2f')](removeEntity(_0x2423b2,null))[_0xb00b('0x2f')](function(){return db[_0xb00b('0x39')]['findAll']({'raw':!![]});})[_0xb00b('0x2f')](function(_0x17503d){var _0x32508b=fs[_0xb00b('0x61')](path[_0xb00b('0x62')](config['root'],_0xb00b('0x63')),_0xb00b('0x64'));var _0xa4fe1e=fs[_0xb00b('0x61')](path['join'](config[_0xb00b('0x65')],'server/files/templates/registry.ejs'),_0xb00b('0x64'));var _0x202d5f=ejs[_0xb00b('0x67')](_0x32508b,{'trunks':_0x17503d});var _0x165442=ejs[_0xb00b('0x67')](_0xa4fe1e,{'trunks':_0x17503d});fs[_0xb00b('0x68')](_0xb00b('0x69'),_0x202d5f);fs[_0xb00b('0x68')](_0xb00b('0x6d'),_0x165442);return respondWithRpcPromise(_0xb00b('0x6b'),_0xb00b('0x30'),{'module':'chan_sip.so'});})[_0xb00b('0x22')](handleError(_0x2423b2,null));};
\ No newline at end of file
+var _0x81bd=['/etc/asterisk/sip_xcally_trunks.conf','registry','render','/etc/asterisk/sip_xcally_registers.conf','Reload','chan_sip.so','update','server/files/templates/trunk.ejs','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','destroy','UserProfileResource','name','index','Trunk','rawAttributes','fieldName','key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','clone','find','get','omit','createdAt','updatedAt','body','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Trunks','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readFileSync','join','root','server/files/templates/registry.ejs','utf8','writeFileSync'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0x81bd,0x7c));var _0xd81b=function(_0x3076b5,_0x6bc9df){_0x3076b5=_0x3076b5-0x0;var _0x5ef5da=_0x81bd[_0x3076b5];return _0x5ef5da;};'use strict';var emlformat=require(_0xd81b('0x0'));var rimraf=require(_0xd81b('0x1'));var zipdir=require(_0xd81b('0x2'));var jsonpatch=require(_0xd81b('0x3'));var rp=require(_0xd81b('0x4'));var moment=require(_0xd81b('0x5'));var BPromise=require(_0xd81b('0x6'));var Mustache=require('mustache');var util=require(_0xd81b('0x7'));var path=require(_0xd81b('0x8'));var sox=require(_0xd81b('0x9'));var csv=require('to-csv');var ejs=require(_0xd81b('0xa'));var fs=require('fs');var fs_extra=require(_0xd81b('0xb'));var _=require(_0xd81b('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xd81b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xd81b('0xe'));var querystring=require(_0xd81b('0xf'));var Papa=require(_0xd81b('0x10'));var Redis=require(_0xd81b('0x11'));var authService=require(_0xd81b('0x12'));var qs=require(_0xd81b('0x13'));var as=require(_0xd81b('0x14'));var hardwareService=require(_0xd81b('0x15'));var logger=require(_0xd81b('0x16'))(_0xd81b('0x17'));var utils=require(_0xd81b('0x18'));var config=require(_0xd81b('0x19'));var licenseUtil=require(_0xd81b('0x1a'));var db=require('../../mysqldb')['db'];var jayson=require(_0xd81b('0x1b'));var client=jayson['client'][_0xd81b('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0xe75568,_0x5f0b6b,_0x35a053,_0x47dd04){return new BPromise(function(_0x13dd00,_0x41bf7a){var _0x6c6041=_0x47dd04||client;return _0x6c6041[_0xd81b('0x1d')](_0xe75568,_0x35a053)[_0xd81b('0x1e')](function(_0x552215){logger[_0xd81b('0x1f')](_0xd81b('0x20'),_0x5f0b6b,'request\x20sent');logger[_0xd81b('0x21')](_0xd81b('0x22'),_0x5f0b6b,_0xd81b('0x23'),JSON[_0xd81b('0x24')](_0x552215));if(_0x552215[_0xd81b('0x25')]){if(_0x552215[_0xd81b('0x25')][_0xd81b('0x26')]===0x1f4){logger[_0xd81b('0x25')](_0xd81b('0x20'),_0x5f0b6b,_0x552215[_0xd81b('0x25')][_0xd81b('0x27')]);return _0x41bf7a(_0x552215[_0xd81b('0x25')][_0xd81b('0x27')]);}logger[_0xd81b('0x25')](_0xd81b('0x20'),_0x5f0b6b,_0x552215[_0xd81b('0x25')]['message']);return _0x13dd00(_0x552215['error'][_0xd81b('0x27')]);}else{logger[_0xd81b('0x1f')](_0xd81b('0x20'),_0x5f0b6b,'request\x20sent');_0x13dd00(_0x552215[_0xd81b('0x28')][_0xd81b('0x27')]);}})['catch'](function(_0xcd6474){logger[_0xd81b('0x25')](_0xd81b('0x20'),_0x5f0b6b,_0xcd6474);_0x41bf7a(_0xcd6474);});});}function respondWithStatusCode(_0x1ad65c,_0x279176){_0x279176=_0x279176||0xcc;return function(_0xcb4f91){if(_0xcb4f91){return _0x1ad65c[_0xd81b('0x29')](_0x279176);}return _0x1ad65c[_0xd81b('0x2a')](_0x279176)[_0xd81b('0x2b')]();};}function respondWithResult(_0x212c4e,_0x2ccedf){_0x2ccedf=_0x2ccedf||0xc8;return function(_0x1bf351){if(_0x1bf351){return _0x212c4e['status'](_0x2ccedf)[_0xd81b('0x2c')](_0x1bf351);}};}function respondWithFilteredResult(_0x99dbc9,_0xe3637a){return function(_0x31b9fd){if(_0x31b9fd){var _0x3266c2=typeof _0xe3637a[_0xd81b('0x2d')]===_0xd81b('0x2e')&&typeof _0xe3637a[_0xd81b('0x2f')]===_0xd81b('0x2e');var _0x483a3d=_0x31b9fd[_0xd81b('0x30')];var _0x4e2eff=_0x3266c2?0x0:_0xe3637a['offset'];var _0xb9ff9f=_0x3266c2?_0x31b9fd[_0xd81b('0x30')]:_0xe3637a['offset']+_0xe3637a['limit'];var _0x4093c8;if(_0xb9ff9f>=_0x483a3d){_0xb9ff9f=_0x483a3d;_0x4093c8=0xc8;}else{_0x4093c8=0xce;}_0x99dbc9[_0xd81b('0x2a')](_0x4093c8);return _0x99dbc9[_0xd81b('0x31')](_0xd81b('0x32'),_0x4e2eff+'-'+_0xb9ff9f+'/'+_0x483a3d)[_0xd81b('0x2c')](_0x31b9fd);}return null;};}function patchUpdates(_0x4654ba){return function(_0x5527ed){try{jsonpatch[_0xd81b('0x33')](_0x5527ed,_0x4654ba,!![]);}catch(_0x26f629){return BPromise['reject'](_0x26f629);}return _0x5527ed['save']();};}function saveUpdates(_0x165892,_0x1966b1){return function(_0x50472a){if(_0x50472a){return _0x50472a['update'](_0x165892)['then'](function(_0x322991){return _0x322991;});}return null;};}function removeEntity(_0x3ead68,_0x1d2f46){return function(_0x1c4cf7){if(_0x1c4cf7){return _0x1c4cf7[_0xd81b('0x34')]()[_0xd81b('0x1e')](function(){var _0x29aabf=_0x1c4cf7['get']({'plain':!![]});var _0x28782f='Trunks';return db[_0xd81b('0x35')][_0xd81b('0x34')]({'where':{'type':_0x28782f,'resourceId':_0x29aabf['id']}})[_0xd81b('0x1e')](function(){return _0x1c4cf7;});})[_0xd81b('0x1e')](function(){_0x3ead68[_0xd81b('0x2a')](0xcc)[_0xd81b('0x2b')]();});}};}function handleEntityNotFound(_0x1c20d3,_0x2d23b9){return function(_0xf9d1a5){if(!_0xf9d1a5){_0x1c20d3[_0xd81b('0x29')](0x194);}return _0xf9d1a5;};}function handleError(_0x1be4e2,_0x3c8371){_0x3c8371=_0x3c8371||0x1f4;return function(_0x346038){logger['error'](_0x346038['stack']);if(_0x346038[_0xd81b('0x36')]){delete _0x346038[_0xd81b('0x36')];}_0x1be4e2[_0xd81b('0x2a')](_0x3c8371)['send'](_0x346038);};}exports[_0xd81b('0x37')]=function(_0x37ba34,_0x5a236a){var _0x46f058={},_0xaa9e97={},_0x512e39={'count':0x0,'rows':[]};var _0xed5272=_['map'](db[_0xd81b('0x38')][_0xd81b('0x39')],function(_0x203365){return{'name':_0x203365[_0xd81b('0x3a')],'type':_0x203365['type'][_0xd81b('0x3b')]};});_0xaa9e97[_0xd81b('0x3c')]=_[_0xd81b('0x3d')](_0xed5272,_0xd81b('0x36'));_0xaa9e97[_0xd81b('0x3e')]=_[_0xd81b('0x3f')](_0x37ba34[_0xd81b('0x3e')]);_0xaa9e97['filters']=_[_0xd81b('0x40')](_0xaa9e97[_0xd81b('0x3c')],_0xaa9e97[_0xd81b('0x3e')]);_0x46f058['attributes']=_[_0xd81b('0x40')](_0xaa9e97[_0xd81b('0x3c')],qs[_0xd81b('0x41')](_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x41')]));_0x46f058['attributes']=_0x46f058[_0xd81b('0x42')][_0xd81b('0x43')]?_0x46f058[_0xd81b('0x42')]:_0xaa9e97[_0xd81b('0x3c')];if(!_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x44')](_0xd81b('0x45'))){_0x46f058[_0xd81b('0x2f')]=qs[_0xd81b('0x2f')](_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x2f')]);_0x46f058['offset']=qs[_0xd81b('0x2d')](_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x2d')]);}_0x46f058[_0xd81b('0x46')]=qs[_0xd81b('0x47')](_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x47')]);_0x46f058[_0xd81b('0x48')]=qs['filters'](_['pick'](_0x37ba34[_0xd81b('0x3e')],_0xaa9e97[_0xd81b('0x49')]),_0xed5272);if(_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x4a')]){_0x46f058[_0xd81b('0x48')]=_[_0xd81b('0x4b')](_0x46f058[_0xd81b('0x48')],{'$or':_[_0xd81b('0x3d')](_0xed5272,function(_0x2fa588){if(_0x2fa588[_0xd81b('0x4c')]!==_0xd81b('0x4d')){var _0x38e436={};_0x38e436[_0x2fa588['name']]={'$like':'%'+_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x4a')]+'%'};return _0x38e436;}})});}_0x46f058=_[_0xd81b('0x4b')]({},_0x46f058,_0x37ba34[_0xd81b('0x4e')]);var _0x105a48={'where':_0x46f058[_0xd81b('0x48')]};return db[_0xd81b('0x38')][_0xd81b('0x30')](_0x105a48)[_0xd81b('0x1e')](function(_0x53ea36){_0x512e39[_0xd81b('0x30')]=_0x53ea36;if(_0x37ba34[_0xd81b('0x3e')][_0xd81b('0x4f')]){_0x46f058[_0xd81b('0x50')]=[{'all':!![]}];}return db['Trunk'][_0xd81b('0x51')](_0x46f058);})[_0xd81b('0x1e')](function(_0x15030b){_0x512e39[_0xd81b('0x52')]=_0x15030b;return _0x512e39;})[_0xd81b('0x1e')](respondWithFilteredResult(_0x5a236a,_0x46f058))[_0xd81b('0x53')](handleError(_0x5a236a,null));};exports[_0xd81b('0x54')]=function(_0x43d7ce,_0x133a76){var _0x49cba6={'raw':![],'where':{'id':_0x43d7ce[_0xd81b('0x55')]['id']}},_0x534d10={};_0x534d10[_0xd81b('0x3c')]=_[_0xd81b('0x3f')](db[_0xd81b('0x38')][_0xd81b('0x39')]);_0x534d10[_0xd81b('0x3e')]=_[_0xd81b('0x3f')](_0x43d7ce[_0xd81b('0x3e')]);_0x534d10['filters']=_[_0xd81b('0x40')](_0x534d10[_0xd81b('0x3c')],_0x534d10[_0xd81b('0x3e')]);_0x49cba6[_0xd81b('0x42')]=_[_0xd81b('0x40')](_0x534d10['model'],qs[_0xd81b('0x41')](_0x43d7ce[_0xd81b('0x3e')]['fields']));_0x49cba6[_0xd81b('0x42')]=_0x49cba6[_0xd81b('0x42')][_0xd81b('0x43')]?_0x49cba6[_0xd81b('0x42')]:_0x534d10[_0xd81b('0x3c')];if(_0x43d7ce[_0xd81b('0x3e')][_0xd81b('0x4f')]){_0x49cba6[_0xd81b('0x50')]=[{'all':!![]}];}_0x49cba6=_[_0xd81b('0x4b')]({},_0x49cba6,_0x43d7ce[_0xd81b('0x4e')]);return db[_0xd81b('0x38')]['find'](_0x49cba6)[_0xd81b('0x1e')](handleEntityNotFound(_0x133a76,null))['then'](respondWithResult(_0x133a76,null))[_0xd81b('0x53')](handleError(_0x133a76,null));};exports[_0xd81b('0x56')]=function(_0x390db6,_0x3c2a9f){var _0x34d2a2={'where':{'id':_0x390db6['params']['id']}},_0x1e9f73={};_0x1e9f73[_0xd81b('0x3c')]=_[_0xd81b('0x3f')](db['Trunk']['rawAttributes']);_0x34d2a2[_0xd81b('0x42')]=_['intersection'](_0x1e9f73[_0xd81b('0x3c')],qs['fields'](_0x390db6[_0xd81b('0x3e')][_0xd81b('0x41')]));_0x34d2a2[_0xd81b('0x42')]=_0x34d2a2['attributes'][_0xd81b('0x43')]?_0x34d2a2[_0xd81b('0x42')]:_0x1e9f73['model'];if(_0x390db6[_0xd81b('0x3e')][_0xd81b('0x4f')]){_0x34d2a2['include']=[{'all':!![]}];}_0x34d2a2=_[_0xd81b('0x4b')]({},_0x34d2a2,_0x390db6['options']);return db[_0xd81b('0x38')][_0xd81b('0x57')](_0x34d2a2)[_0xd81b('0x1e')](handleEntityNotFound(_0x3c2a9f,null))[_0xd81b('0x1e')](function(_0x4add79){if(_0x4add79){var _0x32eab4=_0x4add79[_0xd81b('0x58')]({'plain':!![]});_0x32eab4=qs[_0xd81b('0x59')](_0x32eab4,['id',_0xd81b('0x5a'),_0xd81b('0x5b')]);_0x390db6['body']=_[_0xd81b('0x59')](_0x390db6[_0xd81b('0x5c')],['id',_0xd81b('0x5a'),_0xd81b('0x5b')]);return db[_0xd81b('0x38')][_0xd81b('0x5d')](_[_0xd81b('0x4b')](_0x32eab4,_0x390db6['body']),{'include':_0x390db6['query']['includeAll']?[{'all':!![]}]:undefined})[_0xd81b('0x1e')](function(_0x12b0bf){var _0x37507e=_0x390db6[_0xd81b('0x5e')][_0xd81b('0x58')]({'plain':!![]});if(!_0x37507e)throw new Error(_0xd81b('0x5f'));if(_0x37507e[_0xd81b('0x60')]==='user'){var _0x3fcd8c=_0x12b0bf[_0xd81b('0x58')]({'plain':!![]});var _0x35c9cf=_0xd81b('0x61');return db[_0xd81b('0x62')][_0xd81b('0x57')]({'where':{'name':_0x35c9cf,'userProfileId':_0x37507e[_0xd81b('0x63')]},'raw':!![]})['then'](function(_0x14b187){if(_0x14b187&&_0x14b187[_0xd81b('0x64')]===0x0){return db[_0xd81b('0x35')][_0xd81b('0x5d')]({'name':_0x3fcd8c[_0xd81b('0x36')],'resourceId':_0x3fcd8c['id'],'type':_0x14b187[_0xd81b('0x36')],'sectionId':_0x14b187['id']},{})[_0xd81b('0x1e')](function(){return _0x12b0bf;});}else{return _0x12b0bf;}})[_0xd81b('0x53')](function(_0x8fa8cd){logger[_0xd81b('0x25')](_0xd81b('0x65'),_0x8fa8cd);throw _0x8fa8cd;});}return _0x12b0bf;});}})[_0xd81b('0x1e')](respondWithResult(_0x3c2a9f,0xc9))['catch'](handleError(_0x3c2a9f,null));};exports[_0xd81b('0x5d')]=function(_0x5358a6,_0x2e7141,_0x6fa974){var _0x414f40;return db[_0xd81b('0x38')][_0xd81b('0x5d')](_0x5358a6[_0xd81b('0x5c')],{'raw':!![]})[_0xd81b('0x1e')](function(_0x18f2ac){_0x414f40=_0x18f2ac;return db[_0xd81b('0x38')][_0xd81b('0x51')]({'raw':!![]});})['then'](function(_0xfa2a13){var _0x344c32=fs[_0xd81b('0x66')](path[_0xd81b('0x67')](config[_0xd81b('0x68')],'server/files/templates/trunk.ejs'),'utf8');var _0x3274d2=fs[_0xd81b('0x66')](path[_0xd81b('0x67')](config[_0xd81b('0x68')],_0xd81b('0x69')),_0xd81b('0x6a'));var _0xaee7e3=ejs['render'](_0x344c32,{'trunks':_0xfa2a13||[]});fs[_0xd81b('0x6b')](_0xd81b('0x6c'),_0xaee7e3);if(_0x414f40[_0xd81b('0x6d')]){var _0x1c6ec8=ejs[_0xd81b('0x6e')](_0x3274d2,{'trunks':_0xfa2a13||[]});fs[_0xd81b('0x6b')](_0xd81b('0x6f'),_0x1c6ec8);}})[_0xd81b('0x1e')](function(){return respondWithRpcPromise(_0xd81b('0x70'),'create',{'module':_0xd81b('0x71')});})[_0xd81b('0x1e')](function(){var _0x3858eb=_0x5358a6[_0xd81b('0x5e')][_0xd81b('0x58')]({'plain':!![]});if(!_0x3858eb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3858eb[_0xd81b('0x60')]===_0xd81b('0x5e')){var _0x4cc440=_0x414f40[_0xd81b('0x58')]({'plain':!![]});return db[_0xd81b('0x62')]['find']({'where':{'name':_0xd81b('0x61'),'userProfileId':_0x3858eb[_0xd81b('0x63')]},'raw':!![]})[_0xd81b('0x1e')](function(_0x483026){if(_0x483026&&_0x483026[_0xd81b('0x64')]===0x0){return db[_0xd81b('0x35')][_0xd81b('0x5d')]({'name':_0x4cc440['name'],'resourceId':_0x4cc440['id'],'type':_0x483026['name'],'sectionId':_0x483026['id']},{})[_0xd81b('0x1e')](function(){return _0x414f40;});}else{return _0x414f40;}})[_0xd81b('0x53')](function(_0x36c694){logger['error'](_0xd81b('0x65'),_0x36c694);throw _0x36c694;});}return _0x414f40;})[_0xd81b('0x1e')](respondWithResult(_0x2e7141,0xc9))[_0xd81b('0x53')](handleError(_0x2e7141,null));};exports[_0xd81b('0x72')]=function(_0x524196,_0x4f69a7,_0x42ae01){var _0x256696;return db[_0xd81b('0x38')][_0xd81b('0x57')]({'where':{'id':_0x524196['params']['id']}})[_0xd81b('0x1e')](handleEntityNotFound(_0x4f69a7,null))[_0xd81b('0x1e')](saveUpdates(_0x524196['body'],null))[_0xd81b('0x1e')](function(_0x4e5bf4){if(_0x4e5bf4){_0x256696=_0x4e5bf4;return db[_0xd81b('0x38')][_0xd81b('0x51')]({'raw':!![]});}})['then'](function(_0x1be0e6){if(_0x1be0e6){var _0x9a9634=fs[_0xd81b('0x66')](path[_0xd81b('0x67')](config[_0xd81b('0x68')],'server/files/templates/trunk.ejs'),_0xd81b('0x6a'));var _0xc0e137=fs[_0xd81b('0x66')](path[_0xd81b('0x67')](config[_0xd81b('0x68')],_0xd81b('0x69')),'utf8');var _0x5c8ea0=ejs[_0xd81b('0x6e')](_0x9a9634,{'trunks':_0x1be0e6||[]});fs[_0xd81b('0x6b')](_0xd81b('0x6c'),_0x5c8ea0);var _0x15aed5=ejs['render'](_0xc0e137,{'trunks':_0x1be0e6||[]});fs[_0xd81b('0x6b')](_0xd81b('0x6f'),_0x15aed5);return respondWithRpcPromise(_0xd81b('0x70'),_0xd81b('0x72'),{'module':_0xd81b('0x71')});}return null;})['then'](function(_0x3744bf){if(_0x3744bf){return _0x256696;}})[_0xd81b('0x1e')](respondWithResult(_0x4f69a7,null))[_0xd81b('0x53')](handleError(_0x4f69a7,null));};exports[_0xd81b('0x34')]=function(_0x1d596c,_0x288124,_0x402eb9){var _0x57179a;return db[_0xd81b('0x38')][_0xd81b('0x57')]({'where':{'id':_0x1d596c[_0xd81b('0x55')]['id']}})[_0xd81b('0x1e')](handleEntityNotFound(_0x288124,null))[_0xd81b('0x1e')](removeEntity(_0x288124,null))[_0xd81b('0x1e')](function(){return db['Trunk'][_0xd81b('0x51')]({'raw':!![]});})['then'](function(_0x11e590){var _0x9e6e05=fs[_0xd81b('0x66')](path['join'](config[_0xd81b('0x68')],_0xd81b('0x73')),_0xd81b('0x6a'));var _0x5060dc=fs[_0xd81b('0x66')](path[_0xd81b('0x67')](config['root'],_0xd81b('0x69')),'utf8');var _0x5f5514=ejs[_0xd81b('0x6e')](_0x9e6e05,{'trunks':_0x11e590});var _0x428317=ejs[_0xd81b('0x6e')](_0x5060dc,{'trunks':_0x11e590});fs['writeFileSync'](_0xd81b('0x6c'),_0x5f5514);fs[_0xd81b('0x6b')](_0xd81b('0x6f'),_0x428317);return respondWithRpcPromise(_0xd81b('0x70'),_0xd81b('0x34'),{'module':_0xd81b('0x71')});})['catch'](handleError(_0x288124,null));};
\ No newline at end of file
index bc88876..1116cfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1093=['exports','define','Trunk','tools_trunks','lodash','../../config/logger','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x2afd66,_0x46347d){var _0x45ab41=function(_0x3f0382){while(--_0x3f0382){_0x2afd66['push'](_0x2afd66['shift']());}};_0x45ab41(++_0x46347d);}(_0x1093,0x143));var _0x3109=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0x1093[_0x187ee1];return _0x388160;};'use strict';var _=require(_0x3109('0x0'));var util=require('util');var logger=require(_0x3109('0x1'))('api');var moment=require(_0x3109('0x2'));var BPromise=require('bluebird');var rp=require(_0x3109('0x3'));var fs=require('fs');var path=require(_0x3109('0x4'));var rimraf=require(_0x3109('0x5'));var config=require(_0x3109('0x6'));var attributes=require('./trunk.attributes');module[_0x3109('0x7')]=function(_0x2c1490,_0x2c3aac){return _0x2c1490[_0x3109('0x8')](_0x3109('0x9'),attributes,{'tableName':_0x3109('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf4a2=['Trunk','../../config/logger','moment','bluebird','path','../../config/environment','./trunk.attributes','exports','define'];(function(_0x431739,_0x2903f1){var _0x54bcb3=function(_0x4cc195){while(--_0x4cc195){_0x431739['push'](_0x431739['shift']());}};_0x54bcb3(++_0x2903f1);}(_0xf4a2,0x7f));var _0x2f4a=function(_0x5b36bd,_0x4dfb36){_0x5b36bd=_0x5b36bd-0x0;var _0x1614fe=_0xf4a2[_0x5b36bd];return _0x1614fe;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2f4a('0x0'))('api');var moment=require(_0x2f4a('0x1'));var BPromise=require(_0x2f4a('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2f4a('0x3'));var rimraf=require('rimraf');var config=require(_0x2f4a('0x4'));var attributes=require(_0x2f4a('0x5'));module[_0x2f4a('0x6')]=function(_0x52a5bb,_0x93d95c){return _0x52a5bb[_0x2f4a('0x7')](_0x2f4a('0x8'),attributes,{'tableName':'tools_trunks','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a1977a0..0bf1ad1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95db=['options','raw','where','attributes','include','map','model','GetTrunk','ShowTrunk','find','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','Trunk','findAll'];(function(_0x4074d5,_0xa57194){var _0x502cfe=function(_0x345efa){while(--_0x345efa){_0x4074d5['push'](_0x4074d5['shift']());}};_0x502cfe(++_0xa57194);}(_0x95db,0x1a2));var _0xb95d=function(_0x5d80f0,_0x2ad9f0){_0x5d80f0=_0x5d80f0-0x0;var _0x122343=_0x95db[_0x5d80f0];return _0x122343;};'use strict';var _=require(_0xb95d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb95d('0x1'));var fs=require('fs');var Redis=require(_0xb95d('0x2'));var db=require(_0xb95d('0x3'))['db'];var utils=require(_0xb95d('0x4'));var logger=require(_0xb95d('0x5'))(_0xb95d('0x6'));var config=require('../../config/environment');var jayson=require(_0xb95d('0x7'));var client=jayson['client'][_0xb95d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x38cdb3,_0x2060e5,_0x493be2){return new BPromise(function(_0x5bdb83,_0x37df4a){return client[_0xb95d('0x9')](_0x38cdb3,_0x493be2)[_0xb95d('0xa')](function(_0x808f8f){logger['info'](_0xb95d('0xb'),_0x2060e5,_0xb95d('0xc'));logger[_0xb95d('0xd')](_0xb95d('0xe'),_0x2060e5,'request\x20sent',JSON[_0xb95d('0xf')](_0x808f8f));if(_0x808f8f['error']){if(_0x808f8f[_0xb95d('0x10')][_0xb95d('0x11')]===0x1f4){logger['error']('Trunk,\x20%s,\x20%s',_0x2060e5,_0x808f8f['error'][_0xb95d('0x12')]);return _0x37df4a(_0x808f8f[_0xb95d('0x10')][_0xb95d('0x12')]);}logger[_0xb95d('0x10')](_0xb95d('0xb'),_0x2060e5,_0x808f8f[_0xb95d('0x10')][_0xb95d('0x12')]);return _0x5bdb83(_0x808f8f[_0xb95d('0x10')]['message']);}else{logger[_0xb95d('0x13')](_0xb95d('0xb'),_0x2060e5,'request\x20sent');_0x5bdb83(_0x808f8f[_0xb95d('0x14')][_0xb95d('0x12')]);}})[_0xb95d('0x15')](function(_0x19fd54){logger['error'](_0xb95d('0xb'),_0x2060e5,_0x19fd54);_0x37df4a(_0x19fd54);});});}exports['GetTrunk']=function(_0x37e512){var _0xaec168=this;return new Promise(function(_0x40737f,_0x2e0735){return db[_0xb95d('0x16')][_0xb95d('0x17')]({'raw':_0x37e512['options']?_0x37e512[_0xb95d('0x18')][_0xb95d('0x19')]===undefined?!![]:![]:!![],'where':_0x37e512['options']?_0x37e512[_0xb95d('0x18')][_0xb95d('0x1a')]||null:null,'attributes':_0x37e512[_0xb95d('0x18')]?_0x37e512[_0xb95d('0x18')][_0xb95d('0x1b')]||null:null,'limit':_0x37e512[_0xb95d('0x18')]?_0x37e512['options']['limit']||null:null,'include':_0x37e512[_0xb95d('0x18')]?_0x37e512[_0xb95d('0x18')][_0xb95d('0x1c')]?_[_0xb95d('0x1d')](_0x37e512[_0xb95d('0x18')][_0xb95d('0x1c')],function(_0x579911){return{'model':db[_0x579911['model']],'as':_0x579911['as'],'attributes':_0x579911[_0xb95d('0x1b')],'include':_0x579911[_0xb95d('0x1c')]?_[_0xb95d('0x1d')](_0x579911[_0xb95d('0x1c')],function(_0x1e0fd8){return{'model':db[_0x1e0fd8[_0xb95d('0x1e')]],'as':_0x1e0fd8['as'],'attributes':_0x1e0fd8['attributes'],'include':_0x1e0fd8[_0xb95d('0x1c')]?_['map'](_0x1e0fd8[_0xb95d('0x1c')],function(_0x1a98c1){return{'model':db[_0x1a98c1[_0xb95d('0x1e')]],'as':_0x1a98c1['as'],'attributes':_0x1a98c1['attributes']};}):[]};}):[]};}):[]:[]})[_0xb95d('0xa')](function(_0x3a7239){logger['info'](_0xb95d('0x1f'),_0x37e512);logger['debug'](_0xb95d('0x1f'),_0x37e512,JSON['stringify'](_0x3a7239));_0x40737f(_0x3a7239);})[_0xb95d('0x15')](function(_0x4633e2){logger[_0xb95d('0x10')](_0xb95d('0x1f'),_0x4633e2['message'],_0x37e512);_0x2e0735(_0xaec168[_0xb95d('0x10')](0x1f4,_0x4633e2[_0xb95d('0x12')]));});});};exports[_0xb95d('0x20')]=function(_0x4404e6){var _0x15b621=this;return new Promise(function(_0x193a3f,_0x17578e){return db[_0xb95d('0x16')][_0xb95d('0x21')]({'raw':_0x4404e6[_0xb95d('0x18')]?_0x4404e6[_0xb95d('0x18')][_0xb95d('0x19')]===undefined?!![]:![]:!![],'where':_0x4404e6[_0xb95d('0x18')]?_0x4404e6[_0xb95d('0x18')][_0xb95d('0x1a')]||null:null,'attributes':_0x4404e6[_0xb95d('0x18')]?_0x4404e6[_0xb95d('0x18')][_0xb95d('0x1b')]||null:null,'include':_0x4404e6[_0xb95d('0x18')]?_0x4404e6[_0xb95d('0x18')][_0xb95d('0x1c')]?_[_0xb95d('0x1d')](_0x4404e6[_0xb95d('0x18')][_0xb95d('0x1c')],function(_0xd75ae0){return{'model':db[_0xd75ae0[_0xb95d('0x1e')]],'as':_0xd75ae0['as'],'attributes':_0xd75ae0['attributes'],'include':_0xd75ae0['include']?_['map'](_0xd75ae0['include'],function(_0x57885e){return{'model':db[_0x57885e['model']],'as':_0x57885e['as'],'attributes':_0x57885e[_0xb95d('0x1b')],'include':_0x57885e[_0xb95d('0x1c')]?_['map'](_0x57885e[_0xb95d('0x1c')],function(_0x43cea8){return{'model':db[_0x43cea8[_0xb95d('0x1e')]],'as':_0x43cea8['as'],'attributes':_0x43cea8['attributes']};}):[]};}):[]};}):[]:[]})[_0xb95d('0xa')](function(_0x15eaf6){logger[_0xb95d('0x13')](_0xb95d('0x20'),_0x4404e6);logger[_0xb95d('0xd')](_0xb95d('0x20'),_0x4404e6,JSON['stringify'](_0x15eaf6));_0x193a3f(_0x15eaf6);})['catch'](function(_0x3b2fff){logger[_0xb95d('0x10')](_0xb95d('0x20'),_0x3b2fff[_0xb95d('0x12')],_0x4404e6);_0x17578e(_0x15b621[_0xb95d('0x10')](0x1f4,_0x3b2fff[_0xb95d('0x12')]));});});};
\ No newline at end of file
+var _0xe9c9=['Trunk','findAll','options','raw','where','attributes','limit','map','include','model','catch','ShowTrunk','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetTrunk'];(function(_0x36c270,_0x2569ff){var _0x276c73=function(_0x27ea41){while(--_0x27ea41){_0x36c270['push'](_0x36c270['shift']());}};_0x276c73(++_0x2569ff);}(_0xe9c9,0xc0));var _0x9e9c=function(_0x9cd4c3,_0x1c9b2c){_0x9cd4c3=_0x9cd4c3-0x0;var _0x4c9025=_0xe9c9[_0x9cd4c3];return _0x4c9025;};'use strict';var _=require(_0x9e9c('0x0'));var util=require(_0x9e9c('0x1'));var moment=require(_0x9e9c('0x2'));var BPromise=require(_0x9e9c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9e9c('0x4'));var db=require(_0x9e9c('0x5'))['db'];var utils=require(_0x9e9c('0x6'));var logger=require(_0x9e9c('0x7'))(_0x9e9c('0x8'));var config=require(_0x9e9c('0x9'));var jayson=require(_0x9e9c('0xa'));var client=jayson['client'][_0x9e9c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2eb4ee,_0x3911c6,_0x10d7fc){return new BPromise(function(_0x1a3b5d,_0x2c082a){return client['request'](_0x2eb4ee,_0x10d7fc)[_0x9e9c('0xc')](function(_0x312926){logger[_0x9e9c('0xd')](_0x9e9c('0xe'),_0x3911c6,_0x9e9c('0xf'));logger[_0x9e9c('0x10')](_0x9e9c('0x11'),_0x3911c6,_0x9e9c('0xf'),JSON[_0x9e9c('0x12')](_0x312926));if(_0x312926['error']){if(_0x312926[_0x9e9c('0x13')][_0x9e9c('0x14')]===0x1f4){logger[_0x9e9c('0x13')]('Trunk,\x20%s,\x20%s',_0x3911c6,_0x312926[_0x9e9c('0x13')]['message']);return _0x2c082a(_0x312926[_0x9e9c('0x13')]['message']);}logger[_0x9e9c('0x13')](_0x9e9c('0xe'),_0x3911c6,_0x312926[_0x9e9c('0x13')][_0x9e9c('0x15')]);return _0x1a3b5d(_0x312926['error'][_0x9e9c('0x15')]);}else{logger['info'](_0x9e9c('0xe'),_0x3911c6,_0x9e9c('0xf'));_0x1a3b5d(_0x312926[_0x9e9c('0x16')]['message']);}})['catch'](function(_0x28fa4f){logger[_0x9e9c('0x13')]('Trunk,\x20%s,\x20%s',_0x3911c6,_0x28fa4f);_0x2c082a(_0x28fa4f);});});}exports[_0x9e9c('0x17')]=function(_0x2531b3){var _0x5652c8=this;return new Promise(function(_0x587265,_0xf9c515){return db[_0x9e9c('0x18')][_0x9e9c('0x19')]({'raw':_0x2531b3[_0x9e9c('0x1a')]?_0x2531b3['options'][_0x9e9c('0x1b')]===undefined?!![]:![]:!![],'where':_0x2531b3[_0x9e9c('0x1a')]?_0x2531b3[_0x9e9c('0x1a')][_0x9e9c('0x1c')]||null:null,'attributes':_0x2531b3[_0x9e9c('0x1a')]?_0x2531b3[_0x9e9c('0x1a')][_0x9e9c('0x1d')]||null:null,'limit':_0x2531b3['options']?_0x2531b3['options'][_0x9e9c('0x1e')]||null:null,'include':_0x2531b3['options']?_0x2531b3['options']['include']?_[_0x9e9c('0x1f')](_0x2531b3[_0x9e9c('0x1a')][_0x9e9c('0x20')],function(_0x2cca78){return{'model':db[_0x2cca78[_0x9e9c('0x21')]],'as':_0x2cca78['as'],'attributes':_0x2cca78[_0x9e9c('0x1d')],'include':_0x2cca78[_0x9e9c('0x20')]?_[_0x9e9c('0x1f')](_0x2cca78['include'],function(_0x3f0ca7){return{'model':db[_0x3f0ca7[_0x9e9c('0x21')]],'as':_0x3f0ca7['as'],'attributes':_0x3f0ca7[_0x9e9c('0x1d')],'include':_0x3f0ca7[_0x9e9c('0x20')]?_[_0x9e9c('0x1f')](_0x3f0ca7[_0x9e9c('0x20')],function(_0x5e6e3e){return{'model':db[_0x5e6e3e[_0x9e9c('0x21')]],'as':_0x5e6e3e['as'],'attributes':_0x5e6e3e['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1aa135){logger[_0x9e9c('0xd')]('GetTrunk',_0x2531b3);logger[_0x9e9c('0x10')](_0x9e9c('0x17'),_0x2531b3,JSON[_0x9e9c('0x12')](_0x1aa135));_0x587265(_0x1aa135);})[_0x9e9c('0x22')](function(_0x560344){logger[_0x9e9c('0x13')](_0x9e9c('0x17'),_0x560344[_0x9e9c('0x15')],_0x2531b3);_0xf9c515(_0x5652c8[_0x9e9c('0x13')](0x1f4,_0x560344[_0x9e9c('0x15')]));});});};exports['ShowTrunk']=function(_0x81c589){var _0x4c9b78=this;return new Promise(function(_0x564c79,_0x21c04b){return db[_0x9e9c('0x18')]['find']({'raw':_0x81c589[_0x9e9c('0x1a')]?_0x81c589[_0x9e9c('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x81c589[_0x9e9c('0x1a')]?_0x81c589[_0x9e9c('0x1a')][_0x9e9c('0x1c')]||null:null,'attributes':_0x81c589[_0x9e9c('0x1a')]?_0x81c589[_0x9e9c('0x1a')][_0x9e9c('0x1d')]||null:null,'include':_0x81c589['options']?_0x81c589['options'][_0x9e9c('0x20')]?_[_0x9e9c('0x1f')](_0x81c589[_0x9e9c('0x1a')][_0x9e9c('0x20')],function(_0xe4fae3){return{'model':db[_0xe4fae3[_0x9e9c('0x21')]],'as':_0xe4fae3['as'],'attributes':_0xe4fae3['attributes'],'include':_0xe4fae3[_0x9e9c('0x20')]?_['map'](_0xe4fae3[_0x9e9c('0x20')],function(_0xabb633){return{'model':db[_0xabb633['model']],'as':_0xabb633['as'],'attributes':_0xabb633[_0x9e9c('0x1d')],'include':_0xabb633[_0x9e9c('0x20')]?_[_0x9e9c('0x1f')](_0xabb633[_0x9e9c('0x20')],function(_0x37a6e2){return{'model':db[_0x37a6e2['model']],'as':_0x37a6e2['as'],'attributes':_0x37a6e2[_0x9e9c('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xfc7450){logger['info']('ShowTrunk',_0x81c589);logger[_0x9e9c('0x10')](_0x9e9c('0x23'),_0x81c589,JSON[_0x9e9c('0x12')](_0xfc7450));_0x564c79(_0xfc7450);})[_0x9e9c('0x22')](function(_0x532a7d){logger[_0x9e9c('0x13')](_0x9e9c('0x23'),_0x532a7d[_0x9e9c('0x15')],_0x81c589);_0x21c04b(_0x4c9b78['error'](0x1f4,_0x532a7d['message']));});});};
\ No newline at end of file
index fcdbe8d..62c68bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x022e=['put','/:id','update','exports','express','../../components/auth/service','./user-setting.controller'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x022e,0x10e));var _0xe022=function(_0x565c49,_0x54acd0){_0x565c49=_0x565c49-0x0;var _0x20ca34=_0x022e[_0x565c49];return _0x20ca34;};'use strict';var express=require(_0xe022('0x0'));var router=express['Router']();var auth=require(_0xe022('0x1'));var controller=require(_0xe022('0x2'));router[_0xe022('0x3')](_0xe022('0x4'),auth['isAuthenticated'](),controller[_0xe022('0x5')]);module[_0xe022('0x6')]=router;
\ No newline at end of file
+var _0x94b8=['./user-setting.controller','put','/:id','isAuthenticated','update','exports','express','Router'];(function(_0x255146,_0x437ab2){var _0x1381e3=function(_0x2fd81b){while(--_0x2fd81b){_0x255146['push'](_0x255146['shift']());}};_0x1381e3(++_0x437ab2);}(_0x94b8,0x15e));var _0x894b=function(_0x3e332e,_0x2a6a53){_0x3e332e=_0x3e332e-0x0;var _0x24e1ae=_0x94b8[_0x3e332e];return _0x24e1ae;};'use strict';var express=require(_0x894b('0x0'));var router=express[_0x894b('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0x894b('0x2'));router[_0x894b('0x3')](_0x894b('0x4'),auth[_0x894b('0x5')](),controller[_0x894b('0x6')]);module[_0x894b('0x7')]=router;
\ No newline at end of file
index 47c3432..d2a81da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ae1=['INTEGER','UserId','sequelize','error','warning','info','debug','exports','ENUM','BOOLEAN','DATE'];(function(_0x2f4bdc,_0x3f0878){var _0x43d004=function(_0x4f7781){while(--_0x4f7781){_0x2f4bdc['push'](_0x2f4bdc['shift']());}};_0x43d004(++_0x3f0878);}(_0x6ae1,0xff));var _0x16ae=function(_0x1fdac4,_0x268905){_0x1fdac4=_0x1fdac4-0x0;var _0x3fdb21=_0x6ae1[_0x1fdac4];return _0x3fdb21;};'use strict';var Sequelize=require(_0x16ae('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0x16ae('0x1'),_0x16ae('0x2'),_0x16ae('0x3'),_0x16ae('0x4')];module[_0x16ae('0x5')]={'clientSideLoggingLevel':{'type':Sequelize[_0x16ae('0x6')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':'error','validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x16ae('0x7')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize['TEXT'],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x16ae('0x8')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x16ae('0x9')],'unique':_0x16ae('0xa')}};
\ No newline at end of file
+var _0x6e44=['TEXT','DATE','UserId','sequelize','error','warning','info','debug','exports','ENUM','BOOLEAN'];(function(_0x529abc,_0x17b97e){var _0x453afa=function(_0x536263){while(--_0x536263){_0x529abc['push'](_0x529abc['shift']());}};_0x453afa(++_0x17b97e);}(_0x6e44,0x1b0));var _0x46e4=function(_0x2e15de,_0x3b9a6f){_0x2e15de=_0x2e15de-0x0;var _0xdaa198=_0x6e44[_0x2e15de];return _0xdaa198;};'use strict';var Sequelize=require(_0x46e4('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0x46e4('0x1'),_0x46e4('0x2'),_0x46e4('0x3'),_0x46e4('0x4')];module[_0x46e4('0x5')]={'clientSideLoggingLevel':{'type':Sequelize[_0x46e4('0x6')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x46e4('0x1'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x46e4('0x7')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x46e4('0x8')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x46e4('0x9')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize['INTEGER'],'unique':_0x46e4('0xa')}};
\ No newline at end of file
index 8b7ee62..2f8c9c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd0c=['Unauthorized','params','Invalid\x20user\x20setting\x20id','body','catch','ioredis','../../config/logger','api','../../mysqldb','redis','./user-setting.socket','register','defaults','localhost','status','then','sendStatus','error','stack','send','role','admin'];(function(_0x484520,_0x23a4ad){var _0x12153e=function(_0x2c494b){while(--_0x2c494b){_0x484520['push'](_0x484520['shift']());}};_0x12153e(++_0x23a4ad);}(_0xdd0c,0x165));var _0xcdd0=function(_0x42bdcd,_0x5d36a0){_0x42bdcd=_0x42bdcd-0x0;var _0x3f09e6=_0xdd0c[_0x42bdcd];return _0x3f09e6;};'use strict';var _=require('lodash');var Redis=require(_0xcdd0('0x0'));var logger=require(_0xcdd0('0x1'))(_0xcdd0('0x2'));var config=require('../../config/environment');var db=require(_0xcdd0('0x3'))['db'];var socket=require('socket.io-emitter')(new Redis(config[_0xcdd0('0x4')]));require(_0xcdd0('0x5'))[_0xcdd0('0x6')](socket);config[_0xcdd0('0x4')]=_[_0xcdd0('0x7')](config['redis'],{'host':_0xcdd0('0x8'),'port':0x18eb});function respondWithResult(_0x1b6f5d,_0x1fd3f6){_0x1fd3f6=_0x1fd3f6||0xc8;return function(_0x15c402){if(_0x15c402){return _0x1b6f5d[_0xcdd0('0x9')](_0x1fd3f6)['json'](_0x15c402);}};}function saveUpdates(_0x17e83e){return function(_0x48db66){if(_0x48db66){return _0x48db66['update'](_0x17e83e)[_0xcdd0('0xa')](function(_0x31cf23){return _0x31cf23;});}return null;};}function handleEntityNotFound(_0x3c753e){return function(_0x173745){if(!_0x173745){_0x3c753e[_0xcdd0('0xb')](0x194);}return _0x173745;};}function handleError(_0x460fce,_0x2ab642){_0x2ab642=_0x2ab642||0x1f4;return function(_0x83845b){logger[_0xcdd0('0xc')](_0x83845b[_0xcdd0('0xd')]);if(_0x83845b['name']){delete _0x83845b['name'];}_0x460fce[_0xcdd0('0x9')](_0x2ab642)[_0xcdd0('0xe')](_0x83845b);};}exports['update']=function(_0xe8e8c0,_0x1b28e0){if(_0xe8e8c0['user'][_0xcdd0('0xf')]!==_0xcdd0('0x10'))throw new Error(_0xcdd0('0x11'));if(isNaN(Number(_0xe8e8c0[_0xcdd0('0x12')]['id'])))throw new Error(_0xcdd0('0x13'));return db['UserSetting']['find']({'where':{'id':_0xe8e8c0[_0xcdd0('0x12')]['id']}})[_0xcdd0('0xa')](handleEntityNotFound(_0x1b28e0,null))[_0xcdd0('0xa')](saveUpdates(_0xe8e8c0[_0xcdd0('0x14')],null))[_0xcdd0('0xa')](respondWithResult(_0x1b28e0,null))[_0xcdd0('0x15')](handleError(_0x1b28e0,null));};
\ No newline at end of file
+var _0x61df=['../../config/environment','socket.io-emitter','redis','register','defaults','localhost','json','update','then','sendStatus','stack','status','admin','Unauthorized','params','Invalid\x20user\x20setting\x20id','find','catch','api'];(function(_0x2b961a,_0x3c9f91){var _0x6b761c=function(_0x2ff484){while(--_0x2ff484){_0x2b961a['push'](_0x2b961a['shift']());}};_0x6b761c(++_0x3c9f91);}(_0x61df,0xbd));var _0xf61d=function(_0x188a53,_0x4d8d26){_0x188a53=_0x188a53-0x0;var _0x5d1ae3=_0x61df[_0x188a53];return _0x5d1ae3;};'use strict';var _=require('lodash');var Redis=require('ioredis');var logger=require('../../config/logger')(_0xf61d('0x0'));var config=require(_0xf61d('0x1'));var db=require('../../mysqldb')['db'];var socket=require(_0xf61d('0x2'))(new Redis(config[_0xf61d('0x3')]));require('./user-setting.socket')[_0xf61d('0x4')](socket);config[_0xf61d('0x3')]=_[_0xf61d('0x5')](config[_0xf61d('0x3')],{'host':_0xf61d('0x6'),'port':0x18eb});function respondWithResult(_0x3ac0ec,_0x5f0981){_0x5f0981=_0x5f0981||0xc8;return function(_0x42b382){if(_0x42b382){return _0x3ac0ec['status'](_0x5f0981)[_0xf61d('0x7')](_0x42b382);}};}function saveUpdates(_0x2a07c5){return function(_0x3567de){if(_0x3567de){return _0x3567de[_0xf61d('0x8')](_0x2a07c5)[_0xf61d('0x9')](function(_0x8a4050){return _0x8a4050;});}return null;};}function handleEntityNotFound(_0x3a6738){return function(_0x242cc5){if(!_0x242cc5){_0x3a6738[_0xf61d('0xa')](0x194);}return _0x242cc5;};}function handleError(_0x3b961c,_0x5bfa95){_0x5bfa95=_0x5bfa95||0x1f4;return function(_0x254eec){logger['error'](_0x254eec[_0xf61d('0xb')]);if(_0x254eec['name']){delete _0x254eec['name'];}_0x3b961c[_0xf61d('0xc')](_0x5bfa95)['send'](_0x254eec);};}exports['update']=function(_0x5d2d39,_0x447b25){if(_0x5d2d39['user']['role']!==_0xf61d('0xd'))throw new Error(_0xf61d('0xe'));if(isNaN(Number(_0x5d2d39[_0xf61d('0xf')]['id'])))throw new Error(_0xf61d('0x10'));return db['UserSetting'][_0xf61d('0x11')]({'where':{'id':_0x5d2d39[_0xf61d('0xf')]['id']}})[_0xf61d('0x9')](handleEntityNotFound(_0x447b25,null))[_0xf61d('0x9')](saveUpdates(_0x5d2d39['body'],null))['then'](respondWithResult(_0x447b25,null))[_0xf61d('0x12')](handleError(_0x447b25,null));};
\ No newline at end of file
index 1538053..cad51ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c8a=['hook','events','../../mysqldb','UserSetting','update','remove','emit','hasOwnProperty'];(function(_0x1ed116,_0x23bc80){var _0x574066=function(_0x424f9e){while(--_0x424f9e){_0x1ed116['push'](_0x1ed116['shift']());}};_0x574066(++_0x23bc80);}(_0x9c8a,0x81));var _0xa9c8=function(_0x5461c1,_0x5b8eb2){_0x5461c1=_0x5461c1-0x0;var _0xaebe6e=_0x9c8a[_0x5461c1];return _0xaebe6e;};'use strict';var EventEmitter=require(_0xa9c8('0x0'));var UserSetting=require(_0xa9c8('0x1'))['db'][_0xa9c8('0x2')];var UserSettingEvents=new EventEmitter();UserSettingEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xa9c8('0x3'),'afterDestroy':_0xa9c8('0x4')};function emitEvent(_0x1a3e03){return function(_0x56d8ac,_0x4afe1f,_0x426d0e){UserSettingEvents[_0xa9c8('0x5')](_0x1a3e03+':'+_0x56d8ac['id'],_0x56d8ac);UserSettingEvents[_0xa9c8('0x5')](_0x1a3e03,_0x56d8ac);_0x426d0e(null);};}for(var e in events){if(events[_0xa9c8('0x6')](e)){var event=events[e];UserSetting[_0xa9c8('0x7')](e,emitEvent(event));}}module['exports']=UserSettingEvents;
\ No newline at end of file
+var _0x24f5=['emit','hook','exports','save','update','remove'];(function(_0x3a3ade,_0x19cf05){var _0x213424=function(_0x52f079){while(--_0x52f079){_0x3a3ade['push'](_0x3a3ade['shift']());}};_0x213424(++_0x19cf05);}(_0x24f5,0x1dd));var _0x524f=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x24f5[_0x17d9e3];return _0x14192d;};'use strict';var EventEmitter=require('events');var UserSetting=require('../../mysqldb')['db']['UserSetting'];var UserSettingEvents=new EventEmitter();UserSettingEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x524f('0x0'),'afterUpdate':_0x524f('0x1'),'afterDestroy':_0x524f('0x2')};function emitEvent(_0x5b95b6){return function(_0x1e468d,_0x2f30a1,_0x4f29f3){UserSettingEvents[_0x524f('0x3')](_0x5b95b6+':'+_0x1e468d['id'],_0x1e468d);UserSettingEvents[_0x524f('0x3')](_0x5b95b6,_0x1e468d);_0x4f29f3(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserSetting[_0x524f('0x4')](e,emitEvent(event));}}module[_0x524f('0x5')]=UserSettingEvents;
\ No newline at end of file
index 0e4a37f..8a68b8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c50=['clientSideLoggingEnabled','clientSideLoggingEnabledSince','./user-setting.attributes','exports','define','user_settings'];(function(_0xe239fd,_0x55870e){var _0x51038d=function(_0x41d883){while(--_0x41d883){_0xe239fd['push'](_0xe239fd['shift']());}};_0x51038d(++_0x55870e);}(_0x6c50,0xa4));var _0x06c5=function(_0x5e5d2a,_0x478117){_0x5e5d2a=_0x5e5d2a-0x0;var _0x18cc29=_0x6c50[_0x5e5d2a];return _0x18cc29;};'use strict';var attributes=require(_0x06c5('0x0'));module[_0x06c5('0x1')]=function(_0x306ad3){return _0x306ad3[_0x06c5('0x2')]('UserSetting',attributes,{'tableName':_0x06c5('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x494494){if(!_0x494494[_0x06c5('0x4')])_0x494494[_0x06c5('0x5')]=null;else if(_0x494494[_0x06c5('0x5')]===null)_0x494494[_0x06c5('0x5')]=new Date();}}});};
\ No newline at end of file
+var _0x9861=['clientSideLoggingEnabled','clientSideLoggingEnabledSince','./user-setting.attributes','define','UserSetting','user_settings'];(function(_0x51bb1c,_0x4b8492){var _0x3f6a50=function(_0x52dd88){while(--_0x52dd88){_0x51bb1c['push'](_0x51bb1c['shift']());}};_0x3f6a50(++_0x4b8492);}(_0x9861,0x176));var _0x1986=function(_0x50bbd7,_0x69772d){_0x50bbd7=_0x50bbd7-0x0;var _0xaa4db5=_0x9861[_0x50bbd7];return _0xaa4db5;};'use strict';var attributes=require(_0x1986('0x0'));module['exports']=function(_0x5071b2){return _0x5071b2[_0x1986('0x1')](_0x1986('0x2'),attributes,{'tableName':_0x1986('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3ddc92){if(!_0x3ddc92[_0x1986('0x4')])_0x3ddc92[_0x1986('0x5')]=null;else if(_0x3ddc92['clientSideLoggingEnabledSince']===null)_0x3ddc92[_0x1986('0x5')]=new Date();}}});};
\ No newline at end of file
index f7e848e..f1a2bef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeba8=['user-setting:update:user-','UserId','length','user-setting:','./user-setting.events','remove','emit'];(function(_0x48b5e6,_0x14cd11){var _0x8a03f9=function(_0xbb6861){while(--_0xbb6861){_0x48b5e6['push'](_0x48b5e6['shift']());}};_0x8a03f9(++_0x14cd11);}(_0xeba8,0x6d));var _0x8eba=function(_0x50d84b,_0x1d7ea7){_0x50d84b=_0x50d84b-0x0;var _0x6d4270=_0xeba8[_0x50d84b];return _0x6d4270;};'use strict';var UserSettingEvents=require(_0x8eba('0x0'));var events=['save',_0x8eba('0x1'),'update'];function createListener(_0x307e14,_0x40f345){return function(_0x372285){_0x40f345['emit'](_0x307e14,_0x372285);if(_0x307e14==='user-setting:update'){_0x40f345[_0x8eba('0x2')](_0x8eba('0x3')+_0x372285[_0x8eba('0x4')],_0x372285);}};}exports['register']=function(_0x35ee6e){for(var _0x2aa7df=0x0,_0x9b840d=events[_0x8eba('0x5')];_0x2aa7df<_0x9b840d;_0x2aa7df++){var _0x449ba5=events[_0x2aa7df];var _0x1b4407=createListener(_0x8eba('0x6')+_0x449ba5,_0x35ee6e);UserSettingEvents['on'](_0x449ba5,_0x1b4407);}};
\ No newline at end of file
+var _0xa880=['UserId','register','length','user-setting:','./user-setting.events','save','remove','emit','user-setting:update','user-setting:update:user-'];(function(_0x228bb3,_0x284654){var _0xfede77=function(_0x4d30df){while(--_0x4d30df){_0x228bb3['push'](_0x228bb3['shift']());}};_0xfede77(++_0x284654);}(_0xa880,0x130));var _0x0a88=function(_0x71a6e0,_0x19ff83){_0x71a6e0=_0x71a6e0-0x0;var _0x264938=_0xa880[_0x71a6e0];return _0x264938;};'use strict';var UserSettingEvents=require(_0x0a88('0x0'));var events=[_0x0a88('0x1'),_0x0a88('0x2'),'update'];function createListener(_0x2d3d1f,_0x565a53){return function(_0x9f1b24){_0x565a53[_0x0a88('0x3')](_0x2d3d1f,_0x9f1b24);if(_0x2d3d1f===_0x0a88('0x4')){_0x565a53[_0x0a88('0x3')](_0x0a88('0x5')+_0x9f1b24[_0x0a88('0x6')],_0x9f1b24);}};}exports[_0x0a88('0x7')]=function(_0x120c2c){for(var _0x41d7be=0x0,_0x4120a6=events[_0x0a88('0x8')];_0x41d7be<_0x4120a6;_0x41d7be++){var _0x4f5d45=events[_0x41d7be];var _0x1eb2bc=createListener(_0x0a88('0x9')+_0x4f5d45,_0x120c2c);UserSettingEvents['on'](_0x4f5d45,_0x1eb2bc);}};
\ No newline at end of file
index a61410f..8254e0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e4e=['/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','getMailAccounts','/:id/openchannel_accounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/scheduled_calls','/:id/api_key','getApiKey','post','bulkCreate','addQueues','diskStorage','join','root','server/files/images/','%s-%s','now','originalname','single','addAvatar','login','logout','/:id/pause','pause','/:id/unpause','unpause','addTeams','/:id/chat_interactions','addChatInteractions','addMailInteractions','/:id/fax_interactions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','put','update','/:id/password','delete','removeQueues','removeTeams','removeChatInteractions','removeMailInteractions','removeFaxInteractions','/:id/sms_interactions','removeWhatsappInteractions','removeMailAccounts','removeSmsAccounts','removeChatWebsites','removeApiKey','/:id/messengerSoundNotification','messengerSoundNotification','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./user.controller','get','isAuthenticated','/whoami','whoami','/presence','getPresence','/:id','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','getVoiceQueuesRt','/:id/groups','/:id/recordings','getRecordings','/:id/screen_recordings','/:id/chat/interactions','/:id/openchannel/interactions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/teams','getTeams','/:id/lists','getLists','/:id/agents','getAgents','/:id/prefixes','getVoicePrefixes'];(function(_0x350f0f,_0x549a3b){var _0x1ea456=function(_0x27c9ec){while(--_0x27c9ec){_0x350f0f['push'](_0x350f0f['shift']());}};_0x1ea456(++_0x549a3b);}(_0x1e4e,0xaf));var _0xe1e4=function(_0x419e20,_0x18021a){_0x419e20=_0x419e20-0x0;var _0x2e1f1c=_0x1e4e[_0x419e20];return _0x2e1f1c;};'use strict';var multer=require(_0xe1e4('0x0'));var util=require(_0xe1e4('0x1'));var path=require('path');var timeout=require(_0xe1e4('0x2'));var express=require(_0xe1e4('0x3'));var router=express[_0xe1e4('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe1e4('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xe1e4('0x6'));var controller=require(_0xe1e4('0x7'));router[_0xe1e4('0x8')]('/',auth[_0xe1e4('0x9')](),controller['index']);router[_0xe1e4('0x8')]('/describe',auth[_0xe1e4('0x9')](),controller['describe']);router[_0xe1e4('0x8')](_0xe1e4('0xa'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0xb')]);router[_0xe1e4('0x8')](_0xe1e4('0xc'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0xd')]);router[_0xe1e4('0x8')](_0xe1e4('0xe'),auth['isAuthenticated'](),controller['show']);router['get'](_0xe1e4('0xf'),controller[_0xe1e4('0x10')]);router[_0xe1e4('0x8')](_0xe1e4('0x11'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x12')]);router['get'](_0xe1e4('0x13'),auth['isAuthenticated'](),controller[_0xe1e4('0x14')]);router[_0xe1e4('0x8')](_0xe1e4('0x15'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x16')]);router[_0xe1e4('0x8')]('/:id/queues_rt',auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x17')]);router[_0xe1e4('0x8')](_0xe1e4('0x18'),auth['isAuthenticated'](),controller['getGroups']);router['get'](_0xe1e4('0x19'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x1a')]);router['get'](_0xe1e4('0x1b'),auth[_0xe1e4('0x9')](),controller['getScreenRecordings']);router[_0xe1e4('0x8')](_0xe1e4('0x1c'),auth[_0xe1e4('0x9')](),controller['getChatInteractions']);router[_0xe1e4('0x8')](_0xe1e4('0x1d'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x1e')]);router[_0xe1e4('0x8')](_0xe1e4('0x1f'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x20')]);router[_0xe1e4('0x8')](_0xe1e4('0x21'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x22')]);router[_0xe1e4('0x8')](_0xe1e4('0x23'),auth['isAuthenticated'](),controller[_0xe1e4('0x24')]);router[_0xe1e4('0x8')]('/:id/whatsapp/interactions',auth['isAuthenticated'](),controller['getWhatsappInteractions']);router[_0xe1e4('0x8')](_0xe1e4('0x25'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x26')]);router[_0xe1e4('0x8')](_0xe1e4('0x27'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x28')]);router[_0xe1e4('0x8')](_0xe1e4('0x29'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x2a')]);router['get'](_0xe1e4('0x2b'),auth['isAuthenticated'](),controller[_0xe1e4('0x2c')]);router[_0xe1e4('0x8')](_0xe1e4('0x2d'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x2e')]);router[_0xe1e4('0x8')](_0xe1e4('0x2f'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x30')]);router[_0xe1e4('0x8')](_0xe1e4('0x31'),auth[_0xe1e4('0x9')](),controller['getOpenchannelAccounts']);router[_0xe1e4('0x8')](_0xe1e4('0x32'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x33')]);router[_0xe1e4('0x8')](_0xe1e4('0x34'),auth['isAuthenticated'](),controller[_0xe1e4('0x35')]);router[_0xe1e4('0x8')](_0xe1e4('0x36'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x37')]);router[_0xe1e4('0x8')](_0xe1e4('0x38'),auth[_0xe1e4('0x9')](),controller['getScheduledCalls']);router[_0xe1e4('0x8')](_0xe1e4('0x39'),auth['isAuthenticated'](),controller[_0xe1e4('0x3a')]);router[_0xe1e4('0x3b')](_0xe1e4('0x13'),auth[_0xe1e4('0x9')](),controller['addContacts']);router[_0xe1e4('0x3b')]('/',auth[_0xe1e4('0x9')](),controller['create']);router['post']('/create_many',auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x3c')]);router['post'](_0xe1e4('0x15'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x3d')]);var upload=multer({'storage':multer[_0xe1e4('0x3e')]({'destination':function(_0x26477c,_0x5c86ef,_0x5e4cd4){_0x5e4cd4(null,path[_0xe1e4('0x3f')](config[_0xe1e4('0x40')],_0xe1e4('0x41')));},'filename':function(_0x346e22,_0x31615e,_0x39e61f){_0x39e61f(null,util['format'](_0xe1e4('0x42'),Date[_0xe1e4('0x43')](),_0x31615e[_0xe1e4('0x44')]));}})});router[_0xe1e4('0x3b')](_0xe1e4('0xf'),upload[_0xe1e4('0x45')]('file'),controller[_0xe1e4('0x46')]);router['post']('/:id/login',auth['isAuthenticated'](),controller[_0xe1e4('0x47')]);router['post']('/:id/logout',auth['isAuthenticated'](),controller[_0xe1e4('0x48')]);router[_0xe1e4('0x3b')](_0xe1e4('0x49'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x4a')]);router[_0xe1e4('0x3b')](_0xe1e4('0x4b'),auth['isAuthenticated'](),controller[_0xe1e4('0x4c')]);router[_0xe1e4('0x3b')](_0xe1e4('0x25'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x4d')]);router[_0xe1e4('0x3b')](_0xe1e4('0x4e'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x4f')]);router['post']('/:id/mail_interactions',auth['isAuthenticated'](),controller[_0xe1e4('0x50')]);router[_0xe1e4('0x3b')](_0xe1e4('0x51'),auth[_0xe1e4('0x9')](),controller['addFaxInteractions']);router[_0xe1e4('0x3b')]('/:id/sms_interactions',auth['isAuthenticated'](),controller['addSmsInteractions']);router[_0xe1e4('0x3b')](_0xe1e4('0x52'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x53')]);router[_0xe1e4('0x3b')](_0xe1e4('0x54'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x55')]);router[_0xe1e4('0x3b')](_0xe1e4('0x2d'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x56')]);router['post'](_0xe1e4('0x2f'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x57')]);router[_0xe1e4('0x3b')](_0xe1e4('0x31'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x58')]);router[_0xe1e4('0x3b')](_0xe1e4('0x32'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x59')]);router[_0xe1e4('0x3b')](_0xe1e4('0x34'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x5a')]);router[_0xe1e4('0x3b')]('/:id/whatsapp_accounts',auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x5b')]);router[_0xe1e4('0x3b')](_0xe1e4('0x39'),auth[_0xe1e4('0x9')](),controller['createApiKey']);router[_0xe1e4('0x5c')]('/:id',auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x5d')]);router[_0xe1e4('0x5c')](_0xe1e4('0x5e'),auth[_0xe1e4('0x9')](),controller['changePassword']);router[_0xe1e4('0x5f')]('/:id/queues',auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x60')]);router[_0xe1e4('0x5f')]('/:id/teams',auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x61')]);router[_0xe1e4('0x5f')](_0xe1e4('0xe'),auth[_0xe1e4('0x9')](),controller['destroy']);router['delete'](_0xe1e4('0x4e'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x62')]);router[_0xe1e4('0x5f')]('/:id/mail_interactions',auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x63')]);router[_0xe1e4('0x5f')](_0xe1e4('0x51'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x64')]);router[_0xe1e4('0x5f')](_0xe1e4('0x65'),auth[_0xe1e4('0x9')](),controller['removeSmsInteractions']);router['delete'](_0xe1e4('0x52'),auth[_0xe1e4('0x9')](),controller['removeOpenchannelInteractions']);router[_0xe1e4('0x5f')](_0xe1e4('0x54'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x66')]);router[_0xe1e4('0x5f')]('/:id/fax_accounts',auth[_0xe1e4('0x9')](),controller['removeFaxAccounts']);router[_0xe1e4('0x5f')](_0xe1e4('0x2f'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x67')]);router[_0xe1e4('0x5f')](_0xe1e4('0x31'),auth[_0xe1e4('0x9')](),controller['removeOpenchannelAccounts']);router['delete'](_0xe1e4('0x32'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x68')]);router[_0xe1e4('0x5f')](_0xe1e4('0x34'),auth['isAuthenticated'](),controller[_0xe1e4('0x69')]);router[_0xe1e4('0x5f')](_0xe1e4('0x36'),auth[_0xe1e4('0x9')](),controller['removeWhatsappAccounts']);router[_0xe1e4('0x5f')](_0xe1e4('0x39'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x6a')]);router[_0xe1e4('0x3b')](_0xe1e4('0x6b'),auth[_0xe1e4('0x9')](),controller[_0xe1e4('0x6c')]);module[_0xe1e4('0x6d')]=router;
\ No newline at end of file
+var _0xd943=['/:id/mail_accounts','getMailAccounts','getOpenchannelAccounts','getSmsAccounts','/:id/chat_websites','getWhatsappAccounts','/:id/api_key','post','create','/create_many','bulkCreate','addQueues','root','format','originalname','file','/:id/login','login','logout','/:id/pause','pause','/:id/unpause','unpause','addTeams','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addMailInteractions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','/:id/whatsapp_interactions','addWhatsappInteractions','addMailAccounts','/:id/openchannel_accounts','/:id/sms_accounts','addSmsAccounts','addChatWebsites','/:id/whatsapp_accounts','addWhatsappAccounts','createApiKey','put','/:id','update','/:id/password','delete','removeQueues','removeTeams','destroy','removeMailInteractions','/:id/fax_interactions','removeFaxInteractions','removeSmsInteractions','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeApiKey','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','index','/describe','describe','/whoami','whoami','/presence','getPresence','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','/:id/contacts','/:id/queues','getQueues','/:id/queues_rt','/:id/groups','/:id/recordings','getRecordings','/:id/screen_recordings','/:id/chat/interactions','getChatInteractions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','/:id/teams','getTeams','/:id/lists','/:id/agents','/:id/prefixes','/:id/fax_accounts','getFaxAccounts'];(function(_0x546eff,_0x6e1ca5){var _0x88dda9=function(_0x35ad54){while(--_0x35ad54){_0x546eff['push'](_0x546eff['shift']());}};_0x88dda9(++_0x6e1ca5);}(_0xd943,0xa8));var _0x3d94=function(_0x33887e,_0x583dd2){_0x33887e=_0x33887e-0x0;var _0x584ea5=_0xd943[_0x33887e];return _0x584ea5;};'use strict';var multer=require('multer');var util=require(_0x3d94('0x0'));var path=require(_0x3d94('0x1'));var timeout=require(_0x3d94('0x2'));var express=require(_0x3d94('0x3'));var router=express['Router']();var fs_extra=require(_0x3d94('0x4'));var auth=require(_0x3d94('0x5'));var interaction=require(_0x3d94('0x6'));var config=require(_0x3d94('0x7'));var controller=require(_0x3d94('0x8'));router[_0x3d94('0x9')]('/',auth[_0x3d94('0xa')](),controller[_0x3d94('0xb')]);router[_0x3d94('0x9')](_0x3d94('0xc'),auth[_0x3d94('0xa')](),controller[_0x3d94('0xd')]);router[_0x3d94('0x9')](_0x3d94('0xe'),auth[_0x3d94('0xa')](),controller[_0x3d94('0xf')]);router[_0x3d94('0x9')](_0x3d94('0x10'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x11')]);router[_0x3d94('0x9')]('/:id',auth[_0x3d94('0xa')](),controller[_0x3d94('0x12')]);router['get'](_0x3d94('0x13'),controller[_0x3d94('0x14')]);router[_0x3d94('0x9')](_0x3d94('0x15'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x16')]);router[_0x3d94('0x9')](_0x3d94('0x17'),auth[_0x3d94('0xa')](),controller['getContacts']);router[_0x3d94('0x9')](_0x3d94('0x18'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x19')]);router['get'](_0x3d94('0x1a'),auth[_0x3d94('0xa')](),controller['getVoiceQueuesRt']);router[_0x3d94('0x9')](_0x3d94('0x1b'),auth[_0x3d94('0xa')](),controller['getGroups']);router['get'](_0x3d94('0x1c'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x1d')]);router[_0x3d94('0x9')](_0x3d94('0x1e'),auth[_0x3d94('0xa')](),controller['getScreenRecordings']);router['get'](_0x3d94('0x1f'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x20')]);router['get']('/:id/openchannel/interactions',auth[_0x3d94('0xa')](),controller[_0x3d94('0x21')]);router[_0x3d94('0x9')](_0x3d94('0x22'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x23')]);router[_0x3d94('0x9')](_0x3d94('0x24'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x25')]);router[_0x3d94('0x9')](_0x3d94('0x26'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x27')]);router[_0x3d94('0x9')](_0x3d94('0x28'),auth[_0x3d94('0xa')](),controller['getWhatsappInteractions']);router['get'](_0x3d94('0x29'),auth['isAuthenticated'](),controller[_0x3d94('0x2a')]);router[_0x3d94('0x9')](_0x3d94('0x2b'),auth[_0x3d94('0xa')](),controller['getLists']);router[_0x3d94('0x9')](_0x3d94('0x2c'),auth['isAuthenticated'](),controller['getAgents']);router[_0x3d94('0x9')](_0x3d94('0x2d'),auth[_0x3d94('0xa')](),controller['getVoicePrefixes']);router[_0x3d94('0x9')](_0x3d94('0x2e'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x2f')]);router[_0x3d94('0x9')](_0x3d94('0x30'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x31')]);router[_0x3d94('0x9')]('/:id/openchannel_accounts',auth[_0x3d94('0xa')](),controller[_0x3d94('0x32')]);router[_0x3d94('0x9')]('/:id/sms_accounts',auth[_0x3d94('0xa')](),controller[_0x3d94('0x33')]);router[_0x3d94('0x9')](_0x3d94('0x34'),auth[_0x3d94('0xa')](),controller['getChatWebsites']);router[_0x3d94('0x9')]('/:id/whatsapp_accounts',auth[_0x3d94('0xa')](),controller[_0x3d94('0x35')]);router['get']('/:id/scheduled_calls',auth['isAuthenticated'](),controller['getScheduledCalls']);router['get'](_0x3d94('0x36'),auth[_0x3d94('0xa')](),controller['getApiKey']);router['post']('/:id/contacts',auth['isAuthenticated'](),controller['addContacts']);router[_0x3d94('0x37')]('/',auth[_0x3d94('0xa')](),controller[_0x3d94('0x38')]);router[_0x3d94('0x37')](_0x3d94('0x39'),auth['isAuthenticated'](),controller[_0x3d94('0x3a')]);router[_0x3d94('0x37')](_0x3d94('0x18'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x3b')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x224b24,_0x28fc75,_0x4a2490){_0x4a2490(null,path['join'](config[_0x3d94('0x3c')],'server/files/images/'));},'filename':function(_0x1cb213,_0x582c15,_0x5af57c){_0x5af57c(null,util[_0x3d94('0x3d')]('%s-%s',Date['now'](),_0x582c15[_0x3d94('0x3e')]));}})});router['post']('/:id/avatar',upload['single'](_0x3d94('0x3f')),controller['addAvatar']);router['post'](_0x3d94('0x40'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x41')]);router['post']('/:id/logout',auth['isAuthenticated'](),controller[_0x3d94('0x42')]);router[_0x3d94('0x37')](_0x3d94('0x43'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x44')]);router['post'](_0x3d94('0x45'),auth['isAuthenticated'](),controller[_0x3d94('0x46')]);router[_0x3d94('0x37')]('/:id/teams',auth['isAuthenticated'](),controller[_0x3d94('0x47')]);router['post'](_0x3d94('0x48'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x49')]);router[_0x3d94('0x37')](_0x3d94('0x4a'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x4b')]);router[_0x3d94('0x37')]('/:id/fax_interactions',auth[_0x3d94('0xa')](),controller[_0x3d94('0x4c')]);router[_0x3d94('0x37')](_0x3d94('0x4d'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x4e')]);router[_0x3d94('0x37')](_0x3d94('0x4f'),auth['isAuthenticated'](),controller['addOpenchannelInteractions']);router[_0x3d94('0x37')](_0x3d94('0x50'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x51')]);router[_0x3d94('0x37')]('/:id/fax_accounts',auth[_0x3d94('0xa')](),controller['addFaxAccounts']);router[_0x3d94('0x37')](_0x3d94('0x30'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x52')]);router[_0x3d94('0x37')](_0x3d94('0x53'),auth['isAuthenticated'](),controller['addOpenchannelAccounts']);router[_0x3d94('0x37')](_0x3d94('0x54'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x55')]);router[_0x3d94('0x37')](_0x3d94('0x34'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x56')]);router[_0x3d94('0x37')](_0x3d94('0x57'),auth['isAuthenticated'](),controller[_0x3d94('0x58')]);router[_0x3d94('0x37')](_0x3d94('0x36'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x59')]);router[_0x3d94('0x5a')](_0x3d94('0x5b'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x5c')]);router[_0x3d94('0x5a')](_0x3d94('0x5d'),auth[_0x3d94('0xa')](),controller['changePassword']);router[_0x3d94('0x5e')]('/:id/queues',auth[_0x3d94('0xa')](),controller[_0x3d94('0x5f')]);router[_0x3d94('0x5e')](_0x3d94('0x29'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x60')]);router['delete'](_0x3d94('0x5b'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x61')]);router['delete'](_0x3d94('0x48'),auth[_0x3d94('0xa')](),controller['removeChatInteractions']);router[_0x3d94('0x5e')](_0x3d94('0x4a'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x62')]);router['delete'](_0x3d94('0x63'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x64')]);router[_0x3d94('0x5e')]('/:id/sms_interactions',auth[_0x3d94('0xa')](),controller[_0x3d94('0x65')]);router[_0x3d94('0x5e')](_0x3d94('0x4f'),auth[_0x3d94('0xa')](),controller['removeOpenchannelInteractions']);router['delete']('/:id/whatsapp_interactions',auth[_0x3d94('0xa')](),controller['removeWhatsappInteractions']);router[_0x3d94('0x5e')](_0x3d94('0x2e'),auth[_0x3d94('0xa')](),controller['removeFaxAccounts']);router[_0x3d94('0x5e')](_0x3d94('0x30'),auth['isAuthenticated'](),controller[_0x3d94('0x66')]);router['delete'](_0x3d94('0x53'),auth[_0x3d94('0xa')](),controller[_0x3d94('0x67')]);router[_0x3d94('0x5e')]('/:id/sms_accounts',auth[_0x3d94('0xa')](),controller[_0x3d94('0x68')]);router['delete'](_0x3d94('0x34'),auth['isAuthenticated'](),controller[_0x3d94('0x69')]);router[_0x3d94('0x5e')]('/:id/whatsapp_accounts',auth['isAuthenticated'](),controller['removeWhatsappAccounts']);router[_0x3d94('0x5e')]('/:id/api_key',auth[_0x3d94('0xa')](),controller[_0x3d94('0x6a')]);router[_0x3d94('0x37')]('/:id/messengerSoundNotification',auth['isAuthenticated'](),controller['messengerSoundNotification']);module[_0x3d94('0x6b')]=router;
\ No newline at end of file
index 3cbb329..5f869cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9260=['blockedAt','moment','util','exports','STRING','name','setDataValue','defaultuser','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','ENUM','user','telephone','local','INTEGER','accountcode','BOOLEAN','DEFAULT\x20PAUSE','DATE','friend','from-sip','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','update','yes','force_rport,comedia','nat','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','always','accept','originate','uac','uas','active','passive','actpass','TEXT','get','isArray','udp','avpf','icesupport','dtlsenable','dtlscertfile','dtlsprivatekey','rtcp_mux','encryption','force_avp','dtlssetup','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','permissions','VIRTUAL','string','true','false','screenrecording','blocked','loginAttempts'];(function(_0x57931b,_0x2accfd){var _0x30ce42=function(_0x46ec15){while(--_0x46ec15){_0x57931b['push'](_0x57931b['shift']());}};_0x30ce42(++_0x2accfd);}(_0x9260,0xab));var _0x0926=function(_0x5870f1,_0x4fcb91){_0x5870f1=_0x5870f1-0x0;var _0x2faef2=_0x9260[_0x5870f1];return _0x2faef2;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x0926('0x0'));var util=require(_0x0926('0x1'));var _=require('lodash');module[_0x0926('0x2')]={'name':{'type':Sequelize[_0x0926('0x3')],'allowNull':![],'unique':_0x0926('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x3d9e35){this['setDataValue'](_0x0926('0x4'),_0x3d9e35);this[_0x0926('0x5')](_0x0926('0x6'),_0x3d9e35);},'comment':_0x0926('0x7')},'fullname':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x1b3dcb){this[_0x0926('0x5')](_0x0926('0x8'),_0x1b3dcb);this[_0x0926('0x5')](_0x0926('0x9'),util[_0x0926('0xa')](_0x0926('0xb'),_0x1b3dcb,this[_0x0926('0xc')](_0x0926('0xd'))));}},'alias':{'type':Sequelize[_0x0926('0x3')]},'email':{'type':Sequelize[_0x0926('0x3')],'allowNull':![],'unique':_0x0926('0xe'),'validate':{'isEmail':!![]},'set':function(_0xad3543){if(_0xad3543){this[_0x0926('0x5')]('email',_0xad3543['toLowerCase']());}}},'role':{'type':Sequelize[_0x0926('0xf')]('admin',_0x0926('0x10'),'agent',_0x0926('0x11')),'allowNull':![]},'password':{'type':Sequelize[_0x0926('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x0926('0x3')],'defaultValue':_0x0926('0x12')},'internal':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':![],'unique':'internal','set':function(_0x1037be){this['setDataValue'](_0x0926('0xd'),_0x1037be);this['setDataValue'](_0x0926('0x14'),_0x1037be);this[_0x0926('0x5')](_0x0926('0x9'),util[_0x0926('0xa')]('\x22%s\x22\x20<%s>',this[_0x0926('0xc')](_0x0926('0x8')),_0x1037be));}},'salt':{'type':Sequelize[_0x0926('0x3')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize['STRING']},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0x0926('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x0926('0x3')]},'online':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x0926('0x3')],'defaultValue':_0x0926('0x16')},'lastPauseAt':{'type':Sequelize[_0x0926('0x17')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x0926('0x13')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x0926('0x13')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'description':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'host':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![],'defaultValue':'dynamic'},'ipaddr':{'type':Sequelize['STRING'],'allowNull':!![]},'port':{'type':Sequelize[_0x0926('0x13')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize['STRING'],'allowNull':!![]},'regserver':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x18'),_0x0926('0x10'),'peer'),'allowNull':!![],'defaultValue':_0x0926('0x18')},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x0926('0x19')},'callingpres':{'type':Sequelize['ENUM']('ALLOWED_NOT_SCREENED',_0x0926('0x1a'),_0x0926('0x1b'),'ALLOWED',_0x0926('0x1c'),_0x0926('0x1d'),_0x0926('0x1e'),_0x0926('0x1f')),'allowNull':!![]},'deny':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'permit':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'secret':{'type':Sequelize['STRING'],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'transport':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![],'defaultValue':'udp','set':function(_0x3e4168){this['setDataValue'](_0x0926('0x20'),_0x3e4168?_0x3e4168[_0x0926('0x21')](','):null);},'get':function(){return this[_0x0926('0xc')]('transport')?this[_0x0926('0xc')](_0x0926('0x20'))[_0x0926('0x22')](','):null;},'comment':_0x0926('0x23')},'dtmfmode':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x24'),_0x0926('0x25'),_0x0926('0x26'),_0x0926('0x27'),_0x0926('0x28')),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0x0926('0xf')]('yes','no','nonat',_0x0926('0x29'),'outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'nat':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![],'defaultValue':_0x0926('0x2b'),'set':function(_0x1a281b){this[_0x0926('0x5')](_0x0926('0x2c'),_0x1a281b?_0x1a281b[_0x0926('0x21')](','):null);},'get':function(){return this['getDataValue'](_0x0926('0x2c'))?this['getDataValue'](_0x0926('0x2c'))[_0x0926('0x22')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x0926('0x3')]},'pickupgroup':{'type':Sequelize[_0x0926('0x3')]},'namedpickupgroup':{'type':Sequelize[_0x0926('0x3')]},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize['STRING']},'disallow':{'type':Sequelize[_0x0926('0x3')],'allowNull':![],'defaultValue':_0x0926('0x2d')},'allow':{'type':Sequelize[_0x0926('0x3')],'allowNull':![],'defaultValue':_0x0926('0x2e'),'set':function(_0x22a73c){this[_0x0926('0x5')](_0x0926('0x2f'),_0x22a73c?_0x22a73c[_0x0926('0x21')](';'):_0x0926('0x2e'));},'get':function(){return this[_0x0926('0xc')]('allow')?this[_0x0926('0xc')](_0x0926('0x2f'))['split'](';'):null;},'comment':_0x0926('0x30')},'autoframing':{'type':Sequelize['ENUM'](_0x0926('0x2a'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![],'set':function(_0x20dd20){this[_0x0926('0x5')](_0x0926('0x31'),_0x20dd20?_0x20dd20['join'](','):null);},'get':function(){return this['getDataValue'](_0x0926('0x31'))?this[_0x0926('0xc')]('insecure')[_0x0926('0x22')](','):null;},'comment':_0x0926('0x32')},'trustrpid':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM'](_0x0926('0x2a'),'no',_0x0926('0x33')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x0926('0xf')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![],'defaultValue':_0x0926('0x34')},'amaflags':{'type':Sequelize['STRING'],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![],'defaultValue':_0x0926('0x2a')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x0926('0xf')]('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no',_0x0926('0x35')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x36'),'refuse',_0x0926('0x37')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x38'),_0x0926('0x39')),'allowNull':!![],'defaultValue':_0x0926('0x39')},'t38pt_usertpsource':{'type':Sequelize['STRING'],'allowNull':!![]},'regexten':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize['STRING'],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM'](_0x0926('0x2a'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize['ENUM']('yes','no','fingerprint','certificate'),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x3a'),_0x0926('0x3b'),_0x0926('0x3c')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x0926('0x13')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM'](_0x0926('0x2a'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x0926('0xf')](_0x0926('0x2a'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize['STRING'],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0x0926('0x2a'),'no','nonat',_0x0926('0x29'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x0926('0x3')]},'resetPasswordExpires':{'type':Sequelize[_0x0926('0x17')]},'passwordResetAt':{'type':Sequelize['DATE'],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x0926('0x3d')]},'showWebBar':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0,'set':function(_0x18769a){this['setDataValue']('showWebBar',_0x18769a);var _0x2ca456=this[_0x0926('0x3e')]({'plain':!![]});switch(_0x18769a){case 0x0:case 0x1:var _0x50a25d=_0x2ca456['transport']?_[_0x0926('0x3f')](_0x2ca456['transport'])?_0x2ca456[_0x0926('0x20')][_0x0926('0x21')]():_0x2ca456[_0x0926('0x20')]:_0x0926('0x40');if(_0x50a25d==='wss'){_0x50a25d='udp';}this[_0x0926('0x5')]('transport',_0x50a25d);this[_0x0926('0x5')]('encryption','no');this['setDataValue'](_0x0926('0x41'),null);this[_0x0926('0x5')]('force_avp',null);this['setDataValue'](_0x0926('0x42'),null);this[_0x0926('0x5')](_0x0926('0x43'),null);this[_0x0926('0x5')]('dtlsverify',null);this[_0x0926('0x5')]('dtlssetup',null);this[_0x0926('0x5')](_0x0926('0x44'),null);this['setDataValue'](_0x0926('0x45'),null);this[_0x0926('0x5')](_0x0926('0x46'),'no');break;case 0x2:this[_0x0926('0x5')](_0x0926('0x20'),'wss');this[_0x0926('0x5')](_0x0926('0x47'),_0x0926('0x2a'));this[_0x0926('0x5')]('avpf',_0x0926('0x2a'));this[_0x0926('0x5')](_0x0926('0x48'),'yes');this[_0x0926('0x5')](_0x0926('0x42'),_0x0926('0x2a'));this[_0x0926('0x5')]('dtlsenable',_0x0926('0x2a'));this[_0x0926('0x5')]('dtlsverify','no');this[_0x0926('0x5')](_0x0926('0x49'),_0x0926('0x3c'));this[_0x0926('0x5')](_0x0926('0x44'),_0x2ca456[_0x0926('0x44')]||_0x0926('0x4a'));this['setDataValue'](_0x0926('0x45'),_0x2ca456[_0x0926('0x45')]||_0x0926('0x4b'));this[_0x0926('0x5')](_0x0926('0x46'),'yes');break;default:}}},'permissions':{'type':Sequelize[_0x0926('0x3d')],'set':function(_0x49e543){this[_0x0926('0x5')](_0x0926('0x4c'),_0x49e543?_0x49e543[_0x0926('0x21')](','):[]);},'get':function(){return this[_0x0926('0xc')](_0x0926('0x4c'))?_['map'](this['getDataValue'](_0x0926('0x4c'))['split'](','),function(_0x5ea0b0){return parseInt(_0x5ea0b0,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x0926('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x0926('0x3')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x0926('0x15')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x0926('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0x0926('0x2a'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x0926('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x0926('0x3')]},'phoneBarEnableJaws':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x0926('0x4d')],'get':function(){return this[_0x0926('0xc')]('phoneBarEnableScreenRecordingByAgent')?this['getDataValue']('phoneBarEnableScreenRecordingByAgent'):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'interface':{'type':Sequelize[_0x0926('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize['STRING'],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x0926('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x31dc2a){if(typeof _0x31dc2a===_0x0926('0x4e')){var _0x342aab=_0x31dc2a==='1'?!![]:_0x31dc2a==='0'?![]:_0x31dc2a===_0x0926('0x4f')?!![]:_0x31dc2a===_0x0926('0x50')?![]:![];this[_0x0926('0x5')](_0x0926('0x51'),_0x342aab);}else{this['setDataValue'](_0x0926('0x51'),_0x31dc2a);}}},'blocked':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![],'set':function(_0x23b2b3){this[_0x0926('0x5')](_0x0926('0x52'),_0x23b2b3);if(_0x23b2b3===!![]){this['setDataValue']('blockedAt',moment());this[_0x0926('0x5')](_0x0926('0x53'),0x0);}else{this['setDataValue'](_0x0926('0x54'),null);}}},'blockedAt':{'type':Sequelize[_0x0926('0x17')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x0926('0x13')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x0926('0x15')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x0926('0x15')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x0926('0x13')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'messengerSoundNotification':{'type':Sequelize[_0x0926('0x15')],'defaultValue':![]}};
\ No newline at end of file
+var _0x88b3=['get','isArray','wss','encryption','avpf','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','dtlsprivatekey','rtcp_mux','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','permissions','VIRTUAL','phoneBarEnableScreenRecordingByAgent','false','screenrecording','blocked','loginAttempts','blockedAt','UNSIGNED','moment','lodash','exports','STRING','name','setDataValue','fullname','callerid','\x22%s\x22\x20<%s>','getDataValue','internal','email','toLowerCase','admin','telephone','local','INTEGER','accountcode','format','BOOLEAN','DATE','DEFAULT\x20PAUSE','ENUM','user','peer','friend','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','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','nat','join','all','ulaw;alaw;gsm','allow','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','fingerprint','certificate','active','passive','actpass','update,nonat','TEXT'];(function(_0x5da8e8,_0x1ec912){var _0x41aee1=function(_0x16f234){while(--_0x16f234){_0x5da8e8['push'](_0x5da8e8['shift']());}};_0x41aee1(++_0x1ec912);}(_0x88b3,0xcd));var _0x388b=function(_0xab0227,_0x27b26f){_0xab0227=_0xab0227-0x0;var _0x19f8a3=_0x88b3[_0xab0227];return _0x19f8a3;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x388b('0x0'));var util=require('util');var _=require(_0x388b('0x1'));module[_0x388b('0x2')]={'name':{'type':Sequelize[_0x388b('0x3')],'allowNull':![],'unique':_0x388b('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x138fca){this[_0x388b('0x5')](_0x388b('0x4'),_0x138fca);this[_0x388b('0x5')]('defaultuser',_0x138fca);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0x388b('0x3')],'allowNull':![],'set':function(_0x5f3cb3){this[_0x388b('0x5')](_0x388b('0x6'),_0x5f3cb3);this[_0x388b('0x5')](_0x388b('0x7'),util['format'](_0x388b('0x8'),_0x5f3cb3,this[_0x388b('0x9')](_0x388b('0xa'))));}},'alias':{'type':Sequelize[_0x388b('0x3')]},'email':{'type':Sequelize[_0x388b('0x3')],'allowNull':![],'unique':_0x388b('0xb'),'validate':{'isEmail':!![]},'set':function(_0x23e247){if(_0x23e247){this[_0x388b('0x5')](_0x388b('0xb'),_0x23e247[_0x388b('0xc')]());}}},'role':{'type':Sequelize['ENUM'](_0x388b('0xd'),'user','agent',_0x388b('0xe')),'allowNull':![]},'password':{'type':Sequelize[_0x388b('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0x388b('0xf')},'internal':{'type':Sequelize[_0x388b('0x10')](0xb),'allowNull':![],'unique':_0x388b('0xa'),'set':function(_0x39854b){this[_0x388b('0x5')]('internal',_0x39854b);this['setDataValue'](_0x388b('0x11'),_0x39854b);this[_0x388b('0x5')](_0x388b('0x7'),util[_0x388b('0x12')](_0x388b('0x8'),this[_0x388b('0x9')](_0x388b('0x6')),_0x39854b));}},'salt':{'type':Sequelize[_0x388b('0x3')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0x388b('0x3')]},'address':{'type':Sequelize[_0x388b('0x3')]},'zipcode':{'type':Sequelize[_0x388b('0x3')]},'userpic':{'type':Sequelize[_0x388b('0x3')]},'city':{'type':Sequelize[_0x388b('0x3')]},'country':{'type':Sequelize['STRING']},'online':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x388b('0x14')]},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x388b('0x3')],'defaultValue':_0x388b('0x15')},'lastPauseAt':{'type':Sequelize[_0x388b('0x14')]},'chatCapacity':{'type':Sequelize[_0x388b('0x10')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x388b('0x10')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x388b('0x10')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x388b('0x10')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x388b('0x10')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x388b('0x13')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x388b('0x10')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x388b('0x10')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![],'defaultValue':'dynamic'},'ipaddr':{'type':Sequelize['STRING'],'allowNull':!![]},'port':{'type':Sequelize[_0x388b('0x10')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x388b('0x10')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'useragent':{'type':Sequelize['STRING'],'allowNull':!![]},'lastms':{'type':Sequelize[_0x388b('0x10')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x388b('0x16')]('friend',_0x388b('0x17'),_0x388b('0x18')),'allowNull':!![],'defaultValue':_0x388b('0x19')},'context':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![],'defaultValue':_0x388b('0x1a')},'callingpres':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x1b'),_0x388b('0x1c'),'ALLOWED_FAILED_SCREEN','ALLOWED',_0x388b('0x1d'),_0x388b('0x1e'),_0x388b('0x1f'),_0x388b('0x20')),'allowNull':!![]},'deny':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'permit':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'secret':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize['STRING'],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'transport':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![],'defaultValue':_0x388b('0x21'),'set':function(_0x490f6c){this['setDataValue']('transport',_0x490f6c?_0x490f6c['join'](','):null);},'get':function(){return this[_0x388b('0x9')]('transport')?this['getDataValue'](_0x388b('0x22'))[_0x388b('0x23')](','):null;},'comment':_0x388b('0x24')},'dtmfmode':{'type':Sequelize['ENUM'](_0x388b('0x25'),'info',_0x388b('0x26'),_0x388b('0x27'),_0x388b('0x28')),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize['ENUM'](_0x388b('0x29'),'no',_0x388b('0x2a'),_0x388b('0x2b'),_0x388b('0x2c')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'nat':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![],'defaultValue':_0x388b('0x2d'),'set':function(_0x353903){this['setDataValue'](_0x388b('0x2e'),_0x353903?_0x353903[_0x388b('0x2f')](','):null);},'get':function(){return this[_0x388b('0x9')](_0x388b('0x2e'))?this[_0x388b('0x9')]('nat')[_0x388b('0x23')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x388b('0x3')]},'pickupgroup':{'type':Sequelize[_0x388b('0x3')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x388b('0x3')]},'disallow':{'type':Sequelize[_0x388b('0x3')],'allowNull':![],'defaultValue':_0x388b('0x30')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x388b('0x31'),'set':function(_0x4e0d2d){this[_0x388b('0x5')](_0x388b('0x32'),_0x4e0d2d?_0x4e0d2d['join'](';'):_0x388b('0x31'));},'get':function(){return this[_0x388b('0x9')](_0x388b('0x32'))?this['getDataValue']('allow')[_0x388b('0x23')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize[_0x388b('0x16')]('yes','no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![],'set':function(_0x309070){this[_0x388b('0x5')](_0x388b('0x33'),_0x309070?_0x309070[_0x388b('0x2f')](','):null);},'get':function(){return this[_0x388b('0x9')](_0x388b('0x33'))?this[_0x388b('0x9')](_0x388b('0x33'))[_0x388b('0x23')](','):null;},'comment':_0x388b('0x34')},'trustrpid':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0x388b('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x29'),'no',_0x388b('0x35')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x388b('0x16')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x29'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x388b('0x10')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x388b('0x36')},'amaflags':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'callcounter':{'type':Sequelize['ENUM'](_0x388b('0x29'),'no'),'allowNull':!![],'defaultValue':_0x388b('0x29')},'busylevel':{'type':Sequelize[_0x388b('0x10')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x29'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x29'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x29'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x29'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'template':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM'](_0x388b('0x29'),'no',_0x388b('0x37')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x388b('0x10')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x29'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize['ENUM'](_0x388b('0x38'),_0x388b('0x39'),_0x388b('0x3a')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x388b('0x10')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x3b'),_0x388b('0x3c')),'allowNull':!![],'defaultValue':_0x388b('0x3c')},'t38pt_usertpsource':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize['STRING'],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x29'),'no'),'allowNull':!![],'defaultValue':_0x388b('0x29')},'keepalive':{'type':Sequelize[_0x388b('0x10')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize['STRING'],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x388b('0x10')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x388b('0x10')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x388b('0x10')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x388b('0x10')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x388b('0x10')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize['STRING'],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize['STRING'],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x388b('0x10')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x29'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x388b('0x16')]('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x29'),'no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x388b('0x16')]('yes','no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x29'),'no',_0x388b('0x3d'),_0x388b('0x3e')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x388b('0x10')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x3f'),_0x388b('0x40'),_0x388b('0x41')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x388b('0x16')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x29'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x29'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x388b('0x16')]('yes','no',_0x388b('0x2a'),_0x388b('0x2b'),_0x388b('0x42')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x388b('0x3')]},'resetPasswordExpires':{'type':Sequelize[_0x388b('0x14')]},'passwordResetAt':{'type':Sequelize[_0x388b('0x14')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x388b('0x43')]},'showWebBar':{'type':Sequelize[_0x388b('0x10')],'defaultValue':0x0,'set':function(_0x52747f){this['setDataValue']('showWebBar',_0x52747f);var _0x332d23=this[_0x388b('0x44')]({'plain':!![]});switch(_0x52747f){case 0x0:case 0x1:var _0x4f8aa9=_0x332d23['transport']?_[_0x388b('0x45')](_0x332d23[_0x388b('0x22')])?_0x332d23[_0x388b('0x22')][_0x388b('0x2f')]():_0x332d23[_0x388b('0x22')]:_0x388b('0x21');if(_0x4f8aa9===_0x388b('0x46')){_0x4f8aa9=_0x388b('0x21');}this[_0x388b('0x5')](_0x388b('0x22'),_0x4f8aa9);this[_0x388b('0x5')](_0x388b('0x47'),'no');this['setDataValue'](_0x388b('0x48'),null);this[_0x388b('0x5')]('force_avp',null);this[_0x388b('0x5')](_0x388b('0x49'),null);this['setDataValue'](_0x388b('0x4a'),null);this['setDataValue'](_0x388b('0x4b'),null);this[_0x388b('0x5')](_0x388b('0x4c'),null);this['setDataValue'](_0x388b('0x4d'),null);this['setDataValue'](_0x388b('0x4e'),null);this[_0x388b('0x5')](_0x388b('0x4f'),'no');break;case 0x2:this[_0x388b('0x5')](_0x388b('0x22'),'wss');this[_0x388b('0x5')]('encryption',_0x388b('0x29'));this['setDataValue']('avpf',_0x388b('0x29'));this[_0x388b('0x5')]('force_avp',_0x388b('0x29'));this[_0x388b('0x5')](_0x388b('0x49'),_0x388b('0x29'));this[_0x388b('0x5')](_0x388b('0x4a'),'yes');this[_0x388b('0x5')](_0x388b('0x4b'),'no');this[_0x388b('0x5')](_0x388b('0x4c'),_0x388b('0x41'));this[_0x388b('0x5')](_0x388b('0x4d'),_0x332d23[_0x388b('0x4d')]||_0x388b('0x50'));this[_0x388b('0x5')](_0x388b('0x4e'),_0x332d23['dtlsprivatekey']||_0x388b('0x51'));this[_0x388b('0x5')]('rtcp_mux',_0x388b('0x29'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x35b3d8){this[_0x388b('0x5')](_0x388b('0x52'),_0x35b3d8?_0x35b3d8['join'](','):[]);},'get':function(){return this[_0x388b('0x9')](_0x388b('0x52'))?_['map'](this['getDataValue'](_0x388b('0x52'))[_0x388b('0x23')](','),function(_0x512b47){return parseInt(_0x512b47,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x388b('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x388b('0x3')]},'phoneBarBusyNumber':{'type':Sequelize['STRING']},'phoneBarUnconditional':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x388b('0x13')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x388b('0x10')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x388b('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x388b('0x16')](_0x388b('0x29'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x388b('0x13')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x388b('0x3')]},'phoneBarEnableJaws':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x388b('0x53')],'get':function(){return this[_0x388b('0x9')](_0x388b('0x54'))?this['getDataValue'](_0x388b('0x54')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x388b('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![],'set':function(_0x1ac72c){if(typeof _0x1ac72c==='string'){var _0x26fc05=_0x1ac72c==='1'?!![]:_0x1ac72c==='0'?![]:_0x1ac72c==='true'?!![]:_0x1ac72c===_0x388b('0x55')?![]:![];this[_0x388b('0x5')](_0x388b('0x56'),_0x26fc05);}else{this[_0x388b('0x5')](_0x388b('0x56'),_0x1ac72c);}}},'blocked':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![],'set':function(_0x3433a9){this[_0x388b('0x5')](_0x388b('0x57'),_0x3433a9);if(_0x3433a9===!![]){this[_0x388b('0x5')]('blockedAt',moment());this[_0x388b('0x5')](_0x388b('0x58'),0x0);}else{this['setDataValue'](_0x388b('0x59'),null);}}},'blockedAt':{'type':Sequelize[_0x388b('0x14')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x388b('0x10')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x388b('0x13')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x388b('0x10')](0x5)[_0x388b('0x5a')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x388b('0x13')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x388b('0x13')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x388b('0x13')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x388b('0x10')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize[_0x388b('0x10')],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x388b('0x10')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize[_0x388b('0x10')],'defaultValue':0x0},'messengerSoundNotification':{'type':Sequelize[_0x388b('0x13')],'defaultValue':![]}};
\ No newline at end of file
index b5db0d4..b01b630 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x475d=['Telephones','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','checkUserLimits','UserProfileSection','isEmpty','compact','oldPassword','ValidationError','Sequelize','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','validatePasswordHistory','channel','online','loginInPause','voicePause','interface','isValidChannel','Unknown\x20channel','capitalize','toLowerCase','Queues','penalty','spread','QueueId','Queue:save','voice','VoiceQueue','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','Queue:remove','addAvatar','file','join','root','userpic','download','existsSync','server/files/images/','getOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SMS','WhatsappOpenTabs','WHATSAPP','concat','format','CmList','List','Tag','Tags','color','tag','model','keys','rawAttributes','filters','intersection','fields','order','sort','where','pick','Queue','nolimit','limit','getVoiceQueuesRt','hasOwnProperty','getGroups','VoiceRecording','UserId','getScreenRecordings','getChatInteractions','ChatInteraction','getOpenchannelInteractions','MailInteraction','SmsInteraction','getSmsInteractions','getFaxInteractions','getWhatsappInteractions','WhatsappInteraction','login','mobile','LOCAL/%s@from-sip/n','intrf','user:%s','user:forcelogout','x-forwarded-for','connection','remoteAddress','socket','getVoiceQueues','UserVoiceQueue.penalty','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','PAUSE','LOGININPAUSE','MemberReport','isMiddleware','resolve','logout','pause','updateAttributes','type','DEFAULT\x20PAUSE','unpause','Channel\x20parameter\x20%s\x20is\x20invalid','mailPause','chatPause','faxPause','smsPause','pauseType','User\x20with\x20id\x20%s\x20not\x20found','getTeams','Team','addTeams','Body\x20parameter\x20\x27ids\x27\x20is\x20required','transaction','getAssociatedQueues','flattenDeep','addAgent','getDataValue','Voice','TeamVoicePrefix','removeTeams','removeAgent','UserVoicePrefix','VoicePrefixId','getLists','getAgents','values','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','isArray','user_has_chat_interactions:remove','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','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','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','SmsAccount','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','WhatsappAccount','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getScheduledCalls','CmHopper','$and','$or','$gte','$lt','$lte','$ne','$not','$between','$notBetween','$in','$notIn','$notLike','$notILike','$like','$overlap','$contains','$contained','firstName','lastName','phone','CmContact','Contact','dialActive','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','getUserSetting','getPresence','idle','unknown','ringing','inbound','flatten','toString','lower','col','asc','substring','uniqBy','orderBy','getRealtimeAgents','offline','voiceStatus','unavailable','busy','charAt','toUpperCase','slice','QueryTypes','field','ui.','InteractionId','ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','messengerSoundNotification','enabled','moment','path','lodash','ioredis','../../components/auth/service','../../components/contacts','../../components/parsers/qs','../../components/realtime/agents','../../config/logger','api','../../config/environment','APIBadRequestError','APINotFoundError','../../errors/api','handleError','../../mysqldb','socket.io-emitter','redis','./user.socket','status','json','offset','undefined','count','set','Content-Range','update','then','role','agent','emit','userNotification:recalc:','destroy','get','admin','Users','user','Agents','telephone','ignore','value','includes','find','UserProfileResource','end','sendStatus','error','stack','name','send','User','map','fieldName','key','filter','password','salt','previousPasswords','resetPasswordExpires','md5secret','getOptions','includeAll','include','query','userSetting','true','UserSetting','attributes','push','findAll','rows','length','chat','dataValues','sms','openchannel','whatsapp','all','catch','merge','options','fax','mail','body','params','describe','addContacts','ids','omit','internal','Setting','findById','securePassword','validatePasswordPattern','min_internal','isNil','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','from','voicemail','mailbox','VoiceMail','fullname','email','permissions','101','102','103','113','110','105','106','108','109','100','111','114','115','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','settingsEnabled','userProfileId','create'];(function(_0xa6a5d8,_0x314233){var _0x4a6448=function(_0x4e0d15){while(--_0x4e0d15){_0xa6a5d8['push'](_0xa6a5d8['shift']());}};_0x4a6448(++_0x314233);}(_0x475d,0x108));var _0xd475=function(_0x5ed65f,_0x23d121){_0x5ed65f=_0x5ed65f-0x0;var _0x1f43ae=_0x475d[_0x5ed65f];return _0x1f43ae;};'use strict';var moment=require(_0xd475('0x0'));var util=require('util');var path=require(_0xd475('0x1'));var fs=require('fs');var _=require(_0xd475('0x2'));var squel=require('squel');var Redis=require(_0xd475('0x3'));var authService=require(_0xd475('0x4'));var contacts=require(_0xd475('0x5'));var qs=require(_0xd475('0x6'));var rta=require(_0xd475('0x7'));var logger=require(_0xd475('0x8'))(_0xd475('0x9'));var utils=require('../../config/utils');var config=require(_0xd475('0xa'));var licenseUtil=require('../../config/license/util');var APIBadRequestError=require('../../errors/api')[_0xd475('0xb')];var APINotFoundError=require('../../errors/api')[_0xd475('0xc')];var APIHandleError=require(_0xd475('0xd'))[_0xd475('0xe')];var db=require(_0xd475('0xf'))['db'];var socket=require(_0xd475('0x10'))(new Redis(config[_0xd475('0x11')]));require(_0xd475('0x12'))['register'](socket);config['redis']=_['defaults'](config[_0xd475('0x11')],{'host':'localhost','port':0x18eb});var values;function respondWithStatusCode(_0x3f7bcc,_0x1b695e){_0x1b695e=_0x1b695e||0xcc;return function(_0x1019e5){if(_0x1019e5){return _0x3f7bcc['sendStatus'](_0x1b695e);}return _0x3f7bcc['status'](_0x1b695e)['end']();};}function respondWithResult(_0x31e702,_0x4b86d5){_0x4b86d5=_0x4b86d5||0xc8;return function(_0x5c3933){if(_0x5c3933){return _0x31e702[_0xd475('0x13')](_0x4b86d5)[_0xd475('0x14')](_0x5c3933);}};}function respondWithFilteredResult(_0x11b9cf,_0xfb4614){return function(_0xd294c6){if(_0xd294c6){var _0x53dd36=typeof _0xfb4614[_0xd475('0x15')]===_0xd475('0x16')&&typeof _0xfb4614['limit']===_0xd475('0x16');var _0xfe974=_0xd294c6['count'];var _0x1d4a07=_0x53dd36?0x0:_0xfb4614[_0xd475('0x15')];var _0x3c1b43=_0x53dd36?_0xd294c6[_0xd475('0x17')]:_0xfb4614[_0xd475('0x15')]+_0xfb4614['limit'];var _0x4f456e;if(_0x3c1b43>=_0xfe974){_0x3c1b43=_0xfe974;_0x4f456e=0xc8;}else{_0x4f456e=0xce;}_0x11b9cf['status'](_0x4f456e);return _0x11b9cf[_0xd475('0x18')](_0xd475('0x19'),_0x1d4a07+'-'+_0x3c1b43+'/'+_0xfe974)[_0xd475('0x14')](_0xd294c6);}return null;};}function saveUpdates(_0x118f74){return function(_0x2eb318){if(_0x2eb318){return _0x2eb318[_0xd475('0x1a')](_0x118f74)[_0xd475('0x1b')](function(_0x4a90d4){if(_0x4a90d4[_0xd475('0x1c')]===_0xd475('0x1d')){socket[_0xd475('0x1e')](_0xd475('0x1f')+_0x4a90d4['id'],_0x4a90d4);}return _0x4a90d4;});}return null;};}function removeEntity(_0x5b36ef){return function(_0x42d677){if(_0x42d677){return _0x42d677[_0xd475('0x20')]()[_0xd475('0x1b')](function(){var _0x10c1b7=_0x42d677[_0xd475('0x21')]({'plain':!![]});if(_0x10c1b7[_0xd475('0x1c')]===_0xd475('0x22'))return;var _0x3eaa2a=[{'name':_0xd475('0x23'),'value':_0xd475('0x24'),'ignore':!![]},{'name':_0xd475('0x25'),'value':'agent','ignore':![]},{'name':'Telephones','value':_0xd475('0x26'),'ignore':![]}];var _0x2808db=_(_0x3eaa2a)['filter'](_0xd475('0x27'))['map'](_0xd475('0x28'))[_0xd475('0x28')]();if(_[_0xd475('0x29')](_0x2808db,_0x10c1b7[_0xd475('0x1c')])){return;}var _0x498fc8=_[_0xd475('0x2a')](_0x3eaa2a,[_0xd475('0x28'),_0x10c1b7['role']])['name'];return db[_0xd475('0x2b')]['destroy']({'where':{'type':_0x498fc8,'resourceId':_0x10c1b7['id']}})[_0xd475('0x1b')](function(){return _0x42d677;});})['then'](function(){_0x5b36ef[_0xd475('0x13')](0xcc)[_0xd475('0x2c')]();});}};}function handleEntityNotFound(_0x2e89e1){return function(_0x400e22){if(!_0x400e22){_0x2e89e1[_0xd475('0x2d')](0x194);}return _0x400e22;};}function handleError(_0xf9d34d,_0x326db0){_0x326db0=_0x326db0||0x1f4;return function(_0x45f3dd){logger[_0xd475('0x2e')](_0x45f3dd[_0xd475('0x2f')]);if(_0x45f3dd[_0xd475('0x30')]){delete _0x45f3dd[_0xd475('0x30')];}_0xf9d34d[_0xd475('0x13')](_0x326db0)[_0xd475('0x31')](_0x45f3dd);};}function getUserAttributes(){return _(db[_0xd475('0x32')]['rawAttributes'])[_0xd475('0x33')](function(_0x316587){return{'name':_0x316587[_0xd475('0x34')],'type':_0x316587['type'][_0xd475('0x35')]};})[_0xd475('0x36')](function(_0x3665c9){return![_0xd475('0x37'),_0xd475('0x38'),_0xd475('0x39'),'resetPasswordToken',_0xd475('0x3a'),_0xd475('0x3b')][_0xd475('0x29')](_0x3665c9[_0xd475('0x30')]);})['value']();}exports['index']=function(_0x4724e5,_0x224d4){var _0x218884={},_0x4effac={'count':0x0,'rows':[]};var _0x1374b6=getUserAttributes();_0x218884=qs[_0xd475('0x3c')](_0x1374b6,_0x4724e5);var _0x57c862={'where':_0x218884['where']};return db['User'][_0xd475('0x17')](_0x57c862)[_0xd475('0x1b')](function(_0x5a1bb5){_0x4effac['count']=_0x5a1bb5;if(_0x4724e5['query'][_0xd475('0x3d')]){_0x218884[_0xd475('0x3e')]=[{'all':!![]}];}if(_0x4724e5[_0xd475('0x3f')][_0xd475('0x40')]===_0xd475('0x41')){_0x218884['include']=[{'model':db[_0xd475('0x42')],'as':_0xd475('0x40')}];}if(!_[_0xd475('0x29')](_0x218884[_0xd475('0x43')],'id')){_0x218884[_0xd475('0x43')][_0xd475('0x44')]('id');}return db[_0xd475('0x32')][_0xd475('0x45')](_0x218884);})[_0xd475('0x1b')](function(_0x5aecbe){_0x4effac[_0xd475('0x46')]=_0x5aecbe;if(_0x4724e5[_0xd475('0x3f')]['openTabs']===_0xd475('0x41')){var _0x59c903=[];for(var _0x3b13d3=0x0;_0x3b13d3<_0x4effac[_0xd475('0x46')][_0xd475('0x47')];_0x3b13d3++){_0x59c903[_0xd475('0x44')](get_open_tabs(_0xd475('0x48'),_0x4effac[_0xd475('0x46')][_0x3b13d3][_0xd475('0x49')]));_0x59c903['push'](get_open_tabs(_0xd475('0x4a'),_0x4effac[_0xd475('0x46')][_0x3b13d3]['dataValues']));_0x59c903[_0xd475('0x44')](get_open_tabs('fax',_0x4effac[_0xd475('0x46')][_0x3b13d3][_0xd475('0x49')]));_0x59c903[_0xd475('0x44')](get_open_tabs('mail',_0x4effac[_0xd475('0x46')][_0x3b13d3][_0xd475('0x49')]));_0x59c903['push'](get_open_tabs(_0xd475('0x4b'),_0x4effac['rows'][_0x3b13d3]['dataValues']));_0x59c903[_0xd475('0x44')](get_open_tabs(_0xd475('0x4c'),_0x4effac[_0xd475('0x46')][_0x3b13d3][_0xd475('0x49')]));}return Promise[_0xd475('0x4d')](_0x59c903)['then'](function(){return _0x4effac;});}else{return _0x4effac;}})[_0xd475('0x1b')](respondWithFilteredResult(_0x224d4,_0x218884))[_0xd475('0x4e')](handleError(_0x224d4,null));};exports['show']=function(_0xebe1f7,_0x189ee4){var _0x5f0817=getUserAttributes();_0xebe1f7[_0xd475('0x3f')]['id']=_0xebe1f7['params']['id'];var _0x2a4851=qs[_0xd475('0x3c')](_0x5f0817,_0xebe1f7);if(_0xebe1f7[_0xd475('0x3f')]['includeAll']){_0x2a4851[_0xd475('0x3e')]=[{'all':!![]}];}if(_0xebe1f7[_0xd475('0x3f')][_0xd475('0x40')]===_0xd475('0x41')){_0x2a4851[_0xd475('0x3e')]=[{'model':db[_0xd475('0x42')],'as':_0xd475('0x40')}];}_0x2a4851=_[_0xd475('0x4f')]({},_0x2a4851,_0xebe1f7[_0xd475('0x50')]);if(!_[_0xd475('0x29')](_0x2a4851['attributes'],'id')){_0x2a4851['attributes'][_0xd475('0x44')]('id');}return db[_0xd475('0x32')][_0xd475('0x2a')](_0x2a4851)[_0xd475('0x1b')](handleEntityNotFound(_0x189ee4,null))[_0xd475('0x1b')](function(_0x241b80){var _0x20aa93=[];values=_0x241b80;if(_0xebe1f7[_0xd475('0x3f')]['openTabs']===_0xd475('0x41')){_0x20aa93[_0xd475('0x44')](get_open_tabs(_0xd475('0x48'),_0x241b80['dataValues']));_0x20aa93[_0xd475('0x44')](get_open_tabs(_0xd475('0x4a'),_0x241b80[_0xd475('0x49')]));_0x20aa93[_0xd475('0x44')](get_open_tabs('openchannel',_0x241b80['dataValues']));_0x20aa93[_0xd475('0x44')](get_open_tabs(_0xd475('0x4c'),_0x241b80['dataValues']));_0x20aa93[_0xd475('0x44')](get_open_tabs(_0xd475('0x51'),_0x241b80[_0xd475('0x49')]));_0x20aa93['push'](get_open_tabs(_0xd475('0x52'),_0x241b80[_0xd475('0x49')]));return Promise['all'](_0x20aa93);}else{return values;}})[_0xd475('0x1b')](function(){return values;})[_0xd475('0x1b')](respondWithResult(_0x189ee4,null))['catch'](handleError(_0x189ee4,null));};exports[_0xd475('0x1a')]=function(_0x1e7aff,_0x22079e){if(_0x1e7aff[_0xd475('0x53')]['id']){delete _0x1e7aff[_0xd475('0x53')]['id'];}delete _0x1e7aff['body'][_0xd475('0x1c')];return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x1e7aff[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x22079e,null))[_0xd475('0x1b')](saveUpdates(_0x1e7aff[_0xd475('0x53')],null))[_0xd475('0x1b')](respondWithResult(_0x22079e,null))['catch'](handleError(_0x22079e,null));};exports[_0xd475('0x55')]=function(_0x4d5bb5,_0x1b1b8){return db[_0xd475('0x32')]['describe']()[_0xd475('0x1b')](respondWithResult(_0x1b1b8,null))[_0xd475('0x4e')](handleError(_0x1b1b8,null));};exports[_0xd475('0x56')]=function(_0x48f418,_0x10ea78){return db[_0xd475('0x32')]['find']({'where':{'id':_0x48f418[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x10ea78,null))[_0xd475('0x1b')](function(_0x2d4440){if(_0x2d4440){return _0x2d4440[_0xd475('0x56')](_0x48f418[_0xd475('0x53')][_0xd475('0x57')],_[_0xd475('0x58')](_0x48f418[_0xd475('0x53')],[_0xd475('0x57'),'id'])||{});}})[_0xd475('0x1b')](respondWithResult(_0x10ea78,null))[_0xd475('0x4e')](handleError(_0x10ea78,null));};function validateUser(_0x5130c4){return new Promise(function(_0x3f6262,_0x3660c4){if(_0x5130c4[_0xd475('0x59')])return _0x3f6262(_0x5130c4);return db[_0xd475('0x5a')][_0xd475('0x5b')](0x1)[_0xd475('0x1b')](function(_0x351851){if(_0x351851[_0xd475('0x5c')])authService[_0xd475('0x5d')](_0x5130c4[_0xd475('0x37')]);db[_0xd475('0x32')]['max'](_0xd475('0x59'))[_0xd475('0x1b')](function(_0x5080b2){if(_['isNil'](_0x5080b2)){_0x5130c4['internal']=_0x351851[_0xd475('0x5e')]||0x1;return;}if(_[_0xd475('0x5f')](_0x351851[_0xd475('0x5e')])||_0x351851[_0xd475('0x5e')]===_0x5080b2){_0x5130c4[_0xd475('0x59')]=_0x5080b2+0x1;return;}if(_0x351851[_0xd475('0x5e')]>_0x5080b2){_0x5130c4[_0xd475('0x59')]=_0x351851[_0xd475('0x5e')];return;}return db[_0xd475('0x60')]['query'](_0xd475('0x61'),{'type':db[_0xd475('0x60')]['QueryTypes'][_0xd475('0x62')]})[_0xd475('0x1b')](function(_0x391b95){if(_0x391b95&&_0x391b95[_0xd475('0x47')]){for(var _0x2766a0=0x0,_0x3ba43c=_0x391b95[_0xd475('0x47')];_0x2766a0<_0x3ba43c&&_[_0xd475('0x5f')](_0x5130c4['internal']);_0x2766a0++){if(_0x351851['min_internal']<=_0x391b95[_0x2766a0]['from']){_0x5130c4[_0xd475('0x59')]=_0x391b95[_0x2766a0][_0xd475('0x63')];}else if(_0x351851[_0xd475('0x5e')]>_0x391b95[_0x2766a0][_0xd475('0x63')]&&_0x351851[_0xd475('0x5e')]<=_0x391b95[_0x2766a0]['to']){_0x5130c4['internal']=_0x351851[_0xd475('0x5e')];}}}if(_[_0xd475('0x5f')](_0x5130c4[_0xd475('0x59')])){_0x5130c4[_0xd475('0x59')]=_0x5080b2+0x1;}return _0x3f6262(_0x5130c4);});});})['catch'](function(_0x422519){_0x3660c4(_0x422519);});});}function updateUser(_0x5522c1){return new Promise(function(_0x209fb7,_0x86c6f9){try{if(_0x5522c1[_0xd475('0x64')]){_0x5522c1[_0xd475('0x65')]=_0x5522c1[_0xd475('0x59')];_0x5522c1[_0xd475('0x66')]={'mailbox':_0x5522c1[_0xd475('0x59')],'password':_0x5522c1[_0xd475('0x37')],'fullname':_0x5522c1[_0xd475('0x67')],'email':_0x5522c1[_0xd475('0x68')]};}if(_0x5522c1[_0xd475('0x1c')]===_0xd475('0x1d')){if(!_0x5522c1[_0xd475('0x69')])_0x5522c1['permissions']=[_0xd475('0x6a'),_0xd475('0x6b'),_0xd475('0x6c'),_0xd475('0x6d'),_0xd475('0x6e'),'104',_0xd475('0x6f'),_0xd475('0x70'),'107',_0xd475('0x71'),_0xd475('0x72'),_0xd475('0x73'),_0xd475('0x74'),_0xd475('0x75'),_0xd475('0x76')];}_0x209fb7(_0x5522c1);}catch(_0x6de1a2){_0x86c6f9(_0x6de1a2);}});}exports['create']=function(_0x5ba2d8,_0x12ac2f){if(_0x5ba2d8['user'][_0xd475('0x1c')]==='agent')throw new Error(_0xd475('0x77'));if(_0x5ba2d8[_0xd475('0x53')][_0xd475('0x1c')]===_0xd475('0x24')&&_0x5ba2d8[_0xd475('0x24')]['role']!=='admin'){throw new Error(_0xd475('0x78'));}if(_0x5ba2d8['body']['role']==='admin'&&_0x5ba2d8[_0xd475('0x24')][_0xd475('0x1c')]!==_0xd475('0x22')){throw new Error(_0xd475('0x79'));}return licenseUtil['checkUserLimits']([_0x5ba2d8[_0xd475('0x53')]])[_0xd475('0x1b')](function(){return validateUser(_0x5ba2d8[_0xd475('0x53')]);})[_0xd475('0x1b')](function(_0x222b4d){return updateUser(_0x222b4d)['then'](function(_0x8379e1){if(_0x8379e1[_0xd475('0x1c')]===_0xd475('0x22')){_0x8379e1[_0xd475('0x7a')]=_0x5ba2d8['user'][_0xd475('0x7a')];delete _0x8379e1[_0xd475('0x7b')];}return _0x8379e1;});})['then'](function(_0x334592){return db['User'][_0xd475('0x7c')](_0x334592,{'include':[{'model':db[_0xd475('0x66')],'as':'VoiceMail'}]});})[_0xd475('0x1b')](function(_0x18073b){if(_0x5ba2d8[_0xd475('0x53')][_0xd475('0x1c')]==='user')return _0x18073b;if(_0x5ba2d8['user'][_0xd475('0x1c')]!==_0xd475('0x24'))return _0x18073b;return db['UserProfileSection'][_0xd475('0x2a')]({'where':{'name':_0x18073b[_0xd475('0x1c')]==='agent'?'Agents':_0xd475('0x7d'),'userProfileId':_0x5ba2d8[_0xd475('0x24')][_0xd475('0x7b')]},'raw':!![]})[_0xd475('0x1b')](function(_0x86f995){if(!_0x86f995||_0x86f995[_0xd475('0x7e')]!=0x0)return _0x18073b;return db[_0xd475('0x2b')][_0xd475('0x7c')]({'name':_0x18073b['name'],'resourceId':_0x18073b['id'],'type':_0x86f995[_0xd475('0x30')],'sectionId':_0x86f995['id']},{})['then'](function(){return _0x18073b;});})[_0xd475('0x4e')](function(_0xa6ae64){logger[_0xd475('0x2e')](_0xd475('0x7f'),_0xa6ae64);throw _0xa6ae64;});})[_0xd475('0x1b')](respondWithResult(_0x12ac2f,0xc9))[_0xd475('0x4e')](handleError(_0x12ac2f,null));};exports[_0xd475('0x80')]=function(_0x7c2db,_0x166efc){var _0x56d023=_0x7c2db[_0xd475('0x53')];var _0x247143=[];if(_0x7c2db[_0xd475('0x24')]['role']==='agent')throw new Error(_0xd475('0x77'));if(_[_0xd475('0x81')](_0x56d023,['role',_0xd475('0x24')])&&_0x7c2db[_0xd475('0x24')]['role']!=='admin'){throw new Error(_0xd475('0x78'));}if(_[_0xd475('0x81')](_0x56d023,[_0xd475('0x1c'),_0xd475('0x22')])&&_0x7c2db[_0xd475('0x24')][_0xd475('0x1c')]!==_0xd475('0x22')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil[_0xd475('0x82')](_0x56d023)[_0xd475('0x1b')](function(){return validateUser(_0x56d023[0x0]);})[_0xd475('0x1b')](function(){for(var _0x9c9a4e=0x1;_0x9c9a4e<_0x56d023['length'];_0x9c9a4e++){var _0x3a4e85=_0x56d023[_0x9c9a4e-0x1][_0xd475('0x59')];if(!_0x56d023[_0x9c9a4e][_0xd475('0x59')])_0x56d023[_0x9c9a4e][_0xd475('0x59')]=_0x3a4e85+0x1;_0x247143[_0xd475('0x44')](validateUser(_0x56d023[_0x9c9a4e]));}return Promise[_0xd475('0x4d')](_0x247143);})[_0xd475('0x1b')](function(){_0x247143=[];for(var _0x2bfba7=0x0;_0x2bfba7<_0x56d023[_0xd475('0x47')];_0x2bfba7++){_0x247143[_0xd475('0x44')](updateUser(_0x56d023[_0x2bfba7]));}return Promise['all'](_0x247143);})[_0xd475('0x1b')](function(){_0x247143=_0x56d023[_0xd475('0x33')](function(_0x325f59){return db[_0xd475('0x32')]['create'](_0x325f59,{'include':[{'model':db[_0xd475('0x66')],'as':_0xd475('0x66')}]})[_0xd475('0x1b')](function(_0x226c8d){_0x325f59['id']=_0x226c8d['id'];return _0x325f59;});});return Promise['all'](_0x247143);})['then'](function(_0x409245){if(_0x7c2db[_0xd475('0x53')]['role']==='user')return _0x409245;if(_0x7c2db[_0xd475('0x24')][_0xd475('0x1c')]!==_0xd475('0x24'))return _0x409245;var _0x2f404c=_['some'](_0x409245,function(_0x73ff88){return _0x73ff88[_0xd475('0x1c')]===_0xd475('0x1d')||_0x73ff88[_0xd475('0x1c')]===_0xd475('0x26');});if(!_0x2f404c)return _0x409245;return db[_0xd475('0x83')]['findAll']({'where':{'name':{'$or':[_0xd475('0x25'),_0xd475('0x7d')]},'userProfileId':_0x7c2db[_0xd475('0x24')]['userProfileId']},'raw':!![]})['then'](function(_0x49ede7){if(_[_0xd475('0x84')](_0x49ede7)||!_[_0xd475('0x81')](_0x49ede7,[_0xd475('0x7e'),0x0]))return _0x409245;_0x247143=[];var _0x4cdd7f=_(_0x49ede7)['map'](function(_0x5c404c){if(_0x5c404c[_0xd475('0x7e')]===0x1)return;return _0x5c404c[_0xd475('0x30')]==='Agents'?_0xd475('0x1d'):_0xd475('0x26');})[_0xd475('0x85')]()[_0xd475('0x28')]();for(var _0x22a20a=0x0;_0x22a20a<_0x409245['length'];_0x22a20a++){if(!_['includes'](_0x4cdd7f,_0x409245[_0x22a20a]['role']))return;var _0xed2aa5=_0x409245[_0x22a20a][_0xd475('0x1c')]==='agent'?_0xd475('0x25'):_0xd475('0x7d');_0x247143['push'](db[_0xd475('0x2b')][_0xd475('0x7c')]({'name':_0x409245[_0x22a20a][_0xd475('0x30')],'resourceId':_0x409245[_0x22a20a]['id'],'type':_0xed2aa5,'sectionId':_[_0xd475('0x2a')](_0x49ede7,[_0xd475('0x30'),_0xed2aa5])['id']},{}));}return Promise[_0xd475('0x4d')](_0x247143);});})[_0xd475('0x1b')](respondWithResult(_0x166efc,0xc9))[_0xd475('0x4e')](handleError(_0x166efc,null));};exports['changePassword']=function(_0x4581fc,_0x521f81){if(_0x4581fc[_0xd475('0x53')]['id']){delete _0x4581fc['body']['id'];}return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x4581fc['params']['id']}})[_0xd475('0x1b')](function(_0x122fda){if(!_0x122fda)return null;if(_0x122fda['id']===_0x4581fc[_0xd475('0x24')]['id']){if(!_0x4581fc[_0xd475('0x53')][_0xd475('0x86')]||!_0x4581fc[_0xd475('0x53')]['newPassword']){throw new db['Sequelize'][(_0xd475('0x87'))]('Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword');}if(!_0x122fda['authenticate'](_0x4581fc['body'][_0xd475('0x86')])){throw new db[(_0xd475('0x88'))][(_0xd475('0x87'))](_0xd475('0x89'));}if(_0x4581fc[_0xd475('0x53')][_0xd475('0x86')]===_0x4581fc[_0xd475('0x53')]['newPassword']){throw new db[(_0xd475('0x88'))][(_0xd475('0x87'))](_0xd475('0x8a'));}}else if(_0x4581fc[_0xd475('0x24')]['role']===_0xd475('0x22')){if(!_0x4581fc['body']['newPassword']){throw new db['Sequelize']['ValidationError'](_0xd475('0x8b'));}}else if(_0x4581fc[_0xd475('0x24')][_0xd475('0x1c')]===_0xd475('0x24')){if(!_0x4581fc[_0xd475('0x53')][_0xd475('0x8c')]){throw new db[(_0xd475('0x88'))][(_0xd475('0x87'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}if(_0x122fda[_0xd475('0x1c')]!==_0xd475('0x1d')){throw new db[(_0xd475('0x88'))][(_0xd475('0x87'))]('Unauthorized');}}else{throw new db[(_0xd475('0x88'))][(_0xd475('0x87'))](_0xd475('0x77'));}return _0x122fda;})[_0xd475('0x1b')](handleEntityNotFound(_0x521f81,null))[_0xd475('0x1b')](function(_0x2b7ddb){return db[_0xd475('0x5a')][_0xd475('0x8d')]({'attributes':['id','securePassword',_0xd475('0x8e'),_0xd475('0x8f')]})[_0xd475('0x1b')](function(_0x304de7){if(_0x304de7[_0xd475('0x5c')])authService[_0xd475('0x5d')](_0x4581fc[_0xd475('0x53')][_0xd475('0x8c')]);if(!_0x304de7[_0xd475('0x8e')]||!_0x2b7ddb[_0xd475('0x39')])return _0x2b7ddb;authService[_0xd475('0x90')](_0x4581fc['body']['newPassword'],_0x2b7ddb[_0xd475('0x39')],_0x304de7[_0xd475('0x8f')]);return _0x2b7ddb;})[_0xd475('0x1b')](saveUpdates({'password':_0x4581fc[_0xd475('0x53')]['newPassword'],'passwordResetAt':_0x4581fc[_0xd475('0x24')]['id']==_0x4581fc[_0xd475('0x54')]['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0x4581fc[_0xd475('0x53')][_0xd475('0x8c')],_0x2b7ddb['previousPasswords'])},null));})['then'](respondWithResult(_0x521f81,null))[_0xd475('0x4e')](handleError(_0x521f81,null));};exports['addQueues']=function(_0x37b91b,_0x4b27b2){var _0x58c0be=_0x37b91b['body'][_0xd475('0x91')];return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x37b91b['params']['id']},'attributes':['id','name',_0xd475('0x1c'),_0xd475('0x92'),_0xd475('0x93'),_0xd475('0x94'),_0xd475('0x95')]})[_0xd475('0x1b')](handleEntityNotFound(_0x4b27b2,null))['then'](function(_0x5cb02b){if(_0x5cb02b){if(!utils[_0xd475('0x96')](_0x58c0be)){throw new db[(_0xd475('0x88'))][(_0xd475('0x87'))](_0xd475('0x97'));}return _0x5cb02b['add'+_[_0xd475('0x98')](_0x58c0be[_0xd475('0x99')]())+_0xd475('0x9a')](_0x37b91b[_0xd475('0x53')][_0xd475('0x57')],{'penalty':_0x37b91b[_0xd475('0x53')][_0xd475('0x9b')]||0x0})[_0xd475('0x9c')](function(_0x3a7682){for(var _0x357bfb=0x0;_0x357bfb<_0x37b91b[_0xd475('0x53')]['ids'][_0xd475('0x47')];_0x357bfb+=0x1){var _0x534481={'UserId':Number(_0x37b91b['params']['id'])};_0x534481[_[_0xd475('0x98')](_0x58c0be[_0xd475('0x99')]())+_0xd475('0x9d')]=Number(_0x37b91b[_0xd475('0x53')][_0xd475('0x57')][_0x357bfb]);socket['emit'](_0xd475('0x24')+_[_0xd475('0x98')](_0x58c0be['toLowerCase']())+_0xd475('0x9e'),_0x534481);}return _0x3a7682;})[_0xd475('0x1b')](function(){if(_0x58c0be===_0xd475('0x9f')){return db[_0xd475('0xa0')][_0xd475('0x45')]({'where':{'id':_0x37b91b['body']['ids']||[]},'raw':!![],'attributes':['id',_0xd475('0x30')]});}})[_0xd475('0x1b')](function(_0x2993ab){var _0xf4f532=_0x5cb02b['get']({'plain':!![]});var _0x2add73=[];if(_0x58c0be===_0xd475('0x9f')&&_0xf4f532[_0xd475('0x1c')]===_0xd475('0x1d')&&_0xf4f532['online']){for(let _0x1cdf02=0x0;_0x1cdf02<_0x2993ab[_0xd475('0x47')];_0x1cdf02+=0x1){_0x2add73[_0xd475('0x44')]({'membername':_0xf4f532[_0xd475('0x30')],'UserId':_0xf4f532['id'],'queue_name':_0x2993ab[_0x1cdf02][_0xd475('0x30')],'VoiceQueueId':_0x2993ab[_0x1cdf02]['id'],'interface':_[_0xd475('0x5f')](_0xf4f532[_0xd475('0x95')])?util['format'](_0xd475('0xa1'),_0xf4f532[_0xd475('0x30')]):_0xf4f532[_0xd475('0x95')],'paused':_0xf4f532['voicePause']||![],'penalty':_0x37b91b[_0xd475('0x53')]['penalty']||0x0});}return Promise[_0xd475('0x4d')](_0x2add73[_0xd475('0x33')](function(_0x503f5a){return db[_0xd475('0xa2')][_0xd475('0xa3')](_0x503f5a);}));}return _0x5cb02b;});}})['then'](respondWithStatusCode(_0x4b27b2,null))[_0xd475('0x4e')](handleError(_0x4b27b2,null));};exports[_0xd475('0xa4')]=function(_0x18df0a,_0x5388c4){var _0x4bf3c4,_0x1a8f1e;return db['User'][_0xd475('0x2a')]({'where':{'id':_0x18df0a['params']['id']},'attributes':['id',_0xd475('0x30'),_0xd475('0x1c')]})[_0xd475('0x1b')](handleEntityNotFound(_0x5388c4,null))['then'](function(_0x1fa247){if(_0x1fa247){_0x4bf3c4=_0x1fa247;if(!_0x18df0a[_0xd475('0x3f')][_0xd475('0x91')]||!utils[_0xd475('0x96')](_0x18df0a['query'][_0xd475('0x91')])){throw new db[(_0xd475('0x88'))][(_0xd475('0x87'))](_0xd475('0x97'));}return _0x1fa247['remove'+_['capitalize'](_0x18df0a['query']['channel'][_0xd475('0x99')]())+'Queues'](_0x18df0a['query'][_0xd475('0x57')]);}})['then'](function(_0x4a5f97){if(_['isArray'](_0x18df0a[_0xd475('0x3f')][_0xd475('0x57')])){for(var _0x32f3a6=0x0;_0x32f3a6<_0x18df0a[_0xd475('0x3f')][_0xd475('0x57')][_0xd475('0x47')];_0x32f3a6+=0x1){_0x1a8f1e={'UserId':Number(_0x18df0a[_0xd475('0x54')]['id'])};_0x1a8f1e[_['capitalize'](_0x18df0a[_0xd475('0x3f')][_0xd475('0x91')][_0xd475('0x99')]())+_0xd475('0x9d')]=Number(_0x18df0a[_0xd475('0x3f')][_0xd475('0x57')][_0x32f3a6]);socket[_0xd475('0x1e')](_0xd475('0x24')+_[_0xd475('0x98')](_0x18df0a[_0xd475('0x3f')][_0xd475('0x91')]['toLowerCase']())+_0xd475('0xa5'),_0x1a8f1e);}}else{_0x1a8f1e={'UserId':Number(_0x18df0a[_0xd475('0x54')]['id'])};_0x1a8f1e[_[_0xd475('0x98')](_0x18df0a[_0xd475('0x3f')][_0xd475('0x91')][_0xd475('0x99')]())+'QueueId']=Number(_0x18df0a[_0xd475('0x3f')][_0xd475('0x57')]);socket['emit'](_0xd475('0x24')+_['capitalize'](_0x18df0a[_0xd475('0x3f')][_0xd475('0x91')][_0xd475('0x99')]())+'Queue:remove',_0x1a8f1e);}return _0x4a5f97;})[_0xd475('0x1b')](function(){if(_0x18df0a['query'][_0xd475('0x91')]===_0xd475('0x9f')){return db[_0xd475('0xa2')][_0xd475('0x20')]({'where':{'UserId':_0x18df0a[_0xd475('0x54')]['id'],'VoiceQueueId':_0x18df0a[_0xd475('0x3f')][_0xd475('0x57')]},'individualHooks':!![]})[_0xd475('0x1b')](function(){return _0x4bf3c4;});}return _0x4bf3c4;})[_0xd475('0x1b')](respondWithStatusCode(_0x5388c4,null))[_0xd475('0x4e')](handleError(_0x5388c4,null));};exports[_0xd475('0xa6')]=function(_0x4d90dd,_0x498e3e){_0x4d90dd[_0xd475('0x53')]['userpic']=_0x4d90dd[_0xd475('0xa7')]['filename'];return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x4d90dd[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x498e3e,null))['then'](saveUpdates(_0x4d90dd[_0xd475('0x53')],null))[_0xd475('0x1b')](respondWithResult(_0x498e3e,null))[_0xd475('0x4e')](handleError(_0x498e3e,null));};exports['getAvatar']=function(_0x424fef,_0x1f9d65){var _0xfb993d=path[_0xd475('0xa8')](config[_0xd475('0xa9')],'server/files/images/logos/default_profile.png');return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x424fef[_0xd475('0x54')]['id']},'attributes':['id',_0xd475('0xaa')],'raw':!![]})[_0xd475('0x1b')](handleEntityNotFound(_0x1f9d65,null))[_0xd475('0x1b')](function(_0x29948a){if(_0x29948a){if(_[_0xd475('0x5f')](_0x29948a[_0xd475('0xaa')])){return _0x1f9d65[_0xd475('0xab')](_0xfb993d);}else{if(!fs[_0xd475('0xac')](path[_0xd475('0xa8')](config[_0xd475('0xa9')],_0xd475('0xad'),_0x29948a[_0xd475('0xaa')]))){return _0x1f9d65[_0xd475('0xab')](_0xfb993d);}return _0x1f9d65['download'](path[_0xd475('0xa8')](config[_0xd475('0xa9')],'server/files/images/',_0x29948a[_0xd475('0xaa')]));}}})['catch'](handleError(_0x1f9d65,null));};exports[_0xd475('0xae')]=function(_0x228ddc,_0x257383){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x228ddc[_0xd475('0x54')]['id']},'attributes':['id']})['then'](handleEntityNotFound(_0x257383,null))[_0xd475('0x1b')](function(_0x221aa6){var _0x4f0c55=[];values=_0x221aa6[_0xd475('0x49')];_0x4f0c55['push'](get_open_tabs('chat',_0x221aa6[_0xd475('0x49')]));_0x4f0c55[_0xd475('0x44')](get_open_tabs(_0xd475('0x4a'),_0x221aa6[_0xd475('0x49')]));_0x4f0c55[_0xd475('0x44')](get_open_tabs(_0xd475('0x4b'),_0x221aa6['dataValues']));_0x4f0c55[_0xd475('0x44')](get_open_tabs(_0xd475('0x4c'),_0x221aa6[_0xd475('0x49')]));_0x4f0c55['push'](get_open_tabs(_0xd475('0x51'),_0x221aa6[_0xd475('0x49')]));_0x4f0c55['push'](get_open_tabs(_0xd475('0x52'),_0x221aa6[_0xd475('0x49')]));return Promise[_0xd475('0x4d')](_0x4f0c55);})['then'](function(_0x2bbac4){if(_0x2bbac4){var _0x28d151=_[_0xd475('0x33')](values['ChatOpenTabs'],function(_0x2e494a){return{'channel':_0xd475('0xaf'),'id':_0x2e494a['id'],'createdAt':_0x2e494a[_0xd475('0xb0')]};});var _0x4507e4=_[_0xd475('0x33')](values[_0xd475('0xb1')],function(_0x22611d){return{'channel':_0xd475('0xb2'),'id':_0x22611d['id'],'createdAt':_0x22611d[_0xd475('0xb0')]};});var _0x515751=_[_0xd475('0x33')](values[_0xd475('0xb3')],function(_0x2af1b3){return{'channel':_0xd475('0xb4'),'id':_0x2af1b3['id'],'createdAt':_0x2af1b3[_0xd475('0xb0')]};});var _0x209c2a=_[_0xd475('0x33')](values[_0xd475('0xb5')],function(_0x29b03){return{'channel':_0xd475('0xb6'),'id':_0x29b03['id'],'createdAt':_0x29b03[_0xd475('0xb0')]};});var _0x2c0027=_['map'](values['SmsOpenTabs'],function(_0x5eb3ec){return{'channel':_0xd475('0xb7'),'id':_0x5eb3ec['id'],'createdAt':_0x5eb3ec[_0xd475('0xb0')]};});var _0x3546fe=_[_0xd475('0x33')](values[_0xd475('0xb8')],function(_0x530a07){return{'channel':_0xd475('0xb9'),'id':_0x530a07['id'],'createdAt':_0x530a07[_0xd475('0xb0')]};});var _0x437f5f=_[_0xd475('0xba')](_0x28d151,_0x4507e4,_0x515751,_0x209c2a,_0x2c0027,_0x3546fe);var _0x4f8ad0={'count':_0x437f5f[_0xd475('0x47')],'rows':_0x437f5f};return _0x4f8ad0;}else return null;})[_0xd475('0x1b')](respondWithResult(_0x257383,null))[_0xd475('0x4e')](handleError(_0x257383,null));};exports['getContacts']=function(_0x5af755,_0x568f52){var _0x96b7f6={};return db[_0xd475('0x32')]['findOne']({'where':{'id':_0x5af755['params']['id']}})[_0xd475('0x1b')](function(_0x33f579){if(!_0x33f579){throw new APINotFoundError(util[_0xd475('0xbb')]('User\x20with\x20id\x20%s\x20not\x20found',_0x5af755[_0xd475('0x54')]['id']));}return contacts[_0xd475('0x55')]();})[_0xd475('0x1b')](function(_0x11af1b){_0x5af755['query'][_0xd475('0x32')]=_0x5af755[_0xd475('0x54')]['id'];_0x96b7f6=qs[_0xd475('0x3c')](_0x11af1b,_0x5af755);if(_0x5af755[_0xd475('0x3f')]['hasOwnProperty'](_0xd475('0x3d'))){_0x96b7f6[_0xd475('0x3e')]=[{'model':db[_0xd475('0xbc')],'as':_0xd475('0xbd'),'required':![]},{'model':db[_0xd475('0xbe')],'as':_0xd475('0xbf'),'attributes':['id',_0xd475('0x30'),_0xd475('0xc0')],'where':_0x5af755[_0xd475('0x3f')][_0xd475('0xc1')]?{'id':_0x5af755[_0xd475('0x3f')][_0xd475('0xc1')]}:undefined,'required':_0x5af755[_0xd475('0x3f')][_0xd475('0xc1')]?!![]:![]}];}return contacts[_0xd475('0x45')](_0x5af755['query'],_0x5af755[_0xd475('0x24')],_0x96b7f6,_0x11af1b);})[_0xd475('0x1b')](respondWithFilteredResult(_0x568f52,_0x96b7f6))[_0xd475('0x4e')](APIHandleError(_0x568f52));};exports['getQueues']=function(_0x5b1283,_0x579115){var _0x1f5f12;var _0x547803={};var _0x1f0d4c;return db['User']['findOne']({'where':{'id':_0x5b1283[_0xd475('0x54')]['id']},'attributes':['id','name',_0xd475('0x1c')]})[_0xd475('0x1b')](handleEntityNotFound(_0x579115,null))[_0xd475('0x1b')](function(_0x7c039c){if(!utils['isValidChannel'](_0x5b1283[_0xd475('0x3f')][_0xd475('0x91')])){throw new db[(_0xd475('0x88'))][(_0xd475('0x87'))](_0xd475('0x97'));}_0x1f5f12=_0x7c039c;var _0x478a15={};_0x478a15[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_[_0xd475('0x98')](_0x5b1283[_0xd475('0x3f')][_0xd475('0x91')])+'Queue'][_0xd475('0xc4')]);_0x478a15[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x5b1283[_0xd475('0x3f')]);_0x478a15[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x478a15[_0xd475('0xc2')],_0x478a15[_0xd475('0x3f')]);_0x547803['attributes']=_[_0xd475('0xc6')](_0x478a15[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x5b1283[_0xd475('0x3f')]['fields']));_0x547803[_0xd475('0x43')]=_0x547803[_0xd475('0x43')]['length']?_0x547803[_0xd475('0x43')]:_0x478a15[_0xd475('0xc2')];_0x547803[_0xd475('0xc8')]=qs['sort'](_0x5b1283[_0xd475('0x3f')][_0xd475('0xc9')]);_0x547803[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x5b1283['query'],_0x478a15[_0xd475('0xc5')]));if(_0x5b1283['query'][_0xd475('0x36')]){_0x547803[_0xd475('0xca')]=_['merge'](_0x547803[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x547803[_0xd475('0x43')],function(_0x25d232){var _0x105f1b={};_0x105f1b[_0x25d232]={'$like':'%'+_0x5b1283[_0xd475('0x3f')]['filter']+'%'};return _0x105f1b;})});}_0x547803=_[_0xd475('0x4f')]({},_0x547803,_0x5b1283['options']);switch(_0x1f5f12[_0xd475('0x1c')]){case'admin':return db[_[_0xd475('0x98')](_0x5b1283['query'][_0xd475('0x91')])+_0xd475('0xcc')][_0xd475('0x45')](_0x547803);case _0xd475('0x24'):case _0xd475('0x1d'):return _0x1f5f12[_0xd475('0x21')+_[_0xd475('0x98')](_0x5b1283[_0xd475('0x3f')]['channel'])+_0xd475('0x9a')](_0x547803);default:throw new db[(_0xd475('0x88'))][(_0xd475('0x87'))]('Unknown\x20role');}})[_0xd475('0x1b')](function(_0x5049fc){_0x1f0d4c=_0x5049fc[_0xd475('0x47')];if(!_0x5b1283[_0xd475('0x3f')]['hasOwnProperty'](_0xd475('0xcd'))){_0x547803[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x5b1283[_0xd475('0x3f')][_0xd475('0xce')]);_0x547803[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x5b1283['query'][_0xd475('0x15')]);}switch(_0x1f5f12['role']){case _0xd475('0x22'):return db[_['capitalize'](_0x5b1283['query'][_0xd475('0x91')])+_0xd475('0xcc')]['findAll'](_0x547803);case _0xd475('0x24'):case _0xd475('0x1d'):return _0x1f5f12[_0xd475('0x21')+_[_0xd475('0x98')](_0x5b1283[_0xd475('0x3f')][_0xd475('0x91')])+_0xd475('0x9a')](_0x547803);}})[_0xd475('0x1b')](function(_0x59672d){return{'count':_0x1f0d4c,'rows':_0x59672d};})[_0xd475('0x1b')](respondWithResult(_0x579115,null))[_0xd475('0x4e')](handleError(_0x579115,null));};exports[_0xd475('0xcf')]=function(_0x194a4a,_0x21250e){var _0x441802={};var _0x454309={};var _0x31d368;var _0x111fe2;return db['User'][_0xd475('0x8d')]({'where':{'id':_0x194a4a[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x21250e,null))[_0xd475('0x1b')](function(_0x45fffe){if(_0x45fffe){_0x31d368=_0x45fffe;_0x454309[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0xa2')][_0xd475('0xc4')]);_0x454309[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x194a4a[_0xd475('0x3f')]);_0x454309['filters']=_[_0xd475('0xc6')](_0x454309[_0xd475('0xc2')],_0x454309['query']);_0x441802[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x454309[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x194a4a[_0xd475('0x3f')]['fields']));_0x441802[_0xd475('0x43')]=_0x441802[_0xd475('0x43')][_0xd475('0x47')]?_0x441802['attributes']:_0x454309[_0xd475('0xc2')];_0x441802[_0xd475('0xc8')]=qs[_0xd475('0xc9')](_0x194a4a[_0xd475('0x3f')][_0xd475('0xc9')]);_0x441802[_0xd475('0xca')]=qs['filters'](_['pick'](_0x194a4a['query'],_0x454309[_0xd475('0xc5')]));if(_0x194a4a[_0xd475('0x3f')][_0xd475('0x36')]){_0x441802[_0xd475('0xca')]=_['merge'](_0x441802[_0xd475('0xca')],{'$or':_['map'](_0x441802['attributes'],function(_0x31061a){var _0x4eea58={};_0x4eea58[_0x31061a]={'$like':'%'+_0x194a4a[_0xd475('0x3f')]['filter']+'%'};return _0x4eea58;})});}_0x441802=_[_0xd475('0x4f')]({},_0x441802,_0x194a4a[_0xd475('0x50')]);return _0x31d368['getVoiceQueuesRt'](_0x441802);}})[_0xd475('0x1b')](function(_0x1c51ee){if(_0x1c51ee){_0x111fe2=_0x1c51ee[_0xd475('0x47')];if(!_0x194a4a['query'][_0xd475('0xd0')](_0xd475('0xcd'))){_0x441802[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x194a4a[_0xd475('0x3f')]['limit']);_0x441802[_0xd475('0x15')]=qs['offset'](_0x194a4a[_0xd475('0x3f')]['offset']);}return _0x31d368[_0xd475('0xcf')](_0x441802);}})[_0xd475('0x1b')](function(_0x1cf447){if(_0x1cf447){return _0x1cf447?{'count':_0x111fe2,'rows':_0x1cf447}:null;}})[_0xd475('0x1b')](respondWithResult(_0x21250e,null))['catch'](handleError(_0x21250e,null));};exports[_0xd475('0xd1')]=function(_0x1b74eb,_0x3ad546){var _0x55ad82={};var _0x2fc5c4={};var _0x57b2ec;var _0x5a225d;return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x1b74eb[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x3ad546,null))['then'](function(_0x94d1a1){if(_0x94d1a1){_0x57b2ec=_0x94d1a1;_0x2fc5c4[_0xd475('0xc2')]=_[_0xd475('0xc3')](db['ChatGroup'][_0xd475('0xc4')]);_0x2fc5c4[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x1b74eb[_0xd475('0x3f')]);_0x2fc5c4[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x2fc5c4['model'],_0x2fc5c4['query']);_0x55ad82[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x2fc5c4['model'],qs[_0xd475('0xc7')](_0x1b74eb[_0xd475('0x3f')][_0xd475('0xc7')]));_0x55ad82[_0xd475('0x43')]=_0x55ad82[_0xd475('0x43')][_0xd475('0x47')]?_0x55ad82[_0xd475('0x43')]:_0x2fc5c4[_0xd475('0xc2')];_0x55ad82['order']=qs['sort'](_0x1b74eb[_0xd475('0x3f')]['sort']);_0x55ad82['where']=qs['filters'](_[_0xd475('0xcb')](_0x1b74eb['query'],_0x2fc5c4[_0xd475('0xc5')]));if(_0x1b74eb[_0xd475('0x3f')][_0xd475('0x36')]){_0x55ad82[_0xd475('0xca')]=_['merge'](_0x55ad82[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x55ad82['attributes'],function(_0x3fed54){var _0x2b1c48={};_0x2b1c48[_0x3fed54]={'$like':'%'+_0x1b74eb[_0xd475('0x3f')]['filter']+'%'};return _0x2b1c48;})});}_0x55ad82=_[_0xd475('0x4f')]({},_0x55ad82,_0x1b74eb[_0xd475('0x50')]);return _0x57b2ec['getGroups'](_0x55ad82);}})[_0xd475('0x1b')](function(_0x3b7686){if(_0x3b7686){_0x5a225d=_0x3b7686[_0xd475('0x47')];if(!_0x1b74eb[_0xd475('0x3f')][_0xd475('0xd0')]('nolimit')){_0x55ad82[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x1b74eb[_0xd475('0x3f')][_0xd475('0xce')]);_0x55ad82[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x1b74eb['query'][_0xd475('0x15')]);}return _0x57b2ec[_0xd475('0xd1')](_0x55ad82);}})['then'](function(_0x3e9853){if(_0x3e9853){return _0x3e9853?{'count':_0x5a225d,'rows':_0x3e9853}:null;}})[_0xd475('0x1b')](respondWithResult(_0x3ad546,null))[_0xd475('0x4e')](handleError(_0x3ad546,null));};exports['getRecordings']=function(_0x2a0d4a,_0x5e17aa){var _0x373c30={'raw':!![],'where':{}};var _0x13d0d2={};var _0x2f32fb={'count':0x0,'rows':[]};return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x2a0d4a['params']['id']}})['then'](handleEntityNotFound(_0x5e17aa,null))['then'](function(_0x5c605a){if(_0x5c605a){_0x13d0d2['model']=_['keys'](db[_0xd475('0xd2')]['rawAttributes']);_0x13d0d2['query']=_['keys'](_0x2a0d4a[_0xd475('0x3f')]);_0x13d0d2[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x13d0d2[_0xd475('0xc2')],_0x13d0d2[_0xd475('0x3f')]);_0x373c30[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x13d0d2[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x2a0d4a[_0xd475('0x3f')][_0xd475('0xc7')]));_0x373c30[_0xd475('0x43')]=_0x373c30[_0xd475('0x43')]['length']?_0x373c30['attributes']:_0x13d0d2['model'];if(!_0x2a0d4a[_0xd475('0x3f')]['hasOwnProperty'](_0xd475('0xcd'))){_0x373c30[_0xd475('0xce')]=qs['limit'](_0x2a0d4a[_0xd475('0x3f')][_0xd475('0xce')]);_0x373c30[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x2a0d4a['query'][_0xd475('0x15')]);}_0x373c30['order']=qs[_0xd475('0xc9')](_0x2a0d4a[_0xd475('0x3f')][_0xd475('0xc9')]);_0x373c30[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x2a0d4a[_0xd475('0x3f')],_0x13d0d2['filters']));_0x373c30[_0xd475('0xca')][_0xd475('0xd3')]=_0x5c605a['id'];if(_0x2a0d4a['query'][_0xd475('0x36')]){_0x373c30[_0xd475('0xca')]=_[_0xd475('0x4f')](_0x373c30['where'],{'$or':_['map'](_0x373c30[_0xd475('0x43')],function(_0xc7cc3){var _0x53f8f3={};_0x53f8f3[_0xc7cc3]={'$like':'%'+_0x2a0d4a['query']['filter']+'%'};return _0x53f8f3;})});}_0x373c30=_['merge']({},_0x373c30,_0x2a0d4a['options']);return db[_0xd475('0xd2')][_0xd475('0x17')]({'where':_0x373c30[_0xd475('0xca')]})[_0xd475('0x1b')](function(_0x4910fc){_0x2f32fb['count']=_0x4910fc;if(_0x2a0d4a['query']['includeAll']){_0x373c30[_0xd475('0x3e')]=[{'all':!![]}];}return db['VoiceRecording'][_0xd475('0x45')](_0x373c30);})[_0xd475('0x1b')](function(_0xe7c499){_0x2f32fb[_0xd475('0x46')]=_0xe7c499;return _0x2f32fb;});}})['then'](respondWithFilteredResult(_0x5e17aa,_0x373c30))[_0xd475('0x4e')](handleError(_0x5e17aa,null));};exports[_0xd475('0xd4')]=function(_0x2549b3,_0x15bd57){var _0x249da1={'raw':!![],'where':{}};var _0x1d43ae={};var _0x11be89={'count':0x0,'rows':[]};return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x2549b3['params']['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x15bd57,null))[_0xd475('0x1b')](function(_0x246473){if(_0x246473){_0x1d43ae[_0xd475('0xc2')]=_['keys'](db['ScreenRecording']['rawAttributes']);_0x1d43ae['query']=_[_0xd475('0xc3')](_0x2549b3[_0xd475('0x3f')]);_0x1d43ae[_0xd475('0xc5')]=_['intersection'](_0x1d43ae[_0xd475('0xc2')],_0x1d43ae[_0xd475('0x3f')]);_0x249da1['attributes']=_[_0xd475('0xc6')](_0x1d43ae[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x2549b3[_0xd475('0x3f')]['fields']));_0x249da1[_0xd475('0x43')]=_0x249da1[_0xd475('0x43')]['length']?_0x249da1[_0xd475('0x43')]:_0x1d43ae[_0xd475('0xc2')];if(!_0x2549b3[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0x249da1['limit']=qs['limit'](_0x2549b3['query'][_0xd475('0xce')]);_0x249da1[_0xd475('0x15')]=qs['offset'](_0x2549b3[_0xd475('0x3f')]['offset']);}_0x249da1['order']=qs[_0xd475('0xc9')](_0x2549b3[_0xd475('0x3f')][_0xd475('0xc9')]);_0x249da1[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x2549b3[_0xd475('0x3f')],_0x1d43ae[_0xd475('0xc5')]));_0x249da1[_0xd475('0xca')][_0xd475('0xd3')]=_0x246473['id'];if(_0x2549b3['query'][_0xd475('0x36')]){_0x249da1[_0xd475('0xca')]=_[_0xd475('0x4f')](_0x249da1[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x249da1[_0xd475('0x43')],function(_0x51b104){var _0x1f4651={};_0x1f4651[_0x51b104]={'$like':'%'+_0x2549b3[_0xd475('0x3f')]['filter']+'%'};return _0x1f4651;})});}_0x249da1=_[_0xd475('0x4f')]({},_0x249da1,_0x2549b3[_0xd475('0x50')]);return db['ScreenRecording']['count']({'where':_0x249da1[_0xd475('0xca')]})[_0xd475('0x1b')](function(_0xb15df5){_0x11be89[_0xd475('0x17')]=_0xb15df5;if(_0x2549b3[_0xd475('0x3f')][_0xd475('0x3d')]){_0x249da1['include']=[{'all':!![]}];}return db['ScreenRecording'][_0xd475('0x45')](_0x249da1);})['then'](function(_0x4c846a){_0x11be89[_0xd475('0x46')]=_0x4c846a;return _0x11be89;});}})[_0xd475('0x1b')](respondWithFilteredResult(_0x15bd57,_0x249da1))[_0xd475('0x4e')](handleError(_0x15bd57,null));};exports[_0xd475('0xd5')]=function(_0x252c29,_0x1aba1f){var _0x1da414={};var _0x24042d={};var _0x2f8e71;var _0x2e7b2d;return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x252c29[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x1aba1f,null))[_0xd475('0x1b')](function(_0xadeb56){if(_0xadeb56){_0x2f8e71=_0xadeb56;_0x24042d[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0xd6')][_0xd475('0xc4')]);_0x24042d[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x252c29[_0xd475('0x3f')]);_0x24042d[_0xd475('0xc5')]=_['intersection'](_0x24042d[_0xd475('0xc2')],_0x24042d[_0xd475('0x3f')]);_0x1da414['attributes']=_['intersection'](_0x24042d[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x252c29[_0xd475('0x3f')][_0xd475('0xc7')]));_0x1da414[_0xd475('0x43')]=_0x1da414[_0xd475('0x43')][_0xd475('0x47')]?_0x1da414[_0xd475('0x43')]:_0x24042d[_0xd475('0xc2')];_0x1da414[_0xd475('0xc8')]=qs[_0xd475('0xc9')](_0x252c29[_0xd475('0x3f')][_0xd475('0xc9')]);_0x1da414['where']=qs['filters'](_['pick'](_0x252c29[_0xd475('0x3f')],_0x24042d[_0xd475('0xc5')]));if(_0x252c29['query'][_0xd475('0x36')]){_0x1da414[_0xd475('0xca')]=_['merge'](_0x1da414[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x1da414['attributes'],function(_0x441b7a){var _0x5df147={};_0x5df147[_0x441b7a]={'$like':'%'+_0x252c29[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x5df147;})});}_0x1da414=_[_0xd475('0x4f')]({},_0x1da414,_0x252c29['options']);return _0x2f8e71[_0xd475('0xd5')](_0x1da414);}})[_0xd475('0x1b')](function(_0x4ec1d){if(_0x4ec1d){_0x2e7b2d=_0x4ec1d['length'];if(!_0x252c29[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0x1da414[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x252c29[_0xd475('0x3f')][_0xd475('0xce')]);_0x1da414['offset']=qs[_0xd475('0x15')](_0x252c29[_0xd475('0x3f')][_0xd475('0x15')]);}return _0x2f8e71['getChatInteractions'](_0x1da414);}})['then'](function(_0x589899){if(_0x589899){return _0x589899?{'count':_0x2e7b2d,'rows':_0x589899}:null;}})['then'](respondWithResult(_0x1aba1f,null))['catch'](handleError(_0x1aba1f,null));};exports[_0xd475('0xd7')]=function(_0x2b2908,_0x59df5a){var _0x1c2a42={};var _0x26a694={};var _0x50e244;var _0x39e921;return db[_0xd475('0x32')]['findOne']({'where':{'id':_0x2b2908[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x59df5a,null))[_0xd475('0x1b')](function(_0x69db29){if(_0x69db29){_0x50e244=_0x69db29;_0x26a694[_0xd475('0xc2')]=_['keys'](db['OpenchannelInteraction'][_0xd475('0xc4')]);_0x26a694[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x2b2908[_0xd475('0x3f')]);_0x26a694[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x26a694['model'],_0x26a694[_0xd475('0x3f')]);_0x1c2a42[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x26a694[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x2b2908[_0xd475('0x3f')]['fields']));_0x1c2a42['attributes']=_0x1c2a42['attributes'][_0xd475('0x47')]?_0x1c2a42[_0xd475('0x43')]:_0x26a694['model'];_0x1c2a42[_0xd475('0xc8')]=qs[_0xd475('0xc9')](_0x2b2908[_0xd475('0x3f')][_0xd475('0xc9')]);_0x1c2a42[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x2b2908['query'],_0x26a694['filters']));if(_0x2b2908[_0xd475('0x3f')]['filter']){_0x1c2a42[_0xd475('0xca')]=_[_0xd475('0x4f')](_0x1c2a42[_0xd475('0xca')],{'$or':_['map'](_0x1c2a42[_0xd475('0x43')],function(_0x594359){var _0x44127b={};_0x44127b[_0x594359]={'$like':'%'+_0x2b2908[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x44127b;})});}_0x1c2a42=_[_0xd475('0x4f')]({},_0x1c2a42,_0x2b2908['options']);return _0x50e244[_0xd475('0xd7')](_0x1c2a42);}})['then'](function(_0x53c444){if(_0x53c444){_0x39e921=_0x53c444[_0xd475('0x47')];if(!_0x2b2908[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0x1c2a42['limit']=qs['limit'](_0x2b2908['query'][_0xd475('0xce')]);_0x1c2a42[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x2b2908['query'][_0xd475('0x15')]);}return _0x50e244['getOpenchannelInteractions'](_0x1c2a42);}})[_0xd475('0x1b')](function(_0x58c492){if(_0x58c492){return _0x58c492?{'count':_0x39e921,'rows':_0x58c492}:null;}})['then'](respondWithResult(_0x59df5a,null))[_0xd475('0x4e')](handleError(_0x59df5a,null));};exports['getMailInteractions']=function(_0x187848,_0xb93770){var _0x334def={'raw':!![],'where':{}};var _0x168aad={};var _0x5f562d={'count':0x0,'rows':[]};return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x187848[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0xb93770,null))[_0xd475('0x1b')](function(_0x533875){if(_0x533875){_0x168aad[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0xd8')][_0xd475('0xc4')]);_0x168aad[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x187848[_0xd475('0x3f')]);_0x168aad['filters']=_[_0xd475('0xc6')](_0x168aad[_0xd475('0xc2')],_0x168aad[_0xd475('0x3f')]);_0x334def[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x168aad[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x187848[_0xd475('0x3f')][_0xd475('0xc7')]));_0x334def[_0xd475('0x43')]=_0x334def[_0xd475('0x43')][_0xd475('0x47')]?_0x334def[_0xd475('0x43')]:_0x168aad[_0xd475('0xc2')];if(!_0x187848['query'][_0xd475('0xd0')](_0xd475('0xcd'))){_0x334def[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x187848['query'][_0xd475('0xce')]);_0x334def[_0xd475('0x15')]=qs['offset'](_0x187848[_0xd475('0x3f')][_0xd475('0x15')]);}_0x334def[_0xd475('0xc8')]=qs[_0xd475('0xc9')](_0x187848[_0xd475('0x3f')][_0xd475('0xc9')]);_0x334def[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x187848['query'],_0x168aad[_0xd475('0xc5')]));_0x334def[_0xd475('0xca')][_0xd475('0xd3')]=_0x533875['id'];if(_0x187848[_0xd475('0x3f')]['filter']){_0x334def[_0xd475('0xca')]=_['merge'](_0x334def[_0xd475('0xca')],{'$or':_['map'](_0x334def['attributes'],function(_0x50122b){var _0x22fbc7={};_0x22fbc7[_0x50122b]={'$like':'%'+_0x187848[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x22fbc7;})});}_0x334def=_[_0xd475('0x4f')]({},_0x334def,_0x187848[_0xd475('0x50')]);return db[_0xd475('0xd8')][_0xd475('0x17')]({'where':_0x334def['where']})[_0xd475('0x1b')](function(_0x1eaad3){_0x5f562d['count']=_0x1eaad3;if(_0x187848[_0xd475('0x3f')][_0xd475('0x3d')]){_0x334def['include']=[{'all':!![]}];}return db[_0xd475('0xd8')][_0xd475('0x45')](_0x334def);})[_0xd475('0x1b')](function(_0x88c1a){_0x5f562d['rows']=_0x88c1a;return _0x5f562d;});}})['then'](respondWithFilteredResult(_0xb93770,_0x334def))[_0xd475('0x4e')](handleError(_0xb93770,null));};exports['getSmsInteractions']=function(_0x3ee1c0,_0x419712){var _0x419b80={};var _0x28423f={};var _0x3cf4ad;var _0x25fe67;return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x3ee1c0[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x419712,null))[_0xd475('0x1b')](function(_0x433928){if(_0x433928){_0x3cf4ad=_0x433928;_0x28423f[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0xd9')][_0xd475('0xc4')]);_0x28423f['query']=_['keys'](_0x3ee1c0['query']);_0x28423f[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x28423f[_0xd475('0xc2')],_0x28423f[_0xd475('0x3f')]);_0x419b80[_0xd475('0x43')]=_['intersection'](_0x28423f[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x3ee1c0[_0xd475('0x3f')][_0xd475('0xc7')]));_0x419b80[_0xd475('0x43')]=_0x419b80[_0xd475('0x43')][_0xd475('0x47')]?_0x419b80[_0xd475('0x43')]:_0x28423f[_0xd475('0xc2')];_0x419b80['order']=qs[_0xd475('0xc9')](_0x3ee1c0[_0xd475('0x3f')]['sort']);_0x419b80[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x3ee1c0[_0xd475('0x3f')],_0x28423f[_0xd475('0xc5')]));if(_0x3ee1c0[_0xd475('0x3f')][_0xd475('0x36')]){_0x419b80[_0xd475('0xca')]=_[_0xd475('0x4f')](_0x419b80[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x419b80[_0xd475('0x43')],function(_0x2ccb49){var _0x4a9275={};_0x4a9275[_0x2ccb49]={'$like':'%'+_0x3ee1c0[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x4a9275;})});}_0x419b80=_[_0xd475('0x4f')]({},_0x419b80,_0x3ee1c0[_0xd475('0x50')]);return _0x3cf4ad[_0xd475('0xda')](_0x419b80);}})[_0xd475('0x1b')](function(_0x54956d){if(_0x54956d){_0x25fe67=_0x54956d[_0xd475('0x47')];if(!_0x3ee1c0[_0xd475('0x3f')][_0xd475('0xd0')]('nolimit')){_0x419b80[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x3ee1c0[_0xd475('0x3f')][_0xd475('0xce')]);_0x419b80[_0xd475('0x15')]=qs['offset'](_0x3ee1c0['query'][_0xd475('0x15')]);}return _0x3cf4ad['getSmsInteractions'](_0x419b80);}})[_0xd475('0x1b')](function(_0x5157d2){if(_0x5157d2){return _0x5157d2?{'count':_0x25fe67,'rows':_0x5157d2}:null;}})[_0xd475('0x1b')](respondWithResult(_0x419712,null))['catch'](handleError(_0x419712,null));};exports[_0xd475('0xdb')]=function(_0x48476d,_0x539441){var _0x492990={};var _0x35fb72={};var _0x158cb3;var _0x4b4fad;return db['User'][_0xd475('0x8d')]({'where':{'id':_0x48476d[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x539441,null))[_0xd475('0x1b')](function(_0x27ac1a){if(_0x27ac1a){_0x158cb3=_0x27ac1a;_0x35fb72['model']=_[_0xd475('0xc3')](db['FaxInteraction']['rawAttributes']);_0x35fb72[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x48476d['query']);_0x35fb72['filters']=_['intersection'](_0x35fb72[_0xd475('0xc2')],_0x35fb72['query']);_0x492990[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x35fb72[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x48476d[_0xd475('0x3f')][_0xd475('0xc7')]));_0x492990[_0xd475('0x43')]=_0x492990['attributes'][_0xd475('0x47')]?_0x492990[_0xd475('0x43')]:_0x35fb72[_0xd475('0xc2')];_0x492990['order']=qs[_0xd475('0xc9')](_0x48476d[_0xd475('0x3f')][_0xd475('0xc9')]);_0x492990[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x48476d[_0xd475('0x3f')],_0x35fb72[_0xd475('0xc5')]));if(_0x48476d['query'][_0xd475('0x36')]){_0x492990[_0xd475('0xca')]=_[_0xd475('0x4f')](_0x492990[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x492990[_0xd475('0x43')],function(_0xa12423){var _0x4f64fa={};_0x4f64fa[_0xa12423]={'$like':'%'+_0x48476d[_0xd475('0x3f')]['filter']+'%'};return _0x4f64fa;})});}_0x492990=_[_0xd475('0x4f')]({},_0x492990,_0x48476d[_0xd475('0x50')]);return _0x158cb3[_0xd475('0xdb')](_0x492990);}})[_0xd475('0x1b')](function(_0x353d36){if(_0x353d36){_0x4b4fad=_0x353d36[_0xd475('0x47')];if(!_0x48476d[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0x492990['limit']=qs[_0xd475('0xce')](_0x48476d['query'][_0xd475('0xce')]);_0x492990[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x48476d[_0xd475('0x3f')][_0xd475('0x15')]);}return _0x158cb3[_0xd475('0xdb')](_0x492990);}})[_0xd475('0x1b')](function(_0xd73c99){if(_0xd73c99){return _0xd73c99?{'count':_0x4b4fad,'rows':_0xd73c99}:null;}})[_0xd475('0x1b')](respondWithResult(_0x539441,null))[_0xd475('0x4e')](handleError(_0x539441,null));};exports[_0xd475('0xdc')]=function(_0x4bacc9,_0x396256){var _0x336a77={};var _0x48096e={};var _0x17753f;var _0x127b6f;return db['User']['findOne']({'where':{'id':_0x4bacc9[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x396256,null))[_0xd475('0x1b')](function(_0x44c71d){if(_0x44c71d){_0x17753f=_0x44c71d;_0x48096e[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0xdd')][_0xd475('0xc4')]);_0x48096e[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x4bacc9['query']);_0x48096e[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x48096e[_0xd475('0xc2')],_0x48096e[_0xd475('0x3f')]);_0x336a77[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x48096e[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x4bacc9[_0xd475('0x3f')][_0xd475('0xc7')]));_0x336a77['attributes']=_0x336a77['attributes'][_0xd475('0x47')]?_0x336a77['attributes']:_0x48096e[_0xd475('0xc2')];_0x336a77['order']=qs[_0xd475('0xc9')](_0x4bacc9[_0xd475('0x3f')][_0xd475('0xc9')]);_0x336a77[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x4bacc9[_0xd475('0x3f')],_0x48096e[_0xd475('0xc5')]));if(_0x4bacc9[_0xd475('0x3f')][_0xd475('0x36')]){_0x336a77[_0xd475('0xca')]=_[_0xd475('0x4f')](_0x336a77['where'],{'$or':_[_0xd475('0x33')](_0x336a77['attributes'],function(_0x234b04){var _0x487475={};_0x487475[_0x234b04]={'$like':'%'+_0x4bacc9[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x487475;})});}_0x336a77=_[_0xd475('0x4f')]({},_0x336a77,_0x4bacc9[_0xd475('0x50')]);return _0x17753f[_0xd475('0xdc')](_0x336a77);}})[_0xd475('0x1b')](function(_0xaead06){if(_0xaead06){_0x127b6f=_0xaead06[_0xd475('0x47')];if(!_0x4bacc9['query']['hasOwnProperty']('nolimit')){_0x336a77[_0xd475('0xce')]=qs['limit'](_0x4bacc9[_0xd475('0x3f')][_0xd475('0xce')]);_0x336a77['offset']=qs[_0xd475('0x15')](_0x4bacc9['query'][_0xd475('0x15')]);}return _0x17753f[_0xd475('0xdc')](_0x336a77);}})[_0xd475('0x1b')](function(_0x4a0a61){if(_0x4a0a61){return _0x4a0a61?{'count':_0x127b6f,'rows':_0x4a0a61}:null;}})[_0xd475('0x1b')](respondWithResult(_0x396256,null))[_0xd475('0x4e')](handleError(_0x396256,null));};exports[_0xd475('0xde')]=function(_0x35756e,_0x20239a,_0x1830ea){var _0x897fef;var _0x2375ef;var _0x246a39;var _0x57fef2=!_[_0xd475('0x5f')](_0x35756e[_0xd475('0x54')]['id'])?_0x35756e[_0xd475('0x54')]['id']:!_['isNil'](_0x35756e['user']['id'])?_0x35756e[_0xd475('0x24')]['id']:null;return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x57fef2,'role':{'$or':[_0xd475('0x22'),_0xd475('0x24'),_0xd475('0x1d')]}},'attributes':['id','name','phone',_0xd475('0xdf'),_0xd475('0x1c'),_0xd475('0x59'),_0xd475('0x93')]})[_0xd475('0x1b')](function(_0x333b1b){if(_0x333b1b){if(_0x333b1b['role']===_0xd475('0x1d')){_0x897fef=_0x333b1b;if(_0x35756e['body']['interface']){_0x246a39=util['format'](_0xd475('0xe0'),_0x897fef[_0x35756e['body'][_0xd475('0x95')]]);}else if(_0x35756e['body'][_0xd475('0xe1')]){_0x246a39=util[_0xd475('0xbb')]('SIP/%s',_0x35756e[_0xd475('0x53')][_0xd475('0xe1')]);}else{_0x246a39=util['format'](_0xd475('0xa1'),_0x897fef[_0xd475('0x30')]);}socket['to'](util[_0xd475('0xbb')](_0xd475('0xe2'),_0x897fef[_0xd475('0x30')]))[_0xd475('0x1e')](_0xd475('0xe3'),{'user':{'id':_0x897fef['id'],'name':_0x897fef['name']},'ip':_0x35756e['headers'][_0xd475('0xe4')]||_0x35756e[_0xd475('0xe5')][_0xd475('0xe6')]||_0x35756e[_0xd475('0xe7')][_0xd475('0xe6')]||_0x35756e[_0xd475('0xe5')]['socket'][_0xd475('0xe6')]});return db[_0xd475('0xa2')][_0xd475('0x20')]({'where':{'membername':_0x897fef['name']},'individualHooks':!![]});}}else{throw new db[(_0xd475('0x88'))]['ValidationError']('User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method');}})[_0xd475('0x1b')](function(){if(_0x897fef){return _0x897fef[_0xd475('0xe8')]({'raw':!![]});}})[_0xd475('0x1b')](function(_0x411738){if(_0x897fef){if(_0x411738){_0x2375ef=_0x411738;if(_0x2375ef[_0xd475('0x47')]){var _0x252704=_0x2375ef[_0xd475('0x33')](function(_0x3c8ae5){var _0x494d69={'membername':_0x897fef['name'],'UserId':_0x897fef['id'],'queue_name':_0x3c8ae5[_0xd475('0x30')],'VoiceQueueId':_0x3c8ae5['id'],'interface':_0x246a39,'paused':_0x897fef['loginInPause']||![],'penalty':_0x3c8ae5[_0xd475('0xe9')]||0x0};return db['UserVoiceQueueRt']['upsert'](_0x494d69);});return Promise[_0xd475('0x4d')](_0x252704);}}}})['then'](function(){if(_0x897fef){return db['MemberReport']['findAll']({'where':{'membername':_0x897fef[_0xd475('0x30')],'exitAt':null}});}})[_0xd475('0x1b')](function(_0x31ab21){if(_0x897fef){var _0x305e40=[];_0x31ab21[_0xd475('0xea')](function(_0x41df14){_0x305e40[_0xd475('0x44')](_0x41df14['update']({'exitAt':moment()[_0xd475('0xbb')](_0xd475('0xeb'))}));});return Promise[_0xd475('0x4d')](_0x305e40);}})['then'](function(){if(_0x897fef){var _0x369311=[];var _0x2bf058=[];var _0x1ff017=utils[_0xd475('0xec')]();var _0x229207={'membername':_0x897fef[_0xd475('0x30')],'interface':_0x246a39,'enterAt':moment()[_0xd475('0xbb')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x897fef[_0xd475('0x1c')],'internal':_0x897fef['internal']};_0x1ff017['forEach'](function(_0x5dc431){_0x369311[_0xd475('0x44')](_[_0xd475('0x4f')]({'channel':_0x5dc431,'type':_0xd475('0xed'),'data1':_0x35756e[_0xd475('0x53')]['device'],'data2':_0x246a39},_0x229207));if(_0x897fef[_0xd475('0x93')]){_0x2bf058[_0xd475('0x44')](_[_0xd475('0x4f')]({'channel':_0x5dc431,'type':_0xd475('0xee'),'data1':_0xd475('0xef')},_0x229207));}});return db[_0xd475('0xf0')][_0xd475('0x80')](_0x369311['concat'](_0x2bf058),{'individualHooks':!![]});}})[_0xd475('0x1b')](function(){if(_0x897fef){return _0x897fef[_0xd475('0x1a')]({'online':!![],'lastLoginAt':moment()[_0xd475('0xbb')](_0xd475('0xeb')),'voicePause':_0x897fef[_0xd475('0x93')]||![],'mailPause':_0x897fef['loginInPause']||![],'chatPause':_0x897fef[_0xd475('0x93')]||![],'faxPause':_0x897fef[_0xd475('0x93')]||![],'smsPause':_0x897fef[_0xd475('0x93')]||![],'openchannelPause':_0x897fef[_0xd475('0x93')]||![],'whatsappPause':_0x897fef[_0xd475('0x93')]||![],'pauseType':_0x897fef[_0xd475('0x93')]?_0xd475('0xef'):null,'interface':_0x246a39,'lastPauseAt':moment()[_0xd475('0xbb')](_0xd475('0xeb'))});}})[_0xd475('0x1b')](function(_0x32e08e){if(_0x35756e[_0xd475('0xf1')]){return _0x1830ea();}else{return Promise[_0xd475('0xf2')](_0x32e08e)[_0xd475('0x1b')](respondWithResult(_0x20239a,null));}})['catch'](handleError(_0x20239a,null));};exports[_0xd475('0xf3')]=function(_0xe30b85,_0xf77f81){var _0xef09c6;return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0xe30b85['params']['id'],'role':_0xd475('0x1d')},'attributes':['id','name','role']})[_0xd475('0x1b')](handleEntityNotFound(_0xf77f81,null))[_0xd475('0x1b')](function(_0x588629){if(_0x588629){_0xef09c6=_0x588629;return db[_0xd475('0xa2')][_0xd475('0x20')]({'where':{'membername':_0xef09c6[_0xd475('0x30')]},'individualHooks':!![]});}})[_0xd475('0x1b')](function(){return db[_0xd475('0xf0')][_0xd475('0x45')]({'where':{'membername':_0xef09c6[_0xd475('0x30')],'exitAt':null}});})[_0xd475('0x1b')](function(_0x2a59c6){var _0x663a23=[];_0x2a59c6[_0xd475('0xea')](function(_0x380025){_0x663a23[_0xd475('0x44')](_0x380025[_0xd475('0x1a')]({'exitAt':moment()[_0xd475('0xbb')](_0xd475('0xeb'))}));});return Promise[_0xd475('0x4d')](_0x663a23);})[_0xd475('0x1b')](function(){return _0xef09c6[_0xd475('0x1a')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xd475('0x1b')](respondWithResult(_0xf77f81,null))[_0xd475('0x4e')](handleError(_0xf77f81,null));};exports[_0xd475('0xf4')]=function(_0x3a5075,_0x5b5997){var _0x372ef0;return db[_0xd475('0xa2')][_0xd475('0x1a')]({'paused':0x1},{'where':{'UserId':_0x3a5075[_0xd475('0x54')]['id']},'individualHooks':!![]})[_0xd475('0x1b')](function(){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x3a5075[_0xd475('0x54')]['id'],'role':_0xd475('0x1d')},'attributes':['id',_0xd475('0x30'),_0xd475('0x1c'),_0xd475('0x59'),'interface',_0xd475('0x92')]});})['then'](handleEntityNotFound(_0x5b5997,null))[_0xd475('0x1b')](function(_0x2be1cf){if(_0x2be1cf){_0x372ef0=_0x2be1cf;return db[_0xd475('0xf0')][_0xd475('0x45')]({'where':{'membername':_0x372ef0[_0xd475('0x30')],'type':'PAUSE','exitAt':null}});}})[_0xd475('0x1b')](function(_0x5e1822){if(_0x5e1822['length']){var _0x296e32=moment()[_0xd475('0xbb')](_0xd475('0xeb'));for(var _0xc123bc=0x0,_0x30872d=_0x5e1822['length'];_0xc123bc<_0x30872d;_0xc123bc++){_0x5e1822[_0xc123bc][_0xd475('0xf5')]({'exitAt':_0x296e32});}}})[_0xd475('0x1b')](function(){var _0x5e83cc=[];var _0x4df29d=utils[_0xd475('0xec')]();_0x4df29d[_0xd475('0xea')](function(_0x549876){_0x5e83cc[_0xd475('0x44')]({'channel':_0x549876,'membername':_0x372ef0[_0xd475('0x30')],'interface':_['isNil'](_0x372ef0[_0xd475('0x95')])?util[_0xd475('0xbb')]('SIP/%s',_0x372ef0['name']):_0x372ef0[_0xd475('0x95')],'type':'PAUSE','enterAt':moment()[_0xd475('0xbb')](_0xd475('0xeb')),'data1':_0x3a5075['body'][_0xd475('0xf6')]||_0xd475('0xf7'),'role':_0x372ef0[_0xd475('0x1c')],'internal':_0x372ef0[_0xd475('0x59')]});});return db[_0xd475('0xf0')][_0xd475('0x80')](_0x5e83cc,{'individualHooks':!![]});})[_0xd475('0x1b')](function(){return _0x372ef0[_0xd475('0x1a')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x3a5075[_0xd475('0x53')][_0xd475('0xf6')]||_0xd475('0xf7'),'lastPauseAt':moment()[_0xd475('0xbb')](_0xd475('0xeb'))});})[_0xd475('0x1b')](respondWithResult(_0x5b5997,null))['catch'](handleError(_0x5b5997,null));};exports[_0xd475('0xf8')]=function(_0x285df9,_0x1e1166){if(_0x285df9[_0xd475('0x53')]['channel']&&!utils[_0xd475('0x96')](_0x285df9[_0xd475('0x53')][_0xd475('0x91')])){throw new APIBadRequestError(util[_0xd475('0xbb')](_0xd475('0xf9'),_0x285df9['body'][_0xd475('0x91')]));}return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x285df9[_0xd475('0x54')]['id']},'attributes':['id',_0xd475('0x30'),_0xd475('0x1c'),_0xd475('0x59'),'interface',_0xd475('0x92'),_0xd475('0x94'),_0xd475('0xfa'),_0xd475('0xfb'),_0xd475('0xfc'),'openchannelPause',_0xd475('0xfd'),'whatsappPause',_0xd475('0xfe'),'lastPauseAt']})[_0xd475('0x1b')](function(_0x59ef0b){if(!_0x59ef0b){throw new APINotFoundError(util[_0xd475('0xbb')](_0xd475('0xff'),_0x285df9['params']['id']));}return _0x59ef0b[_0xd475('0xf8')](_0x285df9[_0xd475('0x53')]['channel']);})[_0xd475('0x1b')](respondWithResult(_0x1e1166,null))[_0xd475('0x4e')](APIHandleError(_0x1e1166));};exports[_0xd475('0x100')]=function(_0x3da766,_0x409ae2){var _0xd735f={};var _0x524b81={};var _0x5045d4;var _0x4c4ea4;return db['User'][_0xd475('0x8d')]({'where':{'id':_0x3da766[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x409ae2,null))[_0xd475('0x1b')](function(_0x29c736){if(_0x29c736){_0x5045d4=_0x29c736;_0x524b81[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0x101')]['rawAttributes']);_0x524b81[_0xd475('0x3f')]=_['keys'](_0x3da766[_0xd475('0x3f')]);_0x524b81[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x524b81[_0xd475('0xc2')],_0x524b81['query']);_0xd735f[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x524b81['model'],qs['fields'](_0x3da766['query'][_0xd475('0xc7')]));_0xd735f[_0xd475('0x43')]=_0xd735f['attributes'][_0xd475('0x47')]?_0xd735f[_0xd475('0x43')]:_0x524b81[_0xd475('0xc2')];_0xd735f[_0xd475('0xc8')]=qs['sort'](_0x3da766[_0xd475('0x3f')]['sort']);_0xd735f[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x3da766[_0xd475('0x3f')],_0x524b81[_0xd475('0xc5')]));if(_0x3da766['query'][_0xd475('0x36')]){_0xd735f['where']=_[_0xd475('0x4f')](_0xd735f[_0xd475('0xca')],{'$or':_['map'](_0xd735f['attributes'],function(_0x343780){var _0x12b107={};_0x12b107[_0x343780]={'$like':'%'+_0x3da766['query']['filter']+'%'};return _0x12b107;})});}_0xd735f=_['merge']({},_0xd735f,_0x3da766[_0xd475('0x50')]);return _0x5045d4[_0xd475('0x100')](_0xd735f);}})[_0xd475('0x1b')](function(_0x25f37c){if(_0x25f37c){_0x4c4ea4=_0x25f37c['length'];if(!_0x3da766[_0xd475('0x3f')][_0xd475('0xd0')]('nolimit')){_0xd735f['limit']=qs[_0xd475('0xce')](_0x3da766[_0xd475('0x3f')][_0xd475('0xce')]);_0xd735f[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x3da766[_0xd475('0x3f')]['offset']);}return _0x5045d4[_0xd475('0x100')](_0xd735f);}})['then'](function(_0x501c61){if(_0x501c61){return _0x501c61?{'count':_0x4c4ea4,'rows':_0x501c61}:null;}})['then'](respondWithResult(_0x409ae2,null))['catch'](handleError(_0x409ae2,null));};exports[_0xd475('0x102')]=function(_0x5898c4,_0x372db7){var _0x375ee8=_0x5898c4[_0xd475('0x54')]['id'];var _0x476cec=_0x5898c4[_0xd475('0x53')]?_0x5898c4[_0xd475('0x53')][_0xd475('0x57')]:null;var _0x3e0637=[];return Promise[_0xd475('0xf2')]()['then'](function(){if(!_0x476cec)throw new APIBadRequestError(_0xd475('0x103'));})[_0xd475('0x1b')](function(){return db[_0xd475('0x32')]['findOne']({'where':{'id':_0x375ee8}});})[_0xd475('0x1b')](function(_0x5b8be4){if(!_0x5b8be4)throw new APINotFoundError(util[_0xd475('0xbb')]('User\x20with\x20id\x20%s\x20not\x20found',_0x5898c4['params']['id']));return db[_0xd475('0x60')][_0xd475('0x104')](function(_0x422a51){return _0x5b8be4[_0xd475('0x102')](_0x476cec,{'transaction':_0x422a51})[_0xd475('0x1b')](function(){return db[_0xd475('0x101')][_0xd475('0x45')]({'where':{'id':{'$in':_0x476cec}}});})['then'](function(_0x1bcf5c){var _0x132efc=_['map'](_0x1bcf5c,function(_0xa4c558){return _0xa4c558[_0xd475('0x105')]();});return Promise['all'](_0x132efc);})[_0xd475('0x1b')](function(_0x5a517b){_0x3e0637=_[_0xd475('0x106')](_0x5a517b);var _0x8fab53=_[_0xd475('0x33')](_0x3e0637,function(_0x34c372){return _0x34c372[_0xd475('0x107')](_0x5b8be4['id'],{'transaction':_0x422a51});});return Promise[_0xd475('0x4d')](_0x8fab53);})['then'](function(){if(!_0x5b8be4[_0xd475('0x92')])return;var _0x113d51=_[_0xd475('0x36')](_0x3e0637,function(_0x4143d1){return _0x4143d1[_0xd475('0x108')](_0xd475('0x91'))===_0xd475('0x109');});var _0x257fd0=_['map'](_0x113d51,function(_0x58d1bb){return db[_0xd475('0xa2')]['upsert']({'membername':_0x5b8be4[_0xd475('0x30')],'UserId':_0x5b8be4['id'],'queue_name':_0x58d1bb['name'],'VoiceQueueId':_0x58d1bb['id'],'interface':_[_0xd475('0x5f')](_0x5b8be4['interface'])?util[_0xd475('0xbb')](_0xd475('0xa1'),_0x5b8be4[_0xd475('0x30')]):_0x5b8be4[_0xd475('0x95')],'paused':_0x5b8be4['voicePause']||![],'penalty':_0x5b8be4[_0xd475('0x9b')]},{'transaction':_0x422a51});});return Promise[_0xd475('0x4d')](_0x257fd0);})[_0xd475('0x1b')](function(){return db[_0xd475('0x10a')][_0xd475('0x45')]({'where':{'teamId':{'$in':_0x476cec}}});})[_0xd475('0x1b')](function(_0x55d78b){var _0x31e1e0=_[_0xd475('0x33')](_0x55d78b,function(_0x4cef9f){return db['UserVoicePrefix'][_0xd475('0x7c')]({'UserId':_0x5b8be4['id'],'VoicePrefixId':_0x4cef9f['VoicePrefixId']},{'transaction':_0x422a51});});return Promise['all'](_0x31e1e0);});});})[_0xd475('0x1b')](function(){for(var _0x5d104a=0x0;_0x5d104a<_0x3e0637['length'];_0x5d104a++){var _0x8b20cb=_0x3e0637[_0x5d104a][_0xd475('0x108')](_0xd475('0x91'));var _0x2b5785=_0x8b20cb+_0xd475('0x9d');socket['emit'](_0xd475('0x24')+_0x8b20cb+_0xd475('0x9e'),{'UserId':_0x375ee8,['queueField']:_0x3e0637[_0x5d104a]['id']});}})[_0xd475('0x1b')](respondWithStatusCode(_0x372db7,null))[_0xd475('0x4e')](APIHandleError(_0x372db7));};exports[_0xd475('0x10b')]=function(_0x300147,_0x275335){var _0x302f08=_0x300147[_0xd475('0x54')]['id'];var _0x448d7f=null;if(_0x300147[_0xd475('0x3f')]['ids']){_0x448d7f=_['isArray'](_0x300147[_0xd475('0x3f')]['ids'])?_0x300147[_0xd475('0x3f')][_0xd475('0x57')]:[_0x300147['query']['ids']];}var _0x306f8c=[];return Promise['resolve']()['then'](function(){if(!_0x448d7f)throw new APIBadRequestError('Query\x20parameter\x20\x27ids\x27\x20is\x20required');})['then'](function(){return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x302f08}});})[_0xd475('0x1b')](function(_0x4a659d){if(!_0x4a659d)throw new APINotFoundError(util['format'](_0xd475('0xff'),_0x300147['params']['id']));return db[_0xd475('0x60')]['transaction'](function(_0x3d93ee){return _0x4a659d[_0xd475('0x10b')](_0x448d7f,{'transaction':_0x3d93ee})[_0xd475('0x1b')](function(){return db[_0xd475('0x101')]['findAll']({'where':{'id':{'$in':_0x448d7f}}});})['then'](function(_0x21c42d){var _0x38d43c=_[_0xd475('0x33')](_0x21c42d,function(_0x14cbff){return _0x14cbff[_0xd475('0x105')]();});return Promise['all'](_0x38d43c);})[_0xd475('0x1b')](function(_0x2bea88){_0x306f8c=_['flattenDeep'](_0x2bea88);var _0x87acc8=_[_0xd475('0x33')](_0x306f8c,function(_0x24d500){return _0x24d500[_0xd475('0x10c')](_0x4a659d['id'],{'transaction':_0x3d93ee});});return Promise[_0xd475('0x4d')](_0x87acc8);})[_0xd475('0x1b')](function(){if(!_0x4a659d[_0xd475('0x92')])return;var _0x18a778=_['filter'](_0x306f8c,function(_0x5a4973){return _0x5a4973['getDataValue']('channel')===_0xd475('0x109');});var _0x271ca2=_[_0xd475('0x33')](_0x18a778,function(_0x503dcd){return db[_0xd475('0xa2')][_0xd475('0x20')]({'where':{'VoiceQueueId':_0x503dcd['id'],'UserId':_0x4a659d['id']},'transaction':_0x3d93ee});});return Promise['all'](_0x271ca2);})[_0xd475('0x1b')](function(){return db[_0xd475('0x10a')][_0xd475('0x45')]({'where':{'teamId':{'$in':_0x448d7f}}});})[_0xd475('0x1b')](function(_0x2b61be){var _0x252c80=_[_0xd475('0x33')](_0x2b61be,function(_0x2f551c){return db[_0xd475('0x10d')][_0xd475('0x20')]({'where':{'UserId':_0x4a659d['id'],'VoicePrefixId':_0x2f551c[_0xd475('0x10e')]}},{'transaction':_0x3d93ee});});return Promise[_0xd475('0x4d')](_0x252c80);});});})['then'](function(){for(var _0x1856ea=0x0;_0x1856ea<_0x306f8c[_0xd475('0x47')];_0x1856ea++){var _0x1875fe=_0x306f8c[_0x1856ea]['getDataValue'](_0xd475('0x91'));var _0x4594e2=_0x1875fe+_0xd475('0x9d');socket[_0xd475('0x1e')](_0xd475('0x24')+_0x1875fe+'Queue:remove',{'UserId':_0x302f08,['queueField']:_0x306f8c[_0x1856ea]['id']});}})['then'](respondWithStatusCode(_0x275335,null))[_0xd475('0x4e')](APIHandleError(_0x275335));};exports['getLists']=function(_0x1ee5f2,_0x5d9ef1){var _0x4af9a7={};var _0x3db4df={};var _0x44828d;var _0x137675;return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x1ee5f2['params']['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x5d9ef1,null))[_0xd475('0x1b')](function(_0x2b3c80){if(_0x2b3c80){_0x44828d=_0x2b3c80;_0x3db4df[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0xbc')][_0xd475('0xc4')]);_0x3db4df['query']=_[_0xd475('0xc3')](_0x1ee5f2[_0xd475('0x3f')]);_0x3db4df[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x3db4df[_0xd475('0xc2')],_0x3db4df['query']);_0x4af9a7['attributes']=_[_0xd475('0xc6')](_0x3db4df[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x1ee5f2[_0xd475('0x3f')][_0xd475('0xc7')]));_0x4af9a7[_0xd475('0x43')]=_0x4af9a7['attributes']['length']?_0x4af9a7[_0xd475('0x43')]:_0x3db4df[_0xd475('0xc2')];_0x4af9a7[_0xd475('0xc8')]=qs['sort'](_0x1ee5f2[_0xd475('0x3f')][_0xd475('0xc9')]);_0x4af9a7['where']=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x1ee5f2[_0xd475('0x3f')],_0x3db4df['filters']));if(_0x1ee5f2['query'][_0xd475('0x36')]){_0x4af9a7['where']=_[_0xd475('0x4f')](_0x4af9a7[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x4af9a7[_0xd475('0x43')],function(_0x2e98ac){var _0x4f4849={};_0x4f4849[_0x2e98ac]={'$like':'%'+_0x1ee5f2[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x4f4849;})});}_0x4af9a7=_[_0xd475('0x4f')]({},_0x4af9a7,_0x1ee5f2[_0xd475('0x50')]);return _0x44828d['getLists'](_0x4af9a7);}})[_0xd475('0x1b')](function(_0x4af7fc){if(_0x4af7fc){_0x137675=_0x4af7fc['length'];if(!_0x1ee5f2[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0x4af9a7[_0xd475('0xce')]=qs['limit'](_0x1ee5f2['query'][_0xd475('0xce')]);_0x4af9a7[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x1ee5f2['query'][_0xd475('0x15')]);}return _0x44828d[_0xd475('0x10f')](_0x4af9a7);}})[_0xd475('0x1b')](function(_0x3941a1){if(_0x3941a1){return _0x3941a1?{'count':_0x137675,'rows':_0x3941a1}:null;}})[_0xd475('0x1b')](respondWithResult(_0x5d9ef1,null))[_0xd475('0x4e')](handleError(_0x5d9ef1,null));};exports[_0xd475('0x110')]=function(_0x11dc5f,_0xc4cdf8){var _0x2bdd15={};var _0x198069={};var _0x29ae7c;return db['User'][_0xd475('0x8d')]({'where':{'id':_0x11dc5f[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0xc4cdf8,null))[_0xd475('0x1b')](function(_0x910873){if(_0x910873){_0x29ae7c=_0x910873;_0x198069[_0xd475('0xc2')]=_['keys'](db[_0xd475('0x32')]['rawAttributes']);_0x198069['query']=_[_0xd475('0xc3')](_0x11dc5f[_0xd475('0x3f')]);_0x198069[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x198069[_0xd475('0xc2')],_0x198069[_0xd475('0x3f')]);_0x2bdd15[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x198069[_0xd475('0xc2')],qs['fields'](_0x11dc5f[_0xd475('0x3f')][_0xd475('0xc7')]));_0x2bdd15[_0xd475('0x43')]=_0x2bdd15['attributes'][_0xd475('0x47')]?_0x2bdd15[_0xd475('0x43')]:_0x198069[_0xd475('0xc2')];_0x2bdd15['order']=qs[_0xd475('0xc9')](_0x11dc5f[_0xd475('0x3f')]['sort']);_0x2bdd15[_0xd475('0xca')]=qs['filters'](_[_0xd475('0xcb')](_0x11dc5f[_0xd475('0x3f')],_0x198069[_0xd475('0xc5')]));if(_0x11dc5f[_0xd475('0x3f')]['filter']){_0x2bdd15[_0xd475('0xca')]=_[_0xd475('0x4f')](_0x2bdd15['where'],{'$or':_['map'](_0x2bdd15['attributes'],function(_0x29e8be){var _0x21be9a={};_0x21be9a[_0x29e8be]={'$like':'%'+_0x11dc5f[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x21be9a;})});}_0x2bdd15[_0xd475('0xc2')]=db['User'];_0x2bdd15['as']=_0xd475('0x25');_0x2bdd15=_['merge']({},_0x2bdd15,_0x11dc5f[_0xd475('0x50')]);return _0x29ae7c[_0xd475('0xe8')]({'include':[_0x2bdd15]});}})[_0xd475('0x1b')](function(_0xb02234){if(_0xb02234){var _0x1db2fc={},_0x5ea4b9=[];for(var _0x5bf003=0x0;_0x5bf003<_0xb02234['length'];_0x5bf003+=0x1){for(var _0x3d2790=0x0,_0x3a58dd;_0x3d2790<_0xb02234[_0x5bf003][_0xd475('0x25')][_0xd475('0x47')];_0x3d2790+=0x1){_0x3a58dd=_0xb02234[_0x5bf003]['Agents'][_0x3d2790]['get']({'plain':!![]});_0x1db2fc[_0x3a58dd['id']]=_0x3a58dd;}}_0x1db2fc=_[_0xd475('0x111')](_0x1db2fc);for(var _0x2cd6ae=qs['offset'](_0x11dc5f['query'][_0xd475('0x15')]);_0x2cd6ae<_0x1db2fc['length']&&_0x5ea4b9['length']<qs['limit'](_0x11dc5f[_0xd475('0x3f')][_0xd475('0xce')]);_0x2cd6ae+=0x1){if(_0x1db2fc[_0x2cd6ae]){_0x5ea4b9[_0xd475('0x44')](_0x1db2fc[_0x2cd6ae]);}}return{'count':_0x1db2fc[_0xd475('0x47')],'rows':_0x5ea4b9};}})[_0xd475('0x1b')](respondWithResult(_0xc4cdf8,null))[_0xd475('0x4e')](handleError(_0xc4cdf8,null));};exports[_0xd475('0x20')]=function(_0x5c9918,_0x1606ec){if(_0x5c9918[_0xd475('0x24')]['id']==_0x5c9918[_0xd475('0x54')]['id']){return _0x1606ec[_0xd475('0x13')](0x1f4)['send']({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db[_0xd475('0x32')]['find']({'where':{'id':_0x5c9918[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x1606ec,null))['then'](removeEntity(_0x1606ec,null))[_0xd475('0x4e')](handleError(_0x1606ec,null));};exports['addChatInteractions']=function(_0x1e947d,_0x23005c){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x1e947d[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x23005c,null))['then'](function(_0xafc0eb){if(_0xafc0eb){return _0xafc0eb[_0xd475('0x112')](_0x1e947d[_0xd475('0x53')][_0xd475('0x57')],_[_0xd475('0x58')](_0x1e947d[_0xd475('0x53')],[_0xd475('0x57'),'id'])||{})['spread'](function(){for(var _0x26c983=0x0;_0x26c983<_0x1e947d['body'][_0xd475('0x57')][_0xd475('0x47')];_0x26c983+=0x1){socket[_0xd475('0x1e')](_0xd475('0x113'),{'ChatInteractionId':Number(_0x1e947d[_0xd475('0x53')][_0xd475('0x57')][_0x26c983]),'UserId':Number(_0x1e947d[_0xd475('0x54')]['id'])});}return _0x1e947d[_0xd475('0x53')][_0xd475('0x57')];});}})[_0xd475('0x1b')](respondWithResult(_0x23005c,null))[_0xd475('0x4e')](handleError(_0x23005c,null));};exports[_0xd475('0x114')]=function(_0xb9f5f9,_0x34caab){return db[_0xd475('0x32')]['find']({'where':{'id':_0xb9f5f9[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x34caab,null))['then'](function(_0x10489a){if(_0x10489a){return _0x10489a[_0xd475('0x114')](_0xb9f5f9[_0xd475('0x3f')][_0xd475('0x57')])[_0xd475('0x1b')](function(){if(_[_0xd475('0x115')](_0xb9f5f9['query'][_0xd475('0x57')])){for(var _0x389f9c=0x0;_0x389f9c<_0xb9f5f9[_0xd475('0x3f')]['ids'][_0xd475('0x47')];_0x389f9c+=0x1){socket['emit'](_0xd475('0x116'),{'ChatInteractionId':Number(_0xb9f5f9[_0xd475('0x3f')][_0xd475('0x57')][_0x389f9c]),'UserId':Number(_0xb9f5f9[_0xd475('0x54')]['id'])});}}else{socket['emit'](_0xd475('0x116'),{'ChatInteractionId':Number(_0xb9f5f9[_0xd475('0x3f')][_0xd475('0x57')]),'UserId':Number(_0xb9f5f9[_0xd475('0x54')]['id'])});}});}})[_0xd475('0x1b')](respondWithStatusCode(_0x34caab,null))[_0xd475('0x4e')](handleError(_0x34caab,null));};exports['addMailInteractions']=function(_0x3da1f5,_0xcb1b23){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x3da1f5['params']['id']}})['then'](handleEntityNotFound(_0xcb1b23,null))[_0xd475('0x1b')](function(_0x49838f){if(_0x49838f){return _0x49838f['addMailInteractions'](_0x3da1f5[_0xd475('0x53')]['ids'],_['omit'](_0x3da1f5[_0xd475('0x53')],['ids','id'])||{})[_0xd475('0x9c')](function(){for(var _0x3095e0=0x0;_0x3095e0<_0x3da1f5[_0xd475('0x53')]['ids'][_0xd475('0x47')];_0x3095e0+=0x1){socket[_0xd475('0x1e')]('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x3da1f5[_0xd475('0x53')][_0xd475('0x57')][_0x3095e0]),'UserId':Number(_0x3da1f5[_0xd475('0x54')]['id'])});}return _0x3da1f5[_0xd475('0x53')]['ids'];});}})[_0xd475('0x1b')](respondWithResult(_0xcb1b23,null))[_0xd475('0x4e')](handleError(_0xcb1b23,null));};exports[_0xd475('0x117')]=function(_0x44adb5,_0x55b14a){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x44adb5['params']['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x55b14a,null))['then'](function(_0x458591){if(_0x458591){return _0x458591[_0xd475('0x117')](_0x44adb5[_0xd475('0x3f')][_0xd475('0x57')])[_0xd475('0x1b')](function(){if(_[_0xd475('0x115')](_0x44adb5[_0xd475('0x3f')][_0xd475('0x57')])){for(var _0x26e7cb=0x0;_0x26e7cb<_0x44adb5[_0xd475('0x3f')]['ids'][_0xd475('0x47')];_0x26e7cb+=0x1){socket[_0xd475('0x1e')](_0xd475('0x118'),{'MailInteractionId':Number(_0x44adb5[_0xd475('0x3f')][_0xd475('0x57')][_0x26e7cb]),'UserId':Number(_0x44adb5[_0xd475('0x54')]['id'])});}}else{socket[_0xd475('0x1e')](_0xd475('0x118'),{'MailInteractionId':Number(_0x44adb5['query'][_0xd475('0x57')]),'UserId':Number(_0x44adb5['params']['id'])});}});}})[_0xd475('0x1b')](respondWithStatusCode(_0x55b14a,null))[_0xd475('0x4e')](handleError(_0x55b14a,null));};exports[_0xd475('0x119')]=function(_0x9b90a6,_0x517af6){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x9b90a6[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x517af6,null))[_0xd475('0x1b')](function(_0x3b3954){if(_0x3b3954){return _0x3b3954['addFaxInteractions'](_0x9b90a6[_0xd475('0x53')][_0xd475('0x57')],_['omit'](_0x9b90a6[_0xd475('0x53')],[_0xd475('0x57'),'id'])||{})[_0xd475('0x9c')](function(){for(var _0x31d1e7=0x0;_0x31d1e7<_0x9b90a6[_0xd475('0x53')]['ids'][_0xd475('0x47')];_0x31d1e7+=0x1){socket['emit']('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0x9b90a6[_0xd475('0x53')][_0xd475('0x57')][_0x31d1e7]),'UserId':Number(_0x9b90a6['params']['id'])});}return _0x9b90a6['body']['ids'];});}})[_0xd475('0x1b')](respondWithResult(_0x517af6,null))['catch'](handleError(_0x517af6,null));};exports['removeFaxInteractions']=function(_0x43403b,_0x2274ce){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x43403b[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x2274ce,null))[_0xd475('0x1b')](function(_0x2475d4){if(_0x2475d4){return _0x2475d4[_0xd475('0x11a')](_0x43403b[_0xd475('0x3f')]['ids'])[_0xd475('0x1b')](function(){if(_[_0xd475('0x115')](_0x43403b[_0xd475('0x3f')]['ids'])){for(var _0x42504e=0x0;_0x42504e<_0x43403b['query'][_0xd475('0x57')]['length'];_0x42504e+=0x1){socket[_0xd475('0x1e')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x43403b[_0xd475('0x3f')][_0xd475('0x57')][_0x42504e]),'UserId':Number(_0x43403b['params']['id'])});}}else{socket[_0xd475('0x1e')](_0xd475('0x11b'),{'FaxInteractionId':Number(_0x43403b[_0xd475('0x3f')][_0xd475('0x57')]),'UserId':Number(_0x43403b[_0xd475('0x54')]['id'])});}});}})['then'](respondWithStatusCode(_0x2274ce,null))[_0xd475('0x4e')](handleError(_0x2274ce,null));};exports[_0xd475('0x11c')]=function(_0x26340c,_0x39befc){return db[_0xd475('0x32')]['find']({'where':{'id':_0x26340c[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x39befc,null))[_0xd475('0x1b')](function(_0x206f1b){if(_0x206f1b){return _0x206f1b[_0xd475('0x11c')](_0x26340c[_0xd475('0x53')][_0xd475('0x57')],_['omit'](_0x26340c[_0xd475('0x53')],[_0xd475('0x57'),'id'])||{})[_0xd475('0x9c')](function(){for(var _0x2e2b5b=0x0;_0x2e2b5b<_0x26340c[_0xd475('0x53')][_0xd475('0x57')][_0xd475('0x47')];_0x2e2b5b+=0x1){socket[_0xd475('0x1e')](_0xd475('0x11d'),{'SmsInteractionId':Number(_0x26340c['body'][_0xd475('0x57')][_0x2e2b5b]),'UserId':Number(_0x26340c[_0xd475('0x54')]['id'])});}return _0x26340c['body'][_0xd475('0x57')];});}})[_0xd475('0x1b')](respondWithResult(_0x39befc,null))[_0xd475('0x4e')](handleError(_0x39befc,null));};exports[_0xd475('0x11e')]=function(_0x9ee167,_0x351a66){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x9ee167[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x351a66,null))[_0xd475('0x1b')](function(_0x1adca1){if(_0x1adca1){return _0x1adca1['removeSmsInteractions'](_0x9ee167[_0xd475('0x3f')][_0xd475('0x57')])[_0xd475('0x1b')](function(){if(_['isArray'](_0x9ee167[_0xd475('0x3f')]['ids'])){for(var _0x2ab899=0x0;_0x2ab899<_0x9ee167[_0xd475('0x3f')]['ids'][_0xd475('0x47')];_0x2ab899+=0x1){socket['emit'](_0xd475('0x11f'),{'SmsInteractionId':Number(_0x9ee167[_0xd475('0x3f')][_0xd475('0x57')][_0x2ab899]),'UserId':Number(_0x9ee167[_0xd475('0x54')]['id'])});}}else{socket[_0xd475('0x1e')](_0xd475('0x11f'),{'SmsInteractionId':Number(_0x9ee167[_0xd475('0x3f')][_0xd475('0x57')]),'UserId':Number(_0x9ee167[_0xd475('0x54')]['id'])});}});}})[_0xd475('0x1b')](respondWithStatusCode(_0x351a66,null))['catch'](handleError(_0x351a66,null));};exports[_0xd475('0x120')]=function(_0x23dfef,_0x188b1f){return db[_0xd475('0x32')]['find']({'where':{'id':_0x23dfef[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x188b1f,null))[_0xd475('0x1b')](function(_0x4afbb1){if(_0x4afbb1){return _0x4afbb1[_0xd475('0x120')](_0x23dfef[_0xd475('0x53')]['ids'],_[_0xd475('0x58')](_0x23dfef[_0xd475('0x53')],['ids','id'])||{})[_0xd475('0x9c')](function(){for(var _0x4fc866=0x0;_0x4fc866<_0x23dfef[_0xd475('0x53')]['ids']['length'];_0x4fc866+=0x1){socket[_0xd475('0x1e')]('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0x23dfef[_0xd475('0x53')][_0xd475('0x57')][_0x4fc866]),'UserId':Number(_0x23dfef[_0xd475('0x54')]['id'])});}return _0x23dfef[_0xd475('0x53')][_0xd475('0x57')];});}})[_0xd475('0x1b')](respondWithResult(_0x188b1f,null))[_0xd475('0x4e')](handleError(_0x188b1f,null));};exports[_0xd475('0x121')]=function(_0x200456,_0x336185){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x200456[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x336185,null))[_0xd475('0x1b')](function(_0x5a64a0){if(_0x5a64a0){return _0x5a64a0[_0xd475('0x121')](_0x200456[_0xd475('0x3f')][_0xd475('0x57')])['then'](function(){if(_[_0xd475('0x115')](_0x200456[_0xd475('0x3f')][_0xd475('0x57')])){for(var _0x1e92b4=0x0;_0x1e92b4<_0x200456[_0xd475('0x3f')][_0xd475('0x57')]['length'];_0x1e92b4+=0x1){socket[_0xd475('0x1e')](_0xd475('0x122'),{'OpenchannelInteractionId':Number(_0x200456[_0xd475('0x3f')][_0xd475('0x57')][_0x1e92b4]),'UserId':Number(_0x200456[_0xd475('0x54')]['id'])});}}else{socket['emit'](_0xd475('0x122'),{'OpenchannelInteractionId':Number(_0x200456[_0xd475('0x3f')][_0xd475('0x57')]),'UserId':Number(_0x200456[_0xd475('0x54')]['id'])});}});}})[_0xd475('0x1b')](respondWithStatusCode(_0x336185,null))[_0xd475('0x4e')](handleError(_0x336185,null));};exports['addWhatsappInteractions']=function(_0x5a90b5,_0xe8abd){return db[_0xd475('0x32')]['find']({'where':{'id':_0x5a90b5['params']['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0xe8abd,null))[_0xd475('0x1b')](function(_0x40b300){if(_0x40b300){return _0x40b300['addWhatsappInteractions'](_0x5a90b5['body'][_0xd475('0x57')],_[_0xd475('0x58')](_0x5a90b5[_0xd475('0x53')],[_0xd475('0x57'),'id'])||{})['spread'](function(){for(var _0x21d774=0x0;_0x21d774<_0x5a90b5[_0xd475('0x53')][_0xd475('0x57')][_0xd475('0x47')];_0x21d774+=0x1){socket[_0xd475('0x1e')](_0xd475('0x123'),{'WhatsappInteractionId':Number(_0x5a90b5[_0xd475('0x53')]['ids'][_0x21d774]),'UserId':Number(_0x5a90b5[_0xd475('0x54')]['id'])});}return _0x5a90b5[_0xd475('0x53')][_0xd475('0x57')];});}})[_0xd475('0x1b')](respondWithResult(_0xe8abd,null))[_0xd475('0x4e')](handleError(_0xe8abd,null));};exports['removeWhatsappInteractions']=function(_0x57d0ba,_0x140229){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x57d0ba[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x140229,null))[_0xd475('0x1b')](function(_0x358c03){if(_0x358c03){return _0x358c03[_0xd475('0x124')](_0x57d0ba[_0xd475('0x3f')][_0xd475('0x57')]);}})[_0xd475('0x1b')](respondWithStatusCode(_0x140229,null))[_0xd475('0x4e')](handleError(_0x140229,null));};exports[_0xd475('0x125')]=function(_0xc86ed3,_0x3a18fe){var _0x474547={};var _0x49249f={};var _0x2264c0;var _0x71b3d3;return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0xc86ed3['params']['id']}})['then'](handleEntityNotFound(_0x3a18fe,null))[_0xd475('0x1b')](function(_0x1ed9a0){if(_0x1ed9a0){_0x2264c0=_0x1ed9a0;_0x49249f[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0x126')][_0xd475('0xc4')]);_0x49249f[_0xd475('0x3f')]=_['keys'](_0xc86ed3[_0xd475('0x3f')]);_0x49249f[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x49249f[_0xd475('0xc2')],_0x49249f[_0xd475('0x3f')]);_0x474547[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x49249f[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0xc86ed3[_0xd475('0x3f')][_0xd475('0xc7')]));_0x474547['attributes']=_0x474547[_0xd475('0x43')][_0xd475('0x47')]?_0x474547[_0xd475('0x43')]:_0x49249f[_0xd475('0xc2')];_0x474547['order']=qs[_0xd475('0xc9')](_0xc86ed3['query']['sort']);_0x474547[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0xc86ed3[_0xd475('0x3f')],_0x49249f[_0xd475('0xc5')]));if(_0xc86ed3[_0xd475('0x3f')][_0xd475('0x36')]){_0x474547[_0xd475('0xca')]=_[_0xd475('0x4f')](_0x474547[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x474547[_0xd475('0x43')],function(_0x252ab4){var _0x169b63={};_0x169b63[_0x252ab4]={'$like':'%'+_0xc86ed3[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x169b63;})});}_0x474547=_[_0xd475('0x4f')]({},_0x474547,_0xc86ed3[_0xd475('0x50')]);return _0x2264c0[_0xd475('0x125')](_0x474547);}})[_0xd475('0x1b')](function(_0x4aceca){if(_0x4aceca){_0x71b3d3=_0x4aceca[_0xd475('0x47')];if(!_0xc86ed3[_0xd475('0x3f')][_0xd475('0xd0')]('nolimit')){_0x474547[_0xd475('0xce')]=qs[_0xd475('0xce')](_0xc86ed3[_0xd475('0x3f')][_0xd475('0xce')]);_0x474547[_0xd475('0x15')]=qs['offset'](_0xc86ed3[_0xd475('0x3f')]['offset']);}return _0x2264c0[_0xd475('0x125')](_0x474547);}})[_0xd475('0x1b')](function(_0x237c13){if(_0x237c13){return _0x237c13?{'count':_0x71b3d3,'rows':_0x237c13}:null;}})['then'](respondWithResult(_0x3a18fe,null))['catch'](handleError(_0x3a18fe,null));};exports[_0xd475('0x127')]=function(_0x138de2,_0x22e884){var _0x22eb57={};var _0x240760={};var _0x5ad35e;var _0x837ef7;return db[_0xd475('0x32')]['findOne']({'where':{'id':_0x138de2['params']['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x22e884,null))[_0xd475('0x1b')](function(_0x26c79b){if(_0x26c79b){_0x5ad35e=_0x26c79b;_0x240760['model']=_[_0xd475('0xc3')](db['FaxAccount'][_0xd475('0xc4')]);_0x240760[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x138de2['query']);_0x240760[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x240760['model'],_0x240760[_0xd475('0x3f')]);_0x22eb57['attributes']=_[_0xd475('0xc6')](_0x240760[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x138de2['query']['fields']));_0x22eb57[_0xd475('0x43')]=_0x22eb57['attributes'][_0xd475('0x47')]?_0x22eb57[_0xd475('0x43')]:_0x240760['model'];_0x22eb57['order']=qs[_0xd475('0xc9')](_0x138de2[_0xd475('0x3f')][_0xd475('0xc9')]);_0x22eb57[_0xd475('0xca')]=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x138de2[_0xd475('0x3f')],_0x240760[_0xd475('0xc5')]));if(_0x138de2[_0xd475('0x3f')][_0xd475('0x36')]){_0x22eb57[_0xd475('0xca')]=_[_0xd475('0x4f')](_0x22eb57[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x22eb57['attributes'],function(_0x4450b8){var _0x4eecd9={};_0x4eecd9[_0x4450b8]={'$like':'%'+_0x138de2[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x4eecd9;})});}_0x22eb57=_[_0xd475('0x4f')]({},_0x22eb57,_0x138de2[_0xd475('0x50')]);return _0x5ad35e[_0xd475('0x127')](_0x22eb57);}})[_0xd475('0x1b')](function(_0x9204fc){if(_0x9204fc){_0x837ef7=_0x9204fc[_0xd475('0x47')];if(!_0x138de2['query'][_0xd475('0xd0')](_0xd475('0xcd'))){_0x22eb57[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x138de2[_0xd475('0x3f')]['limit']);_0x22eb57[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x138de2[_0xd475('0x3f')][_0xd475('0x15')]);}return _0x5ad35e[_0xd475('0x127')](_0x22eb57);}})[_0xd475('0x1b')](function(_0x1a096f){if(_0x1a096f){return _0x1a096f?{'count':_0x837ef7,'rows':_0x1a096f}:null;}})[_0xd475('0x1b')](respondWithResult(_0x22e884,null))[_0xd475('0x4e')](handleError(_0x22e884,null));};exports[_0xd475('0x128')]=function(_0x57b0f2,_0x24392d){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x57b0f2[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x24392d,null))[_0xd475('0x1b')](function(_0x9afdef){if(_0x9afdef){return _0x9afdef[_0xd475('0x128')](_0x57b0f2['body']['ids'],_['omit'](_0x57b0f2['body'],['ids','id'])||{});}})['then'](respondWithResult(_0x24392d,null))['catch'](handleError(_0x24392d,null));};exports[_0xd475('0x129')]=function(_0x19bd7d,_0x343788){return db[_0xd475('0x32')]['find']({'where':{'id':_0x19bd7d[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x343788,null))['then'](function(_0x5f4bbb){if(_0x5f4bbb){return _0x5f4bbb[_0xd475('0x129')](_0x19bd7d[_0xd475('0x3f')][_0xd475('0x57')]);}})[_0xd475('0x1b')](respondWithStatusCode(_0x343788,null))['catch'](handleError(_0x343788,null));};exports[_0xd475('0x12a')]=function(_0xd74020,_0x3429bd){var _0x427a56={};var _0x3028e2={};var _0x205e5d;var _0x12295a;return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0xd74020[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x3429bd,null))['then'](function(_0x26d132){if(_0x26d132){_0x205e5d=_0x26d132;_0x3028e2[_0xd475('0xc2')]=_['keys'](db[_0xd475('0x12b')][_0xd475('0xc4')]);_0x3028e2[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0xd74020[_0xd475('0x3f')]);_0x3028e2[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x3028e2['model'],_0x3028e2[_0xd475('0x3f')]);_0x427a56[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x3028e2[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0xd74020[_0xd475('0x3f')]['fields']));_0x427a56[_0xd475('0x43')]=_0x427a56[_0xd475('0x43')][_0xd475('0x47')]?_0x427a56[_0xd475('0x43')]:_0x3028e2[_0xd475('0xc2')];_0x427a56[_0xd475('0xc8')]=qs[_0xd475('0xc9')](_0xd74020[_0xd475('0x3f')][_0xd475('0xc9')]);_0x427a56[_0xd475('0xca')]=qs['filters'](_[_0xd475('0xcb')](_0xd74020[_0xd475('0x3f')],_0x3028e2[_0xd475('0xc5')]));if(_0xd74020[_0xd475('0x3f')][_0xd475('0x36')]){_0x427a56[_0xd475('0xca')]=_['merge'](_0x427a56['where'],{'$or':_[_0xd475('0x33')](_0x427a56[_0xd475('0x43')],function(_0x5b79f2){var _0x24a712={};_0x24a712[_0x5b79f2]={'$like':'%'+_0xd74020[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x24a712;})});}_0x427a56=_['merge']({},_0x427a56,_0xd74020[_0xd475('0x50')]);return _0x205e5d[_0xd475('0x12a')](_0x427a56);}})[_0xd475('0x1b')](function(_0x2fe45f){if(_0x2fe45f){_0x12295a=_0x2fe45f[_0xd475('0x47')];if(!_0xd74020[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0x427a56['limit']=qs[_0xd475('0xce')](_0xd74020['query']['limit']);_0x427a56[_0xd475('0x15')]=qs[_0xd475('0x15')](_0xd74020[_0xd475('0x3f')]['offset']);}return _0x205e5d['getMailAccounts'](_0x427a56);}})['then'](function(_0x339505){if(_0x339505){return _0x339505?{'count':_0x12295a,'rows':_0x339505}:null;}})[_0xd475('0x1b')](respondWithResult(_0x3429bd,null))[_0xd475('0x4e')](handleError(_0x3429bd,null));};exports[_0xd475('0x12c')]=function(_0x9a046c,_0x55a41f){return db[_0xd475('0x32')]['find']({'where':{'id':_0x9a046c[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x55a41f,null))[_0xd475('0x1b')](function(_0x519d5d){if(_0x519d5d){return _0x519d5d[_0xd475('0x12c')](_0x9a046c['body'][_0xd475('0x57')],_[_0xd475('0x58')](_0x9a046c[_0xd475('0x53')],['ids','id'])||{});}})[_0xd475('0x1b')](respondWithResult(_0x55a41f,null))[_0xd475('0x4e')](handleError(_0x55a41f,null));};exports[_0xd475('0x12d')]=function(_0x166475,_0x24f918){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x166475[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x24f918,null))[_0xd475('0x1b')](function(_0x4bf073){if(_0x4bf073){return _0x4bf073[_0xd475('0x12d')](_0x166475[_0xd475('0x3f')]['ids']);}})[_0xd475('0x1b')](respondWithStatusCode(_0x24f918,null))[_0xd475('0x4e')](handleError(_0x24f918,null));};exports[_0xd475('0x12e')]=function(_0x5f1273,_0x10e0bd){var _0x1def68={};var _0x14cbc6={};var _0x1ae7f4;var _0x1ce832;return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x5f1273['params']['id']}})['then'](handleEntityNotFound(_0x10e0bd,null))[_0xd475('0x1b')](function(_0x130f7f){if(_0x130f7f){_0x1ae7f4=_0x130f7f;_0x14cbc6[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0x12f')][_0xd475('0xc4')]);_0x14cbc6[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x5f1273[_0xd475('0x3f')]);_0x14cbc6[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x14cbc6[_0xd475('0xc2')],_0x14cbc6['query']);_0x1def68[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x14cbc6['model'],qs[_0xd475('0xc7')](_0x5f1273[_0xd475('0x3f')][_0xd475('0xc7')]));_0x1def68[_0xd475('0x43')]=_0x1def68[_0xd475('0x43')][_0xd475('0x47')]?_0x1def68['attributes']:_0x14cbc6[_0xd475('0xc2')];_0x1def68[_0xd475('0xc8')]=qs[_0xd475('0xc9')](_0x5f1273['query'][_0xd475('0xc9')]);_0x1def68['where']=qs[_0xd475('0xc5')](_['pick'](_0x5f1273[_0xd475('0x3f')],_0x14cbc6['filters']));if(_0x5f1273[_0xd475('0x3f')][_0xd475('0x36')]){_0x1def68['where']=_['merge'](_0x1def68['where'],{'$or':_[_0xd475('0x33')](_0x1def68['attributes'],function(_0x1786c8){var _0x466ed3={};_0x466ed3[_0x1786c8]={'$like':'%'+_0x5f1273[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x466ed3;})});}_0x1def68=_[_0xd475('0x4f')]({},_0x1def68,_0x5f1273[_0xd475('0x50')]);return _0x1ae7f4[_0xd475('0x12e')](_0x1def68);}})[_0xd475('0x1b')](function(_0x3bf658){if(_0x3bf658){_0x1ce832=_0x3bf658[_0xd475('0x47')];if(!_0x5f1273[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0x1def68[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x5f1273[_0xd475('0x3f')]['limit']);_0x1def68[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x5f1273[_0xd475('0x3f')][_0xd475('0x15')]);}return _0x1ae7f4[_0xd475('0x12e')](_0x1def68);}})[_0xd475('0x1b')](function(_0xcf0804){if(_0xcf0804){return _0xcf0804?{'count':_0x1ce832,'rows':_0xcf0804}:null;}})[_0xd475('0x1b')](respondWithResult(_0x10e0bd,null))['catch'](handleError(_0x10e0bd,null));};exports[_0xd475('0x130')]=function(_0x402202,_0x55589c){return db['User']['find']({'where':{'id':_0x402202[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x55589c,null))[_0xd475('0x1b')](function(_0x873946){if(_0x873946){return _0x873946[_0xd475('0x130')](_0x402202['body'][_0xd475('0x57')],_[_0xd475('0x58')](_0x402202[_0xd475('0x53')],[_0xd475('0x57'),'id'])||{});}})[_0xd475('0x1b')](respondWithResult(_0x55589c,null))[_0xd475('0x4e')](handleError(_0x55589c,null));};exports[_0xd475('0x131')]=function(_0x516fc6,_0x4a0fe1){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x516fc6[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x4a0fe1,null))[_0xd475('0x1b')](function(_0x1db5f7){if(_0x1db5f7){return _0x1db5f7[_0xd475('0x131')](_0x516fc6[_0xd475('0x3f')]['ids']);}})[_0xd475('0x1b')](respondWithStatusCode(_0x4a0fe1,null))['catch'](handleError(_0x4a0fe1,null));};exports['getSmsAccounts']=function(_0x3aee4a,_0x57fdfd){var _0x56116a={};var _0x1aa170={};var _0xfff336;var _0xd21b5a;return db['User']['findOne']({'where':{'id':_0x3aee4a[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x57fdfd,null))[_0xd475('0x1b')](function(_0x2a35b9){if(_0x2a35b9){_0xfff336=_0x2a35b9;_0x1aa170[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0x132')][_0xd475('0xc4')]);_0x1aa170[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x3aee4a['query']);_0x1aa170[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x1aa170[_0xd475('0xc2')],_0x1aa170[_0xd475('0x3f')]);_0x56116a[_0xd475('0x43')]=_['intersection'](_0x1aa170[_0xd475('0xc2')],qs[_0xd475('0xc7')](_0x3aee4a[_0xd475('0x3f')][_0xd475('0xc7')]));_0x56116a[_0xd475('0x43')]=_0x56116a['attributes']['length']?_0x56116a[_0xd475('0x43')]:_0x1aa170[_0xd475('0xc2')];_0x56116a[_0xd475('0xc8')]=qs[_0xd475('0xc9')](_0x3aee4a['query'][_0xd475('0xc9')]);_0x56116a['where']=qs[_0xd475('0xc5')](_[_0xd475('0xcb')](_0x3aee4a[_0xd475('0x3f')],_0x1aa170[_0xd475('0xc5')]));if(_0x3aee4a['query']['filter']){_0x56116a['where']=_[_0xd475('0x4f')](_0x56116a[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x56116a[_0xd475('0x43')],function(_0x3567a8){var _0x21c9ae={};_0x21c9ae[_0x3567a8]={'$like':'%'+_0x3aee4a[_0xd475('0x3f')]['filter']+'%'};return _0x21c9ae;})});}_0x56116a=_[_0xd475('0x4f')]({},_0x56116a,_0x3aee4a[_0xd475('0x50')]);return _0xfff336[_0xd475('0x133')](_0x56116a);}})[_0xd475('0x1b')](function(_0x18b22b){if(_0x18b22b){_0xd21b5a=_0x18b22b[_0xd475('0x47')];if(!_0x3aee4a[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0x56116a[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x3aee4a[_0xd475('0x3f')][_0xd475('0xce')]);_0x56116a['offset']=qs['offset'](_0x3aee4a[_0xd475('0x3f')][_0xd475('0x15')]);}return _0xfff336[_0xd475('0x133')](_0x56116a);}})[_0xd475('0x1b')](function(_0x50d817){if(_0x50d817){return _0x50d817?{'count':_0xd21b5a,'rows':_0x50d817}:null;}})[_0xd475('0x1b')](respondWithResult(_0x57fdfd,null))[_0xd475('0x4e')](handleError(_0x57fdfd,null));};exports[_0xd475('0x134')]=function(_0x3a767c,_0x2c243a){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x3a767c[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x2c243a,null))[_0xd475('0x1b')](function(_0x1e8e08){if(_0x1e8e08){return _0x1e8e08[_0xd475('0x134')](_0x3a767c['body'][_0xd475('0x57')],_[_0xd475('0x58')](_0x3a767c[_0xd475('0x53')],['ids','id'])||{});}})[_0xd475('0x1b')](respondWithResult(_0x2c243a,null))[_0xd475('0x4e')](handleError(_0x2c243a,null));};exports[_0xd475('0x135')]=function(_0x12b3ea,_0x502025){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x12b3ea['params']['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x502025,null))['then'](function(_0x30ed33){if(_0x30ed33){return _0x30ed33[_0xd475('0x135')](_0x12b3ea[_0xd475('0x3f')]['ids']);}})[_0xd475('0x1b')](respondWithStatusCode(_0x502025,null))[_0xd475('0x4e')](handleError(_0x502025,null));};exports[_0xd475('0x136')]=function(_0x226f59,_0x198631){var _0x41a60d={};var _0x29ed0f={};var _0x98d8ba;var _0x4afb14;return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x226f59[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x198631,null))['then'](function(_0x33e8ef){if(_0x33e8ef){_0x98d8ba=_0x33e8ef;_0x29ed0f[_0xd475('0xc2')]=_[_0xd475('0xc3')](db[_0xd475('0x137')][_0xd475('0xc4')]);_0x29ed0f[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x226f59[_0xd475('0x3f')]);_0x29ed0f[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x29ed0f[_0xd475('0xc2')],_0x29ed0f[_0xd475('0x3f')]);_0x41a60d[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x29ed0f[_0xd475('0xc2')],qs['fields'](_0x226f59[_0xd475('0x3f')][_0xd475('0xc7')]));_0x41a60d[_0xd475('0x43')]=_0x41a60d[_0xd475('0x43')][_0xd475('0x47')]?_0x41a60d[_0xd475('0x43')]:_0x29ed0f['model'];_0x41a60d[_0xd475('0xc8')]=qs[_0xd475('0xc9')](_0x226f59[_0xd475('0x3f')]['sort']);_0x41a60d[_0xd475('0xca')]=qs[_0xd475('0xc5')](_['pick'](_0x226f59[_0xd475('0x3f')],_0x29ed0f[_0xd475('0xc5')]));if(_0x226f59[_0xd475('0x3f')][_0xd475('0x36')]){_0x41a60d['where']=_['merge'](_0x41a60d[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x41a60d[_0xd475('0x43')],function(_0x3ba020){var _0x3f7e83={};_0x3f7e83[_0x3ba020]={'$like':'%'+_0x226f59['query'][_0xd475('0x36')]+'%'};return _0x3f7e83;})});}_0x41a60d=_[_0xd475('0x4f')]({},_0x41a60d,_0x226f59[_0xd475('0x50')]);return _0x98d8ba[_0xd475('0x136')](_0x41a60d);}})[_0xd475('0x1b')](function(_0x2194e0){if(_0x2194e0){_0x4afb14=_0x2194e0[_0xd475('0x47')];if(!_0x226f59[_0xd475('0x3f')][_0xd475('0xd0')]('nolimit')){_0x41a60d['limit']=qs[_0xd475('0xce')](_0x226f59[_0xd475('0x3f')][_0xd475('0xce')]);_0x41a60d[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x226f59['query'][_0xd475('0x15')]);}return _0x98d8ba[_0xd475('0x136')](_0x41a60d);}})['then'](function(_0x1883bb){if(_0x1883bb){return _0x1883bb?{'count':_0x4afb14,'rows':_0x1883bb}:null;}})['then'](respondWithResult(_0x198631,null))[_0xd475('0x4e')](handleError(_0x198631,null));};exports[_0xd475('0x138')]=function(_0x4db3bc,_0x18942e){return db['User'][_0xd475('0x2a')]({'where':{'id':_0x4db3bc[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x18942e,null))[_0xd475('0x1b')](function(_0x46d087){if(_0x46d087){return _0x46d087['addChatWebsites'](_0x4db3bc['body'][_0xd475('0x57')],_['omit'](_0x4db3bc[_0xd475('0x53')],[_0xd475('0x57'),'id'])||{});}})['then'](respondWithResult(_0x18942e,null))[_0xd475('0x4e')](handleError(_0x18942e,null));};exports[_0xd475('0x139')]=function(_0x211cf7,_0x169100){return db['User']['find']({'where':{'id':_0x211cf7['params']['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x169100,null))[_0xd475('0x1b')](function(_0x23ce64){if(_0x23ce64){return _0x23ce64[_0xd475('0x139')](_0x211cf7[_0xd475('0x3f')][_0xd475('0x57')]);}})[_0xd475('0x1b')](respondWithStatusCode(_0x169100,null))[_0xd475('0x4e')](handleError(_0x169100,null));};exports['getWhatsappAccounts']=function(_0x2f3347,_0x2ebea1){var _0x2dc070={};var _0x55e0e3={};var _0x5b4d51;var _0x368a40;return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x2f3347[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x2ebea1,null))[_0xd475('0x1b')](function(_0x1623b9){if(_0x1623b9){_0x5b4d51=_0x1623b9;_0x55e0e3['model']=_[_0xd475('0xc3')](db[_0xd475('0x13a')][_0xd475('0xc4')]);_0x55e0e3[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0x2f3347[_0xd475('0x3f')]);_0x55e0e3[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x55e0e3[_0xd475('0xc2')],_0x55e0e3[_0xd475('0x3f')]);_0x2dc070['attributes']=_[_0xd475('0xc6')](_0x55e0e3[_0xd475('0xc2')],qs['fields'](_0x2f3347[_0xd475('0x3f')][_0xd475('0xc7')]));_0x2dc070['attributes']=_0x2dc070[_0xd475('0x43')][_0xd475('0x47')]?_0x2dc070[_0xd475('0x43')]:_0x55e0e3[_0xd475('0xc2')];_0x2dc070['order']=qs['sort'](_0x2f3347[_0xd475('0x3f')][_0xd475('0xc9')]);_0x2dc070['where']=qs['filters'](_[_0xd475('0xcb')](_0x2f3347['query'],_0x55e0e3[_0xd475('0xc5')]));if(_0x2f3347['query']['filter']){_0x2dc070[_0xd475('0xca')]=_['merge'](_0x2dc070[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0x2dc070[_0xd475('0x43')],function(_0x36afdb){var _0x13803d={};_0x13803d[_0x36afdb]={'$like':'%'+_0x2f3347['query'][_0xd475('0x36')]+'%'};return _0x13803d;})});}_0x2dc070=_[_0xd475('0x4f')]({},_0x2dc070,_0x2f3347[_0xd475('0x50')]);return _0x5b4d51[_0xd475('0x13b')](_0x2dc070);}})['then'](function(_0x637061){if(_0x637061){_0x368a40=_0x637061[_0xd475('0x47')];if(!_0x2f3347[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0x2dc070[_0xd475('0xce')]=qs[_0xd475('0xce')](_0x2f3347[_0xd475('0x3f')][_0xd475('0xce')]);_0x2dc070[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x2f3347[_0xd475('0x3f')]['offset']);}return _0x5b4d51[_0xd475('0x13b')](_0x2dc070);}})[_0xd475('0x1b')](function(_0x4d0bf4){if(_0x4d0bf4){return _0x4d0bf4?{'count':_0x368a40,'rows':_0x4d0bf4}:null;}})[_0xd475('0x1b')](respondWithResult(_0x2ebea1,null))[_0xd475('0x4e')](handleError(_0x2ebea1,null));};exports['addWhatsappAccounts']=function(_0x4d550a,_0x2d0a77){return db['User'][_0xd475('0x2a')]({'where':{'id':_0x4d550a[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x2d0a77,null))[_0xd475('0x1b')](function(_0x5e496d){if(_0x5e496d){return _0x5e496d[_0xd475('0x13c')](_0x4d550a[_0xd475('0x53')]['ids'],_[_0xd475('0x58')](_0x4d550a[_0xd475('0x53')],['ids','id'])||{});}})[_0xd475('0x1b')](respondWithResult(_0x2d0a77,null))['catch'](handleError(_0x2d0a77,null));};exports[_0xd475('0x13d')]=function(_0x22c430,_0x2aabf8){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x22c430[_0xd475('0x54')]['id']}})['then'](handleEntityNotFound(_0x2aabf8,null))['then'](function(_0xaae8d2){if(_0xaae8d2){return _0xaae8d2[_0xd475('0x13d')](_0x22c430['query']['ids']);}})['then'](respondWithStatusCode(_0x2aabf8,null))[_0xd475('0x4e')](handleError(_0x2aabf8,null));};exports[_0xd475('0x13e')]=function(_0xedac75,_0x1c3a4c){var _0xa0af2b={},_0x59ae48={},_0x1e4e9f={'count':0x0,'rows':[]};var _0xb98b0f=db[_0xd475('0x13f')][_0xd475('0xc4')];_0x59ae48[_0xd475('0xc2')]=_[_0xd475('0xc3')](_0xb98b0f);_0x59ae48[_0xd475('0x3f')]=_[_0xd475('0xc3')](_0xedac75[_0xd475('0x3f')]);_0x59ae48[_0xd475('0xc5')]=_[_0xd475('0xc6')](_0x59ae48[_0xd475('0xc2')],_0x59ae48[_0xd475('0x3f')]);_0x59ae48['filters']=_[_0xd475('0xba')](_0x59ae48[_0xd475('0xc5')],[_0xd475('0x140'),_0xd475('0x141'),'$gt',_0xd475('0x142'),_0xd475('0x143'),_0xd475('0x144'),_0xd475('0x145'),'$eq',_0xd475('0x146'),_0xd475('0x147'),_0xd475('0x148'),_0xd475('0x149'),_0xd475('0x14a'),'$like',_0xd475('0x14b'),'$iLike',_0xd475('0x14c'),_0xd475('0x14d'),_0xd475('0x14e'),_0xd475('0x14f'),_0xd475('0x150'),'$any']);_0xa0af2b[_0xd475('0x43')]=_[_0xd475('0xc6')](_0x59ae48['model'],qs['fields'](_0xedac75['query'][_0xd475('0xc7')]));_0xa0af2b['attributes']=_0xa0af2b[_0xd475('0x43')]['length']?_0xa0af2b['attributes']:_0x59ae48[_0xd475('0xc2')];if(!_0xedac75[_0xd475('0x3f')][_0xd475('0xd0')](_0xd475('0xcd'))){_0xa0af2b[_0xd475('0xce')]=qs[_0xd475('0xce')](_0xedac75[_0xd475('0x3f')][_0xd475('0xce')]);_0xa0af2b['offset']=qs['offset'](_0xedac75[_0xd475('0x3f')][_0xd475('0x15')]);}_0xa0af2b[_0xd475('0xc8')]=qs[_0xd475('0xc9')](_0xedac75[_0xd475('0x3f')][_0xd475('0xc9')]);_0xa0af2b[_0xd475('0xca')]=qs['filters'](_[_0xd475('0xcb')](_0xedac75[_0xd475('0x3f')],_0x59ae48[_0xd475('0xc5')]));if(_0xedac75[_0xd475('0x3f')][_0xd475('0x36')]){_0xa0af2b[_0xd475('0xca')]=_[_0xd475('0x4f')](_0xa0af2b[_0xd475('0xca')],{'$or':_[_0xd475('0x33')](_0xa0af2b[_0xd475('0x43')],function(_0x17df0b){var _0x4dcac2={};_0x4dcac2[_0x17df0b]={'$like':'%'+_0xedac75[_0xd475('0x3f')][_0xd475('0x36')]+'%'};return _0x4dcac2;})});}_0xa0af2b['where']={'$and':[_0xa0af2b[_0xd475('0xca')],{'$or':[{'UserId':_0xedac75['params']['id']},{'OwnerId':_0xedac75[_0xd475('0x54')]['id']}]}]};_0xa0af2b=_['merge']({},_0xa0af2b,_0xedac75[_0xd475('0x50')]);var _0x535fd4={'where':_0xa0af2b[_0xd475('0xca')]};return db[_0xd475('0x13f')][_0xd475('0x17')](_0x535fd4)[_0xd475('0x1b')](function(_0x588656){_0x1e4e9f['count']=_0x588656;if(_0xedac75[_0xd475('0x3f')][_0xd475('0x3d')]){_0xa0af2b[_0xd475('0x3e')]=[{'attributes':['id',_0xd475('0x151'),_0xd475('0x152'),_0xd475('0x153')],'model':db[_0xd475('0x154')],'as':_0xd475('0x155')},{'attributes':['id',_0xd475('0x30'),_0xd475('0x156')],'model':db[_0xd475('0xa0')],'as':_0xd475('0xcc')}];}return db[_0xd475('0x13f')][_0xd475('0x45')](_0xa0af2b);})['then'](function(_0x3e95c3){_0x1e4e9f[_0xd475('0x46')]=_0x3e95c3;return _0x1e4e9f;})[_0xd475('0x1b')](respondWithFilteredResult(_0x1c3a4c,_0xa0af2b))[_0xd475('0x4e')](handleError(_0x1c3a4c,null));};exports['getApiKey']=function(_0x4f0cc0,_0x5226b1){if(!_[_0xd475('0x5f')](_0x4f0cc0['user']['id'])&&(_0x4f0cc0[_0xd475('0x24')]['role']==_0xd475('0x22')||_0x4f0cc0[_0xd475('0x24')][_0xd475('0x1c')]==_0xd475('0x24'))){return db[_0xd475('0x32')][_0xd475('0x8d')]({'where':{'id':_0x4f0cc0['params']['id']},'raw':!![]})[_0xd475('0x1b')](function(_0x273226){return authService[_0xd475('0x157')](_0x273226);})[_0xd475('0x1b')](function(_0x53c45f){if(_0x53c45f){return _0x5226b1[_0xd475('0x13')](0xc8)[_0xd475('0x14')]({'api_key':_0x53c45f[_0xd475('0x158')]});}else{return _0x5226b1[_0xd475('0x13')](0xcc)[_0xd475('0x14')]({'message':'No\x20API\x20access\x20key\x20found!'});}})[_0xd475('0x4e')](handleError(_0x5226b1,0x193));}else{return _0x5226b1['status'](0x191)[_0xd475('0x14')]({'message':_0xd475('0x159')});}};exports[_0xd475('0x15a')]=function(_0x3a915f,_0x7b6e7e){if(!_[_0xd475('0x5f')](_0x3a915f['user']['id'])&&(_0x3a915f[_0xd475('0x24')][_0xd475('0x1c')]==_0xd475('0x22')||_0x3a915f[_0xd475('0x24')][_0xd475('0x1c')]=='user')){return db['User']['find']({'where':{'id':_0x3a915f[_0xd475('0x54')]['id']}})['then'](function(_0x1ddafa){return authService[_0xd475('0x15b')](_0x1ddafa);})['then'](function(_0x1cadf0){return db['User']['update']({'apiKeyIat':_0x1cadf0[_0xd475('0x15c')],'apiKeyNonce':_0x1cadf0[_0xd475('0x15d')]},{'where':{'id':_0x3a915f[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](function(){return _0x7b6e7e['status'](0xc8)['json']({'api_key':_0x1cadf0['token']});});})[_0xd475('0x4e')](handleError(_0x7b6e7e,0x193));}else{return _0x7b6e7e[_0xd475('0x13')](0x191)[_0xd475('0x14')]({'message':_0xd475('0x159')});}};exports[_0xd475('0x15e')]=function(_0x57d395,_0x582e20){if(!_[_0xd475('0x5f')](_0x57d395[_0xd475('0x24')]['id'])&&(_0x57d395[_0xd475('0x24')][_0xd475('0x1c')]==_0xd475('0x22')||_0x57d395[_0xd475('0x24')]['role']==_0xd475('0x24'))){return db[_0xd475('0x32')][_0xd475('0x2a')]({'where':{'id':_0x57d395[_0xd475('0x54')]['id']}})[_0xd475('0x1b')](handleEntityNotFound(_0x582e20,null))['then'](function(_0x253860){if(_0x253860&&_0x253860[_0xd475('0x15f')]&&_0x253860[_0xd475('0x160')])return _0x253860;else throw{'message':_0xd475('0x161')};})['then'](function(){return db[_0xd475('0x32')][_0xd475('0x1a')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x57d395[_0xd475('0x54')]['id']}});})[_0xd475('0x1b')](respondWithStatusCode(_0x582e20,0xc8))[_0xd475('0x4e')](handleError(_0x582e20,0x193));}else{return _0x582e20['status'](0x191)[_0xd475('0x14')]({'message':_0xd475('0x159')});}};exports[_0xd475('0x162')]=function(_0x1b5174,_0x26ab71){var _0x47daa4=_0x1b5174[_0xd475('0x24')]['get']({'plain':!![]});if(!_0x47daa4){return _0x26ab71[_0xd475('0x13')](0x191)['send'](_0xd475('0x163'));}else{Promise['resolve']()['then'](function(){if(_0x1b5174[_0xd475('0x3f')][_0xd475('0x40')]!==_0xd475('0x41'))return;return _0x1b5174['user'][_0xd475('0x164')]();})[_0xd475('0x1b')](function(_0x79d759){if(!_0x79d759)return;return _0x79d759[_0xd475('0x21')]({'plain':!![]});})[_0xd475('0x1b')](function(_0x592af6){_0x47daa4['userSetting']=_0x592af6;return _0x26ab71[_0xd475('0x13')](0xc8)[_0xd475('0x14')](_0x47daa4);});}};exports[_0xd475('0x165')]=function(_0x31ae4b,_0x1fb94e){var _0x36a9df={'offset':0x0};var _0x2cc245={'count':0x0,'rows':[]};var _0x219db7=[_0xd475('0x166'),_0xd475('0x167'),_0xd475('0x168')];var _0x88eb41=[];var _0x242255=[];var _0x4a0daa=[];var _0x2b29b0=_0x31ae4b[_0xd475('0x3f')]['teams'];var _0x3f8a61=_0x31ae4b[_0xd475('0x3f')]['queues'];var _0x8dbcbf=_0x31ae4b[_0xd475('0x3f')][_0xd475('0x36')];return Promise[_0xd475('0xf2')]()[_0xd475('0x1b')](function(){if(!_0x2b29b0){return[];}return db[_0xd475('0x101')][_0xd475('0x45')]({'attributes':['id',_0xd475('0x30')],'where':{'id':_0x2b29b0}});})[_0xd475('0x1b')](function(_0x564657){_0x4a0daa=_0x564657;if(!_0x3f8a61){return[];}return db[_0xd475('0xa0')][_0xd475('0x45')]({'attributes':['id','name'],'type':_0xd475('0x169'),'where':{'id':_0x3f8a61}});})[_0xd475('0x1b')](function(_0x2744bf){_0x242255=_0x2744bf;var _0x2dacad=_0x4a0daa['concat'](_0x242255)['map'](function(_0x118719){return _0x118719[_0xd475('0x110')]({'attributes':['id',_0xd475('0x30'),'internal',_0xd475('0x92')],'raw':!![]});});return Promise[_0xd475('0x4d')](_0x2dacad);})['then'](function(_0x187152){var _0x15c8fe=_[_0xd475('0x16a')](_0x187152);if(_0x8dbcbf){if(_0x3f8a61||_0x2b29b0){return _0x15c8fe[_0xd475('0x36')](function(_0x3df836){return _0x3df836[_0xd475('0x30')][_0xd475('0x99')]()[_0xd475('0x29')](_0x8dbcbf[_0xd475('0x99')]())||_0x3df836[_0xd475('0x59')][_0xd475('0x16b')]()[_0xd475('0x29')](_0x8dbcbf);});}else{return db[_0xd475('0x32')][_0xd475('0x45')]({'attributes':['id','name',_0xd475('0x59'),_0xd475('0x92')],'where':{'role':_0xd475('0x1d'),'$or':[db[_0xd475('0x60')][_0xd475('0xca')](db[_0xd475('0x60')]['fn'](_0xd475('0x16c'),db[_0xd475('0x60')][_0xd475('0x16d')](_0xd475('0x30'))),{'$like':'%'+_0x8dbcbf[_0xd475('0x99')]()+'%'}),{'internal':{'$like':'%'+_0x8dbcbf+'%'}}]},'raw':!![]});}}else{return _0x15c8fe;}})['then'](function(_0x519055){var _0x254d97=_0xd475('0x30');var _0x31e7ee='asc';if(_0x31ae4b[_0xd475('0x3f')][_0xd475('0xc9')]){_0x31e7ee=_0x31ae4b[_0xd475('0x3f')]['sort'][0x0]==='-'?'desc':_0xd475('0x16e');_0x254d97=_0x31e7ee===_0xd475('0x16e')?_0x31ae4b[_0xd475('0x3f')][_0xd475('0xc9')]:_0x31ae4b[_0xd475('0x3f')]['sort'][_0xd475('0x16f')](0x1);}return _(_0x519055)[_0xd475('0x170')]('id')[_0xd475('0x171')]([function(_0x458f35){return _0x254d97===_0xd475('0x30')?_0x458f35[_0x254d97][_0xd475('0x99')]():_0x458f35[_0x254d97];}],[_0x31e7ee])['map'](function(_0x397cc9){return _[_0xd475('0xcb')](_0x397cc9,['id','name',_0xd475('0x59'),'online']);})[_0xd475('0x28')]();})[_0xd475('0x1b')](function(_0x48430a){_0x88eb41=_0x48430a;return rta[_0xd475('0x172')]();})[_0xd475('0x1b')](function(_0x1b32b5){return _0x88eb41[_0xd475('0x33')](function(_0x589d57){var _0x2f9f54=_['find'](_0x1b32b5[_0xd475('0x46')],['id',_0x589d57['id']]);if(!_0x2f9f54||!_0x589d57['online']){_0x589d57['status']=_0xd475('0x173');}else if(_0x2f9f54['voicePause']){_0x589d57[_0xd475('0x13')]=_0xd475('0xf4');}else if(_0x2f9f54[_0xd475('0x174')]===_0xd475('0x175')||!_0x2f9f54[_0xd475('0x174')]){_0x589d57[_0xd475('0x13')]=_0xd475('0x175');}else{_0x589d57[_0xd475('0x13')]=_0x219db7['includes'](_0x2f9f54[_0xd475('0x174')])?_0xd475('0x92'):_0xd475('0x176');}return _0x589d57;});})[_0xd475('0x1b')](function(_0x2be9fa){if(!_0x31ae4b[_0xd475('0x3f')][_0xd475('0xd0')]('nolimit')){_0x36a9df['limit']=qs[_0xd475('0xce')](_0x31ae4b[_0xd475('0x3f')][_0xd475('0xce')]||0xa);_0x36a9df[_0xd475('0x15')]=qs[_0xd475('0x15')](_0x31ae4b[_0xd475('0x3f')][_0xd475('0x15')]);}_0x2cc245['count']=_0x2be9fa[_0xd475('0x47')];_0x2cc245[_0xd475('0x46')]=_0x36a9df[_0xd475('0xce')]?_0x2be9fa['slice'](_0x36a9df['offset'],_0x36a9df['offset']+_0x36a9df[_0xd475('0xce')]):_0x2be9fa;return _0x2cc245;})['then'](respondWithFilteredResult(_0x1fb94e,_0x36a9df))[_0xd475('0x4e')](handleError(_0x1fb94e,null));};function get_open_tabs(_0x45320a,_0x13498a){var _0x53ac8d=_0x45320a[_0xd475('0x177')](0x0)[_0xd475('0x178')]()+_0x45320a[_0xd475('0x179')](0x1);var _0x1806a3={'type':db[_0xd475('0x88')][_0xd475('0x17a')]['SELECT'],'raw':!![]};return new Promise(function(_0x272418,_0x532bea){var _0x2a0ad6=squel['select']()[_0xd475('0x17b')](_0xd475('0x17c')+_0x53ac8d+_0xd475('0x17d'),'id')['field'](_0xd475('0x17e'))[_0xd475('0x63')](_0xd475('0x17f')+_0x45320a+_0xd475('0x180'),'ui')[_0xd475('0xca')](_0xd475('0x181'),_0x13498a['id']);return db[_0xd475('0x60')]['query'](_0x2a0ad6[_0xd475('0x16b')](),_0x1806a3)[_0xd475('0x1b')](function(_0x31246c){_0x13498a[_0x53ac8d+_0xd475('0x182')]=_0x31246c;_0x272418(_0x31246c);})[_0xd475('0x4e')](function(_0x34be33){_0x532bea(_0x34be33);});});}exports[_0xd475('0x183')]=function(_0xebd707,_0x40e7a7){var _0x455662=_0xebd707[_0xd475('0x54')]['id'];var _0x4d6598=_0xebd707['body'][_0xd475('0x184')];return db[_0xd475('0x32')]['update']({'messengerSoundNotification':_0x4d6598},{'where':{'id':_0x455662}})[_0xd475('0x1b')](respondWithStatusCode(_0x40e7a7,null))[_0xd475('0x4e')](handleError(_0x40e7a7,null));};
\ No newline at end of file
+var _0xa745=['chat','dataValues','sms','fax','mail','openchannel','whatsapp','all','catch','params','merge','options','body','describe','addContacts','ids','omit','internal','Setting','findById','securePassword','password','max','isNil','min_internal','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','QueryTypes','SELECT','length','from','voicemail','fullname','email','permissions','101','102','103','113','104','105','106','107','108','109','100','111','115','create','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','checkUserLimits','VoiceMail','Agents','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','UserProfileSection','findAll','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','validatePasswordPattern','previousPasswords','passwordHistoryLimit','addQueues','channel','loginInPause','voicePause','interface','Unknown\x20channel','add','capitalize','toLowerCase','penalty','spread','QueueId','emit','Queue:save','voice','VoiceQueue','format','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','remove','Queues','isArray','Queue:remove','addAvatar','userpic','filename','getAvatar','join','server/files/images/logos/default_profile.png','existsSync','root','server/files/images/','download','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','MailOpenTabs','MAIL','SmsOpenTabs','WHATSAPP','concat','getContacts','hasOwnProperty','Tag','Tags','color','tag','getQueues','isValidChannel','model','keys','Queue','filters','intersection','fields','order','sort','pick','Unknown\x20role','nolimit','getVoiceQueuesRt','getGroups','getRecordings','VoiceRecording','UserId','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','MailInteraction','getSmsInteractions','FaxInteraction','getFaxInteractions','getWhatsappInteractions','WhatsappInteraction','phone','intrf','user:forcelogout','headers','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','PAUSE','LOGININPAUSE','bulkCreate','isMiddleware','resolve','logout','pause','type','DEFAULT\x20PAUSE','unpause','Channel\x20parameter\x20%s\x20is\x20invalid','online','mailPause','chatPause','faxPause','smsPause','whatsappPause','pauseType','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','Team','getTeams','addTeams','Body\x20parameter\x20\x27ids\x27\x20is\x20required','transaction','flattenDeep','Voice','TeamVoicePrefix','UserVoicePrefix','removeTeams','sequelize','VoicePrefixId','getDataValue','getLists','getAgents','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','addFaxAccounts','removeFaxAccounts','getMailAccounts','MailAccount','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','removeWhatsappAccounts','getScheduledCalls','CmHopper','$and','$gte','$lte','$ne','$eq','$notBetween','$in','$notIn','$notLike','$notILike','$like','$overlap','$contains','$contained','$any','lastName','Contact','dialActive','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','removeApiKey','apiKeyNonce','apiKeyIat','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getUserSetting','getPresence','unknown','ringing','teams','inbound','flatten','toString','lower','asc','uniqBy','orderBy','getRealtimeAgents','offline','unavailable','busy','charAt','toUpperCase','slice','select','field','InteractionId','ui.createdAt','_interactions','ui.UserId\x20=\x20?','OpenTabs','messengerSoundNotification','util','lodash','../../components/auth/service','../../components/contacts','../../components/realtime/agents','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../errors/api','handleError','../../mysqldb','socket.io-emitter','redis','register','defaults','localhost','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','update','role','agent','userNotification:recalc:','destroy','then','get','admin','Users','user','Telephones','telephone','ignore','map','value','find','name','UserProfileResource','error','stack','send','User','rawAttributes','filter','salt','resetPasswordToken','resetPasswordExpires','md5secret','includes','index','getOptions','where','query','includeAll','include','userSetting','true','UserSetting','attributes','push','rows','openTabs'];(function(_0x2c0003,_0x25fa00){var _0xd3b627=function(_0x4bb8db){while(--_0x4bb8db){_0x2c0003['push'](_0x2c0003['shift']());}};_0xd3b627(++_0x25fa00);}(_0xa745,0x138));var _0x5a74=function(_0x3a8405,_0x15e91e){_0x3a8405=_0x3a8405-0x0;var _0x19cbfa=_0xa745[_0x3a8405];return _0x19cbfa;};'use strict';var moment=require('moment');var util=require(_0x5a74('0x0'));var path=require('path');var fs=require('fs');var _=require(_0x5a74('0x1'));var squel=require('squel');var Redis=require('ioredis');var authService=require(_0x5a74('0x2'));var contacts=require(_0x5a74('0x3'));var qs=require('../../components/parsers/qs');var rta=require(_0x5a74('0x4'));var logger=require(_0x5a74('0x5'))(_0x5a74('0x6'));var utils=require(_0x5a74('0x7'));var config=require(_0x5a74('0x8'));var licenseUtil=require(_0x5a74('0x9'));var APIBadRequestError=require(_0x5a74('0xa'))['APIBadRequestError'];var APINotFoundError=require('../../errors/api')['APINotFoundError'];var APIHandleError=require(_0x5a74('0xa'))[_0x5a74('0xb')];var db=require(_0x5a74('0xc'))['db'];var socket=require(_0x5a74('0xd'))(new Redis(config[_0x5a74('0xe')]));require('./user.socket')[_0x5a74('0xf')](socket);config[_0x5a74('0xe')]=_[_0x5a74('0x10')](config[_0x5a74('0xe')],{'host':_0x5a74('0x11'),'port':0x18eb});var values;function respondWithStatusCode(_0x2582a2,_0x51ee39){_0x51ee39=_0x51ee39||0xcc;return function(_0x29df2a){if(_0x29df2a){return _0x2582a2[_0x5a74('0x12')](_0x51ee39);}return _0x2582a2[_0x5a74('0x13')](_0x51ee39)[_0x5a74('0x14')]();};}function respondWithResult(_0x38c60a,_0x54947e){_0x54947e=_0x54947e||0xc8;return function(_0x2fe9ce){if(_0x2fe9ce){return _0x38c60a[_0x5a74('0x13')](_0x54947e)['json'](_0x2fe9ce);}};}function respondWithFilteredResult(_0x1d5a6a,_0x4ac869){return function(_0x160318){if(_0x160318){var _0x575198=typeof _0x4ac869[_0x5a74('0x15')]===_0x5a74('0x16')&&typeof _0x4ac869[_0x5a74('0x17')]==='undefined';var _0x152faa=_0x160318['count'];var _0x2bcbc6=_0x575198?0x0:_0x4ac869[_0x5a74('0x15')];var _0x147ad3=_0x575198?_0x160318[_0x5a74('0x18')]:_0x4ac869[_0x5a74('0x15')]+_0x4ac869[_0x5a74('0x17')];var _0x50744d;if(_0x147ad3>=_0x152faa){_0x147ad3=_0x152faa;_0x50744d=0xc8;}else{_0x50744d=0xce;}_0x1d5a6a['status'](_0x50744d);return _0x1d5a6a[_0x5a74('0x19')](_0x5a74('0x1a'),_0x2bcbc6+'-'+_0x147ad3+'/'+_0x152faa)[_0x5a74('0x1b')](_0x160318);}return null;};}function saveUpdates(_0x20c052){return function(_0x31c95a){if(_0x31c95a){return _0x31c95a[_0x5a74('0x1c')](_0x20c052)['then'](function(_0x90aa44){if(_0x90aa44[_0x5a74('0x1d')]===_0x5a74('0x1e')){socket['emit'](_0x5a74('0x1f')+_0x90aa44['id'],_0x90aa44);}return _0x90aa44;});}return null;};}function removeEntity(_0x24b45b){return function(_0x112ac7){if(_0x112ac7){return _0x112ac7[_0x5a74('0x20')]()[_0x5a74('0x21')](function(){var _0x5be796=_0x112ac7[_0x5a74('0x22')]({'plain':!![]});if(_0x5be796[_0x5a74('0x1d')]===_0x5a74('0x23'))return;var _0x4c5112=[{'name':_0x5a74('0x24'),'value':_0x5a74('0x25'),'ignore':!![]},{'name':'Agents','value':'agent','ignore':![]},{'name':_0x5a74('0x26'),'value':_0x5a74('0x27'),'ignore':![]}];var _0x33be11=_(_0x4c5112)['filter'](_0x5a74('0x28'))[_0x5a74('0x29')](_0x5a74('0x2a'))['value']();if(_['includes'](_0x33be11,_0x5be796[_0x5a74('0x1d')])){return;}var _0x4c8ed4=_[_0x5a74('0x2b')](_0x4c5112,[_0x5a74('0x2a'),_0x5be796[_0x5a74('0x1d')]])[_0x5a74('0x2c')];return db[_0x5a74('0x2d')][_0x5a74('0x20')]({'where':{'type':_0x4c8ed4,'resourceId':_0x5be796['id']}})[_0x5a74('0x21')](function(){return _0x112ac7;});})['then'](function(){_0x24b45b['status'](0xcc)[_0x5a74('0x14')]();});}};}function handleEntityNotFound(_0x3bd040){return function(_0xdbfc7f){if(!_0xdbfc7f){_0x3bd040['sendStatus'](0x194);}return _0xdbfc7f;};}function handleError(_0x53c629,_0x38c8da){_0x38c8da=_0x38c8da||0x1f4;return function(_0x4ac516){logger[_0x5a74('0x2e')](_0x4ac516[_0x5a74('0x2f')]);if(_0x4ac516[_0x5a74('0x2c')]){delete _0x4ac516[_0x5a74('0x2c')];}_0x53c629[_0x5a74('0x13')](_0x38c8da)[_0x5a74('0x30')](_0x4ac516);};}function getUserAttributes(){return _(db[_0x5a74('0x31')][_0x5a74('0x32')])['map'](function(_0x4d7011){return{'name':_0x4d7011['fieldName'],'type':_0x4d7011['type']['key']};})[_0x5a74('0x33')](function(_0x5ede23){return!['password',_0x5a74('0x34'),'previousPasswords',_0x5a74('0x35'),_0x5a74('0x36'),_0x5a74('0x37')][_0x5a74('0x38')](_0x5ede23['name']);})[_0x5a74('0x2a')]();}exports[_0x5a74('0x39')]=function(_0x3a0463,_0x2c3735){var _0x30f2e8={},_0x5cfc35={'count':0x0,'rows':[]};var _0x2f6be5=getUserAttributes();_0x30f2e8=qs[_0x5a74('0x3a')](_0x2f6be5,_0x3a0463);var _0x44571a={'where':_0x30f2e8[_0x5a74('0x3b')]};return db[_0x5a74('0x31')]['count'](_0x44571a)['then'](function(_0x1c0a67){_0x5cfc35[_0x5a74('0x18')]=_0x1c0a67;if(_0x3a0463[_0x5a74('0x3c')][_0x5a74('0x3d')]){_0x30f2e8[_0x5a74('0x3e')]=[{'all':!![]}];}if(_0x3a0463['query'][_0x5a74('0x3f')]===_0x5a74('0x40')){_0x30f2e8[_0x5a74('0x3e')]=[{'model':db[_0x5a74('0x41')],'as':_0x5a74('0x3f')}];}if(!_['includes'](_0x30f2e8[_0x5a74('0x42')],'id')){_0x30f2e8[_0x5a74('0x42')][_0x5a74('0x43')]('id');}return db['User']['findAll'](_0x30f2e8);})[_0x5a74('0x21')](function(_0x189e27){_0x5cfc35[_0x5a74('0x44')]=_0x189e27;if(_0x3a0463[_0x5a74('0x3c')][_0x5a74('0x45')]===_0x5a74('0x40')){var _0x42a282=[];for(var _0x5692d0=0x0;_0x5692d0<_0x5cfc35[_0x5a74('0x44')]['length'];_0x5692d0++){_0x42a282['push'](get_open_tabs(_0x5a74('0x46'),_0x5cfc35['rows'][_0x5692d0][_0x5a74('0x47')]));_0x42a282[_0x5a74('0x43')](get_open_tabs(_0x5a74('0x48'),_0x5cfc35[_0x5a74('0x44')][_0x5692d0][_0x5a74('0x47')]));_0x42a282[_0x5a74('0x43')](get_open_tabs(_0x5a74('0x49'),_0x5cfc35['rows'][_0x5692d0][_0x5a74('0x47')]));_0x42a282[_0x5a74('0x43')](get_open_tabs(_0x5a74('0x4a'),_0x5cfc35[_0x5a74('0x44')][_0x5692d0][_0x5a74('0x47')]));_0x42a282[_0x5a74('0x43')](get_open_tabs(_0x5a74('0x4b'),_0x5cfc35[_0x5a74('0x44')][_0x5692d0][_0x5a74('0x47')]));_0x42a282['push'](get_open_tabs(_0x5a74('0x4c'),_0x5cfc35[_0x5a74('0x44')][_0x5692d0]['dataValues']));}return Promise[_0x5a74('0x4d')](_0x42a282)['then'](function(){return _0x5cfc35;});}else{return _0x5cfc35;}})[_0x5a74('0x21')](respondWithFilteredResult(_0x2c3735,_0x30f2e8))[_0x5a74('0x4e')](handleError(_0x2c3735,null));};exports['show']=function(_0x42a199,_0x4e2688){var _0x5b29e6=getUserAttributes();_0x42a199[_0x5a74('0x3c')]['id']=_0x42a199[_0x5a74('0x4f')]['id'];var _0x5afcde=qs['getOptions'](_0x5b29e6,_0x42a199);if(_0x42a199[_0x5a74('0x3c')]['includeAll']){_0x5afcde[_0x5a74('0x3e')]=[{'all':!![]}];}if(_0x42a199['query']['userSetting']===_0x5a74('0x40')){_0x5afcde[_0x5a74('0x3e')]=[{'model':db[_0x5a74('0x41')],'as':'userSetting'}];}_0x5afcde=_[_0x5a74('0x50')]({},_0x5afcde,_0x42a199[_0x5a74('0x51')]);if(!_[_0x5a74('0x38')](_0x5afcde[_0x5a74('0x42')],'id')){_0x5afcde['attributes'][_0x5a74('0x43')]('id');}return db[_0x5a74('0x31')]['find'](_0x5afcde)[_0x5a74('0x21')](handleEntityNotFound(_0x4e2688,null))[_0x5a74('0x21')](function(_0x35e43b){var _0x208fd6=[];values=_0x35e43b;if(_0x42a199['query'][_0x5a74('0x45')]==='true'){_0x208fd6['push'](get_open_tabs(_0x5a74('0x46'),_0x35e43b[_0x5a74('0x47')]));_0x208fd6[_0x5a74('0x43')](get_open_tabs(_0x5a74('0x48'),_0x35e43b[_0x5a74('0x47')]));_0x208fd6[_0x5a74('0x43')](get_open_tabs('openchannel',_0x35e43b[_0x5a74('0x47')]));_0x208fd6[_0x5a74('0x43')](get_open_tabs(_0x5a74('0x4c'),_0x35e43b[_0x5a74('0x47')]));_0x208fd6[_0x5a74('0x43')](get_open_tabs(_0x5a74('0x49'),_0x35e43b['dataValues']));_0x208fd6[_0x5a74('0x43')](get_open_tabs(_0x5a74('0x4a'),_0x35e43b['dataValues']));return Promise[_0x5a74('0x4d')](_0x208fd6);}else{return values;}})['then'](function(){return values;})['then'](respondWithResult(_0x4e2688,null))[_0x5a74('0x4e')](handleError(_0x4e2688,null));};exports[_0x5a74('0x1c')]=function(_0x49fd50,_0x5c81ab){if(_0x49fd50[_0x5a74('0x52')]['id']){delete _0x49fd50[_0x5a74('0x52')]['id'];}delete _0x49fd50[_0x5a74('0x52')]['role'];return db[_0x5a74('0x31')]['find']({'where':{'id':_0x49fd50[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x5c81ab,null))[_0x5a74('0x21')](saveUpdates(_0x49fd50['body'],null))[_0x5a74('0x21')](respondWithResult(_0x5c81ab,null))[_0x5a74('0x4e')](handleError(_0x5c81ab,null));};exports[_0x5a74('0x53')]=function(_0x529a06,_0x10323d){return db['User'][_0x5a74('0x53')]()['then'](respondWithResult(_0x10323d,null))['catch'](handleError(_0x10323d,null));};exports['addContacts']=function(_0x20f723,_0x14afd1){return db[_0x5a74('0x31')]['find']({'where':{'id':_0x20f723[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x14afd1,null))[_0x5a74('0x21')](function(_0x3a3c4b){if(_0x3a3c4b){return _0x3a3c4b[_0x5a74('0x54')](_0x20f723[_0x5a74('0x52')][_0x5a74('0x55')],_[_0x5a74('0x56')](_0x20f723['body'],['ids','id'])||{});}})[_0x5a74('0x21')](respondWithResult(_0x14afd1,null))[_0x5a74('0x4e')](handleError(_0x14afd1,null));};function validateUser(_0x42ff92){return new Promise(function(_0x593e0f,_0x192164){if(_0x42ff92[_0x5a74('0x57')])return _0x593e0f(_0x42ff92);return db[_0x5a74('0x58')][_0x5a74('0x59')](0x1)[_0x5a74('0x21')](function(_0x1c01e9){if(_0x1c01e9[_0x5a74('0x5a')])authService['validatePasswordPattern'](_0x42ff92[_0x5a74('0x5b')]);db[_0x5a74('0x31')][_0x5a74('0x5c')](_0x5a74('0x57'))[_0x5a74('0x21')](function(_0x4ec28d){if(_[_0x5a74('0x5d')](_0x4ec28d)){_0x42ff92[_0x5a74('0x57')]=_0x1c01e9[_0x5a74('0x5e')]||0x1;return;}if(_['isNil'](_0x1c01e9[_0x5a74('0x5e')])||_0x1c01e9['min_internal']===_0x4ec28d){_0x42ff92['internal']=_0x4ec28d+0x1;return;}if(_0x1c01e9['min_internal']>_0x4ec28d){_0x42ff92[_0x5a74('0x57')]=_0x1c01e9[_0x5a74('0x5e')];return;}return db['sequelize'][_0x5a74('0x3c')](_0x5a74('0x5f'),{'type':db['sequelize'][_0x5a74('0x60')][_0x5a74('0x61')]})[_0x5a74('0x21')](function(_0x4e887f){if(_0x4e887f&&_0x4e887f[_0x5a74('0x62')]){for(var _0x9a5bc9=0x0,_0x155f67=_0x4e887f[_0x5a74('0x62')];_0x9a5bc9<_0x155f67&&_[_0x5a74('0x5d')](_0x42ff92['internal']);_0x9a5bc9++){if(_0x1c01e9[_0x5a74('0x5e')]<=_0x4e887f[_0x9a5bc9][_0x5a74('0x63')]){_0x42ff92[_0x5a74('0x57')]=_0x4e887f[_0x9a5bc9]['from'];}else if(_0x1c01e9[_0x5a74('0x5e')]>_0x4e887f[_0x9a5bc9][_0x5a74('0x63')]&&_0x1c01e9['min_internal']<=_0x4e887f[_0x9a5bc9]['to']){_0x42ff92['internal']=_0x1c01e9[_0x5a74('0x5e')];}}}if(_[_0x5a74('0x5d')](_0x42ff92[_0x5a74('0x57')])){_0x42ff92[_0x5a74('0x57')]=_0x4ec28d+0x1;}return _0x593e0f(_0x42ff92);});});})[_0x5a74('0x4e')](function(_0x5ee789){_0x192164(_0x5ee789);});});}function updateUser(_0x2cf785){return new Promise(function(_0x37964b,_0x476dc7){try{if(_0x2cf785[_0x5a74('0x64')]){_0x2cf785['mailbox']=_0x2cf785[_0x5a74('0x57')];_0x2cf785['VoiceMail']={'mailbox':_0x2cf785[_0x5a74('0x57')],'password':_0x2cf785[_0x5a74('0x5b')],'fullname':_0x2cf785[_0x5a74('0x65')],'email':_0x2cf785[_0x5a74('0x66')]};}if(_0x2cf785['role']===_0x5a74('0x1e')){if(!_0x2cf785['permissions'])_0x2cf785[_0x5a74('0x67')]=[_0x5a74('0x68'),_0x5a74('0x69'),_0x5a74('0x6a'),_0x5a74('0x6b'),'110',_0x5a74('0x6c'),_0x5a74('0x6d'),_0x5a74('0x6e'),_0x5a74('0x6f'),_0x5a74('0x70'),_0x5a74('0x71'),_0x5a74('0x72'),_0x5a74('0x73'),'114',_0x5a74('0x74')];}_0x37964b(_0x2cf785);}catch(_0x3b21f6){_0x476dc7(_0x3b21f6);}});}exports[_0x5a74('0x75')]=function(_0x212f4f,_0x4a79f8){if(_0x212f4f[_0x5a74('0x25')][_0x5a74('0x1d')]===_0x5a74('0x1e'))throw new Error(_0x5a74('0x76'));if(_0x212f4f[_0x5a74('0x52')][_0x5a74('0x1d')]===_0x5a74('0x25')&&_0x212f4f[_0x5a74('0x25')][_0x5a74('0x1d')]!==_0x5a74('0x23')){throw new Error(_0x5a74('0x77'));}if(_0x212f4f['body']['role']===_0x5a74('0x23')&&_0x212f4f[_0x5a74('0x25')][_0x5a74('0x1d')]!==_0x5a74('0x23')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator');}return licenseUtil[_0x5a74('0x78')]([_0x212f4f[_0x5a74('0x52')]])[_0x5a74('0x21')](function(){return validateUser(_0x212f4f[_0x5a74('0x52')]);})[_0x5a74('0x21')](function(_0x46c05c){return updateUser(_0x46c05c)[_0x5a74('0x21')](function(_0x32852d){if(_0x32852d['role']===_0x5a74('0x23')){_0x32852d['settingsEnabled']=_0x212f4f[_0x5a74('0x25')]['settingsEnabled'];delete _0x32852d['userProfileId'];}return _0x32852d;});})[_0x5a74('0x21')](function(_0xb4294b){return db[_0x5a74('0x31')][_0x5a74('0x75')](_0xb4294b,{'include':[{'model':db['VoiceMail'],'as':_0x5a74('0x79')}]});})[_0x5a74('0x21')](function(_0x2fdb20){if(_0x212f4f['body']['role']==='user')return _0x2fdb20;if(_0x212f4f[_0x5a74('0x25')][_0x5a74('0x1d')]!==_0x5a74('0x25'))return _0x2fdb20;return db['UserProfileSection']['find']({'where':{'name':_0x2fdb20[_0x5a74('0x1d')]==='agent'?_0x5a74('0x7a'):_0x5a74('0x26'),'userProfileId':_0x212f4f[_0x5a74('0x25')][_0x5a74('0x7b')]},'raw':!![]})[_0x5a74('0x21')](function(_0x6acfd4){if(!_0x6acfd4||_0x6acfd4[_0x5a74('0x7c')]!=0x0)return _0x2fdb20;return db[_0x5a74('0x2d')][_0x5a74('0x75')]({'name':_0x2fdb20[_0x5a74('0x2c')],'resourceId':_0x2fdb20['id'],'type':_0x6acfd4[_0x5a74('0x2c')],'sectionId':_0x6acfd4['id']},{})['then'](function(){return _0x2fdb20;});})[_0x5a74('0x4e')](function(_0x301f96){logger[_0x5a74('0x2e')](_0x5a74('0x7d'),_0x301f96);throw _0x301f96;});})[_0x5a74('0x21')](respondWithResult(_0x4a79f8,0xc9))[_0x5a74('0x4e')](handleError(_0x4a79f8,null));};exports['bulkCreate']=function(_0x29ad78,_0x45efb8){var _0x5ceff4=_0x29ad78[_0x5a74('0x52')];var _0x384e5b=[];if(_0x29ad78['user'][_0x5a74('0x1d')]===_0x5a74('0x1e'))throw new Error(_0x5a74('0x76'));if(_[_0x5a74('0x7e')](_0x5ceff4,[_0x5a74('0x1d'),_0x5a74('0x25')])&&_0x29ad78['user'][_0x5a74('0x1d')]!=='admin'){throw new Error(_0x5a74('0x77'));}if(_[_0x5a74('0x7e')](_0x5ceff4,[_0x5a74('0x1d'),_0x5a74('0x23')])&&_0x29ad78[_0x5a74('0x25')][_0x5a74('0x1d')]!==_0x5a74('0x23')){throw new Error(_0x5a74('0x7f'));}return licenseUtil[_0x5a74('0x78')](_0x5ceff4)[_0x5a74('0x21')](function(){return validateUser(_0x5ceff4[0x0]);})[_0x5a74('0x21')](function(){for(var _0x4bb4f4=0x1;_0x4bb4f4<_0x5ceff4[_0x5a74('0x62')];_0x4bb4f4++){var _0x5725bc=_0x5ceff4[_0x4bb4f4-0x1][_0x5a74('0x57')];if(!_0x5ceff4[_0x4bb4f4][_0x5a74('0x57')])_0x5ceff4[_0x4bb4f4][_0x5a74('0x57')]=_0x5725bc+0x1;_0x384e5b[_0x5a74('0x43')](validateUser(_0x5ceff4[_0x4bb4f4]));}return Promise['all'](_0x384e5b);})['then'](function(){_0x384e5b=[];for(var _0xffe98e=0x0;_0xffe98e<_0x5ceff4[_0x5a74('0x62')];_0xffe98e++){_0x384e5b[_0x5a74('0x43')](updateUser(_0x5ceff4[_0xffe98e]));}return Promise[_0x5a74('0x4d')](_0x384e5b);})[_0x5a74('0x21')](function(){_0x384e5b=_0x5ceff4[_0x5a74('0x29')](function(_0x195c0b){return db['User']['create'](_0x195c0b,{'include':[{'model':db[_0x5a74('0x79')],'as':_0x5a74('0x79')}]})[_0x5a74('0x21')](function(_0x45682d){_0x195c0b['id']=_0x45682d['id'];return _0x195c0b;});});return Promise[_0x5a74('0x4d')](_0x384e5b);})[_0x5a74('0x21')](function(_0x47c0c3){if(_0x29ad78[_0x5a74('0x52')][_0x5a74('0x1d')]==='user')return _0x47c0c3;if(_0x29ad78[_0x5a74('0x25')]['role']!==_0x5a74('0x25'))return _0x47c0c3;var _0xa3dd14=_[_0x5a74('0x7e')](_0x47c0c3,function(_0x123a77){return _0x123a77[_0x5a74('0x1d')]===_0x5a74('0x1e')||_0x123a77[_0x5a74('0x1d')]===_0x5a74('0x27');});if(!_0xa3dd14)return _0x47c0c3;return db[_0x5a74('0x80')][_0x5a74('0x81')]({'where':{'name':{'$or':[_0x5a74('0x7a'),_0x5a74('0x26')]},'userProfileId':_0x29ad78['user']['userProfileId']},'raw':!![]})[_0x5a74('0x21')](function(_0x1fe461){if(_['isEmpty'](_0x1fe461)||!_['some'](_0x1fe461,[_0x5a74('0x7c'),0x0]))return _0x47c0c3;_0x384e5b=[];var _0xd0d120=_(_0x1fe461)[_0x5a74('0x29')](function(_0x4c20b6){if(_0x4c20b6['autoAssociation']===0x1)return;return _0x4c20b6[_0x5a74('0x2c')]==='Agents'?_0x5a74('0x1e'):_0x5a74('0x27');})['compact']()[_0x5a74('0x2a')]();for(var _0x3d3bd6=0x0;_0x3d3bd6<_0x47c0c3[_0x5a74('0x62')];_0x3d3bd6++){if(!_[_0x5a74('0x38')](_0xd0d120,_0x47c0c3[_0x3d3bd6][_0x5a74('0x1d')]))return;var _0x4786f9=_0x47c0c3[_0x3d3bd6][_0x5a74('0x1d')]===_0x5a74('0x1e')?_0x5a74('0x7a'):_0x5a74('0x26');_0x384e5b['push'](db[_0x5a74('0x2d')][_0x5a74('0x75')]({'name':_0x47c0c3[_0x3d3bd6][_0x5a74('0x2c')],'resourceId':_0x47c0c3[_0x3d3bd6]['id'],'type':_0x4786f9,'sectionId':_[_0x5a74('0x2b')](_0x1fe461,['name',_0x4786f9])['id']},{}));}return Promise['all'](_0x384e5b);});})[_0x5a74('0x21')](respondWithResult(_0x45efb8,0xc9))[_0x5a74('0x4e')](handleError(_0x45efb8,null));};exports[_0x5a74('0x82')]=function(_0x2d6b83,_0x59b7b3){if(_0x2d6b83['body']['id']){delete _0x2d6b83['body']['id'];}return db['User'][_0x5a74('0x2b')]({'where':{'id':_0x2d6b83[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](function(_0x30421c){if(!_0x30421c)return null;if(_0x30421c['id']===_0x2d6b83[_0x5a74('0x25')]['id']){if(!_0x2d6b83[_0x5a74('0x52')][_0x5a74('0x83')]||!_0x2d6b83[_0x5a74('0x52')][_0x5a74('0x84')]){throw new db[(_0x5a74('0x85'))][(_0x5a74('0x86'))](_0x5a74('0x87'));}if(!_0x30421c['authenticate'](_0x2d6b83[_0x5a74('0x52')][_0x5a74('0x83')])){throw new db[(_0x5a74('0x85'))][(_0x5a74('0x86'))](_0x5a74('0x88'));}if(_0x2d6b83[_0x5a74('0x52')][_0x5a74('0x83')]===_0x2d6b83[_0x5a74('0x52')][_0x5a74('0x84')]){throw new db[(_0x5a74('0x85'))][(_0x5a74('0x86'))](_0x5a74('0x89'));}}else if(_0x2d6b83[_0x5a74('0x25')][_0x5a74('0x1d')]===_0x5a74('0x23')){if(!_0x2d6b83['body']['newPassword']){throw new db[(_0x5a74('0x85'))]['ValidationError'](_0x5a74('0x8a'));}}else if(_0x2d6b83[_0x5a74('0x25')]['role']===_0x5a74('0x25')){if(!_0x2d6b83[_0x5a74('0x52')][_0x5a74('0x84')]){throw new db['Sequelize'][(_0x5a74('0x86'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}if(_0x30421c[_0x5a74('0x1d')]!==_0x5a74('0x1e')){throw new db[(_0x5a74('0x85'))][(_0x5a74('0x86'))](_0x5a74('0x76'));}}else{throw new db['Sequelize'][(_0x5a74('0x86'))](_0x5a74('0x76'));}return _0x30421c;})[_0x5a74('0x21')](handleEntityNotFound(_0x59b7b3,null))['then'](function(_0x2c0f4f){return db[_0x5a74('0x58')][_0x5a74('0x8b')]({'attributes':['id','securePassword',_0x5a74('0x8c'),'passwordHistoryLimit']})[_0x5a74('0x21')](function(_0x856f49){if(_0x856f49[_0x5a74('0x5a')])authService[_0x5a74('0x8d')](_0x2d6b83[_0x5a74('0x52')][_0x5a74('0x84')]);if(!_0x856f49['enforcePasswordHistory']||!_0x2c0f4f['previousPasswords'])return _0x2c0f4f;authService['validatePasswordHistory'](_0x2d6b83[_0x5a74('0x52')][_0x5a74('0x84')],_0x2c0f4f[_0x5a74('0x8e')],_0x856f49[_0x5a74('0x8f')]);return _0x2c0f4f;})[_0x5a74('0x21')](saveUpdates({'password':_0x2d6b83['body'][_0x5a74('0x84')],'passwordResetAt':_0x2d6b83['user']['id']==_0x2d6b83[_0x5a74('0x4f')]['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0x2d6b83[_0x5a74('0x52')]['newPassword'],_0x2c0f4f[_0x5a74('0x8e')])},null));})['then'](respondWithResult(_0x59b7b3,null))[_0x5a74('0x4e')](handleError(_0x59b7b3,null));};exports[_0x5a74('0x90')]=function(_0x7690be,_0x56f8be){var _0x5340de=_0x7690be[_0x5a74('0x52')][_0x5a74('0x91')];return db[_0x5a74('0x31')]['find']({'where':{'id':_0x7690be[_0x5a74('0x4f')]['id']},'attributes':['id','name','role','online',_0x5a74('0x92'),_0x5a74('0x93'),_0x5a74('0x94')]})[_0x5a74('0x21')](handleEntityNotFound(_0x56f8be,null))[_0x5a74('0x21')](function(_0x1de7a0){if(_0x1de7a0){if(!utils['isValidChannel'](_0x5340de)){throw new db[(_0x5a74('0x85'))]['ValidationError'](_0x5a74('0x95'));}return _0x1de7a0[_0x5a74('0x96')+_[_0x5a74('0x97')](_0x5340de[_0x5a74('0x98')]())+'Queues'](_0x7690be[_0x5a74('0x52')][_0x5a74('0x55')],{'penalty':_0x7690be[_0x5a74('0x52')][_0x5a74('0x99')]||0x0})[_0x5a74('0x9a')](function(_0x2ecb2f){for(var _0x1cb576=0x0;_0x1cb576<_0x7690be['body']['ids']['length'];_0x1cb576+=0x1){var _0x4683d1={'UserId':Number(_0x7690be[_0x5a74('0x4f')]['id'])};_0x4683d1[_[_0x5a74('0x97')](_0x5340de['toLowerCase']())+_0x5a74('0x9b')]=Number(_0x7690be[_0x5a74('0x52')][_0x5a74('0x55')][_0x1cb576]);socket[_0x5a74('0x9c')](_0x5a74('0x25')+_['capitalize'](_0x5340de[_0x5a74('0x98')]())+_0x5a74('0x9d'),_0x4683d1);}return _0x2ecb2f;})[_0x5a74('0x21')](function(){if(_0x5340de===_0x5a74('0x9e')){return db[_0x5a74('0x9f')][_0x5a74('0x81')]({'where':{'id':_0x7690be[_0x5a74('0x52')][_0x5a74('0x55')]||[]},'raw':!![],'attributes':['id','name']});}})[_0x5a74('0x21')](function(_0x32ad3e){var _0x346813=_0x1de7a0[_0x5a74('0x22')]({'plain':!![]});var _0x23563e=[];if(_0x5340de==='voice'&&_0x346813['role']===_0x5a74('0x1e')&&_0x346813['online']){for(let _0x2e5f62=0x0;_0x2e5f62<_0x32ad3e['length'];_0x2e5f62+=0x1){_0x23563e[_0x5a74('0x43')]({'membername':_0x346813[_0x5a74('0x2c')],'UserId':_0x346813['id'],'queue_name':_0x32ad3e[_0x2e5f62]['name'],'VoiceQueueId':_0x32ad3e[_0x2e5f62]['id'],'interface':_[_0x5a74('0x5d')](_0x346813[_0x5a74('0x94')])?util[_0x5a74('0xa0')](_0x5a74('0xa1'),_0x346813[_0x5a74('0x2c')]):_0x346813[_0x5a74('0x94')],'paused':_0x346813[_0x5a74('0x93')]||![],'penalty':_0x7690be['body']['penalty']||0x0});}return Promise[_0x5a74('0x4d')](_0x23563e[_0x5a74('0x29')](function(_0x24633a){return db[_0x5a74('0xa2')][_0x5a74('0xa3')](_0x24633a);}));}return _0x1de7a0;});}})[_0x5a74('0x21')](respondWithStatusCode(_0x56f8be,null))[_0x5a74('0x4e')](handleError(_0x56f8be,null));};exports[_0x5a74('0xa4')]=function(_0x2c93a2,_0x5a1834){var _0xa04cf0,_0x2e1c80;return db[_0x5a74('0x31')]['find']({'where':{'id':_0x2c93a2[_0x5a74('0x4f')]['id']},'attributes':['id','name',_0x5a74('0x1d')]})[_0x5a74('0x21')](handleEntityNotFound(_0x5a1834,null))['then'](function(_0x3a737a){if(_0x3a737a){_0xa04cf0=_0x3a737a;if(!_0x2c93a2[_0x5a74('0x3c')][_0x5a74('0x91')]||!utils['isValidChannel'](_0x2c93a2['query'][_0x5a74('0x91')])){throw new db[(_0x5a74('0x85'))][(_0x5a74('0x86'))](_0x5a74('0x95'));}return _0x3a737a[_0x5a74('0xa5')+_[_0x5a74('0x97')](_0x2c93a2[_0x5a74('0x3c')][_0x5a74('0x91')][_0x5a74('0x98')]())+_0x5a74('0xa6')](_0x2c93a2[_0x5a74('0x3c')][_0x5a74('0x55')]);}})[_0x5a74('0x21')](function(_0x1c8330){if(_[_0x5a74('0xa7')](_0x2c93a2[_0x5a74('0x3c')]['ids'])){for(var _0xd4d14=0x0;_0xd4d14<_0x2c93a2[_0x5a74('0x3c')][_0x5a74('0x55')][_0x5a74('0x62')];_0xd4d14+=0x1){_0x2e1c80={'UserId':Number(_0x2c93a2[_0x5a74('0x4f')]['id'])};_0x2e1c80[_[_0x5a74('0x97')](_0x2c93a2[_0x5a74('0x3c')][_0x5a74('0x91')]['toLowerCase']())+_0x5a74('0x9b')]=Number(_0x2c93a2[_0x5a74('0x3c')][_0x5a74('0x55')][_0xd4d14]);socket['emit'](_0x5a74('0x25')+_[_0x5a74('0x97')](_0x2c93a2[_0x5a74('0x3c')][_0x5a74('0x91')][_0x5a74('0x98')]())+'Queue:remove',_0x2e1c80);}}else{_0x2e1c80={'UserId':Number(_0x2c93a2['params']['id'])};_0x2e1c80[_['capitalize'](_0x2c93a2['query'][_0x5a74('0x91')][_0x5a74('0x98')]())+_0x5a74('0x9b')]=Number(_0x2c93a2[_0x5a74('0x3c')][_0x5a74('0x55')]);socket[_0x5a74('0x9c')](_0x5a74('0x25')+_[_0x5a74('0x97')](_0x2c93a2[_0x5a74('0x3c')]['channel'][_0x5a74('0x98')]())+_0x5a74('0xa8'),_0x2e1c80);}return _0x1c8330;})[_0x5a74('0x21')](function(){if(_0x2c93a2[_0x5a74('0x3c')][_0x5a74('0x91')]==='voice'){return db['UserVoiceQueueRt'][_0x5a74('0x20')]({'where':{'UserId':_0x2c93a2[_0x5a74('0x4f')]['id'],'VoiceQueueId':_0x2c93a2[_0x5a74('0x3c')]['ids']},'individualHooks':!![]})[_0x5a74('0x21')](function(){return _0xa04cf0;});}return _0xa04cf0;})[_0x5a74('0x21')](respondWithStatusCode(_0x5a1834,null))[_0x5a74('0x4e')](handleError(_0x5a1834,null));};exports[_0x5a74('0xa9')]=function(_0x64b274,_0x197714){_0x64b274['body'][_0x5a74('0xaa')]=_0x64b274['file'][_0x5a74('0xab')];return db[_0x5a74('0x31')][_0x5a74('0x2b')]({'where':{'id':_0x64b274['params']['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x197714,null))[_0x5a74('0x21')](saveUpdates(_0x64b274[_0x5a74('0x52')],null))[_0x5a74('0x21')](respondWithResult(_0x197714,null))[_0x5a74('0x4e')](handleError(_0x197714,null));};exports[_0x5a74('0xac')]=function(_0x338ffb,_0x4c0edc){var _0x309e7f=path[_0x5a74('0xad')](config['root'],_0x5a74('0xae'));return db[_0x5a74('0x31')]['find']({'where':{'id':_0x338ffb[_0x5a74('0x4f')]['id']},'attributes':['id',_0x5a74('0xaa')],'raw':!![]})['then'](handleEntityNotFound(_0x4c0edc,null))['then'](function(_0x1c0202){if(_0x1c0202){if(_[_0x5a74('0x5d')](_0x1c0202[_0x5a74('0xaa')])){return _0x4c0edc['download'](_0x309e7f);}else{if(!fs[_0x5a74('0xaf')](path[_0x5a74('0xad')](config[_0x5a74('0xb0')],_0x5a74('0xb1'),_0x1c0202[_0x5a74('0xaa')]))){return _0x4c0edc[_0x5a74('0xb2')](_0x309e7f);}return _0x4c0edc['download'](path[_0x5a74('0xad')](config['root'],_0x5a74('0xb1'),_0x1c0202[_0x5a74('0xaa')]));}}})[_0x5a74('0x4e')](handleError(_0x4c0edc,null));};exports[_0x5a74('0xb3')]=function(_0x6166ef,_0x3e2675){return db['User'][_0x5a74('0x2b')]({'where':{'id':_0x6166ef['params']['id']},'attributes':['id']})[_0x5a74('0x21')](handleEntityNotFound(_0x3e2675,null))[_0x5a74('0x21')](function(_0xb9b90){var _0x4f005b=[];values=_0xb9b90['dataValues'];_0x4f005b[_0x5a74('0x43')](get_open_tabs(_0x5a74('0x46'),_0xb9b90[_0x5a74('0x47')]));_0x4f005b[_0x5a74('0x43')](get_open_tabs(_0x5a74('0x48'),_0xb9b90[_0x5a74('0x47')]));_0x4f005b[_0x5a74('0x43')](get_open_tabs(_0x5a74('0x4b'),_0xb9b90[_0x5a74('0x47')]));_0x4f005b['push'](get_open_tabs(_0x5a74('0x4c'),_0xb9b90[_0x5a74('0x47')]));_0x4f005b['push'](get_open_tabs(_0x5a74('0x49'),_0xb9b90[_0x5a74('0x47')]));_0x4f005b[_0x5a74('0x43')](get_open_tabs('mail',_0xb9b90[_0x5a74('0x47')]));return Promise['all'](_0x4f005b);})[_0x5a74('0x21')](function(_0x45deb7){if(_0x45deb7){var _0x15e94b=_[_0x5a74('0x29')](values[_0x5a74('0xb4')],function(_0x36dba5){return{'channel':_0x5a74('0xb5'),'id':_0x36dba5['id'],'createdAt':_0x36dba5[_0x5a74('0xb6')]};});var _0x4f2faf=_[_0x5a74('0x29')](values[_0x5a74('0xb7')],function(_0x4faf01){return{'channel':_0x5a74('0xb8'),'id':_0x4faf01['id'],'createdAt':_0x4faf01[_0x5a74('0xb6')]};});var _0x4094dd=_[_0x5a74('0x29')](values[_0x5a74('0xb9')],function(_0x5398ec){return{'channel':'OPENCHANNEL','id':_0x5398ec['id'],'createdAt':_0x5398ec[_0x5a74('0xb6')]};});var _0x2f2c39=_[_0x5a74('0x29')](values[_0x5a74('0xba')],function(_0x4188a8){return{'channel':_0x5a74('0xbb'),'id':_0x4188a8['id'],'createdAt':_0x4188a8[_0x5a74('0xb6')]};});var _0x242026=_['map'](values[_0x5a74('0xbc')],function(_0x11ac76){return{'channel':'SMS','id':_0x11ac76['id'],'createdAt':_0x11ac76[_0x5a74('0xb6')]};});var _0x49cba7=_[_0x5a74('0x29')](values['WhatsappOpenTabs'],function(_0x509212){return{'channel':_0x5a74('0xbd'),'id':_0x509212['id'],'createdAt':_0x509212[_0x5a74('0xb6')]};});var _0x3399fd=_[_0x5a74('0xbe')](_0x15e94b,_0x4f2faf,_0x4094dd,_0x2f2c39,_0x242026,_0x49cba7);var _0xca8852={'count':_0x3399fd[_0x5a74('0x62')],'rows':_0x3399fd};return _0xca8852;}else return null;})[_0x5a74('0x21')](respondWithResult(_0x3e2675,null))[_0x5a74('0x4e')](handleError(_0x3e2675,null));};exports[_0x5a74('0xbf')]=function(_0x4d008e,_0x269892){var _0x417689={};return db['User']['findOne']({'where':{'id':_0x4d008e[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](function(_0x4f03dd){if(!_0x4f03dd){throw new APINotFoundError(util[_0x5a74('0xa0')]('User\x20with\x20id\x20%s\x20not\x20found',_0x4d008e[_0x5a74('0x4f')]['id']));}return contacts[_0x5a74('0x53')]();})[_0x5a74('0x21')](function(_0x176c57){_0x4d008e[_0x5a74('0x3c')]['User']=_0x4d008e[_0x5a74('0x4f')]['id'];_0x417689=qs['getOptions'](_0x176c57,_0x4d008e);if(_0x4d008e[_0x5a74('0x3c')][_0x5a74('0xc0')](_0x5a74('0x3d'))){_0x417689[_0x5a74('0x3e')]=[{'model':db['CmList'],'as':'List','required':![]},{'model':db[_0x5a74('0xc1')],'as':_0x5a74('0xc2'),'attributes':['id',_0x5a74('0x2c'),_0x5a74('0xc3')],'where':_0x4d008e[_0x5a74('0x3c')][_0x5a74('0xc4')]?{'id':_0x4d008e[_0x5a74('0x3c')][_0x5a74('0xc4')]}:undefined,'required':_0x4d008e['query'][_0x5a74('0xc4')]?!![]:![]}];}return contacts[_0x5a74('0x81')](_0x4d008e[_0x5a74('0x3c')],_0x4d008e[_0x5a74('0x25')],_0x417689,_0x176c57);})[_0x5a74('0x21')](respondWithFilteredResult(_0x269892,_0x417689))[_0x5a74('0x4e')](APIHandleError(_0x269892));};exports[_0x5a74('0xc5')]=function(_0x489c5d,_0x11bb19){var _0x370e22;var _0xcfcb55={};var _0x2d12ae;return db[_0x5a74('0x31')][_0x5a74('0x8b')]({'where':{'id':_0x489c5d[_0x5a74('0x4f')]['id']},'attributes':['id',_0x5a74('0x2c'),_0x5a74('0x1d')]})['then'](handleEntityNotFound(_0x11bb19,null))[_0x5a74('0x21')](function(_0x414435){if(!utils[_0x5a74('0xc6')](_0x489c5d['query'][_0x5a74('0x91')])){throw new db['Sequelize']['ValidationError'](_0x5a74('0x95'));}_0x370e22=_0x414435;var _0x6120b8={};_0x6120b8[_0x5a74('0xc7')]=_[_0x5a74('0xc8')](db[_[_0x5a74('0x97')](_0x489c5d['query'][_0x5a74('0x91')])+_0x5a74('0xc9')][_0x5a74('0x32')]);_0x6120b8[_0x5a74('0x3c')]=_[_0x5a74('0xc8')](_0x489c5d[_0x5a74('0x3c')]);_0x6120b8[_0x5a74('0xca')]=_['intersection'](_0x6120b8[_0x5a74('0xc7')],_0x6120b8[_0x5a74('0x3c')]);_0xcfcb55[_0x5a74('0x42')]=_[_0x5a74('0xcb')](_0x6120b8[_0x5a74('0xc7')],qs[_0x5a74('0xcc')](_0x489c5d[_0x5a74('0x3c')]['fields']));_0xcfcb55[_0x5a74('0x42')]=_0xcfcb55[_0x5a74('0x42')][_0x5a74('0x62')]?_0xcfcb55[_0x5a74('0x42')]:_0x6120b8[_0x5a74('0xc7')];_0xcfcb55[_0x5a74('0xcd')]=qs[_0x5a74('0xce')](_0x489c5d[_0x5a74('0x3c')][_0x5a74('0xce')]);_0xcfcb55[_0x5a74('0x3b')]=qs[_0x5a74('0xca')](_[_0x5a74('0xcf')](_0x489c5d[_0x5a74('0x3c')],_0x6120b8[_0x5a74('0xca')]));if(_0x489c5d[_0x5a74('0x3c')]['filter']){_0xcfcb55[_0x5a74('0x3b')]=_[_0x5a74('0x50')](_0xcfcb55[_0x5a74('0x3b')],{'$or':_[_0x5a74('0x29')](_0xcfcb55[_0x5a74('0x42')],function(_0x143d36){var _0x5e9134={};_0x5e9134[_0x143d36]={'$like':'%'+_0x489c5d[_0x5a74('0x3c')]['filter']+'%'};return _0x5e9134;})});}_0xcfcb55=_['merge']({},_0xcfcb55,_0x489c5d[_0x5a74('0x51')]);switch(_0x370e22[_0x5a74('0x1d')]){case _0x5a74('0x23'):return db[_[_0x5a74('0x97')](_0x489c5d[_0x5a74('0x3c')][_0x5a74('0x91')])+_0x5a74('0xc9')][_0x5a74('0x81')](_0xcfcb55);case'user':case _0x5a74('0x1e'):return _0x370e22[_0x5a74('0x22')+_[_0x5a74('0x97')](_0x489c5d[_0x5a74('0x3c')][_0x5a74('0x91')])+_0x5a74('0xa6')](_0xcfcb55);default:throw new db[(_0x5a74('0x85'))][(_0x5a74('0x86'))](_0x5a74('0xd0'));}})[_0x5a74('0x21')](function(_0x204813){_0x2d12ae=_0x204813[_0x5a74('0x62')];if(!_0x489c5d[_0x5a74('0x3c')]['hasOwnProperty'](_0x5a74('0xd1'))){_0xcfcb55[_0x5a74('0x17')]=qs[_0x5a74('0x17')](_0x489c5d[_0x5a74('0x3c')]['limit']);_0xcfcb55['offset']=qs[_0x5a74('0x15')](_0x489c5d[_0x5a74('0x3c')][_0x5a74('0x15')]);}switch(_0x370e22[_0x5a74('0x1d')]){case _0x5a74('0x23'):return db[_[_0x5a74('0x97')](_0x489c5d[_0x5a74('0x3c')]['channel'])+'Queue'][_0x5a74('0x81')](_0xcfcb55);case _0x5a74('0x25'):case _0x5a74('0x1e'):return _0x370e22[_0x5a74('0x22')+_[_0x5a74('0x97')](_0x489c5d[_0x5a74('0x3c')][_0x5a74('0x91')])+_0x5a74('0xa6')](_0xcfcb55);}})[_0x5a74('0x21')](function(_0x33eb9d){return{'count':_0x2d12ae,'rows':_0x33eb9d};})[_0x5a74('0x21')](respondWithResult(_0x11bb19,null))['catch'](handleError(_0x11bb19,null));};exports[_0x5a74('0xd2')]=function(_0x5b4642,_0x1a86c9){var _0x3e4ae4={};var _0x47a1ea={};var _0x337a62;var _0x1fa810;return db['User'][_0x5a74('0x8b')]({'where':{'id':_0x5b4642[_0x5a74('0x4f')]['id']}})['then'](handleEntityNotFound(_0x1a86c9,null))[_0x5a74('0x21')](function(_0x3bcdbf){if(_0x3bcdbf){_0x337a62=_0x3bcdbf;_0x47a1ea[_0x5a74('0xc7')]=_[_0x5a74('0xc8')](db[_0x5a74('0xa2')]['rawAttributes']);_0x47a1ea[_0x5a74('0x3c')]=_[_0x5a74('0xc8')](_0x5b4642[_0x5a74('0x3c')]);_0x47a1ea[_0x5a74('0xca')]=_['intersection'](_0x47a1ea['model'],_0x47a1ea[_0x5a74('0x3c')]);_0x3e4ae4[_0x5a74('0x42')]=_['intersection'](_0x47a1ea[_0x5a74('0xc7')],qs[_0x5a74('0xcc')](_0x5b4642[_0x5a74('0x3c')]['fields']));_0x3e4ae4['attributes']=_0x3e4ae4[_0x5a74('0x42')][_0x5a74('0x62')]?_0x3e4ae4[_0x5a74('0x42')]:_0x47a1ea['model'];_0x3e4ae4[_0x5a74('0xcd')]=qs[_0x5a74('0xce')](_0x5b4642[_0x5a74('0x3c')][_0x5a74('0xce')]);_0x3e4ae4[_0x5a74('0x3b')]=qs[_0x5a74('0xca')](_[_0x5a74('0xcf')](_0x5b4642[_0x5a74('0x3c')],_0x47a1ea[_0x5a74('0xca')]));if(_0x5b4642['query']['filter']){_0x3e4ae4[_0x5a74('0x3b')]=_[_0x5a74('0x50')](_0x3e4ae4['where'],{'$or':_['map'](_0x3e4ae4['attributes'],function(_0x4aa462){var _0x2347a1={};_0x2347a1[_0x4aa462]={'$like':'%'+_0x5b4642[_0x5a74('0x3c')][_0x5a74('0x33')]+'%'};return _0x2347a1;})});}_0x3e4ae4=_[_0x5a74('0x50')]({},_0x3e4ae4,_0x5b4642[_0x5a74('0x51')]);return _0x337a62[_0x5a74('0xd2')](_0x3e4ae4);}})['then'](function(_0x385fa3){if(_0x385fa3){_0x1fa810=_0x385fa3['length'];if(!_0x5b4642[_0x5a74('0x3c')]['hasOwnProperty'](_0x5a74('0xd1'))){_0x3e4ae4['limit']=qs[_0x5a74('0x17')](_0x5b4642['query'][_0x5a74('0x17')]);_0x3e4ae4['offset']=qs[_0x5a74('0x15')](_0x5b4642[_0x5a74('0x3c')][_0x5a74('0x15')]);}return _0x337a62[_0x5a74('0xd2')](_0x3e4ae4);}})[_0x5a74('0x21')](function(_0x25a0d3){if(_0x25a0d3){return _0x25a0d3?{'count':_0x1fa810,'rows':_0x25a0d3}:null;}})['then'](respondWithResult(_0x1a86c9,null))[_0x5a74('0x4e')](handleError(_0x1a86c9,null));};exports[_0x5a74('0xd3')]=function(_0x3b347f,_0x441260){var _0x409bfa={};var _0x5ef387={};var _0x1c336b;var _0x25e60a;return db['User']['findOne']({'where':{'id':_0x3b347f[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x441260,null))['then'](function(_0x532c1f){if(_0x532c1f){_0x1c336b=_0x532c1f;_0x5ef387[_0x5a74('0xc7')]=_[_0x5a74('0xc8')](db['ChatGroup'][_0x5a74('0x32')]);_0x5ef387[_0x5a74('0x3c')]=_[_0x5a74('0xc8')](_0x3b347f[_0x5a74('0x3c')]);_0x5ef387[_0x5a74('0xca')]=_[_0x5a74('0xcb')](_0x5ef387[_0x5a74('0xc7')],_0x5ef387[_0x5a74('0x3c')]);_0x409bfa[_0x5a74('0x42')]=_[_0x5a74('0xcb')](_0x5ef387['model'],qs[_0x5a74('0xcc')](_0x3b347f[_0x5a74('0x3c')][_0x5a74('0xcc')]));_0x409bfa[_0x5a74('0x42')]=_0x409bfa[_0x5a74('0x42')][_0x5a74('0x62')]?_0x409bfa['attributes']:_0x5ef387[_0x5a74('0xc7')];_0x409bfa[_0x5a74('0xcd')]=qs[_0x5a74('0xce')](_0x3b347f[_0x5a74('0x3c')][_0x5a74('0xce')]);_0x409bfa[_0x5a74('0x3b')]=qs['filters'](_[_0x5a74('0xcf')](_0x3b347f[_0x5a74('0x3c')],_0x5ef387[_0x5a74('0xca')]));if(_0x3b347f[_0x5a74('0x3c')]['filter']){_0x409bfa[_0x5a74('0x3b')]=_[_0x5a74('0x50')](_0x409bfa[_0x5a74('0x3b')],{'$or':_[_0x5a74('0x29')](_0x409bfa[_0x5a74('0x42')],function(_0x4d670f){var _0x21fafe={};_0x21fafe[_0x4d670f]={'$like':'%'+_0x3b347f[_0x5a74('0x3c')]['filter']+'%'};return _0x21fafe;})});}_0x409bfa=_[_0x5a74('0x50')]({},_0x409bfa,_0x3b347f[_0x5a74('0x51')]);return _0x1c336b[_0x5a74('0xd3')](_0x409bfa);}})['then'](function(_0x24d527){if(_0x24d527){_0x25e60a=_0x24d527[_0x5a74('0x62')];if(!_0x3b347f[_0x5a74('0x3c')]['hasOwnProperty']('nolimit')){_0x409bfa['limit']=qs[_0x5a74('0x17')](_0x3b347f['query'][_0x5a74('0x17')]);_0x409bfa['offset']=qs[_0x5a74('0x15')](_0x3b347f[_0x5a74('0x3c')]['offset']);}return _0x1c336b[_0x5a74('0xd3')](_0x409bfa);}})['then'](function(_0x49e435){if(_0x49e435){return _0x49e435?{'count':_0x25e60a,'rows':_0x49e435}:null;}})[_0x5a74('0x21')](respondWithResult(_0x441260,null))[_0x5a74('0x4e')](handleError(_0x441260,null));};exports[_0x5a74('0xd4')]=function(_0x54edb3,_0x1c3d33){var _0x506d97={'raw':!![],'where':{}};var _0x745696={};var _0x58a981={'count':0x0,'rows':[]};return db[_0x5a74('0x31')][_0x5a74('0x8b')]({'where':{'id':_0x54edb3[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x1c3d33,null))[_0x5a74('0x21')](function(_0x3f4122){if(_0x3f4122){_0x745696[_0x5a74('0xc7')]=_['keys'](db[_0x5a74('0xd5')][_0x5a74('0x32')]);_0x745696['query']=_[_0x5a74('0xc8')](_0x54edb3[_0x5a74('0x3c')]);_0x745696[_0x5a74('0xca')]=_[_0x5a74('0xcb')](_0x745696[_0x5a74('0xc7')],_0x745696[_0x5a74('0x3c')]);_0x506d97[_0x5a74('0x42')]=_[_0x5a74('0xcb')](_0x745696[_0x5a74('0xc7')],qs[_0x5a74('0xcc')](_0x54edb3[_0x5a74('0x3c')][_0x5a74('0xcc')]));_0x506d97[_0x5a74('0x42')]=_0x506d97['attributes']['length']?_0x506d97[_0x5a74('0x42')]:_0x745696['model'];if(!_0x54edb3[_0x5a74('0x3c')]['hasOwnProperty']('nolimit')){_0x506d97[_0x5a74('0x17')]=qs[_0x5a74('0x17')](_0x54edb3['query'][_0x5a74('0x17')]);_0x506d97[_0x5a74('0x15')]=qs[_0x5a74('0x15')](_0x54edb3[_0x5a74('0x3c')][_0x5a74('0x15')]);}_0x506d97[_0x5a74('0xcd')]=qs[_0x5a74('0xce')](_0x54edb3['query'][_0x5a74('0xce')]);_0x506d97[_0x5a74('0x3b')]=qs[_0x5a74('0xca')](_['pick'](_0x54edb3[_0x5a74('0x3c')],_0x745696['filters']));_0x506d97[_0x5a74('0x3b')][_0x5a74('0xd6')]=_0x3f4122['id'];if(_0x54edb3[_0x5a74('0x3c')][_0x5a74('0x33')]){_0x506d97[_0x5a74('0x3b')]=_[_0x5a74('0x50')](_0x506d97[_0x5a74('0x3b')],{'$or':_[_0x5a74('0x29')](_0x506d97['attributes'],function(_0x15b296){var _0x13b6aa={};_0x13b6aa[_0x15b296]={'$like':'%'+_0x54edb3[_0x5a74('0x3c')][_0x5a74('0x33')]+'%'};return _0x13b6aa;})});}_0x506d97=_[_0x5a74('0x50')]({},_0x506d97,_0x54edb3[_0x5a74('0x51')]);return db[_0x5a74('0xd5')][_0x5a74('0x18')]({'where':_0x506d97['where']})['then'](function(_0x3b3315){_0x58a981[_0x5a74('0x18')]=_0x3b3315;if(_0x54edb3['query'][_0x5a74('0x3d')]){_0x506d97[_0x5a74('0x3e')]=[{'all':!![]}];}return db[_0x5a74('0xd5')][_0x5a74('0x81')](_0x506d97);})[_0x5a74('0x21')](function(_0x2334a0){_0x58a981[_0x5a74('0x44')]=_0x2334a0;return _0x58a981;});}})[_0x5a74('0x21')](respondWithFilteredResult(_0x1c3d33,_0x506d97))[_0x5a74('0x4e')](handleError(_0x1c3d33,null));};exports['getScreenRecordings']=function(_0x15ca11,_0x2c7884){var _0x27c942={'raw':!![],'where':{}};var _0x17bf33={};var _0x3fcbab={'count':0x0,'rows':[]};return db[_0x5a74('0x31')][_0x5a74('0x8b')]({'where':{'id':_0x15ca11[_0x5a74('0x4f')]['id']}})['then'](handleEntityNotFound(_0x2c7884,null))[_0x5a74('0x21')](function(_0x14ace6){if(_0x14ace6){_0x17bf33[_0x5a74('0xc7')]=_[_0x5a74('0xc8')](db[_0x5a74('0xd7')][_0x5a74('0x32')]);_0x17bf33[_0x5a74('0x3c')]=_[_0x5a74('0xc8')](_0x15ca11[_0x5a74('0x3c')]);_0x17bf33['filters']=_[_0x5a74('0xcb')](_0x17bf33[_0x5a74('0xc7')],_0x17bf33[_0x5a74('0x3c')]);_0x27c942[_0x5a74('0x42')]=_[_0x5a74('0xcb')](_0x17bf33[_0x5a74('0xc7')],qs[_0x5a74('0xcc')](_0x15ca11['query'][_0x5a74('0xcc')]));_0x27c942[_0x5a74('0x42')]=_0x27c942[_0x5a74('0x42')][_0x5a74('0x62')]?_0x27c942['attributes']:_0x17bf33[_0x5a74('0xc7')];if(!_0x15ca11[_0x5a74('0x3c')]['hasOwnProperty']('nolimit')){_0x27c942[_0x5a74('0x17')]=qs[_0x5a74('0x17')](_0x15ca11[_0x5a74('0x3c')][_0x5a74('0x17')]);_0x27c942['offset']=qs['offset'](_0x15ca11[_0x5a74('0x3c')][_0x5a74('0x15')]);}_0x27c942[_0x5a74('0xcd')]=qs[_0x5a74('0xce')](_0x15ca11[_0x5a74('0x3c')][_0x5a74('0xce')]);_0x27c942[_0x5a74('0x3b')]=qs[_0x5a74('0xca')](_['pick'](_0x15ca11[_0x5a74('0x3c')],_0x17bf33['filters']));_0x27c942[_0x5a74('0x3b')][_0x5a74('0xd6')]=_0x14ace6['id'];if(_0x15ca11[_0x5a74('0x3c')][_0x5a74('0x33')]){_0x27c942[_0x5a74('0x3b')]=_[_0x5a74('0x50')](_0x27c942[_0x5a74('0x3b')],{'$or':_[_0x5a74('0x29')](_0x27c942[_0x5a74('0x42')],function(_0x166d05){var _0x230c54={};_0x230c54[_0x166d05]={'$like':'%'+_0x15ca11[_0x5a74('0x3c')][_0x5a74('0x33')]+'%'};return _0x230c54;})});}_0x27c942=_[_0x5a74('0x50')]({},_0x27c942,_0x15ca11['options']);return db[_0x5a74('0xd7')][_0x5a74('0x18')]({'where':_0x27c942['where']})[_0x5a74('0x21')](function(_0x280d49){_0x3fcbab[_0x5a74('0x18')]=_0x280d49;if(_0x15ca11[_0x5a74('0x3c')]['includeAll']){_0x27c942[_0x5a74('0x3e')]=[{'all':!![]}];}return db[_0x5a74('0xd7')]['findAll'](_0x27c942);})[_0x5a74('0x21')](function(_0x2d7bf1){_0x3fcbab['rows']=_0x2d7bf1;return _0x3fcbab;});}})[_0x5a74('0x21')](respondWithFilteredResult(_0x2c7884,_0x27c942))[_0x5a74('0x4e')](handleError(_0x2c7884,null));};exports[_0x5a74('0xd8')]=function(_0x5e8370,_0x1941a2){var _0x218012={};var _0x19d83c={};var _0x59c7cd;var _0x1d9e5c;return db[_0x5a74('0x31')]['findOne']({'where':{'id':_0x5e8370[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x1941a2,null))[_0x5a74('0x21')](function(_0x960672){if(_0x960672){_0x59c7cd=_0x960672;_0x19d83c[_0x5a74('0xc7')]=_['keys'](db[_0x5a74('0xd9')][_0x5a74('0x32')]);_0x19d83c[_0x5a74('0x3c')]=_['keys'](_0x5e8370[_0x5a74('0x3c')]);_0x19d83c[_0x5a74('0xca')]=_[_0x5a74('0xcb')](_0x19d83c['model'],_0x19d83c[_0x5a74('0x3c')]);_0x218012[_0x5a74('0x42')]=_['intersection'](_0x19d83c[_0x5a74('0xc7')],qs['fields'](_0x5e8370[_0x5a74('0x3c')][_0x5a74('0xcc')]));_0x218012[_0x5a74('0x42')]=_0x218012[_0x5a74('0x42')][_0x5a74('0x62')]?_0x218012[_0x5a74('0x42')]:_0x19d83c['model'];_0x218012[_0x5a74('0xcd')]=qs['sort'](_0x5e8370[_0x5a74('0x3c')][_0x5a74('0xce')]);_0x218012['where']=qs[_0x5a74('0xca')](_[_0x5a74('0xcf')](_0x5e8370['query'],_0x19d83c[_0x5a74('0xca')]));if(_0x5e8370[_0x5a74('0x3c')]['filter']){_0x218012[_0x5a74('0x3b')]=_[_0x5a74('0x50')](_0x218012[_0x5a74('0x3b')],{'$or':_[_0x5a74('0x29')](_0x218012[_0x5a74('0x42')],function(_0x47988d){var _0x337f8b={};_0x337f8b[_0x47988d]={'$like':'%'+_0x5e8370[_0x5a74('0x3c')][_0x5a74('0x33')]+'%'};return _0x337f8b;})});}_0x218012=_[_0x5a74('0x50')]({},_0x218012,_0x5e8370[_0x5a74('0x51')]);return _0x59c7cd['getChatInteractions'](_0x218012);}})[_0x5a74('0x21')](function(_0x2e5fbe){if(_0x2e5fbe){_0x1d9e5c=_0x2e5fbe[_0x5a74('0x62')];if(!_0x5e8370[_0x5a74('0x3c')][_0x5a74('0xc0')](_0x5a74('0xd1'))){_0x218012[_0x5a74('0x17')]=qs[_0x5a74('0x17')](_0x5e8370['query']['limit']);_0x218012['offset']=qs[_0x5a74('0x15')](_0x5e8370[_0x5a74('0x3c')][_0x5a74('0x15')]);}return _0x59c7cd[_0x5a74('0xd8')](_0x218012);}})[_0x5a74('0x21')](function(_0x45702a){if(_0x45702a){return _0x45702a?{'count':_0x1d9e5c,'rows':_0x45702a}:null;}})['then'](respondWithResult(_0x1941a2,null))[_0x5a74('0x4e')](handleError(_0x1941a2,null));};exports[_0x5a74('0xda')]=function(_0x4f54aa,_0x59b8f2){var _0x11527f={};var _0x3551ce={};var _0x204855;var _0x51ab5d;return db[_0x5a74('0x31')][_0x5a74('0x8b')]({'where':{'id':_0x4f54aa[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x59b8f2,null))['then'](function(_0xc79cae){if(_0xc79cae){_0x204855=_0xc79cae;_0x3551ce[_0x5a74('0xc7')]=_[_0x5a74('0xc8')](db[_0x5a74('0xdb')][_0x5a74('0x32')]);_0x3551ce[_0x5a74('0x3c')]=_[_0x5a74('0xc8')](_0x4f54aa[_0x5a74('0x3c')]);_0x3551ce[_0x5a74('0xca')]=_[_0x5a74('0xcb')](_0x3551ce[_0x5a74('0xc7')],_0x3551ce[_0x5a74('0x3c')]);_0x11527f[_0x5a74('0x42')]=_[_0x5a74('0xcb')](_0x3551ce[_0x5a74('0xc7')],qs[_0x5a74('0xcc')](_0x4f54aa[_0x5a74('0x3c')][_0x5a74('0xcc')]));_0x11527f[_0x5a74('0x42')]=_0x11527f[_0x5a74('0x42')]['length']?_0x11527f[_0x5a74('0x42')]:_0x3551ce['model'];_0x11527f[_0x5a74('0xcd')]=qs['sort'](_0x4f54aa['query'][_0x5a74('0xce')]);_0x11527f['where']=qs['filters'](_[_0x5a74('0xcf')](_0x4f54aa[_0x5a74('0x3c')],_0x3551ce[_0x5a74('0xca')]));if(_0x4f54aa[_0x5a74('0x3c')][_0x5a74('0x33')]){_0x11527f['where']=_[_0x5a74('0x50')](_0x11527f[_0x5a74('0x3b')],{'$or':_[_0x5a74('0x29')](_0x11527f['attributes'],function(_0x461d83){var _0xf33549={};_0xf33549[_0x461d83]={'$like':'%'+_0x4f54aa['query']['filter']+'%'};return _0xf33549;})});}_0x11527f=_['merge']({},_0x11527f,_0x4f54aa[_0x5a74('0x51')]);return _0x204855[_0x5a74('0xda')](_0x11527f);}})[_0x5a74('0x21')](function(_0x273515){if(_0x273515){_0x51ab5d=_0x273515[_0x5a74('0x62')];if(!_0x4f54aa['query'][_0x5a74('0xc0')](_0x5a74('0xd1'))){_0x11527f[_0x5a74('0x17')]=qs[_0x5a74('0x17')](_0x4f54aa[_0x5a74('0x3c')][_0x5a74('0x17')]);_0x11527f[_0x5a74('0x15')]=qs[_0x5a74('0x15')](_0x4f54aa[_0x5a74('0x3c')]['offset']);}return _0x204855[_0x5a74('0xda')](_0x11527f);}})[_0x5a74('0x21')](function(_0x1932b0){if(_0x1932b0){return _0x1932b0?{'count':_0x51ab5d,'rows':_0x1932b0}:null;}})[_0x5a74('0x21')](respondWithResult(_0x59b8f2,null))['catch'](handleError(_0x59b8f2,null));};exports['getMailInteractions']=function(_0x6a8bc7,_0x181b30){var _0x3e66a8={'raw':!![],'where':{}};var _0xe53bdb={};var _0xd3cb6b={'count':0x0,'rows':[]};return db['User'][_0x5a74('0x8b')]({'where':{'id':_0x6a8bc7[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x181b30,null))[_0x5a74('0x21')](function(_0x4b81da){if(_0x4b81da){_0xe53bdb[_0x5a74('0xc7')]=_[_0x5a74('0xc8')](db[_0x5a74('0xdc')]['rawAttributes']);_0xe53bdb[_0x5a74('0x3c')]=_[_0x5a74('0xc8')](_0x6a8bc7['query']);_0xe53bdb[_0x5a74('0xca')]=_['intersection'](_0xe53bdb[_0x5a74('0xc7')],_0xe53bdb['query']);_0x3e66a8[_0x5a74('0x42')]=_['intersection'](_0xe53bdb['model'],qs[_0x5a74('0xcc')](_0x6a8bc7[_0x5a74('0x3c')][_0x5a74('0xcc')]));_0x3e66a8[_0x5a74('0x42')]=_0x3e66a8[_0x5a74('0x42')][_0x5a74('0x62')]?_0x3e66a8[_0x5a74('0x42')]:_0xe53bdb[_0x5a74('0xc7')];if(!_0x6a8bc7[_0x5a74('0x3c')]['hasOwnProperty']('nolimit')){_0x3e66a8['limit']=qs[_0x5a74('0x17')](_0x6a8bc7[_0x5a74('0x3c')][_0x5a74('0x17')]);_0x3e66a8[_0x5a74('0x15')]=qs[_0x5a74('0x15')](_0x6a8bc7[_0x5a74('0x3c')][_0x5a74('0x15')]);}_0x3e66a8['order']=qs[_0x5a74('0xce')](_0x6a8bc7[_0x5a74('0x3c')]['sort']);_0x3e66a8['where']=qs[_0x5a74('0xca')](_[_0x5a74('0xcf')](_0x6a8bc7[_0x5a74('0x3c')],_0xe53bdb['filters']));_0x3e66a8[_0x5a74('0x3b')][_0x5a74('0xd6')]=_0x4b81da['id'];if(_0x6a8bc7[_0x5a74('0x3c')][_0x5a74('0x33')]){_0x3e66a8[_0x5a74('0x3b')]=_['merge'](_0x3e66a8[_0x5a74('0x3b')],{'$or':_[_0x5a74('0x29')](_0x3e66a8['attributes'],function(_0x3e4eba){var _0x4520b1={};_0x4520b1[_0x3e4eba]={'$like':'%'+_0x6a8bc7[_0x5a74('0x3c')][_0x5a74('0x33')]+'%'};return _0x4520b1;})});}_0x3e66a8=_[_0x5a74('0x50')]({},_0x3e66a8,_0x6a8bc7[_0x5a74('0x51')]);return db[_0x5a74('0xdc')][_0x5a74('0x18')]({'where':_0x3e66a8[_0x5a74('0x3b')]})[_0x5a74('0x21')](function(_0x2eba92){_0xd3cb6b[_0x5a74('0x18')]=_0x2eba92;if(_0x6a8bc7[_0x5a74('0x3c')][_0x5a74('0x3d')]){_0x3e66a8[_0x5a74('0x3e')]=[{'all':!![]}];}return db[_0x5a74('0xdc')][_0x5a74('0x81')](_0x3e66a8);})[_0x5a74('0x21')](function(_0x5ecec5){_0xd3cb6b[_0x5a74('0x44')]=_0x5ecec5;return _0xd3cb6b;});}})[_0x5a74('0x21')](respondWithFilteredResult(_0x181b30,_0x3e66a8))[_0x5a74('0x4e')](handleError(_0x181b30,null));};exports[_0x5a74('0xdd')]=function(_0x3d46e7,_0x1ed2da){var _0x3092c4={};var _0x1b089d={};var _0x49bc3b;var _0x3b36fc;return db['User']['findOne']({'where':{'id':_0x3d46e7[_0x5a74('0x4f')]['id']}})['then'](handleEntityNotFound(_0x1ed2da,null))['then'](function(_0x4b961a){if(_0x4b961a){_0x49bc3b=_0x4b961a;_0x1b089d[_0x5a74('0xc7')]=_['keys'](db['SmsInteraction'][_0x5a74('0x32')]);_0x1b089d[_0x5a74('0x3c')]=_[_0x5a74('0xc8')](_0x3d46e7[_0x5a74('0x3c')]);_0x1b089d[_0x5a74('0xca')]=_[_0x5a74('0xcb')](_0x1b089d[_0x5a74('0xc7')],_0x1b089d[_0x5a74('0x3c')]);_0x3092c4[_0x5a74('0x42')]=_['intersection'](_0x1b089d[_0x5a74('0xc7')],qs[_0x5a74('0xcc')](_0x3d46e7[_0x5a74('0x3c')][_0x5a74('0xcc')]));_0x3092c4[_0x5a74('0x42')]=_0x3092c4['attributes'][_0x5a74('0x62')]?_0x3092c4[_0x5a74('0x42')]:_0x1b089d[_0x5a74('0xc7')];_0x3092c4[_0x5a74('0xcd')]=qs[_0x5a74('0xce')](_0x3d46e7['query']['sort']);_0x3092c4[_0x5a74('0x3b')]=qs[_0x5a74('0xca')](_[_0x5a74('0xcf')](_0x3d46e7['query'],_0x1b089d[_0x5a74('0xca')]));if(_0x3d46e7['query']['filter']){_0x3092c4[_0x5a74('0x3b')]=_[_0x5a74('0x50')](_0x3092c4[_0x5a74('0x3b')],{'$or':_[_0x5a74('0x29')](_0x3092c4[_0x5a74('0x42')],function(_0x432445){var _0xb87539={};_0xb87539[_0x432445]={'$like':'%'+_0x3d46e7[_0x5a74('0x3c')][_0x5a74('0x33')]+'%'};return _0xb87539;})});}_0x3092c4=_[_0x5a74('0x50')]({},_0x3092c4,_0x3d46e7[_0x5a74('0x51')]);return _0x49bc3b[_0x5a74('0xdd')](_0x3092c4);}})['then'](function(_0x10fe54){if(_0x10fe54){_0x3b36fc=_0x10fe54[_0x5a74('0x62')];if(!_0x3d46e7['query'][_0x5a74('0xc0')]('nolimit')){_0x3092c4[_0x5a74('0x17')]=qs[_0x5a74('0x17')](_0x3d46e7['query'][_0x5a74('0x17')]);_0x3092c4[_0x5a74('0x15')]=qs['offset'](_0x3d46e7[_0x5a74('0x3c')][_0x5a74('0x15')]);}return _0x49bc3b[_0x5a74('0xdd')](_0x3092c4);}})[_0x5a74('0x21')](function(_0x11979d){if(_0x11979d){return _0x11979d?{'count':_0x3b36fc,'rows':_0x11979d}:null;}})[_0x5a74('0x21')](respondWithResult(_0x1ed2da,null))['catch'](handleError(_0x1ed2da,null));};exports['getFaxInteractions']=function(_0x318db2,_0x4139c1){var _0x357086={};var _0x22e387={};var _0xf01363;var _0x27d108;return db['User']['findOne']({'where':{'id':_0x318db2['params']['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x4139c1,null))['then'](function(_0x2d342f){if(_0x2d342f){_0xf01363=_0x2d342f;_0x22e387[_0x5a74('0xc7')]=_[_0x5a74('0xc8')](db[_0x5a74('0xde')][_0x5a74('0x32')]);_0x22e387[_0x5a74('0x3c')]=_[_0x5a74('0xc8')](_0x318db2['query']);_0x22e387[_0x5a74('0xca')]=_[_0x5a74('0xcb')](_0x22e387[_0x5a74('0xc7')],_0x22e387[_0x5a74('0x3c')]);_0x357086[_0x5a74('0x42')]=_[_0x5a74('0xcb')](_0x22e387[_0x5a74('0xc7')],qs[_0x5a74('0xcc')](_0x318db2[_0x5a74('0x3c')][_0x5a74('0xcc')]));_0x357086[_0x5a74('0x42')]=_0x357086[_0x5a74('0x42')][_0x5a74('0x62')]?_0x357086[_0x5a74('0x42')]:_0x22e387[_0x5a74('0xc7')];_0x357086[_0x5a74('0xcd')]=qs[_0x5a74('0xce')](_0x318db2[_0x5a74('0x3c')][_0x5a74('0xce')]);_0x357086[_0x5a74('0x3b')]=qs['filters'](_[_0x5a74('0xcf')](_0x318db2[_0x5a74('0x3c')],_0x22e387[_0x5a74('0xca')]));if(_0x318db2[_0x5a74('0x3c')][_0x5a74('0x33')]){_0x357086[_0x5a74('0x3b')]=_[_0x5a74('0x50')](_0x357086['where'],{'$or':_['map'](_0x357086['attributes'],function(_0x5470be){var _0x4d2df2={};_0x4d2df2[_0x5470be]={'$like':'%'+_0x318db2[_0x5a74('0x3c')][_0x5a74('0x33')]+'%'};return _0x4d2df2;})});}_0x357086=_[_0x5a74('0x50')]({},_0x357086,_0x318db2[_0x5a74('0x51')]);return _0xf01363['getFaxInteractions'](_0x357086);}})['then'](function(_0x480839){if(_0x480839){_0x27d108=_0x480839[_0x5a74('0x62')];if(!_0x318db2[_0x5a74('0x3c')]['hasOwnProperty'](_0x5a74('0xd1'))){_0x357086[_0x5a74('0x17')]=qs[_0x5a74('0x17')](_0x318db2[_0x5a74('0x3c')][_0x5a74('0x17')]);_0x357086[_0x5a74('0x15')]=qs[_0x5a74('0x15')](_0x318db2[_0x5a74('0x3c')][_0x5a74('0x15')]);}return _0xf01363[_0x5a74('0xdf')](_0x357086);}})[_0x5a74('0x21')](function(_0x37aabb){if(_0x37aabb){return _0x37aabb?{'count':_0x27d108,'rows':_0x37aabb}:null;}})[_0x5a74('0x21')](respondWithResult(_0x4139c1,null))[_0x5a74('0x4e')](handleError(_0x4139c1,null));};exports[_0x5a74('0xe0')]=function(_0x166f7b,_0xba42f6){var _0x3ab078={};var _0x33fca6={};var _0x32ef0f;var _0x581280;return db[_0x5a74('0x31')][_0x5a74('0x8b')]({'where':{'id':_0x166f7b[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0xba42f6,null))['then'](function(_0x45a8b3){if(_0x45a8b3){_0x32ef0f=_0x45a8b3;_0x33fca6['model']=_['keys'](db[_0x5a74('0xe1')][_0x5a74('0x32')]);_0x33fca6[_0x5a74('0x3c')]=_[_0x5a74('0xc8')](_0x166f7b[_0x5a74('0x3c')]);_0x33fca6[_0x5a74('0xca')]=_[_0x5a74('0xcb')](_0x33fca6[_0x5a74('0xc7')],_0x33fca6[_0x5a74('0x3c')]);_0x3ab078[_0x5a74('0x42')]=_[_0x5a74('0xcb')](_0x33fca6['model'],qs[_0x5a74('0xcc')](_0x166f7b[_0x5a74('0x3c')][_0x5a74('0xcc')]));_0x3ab078[_0x5a74('0x42')]=_0x3ab078[_0x5a74('0x42')]['length']?_0x3ab078['attributes']:_0x33fca6['model'];_0x3ab078[_0x5a74('0xcd')]=qs['sort'](_0x166f7b[_0x5a74('0x3c')]['sort']);_0x3ab078['where']=qs[_0x5a74('0xca')](_[_0x5a74('0xcf')](_0x166f7b['query'],_0x33fca6[_0x5a74('0xca')]));if(_0x166f7b['query'][_0x5a74('0x33')]){_0x3ab078['where']=_[_0x5a74('0x50')](_0x3ab078['where'],{'$or':_['map'](_0x3ab078[_0x5a74('0x42')],function(_0x4b1945){var _0x1063c8={};_0x1063c8[_0x4b1945]={'$like':'%'+_0x166f7b[_0x5a74('0x3c')][_0x5a74('0x33')]+'%'};return _0x1063c8;})});}_0x3ab078=_[_0x5a74('0x50')]({},_0x3ab078,_0x166f7b[_0x5a74('0x51')]);return _0x32ef0f[_0x5a74('0xe0')](_0x3ab078);}})[_0x5a74('0x21')](function(_0x202090){if(_0x202090){_0x581280=_0x202090['length'];if(!_0x166f7b[_0x5a74('0x3c')][_0x5a74('0xc0')](_0x5a74('0xd1'))){_0x3ab078[_0x5a74('0x17')]=qs['limit'](_0x166f7b['query'][_0x5a74('0x17')]);_0x3ab078['offset']=qs[_0x5a74('0x15')](_0x166f7b['query'][_0x5a74('0x15')]);}return _0x32ef0f[_0x5a74('0xe0')](_0x3ab078);}})[_0x5a74('0x21')](function(_0x427677){if(_0x427677){return _0x427677?{'count':_0x581280,'rows':_0x427677}:null;}})['then'](respondWithResult(_0xba42f6,null))[_0x5a74('0x4e')](handleError(_0xba42f6,null));};exports['login']=function(_0x3a126b,_0x326741,_0x25fb7d){var _0x2342f5;var _0xbdba8f;var _0x67522d;var _0x5d6fcc=!_['isNil'](_0x3a126b[_0x5a74('0x4f')]['id'])?_0x3a126b[_0x5a74('0x4f')]['id']:!_['isNil'](_0x3a126b[_0x5a74('0x25')]['id'])?_0x3a126b[_0x5a74('0x25')]['id']:null;return db[_0x5a74('0x31')][_0x5a74('0x2b')]({'where':{'id':_0x5d6fcc,'role':{'$or':[_0x5a74('0x23'),_0x5a74('0x25'),_0x5a74('0x1e')]}},'attributes':['id',_0x5a74('0x2c'),_0x5a74('0xe2'),'mobile',_0x5a74('0x1d'),'internal',_0x5a74('0x92')]})[_0x5a74('0x21')](function(_0x12cbee){if(_0x12cbee){if(_0x12cbee[_0x5a74('0x1d')]===_0x5a74('0x1e')){_0x2342f5=_0x12cbee;if(_0x3a126b[_0x5a74('0x52')][_0x5a74('0x94')]){_0x67522d=util['format']('LOCAL/%s@from-sip/n',_0x2342f5[_0x3a126b[_0x5a74('0x52')][_0x5a74('0x94')]]);}else if(_0x3a126b[_0x5a74('0x52')][_0x5a74('0xe3')]){_0x67522d=util[_0x5a74('0xa0')]('SIP/%s',_0x3a126b['body'][_0x5a74('0xe3')]);}else{_0x67522d=util[_0x5a74('0xa0')]('SIP/%s',_0x2342f5[_0x5a74('0x2c')]);}socket['to'](util[_0x5a74('0xa0')]('user:%s',_0x2342f5[_0x5a74('0x2c')]))['emit'](_0x5a74('0xe4'),{'user':{'id':_0x2342f5['id'],'name':_0x2342f5[_0x5a74('0x2c')]},'ip':_0x3a126b[_0x5a74('0xe5')][_0x5a74('0xe6')]||_0x3a126b[_0x5a74('0xe7')]['remoteAddress']||_0x3a126b['socket'][_0x5a74('0xe8')]||_0x3a126b['connection'][_0x5a74('0xe9')][_0x5a74('0xe8')]});return db[_0x5a74('0xa2')][_0x5a74('0x20')]({'where':{'membername':_0x2342f5[_0x5a74('0x2c')]},'individualHooks':!![]});}}else{throw new db['Sequelize'][(_0x5a74('0x86'))](_0x5a74('0xea'));}})[_0x5a74('0x21')](function(){if(_0x2342f5){return _0x2342f5[_0x5a74('0xeb')]({'raw':!![]});}})[_0x5a74('0x21')](function(_0x577974){if(_0x2342f5){if(_0x577974){_0xbdba8f=_0x577974;if(_0xbdba8f[_0x5a74('0x62')]){var _0x4daa04=_0xbdba8f['map'](function(_0x597e4f){var _0x428603={'membername':_0x2342f5['name'],'UserId':_0x2342f5['id'],'queue_name':_0x597e4f[_0x5a74('0x2c')],'VoiceQueueId':_0x597e4f['id'],'interface':_0x67522d,'paused':_0x2342f5['loginInPause']||![],'penalty':_0x597e4f[_0x5a74('0xec')]||0x0};return db[_0x5a74('0xa2')]['upsert'](_0x428603);});return Promise['all'](_0x4daa04);}}}})[_0x5a74('0x21')](function(){if(_0x2342f5){return db[_0x5a74('0xed')][_0x5a74('0x81')]({'where':{'membername':_0x2342f5[_0x5a74('0x2c')],'exitAt':null}});}})[_0x5a74('0x21')](function(_0x290d9a){if(_0x2342f5){var _0x59a177=[];_0x290d9a[_0x5a74('0xee')](function(_0x948732){_0x59a177[_0x5a74('0x43')](_0x948732['update']({'exitAt':moment()[_0x5a74('0xa0')](_0x5a74('0xef'))}));});return Promise[_0x5a74('0x4d')](_0x59a177);}})['then'](function(){if(_0x2342f5){var _0x444d85=[];var _0x4ddf51=[];var _0x1264ba=utils[_0x5a74('0xf0')]();var _0x334764={'membername':_0x2342f5[_0x5a74('0x2c')],'interface':_0x67522d,'enterAt':moment()[_0x5a74('0xa0')](_0x5a74('0xef')),'role':_0x2342f5[_0x5a74('0x1d')],'internal':_0x2342f5['internal']};_0x1264ba[_0x5a74('0xee')](function(_0x4f0b82){_0x444d85[_0x5a74('0x43')](_[_0x5a74('0x50')]({'channel':_0x4f0b82,'type':_0x5a74('0xf1'),'data1':_0x3a126b[_0x5a74('0x52')]['device'],'data2':_0x67522d},_0x334764));if(_0x2342f5[_0x5a74('0x92')]){_0x4ddf51[_0x5a74('0x43')](_['merge']({'channel':_0x4f0b82,'type':_0x5a74('0xf2'),'data1':_0x5a74('0xf3')},_0x334764));}});return db[_0x5a74('0xed')][_0x5a74('0xf4')](_0x444d85['concat'](_0x4ddf51),{'individualHooks':!![]});}})['then'](function(){if(_0x2342f5){return _0x2342f5[_0x5a74('0x1c')]({'online':!![],'lastLoginAt':moment()[_0x5a74('0xa0')](_0x5a74('0xef')),'voicePause':_0x2342f5[_0x5a74('0x92')]||![],'mailPause':_0x2342f5[_0x5a74('0x92')]||![],'chatPause':_0x2342f5[_0x5a74('0x92')]||![],'faxPause':_0x2342f5['loginInPause']||![],'smsPause':_0x2342f5[_0x5a74('0x92')]||![],'openchannelPause':_0x2342f5[_0x5a74('0x92')]||![],'whatsappPause':_0x2342f5['loginInPause']||![],'pauseType':_0x2342f5['loginInPause']?_0x5a74('0xf3'):null,'interface':_0x67522d,'lastPauseAt':moment()[_0x5a74('0xa0')](_0x5a74('0xef'))});}})[_0x5a74('0x21')](function(_0x23742c){if(_0x3a126b[_0x5a74('0xf5')]){return _0x25fb7d();}else{return Promise[_0x5a74('0xf6')](_0x23742c)[_0x5a74('0x21')](respondWithResult(_0x326741,null));}})[_0x5a74('0x4e')](handleError(_0x326741,null));};exports[_0x5a74('0xf7')]=function(_0x570da8,_0x404ef0){var _0xae0144;return db[_0x5a74('0x31')][_0x5a74('0x2b')]({'where':{'id':_0x570da8[_0x5a74('0x4f')]['id'],'role':'agent'},'attributes':['id',_0x5a74('0x2c'),_0x5a74('0x1d')]})[_0x5a74('0x21')](handleEntityNotFound(_0x404ef0,null))[_0x5a74('0x21')](function(_0x454d76){if(_0x454d76){_0xae0144=_0x454d76;return db['UserVoiceQueueRt'][_0x5a74('0x20')]({'where':{'membername':_0xae0144[_0x5a74('0x2c')]},'individualHooks':!![]});}})[_0x5a74('0x21')](function(){return db['MemberReport']['findAll']({'where':{'membername':_0xae0144[_0x5a74('0x2c')],'exitAt':null}});})[_0x5a74('0x21')](function(_0x353c76){var _0x5713da=[];_0x353c76['forEach'](function(_0x69a6fd){_0x5713da[_0x5a74('0x43')](_0x69a6fd[_0x5a74('0x1c')]({'exitAt':moment()[_0x5a74('0xa0')](_0x5a74('0xef'))}));});return Promise[_0x5a74('0x4d')](_0x5713da);})[_0x5a74('0x21')](function(){return _0xae0144['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0x5a74('0x21')](respondWithResult(_0x404ef0,null))[_0x5a74('0x4e')](handleError(_0x404ef0,null));};exports[_0x5a74('0xf8')]=function(_0x4ec784,_0x431b42){var _0x41ee93;return db[_0x5a74('0xa2')][_0x5a74('0x1c')]({'paused':0x1},{'where':{'UserId':_0x4ec784['params']['id']},'individualHooks':!![]})['then'](function(){return db['User'][_0x5a74('0x2b')]({'where':{'id':_0x4ec784[_0x5a74('0x4f')]['id'],'role':'agent'},'attributes':['id','name',_0x5a74('0x1d'),_0x5a74('0x57'),_0x5a74('0x94'),'online']});})[_0x5a74('0x21')](handleEntityNotFound(_0x431b42,null))[_0x5a74('0x21')](function(_0x3757eb){if(_0x3757eb){_0x41ee93=_0x3757eb;return db[_0x5a74('0xed')][_0x5a74('0x81')]({'where':{'membername':_0x41ee93[_0x5a74('0x2c')],'type':_0x5a74('0xf2'),'exitAt':null}});}})[_0x5a74('0x21')](function(_0x3ad3a0){if(_0x3ad3a0[_0x5a74('0x62')]){var _0x18d235=moment()[_0x5a74('0xa0')](_0x5a74('0xef'));for(var _0x577357=0x0,_0x3dd5a4=_0x3ad3a0[_0x5a74('0x62')];_0x577357<_0x3dd5a4;_0x577357++){_0x3ad3a0[_0x577357]['updateAttributes']({'exitAt':_0x18d235});}}})[_0x5a74('0x21')](function(){var _0x5081f3=[];var _0x260aaa=utils[_0x5a74('0xf0')]();_0x260aaa[_0x5a74('0xee')](function(_0x30340c){_0x5081f3[_0x5a74('0x43')]({'channel':_0x30340c,'membername':_0x41ee93[_0x5a74('0x2c')],'interface':_[_0x5a74('0x5d')](_0x41ee93[_0x5a74('0x94')])?util[_0x5a74('0xa0')](_0x5a74('0xa1'),_0x41ee93[_0x5a74('0x2c')]):_0x41ee93[_0x5a74('0x94')],'type':_0x5a74('0xf2'),'enterAt':moment()[_0x5a74('0xa0')](_0x5a74('0xef')),'data1':_0x4ec784['body'][_0x5a74('0xf9')]||_0x5a74('0xfa'),'role':_0x41ee93[_0x5a74('0x1d')],'internal':_0x41ee93[_0x5a74('0x57')]});});return db[_0x5a74('0xed')][_0x5a74('0xf4')](_0x5081f3,{'individualHooks':!![]});})[_0x5a74('0x21')](function(){return _0x41ee93['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x4ec784[_0x5a74('0x52')][_0x5a74('0xf9')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x5a74('0xa0')](_0x5a74('0xef'))});})[_0x5a74('0x21')](respondWithResult(_0x431b42,null))[_0x5a74('0x4e')](handleError(_0x431b42,null));};exports[_0x5a74('0xfb')]=function(_0xc6f3cb,_0x416236){if(_0xc6f3cb[_0x5a74('0x52')][_0x5a74('0x91')]&&!utils['isValidChannel'](_0xc6f3cb[_0x5a74('0x52')][_0x5a74('0x91')])){throw new APIBadRequestError(util[_0x5a74('0xa0')](_0x5a74('0xfc'),_0xc6f3cb['body']['channel']));}return db['User']['find']({'where':{'id':_0xc6f3cb[_0x5a74('0x4f')]['id']},'attributes':['id','name','role','internal',_0x5a74('0x94'),_0x5a74('0xfd'),_0x5a74('0x93'),_0x5a74('0xfe'),_0x5a74('0xff'),_0x5a74('0x100'),'openchannelPause',_0x5a74('0x101'),_0x5a74('0x102'),_0x5a74('0x103'),_0x5a74('0x104')]})[_0x5a74('0x21')](function(_0x591a36){if(!_0x591a36){throw new APINotFoundError(util[_0x5a74('0xa0')](_0x5a74('0x105'),_0xc6f3cb['params']['id']));}return _0x591a36[_0x5a74('0xfb')](_0xc6f3cb[_0x5a74('0x52')][_0x5a74('0x91')]);})[_0x5a74('0x21')](respondWithResult(_0x416236,null))['catch'](APIHandleError(_0x416236));};exports['getTeams']=function(_0x5e8878,_0x3f80d2){var _0x135a8c={};var _0x5401b3={};var _0x1068b8;var _0xf882ff;return db[_0x5a74('0x31')][_0x5a74('0x8b')]({'where':{'id':_0x5e8878[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x3f80d2,null))[_0x5a74('0x21')](function(_0x5e685f){if(_0x5e685f){_0x1068b8=_0x5e685f;_0x5401b3[_0x5a74('0xc7')]=_[_0x5a74('0xc8')](db[_0x5a74('0x106')]['rawAttributes']);_0x5401b3[_0x5a74('0x3c')]=_[_0x5a74('0xc8')](_0x5e8878[_0x5a74('0x3c')]);_0x5401b3[_0x5a74('0xca')]=_['intersection'](_0x5401b3['model'],_0x5401b3[_0x5a74('0x3c')]);_0x135a8c[_0x5a74('0x42')]=_[_0x5a74('0xcb')](_0x5401b3[_0x5a74('0xc7')],qs['fields'](_0x5e8878[_0x5a74('0x3c')][_0x5a74('0xcc')]));_0x135a8c[_0x5a74('0x42')]=_0x135a8c[_0x5a74('0x42')]['length']?_0x135a8c[_0x5a74('0x42')]:_0x5401b3[_0x5a74('0xc7')];_0x135a8c[_0x5a74('0xcd')]=qs[_0x5a74('0xce')](_0x5e8878['query'][_0x5a74('0xce')]);_0x135a8c[_0x5a74('0x3b')]=qs[_0x5a74('0xca')](_[_0x5a74('0xcf')](_0x5e8878[_0x5a74('0x3c')],_0x5401b3[_0x5a74('0xca')]));if(_0x5e8878[_0x5a74('0x3c')]['filter']){_0x135a8c['where']=_[_0x5a74('0x50')](_0x135a8c['where'],{'$or':_[_0x5a74('0x29')](_0x135a8c[_0x5a74('0x42')],function(_0x4791ba){var _0x26fabc={};_0x26fabc[_0x4791ba]={'$like':'%'+_0x5e8878[_0x5a74('0x3c')][_0x5a74('0x33')]+'%'};return _0x26fabc;})});}_0x135a8c=_[_0x5a74('0x50')]({},_0x135a8c,_0x5e8878[_0x5a74('0x51')]);return _0x1068b8[_0x5a74('0x107')](_0x135a8c);}})[_0x5a74('0x21')](function(_0x1c1fcf){if(_0x1c1fcf){_0xf882ff=_0x1c1fcf[_0x5a74('0x62')];if(!_0x5e8878[_0x5a74('0x3c')][_0x5a74('0xc0')]('nolimit')){_0x135a8c[_0x5a74('0x17')]=qs[_0x5a74('0x17')](_0x5e8878[_0x5a74('0x3c')][_0x5a74('0x17')]);_0x135a8c[_0x5a74('0x15')]=qs['offset'](_0x5e8878['query'][_0x5a74('0x15')]);}return _0x1068b8['getTeams'](_0x135a8c);}})[_0x5a74('0x21')](function(_0x3eb95a){if(_0x3eb95a){return _0x3eb95a?{'count':_0xf882ff,'rows':_0x3eb95a}:null;}})['then'](respondWithResult(_0x3f80d2,null))[_0x5a74('0x4e')](handleError(_0x3f80d2,null));};exports[_0x5a74('0x108')]=function(_0x407efe,_0xac3a99){var _0x50554f=_0x407efe[_0x5a74('0x4f')]['id'];var _0x4b67cf=_0x407efe['body']?_0x407efe['body'][_0x5a74('0x55')]:null;var _0x5d35a2=[];return Promise[_0x5a74('0xf6')]()[_0x5a74('0x21')](function(){if(!_0x4b67cf)throw new APIBadRequestError(_0x5a74('0x109'));})[_0x5a74('0x21')](function(){return db[_0x5a74('0x31')][_0x5a74('0x8b')]({'where':{'id':_0x50554f}});})[_0x5a74('0x21')](function(_0x32f6cb){if(!_0x32f6cb)throw new APINotFoundError(util[_0x5a74('0xa0')](_0x5a74('0x105'),_0x407efe[_0x5a74('0x4f')]['id']));return db['sequelize'][_0x5a74('0x10a')](function(_0x3a9396){return _0x32f6cb[_0x5a74('0x108')](_0x4b67cf,{'transaction':_0x3a9396})[_0x5a74('0x21')](function(){return db['Team']['findAll']({'where':{'id':{'$in':_0x4b67cf}}});})[_0x5a74('0x21')](function(_0x2051da){var _0x48c52a=_[_0x5a74('0x29')](_0x2051da,function(_0x5cbc7e){return _0x5cbc7e['getAssociatedQueues']();});return Promise[_0x5a74('0x4d')](_0x48c52a);})[_0x5a74('0x21')](function(_0x130184){_0x5d35a2=_[_0x5a74('0x10b')](_0x130184);var _0x350ab6=_[_0x5a74('0x29')](_0x5d35a2,function(_0x8e7e9f){return _0x8e7e9f['addAgent'](_0x32f6cb['id'],{'transaction':_0x3a9396});});return Promise[_0x5a74('0x4d')](_0x350ab6);})['then'](function(){if(!_0x32f6cb[_0x5a74('0xfd')])return;var _0x54aca8=_[_0x5a74('0x33')](_0x5d35a2,function(_0x47472c){return _0x47472c['getDataValue'](_0x5a74('0x91'))===_0x5a74('0x10c');});var _0x32b506=_[_0x5a74('0x29')](_0x54aca8,function(_0x1e5c04){return db[_0x5a74('0xa2')][_0x5a74('0xa3')]({'membername':_0x32f6cb['name'],'UserId':_0x32f6cb['id'],'queue_name':_0x1e5c04['name'],'VoiceQueueId':_0x1e5c04['id'],'interface':_[_0x5a74('0x5d')](_0x32f6cb[_0x5a74('0x94')])?util[_0x5a74('0xa0')]('SIP/%s',_0x32f6cb[_0x5a74('0x2c')]):_0x32f6cb[_0x5a74('0x94')],'paused':_0x32f6cb[_0x5a74('0x93')]||![],'penalty':_0x32f6cb[_0x5a74('0x99')]},{'transaction':_0x3a9396});});return Promise[_0x5a74('0x4d')](_0x32b506);})[_0x5a74('0x21')](function(){return db[_0x5a74('0x10d')][_0x5a74('0x81')]({'where':{'teamId':{'$in':_0x4b67cf}}});})[_0x5a74('0x21')](function(_0xf620c3){var _0x644617=_['map'](_0xf620c3,function(_0x2b668e){return db[_0x5a74('0x10e')][_0x5a74('0x75')]({'UserId':_0x32f6cb['id'],'VoicePrefixId':_0x2b668e['VoicePrefixId']},{'transaction':_0x3a9396});});return Promise[_0x5a74('0x4d')](_0x644617);});});})[_0x5a74('0x21')](function(){for(var _0x1c26da=0x0;_0x1c26da<_0x5d35a2['length'];_0x1c26da++){var _0x2e1ab8=_0x5d35a2[_0x1c26da]['getDataValue'](_0x5a74('0x91'));var _0x24c99c=_0x2e1ab8+'QueueId';socket['emit']('user'+_0x2e1ab8+_0x5a74('0x9d'),{'UserId':_0x50554f,['queueField']:_0x5d35a2[_0x1c26da]['id']});}})[_0x5a74('0x21')](respondWithStatusCode(_0xac3a99,null))['catch'](APIHandleError(_0xac3a99));};exports[_0x5a74('0x10f')]=function(_0xb0b8e9,_0x59b650){var _0x3214ae=_0xb0b8e9[_0x5a74('0x4f')]['id'];var _0xba2089=null;if(_0xb0b8e9['query'][_0x5a74('0x55')]){_0xba2089=_[_0x5a74('0xa7')](_0xb0b8e9[_0x5a74('0x3c')][_0x5a74('0x55')])?_0xb0b8e9[_0x5a74('0x3c')][_0x5a74('0x55')]:[_0xb0b8e9[_0x5a74('0x3c')][_0x5a74('0x55')]];}var _0x4eb970=[];return Promise[_0x5a74('0xf6')]()['then'](function(){if(!_0xba2089)throw new APIBadRequestError('Query\x20parameter\x20\x27ids\x27\x20is\x20required');})['then'](function(){return db[_0x5a74('0x31')][_0x5a74('0x8b')]({'where':{'id':_0x3214ae}});})['then'](function(_0x2bd493){if(!_0x2bd493)throw new APINotFoundError(util[_0x5a74('0xa0')](_0x5a74('0x105'),_0xb0b8e9[_0x5a74('0x4f')]['id']));return db[_0x5a74('0x110')][_0x5a74('0x10a')](function(_0xdde027){return _0x2bd493[_0x5a74('0x10f')](_0xba2089,{'transaction':_0xdde027})['then'](function(){return db['Team'][_0x5a74('0x81')]({'where':{'id':{'$in':_0xba2089}}});})['then'](function(_0x3b6c1c){var _0x46d54c=_[_0x5a74('0x29')](_0x3b6c1c,function(_0x305075){return _0x305075['getAssociatedQueues']();});return Promise[_0x5a74('0x4d')](_0x46d54c);})[_0x5a74('0x21')](function(_0x288cc0){_0x4eb970=_[_0x5a74('0x10b')](_0x288cc0);var _0x3bda66=_[_0x5a74('0x29')](_0x4eb970,function(_0x37376d){return _0x37376d['removeAgent'](_0x2bd493['id'],{'transaction':_0xdde027});});return Promise[_0x5a74('0x4d')](_0x3bda66);})['then'](function(){if(!_0x2bd493[_0x5a74('0xfd')])return;var _0x162d1c=_[_0x5a74('0x33')](_0x4eb970,function(_0x58ba6a){return _0x58ba6a['getDataValue']('channel')==='Voice';});var _0x1655a7=_[_0x5a74('0x29')](_0x162d1c,function(_0x59dfac){return db[_0x5a74('0xa2')]['destroy']({'where':{'VoiceQueueId':_0x59dfac['id'],'UserId':_0x2bd493['id']},'transaction':_0xdde027});});return Promise['all'](_0x1655a7);})[_0x5a74('0x21')](function(){return db['TeamVoicePrefix'][_0x5a74('0x81')]({'where':{'teamId':{'$in':_0xba2089}}});})[_0x5a74('0x21')](function(_0x42682e){var _0x30ba21=_[_0x5a74('0x29')](_0x42682e,function(_0x53e70e){return db[_0x5a74('0x10e')][_0x5a74('0x20')]({'where':{'UserId':_0x2bd493['id'],'VoicePrefixId':_0x53e70e[_0x5a74('0x111')]}},{'transaction':_0xdde027});});return Promise[_0x5a74('0x4d')](_0x30ba21);});});})[_0x5a74('0x21')](function(){for(var _0x4f2416=0x0;_0x4f2416<_0x4eb970[_0x5a74('0x62')];_0x4f2416++){var _0x128bd8=_0x4eb970[_0x4f2416][_0x5a74('0x112')](_0x5a74('0x91'));var _0xaca4fa=_0x128bd8+_0x5a74('0x9b');socket[_0x5a74('0x9c')]('user'+_0x128bd8+'Queue:remove',{'UserId':_0x3214ae,['queueField']:_0x4eb970[_0x4f2416]['id']});}})['then'](respondWithStatusCode(_0x59b650,null))[_0x5a74('0x4e')](APIHandleError(_0x59b650));};exports[_0x5a74('0x113')]=function(_0x4c89e5,_0x52f07f){var _0xc13638={};var _0x115a98={};var _0xd11ed3;var _0x36af76;return db[_0x5a74('0x31')][_0x5a74('0x8b')]({'where':{'id':_0x4c89e5['params']['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x52f07f,null))[_0x5a74('0x21')](function(_0x12f6fd){if(_0x12f6fd){_0xd11ed3=_0x12f6fd;_0x115a98[_0x5a74('0xc7')]=_[_0x5a74('0xc8')](db['CmList']['rawAttributes']);_0x115a98[_0x5a74('0x3c')]=_[_0x5a74('0xc8')](_0x4c89e5[_0x5a74('0x3c')]);_0x115a98[_0x5a74('0xca')]=_[_0x5a74('0xcb')](_0x115a98[_0x5a74('0xc7')],_0x115a98[_0x5a74('0x3c')]);_0xc13638[_0x5a74('0x42')]=_['intersection'](_0x115a98[_0x5a74('0xc7')],qs[_0x5a74('0xcc')](_0x4c89e5['query'][_0x5a74('0xcc')]));_0xc13638[_0x5a74('0x42')]=_0xc13638[_0x5a74('0x42')][_0x5a74('0x62')]?_0xc13638[_0x5a74('0x42')]:_0x115a98['model'];_0xc13638[_0x5a74('0xcd')]=qs[_0x5a74('0xce')](_0x4c89e5[_0x5a74('0x3c')]['sort']);_0xc13638[_0x5a74('0x3b')]=qs[_0x5a74('0xca')](_[_0x5a74('0xcf')](_0x4c89e5['query'],_0x115a98[_0x5a74('0xca')]));if(_0x4c89e5[_0x5a74('0x3c')]['filter']){_0xc13638['where']=_['merge'](_0xc13638[_0x5a74('0x3b')],{'$or':_[_0x5a74('0x29')](_0xc13638[_0x5a74('0x42')],function(_0x51fc79){var _0x8f61a0={};_0x8f61a0[_0x51fc79]={'$like':'%'+_0x4c89e5[_0x5a74('0x3c')][_0x5a74('0x33')]+'%'};return _0x8f61a0;})});}_0xc13638=_[_0x5a74('0x50')]({},_0xc13638,_0x4c89e5[_0x5a74('0x51')]);return _0xd11ed3[_0x5a74('0x113')](_0xc13638);}})[_0x5a74('0x21')](function(_0x5a552a){if(_0x5a552a){_0x36af76=_0x5a552a[_0x5a74('0x62')];if(!_0x4c89e5[_0x5a74('0x3c')][_0x5a74('0xc0')](_0x5a74('0xd1'))){_0xc13638[_0x5a74('0x17')]=qs['limit'](_0x4c89e5['query'][_0x5a74('0x17')]);_0xc13638[_0x5a74('0x15')]=qs[_0x5a74('0x15')](_0x4c89e5['query'][_0x5a74('0x15')]);}return _0xd11ed3[_0x5a74('0x113')](_0xc13638);}})[_0x5a74('0x21')](function(_0x3d2599){if(_0x3d2599){return _0x3d2599?{'count':_0x36af76,'rows':_0x3d2599}:null;}})[_0x5a74('0x21')](respondWithResult(_0x52f07f,null))[_0x5a74('0x4e')](handleError(_0x52f07f,null));};exports[_0x5a74('0x114')]=function(_0xb13398,_0x150632){var _0x17f0fc={};var _0x5e9668={};var _0x60f170;return db['User']['findOne']({'where':{'id':_0xb13398[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x150632,null))['then'](function(_0x57256e){if(_0x57256e){_0x60f170=_0x57256e;_0x5e9668[_0x5a74('0xc7')]=_[_0x5a74('0xc8')](db[_0x5a74('0x31')][_0x5a74('0x32')]);_0x5e9668[_0x5a74('0x3c')]=_[_0x5a74('0xc8')](_0xb13398[_0x5a74('0x3c')]);_0x5e9668['filters']=_[_0x5a74('0xcb')](_0x5e9668[_0x5a74('0xc7')],_0x5e9668[_0x5a74('0x3c')]);_0x17f0fc[_0x5a74('0x42')]=_['intersection'](_0x5e9668[_0x5a74('0xc7')],qs['fields'](_0xb13398[_0x5a74('0x3c')]['fields']));_0x17f0fc[_0x5a74('0x42')]=_0x17f0fc['attributes'][_0x5a74('0x62')]?_0x17f0fc[_0x5a74('0x42')]:_0x5e9668[_0x5a74('0xc7')];_0x17f0fc[_0x5a74('0xcd')]=qs[_0x5a74('0xce')](_0xb13398[_0x5a74('0x3c')][_0x5a74('0xce')]);_0x17f0fc[_0x5a74('0x3b')]=qs['filters'](_[_0x5a74('0xcf')](_0xb13398[_0x5a74('0x3c')],_0x5e9668[_0x5a74('0xca')]));if(_0xb13398['query']['filter']){_0x17f0fc['where']=_[_0x5a74('0x50')](_0x17f0fc[_0x5a74('0x3b')],{'$or':_['map'](_0x17f0fc['attributes'],function(_0x20993b){var _0x351875={};_0x351875[_0x20993b]={'$like':'%'+_0xb13398[_0x5a74('0x3c')][_0x5a74('0x33')]+'%'};return _0x351875;})});}_0x17f0fc[_0x5a74('0xc7')]=db[_0x5a74('0x31')];_0x17f0fc['as']=_0x5a74('0x7a');_0x17f0fc=_[_0x5a74('0x50')]({},_0x17f0fc,_0xb13398['options']);return _0x60f170[_0x5a74('0xeb')]({'include':[_0x17f0fc]});}})[_0x5a74('0x21')](function(_0x46733e){if(_0x46733e){var _0x1400cd={},_0x67b862=[];for(var _0x48e5e7=0x0;_0x48e5e7<_0x46733e['length'];_0x48e5e7+=0x1){for(var _0x4c85cb=0x0,_0x35772b;_0x4c85cb<_0x46733e[_0x48e5e7][_0x5a74('0x7a')][_0x5a74('0x62')];_0x4c85cb+=0x1){_0x35772b=_0x46733e[_0x48e5e7][_0x5a74('0x7a')][_0x4c85cb]['get']({'plain':!![]});_0x1400cd[_0x35772b['id']]=_0x35772b;}}_0x1400cd=_['values'](_0x1400cd);for(var _0x3a1e74=qs[_0x5a74('0x15')](_0xb13398[_0x5a74('0x3c')][_0x5a74('0x15')]);_0x3a1e74<_0x1400cd[_0x5a74('0x62')]&&_0x67b862[_0x5a74('0x62')]<qs['limit'](_0xb13398[_0x5a74('0x3c')][_0x5a74('0x17')]);_0x3a1e74+=0x1){if(_0x1400cd[_0x3a1e74]){_0x67b862[_0x5a74('0x43')](_0x1400cd[_0x3a1e74]);}}return{'count':_0x1400cd[_0x5a74('0x62')],'rows':_0x67b862};}})['then'](respondWithResult(_0x150632,null))[_0x5a74('0x4e')](handleError(_0x150632,null));};exports[_0x5a74('0x20')]=function(_0x1b1dca,_0x2c3bfb){if(_0x1b1dca[_0x5a74('0x25')]['id']==_0x1b1dca[_0x5a74('0x4f')]['id']){return _0x2c3bfb[_0x5a74('0x13')](0x1f4)[_0x5a74('0x30')]({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db[_0x5a74('0x31')][_0x5a74('0x2b')]({'where':{'id':_0x1b1dca[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x2c3bfb,null))[_0x5a74('0x21')](removeEntity(_0x2c3bfb,null))[_0x5a74('0x4e')](handleError(_0x2c3bfb,null));};exports[_0x5a74('0x115')]=function(_0x313e63,_0x2882ee){return db['User'][_0x5a74('0x2b')]({'where':{'id':_0x313e63['params']['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x2882ee,null))[_0x5a74('0x21')](function(_0x77995b){if(_0x77995b){return _0x77995b[_0x5a74('0x115')](_0x313e63[_0x5a74('0x52')][_0x5a74('0x55')],_['omit'](_0x313e63[_0x5a74('0x52')],[_0x5a74('0x55'),'id'])||{})[_0x5a74('0x9a')](function(){for(var _0x1a1612=0x0;_0x1a1612<_0x313e63[_0x5a74('0x52')][_0x5a74('0x55')][_0x5a74('0x62')];_0x1a1612+=0x1){socket[_0x5a74('0x9c')](_0x5a74('0x116'),{'ChatInteractionId':Number(_0x313e63[_0x5a74('0x52')]['ids'][_0x1a1612]),'UserId':Number(_0x313e63[_0x5a74('0x4f')]['id'])});}return _0x313e63[_0x5a74('0x52')][_0x5a74('0x55')];});}})[_0x5a74('0x21')](respondWithResult(_0x2882ee,null))[_0x5a74('0x4e')](handleError(_0x2882ee,null));};exports[_0x5a74('0x117')]=function(_0x1880fd,_0x43e265){return db['User']['find']({'where':{'id':_0x1880fd[_0x5a74('0x4f')]['id']}})['then'](handleEntityNotFound(_0x43e265,null))[_0x5a74('0x21')](function(_0x363948){if(_0x363948){return _0x363948[_0x5a74('0x117')](_0x1880fd[_0x5a74('0x3c')][_0x5a74('0x55')])['then'](function(){if(_['isArray'](_0x1880fd['query'][_0x5a74('0x55')])){for(var _0x4b2205=0x0;_0x4b2205<_0x1880fd[_0x5a74('0x3c')]['ids'][_0x5a74('0x62')];_0x4b2205+=0x1){socket['emit'](_0x5a74('0x118'),{'ChatInteractionId':Number(_0x1880fd['query']['ids'][_0x4b2205]),'UserId':Number(_0x1880fd[_0x5a74('0x4f')]['id'])});}}else{socket['emit'](_0x5a74('0x118'),{'ChatInteractionId':Number(_0x1880fd[_0x5a74('0x3c')][_0x5a74('0x55')]),'UserId':Number(_0x1880fd[_0x5a74('0x4f')]['id'])});}});}})[_0x5a74('0x21')](respondWithStatusCode(_0x43e265,null))[_0x5a74('0x4e')](handleError(_0x43e265,null));};exports[_0x5a74('0x119')]=function(_0x12d640,_0x27b04c){return db[_0x5a74('0x31')]['find']({'where':{'id':_0x12d640['params']['id']}})['then'](handleEntityNotFound(_0x27b04c,null))['then'](function(_0x14f9c5){if(_0x14f9c5){return _0x14f9c5['addMailInteractions'](_0x12d640[_0x5a74('0x52')][_0x5a74('0x55')],_['omit'](_0x12d640[_0x5a74('0x52')],[_0x5a74('0x55'),'id'])||{})[_0x5a74('0x9a')](function(){for(var _0x3f9b39=0x0;_0x3f9b39<_0x12d640[_0x5a74('0x52')]['ids']['length'];_0x3f9b39+=0x1){socket[_0x5a74('0x9c')]('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x12d640[_0x5a74('0x52')][_0x5a74('0x55')][_0x3f9b39]),'UserId':Number(_0x12d640[_0x5a74('0x4f')]['id'])});}return _0x12d640[_0x5a74('0x52')][_0x5a74('0x55')];});}})['then'](respondWithResult(_0x27b04c,null))[_0x5a74('0x4e')](handleError(_0x27b04c,null));};exports[_0x5a74('0x11a')]=function(_0x550c1f,_0x1c83f9){return db[_0x5a74('0x31')][_0x5a74('0x2b')]({'where':{'id':_0x550c1f[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x1c83f9,null))[_0x5a74('0x21')](function(_0x3b955e){if(_0x3b955e){return _0x3b955e['removeMailInteractions'](_0x550c1f['query']['ids'])[_0x5a74('0x21')](function(){if(_[_0x5a74('0xa7')](_0x550c1f[_0x5a74('0x3c')][_0x5a74('0x55')])){for(var _0x5785b6=0x0;_0x5785b6<_0x550c1f[_0x5a74('0x3c')][_0x5a74('0x55')][_0x5a74('0x62')];_0x5785b6+=0x1){socket[_0x5a74('0x9c')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x550c1f['query']['ids'][_0x5785b6]),'UserId':Number(_0x550c1f[_0x5a74('0x4f')]['id'])});}}else{socket[_0x5a74('0x9c')](_0x5a74('0x11b'),{'MailInteractionId':Number(_0x550c1f['query'][_0x5a74('0x55')]),'UserId':Number(_0x550c1f['params']['id'])});}});}})[_0x5a74('0x21')](respondWithStatusCode(_0x1c83f9,null))[_0x5a74('0x4e')](handleError(_0x1c83f9,null));};exports[_0x5a74('0x11c')]=function(_0x4fe89f,_0x4f9278){return db[_0x5a74('0x31')]['find']({'where':{'id':_0x4fe89f[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x4f9278,null))[_0x5a74('0x21')](function(_0x2dff61){if(_0x2dff61){return _0x2dff61[_0x5a74('0x11c')](_0x4fe89f[_0x5a74('0x52')]['ids'],_[_0x5a74('0x56')](_0x4fe89f[_0x5a74('0x52')],[_0x5a74('0x55'),'id'])||{})[_0x5a74('0x9a')](function(){for(var _0x4c54c7=0x0;_0x4c54c7<_0x4fe89f[_0x5a74('0x52')][_0x5a74('0x55')][_0x5a74('0x62')];_0x4c54c7+=0x1){socket['emit'](_0x5a74('0x11d'),{'FaxInteractionId':Number(_0x4fe89f[_0x5a74('0x52')][_0x5a74('0x55')][_0x4c54c7]),'UserId':Number(_0x4fe89f[_0x5a74('0x4f')]['id'])});}return _0x4fe89f[_0x5a74('0x52')]['ids'];});}})[_0x5a74('0x21')](respondWithResult(_0x4f9278,null))[_0x5a74('0x4e')](handleError(_0x4f9278,null));};exports[_0x5a74('0x11e')]=function(_0x7bb74c,_0x3ec5a1){return db[_0x5a74('0x31')][_0x5a74('0x2b')]({'where':{'id':_0x7bb74c[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x3ec5a1,null))['then'](function(_0x3392c4){if(_0x3392c4){return _0x3392c4['removeFaxInteractions'](_0x7bb74c[_0x5a74('0x3c')]['ids'])[_0x5a74('0x21')](function(){if(_[_0x5a74('0xa7')](_0x7bb74c[_0x5a74('0x3c')][_0x5a74('0x55')])){for(var _0x3db966=0x0;_0x3db966<_0x7bb74c[_0x5a74('0x3c')][_0x5a74('0x55')][_0x5a74('0x62')];_0x3db966+=0x1){socket[_0x5a74('0x9c')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x7bb74c[_0x5a74('0x3c')][_0x5a74('0x55')][_0x3db966]),'UserId':Number(_0x7bb74c['params']['id'])});}}else{socket['emit'](_0x5a74('0x11f'),{'FaxInteractionId':Number(_0x7bb74c[_0x5a74('0x3c')][_0x5a74('0x55')]),'UserId':Number(_0x7bb74c[_0x5a74('0x4f')]['id'])});}});}})[_0x5a74('0x21')](respondWithStatusCode(_0x3ec5a1,null))[_0x5a74('0x4e')](handleError(_0x3ec5a1,null));};exports[_0x5a74('0x120')]=function(_0x445cc3,_0x31ca99){return db[_0x5a74('0x31')]['find']({'where':{'id':_0x445cc3[_0x5a74('0x4f')]['id']}})['then'](handleEntityNotFound(_0x31ca99,null))[_0x5a74('0x21')](function(_0xaea702){if(_0xaea702){return _0xaea702[_0x5a74('0x120')](_0x445cc3[_0x5a74('0x52')][_0x5a74('0x55')],_[_0x5a74('0x56')](_0x445cc3[_0x5a74('0x52')],[_0x5a74('0x55'),'id'])||{})[_0x5a74('0x9a')](function(){for(var _0x1a06f5=0x0;_0x1a06f5<_0x445cc3[_0x5a74('0x52')]['ids']['length'];_0x1a06f5+=0x1){socket['emit'](_0x5a74('0x121'),{'SmsInteractionId':Number(_0x445cc3['body'][_0x5a74('0x55')][_0x1a06f5]),'UserId':Number(_0x445cc3[_0x5a74('0x4f')]['id'])});}return _0x445cc3[_0x5a74('0x52')][_0x5a74('0x55')];});}})[_0x5a74('0x21')](respondWithResult(_0x31ca99,null))['catch'](handleError(_0x31ca99,null));};exports['removeSmsInteractions']=function(_0x34210e,_0x4a3517){return db['User'][_0x5a74('0x2b')]({'where':{'id':_0x34210e['params']['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x4a3517,null))['then'](function(_0x5c0720){if(_0x5c0720){return _0x5c0720[_0x5a74('0x122')](_0x34210e[_0x5a74('0x3c')][_0x5a74('0x55')])['then'](function(){if(_[_0x5a74('0xa7')](_0x34210e[_0x5a74('0x3c')][_0x5a74('0x55')])){for(var _0x75fd48=0x0;_0x75fd48<_0x34210e[_0x5a74('0x3c')]['ids'][_0x5a74('0x62')];_0x75fd48+=0x1){socket['emit'](_0x5a74('0x123'),{'SmsInteractionId':Number(_0x34210e['query'][_0x5a74('0x55')][_0x75fd48]),'UserId':Number(_0x34210e[_0x5a74('0x4f')]['id'])});}}else{socket[_0x5a74('0x9c')](_0x5a74('0x123'),{'SmsInteractionId':Number(_0x34210e[_0x5a74('0x3c')][_0x5a74('0x55')]),'UserId':Number(_0x34210e['params']['id'])});}});}})[_0x5a74('0x21')](respondWithStatusCode(_0x4a3517,null))['catch'](handleError(_0x4a3517,null));};exports[_0x5a74('0x124')]=function(_0x1a4846,_0xee64ef){return db[_0x5a74('0x31')][_0x5a74('0x2b')]({'where':{'id':_0x1a4846[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0xee64ef,null))[_0x5a74('0x21')](function(_0x141440){if(_0x141440){return _0x141440['addOpenchannelInteractions'](_0x1a4846[_0x5a74('0x52')]['ids'],_['omit'](_0x1a4846['body'],['ids','id'])||{})[_0x5a74('0x9a')](function(){for(var _0x5a5476=0x0;_0x5a5476<_0x1a4846['body'][_0x5a74('0x55')][_0x5a74('0x62')];_0x5a5476+=0x1){socket[_0x5a74('0x9c')](_0x5a74('0x125'),{'OpenchannelInteractionId':Number(_0x1a4846['body'][_0x5a74('0x55')][_0x5a5476]),'UserId':Number(_0x1a4846['params']['id'])});}return _0x1a4846[_0x5a74('0x52')][_0x5a74('0x55')];});}})['then'](respondWithResult(_0xee64ef,null))[_0x5a74('0x4e')](handleError(_0xee64ef,null));};exports[_0x5a74('0x126')]=function(_0x82d89b,_0x3d5c98){return db[_0x5a74('0x31')][_0x5a74('0x2b')]({'where':{'id':_0x82d89b[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x3d5c98,null))[_0x5a74('0x21')](function(_0x1ef141){if(_0x1ef141){return _0x1ef141['removeOpenchannelInteractions'](_0x82d89b[_0x5a74('0x3c')][_0x5a74('0x55')])[_0x5a74('0x21')](function(){if(_[_0x5a74('0xa7')](_0x82d89b['query'][_0x5a74('0x55')])){for(var _0x388a39=0x0;_0x388a39<_0x82d89b[_0x5a74('0x3c')][_0x5a74('0x55')][_0x5a74('0x62')];_0x388a39+=0x1){socket[_0x5a74('0x9c')](_0x5a74('0x127'),{'OpenchannelInteractionId':Number(_0x82d89b[_0x5a74('0x3c')][_0x5a74('0x55')][_0x388a39]),'UserId':Number(_0x82d89b['params']['id'])});}}else{socket['emit'](_0x5a74('0x127'),{'OpenchannelInteractionId':Number(_0x82d89b[_0x5a74('0x3c')]['ids']),'UserId':Number(_0x82d89b[_0x5a74('0x4f')]['id'])});}});}})[_0x5a74('0x21')](respondWithStatusCode(_0x3d5c98,null))[_0x5a74('0x4e')](handleError(_0x3d5c98,null));};exports[_0x5a74('0x128')]=function(_0x409308,_0x2c78de){return db[_0x5a74('0x31')][_0x5a74('0x2b')]({'where':{'id':_0x409308[_0x5a74('0x4f')]['id']}})['then'](handleEntityNotFound(_0x2c78de,null))[_0x5a74('0x21')](function(_0x598259){if(_0x598259){return _0x598259[_0x5a74('0x128')](_0x409308['body'][_0x5a74('0x55')],_[_0x5a74('0x56')](_0x409308[_0x5a74('0x52')],[_0x5a74('0x55'),'id'])||{})['spread'](function(){for(var _0x4840ef=0x0;_0x4840ef<_0x409308[_0x5a74('0x52')]['ids']['length'];_0x4840ef+=0x1){socket[_0x5a74('0x9c')]('user_has_whatsapp_interactions:save',{'WhatsappInteractionId':Number(_0x409308[_0x5a74('0x52')][_0x5a74('0x55')][_0x4840ef]),'UserId':Number(_0x409308['params']['id'])});}return _0x409308['body'][_0x5a74('0x55')];});}})['then'](respondWithResult(_0x2c78de,null))[_0x5a74('0x4e')](handleError(_0x2c78de,null));};exports[_0x5a74('0x129')]=function(_0x4ff4c5,_0x410e23){return db[_0x5a74('0x31')][_0x5a74('0x2b')]({'where':{'id':_0x4ff4c5[_0x5a74('0x4f')]['id']}})['then'](handleEntityNotFound(_0x410e23,null))['then'](function(_0xddc5b7){if(_0xddc5b7){return _0xddc5b7[_0x5a74('0x129')](_0x4ff4c5['query'][_0x5a74('0x55')]);}})[_0x5a74('0x21')](respondWithStatusCode(_0x410e23,null))[_0x5a74('0x4e')](handleError(_0x410e23,null));};exports[_0x5a74('0x12a')]=function(_0x10f28f,_0x8af31d){var _0x146636={};var _0x16faeb={};var _0x5792d9;var _0x4ef575;return db[_0x5a74('0x31')][_0x5a74('0x8b')]({'where':{'id':_0x10f28f[_0x5a74('0x4f')]['id']}})['then'](handleEntityNotFound(_0x8af31d,null))[_0x5a74('0x21')](function(_0x282f48){if(_0x282f48){_0x5792d9=_0x282f48;_0x16faeb['model']=_[_0x5a74('0xc8')](db[_0x5a74('0x12b')][_0x5a74('0x32')]);_0x16faeb[_0x5a74('0x3c')]=_[_0x5a74('0xc8')](_0x10f28f['query']);_0x16faeb[_0x5a74('0xca')]=_[_0x5a74('0xcb')](_0x16faeb[_0x5a74('0xc7')],_0x16faeb['query']);_0x146636[_0x5a74('0x42')]=_[_0x5a74('0xcb')](_0x16faeb[_0x5a74('0xc7')],qs[_0x5a74('0xcc')](_0x10f28f[_0x5a74('0x3c')][_0x5a74('0xcc')]));_0x146636['attributes']=_0x146636[_0x5a74('0x42')][_0x5a74('0x62')]?_0x146636[_0x5a74('0x42')]:_0x16faeb['model'];_0x146636[_0x5a74('0xcd')]=qs[_0x5a74('0xce')](_0x10f28f['query'][_0x5a74('0xce')]);_0x146636[_0x5a74('0x3b')]=qs[_0x5a74('0xca')](_[_0x5a74('0xcf')](_0x10f28f['query'],_0x16faeb[_0x5a74('0xca')]));if(_0x10f28f[_0x5a74('0x3c')][_0x5a74('0x33')]){_0x146636[_0x5a74('0x3b')]=_[_0x5a74('0x50')](_0x146636[_0x5a74('0x3b')],{'$or':_[_0x5a74('0x29')](_0x146636[_0x5a74('0x42')],function(_0x251955){var _0x4def23={};_0x4def23[_0x251955]={'$like':'%'+_0x10f28f[_0x5a74('0x3c')][_0x5a74('0x33')]+'%'};return _0x4def23;})});}_0x146636=_[_0x5a74('0x50')]({},_0x146636,_0x10f28f['options']);return _0x5792d9[_0x5a74('0x12a')](_0x146636);}})[_0x5a74('0x21')](function(_0x36599a){if(_0x36599a){_0x4ef575=_0x36599a[_0x5a74('0x62')];if(!_0x10f28f['query'][_0x5a74('0xc0')](_0x5a74('0xd1'))){_0x146636[_0x5a74('0x17')]=qs[_0x5a74('0x17')](_0x10f28f[_0x5a74('0x3c')]['limit']);_0x146636['offset']=qs['offset'](_0x10f28f['query'][_0x5a74('0x15')]);}return _0x5792d9['getVoicePrefixes'](_0x146636);}})[_0x5a74('0x21')](function(_0x1b52a3){if(_0x1b52a3){return _0x1b52a3?{'count':_0x4ef575,'rows':_0x1b52a3}:null;}})['then'](respondWithResult(_0x8af31d,null))[_0x5a74('0x4e')](handleError(_0x8af31d,null));};exports[_0x5a74('0x12c')]=function(_0x1c1827,_0x351420){var _0x33a588={};var _0x5ac888={};var _0x20161d;var _0x429f26;return db[_0x5a74('0x31')][_0x5a74('0x8b')]({'where':{'id':_0x1c1827[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x351420,null))[_0x5a74('0x21')](function(_0x1b5081){if(_0x1b5081){_0x20161d=_0x1b5081;_0x5ac888['model']=_[_0x5a74('0xc8')](db['FaxAccount'][_0x5a74('0x32')]);_0x5ac888[_0x5a74('0x3c')]=_['keys'](_0x1c1827['query']);_0x5ac888[_0x5a74('0xca')]=_[_0x5a74('0xcb')](_0x5ac888['model'],_0x5ac888[_0x5a74('0x3c')]);_0x33a588[_0x5a74('0x42')]=_['intersection'](_0x5ac888[_0x5a74('0xc7')],qs[_0x5a74('0xcc')](_0x1c1827[_0x5a74('0x3c')]['fields']));_0x33a588['attributes']=_0x33a588['attributes'][_0x5a74('0x62')]?_0x33a588[_0x5a74('0x42')]:_0x5ac888['model'];_0x33a588[_0x5a74('0xcd')]=qs[_0x5a74('0xce')](_0x1c1827[_0x5a74('0x3c')][_0x5a74('0xce')]);_0x33a588['where']=qs[_0x5a74('0xca')](_[_0x5a74('0xcf')](_0x1c1827['query'],_0x5ac888[_0x5a74('0xca')]));if(_0x1c1827['query'][_0x5a74('0x33')]){_0x33a588[_0x5a74('0x3b')]=_['merge'](_0x33a588[_0x5a74('0x3b')],{'$or':_[_0x5a74('0x29')](_0x33a588[_0x5a74('0x42')],function(_0x8c36c){var _0xce0824={};_0xce0824[_0x8c36c]={'$like':'%'+_0x1c1827[_0x5a74('0x3c')][_0x5a74('0x33')]+'%'};return _0xce0824;})});}_0x33a588=_[_0x5a74('0x50')]({},_0x33a588,_0x1c1827[_0x5a74('0x51')]);return _0x20161d[_0x5a74('0x12c')](_0x33a588);}})['then'](function(_0x6ef9cd){if(_0x6ef9cd){_0x429f26=_0x6ef9cd['length'];if(!_0x1c1827[_0x5a74('0x3c')]['hasOwnProperty']('nolimit')){_0x33a588['limit']=qs['limit'](_0x1c1827['query']['limit']);_0x33a588[_0x5a74('0x15')]=qs['offset'](_0x1c1827['query'][_0x5a74('0x15')]);}return _0x20161d[_0x5a74('0x12c')](_0x33a588);}})[_0x5a74('0x21')](function(_0x3c08d3){if(_0x3c08d3){return _0x3c08d3?{'count':_0x429f26,'rows':_0x3c08d3}:null;}})[_0x5a74('0x21')](respondWithResult(_0x351420,null))[_0x5a74('0x4e')](handleError(_0x351420,null));};exports['addFaxAccounts']=function(_0x4bc632,_0x1925e){return db[_0x5a74('0x31')][_0x5a74('0x2b')]({'where':{'id':_0x4bc632[_0x5a74('0x4f')]['id']}})['then'](handleEntityNotFound(_0x1925e,null))[_0x5a74('0x21')](function(_0x275f3d){if(_0x275f3d){return _0x275f3d[_0x5a74('0x12d')](_0x4bc632[_0x5a74('0x52')][_0x5a74('0x55')],_['omit'](_0x4bc632[_0x5a74('0x52')],['ids','id'])||{});}})[_0x5a74('0x21')](respondWithResult(_0x1925e,null))['catch'](handleError(_0x1925e,null));};exports['removeFaxAccounts']=function(_0x2f0d37,_0x3da915){return db[_0x5a74('0x31')][_0x5a74('0x2b')]({'where':{'id':_0x2f0d37[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x3da915,null))[_0x5a74('0x21')](function(_0x50b069){if(_0x50b069){return _0x50b069[_0x5a74('0x12e')](_0x2f0d37[_0x5a74('0x3c')][_0x5a74('0x55')]);}})['then'](respondWithStatusCode(_0x3da915,null))[_0x5a74('0x4e')](handleError(_0x3da915,null));};exports[_0x5a74('0x12f')]=function(_0x211ea0,_0x490a3d){var _0x54b6eb={};var _0x4465c7={};var _0x2bd9e7;var _0x2822ac;return db['User'][_0x5a74('0x8b')]({'where':{'id':_0x211ea0[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x490a3d,null))[_0x5a74('0x21')](function(_0x40d038){if(_0x40d038){_0x2bd9e7=_0x40d038;_0x4465c7[_0x5a74('0xc7')]=_['keys'](db[_0x5a74('0x130')][_0x5a74('0x32')]);_0x4465c7[_0x5a74('0x3c')]=_[_0x5a74('0xc8')](_0x211ea0[_0x5a74('0x3c')]);_0x4465c7[_0x5a74('0xca')]=_[_0x5a74('0xcb')](_0x4465c7[_0x5a74('0xc7')],_0x4465c7[_0x5a74('0x3c')]);_0x54b6eb[_0x5a74('0x42')]=_['intersection'](_0x4465c7[_0x5a74('0xc7')],qs[_0x5a74('0xcc')](_0x211ea0[_0x5a74('0x3c')]['fields']));_0x54b6eb['attributes']=_0x54b6eb['attributes'][_0x5a74('0x62')]?_0x54b6eb[_0x5a74('0x42')]:_0x4465c7[_0x5a74('0xc7')];_0x54b6eb[_0x5a74('0xcd')]=qs[_0x5a74('0xce')](_0x211ea0[_0x5a74('0x3c')]['sort']);_0x54b6eb['where']=qs['filters'](_[_0x5a74('0xcf')](_0x211ea0[_0x5a74('0x3c')],_0x4465c7[_0x5a74('0xca')]));if(_0x211ea0[_0x5a74('0x3c')][_0x5a74('0x33')]){_0x54b6eb[_0x5a74('0x3b')]=_[_0x5a74('0x50')](_0x54b6eb[_0x5a74('0x3b')],{'$or':_[_0x5a74('0x29')](_0x54b6eb[_0x5a74('0x42')],function(_0x5d6ede){var _0x33e765={};_0x33e765[_0x5d6ede]={'$like':'%'+_0x211ea0[_0x5a74('0x3c')]['filter']+'%'};return _0x33e765;})});}_0x54b6eb=_['merge']({},_0x54b6eb,_0x211ea0[_0x5a74('0x51')]);return _0x2bd9e7[_0x5a74('0x12f')](_0x54b6eb);}})[_0x5a74('0x21')](function(_0x5c5fae){if(_0x5c5fae){_0x2822ac=_0x5c5fae[_0x5a74('0x62')];if(!_0x211ea0['query'][_0x5a74('0xc0')](_0x5a74('0xd1'))){_0x54b6eb[_0x5a74('0x17')]=qs[_0x5a74('0x17')](_0x211ea0[_0x5a74('0x3c')][_0x5a74('0x17')]);_0x54b6eb[_0x5a74('0x15')]=qs[_0x5a74('0x15')](_0x211ea0[_0x5a74('0x3c')][_0x5a74('0x15')]);}return _0x2bd9e7[_0x5a74('0x12f')](_0x54b6eb);}})['then'](function(_0x207a89){if(_0x207a89){return _0x207a89?{'count':_0x2822ac,'rows':_0x207a89}:null;}})['then'](respondWithResult(_0x490a3d,null))[_0x5a74('0x4e')](handleError(_0x490a3d,null));};exports[_0x5a74('0x131')]=function(_0x136f91,_0x2d0cb2){return db[_0x5a74('0x31')][_0x5a74('0x2b')]({'where':{'id':_0x136f91[_0x5a74('0x4f')]['id']}})['then'](handleEntityNotFound(_0x2d0cb2,null))['then'](function(_0x206b04){if(_0x206b04){return _0x206b04[_0x5a74('0x131')](_0x136f91[_0x5a74('0x52')][_0x5a74('0x55')],_[_0x5a74('0x56')](_0x136f91[_0x5a74('0x52')],[_0x5a74('0x55'),'id'])||{});}})[_0x5a74('0x21')](respondWithResult(_0x2d0cb2,null))[_0x5a74('0x4e')](handleError(_0x2d0cb2,null));};exports[_0x5a74('0x132')]=function(_0x15af1c,_0x2807ed){return db['User'][_0x5a74('0x2b')]({'where':{'id':_0x15af1c[_0x5a74('0x4f')]['id']}})['then'](handleEntityNotFound(_0x2807ed,null))[_0x5a74('0x21')](function(_0x36656e){if(_0x36656e){return _0x36656e[_0x5a74('0x132')](_0x15af1c[_0x5a74('0x3c')][_0x5a74('0x55')]);}})[_0x5a74('0x21')](respondWithStatusCode(_0x2807ed,null))['catch'](handleError(_0x2807ed,null));};exports[_0x5a74('0x133')]=function(_0x486fd3,_0x1e45fc){var _0x10c495={};var _0x51fdaf={};var _0x10397a;var _0x187f28;return db[_0x5a74('0x31')][_0x5a74('0x8b')]({'where':{'id':_0x486fd3[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x1e45fc,null))['then'](function(_0x2cd83a){if(_0x2cd83a){_0x10397a=_0x2cd83a;_0x51fdaf['model']=_[_0x5a74('0xc8')](db['OpenchannelAccount'][_0x5a74('0x32')]);_0x51fdaf['query']=_[_0x5a74('0xc8')](_0x486fd3['query']);_0x51fdaf['filters']=_[_0x5a74('0xcb')](_0x51fdaf[_0x5a74('0xc7')],_0x51fdaf[_0x5a74('0x3c')]);_0x10c495['attributes']=_[_0x5a74('0xcb')](_0x51fdaf['model'],qs[_0x5a74('0xcc')](_0x486fd3[_0x5a74('0x3c')]['fields']));_0x10c495['attributes']=_0x10c495[_0x5a74('0x42')]['length']?_0x10c495[_0x5a74('0x42')]:_0x51fdaf[_0x5a74('0xc7')];_0x10c495[_0x5a74('0xcd')]=qs['sort'](_0x486fd3[_0x5a74('0x3c')]['sort']);_0x10c495[_0x5a74('0x3b')]=qs[_0x5a74('0xca')](_['pick'](_0x486fd3[_0x5a74('0x3c')],_0x51fdaf['filters']));if(_0x486fd3[_0x5a74('0x3c')][_0x5a74('0x33')]){_0x10c495[_0x5a74('0x3b')]=_[_0x5a74('0x50')](_0x10c495[_0x5a74('0x3b')],{'$or':_['map'](_0x10c495[_0x5a74('0x42')],function(_0x53d81d){var _0x3a4362={};_0x3a4362[_0x53d81d]={'$like':'%'+_0x486fd3[_0x5a74('0x3c')][_0x5a74('0x33')]+'%'};return _0x3a4362;})});}_0x10c495=_[_0x5a74('0x50')]({},_0x10c495,_0x486fd3[_0x5a74('0x51')]);return _0x10397a['getOpenchannelAccounts'](_0x10c495);}})[_0x5a74('0x21')](function(_0x10bb83){if(_0x10bb83){_0x187f28=_0x10bb83[_0x5a74('0x62')];if(!_0x486fd3[_0x5a74('0x3c')][_0x5a74('0xc0')](_0x5a74('0xd1'))){_0x10c495[_0x5a74('0x17')]=qs[_0x5a74('0x17')](_0x486fd3[_0x5a74('0x3c')][_0x5a74('0x17')]);_0x10c495[_0x5a74('0x15')]=qs[_0x5a74('0x15')](_0x486fd3['query']['offset']);}return _0x10397a['getOpenchannelAccounts'](_0x10c495);}})[_0x5a74('0x21')](function(_0x1ed2cd){if(_0x1ed2cd){return _0x1ed2cd?{'count':_0x187f28,'rows':_0x1ed2cd}:null;}})[_0x5a74('0x21')](respondWithResult(_0x1e45fc,null))[_0x5a74('0x4e')](handleError(_0x1e45fc,null));};exports[_0x5a74('0x134')]=function(_0x13fdfd,_0x1e2f89){return db[_0x5a74('0x31')][_0x5a74('0x2b')]({'where':{'id':_0x13fdfd[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x1e2f89,null))[_0x5a74('0x21')](function(_0x4c9c8e){if(_0x4c9c8e){return _0x4c9c8e[_0x5a74('0x134')](_0x13fdfd[_0x5a74('0x52')]['ids'],_['omit'](_0x13fdfd[_0x5a74('0x52')],[_0x5a74('0x55'),'id'])||{});}})['then'](respondWithResult(_0x1e2f89,null))['catch'](handleError(_0x1e2f89,null));};exports[_0x5a74('0x135')]=function(_0xe92cb6,_0x4336cf){return db[_0x5a74('0x31')][_0x5a74('0x2b')]({'where':{'id':_0xe92cb6['params']['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x4336cf,null))[_0x5a74('0x21')](function(_0x5cfeea){if(_0x5cfeea){return _0x5cfeea[_0x5a74('0x135')](_0xe92cb6['query'][_0x5a74('0x55')]);}})[_0x5a74('0x21')](respondWithStatusCode(_0x4336cf,null))['catch'](handleError(_0x4336cf,null));};exports[_0x5a74('0x136')]=function(_0xa70cd2,_0x26f4b6){var _0x6a87c4={};var _0x4d0e46={};var _0x1bc0c0;var _0x51535b;return db['User']['findOne']({'where':{'id':_0xa70cd2[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x26f4b6,null))[_0x5a74('0x21')](function(_0x103735){if(_0x103735){_0x1bc0c0=_0x103735;_0x4d0e46['model']=_[_0x5a74('0xc8')](db[_0x5a74('0x137')][_0x5a74('0x32')]);_0x4d0e46[_0x5a74('0x3c')]=_[_0x5a74('0xc8')](_0xa70cd2[_0x5a74('0x3c')]);_0x4d0e46[_0x5a74('0xca')]=_[_0x5a74('0xcb')](_0x4d0e46[_0x5a74('0xc7')],_0x4d0e46[_0x5a74('0x3c')]);_0x6a87c4['attributes']=_[_0x5a74('0xcb')](_0x4d0e46[_0x5a74('0xc7')],qs[_0x5a74('0xcc')](_0xa70cd2[_0x5a74('0x3c')][_0x5a74('0xcc')]));_0x6a87c4[_0x5a74('0x42')]=_0x6a87c4['attributes'][_0x5a74('0x62')]?_0x6a87c4[_0x5a74('0x42')]:_0x4d0e46['model'];_0x6a87c4[_0x5a74('0xcd')]=qs[_0x5a74('0xce')](_0xa70cd2[_0x5a74('0x3c')][_0x5a74('0xce')]);_0x6a87c4[_0x5a74('0x3b')]=qs[_0x5a74('0xca')](_[_0x5a74('0xcf')](_0xa70cd2[_0x5a74('0x3c')],_0x4d0e46[_0x5a74('0xca')]));if(_0xa70cd2['query'][_0x5a74('0x33')]){_0x6a87c4[_0x5a74('0x3b')]=_[_0x5a74('0x50')](_0x6a87c4[_0x5a74('0x3b')],{'$or':_[_0x5a74('0x29')](_0x6a87c4['attributes'],function(_0xee4bf2){var _0x2428e6={};_0x2428e6[_0xee4bf2]={'$like':'%'+_0xa70cd2[_0x5a74('0x3c')][_0x5a74('0x33')]+'%'};return _0x2428e6;})});}_0x6a87c4=_[_0x5a74('0x50')]({},_0x6a87c4,_0xa70cd2[_0x5a74('0x51')]);return _0x1bc0c0[_0x5a74('0x136')](_0x6a87c4);}})[_0x5a74('0x21')](function(_0x3d9950){if(_0x3d9950){_0x51535b=_0x3d9950[_0x5a74('0x62')];if(!_0xa70cd2[_0x5a74('0x3c')]['hasOwnProperty'](_0x5a74('0xd1'))){_0x6a87c4[_0x5a74('0x17')]=qs[_0x5a74('0x17')](_0xa70cd2['query'][_0x5a74('0x17')]);_0x6a87c4[_0x5a74('0x15')]=qs[_0x5a74('0x15')](_0xa70cd2[_0x5a74('0x3c')][_0x5a74('0x15')]);}return _0x1bc0c0[_0x5a74('0x136')](_0x6a87c4);}})[_0x5a74('0x21')](function(_0x289afc){if(_0x289afc){return _0x289afc?{'count':_0x51535b,'rows':_0x289afc}:null;}})['then'](respondWithResult(_0x26f4b6,null))['catch'](handleError(_0x26f4b6,null));};exports[_0x5a74('0x138')]=function(_0x346975,_0x156073){return db[_0x5a74('0x31')][_0x5a74('0x2b')]({'where':{'id':_0x346975[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x156073,null))[_0x5a74('0x21')](function(_0x113da6){if(_0x113da6){return _0x113da6[_0x5a74('0x138')](_0x346975[_0x5a74('0x52')][_0x5a74('0x55')],_[_0x5a74('0x56')](_0x346975[_0x5a74('0x52')],[_0x5a74('0x55'),'id'])||{});}})[_0x5a74('0x21')](respondWithResult(_0x156073,null))['catch'](handleError(_0x156073,null));};exports['removeSmsAccounts']=function(_0x48d883,_0x86c385){return db[_0x5a74('0x31')][_0x5a74('0x2b')]({'where':{'id':_0x48d883[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x86c385,null))[_0x5a74('0x21')](function(_0x1e071c){if(_0x1e071c){return _0x1e071c[_0x5a74('0x139')](_0x48d883[_0x5a74('0x3c')][_0x5a74('0x55')]);}})['then'](respondWithStatusCode(_0x86c385,null))[_0x5a74('0x4e')](handleError(_0x86c385,null));};exports[_0x5a74('0x13a')]=function(_0x34162d,_0x1fb8ac){var _0x489389={};var _0x55004a={};var _0x5b7652;var _0x2a246c;return db[_0x5a74('0x31')][_0x5a74('0x8b')]({'where':{'id':_0x34162d[_0x5a74('0x4f')]['id']}})['then'](handleEntityNotFound(_0x1fb8ac,null))[_0x5a74('0x21')](function(_0x4511ee){if(_0x4511ee){_0x5b7652=_0x4511ee;_0x55004a[_0x5a74('0xc7')]=_[_0x5a74('0xc8')](db['ChatWebsite'][_0x5a74('0x32')]);_0x55004a[_0x5a74('0x3c')]=_['keys'](_0x34162d[_0x5a74('0x3c')]);_0x55004a[_0x5a74('0xca')]=_['intersection'](_0x55004a[_0x5a74('0xc7')],_0x55004a[_0x5a74('0x3c')]);_0x489389['attributes']=_[_0x5a74('0xcb')](_0x55004a['model'],qs[_0x5a74('0xcc')](_0x34162d[_0x5a74('0x3c')][_0x5a74('0xcc')]));_0x489389[_0x5a74('0x42')]=_0x489389[_0x5a74('0x42')][_0x5a74('0x62')]?_0x489389[_0x5a74('0x42')]:_0x55004a['model'];_0x489389[_0x5a74('0xcd')]=qs['sort'](_0x34162d[_0x5a74('0x3c')][_0x5a74('0xce')]);_0x489389['where']=qs[_0x5a74('0xca')](_[_0x5a74('0xcf')](_0x34162d[_0x5a74('0x3c')],_0x55004a[_0x5a74('0xca')]));if(_0x34162d['query'][_0x5a74('0x33')]){_0x489389['where']=_[_0x5a74('0x50')](_0x489389[_0x5a74('0x3b')],{'$or':_[_0x5a74('0x29')](_0x489389['attributes'],function(_0x3ecc4e){var _0x2dba87={};_0x2dba87[_0x3ecc4e]={'$like':'%'+_0x34162d[_0x5a74('0x3c')]['filter']+'%'};return _0x2dba87;})});}_0x489389=_[_0x5a74('0x50')]({},_0x489389,_0x34162d['options']);return _0x5b7652[_0x5a74('0x13a')](_0x489389);}})['then'](function(_0x45861d){if(_0x45861d){_0x2a246c=_0x45861d[_0x5a74('0x62')];if(!_0x34162d[_0x5a74('0x3c')][_0x5a74('0xc0')]('nolimit')){_0x489389[_0x5a74('0x17')]=qs['limit'](_0x34162d[_0x5a74('0x3c')][_0x5a74('0x17')]);_0x489389[_0x5a74('0x15')]=qs[_0x5a74('0x15')](_0x34162d[_0x5a74('0x3c')][_0x5a74('0x15')]);}return _0x5b7652[_0x5a74('0x13a')](_0x489389);}})[_0x5a74('0x21')](function(_0x3fc19b){if(_0x3fc19b){return _0x3fc19b?{'count':_0x2a246c,'rows':_0x3fc19b}:null;}})[_0x5a74('0x21')](respondWithResult(_0x1fb8ac,null))[_0x5a74('0x4e')](handleError(_0x1fb8ac,null));};exports[_0x5a74('0x13b')]=function(_0x38f8e3,_0x13e4fd){return db['User'][_0x5a74('0x2b')]({'where':{'id':_0x38f8e3[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x13e4fd,null))[_0x5a74('0x21')](function(_0x47536c){if(_0x47536c){return _0x47536c['addChatWebsites'](_0x38f8e3[_0x5a74('0x52')][_0x5a74('0x55')],_[_0x5a74('0x56')](_0x38f8e3[_0x5a74('0x52')],[_0x5a74('0x55'),'id'])||{});}})[_0x5a74('0x21')](respondWithResult(_0x13e4fd,null))[_0x5a74('0x4e')](handleError(_0x13e4fd,null));};exports[_0x5a74('0x13c')]=function(_0x39ba1a,_0x45fc4a){return db['User'][_0x5a74('0x2b')]({'where':{'id':_0x39ba1a[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x45fc4a,null))[_0x5a74('0x21')](function(_0x5b9446){if(_0x5b9446){return _0x5b9446[_0x5a74('0x13c')](_0x39ba1a['query'][_0x5a74('0x55')]);}})[_0x5a74('0x21')](respondWithStatusCode(_0x45fc4a,null))['catch'](handleError(_0x45fc4a,null));};exports[_0x5a74('0x13d')]=function(_0x15bce8,_0x2fddad){var _0x16098f={};var _0xb5027e={};var _0xade5b0;var _0x261e4a;return db[_0x5a74('0x31')]['findOne']({'where':{'id':_0x15bce8[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x2fddad,null))['then'](function(_0x531128){if(_0x531128){_0xade5b0=_0x531128;_0xb5027e[_0x5a74('0xc7')]=_[_0x5a74('0xc8')](db[_0x5a74('0x13e')]['rawAttributes']);_0xb5027e[_0x5a74('0x3c')]=_[_0x5a74('0xc8')](_0x15bce8[_0x5a74('0x3c')]);_0xb5027e[_0x5a74('0xca')]=_['intersection'](_0xb5027e[_0x5a74('0xc7')],_0xb5027e['query']);_0x16098f[_0x5a74('0x42')]=_[_0x5a74('0xcb')](_0xb5027e[_0x5a74('0xc7')],qs[_0x5a74('0xcc')](_0x15bce8['query'][_0x5a74('0xcc')]));_0x16098f['attributes']=_0x16098f[_0x5a74('0x42')][_0x5a74('0x62')]?_0x16098f[_0x5a74('0x42')]:_0xb5027e['model'];_0x16098f[_0x5a74('0xcd')]=qs[_0x5a74('0xce')](_0x15bce8[_0x5a74('0x3c')]['sort']);_0x16098f[_0x5a74('0x3b')]=qs[_0x5a74('0xca')](_['pick'](_0x15bce8['query'],_0xb5027e[_0x5a74('0xca')]));if(_0x15bce8[_0x5a74('0x3c')][_0x5a74('0x33')]){_0x16098f[_0x5a74('0x3b')]=_[_0x5a74('0x50')](_0x16098f[_0x5a74('0x3b')],{'$or':_[_0x5a74('0x29')](_0x16098f['attributes'],function(_0x416912){var _0x15df22={};_0x15df22[_0x416912]={'$like':'%'+_0x15bce8[_0x5a74('0x3c')][_0x5a74('0x33')]+'%'};return _0x15df22;})});}_0x16098f=_[_0x5a74('0x50')]({},_0x16098f,_0x15bce8['options']);return _0xade5b0[_0x5a74('0x13d')](_0x16098f);}})['then'](function(_0x33c894){if(_0x33c894){_0x261e4a=_0x33c894[_0x5a74('0x62')];if(!_0x15bce8[_0x5a74('0x3c')][_0x5a74('0xc0')](_0x5a74('0xd1'))){_0x16098f[_0x5a74('0x17')]=qs[_0x5a74('0x17')](_0x15bce8[_0x5a74('0x3c')][_0x5a74('0x17')]);_0x16098f[_0x5a74('0x15')]=qs[_0x5a74('0x15')](_0x15bce8[_0x5a74('0x3c')][_0x5a74('0x15')]);}return _0xade5b0['getWhatsappAccounts'](_0x16098f);}})['then'](function(_0x1dbeb0){if(_0x1dbeb0){return _0x1dbeb0?{'count':_0x261e4a,'rows':_0x1dbeb0}:null;}})[_0x5a74('0x21')](respondWithResult(_0x2fddad,null))['catch'](handleError(_0x2fddad,null));};exports[_0x5a74('0x13f')]=function(_0x232ef8,_0x20db47){return db['User'][_0x5a74('0x2b')]({'where':{'id':_0x232ef8[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x20db47,null))[_0x5a74('0x21')](function(_0x3634aa){if(_0x3634aa){return _0x3634aa[_0x5a74('0x13f')](_0x232ef8[_0x5a74('0x52')]['ids'],_['omit'](_0x232ef8[_0x5a74('0x52')],[_0x5a74('0x55'),'id'])||{});}})[_0x5a74('0x21')](respondWithResult(_0x20db47,null))[_0x5a74('0x4e')](handleError(_0x20db47,null));};exports['removeWhatsappAccounts']=function(_0xc563e0,_0x2c7f2e){return db[_0x5a74('0x31')][_0x5a74('0x2b')]({'where':{'id':_0xc563e0[_0x5a74('0x4f')]['id']}})[_0x5a74('0x21')](handleEntityNotFound(_0x2c7f2e,null))[_0x5a74('0x21')](function(_0x58922b){if(_0x58922b){return _0x58922b[_0x5a74('0x140')](_0xc563e0[_0x5a74('0x3c')][_0x5a74('0x55')]);}})[_0x5a74('0x21')](respondWithStatusCode(_0x2c7f2e,null))[_0x5a74('0x4e')](handleError(_0x2c7f2e,null));};exports[_0x5a74('0x141')]=function(_0x128d84,_0x196d84){var _0x1d60d8={},_0x21cacf={},_0x22a996={'count':0x0,'rows':[]};var _0x524321=db[_0x5a74('0x142')][_0x5a74('0x32')];_0x21cacf[_0x5a74('0xc7')]=_['keys'](_0x524321);_0x21cacf['query']=_[_0x5a74('0xc8')](_0x128d84[_0x5a74('0x3c')]);_0x21cacf[_0x5a74('0xca')]=_[_0x5a74('0xcb')](_0x21cacf[_0x5a74('0xc7')],_0x21cacf[_0x5a74('0x3c')]);_0x21cacf[_0x5a74('0xca')]=_[_0x5a74('0xbe')](_0x21cacf['filters'],[_0x5a74('0x143'),'$or','$gt',_0x5a74('0x144'),'$lt',_0x5a74('0x145'),_0x5a74('0x146'),_0x5a74('0x147'),'$not','$between',_0x5a74('0x148'),_0x5a74('0x149'),_0x5a74('0x14a'),'$like',_0x5a74('0x14b'),'$iLike',_0x5a74('0x14c'),_0x5a74('0x14d'),_0x5a74('0x14e'),_0x5a74('0x14f'),_0x5a74('0x150'),_0x5a74('0x151')]);_0x1d60d8['attributes']=_[_0x5a74('0xcb')](_0x21cacf[_0x5a74('0xc7')],qs[_0x5a74('0xcc')](_0x128d84[_0x5a74('0x3c')][_0x5a74('0xcc')]));_0x1d60d8[_0x5a74('0x42')]=_0x1d60d8[_0x5a74('0x42')][_0x5a74('0x62')]?_0x1d60d8[_0x5a74('0x42')]:_0x21cacf['model'];if(!_0x128d84[_0x5a74('0x3c')]['hasOwnProperty'](_0x5a74('0xd1'))){_0x1d60d8['limit']=qs['limit'](_0x128d84[_0x5a74('0x3c')][_0x5a74('0x17')]);_0x1d60d8[_0x5a74('0x15')]=qs[_0x5a74('0x15')](_0x128d84[_0x5a74('0x3c')][_0x5a74('0x15')]);}_0x1d60d8[_0x5a74('0xcd')]=qs['sort'](_0x128d84[_0x5a74('0x3c')]['sort']);_0x1d60d8[_0x5a74('0x3b')]=qs['filters'](_['pick'](_0x128d84[_0x5a74('0x3c')],_0x21cacf[_0x5a74('0xca')]));if(_0x128d84[_0x5a74('0x3c')][_0x5a74('0x33')]){_0x1d60d8['where']=_[_0x5a74('0x50')](_0x1d60d8[_0x5a74('0x3b')],{'$or':_['map'](_0x1d60d8[_0x5a74('0x42')],function(_0x53c569){var _0x4747e8={};_0x4747e8[_0x53c569]={'$like':'%'+_0x128d84[_0x5a74('0x3c')]['filter']+'%'};return _0x4747e8;})});}_0x1d60d8[_0x5a74('0x3b')]={'$and':[_0x1d60d8[_0x5a74('0x3b')],{'$or':[{'UserId':_0x128d84[_0x5a74('0x4f')]['id']},{'OwnerId':_0x128d84[_0x5a74('0x4f')]['id']}]}]};_0x1d60d8=_[_0x5a74('0x50')]({},_0x1d60d8,_0x128d84[_0x5a74('0x51')]);var _0xa097ee={'where':_0x1d60d8[_0x5a74('0x3b')]};return db['CmHopper'][_0x5a74('0x18')](_0xa097ee)[_0x5a74('0x21')](function(_0x2fbf3e){_0x22a996[_0x5a74('0x18')]=_0x2fbf3e;if(_0x128d84[_0x5a74('0x3c')][_0x5a74('0x3d')]){_0x1d60d8[_0x5a74('0x3e')]=[{'attributes':['id','firstName',_0x5a74('0x152'),'phone'],'model':db['CmContact'],'as':_0x5a74('0x153')},{'attributes':['id',_0x5a74('0x2c'),_0x5a74('0x154')],'model':db[_0x5a74('0x9f')],'as':_0x5a74('0xc9')}];}return db[_0x5a74('0x142')][_0x5a74('0x81')](_0x1d60d8);})['then'](function(_0x515644){_0x22a996[_0x5a74('0x44')]=_0x515644;return _0x22a996;})['then'](respondWithFilteredResult(_0x196d84,_0x1d60d8))['catch'](handleError(_0x196d84,null));};exports[_0x5a74('0x155')]=function(_0x1c6f93,_0x588181){if(!_[_0x5a74('0x5d')](_0x1c6f93['user']['id'])&&(_0x1c6f93[_0x5a74('0x25')]['role']==_0x5a74('0x23')||_0x1c6f93['user'][_0x5a74('0x1d')]==_0x5a74('0x25'))){return db['User'][_0x5a74('0x8b')]({'where':{'id':_0x1c6f93[_0x5a74('0x4f')]['id']},'raw':!![]})[_0x5a74('0x21')](function(_0x3b0965){return authService[_0x5a74('0x156')](_0x3b0965);})[_0x5a74('0x21')](function(_0x2e9568){if(_0x2e9568){return _0x588181['status'](0xc8)[_0x5a74('0x1b')]({'api_key':_0x2e9568[_0x5a74('0x157')]});}else{return _0x588181[_0x5a74('0x13')](0xcc)[_0x5a74('0x1b')]({'message':_0x5a74('0x158')});}})[_0x5a74('0x4e')](handleError(_0x588181,0x193));}else{return _0x588181[_0x5a74('0x13')](0x191)[_0x5a74('0x1b')]({'message':_0x5a74('0x159')});}};exports[_0x5a74('0x15a')]=function(_0x361f59,_0x3e93aa){if(!_[_0x5a74('0x5d')](_0x361f59[_0x5a74('0x25')]['id'])&&(_0x361f59[_0x5a74('0x25')]['role']==_0x5a74('0x23')||_0x361f59['user'][_0x5a74('0x1d')]==_0x5a74('0x25'))){return db[_0x5a74('0x31')]['find']({'where':{'id':_0x361f59['params']['id']}})[_0x5a74('0x21')](function(_0x2abc3d){return authService[_0x5a74('0x15b')](_0x2abc3d);})[_0x5a74('0x21')](function(_0x217132){return db[_0x5a74('0x31')][_0x5a74('0x1c')]({'apiKeyIat':_0x217132[_0x5a74('0x15c')],'apiKeyNonce':_0x217132[_0x5a74('0x15d')]},{'where':{'id':_0x361f59['params']['id']}})[_0x5a74('0x21')](function(){return _0x3e93aa['status'](0xc8)[_0x5a74('0x1b')]({'api_key':_0x217132[_0x5a74('0x157')]});});})[_0x5a74('0x4e')](handleError(_0x3e93aa,0x193));}else{return _0x3e93aa['status'](0x191)[_0x5a74('0x1b')]({'message':_0x5a74('0x159')});}};exports[_0x5a74('0x15e')]=function(_0x141935,_0x13c08b){if(!_[_0x5a74('0x5d')](_0x141935[_0x5a74('0x25')]['id'])&&(_0x141935[_0x5a74('0x25')]['role']=='admin'||_0x141935[_0x5a74('0x25')][_0x5a74('0x1d')]==_0x5a74('0x25'))){return db['User'][_0x5a74('0x2b')]({'where':{'id':_0x141935[_0x5a74('0x4f')]['id']}})['then'](handleEntityNotFound(_0x13c08b,null))[_0x5a74('0x21')](function(_0x587d79){if(_0x587d79&&_0x587d79[_0x5a74('0x15f')]&&_0x587d79[_0x5a74('0x160')])return _0x587d79;else throw{'message':'API\x20key\x20not\x20available'};})[_0x5a74('0x21')](function(){return db[_0x5a74('0x31')][_0x5a74('0x1c')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x141935[_0x5a74('0x4f')]['id']}});})[_0x5a74('0x21')](respondWithStatusCode(_0x13c08b,0xc8))[_0x5a74('0x4e')](handleError(_0x13c08b,0x193));}else{return _0x13c08b[_0x5a74('0x13')](0x191)[_0x5a74('0x1b')]({'message':_0x5a74('0x159')});}};exports[_0x5a74('0x161')]=function(_0x47172d,_0x1b575c){var _0x28beb9=_0x47172d[_0x5a74('0x25')][_0x5a74('0x22')]({'plain':!![]});if(!_0x28beb9){return _0x1b575c['status'](0x191)['send'](_0x5a74('0x162'));}else{Promise[_0x5a74('0xf6')]()['then'](function(){if(_0x47172d[_0x5a74('0x3c')][_0x5a74('0x3f')]!==_0x5a74('0x40'))return;return _0x47172d[_0x5a74('0x25')][_0x5a74('0x163')]();})['then'](function(_0x214a4f){if(!_0x214a4f)return;return _0x214a4f[_0x5a74('0x22')]({'plain':!![]});})[_0x5a74('0x21')](function(_0x277bb5){_0x28beb9[_0x5a74('0x3f')]=_0x277bb5;return _0x1b575c['status'](0xc8)[_0x5a74('0x1b')](_0x28beb9);});}};exports[_0x5a74('0x164')]=function(_0x1b123c,_0x12384d){var _0x4a6a4c={'offset':0x0};var _0x48f682={'count':0x0,'rows':[]};var _0x1af6ae=['idle',_0x5a74('0x165'),_0x5a74('0x166')];var _0x1c4b03=[];var _0x5cc8b5=[];var _0x3d6843=[];var _0x47bb90=_0x1b123c[_0x5a74('0x3c')][_0x5a74('0x167')];var _0x25f7f3=_0x1b123c[_0x5a74('0x3c')]['queues'];var _0x3292e7=_0x1b123c[_0x5a74('0x3c')][_0x5a74('0x33')];return Promise[_0x5a74('0xf6')]()[_0x5a74('0x21')](function(){if(!_0x47bb90){return[];}return db[_0x5a74('0x106')]['findAll']({'attributes':['id',_0x5a74('0x2c')],'where':{'id':_0x47bb90}});})['then'](function(_0x52d369){_0x3d6843=_0x52d369;if(!_0x25f7f3){return[];}return db[_0x5a74('0x9f')]['findAll']({'attributes':['id',_0x5a74('0x2c')],'type':_0x5a74('0x168'),'where':{'id':_0x25f7f3}});})[_0x5a74('0x21')](function(_0x2b8984){_0x5cc8b5=_0x2b8984;var _0x39c9ab=_0x3d6843[_0x5a74('0xbe')](_0x5cc8b5)[_0x5a74('0x29')](function(_0x5d7a1a){return _0x5d7a1a[_0x5a74('0x114')]({'attributes':['id',_0x5a74('0x2c'),_0x5a74('0x57'),'online'],'raw':!![]});});return Promise['all'](_0x39c9ab);})['then'](function(_0x3cac00){var _0x240fcf=_[_0x5a74('0x169')](_0x3cac00);if(_0x3292e7){if(_0x25f7f3||_0x47bb90){return _0x240fcf[_0x5a74('0x33')](function(_0x62cb1d){return _0x62cb1d[_0x5a74('0x2c')][_0x5a74('0x98')]()['includes'](_0x3292e7[_0x5a74('0x98')]())||_0x62cb1d['internal'][_0x5a74('0x16a')]()[_0x5a74('0x38')](_0x3292e7);});}else{return db[_0x5a74('0x31')][_0x5a74('0x81')]({'attributes':['id','name',_0x5a74('0x57'),'online'],'where':{'role':_0x5a74('0x1e'),'$or':[db[_0x5a74('0x110')][_0x5a74('0x3b')](db[_0x5a74('0x110')]['fn'](_0x5a74('0x16b'),db[_0x5a74('0x110')]['col'](_0x5a74('0x2c'))),{'$like':'%'+_0x3292e7[_0x5a74('0x98')]()+'%'}),{'internal':{'$like':'%'+_0x3292e7+'%'}}]},'raw':!![]});}}else{return _0x240fcf;}})[_0x5a74('0x21')](function(_0x3109fa){var _0x4ba8b2=_0x5a74('0x2c');var _0x4978d8=_0x5a74('0x16c');if(_0x1b123c[_0x5a74('0x3c')]['sort']){_0x4978d8=_0x1b123c[_0x5a74('0x3c')][_0x5a74('0xce')][0x0]==='-'?'desc':_0x5a74('0x16c');_0x4ba8b2=_0x4978d8==='asc'?_0x1b123c['query'][_0x5a74('0xce')]:_0x1b123c[_0x5a74('0x3c')][_0x5a74('0xce')]['substring'](0x1);}return _(_0x3109fa)[_0x5a74('0x16d')]('id')[_0x5a74('0x16e')]([function(_0x485f9e){return _0x4ba8b2===_0x5a74('0x2c')?_0x485f9e[_0x4ba8b2][_0x5a74('0x98')]():_0x485f9e[_0x4ba8b2];}],[_0x4978d8])['map'](function(_0x3cc37c){return _[_0x5a74('0xcf')](_0x3cc37c,['id',_0x5a74('0x2c'),_0x5a74('0x57'),_0x5a74('0xfd')]);})[_0x5a74('0x2a')]();})[_0x5a74('0x21')](function(_0x3b3d86){_0x1c4b03=_0x3b3d86;return rta[_0x5a74('0x16f')]();})['then'](function(_0x56b619){return _0x1c4b03[_0x5a74('0x29')](function(_0x1a18e7){var _0x1b4066=_[_0x5a74('0x2b')](_0x56b619[_0x5a74('0x44')],['id',_0x1a18e7['id']]);if(!_0x1b4066||!_0x1a18e7[_0x5a74('0xfd')]){_0x1a18e7[_0x5a74('0x13')]=_0x5a74('0x170');}else if(_0x1b4066[_0x5a74('0x93')]){_0x1a18e7[_0x5a74('0x13')]=_0x5a74('0xf8');}else if(_0x1b4066['voiceStatus']==='unavailable'||!_0x1b4066['voiceStatus']){_0x1a18e7['status']=_0x5a74('0x171');}else{_0x1a18e7[_0x5a74('0x13')]=_0x1af6ae[_0x5a74('0x38')](_0x1b4066['voiceStatus'])?_0x5a74('0xfd'):_0x5a74('0x172');}return _0x1a18e7;});})[_0x5a74('0x21')](function(_0x2027c0){if(!_0x1b123c['query']['hasOwnProperty'](_0x5a74('0xd1'))){_0x4a6a4c[_0x5a74('0x17')]=qs[_0x5a74('0x17')](_0x1b123c[_0x5a74('0x3c')][_0x5a74('0x17')]||0xa);_0x4a6a4c[_0x5a74('0x15')]=qs[_0x5a74('0x15')](_0x1b123c[_0x5a74('0x3c')][_0x5a74('0x15')]);}_0x48f682[_0x5a74('0x18')]=_0x2027c0[_0x5a74('0x62')];_0x48f682[_0x5a74('0x44')]=_0x4a6a4c[_0x5a74('0x17')]?_0x2027c0['slice'](_0x4a6a4c[_0x5a74('0x15')],_0x4a6a4c['offset']+_0x4a6a4c[_0x5a74('0x17')]):_0x2027c0;return _0x48f682;})[_0x5a74('0x21')](respondWithFilteredResult(_0x12384d,_0x4a6a4c))[_0x5a74('0x4e')](handleError(_0x12384d,null));};function get_open_tabs(_0xc8485a,_0x5d440a){var _0x5144e1=_0xc8485a[_0x5a74('0x173')](0x0)[_0x5a74('0x174')]()+_0xc8485a[_0x5a74('0x175')](0x1);var _0x5d4580={'type':db[_0x5a74('0x85')][_0x5a74('0x60')]['SELECT'],'raw':!![]};return new Promise(function(_0x48db34,_0x39bea9){var _0x25d23b=squel[_0x5a74('0x176')]()[_0x5a74('0x177')]('ui.'+_0x5144e1+_0x5a74('0x178'),'id')[_0x5a74('0x177')](_0x5a74('0x179'))[_0x5a74('0x63')]('user_has_'+_0xc8485a+_0x5a74('0x17a'),'ui')[_0x5a74('0x3b')](_0x5a74('0x17b'),_0x5d440a['id']);return db['sequelize'][_0x5a74('0x3c')](_0x25d23b['toString'](),_0x5d4580)['then'](function(_0xb8a92c){_0x5d440a[_0x5144e1+_0x5a74('0x17c')]=_0xb8a92c;_0x48db34(_0xb8a92c);})['catch'](function(_0x15ca96){_0x39bea9(_0x15ca96);});});}exports[_0x5a74('0x17d')]=function(_0x596cf9,_0x21a0fb){var _0x3f75ed=_0x596cf9[_0x5a74('0x4f')]['id'];var _0x256ce1=_0x596cf9[_0x5a74('0x52')]['enabled'];return db[_0x5a74('0x31')]['update']({'messengerSoundNotification':_0x256ce1},{'where':{'id':_0x3f75ed}})[_0x5a74('0x21')](respondWithStatusCode(_0x21a0fb,null))['catch'](handleError(_0x21a0fb,null));};
\ No newline at end of file
index 963ecb8..e3872f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbaa=['events','../../mysqldb','User','setMaxListeners','save','update','emit','hook','exports'];(function(_0x525b19,_0x22e8c4){var _0x2fd796=function(_0x21a598){while(--_0x21a598){_0x525b19['push'](_0x525b19['shift']());}};_0x2fd796(++_0x22e8c4);}(_0xcbaa,0xc6));var _0xacba=function(_0x224f65,_0x4750bf){_0x224f65=_0x224f65-0x0;var _0x3f921c=_0xcbaa[_0x224f65];return _0x3f921c;};'use strict';var EventEmitter=require(_0xacba('0x0'));var User=require(_0xacba('0x1'))['db'][_0xacba('0x2')];var UserEvents=new EventEmitter();UserEvents[_0xacba('0x3')](0x0);var events={'afterCreate':_0xacba('0x4'),'afterUpdate':_0xacba('0x5'),'afterDestroy':'remove'};function emitEvent(_0x6802ed){return function(_0x614af6,_0x3c599d,_0x5cb7f2){UserEvents[_0xacba('0x6')](_0x6802ed+':'+_0x614af6['id'],_0x614af6);UserEvents[_0xacba('0x6')](_0x6802ed,_0x614af6);_0x5cb7f2(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];User[_0xacba('0x7')](e,emitEvent(event));}}module[_0xacba('0x8')]=UserEvents;
\ No newline at end of file
+var _0x9e9a=['../../mysqldb','User','setMaxListeners','save','update','emit','hasOwnProperty','hook','events'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0x9e9a,0x1e5));var _0xa9e9=function(_0x104914,_0x49debf){_0x104914=_0x104914-0x0;var _0x2fb6f1=_0x9e9a[_0x104914];return _0x2fb6f1;};'use strict';var EventEmitter=require(_0xa9e9('0x0'));var User=require(_0xa9e9('0x1'))['db'][_0xa9e9('0x2')];var UserEvents=new EventEmitter();UserEvents[_0xa9e9('0x3')](0x0);var events={'afterCreate':_0xa9e9('0x4'),'afterUpdate':_0xa9e9('0x5'),'afterDestroy':'remove'};function emitEvent(_0x5354bf){return function(_0x984f8e,_0x5ce42d,_0x8ddc38){UserEvents['emit'](_0x5354bf+':'+_0x984f8e['id'],_0x984f8e);UserEvents[_0xa9e9('0x6')](_0x5354bf,_0x984f8e);_0x8ddc38(null);};}for(var e in events){if(events[_0xa9e9('0x7')](e)){var event=events[e];User[_0xa9e9('0x8')](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
index 7a1923f..ab238bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20ce=['toString','salt','from','base64','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt','md5secret',':asterisk:','client','http','request','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','error','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','QueuePause','message','UserVoiceQueueRt','update','findAll','findOne','channel','MemberReport','isArray','YYYY-MM-DD\x20HH:mm:ss','all','voicePause','chatPause','faxPause','smsPause','whatsappPause','Pause','getRealtimeData','../../config/utils','getChannels','forEach','setDataValue','bluebird','crypto','util','moment','lodash','jayson/promise','./user.attributes','google','length','context','from-sip','system','format','%s%s','prefix','push','merge','CDR(type)=%s','chanspy','record','MixMonitor','recordingFormat','auth','Authenticate','password','name','options','join','StopMixMonitor','wav','WAV','gsm','Set','includes','extensionMonitor','_XCALLY_MIXMONITOR_FORMAT=%s','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','Hangup','priority','defaults','then','internal','concat','exports','models','define','User','users','utf8','utf8_bin','userProfileId','undefined','resolve','UserProfile','find','privacyEnabled','updateMd5Password','updatePassword','catch','userSetting','VoiceExtension','bulkCreate','changed','destroy','encryptPassword','function','Missing\x20Callback','randomBytes'];(function(_0x3a24b8,_0x1b7651){var _0x502dd8=function(_0x227756){while(--_0x227756){_0x3a24b8['push'](_0x3a24b8['shift']());}};_0x502dd8(++_0x1b7651);}(_0x20ce,0x10d));var _0xe20c=function(_0x2cf7f1,_0x1c00f4){_0x2cf7f1=_0x2cf7f1-0x0;var _0xf24ee=_0x20ce[_0x2cf7f1];return _0xf24ee;};'use strict';var BPromise=require(_0xe20c('0x0'));var crypto=require(_0xe20c('0x1'));var util=require(_0xe20c('0x2'));var md5=require('md5');var moment=require(_0xe20c('0x3'));var _=require(_0xe20c('0x4'));var jayson=require(_0xe20c('0x5'));var attributes=require(_0xe20c('0x6'));var authTypes=[_0xe20c('0x7')];var validatePresenceOf=function(_0x23f743){return _0x23f743&&_0x23f743[_0xe20c('0x8')];};var getChanSpyApplications=function(_0x991abf,_0x373f9f,_0x2c9e6a){var _0x893e48={'context':_0x991abf[_0xe20c('0x9')]||_0xe20c('0xa'),'type':_0xe20c('0xb'),'isApp':![],'UserId':_0x991abf['id']};var _0x290fb5=[];for(var _0x2d7f77=0x0,_0x454dd1=0x1;_0x2d7f77<_0x2c9e6a[_0xe20c('0x8')];_0x2d7f77++,_0x454dd1=0x1){var _0x41379b={'exten':util[_0xe20c('0xc')](_0xe20c('0xd'),_0x2c9e6a[_0x2d7f77][_0xe20c('0xe')],_0x373f9f),'ChanSpyId':_0x2c9e6a[_0x2d7f77]['id']};_0x290fb5[_0xe20c('0xf')](_[_0xe20c('0x10')]({'app':'Set','appdata':util[_0xe20c('0xc')](_0xe20c('0x11'),_0xe20c('0x12')),'priority':_0x454dd1++},_0x893e48,_0x41379b));if(_0x2c9e6a[_0x2d7f77][_0xe20c('0x13')]){_0x290fb5[_0xe20c('0xf')](_['merge']({'app':_0xe20c('0x14'),'appdata':util[_0xe20c('0xc')]('${UNIQUEID}.%s,a',_0x2c9e6a[_0x2d7f77][_0xe20c('0x15')]),'priority':_0x454dd1++},_0x893e48,_0x41379b));}if(_0x2c9e6a[_0x2d7f77][_0xe20c('0x16')]){_0x290fb5[_0xe20c('0xf')](_['merge']({'app':_0xe20c('0x17'),'appdata':_0x2c9e6a[_0x2d7f77][_0xe20c('0x18')],'priority':_0x454dd1++},_0x893e48,_0x41379b));}_0x290fb5[_0xe20c('0xf')](_[_0xe20c('0x10')]({'app':'ChanSpy','appdata':util[_0xe20c('0xc')]('SIP/%s,%s',_0x991abf[_0xe20c('0x19')],_0x2c9e6a[_0x2d7f77][_0xe20c('0x1a')]?_0x2c9e6a[_0x2d7f77][_0xe20c('0x1a')][_0xe20c('0x1b')](''):''),'priority':_0x454dd1++},_0x893e48,_0x41379b));if(_0x2c9e6a[_0x2d7f77][_0xe20c('0x13')]){_0x290fb5[_0xe20c('0xf')](_[_0xe20c('0x10')]({'app':_0xe20c('0x1c'),'priority':_0x454dd1++},_0x893e48,_0x41379b));}}return _0x290fb5;};var getUserApplications=function(_0x305f2f,_0x3768b0){var _0x506825=[_0xe20c('0x1d'),_0xe20c('0x1e'),_0xe20c('0x1f')];var _0x42d4d5={'context':_0x305f2f['context']||'from-sip','exten':_0x3768b0,'type':_0xe20c('0xb'),'isApp':![],'UserId':_0x305f2f['id']};var _0x25b778=[{'app':_0xe20c('0x20'),'appdata':'CDR(type)=internal'}];if(_0x305f2f['extensionMonitor']&&_[_0xe20c('0x21')](_0x506825,_0x305f2f[_0xe20c('0x22')])){_0x25b778[_0xe20c('0xf')]({'app':_0xe20c('0x20'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x25b778[_0xe20c('0xf')]({'app':'Set','appdata':util[_0xe20c('0xc')](_0xe20c('0x23'),_0x305f2f[_0xe20c('0x22')])});_0x25b778[_0xe20c('0xf')]({'app':_0xe20c('0x24'),'appdata':util[_0xe20c('0xc')](_0xe20c('0x25'),_0x305f2f['name'])});}else{_0x25b778[_0xe20c('0xf')]({'app':_0xe20c('0x24'),'appdata':util[_0xe20c('0xc')](_0xe20c('0x26'),_0x305f2f[_0xe20c('0x19')])});}_0x25b778[_0xe20c('0xf')]({'app':_0xe20c('0x27')});for(var _0xd39cc6=0x0;_0xd39cc6<_0x25b778[_0xe20c('0x8')];_0xd39cc6++){_0x25b778[_0xd39cc6][_0xe20c('0x28')]=_0xd39cc6+0x1;_0x25b778[_0xd39cc6]=_[_0xe20c('0x29')](_0x25b778[_0xd39cc6],_0x42d4d5);}return _0x25b778;};var getChanSpyPromise=function(_0x417e36,_0x3302a9){return new BPromise(function(_0x51a6a3,_0x34666d){return _0x417e36['VoiceChanSpy']['findAll']()[_0xe20c('0x2a')](function(_0x3edcbe){if(_0x3edcbe){var _0x131ca6=getChanSpyApplications(_0x3302a9,_0x3302a9['internal'],_0x3edcbe);if(_0x3302a9[_0xe20c('0x2b')]!=_0x3302a9[_0xe20c('0x19')]){_0x131ca6=_0x131ca6[_0xe20c('0x2c')](getChanSpyApplications(_0x3302a9,_0x3302a9[_0xe20c('0x19')],_0x3edcbe));}return _0x51a6a3(_0x131ca6);}return _0x51a6a3([]);})['catch'](function(_0x1709b5){_0x34666d(_0x1709b5);});});};module[_0xe20c('0x2d')]=function(_0x57275d){var _0x126772=_0x57275d[_0xe20c('0x2e')];return _0x57275d[_0xe20c('0x2f')](_0xe20c('0x30'),attributes,{'tableName':_0xe20c('0x31'),'charset':_0xe20c('0x32'),'collate':_0xe20c('0x33'),'hooks':{'beforeCreate':function(_0x445dfc,_0x1e5d34,_0xdb6805){var _0x4ae4d4=typeof _0x445dfc[_0xe20c('0x34')]===_0xe20c('0x35')?BPromise[_0xe20c('0x36')](null):_0x126772[_0xe20c('0x37')][_0xe20c('0x38')]({'where':{'id':_0x445dfc['userProfileId']}});_0x4ae4d4[_0xe20c('0x2a')](function(_0xb902e){if(_0xb902e){_0x445dfc[_0xe20c('0x39')]=_0xb902e['privacyEnabled'];}})['then'](function(){_0x445dfc[_0xe20c('0x3a')]();_0x445dfc[_0xe20c('0x3b')](_0xdb6805);})[_0xe20c('0x3c')](function(_0x1cf29a){_0xdb6805(_0x1cf29a);});},'beforeUpdate':function(_0x2ce550,_0x4435ac,_0x2de547){Promise[_0xe20c('0x36')]()[_0xe20c('0x2a')](function(){if(_0x2ce550['changed']('userProfileId')===![])return;return _0x126772[_0xe20c('0x37')][_0xe20c('0x38')]({'where':{'id':_0x2ce550['userProfileId']}})[_0xe20c('0x2a')](function(_0x5b62b7){if(_0x5b62b7)_0x2ce550[_0xe20c('0x39')]=_0x5b62b7[_0xe20c('0x39')];return;});})[_0xe20c('0x2a')](function(){if(_0x2ce550['changed']('password')){_0x2ce550['updateMd5Password']();return _0x2ce550[_0xe20c('0x3b')](_0x2de547);}_0x2de547();})[_0xe20c('0x3c')](function(_0x32c887){_0x2de547(_0x32c887);});},'afterCreate':function(_0x593a06,_0x204046,_0x15df75){var _0x5604b0=getUserApplications(_0x593a06,_0x593a06['internal']);if(_0x593a06[_0xe20c('0x2b')]!=_0x593a06[_0xe20c('0x19')]){_0x5604b0=_0x5604b0[_0xe20c('0x2c')](getUserApplications(_0x593a06,_0x593a06[_0xe20c('0x19')]));}return Promise[_0xe20c('0x36')]()[_0xe20c('0x2a')](function(){if(!_0x593a06[_0xe20c('0x3d')]){return _0x593a06['createUserSetting']({'clientSideLoggingLevel':'error','clientSideLoggingEnabled':![]});}})[_0xe20c('0x2a')](function(){return _0x126772[_0xe20c('0x3e')][_0xe20c('0x3f')](_0x5604b0);})[_0xe20c('0x2a')](function(){if(_0x593a06[_0xe20c('0x12')]){return getChanSpyPromise(_0x126772,_0x593a06);}})['then'](function(_0x58c39b){if(_0x58c39b&&_0x58c39b['length']){return _0x126772['VoiceExtension'][_0xe20c('0x3f')](_0x58c39b);}})[_0xe20c('0x2a')](function(){_0x15df75();})['catch'](function(_0x458185){_0x15df75(_0x458185);});},'afterUpdate':function(_0x587840,_0x221abe,_0x30d332){return BPromise['resolve']()[_0xe20c('0x2a')](function(){if(_0x587840['changed'](_0xe20c('0x12'))||_0x587840[_0xe20c('0x40')](_0xe20c('0x9'))){return _0x126772['VoiceExtension']['destroy']({'where':{'UserId':_0x587840['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0xe20c('0x2a')](function(){if(_0x587840['chanspy']){return getChanSpyPromise(_0x126772,_0x587840)[_0xe20c('0x2a')](function(_0x3871cb){if(_0x3871cb&&_0x3871cb['length']){return _0x126772[_0xe20c('0x3e')]['bulkCreate'](_0x3871cb);}});}});}})['then'](function(){if(_0x587840[_0xe20c('0x40')]('extensionMonitor')||_0x587840[_0xe20c('0x40')](_0xe20c('0x9'))){return _0x126772[_0xe20c('0x3e')][_0xe20c('0x41')]({'where':{'UserId':_0x587840['id'],'type':_0xe20c('0xb'),'ChanSpyId':null}})[_0xe20c('0x2a')](function(){var _0x1cbb3e=getUserApplications(_0x587840,_0x587840[_0xe20c('0x2b')]);if(_0x587840[_0xe20c('0x2b')]!=_0x587840[_0xe20c('0x19')]){_0x1cbb3e=_0x1cbb3e[_0xe20c('0x2c')](getUserApplications(_0x587840,_0x587840[_0xe20c('0x19')]));}return _0x126772[_0xe20c('0x3e')][_0xe20c('0x3f')](_0x1cbb3e);});}})[_0xe20c('0x2a')](function(){_0x30d332();})[_0xe20c('0x3c')](function(_0x5b3f6d){_0x30d332(_0x5b3f6d);});},'afterDestroy':function(_0x4ea985){return _0x126772['VoiceExtension'][_0xe20c('0x41')]({'where':{'UserId':_0x4ea985['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x1eaa98,_0x31e6b5){if(!_0x31e6b5){return this[_0xe20c('0x18')]===this[_0xe20c('0x42')](_0x1eaa98);}var _0x500a66=this;this[_0xe20c('0x42')](_0x1eaa98,function(_0x2ff082,_0x4c0c98){if(_0x2ff082){_0x31e6b5(_0x2ff082);}if(_0x500a66['password']===_0x4c0c98){_0x31e6b5(null,!![]);}else{_0x31e6b5(null,![]);}});},'makeSalt':function(_0x3c9d1b,_0x4fc826){var _0x1cc6b8=0x10;if(typeof arguments[0x0]===_0xe20c('0x43')){_0x4fc826=arguments[0x0];_0x3c9d1b=_0x1cc6b8;}else if(typeof arguments[0x1]==='function'){_0x4fc826=arguments[0x1];}else{throw new Error(_0xe20c('0x44'));}if(!_0x3c9d1b){_0x3c9d1b=_0x1cc6b8;}return crypto[_0xe20c('0x45')](_0x3c9d1b,function(_0x4d3a24,_0x5ec94f){if(_0x4d3a24){_0x4fc826(_0x4d3a24);}return _0x4fc826(null,_0x5ec94f[_0xe20c('0x46')]('base64'));});},'encryptPassword':function(_0x128cbf,_0x5d9764){if(!_0x128cbf||!this[_0xe20c('0x47')]){return _0x5d9764?_0x5d9764(null):null;}var _0xfe0c2b=0x2710;var _0x14d8ec=0x40;var _0x1f1d1e=Buffer[_0xe20c('0x48')](this[_0xe20c('0x47')],_0xe20c('0x49'));if(!_0x5d9764){return crypto[_0xe20c('0x4a')](_0x128cbf,_0x1f1d1e,_0xfe0c2b,_0x14d8ec,_0xe20c('0x4b'))['toString'](_0xe20c('0x49'));}return crypto[_0xe20c('0x4c')](_0x128cbf,_0x1f1d1e,_0xfe0c2b,_0x14d8ec,'sha1',function(_0x26ac08,_0x47de09){if(_0x26ac08){_0x5d9764(_0x26ac08);}return _0x5d9764(null,_0x47de09[_0xe20c('0x46')](_0xe20c('0x49')));});},'updatePassword':function(_0x5cc577){if(!this[_0xe20c('0x18')]){return _0x5cc577(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0xe20c('0x4d')](this[_0xe20c('0x4e')])===-0x1){_0x5cc577(new Error(_0xe20c('0x4f')));}var _0x28ae4c=this;this[_0xe20c('0x50')](function(_0x12e9a3,_0x44ee70){if(_0x12e9a3){return _0x5cc577(_0x12e9a3);}_0x28ae4c[_0xe20c('0x47')]=_0x44ee70;_0x28ae4c[_0xe20c('0x42')](_0x28ae4c['password'],function(_0x498d54,_0x2b49ad){if(_0x498d54){_0x5cc577(_0x498d54);}_0x28ae4c['password']=_0x2b49ad;_0x5cc577(null);});});},'updateMd5Password':function(){this[_0xe20c('0x51')]=md5(this[_0xe20c('0x19')]+_0xe20c('0x52')+this[_0xe20c('0x18')]);return this[_0xe20c('0x51')];},'getRealtimeData':function(){var _0x36a8b1={'id':this['id']};var _0x6cbab4=jayson[_0xe20c('0x53')][_0xe20c('0x54')]({'port':0x232a});var _0x4da05e=jayson[_0xe20c('0x53')][_0xe20c('0x54')]({'port':0x232c});var _0x2b93fc={};var _0x2bbd6d={};return _0x6cbab4[_0xe20c('0x55')](_0xe20c('0x56'),_0x36a8b1)[_0xe20c('0x2a')](function(_0x188f9f){if(_0x188f9f['error']){throw new Error(_0xe20c('0x57'));}_0x2b93fc=_0x188f9f['result'];return _0x4da05e[_0xe20c('0x55')](_0xe20c('0x56'),_0x36a8b1);})[_0xe20c('0x2a')](function(_0x47b319){if(_0x47b319[_0xe20c('0x58')]){throw new Error(_0xe20c('0x59'));}_0x2bbd6d=_0x47b319['result'];var _0x52dd7c=_[_0xe20c('0x10')]({},_0x2b93fc,_0x2bbd6d);return _0x52dd7c;})[_0xe20c('0x3c')](function(_0x4a3ebd){throw _0x4a3ebd;});},'unpause':function(_0x33bd35,_0x3208b9=_0xe20c('0x5a')){var _0x2727ec=this;var _0x49cb55={};return Promise[_0xe20c('0x36')]()[_0xe20c('0x2a')](function(){if(!_0x33bd35||_0x33bd35==='voice'&&_0x3208b9==='manual'){var _0x24b8b0=jayson[_0xe20c('0x53')][_0xe20c('0x54')]({'port':0x232a});return _0x24b8b0[_0xe20c('0x55')](_0xe20c('0x5b'),{'id':_0x2727ec['id'],'name':_0x2727ec['name'],'pause':![]})[_0xe20c('0x2a')](function(_0x2e3381){if(_0x2e3381['error']){throw new Error(util[_0xe20c('0xc')]('Unable\x20to\x20unpause\x20agent\x20%s:$s',_0x2727ec['id'],_0x2727ec[_0xe20c('0x19')]));}return _0x2e3381['result'][_0xe20c('0x5c')];});}})[_0xe20c('0x2a')](function(){if(!_0x33bd35||_0x33bd35==='voice'){return _0x126772[_0xe20c('0x5d')][_0xe20c('0x5e')]({'paused':0x0},{'where':{'UserId':_0x2727ec['id']},'individualHooks':!![]});}})[_0xe20c('0x2a')](function(){var _0xacf290=!_0x33bd35?_0xe20c('0x5f'):_0xe20c('0x60');var _0xfa46ba={'membername':_0x2727ec[_0xe20c('0x19')],'type':'PAUSE','exitAt':null};if(_0x33bd35){_0xfa46ba[_0xe20c('0x61')]=_0x33bd35;}return _0x126772[_0xe20c('0x62')][_0xacf290]({'where':_0xfa46ba});})[_0xe20c('0x2a')](function(_0x19d578){if(_0x19d578){var _0x5dffba=Array[_0xe20c('0x63')](_0x19d578)?_0x19d578:[_0x19d578];var _0x4f0129=_0x5dffba['map'](function(_0x21a7cb){return _0x21a7cb[_0xe20c('0x5e')]({'exitAt':moment()[_0xe20c('0xc')](_0xe20c('0x64')),'data2':_0x3208b9});});return Promise[_0xe20c('0x65')](_0x4f0129);}})[_0xe20c('0x2a')](function(){if(!_0x33bd35){_0x49cb55[_0xe20c('0x66')]=![];_0x49cb55['mailPause']=![];_0x49cb55[_0xe20c('0x67')]=![];_0x49cb55[_0xe20c('0x68')]=![];_0x49cb55[_0xe20c('0x69')]=![];_0x49cb55[_0xe20c('0x6a')]=![];_0x49cb55['openchannelPause']=![];}else{_0x49cb55[_0x33bd35+_0xe20c('0x6b')]=![];}return _0x2727ec[_0xe20c('0x6c')]();})[_0xe20c('0x2a')](function(_0x34bfc5){var _0xdf0c20=require(_0xe20c('0x6d'));var _0x1c8e7b=_0xdf0c20[_0xe20c('0x6e')]();_0x1c8e7b[_0xe20c('0x6f')](function(_0x4cc786){var _0x84eb79=_0x4cc786+'Status';_0x2727ec[_0xe20c('0x70')]([_0x84eb79],_0x34bfc5[_0x84eb79]);});return _0x2727ec[_0xe20c('0x5e')](_0x49cb55);})[_0xe20c('0x3c')](function(_0x2363f9){throw _0x2363f9;});}}});};
\ No newline at end of file
+var _0x39a9=['QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','UserVoiceQueueRt','update','findOne','PAUSE','channel','MemberReport','all','chatPause','faxPause','smsPause','whatsappPause','openchannelPause','getRealtimeData','getChannels','forEach','Status','setDataValue','bluebird','crypto','util','md5','moment','lodash','jayson/promise','./user.attributes','google','length','context','from-sip','system','format','prefix','push','merge','CDR(type)=%s','chanspy','MixMonitor','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','options','join','record','StopMixMonitor','wav','WAV','gsm','extensionMonitor','includes','_XCALLY_MIXMONITOR_FORMAT=%s','name','Dial','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','then','internal','concat','models','define','users','utf8','utf8_bin','undefined','resolve','find','userProfileId','privacyEnabled','updateMd5Password','updatePassword','catch','changed','UserProfile','userSetting','createUserSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','toString','base64','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt','salt','md5secret',':asterisk:','http','Agents','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','request','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','voice','client'];(function(_0x9cd4c3,_0x1c9b2c){var _0x4c9025=function(_0x25b3c6){while(--_0x25b3c6){_0x9cd4c3['push'](_0x9cd4c3['shift']());}};_0x4c9025(++_0x1c9b2c);}(_0x39a9,0x1d0));var _0x939a=function(_0x48999d,_0x1e02cb){_0x48999d=_0x48999d-0x0;var _0x1ad0d1=_0x39a9[_0x48999d];return _0x1ad0d1;};'use strict';var BPromise=require(_0x939a('0x0'));var crypto=require(_0x939a('0x1'));var util=require(_0x939a('0x2'));var md5=require(_0x939a('0x3'));var moment=require(_0x939a('0x4'));var _=require(_0x939a('0x5'));var jayson=require(_0x939a('0x6'));var attributes=require(_0x939a('0x7'));var authTypes=[_0x939a('0x8')];var validatePresenceOf=function(_0x1030c6){return _0x1030c6&&_0x1030c6[_0x939a('0x9')];};var getChanSpyApplications=function(_0x5ca05d,_0x5793fe,_0xed3974){var _0x12cd66={'context':_0x5ca05d[_0x939a('0xa')]||_0x939a('0xb'),'type':_0x939a('0xc'),'isApp':![],'UserId':_0x5ca05d['id']};var _0x398389=[];for(var _0x7a6c61=0x0,_0x529156=0x1;_0x7a6c61<_0xed3974[_0x939a('0x9')];_0x7a6c61++,_0x529156=0x1){var _0x19e985={'exten':util[_0x939a('0xd')]('%s%s',_0xed3974[_0x7a6c61][_0x939a('0xe')],_0x5793fe),'ChanSpyId':_0xed3974[_0x7a6c61]['id']};_0x398389[_0x939a('0xf')](_[_0x939a('0x10')]({'app':'Set','appdata':util[_0x939a('0xd')](_0x939a('0x11'),_0x939a('0x12')),'priority':_0x529156++},_0x12cd66,_0x19e985));if(_0xed3974[_0x7a6c61]['record']){_0x398389['push'](_[_0x939a('0x10')]({'app':_0x939a('0x13'),'appdata':util[_0x939a('0xd')]('${UNIQUEID}.%s,a',_0xed3974[_0x7a6c61][_0x939a('0x14')]),'priority':_0x529156++},_0x12cd66,_0x19e985));}if(_0xed3974[_0x7a6c61][_0x939a('0x15')]){_0x398389[_0x939a('0xf')](_[_0x939a('0x10')]({'app':_0x939a('0x16'),'appdata':_0xed3974[_0x7a6c61][_0x939a('0x17')],'priority':_0x529156++},_0x12cd66,_0x19e985));}_0x398389[_0x939a('0xf')](_['merge']({'app':_0x939a('0x18'),'appdata':util['format'](_0x939a('0x19'),_0x5ca05d['name'],_0xed3974[_0x7a6c61][_0x939a('0x1a')]?_0xed3974[_0x7a6c61][_0x939a('0x1a')][_0x939a('0x1b')](''):''),'priority':_0x529156++},_0x12cd66,_0x19e985));if(_0xed3974[_0x7a6c61][_0x939a('0x1c')]){_0x398389['push'](_['merge']({'app':_0x939a('0x1d'),'priority':_0x529156++},_0x12cd66,_0x19e985));}}return _0x398389;};var getUserApplications=function(_0x5e5dbd,_0x5648d5){var _0x3e00d8=[_0x939a('0x1e'),_0x939a('0x1f'),_0x939a('0x20')];var _0x840aad={'context':_0x5e5dbd['context']||_0x939a('0xb'),'exten':_0x5648d5,'type':'system','isApp':![],'UserId':_0x5e5dbd['id']};var _0x309e3e=[{'app':'Set','appdata':'CDR(type)=internal'}];if(_0x5e5dbd[_0x939a('0x21')]&&_[_0x939a('0x22')](_0x3e00d8,_0x5e5dbd[_0x939a('0x21')])){_0x309e3e['push']({'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x309e3e[_0x939a('0xf')]({'app':'Set','appdata':util[_0x939a('0xd')](_0x939a('0x23'),_0x5e5dbd['extensionMonitor'])});_0x309e3e[_0x939a('0xf')]({'app':'Dial','appdata':util[_0x939a('0xd')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x5e5dbd[_0x939a('0x24')])});}else{_0x309e3e[_0x939a('0xf')]({'app':_0x939a('0x25'),'appdata':util[_0x939a('0xd')](_0x939a('0x26'),_0x5e5dbd[_0x939a('0x24')])});}_0x309e3e[_0x939a('0xf')]({'app':_0x939a('0x27')});for(var _0x350be5=0x0;_0x350be5<_0x309e3e[_0x939a('0x9')];_0x350be5++){_0x309e3e[_0x350be5][_0x939a('0x28')]=_0x350be5+0x1;_0x309e3e[_0x350be5]=_[_0x939a('0x29')](_0x309e3e[_0x350be5],_0x840aad);}return _0x309e3e;};var getChanSpyPromise=function(_0x3df36b,_0x181ba5){return new BPromise(function(_0x16286a,_0x5add13){return _0x3df36b[_0x939a('0x2a')]['findAll']()[_0x939a('0x2b')](function(_0xccb577){if(_0xccb577){var _0x2cb86f=getChanSpyApplications(_0x181ba5,_0x181ba5[_0x939a('0x2c')],_0xccb577);if(_0x181ba5['internal']!=_0x181ba5['name']){_0x2cb86f=_0x2cb86f[_0x939a('0x2d')](getChanSpyApplications(_0x181ba5,_0x181ba5[_0x939a('0x24')],_0xccb577));}return _0x16286a(_0x2cb86f);}return _0x16286a([]);})['catch'](function(_0x11ac7f){_0x5add13(_0x11ac7f);});});};module['exports']=function(_0x4d18a4){var _0x2177eb=_0x4d18a4[_0x939a('0x2e')];return _0x4d18a4[_0x939a('0x2f')]('User',attributes,{'tableName':_0x939a('0x30'),'charset':_0x939a('0x31'),'collate':_0x939a('0x32'),'hooks':{'beforeCreate':function(_0x31d096,_0x332589,_0x3c2c5d){var _0x28bc0f=typeof _0x31d096['userProfileId']===_0x939a('0x33')?BPromise[_0x939a('0x34')](null):_0x2177eb['UserProfile'][_0x939a('0x35')]({'where':{'id':_0x31d096[_0x939a('0x36')]}});_0x28bc0f['then'](function(_0x33b436){if(_0x33b436){_0x31d096['privacyEnabled']=_0x33b436[_0x939a('0x37')];}})[_0x939a('0x2b')](function(){_0x31d096[_0x939a('0x38')]();_0x31d096[_0x939a('0x39')](_0x3c2c5d);})[_0x939a('0x3a')](function(_0x141aca){_0x3c2c5d(_0x141aca);});},'beforeUpdate':function(_0x347a3d,_0x321669,_0x1afa9b){Promise[_0x939a('0x34')]()[_0x939a('0x2b')](function(){if(_0x347a3d[_0x939a('0x3b')](_0x939a('0x36'))===![])return;return _0x2177eb[_0x939a('0x3c')][_0x939a('0x35')]({'where':{'id':_0x347a3d['userProfileId']}})[_0x939a('0x2b')](function(_0x3bf8d5){if(_0x3bf8d5)_0x347a3d['privacyEnabled']=_0x3bf8d5[_0x939a('0x37')];return;});})[_0x939a('0x2b')](function(){if(_0x347a3d[_0x939a('0x3b')](_0x939a('0x17'))){_0x347a3d[_0x939a('0x38')]();return _0x347a3d[_0x939a('0x39')](_0x1afa9b);}_0x1afa9b();})[_0x939a('0x3a')](function(_0x4a88cd){_0x1afa9b(_0x4a88cd);});},'afterCreate':function(_0x343df5,_0x3af3a3,_0x5b9137){var _0xce7a17=getUserApplications(_0x343df5,_0x343df5['internal']);if(_0x343df5[_0x939a('0x2c')]!=_0x343df5[_0x939a('0x24')]){_0xce7a17=_0xce7a17['concat'](getUserApplications(_0x343df5,_0x343df5[_0x939a('0x24')]));}return Promise[_0x939a('0x34')]()[_0x939a('0x2b')](function(){if(!_0x343df5[_0x939a('0x3d')]){return _0x343df5[_0x939a('0x3e')]({'clientSideLoggingLevel':_0x939a('0x3f'),'clientSideLoggingEnabled':![]});}})[_0x939a('0x2b')](function(){return _0x2177eb[_0x939a('0x40')][_0x939a('0x41')](_0xce7a17);})[_0x939a('0x2b')](function(){if(_0x343df5[_0x939a('0x12')]){return getChanSpyPromise(_0x2177eb,_0x343df5);}})[_0x939a('0x2b')](function(_0x3b1a8b){if(_0x3b1a8b&&_0x3b1a8b['length']){return _0x2177eb['VoiceExtension'][_0x939a('0x41')](_0x3b1a8b);}})['then'](function(){_0x5b9137();})[_0x939a('0x3a')](function(_0x26495f){_0x5b9137(_0x26495f);});},'afterUpdate':function(_0x596f0f,_0xf33e98,_0x5b34ee){return BPromise[_0x939a('0x34')]()[_0x939a('0x2b')](function(){if(_0x596f0f[_0x939a('0x3b')]('chanspy')||_0x596f0f['changed'](_0x939a('0xa'))){return _0x2177eb[_0x939a('0x40')][_0x939a('0x42')]({'where':{'UserId':_0x596f0f['id'],'type':_0x939a('0xc'),'ChanSpyId':{'$ne':null}}})[_0x939a('0x2b')](function(){if(_0x596f0f[_0x939a('0x12')]){return getChanSpyPromise(_0x2177eb,_0x596f0f)[_0x939a('0x2b')](function(_0x2d497a){if(_0x2d497a&&_0x2d497a['length']){return _0x2177eb[_0x939a('0x40')][_0x939a('0x41')](_0x2d497a);}});}});}})['then'](function(){if(_0x596f0f[_0x939a('0x3b')]('extensionMonitor')||_0x596f0f['changed'](_0x939a('0xa'))){return _0x2177eb[_0x939a('0x40')][_0x939a('0x42')]({'where':{'UserId':_0x596f0f['id'],'type':_0x939a('0xc'),'ChanSpyId':null}})[_0x939a('0x2b')](function(){var _0x102a1c=getUserApplications(_0x596f0f,_0x596f0f[_0x939a('0x2c')]);if(_0x596f0f['internal']!=_0x596f0f[_0x939a('0x24')]){_0x102a1c=_0x102a1c['concat'](getUserApplications(_0x596f0f,_0x596f0f[_0x939a('0x24')]));}return _0x2177eb[_0x939a('0x40')][_0x939a('0x41')](_0x102a1c);});}})[_0x939a('0x2b')](function(){_0x5b34ee();})[_0x939a('0x3a')](function(_0x1f402c){_0x5b34ee(_0x1f402c);});},'afterDestroy':function(_0x18d379){return _0x2177eb[_0x939a('0x40')][_0x939a('0x42')]({'where':{'UserId':_0x18d379['id'],'type':'system'}});}},'instanceMethods':{'authenticate':function(_0x223472,_0x45ca97){if(!_0x45ca97){return this[_0x939a('0x17')]===this[_0x939a('0x43')](_0x223472);}var _0x43c6a9=this;this['encryptPassword'](_0x223472,function(_0xb268ec,_0xa18bb0){if(_0xb268ec){_0x45ca97(_0xb268ec);}if(_0x43c6a9[_0x939a('0x17')]===_0xa18bb0){_0x45ca97(null,!![]);}else{_0x45ca97(null,![]);}});},'makeSalt':function(_0x3e7eeb,_0x163cb1){var _0x192fcf=0x10;if(typeof arguments[0x0]===_0x939a('0x44')){_0x163cb1=arguments[0x0];_0x3e7eeb=_0x192fcf;}else if(typeof arguments[0x1]===_0x939a('0x44')){_0x163cb1=arguments[0x1];}else{throw new Error(_0x939a('0x45'));}if(!_0x3e7eeb){_0x3e7eeb=_0x192fcf;}return crypto['randomBytes'](_0x3e7eeb,function(_0x552549,_0x5946db){if(_0x552549){_0x163cb1(_0x552549);}return _0x163cb1(null,_0x5946db[_0x939a('0x46')]('base64'));});},'encryptPassword':function(_0x257552,_0x64ae68){if(!_0x257552||!this['salt']){return _0x64ae68?_0x64ae68(null):null;}var _0x2094b2=0x2710;var _0x1253fd=0x40;var _0x448829=Buffer['from'](this['salt'],_0x939a('0x47'));if(!_0x64ae68){return crypto[_0x939a('0x48')](_0x257552,_0x448829,_0x2094b2,_0x1253fd,_0x939a('0x49'))[_0x939a('0x46')](_0x939a('0x47'));}return crypto[_0x939a('0x4a')](_0x257552,_0x448829,_0x2094b2,_0x1253fd,_0x939a('0x49'),function(_0x1139ae,_0x31d7ad){if(_0x1139ae){_0x64ae68(_0x1139ae);}return _0x64ae68(null,_0x31d7ad['toString'](_0x939a('0x47')));});},'updatePassword':function(_0x14aaca){if(!this['password']){return _0x14aaca(null);}if(!validatePresenceOf(this[_0x939a('0x17')])&&authTypes[_0x939a('0x4b')](this[_0x939a('0x4c')])===-0x1){_0x14aaca(new Error(_0x939a('0x4d')));}var _0x43b42e=this;this[_0x939a('0x4e')](function(_0xd1c9cc,_0x173e68){if(_0xd1c9cc){return _0x14aaca(_0xd1c9cc);}_0x43b42e[_0x939a('0x4f')]=_0x173e68;_0x43b42e[_0x939a('0x43')](_0x43b42e[_0x939a('0x17')],function(_0x441eb7,_0x5b95f9){if(_0x441eb7){_0x14aaca(_0x441eb7);}_0x43b42e['password']=_0x5b95f9;_0x14aaca(null);});});},'updateMd5Password':function(){this[_0x939a('0x50')]=md5(this[_0x939a('0x24')]+_0x939a('0x51')+this[_0x939a('0x17')]);return this[_0x939a('0x50')];},'getRealtimeData':function(){var _0x5812c5={'id':this['id']};var _0x56ad95=jayson['client'][_0x939a('0x52')]({'port':0x232a});var _0x321ae7=jayson['client'][_0x939a('0x52')]({'port':0x232c});var _0x540fc3={};var _0x587617={};return _0x56ad95['request'](_0x939a('0x53'),_0x5812c5)[_0x939a('0x2b')](function(_0x500b55){if(_0x500b55[_0x939a('0x3f')]){throw new Error(_0x939a('0x54'));}_0x540fc3=_0x500b55[_0x939a('0x55')];return _0x321ae7[_0x939a('0x56')]('Agents',_0x5812c5);})['then'](function(_0x22fbb2){if(_0x22fbb2['error']){throw new Error(_0x939a('0x57'));}_0x587617=_0x22fbb2['result'];var _0x2e982a=_[_0x939a('0x10')]({},_0x540fc3,_0x587617);return _0x2e982a;})[_0x939a('0x3a')](function(_0x506854){throw _0x506854;});},'unpause':function(_0x1350a6,_0x126f18=_0x939a('0x58')){var _0x38482b=this;var _0x300358={};return Promise[_0x939a('0x34')]()[_0x939a('0x2b')](function(){if(!_0x1350a6||_0x1350a6===_0x939a('0x59')&&_0x126f18===_0x939a('0x58')){var _0x22d84e=jayson[_0x939a('0x5a')][_0x939a('0x52')]({'port':0x232a});return _0x22d84e[_0x939a('0x56')](_0x939a('0x5b'),{'id':_0x38482b['id'],'name':_0x38482b[_0x939a('0x24')],'pause':![]})[_0x939a('0x2b')](function(_0x252259){if(_0x252259['error']){throw new Error(util['format'](_0x939a('0x5c'),_0x38482b['id'],_0x38482b[_0x939a('0x24')]));}return _0x252259[_0x939a('0x55')][_0x939a('0x5d')];});}})[_0x939a('0x2b')](function(){if(!_0x1350a6||_0x1350a6===_0x939a('0x59')){return _0x2177eb[_0x939a('0x5e')][_0x939a('0x5f')]({'paused':0x0},{'where':{'UserId':_0x38482b['id']},'individualHooks':!![]});}})['then'](function(){var _0x229910=!_0x1350a6?'findAll':_0x939a('0x60');var _0xaa6b7e={'membername':_0x38482b[_0x939a('0x24')],'type':_0x939a('0x61'),'exitAt':null};if(_0x1350a6){_0xaa6b7e[_0x939a('0x62')]=_0x1350a6;}return _0x2177eb[_0x939a('0x63')][_0x229910]({'where':_0xaa6b7e});})[_0x939a('0x2b')](function(_0x27fb22){if(_0x27fb22){var _0x23336b=Array['isArray'](_0x27fb22)?_0x27fb22:[_0x27fb22];var _0x3b0cb8=_0x23336b['map'](function(_0x17ccca){return _0x17ccca[_0x939a('0x5f')]({'exitAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x126f18});});return Promise[_0x939a('0x64')](_0x3b0cb8);}})[_0x939a('0x2b')](function(){if(!_0x1350a6){_0x300358['voicePause']=![];_0x300358['mailPause']=![];_0x300358[_0x939a('0x65')]=![];_0x300358[_0x939a('0x66')]=![];_0x300358[_0x939a('0x67')]=![];_0x300358[_0x939a('0x68')]=![];_0x300358[_0x939a('0x69')]=![];}else{_0x300358[_0x1350a6+'Pause']=![];}return _0x38482b[_0x939a('0x6a')]();})['then'](function(_0x3847f9){var _0x4f629d=require('../../config/utils');var _0x5e8703=_0x4f629d[_0x939a('0x6b')]();_0x5e8703[_0x939a('0x6c')](function(_0x53ded6){var _0x5f0e79=_0x53ded6+_0x939a('0x6d');_0x38482b[_0x939a('0x6e')]([_0x5f0e79],_0x3847f9[_0x5f0e79]);});return _0x38482b[_0x939a('0x5f')](_0x300358);})[_0x939a('0x3a')](function(_0x544594){throw _0x544594;});}}});};
\ No newline at end of file
index 75dea81..eeacb56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf206=['length','YYYY-MM-DD\x20HH:mm:ss','getChannels','forEach','push','isNil','SIP/%s','PAUSE','body','DEFAULT\x20PAUSE','bulkCreate','update','type','resolve','channel','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','online','chatPause','faxPause','smsPause','pauseType','lastPauseAt','system','LoginUser','mobile','phone','loginInPause','count','agent','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','destroy','getVoiceQueues','upsert','UserVoiceQueue.penalty','all','merge','LOGININPAUSE','lodash','util','moment','bluebird','ioredis','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./user.socket','register','GetUser','User','options','attributes','limit','map','include','model','then','info','debug','stringify','catch','message','error','raw','where','ShowUser','find','name','role','internal','interface','format','User\x20with\x20id\x20%s\x20not\x20found','params','UserVoiceQueueRt','MemberReport','findAll'];(function(_0x109587,_0x465d39){var _0x4cc1b6=function(_0xdb59b3){while(--_0xdb59b3){_0x109587['push'](_0x109587['shift']());}};_0x4cc1b6(++_0x465d39);}(_0xf206,0x1c8));var _0x6f20=function(_0xdfbdfd,_0x41d10f){_0xdfbdfd=_0xdfbdfd-0x0;var _0x36038d=_0xf206[_0xdfbdfd];return _0x36038d;};'use strict';var _=require(_0x6f20('0x0'));var util=require(_0x6f20('0x1'));var moment=require(_0x6f20('0x2'));var BPromise=require(_0x6f20('0x3'));var Redis=require(_0x6f20('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6f20('0x5'));var config=require(_0x6f20('0x6'));config[_0x6f20('0x7')]=_[_0x6f20('0x8')](config['redis'],{'host':_0x6f20('0x9'),'port':0x18eb});var socket=require(_0x6f20('0xa'))(new Redis(config['redis']));require(_0x6f20('0xb'))[_0x6f20('0xc')](socket);exports[_0x6f20('0xd')]=function(_0x518a74){var _0x5bcd15=this;return new Promise(function(_0x25104b,_0x5af431){return db[_0x6f20('0xe')]['findAll']({'raw':_0x518a74[_0x6f20('0xf')]?_0x518a74[_0x6f20('0xf')]['raw']===undefined?!![]:![]:!![],'where':_0x518a74[_0x6f20('0xf')]?_0x518a74[_0x6f20('0xf')]['where']||null:null,'attributes':_0x518a74['options']?_0x518a74[_0x6f20('0xf')][_0x6f20('0x10')]||null:null,'limit':_0x518a74[_0x6f20('0xf')]?_0x518a74[_0x6f20('0xf')][_0x6f20('0x11')]||null:null,'include':_0x518a74[_0x6f20('0xf')]?_0x518a74[_0x6f20('0xf')]['include']?_[_0x6f20('0x12')](_0x518a74['options'][_0x6f20('0x13')],function(_0x19b07e){return{'model':db[_0x19b07e[_0x6f20('0x14')]],'as':_0x19b07e['as'],'attributes':_0x19b07e[_0x6f20('0x10')],'include':_0x19b07e['include']?_['map'](_0x19b07e[_0x6f20('0x13')],function(_0x4a2099){return{'model':db[_0x4a2099['model']],'as':_0x4a2099['as'],'attributes':_0x4a2099[_0x6f20('0x10')],'include':_0x4a2099[_0x6f20('0x13')]?_[_0x6f20('0x12')](_0x4a2099[_0x6f20('0x13')],function(_0x2ca5f4){return{'model':db[_0x2ca5f4[_0x6f20('0x14')]],'as':_0x2ca5f4['as'],'attributes':_0x2ca5f4[_0x6f20('0x10')]};}):[]};}):[]};}):[]:[]})[_0x6f20('0x15')](function(_0x2cee62){logger[_0x6f20('0x16')](_0x6f20('0xd'),_0x518a74);logger[_0x6f20('0x17')](_0x6f20('0xd'),_0x518a74,JSON[_0x6f20('0x18')](_0x2cee62));_0x25104b(_0x2cee62);})[_0x6f20('0x19')](function(_0x590aa4){logger['error'](_0x6f20('0xd'),_0x590aa4[_0x6f20('0x1a')],_0x518a74);_0x5af431(_0x5bcd15[_0x6f20('0x1b')](0x1f4,_0x590aa4[_0x6f20('0x1a')]));});});};exports['ShowUser']=function(_0x426693){var _0x12cafd=this;return new Promise(function(_0x343ef9,_0x5d2f05){return db[_0x6f20('0xe')]['find']({'raw':_0x426693['options']?_0x426693[_0x6f20('0xf')][_0x6f20('0x1c')]===undefined?!![]:![]:!![],'where':_0x426693[_0x6f20('0xf')]?_0x426693[_0x6f20('0xf')][_0x6f20('0x1d')]||null:null,'attributes':_0x426693[_0x6f20('0xf')]?_0x426693[_0x6f20('0xf')]['attributes']||null:null,'include':_0x426693['options']?_0x426693[_0x6f20('0xf')]['include']?_[_0x6f20('0x12')](_0x426693[_0x6f20('0xf')]['include'],function(_0x4a6811){return{'model':db[_0x4a6811['model']],'as':_0x4a6811['as'],'attributes':_0x4a6811[_0x6f20('0x10')],'include':_0x4a6811['include']?_['map'](_0x4a6811[_0x6f20('0x13')],function(_0x7c7f50){return{'model':db[_0x7c7f50[_0x6f20('0x14')]],'as':_0x7c7f50['as'],'attributes':_0x7c7f50[_0x6f20('0x10')],'include':_0x7c7f50[_0x6f20('0x13')]?_[_0x6f20('0x12')](_0x7c7f50[_0x6f20('0x13')],function(_0x43e6f4){return{'model':db[_0x43e6f4[_0x6f20('0x14')]],'as':_0x43e6f4['as'],'attributes':_0x43e6f4[_0x6f20('0x10')]};}):[]};}):[]};}):[]:[]})[_0x6f20('0x15')](function(_0x3b4aa9){logger[_0x6f20('0x16')](_0x6f20('0x1e'),_0x426693);logger[_0x6f20('0x17')]('ShowUser',_0x426693,JSON['stringify'](_0x3b4aa9));_0x343ef9(_0x3b4aa9);})[_0x6f20('0x19')](function(_0x325921){logger['error']('ShowUser',_0x325921[_0x6f20('0x1a')],_0x426693);_0x5d2f05(_0x12cafd['error'](0x1f4,_0x325921['message']));});});};exports['PauseUser']=function(_0x2fa5eb){var _0x264ac5;return db[_0x6f20('0xe')][_0x6f20('0x1f')]({'where':_0x2fa5eb[_0x6f20('0xf')][_0x6f20('0x1d')]||{},'attributes':['id',_0x6f20('0x20'),_0x6f20('0x21'),_0x6f20('0x22'),_0x6f20('0x23')]})[_0x6f20('0x15')](function(_0x30694f){if(!_0x30694f){throw new Error(util[_0x6f20('0x24')](_0x6f20('0x25'),_0x2fa5eb[_0x6f20('0x26')]['id']));}_0x264ac5=_0x30694f;return db[_0x6f20('0x27')]['update']({'paused':0x1},{'where':{'UserId':_0x264ac5['id']},'individualHooks':!![]});})['then'](function(){return db[_0x6f20('0x28')][_0x6f20('0x29')]({'where':{'membername':_0x264ac5[_0x6f20('0x20')],'type':'PAUSE','exitAt':null}});})[_0x6f20('0x15')](function(_0x32a6d7){if(_0x32a6d7&&_0x32a6d7[_0x6f20('0x2a')]){var _0x1ad9f5=moment()[_0x6f20('0x24')](_0x6f20('0x2b'));for(var _0x21a07e=0x0,_0x15c4ea=_0x32a6d7[_0x6f20('0x2a')];_0x21a07e<_0x15c4ea;_0x21a07e++){_0x32a6d7[_0x21a07e]['updateAttributes']({'exitAt':_0x1ad9f5});}}})['then'](function(){var _0x1846d2=[];var _0x5ac374=utils[_0x6f20('0x2c')]();_0x5ac374[_0x6f20('0x2d')](function(_0x5e5044){_0x1846d2[_0x6f20('0x2e')]({'channel':_0x5e5044,'membername':_0x264ac5[_0x6f20('0x20')],'interface':_[_0x6f20('0x2f')](_0x264ac5[_0x6f20('0x23')])?util[_0x6f20('0x24')](_0x6f20('0x30'),_0x264ac5[_0x6f20('0x20')]):_0x264ac5[_0x6f20('0x23')],'type':_0x6f20('0x31'),'enterAt':moment()[_0x6f20('0x24')](_0x6f20('0x2b')),'data1':_0x2fa5eb[_0x6f20('0x32')]['type']||_0x6f20('0x33'),'role':_0x264ac5['role'],'internal':_0x264ac5[_0x6f20('0x22')],'uniqueid':_0x2fa5eb[_0x6f20('0x32')]['uniqueid']||null});});return db[_0x6f20('0x28')][_0x6f20('0x34')](_0x1846d2,{'individualHooks':!![]});})[_0x6f20('0x15')](function(){return _0x264ac5[_0x6f20('0x35')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x2fa5eb[_0x6f20('0x32')][_0x6f20('0x36')]||_0x6f20('0x33'),'lastPauseAt':moment()[_0x6f20('0x24')](_0x6f20('0x2b'))});})[_0x6f20('0x19')](function(_0x5521c1){throw _0x5521c1;});};exports['UnpauseUser']=function(_0x18aaf4){return Promise[_0x6f20('0x37')]()['then'](function(){if(_0x18aaf4[_0x6f20('0x32')][_0x6f20('0x38')]&&!utils[_0x6f20('0x39')](_0x18aaf4[_0x6f20('0x32')][_0x6f20('0x38')])){throw new Error(util[_0x6f20('0x24')](_0x6f20('0x3a'),_0x18aaf4[_0x6f20('0x32')][_0x6f20('0x38')]));}return db[_0x6f20('0xe')][_0x6f20('0x3b')]({'where':_0x18aaf4[_0x6f20('0xf')][_0x6f20('0x1d')]||{},'attributes':['id','name',_0x6f20('0x21'),'internal','interface',_0x6f20('0x3c'),'voicePause','mailPause',_0x6f20('0x3d'),_0x6f20('0x3e'),'openchannelPause',_0x6f20('0x3f'),'whatsappPause',_0x6f20('0x40'),_0x6f20('0x41')]});})[_0x6f20('0x15')](function(_0x74732d){if(!_0x74732d){throw new Error(util[_0x6f20('0x24')](_0x6f20('0x25'),_0x18aaf4[_0x6f20('0x26')]['id']));}return _0x74732d['unpause'](_0x18aaf4['body'][_0x6f20('0x38')],_0x6f20('0x42'));})[_0x6f20('0x19')](function(_0xe73c96){throw _0xe73c96;});};exports['LogoutUser']=function(_0x2efecf){var _0x5a7e7c=this;return new Promise(function(_0x5aa917,_0x34ccf4){var _0x1aa4fc;return db['User'][_0x6f20('0x3b')]({'where':_0x2efecf['options'][_0x6f20('0x1d')]||{},'attributes':['id',_0x6f20('0x20')]})[_0x6f20('0x15')](function(_0x334a32){if(_0x334a32){_0x1aa4fc=_0x334a32;return db['UserVoiceQueueRt']['destroy']({'where':{'membername':_0x1aa4fc['name']},'individualHooks':!![]});}})[_0x6f20('0x15')](function(){if(_0x1aa4fc){return db[_0x6f20('0x28')][_0x6f20('0x29')]({'where':{'membername':_0x1aa4fc['name'],'exitAt':null}});}})[_0x6f20('0x15')](function(_0x511b91){if(_0x1aa4fc){if(_0x511b91&&_0x511b91[_0x6f20('0x2a')]){var _0x27c3ad=[];_0x511b91[_0x6f20('0x2d')](function(_0x16f674){_0x27c3ad['push'](_0x16f674[_0x6f20('0x35')]({'exitAt':moment()[_0x6f20('0x24')](_0x6f20('0x2b'))}));});return BPromise['all'](_0x27c3ad);}}})[_0x6f20('0x15')](function(){if(_0x1aa4fc){return _0x1aa4fc[_0x6f20('0x35')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})['then'](function(_0x2933c0){_0x5aa917(_0x2933c0);})[_0x6f20('0x19')](function(_0xe9a1b4){_0x34ccf4(_0x5a7e7c['error'](0x1f4,_0xe9a1b4['message']));});});};exports[_0x6f20('0x43')]=function(_0x4efccc){var _0x11d4c1=this;return new Promise(function(_0x46f568,_0x34f00e){var _0x128be2;var _0x3db645;var _0x6874ad;var _0x50185;return db[_0x6f20('0xe')][_0x6f20('0x3b')]({'where':_0x4efccc[_0x6f20('0xf')][_0x6f20('0x1d')]||{},'attributes':['id','name','role',_0x6f20('0x44'),_0x6f20('0x45'),_0x6f20('0x22'),_0x6f20('0x46'),_0x6f20('0x23')]})[_0x6f20('0x15')](function(_0x90ee8b){if(_0x90ee8b){_0x128be2=_0x90ee8b;_0x50185=_0x4efccc[_0x6f20('0x32')]['interface']?_0x4efccc['body'][_0x6f20('0x23')]:util['format']('SIP/%s',_0x128be2[_0x6f20('0x20')]);return db[_0x6f20('0xe')][_0x6f20('0x47')]({'where':{'role':_0x6f20('0x48'),'online':!![],'id':{'$ne':_0x128be2['id']}}});}})['then'](function(_0x15eb2c){if(_0x15eb2c){_0x6874ad=_0x15eb2c;return require('../../config/license/util')[_0x6f20('0x49')]();}})[_0x6f20('0x15')](function(_0x254f3f){if(_0x254f3f&&_0x254f3f[_0x6f20('0x4a')]&&_0x6874ad>=_0x254f3f[_0x6f20('0x4a')]){throw new Error(_0x6f20('0x4b'));}})[_0x6f20('0x15')](function(){if(_0x128be2){return db['UserVoiceQueueRt'][_0x6f20('0x4c')]({'where':{'membername':_0x128be2[_0x6f20('0x20')]},'individualHooks':!![]});}})[_0x6f20('0x15')](function(){if(_0x128be2){return _0x128be2[_0x6f20('0x4d')]({'raw':!![]});}})[_0x6f20('0x15')](function(_0x2c910b){if(_0x128be2){if(_0x2c910b){var _0x520e66=[];_0x3db645=_0x2c910b;if(_0x3db645[_0x6f20('0x2a')]){for(var _0x493d89=0x0;_0x493d89<_0x3db645[_0x6f20('0x2a')];_0x493d89++){_0x520e66[_0x6f20('0x2e')](db[_0x6f20('0x27')][_0x6f20('0x4e')]({'membername':_0x128be2['name'],'UserId':_0x128be2['id'],'queue_name':_0x3db645[_0x493d89]['name'],'VoiceQueueId':_0x3db645[_0x493d89]['id'],'interface':_0x50185,'paused':_0x128be2[_0x6f20('0x46')]||![],'penalty':_0x3db645[_0x493d89][_0x6f20('0x4f')]||0x0}));}return BPromise[_0x6f20('0x50')](_0x520e66);}}}})[_0x6f20('0x15')](function(){if(_0x128be2){return db[_0x6f20('0x28')]['findAll']({'where':{'membername':_0x128be2['name'],'exitAt':null}});}})[_0x6f20('0x15')](function(_0x5942dc){if(_0x128be2){if(_0x5942dc&&_0x5942dc['length']){var _0x17acc6=[];_0x5942dc['forEach'](function(_0x5c32a5){_0x17acc6[_0x6f20('0x2e')](_0x5c32a5[_0x6f20('0x35')]({'exitAt':moment()[_0x6f20('0x24')](_0x6f20('0x2b'))}));});return BPromise[_0x6f20('0x50')](_0x17acc6);}}})[_0x6f20('0x15')](function(){if(_0x128be2){var _0x1c4d6a=[];var _0x49c81c=[];var _0x12d116=utils[_0x6f20('0x2c')]();var _0x11b774={'membername':_0x128be2[_0x6f20('0x20')],'interface':_0x50185,'enterAt':moment()[_0x6f20('0x24')](_0x6f20('0x2b')),'role':_0x128be2[_0x6f20('0x21')],'internal':_0x128be2[_0x6f20('0x22')]};_0x12d116[_0x6f20('0x2d')](function(_0x5e93ae){_0x1c4d6a[_0x6f20('0x2e')](_[_0x6f20('0x51')]({'channel':_0x5e93ae,'type':'LOGIN','data1':'callysquare','data2':_0x50185},_0x11b774));if(_0x128be2[_0x6f20('0x46')]){_0x49c81c[_0x6f20('0x2e')](_['merge']({'channel':_0x5e93ae,'type':_0x6f20('0x31'),'data1':_0x6f20('0x52')},_0x11b774));}});return db[_0x6f20('0x28')]['bulkCreate'](_0x1c4d6a['concat'](_0x49c81c),{'individualHooks':!![]});}})['then'](function(){if(_0x128be2){return _0x128be2['update']({'online':!![],'lastLoginAt':moment()[_0x6f20('0x24')](_0x6f20('0x2b')),'voicePause':_0x128be2['loginInPause']||![],'mailPause':_0x128be2[_0x6f20('0x46')]||![],'chatPause':_0x128be2[_0x6f20('0x46')]||![],'faxPause':_0x128be2[_0x6f20('0x46')]||![],'smsPause':_0x128be2['loginInPause']||![],'openchannelPause':_0x128be2[_0x6f20('0x46')]||![],'pauseType':_0x128be2[_0x6f20('0x46')]?_0x6f20('0x52'):null,'lastPauseAt':moment()[_0x6f20('0x24')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x50185});}})[_0x6f20('0x15')](function(_0x401568){_0x46f568(_0x401568);})[_0x6f20('0x19')](function(_0x16cafe){_0x34f00e(_0x11d4c1['error'](0x1f4,_0x16cafe[_0x6f20('0x1a')]));});});};
\ No newline at end of file
+var _0x293d=['LOGININPAUSE','concat','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./user.socket','register','GetUser','User','options','raw','attributes','limit','include','map','model','then','debug','error','message','ShowUser','where','info','stringify','PauseUser','name','role','internal','interface','format','params','UserVoiceQueueRt','update','MemberReport','findAll','PAUSE','YYYY-MM-DD\x20HH:mm:ss','length','getChannels','forEach','push','isNil','SIP/%s','body','type','uniqueid','bulkCreate','channel','Channel\x20parameter\x20%s\x20is\x20invalid','online','voicePause','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsappPause','pauseType','User\x20with\x20id\x20%s\x20not\x20found','unpause','system','catch','LogoutUser','findOne','destroy','LoginUser','mobile','phone','loginInPause','count','agent','../../config/license/util','agents','Maximum\x20login\x20has\x20been\x20reached','upsert','UserVoiceQueue.penalty','all','LOGIN','callysquare','merge'];(function(_0x18ddd4,_0x39da23){var _0x234849=function(_0x12bb3e){while(--_0x12bb3e){_0x18ddd4['push'](_0x18ddd4['shift']());}};_0x234849(++_0x39da23);}(_0x293d,0xb2));var _0xd293=function(_0x54e253,_0x4bbf99){_0x54e253=_0x54e253-0x0;var _0x17cddd=_0x293d[_0x54e253];return _0x17cddd;};'use strict';var _=require('lodash');var util=require(_0xd293('0x0'));var moment=require('moment');var BPromise=require(_0xd293('0x1'));var Redis=require(_0xd293('0x2'));var db=require(_0xd293('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xd293('0x4'))(_0xd293('0x5'));var config=require(_0xd293('0x6'));config[_0xd293('0x7')]=_[_0xd293('0x8')](config['redis'],{'host':_0xd293('0x9'),'port':0x18eb});var socket=require(_0xd293('0xa'))(new Redis(config[_0xd293('0x7')]));require(_0xd293('0xb'))[_0xd293('0xc')](socket);exports[_0xd293('0xd')]=function(_0x3c1e15){var _0x50be75=this;return new Promise(function(_0x1cfc91,_0x59c27f){return db[_0xd293('0xe')]['findAll']({'raw':_0x3c1e15[_0xd293('0xf')]?_0x3c1e15[_0xd293('0xf')][_0xd293('0x10')]===undefined?!![]:![]:!![],'where':_0x3c1e15[_0xd293('0xf')]?_0x3c1e15['options']['where']||null:null,'attributes':_0x3c1e15[_0xd293('0xf')]?_0x3c1e15['options'][_0xd293('0x11')]||null:null,'limit':_0x3c1e15[_0xd293('0xf')]?_0x3c1e15[_0xd293('0xf')][_0xd293('0x12')]||null:null,'include':_0x3c1e15[_0xd293('0xf')]?_0x3c1e15['options'][_0xd293('0x13')]?_[_0xd293('0x14')](_0x3c1e15['options'][_0xd293('0x13')],function(_0x310ebd){return{'model':db[_0x310ebd[_0xd293('0x15')]],'as':_0x310ebd['as'],'attributes':_0x310ebd[_0xd293('0x11')],'include':_0x310ebd[_0xd293('0x13')]?_[_0xd293('0x14')](_0x310ebd[_0xd293('0x13')],function(_0x41b705){return{'model':db[_0x41b705['model']],'as':_0x41b705['as'],'attributes':_0x41b705['attributes'],'include':_0x41b705[_0xd293('0x13')]?_[_0xd293('0x14')](_0x41b705[_0xd293('0x13')],function(_0x5381a7){return{'model':db[_0x5381a7[_0xd293('0x15')]],'as':_0x5381a7['as'],'attributes':_0x5381a7[_0xd293('0x11')]};}):[]};}):[]};}):[]:[]})[_0xd293('0x16')](function(_0x1050a4){logger['info'](_0xd293('0xd'),_0x3c1e15);logger[_0xd293('0x17')](_0xd293('0xd'),_0x3c1e15,JSON['stringify'](_0x1050a4));_0x1cfc91(_0x1050a4);})['catch'](function(_0x4850ef){logger[_0xd293('0x18')](_0xd293('0xd'),_0x4850ef['message'],_0x3c1e15);_0x59c27f(_0x50be75[_0xd293('0x18')](0x1f4,_0x4850ef[_0xd293('0x19')]));});});};exports[_0xd293('0x1a')]=function(_0x123fe5){var _0x15fef0=this;return new Promise(function(_0x2dc899,_0x5171c4){return db[_0xd293('0xe')]['find']({'raw':_0x123fe5[_0xd293('0xf')]?_0x123fe5['options'][_0xd293('0x10')]===undefined?!![]:![]:!![],'where':_0x123fe5[_0xd293('0xf')]?_0x123fe5[_0xd293('0xf')][_0xd293('0x1b')]||null:null,'attributes':_0x123fe5[_0xd293('0xf')]?_0x123fe5[_0xd293('0xf')][_0xd293('0x11')]||null:null,'include':_0x123fe5[_0xd293('0xf')]?_0x123fe5['options']['include']?_[_0xd293('0x14')](_0x123fe5[_0xd293('0xf')][_0xd293('0x13')],function(_0x8c0748){return{'model':db[_0x8c0748[_0xd293('0x15')]],'as':_0x8c0748['as'],'attributes':_0x8c0748[_0xd293('0x11')],'include':_0x8c0748[_0xd293('0x13')]?_[_0xd293('0x14')](_0x8c0748[_0xd293('0x13')],function(_0x9ed1f8){return{'model':db[_0x9ed1f8['model']],'as':_0x9ed1f8['as'],'attributes':_0x9ed1f8[_0xd293('0x11')],'include':_0x9ed1f8['include']?_[_0xd293('0x14')](_0x9ed1f8['include'],function(_0x4d999a){return{'model':db[_0x4d999a[_0xd293('0x15')]],'as':_0x4d999a['as'],'attributes':_0x4d999a[_0xd293('0x11')]};}):[]};}):[]};}):[]:[]})[_0xd293('0x16')](function(_0x1abe62){logger[_0xd293('0x1c')](_0xd293('0x1a'),_0x123fe5);logger[_0xd293('0x17')]('ShowUser',_0x123fe5,JSON[_0xd293('0x1d')](_0x1abe62));_0x2dc899(_0x1abe62);})['catch'](function(_0x3505f8){logger['error'](_0xd293('0x1a'),_0x3505f8[_0xd293('0x19')],_0x123fe5);_0x5171c4(_0x15fef0[_0xd293('0x18')](0x1f4,_0x3505f8['message']));});});};exports[_0xd293('0x1e')]=function(_0x48090f){var _0x407cf8;return db[_0xd293('0xe')]['find']({'where':_0x48090f[_0xd293('0xf')][_0xd293('0x1b')]||{},'attributes':['id',_0xd293('0x1f'),_0xd293('0x20'),_0xd293('0x21'),_0xd293('0x22')]})[_0xd293('0x16')](function(_0x2c2d8b){if(!_0x2c2d8b){throw new Error(util[_0xd293('0x23')]('User\x20with\x20id\x20%s\x20not\x20found',_0x48090f[_0xd293('0x24')]['id']));}_0x407cf8=_0x2c2d8b;return db[_0xd293('0x25')][_0xd293('0x26')]({'paused':0x1},{'where':{'UserId':_0x407cf8['id']},'individualHooks':!![]});})[_0xd293('0x16')](function(){return db[_0xd293('0x27')][_0xd293('0x28')]({'where':{'membername':_0x407cf8[_0xd293('0x1f')],'type':_0xd293('0x29'),'exitAt':null}});})[_0xd293('0x16')](function(_0x6f6420){if(_0x6f6420&&_0x6f6420['length']){var _0x2f11cb=moment()['format'](_0xd293('0x2a'));for(var _0x53a6f0=0x0,_0x1187df=_0x6f6420[_0xd293('0x2b')];_0x53a6f0<_0x1187df;_0x53a6f0++){_0x6f6420[_0x53a6f0]['updateAttributes']({'exitAt':_0x2f11cb});}}})[_0xd293('0x16')](function(){var _0x4a5e6d=[];var _0x505771=utils[_0xd293('0x2c')]();_0x505771[_0xd293('0x2d')](function(_0x2627f5){_0x4a5e6d[_0xd293('0x2e')]({'channel':_0x2627f5,'membername':_0x407cf8['name'],'interface':_[_0xd293('0x2f')](_0x407cf8[_0xd293('0x22')])?util[_0xd293('0x23')](_0xd293('0x30'),_0x407cf8[_0xd293('0x1f')]):_0x407cf8[_0xd293('0x22')],'type':_0xd293('0x29'),'enterAt':moment()[_0xd293('0x23')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x48090f[_0xd293('0x31')][_0xd293('0x32')]||'DEFAULT\x20PAUSE','role':_0x407cf8[_0xd293('0x20')],'internal':_0x407cf8[_0xd293('0x21')],'uniqueid':_0x48090f[_0xd293('0x31')][_0xd293('0x33')]||null});});return db[_0xd293('0x27')][_0xd293('0x34')](_0x4a5e6d,{'individualHooks':!![]});})['then'](function(){return _0x407cf8[_0xd293('0x26')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x48090f[_0xd293('0x31')][_0xd293('0x32')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0xd293('0x23')]('YYYY-MM-DD\x20HH:mm:ss')});})['catch'](function(_0x18318e){throw _0x18318e;});};exports['UnpauseUser']=function(_0x24f8a0){return Promise['resolve']()[_0xd293('0x16')](function(){if(_0x24f8a0['body']['channel']&&!utils['isValidChannel'](_0x24f8a0['body'][_0xd293('0x35')])){throw new Error(util['format'](_0xd293('0x36'),_0x24f8a0['body'][_0xd293('0x35')]));}return db[_0xd293('0xe')]['findOne']({'where':_0x24f8a0[_0xd293('0xf')][_0xd293('0x1b')]||{},'attributes':['id',_0xd293('0x1f'),_0xd293('0x20'),_0xd293('0x21'),'interface',_0xd293('0x37'),_0xd293('0x38'),_0xd293('0x39'),_0xd293('0x3a'),_0xd293('0x3b'),_0xd293('0x3c'),_0xd293('0x3d'),_0xd293('0x3e'),_0xd293('0x3f'),'lastPauseAt']});})[_0xd293('0x16')](function(_0xfe218f){if(!_0xfe218f){throw new Error(util[_0xd293('0x23')](_0xd293('0x40'),_0x24f8a0['params']['id']));}return _0xfe218f[_0xd293('0x41')](_0x24f8a0[_0xd293('0x31')]['channel'],_0xd293('0x42'));})[_0xd293('0x43')](function(_0x1d7ada){throw _0x1d7ada;});};exports[_0xd293('0x44')]=function(_0x1b53bd){var _0x4a3b49=this;return new Promise(function(_0x42d37e,_0x4532c3){var _0x3a09ce;return db['User'][_0xd293('0x45')]({'where':_0x1b53bd[_0xd293('0xf')][_0xd293('0x1b')]||{},'attributes':['id',_0xd293('0x1f')]})[_0xd293('0x16')](function(_0xad4727){if(_0xad4727){_0x3a09ce=_0xad4727;return db[_0xd293('0x25')][_0xd293('0x46')]({'where':{'membername':_0x3a09ce[_0xd293('0x1f')]},'individualHooks':!![]});}})['then'](function(){if(_0x3a09ce){return db[_0xd293('0x27')][_0xd293('0x28')]({'where':{'membername':_0x3a09ce[_0xd293('0x1f')],'exitAt':null}});}})[_0xd293('0x16')](function(_0x254f9d){if(_0x3a09ce){if(_0x254f9d&&_0x254f9d[_0xd293('0x2b')]){var _0x5a8bf1=[];_0x254f9d[_0xd293('0x2d')](function(_0x560b5b){_0x5a8bf1[_0xd293('0x2e')](_0x560b5b[_0xd293('0x26')]({'exitAt':moment()['format'](_0xd293('0x2a'))}));});return BPromise['all'](_0x5a8bf1);}}})[_0xd293('0x16')](function(){if(_0x3a09ce){return _0x3a09ce['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xd293('0x16')](function(_0x3d8f23){_0x42d37e(_0x3d8f23);})[_0xd293('0x43')](function(_0x3a3341){_0x4532c3(_0x4a3b49[_0xd293('0x18')](0x1f4,_0x3a3341[_0xd293('0x19')]));});});};exports[_0xd293('0x47')]=function(_0x72d6af){var _0x163795=this;return new Promise(function(_0x4f2708,_0x5b153f){var _0x365b7d;var _0x5884c8;var _0x176f49;var _0x4aca1b;return db['User'][_0xd293('0x45')]({'where':_0x72d6af[_0xd293('0xf')][_0xd293('0x1b')]||{},'attributes':['id',_0xd293('0x1f'),'role',_0xd293('0x48'),_0xd293('0x49'),_0xd293('0x21'),_0xd293('0x4a'),_0xd293('0x22')]})[_0xd293('0x16')](function(_0xc0f6d0){if(_0xc0f6d0){_0x365b7d=_0xc0f6d0;_0x4aca1b=_0x72d6af[_0xd293('0x31')][_0xd293('0x22')]?_0x72d6af[_0xd293('0x31')][_0xd293('0x22')]:util[_0xd293('0x23')](_0xd293('0x30'),_0x365b7d[_0xd293('0x1f')]);return db[_0xd293('0xe')][_0xd293('0x4b')]({'where':{'role':_0xd293('0x4c'),'online':!![],'id':{'$ne':_0x365b7d['id']}}});}})[_0xd293('0x16')](function(_0x26e957){if(_0x26e957){_0x176f49=_0x26e957;return require(_0xd293('0x4d'))['getLicense']();}})[_0xd293('0x16')](function(_0x539d8e){if(_0x539d8e&&_0x539d8e[_0xd293('0x4e')]&&_0x176f49>=_0x539d8e[_0xd293('0x4e')]){throw new Error(_0xd293('0x4f'));}})[_0xd293('0x16')](function(){if(_0x365b7d){return db[_0xd293('0x25')]['destroy']({'where':{'membername':_0x365b7d[_0xd293('0x1f')]},'individualHooks':!![]});}})[_0xd293('0x16')](function(){if(_0x365b7d){return _0x365b7d['getVoiceQueues']({'raw':!![]});}})['then'](function(_0x4c3422){if(_0x365b7d){if(_0x4c3422){var _0x543116=[];_0x5884c8=_0x4c3422;if(_0x5884c8[_0xd293('0x2b')]){for(var _0x3da69c=0x0;_0x3da69c<_0x5884c8[_0xd293('0x2b')];_0x3da69c++){_0x543116[_0xd293('0x2e')](db[_0xd293('0x25')][_0xd293('0x50')]({'membername':_0x365b7d[_0xd293('0x1f')],'UserId':_0x365b7d['id'],'queue_name':_0x5884c8[_0x3da69c]['name'],'VoiceQueueId':_0x5884c8[_0x3da69c]['id'],'interface':_0x4aca1b,'paused':_0x365b7d[_0xd293('0x4a')]||![],'penalty':_0x5884c8[_0x3da69c][_0xd293('0x51')]||0x0}));}return BPromise[_0xd293('0x52')](_0x543116);}}}})[_0xd293('0x16')](function(){if(_0x365b7d){return db[_0xd293('0x27')][_0xd293('0x28')]({'where':{'membername':_0x365b7d[_0xd293('0x1f')],'exitAt':null}});}})[_0xd293('0x16')](function(_0x20d927){if(_0x365b7d){if(_0x20d927&&_0x20d927[_0xd293('0x2b')]){var _0x2e3a81=[];_0x20d927[_0xd293('0x2d')](function(_0x3c1d90){_0x2e3a81[_0xd293('0x2e')](_0x3c1d90[_0xd293('0x26')]({'exitAt':moment()['format'](_0xd293('0x2a'))}));});return BPromise[_0xd293('0x52')](_0x2e3a81);}}})[_0xd293('0x16')](function(){if(_0x365b7d){var _0x36a98e=[];var _0x2c51d9=[];var _0x4b4664=utils[_0xd293('0x2c')]();var _0x5605f9={'membername':_0x365b7d[_0xd293('0x1f')],'interface':_0x4aca1b,'enterAt':moment()[_0xd293('0x23')](_0xd293('0x2a')),'role':_0x365b7d[_0xd293('0x20')],'internal':_0x365b7d[_0xd293('0x21')]};_0x4b4664[_0xd293('0x2d')](function(_0x159596){_0x36a98e[_0xd293('0x2e')](_['merge']({'channel':_0x159596,'type':_0xd293('0x53'),'data1':_0xd293('0x54'),'data2':_0x4aca1b},_0x5605f9));if(_0x365b7d[_0xd293('0x4a')]){_0x2c51d9[_0xd293('0x2e')](_[_0xd293('0x55')]({'channel':_0x159596,'type':_0xd293('0x29'),'data1':_0xd293('0x56')},_0x5605f9));}});return db[_0xd293('0x27')][_0xd293('0x34')](_0x36a98e[_0xd293('0x57')](_0x2c51d9),{'individualHooks':!![]});}})[_0xd293('0x16')](function(){if(_0x365b7d){return _0x365b7d[_0xd293('0x26')]({'online':!![],'lastLoginAt':moment()[_0xd293('0x23')](_0xd293('0x2a')),'voicePause':_0x365b7d[_0xd293('0x4a')]||![],'mailPause':_0x365b7d[_0xd293('0x4a')]||![],'chatPause':_0x365b7d['loginInPause']||![],'faxPause':_0x365b7d[_0xd293('0x4a')]||![],'smsPause':_0x365b7d[_0xd293('0x4a')]||![],'openchannelPause':_0x365b7d['loginInPause']||![],'pauseType':_0x365b7d[_0xd293('0x4a')]?_0xd293('0x56'):null,'lastPauseAt':moment()[_0xd293('0x23')](_0xd293('0x2a')),'interface':_0x4aca1b});}})[_0xd293('0x16')](function(_0x1d96b4){_0x4f2708(_0x1d96b4);})[_0xd293('0x43')](function(_0x100ff5){_0x5b153f(_0x163795[_0xd293('0x18')](0x1f4,_0x100ff5[_0xd293('0x19')]));});});};
\ No newline at end of file
index 82f91ce..b508b78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e73=['removeListener','register','length','user:','save','remove','emit'];(function(_0x4c7b20,_0x361515){var _0x4872bd=function(_0x358e19){while(--_0x358e19){_0x4c7b20['push'](_0x4c7b20['shift']());}};_0x4872bd(++_0x361515);}(_0x5e73,0x17e));var _0x35e7=function(_0x50e1a7,_0x555868){_0x50e1a7=_0x50e1a7-0x0;var _0x5a3a82=_0x5e73[_0x50e1a7];return _0x5a3a82;};'use strict';var UserEvents=require('./user.events');var events=[_0x35e7('0x0'),_0x35e7('0x1'),'update'];function createListener(_0x1a5f12,_0x2c0508){return function(_0x3200c7){_0x2c0508[_0x35e7('0x2')](_0x1a5f12,_0x3200c7);};}function removeListener(_0x5d39f6,_0x1d0e62){return function(){UserEvents[_0x35e7('0x3')](_0x5d39f6,_0x1d0e62);};}exports[_0x35e7('0x4')]=function(_0x1bc09f){for(var _0x5d14ae=0x0,_0x26ffb6=events[_0x35e7('0x5')];_0x5d14ae<_0x26ffb6;_0x5d14ae++){var _0x591325=events[_0x5d14ae];var _0x276396=createListener(_0x35e7('0x6')+_0x591325,_0x1bc09f);UserEvents['on'](_0x591325,_0x276396);}};
\ No newline at end of file
+var _0xb389=['emit','register','length','user:','./user.events','remove','update'];(function(_0x35d294,_0x3a9b4){var _0xb9ae9a=function(_0x3c08ce){while(--_0x3c08ce){_0x35d294['push'](_0x35d294['shift']());}};_0xb9ae9a(++_0x3a9b4);}(_0xb389,0x12a));var _0x9b38=function(_0x2a67fe,_0x295c09){_0x2a67fe=_0x2a67fe-0x0;var _0x57e726=_0xb389[_0x2a67fe];return _0x57e726;};'use strict';var UserEvents=require(_0x9b38('0x0'));var events=['save',_0x9b38('0x1'),_0x9b38('0x2')];function createListener(_0x48a2bb,_0x23e9bd){return function(_0x1d80cd){_0x23e9bd[_0x9b38('0x3')](_0x48a2bb,_0x1d80cd);};}function removeListener(_0x19ea1e,_0x52f879){return function(){UserEvents['removeListener'](_0x19ea1e,_0x52f879);};}exports[_0x9b38('0x4')]=function(_0x2ed0b5){for(var _0x2b8c63=0x0,_0x19da6b=events[_0x9b38('0x5')];_0x2b8c63<_0x19da6b;_0x2b8c63++){var _0x387e6d=events[_0x2b8c63];var _0x4ecd3f=createListener(_0x9b38('0x6')+_0x387e6d,_0x2ed0b5);UserEvents['on'](_0x387e6d,_0x4ecd3f);}};
\ No newline at end of file
index fc6f6f6..ea5cfed 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(_0x169318,_0x3b4dfa){var _0x5d07b6=function(_0x1376a8){while(--_0x1376a8){_0x169318['push'](_0x169318['shift']());}};_0x5d07b6(++_0x3b4dfa);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0xc98354,_0x3bf67b){var _0x424479=function(_0x2604c7){while(--_0x2604c7){_0xc98354['push'](_0xc98354['shift']());}};_0x424479(++_0x3bf67b);}(_0x9c44,0x178));var _0x49c4=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x9c44[_0xb0f7c3];return _0x28ea68;};'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 7164721..53a6385 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x642a=['INTEGER','sequelize','exports'];(function(_0x4fdb86,_0x1600b3){var _0x151c45=function(_0x53a0a8){while(--_0x53a0a8){_0x4fdb86['push'](_0x4fdb86['shift']());}};_0x151c45(++_0x1600b3);}(_0x642a,0x1f0));var _0xa642=function(_0x4acd52,_0x158142){_0x4acd52=_0x4acd52-0x0;var _0x9d50c9=_0x642a[_0x4acd52];return _0x9d50c9;};'use strict';var Sequelize=require(_0xa642('0x0'));module[_0xa642('0x1')]={'penalty':{'type':Sequelize[_0xa642('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2192=['sequelize','exports'];(function(_0x7a6e0,_0x35f1d3){var _0x2ef4a7=function(_0x43cc67){while(--_0x43cc67){_0x7a6e0['push'](_0x7a6e0['shift']());}};_0x2ef4a7(++_0x35f1d3);}(_0x2192,0x1a0));var _0x2219=function(_0x5973f8,_0x460abf){_0x5973f8=_0x5973f8-0x0;var _0x238c36=_0x2192[_0x5973f8];return _0x238c36;};'use strict';var Sequelize=require(_0x2219('0x0'));module[_0x2219('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index b3ea8b6..5fdb2c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd529=['api','bluebird','rimraf','../../config/environment','./userChatQueue.attributes','exports','../../config/logger'];(function(_0x26337f,_0x360c6b){var _0x51c972=function(_0x2e6d46){while(--_0x2e6d46){_0x26337f['push'](_0x26337f['shift']());}};_0x51c972(++_0x360c6b);}(_0xd529,0xf4));var _0x9d52=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xd529[_0xfae23b];return _0x200640;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9d52('0x0'))(_0x9d52('0x1'));var moment=require('moment');var BPromise=require(_0x9d52('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x9d52('0x3'));var config=require(_0x9d52('0x4'));var attributes=require(_0x9d52('0x5'));module[_0x9d52('0x6')]=function(_0x405424,_0x193337){return _0x405424['define']('UserChatQueue',attributes,{'tableName':'user_has_chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3379=['moment','bluebird','request-promise','path','./userChatQueue.attributes','define','UserChatQueue','user_has_chat_queues','lodash','util'];(function(_0x2f2360,_0x151089){var _0x1cc8d3=function(_0x5e356f){while(--_0x5e356f){_0x2f2360['push'](_0x2f2360['shift']());}};_0x1cc8d3(++_0x151089);}(_0x3379,0xb2));var _0x9337=function(_0x5b96a8,_0x1ad993){_0x5b96a8=_0x5b96a8-0x0;var _0x5632c4=_0x3379[_0x5b96a8];return _0x5632c4;};'use strict';var _=require(_0x9337('0x0'));var util=require(_0x9337('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x9337('0x2'));var BPromise=require(_0x9337('0x3'));var rp=require(_0x9337('0x4'));var fs=require('fs');var path=require(_0x9337('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x9337('0x6'));module['exports']=function(_0x24d22f,_0x329816){return _0x24d22f[_0x9337('0x7')](_0x9337('0x8'),attributes,{'tableName':_0x9337('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7055d7d..c7588c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc25e=['catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x41f5a6,_0xb35c51){var _0x241efd=function(_0x2cfaa5){while(--_0x2cfaa5){_0x41f5a6['push'](_0x41f5a6['shift']());}};_0x241efd(++_0xb35c51);}(_0xc25e,0x1c9));var _0xec25=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xc25e[_0x2b4411];return _0x8e41ef;};'use strict';var _=require('lodash');var util=require(_0xec25('0x0'));var moment=require(_0xec25('0x1'));var BPromise=require(_0xec25('0x2'));var rs=require(_0xec25('0x3'));var fs=require('fs');var Redis=require(_0xec25('0x4'));var db=require(_0xec25('0x5'))['db'];var utils=require(_0xec25('0x6'));var logger=require(_0xec25('0x7'))('rpc');var config=require(_0xec25('0x8'));var jayson=require(_0xec25('0x9'));var client=jayson[_0xec25('0xa')][_0xec25('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1f40b2,_0x1da63d,_0x20ae9f){return new BPromise(function(_0x39f271,_0x5048a0){return client[_0xec25('0xc')](_0x1f40b2,_0x20ae9f)[_0xec25('0xd')](function(_0x10eb6b){logger[_0xec25('0xe')](_0xec25('0xf'),_0x1da63d,_0xec25('0x10'));logger[_0xec25('0x11')](_0xec25('0x12'),_0x1da63d,_0xec25('0x10'),JSON[_0xec25('0x13')](_0x10eb6b));if(_0x10eb6b[_0xec25('0x14')]){if(_0x10eb6b[_0xec25('0x14')]['code']===0x1f4){logger[_0xec25('0x14')](_0xec25('0xf'),_0x1da63d,_0x10eb6b[_0xec25('0x14')][_0xec25('0x15')]);return _0x5048a0(_0x10eb6b[_0xec25('0x14')]['message']);}logger[_0xec25('0x14')](_0xec25('0xf'),_0x1da63d,_0x10eb6b[_0xec25('0x14')]['message']);return _0x39f271(_0x10eb6b[_0xec25('0x14')]['message']);}else{logger[_0xec25('0xe')](_0xec25('0xf'),_0x1da63d,_0xec25('0x10'));_0x39f271(_0x10eb6b[_0xec25('0x16')][_0xec25('0x15')]);}})[_0xec25('0x17')](function(_0x2faf59){logger[_0xec25('0x14')](_0xec25('0xf'),_0x1da63d,_0x2faf59);_0x5048a0(_0x2faf59);});});}
\ No newline at end of file
+var _0x069d=['stringify','error','UserChatQueue,\x20%s,\x20%s','message','info','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s'];(function(_0x297fd3,_0x115406){var _0x2af381=function(_0x1dd31b){while(--_0x1dd31b){_0x297fd3['push'](_0x297fd3['shift']());}};_0x2af381(++_0x115406);}(_0x069d,0x1a4));var _0xd069=function(_0x2e1f10,_0x125741){_0x2e1f10=_0x2e1f10-0x0;var _0x3c1119=_0x069d[_0x2e1f10];return _0x3c1119;};'use strict';var _=require(_0xd069('0x0'));var util=require(_0xd069('0x1'));var moment=require(_0xd069('0x2'));var BPromise=require(_0xd069('0x3'));var rs=require(_0xd069('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd069('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd069('0x6'))(_0xd069('0x7'));var config=require(_0xd069('0x8'));var jayson=require(_0xd069('0x9'));var client=jayson[_0xd069('0xa')][_0xd069('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2a544b,_0x9da356,_0x103976){return new BPromise(function(_0x261d30,_0x990a44){return client[_0xd069('0xc')](_0x2a544b,_0x103976)[_0xd069('0xd')](function(_0xdf7a49){logger['info']('UserChatQueue,\x20%s,\x20%s',_0x9da356,_0xd069('0xe'));logger[_0xd069('0xf')](_0xd069('0x10'),_0x9da356,_0xd069('0xe'),JSON[_0xd069('0x11')](_0xdf7a49));if(_0xdf7a49['error']){if(_0xdf7a49[_0xd069('0x12')]['code']===0x1f4){logger[_0xd069('0x12')](_0xd069('0x13'),_0x9da356,_0xdf7a49[_0xd069('0x12')][_0xd069('0x14')]);return _0x990a44(_0xdf7a49[_0xd069('0x12')][_0xd069('0x14')]);}logger['error'](_0xd069('0x13'),_0x9da356,_0xdf7a49[_0xd069('0x12')][_0xd069('0x14')]);return _0x261d30(_0xdf7a49[_0xd069('0x12')]['message']);}else{logger[_0xd069('0x15')](_0xd069('0x13'),_0x9da356,_0xd069('0xe'));_0x261d30(_0xdf7a49['result'][_0xd069('0x14')]);}})[_0xd069('0x16')](function(_0x260cbd){logger[_0xd069('0x12')](_0xd069('0x13'),_0x9da356,_0x260cbd);_0x990a44(_0x260cbd);});});}
\ No newline at end of file
index 274c2dd..13b8abd 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(_0x9132cc,_0x2304bc){var _0x33b079=function(_0x312998){while(--_0x312998){_0x9132cc['push'](_0x9132cc['shift']());}};_0x33b079(++_0x2304bc);}(_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 _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x57d0dc,_0x387f3e){var _0x177765=function(_0x1bbc9e){while(--_0x1bbc9e){_0x57d0dc['push'](_0x57d0dc['shift']());}};_0x177765(++_0x387f3e);}(_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 921cb5b..4027140 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7681=['INTEGER','STRING','sequelize','exports'];(function(_0x1573ba,_0x51140c){var _0x412946=function(_0x37c566){while(--_0x37c566){_0x1573ba['push'](_0x1573ba['shift']());}};_0x412946(++_0x51140c);}(_0x7681,0x1f2));var _0x1768=function(_0x18a6cf,_0x357dbb){_0x18a6cf=_0x18a6cf-0x0;var _0x39107e=_0x7681[_0x18a6cf];return _0x39107e;};'use strict';var Sequelize=require(_0x1768('0x0'));module[_0x1768('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x1768('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0x1768('0x3')]}};
\ No newline at end of file
+var _0xd2cb=['STRING','sequelize','exports','INTEGER'];(function(_0x47242d,_0x13f993){var _0x30273a=function(_0x322cd2){while(--_0x322cd2){_0x47242d['push'](_0x47242d['shift']());}};_0x30273a(++_0x13f993);}(_0xd2cb,0x1b9));var _0xbd2c=function(_0x5deb0a,_0xc192bb){_0x5deb0a=_0x5deb0a-0x0;var _0x33d0ce=_0xd2cb[_0x5deb0a];return _0x33d0ce;};'use strict';var Sequelize=require(_0xbd2c('0x0'));module[_0xbd2c('0x1')]={'penalty':{'type':Sequelize[_0xbd2c('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xbd2c('0x2')],'defaultValue':0x0},'queue':{'type':Sequelize[_0xbd2c('0x3')]}};
\ No newline at end of file
index 48e2391..b8125ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6e7=['user_has_fax_queues','lodash','util','api','request-promise','path','../../config/environment','./userFaxQueue.attributes','define','UserFaxQueue'];(function(_0x191b54,_0x1dc69a){var _0x2270d1=function(_0xfcc107){while(--_0xfcc107){_0x191b54['push'](_0x191b54['shift']());}};_0x2270d1(++_0x1dc69a);}(_0xc6e7,0x1af));var _0x7c6e=function(_0x510c11,_0x766147){_0x510c11=_0x510c11-0x0;var _0x19e066=_0xc6e7[_0x510c11];return _0x19e066;};'use strict';var _=require(_0x7c6e('0x0'));var util=require(_0x7c6e('0x1'));var logger=require('../../config/logger')(_0x7c6e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x7c6e('0x3'));var fs=require('fs');var path=require(_0x7c6e('0x4'));var rimraf=require('rimraf');var config=require(_0x7c6e('0x5'));var attributes=require(_0x7c6e('0x6'));module['exports']=function(_0x577f1e,_0x5754f0){return _0x577f1e[_0x7c6e('0x7')](_0x7c6e('0x8'),attributes,{'tableName':_0x7c6e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x04cb=['UserFaxQueue','lodash','util','../../config/logger','api','bluebird','../../config/environment'];(function(_0xf84870,_0x4dc38f){var _0x4541a4=function(_0x3ff5d5){while(--_0x3ff5d5){_0xf84870['push'](_0xf84870['shift']());}};_0x4541a4(++_0x4dc38f);}(_0x04cb,0x8d));var _0xb04c=function(_0x13bc99,_0x2fa0d6){_0x13bc99=_0x13bc99-0x0;var _0x39a9b0=_0x04cb[_0x13bc99];return _0x39a9b0;};'use strict';var _=require(_0xb04c('0x0'));var util=require(_0xb04c('0x1'));var logger=require(_0xb04c('0x2'))(_0xb04c('0x3'));var moment=require('moment');var BPromise=require(_0xb04c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xb04c('0x5'));var attributes=require('./userFaxQueue.attributes');module['exports']=function(_0x2b8001,_0x2b3a20){return _0x2b8001['define'](_0xb04c('0x6'),attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0a22f93..1ef86d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbccb=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','request\x20sent','stringify','error','UserFaxQueue,\x20%s,\x20%s'];(function(_0xf73c09,_0x4e424e){var _0xa8923c=function(_0x4831c1){while(--_0x4831c1){_0xf73c09['push'](_0xf73c09['shift']());}};_0xa8923c(++_0x4e424e);}(_0xbccb,0x168));var _0xbbcc=function(_0x5416db,_0x55683a){_0x5416db=_0x5416db-0x0;var _0x243e35=_0xbccb[_0x5416db];return _0x243e35;};'use strict';var _=require(_0xbbcc('0x0'));var util=require(_0xbbcc('0x1'));var moment=require(_0xbbcc('0x2'));var BPromise=require(_0xbbcc('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbbcc('0x4'));var db=require(_0xbbcc('0x5'))['db'];var utils=require(_0xbbcc('0x6'));var logger=require('../../config/logger')(_0xbbcc('0x7'));var config=require('../../config/environment');var jayson=require(_0xbbcc('0x8'));var client=jayson[_0xbbcc('0x9')][_0xbbcc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2dc242,_0x5baec9,_0x4a2fd3){return new BPromise(function(_0x38321d,_0x508ee5){return client[_0xbbcc('0xb')](_0x2dc242,_0x4a2fd3)[_0xbbcc('0xc')](function(_0x18baf5){logger[_0xbbcc('0xd')]('UserFaxQueue,\x20%s,\x20%s',_0x5baec9,_0xbbcc('0xe'));logger['debug']('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0x5baec9,_0xbbcc('0xe'),JSON[_0xbbcc('0xf')](_0x18baf5));if(_0x18baf5[_0xbbcc('0x10')]){if(_0x18baf5[_0xbbcc('0x10')]['code']===0x1f4){logger[_0xbbcc('0x10')](_0xbbcc('0x11'),_0x5baec9,_0x18baf5[_0xbbcc('0x10')][_0xbbcc('0x12')]);return _0x508ee5(_0x18baf5['error'][_0xbbcc('0x12')]);}logger[_0xbbcc('0x10')](_0xbbcc('0x11'),_0x5baec9,_0x18baf5[_0xbbcc('0x10')]['message']);return _0x38321d(_0x18baf5[_0xbbcc('0x10')][_0xbbcc('0x12')]);}else{logger[_0xbbcc('0xd')]('UserFaxQueue,\x20%s,\x20%s',_0x5baec9,_0xbbcc('0xe'));_0x38321d(_0x18baf5[_0xbbcc('0x13')]['message']);}})[_0xbbcc('0x14')](function(_0x487d89){logger[_0xbbcc('0x10')]('UserFaxQueue,\x20%s,\x20%s',_0x5baec9,_0x487d89);_0x508ee5(_0x487d89);});});}
\ No newline at end of file
+var _0xb8f4=['debug','stringify','error','code','UserFaxQueue,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent'];(function(_0x1de984,_0x4de123){var _0x9ebe53=function(_0x561d69){while(--_0x561d69){_0x1de984['push'](_0x1de984['shift']());}};_0x9ebe53(++_0x4de123);}(_0xb8f4,0x198));var _0x4b8f=function(_0x54d24b,_0x4c07ba){_0x54d24b=_0x54d24b-0x0;var _0xe89b42=_0xb8f4[_0x54d24b];return _0xe89b42;};'use strict';var _=require('lodash');var util=require(_0x4b8f('0x0'));var moment=require(_0x4b8f('0x1'));var BPromise=require(_0x4b8f('0x2'));var rs=require(_0x4b8f('0x3'));var fs=require('fs');var Redis=require(_0x4b8f('0x4'));var db=require(_0x4b8f('0x5'))['db'];var utils=require(_0x4b8f('0x6'));var logger=require(_0x4b8f('0x7'))(_0x4b8f('0x8'));var config=require(_0x4b8f('0x9'));var jayson=require(_0x4b8f('0xa'));var client=jayson[_0x4b8f('0xb')][_0x4b8f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x96cf21,_0x488a6f,_0x41dcdf){return new BPromise(function(_0x3feb57,_0x20ea0d){return client[_0x4b8f('0xd')](_0x96cf21,_0x41dcdf)[_0x4b8f('0xe')](function(_0x3d324e){logger[_0x4b8f('0xf')]('UserFaxQueue,\x20%s,\x20%s',_0x488a6f,_0x4b8f('0x10'));logger[_0x4b8f('0x11')]('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0x488a6f,_0x4b8f('0x10'),JSON[_0x4b8f('0x12')](_0x3d324e));if(_0x3d324e[_0x4b8f('0x13')]){if(_0x3d324e[_0x4b8f('0x13')][_0x4b8f('0x14')]===0x1f4){logger['error'](_0x4b8f('0x15'),_0x488a6f,_0x3d324e['error'][_0x4b8f('0x16')]);return _0x20ea0d(_0x3d324e[_0x4b8f('0x13')][_0x4b8f('0x16')]);}logger[_0x4b8f('0x13')]('UserFaxQueue,\x20%s,\x20%s',_0x488a6f,_0x3d324e[_0x4b8f('0x13')]['message']);return _0x3feb57(_0x3d324e[_0x4b8f('0x13')][_0x4b8f('0x16')]);}else{logger[_0x4b8f('0xf')](_0x4b8f('0x15'),_0x488a6f,_0x4b8f('0x10'));_0x3feb57(_0x3d324e[_0x4b8f('0x17')][_0x4b8f('0x16')]);}})[_0x4b8f('0x18')](function(_0x3be8d6){logger[_0x4b8f('0x13')]('UserFaxQueue,\x20%s,\x20%s',_0x488a6f,_0x3be8d6);_0x20ea0d(_0x3be8d6);});});}
\ No newline at end of file
index 60404f6..b0314b0 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(_0x2becba,_0x4ea656){var _0x90b5dd=function(_0x26ae2b){while(--_0x26ae2b){_0x2becba['push'](_0x2becba['shift']());}};_0x90b5dd(++_0x4ea656);}(_0x9c44,0x178));var _0x49c4=function(_0x3ff085,_0x27c92e){_0x3ff085=_0x3ff085-0x0;var _0x2b68c3=_0x9c44[_0x3ff085];return _0x2b68c3;};'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(_0x2942f3,_0x5dc71d){var _0x5b917e=function(_0x2075cd){while(--_0x2075cd){_0x2942f3['push'](_0x2942f3['shift']());}};_0x5b917e(++_0x5dc71d);}(_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 ff49f0b..433306a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d66=['exports','INTEGER'];(function(_0x20ee5a,_0x409903){var _0x4573bf=function(_0xc7daf6){while(--_0xc7daf6){_0x20ee5a['push'](_0x20ee5a['shift']());}};_0x4573bf(++_0x409903);}(_0x2d66,0x18c));var _0x62d6=function(_0xe73498,_0x3d8943){_0xe73498=_0xe73498-0x0;var _0x4debca=_0x2d66[_0xe73498];return _0x4debca;};'use strict';var Sequelize=require('sequelize');module[_0x62d6('0x0')]={'penalty':{'type':Sequelize[_0x62d6('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb011=['sequelize'];(function(_0x3cff69,_0x50cdb9){var _0x2fe584=function(_0x3bccef){while(--_0x3bccef){_0x3cff69['push'](_0x3cff69['shift']());}};_0x2fe584(++_0x50cdb9);}(_0xb011,0x19c));var _0x1b01=function(_0x158f23,_0x24e277){_0x158f23=_0x158f23-0x0;var _0x80b9be=_0xb011[_0x158f23];return _0x80b9be;};'use strict';var Sequelize=require(_0x1b01('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 7f87014..0816f8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52a4=['UserMailQueue','user_has_mail_queues','lodash','../../config/logger','api','moment','request-promise','rimraf','./userMailQueue.attributes','define'];(function(_0x246148,_0x1358ee){var _0x453d94=function(_0x59920e){while(--_0x59920e){_0x246148['push'](_0x246148['shift']());}};_0x453d94(++_0x1358ee);}(_0x52a4,0x110));var _0x452a=function(_0xe974a4,_0x287b3d){_0xe974a4=_0xe974a4-0x0;var _0x2dcffa=_0x52a4[_0xe974a4];return _0x2dcffa;};'use strict';var _=require(_0x452a('0x0'));var util=require('util');var logger=require(_0x452a('0x1'))(_0x452a('0x2'));var moment=require(_0x452a('0x3'));var BPromise=require('bluebird');var rp=require(_0x452a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x452a('0x5'));var config=require('../../config/environment');var attributes=require(_0x452a('0x6'));module['exports']=function(_0x26f299,_0x288264){return _0x26f299[_0x452a('0x7')](_0x452a('0x8'),attributes,{'tableName':_0x452a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8931=['request-promise','path','rimraf','./userMailQueue.attributes','exports','UserMailQueue','user_has_mail_queues','lodash','util','../../config/logger','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8931,0x80));var _0x1893=function(_0x250fe6,_0x16ee65){_0x250fe6=_0x250fe6-0x0;var _0xe59cea=_0x8931[_0x250fe6];return _0xe59cea;};'use strict';var _=require(_0x1893('0x0'));var util=require(_0x1893('0x1'));var logger=require(_0x1893('0x2'))('api');var moment=require('moment');var BPromise=require(_0x1893('0x3'));var rp=require(_0x1893('0x4'));var fs=require('fs');var path=require(_0x1893('0x5'));var rimraf=require(_0x1893('0x6'));var config=require('../../config/environment');var attributes=require(_0x1893('0x7'));module[_0x1893('0x8')]=function(_0x2db153,_0x150f93){return _0x2db153['define'](_0x1893('0x9'),attributes,{'tableName':_0x1893('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bc5110f..69e6168 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ef6=['result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x13018a,_0x5ad3b9){var _0x18aa8f=function(_0x2707f2){while(--_0x2707f2){_0x13018a['push'](_0x13018a['shift']());}};_0x18aa8f(++_0x5ad3b9);}(_0x8ef6,0xf2));var _0x68ef=function(_0x3e94e1,_0x47fc8c){_0x3e94e1=_0x3e94e1-0x0;var _0xd0e9ac=_0x8ef6[_0x3e94e1];return _0xd0e9ac;};'use strict';var _=require(_0x68ef('0x0'));var util=require(_0x68ef('0x1'));var moment=require(_0x68ef('0x2'));var BPromise=require(_0x68ef('0x3'));var rs=require(_0x68ef('0x4'));var fs=require('fs');var Redis=require(_0x68ef('0x5'));var db=require(_0x68ef('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x68ef('0x7'))(_0x68ef('0x8'));var config=require(_0x68ef('0x9'));var jayson=require(_0x68ef('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3c2ff3,_0x4740e8,_0x2de776){return new BPromise(function(_0x4eb5eb,_0x228967){return client[_0x68ef('0xb')](_0x3c2ff3,_0x2de776)[_0x68ef('0xc')](function(_0x22ae26){logger[_0x68ef('0xd')](_0x68ef('0xe'),_0x4740e8,_0x68ef('0xf'));logger[_0x68ef('0x10')](_0x68ef('0x11'),_0x4740e8,_0x68ef('0xf'),JSON[_0x68ef('0x12')](_0x22ae26));if(_0x22ae26[_0x68ef('0x13')]){if(_0x22ae26['error'][_0x68ef('0x14')]===0x1f4){logger[_0x68ef('0x13')](_0x68ef('0xe'),_0x4740e8,_0x22ae26[_0x68ef('0x13')][_0x68ef('0x15')]);return _0x228967(_0x22ae26[_0x68ef('0x13')]['message']);}logger[_0x68ef('0x13')](_0x68ef('0xe'),_0x4740e8,_0x22ae26[_0x68ef('0x13')]['message']);return _0x4eb5eb(_0x22ae26[_0x68ef('0x13')][_0x68ef('0x15')]);}else{logger[_0x68ef('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x4740e8,_0x68ef('0xf'));_0x4eb5eb(_0x22ae26[_0x68ef('0x16')][_0x68ef('0x15')]);}})[_0x68ef('0x17')](function(_0x5c4456){logger[_0x68ef('0x13')]('UserMailQueue,\x20%s,\x20%s',_0x4740e8,_0x5c4456);_0x228967(_0x5c4456);});});}
\ No newline at end of file
+var _0x4b84=['../../config/logger','rpc','http','then','info','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','UserMailQueue,\x20%s,\x20%s','message','lodash','util','randomstring','../../config/utils'];(function(_0x227e12,_0x1b59e5){var _0x94acf0=function(_0x266b74){while(--_0x266b74){_0x227e12['push'](_0x227e12['shift']());}};_0x94acf0(++_0x1b59e5);}(_0x4b84,0x1cc));var _0x44b8=function(_0x200aa5,_0x197802){_0x200aa5=_0x200aa5-0x0;var _0x458200=_0x4b84[_0x200aa5];return _0x458200;};'use strict';var _=require(_0x44b8('0x0'));var util=require(_0x44b8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x44b8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x44b8('0x3'));var logger=require(_0x44b8('0x4'))(_0x44b8('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x44b8('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x54274b,_0x327f59,_0x5947f7){return new BPromise(function(_0x3e87c5,_0x5a2353){return client['request'](_0x54274b,_0x5947f7)[_0x44b8('0x7')](function(_0x42319d){logger[_0x44b8('0x8')]('UserMailQueue,\x20%s,\x20%s',_0x327f59,_0x44b8('0x9'));logger[_0x44b8('0xa')](_0x44b8('0xb'),_0x327f59,_0x44b8('0x9'),JSON[_0x44b8('0xc')](_0x42319d));if(_0x42319d[_0x44b8('0xd')]){if(_0x42319d[_0x44b8('0xd')]['code']===0x1f4){logger[_0x44b8('0xd')](_0x44b8('0xe'),_0x327f59,_0x42319d['error'][_0x44b8('0xf')]);return _0x5a2353(_0x42319d['error'][_0x44b8('0xf')]);}logger[_0x44b8('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x327f59,_0x42319d[_0x44b8('0xd')]['message']);return _0x3e87c5(_0x42319d['error'][_0x44b8('0xf')]);}else{logger[_0x44b8('0x8')](_0x44b8('0xe'),_0x327f59,_0x44b8('0x9'));_0x3e87c5(_0x42319d['result']['message']);}})['catch'](function(_0x3fe9fb){logger['error'](_0x44b8('0xe'),_0x327f59,_0x3fe9fb);_0x5a2353(_0x3fe9fb);});});}
\ No newline at end of file
index e18d5ed..965e999 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cee=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller','post','isAuthenticated','sendUserNotification','exports','multer','path','connect-timeout'];(function(_0x240772,_0x3d0f1b){var _0x4c245b=function(_0x79a3d9){while(--_0x79a3d9){_0x240772['push'](_0x240772['shift']());}};_0x4c245b(++_0x3d0f1b);}(_0x5cee,0x11b));var _0xe5ce=function(_0x12f688,_0x585c25){_0x12f688=_0x12f688-0x0;var _0x59c3de=_0x5cee[_0x12f688];return _0x59c3de;};'use strict';var multer=require(_0xe5ce('0x0'));var util=require('util');var path=require(_0xe5ce('0x1'));var timeout=require(_0xe5ce('0x2'));var express=require(_0xe5ce('0x3'));var router=express['Router']();var fs_extra=require(_0xe5ce('0x4'));var auth=require(_0xe5ce('0x5'));var interaction=require(_0xe5ce('0x6'));var config=require(_0xe5ce('0x7'));var controller=require(_0xe5ce('0x8'));router[_0xe5ce('0x9')]('/',auth[_0xe5ce('0xa')](),controller[_0xe5ce('0xb')]);module[_0xe5ce('0xc')]=router;
\ No newline at end of file
+var _0xfe75=['fs-extra','../../components/interaction/service','../../config/environment','./userNotification.controller','isAuthenticated','sendUserNotification','exports','multer','util','path','express'];(function(_0x5627e1,_0x1b2dbf){var _0x2f013f=function(_0x142015){while(--_0x142015){_0x5627e1['push'](_0x5627e1['shift']());}};_0x2f013f(++_0x1b2dbf);}(_0xfe75,0x96));var _0x5fe7=function(_0x27424e,_0x3fce3e){_0x27424e=_0x27424e-0x0;var _0x2e1ad7=_0xfe75[_0x27424e];return _0x2e1ad7;};'use strict';var multer=require(_0x5fe7('0x0'));var util=require(_0x5fe7('0x1'));var path=require(_0x5fe7('0x2'));var timeout=require('connect-timeout');var express=require(_0x5fe7('0x3'));var router=express['Router']();var fs_extra=require(_0x5fe7('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5fe7('0x5'));var config=require(_0x5fe7('0x6'));var controller=require(_0x5fe7('0x7'));router['post']('/',auth[_0x5fe7('0x8')](),controller[_0x5fe7('0x9')]);module[_0x5fe7('0xa')]=router;
\ No newline at end of file
index 83973c8..d80197c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdf3=['TEXT','STRING','BOOLEAN','sequelize','exports'];(function(_0x3fdf92,_0x5d139a){var _0x437c41=function(_0x236e0a){while(--_0x236e0a){_0x3fdf92['push'](_0x3fdf92['shift']());}};_0x437c41(++_0x5d139a);}(_0xfdf3,0x1e8));var _0x3fdf=function(_0xde589d,_0xcfa1c1){_0xde589d=_0xde589d-0x0;var _0x3053b5=_0xfdf3[_0xde589d];return _0x3053b5;};'use strict';var Sequelize=require(_0x3fdf('0x0'));module[_0x3fdf('0x1')]={'body':{'type':Sequelize[_0x3fdf('0x2')]},'senderName':{'type':Sequelize[_0x3fdf('0x3')]},'recipientsId':{'type':Sequelize['TEXT']},'recipientsDescription':{'type':Sequelize[_0x3fdf('0x3')]},'beep':{'type':Sequelize[_0x3fdf('0x4')]}};
\ No newline at end of file
+var _0xe0e0=['BOOLEAN','sequelize','exports','STRING','TEXT'];(function(_0x5dbba9,_0xba1f8e){var _0x4dcd1d=function(_0x49637d){while(--_0x49637d){_0x5dbba9['push'](_0x5dbba9['shift']());}};_0x4dcd1d(++_0xba1f8e);}(_0xe0e0,0x191));var _0x0e0e=function(_0xab6517,_0xe0a2f9){_0xab6517=_0xab6517-0x0;var _0x5333fd=_0xe0e0[_0xab6517];return _0x5333fd;};'use strict';var Sequelize=require(_0x0e0e('0x0'));module[_0x0e0e('0x1')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0x0e0e('0x2')]},'recipientsId':{'type':Sequelize[_0x0e0e('0x3')]},'recipientsDescription':{'type':Sequelize['STRING']},'beep':{'type':Sequelize[_0x0e0e('0x4')]}};
\ No newline at end of file
index bdee9c2..757351d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96a5=['reject','save','update','then','error','stack','name','send','body','hasOwnProperty','text','TemplateId','view','Sequelize','ValidationError','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','openchannelqueue','voicequeue','whatsappqueue','team','user','some','includes','model','toLowerCase','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','sortBy','join','create','forEach','recipient','emit','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','render','catch','startCase','User','ids','replace','queue','all','union','flatten','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./userNotification.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply'];(function(_0x4fa9b2,_0x5c7361){var _0x14a1af=function(_0xe00238){while(--_0xe00238){_0x4fa9b2['push'](_0x4fa9b2['shift']());}};_0x14a1af(++_0x5c7361);}(_0x96a5,0x160));var _0x596a=function(_0x1f2059,_0x503ca5){_0x1f2059=_0x1f2059-0x0;var _0x3df2f=_0x96a5[_0x1f2059];return _0x3df2f;};'use strict';var emlformat=require(_0x596a('0x0'));var rimraf=require(_0x596a('0x1'));var zipdir=require(_0x596a('0x2'));var jsonpatch=require(_0x596a('0x3'));var rp=require('request-promise');var moment=require(_0x596a('0x4'));var BPromise=require(_0x596a('0x5'));var Mustache=require(_0x596a('0x6'));var util=require('util');var path=require('path');var sox=require(_0x596a('0x7'));var csv=require('to-csv');var ejs=require(_0x596a('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x596a('0x9'));var squel=require(_0x596a('0xa'));var crypto=require(_0x596a('0xb'));var jsforce=require(_0x596a('0xc'));var deskjs=require(_0x596a('0xd'));var toCsv=require(_0x596a('0xe'));var querystring=require(_0x596a('0xf'));var Papa=require('papaparse');var Redis=require(_0x596a('0x10'));var authService=require(_0x596a('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x596a('0x12'));var hardwareService=require(_0x596a('0x13'));var logger=require(_0x596a('0x14'))(_0x596a('0x15'));var utils=require(_0x596a('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x596a('0x17'));var db=require(_0x596a('0x18'))['db'];config[_0x596a('0x19')]=_[_0x596a('0x1a')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x596a('0x1b'))(new Redis(config['redis']));require(_0x596a('0x1c'))[_0x596a('0x1d')](socket);function respondWithStatusCode(_0x7d3cd6,_0x4a0940){_0x4a0940=_0x4a0940||0xcc;return function(_0x5664c9){if(_0x5664c9){return _0x7d3cd6[_0x596a('0x1e')](_0x4a0940);}return _0x7d3cd6[_0x596a('0x1f')](_0x4a0940)[_0x596a('0x20')]();};}function respondWithResult(_0x97936c,_0x23b919){_0x23b919=_0x23b919||0xc8;return function(_0x456f28){if(_0x456f28){return _0x97936c[_0x596a('0x1f')](_0x23b919)[_0x596a('0x21')](_0x456f28);}};}function respondWithFilteredResult(_0x10f81b,_0x588bd4){return function(_0x32f169){if(_0x32f169){var _0x2c249d=typeof _0x588bd4[_0x596a('0x22')]===_0x596a('0x23')&&typeof _0x588bd4[_0x596a('0x24')]===_0x596a('0x23');var _0x341445=_0x32f169['count'];var _0x2203f8=_0x2c249d?0x0:_0x588bd4['offset'];var _0x20dde8=_0x2c249d?_0x32f169[_0x596a('0x25')]:_0x588bd4[_0x596a('0x22')]+_0x588bd4['limit'];var _0xbd4a;if(_0x20dde8>=_0x341445){_0x20dde8=_0x341445;_0xbd4a=0xc8;}else{_0xbd4a=0xce;}_0x10f81b[_0x596a('0x1f')](_0xbd4a);return _0x10f81b['set'](_0x596a('0x26'),_0x2203f8+'-'+_0x20dde8+'/'+_0x341445)['json'](_0x32f169);}return null;};}function patchUpdates(_0x247171){return function(_0x15fdc6){try{jsonpatch[_0x596a('0x27')](_0x15fdc6,_0x247171,!![]);}catch(_0x478ca4){return BPromise[_0x596a('0x28')](_0x478ca4);}return _0x15fdc6[_0x596a('0x29')]();};}function saveUpdates(_0x73f1d7,_0x52f079){return function(_0x5d21e9){if(_0x5d21e9){return _0x5d21e9[_0x596a('0x2a')](_0x73f1d7)[_0x596a('0x2b')](function(_0x2ed77a){return _0x2ed77a;});}return null;};}function removeEntity(_0x17f0f9,_0x495e9a){return function(_0x1f577a){if(_0x1f577a){return _0x1f577a['destroy']()[_0x596a('0x2b')](function(){_0x17f0f9[_0x596a('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4170a8,_0x532078){return function(_0x38fa58){if(!_0x38fa58){_0x4170a8[_0x596a('0x1e')](0x194);}return _0x38fa58;};}function handleError(_0x5f3797,_0x3dd401){_0x3dd401=_0x3dd401||0x1f4;return function(_0x125e52){logger[_0x596a('0x2c')](_0x125e52[_0x596a('0x2d')]);if(_0x125e52['name']){delete _0x125e52[_0x596a('0x2e')];}_0x5f3797[_0x596a('0x1f')](_0x3dd401)[_0x596a('0x2f')](_0x125e52);};}exports['sendUserNotification']=function(_0x4d6aef,_0x7231e2,_0x4246e1){if(!_0x4d6aef[_0x596a('0x30')][_0x596a('0x31')](_0x596a('0x32'))&&!_0x4d6aef[_0x596a('0x30')][_0x596a('0x31')]('TemplateId')){throw new db['Sequelize']['ValidationError']('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x4d6aef['body'][_0x596a('0x31')](_0x596a('0x33'))&&!_0x4d6aef[_0x596a('0x30')][_0x596a('0x31')](_0x596a('0x34'))){throw new db[(_0x596a('0x35'))][(_0x596a('0x36'))](_0x596a('0x37'));}if(!_0x4d6aef[_0x596a('0x30')][_0x596a('0x31')](_0x596a('0x38'))){throw new db['Sequelize'][(_0x596a('0x36'))](_0x596a('0x39'));}else{try{var _0x1ec5e9=JSON[_0x596a('0x3a')](_0x4d6aef[_0x596a('0x30')][_0x596a('0x38')]);}catch(_0x4396ad){logger[_0x596a('0x2c')](_0x4396ad);throw new db[(_0x596a('0x35'))]['ValidationError'](_0x596a('0x3b'));}var _0x37a4a5=[_0x596a('0x3c'),_0x596a('0x3d'),'mailqueue',_0x596a('0x3e'),'smsqueue',_0x596a('0x3f'),_0x596a('0x40'),_0x596a('0x41'),_0x596a('0x42')];if(_[_0x596a('0x43')](_0x1ec5e9,function(_0x39afc8){return!_[_0x596a('0x44')](_0x37a4a5,_0x39afc8[_0x596a('0x45')][_0x596a('0x46')]());})){throw new db[(_0x596a('0x35'))]['ValidationError']('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x278d51={};_0x278d51[_0x596a('0x47')]=_0x4d6aef['body'][_0x596a('0x31')]('senderName')?_0x4d6aef[_0x596a('0x30')][_0x596a('0x47')]:_0x4d6aef[_0x596a('0x42')][_0x596a('0x48')];_0x278d51[_0x596a('0x49')]=_[_0x596a('0x4a')](_0x4d6aef[_0x596a('0x30')][_0x596a('0x49')])?null:_0x4d6aef[_0x596a('0x30')][_0x596a('0x49')];_0x278d51[_0x596a('0x4b')]=_0x4d6aef[_0x596a('0x30')]['beep']||![];_0x278d51[_0x596a('0x4c')]=_0x4d6aef[_0x596a('0x42')]['id'];return getContent(_0x4d6aef[_0x596a('0x30')])[_0x596a('0x2b')](function(_0x4e8b30){_0x278d51[_0x596a('0x30')]=_0x4e8b30;return getRecipients(_0x1ec5e9);})[_0x596a('0x2b')](function(_0x2bec6c){_0x278d51['recipientsId']=_[_0x596a('0x4d')](_0x2bec6c)[_0x596a('0x4e')](',');return db['sequelize']['transaction'](function(_0x121fa7){return db['UserNotification'][_0x596a('0x4f')](_0x278d51,{'raw':!![],'transaction':_0x121fa7})['then'](function(_0x295d8c){var _0x34aa39={'sender':_0x278d51['senderName'],'description':_0x278d51[_0x596a('0x49')],'content':_0x278d51[_0x596a('0x30')],'beep':_0x278d51[_0x596a('0x4b')]};_0x2bec6c[_0x596a('0x50')](function(_0x12b7b7){_0x34aa39[_0x596a('0x51')]=_0x12b7b7;socket[_0x596a('0x52')]('userNotification:send',_0x34aa39);});return _0x295d8c;});});})[_0x596a('0x2b')](respondWithResult(_0x7231e2,0xc9))['catch'](handleError(_0x7231e2,null));};function getContent(_0x3ebc8a){return new BPromise(function(_0x2b1ec7,_0x8ec07b){if(_0x3ebc8a['text']){_0x2b1ec7(_0x3ebc8a['text']);return;}return db[_0x596a('0x53')][_0x596a('0x54')]({'attributes':[_0x596a('0x55')],'where':{'id':_0x3ebc8a[_0x596a('0x33')]},'raw':!![]})[_0x596a('0x2b')](function(_0xc4f926){if(!_0xc4f926)throw new db[(_0x596a('0x35'))][(_0x596a('0x36'))](_0x596a('0x56'));var _0x4a78d6=Mustache[_0x596a('0x57')](_0xc4f926[_0x596a('0x55')],_0x3ebc8a[_0x596a('0x34')]);_0x2b1ec7(_0x4a78d6);})[_0x596a('0x58')](function(_0x5684db){_0x8ec07b(_0x5684db);});});}function getRecipients(_0x31aa19){return new BPromise(function(_0x2f61f9,_0x39109d){var _0xefbc8=[];var _0x1a9d0d=[];_0x31aa19[_0x596a('0x50')](function(_0x4ee190){var _0x3a3718=_[_0x596a('0x59')](_0x4ee190[_0x596a('0x45')][_0x596a('0x46')]());if(_0x3a3718===_0x596a('0x5a')){_0xefbc8=_['union'](_0xefbc8,_0x4ee190[_0x596a('0x5b')]);}else{if(_[_0x596a('0x44')](_0x3a3718,'queue'))_0x3a3718=_0x3a3718[_0x596a('0x5c')](_0x596a('0x5d'),'Queue');_0x4ee190[_0x596a('0x5b')][_0x596a('0x50')](function(_0xffa322){_0x1a9d0d['push'](getAgents(_0x3a3718,_0xffa322));});}});return BPromise[_0x596a('0x5e')](_0x1a9d0d)[_0x596a('0x2b')](function(_0x3c7fc8){_0xefbc8=_[_0x596a('0x5f')](_0xefbc8,_[_0x596a('0x60')](_0x3c7fc8));_0x2f61f9(_0xefbc8);})[_0x596a('0x58')](function(_0x5880af){_0x39109d(_0x5880af);});});}function getAgents(_0x4185ce,_0x53f008){return new BPromise(function(_0x2673d7,_0x4ede76){return db[_0x4185ce][_0x596a('0x54')]({'where':{'id':_0x53f008}})[_0x596a('0x2b')](function(_0x2d908b){return _0x2d908b[_0x596a('0x61')]({'attributes':['id'],'raw':!![]})[_0x596a('0x2b')](function(_0x47c349){var _0x4aedcf=_['map'](_0x47c349,'id');_0x2673d7(_0x4aedcf);});})[_0x596a('0x58')](function(_0x51ef8a){_0x4ede76(_0x51ef8a);});});}
\ No newline at end of file
+var _0xa3ba=['map','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./userNotification.socket','register','sendStatus','status','end','json','offset','limit','undefined','Content-Range','apply','then','error','stack','name','send','hasOwnProperty','text','body','TemplateId','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','user','some','includes','toLowerCase','senderName','fullname','recipientsDescription','beep','SenderId','sortBy','join','sequelize','transaction','UserNotification','create','forEach','catch','Template','findOne','Invalid\x20\x27TemplateId\x27\x20parameter','view','startCase','model','User','union','ids','queue','Queue','push','all','flatten'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xa3ba,0x1e6));var _0xaa3b=function(_0x46a3ff,_0x470b9a){_0x46a3ff=_0x46a3ff-0x0;var _0x404bc2=_0xa3ba[_0x46a3ff];return _0x404bc2;};'use strict';var emlformat=require(_0xaa3b('0x0'));var rimraf=require(_0xaa3b('0x1'));var zipdir=require(_0xaa3b('0x2'));var jsonpatch=require(_0xaa3b('0x3'));var rp=require(_0xaa3b('0x4'));var moment=require(_0xaa3b('0x5'));var BPromise=require(_0xaa3b('0x6'));var Mustache=require(_0xaa3b('0x7'));var util=require('util');var path=require('path');var sox=require(_0xaa3b('0x8'));var csv=require(_0xaa3b('0x9'));var ejs=require(_0xaa3b('0xa'));var fs=require('fs');var fs_extra=require(_0xaa3b('0xb'));var _=require(_0xaa3b('0xc'));var squel=require(_0xaa3b('0xd'));var crypto=require(_0xaa3b('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xaa3b('0xf'));var toCsv=require(_0xaa3b('0x9'));var querystring=require(_0xaa3b('0x10'));var Papa=require(_0xaa3b('0x11'));var Redis=require(_0xaa3b('0x12'));var authService=require(_0xaa3b('0x13'));var qs=require(_0xaa3b('0x14'));var as=require(_0xaa3b('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xaa3b('0x16'))(_0xaa3b('0x17'));var utils=require('../../config/utils');var config=require(_0xaa3b('0x18'));var licenseUtil=require(_0xaa3b('0x19'));var db=require(_0xaa3b('0x1a'))['db'];config['redis']=_[_0xaa3b('0x1b')](config[_0xaa3b('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0xaa3b('0x1d'))(new Redis(config[_0xaa3b('0x1c')]));require(_0xaa3b('0x1e'))[_0xaa3b('0x1f')](socket);function respondWithStatusCode(_0x33b56d,_0x2687e4){_0x2687e4=_0x2687e4||0xcc;return function(_0x529e9f){if(_0x529e9f){return _0x33b56d[_0xaa3b('0x20')](_0x2687e4);}return _0x33b56d[_0xaa3b('0x21')](_0x2687e4)[_0xaa3b('0x22')]();};}function respondWithResult(_0x369ecd,_0x5b626e){_0x5b626e=_0x5b626e||0xc8;return function(_0x49588b){if(_0x49588b){return _0x369ecd[_0xaa3b('0x21')](_0x5b626e)[_0xaa3b('0x23')](_0x49588b);}};}function respondWithFilteredResult(_0x7bcfdd,_0x431300){return function(_0x4803da){if(_0x4803da){var _0x270ba7=typeof _0x431300[_0xaa3b('0x24')]==='undefined'&&typeof _0x431300[_0xaa3b('0x25')]===_0xaa3b('0x26');var _0x5660c0=_0x4803da['count'];var _0x659c5c=_0x270ba7?0x0:_0x431300['offset'];var _0x4a2f05=_0x270ba7?_0x4803da['count']:_0x431300[_0xaa3b('0x24')]+_0x431300[_0xaa3b('0x25')];var _0x1a2b16;if(_0x4a2f05>=_0x5660c0){_0x4a2f05=_0x5660c0;_0x1a2b16=0xc8;}else{_0x1a2b16=0xce;}_0x7bcfdd[_0xaa3b('0x21')](_0x1a2b16);return _0x7bcfdd['set'](_0xaa3b('0x27'),_0x659c5c+'-'+_0x4a2f05+'/'+_0x5660c0)[_0xaa3b('0x23')](_0x4803da);}return null;};}function patchUpdates(_0x4276ea){return function(_0x5cc8a4){try{jsonpatch[_0xaa3b('0x28')](_0x5cc8a4,_0x4276ea,!![]);}catch(_0x5e1701){return BPromise['reject'](_0x5e1701);}return _0x5cc8a4['save']();};}function saveUpdates(_0x241dd5,_0x5c993d){return function(_0xeab9a7){if(_0xeab9a7){return _0xeab9a7['update'](_0x241dd5)[_0xaa3b('0x29')](function(_0x1cf880){return _0x1cf880;});}return null;};}function removeEntity(_0x2810b8,_0x3b1060){return function(_0x1988cb){if(_0x1988cb){return _0x1988cb['destroy']()['then'](function(){_0x2810b8[_0xaa3b('0x21')](0xcc)[_0xaa3b('0x22')]();});}};}function handleEntityNotFound(_0xbe70de,_0x5c5ac8){return function(_0x36b964){if(!_0x36b964){_0xbe70de[_0xaa3b('0x20')](0x194);}return _0x36b964;};}function handleError(_0x4c1bb3,_0xcba75){_0xcba75=_0xcba75||0x1f4;return function(_0x2be4a4){logger[_0xaa3b('0x2a')](_0x2be4a4[_0xaa3b('0x2b')]);if(_0x2be4a4[_0xaa3b('0x2c')]){delete _0x2be4a4[_0xaa3b('0x2c')];}_0x4c1bb3[_0xaa3b('0x21')](_0xcba75)[_0xaa3b('0x2d')](_0x2be4a4);};}exports['sendUserNotification']=function(_0x4022ee,_0xa31272,_0x2e4916){if(!_0x4022ee['body'][_0xaa3b('0x2e')](_0xaa3b('0x2f'))&&!_0x4022ee[_0xaa3b('0x30')][_0xaa3b('0x2e')](_0xaa3b('0x31'))){throw new db[(_0xaa3b('0x32'))][(_0xaa3b('0x33'))](_0xaa3b('0x34'));}else{if(_0x4022ee[_0xaa3b('0x30')][_0xaa3b('0x2e')]('TemplateId')&&!_0x4022ee[_0xaa3b('0x30')][_0xaa3b('0x2e')]('view')){throw new db['Sequelize'][(_0xaa3b('0x33'))](_0xaa3b('0x35'));}if(!_0x4022ee['body'][_0xaa3b('0x2e')](_0xaa3b('0x36'))){throw new db['Sequelize'][(_0xaa3b('0x33'))](_0xaa3b('0x37'));}else{try{var _0x3a17e1=JSON[_0xaa3b('0x38')](_0x4022ee[_0xaa3b('0x30')][_0xaa3b('0x36')]);}catch(_0x48f7ed){logger[_0xaa3b('0x2a')](_0x48f7ed);throw new db[(_0xaa3b('0x32'))]['ValidationError'](_0xaa3b('0x39'));}var _0x2231c8=[_0xaa3b('0x3a'),'faxqueue',_0xaa3b('0x3b'),_0xaa3b('0x3c'),_0xaa3b('0x3d'),_0xaa3b('0x3e'),_0xaa3b('0x3f'),_0xaa3b('0x40'),_0xaa3b('0x41')];if(_[_0xaa3b('0x42')](_0x3a17e1,function(_0x2f2d92){return!_[_0xaa3b('0x43')](_0x2231c8,_0x2f2d92['model'][_0xaa3b('0x44')]());})){throw new db[(_0xaa3b('0x32'))][(_0xaa3b('0x33'))]('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x141d0c={};_0x141d0c[_0xaa3b('0x45')]=_0x4022ee[_0xaa3b('0x30')][_0xaa3b('0x2e')](_0xaa3b('0x45'))?_0x4022ee[_0xaa3b('0x30')][_0xaa3b('0x45')]:_0x4022ee[_0xaa3b('0x41')][_0xaa3b('0x46')];_0x141d0c['recipientsDescription']=_['isEmpty'](_0x4022ee[_0xaa3b('0x30')][_0xaa3b('0x47')])?null:_0x4022ee['body'][_0xaa3b('0x47')];_0x141d0c[_0xaa3b('0x48')]=_0x4022ee['body'][_0xaa3b('0x48')]||![];_0x141d0c[_0xaa3b('0x49')]=_0x4022ee[_0xaa3b('0x41')]['id'];return getContent(_0x4022ee[_0xaa3b('0x30')])[_0xaa3b('0x29')](function(_0x25a23f){_0x141d0c[_0xaa3b('0x30')]=_0x25a23f;return getRecipients(_0x3a17e1);})[_0xaa3b('0x29')](function(_0x1cf98c){_0x141d0c['recipientsId']=_[_0xaa3b('0x4a')](_0x1cf98c)[_0xaa3b('0x4b')](',');return db[_0xaa3b('0x4c')][_0xaa3b('0x4d')](function(_0x46ea5a){return db[_0xaa3b('0x4e')][_0xaa3b('0x4f')](_0x141d0c,{'raw':!![],'transaction':_0x46ea5a})[_0xaa3b('0x29')](function(_0x4c53c2){var _0x5ec87a={'sender':_0x141d0c['senderName'],'description':_0x141d0c['recipientsDescription'],'content':_0x141d0c[_0xaa3b('0x30')],'beep':_0x141d0c[_0xaa3b('0x48')]};_0x1cf98c[_0xaa3b('0x50')](function(_0x4277a5){_0x5ec87a['recipient']=_0x4277a5;socket['emit']('userNotification:send',_0x5ec87a);});return _0x4c53c2;});});})[_0xaa3b('0x29')](respondWithResult(_0xa31272,0xc9))[_0xaa3b('0x51')](handleError(_0xa31272,null));};function getContent(_0x373830){return new BPromise(function(_0x294b5e,_0x5d3910){if(_0x373830['text']){_0x294b5e(_0x373830[_0xaa3b('0x2f')]);return;}return db[_0xaa3b('0x52')][_0xaa3b('0x53')]({'attributes':['html'],'where':{'id':_0x373830[_0xaa3b('0x31')]},'raw':!![]})[_0xaa3b('0x29')](function(_0x5d6527){if(!_0x5d6527)throw new db[(_0xaa3b('0x32'))][(_0xaa3b('0x33'))](_0xaa3b('0x54'));var _0x5ca86d=Mustache['render'](_0x5d6527['html'],_0x373830[_0xaa3b('0x55')]);_0x294b5e(_0x5ca86d);})[_0xaa3b('0x51')](function(_0x1260b3){_0x5d3910(_0x1260b3);});});}function getRecipients(_0x461fa7){return new BPromise(function(_0x362bb6,_0x540af0){var _0x3803de=[];var _0xd629e1=[];_0x461fa7[_0xaa3b('0x50')](function(_0x2d78a5){var _0x3b9f11=_[_0xaa3b('0x56')](_0x2d78a5[_0xaa3b('0x57')][_0xaa3b('0x44')]());if(_0x3b9f11===_0xaa3b('0x58')){_0x3803de=_[_0xaa3b('0x59')](_0x3803de,_0x2d78a5[_0xaa3b('0x5a')]);}else{if(_[_0xaa3b('0x43')](_0x3b9f11,_0xaa3b('0x5b')))_0x3b9f11=_0x3b9f11['replace'](_0xaa3b('0x5b'),_0xaa3b('0x5c'));_0x2d78a5[_0xaa3b('0x5a')][_0xaa3b('0x50')](function(_0x9a436f){_0xd629e1[_0xaa3b('0x5d')](getAgents(_0x3b9f11,_0x9a436f));});}});return BPromise[_0xaa3b('0x5e')](_0xd629e1)[_0xaa3b('0x29')](function(_0x49f306){_0x3803de=_['union'](_0x3803de,_[_0xaa3b('0x5f')](_0x49f306));_0x362bb6(_0x3803de);})[_0xaa3b('0x51')](function(_0x33bb52){_0x540af0(_0x33bb52);});});}function getAgents(_0x5cbc1e,_0x4f7634){return new BPromise(function(_0x1ad9a9,_0xa3f6e8){return db[_0x5cbc1e][_0xaa3b('0x53')]({'where':{'id':_0x4f7634}})[_0xaa3b('0x29')](function(_0x595ba8){return _0x595ba8['getAgents']({'attributes':['id'],'raw':!![]})[_0xaa3b('0x29')](function(_0x2ac642){var _0x4b38ec=_[_0xaa3b('0x60')](_0x2ac642,'id');_0x1ad9a9(_0x4b38ec);});})[_0xaa3b('0x51')](function(_0x5579d8){_0xa3f6e8(_0x5579d8);});});}
\ No newline at end of file
index 370a32c..eddb0c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76db=['hasOwnProperty','events','../../mysqldb','UserNotification','setMaxListeners','save','update','remove','emit'];(function(_0x2e0642,_0x498c4f){var _0x3eb04f=function(_0x239236){while(--_0x239236){_0x2e0642['push'](_0x2e0642['shift']());}};_0x3eb04f(++_0x498c4f);}(_0x76db,0x1e7));var _0xb76d=function(_0x12d985,_0x140349){_0x12d985=_0x12d985-0x0;var _0x17ace0=_0x76db[_0x12d985];return _0x17ace0;};'use strict';var EventEmitter=require(_0xb76d('0x0'));var UserNotification=require(_0xb76d('0x1'))['db'][_0xb76d('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0xb76d('0x3')](0x0);var events={'afterCreate':_0xb76d('0x4'),'afterUpdate':_0xb76d('0x5'),'afterDestroy':_0xb76d('0x6')};function emitEvent(_0x41fd96){return function(_0x5f12a2,_0x2cd6b4,_0xfaedba){UserNotificationEvents[_0xb76d('0x7')](_0x41fd96+':'+_0x5f12a2['id'],_0x5f12a2);UserNotificationEvents[_0xb76d('0x7')](_0x41fd96,_0x5f12a2);_0xfaedba(null);};}for(var e in events){if(events[_0xb76d('0x8')](e)){var event=events[e];UserNotification['hook'](e,emitEvent(event));}}module['exports']=UserNotificationEvents;
\ No newline at end of file
+var _0xd7fd=['hook','exports','events','../../mysqldb','UserNotification','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x245462,_0x267eda){var _0xeb8bd7=function(_0x541cf8){while(--_0x541cf8){_0x245462['push'](_0x245462['shift']());}};_0xeb8bd7(++_0x267eda);}(_0xd7fd,0x9c));var _0xdd7f=function(_0x1e7345,_0x18bcce){_0x1e7345=_0x1e7345-0x0;var _0x33017c=_0xd7fd[_0x1e7345];return _0x33017c;};'use strict';var EventEmitter=require(_0xdd7f('0x0'));var UserNotification=require(_0xdd7f('0x1'))['db'][_0xdd7f('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0xdd7f('0x3')](0x0);var events={'afterCreate':_0xdd7f('0x4'),'afterUpdate':_0xdd7f('0x5'),'afterDestroy':_0xdd7f('0x6')};function emitEvent(_0x514b3f){return function(_0x42e65c,_0x620d21,_0x1276a6){UserNotificationEvents[_0xdd7f('0x7')](_0x514b3f+':'+_0x42e65c['id'],_0x42e65c);UserNotificationEvents[_0xdd7f('0x7')](_0x514b3f,_0x42e65c);_0x1276a6(null);};}for(var e in events){if(events[_0xdd7f('0x8')](e)){var event=events[e];UserNotification[_0xdd7f('0x9')](e,emitEvent(event));}}module[_0xdd7f('0xa')]=UserNotificationEvents;
\ No newline at end of file
index d3011cb..cd5b8f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b00=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','UserNotification','utf8mb4','utf8mb4_unicode_ci','lodash','util'];(function(_0x123f53,_0x24d769){var _0x300745=function(_0x2a485b){while(--_0x2a485b){_0x123f53['push'](_0x123f53['shift']());}};_0x300745(++_0x24d769);}(_0x2b00,0x1b0));var _0x02b0=function(_0x17f339,_0x1c4422){_0x17f339=_0x17f339-0x0;var _0x529dc2=_0x2b00[_0x17f339];return _0x529dc2;};'use strict';var _=require(_0x02b0('0x0'));var util=require(_0x02b0('0x1'));var logger=require(_0x02b0('0x2'))(_0x02b0('0x3'));var moment=require('moment');var BPromise=require(_0x02b0('0x4'));var rp=require(_0x02b0('0x5'));var fs=require('fs');var path=require(_0x02b0('0x6'));var rimraf=require(_0x02b0('0x7'));var config=require(_0x02b0('0x8'));var attributes=require('./userNotification.attributes');module[_0x02b0('0x9')]=function(_0x5a7c36,_0x4b8958){return _0x5a7c36[_0x02b0('0xa')](_0x02b0('0xb'),attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x02b0('0xc'),'collate':_0x02b0('0xd')});};
\ No newline at end of file
+var _0xcff4=['bluebird','request-promise','path','../../config/environment','./userNotification.attributes','define','UserNotification','utf8mb4_unicode_ci','util','moment'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xcff4,0x8a));var _0x4cff=function(_0x3e06ab,_0x37a6ee){_0x3e06ab=_0x3e06ab-0x0;var _0x1eda92=_0xcff4[_0x3e06ab];return _0x1eda92;};'use strict';var _=require('lodash');var util=require(_0x4cff('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x4cff('0x1'));var BPromise=require(_0x4cff('0x2'));var rp=require(_0x4cff('0x3'));var fs=require('fs');var path=require(_0x4cff('0x4'));var rimraf=require('rimraf');var config=require(_0x4cff('0x5'));var attributes=require(_0x4cff('0x6'));module['exports']=function(_0x1b65d5,_0x7b27fb){return _0x1b65d5[_0x4cff('0x7')](_0x4cff('0x8'),attributes,{'tableName':'userNotifications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x4cff('0x9')});};
\ No newline at end of file
index 44d8277..b9da13e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfca=['catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./userNotification.socket','request','info','UserNotification,\x20%s,\x20%s','request\x20sent','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','result'];(function(_0x223a12,_0x270b5e){var _0x2fc2e3=function(_0x23f89b){while(--_0x23f89b){_0x223a12['push'](_0x223a12['shift']());}};_0x2fc2e3(++_0x270b5e);}(_0xdfca,0x121));var _0xadfc=function(_0x1a9b0e,_0x4b5248){_0x1a9b0e=_0x1a9b0e-0x0;var _0x1ac4c4=_0xdfca[_0x1a9b0e];return _0x1ac4c4;};'use strict';var _=require(_0xadfc('0x0'));var util=require(_0xadfc('0x1'));var moment=require(_0xadfc('0x2'));var BPromise=require(_0xadfc('0x3'));var rs=require(_0xadfc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xadfc('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xadfc('0x6'))(_0xadfc('0x7'));var config=require('../../config/environment');var jayson=require(_0xadfc('0x8'));var client=jayson[_0xadfc('0x9')]['http']({'port':0x232a});config['redis']=_[_0xadfc('0xa')](config[_0xadfc('0xb')],{'host':_0xadfc('0xc'),'port':0x18eb});var socket=require(_0xadfc('0xd'))(new Redis(config[_0xadfc('0xb')]));require(_0xadfc('0xe'))['register'](socket);function respondWithRpcPromise(_0x514124,_0x3397f2,_0x190b17){return new BPromise(function(_0x1071f,_0x494fdc){return client[_0xadfc('0xf')](_0x514124,_0x190b17)['then'](function(_0x5786a9){logger[_0xadfc('0x10')](_0xadfc('0x11'),_0x3397f2,_0xadfc('0x12'));logger['debug'](_0xadfc('0x13'),_0x3397f2,_0xadfc('0x12'),JSON[_0xadfc('0x14')](_0x5786a9));if(_0x5786a9['error']){if(_0x5786a9[_0xadfc('0x15')]['code']===0x1f4){logger[_0xadfc('0x15')](_0xadfc('0x11'),_0x3397f2,_0x5786a9[_0xadfc('0x15')]['message']);return _0x494fdc(_0x5786a9['error']['message']);}logger[_0xadfc('0x15')]('UserNotification,\x20%s,\x20%s',_0x3397f2,_0x5786a9[_0xadfc('0x15')]['message']);return _0x1071f(_0x5786a9[_0xadfc('0x15')]['message']);}else{logger[_0xadfc('0x10')](_0xadfc('0x11'),_0x3397f2,_0xadfc('0x12'));_0x1071f(_0x5786a9[_0xadfc('0x16')]['message']);}})[_0xadfc('0x17')](function(_0x3a3961){logger[_0xadfc('0x15')](_0xadfc('0x11'),_0x3397f2,_0x3a3961);_0x494fdc(_0x3a3961);});});}
\ No newline at end of file
+var _0x302c=['../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x1de9f9,_0x234be1){var _0x151fad=function(_0x50c4e6){while(--_0x50c4e6){_0x1de9f9['push'](_0x1de9f9['shift']());}};_0x151fad(++_0x234be1);}(_0x302c,0x119));var _0xc302=function(_0x177469,_0x3026e6){_0x177469=_0x177469-0x0;var _0x479814=_0x302c[_0x177469];return _0x479814;};'use strict';var _=require(_0xc302('0x0'));var util=require(_0xc302('0x1'));var moment=require(_0xc302('0x2'));var BPromise=require(_0xc302('0x3'));var rs=require(_0xc302('0x4'));var fs=require('fs');var Redis=require(_0xc302('0x5'));var db=require(_0xc302('0x6'))['db'];var utils=require(_0xc302('0x7'));var logger=require('../../config/logger')(_0xc302('0x8'));var config=require(_0xc302('0x9'));var jayson=require(_0xc302('0xa'));var client=jayson[_0xc302('0xb')][_0xc302('0xc')]({'port':0x232a});config[_0xc302('0xd')]=_[_0xc302('0xe')](config[_0xc302('0xd')],{'host':_0xc302('0xf'),'port':0x18eb});var socket=require(_0xc302('0x10'))(new Redis(config['redis']));require('./userNotification.socket')[_0xc302('0x11')](socket);function respondWithRpcPromise(_0x19c71a,_0x48b821,_0x3af54f){return new BPromise(function(_0x1ab7a8,_0x5b14f5){return client[_0xc302('0x12')](_0x19c71a,_0x3af54f)[_0xc302('0x13')](function(_0x74bbb6){logger[_0xc302('0x14')](_0xc302('0x15'),_0x48b821,_0xc302('0x16'));logger['debug']('UserNotification,\x20%s,\x20%s,\x20%s',_0x48b821,'request\x20sent',JSON[_0xc302('0x17')](_0x74bbb6));if(_0x74bbb6[_0xc302('0x18')]){if(_0x74bbb6[_0xc302('0x18')][_0xc302('0x19')]===0x1f4){logger[_0xc302('0x18')]('UserNotification,\x20%s,\x20%s',_0x48b821,_0x74bbb6['error'][_0xc302('0x1a')]);return _0x5b14f5(_0x74bbb6[_0xc302('0x18')][_0xc302('0x1a')]);}logger[_0xc302('0x18')]('UserNotification,\x20%s,\x20%s',_0x48b821,_0x74bbb6['error']['message']);return _0x1ab7a8(_0x74bbb6['error'][_0xc302('0x1a')]);}else{logger[_0xc302('0x14')]('UserNotification,\x20%s,\x20%s',_0x48b821,_0xc302('0x16'));_0x1ab7a8(_0x74bbb6[_0xc302('0x1b')][_0xc302('0x1a')]);}})[_0xc302('0x1c')](function(_0x1fe4c2){logger[_0xc302('0x18')](_0xc302('0x15'),_0x48b821,_0x1fe4c2);_0x5b14f5(_0x1fe4c2);});});}
\ No newline at end of file
index ad43089..e089524 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3171=['./userNotification.events','remove','removeListener','register','length','userNotification:'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0x3171,0x72));var _0x1317=function(_0x34843e,_0x4c4224){_0x34843e=_0x34843e-0x0;var _0x598f7f=_0x3171[_0x34843e];return _0x598f7f;};'use strict';var UserNotificationEvents=require(_0x1317('0x0'));var events=['save',_0x1317('0x1'),'update'];function createListener(_0x6948f8,_0xb932d7){return function(_0x50ce4d){_0xb932d7['emit'](_0x6948f8,_0x50ce4d);};}function removeListener(_0x411130,_0x4da66f){return function(){UserNotificationEvents[_0x1317('0x2')](_0x411130,_0x4da66f);};}exports[_0x1317('0x3')]=function(_0x39bdb3){for(var _0x1e62e1=0x0,_0x58f611=events[_0x1317('0x4')];_0x1e62e1<_0x58f611;_0x1e62e1++){var _0x5768d8=events[_0x1e62e1];var _0x2efe11=createListener(_0x1317('0x5')+_0x5768d8,_0x39bdb3);UserNotificationEvents['on'](_0x5768d8,_0x2efe11);}};
\ No newline at end of file
+var _0x4b13=['emit','register','userNotification:','./userNotification.events','remove','update'];(function(_0x184cec,_0x49cfa7){var _0x270619=function(_0x57eddc){while(--_0x57eddc){_0x184cec['push'](_0x184cec['shift']());}};_0x270619(++_0x49cfa7);}(_0x4b13,0x111));var _0x34b1=function(_0x5d5729,_0xda66c4){_0x5d5729=_0x5d5729-0x0;var _0x18a799=_0x4b13[_0x5d5729];return _0x18a799;};'use strict';var UserNotificationEvents=require(_0x34b1('0x0'));var events=['save',_0x34b1('0x1'),_0x34b1('0x2')];function createListener(_0x53567f,_0x48c14e){return function(_0x25a213){_0x48c14e[_0x34b1('0x3')](_0x53567f,_0x25a213);};}function removeListener(_0x56c242,_0x5cb423){return function(){UserNotificationEvents['removeListener'](_0x56c242,_0x5cb423);};}exports[_0x34b1('0x4')]=function(_0x56984d){for(var _0x432b6c=0x0,_0x4b3e17=events['length'];_0x432b6c<_0x4b3e17;_0x432b6c++){var _0x596ce6=events[_0x432b6c];var _0x225b68=createListener(_0x34b1('0x5')+_0x596ce6,_0x56984d);UserNotificationEvents['on'](_0x596ce6,_0x225b68);}};
\ No newline at end of file
index db11c40..a405b9e 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(_0x3937b6,_0xd53d2b){var _0x1ba356=function(_0x4816cc){while(--_0x4816cc){_0x3937b6['push'](_0x3937b6['shift']());}};_0x1ba356(++_0xd53d2b);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x9c607a,_0x1cb2c6){var _0x3b1311=function(_0x1b3fec){while(--_0x1b3fec){_0x9c607a['push'](_0x9c607a['shift']());}};_0x3b1311(++_0x1cb2c6);}(_0x9c44,0x178));var _0x49c4=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0x9c44[_0x422905];return _0x33dc6c;};'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 5b4d28b..86dc8ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bbc=['sequelize','exports','INTEGER'];(function(_0x36f284,_0x24cbd1){var _0x4ea099=function(_0xea729e){while(--_0xea729e){_0x36f284['push'](_0x36f284['shift']());}};_0x4ea099(++_0x24cbd1);}(_0x7bbc,0x19e));var _0xc7bb=function(_0x5b080b,_0xe34631){_0x5b080b=_0x5b080b-0x0;var _0x3d724c=_0x7bbc[_0x5b080b];return _0x3d724c;};'use strict';var Sequelize=require(_0xc7bb('0x0'));module[_0xc7bb('0x1')]={'penalty':{'type':Sequelize[_0xc7bb('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb91a=['sequelize','INTEGER'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0xb91a,0x112));var _0xab91=function(_0x2c3da1,_0x41c553){_0x2c3da1=_0x2c3da1-0x0;var _0x48f25a=_0xb91a[_0x2c3da1];return _0x48f25a;};'use strict';var Sequelize=require(_0xab91('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xab91('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 0b85ece..357da00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x609c=['request-promise','rimraf','./userOpenchannelQueue.attributes','define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger','api','bluebird'];(function(_0x190ceb,_0x2345b2){var _0x5ce806=function(_0x432853){while(--_0x432853){_0x190ceb['push'](_0x190ceb['shift']());}};_0x5ce806(++_0x2345b2);}(_0x609c,0xd7));var _0xc609=function(_0x53f922,_0xdf3d82){_0x53f922=_0x53f922-0x0;var _0x10e076=_0x609c[_0x53f922];return _0x10e076;};'use strict';var _=require(_0xc609('0x0'));var util=require(_0xc609('0x1'));var logger=require(_0xc609('0x2'))(_0xc609('0x3'));var moment=require('moment');var BPromise=require(_0xc609('0x4'));var rp=require(_0xc609('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc609('0x6'));var config=require('../../config/environment');var attributes=require(_0xc609('0x7'));module['exports']=function(_0xf9498a,_0x35a720){return _0xf9498a[_0xc609('0x8')](_0xc609('0x9'),attributes,{'tableName':_0xc609('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x49c0=['define','UserOpenchannelQueue','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x1c22b2,_0x283e3c){var _0x1c8864=function(_0x347fed){while(--_0x347fed){_0x1c22b2['push'](_0x1c22b2['shift']());}};_0x1c8864(++_0x283e3c);}(_0x49c0,0x188));var _0x049c=function(_0x6d8784,_0x3bc8dd){_0x6d8784=_0x6d8784-0x0;var _0xad2f29=_0x49c0[_0x6d8784];return _0xad2f29;};'use strict';var _=require(_0x049c('0x0'));var util=require(_0x049c('0x1'));var logger=require(_0x049c('0x2'))(_0x049c('0x3'));var moment=require(_0x049c('0x4'));var BPromise=require(_0x049c('0x5'));var rp=require(_0x049c('0x6'));var fs=require('fs');var path=require(_0x049c('0x7'));var rimraf=require(_0x049c('0x8'));var config=require(_0x049c('0x9'));var attributes=require('./userOpenchannelQueue.attributes');module[_0x049c('0xa')]=function(_0x89b6ca,_0x4ccfbc){return _0x89b6ca[_0x049c('0xb')](_0x049c('0xc'),attributes,{'tableName':'user_has_openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d074ae5..eb45f49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb64a=['request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request','info','UserOpenchannelQueue,\x20%s,\x20%s'];(function(_0x1438f8,_0x39dee7){var _0x397744=function(_0x2a3d64){while(--_0x2a3d64){_0x1438f8['push'](_0x1438f8['shift']());}};_0x397744(++_0x39dee7);}(_0xb64a,0x8d));var _0xab64=function(_0xbac73b,_0x46260d){_0xbac73b=_0xbac73b-0x0;var _0x380fbc=_0xb64a[_0xbac73b];return _0x380fbc;};'use strict';var _=require(_0xab64('0x0'));var util=require(_0xab64('0x1'));var moment=require('moment');var BPromise=require(_0xab64('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xab64('0x3'));var db=require(_0xab64('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xab64('0x5'))(_0xab64('0x6'));var config=require(_0xab64('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xab64('0x8')][_0xab64('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x9de8f0,_0x3e37f1,_0x40e943){return new BPromise(function(_0x364a48,_0x269581){return client[_0xab64('0xa')](_0x9de8f0,_0x40e943)['then'](function(_0x39f0a9){logger[_0xab64('0xb')](_0xab64('0xc'),_0x3e37f1,_0xab64('0xd'));logger[_0xab64('0xe')](_0xab64('0xf'),_0x3e37f1,_0xab64('0xd'),JSON[_0xab64('0x10')](_0x39f0a9));if(_0x39f0a9[_0xab64('0x11')]){if(_0x39f0a9[_0xab64('0x11')][_0xab64('0x12')]===0x1f4){logger[_0xab64('0x11')](_0xab64('0xc'),_0x3e37f1,_0x39f0a9[_0xab64('0x11')][_0xab64('0x13')]);return _0x269581(_0x39f0a9[_0xab64('0x11')][_0xab64('0x13')]);}logger['error'](_0xab64('0xc'),_0x3e37f1,_0x39f0a9[_0xab64('0x11')][_0xab64('0x13')]);return _0x364a48(_0x39f0a9['error'][_0xab64('0x13')]);}else{logger[_0xab64('0xb')](_0xab64('0xc'),_0x3e37f1,_0xab64('0xd'));_0x364a48(_0x39f0a9[_0xab64('0x14')][_0xab64('0x13')]);}})[_0xab64('0x15')](function(_0x549ba8){logger[_0xab64('0x11')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x3e37f1,_0x549ba8);_0x269581(_0x549ba8);});});}
\ No newline at end of file
+var _0xd743=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','UserOpenchannelQueue,\x20%s,\x20%s','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x164d6f,_0x56f8c3){var _0x21777c=function(_0x4ff371){while(--_0x4ff371){_0x164d6f['push'](_0x164d6f['shift']());}};_0x21777c(++_0x56f8c3);}(_0xd743,0x17b));var _0x3d74=function(_0x237eb0,_0x3dcb7e){_0x237eb0=_0x237eb0-0x0;var _0x39e2c4=_0xd743[_0x237eb0];return _0x39e2c4;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3d74('0x0'));var BPromise=require('bluebird');var rs=require(_0x3d74('0x1'));var fs=require('fs');var Redis=require(_0x3d74('0x2'));var db=require(_0x3d74('0x3'))['db'];var utils=require(_0x3d74('0x4'));var logger=require(_0x3d74('0x5'))(_0x3d74('0x6'));var config=require(_0x3d74('0x7'));var jayson=require(_0x3d74('0x8'));var client=jayson[_0x3d74('0x9')][_0x3d74('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2e3829,_0x4314f0,_0x28ce6f){return new BPromise(function(_0x133d0e,_0x443100){return client[_0x3d74('0xb')](_0x2e3829,_0x28ce6f)[_0x3d74('0xc')](function(_0x21ef51){logger['info'](_0x3d74('0xd'),_0x4314f0,'request\x20sent');logger[_0x3d74('0xe')](_0x3d74('0xf'),_0x4314f0,_0x3d74('0x10'),JSON[_0x3d74('0x11')](_0x21ef51));if(_0x21ef51['error']){if(_0x21ef51[_0x3d74('0x12')][_0x3d74('0x13')]===0x1f4){logger['error'](_0x3d74('0xd'),_0x4314f0,_0x21ef51[_0x3d74('0x12')][_0x3d74('0x14')]);return _0x443100(_0x21ef51[_0x3d74('0x12')][_0x3d74('0x14')]);}logger['error']('UserOpenchannelQueue,\x20%s,\x20%s',_0x4314f0,_0x21ef51[_0x3d74('0x12')][_0x3d74('0x14')]);return _0x133d0e(_0x21ef51[_0x3d74('0x12')]['message']);}else{logger[_0x3d74('0x15')](_0x3d74('0xd'),_0x4314f0,_0x3d74('0x10'));_0x133d0e(_0x21ef51[_0x3d74('0x16')][_0x3d74('0x14')]);}})[_0x3d74('0x17')](function(_0x2a0449){logger[_0x3d74('0x12')](_0x3d74('0xd'),_0x4314f0,_0x2a0449);_0x443100(_0x2a0449);});});}
\ No newline at end of file
index 691ab57..bea9fad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c92=['./userProfile.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/sections','/:id/resources','getResources','post','create','/:id/clone','addSections','put','update','delete','destroy','removeResources','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x1b2255,_0x3de34f){var _0x33e57d=function(_0x2f9cce){while(--_0x2f9cce){_0x1b2255['push'](_0x1b2255['shift']());}};_0x33e57d(++_0x3de34f);}(_0x7c92,0x110));var _0x27c9=function(_0xf81f07,_0x1bf7b7){_0xf81f07=_0xf81f07-0x0;var _0x5810cc=_0x7c92[_0xf81f07];return _0x5810cc;};'use strict';var multer=require('multer');var util=require(_0x27c9('0x0'));var path=require(_0x27c9('0x1'));var timeout=require(_0x27c9('0x2'));var express=require(_0x27c9('0x3'));var router=express[_0x27c9('0x4')]();var fs_extra=require(_0x27c9('0x5'));var auth=require(_0x27c9('0x6'));var interaction=require(_0x27c9('0x7'));var config=require('../../config/environment');var controller=require(_0x27c9('0x8'));router[_0x27c9('0x9')]('/',auth['isAuthenticated'](),controller[_0x27c9('0xa')]);router['get'](_0x27c9('0xb'),auth[_0x27c9('0xc')](),controller[_0x27c9('0xd')]);router[_0x27c9('0x9')](_0x27c9('0xe'),auth[_0x27c9('0xc')](),controller[_0x27c9('0xf')]);router[_0x27c9('0x9')](_0x27c9('0x10'),auth[_0x27c9('0xc')](),controller['getSections']);router[_0x27c9('0x9')](_0x27c9('0x11'),auth[_0x27c9('0xc')](),controller[_0x27c9('0x12')]);router[_0x27c9('0x13')]('/',auth[_0x27c9('0xc')](),controller[_0x27c9('0x14')]);router[_0x27c9('0x13')](_0x27c9('0x15'),auth[_0x27c9('0xc')](),controller['clone']);router[_0x27c9('0x13')](_0x27c9('0x10'),auth[_0x27c9('0xc')](),controller[_0x27c9('0x16')]);router['post'](_0x27c9('0x11'),auth[_0x27c9('0xc')](),controller['addResources']);router[_0x27c9('0x17')](_0x27c9('0xe'),auth[_0x27c9('0xc')](),controller[_0x27c9('0x18')]);router[_0x27c9('0x19')](_0x27c9('0xe'),auth[_0x27c9('0xc')](),controller[_0x27c9('0x1a')]);router[_0x27c9('0x19')](_0x27c9('0x10'),auth['isAuthenticated'](),controller['removeSections']);router['delete']('/:id/resources',auth['isAuthenticated'](),controller[_0x27c9('0x1b')]);module['exports']=router;
\ No newline at end of file
+var _0x9a14=['get','isAuthenticated','index','/describe','describe','/:id','show','/:id/resources','getResources','post','create','/:id/clone','clone','addResources','put','update','destroy','delete','removeSections','removeResources','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x3fe95d,_0x463b02){var _0x5d96dc=function(_0x575662){while(--_0x575662){_0x3fe95d['push'](_0x3fe95d['shift']());}};_0x5d96dc(++_0x463b02);}(_0x9a14,0x1ab));var _0x49a1=function(_0x1213ab,_0x24f33d){_0x1213ab=_0x1213ab-0x0;var _0x44d26e=_0x9a14[_0x1213ab];return _0x44d26e;};'use strict';var multer=require(_0x49a1('0x0'));var util=require(_0x49a1('0x1'));var path=require(_0x49a1('0x2'));var timeout=require(_0x49a1('0x3'));var express=require(_0x49a1('0x4'));var router=express['Router']();var fs_extra=require(_0x49a1('0x5'));var auth=require(_0x49a1('0x6'));var interaction=require(_0x49a1('0x7'));var config=require('../../config/environment');var controller=require('./userProfile.controller');router[_0x49a1('0x8')]('/',auth[_0x49a1('0x9')](),controller[_0x49a1('0xa')]);router[_0x49a1('0x8')](_0x49a1('0xb'),auth[_0x49a1('0x9')](),controller[_0x49a1('0xc')]);router[_0x49a1('0x8')](_0x49a1('0xd'),auth[_0x49a1('0x9')](),controller[_0x49a1('0xe')]);router[_0x49a1('0x8')]('/:id/sections',auth['isAuthenticated'](),controller['getSections']);router['get'](_0x49a1('0xf'),auth[_0x49a1('0x9')](),controller[_0x49a1('0x10')]);router[_0x49a1('0x11')]('/',auth[_0x49a1('0x9')](),controller[_0x49a1('0x12')]);router[_0x49a1('0x11')](_0x49a1('0x13'),auth[_0x49a1('0x9')](),controller[_0x49a1('0x14')]);router['post']('/:id/sections',auth[_0x49a1('0x9')](),controller['addSections']);router[_0x49a1('0x11')]('/:id/resources',auth[_0x49a1('0x9')](),controller[_0x49a1('0x15')]);router[_0x49a1('0x16')](_0x49a1('0xd'),auth[_0x49a1('0x9')](),controller[_0x49a1('0x17')]);router['delete'](_0x49a1('0xd'),auth[_0x49a1('0x9')](),controller[_0x49a1('0x18')]);router[_0x49a1('0x19')]('/:id/sections',auth[_0x49a1('0x9')](),controller[_0x49a1('0x1a')]);router[_0x49a1('0x19')](_0x49a1('0xf'),auth[_0x49a1('0x9')](),controller[_0x49a1('0x1b')]);module[_0x49a1('0x1c')]=router;
\ No newline at end of file
index cd511a4..c258c85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d2c=['exports','STRING','name','crudPermissions','getDataValue','split','BOOLEAN','sequelize'];(function(_0x5a9c0c,_0x4ec485){var _0x53c77d=function(_0x1cf384){while(--_0x1cf384){_0x5a9c0c['push'](_0x5a9c0c['shift']());}};_0x53c77d(++_0x4ec485);}(_0x2d2c,0xa7));var _0xc2d2=function(_0x3d8d0a,_0x11bb87){_0x3d8d0a=_0x3d8d0a-0x0;var _0x5b9df5=_0x2d2c[_0x3d8d0a];return _0x5b9df5;};'use strict';var Sequelize=require(_0xc2d2('0x0'));module[_0xc2d2('0x1')]={'name':{'type':Sequelize[_0xc2d2('0x2')],'allowNull':![],'unique':_0xc2d2('0x3')},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x2dd67b){this['setDataValue'](_0xc2d2('0x4'),_0x2dd67b?_0x2dd67b['join'](''):[]);},'get':function(){return this[_0xc2d2('0x5')](_0xc2d2('0x4'))?this[_0xc2d2('0x5')](_0xc2d2('0x4'))[_0xc2d2('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0xc2d2('0x2')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0xc2d2('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0xc2d2('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0xc2d2('0x7')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0xc2d2('0x7')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0xc2d2('0x7')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0xc2d2('0x7')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0xc2d2('0x7')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x4489=['getDataValue','crudPermissions','BOOLEAN','sequelize','exports','STRING','setDataValue'];(function(_0x1969a7,_0x5a133a){var _0x3d665f=function(_0x39c64b){while(--_0x39c64b){_0x1969a7['push'](_0x1969a7['shift']());}};_0x3d665f(++_0x5a133a);}(_0x4489,0xe3));var _0x9448=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4489[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x9448('0x0'));module[_0x9448('0x1')]={'name':{'type':Sequelize[_0x9448('0x2')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize[_0x9448('0x2')],'set':function(_0x3b12ca){this[_0x9448('0x3')]('crudPermissions',_0x3b12ca?_0x3b12ca['join'](''):[]);},'get':function(){return this[_0x9448('0x4')]('crudPermissions')?this[_0x9448('0x4')](_0x9448('0x5'))['split'](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x9448('0x6')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x9448('0x6')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x9448('0x6')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x9448('0x6')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x9448('0x6')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x9448('0x6')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x9448('0x6')],'defaultValue':!![]}};
\ No newline at end of file
index e7e3984..13ca729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x608c=['offset','undefined','limit','set','save','update','destroy','then','sendStatus','stack','name','send','rawAttributes','query','keys','filters','intersection','model','attributes','fields','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','UserProfile','count','includeAll','include','findAll','rows','catch','params','length','find','create','body','clone','get','omit','createdAt','updatedAt','crudPermissions','sequelize','transaction','UserProfileSection','autoAssociation','UserProfileResource','map','sectionId','describe','addSections','userProfileId','each','Resources','push','removeSections','ids','enabled','isEmpty','includes','subsections','concat','findOne','forEach','resourceId','addResources','bulkCreate','removeResources','getResources','section','Missing\x20section\x20parameter','hasOwnProperty','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','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','redis','defaults','localhost','socket.io-emitter','register','status','end','json'];(function(_0x148019,_0x2e8418){var _0x3eb830=function(_0xe68fa5){while(--_0xe68fa5){_0x148019['push'](_0x148019['shift']());}};_0x3eb830(++_0x2e8418);}(_0x608c,0x1a1));var _0xc608=function(_0x11859d,_0x1c9f0e){_0x11859d=_0x11859d-0x0;var _0x6c172e=_0x608c[_0x11859d];return _0x6c172e;};'use strict';var emlformat=require(_0xc608('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc608('0x1'));var jsonpatch=require(_0xc608('0x2'));var rp=require(_0xc608('0x3'));var moment=require(_0xc608('0x4'));var BPromise=require(_0xc608('0x5'));var Mustache=require(_0xc608('0x6'));var util=require(_0xc608('0x7'));var path=require(_0xc608('0x8'));var sox=require(_0xc608('0x9'));var csv=require(_0xc608('0xa'));var ejs=require(_0xc608('0xb'));var fs=require('fs');var fs_extra=require(_0xc608('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xc608('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xc608('0xe'));var toCsv=require(_0xc608('0xa'));var querystring=require(_0xc608('0xf'));var Papa=require(_0xc608('0x10'));var Redis=require(_0xc608('0x11'));var authService=require(_0xc608('0x12'));var qs=require(_0xc608('0x13'));var as=require(_0xc608('0x14'));var hardwareService=require(_0xc608('0x15'));var logger=require(_0xc608('0x16'))(_0xc608('0x17'));var utils=require(_0xc608('0x18'));var config=require(_0xc608('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xc608('0x1a'))['db'];config[_0xc608('0x1b')]=_[_0xc608('0x1c')](config[_0xc608('0x1b')],{'host':_0xc608('0x1d'),'port':0x18eb});var socket=require(_0xc608('0x1e'))(new Redis(config[_0xc608('0x1b')]));require('./userProfile.socket')[_0xc608('0x1f')](socket);function respondWithStatusCode(_0x167918,_0x4a545d){_0x4a545d=_0x4a545d||0xcc;return function(_0x1c5453){if(_0x1c5453){return _0x167918['sendStatus'](_0x4a545d);}return _0x167918[_0xc608('0x20')](_0x4a545d)[_0xc608('0x21')]();};}function respondWithResult(_0x2f1a05,_0x5ae844){_0x5ae844=_0x5ae844||0xc8;return function(_0x12081a){if(_0x12081a){return _0x2f1a05[_0xc608('0x20')](_0x5ae844)[_0xc608('0x22')](_0x12081a);}};}function respondWithFilteredResult(_0x566bd3,_0x349d65){return function(_0x2d4a42){if(_0x2d4a42){var _0x108b73=typeof _0x349d65[_0xc608('0x23')]===_0xc608('0x24')&&typeof _0x349d65[_0xc608('0x25')]==='undefined';var _0x237af7=_0x2d4a42['count'];var _0x5e176a=_0x108b73?0x0:_0x349d65[_0xc608('0x23')];var _0x260b67=_0x108b73?_0x2d4a42['count']:_0x349d65[_0xc608('0x23')]+_0x349d65['limit'];var _0x54ed33;if(_0x260b67>=_0x237af7){_0x260b67=_0x237af7;_0x54ed33=0xc8;}else{_0x54ed33=0xce;}_0x566bd3[_0xc608('0x20')](_0x54ed33);return _0x566bd3[_0xc608('0x26')]('Content-Range',_0x5e176a+'-'+_0x260b67+'/'+_0x237af7)[_0xc608('0x22')](_0x2d4a42);}return null;};}function patchUpdates(_0x33dce0){return function(_0xd4d9e){try{jsonpatch['apply'](_0xd4d9e,_0x33dce0,!![]);}catch(_0x33f471){return BPromise['reject'](_0x33f471);}return _0xd4d9e[_0xc608('0x27')]();};}function saveUpdates(_0x2cbb3d,_0x1340cb){return function(_0x1eb0e8){if(_0x1eb0e8){return _0x1eb0e8[_0xc608('0x28')](_0x2cbb3d)['then'](function(_0x2af153){return _0x2af153;});}return null;};}function removeEntity(_0x33ea95,_0x1ed12d){return function(_0x1014c3){if(_0x1014c3){return _0x1014c3[_0xc608('0x29')]()[_0xc608('0x2a')](function(){_0x33ea95[_0xc608('0x20')](0xcc)[_0xc608('0x21')]();});}};}function handleEntityNotFound(_0x4af74e,_0xfd6ba2){return function(_0x2b23b1){if(!_0x2b23b1){_0x4af74e[_0xc608('0x2b')](0x194);}return _0x2b23b1;};}function handleError(_0x3993c6,_0x40b900){_0x40b900=_0x40b900||0x1f4;return function(_0x14182e){logger['error'](_0x14182e[_0xc608('0x2c')]);if(_0x14182e[_0xc608('0x2d')]){delete _0x14182e[_0xc608('0x2d')];}_0x3993c6[_0xc608('0x20')](_0x40b900)[_0xc608('0x2e')](_0x14182e);};}exports['index']=function(_0x39032f,_0x22f906){var _0x249501={},_0x2738cd={},_0x3489c5={'count':0x0,'rows':[]};var _0x3c2325=_['map'](db['UserProfile'][_0xc608('0x2f')],function(_0x4c39a9){return{'name':_0x4c39a9['fieldName'],'type':_0x4c39a9['type']['key']};});_0x2738cd['model']=_['map'](_0x3c2325,'name');_0x2738cd[_0xc608('0x30')]=_[_0xc608('0x31')](_0x39032f[_0xc608('0x30')]);_0x2738cd[_0xc608('0x32')]=_[_0xc608('0x33')](_0x2738cd[_0xc608('0x34')],_0x2738cd[_0xc608('0x30')]);_0x249501[_0xc608('0x35')]=_['intersection'](_0x2738cd[_0xc608('0x34')],qs[_0xc608('0x36')](_0x39032f['query'][_0xc608('0x36')]));_0x249501[_0xc608('0x35')]=_0x249501[_0xc608('0x35')]['length']?_0x249501[_0xc608('0x35')]:_0x2738cd['model'];if(!_0x39032f[_0xc608('0x30')]['hasOwnProperty'](_0xc608('0x37'))){_0x249501[_0xc608('0x25')]=qs[_0xc608('0x25')](_0x39032f[_0xc608('0x30')][_0xc608('0x25')]);_0x249501[_0xc608('0x23')]=qs[_0xc608('0x23')](_0x39032f['query'][_0xc608('0x23')]);}_0x249501['order']=qs[_0xc608('0x38')](_0x39032f[_0xc608('0x30')][_0xc608('0x38')]);_0x249501[_0xc608('0x39')]=qs[_0xc608('0x32')](_[_0xc608('0x3a')](_0x39032f[_0xc608('0x30')],_0x2738cd[_0xc608('0x32')]),_0x3c2325);if(_0x39032f['query'][_0xc608('0x3b')]){_0x249501[_0xc608('0x39')]=_[_0xc608('0x3c')](_0x249501[_0xc608('0x39')],{'$or':_['map'](_0x3c2325,function(_0x3eba2f){if(_0x3eba2f[_0xc608('0x3d')]!==_0xc608('0x3e')){var _0x235232={};_0x235232[_0x3eba2f[_0xc608('0x2d')]]={'$like':'%'+_0x39032f[_0xc608('0x30')][_0xc608('0x3b')]+'%'};return _0x235232;}})});}_0x249501=_['merge']({},_0x249501,_0x39032f[_0xc608('0x3f')]);var _0x28bcb4={'where':_0x249501[_0xc608('0x39')]};return db[_0xc608('0x40')]['count'](_0x28bcb4)['then'](function(_0x1a8724){_0x3489c5[_0xc608('0x41')]=_0x1a8724;if(_0x39032f['query'][_0xc608('0x42')]){_0x249501[_0xc608('0x43')]=[{'all':!![]}];}return db['UserProfile'][_0xc608('0x44')](_0x249501);})[_0xc608('0x2a')](function(_0x136f55){_0x3489c5[_0xc608('0x45')]=_0x136f55;return _0x3489c5;})[_0xc608('0x2a')](respondWithFilteredResult(_0x22f906,_0x249501))[_0xc608('0x46')](handleError(_0x22f906,null));};exports['show']=function(_0x1053b4,_0x100b1d){var _0x1ef94f={'raw':![],'where':{'id':_0x1053b4[_0xc608('0x47')]['id']}},_0x4618fc={};_0x4618fc['model']=_[_0xc608('0x31')](db[_0xc608('0x40')][_0xc608('0x2f')]);_0x4618fc[_0xc608('0x30')]=_[_0xc608('0x31')](_0x1053b4[_0xc608('0x30')]);_0x4618fc[_0xc608('0x32')]=_[_0xc608('0x33')](_0x4618fc[_0xc608('0x34')],_0x4618fc[_0xc608('0x30')]);_0x1ef94f[_0xc608('0x35')]=_[_0xc608('0x33')](_0x4618fc[_0xc608('0x34')],qs[_0xc608('0x36')](_0x1053b4[_0xc608('0x30')][_0xc608('0x36')]));_0x1ef94f[_0xc608('0x35')]=_0x1ef94f[_0xc608('0x35')][_0xc608('0x48')]?_0x1ef94f[_0xc608('0x35')]:_0x4618fc['model'];if(_0x1053b4['query'][_0xc608('0x42')]){_0x1ef94f[_0xc608('0x43')]=[{'all':!![]}];}_0x1ef94f=_['merge']({},_0x1ef94f,_0x1053b4[_0xc608('0x3f')]);return db[_0xc608('0x40')][_0xc608('0x49')](_0x1ef94f)['then'](handleEntityNotFound(_0x100b1d,null))['then'](respondWithResult(_0x100b1d,null))['catch'](handleError(_0x100b1d,null));};exports['create']=function(_0x27e700,_0x4c4102){return db[_0xc608('0x40')][_0xc608('0x4a')](_0x27e700[_0xc608('0x4b')],{})[_0xc608('0x2a')](respondWithResult(_0x4c4102,0xc9))[_0xc608('0x46')](handleError(_0x4c4102,null));};exports[_0xc608('0x4c')]=function(_0x1644c1,_0xcf30de){var _0xff1fc9={'where':{'id':_0x1644c1[_0xc608('0x47')]['id']}},_0x54c7dc={};_0x54c7dc[_0xc608('0x34')]=_[_0xc608('0x31')](db[_0xc608('0x40')][_0xc608('0x2f')]);_0xff1fc9['attributes']=_[_0xc608('0x33')](_0x54c7dc[_0xc608('0x34')],qs['fields'](_0x1644c1[_0xc608('0x30')][_0xc608('0x36')]));_0xff1fc9[_0xc608('0x35')]=_0xff1fc9[_0xc608('0x35')][_0xc608('0x48')]?_0xff1fc9[_0xc608('0x35')]:_0x54c7dc[_0xc608('0x34')];if(_0x1644c1['query'][_0xc608('0x42')]){_0xff1fc9[_0xc608('0x43')]=[{'all':!![]}];}_0xff1fc9=_[_0xc608('0x3c')]({},_0xff1fc9,_0x1644c1[_0xc608('0x3f')]);return db[_0xc608('0x40')]['find'](_0xff1fc9)[_0xc608('0x2a')](handleEntityNotFound(_0xcf30de,null))[_0xc608('0x2a')](function(_0x461675){if(_0x461675){var _0x2596bf=_0x461675[_0xc608('0x4d')]({'plain':!![]});_0x2596bf=qs[_0xc608('0x4e')](_0x2596bf,['id',_0xc608('0x4f'),_0xc608('0x50'),_0xc608('0x51')]);_0x1644c1['body']=_[_0xc608('0x4e')](_0x1644c1[_0xc608('0x4b')],['id','createdAt',_0xc608('0x50')]);return db[_0xc608('0x52')][_0xc608('0x53')](function(_0x3bf0d0){return db[_0xc608('0x40')][_0xc608('0x4a')](_[_0xc608('0x3c')](_0x2596bf,_0x1644c1[_0xc608('0x4b')]),{'include':_0x1644c1[_0xc608('0x30')][_0xc608('0x42')]?[{'all':!![]}]:undefined,'transaction':_0x3bf0d0})['then'](function(_0x1e20ec){var _0x48e70e=_0x1e20ec['get']({'plain':!![]});return db[_0xc608('0x54')][_0xc608('0x44')]({'where':{'userProfileId':_0x1644c1[_0xc608('0x47')]['id']},'raw':!![]})[_0xc608('0x2a')](function(_0x76176d){if(_0x76176d){return BPromise['each'](_0x76176d,function(_0x5bd524){return new BPromise(function(_0x5674a4,_0xe9a3e5){if(_0x5bd524['autoAssociation']===null||_0x5bd524[_0xc608('0x55')]===0x1)_0x5674a4(null);return db[_0xc608('0x56')][_0xc608('0x44')]({'where':{'sectionId':_0x5bd524['id']},'raw':!![]})[_0xc608('0x2a')](function(_0x211359){var _0x3fa13b=_[_0xc608('0x57')](_0x211359,function(_0x3105bb){return qs['omit'](_0x3105bb,['id',_0xc608('0x4f'),_0xc608('0x50'),_0xc608('0x58')]);});_0x5674a4(_0x3fa13b);})['catch'](function(_0x17003d){_0xe9a3e5(_0x17003d);});})[_0xc608('0x2a')](function(_0x28f5f9){var _0x1c39be=qs[_0xc608('0x4e')](_0x5bd524,['id',_0xc608('0x4f'),_0xc608('0x50')]);_0x1c39be['userProfileId']=_0x48e70e['id'];if(_0x28f5f9)_0x1c39be['Resources']=_0x28f5f9;return _0x1c39be;})[_0xc608('0x2a')](function(_0x3fc5f8){return db[_0xc608('0x54')][_0xc608('0x4a')](_0x3fc5f8,{'include':[{'model':db[_0xc608('0x56')],'as':'Resources'}],'raw':!![],'transaction':_0x3bf0d0});});})['then'](function(){return _0x48e70e;});}});});});}})['then'](respondWithResult(_0xcf30de,0xc9))[_0xc608('0x46')](handleError(_0xcf30de,null));};exports[_0xc608('0x28')]=function(_0x424c85,_0x343109){if(_0x424c85[_0xc608('0x4b')]['id']){delete _0x424c85[_0xc608('0x4b')]['id'];}return db[_0xc608('0x40')]['find']({'where':{'id':_0x424c85[_0xc608('0x47')]['id']}})[_0xc608('0x2a')](handleEntityNotFound(_0x343109,null))['then'](saveUpdates(_0x424c85[_0xc608('0x4b')],null))['then'](respondWithResult(_0x343109,null))[_0xc608('0x46')](handleError(_0x343109,null));};exports['destroy']=function(_0x566dbb,_0x3bb0b4){return db['UserProfile'][_0xc608('0x49')]({'where':{'id':_0x566dbb[_0xc608('0x47')]['id']}})[_0xc608('0x2a')](handleEntityNotFound(_0x3bb0b4,null))[_0xc608('0x2a')](removeEntity(_0x3bb0b4,null))[_0xc608('0x46')](handleError(_0x3bb0b4,null));};exports[_0xc608('0x59')]=function(_0x4e7bce,_0x28f858){return db['UserProfile'][_0xc608('0x59')]()[_0xc608('0x2a')](respondWithResult(_0x28f858,null))[_0xc608('0x46')](handleError(_0x28f858,null));};exports[_0xc608('0x5a')]=function(_0x2a03f2,_0xba5431){var _0xd7a38d=_0x2a03f2[_0xc608('0x4b')];return db['UserProfile'][_0xc608('0x49')]({'where':{'id':_0x2a03f2[_0xc608('0x47')]['id']}})[_0xc608('0x2a')](handleEntityNotFound(_0xba5431,null))[_0xc608('0x2a')](function(_0x2288b3){if(_0x2288b3){return db['sequelize'][_0xc608('0x53')](function(_0x5481d2){return db[_0xc608('0x54')][_0xc608('0x29')]({'where':{'userProfileId':_0x2a03f2[_0xc608('0x47')]['id'],'sectionId':_[_0xc608('0x57')](_0xd7a38d,function(_0x58a422){return _0x58a422['sectionId'];})},'transaction':_0x5481d2})['then'](function(){var _0x67c505=_[_0xc608('0x57')](_0xd7a38d,function(_0x41753a){_0x41753a[_0xc608('0x5b')]=_0x2a03f2[_0xc608('0x47')]['id'];return _0x41753a;});var _0x217338=[];return BPromise[_0xc608('0x5c')](_0x67c505,function(_0x1e1850){return db[_0xc608('0x54')]['create'](_0x1e1850,{'include':[{'model':db[_0xc608('0x56')],'as':_0xc608('0x5d')}],'raw':!![],'transaction':_0x5481d2})[_0xc608('0x2a')](function(_0x1018dc){_0x217338[_0xc608('0x5e')](_0x1018dc[_0xc608('0x4d')]({'plain':!![]}));});})[_0xc608('0x2a')](function(){return _0x217338;});});});}})[_0xc608('0x2a')](function(_0x57c634){return _0x57c634;})[_0xc608('0x2a')](respondWithResult(_0xba5431,null))[_0xc608('0x46')](handleError(_0xba5431,null));};exports[_0xc608('0x5f')]=function(_0x373e77,_0x10565e){var _0x4ac43c;return db[_0xc608('0x40')][_0xc608('0x49')]({'where':{'id':_0x373e77[_0xc608('0x47')]['id']},'attributes':['id',_0xc608('0x2d')]})['then'](handleEntityNotFound(_0x10565e,null))['then'](function(_0x1c2210){if(_0x1c2210){_0x4ac43c=_0x1c2210;return db['UserProfileSection'][_0xc608('0x29')]({'where':{'userProfileId':_0x373e77[_0xc608('0x47')]['id'],'sectionId':_0x373e77[_0xc608('0x30')][_0xc608('0x60')]}});}})['then'](function(){return _0x4ac43c;})[_0xc608('0x2a')](respondWithStatusCode(_0x10565e,null))[_0xc608('0x46')](handleError(_0x10565e,null));};exports['getSections']=function(_0x7bfb5b,_0x40fd78){var _0x11a550=[];var _0x5c999a=[];return db[_0xc608('0x54')][_0xc608('0x44')]({'where':{'userProfileId':_0x7bfb5b[_0xc608('0x47')]['id']},'raw':!![]})['then'](function(_0x3975a4){_0x11a550=_['filter'](_0x3975a4,function(_0x1934d1){return _0x1934d1[_0xc608('0x61')]===0x1||_['includes']([0x3eb,0x709],_0x1934d1[_0xc608('0x58')]);});if(!_[_0xc608('0x62')](_0x11a550)){return _[_0xc608('0x57')](_0x11a550,function(_0x1c4868){return _0x1c4868['sectionId'];});}else{return;}})['then'](function(_0x3ba385){if(_0x3ba385)_0x5c999a=_0x3ba385;if(_[_0xc608('0x63')](_0x5c999a,0x64)){var _0x501232=_[_0xc608('0x49')](_0x11a550,{'sectionId':0x64});return hasDefaultDashboard(_0x501232)[_0xc608('0x2a')](function(_0x37f1ce){return _[_0xc608('0x57')](_0x11a550,function(_0x510ba7){if(_0x510ba7[_0xc608('0x58')]===0x64){_0x510ba7['subsections']=_0x37f1ce;}return _0x510ba7;});});}else{return;}})[_0xc608('0x2a')](function(_0x3f9870){if(_0x3f9870)_0x11a550=_0x3f9870;if(_['includes'](_0x5c999a,0x3eb)){var _0x59aa2f=_[_0xc608('0x49')](_0x11a550,{'sectionId':0x3eb});return getCustomDashboards(_0x59aa2f)[_0xc608('0x2a')](function(_0x36b30e){return _[_0xc608('0x57')](_0x11a550,function(_0x2f2ef5){if(_0x59aa2f[_0xc608('0x61')]){if(_0x2f2ef5[_0xc608('0x58')]===0x3eb){_0x2f2ef5[_0xc608('0x64')]=_0x36b30e;}}else{if(_0x2f2ef5[_0xc608('0x58')]===0x64){if(!_0x2f2ef5[_0xc608('0x64')]){_0x2f2ef5['subsections']=[];}_0x2f2ef5[_0xc608('0x64')]=_0x2f2ef5[_0xc608('0x64')][_0xc608('0x65')](_0x36b30e);}}return _0x2f2ef5;});});}else{return;}})[_0xc608('0x2a')](function(_0x1e45d2){if(_0x1e45d2)_0x11a550=_0x1e45d2;if(_['includes'](_0x5c999a,0x709)){var _0x3d8f38=_[_0xc608('0x49')](_0x11a550,{'sectionId':0x709});return getPlugins(_0x3d8f38)[_0xc608('0x2a')](function(_0x3aa02b){if(_0x3d8f38['enabled']){return _[_0xc608('0x57')](_0x11a550,function(_0x59d3e8){if(_0x59d3e8[_0xc608('0x58')]===0x709){_0x59d3e8[_0xc608('0x64')]=_0x3aa02b;}return _0x59d3e8;});}else{var _0x4a4869={'sectionId':0x76c,'enabled':0x1,'subsections':_0x3aa02b};var _0x5c9ef7=_[_0xc608('0x57')](_0x11a550);_0x5c9ef7['push'](_0x4a4869);return _0x5c9ef7;}});}else{return;}})['then'](function(_0x33bd91){if(_0x33bd91)_0x11a550=_0x33bd91;return _['filter'](_0x11a550,['enabled',0x1]);})['then'](respondWithResult(_0x40fd78,null))[_0xc608('0x46')](handleError(_0x40fd78,null));};function hasDefaultDashboard(_0x1e2b64){var _0x516a3b=[0x65];return new BPromise(function(_0x1e7f6b,_0x4ce9db){try{if(_0x1e2b64[_0xc608('0x55')]){_0x1e7f6b(_0x516a3b);}else{return db[_0xc608('0x56')][_0xc608('0x66')]({'where':{'sectionId':_0x1e2b64['id']},'raw':!![]})[_0xc608('0x2a')](function(_0x30c8bb){_0x30c8bb?_0x1e7f6b(_0x516a3b):_0x1e7f6b();});}}catch(_0x1ce5c5){_0x4ce9db(_0x1ce5c5);}});}function getCustomDashboards(_0x3ae2fc){var _0x39ddb7=[];return new BPromise(function(_0x2e53a3,_0x2af28f){try{if(_0x3ae2fc['autoAssociation']){return db['Dashboard'][_0xc608('0x44')]({'raw':!![]})[_0xc608('0x2a')](function(_0x3a0f01){_0x3a0f01[_0xc608('0x67')](function(_0x38966f){_0x39ddb7[_0xc608('0x5e')](_0x38966f['id']+0x1869f);});_0x2e53a3(_0x39ddb7);});}else{return db[_0xc608('0x56')][_0xc608('0x44')]({'where':{'sectionId':_0x3ae2fc['id']},'raw':!![]})[_0xc608('0x2a')](function(_0x5875d1){_0x5875d1['forEach'](function(_0x364b2f){_0x39ddb7[_0xc608('0x5e')](_0x364b2f['resourceId']+0x1869f);});_0x2e53a3(_0x39ddb7);});}}catch(_0x418158){_0x2af28f(_0x418158);}});}function getPlugins(_0x3640f7){var _0x8bf0d=[];return new BPromise(function(_0x46442e,_0x53e0ae){try{if(_0x3640f7[_0xc608('0x55')]){return db['Plugin'][_0xc608('0x44')]({'raw':!![]})[_0xc608('0x2a')](function(_0x480fd3){_0x480fd3[_0xc608('0x67')](function(_0x452460){_0x8bf0d['push'](_0x452460['id']+0x15b38);});_0x46442e(_0x8bf0d);});}else{return db[_0xc608('0x56')][_0xc608('0x44')]({'where':{'sectionId':_0x3640f7['id']},'raw':!![]})[_0xc608('0x2a')](function(_0x462a6c){_0x462a6c['forEach'](function(_0x557c75){_0x8bf0d[_0xc608('0x5e')](_0x557c75[_0xc608('0x68')]+0x15b38);});_0x46442e(_0x8bf0d);});}}catch(_0x1fbc36){_0x53e0ae(_0x1fbc36);}});}exports[_0xc608('0x69')]=function(_0x3b8a44,_0x2d1bf8){return db[_0xc608('0x40')]['find']({'where':{'id':_0x3b8a44[_0xc608('0x47')]['id']}})['then'](handleEntityNotFound(_0x2d1bf8,null))[_0xc608('0x2a')](function(_0x3ab3fe){if(_0x3ab3fe){return db[_0xc608('0x52')][_0xc608('0x53')](function(_0x262f45){return db[_0xc608('0x54')][_0xc608('0x44')]({'where':{'userProfileId':_0x3b8a44[_0xc608('0x47')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0xbf4b98){if(_0xbf4b98){return db[_0xc608('0x54')]['destroy']({'where':{'userProfileId':_0x3b8a44[_0xc608('0x47')]['id'],'id':_[_0xc608('0x57')](_0xbf4b98,function(_0x33bd90){return _0x33bd90['id'];})},'transaction':_0x262f45});}})[_0xc608('0x2a')](function(_0x2337d3){var _0x35aa77=_[_0xc608('0x57')](_0x3b8a44[_0xc608('0x4b')],function(_0x435005){_0x435005[_0xc608('0x5b')]=_0x3b8a44['params']['id'];return _0x435005;});return db['UserProfileSection']['bulkCreate'](_0x35aa77,{'raw':!![],'transaction':_0x262f45});})[_0xc608('0x2a')](function(_0x1152b9){var _0x49b9b6=_[_0xc608('0x3b')](_[_0xc608('0x57')](_0x1152b9,function(_0x575788){return _0x575788[_0xc608('0x4d')]({'plain':!![]});}),{'includeAll':![]});if(_0x49b9b6){return db['UserProfileSection'][_0xc608('0x44')]({'where':{'userProfileId':_0x3b8a44[_0xc608('0x47')]['id'],'sectionId':_[_0xc608('0x57')](_0x49b9b6,function(_0x2254a1){return _0x2254a1['sectionId'];})},'attributes':['id',_0xc608('0x58')],'raw':!![]})['then'](function(_0xe3c4ed){var _0x1550f1=_[_0xc608('0x57')](_0x3b8a44[_0xc608('0x4b')],function(_0x3d1d38){_0x3d1d38[_0xc608('0x5b')]=_0x3b8a44['params']['id'];return _0x3d1d38;});return db[_0xc608('0x56')][_0xc608('0x6a')](_0x1550f1,{'raw':!![],'transaction':_0x262f45});});}})['catch'](handleError(_0x2d1bf8,null));});}})[_0xc608('0x2a')](function(_0x189d86){var _0x5a4dd2=_[_0xc608('0x57')](_0x189d86,function(_0x3f854d){return _0x3f854d[_0xc608('0x4d')]({'plain':!![]});});})['then'](respondWithResult(_0x2d1bf8,null))['catch'](handleError(_0x2d1bf8,null));};exports['removeResources']=function(_0x23e3e0,_0x3c2a3f,_0x2c5e5c){return db['UserProfile']['find']({'where':{'id':_0x23e3e0[_0xc608('0x47')]['id']}})[_0xc608('0x2a')](handleEntityNotFound(_0x3c2a3f,null))[_0xc608('0x2a')](function(_0x41d443){if(_0x41d443){return _0x41d443[_0xc608('0x6b')](_0x23e3e0['query']['ids']);}})[_0xc608('0x2a')](respondWithStatusCode(_0x3c2a3f,null))[_0xc608('0x46')](handleError(_0x3c2a3f,null));};exports[_0xc608('0x6c')]=function(_0xc23aaa,_0x5bd395){var _0x157ffa={};if(!_0xc23aaa['query'][_0xc608('0x6d')])throw new Error(_0xc608('0x6e'));if(!_0xc23aaa[_0xc608('0x30')][_0xc608('0x6f')](_0xc608('0x37'))){_0x157ffa[_0xc608('0x25')]=qs['limit'](_0xc23aaa[_0xc608('0x30')]['limit']);_0x157ffa[_0xc608('0x23')]=qs['offset'](_0xc23aaa[_0xc608('0x30')]['offset']);}return db[_0xc608('0x40')][_0xc608('0x49')]({'where':{'id':_0xc23aaa[_0xc608('0x47')]['id']}})[_0xc608('0x2a')](function(_0x32ed2a){if(!_0x32ed2a)throw new Error(_0xc608('0x70')+_0xc23aaa[_0xc608('0x47')]['id']);return db['UserProfile'][_0xc608('0x6c')](_0xc23aaa);})['then'](respondWithFilteredResult(_0x5bd395,_0x157ffa))['catch'](handleError(_0x5bd395,null));};
\ No newline at end of file
+var _0x71ca=['catch','show','params','keys','find','create','body','clone','get','omit','updatedAt','crudPermissions','sequelize','transaction','UserProfileSection','each','autoAssociation','UserProfileResource','sectionId','createdAt','userProfileId','Resources','describe','addSections','destroy','removeSections','getSections','enabled','includes','isEmpty','subsections','concat','Dashboard','push','forEach','resourceId','Plugin','addResources','bulkCreate','removeResources','ids','getResources','section','Missing\x20section\x20parameter','hasOwnProperty','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','end','status','undefined','limit','count','offset','set','json','update','then','error','name','send','index','map','UserProfile','rawAttributes','type','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows'];(function(_0x398b3b,_0x806e71){var _0x257faa=function(_0x1da04d){while(--_0x1da04d){_0x398b3b['push'](_0x398b3b['shift']());}};_0x257faa(++_0x806e71);}(_0x71ca,0xa0));var _0xa71c=function(_0x27ac03,_0x39f80d){_0x27ac03=_0x27ac03-0x0;var _0x48ec46=_0x71ca[_0x27ac03];return _0x48ec46;};'use strict';var emlformat=require(_0xa71c('0x0'));var rimraf=require(_0xa71c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa71c('0x2'));var rp=require('request-promise');var moment=require(_0xa71c('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa71c('0x4'));var util=require(_0xa71c('0x5'));var path=require(_0xa71c('0x6'));var sox=require(_0xa71c('0x7'));var csv=require(_0xa71c('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa71c('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xa71c('0xa'));var jsforce=require(_0xa71c('0xb'));var deskjs=require(_0xa71c('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa71c('0xd'));var Papa=require(_0xa71c('0xe'));var Redis=require(_0xa71c('0xf'));var authService=require(_0xa71c('0x10'));var qs=require(_0xa71c('0x11'));var as=require(_0xa71c('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa71c('0x13'))(_0xa71c('0x14'));var utils=require(_0xa71c('0x15'));var config=require(_0xa71c('0x16'));var licenseUtil=require(_0xa71c('0x17'));var db=require(_0xa71c('0x18'))['db'];config[_0xa71c('0x19')]=_[_0xa71c('0x1a')](config[_0xa71c('0x19')],{'host':_0xa71c('0x1b'),'port':0x18eb});var socket=require(_0xa71c('0x1c'))(new Redis(config['redis']));require('./userProfile.socket')[_0xa71c('0x1d')](socket);function respondWithStatusCode(_0x533a71,_0xd8c413){_0xd8c413=_0xd8c413||0xcc;return function(_0x257ff7){if(_0x257ff7){return _0x533a71[_0xa71c('0x1e')](_0xd8c413);}return _0x533a71['status'](_0xd8c413)[_0xa71c('0x1f')]();};}function respondWithResult(_0x2ed4c7,_0x605655){_0x605655=_0x605655||0xc8;return function(_0x105a5a){if(_0x105a5a){return _0x2ed4c7[_0xa71c('0x20')](_0x605655)['json'](_0x105a5a);}};}function respondWithFilteredResult(_0x51719a,_0x54363e){return function(_0x1490b1){if(_0x1490b1){var _0x43e72d=typeof _0x54363e['offset']===_0xa71c('0x21')&&typeof _0x54363e[_0xa71c('0x22')]===_0xa71c('0x21');var _0x64142f=_0x1490b1[_0xa71c('0x23')];var _0x4136b3=_0x43e72d?0x0:_0x54363e[_0xa71c('0x24')];var _0xdc12bd=_0x43e72d?_0x1490b1[_0xa71c('0x23')]:_0x54363e[_0xa71c('0x24')]+_0x54363e['limit'];var _0x443a48;if(_0xdc12bd>=_0x64142f){_0xdc12bd=_0x64142f;_0x443a48=0xc8;}else{_0x443a48=0xce;}_0x51719a[_0xa71c('0x20')](_0x443a48);return _0x51719a[_0xa71c('0x25')]('Content-Range',_0x4136b3+'-'+_0xdc12bd+'/'+_0x64142f)[_0xa71c('0x26')](_0x1490b1);}return null;};}function patchUpdates(_0x1013bf){return function(_0x2d08ca){try{jsonpatch['apply'](_0x2d08ca,_0x1013bf,!![]);}catch(_0x40b575){return BPromise['reject'](_0x40b575);}return _0x2d08ca['save']();};}function saveUpdates(_0x16e88b,_0x3b0116){return function(_0x3dd65d){if(_0x3dd65d){return _0x3dd65d[_0xa71c('0x27')](_0x16e88b)[_0xa71c('0x28')](function(_0x4c85a3){return _0x4c85a3;});}return null;};}function removeEntity(_0x1c2327,_0x2a7c14){return function(_0x1ce838){if(_0x1ce838){return _0x1ce838['destroy']()['then'](function(){_0x1c2327[_0xa71c('0x20')](0xcc)[_0xa71c('0x1f')]();});}};}function handleEntityNotFound(_0x68c2a0,_0x23de62){return function(_0xa44f78){if(!_0xa44f78){_0x68c2a0[_0xa71c('0x1e')](0x194);}return _0xa44f78;};}function handleError(_0x44bf25,_0x484188){_0x484188=_0x484188||0x1f4;return function(_0x567b2d){logger[_0xa71c('0x29')](_0x567b2d['stack']);if(_0x567b2d['name']){delete _0x567b2d[_0xa71c('0x2a')];}_0x44bf25[_0xa71c('0x20')](_0x484188)[_0xa71c('0x2b')](_0x567b2d);};}exports[_0xa71c('0x2c')]=function(_0xe5e4d8,_0x16c26e){var _0x3a00a4={},_0x38605b={},_0x4ab76b={'count':0x0,'rows':[]};var _0x595865=_[_0xa71c('0x2d')](db[_0xa71c('0x2e')][_0xa71c('0x2f')],function(_0x2ae455){return{'name':_0x2ae455['fieldName'],'type':_0x2ae455[_0xa71c('0x30')]['key']};});_0x38605b[_0xa71c('0x31')]=_[_0xa71c('0x2d')](_0x595865,'name');_0x38605b[_0xa71c('0x32')]=_['keys'](_0xe5e4d8[_0xa71c('0x32')]);_0x38605b[_0xa71c('0x33')]=_[_0xa71c('0x34')](_0x38605b[_0xa71c('0x31')],_0x38605b['query']);_0x3a00a4[_0xa71c('0x35')]=_[_0xa71c('0x34')](_0x38605b[_0xa71c('0x31')],qs[_0xa71c('0x36')](_0xe5e4d8[_0xa71c('0x32')][_0xa71c('0x36')]));_0x3a00a4['attributes']=_0x3a00a4[_0xa71c('0x35')][_0xa71c('0x37')]?_0x3a00a4[_0xa71c('0x35')]:_0x38605b[_0xa71c('0x31')];if(!_0xe5e4d8[_0xa71c('0x32')]['hasOwnProperty'](_0xa71c('0x38'))){_0x3a00a4['limit']=qs['limit'](_0xe5e4d8[_0xa71c('0x32')]['limit']);_0x3a00a4['offset']=qs[_0xa71c('0x24')](_0xe5e4d8['query'][_0xa71c('0x24')]);}_0x3a00a4[_0xa71c('0x39')]=qs['sort'](_0xe5e4d8['query'][_0xa71c('0x3a')]);_0x3a00a4[_0xa71c('0x3b')]=qs['filters'](_['pick'](_0xe5e4d8[_0xa71c('0x32')],_0x38605b[_0xa71c('0x33')]),_0x595865);if(_0xe5e4d8[_0xa71c('0x32')][_0xa71c('0x3c')]){_0x3a00a4[_0xa71c('0x3b')]=_[_0xa71c('0x3d')](_0x3a00a4['where'],{'$or':_[_0xa71c('0x2d')](_0x595865,function(_0x590a3a){if(_0x590a3a[_0xa71c('0x30')]!==_0xa71c('0x3e')){var _0x157be5={};_0x157be5[_0x590a3a[_0xa71c('0x2a')]]={'$like':'%'+_0xe5e4d8[_0xa71c('0x32')][_0xa71c('0x3c')]+'%'};return _0x157be5;}})});}_0x3a00a4=_['merge']({},_0x3a00a4,_0xe5e4d8[_0xa71c('0x3f')]);var _0x4e4c7c={'where':_0x3a00a4[_0xa71c('0x3b')]};return db['UserProfile']['count'](_0x4e4c7c)[_0xa71c('0x28')](function(_0x1b214e){_0x4ab76b[_0xa71c('0x23')]=_0x1b214e;if(_0xe5e4d8[_0xa71c('0x32')][_0xa71c('0x40')]){_0x3a00a4[_0xa71c('0x41')]=[{'all':!![]}];}return db[_0xa71c('0x2e')][_0xa71c('0x42')](_0x3a00a4);})[_0xa71c('0x28')](function(_0x5d852b){_0x4ab76b[_0xa71c('0x43')]=_0x5d852b;return _0x4ab76b;})[_0xa71c('0x28')](respondWithFilteredResult(_0x16c26e,_0x3a00a4))[_0xa71c('0x44')](handleError(_0x16c26e,null));};exports[_0xa71c('0x45')]=function(_0x47dc22,_0x4bbe79){var _0x464520={'raw':![],'where':{'id':_0x47dc22[_0xa71c('0x46')]['id']}},_0x9532aa={};_0x9532aa[_0xa71c('0x31')]=_[_0xa71c('0x47')](db['UserProfile'][_0xa71c('0x2f')]);_0x9532aa[_0xa71c('0x32')]=_[_0xa71c('0x47')](_0x47dc22[_0xa71c('0x32')]);_0x9532aa[_0xa71c('0x33')]=_[_0xa71c('0x34')](_0x9532aa[_0xa71c('0x31')],_0x9532aa[_0xa71c('0x32')]);_0x464520[_0xa71c('0x35')]=_[_0xa71c('0x34')](_0x9532aa[_0xa71c('0x31')],qs[_0xa71c('0x36')](_0x47dc22[_0xa71c('0x32')][_0xa71c('0x36')]));_0x464520[_0xa71c('0x35')]=_0x464520['attributes'][_0xa71c('0x37')]?_0x464520[_0xa71c('0x35')]:_0x9532aa[_0xa71c('0x31')];if(_0x47dc22['query'][_0xa71c('0x40')]){_0x464520[_0xa71c('0x41')]=[{'all':!![]}];}_0x464520=_['merge']({},_0x464520,_0x47dc22['options']);return db[_0xa71c('0x2e')][_0xa71c('0x48')](_0x464520)['then'](handleEntityNotFound(_0x4bbe79,null))['then'](respondWithResult(_0x4bbe79,null))['catch'](handleError(_0x4bbe79,null));};exports['create']=function(_0x2c2373,_0x4d01e4){return db[_0xa71c('0x2e')][_0xa71c('0x49')](_0x2c2373[_0xa71c('0x4a')],{})[_0xa71c('0x28')](respondWithResult(_0x4d01e4,0xc9))[_0xa71c('0x44')](handleError(_0x4d01e4,null));};exports[_0xa71c('0x4b')]=function(_0x288c51,_0x172598){var _0x3f9120={'where':{'id':_0x288c51[_0xa71c('0x46')]['id']}},_0x3faf4a={};_0x3faf4a[_0xa71c('0x31')]=_['keys'](db['UserProfile']['rawAttributes']);_0x3f9120[_0xa71c('0x35')]=_[_0xa71c('0x34')](_0x3faf4a['model'],qs['fields'](_0x288c51[_0xa71c('0x32')][_0xa71c('0x36')]));_0x3f9120[_0xa71c('0x35')]=_0x3f9120[_0xa71c('0x35')]['length']?_0x3f9120[_0xa71c('0x35')]:_0x3faf4a[_0xa71c('0x31')];if(_0x288c51[_0xa71c('0x32')][_0xa71c('0x40')]){_0x3f9120['include']=[{'all':!![]}];}_0x3f9120=_[_0xa71c('0x3d')]({},_0x3f9120,_0x288c51[_0xa71c('0x3f')]);return db['UserProfile'][_0xa71c('0x48')](_0x3f9120)['then'](handleEntityNotFound(_0x172598,null))[_0xa71c('0x28')](function(_0x5a4e83){if(_0x5a4e83){var _0x24e402=_0x5a4e83[_0xa71c('0x4c')]({'plain':!![]});_0x24e402=qs[_0xa71c('0x4d')](_0x24e402,['id','createdAt',_0xa71c('0x4e'),_0xa71c('0x4f')]);_0x288c51[_0xa71c('0x4a')]=_['omit'](_0x288c51[_0xa71c('0x4a')],['id','createdAt','updatedAt']);return db[_0xa71c('0x50')][_0xa71c('0x51')](function(_0x20f5f0){return db[_0xa71c('0x2e')]['create'](_['merge'](_0x24e402,_0x288c51['body']),{'include':_0x288c51[_0xa71c('0x32')][_0xa71c('0x40')]?[{'all':!![]}]:undefined,'transaction':_0x20f5f0})['then'](function(_0x5f2ad9){var _0x52c434=_0x5f2ad9['get']({'plain':!![]});return db[_0xa71c('0x52')][_0xa71c('0x42')]({'where':{'userProfileId':_0x288c51[_0xa71c('0x46')]['id']},'raw':!![]})[_0xa71c('0x28')](function(_0x17f29b){if(_0x17f29b){return BPromise[_0xa71c('0x53')](_0x17f29b,function(_0x4d23c3){return new BPromise(function(_0x2c37e3,_0x2acbed){if(_0x4d23c3[_0xa71c('0x54')]===null||_0x4d23c3[_0xa71c('0x54')]===0x1)_0x2c37e3(null);return db[_0xa71c('0x55')][_0xa71c('0x42')]({'where':{'sectionId':_0x4d23c3['id']},'raw':!![]})['then'](function(_0x29700b){var _0x2218ff=_[_0xa71c('0x2d')](_0x29700b,function(_0x43eeb6){return qs['omit'](_0x43eeb6,['id','createdAt',_0xa71c('0x4e'),_0xa71c('0x56')]);});_0x2c37e3(_0x2218ff);})[_0xa71c('0x44')](function(_0x3bfd71){_0x2acbed(_0x3bfd71);});})[_0xa71c('0x28')](function(_0xa8224c){var _0x397b8f=qs[_0xa71c('0x4d')](_0x4d23c3,['id',_0xa71c('0x57'),_0xa71c('0x4e')]);_0x397b8f[_0xa71c('0x58')]=_0x52c434['id'];if(_0xa8224c)_0x397b8f['Resources']=_0xa8224c;return _0x397b8f;})['then'](function(_0x36023e){return db[_0xa71c('0x52')][_0xa71c('0x49')](_0x36023e,{'include':[{'model':db[_0xa71c('0x55')],'as':_0xa71c('0x59')}],'raw':!![],'transaction':_0x20f5f0});});})[_0xa71c('0x28')](function(){return _0x52c434;});}});});});}})[_0xa71c('0x28')](respondWithResult(_0x172598,0xc9))['catch'](handleError(_0x172598,null));};exports['update']=function(_0xf012d2,_0x2ef04f){if(_0xf012d2['body']['id']){delete _0xf012d2[_0xa71c('0x4a')]['id'];}return db['UserProfile'][_0xa71c('0x48')]({'where':{'id':_0xf012d2[_0xa71c('0x46')]['id']}})[_0xa71c('0x28')](handleEntityNotFound(_0x2ef04f,null))[_0xa71c('0x28')](saveUpdates(_0xf012d2[_0xa71c('0x4a')],null))[_0xa71c('0x28')](respondWithResult(_0x2ef04f,null))[_0xa71c('0x44')](handleError(_0x2ef04f,null));};exports['destroy']=function(_0x4e61d2,_0x706868){return db[_0xa71c('0x2e')]['find']({'where':{'id':_0x4e61d2[_0xa71c('0x46')]['id']}})[_0xa71c('0x28')](handleEntityNotFound(_0x706868,null))['then'](removeEntity(_0x706868,null))['catch'](handleError(_0x706868,null));};exports[_0xa71c('0x5a')]=function(_0x399dae,_0x103584){return db[_0xa71c('0x2e')][_0xa71c('0x5a')]()[_0xa71c('0x28')](respondWithResult(_0x103584,null))[_0xa71c('0x44')](handleError(_0x103584,null));};exports[_0xa71c('0x5b')]=function(_0x15fc68,_0x41f460){var _0x415161=_0x15fc68[_0xa71c('0x4a')];return db[_0xa71c('0x2e')][_0xa71c('0x48')]({'where':{'id':_0x15fc68[_0xa71c('0x46')]['id']}})[_0xa71c('0x28')](handleEntityNotFound(_0x41f460,null))['then'](function(_0x40cd41){if(_0x40cd41){return db[_0xa71c('0x50')][_0xa71c('0x51')](function(_0x2c97a8){return db[_0xa71c('0x52')][_0xa71c('0x5c')]({'where':{'userProfileId':_0x15fc68[_0xa71c('0x46')]['id'],'sectionId':_['map'](_0x415161,function(_0x14d045){return _0x14d045[_0xa71c('0x56')];})},'transaction':_0x2c97a8})[_0xa71c('0x28')](function(){var _0x4639e4=_['map'](_0x415161,function(_0x141b5f){_0x141b5f[_0xa71c('0x58')]=_0x15fc68[_0xa71c('0x46')]['id'];return _0x141b5f;});var _0x39c2d5=[];return BPromise[_0xa71c('0x53')](_0x4639e4,function(_0x407cc0){return db[_0xa71c('0x52')]['create'](_0x407cc0,{'include':[{'model':db[_0xa71c('0x55')],'as':_0xa71c('0x59')}],'raw':!![],'transaction':_0x2c97a8})[_0xa71c('0x28')](function(_0x5afd4f){_0x39c2d5['push'](_0x5afd4f[_0xa71c('0x4c')]({'plain':!![]}));});})[_0xa71c('0x28')](function(){return _0x39c2d5;});});});}})['then'](function(_0x307c15){return _0x307c15;})[_0xa71c('0x28')](respondWithResult(_0x41f460,null))[_0xa71c('0x44')](handleError(_0x41f460,null));};exports[_0xa71c('0x5d')]=function(_0x22b29a,_0x3df272){var _0x57b89d;return db[_0xa71c('0x2e')][_0xa71c('0x48')]({'where':{'id':_0x22b29a['params']['id']},'attributes':['id','name']})['then'](handleEntityNotFound(_0x3df272,null))[_0xa71c('0x28')](function(_0x1e2355){if(_0x1e2355){_0x57b89d=_0x1e2355;return db[_0xa71c('0x52')][_0xa71c('0x5c')]({'where':{'userProfileId':_0x22b29a['params']['id'],'sectionId':_0x22b29a['query']['ids']}});}})[_0xa71c('0x28')](function(){return _0x57b89d;})[_0xa71c('0x28')](respondWithStatusCode(_0x3df272,null))[_0xa71c('0x44')](handleError(_0x3df272,null));};exports[_0xa71c('0x5e')]=function(_0x5ae998,_0x1e28ea){var _0x1e5386=[];var _0x37fd30=[];return db[_0xa71c('0x52')][_0xa71c('0x42')]({'where':{'userProfileId':_0x5ae998[_0xa71c('0x46')]['id']},'raw':!![]})[_0xa71c('0x28')](function(_0x5503d3){_0x1e5386=_[_0xa71c('0x3c')](_0x5503d3,function(_0x38f379){return _0x38f379[_0xa71c('0x5f')]===0x1||_[_0xa71c('0x60')]([0x3eb,0x709],_0x38f379[_0xa71c('0x56')]);});if(!_[_0xa71c('0x61')](_0x1e5386)){return _[_0xa71c('0x2d')](_0x1e5386,function(_0x3ee46f){return _0x3ee46f[_0xa71c('0x56')];});}else{return;}})[_0xa71c('0x28')](function(_0x13430d){if(_0x13430d)_0x37fd30=_0x13430d;if(_[_0xa71c('0x60')](_0x37fd30,0x64)){var _0x4dce11=_[_0xa71c('0x48')](_0x1e5386,{'sectionId':0x64});return hasDefaultDashboard(_0x4dce11)[_0xa71c('0x28')](function(_0x2fe2a9){return _['map'](_0x1e5386,function(_0x5463db){if(_0x5463db['sectionId']===0x64){_0x5463db[_0xa71c('0x62')]=_0x2fe2a9;}return _0x5463db;});});}else{return;}})['then'](function(_0xa97529){if(_0xa97529)_0x1e5386=_0xa97529;if(_[_0xa71c('0x60')](_0x37fd30,0x3eb)){var _0x2c77ae=_['find'](_0x1e5386,{'sectionId':0x3eb});return getCustomDashboards(_0x2c77ae)[_0xa71c('0x28')](function(_0x551ae1){return _[_0xa71c('0x2d')](_0x1e5386,function(_0x5b4089){if(_0x2c77ae[_0xa71c('0x5f')]){if(_0x5b4089[_0xa71c('0x56')]===0x3eb){_0x5b4089[_0xa71c('0x62')]=_0x551ae1;}}else{if(_0x5b4089[_0xa71c('0x56')]===0x64){if(!_0x5b4089[_0xa71c('0x62')]){_0x5b4089[_0xa71c('0x62')]=[];}_0x5b4089['subsections']=_0x5b4089[_0xa71c('0x62')][_0xa71c('0x63')](_0x551ae1);}}return _0x5b4089;});});}else{return;}})['then'](function(_0xf8352a){if(_0xf8352a)_0x1e5386=_0xf8352a;if(_[_0xa71c('0x60')](_0x37fd30,0x709)){var _0x50cda6=_[_0xa71c('0x48')](_0x1e5386,{'sectionId':0x709});return getPlugins(_0x50cda6)[_0xa71c('0x28')](function(_0x2545d4){if(_0x50cda6[_0xa71c('0x5f')]){return _[_0xa71c('0x2d')](_0x1e5386,function(_0x55a796){if(_0x55a796[_0xa71c('0x56')]===0x709){_0x55a796[_0xa71c('0x62')]=_0x2545d4;}return _0x55a796;});}else{var _0xbe49b0={'sectionId':0x76c,'enabled':0x1,'subsections':_0x2545d4};var _0x160bc3=_[_0xa71c('0x2d')](_0x1e5386);_0x160bc3['push'](_0xbe49b0);return _0x160bc3;}});}else{return;}})['then'](function(_0x2af7db){if(_0x2af7db)_0x1e5386=_0x2af7db;return _['filter'](_0x1e5386,[_0xa71c('0x5f'),0x1]);})['then'](respondWithResult(_0x1e28ea,null))[_0xa71c('0x44')](handleError(_0x1e28ea,null));};function hasDefaultDashboard(_0x1ac21d){var _0x4c34b7=[0x65];return new BPromise(function(_0x34a3a3,_0x38233d){try{if(_0x1ac21d[_0xa71c('0x54')]){_0x34a3a3(_0x4c34b7);}else{return db[_0xa71c('0x55')]['findOne']({'where':{'sectionId':_0x1ac21d['id']},'raw':!![]})['then'](function(_0x6f8c95){_0x6f8c95?_0x34a3a3(_0x4c34b7):_0x34a3a3();});}}catch(_0x427f5f){_0x38233d(_0x427f5f);}});}function getCustomDashboards(_0x2d4f6f){var _0x2bf9dd=[];return new BPromise(function(_0x540f62,_0x4e2451){try{if(_0x2d4f6f['autoAssociation']){return db[_0xa71c('0x64')][_0xa71c('0x42')]({'raw':!![]})[_0xa71c('0x28')](function(_0x1281ba){_0x1281ba['forEach'](function(_0x30f061){_0x2bf9dd[_0xa71c('0x65')](_0x30f061['id']+0x1869f);});_0x540f62(_0x2bf9dd);});}else{return db[_0xa71c('0x55')][_0xa71c('0x42')]({'where':{'sectionId':_0x2d4f6f['id']},'raw':!![]})['then'](function(_0x436a96){_0x436a96[_0xa71c('0x66')](function(_0x5c7597){_0x2bf9dd['push'](_0x5c7597[_0xa71c('0x67')]+0x1869f);});_0x540f62(_0x2bf9dd);});}}catch(_0x365734){_0x4e2451(_0x365734);}});}function getPlugins(_0xa6e937){var _0x54a27f=[];return new BPromise(function(_0x2edb86,_0x5ed6bd){try{if(_0xa6e937[_0xa71c('0x54')]){return db[_0xa71c('0x68')][_0xa71c('0x42')]({'raw':!![]})[_0xa71c('0x28')](function(_0x232ff6){_0x232ff6['forEach'](function(_0x4b807b){_0x54a27f[_0xa71c('0x65')](_0x4b807b['id']+0x15b38);});_0x2edb86(_0x54a27f);});}else{return db[_0xa71c('0x55')][_0xa71c('0x42')]({'where':{'sectionId':_0xa6e937['id']},'raw':!![]})[_0xa71c('0x28')](function(_0x2c36e8){_0x2c36e8['forEach'](function(_0x4c41fd){_0x54a27f[_0xa71c('0x65')](_0x4c41fd[_0xa71c('0x67')]+0x15b38);});_0x2edb86(_0x54a27f);});}}catch(_0x3e5e6b){_0x5ed6bd(_0x3e5e6b);}});}exports[_0xa71c('0x69')]=function(_0x35ae82,_0x4fa9d5){return db['UserProfile'][_0xa71c('0x48')]({'where':{'id':_0x35ae82[_0xa71c('0x46')]['id']}})['then'](handleEntityNotFound(_0x4fa9d5,null))[_0xa71c('0x28')](function(_0x5779d8){if(_0x5779d8){return db[_0xa71c('0x50')][_0xa71c('0x51')](function(_0x511ddb){return db[_0xa71c('0x52')][_0xa71c('0x42')]({'where':{'userProfileId':_0x35ae82[_0xa71c('0x46')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x3674a7){if(_0x3674a7){return db['UserProfileSection'][_0xa71c('0x5c')]({'where':{'userProfileId':_0x35ae82[_0xa71c('0x46')]['id'],'id':_[_0xa71c('0x2d')](_0x3674a7,function(_0x5669af){return _0x5669af['id'];})},'transaction':_0x511ddb});}})[_0xa71c('0x28')](function(_0x4bea3a){var _0x45e724=_['map'](_0x35ae82[_0xa71c('0x4a')],function(_0x2020c1){_0x2020c1[_0xa71c('0x58')]=_0x35ae82[_0xa71c('0x46')]['id'];return _0x2020c1;});return db[_0xa71c('0x52')][_0xa71c('0x6a')](_0x45e724,{'raw':!![],'transaction':_0x511ddb});})[_0xa71c('0x28')](function(_0x488b14){var _0x3bdabf=_['filter'](_[_0xa71c('0x2d')](_0x488b14,function(_0x5593d6){return _0x5593d6[_0xa71c('0x4c')]({'plain':!![]});}),{'includeAll':![]});if(_0x3bdabf){return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x35ae82[_0xa71c('0x46')]['id'],'sectionId':_['map'](_0x3bdabf,function(_0x51f99d){return _0x51f99d[_0xa71c('0x56')];})},'attributes':['id',_0xa71c('0x56')],'raw':!![]})[_0xa71c('0x28')](function(_0x2e5a06){var _0x522bc5=_[_0xa71c('0x2d')](_0x35ae82[_0xa71c('0x4a')],function(_0x5275ce){_0x5275ce[_0xa71c('0x58')]=_0x35ae82[_0xa71c('0x46')]['id'];return _0x5275ce;});return db[_0xa71c('0x55')][_0xa71c('0x6a')](_0x522bc5,{'raw':!![],'transaction':_0x511ddb});});}})['catch'](handleError(_0x4fa9d5,null));});}})[_0xa71c('0x28')](function(_0x4f6a34){var _0x13ae22=_['map'](_0x4f6a34,function(_0x42ec49){return _0x42ec49[_0xa71c('0x4c')]({'plain':!![]});});})[_0xa71c('0x28')](respondWithResult(_0x4fa9d5,null))[_0xa71c('0x44')](handleError(_0x4fa9d5,null));};exports[_0xa71c('0x6b')]=function(_0x207154,_0x20130f,_0x446cca){return db['UserProfile']['find']({'where':{'id':_0x207154['params']['id']}})[_0xa71c('0x28')](handleEntityNotFound(_0x20130f,null))['then'](function(_0x180582){if(_0x180582){return _0x180582[_0xa71c('0x6b')](_0x207154[_0xa71c('0x32')][_0xa71c('0x6c')]);}})[_0xa71c('0x28')](respondWithStatusCode(_0x20130f,null))[_0xa71c('0x44')](handleError(_0x20130f,null));};exports[_0xa71c('0x6d')]=function(_0x2e8052,_0x4aaa47){var _0x3e13db={};if(!_0x2e8052[_0xa71c('0x32')][_0xa71c('0x6e')])throw new Error(_0xa71c('0x6f'));if(!_0x2e8052[_0xa71c('0x32')][_0xa71c('0x70')](_0xa71c('0x38'))){_0x3e13db[_0xa71c('0x22')]=qs[_0xa71c('0x22')](_0x2e8052[_0xa71c('0x32')]['limit']);_0x3e13db['offset']=qs['offset'](_0x2e8052[_0xa71c('0x32')][_0xa71c('0x24')]);}return db[_0xa71c('0x2e')]['find']({'where':{'id':_0x2e8052[_0xa71c('0x46')]['id']}})[_0xa71c('0x28')](function(_0x1b1535){if(!_0x1b1535)throw new Error(_0xa71c('0x71')+_0x2e8052[_0xa71c('0x46')]['id']);return db[_0xa71c('0x2e')][_0xa71c('0x6d')](_0x2e8052);})[_0xa71c('0x28')](respondWithFilteredResult(_0x4aaa47,_0x3e13db))[_0xa71c('0x44')](handleError(_0x4aaa47,null));};
\ No newline at end of file
index 96b0d81..01eb46c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['UserProfile','setMaxListeners','update','remove','emit','exports','events','../../mysqldb'];(function(_0x3c94ff,_0x131d63){var _0x3bf70b=function(_0x3d0eed){while(--_0x3d0eed){_0x3c94ff['push'](_0x3c94ff['shift']());}};_0x3bf70b(++_0x131d63);}(_0xdb28,0x106));var _0x8db2=function(_0x115dda,_0x3ec2ba){_0x115dda=_0x115dda-0x0;var _0x4e4e3d=_0xdb28[_0x115dda];return _0x4e4e3d;};'use strict';var EventEmitter=require(_0x8db2('0x0'));var UserProfile=require(_0x8db2('0x1'))['db'][_0x8db2('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x8db2('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x8db2('0x4'),'afterDestroy':_0x8db2('0x5')};function emitEvent(_0xfcf49f){return function(_0x4426fe,_0x11109e,_0x52bf99){UserProfileEvents[_0x8db2('0x6')](_0xfcf49f+':'+_0x4426fe['id'],_0x4426fe);UserProfileEvents[_0x8db2('0x6')](_0xfcf49f,_0x4426fe);_0x52bf99(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserProfile['hook'](e,emitEvent(event));}}module[_0x8db2('0x7')]=UserProfileEvents;
\ No newline at end of file
+var _0x41ec=['hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save','remove','emit'];(function(_0x2ec14d,_0x366300){var _0x51b41e=function(_0x100929){while(--_0x100929){_0x2ec14d['push'](_0x2ec14d['shift']());}};_0x51b41e(++_0x366300);}(_0x41ec,0x143));var _0xc41e=function(_0x3d6438,_0x433816){_0x3d6438=_0x3d6438-0x0;var _0x1a899a=_0x41ec[_0x3d6438];return _0x1a899a;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0xc41e('0x0'))['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0xc41e('0x1')](0x0);var events={'afterCreate':_0xc41e('0x2'),'afterUpdate':'update','afterDestroy':_0xc41e('0x3')};function emitEvent(_0x19ed31){return function(_0xd3f764,_0xf79325,_0xaa14e8){UserProfileEvents[_0xc41e('0x4')](_0x19ed31+':'+_0xd3f764['id'],_0xd3f764);UserProfileEvents[_0xc41e('0x4')](_0x19ed31,_0xd3f764);_0xaa14e8(null);};}for(var e in events){if(events[_0xc41e('0x5')](e)){var event=events[e];UserProfile[_0xc41e('0x6')](e,emitEvent(event));}}module[_0xc41e('0x7')]=UserProfileEvents;
\ No newline at end of file
index 11a638c..eb2d109 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc12=['Tags','color','tag','openTabs','chat','dataValues','sms','fax','mail','openchannel','whatsapp','lodash','./userProfile.attributes','squel','exports','models','filter','field','value','associatedResources','catch','findAll','then','map','name','resolve','resourceId','toLowerCase','childModel','SquareProject','odbc','SquareOdbc','SquareRecording','parentSections','SquareProjects','projectName','JscriptyProject','contacts','CmContact','Lists','lists','CmList','companies','CmCompany','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','faxqueues','FaxQueue','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceExtension','voicemails','VoiceMail','VoiceRecording','membername','role','agent','telephone','VoiceQueues','queue','type','QueueCampaigns','VoiceQueue','outbound','musiconholds','VoiceMusicOnHold','chanspies','ivrcampaigns','Campaign','mailaccounts','MailAccount','mailsubstatuses','MailSubstatus','OpenchannelQueue','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','teams','Team','voicequeues','queuecampaigns','users','User','Users','admin','user','Agents','Telephones','zendeskaccounts','salesforceaccounts','SalesforceAccount','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','customdashboards','Dashboard','intervals','pauses','Pause','scheduler','Schedule','sounds','Sound','tags','templates','Template','triggers','Trigger','Trunk','Variable','plugins','Plugin','extractedreports','AnalyticExtractedReport','Reports','metrics','AnalyticMetric','charAt','toUpperCase','slice','Sequelize','QueryTypes','SELECT','ui.createdAt','from','user_has_','_interactions','where','sequelize','toString','OpenTabs','define','UserProfile','user_profiles','../../components/parsers/qs','query','raw','section','mergeResources','Invalid\x20section\x20\x27','length','push','UserProfileSection','params','all','ignore','isEmpty','union','find','model','rawAttributes','keys','intersection','attributes','fields','hasOwnProperty','nolimit','limit','offset','order','sort','filters','merge','key','VIRTUAL','foreignKey','forEach','options','autoAssociation','includeAll','include','default','reportId','DefaultReports','custom','rows','ids','customSorting','extraQueryConditions','count','Tag'];(function(_0x291d3f,_0x3ef99f){var _0x242080=function(_0x257705){while(--_0x257705){_0x291d3f['push'](_0x291d3f['shift']());}};_0x242080(++_0x3ef99f);}(_0xbc12,0x199));var _0x2bc1=function(_0xdbfe11,_0x5cfa1e){_0xdbfe11=_0xdbfe11-0x0;var _0x28438d=_0xbc12[_0xdbfe11];return _0x28438d;};'use strict';var _=require(_0x2bc1('0x0'));var attributes=require(_0x2bc1('0x1'));var squel=require(_0x2bc1('0x2'));module[_0x2bc1('0x3')]=function(_0xeef25c){var _0x134525=_0xeef25c[_0x2bc1('0x4')];function _0x124c25(_0x370344,_0x392078){return new Promise(function(_0x2c2bc5,_0x10fe39){if(!_0x392078)return _0x2c2bc5(null);var _0x3427c3=_0x392078[_0x2bc1('0x5')]?{[_0x392078['filter'][_0x2bc1('0x6')]]:_0x392078['filter'][_0x2bc1('0x7')]}:undefined;return _0x134525[_0x370344]['findAll']({'where':_0x3427c3,'raw':!![]})['then'](function(_0x1c0266){_0x392078[_0x2bc1('0x8')]=_['map'](_0x1c0266,'id');_0x2c2bc5(_0x392078);})[_0x2bc1('0x9')](function(_0x56cb7b){_0x10fe39(_0x56cb7b);});});}function _0x568c6c(_0x5a4a11,_0x30c616){return new Promise(function(_0x15601a,_0x293c92){var _0x30b356=_0x5a4a11[_0x2bc1('0x5')]?{[_0x5a4a11['filter'][_0x2bc1('0x6')]]:_0x5a4a11[_0x2bc1('0x5')][_0x2bc1('0x7')]}:undefined;return _0x134525[_0x5a4a11['model']][_0x2bc1('0xa')]({'where':_0x30b356,'raw':!![]})[_0x2bc1('0xb')](function(_0x12166d){_0x30c616[_0x2bc1('0x8')]=_[_0x2bc1('0xc')](_0x12166d,function(_0x237874){return _0x237874[_0x2bc1('0xd')];});_0x15601a(_0x30c616);})[_0x2bc1('0x9')](function(_0x2c5af4){_0x293c92(_0x2c5af4);});});}function _0x93e268(_0x42518c,_0x37ad1c,_0x117497){if(!_0x37ad1c)return Promise[_0x2bc1('0xe')](null);return new Promise(function(_0x58f845,_0x5117f1){return _0x134525['UserProfileResource'][_0x2bc1('0xa')]({'where':{'sectionId':_0x37ad1c['id']},'raw':!![]})[_0x2bc1('0xb')](function(_0x3a570f){if(_0x42518c[_0x2bc1('0x6')]&&_0x42518c['field']!=='id'){_0x37ad1c[_0x2bc1('0x8')]=_[_0x2bc1('0xc')](_0x3a570f,function(_0x1ef36d){return _0x1ef36d[_0x42518c[_0x2bc1('0x6')]];});}else{if(_0x117497==='AnalyticExtractedReport'){_0x37ad1c['associatedResources']=_[_0x2bc1('0xc')](_0x3a570f,function(_0x12b9be){return{'id':_0x12b9be[_0x2bc1('0xf')],'type':_0x12b9be['type']};});}else{_0x37ad1c[_0x2bc1('0x8')]=_[_0x2bc1('0xc')](_0x3a570f,function(_0x484db6){return _0x484db6['resourceId'];});}}_0x58f845(_0x37ad1c);})[_0x2bc1('0x9')](function(_0x22a67d){_0x5117f1(_0x22a67d);});});}function _0x3383da(_0x5c0706,_0x1b872c){var _0x1db349={'parentSections':[]};switch(_0x5c0706[_0x2bc1('0x10')]()){case'squareprojects':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x12');break;case _0x2bc1('0x13'):_0x1db349['childModel']=_0x2bc1('0x14');break;case'squarerecordings':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x15');_0x1db349[_0x2bc1('0x16')]=[{'name':_0x2bc1('0x17'),'field':'name','foreignKey':_0x2bc1('0x18')}];break;case'projects':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x19');break;case _0x2bc1('0x1a'):_0x1db349['childModel']=_0x2bc1('0x1b');_0x1db349[_0x2bc1('0x16')]=[{'name':_0x2bc1('0x1c'),'field':'id','foreignKey':'ListId'}];break;case _0x2bc1('0x1d'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x1e');break;case _0x2bc1('0x1f'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x20');break;case _0x2bc1('0x21'):_0x1db349['childModel']=_0x2bc1('0x22');break;case _0x2bc1('0x23'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x24');break;case _0x2bc1('0x25'):_0x1db349[_0x2bc1('0x11')]='ChatWebsite';break;case _0x2bc1('0x26'):_0x1db349['childModel']=_0x2bc1('0x27');break;case'faxaccounts':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x28');break;case _0x2bc1('0x29'):case _0x2bc1('0x2a'):case _0x2bc1('0x2b'):_0x1db349['childModel']=_0x2bc1('0x2c');break;case'contexts':_0x1db349['childModel']='VoiceContext';break;case _0x2bc1('0x2d'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x2e');break;case'voicerecordings':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x2f');_0x1db349['parentSections']=[{'name':'Agents','field':_0x2bc1('0xd'),'foreignKey':_0x2bc1('0x30'),'model':'User','filter':{'field':_0x2bc1('0x31'),'value':[_0x2bc1('0x32')]}},{'name':'Telephones','field':_0x2bc1('0xd'),'foreignKey':_0x2bc1('0x30'),'model':'User','filter':{'field':'role','value':[_0x2bc1('0x33')]}},{'name':_0x2bc1('0x34'),'field':_0x2bc1('0xd'),'foreignKey':_0x2bc1('0x35'),'model':'VoiceQueue','filter':{'field':_0x2bc1('0x36'),'value':['inbound']}},{'name':_0x2bc1('0x37'),'field':_0x2bc1('0xd'),'foreignKey':'queue','model':_0x2bc1('0x38'),'filter':{'field':_0x2bc1('0x36'),'value':[_0x2bc1('0x39')]}}];break;case _0x2bc1('0x3a'):_0x1db349['childModel']=_0x2bc1('0x3b');break;case _0x2bc1('0x3c'):_0x1db349[_0x2bc1('0x11')]='VoiceChanSpy';break;case'voiceprefixes':_0x1db349[_0x2bc1('0x11')]='VoicePrefix';break;case _0x2bc1('0x3d'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x3e');break;case'mailqueues':_0x1db349[_0x2bc1('0x11')]='MailQueue';break;case _0x2bc1('0x3f'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x40');break;case _0x2bc1('0x41'):_0x1db349['childModel']=_0x2bc1('0x42');break;case'openchannelqueues':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x43');break;case'openchannelaccounts':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x44');break;case _0x2bc1('0x45'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x46');break;case _0x2bc1('0x47'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x48');break;case _0x2bc1('0x49'):_0x1db349['childModel']=_0x2bc1('0x4a');break;case _0x2bc1('0x4b'):_0x1db349[_0x2bc1('0x11')]='WhatsappAccount';break;case _0x2bc1('0x4c'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x4d');break;case _0x2bc1('0x4e'):case _0x2bc1('0x4f'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x38');if(_0x1b872c){_0x1db349[_0x2bc1('0x16')]=[{'name':'VoiceQueues'},{'name':'QueueCampaigns'}];}break;case _0x2bc1('0x50'):case'agents':case'telephones':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x51');if(_0x1b872c){_0x1db349[_0x2bc1('0x16')]=[{'name':_0x2bc1('0x52'),'filter':{'field':_0x2bc1('0x31'),'value':[_0x2bc1('0x53'),_0x2bc1('0x54')]},'ignore':!![]},{'name':_0x2bc1('0x55')},{'name':_0x2bc1('0x56')}];}break;case _0x2bc1('0x57'):_0x1db349['childModel']='ZendeskAccount';break;case _0x2bc1('0x58'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x59');break;case'freshdeskaccounts':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x5a');break;case _0x2bc1('0x5b'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x5c');break;case'deskaccounts':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x5d');break;case _0x2bc1('0x5e'):_0x1db349['childModel']=_0x2bc1('0x5f');break;case _0x2bc1('0x60'):_0x1db349['childModel']=_0x2bc1('0x51');break;case _0x2bc1('0x61'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x62');break;case _0x2bc1('0x63'):_0x1db349['childModel']=_0x2bc1('0x64');break;case _0x2bc1('0x65'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x66');break;case _0x2bc1('0x67'):_0x1db349['childModel']='Interval';break;case _0x2bc1('0x68'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x69');break;case _0x2bc1('0x6a'):_0x1db349['childModel']=_0x2bc1('0x6b');break;case _0x2bc1('0x6c'):_0x1db349['childModel']=_0x2bc1('0x6d');break;case _0x2bc1('0x6e'):_0x1db349['childModel']='Tag';break;case _0x2bc1('0x6f'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x70');break;case _0x2bc1('0x71'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x72');break;case'trunks':_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x73');break;case'variables':_0x1db349['childModel']=_0x2bc1('0x74');break;case _0x2bc1('0x75'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x76');break;case _0x2bc1('0x77'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x78');_0x1db349['parentSections']=[{'name':_0x2bc1('0x79'),'field':'id','foreignKey':'reportId'}];break;case _0x2bc1('0x7a'):_0x1db349[_0x2bc1('0x11')]=_0x2bc1('0x7b');break;}return _0x1db349;}function _0x172998(_0x2472c4,_0xc353cd){var _0x1eb759=_0x2472c4[_0x2bc1('0x7c')](0x0)[_0x2bc1('0x7d')]()+_0x2472c4[_0x2bc1('0x7e')](0x1);var _0x2bb262={'type':_0x134525[_0x2bc1('0x7f')][_0x2bc1('0x80')][_0x2bc1('0x81')],'raw':!![]};return new Promise(function(_0x2f0ca2,_0x31d611){var _0x3036af=squel['select']()['field']('ui.'+_0x1eb759+'InteractionId','id')[_0x2bc1('0x6')](_0x2bc1('0x82'))[_0x2bc1('0x83')](_0x2bc1('0x84')+_0x2472c4+_0x2bc1('0x85'),'ui')[_0x2bc1('0x86')]('ui.UserId\x20=\x20?',_0xc353cd['id']);return _0x134525[_0x2bc1('0x87')]['query'](_0x3036af[_0x2bc1('0x88')](),_0x2bb262)[_0x2bc1('0xb')](function(_0x2fa076){_0xc353cd[_0x1eb759+_0x2bc1('0x89')]=_0x2fa076;_0x2f0ca2(_0x2fa076);})[_0x2bc1('0x9')](function(_0x3d4a35){_0x31d611(_0x3d4a35);});});}return _0xeef25c[_0x2bc1('0x8a')](_0x2bc1('0x8b'),attributes,{'tableName':_0x2bc1('0x8c'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x4e8f27){var _0x56f24c=require(_0x2bc1('0x8d'));var _0x536408={'raw':_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0x8f')],'where':{}};var _0x5e0c3a={};var _0x537329={'count':0x0,'rows':[]};var _0x148500=_0x4e8f27['query'][_0x2bc1('0x90')];var _0x13e698=_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0x91')]||![];var _0x3da63e=_0x3383da(_0x148500,_0x13e698);if(!_0x3da63e[_0x2bc1('0x11')])throw new Error(_0x2bc1('0x92')+_0x148500+'\x27');var _0x329580=[{'name':_0x148500}];if(!_['isEmpty'](_0x3da63e[_0x2bc1('0x16')]))_0x329580=_0x3da63e[_0x2bc1('0x16')];var _0x55e102=[];for(var _0xadfaf8=0x0;_0xadfaf8<_0x329580[_0x2bc1('0x93')];_0xadfaf8++){_0x55e102[_0x2bc1('0x94')](_0x134525[_0x2bc1('0x95')]['find']({'where':{'userProfileId':_0x4e8f27[_0x2bc1('0x96')]['id'],'name':_0x329580[_0xadfaf8][_0x2bc1('0xd')]},'raw':!![]}));}return Promise[_0x2bc1('0x97')](_0x55e102)[_0x2bc1('0xb')](function(_0x32fc36){var _0x121cdc=_['filter'](_0x32fc36,function(_0x593b71){return _0x593b71?_0x593b71:undefined;});var _0x343cb3=_['filter'](_0x329580,[_0x2bc1('0x98'),!![]]);var _0x280587=_['isEmpty'](_0x121cdc)&&_[_0x2bc1('0x99')](_0x343cb3)?null:_[_0x2bc1('0x9a')](_0x343cb3,_0x121cdc);if(!_0x280587)return null;var _0x37cdef=[];for(var _0x1400be=0x0;_0x1400be<_0x280587['length'];_0x1400be++){var _0x2e63d1=_[_0x2bc1('0x9b')](_0x329580,function(_0x2bf305){return _0x280587[_0x1400be]?_0x2bf305['name']===_0x280587[_0x1400be][_0x2bc1('0xd')]:null;});if(_0x2e63d1){if(_0x280587[_0x1400be][_0x2bc1('0x98')]){_0x37cdef[_0x2bc1('0x94')](_0x124c25(_0x3da63e['childModel'],_0x280587[_0x1400be]));}else{if(!_0x280587[_0x1400be]['autoAssociation']){_0x37cdef[_0x2bc1('0x94')](_0x93e268(_0x2e63d1,_0x280587[_0x1400be],_0x3da63e[_0x2bc1('0x11')]));}else{if(_0x2e63d1[_0x2bc1('0x9c')]){_0x37cdef[_0x2bc1('0x94')](_0x568c6c(_0x2e63d1,_0x280587[_0x1400be]));}}}}}return Promise[_0x2bc1('0x97')](_0x37cdef);})['then'](function(_0x487d52){var _0x342dd3=_0x487d52;var _0x373d06=null;if(_0x342dd3){_0x373d06=_0x342dd3[_0x2bc1('0x93')]===0x1?_0x342dd3[0x0]:null;}if(!_0x373d06&&!_0x342dd3)return _0x537329;var _0x348c18=_0x134525[_0x3da63e['childModel']][_0x2bc1('0x9d')];_0x5e0c3a['model']=_[_0x2bc1('0x9e')](_0x348c18);_0x5e0c3a[_0x2bc1('0x8e')]=_[_0x2bc1('0x9e')](_0x4e8f27[_0x2bc1('0x8e')]);_0x5e0c3a['filters']=_[_0x2bc1('0x9f')](_0x5e0c3a[_0x2bc1('0x9c')],_0x5e0c3a[_0x2bc1('0x8e')]);_0x536408[_0x2bc1('0xa0')]=_[_0x2bc1('0x9f')](_0x5e0c3a[_0x2bc1('0x9c')],_0x56f24c[_0x2bc1('0xa1')](_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xa1')]));_0x536408['attributes']=_0x536408['attributes'][_0x2bc1('0x93')]?_0x536408[_0x2bc1('0xa0')]:_0x5e0c3a[_0x2bc1('0x9c')];if(!_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xa2')](_0x2bc1('0xa3'))){_0x536408['limit']=_0x56f24c[_0x2bc1('0xa4')](_0x4e8f27['query']['limit']);_0x536408[_0x2bc1('0xa5')]=_0x56f24c['offset'](_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xa5')]);}_0x536408[_0x2bc1('0xa6')]=_0x56f24c[_0x2bc1('0xa7')](_0x4e8f27[_0x2bc1('0x8e')]['sort']);_0x536408[_0x2bc1('0x86')]=_0x56f24c[_0x2bc1('0xa8')](_['pick'](_0x4e8f27['query'],_0x5e0c3a[_0x2bc1('0xa8')]));if(_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0x5')]){_0x536408[_0x2bc1('0x86')]=_[_0x2bc1('0xa9')](_0x536408[_0x2bc1('0x86')],{'$or':_[_0x2bc1('0xc')](_0x348c18,function(_0x43ad83){if(_0x43ad83[_0x2bc1('0x36')][_0x2bc1('0xaa')]!==_0x2bc1('0xab')){var _0x2d22cc={};_0x2d22cc[_0x43ad83[_0x2bc1('0x6')]]={'$like':'%'+_0x4e8f27['query'][_0x2bc1('0x5')]+'%'};return _0x2d22cc;}})});}var _0x5252ba=[];var _0x5bab48=null;var _0x5d3265={};if(_0x373d06){_0x5bab48=_['find'](_0x329580,[_0x2bc1('0xd'),_0x373d06[_0x2bc1('0xd')]]);if(_0x5bab48[_0x2bc1('0x6')]){_0x5d3265={};if(_0x3da63e[_0x2bc1('0x11')]==='AnalyticExtractedReport'){_0x5d3265[_0x5bab48[_0x2bc1('0xac')]]=_[_0x2bc1('0xc')](_0x373d06[_0x2bc1('0x8')],'id');}else{_0x5d3265[_0x5bab48[_0x2bc1('0xac')]]=_0x373d06[_0x2bc1('0x8')];}_0x5252ba[_0x2bc1('0x94')](_0x5d3265);}else{_0x536408[_0x2bc1('0x86')]['id']=_0x373d06['associatedResources'];}}else{for(var _0x58e761=0x0;_0x58e761<_0x342dd3['length'];_0x58e761++){_0x5bab48=_[_0x2bc1('0x9b')](_0x329580,['name',_0x342dd3[_0x58e761][_0x2bc1('0xd')]]);if(_0x5bab48[_0x2bc1('0x6')]){_0x5d3265={};_0x5d3265[_0x5bab48[_0x2bc1('0xac')]]=_0x342dd3[_0x58e761][_0x2bc1('0x8')];_0x5252ba[_0x2bc1('0x94')](_0x5d3265);}else{if(!_0x536408[_0x2bc1('0x86')]['id'])_0x536408['where']['id']=[];_0x342dd3[_0x58e761][_0x2bc1('0x8')][_0x2bc1('0xad')](function(_0x113093){_0x536408[_0x2bc1('0x86')]['id'][_0x2bc1('0x94')](_0x113093);});}}}if(!_[_0x2bc1('0x99')](_0x5252ba)){_0x536408[_0x2bc1('0x86')]=_[_0x2bc1('0xa9')](_0x536408[_0x2bc1('0x86')],{'$and':{'$or':_0x5252ba}});}_0x536408=_[_0x2bc1('0xa9')]({},_0x536408,_0x4e8f27[_0x2bc1('0xae')]);if(_0x373d06&&!_0x373d06[_0x2bc1('0xaf')]&&_0x3da63e[_0x2bc1('0x11')]==='AnalyticExtractedReport'){if(_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xb0')]){_0x536408[_0x2bc1('0xb1')]=[{'all':!![]}];}return _0x134525[_0x3da63e['childModel']][_0x2bc1('0xa')](_0x536408)[_0x2bc1('0xb')](function(_0x53bfc9){var _0x41b671=[];_0x53bfc9['forEach'](function(_0xb7db8b){var _0x2fb198;switch(_0xb7db8b['reportType']){case _0x2bc1('0xb2'):_0x2fb198=_['find'](_0x373d06[_0x2bc1('0x8')],function(_0x45773d){return _0x45773d['id']===_0xb7db8b[_0x2bc1('0xb3')]&&_0x45773d[_0x2bc1('0x36')]===_0x2bc1('0xb4');});break;case _0x2bc1('0xb5'):_0x2fb198=_[_0x2bc1('0x9b')](_0x373d06[_0x2bc1('0x8')],function(_0x1c8c7a){return _0x1c8c7a['id']===_0xb7db8b[_0x2bc1('0xb3')]&&_0x1c8c7a[_0x2bc1('0x36')]==='CustomReports';});break;}if(_0x2fb198)_0x41b671[_0x2bc1('0x94')](_0xb7db8b);});_0x537329['count']=_0x41b671[_0x2bc1('0x93')];_0x537329[_0x2bc1('0xb6')]=_0x41b671;return _0x537329;});}else{if(!_[_0x2bc1('0x99')](_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xb7')])){_0x536408['where']['id']=_0x536408['where']['id']?_[_0x2bc1('0x9f')](_0x536408[_0x2bc1('0x86')]['id'],_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xb7')]):_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xb7')];if(_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xb8')]){_0x536408[_0x2bc1('0xa6')]=_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xb8')];}}if(_0x4e8f27[_0x2bc1('0x8e')]['extraQueryConditions']){_0x536408['where']=_[_0x2bc1('0xa9')](_0x536408['where'],{'$and':_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xb9')]});}return _0x134525[_0x3da63e[_0x2bc1('0x11')]]['count']({'where':_0x536408[_0x2bc1('0x86')]})[_0x2bc1('0xb')](function(_0x23d85a){_0x537329[_0x2bc1('0xba')]=_0x23d85a;if(_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xb0')]){if(_0x3da63e['childModel']===_0x2bc1('0x1b')){_0x536408[_0x2bc1('0xb1')]=[{'model':_0x134525[_0x2bc1('0xbb')],'as':_0x2bc1('0xbc'),'attributes':['id',_0x2bc1('0xd'),_0x2bc1('0xbd')],'required':_0x4e8f27['query'][_0x2bc1('0xbe')]?!![]:![]},{'model':_0x134525['Tag'],'as':'ThroughTags','attributes':['id','name','color'],'through':_0x4e8f27[_0x2bc1('0x8e')]['tag']?{'attributes':[],'where':{'TagId':_0x4e8f27[_0x2bc1('0x8e')]['tag']||undefined}}:{},'required':_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xbe')]?!![]:![]}];}else{_0x536408[_0x2bc1('0xb1')]=[{'all':!![]}];}}return _0x134525[_0x3da63e[_0x2bc1('0x11')]]['findAll'](_0x536408);})[_0x2bc1('0xb')](function(_0x5c67b2){_0x537329[_0x2bc1('0xb6')]=_0x5c67b2;if(_0x148500===_0x2bc1('0x55')&&_0x4e8f27[_0x2bc1('0x8e')][_0x2bc1('0xbf')]==='true'){var _0x34c06a=[];for(var _0x111e48=0x0;_0x111e48<_0x537329['rows'][_0x2bc1('0x93')];_0x111e48++){_0x34c06a[_0x2bc1('0x94')](_0x172998(_0x2bc1('0xc0'),_0x537329['rows'][_0x111e48][_0x2bc1('0xc1')]));_0x34c06a['push'](_0x172998(_0x2bc1('0xc2'),_0x537329['rows'][_0x111e48]['dataValues']));_0x34c06a[_0x2bc1('0x94')](_0x172998(_0x2bc1('0xc3'),_0x537329[_0x2bc1('0xb6')][_0x111e48][_0x2bc1('0xc1')]));_0x34c06a[_0x2bc1('0x94')](_0x172998(_0x2bc1('0xc4'),_0x537329[_0x2bc1('0xb6')][_0x111e48][_0x2bc1('0xc1')]));_0x34c06a[_0x2bc1('0x94')](_0x172998(_0x2bc1('0xc5'),_0x537329[_0x2bc1('0xb6')][_0x111e48]['dataValues']));_0x34c06a['push'](_0x172998(_0x2bc1('0xc6'),_0x537329[_0x2bc1('0xb6')][_0x111e48]['dataValues']));}return Promise[_0x2bc1('0x97')](_0x34c06a)[_0x2bc1('0xb')](function(){return _0x537329;});}return _0x537329;});}});}}});};
\ No newline at end of file
+var _0x7449=['filter','field','value','findAll','then','model','associatedResources','map','name','catch','resolve','UserProfileResource','resourceId','type','toLowerCase','squareprojects','childModel','SquareProject','SquareOdbc','squarerecordings','SquareProjects','projectName','projects','JscriptyProject','CmContact','parentSections','lists','CmList','companies','CmCompany','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','faxqueues','faxaccounts','FaxAccount','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicerecordings','Agents','membername','role','agent','Telephones','User','telephone','VoiceQueues','VoiceQueue','inbound','QueueCampaigns','queue','outbound','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','Campaign','mailqueues','MailQueue','mailaccounts','mailsubstatuses','MailSubstatus','openchannelqueues','OpenchannelQueue','openchannelaccounts','smsqueues','SmsAccount','WhatsappQueue','whatsappaccounts','teams','Team','voicequeues','queuecampaigns','users','agents','telephones','admin','user','zendeskaccounts','ZendeskAccount','salesforceaccounts','SalesforceAccount','FreshdeskAccount','sugarcrmaccounts','deskaccounts','DeskAccount','ZohoAccount','vtigeraccounts','dispositions','Disposition','customdashboards','Dashboard','intervals','Interval','pauses','Pause','scheduler','Schedule','sounds','Sound','tags','templates','triggers','Trigger','Trunk','variables','Variable','plugins','Plugin','AnalyticExtractedReport','reportId','metrics','AnalyticMetric','toUpperCase','slice','Sequelize','QueryTypes','SELECT','ui.','InteractionId','ui.createdAt','from','sequelize','query','toString','OpenTabs','define','UserProfile','user_profiles','../../components/parsers/qs','raw','mergeResources','Invalid\x20section\x20\x27','isEmpty','length','union','find','ignore','autoAssociation','push','all','rawAttributes','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','offset','sort','pick','where','key','VIRTUAL','foreignKey','forEach','merge','options','includeAll','reportType','default','DefaultReports','custom','CustomReports','rows','ids','customSorting','order','extraQueryConditions','count','Tags','color','tag','Tag','ThroughTags','include','openTabs','true','chat','sms','dataValues','fax','mail','openchannel','whatsapp','lodash','./userProfile.attributes','squel','exports','models'];(function(_0x28f7b4,_0x50d7db){var _0x157303=function(_0xab27a5){while(--_0xab27a5){_0x28f7b4['push'](_0x28f7b4['shift']());}};_0x157303(++_0x50d7db);}(_0x7449,0xc3));var _0x9744=function(_0x15f9ca,_0x1d974e){_0x15f9ca=_0x15f9ca-0x0;var _0x4579c2=_0x7449[_0x15f9ca];return _0x4579c2;};'use strict';var _=require(_0x9744('0x0'));var attributes=require(_0x9744('0x1'));var squel=require(_0x9744('0x2'));module[_0x9744('0x3')]=function(_0x459836){var _0x5d2ccc=_0x459836[_0x9744('0x4')];function _0xdbb13a(_0x59fa9e,_0x9689a9){return new Promise(function(_0x476c31,_0x17a102){if(!_0x9689a9)return _0x476c31(null);var _0x413083=_0x9689a9['filter']?{[_0x9689a9[_0x9744('0x5')][_0x9744('0x6')]]:_0x9689a9['filter'][_0x9744('0x7')]}:undefined;return _0x5d2ccc[_0x59fa9e][_0x9744('0x8')]({'where':_0x413083,'raw':!![]})[_0x9744('0x9')](function(_0x18b4b6){_0x9689a9['associatedResources']=_['map'](_0x18b4b6,'id');_0x476c31(_0x9689a9);})['catch'](function(_0x17198a){_0x17a102(_0x17198a);});});}function _0x2e2f17(_0x4d1797,_0x44ce88){return new Promise(function(_0x1d3fdb,_0x369932){var _0x5c35ba=_0x4d1797[_0x9744('0x5')]?{[_0x4d1797[_0x9744('0x5')]['field']]:_0x4d1797['filter'][_0x9744('0x7')]}:undefined;return _0x5d2ccc[_0x4d1797[_0x9744('0xa')]][_0x9744('0x8')]({'where':_0x5c35ba,'raw':!![]})[_0x9744('0x9')](function(_0x2faab6){_0x44ce88[_0x9744('0xb')]=_[_0x9744('0xc')](_0x2faab6,function(_0x27e153){return _0x27e153[_0x9744('0xd')];});_0x1d3fdb(_0x44ce88);})[_0x9744('0xe')](function(_0x196c7){_0x369932(_0x196c7);});});}function _0x5c96da(_0x229bf0,_0x583df0,_0x28c476){if(!_0x583df0)return Promise[_0x9744('0xf')](null);return new Promise(function(_0x2abe40,_0x5ee410){return _0x5d2ccc[_0x9744('0x10')][_0x9744('0x8')]({'where':{'sectionId':_0x583df0['id']},'raw':!![]})[_0x9744('0x9')](function(_0x2c1142){if(_0x229bf0[_0x9744('0x6')]&&_0x229bf0['field']!=='id'){_0x583df0[_0x9744('0xb')]=_[_0x9744('0xc')](_0x2c1142,function(_0x1fee22){return _0x1fee22[_0x229bf0[_0x9744('0x6')]];});}else{if(_0x28c476==='AnalyticExtractedReport'){_0x583df0['associatedResources']=_[_0x9744('0xc')](_0x2c1142,function(_0xef0223){return{'id':_0xef0223[_0x9744('0x11')],'type':_0xef0223[_0x9744('0x12')]};});}else{_0x583df0['associatedResources']=_[_0x9744('0xc')](_0x2c1142,function(_0x349f9f){return _0x349f9f[_0x9744('0x11')];});}}_0x2abe40(_0x583df0);})[_0x9744('0xe')](function(_0x3de064){_0x5ee410(_0x3de064);});});}function _0xe92ef8(_0x159c20,_0x416478){var _0x8e67e5={'parentSections':[]};switch(_0x159c20[_0x9744('0x13')]()){case _0x9744('0x14'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x16');break;case'odbc':_0x8e67e5[_0x9744('0x15')]=_0x9744('0x17');break;case _0x9744('0x18'):_0x8e67e5[_0x9744('0x15')]='SquareRecording';_0x8e67e5['parentSections']=[{'name':_0x9744('0x19'),'field':'name','foreignKey':_0x9744('0x1a')}];break;case _0x9744('0x1b'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x1c');break;case'contacts':_0x8e67e5[_0x9744('0x15')]=_0x9744('0x1d');_0x8e67e5[_0x9744('0x1e')]=[{'name':'Lists','field':'id','foreignKey':'ListId'}];break;case _0x9744('0x1f'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x20');break;case _0x9744('0x21'):_0x8e67e5['childModel']=_0x9744('0x22');break;case _0x9744('0x23'):_0x8e67e5['childModel']=_0x9744('0x24');break;case _0x9744('0x25'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x26');break;case _0x9744('0x27'):_0x8e67e5[_0x9744('0x15')]='ChatWebsite';break;case _0x9744('0x28'):_0x8e67e5['childModel']='FaxQueue';break;case _0x9744('0x29'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x2a');break;case'inboundroutes':case _0x9744('0x2b'):case _0x9744('0x2c'):_0x8e67e5['childModel']=_0x9744('0x2d');break;case _0x9744('0x2e'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x2f');break;case'voicemails':_0x8e67e5['childModel']='VoiceMail';break;case _0x9744('0x30'):_0x8e67e5[_0x9744('0x15')]='VoiceRecording';_0x8e67e5['parentSections']=[{'name':_0x9744('0x31'),'field':'name','foreignKey':_0x9744('0x32'),'model':'User','filter':{'field':_0x9744('0x33'),'value':[_0x9744('0x34')]}},{'name':_0x9744('0x35'),'field':_0x9744('0xd'),'foreignKey':'membername','model':_0x9744('0x36'),'filter':{'field':'role','value':[_0x9744('0x37')]}},{'name':_0x9744('0x38'),'field':_0x9744('0xd'),'foreignKey':'queue','model':_0x9744('0x39'),'filter':{'field':_0x9744('0x12'),'value':[_0x9744('0x3a')]}},{'name':_0x9744('0x3b'),'field':_0x9744('0xd'),'foreignKey':_0x9744('0x3c'),'model':_0x9744('0x39'),'filter':{'field':_0x9744('0x12'),'value':[_0x9744('0x3d')]}}];break;case _0x9744('0x3e'):_0x8e67e5['childModel']=_0x9744('0x3f');break;case _0x9744('0x40'):_0x8e67e5['childModel']=_0x9744('0x41');break;case _0x9744('0x42'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x43');break;case _0x9744('0x44'):_0x8e67e5['childModel']=_0x9744('0x45');break;case _0x9744('0x46'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x47');break;case _0x9744('0x48'):_0x8e67e5['childModel']='MailAccount';break;case _0x9744('0x49'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x4a');break;case _0x9744('0x4b'):_0x8e67e5['childModel']=_0x9744('0x4c');break;case _0x9744('0x4d'):_0x8e67e5[_0x9744('0x15')]='OpenchannelAccount';break;case _0x9744('0x4e'):_0x8e67e5['childModel']='SmsQueue';break;case'smsaccounts':_0x8e67e5[_0x9744('0x15')]=_0x9744('0x4f');break;case'whatsappqueues':_0x8e67e5[_0x9744('0x15')]=_0x9744('0x50');break;case _0x9744('0x51'):_0x8e67e5[_0x9744('0x15')]='WhatsappAccount';break;case _0x9744('0x52'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x53');break;case _0x9744('0x54'):case _0x9744('0x55'):_0x8e67e5['childModel']=_0x9744('0x39');if(_0x416478){_0x8e67e5[_0x9744('0x1e')]=[{'name':_0x9744('0x38')},{'name':'QueueCampaigns'}];}break;case _0x9744('0x56'):case _0x9744('0x57'):case _0x9744('0x58'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x36');if(_0x416478){_0x8e67e5[_0x9744('0x1e')]=[{'name':'Users','filter':{'field':_0x9744('0x33'),'value':[_0x9744('0x59'),_0x9744('0x5a')]},'ignore':!![]},{'name':_0x9744('0x31')},{'name':_0x9744('0x35')}];}break;case _0x9744('0x5b'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x5c');break;case _0x9744('0x5d'):_0x8e67e5['childModel']=_0x9744('0x5e');break;case'freshdeskaccounts':_0x8e67e5[_0x9744('0x15')]=_0x9744('0x5f');break;case _0x9744('0x60'):_0x8e67e5['childModel']='SugarcrmAccount';break;case _0x9744('0x61'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x62');break;case'zohoaccounts':_0x8e67e5['childModel']=_0x9744('0x63');break;case _0x9744('0x64'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x36');break;case'cannedanswers':_0x8e67e5[_0x9744('0x15')]='CannedAnswer';break;case _0x9744('0x65'):_0x8e67e5['childModel']=_0x9744('0x66');break;case _0x9744('0x67'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x68');break;case _0x9744('0x69'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x6a');break;case _0x9744('0x6b'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x6c');break;case _0x9744('0x6d'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x6e');break;case _0x9744('0x6f'):_0x8e67e5['childModel']=_0x9744('0x70');break;case _0x9744('0x71'):_0x8e67e5['childModel']='Tag';break;case _0x9744('0x72'):_0x8e67e5[_0x9744('0x15')]='Template';break;case _0x9744('0x73'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x74');break;case'trunks':_0x8e67e5[_0x9744('0x15')]=_0x9744('0x75');break;case _0x9744('0x76'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x77');break;case _0x9744('0x78'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x79');break;case'extractedreports':_0x8e67e5[_0x9744('0x15')]=_0x9744('0x7a');_0x8e67e5[_0x9744('0x1e')]=[{'name':'Reports','field':'id','foreignKey':_0x9744('0x7b')}];break;case _0x9744('0x7c'):_0x8e67e5[_0x9744('0x15')]=_0x9744('0x7d');break;}return _0x8e67e5;}function _0x454948(_0x44adf7,_0x4d471b){var _0x3e2c98=_0x44adf7['charAt'](0x0)[_0x9744('0x7e')]()+_0x44adf7[_0x9744('0x7f')](0x1);var _0x52ccae={'type':_0x5d2ccc[_0x9744('0x80')][_0x9744('0x81')][_0x9744('0x82')],'raw':!![]};return new Promise(function(_0x424f25,_0x3d1e87){var _0x58ff8a=squel['select']()[_0x9744('0x6')](_0x9744('0x83')+_0x3e2c98+_0x9744('0x84'),'id')[_0x9744('0x6')](_0x9744('0x85'))[_0x9744('0x86')]('user_has_'+_0x44adf7+'_interactions','ui')['where']('ui.UserId\x20=\x20?',_0x4d471b['id']);return _0x5d2ccc[_0x9744('0x87')][_0x9744('0x88')](_0x58ff8a[_0x9744('0x89')](),_0x52ccae)[_0x9744('0x9')](function(_0x421f4b){_0x4d471b[_0x3e2c98+_0x9744('0x8a')]=_0x421f4b;_0x424f25(_0x421f4b);})[_0x9744('0xe')](function(_0x4a7522){_0x3d1e87(_0x4a7522);});});}return _0x459836[_0x9744('0x8b')](_0x9744('0x8c'),attributes,{'tableName':_0x9744('0x8d'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x2dc85e){var _0x2ac775=require(_0x9744('0x8e'));var _0x4ffe25={'raw':_0x2dc85e[_0x9744('0x88')][_0x9744('0x8f')],'where':{}};var _0xf5e44b={};var _0x5a491d={'count':0x0,'rows':[]};var _0x16b040=_0x2dc85e[_0x9744('0x88')]['section'];var _0x48bf2f=_0x2dc85e[_0x9744('0x88')][_0x9744('0x90')]||![];var _0x4cacbb=_0xe92ef8(_0x16b040,_0x48bf2f);if(!_0x4cacbb[_0x9744('0x15')])throw new Error(_0x9744('0x91')+_0x16b040+'\x27');var _0x5d33eb=[{'name':_0x16b040}];if(!_[_0x9744('0x92')](_0x4cacbb[_0x9744('0x1e')]))_0x5d33eb=_0x4cacbb[_0x9744('0x1e')];var _0x407911=[];for(var _0x490cc9=0x0;_0x490cc9<_0x5d33eb[_0x9744('0x93')];_0x490cc9++){_0x407911['push'](_0x5d2ccc['UserProfileSection']['find']({'where':{'userProfileId':_0x2dc85e['params']['id'],'name':_0x5d33eb[_0x490cc9][_0x9744('0xd')]},'raw':!![]}));}return Promise['all'](_0x407911)[_0x9744('0x9')](function(_0x2373a0){var _0x44a947=_['filter'](_0x2373a0,function(_0x825f58){return _0x825f58?_0x825f58:undefined;});var _0x10d035=_[_0x9744('0x5')](_0x5d33eb,['ignore',!![]]);var _0x48c93c=_['isEmpty'](_0x44a947)&&_['isEmpty'](_0x10d035)?null:_[_0x9744('0x94')](_0x10d035,_0x44a947);if(!_0x48c93c)return null;var _0x876e3e=[];for(var _0x3785d3=0x0;_0x3785d3<_0x48c93c['length'];_0x3785d3++){var _0x174988=_[_0x9744('0x95')](_0x5d33eb,function(_0x409ebe){return _0x48c93c[_0x3785d3]?_0x409ebe[_0x9744('0xd')]===_0x48c93c[_0x3785d3]['name']:null;});if(_0x174988){if(_0x48c93c[_0x3785d3][_0x9744('0x96')]){_0x876e3e['push'](_0xdbb13a(_0x4cacbb[_0x9744('0x15')],_0x48c93c[_0x3785d3]));}else{if(!_0x48c93c[_0x3785d3][_0x9744('0x97')]){_0x876e3e[_0x9744('0x98')](_0x5c96da(_0x174988,_0x48c93c[_0x3785d3],_0x4cacbb[_0x9744('0x15')]));}else{if(_0x174988[_0x9744('0xa')]){_0x876e3e['push'](_0x2e2f17(_0x174988,_0x48c93c[_0x3785d3]));}}}}}return Promise[_0x9744('0x99')](_0x876e3e);})[_0x9744('0x9')](function(_0x4d3b14){var _0x22e1d1=_0x4d3b14;var _0x2140c0=null;if(_0x22e1d1){_0x2140c0=_0x22e1d1['length']===0x1?_0x22e1d1[0x0]:null;}if(!_0x2140c0&&!_0x22e1d1)return _0x5a491d;var _0x3683c3=_0x5d2ccc[_0x4cacbb[_0x9744('0x15')]][_0x9744('0x9a')];_0xf5e44b[_0x9744('0xa')]=_[_0x9744('0x9b')](_0x3683c3);_0xf5e44b[_0x9744('0x88')]=_['keys'](_0x2dc85e[_0x9744('0x88')]);_0xf5e44b[_0x9744('0x9c')]=_[_0x9744('0x9d')](_0xf5e44b[_0x9744('0xa')],_0xf5e44b[_0x9744('0x88')]);_0x4ffe25[_0x9744('0x9e')]=_[_0x9744('0x9d')](_0xf5e44b[_0x9744('0xa')],_0x2ac775[_0x9744('0x9f')](_0x2dc85e[_0x9744('0x88')][_0x9744('0x9f')]));_0x4ffe25[_0x9744('0x9e')]=_0x4ffe25[_0x9744('0x9e')][_0x9744('0x93')]?_0x4ffe25['attributes']:_0xf5e44b[_0x9744('0xa')];if(!_0x2dc85e[_0x9744('0x88')][_0x9744('0xa0')](_0x9744('0xa1'))){_0x4ffe25['limit']=_0x2ac775[_0x9744('0xa2')](_0x2dc85e['query'][_0x9744('0xa2')]);_0x4ffe25['offset']=_0x2ac775[_0x9744('0xa3')](_0x2dc85e[_0x9744('0x88')][_0x9744('0xa3')]);}_0x4ffe25['order']=_0x2ac775[_0x9744('0xa4')](_0x2dc85e['query'][_0x9744('0xa4')]);_0x4ffe25['where']=_0x2ac775[_0x9744('0x9c')](_[_0x9744('0xa5')](_0x2dc85e[_0x9744('0x88')],_0xf5e44b[_0x9744('0x9c')]));if(_0x2dc85e['query'][_0x9744('0x5')]){_0x4ffe25[_0x9744('0xa6')]=_['merge'](_0x4ffe25[_0x9744('0xa6')],{'$or':_[_0x9744('0xc')](_0x3683c3,function(_0x304a4a){if(_0x304a4a[_0x9744('0x12')][_0x9744('0xa7')]!==_0x9744('0xa8')){var _0x4d5a9d={};_0x4d5a9d[_0x304a4a[_0x9744('0x6')]]={'$like':'%'+_0x2dc85e['query'][_0x9744('0x5')]+'%'};return _0x4d5a9d;}})});}var _0x326da3=[];var _0x43f9ab=null;var _0x4e607d={};if(_0x2140c0){_0x43f9ab=_[_0x9744('0x95')](_0x5d33eb,['name',_0x2140c0[_0x9744('0xd')]]);if(_0x43f9ab['field']){_0x4e607d={};if(_0x4cacbb[_0x9744('0x15')]==='AnalyticExtractedReport'){_0x4e607d[_0x43f9ab['foreignKey']]=_[_0x9744('0xc')](_0x2140c0[_0x9744('0xb')],'id');}else{_0x4e607d[_0x43f9ab[_0x9744('0xa9')]]=_0x2140c0[_0x9744('0xb')];}_0x326da3[_0x9744('0x98')](_0x4e607d);}else{_0x4ffe25[_0x9744('0xa6')]['id']=_0x2140c0['associatedResources'];}}else{for(var _0x399354=0x0;_0x399354<_0x22e1d1[_0x9744('0x93')];_0x399354++){_0x43f9ab=_[_0x9744('0x95')](_0x5d33eb,[_0x9744('0xd'),_0x22e1d1[_0x399354][_0x9744('0xd')]]);if(_0x43f9ab['field']){_0x4e607d={};_0x4e607d[_0x43f9ab[_0x9744('0xa9')]]=_0x22e1d1[_0x399354][_0x9744('0xb')];_0x326da3['push'](_0x4e607d);}else{if(!_0x4ffe25[_0x9744('0xa6')]['id'])_0x4ffe25[_0x9744('0xa6')]['id']=[];_0x22e1d1[_0x399354][_0x9744('0xb')][_0x9744('0xaa')](function(_0x3e96fe){_0x4ffe25[_0x9744('0xa6')]['id']['push'](_0x3e96fe);});}}}if(!_['isEmpty'](_0x326da3)){_0x4ffe25[_0x9744('0xa6')]=_[_0x9744('0xab')](_0x4ffe25[_0x9744('0xa6')],{'$and':{'$or':_0x326da3}});}_0x4ffe25=_[_0x9744('0xab')]({},_0x4ffe25,_0x2dc85e[_0x9744('0xac')]);if(_0x2140c0&&!_0x2140c0[_0x9744('0x97')]&&_0x4cacbb[_0x9744('0x15')]===_0x9744('0x7a')){if(_0x2dc85e[_0x9744('0x88')][_0x9744('0xad')]){_0x4ffe25['include']=[{'all':!![]}];}return _0x5d2ccc[_0x4cacbb[_0x9744('0x15')]][_0x9744('0x8')](_0x4ffe25)[_0x9744('0x9')](function(_0x292856){var _0xdb6be3=[];_0x292856[_0x9744('0xaa')](function(_0xff9d9a){var _0x384465;switch(_0xff9d9a[_0x9744('0xae')]){case _0x9744('0xaf'):_0x384465=_[_0x9744('0x95')](_0x2140c0[_0x9744('0xb')],function(_0x372349){return _0x372349['id']===_0xff9d9a[_0x9744('0x7b')]&&_0x372349[_0x9744('0x12')]===_0x9744('0xb0');});break;case _0x9744('0xb1'):_0x384465=_[_0x9744('0x95')](_0x2140c0[_0x9744('0xb')],function(_0x37dd8f){return _0x37dd8f['id']===_0xff9d9a['reportId']&&_0x37dd8f[_0x9744('0x12')]===_0x9744('0xb2');});break;}if(_0x384465)_0xdb6be3['push'](_0xff9d9a);});_0x5a491d['count']=_0xdb6be3[_0x9744('0x93')];_0x5a491d[_0x9744('0xb3')]=_0xdb6be3;return _0x5a491d;});}else{if(!_['isEmpty'](_0x2dc85e[_0x9744('0x88')][_0x9744('0xb4')])){_0x4ffe25[_0x9744('0xa6')]['id']=_0x4ffe25[_0x9744('0xa6')]['id']?_[_0x9744('0x9d')](_0x4ffe25[_0x9744('0xa6')]['id'],_0x2dc85e['query']['ids']):_0x2dc85e['query']['ids'];if(_0x2dc85e[_0x9744('0x88')][_0x9744('0xb5')]){_0x4ffe25[_0x9744('0xb6')]=_0x2dc85e[_0x9744('0x88')][_0x9744('0xb5')];}}if(_0x2dc85e[_0x9744('0x88')][_0x9744('0xb7')]){_0x4ffe25[_0x9744('0xa6')]=_[_0x9744('0xab')](_0x4ffe25[_0x9744('0xa6')],{'$and':_0x2dc85e['query'][_0x9744('0xb7')]});}return _0x5d2ccc[_0x4cacbb['childModel']][_0x9744('0xb8')]({'where':_0x4ffe25[_0x9744('0xa6')]})['then'](function(_0x483c2f){_0x5a491d['count']=_0x483c2f;if(_0x2dc85e[_0x9744('0x88')][_0x9744('0xad')]){if(_0x4cacbb[_0x9744('0x15')]===_0x9744('0x1d')){_0x4ffe25['include']=[{'model':_0x5d2ccc['Tag'],'as':_0x9744('0xb9'),'attributes':['id',_0x9744('0xd'),_0x9744('0xba')],'required':_0x2dc85e['query'][_0x9744('0xbb')]?!![]:![]},{'model':_0x5d2ccc[_0x9744('0xbc')],'as':_0x9744('0xbd'),'attributes':['id',_0x9744('0xd'),_0x9744('0xba')],'through':_0x2dc85e[_0x9744('0x88')][_0x9744('0xbb')]?{'attributes':[],'where':{'TagId':_0x2dc85e[_0x9744('0x88')][_0x9744('0xbb')]||undefined}}:{},'required':_0x2dc85e[_0x9744('0x88')][_0x9744('0xbb')]?!![]:![]}];}else{_0x4ffe25[_0x9744('0xbe')]=[{'all':!![]}];}}return _0x5d2ccc[_0x4cacbb['childModel']][_0x9744('0x8')](_0x4ffe25);})['then'](function(_0x83fc11){_0x5a491d[_0x9744('0xb3')]=_0x83fc11;if(_0x16b040===_0x9744('0x31')&&_0x2dc85e[_0x9744('0x88')][_0x9744('0xbf')]===_0x9744('0xc0')){var _0x56aac9=[];for(var _0x112546=0x0;_0x112546<_0x5a491d[_0x9744('0xb3')][_0x9744('0x93')];_0x112546++){_0x56aac9[_0x9744('0x98')](_0x454948(_0x9744('0xc1'),_0x5a491d[_0x9744('0xb3')][_0x112546]['dataValues']));_0x56aac9[_0x9744('0x98')](_0x454948(_0x9744('0xc2'),_0x5a491d[_0x9744('0xb3')][_0x112546][_0x9744('0xc3')]));_0x56aac9['push'](_0x454948(_0x9744('0xc4'),_0x5a491d['rows'][_0x112546][_0x9744('0xc3')]));_0x56aac9[_0x9744('0x98')](_0x454948(_0x9744('0xc5'),_0x5a491d[_0x9744('0xb3')][_0x112546]['dataValues']));_0x56aac9[_0x9744('0x98')](_0x454948(_0x9744('0xc6'),_0x5a491d[_0x9744('0xb3')][_0x112546][_0x9744('0xc3')]));_0x56aac9[_0x9744('0x98')](_0x454948(_0x9744('0xc7'),_0x5a491d[_0x9744('0xb3')][_0x112546][_0x9744('0xc3')]));}return Promise[_0x9744('0x99')](_0x56aac9)[_0x9744('0x9')](function(){return _0x5a491d;});}return _0x5a491d;});}});}}});};
\ No newline at end of file
index a2c3cde..06a9ca7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1c6=['./userProfile.socket','register','then','info','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','UserProfile,\x20%s,\x20%s','message','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','defaults','redis','localhost','socket.io-emitter'];(function(_0x163a12,_0x55fd8e){var _0x2cb6f8=function(_0x3ba84b){while(--_0x3ba84b){_0x163a12['push'](_0x163a12['shift']());}};_0x2cb6f8(++_0x55fd8e);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x43d03d,_0x19c9e5){_0x43d03d=_0x43d03d-0x0;var _0xe10e08=_0xc1c6[_0x43d03d];return _0xe10e08;};'use strict';var _=require(_0x6c1c('0x0'));var util=require(_0x6c1c('0x1'));var moment=require(_0x6c1c('0x2'));var BPromise=require('bluebird');var rs=require(_0x6c1c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6c1c('0x4'))['db'];var utils=require(_0x6c1c('0x5'));var logger=require(_0x6c1c('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6c1c('0x7'));var client=jayson['client'][_0x6c1c('0x8')]({'port':0x232a});config['redis']=_[_0x6c1c('0x9')](config[_0x6c1c('0xa')],{'host':_0x6c1c('0xb'),'port':0x18eb});var socket=require(_0x6c1c('0xc'))(new Redis(config['redis']));require(_0x6c1c('0xd'))[_0x6c1c('0xe')](socket);function respondWithRpcPromise(_0x524d21,_0x147c7b,_0x36275f){return new BPromise(function(_0xb3bd12,_0x1137e8){return client['request'](_0x524d21,_0x36275f)[_0x6c1c('0xf')](function(_0x2a4fd4){logger[_0x6c1c('0x10')]('UserProfile,\x20%s,\x20%s',_0x147c7b,_0x6c1c('0x11'));logger[_0x6c1c('0x12')](_0x6c1c('0x13'),_0x147c7b,'request\x20sent',JSON[_0x6c1c('0x14')](_0x2a4fd4));if(_0x2a4fd4['error']){if(_0x2a4fd4[_0x6c1c('0x15')][_0x6c1c('0x16')]===0x1f4){logger[_0x6c1c('0x15')](_0x6c1c('0x17'),_0x147c7b,_0x2a4fd4[_0x6c1c('0x15')][_0x6c1c('0x18')]);return _0x1137e8(_0x2a4fd4[_0x6c1c('0x15')][_0x6c1c('0x18')]);}logger[_0x6c1c('0x15')]('UserProfile,\x20%s,\x20%s',_0x147c7b,_0x2a4fd4[_0x6c1c('0x15')][_0x6c1c('0x18')]);return _0xb3bd12(_0x2a4fd4['error'][_0x6c1c('0x18')]);}else{logger[_0x6c1c('0x10')]('UserProfile,\x20%s,\x20%s',_0x147c7b,_0x6c1c('0x11'));_0xb3bd12(_0x2a4fd4['result'][_0x6c1c('0x18')]);}})[_0x6c1c('0x19')](function(_0x5a3bb7){logger[_0x6c1c('0x15')]('UserProfile,\x20%s,\x20%s',_0x147c7b,_0x5a3bb7);_0x1137e8(_0x5a3bb7);});});}
\ No newline at end of file
+var _0x0af5=['../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','redis','./userProfile.socket','request','then','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x1f18cf,_0x222dbb){var _0x5adda5=function(_0x212df0){while(--_0x212df0){_0x1f18cf['push'](_0x1f18cf['shift']());}};_0x5adda5(++_0x222dbb);}(_0x0af5,0x158));var _0x50af=function(_0x1b6f5a,_0x5b3fc3){_0x1b6f5a=_0x1b6f5a-0x0;var _0x13335f=_0x0af5[_0x1b6f5a];return _0x13335f;};'use strict';var _=require('lodash');var util=require(_0x50af('0x0'));var moment=require(_0x50af('0x1'));var BPromise=require(_0x50af('0x2'));var rs=require(_0x50af('0x3'));var fs=require('fs');var Redis=require(_0x50af('0x4'));var db=require(_0x50af('0x5'))['db'];var utils=require(_0x50af('0x6'));var logger=require(_0x50af('0x7'))(_0x50af('0x8'));var config=require(_0x50af('0x9'));var jayson=require(_0x50af('0xa'));var client=jayson[_0x50af('0xb')]['http']({'port':0x232a});config['redis']=_[_0x50af('0xc')](config[_0x50af('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x50af('0xd')]));require(_0x50af('0xe'))['register'](socket);function respondWithRpcPromise(_0x4bef88,_0x3ec74c,_0x8298e8){return new BPromise(function(_0x5e8754,_0x3ccbee){return client[_0x50af('0xf')](_0x4bef88,_0x8298e8)[_0x50af('0x10')](function(_0x3a4c2f){logger['info'](_0x50af('0x11'),_0x3ec74c,_0x50af('0x12'));logger[_0x50af('0x13')](_0x50af('0x14'),_0x3ec74c,_0x50af('0x12'),JSON[_0x50af('0x15')](_0x3a4c2f));if(_0x3a4c2f['error']){if(_0x3a4c2f['error']['code']===0x1f4){logger[_0x50af('0x16')]('UserProfile,\x20%s,\x20%s',_0x3ec74c,_0x3a4c2f[_0x50af('0x16')][_0x50af('0x17')]);return _0x3ccbee(_0x3a4c2f['error']['message']);}logger[_0x50af('0x16')](_0x50af('0x11'),_0x3ec74c,_0x3a4c2f['error']['message']);return _0x5e8754(_0x3a4c2f[_0x50af('0x16')][_0x50af('0x17')]);}else{logger[_0x50af('0x18')](_0x50af('0x11'),_0x3ec74c,_0x50af('0x12'));_0x5e8754(_0x3a4c2f[_0x50af('0x19')][_0x50af('0x17')]);}})[_0x50af('0x1a')](function(_0x1dbb30){logger[_0x50af('0x16')]('UserProfile,\x20%s,\x20%s',_0x3ec74c,_0x1dbb30);_0x3ccbee(_0x1dbb30);});});}
\ No newline at end of file
index 36ff593..125962d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ed8=['register','length','./userProfile.events','save','remove','emit','removeListener'];(function(_0x4d3850,_0x181ffa){var _0x3e8fff=function(_0x55dd94){while(--_0x55dd94){_0x4d3850['push'](_0x4d3850['shift']());}};_0x3e8fff(++_0x181ffa);}(_0x3ed8,0x113));var _0x83ed=function(_0x2f62aa,_0x108e95){_0x2f62aa=_0x2f62aa-0x0;var _0x1a341f=_0x3ed8[_0x2f62aa];return _0x1a341f;};'use strict';var UserProfileEvents=require(_0x83ed('0x0'));var events=[_0x83ed('0x1'),_0x83ed('0x2'),'update'];function createListener(_0x476dc9,_0x51da66){return function(_0x18c54d){_0x51da66[_0x83ed('0x3')](_0x476dc9,_0x18c54d);};}function removeListener(_0x417e09,_0x2ae1a8){return function(){UserProfileEvents[_0x83ed('0x4')](_0x417e09,_0x2ae1a8);};}exports[_0x83ed('0x5')]=function(_0x1b9a7d){for(var _0x7ec7f5=0x0,_0x39241e=events[_0x83ed('0x6')];_0x7ec7f5<_0x39241e;_0x7ec7f5++){var _0x54121b=events[_0x7ec7f5];var _0x4dba38=createListener('userProfile:'+_0x54121b,_0x1b9a7d);UserProfileEvents['on'](_0x54121b,_0x4dba38);}};
\ No newline at end of file
+var _0xb7a0=['removeListener','register','userProfile:','save','remove','update','emit'];(function(_0x5e1dfe,_0x1426f6){var _0x5d1abc=function(_0x550854){while(--_0x550854){_0x5e1dfe['push'](_0x5e1dfe['shift']());}};_0x5d1abc(++_0x1426f6);}(_0xb7a0,0x1b5));var _0x0b7a=function(_0x1c111c,_0x37a752){_0x1c111c=_0x1c111c-0x0;var _0x32770a=_0xb7a0[_0x1c111c];return _0x32770a;};'use strict';var UserProfileEvents=require('./userProfile.events');var events=[_0x0b7a('0x0'),_0x0b7a('0x1'),_0x0b7a('0x2')];function createListener(_0x5443e9,_0x20ec24){return function(_0x4ca84f){_0x20ec24[_0x0b7a('0x3')](_0x5443e9,_0x4ca84f);};}function removeListener(_0x11ef60,_0x5bf4c5){return function(){UserProfileEvents[_0x0b7a('0x4')](_0x11ef60,_0x5bf4c5);};}exports[_0x0b7a('0x5')]=function(_0x38bac6){for(var _0x413f09=0x0,_0x4e0901=events['length'];_0x413f09<_0x4e0901;_0x413f09++){var _0x510d12=events[_0x413f09];var _0x2c1b1e=createListener(_0x0b7a('0x6')+_0x510d12,_0x38bac6);UserProfileEvents['on'](_0x510d12,_0x2c1b1e);}};
\ No newline at end of file
index ab0e582..bc586c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc65=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','delete','exports','util','path','connect-timeout'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xfc65,0x97));var _0x5fc6=function(_0x46f282,_0x300c8b){_0x46f282=_0x46f282-0x0;var _0x5d4ae6=_0xfc65[_0x46f282];return _0x5d4ae6;};'use strict';var multer=require('multer');var util=require(_0x5fc6('0x0'));var path=require(_0x5fc6('0x1'));var timeout=require(_0x5fc6('0x2'));var express=require(_0x5fc6('0x3'));var router=express[_0x5fc6('0x4')]();var fs_extra=require(_0x5fc6('0x5'));var auth=require(_0x5fc6('0x6'));var interaction=require(_0x5fc6('0x7'));var config=require(_0x5fc6('0x8'));var controller=require(_0x5fc6('0x9'));router[_0x5fc6('0xa')]('/',auth[_0x5fc6('0xb')](),controller[_0x5fc6('0xc')]);router[_0x5fc6('0xa')](_0x5fc6('0xd'),auth[_0x5fc6('0xb')](),controller[_0x5fc6('0xe')]);router[_0x5fc6('0xa')](_0x5fc6('0xf'),auth['isAuthenticated'](),controller[_0x5fc6('0x10')]);router[_0x5fc6('0x11')]('/',auth[_0x5fc6('0xb')](),controller[_0x5fc6('0x12')]);router[_0x5fc6('0x13')](_0x5fc6('0xf'),auth[_0x5fc6('0xb')](),controller['update']);router[_0x5fc6('0x14')]('/:id',auth[_0x5fc6('0xb')](),controller['destroy']);module[_0x5fc6('0x15')]=router;
\ No newline at end of file
+var _0xb1b6=['put','/:id','update','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','./userProfileResource.controller','get','isAuthenticated','/describe','create'];(function(_0x207d2f,_0x44400f){var _0x3c3498=function(_0x57fdfb){while(--_0x57fdfb){_0x207d2f['push'](_0x207d2f['shift']());}};_0x3c3498(++_0x44400f);}(_0xb1b6,0x1b4));var _0x6b1b=function(_0x2dc425,_0x3b9350){_0x2dc425=_0x2dc425-0x0;var _0x2da9b0=_0xb1b6[_0x2dc425];return _0x2da9b0;};'use strict';var multer=require(_0x6b1b('0x0'));var util=require(_0x6b1b('0x1'));var path=require(_0x6b1b('0x2'));var timeout=require(_0x6b1b('0x3'));var express=require('express');var router=express[_0x6b1b('0x4')]();var fs_extra=require(_0x6b1b('0x5'));var auth=require(_0x6b1b('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x6b1b('0x7'));router[_0x6b1b('0x8')]('/',auth[_0x6b1b('0x9')](),controller['index']);router[_0x6b1b('0x8')](_0x6b1b('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x6b1b('0x8')]('/:id',auth[_0x6b1b('0x9')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0x6b1b('0xb')]);router[_0x6b1b('0xc')](_0x6b1b('0xd'),auth[_0x6b1b('0x9')](),controller[_0x6b1b('0xe')]);router['delete']('/:id',auth[_0x6b1b('0x9')](),controller['destroy']);module[_0x6b1b('0xf')]=router;
\ No newline at end of file
index bd37c21..b7f7e2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3caf=['sequelize','INTEGER'];(function(_0x261b6c,_0x2beb34){var _0xf8a24e=function(_0x56418c){while(--_0x56418c){_0x261b6c['push'](_0x261b6c['shift']());}};_0xf8a24e(++_0x2beb34);}(_0x3caf,0x148));var _0xf3ca=function(_0x225838,_0x29b914){_0x225838=_0x225838-0x0;var _0x1da96b=_0x3caf[_0x225838];return _0x1da96b;};'use strict';var Sequelize=require(_0xf3ca('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0xf3ca('0x1')],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
+var _0x7470=['STRING','INTEGER','sequelize','exports'];(function(_0x4b0726,_0x36c4f6){var _0x1c2c74=function(_0x55d0f7){while(--_0x55d0f7){_0x4b0726['push'](_0x4b0726['shift']());}};_0x1c2c74(++_0x36c4f6);}(_0x7470,0x102));var _0x0747=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0x7470[_0x3b0731];return _0x4204d7;};'use strict';var Sequelize=require(_0x0747('0x0'));module[_0x0747('0x1')]={'name':{'type':Sequelize[_0x0747('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x0747('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x0747('0x2')],'allowNull':![]}};
\ No newline at end of file
index f11953e..321da6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba34=['../../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','UserProfileResource','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','find','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','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'];(function(_0x11f226,_0x491e30){var _0x30be77=function(_0x2049bd){while(--_0x2049bd){_0x11f226['push'](_0x11f226['shift']());}};_0x30be77(++_0x491e30);}(_0xba34,0x119));var _0x4ba3=function(_0x11d785,_0x162126){_0x11d785=_0x11d785-0x0;var _0x2dfb30=_0xba34[_0x11d785];return _0x2dfb30;};'use strict';var emlformat=require(_0x4ba3('0x0'));var rimraf=require(_0x4ba3('0x1'));var zipdir=require(_0x4ba3('0x2'));var jsonpatch=require(_0x4ba3('0x3'));var rp=require(_0x4ba3('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4ba3('0x5'));var path=require(_0x4ba3('0x6'));var sox=require(_0x4ba3('0x7'));var csv=require(_0x4ba3('0x8'));var ejs=require(_0x4ba3('0x9'));var fs=require('fs');var fs_extra=require(_0x4ba3('0xa'));var _=require(_0x4ba3('0xb'));var squel=require('squel');var crypto=require(_0x4ba3('0xc'));var jsforce=require(_0x4ba3('0xd'));var deskjs=require(_0x4ba3('0xe'));var toCsv=require(_0x4ba3('0x8'));var querystring=require(_0x4ba3('0xf'));var Papa=require(_0x4ba3('0x10'));var Redis=require(_0x4ba3('0x11'));var authService=require(_0x4ba3('0x12'));var qs=require(_0x4ba3('0x13'));var as=require(_0x4ba3('0x14'));var hardwareService=require(_0x4ba3('0x15'));var logger=require('../../config/logger')(_0x4ba3('0x16'));var utils=require(_0x4ba3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x4ba3('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1073d4,_0x52f55c){_0x52f55c=_0x52f55c||0xcc;return function(_0x256f02){if(_0x256f02){return _0x1073d4[_0x4ba3('0x19')](_0x52f55c);}return _0x1073d4[_0x4ba3('0x1a')](_0x52f55c)[_0x4ba3('0x1b')]();};}function respondWithResult(_0x2bc796,_0x3d2ace){_0x3d2ace=_0x3d2ace||0xc8;return function(_0x3a74f7){if(_0x3a74f7){return _0x2bc796[_0x4ba3('0x1a')](_0x3d2ace)[_0x4ba3('0x1c')](_0x3a74f7);}};}function respondWithFilteredResult(_0x401366,_0x36638b){return function(_0x301359){if(_0x301359){var _0x29a9d1=typeof _0x36638b[_0x4ba3('0x1d')]===_0x4ba3('0x1e')&&typeof _0x36638b[_0x4ba3('0x1f')]==='undefined';var _0x382fd0=_0x301359[_0x4ba3('0x20')];var _0x5ff7ce=_0x29a9d1?0x0:_0x36638b[_0x4ba3('0x1d')];var _0x556290=_0x29a9d1?_0x301359[_0x4ba3('0x20')]:_0x36638b[_0x4ba3('0x1d')]+_0x36638b[_0x4ba3('0x1f')];var _0x1e2ce5;if(_0x556290>=_0x382fd0){_0x556290=_0x382fd0;_0x1e2ce5=0xc8;}else{_0x1e2ce5=0xce;}_0x401366[_0x4ba3('0x1a')](_0x1e2ce5);return _0x401366[_0x4ba3('0x21')]('Content-Range',_0x5ff7ce+'-'+_0x556290+'/'+_0x382fd0)['json'](_0x301359);}return null;};}function patchUpdates(_0x2278b0){return function(_0x579d9f){try{jsonpatch[_0x4ba3('0x22')](_0x579d9f,_0x2278b0,!![]);}catch(_0x163967){return BPromise[_0x4ba3('0x23')](_0x163967);}return _0x579d9f[_0x4ba3('0x24')]();};}function saveUpdates(_0x46f1f5,_0x278a23){return function(_0x4a0823){if(_0x4a0823){return _0x4a0823[_0x4ba3('0x25')](_0x46f1f5)[_0x4ba3('0x26')](function(_0x5c28f9){return _0x5c28f9;});}return null;};}function removeEntity(_0x28bb3d,_0x4ffe39){return function(_0x1ae4de){if(_0x1ae4de){return _0x1ae4de[_0x4ba3('0x27')]()[_0x4ba3('0x26')](function(){_0x28bb3d[_0x4ba3('0x1a')](0xcc)[_0x4ba3('0x1b')]();});}};}function handleEntityNotFound(_0xe29a49,_0x159596){return function(_0xe1f7d2){if(!_0xe1f7d2){_0xe29a49[_0x4ba3('0x19')](0x194);}return _0xe1f7d2;};}function handleError(_0x2e67a0,_0x50c729){_0x50c729=_0x50c729||0x1f4;return function(_0x252f37){logger[_0x4ba3('0x28')](_0x252f37[_0x4ba3('0x29')]);if(_0x252f37['name']){delete _0x252f37[_0x4ba3('0x2a')];}_0x2e67a0[_0x4ba3('0x1a')](_0x50c729)[_0x4ba3('0x2b')](_0x252f37);};}exports['index']=function(_0x10cae6,_0x843276){var _0x34ecb4={},_0x22394d={},_0x4a339e={'count':0x0,'rows':[]};var _0x590108=_[_0x4ba3('0x2c')](db[_0x4ba3('0x2d')][_0x4ba3('0x2e')],function(_0x19f039){return{'name':_0x19f039[_0x4ba3('0x2f')],'type':_0x19f039[_0x4ba3('0x30')]['key']};});_0x22394d[_0x4ba3('0x31')]=_[_0x4ba3('0x2c')](_0x590108,_0x4ba3('0x2a'));_0x22394d[_0x4ba3('0x32')]=_[_0x4ba3('0x33')](_0x10cae6[_0x4ba3('0x32')]);_0x22394d[_0x4ba3('0x34')]=_[_0x4ba3('0x35')](_0x22394d[_0x4ba3('0x31')],_0x22394d[_0x4ba3('0x32')]);_0x34ecb4['attributes']=_['intersection'](_0x22394d['model'],qs[_0x4ba3('0x36')](_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x36')]));_0x34ecb4[_0x4ba3('0x37')]=_0x34ecb4[_0x4ba3('0x37')][_0x4ba3('0x38')]?_0x34ecb4[_0x4ba3('0x37')]:_0x22394d[_0x4ba3('0x31')];if(!_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x39')](_0x4ba3('0x3a'))){_0x34ecb4[_0x4ba3('0x1f')]=qs['limit'](_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x1f')]);_0x34ecb4[_0x4ba3('0x1d')]=qs['offset'](_0x10cae6[_0x4ba3('0x32')]['offset']);}_0x34ecb4[_0x4ba3('0x3b')]=qs[_0x4ba3('0x3c')](_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x3c')]);_0x34ecb4[_0x4ba3('0x3d')]=qs[_0x4ba3('0x34')](_['pick'](_0x10cae6[_0x4ba3('0x32')],_0x22394d[_0x4ba3('0x34')]),_0x590108);if(_0x10cae6[_0x4ba3('0x32')]['filter']){_0x34ecb4[_0x4ba3('0x3d')]=_[_0x4ba3('0x3e')](_0x34ecb4['where'],{'$or':_[_0x4ba3('0x2c')](_0x590108,function(_0x503777){if(_0x503777['type']!==_0x4ba3('0x3f')){var _0x1acc74={};_0x1acc74[_0x503777[_0x4ba3('0x2a')]]={'$like':'%'+_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x40')]+'%'};return _0x1acc74;}})});}_0x34ecb4=_['merge']({},_0x34ecb4,_0x10cae6[_0x4ba3('0x41')]);var _0x10e4b5={'where':_0x34ecb4[_0x4ba3('0x3d')]};return db[_0x4ba3('0x2d')][_0x4ba3('0x20')](_0x10e4b5)[_0x4ba3('0x26')](function(_0x349af4){_0x4a339e[_0x4ba3('0x20')]=_0x349af4;if(_0x10cae6['query'][_0x4ba3('0x42')]){_0x34ecb4[_0x4ba3('0x43')]=[{'all':!![]}];}return db[_0x4ba3('0x2d')][_0x4ba3('0x44')](_0x34ecb4);})[_0x4ba3('0x26')](function(_0x25b2c9){_0x4a339e[_0x4ba3('0x45')]=_0x25b2c9;return _0x4a339e;})[_0x4ba3('0x26')](respondWithFilteredResult(_0x843276,_0x34ecb4))[_0x4ba3('0x46')](handleError(_0x843276,null));};exports[_0x4ba3('0x47')]=function(_0x3b9a0a,_0x1c58d2){var _0x1d031b={'raw':![],'where':{'id':_0x3b9a0a['params']['id']}},_0x28b649={};_0x28b649['model']=_['keys'](db['UserProfileResource']['rawAttributes']);_0x28b649[_0x4ba3('0x32')]=_['keys'](_0x3b9a0a[_0x4ba3('0x32')]);_0x28b649['filters']=_[_0x4ba3('0x35')](_0x28b649[_0x4ba3('0x31')],_0x28b649[_0x4ba3('0x32')]);_0x1d031b[_0x4ba3('0x37')]=_[_0x4ba3('0x35')](_0x28b649['model'],qs[_0x4ba3('0x36')](_0x3b9a0a['query'][_0x4ba3('0x36')]));_0x1d031b['attributes']=_0x1d031b[_0x4ba3('0x37')][_0x4ba3('0x38')]?_0x1d031b[_0x4ba3('0x37')]:_0x28b649[_0x4ba3('0x31')];if(_0x3b9a0a[_0x4ba3('0x32')][_0x4ba3('0x42')]){_0x1d031b[_0x4ba3('0x43')]=[{'all':!![]}];}_0x1d031b=_['merge']({},_0x1d031b,_0x3b9a0a[_0x4ba3('0x41')]);return db[_0x4ba3('0x2d')][_0x4ba3('0x48')](_0x1d031b)[_0x4ba3('0x26')](handleEntityNotFound(_0x1c58d2,null))[_0x4ba3('0x26')](respondWithResult(_0x1c58d2,null))['catch'](handleError(_0x1c58d2,null));};exports['create']=function(_0xa4bbb2,_0x1fe115){return db[_0x4ba3('0x2d')]['create'](_0xa4bbb2[_0x4ba3('0x49')],{})[_0x4ba3('0x26')](respondWithResult(_0x1fe115,0xc9))[_0x4ba3('0x46')](handleError(_0x1fe115,null));};exports['update']=function(_0x47f588,_0x34dc04){if(_0x47f588['body']['id']){delete _0x47f588[_0x4ba3('0x49')]['id'];}return db[_0x4ba3('0x2d')][_0x4ba3('0x48')]({'where':{'id':_0x47f588[_0x4ba3('0x4a')]['id']}})[_0x4ba3('0x26')](handleEntityNotFound(_0x34dc04,null))[_0x4ba3('0x26')](saveUpdates(_0x47f588['body'],null))[_0x4ba3('0x26')](respondWithResult(_0x34dc04,null))[_0x4ba3('0x46')](handleError(_0x34dc04,null));};exports['destroy']=function(_0x325475,_0x12ae6f){return db[_0x4ba3('0x2d')][_0x4ba3('0x48')]({'where':{'id':_0x325475[_0x4ba3('0x4a')]['id']}})['then'](handleEntityNotFound(_0x12ae6f,null))[_0x4ba3('0x26')](removeEntity(_0x12ae6f,null))[_0x4ba3('0x46')](handleError(_0x12ae6f,null));};exports['describe']=function(_0x43f820,_0x19d70f){return db[_0x4ba3('0x2d')][_0x4ba3('0x4b')]()[_0x4ba3('0x26')](respondWithResult(_0x19d70f,null))[_0x4ba3('0x46')](handleError(_0x19d70f,null));};
\ No newline at end of file
+var _0x9582=['fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','limit','undefined','offset','count','set','json','reject','save','update','then','destroy','error','name','send','index','map','UserProfileResource','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','length','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','describe','eml-format','rimraf','zip-dir'];(function(_0x5c3b2a,_0x45bd6d){var _0x26089a=function(_0x5beaab){while(--_0x5beaab){_0x5c3b2a['push'](_0x5c3b2a['shift']());}};_0x26089a(++_0x45bd6d);}(_0x9582,0x95));var _0x2958=function(_0x404110,_0x27cf60){_0x404110=_0x404110-0x0;var _0xb48182=_0x9582[_0x404110];return _0xb48182;};'use strict';var emlformat=require(_0x2958('0x0'));var rimraf=require(_0x2958('0x1'));var zipdir=require(_0x2958('0x2'));var jsonpatch=require(_0x2958('0x3'));var rp=require(_0x2958('0x4'));var moment=require(_0x2958('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x2958('0x6'));var util=require(_0x2958('0x7'));var path=require(_0x2958('0x8'));var sox=require(_0x2958('0x9'));var csv=require(_0x2958('0xa'));var ejs=require(_0x2958('0xb'));var fs=require('fs');var fs_extra=require(_0x2958('0xc'));var _=require(_0x2958('0xd'));var squel=require(_0x2958('0xe'));var crypto=require(_0x2958('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2958('0xa'));var querystring=require('querystring');var Papa=require(_0x2958('0x10'));var Redis=require('ioredis');var authService=require(_0x2958('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x2958('0x12'));var hardwareService=require(_0x2958('0x13'));var logger=require(_0x2958('0x14'))(_0x2958('0x15'));var utils=require(_0x2958('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x2958('0x17'));var db=require(_0x2958('0x18'))['db'];function respondWithStatusCode(_0x33a13a,_0x20e06a){_0x20e06a=_0x20e06a||0xcc;return function(_0x47067d){if(_0x47067d){return _0x33a13a[_0x2958('0x19')](_0x20e06a);}return _0x33a13a[_0x2958('0x1a')](_0x20e06a)[_0x2958('0x1b')]();};}function respondWithResult(_0x5bd520,_0x42e976){_0x42e976=_0x42e976||0xc8;return function(_0x2e12d4){if(_0x2e12d4){return _0x5bd520['status'](_0x42e976)['json'](_0x2e12d4);}};}function respondWithFilteredResult(_0x21ed6c,_0x38e724){return function(_0x5f06b1){if(_0x5f06b1){var _0x3bef50=typeof _0x38e724['offset']==='undefined'&&typeof _0x38e724[_0x2958('0x1c')]===_0x2958('0x1d');var _0x55e261=_0x5f06b1['count'];var _0x28a92c=_0x3bef50?0x0:_0x38e724[_0x2958('0x1e')];var _0x310d07=_0x3bef50?_0x5f06b1[_0x2958('0x1f')]:_0x38e724[_0x2958('0x1e')]+_0x38e724['limit'];var _0x19a614;if(_0x310d07>=_0x55e261){_0x310d07=_0x55e261;_0x19a614=0xc8;}else{_0x19a614=0xce;}_0x21ed6c[_0x2958('0x1a')](_0x19a614);return _0x21ed6c[_0x2958('0x20')]('Content-Range',_0x28a92c+'-'+_0x310d07+'/'+_0x55e261)[_0x2958('0x21')](_0x5f06b1);}return null;};}function patchUpdates(_0x53b100){return function(_0x1da684){try{jsonpatch['apply'](_0x1da684,_0x53b100,!![]);}catch(_0x5eaf36){return BPromise[_0x2958('0x22')](_0x5eaf36);}return _0x1da684[_0x2958('0x23')]();};}function saveUpdates(_0x2a02a4,_0x26c5a5){return function(_0x2202f8){if(_0x2202f8){return _0x2202f8[_0x2958('0x24')](_0x2a02a4)[_0x2958('0x25')](function(_0x2b9818){return _0x2b9818;});}return null;};}function removeEntity(_0x330763,_0x2aa514){return function(_0xaf5547){if(_0xaf5547){return _0xaf5547[_0x2958('0x26')]()[_0x2958('0x25')](function(){_0x330763[_0x2958('0x1a')](0xcc)[_0x2958('0x1b')]();});}};}function handleEntityNotFound(_0x4f811a,_0x574df5){return function(_0x3c1155){if(!_0x3c1155){_0x4f811a[_0x2958('0x19')](0x194);}return _0x3c1155;};}function handleError(_0x28c1f5,_0x43cf73){_0x43cf73=_0x43cf73||0x1f4;return function(_0x52bd32){logger[_0x2958('0x27')](_0x52bd32['stack']);if(_0x52bd32[_0x2958('0x28')]){delete _0x52bd32[_0x2958('0x28')];}_0x28c1f5[_0x2958('0x1a')](_0x43cf73)[_0x2958('0x29')](_0x52bd32);};}exports[_0x2958('0x2a')]=function(_0x36e2a5,_0x153958){var _0x5d1dfc={},_0x21b919={},_0x5053d0={'count':0x0,'rows':[]};var _0x48650d=_[_0x2958('0x2b')](db[_0x2958('0x2c')][_0x2958('0x2d')],function(_0x34e56e){return{'name':_0x34e56e[_0x2958('0x2e')],'type':_0x34e56e[_0x2958('0x2f')][_0x2958('0x30')]};});_0x21b919[_0x2958('0x31')]=_['map'](_0x48650d,_0x2958('0x28'));_0x21b919[_0x2958('0x32')]=_['keys'](_0x36e2a5[_0x2958('0x32')]);_0x21b919['filters']=_[_0x2958('0x33')](_0x21b919['model'],_0x21b919[_0x2958('0x32')]);_0x5d1dfc['attributes']=_[_0x2958('0x33')](_0x21b919[_0x2958('0x31')],qs[_0x2958('0x34')](_0x36e2a5[_0x2958('0x32')][_0x2958('0x34')]));_0x5d1dfc[_0x2958('0x35')]=_0x5d1dfc[_0x2958('0x35')][_0x2958('0x36')]?_0x5d1dfc[_0x2958('0x35')]:_0x21b919['model'];if(!_0x36e2a5[_0x2958('0x32')]['hasOwnProperty'](_0x2958('0x37'))){_0x5d1dfc['limit']=qs[_0x2958('0x1c')](_0x36e2a5[_0x2958('0x32')][_0x2958('0x1c')]);_0x5d1dfc[_0x2958('0x1e')]=qs[_0x2958('0x1e')](_0x36e2a5[_0x2958('0x32')][_0x2958('0x1e')]);}_0x5d1dfc[_0x2958('0x38')]=qs[_0x2958('0x39')](_0x36e2a5[_0x2958('0x32')][_0x2958('0x39')]);_0x5d1dfc[_0x2958('0x3a')]=qs[_0x2958('0x3b')](_['pick'](_0x36e2a5[_0x2958('0x32')],_0x21b919[_0x2958('0x3b')]),_0x48650d);if(_0x36e2a5[_0x2958('0x32')][_0x2958('0x3c')]){_0x5d1dfc['where']=_[_0x2958('0x3d')](_0x5d1dfc[_0x2958('0x3a')],{'$or':_[_0x2958('0x2b')](_0x48650d,function(_0x3f7e27){if(_0x3f7e27[_0x2958('0x2f')]!==_0x2958('0x3e')){var _0x1ed89b={};_0x1ed89b[_0x3f7e27[_0x2958('0x28')]]={'$like':'%'+_0x36e2a5[_0x2958('0x32')][_0x2958('0x3c')]+'%'};return _0x1ed89b;}})});}_0x5d1dfc=_[_0x2958('0x3d')]({},_0x5d1dfc,_0x36e2a5[_0x2958('0x3f')]);var _0x319243={'where':_0x5d1dfc['where']};return db[_0x2958('0x2c')][_0x2958('0x1f')](_0x319243)['then'](function(_0x4fe061){_0x5053d0[_0x2958('0x1f')]=_0x4fe061;if(_0x36e2a5[_0x2958('0x32')][_0x2958('0x40')]){_0x5d1dfc[_0x2958('0x41')]=[{'all':!![]}];}return db[_0x2958('0x2c')][_0x2958('0x42')](_0x5d1dfc);})[_0x2958('0x25')](function(_0x13be6d){_0x5053d0[_0x2958('0x43')]=_0x13be6d;return _0x5053d0;})[_0x2958('0x25')](respondWithFilteredResult(_0x153958,_0x5d1dfc))[_0x2958('0x44')](handleError(_0x153958,null));};exports[_0x2958('0x45')]=function(_0xe33c56,_0x5a58ea){var _0x645b66={'raw':![],'where':{'id':_0xe33c56[_0x2958('0x46')]['id']}},_0x112256={};_0x112256[_0x2958('0x31')]=_['keys'](db[_0x2958('0x2c')]['rawAttributes']);_0x112256['query']=_[_0x2958('0x47')](_0xe33c56[_0x2958('0x32')]);_0x112256[_0x2958('0x3b')]=_[_0x2958('0x33')](_0x112256[_0x2958('0x31')],_0x112256[_0x2958('0x32')]);_0x645b66['attributes']=_[_0x2958('0x33')](_0x112256['model'],qs['fields'](_0xe33c56[_0x2958('0x32')]['fields']));_0x645b66[_0x2958('0x35')]=_0x645b66[_0x2958('0x35')][_0x2958('0x36')]?_0x645b66[_0x2958('0x35')]:_0x112256[_0x2958('0x31')];if(_0xe33c56[_0x2958('0x32')][_0x2958('0x40')]){_0x645b66[_0x2958('0x41')]=[{'all':!![]}];}_0x645b66=_['merge']({},_0x645b66,_0xe33c56[_0x2958('0x3f')]);return db[_0x2958('0x2c')][_0x2958('0x48')](_0x645b66)[_0x2958('0x25')](handleEntityNotFound(_0x5a58ea,null))['then'](respondWithResult(_0x5a58ea,null))[_0x2958('0x44')](handleError(_0x5a58ea,null));};exports[_0x2958('0x49')]=function(_0x4a51b1,_0x1b6829){return db[_0x2958('0x2c')][_0x2958('0x49')](_0x4a51b1[_0x2958('0x4a')],{})[_0x2958('0x25')](respondWithResult(_0x1b6829,0xc9))[_0x2958('0x44')](handleError(_0x1b6829,null));};exports['update']=function(_0x1fff2a,_0x38b551){if(_0x1fff2a[_0x2958('0x4a')]['id']){delete _0x1fff2a[_0x2958('0x4a')]['id'];}return db[_0x2958('0x2c')][_0x2958('0x48')]({'where':{'id':_0x1fff2a[_0x2958('0x46')]['id']}})[_0x2958('0x25')](handleEntityNotFound(_0x38b551,null))[_0x2958('0x25')](saveUpdates(_0x1fff2a[_0x2958('0x4a')],null))[_0x2958('0x25')](respondWithResult(_0x38b551,null))[_0x2958('0x44')](handleError(_0x38b551,null));};exports[_0x2958('0x26')]=function(_0x3f7bc1,_0x1bb780){return db[_0x2958('0x2c')][_0x2958('0x48')]({'where':{'id':_0x3f7bc1['params']['id']}})[_0x2958('0x25')](handleEntityNotFound(_0x1bb780,null))['then'](removeEntity(_0x1bb780,null))[_0x2958('0x44')](handleError(_0x1bb780,null));};exports[_0x2958('0x4b')]=function(_0x1db8b1,_0x534677){return db['UserProfileResource'][_0x2958('0x4b')]()[_0x2958('0x25')](respondWithResult(_0x534677,null))[_0x2958('0x44')](handleError(_0x534677,null));};
\ No newline at end of file
index ebf3881..1b08980 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fbe=['path','../../config/environment','./userProfileResource.attributes','exports','define','UserProfileResource','user_profile_has_resources','compositeIndex','sectionId','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x525c7b,_0x488fcc){var _0x27b33e=function(_0x56d43b){while(--_0x56d43b){_0x525c7b['push'](_0x525c7b['shift']());}};_0x27b33e(++_0x488fcc);}(_0x6fbe,0xb9));var _0xe6fb=function(_0x26cd90,_0x561e89){_0x26cd90=_0x26cd90-0x0;var _0x14194e=_0x6fbe[_0x26cd90];return _0x14194e;};'use strict';var _=require(_0xe6fb('0x0'));var util=require(_0xe6fb('0x1'));var logger=require(_0xe6fb('0x2'))(_0xe6fb('0x3'));var moment=require(_0xe6fb('0x4'));var BPromise=require(_0xe6fb('0x5'));var rp=require(_0xe6fb('0x6'));var fs=require('fs');var path=require(_0xe6fb('0x7'));var rimraf=require('rimraf');var config=require(_0xe6fb('0x8'));var attributes=require(_0xe6fb('0x9'));module[_0xe6fb('0xa')]=function(_0xb91d05,_0x261e6f){return _0xb91d05[_0xe6fb('0xb')](_0xe6fb('0xc'),attributes,{'tableName':_0xe6fb('0xd'),'paranoid':![],'indexes':[{'name':_0xe6fb('0xe'),'fields':['resourceId',_0xe6fb('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4711=['UserProfileResource','user_profile_has_resources','compositeIndex','resourceId','lodash','../../config/logger','api','moment','path','rimraf','../../config/environment','exports','define'];(function(_0x5f150e,_0x5e3a1e){var _0x2f6957=function(_0x58db60){while(--_0x58db60){_0x5f150e['push'](_0x5f150e['shift']());}};_0x2f6957(++_0x5e3a1e);}(_0x4711,0x86));var _0x1471=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4711[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x1471('0x0'));var util=require('util');var logger=require(_0x1471('0x1'))(_0x1471('0x2'));var moment=require(_0x1471('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x1471('0x4'));var rimraf=require(_0x1471('0x5'));var config=require(_0x1471('0x6'));var attributes=require('./userProfileResource.attributes');module[_0x1471('0x7')]=function(_0x402af7,_0x1bf8ff){return _0x402af7[_0x1471('0x8')](_0x1471('0x9'),attributes,{'tableName':_0x1471('0xa'),'paranoid':![],'indexes':[{'name':_0x1471('0xb'),'fields':[_0x1471('0xc'),'sectionId']}],'timestamps':!![]});};
\ No newline at end of file
index 099b821..67e221c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bcb=['error','code','message','result','catch','util','bluebird','randomstring','../../config/utils','rpc','../../config/environment','http','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x8bcb,0xfc));var _0xb8bc=function(_0x1597e2,_0x388d3e){_0x1597e2=_0x1597e2-0x0;var _0x4c8c0a=_0x8bcb[_0x1597e2];return _0x4c8c0a;};'use strict';var _=require('lodash');var util=require(_0xb8bc('0x0'));var moment=require('moment');var BPromise=require(_0xb8bc('0x1'));var rs=require(_0xb8bc('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb8bc('0x3'));var logger=require('../../config/logger')(_0xb8bc('0x4'));var config=require(_0xb8bc('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb8bc('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x26e9e7,_0x52341a,_0x3d15d9){return new BPromise(function(_0x31a173,_0x2836ac){return client['request'](_0x26e9e7,_0x3d15d9)[_0xb8bc('0x7')](function(_0x436f64){logger[_0xb8bc('0x8')](_0xb8bc('0x9'),_0x52341a,_0xb8bc('0xa'));logger[_0xb8bc('0xb')](_0xb8bc('0xc'),_0x52341a,'request\x20sent',JSON[_0xb8bc('0xd')](_0x436f64));if(_0x436f64[_0xb8bc('0xe')]){if(_0x436f64['error'][_0xb8bc('0xf')]===0x1f4){logger[_0xb8bc('0xe')](_0xb8bc('0x9'),_0x52341a,_0x436f64['error'][_0xb8bc('0x10')]);return _0x2836ac(_0x436f64[_0xb8bc('0xe')]['message']);}logger[_0xb8bc('0xe')](_0xb8bc('0x9'),_0x52341a,_0x436f64[_0xb8bc('0xe')][_0xb8bc('0x10')]);return _0x31a173(_0x436f64[_0xb8bc('0xe')][_0xb8bc('0x10')]);}else{logger[_0xb8bc('0x8')](_0xb8bc('0x9'),_0x52341a,'request\x20sent');_0x31a173(_0x436f64[_0xb8bc('0x11')][_0xb8bc('0x10')]);}})[_0xb8bc('0x12')](function(_0x19cfe2){logger[_0xb8bc('0xe')](_0xb8bc('0x9'),_0x52341a,_0x19cfe2);_0x2836ac(_0x19cfe2);});});}
\ No newline at end of file
+var _0x328f=['client','http','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise'];(function(_0x2cf4ea,_0x47e80d){var _0x28bb8b=function(_0x4bd09e){while(--_0x4bd09e){_0x2cf4ea['push'](_0x2cf4ea['shift']());}};_0x28bb8b(++_0x47e80d);}(_0x328f,0x1a6));var _0xf328=function(_0x346737,_0x3e6081){_0x346737=_0x346737-0x0;var _0x1ade2e=_0x328f[_0x346737];return _0x1ade2e;};'use strict';var _=require(_0xf328('0x0'));var util=require(_0xf328('0x1'));var moment=require(_0xf328('0x2'));var BPromise=require(_0xf328('0x3'));var rs=require(_0xf328('0x4'));var fs=require('fs');var Redis=require(_0xf328('0x5'));var db=require(_0xf328('0x6'))['db'];var utils=require(_0xf328('0x7'));var logger=require('../../config/logger')(_0xf328('0x8'));var config=require('../../config/environment');var jayson=require(_0xf328('0x9'));var client=jayson[_0xf328('0xa')][_0xf328('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xaad31e,_0x36aac6,_0x50f67f){return new BPromise(function(_0x4b83d4,_0x569852){return client[_0xf328('0xc')](_0xaad31e,_0x50f67f)[_0xf328('0xd')](function(_0x48e8c2){logger[_0xf328('0xe')](_0xf328('0xf'),_0x36aac6,_0xf328('0x10'));logger[_0xf328('0x11')](_0xf328('0x12'),_0x36aac6,_0xf328('0x10'),JSON[_0xf328('0x13')](_0x48e8c2));if(_0x48e8c2[_0xf328('0x14')]){if(_0x48e8c2[_0xf328('0x14')][_0xf328('0x15')]===0x1f4){logger[_0xf328('0x14')]('UserProfileResource,\x20%s,\x20%s',_0x36aac6,_0x48e8c2[_0xf328('0x14')][_0xf328('0x16')]);return _0x569852(_0x48e8c2['error'][_0xf328('0x16')]);}logger[_0xf328('0x14')](_0xf328('0xf'),_0x36aac6,_0x48e8c2[_0xf328('0x14')][_0xf328('0x16')]);return _0x4b83d4(_0x48e8c2[_0xf328('0x14')]['message']);}else{logger[_0xf328('0xe')](_0xf328('0xf'),_0x36aac6,_0xf328('0x10'));_0x4b83d4(_0x48e8c2[_0xf328('0x17')][_0xf328('0x16')]);}})['catch'](function(_0x269207){logger[_0xf328('0x14')](_0xf328('0xf'),_0x36aac6,_0x269207);_0x569852(_0x269207);});});}
\ No newline at end of file
index a9a0098..2acbe00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x828e=['destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','describe','/:id','post','create','put','update'];(function(_0x4629ed,_0x59ef85){var _0x52ca04=function(_0x59dc63){while(--_0x59dc63){_0x4629ed['push'](_0x4629ed['shift']());}};_0x52ca04(++_0x59ef85);}(_0x828e,0xac));var _0xe828=function(_0x5095d6,_0x51c390){_0x5095d6=_0x5095d6-0x0;var _0x6eb73a=_0x828e[_0x5095d6];return _0x6eb73a;};'use strict';var multer=require(_0xe828('0x0'));var util=require('util');var path=require(_0xe828('0x1'));var timeout=require(_0xe828('0x2'));var express=require(_0xe828('0x3'));var router=express[_0xe828('0x4')]();var fs_extra=require(_0xe828('0x5'));var auth=require(_0xe828('0x6'));var interaction=require(_0xe828('0x7'));var config=require(_0xe828('0x8'));var controller=require('./userProfileSection.controller');router[_0xe828('0x9')]('/',auth['isAuthenticated'](),controller[_0xe828('0xa')]);router['get']('/describe',auth[_0xe828('0xb')](),controller[_0xe828('0xc')]);router['get'](_0xe828('0xd'),auth[_0xe828('0xb')](),controller['show']);router[_0xe828('0xe')]('/',auth[_0xe828('0xb')](),controller[_0xe828('0xf')]);router[_0xe828('0x10')]('/:id',auth[_0xe828('0xb')](),controller[_0xe828('0x11')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xe828('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x5ac1=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./userProfileSection.controller','get','isAuthenticated','index','/describe','/:id','post','create','put','update','delete','multer','util','path'];(function(_0x1e16ae,_0x10dfda){var _0x5cf729=function(_0xc423b8){while(--_0xc423b8){_0x1e16ae['push'](_0x1e16ae['shift']());}};_0x5cf729(++_0x10dfda);}(_0x5ac1,0x1b5));var _0x15ac=function(_0x33f634,_0x2d5819){_0x33f634=_0x33f634-0x0;var _0x2e376d=_0x5ac1[_0x33f634];return _0x2e376d;};'use strict';var multer=require(_0x15ac('0x0'));var util=require(_0x15ac('0x1'));var path=require(_0x15ac('0x2'));var timeout=require(_0x15ac('0x3'));var express=require(_0x15ac('0x4'));var router=express[_0x15ac('0x5')]();var fs_extra=require(_0x15ac('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x15ac('0x7'));var config=require(_0x15ac('0x8'));var controller=require(_0x15ac('0x9'));router[_0x15ac('0xa')]('/',auth[_0x15ac('0xb')](),controller[_0x15ac('0xc')]);router['get'](_0x15ac('0xd'),auth[_0x15ac('0xb')](),controller['describe']);router[_0x15ac('0xa')](_0x15ac('0xe'),auth['isAuthenticated'](),controller['show']);router[_0x15ac('0xf')]('/',auth['isAuthenticated'](),controller[_0x15ac('0x10')]);router[_0x15ac('0x11')]('/:id',auth[_0x15ac('0xb')](),controller[_0x15ac('0x12')]);router[_0x15ac('0x13')](_0x15ac('0xe'),auth[_0x15ac('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 264aeaf..af4c7d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58a4=['split','sequelize','exports','STRING','INTEGER','BOOLEAN','setDataValue','crudPermissions','join','getDataValue'];(function(_0x3fa5cd,_0x4f0717){var _0x4f51cd=function(_0x2b9440){while(--_0x2b9440){_0x3fa5cd['push'](_0x3fa5cd['shift']());}};_0x4f51cd(++_0x4f0717);}(_0x58a4,0xbf));var _0x458a=function(_0x4e7551,_0x398ee5){_0x4e7551=_0x4e7551-0x0;var _0x2c2ae8=_0x58a4[_0x4e7551];return _0x2c2ae8;};'use strict';var Sequelize=require(_0x458a('0x0'));module[_0x458a('0x1')]={'name':{'type':Sequelize[_0x458a('0x2')],'allowNull':![]},'category':{'type':Sequelize[_0x458a('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x458a('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0x458a('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x458a('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x458a('0x2')],'set':function(_0x362079){this[_0x458a('0x5')](_0x458a('0x6'),_0x362079?_0x362079[_0x458a('0x7')](''):[]);},'get':function(){return this[_0x458a('0x8')]('crudPermissions')?this['getDataValue'](_0x458a('0x6'))[_0x458a('0x9')](''):[];}}};
\ No newline at end of file
+var _0xd824=['STRING','setDataValue','getDataValue','crudPermissions','split','sequelize','exports','INTEGER','BOOLEAN'];(function(_0xc1dbb4,_0xc5eefb){var _0x27eedc=function(_0x3a4895){while(--_0x3a4895){_0xc1dbb4['push'](_0xc1dbb4['shift']());}};_0x27eedc(++_0xc5eefb);}(_0xd824,0xc2));var _0x4d82=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0xd824[_0xfae23b];return _0x200640;};'use strict';var Sequelize=require(_0x4d82('0x0'));module[_0x4d82('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0x4d82('0x2')],'allowNull':![]},'enabled':{'type':Sequelize[_0x4d82('0x3')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x4d82('0x3')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x4d82('0x4')],'set':function(_0x287fbf){this[_0x4d82('0x5')]('crudPermissions',_0x287fbf?_0x287fbf['join'](''):[]);},'get':function(){return this[_0x4d82('0x6')]('crudPermissions')?this['getDataValue'](_0x4d82('0x7'))[_0x4d82('0x8')](''):[];}}};
\ No newline at end of file
index 03328a9..37c21e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7709=['undefined','count','limit','set','Content-Range','apply','reject','then','destroy','error','stack','name','send','map','UserProfileSection','rawAttributes','fieldName','model','keys','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','catch','params','find','create','body','update','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','status','end','json','offset'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x7709,0x181));var _0x9770=function(_0x530183,_0x1e799d){_0x530183=_0x530183-0x0;var _0x1fb710=_0x7709[_0x530183];return _0x1fb710;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x9770('0x0'));var jsonpatch=require(_0x9770('0x1'));var rp=require(_0x9770('0x2'));var moment=require(_0x9770('0x3'));var BPromise=require(_0x9770('0x4'));var Mustache=require('mustache');var util=require(_0x9770('0x5'));var path=require('path');var sox=require(_0x9770('0x6'));var csv=require(_0x9770('0x7'));var ejs=require(_0x9770('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9770('0x9'));var squel=require(_0x9770('0xa'));var crypto=require(_0x9770('0xb'));var jsforce=require(_0x9770('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x9770('0x7'));var querystring=require(_0x9770('0xd'));var Papa=require('papaparse');var Redis=require(_0x9770('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x9770('0xf'));var as=require(_0x9770('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9770('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x9770('0x12'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x42bb50,_0x273efc){_0x273efc=_0x273efc||0xcc;return function(_0x17d824){if(_0x17d824){return _0x42bb50['sendStatus'](_0x273efc);}return _0x42bb50[_0x9770('0x13')](_0x273efc)[_0x9770('0x14')]();};}function respondWithResult(_0x5604fa,_0x563a38){_0x563a38=_0x563a38||0xc8;return function(_0x1e17c8){if(_0x1e17c8){return _0x5604fa[_0x9770('0x13')](_0x563a38)[_0x9770('0x15')](_0x1e17c8);}};}function respondWithFilteredResult(_0x2ab833,_0x3b9469){return function(_0x59e6d7){if(_0x59e6d7){var _0x5e2eb7=typeof _0x3b9469[_0x9770('0x16')]===_0x9770('0x17')&&typeof _0x3b9469['limit']===_0x9770('0x17');var _0x242a00=_0x59e6d7[_0x9770('0x18')];var _0x11fe3f=_0x5e2eb7?0x0:_0x3b9469[_0x9770('0x16')];var _0x43c05f=_0x5e2eb7?_0x59e6d7[_0x9770('0x18')]:_0x3b9469['offset']+_0x3b9469[_0x9770('0x19')];var _0x2605d3;if(_0x43c05f>=_0x242a00){_0x43c05f=_0x242a00;_0x2605d3=0xc8;}else{_0x2605d3=0xce;}_0x2ab833[_0x9770('0x13')](_0x2605d3);return _0x2ab833[_0x9770('0x1a')](_0x9770('0x1b'),_0x11fe3f+'-'+_0x43c05f+'/'+_0x242a00)['json'](_0x59e6d7);}return null;};}function patchUpdates(_0xef72c3){return function(_0x4afa0c){try{jsonpatch[_0x9770('0x1c')](_0x4afa0c,_0xef72c3,!![]);}catch(_0x2c6c0c){return BPromise[_0x9770('0x1d')](_0x2c6c0c);}return _0x4afa0c['save']();};}function saveUpdates(_0x53095b,_0x4f4bc6){return function(_0xc7583){if(_0xc7583){return _0xc7583['update'](_0x53095b)[_0x9770('0x1e')](function(_0x27ded2){return _0x27ded2;});}return null;};}function removeEntity(_0x29ead5,_0x326cca){return function(_0x3e6c0d){if(_0x3e6c0d){return _0x3e6c0d[_0x9770('0x1f')]()[_0x9770('0x1e')](function(){_0x29ead5[_0x9770('0x13')](0xcc)[_0x9770('0x14')]();});}};}function handleEntityNotFound(_0x3f0ce3,_0x4c7341){return function(_0x5161a3){if(!_0x5161a3){_0x3f0ce3['sendStatus'](0x194);}return _0x5161a3;};}function handleError(_0x37ca41,_0x217473){_0x217473=_0x217473||0x1f4;return function(_0x20dec9){logger[_0x9770('0x20')](_0x20dec9[_0x9770('0x21')]);if(_0x20dec9[_0x9770('0x22')]){delete _0x20dec9[_0x9770('0x22')];}_0x37ca41['status'](_0x217473)[_0x9770('0x23')](_0x20dec9);};}exports['index']=function(_0x9e9384,_0x33a80b){var _0x29ea95={},_0x1a3b77={},_0x2b91ae={'count':0x0,'rows':[]};var _0x2d3f46=_[_0x9770('0x24')](db[_0x9770('0x25')][_0x9770('0x26')],function(_0x548a2d){return{'name':_0x548a2d[_0x9770('0x27')],'type':_0x548a2d['type']['key']};});_0x1a3b77[_0x9770('0x28')]=_[_0x9770('0x24')](_0x2d3f46,_0x9770('0x22'));_0x1a3b77['query']=_[_0x9770('0x29')](_0x9e9384['query']);_0x1a3b77[_0x9770('0x2a')]=_['intersection'](_0x1a3b77[_0x9770('0x28')],_0x1a3b77[_0x9770('0x2b')]);_0x29ea95[_0x9770('0x2c')]=_[_0x9770('0x2d')](_0x1a3b77[_0x9770('0x28')],qs[_0x9770('0x2e')](_0x9e9384['query']['fields']));_0x29ea95[_0x9770('0x2c')]=_0x29ea95[_0x9770('0x2c')][_0x9770('0x2f')]?_0x29ea95[_0x9770('0x2c')]:_0x1a3b77['model'];if(!_0x9e9384[_0x9770('0x2b')][_0x9770('0x30')](_0x9770('0x31'))){_0x29ea95[_0x9770('0x19')]=qs[_0x9770('0x19')](_0x9e9384[_0x9770('0x2b')][_0x9770('0x19')]);_0x29ea95[_0x9770('0x16')]=qs[_0x9770('0x16')](_0x9e9384[_0x9770('0x2b')][_0x9770('0x16')]);}_0x29ea95[_0x9770('0x32')]=qs['sort'](_0x9e9384[_0x9770('0x2b')][_0x9770('0x33')]);_0x29ea95[_0x9770('0x34')]=qs[_0x9770('0x2a')](_[_0x9770('0x35')](_0x9e9384['query'],_0x1a3b77[_0x9770('0x2a')]),_0x2d3f46);if(_0x9e9384[_0x9770('0x2b')][_0x9770('0x36')]){_0x29ea95[_0x9770('0x34')]=_['merge'](_0x29ea95['where'],{'$or':_['map'](_0x2d3f46,function(_0x44faa9){if(_0x44faa9['type']!==_0x9770('0x37')){var _0x13c1b9={};_0x13c1b9[_0x44faa9['name']]={'$like':'%'+_0x9e9384[_0x9770('0x2b')][_0x9770('0x36')]+'%'};return _0x13c1b9;}})});}_0x29ea95=_[_0x9770('0x38')]({},_0x29ea95,_0x9e9384[_0x9770('0x39')]);var _0x581e70={'where':_0x29ea95['where']};return db[_0x9770('0x25')][_0x9770('0x18')](_0x581e70)[_0x9770('0x1e')](function(_0x2d1ddc){_0x2b91ae['count']=_0x2d1ddc;if(_0x9e9384[_0x9770('0x2b')][_0x9770('0x3a')]){_0x29ea95[_0x9770('0x3b')]=[{'all':!![]}];}return db[_0x9770('0x25')][_0x9770('0x3c')](_0x29ea95);})[_0x9770('0x1e')](function(_0x5135f2){_0x2b91ae['rows']=_0x5135f2;return _0x2b91ae;})['then'](respondWithFilteredResult(_0x33a80b,_0x29ea95))[_0x9770('0x3d')](handleError(_0x33a80b,null));};exports['show']=function(_0x43c0bc,_0x2e75b9){var _0x5b5479={'raw':![],'where':{'id':_0x43c0bc[_0x9770('0x3e')]['id']}},_0x3e6d80={};_0x3e6d80['model']=_[_0x9770('0x29')](db['UserProfileSection'][_0x9770('0x26')]);_0x3e6d80[_0x9770('0x2b')]=_[_0x9770('0x29')](_0x43c0bc[_0x9770('0x2b')]);_0x3e6d80['filters']=_['intersection'](_0x3e6d80[_0x9770('0x28')],_0x3e6d80[_0x9770('0x2b')]);_0x5b5479['attributes']=_[_0x9770('0x2d')](_0x3e6d80[_0x9770('0x28')],qs[_0x9770('0x2e')](_0x43c0bc[_0x9770('0x2b')][_0x9770('0x2e')]));_0x5b5479['attributes']=_0x5b5479[_0x9770('0x2c')][_0x9770('0x2f')]?_0x5b5479[_0x9770('0x2c')]:_0x3e6d80[_0x9770('0x28')];if(_0x43c0bc[_0x9770('0x2b')][_0x9770('0x3a')]){_0x5b5479['include']=[{'all':!![]}];}_0x5b5479=_[_0x9770('0x38')]({},_0x5b5479,_0x43c0bc[_0x9770('0x39')]);return db[_0x9770('0x25')][_0x9770('0x3f')](_0x5b5479)[_0x9770('0x1e')](handleEntityNotFound(_0x2e75b9,null))[_0x9770('0x1e')](respondWithResult(_0x2e75b9,null))[_0x9770('0x3d')](handleError(_0x2e75b9,null));};exports[_0x9770('0x40')]=function(_0x53a4fd,_0x5c2604){return db[_0x9770('0x25')][_0x9770('0x40')](_0x53a4fd[_0x9770('0x41')],{})[_0x9770('0x1e')](respondWithResult(_0x5c2604,0xc9))[_0x9770('0x3d')](handleError(_0x5c2604,null));};exports[_0x9770('0x42')]=function(_0x493d91,_0x37a3c5){if(_0x493d91[_0x9770('0x41')]['id']){delete _0x493d91[_0x9770('0x41')]['id'];}return db[_0x9770('0x25')][_0x9770('0x3f')]({'where':{'id':_0x493d91['params']['id']}})['then'](handleEntityNotFound(_0x37a3c5,null))[_0x9770('0x1e')](saveUpdates(_0x493d91[_0x9770('0x41')],null))[_0x9770('0x1e')](respondWithResult(_0x37a3c5,null))[_0x9770('0x3d')](handleError(_0x37a3c5,null));};exports['destroy']=function(_0x2f6d81,_0x1fc821){return db[_0x9770('0x25')]['find']({'where':{'id':_0x2f6d81[_0x9770('0x3e')]['id']}})[_0x9770('0x1e')](handleEntityNotFound(_0x1fc821,null))[_0x9770('0x1e')](removeEntity(_0x1fc821,null))['catch'](handleError(_0x1fc821,null));};exports[_0x9770('0x43')]=function(_0x311b23,_0x37e081){return db['UserProfileSection'][_0x9770('0x43')]()['then'](respondWithResult(_0x37e081,null))[_0x9770('0x3d')](handleError(_0x37e081,null));};
\ No newline at end of file
+var _0xdc53=['fields','length','nolimit','order','sort','pick','filter','where','type','merge','options','findAll','rows','catch','show','params','includeAll','include','find','create','update','body','describe','eml-format','zip-dir','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','json','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','UserProfileSection','rawAttributes','fieldName','key','model','query','keys','intersection','attributes'];(function(_0x32c7b1,_0x2803de){var _0x59497e=function(_0x5d174b){while(--_0x5d174b){_0x32c7b1['push'](_0x32c7b1['shift']());}};_0x59497e(++_0x2803de);}(_0xdc53,0x143));var _0x3dc5=function(_0x1eda20,_0x1149f4){_0x1eda20=_0x1eda20-0x0;var _0x31b953=_0xdc53[_0x1eda20];return _0x31b953;};'use strict';var emlformat=require(_0x3dc5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3dc5('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3dc5('0x2'));var moment=require(_0x3dc5('0x3'));var BPromise=require(_0x3dc5('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x3dc5('0x5'));var sox=require(_0x3dc5('0x6'));var csv=require(_0x3dc5('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3dc5('0x8'));var _=require('lodash');var squel=require(_0x3dc5('0x9'));var crypto=require(_0x3dc5('0xa'));var jsforce=require(_0x3dc5('0xb'));var deskjs=require(_0x3dc5('0xc'));var toCsv=require(_0x3dc5('0x7'));var querystring=require(_0x3dc5('0xd'));var Papa=require(_0x3dc5('0xe'));var Redis=require(_0x3dc5('0xf'));var authService=require(_0x3dc5('0x10'));var qs=require(_0x3dc5('0x11'));var as=require(_0x3dc5('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3dc5('0x13'))(_0x3dc5('0x14'));var utils=require('../../config/utils');var config=require(_0x3dc5('0x15'));var licenseUtil=require(_0x3dc5('0x16'));var db=require(_0x3dc5('0x17'))['db'];function respondWithStatusCode(_0x3ef2f6,_0x8077c4){_0x8077c4=_0x8077c4||0xcc;return function(_0x560a94){if(_0x560a94){return _0x3ef2f6['sendStatus'](_0x8077c4);}return _0x3ef2f6[_0x3dc5('0x18')](_0x8077c4)[_0x3dc5('0x19')]();};}function respondWithResult(_0x30a028,_0x38284e){_0x38284e=_0x38284e||0xc8;return function(_0x59b9e1){if(_0x59b9e1){return _0x30a028[_0x3dc5('0x18')](_0x38284e)['json'](_0x59b9e1);}};}function respondWithFilteredResult(_0x4b2a9f,_0x1639f6){return function(_0x34becc){if(_0x34becc){var _0xcc7f2b=typeof _0x1639f6[_0x3dc5('0x1a')]===_0x3dc5('0x1b')&&typeof _0x1639f6[_0x3dc5('0x1c')]===_0x3dc5('0x1b');var _0x3fd4fe=_0x34becc['count'];var _0x33fc22=_0xcc7f2b?0x0:_0x1639f6[_0x3dc5('0x1a')];var _0x3edcc6=_0xcc7f2b?_0x34becc[_0x3dc5('0x1d')]:_0x1639f6['offset']+_0x1639f6[_0x3dc5('0x1c')];var _0x5f3f11;if(_0x3edcc6>=_0x3fd4fe){_0x3edcc6=_0x3fd4fe;_0x5f3f11=0xc8;}else{_0x5f3f11=0xce;}_0x4b2a9f['status'](_0x5f3f11);return _0x4b2a9f[_0x3dc5('0x1e')]('Content-Range',_0x33fc22+'-'+_0x3edcc6+'/'+_0x3fd4fe)[_0x3dc5('0x1f')](_0x34becc);}return null;};}function patchUpdates(_0x5a9467){return function(_0x2d86a5){try{jsonpatch['apply'](_0x2d86a5,_0x5a9467,!![]);}catch(_0x36cb82){return BPromise[_0x3dc5('0x20')](_0x36cb82);}return _0x2d86a5[_0x3dc5('0x21')]();};}function saveUpdates(_0x173c34,_0x1de8c5){return function(_0x537aa7){if(_0x537aa7){return _0x537aa7['update'](_0x173c34)[_0x3dc5('0x22')](function(_0x3082b8){return _0x3082b8;});}return null;};}function removeEntity(_0x45bb2c,_0x415c95){return function(_0x45f525){if(_0x45f525){return _0x45f525[_0x3dc5('0x23')]()['then'](function(){_0x45bb2c['status'](0xcc)[_0x3dc5('0x19')]();});}};}function handleEntityNotFound(_0x1c30b0,_0x7a3c5b){return function(_0x454bdc){if(!_0x454bdc){_0x1c30b0[_0x3dc5('0x24')](0x194);}return _0x454bdc;};}function handleError(_0x32d2f7,_0x19081f){_0x19081f=_0x19081f||0x1f4;return function(_0x24a850){logger[_0x3dc5('0x25')](_0x24a850[_0x3dc5('0x26')]);if(_0x24a850['name']){delete _0x24a850[_0x3dc5('0x27')];}_0x32d2f7[_0x3dc5('0x18')](_0x19081f)[_0x3dc5('0x28')](_0x24a850);};}exports[_0x3dc5('0x29')]=function(_0x381225,_0xb00d28){var _0x20e8a8={},_0x43c603={},_0x4278e7={'count':0x0,'rows':[]};var _0x5e4530=_[_0x3dc5('0x2a')](db[_0x3dc5('0x2b')][_0x3dc5('0x2c')],function(_0x4c33de){return{'name':_0x4c33de[_0x3dc5('0x2d')],'type':_0x4c33de['type'][_0x3dc5('0x2e')]};});_0x43c603[_0x3dc5('0x2f')]=_[_0x3dc5('0x2a')](_0x5e4530,'name');_0x43c603[_0x3dc5('0x30')]=_[_0x3dc5('0x31')](_0x381225[_0x3dc5('0x30')]);_0x43c603['filters']=_[_0x3dc5('0x32')](_0x43c603[_0x3dc5('0x2f')],_0x43c603[_0x3dc5('0x30')]);_0x20e8a8[_0x3dc5('0x33')]=_[_0x3dc5('0x32')](_0x43c603[_0x3dc5('0x2f')],qs[_0x3dc5('0x34')](_0x381225[_0x3dc5('0x30')][_0x3dc5('0x34')]));_0x20e8a8[_0x3dc5('0x33')]=_0x20e8a8['attributes'][_0x3dc5('0x35')]?_0x20e8a8[_0x3dc5('0x33')]:_0x43c603[_0x3dc5('0x2f')];if(!_0x381225['query']['hasOwnProperty'](_0x3dc5('0x36'))){_0x20e8a8['limit']=qs[_0x3dc5('0x1c')](_0x381225[_0x3dc5('0x30')][_0x3dc5('0x1c')]);_0x20e8a8[_0x3dc5('0x1a')]=qs[_0x3dc5('0x1a')](_0x381225[_0x3dc5('0x30')][_0x3dc5('0x1a')]);}_0x20e8a8[_0x3dc5('0x37')]=qs[_0x3dc5('0x38')](_0x381225[_0x3dc5('0x30')][_0x3dc5('0x38')]);_0x20e8a8['where']=qs['filters'](_[_0x3dc5('0x39')](_0x381225[_0x3dc5('0x30')],_0x43c603['filters']),_0x5e4530);if(_0x381225[_0x3dc5('0x30')][_0x3dc5('0x3a')]){_0x20e8a8[_0x3dc5('0x3b')]=_['merge'](_0x20e8a8['where'],{'$or':_[_0x3dc5('0x2a')](_0x5e4530,function(_0x5b5733){if(_0x5b5733[_0x3dc5('0x3c')]!=='VIRTUAL'){var _0x922c11={};_0x922c11[_0x5b5733['name']]={'$like':'%'+_0x381225[_0x3dc5('0x30')][_0x3dc5('0x3a')]+'%'};return _0x922c11;}})});}_0x20e8a8=_[_0x3dc5('0x3d')]({},_0x20e8a8,_0x381225[_0x3dc5('0x3e')]);var _0x2889b9={'where':_0x20e8a8[_0x3dc5('0x3b')]};return db[_0x3dc5('0x2b')][_0x3dc5('0x1d')](_0x2889b9)['then'](function(_0x73a6aa){_0x4278e7[_0x3dc5('0x1d')]=_0x73a6aa;if(_0x381225[_0x3dc5('0x30')]['includeAll']){_0x20e8a8['include']=[{'all':!![]}];}return db[_0x3dc5('0x2b')][_0x3dc5('0x3f')](_0x20e8a8);})[_0x3dc5('0x22')](function(_0x47d8d1){_0x4278e7[_0x3dc5('0x40')]=_0x47d8d1;return _0x4278e7;})[_0x3dc5('0x22')](respondWithFilteredResult(_0xb00d28,_0x20e8a8))[_0x3dc5('0x41')](handleError(_0xb00d28,null));};exports[_0x3dc5('0x42')]=function(_0x3a67f7,_0x3a6daa){var _0x54b3fb={'raw':![],'where':{'id':_0x3a67f7[_0x3dc5('0x43')]['id']}},_0x24e0c7={};_0x24e0c7[_0x3dc5('0x2f')]=_['keys'](db[_0x3dc5('0x2b')][_0x3dc5('0x2c')]);_0x24e0c7['query']=_[_0x3dc5('0x31')](_0x3a67f7[_0x3dc5('0x30')]);_0x24e0c7['filters']=_[_0x3dc5('0x32')](_0x24e0c7['model'],_0x24e0c7[_0x3dc5('0x30')]);_0x54b3fb[_0x3dc5('0x33')]=_['intersection'](_0x24e0c7[_0x3dc5('0x2f')],qs[_0x3dc5('0x34')](_0x3a67f7['query'][_0x3dc5('0x34')]));_0x54b3fb['attributes']=_0x54b3fb[_0x3dc5('0x33')]['length']?_0x54b3fb[_0x3dc5('0x33')]:_0x24e0c7[_0x3dc5('0x2f')];if(_0x3a67f7[_0x3dc5('0x30')][_0x3dc5('0x44')]){_0x54b3fb[_0x3dc5('0x45')]=[{'all':!![]}];}_0x54b3fb=_[_0x3dc5('0x3d')]({},_0x54b3fb,_0x3a67f7['options']);return db[_0x3dc5('0x2b')][_0x3dc5('0x46')](_0x54b3fb)['then'](handleEntityNotFound(_0x3a6daa,null))[_0x3dc5('0x22')](respondWithResult(_0x3a6daa,null))[_0x3dc5('0x41')](handleError(_0x3a6daa,null));};exports['create']=function(_0x5a34ae,_0x2a0073){return db['UserProfileSection'][_0x3dc5('0x47')](_0x5a34ae['body'],{})[_0x3dc5('0x22')](respondWithResult(_0x2a0073,0xc9))[_0x3dc5('0x41')](handleError(_0x2a0073,null));};exports[_0x3dc5('0x48')]=function(_0x1d073b,_0x41a188){if(_0x1d073b[_0x3dc5('0x49')]['id']){delete _0x1d073b[_0x3dc5('0x49')]['id'];}return db['UserProfileSection'][_0x3dc5('0x46')]({'where':{'id':_0x1d073b[_0x3dc5('0x43')]['id']}})['then'](handleEntityNotFound(_0x41a188,null))[_0x3dc5('0x22')](saveUpdates(_0x1d073b[_0x3dc5('0x49')],null))[_0x3dc5('0x22')](respondWithResult(_0x41a188,null))[_0x3dc5('0x41')](handleError(_0x41a188,null));};exports[_0x3dc5('0x23')]=function(_0x29666d,_0xf96a61){return db[_0x3dc5('0x2b')][_0x3dc5('0x46')]({'where':{'id':_0x29666d['params']['id']}})[_0x3dc5('0x22')](handleEntityNotFound(_0xf96a61,null))[_0x3dc5('0x22')](removeEntity(_0xf96a61,null))[_0x3dc5('0x41')](handleError(_0xf96a61,null));};exports['describe']=function(_0x5e68a7,_0xddb940){return db['UserProfileSection'][_0x3dc5('0x4a')]()['then'](respondWithResult(_0xddb940,null))[_0x3dc5('0x41')](handleError(_0xddb940,null));};
\ No newline at end of file
index 1e87a4c..362a8b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49e4=['rimraf','exports','define','UserProfileSection','compositeIndex','sectionId','userProfileId','util','api','moment','bluebird','request-promise','path'];(function(_0x48b7fe,_0x38dc26){var _0x1f0f56=function(_0x48f03c){while(--_0x48f03c){_0x48b7fe['push'](_0x48b7fe['shift']());}};_0x1f0f56(++_0x38dc26);}(_0x49e4,0x1c1));var _0x449e=function(_0x21aac8,_0x2858d4){_0x21aac8=_0x21aac8-0x0;var _0x79b387=_0x49e4[_0x21aac8];return _0x79b387;};'use strict';var _=require('lodash');var util=require(_0x449e('0x0'));var logger=require('../../config/logger')(_0x449e('0x1'));var moment=require(_0x449e('0x2'));var BPromise=require(_0x449e('0x3'));var rp=require(_0x449e('0x4'));var fs=require('fs');var path=require(_0x449e('0x5'));var rimraf=require(_0x449e('0x6'));var config=require('../../config/environment');var attributes=require('./userProfileSection.attributes');module[_0x449e('0x7')]=function(_0x3eb864,_0x7471f2){return _0x3eb864[_0x449e('0x8')](_0x449e('0x9'),attributes,{'tableName':'user_profile_has_sections','paranoid':![],'indexes':[{'name':_0x449e('0xa'),'fields':[_0x449e('0xb'),_0x449e('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4822=['request-promise','path','rimraf','../../config/environment','./userProfileSection.attributes','exports','UserProfileSection','user_profile_has_sections','compositeIndex','userProfileId','lodash','../../config/logger','api','moment','bluebird'];(function(_0x22085e,_0x460e20){var _0x298a94=function(_0x2f241d){while(--_0x2f241d){_0x22085e['push'](_0x22085e['shift']());}};_0x298a94(++_0x460e20);}(_0x4822,0xeb));var _0x2482=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x4822[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0x2482('0x0'));var util=require('util');var logger=require(_0x2482('0x1'))(_0x2482('0x2'));var moment=require(_0x2482('0x3'));var BPromise=require(_0x2482('0x4'));var rp=require(_0x2482('0x5'));var fs=require('fs');var path=require(_0x2482('0x6'));var rimraf=require(_0x2482('0x7'));var config=require(_0x2482('0x8'));var attributes=require(_0x2482('0x9'));module[_0x2482('0xa')]=function(_0x19a156,_0x677c6c){return _0x19a156['define'](_0x2482('0xb'),attributes,{'tableName':_0x2482('0xc'),'paranoid':![],'indexes':[{'name':_0x2482('0xd'),'fields':['sectionId',_0x2482('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 6fd616a..f7bded4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e38=['ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','moment','bluebird'];(function(_0x441fac,_0x241af5){var _0x17a797=function(_0x16f0d5){while(--_0x16f0d5){_0x441fac['push'](_0x441fac['shift']());}};_0x17a797(++_0x241af5);}(_0x9e38,0x107));var _0x89e3=function(_0x1f0724,_0x3a58bf){_0x1f0724=_0x1f0724-0x0;var _0x253ffb=_0x9e38[_0x1f0724];return _0x253ffb;};'use strict';var _=require(_0x89e3('0x0'));var util=require('util');var moment=require(_0x89e3('0x1'));var BPromise=require(_0x89e3('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x89e3('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x89e3('0x4'));var logger=require(_0x89e3('0x5'))('rpc');var config=require(_0x89e3('0x6'));var jayson=require(_0x89e3('0x7'));var client=jayson[_0x89e3('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0xd24d32,_0x4867f7,_0x4d927c){return new BPromise(function(_0x50dd51,_0x1cb5c5){return client['request'](_0xd24d32,_0x4d927c)[_0x89e3('0x9')](function(_0x378a61){logger[_0x89e3('0xa')](_0x89e3('0xb'),_0x4867f7,_0x89e3('0xc'));logger[_0x89e3('0xd')]('UserProfileSection,\x20%s,\x20%s,\x20%s',_0x4867f7,_0x89e3('0xc'),JSON['stringify'](_0x378a61));if(_0x378a61['error']){if(_0x378a61[_0x89e3('0xe')][_0x89e3('0xf')]===0x1f4){logger[_0x89e3('0xe')](_0x89e3('0xb'),_0x4867f7,_0x378a61[_0x89e3('0xe')]['message']);return _0x1cb5c5(_0x378a61['error'][_0x89e3('0x10')]);}logger[_0x89e3('0xe')](_0x89e3('0xb'),_0x4867f7,_0x378a61[_0x89e3('0xe')][_0x89e3('0x10')]);return _0x50dd51(_0x378a61[_0x89e3('0xe')][_0x89e3('0x10')]);}else{logger[_0x89e3('0xa')](_0x89e3('0xb'),_0x4867f7,_0x89e3('0xc'));_0x50dd51(_0x378a61[_0x89e3('0x11')][_0x89e3('0x10')]);}})[_0x89e3('0x12')](function(_0x407a84){logger[_0x89e3('0xe')](_0x89e3('0xb'),_0x4867f7,_0x407a84);_0x1cb5c5(_0x407a84);});});}
\ No newline at end of file
+var _0x1902=['request\x20sent','stringify','error','message','catch','lodash','moment','bluebird','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserProfileSection,\x20%s,\x20%s','UserProfileSection,\x20%s,\x20%s,\x20%s'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x1902,0x148));var _0x2190=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1902[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2190('0x0'));var util=require('util');var moment=require(_0x2190('0x1'));var BPromise=require(_0x2190('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x2190('0x3'));var logger=require('../../config/logger')(_0x2190('0x4'));var config=require(_0x2190('0x5'));var jayson=require(_0x2190('0x6'));var client=jayson[_0x2190('0x7')][_0x2190('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x36323d,_0x42aaea,_0x45961d){return new BPromise(function(_0x2d1709,_0x46f617){return client[_0x2190('0x9')](_0x36323d,_0x45961d)[_0x2190('0xa')](function(_0x5c964f){logger[_0x2190('0xb')](_0x2190('0xc'),_0x42aaea,'request\x20sent');logger['debug'](_0x2190('0xd'),_0x42aaea,_0x2190('0xe'),JSON[_0x2190('0xf')](_0x5c964f));if(_0x5c964f['error']){if(_0x5c964f[_0x2190('0x10')]['code']===0x1f4){logger[_0x2190('0x10')](_0x2190('0xc'),_0x42aaea,_0x5c964f[_0x2190('0x10')][_0x2190('0x11')]);return _0x46f617(_0x5c964f[_0x2190('0x10')][_0x2190('0x11')]);}logger[_0x2190('0x10')](_0x2190('0xc'),_0x42aaea,_0x5c964f[_0x2190('0x10')][_0x2190('0x11')]);return _0x2d1709(_0x5c964f[_0x2190('0x10')][_0x2190('0x11')]);}else{logger['info'](_0x2190('0xc'),_0x42aaea,_0x2190('0xe'));_0x2d1709(_0x5c964f['result']['message']);}})[_0x2190('0x12')](function(_0x253469){logger[_0x2190('0x10')](_0x2190('0xc'),_0x42aaea,_0x253469);_0x46f617(_0x253469);});});}
\ No newline at end of file
index 089fee0..f2936a2 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(_0x3d5db9,_0x2dbe0a){var _0x3c114c=function(_0x3e0239){while(--_0x3e0239){_0x3d5db9['push'](_0x3d5db9['shift']());}};_0x3c114c(++_0x2dbe0a);}(_0x9c44,0x178));var _0x49c4=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0x9c44[_0x209941];return _0x1e8729;};'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(_0x405aeb,_0x5ee732){var _0x50e76a=function(_0x2cded1){while(--_0x2cded1){_0x405aeb['push'](_0x405aeb['shift']());}};_0x50e76a(++_0x5ee732);}(_0x9c44,0x178));var _0x49c4=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0x9c44[_0x2e4aa2];return _0x5e6092;};'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 584771e..46b3bbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fb1=['exports','INTEGER','sequelize'];(function(_0x10b3f6,_0x5eb3b5){var _0x1a6666=function(_0x24b670){while(--_0x24b670){_0x10b3f6['push'](_0x10b3f6['shift']());}};_0x1a6666(++_0x5eb3b5);}(_0x3fb1,0x8c));var _0x13fb=function(_0x455b12,_0x10ab4a){_0x455b12=_0x455b12-0x0;var _0x4ded00=_0x3fb1[_0x455b12];return _0x4ded00;};'use strict';var Sequelize=require(_0x13fb('0x0'));module[_0x13fb('0x1')]={'penalty':{'type':Sequelize[_0x13fb('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xbc2b=['sequelize','INTEGER'];(function(_0x5224ba,_0x3fb4e1){var _0x459bd2=function(_0x61be43){while(--_0x61be43){_0x5224ba['push'](_0x5224ba['shift']());}};_0x459bd2(++_0x3fb4e1);}(_0xbc2b,0x11e));var _0xbbc2=function(_0x2d92c7,_0x1bf92a){_0x2d92c7=_0x2d92c7-0x0;var _0x463861=_0xbc2b[_0x2d92c7];return _0x463861;};'use strict';var Sequelize=require(_0xbbc2('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xbbc2('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index e47e40f..e262e3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd0a=['user_has_sms_queues','lodash','../../config/logger','request-promise','path','rimraf','../../config/environment','./userSmsQueue.attributes','exports','define'];(function(_0xd0b415,_0x149675){var _0x2bdf2c=function(_0x59fbfa){while(--_0x59fbfa){_0xd0b415['push'](_0xd0b415['shift']());}};_0x2bdf2c(++_0x149675);}(_0xbd0a,0x1b9));var _0xabd0=function(_0x48b696,_0x55cc88){_0x48b696=_0x48b696-0x0;var _0x58e2f3=_0xbd0a[_0x48b696];return _0x58e2f3;};'use strict';var _=require(_0xabd0('0x0'));var util=require('util');var logger=require(_0xabd0('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xabd0('0x2'));var fs=require('fs');var path=require(_0xabd0('0x3'));var rimraf=require(_0xabd0('0x4'));var config=require(_0xabd0('0x5'));var attributes=require(_0xabd0('0x6'));module[_0xabd0('0x7')]=function(_0x221368,_0xb41697){return _0x221368[_0xabd0('0x8')]('UserSmsQueue',attributes,{'tableName':_0xabd0('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc0d7=['rimraf','../../config/environment','./userSmsQueue.attributes','exports','define','UserSmsQueue','user_has_sms_queues','api','moment','bluebird','request-promise','path'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xc0d7,0x7f));var _0x7c0d=function(_0x3cc098,_0x267ea2){_0x3cc098=_0x3cc098-0x0;var _0x5c4967=_0xc0d7[_0x3cc098];return _0x5c4967;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0x7c0d('0x0'));var moment=require(_0x7c0d('0x1'));var BPromise=require(_0x7c0d('0x2'));var rp=require(_0x7c0d('0x3'));var fs=require('fs');var path=require(_0x7c0d('0x4'));var rimraf=require(_0x7c0d('0x5'));var config=require(_0x7c0d('0x6'));var attributes=require(_0x7c0d('0x7'));module[_0x7c0d('0x8')]=function(_0x5a6a70,_0x507bc0){return _0x5a6a70[_0x7c0d('0x9')](_0x7c0d('0xa'),attributes,{'tableName':_0x7c0d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e353f80..cd51d2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f00=['UserSmsQueue,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','http','request','info','UserSmsQueue,\x20%s,\x20%s','debug'];(function(_0x431fc3,_0x4a4354){var _0x3da394=function(_0x42dec0){while(--_0x42dec0){_0x431fc3['push'](_0x431fc3['shift']());}};_0x3da394(++_0x4a4354);}(_0x1f00,0x181));var _0x01f0=function(_0x3fa8bd,_0xd89912){_0x3fa8bd=_0x3fa8bd-0x0;var _0x41d3e7=_0x1f00[_0x3fa8bd];return _0x41d3e7;};'use strict';var _=require('lodash');var util=require(_0x01f0('0x0'));var moment=require(_0x01f0('0x1'));var BPromise=require(_0x01f0('0x2'));var rs=require(_0x01f0('0x3'));var fs=require('fs');var Redis=require(_0x01f0('0x4'));var db=require(_0x01f0('0x5'))['db'];var utils=require(_0x01f0('0x6'));var logger=require('../../config/logger')(_0x01f0('0x7'));var config=require(_0x01f0('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x01f0('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xfd1833,_0x2957f5,_0x3542fc){return new BPromise(function(_0x5ddef3,_0x1261b6){return client[_0x01f0('0xa')](_0xfd1833,_0x3542fc)['then'](function(_0x14cec0){logger[_0x01f0('0xb')](_0x01f0('0xc'),_0x2957f5,'request\x20sent');logger[_0x01f0('0xd')](_0x01f0('0xe'),_0x2957f5,'request\x20sent',JSON['stringify'](_0x14cec0));if(_0x14cec0[_0x01f0('0xf')]){if(_0x14cec0[_0x01f0('0xf')][_0x01f0('0x10')]===0x1f4){logger['error'](_0x01f0('0xc'),_0x2957f5,_0x14cec0['error']['message']);return _0x1261b6(_0x14cec0[_0x01f0('0xf')]['message']);}logger['error']('UserSmsQueue,\x20%s,\x20%s',_0x2957f5,_0x14cec0[_0x01f0('0xf')]['message']);return _0x5ddef3(_0x14cec0[_0x01f0('0xf')][_0x01f0('0x11')]);}else{logger[_0x01f0('0xb')](_0x01f0('0xc'),_0x2957f5,_0x01f0('0x12'));_0x5ddef3(_0x14cec0[_0x01f0('0x13')]['message']);}})[_0x01f0('0x14')](function(_0x4e9394){logger[_0x01f0('0xf')]('UserSmsQueue,\x20%s,\x20%s',_0x2957f5,_0x4e9394);_0x1261b6(_0x4e9394);});});}
\ No newline at end of file
+var _0xc246=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x5669d4,_0x21fd75){var _0x5e8bfd=function(_0x27bfb5){while(--_0x27bfb5){_0x5669d4['push'](_0x5669d4['shift']());}};_0x5e8bfd(++_0x21fd75);}(_0xc246,0x198));var _0x6c24=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc246[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x6c24('0x0'));var util=require(_0x6c24('0x1'));var moment=require(_0x6c24('0x2'));var BPromise=require(_0x6c24('0x3'));var rs=require(_0x6c24('0x4'));var fs=require('fs');var Redis=require(_0x6c24('0x5'));var db=require(_0x6c24('0x6'))['db'];var utils=require(_0x6c24('0x7'));var logger=require(_0x6c24('0x8'))(_0x6c24('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x6c24('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x44a90d,_0x30c59b,_0x2f6e72){return new BPromise(function(_0x361015,_0x4f6f0f){return client[_0x6c24('0xb')](_0x44a90d,_0x2f6e72)[_0x6c24('0xc')](function(_0x2d197d){logger[_0x6c24('0xd')](_0x6c24('0xe'),_0x30c59b,_0x6c24('0xf'));logger['debug'](_0x6c24('0x10'),_0x30c59b,_0x6c24('0xf'),JSON[_0x6c24('0x11')](_0x2d197d));if(_0x2d197d[_0x6c24('0x12')]){if(_0x2d197d[_0x6c24('0x12')][_0x6c24('0x13')]===0x1f4){logger[_0x6c24('0x12')]('UserSmsQueue,\x20%s,\x20%s',_0x30c59b,_0x2d197d[_0x6c24('0x12')][_0x6c24('0x14')]);return _0x4f6f0f(_0x2d197d[_0x6c24('0x12')][_0x6c24('0x14')]);}logger[_0x6c24('0x12')](_0x6c24('0xe'),_0x30c59b,_0x2d197d[_0x6c24('0x12')]['message']);return _0x361015(_0x2d197d[_0x6c24('0x12')][_0x6c24('0x14')]);}else{logger[_0x6c24('0xd')](_0x6c24('0xe'),_0x30c59b,_0x6c24('0xf'));_0x361015(_0x2d197d[_0x6c24('0x15')][_0x6c24('0x14')]);}})[_0x6c24('0x16')](function(_0x2b9342){logger['error'](_0x6c24('0xe'),_0x30c59b,_0x2b9342);_0x4f6f0f(_0x2b9342);});});}
\ No newline at end of file
index 6142ddc..3140c75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x011c=['INTEGER','sequelize'];(function(_0x5b7788,_0x309ae5){var _0x573871=function(_0x5c79fd){while(--_0x5c79fd){_0x5b7788['push'](_0x5b7788['shift']());}};_0x573871(++_0x309ae5);}(_0x011c,0x87));var _0xc011=function(_0x38499f,_0x30a52c){_0x38499f=_0x38499f-0x0;var _0x1bec1e=_0x011c[_0x38499f];return _0x1bec1e;};'use strict';var Sequelize=require(_0xc011('0x0'));module['exports']={'UserId':{'type':Sequelize[_0xc011('0x1')]},'VoicePrefixId':{'type':Sequelize[_0xc011('0x1')]}};
\ No newline at end of file
+var _0x84c6=['exports','INTEGER','sequelize'];(function(_0x503246,_0xa34c3){var _0x4fd33c=function(_0x2ac363){while(--_0x2ac363){_0x503246['push'](_0x503246['shift']());}};_0x4fd33c(++_0xa34c3);}(_0x84c6,0x1ca));var _0x684c=function(_0x13cac2,_0x1c2e09){_0x13cac2=_0x13cac2-0x0;var _0x53ea69=_0x84c6[_0x13cac2];return _0x53ea69;};'use strict';var Sequelize=require(_0x684c('0x0'));module[_0x684c('0x1')]={'UserId':{'type':Sequelize[_0x684c('0x2')]},'VoicePrefixId':{'type':Sequelize[_0x684c('0x2')]}};
\ No newline at end of file
index 522d264..f6fba4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x53d863,_0x2fd998){var _0xecc6f6=function(_0x49b075){while(--_0x49b075){_0x53d863['push'](_0x53d863['shift']());}};_0xecc6f6(++_0x2fd998);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3e112d,_0x2bb132){_0x3e112d=_0x3e112d-0x0;var _0x531c31=_0xa9e0[_0x3e112d];return _0x531c31;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x3534a3,_0x4d7af6){var _0x50b52e=function(_0x39d3f8){while(--_0x39d3f8){_0x3534a3['push'](_0x3534a3['shift']());}};_0x50b52e(++_0x4d7af6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xa9e0[_0x4fc9e6];return _0x551d28;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 34f4051..fa5a41f 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(_0x41b6eb,_0x4f84b7){var _0xb44dda=function(_0x309dc8){while(--_0x309dc8){_0x41b6eb['push'](_0x41b6eb['shift']());}};_0xb44dda(++_0x4f84b7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xa9e0[_0x491a7f];return _0x3d8f44;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x155dad,_0x6e98d4){var _0x200de9=function(_0x30c359){while(--_0x30c359){_0x155dad['push'](_0x155dad['shift']());}};_0x200de9(++_0x6e98d4);}(_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 da139db..82fd668 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde71=['exports','INTEGER','sequelize'];(function(_0x57334f,_0xa3fc31){var _0xe4c0fb=function(_0x1941cb){while(--_0x1941cb){_0x57334f['push'](_0x57334f['shift']());}};_0xe4c0fb(++_0xa3fc31);}(_0xde71,0x155));var _0x1de7=function(_0x1bc762,_0x523eb3){_0x1bc762=_0x1bc762-0x0;var _0x40f70c=_0xde71[_0x1bc762];return _0x40f70c;};'use strict';var Sequelize=require(_0x1de7('0x0'));module[_0x1de7('0x1')]={'penalty':{'type':Sequelize[_0x1de7('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6755=['INTEGER','sequelize'];(function(_0x5d1bce,_0x245991){var _0x25d169=function(_0x588e62){while(--_0x588e62){_0x5d1bce['push'](_0x5d1bce['shift']());}};_0x25d169(++_0x245991);}(_0x6755,0xa7));var _0x5675=function(_0x3b6588,_0x5def80){_0x3b6588=_0x3b6588-0x0;var _0x4a8f6a=_0x6755[_0x3b6588];return _0x4a8f6a;};'use strict';var Sequelize=require(_0x5675('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x5675('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 2a025a9..edff3ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26ca=['exports','define','UserVoiceQueue','user_has_voice_queues','lodash','util','api','moment','path','rimraf','../../config/environment','./userVoiceQueue.attributes'];(function(_0x19c637,_0x109f66){var _0x13f3f6=function(_0x5d16f5){while(--_0x5d16f5){_0x19c637['push'](_0x19c637['shift']());}};_0x13f3f6(++_0x109f66);}(_0x26ca,0x190));var _0xa26c=function(_0x81dcac,_0x8ff7db){_0x81dcac=_0x81dcac-0x0;var _0xc7803b=_0x26ca[_0x81dcac];return _0xc7803b;};'use strict';var _=require(_0xa26c('0x0'));var util=require(_0xa26c('0x1'));var logger=require('../../config/logger')(_0xa26c('0x2'));var moment=require(_0xa26c('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa26c('0x4'));var rimraf=require(_0xa26c('0x5'));var config=require(_0xa26c('0x6'));var attributes=require(_0xa26c('0x7'));module[_0xa26c('0x8')]=function(_0x3f1842,_0x30594b){return _0x3f1842[_0xa26c('0x9')](_0xa26c('0xa'),attributes,{'tableName':_0xa26c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3d51=['./userVoiceQueue.attributes','define','UserVoiceQueue','user_has_voice_queues','lodash','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x3d51,0x1c6));var _0x13d5=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x3d51[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x13d5('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x13d5('0x1'));var BPromise=require(_0x13d5('0x2'));var rp=require(_0x13d5('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x13d5('0x4'));var config=require(_0x13d5('0x5'));var attributes=require(_0x13d5('0x6'));module['exports']=function(_0x535b85,_0x28ca43){return _0x535b85[_0x13d5('0x7')](_0x13d5('0x8'),attributes,{'tableName':_0x13d5('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4b0756f..8a02dce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1423=['error','code','message','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x1ab1b6,_0x3bedf8){var _0x215c12=function(_0x5955c6){while(--_0x5955c6){_0x1ab1b6['push'](_0x1ab1b6['shift']());}};_0x215c12(++_0x3bedf8);}(_0x1423,0x76));var _0x3142=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x1423[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x3142('0x0'));var util=require(_0x3142('0x1'));var moment=require(_0x3142('0x2'));var BPromise=require('bluebird');var rs=require(_0x3142('0x3'));var fs=require('fs');var Redis=require(_0x3142('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x3142('0x5'));var logger=require(_0x3142('0x6'))(_0x3142('0x7'));var config=require('../../config/environment');var jayson=require(_0x3142('0x8'));var client=jayson['client'][_0x3142('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x53bfe4,_0x4f5554,_0xf1a56c){return new BPromise(function(_0x5eb29d,_0x4e9f8f){return client[_0x3142('0xa')](_0x53bfe4,_0xf1a56c)['then'](function(_0x56c366){logger[_0x3142('0xb')](_0x3142('0xc'),_0x4f5554,_0x3142('0xd'));logger['debug']('UserVoiceQueue,\x20%s,\x20%s,\x20%s',_0x4f5554,'request\x20sent',JSON[_0x3142('0xe')](_0x56c366));if(_0x56c366[_0x3142('0xf')]){if(_0x56c366['error'][_0x3142('0x10')]===0x1f4){logger[_0x3142('0xf')](_0x3142('0xc'),_0x4f5554,_0x56c366[_0x3142('0xf')][_0x3142('0x11')]);return _0x4e9f8f(_0x56c366[_0x3142('0xf')]['message']);}logger[_0x3142('0xf')](_0x3142('0xc'),_0x4f5554,_0x56c366[_0x3142('0xf')][_0x3142('0x11')]);return _0x5eb29d(_0x56c366[_0x3142('0xf')][_0x3142('0x11')]);}else{logger[_0x3142('0xb')]('UserVoiceQueue,\x20%s,\x20%s',_0x4f5554,_0x3142('0xd'));_0x5eb29d(_0x56c366['result'][_0x3142('0x11')]);}})[_0x3142('0x12')](function(_0x3cbdf4){logger[_0x3142('0xf')](_0x3142('0xc'),_0x4f5554,_0x3cbdf4);_0x4e9f8f(_0x3cbdf4);});});}
\ No newline at end of file
+var _0x650d=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UserVoiceQueue,\x20%s,\x20%s','result','catch','moment','bluebird','randomstring','ioredis'];(function(_0x5be9a3,_0x490212){var _0x53b5a9=function(_0xfb1abc){while(--_0xfb1abc){_0x5be9a3['push'](_0x5be9a3['shift']());}};_0x53b5a9(++_0x490212);}(_0x650d,0xee));var _0xd650=function(_0x27830a,_0x4e8504){_0x27830a=_0x27830a-0x0;var _0x32ccc3=_0x650d[_0x27830a];return _0x32ccc3;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xd650('0x0'));var BPromise=require(_0xd650('0x1'));var rs=require(_0xd650('0x2'));var fs=require('fs');var Redis=require(_0xd650('0x3'));var db=require(_0xd650('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd650('0x5'))(_0xd650('0x6'));var config=require(_0xd650('0x7'));var jayson=require(_0xd650('0x8'));var client=jayson[_0xd650('0x9')][_0xd650('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3907e5,_0x45b47f,_0x474cff){return new BPromise(function(_0x51a450,_0x2aed56){return client['request'](_0x3907e5,_0x474cff)['then'](function(_0x50a544){logger[_0xd650('0xb')]('UserVoiceQueue,\x20%s,\x20%s',_0x45b47f,_0xd650('0xc'));logger[_0xd650('0xd')](_0xd650('0xe'),_0x45b47f,_0xd650('0xc'),JSON[_0xd650('0xf')](_0x50a544));if(_0x50a544[_0xd650('0x10')]){if(_0x50a544[_0xd650('0x10')][_0xd650('0x11')]===0x1f4){logger[_0xd650('0x10')]('UserVoiceQueue,\x20%s,\x20%s',_0x45b47f,_0x50a544[_0xd650('0x10')][_0xd650('0x12')]);return _0x2aed56(_0x50a544['error'][_0xd650('0x12')]);}logger[_0xd650('0x10')](_0xd650('0x13'),_0x45b47f,_0x50a544[_0xd650('0x10')][_0xd650('0x12')]);return _0x51a450(_0x50a544[_0xd650('0x10')][_0xd650('0x12')]);}else{logger['info'](_0xd650('0x13'),_0x45b47f,_0xd650('0xc'));_0x51a450(_0x50a544[_0xd650('0x14')][_0xd650('0x12')]);}})[_0xd650('0x15')](function(_0x16cce3){logger[_0xd650('0x10')]('UserVoiceQueue,\x20%s,\x20%s',_0x45b47f,_0x16cce3);_0x2aed56(_0x16cce3);});});}
\ No newline at end of file
index 2c412a8..d6d2798 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(_0x32aa00,_0x53e494){var _0x3ae564=function(_0x1eeb8f){while(--_0x1eeb8f){_0x32aa00['push'](_0x32aa00['shift']());}};_0x3ae564(++_0x53e494);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0xf16b1,_0x33c637){var _0x26f94d=function(_0x5643d7){while(--_0x5643d7){_0xf16b1['push'](_0xf16b1['shift']());}};_0x26f94d(++_0x33c637);}(_0x9c44,0x178));var _0x49c4=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0x9c44[_0x3511d3];return _0x5d6321;};'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 2f261da..da0e92b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36eb=['Required\x20by\x20Asterisk','sequelize','INTEGER','STRING'];(function(_0x1cfa0d,_0x4391f2){var _0xe33279=function(_0x3ce7c1){while(--_0x3ce7c1){_0x1cfa0d['push'](_0x1cfa0d['shift']());}};_0xe33279(++_0x4391f2);}(_0x36eb,0x111));var _0xb36e=function(_0x5b50b0,_0x51f71b){_0x5b50b0=_0x5b50b0-0x0;var _0x43ac6d=_0x36eb[_0x5b50b0];return _0x43ac6d;};'use strict';var Sequelize=require(_0xb36e('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xb36e('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0xb36e('0x2')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize[_0xb36e('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'queue_interface','comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize[_0xb36e('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0xb36e('0x2')],'allowNull':![],'unique':'queue_interface','comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize[_0xb36e('0x1')](0xb),'defaultValue':0x0,'comment':_0xb36e('0x3')},'paused':{'type':Sequelize[_0xb36e('0x1')](0xb),'defaultValue':0x0,'comment':_0xb36e('0x3')}};
\ No newline at end of file
+var _0x197d=['Required\x20by\x20Asterisk','STRING','queue_interface','exports','INTEGER'];(function(_0x3bfa9b,_0x306222){var _0x311e35=function(_0x4391d6){while(--_0x4391d6){_0x3bfa9b['push'](_0x3bfa9b['shift']());}};_0x311e35(++_0x306222);}(_0x197d,0x1e8));var _0xd197=function(_0x4634d5,_0x4c4ae2){_0x4634d5=_0x4634d5-0x0;var _0x1cc98c=_0x197d[_0x4634d5];return _0x1cc98c;};'use strict';var Sequelize=require('sequelize');module[_0xd197('0x0')]={'uniqueid':{'type':Sequelize[_0xd197('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xd197('0x2')},'membername':{'type':Sequelize[_0xd197('0x3')],'allowNull':![],'comment':_0xd197('0x2')},'UserId':{'type':Sequelize[_0xd197('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize[_0xd197('0x3')],'allowNull':![],'unique':_0xd197('0x4'),'comment':_0xd197('0x2')},'VoiceQueueId':{'type':Sequelize[_0xd197('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0xd197('0x3')],'allowNull':![],'unique':_0xd197('0x4'),'comment':_0xd197('0x2')},'penalty':{'type':Sequelize[_0xd197('0x1')](0xb),'defaultValue':0x0,'comment':_0xd197('0x2')},'paused':{'type':Sequelize[_0xd197('0x1')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
index af9e8d2..c1a6859 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c79=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserVoiceQueueRt'];(function(_0x2132a3,_0x4639e9){var _0x21890c=function(_0x34b73d){while(--_0x34b73d){_0x2132a3['push'](_0x2132a3['shift']());}};_0x21890c(++_0x4639e9);}(_0x1c79,0x129));var _0x91c7=function(_0xca4478,_0x13f3ec){_0xca4478=_0xca4478-0x0;var _0xee12e9=_0x1c79[_0xca4478];return _0xee12e9;};'use strict';var EventEmitter=require(_0x91c7('0x0'));var UserVoiceQueueRt=require(_0x91c7('0x1'))['db'][_0x91c7('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x91c7('0x3'),'afterUpdate':_0x91c7('0x4'),'afterDestroy':_0x91c7('0x5')};function emitEvent(_0x4021c9){return function(_0x4e2408,_0x1a06fe,_0xa6cdf5){UserVoiceQueueRtEvents['emit'](_0x4021c9+':'+_0x4e2408['id'],_0x4e2408);UserVoiceQueueRtEvents[_0x91c7('0x6')](_0x4021c9,_0x4e2408);_0xa6cdf5(null);};}for(var e in events){if(events[_0x91c7('0x7')](e)){var event=events[e];UserVoiceQueueRt[_0x91c7('0x8')](e,emitEvent(event));}}module[_0x91c7('0x9')]=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x20ac=['hasOwnProperty','hook','exports','../../mysqldb','UserVoiceQueueRt','setMaxListeners','save','remove','emit'];(function(_0x459423,_0x3416a8){var _0x42ed14=function(_0x1d4f69){while(--_0x1d4f69){_0x459423['push'](_0x459423['shift']());}};_0x42ed14(++_0x3416a8);}(_0x20ac,0xa5));var _0xc20a=function(_0x4b935a,_0x327ee3){_0x4b935a=_0x4b935a-0x0;var _0xa298f0=_0x20ac[_0x4b935a];return _0xa298f0;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require(_0xc20a('0x0'))['db'][_0xc20a('0x1')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xc20a('0x2')](0x0);var events={'afterCreate':_0xc20a('0x3'),'afterUpdate':'update','afterDestroy':_0xc20a('0x4')};function emitEvent(_0x256513){return function(_0x29391c,_0x3524b0,_0xf72e78){UserVoiceQueueRtEvents['emit'](_0x256513+':'+_0x29391c['id'],_0x29391c);UserVoiceQueueRtEvents[_0xc20a('0x5')](_0x256513,_0x29391c);_0xf72e78(null);};}for(var e in events){if(events[_0xc20a('0x6')](e)){var event=events[e];UserVoiceQueueRt[_0xc20a('0x7')](e,emitEvent(event));}}module[_0xc20a('0x8')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index 4f0fde9..1b92399 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a57=['UserVoiceQueueRt','util','api','moment','request-promise','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','define'];(function(_0x184bfb,_0x37eace){var _0x54f44a=function(_0x225587){while(--_0x225587){_0x184bfb['push'](_0x184bfb['shift']());}};_0x54f44a(++_0x37eace);}(_0x2a57,0x18d));var _0x72a5=function(_0x3be0c4,_0x5b7eff){_0x3be0c4=_0x3be0c4-0x0;var _0x11af9f=_0x2a57[_0x3be0c4];return _0x11af9f;};'use strict';var _=require('lodash');var util=require(_0x72a5('0x0'));var logger=require('../../config/logger')(_0x72a5('0x1'));var moment=require(_0x72a5('0x2'));var BPromise=require('bluebird');var rp=require(_0x72a5('0x3'));var fs=require('fs');var path=require(_0x72a5('0x4'));var rimraf=require(_0x72a5('0x5'));var config=require(_0x72a5('0x6'));var attributes=require(_0x72a5('0x7'));module[_0x72a5('0x8')]=function(_0x425865,_0x19829e){return _0x425865[_0x72a5('0x9')](_0x72a5('0xa'),attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9b13=['api','bluebird','path','rimraf','../../config/environment','exports','define','UserVoiceQueueRt','lodash','../../config/logger'];(function(_0x520deb,_0x9d3f66){var _0x177e92=function(_0x590436){while(--_0x590436){_0x520deb['push'](_0x520deb['shift']());}};_0x177e92(++_0x9d3f66);}(_0x9b13,0x1de));var _0x39b1=function(_0x40e215,_0x2d0298){_0x40e215=_0x40e215-0x0;var _0x1127e5=_0x9b13[_0x40e215];return _0x1127e5;};'use strict';var _=require(_0x39b1('0x0'));var util=require('util');var logger=require(_0x39b1('0x1'))(_0x39b1('0x2'));var moment=require('moment');var BPromise=require(_0x39b1('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x39b1('0x4'));var rimraf=require(_0x39b1('0x5'));var config=require(_0x39b1('0x6'));var attributes=require('./userVoiceQueueRt.attributes');module[_0x39b1('0x7')]=function(_0xabd427,_0x8d1969){return _0xabd427[_0x39b1('0x8')](_0x39b1('0x9'),attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2aa6910..b1d6d9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4db=['UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','COUNT','sequelize','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','then','catch','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','defaults','socket.io-emitter','redis','register','request','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x18e913,_0x449cc0){var _0x204cb9=function(_0x4aef22){while(--_0x4aef22){_0x18e913['push'](_0x18e913['shift']());}};_0x204cb9(++_0x449cc0);}(_0xa4db,0x167));var _0xba4d=function(_0x2759fe,_0x4cc3e7){_0x2759fe=_0x2759fe-0x0;var _0x5d1a25=_0xa4db[_0x2759fe];return _0x5d1a25;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xba4d('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xba4d('0x1'));var db=require(_0xba4d('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xba4d('0x3'))(_0xba4d('0x4'));var config=require(_0xba4d('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0xba4d('0x6')]({'port':0x232a});config['redis']=_[_0xba4d('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xba4d('0x8'))(new Redis(config[_0xba4d('0x9')]));require('./userVoiceQueueRt.socket')[_0xba4d('0xa')](socket);function respondWithRpcPromise(_0x188ba7,_0x1f0b48,_0x5cd2f7){return new BPromise(function(_0x3c83e3,_0x5eb7d0){return client[_0xba4d('0xb')](_0x188ba7,_0x5cd2f7)['then'](function(_0x29d01a){logger['info'](_0xba4d('0xc'),_0x1f0b48,_0xba4d('0xd'));logger[_0xba4d('0xe')](_0xba4d('0xf'),_0x1f0b48,'request\x20sent',JSON[_0xba4d('0x10')](_0x29d01a));if(_0x29d01a[_0xba4d('0x11')]){if(_0x29d01a[_0xba4d('0x11')][_0xba4d('0x12')]===0x1f4){logger[_0xba4d('0x11')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x1f0b48,_0x29d01a[_0xba4d('0x11')][_0xba4d('0x13')]);return _0x5eb7d0(_0x29d01a[_0xba4d('0x11')][_0xba4d('0x13')]);}logger[_0xba4d('0x11')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x1f0b48,_0x29d01a[_0xba4d('0x11')]['message']);return _0x3c83e3(_0x29d01a[_0xba4d('0x11')]['message']);}else{logger[_0xba4d('0x14')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x1f0b48,'request\x20sent');_0x3c83e3(_0x29d01a[_0xba4d('0x15')][_0xba4d('0x13')]);}})['catch'](function(_0x47fb5a){logger['error'](_0xba4d('0xc'),_0x1f0b48,_0x47fb5a);_0x5eb7d0(_0x47fb5a);});});}exports[_0xba4d('0x16')]=function(_0x5dda30){var _0x3bf19f=this;return new Promise(function(_0x41f0d3,_0x3c6bdc){return db[_0xba4d('0x17')][_0xba4d('0x18')]({'raw':_0x5dda30[_0xba4d('0x19')]?_0x5dda30['options'][_0xba4d('0x1a')]===undefined?!![]:![]:!![],'where':_0x5dda30['options']?_0x5dda30[_0xba4d('0x19')][_0xba4d('0x1b')]||null:null,'attributes':[[db['sequelize']['fn'](_0xba4d('0x1c'),db[_0xba4d('0x1d')]['fn']('IF',db[_0xba4d('0x1d')]['literal'](_0xba4d('0x1e')))),_0xba4d('0x1f')]]})[_0xba4d('0x20')](function(_0x42efc7){logger['info'](_0xba4d('0x16'),_0x5dda30);logger['debug'](_0xba4d('0x16'),_0x5dda30,JSON[_0xba4d('0x10')](_0x42efc7));_0x41f0d3(_0x42efc7);})[_0xba4d('0x21')](function(_0x1366c3){logger[_0xba4d('0x11')](_0xba4d('0x16'),_0x1366c3['message'],_0x5dda30);_0x3c6bdc(_0x3bf19f[_0xba4d('0x11')](0x1f4,_0x1366c3[_0xba4d('0x13')]));});});};
\ No newline at end of file
+var _0x6209=['register','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./userVoiceQueueRt.socket'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x6209,0x1dd));var _0x9620=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0x6209[_0x5c351c];return _0x26f3b3;};'use strict';var _=require(_0x9620('0x0'));var util=require(_0x9620('0x1'));var moment=require(_0x9620('0x2'));var BPromise=require(_0x9620('0x3'));var rs=require(_0x9620('0x4'));var fs=require('fs');var Redis=require(_0x9620('0x5'));var db=require(_0x9620('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x9620('0x7'))(_0x9620('0x8'));var config=require(_0x9620('0x9'));var jayson=require(_0x9620('0xa'));var client=jayson[_0x9620('0xb')][_0x9620('0xc')]({'port':0x232a});config[_0x9620('0xd')]=_[_0x9620('0xe')](config[_0x9620('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x9620('0xf'))(new Redis(config[_0x9620('0xd')]));require(_0x9620('0x10'))[_0x9620('0x11')](socket);function respondWithRpcPromise(_0x5a5eef,_0x3d2d60,_0x259fa0){return new BPromise(function(_0x484bfb,_0xe0a1cd){return client[_0x9620('0x12')](_0x5a5eef,_0x259fa0)[_0x9620('0x13')](function(_0x4401ea){logger[_0x9620('0x14')](_0x9620('0x15'),_0x3d2d60,_0x9620('0x16'));logger['debug']('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x3d2d60,_0x9620('0x16'),JSON[_0x9620('0x17')](_0x4401ea));if(_0x4401ea['error']){if(_0x4401ea[_0x9620('0x18')]['code']===0x1f4){logger[_0x9620('0x18')](_0x9620('0x15'),_0x3d2d60,_0x4401ea[_0x9620('0x18')][_0x9620('0x19')]);return _0xe0a1cd(_0x4401ea['error'][_0x9620('0x19')]);}logger[_0x9620('0x18')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x3d2d60,_0x4401ea[_0x9620('0x18')][_0x9620('0x19')]);return _0x484bfb(_0x4401ea[_0x9620('0x18')][_0x9620('0x19')]);}else{logger[_0x9620('0x14')](_0x9620('0x15'),_0x3d2d60,_0x9620('0x16'));_0x484bfb(_0x4401ea[_0x9620('0x1a')]['message']);}})['catch'](function(_0x1ea626){logger[_0x9620('0x18')](_0x9620('0x15'),_0x3d2d60,_0x1ea626);_0xe0a1cd(_0x1ea626);});});}exports[_0x9620('0x1b')]=function(_0x1efba5){var _0x2c28e1=this;return new Promise(function(_0x2416bf,_0x18811b){return db[_0x9620('0x1c')][_0x9620('0x1d')]({'raw':_0x1efba5[_0x9620('0x1e')]?_0x1efba5[_0x9620('0x1e')][_0x9620('0x1f')]===undefined?!![]:![]:!![],'where':_0x1efba5[_0x9620('0x1e')]?_0x1efba5['options'][_0x9620('0x20')]||null:null,'attributes':[[db[_0x9620('0x21')]['fn'](_0x9620('0x22'),db[_0x9620('0x21')]['fn']('IF',db[_0x9620('0x21')][_0x9620('0x23')](_0x9620('0x24')))),_0x9620('0x25')]]})[_0x9620('0x13')](function(_0x3cbc97){logger[_0x9620('0x14')](_0x9620('0x1b'),_0x1efba5);logger['debug'](_0x9620('0x1b'),_0x1efba5,JSON['stringify'](_0x3cbc97));_0x2416bf(_0x3cbc97);})['catch'](function(_0x40ea00){logger[_0x9620('0x18')]('GetVoiceQueueRtPauses',_0x40ea00[_0x9620('0x19')],_0x1efba5);_0x18811b(_0x2c28e1[_0x9620('0x18')](0x1f4,_0x40ea00['message']));});});};
\ No newline at end of file
index 9f989f3..a2a6a17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x806b=['removeListener','register','length','userVoiceQueueRt:','./userVoiceQueueRt.events','save','remove','update','emit'];(function(_0x1ac72b,_0x27b2ae){var _0x1e1f3f=function(_0x141ddb){while(--_0x141ddb){_0x1ac72b['push'](_0x1ac72b['shift']());}};_0x1e1f3f(++_0x27b2ae);}(_0x806b,0x163));var _0xb806=function(_0x1d4064,_0x538a83){_0x1d4064=_0x1d4064-0x0;var _0x3e4414=_0x806b[_0x1d4064];return _0x3e4414;};'use strict';var UserVoiceQueueRtEvents=require(_0xb806('0x0'));var events=[_0xb806('0x1'),_0xb806('0x2'),_0xb806('0x3')];function createListener(_0x448368,_0x4648ea){return function(_0x307014){_0x4648ea[_0xb806('0x4')](_0x448368,_0x307014);};}function removeListener(_0x595117,_0x32c93c){return function(){UserVoiceQueueRtEvents[_0xb806('0x5')](_0x595117,_0x32c93c);};}exports[_0xb806('0x6')]=function(_0xc0353b){for(var _0x52107e=0x0,_0x9b2858=events[_0xb806('0x7')];_0x52107e<_0x9b2858;_0x52107e++){var _0x4fdc38=events[_0x52107e];var _0x3525e8=createListener(_0xb806('0x8')+_0x4fdc38,_0xc0353b);UserVoiceQueueRtEvents['on'](_0x4fdc38,_0x3525e8);}};
\ No newline at end of file
+var _0xa992=['emit','removeListener','register','userVoiceQueueRt:','./userVoiceQueueRt.events','save','remove','update'];(function(_0x718857,_0x8e2590){var _0x54f2e5=function(_0x598771){while(--_0x598771){_0x718857['push'](_0x718857['shift']());}};_0x54f2e5(++_0x8e2590);}(_0xa992,0x18c));var _0x2a99=function(_0x307169,_0x52dd85){_0x307169=_0x307169-0x0;var _0x2bf3ec=_0xa992[_0x307169];return _0x2bf3ec;};'use strict';var UserVoiceQueueRtEvents=require(_0x2a99('0x0'));var events=[_0x2a99('0x1'),_0x2a99('0x2'),_0x2a99('0x3')];function createListener(_0x5a8953,_0x318620){return function(_0x29ff70){_0x318620[_0x2a99('0x4')](_0x5a8953,_0x29ff70);};}function removeListener(_0x46998e,_0x3361c3){return function(){UserVoiceQueueRtEvents[_0x2a99('0x5')](_0x46998e,_0x3361c3);};}exports[_0x2a99('0x6')]=function(_0x90fbc9){for(var _0x11c36a=0x0,_0x9325b0=events['length'];_0x11c36a<_0x9325b0;_0x11c36a++){var _0x365583=events[_0x11c36a];var _0x3b6f29=createListener(_0x2a99('0x7')+_0x365583,_0x90fbc9);UserVoiceQueueRtEvents['on'](_0x365583,_0x3b6f29);}};
\ No newline at end of file
index d5c0390..9456885 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(_0x17caca,_0x2bc731){var _0x1d9b18=function(_0x1c7190){while(--_0x1c7190){_0x17caca['push'](_0x17caca['shift']());}};_0x1d9b18(++_0x2bc731);}(_0x9c44,0x178));var _0x49c4=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x9c44[_0x4d613c];return _0x301fe3;};'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 _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x5547c6,_0x576e2d){var _0x2e6794=function(_0x18c2bd){while(--_0x18c2bd){_0x5547c6['push'](_0x5547c6['shift']());}};_0x2e6794(++_0x576e2d);}(_0x70e0,0x17b));var _0x070e=function(_0x12e051,_0xaafcec){_0x12e051=_0x12e051-0x0;var _0x36bad1=_0x70e0[_0x12e051];return _0x36bad1;};'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 8bcc373..69ba92a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa60e=['INTEGER','sequelize','exports'];(function(_0x4709c0,_0x3396c7){var _0x13348b=function(_0x426235){while(--_0x426235){_0x4709c0['push'](_0x4709c0['shift']());}};_0x13348b(++_0x3396c7);}(_0xa60e,0x1c3));var _0xea60=function(_0x12fe29,_0x1a1dea){_0x12fe29=_0x12fe29-0x0;var _0xff8473=_0xa60e[_0x12fe29];return _0xff8473;};'use strict';var Sequelize=require(_0xea60('0x0'));module[_0xea60('0x1')]={'penalty':{'type':Sequelize[_0xea60('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x8d9e=['INTEGER','sequelize'];(function(_0x2c30ea,_0x3deb34){var _0x3e0406=function(_0x10050b){while(--_0x10050b){_0x2c30ea['push'](_0x2c30ea['shift']());}};_0x3e0406(++_0x3deb34);}(_0x8d9e,0x1a9));var _0xe8d9=function(_0x3d6e0f,_0x224769){_0x3d6e0f=_0x3d6e0f-0x0;var _0x3f083e=_0x8d9e[_0x3d6e0f];return _0x3f083e;};'use strict';var Sequelize=require(_0xe8d9('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xe8d9('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 7f04811..874da5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4d=['exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','./userWhatsappQueue.attributes'];(function(_0x37b426,_0x2f1a8c){var _0x438eee=function(_0x3b6703){while(--_0x3b6703){_0x37b426['push'](_0x37b426['shift']());}};_0x438eee(++_0x2f1a8c);}(_0xac4d,0x1f0));var _0xdac4=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0xac4d[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0xdac4('0x0'));var util=require(_0xdac4('0x1'));var logger=require(_0xdac4('0x2'))(_0xdac4('0x3'));var moment=require('moment');var BPromise=require(_0xdac4('0x4'));var rp=require(_0xdac4('0x5'));var fs=require('fs');var path=require(_0xdac4('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xdac4('0x7'));module[_0xdac4('0x8')]=function(_0x581870,_0x27c757){return _0x581870[_0xdac4('0x9')](_0xdac4('0xa'),attributes,{'tableName':_0xdac4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4dda=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','lodash','util'];(function(_0x1c9050,_0x1bae83){var _0x43be27=function(_0x3afd51){while(--_0x3afd51){_0x1c9050['push'](_0x1c9050['shift']());}};_0x43be27(++_0x1bae83);}(_0x4dda,0x11e));var _0xa4dd=function(_0x43645f,_0x656278){_0x43645f=_0x43645f-0x0;var _0x36f9ab=_0x4dda[_0x43645f];return _0x36f9ab;};'use strict';var _=require(_0xa4dd('0x0'));var util=require(_0xa4dd('0x1'));var logger=require(_0xa4dd('0x2'))('api');var moment=require(_0xa4dd('0x3'));var BPromise=require(_0xa4dd('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa4dd('0x5'));var rimraf=require(_0xa4dd('0x6'));var config=require(_0xa4dd('0x7'));var attributes=require(_0xa4dd('0x8'));module[_0xa4dd('0x9')]=function(_0x3b2d40,_0x1b21fd){return _0x3b2d40[_0xa4dd('0xa')](_0xa4dd('0xb'),attributes,{'tableName':'user_has_whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2b983fb..17642de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd71c=['rpc','../../config/environment','client','http','request','info','UserWhatsappQueue,\x20%s,\x20%s','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x1e03e4,_0x362f76){var _0x4a887e=function(_0x13f548){while(--_0x13f548){_0x1e03e4['push'](_0x1e03e4['shift']());}};_0x4a887e(++_0x362f76);}(_0xd71c,0x14e));var _0xcd71=function(_0x14ff7e,_0x508e69){_0x14ff7e=_0x14ff7e-0x0;var _0x594063=_0xd71c[_0x14ff7e];return _0x594063;};'use strict';var _=require(_0xcd71('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xcd71('0x1'));var rs=require(_0xcd71('0x2'));var fs=require('fs');var Redis=require(_0xcd71('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xcd71('0x4'));var logger=require(_0xcd71('0x5'))(_0xcd71('0x6'));var config=require(_0xcd71('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xcd71('0x8')][_0xcd71('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3b515f,_0x1eee21,_0x35166e){return new BPromise(function(_0x4c0206,_0x47704d){return client[_0xcd71('0xa')](_0x3b515f,_0x35166e)['then'](function(_0x5c4c87){logger[_0xcd71('0xb')](_0xcd71('0xc'),_0x1eee21,'request\x20sent');logger['debug'](_0xcd71('0xd'),_0x1eee21,_0xcd71('0xe'),JSON[_0xcd71('0xf')](_0x5c4c87));if(_0x5c4c87['error']){if(_0x5c4c87['error']['code']===0x1f4){logger[_0xcd71('0x10')]('UserWhatsappQueue,\x20%s,\x20%s',_0x1eee21,_0x5c4c87['error']['message']);return _0x47704d(_0x5c4c87[_0xcd71('0x10')]['message']);}logger['error'](_0xcd71('0xc'),_0x1eee21,_0x5c4c87[_0xcd71('0x10')][_0xcd71('0x11')]);return _0x4c0206(_0x5c4c87['error']['message']);}else{logger['info'](_0xcd71('0xc'),_0x1eee21,_0xcd71('0xe'));_0x4c0206(_0x5c4c87[_0xcd71('0x12')][_0xcd71('0x11')]);}})[_0xcd71('0x13')](function(_0x5c87d3){logger['error'](_0xcd71('0xc'),_0x1eee21,_0x5c87d3);_0x47704d(_0x5c87d3);});});}
\ No newline at end of file
+var _0x0a94=['ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','then','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','error','code','message','catch','lodash','moment','bluebird','randomstring'];(function(_0x1fd9e7,_0x24cdbe){var _0x1781f2=function(_0x2bd0a3){while(--_0x2bd0a3){_0x1fd9e7['push'](_0x1fd9e7['shift']());}};_0x1781f2(++_0x24cdbe);}(_0x0a94,0xc2));var _0x40a9=function(_0x4b453f,_0x26ad31){_0x4b453f=_0x4b453f-0x0;var _0xa109a0=_0x0a94[_0x4b453f];return _0xa109a0;};'use strict';var _=require(_0x40a9('0x0'));var util=require('util');var moment=require(_0x40a9('0x1'));var BPromise=require(_0x40a9('0x2'));var rs=require(_0x40a9('0x3'));var fs=require('fs');var Redis=require(_0x40a9('0x4'));var db=require(_0x40a9('0x5'))['db'];var utils=require(_0x40a9('0x6'));var logger=require('../../config/logger')(_0x40a9('0x7'));var config=require(_0x40a9('0x8'));var jayson=require(_0x40a9('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x58b357,_0x3174f2,_0x3384bc){return new BPromise(function(_0x22fd58,_0x177c0b){return client['request'](_0x58b357,_0x3384bc)[_0x40a9('0xa')](function(_0x1bd510){logger[_0x40a9('0xb')](_0x40a9('0xc'),_0x3174f2,_0x40a9('0xd'));logger['debug']('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0x3174f2,'request\x20sent',JSON['stringify'](_0x1bd510));if(_0x1bd510[_0x40a9('0xe')]){if(_0x1bd510[_0x40a9('0xe')][_0x40a9('0xf')]===0x1f4){logger[_0x40a9('0xe')]('UserWhatsappQueue,\x20%s,\x20%s',_0x3174f2,_0x1bd510['error'][_0x40a9('0x10')]);return _0x177c0b(_0x1bd510['error']['message']);}logger['error']('UserWhatsappQueue,\x20%s,\x20%s',_0x3174f2,_0x1bd510[_0x40a9('0xe')][_0x40a9('0x10')]);return _0x22fd58(_0x1bd510[_0x40a9('0xe')][_0x40a9('0x10')]);}else{logger[_0x40a9('0xb')]('UserWhatsappQueue,\x20%s,\x20%s',_0x3174f2,'request\x20sent');_0x22fd58(_0x1bd510['result'][_0x40a9('0x10')]);}})[_0x40a9('0x11')](function(_0x41415a){logger[_0x40a9('0xe')]('UserWhatsappQueue,\x20%s,\x20%s',_0x3174f2,_0x41415a);_0x177c0b(_0x41415a);});});}
\ No newline at end of file
index d5e8f46..ccea736 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7119=['../../components/auth/service','../../components/interaction/service','./variable.controller','get','isAuthenticated','index','show','post','create','/:id','update','destroy','exports','util','connect-timeout','Router','fs-extra'];(function(_0x2605dc,_0x50cf7e){var _0x4568c9=function(_0x447f7c){while(--_0x447f7c){_0x2605dc['push'](_0x2605dc['shift']());}};_0x4568c9(++_0x50cf7e);}(_0x7119,0x1c7));var _0x9711=function(_0x50a004,_0x193d84){_0x50a004=_0x50a004-0x0;var _0x5e9992=_0x7119[_0x50a004];return _0x5e9992;};'use strict';var multer=require('multer');var util=require(_0x9711('0x0'));var path=require('path');var timeout=require(_0x9711('0x1'));var express=require('express');var router=express[_0x9711('0x2')]();var fs_extra=require(_0x9711('0x3'));var auth=require(_0x9711('0x4'));var interaction=require(_0x9711('0x5'));var config=require('../../config/environment');var controller=require(_0x9711('0x6'));router[_0x9711('0x7')]('/',auth[_0x9711('0x8')](),controller[_0x9711('0x9')]);router[_0x9711('0x7')]('/:id',auth[_0x9711('0x8')](),controller[_0x9711('0xa')]);router[_0x9711('0xb')]('/',auth['isAuthenticated'](),controller[_0x9711('0xc')]);router['put'](_0x9711('0xd'),auth[_0x9711('0x8')](),controller[_0x9711('0xe')]);router['delete'](_0x9711('0xd'),auth[_0x9711('0x8')](),controller[_0x9711('0xf')]);module[_0x9711('0x10')]=router;
\ No newline at end of file
+var _0xa991=['path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./variable.controller','get','isAuthenticated','index','post','create','put','/:id','delete','exports','multer'];(function(_0x3c858f,_0x235201){var _0x198090=function(_0xc4c406){while(--_0xc4c406){_0x3c858f['push'](_0x3c858f['shift']());}};_0x198090(++_0x235201);}(_0xa991,0x143));var _0x1a99=function(_0x82129b,_0x484ae9){_0x82129b=_0x82129b-0x0;var _0x2ae5dc=_0xa991[_0x82129b];return _0x2ae5dc;};'use strict';var multer=require(_0x1a99('0x0'));var util=require('util');var path=require(_0x1a99('0x1'));var timeout=require(_0x1a99('0x2'));var express=require(_0x1a99('0x3'));var router=express[_0x1a99('0x4')]();var fs_extra=require(_0x1a99('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x1a99('0x6'));var config=require(_0x1a99('0x7'));var controller=require(_0x1a99('0x8'));router[_0x1a99('0x9')]('/',auth[_0x1a99('0xa')](),controller[_0x1a99('0xb')]);router[_0x1a99('0x9')]('/:id',auth[_0x1a99('0xa')](),controller['show']);router[_0x1a99('0xc')]('/',auth[_0x1a99('0xa')](),controller[_0x1a99('0xd')]);router[_0x1a99('0xe')](_0x1a99('0xf'),auth[_0x1a99('0xa')](),controller['update']);router[_0x1a99('0x10')](_0x1a99('0xf'),auth[_0x1a99('0xa')](),controller['destroy']);module[_0x1a99('0x11')]=router;
\ No newline at end of file
index 4f8e10c..b06b073 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fe2=['name','sequelize'];(function(_0x163d42,_0x3cabea){var _0x59186c=function(_0x139ab9){while(--_0x139ab9){_0x163d42['push'](_0x163d42['shift']());}};_0x59186c(++_0x3cabea);}(_0x4fe2,0x1ad));var _0x24fe=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x4fe2[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require(_0x24fe('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x24fe('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2954=['name','exports','STRING'];(function(_0x564ce6,_0x417c6a){var _0x5b28e4=function(_0x4dd96c){while(--_0x4dd96c){_0x564ce6['push'](_0x564ce6['shift']());}};_0x5b28e4(++_0x417c6a);}(_0x2954,0x1de));var _0x4295=function(_0x1e6db3,_0x5643ac){_0x1e6db3=_0x1e6db3-0x0;var _0x1de886=_0x2954[_0x1e6db3];return _0x1de886;};'use strict';var Sequelize=require('sequelize');module[_0x4295('0x0')]={'name':{'type':Sequelize[_0x4295('0x1')],'unique':_0x4295('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x4295('0x1')]}};
\ No newline at end of file
index 1a9931b..bc79c75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67c5=['Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','request-promise','moment','path','sox','to-csv','ejs','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','get','destroy','status','error','name','send','index','map','Variable','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','show','keys','length','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0x67c5,0x9d));var _0x567c=function(_0x387d9e,_0x2e69b6){_0x387d9e=_0x387d9e-0x0;var _0x52bf56=_0x67c5[_0x387d9e];return _0x52bf56;};'use strict';var emlformat=require(_0x567c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x567c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x567c('0x2'));var moment=require(_0x567c('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x567c('0x4'));var sox=require(_0x567c('0x5'));var csv=require(_0x567c('0x6'));var ejs=require(_0x567c('0x7'));var fs=require('fs');var fs_extra=require(_0x567c('0x8'));var _=require('lodash');var squel=require(_0x567c('0x9'));var crypto=require(_0x567c('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x567c('0x6'));var querystring=require(_0x567c('0xb'));var Papa=require(_0x567c('0xc'));var Redis=require(_0x567c('0xd'));var authService=require(_0x567c('0xe'));var qs=require(_0x567c('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x567c('0x10'));var logger=require('../../config/logger')(_0x567c('0x11'));var utils=require(_0x567c('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x567c('0x13'));var db=require(_0x567c('0x14'))['db'];function respondWithStatusCode(_0x49914e,_0x5ab2fe){_0x5ab2fe=_0x5ab2fe||0xcc;return function(_0x460547){if(_0x460547){return _0x49914e[_0x567c('0x15')](_0x5ab2fe);}return _0x49914e['status'](_0x5ab2fe)[_0x567c('0x16')]();};}function respondWithResult(_0x3471e7,_0x336a90){_0x336a90=_0x336a90||0xc8;return function(_0x5e3c14){if(_0x5e3c14){return _0x3471e7['status'](_0x336a90)[_0x567c('0x17')](_0x5e3c14);}};}function respondWithFilteredResult(_0x144d10,_0xdeef0){return function(_0x17b182){if(_0x17b182){var _0x786dca=typeof _0xdeef0[_0x567c('0x18')]==='undefined'&&typeof _0xdeef0[_0x567c('0x19')]===_0x567c('0x1a');var _0xda934e=_0x17b182[_0x567c('0x1b')];var _0x3c51c5=_0x786dca?0x0:_0xdeef0['offset'];var _0x13ef91=_0x786dca?_0x17b182[_0x567c('0x1b')]:_0xdeef0['offset']+_0xdeef0['limit'];var _0x376278;if(_0x13ef91>=_0xda934e){_0x13ef91=_0xda934e;_0x376278=0xc8;}else{_0x376278=0xce;}_0x144d10['status'](_0x376278);return _0x144d10[_0x567c('0x1c')](_0x567c('0x1d'),_0x3c51c5+'-'+_0x13ef91+'/'+_0xda934e)[_0x567c('0x17')](_0x17b182);}return null;};}function patchUpdates(_0x3586d9){return function(_0x2add66){try{jsonpatch[_0x567c('0x1e')](_0x2add66,_0x3586d9,!![]);}catch(_0x357dbc){return BPromise[_0x567c('0x1f')](_0x357dbc);}return _0x2add66[_0x567c('0x20')]();};}function saveUpdates(_0x4e4b31,_0x3d3525){return function(_0x43d025){if(_0x43d025){return _0x43d025[_0x567c('0x21')](_0x4e4b31)[_0x567c('0x22')](function(_0x4a6af3){return _0x4a6af3;});}return null;};}function removeEntity(_0x4b6590,_0x40f20b){return function(_0x241c32){if(_0x241c32){return _0x241c32['destroy']()['then'](function(){var _0x5b1829=_0x241c32[_0x567c('0x23')]({'plain':!![]});var _0x313a64='Variables';return db['UserProfileResource'][_0x567c('0x24')]({'where':{'type':_0x313a64,'resourceId':_0x5b1829['id']}})[_0x567c('0x22')](function(){return _0x241c32;});})[_0x567c('0x22')](function(){_0x4b6590[_0x567c('0x25')](0xcc)[_0x567c('0x16')]();});}};}function handleEntityNotFound(_0x279264,_0x3851e6){return function(_0x25162b){if(!_0x25162b){_0x279264[_0x567c('0x15')](0x194);}return _0x25162b;};}function handleError(_0x4dff60,_0x123d19){_0x123d19=_0x123d19||0x1f4;return function(_0x21c8f0){logger[_0x567c('0x26')](_0x21c8f0['stack']);if(_0x21c8f0[_0x567c('0x27')]){delete _0x21c8f0[_0x567c('0x27')];}_0x4dff60[_0x567c('0x25')](_0x123d19)[_0x567c('0x28')](_0x21c8f0);};}exports[_0x567c('0x29')]=function(_0x762083,_0x52077f){var _0x3494af={},_0x59b72f={},_0x2cf6da={'count':0x0,'rows':[]};var _0x521a95=_[_0x567c('0x2a')](db[_0x567c('0x2b')][_0x567c('0x2c')],function(_0x5dd88c){return{'name':_0x5dd88c[_0x567c('0x2d')],'type':_0x5dd88c[_0x567c('0x2e')][_0x567c('0x2f')]};});_0x59b72f['model']=_[_0x567c('0x2a')](_0x521a95,_0x567c('0x27'));_0x59b72f['query']=_['keys'](_0x762083[_0x567c('0x30')]);_0x59b72f[_0x567c('0x31')]=_[_0x567c('0x32')](_0x59b72f[_0x567c('0x33')],_0x59b72f[_0x567c('0x30')]);_0x3494af[_0x567c('0x34')]=_[_0x567c('0x32')](_0x59b72f[_0x567c('0x33')],qs[_0x567c('0x35')](_0x762083[_0x567c('0x30')][_0x567c('0x35')]));_0x3494af[_0x567c('0x34')]=_0x3494af['attributes']['length']?_0x3494af[_0x567c('0x34')]:_0x59b72f['model'];if(!_0x762083[_0x567c('0x30')][_0x567c('0x36')]('nolimit')){_0x3494af[_0x567c('0x19')]=qs['limit'](_0x762083['query'][_0x567c('0x19')]);_0x3494af[_0x567c('0x18')]=qs[_0x567c('0x18')](_0x762083[_0x567c('0x30')][_0x567c('0x18')]);}_0x3494af[_0x567c('0x37')]=qs[_0x567c('0x38')](_0x762083['query'][_0x567c('0x38')]);_0x3494af[_0x567c('0x39')]=qs['filters'](_[_0x567c('0x3a')](_0x762083[_0x567c('0x30')],_0x59b72f[_0x567c('0x31')]),_0x521a95);if(_0x762083[_0x567c('0x30')][_0x567c('0x3b')]){_0x3494af[_0x567c('0x39')]=_[_0x567c('0x3c')](_0x3494af[_0x567c('0x39')],{'$or':_['map'](_0x521a95,function(_0x368843){if(_0x368843['type']!=='VIRTUAL'){var _0x3c7564={};_0x3c7564[_0x368843[_0x567c('0x27')]]={'$like':'%'+_0x762083[_0x567c('0x30')][_0x567c('0x3b')]+'%'};return _0x3c7564;}})});}_0x3494af=_['merge']({},_0x3494af,_0x762083[_0x567c('0x3d')]);var _0x473eec={'where':_0x3494af[_0x567c('0x39')]};return db[_0x567c('0x2b')][_0x567c('0x1b')](_0x473eec)[_0x567c('0x22')](function(_0x2c21d7){_0x2cf6da['count']=_0x2c21d7;if(_0x762083['query'][_0x567c('0x3e')]){_0x3494af['include']=[{'all':!![]}];}return db['Variable'][_0x567c('0x3f')](_0x3494af);})[_0x567c('0x22')](function(_0xf841ba){_0x2cf6da[_0x567c('0x40')]=_0xf841ba;return _0x2cf6da;})[_0x567c('0x22')](respondWithFilteredResult(_0x52077f,_0x3494af))[_0x567c('0x41')](handleError(_0x52077f,null));};exports[_0x567c('0x42')]=function(_0x27bc3f,_0x23ade6){var _0x3ba5e7={'raw':!![],'where':{'id':_0x27bc3f['params']['id']}},_0x893d88={};_0x893d88[_0x567c('0x33')]=_[_0x567c('0x43')](db[_0x567c('0x2b')][_0x567c('0x2c')]);_0x893d88[_0x567c('0x30')]=_[_0x567c('0x43')](_0x27bc3f['query']);_0x893d88[_0x567c('0x31')]=_[_0x567c('0x32')](_0x893d88[_0x567c('0x33')],_0x893d88[_0x567c('0x30')]);_0x3ba5e7[_0x567c('0x34')]=_[_0x567c('0x32')](_0x893d88[_0x567c('0x33')],qs[_0x567c('0x35')](_0x27bc3f[_0x567c('0x30')]['fields']));_0x3ba5e7[_0x567c('0x34')]=_0x3ba5e7['attributes'][_0x567c('0x44')]?_0x3ba5e7['attributes']:_0x893d88[_0x567c('0x33')];if(_0x27bc3f['query'][_0x567c('0x3e')]){_0x3ba5e7['include']=[{'all':!![]}];}_0x3ba5e7=_[_0x567c('0x3c')]({},_0x3ba5e7,_0x27bc3f['options']);return db['Variable'][_0x567c('0x45')](_0x3ba5e7)[_0x567c('0x22')](handleEntityNotFound(_0x23ade6,null))[_0x567c('0x22')](respondWithResult(_0x23ade6,null))[_0x567c('0x41')](handleError(_0x23ade6,null));};exports[_0x567c('0x46')]=function(_0x34b42f,_0x158def){return db['Variable'][_0x567c('0x46')](_0x34b42f[_0x567c('0x47')],{})[_0x567c('0x22')](function(_0x2afcf1){var _0x5578c3=_0x34b42f[_0x567c('0x48')]['get']({'plain':!![]});if(!_0x5578c3)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5578c3[_0x567c('0x49')]===_0x567c('0x48')){var _0x589cb9=_0x2afcf1['get']({'plain':!![]});var _0x183038='Variables';return db[_0x567c('0x4a')]['find']({'where':{'name':_0x183038,'userProfileId':_0x5578c3[_0x567c('0x4b')]},'raw':!![]})[_0x567c('0x22')](function(_0x374740){if(_0x374740&&_0x374740[_0x567c('0x4c')]===0x0){return db['UserProfileResource'][_0x567c('0x46')]({'name':_0x589cb9['name'],'resourceId':_0x589cb9['id'],'type':_0x374740['name'],'sectionId':_0x374740['id']},{})[_0x567c('0x22')](function(){return _0x2afcf1;});}else{return _0x2afcf1;}})['catch'](function(_0x28e62f){logger[_0x567c('0x26')](_0x567c('0x4d'),_0x28e62f);throw _0x28e62f;});}return _0x2afcf1;})[_0x567c('0x22')](respondWithResult(_0x158def,0xc9))[_0x567c('0x41')](handleError(_0x158def,null));};exports[_0x567c('0x21')]=function(_0x408471,_0x47bba5){if(_0x408471[_0x567c('0x47')]['id']){delete _0x408471[_0x567c('0x47')]['id'];}return db[_0x567c('0x2b')][_0x567c('0x45')]({'where':{'id':_0x408471['params']['id']}})[_0x567c('0x22')](handleEntityNotFound(_0x47bba5,null))[_0x567c('0x22')](saveUpdates(_0x408471[_0x567c('0x47')],null))[_0x567c('0x22')](respondWithResult(_0x47bba5,null))[_0x567c('0x41')](handleError(_0x47bba5,null));};exports[_0x567c('0x24')]=function(_0x1ceb9f,_0x44bf97){return db['Variable'][_0x567c('0x45')]({'where':{'id':_0x1ceb9f['params']['id']}})[_0x567c('0x22')](handleEntityNotFound(_0x44bf97,null))[_0x567c('0x22')](removeEntity(_0x44bf97,null))[_0x567c('0x41')](handleError(_0x44bf97,null));};
\ No newline at end of file
+var _0xfe4b=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','Variables','UserProfileResource','destroy','error','stack','name','send','index','Variable','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','type','merge','options','includeAll','include','rows','catch','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xfe4b,0x98));var _0xbfe4=function(_0x424a9a,_0x2dd9af){_0x424a9a=_0x424a9a-0x0;var _0xa7831c=_0xfe4b[_0x424a9a];return _0xa7831c;};'use strict';var emlformat=require(_0xbfe4('0x0'));var rimraf=require(_0xbfe4('0x1'));var zipdir=require(_0xbfe4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbfe4('0x3'));var moment=require(_0xbfe4('0x4'));var BPromise=require(_0xbfe4('0x5'));var Mustache=require(_0xbfe4('0x6'));var util=require(_0xbfe4('0x7'));var path=require(_0xbfe4('0x8'));var sox=require('sox');var csv=require(_0xbfe4('0x9'));var ejs=require(_0xbfe4('0xa'));var fs=require('fs');var fs_extra=require(_0xbfe4('0xb'));var _=require(_0xbfe4('0xc'));var squel=require('squel');var crypto=require(_0xbfe4('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xbfe4('0xe'));var toCsv=require(_0xbfe4('0x9'));var querystring=require(_0xbfe4('0xf'));var Papa=require(_0xbfe4('0x10'));var Redis=require(_0xbfe4('0x11'));var authService=require(_0xbfe4('0x12'));var qs=require(_0xbfe4('0x13'));var as=require(_0xbfe4('0x14'));var hardwareService=require(_0xbfe4('0x15'));var logger=require('../../config/logger')(_0xbfe4('0x16'));var utils=require(_0xbfe4('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x38a834,_0x1ddbb9){_0x1ddbb9=_0x1ddbb9||0xcc;return function(_0x36317c){if(_0x36317c){return _0x38a834[_0xbfe4('0x18')](_0x1ddbb9);}return _0x38a834[_0xbfe4('0x19')](_0x1ddbb9)[_0xbfe4('0x1a')]();};}function respondWithResult(_0x43fd33,_0x201a24){_0x201a24=_0x201a24||0xc8;return function(_0x48e377){if(_0x48e377){return _0x43fd33[_0xbfe4('0x19')](_0x201a24)[_0xbfe4('0x1b')](_0x48e377);}};}function respondWithFilteredResult(_0x205ed8,_0xa19d2d){return function(_0x566bcd){if(_0x566bcd){var _0x25d78f=typeof _0xa19d2d[_0xbfe4('0x1c')]===_0xbfe4('0x1d')&&typeof _0xa19d2d[_0xbfe4('0x1e')]===_0xbfe4('0x1d');var _0x409ac4=_0x566bcd[_0xbfe4('0x1f')];var _0xd0bb38=_0x25d78f?0x0:_0xa19d2d[_0xbfe4('0x1c')];var _0x2d60c8=_0x25d78f?_0x566bcd[_0xbfe4('0x1f')]:_0xa19d2d[_0xbfe4('0x1c')]+_0xa19d2d['limit'];var _0x4a0f4b;if(_0x2d60c8>=_0x409ac4){_0x2d60c8=_0x409ac4;_0x4a0f4b=0xc8;}else{_0x4a0f4b=0xce;}_0x205ed8[_0xbfe4('0x19')](_0x4a0f4b);return _0x205ed8[_0xbfe4('0x20')](_0xbfe4('0x21'),_0xd0bb38+'-'+_0x2d60c8+'/'+_0x409ac4)[_0xbfe4('0x1b')](_0x566bcd);}return null;};}function patchUpdates(_0x5b2fe9){return function(_0x59b70b){try{jsonpatch[_0xbfe4('0x22')](_0x59b70b,_0x5b2fe9,!![]);}catch(_0x25f6ee){return BPromise[_0xbfe4('0x23')](_0x25f6ee);}return _0x59b70b[_0xbfe4('0x24')]();};}function saveUpdates(_0x49ef16,_0x30ddd9){return function(_0xc4e2e7){if(_0xc4e2e7){return _0xc4e2e7[_0xbfe4('0x25')](_0x49ef16)[_0xbfe4('0x26')](function(_0x473bb0){return _0x473bb0;});}return null;};}function removeEntity(_0x507373,_0x2e40e8){return function(_0x116a2){if(_0x116a2){return _0x116a2['destroy']()[_0xbfe4('0x26')](function(){var _0x19f034=_0x116a2[_0xbfe4('0x27')]({'plain':!![]});var _0x2fdfbf=_0xbfe4('0x28');return db[_0xbfe4('0x29')][_0xbfe4('0x2a')]({'where':{'type':_0x2fdfbf,'resourceId':_0x19f034['id']}})['then'](function(){return _0x116a2;});})[_0xbfe4('0x26')](function(){_0x507373[_0xbfe4('0x19')](0xcc)[_0xbfe4('0x1a')]();});}};}function handleEntityNotFound(_0x941f19,_0x51ff09){return function(_0x20ff47){if(!_0x20ff47){_0x941f19[_0xbfe4('0x18')](0x194);}return _0x20ff47;};}function handleError(_0x278ee9,_0x3da9aa){_0x3da9aa=_0x3da9aa||0x1f4;return function(_0x3822ea){logger[_0xbfe4('0x2b')](_0x3822ea[_0xbfe4('0x2c')]);if(_0x3822ea['name']){delete _0x3822ea[_0xbfe4('0x2d')];}_0x278ee9[_0xbfe4('0x19')](_0x3da9aa)[_0xbfe4('0x2e')](_0x3822ea);};}exports[_0xbfe4('0x2f')]=function(_0x4b6009,_0x1364fe){var _0x4becd9={},_0x3063df={},_0x23c35a={'count':0x0,'rows':[]};var _0x3b2793=_['map'](db[_0xbfe4('0x30')][_0xbfe4('0x31')],function(_0x3a0456){return{'name':_0x3a0456[_0xbfe4('0x32')],'type':_0x3a0456['type'][_0xbfe4('0x33')]};});_0x3063df[_0xbfe4('0x34')]=_[_0xbfe4('0x35')](_0x3b2793,_0xbfe4('0x2d'));_0x3063df[_0xbfe4('0x36')]=_[_0xbfe4('0x37')](_0x4b6009[_0xbfe4('0x36')]);_0x3063df[_0xbfe4('0x38')]=_[_0xbfe4('0x39')](_0x3063df[_0xbfe4('0x34')],_0x3063df[_0xbfe4('0x36')]);_0x4becd9[_0xbfe4('0x3a')]=_['intersection'](_0x3063df[_0xbfe4('0x34')],qs[_0xbfe4('0x3b')](_0x4b6009[_0xbfe4('0x36')][_0xbfe4('0x3b')]));_0x4becd9['attributes']=_0x4becd9[_0xbfe4('0x3a')][_0xbfe4('0x3c')]?_0x4becd9[_0xbfe4('0x3a')]:_0x3063df['model'];if(!_0x4b6009[_0xbfe4('0x36')][_0xbfe4('0x3d')](_0xbfe4('0x3e'))){_0x4becd9[_0xbfe4('0x1e')]=qs[_0xbfe4('0x1e')](_0x4b6009[_0xbfe4('0x36')]['limit']);_0x4becd9[_0xbfe4('0x1c')]=qs['offset'](_0x4b6009['query'][_0xbfe4('0x1c')]);}_0x4becd9[_0xbfe4('0x3f')]=qs['sort'](_0x4b6009['query']['sort']);_0x4becd9[_0xbfe4('0x40')]=qs[_0xbfe4('0x38')](_[_0xbfe4('0x41')](_0x4b6009[_0xbfe4('0x36')],_0x3063df[_0xbfe4('0x38')]),_0x3b2793);if(_0x4b6009[_0xbfe4('0x36')][_0xbfe4('0x42')]){_0x4becd9[_0xbfe4('0x40')]=_['merge'](_0x4becd9['where'],{'$or':_[_0xbfe4('0x35')](_0x3b2793,function(_0x3a448a){if(_0x3a448a[_0xbfe4('0x43')]!=='VIRTUAL'){var _0x3c78c4={};_0x3c78c4[_0x3a448a[_0xbfe4('0x2d')]]={'$like':'%'+_0x4b6009[_0xbfe4('0x36')][_0xbfe4('0x42')]+'%'};return _0x3c78c4;}})});}_0x4becd9=_[_0xbfe4('0x44')]({},_0x4becd9,_0x4b6009[_0xbfe4('0x45')]);var _0x1dfee1={'where':_0x4becd9[_0xbfe4('0x40')]};return db['Variable']['count'](_0x1dfee1)[_0xbfe4('0x26')](function(_0x353d6b){_0x23c35a[_0xbfe4('0x1f')]=_0x353d6b;if(_0x4b6009[_0xbfe4('0x36')][_0xbfe4('0x46')]){_0x4becd9[_0xbfe4('0x47')]=[{'all':!![]}];}return db['Variable']['findAll'](_0x4becd9);})[_0xbfe4('0x26')](function(_0x248c54){_0x23c35a[_0xbfe4('0x48')]=_0x248c54;return _0x23c35a;})['then'](respondWithFilteredResult(_0x1364fe,_0x4becd9))[_0xbfe4('0x49')](handleError(_0x1364fe,null));};exports['show']=function(_0x32f155,_0x5f130f){var _0x5c6b72={'raw':!![],'where':{'id':_0x32f155['params']['id']}},_0x3771b1={};_0x3771b1[_0xbfe4('0x34')]=_[_0xbfe4('0x37')](db['Variable'][_0xbfe4('0x31')]);_0x3771b1[_0xbfe4('0x36')]=_[_0xbfe4('0x37')](_0x32f155[_0xbfe4('0x36')]);_0x3771b1['filters']=_[_0xbfe4('0x39')](_0x3771b1[_0xbfe4('0x34')],_0x3771b1['query']);_0x5c6b72[_0xbfe4('0x3a')]=_[_0xbfe4('0x39')](_0x3771b1['model'],qs[_0xbfe4('0x3b')](_0x32f155[_0xbfe4('0x36')][_0xbfe4('0x3b')]));_0x5c6b72[_0xbfe4('0x3a')]=_0x5c6b72[_0xbfe4('0x3a')][_0xbfe4('0x3c')]?_0x5c6b72[_0xbfe4('0x3a')]:_0x3771b1[_0xbfe4('0x34')];if(_0x32f155[_0xbfe4('0x36')]['includeAll']){_0x5c6b72[_0xbfe4('0x47')]=[{'all':!![]}];}_0x5c6b72=_[_0xbfe4('0x44')]({},_0x5c6b72,_0x32f155['options']);return db[_0xbfe4('0x30')][_0xbfe4('0x4a')](_0x5c6b72)[_0xbfe4('0x26')](handleEntityNotFound(_0x5f130f,null))['then'](respondWithResult(_0x5f130f,null))[_0xbfe4('0x49')](handleError(_0x5f130f,null));};exports['create']=function(_0x528fd9,_0x4cfa9a){return db[_0xbfe4('0x30')][_0xbfe4('0x4b')](_0x528fd9['body'],{})[_0xbfe4('0x26')](function(_0x3dee5b){var _0x423d2f=_0x528fd9['user'][_0xbfe4('0x27')]({'plain':!![]});if(!_0x423d2f)throw new Error(_0xbfe4('0x4c'));if(_0x423d2f[_0xbfe4('0x4d')]===_0xbfe4('0x4e')){var _0x29ff0a=_0x3dee5b['get']({'plain':!![]});var _0x5d31c7=_0xbfe4('0x28');return db[_0xbfe4('0x4f')][_0xbfe4('0x4a')]({'where':{'name':_0x5d31c7,'userProfileId':_0x423d2f[_0xbfe4('0x50')]},'raw':!![]})[_0xbfe4('0x26')](function(_0x207d02){if(_0x207d02&&_0x207d02[_0xbfe4('0x51')]===0x0){return db['UserProfileResource'][_0xbfe4('0x4b')]({'name':_0x29ff0a[_0xbfe4('0x2d')],'resourceId':_0x29ff0a['id'],'type':_0x207d02[_0xbfe4('0x2d')],'sectionId':_0x207d02['id']},{})[_0xbfe4('0x26')](function(){return _0x3dee5b;});}else{return _0x3dee5b;}})[_0xbfe4('0x49')](function(_0xe1a07){logger[_0xbfe4('0x2b')](_0xbfe4('0x52'),_0xe1a07);throw _0xe1a07;});}return _0x3dee5b;})[_0xbfe4('0x26')](respondWithResult(_0x4cfa9a,0xc9))[_0xbfe4('0x49')](handleError(_0x4cfa9a,null));};exports[_0xbfe4('0x25')]=function(_0x141d11,_0x1092f4){if(_0x141d11[_0xbfe4('0x53')]['id']){delete _0x141d11[_0xbfe4('0x53')]['id'];}return db['Variable'][_0xbfe4('0x4a')]({'where':{'id':_0x141d11[_0xbfe4('0x54')]['id']}})[_0xbfe4('0x26')](handleEntityNotFound(_0x1092f4,null))[_0xbfe4('0x26')](saveUpdates(_0x141d11[_0xbfe4('0x53')],null))['then'](respondWithResult(_0x1092f4,null))[_0xbfe4('0x49')](handleError(_0x1092f4,null));};exports['destroy']=function(_0x2f64aa,_0x2029b3){return db['Variable']['find']({'where':{'id':_0x2f64aa[_0xbfe4('0x54')]['id']}})[_0xbfe4('0x26')](handleEntityNotFound(_0x2029b3,null))[_0xbfe4('0x26')](removeEntity(_0x2029b3,null))[_0xbfe4('0x49')](handleError(_0x2029b3,null));};
\ No newline at end of file
index 9ddb781..a020e80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38f3=['path','../../config/environment','./variable.attributes','exports','tools_variables','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4610c5,_0xae54dd){var _0x266fc3=function(_0x32ce7e){while(--_0x32ce7e){_0x4610c5['push'](_0x4610c5['shift']());}};_0x266fc3(++_0xae54dd);}(_0x38f3,0x1f4));var _0x338f=function(_0xbfc560,_0x311fba){_0xbfc560=_0xbfc560-0x0;var _0x47b022=_0x38f3[_0xbfc560];return _0x47b022;};'use strict';var _=require(_0x338f('0x0'));var util=require('util');var logger=require(_0x338f('0x1'))(_0x338f('0x2'));var moment=require(_0x338f('0x3'));var BPromise=require(_0x338f('0x4'));var rp=require(_0x338f('0x5'));var fs=require('fs');var path=require(_0x338f('0x6'));var rimraf=require('rimraf');var config=require(_0x338f('0x7'));var attributes=require(_0x338f('0x8'));module[_0x338f('0x9')]=function(_0x570b02,_0x16b774){return _0x570b02['define']('Variable',attributes,{'tableName':_0x338f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2072=['./variable.attributes','define','tools_variables','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x345ab0,_0x422865){var _0x42b950=function(_0x448422){while(--_0x448422){_0x345ab0['push'](_0x345ab0['shift']());}};_0x42b950(++_0x422865);}(_0x2072,0x15f));var _0x2207=function(_0x3458c2,_0x1aa0d8){_0x3458c2=_0x3458c2-0x0;var _0x22cdde=_0x2072[_0x3458c2];return _0x22cdde;};'use strict';var _=require(_0x2207('0x0'));var util=require(_0x2207('0x1'));var logger=require(_0x2207('0x2'))(_0x2207('0x3'));var moment=require(_0x2207('0x4'));var BPromise=require(_0x2207('0x5'));var rp=require(_0x2207('0x6'));var fs=require('fs');var path=require(_0x2207('0x7'));var rimraf=require('rimraf');var config=require(_0x2207('0x8'));var attributes=require(_0x2207('0x9'));module['exports']=function(_0xec59f4,_0x534109){return _0xec59f4[_0x2207('0xa')]('Variable',attributes,{'tableName':_0x2207('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index eb3ac0e..8b29055 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['stringify','error','code','message','result','catch','Variable','find','options','where','attributes','include','map','model','info','ShowVariable','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s'];(function(_0x3155b9,_0x58dbee){var _0x15c6e2=function(_0x1dfa10){while(--_0x1dfa10){_0x3155b9['push'](_0x3155b9['shift']());}};_0x15c6e2(++_0x58dbee);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x179e6a,_0x23c5f8){_0x179e6a=_0x179e6a-0x0;var _0x515f39=_0x7fbe[_0x179e6a];return _0x515f39;};'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);});});}exports['ShowVariable']=function(_0x293a47){var _0x546463=this;return new Promise(function(_0x1e77fd,_0x4708f7){return db[_0xe7fb('0x18')][_0xe7fb('0x19')]({'raw':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x293a47[_0xe7fb('0x1a')]?_0x293a47['options'][_0xe7fb('0x1b')]||null:null,'attributes':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')][_0xe7fb('0x1c')]||null:null,'include':_0x293a47['options']?_0x293a47[_0xe7fb('0x1a')][_0xe7fb('0x1d')]?_[_0xe7fb('0x1e')](_0x293a47['options'][_0xe7fb('0x1d')],function(_0x469ead){return{'model':db[_0x469ead['model']],'as':_0x469ead['as'],'attributes':_0x469ead['attributes'],'include':_0x469ead['include']?_[_0xe7fb('0x1e')](_0x469ead['include'],function(_0x49b219){return{'model':db[_0x49b219[_0xe7fb('0x1f')]],'as':_0x49b219['as'],'attributes':_0x49b219[_0xe7fb('0x1c')],'include':_0x49b219[_0xe7fb('0x1d')]?_['map'](_0x49b219[_0xe7fb('0x1d')],function(_0x2b69c4){return{'model':db[_0x2b69c4[_0xe7fb('0x1f')]],'as':_0x2b69c4['as'],'attributes':_0x2b69c4[_0xe7fb('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xe7fb('0xd')](function(_0x16237a){logger[_0xe7fb('0x20')]('ShowVariable',_0x293a47);logger['debug'](_0xe7fb('0x21'),_0x293a47,JSON[_0xe7fb('0x12')](_0x16237a));_0x1e77fd(_0x16237a);})[_0xe7fb('0x17')](function(_0x4fd290){logger[_0xe7fb('0x13')](_0xe7fb('0x21'),_0x4fd290[_0xe7fb('0x15')],_0x293a47);_0x4708f7(_0x546463[_0xe7fb('0x13')](0x1f4,_0x4fd290[_0xe7fb('0x15')]));});});};
\ No newline at end of file
+var _0xf494=['where','attributes','include','map','model','debug','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Variable,\x20%s,\x20%s','request\x20sent','Variable,\x20%s,\x20%s,\x20%s','error','message','catch','ShowVariable','find','options','raw'];(function(_0x2796e2,_0x4365b0){var _0x37820e=function(_0x5b7717){while(--_0x5b7717){_0x2796e2['push'](_0x2796e2['shift']());}};_0x37820e(++_0x4365b0);}(_0xf494,0x1c6));var _0x4f49=function(_0x3610c8,_0x283ba4){_0x3610c8=_0x3610c8-0x0;var _0x23c7f1=_0xf494[_0x3610c8];return _0x23c7f1;};'use strict';var _=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var moment=require(_0x4f49('0x2'));var BPromise=require('bluebird');var rs=require(_0x4f49('0x3'));var fs=require('fs');var Redis=require(_0x4f49('0x4'));var db=require(_0x4f49('0x5'))['db'];var utils=require(_0x4f49('0x6'));var logger=require(_0x4f49('0x7'))(_0x4f49('0x8'));var config=require(_0x4f49('0x9'));var jayson=require(_0x4f49('0xa'));var client=jayson[_0x4f49('0xb')][_0x4f49('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x42b0e8,_0x5eb186,_0x58e9a0){return new BPromise(function(_0x169c95,_0x327bd5){return client[_0x4f49('0xd')](_0x42b0e8,_0x58e9a0)[_0x4f49('0xe')](function(_0x185174){logger[_0x4f49('0xf')](_0x4f49('0x10'),_0x5eb186,_0x4f49('0x11'));logger['debug'](_0x4f49('0x12'),_0x5eb186,_0x4f49('0x11'),JSON['stringify'](_0x185174));if(_0x185174[_0x4f49('0x13')]){if(_0x185174['error']['code']===0x1f4){logger[_0x4f49('0x13')](_0x4f49('0x10'),_0x5eb186,_0x185174['error'][_0x4f49('0x14')]);return _0x327bd5(_0x185174[_0x4f49('0x13')][_0x4f49('0x14')]);}logger[_0x4f49('0x13')](_0x4f49('0x10'),_0x5eb186,_0x185174[_0x4f49('0x13')][_0x4f49('0x14')]);return _0x169c95(_0x185174['error'][_0x4f49('0x14')]);}else{logger[_0x4f49('0xf')](_0x4f49('0x10'),_0x5eb186,'request\x20sent');_0x169c95(_0x185174['result'][_0x4f49('0x14')]);}})[_0x4f49('0x15')](function(_0x74886e){logger['error'](_0x4f49('0x10'),_0x5eb186,_0x74886e);_0x327bd5(_0x74886e);});});}exports[_0x4f49('0x16')]=function(_0x4e85df){var _0x49cdaf=this;return new Promise(function(_0x5bb23b,_0x560592){return db['Variable'][_0x4f49('0x17')]({'raw':_0x4e85df[_0x4f49('0x18')]?_0x4e85df[_0x4f49('0x18')][_0x4f49('0x19')]===undefined?!![]:![]:!![],'where':_0x4e85df['options']?_0x4e85df[_0x4f49('0x18')][_0x4f49('0x1a')]||null:null,'attributes':_0x4e85df[_0x4f49('0x18')]?_0x4e85df[_0x4f49('0x18')][_0x4f49('0x1b')]||null:null,'include':_0x4e85df['options']?_0x4e85df[_0x4f49('0x18')][_0x4f49('0x1c')]?_[_0x4f49('0x1d')](_0x4e85df['options'][_0x4f49('0x1c')],function(_0x1d70a7){return{'model':db[_0x1d70a7[_0x4f49('0x1e')]],'as':_0x1d70a7['as'],'attributes':_0x1d70a7[_0x4f49('0x1b')],'include':_0x1d70a7[_0x4f49('0x1c')]?_[_0x4f49('0x1d')](_0x1d70a7['include'],function(_0x4e9041){return{'model':db[_0x4e9041[_0x4f49('0x1e')]],'as':_0x4e9041['as'],'attributes':_0x4e9041[_0x4f49('0x1b')],'include':_0x4e9041['include']?_[_0x4f49('0x1d')](_0x4e9041[_0x4f49('0x1c')],function(_0x35f8e0){return{'model':db[_0x35f8e0['model']],'as':_0x35f8e0['as'],'attributes':_0x35f8e0[_0x4f49('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x4f49('0xe')](function(_0x298785){logger[_0x4f49('0xf')](_0x4f49('0x16'),_0x4e85df);logger[_0x4f49('0x1f')]('ShowVariable',_0x4e85df,JSON['stringify'](_0x298785));_0x5bb23b(_0x298785);})[_0x4f49('0x15')](function(_0x2c00ee){logger[_0x4f49('0x13')]('ShowVariable',_0x2c00ee[_0x4f49('0x14')],_0x4e85df);_0x560592(_0x49cdaf[_0x4f49('0x13')](0x1f4,_0x2c00ee[_0x4f49('0x14')]));});});};
\ No newline at end of file
index bdf616c..f411602 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcdd=['canUpdate','/pull','pull','/restart','migrations','exports','express','Router','../../components/auth/service','./version.controller','get','index','/fetch','isAuthenticated','fetch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdcdd,0x114));var _0xddcd=function(_0x2d76d8,_0x3f5026){_0x2d76d8=_0x2d76d8-0x0;var _0x226939=_0xdcdd[_0x2d76d8];return _0x226939;};'use strict';var express=require(_0xddcd('0x0'));var router=express[_0xddcd('0x1')]();var auth=require(_0xddcd('0x2'));var controller=require(_0xddcd('0x3'));router[_0xddcd('0x4')]('/',controller[_0xddcd('0x5')]);router[_0xddcd('0x4')](_0xddcd('0x6'),auth[_0xddcd('0x7')](),auth['canUpdate'](),controller[_0xddcd('0x8')]);router[_0xddcd('0x4')]('/reset',auth[_0xddcd('0x7')](),auth[_0xddcd('0x9')](),controller['reset']);router[_0xddcd('0x4')](_0xddcd('0xa'),auth[_0xddcd('0x7')](),auth[_0xddcd('0x9')](),controller[_0xddcd('0xb')]);router['get'](_0xddcd('0xc'),auth[_0xddcd('0x7')](),controller['restart']);router['get']('/migrations',controller[_0xddcd('0xd')]);module[_0xddcd('0xe')]=router;
\ No newline at end of file
+var _0xc6b2=['express','../../components/auth/service','./version.controller','get','isAuthenticated','canUpdate','/reset','pull','restart','/migrations','exports'];(function(_0x4c61bb,_0x368903){var _0x24422e=function(_0x371c15){while(--_0x371c15){_0x4c61bb['push'](_0x4c61bb['shift']());}};_0x24422e(++_0x368903);}(_0xc6b2,0x129));var _0x2c6b=function(_0x46912c,_0x387270){_0x46912c=_0x46912c-0x0;var _0x326269=_0xc6b2[_0x46912c];return _0x326269;};'use strict';var express=require(_0x2c6b('0x0'));var router=express['Router']();var auth=require(_0x2c6b('0x1'));var controller=require(_0x2c6b('0x2'));router[_0x2c6b('0x3')]('/',controller['index']);router[_0x2c6b('0x3')]('/fetch',auth[_0x2c6b('0x4')](),auth[_0x2c6b('0x5')](),controller['fetch']);router['get'](_0x2c6b('0x6'),auth[_0x2c6b('0x4')](),auth[_0x2c6b('0x5')](),controller['reset']);router[_0x2c6b('0x3')]('/pull',auth[_0x2c6b('0x4')](),auth['canUpdate'](),controller[_0x2c6b('0x7')]);router[_0x2c6b('0x3')]('/restart',auth[_0x2c6b('0x4')](),controller[_0x2c6b('0x8')]);router['get'](_0x2c6b('0x9'),controller['migrations']);module[_0x2c6b('0xa')]=router;
\ No newline at end of file
index a635811..78d0692 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdc3=['\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','version','compare-versions','child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','simple-git','root','index','latest','fetch','tags','exports','2.0.0','status','json','origin','master','error','git\x20fetch\x20origin\x20master','reset','FETCH_HEAD','info','pull','npm\x20install\x20--production','restart','motion2','then','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','readdirSync','join','server','migrations','length','replace','push','sort','sequelize','Migration','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','.js','Database\x20migrated\x20successfully\x20from\x20version\x20'];(function(_0x39f964,_0x328eee){var _0x3c659e=function(_0x22b06e){while(--_0x22b06e){_0x39f964['push'](_0x39f964['shift']());}};_0x3c659e(++_0x328eee);}(_0xfdc3,0x14e));var _0x3fdc=function(_0x1d8326,_0x7b519e){_0x1d8326=_0x1d8326-0x0;var _0x5bb6af=_0xfdc3[_0x1d8326];return _0x5bb6af;};'use strict';var Umzug=require(_0x3fdc('0x0'));var path=require(_0x3fdc('0x1'));var fs=require('fs');var _=require(_0x3fdc('0x2'));var pkginfo=require('pkginfo')(module,_0x3fdc('0x3'));var compareVersions=require(_0x3fdc('0x4'));var exec=require(_0x3fdc('0x5'))[_0x3fdc('0x6')];var db=require(_0x3fdc('0x7'))['db'];var config=require(_0x3fdc('0x8'));var pm2=require(_0x3fdc('0x9'));var logger=require(_0x3fdc('0xa'))('update');var git=require(_0x3fdc('0xb'))(config[_0x3fdc('0xc')]);exports[_0x3fdc('0xd')]=function(_0x38740d,_0x1eff5a){var _0x55807a={'current':module['exports'][_0x3fdc('0x3')],'phonebar':0x2};if(_0x38740d['query']&&_0x38740d['query'][_0x3fdc('0xe')]){return git[_0x3fdc('0xf')]()[_0x3fdc('0x10')](function(_0xd4a309,_0x375e9d){_0x55807a[_0x3fdc('0xe')]=(_0xd4a309?module[_0x3fdc('0x11')]['version']:_0x375e9d[_0x3fdc('0xe')])||_0x3fdc('0x12');return _0x1eff5a[_0x3fdc('0x13')](0xc8)[_0x3fdc('0x14')](_0x55807a);});}else{return _0x1eff5a['status'](0xc8)['json'](_0x55807a);}};exports[_0x3fdc('0xf')]=function(_0x363c4d,_0x9c61db){return git['fetch']([_0x3fdc('0x15'),_0x3fdc('0x16')],function(_0x30b344){if(_0x30b344){logger[_0x3fdc('0x17')](_0x30b344);return _0x9c61db[_0x3fdc('0x13')](0x1f4)['json'](_0x30b344);}logger['info']('git\x20fetch');return _0x9c61db[_0x3fdc('0x13')](0xc8)[_0x3fdc('0x14')]({'output':_0x3fdc('0x18')});});};exports[_0x3fdc('0x19')]=function(_0x1482cb,_0x415b0c){return git[_0x3fdc('0x19')](['--hard',_0x3fdc('0x1a')],function(_0x19e682){if(_0x19e682){logger['error'](_0x19e682);return _0x415b0c['status'](0x1f4)[_0x3fdc('0x14')](_0x19e682);}logger[_0x3fdc('0x1b')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x415b0c[_0x3fdc('0x13')](0xc8)[_0x3fdc('0x14')]({'output':'git\x20reset\x20--hard'});});};exports[_0x3fdc('0x1c')]=function(_0x525c54,_0xc508b2){exec(_0x3fdc('0x1d'),function(_0x3561b4,_0xbae521,_0x5c455a){logger[_0x3fdc('0x1b')](_0xbae521);logger[_0x3fdc('0x1b')](_0x5c455a);if(_0x3561b4){logger[_0x3fdc('0x17')](_0x3561b4);return _0xc508b2['status'](0x1f4)[_0x3fdc('0x14')](_0x3561b4);}return _0xc508b2[_0x3fdc('0x13')](0xc8)[_0x3fdc('0x14')]({'output':_0xbae521});});};exports['restart']=function(_0x7f7233,_0x342f98){return pm2[_0x3fdc('0x1e')](_0x3fdc('0x1f'))[_0x3fdc('0x20')](function(_0x105022){logger['info']('pm2\x20restart\x20motion\x20%s',_0x105022);return _0x342f98[_0x3fdc('0x13')](0xc8)['json']({'output':_0x3fdc('0x21')});})[_0x3fdc('0x22')](function(_0x85f4a4){logger[_0x3fdc('0x17')](_0x85f4a4);return _0x342f98[_0x3fdc('0x13')](0x1f4)['json'](_0x85f4a4);});};exports['migrations']=function(_0x506056,_0x3c2918){var _0x3bc88f=fs[_0x3fdc('0x23')](path[_0x3fdc('0x24')](config['root'],_0x3fdc('0x25'),_0x3fdc('0x26')));var _0x35ebfd=[];for(var _0x335f34=0x0;_0x335f34<_0x3bc88f[_0x3fdc('0x27')];_0x335f34++){var _0x277a57=_0x3bc88f[_0x335f34][_0x3fdc('0x28')]('.js','');if(compareVersions(module[_0x3fdc('0x11')]['version'],_0x277a57)===-0x1){_0x35ebfd[_0x3fdc('0x29')](_0x277a57);}}if(_0x35ebfd['length']){var _0x233d43=_0x35ebfd[_0x3fdc('0x2a')](compareVersions);var _0x5c43db=new Umzug({'storage':_0x3fdc('0x2b'),'storageOptions':{'model':db[_0x3fdc('0x2c')],'modelName':'Migration','columnName':_0x3fdc('0x3')},'migrations':{'params':[db['sequelize'][_0x3fdc('0x2d')](),db[_0x3fdc('0x2b')][_0x3fdc('0x2e')],function(){throw new Error(_0x3fdc('0x2f'));}],'path':path[_0x3fdc('0x24')](config['root'],'server',_0x3fdc('0x26')),'pattern':/\.js$/}});_0x5c43db['up']({'migrations':_[_0x3fdc('0x30')](_0x233d43,function(_0x1c3442){return _0x1c3442+_0x3fdc('0x31');})})[_0x3fdc('0x20')](function(){return _0x3c2918[_0x3fdc('0x13')](0xc8)['json']({'output':_0x3fdc('0x32')+module[_0x3fdc('0x11')][_0x3fdc('0x3')]+_0x3fdc('0x33')+_[_0x3fdc('0x34')](_0x233d43),'migrations':_[_0x3fdc('0x24')](_0x233d43)});})[_0x3fdc('0x22')](function(_0x1e5bab){if(_0x1e5bab instanceof db['sequelize'][_0x3fdc('0x35')]){return _0x3c2918[_0x3fdc('0x13')](0xc8)[_0x3fdc('0x14')]({'output':'Database\x20already\x20up-to-date'});}else{return _0x3c2918['status'](0x1f4)[_0x3fdc('0x14')](_0x1e5bab);}});}else{return _0x3c2918[_0x3fdc('0x13')](0xc8)[_0x3fdc('0x14')]({'output':_0x3fdc('0x36')});}};
\ No newline at end of file
+var _0xde10=['child_process','exec','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','root','index','latest','fetch','tags','exports','json','status','origin','master','error','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','npm\x20install\x20--production','restart','motion2','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','join','server','length','replace','.js','push','sort','sequelize','Migration','getQueryInterface','constructor','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','then','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','UniqueConstraintError','path','lodash','pkginfo','version','compare-versions'];(function(_0xce0128,_0x2d0220){var _0x412f55=function(_0x2b3b34){while(--_0x2b3b34){_0xce0128['push'](_0xce0128['shift']());}};_0x412f55(++_0x2d0220);}(_0xde10,0x6f));var _0x0de1=function(_0x4d3fc0,_0x4aa47b){_0x4d3fc0=_0x4d3fc0-0x0;var _0x781c60=_0xde10[_0x4d3fc0];return _0x781c60;};'use strict';var Umzug=require('umzug');var path=require(_0x0de1('0x0'));var fs=require('fs');var _=require(_0x0de1('0x1'));var pkginfo=require(_0x0de1('0x2'))(module,_0x0de1('0x3'));var compareVersions=require(_0x0de1('0x4'));var exec=require(_0x0de1('0x5'))[_0x0de1('0x6')];var db=require(_0x0de1('0x7'))['db'];var config=require(_0x0de1('0x8'));var pm2=require(_0x0de1('0x9'));var logger=require(_0x0de1('0xa'))(_0x0de1('0xb'));var git=require(_0x0de1('0xc'))(config[_0x0de1('0xd')]);exports[_0x0de1('0xe')]=function(_0x57fa07,_0x112ecc){var _0x83208={'current':module['exports']['version'],'phonebar':0x2};if(_0x57fa07['query']&&_0x57fa07['query'][_0x0de1('0xf')]){return git[_0x0de1('0x10')]()[_0x0de1('0x11')](function(_0x1f0787,_0x30e79b){_0x83208[_0x0de1('0xf')]=(_0x1f0787?module[_0x0de1('0x12')][_0x0de1('0x3')]:_0x30e79b[_0x0de1('0xf')])||'2.0.0';return _0x112ecc['status'](0xc8)[_0x0de1('0x13')](_0x83208);});}else{return _0x112ecc[_0x0de1('0x14')](0xc8)[_0x0de1('0x13')](_0x83208);}};exports[_0x0de1('0x10')]=function(_0x397cec,_0x4a4be9){return git[_0x0de1('0x10')]([_0x0de1('0x15'),_0x0de1('0x16')],function(_0x86860){if(_0x86860){logger[_0x0de1('0x17')](_0x86860);return _0x4a4be9['status'](0x1f4)[_0x0de1('0x13')](_0x86860);}logger[_0x0de1('0x18')](_0x0de1('0x19'));return _0x4a4be9[_0x0de1('0x14')](0xc8)[_0x0de1('0x13')]({'output':_0x0de1('0x1a')});});};exports[_0x0de1('0x1b')]=function(_0x100c0f,_0x2276ee){return git[_0x0de1('0x1b')]([_0x0de1('0x1c'),_0x0de1('0x1d')],function(_0x16e698){if(_0x16e698){logger[_0x0de1('0x17')](_0x16e698);return _0x2276ee[_0x0de1('0x14')](0x1f4)[_0x0de1('0x13')](_0x16e698);}logger['info'](_0x0de1('0x1e'));return _0x2276ee[_0x0de1('0x14')](0xc8)[_0x0de1('0x13')]({'output':_0x0de1('0x1f')});});};exports['pull']=function(_0x5e022a,_0x48512e){exec(_0x0de1('0x20'),function(_0xd013a1,_0x5743b5,_0x4d4c9a){logger[_0x0de1('0x18')](_0x5743b5);logger['info'](_0x4d4c9a);if(_0xd013a1){logger[_0x0de1('0x17')](_0xd013a1);return _0x48512e['status'](0x1f4)[_0x0de1('0x13')](_0xd013a1);}return _0x48512e[_0x0de1('0x14')](0xc8)[_0x0de1('0x13')]({'output':_0x5743b5});});};exports[_0x0de1('0x21')]=function(_0x397a76,_0x367c95){return pm2['restart'](_0x0de1('0x22'))['then'](function(_0x4203c8){logger[_0x0de1('0x18')](_0x0de1('0x23'),_0x4203c8);return _0x367c95[_0x0de1('0x14')](0xc8)[_0x0de1('0x13')]({'output':_0x0de1('0x24')});})[_0x0de1('0x25')](function(_0x1ddded){logger['error'](_0x1ddded);return _0x367c95[_0x0de1('0x14')](0x1f4)[_0x0de1('0x13')](_0x1ddded);});};exports[_0x0de1('0x26')]=function(_0x447978,_0xb6d853){var _0x2aa4de=fs[_0x0de1('0x27')](path[_0x0de1('0x28')](config[_0x0de1('0xd')],_0x0de1('0x29'),_0x0de1('0x26')));var _0x1b79a4=[];for(var _0x5daf16=0x0;_0x5daf16<_0x2aa4de[_0x0de1('0x2a')];_0x5daf16++){var _0x4413aa=_0x2aa4de[_0x5daf16][_0x0de1('0x2b')](_0x0de1('0x2c'),'');if(compareVersions(module[_0x0de1('0x12')]['version'],_0x4413aa)===-0x1){_0x1b79a4[_0x0de1('0x2d')](_0x4413aa);}}if(_0x1b79a4[_0x0de1('0x2a')]){var _0x548413=_0x1b79a4[_0x0de1('0x2e')](compareVersions);var _0x59c9f8=new Umzug({'storage':_0x0de1('0x2f'),'storageOptions':{'model':db['Migration'],'modelName':_0x0de1('0x30'),'columnName':_0x0de1('0x3')},'migrations':{'params':[db[_0x0de1('0x2f')][_0x0de1('0x31')](),db[_0x0de1('0x2f')][_0x0de1('0x32')],function(){throw new Error(_0x0de1('0x33'));}],'path':path[_0x0de1('0x28')](config['root'],_0x0de1('0x29'),_0x0de1('0x26')),'pattern':/\.js$/}});_0x59c9f8['up']({'migrations':_[_0x0de1('0x34')](_0x548413,function(_0x2bae5c){return _0x2bae5c+_0x0de1('0x2c');})})[_0x0de1('0x35')](function(){return _0xb6d853[_0x0de1('0x14')](0xc8)[_0x0de1('0x13')]({'output':_0x0de1('0x36')+module[_0x0de1('0x12')]['version']+_0x0de1('0x37')+_[_0x0de1('0x38')](_0x548413),'migrations':_[_0x0de1('0x28')](_0x548413)});})[_0x0de1('0x25')](function(_0x5204c7){if(_0x5204c7 instanceof db[_0x0de1('0x2f')][_0x0de1('0x39')]){return _0xb6d853[_0x0de1('0x14')](0xc8)['json']({'output':'Database\x20already\x20up-to-date'});}else{return _0xb6d853[_0x0de1('0x14')](0x1f4)[_0x0de1('0x13')](_0x5204c7);}});}else{return _0xb6d853[_0x0de1('0x14')](0xc8)[_0x0de1('0x13')]({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
index d3879b3..af8547d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa503=['../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','index','/describe','describe','show','post','put','/:id','delete','destroy','exports','multer','express','Router','../../components/auth/service'];(function(_0x2e6b07,_0x581517){var _0x113ea9=function(_0x5c07fc){while(--_0x5c07fc){_0x2e6b07['push'](_0x2e6b07['shift']());}};_0x113ea9(++_0x581517);}(_0xa503,0xd4));var _0x3a50=function(_0x5689c6,_0x58e92c){_0x5689c6=_0x5689c6-0x0;var _0x565cc9=_0xa503[_0x5689c6];return _0x565cc9;};'use strict';var multer=require(_0x3a50('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x3a50('0x1'));var router=express[_0x3a50('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x3a50('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x3a50('0x4'));var controller=require(_0x3a50('0x5'));router[_0x3a50('0x6')]('/',auth[_0x3a50('0x7')](),controller[_0x3a50('0x8')]);router[_0x3a50('0x6')](_0x3a50('0x9'),auth['isAuthenticated'](),controller[_0x3a50('0xa')]);router[_0x3a50('0x6')]('/:id',auth[_0x3a50('0x7')](),controller[_0x3a50('0xb')]);router[_0x3a50('0xc')]('/',auth[_0x3a50('0x7')](),controller['create']);router[_0x3a50('0xd')](_0x3a50('0xe'),auth[_0x3a50('0x7')](),controller['update']);router[_0x3a50('0xf')](_0x3a50('0xe'),auth[_0x3a50('0x7')](),controller[_0x3a50('0x10')]);module[_0x3a50('0x11')]=router;
\ No newline at end of file
+var _0x3662=['/describe','describe','show','create','put','/:id','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceAgentReport.controller','isAuthenticated','index'];(function(_0x84723e,_0x29d2a3){var _0x41a03f=function(_0x1d793b){while(--_0x1d793b){_0x84723e['push'](_0x84723e['shift']());}};_0x41a03f(++_0x29d2a3);}(_0x3662,0x1db));var _0x2366=function(_0x56b032,_0x31cbc4){_0x56b032=_0x56b032-0x0;var _0x3c2966=_0x3662[_0x56b032];return _0x3c2966;};'use strict';var multer=require(_0x2366('0x0'));var util=require(_0x2366('0x1'));var path=require(_0x2366('0x2'));var timeout=require(_0x2366('0x3'));var express=require('express');var router=express[_0x2366('0x4')]();var fs_extra=require(_0x2366('0x5'));var auth=require(_0x2366('0x6'));var interaction=require(_0x2366('0x7'));var config=require('../../config/environment');var controller=require(_0x2366('0x8'));router['get']('/',auth[_0x2366('0x9')](),controller[_0x2366('0xa')]);router['get'](_0x2366('0xb'),auth[_0x2366('0x9')](),controller[_0x2366('0xc')]);router['get']('/:id',auth[_0x2366('0x9')](),controller[_0x2366('0xd')]);router['post']('/',auth[_0x2366('0x9')](),controller[_0x2366('0xe')]);router[_0x2366('0xf')](_0x2366('0x10'),auth[_0x2366('0x9')](),controller['update']);router['delete'](_0x2366('0x10'),auth[_0x2366('0x9')](),controller['destroy']);module[_0x2366('0x11')]=router;
\ No newline at end of file
index 18e8a5e..d81d163 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07a2=['exports','STRING','DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x07a2,0x12c));var _0x207a=function(_0x2df523,_0x11b09e){_0x2df523=_0x2df523-0x0;var _0x43f919=_0x07a2[_0x2df523];return _0x43f919;};'use strict';var Sequelize=require(_0x207a('0x0'));module[_0x207a('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x207a('0x2')]},'calleridnum':{'type':Sequelize[_0x207a('0x2')]},'calleridname':{'type':Sequelize[_0x207a('0x2')]},'queue':{'type':Sequelize[_0x207a('0x2')]},'interface':{'type':Sequelize[_0x207a('0x2')]},'membername':{'type':Sequelize[_0x207a('0x2')]},'agentcalledAt':{'type':Sequelize[_0x207a('0x3')]},'agentconnectAt':{'type':Sequelize[_0x207a('0x3')]},'agentcompleteAt':{'type':Sequelize[_0x207a('0x3')]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdumpAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x207a('0x4')]},'agentcomplete':{'type':Sequelize[_0x207a('0x5')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x207a('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x207a('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x207a('0x4')]},'agentacw':{'type':Sequelize[_0x207a('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize['STRING']},'lastevent':{'type':Sequelize[_0x207a('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x207a('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x207a('0x2')]},'accountcode':{'type':Sequelize[_0x207a('0x2')]},'context':{'type':Sequelize[_0x207a('0x2')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x207a('0x2')]},'destchannel':{'type':Sequelize[_0x207a('0x2')]},'destchannelstate':{'type':Sequelize[_0x207a('0x4')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x207a('0x2')]},'destcalleridname':{'type':Sequelize[_0x207a('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x207a('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x207a('0x2')]},'destlanguage':{'type':Sequelize[_0x207a('0x2')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x207a('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x207a('0x2')]},'destuniqueid':{'type':Sequelize[_0x207a('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x207a('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0x207a('0x2')]},'transfer':{'type':Sequelize[_0x207a('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x207a('0x2')],'comment':_0x207a('0x6')},'transferexten':{'type':Sequelize[_0x207a('0x2')]},'transferuniqueid':{'type':Sequelize[_0x207a('0x2')]},'agententerreason':{'type':Sequelize[_0x207a('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x082b=['BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING','DATE','INTEGER'];(function(_0x5520e0,_0x47bc2f){var _0x486197=function(_0x472e43){while(--_0x472e43){_0x5520e0['push'](_0x5520e0['shift']());}};_0x486197(++_0x47bc2f);}(_0x082b,0x1ec));var _0xb082=function(_0x36949f,_0xac8926){_0x36949f=_0x36949f-0x0;var _0x225ac9=_0x082b[_0x36949f];return _0x225ac9;};'use strict';var Sequelize=require(_0xb082('0x0'));module[_0xb082('0x1')]={'type':{'type':Sequelize[_0xb082('0x2')]},'uniqueid':{'type':Sequelize[_0xb082('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xb082('0x2')]},'queue':{'type':Sequelize[_0xb082('0x2')]},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xb082('0x2')]},'agentcalledAt':{'type':Sequelize[_0xb082('0x3')]},'agentconnectAt':{'type':Sequelize['DATE']},'agentcompleteAt':{'type':Sequelize[_0xb082('0x3')]},'agentringnoanswerAt':{'type':Sequelize[_0xb082('0x3')]},'agentdumpAt':{'type':Sequelize[_0xb082('0x3')]},'holdtime':{'type':Sequelize[_0xb082('0x4')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xb082('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xb082('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize[_0xb082('0x4')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xb082('0x4')]},'reason':{'type':Sequelize[_0xb082('0x2')]},'lastevent':{'type':Sequelize[_0xb082('0x2')]},'channel':{'type':Sequelize[_0xb082('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0xb082('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0xb082('0x2')]},'language':{'type':Sequelize[_0xb082('0x2')]},'accountcode':{'type':Sequelize[_0xb082('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0xb082('0x2')]},'priority':{'type':Sequelize[_0xb082('0x2')]},'destchannel':{'type':Sequelize[_0xb082('0x2')]},'destchannelstate':{'type':Sequelize[_0xb082('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0xb082('0x2')]},'destcalleridnum':{'type':Sequelize[_0xb082('0x2')]},'destcalleridname':{'type':Sequelize[_0xb082('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xb082('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0xb082('0x2')]},'destaccountcode':{'type':Sequelize[_0xb082('0x2')]},'destcontext':{'type':Sequelize[_0xb082('0x2')]},'destexten':{'type':Sequelize[_0xb082('0x2')]},'destpriority':{'type':Sequelize[_0xb082('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xb082('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0xb082('0x2')]},'transfer':{'type':Sequelize[_0xb082('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xb082('0x2')],'comment':_0xb082('0x6')},'transferexten':{'type':Sequelize[_0xb082('0x2')]},'transferuniqueid':{'type':Sequelize[_0xb082('0x2')]},'agententerreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 519a727..02e3bfd 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(_0x5c2e3e,_0x26ecd3){var _0x53f64a=function(_0x2b5df8){while(--_0x2b5df8){_0x5c2e3e['push'](_0x5c2e3e['shift']());}};_0x53f64a(++_0x26ecd3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xa9e0[_0x4fc9e6];return _0x551d28;};'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(_0x1b6c6d,_0x2983b0){var _0x290d9d=function(_0x5b9779){while(--_0x5b9779){_0x1b6c6d['push'](_0x1b6c6d['shift']());}};_0x290d9d(++_0x2983b0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'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 bdfbfa1..a5d9360 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84e7=['report_agent','uniqueid','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define'];(function(_0x337a3f,_0x57c81a){var _0x59cd7d=function(_0x249537){while(--_0x249537){_0x337a3f['push'](_0x337a3f['shift']());}};_0x59cd7d(++_0x57c81a);}(_0x84e7,0x122));var _0x784e=function(_0x2c6bcf,_0x2f6241){_0x2c6bcf=_0x2c6bcf-0x0;var _0x435809=_0x84e7[_0x2c6bcf];return _0x435809;};'use strict';var _=require('lodash');var util=require(_0x784e('0x0'));var logger=require(_0x784e('0x1'))('api');var moment=require(_0x784e('0x2'));var BPromise=require(_0x784e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x784e('0x4'));var rimraf=require(_0x784e('0x5'));var config=require(_0x784e('0x6'));var attributes=require(_0x784e('0x7'));module[_0x784e('0x8')]=function(_0x133296,_0x48ed22){return _0x133296[_0x784e('0x9')]('VoiceAgentReport',attributes,{'tableName':_0x784e('0xa'),'paranoid':![],'indexes':[{'fields':[_0x784e('0xb'),'destuniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x24ca=['request-promise','path','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define','VoiceAgentReport','report_agent','destuniqueid','lodash','../../config/logger','api','moment'];(function(_0x3f4dd9,_0xe0b819){var _0x31c54a=function(_0x25e6c6){while(--_0x25e6c6){_0x3f4dd9['push'](_0x3f4dd9['shift']());}};_0x31c54a(++_0xe0b819);}(_0x24ca,0x1bc));var _0xa24c=function(_0x590851,_0x496bee){_0x590851=_0x590851-0x0;var _0x3b0115=_0x24ca[_0x590851];return _0x3b0115;};'use strict';var _=require(_0xa24c('0x0'));var util=require('util');var logger=require(_0xa24c('0x1'))(_0xa24c('0x2'));var moment=require(_0xa24c('0x3'));var BPromise=require('bluebird');var rp=require(_0xa24c('0x4'));var fs=require('fs');var path=require(_0xa24c('0x5'));var rimraf=require(_0xa24c('0x6'));var config=require(_0xa24c('0x7'));var attributes=require(_0xa24c('0x8'));module[_0xa24c('0x9')]=function(_0xf0511,_0x3c0aaa){return _0xf0511[_0xa24c('0xa')](_0xa24c('0xb'),attributes,{'tableName':_0xa24c('0xc'),'paranoid':![],'indexes':[{'fields':['uniqueid',_0xa24c('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 8b0e86e..1b488ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabf9=['create','body','options','raw','then','CreateVoiceAgentReport','catch','UpdateVoiceAgentReport','VoiceAgentReport','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','info','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceAgentReport,\x20%s,\x20%s','message','result'];(function(_0x508c11,_0x308545){var _0x438f65=function(_0x59ee0c){while(--_0x59ee0c){_0x508c11['push'](_0x508c11['shift']());}};_0x438f65(++_0x308545);}(_0xabf9,0xd1));var _0x9abf=function(_0x48dcaf,_0x1b8a21){_0x48dcaf=_0x48dcaf-0x0;var _0x311b27=_0xabf9[_0x48dcaf];return _0x311b27;};'use strict';var _=require(_0x9abf('0x0'));var util=require(_0x9abf('0x1'));var moment=require(_0x9abf('0x2'));var BPromise=require(_0x9abf('0x3'));var rs=require(_0x9abf('0x4'));var fs=require('fs');var Redis=require(_0x9abf('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x9abf('0x6'));var logger=require(_0x9abf('0x7'))(_0x9abf('0x8'));var config=require('../../config/environment');var jayson=require(_0x9abf('0x9'));var client=jayson[_0x9abf('0xa')][_0x9abf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x490e9b,_0x2fba9c,_0x1e58b4){return new BPromise(function(_0x3b0953,_0x38ef93){return client['request'](_0x490e9b,_0x1e58b4)['then'](function(_0x152dbe){logger[_0x9abf('0xc')]('VoiceAgentReport,\x20%s,\x20%s',_0x2fba9c,_0x9abf('0xd'));logger[_0x9abf('0xe')](_0x9abf('0xf'),_0x2fba9c,_0x9abf('0xd'),JSON[_0x9abf('0x10')](_0x152dbe));if(_0x152dbe[_0x9abf('0x11')]){if(_0x152dbe[_0x9abf('0x11')][_0x9abf('0x12')]===0x1f4){logger['error'](_0x9abf('0x13'),_0x2fba9c,_0x152dbe[_0x9abf('0x11')]['message']);return _0x38ef93(_0x152dbe[_0x9abf('0x11')][_0x9abf('0x14')]);}logger['error']('VoiceAgentReport,\x20%s,\x20%s',_0x2fba9c,_0x152dbe[_0x9abf('0x11')][_0x9abf('0x14')]);return _0x3b0953(_0x152dbe[_0x9abf('0x11')]['message']);}else{logger[_0x9abf('0xc')](_0x9abf('0x13'),_0x2fba9c,_0x9abf('0xd'));_0x3b0953(_0x152dbe[_0x9abf('0x15')][_0x9abf('0x14')]);}})['catch'](function(_0x2270ed){logger['error']('VoiceAgentReport,\x20%s,\x20%s',_0x2fba9c,_0x2270ed);_0x38ef93(_0x2270ed);});});}exports['CreateVoiceAgentReport']=function(_0x4646f4){var _0x5b6959=this;return new Promise(function(_0x2d2cec,_0x1157c4){return db['VoiceAgentReport'][_0x9abf('0x16')](_0x4646f4[_0x9abf('0x17')],{'raw':_0x4646f4['options']?_0x4646f4[_0x9abf('0x18')][_0x9abf('0x19')]===undefined?!![]:![]:!![]})[_0x9abf('0x1a')](function(_0xc85123){logger[_0x9abf('0xc')]('CreateVoiceAgentReport',_0x4646f4);logger['debug'](_0x9abf('0x1b'),_0x4646f4,JSON['stringify'](_0xc85123));_0x2d2cec(_0xc85123);})[_0x9abf('0x1c')](function(_0x31a42b){logger[_0x9abf('0x11')]('CreateVoiceAgentReport',_0x31a42b[_0x9abf('0x14')],_0x4646f4);_0x1157c4(_0x5b6959[_0x9abf('0x11')](0x1f4,_0x31a42b[_0x9abf('0x14')]));});});};exports[_0x9abf('0x1d')]=function(_0x574d8c){var _0xfae639=this;return new Promise(function(_0x37186c,_0x5ca162){return db[_0x9abf('0x1e')]['update'](_0x574d8c[_0x9abf('0x17')],{'raw':_0x574d8c[_0x9abf('0x18')]?_0x574d8c[_0x9abf('0x18')][_0x9abf('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x574d8c[_0x9abf('0x18')]?_0x574d8c['options']['where']||null:null,'attributes':_0x574d8c['options']?_0x574d8c['options'][_0x9abf('0x1f')]||null:null,'limit':_0x574d8c['options']?_0x574d8c['options'][_0x9abf('0x20')]||null:null})[_0x9abf('0x1a')](function(_0x23bc6d){logger['info'](_0x9abf('0x1d'),_0x574d8c);logger[_0x9abf('0xe')]('UpdateVoiceAgentReport',_0x574d8c,JSON[_0x9abf('0x10')](_0x23bc6d));_0x37186c(_0x23bc6d);})[_0x9abf('0x1c')](function(_0x449c02){logger[_0x9abf('0x11')](_0x9abf('0x1d'),_0x449c02[_0x9abf('0x14')],_0x574d8c);_0x5ca162(_0xfae639[_0x9abf('0x11')](0x1f4,_0x449c02[_0x9abf('0x14')]));});});};
\ No newline at end of file
+var _0x43a9=['request','then','info','request\x20sent','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','VoiceAgentReport,\x20%s,\x20%s','message','result','CreateVoiceAgentReport','create','body','options','raw','catch','UpdateVoiceAgentReport','VoiceAgentReport','update','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http'];(function(_0x4d9a5a,_0x43352c){var _0x5e2b32=function(_0x34ec2d){while(--_0x34ec2d){_0x4d9a5a['push'](_0x4d9a5a['shift']());}};_0x5e2b32(++_0x43352c);}(_0x43a9,0x10c));var _0x943a=function(_0x3d3d0c,_0x3eebd3){_0x3d3d0c=_0x3d3d0c-0x0;var _0x27c16f=_0x43a9[_0x3d3d0c];return _0x27c16f;};'use strict';var _=require('lodash');var util=require(_0x943a('0x0'));var moment=require(_0x943a('0x1'));var BPromise=require(_0x943a('0x2'));var rs=require(_0x943a('0x3'));var fs=require('fs');var Redis=require(_0x943a('0x4'));var db=require(_0x943a('0x5'))['db'];var utils=require(_0x943a('0x6'));var logger=require(_0x943a('0x7'))('rpc');var config=require(_0x943a('0x8'));var jayson=require(_0x943a('0x9'));var client=jayson['client'][_0x943a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3779bc,_0x534e67,_0x1f2e35){return new BPromise(function(_0x5dce61,_0x558066){return client[_0x943a('0xb')](_0x3779bc,_0x1f2e35)[_0x943a('0xc')](function(_0xe6bcd9){logger[_0x943a('0xd')]('VoiceAgentReport,\x20%s,\x20%s',_0x534e67,_0x943a('0xe'));logger[_0x943a('0xf')](_0x943a('0x10'),_0x534e67,_0x943a('0xe'),JSON[_0x943a('0x11')](_0xe6bcd9));if(_0xe6bcd9['error']){if(_0xe6bcd9[_0x943a('0x12')]['code']===0x1f4){logger['error'](_0x943a('0x13'),_0x534e67,_0xe6bcd9['error'][_0x943a('0x14')]);return _0x558066(_0xe6bcd9[_0x943a('0x12')][_0x943a('0x14')]);}logger['error'](_0x943a('0x13'),_0x534e67,_0xe6bcd9[_0x943a('0x12')][_0x943a('0x14')]);return _0x5dce61(_0xe6bcd9['error'][_0x943a('0x14')]);}else{logger[_0x943a('0xd')](_0x943a('0x13'),_0x534e67,_0x943a('0xe'));_0x5dce61(_0xe6bcd9[_0x943a('0x15')][_0x943a('0x14')]);}})['catch'](function(_0x6e8f6d){logger['error'](_0x943a('0x13'),_0x534e67,_0x6e8f6d);_0x558066(_0x6e8f6d);});});}exports[_0x943a('0x16')]=function(_0xa7eec3){var _0xfffb9a=this;return new Promise(function(_0x37412d,_0x361f75){return db['VoiceAgentReport'][_0x943a('0x17')](_0xa7eec3[_0x943a('0x18')],{'raw':_0xa7eec3[_0x943a('0x19')]?_0xa7eec3[_0x943a('0x19')][_0x943a('0x1a')]===undefined?!![]:![]:!![]})[_0x943a('0xc')](function(_0x55bd25){logger['info'](_0x943a('0x16'),_0xa7eec3);logger['debug'](_0x943a('0x16'),_0xa7eec3,JSON[_0x943a('0x11')](_0x55bd25));_0x37412d(_0x55bd25);})[_0x943a('0x1b')](function(_0x341ce3){logger[_0x943a('0x12')](_0x943a('0x16'),_0x341ce3[_0x943a('0x14')],_0xa7eec3);_0x361f75(_0xfffb9a['error'](0x1f4,_0x341ce3[_0x943a('0x14')]));});});};exports[_0x943a('0x1c')]=function(_0x262958){var _0x5d4b08=this;return new Promise(function(_0x26f27a,_0x522c6c){return db[_0x943a('0x1d')][_0x943a('0x1e')](_0x262958[_0x943a('0x18')],{'raw':_0x262958['options']?_0x262958['options'][_0x943a('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x262958[_0x943a('0x19')]?_0x262958[_0x943a('0x19')]['where']||null:null,'attributes':_0x262958[_0x943a('0x19')]?_0x262958[_0x943a('0x19')]['attributes']||null:null,'limit':_0x262958[_0x943a('0x19')]?_0x262958[_0x943a('0x19')]['limit']||null:null})['then'](function(_0x351557){logger[_0x943a('0xd')]('UpdateVoiceAgentReport',_0x262958);logger[_0x943a('0xf')]('UpdateVoiceAgentReport',_0x262958,JSON[_0x943a('0x11')](_0x351557));_0x26f27a(_0x351557);})[_0x943a('0x1b')](function(_0x977bbf){logger[_0x943a('0x12')]('UpdateVoiceAgentReport',_0x977bbf[_0x943a('0x14')],_0x262958);_0x522c6c(_0x5d4b08['error'](0x1f4,_0x977bbf[_0x943a('0x14')]));});});};
\ No newline at end of file
index 0852a70..4f81e1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeec6=['isAuthenticated','index','/describe','describe','get','show','post','/:id','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceCallReport.controller'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xeec6,0x1c2));var _0x6eec=function(_0x12c66e,_0xea7b4){_0x12c66e=_0x12c66e-0x0;var _0x19481a=_0xeec6[_0x12c66e];return _0x19481a;};'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']('/',auth[_0x6eec('0xa')](),controller[_0x6eec('0xb')]);router['get'](_0x6eec('0xc'),auth[_0x6eec('0xa')](),controller[_0x6eec('0xd')]);router[_0x6eec('0xe')]('/:id',auth[_0x6eec('0xa')](),controller[_0x6eec('0xf')]);router[_0x6eec('0x10')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x6eec('0x11'),auth[_0x6eec('0xa')](),controller['update']);router['delete'](_0x6eec('0x11'),auth['isAuthenticated'](),controller[_0x6eec('0x12')]);module[_0x6eec('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(_0x6728b7,_0x3bda3c){var _0x3f704c=function(_0x34c794){while(--_0x34c794){_0x6728b7['push'](_0x6728b7['shift']());}};_0x3f704c(++_0x3bda3c);}(_0x0faf,0x132));var _0xf0fa=function(_0x4c0d2b,_0x2ff906){_0x4c0d2b=_0x4c0d2b-0x0;var _0x58c4fe=_0x0faf[_0x4c0d2b];return _0x58c4fe;};'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 be77332..bb14fdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x659e=['STRING','ENUM','internal','inbound-fax','TEXT','DATE','INTEGER','sequelize'];(function(_0x7ff118,_0xe4ddfa){var _0x2a8330=function(_0x4bd6f9){while(--_0x4bd6f9){_0x7ff118['push'](_0x7ff118['shift']());}};_0x2a8330(++_0xe4ddfa);}(_0x659e,0x117));var _0xe659=function(_0x3b7ec3,_0x257ba6){_0x3b7ec3=_0x3b7ec3-0x0;var _0x4ff928=_0x659e[_0x3b7ec3];return _0x4ff928;};'use strict';var Sequelize=require(_0xe659('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe659('0x1')]},'type':{'type':Sequelize[_0xe659('0x2')]('inbound',_0xe659('0x3'),'outbound',_0xe659('0x4'),'outbound-fax','dialer')},'tag':{'type':Sequelize[_0xe659('0x1')]},'accountcode':{'type':Sequelize[_0xe659('0x1')]},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize[_0xe659('0x1')]},'destinationcontext':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0xe659('0x1')]},'channel':{'type':Sequelize[_0xe659('0x1')]},'destinationchannel':{'type':Sequelize[_0xe659('0x1')]},'lastapplication':{'type':Sequelize[_0xe659('0x1')]},'lastdata':{'type':Sequelize[_0xe659('0x5')]},'starttime':{'type':Sequelize[_0xe659('0x6')]},'systemanswertime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xe659('0x6')]},'endtime':{'type':Sequelize[_0xe659('0x6')]},'duration':{'type':Sequelize[_0xe659('0x7')]},'billableseconds':{'type':Sequelize[_0xe659('0x7')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xe659('0x1')]},'amaflags':{'type':Sequelize[_0xe659('0x1')]},'userfield':{'type':Sequelize[_0xe659('0x1')]},'userDisposition':{'type':Sequelize[_0xe659('0x1')]},'userSecondDisposition':{'type':Sequelize[_0xe659('0x1')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xe659('0x1')]},'prefix':{'type':Sequelize[_0xe659('0x1')]},'routeid':{'type':Sequelize[_0xe659('0x7')]},'sipcallid':{'type':Sequelize[_0xe659('0x1')]}};
\ No newline at end of file
+var _0xd0e4=['ENUM','outbound','inbound-fax','outbound-fax','dialer','DATE','INTEGER','sequelize','exports','STRING'];(function(_0x39b801,_0x1fdd40){var _0x53acb1=function(_0x19607f){while(--_0x19607f){_0x39b801['push'](_0x39b801['shift']());}};_0x53acb1(++_0x1fdd40);}(_0xd0e4,0x1d3));var _0x4d0e=function(_0xa087f5,_0x34fd10){_0xa087f5=_0xa087f5-0x0;var _0x4c8806=_0xd0e4[_0xa087f5];return _0x4c8806;};'use strict';var Sequelize=require(_0x4d0e('0x0'));module[_0x4d0e('0x1')]={'uniqueid':{'type':Sequelize[_0x4d0e('0x2')]},'type':{'type':Sequelize[_0x4d0e('0x3')]('inbound','internal',_0x4d0e('0x4'),_0x4d0e('0x5'),_0x4d0e('0x6'),_0x4d0e('0x7'))},'tag':{'type':Sequelize[_0x4d0e('0x2')]},'accountcode':{'type':Sequelize['STRING']},'source':{'type':Sequelize['STRING']},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0x4d0e('0x2')]},'callerid':{'type':Sequelize[_0x4d0e('0x2')]},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize[_0x4d0e('0x2')]},'lastapplication':{'type':Sequelize[_0x4d0e('0x2')]},'lastdata':{'type':Sequelize['TEXT']},'starttime':{'type':Sequelize['DATE']},'systemanswertime':{'type':Sequelize[_0x4d0e('0x8')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x4d0e('0x8')]},'duration':{'type':Sequelize[_0x4d0e('0x9')]},'billableseconds':{'type':Sequelize[_0x4d0e('0x9')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x4d0e('0x2')]},'amaflags':{'type':Sequelize[_0x4d0e('0x2')]},'userfield':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x4d0e('0x2')]},'userThirdDisposition':{'type':Sequelize[_0x4d0e('0x2')]},'note':{'type':Sequelize[_0x4d0e('0x2')]},'prefix':{'type':Sequelize[_0x4d0e('0x2')]},'routeid':{'type':Sequelize[_0x4d0e('0x9')]},'sipcallid':{'type':Sequelize[_0x4d0e('0x2')]}};
\ No newline at end of file
index d018741..2aa41ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','reject','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','VIRTUAL','filter','merge','options','VoiceCallReport','includeAll','include','alias','User','rows','show','find','create','body','catch','params','describe','uniqueid','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce'];(function(_0x471c51,_0x246517){var _0x2fd187=function(_0x2a863c){while(--_0x2a863c){_0x471c51['push'](_0x471c51['shift']());}};_0x2fd187(++_0x246517);}(_0xb10b,0x12a));var _0xbb10=function(_0x51b169,_0x5efbc2){_0x51b169=_0x51b169-0x0;var _0x12605a=_0xb10b[_0x51b169];return _0x12605a;};'use strict';var emlformat=require(_0xbb10('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbb10('0x1'));var jsonpatch=require(_0xbb10('0x2'));var rp=require(_0xbb10('0x3'));var moment=require('moment');var BPromise=require(_0xbb10('0x4'));var Mustache=require(_0xbb10('0x5'));var util=require(_0xbb10('0x6'));var path=require(_0xbb10('0x7'));var sox=require(_0xbb10('0x8'));var csv=require(_0xbb10('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb10('0xa'));var _=require(_0xbb10('0xb'));var squel=require('squel');var crypto=require(_0xbb10('0xc'));var jsforce=require(_0xbb10('0xd'));var deskjs=require(_0xbb10('0xe'));var toCsv=require(_0xbb10('0x9'));var querystring=require(_0xbb10('0xf'));var Papa=require(_0xbb10('0x10'));var Redis=require(_0xbb10('0x11'));var authService=require(_0xbb10('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbb10('0x13'));var logger=require(_0xbb10('0x14'))(_0xbb10('0x15'));var utils=require('../../config/utils');var config=require(_0xbb10('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xbb10('0x17'))['db'];function respondWithStatusCode(_0x916a32,_0x285009){_0x285009=_0x285009||0xcc;return function(_0x193a27){if(_0x193a27){return _0x916a32[_0xbb10('0x18')](_0x285009);}return _0x916a32[_0xbb10('0x19')](_0x285009)['end']();};}function respondWithResult(_0x26e021,_0x42d7e4){_0x42d7e4=_0x42d7e4||0xc8;return function(_0x45b9d6){if(_0x45b9d6){return _0x26e021[_0xbb10('0x19')](_0x42d7e4)[_0xbb10('0x1a')](_0x45b9d6);}};}function respondWithFilteredResult(_0x2f2ebf,_0x24a57b){return function(_0x36b5e8){if(_0x36b5e8){var _0x3e26f4=typeof _0x24a57b[_0xbb10('0x1b')]==='undefined'&&typeof _0x24a57b[_0xbb10('0x1c')]===_0xbb10('0x1d');var _0x133ac2=_0x36b5e8[_0xbb10('0x1e')];var _0x378da8=_0x3e26f4?0x0:_0x24a57b[_0xbb10('0x1b')];var _0x575cca=_0x3e26f4?_0x36b5e8[_0xbb10('0x1e')]:_0x24a57b[_0xbb10('0x1b')]+_0x24a57b[_0xbb10('0x1c')];var _0x48b6e9;if(_0x575cca>=_0x133ac2){_0x575cca=_0x133ac2;_0x48b6e9=0xc8;}else{_0x48b6e9=0xce;}_0x2f2ebf[_0xbb10('0x19')](_0x48b6e9);return _0x2f2ebf[_0xbb10('0x1f')](_0xbb10('0x20'),_0x378da8+'-'+_0x575cca+'/'+_0x133ac2)[_0xbb10('0x1a')](_0x36b5e8);}return null;};}function patchUpdates(_0xdf237d){return function(_0x44e563){try{jsonpatch['apply'](_0x44e563,_0xdf237d,!![]);}catch(_0x12f888){return BPromise[_0xbb10('0x21')](_0x12f888);}return _0x44e563['save']();};}function saveUpdates(_0x4c4b0d,_0x8e2b97){return function(_0x311abe){if(_0x311abe){return _0x311abe[_0xbb10('0x22')](_0x4c4b0d)[_0xbb10('0x23')](function(_0x445761){return _0x445761;});}return null;};}function removeEntity(_0x1824b7,_0x407cb4){return function(_0x436104){if(_0x436104){return _0x436104[_0xbb10('0x24')]()[_0xbb10('0x23')](function(){_0x1824b7[_0xbb10('0x19')](0xcc)[_0xbb10('0x25')]();});}};}function handleEntityNotFound(_0x537898,_0x4fedac){return function(_0x4fb5e0){if(!_0x4fb5e0){_0x537898[_0xbb10('0x18')](0x194);}return _0x4fb5e0;};}function handleError(_0x3c5ae7,_0x2c89b9){_0x2c89b9=_0x2c89b9||0x1f4;return function(_0x4e25ff){logger[_0xbb10('0x26')](_0x4e25ff[_0xbb10('0x27')]);if(_0x4e25ff[_0xbb10('0x28')]){delete _0x4e25ff[_0xbb10('0x28')];}_0x3c5ae7[_0xbb10('0x19')](_0x2c89b9)[_0xbb10('0x29')](_0x4e25ff);};}exports[_0xbb10('0x2a')]=function(_0x4aabb9,_0x3796c7){var _0x21ac54={},_0xfc3595={},_0x2e0249={'count':0x0,'rows':[]};var _0x1d30aa=_[_0xbb10('0x2b')](db['VoiceCallReport'][_0xbb10('0x2c')],function(_0x4ee02e){return{'name':_0x4ee02e[_0xbb10('0x2d')],'type':_0x4ee02e['type'][_0xbb10('0x2e')]};});_0xfc3595[_0xbb10('0x2f')]=_[_0xbb10('0x2b')](_0x1d30aa,'name');_0xfc3595['query']=_[_0xbb10('0x30')](_0x4aabb9[_0xbb10('0x31')]);_0xfc3595['filters']=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],_0xfc3595[_0xbb10('0x31')]);_0x21ac54[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0xfc3595[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x4aabb9['query'][_0xbb10('0x34')]));_0x21ac54[_0xbb10('0x33')]=_0x21ac54[_0xbb10('0x33')][_0xbb10('0x35')]?_0x21ac54[_0xbb10('0x33')]:_0xfc3595[_0xbb10('0x2f')];if(!_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x36')](_0xbb10('0x37'))){_0x21ac54['limit']=qs[_0xbb10('0x1c')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x1c')]);_0x21ac54[_0xbb10('0x1b')]=qs['offset'](_0x4aabb9[_0xbb10('0x31')]['offset']);}_0x21ac54['order']=qs[_0xbb10('0x38')](_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x38')]);_0x21ac54[_0xbb10('0x39')]=qs[_0xbb10('0x3a')](_[_0xbb10('0x3b')](_0x4aabb9['query'],_0xfc3595[_0xbb10('0x3a')]),_0x1d30aa);if(_0x4aabb9[_0xbb10('0x31')]['filter']){_0x21ac54['where']=_['merge'](_0x21ac54[_0xbb10('0x39')],{'$or':_[_0xbb10('0x2b')](_0x1d30aa,function(_0x2b658a){if(_0x2b658a['type']!==_0xbb10('0x3c')){var _0x3e8538={};_0x3e8538[_0x2b658a[_0xbb10('0x28')]]={'$like':'%'+_0x4aabb9['query'][_0xbb10('0x3d')]+'%'};return _0x3e8538;}})});}_0x21ac54=_[_0xbb10('0x3e')]({},_0x21ac54,_0x4aabb9[_0xbb10('0x3f')]);var _0x446f49={'where':_0x21ac54['where']};return db[_0xbb10('0x40')][_0xbb10('0x1e')](_0x446f49)['then'](function(_0xe2040f){_0x2e0249[_0xbb10('0x1e')]=_0xe2040f;if(_0x4aabb9[_0xbb10('0x31')][_0xbb10('0x41')]){_0x21ac54[_0xbb10('0x42')]=[{'attributes':['id',_0xbb10('0x28'),'fullname',_0xbb10('0x43')],'model':db[_0xbb10('0x44')],'as':_0xbb10('0x44')}];}return db[_0xbb10('0x40')]['findAll'](_0x21ac54);})[_0xbb10('0x23')](function(_0x331751){_0x2e0249[_0xbb10('0x45')]=_0x331751;return _0x2e0249;})[_0xbb10('0x23')](respondWithFilteredResult(_0x3796c7,_0x21ac54))['catch'](handleError(_0x3796c7,null));};exports[_0xbb10('0x46')]=function(_0x202c60,_0x54ac18){var _0x5d9a4f={'raw':!![],'where':{'id':_0x202c60['params']['id']}},_0x38d78f={};_0x38d78f[_0xbb10('0x2f')]=_[_0xbb10('0x30')](db['VoiceCallReport'][_0xbb10('0x2c')]);_0x38d78f[_0xbb10('0x31')]=_[_0xbb10('0x30')](_0x202c60['query']);_0x38d78f[_0xbb10('0x3a')]=_[_0xbb10('0x32')](_0x38d78f[_0xbb10('0x2f')],_0x38d78f[_0xbb10('0x31')]);_0x5d9a4f[_0xbb10('0x33')]=_[_0xbb10('0x32')](_0x38d78f[_0xbb10('0x2f')],qs[_0xbb10('0x34')](_0x202c60[_0xbb10('0x31')][_0xbb10('0x34')]));_0x5d9a4f[_0xbb10('0x33')]=_0x5d9a4f[_0xbb10('0x33')]['length']?_0x5d9a4f[_0xbb10('0x33')]:_0x38d78f[_0xbb10('0x2f')];if(_0x202c60['query'][_0xbb10('0x41')]){_0x5d9a4f[_0xbb10('0x42')]=[{'all':!![]}];}_0x5d9a4f=_[_0xbb10('0x3e')]({},_0x5d9a4f,_0x202c60[_0xbb10('0x3f')]);return db[_0xbb10('0x40')][_0xbb10('0x47')](_0x5d9a4f)[_0xbb10('0x23')](handleEntityNotFound(_0x54ac18,null))['then'](respondWithResult(_0x54ac18,null))['catch'](handleError(_0x54ac18,null));};exports[_0xbb10('0x48')]=function(_0x76a208,_0x2b12bd){return db['VoiceCallReport']['create'](_0x76a208[_0xbb10('0x49')],{})[_0xbb10('0x23')](respondWithResult(_0x2b12bd,0xc9))[_0xbb10('0x4a')](handleError(_0x2b12bd,null));};exports[_0xbb10('0x24')]=function(_0x10159b,_0x22b315){return db[_0xbb10('0x40')][_0xbb10('0x47')]({'where':{'id':_0x10159b[_0xbb10('0x4b')]['id']}})[_0xbb10('0x23')](handleEntityNotFound(_0x22b315,null))['then'](removeEntity(_0x22b315,null))['catch'](handleError(_0x22b315,null));};exports[_0xbb10('0x4c')]=function(_0x467dba,_0x36ab7d){return db[_0xbb10('0x40')][_0xbb10('0x4c')]()[_0xbb10('0x23')](respondWithResult(_0x36ab7d,null))[_0xbb10('0x4a')](handleError(_0x36ab7d,null));};exports[_0xbb10('0x22')]=function(_0x1c0d8f,_0x1214f7){if(_0x1c0d8f[_0xbb10('0x49')][_0xbb10('0x4d')]){delete _0x1c0d8f[_0xbb10('0x49')][_0xbb10('0x4d')];}return db[_0xbb10('0x40')]['find']({'where':{'uniqueid':_0x1c0d8f[_0xbb10('0x4b')]['id'],'UserId':{'$or':[null,_0x1c0d8f['user']['id']]}}})[_0xbb10('0x23')](handleEntityNotFound(_0x1214f7,null))[_0xbb10('0x23')](saveUpdates(_0x1c0d8f[_0xbb10('0x49')],null))[_0xbb10('0x23')](respondWithResult(_0x1214f7,null))[_0xbb10('0x4a')](handleError(_0x1214f7,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(_0x4e1a49,_0x4da738){var _0x136aae=function(_0x3ffd93){while(--_0x3ffd93){_0x4e1a49['push'](_0x4e1a49['shift']());}};_0x136aae(++_0x4da738);}(_0xadb5,0xad));var _0x5adb=function(_0x5f2c67,_0xfaf2e3){_0x5f2c67=_0x5f2c67-0x0;var _0x54106c=_0xadb5[_0x5f2c67];return _0x54106c;};'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 21f0118..00da47a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc17=['exports','define','VoiceCallReport','uniqueid','lodash','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./voiceCallReport.attributes'];(function(_0x5eed57,_0x224dc5){var _0x1ca877=function(_0xcdca76){while(--_0xcdca76){_0x5eed57['push'](_0x5eed57['shift']());}};_0x1ca877(++_0x224dc5);}(_0xfc17,0x1b4));var _0x7fc1=function(_0x532050,_0x4de296){_0x532050=_0x532050-0x0;var _0x146589=_0xfc17[_0x532050];return _0x146589;};'use strict';var _=require(_0x7fc1('0x0'));var util=require('util');var logger=require(_0x7fc1('0x1'))(_0x7fc1('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x7fc1('0x3'));var fs=require('fs');var path=require(_0x7fc1('0x4'));var rimraf=require(_0x7fc1('0x5'));var config=require(_0x7fc1('0x6'));var attributes=require(_0x7fc1('0x7'));module[_0x7fc1('0x8')]=function(_0x33c6d9,_0x17d8a3){return _0x33c6d9[_0x7fc1('0x9')](_0x7fc1('0xa'),attributes,{'tableName':'report_call','paranoid':![],'indexes':[{'fields':[_0x7fc1('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x22b0=['moment','bluebird','request-promise','path','rimraf','./voiceCallReport.attributes','exports','define','VoiceCallReport','report_call','uniqueid','lodash','../../config/logger','api'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x22b0,0x177));var _0x022b=function(_0x148551,_0x21f6f6){_0x148551=_0x148551-0x0;var _0xde403d=_0x22b0[_0x148551];return _0xde403d;};'use strict';var _=require(_0x022b('0x0'));var util=require('util');var logger=require(_0x022b('0x1'))(_0x022b('0x2'));var moment=require(_0x022b('0x3'));var BPromise=require(_0x022b('0x4'));var rp=require(_0x022b('0x5'));var fs=require('fs');var path=require(_0x022b('0x6'));var rimraf=require(_0x022b('0x7'));var config=require('../../config/environment');var attributes=require(_0x022b('0x8'));module[_0x022b('0x9')]=function(_0x2cb696,_0x34bcf6){return _0x2cb696[_0x022b('0xa')](_0x022b('0xb'),attributes,{'tableName':_0x022b('0xc'),'paranoid':![],'indexes':[{'fields':[_0x022b('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 144308f..80d7042 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x025a=['GetVoiceCallReport','VoiceCallReport','findAll','options','raw','where','include','map','model','attributes','CreateVoiceCallReport','body','UpdateVoiceCallReport','update','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x025a,0x13e));var _0xa025=function(_0x3f1a8a,_0x5e6b68){_0x3f1a8a=_0x3f1a8a-0x0;var _0x3e34da=_0x025a[_0x3f1a8a];return _0x3e34da;};'use strict';var _=require(_0xa025('0x0'));var util=require(_0xa025('0x1'));var moment=require('moment');var BPromise=require(_0xa025('0x2'));var rs=require(_0xa025('0x3'));var fs=require('fs');var Redis=require(_0xa025('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa025('0x5'));var logger=require(_0xa025('0x6'))(_0xa025('0x7'));var config=require(_0xa025('0x8'));var jayson=require(_0xa025('0x9'));var client=jayson[_0xa025('0xa')][_0xa025('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x596c62,_0x359791,_0xa9771f){return new BPromise(function(_0x275984,_0x1d6330){return client[_0xa025('0xc')](_0x596c62,_0xa9771f)[_0xa025('0xd')](function(_0x2d435a){logger[_0xa025('0xe')](_0xa025('0xf'),_0x359791,_0xa025('0x10'));logger[_0xa025('0x11')](_0xa025('0x12'),_0x359791,'request\x20sent',JSON[_0xa025('0x13')](_0x2d435a));if(_0x2d435a['error']){if(_0x2d435a[_0xa025('0x14')][_0xa025('0x15')]===0x1f4){logger[_0xa025('0x14')](_0xa025('0xf'),_0x359791,_0x2d435a[_0xa025('0x14')]['message']);return _0x1d6330(_0x2d435a['error'][_0xa025('0x16')]);}logger[_0xa025('0x14')](_0xa025('0xf'),_0x359791,_0x2d435a[_0xa025('0x14')][_0xa025('0x16')]);return _0x275984(_0x2d435a['error'][_0xa025('0x16')]);}else{logger[_0xa025('0xe')](_0xa025('0xf'),_0x359791,_0xa025('0x10'));_0x275984(_0x2d435a['result'][_0xa025('0x16')]);}})[_0xa025('0x17')](function(_0x416349){logger[_0xa025('0x14')](_0xa025('0xf'),_0x359791,_0x416349);_0x1d6330(_0x416349);});});}exports[_0xa025('0x18')]=function(_0x13efa4){var _0x42669f=this;return new Promise(function(_0x9335eb,_0x399e31){return db[_0xa025('0x19')][_0xa025('0x1a')]({'raw':_0x13efa4[_0xa025('0x1b')]?_0x13efa4[_0xa025('0x1b')][_0xa025('0x1c')]===undefined?!![]:![]:!![],'where':_0x13efa4[_0xa025('0x1b')]?_0x13efa4[_0xa025('0x1b')][_0xa025('0x1d')]||null:null,'attributes':_0x13efa4[_0xa025('0x1b')]?_0x13efa4[_0xa025('0x1b')]['attributes']||null:null,'limit':_0x13efa4[_0xa025('0x1b')]?_0x13efa4[_0xa025('0x1b')]['limit']||null:null,'include':_0x13efa4['options']?_0x13efa4[_0xa025('0x1b')][_0xa025('0x1e')]?_[_0xa025('0x1f')](_0x13efa4['options'][_0xa025('0x1e')],function(_0x8c0a78){return{'model':db[_0x8c0a78[_0xa025('0x20')]],'as':_0x8c0a78['as'],'attributes':_0x8c0a78[_0xa025('0x21')],'include':_0x8c0a78[_0xa025('0x1e')]?_['map'](_0x8c0a78[_0xa025('0x1e')],function(_0x5d658c){return{'model':db[_0x5d658c[_0xa025('0x20')]],'as':_0x5d658c['as'],'attributes':_0x5d658c[_0xa025('0x21')],'include':_0x5d658c['include']?_[_0xa025('0x1f')](_0x5d658c[_0xa025('0x1e')],function(_0x5b028f){return{'model':db[_0x5b028f['model']],'as':_0x5b028f['as'],'attributes':_0x5b028f[_0xa025('0x21')]};}):[]};}):[]};}):[]:[]})[_0xa025('0xd')](function(_0x44d5f1){logger[_0xa025('0xe')]('GetVoiceCallReport',_0x13efa4);logger['debug'](_0xa025('0x18'),_0x13efa4,JSON[_0xa025('0x13')](_0x44d5f1));_0x9335eb(_0x44d5f1);})[_0xa025('0x17')](function(_0x1a6df0){logger[_0xa025('0x14')](_0xa025('0x18'),_0x1a6df0[_0xa025('0x16')],_0x13efa4);_0x399e31(_0x42669f[_0xa025('0x14')](0x1f4,_0x1a6df0['message']));});});};exports[_0xa025('0x22')]=function(_0x20090a){var _0x2076d5=this;return new Promise(function(_0x366d77,_0x597bfa){return db[_0xa025('0x19')]['create'](_0x20090a[_0xa025('0x23')],{'raw':_0x20090a['options']?_0x20090a[_0xa025('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0xa025('0xd')](function(_0x5d3099){logger['info'](_0xa025('0x22'),_0x20090a);logger[_0xa025('0x11')](_0xa025('0x22'),_0x20090a,JSON[_0xa025('0x13')](_0x5d3099));_0x366d77(_0x5d3099);})[_0xa025('0x17')](function(_0x1f1c2a){logger[_0xa025('0x14')](_0xa025('0x22'),_0x1f1c2a[_0xa025('0x16')],_0x20090a);_0x597bfa(_0x2076d5[_0xa025('0x14')](0x1f4,_0x1f1c2a[_0xa025('0x16')]));});});};exports[_0xa025('0x24')]=function(_0x556a5f){var _0x406299=this;return new Promise(function(_0x3b2f6f,_0x57e1ba){return db[_0xa025('0x19')][_0xa025('0x25')](_0x556a5f[_0xa025('0x23')],{'raw':_0x556a5f[_0xa025('0x1b')]?_0x556a5f[_0xa025('0x1b')][_0xa025('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x556a5f[_0xa025('0x1b')]?_0x556a5f[_0xa025('0x1b')][_0xa025('0x1d')]||null:null,'attributes':_0x556a5f['options']?_0x556a5f['options']['attributes']||null:null,'limit':_0x556a5f['options']?_0x556a5f[_0xa025('0x1b')]['limit']||null:null})[_0xa025('0xd')](function(_0x2f175a){logger['info'](_0xa025('0x24'),_0x556a5f);logger[_0xa025('0x11')]('UpdateVoiceCallReport',_0x556a5f,JSON[_0xa025('0x13')](_0x2f175a));_0x3b2f6f(_0x2f175a);})[_0xa025('0x17')](function(_0x5982ff){logger[_0xa025('0x14')](_0xa025('0x24'),_0x5982ff[_0xa025('0x16')],_0x556a5f);_0x57e1ba(_0x406299[_0xa025('0x14')](0x1f4,_0x5982ff[_0xa025('0x16')]));});});};
\ No newline at end of file
+var _0x76c6=['jayson/promise','client','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetVoiceCallReport','VoiceCallReport','options','raw','where','attributes','limit','map','include','model','then','CreateVoiceCallReport','create','body','update','UpdateVoiceCallReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3d5df9,_0x5b3623){var _0x50ba39=function(_0x3c0de0){while(--_0x3c0de0){_0x3d5df9['push'](_0x3d5df9['shift']());}};_0x50ba39(++_0x5b3623);}(_0x76c6,0x6d));var _0x676c=function(_0xe2ebaa,_0x138483){_0xe2ebaa=_0xe2ebaa-0x0;var _0x563838=_0x76c6[_0xe2ebaa];return _0x563838;};'use strict';var _=require(_0x676c('0x0'));var util=require(_0x676c('0x1'));var moment=require(_0x676c('0x2'));var BPromise=require(_0x676c('0x3'));var rs=require(_0x676c('0x4'));var fs=require('fs');var Redis=require(_0x676c('0x5'));var db=require(_0x676c('0x6'))['db'];var utils=require(_0x676c('0x7'));var logger=require(_0x676c('0x8'))(_0x676c('0x9'));var config=require(_0x676c('0xa'));var jayson=require(_0x676c('0xb'));var client=jayson[_0x676c('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e2aee,_0x36218e,_0x4ebb3e){return new BPromise(function(_0xd69fc,_0x4f581a){return client['request'](_0x4e2aee,_0x4ebb3e)['then'](function(_0x2e7cf1){logger['info'](_0x676c('0xd'),_0x36218e,_0x676c('0xe'));logger[_0x676c('0xf')](_0x676c('0x10'),_0x36218e,_0x676c('0xe'),JSON[_0x676c('0x11')](_0x2e7cf1));if(_0x2e7cf1['error']){if(_0x2e7cf1[_0x676c('0x12')][_0x676c('0x13')]===0x1f4){logger[_0x676c('0x12')](_0x676c('0xd'),_0x36218e,_0x2e7cf1['error'][_0x676c('0x14')]);return _0x4f581a(_0x2e7cf1[_0x676c('0x12')][_0x676c('0x14')]);}logger[_0x676c('0x12')]('VoiceCallReport,\x20%s,\x20%s',_0x36218e,_0x2e7cf1[_0x676c('0x12')][_0x676c('0x14')]);return _0xd69fc(_0x2e7cf1[_0x676c('0x12')]['message']);}else{logger[_0x676c('0x15')](_0x676c('0xd'),_0x36218e,'request\x20sent');_0xd69fc(_0x2e7cf1[_0x676c('0x16')]['message']);}})[_0x676c('0x17')](function(_0x1fa9cc){logger[_0x676c('0x12')](_0x676c('0xd'),_0x36218e,_0x1fa9cc);_0x4f581a(_0x1fa9cc);});});}exports[_0x676c('0x18')]=function(_0x2c2604){var _0x21333c=this;return new Promise(function(_0xf5d582,_0x1f07a6){return db[_0x676c('0x19')]['findAll']({'raw':_0x2c2604[_0x676c('0x1a')]?_0x2c2604[_0x676c('0x1a')][_0x676c('0x1b')]===undefined?!![]:![]:!![],'where':_0x2c2604[_0x676c('0x1a')]?_0x2c2604['options'][_0x676c('0x1c')]||null:null,'attributes':_0x2c2604[_0x676c('0x1a')]?_0x2c2604[_0x676c('0x1a')][_0x676c('0x1d')]||null:null,'limit':_0x2c2604[_0x676c('0x1a')]?_0x2c2604[_0x676c('0x1a')][_0x676c('0x1e')]||null:null,'include':_0x2c2604['options']?_0x2c2604[_0x676c('0x1a')]['include']?_[_0x676c('0x1f')](_0x2c2604[_0x676c('0x1a')][_0x676c('0x20')],function(_0x4b7244){return{'model':db[_0x4b7244[_0x676c('0x21')]],'as':_0x4b7244['as'],'attributes':_0x4b7244[_0x676c('0x1d')],'include':_0x4b7244[_0x676c('0x20')]?_['map'](_0x4b7244[_0x676c('0x20')],function(_0x26b8ca){return{'model':db[_0x26b8ca['model']],'as':_0x26b8ca['as'],'attributes':_0x26b8ca[_0x676c('0x1d')],'include':_0x26b8ca[_0x676c('0x20')]?_['map'](_0x26b8ca[_0x676c('0x20')],function(_0x164403){return{'model':db[_0x164403[_0x676c('0x21')]],'as':_0x164403['as'],'attributes':_0x164403[_0x676c('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x676c('0x22')](function(_0x5f2afe){logger[_0x676c('0x15')]('GetVoiceCallReport',_0x2c2604);logger[_0x676c('0xf')](_0x676c('0x18'),_0x2c2604,JSON[_0x676c('0x11')](_0x5f2afe));_0xf5d582(_0x5f2afe);})['catch'](function(_0x4e385d){logger[_0x676c('0x12')](_0x676c('0x18'),_0x4e385d[_0x676c('0x14')],_0x2c2604);_0x1f07a6(_0x21333c[_0x676c('0x12')](0x1f4,_0x4e385d['message']));});});};exports[_0x676c('0x23')]=function(_0x1edf87){var _0x2561c3=this;return new Promise(function(_0x1ac5ea,_0x26bdda){return db[_0x676c('0x19')][_0x676c('0x24')](_0x1edf87[_0x676c('0x25')],{'raw':_0x1edf87[_0x676c('0x1a')]?_0x1edf87[_0x676c('0x1a')][_0x676c('0x1b')]===undefined?!![]:![]:!![]})['then'](function(_0x4b967d){logger[_0x676c('0x15')]('CreateVoiceCallReport',_0x1edf87);logger[_0x676c('0xf')](_0x676c('0x23'),_0x1edf87,JSON[_0x676c('0x11')](_0x4b967d));_0x1ac5ea(_0x4b967d);})['catch'](function(_0x56825d){logger['error'](_0x676c('0x23'),_0x56825d['message'],_0x1edf87);_0x26bdda(_0x2561c3[_0x676c('0x12')](0x1f4,_0x56825d[_0x676c('0x14')]));});});};exports['UpdateVoiceCallReport']=function(_0x902b7c){var _0x549817=this;return new Promise(function(_0x59474a,_0x3d8db2){return db[_0x676c('0x19')][_0x676c('0x26')](_0x902b7c[_0x676c('0x25')],{'raw':_0x902b7c[_0x676c('0x1a')]?_0x902b7c[_0x676c('0x1a')][_0x676c('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x902b7c[_0x676c('0x1a')]?_0x902b7c[_0x676c('0x1a')]['where']||null:null,'attributes':_0x902b7c['options']?_0x902b7c[_0x676c('0x1a')][_0x676c('0x1d')]||null:null,'limit':_0x902b7c['options']?_0x902b7c[_0x676c('0x1a')]['limit']||null:null})[_0x676c('0x22')](function(_0x4c9e64){logger[_0x676c('0x15')](_0x676c('0x27'),_0x902b7c);logger[_0x676c('0xf')](_0x676c('0x27'),_0x902b7c,JSON[_0x676c('0x11')](_0x4c9e64));_0x59474a(_0x4c9e64);})[_0x676c('0x17')](function(_0x517ab2){logger[_0x676c('0x12')](_0x676c('0x27'),_0x517ab2[_0x676c('0x14')],_0x902b7c);_0x3d8db2(_0x549817[_0x676c('0x12')](0x1f4,_0x517ab2['message']));});});};
\ No newline at end of file
index d0663f0..276776d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6b3=['destroy','multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','index','show','post','create','put','update','delete'];(function(_0x5b9829,_0x197062){var _0x2e9e4b=function(_0x43cad5){while(--_0x43cad5){_0x5b9829['push'](_0x5b9829['shift']());}};_0x2e9e4b(++_0x197062);}(_0xf6b3,0xfd));var _0x3f6b=function(_0x4f88fd,_0x4a54d9){_0x4f88fd=_0x4f88fd-0x0;var _0x2b02ae=_0xf6b3[_0x4f88fd];return _0x2b02ae;};'use strict';var multer=require(_0x3f6b('0x0'));var util=require(_0x3f6b('0x1'));var path=require(_0x3f6b('0x2'));var timeout=require(_0x3f6b('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x3f6b('0x4'));var interaction=require(_0x3f6b('0x5'));var config=require(_0x3f6b('0x6'));var controller=require(_0x3f6b('0x7'));router[_0x3f6b('0x8')]('/',auth[_0x3f6b('0x9')](),controller[_0x3f6b('0xa')]);router[_0x3f6b('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x3f6b('0xb')]);router[_0x3f6b('0xc')]('/',auth[_0x3f6b('0x9')](),controller[_0x3f6b('0xd')]);router[_0x3f6b('0xe')]('/:id',auth[_0x3f6b('0x9')](),controller[_0x3f6b('0xf')]);router[_0x3f6b('0x10')]('/:id',auth[_0x3f6b('0x9')](),controller[_0x3f6b('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xe863=['isAuthenticated','index','show','post','put','/:id','update','delete','destroy','exports','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','get'];(function(_0xeb278b,_0x11dc98){var _0x20084d=function(_0x29af89){while(--_0x29af89){_0xeb278b['push'](_0xeb278b['shift']());}};_0x20084d(++_0x11dc98);}(_0xe863,0x160));var _0x3e86=function(_0x4c85e4,_0x24d438){_0x4c85e4=_0x4c85e4-0x0;var _0x424be6=_0xe863[_0x4c85e4];return _0x424be6;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x3e86('0x0'));var express=require(_0x3e86('0x1'));var router=express[_0x3e86('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x3e86('0x3'));var interaction=require(_0x3e86('0x4'));var config=require(_0x3e86('0x5'));var controller=require(_0x3e86('0x6'));router[_0x3e86('0x7')]('/',auth[_0x3e86('0x8')](),controller[_0x3e86('0x9')]);router[_0x3e86('0x7')]('/:id',auth[_0x3e86('0x8')](),controller[_0x3e86('0xa')]);router[_0x3e86('0xb')]('/',auth[_0x3e86('0x8')](),controller['create']);router[_0x3e86('0xc')](_0x3e86('0xd'),auth[_0x3e86('0x8')](),controller[_0x3e86('0xe')]);router[_0x3e86('0xf')](_0x3e86('0xd'),auth['isAuthenticated'](),controller[_0x3e86('0x10')]);module[_0x3e86('0x11')]=router;
\ No newline at end of file
index d6a7935..66ba929 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8c7=['exports','STRING','name','options','getDataValue','split','BOOLEAN','sequelize'];(function(_0x2dd408,_0x1e3402){var _0x4aa4a9=function(_0xbc01eb){while(--_0xbc01eb){_0x2dd408['push'](_0x2dd408['shift']());}};_0x4aa4a9(++_0x1e3402);}(_0xb8c7,0xcf));var _0x7b8c=function(_0x1eb75b,_0x367914){_0x1eb75b=_0x1eb75b-0x0;var _0x103c07=_0xb8c7[_0x1eb75b];return _0x103c07;};'use strict';var Sequelize=require(_0x7b8c('0x0'));module[_0x7b8c('0x1')]={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x7b8c('0x2')],'unique':_0x7b8c('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x7b8c('0x2')],'set':function(_0x21f8f6){this['setDataValue'](_0x7b8c('0x4'),_0x21f8f6?_0x21f8f6['join'](''):[]);},'get':function(){return this['getDataValue'](_0x7b8c('0x4'))?this[_0x7b8c('0x5')](_0x7b8c('0x4'))[_0x7b8c('0x6')](''):[];}},'auth':{'type':Sequelize[_0x7b8c('0x7')],'defaultValue':![]},'password':{'type':Sequelize[_0x7b8c('0x2')]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xa0a1=['BOOLEAN','sequelize','exports','STRING','setDataValue','options','join','getDataValue','split'];(function(_0x58280a,_0x2b58d3){var _0x43763c=function(_0x2c54c2){while(--_0x2c54c2){_0x58280a['push'](_0x58280a['shift']());}};_0x43763c(++_0x2b58d3);}(_0xa0a1,0x121));var _0x1a0a=function(_0x3f90e1,_0x275aa6){_0x3f90e1=_0x3f90e1-0x0;var _0x3c2c50=_0xa0a1[_0x3f90e1];return _0x3c2c50;};'use strict';var Sequelize=require(_0x1a0a('0x0'));module[_0x1a0a('0x1')]={'name':{'type':Sequelize[_0x1a0a('0x2')]},'prefix':{'type':Sequelize[_0x1a0a('0x2')],'unique':'name','allowNull':![]},'options':{'type':Sequelize[_0x1a0a('0x2')],'set':function(_0x349cdd){this[_0x1a0a('0x3')](_0x1a0a('0x4'),_0x349cdd?_0x349cdd[_0x1a0a('0x5')](''):[]);},'get':function(){return this['getDataValue'](_0x1a0a('0x4'))?this[_0x1a0a('0x6')]('options')[_0x1a0a('0x7')](''):[];}},'auth':{'type':Sequelize[_0x1a0a('0x8')],'defaultValue':![]},'password':{'type':Sequelize[_0x1a0a('0x2')]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x1a0a('0x2')]}};
\ No newline at end of file
index 3c3424e..7f1fc0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4584=['reject','update','then','get','UserProfileResource','destroy','sendStatus','stack','name','send','index','map','VoiceChanSpy','rawAttributes','type','key','model','query','keys','attributes','intersection','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','ChanSpies','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','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/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','limit','count','set','Content-Range','apply'];(function(_0x25d051,_0x3d9a8f){var _0x231dcd=function(_0x2fff94){while(--_0x2fff94){_0x25d051['push'](_0x25d051['shift']());}};_0x231dcd(++_0x3d9a8f);}(_0x4584,0x1cf));var _0x4458=function(_0x31038b,_0x3ac1c9){_0x31038b=_0x31038b-0x0;var _0x1c9d3c=_0x4584[_0x31038b];return _0x1c9d3c;};'use strict';var emlformat=require(_0x4458('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4458('0x1'));var jsonpatch=require(_0x4458('0x2'));var rp=require(_0x4458('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x4458('0x4'));var util=require(_0x4458('0x5'));var path=require(_0x4458('0x6'));var sox=require(_0x4458('0x7'));var csv=require(_0x4458('0x8'));var ejs=require(_0x4458('0x9'));var fs=require('fs');var fs_extra=require(_0x4458('0xa'));var _=require(_0x4458('0xb'));var squel=require(_0x4458('0xc'));var crypto=require('crypto');var jsforce=require(_0x4458('0xd'));var deskjs=require(_0x4458('0xe'));var toCsv=require(_0x4458('0x8'));var querystring=require(_0x4458('0xf'));var Papa=require(_0x4458('0x10'));var Redis=require(_0x4458('0x11'));var authService=require(_0x4458('0x12'));var qs=require(_0x4458('0x13'));var as=require(_0x4458('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4458('0x15'))(_0x4458('0x16'));var utils=require(_0x4458('0x17'));var config=require(_0x4458('0x18'));var licenseUtil=require(_0x4458('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x302552,_0x527809){_0x527809=_0x527809||0xcc;return function(_0x1f13ab){if(_0x1f13ab){return _0x302552['sendStatus'](_0x527809);}return _0x302552[_0x4458('0x1a')](_0x527809)[_0x4458('0x1b')]();};}function respondWithResult(_0x4abaf9,_0x5e2f05){_0x5e2f05=_0x5e2f05||0xc8;return function(_0x42771e){if(_0x42771e){return _0x4abaf9[_0x4458('0x1a')](_0x5e2f05)[_0x4458('0x1c')](_0x42771e);}};}function respondWithFilteredResult(_0x2619ed,_0x30d440){return function(_0x21ff11){if(_0x21ff11){var _0x225679=typeof _0x30d440[_0x4458('0x1d')]==='undefined'&&typeof _0x30d440[_0x4458('0x1e')]==='undefined';var _0x3bb7f4=_0x21ff11[_0x4458('0x1f')];var _0x130d39=_0x225679?0x0:_0x30d440['offset'];var _0x319247=_0x225679?_0x21ff11[_0x4458('0x1f')]:_0x30d440[_0x4458('0x1d')]+_0x30d440[_0x4458('0x1e')];var _0x463809;if(_0x319247>=_0x3bb7f4){_0x319247=_0x3bb7f4;_0x463809=0xc8;}else{_0x463809=0xce;}_0x2619ed[_0x4458('0x1a')](_0x463809);return _0x2619ed[_0x4458('0x20')](_0x4458('0x21'),_0x130d39+'-'+_0x319247+'/'+_0x3bb7f4)[_0x4458('0x1c')](_0x21ff11);}return null;};}function patchUpdates(_0x2dfcf1){return function(_0x531ab6){try{jsonpatch[_0x4458('0x22')](_0x531ab6,_0x2dfcf1,!![]);}catch(_0x24ecd1){return BPromise[_0x4458('0x23')](_0x24ecd1);}return _0x531ab6['save']();};}function saveUpdates(_0xe09a2b,_0x1688f2){return function(_0x58aeca){if(_0x58aeca){return _0x58aeca[_0x4458('0x24')](_0xe09a2b)[_0x4458('0x25')](function(_0x5d3df2){return _0x5d3df2;});}return null;};}function removeEntity(_0xcf668c,_0x17e482){return function(_0x3e7945){if(_0x3e7945){return _0x3e7945['destroy']()[_0x4458('0x25')](function(){var _0x597e89=_0x3e7945[_0x4458('0x26')]({'plain':!![]});var _0x504a86='ChanSpies';return db[_0x4458('0x27')][_0x4458('0x28')]({'where':{'type':_0x504a86,'resourceId':_0x597e89['id']}})[_0x4458('0x25')](function(){return _0x3e7945;});})[_0x4458('0x25')](function(){_0xcf668c[_0x4458('0x1a')](0xcc)[_0x4458('0x1b')]();});}};}function handleEntityNotFound(_0xa1f81e,_0x63bef){return function(_0x452ec4){if(!_0x452ec4){_0xa1f81e[_0x4458('0x29')](0x194);}return _0x452ec4;};}function handleError(_0x14df7b,_0x47f369){_0x47f369=_0x47f369||0x1f4;return function(_0x179be7){logger['error'](_0x179be7[_0x4458('0x2a')]);if(_0x179be7['name']){delete _0x179be7[_0x4458('0x2b')];}_0x14df7b[_0x4458('0x1a')](_0x47f369)[_0x4458('0x2c')](_0x179be7);};}exports[_0x4458('0x2d')]=function(_0x652afc,_0x235832){var _0x1494d2={},_0x164b01={},_0xe21853={'count':0x0,'rows':[]};var _0x3ea32d=_[_0x4458('0x2e')](db[_0x4458('0x2f')][_0x4458('0x30')],function(_0x328a9f){return{'name':_0x328a9f['fieldName'],'type':_0x328a9f[_0x4458('0x31')][_0x4458('0x32')]};});_0x164b01[_0x4458('0x33')]=_[_0x4458('0x2e')](_0x3ea32d,_0x4458('0x2b'));_0x164b01[_0x4458('0x34')]=_[_0x4458('0x35')](_0x652afc[_0x4458('0x34')]);_0x164b01['filters']=_['intersection'](_0x164b01['model'],_0x164b01[_0x4458('0x34')]);_0x1494d2[_0x4458('0x36')]=_[_0x4458('0x37')](_0x164b01[_0x4458('0x33')],qs[_0x4458('0x38')](_0x652afc[_0x4458('0x34')][_0x4458('0x38')]));_0x1494d2[_0x4458('0x36')]=_0x1494d2[_0x4458('0x36')][_0x4458('0x39')]?_0x1494d2[_0x4458('0x36')]:_0x164b01[_0x4458('0x33')];if(!_0x652afc[_0x4458('0x34')]['hasOwnProperty'](_0x4458('0x3a'))){_0x1494d2['limit']=qs[_0x4458('0x1e')](_0x652afc[_0x4458('0x34')][_0x4458('0x1e')]);_0x1494d2[_0x4458('0x1d')]=qs['offset'](_0x652afc['query'][_0x4458('0x1d')]);}_0x1494d2[_0x4458('0x3b')]=qs[_0x4458('0x3c')](_0x652afc['query'][_0x4458('0x3c')]);_0x1494d2[_0x4458('0x3d')]=qs[_0x4458('0x3e')](_[_0x4458('0x3f')](_0x652afc[_0x4458('0x34')],_0x164b01[_0x4458('0x3e')]),_0x3ea32d);if(_0x652afc[_0x4458('0x34')][_0x4458('0x40')]){_0x1494d2[_0x4458('0x3d')]=_[_0x4458('0x41')](_0x1494d2['where'],{'$or':_['map'](_0x3ea32d,function(_0x778878){if(_0x778878[_0x4458('0x31')]!==_0x4458('0x42')){var _0x3feb47={};_0x3feb47[_0x778878[_0x4458('0x2b')]]={'$like':'%'+_0x652afc[_0x4458('0x34')][_0x4458('0x40')]+'%'};return _0x3feb47;}})});}_0x1494d2=_[_0x4458('0x41')]({},_0x1494d2,_0x652afc[_0x4458('0x43')]);var _0x524b6c={'where':_0x1494d2[_0x4458('0x3d')]};return db[_0x4458('0x2f')][_0x4458('0x1f')](_0x524b6c)[_0x4458('0x25')](function(_0x2e98ce){_0xe21853[_0x4458('0x1f')]=_0x2e98ce;if(_0x652afc[_0x4458('0x34')][_0x4458('0x44')]){_0x1494d2[_0x4458('0x45')]=[{'all':!![]}];}return db[_0x4458('0x2f')]['findAll'](_0x1494d2);})[_0x4458('0x25')](function(_0x474735){_0xe21853[_0x4458('0x46')]=_0x474735;return _0xe21853;})[_0x4458('0x25')](respondWithFilteredResult(_0x235832,_0x1494d2))[_0x4458('0x47')](handleError(_0x235832,null));};exports['show']=function(_0x4a7ee7,_0x5b4a72){var _0x477dde={'raw':![],'where':{'id':_0x4a7ee7[_0x4458('0x48')]['id']}},_0x339175={};_0x339175['model']=_[_0x4458('0x35')](db['VoiceChanSpy']['rawAttributes']);_0x339175['query']=_[_0x4458('0x35')](_0x4a7ee7[_0x4458('0x34')]);_0x339175['filters']=_[_0x4458('0x37')](_0x339175[_0x4458('0x33')],_0x339175['query']);_0x477dde['attributes']=_[_0x4458('0x37')](_0x339175[_0x4458('0x33')],qs[_0x4458('0x38')](_0x4a7ee7[_0x4458('0x34')][_0x4458('0x38')]));_0x477dde['attributes']=_0x477dde[_0x4458('0x36')]['length']?_0x477dde['attributes']:_0x339175['model'];if(_0x4a7ee7['query'][_0x4458('0x44')]){_0x477dde[_0x4458('0x45')]=[{'all':!![]}];}_0x477dde=_['merge']({},_0x477dde,_0x4a7ee7[_0x4458('0x43')]);return db['VoiceChanSpy'][_0x4458('0x49')](_0x477dde)[_0x4458('0x25')](handleEntityNotFound(_0x5b4a72,null))[_0x4458('0x25')](respondWithResult(_0x5b4a72,null))[_0x4458('0x47')](handleError(_0x5b4a72,null));};exports[_0x4458('0x4a')]=function(_0x455931,_0x3dd938){return db[_0x4458('0x2f')][_0x4458('0x4a')](_0x455931[_0x4458('0x4b')],{})[_0x4458('0x25')](function(_0x39aed8){var _0x367b3a=_0x455931[_0x4458('0x4c')][_0x4458('0x26')]({'plain':!![]});if(!_0x367b3a)throw new Error(_0x4458('0x4d'));if(_0x367b3a['role']===_0x4458('0x4c')){var _0x5251e1=_0x39aed8[_0x4458('0x26')]({'plain':!![]});var _0x50f86c=_0x4458('0x4e');return db['UserProfileSection'][_0x4458('0x49')]({'where':{'name':_0x50f86c,'userProfileId':_0x367b3a[_0x4458('0x4f')]},'raw':!![]})['then'](function(_0x1d9d48){if(_0x1d9d48&&_0x1d9d48[_0x4458('0x50')]===0x0){return db[_0x4458('0x27')][_0x4458('0x4a')]({'name':_0x5251e1[_0x4458('0x2b')],'resourceId':_0x5251e1['id'],'type':_0x1d9d48[_0x4458('0x2b')],'sectionId':_0x1d9d48['id']},{})['then'](function(){return _0x39aed8;});}else{return _0x39aed8;}})['catch'](function(_0x1d043f){logger[_0x4458('0x51')](_0x4458('0x52'),_0x1d043f);throw _0x1d043f;});}return _0x39aed8;})[_0x4458('0x25')](respondWithResult(_0x3dd938,0xc9))[_0x4458('0x47')](handleError(_0x3dd938,null));};exports[_0x4458('0x24')]=function(_0x53ff8a,_0x13535f){if(_0x53ff8a[_0x4458('0x4b')]['id']){delete _0x53ff8a['body']['id'];}return db[_0x4458('0x2f')][_0x4458('0x49')]({'where':{'id':_0x53ff8a[_0x4458('0x48')]['id']}})['then'](handleEntityNotFound(_0x13535f,null))[_0x4458('0x25')](saveUpdates(_0x53ff8a[_0x4458('0x4b')],null))[_0x4458('0x25')](respondWithResult(_0x13535f,null))['catch'](handleError(_0x13535f,null));};exports['destroy']=function(_0x54bb3f,_0x1f1899){return db[_0x4458('0x2f')][_0x4458('0x49')]({'where':{'id':_0x54bb3f[_0x4458('0x48')]['id']}})[_0x4458('0x25')](handleEntityNotFound(_0x1f1899,null))[_0x4458('0x25')](removeEntity(_0x1f1899,null))[_0x4458('0x47')](handleError(_0x1f1899,null));};
\ No newline at end of file
+var _0xaf93=['sort','where','filters','filter','merge','map','options','includeAll','include','findAll','rows','catch','show','params','keys','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','querystring','../../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','set','apply','reject','then','get','ChanSpies','UserProfileResource','destroy','end','sendStatus','stack','name','index','VoiceChanSpy','rawAttributes','type','key','model','query','intersection','attributes','fields','length','nolimit'];(function(_0x7fa3ff,_0x139d6a){var _0x27103d=function(_0x3f369c){while(--_0x3f369c){_0x7fa3ff['push'](_0x7fa3ff['shift']());}};_0x27103d(++_0x139d6a);}(_0xaf93,0x151));var _0x3af9=function(_0x5185cf,_0x18e620){_0x5185cf=_0x5185cf-0x0;var _0x53a6b5=_0xaf93[_0x5185cf];return _0x53a6b5;};'use strict';var emlformat=require(_0x3af9('0x0'));var rimraf=require(_0x3af9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x3af9('0x2'));var moment=require(_0x3af9('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x3af9('0x4'));var util=require(_0x3af9('0x5'));var path=require(_0x3af9('0x6'));var sox=require(_0x3af9('0x7'));var csv=require(_0x3af9('0x8'));var ejs=require(_0x3af9('0x9'));var fs=require('fs');var fs_extra=require(_0x3af9('0xa'));var _=require('lodash');var squel=require(_0x3af9('0xb'));var crypto=require('crypto');var jsforce=require(_0x3af9('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3af9('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x3af9('0xe'));var qs=require(_0x3af9('0xf'));var as=require(_0x3af9('0x10'));var hardwareService=require(_0x3af9('0x11'));var logger=require('../../config/logger')(_0x3af9('0x12'));var utils=require(_0x3af9('0x13'));var config=require(_0x3af9('0x14'));var licenseUtil=require(_0x3af9('0x15'));var db=require(_0x3af9('0x16'))['db'];function respondWithStatusCode(_0xfa1410,_0x212f63){_0x212f63=_0x212f63||0xcc;return function(_0xa7b81f){if(_0xa7b81f){return _0xfa1410['sendStatus'](_0x212f63);}return _0xfa1410[_0x3af9('0x17')](_0x212f63)['end']();};}function respondWithResult(_0x152254,_0x222b6f){_0x222b6f=_0x222b6f||0xc8;return function(_0x1e4ebb){if(_0x1e4ebb){return _0x152254['status'](_0x222b6f)[_0x3af9('0x18')](_0x1e4ebb);}};}function respondWithFilteredResult(_0x1088fc,_0x37cb8b){return function(_0x4b2845){if(_0x4b2845){var _0x278e80=typeof _0x37cb8b[_0x3af9('0x19')]===_0x3af9('0x1a')&&typeof _0x37cb8b[_0x3af9('0x1b')]==='undefined';var _0x1d3410=_0x4b2845[_0x3af9('0x1c')];var _0x298135=_0x278e80?0x0:_0x37cb8b[_0x3af9('0x19')];var _0x314df2=_0x278e80?_0x4b2845['count']:_0x37cb8b[_0x3af9('0x19')]+_0x37cb8b[_0x3af9('0x1b')];var _0x1f9214;if(_0x314df2>=_0x1d3410){_0x314df2=_0x1d3410;_0x1f9214=0xc8;}else{_0x1f9214=0xce;}_0x1088fc[_0x3af9('0x17')](_0x1f9214);return _0x1088fc[_0x3af9('0x1d')]('Content-Range',_0x298135+'-'+_0x314df2+'/'+_0x1d3410)[_0x3af9('0x18')](_0x4b2845);}return null;};}function patchUpdates(_0x34eb91){return function(_0x449349){try{jsonpatch[_0x3af9('0x1e')](_0x449349,_0x34eb91,!![]);}catch(_0x3c1793){return BPromise[_0x3af9('0x1f')](_0x3c1793);}return _0x449349['save']();};}function saveUpdates(_0x4a88ea,_0x505e25){return function(_0x5e24e3){if(_0x5e24e3){return _0x5e24e3['update'](_0x4a88ea)[_0x3af9('0x20')](function(_0x5c1c8f){return _0x5c1c8f;});}return null;};}function removeEntity(_0x74c872,_0x307f9d){return function(_0x4b5a5c){if(_0x4b5a5c){return _0x4b5a5c['destroy']()['then'](function(){var _0x119e85=_0x4b5a5c[_0x3af9('0x21')]({'plain':!![]});var _0x22965b=_0x3af9('0x22');return db[_0x3af9('0x23')][_0x3af9('0x24')]({'where':{'type':_0x22965b,'resourceId':_0x119e85['id']}})[_0x3af9('0x20')](function(){return _0x4b5a5c;});})[_0x3af9('0x20')](function(){_0x74c872['status'](0xcc)[_0x3af9('0x25')]();});}};}function handleEntityNotFound(_0x574b71,_0x485754){return function(_0x177650){if(!_0x177650){_0x574b71[_0x3af9('0x26')](0x194);}return _0x177650;};}function handleError(_0x19643f,_0xf8840){_0xf8840=_0xf8840||0x1f4;return function(_0x374382){logger['error'](_0x374382[_0x3af9('0x27')]);if(_0x374382[_0x3af9('0x28')]){delete _0x374382[_0x3af9('0x28')];}_0x19643f['status'](_0xf8840)['send'](_0x374382);};}exports[_0x3af9('0x29')]=function(_0x1d022d,_0x8867c6){var _0x540969={},_0x4186d5={},_0x115673={'count':0x0,'rows':[]};var _0x1c923d=_['map'](db[_0x3af9('0x2a')][_0x3af9('0x2b')],function(_0x407572){return{'name':_0x407572['fieldName'],'type':_0x407572[_0x3af9('0x2c')][_0x3af9('0x2d')]};});_0x4186d5[_0x3af9('0x2e')]=_['map'](_0x1c923d,_0x3af9('0x28'));_0x4186d5[_0x3af9('0x2f')]=_['keys'](_0x1d022d[_0x3af9('0x2f')]);_0x4186d5['filters']=_[_0x3af9('0x30')](_0x4186d5['model'],_0x4186d5['query']);_0x540969[_0x3af9('0x31')]=_['intersection'](_0x4186d5[_0x3af9('0x2e')],qs[_0x3af9('0x32')](_0x1d022d[_0x3af9('0x2f')]['fields']));_0x540969['attributes']=_0x540969[_0x3af9('0x31')][_0x3af9('0x33')]?_0x540969['attributes']:_0x4186d5['model'];if(!_0x1d022d[_0x3af9('0x2f')]['hasOwnProperty'](_0x3af9('0x34'))){_0x540969[_0x3af9('0x1b')]=qs['limit'](_0x1d022d['query'][_0x3af9('0x1b')]);_0x540969[_0x3af9('0x19')]=qs[_0x3af9('0x19')](_0x1d022d[_0x3af9('0x2f')][_0x3af9('0x19')]);}_0x540969['order']=qs['sort'](_0x1d022d[_0x3af9('0x2f')][_0x3af9('0x35')]);_0x540969[_0x3af9('0x36')]=qs[_0x3af9('0x37')](_['pick'](_0x1d022d['query'],_0x4186d5[_0x3af9('0x37')]),_0x1c923d);if(_0x1d022d[_0x3af9('0x2f')][_0x3af9('0x38')]){_0x540969['where']=_[_0x3af9('0x39')](_0x540969[_0x3af9('0x36')],{'$or':_[_0x3af9('0x3a')](_0x1c923d,function(_0x576c86){if(_0x576c86[_0x3af9('0x2c')]!=='VIRTUAL'){var _0x1f3ac9={};_0x1f3ac9[_0x576c86[_0x3af9('0x28')]]={'$like':'%'+_0x1d022d[_0x3af9('0x2f')][_0x3af9('0x38')]+'%'};return _0x1f3ac9;}})});}_0x540969=_[_0x3af9('0x39')]({},_0x540969,_0x1d022d[_0x3af9('0x3b')]);var _0x43fd62={'where':_0x540969[_0x3af9('0x36')]};return db[_0x3af9('0x2a')][_0x3af9('0x1c')](_0x43fd62)[_0x3af9('0x20')](function(_0x4d7bd4){_0x115673[_0x3af9('0x1c')]=_0x4d7bd4;if(_0x1d022d[_0x3af9('0x2f')][_0x3af9('0x3c')]){_0x540969[_0x3af9('0x3d')]=[{'all':!![]}];}return db[_0x3af9('0x2a')][_0x3af9('0x3e')](_0x540969);})[_0x3af9('0x20')](function(_0x384a61){_0x115673[_0x3af9('0x3f')]=_0x384a61;return _0x115673;})[_0x3af9('0x20')](respondWithFilteredResult(_0x8867c6,_0x540969))[_0x3af9('0x40')](handleError(_0x8867c6,null));};exports[_0x3af9('0x41')]=function(_0x549274,_0x542580){var _0x461dd6={'raw':![],'where':{'id':_0x549274[_0x3af9('0x42')]['id']}},_0x1daea4={};_0x1daea4[_0x3af9('0x2e')]=_[_0x3af9('0x43')](db[_0x3af9('0x2a')][_0x3af9('0x2b')]);_0x1daea4[_0x3af9('0x2f')]=_[_0x3af9('0x43')](_0x549274[_0x3af9('0x2f')]);_0x1daea4[_0x3af9('0x37')]=_[_0x3af9('0x30')](_0x1daea4[_0x3af9('0x2e')],_0x1daea4['query']);_0x461dd6[_0x3af9('0x31')]=_[_0x3af9('0x30')](_0x1daea4[_0x3af9('0x2e')],qs[_0x3af9('0x32')](_0x549274['query']['fields']));_0x461dd6[_0x3af9('0x31')]=_0x461dd6['attributes'][_0x3af9('0x33')]?_0x461dd6[_0x3af9('0x31')]:_0x1daea4[_0x3af9('0x2e')];if(_0x549274[_0x3af9('0x2f')]['includeAll']){_0x461dd6[_0x3af9('0x3d')]=[{'all':!![]}];}_0x461dd6=_[_0x3af9('0x39')]({},_0x461dd6,_0x549274[_0x3af9('0x3b')]);return db['VoiceChanSpy']['find'](_0x461dd6)[_0x3af9('0x20')](handleEntityNotFound(_0x542580,null))['then'](respondWithResult(_0x542580,null))['catch'](handleError(_0x542580,null));};exports['create']=function(_0x19bd47,_0x3bc784){return db[_0x3af9('0x2a')][_0x3af9('0x44')](_0x19bd47[_0x3af9('0x45')],{})[_0x3af9('0x20')](function(_0x442681){var _0x48377b=_0x19bd47[_0x3af9('0x46')][_0x3af9('0x21')]({'plain':!![]});if(!_0x48377b)throw new Error(_0x3af9('0x47'));if(_0x48377b[_0x3af9('0x48')]===_0x3af9('0x46')){var _0x1104d4=_0x442681['get']({'plain':!![]});var _0x1b4509=_0x3af9('0x22');return db[_0x3af9('0x49')][_0x3af9('0x4a')]({'where':{'name':_0x1b4509,'userProfileId':_0x48377b['userProfileId']},'raw':!![]})[_0x3af9('0x20')](function(_0x39d954){if(_0x39d954&&_0x39d954[_0x3af9('0x4b')]===0x0){return db[_0x3af9('0x23')]['create']({'name':_0x1104d4[_0x3af9('0x28')],'resourceId':_0x1104d4['id'],'type':_0x39d954[_0x3af9('0x28')],'sectionId':_0x39d954['id']},{})[_0x3af9('0x20')](function(){return _0x442681;});}else{return _0x442681;}})[_0x3af9('0x40')](function(_0x4c75b6){logger['error'](_0x3af9('0x4c'),_0x4c75b6);throw _0x4c75b6;});}return _0x442681;})[_0x3af9('0x20')](respondWithResult(_0x3bc784,0xc9))[_0x3af9('0x40')](handleError(_0x3bc784,null));};exports[_0x3af9('0x4d')]=function(_0x3f087a,_0x268820){if(_0x3f087a[_0x3af9('0x45')]['id']){delete _0x3f087a[_0x3af9('0x45')]['id'];}return db[_0x3af9('0x2a')][_0x3af9('0x4a')]({'where':{'id':_0x3f087a[_0x3af9('0x42')]['id']}})['then'](handleEntityNotFound(_0x268820,null))[_0x3af9('0x20')](saveUpdates(_0x3f087a[_0x3af9('0x45')],null))['then'](respondWithResult(_0x268820,null))['catch'](handleError(_0x268820,null));};exports[_0x3af9('0x24')]=function(_0x4b205f,_0x27f717){return db[_0x3af9('0x2a')]['find']({'where':{'id':_0x4b205f['params']['id']}})[_0x3af9('0x20')](handleEntityNotFound(_0x27f717,null))[_0x3af9('0x20')](removeEntity(_0x27f717,null))[_0x3af9('0x40')](handleError(_0x27f717,null));};
\ No newline at end of file
index 0129850..23cc665 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa35c=['push','merge','CDR(type)=%s','chanspy','MixMonitor','format','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','record','length','concat','internal','findAll','catch','exports','models','VoiceChanSpy','voice_chanspy','then','VoiceExtension','destroy','bulkCreate','util','bluebird','./voiceChanSpy.attributes','%s%s','prefix','system'];(function(_0x209283,_0x331e05){var _0x4700aa=function(_0x5a003d){while(--_0x5a003d){_0x209283['push'](_0x209283['shift']());}};_0x4700aa(++_0x331e05);}(_0xa35c,0x86));var _0xca35=function(_0x4a2e9d,_0x4ad6c6){_0x4a2e9d=_0x4a2e9d-0x0;var _0x218a09=_0xa35c[_0x4a2e9d];return _0x218a09;};'use strict';var _=require('lodash');var util=require(_0xca35('0x0'));var BPromise=require(_0xca35('0x1'));var attributes=require(_0xca35('0x2'));var getUserApplications=function(_0x2febd5,_0x2664b7,_0x2ba8a7){var _0x9a69db=0x1;var _0x3c2b3c=[];var _0x333ba6={'context':_0x2664b7['context']||'from-sip','exten':util['format'](_0xca35('0x3'),_0x2febd5[_0xca35('0x4')],_0x2ba8a7),'type':_0xca35('0x5'),'isApp':![],'ChanSpyId':_0x2febd5['id'],'UserId':_0x2664b7['id']};_0x3c2b3c[_0xca35('0x6')](_[_0xca35('0x7')]({'app':'Set','appdata':util['format'](_0xca35('0x8'),_0xca35('0x9')),'priority':_0x9a69db++},_0x333ba6));if(_0x2febd5['record']){_0x3c2b3c[_0xca35('0x6')](_[_0xca35('0x7')]({'app':_0xca35('0xa'),'appdata':util[_0xca35('0xb')](_0xca35('0xc'),_0x2febd5[_0xca35('0xd')]),'priority':_0x9a69db++},_0x333ba6));}if(_0x2febd5[_0xca35('0xe')]){_0x3c2b3c[_0xca35('0x6')](_[_0xca35('0x7')]({'app':_0xca35('0xf'),'appdata':_0x2febd5[_0xca35('0x10')],'priority':_0x9a69db++},_0x333ba6));}_0x3c2b3c[_0xca35('0x6')](_[_0xca35('0x7')]({'app':_0xca35('0x11'),'appdata':util['format'](_0xca35('0x12'),_0x2664b7[_0xca35('0x13')],_0x2febd5[_0xca35('0x14')]?_0x2febd5[_0xca35('0x14')]['join'](''):''),'priority':_0x9a69db++},_0x333ba6));if(_0x2febd5[_0xca35('0x15')]){_0x3c2b3c[_0xca35('0x6')](_[_0xca35('0x7')]({'app':'StopMixMonitor','priority':_0x9a69db++},_0x333ba6));}return _0x3c2b3c;};var getChanSpyApplications=function(_0x40b337,_0x225f91){var _0x15f234=[];for(var _0x2522d7=0x0,_0xa53b3a=0x1;_0x2522d7<_0x225f91[_0xca35('0x16')];_0x2522d7++,_0xa53b3a=0x1){_0x15f234=_0x15f234[_0xca35('0x17')](getUserApplications(_0x40b337,_0x225f91[_0x2522d7],_0x225f91[_0x2522d7][_0xca35('0x18')]));if(_0x225f91[_0x2522d7]['internal']!=_0x225f91[_0x2522d7]['name']){_0x15f234=_0x15f234[_0xca35('0x17')](getUserApplications(_0x40b337,_0x225f91[_0x2522d7],_0x225f91[_0x2522d7][_0xca35('0x13')]));}}return _0x15f234;};var getChanSpyPromise=function(_0x3274cb,_0x3f0636){return new BPromise(function(_0x316b51,_0x2400c8){return _0x3274cb['User'][_0xca35('0x19')]({'attributes':['id',_0xca35('0x13'),_0xca35('0x18')],'where':{'role':'agent','chanspy':!![]},'raw':!![]})['then'](function(_0x28ab58){if(_0x28ab58){return _0x316b51(getChanSpyApplications(_0x3f0636,_0x28ab58));}return _0x316b51([]);})[_0xca35('0x1a')](function(_0x6f4938){_0x2400c8(_0x6f4938);});});};module[_0xca35('0x1b')]=function(_0x34cc0d,_0x27f37f){var _0x448066=_0x34cc0d[_0xca35('0x1c')];return _0x34cc0d['define'](_0xca35('0x1d'),attributes,{'tableName':_0xca35('0x1e'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x4c836d,_0x2b0115,_0x5cb8e7){return getChanSpyPromise(_0x448066,_0x4c836d)[_0xca35('0x1f')](function(_0x45d7f5){if(_0x45d7f5&&_0x45d7f5['length']){return _0x448066[_0xca35('0x20')]['bulkCreate'](_0x45d7f5);}})[_0xca35('0x1f')](function(){_0x5cb8e7();})[_0xca35('0x1a')](function(_0x822bcb){_0x5cb8e7(_0x822bcb);});},'afterUpdate':function(_0x5d419a,_0x11030f,_0x324620){return _0x448066['VoiceExtension'][_0xca35('0x21')]({'where':{'ChanSpyId':_0x5d419a['id']}})[_0xca35('0x1f')](function(){return getChanSpyPromise(_0x448066,_0x5d419a);})[_0xca35('0x1f')](function(_0x4bb11f){if(_0x4bb11f&&_0x4bb11f['length']){return _0x448066['VoiceExtension'][_0xca35('0x22')](_0x4bb11f);}})[_0xca35('0x1f')](function(){_0x324620();})[_0xca35('0x1a')](function(_0x23787d){_0x324620(_0x23787d);});},'afterDestroy':function(_0x3f91e6,_0x534e2b,_0x22ab41){return _0x448066['VoiceExtension'][_0xca35('0x21')]({'where':{'ChanSpyId':_0x3f91e6['id']}})[_0xca35('0x1f')](function(){_0x22ab41();})[_0xca35('0x1a')](function(_0x374780){_0x22ab41(_0x374780);});}}});};
\ No newline at end of file
+var _0xfe7f=['MixMonitor','auth','password','ChanSpy','name','options','record','StopMixMonitor','length','concat','internal','findAll','agent','then','catch','models','define','VoiceChanSpy','VoiceExtension','bulkCreate','destroy','util','bluebird','./voiceChanSpy.attributes','context','format','%s%s','prefix','system','push','merge','Set','chanspy'];(function(_0x5bbe3e,_0x2c172e){var _0x2a6b32=function(_0x2c4e1a){while(--_0x2c4e1a){_0x5bbe3e['push'](_0x5bbe3e['shift']());}};_0x2a6b32(++_0x2c172e);}(_0xfe7f,0x13e));var _0xffe7=function(_0x3ae389,_0x17e31c){_0x3ae389=_0x3ae389-0x0;var _0x205073=_0xfe7f[_0x3ae389];return _0x205073;};'use strict';var _=require('lodash');var util=require(_0xffe7('0x0'));var BPromise=require(_0xffe7('0x1'));var attributes=require(_0xffe7('0x2'));var getUserApplications=function(_0x4134c2,_0x44c7f2,_0x537f79){var _0x1ff119=0x1;var _0x4f75f9=[];var _0x3152ba={'context':_0x44c7f2[_0xffe7('0x3')]||'from-sip','exten':util[_0xffe7('0x4')](_0xffe7('0x5'),_0x4134c2[_0xffe7('0x6')],_0x537f79),'type':_0xffe7('0x7'),'isApp':![],'ChanSpyId':_0x4134c2['id'],'UserId':_0x44c7f2['id']};_0x4f75f9[_0xffe7('0x8')](_[_0xffe7('0x9')]({'app':_0xffe7('0xa'),'appdata':util[_0xffe7('0x4')]('CDR(type)=%s',_0xffe7('0xb')),'priority':_0x1ff119++},_0x3152ba));if(_0x4134c2['record']){_0x4f75f9[_0xffe7('0x8')](_[_0xffe7('0x9')]({'app':_0xffe7('0xc'),'appdata':util['format']('${UNIQUEID}.%s,a',_0x4134c2['recordingFormat']),'priority':_0x1ff119++},_0x3152ba));}if(_0x4134c2[_0xffe7('0xd')]){_0x4f75f9[_0xffe7('0x8')](_[_0xffe7('0x9')]({'app':'Authenticate','appdata':_0x4134c2[_0xffe7('0xe')],'priority':_0x1ff119++},_0x3152ba));}_0x4f75f9[_0xffe7('0x8')](_['merge']({'app':_0xffe7('0xf'),'appdata':util[_0xffe7('0x4')]('SIP/%s,%s',_0x44c7f2[_0xffe7('0x10')],_0x4134c2['options']?_0x4134c2[_0xffe7('0x11')]['join'](''):''),'priority':_0x1ff119++},_0x3152ba));if(_0x4134c2[_0xffe7('0x12')]){_0x4f75f9[_0xffe7('0x8')](_[_0xffe7('0x9')]({'app':_0xffe7('0x13'),'priority':_0x1ff119++},_0x3152ba));}return _0x4f75f9;};var getChanSpyApplications=function(_0x573a43,_0x188798){var _0x5aeaee=[];for(var _0x4bd294=0x0,_0x22228f=0x1;_0x4bd294<_0x188798[_0xffe7('0x14')];_0x4bd294++,_0x22228f=0x1){_0x5aeaee=_0x5aeaee[_0xffe7('0x15')](getUserApplications(_0x573a43,_0x188798[_0x4bd294],_0x188798[_0x4bd294][_0xffe7('0x16')]));if(_0x188798[_0x4bd294][_0xffe7('0x16')]!=_0x188798[_0x4bd294][_0xffe7('0x10')]){_0x5aeaee=_0x5aeaee[_0xffe7('0x15')](getUserApplications(_0x573a43,_0x188798[_0x4bd294],_0x188798[_0x4bd294][_0xffe7('0x10')]));}}return _0x5aeaee;};var getChanSpyPromise=function(_0x719e21,_0x311f82){return new BPromise(function(_0x572ed0,_0x49cb16){return _0x719e21['User'][_0xffe7('0x17')]({'attributes':['id',_0xffe7('0x10'),'internal'],'where':{'role':_0xffe7('0x18'),'chanspy':!![]},'raw':!![]})[_0xffe7('0x19')](function(_0x1ce69d){if(_0x1ce69d){return _0x572ed0(getChanSpyApplications(_0x311f82,_0x1ce69d));}return _0x572ed0([]);})[_0xffe7('0x1a')](function(_0x4c7aef){_0x49cb16(_0x4c7aef);});});};module['exports']=function(_0x1f426a,_0x320643){var _0x4f83ab=_0x1f426a[_0xffe7('0x1b')];return _0x1f426a[_0xffe7('0x1c')](_0xffe7('0x1d'),attributes,{'tableName':'voice_chanspy','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x2cc421,_0x37eb1b,_0x1c6769){return getChanSpyPromise(_0x4f83ab,_0x2cc421)[_0xffe7('0x19')](function(_0x2da3fe){if(_0x2da3fe&&_0x2da3fe[_0xffe7('0x14')]){return _0x4f83ab[_0xffe7('0x1e')][_0xffe7('0x1f')](_0x2da3fe);}})['then'](function(){_0x1c6769();})[_0xffe7('0x1a')](function(_0x4e4e87){_0x1c6769(_0x4e4e87);});},'afterUpdate':function(_0x18b075,_0x2bbf41,_0x2d43ef){return _0x4f83ab[_0xffe7('0x1e')][_0xffe7('0x20')]({'where':{'ChanSpyId':_0x18b075['id']}})[_0xffe7('0x19')](function(){return getChanSpyPromise(_0x4f83ab,_0x18b075);})[_0xffe7('0x19')](function(_0x132aad){if(_0x132aad&&_0x132aad[_0xffe7('0x14')]){return _0x4f83ab[_0xffe7('0x1e')][_0xffe7('0x1f')](_0x132aad);}})['then'](function(){_0x2d43ef();})[_0xffe7('0x1a')](function(_0x15dae8){_0x2d43ef(_0x15dae8);});},'afterDestroy':function(_0x1d42cb,_0x19a8e2,_0x70df31){return _0x4f83ab[_0xffe7('0x1e')][_0xffe7('0x20')]({'where':{'ChanSpyId':_0x1d42cb['id']}})[_0xffe7('0x19')](function(){_0x70df31();})[_0xffe7('0x1a')](function(_0x284af4){_0x70df31(_0x284af4);});}}});};
\ No newline at end of file
index c9a402f..3eeb912 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf80=['result','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','VoiceChanSpy,\x20%s,\x20%s','VoiceChanSpy,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message'];(function(_0x28d211,_0x2de397){var _0x227b0d=function(_0x553268){while(--_0x553268){_0x28d211['push'](_0x28d211['shift']());}};_0x227b0d(++_0x2de397);}(_0xaf80,0x1ef));var _0x0af8=function(_0x187d40,_0xe4e3f3){_0x187d40=_0x187d40-0x0;var _0x485c10=_0xaf80[_0x187d40];return _0x485c10;};'use strict';var _=require(_0x0af8('0x0'));var util=require(_0x0af8('0x1'));var moment=require(_0x0af8('0x2'));var BPromise=require(_0x0af8('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0af8('0x4'));var logger=require(_0x0af8('0x5'))(_0x0af8('0x6'));var config=require(_0x0af8('0x7'));var jayson=require(_0x0af8('0x8'));var client=jayson[_0x0af8('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4bce2c,_0x28f555,_0x538c1c){return new BPromise(function(_0x207a9b,_0x430bd4){return client[_0x0af8('0xa')](_0x4bce2c,_0x538c1c)['then'](function(_0xc0d5eb){logger[_0x0af8('0xb')](_0x0af8('0xc'),_0x28f555,'request\x20sent');logger['debug'](_0x0af8('0xd'),_0x28f555,_0x0af8('0xe'),JSON[_0x0af8('0xf')](_0xc0d5eb));if(_0xc0d5eb[_0x0af8('0x10')]){if(_0xc0d5eb[_0x0af8('0x10')]['code']===0x1f4){logger[_0x0af8('0x10')](_0x0af8('0xc'),_0x28f555,_0xc0d5eb[_0x0af8('0x10')][_0x0af8('0x11')]);return _0x430bd4(_0xc0d5eb[_0x0af8('0x10')][_0x0af8('0x11')]);}logger[_0x0af8('0x10')]('VoiceChanSpy,\x20%s,\x20%s',_0x28f555,_0xc0d5eb['error'][_0x0af8('0x11')]);return _0x207a9b(_0xc0d5eb[_0x0af8('0x10')][_0x0af8('0x11')]);}else{logger[_0x0af8('0xb')](_0x0af8('0xc'),_0x28f555,_0x0af8('0xe'));_0x207a9b(_0xc0d5eb[_0x0af8('0x12')][_0x0af8('0x11')]);}})['catch'](function(_0x5f4275){logger['error'](_0x0af8('0xc'),_0x28f555,_0x5f4275);_0x430bd4(_0x5f4275);});});}
\ No newline at end of file
+var _0xcecc=['info','VoiceChanSpy,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','then'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xcecc,0x186));var _0xccec=function(_0x44aa47,_0x47ffee){_0x44aa47=_0x44aa47-0x0;var _0x38bee8=_0xcecc[_0x44aa47];return _0x38bee8;};'use strict';var _=require(_0xccec('0x0'));var util=require('util');var moment=require(_0xccec('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xccec('0x2'));var db=require(_0xccec('0x3'))['db'];var utils=require(_0xccec('0x4'));var logger=require(_0xccec('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xccec('0x6'));var client=jayson['client'][_0xccec('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x44ed01,_0x2a66e5,_0x5788aa){return new BPromise(function(_0x372ea6,_0x3d7b1a){return client['request'](_0x44ed01,_0x5788aa)[_0xccec('0x8')](function(_0xbbf504){logger[_0xccec('0x9')](_0xccec('0xa'),_0x2a66e5,'request\x20sent');logger[_0xccec('0xb')]('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x2a66e5,_0xccec('0xc'),JSON[_0xccec('0xd')](_0xbbf504));if(_0xbbf504['error']){if(_0xbbf504[_0xccec('0xe')][_0xccec('0xf')]===0x1f4){logger[_0xccec('0xe')]('VoiceChanSpy,\x20%s,\x20%s',_0x2a66e5,_0xbbf504[_0xccec('0xe')][_0xccec('0x10')]);return _0x3d7b1a(_0xbbf504[_0xccec('0xe')][_0xccec('0x10')]);}logger[_0xccec('0xe')]('VoiceChanSpy,\x20%s,\x20%s',_0x2a66e5,_0xbbf504[_0xccec('0xe')]['message']);return _0x372ea6(_0xbbf504['error']['message']);}else{logger[_0xccec('0x9')](_0xccec('0xa'),_0x2a66e5,_0xccec('0xc'));_0x372ea6(_0xbbf504[_0xccec('0x11')][_0xccec('0x10')]);}})[_0xccec('0x12')](function(_0x7abe38){logger[_0xccec('0xe')](_0xccec('0xa'),_0x2a66e5,_0x7abe38);_0x3d7b1a(_0x7abe38);});});}
\ No newline at end of file
index 7320c17..39d0d1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf24e=['index','/:id','show','post','create','put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceContext.controller','get','isAuthenticated'];(function(_0x57a3a3,_0xf56c83){var _0x3311eb=function(_0xa2149b){while(--_0xa2149b){_0x57a3a3['push'](_0x57a3a3['shift']());}};_0x3311eb(++_0xf56c83);}(_0xf24e,0x11a));var _0xef24=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0xf24e[_0x243b59];return _0x3e1676;};'use strict';var multer=require(_0xef24('0x0'));var util=require(_0xef24('0x1'));var path=require(_0xef24('0x2'));var timeout=require(_0xef24('0x3'));var express=require('express');var router=express[_0xef24('0x4')]();var fs_extra=require(_0xef24('0x5'));var auth=require(_0xef24('0x6'));var interaction=require(_0xef24('0x7'));var config=require(_0xef24('0x8'));var controller=require(_0xef24('0x9'));router[_0xef24('0xa')]('/',auth[_0xef24('0xb')](),controller[_0xef24('0xc')]);router[_0xef24('0xa')](_0xef24('0xd'),auth['isAuthenticated'](),controller[_0xef24('0xe')]);router[_0xef24('0xf')]('/',auth[_0xef24('0xb')](),controller[_0xef24('0x10')]);router[_0xef24('0x11')](_0xef24('0xd'),auth[_0xef24('0xb')](),controller[_0xef24('0x12')]);router[_0xef24('0x13')](_0xef24('0xd'),auth[_0xef24('0xb')](),controller['destroy']);module[_0xef24('0x14')]=router;
\ No newline at end of file
+var _0x785c=['../../components/auth/service','../../components/interaction/service','./voiceContext.controller','get','index','/:id','isAuthenticated','show','post','create','update','destroy','util','path','connect-timeout','Router','fs-extra'];(function(_0x30eea0,_0x63ad9b){var _0x4def89=function(_0x51e629){while(--_0x51e629){_0x30eea0['push'](_0x30eea0['shift']());}};_0x4def89(++_0x63ad9b);}(_0x785c,0x83));var _0xc785=function(_0x123095,_0x405a80){_0x123095=_0x123095-0x0;var _0x5493c7=_0x785c[_0x123095];return _0x5493c7;};'use strict';var multer=require('multer');var util=require(_0xc785('0x0'));var path=require(_0xc785('0x1'));var timeout=require(_0xc785('0x2'));var express=require('express');var router=express[_0xc785('0x3')]();var fs_extra=require(_0xc785('0x4'));var auth=require(_0xc785('0x5'));var interaction=require(_0xc785('0x6'));var config=require('../../config/environment');var controller=require(_0xc785('0x7'));router[_0xc785('0x8')]('/',auth['isAuthenticated'](),controller[_0xc785('0x9')]);router[_0xc785('0x8')](_0xc785('0xa'),auth[_0xc785('0xb')](),controller[_0xc785('0xc')]);router[_0xc785('0xd')]('/',auth[_0xc785('0xb')](),controller[_0xc785('0xe')]);router['put'](_0xc785('0xa'),auth[_0xc785('0xb')](),controller[_0xc785('0xf')]);router['delete'](_0xc785('0xa'),auth[_0xc785('0xb')](),controller[_0xc785('0x10')]);module['exports']=router;
\ No newline at end of file
index bf6b272..f655396 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccbf=['exports','STRING','name','BOOLEAN'];(function(_0x4a8935,_0x159d0f){var _0x3516fb=function(_0x31640a){while(--_0x31640a){_0x4a8935['push'](_0x4a8935['shift']());}};_0x3516fb(++_0x159d0f);}(_0xccbf,0xd8));var _0xfccb=function(_0x33ceb8,_0x32d180){_0x33ceb8=_0x33ceb8-0x0;var _0x490811=_0xccbf[_0x33ceb8];return _0x490811;};'use strict';var Sequelize=require('sequelize');module[_0xfccb('0x0')]={'name':{'type':Sequelize[_0xfccb('0x1')],'unique':_0xfccb('0x2')},'description':{'type':Sequelize[_0xfccb('0x1')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0xfccb('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xbfc9=['exports','name','BOOLEAN','sequelize'];(function(_0x8ec6b4,_0x31ef52){var _0x52c0d0=function(_0x17cadc){while(--_0x17cadc){_0x8ec6b4['push'](_0x8ec6b4['shift']());}};_0x52c0d0(++_0x31ef52);}(_0xbfc9,0x173));var _0x9bfc=function(_0x304fb2,_0x418b23){_0x304fb2=_0x304fb2-0x0;var _0x5d6282=_0xbfc9[_0x304fb2];return _0x5d6282;};'use strict';var Sequelize=require(_0x9bfc('0x0'));module[_0x9bfc('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x9bfc('0x2')},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x9bfc('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 0cc603a..f8a1c1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6af0=['pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','params','length','find','create','body','readFileSync','join','server/files/templates/context.ejs','render','writeFileSync','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','utf8','/etc/asterisk/extensions_xcally_contexts.conf','root','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise','client','http','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','sendStatus','status','end','json','undefined','limit','count','offset','apply','reject','save','update','destroy','get','Contexts','UserProfileResource','stack','name','send','index','map','VoiceContext','rawAttributes','fieldName','key','query','keys','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters'];(function(_0x1ccfb3,_0x2d0190){var _0x6f8c5a=function(_0x25e631){while(--_0x25e631){_0x1ccfb3['push'](_0x1ccfb3['shift']());}};_0x6f8c5a(++_0x2d0190);}(_0x6af0,0xe7));var _0x06af=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0x6af0[_0x2235bf];return _0x4c3a64;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x06af('0x0'));var zipdir=require(_0x06af('0x1'));var jsonpatch=require(_0x06af('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x06af('0x3'));var Mustache=require(_0x06af('0x4'));var util=require(_0x06af('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x06af('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x06af('0x7'));var squel=require(_0x06af('0x8'));var crypto=require(_0x06af('0x9'));var jsforce=require(_0x06af('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x06af('0x6'));var querystring=require(_0x06af('0xb'));var Papa=require(_0x06af('0xc'));var Redis=require(_0x06af('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x06af('0xe'));var as=require(_0x06af('0xf'));var hardwareService=require(_0x06af('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0x06af('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x06af('0x12'));var db=require(_0x06af('0x13'))['db'];var jayson=require(_0x06af('0x14'));var client=jayson[_0x06af('0x15')][_0x06af('0x16')]({'port':0x232a});function respondWithRpcPromise(_0x557b54,_0x5a8792,_0x37f48b,_0x369660){return new BPromise(function(_0x55ff9c,_0x402c60){var _0x1c65a8=_0x369660||client;return _0x1c65a8['request'](_0x557b54,_0x37f48b)[_0x06af('0x17')](function(_0x5756e1){logger[_0x06af('0x18')](_0x06af('0x19'),_0x5a8792,_0x06af('0x1a'));logger['debug']('VoiceContext,\x20%s,\x20%s,\x20%s',_0x5a8792,'request\x20sent',JSON[_0x06af('0x1b')](_0x5756e1));if(_0x5756e1['error']){if(_0x5756e1[_0x06af('0x1c')][_0x06af('0x1d')]===0x1f4){logger[_0x06af('0x1c')]('VoiceContext,\x20%s,\x20%s',_0x5a8792,_0x5756e1['error'][_0x06af('0x1e')]);return _0x402c60(_0x5756e1[_0x06af('0x1c')][_0x06af('0x1e')]);}logger[_0x06af('0x1c')](_0x06af('0x19'),_0x5a8792,_0x5756e1[_0x06af('0x1c')][_0x06af('0x1e')]);return _0x55ff9c(_0x5756e1['error'][_0x06af('0x1e')]);}else{logger[_0x06af('0x18')]('VoiceContext,\x20%s,\x20%s',_0x5a8792,_0x06af('0x1a'));_0x55ff9c(_0x5756e1['result'][_0x06af('0x1e')]);}})[_0x06af('0x1f')](function(_0x223a02){logger[_0x06af('0x1c')](_0x06af('0x19'),_0x5a8792,_0x223a02);_0x402c60(_0x223a02);});});}function respondWithStatusCode(_0x148a94,_0x2cc31f){_0x2cc31f=_0x2cc31f||0xcc;return function(_0x47f421){if(_0x47f421){return _0x148a94[_0x06af('0x20')](_0x2cc31f);}return _0x148a94[_0x06af('0x21')](_0x2cc31f)[_0x06af('0x22')]();};}function respondWithResult(_0x556f35,_0x45629a){_0x45629a=_0x45629a||0xc8;return function(_0x2cf6af){if(_0x2cf6af){return _0x556f35[_0x06af('0x21')](_0x45629a)[_0x06af('0x23')](_0x2cf6af);}};}function respondWithFilteredResult(_0x12cba4,_0x1afe69){return function(_0x39abdf){if(_0x39abdf){var _0x21850e=typeof _0x1afe69['offset']===_0x06af('0x24')&&typeof _0x1afe69[_0x06af('0x25')]===_0x06af('0x24');var _0x358138=_0x39abdf[_0x06af('0x26')];var _0x1de200=_0x21850e?0x0:_0x1afe69[_0x06af('0x27')];var _0x32a414=_0x21850e?_0x39abdf['count']:_0x1afe69[_0x06af('0x27')]+_0x1afe69[_0x06af('0x25')];var _0x29caca;if(_0x32a414>=_0x358138){_0x32a414=_0x358138;_0x29caca=0xc8;}else{_0x29caca=0xce;}_0x12cba4[_0x06af('0x21')](_0x29caca);return _0x12cba4['set']('Content-Range',_0x1de200+'-'+_0x32a414+'/'+_0x358138)['json'](_0x39abdf);}return null;};}function patchUpdates(_0x46b906){return function(_0x9155e8){try{jsonpatch[_0x06af('0x28')](_0x9155e8,_0x46b906,!![]);}catch(_0x580550){return BPromise[_0x06af('0x29')](_0x580550);}return _0x9155e8[_0x06af('0x2a')]();};}function saveUpdates(_0x30dfc8,_0x6dd6){return function(_0x46f9a9){if(_0x46f9a9){return _0x46f9a9[_0x06af('0x2b')](_0x30dfc8)[_0x06af('0x17')](function(_0x1c6827){return _0x1c6827;});}return null;};}function removeEntity(_0x4719a8,_0x4dcff1){return function(_0x2e4031){if(_0x2e4031){return _0x2e4031[_0x06af('0x2c')]()[_0x06af('0x17')](function(){var _0x1d56ff=_0x2e4031[_0x06af('0x2d')]({'plain':!![]});var _0x5eebf1=_0x06af('0x2e');return db[_0x06af('0x2f')][_0x06af('0x2c')]({'where':{'type':_0x5eebf1,'resourceId':_0x1d56ff['id']}})[_0x06af('0x17')](function(){return _0x2e4031;});})['then'](function(){_0x4719a8[_0x06af('0x21')](0xcc)['end']();});}};}function handleEntityNotFound(_0x27ee36,_0x2006c1){return function(_0x4d93ec){if(!_0x4d93ec){_0x27ee36['sendStatus'](0x194);}return _0x4d93ec;};}function handleError(_0x172774,_0xdba938){_0xdba938=_0xdba938||0x1f4;return function(_0x193d95){logger['error'](_0x193d95[_0x06af('0x30')]);if(_0x193d95[_0x06af('0x31')]){delete _0x193d95[_0x06af('0x31')];}_0x172774[_0x06af('0x21')](_0xdba938)[_0x06af('0x32')](_0x193d95);};}exports[_0x06af('0x33')]=function(_0x5a6520,_0x234612){var _0x254c17={},_0x5aa336={},_0x37bd71={'count':0x0,'rows':[]};var _0x2b8c9b=_[_0x06af('0x34')](db[_0x06af('0x35')][_0x06af('0x36')],function(_0x3a130a){return{'name':_0x3a130a[_0x06af('0x37')],'type':_0x3a130a['type'][_0x06af('0x38')]};});_0x5aa336['model']=_[_0x06af('0x34')](_0x2b8c9b,_0x06af('0x31'));_0x5aa336[_0x06af('0x39')]=_[_0x06af('0x3a')](_0x5a6520['query']);_0x5aa336['filters']=_[_0x06af('0x3b')](_0x5aa336[_0x06af('0x3c')],_0x5aa336[_0x06af('0x39')]);_0x254c17['attributes']=_[_0x06af('0x3b')](_0x5aa336['model'],qs[_0x06af('0x3d')](_0x5a6520[_0x06af('0x39')][_0x06af('0x3d')]));_0x254c17[_0x06af('0x3e')]=_0x254c17[_0x06af('0x3e')]['length']?_0x254c17['attributes']:_0x5aa336[_0x06af('0x3c')];if(!_0x5a6520[_0x06af('0x39')][_0x06af('0x3f')](_0x06af('0x40'))){_0x254c17[_0x06af('0x25')]=qs[_0x06af('0x25')](_0x5a6520[_0x06af('0x39')][_0x06af('0x25')]);_0x254c17[_0x06af('0x27')]=qs['offset'](_0x5a6520[_0x06af('0x39')]['offset']);}_0x254c17[_0x06af('0x41')]=qs[_0x06af('0x42')](_0x5a6520['query'][_0x06af('0x42')]);_0x254c17[_0x06af('0x43')]=qs[_0x06af('0x44')](_[_0x06af('0x45')](_0x5a6520[_0x06af('0x39')],_0x5aa336[_0x06af('0x44')]),_0x2b8c9b);if(_0x5a6520[_0x06af('0x39')][_0x06af('0x46')]){_0x254c17[_0x06af('0x43')]=_[_0x06af('0x47')](_0x254c17[_0x06af('0x43')],{'$or':_['map'](_0x2b8c9b,function(_0x3b0e5e){if(_0x3b0e5e[_0x06af('0x48')]!==_0x06af('0x49')){var _0xd4101c={};_0xd4101c[_0x3b0e5e[_0x06af('0x31')]]={'$like':'%'+_0x5a6520['query'][_0x06af('0x46')]+'%'};return _0xd4101c;}})});}_0x254c17=_[_0x06af('0x47')]({},_0x254c17,_0x5a6520[_0x06af('0x4a')]);var _0x313010={'where':_0x254c17['where']};return db[_0x06af('0x35')][_0x06af('0x26')](_0x313010)[_0x06af('0x17')](function(_0x3910dc){_0x37bd71[_0x06af('0x26')]=_0x3910dc;if(_0x5a6520['query'][_0x06af('0x4b')]){_0x254c17[_0x06af('0x4c')]=[{'all':!![]}];}return db[_0x06af('0x35')][_0x06af('0x4d')](_0x254c17);})[_0x06af('0x17')](function(_0x3ad8d3){_0x37bd71[_0x06af('0x4e')]=_0x3ad8d3;return _0x37bd71;})['then'](respondWithFilteredResult(_0x234612,_0x254c17))['catch'](handleError(_0x234612,null));};exports['show']=function(_0x358677,_0x675922){var _0x573697={'raw':![],'where':{'id':_0x358677[_0x06af('0x4f')]['id']}},_0x1258c0={};_0x1258c0[_0x06af('0x3c')]=_['keys'](db[_0x06af('0x35')][_0x06af('0x36')]);_0x1258c0[_0x06af('0x39')]=_[_0x06af('0x3a')](_0x358677[_0x06af('0x39')]);_0x1258c0['filters']=_[_0x06af('0x3b')](_0x1258c0[_0x06af('0x3c')],_0x1258c0[_0x06af('0x39')]);_0x573697[_0x06af('0x3e')]=_[_0x06af('0x3b')](_0x1258c0[_0x06af('0x3c')],qs[_0x06af('0x3d')](_0x358677[_0x06af('0x39')][_0x06af('0x3d')]));_0x573697[_0x06af('0x3e')]=_0x573697[_0x06af('0x3e')][_0x06af('0x50')]?_0x573697['attributes']:_0x1258c0[_0x06af('0x3c')];if(_0x358677[_0x06af('0x39')][_0x06af('0x4b')]){_0x573697[_0x06af('0x4c')]=[{'all':!![]}];}_0x573697=_[_0x06af('0x47')]({},_0x573697,_0x358677[_0x06af('0x4a')]);return db[_0x06af('0x35')][_0x06af('0x51')](_0x573697)[_0x06af('0x17')](handleEntityNotFound(_0x675922,null))[_0x06af('0x17')](respondWithResult(_0x675922,null))[_0x06af('0x1f')](handleError(_0x675922,null));};exports['create']=function(_0x3ca5f6,_0x21e4d7,_0x358679){var _0x252882;return db[_0x06af('0x35')][_0x06af('0x52')](_0x3ca5f6[_0x06af('0x53')],{'raw':!![]})[_0x06af('0x17')](function(_0x4c93b5){_0x252882=_0x4c93b5;return db['VoiceContext'][_0x06af('0x4d')]({'raw':!![]});})['then'](function(_0x5622a4){var _0x384a2b=fs[_0x06af('0x54')](path[_0x06af('0x55')](config['root'],_0x06af('0x56')),'utf8');var _0x33bb75=ejs[_0x06af('0x57')](_0x384a2b,{'contexts':_0x5622a4||[]});fs[_0x06af('0x58')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x33bb75);})[_0x06af('0x17')](function(){return respondWithRpcPromise(_0x06af('0x59'),_0x06af('0x52'),{'module':_0x06af('0x5a')});})[_0x06af('0x17')](function(){var _0x5569da=_0x3ca5f6[_0x06af('0x5b')][_0x06af('0x2d')]({'plain':!![]});if(!_0x5569da)throw new Error(_0x06af('0x5c'));if(_0x5569da[_0x06af('0x5d')]==='user'){var _0x5f1428=_0x252882[_0x06af('0x2d')]({'plain':!![]});return db[_0x06af('0x5e')][_0x06af('0x51')]({'where':{'name':_0x06af('0x2e'),'userProfileId':_0x5569da['userProfileId']},'raw':!![]})[_0x06af('0x17')](function(_0x500816){if(_0x500816&&_0x500816[_0x06af('0x5f')]===0x0){return db[_0x06af('0x2f')][_0x06af('0x52')]({'name':_0x5f1428[_0x06af('0x31')],'resourceId':_0x5f1428['id'],'type':_0x500816[_0x06af('0x31')],'sectionId':_0x500816['id']},{})[_0x06af('0x17')](function(){return _0x252882;});}else{return _0x252882;}})[_0x06af('0x1f')](function(_0x355689){logger['error'](_0x06af('0x60'),_0x355689);throw _0x355689;});}return _0x252882;})[_0x06af('0x17')](respondWithResult(_0x21e4d7,0xc9))['catch'](handleError(_0x21e4d7,null));};exports[_0x06af('0x2b')]=function(_0x2b8f8c,_0x2a248b,_0x38b07d){var _0x494c46;return db['VoiceContext']['find']({'where':{'id':_0x2b8f8c[_0x06af('0x4f')]['id']}})[_0x06af('0x17')](handleEntityNotFound(_0x2a248b,null))['then'](saveUpdates(_0x2b8f8c[_0x06af('0x53')],null))[_0x06af('0x17')](function(_0x5acbfc){if(_0x5acbfc){_0x494c46=_0x5acbfc;return db[_0x06af('0x35')][_0x06af('0x4d')]({'raw':!![]});}})[_0x06af('0x17')](function(_0x1f1c8b){var _0x9ecb90=fs['readFileSync'](path[_0x06af('0x55')](config['root'],_0x06af('0x56')),_0x06af('0x61'));var _0xf6c260=ejs[_0x06af('0x57')](_0x9ecb90,{'contexts':_0x1f1c8b||[]});fs['writeFileSync'](_0x06af('0x62'),_0xf6c260);})[_0x06af('0x17')](function(){return respondWithRpcPromise('Reload',_0x06af('0x2b'),{'module':_0x06af('0x5a')});})['then'](function(){return _0x494c46;})[_0x06af('0x17')](respondWithResult(_0x2a248b,null))[_0x06af('0x1f')](handleError(_0x2a248b,null));};exports['destroy']=function(_0x4b5d9e,_0x5ade52,_0x57dbb6){var _0x32f489;return db[_0x06af('0x35')][_0x06af('0x51')]({'where':{'id':_0x4b5d9e[_0x06af('0x4f')]['id']}})[_0x06af('0x17')](handleEntityNotFound(_0x5ade52,null))['then'](removeEntity(_0x5ade52,null))[_0x06af('0x17')](function(){return db[_0x06af('0x35')][_0x06af('0x4d')]({'raw':!![]});})[_0x06af('0x17')](function(_0x5628f4){var _0x24b4d1=fs[_0x06af('0x54')](path['join'](config[_0x06af('0x63')],_0x06af('0x56')),_0x06af('0x61'));var _0x3312c3=ejs[_0x06af('0x57')](_0x24b4d1,{'contexts':_0x5628f4});fs[_0x06af('0x58')](_0x06af('0x62'),_0x3312c3);return respondWithRpcPromise(_0x06af('0x59'),'destroy',{'module':_0x06af('0x5a')});})[_0x06af('0x1f')](handleError(_0x5ade52,null));};
\ No newline at end of file
+var _0xc56b=['get','Contexts','UserProfileResource','sendStatus','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','keys','intersection','attributes','fields','query','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','include','VoiceContext','findAll','rows','show','params','includeAll','find','create','readFileSync','root','render','writeFileSync','Reload','chan_sip.so','role','user','UserProfileSection','userProfileId','update','body','join','server/files/templates/context.ejs','/etc/asterisk/extensions_xcally_contexts.conf','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','http','request','info','VoiceContext,\x20%s,\x20%s','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','end','status','offset','count','limit','json','reject','then','destroy'];(function(_0x550d12,_0x5384bd){var _0x12103d=function(_0x2a9834){while(--_0x2a9834){_0x550d12['push'](_0x550d12['shift']());}};_0x12103d(++_0x5384bd);}(_0xc56b,0x107));var _0xbc56=function(_0x2fe910,_0x45eeb7){_0x2fe910=_0x2fe910-0x0;var _0x355c4a=_0xc56b[_0x2fe910];return _0x355c4a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbc56('0x0'));var zipdir=require(_0xbc56('0x1'));var jsonpatch=require(_0xbc56('0x2'));var rp=require(_0xbc56('0x3'));var moment=require('moment');var BPromise=require(_0xbc56('0x4'));var Mustache=require(_0xbc56('0x5'));var util=require('util');var path=require('path');var sox=require(_0xbc56('0x6'));var csv=require(_0xbc56('0x7'));var ejs=require(_0xbc56('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xbc56('0x9'));var squel=require(_0xbc56('0xa'));var crypto=require(_0xbc56('0xb'));var jsforce=require(_0xbc56('0xc'));var deskjs=require(_0xbc56('0xd'));var toCsv=require(_0xbc56('0x7'));var querystring=require('querystring');var Papa=require(_0xbc56('0xe'));var Redis=require(_0xbc56('0xf'));var authService=require(_0xbc56('0x10'));var qs=require(_0xbc56('0x11'));var as=require(_0xbc56('0x12'));var hardwareService=require(_0xbc56('0x13'));var logger=require(_0xbc56('0x14'))(_0xbc56('0x15'));var utils=require(_0xbc56('0x16'));var config=require(_0xbc56('0x17'));var licenseUtil=require(_0xbc56('0x18'));var db=require(_0xbc56('0x19'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xbc56('0x1a')][_0xbc56('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x2d59e1,_0x204672,_0x3c074f,_0x11c1bf){return new BPromise(function(_0xc12d7,_0x4f76f4){var _0x1cf1c0=_0x11c1bf||client;return _0x1cf1c0[_0xbc56('0x1c')](_0x2d59e1,_0x3c074f)['then'](function(_0x68fe9a){logger[_0xbc56('0x1d')](_0xbc56('0x1e'),_0x204672,_0xbc56('0x1f'));logger[_0xbc56('0x20')](_0xbc56('0x21'),_0x204672,_0xbc56('0x1f'),JSON[_0xbc56('0x22')](_0x68fe9a));if(_0x68fe9a[_0xbc56('0x23')]){if(_0x68fe9a['error'][_0xbc56('0x24')]===0x1f4){logger[_0xbc56('0x23')](_0xbc56('0x1e'),_0x204672,_0x68fe9a[_0xbc56('0x23')]['message']);return _0x4f76f4(_0x68fe9a[_0xbc56('0x23')][_0xbc56('0x25')]);}logger[_0xbc56('0x23')]('VoiceContext,\x20%s,\x20%s',_0x204672,_0x68fe9a[_0xbc56('0x23')][_0xbc56('0x25')]);return _0xc12d7(_0x68fe9a[_0xbc56('0x23')]['message']);}else{logger[_0xbc56('0x1d')](_0xbc56('0x1e'),_0x204672,_0xbc56('0x1f'));_0xc12d7(_0x68fe9a[_0xbc56('0x26')][_0xbc56('0x25')]);}})[_0xbc56('0x27')](function(_0x17213a){logger['error'](_0xbc56('0x1e'),_0x204672,_0x17213a);_0x4f76f4(_0x17213a);});});}function respondWithStatusCode(_0x21b497,_0x1aa2e6){_0x1aa2e6=_0x1aa2e6||0xcc;return function(_0x354b9a){if(_0x354b9a){return _0x21b497['sendStatus'](_0x1aa2e6);}return _0x21b497['status'](_0x1aa2e6)[_0xbc56('0x28')]();};}function respondWithResult(_0x3c4476,_0x10c501){_0x10c501=_0x10c501||0xc8;return function(_0x73d34b){if(_0x73d34b){return _0x3c4476[_0xbc56('0x29')](_0x10c501)['json'](_0x73d34b);}};}function respondWithFilteredResult(_0x59dab1,_0x381bcc){return function(_0x97875e){if(_0x97875e){var _0x251b7b=typeof _0x381bcc[_0xbc56('0x2a')]==='undefined'&&typeof _0x381bcc['limit']==='undefined';var _0x317e7e=_0x97875e[_0xbc56('0x2b')];var _0x18938e=_0x251b7b?0x0:_0x381bcc[_0xbc56('0x2a')];var _0xbb3b09=_0x251b7b?_0x97875e[_0xbc56('0x2b')]:_0x381bcc[_0xbc56('0x2a')]+_0x381bcc[_0xbc56('0x2c')];var _0x57b376;if(_0xbb3b09>=_0x317e7e){_0xbb3b09=_0x317e7e;_0x57b376=0xc8;}else{_0x57b376=0xce;}_0x59dab1[_0xbc56('0x29')](_0x57b376);return _0x59dab1['set']('Content-Range',_0x18938e+'-'+_0xbb3b09+'/'+_0x317e7e)[_0xbc56('0x2d')](_0x97875e);}return null;};}function patchUpdates(_0x326a2b){return function(_0x5d7bb6){try{jsonpatch['apply'](_0x5d7bb6,_0x326a2b,!![]);}catch(_0x40806e){return BPromise[_0xbc56('0x2e')](_0x40806e);}return _0x5d7bb6['save']();};}function saveUpdates(_0x106407,_0x4aec89){return function(_0x3a43a9){if(_0x3a43a9){return _0x3a43a9['update'](_0x106407)[_0xbc56('0x2f')](function(_0x51a9ee){return _0x51a9ee;});}return null;};}function removeEntity(_0x1921e5,_0x177c44){return function(_0x22d589){if(_0x22d589){return _0x22d589[_0xbc56('0x30')]()['then'](function(){var _0x772e7c=_0x22d589[_0xbc56('0x31')]({'plain':!![]});var _0x22464a=_0xbc56('0x32');return db[_0xbc56('0x33')][_0xbc56('0x30')]({'where':{'type':_0x22464a,'resourceId':_0x772e7c['id']}})[_0xbc56('0x2f')](function(){return _0x22d589;});})[_0xbc56('0x2f')](function(){_0x1921e5[_0xbc56('0x29')](0xcc)[_0xbc56('0x28')]();});}};}function handleEntityNotFound(_0x1ce05b,_0x420cff){return function(_0x258833){if(!_0x258833){_0x1ce05b[_0xbc56('0x34')](0x194);}return _0x258833;};}function handleError(_0x58e886,_0x111bf8){_0x111bf8=_0x111bf8||0x1f4;return function(_0x4f3ff6){logger['error'](_0x4f3ff6[_0xbc56('0x35')]);if(_0x4f3ff6[_0xbc56('0x36')]){delete _0x4f3ff6[_0xbc56('0x36')];}_0x58e886[_0xbc56('0x29')](_0x111bf8)[_0xbc56('0x37')](_0x4f3ff6);};}exports[_0xbc56('0x38')]=function(_0x68d2b0,_0x46ef34){var _0x428368={},_0x3db198={},_0xb44927={'count':0x0,'rows':[]};var _0x5ad71d=_['map'](db['VoiceContext'][_0xbc56('0x39')],function(_0x5619be){return{'name':_0x5619be[_0xbc56('0x3a')],'type':_0x5619be[_0xbc56('0x3b')][_0xbc56('0x3c')]};});_0x3db198[_0xbc56('0x3d')]=_[_0xbc56('0x3e')](_0x5ad71d,_0xbc56('0x36'));_0x3db198['query']=_[_0xbc56('0x3f')](_0x68d2b0['query']);_0x3db198['filters']=_[_0xbc56('0x40')](_0x3db198[_0xbc56('0x3d')],_0x3db198['query']);_0x428368[_0xbc56('0x41')]=_[_0xbc56('0x40')](_0x3db198['model'],qs[_0xbc56('0x42')](_0x68d2b0[_0xbc56('0x43')][_0xbc56('0x42')]));_0x428368[_0xbc56('0x41')]=_0x428368[_0xbc56('0x41')][_0xbc56('0x44')]?_0x428368[_0xbc56('0x41')]:_0x3db198[_0xbc56('0x3d')];if(!_0x68d2b0[_0xbc56('0x43')][_0xbc56('0x45')](_0xbc56('0x46'))){_0x428368['limit']=qs['limit'](_0x68d2b0[_0xbc56('0x43')]['limit']);_0x428368[_0xbc56('0x2a')]=qs[_0xbc56('0x2a')](_0x68d2b0[_0xbc56('0x43')]['offset']);}_0x428368[_0xbc56('0x47')]=qs[_0xbc56('0x48')](_0x68d2b0[_0xbc56('0x43')][_0xbc56('0x48')]);_0x428368[_0xbc56('0x49')]=qs[_0xbc56('0x4a')](_[_0xbc56('0x4b')](_0x68d2b0[_0xbc56('0x43')],_0x3db198['filters']),_0x5ad71d);if(_0x68d2b0[_0xbc56('0x43')][_0xbc56('0x4c')]){_0x428368[_0xbc56('0x49')]=_['merge'](_0x428368[_0xbc56('0x49')],{'$or':_[_0xbc56('0x3e')](_0x5ad71d,function(_0x3abdfc){if(_0x3abdfc[_0xbc56('0x3b')]!==_0xbc56('0x4d')){var _0x20c275={};_0x20c275[_0x3abdfc[_0xbc56('0x36')]]={'$like':'%'+_0x68d2b0['query']['filter']+'%'};return _0x20c275;}})});}_0x428368=_[_0xbc56('0x4e')]({},_0x428368,_0x68d2b0[_0xbc56('0x4f')]);var _0x18c1b4={'where':_0x428368['where']};return db['VoiceContext'][_0xbc56('0x2b')](_0x18c1b4)[_0xbc56('0x2f')](function(_0x26099f){_0xb44927[_0xbc56('0x2b')]=_0x26099f;if(_0x68d2b0[_0xbc56('0x43')]['includeAll']){_0x428368[_0xbc56('0x50')]=[{'all':!![]}];}return db[_0xbc56('0x51')][_0xbc56('0x52')](_0x428368);})['then'](function(_0x2ffd15){_0xb44927[_0xbc56('0x53')]=_0x2ffd15;return _0xb44927;})[_0xbc56('0x2f')](respondWithFilteredResult(_0x46ef34,_0x428368))[_0xbc56('0x27')](handleError(_0x46ef34,null));};exports[_0xbc56('0x54')]=function(_0x4c85ab,_0x589421){var _0x904ea1={'raw':![],'where':{'id':_0x4c85ab[_0xbc56('0x55')]['id']}},_0x36b1fd={};_0x36b1fd[_0xbc56('0x3d')]=_[_0xbc56('0x3f')](db['VoiceContext']['rawAttributes']);_0x36b1fd[_0xbc56('0x43')]=_[_0xbc56('0x3f')](_0x4c85ab[_0xbc56('0x43')]);_0x36b1fd[_0xbc56('0x4a')]=_['intersection'](_0x36b1fd[_0xbc56('0x3d')],_0x36b1fd[_0xbc56('0x43')]);_0x904ea1[_0xbc56('0x41')]=_['intersection'](_0x36b1fd[_0xbc56('0x3d')],qs[_0xbc56('0x42')](_0x4c85ab[_0xbc56('0x43')][_0xbc56('0x42')]));_0x904ea1['attributes']=_0x904ea1['attributes']['length']?_0x904ea1['attributes']:_0x36b1fd[_0xbc56('0x3d')];if(_0x4c85ab['query'][_0xbc56('0x56')]){_0x904ea1[_0xbc56('0x50')]=[{'all':!![]}];}_0x904ea1=_[_0xbc56('0x4e')]({},_0x904ea1,_0x4c85ab[_0xbc56('0x4f')]);return db['VoiceContext'][_0xbc56('0x57')](_0x904ea1)['then'](handleEntityNotFound(_0x589421,null))[_0xbc56('0x2f')](respondWithResult(_0x589421,null))[_0xbc56('0x27')](handleError(_0x589421,null));};exports['create']=function(_0x118832,_0x4a9ad1,_0x1982a7){var _0x235e3c;return db['VoiceContext'][_0xbc56('0x58')](_0x118832['body'],{'raw':!![]})[_0xbc56('0x2f')](function(_0x51cf51){_0x235e3c=_0x51cf51;return db[_0xbc56('0x51')][_0xbc56('0x52')]({'raw':!![]});})[_0xbc56('0x2f')](function(_0x4f1e1d){var _0x5e8c5b=fs[_0xbc56('0x59')](path['join'](config[_0xbc56('0x5a')],'server/files/templates/context.ejs'),'utf8');var _0x14bb88=ejs[_0xbc56('0x5b')](_0x5e8c5b,{'contexts':_0x4f1e1d||[]});fs[_0xbc56('0x5c')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x14bb88);})[_0xbc56('0x2f')](function(){return respondWithRpcPromise(_0xbc56('0x5d'),'create',{'module':_0xbc56('0x5e')});})['then'](function(){var _0x42e8eb=_0x118832['user'][_0xbc56('0x31')]({'plain':!![]});if(!_0x42e8eb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x42e8eb[_0xbc56('0x5f')]===_0xbc56('0x60')){var _0x5c2aa6=_0x235e3c[_0xbc56('0x31')]({'plain':!![]});return db[_0xbc56('0x61')]['find']({'where':{'name':_0xbc56('0x32'),'userProfileId':_0x42e8eb[_0xbc56('0x62')]},'raw':!![]})['then'](function(_0xdce481){if(_0xdce481&&_0xdce481['autoAssociation']===0x0){return db[_0xbc56('0x33')][_0xbc56('0x58')]({'name':_0x5c2aa6['name'],'resourceId':_0x5c2aa6['id'],'type':_0xdce481['name'],'sectionId':_0xdce481['id']},{})[_0xbc56('0x2f')](function(){return _0x235e3c;});}else{return _0x235e3c;}})[_0xbc56('0x27')](function(_0x26dc7d){logger[_0xbc56('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x26dc7d);throw _0x26dc7d;});}return _0x235e3c;})[_0xbc56('0x2f')](respondWithResult(_0x4a9ad1,0xc9))['catch'](handleError(_0x4a9ad1,null));};exports[_0xbc56('0x63')]=function(_0x471141,_0x5c0e35,_0x332c77){var _0x54ba87;return db[_0xbc56('0x51')][_0xbc56('0x57')]({'where':{'id':_0x471141[_0xbc56('0x55')]['id']}})[_0xbc56('0x2f')](handleEntityNotFound(_0x5c0e35,null))['then'](saveUpdates(_0x471141[_0xbc56('0x64')],null))['then'](function(_0x5db1b1){if(_0x5db1b1){_0x54ba87=_0x5db1b1;return db[_0xbc56('0x51')]['findAll']({'raw':!![]});}})[_0xbc56('0x2f')](function(_0x493493){var _0x3f971b=fs[_0xbc56('0x59')](path[_0xbc56('0x65')](config[_0xbc56('0x5a')],_0xbc56('0x66')),'utf8');var _0x13031b=ejs['render'](_0x3f971b,{'contexts':_0x493493||[]});fs[_0xbc56('0x5c')](_0xbc56('0x67'),_0x13031b);})[_0xbc56('0x2f')](function(){return respondWithRpcPromise(_0xbc56('0x5d'),'update',{'module':'chan_sip.so'});})['then'](function(){return _0x54ba87;})[_0xbc56('0x2f')](respondWithResult(_0x5c0e35,null))[_0xbc56('0x27')](handleError(_0x5c0e35,null));};exports['destroy']=function(_0x5f2f73,_0x466cad,_0x2bead4){var _0x364877;return db['VoiceContext']['find']({'where':{'id':_0x5f2f73[_0xbc56('0x55')]['id']}})[_0xbc56('0x2f')](handleEntityNotFound(_0x466cad,null))[_0xbc56('0x2f')](removeEntity(_0x466cad,null))[_0xbc56('0x2f')](function(){return db[_0xbc56('0x51')][_0xbc56('0x52')]({'raw':!![]});})['then'](function(_0x482d0b){var _0x93c7b3=fs[_0xbc56('0x59')](path[_0xbc56('0x65')](config[_0xbc56('0x5a')],_0xbc56('0x66')),'utf8');var _0x25e1f6=ejs[_0xbc56('0x5b')](_0x93c7b3,{'contexts':_0x482d0b});fs['writeFileSync'](_0xbc56('0x67'),_0x25e1f6);return respondWithRpcPromise(_0xbc56('0x5d'),_0xbc56('0x30'),{'module':_0xbc56('0x5e')});})[_0xbc56('0x27')](handleError(_0x466cad,null));};
\ No newline at end of file
index fae898c..34b38ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeeeb=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceContext.attributes','exports','VoiceContext','voice_contexts','lodash','util','../../config/logger'];(function(_0x3b6d58,_0xb29c70){var _0x64d7dc=function(_0x2ac5e4){while(--_0x2ac5e4){_0x3b6d58['push'](_0x3b6d58['shift']());}};_0x64d7dc(++_0xb29c70);}(_0xeeeb,0x1d9));var _0xbeee=function(_0x246219,_0x3919d8){_0x246219=_0x246219-0x0;var _0x8e2b86=_0xeeeb[_0x246219];return _0x8e2b86;};'use strict';var _=require(_0xbeee('0x0'));var util=require(_0xbeee('0x1'));var logger=require(_0xbeee('0x2'))(_0xbeee('0x3'));var moment=require(_0xbeee('0x4'));var BPromise=require(_0xbeee('0x5'));var rp=require(_0xbeee('0x6'));var fs=require('fs');var path=require(_0xbeee('0x7'));var rimraf=require(_0xbeee('0x8'));var config=require(_0xbeee('0x9'));var attributes=require(_0xbeee('0xa'));module[_0xbeee('0xb')]=function(_0xe5c536,_0x47a187){return _0xe5c536['define'](_0xbeee('0xc'),attributes,{'tableName':_0xbeee('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x076b=['../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./voiceContext.attributes','define','VoiceContext','lodash','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x076b,0x1c1));var _0xb076=function(_0x461207,_0x1f40fd){_0x461207=_0x461207-0x0;var _0x12870d=_0x076b[_0x461207];return _0x12870d;};'use strict';var _=require(_0xb076('0x0'));var util=require(_0xb076('0x1'));var logger=require(_0xb076('0x2'))(_0xb076('0x3'));var moment=require(_0xb076('0x4'));var BPromise=require(_0xb076('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb076('0x6'));var config=require(_0xb076('0x7'));var attributes=require(_0xb076('0x8'));module['exports']=function(_0x5d7e47,_0x53134b){return _0x5d7e47[_0xb076('0x9')](_0xb076('0xa'),attributes,{'tableName':'voice_contexts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c460894..bf6b09b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cf3=['request\x20sent','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceContext,\x20%s,\x20%s'];(function(_0x5da0d9,_0x49ee54){var _0x4b6d2f=function(_0x9832cf){while(--_0x9832cf){_0x5da0d9['push'](_0x5da0d9['shift']());}};_0x4b6d2f(++_0x49ee54);}(_0x1cf3,0x1be));var _0x31cf=function(_0x171a13,_0x301d51){_0x171a13=_0x171a13-0x0;var _0x2554c0=_0x1cf3[_0x171a13];return _0x2554c0;};'use strict';var _=require(_0x31cf('0x0'));var util=require(_0x31cf('0x1'));var moment=require(_0x31cf('0x2'));var BPromise=require(_0x31cf('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x31cf('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x31cf('0x5'));var logger=require(_0x31cf('0x6'))(_0x31cf('0x7'));var config=require(_0x31cf('0x8'));var jayson=require(_0x31cf('0x9'));var client=jayson[_0x31cf('0xa')][_0x31cf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1830b4,_0x2581c4,_0x6be80){return new BPromise(function(_0x3f7b2e,_0x3fa83e){return client[_0x31cf('0xc')](_0x1830b4,_0x6be80)[_0x31cf('0xd')](function(_0x56e8f6){logger[_0x31cf('0xe')](_0x31cf('0xf'),_0x2581c4,_0x31cf('0x10'));logger['debug'](_0x31cf('0x11'),_0x2581c4,_0x31cf('0x10'),JSON[_0x31cf('0x12')](_0x56e8f6));if(_0x56e8f6[_0x31cf('0x13')]){if(_0x56e8f6[_0x31cf('0x13')]['code']===0x1f4){logger['error'](_0x31cf('0xf'),_0x2581c4,_0x56e8f6[_0x31cf('0x13')][_0x31cf('0x14')]);return _0x3fa83e(_0x56e8f6[_0x31cf('0x13')]['message']);}logger[_0x31cf('0x13')](_0x31cf('0xf'),_0x2581c4,_0x56e8f6[_0x31cf('0x13')]['message']);return _0x3f7b2e(_0x56e8f6[_0x31cf('0x13')][_0x31cf('0x14')]);}else{logger[_0x31cf('0xe')](_0x31cf('0xf'),_0x2581c4,'request\x20sent');_0x3f7b2e(_0x56e8f6['result'][_0x31cf('0x14')]);}})[_0x31cf('0x15')](function(_0x2d5532){logger['error'](_0x31cf('0xf'),_0x2581c4,_0x2d5532);_0x3fa83e(_0x2d5532);});});}
\ No newline at end of file
+var _0x936d=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','request\x20sent','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceContext,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0x936d,0x183));var _0xd936=function(_0x231b87,_0x81095b){_0x231b87=_0x231b87-0x0;var _0x666e31=_0x936d[_0x231b87];return _0x666e31;};'use strict';var _=require(_0xd936('0x0'));var util=require(_0xd936('0x1'));var moment=require(_0xd936('0x2'));var BPromise=require(_0xd936('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd936('0x4'));var db=require(_0xd936('0x5'))['db'];var utils=require(_0xd936('0x6'));var logger=require(_0xd936('0x7'))(_0xd936('0x8'));var config=require(_0xd936('0x9'));var jayson=require(_0xd936('0xa'));var client=jayson['client'][_0xd936('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1eac11,_0x24826a,_0x2b758e){return new BPromise(function(_0x53e884,_0x41b155){return client[_0xd936('0xc')](_0x1eac11,_0x2b758e)['then'](function(_0x487777){logger[_0xd936('0xd')]('VoiceContext,\x20%s,\x20%s',_0x24826a,_0xd936('0xe'));logger['debug'](_0xd936('0xf'),_0x24826a,_0xd936('0xe'),JSON[_0xd936('0x10')](_0x487777));if(_0x487777[_0xd936('0x11')]){if(_0x487777[_0xd936('0x11')][_0xd936('0x12')]===0x1f4){logger[_0xd936('0x11')](_0xd936('0x13'),_0x24826a,_0x487777[_0xd936('0x11')][_0xd936('0x14')]);return _0x41b155(_0x487777[_0xd936('0x11')][_0xd936('0x14')]);}logger['error'](_0xd936('0x13'),_0x24826a,_0x487777[_0xd936('0x11')][_0xd936('0x14')]);return _0x53e884(_0x487777['error']['message']);}else{logger['info'](_0xd936('0x13'),_0x24826a,_0xd936('0xe'));_0x53e884(_0x487777[_0xd936('0x15')][_0xd936('0x14')]);}})[_0xd936('0x16')](function(_0x1f56bf){logger[_0xd936('0x11')](_0xd936('0x13'),_0x24826a,_0x1f56bf);_0x41b155(_0x1f56bf);});});}
\ No newline at end of file
index 80b5d49..40f2111 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0da6=['./voiceDialReport.controller','get','/describe','isAuthenticated','describe','show','post','create','put','/:id','update','delete','destroy','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x1399d6,_0x2c1661){var _0x4a9db4=function(_0x4666b8){while(--_0x4666b8){_0x1399d6['push'](_0x1399d6['shift']());}};_0x4a9db4(++_0x2c1661);}(_0x0da6,0x71));var _0x60da=function(_0x1a93a5,_0x13f256){_0x1a93a5=_0x1a93a5-0x0;var _0x4893a2=_0x0da6[_0x1a93a5];return _0x4893a2;};'use strict';var multer=require('multer');var util=require(_0x60da('0x0'));var path=require(_0x60da('0x1'));var timeout=require('connect-timeout');var express=require(_0x60da('0x2'));var router=express['Router']();var fs_extra=require(_0x60da('0x3'));var auth=require(_0x60da('0x4'));var interaction=require(_0x60da('0x5'));var config=require(_0x60da('0x6'));var controller=require(_0x60da('0x7'));router[_0x60da('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x60da('0x8')](_0x60da('0x9'),auth[_0x60da('0xa')](),controller[_0x60da('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x60da('0xc')]);router[_0x60da('0xd')]('/',auth[_0x60da('0xa')](),controller[_0x60da('0xe')]);router[_0x60da('0xf')](_0x60da('0x10'),auth[_0x60da('0xa')](),controller[_0x60da('0x11')]);router[_0x60da('0x12')](_0x60da('0x10'),auth['isAuthenticated'](),controller[_0x60da('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x5dbc=['destroy','exports','multer','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','get','isAuthenticated','index','/describe','/:id','show','post','create','put','delete'];(function(_0x1ae5ab,_0xc5d441){var _0x1ce001=function(_0x5ef96d){while(--_0x5ef96d){_0x1ae5ab['push'](_0x1ae5ab['shift']());}};_0x1ce001(++_0xc5d441);}(_0x5dbc,0x16a));var _0xc5db=function(_0x522634,_0x37a847){_0x522634=_0x522634-0x0;var _0xcf2bc8=_0x5dbc[_0x522634];return _0xcf2bc8;};'use strict';var multer=require(_0xc5db('0x0'));var util=require('util');var path=require(_0xc5db('0x1'));var timeout=require(_0xc5db('0x2'));var express=require(_0xc5db('0x3'));var router=express[_0xc5db('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xc5db('0x5'));var config=require(_0xc5db('0x6'));var controller=require(_0xc5db('0x7'));router[_0xc5db('0x8')]('/',auth[_0xc5db('0x9')](),controller[_0xc5db('0xa')]);router['get'](_0xc5db('0xb'),auth[_0xc5db('0x9')](),controller['describe']);router['get'](_0xc5db('0xc'),auth[_0xc5db('0x9')](),controller[_0xc5db('0xd')]);router[_0xc5db('0xe')]('/',auth[_0xc5db('0x9')](),controller[_0xc5db('0xf')]);router[_0xc5db('0x10')](_0xc5db('0xc'),auth[_0xc5db('0x9')](),controller['update']);router[_0xc5db('0x11')](_0xc5db('0xc'),auth['isAuthenticated'](),controller[_0xc5db('0x12')]);module[_0xc5db('0x13')]=router;
\ No newline at end of file
index b3be46c..869705a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['STRING','INTEGER','DATE','called,connect,complete','sequelize','exports'];(function(_0x2b4d25,_0x5159ad){var _0x212214=function(_0x4dbdcf){while(--_0x4dbdcf){_0x2b4d25['push'](_0x2b4d25['shift']());}};_0x212214(++_0x5159ad);}(_0x00bb,0x1d8));var _0xb00b=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x00bb[_0x6131cd];return _0x47e916;};'use strict';var Sequelize=require(_0xb00b('0x0'));module[_0xb00b('0x1')]={'privilege':{'type':Sequelize[_0xb00b('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0xb00b('0x3')]},'channelstatedesc':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xb00b('0x2')]},'calleridname':{'type':Sequelize[_0xb00b('0x2')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0xb00b('0x2')]},'language':{'type':Sequelize[_0xb00b('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xb00b('0x3')]},'uniqueid':{'type':Sequelize[_0xb00b('0x2')]},'linkedid':{'type':Sequelize[_0xb00b('0x2')]},'destchannel':{'type':Sequelize[_0xb00b('0x2')]},'destchannelstate':{'type':Sequelize[_0xb00b('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0xb00b('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0xb00b('0x2')]},'destconnectedlinename':{'type':Sequelize[_0xb00b('0x2')]},'destlanguage':{'type':Sequelize[_0xb00b('0x2')]},'destaccountcode':{'type':Sequelize[_0xb00b('0x2')]},'destcontext':{'type':Sequelize[_0xb00b('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0xb00b('0x3')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize[_0xb00b('0x2')]},'starttime':{'type':Sequelize[_0xb00b('0x4')]},'answertime':{'type':Sequelize[_0xb00b('0x4')]},'endtime':{'type':Sequelize[_0xb00b('0x4')]},'lastevent':{'type':Sequelize[_0xb00b('0x2')],'comment':_0xb00b('0x5')},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize[_0xb00b('0x3')]},'holdtime':{'type':Sequelize[_0xb00b('0x3')]},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x9957=['INTEGER','DATE','called,connect,complete','sequelize','exports','STRING'];(function(_0x2629b1,_0x4bb89b){var _0x5c2ca7=function(_0x12e1da){while(--_0x12e1da){_0x2629b1['push'](_0x2629b1['shift']());}};_0x5c2ca7(++_0x4bb89b);}(_0x9957,0x93));var _0x7995=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x9957[_0x2dafbe];return _0x58a45a;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'privilege':{'type':Sequelize[_0x7995('0x2')]},'channel':{'type':Sequelize[_0x7995('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x7995('0x2')]},'calleridnum':{'type':Sequelize[_0x7995('0x2')]},'calleridname':{'type':Sequelize[_0x7995('0x2')]},'connectedlinenum':{'type':Sequelize[_0x7995('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x7995('0x2')]},'accountcode':{'type':Sequelize[_0x7995('0x2')]},'context':{'type':Sequelize[_0x7995('0x2')]},'exten':{'type':Sequelize[_0x7995('0x2')]},'priority':{'type':Sequelize[_0x7995('0x3')]},'uniqueid':{'type':Sequelize[_0x7995('0x2')]},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0x7995('0x2')]},'destchannelstate':{'type':Sequelize[_0x7995('0x3')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x7995('0x2')]},'destcalleridname':{'type':Sequelize[_0x7995('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x7995('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x7995('0x2')]},'destlanguage':{'type':Sequelize[_0x7995('0x2')]},'destaccountcode':{'type':Sequelize[_0x7995('0x2')]},'destcontext':{'type':Sequelize[_0x7995('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x7995('0x3')]},'destuniqueid':{'type':Sequelize[_0x7995('0x2')]},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize[_0x7995('0x2')]},'dialstatus':{'type':Sequelize[_0x7995('0x2')]},'starttime':{'type':Sequelize[_0x7995('0x4')]},'answertime':{'type':Sequelize[_0x7995('0x4')]},'endtime':{'type':Sequelize[_0x7995('0x4')]},'lastevent':{'type':Sequelize[_0x7995('0x2')],'comment':_0x7995('0x5')},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize[_0x7995('0x3')]},'billableseconds':{'type':Sequelize[_0x7995('0x3')]}};
\ No newline at end of file
index 207a2b0..41cc89a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2844=['zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','nolimit','limit','sort','pick','merge','where','VIRTUAL','filter','includeAll','include','VoiceDialReport','findAll','rows','catch','show','params','find','create','body','eml-format'];(function(_0x1746e6,_0x1a57da){var _0x1b24a2=function(_0x177782){while(--_0x177782){_0x1746e6['push'](_0x1746e6['shift']());}};_0x1b24a2(++_0x1a57da);}(_0x2844,0xe6));var _0x4284=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x2844[_0x397e5f];return _0x5302b8;};'use strict';var emlformat=require(_0x4284('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4284('0x1'));var jsonpatch=require(_0x4284('0x2'));var rp=require(_0x4284('0x3'));var moment=require(_0x4284('0x4'));var BPromise=require(_0x4284('0x5'));var Mustache=require(_0x4284('0x6'));var util=require(_0x4284('0x7'));var path=require(_0x4284('0x8'));var sox=require(_0x4284('0x9'));var csv=require('to-csv');var ejs=require(_0x4284('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4284('0xb'));var squel=require(_0x4284('0xc'));var crypto=require(_0x4284('0xd'));var jsforce=require(_0x4284('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x4284('0xf'));var querystring=require(_0x4284('0x10'));var Papa=require(_0x4284('0x11'));var Redis=require(_0x4284('0x12'));var authService=require(_0x4284('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x4284('0x14'));var hardwareService=require(_0x4284('0x15'));var logger=require(_0x4284('0x16'))(_0x4284('0x17'));var utils=require(_0x4284('0x18'));var config=require(_0x4284('0x19'));var licenseUtil=require(_0x4284('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3660a3,_0x3bbae0){_0x3bbae0=_0x3bbae0||0xcc;return function(_0x5bce1a){if(_0x5bce1a){return _0x3660a3[_0x4284('0x1b')](_0x3bbae0);}return _0x3660a3['status'](_0x3bbae0)[_0x4284('0x1c')]();};}function respondWithResult(_0x5275cc,_0x2e496a){_0x2e496a=_0x2e496a||0xc8;return function(_0x38a38d){if(_0x38a38d){return _0x5275cc[_0x4284('0x1d')](_0x2e496a)[_0x4284('0x1e')](_0x38a38d);}};}function respondWithFilteredResult(_0x2b1931,_0x5059e2){return function(_0x54a185){if(_0x54a185){var _0x47d1bc=typeof _0x5059e2[_0x4284('0x1f')]===_0x4284('0x20')&&typeof _0x5059e2['limit']===_0x4284('0x20');var _0x1a2374=_0x54a185[_0x4284('0x21')];var _0x40f92f=_0x47d1bc?0x0:_0x5059e2['offset'];var _0x28d82f=_0x47d1bc?_0x54a185[_0x4284('0x21')]:_0x5059e2[_0x4284('0x1f')]+_0x5059e2['limit'];var _0x4b3fb6;if(_0x28d82f>=_0x1a2374){_0x28d82f=_0x1a2374;_0x4b3fb6=0xc8;}else{_0x4b3fb6=0xce;}_0x2b1931[_0x4284('0x1d')](_0x4b3fb6);return _0x2b1931['set'](_0x4284('0x22'),_0x40f92f+'-'+_0x28d82f+'/'+_0x1a2374)[_0x4284('0x1e')](_0x54a185);}return null;};}function patchUpdates(_0x3b60b4){return function(_0x2bdc21){try{jsonpatch[_0x4284('0x23')](_0x2bdc21,_0x3b60b4,!![]);}catch(_0x1b3c1a){return BPromise[_0x4284('0x24')](_0x1b3c1a);}return _0x2bdc21[_0x4284('0x25')]();};}function saveUpdates(_0x151f13,_0x36477d){return function(_0x409528){if(_0x409528){return _0x409528[_0x4284('0x26')](_0x151f13)[_0x4284('0x27')](function(_0xb0ef74){return _0xb0ef74;});}return null;};}function removeEntity(_0x2c7148,_0x4333e9){return function(_0x1dff16){if(_0x1dff16){return _0x1dff16[_0x4284('0x28')]()[_0x4284('0x27')](function(){_0x2c7148['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b219c,_0x3909b0){return function(_0x5830ea){if(!_0x5830ea){_0x3b219c[_0x4284('0x1b')](0x194);}return _0x5830ea;};}function handleError(_0xb80462,_0x579894){_0x579894=_0x579894||0x1f4;return function(_0x1dc37d){logger[_0x4284('0x29')](_0x1dc37d[_0x4284('0x2a')]);if(_0x1dc37d[_0x4284('0x2b')]){delete _0x1dc37d[_0x4284('0x2b')];}_0xb80462['status'](_0x579894)[_0x4284('0x2c')](_0x1dc37d);};}exports['index']=function(_0x31698c,_0xdcf1a4){var _0x39a166={},_0x3f7903={},_0x316c4f={'count':0x0,'rows':[]};var _0x23ab12=_[_0x4284('0x2d')](db['VoiceDialReport'][_0x4284('0x2e')],function(_0x5cf6d7){return{'name':_0x5cf6d7[_0x4284('0x2f')],'type':_0x5cf6d7[_0x4284('0x30')][_0x4284('0x31')]};});_0x3f7903['model']=_[_0x4284('0x2d')](_0x23ab12,'name');_0x3f7903[_0x4284('0x32')]=_[_0x4284('0x33')](_0x31698c[_0x4284('0x32')]);_0x3f7903[_0x4284('0x34')]=_[_0x4284('0x35')](_0x3f7903[_0x4284('0x36')],_0x3f7903[_0x4284('0x32')]);_0x39a166['attributes']=_[_0x4284('0x35')](_0x3f7903[_0x4284('0x36')],qs[_0x4284('0x37')](_0x31698c['query'][_0x4284('0x37')]));_0x39a166[_0x4284('0x38')]=_0x39a166[_0x4284('0x38')][_0x4284('0x39')]?_0x39a166['attributes']:_0x3f7903[_0x4284('0x36')];if(!_0x31698c[_0x4284('0x32')]['hasOwnProperty'](_0x4284('0x3a'))){_0x39a166[_0x4284('0x3b')]=qs['limit'](_0x31698c['query']['limit']);_0x39a166['offset']=qs['offset'](_0x31698c[_0x4284('0x32')][_0x4284('0x1f')]);}_0x39a166['order']=qs[_0x4284('0x3c')](_0x31698c[_0x4284('0x32')][_0x4284('0x3c')]);_0x39a166['where']=qs[_0x4284('0x34')](_[_0x4284('0x3d')](_0x31698c[_0x4284('0x32')],_0x3f7903[_0x4284('0x34')]),_0x23ab12);if(_0x31698c['query']['filter']){_0x39a166['where']=_[_0x4284('0x3e')](_0x39a166[_0x4284('0x3f')],{'$or':_['map'](_0x23ab12,function(_0x2e446c){if(_0x2e446c[_0x4284('0x30')]!==_0x4284('0x40')){var _0x446d39={};_0x446d39[_0x2e446c[_0x4284('0x2b')]]={'$like':'%'+_0x31698c['query'][_0x4284('0x41')]+'%'};return _0x446d39;}})});}_0x39a166=_['merge']({},_0x39a166,_0x31698c['options']);var _0x359521={'where':_0x39a166[_0x4284('0x3f')]};return db['VoiceDialReport'][_0x4284('0x21')](_0x359521)[_0x4284('0x27')](function(_0x5d2887){_0x316c4f[_0x4284('0x21')]=_0x5d2887;if(_0x31698c['query'][_0x4284('0x42')]){_0x39a166[_0x4284('0x43')]=[{'all':!![]}];}return db[_0x4284('0x44')][_0x4284('0x45')](_0x39a166);})[_0x4284('0x27')](function(_0x59446d){_0x316c4f[_0x4284('0x46')]=_0x59446d;return _0x316c4f;})[_0x4284('0x27')](respondWithFilteredResult(_0xdcf1a4,_0x39a166))[_0x4284('0x47')](handleError(_0xdcf1a4,null));};exports[_0x4284('0x48')]=function(_0x1384e1,_0x1f9885){var _0x230b0a={'raw':!![],'where':{'id':_0x1384e1[_0x4284('0x49')]['id']}},_0x5d9736={};_0x5d9736['model']=_[_0x4284('0x33')](db[_0x4284('0x44')][_0x4284('0x2e')]);_0x5d9736[_0x4284('0x32')]=_[_0x4284('0x33')](_0x1384e1[_0x4284('0x32')]);_0x5d9736[_0x4284('0x34')]=_['intersection'](_0x5d9736[_0x4284('0x36')],_0x5d9736[_0x4284('0x32')]);_0x230b0a['attributes']=_[_0x4284('0x35')](_0x5d9736[_0x4284('0x36')],qs[_0x4284('0x37')](_0x1384e1['query'][_0x4284('0x37')]));_0x230b0a[_0x4284('0x38')]=_0x230b0a['attributes']['length']?_0x230b0a['attributes']:_0x5d9736[_0x4284('0x36')];if(_0x1384e1[_0x4284('0x32')]['includeAll']){_0x230b0a['include']=[{'all':!![]}];}_0x230b0a=_[_0x4284('0x3e')]({},_0x230b0a,_0x1384e1['options']);return db[_0x4284('0x44')][_0x4284('0x4a')](_0x230b0a)[_0x4284('0x27')](handleEntityNotFound(_0x1f9885,null))[_0x4284('0x27')](respondWithResult(_0x1f9885,null))[_0x4284('0x47')](handleError(_0x1f9885,null));};exports[_0x4284('0x4b')]=function(_0x25b55e,_0x395180){return db[_0x4284('0x44')][_0x4284('0x4b')](_0x25b55e[_0x4284('0x4c')],{})[_0x4284('0x27')](respondWithResult(_0x395180,0xc9))[_0x4284('0x47')](handleError(_0x395180,null));};exports[_0x4284('0x26')]=function(_0x26a122,_0x53b1b1){if(_0x26a122[_0x4284('0x4c')]['id']){delete _0x26a122[_0x4284('0x4c')]['id'];}return db[_0x4284('0x44')][_0x4284('0x4a')]({'where':{'id':_0x26a122[_0x4284('0x49')]['id']}})[_0x4284('0x27')](handleEntityNotFound(_0x53b1b1,null))[_0x4284('0x27')](saveUpdates(_0x26a122['body'],null))['then'](respondWithResult(_0x53b1b1,null))[_0x4284('0x47')](handleError(_0x53b1b1,null));};exports['destroy']=function(_0x18f2e1,_0x2fd0d1){return db['VoiceDialReport'][_0x4284('0x4a')]({'where':{'id':_0x18f2e1['params']['id']}})[_0x4284('0x27')](handleEntityNotFound(_0x2fd0d1,null))[_0x4284('0x27')](removeEntity(_0x2fd0d1,null))['catch'](handleError(_0x2fd0d1,null));};exports['describe']=function(_0x4400e5,_0x397080){return db[_0x4284('0x44')]['describe']()[_0x4284('0x27')](respondWithResult(_0x397080,null))[_0x4284('0x47')](handleError(_0x397080,null));};
\ No newline at end of file
+var _0xd157=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','end','name','send','index','rawAttributes','fieldName','model','map','query','filters','intersection','attributes','fields','length','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','VoiceDialReport','findAll','then','catch','show','params','keys','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse'];(function(_0xd0a847,_0x72562b){var _0x2536ec=function(_0x20e4db){while(--_0x20e4db){_0xd0a847['push'](_0xd0a847['shift']());}};_0x2536ec(++_0x72562b);}(_0xd157,0x10f));var _0x7d15=function(_0xbd3d77,_0x4c1a75){_0xbd3d77=_0xbd3d77-0x0;var _0x24f1d9=_0xd157[_0xbd3d77];return _0x24f1d9;};'use strict';var emlformat=require(_0x7d15('0x0'));var rimraf=require(_0x7d15('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7d15('0x2'));var rp=require(_0x7d15('0x3'));var moment=require(_0x7d15('0x4'));var BPromise=require(_0x7d15('0x5'));var Mustache=require('mustache');var util=require(_0x7d15('0x6'));var path=require(_0x7d15('0x7'));var sox=require(_0x7d15('0x8'));var csv=require(_0x7d15('0x9'));var ejs=require(_0x7d15('0xa'));var fs=require('fs');var fs_extra=require(_0x7d15('0xb'));var _=require('lodash');var squel=require(_0x7d15('0xc'));var crypto=require(_0x7d15('0xd'));var jsforce=require(_0x7d15('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7d15('0x9'));var querystring=require(_0x7d15('0xf'));var Papa=require(_0x7d15('0x10'));var Redis=require(_0x7d15('0x11'));var authService=require(_0x7d15('0x12'));var qs=require(_0x7d15('0x13'));var as=require(_0x7d15('0x14'));var hardwareService=require(_0x7d15('0x15'));var logger=require(_0x7d15('0x16'))('api');var utils=require(_0x7d15('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x7d15('0x18'));var db=require(_0x7d15('0x19'))['db'];function respondWithStatusCode(_0x42f72c,_0x3cd0a5){_0x3cd0a5=_0x3cd0a5||0xcc;return function(_0x41d2ef){if(_0x41d2ef){return _0x42f72c[_0x7d15('0x1a')](_0x3cd0a5);}return _0x42f72c['status'](_0x3cd0a5)['end']();};}function respondWithResult(_0x2aa8da,_0x55dea2){_0x55dea2=_0x55dea2||0xc8;return function(_0x4c48e7){if(_0x4c48e7){return _0x2aa8da[_0x7d15('0x1b')](_0x55dea2)['json'](_0x4c48e7);}};}function respondWithFilteredResult(_0x2255fa,_0x4cbd18){return function(_0x24cf77){if(_0x24cf77){var _0xa06b92=typeof _0x4cbd18[_0x7d15('0x1c')]===_0x7d15('0x1d')&&typeof _0x4cbd18[_0x7d15('0x1e')]==='undefined';var _0x2262b2=_0x24cf77[_0x7d15('0x1f')];var _0x4c1df6=_0xa06b92?0x0:_0x4cbd18['offset'];var _0x5ee924=_0xa06b92?_0x24cf77['count']:_0x4cbd18['offset']+_0x4cbd18[_0x7d15('0x1e')];var _0x44bc8b;if(_0x5ee924>=_0x2262b2){_0x5ee924=_0x2262b2;_0x44bc8b=0xc8;}else{_0x44bc8b=0xce;}_0x2255fa[_0x7d15('0x1b')](_0x44bc8b);return _0x2255fa[_0x7d15('0x20')](_0x7d15('0x21'),_0x4c1df6+'-'+_0x5ee924+'/'+_0x2262b2)['json'](_0x24cf77);}return null;};}function patchUpdates(_0x4e0c0b){return function(_0x16f702){try{jsonpatch[_0x7d15('0x22')](_0x16f702,_0x4e0c0b,!![]);}catch(_0xd2180d){return BPromise[_0x7d15('0x23')](_0xd2180d);}return _0x16f702[_0x7d15('0x24')]();};}function saveUpdates(_0x5c5018,_0x382904){return function(_0x230beb){if(_0x230beb){return _0x230beb[_0x7d15('0x25')](_0x5c5018)['then'](function(_0x3577e1){return _0x3577e1;});}return null;};}function removeEntity(_0x304c28,_0x5e7cb6){return function(_0x58432b){if(_0x58432b){return _0x58432b[_0x7d15('0x26')]()['then'](function(){_0x304c28['status'](0xcc)[_0x7d15('0x27')]();});}};}function handleEntityNotFound(_0x53702d,_0x2138f2){return function(_0x1448d6){if(!_0x1448d6){_0x53702d[_0x7d15('0x1a')](0x194);}return _0x1448d6;};}function handleError(_0x189b58,_0x28c5a7){_0x28c5a7=_0x28c5a7||0x1f4;return function(_0x2ba140){logger['error'](_0x2ba140['stack']);if(_0x2ba140[_0x7d15('0x28')]){delete _0x2ba140[_0x7d15('0x28')];}_0x189b58['status'](_0x28c5a7)[_0x7d15('0x29')](_0x2ba140);};}exports[_0x7d15('0x2a')]=function(_0x19a159,_0x1247ef){var _0x149e6c={},_0x106797={},_0x1c7bf9={'count':0x0,'rows':[]};var _0x314900=_['map'](db['VoiceDialReport'][_0x7d15('0x2b')],function(_0x1ed730){return{'name':_0x1ed730[_0x7d15('0x2c')],'type':_0x1ed730['type']['key']};});_0x106797[_0x7d15('0x2d')]=_[_0x7d15('0x2e')](_0x314900,_0x7d15('0x28'));_0x106797[_0x7d15('0x2f')]=_['keys'](_0x19a159[_0x7d15('0x2f')]);_0x106797[_0x7d15('0x30')]=_[_0x7d15('0x31')](_0x106797['model'],_0x106797[_0x7d15('0x2f')]);_0x149e6c[_0x7d15('0x32')]=_[_0x7d15('0x31')](_0x106797[_0x7d15('0x2d')],qs['fields'](_0x19a159[_0x7d15('0x2f')][_0x7d15('0x33')]));_0x149e6c[_0x7d15('0x32')]=_0x149e6c[_0x7d15('0x32')][_0x7d15('0x34')]?_0x149e6c[_0x7d15('0x32')]:_0x106797[_0x7d15('0x2d')];if(!_0x19a159[_0x7d15('0x2f')]['hasOwnProperty'](_0x7d15('0x35'))){_0x149e6c[_0x7d15('0x1e')]=qs[_0x7d15('0x1e')](_0x19a159[_0x7d15('0x2f')][_0x7d15('0x1e')]);_0x149e6c[_0x7d15('0x1c')]=qs[_0x7d15('0x1c')](_0x19a159[_0x7d15('0x2f')][_0x7d15('0x1c')]);}_0x149e6c['order']=qs[_0x7d15('0x36')](_0x19a159[_0x7d15('0x2f')][_0x7d15('0x36')]);_0x149e6c['where']=qs[_0x7d15('0x30')](_[_0x7d15('0x37')](_0x19a159[_0x7d15('0x2f')],_0x106797[_0x7d15('0x30')]),_0x314900);if(_0x19a159[_0x7d15('0x2f')][_0x7d15('0x38')]){_0x149e6c[_0x7d15('0x39')]=_[_0x7d15('0x3a')](_0x149e6c[_0x7d15('0x39')],{'$or':_[_0x7d15('0x2e')](_0x314900,function(_0x1bc000){if(_0x1bc000['type']!==_0x7d15('0x3b')){var _0x18aaa4={};_0x18aaa4[_0x1bc000[_0x7d15('0x28')]]={'$like':'%'+_0x19a159[_0x7d15('0x2f')][_0x7d15('0x38')]+'%'};return _0x18aaa4;}})});}_0x149e6c=_[_0x7d15('0x3a')]({},_0x149e6c,_0x19a159[_0x7d15('0x3c')]);var _0xd7662={'where':_0x149e6c[_0x7d15('0x39')]};return db[_0x7d15('0x3d')][_0x7d15('0x1f')](_0xd7662)['then'](function(_0x33344d){_0x1c7bf9[_0x7d15('0x1f')]=_0x33344d;if(_0x19a159[_0x7d15('0x2f')]['includeAll']){_0x149e6c['include']=[{'all':!![]}];}return db[_0x7d15('0x3d')][_0x7d15('0x3e')](_0x149e6c);})[_0x7d15('0x3f')](function(_0x2cd68b){_0x1c7bf9['rows']=_0x2cd68b;return _0x1c7bf9;})[_0x7d15('0x3f')](respondWithFilteredResult(_0x1247ef,_0x149e6c))[_0x7d15('0x40')](handleError(_0x1247ef,null));};exports[_0x7d15('0x41')]=function(_0x497544,_0x54e1f5){var _0x2c5dc9={'raw':!![],'where':{'id':_0x497544[_0x7d15('0x42')]['id']}},_0xa3306a={};_0xa3306a[_0x7d15('0x2d')]=_[_0x7d15('0x43')](db[_0x7d15('0x3d')][_0x7d15('0x2b')]);_0xa3306a[_0x7d15('0x2f')]=_[_0x7d15('0x43')](_0x497544[_0x7d15('0x2f')]);_0xa3306a[_0x7d15('0x30')]=_[_0x7d15('0x31')](_0xa3306a[_0x7d15('0x2d')],_0xa3306a['query']);_0x2c5dc9[_0x7d15('0x32')]=_[_0x7d15('0x31')](_0xa3306a[_0x7d15('0x2d')],qs['fields'](_0x497544[_0x7d15('0x2f')][_0x7d15('0x33')]));_0x2c5dc9[_0x7d15('0x32')]=_0x2c5dc9[_0x7d15('0x32')][_0x7d15('0x34')]?_0x2c5dc9[_0x7d15('0x32')]:_0xa3306a[_0x7d15('0x2d')];if(_0x497544['query']['includeAll']){_0x2c5dc9['include']=[{'all':!![]}];}_0x2c5dc9=_['merge']({},_0x2c5dc9,_0x497544[_0x7d15('0x3c')]);return db[_0x7d15('0x3d')][_0x7d15('0x44')](_0x2c5dc9)[_0x7d15('0x3f')](handleEntityNotFound(_0x54e1f5,null))[_0x7d15('0x3f')](respondWithResult(_0x54e1f5,null))[_0x7d15('0x40')](handleError(_0x54e1f5,null));};exports[_0x7d15('0x45')]=function(_0x5df970,_0x2c8e45){return db[_0x7d15('0x3d')][_0x7d15('0x45')](_0x5df970[_0x7d15('0x46')],{})[_0x7d15('0x3f')](respondWithResult(_0x2c8e45,0xc9))['catch'](handleError(_0x2c8e45,null));};exports[_0x7d15('0x25')]=function(_0x30145b,_0x4ae908){if(_0x30145b[_0x7d15('0x46')]['id']){delete _0x30145b[_0x7d15('0x46')]['id'];}return db[_0x7d15('0x3d')][_0x7d15('0x44')]({'where':{'id':_0x30145b[_0x7d15('0x42')]['id']}})['then'](handleEntityNotFound(_0x4ae908,null))['then'](saveUpdates(_0x30145b[_0x7d15('0x46')],null))[_0x7d15('0x3f')](respondWithResult(_0x4ae908,null))[_0x7d15('0x40')](handleError(_0x4ae908,null));};exports[_0x7d15('0x26')]=function(_0x4d20eb,_0x4ca083){return db[_0x7d15('0x3d')][_0x7d15('0x44')]({'where':{'id':_0x4d20eb['params']['id']}})[_0x7d15('0x3f')](handleEntityNotFound(_0x4ca083,null))[_0x7d15('0x3f')](removeEntity(_0x4ca083,null))[_0x7d15('0x40')](handleError(_0x4ca083,null));};exports['describe']=function(_0x2d472d,_0x55f377){return db[_0x7d15('0x3d')][_0x7d15('0x47')]()[_0x7d15('0x3f')](respondWithResult(_0x55f377,null))['catch'](handleError(_0x55f377,null));};
\ No newline at end of file
index 3ec1d54..695f3fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcebf=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports','define','VoiceDialReport','report_dial','uniqueid'];(function(_0x529c32,_0xfd26ac){var _0x26f092=function(_0x455610){while(--_0x455610){_0x529c32['push'](_0x529c32['shift']());}};_0x26f092(++_0xfd26ac);}(_0xcebf,0x1a0));var _0xfceb=function(_0x4be0c4,_0xbe9e61){_0x4be0c4=_0x4be0c4-0x0;var _0x2aa443=_0xcebf[_0x4be0c4];return _0x2aa443;};'use strict';var _=require('lodash');var util=require(_0xfceb('0x0'));var logger=require(_0xfceb('0x1'))(_0xfceb('0x2'));var moment=require(_0xfceb('0x3'));var BPromise=require(_0xfceb('0x4'));var rp=require(_0xfceb('0x5'));var fs=require('fs');var path=require(_0xfceb('0x6'));var rimraf=require(_0xfceb('0x7'));var config=require('../../config/environment');var attributes=require('./voiceDialReport.attributes');module[_0xfceb('0x8')]=function(_0x7cd28d,_0x54b077){return _0x7cd28d[_0xfceb('0x9')](_0xfceb('0xa'),attributes,{'tableName':_0xfceb('0xb'),'paranoid':![],'indexes':[{'fields':[_0xfceb('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x21a8=['define','VoiceDialReport','report_dial','uniqueid','lodash','util','api','bluebird','request-promise','path','rimraf','./voiceDialReport.attributes','exports'];(function(_0x4afe76,_0xcbcfad){var _0x17d56d=function(_0x4797fa){while(--_0x4797fa){_0x4afe76['push'](_0x4afe76['shift']());}};_0x17d56d(++_0xcbcfad);}(_0x21a8,0x1e5));var _0x821a=function(_0x496d67,_0x7a9b7e){_0x496d67=_0x496d67-0x0;var _0x12c53a=_0x21a8[_0x496d67];return _0x12c53a;};'use strict';var _=require(_0x821a('0x0'));var util=require(_0x821a('0x1'));var logger=require('../../config/logger')(_0x821a('0x2'));var moment=require('moment');var BPromise=require(_0x821a('0x3'));var rp=require(_0x821a('0x4'));var fs=require('fs');var path=require(_0x821a('0x5'));var rimraf=require(_0x821a('0x6'));var config=require('../../config/environment');var attributes=require(_0x821a('0x7'));module[_0x821a('0x8')]=function(_0x4f3328,_0x2da6d2){return _0x4f3328[_0x821a('0x9')](_0x821a('0xa'),attributes,{'tableName':_0x821a('0xb'),'paranoid':![],'indexes':[{'fields':[_0x821a('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index b3b9565..df08473 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x172b=['catch','CreateVoiceDialReport','VoiceDialReport','create','body','options','raw','then','where','attributes','limit','UpdateVoiceDialReport','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','VoiceDialReport,\x20%s,\x20%s','message','result'];(function(_0x4fb854,_0x5675c5){var _0x269fea=function(_0x34efbb){while(--_0x34efbb){_0x4fb854['push'](_0x4fb854['shift']());}};_0x269fea(++_0x5675c5);}(_0x172b,0xfa));var _0xb172=function(_0x57b55c,_0x1e2ec5){_0x57b55c=_0x57b55c-0x0;var _0x1e80e7=_0x172b[_0x57b55c];return _0x1e80e7;};'use strict';var _=require(_0xb172('0x0'));var util=require('util');var moment=require(_0xb172('0x1'));var BPromise=require(_0xb172('0x2'));var rs=require(_0xb172('0x3'));var fs=require('fs');var Redis=require(_0xb172('0x4'));var db=require(_0xb172('0x5'))['db'];var utils=require(_0xb172('0x6'));var logger=require(_0xb172('0x7'))('rpc');var config=require(_0xb172('0x8'));var jayson=require(_0xb172('0x9'));var client=jayson[_0xb172('0xa')][_0xb172('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3fd4b9,_0x46b195,_0x55d336){return new BPromise(function(_0x29299f,_0x2687d4){return client[_0xb172('0xc')](_0x3fd4b9,_0x55d336)['then'](function(_0x78c08e){logger[_0xb172('0xd')]('VoiceDialReport,\x20%s,\x20%s',_0x46b195,_0xb172('0xe'));logger[_0xb172('0xf')](_0xb172('0x10'),_0x46b195,'request\x20sent',JSON[_0xb172('0x11')](_0x78c08e));if(_0x78c08e['error']){if(_0x78c08e[_0xb172('0x12')]['code']===0x1f4){logger['error'](_0xb172('0x13'),_0x46b195,_0x78c08e[_0xb172('0x12')][_0xb172('0x14')]);return _0x2687d4(_0x78c08e[_0xb172('0x12')][_0xb172('0x14')]);}logger[_0xb172('0x12')](_0xb172('0x13'),_0x46b195,_0x78c08e['error']['message']);return _0x29299f(_0x78c08e[_0xb172('0x12')]['message']);}else{logger[_0xb172('0xd')](_0xb172('0x13'),_0x46b195,_0xb172('0xe'));_0x29299f(_0x78c08e[_0xb172('0x15')][_0xb172('0x14')]);}})[_0xb172('0x16')](function(_0x2eb118){logger['error'](_0xb172('0x13'),_0x46b195,_0x2eb118);_0x2687d4(_0x2eb118);});});}exports[_0xb172('0x17')]=function(_0x2b5bf7){var _0x250f74=this;return new Promise(function(_0x53a041,_0x53d820){return db[_0xb172('0x18')][_0xb172('0x19')](_0x2b5bf7[_0xb172('0x1a')],{'raw':_0x2b5bf7[_0xb172('0x1b')]?_0x2b5bf7['options'][_0xb172('0x1c')]===undefined?!![]:![]:!![]})[_0xb172('0x1d')](function(_0x2af75a){logger[_0xb172('0xd')](_0xb172('0x17'),_0x2b5bf7);logger['debug']('CreateVoiceDialReport',_0x2b5bf7,JSON['stringify'](_0x2af75a));_0x53a041(_0x2af75a);})[_0xb172('0x16')](function(_0x4eafd0){logger['error']('CreateVoiceDialReport',_0x4eafd0[_0xb172('0x14')],_0x2b5bf7);_0x53d820(_0x250f74[_0xb172('0x12')](0x1f4,_0x4eafd0['message']));});});};exports['UpdateVoiceDialReport']=function(_0x1d9680){var _0x12987e=this;return new Promise(function(_0x19de6e,_0x1cea6a){return db[_0xb172('0x18')]['update'](_0x1d9680[_0xb172('0x1a')],{'raw':_0x1d9680[_0xb172('0x1b')]?_0x1d9680[_0xb172('0x1b')][_0xb172('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1d9680['options']?_0x1d9680[_0xb172('0x1b')][_0xb172('0x1e')]||null:null,'attributes':_0x1d9680['options']?_0x1d9680[_0xb172('0x1b')][_0xb172('0x1f')]||null:null,'limit':_0x1d9680[_0xb172('0x1b')]?_0x1d9680[_0xb172('0x1b')][_0xb172('0x20')]||null:null})['then'](function(_0x42b778){logger[_0xb172('0xd')](_0xb172('0x21'),_0x1d9680);logger[_0xb172('0xf')](_0xb172('0x21'),_0x1d9680,JSON[_0xb172('0x11')](_0x42b778));_0x19de6e(_0x42b778);})[_0xb172('0x16')](function(_0x49b72f){logger['error'](_0xb172('0x21'),_0x49b72f['message'],_0x1d9680);_0x1cea6a(_0x12987e[_0xb172('0x12')](0x1f4,_0x49b72f[_0xb172('0x14')]));});});};
\ No newline at end of file
+var _0xa528=['where','limit','UpdateVoiceDialReport','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','http','request','then','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateVoiceDialReport','create','body','options','debug','VoiceDialReport','update','raw'];(function(_0xb71e38,_0x1cddc7){var _0x48411c=function(_0x4701b6){while(--_0x4701b6){_0xb71e38['push'](_0xb71e38['shift']());}};_0x48411c(++_0x1cddc7);}(_0xa528,0xd5));var _0x8a52=function(_0x14ec75,_0x56a3d4){_0x14ec75=_0x14ec75-0x0;var _0x40b9e9=_0xa528[_0x14ec75];return _0x40b9e9;};'use strict';var _=require(_0x8a52('0x0'));var util=require('util');var moment=require(_0x8a52('0x1'));var BPromise=require('bluebird');var rs=require(_0x8a52('0x2'));var fs=require('fs');var Redis=require(_0x8a52('0x3'));var db=require(_0x8a52('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x8a52('0x5'))(_0x8a52('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x8a52('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x2d569a,_0x2213be,_0x2d2ea4){return new BPromise(function(_0x546176,_0x13d70a){return client[_0x8a52('0x8')](_0x2d569a,_0x2d2ea4)[_0x8a52('0x9')](function(_0x3409c2){logger[_0x8a52('0xa')](_0x8a52('0xb'),_0x2213be,_0x8a52('0xc'));logger['debug'](_0x8a52('0xd'),_0x2213be,'request\x20sent',JSON[_0x8a52('0xe')](_0x3409c2));if(_0x3409c2[_0x8a52('0xf')]){if(_0x3409c2['error'][_0x8a52('0x10')]===0x1f4){logger[_0x8a52('0xf')](_0x8a52('0xb'),_0x2213be,_0x3409c2[_0x8a52('0xf')][_0x8a52('0x11')]);return _0x13d70a(_0x3409c2['error'][_0x8a52('0x11')]);}logger['error'](_0x8a52('0xb'),_0x2213be,_0x3409c2[_0x8a52('0xf')][_0x8a52('0x11')]);return _0x546176(_0x3409c2['error'][_0x8a52('0x11')]);}else{logger[_0x8a52('0xa')]('VoiceDialReport,\x20%s,\x20%s',_0x2213be,_0x8a52('0xc'));_0x546176(_0x3409c2['result']['message']);}})[_0x8a52('0x12')](function(_0x31a118){logger[_0x8a52('0xf')](_0x8a52('0xb'),_0x2213be,_0x31a118);_0x13d70a(_0x31a118);});});}exports[_0x8a52('0x13')]=function(_0x5c6ea2){var _0x2ddd8c=this;return new Promise(function(_0x404374,_0x1a0386){return db['VoiceDialReport'][_0x8a52('0x14')](_0x5c6ea2[_0x8a52('0x15')],{'raw':_0x5c6ea2[_0x8a52('0x16')]?_0x5c6ea2[_0x8a52('0x16')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x3826e8){logger[_0x8a52('0xa')](_0x8a52('0x13'),_0x5c6ea2);logger[_0x8a52('0x17')](_0x8a52('0x13'),_0x5c6ea2,JSON[_0x8a52('0xe')](_0x3826e8));_0x404374(_0x3826e8);})['catch'](function(_0x4e5a5c){logger[_0x8a52('0xf')](_0x8a52('0x13'),_0x4e5a5c[_0x8a52('0x11')],_0x5c6ea2);_0x1a0386(_0x2ddd8c[_0x8a52('0xf')](0x1f4,_0x4e5a5c[_0x8a52('0x11')]));});});};exports['UpdateVoiceDialReport']=function(_0x3ef402){var _0x348bac=this;return new Promise(function(_0x119fcb,_0x5c7afe){return db[_0x8a52('0x18')][_0x8a52('0x19')](_0x3ef402['body'],{'raw':_0x3ef402[_0x8a52('0x16')]?_0x3ef402[_0x8a52('0x16')][_0x8a52('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3ef402[_0x8a52('0x16')]?_0x3ef402[_0x8a52('0x16')][_0x8a52('0x1b')]||null:null,'attributes':_0x3ef402[_0x8a52('0x16')]?_0x3ef402[_0x8a52('0x16')]['attributes']||null:null,'limit':_0x3ef402[_0x8a52('0x16')]?_0x3ef402[_0x8a52('0x16')][_0x8a52('0x1c')]||null:null})['then'](function(_0x148ff5){logger['info'](_0x8a52('0x1d'),_0x3ef402);logger[_0x8a52('0x17')](_0x8a52('0x1d'),_0x3ef402,JSON[_0x8a52('0xe')](_0x148ff5));_0x119fcb(_0x148ff5);})[_0x8a52('0x12')](function(_0x4436b9){logger[_0x8a52('0xf')](_0x8a52('0x1d'),_0x4436b9['message'],_0x3ef402);_0x5c7afe(_0x348bac['error'](0x1f4,_0x4436b9[_0x8a52('0x11')]));});});};
\ No newline at end of file
index 2bc01bc..2097030 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee10=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','isAuthenticated','/:id','post','create','addApplications','update','delete','destroy','multer','util','path','express','fs-extra'];(function(_0x1a7783,_0x3ffac4){var _0x5dfbd9=function(_0x4bc4c9){while(--_0x4bc4c9){_0x1a7783['push'](_0x1a7783['shift']());}};_0x5dfbd9(++_0x3ffac4);}(_0xee10,0x151));var _0x0ee1=function(_0xcc683b,_0x1682e6){_0xcc683b=_0xcc683b-0x0;var _0x279201=_0xee10[_0xcc683b];return _0x279201;};'use strict';var multer=require(_0x0ee1('0x0'));var util=require(_0x0ee1('0x1'));var path=require(_0x0ee1('0x2'));var timeout=require('connect-timeout');var express=require(_0x0ee1('0x3'));var router=express['Router']();var fs_extra=require(_0x0ee1('0x4'));var auth=require(_0x0ee1('0x5'));var interaction=require(_0x0ee1('0x6'));var config=require(_0x0ee1('0x7'));var controller=require(_0x0ee1('0x8'));router[_0x0ee1('0x9')]('/',auth[_0x0ee1('0xa')](),controller['index']);router['get'](_0x0ee1('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x0ee1('0xc')]('/',auth[_0x0ee1('0xa')](),controller[_0x0ee1('0xd')]);router[_0x0ee1('0xc')]('/:id/applications',auth[_0x0ee1('0xa')](),controller[_0x0ee1('0xe')]);router['put'](_0x0ee1('0xb'),auth['isAuthenticated'](),controller[_0x0ee1('0xf')]);router[_0x0ee1('0x10')](_0x0ee1('0xb'),auth[_0x0ee1('0xa')](),controller[_0x0ee1('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x4764=['isAuthenticated','create','/:id/applications','addApplications','put','/:id','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./voiceExtension.controller','get','show'];(function(_0x3c504b,_0x437693){var _0x2e5354=function(_0x456709){while(--_0x456709){_0x3c504b['push'](_0x3c504b['shift']());}};_0x2e5354(++_0x437693);}(_0x4764,0x122));var _0x4476=function(_0x2bd4d7,_0x234cee){_0x2bd4d7=_0x2bd4d7-0x0;var _0x59adee=_0x4764[_0x2bd4d7];return _0x59adee;};'use strict';var multer=require('multer');var util=require(_0x4476('0x0'));var path=require(_0x4476('0x1'));var timeout=require(_0x4476('0x2'));var express=require(_0x4476('0x3'));var router=express[_0x4476('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x4476('0x5'));var interaction=require(_0x4476('0x6'));var config=require('../../config/environment');var controller=require(_0x4476('0x7'));router[_0x4476('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x4476('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x4476('0x9')]);router['post']('/',auth[_0x4476('0xa')](),controller[_0x4476('0xb')]);router['post'](_0x4476('0xc'),auth[_0x4476('0xa')](),controller[_0x4476('0xd')]);router[_0x4476('0xe')](_0x4476('0xf'),auth[_0x4476('0xa')](),controller[_0x4476('0x10')]);router[_0x4476('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x4476('0x12')]);module[_0x4476('0x13')]=router;
\ No newline at end of file
index e5d0f9b..3187ea2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3235=['internal','outbound-fax','*,*,*,*','INTEGER','BOOLEAN','exten','exports','STRING','compositeIndex','ENUM','outbound'];(function(_0x1d30bc,_0x6f5f13){var _0x104a7d=function(_0x31bd38){while(--_0x31bd38){_0x1d30bc['push'](_0x1d30bc['shift']());}};_0x104a7d(++_0x6f5f13);}(_0x3235,0xd7));var _0x5323=function(_0x467ae8,_0x3d1ef2){_0x467ae8=_0x467ae8-0x0;var _0x29e859=_0x3235[_0x467ae8];return _0x29e859;};'use strict';var Sequelize=require('sequelize');module[_0x5323('0x0')]={'context':{'type':Sequelize[_0x5323('0x1')],'allowNull':![],'unique':_0x5323('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x5323('0x1')],'allowNull':![],'unique':_0x5323('0x2')},'priority':{'type':Sequelize[_0x5323('0x1')],'allowNull':![],'defaultValue':'1','unique':_0x5323('0x2')},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0x5323('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x5323('0x3')]('inbound',_0x5323('0x4'),_0x5323('0x5'),'inbound-fax',_0x5323('0x6'),'system','any'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x5323('0x1')],'allowNull':![],'defaultValue':_0x5323('0x7')},'IntervalId':{'type':Sequelize[_0x5323('0x8')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x5323('0x1')],'defaultValue':null},'callerID':{'type':Sequelize[_0x5323('0x1')],'allowNull':!![]},'record':{'type':Sequelize[_0x5323('0x9')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x5323('0x8')]},'recordingFormat':{'type':Sequelize['STRING'],'defaultValue':'wav'},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x478ce0){return this['getDataValue'](_0x5323('0xa'));}},'alias':{'type':Sequelize[_0x5323('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0x2b28=['exports','STRING','compositeIndex','ENUM','inbound','outbound','internal','outbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','VIRTUAL','getDataValue','exten'];(function(_0x44ca6e,_0x5e2c91){var _0x2edab2=function(_0x3afa91){while(--_0x3afa91){_0x44ca6e['push'](_0x44ca6e['shift']());}};_0x2edab2(++_0x5e2c91);}(_0x2b28,0x90));var _0x82b2=function(_0x2de0a7,_0x38d3e7){_0x2de0a7=_0x2de0a7-0x0;var _0x429437=_0x2b28[_0x2de0a7];return _0x429437;};'use strict';var Sequelize=require('sequelize');module[_0x82b2('0x0')]={'context':{'type':Sequelize[_0x82b2('0x1')],'allowNull':![],'unique':'compositeIndex','validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x82b2('0x1')],'allowNull':![],'unique':_0x82b2('0x2')},'priority':{'type':Sequelize[_0x82b2('0x1')],'allowNull':![],'defaultValue':'1','unique':'compositeIndex'},'tag':{'type':Sequelize[_0x82b2('0x1')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x82b2('0x1')],'allowNull':![],'defaultValue':'NoOp'},'appdata':{'type':Sequelize[_0x82b2('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x82b2('0x3')](_0x82b2('0x4'),_0x82b2('0x5'),_0x82b2('0x6'),'inbound-fax',_0x82b2('0x7'),_0x82b2('0x8'),_0x82b2('0x9')),'allowNull':![]},'description':{'type':Sequelize[_0x82b2('0x1')]},'interval':{'type':Sequelize[_0x82b2('0x1')],'allowNull':![],'defaultValue':_0x82b2('0xa')},'IntervalId':{'type':Sequelize[_0x82b2('0xb')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x82b2('0x1')],'defaultValue':null},'callerID':{'type':Sequelize[_0x82b2('0x1')],'allowNull':!![]},'record':{'type':Sequelize[_0x82b2('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize['INTEGER']},'recordingFormat':{'type':Sequelize[_0x82b2('0x1')],'defaultValue':'wav'},'answer':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'name':{'type':Sequelize[_0x82b2('0xd')],'get':function(_0x45089e){return this[_0x82b2('0xe')](_0x82b2('0xf'));}},'alias':{'type':Sequelize[_0x82b2('0x1')],'allowNull':!![]}};
\ No newline at end of file
index d781ae3..b07ba5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c3c=['findAndCountAll','cast(priority\x20as\x20unsigned)','finally','sendStatus','send','lodash','ioredis','api','../../mysqldb','redis','defaults','socket.io-emitter','register','status','end','offset','undefined','limit','count','Content-Range','json','destroy','then','get','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','internal','ignore','includes','type','value','error','stack','name','index','map','VoiceExtension','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','options','includeAll','include','rows','catch','params','find','create','body','startsWith','exten','concat','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','pick','context','recordingFormat','cutdigits','alias','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','isApp','createRouting','bulkCreate'];(function(_0x4d0b58,_0x4e6151){var _0x2f1853=function(_0x4ecdcb){while(--_0x4ecdcb){_0x4d0b58['push'](_0x4d0b58['shift']());}};_0x2f1853(++_0x4e6151);}(_0x3c3c,0x16d));var _0xc3c3=function(_0x332bee,_0x515df2){_0x332bee=_0x332bee-0x0;var _0x194f1c=_0x3c3c[_0x332bee];return _0x194f1c;};'use strict';var _=require(_0xc3c3('0x0'));var Redis=require(_0xc3c3('0x1'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0xc3c3('0x2'));var config=require('../../config/environment');var db=require(_0xc3c3('0x3'))['db'];config[_0xc3c3('0x4')]=_[_0xc3c3('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xc3c3('0x6'))(new Redis(config['redis']));require('./voiceExtension.socket')[_0xc3c3('0x7')](socket);function respondWithStatusCode(_0x3e7628,_0x3574d9){_0x3574d9=_0x3574d9||0xcc;return function(_0x3bd1be){if(_0x3bd1be){return _0x3e7628['sendStatus'](_0x3574d9);}return _0x3e7628[_0xc3c3('0x8')](_0x3574d9)[_0xc3c3('0x9')]();};}function respondWithResult(_0x3ca917,_0x329f2e){_0x329f2e=_0x329f2e||0xc8;return function(_0x1724e8){if(_0x1724e8){return _0x3ca917[_0xc3c3('0x8')](_0x329f2e)['json'](_0x1724e8);}};}function respondWithFilteredResult(_0x158407,_0x17779d){return function(_0x1cb830){if(_0x1cb830){var _0x5a69d8=typeof _0x17779d[_0xc3c3('0xa')]===_0xc3c3('0xb')&&typeof _0x17779d[_0xc3c3('0xc')]==='undefined';var _0x503013=_0x1cb830[_0xc3c3('0xd')];var _0x29f17a=_0x5a69d8?0x0:_0x17779d['offset'];var _0x40f9ce=_0x5a69d8?_0x1cb830['count']:_0x17779d['offset']+_0x17779d[_0xc3c3('0xc')];var _0x52300a;if(_0x40f9ce>=_0x503013){_0x40f9ce=_0x503013;_0x52300a=0xc8;}else{_0x52300a=0xce;}_0x158407['status'](_0x52300a);return _0x158407['set'](_0xc3c3('0xe'),_0x29f17a+'-'+_0x40f9ce+'/'+_0x503013)[_0xc3c3('0xf')](_0x1cb830);}return null;};}function removeEntity(_0x217214){return function(_0x11d3a2){if(_0x11d3a2){return _0x11d3a2[_0xc3c3('0x10')]()[_0xc3c3('0x11')](function(){var _0x46863f=_0x11d3a2[_0xc3c3('0x12')]({'plain':!![]});var _0x17b6c4=[{'name':_0xc3c3('0x13'),'value':_0xc3c3('0x14'),'ignore':![]},{'name':_0xc3c3('0x15'),'value':_0xc3c3('0x16'),'ignore':![]},{'name':_0xc3c3('0x17'),'value':_0xc3c3('0x18'),'ignore':![]}];var _0x489604=_(_0x17b6c4)['filter'](_0xc3c3('0x19'))['map']('value')['value']();if(_[_0xc3c3('0x1a')](_0x489604,_0x46863f[_0xc3c3('0x1b')])){return;}var _0x147121=_['find'](_0x17b6c4,[_0xc3c3('0x1c'),_0x46863f[_0xc3c3('0x1b')]])['name'];return db['UserProfileResource'][_0xc3c3('0x10')]({'where':{'type':_0x147121,'resourceId':_0x46863f['id']}})[_0xc3c3('0x11')](function(){return _0x11d3a2;});})[_0xc3c3('0x11')](function(){_0x217214['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x39ee03){return function(_0xb591ec){if(!_0xb591ec){_0x39ee03['sendStatus'](0x194);}return _0xb591ec;};}function handleError(_0x49d9d7,_0x442c33){_0x442c33=_0x442c33||0x1f4;return function(_0x515c39){logger[_0xc3c3('0x1d')](_0x515c39[_0xc3c3('0x1e')]);if(_0x515c39[_0xc3c3('0x1f')]){delete _0x515c39[_0xc3c3('0x1f')];}_0x49d9d7[_0xc3c3('0x8')](_0x442c33)['send'](_0x515c39);};}exports[_0xc3c3('0x20')]=function(_0x2f9f0f,_0x130b3c){var _0x940060={},_0x2ee08d={},_0x4f26d0={'count':0x0,'rows':[]};var _0x2cf7f7=_[_0xc3c3('0x21')](db[_0xc3c3('0x22')][_0xc3c3('0x23')],function(_0x314b4d){return{'name':_0x314b4d[_0xc3c3('0x24')],'type':_0x314b4d[_0xc3c3('0x1b')][_0xc3c3('0x25')]};});_0x2ee08d[_0xc3c3('0x26')]=_['map'](_0x2cf7f7,_0xc3c3('0x1f'));_0x2ee08d[_0xc3c3('0x27')]=_[_0xc3c3('0x28')](_0x2f9f0f[_0xc3c3('0x27')]);_0x2ee08d[_0xc3c3('0x29')]=_[_0xc3c3('0x2a')](_0x2ee08d['model'],_0x2ee08d[_0xc3c3('0x27')]);_0x940060[_0xc3c3('0x2b')]=_[_0xc3c3('0x2a')](_0x2ee08d[_0xc3c3('0x26')],qs[_0xc3c3('0x2c')](_0x2f9f0f['query'][_0xc3c3('0x2c')]));_0x940060['attributes']=_0x940060['attributes'][_0xc3c3('0x2d')]?_0x940060[_0xc3c3('0x2b')]:_0x2ee08d[_0xc3c3('0x26')];if(!_0x2f9f0f[_0xc3c3('0x27')][_0xc3c3('0x2e')]('nolimit')){_0x940060[_0xc3c3('0xc')]=qs[_0xc3c3('0xc')](_0x2f9f0f[_0xc3c3('0x27')][_0xc3c3('0xc')]);_0x940060[_0xc3c3('0xa')]=qs[_0xc3c3('0xa')](_0x2f9f0f[_0xc3c3('0x27')][_0xc3c3('0xa')]);}_0x940060[_0xc3c3('0x2f')]=qs['sort'](_0x2f9f0f[_0xc3c3('0x27')][_0xc3c3('0x30')]);_0x940060[_0xc3c3('0x31')]=qs[_0xc3c3('0x29')](_['pick'](_0x2f9f0f[_0xc3c3('0x27')],_0x2ee08d[_0xc3c3('0x29')]),_0x2cf7f7);if(_0x2f9f0f[_0xc3c3('0x27')][_0xc3c3('0x32')]){_0x940060[_0xc3c3('0x31')]=_['merge'](_0x940060[_0xc3c3('0x31')],{'$or':_[_0xc3c3('0x21')](_0x2cf7f7,function(_0x146b2e){if(_0x146b2e[_0xc3c3('0x1b')]!=='VIRTUAL'){var _0x133405={};_0x133405[_0x146b2e[_0xc3c3('0x1f')]]={'$like':'%'+_0x2f9f0f['query'][_0xc3c3('0x32')]+'%'};return _0x133405;}})});}_0x940060=_[_0xc3c3('0x33')]({},_0x940060,_0x2f9f0f[_0xc3c3('0x34')]);var _0x417e98={'where':_0x940060['where']};return db['VoiceExtension'][_0xc3c3('0xd')](_0x417e98)['then'](function(_0x3f68fe){_0x4f26d0['count']=_0x3f68fe;if(_0x2f9f0f[_0xc3c3('0x27')][_0xc3c3('0x35')]){_0x940060[_0xc3c3('0x36')]=[{'all':!![]}];}return db['VoiceExtension']['findAll'](_0x940060);})[_0xc3c3('0x11')](function(_0x4eebcf){_0x4f26d0[_0xc3c3('0x37')]=_0x4eebcf;return _0x4f26d0;})[_0xc3c3('0x11')](respondWithFilteredResult(_0x130b3c,_0x940060))[_0xc3c3('0x38')](handleError(_0x130b3c,null));};exports['show']=function(_0x46f678,_0x52dac1){var _0x5aa690={'raw':![],'where':{'id':_0x46f678[_0xc3c3('0x39')]['id']}},_0x4a19a2={};_0x4a19a2[_0xc3c3('0x26')]=_[_0xc3c3('0x28')](db['VoiceExtension'][_0xc3c3('0x23')]);_0x4a19a2[_0xc3c3('0x27')]=_[_0xc3c3('0x28')](_0x46f678['query']);_0x4a19a2[_0xc3c3('0x29')]=_['intersection'](_0x4a19a2[_0xc3c3('0x26')],_0x4a19a2[_0xc3c3('0x27')]);_0x5aa690['attributes']=_[_0xc3c3('0x2a')](_0x4a19a2[_0xc3c3('0x26')],qs[_0xc3c3('0x2c')](_0x46f678['query'][_0xc3c3('0x2c')]));_0x5aa690[_0xc3c3('0x2b')]=_0x5aa690[_0xc3c3('0x2b')][_0xc3c3('0x2d')]?_0x5aa690[_0xc3c3('0x2b')]:_0x4a19a2['model'];if(_0x46f678[_0xc3c3('0x27')][_0xc3c3('0x35')]){_0x5aa690[_0xc3c3('0x36')]=[{'all':!![]}];}_0x5aa690=_[_0xc3c3('0x33')]({},_0x5aa690,_0x46f678[_0xc3c3('0x34')]);return db[_0xc3c3('0x22')][_0xc3c3('0x3a')](_0x5aa690)[_0xc3c3('0x11')](handleEntityNotFound(_0x52dac1,null))['then'](respondWithResult(_0x52dac1,null))[_0xc3c3('0x38')](handleError(_0x52dac1,null));};exports['destroy']=function(_0x2b6f22,_0x563389){return db[_0xc3c3('0x22')][_0xc3c3('0x3a')]({'where':{'id':_0x2b6f22[_0xc3c3('0x39')]['id']}})[_0xc3c3('0x11')](handleEntityNotFound(_0x563389,null))[_0xc3c3('0x11')](removeEntity(_0x563389,null))['catch'](handleError(_0x563389,null));};exports[_0xc3c3('0x3b')]=function(_0x28f153,_0x5b2722){if(_0x28f153[_0xc3c3('0x3c')]['type']===_0xc3c3('0x16')&&!_[_0xc3c3('0x3d')](_0x28f153[_0xc3c3('0x3c')][_0xc3c3('0x3e')],'_')){_0x28f153[_0xc3c3('0x3c')]['exten']='_'[_0xc3c3('0x3f')](_0x28f153[_0xc3c3('0x3c')][_0xc3c3('0x3e')]);}return db['VoiceExtension'][_0xc3c3('0x3b')](_0x28f153[_0xc3c3('0x3c')],{'raw':![]})[_0xc3c3('0x11')](function(_0x13132d){var _0x5d9320=_0x28f153[_0xc3c3('0x40')][_0xc3c3('0x12')]({'plain':!![]});if(!_0x5d9320)throw new Error(_0xc3c3('0x41'));if(_0x5d9320[_0xc3c3('0x42')]==='user'){var _0x1adf29=_0x13132d[_0xc3c3('0x12')]({'plain':!![]});var _0x1068ce=[{'name':'InboundRoutes','value':'inbound'},{'name':_0xc3c3('0x15'),'value':_0xc3c3('0x16')},{'name':_0xc3c3('0x17'),'value':'internal'}];var _0x5c8932=_[_0xc3c3('0x3a')](_0x1068ce,[_0xc3c3('0x1c'),_0x1adf29[_0xc3c3('0x1b')]])[_0xc3c3('0x1f')];return db[_0xc3c3('0x43')][_0xc3c3('0x3a')]({'where':{'name':_0x5c8932,'userProfileId':_0x5d9320['userProfileId']},'raw':!![]})[_0xc3c3('0x11')](function(_0x1b172e){if(_0x1b172e&&_0x1b172e[_0xc3c3('0x44')]===0x0){return db['UserProfileResource'][_0xc3c3('0x3b')]({'name':_0x1adf29[_0xc3c3('0x1f')],'resourceId':_0x1adf29['id'],'type':_0x1b172e['name'],'sectionId':_0x1b172e['id']},{})[_0xc3c3('0x11')](function(){return _0x13132d;});}else{return _0x13132d;}})[_0xc3c3('0x38')](function(_0x2d5309){logger[_0xc3c3('0x1d')](_0xc3c3('0x45'),_0x2d5309);throw _0x2d5309;});}return _0x13132d;})['then'](respondWithResult(_0x5b2722,0xc9))[_0xc3c3('0x38')](handleError(_0x5b2722,null));};exports[_0xc3c3('0x46')]=function(_0x444be1,_0x154614){if(_0x444be1[_0xc3c3('0x3c')]['id']){delete _0x444be1[_0xc3c3('0x3c')]['id'];}return db[_0xc3c3('0x22')]['find']({'where':{'id':_0x444be1['params']['id']}})[_0xc3c3('0x11')](handleEntityNotFound(_0x154614,null))['then'](function(_0x453cd5){if(_0x453cd5){return db['VoiceExtension']['update'](_[_0xc3c3('0x47')](_0x444be1[_0xc3c3('0x3c')],[_0xc3c3('0x3e'),_0xc3c3('0x48'),'description',_0xc3c3('0x49'),_0xc3c3('0x4a'),'mandatoryDisposition',_0xc3c3('0x4b')]),{'where':{'context':_0x453cd5[_0xc3c3('0x48')],'exten':_0x453cd5[_0xc3c3('0x3e')]},'individualHooks':!![]})[_0xc3c3('0x11')](function(_0x256051){return _0x256051;});}return null;})[_0xc3c3('0x11')](respondWithStatusCode(_0x154614,null))[_0xc3c3('0x38')](handleError(_0x154614,null));};exports[_0xc3c3('0x4c')]=function(_0x1a5af0,_0x44fa30){var _0x323b08=_0x1a5af0['params']['id'];var _0x1cd58e=_0x1a5af0[_0xc3c3('0x3c')];var _0x16cd0e=0xc8;var _0x433c72=null;return db['sequelize']['transaction']({'isolationLevel':db[_0xc3c3('0x4d')][_0xc3c3('0x4e')][_0xc3c3('0x4f')][_0xc3c3('0x50')]},function(_0x593322){return db[_0xc3c3('0x22')][_0xc3c3('0x51')]({'where':{'id':_0x323b08},'transaction':_0x593322})[_0xc3c3('0x11')](function(_0x2b0591){if(_0x2b0591){return db['VoiceExtension'][_0xc3c3('0x10')]({'where':{'VoiceExtensionId':_0x323b08},'transaction':_0x593322})[_0xc3c3('0x11')](function(){var _0x88c427=_[_0xc3c3('0x21')](_0x1cd58e,function(_0x5f13d3){_0x5f13d3['VoiceExtensionId']=_0x323b08;_0x5f13d3[_0xc3c3('0x52')]=!![];return _0x5f13d3;});return _0x2b0591[_0xc3c3('0x53')](_0x88c427);})[_0xc3c3('0x11')](function(_0x217c66){return db['VoiceExtension'][_0xc3c3('0x54')](_0x217c66,{'transaction':_0x593322});});}else{_0x16cd0e=0x194;_0x433c72=[];}});})['then'](function(){if(_0x16cd0e!==0x194){return db['VoiceExtension'][_0xc3c3('0x55')]({'where':{'isApp':!![],'VoiceExtensionId':_0x323b08},'order':_0xc3c3('0x56')})[_0xc3c3('0x11')](function(_0x19531c){_0x433c72=_0x19531c;});}})[_0xc3c3('0x38')](function(_0x1530c4){_0x16cd0e=0x1f4;logger[_0xc3c3('0x1d')](_0x1530c4[_0xc3c3('0x1e')]);if(_0x1530c4[_0xc3c3('0x1f')]){delete _0x1530c4[_0xc3c3('0x1f')];}_0x433c72=_0x1530c4;})[_0xc3c3('0x57')](function(){if(_0x433c72===null){_0x44fa30[_0xc3c3('0x58')](_0x16cd0e);}else{if(_0x16cd0e===0x1f4){_0x44fa30[_0xc3c3('0x8')](_0x16cd0e)[_0xc3c3('0x59')](_0x433c72);}else{_0x44fa30['status'](_0x16cd0e)[_0xc3c3('0xf')](_0x433c72);}}});};
\ No newline at end of file
+var _0x6878=['keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','find','params','create','body','startsWith','exten','concat','user','role','InternalRoutes','internal','UserProfileSection','update','description','recordingFormat','cutdigits','mandatoryDisposition','context','sequelize','transaction','Transaction','ISOLATION_LEVELS','VoiceExtensionId','isApp','createRouting','cast(priority\x20as\x20unsigned)','finally','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','end','status','offset','limit','count','Content-Range','json','destroy','then','get','InboundRoutes','inbound','OutboundRoutes','outbound','filter','ignore','map','value','includes','type','name','UserProfileResource','sendStatus','error','stack','send','index','VoiceExtension','fieldName','key','model','query'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x6878,0x198));var _0x8687=function(_0xdc2f7e,_0xb8b640){_0xdc2f7e=_0xdc2f7e-0x0;var _0x33aa35=_0x6878[_0xdc2f7e];return _0x33aa35;};'use strict';var _=require(_0x8687('0x0'));var Redis=require('ioredis');var qs=require(_0x8687('0x1'));var logger=require(_0x8687('0x2'))(_0x8687('0x3'));var config=require(_0x8687('0x4'));var db=require('../../mysqldb')['db'];config[_0x8687('0x5')]=_[_0x8687('0x6')](config[_0x8687('0x5')],{'host':_0x8687('0x7'),'port':0x18eb});var socket=require(_0x8687('0x8'))(new Redis(config['redis']));require(_0x8687('0x9'))['register'](socket);function respondWithStatusCode(_0x33fb97,_0x34c611){_0x34c611=_0x34c611||0xcc;return function(_0x17ffba){if(_0x17ffba){return _0x33fb97['sendStatus'](_0x34c611);}return _0x33fb97['status'](_0x34c611)[_0x8687('0xa')]();};}function respondWithResult(_0x17d489,_0x436000){_0x436000=_0x436000||0xc8;return function(_0x345ada){if(_0x345ada){return _0x17d489[_0x8687('0xb')](_0x436000)['json'](_0x345ada);}};}function respondWithFilteredResult(_0x15c3d0,_0x531ab2){return function(_0x18b217){if(_0x18b217){var _0x41fa42=typeof _0x531ab2[_0x8687('0xc')]==='undefined'&&typeof _0x531ab2[_0x8687('0xd')]==='undefined';var _0x5063e1=_0x18b217[_0x8687('0xe')];var _0x1a6104=_0x41fa42?0x0:_0x531ab2[_0x8687('0xc')];var _0x3c5ef4=_0x41fa42?_0x18b217[_0x8687('0xe')]:_0x531ab2[_0x8687('0xc')]+_0x531ab2[_0x8687('0xd')];var _0x11225e;if(_0x3c5ef4>=_0x5063e1){_0x3c5ef4=_0x5063e1;_0x11225e=0xc8;}else{_0x11225e=0xce;}_0x15c3d0['status'](_0x11225e);return _0x15c3d0['set'](_0x8687('0xf'),_0x1a6104+'-'+_0x3c5ef4+'/'+_0x5063e1)[_0x8687('0x10')](_0x18b217);}return null;};}function removeEntity(_0x19e9c5){return function(_0x3d3c07){if(_0x3d3c07){return _0x3d3c07[_0x8687('0x11')]()[_0x8687('0x12')](function(){var _0x1a0c8e=_0x3d3c07[_0x8687('0x13')]({'plain':!![]});var _0x5c1ac2=[{'name':_0x8687('0x14'),'value':_0x8687('0x15'),'ignore':![]},{'name':_0x8687('0x16'),'value':_0x8687('0x17'),'ignore':![]},{'name':'InternalRoutes','value':'internal','ignore':![]}];var _0x3506b7=_(_0x5c1ac2)[_0x8687('0x18')](_0x8687('0x19'))[_0x8687('0x1a')](_0x8687('0x1b'))[_0x8687('0x1b')]();if(_[_0x8687('0x1c')](_0x3506b7,_0x1a0c8e[_0x8687('0x1d')])){return;}var _0x1449b6=_['find'](_0x5c1ac2,[_0x8687('0x1b'),_0x1a0c8e[_0x8687('0x1d')]])[_0x8687('0x1e')];return db[_0x8687('0x1f')][_0x8687('0x11')]({'where':{'type':_0x1449b6,'resourceId':_0x1a0c8e['id']}})[_0x8687('0x12')](function(){return _0x3d3c07;});})['then'](function(){_0x19e9c5[_0x8687('0xb')](0xcc)[_0x8687('0xa')]();});}};}function handleEntityNotFound(_0x2f6068){return function(_0x31f25b){if(!_0x31f25b){_0x2f6068[_0x8687('0x20')](0x194);}return _0x31f25b;};}function handleError(_0x2455cf,_0xc33d2f){_0xc33d2f=_0xc33d2f||0x1f4;return function(_0x26cb26){logger[_0x8687('0x21')](_0x26cb26[_0x8687('0x22')]);if(_0x26cb26[_0x8687('0x1e')]){delete _0x26cb26[_0x8687('0x1e')];}_0x2455cf[_0x8687('0xb')](_0xc33d2f)[_0x8687('0x23')](_0x26cb26);};}exports[_0x8687('0x24')]=function(_0x5df55c,_0x3aed9b){var _0x447857={},_0x3190d7={},_0x1e90f1={'count':0x0,'rows':[]};var _0x4d35b0=_[_0x8687('0x1a')](db[_0x8687('0x25')]['rawAttributes'],function(_0x15e562){return{'name':_0x15e562[_0x8687('0x26')],'type':_0x15e562[_0x8687('0x1d')][_0x8687('0x27')]};});_0x3190d7[_0x8687('0x28')]=_['map'](_0x4d35b0,_0x8687('0x1e'));_0x3190d7[_0x8687('0x29')]=_[_0x8687('0x2a')](_0x5df55c[_0x8687('0x29')]);_0x3190d7[_0x8687('0x2b')]=_[_0x8687('0x2c')](_0x3190d7[_0x8687('0x28')],_0x3190d7[_0x8687('0x29')]);_0x447857[_0x8687('0x2d')]=_[_0x8687('0x2c')](_0x3190d7['model'],qs[_0x8687('0x2e')](_0x5df55c[_0x8687('0x29')][_0x8687('0x2e')]));_0x447857[_0x8687('0x2d')]=_0x447857['attributes'][_0x8687('0x2f')]?_0x447857[_0x8687('0x2d')]:_0x3190d7[_0x8687('0x28')];if(!_0x5df55c[_0x8687('0x29')][_0x8687('0x30')](_0x8687('0x31'))){_0x447857['limit']=qs[_0x8687('0xd')](_0x5df55c[_0x8687('0x29')]['limit']);_0x447857[_0x8687('0xc')]=qs[_0x8687('0xc')](_0x5df55c['query'][_0x8687('0xc')]);}_0x447857[_0x8687('0x32')]=qs[_0x8687('0x33')](_0x5df55c['query'][_0x8687('0x33')]);_0x447857[_0x8687('0x34')]=qs[_0x8687('0x2b')](_[_0x8687('0x35')](_0x5df55c[_0x8687('0x29')],_0x3190d7['filters']),_0x4d35b0);if(_0x5df55c[_0x8687('0x29')][_0x8687('0x18')]){_0x447857[_0x8687('0x34')]=_[_0x8687('0x36')](_0x447857['where'],{'$or':_[_0x8687('0x1a')](_0x4d35b0,function(_0x1c771d){if(_0x1c771d[_0x8687('0x1d')]!==_0x8687('0x37')){var _0x2722fc={};_0x2722fc[_0x1c771d['name']]={'$like':'%'+_0x5df55c['query'][_0x8687('0x18')]+'%'};return _0x2722fc;}})});}_0x447857=_[_0x8687('0x36')]({},_0x447857,_0x5df55c[_0x8687('0x38')]);var _0x38bfc7={'where':_0x447857[_0x8687('0x34')]};return db['VoiceExtension'][_0x8687('0xe')](_0x38bfc7)['then'](function(_0x1697fb){_0x1e90f1['count']=_0x1697fb;if(_0x5df55c[_0x8687('0x29')][_0x8687('0x39')]){_0x447857[_0x8687('0x3a')]=[{'all':!![]}];}return db[_0x8687('0x25')][_0x8687('0x3b')](_0x447857);})[_0x8687('0x12')](function(_0xb3d92a){_0x1e90f1[_0x8687('0x3c')]=_0xb3d92a;return _0x1e90f1;})[_0x8687('0x12')](respondWithFilteredResult(_0x3aed9b,_0x447857))[_0x8687('0x3d')](handleError(_0x3aed9b,null));};exports[_0x8687('0x3e')]=function(_0xe7bf0f,_0x5a9b0e){var _0x31fc5d={'raw':![],'where':{'id':_0xe7bf0f['params']['id']}},_0x22b465={};_0x22b465[_0x8687('0x28')]=_[_0x8687('0x2a')](db['VoiceExtension']['rawAttributes']);_0x22b465[_0x8687('0x29')]=_['keys'](_0xe7bf0f['query']);_0x22b465[_0x8687('0x2b')]=_[_0x8687('0x2c')](_0x22b465['model'],_0x22b465[_0x8687('0x29')]);_0x31fc5d[_0x8687('0x2d')]=_['intersection'](_0x22b465[_0x8687('0x28')],qs[_0x8687('0x2e')](_0xe7bf0f[_0x8687('0x29')][_0x8687('0x2e')]));_0x31fc5d['attributes']=_0x31fc5d[_0x8687('0x2d')][_0x8687('0x2f')]?_0x31fc5d[_0x8687('0x2d')]:_0x22b465[_0x8687('0x28')];if(_0xe7bf0f[_0x8687('0x29')][_0x8687('0x39')]){_0x31fc5d[_0x8687('0x3a')]=[{'all':!![]}];}_0x31fc5d=_[_0x8687('0x36')]({},_0x31fc5d,_0xe7bf0f['options']);return db[_0x8687('0x25')][_0x8687('0x3f')](_0x31fc5d)[_0x8687('0x12')](handleEntityNotFound(_0x5a9b0e,null))['then'](respondWithResult(_0x5a9b0e,null))[_0x8687('0x3d')](handleError(_0x5a9b0e,null));};exports[_0x8687('0x11')]=function(_0x10dac3,_0x159503){return db['VoiceExtension'][_0x8687('0x3f')]({'where':{'id':_0x10dac3[_0x8687('0x40')]['id']}})[_0x8687('0x12')](handleEntityNotFound(_0x159503,null))[_0x8687('0x12')](removeEntity(_0x159503,null))[_0x8687('0x3d')](handleError(_0x159503,null));};exports[_0x8687('0x41')]=function(_0x56aaeb,_0x30a81f){if(_0x56aaeb[_0x8687('0x42')]['type']===_0x8687('0x17')&&!_[_0x8687('0x43')](_0x56aaeb[_0x8687('0x42')][_0x8687('0x44')],'_')){_0x56aaeb[_0x8687('0x42')][_0x8687('0x44')]='_'[_0x8687('0x45')](_0x56aaeb[_0x8687('0x42')][_0x8687('0x44')]);}return db[_0x8687('0x25')][_0x8687('0x41')](_0x56aaeb[_0x8687('0x42')],{'raw':![]})[_0x8687('0x12')](function(_0x394b7d){var _0xa10e63=_0x56aaeb[_0x8687('0x46')][_0x8687('0x13')]({'plain':!![]});if(!_0xa10e63)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xa10e63[_0x8687('0x47')]==='user'){var _0x1f2951=_0x394b7d[_0x8687('0x13')]({'plain':!![]});var _0x3ff74c=[{'name':_0x8687('0x14'),'value':_0x8687('0x15')},{'name':_0x8687('0x16'),'value':_0x8687('0x17')},{'name':_0x8687('0x48'),'value':_0x8687('0x49')}];var _0x30807c=_[_0x8687('0x3f')](_0x3ff74c,[_0x8687('0x1b'),_0x1f2951[_0x8687('0x1d')]])[_0x8687('0x1e')];return db[_0x8687('0x4a')][_0x8687('0x3f')]({'where':{'name':_0x30807c,'userProfileId':_0xa10e63['userProfileId']},'raw':!![]})[_0x8687('0x12')](function(_0x1fd8ca){if(_0x1fd8ca&&_0x1fd8ca['autoAssociation']===0x0){return db[_0x8687('0x1f')][_0x8687('0x41')]({'name':_0x1f2951[_0x8687('0x1e')],'resourceId':_0x1f2951['id'],'type':_0x1fd8ca[_0x8687('0x1e')],'sectionId':_0x1fd8ca['id']},{})[_0x8687('0x12')](function(){return _0x394b7d;});}else{return _0x394b7d;}})[_0x8687('0x3d')](function(_0x2b603f){logger[_0x8687('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2b603f);throw _0x2b603f;});}return _0x394b7d;})[_0x8687('0x12')](respondWithResult(_0x30a81f,0xc9))[_0x8687('0x3d')](handleError(_0x30a81f,null));};exports['update']=function(_0x323022,_0x2596df){if(_0x323022[_0x8687('0x42')]['id']){delete _0x323022[_0x8687('0x42')]['id'];}return db['VoiceExtension'][_0x8687('0x3f')]({'where':{'id':_0x323022[_0x8687('0x40')]['id']}})[_0x8687('0x12')](handleEntityNotFound(_0x2596df,null))['then'](function(_0x36bf35){if(_0x36bf35){return db[_0x8687('0x25')][_0x8687('0x4b')](_['pick'](_0x323022[_0x8687('0x42')],[_0x8687('0x44'),'context',_0x8687('0x4c'),_0x8687('0x4d'),_0x8687('0x4e'),_0x8687('0x4f'),'alias']),{'where':{'context':_0x36bf35[_0x8687('0x50')],'exten':_0x36bf35['exten']},'individualHooks':!![]})['then'](function(_0xec5b44){return _0xec5b44;});}return null;})[_0x8687('0x12')](respondWithStatusCode(_0x2596df,null))[_0x8687('0x3d')](handleError(_0x2596df,null));};exports['addApplications']=function(_0xdb7203,_0x2e5186){var _0xee2fee=_0xdb7203[_0x8687('0x40')]['id'];var _0x111879=_0xdb7203['body'];var _0x21a5b9=0xc8;var _0x180968=null;return db[_0x8687('0x51')][_0x8687('0x52')]({'isolationLevel':db['sequelize'][_0x8687('0x53')][_0x8687('0x54')]['READ_COMMITTED']},function(_0x30eeb5){return db[_0x8687('0x25')]['findOne']({'where':{'id':_0xee2fee},'transaction':_0x30eeb5})[_0x8687('0x12')](function(_0x337571){if(_0x337571){return db[_0x8687('0x25')]['destroy']({'where':{'VoiceExtensionId':_0xee2fee},'transaction':_0x30eeb5})[_0x8687('0x12')](function(){var _0x2692f2=_['map'](_0x111879,function(_0x3fec82){_0x3fec82[_0x8687('0x55')]=_0xee2fee;_0x3fec82[_0x8687('0x56')]=!![];return _0x3fec82;});return _0x337571[_0x8687('0x57')](_0x2692f2);})['then'](function(_0x59531f){return db[_0x8687('0x25')]['bulkCreate'](_0x59531f,{'transaction':_0x30eeb5});});}else{_0x21a5b9=0x194;_0x180968=[];}});})['then'](function(){if(_0x21a5b9!==0x194){return db['VoiceExtension']['findAndCountAll']({'where':{'isApp':!![],'VoiceExtensionId':_0xee2fee},'order':_0x8687('0x58')})[_0x8687('0x12')](function(_0x17dd8d){_0x180968=_0x17dd8d;});}})[_0x8687('0x3d')](function(_0x4feb43){_0x21a5b9=0x1f4;logger[_0x8687('0x21')](_0x4feb43[_0x8687('0x22')]);if(_0x4feb43[_0x8687('0x1e')]){delete _0x4feb43[_0x8687('0x1e')];}_0x180968=_0x4feb43;})[_0x8687('0x59')](function(){if(_0x180968===null){_0x2e5186[_0x8687('0x20')](_0x21a5b9);}else{if(_0x21a5b9===0x1f4){_0x2e5186[_0x8687('0xb')](_0x21a5b9)[_0x8687('0x23')](_0x180968);}else{_0x2e5186[_0x8687('0xb')](_0x21a5b9)['json'](_0x180968);}}});};
\ No newline at end of file
index d52edaa..e67ba5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x732a=['save','update','remove','emit','hasOwnProperty','hook','../../mysqldb','VoiceExtension'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0x732a,0x8e));var _0xa732=function(_0x5a9c0c,_0x4ec485){_0x5a9c0c=_0x5a9c0c-0x0;var _0x53c77d=_0x732a[_0x5a9c0c];return _0x53c77d;};'use strict';var EventEmitter=require('events');var VoiceExtension=require(_0xa732('0x0'))['db'][_0xa732('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xa732('0x2'),'afterUpdate':_0xa732('0x3'),'afterDestroy':_0xa732('0x4')};function emitEvent(_0x36019a){return function(_0x47fd59,_0xa7fd60,_0x27b2fb){VoiceExtensionEvents[_0xa732('0x5')](_0x36019a+':'+_0x47fd59['id'],_0x47fd59);VoiceExtensionEvents['emit'](_0x36019a,_0x47fd59);_0x27b2fb(null);};}for(var e in events){if(events[_0xa732('0x6')](e)){var event=events[e];VoiceExtension[_0xa732('0x7')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
+var _0xb253=['exports','events','../../mysqldb','VoiceExtension','setMaxListeners','save','emit','hook'];(function(_0x1d5266,_0x515d8a){var _0x4600e4=function(_0x2560c9){while(--_0x2560c9){_0x1d5266['push'](_0x1d5266['shift']());}};_0x4600e4(++_0x515d8a);}(_0xb253,0x99));var _0x3b25=function(_0x404458,_0x320912){_0x404458=_0x404458-0x0;var _0x5313c9=_0xb253[_0x404458];return _0x5313c9;};'use strict';var EventEmitter=require(_0x3b25('0x0'));var VoiceExtension=require(_0x3b25('0x1'))['db'][_0x3b25('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0x3b25('0x3')](0x0);var events={'afterCreate':_0x3b25('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x9623e1){return function(_0x1958fb,_0x58fb6f,_0x1d2847){VoiceExtensionEvents[_0x3b25('0x5')](_0x9623e1+':'+_0x1958fb['id'],_0x1958fb);VoiceExtensionEvents[_0x3b25('0x5')](_0x9623e1,_0x1958fb);_0x1d2847(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0x3b25('0x6')](e,emitEvent(event));}}module[_0x3b25('0x7')]=VoiceExtensionEvents;
\ No newline at end of file
index 831225e..ddae7b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea3a=['exten','alias','NoOp','CDR(routeAlias)=','inbound','push','CDR(routeid)=','context','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','No\x20alias\x20set','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','url','length','name','param','split','prefix','phone','SIP','join','none','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','interval','IntervalId','*,*,*,*','intervals','map','filter','toLowerCase','tag','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','answer','queue','playback','app','appType','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','appdata','agi','XMCS-UNIQUEID=${CHANNEL(LINKEDID)}','priority','last','concat','define','get','then','Hangup','lodash','./voiceExtension.attributes','exports','type','Set'];(function(_0x2f6799,_0x4e7f00){var _0x3cb26f=function(_0x3c5a3d){while(--_0x3c5a3d){_0x2f6799['push'](_0x2f6799['shift']());}};_0x3cb26f(++_0x4e7f00);}(_0xea3a,0x13f));var _0xaea3=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xea3a[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xaea3('0x0'));var attributes=require(_0xaea3('0x1'));module[_0xaea3('0x2')]=function(_0xd282ef){var _0x6a9f2e=_0xd282ef['models'];function _0xe7afc5(_0x4be0a2){var _0x5b0ade=0x2;var _0x4844f5=[{'type':_0x4be0a2[_0xaea3('0x3')],'app':_0xaea3('0x4'),'appdata':'CDR(type)='+_0x4be0a2[_0xaea3('0x3')],'context':_0x4be0a2['context'],'exten':_0x4be0a2[_0xaea3('0x5')],'priority':_0x5b0ade++,'VoiceExtensionId':_0x4be0a2['id']},{'type':_0x4be0a2[_0xaea3('0x3')],'app':_0x4be0a2[_0xaea3('0x6')]?_0xaea3('0x4'):_0xaea3('0x7'),'appdata':_0x4be0a2['alias']?_0xaea3('0x8')+_0x4be0a2[_0xaea3('0x6')]:'No\x20alias\x20set','context':_0x4be0a2['context'],'exten':_0x4be0a2[_0xaea3('0x5')],'priority':_0x5b0ade++,'VoiceExtensionId':_0x4be0a2['id']}];if(_0x4be0a2[_0xaea3('0x3')]===_0xaea3('0x9')){_0x4844f5[_0xaea3('0xa')]({'type':_0xaea3('0x9'),'app':_0xaea3('0x4'),'appdata':_0xaea3('0xb')+_0x4be0a2['id'],'context':_0x4be0a2[_0xaea3('0xc')],'exten':_0x4be0a2[_0xaea3('0x5')],'priority':_0x5b0ade++,'VoiceExtensionId':_0x4be0a2['id']});}_0x4844f5[_0xaea3('0xa')]({'type':_0x4be0a2[_0xaea3('0x3')],'app':_0xaea3('0x4'),'appdata':_0xaea3('0xd'),'context':_0x4be0a2[_0xaea3('0xc')],'exten':_0x4be0a2['exten'],'priority':_0x5b0ade++,'VoiceExtensionId':_0x4be0a2['id']},{'type':_0x4be0a2['type'],'app':'Set','appdata':_0xaea3('0xe'),'context':_0x4be0a2[_0xaea3('0xc')],'exten':_0x4be0a2[_0xaea3('0x5')],'priority':_0x5b0ade++,'VoiceExtensionId':_0x4be0a2['id']},{'type':_0x4be0a2[_0xaea3('0x3')],'app':_0xaea3('0x4'),'appdata':_0xaea3('0xf'),'context':_0x4be0a2[_0xaea3('0xc')],'exten':_0x4be0a2['exten'],'priority':_0x5b0ade++,'VoiceExtensionId':_0x4be0a2['id']});return _0x4844f5;}function _0x4649e7(_0xd3c75b){var _0x1e76a2=0x2;var _0x37f3e0=[{'type':_0xaea3('0x10'),'app':_0xaea3('0x4'),'appdata':'CDR(type)=outbound','context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b[_0xaea3('0x5')],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':_0xaea3('0x10'),'app':_0xd3c75b[_0xaea3('0x6')]?_0xaea3('0x4'):'NoOp','appdata':_0xd3c75b[_0xaea3('0x6')]?_0xaea3('0x8')+_0xd3c75b['alias']:_0xaea3('0x11'),'context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b[_0xaea3('0x5')],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':_0xaea3('0x10'),'app':'Set','appdata':'CDR(destination)='+(_0xd3c75b[_0xaea3('0x12')]?_0xaea3('0x13')+_0xd3c75b[_0xaea3('0x12')]+'}':_0xaea3('0x14')),'context':_0xd3c75b['context'],'exten':_0xd3c75b[_0xaea3('0x5')],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':_0xaea3('0x10'),'app':_0xaea3('0x4'),'appdata':_0xaea3('0xb')+_0xd3c75b['id'],'context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b['exten'],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':'outbound','app':_0xaea3('0x15'),'appdata':_0xaea3('0x16')+(_0x1e76a2+0x2)+_0xaea3('0x17')+(_0x1e76a2+0x1)+')','context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b[_0xaea3('0x5')],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':_0xaea3('0x10'),'app':_0xaea3('0x4'),'appdata':_0xd3c75b['cutdigits']?'CDR(prefix)=${EXTEN:0:'+_0xd3c75b[_0xaea3('0x12')]+'}':_0xaea3('0x18'),'context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b[_0xaea3('0x5')],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':_0xaea3('0x10'),'app':'Set','appdata':_0xaea3('0xd'),'context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b[_0xaea3('0x5')],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':'outbound','app':_0xaea3('0x4'),'appdata':_0xaea3('0xe'),'context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b['exten'],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':'outbound','app':_0xaea3('0x4'),'appdata':_0xaea3('0xf'),'context':_0xd3c75b['context'],'exten':_0xd3c75b['exten'],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':'outbound','app':_0xaea3('0x4'),'appdata':_0xaea3('0x19')+_0xd3c75b['id'],'context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b[_0xaea3('0x5')],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']}];if(_0xd3c75b[_0xaea3('0x1a')](_0xaea3('0x1b'))&&_0xd3c75b[_0xaea3('0x1b')]!=='none'){_0x37f3e0[_0xaea3('0xa')]({'type':_0xaea3('0x10'),'app':_0xaea3('0x4'),'appdata':_0xaea3('0x1c'),'context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b[_0xaea3('0x5')],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']},{'type':'outbound','app':_0xaea3('0x4'),'appdata':_0xaea3('0x1d')+_0xd3c75b[_0xaea3('0x1b')]||_0xaea3('0x1e'),'context':_0xd3c75b[_0xaea3('0xc')],'exten':_0xd3c75b[_0xaea3('0x5')],'priority':_0x1e76a2++,'VoiceExtensionId':_0xd3c75b['id']});}return _0x37f3e0;}function _0x5e880b(_0x4598a0,_0x426479){var _0x211369=[{'name':_0xaea3('0x1f'),'param':0x0},{'name':_0xaea3('0x20'),'param':0x1},{'name':_0xaea3('0x21'),'param':0x2},{'name':_0xaea3('0x22'),'param':0x3}];var _0x13e2d2={};var _0x355f6c=_0x426479['split'](',');var _0x655dc2=[];for(var _0x35a76f=0x0;_0x35a76f<_0x211369[_0xaea3('0x23')];_0x35a76f++){switch(_0x211369[_0x35a76f][_0xaea3('0x24')]){case'trunk':_0x13e2d2[_0xaea3('0x1f')]=_0x355f6c[_0x211369[_0x35a76f]['param']]['split']('/')[0x1];_0x13e2d2['phone']=_0x355f6c[_0x211369[_0x35a76f][_0xaea3('0x25')]][_0xaea3('0x26')]('/')[0x2];_0x13e2d2[_0xaea3('0x27')]=_0x13e2d2[_0xaea3('0x28')]?_0x13e2d2[_0xaea3('0x28')]['split']('$')[0x0]:undefined;_0x13e2d2[_0xaea3('0x28')]=_0x4598a0['cutdigits']?(_0x13e2d2['prefix']||'')+_0xaea3('0x13')+_0x4598a0[_0xaea3('0x12')]+'}':(_0x13e2d2[_0xaea3('0x27')]||'')+'${EXTEN}';_0x655dc2[_0x211369[_0x35a76f]['param']]=[_0xaea3('0x29'),_0x13e2d2['trunk'],_0x13e2d2[_0xaea3('0x28')]][_0xaea3('0x2a')]('/');break;case _0xaea3('0x21'):_0x13e2d2['options']=_0x355f6c[_0x211369[_0x35a76f][_0xaea3('0x25')]];if(_0x4598a0[_0xaea3('0x1b')]!==_0xaea3('0x2b')){if(_0x13e2d2[_0xaea3('0x21')]['indexOf'](_0xaea3('0x2c'))<0x0){_0x13e2d2['options']+=_0xaea3('0x2c');}}else{_0x13e2d2[_0xaea3('0x21')]=_0x13e2d2[_0xaea3('0x21')][_0xaea3('0x2d')]('U(xcally-mixmonitor-context)','');}_0x655dc2[_0x211369[_0x35a76f]['param']]=_0x13e2d2[_0xaea3('0x21')];break;default:_0x655dc2[_0x211369[_0x35a76f]['param']]=_0x355f6c[_0x211369[_0x35a76f][_0xaea3('0x25')]];}}return _0x655dc2[_0xaea3('0x2a')](',');}function _0x514e05(_0x2ec54a,_0xee0c11,_0x2dd8ae){return new Promise(function(_0x364117,_0x478d3f){var _0x394996=[];if(_[_0xaea3('0x2e')](_0xee0c11))return _0x364117(_0x394996);_0x6a9f2e[_0xaea3('0x2f')]['findAll']({'attributes':['id',_0xaea3('0x30'),_0xaea3('0x31')],'raw':!![]})['then'](function(_0x369228){for(var _0x595410=0x0,_0x26a289=0x0;_0x595410<_0xee0c11[_0xaea3('0x23')];_0x595410++,_0x26a289=0x0){var _0x591021=_0xee0c11[_0x595410];var _0x17f0ed=[];var _0x253b33=[];delete _0x591021['id'];if(_0x591021[_0xaea3('0x30')]!==_0xaea3('0x32')){_0x591021[_0xaea3('0x33')]=[_0x591021[_0xaea3('0x30')]];}else{_0x591021[_0xaea3('0x33')]=_0x591021[_0xaea3('0x31')]?_[_0xaea3('0x34')](_[_0xaea3('0x35')](_0x369228,{'IntervalId':_0x591021[_0xaea3('0x31')]}),_0xaea3('0x30')):[];}_0x591021[_0xaea3('0xc')]=_0x2ec54a[_0xaea3('0xc')];_0x591021[_0xaea3('0x5')]=_0x2ec54a[_0xaea3('0x5')];if(_0x591021[_0xaea3('0x3')])_0x591021[_0xaea3('0x3')]=_0x591021[_0xaea3('0x3')][_0xaea3('0x36')]();if(_0x2ec54a[_0xaea3('0x3')]===_0xaea3('0x10')){if(_0x591021['hasOwnProperty'](_0xaea3('0x37'))&&_0x591021[_0xaea3('0x37')]&&_0x591021[_0xaea3('0x37')]!=='--'){_0x17f0ed[_0xaea3('0xa')]({'type':_0x591021['type'][_0xaea3('0x36')](),'app':'Set','appdata':_0xaea3('0x38')+_0x591021[_0xaea3('0x37')],'context':_0x2ec54a[_0xaea3('0xc')],'exten':_0x2ec54a[_0xaea3('0x5')],'priority':_0x591021['intervals'][_0xaea3('0x23')]+_0x2dd8ae+_0x26a289++,'VoiceExtensionId':_0x2ec54a['id']});}_0x17f0ed[_0xaea3('0xa')]({'type':_0x591021[_0xaea3('0x3')]['toLowerCase'](),'app':_0xaea3('0x15'),'appdata':_0xaea3('0x39')+(_0x591021[_0xaea3('0x3a')]?_0xaea3('0x3b')+_0x591021[_0xaea3('0x3a')]+')':'NoOp(No\x20number\x20available)'),'context':_0x2ec54a[_0xaea3('0xc')],'exten':_0x2ec54a['exten'],'priority':_0x591021[_0xaea3('0x33')][_0xaea3('0x23')]+_0x2dd8ae+_0x26a289++,'VoiceExtensionId':_0x2ec54a['id']});}else{if(_0x591021['hasOwnProperty'](_0xaea3('0x3c'))){if([_0xaea3('0x3d'),_0xaea3('0x3e')]['includes'](_0x591021[_0xaea3('0x3f')][_0xaea3('0x36')]())&&_0x591021[_0xaea3('0x40')]!=='custom'){if(_0x591021[_0xaea3('0x3c')]){_0x17f0ed['push']({'type':_0x591021[_0xaea3('0x3')][_0xaea3('0x36')](),'app':_0xaea3('0x15'),'appdata':_0xaea3('0x41'),'context':_0x2ec54a['context'],'exten':_0x2ec54a[_0xaea3('0x5')],'priority':_0x591021[_0xaea3('0x33')]['length']+_0x2dd8ae+_0x26a289++,'VoiceExtensionId':_0x2ec54a['id']});_0x17f0ed['push']({'type':_0x591021[_0xaea3('0x3')][_0xaea3('0x36')](),'app':_0xaea3('0x4'),'appdata':_0xaea3('0x42'),'context':_0x2ec54a[_0xaea3('0xc')],'exten':_0x2ec54a[_0xaea3('0x5')],'priority':_0x591021[_0xaea3('0x33')]['length']+_0x2dd8ae+_0x26a289++,'VoiceExtensionId':_0x2ec54a['id']});}else{_0x17f0ed['push']({'type':_0x591021[_0xaea3('0x3')][_0xaea3('0x36')](),'app':_0xaea3('0x15'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x2ec54a[_0xaea3('0xc')],'exten':_0x2ec54a[_0xaea3('0x5')],'priority':_0x591021['intervals'][_0xaea3('0x23')]+_0x2dd8ae+_0x26a289++,'VoiceExtensionId':_0x2ec54a['id']});_0x17f0ed[_0xaea3('0xa')]({'type':_0x591021[_0xaea3('0x3')][_0xaea3('0x36')](),'app':_0xaea3('0x4'),'appdata':_0xaea3('0x43'),'context':_0x2ec54a[_0xaea3('0xc')],'exten':_0x2ec54a[_0xaea3('0x5')],'priority':_0x591021[_0xaea3('0x33')]['length']+_0x2dd8ae+_0x26a289++,'VoiceExtensionId':_0x2ec54a['id']});}}}}for(var _0x308886=0x0;_0x308886<_0x591021[_0xaea3('0x33')][_0xaea3('0x23')];_0x308886++){var _0x1130b4=_0x2dd8ae+_0x591021[_0xaea3('0x33')]['length'];var _0x4f7205=_0x308886===_0x591021[_0xaea3('0x33')]['length']-0x1?_0x2dd8ae+_0x17f0ed[_0xaea3('0x23')]+_0x253b33[_0xaea3('0x23')]+0x2:_0x2dd8ae+_0x308886+0x1;_0x17f0ed[_0xaea3('0x44')](_0x308886,0x0,{'type':_0x2ec54a[_0xaea3('0x3')],'app':_0xaea3('0x45'),'appdata':_0x591021[_0xaea3('0x33')][_0x308886]+'?'+_0x2ec54a[_0xaea3('0xc')]+_0xaea3('0x46')+_0x1130b4+':'+_0x2ec54a[_0xaea3('0xc')]+_0xaea3('0x46')+_0x4f7205,'exten':_0x2ec54a[_0xaea3('0x5')],'context':_0x2ec54a[_0xaea3('0xc')],'priority':_0x2dd8ae+_0x308886,'VoiceExtensionId':_0x2ec54a['id']});}if(_0x591021['appType']==='outboundDial'){_0x591021[_0xaea3('0x47')]=_0x5e880b(_0x2ec54a,_0x591021[_0xaea3('0x47')]);}if(_0x591021[_0xaea3('0x40')]===_0xaea3('0x48')){_0x17f0ed[_0xaea3('0xa')]({'type':_0x591021[_0xaea3('0x3')]['toLowerCase'](),'app':'Set','appdata':_0xaea3('0x49'),'context':_0x2ec54a[_0xaea3('0xc')],'exten':_0x2ec54a[_0xaea3('0x5')],'priority':_0x591021[_0xaea3('0x33')][_0xaea3('0x23')]+_0x2dd8ae+_0x26a289++,'VoiceExtensionId':_0x2ec54a['id']});}_0x591021[_0xaea3('0x4a')]=_0x17f0ed[_0xaea3('0x23')]?_[_0xaea3('0x4b')](_0x17f0ed)[_0xaea3('0x4a')]+0x1:_0x2dd8ae;_0x394996=_[_0xaea3('0x4c')](_0x394996,_0x17f0ed,[_0x591021],_0x253b33);_0x2dd8ae=_[_0xaea3('0x4b')](_0x394996)['priority']+0x1;}return _0x364117(_0x394996);})['catch'](function(_0x3accb3){_0x478d3f(_0x3accb3);});});}return _0xd282ef[_0xaea3('0x4d')]('VoiceExtension',attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x57d6c9){var _0x248c7b=this[_0xaea3('0x4e')]({'plain':!![]});var _0x95f53c=_0x248c7b['type']===_0xaea3('0x10')?_0x4649e7(_0x248c7b):_0xe7afc5(_0x248c7b);return _0x514e05(_0x248c7b,_0x57d6c9,_[_0xaea3('0x4b')](_0x95f53c)[_0xaea3('0x4a')]+0x1)[_0xaea3('0x4f')](function(_0x1a37df){var _0x3388f5=_['concat'](_0x95f53c,_0x1a37df);_0x3388f5[_0xaea3('0xa')]({'type':_0x248c7b[_0xaea3('0x3')],'app':_0xaea3('0x50'),'exten':_0x248c7b[_0xaea3('0x5')],'context':_0x248c7b[_0xaea3('0xc')],'priority':_[_0xaea3('0x4b')](_0x3388f5)[_0xaea3('0x4a')]+0x1,'VoiceExtensionId':_0x248c7b['id']});return _0x3388f5;});}}});};
\ No newline at end of file
+var _0xd54a=['_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','trunk','timeout','options','url','length','name','split','phone','param','prefix','${EXTEN:','indexOf','U(xcally-mixmonitor-context)','replace','Interval','interval','IntervalId','*,*,*,*','intervals','map','filter','tag','toLowerCase','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','playback','includes','app','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','outboundDial','appdata','appType','agi','XMCS-UNIQUEID=${CHANNEL(LINKEDID)}','priority','last','concat','catch','voice_extensions','get','then','Hangup','lodash','exports','models','type','Set','CDR(type)=','context','exten','alias','NoOp','CDR(routeAlias)=','push','inbound','CDR(routeid)=','XCALLY-MOTION-PROGRESS=0','outbound','CDR(type)=outbound','No\x20alias\x20set','CDR(destination)=','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','MONITOR_OPTIONS=ab','outboundrouteid=','hasOwnProperty','recordingFormat','none'];(function(_0x3f1c8e,_0x357542){var _0x15ce00=function(_0x347b63){while(--_0x347b63){_0x3f1c8e['push'](_0x3f1c8e['shift']());}};_0x15ce00(++_0x357542);}(_0xd54a,0x1df));var _0xad54=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0xd54a[_0x1694f5];return _0x5b4321;};'use strict';var _=require(_0xad54('0x0'));var attributes=require('./voiceExtension.attributes');module[_0xad54('0x1')]=function(_0x2de4a4){var _0x583cd9=_0x2de4a4[_0xad54('0x2')];function _0x2d8b75(_0x43c8a9){var _0x5a8682=0x2;var _0x1d5e1a=[{'type':_0x43c8a9[_0xad54('0x3')],'app':_0xad54('0x4'),'appdata':_0xad54('0x5')+_0x43c8a9[_0xad54('0x3')],'context':_0x43c8a9[_0xad54('0x6')],'exten':_0x43c8a9[_0xad54('0x7')],'priority':_0x5a8682++,'VoiceExtensionId':_0x43c8a9['id']},{'type':_0x43c8a9[_0xad54('0x3')],'app':_0x43c8a9[_0xad54('0x8')]?_0xad54('0x4'):_0xad54('0x9'),'appdata':_0x43c8a9[_0xad54('0x8')]?_0xad54('0xa')+_0x43c8a9[_0xad54('0x8')]:'No\x20alias\x20set','context':_0x43c8a9[_0xad54('0x6')],'exten':_0x43c8a9[_0xad54('0x7')],'priority':_0x5a8682++,'VoiceExtensionId':_0x43c8a9['id']}];if(_0x43c8a9[_0xad54('0x3')]==='inbound'){_0x1d5e1a[_0xad54('0xb')]({'type':_0xad54('0xc'),'app':_0xad54('0x4'),'appdata':_0xad54('0xd')+_0x43c8a9['id'],'context':_0x43c8a9[_0xad54('0x6')],'exten':_0x43c8a9[_0xad54('0x7')],'priority':_0x5a8682++,'VoiceExtensionId':_0x43c8a9['id']});}_0x1d5e1a[_0xad54('0xb')]({'type':_0x43c8a9['type'],'app':'Set','appdata':'XCALLY-MOTION-ANSWER=0','context':_0x43c8a9['context'],'exten':_0x43c8a9[_0xad54('0x7')],'priority':_0x5a8682++,'VoiceExtensionId':_0x43c8a9['id']},{'type':_0x43c8a9[_0xad54('0x3')],'app':_0xad54('0x4'),'appdata':_0xad54('0xe'),'context':_0x43c8a9[_0xad54('0x6')],'exten':_0x43c8a9[_0xad54('0x7')],'priority':_0x5a8682++,'VoiceExtensionId':_0x43c8a9['id']},{'type':_0x43c8a9['type'],'app':'Set','appdata':'MONITOR_OPTIONS=ab','context':_0x43c8a9[_0xad54('0x6')],'exten':_0x43c8a9[_0xad54('0x7')],'priority':_0x5a8682++,'VoiceExtensionId':_0x43c8a9['id']});return _0x1d5e1a;}function _0x2c4a4f(_0x56a864){var _0x2d32c3=0x2;var _0x34f000=[{'type':_0xad54('0xf'),'app':_0xad54('0x4'),'appdata':_0xad54('0x10'),'context':_0x56a864[_0xad54('0x6')],'exten':_0x56a864[_0xad54('0x7')],'priority':_0x2d32c3++,'VoiceExtensionId':_0x56a864['id']},{'type':'outbound','app':_0x56a864[_0xad54('0x8')]?_0xad54('0x4'):_0xad54('0x9'),'appdata':_0x56a864[_0xad54('0x8')]?_0xad54('0xa')+_0x56a864['alias']:_0xad54('0x11'),'context':_0x56a864[_0xad54('0x6')],'exten':_0x56a864[_0xad54('0x7')],'priority':_0x2d32c3++,'VoiceExtensionId':_0x56a864['id']},{'type':_0xad54('0xf'),'app':_0xad54('0x4'),'appdata':_0xad54('0x12')+(_0x56a864[_0xad54('0x13')]?'${EXTEN:'+_0x56a864['cutdigits']+'}':_0xad54('0x14')),'context':_0x56a864[_0xad54('0x6')],'exten':_0x56a864['exten'],'priority':_0x2d32c3++,'VoiceExtensionId':_0x56a864['id']},{'type':_0xad54('0xf'),'app':'Set','appdata':_0xad54('0xd')+_0x56a864['id'],'context':_0x56a864[_0xad54('0x6')],'exten':_0x56a864[_0xad54('0x7')],'priority':_0x2d32c3++,'VoiceExtensionId':_0x56a864['id']},{'type':'outbound','app':_0xad54('0x15'),'appdata':_0xad54('0x16')+(_0x2d32c3+0x2)+_0xad54('0x17')+(_0x2d32c3+0x1)+')','context':_0x56a864['context'],'exten':_0x56a864[_0xad54('0x7')],'priority':_0x2d32c3++,'VoiceExtensionId':_0x56a864['id']},{'type':_0xad54('0xf'),'app':'Set','appdata':_0x56a864['cutdigits']?_0xad54('0x18')+_0x56a864[_0xad54('0x13')]+'}':_0xad54('0x19'),'context':_0x56a864[_0xad54('0x6')],'exten':_0x56a864[_0xad54('0x7')],'priority':_0x2d32c3++,'VoiceExtensionId':_0x56a864['id']},{'type':_0xad54('0xf'),'app':_0xad54('0x4'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x56a864['context'],'exten':_0x56a864['exten'],'priority':_0x2d32c3++,'VoiceExtensionId':_0x56a864['id']},{'type':'outbound','app':_0xad54('0x4'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x56a864[_0xad54('0x6')],'exten':_0x56a864[_0xad54('0x7')],'priority':_0x2d32c3++,'VoiceExtensionId':_0x56a864['id']},{'type':_0xad54('0xf'),'app':_0xad54('0x4'),'appdata':_0xad54('0x1a'),'context':_0x56a864['context'],'exten':_0x56a864['exten'],'priority':_0x2d32c3++,'VoiceExtensionId':_0x56a864['id']},{'type':_0xad54('0xf'),'app':_0xad54('0x4'),'appdata':_0xad54('0x1b')+_0x56a864['id'],'context':_0x56a864[_0xad54('0x6')],'exten':_0x56a864[_0xad54('0x7')],'priority':_0x2d32c3++,'VoiceExtensionId':_0x56a864['id']}];if(_0x56a864[_0xad54('0x1c')](_0xad54('0x1d'))&&_0x56a864[_0xad54('0x1d')]!==_0xad54('0x1e')){_0x34f000[_0xad54('0xb')]({'type':'outbound','app':_0xad54('0x4'),'appdata':_0xad54('0x1f'),'context':_0x56a864[_0xad54('0x6')],'exten':_0x56a864[_0xad54('0x7')],'priority':_0x2d32c3++,'VoiceExtensionId':_0x56a864['id']},{'type':_0xad54('0xf'),'app':_0xad54('0x4'),'appdata':_0xad54('0x20')+_0x56a864[_0xad54('0x1d')]||_0xad54('0x21'),'context':_0x56a864[_0xad54('0x6')],'exten':_0x56a864[_0xad54('0x7')],'priority':_0x2d32c3++,'VoiceExtensionId':_0x56a864['id']});}return _0x34f000;}function _0x56fda0(_0x20fb7f,_0x1f580e){var _0x5f5ab3=[{'name':_0xad54('0x22'),'param':0x0},{'name':_0xad54('0x23'),'param':0x1},{'name':_0xad54('0x24'),'param':0x2},{'name':_0xad54('0x25'),'param':0x3}];var _0x891f15={};var _0x3edca7=_0x1f580e['split'](',');var _0x576a76=[];for(var _0x31f0ea=0x0;_0x31f0ea<_0x5f5ab3[_0xad54('0x26')];_0x31f0ea++){switch(_0x5f5ab3[_0x31f0ea][_0xad54('0x27')]){case'trunk':_0x891f15['trunk']=_0x3edca7[_0x5f5ab3[_0x31f0ea]['param']][_0xad54('0x28')]('/')[0x1];_0x891f15[_0xad54('0x29')]=_0x3edca7[_0x5f5ab3[_0x31f0ea][_0xad54('0x2a')]]['split']('/')[0x2];_0x891f15['prefix']=_0x891f15[_0xad54('0x29')]?_0x891f15[_0xad54('0x29')][_0xad54('0x28')]('$')[0x0]:undefined;_0x891f15[_0xad54('0x29')]=_0x20fb7f[_0xad54('0x13')]?(_0x891f15[_0xad54('0x2b')]||'')+_0xad54('0x2c')+_0x20fb7f[_0xad54('0x13')]+'}':(_0x891f15['prefix']||'')+'${EXTEN}';_0x576a76[_0x5f5ab3[_0x31f0ea][_0xad54('0x2a')]]=['SIP',_0x891f15[_0xad54('0x22')],_0x891f15['phone']]['join']('/');break;case _0xad54('0x24'):_0x891f15[_0xad54('0x24')]=_0x3edca7[_0x5f5ab3[_0x31f0ea][_0xad54('0x2a')]];if(_0x20fb7f['recordingFormat']!==_0xad54('0x1e')){if(_0x891f15[_0xad54('0x24')][_0xad54('0x2d')](_0xad54('0x2e'))<0x0){_0x891f15[_0xad54('0x24')]+=_0xad54('0x2e');}}else{_0x891f15[_0xad54('0x24')]=_0x891f15[_0xad54('0x24')][_0xad54('0x2f')]('U(xcally-mixmonitor-context)','');}_0x576a76[_0x5f5ab3[_0x31f0ea]['param']]=_0x891f15['options'];break;default:_0x576a76[_0x5f5ab3[_0x31f0ea][_0xad54('0x2a')]]=_0x3edca7[_0x5f5ab3[_0x31f0ea][_0xad54('0x2a')]];}}return _0x576a76['join'](',');}function _0x1ce58a(_0x888ef6,_0x477d85,_0x4cd104){return new Promise(function(_0x362f5e,_0x4d9286){var _0x46bc0a=[];if(_['isEmpty'](_0x477d85))return _0x362f5e(_0x46bc0a);_0x583cd9[_0xad54('0x30')]['findAll']({'attributes':['id',_0xad54('0x31'),_0xad54('0x32')],'raw':!![]})['then'](function(_0x23fef7){for(var _0x22301e=0x0,_0x400e55=0x0;_0x22301e<_0x477d85[_0xad54('0x26')];_0x22301e++,_0x400e55=0x0){var _0xe4f7d9=_0x477d85[_0x22301e];var _0x2a7ae9=[];var _0x3705cc=[];delete _0xe4f7d9['id'];if(_0xe4f7d9['interval']!==_0xad54('0x33')){_0xe4f7d9[_0xad54('0x34')]=[_0xe4f7d9[_0xad54('0x31')]];}else{_0xe4f7d9[_0xad54('0x34')]=_0xe4f7d9['IntervalId']?_[_0xad54('0x35')](_[_0xad54('0x36')](_0x23fef7,{'IntervalId':_0xe4f7d9[_0xad54('0x32')]}),_0xad54('0x31')):[];}_0xe4f7d9['context']=_0x888ef6['context'];_0xe4f7d9[_0xad54('0x7')]=_0x888ef6['exten'];if(_0xe4f7d9[_0xad54('0x3')])_0xe4f7d9[_0xad54('0x3')]=_0xe4f7d9[_0xad54('0x3')]['toLowerCase']();if(_0x888ef6['type']===_0xad54('0xf')){if(_0xe4f7d9[_0xad54('0x1c')](_0xad54('0x37'))&&_0xe4f7d9[_0xad54('0x37')]&&_0xe4f7d9[_0xad54('0x37')]!=='--'){_0x2a7ae9[_0xad54('0xb')]({'type':_0xe4f7d9[_0xad54('0x3')][_0xad54('0x38')](),'app':_0xad54('0x4'),'appdata':_0xad54('0x39')+_0xe4f7d9[_0xad54('0x37')],'context':_0x888ef6[_0xad54('0x6')],'exten':_0x888ef6[_0xad54('0x7')],'priority':_0xe4f7d9[_0xad54('0x34')][_0xad54('0x26')]+_0x4cd104+_0x400e55++,'VoiceExtensionId':_0x888ef6['id']});}_0x2a7ae9['push']({'type':_0xe4f7d9[_0xad54('0x3')][_0xad54('0x38')](),'app':'ExecIf','appdata':_0xad54('0x3a')+(_0xe4f7d9[_0xad54('0x3b')]?_0xad54('0x3c')+_0xe4f7d9[_0xad54('0x3b')]+')':_0xad54('0x3d')),'context':_0x888ef6[_0xad54('0x6')],'exten':_0x888ef6[_0xad54('0x7')],'priority':_0xe4f7d9[_0xad54('0x34')][_0xad54('0x26')]+_0x4cd104+_0x400e55++,'VoiceExtensionId':_0x888ef6['id']});}else{if(_0xe4f7d9[_0xad54('0x1c')](_0xad54('0x3e'))){if(['queue',_0xad54('0x3f')][_0xad54('0x40')](_0xe4f7d9[_0xad54('0x41')][_0xad54('0x38')]())&&_0xe4f7d9['appType']!=='custom'){if(_0xe4f7d9[_0xad54('0x3e')]){_0x2a7ae9[_0xad54('0xb')]({'type':_0xe4f7d9[_0xad54('0x3')]['toLowerCase'](),'app':_0xad54('0x15'),'appdata':_0xad54('0x42'),'context':_0x888ef6[_0xad54('0x6')],'exten':_0x888ef6['exten'],'priority':_0xe4f7d9[_0xad54('0x34')][_0xad54('0x26')]+_0x4cd104+_0x400e55++,'VoiceExtensionId':_0x888ef6['id']});_0x2a7ae9[_0xad54('0xb')]({'type':_0xe4f7d9[_0xad54('0x3')][_0xad54('0x38')](),'app':'Set','appdata':_0xad54('0x43'),'context':_0x888ef6[_0xad54('0x6')],'exten':_0x888ef6[_0xad54('0x7')],'priority':_0xe4f7d9['intervals']['length']+_0x4cd104+_0x400e55++,'VoiceExtensionId':_0x888ef6['id']});}else{_0x2a7ae9[_0xad54('0xb')]({'type':_0xe4f7d9[_0xad54('0x3')][_0xad54('0x38')](),'app':_0xad54('0x15'),'appdata':_0xad54('0x44'),'context':_0x888ef6[_0xad54('0x6')],'exten':_0x888ef6[_0xad54('0x7')],'priority':_0xe4f7d9[_0xad54('0x34')][_0xad54('0x26')]+_0x4cd104+_0x400e55++,'VoiceExtensionId':_0x888ef6['id']});_0x2a7ae9[_0xad54('0xb')]({'type':_0xe4f7d9[_0xad54('0x3')][_0xad54('0x38')](),'app':_0xad54('0x4'),'appdata':_0xad54('0x45'),'context':_0x888ef6[_0xad54('0x6')],'exten':_0x888ef6[_0xad54('0x7')],'priority':_0xe4f7d9[_0xad54('0x34')]['length']+_0x4cd104+_0x400e55++,'VoiceExtensionId':_0x888ef6['id']});}}}}for(var _0x56c33e=0x0;_0x56c33e<_0xe4f7d9[_0xad54('0x34')][_0xad54('0x26')];_0x56c33e++){var _0x46f0ba=_0x4cd104+_0xe4f7d9[_0xad54('0x34')]['length'];var _0xa9d166=_0x56c33e===_0xe4f7d9[_0xad54('0x34')][_0xad54('0x26')]-0x1?_0x4cd104+_0x2a7ae9[_0xad54('0x26')]+_0x3705cc[_0xad54('0x26')]+0x2:_0x4cd104+_0x56c33e+0x1;_0x2a7ae9['splice'](_0x56c33e,0x0,{'type':_0x888ef6[_0xad54('0x3')],'app':_0xad54('0x46'),'appdata':_0xe4f7d9[_0xad54('0x34')][_0x56c33e]+'?'+_0x888ef6[_0xad54('0x6')]+',${EXTEN},'+_0x46f0ba+':'+_0x888ef6[_0xad54('0x6')]+_0xad54('0x47')+_0xa9d166,'exten':_0x888ef6['exten'],'context':_0x888ef6[_0xad54('0x6')],'priority':_0x4cd104+_0x56c33e,'VoiceExtensionId':_0x888ef6['id']});}if(_0xe4f7d9['appType']===_0xad54('0x48')){_0xe4f7d9['appdata']=_0x56fda0(_0x888ef6,_0xe4f7d9[_0xad54('0x49')]);}if(_0xe4f7d9[_0xad54('0x4a')]===_0xad54('0x4b')){_0x2a7ae9[_0xad54('0xb')]({'type':_0xe4f7d9[_0xad54('0x3')][_0xad54('0x38')](),'app':_0xad54('0x4'),'appdata':_0xad54('0x4c'),'context':_0x888ef6[_0xad54('0x6')],'exten':_0x888ef6['exten'],'priority':_0xe4f7d9[_0xad54('0x34')][_0xad54('0x26')]+_0x4cd104+_0x400e55++,'VoiceExtensionId':_0x888ef6['id']});}_0xe4f7d9[_0xad54('0x4d')]=_0x2a7ae9[_0xad54('0x26')]?_[_0xad54('0x4e')](_0x2a7ae9)['priority']+0x1:_0x4cd104;_0x46bc0a=_[_0xad54('0x4f')](_0x46bc0a,_0x2a7ae9,[_0xe4f7d9],_0x3705cc);_0x4cd104=_[_0xad54('0x4e')](_0x46bc0a)[_0xad54('0x4d')]+0x1;}return _0x362f5e(_0x46bc0a);})[_0xad54('0x50')](function(_0x35a027){_0x4d9286(_0x35a027);});});}return _0x2de4a4['define']('VoiceExtension',attributes,{'tableName':_0xad54('0x51'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x3b1a92){var _0x1e9fd8=this[_0xad54('0x52')]({'plain':!![]});var _0x320dc5=_0x1e9fd8['type']===_0xad54('0xf')?_0x2c4a4f(_0x1e9fd8):_0x2d8b75(_0x1e9fd8);return _0x1ce58a(_0x1e9fd8,_0x3b1a92,_[_0xad54('0x4e')](_0x320dc5)[_0xad54('0x4d')]+0x1)[_0xad54('0x53')](function(_0x1472a9){var _0x43f5f3=_['concat'](_0x320dc5,_0x1472a9);_0x43f5f3['push']({'type':_0x1e9fd8[_0xad54('0x3')],'app':_0xad54('0x54'),'exten':_0x1e9fd8[_0xad54('0x7')],'context':_0x1e9fd8[_0xad54('0x6')],'priority':_[_0xad54('0x4e')](_0x43f5f3)[_0xad54('0x4d')]+0x1,'VoiceExtensionId':_0x1e9fd8['id']});return _0x43f5f3;});}}});};
\ No newline at end of file
index 1cd832f..24de0d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x522b=['include','model','then','lodash','util','bluebird','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','register','info','VoiceExtension,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','attributes','map'];(function(_0x5e202f,_0xaeb2a9){var _0x17cbc4=function(_0x3a4dba){while(--_0x3a4dba){_0x5e202f['push'](_0x5e202f['shift']());}};_0x17cbc4(++_0xaeb2a9);}(_0x522b,0x1c3));var _0xb522=function(_0x1d211b,_0x475f3b){_0x1d211b=_0x1d211b-0x0;var _0x47c88b=_0x522b[_0x1d211b];return _0x47c88b;};'use strict';var _=require(_0xb522('0x0'));var util=require(_0xb522('0x1'));var moment=require('moment');var BPromise=require(_0xb522('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb522('0x3'))['db'];var utils=require(_0xb522('0x4'));var logger=require('../../config/logger')(_0xb522('0x5'));var config=require(_0xb522('0x6'));var jayson=require(_0xb522('0x7'));var client=jayson[_0xb522('0x8')][_0xb522('0x9')]({'port':0x232a});config['redis']=_[_0xb522('0xa')](config[_0xb522('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb522('0xb')]));require('./voiceExtension.socket')[_0xb522('0xc')](socket);function respondWithRpcPromise(_0x265224,_0x4df613,_0x1e77ee){return new BPromise(function(_0x2676b7,_0x2fd1bd){return client['request'](_0x265224,_0x1e77ee)['then'](function(_0x37713e){logger[_0xb522('0xd')](_0xb522('0xe'),_0x4df613,'request\x20sent');logger[_0xb522('0xf')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0x4df613,_0xb522('0x10'),JSON[_0xb522('0x11')](_0x37713e));if(_0x37713e['error']){if(_0x37713e[_0xb522('0x12')]['code']===0x1f4){logger[_0xb522('0x12')](_0xb522('0xe'),_0x4df613,_0x37713e[_0xb522('0x12')][_0xb522('0x13')]);return _0x2fd1bd(_0x37713e[_0xb522('0x12')][_0xb522('0x13')]);}logger[_0xb522('0x12')]('VoiceExtension,\x20%s,\x20%s',_0x4df613,_0x37713e[_0xb522('0x12')]['message']);return _0x2676b7(_0x37713e[_0xb522('0x12')][_0xb522('0x13')]);}else{logger[_0xb522('0xd')]('VoiceExtension,\x20%s,\x20%s',_0x4df613,_0xb522('0x10'));_0x2676b7(_0x37713e['result'][_0xb522('0x13')]);}})[_0xb522('0x14')](function(_0x10b0b7){logger[_0xb522('0x12')](_0xb522('0xe'),_0x4df613,_0x10b0b7);_0x2fd1bd(_0x10b0b7);});});}exports[_0xb522('0x15')]=function(_0x326769){var _0x4a04a8=this;return new Promise(function(_0x58a513,_0x4e53be){return db[_0xb522('0x16')][_0xb522('0x17')]({'raw':_0x326769[_0xb522('0x18')]?_0x326769[_0xb522('0x18')][_0xb522('0x19')]===undefined?!![]:![]:!![],'where':_0x326769[_0xb522('0x18')]?_0x326769[_0xb522('0x18')][_0xb522('0x1a')]||null:null,'attributes':_0x326769[_0xb522('0x18')]?_0x326769[_0xb522('0x18')][_0xb522('0x1b')]||null:null,'limit':_0x326769[_0xb522('0x18')]?_0x326769[_0xb522('0x18')]['limit']||null:null,'include':_0x326769[_0xb522('0x18')]?_0x326769[_0xb522('0x18')]['include']?_[_0xb522('0x1c')](_0x326769[_0xb522('0x18')][_0xb522('0x1d')],function(_0x52d5db){return{'model':db[_0x52d5db[_0xb522('0x1e')]],'as':_0x52d5db['as'],'attributes':_0x52d5db['attributes'],'include':_0x52d5db[_0xb522('0x1d')]?_[_0xb522('0x1c')](_0x52d5db[_0xb522('0x1d')],function(_0x4295e6){return{'model':db[_0x4295e6['model']],'as':_0x4295e6['as'],'attributes':_0x4295e6['attributes'],'include':_0x4295e6[_0xb522('0x1d')]?_['map'](_0x4295e6[_0xb522('0x1d')],function(_0x430491){return{'model':db[_0x430491[_0xb522('0x1e')]],'as':_0x430491['as'],'attributes':_0x430491['attributes']};}):[]};}):[]};}):[]:[]})[_0xb522('0x1f')](function(_0x3c0528){logger['info'](_0xb522('0x15'),_0x326769);logger[_0xb522('0xf')](_0xb522('0x15'),_0x326769,JSON[_0xb522('0x11')](_0x3c0528));_0x58a513(_0x3c0528);})[_0xb522('0x14')](function(_0x5bc250){logger[_0xb522('0x12')](_0xb522('0x15'),_0x5bc250[_0xb522('0x13')],_0x326769);_0x4e53be(_0x4a04a8[_0xb522('0x12')](0x1f4,_0x5bc250[_0xb522('0x13')]));});});};
\ No newline at end of file
+var _0x2f2e=['VoiceExtension,\x20%s,\x20%s','request\x20sent','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','attributes','limit','include','map','model','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','http','redis','defaults','./voiceExtension.socket','request','then','info'];(function(_0x257642,_0x270a80){var _0x3d813b=function(_0x2a1c8a){while(--_0x2a1c8a){_0x257642['push'](_0x257642['shift']());}};_0x3d813b(++_0x270a80);}(_0x2f2e,0x146));var _0xe2f2=function(_0x141e03,_0x18340e){_0x141e03=_0x141e03-0x0;var _0x2074e3=_0x2f2e[_0x141e03];return _0x2074e3;};'use strict';var _=require('lodash');var util=require(_0xe2f2('0x0'));var moment=require(_0xe2f2('0x1'));var BPromise=require('bluebird');var rs=require(_0xe2f2('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe2f2('0x3'))['db'];var utils=require(_0xe2f2('0x4'));var logger=require(_0xe2f2('0x5'))(_0xe2f2('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0xe2f2('0x7')]({'port':0x232a});config[_0xe2f2('0x8')]=_[_0xe2f2('0x9')](config[_0xe2f2('0x8')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xe2f2('0xa'))['register'](socket);function respondWithRpcPromise(_0x3040e3,_0x15b3c7,_0x81d7a7){return new BPromise(function(_0x7ab967,_0x5f2e84){return client[_0xe2f2('0xb')](_0x3040e3,_0x81d7a7)[_0xe2f2('0xc')](function(_0x4b98f3){logger[_0xe2f2('0xd')](_0xe2f2('0xe'),_0x15b3c7,_0xe2f2('0xf'));logger[_0xe2f2('0x10')](_0xe2f2('0x11'),_0x15b3c7,_0xe2f2('0xf'),JSON[_0xe2f2('0x12')](_0x4b98f3));if(_0x4b98f3[_0xe2f2('0x13')]){if(_0x4b98f3[_0xe2f2('0x13')][_0xe2f2('0x14')]===0x1f4){logger['error'](_0xe2f2('0xe'),_0x15b3c7,_0x4b98f3[_0xe2f2('0x13')][_0xe2f2('0x15')]);return _0x5f2e84(_0x4b98f3[_0xe2f2('0x13')][_0xe2f2('0x15')]);}logger['error']('VoiceExtension,\x20%s,\x20%s',_0x15b3c7,_0x4b98f3[_0xe2f2('0x13')][_0xe2f2('0x15')]);return _0x7ab967(_0x4b98f3[_0xe2f2('0x13')]['message']);}else{logger[_0xe2f2('0xd')](_0xe2f2('0xe'),_0x15b3c7,_0xe2f2('0xf'));_0x7ab967(_0x4b98f3['result'][_0xe2f2('0x15')]);}})[_0xe2f2('0x16')](function(_0x16feea){logger[_0xe2f2('0x13')](_0xe2f2('0xe'),_0x15b3c7,_0x16feea);_0x5f2e84(_0x16feea);});});}exports[_0xe2f2('0x17')]=function(_0x5d664a){var _0x4041bd=this;return new Promise(function(_0x354e5c,_0x34a57c){return db[_0xe2f2('0x18')][_0xe2f2('0x19')]({'raw':_0x5d664a[_0xe2f2('0x1a')]?_0x5d664a[_0xe2f2('0x1a')][_0xe2f2('0x1b')]===undefined?!![]:![]:!![],'where':_0x5d664a[_0xe2f2('0x1a')]?_0x5d664a[_0xe2f2('0x1a')][_0xe2f2('0x1c')]||null:null,'attributes':_0x5d664a['options']?_0x5d664a[_0xe2f2('0x1a')][_0xe2f2('0x1d')]||null:null,'limit':_0x5d664a[_0xe2f2('0x1a')]?_0x5d664a[_0xe2f2('0x1a')][_0xe2f2('0x1e')]||null:null,'include':_0x5d664a[_0xe2f2('0x1a')]?_0x5d664a[_0xe2f2('0x1a')][_0xe2f2('0x1f')]?_[_0xe2f2('0x20')](_0x5d664a['options'][_0xe2f2('0x1f')],function(_0x56ab92){return{'model':db[_0x56ab92[_0xe2f2('0x21')]],'as':_0x56ab92['as'],'attributes':_0x56ab92[_0xe2f2('0x1d')],'include':_0x56ab92[_0xe2f2('0x1f')]?_['map'](_0x56ab92[_0xe2f2('0x1f')],function(_0x58e1fd){return{'model':db[_0x58e1fd[_0xe2f2('0x21')]],'as':_0x58e1fd['as'],'attributes':_0x58e1fd['attributes'],'include':_0x58e1fd[_0xe2f2('0x1f')]?_[_0xe2f2('0x20')](_0x58e1fd[_0xe2f2('0x1f')],function(_0x45e3f8){return{'model':db[_0x45e3f8[_0xe2f2('0x21')]],'as':_0x45e3f8['as'],'attributes':_0x45e3f8[_0xe2f2('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xc9e784){logger[_0xe2f2('0xd')](_0xe2f2('0x17'),_0x5d664a);logger['debug']('GetVoiceExtension',_0x5d664a,JSON[_0xe2f2('0x12')](_0xc9e784));_0x354e5c(_0xc9e784);})[_0xe2f2('0x16')](function(_0x1ef6cf){logger[_0xe2f2('0x13')]('GetVoiceExtension',_0x1ef6cf[_0xe2f2('0x15')],_0x5d664a);_0x34a57c(_0x4041bd['error'](0x1f4,_0x1ef6cf[_0xe2f2('0x15')]));});});};
\ No newline at end of file
index 5c16048..21fbf2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['emit','removeListener','register','length','./voiceExtension.events','save','update'];(function(_0x4d5376,_0x3d10c6){var _0x849db0=function(_0x316bce){while(--_0x316bce){_0x4d5376['push'](_0x4d5376['shift']());}};_0x849db0(++_0x3d10c6);}(_0x5fab,0x177));var _0xb5fa=function(_0x3ead55,_0x22bc51){_0x3ead55=_0x3ead55-0x0;var _0x3ea16d=_0x5fab[_0x3ead55];return _0x3ea16d;};'use strict';var VoiceExtensionEvents=require(_0xb5fa('0x0'));var events=[_0xb5fa('0x1'),'remove',_0xb5fa('0x2')];function createListener(_0x2e2a50,_0x3fc227){return function(_0x316ad0){_0x3fc227[_0xb5fa('0x3')](_0x2e2a50,_0x316ad0);};}function removeListener(_0x595d8b,_0x29390a){return function(){VoiceExtensionEvents[_0xb5fa('0x4')](_0x595d8b,_0x29390a);};}exports[_0xb5fa('0x5')]=function(_0x44df89){for(var _0x4a0249=0x0,_0x5d70f6=events[_0xb5fa('0x6')];_0x4a0249<_0x5d70f6;_0x4a0249++){var _0x1aec3e=events[_0x4a0249];var _0x9c7bce=createListener('voiceExtension:'+_0x1aec3e,_0x44df89);VoiceExtensionEvents['on'](_0x1aec3e,_0x9c7bce);}};
\ No newline at end of file
+var _0xc4aa=['remove','update','removeListener','register','length','./voiceExtension.events','save'];(function(_0x3449bd,_0x509f23){var _0x3eb2e3=function(_0xfc54a7){while(--_0xfc54a7){_0x3449bd['push'](_0x3449bd['shift']());}};_0x3eb2e3(++_0x509f23);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc4aa[_0x321bb2];return _0x9c12ed;};'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 8e8d946..75a4557 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb11=['index','/:id','show','get','/:id/messages','getMessages','post','create','update','destroy','exports','multer','path','connect-timeout','Router','../../components/auth/service','../../config/environment','./voiceMail.controller','isAuthenticated'];(function(_0x4a8389,_0x33974a){var _0x2a03b6=function(_0x1d2e9e){while(--_0x1d2e9e){_0x4a8389['push'](_0x4a8389['shift']());}};_0x2a03b6(++_0x33974a);}(_0xfb11,0x1ad));var _0x1fb1=function(_0x4d07cc,_0x587613){_0x4d07cc=_0x4d07cc-0x0;var _0x42de3b=_0xfb11[_0x4d07cc];return _0x42de3b;};'use strict';var multer=require(_0x1fb1('0x0'));var util=require('util');var path=require(_0x1fb1('0x1'));var timeout=require(_0x1fb1('0x2'));var express=require('express');var router=express[_0x1fb1('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1fb1('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x1fb1('0x5'));var controller=require(_0x1fb1('0x6'));router['get']('/',auth[_0x1fb1('0x7')](),controller[_0x1fb1('0x8')]);router['get'](_0x1fb1('0x9'),auth[_0x1fb1('0x7')](),controller[_0x1fb1('0xa')]);router[_0x1fb1('0xb')](_0x1fb1('0xc'),auth[_0x1fb1('0x7')](),controller[_0x1fb1('0xd')]);router[_0x1fb1('0xe')]('/',auth[_0x1fb1('0x7')](),controller[_0x1fb1('0xf')]);router['put'](_0x1fb1('0x9'),auth['isAuthenticated'](),controller[_0x1fb1('0x10')]);router['delete'](_0x1fb1('0x9'),auth[_0x1fb1('0x7')](),controller[_0x1fb1('0x11')]);module[_0x1fb1('0x12')]=router;
\ No newline at end of file
+var _0x6050=['/:id/messages','isAuthenticated','getMessages','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','index','show','get'];(function(_0x38cf8a,_0x189ff4){var _0x5a2120=function(_0x4527e4){while(--_0x4527e4){_0x38cf8a['push'](_0x38cf8a['shift']());}};_0x5a2120(++_0x189ff4);}(_0x6050,0x196));var _0x0605=function(_0x4e95e6,_0x532956){_0x4e95e6=_0x4e95e6-0x0;var _0x2d2219=_0x6050[_0x4e95e6];return _0x2d2219;};'use strict';var multer=require(_0x0605('0x0'));var util=require(_0x0605('0x1'));var path=require(_0x0605('0x2'));var timeout=require(_0x0605('0x3'));var express=require(_0x0605('0x4'));var router=express[_0x0605('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x0605('0x6'));var interaction=require(_0x0605('0x7'));var config=require(_0x0605('0x8'));var controller=require('./voiceMail.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x0605('0x9')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x0605('0xa')]);router[_0x0605('0xb')](_0x0605('0xc'),auth[_0x0605('0xd')](),controller[_0x0605('0xe')]);router['post']('/',auth[_0x0605('0xd')](),controller[_0x0605('0xf')]);router[_0x0605('0x10')](_0x0605('0x11'),auth[_0x0605('0xd')](),controller[_0x0605('0x12')]);router[_0x0605('0x13')](_0x0605('0x11'),auth[_0x0605('0xd')](),controller[_0x0605('0x14')]);module[_0x0605('0x15')]=router;
\ No newline at end of file
index c46cfa7..fffe15b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7c5=['TIMESTAMP','INTEGER','VIRTUAL','getDataValue','\x20-\x20','mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','setDataValue','email','string','trim','central','ENUM','yes','TINYINT(4)'];(function(_0x47b08a,_0x45dc17){var _0x561f40=function(_0x753dfc){while(--_0x753dfc){_0x47b08a['push'](_0x47b08a['shift']());}};_0x561f40(++_0x45dc17);}(_0xa7c5,0x1ce));var _0x5a7c=function(_0x42f0ad,_0xf61060){_0x42f0ad=_0x42f0ad-0x0;var _0x574e84=_0xa7c5[_0x42f0ad];return _0x574e84;};'use strict';var Sequelize=require(_0x5a7c('0x0'));module[_0x5a7c('0x1')]={'customer_id':{'type':Sequelize[_0x5a7c('0x2')]},'context':{'type':Sequelize[_0x5a7c('0x2')],'defaultValue':_0x5a7c('0x3'),'unique':_0x5a7c('0x4')},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':_0x5a7c('0x4')},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x5a7c('0x2')],'validate':{'isEmail':!![]},'set':function(_0xc7623){this[_0x5a7c('0x5')](_0x5a7c('0x6'),typeof _0xc7623===_0x5a7c('0x7')&&_0xc7623[_0x5a7c('0x8')]()?_0xc7623['trim']():null);}},'pager':{'type':Sequelize[_0x5a7c('0x2')]},'tz':{'type':Sequelize[_0x5a7c('0x2')],'defaultValue':_0x5a7c('0x9')},'attach':{'type':Sequelize[_0x5a7c('0xa')](_0x5a7c('0xb'),'no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize[_0x5a7c('0xa')](_0x5a7c('0xb'),'no'),'defaultValue':_0x5a7c('0xb'),'allowNull':![]},'dialout':{'type':Sequelize['STRING']},'callback':{'type':Sequelize[_0x5a7c('0x2')]},'review':{'type':Sequelize[_0x5a7c('0xa')](_0x5a7c('0xb'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize['ENUM'](_0x5a7c('0xb'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x5a7c('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x5a7c('0xc'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x5a7c('0xa')](_0x5a7c('0xb'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x5a7c('0xa')](_0x5a7c('0xb'),'no'),'defaultValue':'yes','allowNull':![]},'forcename':{'type':Sequelize[_0x5a7c('0xa')](_0x5a7c('0xb'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x5a7c('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x5a7c('0xa')]('yes','no'),'defaultValue':_0x5a7c('0xb'),'allowNull':![]},'stamp':{'type':_0x5a7c('0xd')},'emailsubject':{'type':Sequelize[_0x5a7c('0x2')]},'emailbody':{'type':Sequelize[_0x5a7c('0x2')]},'maxsecs':{'type':Sequelize[_0x5a7c('0xe')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x5a7c('0xe')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x5a7c('0xf')],'get':function(){return this[_0x5a7c('0x10')]('fullname')+_0x5a7c('0x11')+this[_0x5a7c('0x10')](_0x5a7c('0x12'));}}};
\ No newline at end of file
+var _0x1e00=['central','yes','ENUM','TINYINT(4)','INTEGER','VIRTUAL','getDataValue','fullname','\x20-\x20','mailbox','exports','STRING','from-voicemail','contest_mailbox','email','string','trim'];(function(_0x25871c,_0x3dcc15){var _0xdd1926=function(_0x22fa0f){while(--_0x22fa0f){_0x25871c['push'](_0x25871c['shift']());}};_0xdd1926(++_0x3dcc15);}(_0x1e00,0x15e));var _0x01e0=function(_0x65d206,_0x28c8bb){_0x65d206=_0x65d206-0x0;var _0x72c127=_0x1e00[_0x65d206];return _0x72c127;};'use strict';var Sequelize=require('sequelize');module[_0x01e0('0x0')]={'customer_id':{'type':Sequelize[_0x01e0('0x1')]},'context':{'type':Sequelize[_0x01e0('0x1')],'defaultValue':_0x01e0('0x2'),'unique':_0x01e0('0x3')},'mailbox':{'type':Sequelize[_0x01e0('0x1')],'defaultValue':'','allowNull':![],'unique':_0x01e0('0x3')},'password':{'type':Sequelize[_0x01e0('0x1')]},'fullname':{'type':Sequelize[_0x01e0('0x1')]},'email':{'type':Sequelize[_0x01e0('0x1')],'validate':{'isEmail':!![]},'set':function(_0x40d765){this['setDataValue'](_0x01e0('0x4'),typeof _0x40d765===_0x01e0('0x5')&&_0x40d765[_0x01e0('0x6')]()?_0x40d765[_0x01e0('0x6')]():null);}},'pager':{'type':Sequelize[_0x01e0('0x1')]},'tz':{'type':Sequelize['STRING'],'defaultValue':_0x01e0('0x7')},'attach':{'type':Sequelize['ENUM'](_0x01e0('0x8'),'no'),'defaultValue':_0x01e0('0x8'),'allowNull':![]},'saycid':{'type':Sequelize['ENUM'](_0x01e0('0x8'),'no'),'defaultValue':'yes','allowNull':![]},'dialout':{'type':Sequelize[_0x01e0('0x1')]},'callback':{'type':Sequelize[_0x01e0('0x1')]},'review':{'type':Sequelize[_0x01e0('0x9')](_0x01e0('0x8'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x01e0('0x9')](_0x01e0('0x8'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x01e0('0x9')](_0x01e0('0x8'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize['ENUM'](_0x01e0('0x8'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x01e0('0xa'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x01e0('0x9')](_0x01e0('0x8'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x01e0('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize['ENUM'](_0x01e0('0x8'),'no'),'defaultValue':_0x01e0('0x8'),'allowNull':![]},'forcename':{'type':Sequelize[_0x01e0('0x9')]('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x01e0('0x9')](_0x01e0('0x8'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x01e0('0x9')]('yes','no'),'defaultValue':_0x01e0('0x8'),'allowNull':![]},'stamp':{'type':'TIMESTAMP'},'emailsubject':{'type':Sequelize[_0x01e0('0x1')]},'emailbody':{'type':Sequelize[_0x01e0('0x1')]},'maxsecs':{'type':Sequelize[_0x01e0('0xb')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x01e0('0xb')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x01e0('0xc')],'get':function(){return this[_0x01e0('0xd')](_0x01e0('0xe'))+_0x01e0('0xf')+this[_0x01e0('0xd')](_0x01e0('0x10'));}}};
\ No newline at end of file
index 0271612..a7e0873 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a7=['status','json','offset','undefined','count','set','Content-Range','apply','save','update','then','destroy','get','Voicemails','error','stack','name','send','index','map','VoiceMail','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','filter','merge','includeAll','catch','show','params','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','body','getMessages','findOne','VoiceMailMessage','order','mailbox','options','findAndCountAll','rimraf','zip-dir','fast-json-patch','moment','mustache','sox','to-csv','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x91a7,0xe7));var _0x791a=function(_0x361f0a,_0x521a9a){_0x361f0a=_0x361f0a-0x0;var _0x374c0f=_0x91a7[_0x361f0a];return _0x374c0f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x791a('0x0'));var zipdir=require(_0x791a('0x1'));var jsonpatch=require(_0x791a('0x2'));var rp=require('request-promise');var moment=require(_0x791a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x791a('0x4'));var util=require('util');var path=require('path');var sox=require(_0x791a('0x5'));var csv=require(_0x791a('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x791a('0x7'));var _=require('lodash');var squel=require(_0x791a('0x8'));var crypto=require(_0x791a('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x791a('0xa'));var toCsv=require(_0x791a('0x6'));var querystring=require(_0x791a('0xb'));var Papa=require(_0x791a('0xc'));var Redis=require(_0x791a('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x791a('0xe'));var as=require(_0x791a('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x791a('0x10'))(_0x791a('0x11'));var utils=require(_0x791a('0x12'));var config=require(_0x791a('0x13'));var licenseUtil=require(_0x791a('0x14'));var db=require(_0x791a('0x15'))['db'];function respondWithStatusCode(_0x53dc41,_0x5daecd){_0x5daecd=_0x5daecd||0xcc;return function(_0xc92016){if(_0xc92016){return _0x53dc41[_0x791a('0x16')](_0x5daecd);}return _0x53dc41['status'](_0x5daecd)[_0x791a('0x17')]();};}function respondWithResult(_0x3a2ec6,_0x5d5b11){_0x5d5b11=_0x5d5b11||0xc8;return function(_0x2887f0){if(_0x2887f0){return _0x3a2ec6[_0x791a('0x18')](_0x5d5b11)[_0x791a('0x19')](_0x2887f0);}};}function respondWithFilteredResult(_0x5cdf2,_0x55e845){return function(_0x2ce2e0){if(_0x2ce2e0){var _0x575d11=typeof _0x55e845[_0x791a('0x1a')]===_0x791a('0x1b')&&typeof _0x55e845['limit']===_0x791a('0x1b');var _0x5bea2e=_0x2ce2e0[_0x791a('0x1c')];var _0x52941d=_0x575d11?0x0:_0x55e845['offset'];var _0x588d00=_0x575d11?_0x2ce2e0[_0x791a('0x1c')]:_0x55e845['offset']+_0x55e845['limit'];var _0x39c60b;if(_0x588d00>=_0x5bea2e){_0x588d00=_0x5bea2e;_0x39c60b=0xc8;}else{_0x39c60b=0xce;}_0x5cdf2[_0x791a('0x18')](_0x39c60b);return _0x5cdf2[_0x791a('0x1d')](_0x791a('0x1e'),_0x52941d+'-'+_0x588d00+'/'+_0x5bea2e)['json'](_0x2ce2e0);}return null;};}function patchUpdates(_0x189c0d){return function(_0xcb5e66){try{jsonpatch[_0x791a('0x1f')](_0xcb5e66,_0x189c0d,!![]);}catch(_0x280f1e){return BPromise['reject'](_0x280f1e);}return _0xcb5e66[_0x791a('0x20')]();};}function saveUpdates(_0x2054c6,_0x25bae5){return function(_0x9e17b5){if(_0x9e17b5){return _0x9e17b5[_0x791a('0x21')](_0x2054c6)[_0x791a('0x22')](function(_0x2241a0){return _0x2241a0;});}return null;};}function removeEntity(_0x45a67d,_0x323c6a){return function(_0xe8e452){if(_0xe8e452){return _0xe8e452[_0x791a('0x23')]()['then'](function(){var _0x1102c9=_0xe8e452[_0x791a('0x24')]({'plain':!![]});var _0x380329=_0x791a('0x25');return db['UserProfileResource'][_0x791a('0x23')]({'where':{'type':_0x380329,'resourceId':_0x1102c9['id']}})[_0x791a('0x22')](function(){return _0xe8e452;});})['then'](function(){_0x45a67d[_0x791a('0x18')](0xcc)[_0x791a('0x17')]();});}};}function handleEntityNotFound(_0x16dbaf,_0x4c1626){return function(_0x29194d){if(!_0x29194d){_0x16dbaf[_0x791a('0x16')](0x194);}return _0x29194d;};}function handleError(_0x2b0784,_0x395376){_0x395376=_0x395376||0x1f4;return function(_0x4f423){logger[_0x791a('0x26')](_0x4f423[_0x791a('0x27')]);if(_0x4f423[_0x791a('0x28')]){delete _0x4f423['name'];}_0x2b0784[_0x791a('0x18')](_0x395376)[_0x791a('0x29')](_0x4f423);};}exports[_0x791a('0x2a')]=function(_0x59d2c0,_0x1cdda9){var _0x5df656={},_0xc59f5e={},_0x2e4ec8={'count':0x0,'rows':[]};var _0xcde862=_[_0x791a('0x2b')](db[_0x791a('0x2c')][_0x791a('0x2d')],function(_0x15ff6e){return{'name':_0x15ff6e['fieldName'],'type':_0x15ff6e[_0x791a('0x2e')][_0x791a('0x2f')]};});_0xc59f5e[_0x791a('0x30')]=_[_0x791a('0x2b')](_0xcde862,_0x791a('0x28'));_0xc59f5e['query']=_[_0x791a('0x31')](_0x59d2c0[_0x791a('0x32')]);_0xc59f5e[_0x791a('0x33')]=_[_0x791a('0x34')](_0xc59f5e[_0x791a('0x30')],_0xc59f5e['query']);_0x5df656[_0x791a('0x35')]=_[_0x791a('0x34')](_0xc59f5e[_0x791a('0x30')],qs[_0x791a('0x36')](_0x59d2c0[_0x791a('0x32')]['fields']));_0x5df656[_0x791a('0x35')]=_0x5df656['attributes'][_0x791a('0x37')]?_0x5df656['attributes']:_0xc59f5e['model'];if(!_0x59d2c0[_0x791a('0x32')][_0x791a('0x38')](_0x791a('0x39'))){_0x5df656[_0x791a('0x3a')]=qs[_0x791a('0x3a')](_0x59d2c0[_0x791a('0x32')][_0x791a('0x3a')]);_0x5df656['offset']=qs[_0x791a('0x1a')](_0x59d2c0['query'][_0x791a('0x1a')]);}_0x5df656['order']=qs[_0x791a('0x3b')](_0x59d2c0[_0x791a('0x32')]['sort']);_0x5df656[_0x791a('0x3c')]=qs[_0x791a('0x33')](_['pick'](_0x59d2c0[_0x791a('0x32')],_0xc59f5e[_0x791a('0x33')]),_0xcde862);if(_0x59d2c0[_0x791a('0x32')][_0x791a('0x3d')]){_0x5df656[_0x791a('0x3c')]=_[_0x791a('0x3e')](_0x5df656[_0x791a('0x3c')],{'$or':_[_0x791a('0x2b')](_0xcde862,function(_0xc0fb63){if(_0xc0fb63[_0x791a('0x2e')]!=='VIRTUAL'){var _0x15f066={};_0x15f066[_0xc0fb63[_0x791a('0x28')]]={'$like':'%'+_0x59d2c0[_0x791a('0x32')]['filter']+'%'};return _0x15f066;}})});}_0x5df656=_[_0x791a('0x3e')]({},_0x5df656,_0x59d2c0['options']);var _0x5bad7d={'where':_0x5df656['where']};return db[_0x791a('0x2c')][_0x791a('0x1c')](_0x5bad7d)['then'](function(_0x415c44){_0x2e4ec8[_0x791a('0x1c')]=_0x415c44;if(_0x59d2c0[_0x791a('0x32')][_0x791a('0x3f')]){_0x5df656['include']=[{'all':!![]}];}return db['VoiceMail']['findAll'](_0x5df656);})[_0x791a('0x22')](function(_0x216dd3){_0x2e4ec8['rows']=_0x216dd3;return _0x2e4ec8;})[_0x791a('0x22')](respondWithFilteredResult(_0x1cdda9,_0x5df656))[_0x791a('0x40')](handleError(_0x1cdda9,null));};exports[_0x791a('0x41')]=function(_0x954164,_0x508727){var _0x11263d={'raw':!![],'where':{'id':_0x954164[_0x791a('0x42')]['id']}},_0x5911db={};_0x5911db[_0x791a('0x30')]=_[_0x791a('0x31')](db[_0x791a('0x2c')][_0x791a('0x2d')]);_0x5911db['query']=_[_0x791a('0x31')](_0x954164[_0x791a('0x32')]);_0x5911db[_0x791a('0x33')]=_[_0x791a('0x34')](_0x5911db[_0x791a('0x30')],_0x5911db['query']);_0x11263d[_0x791a('0x35')]=_[_0x791a('0x34')](_0x5911db['model'],qs['fields'](_0x954164[_0x791a('0x32')][_0x791a('0x36')]));_0x11263d[_0x791a('0x35')]=_0x11263d['attributes']['length']?_0x11263d[_0x791a('0x35')]:_0x5911db[_0x791a('0x30')];if(_0x954164['query'][_0x791a('0x3f')]){_0x11263d[_0x791a('0x43')]=[{'all':!![]}];}_0x11263d=_[_0x791a('0x3e')]({},_0x11263d,_0x954164['options']);return db['VoiceMail'][_0x791a('0x44')](_0x11263d)[_0x791a('0x22')](handleEntityNotFound(_0x508727,null))[_0x791a('0x22')](respondWithResult(_0x508727,null))[_0x791a('0x40')](handleError(_0x508727,null));};exports['create']=function(_0x2d7c7d,_0x9f768a){return db[_0x791a('0x2c')][_0x791a('0x45')](_0x2d7c7d['body'],{})[_0x791a('0x22')](function(_0x19654d){var _0xe0696b=_0x2d7c7d[_0x791a('0x46')][_0x791a('0x24')]({'plain':!![]});if(!_0xe0696b)throw new Error(_0x791a('0x47'));if(_0xe0696b[_0x791a('0x48')]==='user'){var _0xdcb1b=_0x19654d[_0x791a('0x24')]({'plain':!![]});var _0x4bffa6=_0x791a('0x25');return db[_0x791a('0x49')]['find']({'where':{'name':_0x4bffa6,'userProfileId':_0xe0696b[_0x791a('0x4a')]},'raw':!![]})[_0x791a('0x22')](function(_0x12178e){if(_0x12178e&&_0x12178e[_0x791a('0x4b')]===0x0){return db[_0x791a('0x4c')]['create']({'name':_0xdcb1b['name'],'resourceId':_0xdcb1b['id'],'type':_0x12178e['name'],'sectionId':_0x12178e['id']},{})[_0x791a('0x22')](function(){return _0x19654d;});}else{return _0x19654d;}})['catch'](function(_0x4c7555){logger[_0x791a('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4c7555);throw _0x4c7555;});}return _0x19654d;})[_0x791a('0x22')](respondWithResult(_0x9f768a,0xc9))[_0x791a('0x40')](handleError(_0x9f768a,null));};exports['update']=function(_0x5166b5,_0x3599f6){if(_0x5166b5['body']['id']){delete _0x5166b5[_0x791a('0x4d')]['id'];}return db[_0x791a('0x2c')][_0x791a('0x44')]({'where':{'id':_0x5166b5['params']['id']}})[_0x791a('0x22')](handleEntityNotFound(_0x3599f6,null))[_0x791a('0x22')](saveUpdates(_0x5166b5['body'],null))[_0x791a('0x22')](respondWithResult(_0x3599f6,null))[_0x791a('0x40')](handleError(_0x3599f6,null));};exports[_0x791a('0x23')]=function(_0x34d53c,_0x450ad8){return db[_0x791a('0x2c')]['find']({'where':{'id':_0x34d53c['params']['id']}})[_0x791a('0x22')](handleEntityNotFound(_0x450ad8,null))['then'](removeEntity(_0x450ad8,null))[_0x791a('0x40')](handleError(_0x450ad8,null));};exports[_0x791a('0x4e')]=function(_0x18ad89,_0xf11dea,_0x3b760c){return db[_0x791a('0x2c')][_0x791a('0x4f')]({'where':{'id':_0x18ad89['params']['id']}})[_0x791a('0x22')](handleEntityNotFound(_0xf11dea,null))[_0x791a('0x22')](function(_0xc34c5b){var _0x1a4376;var _0x2d671f={},_0xe062f1={};_0xe062f1[_0x791a('0x30')]=_['keys'](db[_0x791a('0x50')]['rawAttributes']);_0xe062f1['query']=_[_0x791a('0x31')](_0x18ad89[_0x791a('0x32')]);_0xe062f1[_0x791a('0x33')]=_[_0x791a('0x34')](_0xe062f1[_0x791a('0x30')],_0xe062f1[_0x791a('0x32')]);_0x2d671f[_0x791a('0x35')]=_[_0x791a('0x34')](_0xe062f1[_0x791a('0x30')],qs[_0x791a('0x36')](_0x18ad89[_0x791a('0x32')][_0x791a('0x36')]));_0x2d671f[_0x791a('0x35')]=_0x2d671f[_0x791a('0x35')][_0x791a('0x37')]?_0x2d671f[_0x791a('0x35')]:_0xe062f1[_0x791a('0x30')];if(!_0x18ad89[_0x791a('0x32')][_0x791a('0x38')](_0x791a('0x39'))){_0x2d671f['limit']=qs[_0x791a('0x3a')](_0x18ad89[_0x791a('0x32')][_0x791a('0x3a')]);_0x2d671f[_0x791a('0x1a')]=qs[_0x791a('0x1a')](_0x18ad89['query'][_0x791a('0x1a')]);}_0x2d671f[_0x791a('0x51')]=qs[_0x791a('0x3b')](_0x18ad89[_0x791a('0x32')]['sort']);_0x2d671f[_0x791a('0x3c')]=qs['filters'](_['pick'](_0x18ad89['query'],_0xe062f1['filters']));if(_0x18ad89[_0x791a('0x32')][_0x791a('0x3d')]){_0x2d671f[_0x791a('0x3c')]=_[_0x791a('0x3e')](_0x2d671f[_0x791a('0x3c')],{'$or':_[_0x791a('0x2b')](_0x2d671f[_0x791a('0x35')],function(_0x5dca78){var _0x522cb8={};_0x522cb8[_0x5dca78]={'$like':'%'+_0x18ad89[_0x791a('0x32')][_0x791a('0x3d')]+'%'};return _0x522cb8;})});}_0x2d671f['where']=_['merge'](_0x2d671f[_0x791a('0x3c')],{'mailboxuser':_0xc34c5b[_0x791a('0x52')]});_0x2d671f=_['merge']({},_0x2d671f,_0x18ad89[_0x791a('0x53')]);return db[_0x791a('0x50')][_0x791a('0x54')](_0x2d671f)[_0x791a('0x22')](respondWithFilteredResult(_0xf11dea,_0x2d671f));})['catch'](handleError(_0xf11dea,null));};
\ No newline at end of file
+var _0x1be1=['set','Content-Range','apply','reject','save','update','then','get','Voicemails','destroy','sendStatus','error','stack','name','send','index','map','VoiceMail','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','include','findAll','rows','show','options','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','findOne','VoiceMailMessage','length','mailbox','findAndCountAll','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','offset','undefined','limit','count'];(function(_0xe61b71,_0x49b800){var _0x1604b7=function(_0x681020){while(--_0x681020){_0xe61b71['push'](_0xe61b71['shift']());}};_0x1604b7(++_0x49b800);}(_0x1be1,0x192));var _0x11be=function(_0x9bcffc,_0x245775){_0x9bcffc=_0x9bcffc-0x0;var _0x2ee84d=_0x1be1[_0x9bcffc];return _0x2ee84d;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x11be('0x0'));var jsonpatch=require(_0x11be('0x1'));var rp=require('request-promise');var moment=require(_0x11be('0x2'));var BPromise=require(_0x11be('0x3'));var Mustache=require(_0x11be('0x4'));var util=require(_0x11be('0x5'));var path=require('path');var sox=require(_0x11be('0x6'));var csv=require(_0x11be('0x7'));var ejs=require(_0x11be('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x11be('0x9'));var squel=require('squel');var crypto=require(_0x11be('0xa'));var jsforce=require(_0x11be('0xb'));var deskjs=require(_0x11be('0xc'));var toCsv=require(_0x11be('0x7'));var querystring=require(_0x11be('0xd'));var Papa=require('papaparse');var Redis=require(_0x11be('0xe'));var authService=require(_0x11be('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x11be('0x10'));var hardwareService=require(_0x11be('0x11'));var logger=require(_0x11be('0x12'))(_0x11be('0x13'));var utils=require('../../config/utils');var config=require(_0x11be('0x14'));var licenseUtil=require(_0x11be('0x15'));var db=require(_0x11be('0x16'))['db'];function respondWithStatusCode(_0x4b36c8,_0x3ff31f){_0x3ff31f=_0x3ff31f||0xcc;return function(_0x2dad05){if(_0x2dad05){return _0x4b36c8['sendStatus'](_0x3ff31f);}return _0x4b36c8[_0x11be('0x17')](_0x3ff31f)['end']();};}function respondWithResult(_0x49228e,_0x569842){_0x569842=_0x569842||0xc8;return function(_0x4b6e7e){if(_0x4b6e7e){return _0x49228e['status'](_0x569842)['json'](_0x4b6e7e);}};}function respondWithFilteredResult(_0x588871,_0x2280e2){return function(_0x52bbef){if(_0x52bbef){var _0x31047c=typeof _0x2280e2[_0x11be('0x18')]===_0x11be('0x19')&&typeof _0x2280e2[_0x11be('0x1a')]==='undefined';var _0x2ed725=_0x52bbef[_0x11be('0x1b')];var _0x56ab61=_0x31047c?0x0:_0x2280e2[_0x11be('0x18')];var _0xc3263c=_0x31047c?_0x52bbef[_0x11be('0x1b')]:_0x2280e2['offset']+_0x2280e2['limit'];var _0x141391;if(_0xc3263c>=_0x2ed725){_0xc3263c=_0x2ed725;_0x141391=0xc8;}else{_0x141391=0xce;}_0x588871[_0x11be('0x17')](_0x141391);return _0x588871[_0x11be('0x1c')](_0x11be('0x1d'),_0x56ab61+'-'+_0xc3263c+'/'+_0x2ed725)['json'](_0x52bbef);}return null;};}function patchUpdates(_0x12a5bd){return function(_0x45136f){try{jsonpatch[_0x11be('0x1e')](_0x45136f,_0x12a5bd,!![]);}catch(_0x452315){return BPromise[_0x11be('0x1f')](_0x452315);}return _0x45136f[_0x11be('0x20')]();};}function saveUpdates(_0xa944ac,_0x17678d){return function(_0x3aea14){if(_0x3aea14){return _0x3aea14[_0x11be('0x21')](_0xa944ac)['then'](function(_0xfe3737){return _0xfe3737;});}return null;};}function removeEntity(_0x46b7c2,_0x2fe43c){return function(_0x5d1690){if(_0x5d1690){return _0x5d1690['destroy']()[_0x11be('0x22')](function(){var _0x10ce04=_0x5d1690[_0x11be('0x23')]({'plain':!![]});var _0x4cb27f=_0x11be('0x24');return db['UserProfileResource'][_0x11be('0x25')]({'where':{'type':_0x4cb27f,'resourceId':_0x10ce04['id']}})['then'](function(){return _0x5d1690;});})[_0x11be('0x22')](function(){_0x46b7c2[_0x11be('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x48029b,_0x28b3a0){return function(_0x1d3b5c){if(!_0x1d3b5c){_0x48029b[_0x11be('0x26')](0x194);}return _0x1d3b5c;};}function handleError(_0x30427b,_0x17c67f){_0x17c67f=_0x17c67f||0x1f4;return function(_0xf5a6ac){logger[_0x11be('0x27')](_0xf5a6ac[_0x11be('0x28')]);if(_0xf5a6ac['name']){delete _0xf5a6ac[_0x11be('0x29')];}_0x30427b['status'](_0x17c67f)[_0x11be('0x2a')](_0xf5a6ac);};}exports[_0x11be('0x2b')]=function(_0x510476,_0x584d4c){var _0x49fd5c={},_0x265fc9={},_0x5e8f9a={'count':0x0,'rows':[]};var _0x66316d=_[_0x11be('0x2c')](db[_0x11be('0x2d')][_0x11be('0x2e')],function(_0x25e214){return{'name':_0x25e214[_0x11be('0x2f')],'type':_0x25e214['type'][_0x11be('0x30')]};});_0x265fc9[_0x11be('0x31')]=_[_0x11be('0x2c')](_0x66316d,_0x11be('0x29'));_0x265fc9[_0x11be('0x32')]=_[_0x11be('0x33')](_0x510476['query']);_0x265fc9[_0x11be('0x34')]=_[_0x11be('0x35')](_0x265fc9[_0x11be('0x31')],_0x265fc9[_0x11be('0x32')]);_0x49fd5c[_0x11be('0x36')]=_['intersection'](_0x265fc9[_0x11be('0x31')],qs[_0x11be('0x37')](_0x510476[_0x11be('0x32')]['fields']));_0x49fd5c[_0x11be('0x36')]=_0x49fd5c['attributes']['length']?_0x49fd5c['attributes']:_0x265fc9['model'];if(!_0x510476[_0x11be('0x32')][_0x11be('0x38')](_0x11be('0x39'))){_0x49fd5c['limit']=qs[_0x11be('0x1a')](_0x510476[_0x11be('0x32')]['limit']);_0x49fd5c[_0x11be('0x18')]=qs['offset'](_0x510476[_0x11be('0x32')]['offset']);}_0x49fd5c[_0x11be('0x3a')]=qs[_0x11be('0x3b')](_0x510476[_0x11be('0x32')][_0x11be('0x3b')]);_0x49fd5c['where']=qs[_0x11be('0x34')](_[_0x11be('0x3c')](_0x510476[_0x11be('0x32')],_0x265fc9[_0x11be('0x34')]),_0x66316d);if(_0x510476['query'][_0x11be('0x3d')]){_0x49fd5c[_0x11be('0x3e')]=_[_0x11be('0x3f')](_0x49fd5c[_0x11be('0x3e')],{'$or':_[_0x11be('0x2c')](_0x66316d,function(_0x1b1aac){if(_0x1b1aac[_0x11be('0x40')]!=='VIRTUAL'){var _0x2618f5={};_0x2618f5[_0x1b1aac[_0x11be('0x29')]]={'$like':'%'+_0x510476['query'][_0x11be('0x3d')]+'%'};return _0x2618f5;}})});}_0x49fd5c=_[_0x11be('0x3f')]({},_0x49fd5c,_0x510476['options']);var _0x30b67a={'where':_0x49fd5c['where']};return db[_0x11be('0x2d')]['count'](_0x30b67a)[_0x11be('0x22')](function(_0x30be21){_0x5e8f9a['count']=_0x30be21;if(_0x510476[_0x11be('0x32')]['includeAll']){_0x49fd5c[_0x11be('0x41')]=[{'all':!![]}];}return db[_0x11be('0x2d')][_0x11be('0x42')](_0x49fd5c);})[_0x11be('0x22')](function(_0x2b847a){_0x5e8f9a[_0x11be('0x43')]=_0x2b847a;return _0x5e8f9a;})[_0x11be('0x22')](respondWithFilteredResult(_0x584d4c,_0x49fd5c))['catch'](handleError(_0x584d4c,null));};exports[_0x11be('0x44')]=function(_0x18cddf,_0x9610a1){var _0x317e2d={'raw':!![],'where':{'id':_0x18cddf['params']['id']}},_0x589ac4={};_0x589ac4['model']=_[_0x11be('0x33')](db['VoiceMail'][_0x11be('0x2e')]);_0x589ac4['query']=_[_0x11be('0x33')](_0x18cddf[_0x11be('0x32')]);_0x589ac4[_0x11be('0x34')]=_[_0x11be('0x35')](_0x589ac4[_0x11be('0x31')],_0x589ac4[_0x11be('0x32')]);_0x317e2d[_0x11be('0x36')]=_['intersection'](_0x589ac4[_0x11be('0x31')],qs['fields'](_0x18cddf[_0x11be('0x32')][_0x11be('0x37')]));_0x317e2d[_0x11be('0x36')]=_0x317e2d['attributes']['length']?_0x317e2d['attributes']:_0x589ac4[_0x11be('0x31')];if(_0x18cddf[_0x11be('0x32')]['includeAll']){_0x317e2d['include']=[{'all':!![]}];}_0x317e2d=_['merge']({},_0x317e2d,_0x18cddf[_0x11be('0x45')]);return db[_0x11be('0x2d')][_0x11be('0x46')](_0x317e2d)[_0x11be('0x22')](handleEntityNotFound(_0x9610a1,null))[_0x11be('0x22')](respondWithResult(_0x9610a1,null))[_0x11be('0x47')](handleError(_0x9610a1,null));};exports[_0x11be('0x48')]=function(_0x3f2070,_0x2ce110){return db[_0x11be('0x2d')][_0x11be('0x48')](_0x3f2070['body'],{})[_0x11be('0x22')](function(_0x29f82f){var _0x534ee7=_0x3f2070['user']['get']({'plain':!![]});if(!_0x534ee7)throw new Error(_0x11be('0x49'));if(_0x534ee7['role']===_0x11be('0x4a')){var _0x1c1626=_0x29f82f[_0x11be('0x23')]({'plain':!![]});var _0x1fb48d=_0x11be('0x24');return db[_0x11be('0x4b')][_0x11be('0x46')]({'where':{'name':_0x1fb48d,'userProfileId':_0x534ee7[_0x11be('0x4c')]},'raw':!![]})[_0x11be('0x22')](function(_0x4c873a){if(_0x4c873a&&_0x4c873a[_0x11be('0x4d')]===0x0){return db['UserProfileResource'][_0x11be('0x48')]({'name':_0x1c1626[_0x11be('0x29')],'resourceId':_0x1c1626['id'],'type':_0x4c873a['name'],'sectionId':_0x4c873a['id']},{})[_0x11be('0x22')](function(){return _0x29f82f;});}else{return _0x29f82f;}})[_0x11be('0x47')](function(_0x4c0e37){logger[_0x11be('0x27')](_0x11be('0x4e'),_0x4c0e37);throw _0x4c0e37;});}return _0x29f82f;})['then'](respondWithResult(_0x2ce110,0xc9))['catch'](handleError(_0x2ce110,null));};exports[_0x11be('0x21')]=function(_0x2886ac,_0x50eeab){if(_0x2886ac['body']['id']){delete _0x2886ac[_0x11be('0x4f')]['id'];}return db[_0x11be('0x2d')][_0x11be('0x46')]({'where':{'id':_0x2886ac['params']['id']}})['then'](handleEntityNotFound(_0x50eeab,null))['then'](saveUpdates(_0x2886ac[_0x11be('0x4f')],null))[_0x11be('0x22')](respondWithResult(_0x50eeab,null))[_0x11be('0x47')](handleError(_0x50eeab,null));};exports['destroy']=function(_0x4db963,_0x33409c){return db[_0x11be('0x2d')][_0x11be('0x46')]({'where':{'id':_0x4db963[_0x11be('0x50')]['id']}})['then'](handleEntityNotFound(_0x33409c,null))[_0x11be('0x22')](removeEntity(_0x33409c,null))['catch'](handleError(_0x33409c,null));};exports['getMessages']=function(_0x568f20,_0x5aa6bf,_0x1a43df){return db[_0x11be('0x2d')][_0x11be('0x51')]({'where':{'id':_0x568f20[_0x11be('0x50')]['id']}})[_0x11be('0x22')](handleEntityNotFound(_0x5aa6bf,null))[_0x11be('0x22')](function(_0xb97604){var _0x55e79d;var _0x54e52a={},_0x7c1ee5={};_0x7c1ee5[_0x11be('0x31')]=_[_0x11be('0x33')](db[_0x11be('0x52')][_0x11be('0x2e')]);_0x7c1ee5[_0x11be('0x32')]=_[_0x11be('0x33')](_0x568f20[_0x11be('0x32')]);_0x7c1ee5[_0x11be('0x34')]=_['intersection'](_0x7c1ee5[_0x11be('0x31')],_0x7c1ee5[_0x11be('0x32')]);_0x54e52a[_0x11be('0x36')]=_['intersection'](_0x7c1ee5[_0x11be('0x31')],qs[_0x11be('0x37')](_0x568f20['query']['fields']));_0x54e52a[_0x11be('0x36')]=_0x54e52a[_0x11be('0x36')][_0x11be('0x53')]?_0x54e52a[_0x11be('0x36')]:_0x7c1ee5['model'];if(!_0x568f20[_0x11be('0x32')][_0x11be('0x38')](_0x11be('0x39'))){_0x54e52a[_0x11be('0x1a')]=qs[_0x11be('0x1a')](_0x568f20[_0x11be('0x32')][_0x11be('0x1a')]);_0x54e52a[_0x11be('0x18')]=qs[_0x11be('0x18')](_0x568f20['query']['offset']);}_0x54e52a[_0x11be('0x3a')]=qs[_0x11be('0x3b')](_0x568f20['query'][_0x11be('0x3b')]);_0x54e52a[_0x11be('0x3e')]=qs[_0x11be('0x34')](_[_0x11be('0x3c')](_0x568f20[_0x11be('0x32')],_0x7c1ee5[_0x11be('0x34')]));if(_0x568f20[_0x11be('0x32')]['filter']){_0x54e52a['where']=_[_0x11be('0x3f')](_0x54e52a[_0x11be('0x3e')],{'$or':_[_0x11be('0x2c')](_0x54e52a['attributes'],function(_0x82c02c){var _0x422696={};_0x422696[_0x82c02c]={'$like':'%'+_0x568f20[_0x11be('0x32')][_0x11be('0x3d')]+'%'};return _0x422696;})});}_0x54e52a[_0x11be('0x3e')]=_[_0x11be('0x3f')](_0x54e52a[_0x11be('0x3e')],{'mailboxuser':_0xb97604[_0x11be('0x54')]});_0x54e52a=_[_0x11be('0x3f')]({},_0x54e52a,_0x568f20[_0x11be('0x45')]);return db[_0x11be('0x52')][_0x11be('0x55')](_0x54e52a)[_0x11be('0x22')](respondWithFilteredResult(_0x5aa6bf,_0x54e52a));})[_0x11be('0x47')](handleError(_0x5aa6bf,null));};
\ No newline at end of file
index d1a2ce6..7a99274 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d70=['voice_voicemail','context','lodash','util','api','bluebird','path','rimraf','../../config/environment','./voiceMail.attributes','exports','define'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x3d70,0x10a));var _0x03d7=function(_0x5e3a45,_0x45f0c5){_0x5e3a45=_0x5e3a45-0x0;var _0x13419f=_0x3d70[_0x5e3a45];return _0x13419f;};'use strict';var _=require(_0x03d7('0x0'));var util=require(_0x03d7('0x1'));var logger=require('../../config/logger')(_0x03d7('0x2'));var moment=require('moment');var BPromise=require(_0x03d7('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x03d7('0x4'));var rimraf=require(_0x03d7('0x5'));var config=require(_0x03d7('0x6'));var attributes=require(_0x03d7('0x7'));module[_0x03d7('0x8')]=function(_0x38fc08,_0x5719f5){return _0x38fc08[_0x03d7('0x9')]('VoiceMail',attributes,{'tableName':_0x03d7('0xa'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':['mailbox',_0x03d7('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf7f7=['voice_voicemail','mailbox_context','mailbox','lodash','bluebird','request-promise','path','exports','VoiceMail'];(function(_0x5049c4,_0x394afb){var _0x3fb6ad=function(_0x1ba509){while(--_0x1ba509){_0x5049c4['push'](_0x5049c4['shift']());}};_0x3fb6ad(++_0x394afb);}(_0xf7f7,0xae));var _0x7f7f=function(_0x4b2863,_0x494899){_0x4b2863=_0x4b2863-0x0;var _0x567d67=_0xf7f7[_0x4b2863];return _0x567d67;};'use strict';var _=require(_0x7f7f('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x7f7f('0x1'));var rp=require(_0x7f7f('0x2'));var fs=require('fs');var path=require(_0x7f7f('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./voiceMail.attributes');module[_0x7f7f('0x4')]=function(_0x333ef2,_0x30c4ce){return _0x333ef2['define'](_0x7f7f('0x5'),attributes,{'tableName':_0x7f7f('0x6'),'paranoid':![],'indexes':[{'name':_0x7f7f('0x7'),'fields':[_0x7f7f('0x8'),'context']}],'timestamps':!![]});};
\ No newline at end of file
index 70bcad0..73016c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb2b=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client','request','then','info','VoiceMail,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch'];(function(_0x1bc7ac,_0x1d72cf){var _0x4ec745=function(_0xcc87c4){while(--_0xcc87c4){_0x1bc7ac['push'](_0x1bc7ac['shift']());}};_0x4ec745(++_0x1d72cf);}(_0xbb2b,0x1a2));var _0xbbb2=function(_0x75d78,_0x1becc3){_0x75d78=_0x75d78-0x0;var _0x3b7706=_0xbb2b[_0x75d78];return _0x3b7706;};'use strict';var _=require('lodash');var util=require(_0xbbb2('0x0'));var moment=require('moment');var BPromise=require(_0xbbb2('0x1'));var rs=require(_0xbbb2('0x2'));var fs=require('fs');var Redis=require(_0xbbb2('0x3'));var db=require(_0xbbb2('0x4'))['db'];var utils=require(_0xbbb2('0x5'));var logger=require(_0xbbb2('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xbbb2('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x85f33a,_0x30cb8b,_0x12ed20){return new BPromise(function(_0x49e184,_0x34b8db){return client[_0xbbb2('0x8')](_0x85f33a,_0x12ed20)[_0xbbb2('0x9')](function(_0x5081fa){logger[_0xbbb2('0xa')](_0xbbb2('0xb'),_0x30cb8b,_0xbbb2('0xc'));logger[_0xbbb2('0xd')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0x30cb8b,_0xbbb2('0xc'),JSON['stringify'](_0x5081fa));if(_0x5081fa[_0xbbb2('0xe')]){if(_0x5081fa[_0xbbb2('0xe')][_0xbbb2('0xf')]===0x1f4){logger[_0xbbb2('0xe')](_0xbbb2('0xb'),_0x30cb8b,_0x5081fa[_0xbbb2('0xe')][_0xbbb2('0x10')]);return _0x34b8db(_0x5081fa[_0xbbb2('0xe')][_0xbbb2('0x10')]);}logger[_0xbbb2('0xe')](_0xbbb2('0xb'),_0x30cb8b,_0x5081fa[_0xbbb2('0xe')][_0xbbb2('0x10')]);return _0x49e184(_0x5081fa[_0xbbb2('0xe')][_0xbbb2('0x10')]);}else{logger[_0xbbb2('0xa')](_0xbbb2('0xb'),_0x30cb8b,_0xbbb2('0xc'));_0x49e184(_0x5081fa[_0xbbb2('0x11')][_0xbbb2('0x10')]);}})[_0xbbb2('0x12')](function(_0x32ca8b){logger[_0xbbb2('0xe')](_0xbbb2('0xb'),_0x30cb8b,_0x32ca8b);_0x34b8db(_0x32ca8b);});});}
\ No newline at end of file
+var _0x9854=['VoiceMail,\x20%s,\x20%s','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','request','then','info','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0xc9b1a3,_0x3c4159){var _0x22f77c=function(_0x5156e1){while(--_0x5156e1){_0xc9b1a3['push'](_0xc9b1a3['shift']());}};_0x22f77c(++_0x3c4159);}(_0x9854,0x1d2));var _0x4985=function(_0x282460,_0x5405e1){_0x282460=_0x282460-0x0;var _0x421cea=_0x9854[_0x282460];return _0x421cea;};'use strict';var _=require('lodash');var util=require(_0x4985('0x0'));var moment=require('moment');var BPromise=require(_0x4985('0x1'));var rs=require(_0x4985('0x2'));var fs=require('fs');var Redis=require(_0x4985('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4985('0x4'));var logger=require('../../config/logger')(_0x4985('0x5'));var config=require(_0x4985('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x4985('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2336d9,_0x563e89,_0x173022){return new BPromise(function(_0x12aa97,_0x1b0ee1){return client[_0x4985('0x8')](_0x2336d9,_0x173022)[_0x4985('0x9')](function(_0x2fb9fe){logger[_0x4985('0xa')]('VoiceMail,\x20%s,\x20%s',_0x563e89,_0x4985('0xb'));logger[_0x4985('0xc')](_0x4985('0xd'),_0x563e89,_0x4985('0xb'),JSON[_0x4985('0xe')](_0x2fb9fe));if(_0x2fb9fe['error']){if(_0x2fb9fe[_0x4985('0xf')][_0x4985('0x10')]===0x1f4){logger[_0x4985('0xf')](_0x4985('0x11'),_0x563e89,_0x2fb9fe[_0x4985('0xf')][_0x4985('0x12')]);return _0x1b0ee1(_0x2fb9fe[_0x4985('0xf')]['message']);}logger[_0x4985('0xf')](_0x4985('0x11'),_0x563e89,_0x2fb9fe['error'][_0x4985('0x12')]);return _0x12aa97(_0x2fb9fe[_0x4985('0xf')][_0x4985('0x12')]);}else{logger[_0x4985('0xa')](_0x4985('0x11'),_0x563e89,_0x4985('0xb'));_0x12aa97(_0x2fb9fe[_0x4985('0x13')][_0x4985('0x12')]);}})[_0x4985('0x14')](function(_0x3f0b9a){logger[_0x4985('0xf')]('VoiceMail,\x20%s,\x20%s',_0x563e89,_0x3f0b9a);_0x1b0ee1(_0x3f0b9a);});});}
\ No newline at end of file
index 257b4d2..af1ecbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd3e7=['show','/:id/download','download','post','create','put','/:id','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index'];(function(_0x2f3e66,_0x4d1f82){var _0x2d6116=function(_0x258d15){while(--_0x258d15){_0x2f3e66['push'](_0x2f3e66['shift']());}};_0x2d6116(++_0x4d1f82);}(_0xd3e7,0x107));var _0x7d3e=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xd3e7[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x7d3e('0x0'));var util=require(_0x7d3e('0x1'));var path=require(_0x7d3e('0x2'));var timeout=require(_0x7d3e('0x3'));var express=require(_0x7d3e('0x4'));var router=express[_0x7d3e('0x5')]();var fs_extra=require(_0x7d3e('0x6'));var auth=require(_0x7d3e('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x7d3e('0x8'));var controller=require(_0x7d3e('0x9'));router[_0x7d3e('0xa')]('/',auth[_0x7d3e('0xb')](),controller[_0x7d3e('0xc')]);router['get']('/:id',auth[_0x7d3e('0xb')](),controller[_0x7d3e('0xd')]);router[_0x7d3e('0xa')](_0x7d3e('0xe'),auth[_0x7d3e('0xb')](),controller[_0x7d3e('0xf')]);router[_0x7d3e('0x10')]('/',auth[_0x7d3e('0xb')](),controller[_0x7d3e('0x11')]);router[_0x7d3e('0x12')](_0x7d3e('0x13'),auth[_0x7d3e('0xb')](),controller['update']);router[_0x7d3e('0x14')](_0x7d3e('0x13'),auth['isAuthenticated'](),controller[_0x7d3e('0x15')]);module[_0x7d3e('0x16')]=router;
\ No newline at end of file
+var _0x0494=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','index','get','/:id','show','isAuthenticated','download','post','create','put','delete','destroy','exports','multer','util'];(function(_0x168d82,_0x4ca275){var _0x2e9c41=function(_0x540898){while(--_0x540898){_0x168d82['push'](_0x168d82['shift']());}};_0x2e9c41(++_0x4ca275);}(_0x0494,0xee));var _0x4049=function(_0x174769,_0x41ac79){_0x174769=_0x174769-0x0;var _0x4fdbc7=_0x0494[_0x174769];return _0x4fdbc7;};'use strict';var multer=require(_0x4049('0x0'));var util=require(_0x4049('0x1'));var path=require(_0x4049('0x2'));var timeout=require('connect-timeout');var express=require(_0x4049('0x3'));var router=express[_0x4049('0x4')]();var fs_extra=require(_0x4049('0x5'));var auth=require(_0x4049('0x6'));var interaction=require(_0x4049('0x7'));var config=require('../../config/environment');var controller=require('./voiceMailMessage.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x4049('0x8')]);router[_0x4049('0x9')](_0x4049('0xa'),auth['isAuthenticated'](),controller[_0x4049('0xb')]);router[_0x4049('0x9')]('/:id/download',auth[_0x4049('0xc')](),controller[_0x4049('0xd')]);router[_0x4049('0xe')]('/',auth[_0x4049('0xc')](),controller[_0x4049('0xf')]);router[_0x4049('0x10')]('/:id',auth[_0x4049('0xc')](),controller['update']);router[_0x4049('0x11')](_0x4049('0xa'),auth[_0x4049('0xc')](),controller[_0x4049('0x12')]);module[_0x4049('0x13')]=router;
\ No newline at end of file
index 0ced614..f39ea86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x290e=['CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','INTEGER','STRING','BLOB','long','TIMESTAMP','literal'];(function(_0x396e4d,_0xf36727){var _0x301bf4=function(_0x51e466){while(--_0x51e466){_0x396e4d['push'](_0x396e4d['shift']());}};_0x301bf4(++_0xf36727);}(_0x290e,0x1cd));var _0xe290=function(_0x46f04c,_0x23c4b9){_0x46f04c=_0x46f04c-0x0;var _0x26966a=_0x290e[_0x46f04c];return _0x26966a;};'use strict';var Sequelize=require(_0xe290('0x0'));module[_0xe290('0x1')]={'name':{'type':Sequelize[_0xe290('0x2')],'get':function(_0x40105a){return this['getDataValue']('id');}},'msgnum':{'type':Sequelize[_0xe290('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xe290('0x4')],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xe290('0x4')],'defaultValue':''},'callerid':{'type':Sequelize[_0xe290('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0xe290('0x4')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xe290('0x4')],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0xe290('0x4')],'defaultValue':''},'recording':{'type':Sequelize[_0xe290('0x5')](_0xe290('0x6')),'defaultValue':null},'flag':{'type':Sequelize[_0xe290('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize[_0xe290('0x4')],'defaultValue':''},'stamp':{'type':_0xe290('0x7'),'defaultValue':Sequelize[_0xe290('0x8')](_0xe290('0x9'))}};
\ No newline at end of file
+var _0x1d6a=['TIMESTAMP','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','exports','VIRTUAL','getDataValue','INTEGER','STRING','long'];(function(_0x355d27,_0x37178b){var _0x2af066=function(_0x94b630){while(--_0x94b630){_0x355d27['push'](_0x355d27['shift']());}};_0x2af066(++_0x37178b);}(_0x1d6a,0xe4));var _0xa1d6=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x1d6a[_0xfae23b];return _0x200640;};'use strict';var Sequelize=require('sequelize');module[_0xa1d6('0x0')]={'name':{'type':Sequelize[_0xa1d6('0x1')],'get':function(_0x110814){return this[_0xa1d6('0x2')]('id');}},'msgnum':{'type':Sequelize[_0xa1d6('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xa1d6('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0xa1d6('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xa1d6('0x4')],'defaultValue':''},'callerid':{'type':Sequelize[_0xa1d6('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0xa1d6('0x4')],'defaultValue':''},'duration':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize['STRING'],'defaultValue':''},'recording':{'type':Sequelize['BLOB'](_0xa1d6('0x5')),'defaultValue':null},'flag':{'type':Sequelize['STRING'],'defaultValue':''},'msg_id':{'type':Sequelize[_0xa1d6('0x4')],'defaultValue':''},'stamp':{'type':_0xa1d6('0x6'),'defaultValue':Sequelize[_0xa1d6('0x7')](_0xa1d6('0x8'))}};
\ No newline at end of file
index 3ff305b..d9863a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2f6=['status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','destroy','error','name','index','VoiceMailMessage','rawAttributes','type','key','model','differenceBy','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','map','VIRTUAL','then','includeAll','include','rows','params','options','find','catch','create','body','update','download','msg_id','recording','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end'];(function(_0xfb02c9,_0x43c274){var _0x9afb71=function(_0x56dff0){while(--_0x56dff0){_0xfb02c9['push'](_0xfb02c9['shift']());}};_0x9afb71(++_0x43c274);}(_0xf2f6,0x138));var _0x6f2f=function(_0x56a021,_0x3895ee){_0x56a021=_0x56a021-0x0;var _0x38a58=_0xf2f6[_0x56a021];return _0x38a58;};'use strict';var emlformat=require(_0x6f2f('0x0'));var rimraf=require(_0x6f2f('0x1'));var zipdir=require(_0x6f2f('0x2'));var jsonpatch=require(_0x6f2f('0x3'));var rp=require(_0x6f2f('0x4'));var moment=require('moment');var BPromise=require(_0x6f2f('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x6f2f('0x6'));var ejs=require(_0x6f2f('0x7'));var fs=require('fs');var fs_extra=require(_0x6f2f('0x8'));var _=require(_0x6f2f('0x9'));var squel=require(_0x6f2f('0xa'));var crypto=require('crypto');var jsforce=require(_0x6f2f('0xb'));var deskjs=require(_0x6f2f('0xc'));var toCsv=require(_0x6f2f('0x6'));var querystring=require(_0x6f2f('0xd'));var Papa=require('papaparse');var Redis=require(_0x6f2f('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x6f2f('0xf'));var hardwareService=require(_0x6f2f('0x10'));var logger=require(_0x6f2f('0x11'))(_0x6f2f('0x12'));var utils=require(_0x6f2f('0x13'));var config=require(_0x6f2f('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x6f2f('0x15'))['db'];function respondWithStatusCode(_0x37a1c0,_0x5598be){_0x5598be=_0x5598be||0xcc;return function(_0x13e5f6){if(_0x13e5f6){return _0x37a1c0[_0x6f2f('0x16')](_0x5598be);}return _0x37a1c0['status'](_0x5598be)[_0x6f2f('0x17')]();};}function respondWithResult(_0x196932,_0x5962c9){_0x5962c9=_0x5962c9||0xc8;return function(_0x99b496){if(_0x99b496){return _0x196932[_0x6f2f('0x18')](_0x5962c9)[_0x6f2f('0x19')](_0x99b496);}};}function respondWithFilteredResult(_0x23d46b,_0x59d2f9){return function(_0x38b94f){if(_0x38b94f){var _0x2e23a7=typeof _0x59d2f9['offset']==='undefined'&&typeof _0x59d2f9[_0x6f2f('0x1a')]===_0x6f2f('0x1b');var _0x52bb41=_0x38b94f[_0x6f2f('0x1c')];var _0x49a367=_0x2e23a7?0x0:_0x59d2f9[_0x6f2f('0x1d')];var _0x4438d3=_0x2e23a7?_0x38b94f['count']:_0x59d2f9['offset']+_0x59d2f9[_0x6f2f('0x1a')];var _0x3665f0;if(_0x4438d3>=_0x52bb41){_0x4438d3=_0x52bb41;_0x3665f0=0xc8;}else{_0x3665f0=0xce;}_0x23d46b['status'](_0x3665f0);return _0x23d46b[_0x6f2f('0x1e')](_0x6f2f('0x1f'),_0x49a367+'-'+_0x4438d3+'/'+_0x52bb41)[_0x6f2f('0x19')](_0x38b94f);}return null;};}function patchUpdates(_0x3ca3a1){return function(_0x483800){try{jsonpatch[_0x6f2f('0x20')](_0x483800,_0x3ca3a1,!![]);}catch(_0xa16c20){return BPromise[_0x6f2f('0x21')](_0xa16c20);}return _0x483800[_0x6f2f('0x22')]();};}function saveUpdates(_0xf8c8be,_0x2962f3){return function(_0x50070c){if(_0x50070c){return _0x50070c['update'](_0xf8c8be)['then'](function(_0x42e016){return _0x42e016;});}return null;};}function removeEntity(_0x2d1119,_0x3df428){return function(_0x54dcb8){if(_0x54dcb8){return _0x54dcb8[_0x6f2f('0x23')]()['then'](function(){_0x2d1119['status'](0xcc)[_0x6f2f('0x17')]();});}};}function handleEntityNotFound(_0x1d684b,_0x3ad9ef){return function(_0x3a89cc){if(!_0x3a89cc){_0x1d684b['sendStatus'](0x194);}return _0x3a89cc;};}function handleError(_0xe33b66,_0x4dd965){_0x4dd965=_0x4dd965||0x1f4;return function(_0x1fbb59){logger[_0x6f2f('0x24')](_0x1fbb59['stack']);if(_0x1fbb59['name']){delete _0x1fbb59[_0x6f2f('0x25')];}_0xe33b66[_0x6f2f('0x18')](_0x4dd965)['send'](_0x1fbb59);};}exports[_0x6f2f('0x26')]=function(_0x2ad327,_0x24dc3e){var _0x5a591b={},_0xdeb4e6={},_0x4e894c={'count':0x0,'rows':[]};var _0x5ba062=_['map'](db[_0x6f2f('0x27')][_0x6f2f('0x28')],function(_0x5c6587){return{'name':_0x5c6587['fieldName'],'type':_0x5c6587[_0x6f2f('0x29')][_0x6f2f('0x2a')]};});_0xdeb4e6[_0x6f2f('0x2b')]=_[_0x6f2f('0x2c')](_['map'](_0x5ba062,_0x6f2f('0x25')),[_0x6f2f('0x25')]);_0xdeb4e6[_0x6f2f('0x2d')]=_[_0x6f2f('0x2e')](_0x2ad327[_0x6f2f('0x2d')]);_0xdeb4e6[_0x6f2f('0x2f')]=_['intersection'](_0xdeb4e6[_0x6f2f('0x2b')],_0xdeb4e6[_0x6f2f('0x2d')]);_0x5a591b[_0x6f2f('0x30')]=_[_0x6f2f('0x31')](_0xdeb4e6[_0x6f2f('0x2b')],qs[_0x6f2f('0x32')](_0x2ad327[_0x6f2f('0x2d')]['fields']));_0x5a591b['attributes']=_0x5a591b[_0x6f2f('0x30')][_0x6f2f('0x33')]?_0x5a591b[_0x6f2f('0x30')]:_0xdeb4e6[_0x6f2f('0x2b')];if(!_0x2ad327[_0x6f2f('0x2d')][_0x6f2f('0x34')](_0x6f2f('0x35'))){_0x5a591b[_0x6f2f('0x1a')]=qs[_0x6f2f('0x1a')](_0x2ad327[_0x6f2f('0x2d')][_0x6f2f('0x1a')]);_0x5a591b['offset']=qs['offset'](_0x2ad327['query'][_0x6f2f('0x1d')]);}_0x5a591b[_0x6f2f('0x36')]=qs[_0x6f2f('0x37')](_0x2ad327[_0x6f2f('0x2d')][_0x6f2f('0x37')]);_0x5a591b['where']=qs['filters'](_[_0x6f2f('0x38')](_0x2ad327[_0x6f2f('0x2d')],_0xdeb4e6['filters']),_0x5ba062);if(_0x2ad327[_0x6f2f('0x2d')][_0x6f2f('0x39')]){_0x5a591b[_0x6f2f('0x3a')]=_[_0x6f2f('0x3b')](_0x5a591b[_0x6f2f('0x3a')],{'$or':_[_0x6f2f('0x3c')](_0x5ba062,function(_0x5541fc){if(_0x5541fc['type']!==_0x6f2f('0x3d')){var _0x9cd0d1={};_0x9cd0d1[_0x5541fc[_0x6f2f('0x25')]]={'$like':'%'+_0x2ad327[_0x6f2f('0x2d')][_0x6f2f('0x39')]+'%'};return _0x9cd0d1;}})});}_0x5a591b=_[_0x6f2f('0x3b')]({},_0x5a591b,_0x2ad327['options']);var _0xa632ca={'where':_0x5a591b[_0x6f2f('0x3a')]};return db['VoiceMailMessage'][_0x6f2f('0x1c')](_0xa632ca)[_0x6f2f('0x3e')](function(_0x5b639b){_0x4e894c[_0x6f2f('0x1c')]=_0x5b639b;if(_0x2ad327[_0x6f2f('0x2d')][_0x6f2f('0x3f')]){_0x5a591b[_0x6f2f('0x40')]=[{'all':!![]}];}return db['VoiceMailMessage']['findAll'](_0x5a591b);})[_0x6f2f('0x3e')](function(_0x4b72f7){_0x4e894c[_0x6f2f('0x41')]=_0x4b72f7;return _0x4e894c;})[_0x6f2f('0x3e')](respondWithFilteredResult(_0x24dc3e,_0x5a591b))['catch'](handleError(_0x24dc3e,null));};exports['show']=function(_0xd61edf,_0x129606){var _0x2642fb={'raw':!![],'where':{'id':_0xd61edf[_0x6f2f('0x42')]['id']}},_0x5ebf00={};_0x5ebf00[_0x6f2f('0x2b')]=_['keys'](db[_0x6f2f('0x27')][_0x6f2f('0x28')]);_0x5ebf00['query']=_['keys'](_0xd61edf['query']);_0x5ebf00[_0x6f2f('0x2f')]=_[_0x6f2f('0x31')](_0x5ebf00[_0x6f2f('0x2b')],_0x5ebf00[_0x6f2f('0x2d')]);_0x2642fb[_0x6f2f('0x30')]=_[_0x6f2f('0x31')](_0x5ebf00[_0x6f2f('0x2b')],qs[_0x6f2f('0x32')](_0xd61edf[_0x6f2f('0x2d')][_0x6f2f('0x32')]));_0x2642fb[_0x6f2f('0x30')]=_0x2642fb['attributes']['length']?_0x2642fb[_0x6f2f('0x30')]:_0x5ebf00[_0x6f2f('0x2b')];if(_0xd61edf[_0x6f2f('0x2d')][_0x6f2f('0x3f')]){_0x2642fb[_0x6f2f('0x40')]=[{'all':!![]}];}_0x2642fb=_[_0x6f2f('0x3b')]({},_0x2642fb,_0xd61edf[_0x6f2f('0x43')]);return db[_0x6f2f('0x27')][_0x6f2f('0x44')](_0x2642fb)[_0x6f2f('0x3e')](handleEntityNotFound(_0x129606,null))[_0x6f2f('0x3e')](respondWithResult(_0x129606,null))[_0x6f2f('0x45')](handleError(_0x129606,null));};exports[_0x6f2f('0x46')]=function(_0x41be66,_0x58ddb1){return db[_0x6f2f('0x27')]['create'](_0x41be66[_0x6f2f('0x47')],{})['then'](respondWithResult(_0x58ddb1,0xc9))[_0x6f2f('0x45')](handleError(_0x58ddb1,null));};exports[_0x6f2f('0x48')]=function(_0x310aa1,_0x34800c){if(_0x310aa1[_0x6f2f('0x47')]['id']){delete _0x310aa1['body']['id'];}return db[_0x6f2f('0x27')][_0x6f2f('0x44')]({'where':{'id':_0x310aa1[_0x6f2f('0x42')]['id']}})['then'](handleEntityNotFound(_0x34800c,null))[_0x6f2f('0x3e')](saveUpdates(_0x310aa1[_0x6f2f('0x47')],null))['then'](respondWithResult(_0x34800c,null))[_0x6f2f('0x45')](handleError(_0x34800c,null));};exports[_0x6f2f('0x23')]=function(_0x5ea648,_0xc57e1c){return db[_0x6f2f('0x27')][_0x6f2f('0x44')]({'where':{'id':_0x5ea648[_0x6f2f('0x42')]['id']}})['then'](handleEntityNotFound(_0xc57e1c,null))[_0x6f2f('0x3e')](removeEntity(_0xc57e1c,null))[_0x6f2f('0x45')](handleError(_0xc57e1c,null));};exports[_0x6f2f('0x49')]=function(_0x28afb8,_0x3d730e,_0x4e9b56){return db[_0x6f2f('0x27')][_0x6f2f('0x44')]({'where':{'id':_0x28afb8[_0x6f2f('0x42')]['id']},'attributes':['id','recording',_0x6f2f('0x4a')]})[_0x6f2f('0x3e')](handleEntityNotFound(_0x3d730e,null))['then'](function(_0x446de1){if(_0x446de1){if(!_0x446de1[_0x6f2f('0x4b')]){throw new db[(_0x6f2f('0x4c'))][(_0x6f2f('0x4d'))](_0x6f2f('0x4e'));}var _0x2396fd={'Content-Type':_0x6f2f('0x4f'),'Content-Disposition':_0x6f2f('0x50')};if(_0x446de1[_0x6f2f('0x4a')]){_0x2396fd[_0x6f2f('0x51')]=_0x6f2f('0x52')+_0x446de1[_0x6f2f('0x4a')]+_0x6f2f('0x53');}_0x3d730e[_0x6f2f('0x1e')](_0x2396fd);return _0x3d730e['send'](new Buffer(_0x446de1[_0x6f2f('0x4b')]));}})[_0x6f2f('0x45')](handleError(_0x3d730e,null));};
\ No newline at end of file
+var _0x5088=['query','filters','intersection','attributes','fields','length','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','VoiceMailMessage','includeAll','include','findAll','catch','show','params','keys','find','create','body','download','recording','Sequelize','ValidationError','audio/wav','attachment','msg_id','attachment;\x20filename=\x22','.wav\x22','set','eml-format','rimraf','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','reject','save','update','then','destroy','sendStatus','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','differenceBy'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5088,0xca));var _0x8508=function(_0x4e4061,_0x26503b){_0x4e4061=_0x4e4061-0x0;var _0x371dbd=_0x5088[_0x4e4061];return _0x371dbd;};'use strict';var emlformat=require(_0x8508('0x0'));var rimraf=require(_0x8508('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x8508('0x2'));var moment=require(_0x8508('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x8508('0x4'));var path=require(_0x8508('0x5'));var sox=require(_0x8508('0x6'));var csv=require(_0x8508('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8508('0x8'));var _=require(_0x8508('0x9'));var squel=require('squel');var crypto=require(_0x8508('0xa'));var jsforce=require(_0x8508('0xb'));var deskjs=require(_0x8508('0xc'));var toCsv=require('to-csv');var querystring=require(_0x8508('0xd'));var Papa=require(_0x8508('0xe'));var Redis=require(_0x8508('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x8508('0x10'));var as=require(_0x8508('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8508('0x12'))(_0x8508('0x13'));var utils=require('../../config/utils');var config=require(_0x8508('0x14'));var licenseUtil=require(_0x8508('0x15'));var db=require(_0x8508('0x16'))['db'];function respondWithStatusCode(_0x14cdd8,_0x19117a){_0x19117a=_0x19117a||0xcc;return function(_0x4f4d46){if(_0x4f4d46){return _0x14cdd8['sendStatus'](_0x19117a);}return _0x14cdd8[_0x8508('0x17')](_0x19117a)[_0x8508('0x18')]();};}function respondWithResult(_0x387653,_0x4e5459){_0x4e5459=_0x4e5459||0xc8;return function(_0x2c049b){if(_0x2c049b){return _0x387653[_0x8508('0x17')](_0x4e5459)[_0x8508('0x19')](_0x2c049b);}};}function respondWithFilteredResult(_0x5dd1ba,_0x163b84){return function(_0x193fec){if(_0x193fec){var _0x33a039=typeof _0x163b84[_0x8508('0x1a')]===_0x8508('0x1b')&&typeof _0x163b84[_0x8508('0x1c')]===_0x8508('0x1b');var _0x399be3=_0x193fec[_0x8508('0x1d')];var _0x4b8d3c=_0x33a039?0x0:_0x163b84[_0x8508('0x1a')];var _0x586156=_0x33a039?_0x193fec[_0x8508('0x1d')]:_0x163b84[_0x8508('0x1a')]+_0x163b84['limit'];var _0x246132;if(_0x586156>=_0x399be3){_0x586156=_0x399be3;_0x246132=0xc8;}else{_0x246132=0xce;}_0x5dd1ba[_0x8508('0x17')](_0x246132);return _0x5dd1ba['set']('Content-Range',_0x4b8d3c+'-'+_0x586156+'/'+_0x399be3)[_0x8508('0x19')](_0x193fec);}return null;};}function patchUpdates(_0x25169e){return function(_0xba7be4){try{jsonpatch['apply'](_0xba7be4,_0x25169e,!![]);}catch(_0x10eeb0){return BPromise[_0x8508('0x1e')](_0x10eeb0);}return _0xba7be4[_0x8508('0x1f')]();};}function saveUpdates(_0x3a46bf,_0x3ba202){return function(_0xc846a9){if(_0xc846a9){return _0xc846a9[_0x8508('0x20')](_0x3a46bf)[_0x8508('0x21')](function(_0x17287b){return _0x17287b;});}return null;};}function removeEntity(_0x55f58b,_0x526d6b){return function(_0x573ff3){if(_0x573ff3){return _0x573ff3[_0x8508('0x22')]()[_0x8508('0x21')](function(){_0x55f58b[_0x8508('0x17')](0xcc)[_0x8508('0x18')]();});}};}function handleEntityNotFound(_0x661b38,_0x47b45f){return function(_0x29401d){if(!_0x29401d){_0x661b38[_0x8508('0x23')](0x194);}return _0x29401d;};}function handleError(_0x3bf58c,_0x4d8f37){_0x4d8f37=_0x4d8f37||0x1f4;return function(_0x2b2965){logger[_0x8508('0x24')](_0x2b2965[_0x8508('0x25')]);if(_0x2b2965[_0x8508('0x26')]){delete _0x2b2965[_0x8508('0x26')];}_0x3bf58c[_0x8508('0x17')](_0x4d8f37)[_0x8508('0x27')](_0x2b2965);};}exports['index']=function(_0x5af385,_0x870671){var _0x5df929={},_0x473ebe={},_0x3771d1={'count':0x0,'rows':[]};var _0xb9eb04=_[_0x8508('0x28')](db['VoiceMailMessage'][_0x8508('0x29')],function(_0xc31566){return{'name':_0xc31566[_0x8508('0x2a')],'type':_0xc31566[_0x8508('0x2b')][_0x8508('0x2c')]};});_0x473ebe[_0x8508('0x2d')]=_[_0x8508('0x2e')](_['map'](_0xb9eb04,'name'),[_0x8508('0x26')]);_0x473ebe[_0x8508('0x2f')]=_['keys'](_0x5af385[_0x8508('0x2f')]);_0x473ebe[_0x8508('0x30')]=_[_0x8508('0x31')](_0x473ebe[_0x8508('0x2d')],_0x473ebe['query']);_0x5df929[_0x8508('0x32')]=_[_0x8508('0x31')](_0x473ebe['model'],qs[_0x8508('0x33')](_0x5af385[_0x8508('0x2f')][_0x8508('0x33')]));_0x5df929[_0x8508('0x32')]=_0x5df929[_0x8508('0x32')][_0x8508('0x34')]?_0x5df929[_0x8508('0x32')]:_0x473ebe[_0x8508('0x2d')];if(!_0x5af385[_0x8508('0x2f')]['hasOwnProperty'](_0x8508('0x35'))){_0x5df929[_0x8508('0x1c')]=qs[_0x8508('0x1c')](_0x5af385['query'][_0x8508('0x1c')]);_0x5df929[_0x8508('0x1a')]=qs[_0x8508('0x1a')](_0x5af385[_0x8508('0x2f')][_0x8508('0x1a')]);}_0x5df929[_0x8508('0x36')]=qs['sort'](_0x5af385['query'][_0x8508('0x37')]);_0x5df929['where']=qs['filters'](_[_0x8508('0x38')](_0x5af385['query'],_0x473ebe['filters']),_0xb9eb04);if(_0x5af385[_0x8508('0x2f')]['filter']){_0x5df929[_0x8508('0x39')]=_[_0x8508('0x3a')](_0x5df929['where'],{'$or':_['map'](_0xb9eb04,function(_0x5251db){if(_0x5251db['type']!==_0x8508('0x3b')){var _0x4d626b={};_0x4d626b[_0x5251db[_0x8508('0x26')]]={'$like':'%'+_0x5af385['query'][_0x8508('0x3c')]+'%'};return _0x4d626b;}})});}_0x5df929=_[_0x8508('0x3a')]({},_0x5df929,_0x5af385[_0x8508('0x3d')]);var _0x3a1384={'where':_0x5df929[_0x8508('0x39')]};return db[_0x8508('0x3e')][_0x8508('0x1d')](_0x3a1384)[_0x8508('0x21')](function(_0x52063d){_0x3771d1[_0x8508('0x1d')]=_0x52063d;if(_0x5af385[_0x8508('0x2f')][_0x8508('0x3f')]){_0x5df929[_0x8508('0x40')]=[{'all':!![]}];}return db[_0x8508('0x3e')][_0x8508('0x41')](_0x5df929);})[_0x8508('0x21')](function(_0x55cd10){_0x3771d1['rows']=_0x55cd10;return _0x3771d1;})['then'](respondWithFilteredResult(_0x870671,_0x5df929))[_0x8508('0x42')](handleError(_0x870671,null));};exports[_0x8508('0x43')]=function(_0x41f6c3,_0x12415e){var _0x32575f={'raw':!![],'where':{'id':_0x41f6c3[_0x8508('0x44')]['id']}},_0x475ddc={};_0x475ddc['model']=_[_0x8508('0x45')](db[_0x8508('0x3e')][_0x8508('0x29')]);_0x475ddc[_0x8508('0x2f')]=_[_0x8508('0x45')](_0x41f6c3[_0x8508('0x2f')]);_0x475ddc[_0x8508('0x30')]=_[_0x8508('0x31')](_0x475ddc['model'],_0x475ddc[_0x8508('0x2f')]);_0x32575f[_0x8508('0x32')]=_['intersection'](_0x475ddc[_0x8508('0x2d')],qs[_0x8508('0x33')](_0x41f6c3['query'][_0x8508('0x33')]));_0x32575f[_0x8508('0x32')]=_0x32575f[_0x8508('0x32')][_0x8508('0x34')]?_0x32575f[_0x8508('0x32')]:_0x475ddc['model'];if(_0x41f6c3[_0x8508('0x2f')][_0x8508('0x3f')]){_0x32575f['include']=[{'all':!![]}];}_0x32575f=_[_0x8508('0x3a')]({},_0x32575f,_0x41f6c3[_0x8508('0x3d')]);return db[_0x8508('0x3e')][_0x8508('0x46')](_0x32575f)['then'](handleEntityNotFound(_0x12415e,null))[_0x8508('0x21')](respondWithResult(_0x12415e,null))[_0x8508('0x42')](handleError(_0x12415e,null));};exports[_0x8508('0x47')]=function(_0x225b46,_0x1ac676){return db[_0x8508('0x3e')][_0x8508('0x47')](_0x225b46[_0x8508('0x48')],{})[_0x8508('0x21')](respondWithResult(_0x1ac676,0xc9))['catch'](handleError(_0x1ac676,null));};exports[_0x8508('0x20')]=function(_0x33d1a8,_0x14a77d){if(_0x33d1a8[_0x8508('0x48')]['id']){delete _0x33d1a8[_0x8508('0x48')]['id'];}return db['VoiceMailMessage'][_0x8508('0x46')]({'where':{'id':_0x33d1a8['params']['id']}})['then'](handleEntityNotFound(_0x14a77d,null))[_0x8508('0x21')](saveUpdates(_0x33d1a8[_0x8508('0x48')],null))[_0x8508('0x21')](respondWithResult(_0x14a77d,null))[_0x8508('0x42')](handleError(_0x14a77d,null));};exports[_0x8508('0x22')]=function(_0x3b02e7,_0x8e11b6){return db['VoiceMailMessage'][_0x8508('0x46')]({'where':{'id':_0x3b02e7[_0x8508('0x44')]['id']}})[_0x8508('0x21')](handleEntityNotFound(_0x8e11b6,null))['then'](removeEntity(_0x8e11b6,null))[_0x8508('0x42')](handleError(_0x8e11b6,null));};exports[_0x8508('0x49')]=function(_0x4c609e,_0x55308b,_0x4728c8){return db[_0x8508('0x3e')][_0x8508('0x46')]({'where':{'id':_0x4c609e[_0x8508('0x44')]['id']},'attributes':['id',_0x8508('0x4a'),'msg_id']})[_0x8508('0x21')](handleEntityNotFound(_0x55308b,null))['then'](function(_0xbd99da){if(_0xbd99da){if(!_0xbd99da[_0x8508('0x4a')]){throw new db[(_0x8508('0x4b'))][(_0x8508('0x4c'))]('VoiceMailMessage\x20not\x20found');}var _0xeefb89={'Content-Type':_0x8508('0x4d'),'Content-Disposition':_0x8508('0x4e')};if(_0xbd99da[_0x8508('0x4f')]){_0xeefb89['Content-Disposition']=_0x8508('0x50')+_0xbd99da['msg_id']+_0x8508('0x51');}_0x55308b[_0x8508('0x52')](_0xeefb89);return _0x55308b[_0x8508('0x27')](new Buffer(_0xbd99da['recording']));}})[_0x8508('0x42')](handleError(_0x55308b,null));};
\ No newline at end of file
index 0477283..2acefba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2a2=['path','rimraf','./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','util','bluebird','request-promise'];(function(_0x23439c,_0x5baf43){var _0x5f0922=function(_0x34406f){while(--_0x34406f){_0x23439c['push'](_0x23439c['shift']());}};_0x5f0922(++_0x5baf43);}(_0xe2a2,0x188));var _0x2e2a=function(_0x2ce73a,_0x36d330){_0x2ce73a=_0x2ce73a-0x0;var _0x3c21d1=_0xe2a2[_0x2ce73a];return _0x3c21d1;};'use strict';var _=require(_0x2e2a('0x0'));var util=require(_0x2e2a('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x2e2a('0x2'));var rp=require(_0x2e2a('0x3'));var fs=require('fs');var path=require(_0x2e2a('0x4'));var rimraf=require(_0x2e2a('0x5'));var config=require('../../config/environment');var attributes=require(_0x2e2a('0x6'));module[_0x2e2a('0x7')]=function(_0x3b9428,_0x24c6f8){return _0x3b9428[_0x2e2a('0x8')](_0x2e2a('0x9'),attributes,{'tableName':_0x2e2a('0xa'),'paranoid':![],'indexes':[{'name':_0x2e2a('0xb'),'fields':[_0x2e2a('0xb')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x692f=['lodash','util','moment','bluebird','request-promise','path','../../config/environment','./voiceMailMessage.attributes','define','VoiceMailMessage','voice_voicemail_messages','dir'];(function(_0xbd08b4,_0x4790ed){var _0x314f1e=function(_0x161589){while(--_0x161589){_0xbd08b4['push'](_0xbd08b4['shift']());}};_0x314f1e(++_0x4790ed);}(_0x692f,0x18c));var _0xf692=function(_0xd0b415,_0x149675){_0xd0b415=_0xd0b415-0x0;var _0x2bdf2c=_0x692f[_0xd0b415];return _0x2bdf2c;};'use strict';var _=require(_0xf692('0x0'));var util=require(_0xf692('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf692('0x2'));var BPromise=require(_0xf692('0x3'));var rp=require(_0xf692('0x4'));var fs=require('fs');var path=require(_0xf692('0x5'));var rimraf=require('rimraf');var config=require(_0xf692('0x6'));var attributes=require(_0xf692('0x7'));module['exports']=function(_0x22308b,_0x513b69){return _0x22308b[_0xf692('0x8')](_0xf692('0x9'),attributes,{'tableName':_0xf692('0xa'),'paranoid':![],'indexes':[{'name':_0xf692('0xb'),'fields':['dir']}],'timestamps':![]});};
\ No newline at end of file
index 3eb1775..636067c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5e2=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','util','randomstring'];(function(_0x54d4a8,_0x585a59){var _0x3b321b=function(_0x245c6a){while(--_0x245c6a){_0x54d4a8['push'](_0x54d4a8['shift']());}};_0x3b321b(++_0x585a59);}(_0xd5e2,0x142));var _0x2d5e=function(_0x5a559c,_0xb34e0b){_0x5a559c=_0x5a559c-0x0;var _0x1a4bd9=_0xd5e2[_0x5a559c];return _0x1a4bd9;};'use strict';var _=require('lodash');var util=require(_0x2d5e('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x2d5e('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2d5e('0x2'))(_0x2d5e('0x3'));var config=require(_0x2d5e('0x4'));var jayson=require(_0x2d5e('0x5'));var client=jayson[_0x2d5e('0x6')][_0x2d5e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x17783b,_0x1ced8e,_0x1e7fb1){return new BPromise(function(_0x352e6d,_0x2d83f4){return client[_0x2d5e('0x8')](_0x17783b,_0x1e7fb1)['then'](function(_0x53e0e8){logger['info'](_0x2d5e('0x9'),_0x1ced8e,_0x2d5e('0xa'));logger[_0x2d5e('0xb')](_0x2d5e('0xc'),_0x1ced8e,_0x2d5e('0xa'),JSON[_0x2d5e('0xd')](_0x53e0e8));if(_0x53e0e8['error']){if(_0x53e0e8[_0x2d5e('0xe')]['code']===0x1f4){logger[_0x2d5e('0xe')](_0x2d5e('0x9'),_0x1ced8e,_0x53e0e8['error'][_0x2d5e('0xf')]);return _0x2d83f4(_0x53e0e8[_0x2d5e('0xe')]['message']);}logger['error'](_0x2d5e('0x9'),_0x1ced8e,_0x53e0e8[_0x2d5e('0xe')][_0x2d5e('0xf')]);return _0x352e6d(_0x53e0e8[_0x2d5e('0xe')][_0x2d5e('0xf')]);}else{logger[_0x2d5e('0x10')](_0x2d5e('0x9'),_0x1ced8e,_0x2d5e('0xa'));_0x352e6d(_0x53e0e8[_0x2d5e('0x11')][_0x2d5e('0xf')]);}})['catch'](function(_0x55ddf1){logger[_0x2d5e('0xe')]('VoiceMailMessage,\x20%s,\x20%s',_0x1ced8e,_0x55ddf1);_0x2d83f4(_0x55ddf1);});});}
\ No newline at end of file
+var _0x18e7=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','debug','VoiceMailMessage,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash'];(function(_0x38c418,_0x13349e){var _0x161282=function(_0x25e847){while(--_0x25e847){_0x38c418['push'](_0x38c418['shift']());}};_0x161282(++_0x13349e);}(_0x18e7,0x14f));var _0x718e=function(_0x3f054c,_0xa6ec8c){_0x3f054c=_0x3f054c-0x0;var _0x47a066=_0x18e7[_0x3f054c];return _0x47a066;};'use strict';var _=require(_0x718e('0x0'));var util=require('util');var moment=require(_0x718e('0x1'));var BPromise=require(_0x718e('0x2'));var rs=require(_0x718e('0x3'));var fs=require('fs');var Redis=require(_0x718e('0x4'));var db=require(_0x718e('0x5'))['db'];var utils=require(_0x718e('0x6'));var logger=require(_0x718e('0x7'))(_0x718e('0x8'));var config=require(_0x718e('0x9'));var jayson=require(_0x718e('0xa'));var client=jayson[_0x718e('0xb')][_0x718e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2f676b,_0x5d5990,_0x4b053b){return new BPromise(function(_0x56e018,_0x472bb8){return client[_0x718e('0xd')](_0x2f676b,_0x4b053b)[_0x718e('0xe')](function(_0x3f988e){logger[_0x718e('0xf')](_0x718e('0x10'),_0x5d5990,_0x718e('0x11'));logger[_0x718e('0x12')](_0x718e('0x13'),_0x5d5990,_0x718e('0x11'),JSON['stringify'](_0x3f988e));if(_0x3f988e[_0x718e('0x14')]){if(_0x3f988e[_0x718e('0x14')][_0x718e('0x15')]===0x1f4){logger[_0x718e('0x14')](_0x718e('0x10'),_0x5d5990,_0x3f988e[_0x718e('0x14')][_0x718e('0x16')]);return _0x472bb8(_0x3f988e[_0x718e('0x14')][_0x718e('0x16')]);}logger[_0x718e('0x14')]('VoiceMailMessage,\x20%s,\x20%s',_0x5d5990,_0x3f988e[_0x718e('0x14')][_0x718e('0x16')]);return _0x56e018(_0x3f988e['error']['message']);}else{logger['info'](_0x718e('0x10'),_0x5d5990,_0x718e('0x11'));_0x56e018(_0x3f988e['result'][_0x718e('0x16')]);}})[_0x718e('0x17')](function(_0x25925e){logger['error'](_0x718e('0x10'),_0x5d5990,_0x25925e);_0x472bb8(_0x25925e);});});}
\ No newline at end of file
index ddae9fd..1733c7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4747=['../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','isAuthenticated','index','get','/:id','show','/:id/sounds','getSounds','post','create','addSound','put','delete','/:id/sounds/:id2','removeSound','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x1f2419,_0x557b91){var _0x2b56c5=function(_0x40255b){while(--_0x40255b){_0x1f2419['push'](_0x1f2419['shift']());}};_0x2b56c5(++_0x557b91);}(_0x4747,0x19d));var _0x7474=function(_0x1e203a,_0x397111){_0x1e203a=_0x1e203a-0x0;var _0x2a5006=_0x4747[_0x1e203a];return _0x2a5006;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x7474('0x0'));var timeout=require(_0x7474('0x1'));var express=require(_0x7474('0x2'));var router=express[_0x7474('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x7474('0x4'));var interaction=require(_0x7474('0x5'));var config=require(_0x7474('0x6'));var controller=require(_0x7474('0x7'));router['get']('/',auth[_0x7474('0x8')](),controller[_0x7474('0x9')]);router[_0x7474('0xa')](_0x7474('0xb'),auth[_0x7474('0x8')](),controller[_0x7474('0xc')]);router['get'](_0x7474('0xd'),auth['isAuthenticated'](),controller[_0x7474('0xe')]);router[_0x7474('0xf')]('/',auth[_0x7474('0x8')](),controller[_0x7474('0x10')]);router['post'](_0x7474('0xd'),auth[_0x7474('0x8')](),controller[_0x7474('0x11')]);router[_0x7474('0x12')](_0x7474('0xb'),auth[_0x7474('0x8')](),controller['update']);router[_0x7474('0x13')]('/:id',auth[_0x7474('0x8')](),controller['destroy']);router[_0x7474('0x13')](_0x7474('0x14'),auth[_0x7474('0x8')](),controller[_0x7474('0x15')]);module['exports']=router;
\ No newline at end of file
+var _0xdbfa=['/:id','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','isAuthenticated','show','getSounds','post','create','/:id/sounds','addSound','put','update'];(function(_0x5e6457,_0x55f4f7){var _0xbd0e3b=function(_0x57f6da){while(--_0x57f6da){_0x5e6457['push'](_0x5e6457['shift']());}};_0xbd0e3b(++_0x55f4f7);}(_0xdbfa,0x13b));var _0xadbf=function(_0x19e00f,_0x192640){_0x19e00f=_0x19e00f-0x0;var _0x26363e=_0xdbfa[_0x19e00f];return _0x26363e;};'use strict';var multer=require(_0xadbf('0x0'));var util=require(_0xadbf('0x1'));var path=require(_0xadbf('0x2'));var timeout=require(_0xadbf('0x3'));var express=require(_0xadbf('0x4'));var router=express[_0xadbf('0x5')]();var fs_extra=require(_0xadbf('0x6'));var auth=require(_0xadbf('0x7'));var interaction=require(_0xadbf('0x8'));var config=require(_0xadbf('0x9'));var controller=require(_0xadbf('0xa'));router[_0xadbf('0xb')]('/',auth[_0xadbf('0xc')](),controller['index']);router[_0xadbf('0xb')]('/:id',auth[_0xadbf('0xc')](),controller[_0xadbf('0xd')]);router[_0xadbf('0xb')]('/:id/sounds',auth[_0xadbf('0xc')](),controller[_0xadbf('0xe')]);router[_0xadbf('0xf')]('/',auth['isAuthenticated'](),controller[_0xadbf('0x10')]);router[_0xadbf('0xf')](_0xadbf('0x11'),auth['isAuthenticated'](),controller[_0xadbf('0x12')]);router[_0xadbf('0x13')]('/:id',auth[_0xadbf('0xc')](),controller[_0xadbf('0x14')]);router['delete'](_0xadbf('0x15'),auth[_0xadbf('0xc')](),controller['destroy']);router[_0xadbf('0x16')]('/:id/sounds/:id2',auth[_0xadbf('0xc')](),controller['removeSound']);module[_0xadbf('0x17')]=router;
\ No newline at end of file
index 2840ee1..7efa29f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3258=['mp3','TIMESTAMP','BOOLEAN','sequelize','STRING','name','ENUM','custom','files','mp3nb','quietmp3nb','quietmp3'];(function(_0x1a4a89,_0x5f18f5){var _0x46bbef=function(_0x1fbc87){while(--_0x1fbc87){_0x1a4a89['push'](_0x1a4a89['shift']());}};_0x46bbef(++_0x5f18f5);}(_0x3258,0x9f));var _0x8325=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3258[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x8325('0x0'));module['exports']={'name':{'type':Sequelize[_0x8325('0x1')],'allowNull':![],'unique':_0x8325('0x2')},'mode':{'type':Sequelize[_0x8325('0x3')](_0x8325('0x4'),_0x8325('0x5'),_0x8325('0x6'),_0x8325('0x7'),_0x8325('0x8'),_0x8325('0x9')),'allowNull':!![],'defaultValue':_0x8325('0x5')},'directory':{'type':Sequelize['STRING'],'allowNull':!![]},'application':{'type':Sequelize[_0x8325('0x1')],'allowNull':!![]},'digit':{'type':Sequelize[_0x8325('0x1')],'allowNull':!![]},'sort':{'type':Sequelize[_0x8325('0x1')],'allowNull':!![],'defaultValue':'alpha'},'format':{'type':Sequelize[_0x8325('0x1')],'allowNull':!![]},'stamp':{'type':_0x8325('0xa')},'defaultEntry':{'type':Sequelize[_0x8325('0xb')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0a08=['files','mp3nb','quietmp3','mp3','alpha','TIMESTAMP','BOOLEAN','sequelize','exports','STRING','ENUM','custom'];(function(_0x438685,_0x4ec0c0){var _0x41cca2=function(_0x532003){while(--_0x532003){_0x438685['push'](_0x438685['shift']());}};_0x41cca2(++_0x4ec0c0);}(_0x0a08,0x16f));var _0x80a0=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0x0a08[_0x37bd26];return _0xe83dc4;};'use strict';var Sequelize=require(_0x80a0('0x0'));module[_0x80a0('0x1')]={'name':{'type':Sequelize[_0x80a0('0x2')],'allowNull':![],'unique':'name'},'mode':{'type':Sequelize[_0x80a0('0x3')](_0x80a0('0x4'),_0x80a0('0x5'),_0x80a0('0x6'),'quietmp3nb',_0x80a0('0x7'),_0x80a0('0x8')),'allowNull':!![],'defaultValue':_0x80a0('0x5')},'directory':{'type':Sequelize[_0x80a0('0x2')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0x80a0('0x2')],'allowNull':!![]},'sort':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x80a0('0x9')},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':_0x80a0('0xa')},'defaultEntry':{'type':Sequelize[_0x80a0('0xb')],'defaultValue':0x0}};
\ No newline at end of file
index 32263a4..39b4995 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe286=['filter','merge','VoiceMusicOnHold','includeAll','include','findAll','rows','params','options','find','catch','body','create','transaction','mode','files','directory','join','root','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','MusicOnHolds','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','sequelize','readdirSync','forEach','unlinkSync','Sequelize','ValidationError','addSound','findOne','createdAt','server/files/sounds/converted','format','extname','save_name','converted_format','server/files/moh','%s.%s','symlinkSync','message','removeSound','id2','Sound','sort','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','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','get','end','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick'];(function(_0x4d6af0,_0x3f3394){var _0x546a9d=function(_0x1c3563){while(--_0x1c3563){_0x4d6af0['push'](_0x4d6af0['shift']());}};_0x546a9d(++_0x3f3394);}(_0xe286,0x18c));var _0x6e28=function(_0x29ce4a,_0x4a7909){_0x29ce4a=_0x29ce4a-0x0;var _0x455d8a=_0xe286[_0x29ce4a];return _0x455d8a;};'use strict';var emlformat=require(_0x6e28('0x0'));var rimraf=require(_0x6e28('0x1'));var zipdir=require(_0x6e28('0x2'));var jsonpatch=require(_0x6e28('0x3'));var rp=require(_0x6e28('0x4'));var moment=require(_0x6e28('0x5'));var BPromise=require(_0x6e28('0x6'));var Mustache=require(_0x6e28('0x7'));var util=require(_0x6e28('0x8'));var path=require(_0x6e28('0x9'));var sox=require(_0x6e28('0xa'));var csv=require(_0x6e28('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6e28('0xc'));var _=require(_0x6e28('0xd'));var squel=require('squel');var crypto=require(_0x6e28('0xe'));var jsforce=require(_0x6e28('0xf'));var deskjs=require(_0x6e28('0x10'));var toCsv=require(_0x6e28('0xb'));var querystring=require('querystring');var Papa=require(_0x6e28('0x11'));var Redis=require('ioredis');var authService=require(_0x6e28('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x6e28('0x13'));var hardwareService=require(_0x6e28('0x14'));var logger=require(_0x6e28('0x15'))(_0x6e28('0x16'));var utils=require('../../config/utils');var config=require(_0x6e28('0x17'));var licenseUtil=require(_0x6e28('0x18'));var db=require(_0x6e28('0x19'))['db'];function respondWithStatusCode(_0x34fc07,_0x1d8fb9){_0x1d8fb9=_0x1d8fb9||0xcc;return function(_0x37c8ad){if(_0x37c8ad){return _0x34fc07[_0x6e28('0x1a')](_0x1d8fb9);}return _0x34fc07[_0x6e28('0x1b')](_0x1d8fb9)['end']();};}function respondWithResult(_0x44dc3f,_0x2968ee){_0x2968ee=_0x2968ee||0xc8;return function(_0x2c739d){if(_0x2c739d){return _0x44dc3f['status'](_0x2968ee)[_0x6e28('0x1c')](_0x2c739d);}};}function respondWithFilteredResult(_0x28916,_0x3ba74f){return function(_0x5f2331){if(_0x5f2331){var _0x2a18c5=typeof _0x3ba74f[_0x6e28('0x1d')]===_0x6e28('0x1e')&&typeof _0x3ba74f[_0x6e28('0x1f')]==='undefined';var _0x65aaa0=_0x5f2331[_0x6e28('0x20')];var _0x48d49a=_0x2a18c5?0x0:_0x3ba74f[_0x6e28('0x1d')];var _0x5ee504=_0x2a18c5?_0x5f2331[_0x6e28('0x20')]:_0x3ba74f[_0x6e28('0x1d')]+_0x3ba74f[_0x6e28('0x1f')];var _0x458d8b;if(_0x5ee504>=_0x65aaa0){_0x5ee504=_0x65aaa0;_0x458d8b=0xc8;}else{_0x458d8b=0xce;}_0x28916[_0x6e28('0x1b')](_0x458d8b);return _0x28916[_0x6e28('0x21')](_0x6e28('0x22'),_0x48d49a+'-'+_0x5ee504+'/'+_0x65aaa0)['json'](_0x5f2331);}return null;};}function patchUpdates(_0x41db6b){return function(_0xf758a4){try{jsonpatch['apply'](_0xf758a4,_0x41db6b,!![]);}catch(_0x5dcc95){return BPromise[_0x6e28('0x23')](_0x5dcc95);}return _0xf758a4[_0x6e28('0x24')]();};}function saveUpdates(_0x65cb7a,_0xb240e1){return function(_0x12d82c){if(_0x12d82c){return _0x12d82c[_0x6e28('0x25')](_0x65cb7a)[_0x6e28('0x26')](function(_0x5bcfea){return _0x5bcfea;});}return null;};}function removeEntity(_0x1d4d3f,_0x1e0c59){return function(_0x2c8fcc){if(_0x2c8fcc){return _0x2c8fcc[_0x6e28('0x27')]()[_0x6e28('0x26')](function(){var _0x4e9fe3=_0x2c8fcc[_0x6e28('0x28')]({'plain':!![]});var _0x10ea07='MusicOnHolds';return db['UserProfileResource'][_0x6e28('0x27')]({'where':{'type':_0x10ea07,'resourceId':_0x4e9fe3['id']}})[_0x6e28('0x26')](function(){return _0x2c8fcc;});})[_0x6e28('0x26')](function(){_0x1d4d3f[_0x6e28('0x1b')](0xcc)[_0x6e28('0x29')]();});}};}function handleEntityNotFound(_0x47af88,_0x4cdab9){return function(_0x4012ee){if(!_0x4012ee){_0x47af88['sendStatus'](0x194);}return _0x4012ee;};}function handleError(_0x3b0b04,_0x3d066e){_0x3d066e=_0x3d066e||0x1f4;return function(_0x464a89){logger[_0x6e28('0x2a')](_0x464a89[_0x6e28('0x2b')]);if(_0x464a89[_0x6e28('0x2c')]){delete _0x464a89[_0x6e28('0x2c')];}_0x3b0b04[_0x6e28('0x1b')](_0x3d066e)[_0x6e28('0x2d')](_0x464a89);};}exports['index']=function(_0x53449d,_0xb7513d){var _0x1c873f={},_0x274088={},_0x33d39a={'count':0x0,'rows':[]};var _0x2a2ada=_[_0x6e28('0x2e')](db['VoiceMusicOnHold'][_0x6e28('0x2f')],function(_0x34639d){return{'name':_0x34639d[_0x6e28('0x30')],'type':_0x34639d[_0x6e28('0x31')][_0x6e28('0x32')]};});_0x274088[_0x6e28('0x33')]=_[_0x6e28('0x2e')](_0x2a2ada,_0x6e28('0x2c'));_0x274088[_0x6e28('0x34')]=_[_0x6e28('0x35')](_0x53449d[_0x6e28('0x34')]);_0x274088[_0x6e28('0x36')]=_[_0x6e28('0x37')](_0x274088[_0x6e28('0x33')],_0x274088[_0x6e28('0x34')]);_0x1c873f[_0x6e28('0x38')]=_['intersection'](_0x274088[_0x6e28('0x33')],qs[_0x6e28('0x39')](_0x53449d[_0x6e28('0x34')][_0x6e28('0x39')]));_0x1c873f[_0x6e28('0x38')]=_0x1c873f[_0x6e28('0x38')][_0x6e28('0x3a')]?_0x1c873f[_0x6e28('0x38')]:_0x274088[_0x6e28('0x33')];if(!_0x53449d[_0x6e28('0x34')][_0x6e28('0x3b')](_0x6e28('0x3c'))){_0x1c873f['limit']=qs[_0x6e28('0x1f')](_0x53449d[_0x6e28('0x34')][_0x6e28('0x1f')]);_0x1c873f[_0x6e28('0x1d')]=qs[_0x6e28('0x1d')](_0x53449d[_0x6e28('0x34')][_0x6e28('0x1d')]);}_0x1c873f[_0x6e28('0x3d')]=qs['sort'](_0x53449d[_0x6e28('0x34')]['sort']);delete _0x53449d[_0x6e28('0x34')]['sort'];_0x1c873f[_0x6e28('0x3e')]=qs[_0x6e28('0x36')](_[_0x6e28('0x3f')](_0x53449d[_0x6e28('0x34')],_0x274088['filters']),_0x2a2ada);if(_0x53449d[_0x6e28('0x34')][_0x6e28('0x40')]){_0x1c873f[_0x6e28('0x3e')]=_[_0x6e28('0x41')](_0x1c873f[_0x6e28('0x3e')],{'$or':_[_0x6e28('0x2e')](_0x2a2ada,function(_0x4d178e){if(_0x4d178e[_0x6e28('0x31')]!=='VIRTUAL'){var _0x35a266={};_0x35a266[_0x4d178e[_0x6e28('0x2c')]]={'$like':'%'+_0x53449d[_0x6e28('0x34')][_0x6e28('0x40')]+'%'};return _0x35a266;}})});}_0x1c873f=_[_0x6e28('0x41')]({},_0x1c873f,_0x53449d['options']);var _0x5c1e6a={'where':_0x1c873f[_0x6e28('0x3e')]};return db[_0x6e28('0x42')][_0x6e28('0x20')](_0x5c1e6a)[_0x6e28('0x26')](function(_0x3e857e){_0x33d39a[_0x6e28('0x20')]=_0x3e857e;if(_0x53449d[_0x6e28('0x34')][_0x6e28('0x43')]){_0x1c873f[_0x6e28('0x44')]=[{'all':!![]}];}return db[_0x6e28('0x42')][_0x6e28('0x45')](_0x1c873f);})[_0x6e28('0x26')](function(_0x4d1581){_0x33d39a[_0x6e28('0x46')]=_0x4d1581;return _0x33d39a;})['then'](respondWithFilteredResult(_0xb7513d,_0x1c873f))['catch'](handleError(_0xb7513d,null));};exports['show']=function(_0x1d569f,_0x55d238){var _0x162349={'raw':![],'where':{'id':_0x1d569f[_0x6e28('0x47')]['id']}},_0x76e467={};_0x76e467[_0x6e28('0x33')]=_[_0x6e28('0x35')](db[_0x6e28('0x42')]['rawAttributes']);_0x76e467['query']=_['keys'](_0x1d569f[_0x6e28('0x34')]);_0x76e467[_0x6e28('0x36')]=_[_0x6e28('0x37')](_0x76e467[_0x6e28('0x33')],_0x76e467[_0x6e28('0x34')]);_0x162349['attributes']=_['intersection'](_0x76e467['model'],qs['fields'](_0x1d569f['query'][_0x6e28('0x39')]));_0x162349[_0x6e28('0x38')]=_0x162349[_0x6e28('0x38')]['length']?_0x162349[_0x6e28('0x38')]:_0x76e467[_0x6e28('0x33')];if(_0x1d569f['query']['includeAll']){_0x162349[_0x6e28('0x44')]=[{'all':!![]}];}_0x162349=_[_0x6e28('0x41')]({},_0x162349,_0x1d569f[_0x6e28('0x48')]);return db[_0x6e28('0x42')][_0x6e28('0x49')](_0x162349)['then'](handleEntityNotFound(_0x55d238,null))[_0x6e28('0x26')](respondWithResult(_0x55d238,null))[_0x6e28('0x4a')](handleError(_0x55d238,null));};exports[_0x6e28('0x25')]=function(_0x30e591,_0x5849ab){if(_0x30e591[_0x6e28('0x4b')]['id']){delete _0x30e591[_0x6e28('0x4b')]['id'];}return db[_0x6e28('0x42')]['find']({'where':{'id':_0x30e591[_0x6e28('0x47')]['id']}})[_0x6e28('0x26')](handleEntityNotFound(_0x5849ab,null))[_0x6e28('0x26')](saveUpdates(_0x30e591[_0x6e28('0x4b')],null))[_0x6e28('0x26')](respondWithResult(_0x5849ab,null))[_0x6e28('0x4a')](handleError(_0x5849ab,null));};exports[_0x6e28('0x4c')]=function(_0x41d83a,_0x14d833,_0x543b69){return db['sequelize'][_0x6e28('0x4d')](function(_0x41daab){if(_0x41d83a[_0x6e28('0x4b')][_0x6e28('0x4e')]===_0x6e28('0x4f')){_0x41d83a[_0x6e28('0x4b')][_0x6e28('0x50')]=path[_0x6e28('0x51')](config[_0x6e28('0x52')],'server/files/moh',_0x41d83a['body'][_0x6e28('0x2c')]);}return db[_0x6e28('0x42')][_0x6e28('0x4c')](_0x41d83a[_0x6e28('0x4b')],{'transaction':_0x41daab})[_0x6e28('0x26')](function(_0x5233ff){if(_0x41d83a['body'][_0x6e28('0x4e')]===_0x6e28('0x4f')){fs['mkdirSync'](_0x5233ff[_0x6e28('0x50')],parseInt(_0x6e28('0x53'),0x8));}var _0x191577=_0x41d83a[_0x6e28('0x54')][_0x6e28('0x28')]({'plain':!![]});if(!_0x191577)throw new Error(_0x6e28('0x55'));if(_0x191577[_0x6e28('0x56')]==='user'){var _0x4ad64e=_0x5233ff[_0x6e28('0x28')]({'plain':!![]});return db[_0x6e28('0x57')][_0x6e28('0x49')]({'where':{'name':_0x6e28('0x58'),'userProfileId':_0x191577[_0x6e28('0x59')]},'raw':!![]})[_0x6e28('0x26')](function(_0x43fd25){if(_0x43fd25&&_0x43fd25[_0x6e28('0x5a')]===0x0){return db[_0x6e28('0x5b')]['create']({'name':_0x4ad64e['name'],'resourceId':_0x4ad64e['id'],'type':_0x43fd25[_0x6e28('0x2c')],'sectionId':_0x43fd25['id']},{})[_0x6e28('0x26')](function(){return _0x5233ff;});}else{return _0x5233ff;}})[_0x6e28('0x4a')](function(_0x38dd84){logger[_0x6e28('0x2a')](_0x6e28('0x5c'),_0x38dd84);});}return _0x5233ff;});})[_0x6e28('0x26')](respondWithResult(_0x14d833,0xc9))['catch'](handleError(_0x14d833,null));};exports[_0x6e28('0x27')]=function(_0x2df954,_0x9fdf43,_0x342953){var _0x46fe68;return db[_0x6e28('0x42')][_0x6e28('0x49')]({'where':{'id':_0x2df954['params']['id']}})['then'](function(_0x3d32aa){if(_0x3d32aa){return db[_0x6e28('0x5d')][_0x6e28('0x4d')](function(_0x9620cc){return _0x3d32aa[_0x6e28('0x27')]({'transaction':_0x9620cc,'raw':!![]})[_0x6e28('0x26')](function(_0x3bfb8f){if(_0x3bfb8f[_0x6e28('0x50')]){fs[_0x6e28('0x5e')](_0x3bfb8f[_0x6e28('0x50')])[_0x6e28('0x5f')](function(_0x276df1){fs[_0x6e28('0x60')](path[_0x6e28('0x51')](_0x3bfb8f[_0x6e28('0x50')],_0x276df1));});fs['rmdirSync'](_0x3bfb8f[_0x6e28('0x50')]);}return _0x3bfb8f;});})['catch'](function(_0x52cb49){throw new db[(_0x6e28('0x61'))][(_0x6e28('0x62'))](_0x52cb49['message']);});}})[_0x6e28('0x26')](handleEntityNotFound(_0x9fdf43,null))['then'](removeEntity(_0x9fdf43,null))[_0x6e28('0x4a')](handleError(_0x9fdf43,null));};exports[_0x6e28('0x63')]=function(_0x333f8c,_0x488c7a,_0x3d375d){return db[_0x6e28('0x5d')][_0x6e28('0x4d')](function(_0x55c6c7){var _0x5f00ce;return db[_0x6e28('0x42')][_0x6e28('0x49')]({'where':{'id':_0x333f8c['params']['id']}})[_0x6e28('0x26')](function(_0x79c8a4){if(_0x79c8a4){_0x5f00ce=_0x79c8a4;return _0x79c8a4[_0x6e28('0x63')](_0x333f8c['body']['id'],{'transaction':_0x55c6c7});}})[_0x6e28('0x26')](function(_0x379e89){if(_0x379e89){return db['Sound'][_0x6e28('0x64')]({'where':{'id':_0x333f8c[_0x6e28('0x4b')]['id']},'attributes':['id',_0x6e28('0x2c'),'save_name','converted_format',_0x6e28('0x65')],'raw':!![]});}})[_0x6e28('0x26')](function(_0x165e2c){if(_0x165e2c){var _0x3b7871=path[_0x6e28('0x51')](config[_0x6e28('0x52')],_0x6e28('0x66'),util[_0x6e28('0x67')]('%s.%s',path['basename'](_0x165e2c['save_name'],path[_0x6e28('0x68')](_0x165e2c[_0x6e28('0x69')])),_0x165e2c[_0x6e28('0x6a')]));var _0x1231d6=path[_0x6e28('0x51')](config[_0x6e28('0x52')],_0x6e28('0x6b'),_0x5f00ce[_0x6e28('0x2c')],util[_0x6e28('0x67')](_0x6e28('0x6c'),_0x165e2c[_0x6e28('0x2c')],_0x165e2c['converted_format']));fs[_0x6e28('0x6d')](_0x3b7871,_0x1231d6);return _0x165e2c;}})['catch'](function(_0x2fb236){throw new db[(_0x6e28('0x61'))]['ValidationError'](_0x2fb236[_0x6e28('0x6e')]);});})[_0x6e28('0x26')](handleEntityNotFound(_0x488c7a,null))[_0x6e28('0x26')](respondWithResult(_0x488c7a,0xc9))[_0x6e28('0x4a')](handleError(_0x488c7a,null));};exports[_0x6e28('0x6f')]=function(_0x2025f4,_0x1472de,_0x385990){return db['sequelize'][_0x6e28('0x4d')](function(_0x537f06){var _0x20174d;return db[_0x6e28('0x42')]['findOne']({'where':{'id':_0x2025f4[_0x6e28('0x47')]['id']}})[_0x6e28('0x26')](handleEntityNotFound(_0x1472de,null))[_0x6e28('0x26')](function(_0x331761){if(_0x331761){_0x20174d=_0x331761;return _0x331761[_0x6e28('0x6f')](_0x2025f4[_0x6e28('0x47')][_0x6e28('0x70')]);}})[_0x6e28('0x26')](function(_0x477da){if(_0x477da){return db[_0x6e28('0x71')][_0x6e28('0x64')]({'where':{'id':_0x2025f4['params']['id2']},'attributes':['id',_0x6e28('0x2c'),_0x6e28('0x69'),_0x6e28('0x6a'),_0x6e28('0x65')],'raw':!![]});}})[_0x6e28('0x26')](function(_0x32edc3){if(_0x32edc3){fs['unlinkSync'](path[_0x6e28('0x51')](_0x20174d[_0x6e28('0x50')],util[_0x6e28('0x67')](_0x6e28('0x6c'),_0x32edc3[_0x6e28('0x2c')],_0x32edc3[_0x6e28('0x6a')])));return _0x32edc3;}})['catch'](function(_0x53bbc6){throw new db[(_0x6e28('0x61'))][(_0x6e28('0x62'))](_0x53bbc6[_0x6e28('0x6e')]);});})[_0x6e28('0x26')](handleEntityNotFound(_0x1472de,null))['then'](respondWithStatusCode(_0x1472de,0xcc))[_0x6e28('0x4a')](handleError(_0x1472de,null));};exports['getSounds']=function(_0x516c5e,_0x2ef9e6,_0x39888f){var _0x3b05a4={};var _0xcc50c5={};var _0x8cf06e;var _0x517f48;return db[_0x6e28('0x42')][_0x6e28('0x64')]({'where':{'id':_0x516c5e['params']['id']}})[_0x6e28('0x26')](handleEntityNotFound(_0x2ef9e6,null))['then'](function(_0xac4afd){if(_0xac4afd){_0x8cf06e=_0xac4afd;_0xcc50c5['model']=_['keys'](db['Sound'][_0x6e28('0x2f')]);_0xcc50c5[_0x6e28('0x34')]=_[_0x6e28('0x35')](_0x516c5e[_0x6e28('0x34')]);_0xcc50c5[_0x6e28('0x36')]=_[_0x6e28('0x37')](_0xcc50c5[_0x6e28('0x33')],_0xcc50c5[_0x6e28('0x34')]);_0x3b05a4[_0x6e28('0x38')]=_[_0x6e28('0x37')](_0xcc50c5[_0x6e28('0x33')],qs[_0x6e28('0x39')](_0x516c5e[_0x6e28('0x34')][_0x6e28('0x39')]));_0x3b05a4[_0x6e28('0x38')]=_0x3b05a4[_0x6e28('0x38')][_0x6e28('0x3a')]?_0x3b05a4['attributes']:_0xcc50c5[_0x6e28('0x33')];_0x3b05a4['order']=qs['sort'](_0x516c5e[_0x6e28('0x34')][_0x6e28('0x72')]);_0x3b05a4['where']=qs[_0x6e28('0x36')](_[_0x6e28('0x3f')](_0x516c5e[_0x6e28('0x34')],_0xcc50c5['filters']));if(_0x516c5e['query'][_0x6e28('0x40')]){_0x3b05a4[_0x6e28('0x3e')]=_['merge'](_0x3b05a4[_0x6e28('0x3e')],{'$or':_[_0x6e28('0x2e')](_0x3b05a4['attributes'],function(_0x52965f){var _0x358235={};_0x358235[_0x52965f]={'$like':'%'+_0x516c5e['query'][_0x6e28('0x40')]+'%'};return _0x358235;})});}_0x3b05a4=_['merge']({},_0x3b05a4,_0x516c5e[_0x6e28('0x48')]);return _0x8cf06e['getSounds'](_0x3b05a4);}})[_0x6e28('0x26')](function(_0x192593){if(_0x192593){_0x517f48=_0x192593[_0x6e28('0x3a')];if(!_0x516c5e['query'][_0x6e28('0x3b')]('nolimit')){_0x3b05a4[_0x6e28('0x1f')]=qs[_0x6e28('0x1f')](_0x516c5e[_0x6e28('0x34')][_0x6e28('0x1f')]);_0x3b05a4[_0x6e28('0x1d')]=qs[_0x6e28('0x1d')](_0x516c5e[_0x6e28('0x34')]['offset']);}return _0x8cf06e['getSounds'](_0x3b05a4);}})[_0x6e28('0x26')](function(_0x55c419){if(_0x55c419){return _0x55c419?{'count':_0x517f48,'rows':_0x55c419}:null;}})['then'](respondWithResult(_0x2ef9e6,null))[_0x6e28('0x4a')](handleError(_0x2ef9e6,null));};
\ No newline at end of file
+var _0xeb17=['fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','filter','includeAll','include','catch','show','length','options','find','body','create','sequelize','transaction','mode','files','directory','join','root','server/files/moh','mkdirSync','0777','user','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','readdirSync','rmdirSync','addSound','Sound','findOne','save_name','converted_format','createdAt','server/files/sounds/converted','format','%s.%s','basename','symlinkSync','message','removeSound','id2','unlinkSync','Sequelize','ValidationError','getSounds','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','status','end','json','offset','undefined','limit','count','set','save','update','then','destroy','get','MusicOnHolds','error','stack','name','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes'];(function(_0x4151cd,_0x459c22){var _0xb831c5=function(_0x376ecd){while(--_0x376ecd){_0x4151cd['push'](_0x4151cd['shift']());}};_0xb831c5(++_0x459c22);}(_0xeb17,0xa4));var _0x7eb1=function(_0x56c7d3,_0x3c4f79){_0x56c7d3=_0x56c7d3-0x0;var _0x5024a2=_0xeb17[_0x56c7d3];return _0x5024a2;};'use strict';var emlformat=require(_0x7eb1('0x0'));var rimraf=require(_0x7eb1('0x1'));var zipdir=require(_0x7eb1('0x2'));var jsonpatch=require(_0x7eb1('0x3'));var rp=require(_0x7eb1('0x4'));var moment=require(_0x7eb1('0x5'));var BPromise=require(_0x7eb1('0x6'));var Mustache=require(_0x7eb1('0x7'));var util=require(_0x7eb1('0x8'));var path=require('path');var sox=require(_0x7eb1('0x9'));var csv=require(_0x7eb1('0xa'));var ejs=require(_0x7eb1('0xb'));var fs=require('fs');var fs_extra=require(_0x7eb1('0xc'));var _=require(_0x7eb1('0xd'));var squel=require(_0x7eb1('0xe'));var crypto=require(_0x7eb1('0xf'));var jsforce=require(_0x7eb1('0x10'));var deskjs=require(_0x7eb1('0x11'));var toCsv=require(_0x7eb1('0xa'));var querystring=require(_0x7eb1('0x12'));var Papa=require(_0x7eb1('0x13'));var Redis=require('ioredis');var authService=require(_0x7eb1('0x14'));var qs=require(_0x7eb1('0x15'));var as=require(_0x7eb1('0x16'));var hardwareService=require(_0x7eb1('0x17'));var logger=require(_0x7eb1('0x18'))('api');var utils=require('../../config/utils');var config=require(_0x7eb1('0x19'));var licenseUtil=require(_0x7eb1('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5714d5,_0x36af4d){_0x36af4d=_0x36af4d||0xcc;return function(_0x50f7d1){if(_0x50f7d1){return _0x5714d5['sendStatus'](_0x36af4d);}return _0x5714d5[_0x7eb1('0x1b')](_0x36af4d)[_0x7eb1('0x1c')]();};}function respondWithResult(_0x360389,_0x3d905c){_0x3d905c=_0x3d905c||0xc8;return function(_0x196c60){if(_0x196c60){return _0x360389['status'](_0x3d905c)[_0x7eb1('0x1d')](_0x196c60);}};}function respondWithFilteredResult(_0x538342,_0xa4a6f8){return function(_0x3cade5){if(_0x3cade5){var _0x330a28=typeof _0xa4a6f8[_0x7eb1('0x1e')]===_0x7eb1('0x1f')&&typeof _0xa4a6f8[_0x7eb1('0x20')]===_0x7eb1('0x1f');var _0x113383=_0x3cade5[_0x7eb1('0x21')];var _0x2a530e=_0x330a28?0x0:_0xa4a6f8[_0x7eb1('0x1e')];var _0x874b22=_0x330a28?_0x3cade5['count']:_0xa4a6f8['offset']+_0xa4a6f8[_0x7eb1('0x20')];var _0x4a4f13;if(_0x874b22>=_0x113383){_0x874b22=_0x113383;_0x4a4f13=0xc8;}else{_0x4a4f13=0xce;}_0x538342[_0x7eb1('0x1b')](_0x4a4f13);return _0x538342[_0x7eb1('0x22')]('Content-Range',_0x2a530e+'-'+_0x874b22+'/'+_0x113383)[_0x7eb1('0x1d')](_0x3cade5);}return null;};}function patchUpdates(_0x3081fd){return function(_0x33d86a){try{jsonpatch['apply'](_0x33d86a,_0x3081fd,!![]);}catch(_0x5d155a){return BPromise['reject'](_0x5d155a);}return _0x33d86a[_0x7eb1('0x23')]();};}function saveUpdates(_0x4bb610,_0x3ac59a){return function(_0x5d2890){if(_0x5d2890){return _0x5d2890[_0x7eb1('0x24')](_0x4bb610)[_0x7eb1('0x25')](function(_0x5d6630){return _0x5d6630;});}return null;};}function removeEntity(_0x2f2343,_0x3a2b8f){return function(_0x433acb){if(_0x433acb){return _0x433acb[_0x7eb1('0x26')]()[_0x7eb1('0x25')](function(){var _0x588d24=_0x433acb[_0x7eb1('0x27')]({'plain':!![]});var _0x17fbd2=_0x7eb1('0x28');return db['UserProfileResource'][_0x7eb1('0x26')]({'where':{'type':_0x17fbd2,'resourceId':_0x588d24['id']}})[_0x7eb1('0x25')](function(){return _0x433acb;});})[_0x7eb1('0x25')](function(){_0x2f2343[_0x7eb1('0x1b')](0xcc)[_0x7eb1('0x1c')]();});}};}function handleEntityNotFound(_0x2218fd,_0x1cbec1){return function(_0x3a1d9a){if(!_0x3a1d9a){_0x2218fd['sendStatus'](0x194);}return _0x3a1d9a;};}function handleError(_0x40d3a4,_0x1f6a51){_0x1f6a51=_0x1f6a51||0x1f4;return function(_0x493c60){logger[_0x7eb1('0x29')](_0x493c60[_0x7eb1('0x2a')]);if(_0x493c60[_0x7eb1('0x2b')]){delete _0x493c60[_0x7eb1('0x2b')];}_0x40d3a4[_0x7eb1('0x1b')](_0x1f6a51)['send'](_0x493c60);};}exports[_0x7eb1('0x2c')]=function(_0x4d7783,_0x24ac9b){var _0x114c94={},_0x5e0715={},_0x36b823={'count':0x0,'rows':[]};var _0x210c0c=_[_0x7eb1('0x2d')](db[_0x7eb1('0x2e')][_0x7eb1('0x2f')],function(_0x104bc0){return{'name':_0x104bc0[_0x7eb1('0x30')],'type':_0x104bc0[_0x7eb1('0x31')]['key']};});_0x5e0715[_0x7eb1('0x32')]=_[_0x7eb1('0x2d')](_0x210c0c,_0x7eb1('0x2b'));_0x5e0715['query']=_[_0x7eb1('0x33')](_0x4d7783[_0x7eb1('0x34')]);_0x5e0715[_0x7eb1('0x35')]=_[_0x7eb1('0x36')](_0x5e0715['model'],_0x5e0715[_0x7eb1('0x34')]);_0x114c94[_0x7eb1('0x37')]=_[_0x7eb1('0x36')](_0x5e0715[_0x7eb1('0x32')],qs[_0x7eb1('0x38')](_0x4d7783[_0x7eb1('0x34')][_0x7eb1('0x38')]));_0x114c94[_0x7eb1('0x37')]=_0x114c94[_0x7eb1('0x37')]['length']?_0x114c94[_0x7eb1('0x37')]:_0x5e0715[_0x7eb1('0x32')];if(!_0x4d7783[_0x7eb1('0x34')][_0x7eb1('0x39')](_0x7eb1('0x3a'))){_0x114c94['limit']=qs[_0x7eb1('0x20')](_0x4d7783[_0x7eb1('0x34')][_0x7eb1('0x20')]);_0x114c94[_0x7eb1('0x1e')]=qs['offset'](_0x4d7783[_0x7eb1('0x34')][_0x7eb1('0x1e')]);}_0x114c94[_0x7eb1('0x3b')]=qs['sort'](_0x4d7783[_0x7eb1('0x34')][_0x7eb1('0x3c')]);delete _0x4d7783[_0x7eb1('0x34')][_0x7eb1('0x3c')];_0x114c94[_0x7eb1('0x3d')]=qs['filters'](_[_0x7eb1('0x3e')](_0x4d7783[_0x7eb1('0x34')],_0x5e0715['filters']),_0x210c0c);if(_0x4d7783['query']['filter']){_0x114c94[_0x7eb1('0x3d')]=_[_0x7eb1('0x3f')](_0x114c94[_0x7eb1('0x3d')],{'$or':_[_0x7eb1('0x2d')](_0x210c0c,function(_0x32c6ed){if(_0x32c6ed[_0x7eb1('0x31')]!=='VIRTUAL'){var _0x5682fb={};_0x5682fb[_0x32c6ed[_0x7eb1('0x2b')]]={'$like':'%'+_0x4d7783[_0x7eb1('0x34')][_0x7eb1('0x40')]+'%'};return _0x5682fb;}})});}_0x114c94=_[_0x7eb1('0x3f')]({},_0x114c94,_0x4d7783['options']);var _0x1fe0eb={'where':_0x114c94['where']};return db[_0x7eb1('0x2e')][_0x7eb1('0x21')](_0x1fe0eb)[_0x7eb1('0x25')](function(_0x532c47){_0x36b823[_0x7eb1('0x21')]=_0x532c47;if(_0x4d7783[_0x7eb1('0x34')][_0x7eb1('0x41')]){_0x114c94[_0x7eb1('0x42')]=[{'all':!![]}];}return db['VoiceMusicOnHold']['findAll'](_0x114c94);})[_0x7eb1('0x25')](function(_0x53da29){_0x36b823['rows']=_0x53da29;return _0x36b823;})[_0x7eb1('0x25')](respondWithFilteredResult(_0x24ac9b,_0x114c94))[_0x7eb1('0x43')](handleError(_0x24ac9b,null));};exports[_0x7eb1('0x44')]=function(_0x1bb834,_0x2bd0d2){var _0x1677ad={'raw':![],'where':{'id':_0x1bb834['params']['id']}},_0x59193f={};_0x59193f['model']=_['keys'](db[_0x7eb1('0x2e')]['rawAttributes']);_0x59193f[_0x7eb1('0x34')]=_[_0x7eb1('0x33')](_0x1bb834[_0x7eb1('0x34')]);_0x59193f[_0x7eb1('0x35')]=_[_0x7eb1('0x36')](_0x59193f[_0x7eb1('0x32')],_0x59193f[_0x7eb1('0x34')]);_0x1677ad[_0x7eb1('0x37')]=_['intersection'](_0x59193f[_0x7eb1('0x32')],qs[_0x7eb1('0x38')](_0x1bb834[_0x7eb1('0x34')]['fields']));_0x1677ad[_0x7eb1('0x37')]=_0x1677ad[_0x7eb1('0x37')][_0x7eb1('0x45')]?_0x1677ad[_0x7eb1('0x37')]:_0x59193f[_0x7eb1('0x32')];if(_0x1bb834[_0x7eb1('0x34')][_0x7eb1('0x41')]){_0x1677ad[_0x7eb1('0x42')]=[{'all':!![]}];}_0x1677ad=_[_0x7eb1('0x3f')]({},_0x1677ad,_0x1bb834[_0x7eb1('0x46')]);return db[_0x7eb1('0x2e')][_0x7eb1('0x47')](_0x1677ad)['then'](handleEntityNotFound(_0x2bd0d2,null))[_0x7eb1('0x25')](respondWithResult(_0x2bd0d2,null))[_0x7eb1('0x43')](handleError(_0x2bd0d2,null));};exports[_0x7eb1('0x24')]=function(_0x4c43ed,_0x24cce4){if(_0x4c43ed[_0x7eb1('0x48')]['id']){delete _0x4c43ed[_0x7eb1('0x48')]['id'];}return db[_0x7eb1('0x2e')][_0x7eb1('0x47')]({'where':{'id':_0x4c43ed['params']['id']}})[_0x7eb1('0x25')](handleEntityNotFound(_0x24cce4,null))[_0x7eb1('0x25')](saveUpdates(_0x4c43ed['body'],null))[_0x7eb1('0x25')](respondWithResult(_0x24cce4,null))[_0x7eb1('0x43')](handleError(_0x24cce4,null));};exports[_0x7eb1('0x49')]=function(_0x56e38d,_0x272270,_0x3380ee){return db[_0x7eb1('0x4a')][_0x7eb1('0x4b')](function(_0x5db035){if(_0x56e38d[_0x7eb1('0x48')][_0x7eb1('0x4c')]===_0x7eb1('0x4d')){_0x56e38d['body'][_0x7eb1('0x4e')]=path[_0x7eb1('0x4f')](config[_0x7eb1('0x50')],_0x7eb1('0x51'),_0x56e38d[_0x7eb1('0x48')][_0x7eb1('0x2b')]);}return db[_0x7eb1('0x2e')]['create'](_0x56e38d['body'],{'transaction':_0x5db035})[_0x7eb1('0x25')](function(_0x16da42){if(_0x56e38d[_0x7eb1('0x48')][_0x7eb1('0x4c')]==='files'){fs[_0x7eb1('0x52')](_0x16da42['directory'],parseInt(_0x7eb1('0x53'),0x8));}var _0x4a598e=_0x56e38d['user']['get']({'plain':!![]});if(!_0x4a598e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4a598e['role']===_0x7eb1('0x54')){var _0x367ade=_0x16da42[_0x7eb1('0x27')]({'plain':!![]});return db[_0x7eb1('0x55')][_0x7eb1('0x47')]({'where':{'name':_0x7eb1('0x28'),'userProfileId':_0x4a598e[_0x7eb1('0x56')]},'raw':!![]})['then'](function(_0x20184f){if(_0x20184f&&_0x20184f['autoAssociation']===0x0){return db[_0x7eb1('0x57')][_0x7eb1('0x49')]({'name':_0x367ade[_0x7eb1('0x2b')],'resourceId':_0x367ade['id'],'type':_0x20184f['name'],'sectionId':_0x20184f['id']},{})[_0x7eb1('0x25')](function(){return _0x16da42;});}else{return _0x16da42;}})['catch'](function(_0x38b9c2){logger[_0x7eb1('0x29')](_0x7eb1('0x58'),_0x38b9c2);});}return _0x16da42;});})['then'](respondWithResult(_0x272270,0xc9))[_0x7eb1('0x43')](handleError(_0x272270,null));};exports[_0x7eb1('0x26')]=function(_0x571ae1,_0x5dd6f8,_0x1d3b52){var _0x3609d7;return db[_0x7eb1('0x2e')]['find']({'where':{'id':_0x571ae1[_0x7eb1('0x59')]['id']}})['then'](function(_0x5267ed){if(_0x5267ed){return db[_0x7eb1('0x4a')][_0x7eb1('0x4b')](function(_0x19fa23){return _0x5267ed['destroy']({'transaction':_0x19fa23,'raw':!![]})[_0x7eb1('0x25')](function(_0x1a6722){if(_0x1a6722[_0x7eb1('0x4e')]){fs[_0x7eb1('0x5a')](_0x1a6722[_0x7eb1('0x4e')])['forEach'](function(_0x56c732){fs['unlinkSync'](path[_0x7eb1('0x4f')](_0x1a6722['directory'],_0x56c732));});fs[_0x7eb1('0x5b')](_0x1a6722[_0x7eb1('0x4e')]);}return _0x1a6722;});})['catch'](function(_0x4268ad){throw new db['Sequelize']['ValidationError'](_0x4268ad['message']);});}})[_0x7eb1('0x25')](handleEntityNotFound(_0x5dd6f8,null))[_0x7eb1('0x25')](removeEntity(_0x5dd6f8,null))[_0x7eb1('0x43')](handleError(_0x5dd6f8,null));};exports[_0x7eb1('0x5c')]=function(_0x5757e2,_0x406861,_0xaafebe){return db[_0x7eb1('0x4a')][_0x7eb1('0x4b')](function(_0x4e0afe){var _0x289a34;return db[_0x7eb1('0x2e')][_0x7eb1('0x47')]({'where':{'id':_0x5757e2[_0x7eb1('0x59')]['id']}})['then'](function(_0xcd67fd){if(_0xcd67fd){_0x289a34=_0xcd67fd;return _0xcd67fd['addSound'](_0x5757e2[_0x7eb1('0x48')]['id'],{'transaction':_0x4e0afe});}})[_0x7eb1('0x25')](function(_0x136faf){if(_0x136faf){return db[_0x7eb1('0x5d')][_0x7eb1('0x5e')]({'where':{'id':_0x5757e2[_0x7eb1('0x48')]['id']},'attributes':['id','name',_0x7eb1('0x5f'),_0x7eb1('0x60'),_0x7eb1('0x61')],'raw':!![]});}})[_0x7eb1('0x25')](function(_0x3d81f9){if(_0x3d81f9){var _0x3dcd13=path[_0x7eb1('0x4f')](config[_0x7eb1('0x50')],_0x7eb1('0x62'),util[_0x7eb1('0x63')](_0x7eb1('0x64'),path[_0x7eb1('0x65')](_0x3d81f9[_0x7eb1('0x5f')],path['extname'](_0x3d81f9[_0x7eb1('0x5f')])),_0x3d81f9[_0x7eb1('0x60')]));var _0x1a03c9=path[_0x7eb1('0x4f')](config[_0x7eb1('0x50')],_0x7eb1('0x51'),_0x289a34[_0x7eb1('0x2b')],util[_0x7eb1('0x63')](_0x7eb1('0x64'),_0x3d81f9[_0x7eb1('0x2b')],_0x3d81f9[_0x7eb1('0x60')]));fs[_0x7eb1('0x66')](_0x3dcd13,_0x1a03c9);return _0x3d81f9;}})[_0x7eb1('0x43')](function(_0x18c8c5){throw new db['Sequelize']['ValidationError'](_0x18c8c5[_0x7eb1('0x67')]);});})['then'](handleEntityNotFound(_0x406861,null))[_0x7eb1('0x25')](respondWithResult(_0x406861,0xc9))['catch'](handleError(_0x406861,null));};exports[_0x7eb1('0x68')]=function(_0x4c55a9,_0x577178,_0x491bd5){return db[_0x7eb1('0x4a')][_0x7eb1('0x4b')](function(_0x3f109d){var _0x36afbf;return db[_0x7eb1('0x2e')][_0x7eb1('0x5e')]({'where':{'id':_0x4c55a9['params']['id']}})[_0x7eb1('0x25')](handleEntityNotFound(_0x577178,null))[_0x7eb1('0x25')](function(_0x380982){if(_0x380982){_0x36afbf=_0x380982;return _0x380982[_0x7eb1('0x68')](_0x4c55a9[_0x7eb1('0x59')][_0x7eb1('0x69')]);}})[_0x7eb1('0x25')](function(_0x51dd72){if(_0x51dd72){return db[_0x7eb1('0x5d')]['findOne']({'where':{'id':_0x4c55a9[_0x7eb1('0x59')][_0x7eb1('0x69')]},'attributes':['id',_0x7eb1('0x2b'),_0x7eb1('0x5f'),_0x7eb1('0x60'),_0x7eb1('0x61')],'raw':!![]});}})[_0x7eb1('0x25')](function(_0x2cf925){if(_0x2cf925){fs[_0x7eb1('0x6a')](path['join'](_0x36afbf[_0x7eb1('0x4e')],util[_0x7eb1('0x63')](_0x7eb1('0x64'),_0x2cf925[_0x7eb1('0x2b')],_0x2cf925['converted_format'])));return _0x2cf925;}})[_0x7eb1('0x43')](function(_0x22d0f5){throw new db[(_0x7eb1('0x6b'))][(_0x7eb1('0x6c'))](_0x22d0f5[_0x7eb1('0x67')]);});})[_0x7eb1('0x25')](handleEntityNotFound(_0x577178,null))[_0x7eb1('0x25')](respondWithStatusCode(_0x577178,0xcc))[_0x7eb1('0x43')](handleError(_0x577178,null));};exports[_0x7eb1('0x6d')]=function(_0x4f7273,_0x3bd208,_0x2f6686){var _0x339e4f={};var _0x1335d6={};var _0x2b439d;var _0x14ff31;return db[_0x7eb1('0x2e')]['findOne']({'where':{'id':_0x4f7273[_0x7eb1('0x59')]['id']}})[_0x7eb1('0x25')](handleEntityNotFound(_0x3bd208,null))[_0x7eb1('0x25')](function(_0x250695){if(_0x250695){_0x2b439d=_0x250695;_0x1335d6['model']=_[_0x7eb1('0x33')](db[_0x7eb1('0x5d')][_0x7eb1('0x2f')]);_0x1335d6['query']=_[_0x7eb1('0x33')](_0x4f7273[_0x7eb1('0x34')]);_0x1335d6[_0x7eb1('0x35')]=_[_0x7eb1('0x36')](_0x1335d6[_0x7eb1('0x32')],_0x1335d6[_0x7eb1('0x34')]);_0x339e4f['attributes']=_['intersection'](_0x1335d6[_0x7eb1('0x32')],qs['fields'](_0x4f7273['query'][_0x7eb1('0x38')]));_0x339e4f[_0x7eb1('0x37')]=_0x339e4f[_0x7eb1('0x37')][_0x7eb1('0x45')]?_0x339e4f[_0x7eb1('0x37')]:_0x1335d6['model'];_0x339e4f['order']=qs['sort'](_0x4f7273['query']['sort']);_0x339e4f[_0x7eb1('0x3d')]=qs[_0x7eb1('0x35')](_[_0x7eb1('0x3e')](_0x4f7273['query'],_0x1335d6[_0x7eb1('0x35')]));if(_0x4f7273[_0x7eb1('0x34')][_0x7eb1('0x40')]){_0x339e4f[_0x7eb1('0x3d')]=_[_0x7eb1('0x3f')](_0x339e4f[_0x7eb1('0x3d')],{'$or':_['map'](_0x339e4f['attributes'],function(_0x490c55){var _0x4ae594={};_0x4ae594[_0x490c55]={'$like':'%'+_0x4f7273[_0x7eb1('0x34')][_0x7eb1('0x40')]+'%'};return _0x4ae594;})});}_0x339e4f=_['merge']({},_0x339e4f,_0x4f7273['options']);return _0x2b439d[_0x7eb1('0x6d')](_0x339e4f);}})[_0x7eb1('0x25')](function(_0x8a27d4){if(_0x8a27d4){_0x14ff31=_0x8a27d4[_0x7eb1('0x45')];if(!_0x4f7273['query'][_0x7eb1('0x39')](_0x7eb1('0x3a'))){_0x339e4f[_0x7eb1('0x20')]=qs[_0x7eb1('0x20')](_0x4f7273['query'][_0x7eb1('0x20')]);_0x339e4f[_0x7eb1('0x1e')]=qs[_0x7eb1('0x1e')](_0x4f7273[_0x7eb1('0x34')]['offset']);}return _0x2b439d[_0x7eb1('0x6d')](_0x339e4f);}})[_0x7eb1('0x25')](function(_0x345d16){if(_0x345d16){return _0x345d16?{'count':_0x14ff31,'rows':_0x345d16}:null;}})[_0x7eb1('0x25')](respondWithResult(_0x3bd208,null))[_0x7eb1('0x43')](handleError(_0x3bd208,null));};
\ No newline at end of file
index 20cfc39..b17e514 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53f2=['moment','bluebird','request-promise','path','../../config/environment','exports','define','VoiceMusicOnHold','voice_musiconhold','util','api'];(function(_0x8350a5,_0x5db397){var _0x288ee5=function(_0x43f366){while(--_0x43f366){_0x8350a5['push'](_0x8350a5['shift']());}};_0x288ee5(++_0x5db397);}(_0x53f2,0x148));var _0x253f=function(_0x10675b,_0x21f4d4){_0x10675b=_0x10675b-0x0;var _0x2771c8=_0x53f2[_0x10675b];return _0x2771c8;};'use strict';var _=require('lodash');var util=require(_0x253f('0x0'));var logger=require('../../config/logger')(_0x253f('0x1'));var moment=require(_0x253f('0x2'));var BPromise=require(_0x253f('0x3'));var rp=require(_0x253f('0x4'));var fs=require('fs');var path=require(_0x253f('0x5'));var rimraf=require('rimraf');var config=require(_0x253f('0x6'));var attributes=require('./voiceMusicOnHold.attributes');module[_0x253f('0x7')]=function(_0xb1c75f,_0x4197ef){return _0xb1c75f[_0x253f('0x8')](_0x253f('0x9'),attributes,{'tableName':_0x253f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6a99=['rimraf','exports','VoiceMusicOnHold','voice_musiconhold','lodash','util','api','moment','path'];(function(_0x5c0a22,_0x3e0eb3){var _0x292d8e=function(_0x28c9e6){while(--_0x28c9e6){_0x5c0a22['push'](_0x5c0a22['shift']());}};_0x292d8e(++_0x3e0eb3);}(_0x6a99,0x148));var _0x96a9=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x6a99[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x96a9('0x0'));var util=require(_0x96a9('0x1'));var logger=require('../../config/logger')(_0x96a9('0x2'));var moment=require(_0x96a9('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x96a9('0x4'));var rimraf=require(_0x96a9('0x5'));var config=require('../../config/environment');var attributes=require('./voiceMusicOnHold.attributes');module[_0x96a9('0x6')]=function(_0x5a2ef4,_0xa8aa2){return _0x5a2ef4['define'](_0x96a9('0x7'),attributes,{'tableName':_0x96a9('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d91d8b6..1d539cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x3424f4,_0x1ce2ec){var _0x3a9c61=function(_0x37dcfe){while(--_0x37dcfe){_0x3424f4['push'](_0x3424f4['shift']());}};_0x3a9c61(++_0x1ce2ec);}(_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 moment=require(_0x3071('0x0'));var BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
+var _0xedd9=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','VoiceMusicOnHold,\x20%s,\x20%s','message','catch','util'];(function(_0x921689,_0x263a98){var _0x184a96=function(_0x5cedc9){while(--_0x5cedc9){_0x921689['push'](_0x921689['shift']());}};_0x184a96(++_0x263a98);}(_0xedd9,0xfc));var _0x9edd=function(_0x3ba3c0,_0x129464){_0x3ba3c0=_0x3ba3c0-0x0;var _0x574ae9=_0xedd9[_0x3ba3c0];return _0x574ae9;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var moment=require(_0x9edd('0x1'));var BPromise=require(_0x9edd('0x2'));var rs=require(_0x9edd('0x3'));var fs=require('fs');var Redis=require(_0x9edd('0x4'));var db=require(_0x9edd('0x5'))['db'];var utils=require(_0x9edd('0x6'));var logger=require(_0x9edd('0x7'))('rpc');var config=require(_0x9edd('0x8'));var jayson=require(_0x9edd('0x9'));var client=jayson[_0x9edd('0xa')][_0x9edd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5319f7,_0xf0b2d8,_0x571af9){return new BPromise(function(_0x172522,_0x190185){return client[_0x9edd('0xc')](_0x5319f7,_0x571af9)[_0x9edd('0xd')](function(_0x49d5e3){logger[_0x9edd('0xe')]('VoiceMusicOnHold,\x20%s,\x20%s',_0xf0b2d8,_0x9edd('0xf'));logger[_0x9edd('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s,\x20%s',_0xf0b2d8,_0x9edd('0xf'),JSON[_0x9edd('0x11')](_0x49d5e3));if(_0x49d5e3['error']){if(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x13')]===0x1f4){logger[_0x9edd('0x12')](_0x9edd('0x14'),_0xf0b2d8,_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);return _0x190185(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);}logger['error'](_0x9edd('0x14'),_0xf0b2d8,_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);return _0x172522(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);}else{logger[_0x9edd('0xe')](_0x9edd('0x14'),_0xf0b2d8,_0x9edd('0xf'));_0x172522(_0x49d5e3['result'][_0x9edd('0x15')]);}})[_0x9edd('0x16')](function(_0x449cee){logger['error'](_0x9edd('0x14'),_0xf0b2d8,_0x449cee);_0x190185(_0x449cee);});});}
\ No newline at end of file
index 18d87f8..d5f418c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x649b=['fs-extra','../../components/interaction/service','../../config/environment','./voicePrefix.controller','isAuthenticated','index','get','describe','/:id','show','getAgents','/:id/teams','getTeams','post','/:id/users','addAgents','addTeams','update','delete','destroy','removeAgents','removeTeams','path','connect-timeout'];(function(_0x26693b,_0x1209d0){var _0x2d3c39=function(_0x266729){while(--_0x266729){_0x26693b['push'](_0x26693b['shift']());}};_0x2d3c39(++_0x1209d0);}(_0x649b,0x166));var _0xb649=function(_0x4b4efd,_0x1032f1){_0x4b4efd=_0x4b4efd-0x0;var _0x12f197=_0x649b[_0x4b4efd];return _0x12f197;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xb649('0x0'));var timeout=require(_0xb649('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xb649('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xb649('0x3'));var config=require(_0xb649('0x4'));var controller=require(_0xb649('0x5'));router['get']('/',auth[_0xb649('0x6')](),controller[_0xb649('0x7')]);router[_0xb649('0x8')]('/describe',auth['isAuthenticated'](),controller[_0xb649('0x9')]);router['get'](_0xb649('0xa'),auth[_0xb649('0x6')](),controller[_0xb649('0xb')]);router[_0xb649('0x8')]('/:id/users',auth[_0xb649('0x6')](),controller[_0xb649('0xc')]);router[_0xb649('0x8')](_0xb649('0xd'),auth['isAuthenticated'](),controller[_0xb649('0xe')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xb649('0xf')](_0xb649('0x10'),auth[_0xb649('0x6')](),controller[_0xb649('0x11')]);router['post'](_0xb649('0xd'),auth[_0xb649('0x6')](),controller[_0xb649('0x12')]);router['put'](_0xb649('0xa'),auth[_0xb649('0x6')](),controller[_0xb649('0x13')]);router[_0xb649('0x14')](_0xb649('0xa'),auth['isAuthenticated'](),controller[_0xb649('0x15')]);router[_0xb649('0x14')](_0xb649('0x10'),auth['isAuthenticated'](),controller[_0xb649('0x16')]);router[_0xb649('0x14')](_0xb649('0xd'),auth[_0xb649('0x6')](),controller[_0xb649('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0xb205=['isAuthenticated','index','/describe','describe','/:id','/:id/users','getAgents','/:id/teams','post','addAgents','addTeams','put','update','delete','destroy','removeAgents','removeTeams','exports','multer','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get'];(function(_0x21141c,_0x3f3a4f){var _0x3b4609=function(_0x2eb57e){while(--_0x2eb57e){_0x21141c['push'](_0x21141c['shift']());}};_0x3b4609(++_0x3f3a4f);}(_0xb205,0x156));var _0x5b20=function(_0x22834a,_0x322b82){_0x22834a=_0x22834a-0x0;var _0x3acb79=_0xb205[_0x22834a];return _0x3acb79;};'use strict';var multer=require(_0x5b20('0x0'));var util=require('util');var path=require(_0x5b20('0x1'));var timeout=require(_0x5b20('0x2'));var express=require('express');var router=express[_0x5b20('0x3')]();var fs_extra=require(_0x5b20('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5b20('0x5'));var config=require(_0x5b20('0x6'));var controller=require(_0x5b20('0x7'));router[_0x5b20('0x8')]('/',auth[_0x5b20('0x9')](),controller[_0x5b20('0xa')]);router[_0x5b20('0x8')](_0x5b20('0xb'),auth[_0x5b20('0x9')](),controller[_0x5b20('0xc')]);router[_0x5b20('0x8')](_0x5b20('0xd'),auth[_0x5b20('0x9')](),controller['show']);router[_0x5b20('0x8')](_0x5b20('0xe'),auth[_0x5b20('0x9')](),controller[_0x5b20('0xf')]);router[_0x5b20('0x8')](_0x5b20('0x10'),auth[_0x5b20('0x9')](),controller['getTeams']);router['post']('/',auth[_0x5b20('0x9')](),controller['create']);router[_0x5b20('0x11')](_0x5b20('0xe'),auth[_0x5b20('0x9')](),controller[_0x5b20('0x12')]);router['post'](_0x5b20('0x10'),auth[_0x5b20('0x9')](),controller[_0x5b20('0x13')]);router[_0x5b20('0x14')](_0x5b20('0xd'),auth['isAuthenticated'](),controller[_0x5b20('0x15')]);router[_0x5b20('0x16')](_0x5b20('0xd'),auth[_0x5b20('0x9')](),controller[_0x5b20('0x17')]);router[_0x5b20('0x16')](_0x5b20('0xe'),auth[_0x5b20('0x9')](),controller[_0x5b20('0x18')]);router['delete'](_0x5b20('0x10'),auth[_0x5b20('0x9')](),controller[_0x5b20('0x19')]);module[_0x5b20('0x1a')]=router;
\ No newline at end of file
index b211224..e8ee16a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec84=['system-','getDataValue','sequelize','exports','STRING','name','VIRTUAL'];(function(_0x52c37d,_0x501a4a){var _0x5b3a9e=function(_0x23a047){while(--_0x23a047){_0x52c37d['push'](_0x52c37d['shift']());}};_0x5b3a9e(++_0x501a4a);}(_0xec84,0x1ec));var _0x4ec8=function(_0x392d7c,_0x4d5cab){_0x392d7c=_0x392d7c-0x0;var _0x1b0dc7=_0xec84[_0x392d7c];return _0x1b0dc7;};'use strict';var Sequelize=require(_0x4ec8('0x0'));module[_0x4ec8('0x1')]={'name':{'type':Sequelize[_0x4ec8('0x2')],'allowNull':![],'unique':_0x4ec8('0x3')},'prefix':{'type':Sequelize[_0x4ec8('0x4')],'get':function(_0x9c61b4){return _0x4ec8('0x5')+this[_0x4ec8('0x6')](_0x4ec8('0x3'))+'-';}},'description':{'type':Sequelize[_0x4ec8('0x2')]},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xd3eb=['name','system-','getDataValue','INTEGER','sequelize','STRING'];(function(_0x1b2cf0,_0x3e1559){var _0x566935=function(_0x5d2b27){while(--_0x5d2b27){_0x1b2cf0['push'](_0x1b2cf0['shift']());}};_0x566935(++_0x3e1559);}(_0xd3eb,0x160));var _0xbd3e=function(_0x585133,_0x2412a1){_0x585133=_0x585133-0x0;var _0x18254a=_0xd3eb[_0x585133];return _0x18254a;};'use strict';var Sequelize=require(_0xbd3e('0x0'));module['exports']={'name':{'type':Sequelize[_0xbd3e('0x1')],'allowNull':![],'unique':_0xbd3e('0x2')},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x311258){return _0xbd3e('0x3')+this[_0xbd3e('0x4')]('name')+'-';}},'description':{'type':Sequelize[_0xbd3e('0x1')]},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize[_0xbd3e('0x5')]}};
\ No newline at end of file
index 4ce3fea..3cafa4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0972=['filters','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','params','keys','include','find','create','sequelize','transaction','body','VoiceExtension','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','VoicePrefixes','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','exten','system','Voice\x20Prefix\x20Extension','priority','appdata','NoOp','Voice\x20Prefix','VoicePrefixId','get','Extensions\x20creation\x20failed','prefix','push','callerIdAll','Set','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','length','charAt','system-','VoiceExtensionId','findById','addAgents','ids','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','getTeams','addTeams','Team','findAll','Agents','online','voicePause','interface','each','TeamVoicePrefix','upsert','UserVoicePrefix','findOrCreate','forEach','removeTeams','select','field','team_has_voice_prefixes','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','QueryTypes','every','TeamId','includes','all','union','value','isEmpty','rimraf','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','UserProfileResource','end','name','send','index','map','VoicePrefix','rawAttributes','fieldName','type','key','query'];(function(_0x29f443,_0x497381){var _0xae7643=function(_0x168e10){while(--_0x168e10){_0x29f443['push'](_0x29f443['shift']());}};_0xae7643(++_0x497381);}(_0x0972,0x64));var _0x2097=function(_0xe8f57e,_0x5ba143){_0xe8f57e=_0xe8f57e-0x0;var _0x4f5859=_0x0972[_0xe8f57e];return _0x4f5859;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2097('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2097('0x1'));var rp=require('request-promise');var moment=require(_0x2097('0x2'));var BPromise=require(_0x2097('0x3'));var Mustache=require('mustache');var util=require(_0x2097('0x4'));var path=require(_0x2097('0x5'));var sox=require(_0x2097('0x6'));var csv=require(_0x2097('0x7'));var ejs=require(_0x2097('0x8'));var fs=require('fs');var fs_extra=require(_0x2097('0x9'));var _=require(_0x2097('0xa'));var squel=require('squel');var crypto=require(_0x2097('0xb'));var jsforce=require(_0x2097('0xc'));var deskjs=require(_0x2097('0xd'));var toCsv=require(_0x2097('0x7'));var querystring=require(_0x2097('0xe'));var Papa=require('papaparse');var Redis=require(_0x2097('0xf'));var authService=require(_0x2097('0x10'));var qs=require(_0x2097('0x11'));var as=require(_0x2097('0x12'));var hardwareService=require(_0x2097('0x13'));var logger=require(_0x2097('0x14'))(_0x2097('0x15'));var utils=require(_0x2097('0x16'));var config=require(_0x2097('0x17'));var licenseUtil=require(_0x2097('0x18'));var db=require(_0x2097('0x19'))['db'];config[_0x2097('0x1a')]=_[_0x2097('0x1b')](config[_0x2097('0x1a')],{'host':_0x2097('0x1c'),'port':0x18eb});var socket=require(_0x2097('0x1d'))(new Redis(config[_0x2097('0x1a')]));require(_0x2097('0x1e'))[_0x2097('0x1f')](socket);function respondWithStatusCode(_0x354387,_0x5d0a43){_0x5d0a43=_0x5d0a43||0xcc;return function(_0x639c14){if(_0x639c14){return _0x354387[_0x2097('0x20')](_0x5d0a43);}return _0x354387['status'](_0x5d0a43)['end']();};}function respondWithResult(_0x4fc8c5,_0x409deb){_0x409deb=_0x409deb||0xc8;return function(_0x588396){if(_0x588396){return _0x4fc8c5[_0x2097('0x21')](_0x409deb)[_0x2097('0x22')](_0x588396);}};}function respondWithFilteredResult(_0x43fec9,_0x1347e4){return function(_0x44c584){if(_0x44c584){var _0x53e2b4=typeof _0x1347e4[_0x2097('0x23')]===_0x2097('0x24')&&typeof _0x1347e4[_0x2097('0x25')]===_0x2097('0x24');var _0x1d3804=_0x44c584[_0x2097('0x26')];var _0x253f5d=_0x53e2b4?0x0:_0x1347e4[_0x2097('0x23')];var _0x5d8b9e=_0x53e2b4?_0x44c584['count']:_0x1347e4[_0x2097('0x23')]+_0x1347e4['limit'];var _0x227c00;if(_0x5d8b9e>=_0x1d3804){_0x5d8b9e=_0x1d3804;_0x227c00=0xc8;}else{_0x227c00=0xce;}_0x43fec9[_0x2097('0x21')](_0x227c00);return _0x43fec9['set'](_0x2097('0x27'),_0x253f5d+'-'+_0x5d8b9e+'/'+_0x1d3804)['json'](_0x44c584);}return null;};}function patchUpdates(_0x2e17c8){return function(_0xf32d3f){try{jsonpatch[_0x2097('0x28')](_0xf32d3f,_0x2e17c8,!![]);}catch(_0x20b93a){return BPromise[_0x2097('0x29')](_0x20b93a);}return _0xf32d3f[_0x2097('0x2a')]();};}function saveUpdates(_0x56390a,_0xae5f9){return function(_0x500234){if(_0x500234){return _0x500234[_0x2097('0x2b')](_0x56390a)[_0x2097('0x2c')](function(_0x345875){return _0x345875;});}return null;};}function removeEntity(_0x9f59bc,_0x499988){return function(_0x2d683a){if(_0x2d683a){return _0x2d683a[_0x2097('0x2d')]()['then'](function(){var _0x1229fc=_0x2d683a['get']({'plain':!![]});var _0x29b879='VoicePrefixes';return db[_0x2097('0x2e')][_0x2097('0x2d')]({'where':{'type':_0x29b879,'resourceId':_0x1229fc['id']}})[_0x2097('0x2c')](function(){return _0x2d683a;});})[_0x2097('0x2c')](function(){_0x9f59bc[_0x2097('0x21')](0xcc)[_0x2097('0x2f')]();});}};}function handleEntityNotFound(_0x450e0b,_0x4b443d){return function(_0x11242f){if(!_0x11242f){_0x450e0b[_0x2097('0x20')](0x194);}return _0x11242f;};}function handleError(_0x5cce55,_0x1398d0){_0x1398d0=_0x1398d0||0x1f4;return function(_0x41487d){logger['error'](_0x41487d['stack']);if(_0x41487d[_0x2097('0x30')]){delete _0x41487d[_0x2097('0x30')];}_0x5cce55[_0x2097('0x21')](_0x1398d0)[_0x2097('0x31')](_0x41487d);};}exports[_0x2097('0x32')]=function(_0x180654,_0x56c538){var _0xe1a381={},_0x56bb42={},_0x193160={'count':0x0,'rows':[]};var _0x3c36d3=_[_0x2097('0x33')](db[_0x2097('0x34')][_0x2097('0x35')],function(_0x395d9f){return{'name':_0x395d9f[_0x2097('0x36')],'type':_0x395d9f[_0x2097('0x37')][_0x2097('0x38')]};});_0x56bb42['model']=_[_0x2097('0x33')](_0x3c36d3,_0x2097('0x30'));_0x56bb42[_0x2097('0x39')]=_['keys'](_0x180654[_0x2097('0x39')]);_0x56bb42[_0x2097('0x3a')]=_[_0x2097('0x3b')](_0x56bb42[_0x2097('0x3c')],_0x56bb42['query']);_0xe1a381['attributes']=_['intersection'](_0x56bb42[_0x2097('0x3c')],qs[_0x2097('0x3d')](_0x180654[_0x2097('0x39')][_0x2097('0x3d')]));_0xe1a381[_0x2097('0x3e')]=_0xe1a381[_0x2097('0x3e')]['length']?_0xe1a381[_0x2097('0x3e')]:_0x56bb42[_0x2097('0x3c')];if(!_0x180654[_0x2097('0x39')][_0x2097('0x3f')](_0x2097('0x40'))){_0xe1a381[_0x2097('0x25')]=qs['limit'](_0x180654[_0x2097('0x39')][_0x2097('0x25')]);_0xe1a381[_0x2097('0x23')]=qs['offset'](_0x180654['query'][_0x2097('0x23')]);}_0xe1a381[_0x2097('0x41')]=qs[_0x2097('0x42')](_0x180654[_0x2097('0x39')][_0x2097('0x42')]);_0xe1a381[_0x2097('0x43')]=qs[_0x2097('0x3a')](_[_0x2097('0x44')](_0x180654[_0x2097('0x39')],_0x56bb42[_0x2097('0x3a')]),_0x3c36d3);if(_0x180654[_0x2097('0x39')][_0x2097('0x45')]){_0xe1a381['where']=_[_0x2097('0x46')](_0xe1a381[_0x2097('0x43')],{'$or':_[_0x2097('0x33')](_0x3c36d3,function(_0x483900){if(_0x483900[_0x2097('0x37')]!==_0x2097('0x47')){var _0x26d448={};_0x26d448[_0x483900[_0x2097('0x30')]]={'$like':'%'+_0x180654[_0x2097('0x39')][_0x2097('0x45')]+'%'};return _0x26d448;}})});}_0xe1a381=_[_0x2097('0x46')]({},_0xe1a381,_0x180654[_0x2097('0x48')]);var _0x5ab893={'where':_0xe1a381[_0x2097('0x43')]};return db[_0x2097('0x34')][_0x2097('0x26')](_0x5ab893)[_0x2097('0x2c')](function(_0x12e0e2){_0x193160[_0x2097('0x26')]=_0x12e0e2;if(_0x180654[_0x2097('0x39')][_0x2097('0x49')]){_0xe1a381['include']=[{'all':!![]}];}return db[_0x2097('0x34')]['findAll'](_0xe1a381);})[_0x2097('0x2c')](function(_0x298e49){_0x193160[_0x2097('0x4a')]=_0x298e49;return _0x193160;})[_0x2097('0x2c')](respondWithFilteredResult(_0x56c538,_0xe1a381))[_0x2097('0x4b')](handleError(_0x56c538,null));};exports['show']=function(_0x2cf34e,_0x46ccbb){var _0x113c3b={'raw':![],'where':{'id':_0x2cf34e[_0x2097('0x4c')]['id']}},_0x39e0a4={};_0x39e0a4['model']=_[_0x2097('0x4d')](db[_0x2097('0x34')][_0x2097('0x35')]);_0x39e0a4[_0x2097('0x39')]=_[_0x2097('0x4d')](_0x2cf34e[_0x2097('0x39')]);_0x39e0a4[_0x2097('0x3a')]=_[_0x2097('0x3b')](_0x39e0a4['model'],_0x39e0a4[_0x2097('0x39')]);_0x113c3b[_0x2097('0x3e')]=_[_0x2097('0x3b')](_0x39e0a4[_0x2097('0x3c')],qs['fields'](_0x2cf34e['query']['fields']));_0x113c3b[_0x2097('0x3e')]=_0x113c3b[_0x2097('0x3e')]['length']?_0x113c3b[_0x2097('0x3e')]:_0x39e0a4[_0x2097('0x3c')];if(_0x2cf34e['query']['includeAll']){_0x113c3b[_0x2097('0x4e')]=[{'all':!![]}];}_0x113c3b=_[_0x2097('0x46')]({},_0x113c3b,_0x2cf34e[_0x2097('0x48')]);return db['VoicePrefix'][_0x2097('0x4f')](_0x113c3b)[_0x2097('0x2c')](handleEntityNotFound(_0x46ccbb,null))['then'](respondWithResult(_0x46ccbb,null))[_0x2097('0x4b')](handleError(_0x46ccbb,null));};exports[_0x2097('0x2d')]=function(_0xdfea21,_0xba6ef0){return db[_0x2097('0x34')]['find']({'where':{'id':_0xdfea21['params']['id']}})[_0x2097('0x2c')](handleEntityNotFound(_0xba6ef0,null))[_0x2097('0x2c')](removeEntity(_0xba6ef0,null))[_0x2097('0x4b')](handleError(_0xba6ef0,null));};exports['describe']=function(_0x5c1739,_0x144719){return db[_0x2097('0x34')]['describe']()[_0x2097('0x2c')](respondWithResult(_0x144719,null))[_0x2097('0x4b')](handleError(_0x144719,null));};exports[_0x2097('0x50')]=function(_0x33490e,_0x390a52){var _0x4a709a;return db[_0x2097('0x51')][_0x2097('0x52')](function(_0x190859){return db['VoicePrefix'][_0x2097('0x50')](_0x33490e[_0x2097('0x53')],{'transaction':_0x190859})['then'](function(_0x12ba76){_0x4a709a=_0x12ba76['get']({'plain':!![]});return db[_0x2097('0x54')]['find']({'where':{'id':_0x4a709a['VoiceExtensionId']},'raw':!![]})['then'](function(_0x40cbe1){return createVoicePrefixExtensions(_0x4a709a,_0x40cbe1,_0x190859);});});})['then'](function(){var _0x54bea1=_0x33490e[_0x2097('0x55')]['get']({'plain':!![]});if(!_0x54bea1)throw new Error(_0x2097('0x56'));if(_0x54bea1[_0x2097('0x57')]==='user'){var _0x3e799f=_0x4a709a;return db[_0x2097('0x58')][_0x2097('0x4f')]({'where':{'name':_0x2097('0x59'),'userProfileId':_0x54bea1[_0x2097('0x5a')]},'raw':!![]})['then'](function(_0x2117e3){if(_0x2117e3&&_0x2117e3['autoAssociation']===0x0){return db[_0x2097('0x2e')][_0x2097('0x50')]({'name':_0x3e799f[_0x2097('0x30')],'resourceId':_0x3e799f['id'],'type':_0x2117e3['name'],'sectionId':_0x2117e3['id']},{})[_0x2097('0x2c')](function(){return _0x4a709a;});}else{return _0x4a709a;}})[_0x2097('0x4b')](function(_0x2f5016){logger[_0x2097('0x5b')](_0x2097('0x5c'),_0x2f5016);throw _0x2f5016;});}return _0x4a709a;})['then'](respondWithResult(_0x390a52,null))['catch'](handleError(_0x390a52,null));};function Extension(_0x265eac,_0x275578,_0x4cc782,_0x4ddb4b){this['context']='from-sip';this[_0x2097('0x5d')]=_0x265eac;this['app']=_0x4cc782;this[_0x2097('0x37')]=_0x2097('0x5e');this['description']=_0x2097('0x5f');this[_0x2097('0x60')]=_0x275578;this[_0x2097('0x61')]=_0x4ddb4b;}function createVoicePrefixExtensions(_0x103756,_0x2a2673,_0x60332a){return new BPromise(function(_0x15aa91,_0x8f7aaa){var _0x2ec365=new Extension(formatPrefixName(_0x103756['prefix']),0x1,_0x2097('0x62'),_0x2097('0x63'));_0x2ec365[_0x2097('0x64')]=_0x103756['id'];return db[_0x2097('0x54')][_0x2097('0x50')](_0x2ec365,{'transaction':_0x60332a})[_0x2097('0x2c')](function(_0x4befa9){var _0x43071d=_0x4befa9[_0x2097('0x65')]({'plain':!![]});var _0xcabda7=_[_0x2097('0x33')](addVoicePrefixExtensions(_0x103756,_0x2a2673),function(_0x1c4156){_0x1c4156['VoiceExtensionId']=_0x43071d['id'];_0x1c4156[_0x2097('0x64')]=_0x103756['id'];return _0x1c4156;});return db[_0x2097('0x54')]['bulkCreate'](_0xcabda7,{'transaction':_0x60332a})['then'](function(_0x580c1e){if(!_0x580c1e){return _0x8f7aaa(_0x2097('0x66'));}else{return _0x15aa91(_0x580c1e);}})[_0x2097('0x4b')](function(_0x319d3b){return _0x8f7aaa(_0x319d3b);});});;});};function addVoicePrefixExtensions(_0x3edb3e,_0x168703){var _0x18d90a=[];var _0x2e287b=formatPrefixName(_0x3edb3e[_0x2097('0x67')]);_0x18d90a[_0x2097('0x68')](new Extension(_0x2e287b,0x2,'Set','CDR(prefix)='+_0x3edb3e[_0x2097('0x30')]));if(_0x3edb3e[_0x2097('0x69')]){_0x18d90a[_0x2097('0x68')](new Extension(_0x2e287b,0x3,_0x2097('0x6a'),_0x2097('0x6b')+_0x3edb3e[_0x2097('0x69')]));}else{_0x18d90a['push'](new Extension(_0x2e287b,0x3,_0x2097('0x62'),_0x2097('0x6c')));}_0x18d90a[_0x2097('0x68')](new Extension(_0x2e287b,0x4,_0x2097('0x6d'),_0x168703['context']+','+'${EXTEN:'+(0x8+_0x3edb3e[_0x2097('0x30')][_0x2097('0x6e')])+'}'+','+0x1));return _0x18d90a;}function formatPrefixName(_0x487f1f){var _0x3707da='_';for(var _0x426290=0x0;_0x426290<_0x487f1f[_0x2097('0x6e')];_0x426290++){if(_0x487f1f[_0x2097('0x6f')](_0x426290)=='-'){_0x3707da+=_0x487f1f[_0x2097('0x6f')](_0x426290);}else{_0x3707da+='['+_0x487f1f[_0x2097('0x6f')](_0x426290)+']';}}_0x3707da+='.';return _0x3707da;}exports[_0x2097('0x2b')]=function(_0x2c6f24,_0x54159e,_0x4533fd){var _0x283e2b=_0x2c6f24['body'];_0x283e2b[_0x2097('0x67')]=_0x2097('0x70')+_0x283e2b[_0x2097('0x30')]+'-';return db[_0x2097('0x51')][_0x2097('0x52')](function(_0x46d6b5){return db[_0x2097('0x34')][_0x2097('0x2b')](_0x283e2b,{'where':{'id':_0x283e2b['id']},'transaction':_0x46d6b5})[_0x2097('0x2c')](function(){return db[_0x2097('0x54')][_0x2097('0x2d')]({'where':{'VoicePrefixId':_0x283e2b['id']},'transaction':_0x46d6b5})['then'](function(){return db[_0x2097('0x54')][_0x2097('0x4f')]({'where':{'id':_0x283e2b[_0x2097('0x71')]},'raw':!![]})[_0x2097('0x2c')](function(_0x3c9e03){return createVoicePrefixExtensions(_0x283e2b,_0x3c9e03,_0x46d6b5);});});});})['then'](function(){return db[_0x2097('0x34')][_0x2097('0x72')](_0x283e2b['id']);})[_0x2097('0x2c')](respondWithResult(_0x54159e,null))['catch'](handleError(_0x54159e,null));};exports[_0x2097('0x73')]=function(_0x545cd9,_0x364d3a,_0x4dcd9c){return db[_0x2097('0x34')]['find']({'where':{'id':_0x545cd9[_0x2097('0x4c')]['id']}})['then'](handleEntityNotFound(_0x364d3a,null))[_0x2097('0x2c')](function(_0x3dba80){if(_0x3dba80){return _0x3dba80[_0x2097('0x73')](_0x545cd9[_0x2097('0x53')][_0x2097('0x74')],_['omit'](_0x545cd9[_0x2097('0x53')],[_0x2097('0x74'),'id'])||{})[_0x2097('0x75')](function(_0x1f733c){for(var _0xa8416a=0x0;_0xa8416a<_0x545cd9[_0x2097('0x53')][_0x2097('0x74')][_0x2097('0x6e')];_0xa8416a+=0x1){socket[_0x2097('0x76')](_0x2097('0x77'),{'UserId':Number(_0x545cd9[_0x2097('0x53')][_0x2097('0x74')][_0xa8416a]),'VoicePrefixId':Number(_0x545cd9[_0x2097('0x4c')]['id'])});}return _0x1f733c;});}})[_0x2097('0x2c')](respondWithResult(_0x364d3a,null))[_0x2097('0x4b')](handleError(_0x364d3a,null));};exports[_0x2097('0x78')]=function(_0x57a31e,_0x1a81de,_0x4bd44d){return db['VoicePrefix'][_0x2097('0x4f')]({'where':{'id':_0x57a31e[_0x2097('0x4c')]['id']}})[_0x2097('0x2c')](handleEntityNotFound(_0x1a81de,null))['then'](function(_0x34b687){if(_0x34b687){return _0x34b687[_0x2097('0x78')](_0x57a31e[_0x2097('0x39')][_0x2097('0x74')])['then'](function(){if(_[_0x2097('0x79')](_0x57a31e['query'][_0x2097('0x74')])){for(var _0x385551=0x0;_0x385551<_0x57a31e[_0x2097('0x39')][_0x2097('0x74')]['length'];_0x385551+=0x1){socket[_0x2097('0x76')](_0x2097('0x7a'),{'UserId':Number(_0x57a31e[_0x2097('0x39')]['ids'][_0x385551]),'VoicePrefixId':Number(_0x57a31e[_0x2097('0x4c')]['id'])});}}else{socket[_0x2097('0x76')](_0x2097('0x7a'),{'UserId':Number(_0x57a31e['query'][_0x2097('0x74')]),'VoicePrefixId':Number(_0x57a31e[_0x2097('0x4c')]['id'])});}});}})[_0x2097('0x2c')](respondWithStatusCode(_0x1a81de,null))[_0x2097('0x4b')](handleError(_0x1a81de,null));};exports[_0x2097('0x7b')]=function(_0x5efe1e,_0x5d181f,_0x56d4c0){var _0xc7481d={};var _0x3f510d={};var _0x4213d0;var _0x16451c;return db[_0x2097('0x34')][_0x2097('0x7c')]({'where':{'id':_0x5efe1e['params']['id']}})[_0x2097('0x2c')](handleEntityNotFound(_0x5d181f,null))[_0x2097('0x2c')](function(_0x164ad3){if(_0x164ad3){_0x4213d0=_0x164ad3;_0x3f510d[_0x2097('0x3c')]=_[_0x2097('0x4d')](db[_0x2097('0x7d')][_0x2097('0x35')]);_0x3f510d['query']=_[_0x2097('0x4d')](_0x5efe1e[_0x2097('0x39')]);_0x3f510d[_0x2097('0x3a')]=_[_0x2097('0x3b')](_0x3f510d[_0x2097('0x3c')],_0x3f510d[_0x2097('0x39')]);_0xc7481d['attributes']=_['intersection'](_0x3f510d[_0x2097('0x3c')],qs['fields'](_0x5efe1e['query'][_0x2097('0x3d')]));_0xc7481d[_0x2097('0x3e')]=_0xc7481d[_0x2097('0x3e')][_0x2097('0x6e')]?_0xc7481d[_0x2097('0x3e')]:_0x3f510d[_0x2097('0x3c')];_0xc7481d[_0x2097('0x41')]=qs[_0x2097('0x42')](_0x5efe1e['query'][_0x2097('0x42')]);_0xc7481d[_0x2097('0x43')]=qs[_0x2097('0x3a')](_[_0x2097('0x44')](_0x5efe1e[_0x2097('0x39')],_0x3f510d['filters']));if(_0x5efe1e[_0x2097('0x39')][_0x2097('0x45')]){_0xc7481d[_0x2097('0x43')]=_[_0x2097('0x46')](_0xc7481d[_0x2097('0x43')],{'$or':_[_0x2097('0x33')](_0xc7481d['attributes'],function(_0x33b0c0){var _0x79f858={};_0x79f858[_0x33b0c0]={'$like':'%'+_0x5efe1e['query']['filter']+'%'};return _0x79f858;})});}_0xc7481d=_['merge']({},_0xc7481d,_0x5efe1e['options']);return _0x4213d0[_0x2097('0x7b')](_0xc7481d);}})[_0x2097('0x2c')](function(_0x3fe29e){if(_0x3fe29e){_0x16451c=_0x3fe29e[_0x2097('0x6e')];if(!_0x5efe1e[_0x2097('0x39')]['hasOwnProperty'](_0x2097('0x40'))){_0xc7481d[_0x2097('0x25')]=qs[_0x2097('0x25')](_0x5efe1e[_0x2097('0x39')][_0x2097('0x25')]);_0xc7481d[_0x2097('0x23')]=qs['offset'](_0x5efe1e[_0x2097('0x39')][_0x2097('0x23')]);}return _0x4213d0['getAgents'](_0xc7481d);}})[_0x2097('0x2c')](function(_0x358bc3){if(_0x358bc3){return _0x358bc3?{'count':_0x16451c,'rows':_0x358bc3}:null;}})[_0x2097('0x2c')](respondWithResult(_0x5d181f,null))[_0x2097('0x4b')](handleError(_0x5d181f,null));};exports[_0x2097('0x7e')]=function(_0x498a91,_0x3a7959,_0x35570d){var _0x86f89={};var _0x26a3e5={};var _0x25bb03;var _0x429c9e;return db[_0x2097('0x34')][_0x2097('0x7c')]({'where':{'id':_0x498a91[_0x2097('0x4c')]['id']}})[_0x2097('0x2c')](handleEntityNotFound(_0x3a7959,null))[_0x2097('0x2c')](function(_0x299a3e){if(_0x299a3e){_0x25bb03=_0x299a3e;_0x26a3e5[_0x2097('0x3c')]=_['keys'](db['Team'][_0x2097('0x35')]);_0x26a3e5['query']=_['keys'](_0x498a91[_0x2097('0x39')]);_0x26a3e5[_0x2097('0x3a')]=_[_0x2097('0x3b')](_0x26a3e5[_0x2097('0x3c')],_0x26a3e5[_0x2097('0x39')]);_0x86f89['attributes']=_['intersection'](_0x26a3e5[_0x2097('0x3c')],qs['fields'](_0x498a91[_0x2097('0x39')]['fields']));_0x86f89['attributes']=_0x86f89['attributes']['length']?_0x86f89['attributes']:_0x26a3e5[_0x2097('0x3c')];_0x86f89[_0x2097('0x41')]=qs[_0x2097('0x42')](_0x498a91[_0x2097('0x39')][_0x2097('0x42')]);_0x86f89[_0x2097('0x43')]=qs[_0x2097('0x3a')](_[_0x2097('0x44')](_0x498a91[_0x2097('0x39')],_0x26a3e5[_0x2097('0x3a')]));if(_0x498a91[_0x2097('0x39')][_0x2097('0x45')]){_0x86f89[_0x2097('0x43')]=_[_0x2097('0x46')](_0x86f89[_0x2097('0x43')],{'$or':_[_0x2097('0x33')](_0x86f89[_0x2097('0x3e')],function(_0x5e49bc){var _0x1e30c5={};_0x1e30c5[_0x5e49bc]={'$like':'%'+_0x498a91[_0x2097('0x39')][_0x2097('0x45')]+'%'};return _0x1e30c5;})});}_0x86f89=_[_0x2097('0x46')]({},_0x86f89,_0x498a91[_0x2097('0x48')]);return _0x25bb03[_0x2097('0x7e')](_0x86f89);}})[_0x2097('0x2c')](function(_0x1c5ec7){if(_0x1c5ec7){_0x429c9e=_0x1c5ec7[_0x2097('0x6e')];if(!_0x498a91[_0x2097('0x39')][_0x2097('0x3f')]('nolimit')){_0x86f89[_0x2097('0x25')]=qs[_0x2097('0x25')](_0x498a91[_0x2097('0x39')][_0x2097('0x25')]);_0x86f89[_0x2097('0x23')]=qs[_0x2097('0x23')](_0x498a91['query']['offset']);}return _0x25bb03[_0x2097('0x7e')](_0x86f89);}})[_0x2097('0x2c')](function(_0x2beb7a){if(_0x2beb7a){return _0x2beb7a?{'count':_0x429c9e,'rows':_0x2beb7a}:null;}})['then'](respondWithResult(_0x3a7959,null))[_0x2097('0x4b')](handleError(_0x3a7959,null));};exports[_0x2097('0x7f')]=function(_0x4eeac1,_0x459585,_0x436533){var _0x16405f=_0x4eeac1[_0x2097('0x53')][_0x2097('0x74')];var _0x41f718;return db[_0x2097('0x80')][_0x2097('0x81')]({'where':{'id':_0x16405f},'attributes':['id'],'include':[{'model':db[_0x2097('0x7d')],'as':_0x2097('0x82'),'attributes':['id',_0x2097('0x30'),_0x2097('0x83'),_0x2097('0x84'),_0x2097('0x85')],'raw':!![]}]})[_0x2097('0x2c')](function(_0x44661a){if(_0x44661a){_0x41f718=_0x44661a;var _0x39e21f=_['flatMap'](_0x44661a,function(_0x2d211b){var _0x1ab39a=_0x2d211b[_0x2097('0x65')]({'plain':!![]});return _0x1ab39a[_0x2097('0x82')];});return db[_0x2097('0x34')][_0x2097('0x4f')]({'where':{'id':_0x4eeac1[_0x2097('0x4c')]['id']}})[_0x2097('0x2c')](function(_0xecd4fc){return db[_0x2097('0x51')]['transaction'](function(_0x2fb539){return _0xecd4fc[_0x2097('0x7f')](_0x16405f,{'transaction':_0x2fb539})[_0x2097('0x2c')](function(){return BPromise[_0x2097('0x86')](_0x41f718,function(_0x17c494){return db[_0x2097('0x87')][_0x2097('0x88')]({'TeamId':_0x17c494['id'],'VoicePrefixId':_0x4eeac1[_0x2097('0x4c')]['id']},{'transaction':_0x2fb539});});})['then'](function(){return BPromise[_0x2097('0x86')](_0x39e21f,function(_0x239570){return db[_0x2097('0x89')][_0x2097('0x8a')]({'where':{'UserId':_0x239570['id'],'VoicePrefixId':_0x4eeac1[_0x2097('0x4c')]['id']},'transaction':_0x2fb539});});})[_0x2097('0x2c')](function(){_0x39e21f[_0x2097('0x8b')](function(_0x51bb2f){socket[_0x2097('0x76')](_0x2097('0x77'),{'UserId':_0x51bb2f['id'],'VoicePrefixId':_0xecd4fc['id']});});});});});}})['then'](respondWithStatusCode(_0x459585,null))[_0x2097('0x4b')](handleError(_0x459585,null));};exports[_0x2097('0x8c')]=function(_0x568de5,_0x473a54,_0x53a5ed){return db[_0x2097('0x80')][_0x2097('0x81')]({'where':{'id':_0x568de5['query']['ids']},'attributes':['id'],'include':[{'model':db[_0x2097('0x7d')],'as':_0x2097('0x82'),'attributes':['id'],'raw':!![]}]})[_0x2097('0x2c')](handleEntityNotFound(_0x473a54,null))[_0x2097('0x2c')](function(_0x1909d8){var _0x2de4=_[_0x2097('0x33')](_0x1909d8,'id');var _0x43a1f8=[];var _0xb53629=[];var _0x516ed6=squel[_0x2097('0x8d')]();_0x516ed6[_0x2097('0x8e')]('tq.TeamId')['from'](_0x2097('0x8f'),'tq')[_0x2097('0x90')](_0x2097('0x91'),'ut',_0x2097('0x92'))[_0x2097('0x43')](_0x2097('0x93'),_0x568de5[_0x2097('0x4c')]['id']);for(var _0x5626f0=0x0;_0x5626f0<_0x1909d8[_0x2097('0x6e')];_0x5626f0+=0x1){let _0x45bbca=_0x1909d8[_0x5626f0];for(var _0x46fc92=0x0;_0x46fc92<_0x45bbca[_0x2097('0x82')][_0x2097('0x6e')];_0x46fc92+=0x1){let _0x357a5b=_0x45bbca[_0x2097('0x82')][_0x46fc92];var _0x3fcedc=_0x516ed6[_0x2097('0x94')]();_0x3fcedc[_0x2097('0x43')](_0x2097('0x95'),_0x357a5b['id']);_0xb53629['push'](db[_0x2097('0x51')][_0x2097('0x39')](_0x3fcedc['toString'](),{'type':db[_0x2097('0x51')][_0x2097('0x96')]['SELECT']})[_0x2097('0x2c')](function(_0xbe052f){if(_0xbe052f['length']===0x1){return _0x357a5b['id'];}else{var _0x32c5f1=_[_0x2097('0x97')](_[_0x2097('0x33')](_0xbe052f,_0x2097('0x98')),function(_0x456633){return _[_0x2097('0x99')](_0x2de4,_0x456633);});if(_0x32c5f1){return _0x357a5b['id'];}}}));}}return BPromise[_0x2097('0x9a')](_0xb53629)[_0x2097('0x2c')](function(_0x124d8f){_0x43a1f8=_(_0x43a1f8)[_0x2097('0x9b')](_0x124d8f)['compact']()[_0x2097('0x9c')]();return db[_0x2097('0x34')][_0x2097('0x4f')]({'where':{'id':_0x568de5[_0x2097('0x4c')]['id']}})['then'](function(_0x1b555e){return db['sequelize'][_0x2097('0x52')](function(_0x1ab515){return _0x1b555e[_0x2097('0x8c')](_0x568de5[_0x2097('0x39')][_0x2097('0x74')],{'transaction':_0x1ab515})[_0x2097('0x2c')](function(){if(!_[_0x2097('0x9d')](_0x43a1f8)){return _0x1b555e[_0x2097('0x78')](_0x43a1f8,{'transaction':_0x1ab515});}})[_0x2097('0x2c')](function(){_0x43a1f8['forEach'](function(_0x22fa5d){socket['emit']('userVoicePrefix:remove',{'UserId':_0x22fa5d,'VoicePrefixId':_0x1b555e['id']});});});});});});})['then'](respondWithStatusCode(_0x473a54,null))['catch'](handleError(_0x473a54,null));};
\ No newline at end of file
+var _0x5c3c=['moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','./voicePrefix.socket','register','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','save','update','then','destroy','UserProfileResource','error','name','send','index','map','VoicePrefix','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','includeAll','rows','catch','show','params','include','options','find','create','sequelize','transaction','get','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','VoicePrefixes','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','app','system','Voice\x20Prefix\x20Extension','priority','appdata','prefix','NoOp','Voice\x20Prefix','VoicePrefixId','VoiceExtension','bulkCreate','Extensions\x20creation\x20failed','Set','CDR(prefix)=','callerIdAll','push','PREFIX-CALLERIDALL=','No\x20callerid\x20available','goto','${EXTEN:','charAt','body','system-','VoiceExtensionId','findById','addAgents','ids','omit','removeAgents','isArray','userVoicePrefix:remove','emit','getAgents','findOne','User','pick','getTeams','addTeams','Team','findAll','voicePause','interface','flatMap','each','TeamVoicePrefix','upsert','UserVoicePrefix','findOrCreate','forEach','userVoicePrefix:save','removeTeams','select','tq.TeamId','team_has_voice_prefixes','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','Agents','clone','ut.UserId\x20=\x20?','toString','QueryTypes','TeamId','union','compact','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x41598b,_0x897d53){var _0x2cb5e5=function(_0x18087f){while(--_0x18087f){_0x41598b['push'](_0x41598b['shift']());}};_0x2cb5e5(++_0x897d53);}(_0x5c3c,0x132));var _0xc5c3=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0x5c3c[_0x50007c];return _0x5c1ec7;};'use strict';var emlformat=require(_0xc5c3('0x0'));var rimraf=require(_0xc5c3('0x1'));var zipdir=require(_0xc5c3('0x2'));var jsonpatch=require(_0xc5c3('0x3'));var rp=require('request-promise');var moment=require(_0xc5c3('0x4'));var BPromise=require(_0xc5c3('0x5'));var Mustache=require(_0xc5c3('0x6'));var util=require(_0xc5c3('0x7'));var path=require(_0xc5c3('0x8'));var sox=require(_0xc5c3('0x9'));var csv=require(_0xc5c3('0xa'));var ejs=require(_0xc5c3('0xb'));var fs=require('fs');var fs_extra=require(_0xc5c3('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xc5c3('0xd'));var deskjs=require(_0xc5c3('0xe'));var toCsv=require('to-csv');var querystring=require(_0xc5c3('0xf'));var Papa=require(_0xc5c3('0x10'));var Redis=require('ioredis');var authService=require(_0xc5c3('0x11'));var qs=require(_0xc5c3('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc5c3('0x13'));var logger=require(_0xc5c3('0x14'))(_0xc5c3('0x15'));var utils=require('../../config/utils');var config=require(_0xc5c3('0x16'));var licenseUtil=require(_0xc5c3('0x17'));var db=require('../../mysqldb')['db'];config[_0xc5c3('0x18')]=_[_0xc5c3('0x19')](config[_0xc5c3('0x18')],{'host':'localhost','port':0x18eb});var socket=require(_0xc5c3('0x1a'))(new Redis(config[_0xc5c3('0x18')]));require(_0xc5c3('0x1b'))[_0xc5c3('0x1c')](socket);function respondWithStatusCode(_0xc8a636,_0x5f34bb){_0x5f34bb=_0x5f34bb||0xcc;return function(_0x5c0341){if(_0x5c0341){return _0xc8a636[_0xc5c3('0x1d')](_0x5f34bb);}return _0xc8a636[_0xc5c3('0x1e')](_0x5f34bb)[_0xc5c3('0x1f')]();};}function respondWithResult(_0xef8b21,_0x5ecd4b){_0x5ecd4b=_0x5ecd4b||0xc8;return function(_0x4ff2de){if(_0x4ff2de){return _0xef8b21[_0xc5c3('0x1e')](_0x5ecd4b)['json'](_0x4ff2de);}};}function respondWithFilteredResult(_0xa9bc84,_0x17ec62){return function(_0x2ff158){if(_0x2ff158){var _0x13c867=typeof _0x17ec62[_0xc5c3('0x20')]==='undefined'&&typeof _0x17ec62[_0xc5c3('0x21')]===_0xc5c3('0x22');var _0x123dba=_0x2ff158[_0xc5c3('0x23')];var _0x4e570f=_0x13c867?0x0:_0x17ec62[_0xc5c3('0x20')];var _0x41578a=_0x13c867?_0x2ff158[_0xc5c3('0x23')]:_0x17ec62[_0xc5c3('0x20')]+_0x17ec62[_0xc5c3('0x21')];var _0x564815;if(_0x41578a>=_0x123dba){_0x41578a=_0x123dba;_0x564815=0xc8;}else{_0x564815=0xce;}_0xa9bc84[_0xc5c3('0x1e')](_0x564815);return _0xa9bc84[_0xc5c3('0x24')](_0xc5c3('0x25'),_0x4e570f+'-'+_0x41578a+'/'+_0x123dba)[_0xc5c3('0x26')](_0x2ff158);}return null;};}function patchUpdates(_0x1c5793){return function(_0x67445){try{jsonpatch[_0xc5c3('0x27')](_0x67445,_0x1c5793,!![]);}catch(_0x5996a0){return BPromise['reject'](_0x5996a0);}return _0x67445[_0xc5c3('0x28')]();};}function saveUpdates(_0x38dd9e,_0x53ab72){return function(_0x5c7329){if(_0x5c7329){return _0x5c7329[_0xc5c3('0x29')](_0x38dd9e)[_0xc5c3('0x2a')](function(_0x38a3df){return _0x38a3df;});}return null;};}function removeEntity(_0x52e54a,_0x4af067){return function(_0x2df06b){if(_0x2df06b){return _0x2df06b[_0xc5c3('0x2b')]()[_0xc5c3('0x2a')](function(){var _0x29791c=_0x2df06b['get']({'plain':!![]});var _0x21efd6='VoicePrefixes';return db[_0xc5c3('0x2c')]['destroy']({'where':{'type':_0x21efd6,'resourceId':_0x29791c['id']}})[_0xc5c3('0x2a')](function(){return _0x2df06b;});})[_0xc5c3('0x2a')](function(){_0x52e54a[_0xc5c3('0x1e')](0xcc)[_0xc5c3('0x1f')]();});}};}function handleEntityNotFound(_0x15361c,_0x2d07e1){return function(_0x35a397){if(!_0x35a397){_0x15361c['sendStatus'](0x194);}return _0x35a397;};}function handleError(_0xbcafd6,_0x4a3300){_0x4a3300=_0x4a3300||0x1f4;return function(_0xc4b134){logger[_0xc5c3('0x2d')](_0xc4b134['stack']);if(_0xc4b134['name']){delete _0xc4b134[_0xc5c3('0x2e')];}_0xbcafd6[_0xc5c3('0x1e')](_0x4a3300)[_0xc5c3('0x2f')](_0xc4b134);};}exports[_0xc5c3('0x30')]=function(_0x52adcf,_0x3f9591){var _0x24aa70={},_0x3ebcbc={},_0x303eab={'count':0x0,'rows':[]};var _0x1b4538=_[_0xc5c3('0x31')](db[_0xc5c3('0x32')][_0xc5c3('0x33')],function(_0x1d1e6d){return{'name':_0x1d1e6d['fieldName'],'type':_0x1d1e6d[_0xc5c3('0x34')][_0xc5c3('0x35')]};});_0x3ebcbc[_0xc5c3('0x36')]=_[_0xc5c3('0x31')](_0x1b4538,_0xc5c3('0x2e'));_0x3ebcbc[_0xc5c3('0x37')]=_[_0xc5c3('0x38')](_0x52adcf['query']);_0x3ebcbc['filters']=_[_0xc5c3('0x39')](_0x3ebcbc['model'],_0x3ebcbc[_0xc5c3('0x37')]);_0x24aa70[_0xc5c3('0x3a')]=_[_0xc5c3('0x39')](_0x3ebcbc[_0xc5c3('0x36')],qs[_0xc5c3('0x3b')](_0x52adcf['query'][_0xc5c3('0x3b')]));_0x24aa70[_0xc5c3('0x3a')]=_0x24aa70['attributes'][_0xc5c3('0x3c')]?_0x24aa70[_0xc5c3('0x3a')]:_0x3ebcbc[_0xc5c3('0x36')];if(!_0x52adcf[_0xc5c3('0x37')][_0xc5c3('0x3d')](_0xc5c3('0x3e'))){_0x24aa70[_0xc5c3('0x21')]=qs[_0xc5c3('0x21')](_0x52adcf[_0xc5c3('0x37')][_0xc5c3('0x21')]);_0x24aa70['offset']=qs[_0xc5c3('0x20')](_0x52adcf['query']['offset']);}_0x24aa70[_0xc5c3('0x3f')]=qs[_0xc5c3('0x40')](_0x52adcf[_0xc5c3('0x37')][_0xc5c3('0x40')]);_0x24aa70[_0xc5c3('0x41')]=qs['filters'](_['pick'](_0x52adcf[_0xc5c3('0x37')],_0x3ebcbc[_0xc5c3('0x42')]),_0x1b4538);if(_0x52adcf['query'][_0xc5c3('0x43')]){_0x24aa70['where']=_[_0xc5c3('0x44')](_0x24aa70[_0xc5c3('0x41')],{'$or':_[_0xc5c3('0x31')](_0x1b4538,function(_0x59c9cb){if(_0x59c9cb[_0xc5c3('0x34')]!==_0xc5c3('0x45')){var _0x525ef8={};_0x525ef8[_0x59c9cb[_0xc5c3('0x2e')]]={'$like':'%'+_0x52adcf['query'][_0xc5c3('0x43')]+'%'};return _0x525ef8;}})});}_0x24aa70=_[_0xc5c3('0x44')]({},_0x24aa70,_0x52adcf['options']);var _0x4d2056={'where':_0x24aa70['where']};return db[_0xc5c3('0x32')][_0xc5c3('0x23')](_0x4d2056)['then'](function(_0x1a8490){_0x303eab[_0xc5c3('0x23')]=_0x1a8490;if(_0x52adcf[_0xc5c3('0x37')][_0xc5c3('0x46')]){_0x24aa70['include']=[{'all':!![]}];}return db[_0xc5c3('0x32')]['findAll'](_0x24aa70);})['then'](function(_0x1363fa){_0x303eab[_0xc5c3('0x47')]=_0x1363fa;return _0x303eab;})['then'](respondWithFilteredResult(_0x3f9591,_0x24aa70))[_0xc5c3('0x48')](handleError(_0x3f9591,null));};exports[_0xc5c3('0x49')]=function(_0x590e65,_0x333c38){var _0x4ffc5a={'raw':![],'where':{'id':_0x590e65[_0xc5c3('0x4a')]['id']}},_0x122a6d={};_0x122a6d['model']=_[_0xc5c3('0x38')](db['VoicePrefix'][_0xc5c3('0x33')]);_0x122a6d[_0xc5c3('0x37')]=_['keys'](_0x590e65[_0xc5c3('0x37')]);_0x122a6d[_0xc5c3('0x42')]=_[_0xc5c3('0x39')](_0x122a6d[_0xc5c3('0x36')],_0x122a6d[_0xc5c3('0x37')]);_0x4ffc5a[_0xc5c3('0x3a')]=_['intersection'](_0x122a6d[_0xc5c3('0x36')],qs[_0xc5c3('0x3b')](_0x590e65[_0xc5c3('0x37')][_0xc5c3('0x3b')]));_0x4ffc5a[_0xc5c3('0x3a')]=_0x4ffc5a['attributes']['length']?_0x4ffc5a[_0xc5c3('0x3a')]:_0x122a6d[_0xc5c3('0x36')];if(_0x590e65[_0xc5c3('0x37')]['includeAll']){_0x4ffc5a[_0xc5c3('0x4b')]=[{'all':!![]}];}_0x4ffc5a=_[_0xc5c3('0x44')]({},_0x4ffc5a,_0x590e65[_0xc5c3('0x4c')]);return db[_0xc5c3('0x32')][_0xc5c3('0x4d')](_0x4ffc5a)[_0xc5c3('0x2a')](handleEntityNotFound(_0x333c38,null))[_0xc5c3('0x2a')](respondWithResult(_0x333c38,null))['catch'](handleError(_0x333c38,null));};exports[_0xc5c3('0x2b')]=function(_0x3ff21e,_0x4538ab){return db['VoicePrefix'][_0xc5c3('0x4d')]({'where':{'id':_0x3ff21e[_0xc5c3('0x4a')]['id']}})[_0xc5c3('0x2a')](handleEntityNotFound(_0x4538ab,null))[_0xc5c3('0x2a')](removeEntity(_0x4538ab,null))[_0xc5c3('0x48')](handleError(_0x4538ab,null));};exports['describe']=function(_0xd716e6,_0x58204c){return db[_0xc5c3('0x32')]['describe']()[_0xc5c3('0x2a')](respondWithResult(_0x58204c,null))[_0xc5c3('0x48')](handleError(_0x58204c,null));};exports[_0xc5c3('0x4e')]=function(_0x325643,_0x1311de){var _0x4be969;return db[_0xc5c3('0x4f')][_0xc5c3('0x50')](function(_0x348960){return db[_0xc5c3('0x32')][_0xc5c3('0x4e')](_0x325643['body'],{'transaction':_0x348960})[_0xc5c3('0x2a')](function(_0x34bf9c){_0x4be969=_0x34bf9c[_0xc5c3('0x51')]({'plain':!![]});return db['VoiceExtension'][_0xc5c3('0x4d')]({'where':{'id':_0x4be969['VoiceExtensionId']},'raw':!![]})['then'](function(_0x39f83a){return createVoicePrefixExtensions(_0x4be969,_0x39f83a,_0x348960);});});})[_0xc5c3('0x2a')](function(){var _0x110105=_0x325643[_0xc5c3('0x52')][_0xc5c3('0x51')]({'plain':!![]});if(!_0x110105)throw new Error(_0xc5c3('0x53'));if(_0x110105['role']===_0xc5c3('0x52')){var _0x1ad3aa=_0x4be969;return db[_0xc5c3('0x54')][_0xc5c3('0x4d')]({'where':{'name':_0xc5c3('0x55'),'userProfileId':_0x110105[_0xc5c3('0x56')]},'raw':!![]})[_0xc5c3('0x2a')](function(_0x524aff){if(_0x524aff&&_0x524aff['autoAssociation']===0x0){return db[_0xc5c3('0x2c')][_0xc5c3('0x4e')]({'name':_0x1ad3aa['name'],'resourceId':_0x1ad3aa['id'],'type':_0x524aff[_0xc5c3('0x2e')],'sectionId':_0x524aff['id']},{})[_0xc5c3('0x2a')](function(){return _0x4be969;});}else{return _0x4be969;}})[_0xc5c3('0x48')](function(_0x41bcf7){logger['error'](_0xc5c3('0x57'),_0x41bcf7);throw _0x41bcf7;});}return _0x4be969;})[_0xc5c3('0x2a')](respondWithResult(_0x1311de,null))[_0xc5c3('0x48')](handleError(_0x1311de,null));};function Extension(_0x314392,_0x1b66bf,_0x36420a,_0x90e30b){this[_0xc5c3('0x58')]=_0xc5c3('0x59');this['exten']=_0x314392;this[_0xc5c3('0x5a')]=_0x36420a;this[_0xc5c3('0x34')]=_0xc5c3('0x5b');this['description']=_0xc5c3('0x5c');this[_0xc5c3('0x5d')]=_0x1b66bf;this[_0xc5c3('0x5e')]=_0x90e30b;}function createVoicePrefixExtensions(_0x30226f,_0x32d5e2,_0x5067ed){return new BPromise(function(_0xf54924,_0xea569b){var _0xf40f27=new Extension(formatPrefixName(_0x30226f[_0xc5c3('0x5f')]),0x1,_0xc5c3('0x60'),_0xc5c3('0x61'));_0xf40f27[_0xc5c3('0x62')]=_0x30226f['id'];return db['VoiceExtension'][_0xc5c3('0x4e')](_0xf40f27,{'transaction':_0x5067ed})[_0xc5c3('0x2a')](function(_0x397fc8){var _0x13f6a1=_0x397fc8[_0xc5c3('0x51')]({'plain':!![]});var _0x3cd213=_[_0xc5c3('0x31')](addVoicePrefixExtensions(_0x30226f,_0x32d5e2),function(_0x5b9013){_0x5b9013['VoiceExtensionId']=_0x13f6a1['id'];_0x5b9013[_0xc5c3('0x62')]=_0x30226f['id'];return _0x5b9013;});return db[_0xc5c3('0x63')][_0xc5c3('0x64')](_0x3cd213,{'transaction':_0x5067ed})[_0xc5c3('0x2a')](function(_0x1ed757){if(!_0x1ed757){return _0xea569b(_0xc5c3('0x65'));}else{return _0xf54924(_0x1ed757);}})[_0xc5c3('0x48')](function(_0x2cdd7a){return _0xea569b(_0x2cdd7a);});});;});};function addVoicePrefixExtensions(_0x385b39,_0x4d3e6f){var _0x92c6cf=[];var _0x358b83=formatPrefixName(_0x385b39['prefix']);_0x92c6cf['push'](new Extension(_0x358b83,0x2,_0xc5c3('0x66'),_0xc5c3('0x67')+_0x385b39[_0xc5c3('0x2e')]));if(_0x385b39[_0xc5c3('0x68')]){_0x92c6cf[_0xc5c3('0x69')](new Extension(_0x358b83,0x3,_0xc5c3('0x66'),_0xc5c3('0x6a')+_0x385b39[_0xc5c3('0x68')]));}else{_0x92c6cf[_0xc5c3('0x69')](new Extension(_0x358b83,0x3,'NoOp',_0xc5c3('0x6b')));}_0x92c6cf[_0xc5c3('0x69')](new Extension(_0x358b83,0x4,_0xc5c3('0x6c'),_0x4d3e6f[_0xc5c3('0x58')]+','+_0xc5c3('0x6d')+(0x8+_0x385b39[_0xc5c3('0x2e')][_0xc5c3('0x3c')])+'}'+','+0x1));return _0x92c6cf;}function formatPrefixName(_0x114c90){var _0x22606a='_';for(var _0x31e280=0x0;_0x31e280<_0x114c90[_0xc5c3('0x3c')];_0x31e280++){if(_0x114c90['charAt'](_0x31e280)=='-'){_0x22606a+=_0x114c90['charAt'](_0x31e280);}else{_0x22606a+='['+_0x114c90[_0xc5c3('0x6e')](_0x31e280)+']';}}_0x22606a+='.';return _0x22606a;}exports[_0xc5c3('0x29')]=function(_0x6281e5,_0x1951a5,_0x5540c0){var _0x2da018=_0x6281e5[_0xc5c3('0x6f')];_0x2da018[_0xc5c3('0x5f')]=_0xc5c3('0x70')+_0x2da018[_0xc5c3('0x2e')]+'-';return db[_0xc5c3('0x4f')][_0xc5c3('0x50')](function(_0x4a3f71){return db[_0xc5c3('0x32')]['update'](_0x2da018,{'where':{'id':_0x2da018['id']},'transaction':_0x4a3f71})[_0xc5c3('0x2a')](function(){return db[_0xc5c3('0x63')][_0xc5c3('0x2b')]({'where':{'VoicePrefixId':_0x2da018['id']},'transaction':_0x4a3f71})[_0xc5c3('0x2a')](function(){return db[_0xc5c3('0x63')][_0xc5c3('0x4d')]({'where':{'id':_0x2da018[_0xc5c3('0x71')]},'raw':!![]})[_0xc5c3('0x2a')](function(_0x4813a0){return createVoicePrefixExtensions(_0x2da018,_0x4813a0,_0x4a3f71);});});});})[_0xc5c3('0x2a')](function(){return db[_0xc5c3('0x32')][_0xc5c3('0x72')](_0x2da018['id']);})['then'](respondWithResult(_0x1951a5,null))['catch'](handleError(_0x1951a5,null));};exports[_0xc5c3('0x73')]=function(_0x5d6b6b,_0x5bcbd3,_0x1f222f){return db[_0xc5c3('0x32')]['find']({'where':{'id':_0x5d6b6b[_0xc5c3('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5bcbd3,null))['then'](function(_0x2dbe80){if(_0x2dbe80){return _0x2dbe80[_0xc5c3('0x73')](_0x5d6b6b[_0xc5c3('0x6f')][_0xc5c3('0x74')],_[_0xc5c3('0x75')](_0x5d6b6b['body'],[_0xc5c3('0x74'),'id'])||{})['spread'](function(_0x110167){for(var _0x109cfa=0x0;_0x109cfa<_0x5d6b6b[_0xc5c3('0x6f')][_0xc5c3('0x74')][_0xc5c3('0x3c')];_0x109cfa+=0x1){socket['emit']('userVoicePrefix:save',{'UserId':Number(_0x5d6b6b['body'][_0xc5c3('0x74')][_0x109cfa]),'VoicePrefixId':Number(_0x5d6b6b[_0xc5c3('0x4a')]['id'])});}return _0x110167;});}})[_0xc5c3('0x2a')](respondWithResult(_0x5bcbd3,null))['catch'](handleError(_0x5bcbd3,null));};exports[_0xc5c3('0x76')]=function(_0x41222d,_0x5dcd4d,_0x3afa94){return db['VoicePrefix'][_0xc5c3('0x4d')]({'where':{'id':_0x41222d[_0xc5c3('0x4a')]['id']}})[_0xc5c3('0x2a')](handleEntityNotFound(_0x5dcd4d,null))[_0xc5c3('0x2a')](function(_0x4b0d02){if(_0x4b0d02){return _0x4b0d02[_0xc5c3('0x76')](_0x41222d[_0xc5c3('0x37')][_0xc5c3('0x74')])[_0xc5c3('0x2a')](function(){if(_[_0xc5c3('0x77')](_0x41222d[_0xc5c3('0x37')][_0xc5c3('0x74')])){for(var _0x1f36f8=0x0;_0x1f36f8<_0x41222d['query']['ids']['length'];_0x1f36f8+=0x1){socket['emit'](_0xc5c3('0x78'),{'UserId':Number(_0x41222d[_0xc5c3('0x37')][_0xc5c3('0x74')][_0x1f36f8]),'VoicePrefixId':Number(_0x41222d[_0xc5c3('0x4a')]['id'])});}}else{socket[_0xc5c3('0x79')](_0xc5c3('0x78'),{'UserId':Number(_0x41222d[_0xc5c3('0x37')][_0xc5c3('0x74')]),'VoicePrefixId':Number(_0x41222d[_0xc5c3('0x4a')]['id'])});}});}})['then'](respondWithStatusCode(_0x5dcd4d,null))[_0xc5c3('0x48')](handleError(_0x5dcd4d,null));};exports[_0xc5c3('0x7a')]=function(_0x3aa5e2,_0x1efa1d,_0x2fae6d){var _0x258e36={};var _0x2f1be8={};var _0x550966;var _0x5733a2;return db[_0xc5c3('0x32')][_0xc5c3('0x7b')]({'where':{'id':_0x3aa5e2[_0xc5c3('0x4a')]['id']}})[_0xc5c3('0x2a')](handleEntityNotFound(_0x1efa1d,null))[_0xc5c3('0x2a')](function(_0x306d22){if(_0x306d22){_0x550966=_0x306d22;_0x2f1be8[_0xc5c3('0x36')]=_[_0xc5c3('0x38')](db[_0xc5c3('0x7c')][_0xc5c3('0x33')]);_0x2f1be8[_0xc5c3('0x37')]=_['keys'](_0x3aa5e2[_0xc5c3('0x37')]);_0x2f1be8[_0xc5c3('0x42')]=_[_0xc5c3('0x39')](_0x2f1be8[_0xc5c3('0x36')],_0x2f1be8[_0xc5c3('0x37')]);_0x258e36['attributes']=_[_0xc5c3('0x39')](_0x2f1be8[_0xc5c3('0x36')],qs[_0xc5c3('0x3b')](_0x3aa5e2[_0xc5c3('0x37')]['fields']));_0x258e36[_0xc5c3('0x3a')]=_0x258e36[_0xc5c3('0x3a')][_0xc5c3('0x3c')]?_0x258e36['attributes']:_0x2f1be8[_0xc5c3('0x36')];_0x258e36[_0xc5c3('0x3f')]=qs[_0xc5c3('0x40')](_0x3aa5e2[_0xc5c3('0x37')][_0xc5c3('0x40')]);_0x258e36[_0xc5c3('0x41')]=qs[_0xc5c3('0x42')](_[_0xc5c3('0x7d')](_0x3aa5e2[_0xc5c3('0x37')],_0x2f1be8[_0xc5c3('0x42')]));if(_0x3aa5e2[_0xc5c3('0x37')][_0xc5c3('0x43')]){_0x258e36[_0xc5c3('0x41')]=_[_0xc5c3('0x44')](_0x258e36[_0xc5c3('0x41')],{'$or':_[_0xc5c3('0x31')](_0x258e36['attributes'],function(_0x2bf9d2){var _0x8aaa64={};_0x8aaa64[_0x2bf9d2]={'$like':'%'+_0x3aa5e2['query'][_0xc5c3('0x43')]+'%'};return _0x8aaa64;})});}_0x258e36=_['merge']({},_0x258e36,_0x3aa5e2[_0xc5c3('0x4c')]);return _0x550966[_0xc5c3('0x7a')](_0x258e36);}})[_0xc5c3('0x2a')](function(_0x1800a0){if(_0x1800a0){_0x5733a2=_0x1800a0[_0xc5c3('0x3c')];if(!_0x3aa5e2['query'][_0xc5c3('0x3d')](_0xc5c3('0x3e'))){_0x258e36[_0xc5c3('0x21')]=qs['limit'](_0x3aa5e2['query'][_0xc5c3('0x21')]);_0x258e36['offset']=qs[_0xc5c3('0x20')](_0x3aa5e2[_0xc5c3('0x37')][_0xc5c3('0x20')]);}return _0x550966['getAgents'](_0x258e36);}})[_0xc5c3('0x2a')](function(_0x3325b6){if(_0x3325b6){return _0x3325b6?{'count':_0x5733a2,'rows':_0x3325b6}:null;}})[_0xc5c3('0x2a')](respondWithResult(_0x1efa1d,null))[_0xc5c3('0x48')](handleError(_0x1efa1d,null));};exports[_0xc5c3('0x7e')]=function(_0x57070d,_0x2f5315,_0x37ef35){var _0x2dcae5={};var _0x5d5248={};var _0xd3091c;var _0x26292e;return db[_0xc5c3('0x32')][_0xc5c3('0x7b')]({'where':{'id':_0x57070d[_0xc5c3('0x4a')]['id']}})[_0xc5c3('0x2a')](handleEntityNotFound(_0x2f5315,null))[_0xc5c3('0x2a')](function(_0x12d800){if(_0x12d800){_0xd3091c=_0x12d800;_0x5d5248['model']=_[_0xc5c3('0x38')](db['Team'][_0xc5c3('0x33')]);_0x5d5248[_0xc5c3('0x37')]=_['keys'](_0x57070d[_0xc5c3('0x37')]);_0x5d5248[_0xc5c3('0x42')]=_['intersection'](_0x5d5248[_0xc5c3('0x36')],_0x5d5248[_0xc5c3('0x37')]);_0x2dcae5[_0xc5c3('0x3a')]=_[_0xc5c3('0x39')](_0x5d5248[_0xc5c3('0x36')],qs['fields'](_0x57070d[_0xc5c3('0x37')][_0xc5c3('0x3b')]));_0x2dcae5[_0xc5c3('0x3a')]=_0x2dcae5[_0xc5c3('0x3a')][_0xc5c3('0x3c')]?_0x2dcae5[_0xc5c3('0x3a')]:_0x5d5248['model'];_0x2dcae5[_0xc5c3('0x3f')]=qs[_0xc5c3('0x40')](_0x57070d['query']['sort']);_0x2dcae5[_0xc5c3('0x41')]=qs[_0xc5c3('0x42')](_['pick'](_0x57070d[_0xc5c3('0x37')],_0x5d5248[_0xc5c3('0x42')]));if(_0x57070d[_0xc5c3('0x37')]['filter']){_0x2dcae5[_0xc5c3('0x41')]=_[_0xc5c3('0x44')](_0x2dcae5[_0xc5c3('0x41')],{'$or':_[_0xc5c3('0x31')](_0x2dcae5[_0xc5c3('0x3a')],function(_0x86d21a){var _0x53f1d={};_0x53f1d[_0x86d21a]={'$like':'%'+_0x57070d[_0xc5c3('0x37')][_0xc5c3('0x43')]+'%'};return _0x53f1d;})});}_0x2dcae5=_[_0xc5c3('0x44')]({},_0x2dcae5,_0x57070d[_0xc5c3('0x4c')]);return _0xd3091c[_0xc5c3('0x7e')](_0x2dcae5);}})['then'](function(_0x48e3a2){if(_0x48e3a2){_0x26292e=_0x48e3a2[_0xc5c3('0x3c')];if(!_0x57070d['query']['hasOwnProperty'](_0xc5c3('0x3e'))){_0x2dcae5['limit']=qs[_0xc5c3('0x21')](_0x57070d[_0xc5c3('0x37')]['limit']);_0x2dcae5['offset']=qs[_0xc5c3('0x20')](_0x57070d['query']['offset']);}return _0xd3091c[_0xc5c3('0x7e')](_0x2dcae5);}})[_0xc5c3('0x2a')](function(_0x3ce0e9){if(_0x3ce0e9){return _0x3ce0e9?{'count':_0x26292e,'rows':_0x3ce0e9}:null;}})[_0xc5c3('0x2a')](respondWithResult(_0x2f5315,null))[_0xc5c3('0x48')](handleError(_0x2f5315,null));};exports[_0xc5c3('0x7f')]=function(_0x116965,_0xa4672a,_0x1aba09){var _0x557b8f=_0x116965['body'][_0xc5c3('0x74')];var _0x389c96;return db[_0xc5c3('0x80')][_0xc5c3('0x81')]({'where':{'id':_0x557b8f},'attributes':['id'],'include':[{'model':db[_0xc5c3('0x7c')],'as':'Agents','attributes':['id',_0xc5c3('0x2e'),'online',_0xc5c3('0x82'),_0xc5c3('0x83')],'raw':!![]}]})[_0xc5c3('0x2a')](function(_0x2c8937){if(_0x2c8937){_0x389c96=_0x2c8937;var _0x9e9372=_[_0xc5c3('0x84')](_0x2c8937,function(_0x1dcde5){var _0x2c8fdb=_0x1dcde5['get']({'plain':!![]});return _0x2c8fdb['Agents'];});return db['VoicePrefix'][_0xc5c3('0x4d')]({'where':{'id':_0x116965[_0xc5c3('0x4a')]['id']}})[_0xc5c3('0x2a')](function(_0x3cc60b){return db[_0xc5c3('0x4f')][_0xc5c3('0x50')](function(_0x2c5fd2){return _0x3cc60b[_0xc5c3('0x7f')](_0x557b8f,{'transaction':_0x2c5fd2})[_0xc5c3('0x2a')](function(){return BPromise[_0xc5c3('0x85')](_0x389c96,function(_0x554787){return db[_0xc5c3('0x86')][_0xc5c3('0x87')]({'TeamId':_0x554787['id'],'VoicePrefixId':_0x116965[_0xc5c3('0x4a')]['id']},{'transaction':_0x2c5fd2});});})[_0xc5c3('0x2a')](function(){return BPromise[_0xc5c3('0x85')](_0x9e9372,function(_0x589e28){return db[_0xc5c3('0x88')][_0xc5c3('0x89')]({'where':{'UserId':_0x589e28['id'],'VoicePrefixId':_0x116965[_0xc5c3('0x4a')]['id']},'transaction':_0x2c5fd2});});})['then'](function(){_0x9e9372[_0xc5c3('0x8a')](function(_0x2dd850){socket[_0xc5c3('0x79')](_0xc5c3('0x8b'),{'UserId':_0x2dd850['id'],'VoicePrefixId':_0x3cc60b['id']});});});});});}})[_0xc5c3('0x2a')](respondWithStatusCode(_0xa4672a,null))[_0xc5c3('0x48')](handleError(_0xa4672a,null));};exports[_0xc5c3('0x8c')]=function(_0x53a502,_0x762654,_0x37459f){return db['Team'][_0xc5c3('0x81')]({'where':{'id':_0x53a502[_0xc5c3('0x37')][_0xc5c3('0x74')]},'attributes':['id'],'include':[{'model':db[_0xc5c3('0x7c')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xc5c3('0x2a')](handleEntityNotFound(_0x762654,null))[_0xc5c3('0x2a')](function(_0x3aafa0){var _0xe80b2b=_[_0xc5c3('0x31')](_0x3aafa0,'id');var _0x2b49da=[];var _0x47bd08=[];var _0x314072=squel[_0xc5c3('0x8d')]();_0x314072['field'](_0xc5c3('0x8e'))['from'](_0xc5c3('0x8f'),'tq')[_0xc5c3('0x90')](_0xc5c3('0x91'),'ut',_0xc5c3('0x92'))['where']('VoicePrefixId\x20=\x20?',_0x53a502['params']['id']);for(var _0x3b5ca9=0x0;_0x3b5ca9<_0x3aafa0[_0xc5c3('0x3c')];_0x3b5ca9+=0x1){let _0x283935=_0x3aafa0[_0x3b5ca9];for(var _0x5cebbc=0x0;_0x5cebbc<_0x283935[_0xc5c3('0x93')]['length'];_0x5cebbc+=0x1){let _0x423b48=_0x283935[_0xc5c3('0x93')][_0x5cebbc];var _0x2a8dfc=_0x314072[_0xc5c3('0x94')]();_0x2a8dfc[_0xc5c3('0x41')](_0xc5c3('0x95'),_0x423b48['id']);_0x47bd08[_0xc5c3('0x69')](db[_0xc5c3('0x4f')][_0xc5c3('0x37')](_0x2a8dfc[_0xc5c3('0x96')](),{'type':db['sequelize'][_0xc5c3('0x97')]['SELECT']})[_0xc5c3('0x2a')](function(_0x397543){if(_0x397543[_0xc5c3('0x3c')]===0x1){return _0x423b48['id'];}else{var _0x21941a=_['every'](_[_0xc5c3('0x31')](_0x397543,_0xc5c3('0x98')),function(_0x1b7fc8){return _['includes'](_0xe80b2b,_0x1b7fc8);});if(_0x21941a){return _0x423b48['id'];}}}));}}return BPromise['all'](_0x47bd08)[_0xc5c3('0x2a')](function(_0x5731da){_0x2b49da=_(_0x2b49da)[_0xc5c3('0x99')](_0x5731da)[_0xc5c3('0x9a')]()['value']();return db[_0xc5c3('0x32')][_0xc5c3('0x4d')]({'where':{'id':_0x53a502['params']['id']}})['then'](function(_0x288b93){return db[_0xc5c3('0x4f')][_0xc5c3('0x50')](function(_0x187a7a){return _0x288b93['removeTeams'](_0x53a502[_0xc5c3('0x37')][_0xc5c3('0x74')],{'transaction':_0x187a7a})[_0xc5c3('0x2a')](function(){if(!_['isEmpty'](_0x2b49da)){return _0x288b93[_0xc5c3('0x76')](_0x2b49da,{'transaction':_0x187a7a});}})[_0xc5c3('0x2a')](function(){_0x2b49da['forEach'](function(_0x8ec6b6){socket[_0xc5c3('0x79')](_0xc5c3('0x78'),{'UserId':_0x8ec6b6,'VoicePrefixId':_0x288b93['id']});});});});});});})[_0xc5c3('0x2a')](respondWithStatusCode(_0x762654,null))[_0xc5c3('0x48')](handleError(_0x762654,null));};
\ No newline at end of file
index 6228f31..9acdc99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc876=['exports','events','../../mysqldb','VoicePrefix','setMaxListeners','save','update','remove','emit','hook'];(function(_0x567b55,_0x4823cd){var _0xc57c5b=function(_0x4cd840){while(--_0x4cd840){_0x567b55['push'](_0x567b55['shift']());}};_0xc57c5b(++_0x4823cd);}(_0xc876,0x187));var _0x6c87=function(_0x209d95,_0x87f23a){_0x209d95=_0x209d95-0x0;var _0x394d46=_0xc876[_0x209d95];return _0x394d46;};'use strict';var EventEmitter=require(_0x6c87('0x0'));var VoicePrefix=require(_0x6c87('0x1'))['db'][_0x6c87('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x6c87('0x3')](0x0);var events={'afterCreate':_0x6c87('0x4'),'afterUpdate':_0x6c87('0x5'),'afterDestroy':_0x6c87('0x6')};function emitEvent(_0x382954){return function(_0x4dcfba,_0x57c2ae,_0x3c5e7e){VoicePrefixEvents[_0x6c87('0x7')](_0x382954+':'+_0x4dcfba['id'],_0x4dcfba);VoicePrefixEvents[_0x6c87('0x7')](_0x382954,_0x4dcfba);_0x3c5e7e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix[_0x6c87('0x8')](e,emitEvent(event));}}module[_0x6c87('0x9')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x3517=['emit','hasOwnProperty','exports','events','../../mysqldb','VoicePrefix','setMaxListeners','save','update','remove'];(function(_0xdaab62,_0x2728ab){var _0x13d767=function(_0x14bf14){while(--_0x14bf14){_0xdaab62['push'](_0xdaab62['shift']());}};_0x13d767(++_0x2728ab);}(_0x3517,0x175));var _0x7351=function(_0x3e6181,_0x2783e5){_0x3e6181=_0x3e6181-0x0;var _0x4c014d=_0x3517[_0x3e6181];return _0x4c014d;};'use strict';var EventEmitter=require(_0x7351('0x0'));var VoicePrefix=require(_0x7351('0x1'))['db'][_0x7351('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x7351('0x3')](0x0);var events={'afterCreate':_0x7351('0x4'),'afterUpdate':_0x7351('0x5'),'afterDestroy':_0x7351('0x6')};function emitEvent(_0x49a2ed){return function(_0x4bc60d,_0x5acc72,_0x5144e9){VoicePrefixEvents['emit'](_0x49a2ed+':'+_0x4bc60d['id'],_0x4bc60d);VoicePrefixEvents[_0x7351('0x7')](_0x49a2ed,_0x4bc60d);_0x5144e9(null);};}for(var e in events){if(events[_0x7351('0x8')](e)){var event=events[e];VoicePrefix['hook'](e,emitEvent(event));}}module[_0x7351('0x9')]=VoicePrefixEvents;
\ No newline at end of file
index cc994e2..c06c2b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x316d=['path','rimraf','./voicePrefix.attributes','exports','define','VoicePrefix','voice_prefixes','lodash','api','moment','bluebird','request-promise'];(function(_0x49192,_0x2fc6fb){var _0x57d8e8=function(_0xc4ed8d){while(--_0xc4ed8d){_0x49192['push'](_0x49192['shift']());}};_0x57d8e8(++_0x2fc6fb);}(_0x316d,0xf7));var _0xd316=function(_0x20b55b,_0x387ba6){_0x20b55b=_0x20b55b-0x0;var _0x106f72=_0x316d[_0x20b55b];return _0x106f72;};'use strict';var _=require(_0xd316('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xd316('0x1'));var moment=require(_0xd316('0x2'));var BPromise=require(_0xd316('0x3'));var rp=require(_0xd316('0x4'));var fs=require('fs');var path=require(_0xd316('0x5'));var rimraf=require(_0xd316('0x6'));var config=require('../../config/environment');var attributes=require(_0xd316('0x7'));module[_0xd316('0x8')]=function(_0x357371,_0x448599){return _0x357371[_0xd316('0x9')](_0xd316('0xa'),attributes,{'tableName':_0xd316('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x896d=['../../config/environment','exports','define','voice_prefixes','util','../../config/logger','api','moment','path','rimraf'];(function(_0x2b6839,_0xf05da1){var _0x57e580=function(_0x22759c){while(--_0x22759c){_0x2b6839['push'](_0x2b6839['shift']());}};_0x57e580(++_0xf05da1);}(_0x896d,0x1da));var _0xd896=function(_0x2ed3c7,_0x209166){_0x2ed3c7=_0x2ed3c7-0x0;var _0x2a07a3=_0x896d[_0x2ed3c7];return _0x2a07a3;};'use strict';var _=require('lodash');var util=require(_0xd896('0x0'));var logger=require(_0xd896('0x1'))(_0xd896('0x2'));var moment=require(_0xd896('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xd896('0x4'));var rimraf=require(_0xd896('0x5'));var config=require(_0xd896('0x6'));var attributes=require('./voicePrefix.attributes');module[_0xd896('0x7')]=function(_0x3ccb76,_0x4ccd72){return _0x3ccb76[_0xd896('0x8')]('VoicePrefix',attributes,{'tableName':_0xd896('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 33df184..a7ff5c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeaab=['catch','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','VoicePrefix,\x20%s,\x20%s','request\x20sent','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result'];(function(_0x1147ab,_0x10e72b){var _0x55cb5a=function(_0x364bd6){while(--_0x364bd6){_0x1147ab['push'](_0x1147ab['shift']());}};_0x55cb5a(++_0x10e72b);}(_0xeaab,0xd9));var _0xbeaa=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xeaab[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0xbeaa('0x0'));var util=require('util');var moment=require(_0xbeaa('0x1'));var BPromise=require(_0xbeaa('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbeaa('0x3'))['db'];var utils=require(_0xbeaa('0x4'));var logger=require(_0xbeaa('0x5'))(_0xbeaa('0x6'));var config=require(_0xbeaa('0x7'));var jayson=require(_0xbeaa('0x8'));var client=jayson[_0xbeaa('0x9')][_0xbeaa('0xa')]({'port':0x232a});config[_0xbeaa('0xb')]=_[_0xbeaa('0xc')](config[_0xbeaa('0xb')],{'host':_0xbeaa('0xd'),'port':0x18eb});var socket=require(_0xbeaa('0xe'))(new Redis(config[_0xbeaa('0xb')]));require('./voicePrefix.socket')[_0xbeaa('0xf')](socket);function respondWithRpcPromise(_0xcefe5e,_0xdc012e,_0x3ca743){return new BPromise(function(_0x1762a1,_0x1305fc){return client[_0xbeaa('0x10')](_0xcefe5e,_0x3ca743)['then'](function(_0x18fd02){logger['info'](_0xbeaa('0x11'),_0xdc012e,_0xbeaa('0x12'));logger['debug'](_0xbeaa('0x13'),_0xdc012e,'request\x20sent',JSON[_0xbeaa('0x14')](_0x18fd02));if(_0x18fd02[_0xbeaa('0x15')]){if(_0x18fd02['error'][_0xbeaa('0x16')]===0x1f4){logger[_0xbeaa('0x15')](_0xbeaa('0x11'),_0xdc012e,_0x18fd02[_0xbeaa('0x15')][_0xbeaa('0x17')]);return _0x1305fc(_0x18fd02[_0xbeaa('0x15')][_0xbeaa('0x17')]);}logger[_0xbeaa('0x15')](_0xbeaa('0x11'),_0xdc012e,_0x18fd02[_0xbeaa('0x15')][_0xbeaa('0x17')]);return _0x1762a1(_0x18fd02[_0xbeaa('0x15')][_0xbeaa('0x17')]);}else{logger[_0xbeaa('0x18')](_0xbeaa('0x11'),_0xdc012e,_0xbeaa('0x12'));_0x1762a1(_0x18fd02[_0xbeaa('0x19')][_0xbeaa('0x17')]);}})[_0xbeaa('0x1a')](function(_0xa98958){logger[_0xbeaa('0x15')]('VoicePrefix,\x20%s,\x20%s',_0xdc012e,_0xa98958);_0x1305fc(_0xa98958);});});}
\ No newline at end of file
+var _0x0170=['stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0170,0x1d6));var _0x0017=function(_0x32da54,_0x1aed03){_0x32da54=_0x32da54-0x0;var _0x214360=_0x0170[_0x32da54];return _0x214360;};'use strict';var _=require(_0x0017('0x0'));var util=require(_0x0017('0x1'));var moment=require('moment');var BPromise=require(_0x0017('0x2'));var rs=require(_0x0017('0x3'));var fs=require('fs');var Redis=require(_0x0017('0x4'));var db=require(_0x0017('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0017('0x6'))(_0x0017('0x7'));var config=require(_0x0017('0x8'));var jayson=require(_0x0017('0x9'));var client=jayson[_0x0017('0xa')][_0x0017('0xb')]({'port':0x232a});config[_0x0017('0xc')]=_[_0x0017('0xd')](config[_0x0017('0xc')],{'host':_0x0017('0xe'),'port':0x18eb});var socket=require(_0x0017('0xf'))(new Redis(config['redis']));require('./voicePrefix.socket')[_0x0017('0x10')](socket);function respondWithRpcPromise(_0x453af3,_0x46c69f,_0x3904cb){return new BPromise(function(_0x3d0dff,_0x15bbe2){return client[_0x0017('0x11')](_0x453af3,_0x3904cb)[_0x0017('0x12')](function(_0x1205f6){logger[_0x0017('0x13')](_0x0017('0x14'),_0x46c69f,_0x0017('0x15'));logger[_0x0017('0x16')]('VoicePrefix,\x20%s,\x20%s,\x20%s',_0x46c69f,_0x0017('0x15'),JSON[_0x0017('0x17')](_0x1205f6));if(_0x1205f6[_0x0017('0x18')]){if(_0x1205f6[_0x0017('0x18')][_0x0017('0x19')]===0x1f4){logger['error']('VoicePrefix,\x20%s,\x20%s',_0x46c69f,_0x1205f6[_0x0017('0x18')][_0x0017('0x1a')]);return _0x15bbe2(_0x1205f6[_0x0017('0x18')]['message']);}logger[_0x0017('0x18')](_0x0017('0x14'),_0x46c69f,_0x1205f6[_0x0017('0x18')][_0x0017('0x1a')]);return _0x3d0dff(_0x1205f6['error'][_0x0017('0x1a')]);}else{logger[_0x0017('0x13')]('VoicePrefix,\x20%s,\x20%s',_0x46c69f,_0x0017('0x15'));_0x3d0dff(_0x1205f6[_0x0017('0x1b')][_0x0017('0x1a')]);}})[_0x0017('0x1c')](function(_0x5d2439){logger[_0x0017('0x18')](_0x0017('0x14'),_0x46c69f,_0x5d2439);_0x15bbe2(_0x5d2439);});});}
\ No newline at end of file
index 34cecd9..b91d25f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cf3=['emit','removeListener','register','length','voicePrefix:','./voicePrefix.events','save','remove','update'];(function(_0x2abfd3,_0x3182c6){var _0x3d8d34=function(_0x11db26){while(--_0x11db26){_0x2abfd3['push'](_0x2abfd3['shift']());}};_0x3d8d34(++_0x3182c6);}(_0x1cf3,0x1be));var _0x31cf=function(_0x3417ab,_0x1ec5d6){_0x3417ab=_0x3417ab-0x0;var _0x39571a=_0x1cf3[_0x3417ab];return _0x39571a;};'use strict';var VoicePrefixEvents=require(_0x31cf('0x0'));var events=[_0x31cf('0x1'),_0x31cf('0x2'),_0x31cf('0x3')];function createListener(_0x54dff7,_0x20aa57){return function(_0x5a2ae7){_0x20aa57[_0x31cf('0x4')](_0x54dff7,_0x5a2ae7);};}function removeListener(_0x442009,_0x44d64d){return function(){VoicePrefixEvents[_0x31cf('0x5')](_0x442009,_0x44d64d);};}exports[_0x31cf('0x6')]=function(_0x44dd04){for(var _0x2b7cd4=0x0,_0x1830b4=events[_0x31cf('0x7')];_0x2b7cd4<_0x1830b4;_0x2b7cd4++){var _0x6be80=events[_0x2b7cd4];var _0x3f7b2e=createListener(_0x31cf('0x8')+_0x6be80,_0x44dd04);VoicePrefixEvents['on'](_0x6be80,_0x3f7b2e);}};
\ No newline at end of file
+var _0xaf93=['length','./voicePrefix.events','save','emit','removeListener','register'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0xaf93,0x151));var _0x3af9=function(_0x537f6f,_0x10b756){_0x537f6f=_0x537f6f-0x0;var _0x212d3f=_0xaf93[_0x537f6f];return _0x212d3f;};'use strict';var VoicePrefixEvents=require(_0x3af9('0x0'));var events=[_0x3af9('0x1'),'remove','update'];function createListener(_0x13f5d7,_0x3e84b6){return function(_0x528aa0){_0x3e84b6[_0x3af9('0x2')](_0x13f5d7,_0x528aa0);};}function removeListener(_0x44ae6e,_0x5add3){return function(){VoicePrefixEvents[_0x3af9('0x3')](_0x44ae6e,_0x5add3);};}exports[_0x3af9('0x4')]=function(_0x1ad446){for(var _0x333abb=0x0,_0x535583=events[_0x3af9('0x5')];_0x333abb<_0x535583;_0x333abb++){var _0x56e4c2=events[_0x333abb];var _0x133672=createListener('voicePrefix:'+_0x56e4c2,_0x1ad446);VoicePrefixEvents['on'](_0x56e4c2,_0x133672);}};
\ No newline at end of file
index 67794ee..c9b0c2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['addAgents','/:id/blacklists','addBlackLists','update','delete','destroy','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','/:id','getHoppers','/:id/hopper_histories','isAuthenticated','getHopperHistories','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','post','create','/:id/clone','clone','addTeams'];(function(_0x4e673e,_0x3413b8){var _0x837f41=function(_0x1f06b9){while(--_0x1f06b9){_0x4e673e['push'](_0x4e673e['shift']());}};_0x837f41(++_0x3413b8);}(_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/hoppers',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/hopper_finals',auth['isAuthenticated'](),controller['getHopperFinals']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getTeams']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x8')]('/:id/blacklists',auth[_0x0a9e('0xd')](),controller['getBlackLists']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/users',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller['addLists']);router[_0x0a9e('0x18')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x22')]);router['delete']('/:id/teams',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router[_0x0a9e('0x21')](_0x0a9e('0x12'),auth['isAuthenticated'](),controller[_0x0a9e('0x24')]);router['delete'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x25')]);router[_0x0a9e('0x21')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x26')]);module[_0x0a9e('0x27')]=router;
\ No newline at end of file
+var _0xa9e0=['addAgents','/:id/blacklists','addBlackLists','update','delete','destroy','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','/:id','getHoppers','/:id/hopper_histories','isAuthenticated','getHopperHistories','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','post','create','/:id/clone','clone','addTeams'];(function(_0x51b9dc,_0x4462ab){var _0x25952c=function(_0x173b1a){while(--_0x173b1a){_0x51b9dc['push'](_0x51b9dc['shift']());}};_0x25952c(++_0x4462ab);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xa9e0[_0x2a6809];return _0x11c371;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/hoppers',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/hopper_finals',auth['isAuthenticated'](),controller['getHopperFinals']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getTeams']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x8')]('/:id/blacklists',auth[_0x0a9e('0xd')](),controller['getBlackLists']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/users',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller['addLists']);router[_0x0a9e('0x18')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x22')]);router['delete']('/:id/teams',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router[_0x0a9e('0x21')](_0x0a9e('0x12'),auth['isAuthenticated'](),controller[_0x0a9e('0x24')]);router['delete'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x25')]);router[_0x0a9e('0x21')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x26')]);module[_0x0a9e('0x27')]=router;
\ No newline at end of file
index 2c8414a..3d497c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44ef=['INTEGER','yes','all','once','periodic_announce','join','joinempty','split','leavewhenempty','BOOLEAN','wrapuptime','progressive','power','predictive','Dial\x20Method.','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','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)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','sequelize','exports','STRING','name','ENUM','inbound','default','ringall','leastrecent','rrmemory','linear','wrandom','setDataValue','strategy','getDataValue','dialMethod','outbound','preview','booked','roundrobin','includes'];(function(_0x513eca,_0x593007){var _0x2c4e0b=function(_0x8886da){while(--_0x8886da){_0x513eca['push'](_0x513eca['shift']());}};_0x2c4e0b(++_0x593007);}(_0x44ef,0xe4));var _0xf44e=function(_0x31f138,_0x13d372){_0x31f138=_0x31f138-0x0;var _0xd623c4=_0x44ef[_0x31f138];return _0xd623c4;};'use strict';var Sequelize=require(_0xf44e('0x0'));module[_0xf44e('0x1')]={'name':{'type':Sequelize[_0xf44e('0x2')],'allowNull':![],'unique':_0xf44e('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xf44e('0x4')](_0xf44e('0x5'),'outbound'),'allowNull':![],'defaultValue':_0xf44e('0x5')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':_0xf44e('0x6')},'announce':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':''},'strategy':{'type':Sequelize[_0xf44e('0x4')]('rr',_0xf44e('0x7'),_0xf44e('0x8'),'fewestcalls','random',_0xf44e('0x9'),_0xf44e('0xa'),_0xf44e('0xb'),'rrordered'),'allowNull':![],'defaultValue':_0xf44e('0x7'),'set':function(_0x2a759f){this[_0xf44e('0xc')](_0xf44e('0xd'),_0x2a759f?_0x2a759f:_0xf44e('0x9'));},'get':function(){var _0x12fadc=this[_0xf44e('0xe')]('type');var _0x2981f8=this['getDataValue'](_0xf44e('0xf'));var _0x2bdb42=this[_0xf44e('0xe')](_0xf44e('0xd'));if(_0x12fadc===_0xf44e('0x10')){if(_0x2981f8===_0xf44e('0x11')){return null;}if(_0x2981f8===_0xf44e('0x12')&&!['rrmemory',_0xf44e('0x13')][_0xf44e('0x14')](_0x2bdb42)){this['setDataValue']('strategy','rrmemory');}}return _0x2bdb42;}},'servicelevel':{'type':Sequelize[_0xf44e('0x15')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xf44e('0x15')](0xb)},'timeout':{'type':Sequelize[_0xf44e('0x15')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xf44e('0x15')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xf44e('0x2')]},'weight':{'type':Sequelize[_0xf44e('0x15')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xf44e('0x4')]('yes','no'),'defaultValue':_0xf44e('0x16')},'autopause':{'type':Sequelize[_0xf44e('0x4')](_0xf44e('0x16'),'no',_0xf44e('0x17')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xf44e('0x15')](0xb)},'autopausebusy':{'type':Sequelize['ENUM'](_0xf44e('0x16'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xf44e('0x4')]('yes','no'),'defaultValue':'no'},'maxlen':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xf44e('0x4')](_0xf44e('0x16'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xf44e('0x4')](_0xf44e('0x16'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xf44e('0x4')]('yes','no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xf44e('0x4')](_0xf44e('0x16'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xf44e('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xf44e('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xf44e('0x15')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xf44e('0x15')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xf44e('0x4')](_0xf44e('0x16'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xf44e('0x4')]('yes','no'),'defaultValue':_0xf44e('0x16')},'announce_holdtime':{'type':Sequelize[_0xf44e('0x4')](_0xf44e('0x16'),'no',_0xf44e('0x18')),'defaultValue':'no'},'announce_position':{'type':Sequelize['STRING'],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize['ENUM'](_0xf44e('0x16'),'no')},'announce_position_limit':{'type':Sequelize[_0xf44e('0x15')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xf44e('0x2')]},'queue_youarenext':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize['STRING'],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize['STRING'],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xf44e('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xf44e('0x2')]},'queue_quantity1':{'type':Sequelize[_0xf44e('0x2')]},'queue_quantity2':{'type':Sequelize[_0xf44e('0x2')]},'queue_periodic_announce':{'type':Sequelize['STRING']},'queue_less_than':{'type':Sequelize['STRING']},'periodic_announce':{'type':Sequelize['TEXT'],'set':function(_0x1111df){this[_0xf44e('0xc')](_0xf44e('0x19'),_0x1111df?_0x1111df[_0xf44e('0x1a')](','):[]);},'get':function(){return this[_0xf44e('0xe')]('periodic_announce')?this[_0xf44e('0xe')](_0xf44e('0x19'))['split'](','):[];}},'joinempty':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':'yes','set':function(_0x4e9577){this['setDataValue']('joinempty',_0x4e9577?_0x4e9577[_0xf44e('0x1a')](','):undefined);},'get':function(){return this['getDataValue'](_0xf44e('0x1b'))?this[_0xf44e('0xe')](_0xf44e('0x1b'))[_0xf44e('0x1c')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':'no','set':function(_0x3726b9){this[_0xf44e('0xc')]('leavewhenempty',_0x3726b9?_0x3726b9['join'](','):undefined);},'get':function(){return this[_0xf44e('0xe')](_0xf44e('0x1d'))?this[_0xf44e('0xe')](_0xf44e('0x1d'))[_0xf44e('0x1c')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xf44e('0x4')]('yes','no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xf44e('0x4')](_0xf44e('0x16'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xf44e('0x4')]('yes','no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xf44e('0x2')]},'description':{'type':Sequelize[_0xf44e('0x2')]},'acw':{'type':Sequelize[_0xf44e('0x1e')],'defaultValue':0x0,'set':function(_0x5a6bc2){this[_0xf44e('0xc')]('acw',_0x5a6bc2);if(_0x5a6bc2){if(this[_0xf44e('0xe')](_0xf44e('0x1f'))<0x2){this['setDataValue'](_0xf44e('0x1f'),0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xf44e('0x1e')],'defaultValue':0x0,'comment':'Active/Disactive\x20Campaign'},'dialMethod':{'type':Sequelize['ENUM'](_0xf44e('0x11'),_0xf44e('0x20'),_0xf44e('0x21'),_0xf44e('0x22'),_0xf44e('0x12')),'defaultValue':'progressive','comment':_0xf44e('0x23')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)[_0xf44e('0x24')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize[_0xf44e('0x15')](0x4)['UNSIGNED'],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xf44e('0x25')},'dialPowerLevel':{'type':Sequelize[_0xf44e('0x26')](0x2)[_0xf44e('0x24')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xf44e('0x27')},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0xf44e('0x28'),_0xf44e('0x29')),'defaultValue':_0xf44e('0x29'),'comment':_0xf44e('0x2a')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xf44e('0x26')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xf44e('0x2b')},'dialPredictiveInterval':{'type':Sequelize[_0xf44e('0x15')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xf44e('0x2c')},'dialOriginateCallerIdName':{'type':Sequelize[_0xf44e('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xf44e('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf44e('0x2d')},'dialQueueOptions':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':_0xf44e('0x2e'),'comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize['STRING'],'comment':_0xf44e('0x2f')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf44e('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf44e('0x30')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xf44e('0x15')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf44e('0x31')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf44e('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf44e('0x32')},'dialBusyRetryFrequency':{'type':Sequelize[_0xf44e('0x15')](0x5)[_0xf44e('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf44e('0x33')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'defaultValue':0x3,'comment':_0xf44e('0x34')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xf44e('0x15')](0x5)[_0xf44e('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf44e('0x35')},'dialGlobalMaxRetry':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xf44e('0x36')},'dialTimezone':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xf44e('0x2')],'defaultValue':_0xf44e('0x37')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0xf44e('0x38'),_0xf44e('0x39'),_0xf44e('0x3a')),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xf44e('0x3b')},'dialAMDInitialSilence':{'type':Sequelize[_0xf44e('0x15')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xf44e('0x3c')},'dialAMDGreeting':{'type':Sequelize[_0xf44e('0x15')](0x9)[_0xf44e('0x24')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0xf44e('0x24')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xf44e('0x3d')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xf44e('0x15')](0x9)[_0xf44e('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xf44e('0x3e')},'dialAMDMinWordLength':{'type':Sequelize[_0xf44e('0x15')](0x9)[_0xf44e('0x24')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xf44e('0x3f')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xf44e('0x15')](0x9)[_0xf44e('0x24')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xf44e('0x15')](0x9)[_0xf44e('0x24')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xf44e('0x40')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xf44e('0x15')](0x5)[_0xf44e('0x24')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xf44e('0x41')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xf44e('0x15')](0x9)[_0xf44e('0x24')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xf44e('0x42')},'dialRecallMeTimeout':{'type':Sequelize[_0xf44e('0x15')](0x5)[_0xf44e('0x24')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xf44e('0x43')},'dialRecallInQueue':{'type':Sequelize[_0xf44e('0x1e')],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0xf44e('0x44'),'ASC'),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize['STRING'],'comment':_0xf44e('0x2f')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xf44e('0x1e')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xf44e('0x1e')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf44e('0x45')},'dialCutDigit':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf44e('0x46')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf44e('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xf44e('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf44e('0x47')},'dialDropMaxRetry':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf44e('0x48')},'dialDropRetryFrequency':{'type':Sequelize[_0xf44e('0x15')](0x5)[_0xf44e('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf44e('0x49')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf44e('0x4a')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf44e('0x4b')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf44e('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf44e('0x4c')},'dialMachineRetryFrequency':{'type':Sequelize[_0xf44e('0x15')](0x5)[_0xf44e('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf44e('0x4d')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf44e('0x24')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf44e('0x4e')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xf44e('0x15')](0x5)[_0xf44e('0x24')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf44e('0x4f')},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf44e('0x15')],'allowNull':!![],'comment':_0xf44e('0x50')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xf44e('0x51'),'set':function(_0xb26d44){if(!_0xb26d44)this[_0xf44e('0xc')](_0xf44e('0x52'),null);this[_0xf44e('0xc')]('mandatoryDisposition',_0xb26d44);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0xf44e('0x1e')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0xf44e('0x15')](0x3)[_0xf44e('0x24')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0xf44e('0x1e')],'defaultValue':![]}};
\ No newline at end of file
+var _0xdb4f=['mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','name','ENUM','inbound','outbound','default','STRING','ringall','leastrecent','fewestcalls','rrmemory','wrandom','rrordered','setDataValue','strategy','getDataValue','dialMethod','booked','includes','INTEGER','yes','all','once','TEXT','periodic_announce','split','join','joinempty','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','preview','progressive','power','predictive','Dial\x20Method.','UNSIGNED','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).','agentBusyFactor','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\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','onlyIfOpen','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','DESC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xdb4f,0x18d));var _0xfdb4=function(_0x59db0f,_0x466ec8){_0x59db0f=_0x59db0f-0x0;var _0x2d3a0c=_0xdb4f[_0x59db0f];return _0x2d3a0c;};'use strict';var Sequelize=require(_0xfdb4('0x0'));module[_0xfdb4('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xfdb4('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xfdb4('0x3')](_0xfdb4('0x4'),_0xfdb4('0x5')),'allowNull':![],'defaultValue':_0xfdb4('0x4')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':_0xfdb4('0x6')},'announce':{'type':Sequelize[_0xfdb4('0x7')],'defaultValue':''},'strategy':{'type':Sequelize[_0xfdb4('0x3')]('rr',_0xfdb4('0x8'),_0xfdb4('0x9'),_0xfdb4('0xa'),'random',_0xfdb4('0xb'),'linear',_0xfdb4('0xc'),_0xfdb4('0xd')),'allowNull':![],'defaultValue':'ringall','set':function(_0x235c61){this[_0xfdb4('0xe')](_0xfdb4('0xf'),_0x235c61?_0x235c61:'rrmemory');},'get':function(){var _0x383aed=this[_0xfdb4('0x10')]('type');var _0x580bfc=this[_0xfdb4('0x10')](_0xfdb4('0x11'));var _0x260f83=this[_0xfdb4('0x10')](_0xfdb4('0xf'));if(_0x383aed===_0xfdb4('0x5')){if(_0x580bfc==='preview'){return null;}if(_0x580bfc===_0xfdb4('0x12')&&![_0xfdb4('0xb'),'roundrobin'][_0xfdb4('0x13')](_0x260f83)){this[_0xfdb4('0xe')]('strategy',_0xfdb4('0xb'));}}return _0x260f83;}},'servicelevel':{'type':Sequelize[_0xfdb4('0x14')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xfdb4('0x7')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0xfdb4('0x14')](0xb)},'timeout':{'type':Sequelize[_0xfdb4('0x14')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xfdb4('0x7')]},'weight':{'type':Sequelize[_0xfdb4('0x14')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xfdb4('0x14')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xfdb4('0x3')](_0xfdb4('0x15'),'no'),'defaultValue':_0xfdb4('0x15')},'autopause':{'type':Sequelize['ENUM'](_0xfdb4('0x15'),'no',_0xfdb4('0x16')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xfdb4('0x14')](0xb)},'autopausebusy':{'type':Sequelize[_0xfdb4('0x3')](_0xfdb4('0x15'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xfdb4('0x3')](_0xfdb4('0x15'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xfdb4('0x14')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xfdb4('0x3')](_0xfdb4('0x15'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xfdb4('0x3')]('yes','no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize['ENUM'](_0xfdb4('0x15'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize['ENUM'](_0xfdb4('0x15'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xfdb4('0x7')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xfdb4('0x7')],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xfdb4('0x3')](_0xfdb4('0x15'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize[_0xfdb4('0x3')](_0xfdb4('0x15'),'no',_0xfdb4('0x17')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xfdb4('0x7')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xfdb4('0x3')](_0xfdb4('0x15'),'no')},'announce_position_limit':{'type':Sequelize[_0xfdb4('0x14')](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xfdb4('0x7')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xfdb4('0x7')]},'queue_youarenext':{'type':Sequelize[_0xfdb4('0x7')],'defaultValue':null},'queue_thereare':{'type':Sequelize['STRING'],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xfdb4('0x7')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xfdb4('0x7')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xfdb4('0x7')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xfdb4('0x7')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xfdb4('0x7')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xfdb4('0x7')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xfdb4('0x7')]},'queue_quantity1':{'type':Sequelize[_0xfdb4('0x7')]},'queue_quantity2':{'type':Sequelize[_0xfdb4('0x7')]},'queue_periodic_announce':{'type':Sequelize[_0xfdb4('0x7')]},'queue_less_than':{'type':Sequelize[_0xfdb4('0x7')]},'periodic_announce':{'type':Sequelize[_0xfdb4('0x18')],'set':function(_0x23f41c){this[_0xfdb4('0xe')](_0xfdb4('0x19'),_0x23f41c?_0x23f41c['join'](','):[]);},'get':function(){return this['getDataValue'](_0xfdb4('0x19'))?this[_0xfdb4('0x10')]('periodic_announce')[_0xfdb4('0x1a')](','):[];}},'joinempty':{'type':Sequelize[_0xfdb4('0x7')],'defaultValue':_0xfdb4('0x15'),'set':function(_0x20fb82){this[_0xfdb4('0xe')]('joinempty',_0x20fb82?_0x20fb82[_0xfdb4('0x1b')](','):undefined);},'get':function(){return this['getDataValue'](_0xfdb4('0x1c'))?this[_0xfdb4('0x10')]('joinempty')[_0xfdb4('0x1a')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xfdb4('0x7')],'defaultValue':'no','set':function(_0x5462c7){this[_0xfdb4('0xe')](_0xfdb4('0x1d'),_0x5462c7?_0x5462c7[_0xfdb4('0x1b')](','):undefined);},'get':function(){return this['getDataValue'](_0xfdb4('0x1d'))?this[_0xfdb4('0x10')](_0xfdb4('0x1d'))[_0xfdb4('0x1a')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xfdb4('0x3')](_0xfdb4('0x15'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xfdb4('0x14')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xfdb4('0x3')](_0xfdb4('0x15'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'acw':{'type':Sequelize[_0xfdb4('0x1e')],'defaultValue':0x0,'set':function(_0x4ec7de){this[_0xfdb4('0xe')](_0xfdb4('0x1f'),_0x4ec7de);if(_0x4ec7de){if(this[_0xfdb4('0x10')](_0xfdb4('0x20'))<0x2){this[_0xfdb4('0xe')](_0xfdb4('0x20'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0xfdb4('0x14')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xfdb4('0x21')},'dialMethod':{'type':Sequelize['ENUM'](_0xfdb4('0x22'),_0xfdb4('0x23'),_0xfdb4('0x24'),_0xfdb4('0x25'),'booked'),'defaultValue':_0xfdb4('0x23'),'comment':_0xfdb4('0x26')},'dialLimitChannel':{'type':Sequelize[_0xfdb4('0x14')](0x4)[_0xfdb4('0x27')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20channels,\x200\x20means\x20unlimited.'},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)[_0xfdb4('0x27')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xfdb4('0x28')},'dialPowerLevel':{'type':Sequelize[_0xfdb4('0x29')](0x2)[_0xfdb4('0x27')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xfdb4('0x2a')},'dialPredictiveOptimization':{'type':Sequelize[_0xfdb4('0x3')](_0xfdb4('0x2b'),_0xfdb4('0x2c')),'defaultValue':_0xfdb4('0x2c'),'comment':_0xfdb4('0x2d')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xfdb4('0x29')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xfdb4('0x2e')},'dialPredictiveInterval':{'type':Sequelize[_0xfdb4('0x14')](0x3)[_0xfdb4('0x27')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xfdb4('0x2f')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xfdb4('0x7')]},'dialOriginateTimeout':{'type':Sequelize[_0xfdb4('0x14')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfdb4('0x30')},'dialQueueOptions':{'type':Sequelize[_0xfdb4('0x7')],'defaultValue':_0xfdb4('0x31'),'comment':_0xfdb4('0x32')},'dialQueueTimeout':{'type':Sequelize[_0xfdb4('0x14')](0x3)[_0xfdb4('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfdb4('0x33')},'dialQueueProject':{'type':Sequelize['STRING'],'comment':_0xfdb4('0x34')},'dialCongestionMaxRetry':{'type':Sequelize[_0xfdb4('0x14')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfdb4('0x35')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xfdb4('0x14')](0x5)[_0xfdb4('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xfdb4('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfdb4('0x36')},'dialBusyRetryFrequency':{'type':Sequelize[_0xfdb4('0x14')](0x5)[_0xfdb4('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfdb4('0x37')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xfdb4('0x14')](0x3)[_0xfdb4('0x27')],'defaultValue':0x3,'comment':_0xfdb4('0x38')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xfdb4('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfdb4('0x39')},'dialGlobalMaxRetry':{'type':Sequelize[_0xfdb4('0x14')](0x3)[_0xfdb4('0x27')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xfdb4('0x3a')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xfdb4('0x7')],'defaultValue':_0xfdb4('0x3b')},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xfdb4('0x3')](_0xfdb4('0x3c'),'never',_0xfdb4('0x3d')),'defaultValue':_0xfdb4('0x3c')},'dialAMDActive':{'type':Sequelize[_0xfdb4('0x1e')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize[_0xfdb4('0x14')](0x9)[_0xfdb4('0x27')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize[_0xfdb4('0x14')](0x9)[_0xfdb4('0x27')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xfdb4('0x14')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xfdb4('0x3e')},'dialAMDMinWordLength':{'type':Sequelize[_0xfdb4('0x14')](0x9)[_0xfdb4('0x27')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xfdb4('0x3f')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)[_0xfdb4('0x27')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xfdb4('0x40')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0xfdb4('0x27')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xfdb4('0x41')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xfdb4('0x14')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xfdb4('0x42')},'dialRecallMeTimeout':{'type':Sequelize[_0xfdb4('0x14')](0x5)[_0xfdb4('0x27')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xfdb4('0x43')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize['ENUM']('DESC','ASC'),'defaultValue':_0xfdb4('0x44')},'dialQueueProject2':{'type':Sequelize[_0xfdb4('0x7')],'comment':_0xfdb4('0x34')},'dialAgiAfterHangupClient':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xfdb4('0x1e')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xfdb4('0x14')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xfdb4('0x45')},'dialCutDigit':{'type':Sequelize[_0xfdb4('0x14')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xfdb4('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xfdb4('0x14')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfdb4('0x46')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0xfdb4('0x14')](0x5)[_0xfdb4('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfdb4('0x47')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xfdb4('0x14')](0x3)[_0xfdb4('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfdb4('0x48')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xfdb4('0x14')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfdb4('0x49')},'dialMachineMaxRetry':{'type':Sequelize[_0xfdb4('0x14')](0x3)[_0xfdb4('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0xfdb4('0x14')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfdb4('0x4a')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xfdb4('0x14')](0x3)[_0xfdb4('0x27')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfdb4('0x4b')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xfdb4('0x14')](0x5)[_0xfdb4('0x27')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xfdb4('0x1e')],'defaultValue':![],'comment':_0xfdb4('0x4c'),'set':function(_0x1c0d54){if(!_0x1c0d54)this[_0xfdb4('0xe')](_0xfdb4('0x4d'),null);this[_0xfdb4('0xe')](_0xfdb4('0x4e'),_0x1c0d54);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize['INTEGER'](0x3)[_0xfdb4('0x27')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0xfdb4('0x27')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0xfdb4('0x1e')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0xfdb4('0x14')](0x3)['UNSIGNED'],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 87f2979..30724c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['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','clone','merge','omit','createdAt','updatedAt','VoiceQueues','UserProfileResource','findOne','CmHopper','hasOwnProperty','nolimit','limit','order','sort','where','rows','getHopperHistories','CmHopperHistory','pick','VoiceQueueId','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','Agents','online','voicePause','flatMap','penalty','sequelize','each','TeamVoiceQueue','upsert','findOrCreate','UserVoiceQueueRt','isNil','interface','format','SIP/%s','forEach','emit','userVoiceQueue:save','removeTeams','select','tq.TeamId','join','user_has_teams','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','every','TeamId','all','union','transaction','isEmpty','userVoiceQueue:remove','addAgents','ids','spread','removeAgents','isArray','getAgents','getMembers','getLists','CmList','addLists','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ListId','field','ContactId','CmListId','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','onlyIfOpen','COALESCE(phone,\x27\x27)','push','cm_hopper_additional_phones','CmHopperId','h.id','cm_contact_has_items','h.ContactId=ci.CmContactId','h.scheduledat=?','ci.ItemClass=?','removeLists','getBlackLists','addBlackLists','cm_hopper_black','NOW()','phone\x20IS\x20NOT\x20NULL','removeBlackLists','moment','bluebird','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./voiceQueue.socket','status','end','json','undefined','count','offset','set','Content-Range','update','then','destroy','get','inbound','QueueCampaigns','outbound','filter','ignore','value','includes','type','sendStatus','error','stack','name','send','index','map','VoiceQueue','key','getOptions','include','query','findAll','catch','params','model','keys','rawAttributes','filters','intersection','attributes','fields','length','includeAll','options'];(function(_0x4370b2,_0xfa3445){var _0x482b0f=function(_0x211b3a){while(--_0x211b3a){_0x4370b2['push'](_0x4370b2['shift']());}};_0x482b0f(++_0xfa3445);}(_0x55ca,0x126));var _0xa55c=function(_0xbe31a4,_0x11ba89){_0xbe31a4=_0xbe31a4-0x0;var _0x15ec28=_0x55ca[_0xbe31a4];return _0x15ec28;};'use strict';var moment=require(_0xa55c('0x0'));var BPromise=require(_0xa55c('0x1'));var util=require('util');var _=require('lodash');var squel=require('squel');var Redis=require(_0xa55c('0x2'));var qs=require(_0xa55c('0x3'));var logger=require('../../config/logger')(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var db=require(_0xa55c('0x6'))['db'];config[_0xa55c('0x7')]=_[_0xa55c('0x8')](config[_0xa55c('0x7')],{'host':_0xa55c('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa55c('0x7')]));require(_0xa55c('0xa'))['register'](socket);function respondWithStatusCode(_0x291996,_0x290d28){_0x290d28=_0x290d28||0xcc;return function(_0x52a3bc){if(_0x52a3bc){return _0x291996['sendStatus'](_0x290d28);}return _0x291996[_0xa55c('0xb')](_0x290d28)[_0xa55c('0xc')]();};}function respondWithResult(_0x381d07,_0x5d8e5a){_0x5d8e5a=_0x5d8e5a||0xc8;return function(_0x31646d){if(_0x31646d){return _0x381d07[_0xa55c('0xb')](_0x5d8e5a)[_0xa55c('0xd')](_0x31646d);}};}function respondWithFilteredResult(_0x70c2de,_0x3998f7){return function(_0x15eec8){if(_0x15eec8){var _0x5d47ff=typeof _0x3998f7['offset']===_0xa55c('0xe')&&typeof _0x3998f7['limit']==='undefined';var _0x59ea8d=_0x15eec8[_0xa55c('0xf')];var _0x3930e4=_0x5d47ff?0x0:_0x3998f7[_0xa55c('0x10')];var _0x938bd6=_0x5d47ff?_0x15eec8[_0xa55c('0xf')]:_0x3998f7[_0xa55c('0x10')]+_0x3998f7['limit'];var _0x3ccf65;if(_0x938bd6>=_0x59ea8d){_0x938bd6=_0x59ea8d;_0x3ccf65=0xc8;}else{_0x3ccf65=0xce;}_0x70c2de[_0xa55c('0xb')](_0x3ccf65);return _0x70c2de[_0xa55c('0x11')](_0xa55c('0x12'),_0x3930e4+'-'+_0x938bd6+'/'+_0x59ea8d)[_0xa55c('0xd')](_0x15eec8);}return null;};}function saveUpdates(_0x3ae86b){return function(_0x51590e){if(_0x51590e){return _0x51590e[_0xa55c('0x13')](_0x3ae86b)[_0xa55c('0x14')](function(_0x4cee3c){return _0x4cee3c;});}return null;};}function removeEntity(_0x3d4c9e){return function(_0x104a99){if(_0x104a99){return _0x104a99[_0xa55c('0x15')]()[_0xa55c('0x14')](function(){var _0x23a1ae=_0x104a99[_0xa55c('0x16')]({'plain':!![]});var _0x4c0daf=[{'name':'VoiceQueues','value':_0xa55c('0x17'),'ignore':![]},{'name':_0xa55c('0x18'),'value':_0xa55c('0x19'),'ignore':![]}];var _0x4cfe10=_(_0x4c0daf)[_0xa55c('0x1a')](_0xa55c('0x1b'))['map'](_0xa55c('0x1c'))[_0xa55c('0x1c')]();if(_[_0xa55c('0x1d')](_0x4cfe10,_0x23a1ae[_0xa55c('0x1e')])){return;}var _0x234372=_['find'](_0x4c0daf,[_0xa55c('0x1c'),_0x23a1ae['type']])['name'];return db['UserProfileResource'][_0xa55c('0x15')]({'where':{'type':_0x234372,'resourceId':_0x23a1ae['id']}})['then'](function(){return _0x104a99;});})[_0xa55c('0x14')](function(){_0x3d4c9e[_0xa55c('0xb')](0xcc)[_0xa55c('0xc')]();});}};}function handleEntityNotFound(_0xf0e574){return function(_0x2313a9){if(!_0x2313a9){_0xf0e574[_0xa55c('0x1f')](0x194);}return _0x2313a9;};}function handleError(_0x1da633,_0x11e7f7){_0x11e7f7=_0x11e7f7||0x1f4;return function(_0x192df2){logger[_0xa55c('0x20')](_0x192df2[_0xa55c('0x21')]);if(_0x192df2['name']){delete _0x192df2[_0xa55c('0x22')];}_0x1da633[_0xa55c('0xb')](_0x11e7f7)[_0xa55c('0x23')](_0x192df2);};}exports[_0xa55c('0x24')]=function(_0x5d940d,_0x1377b0){var _0x22f6b6={};var _0x1b8388={'count':0x0,'rows':[]};var _0x201941=_[_0xa55c('0x25')](db[_0xa55c('0x26')]['rawAttributes'],function(_0x23e698){return{'name':_0x23e698['fieldName'],'type':_0x23e698[_0xa55c('0x1e')][_0xa55c('0x27')]};});_0x22f6b6=qs[_0xa55c('0x28')](_0x201941,_0x5d940d);var _0x223813={'where':_0x22f6b6['where']};return db[_0xa55c('0x26')][_0xa55c('0xf')](_0x223813)[_0xa55c('0x14')](function(_0x20da31){_0x1b8388[_0xa55c('0xf')]=_0x20da31;_0x22f6b6[_0xa55c('0x29')]=qs[_0xa55c('0x29')](_0x5d940d[_0xa55c('0x2a')]);return db[_0xa55c('0x26')][_0xa55c('0x2b')](_0x22f6b6);})[_0xa55c('0x14')](function(_0x4eb7c4){_0x1b8388['rows']=_0x4eb7c4;return _0x1b8388;})[_0xa55c('0x14')](respondWithFilteredResult(_0x1377b0,_0x22f6b6))[_0xa55c('0x2c')](handleError(_0x1377b0,null));};exports['show']=function(_0x30fadd,_0x2f0110){var _0x2e9623={'raw':![],'where':{'id':_0x30fadd[_0xa55c('0x2d')]['id']}},_0x1839ac={};_0x1839ac[_0xa55c('0x2e')]=_[_0xa55c('0x2f')](db[_0xa55c('0x26')][_0xa55c('0x30')]);_0x1839ac['query']=_['keys'](_0x30fadd['query']);_0x1839ac[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x1839ac[_0xa55c('0x2e')],_0x1839ac['query']);_0x2e9623[_0xa55c('0x33')]=_['intersection'](_0x1839ac[_0xa55c('0x2e')],qs['fields'](_0x30fadd[_0xa55c('0x2a')][_0xa55c('0x34')]));_0x2e9623[_0xa55c('0x33')]=_0x2e9623['attributes'][_0xa55c('0x35')]?_0x2e9623[_0xa55c('0x33')]:_0x1839ac['model'];if(_0x30fadd[_0xa55c('0x2a')][_0xa55c('0x36')]){_0x2e9623['include']=[{'all':!![]}];}_0x2e9623=_['merge']({},_0x2e9623,_0x30fadd[_0xa55c('0x37')]);return db['VoiceQueue'][_0xa55c('0x38')](_0x2e9623)[_0xa55c('0x14')](handleEntityNotFound(_0x2f0110,null))['then'](respondWithResult(_0x2f0110,null))['catch'](handleError(_0x2f0110,null));};exports['create']=function(_0x4de781,_0x3b3308){return db[_0xa55c('0x26')][_0xa55c('0x39')](_0x4de781[_0xa55c('0x3a')],{})[_0xa55c('0x14')](function(_0x56d17c){var _0x3d52d8=_0x4de781[_0xa55c('0x3b')][_0xa55c('0x16')]({'plain':!![]});if(!_0x3d52d8)throw new Error(_0xa55c('0x3c'));if(_0x3d52d8[_0xa55c('0x3d')]===_0xa55c('0x3b')){var _0x554620=_0x56d17c[_0xa55c('0x16')]({'plain':!![]});var _0x5ee63d=[{'name':'VoiceQueues','value':_0xa55c('0x17')},{'name':_0xa55c('0x18'),'value':'outbound'}];var _0x2bd98b=_['find'](_0x5ee63d,['value',_0x554620[_0xa55c('0x1e')]])[_0xa55c('0x22')];return db[_0xa55c('0x3e')]['find']({'where':{'name':_0x2bd98b,'userProfileId':_0x3d52d8[_0xa55c('0x3f')]},'raw':!![]})[_0xa55c('0x14')](function(_0x5d9d5d){if(_0x5d9d5d&&_0x5d9d5d[_0xa55c('0x40')]===0x0){return db['UserProfileResource'][_0xa55c('0x39')]({'name':_0x554620[_0xa55c('0x22')],'resourceId':_0x554620['id'],'type':_0x5d9d5d['name'],'sectionId':_0x5d9d5d['id']},{})[_0xa55c('0x14')](function(){return _0x56d17c;});}else{return _0x56d17c;}})[_0xa55c('0x2c')](function(_0x5d834d){logger[_0xa55c('0x20')](_0xa55c('0x41'),_0x5d834d);throw _0x5d834d;});}return _0x56d17c;})[_0xa55c('0x14')](respondWithResult(_0x3b3308,0xc9))['catch'](handleError(_0x3b3308,null));};exports[_0xa55c('0x42')]=function(_0x582901,_0x2f9717){var _0x3a8af4={'where':{'id':_0x582901['params']['id']}},_0x451269={};_0x451269[_0xa55c('0x2e')]=_[_0xa55c('0x2f')](db['VoiceQueue'][_0xa55c('0x30')]);_0x3a8af4[_0xa55c('0x33')]=_['intersection'](_0x451269[_0xa55c('0x2e')],qs[_0xa55c('0x34')](_0x582901['query'][_0xa55c('0x34')]));_0x3a8af4[_0xa55c('0x33')]=_0x3a8af4[_0xa55c('0x33')][_0xa55c('0x35')]?_0x3a8af4['attributes']:_0x451269[_0xa55c('0x2e')];if(_0x582901['query'][_0xa55c('0x36')]){_0x3a8af4[_0xa55c('0x29')]=[{'all':!![]}];}_0x3a8af4=_[_0xa55c('0x43')]({},_0x3a8af4,_0x582901['options']);return db[_0xa55c('0x26')][_0xa55c('0x38')](_0x3a8af4)['then'](handleEntityNotFound(_0x2f9717,null))[_0xa55c('0x14')](function(_0x34de95){if(_0x34de95){var _0x3822b7=_0x34de95[_0xa55c('0x16')]({'plain':!![]});_0x3822b7=qs[_0xa55c('0x44')](_0x3822b7,['id',_0xa55c('0x45'),_0xa55c('0x46')]);_0x582901[_0xa55c('0x3a')]=_[_0xa55c('0x44')](_0x582901[_0xa55c('0x3a')],['id','createdAt',_0xa55c('0x46')]);return db[_0xa55c('0x26')][_0xa55c('0x39')](_['merge'](_0x3822b7,_0x582901[_0xa55c('0x3a')]),{'include':_0x582901[_0xa55c('0x2a')]['includeAll']?[{'all':!![]}]:undefined})[_0xa55c('0x14')](function(_0x4fa412){var _0x2b6a0e=_0x582901[_0xa55c('0x3b')][_0xa55c('0x16')]({'plain':!![]});if(!_0x2b6a0e)throw new Error(_0xa55c('0x3c'));if(_0x2b6a0e[_0xa55c('0x3d')]==='user'){var _0x44b7c1=_0x4fa412[_0xa55c('0x16')]({'plain':!![]});var _0x4b85cc=[{'name':_0xa55c('0x47'),'value':_0xa55c('0x17')},{'name':_0xa55c('0x18'),'value':_0xa55c('0x19')}];var _0x50176b=_['find'](_0x4b85cc,[_0xa55c('0x1c'),_0x44b7c1[_0xa55c('0x1e')]])[_0xa55c('0x22')];return db[_0xa55c('0x3e')]['find']({'where':{'name':_0x50176b,'userProfileId':_0x2b6a0e[_0xa55c('0x3f')]},'raw':!![]})['then'](function(_0x2742e4){if(_0x2742e4&&_0x2742e4[_0xa55c('0x40')]===0x0){return db[_0xa55c('0x48')][_0xa55c('0x39')]({'name':_0x44b7c1[_0xa55c('0x22')],'resourceId':_0x44b7c1['id'],'type':_0x2742e4['name'],'sectionId':_0x2742e4['id']},{})[_0xa55c('0x14')](function(){return _0x4fa412;});}else{return _0x4fa412;}})['catch'](function(_0x23f67f){logger[_0xa55c('0x20')](_0xa55c('0x41'),_0x23f67f);throw _0x23f67f;});}return _0x4fa412;});}})[_0xa55c('0x14')](respondWithResult(_0x2f9717,0xc9))[_0xa55c('0x2c')](handleError(_0x2f9717,null));};exports[_0xa55c('0x13')]=function(_0x5d14e0,_0x53e2be){if(_0x5d14e0[_0xa55c('0x3a')]['id']){delete _0x5d14e0[_0xa55c('0x3a')]['id'];}return db[_0xa55c('0x26')][_0xa55c('0x38')]({'where':{'id':_0x5d14e0[_0xa55c('0x2d')]['id']}})['then'](handleEntityNotFound(_0x53e2be,null))[_0xa55c('0x14')](saveUpdates(_0x5d14e0[_0xa55c('0x3a')],null))[_0xa55c('0x14')](respondWithResult(_0x53e2be,null))[_0xa55c('0x2c')](handleError(_0x53e2be,null));};exports[_0xa55c('0x15')]=function(_0x493f51,_0xdd92c1){return db[_0xa55c('0x26')][_0xa55c('0x38')]({'where':{'id':_0x493f51[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0xdd92c1,null))['then'](removeEntity(_0xdd92c1,null))[_0xa55c('0x2c')](handleError(_0xdd92c1,null));};exports['getHoppers']=function(_0x2e482a,_0x5e3a28){var _0x3495a7={'raw':![],'where':{}};var _0x5a8897={};var _0x34edc5={'count':0x0,'rows':[]};return db[_0xa55c('0x26')][_0xa55c('0x49')]({'where':{'id':_0x2e482a[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x5e3a28,null))[_0xa55c('0x14')](function(_0xafaf8c){if(_0xafaf8c){_0x5a8897[_0xa55c('0x2e')]=_[_0xa55c('0x2f')](db[_0xa55c('0x4a')]['rawAttributes']);_0x5a8897[_0xa55c('0x2a')]=_[_0xa55c('0x2f')](_0x2e482a['query']);_0x5a8897[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x5a8897[_0xa55c('0x2e')],_0x5a8897[_0xa55c('0x2a')]);_0x3495a7[_0xa55c('0x33')]=_[_0xa55c('0x32')](_0x5a8897[_0xa55c('0x2e')],qs[_0xa55c('0x34')](_0x2e482a['query'][_0xa55c('0x34')]));_0x3495a7[_0xa55c('0x33')]=_0x3495a7[_0xa55c('0x33')][_0xa55c('0x35')]?_0x3495a7[_0xa55c('0x33')]:_0x5a8897[_0xa55c('0x2e')];if(!_0x2e482a[_0xa55c('0x2a')][_0xa55c('0x4b')](_0xa55c('0x4c'))){_0x3495a7['limit']=qs[_0xa55c('0x4d')](_0x2e482a[_0xa55c('0x2a')][_0xa55c('0x4d')]);_0x3495a7[_0xa55c('0x10')]=qs[_0xa55c('0x10')](_0x2e482a[_0xa55c('0x2a')][_0xa55c('0x10')]);}_0x3495a7[_0xa55c('0x4e')]=qs[_0xa55c('0x4f')](_0x2e482a[_0xa55c('0x2a')][_0xa55c('0x4f')]);_0x3495a7['where']=qs[_0xa55c('0x31')](_['pick'](_0x2e482a[_0xa55c('0x2a')],_0x5a8897[_0xa55c('0x31')]));_0x3495a7[_0xa55c('0x50')]['VoiceQueueId']=_0xafaf8c['id'];if(_0x2e482a['query'][_0xa55c('0x1a')]){_0x3495a7[_0xa55c('0x50')]=_[_0xa55c('0x43')](_0x3495a7[_0xa55c('0x50')],{'$or':_['map'](_0x3495a7[_0xa55c('0x33')],function(_0xd02251){var _0x8ea1c6={};_0x8ea1c6[_0xd02251]={'$like':'%'+_0x2e482a[_0xa55c('0x2a')][_0xa55c('0x1a')]+'%'};return _0x8ea1c6;})});}_0x3495a7=_['merge']({},_0x3495a7,_0x2e482a['options']);return db[_0xa55c('0x4a')][_0xa55c('0xf')]({'where':_0x3495a7[_0xa55c('0x50')]})[_0xa55c('0x14')](function(_0x1af9d5){_0x34edc5['count']=_0x1af9d5;if(_0x2e482a[_0xa55c('0x2a')][_0xa55c('0x36')]){_0x3495a7['include']=[{'all':!![]}];}return db[_0xa55c('0x4a')][_0xa55c('0x2b')](_0x3495a7);})[_0xa55c('0x14')](function(_0x4dcb93){_0x34edc5[_0xa55c('0x51')]=_0x4dcb93;return _0x34edc5;});}})[_0xa55c('0x14')](respondWithFilteredResult(_0x5e3a28,_0x3495a7))[_0xa55c('0x2c')](handleError(_0x5e3a28,null));};exports[_0xa55c('0x52')]=function(_0x232143,_0x506f74){var _0x25bd5b={'raw':!![],'where':{}};var _0x2e2cf6={};var _0x4bf233={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xa55c('0x49')]({'where':{'id':_0x232143['params']['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x506f74,null))[_0xa55c('0x14')](function(_0x2f13db){if(_0x2f13db){_0x2e2cf6[_0xa55c('0x2e')]=_[_0xa55c('0x2f')](db[_0xa55c('0x53')][_0xa55c('0x30')]);_0x2e2cf6[_0xa55c('0x2a')]=_[_0xa55c('0x2f')](_0x232143['query']);_0x2e2cf6[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x2e2cf6[_0xa55c('0x2e')],_0x2e2cf6[_0xa55c('0x2a')]);_0x25bd5b['attributes']=_[_0xa55c('0x32')](_0x2e2cf6[_0xa55c('0x2e')],qs[_0xa55c('0x34')](_0x232143[_0xa55c('0x2a')]['fields']));_0x25bd5b['attributes']=_0x25bd5b[_0xa55c('0x33')][_0xa55c('0x35')]?_0x25bd5b[_0xa55c('0x33')]:_0x2e2cf6[_0xa55c('0x2e')];if(!_0x232143['query']['hasOwnProperty'](_0xa55c('0x4c'))){_0x25bd5b[_0xa55c('0x4d')]=qs[_0xa55c('0x4d')](_0x232143[_0xa55c('0x2a')][_0xa55c('0x4d')]);_0x25bd5b[_0xa55c('0x10')]=qs[_0xa55c('0x10')](_0x232143['query'][_0xa55c('0x10')]);}_0x25bd5b['order']=qs[_0xa55c('0x4f')](_0x232143['query'][_0xa55c('0x4f')]);_0x25bd5b[_0xa55c('0x50')]=qs[_0xa55c('0x31')](_[_0xa55c('0x54')](_0x232143[_0xa55c('0x2a')],_0x2e2cf6[_0xa55c('0x31')]));_0x25bd5b[_0xa55c('0x50')][_0xa55c('0x55')]=_0x2f13db['id'];if(_0x232143['query']['filter']){_0x25bd5b[_0xa55c('0x50')]=_[_0xa55c('0x43')](_0x25bd5b[_0xa55c('0x50')],{'$or':_[_0xa55c('0x25')](_0x25bd5b[_0xa55c('0x33')],function(_0x137728){var _0x47e8e2={};_0x47e8e2[_0x137728]={'$like':'%'+_0x232143[_0xa55c('0x2a')][_0xa55c('0x1a')]+'%'};return _0x47e8e2;})});}_0x25bd5b=_[_0xa55c('0x43')]({},_0x25bd5b,_0x232143[_0xa55c('0x37')]);return db[_0xa55c('0x53')][_0xa55c('0xf')]({'where':_0x25bd5b[_0xa55c('0x50')]})[_0xa55c('0x14')](function(_0x58b670){_0x4bf233[_0xa55c('0xf')]=_0x58b670;if(_0x232143[_0xa55c('0x2a')][_0xa55c('0x36')]){_0x25bd5b[_0xa55c('0x29')]=[{'all':!![]}];}return db[_0xa55c('0x53')]['findAll'](_0x25bd5b);})[_0xa55c('0x14')](function(_0x2ab1f2){_0x4bf233['rows']=_0x2ab1f2;return _0x4bf233;});}})['then'](respondWithFilteredResult(_0x506f74,_0x25bd5b))[_0xa55c('0x2c')](handleError(_0x506f74,null));};exports[_0xa55c('0x56')]=function(_0x5c2229,_0x559e71){var _0x579726={'raw':!![],'where':{}};var _0x5ab79e={};var _0xf8e295={'count':0x0,'rows':[]};return db[_0xa55c('0x26')][_0xa55c('0x49')]({'where':{'id':_0x5c2229[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x559e71,null))[_0xa55c('0x14')](function(_0x568a5b){if(_0x568a5b){_0x5ab79e[_0xa55c('0x2e')]=_[_0xa55c('0x2f')](db[_0xa55c('0x57')][_0xa55c('0x30')]);_0x5ab79e['query']=_[_0xa55c('0x2f')](_0x5c2229[_0xa55c('0x2a')]);_0x5ab79e[_0xa55c('0x31')]=_['intersection'](_0x5ab79e[_0xa55c('0x2e')],_0x5ab79e['query']);_0x579726['attributes']=_[_0xa55c('0x32')](_0x5ab79e[_0xa55c('0x2e')],qs[_0xa55c('0x34')](_0x5c2229[_0xa55c('0x2a')][_0xa55c('0x34')]));_0x579726[_0xa55c('0x33')]=_0x579726[_0xa55c('0x33')]['length']?_0x579726['attributes']:_0x5ab79e[_0xa55c('0x2e')];if(!_0x5c2229[_0xa55c('0x2a')][_0xa55c('0x4b')](_0xa55c('0x4c'))){_0x579726[_0xa55c('0x4d')]=qs[_0xa55c('0x4d')](_0x5c2229[_0xa55c('0x2a')][_0xa55c('0x4d')]);_0x579726[_0xa55c('0x10')]=qs[_0xa55c('0x10')](_0x5c2229['query'][_0xa55c('0x10')]);}_0x579726[_0xa55c('0x4e')]=qs['sort'](_0x5c2229[_0xa55c('0x2a')]['sort']);_0x579726[_0xa55c('0x50')]=qs[_0xa55c('0x31')](_[_0xa55c('0x54')](_0x5c2229[_0xa55c('0x2a')],_0x5ab79e[_0xa55c('0x31')]));_0x579726['where'][_0xa55c('0x55')]=_0x568a5b['id'];if(_0x5c2229[_0xa55c('0x2a')][_0xa55c('0x1a')]){_0x579726[_0xa55c('0x50')]=_[_0xa55c('0x43')](_0x579726[_0xa55c('0x50')],{'$or':_[_0xa55c('0x25')](_0x579726['attributes'],function(_0x49a307){var _0x5c08e5={};_0x5c08e5[_0x49a307]={'$like':'%'+_0x5c2229[_0xa55c('0x2a')]['filter']+'%'};return _0x5c08e5;})});}_0x579726=_[_0xa55c('0x43')]({},_0x579726,_0x5c2229[_0xa55c('0x37')]);return db[_0xa55c('0x57')][_0xa55c('0xf')]({'where':_0x579726[_0xa55c('0x50')]})['then'](function(_0x253d7a){_0xf8e295['count']=_0x253d7a;if(_0x5c2229[_0xa55c('0x2a')][_0xa55c('0x36')]){_0x579726[_0xa55c('0x29')]=[{'all':!![]}];}return db[_0xa55c('0x57')]['findAll'](_0x579726);})[_0xa55c('0x14')](function(_0x46f8ab){_0xf8e295[_0xa55c('0x51')]=_0x46f8ab;return _0xf8e295;});}})[_0xa55c('0x14')](respondWithFilteredResult(_0x559e71,_0x579726))[_0xa55c('0x2c')](handleError(_0x559e71,null));};exports[_0xa55c('0x58')]=function(_0x270bd0,_0x472c73){var _0x5bae40={'raw':!![],'where':{}};var _0x147962={};var _0x1538dc={'count':0x0,'rows':[]};return db[_0xa55c('0x26')][_0xa55c('0x49')]({'where':{'id':_0x270bd0[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x472c73,null))['then'](function(_0x46124b){if(_0x46124b){_0x147962['model']=_[_0xa55c('0x2f')](db['CmHopperBlack'][_0xa55c('0x30')]);_0x147962[_0xa55c('0x2a')]=_[_0xa55c('0x2f')](_0x270bd0['query']);_0x147962[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x147962[_0xa55c('0x2e')],_0x147962['query']);_0x5bae40[_0xa55c('0x33')]=_['intersection'](_0x147962[_0xa55c('0x2e')],qs[_0xa55c('0x34')](_0x270bd0['query'][_0xa55c('0x34')]));_0x5bae40['attributes']=_0x5bae40[_0xa55c('0x33')][_0xa55c('0x35')]?_0x5bae40['attributes']:_0x147962[_0xa55c('0x2e')];if(!_0x270bd0[_0xa55c('0x2a')]['hasOwnProperty'](_0xa55c('0x4c'))){_0x5bae40[_0xa55c('0x4d')]=qs['limit'](_0x270bd0[_0xa55c('0x2a')]['limit']);_0x5bae40['offset']=qs[_0xa55c('0x10')](_0x270bd0[_0xa55c('0x2a')][_0xa55c('0x10')]);}_0x5bae40[_0xa55c('0x4e')]=qs['sort'](_0x270bd0[_0xa55c('0x2a')]['sort']);_0x5bae40[_0xa55c('0x50')]=qs['filters'](_['pick'](_0x270bd0['query'],_0x147962[_0xa55c('0x31')]));_0x5bae40['where']['VoiceQueueId']=_0x46124b['id'];if(_0x270bd0[_0xa55c('0x2a')][_0xa55c('0x1a')]){_0x5bae40[_0xa55c('0x50')]=_[_0xa55c('0x43')](_0x5bae40[_0xa55c('0x50')],{'$or':_[_0xa55c('0x25')](_0x5bae40[_0xa55c('0x33')],function(_0x9225d9){var _0x465801={};_0x465801[_0x9225d9]={'$like':'%'+_0x270bd0[_0xa55c('0x2a')][_0xa55c('0x1a')]+'%'};return _0x465801;})});}_0x5bae40=_[_0xa55c('0x43')]({},_0x5bae40,_0x270bd0[_0xa55c('0x37')]);return db['CmHopperBlack'][_0xa55c('0xf')]({'where':_0x5bae40['where']})['then'](function(_0x5c8003){_0x1538dc[_0xa55c('0xf')]=_0x5c8003;if(_0x270bd0['query'][_0xa55c('0x36')]){_0x5bae40['include']=[{'all':!![]}];}return db[_0xa55c('0x59')]['findAll'](_0x5bae40);})['then'](function(_0xfb1954){_0x1538dc['rows']=_0xfb1954;return _0x1538dc;});}})['then'](respondWithFilteredResult(_0x472c73,_0x5bae40))[_0xa55c('0x2c')](handleError(_0x472c73,null));};exports[_0xa55c('0x5a')]=function(_0x4ba496,_0x11349d){var _0x55caeb={};var _0x294e54={};var _0x403dff;var _0x1dcd8a;return db['VoiceQueue']['findOne']({'where':{'id':_0x4ba496[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x11349d,null))[_0xa55c('0x14')](function(_0xfda07f){if(_0xfda07f){_0x403dff=_0xfda07f;_0x294e54[_0xa55c('0x2e')]=_[_0xa55c('0x2f')](db[_0xa55c('0x5b')][_0xa55c('0x30')]);_0x294e54['query']=_[_0xa55c('0x2f')](_0x4ba496[_0xa55c('0x2a')]);_0x294e54[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x294e54[_0xa55c('0x2e')],_0x294e54[_0xa55c('0x2a')]);_0x55caeb[_0xa55c('0x33')]=_[_0xa55c('0x32')](_0x294e54[_0xa55c('0x2e')],qs['fields'](_0x4ba496[_0xa55c('0x2a')][_0xa55c('0x34')]));_0x55caeb[_0xa55c('0x33')]=_0x55caeb['attributes']['length']?_0x55caeb['attributes']:_0x294e54[_0xa55c('0x2e')];_0x55caeb['order']=qs[_0xa55c('0x4f')](_0x4ba496[_0xa55c('0x2a')][_0xa55c('0x4f')]);_0x55caeb[_0xa55c('0x50')]=qs[_0xa55c('0x31')](_[_0xa55c('0x54')](_0x4ba496[_0xa55c('0x2a')],_0x294e54[_0xa55c('0x31')]));if(_0x4ba496[_0xa55c('0x2a')][_0xa55c('0x1a')]){_0x55caeb[_0xa55c('0x50')]=_[_0xa55c('0x43')](_0x55caeb[_0xa55c('0x50')],{'$or':_[_0xa55c('0x25')](_0x55caeb[_0xa55c('0x33')],function(_0x1c7aec){var _0xf0bcac={};_0xf0bcac[_0x1c7aec]={'$like':'%'+_0x4ba496[_0xa55c('0x2a')][_0xa55c('0x1a')]+'%'};return _0xf0bcac;})});}_0x55caeb=_[_0xa55c('0x43')]({},_0x55caeb,_0x4ba496[_0xa55c('0x37')]);return _0x403dff[_0xa55c('0x5a')](_0x55caeb);}})[_0xa55c('0x14')](function(_0x168b3f){if(_0x168b3f){_0x1dcd8a=_0x168b3f['length'];if(!_0x4ba496[_0xa55c('0x2a')][_0xa55c('0x4b')]('nolimit')){_0x55caeb[_0xa55c('0x4d')]=qs[_0xa55c('0x4d')](_0x4ba496[_0xa55c('0x2a')][_0xa55c('0x4d')]);_0x55caeb[_0xa55c('0x10')]=qs['offset'](_0x4ba496[_0xa55c('0x2a')]['offset']);}return _0x403dff['getTeams'](_0x55caeb);}})[_0xa55c('0x14')](function(_0x1c9903){if(_0x1c9903){return _0x1c9903?{'count':_0x1dcd8a,'rows':_0x1c9903}:null;}})[_0xa55c('0x14')](respondWithResult(_0x11349d,null))[_0xa55c('0x2c')](handleError(_0x11349d,null));};exports[_0xa55c('0x5c')]=function(_0x23b513,_0x1e4464){var _0xd9f634=_0x23b513[_0xa55c('0x3a')][_0xa55c('0x5d')];var _0x1036b3=_[_0xa55c('0x25')](_0xd9f634,'id');return db[_0xa55c('0x5b')][_0xa55c('0x2b')]({'where':{'id':_0x1036b3},'attributes':['id'],'include':[{'model':db[_0xa55c('0x5e')],'as':_0xa55c('0x5f'),'attributes':['id',_0xa55c('0x22'),_0xa55c('0x60'),_0xa55c('0x61'),'interface'],'raw':!![]}]})['then'](function(_0x55a98d){if(_0x55a98d){var _0x200c28=_[_0xa55c('0x62')](_0x55a98d,function(_0x5e41b3){var _0x45b329=_0x5e41b3['get']({'plain':!![]});_0x45b329[_0xa55c('0x5f')]['forEach'](function(_0x3060f2){_0x3060f2[_0xa55c('0x63')]=_[_0xa55c('0x38')](_0xd9f634,{'id':_0x45b329['id']})[_0xa55c('0x63')];});return _0x45b329[_0xa55c('0x5f')];});return db[_0xa55c('0x26')][_0xa55c('0x38')]({'where':{'id':_0x23b513[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](function(_0x665054){return db[_0xa55c('0x64')]['transaction'](function(_0x59f3a4){return _0x665054[_0xa55c('0x5c')](_0x1036b3,{'transaction':_0x59f3a4})['then'](function(){return BPromise[_0xa55c('0x65')](_0xd9f634,function(_0x5447a4){return db[_0xa55c('0x66')][_0xa55c('0x67')]({'TeamId':_0x5447a4['id'],'VoiceQueueId':_0x23b513[_0xa55c('0x2d')]['id'],'penalty':_0x5447a4['penalty']},{'transaction':_0x59f3a4});});})[_0xa55c('0x14')](function(){return BPromise[_0xa55c('0x65')](_0x200c28,function(_0x130c5f){return db['UserVoiceQueue'][_0xa55c('0x68')]({'where':{'UserId':_0x130c5f['id'],'VoiceQueueId':_0x23b513['params']['id']},'defaults':{'penalty':_0x130c5f[_0xa55c('0x63')]},'transaction':_0x59f3a4});});})['then'](function(){return BPromise['each'](_[_0xa55c('0x1a')](_0x200c28,{'online':!![]}),function(_0x40e121){return db[_0xa55c('0x69')]['upsert']({'membername':_0x40e121[_0xa55c('0x22')],'UserId':_0x40e121['id'],'queue_name':_0x665054[_0xa55c('0x22')],'VoiceQueueId':_0x665054['id'],'interface':_[_0xa55c('0x6a')](_0x40e121[_0xa55c('0x6b')])?util[_0xa55c('0x6c')](_0xa55c('0x6d'),_0x40e121[_0xa55c('0x22')]):_0x40e121[_0xa55c('0x6b')],'paused':_0x40e121['voicePause']||![],'penalty':_0x40e121[_0xa55c('0x63')]},{'transaction':_0x59f3a4});});})[_0xa55c('0x14')](function(){_0x200c28[_0xa55c('0x6e')](function(_0x151533){socket[_0xa55c('0x6f')](_0xa55c('0x70'),{'UserId':_0x151533['id'],'VoiceQueueId':_0x665054['id']});});});});});}})[_0xa55c('0x14')](respondWithStatusCode(_0x1e4464,null))[_0xa55c('0x2c')](handleError(_0x1e4464,null));};exports[_0xa55c('0x71')]=function(_0x261087,_0x2ef9dd){return db['Team'][_0xa55c('0x2b')]({'where':{'id':_0x261087['query']['ids']},'attributes':['id'],'include':[{'model':db[_0xa55c('0x5e')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xa55c('0x14')](handleEntityNotFound(_0x2ef9dd,null))['then'](function(_0x302284){var _0x231499=_[_0xa55c('0x25')](_0x302284,'id');var _0x2d3e42=[];var _0x97275b=[];var _0x5c7c60=squel[_0xa55c('0x72')]();_0x5c7c60['field'](_0xa55c('0x73'))['from']('team_has_voice_queues','tq')[_0xa55c('0x74')](_0xa55c('0x75'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xa55c('0x50')](_0xa55c('0x76'),_0x261087[_0xa55c('0x2d')]['id']);for(var _0x485652=0x0;_0x485652<_0x302284['length'];_0x485652+=0x1){let _0x57a1fc=_0x302284[_0x485652];for(var _0x50018c=0x0;_0x50018c<_0x57a1fc[_0xa55c('0x5f')][_0xa55c('0x35')];_0x50018c+=0x1){let _0x4c77c4=_0x57a1fc[_0xa55c('0x5f')][_0x50018c];var _0x1322a0=_0x5c7c60[_0xa55c('0x42')]();_0x1322a0['where'](_0xa55c('0x77'),_0x4c77c4['id']);_0x97275b['push'](db['sequelize']['query'](_0x1322a0[_0xa55c('0x78')](),{'type':db['sequelize'][_0xa55c('0x79')]['SELECT']})[_0xa55c('0x14')](function(_0x21e529){if(_0x21e529[_0xa55c('0x35')]===0x1){return _0x4c77c4['id'];}else{var _0x5063e7=_[_0xa55c('0x7a')](_[_0xa55c('0x25')](_0x21e529,_0xa55c('0x7b')),function(_0x16401f){return _[_0xa55c('0x1d')](_0x231499,_0x16401f);});if(_0x5063e7){return _0x4c77c4['id'];}}}));}}return BPromise[_0xa55c('0x7c')](_0x97275b)[_0xa55c('0x14')](function(_0x34d755){_0x2d3e42=_(_0x2d3e42)[_0xa55c('0x7d')](_0x34d755)['compact']()[_0xa55c('0x1c')]();return db[_0xa55c('0x26')][_0xa55c('0x38')]({'where':{'id':_0x261087[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](function(_0x2c0b71){return db['sequelize'][_0xa55c('0x7e')](function(_0x5bae58){return _0x2c0b71[_0xa55c('0x71')](_0x261087[_0xa55c('0x2a')]['ids'],{'transaction':_0x5bae58})[_0xa55c('0x14')](function(){if(!_[_0xa55c('0x7f')](_0x2d3e42)){return _0x2c0b71['removeAgents'](_0x2d3e42,{'transaction':_0x5bae58})['then'](function(){return db[_0xa55c('0x69')][_0xa55c('0x15')]({'where':{'VoiceQueueId':_0x261087[_0xa55c('0x2d')]['id'],'UserId':_0x2d3e42},'transaction':_0x5bae58});});}})[_0xa55c('0x14')](function(){_0x2d3e42[_0xa55c('0x6e')](function(_0x1a335b){socket[_0xa55c('0x6f')](_0xa55c('0x80'),{'UserId':_0x1a335b,'VoiceQueueId':_0x2c0b71['id']});});});});});});})['then'](respondWithStatusCode(_0x2ef9dd,null))[_0xa55c('0x2c')](handleError(_0x2ef9dd,null));};exports[_0xa55c('0x81')]=function(_0xc8cd97,_0x21a206){var _0x29469d,_0x59a69d;return db[_0xa55c('0x26')]['find']({'where':{'id':_0xc8cd97['params']['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x21a206,null))[_0xa55c('0x14')](function(_0x6fcc){if(_0x6fcc){_0x59a69d=_0x6fcc;return _0x6fcc[_0xa55c('0x81')](_0xc8cd97['body'][_0xa55c('0x82')],_[_0xa55c('0x44')](_0xc8cd97[_0xa55c('0x3a')],[_0xa55c('0x82'),'id'])||{})[_0xa55c('0x83')](function(_0x4295c1){for(var _0x37f242=0x0;_0x37f242<_0xc8cd97[_0xa55c('0x3a')]['ids'][_0xa55c('0x35')];_0x37f242+=0x1){socket[_0xa55c('0x6f')](_0xa55c('0x70'),{'UserId':Number(_0xc8cd97[_0xa55c('0x3a')]['ids'][_0x37f242]),'VoiceQueueId':Number(_0xc8cd97[_0xa55c('0x2d')]['id'])});}return _0x4295c1;});}})[_0xa55c('0x14')](function(_0x65c752){_0x29469d=_0x65c752||[];if(_0x59a69d){return db['User'][_0xa55c('0x2b')]({'where':{'id':_0xc8cd97[_0xa55c('0x3a')][_0xa55c('0x82')]},'attributes':['id',_0xa55c('0x22'),_0xa55c('0x60'),_0xa55c('0x61'),_0xa55c('0x6b')],'raw':!![]});}})['then'](function(_0xcd4f3a){if(!_[_0xa55c('0x7f')](_0xcd4f3a)){var _0x496e8c=[];for(var _0x1c930b=0x0;_0x1c930b<_0xcd4f3a[_0xa55c('0x35')];_0x1c930b++){if(_0xcd4f3a[_0x1c930b][_0xa55c('0x60')]){_0x496e8c['push'](db['UserVoiceQueueRt']['upsert']({'membername':_0xcd4f3a[_0x1c930b][_0xa55c('0x22')],'UserId':_0xcd4f3a[_0x1c930b]['id'],'queue_name':_0x59a69d[_0xa55c('0x22')],'VoiceQueueId':_0x59a69d['id'],'interface':_['isNil'](_0xcd4f3a[_0x1c930b]['interface'])?util[_0xa55c('0x6c')](_0xa55c('0x6d'),_0xcd4f3a[_0x1c930b]['name']):_0xcd4f3a[_0x1c930b]['interface'],'paused':_0xcd4f3a[_0x1c930b][_0xa55c('0x61')]||![],'penalty':_0xc8cd97[_0xa55c('0x3a')][_0xa55c('0x63')]||0x0}));}}return BPromise['all'](_0x496e8c);}})['then'](function(){return _0x29469d;})[_0xa55c('0x14')](respondWithResult(_0x21a206,null))['catch'](handleError(_0x21a206,null));};exports[_0xa55c('0x84')]=function(_0xe0a356,_0x5a4e69){return db[_0xa55c('0x26')]['find']({'where':{'id':_0xe0a356['params']['id']}})['then'](handleEntityNotFound(_0x5a4e69,null))['then'](function(_0x527669){if(_0x527669){return _0x527669[_0xa55c('0x84')](_0xe0a356['query'][_0xa55c('0x82')])[_0xa55c('0x14')](function(){if(_[_0xa55c('0x85')](_0xe0a356['query'][_0xa55c('0x82')])){for(var _0x111ff8=0x0;_0x111ff8<_0xe0a356[_0xa55c('0x2a')][_0xa55c('0x82')][_0xa55c('0x35')];_0x111ff8+=0x1){socket[_0xa55c('0x6f')](_0xa55c('0x80'),{'UserId':Number(_0xe0a356[_0xa55c('0x2a')][_0xa55c('0x82')][_0x111ff8]),'VoiceQueueId':Number(_0xe0a356[_0xa55c('0x2d')]['id'])});}}else{socket['emit'](_0xa55c('0x80'),{'UserId':Number(_0xe0a356[_0xa55c('0x2a')]['ids']),'VoiceQueueId':Number(_0xe0a356[_0xa55c('0x2d')]['id'])});}});}})[_0xa55c('0x14')](function(_0x940871){return db[_0xa55c('0x69')][_0xa55c('0x15')]({'where':{'VoiceQueueId':_0xe0a356[_0xa55c('0x2d')]['id'],'UserId':_0xe0a356[_0xa55c('0x2a')][_0xa55c('0x82')]}})[_0xa55c('0x14')](function(){return _0x940871;});})[_0xa55c('0x14')](respondWithStatusCode(_0x5a4e69,null))[_0xa55c('0x2c')](handleError(_0x5a4e69,null));};exports[_0xa55c('0x86')]=function(_0x262d72,_0x228d12){var _0x16e229={};var _0x5c8713={};var _0x2d03b2;var _0x4b2e75;return db[_0xa55c('0x26')][_0xa55c('0x49')]({'where':{'id':_0x262d72[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x228d12,null))['then'](function(_0x537011){if(_0x537011){_0x2d03b2=_0x537011;_0x5c8713[_0xa55c('0x2e')]=_[_0xa55c('0x2f')](db['User'][_0xa55c('0x30')]);_0x5c8713[_0xa55c('0x2a')]=_[_0xa55c('0x2f')](_0x262d72['query']);_0x5c8713[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x5c8713[_0xa55c('0x2e')],_0x5c8713['query']);_0x16e229[_0xa55c('0x33')]=_['intersection'](_0x5c8713[_0xa55c('0x2e')],qs[_0xa55c('0x34')](_0x262d72[_0xa55c('0x2a')][_0xa55c('0x34')]));_0x16e229[_0xa55c('0x33')]=_0x16e229['attributes'][_0xa55c('0x35')]?_0x16e229[_0xa55c('0x33')]:_0x5c8713[_0xa55c('0x2e')];_0x16e229['order']=qs[_0xa55c('0x4f')](_0x262d72[_0xa55c('0x2a')][_0xa55c('0x4f')]);_0x16e229['where']=qs[_0xa55c('0x31')](_[_0xa55c('0x54')](_0x262d72[_0xa55c('0x2a')],_0x5c8713[_0xa55c('0x31')]));if(_0x262d72[_0xa55c('0x2a')][_0xa55c('0x1a')]){_0x16e229[_0xa55c('0x50')]=_['merge'](_0x16e229[_0xa55c('0x50')],{'$or':_[_0xa55c('0x25')](_0x16e229[_0xa55c('0x33')],function(_0x100ccb){var _0x531e60={};_0x531e60[_0x100ccb]={'$like':'%'+_0x262d72[_0xa55c('0x2a')][_0xa55c('0x1a')]+'%'};return _0x531e60;})});}_0x16e229=_[_0xa55c('0x43')]({},_0x16e229,_0x262d72[_0xa55c('0x37')]);return _0x2d03b2[_0xa55c('0x86')](_0x16e229);}})[_0xa55c('0x14')](function(_0x243cf3){if(_0x243cf3){_0x4b2e75=_0x243cf3['length'];if(!_0x262d72[_0xa55c('0x2a')][_0xa55c('0x4b')](_0xa55c('0x4c'))){_0x16e229[_0xa55c('0x4d')]=qs[_0xa55c('0x4d')](_0x262d72['query']['limit']);_0x16e229['offset']=qs[_0xa55c('0x10')](_0x262d72[_0xa55c('0x2a')][_0xa55c('0x10')]);}return _0x2d03b2[_0xa55c('0x86')](_0x16e229);}})[_0xa55c('0x14')](function(_0xb22076){if(_0xb22076){return _0xb22076?{'count':_0x4b2e75,'rows':_0xb22076}:null;}})[_0xa55c('0x14')](respondWithResult(_0x228d12,null))[_0xa55c('0x2c')](handleError(_0x228d12,null));};exports['getMembers']=function(_0x35c42c,_0x3b2174){var _0x35375e={};var _0x19a5f1={};var _0x3e7cfa;var _0xd511c0;return db['VoiceQueue'][_0xa55c('0x49')]({'where':{'id':_0x35c42c['params']['id']}})['then'](handleEntityNotFound(_0x3b2174,null))['then'](function(_0x58831d){if(_0x58831d){_0x3e7cfa=_0x58831d;_0x19a5f1[_0xa55c('0x2e')]=_[_0xa55c('0x2f')](db[_0xa55c('0x69')][_0xa55c('0x30')]);_0x19a5f1[_0xa55c('0x2a')]=_[_0xa55c('0x2f')](_0x35c42c[_0xa55c('0x2a')]);_0x19a5f1[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x19a5f1[_0xa55c('0x2e')],_0x19a5f1[_0xa55c('0x2a')]);_0x35375e['attributes']=_['intersection'](_0x19a5f1[_0xa55c('0x2e')],qs['fields'](_0x35c42c[_0xa55c('0x2a')][_0xa55c('0x34')]));_0x35375e[_0xa55c('0x33')]=_0x35375e[_0xa55c('0x33')][_0xa55c('0x35')]?_0x35375e[_0xa55c('0x33')]:_0x19a5f1[_0xa55c('0x2e')];_0x35375e[_0xa55c('0x4e')]=qs[_0xa55c('0x4f')](_0x35c42c['query'][_0xa55c('0x4f')]);_0x35375e[_0xa55c('0x50')]=qs['filters'](_['pick'](_0x35c42c[_0xa55c('0x2a')],_0x19a5f1[_0xa55c('0x31')]));if(_0x35c42c[_0xa55c('0x2a')]['filter']){_0x35375e[_0xa55c('0x50')]=_[_0xa55c('0x43')](_0x35375e[_0xa55c('0x50')],{'$or':_[_0xa55c('0x25')](_0x35375e['attributes'],function(_0x55459c){var _0x33d58c={};_0x33d58c[_0x55459c]={'$like':'%'+_0x35c42c['query']['filter']+'%'};return _0x33d58c;})});}_0x35375e=_[_0xa55c('0x43')]({},_0x35375e,_0x35c42c[_0xa55c('0x37')]);return _0x3e7cfa[_0xa55c('0x87')](_0x35375e);}})[_0xa55c('0x14')](function(_0x5184ea){if(_0x5184ea){_0xd511c0=_0x5184ea[_0xa55c('0x35')];if(!_0x35c42c[_0xa55c('0x2a')][_0xa55c('0x4b')](_0xa55c('0x4c'))){_0x35375e[_0xa55c('0x4d')]=qs['limit'](_0x35c42c[_0xa55c('0x2a')][_0xa55c('0x4d')]);_0x35375e[_0xa55c('0x10')]=qs[_0xa55c('0x10')](_0x35c42c[_0xa55c('0x2a')][_0xa55c('0x10')]);}return _0x3e7cfa[_0xa55c('0x87')](_0x35375e);}})['then'](function(_0x2d5e0e){return _0x2d5e0e?{'count':_0xd511c0,'rows':_0x2d5e0e}:null;})['then'](respondWithResult(_0x3b2174,null))[_0xa55c('0x2c')](handleError(_0x3b2174,null));};exports[_0xa55c('0x88')]=function(_0x3755a7,_0x50663f){var _0x50b42f={};var _0x307b39={};var _0x1319c6;var _0x536e1d;return db['VoiceQueue'][_0xa55c('0x49')]({'where':{'id':_0x3755a7[_0xa55c('0x2d')]['id']}})['then'](handleEntityNotFound(_0x50663f,null))[_0xa55c('0x14')](function(_0x568a42){if(_0x568a42){_0x1319c6=_0x568a42;_0x307b39[_0xa55c('0x2e')]=_[_0xa55c('0x2f')](db[_0xa55c('0x89')][_0xa55c('0x30')]);_0x307b39['query']=_[_0xa55c('0x2f')](_0x3755a7[_0xa55c('0x2a')]);_0x307b39[_0xa55c('0x31')]=_['intersection'](_0x307b39['model'],_0x307b39[_0xa55c('0x2a')]);_0x50b42f['attributes']=_['intersection'](_0x307b39[_0xa55c('0x2e')],qs[_0xa55c('0x34')](_0x3755a7[_0xa55c('0x2a')][_0xa55c('0x34')]));_0x50b42f[_0xa55c('0x33')]=_0x50b42f[_0xa55c('0x33')][_0xa55c('0x35')]?_0x50b42f[_0xa55c('0x33')]:_0x307b39[_0xa55c('0x2e')];_0x50b42f[_0xa55c('0x4e')]=qs['sort'](_0x3755a7['query'][_0xa55c('0x4f')]);_0x50b42f[_0xa55c('0x50')]=qs[_0xa55c('0x31')](_[_0xa55c('0x54')](_0x3755a7['query'],_0x307b39[_0xa55c('0x31')]));if(_0x3755a7[_0xa55c('0x2a')][_0xa55c('0x1a')]){_0x50b42f[_0xa55c('0x50')]=_['merge'](_0x50b42f[_0xa55c('0x50')],{'$or':_['map'](_0x50b42f['attributes'],function(_0x545806){var _0x4fbb59={};_0x4fbb59[_0x545806]={'$like':'%'+_0x3755a7[_0xa55c('0x2a')][_0xa55c('0x1a')]+'%'};return _0x4fbb59;})});}_0x50b42f=_['merge']({},_0x50b42f,_0x3755a7[_0xa55c('0x37')]);return _0x1319c6[_0xa55c('0x88')](_0x50b42f);}})[_0xa55c('0x14')](function(_0x3899bd){if(_0x3899bd){_0x536e1d=_0x3899bd[_0xa55c('0x35')];if(!_0x3755a7[_0xa55c('0x2a')]['hasOwnProperty'](_0xa55c('0x4c'))){_0x50b42f[_0xa55c('0x4d')]=qs[_0xa55c('0x4d')](_0x3755a7[_0xa55c('0x2a')]['limit']);_0x50b42f['offset']=qs['offset'](_0x3755a7[_0xa55c('0x2a')][_0xa55c('0x10')]);}return _0x1319c6[_0xa55c('0x88')](_0x50b42f);}})[_0xa55c('0x14')](function(_0x1205cb){if(_0x1205cb){return _0x1205cb?{'count':_0x536e1d,'rows':_0x1205cb}:null;}})[_0xa55c('0x14')](respondWithResult(_0x50663f,null))[_0xa55c('0x2c')](handleError(_0x50663f,null));};exports[_0xa55c('0x8a')]=function(_0x499008,_0x4ef239){var _0x3e3208=moment()[_0xa55c('0x6c')]('YYYY-MM-DD\x20HH:mm:ss');var _0x1e19d6,_0x286b33;return db['VoiceQueue']['find']({'where':{'id':_0x499008[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x4ef239,null))[_0xa55c('0x14')](function(_0x236015){if(_0x236015){_0x286b33=_0x236015;return _0x236015['addLists'](_0x499008['body'][_0xa55c('0x82')],_[_0xa55c('0x44')](_0x499008[_0xa55c('0x3a')],[_0xa55c('0x82'),'id'])||{});}return null;})[_0xa55c('0x83')](function(_0x18e4fd){var _0x185c5b;_0x1e19d6=_0x18e4fd||[];var _0x2511fe=[];if(_0x18e4fd){for(var _0x3ba948=0x0;_0x3ba948<_0x18e4fd[_0xa55c('0x35')];_0x3ba948+=0x1){var _0x5e83e9=_0x18e4fd[_0x3ba948][_0xa55c('0x16')]({'plain':!![]});_0x286b33['dialCheckDuplicateType']=_0x499008[_0xa55c('0x3a')][_0xa55c('0x8b')]?_0x499008[_0xa55c('0x3a')][_0xa55c('0x8b')]:_0x286b33[_0xa55c('0x8b')];switch(_0x286b33[_0xa55c('0x8b')]){case _0xa55c('0x8c'):_0x185c5b=squel[_0xa55c('0x8d')]()[_0xa55c('0x8e')](_0xa55c('0x8f'))[_0xa55c('0x90')]([_0xa55c('0x91'),_0xa55c('0x92'),'ContactId',_0xa55c('0x93'),_0xa55c('0x55'),'createdAt',_0xa55c('0x46')],squel[_0xa55c('0x72')]()[_0xa55c('0x94')]('phone',_0xa55c('0x91'))[_0xa55c('0x94')]('\x27'+_0x3e3208+'\x27','scheduledAt')[_0xa55c('0x94')]('id',_0xa55c('0x95'))['field'](_0x5e83e9[_0xa55c('0x96')]['toString'](),_0xa55c('0x93'))[_0xa55c('0x94')](_0x499008[_0xa55c('0x2d')]['id'][_0xa55c('0x78')](),_0xa55c('0x55'))[_0xa55c('0x94')]('\x27'+_0x3e3208+'\x27',_0xa55c('0x45'))[_0xa55c('0x94')]('\x27'+_0x3e3208+'\x27',_0xa55c('0x46'))[_0xa55c('0x97')](_0xa55c('0x98'))[_0xa55c('0x50')](_0xa55c('0x99'))[_0xa55c('0x50')](_0xa55c('0x9a'),_0x5e83e9[_0xa55c('0x96')]['toString']())[_0xa55c('0x50')]('phone\x20IS\x20NOT\x20NULL')[_0xa55c('0x50')](_0xa55c('0x9b'),squel[_0xa55c('0x72')]()['field'](_0xa55c('0x9c'))[_0xa55c('0x97')](_0xa55c('0x9d'))[_0xa55c('0x50')]('VoiceQueueId\x20=\x20?',_0x499008['params']['id'][_0xa55c('0x78')]()))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0xa55c('0x72')]()[_0xa55c('0x94')]('COALESCE(phone,\x27\x27)')['from']('cm_hopper')[_0xa55c('0x50')](_0xa55c('0x76'),_0x499008['params']['id'][_0xa55c('0x78')]())))[_0xa55c('0x78')]();break;case _0xa55c('0x9e'):_0x185c5b=squel[_0xa55c('0x8d')]()[_0xa55c('0x8e')](_0xa55c('0x8f'))[_0xa55c('0x90')]([_0xa55c('0x91'),_0xa55c('0x92'),_0xa55c('0x95'),_0xa55c('0x93'),_0xa55c('0x55'),'createdAt',_0xa55c('0x46')],squel[_0xa55c('0x72')]()[_0xa55c('0x94')](_0xa55c('0x91'),_0xa55c('0x91'))[_0xa55c('0x94')]('\x27'+_0x3e3208+'\x27',_0xa55c('0x92'))[_0xa55c('0x94')]('id',_0xa55c('0x95'))[_0xa55c('0x94')](_0x5e83e9['CmListId']['toString'](),_0xa55c('0x93'))[_0xa55c('0x94')](_0x499008[_0xa55c('0x2d')]['id'][_0xa55c('0x78')](),_0xa55c('0x55'))['field']('\x27'+_0x3e3208+'\x27',_0xa55c('0x45'))['field']('\x27'+_0x3e3208+'\x27','updatedAt')[_0xa55c('0x97')](_0xa55c('0x98'))[_0xa55c('0x50')](_0xa55c('0x99'))['where'](_0xa55c('0x9a'),_0x5e83e9[_0xa55c('0x96')][_0xa55c('0x78')]())[_0xa55c('0x50')]('phone\x20IS\x20NOT\x20NULL')[_0xa55c('0x50')](_0xa55c('0x9b'),squel[_0xa55c('0x72')]()[_0xa55c('0x94')](_0xa55c('0x9f'))[_0xa55c('0x97')](_0xa55c('0x8f'))[_0xa55c('0x50')](_0xa55c('0x76'),_0x499008[_0xa55c('0x2d')]['id']['toString']())))[_0xa55c('0x78')]();break;default:_0x185c5b=squel[_0xa55c('0x8d')]()[_0xa55c('0x8e')](_0xa55c('0x8f'))[_0xa55c('0x90')]([_0xa55c('0x91'),_0xa55c('0x92'),_0xa55c('0x95'),_0xa55c('0x93'),'VoiceQueueId',_0xa55c('0x45'),'updatedAt'],squel[_0xa55c('0x72')]()[_0xa55c('0x94')](_0xa55c('0x91'),_0xa55c('0x91'))[_0xa55c('0x94')]('\x27'+_0x3e3208+'\x27',_0xa55c('0x92'))[_0xa55c('0x94')]('id',_0xa55c('0x95'))[_0xa55c('0x94')](_0x5e83e9['CmListId']['toString'](),_0xa55c('0x93'))['field'](_0x499008[_0xa55c('0x2d')]['id'][_0xa55c('0x78')](),_0xa55c('0x55'))[_0xa55c('0x94')]('\x27'+_0x3e3208+'\x27','createdAt')[_0xa55c('0x94')]('\x27'+_0x3e3208+'\x27','updatedAt')[_0xa55c('0x97')](_0xa55c('0x98'))[_0xa55c('0x50')](_0xa55c('0x99'))[_0xa55c('0x50')](_0xa55c('0x9a'),_0x5e83e9[_0xa55c('0x96')][_0xa55c('0x78')]())[_0xa55c('0x50')]('phone\x20IS\x20NOT\x20NULL'))[_0xa55c('0x78')]();}_0x2511fe[_0xa55c('0xa0')](db[_0xa55c('0x64')]['query'](_0x185c5b));}return BPromise[_0xa55c('0x7c')](_0x2511fe);}})[_0xa55c('0x14')](function(){var _0x4457e9=[];var _0x456cb9=squel[_0xa55c('0x8d')]()[_0xa55c('0x8e')](_0xa55c('0xa1'))[_0xa55c('0x90')]([_0xa55c('0xa2'),_0xa55c('0x91'),'OrderBy',_0xa55c('0x45'),_0xa55c('0x46')],squel[_0xa55c('0x72')]()[_0xa55c('0x94')](_0xa55c('0xa3'))['field']('ci.item')['field']('ci.OrderBy+1')[_0xa55c('0x94')]('\x27'+_0x3e3208+'\x27','createdAt')[_0xa55c('0x94')]('\x27'+_0x3e3208+'\x27',_0xa55c('0x46'))[_0xa55c('0x97')](_0xa55c('0xa4'),'ci')[_0xa55c('0x74')](_0xa55c('0x8f'),'h',_0xa55c('0xa5'))[_0xa55c('0x50')](_0xa55c('0xa6'),_0x3e3208)[_0xa55c('0x50')](_0xa55c('0xa7'),'PHONE'))[_0xa55c('0x78')]();_0x4457e9[_0xa55c('0xa0')](db[_0xa55c('0x64')]['query'](_0x456cb9));return BPromise['all'](_0x4457e9);})['then'](function(){return _0x1e19d6;})[_0xa55c('0x14')](respondWithResult(_0x4ef239,null))[_0xa55c('0x2c')](handleError(_0x4ef239,null));};exports[_0xa55c('0xa8')]=function(_0x27cd1b,_0x3ed3a5){return db[_0xa55c('0x26')][_0xa55c('0x38')]({'where':{'id':_0x27cd1b[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x3ed3a5,null))[_0xa55c('0x14')](function(_0x3def57){if(_0x3def57){return _0x3def57[_0xa55c('0xa8')](_0x27cd1b[_0xa55c('0x2a')][_0xa55c('0x82')]);}})[_0xa55c('0x14')](function(_0x4f5f1a){if(_0x4f5f1a){return db[_0xa55c('0x4a')]['destroy']({'where':{'ListId':_0x27cd1b[_0xa55c('0x2a')][_0xa55c('0x82')],'VoiceQueueId':_0x27cd1b[_0xa55c('0x2d')]['id']}})['then'](function(){return _0x4f5f1a;});}})['then'](respondWithStatusCode(_0x3ed3a5,null))[_0xa55c('0x2c')](handleError(_0x3ed3a5,null));};exports[_0xa55c('0xa9')]=function(_0x30af02,_0x5ebd8a){var _0x2420da={};var _0x2a4b78={};var _0x1e4c2d;var _0x2bf777;return db[_0xa55c('0x26')][_0xa55c('0x49')]({'where':{'id':_0x30af02[_0xa55c('0x2d')]['id']}})['then'](handleEntityNotFound(_0x5ebd8a,null))[_0xa55c('0x14')](function(_0x266b12){if(_0x266b12){_0x1e4c2d=_0x266b12;_0x2a4b78[_0xa55c('0x2e')]=_['keys'](db[_0xa55c('0x89')]['rawAttributes']);_0x2a4b78[_0xa55c('0x2a')]=_[_0xa55c('0x2f')](_0x30af02['query']);_0x2a4b78[_0xa55c('0x31')]=_[_0xa55c('0x32')](_0x2a4b78[_0xa55c('0x2e')],_0x2a4b78['query']);_0x2420da[_0xa55c('0x33')]=_[_0xa55c('0x32')](_0x2a4b78['model'],qs['fields'](_0x30af02[_0xa55c('0x2a')][_0xa55c('0x34')]));_0x2420da[_0xa55c('0x33')]=_0x2420da[_0xa55c('0x33')][_0xa55c('0x35')]?_0x2420da['attributes']:_0x2a4b78[_0xa55c('0x2e')];_0x2420da['order']=qs['sort'](_0x30af02[_0xa55c('0x2a')][_0xa55c('0x4f')]);_0x2420da['where']=qs[_0xa55c('0x31')](_['pick'](_0x30af02[_0xa55c('0x2a')],_0x2a4b78[_0xa55c('0x31')]));if(_0x30af02['query'][_0xa55c('0x1a')]){_0x2420da[_0xa55c('0x50')]=_['merge'](_0x2420da[_0xa55c('0x50')],{'$or':_['map'](_0x2420da['attributes'],function(_0x37273b){var _0x1cd529={};_0x1cd529[_0x37273b]={'$like':'%'+_0x30af02[_0xa55c('0x2a')][_0xa55c('0x1a')]+'%'};return _0x1cd529;})});}_0x2420da=_[_0xa55c('0x43')]({},_0x2420da,_0x30af02[_0xa55c('0x37')]);return _0x1e4c2d[_0xa55c('0xa9')](_0x2420da);}})['then'](function(_0x27e791){if(_0x27e791){_0x2bf777=_0x27e791[_0xa55c('0x35')];if(!_0x30af02['query'][_0xa55c('0x4b')](_0xa55c('0x4c'))){_0x2420da['limit']=qs[_0xa55c('0x4d')](_0x30af02[_0xa55c('0x2a')][_0xa55c('0x4d')]);_0x2420da[_0xa55c('0x10')]=qs['offset'](_0x30af02[_0xa55c('0x2a')][_0xa55c('0x10')]);}return _0x1e4c2d[_0xa55c('0xa9')](_0x2420da);}})[_0xa55c('0x14')](function(_0x365331){if(_0x365331){return _0x365331?{'count':_0x2bf777,'rows':_0x365331}:null;}})[_0xa55c('0x14')](respondWithResult(_0x5ebd8a,null))['catch'](handleError(_0x5ebd8a,null));};exports[_0xa55c('0xaa')]=function(_0x4d7cd6,_0x1ca9bd){var _0x2bf932;return db['VoiceQueue']['find']({'where':{'id':_0x4d7cd6[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](handleEntityNotFound(_0x1ca9bd,null))[_0xa55c('0x14')](function(_0x3c9d2b){if(_0x3c9d2b){return _0x3c9d2b[_0xa55c('0xaa')](_0x4d7cd6[_0xa55c('0x3a')][_0xa55c('0x82')],_['omit'](_0x4d7cd6[_0xa55c('0x3a')],[_0xa55c('0x82'),'id'])||{});}return null;})[_0xa55c('0x83')](function(_0x158b01){var _0x19f576;_0x2bf932=_0x158b01||[];var _0x10da4b=[];if(_0x158b01){for(var _0x3320ab=0x0;_0x3320ab<_0x158b01[_0xa55c('0x35')];_0x3320ab+=0x1){var _0x298cf5=_0x158b01[_0x3320ab][_0xa55c('0x16')]({'plain':!![]});_0x19f576=squel[_0xa55c('0x8d')]()[_0xa55c('0x8e')](_0xa55c('0xab'))['fromQuery']([_0xa55c('0x91'),'ContactId',_0xa55c('0x93'),_0xa55c('0x55'),'createdAt',_0xa55c('0x46')],squel[_0xa55c('0x72')]()[_0xa55c('0x94')](_0xa55c('0x91'),_0xa55c('0x91'))['field']('id',_0xa55c('0x95'))[_0xa55c('0x94')](_0x298cf5[_0xa55c('0x96')]['toString'](),'ListId')['field'](_0x4d7cd6[_0xa55c('0x2d')]['id'][_0xa55c('0x78')](),'VoiceQueueId')[_0xa55c('0x94')](_0xa55c('0xac'),_0xa55c('0x45'))[_0xa55c('0x94')](_0xa55c('0xac'),'updatedAt')[_0xa55c('0x97')](_0xa55c('0x98'))[_0xa55c('0x50')](_0xa55c('0x99'))[_0xa55c('0x50')]('ListId\x20=\x20?',_0x298cf5['CmListId'][_0xa55c('0x78')]())[_0xa55c('0x50')](_0xa55c('0xad')))['toString']();_0x10da4b[_0xa55c('0xa0')](db[_0xa55c('0x64')][_0xa55c('0x2a')](_0x19f576));}return BPromise[_0xa55c('0x7c')](_0x10da4b);}})[_0xa55c('0x14')](function(){return _0x2bf932;})[_0xa55c('0x14')](respondWithResult(_0x1ca9bd,null))[_0xa55c('0x2c')](handleError(_0x1ca9bd,null));};exports[_0xa55c('0xae')]=function(_0x23862a,_0xb432d1){return db['VoiceQueue'][_0xa55c('0x38')]({'where':{'id':_0x23862a[_0xa55c('0x2d')]['id']}})['then'](handleEntityNotFound(_0xb432d1,null))[_0xa55c('0x14')](function(_0x5bc270){if(_0x5bc270){return _0x5bc270[_0xa55c('0xae')](_0x23862a[_0xa55c('0x2a')][_0xa55c('0x82')]);}})[_0xa55c('0x14')](function(_0x543b4a){if(_0x543b4a){return db[_0xa55c('0x59')]['destroy']({'where':{'ListId':_0x23862a[_0xa55c('0x2a')][_0xa55c('0x82')],'VoiceQueueId':_0x23862a[_0xa55c('0x2d')]['id']}})[_0xa55c('0x14')](function(){return _0x543b4a;});}})[_0xa55c('0x14')](respondWithStatusCode(_0xb432d1,null))['catch'](handleError(_0xb432d1,null));};
\ No newline at end of file
+var _0xf3cd=['CmHopperFinal','nolimit','getHopperBlacks','CmHopperBlack','getTeams','addTeams','User','online','flatMap','Agents','penalty','transaction','each','TeamVoiceQueue','findOrCreate','UserVoiceQueueRt','upsert','isNil','interface','SIP/%s','voicePause','forEach','emit','removeTeams','Team','ids','select','field','from','team_has_voice_queues','join','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','QueryTypes','all','union','removeAgents','userVoiceQueue:remove','addAgents','spread','isEmpty','getAgents','getMembers','getLists','CmList','format','YYYY-MM-DD\x20HH:mm:ss','addLists','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','scheduledAt','ContactId','ListId','phone','CmListId','toString','cm_contacts','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','cm_hopper_final','COALESCE(phone,\x27\x27)','onlyIfOpen','phone\x20NOT\x20IN\x20(?)','ListId\x20=\x20?','cm_hopper_additional_phones','CmHopperId','OrderBy','h.id','ci.OrderBy+1','cm_contact_has_items','h.scheduledat=?','ci.ItemClass=?','PHONE','removeLists','getBlackLists','addBlackLists','cm_hopper_black','NOW()','removeBlackLists','moment','bluebird','util','lodash','squel','ioredis','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','get','VoiceQueues','inbound','QueueCampaigns','filter','map','value','includes','type','name','UserProfileResource','VoiceQueue','fieldName','key','where','include','query','findAll','rows','catch','params','keys','filters','intersection','attributes','model','fields','length','includeAll','options','find','create','body','user','role','outbound','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','rawAttributes','merge','omit','updatedAt','createdAt','getHoppers','findOne','hasOwnProperty','order','sort','pick','VoiceQueueId','CmHopper','getHopperHistories','CmHopperHistory','getHopperFinals'];(function(_0x44d081,_0x2062d8){var _0x5cbc09=function(_0x3dbb68){while(--_0x3dbb68){_0x44d081['push'](_0x44d081['shift']());}};_0x5cbc09(++_0x2062d8);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x18a436,_0x1dbe06){_0x18a436=_0x18a436-0x0;var _0x5c2cf8=_0xf3cd[_0x18a436];return _0x5c2cf8;};'use strict';var moment=require(_0xdf3c('0x0'));var BPromise=require(_0xdf3c('0x1'));var util=require(_0xdf3c('0x2'));var _=require(_0xdf3c('0x3'));var squel=require(_0xdf3c('0x4'));var Redis=require(_0xdf3c('0x5'));var qs=require('../../components/parsers/qs');var logger=require(_0xdf3c('0x6'))(_0xdf3c('0x7'));var config=require(_0xdf3c('0x8'));var db=require('../../mysqldb')['db'];config[_0xdf3c('0x9')]=_[_0xdf3c('0xa')](config[_0xdf3c('0x9')],{'host':_0xdf3c('0xb'),'port':0x18eb});var socket=require(_0xdf3c('0xc'))(new Redis(config[_0xdf3c('0x9')]));require('./voiceQueue.socket')[_0xdf3c('0xd')](socket);function respondWithStatusCode(_0x52cf30,_0x52f855){_0x52f855=_0x52f855||0xcc;return function(_0x22d8ae){if(_0x22d8ae){return _0x52cf30[_0xdf3c('0xe')](_0x52f855);}return _0x52cf30['status'](_0x52f855)[_0xdf3c('0xf')]();};}function respondWithResult(_0x205f33,_0x2d420c){_0x2d420c=_0x2d420c||0xc8;return function(_0x21a6e5){if(_0x21a6e5){return _0x205f33[_0xdf3c('0x10')](_0x2d420c)[_0xdf3c('0x11')](_0x21a6e5);}};}function respondWithFilteredResult(_0xf7da9d,_0x32d2db){return function(_0x5e8925){if(_0x5e8925){var _0x1d483c=typeof _0x32d2db[_0xdf3c('0x12')]===_0xdf3c('0x13')&&typeof _0x32d2db[_0xdf3c('0x14')]==='undefined';var _0x2ae4ad=_0x5e8925[_0xdf3c('0x15')];var _0x13ea5f=_0x1d483c?0x0:_0x32d2db['offset'];var _0x18aafa=_0x1d483c?_0x5e8925[_0xdf3c('0x15')]:_0x32d2db[_0xdf3c('0x12')]+_0x32d2db[_0xdf3c('0x14')];var _0x21e587;if(_0x18aafa>=_0x2ae4ad){_0x18aafa=_0x2ae4ad;_0x21e587=0xc8;}else{_0x21e587=0xce;}_0xf7da9d[_0xdf3c('0x10')](_0x21e587);return _0xf7da9d[_0xdf3c('0x16')](_0xdf3c('0x17'),_0x13ea5f+'-'+_0x18aafa+'/'+_0x2ae4ad)[_0xdf3c('0x11')](_0x5e8925);}return null;};}function saveUpdates(_0x5d3991){return function(_0x54cdd4){if(_0x54cdd4){return _0x54cdd4[_0xdf3c('0x18')](_0x5d3991)[_0xdf3c('0x19')](function(_0xf1da1f){return _0xf1da1f;});}return null;};}function removeEntity(_0x18d4ec){return function(_0x1e2690){if(_0x1e2690){return _0x1e2690[_0xdf3c('0x1a')]()[_0xdf3c('0x19')](function(){var _0x3ee0af=_0x1e2690[_0xdf3c('0x1b')]({'plain':!![]});var _0x18fb5f=[{'name':_0xdf3c('0x1c'),'value':_0xdf3c('0x1d'),'ignore':![]},{'name':_0xdf3c('0x1e'),'value':'outbound','ignore':![]}];var _0x4d620f=_(_0x18fb5f)[_0xdf3c('0x1f')]('ignore')[_0xdf3c('0x20')](_0xdf3c('0x21'))[_0xdf3c('0x21')]();if(_[_0xdf3c('0x22')](_0x4d620f,_0x3ee0af[_0xdf3c('0x23')])){return;}var _0x36ba1c=_['find'](_0x18fb5f,[_0xdf3c('0x21'),_0x3ee0af[_0xdf3c('0x23')]])[_0xdf3c('0x24')];return db[_0xdf3c('0x25')][_0xdf3c('0x1a')]({'where':{'type':_0x36ba1c,'resourceId':_0x3ee0af['id']}})[_0xdf3c('0x19')](function(){return _0x1e2690;});})[_0xdf3c('0x19')](function(){_0x18d4ec[_0xdf3c('0x10')](0xcc)[_0xdf3c('0xf')]();});}};}function handleEntityNotFound(_0x1adee4){return function(_0x4c076c){if(!_0x4c076c){_0x1adee4[_0xdf3c('0xe')](0x194);}return _0x4c076c;};}function handleError(_0x153daa,_0x4b57a4){_0x4b57a4=_0x4b57a4||0x1f4;return function(_0xdc8962){logger['error'](_0xdc8962['stack']);if(_0xdc8962['name']){delete _0xdc8962[_0xdf3c('0x24')];}_0x153daa[_0xdf3c('0x10')](_0x4b57a4)['send'](_0xdc8962);};}exports['index']=function(_0x37ecfd,_0x1f2ce4){var _0xd3cfcb={};var _0x1ccdd4={'count':0x0,'rows':[]};var _0x5c98a2=_[_0xdf3c('0x20')](db[_0xdf3c('0x26')]['rawAttributes'],function(_0x51e0a4){return{'name':_0x51e0a4[_0xdf3c('0x27')],'type':_0x51e0a4[_0xdf3c('0x23')][_0xdf3c('0x28')]};});_0xd3cfcb=qs['getOptions'](_0x5c98a2,_0x37ecfd);var _0x2355f6={'where':_0xd3cfcb[_0xdf3c('0x29')]};return db[_0xdf3c('0x26')][_0xdf3c('0x15')](_0x2355f6)['then'](function(_0xda0de0){_0x1ccdd4[_0xdf3c('0x15')]=_0xda0de0;_0xd3cfcb['include']=qs[_0xdf3c('0x2a')](_0x37ecfd[_0xdf3c('0x2b')]);return db[_0xdf3c('0x26')][_0xdf3c('0x2c')](_0xd3cfcb);})['then'](function(_0x33632f){_0x1ccdd4[_0xdf3c('0x2d')]=_0x33632f;return _0x1ccdd4;})[_0xdf3c('0x19')](respondWithFilteredResult(_0x1f2ce4,_0xd3cfcb))[_0xdf3c('0x2e')](handleError(_0x1f2ce4,null));};exports['show']=function(_0x474564,_0x3e7a4b){var _0x5ddd21={'raw':![],'where':{'id':_0x474564[_0xdf3c('0x2f')]['id']}},_0x4f68f9={};_0x4f68f9['model']=_[_0xdf3c('0x30')](db['VoiceQueue']['rawAttributes']);_0x4f68f9['query']=_[_0xdf3c('0x30')](_0x474564[_0xdf3c('0x2b')]);_0x4f68f9[_0xdf3c('0x31')]=_[_0xdf3c('0x32')](_0x4f68f9['model'],_0x4f68f9['query']);_0x5ddd21[_0xdf3c('0x33')]=_['intersection'](_0x4f68f9[_0xdf3c('0x34')],qs[_0xdf3c('0x35')](_0x474564[_0xdf3c('0x2b')][_0xdf3c('0x35')]));_0x5ddd21[_0xdf3c('0x33')]=_0x5ddd21[_0xdf3c('0x33')][_0xdf3c('0x36')]?_0x5ddd21[_0xdf3c('0x33')]:_0x4f68f9[_0xdf3c('0x34')];if(_0x474564['query'][_0xdf3c('0x37')]){_0x5ddd21['include']=[{'all':!![]}];}_0x5ddd21=_['merge']({},_0x5ddd21,_0x474564[_0xdf3c('0x38')]);return db['VoiceQueue'][_0xdf3c('0x39')](_0x5ddd21)['then'](handleEntityNotFound(_0x3e7a4b,null))[_0xdf3c('0x19')](respondWithResult(_0x3e7a4b,null))[_0xdf3c('0x2e')](handleError(_0x3e7a4b,null));};exports[_0xdf3c('0x3a')]=function(_0x1349a4,_0x3098cb){return db[_0xdf3c('0x26')][_0xdf3c('0x3a')](_0x1349a4[_0xdf3c('0x3b')],{})[_0xdf3c('0x19')](function(_0xa65478){var _0x424acf=_0x1349a4[_0xdf3c('0x3c')]['get']({'plain':!![]});if(!_0x424acf)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x424acf[_0xdf3c('0x3d')]==='user'){var _0x3a6527=_0xa65478[_0xdf3c('0x1b')]({'plain':!![]});var _0x46194d=[{'name':_0xdf3c('0x1c'),'value':'inbound'},{'name':'QueueCampaigns','value':_0xdf3c('0x3e')}];var _0x33edab=_[_0xdf3c('0x39')](_0x46194d,['value',_0x3a6527[_0xdf3c('0x23')]])[_0xdf3c('0x24')];return db[_0xdf3c('0x3f')][_0xdf3c('0x39')]({'where':{'name':_0x33edab,'userProfileId':_0x424acf['userProfileId']},'raw':!![]})[_0xdf3c('0x19')](function(_0x3e9be9){if(_0x3e9be9&&_0x3e9be9[_0xdf3c('0x40')]===0x0){return db[_0xdf3c('0x25')][_0xdf3c('0x3a')]({'name':_0x3a6527['name'],'resourceId':_0x3a6527['id'],'type':_0x3e9be9[_0xdf3c('0x24')],'sectionId':_0x3e9be9['id']},{})[_0xdf3c('0x19')](function(){return _0xa65478;});}else{return _0xa65478;}})[_0xdf3c('0x2e')](function(_0x2456cf){logger[_0xdf3c('0x41')](_0xdf3c('0x42'),_0x2456cf);throw _0x2456cf;});}return _0xa65478;})['then'](respondWithResult(_0x3098cb,0xc9))['catch'](handleError(_0x3098cb,null));};exports[_0xdf3c('0x43')]=function(_0x2be86d,_0x5a4443){var _0x5c9885={'where':{'id':_0x2be86d[_0xdf3c('0x2f')]['id']}},_0x269723={};_0x269723[_0xdf3c('0x34')]=_[_0xdf3c('0x30')](db[_0xdf3c('0x26')][_0xdf3c('0x44')]);_0x5c9885[_0xdf3c('0x33')]=_[_0xdf3c('0x32')](_0x269723[_0xdf3c('0x34')],qs['fields'](_0x2be86d[_0xdf3c('0x2b')][_0xdf3c('0x35')]));_0x5c9885[_0xdf3c('0x33')]=_0x5c9885[_0xdf3c('0x33')][_0xdf3c('0x36')]?_0x5c9885[_0xdf3c('0x33')]:_0x269723[_0xdf3c('0x34')];if(_0x2be86d['query'][_0xdf3c('0x37')]){_0x5c9885['include']=[{'all':!![]}];}_0x5c9885=_[_0xdf3c('0x45')]({},_0x5c9885,_0x2be86d['options']);return db[_0xdf3c('0x26')][_0xdf3c('0x39')](_0x5c9885)[_0xdf3c('0x19')](handleEntityNotFound(_0x5a4443,null))[_0xdf3c('0x19')](function(_0x5eef94){if(_0x5eef94){var _0x55da0f=_0x5eef94['get']({'plain':!![]});_0x55da0f=qs[_0xdf3c('0x46')](_0x55da0f,['id','createdAt',_0xdf3c('0x47')]);_0x2be86d[_0xdf3c('0x3b')]=_[_0xdf3c('0x46')](_0x2be86d[_0xdf3c('0x3b')],['id',_0xdf3c('0x48'),'updatedAt']);return db['VoiceQueue'][_0xdf3c('0x3a')](_[_0xdf3c('0x45')](_0x55da0f,_0x2be86d['body']),{'include':_0x2be86d[_0xdf3c('0x2b')][_0xdf3c('0x37')]?[{'all':!![]}]:undefined})[_0xdf3c('0x19')](function(_0x3fda0a){var _0x38de63=_0x2be86d[_0xdf3c('0x3c')][_0xdf3c('0x1b')]({'plain':!![]});if(!_0x38de63)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x38de63['role']===_0xdf3c('0x3c')){var _0x28030e=_0x3fda0a[_0xdf3c('0x1b')]({'plain':!![]});var _0x1ad771=[{'name':_0xdf3c('0x1c'),'value':_0xdf3c('0x1d')},{'name':_0xdf3c('0x1e'),'value':_0xdf3c('0x3e')}];var _0x143d01=_[_0xdf3c('0x39')](_0x1ad771,[_0xdf3c('0x21'),_0x28030e['type']])[_0xdf3c('0x24')];return db['UserProfileSection']['find']({'where':{'name':_0x143d01,'userProfileId':_0x38de63['userProfileId']},'raw':!![]})['then'](function(_0x541c57){if(_0x541c57&&_0x541c57[_0xdf3c('0x40')]===0x0){return db[_0xdf3c('0x25')]['create']({'name':_0x28030e[_0xdf3c('0x24')],'resourceId':_0x28030e['id'],'type':_0x541c57[_0xdf3c('0x24')],'sectionId':_0x541c57['id']},{})['then'](function(){return _0x3fda0a;});}else{return _0x3fda0a;}})[_0xdf3c('0x2e')](function(_0x28f935){logger[_0xdf3c('0x41')](_0xdf3c('0x42'),_0x28f935);throw _0x28f935;});}return _0x3fda0a;});}})[_0xdf3c('0x19')](respondWithResult(_0x5a4443,0xc9))[_0xdf3c('0x2e')](handleError(_0x5a4443,null));};exports[_0xdf3c('0x18')]=function(_0xdc859,_0x42efa2){if(_0xdc859[_0xdf3c('0x3b')]['id']){delete _0xdc859[_0xdf3c('0x3b')]['id'];}return db['VoiceQueue'][_0xdf3c('0x39')]({'where':{'id':_0xdc859[_0xdf3c('0x2f')]['id']}})[_0xdf3c('0x19')](handleEntityNotFound(_0x42efa2,null))['then'](saveUpdates(_0xdc859[_0xdf3c('0x3b')],null))[_0xdf3c('0x19')](respondWithResult(_0x42efa2,null))[_0xdf3c('0x2e')](handleError(_0x42efa2,null));};exports['destroy']=function(_0x1effdb,_0x13bf69){return db['VoiceQueue'][_0xdf3c('0x39')]({'where':{'id':_0x1effdb['params']['id']}})[_0xdf3c('0x19')](handleEntityNotFound(_0x13bf69,null))[_0xdf3c('0x19')](removeEntity(_0x13bf69,null))[_0xdf3c('0x2e')](handleError(_0x13bf69,null));};exports[_0xdf3c('0x49')]=function(_0xed2a78,_0x30e6e1){var _0x3fca95={'raw':![],'where':{}};var _0x2a1559={};var _0x2922d8={'count':0x0,'rows':[]};return db[_0xdf3c('0x26')][_0xdf3c('0x4a')]({'where':{'id':_0xed2a78[_0xdf3c('0x2f')]['id']}})[_0xdf3c('0x19')](handleEntityNotFound(_0x30e6e1,null))[_0xdf3c('0x19')](function(_0x204110){if(_0x204110){_0x2a1559[_0xdf3c('0x34')]=_[_0xdf3c('0x30')](db['CmHopper']['rawAttributes']);_0x2a1559[_0xdf3c('0x2b')]=_[_0xdf3c('0x30')](_0xed2a78[_0xdf3c('0x2b')]);_0x2a1559['filters']=_[_0xdf3c('0x32')](_0x2a1559['model'],_0x2a1559['query']);_0x3fca95[_0xdf3c('0x33')]=_[_0xdf3c('0x32')](_0x2a1559[_0xdf3c('0x34')],qs[_0xdf3c('0x35')](_0xed2a78[_0xdf3c('0x2b')][_0xdf3c('0x35')]));_0x3fca95[_0xdf3c('0x33')]=_0x3fca95[_0xdf3c('0x33')][_0xdf3c('0x36')]?_0x3fca95[_0xdf3c('0x33')]:_0x2a1559[_0xdf3c('0x34')];if(!_0xed2a78[_0xdf3c('0x2b')][_0xdf3c('0x4b')]('nolimit')){_0x3fca95[_0xdf3c('0x14')]=qs[_0xdf3c('0x14')](_0xed2a78[_0xdf3c('0x2b')][_0xdf3c('0x14')]);_0x3fca95[_0xdf3c('0x12')]=qs['offset'](_0xed2a78[_0xdf3c('0x2b')][_0xdf3c('0x12')]);}_0x3fca95[_0xdf3c('0x4c')]=qs[_0xdf3c('0x4d')](_0xed2a78[_0xdf3c('0x2b')][_0xdf3c('0x4d')]);_0x3fca95[_0xdf3c('0x29')]=qs[_0xdf3c('0x31')](_[_0xdf3c('0x4e')](_0xed2a78[_0xdf3c('0x2b')],_0x2a1559['filters']));_0x3fca95[_0xdf3c('0x29')][_0xdf3c('0x4f')]=_0x204110['id'];if(_0xed2a78[_0xdf3c('0x2b')][_0xdf3c('0x1f')]){_0x3fca95[_0xdf3c('0x29')]=_[_0xdf3c('0x45')](_0x3fca95[_0xdf3c('0x29')],{'$or':_['map'](_0x3fca95[_0xdf3c('0x33')],function(_0x662fd5){var _0x4e1b77={};_0x4e1b77[_0x662fd5]={'$like':'%'+_0xed2a78['query'][_0xdf3c('0x1f')]+'%'};return _0x4e1b77;})});}_0x3fca95=_[_0xdf3c('0x45')]({},_0x3fca95,_0xed2a78[_0xdf3c('0x38')]);return db[_0xdf3c('0x50')][_0xdf3c('0x15')]({'where':_0x3fca95[_0xdf3c('0x29')]})[_0xdf3c('0x19')](function(_0x38af90){_0x2922d8['count']=_0x38af90;if(_0xed2a78[_0xdf3c('0x2b')][_0xdf3c('0x37')]){_0x3fca95[_0xdf3c('0x2a')]=[{'all':!![]}];}return db['CmHopper'][_0xdf3c('0x2c')](_0x3fca95);})[_0xdf3c('0x19')](function(_0x43d299){_0x2922d8['rows']=_0x43d299;return _0x2922d8;});}})[_0xdf3c('0x19')](respondWithFilteredResult(_0x30e6e1,_0x3fca95))[_0xdf3c('0x2e')](handleError(_0x30e6e1,null));};exports[_0xdf3c('0x51')]=function(_0x1b279f,_0xe01538){var _0x12f737={'raw':!![],'where':{}};var _0x560348={};var _0x50753f={'count':0x0,'rows':[]};return db['VoiceQueue']['findOne']({'where':{'id':_0x1b279f['params']['id']}})[_0xdf3c('0x19')](handleEntityNotFound(_0xe01538,null))[_0xdf3c('0x19')](function(_0xf66fae){if(_0xf66fae){_0x560348['model']=_[_0xdf3c('0x30')](db[_0xdf3c('0x52')][_0xdf3c('0x44')]);_0x560348['query']=_['keys'](_0x1b279f[_0xdf3c('0x2b')]);_0x560348['filters']=_[_0xdf3c('0x32')](_0x560348['model'],_0x560348[_0xdf3c('0x2b')]);_0x12f737[_0xdf3c('0x33')]=_[_0xdf3c('0x32')](_0x560348[_0xdf3c('0x34')],qs['fields'](_0x1b279f['query'][_0xdf3c('0x35')]));_0x12f737[_0xdf3c('0x33')]=_0x12f737[_0xdf3c('0x33')][_0xdf3c('0x36')]?_0x12f737[_0xdf3c('0x33')]:_0x560348[_0xdf3c('0x34')];if(!_0x1b279f['query'][_0xdf3c('0x4b')]('nolimit')){_0x12f737[_0xdf3c('0x14')]=qs[_0xdf3c('0x14')](_0x1b279f[_0xdf3c('0x2b')][_0xdf3c('0x14')]);_0x12f737[_0xdf3c('0x12')]=qs['offset'](_0x1b279f[_0xdf3c('0x2b')][_0xdf3c('0x12')]);}_0x12f737[_0xdf3c('0x4c')]=qs['sort'](_0x1b279f['query']['sort']);_0x12f737['where']=qs[_0xdf3c('0x31')](_[_0xdf3c('0x4e')](_0x1b279f[_0xdf3c('0x2b')],_0x560348[_0xdf3c('0x31')]));_0x12f737[_0xdf3c('0x29')][_0xdf3c('0x4f')]=_0xf66fae['id'];if(_0x1b279f['query'][_0xdf3c('0x1f')]){_0x12f737['where']=_[_0xdf3c('0x45')](_0x12f737[_0xdf3c('0x29')],{'$or':_[_0xdf3c('0x20')](_0x12f737[_0xdf3c('0x33')],function(_0x320452){var _0x3a221d={};_0x3a221d[_0x320452]={'$like':'%'+_0x1b279f[_0xdf3c('0x2b')][_0xdf3c('0x1f')]+'%'};return _0x3a221d;})});}_0x12f737=_[_0xdf3c('0x45')]({},_0x12f737,_0x1b279f[_0xdf3c('0x38')]);return db[_0xdf3c('0x52')][_0xdf3c('0x15')]({'where':_0x12f737[_0xdf3c('0x29')]})[_0xdf3c('0x19')](function(_0x55fd73){_0x50753f[_0xdf3c('0x15')]=_0x55fd73;if(_0x1b279f[_0xdf3c('0x2b')][_0xdf3c('0x37')]){_0x12f737[_0xdf3c('0x2a')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xdf3c('0x2c')](_0x12f737);})[_0xdf3c('0x19')](function(_0x54b7b8){_0x50753f['rows']=_0x54b7b8;return _0x50753f;});}})[_0xdf3c('0x19')](respondWithFilteredResult(_0xe01538,_0x12f737))[_0xdf3c('0x2e')](handleError(_0xe01538,null));};exports[_0xdf3c('0x53')]=function(_0x1aaf8b,_0x44dd2a){var _0x56fc77={'raw':!![],'where':{}};var _0x50105b={};var _0x471d8f={'count':0x0,'rows':[]};return db[_0xdf3c('0x26')][_0xdf3c('0x4a')]({'where':{'id':_0x1aaf8b[_0xdf3c('0x2f')]['id']}})[_0xdf3c('0x19')](handleEntityNotFound(_0x44dd2a,null))['then'](function(_0x30235e){if(_0x30235e){_0x50105b[_0xdf3c('0x34')]=_[_0xdf3c('0x30')](db[_0xdf3c('0x54')][_0xdf3c('0x44')]);_0x50105b['query']=_['keys'](_0x1aaf8b['query']);_0x50105b[_0xdf3c('0x31')]=_[_0xdf3c('0x32')](_0x50105b[_0xdf3c('0x34')],_0x50105b[_0xdf3c('0x2b')]);_0x56fc77[_0xdf3c('0x33')]=_[_0xdf3c('0x32')](_0x50105b[_0xdf3c('0x34')],qs[_0xdf3c('0x35')](_0x1aaf8b['query'][_0xdf3c('0x35')]));_0x56fc77[_0xdf3c('0x33')]=_0x56fc77[_0xdf3c('0x33')][_0xdf3c('0x36')]?_0x56fc77[_0xdf3c('0x33')]:_0x50105b[_0xdf3c('0x34')];if(!_0x1aaf8b['query'][_0xdf3c('0x4b')](_0xdf3c('0x55'))){_0x56fc77['limit']=qs['limit'](_0x1aaf8b[_0xdf3c('0x2b')]['limit']);_0x56fc77[_0xdf3c('0x12')]=qs[_0xdf3c('0x12')](_0x1aaf8b['query'][_0xdf3c('0x12')]);}_0x56fc77[_0xdf3c('0x4c')]=qs[_0xdf3c('0x4d')](_0x1aaf8b[_0xdf3c('0x2b')][_0xdf3c('0x4d')]);_0x56fc77[_0xdf3c('0x29')]=qs['filters'](_[_0xdf3c('0x4e')](_0x1aaf8b[_0xdf3c('0x2b')],_0x50105b[_0xdf3c('0x31')]));_0x56fc77[_0xdf3c('0x29')][_0xdf3c('0x4f')]=_0x30235e['id'];if(_0x1aaf8b[_0xdf3c('0x2b')][_0xdf3c('0x1f')]){_0x56fc77['where']=_['merge'](_0x56fc77[_0xdf3c('0x29')],{'$or':_[_0xdf3c('0x20')](_0x56fc77[_0xdf3c('0x33')],function(_0x5b6419){var _0x38c374={};_0x38c374[_0x5b6419]={'$like':'%'+_0x1aaf8b['query']['filter']+'%'};return _0x38c374;})});}_0x56fc77=_[_0xdf3c('0x45')]({},_0x56fc77,_0x1aaf8b[_0xdf3c('0x38')]);return db['CmHopperFinal'][_0xdf3c('0x15')]({'where':_0x56fc77['where']})[_0xdf3c('0x19')](function(_0x4b35ff){_0x471d8f[_0xdf3c('0x15')]=_0x4b35ff;if(_0x1aaf8b[_0xdf3c('0x2b')][_0xdf3c('0x37')]){_0x56fc77[_0xdf3c('0x2a')]=[{'all':!![]}];}return db[_0xdf3c('0x54')][_0xdf3c('0x2c')](_0x56fc77);})[_0xdf3c('0x19')](function(_0x2dc0d2){_0x471d8f[_0xdf3c('0x2d')]=_0x2dc0d2;return _0x471d8f;});}})[_0xdf3c('0x19')](respondWithFilteredResult(_0x44dd2a,_0x56fc77))[_0xdf3c('0x2e')](handleError(_0x44dd2a,null));};exports[_0xdf3c('0x56')]=function(_0x10528d,_0x1acc47){var _0x5b3aa5={'raw':!![],'where':{}};var _0x3cf465={};var _0x22bacf={'count':0x0,'rows':[]};return db[_0xdf3c('0x26')]['findOne']({'where':{'id':_0x10528d[_0xdf3c('0x2f')]['id']}})[_0xdf3c('0x19')](handleEntityNotFound(_0x1acc47,null))[_0xdf3c('0x19')](function(_0x6e1899){if(_0x6e1899){_0x3cf465[_0xdf3c('0x34')]=_[_0xdf3c('0x30')](db[_0xdf3c('0x57')][_0xdf3c('0x44')]);_0x3cf465[_0xdf3c('0x2b')]=_[_0xdf3c('0x30')](_0x10528d[_0xdf3c('0x2b')]);_0x3cf465['filters']=_[_0xdf3c('0x32')](_0x3cf465[_0xdf3c('0x34')],_0x3cf465[_0xdf3c('0x2b')]);_0x5b3aa5[_0xdf3c('0x33')]=_[_0xdf3c('0x32')](_0x3cf465[_0xdf3c('0x34')],qs[_0xdf3c('0x35')](_0x10528d[_0xdf3c('0x2b')][_0xdf3c('0x35')]));_0x5b3aa5[_0xdf3c('0x33')]=_0x5b3aa5[_0xdf3c('0x33')][_0xdf3c('0x36')]?_0x5b3aa5['attributes']:_0x3cf465[_0xdf3c('0x34')];if(!_0x10528d[_0xdf3c('0x2b')][_0xdf3c('0x4b')](_0xdf3c('0x55'))){_0x5b3aa5[_0xdf3c('0x14')]=qs[_0xdf3c('0x14')](_0x10528d[_0xdf3c('0x2b')]['limit']);_0x5b3aa5[_0xdf3c('0x12')]=qs[_0xdf3c('0x12')](_0x10528d[_0xdf3c('0x2b')][_0xdf3c('0x12')]);}_0x5b3aa5['order']=qs[_0xdf3c('0x4d')](_0x10528d[_0xdf3c('0x2b')]['sort']);_0x5b3aa5[_0xdf3c('0x29')]=qs['filters'](_[_0xdf3c('0x4e')](_0x10528d[_0xdf3c('0x2b')],_0x3cf465['filters']));_0x5b3aa5[_0xdf3c('0x29')][_0xdf3c('0x4f')]=_0x6e1899['id'];if(_0x10528d[_0xdf3c('0x2b')]['filter']){_0x5b3aa5['where']=_[_0xdf3c('0x45')](_0x5b3aa5['where'],{'$or':_[_0xdf3c('0x20')](_0x5b3aa5[_0xdf3c('0x33')],function(_0x161604){var _0x91dd6e={};_0x91dd6e[_0x161604]={'$like':'%'+_0x10528d['query'][_0xdf3c('0x1f')]+'%'};return _0x91dd6e;})});}_0x5b3aa5=_[_0xdf3c('0x45')]({},_0x5b3aa5,_0x10528d['options']);return db[_0xdf3c('0x57')]['count']({'where':_0x5b3aa5[_0xdf3c('0x29')]})[_0xdf3c('0x19')](function(_0x5429b6){_0x22bacf['count']=_0x5429b6;if(_0x10528d[_0xdf3c('0x2b')]['includeAll']){_0x5b3aa5[_0xdf3c('0x2a')]=[{'all':!![]}];}return db[_0xdf3c('0x57')][_0xdf3c('0x2c')](_0x5b3aa5);})[_0xdf3c('0x19')](function(_0x19a723){_0x22bacf[_0xdf3c('0x2d')]=_0x19a723;return _0x22bacf;});}})[_0xdf3c('0x19')](respondWithFilteredResult(_0x1acc47,_0x5b3aa5))[_0xdf3c('0x2e')](handleError(_0x1acc47,null));};exports[_0xdf3c('0x58')]=function(_0x3d8ff0,_0x2a2f03){var _0x55975e={};var _0x4299d1={};var _0x132c27;var _0x52a641;return db[_0xdf3c('0x26')][_0xdf3c('0x4a')]({'where':{'id':_0x3d8ff0[_0xdf3c('0x2f')]['id']}})[_0xdf3c('0x19')](handleEntityNotFound(_0x2a2f03,null))[_0xdf3c('0x19')](function(_0x12576e){if(_0x12576e){_0x132c27=_0x12576e;_0x4299d1['model']=_[_0xdf3c('0x30')](db['Team'][_0xdf3c('0x44')]);_0x4299d1[_0xdf3c('0x2b')]=_[_0xdf3c('0x30')](_0x3d8ff0[_0xdf3c('0x2b')]);_0x4299d1[_0xdf3c('0x31')]=_[_0xdf3c('0x32')](_0x4299d1['model'],_0x4299d1[_0xdf3c('0x2b')]);_0x55975e[_0xdf3c('0x33')]=_['intersection'](_0x4299d1[_0xdf3c('0x34')],qs[_0xdf3c('0x35')](_0x3d8ff0[_0xdf3c('0x2b')][_0xdf3c('0x35')]));_0x55975e[_0xdf3c('0x33')]=_0x55975e[_0xdf3c('0x33')][_0xdf3c('0x36')]?_0x55975e[_0xdf3c('0x33')]:_0x4299d1['model'];_0x55975e['order']=qs[_0xdf3c('0x4d')](_0x3d8ff0[_0xdf3c('0x2b')][_0xdf3c('0x4d')]);_0x55975e[_0xdf3c('0x29')]=qs['filters'](_['pick'](_0x3d8ff0[_0xdf3c('0x2b')],_0x4299d1['filters']));if(_0x3d8ff0[_0xdf3c('0x2b')]['filter']){_0x55975e[_0xdf3c('0x29')]=_[_0xdf3c('0x45')](_0x55975e[_0xdf3c('0x29')],{'$or':_['map'](_0x55975e[_0xdf3c('0x33')],function(_0x142cd0){var _0x5bf9a9={};_0x5bf9a9[_0x142cd0]={'$like':'%'+_0x3d8ff0['query'][_0xdf3c('0x1f')]+'%'};return _0x5bf9a9;})});}_0x55975e=_[_0xdf3c('0x45')]({},_0x55975e,_0x3d8ff0[_0xdf3c('0x38')]);return _0x132c27[_0xdf3c('0x58')](_0x55975e);}})[_0xdf3c('0x19')](function(_0x294682){if(_0x294682){_0x52a641=_0x294682[_0xdf3c('0x36')];if(!_0x3d8ff0['query']['hasOwnProperty'](_0xdf3c('0x55'))){_0x55975e[_0xdf3c('0x14')]=qs[_0xdf3c('0x14')](_0x3d8ff0[_0xdf3c('0x2b')][_0xdf3c('0x14')]);_0x55975e[_0xdf3c('0x12')]=qs[_0xdf3c('0x12')](_0x3d8ff0[_0xdf3c('0x2b')][_0xdf3c('0x12')]);}return _0x132c27[_0xdf3c('0x58')](_0x55975e);}})[_0xdf3c('0x19')](function(_0x322cf5){if(_0x322cf5){return _0x322cf5?{'count':_0x52a641,'rows':_0x322cf5}:null;}})[_0xdf3c('0x19')](respondWithResult(_0x2a2f03,null))[_0xdf3c('0x2e')](handleError(_0x2a2f03,null));};exports[_0xdf3c('0x59')]=function(_0x199ff0,_0x244bf0){var _0x1a0d61=_0x199ff0[_0xdf3c('0x3b')]['teams'];var _0x4c6615=_[_0xdf3c('0x20')](_0x1a0d61,'id');return db['Team']['findAll']({'where':{'id':_0x4c6615},'attributes':['id'],'include':[{'model':db[_0xdf3c('0x5a')],'as':'Agents','attributes':['id',_0xdf3c('0x24'),_0xdf3c('0x5b'),'voicePause','interface'],'raw':!![]}]})['then'](function(_0x1c7b50){if(_0x1c7b50){var _0x3e0a0f=_[_0xdf3c('0x5c')](_0x1c7b50,function(_0x4d5216){var _0x197b8a=_0x4d5216['get']({'plain':!![]});_0x197b8a[_0xdf3c('0x5d')]['forEach'](function(_0x5b0101){_0x5b0101[_0xdf3c('0x5e')]=_[_0xdf3c('0x39')](_0x1a0d61,{'id':_0x197b8a['id']})[_0xdf3c('0x5e')];});return _0x197b8a[_0xdf3c('0x5d')];});return db[_0xdf3c('0x26')][_0xdf3c('0x39')]({'where':{'id':_0x199ff0['params']['id']}})['then'](function(_0x128a4e){return db['sequelize'][_0xdf3c('0x5f')](function(_0x14244a){return _0x128a4e[_0xdf3c('0x59')](_0x4c6615,{'transaction':_0x14244a})[_0xdf3c('0x19')](function(){return BPromise[_0xdf3c('0x60')](_0x1a0d61,function(_0x619c66){return db[_0xdf3c('0x61')]['upsert']({'TeamId':_0x619c66['id'],'VoiceQueueId':_0x199ff0['params']['id'],'penalty':_0x619c66[_0xdf3c('0x5e')]},{'transaction':_0x14244a});});})[_0xdf3c('0x19')](function(){return BPromise[_0xdf3c('0x60')](_0x3e0a0f,function(_0x13a882){return db['UserVoiceQueue'][_0xdf3c('0x62')]({'where':{'UserId':_0x13a882['id'],'VoiceQueueId':_0x199ff0[_0xdf3c('0x2f')]['id']},'defaults':{'penalty':_0x13a882[_0xdf3c('0x5e')]},'transaction':_0x14244a});});})[_0xdf3c('0x19')](function(){return BPromise[_0xdf3c('0x60')](_[_0xdf3c('0x1f')](_0x3e0a0f,{'online':!![]}),function(_0x524482){return db[_0xdf3c('0x63')][_0xdf3c('0x64')]({'membername':_0x524482['name'],'UserId':_0x524482['id'],'queue_name':_0x128a4e[_0xdf3c('0x24')],'VoiceQueueId':_0x128a4e['id'],'interface':_[_0xdf3c('0x65')](_0x524482[_0xdf3c('0x66')])?util['format'](_0xdf3c('0x67'),_0x524482[_0xdf3c('0x24')]):_0x524482[_0xdf3c('0x66')],'paused':_0x524482[_0xdf3c('0x68')]||![],'penalty':_0x524482[_0xdf3c('0x5e')]},{'transaction':_0x14244a});});})[_0xdf3c('0x19')](function(){_0x3e0a0f[_0xdf3c('0x69')](function(_0x12ffd3){socket[_0xdf3c('0x6a')]('userVoiceQueue:save',{'UserId':_0x12ffd3['id'],'VoiceQueueId':_0x128a4e['id']});});});});});}})[_0xdf3c('0x19')](respondWithStatusCode(_0x244bf0,null))['catch'](handleError(_0x244bf0,null));};exports[_0xdf3c('0x6b')]=function(_0x160568,_0xfcf42f){return db[_0xdf3c('0x6c')][_0xdf3c('0x2c')]({'where':{'id':_0x160568[_0xdf3c('0x2b')][_0xdf3c('0x6d')]},'attributes':['id'],'include':[{'model':db[_0xdf3c('0x5a')],'as':_0xdf3c('0x5d'),'attributes':['id'],'raw':!![]}]})[_0xdf3c('0x19')](handleEntityNotFound(_0xfcf42f,null))[_0xdf3c('0x19')](function(_0x5f09a0){var _0x379996=_[_0xdf3c('0x20')](_0x5f09a0,'id');var _0x5f1b51=[];var _0x323058=[];var _0x8fd9e4=squel[_0xdf3c('0x6e')]();_0x8fd9e4[_0xdf3c('0x6f')]('tq.TeamId')[_0xdf3c('0x70')](_0xdf3c('0x71'),'tq')[_0xdf3c('0x72')]('user_has_teams','ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0xdf3c('0x73'),_0x160568[_0xdf3c('0x2f')]['id']);for(var _0x403ac5=0x0;_0x403ac5<_0x5f09a0[_0xdf3c('0x36')];_0x403ac5+=0x1){let _0x44d862=_0x5f09a0[_0x403ac5];for(var _0x33132b=0x0;_0x33132b<_0x44d862[_0xdf3c('0x5d')][_0xdf3c('0x36')];_0x33132b+=0x1){let _0x49c29e=_0x44d862[_0xdf3c('0x5d')][_0x33132b];var _0x5e868a=_0x8fd9e4[_0xdf3c('0x43')]();_0x5e868a[_0xdf3c('0x29')](_0xdf3c('0x74'),_0x49c29e['id']);_0x323058[_0xdf3c('0x75')](db[_0xdf3c('0x76')][_0xdf3c('0x2b')](_0x5e868a['toString'](),{'type':db[_0xdf3c('0x76')][_0xdf3c('0x77')]['SELECT']})[_0xdf3c('0x19')](function(_0x270353){if(_0x270353[_0xdf3c('0x36')]===0x1){return _0x49c29e['id'];}else{var _0x3f6df9=_['every'](_[_0xdf3c('0x20')](_0x270353,'TeamId'),function(_0x7d9a0f){return _[_0xdf3c('0x22')](_0x379996,_0x7d9a0f);});if(_0x3f6df9){return _0x49c29e['id'];}}}));}}return BPromise[_0xdf3c('0x78')](_0x323058)[_0xdf3c('0x19')](function(_0x17669f){_0x5f1b51=_(_0x5f1b51)[_0xdf3c('0x79')](_0x17669f)['compact']()['value']();return db['VoiceQueue'][_0xdf3c('0x39')]({'where':{'id':_0x160568[_0xdf3c('0x2f')]['id']}})['then'](function(_0x528c97){return db[_0xdf3c('0x76')]['transaction'](function(_0x58a2d8){return _0x528c97['removeTeams'](_0x160568[_0xdf3c('0x2b')][_0xdf3c('0x6d')],{'transaction':_0x58a2d8})[_0xdf3c('0x19')](function(){if(!_['isEmpty'](_0x5f1b51)){return _0x528c97[_0xdf3c('0x7a')](_0x5f1b51,{'transaction':_0x58a2d8})['then'](function(){return db[_0xdf3c('0x63')][_0xdf3c('0x1a')]({'where':{'VoiceQueueId':_0x160568[_0xdf3c('0x2f')]['id'],'UserId':_0x5f1b51},'transaction':_0x58a2d8});});}})[_0xdf3c('0x19')](function(){_0x5f1b51[_0xdf3c('0x69')](function(_0x467090){socket[_0xdf3c('0x6a')](_0xdf3c('0x7b'),{'UserId':_0x467090,'VoiceQueueId':_0x528c97['id']});});});});});});})[_0xdf3c('0x19')](respondWithStatusCode(_0xfcf42f,null))['catch'](handleError(_0xfcf42f,null));};exports[_0xdf3c('0x7c')]=function(_0x4652af,_0x5e08bc){var _0x2702ca,_0x1e8646;return db['VoiceQueue'][_0xdf3c('0x39')]({'where':{'id':_0x4652af['params']['id']}})[_0xdf3c('0x19')](handleEntityNotFound(_0x5e08bc,null))[_0xdf3c('0x19')](function(_0x3ea47d){if(_0x3ea47d){_0x1e8646=_0x3ea47d;return _0x3ea47d[_0xdf3c('0x7c')](_0x4652af[_0xdf3c('0x3b')][_0xdf3c('0x6d')],_[_0xdf3c('0x46')](_0x4652af[_0xdf3c('0x3b')],[_0xdf3c('0x6d'),'id'])||{})[_0xdf3c('0x7d')](function(_0xfdb4e2){for(var _0x1c31ee=0x0;_0x1c31ee<_0x4652af[_0xdf3c('0x3b')][_0xdf3c('0x6d')][_0xdf3c('0x36')];_0x1c31ee+=0x1){socket[_0xdf3c('0x6a')]('userVoiceQueue:save',{'UserId':Number(_0x4652af[_0xdf3c('0x3b')][_0xdf3c('0x6d')][_0x1c31ee]),'VoiceQueueId':Number(_0x4652af['params']['id'])});}return _0xfdb4e2;});}})[_0xdf3c('0x19')](function(_0xf39067){_0x2702ca=_0xf39067||[];if(_0x1e8646){return db[_0xdf3c('0x5a')][_0xdf3c('0x2c')]({'where':{'id':_0x4652af['body'][_0xdf3c('0x6d')]},'attributes':['id',_0xdf3c('0x24'),'online',_0xdf3c('0x68'),_0xdf3c('0x66')],'raw':!![]});}})['then'](function(_0x59c8f9){if(!_[_0xdf3c('0x7e')](_0x59c8f9)){var _0x388f8d=[];for(var _0x1c4964=0x0;_0x1c4964<_0x59c8f9['length'];_0x1c4964++){if(_0x59c8f9[_0x1c4964][_0xdf3c('0x5b')]){_0x388f8d['push'](db[_0xdf3c('0x63')][_0xdf3c('0x64')]({'membername':_0x59c8f9[_0x1c4964][_0xdf3c('0x24')],'UserId':_0x59c8f9[_0x1c4964]['id'],'queue_name':_0x1e8646[_0xdf3c('0x24')],'VoiceQueueId':_0x1e8646['id'],'interface':_[_0xdf3c('0x65')](_0x59c8f9[_0x1c4964][_0xdf3c('0x66')])?util['format'](_0xdf3c('0x67'),_0x59c8f9[_0x1c4964]['name']):_0x59c8f9[_0x1c4964][_0xdf3c('0x66')],'paused':_0x59c8f9[_0x1c4964][_0xdf3c('0x68')]||![],'penalty':_0x4652af[_0xdf3c('0x3b')]['penalty']||0x0}));}}return BPromise[_0xdf3c('0x78')](_0x388f8d);}})['then'](function(){return _0x2702ca;})[_0xdf3c('0x19')](respondWithResult(_0x5e08bc,null))[_0xdf3c('0x2e')](handleError(_0x5e08bc,null));};exports['removeAgents']=function(_0x153bce,_0x4185f0){return db[_0xdf3c('0x26')][_0xdf3c('0x39')]({'where':{'id':_0x153bce['params']['id']}})[_0xdf3c('0x19')](handleEntityNotFound(_0x4185f0,null))[_0xdf3c('0x19')](function(_0xa61c3f){if(_0xa61c3f){return _0xa61c3f[_0xdf3c('0x7a')](_0x153bce[_0xdf3c('0x2b')][_0xdf3c('0x6d')])[_0xdf3c('0x19')](function(){if(_['isArray'](_0x153bce[_0xdf3c('0x2b')][_0xdf3c('0x6d')])){for(var _0x26251d=0x0;_0x26251d<_0x153bce[_0xdf3c('0x2b')][_0xdf3c('0x6d')][_0xdf3c('0x36')];_0x26251d+=0x1){socket[_0xdf3c('0x6a')](_0xdf3c('0x7b'),{'UserId':Number(_0x153bce[_0xdf3c('0x2b')][_0xdf3c('0x6d')][_0x26251d]),'VoiceQueueId':Number(_0x153bce[_0xdf3c('0x2f')]['id'])});}}else{socket['emit'](_0xdf3c('0x7b'),{'UserId':Number(_0x153bce[_0xdf3c('0x2b')][_0xdf3c('0x6d')]),'VoiceQueueId':Number(_0x153bce['params']['id'])});}});}})[_0xdf3c('0x19')](function(_0x109153){return db[_0xdf3c('0x63')][_0xdf3c('0x1a')]({'where':{'VoiceQueueId':_0x153bce[_0xdf3c('0x2f')]['id'],'UserId':_0x153bce['query'][_0xdf3c('0x6d')]}})[_0xdf3c('0x19')](function(){return _0x109153;});})['then'](respondWithStatusCode(_0x4185f0,null))[_0xdf3c('0x2e')](handleError(_0x4185f0,null));};exports[_0xdf3c('0x7f')]=function(_0x38c6f3,_0xb39cc){var _0xcc2f18={};var _0x13ee9b={};var _0x8d7c0c;var _0x3d9041;return db[_0xdf3c('0x26')]['findOne']({'where':{'id':_0x38c6f3[_0xdf3c('0x2f')]['id']}})[_0xdf3c('0x19')](handleEntityNotFound(_0xb39cc,null))['then'](function(_0x39bc51){if(_0x39bc51){_0x8d7c0c=_0x39bc51;_0x13ee9b[_0xdf3c('0x34')]=_['keys'](db['User'][_0xdf3c('0x44')]);_0x13ee9b[_0xdf3c('0x2b')]=_[_0xdf3c('0x30')](_0x38c6f3[_0xdf3c('0x2b')]);_0x13ee9b[_0xdf3c('0x31')]=_[_0xdf3c('0x32')](_0x13ee9b[_0xdf3c('0x34')],_0x13ee9b[_0xdf3c('0x2b')]);_0xcc2f18['attributes']=_[_0xdf3c('0x32')](_0x13ee9b[_0xdf3c('0x34')],qs[_0xdf3c('0x35')](_0x38c6f3[_0xdf3c('0x2b')]['fields']));_0xcc2f18[_0xdf3c('0x33')]=_0xcc2f18[_0xdf3c('0x33')][_0xdf3c('0x36')]?_0xcc2f18[_0xdf3c('0x33')]:_0x13ee9b['model'];_0xcc2f18[_0xdf3c('0x4c')]=qs[_0xdf3c('0x4d')](_0x38c6f3[_0xdf3c('0x2b')]['sort']);_0xcc2f18['where']=qs[_0xdf3c('0x31')](_[_0xdf3c('0x4e')](_0x38c6f3[_0xdf3c('0x2b')],_0x13ee9b['filters']));if(_0x38c6f3[_0xdf3c('0x2b')][_0xdf3c('0x1f')]){_0xcc2f18[_0xdf3c('0x29')]=_[_0xdf3c('0x45')](_0xcc2f18[_0xdf3c('0x29')],{'$or':_['map'](_0xcc2f18['attributes'],function(_0x1cd1a7){var _0x48141c={};_0x48141c[_0x1cd1a7]={'$like':'%'+_0x38c6f3[_0xdf3c('0x2b')][_0xdf3c('0x1f')]+'%'};return _0x48141c;})});}_0xcc2f18=_[_0xdf3c('0x45')]({},_0xcc2f18,_0x38c6f3[_0xdf3c('0x38')]);return _0x8d7c0c[_0xdf3c('0x7f')](_0xcc2f18);}})[_0xdf3c('0x19')](function(_0x5a56b5){if(_0x5a56b5){_0x3d9041=_0x5a56b5[_0xdf3c('0x36')];if(!_0x38c6f3[_0xdf3c('0x2b')][_0xdf3c('0x4b')](_0xdf3c('0x55'))){_0xcc2f18['limit']=qs[_0xdf3c('0x14')](_0x38c6f3[_0xdf3c('0x2b')][_0xdf3c('0x14')]);_0xcc2f18['offset']=qs['offset'](_0x38c6f3[_0xdf3c('0x2b')][_0xdf3c('0x12')]);}return _0x8d7c0c['getAgents'](_0xcc2f18);}})[_0xdf3c('0x19')](function(_0x5eebe3){if(_0x5eebe3){return _0x5eebe3?{'count':_0x3d9041,'rows':_0x5eebe3}:null;}})[_0xdf3c('0x19')](respondWithResult(_0xb39cc,null))[_0xdf3c('0x2e')](handleError(_0xb39cc,null));};exports[_0xdf3c('0x80')]=function(_0x1961cd,_0x30659d){var _0x27f25a={};var _0x5e5dad={};var _0x19ce27;var _0x2c24b7;return db[_0xdf3c('0x26')][_0xdf3c('0x4a')]({'where':{'id':_0x1961cd[_0xdf3c('0x2f')]['id']}})[_0xdf3c('0x19')](handleEntityNotFound(_0x30659d,null))[_0xdf3c('0x19')](function(_0x1dee13){if(_0x1dee13){_0x19ce27=_0x1dee13;_0x5e5dad[_0xdf3c('0x34')]=_[_0xdf3c('0x30')](db[_0xdf3c('0x63')]['rawAttributes']);_0x5e5dad[_0xdf3c('0x2b')]=_[_0xdf3c('0x30')](_0x1961cd['query']);_0x5e5dad[_0xdf3c('0x31')]=_[_0xdf3c('0x32')](_0x5e5dad[_0xdf3c('0x34')],_0x5e5dad[_0xdf3c('0x2b')]);_0x27f25a[_0xdf3c('0x33')]=_['intersection'](_0x5e5dad[_0xdf3c('0x34')],qs[_0xdf3c('0x35')](_0x1961cd[_0xdf3c('0x2b')][_0xdf3c('0x35')]));_0x27f25a[_0xdf3c('0x33')]=_0x27f25a[_0xdf3c('0x33')][_0xdf3c('0x36')]?_0x27f25a[_0xdf3c('0x33')]:_0x5e5dad[_0xdf3c('0x34')];_0x27f25a[_0xdf3c('0x4c')]=qs[_0xdf3c('0x4d')](_0x1961cd[_0xdf3c('0x2b')][_0xdf3c('0x4d')]);_0x27f25a['where']=qs[_0xdf3c('0x31')](_[_0xdf3c('0x4e')](_0x1961cd['query'],_0x5e5dad[_0xdf3c('0x31')]));if(_0x1961cd[_0xdf3c('0x2b')][_0xdf3c('0x1f')]){_0x27f25a[_0xdf3c('0x29')]=_[_0xdf3c('0x45')](_0x27f25a[_0xdf3c('0x29')],{'$or':_[_0xdf3c('0x20')](_0x27f25a[_0xdf3c('0x33')],function(_0xc3b6a1){var _0x3d9a1e={};_0x3d9a1e[_0xc3b6a1]={'$like':'%'+_0x1961cd['query'][_0xdf3c('0x1f')]+'%'};return _0x3d9a1e;})});}_0x27f25a=_[_0xdf3c('0x45')]({},_0x27f25a,_0x1961cd['options']);return _0x19ce27[_0xdf3c('0x80')](_0x27f25a);}})['then'](function(_0x330ee0){if(_0x330ee0){_0x2c24b7=_0x330ee0['length'];if(!_0x1961cd[_0xdf3c('0x2b')]['hasOwnProperty'](_0xdf3c('0x55'))){_0x27f25a[_0xdf3c('0x14')]=qs[_0xdf3c('0x14')](_0x1961cd[_0xdf3c('0x2b')][_0xdf3c('0x14')]);_0x27f25a[_0xdf3c('0x12')]=qs[_0xdf3c('0x12')](_0x1961cd[_0xdf3c('0x2b')]['offset']);}return _0x19ce27[_0xdf3c('0x80')](_0x27f25a);}})[_0xdf3c('0x19')](function(_0x1b3daa){return _0x1b3daa?{'count':_0x2c24b7,'rows':_0x1b3daa}:null;})['then'](respondWithResult(_0x30659d,null))[_0xdf3c('0x2e')](handleError(_0x30659d,null));};exports[_0xdf3c('0x81')]=function(_0x30e5ab,_0x465c59){var _0x571f14={};var _0x55a4fa={};var _0x4f7b39;var _0x5e5af3;return db[_0xdf3c('0x26')][_0xdf3c('0x4a')]({'where':{'id':_0x30e5ab[_0xdf3c('0x2f')]['id']}})[_0xdf3c('0x19')](handleEntityNotFound(_0x465c59,null))[_0xdf3c('0x19')](function(_0x323d9b){if(_0x323d9b){_0x4f7b39=_0x323d9b;_0x55a4fa[_0xdf3c('0x34')]=_['keys'](db[_0xdf3c('0x82')]['rawAttributes']);_0x55a4fa[_0xdf3c('0x2b')]=_[_0xdf3c('0x30')](_0x30e5ab[_0xdf3c('0x2b')]);_0x55a4fa[_0xdf3c('0x31')]=_[_0xdf3c('0x32')](_0x55a4fa[_0xdf3c('0x34')],_0x55a4fa[_0xdf3c('0x2b')]);_0x571f14[_0xdf3c('0x33')]=_['intersection'](_0x55a4fa[_0xdf3c('0x34')],qs[_0xdf3c('0x35')](_0x30e5ab[_0xdf3c('0x2b')][_0xdf3c('0x35')]));_0x571f14[_0xdf3c('0x33')]=_0x571f14['attributes']['length']?_0x571f14[_0xdf3c('0x33')]:_0x55a4fa[_0xdf3c('0x34')];_0x571f14[_0xdf3c('0x4c')]=qs[_0xdf3c('0x4d')](_0x30e5ab[_0xdf3c('0x2b')][_0xdf3c('0x4d')]);_0x571f14[_0xdf3c('0x29')]=qs[_0xdf3c('0x31')](_[_0xdf3c('0x4e')](_0x30e5ab[_0xdf3c('0x2b')],_0x55a4fa[_0xdf3c('0x31')]));if(_0x30e5ab['query'][_0xdf3c('0x1f')]){_0x571f14[_0xdf3c('0x29')]=_[_0xdf3c('0x45')](_0x571f14[_0xdf3c('0x29')],{'$or':_[_0xdf3c('0x20')](_0x571f14[_0xdf3c('0x33')],function(_0x184a55){var _0x4e8ad8={};_0x4e8ad8[_0x184a55]={'$like':'%'+_0x30e5ab[_0xdf3c('0x2b')]['filter']+'%'};return _0x4e8ad8;})});}_0x571f14=_[_0xdf3c('0x45')]({},_0x571f14,_0x30e5ab['options']);return _0x4f7b39[_0xdf3c('0x81')](_0x571f14);}})[_0xdf3c('0x19')](function(_0x54d975){if(_0x54d975){_0x5e5af3=_0x54d975['length'];if(!_0x30e5ab[_0xdf3c('0x2b')][_0xdf3c('0x4b')](_0xdf3c('0x55'))){_0x571f14[_0xdf3c('0x14')]=qs[_0xdf3c('0x14')](_0x30e5ab['query'][_0xdf3c('0x14')]);_0x571f14[_0xdf3c('0x12')]=qs[_0xdf3c('0x12')](_0x30e5ab[_0xdf3c('0x2b')][_0xdf3c('0x12')]);}return _0x4f7b39['getLists'](_0x571f14);}})[_0xdf3c('0x19')](function(_0x55a593){if(_0x55a593){return _0x55a593?{'count':_0x5e5af3,'rows':_0x55a593}:null;}})[_0xdf3c('0x19')](respondWithResult(_0x465c59,null))['catch'](handleError(_0x465c59,null));};exports['addLists']=function(_0x42d720,_0x2da908){var _0x3e2a89=moment()[_0xdf3c('0x83')](_0xdf3c('0x84'));var _0x4f4afd,_0xd3d760;return db[_0xdf3c('0x26')]['find']({'where':{'id':_0x42d720[_0xdf3c('0x2f')]['id']}})[_0xdf3c('0x19')](handleEntityNotFound(_0x2da908,null))[_0xdf3c('0x19')](function(_0x386a3b){if(_0x386a3b){_0xd3d760=_0x386a3b;return _0x386a3b[_0xdf3c('0x85')](_0x42d720['body'][_0xdf3c('0x6d')],_[_0xdf3c('0x46')](_0x42d720[_0xdf3c('0x3b')],[_0xdf3c('0x6d'),'id'])||{});}return null;})[_0xdf3c('0x7d')](function(_0x511630){var _0x2cf46;_0x4f4afd=_0x511630||[];var _0x43fc55=[];if(_0x511630){for(var _0x81b8dd=0x0;_0x81b8dd<_0x511630[_0xdf3c('0x36')];_0x81b8dd+=0x1){var _0xb852c5=_0x511630[_0x81b8dd][_0xdf3c('0x1b')]({'plain':!![]});_0xd3d760[_0xdf3c('0x86')]=_0x42d720[_0xdf3c('0x3b')][_0xdf3c('0x86')]?_0x42d720[_0xdf3c('0x3b')][_0xdf3c('0x86')]:_0xd3d760[_0xdf3c('0x86')];switch(_0xd3d760[_0xdf3c('0x86')]){case _0xdf3c('0x87'):_0x2cf46=squel[_0xdf3c('0x88')]()[_0xdf3c('0x89')](_0xdf3c('0x8a'))[_0xdf3c('0x8b')](['phone',_0xdf3c('0x8c'),_0xdf3c('0x8d'),_0xdf3c('0x8e'),'VoiceQueueId',_0xdf3c('0x48'),'updatedAt'],squel[_0xdf3c('0x6e')]()['field'](_0xdf3c('0x8f'),_0xdf3c('0x8f'))[_0xdf3c('0x6f')]('\x27'+_0x3e2a89+'\x27',_0xdf3c('0x8c'))[_0xdf3c('0x6f')]('id',_0xdf3c('0x8d'))[_0xdf3c('0x6f')](_0xb852c5[_0xdf3c('0x90')][_0xdf3c('0x91')](),'ListId')[_0xdf3c('0x6f')](_0x42d720[_0xdf3c('0x2f')]['id'][_0xdf3c('0x91')](),_0xdf3c('0x4f'))['field']('\x27'+_0x3e2a89+'\x27','createdAt')[_0xdf3c('0x6f')]('\x27'+_0x3e2a89+'\x27',_0xdf3c('0x47'))[_0xdf3c('0x70')](_0xdf3c('0x92'))['where'](_0xdf3c('0x93'))['where']('ListId\x20=\x20?',_0xb852c5[_0xdf3c('0x90')][_0xdf3c('0x91')]())['where'](_0xdf3c('0x94'))[_0xdf3c('0x29')]('phone\x20NOT\x20IN\x20(?)',squel[_0xdf3c('0x6e')]()[_0xdf3c('0x6f')]('COALESCE(calleridnum,\x27\x27)')[_0xdf3c('0x70')](_0xdf3c('0x95'))[_0xdf3c('0x29')](_0xdf3c('0x73'),_0x42d720[_0xdf3c('0x2f')]['id'][_0xdf3c('0x91')]()))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0xdf3c('0x6e')]()[_0xdf3c('0x6f')](_0xdf3c('0x96'))[_0xdf3c('0x70')](_0xdf3c('0x8a'))[_0xdf3c('0x29')]('VoiceQueueId\x20=\x20?',_0x42d720[_0xdf3c('0x2f')]['id'][_0xdf3c('0x91')]())))[_0xdf3c('0x91')]();break;case _0xdf3c('0x97'):_0x2cf46=squel['insert']()[_0xdf3c('0x89')](_0xdf3c('0x8a'))['fromQuery']([_0xdf3c('0x8f'),_0xdf3c('0x8c'),_0xdf3c('0x8d'),_0xdf3c('0x8e'),'VoiceQueueId',_0xdf3c('0x48'),_0xdf3c('0x47')],squel[_0xdf3c('0x6e')]()[_0xdf3c('0x6f')]('phone','phone')[_0xdf3c('0x6f')]('\x27'+_0x3e2a89+'\x27',_0xdf3c('0x8c'))[_0xdf3c('0x6f')]('id',_0xdf3c('0x8d'))[_0xdf3c('0x6f')](_0xb852c5[_0xdf3c('0x90')][_0xdf3c('0x91')](),_0xdf3c('0x8e'))['field'](_0x42d720[_0xdf3c('0x2f')]['id'][_0xdf3c('0x91')](),'VoiceQueueId')[_0xdf3c('0x6f')]('\x27'+_0x3e2a89+'\x27',_0xdf3c('0x48'))['field']('\x27'+_0x3e2a89+'\x27',_0xdf3c('0x47'))['from'](_0xdf3c('0x92'))[_0xdf3c('0x29')](_0xdf3c('0x93'))[_0xdf3c('0x29')]('ListId\x20=\x20?',_0xb852c5['CmListId']['toString']())[_0xdf3c('0x29')](_0xdf3c('0x94'))[_0xdf3c('0x29')](_0xdf3c('0x98'),squel[_0xdf3c('0x6e')]()[_0xdf3c('0x6f')](_0xdf3c('0x96'))['from'](_0xdf3c('0x8a'))[_0xdf3c('0x29')]('VoiceQueueId\x20=\x20?',_0x42d720[_0xdf3c('0x2f')]['id']['toString']())))[_0xdf3c('0x91')]();break;default:_0x2cf46=squel[_0xdf3c('0x88')]()[_0xdf3c('0x89')]('cm_hopper')[_0xdf3c('0x8b')]([_0xdf3c('0x8f'),_0xdf3c('0x8c'),_0xdf3c('0x8d'),_0xdf3c('0x8e'),'VoiceQueueId',_0xdf3c('0x48'),_0xdf3c('0x47')],squel[_0xdf3c('0x6e')]()[_0xdf3c('0x6f')](_0xdf3c('0x8f'),_0xdf3c('0x8f'))[_0xdf3c('0x6f')]('\x27'+_0x3e2a89+'\x27','scheduledAt')[_0xdf3c('0x6f')]('id',_0xdf3c('0x8d'))[_0xdf3c('0x6f')](_0xb852c5['CmListId'][_0xdf3c('0x91')](),'ListId')[_0xdf3c('0x6f')](_0x42d720[_0xdf3c('0x2f')]['id']['toString'](),_0xdf3c('0x4f'))[_0xdf3c('0x6f')]('\x27'+_0x3e2a89+'\x27',_0xdf3c('0x48'))[_0xdf3c('0x6f')]('\x27'+_0x3e2a89+'\x27',_0xdf3c('0x47'))[_0xdf3c('0x70')](_0xdf3c('0x92'))[_0xdf3c('0x29')](_0xdf3c('0x93'))[_0xdf3c('0x29')](_0xdf3c('0x99'),_0xb852c5[_0xdf3c('0x90')]['toString']())[_0xdf3c('0x29')]('phone\x20IS\x20NOT\x20NULL'))['toString']();}_0x43fc55['push'](db['sequelize'][_0xdf3c('0x2b')](_0x2cf46));}return BPromise[_0xdf3c('0x78')](_0x43fc55);}})[_0xdf3c('0x19')](function(){var _0x1eb736=[];var _0x321ff1=squel[_0xdf3c('0x88')]()['into'](_0xdf3c('0x9a'))['fromQuery']([_0xdf3c('0x9b'),_0xdf3c('0x8f'),_0xdf3c('0x9c'),_0xdf3c('0x48'),_0xdf3c('0x47')],squel[_0xdf3c('0x6e')]()[_0xdf3c('0x6f')](_0xdf3c('0x9d'))[_0xdf3c('0x6f')]('ci.item')[_0xdf3c('0x6f')](_0xdf3c('0x9e'))[_0xdf3c('0x6f')]('\x27'+_0x3e2a89+'\x27',_0xdf3c('0x48'))['field']('\x27'+_0x3e2a89+'\x27','updatedAt')[_0xdf3c('0x70')](_0xdf3c('0x9f'),'ci')[_0xdf3c('0x72')](_0xdf3c('0x8a'),'h','h.ContactId=ci.CmContactId')[_0xdf3c('0x29')](_0xdf3c('0xa0'),_0x3e2a89)[_0xdf3c('0x29')](_0xdf3c('0xa1'),_0xdf3c('0xa2')))[_0xdf3c('0x91')]();_0x1eb736[_0xdf3c('0x75')](db['sequelize'][_0xdf3c('0x2b')](_0x321ff1));return BPromise[_0xdf3c('0x78')](_0x1eb736);})[_0xdf3c('0x19')](function(){return _0x4f4afd;})[_0xdf3c('0x19')](respondWithResult(_0x2da908,null))[_0xdf3c('0x2e')](handleError(_0x2da908,null));};exports[_0xdf3c('0xa3')]=function(_0x51404d,_0x4cfc67){return db[_0xdf3c('0x26')][_0xdf3c('0x39')]({'where':{'id':_0x51404d[_0xdf3c('0x2f')]['id']}})[_0xdf3c('0x19')](handleEntityNotFound(_0x4cfc67,null))[_0xdf3c('0x19')](function(_0x5e06a2){if(_0x5e06a2){return _0x5e06a2[_0xdf3c('0xa3')](_0x51404d[_0xdf3c('0x2b')][_0xdf3c('0x6d')]);}})[_0xdf3c('0x19')](function(_0x2cab31){if(_0x2cab31){return db[_0xdf3c('0x50')]['destroy']({'where':{'ListId':_0x51404d[_0xdf3c('0x2b')][_0xdf3c('0x6d')],'VoiceQueueId':_0x51404d['params']['id']}})[_0xdf3c('0x19')](function(){return _0x2cab31;});}})['then'](respondWithStatusCode(_0x4cfc67,null))[_0xdf3c('0x2e')](handleError(_0x4cfc67,null));};exports[_0xdf3c('0xa4')]=function(_0xa6fa19,_0x16b173){var _0x578e41={};var _0x4815ee={};var _0xa523c8;var _0x52ae27;return db[_0xdf3c('0x26')][_0xdf3c('0x4a')]({'where':{'id':_0xa6fa19[_0xdf3c('0x2f')]['id']}})['then'](handleEntityNotFound(_0x16b173,null))[_0xdf3c('0x19')](function(_0x148785){if(_0x148785){_0xa523c8=_0x148785;_0x4815ee[_0xdf3c('0x34')]=_[_0xdf3c('0x30')](db['CmList']['rawAttributes']);_0x4815ee[_0xdf3c('0x2b')]=_['keys'](_0xa6fa19[_0xdf3c('0x2b')]);_0x4815ee[_0xdf3c('0x31')]=_[_0xdf3c('0x32')](_0x4815ee[_0xdf3c('0x34')],_0x4815ee[_0xdf3c('0x2b')]);_0x578e41['attributes']=_[_0xdf3c('0x32')](_0x4815ee[_0xdf3c('0x34')],qs[_0xdf3c('0x35')](_0xa6fa19['query'][_0xdf3c('0x35')]));_0x578e41[_0xdf3c('0x33')]=_0x578e41[_0xdf3c('0x33')][_0xdf3c('0x36')]?_0x578e41[_0xdf3c('0x33')]:_0x4815ee[_0xdf3c('0x34')];_0x578e41[_0xdf3c('0x4c')]=qs['sort'](_0xa6fa19['query'][_0xdf3c('0x4d')]);_0x578e41['where']=qs[_0xdf3c('0x31')](_[_0xdf3c('0x4e')](_0xa6fa19[_0xdf3c('0x2b')],_0x4815ee[_0xdf3c('0x31')]));if(_0xa6fa19['query'][_0xdf3c('0x1f')]){_0x578e41['where']=_[_0xdf3c('0x45')](_0x578e41['where'],{'$or':_[_0xdf3c('0x20')](_0x578e41[_0xdf3c('0x33')],function(_0x36fb96){var _0x2ac2ca={};_0x2ac2ca[_0x36fb96]={'$like':'%'+_0xa6fa19[_0xdf3c('0x2b')][_0xdf3c('0x1f')]+'%'};return _0x2ac2ca;})});}_0x578e41=_[_0xdf3c('0x45')]({},_0x578e41,_0xa6fa19['options']);return _0xa523c8[_0xdf3c('0xa4')](_0x578e41);}})[_0xdf3c('0x19')](function(_0x25d312){if(_0x25d312){_0x52ae27=_0x25d312[_0xdf3c('0x36')];if(!_0xa6fa19['query'][_0xdf3c('0x4b')](_0xdf3c('0x55'))){_0x578e41[_0xdf3c('0x14')]=qs[_0xdf3c('0x14')](_0xa6fa19[_0xdf3c('0x2b')]['limit']);_0x578e41['offset']=qs['offset'](_0xa6fa19[_0xdf3c('0x2b')]['offset']);}return _0xa523c8[_0xdf3c('0xa4')](_0x578e41);}})['then'](function(_0xbbc217){if(_0xbbc217){return _0xbbc217?{'count':_0x52ae27,'rows':_0xbbc217}:null;}})[_0xdf3c('0x19')](respondWithResult(_0x16b173,null))[_0xdf3c('0x2e')](handleError(_0x16b173,null));};exports['addBlackLists']=function(_0x47d44e,_0x4dd133){var _0x2b8425;return db[_0xdf3c('0x26')]['find']({'where':{'id':_0x47d44e[_0xdf3c('0x2f')]['id']}})[_0xdf3c('0x19')](handleEntityNotFound(_0x4dd133,null))[_0xdf3c('0x19')](function(_0x4009e0){if(_0x4009e0){return _0x4009e0[_0xdf3c('0xa5')](_0x47d44e[_0xdf3c('0x3b')][_0xdf3c('0x6d')],_[_0xdf3c('0x46')](_0x47d44e['body'],[_0xdf3c('0x6d'),'id'])||{});}return null;})[_0xdf3c('0x7d')](function(_0x37e578){var _0x11436f;_0x2b8425=_0x37e578||[];var _0x1d66b6=[];if(_0x37e578){for(var _0x4b4bab=0x0;_0x4b4bab<_0x37e578[_0xdf3c('0x36')];_0x4b4bab+=0x1){var _0x290778=_0x37e578[_0x4b4bab][_0xdf3c('0x1b')]({'plain':!![]});_0x11436f=squel[_0xdf3c('0x88')]()[_0xdf3c('0x89')](_0xdf3c('0xa6'))['fromQuery']([_0xdf3c('0x8f'),'ContactId',_0xdf3c('0x8e'),_0xdf3c('0x4f'),_0xdf3c('0x48'),_0xdf3c('0x47')],squel[_0xdf3c('0x6e')]()[_0xdf3c('0x6f')](_0xdf3c('0x8f'),_0xdf3c('0x8f'))[_0xdf3c('0x6f')]('id','ContactId')[_0xdf3c('0x6f')](_0x290778[_0xdf3c('0x90')][_0xdf3c('0x91')](),'ListId')[_0xdf3c('0x6f')](_0x47d44e['params']['id'][_0xdf3c('0x91')](),_0xdf3c('0x4f'))[_0xdf3c('0x6f')](_0xdf3c('0xa7'),_0xdf3c('0x48'))[_0xdf3c('0x6f')](_0xdf3c('0xa7'),_0xdf3c('0x47'))[_0xdf3c('0x70')](_0xdf3c('0x92'))[_0xdf3c('0x29')](_0xdf3c('0x93'))['where']('ListId\x20=\x20?',_0x290778['CmListId'][_0xdf3c('0x91')]())[_0xdf3c('0x29')](_0xdf3c('0x94')))[_0xdf3c('0x91')]();_0x1d66b6[_0xdf3c('0x75')](db[_0xdf3c('0x76')][_0xdf3c('0x2b')](_0x11436f));}return BPromise[_0xdf3c('0x78')](_0x1d66b6);}})[_0xdf3c('0x19')](function(){return _0x2b8425;})[_0xdf3c('0x19')](respondWithResult(_0x4dd133,null))[_0xdf3c('0x2e')](handleError(_0x4dd133,null));};exports[_0xdf3c('0xa8')]=function(_0xc5ac78,_0x567748){return db['VoiceQueue'][_0xdf3c('0x39')]({'where':{'id':_0xc5ac78[_0xdf3c('0x2f')]['id']}})[_0xdf3c('0x19')](handleEntityNotFound(_0x567748,null))['then'](function(_0x290a39){if(_0x290a39){return _0x290a39['removeBlackLists'](_0xc5ac78[_0xdf3c('0x2b')][_0xdf3c('0x6d')]);}})['then'](function(_0xabf05c){if(_0xabf05c){return db[_0xdf3c('0x57')][_0xdf3c('0x1a')]({'where':{'ListId':_0xc5ac78[_0xdf3c('0x2b')][_0xdf3c('0x6d')],'VoiceQueueId':_0xc5ac78[_0xdf3c('0x2f')]['id']}})[_0xdf3c('0x19')](function(){return _0xabf05c;});}})[_0xdf3c('0x19')](respondWithStatusCode(_0x567748,null))['catch'](handleError(_0x567748,null));};
\ No newline at end of file
index 1b0a748..6a2f9d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8115=['VoiceQueue','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0xa6e54f,_0x34dfbe){var _0x70e0c6=function(_0x34054a){while(--_0x34054a){_0xa6e54f['push'](_0xa6e54f['shift']());}};_0x70e0c6(++_0x34dfbe);}(_0x8115,0x1c8));var _0x5811=function(_0x4a07c6,_0x2c6283){_0x4a07c6=_0x4a07c6-0x0;var _0x11eb00=_0x8115[_0x4a07c6];return _0x11eb00;};'use strict';var EventEmitter=require('events');var VoiceQueue=require('../../mysqldb')['db'][_0x5811('0x0')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5811('0x1'),'afterUpdate':_0x5811('0x2'),'afterDestroy':_0x5811('0x3')};function emitEvent(_0x2590aa){return function(_0x251241,_0x23b679,_0x43d966){VoiceQueueEvents[_0x5811('0x4')](_0x2590aa+':'+_0x251241['id'],_0x251241);VoiceQueueEvents[_0x5811('0x4')](_0x2590aa,_0x251241);_0x43d966(null);};}for(var e in events){if(events[_0x5811('0x5')](e)){var event=events[e];VoiceQueue[_0x5811('0x6')](e,emitEvent(event));}}module[_0x5811('0x7')]=VoiceQueueEvents;
\ No newline at end of file
+var _0xd025=['save','remove','emit','exports','events','../../mysqldb'];(function(_0x9af1e0,_0x51b40e){var _0x46f55d=function(_0x2c629e){while(--_0x2c629e){_0x9af1e0['push'](_0x9af1e0['shift']());}};_0x46f55d(++_0x51b40e);}(_0xd025,0xb2));var _0x5d02=function(_0xccce62,_0x19d755){_0xccce62=_0xccce62-0x0;var _0x1025a8=_0xd025[_0xccce62];return _0x1025a8;};'use strict';var EventEmitter=require(_0x5d02('0x0'));var VoiceQueue=require(_0x5d02('0x1'))['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5d02('0x2'),'afterUpdate':'update','afterDestroy':_0x5d02('0x3')};function emitEvent(_0x3ac497){return function(_0x549cb6,_0x5aae36,_0x1742be){VoiceQueueEvents[_0x5d02('0x4')](_0x3ac497+':'+_0x549cb6['id'],_0x549cb6);VoiceQueueEvents['emit'](_0x3ac497,_0x549cb6);_0x1742be(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue['hook'](e,emitEvent(event));}}module[_0x5d02('0x5')]=VoiceQueueEvents;
\ No newline at end of file
index 3a411d7..e8cb5b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['voice_queues','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./voiceQueue.attributes'];(function(_0x1385fe,_0x55a7d8){var _0x4903e6=function(_0x382ecb){while(--_0x382ecb){_0x1385fe['push'](_0x1385fe['shift']());}};_0x4903e6(++_0x55a7d8);}(_0x70e0,0x17b));var _0x070e=function(_0x4560ba,_0x2bd389){_0x4560ba=_0x4560ba-0x0;var _0x4e7f59=_0x70e0[_0x4560ba];return _0x4e7f59;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var logger=require(_0x070e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x070e('0x3'));var rp=require(_0x070e('0x4'));var fs=require('fs');var path=require(_0x070e('0x5'));var rimraf=require(_0x070e('0x6'));var config=require('../../config/environment');var attributes=require(_0x070e('0x7'));module['exports']=function(_0x46fe68,_0x4b041d){return _0x46fe68['define']('VoiceQueue',attributes,{'tableName':_0x070e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9c44=['request-promise','path','./voiceQueue.attributes','define','VoiceQueue','voice_queues','../../config/logger','api','moment','bluebird'];(function(_0x16097f,_0x51d8c6){var _0x48baa3=function(_0x5c5b85){while(--_0x5c5b85){_0x16097f['push'](_0x16097f['shift']());}};_0x48baa3(++_0x51d8c6);}(_0x9c44,0x178));var _0x49c4=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x9c44[_0x2dea24];return _0x309d58;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x49c4('0x0'))(_0x49c4('0x1'));var moment=require(_0x49c4('0x2'));var BPromise=require(_0x49c4('0x3'));var rp=require(_0x49c4('0x4'));var fs=require('fs');var path=require(_0x49c4('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x49c4('0x6'));module['exports']=function(_0xc1278f,_0x6030ae){return _0xc1278f[_0x49c4('0x7')](_0x49c4('0x8'),attributes,{'tableName':_0x49c4('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b5b5b2e..e6c7bb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x341c=['error','code','message','VoiceQueue,\x20%s,\x20%s','result','catch','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','attributes','limit','include','map','model','stringify','find','ShowVoiceQueue','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceQueue.socket','register','then','info','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s'];(function(_0xa84046,_0x456128){var _0x156dae=function(_0x2e5bf4){while(--_0x2e5bf4){_0xa84046['push'](_0xa84046['shift']());}};_0x156dae(++_0x456128);}(_0x341c,0x164));var _0xc341=function(_0x2100d6,_0x55362c){_0x2100d6=_0x2100d6-0x0;var _0x298ddd=_0x341c[_0x2100d6];return _0x298ddd;};'use strict';var _=require(_0xc341('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xc341('0x1'));var rs=require(_0xc341('0x2'));var fs=require('fs');var Redis=require(_0xc341('0x3'));var db=require(_0xc341('0x4'))['db'];var utils=require(_0xc341('0x5'));var logger=require(_0xc341('0x6'))(_0xc341('0x7'));var config=require('../../config/environment');var jayson=require(_0xc341('0x8'));var client=jayson[_0xc341('0x9')][_0xc341('0xa')]({'port':0x232a});config[_0xc341('0xb')]=_[_0xc341('0xc')](config['redis'],{'host':_0xc341('0xd'),'port':0x18eb});var socket=require(_0xc341('0xe'))(new Redis(config[_0xc341('0xb')]));require(_0xc341('0xf'))[_0xc341('0x10')](socket);function respondWithRpcPromise(_0x3e868d,_0x2d5627,_0x472a29){return new BPromise(function(_0xa20650,_0x219540){return client['request'](_0x3e868d,_0x472a29)[_0xc341('0x11')](function(_0x55af72){logger[_0xc341('0x12')]('VoiceQueue,\x20%s,\x20%s',_0x2d5627,_0xc341('0x13'));logger[_0xc341('0x14')](_0xc341('0x15'),_0x2d5627,_0xc341('0x13'),JSON['stringify'](_0x55af72));if(_0x55af72[_0xc341('0x16')]){if(_0x55af72['error'][_0xc341('0x17')]===0x1f4){logger[_0xc341('0x16')]('VoiceQueue,\x20%s,\x20%s',_0x2d5627,_0x55af72[_0xc341('0x16')][_0xc341('0x18')]);return _0x219540(_0x55af72['error']['message']);}logger[_0xc341('0x16')](_0xc341('0x19'),_0x2d5627,_0x55af72[_0xc341('0x16')]['message']);return _0xa20650(_0x55af72[_0xc341('0x16')][_0xc341('0x18')]);}else{logger[_0xc341('0x12')](_0xc341('0x19'),_0x2d5627,_0xc341('0x13'));_0xa20650(_0x55af72[_0xc341('0x1a')][_0xc341('0x18')]);}})[_0xc341('0x1b')](function(_0x363124){logger[_0xc341('0x16')](_0xc341('0x19'),_0x2d5627,_0x363124);_0x219540(_0x363124);});});}exports[_0xc341('0x1c')]=function(_0x149b8d){var _0x9a769=this;return new Promise(function(_0x2f9a05,_0x3d21aa){return db[_0xc341('0x1d')][_0xc341('0x1e')]({'raw':_0x149b8d[_0xc341('0x1f')]?_0x149b8d[_0xc341('0x1f')][_0xc341('0x20')]===undefined?!![]:![]:!![],'where':_0x149b8d[_0xc341('0x1f')]?_0x149b8d[_0xc341('0x1f')][_0xc341('0x21')]||null:null,'attributes':_0x149b8d[_0xc341('0x1f')]?_0x149b8d[_0xc341('0x1f')][_0xc341('0x22')]||null:null,'limit':_0x149b8d[_0xc341('0x1f')]?_0x149b8d[_0xc341('0x1f')][_0xc341('0x23')]||null:null,'include':_0x149b8d['options']?_0x149b8d[_0xc341('0x1f')][_0xc341('0x24')]?_[_0xc341('0x25')](_0x149b8d['options'][_0xc341('0x24')],function(_0x4b246d){return{'model':db[_0x4b246d[_0xc341('0x26')]],'as':_0x4b246d['as'],'attributes':_0x4b246d[_0xc341('0x22')],'include':_0x4b246d[_0xc341('0x24')]?_[_0xc341('0x25')](_0x4b246d[_0xc341('0x24')],function(_0x5ada7a){return{'model':db[_0x5ada7a[_0xc341('0x26')]],'as':_0x5ada7a['as'],'attributes':_0x5ada7a[_0xc341('0x22')],'include':_0x5ada7a[_0xc341('0x24')]?_[_0xc341('0x25')](_0x5ada7a['include'],function(_0x56034d){return{'model':db[_0x56034d[_0xc341('0x26')]],'as':_0x56034d['as'],'attributes':_0x56034d[_0xc341('0x22')]};}):[]};}):[]};}):[]:[]})[_0xc341('0x11')](function(_0x2d52dc){logger['info']('GetVoiceQueue',_0x149b8d);logger[_0xc341('0x14')](_0xc341('0x1c'),_0x149b8d,JSON[_0xc341('0x27')](_0x2d52dc));_0x2f9a05(_0x2d52dc);})[_0xc341('0x1b')](function(_0x5e480f){logger[_0xc341('0x16')](_0xc341('0x1c'),_0x5e480f[_0xc341('0x18')],_0x149b8d);_0x3d21aa(_0x9a769['error'](0x1f4,_0x5e480f[_0xc341('0x18')]));});});};exports['ShowVoiceQueue']=function(_0x57eb92){var _0x2d98e2=this;return new Promise(function(_0x7302e9,_0x53a1e9){return db['VoiceQueue'][_0xc341('0x28')]({'raw':_0x57eb92[_0xc341('0x1f')]?_0x57eb92[_0xc341('0x1f')][_0xc341('0x20')]===undefined?!![]:![]:!![],'where':_0x57eb92[_0xc341('0x1f')]?_0x57eb92['options']['where']||null:null,'attributes':_0x57eb92['options']?_0x57eb92[_0xc341('0x1f')][_0xc341('0x22')]||null:null,'include':_0x57eb92[_0xc341('0x1f')]?_0x57eb92[_0xc341('0x1f')][_0xc341('0x24')]?_[_0xc341('0x25')](_0x57eb92['options'][_0xc341('0x24')],function(_0x49e015){return{'model':db[_0x49e015['model']],'as':_0x49e015['as'],'attributes':_0x49e015[_0xc341('0x22')],'include':_0x49e015[_0xc341('0x24')]?_[_0xc341('0x25')](_0x49e015[_0xc341('0x24')],function(_0xf92b1a){return{'model':db[_0xf92b1a['model']],'as':_0xf92b1a['as'],'attributes':_0xf92b1a[_0xc341('0x22')],'include':_0xf92b1a[_0xc341('0x24')]?_[_0xc341('0x25')](_0xf92b1a[_0xc341('0x24')],function(_0x1eb1ef){return{'model':db[_0x1eb1ef[_0xc341('0x26')]],'as':_0x1eb1ef['as'],'attributes':_0x1eb1ef[_0xc341('0x22')]};}):[]};}):[]};}):[]:[]})[_0xc341('0x11')](function(_0x1d7c78){logger[_0xc341('0x12')]('ShowVoiceQueue',_0x57eb92);logger[_0xc341('0x14')](_0xc341('0x29'),_0x57eb92,JSON[_0xc341('0x27')](_0x1d7c78));_0x7302e9(_0x1d7c78);})[_0xc341('0x1b')](function(_0x3b0c74){logger['error'](_0xc341('0x29'),_0x3b0c74['message'],_0x57eb92);_0x53a1e9(_0x2d98e2[_0xc341('0x16')](0x1f4,_0x3b0c74['message']));});});};
\ No newline at end of file
+var _0x62d2=['client','http','redis','localhost','socket.io-emitter','register','request','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetVoiceQueue','findAll','options','raw','where','attributes','include','map','model','stringify','VoiceQueue','ShowVoiceQueue','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x62d2,0x8f));var _0x262d=function(_0x818500,_0xe7620c){_0x818500=_0x818500-0x0;var _0x342023=_0x62d2[_0x818500];return _0x342023;};'use strict';var _=require(_0x262d('0x0'));var util=require(_0x262d('0x1'));var moment=require('moment');var BPromise=require(_0x262d('0x2'));var rs=require(_0x262d('0x3'));var fs=require('fs');var Redis=require(_0x262d('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x262d('0x5'));var logger=require(_0x262d('0x6'))(_0x262d('0x7'));var config=require(_0x262d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x262d('0x9')][_0x262d('0xa')]({'port':0x232a});config[_0x262d('0xb')]=_['defaults'](config[_0x262d('0xb')],{'host':_0x262d('0xc'),'port':0x18eb});var socket=require(_0x262d('0xd'))(new Redis(config[_0x262d('0xb')]));require('./voiceQueue.socket')[_0x262d('0xe')](socket);function respondWithRpcPromise(_0x9db867,_0x1afe49,_0x310bbe){return new BPromise(function(_0x470068,_0x3507b0){return client[_0x262d('0xf')](_0x9db867,_0x310bbe)[_0x262d('0x10')](function(_0x304bff){logger[_0x262d('0x11')](_0x262d('0x12'),_0x1afe49,_0x262d('0x13'));logger[_0x262d('0x14')](_0x262d('0x15'),_0x1afe49,_0x262d('0x13'),JSON['stringify'](_0x304bff));if(_0x304bff[_0x262d('0x16')]){if(_0x304bff['error'][_0x262d('0x17')]===0x1f4){logger[_0x262d('0x16')](_0x262d('0x12'),_0x1afe49,_0x304bff[_0x262d('0x16')]['message']);return _0x3507b0(_0x304bff['error'][_0x262d('0x18')]);}logger['error'](_0x262d('0x12'),_0x1afe49,_0x304bff[_0x262d('0x16')][_0x262d('0x18')]);return _0x470068(_0x304bff['error'][_0x262d('0x18')]);}else{logger[_0x262d('0x11')]('VoiceQueue,\x20%s,\x20%s',_0x1afe49,_0x262d('0x13'));_0x470068(_0x304bff['result']['message']);}})[_0x262d('0x19')](function(_0x551170){logger[_0x262d('0x16')](_0x262d('0x12'),_0x1afe49,_0x551170);_0x3507b0(_0x551170);});});}exports[_0x262d('0x1a')]=function(_0xb2ed08){var _0x62b573=this;return new Promise(function(_0x555627,_0x49d7e6){return db['VoiceQueue'][_0x262d('0x1b')]({'raw':_0xb2ed08[_0x262d('0x1c')]?_0xb2ed08['options'][_0x262d('0x1d')]===undefined?!![]:![]:!![],'where':_0xb2ed08[_0x262d('0x1c')]?_0xb2ed08[_0x262d('0x1c')][_0x262d('0x1e')]||null:null,'attributes':_0xb2ed08['options']?_0xb2ed08[_0x262d('0x1c')][_0x262d('0x1f')]||null:null,'limit':_0xb2ed08[_0x262d('0x1c')]?_0xb2ed08[_0x262d('0x1c')]['limit']||null:null,'include':_0xb2ed08[_0x262d('0x1c')]?_0xb2ed08['options'][_0x262d('0x20')]?_[_0x262d('0x21')](_0xb2ed08[_0x262d('0x1c')][_0x262d('0x20')],function(_0x5edbd9){return{'model':db[_0x5edbd9['model']],'as':_0x5edbd9['as'],'attributes':_0x5edbd9[_0x262d('0x1f')],'include':_0x5edbd9[_0x262d('0x20')]?_[_0x262d('0x21')](_0x5edbd9[_0x262d('0x20')],function(_0xad80b4){return{'model':db[_0xad80b4[_0x262d('0x22')]],'as':_0xad80b4['as'],'attributes':_0xad80b4[_0x262d('0x1f')],'include':_0xad80b4[_0x262d('0x20')]?_[_0x262d('0x21')](_0xad80b4[_0x262d('0x20')],function(_0x58b8ef){return{'model':db[_0x58b8ef[_0x262d('0x22')]],'as':_0x58b8ef['as'],'attributes':_0x58b8ef[_0x262d('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x262d('0x10')](function(_0x4ea71b){logger[_0x262d('0x11')]('GetVoiceQueue',_0xb2ed08);logger[_0x262d('0x14')](_0x262d('0x1a'),_0xb2ed08,JSON[_0x262d('0x23')](_0x4ea71b));_0x555627(_0x4ea71b);})[_0x262d('0x19')](function(_0x146aa5){logger[_0x262d('0x16')](_0x262d('0x1a'),_0x146aa5['message'],_0xb2ed08);_0x49d7e6(_0x62b573['error'](0x1f4,_0x146aa5[_0x262d('0x18')]));});});};exports['ShowVoiceQueue']=function(_0x475136){var _0x1c0ce3=this;return new Promise(function(_0x4ec2af,_0x1728e5){return db[_0x262d('0x24')]['find']({'raw':_0x475136['options']?_0x475136['options'][_0x262d('0x1d')]===undefined?!![]:![]:!![],'where':_0x475136[_0x262d('0x1c')]?_0x475136[_0x262d('0x1c')][_0x262d('0x1e')]||null:null,'attributes':_0x475136[_0x262d('0x1c')]?_0x475136['options']['attributes']||null:null,'include':_0x475136[_0x262d('0x1c')]?_0x475136['options'][_0x262d('0x20')]?_[_0x262d('0x21')](_0x475136[_0x262d('0x1c')][_0x262d('0x20')],function(_0x265228){return{'model':db[_0x265228[_0x262d('0x22')]],'as':_0x265228['as'],'attributes':_0x265228[_0x262d('0x1f')],'include':_0x265228[_0x262d('0x20')]?_[_0x262d('0x21')](_0x265228[_0x262d('0x20')],function(_0x2fcfe8){return{'model':db[_0x2fcfe8['model']],'as':_0x2fcfe8['as'],'attributes':_0x2fcfe8[_0x262d('0x1f')],'include':_0x2fcfe8[_0x262d('0x20')]?_['map'](_0x2fcfe8[_0x262d('0x20')],function(_0x4b877f){return{'model':db[_0x4b877f[_0x262d('0x22')]],'as':_0x4b877f['as'],'attributes':_0x4b877f[_0x262d('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x536917){logger['info'](_0x262d('0x25'),_0x475136);logger[_0x262d('0x14')](_0x262d('0x25'),_0x475136,JSON[_0x262d('0x23')](_0x536917));_0x4ec2af(_0x536917);})[_0x262d('0x19')](function(_0x17faea){logger[_0x262d('0x16')](_0x262d('0x25'),_0x17faea[_0x262d('0x18')],_0x475136);_0x1728e5(_0x1c0ce3[_0x262d('0x16')](0x1f4,_0x17faea[_0x262d('0x18')]));});});};
\ No newline at end of file
index 2dacbfc..ce969bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe897=['./voiceQueue.events','remove','update','emit','removeListener','register','voiceQueue:'];(function(_0x4b68cf,_0x53cfe1){var _0x348ff3=function(_0x1b6ff8){while(--_0x1b6ff8){_0x4b68cf['push'](_0x4b68cf['shift']());}};_0x348ff3(++_0x53cfe1);}(_0xe897,0xa8));var _0x7e89=function(_0x929c7e,_0x38c4cc){_0x929c7e=_0x929c7e-0x0;var _0x5de099=_0xe897[_0x929c7e];return _0x5de099;};'use strict';var VoiceQueueEvents=require(_0x7e89('0x0'));var events=['save',_0x7e89('0x1'),_0x7e89('0x2')];function createListener(_0x3114f6,_0x3a442a){return function(_0x2228c5){_0x3a442a[_0x7e89('0x3')](_0x3114f6,_0x2228c5);};}function removeListener(_0x288ccf,_0x1b2695){return function(){VoiceQueueEvents[_0x7e89('0x4')](_0x288ccf,_0x1b2695);};}exports[_0x7e89('0x5')]=function(_0x5ff6b9){for(var _0x21447c=0x0,_0x16dd63=events['length'];_0x21447c<_0x16dd63;_0x21447c++){var _0x2ed128=events[_0x21447c];var _0x551824=createListener(_0x7e89('0x6')+_0x2ed128,_0x5ff6b9);VoiceQueueEvents['on'](_0x2ed128,_0x551824);}};
\ No newline at end of file
+var _0xb261=['removeListener','./voiceQueue.events','remove','update','emit'];(function(_0x28f01d,_0x14e7dc){var _0x491ad6=function(_0x4ce3af){while(--_0x4ce3af){_0x28f01d['push'](_0x28f01d['shift']());}};_0x491ad6(++_0x14e7dc);}(_0xb261,0x178));var _0x1b26=function(_0x21ef85,_0x2d9f4f){_0x21ef85=_0x21ef85-0x0;var _0x5b9a7d=_0xb261[_0x21ef85];return _0x5b9a7d;};'use strict';var VoiceQueueEvents=require(_0x1b26('0x0'));var events=['save',_0x1b26('0x1'),_0x1b26('0x2')];function createListener(_0xef78ce,_0x297128){return function(_0x225a8a){_0x297128[_0x1b26('0x3')](_0xef78ce,_0x225a8a);};}function removeListener(_0x2c1c15,_0x3d49b8){return function(){VoiceQueueEvents[_0x1b26('0x4')](_0x2c1c15,_0x3d49b8);};}exports['register']=function(_0x4770f2){for(var _0x5c1824=0x0,_0x31ac50=events['length'];_0x5c1824<_0x31ac50;_0x5c1824++){var _0x46e1f0=events[_0x5c1824];var _0x2a26db=createListener('voiceQueue:'+_0x46e1f0,_0x4770f2);VoiceQueueEvents['on'](_0x46e1f0,_0x2a26db);}};
\ No newline at end of file
index 39118ac..8d6eb3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf11=['connect-timeout','express','Router','../../components/interaction/service','./voiceQueueReport.controller','get','index','isAuthenticated','describe','/index','getVoiceQueuesReport','/:id','show','post','create','put','update','delete','destroy','multer','path'];(function(_0x46d45d,_0xfb8b6a){var _0x46eb47=function(_0x179913){while(--_0x179913){_0x46d45d['push'](_0x46d45d['shift']());}};_0x46eb47(++_0xfb8b6a);}(_0xbf11,0x91));var _0x1bf1=function(_0x283f1a,_0x271f9a){_0x283f1a=_0x283f1a-0x0;var _0x3eeb4c=_0xbf11[_0x283f1a];return _0x3eeb4c;};'use strict';var multer=require(_0x1bf1('0x0'));var util=require('util');var path=require(_0x1bf1('0x1'));var timeout=require(_0x1bf1('0x2'));var express=require(_0x1bf1('0x3'));var router=express[_0x1bf1('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x1bf1('0x5'));var config=require('../../config/environment');var controller=require(_0x1bf1('0x6'));router[_0x1bf1('0x7')]('/',auth['isAuthenticated'](),controller[_0x1bf1('0x8')]);router[_0x1bf1('0x7')]('/describe',auth[_0x1bf1('0x9')](),controller[_0x1bf1('0xa')]);router[_0x1bf1('0x7')](_0x1bf1('0xb'),auth[_0x1bf1('0x9')](),controller[_0x1bf1('0xc')]);router[_0x1bf1('0x7')](_0x1bf1('0xd'),auth[_0x1bf1('0x9')](),controller[_0x1bf1('0xe')]);router[_0x1bf1('0xf')]('/',auth[_0x1bf1('0x9')](),controller[_0x1bf1('0x10')]);router[_0x1bf1('0x11')](_0x1bf1('0xd'),auth[_0x1bf1('0x9')](),controller[_0x1bf1('0x12')]);router[_0x1bf1('0x13')](_0x1bf1('0xd'),auth[_0x1bf1('0x9')](),controller[_0x1bf1('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xefee=['get','describe','getVoiceQueuesReport','post','put','update','delete','/:id','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueueReport.controller','isAuthenticated','index'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xefee,0x120));var _0xeefe=function(_0x179fbb,_0x26513f){_0x179fbb=_0x179fbb-0x0;var _0x13cd1c=_0xefee[_0x179fbb];return _0x13cd1c;};'use strict';var multer=require(_0xeefe('0x0'));var util=require(_0xeefe('0x1'));var path=require('path');var timeout=require(_0xeefe('0x2'));var express=require(_0xeefe('0x3'));var router=express[_0xeefe('0x4')]();var fs_extra=require(_0xeefe('0x5'));var auth=require(_0xeefe('0x6'));var interaction=require(_0xeefe('0x7'));var config=require(_0xeefe('0x8'));var controller=require(_0xeefe('0x9'));router['get']('/',auth[_0xeefe('0xa')](),controller[_0xeefe('0xb')]);router[_0xeefe('0xc')]('/describe',auth[_0xeefe('0xa')](),controller[_0xeefe('0xd')]);router[_0xeefe('0xc')]('/index',auth[_0xeefe('0xa')](),controller[_0xeefe('0xe')]);router[_0xeefe('0xc')]('/:id',auth[_0xeefe('0xa')](),controller['show']);router[_0xeefe('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0xeefe('0x10')]('/:id',auth[_0xeefe('0xa')](),controller[_0xeefe('0x11')]);router[_0xeefe('0x12')](_0xeefe('0x13'),auth[_0xeefe('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 473ff24..634d5ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fed=['BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE','getDataValue','format','diff','seconds','setDataValue','queuecallerleaveAt','INTEGER'];(function(_0x205837,_0x3bec85){var _0x9b77e8=function(_0x278cfa){while(--_0x278cfa){_0x205837['push'](_0x205837['shift']());}};_0x9b77e8(++_0x3bec85);}(_0x3fed,0x99));var _0xd3fe=function(_0x17a43c,_0x2360d8){_0x17a43c=_0x17a43c-0x0;var _0x3a69dc=_0x3fed[_0x17a43c];return _0x3a69dc;};'use strict';var Sequelize=require(_0xd3fe('0x0'));var moment=require(_0xd3fe('0x1'));module[_0xd3fe('0x2')]={'type':{'type':Sequelize[_0xd3fe('0x3')]},'uniqueid':{'type':Sequelize[_0xd3fe('0x3')]},'calleridnum':{'type':Sequelize[_0xd3fe('0x3')]},'calleridname':{'type':Sequelize[_0xd3fe('0x3')]},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0xd3fe('0x4')],'set':function(_0x3b7974){var _0xfc9f40=moment(_0x3b7974);var _0x1c9a98=moment(this[_0xd3fe('0x5')]('queuecallerjoinAt'))[_0xd3fe('0x6')]('YYYY-MM-DD\x20HH:mm:ss');var _0x1c8d4e=_0xfc9f40[_0xd3fe('0x7')](_0x1c9a98,_0xd3fe('0x8'));this[_0xd3fe('0x9')](_0xd3fe('0xa'),_0x3b7974);this[_0xd3fe('0x9')]('holdtime',_0x1c8d4e||null);}},'position':{'type':Sequelize[_0xd3fe('0xb')]},'count':{'type':Sequelize[_0xd3fe('0xb')]},'queuecallerabandon':{'type':Sequelize[_0xd3fe('0xc')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xd3fe('0x4')]},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xd3fe('0x4')]},'queuecallerexit':{'type':Sequelize[_0xd3fe('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0xd3fe('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0xd3fe('0x3')],'comment':_0xd3fe('0xd')},'originalposition':{'type':Sequelize[_0xd3fe('0xb')]},'channel':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0xd3fe('0x3')]},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xd3fe('0x3')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0xd3fe('0x3')]},'holdtime':{'type':Sequelize[_0xd3fe('0xb')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xd3fe('0x3')]},'transfer':{'type':Sequelize[_0xd3fe('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0xd3fe('0xe')},'transferexten':{'type':Sequelize[_0xd3fe('0x3')]},'transferuniqueid':{'type':Sequelize[_0xd3fe('0x3')]},'disposition':{'type':Sequelize[_0xd3fe('0x3')]},'secondDisposition':{'type':Sequelize[_0xd3fe('0x3')]},'thirdDisposition':{'type':Sequelize[_0xd3fe('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0xd3fe('0xb')],'defaultValue':0x0},'note':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x98e7=['holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','moment','exports','STRING','DATE','getDataValue','queuecallerjoinAt','format','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','queuecallerleaveAt','setDataValue'];(function(_0x30ba6c,_0x234a17){var _0x9c7617=function(_0x166660){while(--_0x166660){_0x30ba6c['push'](_0x30ba6c['shift']());}};_0x9c7617(++_0x234a17);}(_0x98e7,0x16d));var _0x798e=function(_0x69745b,_0x493b54){_0x69745b=_0x69745b-0x0;var _0xd32538=_0x98e7[_0x69745b];return _0xd32538;};'use strict';var Sequelize=require(_0x798e('0x0'));var moment=require(_0x798e('0x1'));module[_0x798e('0x2')]={'type':{'type':Sequelize[_0x798e('0x3')]},'uniqueid':{'type':Sequelize[_0x798e('0x3')]},'calleridnum':{'type':Sequelize[_0x798e('0x3')]},'calleridname':{'type':Sequelize[_0x798e('0x3')]},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0x798e('0x4')]},'queuecallerleaveAt':{'type':Sequelize[_0x798e('0x4')],'set':function(_0x5959c4){var _0x21955f=moment(_0x5959c4);var _0x11294d=moment(this[_0x798e('0x5')](_0x798e('0x6')))[_0x798e('0x7')](_0x798e('0x8'));var _0x276368=_0x21955f[_0x798e('0x9')](_0x11294d,_0x798e('0xa'));this['setDataValue'](_0x798e('0xb'),_0x5959c4);this[_0x798e('0xc')](_0x798e('0xd'),_0x276368||null);}},'position':{'type':Sequelize[_0x798e('0xe')]},'count':{'type':Sequelize[_0x798e('0xe')]},'queuecallerabandon':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x798e('0x4')]},'queuecallercomplete':{'type':Sequelize[_0x798e('0xf')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize['DATE']},'queuecallerexit':{'type':Sequelize[_0x798e('0xf')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize[_0x798e('0x4')]},'queuecallerexitreason':{'type':Sequelize[_0x798e('0x3')],'comment':_0x798e('0x10')},'originalposition':{'type':Sequelize[_0x798e('0xe')]},'channel':{'type':Sequelize[_0x798e('0x3')]},'connectedlinenum':{'type':Sequelize[_0x798e('0x3')]},'connectedlinename':{'type':Sequelize[_0x798e('0x3')]},'accountcode':{'type':Sequelize[_0x798e('0x3')]},'context':{'type':Sequelize[_0x798e('0x3')]},'exten':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x798e('0x3')]},'holdtime':{'type':Sequelize[_0x798e('0xe')]},'mohtime':{'type':Sequelize[_0x798e('0xe')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x798e('0xf')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x798e('0xf')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0x798e('0x11')},'transferexten':{'type':Sequelize[_0x798e('0x3')]},'transferuniqueid':{'type':Sequelize[_0x798e('0x3')]},'disposition':{'type':Sequelize[_0x798e('0x3')]},'secondDisposition':{'type':Sequelize[_0x798e('0x3')]},'thirdDisposition':{'type':Sequelize[_0x798e('0x3')]},'queuecallerenterreason':{'type':Sequelize[_0x798e('0xe')],'defaultValue':0x0},'note':{'type':Sequelize['STRING']}};
\ No newline at end of file
index da4493e..955c86e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6596=['getVoiceQueuesReport','nolimit','sort','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','localhost','socket.io-emitter','redis','./voiceQueueReport.socket','register','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','sendStatus','stack','name','send','index','map','VoiceQueueReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','length','attributes','hasOwnProperty','order','pick','filter','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','keys','merge','create','body','find','describe'];(function(_0x4568b8,_0x122d70){var _0x280fe7=function(_0x11a7cb){while(--_0x11a7cb){_0x4568b8['push'](_0x4568b8['shift']());}};_0x280fe7(++_0x122d70);}(_0x6596,0x1ef));var _0x6659=function(_0xeb8fcc,_0x1eb5fb){_0xeb8fcc=_0xeb8fcc-0x0;var _0x42d72f=_0x6596[_0xeb8fcc];return _0x42d72f;};'use strict';var emlformat=require(_0x6659('0x0'));var rimraf=require(_0x6659('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6659('0x2'));var moment=require(_0x6659('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x6659('0x4'));var util=require(_0x6659('0x5'));var path=require(_0x6659('0x6'));var sox=require(_0x6659('0x7'));var csv=require(_0x6659('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6659('0x9'));var _=require(_0x6659('0xa'));var squel=require(_0x6659('0xb'));var crypto=require(_0x6659('0xc'));var jsforce=require(_0x6659('0xd'));var deskjs=require(_0x6659('0xe'));var toCsv=require(_0x6659('0x8'));var querystring=require(_0x6659('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x6659('0x10'));var qs=require(_0x6659('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6659('0x12'));var logger=require(_0x6659('0x13'))(_0x6659('0x14'));var utils=require(_0x6659('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config['redis'],{'host':_0x6659('0x16'),'port':0x18eb});var socket=require(_0x6659('0x17'))(new Redis(config[_0x6659('0x18')]));require(_0x6659('0x19'))[_0x6659('0x1a')](socket);function respondWithStatusCode(_0x14776d,_0xcec658){_0xcec658=_0xcec658||0xcc;return function(_0x135391){if(_0x135391){return _0x14776d['sendStatus'](_0xcec658);}return _0x14776d['status'](_0xcec658)[_0x6659('0x1b')]();};}function respondWithResult(_0x2c3eeb,_0x3d76d2){_0x3d76d2=_0x3d76d2||0xc8;return function(_0x302d64){if(_0x302d64){return _0x2c3eeb[_0x6659('0x1c')](_0x3d76d2)['json'](_0x302d64);}};}function respondWithFilteredResult(_0x34e229,_0x554421){return function(_0x5031c3){if(_0x5031c3){var _0x1caece=typeof _0x554421[_0x6659('0x1d')]==='undefined'&&typeof _0x554421['limit']===_0x6659('0x1e');var _0x37f270=_0x5031c3['count'];var _0x503932=_0x1caece?0x0:_0x554421[_0x6659('0x1d')];var _0x4c7ad9=_0x1caece?_0x5031c3[_0x6659('0x1f')]:_0x554421['offset']+_0x554421[_0x6659('0x20')];var _0x3de8ca;if(_0x4c7ad9>=_0x37f270){_0x4c7ad9=_0x37f270;_0x3de8ca=0xc8;}else{_0x3de8ca=0xce;}_0x34e229['status'](_0x3de8ca);return _0x34e229[_0x6659('0x21')](_0x6659('0x22'),_0x503932+'-'+_0x4c7ad9+'/'+_0x37f270)[_0x6659('0x23')](_0x5031c3);}return null;};}function patchUpdates(_0xdaf59d){return function(_0x273134){try{jsonpatch[_0x6659('0x24')](_0x273134,_0xdaf59d,!![]);}catch(_0x562a86){return BPromise[_0x6659('0x25')](_0x562a86);}return _0x273134[_0x6659('0x26')]();};}function saveUpdates(_0x433307,_0x382555){return function(_0x5b2366){if(_0x5b2366){return _0x5b2366[_0x6659('0x27')](_0x433307)[_0x6659('0x28')](function(_0x2b1baf){return _0x2b1baf;});}return null;};}function removeEntity(_0x58c614,_0x439637){return function(_0x8ddd8c){if(_0x8ddd8c){return _0x8ddd8c[_0x6659('0x29')]()[_0x6659('0x28')](function(){_0x58c614[_0x6659('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x31b9c5,_0x40ab9f){return function(_0xbeb66){if(!_0xbeb66){_0x31b9c5[_0x6659('0x2a')](0x194);}return _0xbeb66;};}function handleError(_0x4dc939,_0x336801){_0x336801=_0x336801||0x1f4;return function(_0x12f11c){logger['error'](_0x12f11c[_0x6659('0x2b')]);if(_0x12f11c['name']){delete _0x12f11c[_0x6659('0x2c')];}_0x4dc939[_0x6659('0x1c')](_0x336801)[_0x6659('0x2d')](_0x12f11c);};}exports[_0x6659('0x2e')]=function(_0xed8781,_0x228cb7){var _0x474652={},_0x1de27f={},_0x4380d4={'count':0x0,'rows':[]};var _0x4a8dac=_[_0x6659('0x2f')](db[_0x6659('0x30')][_0x6659('0x31')],function(_0x985cc5){return{'name':_0x985cc5[_0x6659('0x32')],'type':_0x985cc5[_0x6659('0x33')][_0x6659('0x34')]};});_0x1de27f[_0x6659('0x35')]=_[_0x6659('0x2f')](_0x4a8dac,_0x6659('0x2c'));_0x1de27f[_0x6659('0x36')]=_['keys'](_0xed8781[_0x6659('0x36')]);_0x1de27f[_0x6659('0x37')]=_[_0x6659('0x38')](_0x1de27f['model'],_0x1de27f[_0x6659('0x36')]);_0x474652['attributes']=_[_0x6659('0x38')](_0x1de27f[_0x6659('0x35')],qs[_0x6659('0x39')](_0xed8781[_0x6659('0x36')]['fields']));_0x474652['attributes']=_0x474652['attributes'][_0x6659('0x3a')]?_0x474652[_0x6659('0x3b')]:_0x1de27f[_0x6659('0x35')];if(!_0xed8781[_0x6659('0x36')][_0x6659('0x3c')]('nolimit')){_0x474652[_0x6659('0x20')]=qs['limit'](_0xed8781['query'][_0x6659('0x20')]);_0x474652['offset']=qs[_0x6659('0x1d')](_0xed8781[_0x6659('0x36')]['offset']);}_0x474652[_0x6659('0x3d')]=qs['sort'](_0xed8781[_0x6659('0x36')]['sort']);_0x474652['where']=qs[_0x6659('0x37')](_[_0x6659('0x3e')](_0xed8781[_0x6659('0x36')],_0x1de27f[_0x6659('0x37')]),_0x4a8dac);if(_0xed8781['query'][_0x6659('0x3f')]){_0x474652[_0x6659('0x40')]=_['merge'](_0x474652[_0x6659('0x40')],{'$or':_[_0x6659('0x2f')](_0x4a8dac,function(_0x389756){if(_0x389756['type']!==_0x6659('0x41')){var _0x382f0a={};_0x382f0a[_0x389756[_0x6659('0x2c')]]={'$like':'%'+_0xed8781[_0x6659('0x36')]['filter']+'%'};return _0x382f0a;}})});}_0x474652=_['merge']({},_0x474652,_0xed8781[_0x6659('0x42')]);var _0x10ce7e={'where':_0x474652['where']};return db[_0x6659('0x30')][_0x6659('0x1f')](_0x10ce7e)[_0x6659('0x28')](function(_0x2186a5){_0x4380d4[_0x6659('0x1f')]=_0x2186a5;if(_0xed8781[_0x6659('0x36')][_0x6659('0x43')]){_0x474652[_0x6659('0x44')]=[{'all':!![]}];}return db[_0x6659('0x30')][_0x6659('0x45')](_0x474652);})[_0x6659('0x28')](function(_0x3c682a){_0x4380d4[_0x6659('0x46')]=_0x3c682a;return _0x4380d4;})[_0x6659('0x28')](respondWithFilteredResult(_0x228cb7,_0x474652))[_0x6659('0x47')](handleError(_0x228cb7,null));};exports['show']=function(_0x4be10c,_0x4339fe){var _0x671a5b={'raw':![],'where':{'id':_0x4be10c[_0x6659('0x48')]['id']}},_0x1521ab={};_0x1521ab[_0x6659('0x35')]=_['keys'](db[_0x6659('0x30')][_0x6659('0x31')]);_0x1521ab[_0x6659('0x36')]=_[_0x6659('0x49')](_0x4be10c[_0x6659('0x36')]);_0x1521ab[_0x6659('0x37')]=_[_0x6659('0x38')](_0x1521ab[_0x6659('0x35')],_0x1521ab[_0x6659('0x36')]);_0x671a5b[_0x6659('0x3b')]=_['intersection'](_0x1521ab[_0x6659('0x35')],qs['fields'](_0x4be10c['query']['fields']));_0x671a5b[_0x6659('0x3b')]=_0x671a5b[_0x6659('0x3b')][_0x6659('0x3a')]?_0x671a5b[_0x6659('0x3b')]:_0x1521ab[_0x6659('0x35')];if(_0x4be10c[_0x6659('0x36')][_0x6659('0x43')]){_0x671a5b[_0x6659('0x44')]=[{'all':!![]}];}_0x671a5b=_[_0x6659('0x4a')]({},_0x671a5b,_0x4be10c[_0x6659('0x42')]);return db[_0x6659('0x30')]['find'](_0x671a5b)[_0x6659('0x28')](handleEntityNotFound(_0x4339fe,null))[_0x6659('0x28')](respondWithResult(_0x4339fe,null))[_0x6659('0x47')](handleError(_0x4339fe,null));};exports[_0x6659('0x4b')]=function(_0x11d68c,_0x35c46c){return db[_0x6659('0x30')][_0x6659('0x4b')](_0x11d68c['body'],{})[_0x6659('0x28')](respondWithResult(_0x35c46c,0xc9))[_0x6659('0x47')](handleError(_0x35c46c,null));};exports[_0x6659('0x27')]=function(_0x1793ee,_0x1ef237){if(_0x1793ee['body']['id']){delete _0x1793ee[_0x6659('0x4c')]['id'];}return db['VoiceQueueReport'][_0x6659('0x4d')]({'where':{'id':_0x1793ee[_0x6659('0x48')]['id']}})[_0x6659('0x28')](handleEntityNotFound(_0x1ef237,null))[_0x6659('0x28')](saveUpdates(_0x1793ee[_0x6659('0x4c')],null))['then'](respondWithResult(_0x1ef237,null))['catch'](handleError(_0x1ef237,null));};exports['destroy']=function(_0x202e38,_0x24e7e5){return db[_0x6659('0x30')]['find']({'where':{'id':_0x202e38['params']['id']}})['then'](handleEntityNotFound(_0x24e7e5,null))['then'](removeEntity(_0x24e7e5,null))[_0x6659('0x47')](handleError(_0x24e7e5,null));};exports[_0x6659('0x4e')]=function(_0x1aafd2,_0x4771f6){return db[_0x6659('0x30')]['describe']()['then'](respondWithResult(_0x4771f6,null))[_0x6659('0x47')](handleError(_0x4771f6,null));};exports[_0x6659('0x4f')]=function(_0x26d104,_0x332dc2){var _0x2e03ef={},_0x57afeb={},_0x2d272e={'count':0x0,'rows':[]};_0x57afeb[_0x6659('0x35')]=_[_0x6659('0x49')](db[_0x6659('0x30')][_0x6659('0x31')]);_0x57afeb[_0x6659('0x36')]=_[_0x6659('0x49')](_0x26d104[_0x6659('0x36')]);_0x57afeb[_0x6659('0x37')]=_[_0x6659('0x38')](_0x57afeb[_0x6659('0x35')],_0x57afeb[_0x6659('0x36')]);_0x2e03ef[_0x6659('0x3b')]=_[_0x6659('0x38')](_0x57afeb[_0x6659('0x35')],qs['fields'](_0x26d104['query'][_0x6659('0x39')]));_0x2e03ef['attributes']=_0x2e03ef['attributes']['length']?_0x2e03ef[_0x6659('0x3b')]:_0x57afeb[_0x6659('0x35')];if(!_0x26d104['query']['hasOwnProperty'](_0x6659('0x50'))){_0x2e03ef[_0x6659('0x20')]=qs[_0x6659('0x20')](_0x26d104['query']['limit']);_0x2e03ef[_0x6659('0x1d')]=qs[_0x6659('0x1d')](_0x26d104[_0x6659('0x36')][_0x6659('0x1d')]);}_0x2e03ef['order']=qs['sort'](_0x26d104[_0x6659('0x36')][_0x6659('0x51')]);_0x2e03ef[_0x6659('0x40')]=qs[_0x6659('0x37')](_[_0x6659('0x3e')](_0x26d104[_0x6659('0x36')],_0x57afeb[_0x6659('0x37')]));if(_0x26d104[_0x6659('0x36')][_0x6659('0x3f')]){_0x2e03ef['where']=_[_0x6659('0x4a')](_0x2e03ef['where'],{'$or':_['map'](_0x2e03ef[_0x6659('0x3b')],function(_0x15d806){var _0x24dcb1={};_0x24dcb1[_0x15d806]={'$like':'%'+_0x26d104[_0x6659('0x36')][_0x6659('0x3f')]+'%'};return _0x24dcb1;})});}_0x2e03ef=_[_0x6659('0x4a')]({},_0x2e03ef,_0x26d104[_0x6659('0x42')]);var _0x382902={'where':_0x2e03ef[_0x6659('0x40')]};return db['VoiceQueueReport'][_0x6659('0x1f')](_0x382902)['then'](function(_0x4e9148){_0x2d272e[_0x6659('0x1f')]=_0x4e9148;if(_0x26d104[_0x6659('0x36')][_0x6659('0x43')]){_0x2e03ef['include']=[{'all':!![]}];}return db[_0x6659('0x30')][_0x6659('0x45')](_0x2e03ef);})[_0x6659('0x28')](function(_0x571d4f){_0x2d272e[_0x6659('0x46')]=_0x571d4f;return _0x2d272e;})[_0x6659('0x28')](respondWithFilteredResult(_0x332dc2,_0x2e03ef,_0x6659('0x4f')))['catch'](handleError(_0x332dc2,null,_0x6659('0x4f')));};
\ No newline at end of file
+var _0x1b8f=['error','stack','name','send','map','VoiceQueueReport','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','offset','where','pick','filter','type','VIRTUAL','merge','includeAll','findAll','rows','show','params','include','options','catch','create','body','update','find','describe','getVoiceQueuesReport','rawAttributes','nolimit','order','sort','eml-format','rimraf','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./voiceQueueReport.socket','register','sendStatus','status','end','json','undefined','limit','count','Content-Range','apply','reject','then','destroy'];(function(_0x3f19b0,_0x55b84b){var _0x1f8fe9=function(_0x90f273){while(--_0x90f273){_0x3f19b0['push'](_0x3f19b0['shift']());}};_0x1f8fe9(++_0x55b84b);}(_0x1b8f,0x1ce));var _0xf1b8=function(_0x4a5ac3,_0x525571){_0x4a5ac3=_0x4a5ac3-0x0;var _0x4c4a78=_0x1b8f[_0x4a5ac3];return _0x4c4a78;};'use strict';var emlformat=require(_0xf1b8('0x0'));var rimraf=require(_0xf1b8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf1b8('0x2'));var rp=require(_0xf1b8('0x3'));var moment=require(_0xf1b8('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xf1b8('0x5'));var path=require('path');var sox=require(_0xf1b8('0x6'));var csv=require(_0xf1b8('0x7'));var ejs=require(_0xf1b8('0x8'));var fs=require('fs');var fs_extra=require(_0xf1b8('0x9'));var _=require(_0xf1b8('0xa'));var squel=require(_0xf1b8('0xb'));var crypto=require(_0xf1b8('0xc'));var jsforce=require(_0xf1b8('0xd'));var deskjs=require(_0xf1b8('0xe'));var toCsv=require(_0xf1b8('0x7'));var querystring=require(_0xf1b8('0xf'));var Papa=require(_0xf1b8('0x10'));var Redis=require(_0xf1b8('0x11'));var authService=require(_0xf1b8('0x12'));var qs=require(_0xf1b8('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf1b8('0x14'))(_0xf1b8('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xf1b8('0x16'));var db=require(_0xf1b8('0x17'))['db'];config['redis']=_[_0xf1b8('0x18')](config[_0xf1b8('0x19')],{'host':_0xf1b8('0x1a'),'port':0x18eb});var socket=require(_0xf1b8('0x1b'))(new Redis(config[_0xf1b8('0x19')]));require(_0xf1b8('0x1c'))[_0xf1b8('0x1d')](socket);function respondWithStatusCode(_0x41c5bd,_0x460d71){_0x460d71=_0x460d71||0xcc;return function(_0x5a4f5f){if(_0x5a4f5f){return _0x41c5bd[_0xf1b8('0x1e')](_0x460d71);}return _0x41c5bd[_0xf1b8('0x1f')](_0x460d71)[_0xf1b8('0x20')]();};}function respondWithResult(_0x31d5cb,_0x41a223){_0x41a223=_0x41a223||0xc8;return function(_0x3ff07b){if(_0x3ff07b){return _0x31d5cb[_0xf1b8('0x1f')](_0x41a223)[_0xf1b8('0x21')](_0x3ff07b);}};}function respondWithFilteredResult(_0x99899e,_0x3287f7){return function(_0x10684c){if(_0x10684c){var _0x33e293=typeof _0x3287f7['offset']===_0xf1b8('0x22')&&typeof _0x3287f7[_0xf1b8('0x23')]===_0xf1b8('0x22');var _0x32a0b9=_0x10684c['count'];var _0x28d216=_0x33e293?0x0:_0x3287f7['offset'];var _0x2df048=_0x33e293?_0x10684c[_0xf1b8('0x24')]:_0x3287f7['offset']+_0x3287f7[_0xf1b8('0x23')];var _0x1b3cb1;if(_0x2df048>=_0x32a0b9){_0x2df048=_0x32a0b9;_0x1b3cb1=0xc8;}else{_0x1b3cb1=0xce;}_0x99899e[_0xf1b8('0x1f')](_0x1b3cb1);return _0x99899e['set'](_0xf1b8('0x25'),_0x28d216+'-'+_0x2df048+'/'+_0x32a0b9)[_0xf1b8('0x21')](_0x10684c);}return null;};}function patchUpdates(_0x5cfb0e){return function(_0x514303){try{jsonpatch[_0xf1b8('0x26')](_0x514303,_0x5cfb0e,!![]);}catch(_0x31245b){return BPromise[_0xf1b8('0x27')](_0x31245b);}return _0x514303['save']();};}function saveUpdates(_0x146eab,_0x2ca234){return function(_0x16751d){if(_0x16751d){return _0x16751d['update'](_0x146eab)[_0xf1b8('0x28')](function(_0x56b713){return _0x56b713;});}return null;};}function removeEntity(_0x5a5a81,_0x50d79f){return function(_0x447423){if(_0x447423){return _0x447423[_0xf1b8('0x29')]()[_0xf1b8('0x28')](function(){_0x5a5a81[_0xf1b8('0x1f')](0xcc)[_0xf1b8('0x20')]();});}};}function handleEntityNotFound(_0x3a646a,_0x4b28b1){return function(_0x1d321a){if(!_0x1d321a){_0x3a646a[_0xf1b8('0x1e')](0x194);}return _0x1d321a;};}function handleError(_0x16997c,_0x332b20){_0x332b20=_0x332b20||0x1f4;return function(_0x54461f){logger[_0xf1b8('0x2a')](_0x54461f[_0xf1b8('0x2b')]);if(_0x54461f['name']){delete _0x54461f[_0xf1b8('0x2c')];}_0x16997c[_0xf1b8('0x1f')](_0x332b20)[_0xf1b8('0x2d')](_0x54461f);};}exports['index']=function(_0x496d8c,_0x180c61){var _0x1b37c0={},_0x4b5028={},_0x14da79={'count':0x0,'rows':[]};var _0x3d71bf=_[_0xf1b8('0x2e')](db[_0xf1b8('0x2f')]['rawAttributes'],function(_0x294ef0){return{'name':_0x294ef0[_0xf1b8('0x30')],'type':_0x294ef0['type'][_0xf1b8('0x31')]};});_0x4b5028[_0xf1b8('0x32')]=_[_0xf1b8('0x2e')](_0x3d71bf,_0xf1b8('0x2c'));_0x4b5028[_0xf1b8('0x33')]=_[_0xf1b8('0x34')](_0x496d8c[_0xf1b8('0x33')]);_0x4b5028[_0xf1b8('0x35')]=_[_0xf1b8('0x36')](_0x4b5028[_0xf1b8('0x32')],_0x4b5028['query']);_0x1b37c0[_0xf1b8('0x37')]=_[_0xf1b8('0x36')](_0x4b5028[_0xf1b8('0x32')],qs[_0xf1b8('0x38')](_0x496d8c['query'][_0xf1b8('0x38')]));_0x1b37c0[_0xf1b8('0x37')]=_0x1b37c0['attributes'][_0xf1b8('0x39')]?_0x1b37c0[_0xf1b8('0x37')]:_0x4b5028['model'];if(!_0x496d8c[_0xf1b8('0x33')][_0xf1b8('0x3a')]('nolimit')){_0x1b37c0[_0xf1b8('0x23')]=qs['limit'](_0x496d8c['query'][_0xf1b8('0x23')]);_0x1b37c0[_0xf1b8('0x3b')]=qs[_0xf1b8('0x3b')](_0x496d8c[_0xf1b8('0x33')][_0xf1b8('0x3b')]);}_0x1b37c0['order']=qs['sort'](_0x496d8c[_0xf1b8('0x33')]['sort']);_0x1b37c0[_0xf1b8('0x3c')]=qs[_0xf1b8('0x35')](_[_0xf1b8('0x3d')](_0x496d8c[_0xf1b8('0x33')],_0x4b5028[_0xf1b8('0x35')]),_0x3d71bf);if(_0x496d8c['query'][_0xf1b8('0x3e')]){_0x1b37c0[_0xf1b8('0x3c')]=_['merge'](_0x1b37c0[_0xf1b8('0x3c')],{'$or':_[_0xf1b8('0x2e')](_0x3d71bf,function(_0x4d2b1f){if(_0x4d2b1f[_0xf1b8('0x3f')]!==_0xf1b8('0x40')){var _0x581165={};_0x581165[_0x4d2b1f[_0xf1b8('0x2c')]]={'$like':'%'+_0x496d8c['query']['filter']+'%'};return _0x581165;}})});}_0x1b37c0=_[_0xf1b8('0x41')]({},_0x1b37c0,_0x496d8c['options']);var _0x17adf1={'where':_0x1b37c0[_0xf1b8('0x3c')]};return db[_0xf1b8('0x2f')][_0xf1b8('0x24')](_0x17adf1)['then'](function(_0xea01a){_0x14da79[_0xf1b8('0x24')]=_0xea01a;if(_0x496d8c['query'][_0xf1b8('0x42')]){_0x1b37c0['include']=[{'all':!![]}];}return db['VoiceQueueReport'][_0xf1b8('0x43')](_0x1b37c0);})['then'](function(_0x28bc60){_0x14da79[_0xf1b8('0x44')]=_0x28bc60;return _0x14da79;})[_0xf1b8('0x28')](respondWithFilteredResult(_0x180c61,_0x1b37c0))['catch'](handleError(_0x180c61,null));};exports[_0xf1b8('0x45')]=function(_0x440fb7,_0x329323){var _0x500f8e={'raw':![],'where':{'id':_0x440fb7[_0xf1b8('0x46')]['id']}},_0x1e0f68={};_0x1e0f68[_0xf1b8('0x32')]=_[_0xf1b8('0x34')](db[_0xf1b8('0x2f')]['rawAttributes']);_0x1e0f68[_0xf1b8('0x33')]=_[_0xf1b8('0x34')](_0x440fb7[_0xf1b8('0x33')]);_0x1e0f68[_0xf1b8('0x35')]=_['intersection'](_0x1e0f68[_0xf1b8('0x32')],_0x1e0f68['query']);_0x500f8e[_0xf1b8('0x37')]=_[_0xf1b8('0x36')](_0x1e0f68['model'],qs['fields'](_0x440fb7[_0xf1b8('0x33')][_0xf1b8('0x38')]));_0x500f8e[_0xf1b8('0x37')]=_0x500f8e[_0xf1b8('0x37')][_0xf1b8('0x39')]?_0x500f8e[_0xf1b8('0x37')]:_0x1e0f68['model'];if(_0x440fb7[_0xf1b8('0x33')][_0xf1b8('0x42')]){_0x500f8e[_0xf1b8('0x47')]=[{'all':!![]}];}_0x500f8e=_[_0xf1b8('0x41')]({},_0x500f8e,_0x440fb7[_0xf1b8('0x48')]);return db[_0xf1b8('0x2f')]['find'](_0x500f8e)[_0xf1b8('0x28')](handleEntityNotFound(_0x329323,null))[_0xf1b8('0x28')](respondWithResult(_0x329323,null))[_0xf1b8('0x49')](handleError(_0x329323,null));};exports[_0xf1b8('0x4a')]=function(_0x145fcd,_0x32e9f5){return db[_0xf1b8('0x2f')][_0xf1b8('0x4a')](_0x145fcd[_0xf1b8('0x4b')],{})[_0xf1b8('0x28')](respondWithResult(_0x32e9f5,0xc9))[_0xf1b8('0x49')](handleError(_0x32e9f5,null));};exports[_0xf1b8('0x4c')]=function(_0x3318e3,_0x307e68){if(_0x3318e3['body']['id']){delete _0x3318e3[_0xf1b8('0x4b')]['id'];}return db['VoiceQueueReport'][_0xf1b8('0x4d')]({'where':{'id':_0x3318e3[_0xf1b8('0x46')]['id']}})['then'](handleEntityNotFound(_0x307e68,null))['then'](saveUpdates(_0x3318e3[_0xf1b8('0x4b')],null))[_0xf1b8('0x28')](respondWithResult(_0x307e68,null))[_0xf1b8('0x49')](handleError(_0x307e68,null));};exports[_0xf1b8('0x29')]=function(_0x3988ca,_0x41f122){return db[_0xf1b8('0x2f')][_0xf1b8('0x4d')]({'where':{'id':_0x3988ca['params']['id']}})[_0xf1b8('0x28')](handleEntityNotFound(_0x41f122,null))[_0xf1b8('0x28')](removeEntity(_0x41f122,null))[_0xf1b8('0x49')](handleError(_0x41f122,null));};exports[_0xf1b8('0x4e')]=function(_0x156b7b,_0x5adf59){return db[_0xf1b8('0x2f')][_0xf1b8('0x4e')]()['then'](respondWithResult(_0x5adf59,null))['catch'](handleError(_0x5adf59,null));};exports[_0xf1b8('0x4f')]=function(_0x3bc5f3,_0x3eeba2){var _0x3bb718={},_0x2bc5d6={},_0x44fb41={'count':0x0,'rows':[]};_0x2bc5d6[_0xf1b8('0x32')]=_[_0xf1b8('0x34')](db[_0xf1b8('0x2f')][_0xf1b8('0x50')]);_0x2bc5d6[_0xf1b8('0x33')]=_[_0xf1b8('0x34')](_0x3bc5f3[_0xf1b8('0x33')]);_0x2bc5d6[_0xf1b8('0x35')]=_[_0xf1b8('0x36')](_0x2bc5d6['model'],_0x2bc5d6[_0xf1b8('0x33')]);_0x3bb718['attributes']=_['intersection'](_0x2bc5d6['model'],qs[_0xf1b8('0x38')](_0x3bc5f3['query'][_0xf1b8('0x38')]));_0x3bb718[_0xf1b8('0x37')]=_0x3bb718[_0xf1b8('0x37')]['length']?_0x3bb718[_0xf1b8('0x37')]:_0x2bc5d6['model'];if(!_0x3bc5f3[_0xf1b8('0x33')][_0xf1b8('0x3a')](_0xf1b8('0x51'))){_0x3bb718['limit']=qs[_0xf1b8('0x23')](_0x3bc5f3[_0xf1b8('0x33')][_0xf1b8('0x23')]);_0x3bb718[_0xf1b8('0x3b')]=qs[_0xf1b8('0x3b')](_0x3bc5f3[_0xf1b8('0x33')][_0xf1b8('0x3b')]);}_0x3bb718[_0xf1b8('0x52')]=qs[_0xf1b8('0x53')](_0x3bc5f3['query'][_0xf1b8('0x53')]);_0x3bb718[_0xf1b8('0x3c')]=qs[_0xf1b8('0x35')](_['pick'](_0x3bc5f3['query'],_0x2bc5d6[_0xf1b8('0x35')]));if(_0x3bc5f3[_0xf1b8('0x33')]['filter']){_0x3bb718[_0xf1b8('0x3c')]=_[_0xf1b8('0x41')](_0x3bb718[_0xf1b8('0x3c')],{'$or':_[_0xf1b8('0x2e')](_0x3bb718[_0xf1b8('0x37')],function(_0x28678d){var _0x6c30d8={};_0x6c30d8[_0x28678d]={'$like':'%'+_0x3bc5f3[_0xf1b8('0x33')][_0xf1b8('0x3e')]+'%'};return _0x6c30d8;})});}_0x3bb718=_[_0xf1b8('0x41')]({},_0x3bb718,_0x3bc5f3[_0xf1b8('0x48')]);var _0x8d2272={'where':_0x3bb718[_0xf1b8('0x3c')]};return db[_0xf1b8('0x2f')][_0xf1b8('0x24')](_0x8d2272)[_0xf1b8('0x28')](function(_0x3eeb26){_0x44fb41[_0xf1b8('0x24')]=_0x3eeb26;if(_0x3bc5f3[_0xf1b8('0x33')]['includeAll']){_0x3bb718[_0xf1b8('0x47')]=[{'all':!![]}];}return db[_0xf1b8('0x2f')][_0xf1b8('0x43')](_0x3bb718);})['then'](function(_0xdc0004){_0x44fb41['rows']=_0xdc0004;return _0x44fb41;})[_0xf1b8('0x28')](respondWithFilteredResult(_0x3eeba2,_0x3bb718,_0xf1b8('0x4f')))[_0xf1b8('0x49')](handleError(_0x3eeba2,null,_0xf1b8('0x4f')));};
\ No newline at end of file
index f31576b..903ab0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6c2=['hasOwnProperty','exports','events','../../mysqldb','VoiceQueueReport','setMaxListeners','save','update','remove','emit'];(function(_0x4b3979,_0xfc8b8f){var _0x1707fc=function(_0x1bc44f){while(--_0x1bc44f){_0x4b3979['push'](_0x4b3979['shift']());}};_0x1707fc(++_0xfc8b8f);}(_0xd6c2,0xb6));var _0x2d6c=function(_0x31ba8c,_0x394bfd){_0x31ba8c=_0x31ba8c-0x0;var _0x51d0e2=_0xd6c2[_0x31ba8c];return _0x51d0e2;};'use strict';var EventEmitter=require(_0x2d6c('0x0'));var VoiceQueueReport=require(_0x2d6c('0x1'))['db'][_0x2d6c('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x2d6c('0x3')](0x0);var events={'afterCreate':_0x2d6c('0x4'),'afterUpdate':_0x2d6c('0x5'),'afterDestroy':_0x2d6c('0x6')};function emitEvent(_0x1a6901){return function(_0x204c41,_0x2b57e8,_0x3ebe21){VoiceQueueReportEvents[_0x2d6c('0x7')](_0x1a6901+':'+_0x204c41['id'],_0x204c41);VoiceQueueReportEvents['emit'](_0x1a6901,_0x204c41);_0x3ebe21(null);};}for(var e in events){if(events[_0x2d6c('0x8')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0x2d6c('0x9')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xab47=['hasOwnProperty','hook','exports','events','../../mysqldb','VoiceQueueReport','setMaxListeners','save','update','remove','emit'];(function(_0x27714d,_0x457b53){var _0x18e2fb=function(_0x28f1d9){while(--_0x28f1d9){_0x27714d['push'](_0x27714d['shift']());}};_0x18e2fb(++_0x457b53);}(_0xab47,0x10b));var _0x7ab4=function(_0xca1f0e,_0x2713d5){_0xca1f0e=_0xca1f0e-0x0;var _0x35e4ef=_0xab47[_0xca1f0e];return _0x35e4ef;};'use strict';var EventEmitter=require(_0x7ab4('0x0'));var VoiceQueueReport=require(_0x7ab4('0x1'))['db'][_0x7ab4('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x7ab4('0x3')](0x0);var events={'afterCreate':_0x7ab4('0x4'),'afterUpdate':_0x7ab4('0x5'),'afterDestroy':_0x7ab4('0x6')};function emitEvent(_0x59c810){return function(_0x21f647,_0x3b572,_0x1521ed){VoiceQueueReportEvents[_0x7ab4('0x7')](_0x59c810+':'+_0x21f647['id'],_0x21f647);VoiceQueueReportEvents[_0x7ab4('0x7')](_0x59c810,_0x21f647);_0x1521ed(null);};}for(var e in events){if(events[_0x7ab4('0x8')](e)){var event=events[e];VoiceQueueReport[_0x7ab4('0x9')](e,emitEvent(event));}}module[_0x7ab4('0xa')]=VoiceQueueReportEvents;
\ No newline at end of file
index e30c37c..b0762d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a9e=['report_queue','uniqueid','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','exports','define'];(function(_0x5e9e76,_0x3cb685){var _0x2bc580=function(_0x5a2bd3){while(--_0x5a2bd3){_0x5e9e76['push'](_0x5e9e76['shift']());}};_0x2bc580(++_0x3cb685);}(_0x1a9e,0x7a));var _0xe1a9=function(_0x5dd49a,_0x36c7d7){_0x5dd49a=_0x5dd49a-0x0;var _0x954b72=_0x1a9e[_0x5dd49a];return _0x954b72;};'use strict';var _=require(_0xe1a9('0x0'));var util=require(_0xe1a9('0x1'));var logger=require(_0xe1a9('0x2'))(_0xe1a9('0x3'));var moment=require(_0xe1a9('0x4'));var BPromise=require('bluebird');var rp=require(_0xe1a9('0x5'));var fs=require('fs');var path=require(_0xe1a9('0x6'));var rimraf=require('rimraf');var config=require(_0xe1a9('0x7'));var attributes=require('./voiceQueueReport.attributes');module[_0xe1a9('0x8')]=function(_0x56555d,_0x139da3){return _0x56555d[_0xe1a9('0x9')]('VoiceQueueReport',attributes,{'tableName':_0xe1a9('0xa'),'paranoid':![],'indexes':[{'fields':[_0xe1a9('0xb')]},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x460a=['path','rimraf','../../config/environment','./voiceQueueReport.attributes','exports','report_queue','calleridnum','util','../../config/logger','api','moment','bluebird'];(function(_0x47526a,_0x4cf16b){var _0x421199=function(_0x6cfd79){while(--_0x6cfd79){_0x47526a['push'](_0x47526a['shift']());}};_0x421199(++_0x4cf16b);}(_0x460a,0x10f));var _0xa460=function(_0x4c73ac,_0x46b73c){_0x4c73ac=_0x4c73ac-0x0;var _0x9839ee=_0x460a[_0x4c73ac];return _0x9839ee;};'use strict';var _=require('lodash');var util=require(_0xa460('0x0'));var logger=require(_0xa460('0x1'))(_0xa460('0x2'));var moment=require(_0xa460('0x3'));var BPromise=require(_0xa460('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa460('0x5'));var rimraf=require(_0xa460('0x6'));var config=require(_0xa460('0x7'));var attributes=require(_0xa460('0x8'));module[_0xa460('0x9')]=function(_0x3a68f8,_0x59a22d){return _0x3a68f8['define']('VoiceQueueReport',attributes,{'tableName':_0xa460('0xa'),'paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':[_0xa460('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index bddbd51..d6de9c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2fa=['VoiceQueueReport,\x20%s,\x20%s,\x20%s','error','code','VoiceQueueReport,\x20%s,\x20%s','message','result','catch','GetVoiceQueueReport','findAll','options','raw','where','attributes','limit','include','map','model','stringify','VoiceQueueReport','create','body','CreateVoiceQueueReport','debug','UpdateVoiceQueueReport','update','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','request','then','info','request\x20sent'];(function(_0x181144,_0x4e62a8){var _0x576cbd=function(_0x4f4036){while(--_0x4f4036){_0x181144['push'](_0x181144['shift']());}};_0x576cbd(++_0x4e62a8);}(_0xe2fa,0x75));var _0xae2f=function(_0x2fcec9,_0x402240){_0x2fcec9=_0x2fcec9-0x0;var _0x324186=_0xe2fa[_0x2fcec9];return _0x324186;};'use strict';var _=require(_0xae2f('0x0'));var util=require(_0xae2f('0x1'));var moment=require(_0xae2f('0x2'));var BPromise=require(_0xae2f('0x3'));var rs=require(_0xae2f('0x4'));var fs=require('fs');var Redis=require(_0xae2f('0x5'));var db=require(_0xae2f('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xae2f('0x7'));var config=require(_0xae2f('0x8'));var jayson=require(_0xae2f('0x9'));var client=jayson[_0xae2f('0xa')][_0xae2f('0xb')]({'port':0x232a});config[_0xae2f('0xc')]=_[_0xae2f('0xd')](config[_0xae2f('0xc')],{'host':_0xae2f('0xe'),'port':0x18eb});var socket=require(_0xae2f('0xf'))(new Redis(config[_0xae2f('0xc')]));require(_0xae2f('0x10'))['register'](socket);function respondWithRpcPromise(_0x4674a0,_0x3846b0,_0x250a63){return new BPromise(function(_0x1b1d0f,_0x29b8be){return client[_0xae2f('0x11')](_0x4674a0,_0x250a63)[_0xae2f('0x12')](function(_0x3125c9){logger[_0xae2f('0x13')]('VoiceQueueReport,\x20%s,\x20%s',_0x3846b0,_0xae2f('0x14'));logger['debug'](_0xae2f('0x15'),_0x3846b0,_0xae2f('0x14'),JSON['stringify'](_0x3125c9));if(_0x3125c9['error']){if(_0x3125c9[_0xae2f('0x16')][_0xae2f('0x17')]===0x1f4){logger['error'](_0xae2f('0x18'),_0x3846b0,_0x3125c9[_0xae2f('0x16')]['message']);return _0x29b8be(_0x3125c9['error'][_0xae2f('0x19')]);}logger['error']('VoiceQueueReport,\x20%s,\x20%s',_0x3846b0,_0x3125c9['error'][_0xae2f('0x19')]);return _0x1b1d0f(_0x3125c9['error'][_0xae2f('0x19')]);}else{logger[_0xae2f('0x13')]('VoiceQueueReport,\x20%s,\x20%s',_0x3846b0,_0xae2f('0x14'));_0x1b1d0f(_0x3125c9[_0xae2f('0x1a')]['message']);}})[_0xae2f('0x1b')](function(_0x3bdb06){logger['error'](_0xae2f('0x18'),_0x3846b0,_0x3bdb06);_0x29b8be(_0x3bdb06);});});}exports[_0xae2f('0x1c')]=function(_0x34fe82){var _0xa8ac7f=this;return new Promise(function(_0x3c57c9,_0x4f6aa9){return db['VoiceQueueReport'][_0xae2f('0x1d')]({'raw':_0x34fe82[_0xae2f('0x1e')]?_0x34fe82[_0xae2f('0x1e')][_0xae2f('0x1f')]===undefined?!![]:![]:!![],'where':_0x34fe82[_0xae2f('0x1e')]?_0x34fe82['options'][_0xae2f('0x20')]||null:null,'attributes':_0x34fe82[_0xae2f('0x1e')]?_0x34fe82[_0xae2f('0x1e')][_0xae2f('0x21')]||null:null,'limit':_0x34fe82[_0xae2f('0x1e')]?_0x34fe82[_0xae2f('0x1e')][_0xae2f('0x22')]||null:null,'include':_0x34fe82[_0xae2f('0x1e')]?_0x34fe82['options'][_0xae2f('0x23')]?_[_0xae2f('0x24')](_0x34fe82[_0xae2f('0x1e')]['include'],function(_0x197e37){return{'model':db[_0x197e37[_0xae2f('0x25')]],'as':_0x197e37['as'],'attributes':_0x197e37['attributes'],'include':_0x197e37[_0xae2f('0x23')]?_[_0xae2f('0x24')](_0x197e37['include'],function(_0x934a6f){return{'model':db[_0x934a6f['model']],'as':_0x934a6f['as'],'attributes':_0x934a6f[_0xae2f('0x21')],'include':_0x934a6f['include']?_[_0xae2f('0x24')](_0x934a6f[_0xae2f('0x23')],function(_0xbf7234){return{'model':db[_0xbf7234['model']],'as':_0xbf7234['as'],'attributes':_0xbf7234[_0xae2f('0x21')]};}):[]};}):[]};}):[]:[]})[_0xae2f('0x12')](function(_0x333477){logger[_0xae2f('0x13')](_0xae2f('0x1c'),_0x34fe82);logger['debug'](_0xae2f('0x1c'),_0x34fe82,JSON[_0xae2f('0x26')](_0x333477));_0x3c57c9(_0x333477);})[_0xae2f('0x1b')](function(_0x54aee6){logger['error'](_0xae2f('0x1c'),_0x54aee6[_0xae2f('0x19')],_0x34fe82);_0x4f6aa9(_0xa8ac7f[_0xae2f('0x16')](0x1f4,_0x54aee6[_0xae2f('0x19')]));});});};exports['CreateVoiceQueueReport']=function(_0x15b1e8){var _0x298dc9=this;return new Promise(function(_0x51a73f,_0x47c840){return db[_0xae2f('0x27')][_0xae2f('0x28')](_0x15b1e8[_0xae2f('0x29')],{'raw':_0x15b1e8[_0xae2f('0x1e')]?_0x15b1e8[_0xae2f('0x1e')][_0xae2f('0x1f')]===undefined?!![]:![]:!![]})[_0xae2f('0x12')](function(_0x3a3cb7){logger[_0xae2f('0x13')](_0xae2f('0x2a'),_0x15b1e8);logger[_0xae2f('0x2b')](_0xae2f('0x2a'),_0x15b1e8,JSON[_0xae2f('0x26')](_0x3a3cb7));_0x51a73f(_0x3a3cb7);})[_0xae2f('0x1b')](function(_0x12258e){logger['error'](_0xae2f('0x2a'),_0x12258e[_0xae2f('0x19')],_0x15b1e8);_0x47c840(_0x298dc9[_0xae2f('0x16')](0x1f4,_0x12258e[_0xae2f('0x19')]));});});};exports[_0xae2f('0x2c')]=function(_0x1ee5dd){var _0x5bf813=this;return new Promise(function(_0x59805d,_0x44907d){return db[_0xae2f('0x27')][_0xae2f('0x2d')](_0x1ee5dd['body'],{'raw':_0x1ee5dd[_0xae2f('0x1e')]?_0x1ee5dd[_0xae2f('0x1e')][_0xae2f('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1ee5dd[_0xae2f('0x1e')]?_0x1ee5dd[_0xae2f('0x1e')]['where']||null:null,'attributes':_0x1ee5dd[_0xae2f('0x1e')]?_0x1ee5dd[_0xae2f('0x1e')][_0xae2f('0x21')]||null:null,'limit':_0x1ee5dd['options']?_0x1ee5dd[_0xae2f('0x1e')][_0xae2f('0x22')]||null:null})[_0xae2f('0x12')](function(_0x4d8823){logger[_0xae2f('0x13')](_0xae2f('0x2c'),_0x1ee5dd);logger[_0xae2f('0x2b')](_0xae2f('0x2c'),_0x1ee5dd,JSON[_0xae2f('0x26')](_0x4d8823));_0x59805d(_0x4d8823);})[_0xae2f('0x1b')](function(_0x54bba1){logger[_0xae2f('0x16')](_0xae2f('0x2c'),_0x54bba1[_0xae2f('0x19')],_0x1ee5dd);_0x44907d(_0x5bf813[_0xae2f('0x16')](0x1f4,_0x54bba1['message']));});});};
\ No newline at end of file
+var _0x8224=['code','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','where','attributes','limit','include','map','model','then','stringify','CreateVoiceQueueReport','create','body','raw','UpdateVoiceQueueReport','update','lodash','util','moment','bluebird','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','./voiceQueueReport.socket','request','info','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x8224,0x112));var _0x4822=function(_0x8a635e,_0x179f20){_0x8a635e=_0x8a635e-0x0;var _0x339430=_0x8224[_0x8a635e];return _0x339430;};'use strict';var _=require(_0x4822('0x0'));var util=require(_0x4822('0x1'));var moment=require(_0x4822('0x2'));var BPromise=require(_0x4822('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4822('0x4'));var logger=require('../../config/logger')(_0x4822('0x5'));var config=require(_0x4822('0x6'));var jayson=require(_0x4822('0x7'));var client=jayson[_0x4822('0x8')][_0x4822('0x9')]({'port':0x232a});config[_0x4822('0xa')]=_[_0x4822('0xb')](config[_0x4822('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x4822('0xa')]));require(_0x4822('0xc'))['register'](socket);function respondWithRpcPromise(_0x2aea48,_0x94add9,_0x12e84d){return new BPromise(function(_0x4ecc40,_0x294dae){return client[_0x4822('0xd')](_0x2aea48,_0x12e84d)['then'](function(_0x268216){logger[_0x4822('0xe')](_0x4822('0xf'),_0x94add9,_0x4822('0x10'));logger[_0x4822('0x11')](_0x4822('0x12'),_0x94add9,'request\x20sent',JSON['stringify'](_0x268216));if(_0x268216[_0x4822('0x13')]){if(_0x268216[_0x4822('0x13')][_0x4822('0x14')]===0x1f4){logger[_0x4822('0x13')]('VoiceQueueReport,\x20%s,\x20%s',_0x94add9,_0x268216[_0x4822('0x13')][_0x4822('0x15')]);return _0x294dae(_0x268216['error'][_0x4822('0x15')]);}logger['error'](_0x4822('0xf'),_0x94add9,_0x268216['error']['message']);return _0x4ecc40(_0x268216[_0x4822('0x13')]['message']);}else{logger[_0x4822('0xe')]('VoiceQueueReport,\x20%s,\x20%s',_0x94add9,_0x4822('0x10'));_0x4ecc40(_0x268216[_0x4822('0x16')][_0x4822('0x15')]);}})[_0x4822('0x17')](function(_0x45b716){logger[_0x4822('0x13')]('VoiceQueueReport,\x20%s,\x20%s',_0x94add9,_0x45b716);_0x294dae(_0x45b716);});});}exports[_0x4822('0x18')]=function(_0x530cbe){var _0x1d67da=this;return new Promise(function(_0x66217c,_0x14542f){return db[_0x4822('0x19')][_0x4822('0x1a')]({'raw':_0x530cbe[_0x4822('0x1b')]?_0x530cbe[_0x4822('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x530cbe[_0x4822('0x1b')]?_0x530cbe[_0x4822('0x1b')][_0x4822('0x1c')]||null:null,'attributes':_0x530cbe[_0x4822('0x1b')]?_0x530cbe['options'][_0x4822('0x1d')]||null:null,'limit':_0x530cbe[_0x4822('0x1b')]?_0x530cbe[_0x4822('0x1b')][_0x4822('0x1e')]||null:null,'include':_0x530cbe[_0x4822('0x1b')]?_0x530cbe[_0x4822('0x1b')][_0x4822('0x1f')]?_[_0x4822('0x20')](_0x530cbe[_0x4822('0x1b')][_0x4822('0x1f')],function(_0x3345bf){return{'model':db[_0x3345bf[_0x4822('0x21')]],'as':_0x3345bf['as'],'attributes':_0x3345bf['attributes'],'include':_0x3345bf[_0x4822('0x1f')]?_[_0x4822('0x20')](_0x3345bf['include'],function(_0x323c4b){return{'model':db[_0x323c4b[_0x4822('0x21')]],'as':_0x323c4b['as'],'attributes':_0x323c4b['attributes'],'include':_0x323c4b[_0x4822('0x1f')]?_[_0x4822('0x20')](_0x323c4b[_0x4822('0x1f')],function(_0x125953){return{'model':db[_0x125953[_0x4822('0x21')]],'as':_0x125953['as'],'attributes':_0x125953[_0x4822('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x4822('0x22')](function(_0x14eb4){logger[_0x4822('0xe')](_0x4822('0x18'),_0x530cbe);logger[_0x4822('0x11')](_0x4822('0x18'),_0x530cbe,JSON[_0x4822('0x23')](_0x14eb4));_0x66217c(_0x14eb4);})[_0x4822('0x17')](function(_0x59c8af){logger[_0x4822('0x13')](_0x4822('0x18'),_0x59c8af['message'],_0x530cbe);_0x14542f(_0x1d67da[_0x4822('0x13')](0x1f4,_0x59c8af[_0x4822('0x15')]));});});};exports[_0x4822('0x24')]=function(_0x36070a){var _0x4edfe0=this;return new Promise(function(_0x5be1e7,_0x579630){return db[_0x4822('0x19')][_0x4822('0x25')](_0x36070a[_0x4822('0x26')],{'raw':_0x36070a[_0x4822('0x1b')]?_0x36070a[_0x4822('0x1b')][_0x4822('0x27')]===undefined?!![]:![]:!![]})[_0x4822('0x22')](function(_0x7830aa){logger['info'](_0x4822('0x24'),_0x36070a);logger[_0x4822('0x11')](_0x4822('0x24'),_0x36070a,JSON[_0x4822('0x23')](_0x7830aa));_0x5be1e7(_0x7830aa);})['catch'](function(_0xa8d67a){logger[_0x4822('0x13')](_0x4822('0x24'),_0xa8d67a[_0x4822('0x15')],_0x36070a);_0x579630(_0x4edfe0['error'](0x1f4,_0xa8d67a[_0x4822('0x15')]));});});};exports[_0x4822('0x28')]=function(_0x249025){var _0x551d5d=this;return new Promise(function(_0x3939de,_0x59709e){return db[_0x4822('0x19')][_0x4822('0x29')](_0x249025['body'],{'raw':_0x249025[_0x4822('0x1b')]?_0x249025[_0x4822('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x249025[_0x4822('0x1b')]?_0x249025[_0x4822('0x1b')]['where']||null:null,'attributes':_0x249025['options']?_0x249025[_0x4822('0x1b')][_0x4822('0x1d')]||null:null,'limit':_0x249025['options']?_0x249025[_0x4822('0x1b')][_0x4822('0x1e')]||null:null})[_0x4822('0x22')](function(_0x2a49b7){logger[_0x4822('0xe')](_0x4822('0x28'),_0x249025);logger['debug'](_0x4822('0x28'),_0x249025,JSON[_0x4822('0x23')](_0x2a49b7));_0x3939de(_0x2a49b7);})['catch'](function(_0x2f379f){logger[_0x4822('0x13')]('UpdateVoiceQueueReport',_0x2f379f[_0x4822('0x15')],_0x249025);_0x59709e(_0x551d5d['error'](0x1f4,_0x2f379f[_0x4822('0x15')]));});});};
\ No newline at end of file
index a93a90e..dea8382 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd50=['length','./voiceQueueReport.events','save','remove','emit'];(function(_0x1d385c,_0xdef29a){var _0x2a5892=function(_0x460673){while(--_0x460673){_0x1d385c['push'](_0x1d385c['shift']());}};_0x2a5892(++_0xdef29a);}(_0xbd50,0x196));var _0x0bd5=function(_0x3d812d,_0x1ed6e9){_0x3d812d=_0x3d812d-0x0;var _0x5703ad=_0xbd50[_0x3d812d];return _0x5703ad;};'use strict';var VoiceQueueReportEvents=require(_0x0bd5('0x0'));var events=[_0x0bd5('0x1'),_0x0bd5('0x2'),'update'];function createListener(_0x44fcb9,_0x167372){return function(_0x37acba){_0x167372[_0x0bd5('0x3')](_0x44fcb9,_0x37acba);};}function removeListener(_0x15620d,_0x4c17ee){return function(){VoiceQueueReportEvents['removeListener'](_0x15620d,_0x4c17ee);};}exports['register']=function(_0x376024){for(var _0x2ef1d0=0x0,_0xcc6cfa=events[_0x0bd5('0x4')];_0x2ef1d0<_0xcc6cfa;_0x2ef1d0++){var _0x1b99f3=events[_0x2ef1d0];var _0x5ebe64=createListener('voiceQueueReport:'+_0x1b99f3,_0x376024);VoiceQueueReportEvents['on'](_0x1b99f3,_0x5ebe64);}};
\ No newline at end of file
+var _0xa5c0=['voiceQueueReport:','./voiceQueueReport.events','save','remove','emit'];(function(_0x4a9d19,_0x3dd02d){var _0x50481b=function(_0x349391){while(--_0x349391){_0x4a9d19['push'](_0x4a9d19['shift']());}};_0x50481b(++_0x3dd02d);}(_0xa5c0,0xbf));var _0x0a5c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa5c0[_0x3dd15e];return _0x231fd0;};'use strict';var VoiceQueueReportEvents=require(_0x0a5c('0x0'));var events=[_0x0a5c('0x1'),_0x0a5c('0x2'),'update'];function createListener(_0x916414,_0x18c379){return function(_0xd237d7){_0x18c379[_0x0a5c('0x3')](_0x916414,_0xd237d7);};}function removeListener(_0x189488,_0x56eea2){return function(){VoiceQueueReportEvents['removeListener'](_0x189488,_0x56eea2);};}exports['register']=function(_0x48540c){for(var _0x456437=0x0,_0x49f97b=events['length'];_0x456437<_0x49f97b;_0x456437++){var _0x137d04=events[_0x456437];var _0x2ef37c=createListener(_0x0a5c('0x4')+_0x137d04,_0x48540c);VoiceQueueReportEvents['on'](_0x137d04,_0x2ef37c);}};
\ No newline at end of file
index 959327d..480abad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd605=['get','show','post','create','put','/:id','update','delete','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueuesLog.controller','isAuthenticated'];(function(_0xf51c06,_0x388e5b){var _0x1d5420=function(_0x5e077b){while(--_0x5e077b){_0xf51c06['push'](_0xf51c06['shift']());}};_0x1d5420(++_0x388e5b);}(_0xd605,0x1c1));var _0x5d60=function(_0x42415e,_0x147878){_0x42415e=_0x42415e-0x0;var _0x58f9bf=_0xd605[_0x42415e];return _0x58f9bf;};'use strict';var multer=require(_0x5d60('0x0'));var util=require('util');var path=require(_0x5d60('0x1'));var timeout=require(_0x5d60('0x2'));var express=require(_0x5d60('0x3'));var router=express[_0x5d60('0x4')]();var fs_extra=require(_0x5d60('0x5'));var auth=require(_0x5d60('0x6'));var interaction=require(_0x5d60('0x7'));var config=require(_0x5d60('0x8'));var controller=require(_0x5d60('0x9'));router['get']('/',auth[_0x5d60('0xa')](),controller['index']);router[_0x5d60('0xb')]('/:id',auth[_0x5d60('0xa')](),controller[_0x5d60('0xc')]);router[_0x5d60('0xd')]('/',auth[_0x5d60('0xa')](),controller[_0x5d60('0xe')]);router[_0x5d60('0xf')](_0x5d60('0x10'),auth['isAuthenticated'](),controller[_0x5d60('0x11')]);router[_0x5d60('0x12')](_0x5d60('0x10'),auth[_0x5d60('0xa')](),controller['destroy']);module[_0x5d60('0x13')]=router;
\ No newline at end of file
+var _0x01d0=['../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','show','post','create','put','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x433d6a,_0x27d92b){var _0x436705=function(_0x22449c){while(--_0x22449c){_0x433d6a['push'](_0x433d6a['shift']());}};_0x436705(++_0x27d92b);}(_0x01d0,0x14e));var _0x001d=function(_0x728e9f,_0x2d0eb7){_0x728e9f=_0x728e9f-0x0;var _0xaa4cbd=_0x01d0[_0x728e9f];return _0xaa4cbd;};'use strict';var multer=require(_0x001d('0x0'));var util=require(_0x001d('0x1'));var path=require(_0x001d('0x2'));var timeout=require(_0x001d('0x3'));var express=require(_0x001d('0x4'));var router=express['Router']();var fs_extra=require(_0x001d('0x5'));var auth=require(_0x001d('0x6'));var interaction=require(_0x001d('0x7'));var config=require(_0x001d('0x8'));var controller=require(_0x001d('0x9'));router[_0x001d('0xa')]('/',auth[_0x001d('0xb')](),controller[_0x001d('0xc')]);router[_0x001d('0xa')](_0x001d('0xd'),auth[_0x001d('0xb')](),controller[_0x001d('0xe')]);router[_0x001d('0xf')]('/',auth['isAuthenticated'](),controller[_0x001d('0x10')]);router[_0x001d('0x11')](_0x001d('0xd'),auth[_0x001d('0xb')](),controller['update']);router['delete'](_0x001d('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x001d('0x12')]=router;
\ No newline at end of file
index b97e462..48e8980 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8be2=['DATE','literal','sequelize','moment','exports','STRING'];(function(_0x12b0a2,_0x21ae7a){var _0x264538=function(_0x5c12ce){while(--_0x5c12ce){_0x12b0a2['push'](_0x12b0a2['shift']());}};_0x264538(++_0x21ae7a);}(_0x8be2,0xe6));var _0x28be=function(_0x5b8b97,_0x6b4dfa){_0x5b8b97=_0x5b8b97-0x0;var _0x1fdf84=_0x8be2[_0x5b8b97];return _0x1fdf84;};'use strict';var Sequelize=require(_0x28be('0x0'));var moment=require(_0x28be('0x1'));module[_0x28be('0x2')]={'time':{'type':Sequelize[_0x28be('0x3')]},'callid':{'type':Sequelize[_0x28be('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x28be('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x28be('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x28be('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x28be('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x28be('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x28be('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x28be('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x28be('0x4')],'allowNull':![],'defaultValue':Sequelize[_0x28be('0x5')]('CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP')}};
\ No newline at end of file
+var _0x8830=['STRING','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','moment','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8830,0x1ad));var _0x0883=function(_0x3b504e,_0x506c10){_0x3b504e=_0x3b504e-0x0;var _0xfaed21=_0x8830[_0x3b504e];return _0xfaed21;};'use strict';var Sequelize=require(_0x0883('0x0'));var moment=require(_0x0883('0x1'));module[_0x0883('0x2')]={'time':{'type':Sequelize[_0x0883('0x3')]},'callid':{'type':Sequelize[_0x0883('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x0883('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x0883('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x0883('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x0883('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x0883('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x0883('0x3')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x0883('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x0883('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x0883('0x4')](_0x0883('0x5'))}};
\ No newline at end of file
index 57a8c88..97fa462 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2dd=['path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','end','status','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','VoiceQueuesLog','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','map','type','VIRTUAL','options','includeAll','include','rows','show','params','find','create','catch','body','rimraf','zip-dir','fast-json-patch','moment','mustache','util'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf2dd,0x1aa));var _0xdf2d=function(_0xc7348b,_0x145880){_0xc7348b=_0xc7348b-0x0;var _0x307cec=_0xf2dd[_0xc7348b];return _0x307cec;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdf2d('0x0'));var zipdir=require(_0xdf2d('0x1'));var jsonpatch=require(_0xdf2d('0x2'));var rp=require('request-promise');var moment=require(_0xdf2d('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xdf2d('0x4'));var util=require(_0xdf2d('0x5'));var path=require(_0xdf2d('0x6'));var sox=require('sox');var csv=require(_0xdf2d('0x7'));var ejs=require(_0xdf2d('0x8'));var fs=require('fs');var fs_extra=require(_0xdf2d('0x9'));var _=require(_0xdf2d('0xa'));var squel=require(_0xdf2d('0xb'));var crypto=require(_0xdf2d('0xc'));var jsforce=require(_0xdf2d('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xdf2d('0x7'));var querystring=require(_0xdf2d('0xe'));var Papa=require('papaparse');var Redis=require(_0xdf2d('0xf'));var authService=require(_0xdf2d('0x10'));var qs=require(_0xdf2d('0x11'));var as=require(_0xdf2d('0x12'));var hardwareService=require(_0xdf2d('0x13'));var logger=require(_0xdf2d('0x14'))(_0xdf2d('0x15'));var utils=require('../../config/utils');var config=require(_0xdf2d('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xdf2d('0x17'))['db'];function respondWithStatusCode(_0xa86ce8,_0x41c256){_0x41c256=_0x41c256||0xcc;return function(_0x5a7bd5){if(_0x5a7bd5){return _0xa86ce8['sendStatus'](_0x41c256);}return _0xa86ce8['status'](_0x41c256)[_0xdf2d('0x18')]();};}function respondWithResult(_0x4f5a40,_0x52fa69){_0x52fa69=_0x52fa69||0xc8;return function(_0x115325){if(_0x115325){return _0x4f5a40[_0xdf2d('0x19')](_0x52fa69)[_0xdf2d('0x1a')](_0x115325);}};}function respondWithFilteredResult(_0x5b4498,_0x3c2ec4){return function(_0x3950a3){if(_0x3950a3){var _0x3c312a=typeof _0x3c2ec4[_0xdf2d('0x1b')]==='undefined'&&typeof _0x3c2ec4[_0xdf2d('0x1c')]==='undefined';var _0x183d11=_0x3950a3[_0xdf2d('0x1d')];var _0x4332c4=_0x3c312a?0x0:_0x3c2ec4[_0xdf2d('0x1b')];var _0x4f3dcc=_0x3c312a?_0x3950a3[_0xdf2d('0x1d')]:_0x3c2ec4['offset']+_0x3c2ec4[_0xdf2d('0x1c')];var _0x2f1ac8;if(_0x4f3dcc>=_0x183d11){_0x4f3dcc=_0x183d11;_0x2f1ac8=0xc8;}else{_0x2f1ac8=0xce;}_0x5b4498[_0xdf2d('0x19')](_0x2f1ac8);return _0x5b4498[_0xdf2d('0x1e')](_0xdf2d('0x1f'),_0x4332c4+'-'+_0x4f3dcc+'/'+_0x183d11)[_0xdf2d('0x1a')](_0x3950a3);}return null;};}function patchUpdates(_0x45812a){return function(_0x58595e){try{jsonpatch[_0xdf2d('0x20')](_0x58595e,_0x45812a,!![]);}catch(_0x5a2c09){return BPromise[_0xdf2d('0x21')](_0x5a2c09);}return _0x58595e[_0xdf2d('0x22')]();};}function saveUpdates(_0x9672ea,_0x3d365b){return function(_0x275e92){if(_0x275e92){return _0x275e92[_0xdf2d('0x23')](_0x9672ea)[_0xdf2d('0x24')](function(_0x1e745b){return _0x1e745b;});}return null;};}function removeEntity(_0x1f5535,_0x21cb2d){return function(_0x79205f){if(_0x79205f){return _0x79205f[_0xdf2d('0x25')]()['then'](function(){_0x1f5535[_0xdf2d('0x19')](0xcc)[_0xdf2d('0x18')]();});}};}function handleEntityNotFound(_0x20cca2,_0x4dd3d1){return function(_0x58df6e){if(!_0x58df6e){_0x20cca2[_0xdf2d('0x26')](0x194);}return _0x58df6e;};}function handleError(_0x493e2f,_0x1fe554){_0x1fe554=_0x1fe554||0x1f4;return function(_0xa1c363){logger[_0xdf2d('0x27')](_0xa1c363[_0xdf2d('0x28')]);if(_0xa1c363[_0xdf2d('0x29')]){delete _0xa1c363['name'];}_0x493e2f[_0xdf2d('0x19')](_0x1fe554)['send'](_0xa1c363);};}exports[_0xdf2d('0x2a')]=function(_0x146d1e,_0xf71dee){var _0x29b7fb={},_0x171007={},_0x18fefa={'count':0x0,'rows':[]};var _0x4e73da=_['map'](db[_0xdf2d('0x2b')]['rawAttributes'],function(_0x3612c2){return{'name':_0x3612c2['fieldName'],'type':_0x3612c2['type'][_0xdf2d('0x2c')]};});_0x171007[_0xdf2d('0x2d')]=_['map'](_0x4e73da,_0xdf2d('0x29'));_0x171007[_0xdf2d('0x2e')]=_[_0xdf2d('0x2f')](_0x146d1e[_0xdf2d('0x2e')]);_0x171007[_0xdf2d('0x30')]=_['intersection'](_0x171007[_0xdf2d('0x2d')],_0x171007[_0xdf2d('0x2e')]);_0x29b7fb[_0xdf2d('0x31')]=_[_0xdf2d('0x32')](_0x171007[_0xdf2d('0x2d')],qs['fields'](_0x146d1e['query'][_0xdf2d('0x33')]));_0x29b7fb['attributes']=_0x29b7fb['attributes'][_0xdf2d('0x34')]?_0x29b7fb['attributes']:_0x171007[_0xdf2d('0x2d')];if(!_0x146d1e[_0xdf2d('0x2e')][_0xdf2d('0x35')](_0xdf2d('0x36'))){_0x29b7fb['limit']=qs['limit'](_0x146d1e[_0xdf2d('0x2e')][_0xdf2d('0x1c')]);_0x29b7fb[_0xdf2d('0x1b')]=qs[_0xdf2d('0x1b')](_0x146d1e[_0xdf2d('0x2e')]['offset']);}_0x29b7fb['order']=qs[_0xdf2d('0x37')](_0x146d1e[_0xdf2d('0x2e')][_0xdf2d('0x37')]);_0x29b7fb[_0xdf2d('0x38')]=qs[_0xdf2d('0x30')](_['pick'](_0x146d1e[_0xdf2d('0x2e')],_0x171007[_0xdf2d('0x30')]),_0x4e73da);if(_0x146d1e['query'][_0xdf2d('0x39')]){_0x29b7fb['where']=_[_0xdf2d('0x3a')](_0x29b7fb[_0xdf2d('0x38')],{'$or':_[_0xdf2d('0x3b')](_0x4e73da,function(_0x531fe4){if(_0x531fe4[_0xdf2d('0x3c')]!==_0xdf2d('0x3d')){var _0x3085f9={};_0x3085f9[_0x531fe4[_0xdf2d('0x29')]]={'$like':'%'+_0x146d1e[_0xdf2d('0x2e')][_0xdf2d('0x39')]+'%'};return _0x3085f9;}})});}_0x29b7fb=_['merge']({},_0x29b7fb,_0x146d1e[_0xdf2d('0x3e')]);var _0x76e777={'where':_0x29b7fb[_0xdf2d('0x38')]};return db[_0xdf2d('0x2b')][_0xdf2d('0x1d')](_0x76e777)['then'](function(_0x381135){_0x18fefa[_0xdf2d('0x1d')]=_0x381135;if(_0x146d1e[_0xdf2d('0x2e')][_0xdf2d('0x3f')]){_0x29b7fb[_0xdf2d('0x40')]=[{'all':!![]}];}return db[_0xdf2d('0x2b')]['findAll'](_0x29b7fb);})[_0xdf2d('0x24')](function(_0x40afac){_0x18fefa[_0xdf2d('0x41')]=_0x40afac;return _0x18fefa;})[_0xdf2d('0x24')](respondWithFilteredResult(_0xf71dee,_0x29b7fb))['catch'](handleError(_0xf71dee,null));};exports[_0xdf2d('0x42')]=function(_0x522b5c,_0x246502){var _0x6a072e={'raw':!![],'where':{'id':_0x522b5c[_0xdf2d('0x43')]['id']}},_0x58ce08={};_0x58ce08[_0xdf2d('0x2d')]=_[_0xdf2d('0x2f')](db[_0xdf2d('0x2b')]['rawAttributes']);_0x58ce08[_0xdf2d('0x2e')]=_[_0xdf2d('0x2f')](_0x522b5c['query']);_0x58ce08[_0xdf2d('0x30')]=_[_0xdf2d('0x32')](_0x58ce08[_0xdf2d('0x2d')],_0x58ce08[_0xdf2d('0x2e')]);_0x6a072e['attributes']=_['intersection'](_0x58ce08[_0xdf2d('0x2d')],qs[_0xdf2d('0x33')](_0x522b5c[_0xdf2d('0x2e')][_0xdf2d('0x33')]));_0x6a072e[_0xdf2d('0x31')]=_0x6a072e[_0xdf2d('0x31')]['length']?_0x6a072e[_0xdf2d('0x31')]:_0x58ce08[_0xdf2d('0x2d')];if(_0x522b5c['query'][_0xdf2d('0x3f')]){_0x6a072e['include']=[{'all':!![]}];}_0x6a072e=_[_0xdf2d('0x3a')]({},_0x6a072e,_0x522b5c[_0xdf2d('0x3e')]);return db['VoiceQueuesLog'][_0xdf2d('0x44')](_0x6a072e)[_0xdf2d('0x24')](handleEntityNotFound(_0x246502,null))[_0xdf2d('0x24')](respondWithResult(_0x246502,null))['catch'](handleError(_0x246502,null));};exports[_0xdf2d('0x45')]=function(_0x4c462b,_0x1b34c3){return db['VoiceQueuesLog']['create'](_0x4c462b['body'],{})['then'](respondWithResult(_0x1b34c3,0xc9))[_0xdf2d('0x46')](handleError(_0x1b34c3,null));};exports[_0xdf2d('0x23')]=function(_0x2499f9,_0x204e9e){if(_0x2499f9[_0xdf2d('0x47')]['id']){delete _0x2499f9['body']['id'];}return db['VoiceQueuesLog'][_0xdf2d('0x44')]({'where':{'id':_0x2499f9[_0xdf2d('0x43')]['id']}})[_0xdf2d('0x24')](handleEntityNotFound(_0x204e9e,null))[_0xdf2d('0x24')](saveUpdates(_0x2499f9['body'],null))[_0xdf2d('0x24')](respondWithResult(_0x204e9e,null))['catch'](handleError(_0x204e9e,null));};exports[_0xdf2d('0x25')]=function(_0x37f250,_0x2e67fc){return db[_0xdf2d('0x2b')][_0xdf2d('0x44')]({'where':{'id':_0x37f250['params']['id']}})[_0xdf2d('0x24')](handleEntityNotFound(_0x2e67fc,null))[_0xdf2d('0x24')](removeEntity(_0x2e67fc,null))[_0xdf2d('0x46')](handleError(_0x2e67fc,null));};
\ No newline at end of file
+var _0x288f=['nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','rows','params','rawAttributes','catch','create','body','update','find','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','offset','Content-Range','json','apply','reject','then','destroy','error','stack','name','send','index','map','VoiceQueuesLog','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty'];(function(_0x983a5a,_0x553a75){var _0x1b45c5=function(_0x43f041){while(--_0x43f041){_0x983a5a['push'](_0x983a5a['shift']());}};_0x1b45c5(++_0x553a75);}(_0x288f,0xef));var _0xf288=function(_0x3008ba,_0x31eb74){_0x3008ba=_0x3008ba-0x0;var _0x213537=_0x288f[_0x3008ba];return _0x213537;};'use strict';var emlformat=require(_0xf288('0x0'));var rimraf=require(_0xf288('0x1'));var zipdir=require(_0xf288('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf288('0x3'));var moment=require('moment');var BPromise=require(_0xf288('0x4'));var Mustache=require(_0xf288('0x5'));var util=require(_0xf288('0x6'));var path=require(_0xf288('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf288('0x8'));var fs=require('fs');var fs_extra=require(_0xf288('0x9'));var _=require(_0xf288('0xa'));var squel=require(_0xf288('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xf288('0xc'));var toCsv=require(_0xf288('0xd'));var querystring=require('querystring');var Papa=require(_0xf288('0xe'));var Redis=require(_0xf288('0xf'));var authService=require(_0xf288('0x10'));var qs=require(_0xf288('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xf288('0x12'))(_0xf288('0x13'));var utils=require(_0xf288('0x14'));var config=require(_0xf288('0x15'));var licenseUtil=require(_0xf288('0x16'));var db=require(_0xf288('0x17'))['db'];function respondWithStatusCode(_0x220128,_0x2ec948){_0x2ec948=_0x2ec948||0xcc;return function(_0x21f61f){if(_0x21f61f){return _0x220128[_0xf288('0x18')](_0x2ec948);}return _0x220128['status'](_0x2ec948)['end']();};}function respondWithResult(_0xa93d4,_0x342128){_0x342128=_0x342128||0xc8;return function(_0x496c73){if(_0x496c73){return _0xa93d4[_0xf288('0x19')](_0x342128)['json'](_0x496c73);}};}function respondWithFilteredResult(_0x134125,_0x4b794f){return function(_0x56b81f){if(_0x56b81f){var _0xb28acd=typeof _0x4b794f['offset']===_0xf288('0x1a')&&typeof _0x4b794f[_0xf288('0x1b')]===_0xf288('0x1a');var _0x16e01f=_0x56b81f['count'];var _0xc69cd9=_0xb28acd?0x0:_0x4b794f['offset'];var _0x657059=_0xb28acd?_0x56b81f['count']:_0x4b794f[_0xf288('0x1c')]+_0x4b794f[_0xf288('0x1b')];var _0x5a5514;if(_0x657059>=_0x16e01f){_0x657059=_0x16e01f;_0x5a5514=0xc8;}else{_0x5a5514=0xce;}_0x134125[_0xf288('0x19')](_0x5a5514);return _0x134125['set'](_0xf288('0x1d'),_0xc69cd9+'-'+_0x657059+'/'+_0x16e01f)[_0xf288('0x1e')](_0x56b81f);}return null;};}function patchUpdates(_0x3563d3){return function(_0x55fc7e){try{jsonpatch[_0xf288('0x1f')](_0x55fc7e,_0x3563d3,!![]);}catch(_0x2424e2){return BPromise[_0xf288('0x20')](_0x2424e2);}return _0x55fc7e['save']();};}function saveUpdates(_0x4ce3d8,_0x55f1b4){return function(_0x1fdec9){if(_0x1fdec9){return _0x1fdec9['update'](_0x4ce3d8)[_0xf288('0x21')](function(_0x23ddde){return _0x23ddde;});}return null;};}function removeEntity(_0x11605f,_0x2753ea){return function(_0xbd657e){if(_0xbd657e){return _0xbd657e[_0xf288('0x22')]()[_0xf288('0x21')](function(){_0x11605f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x43977f,_0x5d23c0){return function(_0xa837dd){if(!_0xa837dd){_0x43977f['sendStatus'](0x194);}return _0xa837dd;};}function handleError(_0x77f062,_0xc94ad5){_0xc94ad5=_0xc94ad5||0x1f4;return function(_0x23aaac){logger[_0xf288('0x23')](_0x23aaac[_0xf288('0x24')]);if(_0x23aaac[_0xf288('0x25')]){delete _0x23aaac[_0xf288('0x25')];}_0x77f062[_0xf288('0x19')](_0xc94ad5)[_0xf288('0x26')](_0x23aaac);};}exports[_0xf288('0x27')]=function(_0x5ecbe3,_0x29cdfe){var _0x54d5b8={},_0x5ddead={},_0xf01fa8={'count':0x0,'rows':[]};var _0x555c4c=_[_0xf288('0x28')](db[_0xf288('0x29')]['rawAttributes'],function(_0x178e91){return{'name':_0x178e91[_0xf288('0x2a')],'type':_0x178e91[_0xf288('0x2b')][_0xf288('0x2c')]};});_0x5ddead[_0xf288('0x2d')]=_['map'](_0x555c4c,_0xf288('0x25'));_0x5ddead['query']=_[_0xf288('0x2e')](_0x5ecbe3[_0xf288('0x2f')]);_0x5ddead[_0xf288('0x30')]=_[_0xf288('0x31')](_0x5ddead[_0xf288('0x2d')],_0x5ddead[_0xf288('0x2f')]);_0x54d5b8[_0xf288('0x32')]=_[_0xf288('0x31')](_0x5ddead[_0xf288('0x2d')],qs[_0xf288('0x33')](_0x5ecbe3['query'][_0xf288('0x33')]));_0x54d5b8['attributes']=_0x54d5b8[_0xf288('0x32')]['length']?_0x54d5b8[_0xf288('0x32')]:_0x5ddead[_0xf288('0x2d')];if(!_0x5ecbe3[_0xf288('0x2f')][_0xf288('0x34')](_0xf288('0x35'))){_0x54d5b8['limit']=qs[_0xf288('0x1b')](_0x5ecbe3[_0xf288('0x2f')][_0xf288('0x1b')]);_0x54d5b8[_0xf288('0x1c')]=qs[_0xf288('0x1c')](_0x5ecbe3['query']['offset']);}_0x54d5b8[_0xf288('0x36')]=qs[_0xf288('0x37')](_0x5ecbe3[_0xf288('0x2f')][_0xf288('0x37')]);_0x54d5b8[_0xf288('0x38')]=qs[_0xf288('0x30')](_[_0xf288('0x39')](_0x5ecbe3[_0xf288('0x2f')],_0x5ddead['filters']),_0x555c4c);if(_0x5ecbe3[_0xf288('0x2f')][_0xf288('0x3a')]){_0x54d5b8[_0xf288('0x38')]=_[_0xf288('0x3b')](_0x54d5b8[_0xf288('0x38')],{'$or':_['map'](_0x555c4c,function(_0x3f137c){if(_0x3f137c[_0xf288('0x2b')]!==_0xf288('0x3c')){var _0x4ef0c2={};_0x4ef0c2[_0x3f137c[_0xf288('0x25')]]={'$like':'%'+_0x5ecbe3['query'][_0xf288('0x3a')]+'%'};return _0x4ef0c2;}})});}_0x54d5b8=_['merge']({},_0x54d5b8,_0x5ecbe3[_0xf288('0x3d')]);var _0x5ac5da={'where':_0x54d5b8['where']};return db[_0xf288('0x29')][_0xf288('0x3e')](_0x5ac5da)['then'](function(_0x2c8476){_0xf01fa8[_0xf288('0x3e')]=_0x2c8476;if(_0x5ecbe3[_0xf288('0x2f')][_0xf288('0x3f')]){_0x54d5b8[_0xf288('0x40')]=[{'all':!![]}];}return db[_0xf288('0x29')]['findAll'](_0x54d5b8);})['then'](function(_0x2a7771){_0xf01fa8[_0xf288('0x41')]=_0x2a7771;return _0xf01fa8;})['then'](respondWithFilteredResult(_0x29cdfe,_0x54d5b8))['catch'](handleError(_0x29cdfe,null));};exports['show']=function(_0x181f1c,_0x2e5aaf){var _0x1c2783={'raw':!![],'where':{'id':_0x181f1c[_0xf288('0x42')]['id']}},_0x9dfca7={};_0x9dfca7[_0xf288('0x2d')]=_[_0xf288('0x2e')](db[_0xf288('0x29')][_0xf288('0x43')]);_0x9dfca7[_0xf288('0x2f')]=_[_0xf288('0x2e')](_0x181f1c[_0xf288('0x2f')]);_0x9dfca7[_0xf288('0x30')]=_['intersection'](_0x9dfca7['model'],_0x9dfca7['query']);_0x1c2783[_0xf288('0x32')]=_[_0xf288('0x31')](_0x9dfca7[_0xf288('0x2d')],qs['fields'](_0x181f1c['query'][_0xf288('0x33')]));_0x1c2783[_0xf288('0x32')]=_0x1c2783['attributes']['length']?_0x1c2783[_0xf288('0x32')]:_0x9dfca7['model'];if(_0x181f1c['query'][_0xf288('0x3f')]){_0x1c2783[_0xf288('0x40')]=[{'all':!![]}];}_0x1c2783=_[_0xf288('0x3b')]({},_0x1c2783,_0x181f1c[_0xf288('0x3d')]);return db[_0xf288('0x29')]['find'](_0x1c2783)['then'](handleEntityNotFound(_0x2e5aaf,null))[_0xf288('0x21')](respondWithResult(_0x2e5aaf,null))[_0xf288('0x44')](handleError(_0x2e5aaf,null));};exports[_0xf288('0x45')]=function(_0x1d900e,_0x1e66b9){return db['VoiceQueuesLog'][_0xf288('0x45')](_0x1d900e[_0xf288('0x46')],{})['then'](respondWithResult(_0x1e66b9,0xc9))[_0xf288('0x44')](handleError(_0x1e66b9,null));};exports[_0xf288('0x47')]=function(_0x30859b,_0x9295db){if(_0x30859b[_0xf288('0x46')]['id']){delete _0x30859b[_0xf288('0x46')]['id'];}return db[_0xf288('0x29')][_0xf288('0x48')]({'where':{'id':_0x30859b[_0xf288('0x42')]['id']}})[_0xf288('0x21')](handleEntityNotFound(_0x9295db,null))[_0xf288('0x21')](saveUpdates(_0x30859b[_0xf288('0x46')],null))['then'](respondWithResult(_0x9295db,null))[_0xf288('0x44')](handleError(_0x9295db,null));};exports['destroy']=function(_0x346bfe,_0x2956f2){return db[_0xf288('0x29')][_0xf288('0x48')]({'where':{'id':_0x346bfe[_0xf288('0x42')]['id']}})['then'](handleEntityNotFound(_0x2956f2,null))[_0xf288('0x21')](removeEntity(_0x2956f2,null))[_0xf288('0x44')](handleError(_0x2956f2,null));};
\ No newline at end of file
index a96594e..997c165 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49d7=['event_dtm','event','lodash','moment','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x2576d7,_0x167624){var _0x16a08c=function(_0x19de1e){while(--_0x19de1e){_0x2576d7['push'](_0x2576d7['shift']());}};_0x16a08c(++_0x167624);}(_0x49d7,0xfe));var _0x749d=function(_0x59e821,_0x86c723){_0x59e821=_0x59e821-0x0;var _0x5333f6=_0x49d7[_0x59e821];return _0x5333f6;};'use strict';var _=require(_0x749d('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x749d('0x1'));var BPromise=require('bluebird');var rp=require(_0x749d('0x2'));var fs=require('fs');var path=require(_0x749d('0x3'));var rimraf=require(_0x749d('0x4'));var config=require(_0x749d('0x5'));var attributes=require('./voiceQueuesLog.attributes');module[_0x749d('0x6')]=function(_0x16a05e,_0x166e28){return _0x16a05e['define']('VoiceQueuesLog',attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0x749d('0x7'),'fields':[_0x749d('0x8'),'dtm']}],'timestamps':![]});};
\ No newline at end of file
+var _0xe021=['api','moment','bluebird','request-promise','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports','define','event_dtm','event','dtm','lodash','util','../../config/logger'];(function(_0x27bbf5,_0x15ea41){var _0x10b7ad=function(_0x3a5f82){while(--_0x3a5f82){_0x27bbf5['push'](_0x27bbf5['shift']());}};_0x10b7ad(++_0x15ea41);}(_0xe021,0x138));var _0x1e02=function(_0x16561b,_0x53b05d){_0x16561b=_0x16561b-0x0;var _0x5a9c53=_0xe021[_0x16561b];return _0x5a9c53;};'use strict';var _=require(_0x1e02('0x0'));var util=require(_0x1e02('0x1'));var logger=require(_0x1e02('0x2'))(_0x1e02('0x3'));var moment=require(_0x1e02('0x4'));var BPromise=require(_0x1e02('0x5'));var rp=require(_0x1e02('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1e02('0x7'));var config=require(_0x1e02('0x8'));var attributes=require(_0x1e02('0x9'));module[_0x1e02('0xa')]=function(_0x2ce812,_0x5d94e7){return _0x2ce812[_0x1e02('0xb')]('VoiceQueuesLog',attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0x1e02('0xc'),'fields':[_0x1e02('0xd'),_0x1e02('0xe')]}],'timestamps':![]});};
\ No newline at end of file
index 9abd95f..0938034 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4641=['../../config/logger','../../config/environment','client','http','request','then','info','request\x20sent','debug','stringify','error','code','message','VoiceQueuesLog,\x20%s,\x20%s','result','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x1885db,_0x4aca16){var _0x11d038=function(_0x5ab6be){while(--_0x5ab6be){_0x1885db['push'](_0x1885db['shift']());}};_0x11d038(++_0x4aca16);}(_0x4641,0x185));var _0x1464=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0x4641[_0x465028];return _0xb783d4;};'use strict';var _=require('lodash');var util=require(_0x1464('0x0'));var moment=require(_0x1464('0x1'));var BPromise=require(_0x1464('0x2'));var rs=require(_0x1464('0x3'));var fs=require('fs');var Redis=require(_0x1464('0x4'));var db=require(_0x1464('0x5'))['db'];var utils=require(_0x1464('0x6'));var logger=require(_0x1464('0x7'))('rpc');var config=require(_0x1464('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x1464('0x9')][_0x1464('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1c2e86,_0x5a40d9,_0x1d298a){return new BPromise(function(_0x226cde,_0x1b711b){return client[_0x1464('0xb')](_0x1c2e86,_0x1d298a)[_0x1464('0xc')](function(_0x1e1c85){logger[_0x1464('0xd')]('VoiceQueuesLog,\x20%s,\x20%s',_0x5a40d9,_0x1464('0xe'));logger[_0x1464('0xf')]('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x5a40d9,'request\x20sent',JSON[_0x1464('0x10')](_0x1e1c85));if(_0x1e1c85[_0x1464('0x11')]){if(_0x1e1c85[_0x1464('0x11')][_0x1464('0x12')]===0x1f4){logger['error']('VoiceQueuesLog,\x20%s,\x20%s',_0x5a40d9,_0x1e1c85[_0x1464('0x11')]['message']);return _0x1b711b(_0x1e1c85[_0x1464('0x11')][_0x1464('0x13')]);}logger[_0x1464('0x11')](_0x1464('0x14'),_0x5a40d9,_0x1e1c85[_0x1464('0x11')]['message']);return _0x226cde(_0x1e1c85[_0x1464('0x11')][_0x1464('0x13')]);}else{logger['info']('VoiceQueuesLog,\x20%s,\x20%s',_0x5a40d9,_0x1464('0xe'));_0x226cde(_0x1e1c85[_0x1464('0x15')]['message']);}})['catch'](function(_0x1bcb38){logger[_0x1464('0x11')](_0x1464('0x14'),_0x5a40d9,_0x1bcb38);_0x1b711b(_0x1bcb38);});});}
\ No newline at end of file
+var _0x516b=['../../config/environment','http','request','then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x6bb25d,_0x2a7683){var _0x2f4231=function(_0x39b37e){while(--_0x39b37e){_0x6bb25d['push'](_0x6bb25d['shift']());}};_0x2f4231(++_0x2a7683);}(_0x516b,0x1dd));var _0xb516=function(_0x27c1c5,_0x2f03de){_0x27c1c5=_0x27c1c5-0x0;var _0x4b85a7=_0x516b[_0x27c1c5];return _0x4b85a7;};'use strict';var _=require(_0xb516('0x0'));var util=require('util');var moment=require(_0xb516('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb516('0x2'));var db=require(_0xb516('0x3'))['db'];var utils=require(_0xb516('0x4'));var logger=require(_0xb516('0x5'))(_0xb516('0x6'));var config=require(_0xb516('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb516('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x44d416,_0x1051da,_0x55063f){return new BPromise(function(_0xa5c4a5,_0x1172b6){return client[_0xb516('0x9')](_0x44d416,_0x55063f)[_0xb516('0xa')](function(_0x30cbc4){logger[_0xb516('0xb')](_0xb516('0xc'),_0x1051da,_0xb516('0xd'));logger[_0xb516('0xe')](_0xb516('0xf'),_0x1051da,_0xb516('0xd'),JSON[_0xb516('0x10')](_0x30cbc4));if(_0x30cbc4[_0xb516('0x11')]){if(_0x30cbc4['error'][_0xb516('0x12')]===0x1f4){logger[_0xb516('0x11')](_0xb516('0xc'),_0x1051da,_0x30cbc4[_0xb516('0x11')][_0xb516('0x13')]);return _0x1172b6(_0x30cbc4[_0xb516('0x11')][_0xb516('0x13')]);}logger[_0xb516('0x11')](_0xb516('0xc'),_0x1051da,_0x30cbc4[_0xb516('0x11')][_0xb516('0x13')]);return _0xa5c4a5(_0x30cbc4[_0xb516('0x11')]['message']);}else{logger[_0xb516('0xb')](_0xb516('0xc'),_0x1051da,_0xb516('0xd'));_0xa5c4a5(_0x30cbc4[_0xb516('0x14')][_0xb516('0x13')]);}})[_0xb516('0x15')](function(_0x419510){logger[_0xb516('0x11')]('VoiceQueuesLog,\x20%s,\x20%s',_0x1051da,_0x419510);_0x1172b6(_0x419510);});});}
\ No newline at end of file
index a53bb4f..1b658e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb78f=['index','/describe','/:id','show','download','/:id/downloads','downloads','downloadTranscribe','post','create','runTranscribe','put','update','delete','destroy','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','./voiceRecording.controller','get','isAuthenticated'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xb78f,0x6f));var _0xfb78=function(_0x5e7992,_0x143881){_0x5e7992=_0x5e7992-0x0;var _0x1ea634=_0xb78f[_0x5e7992];return _0x1ea634;};'use strict';var multer=require('multer');var util=require(_0xfb78('0x0'));var path=require(_0xfb78('0x1'));var timeout=require(_0xfb78('0x2'));var express=require('express');var router=express[_0xfb78('0x3')]();var fs_extra=require(_0xfb78('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xfb78('0x5'));var config=require('../../config/environment');var controller=require(_0xfb78('0x6'));router[_0xfb78('0x7')]('/',auth[_0xfb78('0x8')](),controller[_0xfb78('0x9')]);router[_0xfb78('0x7')](_0xfb78('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0xfb78('0x7')](_0xfb78('0xb'),auth[_0xfb78('0x8')](),controller[_0xfb78('0xc')]);router[_0xfb78('0x7')]('/:id/download',auth[_0xfb78('0x8')](),controller[_0xfb78('0xd')]);router['get'](_0xfb78('0xe'),controller[_0xfb78('0xf')]);router['get']('/:id/transcribe',auth[_0xfb78('0x8')](),controller[_0xfb78('0x10')]);router[_0xfb78('0x11')]('/',auth[_0xfb78('0x8')](),controller[_0xfb78('0x12')]);router['post']('/:id/transcribe',auth[_0xfb78('0x8')](),controller[_0xfb78('0x13')]);router[_0xfb78('0x14')](_0xfb78('0xb'),auth[_0xfb78('0x8')](),controller[_0xfb78('0x15')]);router[_0xfb78('0x16')](_0xfb78('0xb'),auth[_0xfb78('0x8')](),controller[_0xfb78('0x17')]);module['exports']=router;
\ No newline at end of file
+var _0xc782=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','show','/:id/download','download','/:id/downloads','/:id/transcribe','downloadTranscribe','create','post','runTranscribe','put','/:id','update','multer','util','path','connect-timeout'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xc782,0x19c));var _0x2c78=function(_0x34450e,_0x350b08){_0x34450e=_0x34450e-0x0;var _0x348049=_0xc782[_0x34450e];return _0x348049;};'use strict';var multer=require(_0x2c78('0x0'));var util=require(_0x2c78('0x1'));var path=require(_0x2c78('0x2'));var timeout=require(_0x2c78('0x3'));var express=require(_0x2c78('0x4'));var router=express[_0x2c78('0x5')]();var fs_extra=require(_0x2c78('0x6'));var auth=require(_0x2c78('0x7'));var interaction=require(_0x2c78('0x8'));var config=require(_0x2c78('0x9'));var controller=require('./voiceRecording.controller');router[_0x2c78('0xa')]('/',auth[_0x2c78('0xb')](),controller[_0x2c78('0xc')]);router['get']('/describe',auth[_0x2c78('0xb')](),controller[_0x2c78('0xd')]);router['get']('/:id',auth[_0x2c78('0xb')](),controller[_0x2c78('0xe')]);router['get'](_0x2c78('0xf'),auth[_0x2c78('0xb')](),controller[_0x2c78('0x10')]);router[_0x2c78('0xa')](_0x2c78('0x11'),controller['downloads']);router[_0x2c78('0xa')](_0x2c78('0x12'),auth['isAuthenticated'](),controller[_0x2c78('0x13')]);router['post']('/',auth[_0x2c78('0xb')](),controller[_0x2c78('0x14')]);router[_0x2c78('0x15')](_0x2c78('0x12'),auth['isAuthenticated'](),controller[_0x2c78('0x16')]);router[_0x2c78('0x17')](_0x2c78('0x18'),auth[_0x2c78('0xb')](),controller[_0x2c78('0x19')]);router['delete']('/:id',auth[_0x2c78('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index adf0d99..60b055a 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(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'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(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'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 5ccc7da..c636cb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b22=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','aws-sdk','uuid/v4','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','index','map','VoiceRecording','fieldName','type','key','model','differenceBy','format','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','options','find','catch','create','body','describe','download','../../components/encryptor','uniqueid','value','existsSync','secrets','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','unlink','message','send','Not\x20found','downloads','sequelize','MD5','col','token','$and','push','%s.cypher','info','isNil','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','File:\x20\x22','listBuckets','upload','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeStatus','runTranscribe','findOne','Setting','transcribe','transcribeAccountId','transcribeRegion','language','Transcribe\x20not\x20configured','runSentiment','sentimentAccountId','sentimentRegion','CloudProvider','data1','Cloud\x20Provider\x20not\x20configured','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','data2','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','updateAttributes','writeFile','downloadTranscribe','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available'];(function(_0x1fcaf1,_0x21c3c2){var _0x55f464=function(_0x348eb3){while(--_0x348eb3){_0x1fcaf1['push'](_0x1fcaf1['shift']());}};_0x55f464(++_0x21c3c2);}(_0x9b22,0x1d1));var _0x29b2=function(_0x358339,_0x27d754){_0x358339=_0x358339-0x0;var _0x5768b5=_0x9b22[_0x358339];return _0x5768b5;};'use strict';var emlformat=require(_0x29b2('0x0'));var rimraf=require(_0x29b2('0x1'));var zipdir=require(_0x29b2('0x2'));var jsonpatch=require(_0x29b2('0x3'));var rp=require('request-promise');var moment=require(_0x29b2('0x4'));var BPromise=require(_0x29b2('0x5'));var Mustache=require(_0x29b2('0x6'));var util=require(_0x29b2('0x7'));var path=require(_0x29b2('0x8'));var sox=require(_0x29b2('0x9'));var csv=require('to-csv');var ejs=require(_0x29b2('0xa'));var fs=require('fs');var fs_extra=require(_0x29b2('0xb'));var _=require(_0x29b2('0xc'));var squel=require('squel');var crypto=require(_0x29b2('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x29b2('0xe'));var toCsv=require(_0x29b2('0xf'));var querystring=require(_0x29b2('0x10'));var Papa=require('papaparse');var AWS=require(_0x29b2('0x11'));var uuidv4=require(_0x29b2('0x12'));var Redis=require('ioredis');var authService=require(_0x29b2('0x13'));var qs=require(_0x29b2('0x14'));var as=require(_0x29b2('0x15'));var hardwareService=require(_0x29b2('0x16'));var logger=require(_0x29b2('0x17'))('api');var utils=require(_0x29b2('0x18'));var config=require(_0x29b2('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x29b2('0x1a'))['db'];function respondWithStatusCode(_0x5659b0,_0x33789f){_0x33789f=_0x33789f||0xcc;return function(_0x337dab){if(_0x337dab){return _0x5659b0[_0x29b2('0x1b')](_0x33789f);}return _0x5659b0[_0x29b2('0x1c')](_0x33789f)['end']();};}function respondWithResult(_0x414184,_0x16f968){_0x16f968=_0x16f968||0xc8;return function(_0x3d9b7b){if(_0x3d9b7b){return _0x414184['status'](_0x16f968)[_0x29b2('0x1d')](_0x3d9b7b);}};}function respondWithFilteredResult(_0x3a6c9b,_0x46fd73){return function(_0x1945f7){if(_0x1945f7){var _0x5b5ebb=typeof _0x46fd73[_0x29b2('0x1e')]==='undefined'&&typeof _0x46fd73[_0x29b2('0x1f')]===_0x29b2('0x20');var _0x26c040=_0x1945f7['count'];var _0x39dd41=_0x5b5ebb?0x0:_0x46fd73[_0x29b2('0x1e')];var _0x268b8d=_0x5b5ebb?_0x1945f7[_0x29b2('0x21')]:_0x46fd73[_0x29b2('0x1e')]+_0x46fd73[_0x29b2('0x1f')];var _0xf2ea49;if(_0x268b8d>=_0x26c040){_0x268b8d=_0x26c040;_0xf2ea49=0xc8;}else{_0xf2ea49=0xce;}_0x3a6c9b[_0x29b2('0x1c')](_0xf2ea49);return _0x3a6c9b[_0x29b2('0x22')](_0x29b2('0x23'),_0x39dd41+'-'+_0x268b8d+'/'+_0x26c040)['json'](_0x1945f7);}return null;};}function patchUpdates(_0x16e892){return function(_0x1efc76){try{jsonpatch[_0x29b2('0x24')](_0x1efc76,_0x16e892,!![]);}catch(_0x4f988f){return BPromise[_0x29b2('0x25')](_0x4f988f);}return _0x1efc76[_0x29b2('0x26')]();};}function saveUpdates(_0x1ba47e,_0x2ca4ee){return function(_0x26086e){if(_0x26086e){return _0x26086e[_0x29b2('0x27')](_0x1ba47e)[_0x29b2('0x28')](function(_0x5bd214){return _0x5bd214;});}return null;};}function removeEntity(_0x220693,_0x533621){return function(_0x23304d){if(_0x23304d){return _0x23304d[_0x29b2('0x29')]()['then'](function(){_0x220693[_0x29b2('0x1c')](0xcc)[_0x29b2('0x2a')]();});}};}function handleEntityNotFound(_0x224da1,_0x39d880){return function(_0x4be898){if(!_0x4be898){_0x224da1['sendStatus'](0x194);}return _0x4be898;};}function handleError(_0x19fe5b,_0x278fa3){_0x278fa3=_0x278fa3||0x1f4;return function(_0x59ed42){logger[_0x29b2('0x2b')](_0x59ed42[_0x29b2('0x2c')]);if(_0x59ed42[_0x29b2('0x2d')]){delete _0x59ed42[_0x29b2('0x2d')];}_0x19fe5b[_0x29b2('0x1c')](_0x278fa3)['send'](_0x59ed42);};}exports[_0x29b2('0x2e')]=function(_0x4d7087,_0x4a6053){var _0x106406={},_0x2a6af0={},_0x36dbf6={'count':0x0,'rows':[]};var _0x184522=_[_0x29b2('0x2f')](db[_0x29b2('0x30')]['rawAttributes'],function(_0x3fb4bc){return{'name':_0x3fb4bc[_0x29b2('0x31')],'type':_0x3fb4bc[_0x29b2('0x32')][_0x29b2('0x33')]};});_0x2a6af0[_0x29b2('0x34')]=_[_0x29b2('0x35')](_[_0x29b2('0x2f')](_0x184522,'name'),[_0x29b2('0x36')]);_0x2a6af0[_0x29b2('0x37')]=_[_0x29b2('0x38')](_0x4d7087['query']);_0x2a6af0['filters']=_[_0x29b2('0x39')](_0x2a6af0[_0x29b2('0x34')],_0x2a6af0['query']);_0x106406[_0x29b2('0x3a')]=_[_0x29b2('0x39')](_0x2a6af0['model'],qs[_0x29b2('0x3b')](_0x4d7087[_0x29b2('0x37')]['fields']));_0x106406['attributes']=_0x106406['attributes'][_0x29b2('0x3c')]?_0x106406[_0x29b2('0x3a')]:_0x2a6af0[_0x29b2('0x34')];if(!_0x4d7087[_0x29b2('0x37')][_0x29b2('0x3d')](_0x29b2('0x3e'))){_0x106406[_0x29b2('0x1f')]=qs[_0x29b2('0x1f')](_0x4d7087[_0x29b2('0x37')]['limit']);_0x106406[_0x29b2('0x1e')]=qs[_0x29b2('0x1e')](_0x4d7087[_0x29b2('0x37')][_0x29b2('0x1e')]);}_0x106406[_0x29b2('0x3f')]=qs['sort'](_0x4d7087[_0x29b2('0x37')][_0x29b2('0x40')]);_0x106406[_0x29b2('0x41')]=qs[_0x29b2('0x42')](_[_0x29b2('0x43')](_0x4d7087[_0x29b2('0x37')],_0x2a6af0['filters']),_0x184522);if(_0x4d7087['query'][_0x29b2('0x44')]){_0x106406[_0x29b2('0x41')]=_[_0x29b2('0x45')](_0x106406['where'],{'$or':_[_0x29b2('0x2f')](_0x184522,function(_0x8da4ba){if(_0x8da4ba[_0x29b2('0x32')]!==_0x29b2('0x46')){var _0x248d9e={};_0x248d9e[_0x8da4ba[_0x29b2('0x2d')]]={'$like':'%'+_0x4d7087['query'][_0x29b2('0x44')]+'%'};return _0x248d9e;}})});}_0x106406=_[_0x29b2('0x45')]({},_0x106406,_0x4d7087['options']);var _0x4d38a9={'where':_0x106406['where']};return db['VoiceRecording'][_0x29b2('0x21')](_0x4d38a9)['then'](function(_0x2fc6f5){_0x36dbf6[_0x29b2('0x21')]=_0x2fc6f5;if(_0x4d7087['query'][_0x29b2('0x47')]){_0x106406[_0x29b2('0x48')]=[{'all':!![]}];}return db[_0x29b2('0x30')][_0x29b2('0x49')](_0x106406);})[_0x29b2('0x28')](function(_0x2ead92){_0x36dbf6[_0x29b2('0x4a')]=_0x2ead92;return _0x36dbf6;})['then'](respondWithFilteredResult(_0x4a6053,_0x106406))['catch'](handleError(_0x4a6053,null));};exports[_0x29b2('0x4b')]=function(_0x336761,_0x16a4fc){var _0x4b1f1={'raw':![],'where':{'id':_0x336761[_0x29b2('0x4c')]['id']}},_0x1ede63={};_0x1ede63[_0x29b2('0x34')]=_[_0x29b2('0x38')](db[_0x29b2('0x30')]['rawAttributes']);_0x1ede63[_0x29b2('0x37')]=_[_0x29b2('0x38')](_0x336761['query']);_0x1ede63[_0x29b2('0x42')]=_[_0x29b2('0x39')](_0x1ede63[_0x29b2('0x34')],_0x1ede63[_0x29b2('0x37')]);_0x4b1f1[_0x29b2('0x3a')]=_[_0x29b2('0x39')](_0x1ede63[_0x29b2('0x34')],qs[_0x29b2('0x3b')](_0x336761['query']['fields']));_0x4b1f1['attributes']=_0x4b1f1[_0x29b2('0x3a')][_0x29b2('0x3c')]?_0x4b1f1[_0x29b2('0x3a')]:_0x1ede63[_0x29b2('0x34')];if(_0x336761[_0x29b2('0x37')]['includeAll']){_0x4b1f1[_0x29b2('0x48')]=[{'all':!![]}];}_0x4b1f1=_[_0x29b2('0x45')]({},_0x4b1f1,_0x336761[_0x29b2('0x4d')]);return db[_0x29b2('0x30')][_0x29b2('0x4e')](_0x4b1f1)[_0x29b2('0x28')](handleEntityNotFound(_0x16a4fc,null))[_0x29b2('0x28')](respondWithResult(_0x16a4fc,null))[_0x29b2('0x4f')](handleError(_0x16a4fc,null));};exports['create']=function(_0x216fef,_0x21e222){return db[_0x29b2('0x30')][_0x29b2('0x50')](_0x216fef[_0x29b2('0x51')],{})[_0x29b2('0x28')](respondWithResult(_0x21e222,0xc9))['catch'](handleError(_0x21e222,null));};exports[_0x29b2('0x27')]=function(_0x45ce30,_0x523e2d){if(_0x45ce30[_0x29b2('0x51')]['id']){delete _0x45ce30[_0x29b2('0x51')]['id'];}return db[_0x29b2('0x30')][_0x29b2('0x4e')]({'where':{'id':_0x45ce30[_0x29b2('0x4c')]['id']}})['then'](handleEntityNotFound(_0x523e2d,null))['then'](saveUpdates(_0x45ce30['body'],null))[_0x29b2('0x28')](respondWithResult(_0x523e2d,null))['catch'](handleError(_0x523e2d,null));};exports[_0x29b2('0x52')]=function(_0x55041b,_0x141ada){return db['VoiceRecording']['describe']()['then'](respondWithResult(_0x141ada,null))['catch'](handleError(_0x141ada,null));};exports[_0x29b2('0x53')]=function(_0x4f15ad,_0x178af4,_0x24d295){var _0x58ac77=require(_0x29b2('0x54'));var _0xb1a48c=![];var _0x313323={};if(_0x4f15ad['query'][_0x29b2('0x32')]&&_0x4f15ad['query']['type']==='uniqueid'){_0x313323[_0x29b2('0x55')]=_0x4f15ad[_0x29b2('0x4c')]['id'];}else{_0x313323['id']=_0x4f15ad[_0x29b2('0x4c')]['id'];}return db[_0x29b2('0x30')]['find']({'where':_0x313323,'attributes':['id',_0x29b2('0x56')],'raw':!![]})['then'](handleEntityNotFound(_0x178af4,null))[_0x29b2('0x28')](function(_0x298a87){if(_0x298a87){var _0x129f96=_0x298a87[_0x29b2('0x56')];var _0x3b90cf=util[_0x29b2('0x36')]('%s.cypher',_0x129f96);if(fs[_0x29b2('0x57')](_0x3b90cf)){_0xb1a48c=!![];return _0x58ac77['decryptFile'](_0x3b90cf,_0x129f96,config[_0x29b2('0x58')][_0x29b2('0x59')])[_0x29b2('0x28')](function(){return _0x298a87;});}return _0x298a87;}})['then'](function(_0x50c1dc){if(_0x50c1dc){var _0x4c7254=_0x50c1dc[_0x29b2('0x56')];if(!fs[_0x29b2('0x57')](_0x4c7254)){throw new db[(_0x29b2('0x5a'))][(_0x29b2('0x5b'))](_0x29b2('0x5c'));}if(_0x50c1dc[_0x29b2('0x5d')]){return _0x178af4[_0x29b2('0x53')](_0x4c7254,_0x50c1dc[_0x29b2('0x5d')]+path['extname'](_0x4c7254),function(){if(_0xb1a48c){fs[_0x29b2('0x5e')](_0x4c7254);}});}else{return _0x178af4[_0x29b2('0x53')](_0x4c7254,function(_0x11eda2){if(_0xb1a48c){fs[_0x29b2('0x5e')](_0x4c7254);}});}}})[_0x29b2('0x4f')](function(_0x5c9d96){if(_0x5c9d96[_0x29b2('0x5f')]==='VoiceRecording\x20not\x20found'){_0x178af4[_0x29b2('0x1c')](0x194)[_0x29b2('0x60')](_0x29b2('0x61'));}else{return handleError(_0x178af4,null);}});};exports[_0x29b2('0x62')]=function(_0x48f5ec,_0x193388,_0x1f7993){var _0x4d176f=require(_0x29b2('0x54'));var _0xa33814=![];var _0x324012={'$and':[db[_0x29b2('0x63')][_0x29b2('0x41')](db[_0x29b2('0x63')]['fn'](_0x29b2('0x64'),db['sequelize'][_0x29b2('0x65')](_0x29b2('0x55'))),_0x48f5ec[_0x29b2('0x37')][_0x29b2('0x66')])]};if(_0x48f5ec['query'][_0x29b2('0x32')]&&_0x48f5ec[_0x29b2('0x37')][_0x29b2('0x32')]==='uniqueid'){_0x324012[_0x29b2('0x67')][_0x29b2('0x68')]({'uniqueid':_0x48f5ec['params']['id']});}else{_0x324012['$and'][_0x29b2('0x68')]({'id':_0x48f5ec[_0x29b2('0x4c')]['id']});}return db['VoiceRecording'][_0x29b2('0x4e')]({'where':_0x324012,'attributes':['id',_0x29b2('0x56')],'raw':!![]})[_0x29b2('0x28')](handleEntityNotFound(_0x193388,null))['then'](function(_0x5710ba){if(_0x5710ba){var _0x447c13=util['format'](_0x29b2('0x69'),_0x5710ba[_0x29b2('0x56')]);if(fs['existsSync'](_0x447c13)){_0xa33814=!![];return _0x4d176f['decryptFile'](_0x447c13,_0x5710ba[_0x29b2('0x56')],config[_0x29b2('0x58')][_0x29b2('0x59')])[_0x29b2('0x28')](function(){return _0x5710ba;});}return _0x5710ba;}})[_0x29b2('0x28')](function(_0x6c8aa3){if(_0x6c8aa3){if(!fs['existsSync'](_0x6c8aa3['value'])){throw new db[(_0x29b2('0x5a'))][(_0x29b2('0x5b'))]('VoiceRecording\x20not\x20found');}if(_0x6c8aa3['filename']){return _0x193388['download'](_0x6c8aa3['value'],_0x6c8aa3[_0x29b2('0x5d')]+path['extname'](_0x6c8aa3[_0x29b2('0x56')]),function(){if(_0xa33814){fs[_0x29b2('0x5e')](_0x6c8aa3['value']);}});}else{return _0x193388[_0x29b2('0x53')](_0x6c8aa3[_0x29b2('0x56')],function(_0x50b41f){if(_0xa33814){fs[_0x29b2('0x5e')](_0x6c8aa3[_0x29b2('0x56')]);}});}}})[_0x29b2('0x4f')](handleError(_0x193388,null));};exports[_0x29b2('0x29')]=function(_0xc44c52,_0xc6ad04){return db[_0x29b2('0x30')][_0x29b2('0x4e')]({'where':{'id':_0xc44c52[_0x29b2('0x4c')]['id']}})[_0x29b2('0x28')](function(_0x45fb79){if(_['isNil'](_0x45fb79)){throw new ReferenceError('Entity\x20not\x20found');}return _0x45fb79;})[_0x29b2('0x28')](function(_0x4c1b0c){var _0x8f4458=_0x4c1b0c[_0x29b2('0x56')];logger[_0x29b2('0x6a')]('cancellazione\x20fisica\x20documento\x20%s',_0x8f4458);if(!_[_0x29b2('0x6b')](_0x4c1b0c[_0x29b2('0x56')])&&fs[_0x29b2('0x57')](_0x8f4458)){logger['info']('File:\x20\x22'+_0x8f4458+_0x29b2('0x6c'));fs[_0x29b2('0x6d')](_0x8f4458);}_0x8f4458=_0x8f4458+_0x29b2('0x6e');if(!_[_0x29b2('0x6b')](_0x4c1b0c[_0x29b2('0x56')])&&fs[_0x29b2('0x57')](_0x8f4458)){logger['info'](_0x29b2('0x6f')+_0x8f4458+_0x29b2('0x6c'));fs[_0x29b2('0x6d')](_0x8f4458);}return _0x4c1b0c;})[_0x29b2('0x28')](function(_0x1877d9){if(!_0x1877d9)throw new InternalError();return _0x1877d9[_0x29b2('0x29')]();})['then'](function(){_0xc6ad04[_0x29b2('0x1c')](0xcc)[_0x29b2('0x2a')]();})[_0x29b2('0x4f')](handleError(_0xc6ad04,null));};function getBucketslist(_0x42ea21,_0x4995f7,_0x1cf9f1){return new Promise(function(_0x97498d,_0x4ca441){var _0x4114fd=new AWS['S3']({'accessKeyId':_0x4995f7,'secretAccessKey':_0x42ea21,'region':_0x1cf9f1});_0x4114fd[_0x29b2('0x70')]({},function(_0x55f280,_0x148217){if(_0x55f280){return _0x4ca441(_0x55f280);}else{return _0x97498d(_0x148217);}});});}function createBucket(_0x56fa04,_0x27981a,_0x421230,_0xd3294f){return new Promise(function(_0x235749,_0x4987bd){var _0x419f5c=new AWS['S3']({'accessKeyId':_0x27981a,'secretAccessKey':_0x56fa04,'region':_0x421230});_0x419f5c['createBucket']({'Bucket':_0xd3294f},function(_0x3d203e,_0x5f22e2){if(_0x3d203e){return _0x4987bd(_0x3d203e);}else{return _0x235749(_0x5f22e2);}});});}function uploadFile(_0x1a01da,_0x271775,_0x2c8dac,_0x3d0a70,_0x212f04,_0x4665eb){return new Promise(function(_0x432722,_0x4a4e72){var _0x1b8b21=new AWS['S3']({'accessKeyId':_0x271775,'secretAccessKey':_0x1a01da,'region':_0x2c8dac});_0x1b8b21[_0x29b2('0x71')]({'Bucket':_0x3d0a70,'Key':_0x212f04,'Body':_0x4665eb},function(_0x1b5852,_0x5c36a9){if(_0x1b5852){return _0x4a4e72(_0x1b5852);}else{return _0x432722(_0x5c36a9);}});});}function startTranscribe(_0x2fcdb1,_0x23db61,_0x44e2ed,_0x1c4abe,_0xc03bdf,_0x86a050){return new Promise(function(_0x4f94ab,_0x3cb7b4){var _0x1c99fc=new AWS['TranscribeService']({'accessKeyId':_0x23db61,'secretAccessKey':_0x2fcdb1,'region':_0x44e2ed});_0x1c99fc['startTranscriptionJob']({'TranscriptionJobName':_0x1c4abe,'LanguageCode':_0xc03bdf,'Media':{'MediaFileUri':_0x86a050}},function(_0x51fd69,_0x1b5c62){if(_0x51fd69){return _0x3cb7b4(_0x51fd69);}else{return _0x4f94ab(_0x1b5c62);}});});}function transcribe(_0x1d7e31,_0xd0f011,_0x166c8f,_0x35bacd,_0x771539,_0x2ee545,_0x1e6e56){return new Promise(function(_0x7c3460,_0x2ae5b6){var _0x4621c6={};logger[_0x29b2('0x6a')](util[_0x29b2('0x36')](_0x29b2('0x72'),_0x1d7e31,_0x771539));return uploadFile(_0xd0f011,_0x166c8f,_0x35bacd,_0x771539,path['basename'](_0x2ee545),fs[_0x29b2('0x73')](_0x2ee545))[_0x29b2('0x28')](function(_0x44ab3e){logger[_0x29b2('0x6a')](util[_0x29b2('0x36')](_0x29b2('0x74'),_0x1d7e31,_0x771539,_0x44ab3e[_0x29b2('0x75')]));_0x4621c6[_0x29b2('0x76')]=_0x44ab3e[_0x29b2('0x77')];_0x4621c6[_0x29b2('0x78')]=_0x44ab3e[_0x29b2('0x75')];logger['info'](util[_0x29b2('0x36')](_0x29b2('0x79'),_0x1d7e31));return startTranscribe(_0xd0f011,_0x166c8f,_0x35bacd,uuidv4(),_0x1e6e56,_0x44ab3e[_0x29b2('0x75')]);})[_0x29b2('0x28')](function(_0x480204){logger['info'](util[_0x29b2('0x36')](_0x29b2('0x7a'),_0x1d7e31,_0x480204[_0x29b2('0x7b')][_0x29b2('0x7c')]));_0x4621c6['transcribeName']=_0x480204[_0x29b2('0x7b')][_0x29b2('0x7c')];_0x4621c6[_0x29b2('0x7d')]=_0x480204[_0x29b2('0x7b')]['TranscriptionJobStatus'];return _0x7c3460(_0x4621c6);})[_0x29b2('0x4f')](function(_0x3c2d29){return _0x2ae5b6(_0x3c2d29);});});}exports[_0x29b2('0x7e')]=function(_0x4b6b84,_0x3897e6,_0x466370){var _0x54d337;var _0x55c6c5;var _0x179184;var _0x17bde0=require('../../components/encryptor');return db[_0x29b2('0x30')][_0x29b2('0x7f')]({'where':{'id':_0x4b6b84[_0x29b2('0x4c')]['id']}})[_0x29b2('0x28')](function(_0x3d1542){if(_0x3d1542){var _0x5b0ba0=util[_0x29b2('0x36')](_0x29b2('0x69'),_0x3d1542[_0x29b2('0x56')]);if(fs[_0x29b2('0x57')](_0x5b0ba0)){cypher=!![];return _0x17bde0['decryptFile'](_0x5b0ba0,_0x3d1542[_0x29b2('0x56')],config['secrets']['recording'])[_0x29b2('0x28')](function(){return _0x3d1542;});}return _0x3d1542;}})[_0x29b2('0x28')](function(_0x3d12e9){if(!_0x3d12e9){throw new db[(_0x29b2('0x5a'))][(_0x29b2('0x5b'))]('Voice\x20Recording\x20not\x20found');}_0x55c6c5=_0x3d12e9;return db[_0x29b2('0x80')]['findOne']({'where':{'id':0x1}});})[_0x29b2('0x28')](handleEntityNotFound(_0x3897e6,null))[_0x29b2('0x28')](function(_0x23e511){if(_0x23e511){_0x54d337=_0x23e511;if(!_0x54d337[_0x29b2('0x81')]||!_0x54d337[_0x29b2('0x82')]||!_0x54d337[_0x29b2('0x83')]||!_0x54d337[_0x29b2('0x84')]||!_0x54d337[_0x29b2('0x76')]){throw new db['Sequelize'][(_0x29b2('0x5b'))](_0x29b2('0x85'));}if(_0x4b6b84[_0x29b2('0x51')][_0x29b2('0x86')]&&(!_0x54d337['sentiment']||!_0x54d337[_0x29b2('0x87')]||!_0x54d337[_0x29b2('0x88')]||!_0x54d337['language']||!_0x54d337[_0x29b2('0x76')])){throw new db[(_0x29b2('0x5a'))][(_0x29b2('0x5b'))]('Sentiment\x20Analysis\x20not\x20configured');}return db[_0x29b2('0x89')][_0x29b2('0x7f')]({'where':{'id':_0x54d337[_0x29b2('0x82')]}});}})[_0x29b2('0x28')](function(_0x5a7fad){if(!_0x5a7fad){throw new db[(_0x29b2('0x5a'))][(_0x29b2('0x5b'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x5a7fad[_0x29b2('0x8a')]||!_0x5a7fad['data2']){throw new db[(_0x29b2('0x5a'))][(_0x29b2('0x5b'))](_0x29b2('0x8b'));}_0x179184=_0x5a7fad;return getBucketslist(_0x179184[_0x29b2('0x8a')],_0x179184['data2'],_0x54d337[_0x29b2('0x83')]);})[_0x29b2('0x28')](function(_0x4d9646){if(_0x4d9646&&_0x4d9646['Buckets']){var _0x4a145d=_[_0x29b2('0x4e')](_0x4d9646['Buckets'],function(_0x6ca795){return _0x6ca795[_0x29b2('0x8c')]===_0x54d337[_0x29b2('0x76')];});if(!_0x4a145d){logger[_0x29b2('0x6a')](util[_0x29b2('0x36')](_0x29b2('0x8d'),_0x4b6b84[_0x29b2('0x4c')]['id'],_0x54d337[_0x29b2('0x76')]));return createBucket(_0x179184[_0x29b2('0x8a')],_0x179184[_0x29b2('0x8e')],_0x54d337[_0x29b2('0x83')],_0x54d337[_0x29b2('0x76')]);}logger['info'](util[_0x29b2('0x36')](_0x29b2('0x8f'),_0x4b6b84[_0x29b2('0x4c')]['id'],_0x54d337['bucket']));return;}})[_0x29b2('0x28')](function(_0x48b032){if(_0x55c6c5['transcribeStatus']===_0x29b2('0x90')){return transcribe(_0x4b6b84['params']['id'],_0x179184['data1'],_0x179184[_0x29b2('0x8e')],_0x54d337[_0x29b2('0x83')],_0x54d337['bucket'],_0x55c6c5['value'],_0x54d337[_0x29b2('0x84')]);}else{logger['info'](util[_0x29b2('0x36')](_0x29b2('0x91'),_0x4b6b84[_0x29b2('0x4c')]['id']));return{'transcribeStatus':_0x29b2('0x92')};}})[_0x29b2('0x28')](function(_0x52487b){if(_0x52487b){_0x52487b[_0x29b2('0x93')]=_0x4b6b84['body'][_0x29b2('0x86')];return _0x55c6c5[_0x29b2('0x94')](_0x52487b);}})[_0x29b2('0x28')](respondWithResult(_0x3897e6,null))[_0x29b2('0x4f')](handleError(_0x3897e6,null));};function writeFile(_0x533f34,_0x728aa6){return new Promise(function(_0x2c4e99,_0x18936a){fs[_0x29b2('0x95')](_0x728aa6,_0x533f34,function(_0x1fd118,_0x1b522d){if(_0x1fd118){return _0x18936a(_0x1fd118);}else{return _0x2c4e99(_0x1b522d);}});});}exports[_0x29b2('0x96')]=function(_0x4cac4a,_0x581d90,_0x56e66b){return db[_0x29b2('0x30')][_0x29b2('0x7f')]({'where':{'id':_0x4cac4a[_0x29b2('0x4c')]['id']}})['then'](handleEntityNotFound(_0x581d90))[_0x29b2('0x28')](function(_0x14e984){if(_0x14e984&&_0x14e984['fileText']){var _0x2041de=_0x14e984['fileText'];var _0x178187=config[_0x29b2('0x97')]+_0x29b2('0x98')+_0x14e984['id']+_0x29b2('0x99');if(fs[_0x29b2('0x57')](_0x178187)){return _0x178187;}return writeFile(_0x2041de,_0x178187)[_0x29b2('0x28')](function(){return _0x178187;});}else{throw new db[(_0x29b2('0x5a'))]['ValidationError'](_0x29b2('0x9a'));}})['then'](function(_0x37b8d8){return _0x581d90[_0x29b2('0x53')](_0x37b8d8);})['catch'](handleError(_0x581d90));};
\ No newline at end of file
+var _0x69f9=['order','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','show','params','options','find','create','body','catch','describe','download','../../components/encryptor','type','uniqueid','value','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','VoiceRecording\x20not\x20found','filename','extname','unlink','message','downloads','sequelize','MD5','col','$and','push','isNil','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','unlinkSync','info','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','createBucket','upload','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','Bucket','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeStatus','TranscriptionJobStatus','runTranscribe','findOne','ValidationError','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeRegion','language','runSentiment','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','transcribeAccountId','data1','Cloud\x20Provider\x20not\x20configured','data2','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','aws-sdk','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','count','limit','Content-Range','reject','update','then','destroy','sendStatus','stack','name','index','map','VoiceRecording','rawAttributes','differenceBy','format','keys','filters','model','query','attributes','intersection','fields','length','nolimit'];(function(_0x47b3fb,_0x37c1e9){var _0x22a0e1=function(_0x1a0547){while(--_0x1a0547){_0x47b3fb['push'](_0x47b3fb['shift']());}};_0x22a0e1(++_0x37c1e9);}(_0x69f9,0xea));var _0x969f=function(_0x2604fa,_0x4c2274){_0x2604fa=_0x2604fa-0x0;var _0x444186=_0x69f9[_0x2604fa];return _0x444186;};'use strict';var emlformat=require(_0x969f('0x0'));var rimraf=require(_0x969f('0x1'));var zipdir=require(_0x969f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x969f('0x3'));var moment=require('moment');var BPromise=require(_0x969f('0x4'));var Mustache=require(_0x969f('0x5'));var util=require(_0x969f('0x6'));var path=require(_0x969f('0x7'));var sox=require(_0x969f('0x8'));var csv=require(_0x969f('0x9'));var ejs=require(_0x969f('0xa'));var fs=require('fs');var fs_extra=require(_0x969f('0xb'));var _=require(_0x969f('0xc'));var squel=require(_0x969f('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x969f('0xe'));var toCsv=require('to-csv');var querystring=require(_0x969f('0xf'));var Papa=require(_0x969f('0x10'));var AWS=require(_0x969f('0x11'));var uuidv4=require('uuid/v4');var Redis=require('ioredis');var authService=require(_0x969f('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x969f('0x13'));var hardwareService=require(_0x969f('0x14'));var logger=require('../../config/logger')(_0x969f('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x969f('0x16'));var db=require(_0x969f('0x17'))['db'];function respondWithStatusCode(_0x141f1c,_0x34dfaa){_0x34dfaa=_0x34dfaa||0xcc;return function(_0x489ed9){if(_0x489ed9){return _0x141f1c['sendStatus'](_0x34dfaa);}return _0x141f1c['status'](_0x34dfaa)[_0x969f('0x18')]();};}function respondWithResult(_0x2e5024,_0x45f4ac){_0x45f4ac=_0x45f4ac||0xc8;return function(_0x2f03d2){if(_0x2f03d2){return _0x2e5024[_0x969f('0x19')](_0x45f4ac)[_0x969f('0x1a')](_0x2f03d2);}};}function respondWithFilteredResult(_0xd81602,_0x25a84e){return function(_0x1f0a23){if(_0x1f0a23){var _0x1ac615=typeof _0x25a84e[_0x969f('0x1b')]===_0x969f('0x1c')&&typeof _0x25a84e['limit']===_0x969f('0x1c');var _0x32833f=_0x1f0a23[_0x969f('0x1d')];var _0x5e071c=_0x1ac615?0x0:_0x25a84e[_0x969f('0x1b')];var _0x26502a=_0x1ac615?_0x1f0a23[_0x969f('0x1d')]:_0x25a84e[_0x969f('0x1b')]+_0x25a84e[_0x969f('0x1e')];var _0x1a294d;if(_0x26502a>=_0x32833f){_0x26502a=_0x32833f;_0x1a294d=0xc8;}else{_0x1a294d=0xce;}_0xd81602[_0x969f('0x19')](_0x1a294d);return _0xd81602['set'](_0x969f('0x1f'),_0x5e071c+'-'+_0x26502a+'/'+_0x32833f)[_0x969f('0x1a')](_0x1f0a23);}return null;};}function patchUpdates(_0x1a6853){return function(_0xd35b5){try{jsonpatch['apply'](_0xd35b5,_0x1a6853,!![]);}catch(_0x166dac){return BPromise[_0x969f('0x20')](_0x166dac);}return _0xd35b5['save']();};}function saveUpdates(_0x12c88d,_0x5a1891){return function(_0x1d2251){if(_0x1d2251){return _0x1d2251[_0x969f('0x21')](_0x12c88d)[_0x969f('0x22')](function(_0xdc6fe0){return _0xdc6fe0;});}return null;};}function removeEntity(_0x237e73,_0x401235){return function(_0x23674d){if(_0x23674d){return _0x23674d[_0x969f('0x23')]()[_0x969f('0x22')](function(){_0x237e73['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x48cb6c,_0x2571cc){return function(_0x4e3eba){if(!_0x4e3eba){_0x48cb6c[_0x969f('0x24')](0x194);}return _0x4e3eba;};}function handleError(_0x19af02,_0x5a412b){_0x5a412b=_0x5a412b||0x1f4;return function(_0x32a7c4){logger['error'](_0x32a7c4[_0x969f('0x25')]);if(_0x32a7c4[_0x969f('0x26')]){delete _0x32a7c4[_0x969f('0x26')];}_0x19af02[_0x969f('0x19')](_0x5a412b)['send'](_0x32a7c4);};}exports[_0x969f('0x27')]=function(_0x1b6186,_0x43e8a3){var _0x1a26ae={},_0x11ebb8={},_0x57d82f={'count':0x0,'rows':[]};var _0x428190=_[_0x969f('0x28')](db[_0x969f('0x29')][_0x969f('0x2a')],function(_0x354916){return{'name':_0x354916['fieldName'],'type':_0x354916['type']['key']};});_0x11ebb8['model']=_[_0x969f('0x2b')](_[_0x969f('0x28')](_0x428190,_0x969f('0x26')),[_0x969f('0x2c')]);_0x11ebb8['query']=_[_0x969f('0x2d')](_0x1b6186['query']);_0x11ebb8[_0x969f('0x2e')]=_['intersection'](_0x11ebb8[_0x969f('0x2f')],_0x11ebb8[_0x969f('0x30')]);_0x1a26ae[_0x969f('0x31')]=_[_0x969f('0x32')](_0x11ebb8[_0x969f('0x2f')],qs[_0x969f('0x33')](_0x1b6186[_0x969f('0x30')]['fields']));_0x1a26ae[_0x969f('0x31')]=_0x1a26ae[_0x969f('0x31')][_0x969f('0x34')]?_0x1a26ae['attributes']:_0x11ebb8[_0x969f('0x2f')];if(!_0x1b6186[_0x969f('0x30')]['hasOwnProperty'](_0x969f('0x35'))){_0x1a26ae['limit']=qs['limit'](_0x1b6186[_0x969f('0x30')][_0x969f('0x1e')]);_0x1a26ae[_0x969f('0x1b')]=qs[_0x969f('0x1b')](_0x1b6186[_0x969f('0x30')]['offset']);}_0x1a26ae[_0x969f('0x36')]=qs['sort'](_0x1b6186['query']['sort']);_0x1a26ae[_0x969f('0x37')]=qs[_0x969f('0x2e')](_[_0x969f('0x38')](_0x1b6186[_0x969f('0x30')],_0x11ebb8[_0x969f('0x2e')]),_0x428190);if(_0x1b6186[_0x969f('0x30')][_0x969f('0x39')]){_0x1a26ae[_0x969f('0x37')]=_[_0x969f('0x3a')](_0x1a26ae['where'],{'$or':_[_0x969f('0x28')](_0x428190,function(_0x3c8d0c){if(_0x3c8d0c['type']!==_0x969f('0x3b')){var _0x3445f7={};_0x3445f7[_0x3c8d0c[_0x969f('0x26')]]={'$like':'%'+_0x1b6186[_0x969f('0x30')][_0x969f('0x39')]+'%'};return _0x3445f7;}})});}_0x1a26ae=_[_0x969f('0x3a')]({},_0x1a26ae,_0x1b6186['options']);var _0x278622={'where':_0x1a26ae[_0x969f('0x37')]};return db[_0x969f('0x29')]['count'](_0x278622)[_0x969f('0x22')](function(_0x125d35){_0x57d82f[_0x969f('0x1d')]=_0x125d35;if(_0x1b6186[_0x969f('0x30')][_0x969f('0x3c')]){_0x1a26ae['include']=[{'all':!![]}];}return db[_0x969f('0x29')][_0x969f('0x3d')](_0x1a26ae);})[_0x969f('0x22')](function(_0x2fa62f){_0x57d82f[_0x969f('0x3e')]=_0x2fa62f;return _0x57d82f;})[_0x969f('0x22')](respondWithFilteredResult(_0x43e8a3,_0x1a26ae))['catch'](handleError(_0x43e8a3,null));};exports[_0x969f('0x3f')]=function(_0x2e59d1,_0x1c52e7){var _0x39227d={'raw':![],'where':{'id':_0x2e59d1[_0x969f('0x40')]['id']}},_0x2e7014={};_0x2e7014[_0x969f('0x2f')]=_[_0x969f('0x2d')](db[_0x969f('0x29')][_0x969f('0x2a')]);_0x2e7014[_0x969f('0x30')]=_['keys'](_0x2e59d1[_0x969f('0x30')]);_0x2e7014['filters']=_['intersection'](_0x2e7014[_0x969f('0x2f')],_0x2e7014[_0x969f('0x30')]);_0x39227d[_0x969f('0x31')]=_[_0x969f('0x32')](_0x2e7014['model'],qs[_0x969f('0x33')](_0x2e59d1[_0x969f('0x30')]['fields']));_0x39227d[_0x969f('0x31')]=_0x39227d[_0x969f('0x31')][_0x969f('0x34')]?_0x39227d['attributes']:_0x2e7014['model'];if(_0x2e59d1[_0x969f('0x30')][_0x969f('0x3c')]){_0x39227d['include']=[{'all':!![]}];}_0x39227d=_[_0x969f('0x3a')]({},_0x39227d,_0x2e59d1[_0x969f('0x41')]);return db['VoiceRecording'][_0x969f('0x42')](_0x39227d)['then'](handleEntityNotFound(_0x1c52e7,null))['then'](respondWithResult(_0x1c52e7,null))['catch'](handleError(_0x1c52e7,null));};exports[_0x969f('0x43')]=function(_0x3f3eb5,_0x3fe6cb){return db[_0x969f('0x29')][_0x969f('0x43')](_0x3f3eb5['body'],{})['then'](respondWithResult(_0x3fe6cb,0xc9))['catch'](handleError(_0x3fe6cb,null));};exports[_0x969f('0x21')]=function(_0x280f32,_0x399cfc){if(_0x280f32[_0x969f('0x44')]['id']){delete _0x280f32['body']['id'];}return db[_0x969f('0x29')][_0x969f('0x42')]({'where':{'id':_0x280f32[_0x969f('0x40')]['id']}})[_0x969f('0x22')](handleEntityNotFound(_0x399cfc,null))[_0x969f('0x22')](saveUpdates(_0x280f32[_0x969f('0x44')],null))[_0x969f('0x22')](respondWithResult(_0x399cfc,null))[_0x969f('0x45')](handleError(_0x399cfc,null));};exports['describe']=function(_0x25318a,_0x376fc8){return db[_0x969f('0x29')][_0x969f('0x46')]()[_0x969f('0x22')](respondWithResult(_0x376fc8,null))[_0x969f('0x45')](handleError(_0x376fc8,null));};exports[_0x969f('0x47')]=function(_0x48165f,_0x2f1f06,_0x393603){var _0x1b2bd9=require(_0x969f('0x48'));var _0x11ec02=![];var _0x4b8f8e={};if(_0x48165f[_0x969f('0x30')]['type']&&_0x48165f[_0x969f('0x30')][_0x969f('0x49')]===_0x969f('0x4a')){_0x4b8f8e['uniqueid']=_0x48165f[_0x969f('0x40')]['id'];}else{_0x4b8f8e['id']=_0x48165f[_0x969f('0x40')]['id'];}return db[_0x969f('0x29')]['find']({'where':_0x4b8f8e,'attributes':['id',_0x969f('0x4b')],'raw':!![]})[_0x969f('0x22')](handleEntityNotFound(_0x2f1f06,null))[_0x969f('0x22')](function(_0x454e79){if(_0x454e79){var _0x4859ce=_0x454e79['value'];var _0x40eb8f=util[_0x969f('0x2c')](_0x969f('0x4c'),_0x4859ce);if(fs[_0x969f('0x4d')](_0x40eb8f)){_0x11ec02=!![];return _0x1b2bd9[_0x969f('0x4e')](_0x40eb8f,_0x4859ce,config[_0x969f('0x4f')][_0x969f('0x50')])['then'](function(){return _0x454e79;});}return _0x454e79;}})[_0x969f('0x22')](function(_0x5f12d4){if(_0x5f12d4){var _0x1928b5=_0x5f12d4[_0x969f('0x4b')];if(!fs[_0x969f('0x4d')](_0x1928b5)){throw new db[(_0x969f('0x51'))]['ValidationError'](_0x969f('0x52'));}if(_0x5f12d4[_0x969f('0x53')]){return _0x2f1f06[_0x969f('0x47')](_0x1928b5,_0x5f12d4[_0x969f('0x53')]+path[_0x969f('0x54')](_0x1928b5),function(){if(_0x11ec02){fs[_0x969f('0x55')](_0x1928b5);}});}else{return _0x2f1f06[_0x969f('0x47')](_0x1928b5,function(_0xb212c6){if(_0x11ec02){fs[_0x969f('0x55')](_0x1928b5);}});}}})['catch'](function(_0x2d6bd3){if(_0x2d6bd3[_0x969f('0x56')]==='VoiceRecording\x20not\x20found'){_0x2f1f06['status'](0x194)['send']('Not\x20found');}else{return handleError(_0x2f1f06,null);}});};exports[_0x969f('0x57')]=function(_0x1a04e8,_0x415bfd,_0x9cbf79){var _0x2dfb79=require(_0x969f('0x48'));var _0x2aa3e0=![];var _0x49b436={'$and':[db[_0x969f('0x58')][_0x969f('0x37')](db[_0x969f('0x58')]['fn'](_0x969f('0x59'),db[_0x969f('0x58')][_0x969f('0x5a')](_0x969f('0x4a'))),_0x1a04e8[_0x969f('0x30')]['token'])]};if(_0x1a04e8[_0x969f('0x30')][_0x969f('0x49')]&&_0x1a04e8[_0x969f('0x30')][_0x969f('0x49')]==='uniqueid'){_0x49b436[_0x969f('0x5b')]['push']({'uniqueid':_0x1a04e8[_0x969f('0x40')]['id']});}else{_0x49b436['$and'][_0x969f('0x5c')]({'id':_0x1a04e8[_0x969f('0x40')]['id']});}return db[_0x969f('0x29')][_0x969f('0x42')]({'where':_0x49b436,'attributes':['id',_0x969f('0x4b')],'raw':!![]})[_0x969f('0x22')](handleEntityNotFound(_0x415bfd,null))[_0x969f('0x22')](function(_0x1a7d25){if(_0x1a7d25){var _0x128c90=util['format'](_0x969f('0x4c'),_0x1a7d25[_0x969f('0x4b')]);if(fs['existsSync'](_0x128c90)){_0x2aa3e0=!![];return _0x2dfb79[_0x969f('0x4e')](_0x128c90,_0x1a7d25[_0x969f('0x4b')],config[_0x969f('0x4f')][_0x969f('0x50')])[_0x969f('0x22')](function(){return _0x1a7d25;});}return _0x1a7d25;}})['then'](function(_0x3223fe){if(_0x3223fe){if(!fs['existsSync'](_0x3223fe[_0x969f('0x4b')])){throw new db[(_0x969f('0x51'))]['ValidationError'](_0x969f('0x52'));}if(_0x3223fe[_0x969f('0x53')]){return _0x415bfd['download'](_0x3223fe['value'],_0x3223fe[_0x969f('0x53')]+path[_0x969f('0x54')](_0x3223fe[_0x969f('0x4b')]),function(){if(_0x2aa3e0){fs['unlink'](_0x3223fe['value']);}});}else{return _0x415bfd['download'](_0x3223fe[_0x969f('0x4b')],function(_0xddec72){if(_0x2aa3e0){fs['unlink'](_0x3223fe[_0x969f('0x4b')]);}});}}})[_0x969f('0x45')](handleError(_0x415bfd,null));};exports[_0x969f('0x23')]=function(_0x9d288e,_0x54e165){return db['VoiceRecording']['find']({'where':{'id':_0x9d288e['params']['id']}})['then'](function(_0x3a6f87){if(_[_0x969f('0x5d')](_0x3a6f87)){throw new ReferenceError('Entity\x20not\x20found');}return _0x3a6f87;})[_0x969f('0x22')](function(_0x2c2efa){var _0x1becc2=_0x2c2efa['value'];logger['info'](_0x969f('0x5e'),_0x1becc2);if(!_[_0x969f('0x5d')](_0x2c2efa[_0x969f('0x4b')])&&fs['existsSync'](_0x1becc2)){logger['info'](_0x969f('0x5f')+_0x1becc2+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0x969f('0x60')](_0x1becc2);}_0x1becc2=_0x1becc2+'.cypher';if(!_['isNil'](_0x2c2efa[_0x969f('0x4b')])&&fs['existsSync'](_0x1becc2)){logger[_0x969f('0x61')](_0x969f('0x5f')+_0x1becc2+_0x969f('0x62'));fs[_0x969f('0x60')](_0x1becc2);}return _0x2c2efa;})[_0x969f('0x22')](function(_0x4fbaa7){if(!_0x4fbaa7)throw new InternalError();return _0x4fbaa7[_0x969f('0x23')]();})[_0x969f('0x22')](function(){_0x54e165[_0x969f('0x19')](0xcc)[_0x969f('0x18')]();})[_0x969f('0x45')](handleError(_0x54e165,null));};function getBucketslist(_0x31ab4a,_0x38a949,_0xa3b168){return new Promise(function(_0x2734d0,_0x4f20f5){var _0x44a25b=new AWS['S3']({'accessKeyId':_0x38a949,'secretAccessKey':_0x31ab4a,'region':_0xa3b168});_0x44a25b['listBuckets']({},function(_0x5704f8,_0x101ae1){if(_0x5704f8){return _0x4f20f5(_0x5704f8);}else{return _0x2734d0(_0x101ae1);}});});}function createBucket(_0x21d9ad,_0x37e49c,_0x54ea78,_0x1c5ef6){return new Promise(function(_0x4fc93a,_0x464e49){var _0x19a416=new AWS['S3']({'accessKeyId':_0x37e49c,'secretAccessKey':_0x21d9ad,'region':_0x54ea78});_0x19a416[_0x969f('0x63')]({'Bucket':_0x1c5ef6},function(_0x43d4e0,_0x210251){if(_0x43d4e0){return _0x464e49(_0x43d4e0);}else{return _0x4fc93a(_0x210251);}});});}function uploadFile(_0x1928bb,_0x3a5f11,_0x41919d,_0x4eea1c,_0x66d10,_0x56771c){return new Promise(function(_0x42cde9,_0x1021ad){var _0x492db0=new AWS['S3']({'accessKeyId':_0x3a5f11,'secretAccessKey':_0x1928bb,'region':_0x41919d});_0x492db0[_0x969f('0x64')]({'Bucket':_0x4eea1c,'Key':_0x66d10,'Body':_0x56771c},function(_0x2e3af8,_0x3a1f43){if(_0x2e3af8){return _0x1021ad(_0x2e3af8);}else{return _0x42cde9(_0x3a1f43);}});});}function startTranscribe(_0x4201d1,_0x3d6647,_0x347e32,_0x3c4dd8,_0x2f14d2,_0xe48b81){return new Promise(function(_0x557833,_0x59d1e3){var _0x4e5f38=new AWS[(_0x969f('0x65'))]({'accessKeyId':_0x3d6647,'secretAccessKey':_0x4201d1,'region':_0x347e32});_0x4e5f38[_0x969f('0x66')]({'TranscriptionJobName':_0x3c4dd8,'LanguageCode':_0x2f14d2,'Media':{'MediaFileUri':_0xe48b81}},function(_0x29c5b1,_0x194c7e){if(_0x29c5b1){return _0x59d1e3(_0x29c5b1);}else{return _0x557833(_0x194c7e);}});});}function transcribe(_0x4f12a9,_0x583463,_0x5b072a,_0xec9cff,_0x4a83eb,_0x1ef314,_0x2fa168){return new Promise(function(_0x59dfa0,_0x17f11c){var _0x1c2550={};logger[_0x969f('0x61')](util[_0x969f('0x2c')](_0x969f('0x67'),_0x4f12a9,_0x4a83eb));return uploadFile(_0x583463,_0x5b072a,_0xec9cff,_0x4a83eb,path['basename'](_0x1ef314),fs[_0x969f('0x68')](_0x1ef314))[_0x969f('0x22')](function(_0x3a0398){logger[_0x969f('0x61')](util['format'](_0x969f('0x69'),_0x4f12a9,_0x4a83eb,_0x3a0398[_0x969f('0x6a')]));_0x1c2550[_0x969f('0x6b')]=_0x3a0398[_0x969f('0x6c')];_0x1c2550['location']=_0x3a0398[_0x969f('0x6a')];logger['info'](util[_0x969f('0x2c')](_0x969f('0x6d'),_0x4f12a9));return startTranscribe(_0x583463,_0x5b072a,_0xec9cff,uuidv4(),_0x2fa168,_0x3a0398[_0x969f('0x6a')]);})[_0x969f('0x22')](function(_0x10ecfc){logger[_0x969f('0x61')](util[_0x969f('0x2c')](_0x969f('0x6e'),_0x4f12a9,_0x10ecfc[_0x969f('0x6f')][_0x969f('0x70')]));_0x1c2550['transcribeName']=_0x10ecfc['TranscriptionJob']['TranscriptionJobName'];_0x1c2550[_0x969f('0x71')]=_0x10ecfc[_0x969f('0x6f')][_0x969f('0x72')];return _0x59dfa0(_0x1c2550);})[_0x969f('0x45')](function(_0x28eb01){return _0x17f11c(_0x28eb01);});});}exports[_0x969f('0x73')]=function(_0x1f9148,_0x52daeb,_0x2c5d6c){var _0x522c91;var _0x48e0cc;var _0x3e309d;var _0x2a9b02=require(_0x969f('0x48'));return db[_0x969f('0x29')][_0x969f('0x74')]({'where':{'id':_0x1f9148['params']['id']}})[_0x969f('0x22')](function(_0x396c95){if(_0x396c95){var _0x327f59=util['format'](_0x969f('0x4c'),_0x396c95[_0x969f('0x4b')]);if(fs[_0x969f('0x4d')](_0x327f59)){cypher=!![];return _0x2a9b02[_0x969f('0x4e')](_0x327f59,_0x396c95[_0x969f('0x4b')],config[_0x969f('0x4f')][_0x969f('0x50')])[_0x969f('0x22')](function(){return _0x396c95;});}return _0x396c95;}})['then'](function(_0x101b6f){if(!_0x101b6f){throw new db[(_0x969f('0x51'))][(_0x969f('0x75'))](_0x969f('0x76'));}_0x48e0cc=_0x101b6f;return db[_0x969f('0x77')]['findOne']({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0x52daeb,null))[_0x969f('0x22')](function(_0x2543da){if(_0x2543da){_0x522c91=_0x2543da;if(!_0x522c91[_0x969f('0x78')]||!_0x522c91['transcribeAccountId']||!_0x522c91[_0x969f('0x79')]||!_0x522c91[_0x969f('0x7a')]||!_0x522c91[_0x969f('0x6b')]){throw new db[(_0x969f('0x51'))][(_0x969f('0x75'))]('Transcribe\x20not\x20configured');}if(_0x1f9148['body'][_0x969f('0x7b')]&&(!_0x522c91['sentiment']||!_0x522c91['sentimentAccountId']||!_0x522c91[_0x969f('0x7c')]||!_0x522c91[_0x969f('0x7a')]||!_0x522c91[_0x969f('0x6b')])){throw new db['Sequelize']['ValidationError'](_0x969f('0x7d'));}return db['CloudProvider']['findOne']({'where':{'id':_0x522c91[_0x969f('0x7e')]}});}})['then'](function(_0x1732a5){if(!_0x1732a5){throw new db[(_0x969f('0x51'))][(_0x969f('0x75'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x1732a5[_0x969f('0x7f')]||!_0x1732a5['data2']){throw new db[(_0x969f('0x51'))][(_0x969f('0x75'))](_0x969f('0x80'));}_0x3e309d=_0x1732a5;return getBucketslist(_0x3e309d[_0x969f('0x7f')],_0x3e309d[_0x969f('0x81')],_0x522c91[_0x969f('0x79')]);})[_0x969f('0x22')](function(_0xdd4dd){if(_0xdd4dd&&_0xdd4dd[_0x969f('0x82')]){var _0x33d2dc=_[_0x969f('0x42')](_0xdd4dd[_0x969f('0x82')],function(_0x45313c){return _0x45313c[_0x969f('0x83')]===_0x522c91[_0x969f('0x6b')];});if(!_0x33d2dc){logger['info'](util['format'](_0x969f('0x84'),_0x1f9148[_0x969f('0x40')]['id'],_0x522c91[_0x969f('0x6b')]));return createBucket(_0x3e309d[_0x969f('0x7f')],_0x3e309d[_0x969f('0x81')],_0x522c91[_0x969f('0x79')],_0x522c91[_0x969f('0x6b')]);}logger[_0x969f('0x61')](util[_0x969f('0x2c')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0x1f9148['params']['id'],_0x522c91[_0x969f('0x6b')]));return;}})['then'](function(_0x19beb4){if(_0x48e0cc[_0x969f('0x71')]===_0x969f('0x85')){return transcribe(_0x1f9148['params']['id'],_0x3e309d['data1'],_0x3e309d['data2'],_0x522c91[_0x969f('0x79')],_0x522c91[_0x969f('0x6b')],_0x48e0cc[_0x969f('0x4b')],_0x522c91[_0x969f('0x7a')]);}else{logger['info'](util[_0x969f('0x2c')](_0x969f('0x86'),_0x1f9148[_0x969f('0x40')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})[_0x969f('0x22')](function(_0x178b13){if(_0x178b13){_0x178b13[_0x969f('0x87')]=_0x1f9148[_0x969f('0x44')][_0x969f('0x7b')];return _0x48e0cc[_0x969f('0x88')](_0x178b13);}})[_0x969f('0x22')](respondWithResult(_0x52daeb,null))[_0x969f('0x45')](handleError(_0x52daeb,null));};function writeFile(_0x4fdd1a,_0x5a0f78){return new Promise(function(_0x3436da,_0xae371b){fs[_0x969f('0x89')](_0x5a0f78,_0x4fdd1a,function(_0x3ffe86,_0x3a2b99){if(_0x3ffe86){return _0xae371b(_0x3ffe86);}else{return _0x3436da(_0x3a2b99);}});});}exports[_0x969f('0x8a')]=function(_0x10abcb,_0x50ca84,_0x5359fb){return db[_0x969f('0x29')][_0x969f('0x74')]({'where':{'id':_0x10abcb[_0x969f('0x40')]['id']}})[_0x969f('0x22')](handleEntityNotFound(_0x50ca84))[_0x969f('0x22')](function(_0x14ebda){if(_0x14ebda&&_0x14ebda[_0x969f('0x8b')]){var _0x588502=_0x14ebda[_0x969f('0x8b')];var _0x16a05a=config[_0x969f('0x8c')]+_0x969f('0x8d')+_0x14ebda['id']+_0x969f('0x8e');if(fs[_0x969f('0x4d')](_0x16a05a)){return _0x16a05a;}return writeFile(_0x588502,_0x16a05a)[_0x969f('0x22')](function(){return _0x16a05a;});}else{throw new db[(_0x969f('0x51'))][(_0x969f('0x75'))](_0x969f('0x8f'));}})[_0x969f('0x22')](function(_0x218e3d){return _0x50ca84['download'](_0x218e3d);})['catch'](handleError(_0x50ca84));};
\ No newline at end of file
index b2fda74..f30b954 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdadd=['./voiceRecording.attributes','define','VoiceRecording','voice_recordings','uniqueid','transcribeStatus'];(function(_0x316c42,_0x3391f0){var _0x2b38f7=function(_0x38d2cf){while(--_0x38d2cf){_0x316c42['push'](_0x316c42['shift']());}};_0x2b38f7(++_0x3391f0);}(_0xdadd,0x1c8));var _0xddad=function(_0x270a54,_0x307ff6){_0x270a54=_0x270a54-0x0;var _0x4d07d0=_0xdadd[_0x270a54];return _0x4d07d0;};'use strict';var attributes=require(_0xddad('0x0'));module['exports']=function(_0x34afe8,_0x5cafca){return _0x34afe8[_0xddad('0x1')](_0xddad('0x2'),attributes,{'tableName':_0xddad('0x3'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xddad('0x4')]},{'name':_0xddad('0x5'),'fields':[_0xddad('0x5')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb0b9=['transcribeStatus','./voiceRecording.attributes','define','VoiceRecording','voice_recordings','uniqueid'];(function(_0x580726,_0x2378fe){var _0x519ca4=function(_0x394be9){while(--_0x394be9){_0x580726['push'](_0x580726['shift']());}};_0x519ca4(++_0x2378fe);}(_0xb0b9,0x1f3));var _0x9b0b=function(_0x3f10a7,_0x3ad9c5){_0x3f10a7=_0x3f10a7-0x0;var _0x1506b5=_0xb0b9[_0x3f10a7];return _0x1506b5;};'use strict';var attributes=require(_0x9b0b('0x0'));module['exports']=function(_0x55227a,_0x1f310b){return _0x55227a[_0x9b0b('0x1')](_0x9b0b('0x2'),attributes,{'tableName':_0x9b0b('0x3'),'paranoid':![],'indexes':[{'name':_0x9b0b('0x4'),'fields':[_0x9b0b('0x4')]},{'name':_0x9b0b('0x5'),'fields':[_0x9b0b('0x5')]}],'timestamps':!![]});};
\ No newline at end of file
index 6a2f1f2..8125d8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32f4=['unlink','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','debug','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateVoiceRecording','VoiceRecording','body','options','raw','where','attributes','../../components/encryptor','findOne','callRecordingEncryption','existsSync','format','encryptFile','value','secrets','recording'];(function(_0x2aea9e,_0x1f587f){var _0x430b92=function(_0x416c37){while(--_0x416c37){_0x2aea9e['push'](_0x2aea9e['shift']());}};_0x430b92(++_0x1f587f);}(_0x32f4,0x154));var _0x432f=function(_0x23b001,_0x236139){_0x23b001=_0x23b001-0x0;var _0x20d458=_0x32f4[_0x23b001];return _0x20d458;};'use strict';var _=require(_0x432f('0x0'));var util=require(_0x432f('0x1'));var moment=require(_0x432f('0x2'));var BPromise=require(_0x432f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x432f('0x4'));var db=require(_0x432f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x432f('0x6'))(_0x432f('0x7'));var config=require(_0x432f('0x8'));var jayson=require(_0x432f('0x9'));var client=jayson[_0x432f('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5b5f08,_0x2f66fd,_0x32b062){return new BPromise(function(_0x4a5b56,_0x2a2ef6){return client['request'](_0x5b5f08,_0x32b062)[_0x432f('0xb')](function(_0x340fe9){logger[_0x432f('0xc')](_0x432f('0xd'),_0x2f66fd,_0x432f('0xe'));logger['debug'](_0x432f('0xf'),_0x2f66fd,'request\x20sent',JSON[_0x432f('0x10')](_0x340fe9));if(_0x340fe9['error']){if(_0x340fe9[_0x432f('0x11')][_0x432f('0x12')]===0x1f4){logger['error'](_0x432f('0xd'),_0x2f66fd,_0x340fe9[_0x432f('0x11')]['message']);return _0x2a2ef6(_0x340fe9[_0x432f('0x11')][_0x432f('0x13')]);}logger['error']('VoiceRecording,\x20%s,\x20%s',_0x2f66fd,_0x340fe9[_0x432f('0x11')][_0x432f('0x13')]);return _0x4a5b56(_0x340fe9[_0x432f('0x11')][_0x432f('0x13')]);}else{logger[_0x432f('0xc')]('VoiceRecording,\x20%s,\x20%s',_0x2f66fd,_0x432f('0xe'));_0x4a5b56(_0x340fe9[_0x432f('0x14')][_0x432f('0x13')]);}})[_0x432f('0x15')](function(_0x5bae29){logger[_0x432f('0x11')](_0x432f('0xd'),_0x2f66fd,_0x5bae29);_0x2a2ef6(_0x5bae29);});});}exports[_0x432f('0x16')]=function(_0x243cf){var _0x3cd5da=this;return new Promise(function(_0x129582,_0x5ae24e){return db[_0x432f('0x17')]['update'](_0x243cf[_0x432f('0x18')],{'raw':_0x243cf[_0x432f('0x19')]?_0x243cf[_0x432f('0x19')][_0x432f('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x243cf[_0x432f('0x19')]?_0x243cf[_0x432f('0x19')][_0x432f('0x1b')]||null:null,'attributes':_0x243cf[_0x432f('0x19')]?_0x243cf[_0x432f('0x19')][_0x432f('0x1c')]||null:null,'limit':_0x243cf[_0x432f('0x19')]?_0x243cf[_0x432f('0x19')]['limit']||null:null})['then'](function(_0x343d13){logger['info'](_0x432f('0x16'),_0x243cf);logger['debug'](_0x432f('0x16'),_0x243cf,JSON[_0x432f('0x10')](_0x343d13));_0x129582(_0x343d13);})[_0x432f('0x15')](function(_0x89ea50){logger[_0x432f('0x11')](_0x432f('0x16'),_0x89ea50['message'],_0x243cf);_0x5ae24e(_0x3cd5da[_0x432f('0x11')](0x1f4,_0x89ea50[_0x432f('0x13')]));});});};exports['CreateVoiceRecording']=function(_0x2cbde9){var _0x3e37ec=this;return new Promise(function(_0x2bcbb4,_0x23347e){var _0x44839=require(_0x432f('0x1d'));var _0x138a6a;return db['Setting'][_0x432f('0x1e')]({'attributes':['id','callRecordingEncryption'],'where':{'id':0x1},'raw':!![]})[_0x432f('0xb')](function(_0x573cc5){_0x138a6a=_0x573cc5;return db[_0x432f('0x17')]['create'](_0x2cbde9[_0x432f('0x18')]);})['then'](function(_0x325a9c){if(_0x138a6a[_0x432f('0x1f')]&&fs[_0x432f('0x20')](_0x325a9c['value'])){var _0x6a116e=util[_0x432f('0x21')]('%s.cypher',_0x325a9c['value']);return _0x44839[_0x432f('0x22')](_0x325a9c[_0x432f('0x23')],_0x6a116e,config[_0x432f('0x24')][_0x432f('0x25')])[_0x432f('0xb')](function(){fs[_0x432f('0x26')](_0x325a9c['value']);logger['info'](_0x432f('0x27'));return _0x325a9c;});}return _0x325a9c;})[_0x432f('0xb')](function(_0x184203){logger['info'](_0x432f('0x28'),_0x2cbde9);logger[_0x432f('0x29')](_0x432f('0x28'),_0x2cbde9,JSON[_0x432f('0x10')](_0x184203));_0x2bcbb4(_0x184203);})[_0x432f('0x15')](function(_0x3ad632){logger[_0x432f('0x11')](_0x432f('0x28'),_0x3ad632['message'],_0x2cbde9);_0x23347e(_0x3e37ec['error'](0x1f4,_0x3ad632[_0x432f('0x13')]));});});};
\ No newline at end of file
+var _0x7a54=['../../components/encryptor','Setting','findOne','callRecordingEncryption','create','value','format','encryptFile','secrets','unlink','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','VoiceRecording,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','VoiceRecording','update','body','options','raw','where','attributes','limit','then','UpdateVoiceRecording','CreateVoiceRecording'];(function(_0x3cb6dc,_0x120dd3){var _0x47ec89=function(_0x55150a){while(--_0x55150a){_0x3cb6dc['push'](_0x3cb6dc['shift']());}};_0x47ec89(++_0x120dd3);}(_0x7a54,0x106));var _0x47a5=function(_0x598994,_0x4d853f){_0x598994=_0x598994-0x0;var _0x539ac8=_0x7a54[_0x598994];return _0x539ac8;};'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')]('VoiceRecording,\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['UpdateVoiceRecording']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5247fd['options']?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x1a')]||null:null,'attributes':_0x5247fd['options']?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x1b')]||null:null,'limit':_0x5247fd[_0x47a5('0x18')]?_0x5247fd['options'][_0x47a5('0x1c')]||null:null})[_0x47a5('0x1d')](function(_0x23db32){logger[_0x47a5('0xb')]('UpdateVoiceRecording',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON['stringify'](_0x23db32));_0xaf70a6(_0x23db32);})[_0x47a5('0x14')](function(_0xc4cd63){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0xc4cd63[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xc4cd63['message']));});});};exports[_0x47a5('0x1f')]=function(_0x5686db){var _0x1ea9c8=this;return new Promise(function(_0x5b6c4e,_0x23cb77){var _0x378208=require(_0x47a5('0x20'));var _0x1dac65;return db[_0x47a5('0x21')][_0x47a5('0x22')]({'attributes':['id',_0x47a5('0x23')],'where':{'id':0x1},'raw':!![]})[_0x47a5('0x1d')](function(_0x16631f){_0x1dac65=_0x16631f;return db[_0x47a5('0x15')][_0x47a5('0x24')](_0x5686db[_0x47a5('0x17')]);})[_0x47a5('0x1d')](function(_0x528582){if(_0x1dac65[_0x47a5('0x23')]&&fs['existsSync'](_0x528582[_0x47a5('0x25')])){var _0x9ac908=util[_0x47a5('0x26')]('%s.cypher',_0x528582[_0x47a5('0x25')]);return _0x378208[_0x47a5('0x27')](_0x528582[_0x47a5('0x25')],_0x9ac908,config[_0x47a5('0x28')]['recording'])['then'](function(){fs[_0x47a5('0x29')](_0x528582[_0x47a5('0x25')]);logger['info']('CreateVoiceRecording\x20file\x20encrypted');return _0x528582;});}return _0x528582;})[_0x47a5('0x1d')](function(_0x51544e){logger['info'](_0x47a5('0x1f'),_0x5686db);logger['debug'](_0x47a5('0x1f'),_0x5686db,JSON[_0x47a5('0xe')](_0x51544e));_0x5b6c4e(_0x51544e);})['catch'](function(_0x4843c0){logger[_0x47a5('0xf')]('CreateVoiceRecording',_0x4843c0[_0x47a5('0x11')],_0x5686db);_0x23cb77(_0x1ea9c8[_0x47a5('0xf')](0x1f4,_0x4843c0[_0x47a5('0x11')]));});});};
\ No newline at end of file
index e70a5e0..4d3daf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20db=['post','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','describe'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x20db,0x1d9));var _0xb20d=function(_0x2bfef0,_0x571176){_0x2bfef0=_0x2bfef0-0x0;var _0x44249b=_0x20db[_0x2bfef0];return _0x44249b;};'use strict';var multer=require(_0xb20d('0x0'));var util=require(_0xb20d('0x1'));var path=require(_0xb20d('0x2'));var timeout=require(_0xb20d('0x3'));var express=require(_0xb20d('0x4'));var router=express[_0xb20d('0x5')]();var fs_extra=require(_0xb20d('0x6'));var auth=require(_0xb20d('0x7'));var interaction=require(_0xb20d('0x8'));var config=require('../../config/environment');var controller=require('./voiceTransferReport.controller');router[_0xb20d('0x9')]('/',auth[_0xb20d('0xa')](),controller[_0xb20d('0xb')]);router['get']('/describe',auth[_0xb20d('0xa')](),controller[_0xb20d('0xc')]);router['get']('/:id',auth[_0xb20d('0xa')](),controller['show']);router[_0xb20d('0xd')]('/',auth[_0xb20d('0xa')](),controller['create']);router[_0xb20d('0xe')]('/:id',auth[_0xb20d('0xa')](),controller[_0xb20d('0xf')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xb20d('0x10')]);module[_0xb20d('0x11')]=router;
\ No newline at end of file
+var _0xbe21=['multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceTransferReport.controller','get','isAuthenticated','index','/describe','/:id','show','post','put','delete','destroy'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xbe21,0x130));var _0x1be2=function(_0x5b2865,_0x3b814b){_0x5b2865=_0x5b2865-0x0;var _0x3cb4c6=_0xbe21[_0x5b2865];return _0x3cb4c6;};'use strict';var multer=require(_0x1be2('0x0'));var util=require(_0x1be2('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x1be2('0x2'));var router=express[_0x1be2('0x3')]();var fs_extra=require(_0x1be2('0x4'));var auth=require(_0x1be2('0x5'));var interaction=require(_0x1be2('0x6'));var config=require(_0x1be2('0x7'));var controller=require(_0x1be2('0x8'));router[_0x1be2('0x9')]('/',auth[_0x1be2('0xa')](),controller[_0x1be2('0xb')]);router['get'](_0x1be2('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x1be2('0x9')](_0x1be2('0xd'),auth[_0x1be2('0xa')](),controller[_0x1be2('0xe')]);router[_0x1be2('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x1be2('0x10')](_0x1be2('0xd'),auth[_0x1be2('0xa')](),controller['update']);router[_0x1be2('0x11')](_0x1be2('0xd'),auth[_0x1be2('0xa')](),controller[_0x1be2('0x12')]);module['exports']=router;
\ No newline at end of file
index 7ff9aa6..65628a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5107=['moment','exports','blind','STRING','ENUM','sequelize'];(function(_0x32cac1,_0x14441b){var _0x2b9ab2=function(_0x38d5c8){while(--_0x38d5c8){_0x32cac1['push'](_0x32cac1['shift']());}};_0x2b9ab2(++_0x14441b);}(_0x5107,0x1c1));var _0x7510=function(_0x824690,_0x4a5371){_0x824690=_0x824690-0x0;var _0x139df6=_0x5107[_0x824690];return _0x139df6;};'use strict';var Sequelize=require(_0x7510('0x0'));var moment=require(_0x7510('0x1'));module[_0x7510('0x2')]={'type':{'type':Sequelize['ENUM'](_0x7510('0x3'),'attended')},'result':{'type':Sequelize[_0x7510('0x4')]},'transfererchannel':{'type':Sequelize[_0x7510('0x4')]},'transferercalleridnum':{'type':Sequelize[_0x7510('0x4')]},'transferercalleridname':{'type':Sequelize[_0x7510('0x4')]},'transfererconnectedlinenum':{'type':Sequelize[_0x7510('0x4')]},'transfererconnectedlinename':{'type':Sequelize[_0x7510('0x4')]},'transfereraccountcode':{'type':Sequelize[_0x7510('0x4')]},'transferercontext':{'type':Sequelize[_0x7510('0x4')]},'transfererexten':{'type':Sequelize[_0x7510('0x4')]},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0x7510('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize[_0x7510('0x4')]},'transfereeaccountcode':{'type':Sequelize[_0x7510('0x4')]},'transfereecontext':{'type':Sequelize[_0x7510('0x4')]},'transfereeexten':{'type':Sequelize['STRING']},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize[_0x7510('0x5')]('Yes','No')},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x7510('0x4')]}};
\ No newline at end of file
+var _0x4072=['sequelize','moment','exports','attended','STRING','ENUM'];(function(_0x28913e,_0x173f1b){var _0x12aba7=function(_0x56c4c6){while(--_0x56c4c6){_0x28913e['push'](_0x28913e['shift']());}};_0x12aba7(++_0x173f1b);}(_0x4072,0x19e));var _0x2407=function(_0x35c1c8,_0x14f618){_0x35c1c8=_0x35c1c8-0x0;var _0x3b0377=_0x4072[_0x35c1c8];return _0x3b0377;};'use strict';var Sequelize=require(_0x2407('0x0'));var moment=require(_0x2407('0x1'));module[_0x2407('0x2')]={'type':{'type':Sequelize['ENUM']('blind',_0x2407('0x3'))},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize[_0x2407('0x4')]},'transferercalleridnum':{'type':Sequelize[_0x2407('0x4')]},'transferercalleridname':{'type':Sequelize[_0x2407('0x4')]},'transfererconnectedlinenum':{'type':Sequelize[_0x2407('0x4')]},'transfererconnectedlinename':{'type':Sequelize[_0x2407('0x4')]},'transfereraccountcode':{'type':Sequelize[_0x2407('0x4')]},'transferercontext':{'type':Sequelize['STRING']},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0x2407('0x4')]},'transfereechannel':{'type':Sequelize[_0x2407('0x4')]},'transfereecalleridnum':{'type':Sequelize[_0x2407('0x4')]},'transfereecalleridname':{'type':Sequelize[_0x2407('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize[_0x2407('0x4')]},'transfereeaccountcode':{'type':Sequelize['STRING']},'transfereecontext':{'type':Sequelize[_0x2407('0x4')]},'transfereeexten':{'type':Sequelize['STRING']},'transfereelinkedid':{'type':Sequelize[_0x2407('0x4')]},'isexternal':{'type':Sequelize[_0x2407('0x5')]('Yes','No')},'context':{'type':Sequelize[_0x2407('0x4')]},'extension':{'type':Sequelize[_0x2407('0x4')]}};
\ No newline at end of file
index a117b2b..2eefba7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b36=['key','model','keys','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','options','VoiceTransferReport','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','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','count','apply','save','update','destroy','then','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName'];(function(_0x158552,_0x307bcd){var _0x479b31=function(_0x25fef1){while(--_0x25fef1){_0x158552['push'](_0x158552['shift']());}};_0x479b31(++_0x307bcd);}(_0x2b36,0x6e));var _0x62b3=function(_0x2b5422,_0x55a475){_0x2b5422=_0x2b5422-0x0;var _0x4c7d28=_0x2b36[_0x2b5422];return _0x4c7d28;};'use strict';var emlformat=require(_0x62b3('0x0'));var rimraf=require(_0x62b3('0x1'));var zipdir=require(_0x62b3('0x2'));var jsonpatch=require(_0x62b3('0x3'));var rp=require('request-promise');var moment=require(_0x62b3('0x4'));var BPromise=require(_0x62b3('0x5'));var Mustache=require(_0x62b3('0x6'));var util=require(_0x62b3('0x7'));var path=require(_0x62b3('0x8'));var sox=require(_0x62b3('0x9'));var csv=require(_0x62b3('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x62b3('0xb'));var _=require(_0x62b3('0xc'));var squel=require(_0x62b3('0xd'));var crypto=require('crypto');var jsforce=require(_0x62b3('0xe'));var deskjs=require(_0x62b3('0xf'));var toCsv=require(_0x62b3('0xa'));var querystring=require(_0x62b3('0x10'));var Papa=require(_0x62b3('0x11'));var Redis=require('ioredis');var authService=require(_0x62b3('0x12'));var qs=require(_0x62b3('0x13'));var as=require(_0x62b3('0x14'));var hardwareService=require(_0x62b3('0x15'));var logger=require(_0x62b3('0x16'))('api');var utils=require(_0x62b3('0x17'));var config=require(_0x62b3('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x62b3('0x19'))['db'];function respondWithStatusCode(_0x4dc463,_0x512ec7){_0x512ec7=_0x512ec7||0xcc;return function(_0x4dbf8f){if(_0x4dbf8f){return _0x4dc463['sendStatus'](_0x512ec7);}return _0x4dc463[_0x62b3('0x1a')](_0x512ec7)[_0x62b3('0x1b')]();};}function respondWithResult(_0xfd315f,_0x151901){_0x151901=_0x151901||0xc8;return function(_0x2c0014){if(_0x2c0014){return _0xfd315f[_0x62b3('0x1a')](_0x151901)[_0x62b3('0x1c')](_0x2c0014);}};}function respondWithFilteredResult(_0xe4017f,_0x45d9f8){return function(_0x3f9174){if(_0x3f9174){var _0x3f61e8=typeof _0x45d9f8[_0x62b3('0x1d')]===_0x62b3('0x1e')&&typeof _0x45d9f8['limit']==='undefined';var _0x4e6479=_0x3f9174[_0x62b3('0x1f')];var _0x2786be=_0x3f61e8?0x0:_0x45d9f8['offset'];var _0x3c6237=_0x3f61e8?_0x3f9174['count']:_0x45d9f8['offset']+_0x45d9f8['limit'];var _0xaeb4cc;if(_0x3c6237>=_0x4e6479){_0x3c6237=_0x4e6479;_0xaeb4cc=0xc8;}else{_0xaeb4cc=0xce;}_0xe4017f['status'](_0xaeb4cc);return _0xe4017f['set']('Content-Range',_0x2786be+'-'+_0x3c6237+'/'+_0x4e6479)['json'](_0x3f9174);}return null;};}function patchUpdates(_0x4c77a8){return function(_0x7d6b71){try{jsonpatch[_0x62b3('0x20')](_0x7d6b71,_0x4c77a8,!![]);}catch(_0x36d7e4){return BPromise['reject'](_0x36d7e4);}return _0x7d6b71[_0x62b3('0x21')]();};}function saveUpdates(_0x9cae42,_0x50111f){return function(_0x1c5a86){if(_0x1c5a86){return _0x1c5a86[_0x62b3('0x22')](_0x9cae42)['then'](function(_0x3bd83f){return _0x3bd83f;});}return null;};}function removeEntity(_0x39ae08,_0x2feb28){return function(_0xa1eea0){if(_0xa1eea0){return _0xa1eea0[_0x62b3('0x23')]()[_0x62b3('0x24')](function(){_0x39ae08[_0x62b3('0x1a')](0xcc)[_0x62b3('0x1b')]();});}};}function handleEntityNotFound(_0x2866e9,_0x3b09ce){return function(_0x18364f){if(!_0x18364f){_0x2866e9[_0x62b3('0x25')](0x194);}return _0x18364f;};}function handleError(_0x548948,_0x44d4b7){_0x44d4b7=_0x44d4b7||0x1f4;return function(_0x2bcd08){logger[_0x62b3('0x26')](_0x2bcd08[_0x62b3('0x27')]);if(_0x2bcd08[_0x62b3('0x28')]){delete _0x2bcd08[_0x62b3('0x28')];}_0x548948[_0x62b3('0x1a')](_0x44d4b7)[_0x62b3('0x29')](_0x2bcd08);};}exports[_0x62b3('0x2a')]=function(_0x6c3806,_0x3db0fb){var _0x1274a4={},_0x17f1ef={},_0x5c3298={'count':0x0,'rows':[]};var _0x413b40=_[_0x62b3('0x2b')](db['VoiceTransferReport'][_0x62b3('0x2c')],function(_0x113cca){return{'name':_0x113cca[_0x62b3('0x2d')],'type':_0x113cca['type'][_0x62b3('0x2e')]};});_0x17f1ef[_0x62b3('0x2f')]=_['map'](_0x413b40,_0x62b3('0x28'));_0x17f1ef['query']=_[_0x62b3('0x30')](_0x6c3806['query']);_0x17f1ef[_0x62b3('0x31')]=_['intersection'](_0x17f1ef[_0x62b3('0x2f')],_0x17f1ef[_0x62b3('0x32')]);_0x1274a4[_0x62b3('0x33')]=_[_0x62b3('0x34')](_0x17f1ef[_0x62b3('0x2f')],qs[_0x62b3('0x35')](_0x6c3806[_0x62b3('0x32')][_0x62b3('0x35')]));_0x1274a4[_0x62b3('0x33')]=_0x1274a4[_0x62b3('0x33')][_0x62b3('0x36')]?_0x1274a4[_0x62b3('0x33')]:_0x17f1ef['model'];if(!_0x6c3806[_0x62b3('0x32')][_0x62b3('0x37')](_0x62b3('0x38'))){_0x1274a4[_0x62b3('0x39')]=qs['limit'](_0x6c3806[_0x62b3('0x32')][_0x62b3('0x39')]);_0x1274a4[_0x62b3('0x1d')]=qs[_0x62b3('0x1d')](_0x6c3806['query'][_0x62b3('0x1d')]);}_0x1274a4[_0x62b3('0x3a')]=qs['sort'](_0x6c3806['query'][_0x62b3('0x3b')]);_0x1274a4[_0x62b3('0x3c')]=qs[_0x62b3('0x31')](_[_0x62b3('0x3d')](_0x6c3806[_0x62b3('0x32')],_0x17f1ef[_0x62b3('0x31')]),_0x413b40);if(_0x6c3806[_0x62b3('0x32')][_0x62b3('0x3e')]){_0x1274a4[_0x62b3('0x3c')]=_[_0x62b3('0x3f')](_0x1274a4['where'],{'$or':_[_0x62b3('0x2b')](_0x413b40,function(_0x2e26ca){if(_0x2e26ca[_0x62b3('0x40')]!=='VIRTUAL'){var _0x3a2ce1={};_0x3a2ce1[_0x2e26ca[_0x62b3('0x28')]]={'$like':'%'+_0x6c3806[_0x62b3('0x32')]['filter']+'%'};return _0x3a2ce1;}})});}_0x1274a4=_[_0x62b3('0x3f')]({},_0x1274a4,_0x6c3806[_0x62b3('0x41')]);var _0x1a952c={'where':_0x1274a4[_0x62b3('0x3c')]};return db[_0x62b3('0x42')][_0x62b3('0x1f')](_0x1a952c)['then'](function(_0x120b44){_0x5c3298[_0x62b3('0x1f')]=_0x120b44;if(_0x6c3806[_0x62b3('0x32')][_0x62b3('0x43')]){_0x1274a4['include']=[{'all':!![]}];}return db[_0x62b3('0x42')][_0x62b3('0x44')](_0x1274a4);})[_0x62b3('0x24')](function(_0x2ee581){_0x5c3298[_0x62b3('0x45')]=_0x2ee581;return _0x5c3298;})[_0x62b3('0x24')](respondWithFilteredResult(_0x3db0fb,_0x1274a4))['catch'](handleError(_0x3db0fb,null));};exports[_0x62b3('0x46')]=function(_0x3b6153,_0x10111b){var _0x2c49b2={'raw':!![],'where':{'id':_0x3b6153[_0x62b3('0x47')]['id']}},_0x5f344c={};_0x5f344c[_0x62b3('0x2f')]=_[_0x62b3('0x30')](db['VoiceTransferReport'][_0x62b3('0x2c')]);_0x5f344c['query']=_[_0x62b3('0x30')](_0x3b6153['query']);_0x5f344c[_0x62b3('0x31')]=_['intersection'](_0x5f344c[_0x62b3('0x2f')],_0x5f344c[_0x62b3('0x32')]);_0x2c49b2['attributes']=_[_0x62b3('0x34')](_0x5f344c[_0x62b3('0x2f')],qs['fields'](_0x3b6153[_0x62b3('0x32')][_0x62b3('0x35')]));_0x2c49b2['attributes']=_0x2c49b2[_0x62b3('0x33')]['length']?_0x2c49b2['attributes']:_0x5f344c['model'];if(_0x3b6153[_0x62b3('0x32')][_0x62b3('0x43')]){_0x2c49b2[_0x62b3('0x48')]=[{'all':!![]}];}_0x2c49b2=_[_0x62b3('0x3f')]({},_0x2c49b2,_0x3b6153['options']);return db[_0x62b3('0x42')][_0x62b3('0x49')](_0x2c49b2)[_0x62b3('0x24')](handleEntityNotFound(_0x10111b,null))[_0x62b3('0x24')](respondWithResult(_0x10111b,null))[_0x62b3('0x4a')](handleError(_0x10111b,null));};exports['create']=function(_0x1a272c,_0x490dd9){return db[_0x62b3('0x42')][_0x62b3('0x4b')](_0x1a272c['body'],{})[_0x62b3('0x24')](respondWithResult(_0x490dd9,0xc9))[_0x62b3('0x4a')](handleError(_0x490dd9,null));};exports[_0x62b3('0x22')]=function(_0x562682,_0x104746){if(_0x562682[_0x62b3('0x4c')]['id']){delete _0x562682[_0x62b3('0x4c')]['id'];}return db[_0x62b3('0x42')][_0x62b3('0x49')]({'where':{'id':_0x562682['params']['id']}})[_0x62b3('0x24')](handleEntityNotFound(_0x104746,null))[_0x62b3('0x24')](saveUpdates(_0x562682[_0x62b3('0x4c')],null))['then'](respondWithResult(_0x104746,null))[_0x62b3('0x4a')](handleError(_0x104746,null));};exports[_0x62b3('0x23')]=function(_0x6b41d9,_0x56b4f3){return db[_0x62b3('0x42')][_0x62b3('0x49')]({'where':{'id':_0x6b41d9['params']['id']}})[_0x62b3('0x24')](handleEntityNotFound(_0x56b4f3,null))[_0x62b3('0x24')](removeEntity(_0x56b4f3,null))[_0x62b3('0x4a')](handleError(_0x56b4f3,null));};exports[_0x62b3('0x4d')]=function(_0x54ccbd,_0x470f67){return db[_0x62b3('0x42')][_0x62b3('0x4d')]()['then'](respondWithResult(_0x470f67,null))[_0x62b3('0x4a')](handleError(_0x470f67,null));};
\ No newline at end of file
+var _0xd98a=['findAll','rows','show','params','rawAttributes','includeAll','find','create','catch','update','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','undefined','count','offset','limit','Content-Range','apply','reject','save','then','sendStatus','stack','name','send','map','keys','query','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','merge','type','VIRTUAL','filter','VoiceTransferReport','include'];(function(_0x1d750a,_0x15f819){var _0x5f333b=function(_0x46eb38){while(--_0x46eb38){_0x1d750a['push'](_0x1d750a['shift']());}};_0x5f333b(++_0x15f819);}(_0xd98a,0xa1));var _0xad98=function(_0x514b7e,_0x3b1c46){_0x514b7e=_0x514b7e-0x0;var _0x5879f1=_0xd98a[_0x514b7e];return _0x5879f1;};'use strict';var emlformat=require(_0xad98('0x0'));var rimraf=require(_0xad98('0x1'));var zipdir=require(_0xad98('0x2'));var jsonpatch=require(_0xad98('0x3'));var rp=require(_0xad98('0x4'));var moment=require(_0xad98('0x5'));var BPromise=require(_0xad98('0x6'));var Mustache=require('mustache');var util=require(_0xad98('0x7'));var path=require(_0xad98('0x8'));var sox=require(_0xad98('0x9'));var csv=require(_0xad98('0xa'));var ejs=require(_0xad98('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xad98('0xc'));var squel=require(_0xad98('0xd'));var crypto=require(_0xad98('0xe'));var jsforce=require(_0xad98('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xad98('0xa'));var querystring=require(_0xad98('0x10'));var Papa=require(_0xad98('0x11'));var Redis=require('ioredis');var authService=require(_0xad98('0x12'));var qs=require(_0xad98('0x13'));var as=require(_0xad98('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xad98('0x15'));var utils=require(_0xad98('0x16'));var config=require(_0xad98('0x17'));var licenseUtil=require(_0xad98('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x74d9c7,_0xc9877){_0xc9877=_0xc9877||0xcc;return function(_0x19194e){if(_0x19194e){return _0x74d9c7['sendStatus'](_0xc9877);}return _0x74d9c7[_0xad98('0x19')](_0xc9877)[_0xad98('0x1a')]();};}function respondWithResult(_0x1eb836,_0x3417f2){_0x3417f2=_0x3417f2||0xc8;return function(_0xc2fa5b){if(_0xc2fa5b){return _0x1eb836['status'](_0x3417f2)[_0xad98('0x1b')](_0xc2fa5b);}};}function respondWithFilteredResult(_0x396e50,_0x967cac){return function(_0x55617e){if(_0x55617e){var _0x3e6b46=typeof _0x967cac['offset']===_0xad98('0x1c')&&typeof _0x967cac['limit']===_0xad98('0x1c');var _0x423d7f=_0x55617e[_0xad98('0x1d')];var _0x3b1c65=_0x3e6b46?0x0:_0x967cac['offset'];var _0x1bfee4=_0x3e6b46?_0x55617e['count']:_0x967cac[_0xad98('0x1e')]+_0x967cac[_0xad98('0x1f')];var _0x599683;if(_0x1bfee4>=_0x423d7f){_0x1bfee4=_0x423d7f;_0x599683=0xc8;}else{_0x599683=0xce;}_0x396e50['status'](_0x599683);return _0x396e50['set'](_0xad98('0x20'),_0x3b1c65+'-'+_0x1bfee4+'/'+_0x423d7f)['json'](_0x55617e);}return null;};}function patchUpdates(_0x4128ca){return function(_0x1f266f){try{jsonpatch[_0xad98('0x21')](_0x1f266f,_0x4128ca,!![]);}catch(_0x4b3ccf){return BPromise[_0xad98('0x22')](_0x4b3ccf);}return _0x1f266f[_0xad98('0x23')]();};}function saveUpdates(_0x406128,_0x267ed5){return function(_0x3bcd12){if(_0x3bcd12){return _0x3bcd12['update'](_0x406128)[_0xad98('0x24')](function(_0x493824){return _0x493824;});}return null;};}function removeEntity(_0xf500d1,_0x5c8413){return function(_0x256db6){if(_0x256db6){return _0x256db6['destroy']()['then'](function(){_0xf500d1[_0xad98('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1e2b93,_0x3ba003){return function(_0x587990){if(!_0x587990){_0x1e2b93[_0xad98('0x25')](0x194);}return _0x587990;};}function handleError(_0x24095b,_0xf80bdd){_0xf80bdd=_0xf80bdd||0x1f4;return function(_0x174713){logger['error'](_0x174713[_0xad98('0x26')]);if(_0x174713[_0xad98('0x27')]){delete _0x174713[_0xad98('0x27')];}_0x24095b[_0xad98('0x19')](_0xf80bdd)[_0xad98('0x28')](_0x174713);};}exports['index']=function(_0x1ae0c8,_0x1fe582){var _0x47c326={},_0x1b0c21={},_0x3bad4b={'count':0x0,'rows':[]};var _0x42aa59=_[_0xad98('0x29')](db['VoiceTransferReport']['rawAttributes'],function(_0x3b2ce2){return{'name':_0x3b2ce2['fieldName'],'type':_0x3b2ce2['type']['key']};});_0x1b0c21['model']=_['map'](_0x42aa59,_0xad98('0x27'));_0x1b0c21['query']=_[_0xad98('0x2a')](_0x1ae0c8[_0xad98('0x2b')]);_0x1b0c21[_0xad98('0x2c')]=_['intersection'](_0x1b0c21[_0xad98('0x2d')],_0x1b0c21[_0xad98('0x2b')]);_0x47c326['attributes']=_[_0xad98('0x2e')](_0x1b0c21['model'],qs[_0xad98('0x2f')](_0x1ae0c8['query'][_0xad98('0x2f')]));_0x47c326['attributes']=_0x47c326[_0xad98('0x30')][_0xad98('0x31')]?_0x47c326['attributes']:_0x1b0c21['model'];if(!_0x1ae0c8[_0xad98('0x2b')][_0xad98('0x32')](_0xad98('0x33'))){_0x47c326['limit']=qs[_0xad98('0x1f')](_0x1ae0c8['query'][_0xad98('0x1f')]);_0x47c326[_0xad98('0x1e')]=qs['offset'](_0x1ae0c8['query'][_0xad98('0x1e')]);}_0x47c326['order']=qs[_0xad98('0x34')](_0x1ae0c8[_0xad98('0x2b')][_0xad98('0x34')]);_0x47c326[_0xad98('0x35')]=qs[_0xad98('0x2c')](_[_0xad98('0x36')](_0x1ae0c8[_0xad98('0x2b')],_0x1b0c21[_0xad98('0x2c')]),_0x42aa59);if(_0x1ae0c8['query']['filter']){_0x47c326[_0xad98('0x35')]=_[_0xad98('0x37')](_0x47c326['where'],{'$or':_['map'](_0x42aa59,function(_0x2aba8a){if(_0x2aba8a[_0xad98('0x38')]!==_0xad98('0x39')){var _0x16de94={};_0x16de94[_0x2aba8a[_0xad98('0x27')]]={'$like':'%'+_0x1ae0c8['query'][_0xad98('0x3a')]+'%'};return _0x16de94;}})});}_0x47c326=_[_0xad98('0x37')]({},_0x47c326,_0x1ae0c8['options']);var _0x38d4f4={'where':_0x47c326['where']};return db[_0xad98('0x3b')][_0xad98('0x1d')](_0x38d4f4)[_0xad98('0x24')](function(_0x20d766){_0x3bad4b[_0xad98('0x1d')]=_0x20d766;if(_0x1ae0c8[_0xad98('0x2b')]['includeAll']){_0x47c326[_0xad98('0x3c')]=[{'all':!![]}];}return db[_0xad98('0x3b')][_0xad98('0x3d')](_0x47c326);})[_0xad98('0x24')](function(_0x54968f){_0x3bad4b[_0xad98('0x3e')]=_0x54968f;return _0x3bad4b;})[_0xad98('0x24')](respondWithFilteredResult(_0x1fe582,_0x47c326))['catch'](handleError(_0x1fe582,null));};exports[_0xad98('0x3f')]=function(_0x3b2878,_0x24d44d){var _0x43d832={'raw':!![],'where':{'id':_0x3b2878[_0xad98('0x40')]['id']}},_0xc7860a={};_0xc7860a[_0xad98('0x2d')]=_['keys'](db[_0xad98('0x3b')][_0xad98('0x41')]);_0xc7860a['query']=_[_0xad98('0x2a')](_0x3b2878[_0xad98('0x2b')]);_0xc7860a[_0xad98('0x2c')]=_[_0xad98('0x2e')](_0xc7860a['model'],_0xc7860a[_0xad98('0x2b')]);_0x43d832[_0xad98('0x30')]=_[_0xad98('0x2e')](_0xc7860a[_0xad98('0x2d')],qs[_0xad98('0x2f')](_0x3b2878[_0xad98('0x2b')][_0xad98('0x2f')]));_0x43d832[_0xad98('0x30')]=_0x43d832[_0xad98('0x30')][_0xad98('0x31')]?_0x43d832[_0xad98('0x30')]:_0xc7860a[_0xad98('0x2d')];if(_0x3b2878['query'][_0xad98('0x42')]){_0x43d832[_0xad98('0x3c')]=[{'all':!![]}];}_0x43d832=_[_0xad98('0x37')]({},_0x43d832,_0x3b2878['options']);return db[_0xad98('0x3b')][_0xad98('0x43')](_0x43d832)[_0xad98('0x24')](handleEntityNotFound(_0x24d44d,null))[_0xad98('0x24')](respondWithResult(_0x24d44d,null))['catch'](handleError(_0x24d44d,null));};exports['create']=function(_0x2c8186,_0x2641d4){return db['VoiceTransferReport'][_0xad98('0x44')](_0x2c8186['body'],{})[_0xad98('0x24')](respondWithResult(_0x2641d4,0xc9))[_0xad98('0x45')](handleError(_0x2641d4,null));};exports[_0xad98('0x46')]=function(_0x43cc59,_0x1e1d4e){if(_0x43cc59['body']['id']){delete _0x43cc59[_0xad98('0x47')]['id'];}return db['VoiceTransferReport'][_0xad98('0x43')]({'where':{'id':_0x43cc59[_0xad98('0x40')]['id']}})[_0xad98('0x24')](handleEntityNotFound(_0x1e1d4e,null))[_0xad98('0x24')](saveUpdates(_0x43cc59['body'],null))['then'](respondWithResult(_0x1e1d4e,null))['catch'](handleError(_0x1e1d4e,null));};exports[_0xad98('0x48')]=function(_0x3eaa34,_0x3922a4){return db['VoiceTransferReport'][_0xad98('0x43')]({'where':{'id':_0x3eaa34[_0xad98('0x40')]['id']}})[_0xad98('0x24')](handleEntityNotFound(_0x3922a4,null))['then'](removeEntity(_0x3922a4,null))[_0xad98('0x45')](handleError(_0x3922a4,null));};exports['describe']=function(_0x21ec23,_0x2d6dfd){return db[_0xad98('0x3b')][_0xad98('0x49')]()[_0xad98('0x24')](respondWithResult(_0x2d6dfd,null))[_0xad98('0x45')](handleError(_0x2d6dfd,null));};
\ No newline at end of file
index 4243373..6896b9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d56=['path','rimraf','../../config/environment','exports','define','VoiceTransferReport','report_call_transfer','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x7d56,0xe4));var _0x67d5=function(_0x43115e,_0x1ed9d2){_0x43115e=_0x43115e-0x0;var _0x3ddd74=_0x7d56[_0x43115e];return _0x3ddd74;};'use strict';var _=require(_0x67d5('0x0'));var util=require(_0x67d5('0x1'));var logger=require(_0x67d5('0x2'))(_0x67d5('0x3'));var moment=require(_0x67d5('0x4'));var BPromise=require('bluebird');var rp=require(_0x67d5('0x5'));var fs=require('fs');var path=require(_0x67d5('0x6'));var rimraf=require(_0x67d5('0x7'));var config=require(_0x67d5('0x8'));var attributes=require('./voiceTransferReport.attributes');module[_0x67d5('0x9')]=function(_0x5bc09a,_0x4fba0e){return _0x5bc09a[_0x67d5('0xa')](_0x67d5('0xb'),attributes,{'tableName':_0x67d5('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5825=['moment','bluebird','request-promise','rimraf','./voiceTransferReport.attributes','exports','define','VoiceTransferReport','report_call_transfer','lodash','util','../../config/logger'];(function(_0x510c60,_0x50247e){var _0x49c4aa=function(_0x3149c7){while(--_0x3149c7){_0x510c60['push'](_0x510c60['shift']());}};_0x49c4aa(++_0x50247e);}(_0x5825,0x69));var _0x5582=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x5825[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0x5582('0x0'));var util=require(_0x5582('0x1'));var logger=require(_0x5582('0x2'))('api');var moment=require(_0x5582('0x3'));var BPromise=require(_0x5582('0x4'));var rp=require(_0x5582('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5582('0x6'));var config=require('../../config/environment');var attributes=require(_0x5582('0x7'));module[_0x5582('0x8')]=function(_0xb73b3b,_0x53df46){return _0xb73b3b[_0x5582('0x9')](_0x5582('0xa'),attributes,{'tableName':_0x5582('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 93d7442..0229595 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x253c=['client','http','request','then','VoiceTransferReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','VoiceTransferReport','create','body','options','raw','info','CreateVoiceTransferReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0xa183d9,_0x22e449){var _0x4cff67=function(_0x4cfdf5){while(--_0x4cfdf5){_0xa183d9['push'](_0xa183d9['shift']());}};_0x4cff67(++_0x22e449);}(_0x253c,0x13f));var _0xc253=function(_0x55bf2a,_0x4d41e6){_0x55bf2a=_0x55bf2a-0x0;var _0x2d3b1e=_0x253c[_0x55bf2a];return _0x2d3b1e;};'use strict';var _=require(_0xc253('0x0'));var util=require(_0xc253('0x1'));var moment=require(_0xc253('0x2'));var BPromise=require(_0xc253('0x3'));var rs=require(_0xc253('0x4'));var fs=require('fs');var Redis=require(_0xc253('0x5'));var db=require(_0xc253('0x6'))['db'];var utils=require(_0xc253('0x7'));var logger=require(_0xc253('0x8'))(_0xc253('0x9'));var config=require(_0xc253('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xc253('0xb')][_0xc253('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x52b88f,_0x1e84f4,_0x3c60c8){return new BPromise(function(_0x51ba94,_0x2aab04){return client[_0xc253('0xd')](_0x52b88f,_0x3c60c8)[_0xc253('0xe')](function(_0x1b207b){logger['info'](_0xc253('0xf'),_0x1e84f4,'request\x20sent');logger[_0xc253('0x10')]('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x1e84f4,_0xc253('0x11'),JSON[_0xc253('0x12')](_0x1b207b));if(_0x1b207b['error']){if(_0x1b207b[_0xc253('0x13')][_0xc253('0x14')]===0x1f4){logger[_0xc253('0x13')](_0xc253('0xf'),_0x1e84f4,_0x1b207b[_0xc253('0x13')][_0xc253('0x15')]);return _0x2aab04(_0x1b207b[_0xc253('0x13')][_0xc253('0x15')]);}logger[_0xc253('0x13')]('VoiceTransferReport,\x20%s,\x20%s',_0x1e84f4,_0x1b207b[_0xc253('0x13')][_0xc253('0x15')]);return _0x51ba94(_0x1b207b[_0xc253('0x13')]['message']);}else{logger['info'](_0xc253('0xf'),_0x1e84f4,_0xc253('0x11'));_0x51ba94(_0x1b207b[_0xc253('0x16')][_0xc253('0x15')]);}})['catch'](function(_0x4ca357){logger[_0xc253('0x13')](_0xc253('0xf'),_0x1e84f4,_0x4ca357);_0x2aab04(_0x4ca357);});});}exports['CreateVoiceTransferReport']=function(_0x48e147){var _0x3a4738=this;return new Promise(function(_0x982b88,_0x43f739){return db[_0xc253('0x17')][_0xc253('0x18')](_0x48e147[_0xc253('0x19')],{'raw':_0x48e147[_0xc253('0x1a')]?_0x48e147[_0xc253('0x1a')][_0xc253('0x1b')]===undefined?!![]:![]:!![]})[_0xc253('0xe')](function(_0x21f329){logger[_0xc253('0x1c')](_0xc253('0x1d'),_0x48e147);logger[_0xc253('0x10')](_0xc253('0x1d'),_0x48e147,JSON['stringify'](_0x21f329));_0x982b88(_0x21f329);})['catch'](function(_0xf28750){logger[_0xc253('0x13')](_0xc253('0x1d'),_0xf28750['message'],_0x48e147);_0x43f739(_0x3a4738[_0xc253('0x13')](0x1f4,_0xf28750[_0xc253('0x15')]));});});};
\ No newline at end of file
+var _0x495f=['jayson/promise','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','VoiceTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','debug','stringify','catch','lodash','util','moment','bluebird','ioredis','../../config/logger','rpc','../../config/environment'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x495f,0xc3));var _0xf495=function(_0x13ce0c,_0x3f2a0d){_0x13ce0c=_0x13ce0c-0x0;var _0x4388fb=_0x495f[_0x13ce0c];return _0x4388fb;};'use strict';var _=require(_0xf495('0x0'));var util=require(_0xf495('0x1'));var moment=require(_0xf495('0x2'));var BPromise=require(_0xf495('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf495('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xf495('0x5'))(_0xf495('0x6'));var config=require(_0xf495('0x7'));var jayson=require(_0xf495('0x8'));var client=jayson[_0xf495('0x9')][_0xf495('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x13a2b5,_0x326d1a,_0x4ef4dc){return new BPromise(function(_0x3c99a3,_0x4dfc5e){return client[_0xf495('0xb')](_0x13a2b5,_0x4ef4dc)[_0xf495('0xc')](function(_0x48b39d){logger[_0xf495('0xd')](_0xf495('0xe'),_0x326d1a,_0xf495('0xf'));logger['debug'](_0xf495('0x10'),_0x326d1a,_0xf495('0xf'),JSON['stringify'](_0x48b39d));if(_0x48b39d['error']){if(_0x48b39d[_0xf495('0x11')][_0xf495('0x12')]===0x1f4){logger[_0xf495('0x11')]('VoiceTransferReport,\x20%s,\x20%s',_0x326d1a,_0x48b39d[_0xf495('0x11')][_0xf495('0x13')]);return _0x4dfc5e(_0x48b39d[_0xf495('0x11')]['message']);}logger[_0xf495('0x11')]('VoiceTransferReport,\x20%s,\x20%s',_0x326d1a,_0x48b39d[_0xf495('0x11')][_0xf495('0x13')]);return _0x3c99a3(_0x48b39d[_0xf495('0x11')][_0xf495('0x13')]);}else{logger['info'](_0xf495('0xe'),_0x326d1a,_0xf495('0xf'));_0x3c99a3(_0x48b39d[_0xf495('0x14')]['message']);}})['catch'](function(_0x2db3a8){logger[_0xf495('0x11')](_0xf495('0xe'),_0x326d1a,_0x2db3a8);_0x4dfc5e(_0x2db3a8);});});}exports[_0xf495('0x15')]=function(_0x530133){var _0x21b23c=this;return new Promise(function(_0x361e87,_0x2b48fd){return db[_0xf495('0x16')][_0xf495('0x17')](_0x530133[_0xf495('0x18')],{'raw':_0x530133[_0xf495('0x19')]?_0x530133[_0xf495('0x19')]['raw']===undefined?!![]:![]:!![]})[_0xf495('0xc')](function(_0x18252d){logger[_0xf495('0xd')](_0xf495('0x15'),_0x530133);logger[_0xf495('0x1a')](_0xf495('0x15'),_0x530133,JSON[_0xf495('0x1b')](_0x18252d));_0x361e87(_0x18252d);})[_0xf495('0x1c')](function(_0x4d681b){logger[_0xf495('0x11')](_0xf495('0x15'),_0x4d681b[_0xf495('0x13')],_0x530133);_0x2b48fd(_0x21b23c[_0xf495('0x11')](0x1f4,_0x4d681b[_0xf495('0x13')]));});});};
\ No newline at end of file
index 7d70925..1dd3c30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdace=['unhold','calls','/transfer','transfer','exports','express','../../components/auth/service','./webbar.controller','post','isAuthenticated','isWebrtcLicence','originate','hangup','/answer','/hold','/unhold'];(function(_0x269f14,_0x38df6a){var _0x373158=function(_0x364ebf){while(--_0x364ebf){_0x269f14['push'](_0x269f14['shift']());}};_0x373158(++_0x38df6a);}(_0xdace,0xc5));var _0xedac=function(_0x234ae1,_0x42bdd6){_0x234ae1=_0x234ae1-0x0;var _0x227ba0=_0xdace[_0x234ae1];return _0x227ba0;};'use strict';var express=require(_0xedac('0x0'));var router=express['Router']();var auth=require(_0xedac('0x1'));var controller=require(_0xedac('0x2'));router[_0xedac('0x3')]('/originate',auth[_0xedac('0x4')](),auth[_0xedac('0x5')](),controller[_0xedac('0x6')]);router[_0xedac('0x3')]('/hangup',auth[_0xedac('0x4')](),auth[_0xedac('0x5')](),controller[_0xedac('0x7')]);router['post'](_0xedac('0x8'),auth[_0xedac('0x4')](),auth[_0xedac('0x5')](),controller['answer']);router[_0xedac('0x3')](_0xedac('0x9'),auth[_0xedac('0x4')](),auth['isWebrtcLicence'](),controller['hold']);router[_0xedac('0x3')](_0xedac('0xa'),auth['isAuthenticated'](),auth['isWebrtcLicence'](),controller[_0xedac('0xb')]);router[_0xedac('0x3')]('/calls',auth[_0xedac('0x4')](),auth['isWebrtcLicence'](),controller[_0xedac('0xc')]);router[_0xedac('0x3')](_0xedac('0xd'),auth[_0xedac('0x4')](),auth[_0xedac('0x5')](),controller[_0xedac('0xe')]);module[_0xedac('0xf')]=router;
\ No newline at end of file
+var _0x6f0d=['isAuthenticated','isWebrtcLicence','originate','/hangup','/answer','/hold','hold','unhold','calls','/transfer','transfer','exports','Router','../../components/auth/service','./webbar.controller','post'];(function(_0xae9fa8,_0x2435fe){var _0x5b84c7=function(_0x337c82){while(--_0x337c82){_0xae9fa8['push'](_0xae9fa8['shift']());}};_0x5b84c7(++_0x2435fe);}(_0x6f0d,0x16c));var _0xd6f0=function(_0x1e7592,_0xe02d86){_0x1e7592=_0x1e7592-0x0;var _0x1b9f65=_0x6f0d[_0x1e7592];return _0x1b9f65;};'use strict';var express=require('express');var router=express[_0xd6f0('0x0')]();var auth=require(_0xd6f0('0x1'));var controller=require(_0xd6f0('0x2'));router[_0xd6f0('0x3')]('/originate',auth[_0xd6f0('0x4')](),auth[_0xd6f0('0x5')](),controller[_0xd6f0('0x6')]);router[_0xd6f0('0x3')](_0xd6f0('0x7'),auth['isAuthenticated'](),auth[_0xd6f0('0x5')](),controller['hangup']);router[_0xd6f0('0x3')](_0xd6f0('0x8'),auth[_0xd6f0('0x4')](),auth[_0xd6f0('0x5')](),controller['answer']);router['post'](_0xd6f0('0x9'),auth[_0xd6f0('0x4')](),auth[_0xd6f0('0x5')](),controller[_0xd6f0('0xa')]);router[_0xd6f0('0x3')]('/unhold',auth[_0xd6f0('0x4')](),auth[_0xd6f0('0x5')](),controller[_0xd6f0('0xb')]);router[_0xd6f0('0x3')]('/calls',auth[_0xd6f0('0x4')](),auth[_0xd6f0('0x5')](),controller[_0xd6f0('0xc')]);router[_0xd6f0('0x3')](_0xd6f0('0xd'),auth[_0xd6f0('0x4')](),auth[_0xd6f0('0x5')](),controller[_0xd6f0('0xe')]);module[_0xd6f0('0xf')]=router;
\ No newline at end of file
index 91df124..13224c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1306=['name','status','send','code','catch','User','agent','VoiceChannels','all','then','filter','rows','UserId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','userId','callNumber','callbackUrl','entityFound:','user:%s','originate\x20executed!','hangup','hangup\x20fired:','sessionId','format','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','transferNumber\x20is\x20required','info','log','handleError:','error','stack'];(function(_0xc2c6fb,_0x1f8589){var _0x3450fb=function(_0x2ca94d){while(--_0x2ca94d){_0xc2c6fb['push'](_0xc2c6fb['shift']());}};_0x3450fb(++_0x1f8589);}(_0x1306,0x17a));var _0x6130=function(_0x1179c9,_0x3db642){_0x1179c9=_0x1179c9-0x0;var _0x2027f1=_0x1306[_0x1179c9];return _0x2027f1;};'use strict';var path=require(_0x6130('0x0'));var fs=require('fs');var _=require(_0x6130('0x1'));var db=require(_0x6130('0x2'))['db'];var config=require(_0x6130('0x3'));var util=require(_0x6130('0x4'));var BPromise=require(_0x6130('0x5'));var jayson=require(_0x6130('0x6'));var amiClient=jayson[_0x6130('0x7')][_0x6130('0x8')]({'port':0x232a});var logger=require(_0x6130('0x9'))(_0x6130('0xa'));var Redis=require(_0x6130('0xb'));config[_0x6130('0xc')]=_[_0x6130('0xd')](config[_0x6130('0xc')],{'host':_0x6130('0xe'),'port':0x18eb});var io=require(_0x6130('0xf'))(new Redis(config[_0x6130('0xc')]));var Schema=require(_0x6130('0x10'));var originateValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]},'callNumber':{'type':_0x6130('0x13'),'required':[!![],_0x6130('0x14')]},'callerId':{'type':_0x6130('0x13')},'callbackUrl':{'type':_0x6130('0x13')}});var hangupValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]},'sessionId':{'type':_0x6130('0x13'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x6130('0x13'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0x6130('0x12')]},'sessionId':{'type':_0x6130('0x13'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x6130('0x13'),'required':[!![],_0x6130('0x15')]}});var holdValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]},'sessionId':{'type':_0x6130('0x13'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]},'sessionId':{'type':_0x6130('0x13'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]}});var conferenceValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]}});function emit(_0x39b444,_0x274659,_0x3298f0){logger[_0x6130('0x16')](_0x39b444,_0x274659,JSON['stringify'](_0x3298f0));io['to'](_0x39b444)['emit'](_0x274659,_0x3298f0);}function handleError(_0x1f80e0){return function(_0x49803e){console[_0x6130('0x17')](_0x6130('0x18'),_0x49803e,_0x49803e instanceof RangeError);logger[_0x6130('0x19')](_0x49803e[_0x6130('0x1a')]);if(_0x49803e instanceof RangeError){if(_0x49803e[_0x6130('0x1b')]){delete _0x49803e['name'];}_0x1f80e0[_0x6130('0x1c')](0x194)['send'](_0x49803e);}else{if(_0x49803e[_0x6130('0x1b')]){delete _0x49803e[_0x6130('0x1b')];}_0x1f80e0[_0x6130('0x1c')](0x1f4)[_0x6130('0x1d')](_0x49803e);}};}function checkError(){return function(_0x42f498){if(!_0x42f498){throw new RangeError('NotFound');}return _0x42f498;};}function respondWithRpcPromise(_0x5be413,_0x2c01cd){return new BPromise(function(_0x534390,_0x30b4f2){var _0x289c7b=amiClient;return _0x289c7b['request'](_0x5be413,_0x2c01cd)['then'](function(_0x54fc67){if(_0x54fc67[_0x6130('0x19')]){if(_0x54fc67['error'][_0x6130('0x1e')]===0x1f4){return _0x30b4f2(_0x54fc67['error']['message']);}return _0x534390(_0x54fc67['error']['message']);}else{_0x534390(_0x54fc67['result']);}})[_0x6130('0x1f')](function(_0x1ba07d){_0x30b4f2(_0x1ba07d);});});}function getAgent(_0x4d7442){return db[_0x6130('0x20')]['findOne']({'where':{'id':_0x4d7442,'role':_0x6130('0x21')}})['then'](checkError());}function getAgentCheckSession(_0x5787a6,_0x9196d1){return new BPromise(function(_0x456231,_0x401a31){var _0x2997fd=respondWithRpcPromise(_0x6130('0x22'));var _0x392386=getAgent(_0x5787a6);Promise[_0x6130('0x23')]([_0x2997fd,_0x392386])[_0x6130('0x24')](function(_0x14dff0){var _0x5809e4=_0x14dff0[0x0];var _0x5363cc=_0x14dff0[0x1];var _0x383c56=_[_0x6130('0x25')](_0x5809e4[_0x6130('0x26')],function(_0x4345ac){return _0x4345ac[_0x6130('0x27')]==_0x5363cc['id']&&_0x4345ac['sessionId']==_0x9196d1;});if(_0x383c56[_0x6130('0x28')]==0x1){_0x456231(_0x5363cc);}else{_0x401a31(new RangeError(_0x6130('0x29')+_0x9196d1+_0x6130('0x2a')));}});});}exports[_0x6130('0x2b')]=function(_0x76dfa6,_0x4cf1d3){logger[_0x6130('0x16')](_0x6130('0x2c'),_0x76dfa6[_0x6130('0x2d')]);var _0x4b0c9c=originateValidation[_0x6130('0x10')](_0x76dfa6[_0x6130('0x2d')]);if(_0x4b0c9c[_0x6130('0x28')]>0x0){return _0x4cf1d3[_0x6130('0x1c')](0x190)[_0x6130('0x2e')](_0x4b0c9c);}var _0x6389a3=_0x76dfa6[_0x6130('0x2d')][_0x6130('0x2f')];var _0x25fabf=_0x76dfa6['body'][_0x6130('0x30')];var _0x4df5ed=_0x76dfa6['body']['callerId'];var _0x1ffc85=_0x76dfa6[_0x6130('0x2d')][_0x6130('0x31')];return getAgent(_0x6389a3)[_0x6130('0x24')](function(_0x438cde){logger[_0x6130('0x16')](_0x6130('0x32'),_0x438cde[_0x6130('0x1b')]);emit(util['format'](_0x6130('0x33'),_0x438cde[_0x6130('0x1b')]),'webbar:originate',{'callNumber':_0x25fabf,'callerId':_0x4df5ed,'callbackUrl':_0x1ffc85});return _0x4cf1d3[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x34')});})['catch'](handleError(_0x4cf1d3));};exports[_0x6130('0x35')]=function(_0x147663,_0x501630){logger['info'](_0x6130('0x36'),_0x147663[_0x6130('0x2d')]);var _0x3b1f14=hangupValidation['validate'](_0x147663['body']);if(_0x3b1f14[_0x6130('0x28')]>0x0){return _0x501630[_0x6130('0x1c')](0x190)[_0x6130('0x2e')](_0x3b1f14);}var _0x7d3014=_0x147663[_0x6130('0x2d')][_0x6130('0x2f')];var _0x167b31=_0x147663['body'][_0x6130('0x37')];return getAgent(_0x7d3014)[_0x6130('0x24')](function(_0x101aab){logger[_0x6130('0x16')](_0x6130('0x32'),_0x101aab[_0x6130('0x1b')]);emit(util[_0x6130('0x38')]('user:%s',_0x101aab[_0x6130('0x1b')]),_0x6130('0x39'),{'sessionId':_0x167b31});return _0x501630[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x3a')});})[_0x6130('0x1f')](handleError(_0x501630));};exports[_0x6130('0x3b')]=function(_0x7e02ef,_0x566e43){logger[_0x6130('0x16')](_0x6130('0x3c'),_0x7e02ef[_0x6130('0x2d')]);var _0x4c727b=answerValidation[_0x6130('0x10')](_0x7e02ef[_0x6130('0x2d')]);if(_0x4c727b[_0x6130('0x28')]>0x0){return _0x566e43['status'](0x190)['json'](_0x4c727b);}var _0x3ee3f8=_0x7e02ef[_0x6130('0x2d')][_0x6130('0x2f')];var _0xd87943=_0x7e02ef[_0x6130('0x2d')]['sessionId'];return getAgent(_0x3ee3f8)[_0x6130('0x24')](function(_0xef11b5){logger['info'](_0x6130('0x32'),_0xef11b5[_0x6130('0x1b')]);emit(util[_0x6130('0x38')](_0x6130('0x33'),_0xef11b5[_0x6130('0x1b')]),_0x6130('0x3d'),{'sessionId':_0xd87943});return _0x566e43[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':'answer\x20executed!'});})['catch'](handleError(_0x566e43));};exports[_0x6130('0x3e')]=function(_0x534a67,_0x28fb1f){logger[_0x6130('0x16')](_0x6130('0x3f'),_0x534a67[_0x6130('0x2d')]);var _0x15adfd=holdValidation[_0x6130('0x10')](_0x534a67[_0x6130('0x2d')]);if(_0x15adfd[_0x6130('0x28')]>0x0){return _0x28fb1f[_0x6130('0x1c')](0x190)[_0x6130('0x2e')](_0x15adfd);}var _0x3936a8=_0x534a67['body'][_0x6130('0x2f')];var _0x134198=_0x534a67[_0x6130('0x2d')][_0x6130('0x37')];return getAgent(_0x3936a8)[_0x6130('0x24')](function(_0x13f591){logger[_0x6130('0x16')](_0x6130('0x32'),_0x13f591[_0x6130('0x1b')]);emit(util[_0x6130('0x38')]('user:%s',_0x13f591[_0x6130('0x1b')]),_0x6130('0x40'),{'sessionId':_0x134198});return _0x28fb1f[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x41')});})[_0x6130('0x1f')](handleError(_0x28fb1f));};exports[_0x6130('0x42')]=function(_0x37ee0c,_0x3a64ef){logger['info'](_0x6130('0x43'),_0x37ee0c[_0x6130('0x2d')]);var _0x1d0240=unholdValidation[_0x6130('0x10')](_0x37ee0c[_0x6130('0x2d')]);if(_0x1d0240[_0x6130('0x28')]>0x0){return _0x3a64ef['status'](0x190)[_0x6130('0x2e')](_0x1d0240);}var _0x1cbd0e=_0x37ee0c[_0x6130('0x2d')]['userId'];var _0x4f5207=_0x37ee0c['body']['sessionId'];return getAgent(_0x1cbd0e)[_0x6130('0x24')](function(_0xa9b10a){logger[_0x6130('0x16')]('entityFound:',_0xa9b10a['name']);emit(util['format']('user:%s',_0xa9b10a[_0x6130('0x1b')]),_0x6130('0x44'),{'sessionId':_0x4f5207});return _0x3a64ef[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x45')});})['catch'](handleError(_0x3a64ef));};exports[_0x6130('0x46')]=function(_0x305d99,_0x49e3cf){logger[_0x6130('0x16')](_0x6130('0x47'),_0x49e3cf[_0x6130('0x2d')]);var _0x32bf20=callsValidation[_0x6130('0x10')](_0x305d99[_0x6130('0x2d')]);if(_0x32bf20[_0x6130('0x28')]>0x0){return _0x49e3cf[_0x6130('0x1c')](0x190)['json'](_0x32bf20);}var _0x159ff8=_0x305d99[_0x6130('0x2d')][_0x6130('0x2f')];var _0x4934ca=respondWithRpcPromise('VoiceChannels');var _0x1b4f82=getAgent(_0x159ff8);return Promise[_0x6130('0x23')]([_0x4934ca,_0x1b4f82])[_0x6130('0x24')](function(_0xc253f){var _0x37b89b=_0xc253f[0x0];var _0x519a0c=_0xc253f[0x1];var _0x29630a=_[_0x6130('0x25')](_0x37b89b[_0x6130('0x26')],function(_0x372c53){return _0x372c53[_0x6130('0x27')]==_0x519a0c['id'];});return _0x49e3cf[_0x6130('0x1c')](0xc8)['json']({'count':_0x29630a['length'],'rows':_0x29630a});})[_0x6130('0x1f')](handleError(_0x49e3cf));};exports[_0x6130('0x48')]=function(_0x5c55cf,_0x442fee){logger[_0x6130('0x16')](_0x6130('0x49'),_0x5c55cf[_0x6130('0x2d')]);var _0x54c565=conferenceValidation[_0x6130('0x10')](_0x5c55cf[_0x6130('0x2d')]);if(_0x54c565[_0x6130('0x28')]>0x0){return _0x442fee[_0x6130('0x1c')](0x190)[_0x6130('0x2e')](_0x54c565);}var _0x198da8=_0x5c55cf[_0x6130('0x2d')][_0x6130('0x2f')];return getAgent(_0x198da8)['then'](function(_0x46f586){logger[_0x6130('0x16')](_0x6130('0x32'),_0x46f586[_0x6130('0x1b')]);emit(util[_0x6130('0x38')](_0x6130('0x33'),_0x46f586['name']),_0x6130('0x4a'));return _0x442fee[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x4b')});})[_0x6130('0x1f')](handleError(_0x442fee));};exports[_0x6130('0x4c')]=function(_0x2d27e6,_0x31d20d){logger[_0x6130('0x16')](_0x6130('0x4d'),_0x2d27e6[_0x6130('0x2d')]);var _0x3a5876=transferValidation['validate'](_0x2d27e6['body']);if(_0x3a5876['length']>0x0){return _0x31d20d['status'](0x190)['json'](_0x3a5876);}var _0x101894=_0x2d27e6[_0x6130('0x2d')]['userId'];var _0x1d8286=_0x2d27e6['body'][_0x6130('0x37')];var _0xf82ecf=_0x2d27e6[_0x6130('0x2d')][_0x6130('0x4e')];return getAgent(_0x101894)[_0x6130('0x24')](function(_0x35f2df){logger[_0x6130('0x16')](_0x6130('0x32'),_0x35f2df['name']);emit(util[_0x6130('0x38')](_0x6130('0x33'),_0x35f2df['name']),_0x6130('0x4f'),{'sessionId':_0x1d8286,'transferNumber':_0xf82ecf});return _0x31d20d[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x50')});})['catch'](handleError(_0x31d20d));};
\ No newline at end of file
+var _0x3e5c=['../../mysqldb','../../config/environment','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','stringify','emit','log','handleError:','stack','name','status','send','request','then','error','code','message','result','findOne','agent','rows','UserId','sessionId','length','sessionId\x20','originate','info','originate\x20fired:','body','userId','callNumber','entityFound:','user:%s','webbar:originate','json','catch','hangup\x20fired:','format','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','webbar:unhold','unhold\x20executed!','calls\x20fired:','VoiceChannels','all','filter','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer\x20fired:','webbar:transfer','transfer\x20executed!','path','lodash'];(function(_0x333a3b,_0x2f5e6f){var _0x14aba4=function(_0x36fbb0){while(--_0x36fbb0){_0x333a3b['push'](_0x333a3b['shift']());}};_0x14aba4(++_0x2f5e6f);}(_0x3e5c,0x9a));var _0xc3e5=function(_0x892857,_0x10015){_0x892857=_0x892857-0x0;var _0x507651=_0x3e5c[_0x892857];return _0x507651;};'use strict';var path=require(_0xc3e5('0x0'));var fs=require('fs');var _=require(_0xc3e5('0x1'));var db=require(_0xc3e5('0x2'))['db'];var config=require(_0xc3e5('0x3'));var util=require('util');var BPromise=require(_0xc3e5('0x4'));var jayson=require(_0xc3e5('0x5'));var amiClient=jayson[_0xc3e5('0x6')][_0xc3e5('0x7')]({'port':0x232a});var logger=require(_0xc3e5('0x8'))(_0xc3e5('0x9'));var Redis=require('ioredis');config[_0xc3e5('0xa')]=_[_0xc3e5('0xb')](config[_0xc3e5('0xa')],{'host':_0xc3e5('0xc'),'port':0x18eb});var io=require(_0xc3e5('0xd'))(new Redis(config['redis']));var Schema=require(_0xc3e5('0xe'));var originateValidation=new Schema({'userId':{'type':_0xc3e5('0xf'),'required':[!![],_0xc3e5('0x10')]},'callNumber':{'type':_0xc3e5('0x11'),'required':[!![],_0xc3e5('0x12')]},'callerId':{'type':_0xc3e5('0x11')},'callbackUrl':{'type':_0xc3e5('0x11')}});var hangupValidation=new Schema({'userId':{'type':'number','required':[!![],_0xc3e5('0x10')]},'sessionId':{'type':_0xc3e5('0x11'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0xc3e5('0xf'),'required':[!![],_0xc3e5('0x10')]},'sessionId':{'type':'string','required':![]}});var transferValidation=new Schema({'userId':{'type':_0xc3e5('0xf'),'required':[!![],_0xc3e5('0x10')]},'sessionId':{'type':_0xc3e5('0x11'),'required':[!![],_0xc3e5('0x13')]},'transferNumber':{'type':_0xc3e5('0x11'),'required':[!![],_0xc3e5('0x14')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var unholdValidation=new Schema({'userId':{'type':_0xc3e5('0xf'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0xc3e5('0x11'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0xc3e5('0xf'),'required':[!![],'userId\x20is\x20required']}});var conferenceValidation=new Schema({'userId':{'type':_0xc3e5('0xf'),'required':[!![],_0xc3e5('0x10')]}});function emit(_0x2cc476,_0x1829f9,_0x43abef){logger['info'](_0x2cc476,_0x1829f9,JSON[_0xc3e5('0x15')](_0x43abef));io['to'](_0x2cc476)[_0xc3e5('0x16')](_0x1829f9,_0x43abef);}function handleError(_0xa7357b){return function(_0xa33d84){console[_0xc3e5('0x17')](_0xc3e5('0x18'),_0xa33d84,_0xa33d84 instanceof RangeError);logger['error'](_0xa33d84[_0xc3e5('0x19')]);if(_0xa33d84 instanceof RangeError){if(_0xa33d84[_0xc3e5('0x1a')]){delete _0xa33d84['name'];}_0xa7357b[_0xc3e5('0x1b')](0x194)['send'](_0xa33d84);}else{if(_0xa33d84[_0xc3e5('0x1a')]){delete _0xa33d84[_0xc3e5('0x1a')];}_0xa7357b[_0xc3e5('0x1b')](0x1f4)[_0xc3e5('0x1c')](_0xa33d84);}};}function checkError(){return function(_0x26d31c){if(!_0x26d31c){throw new RangeError('NotFound');}return _0x26d31c;};}function respondWithRpcPromise(_0x161ee1,_0x3051a5){return new BPromise(function(_0x2d8c6f,_0x3eb513){var _0x414ba9=amiClient;return _0x414ba9[_0xc3e5('0x1d')](_0x161ee1,_0x3051a5)[_0xc3e5('0x1e')](function(_0x47f344){if(_0x47f344[_0xc3e5('0x1f')]){if(_0x47f344[_0xc3e5('0x1f')][_0xc3e5('0x20')]===0x1f4){return _0x3eb513(_0x47f344[_0xc3e5('0x1f')][_0xc3e5('0x21')]);}return _0x2d8c6f(_0x47f344[_0xc3e5('0x1f')][_0xc3e5('0x21')]);}else{_0x2d8c6f(_0x47f344[_0xc3e5('0x22')]);}})['catch'](function(_0x25d3a3){_0x3eb513(_0x25d3a3);});});}function getAgent(_0x4c33d9){return db['User'][_0xc3e5('0x23')]({'where':{'id':_0x4c33d9,'role':_0xc3e5('0x24')}})[_0xc3e5('0x1e')](checkError());}function getAgentCheckSession(_0x59dcff,_0x31f49b){return new BPromise(function(_0x38a961,_0x2d3702){var _0x3ad580=respondWithRpcPromise('VoiceChannels');var _0xa6766d=getAgent(_0x59dcff);Promise['all']([_0x3ad580,_0xa6766d])[_0xc3e5('0x1e')](function(_0xc0e6e7){var _0xc58f2b=_0xc0e6e7[0x0];var _0x5a2d41=_0xc0e6e7[0x1];var _0x5ada1c=_['filter'](_0xc58f2b[_0xc3e5('0x25')],function(_0x45cd9c){return _0x45cd9c[_0xc3e5('0x26')]==_0x5a2d41['id']&&_0x45cd9c[_0xc3e5('0x27')]==_0x31f49b;});if(_0x5ada1c[_0xc3e5('0x28')]==0x1){_0x38a961(_0x5a2d41);}else{_0x2d3702(new RangeError(_0xc3e5('0x29')+_0x31f49b+'\x20not\x20found!'));}});});}exports[_0xc3e5('0x2a')]=function(_0x2ecda2,_0x440617){logger[_0xc3e5('0x2b')](_0xc3e5('0x2c'),_0x2ecda2[_0xc3e5('0x2d')]);var _0x471317=originateValidation[_0xc3e5('0xe')](_0x2ecda2[_0xc3e5('0x2d')]);if(_0x471317[_0xc3e5('0x28')]>0x0){return _0x440617[_0xc3e5('0x1b')](0x190)['json'](_0x471317);}var _0x3d7b87=_0x2ecda2['body'][_0xc3e5('0x2e')];var _0x1b310a=_0x2ecda2[_0xc3e5('0x2d')][_0xc3e5('0x2f')];var _0x5af959=_0x2ecda2[_0xc3e5('0x2d')]['callerId'];var _0x54f79b=_0x2ecda2[_0xc3e5('0x2d')]['callbackUrl'];return getAgent(_0x3d7b87)[_0xc3e5('0x1e')](function(_0x3952dd){logger[_0xc3e5('0x2b')](_0xc3e5('0x30'),_0x3952dd[_0xc3e5('0x1a')]);emit(util['format'](_0xc3e5('0x31'),_0x3952dd[_0xc3e5('0x1a')]),_0xc3e5('0x32'),{'callNumber':_0x1b310a,'callerId':_0x5af959,'callbackUrl':_0x54f79b});return _0x440617[_0xc3e5('0x1b')](0xc8)[_0xc3e5('0x33')]({'error':![],'message':'originate\x20executed!'});})[_0xc3e5('0x34')](handleError(_0x440617));};exports['hangup']=function(_0x219ca5,_0x29ea43){logger['info'](_0xc3e5('0x35'),_0x219ca5['body']);var _0xd2b224=hangupValidation[_0xc3e5('0xe')](_0x219ca5[_0xc3e5('0x2d')]);if(_0xd2b224['length']>0x0){return _0x29ea43[_0xc3e5('0x1b')](0x190)[_0xc3e5('0x33')](_0xd2b224);}var _0xc410aa=_0x219ca5[_0xc3e5('0x2d')][_0xc3e5('0x2e')];var _0x5eb2d2=_0x219ca5['body']['sessionId'];return getAgent(_0xc410aa)[_0xc3e5('0x1e')](function(_0x383ced){logger['info'](_0xc3e5('0x30'),_0x383ced['name']);emit(util[_0xc3e5('0x36')]('user:%s',_0x383ced[_0xc3e5('0x1a')]),'webbar:hangup',{'sessionId':_0x5eb2d2});return _0x29ea43[_0xc3e5('0x1b')](0xc8)[_0xc3e5('0x33')]({'error':![],'message':_0xc3e5('0x37')});})[_0xc3e5('0x34')](handleError(_0x29ea43));};exports[_0xc3e5('0x38')]=function(_0x260ab4,_0x5dd895){logger['info'](_0xc3e5('0x39'),_0x260ab4['body']);var _0x3f0887=answerValidation[_0xc3e5('0xe')](_0x260ab4[_0xc3e5('0x2d')]);if(_0x3f0887[_0xc3e5('0x28')]>0x0){return _0x5dd895[_0xc3e5('0x1b')](0x190)[_0xc3e5('0x33')](_0x3f0887);}var _0x49b123=_0x260ab4[_0xc3e5('0x2d')][_0xc3e5('0x2e')];var _0xbbfcad=_0x260ab4[_0xc3e5('0x2d')][_0xc3e5('0x27')];return getAgent(_0x49b123)[_0xc3e5('0x1e')](function(_0x2d98fd){logger[_0xc3e5('0x2b')](_0xc3e5('0x30'),_0x2d98fd[_0xc3e5('0x1a')]);emit(util['format']('user:%s',_0x2d98fd['name']),_0xc3e5('0x3a'),{'sessionId':_0xbbfcad});return _0x5dd895['status'](0xc8)[_0xc3e5('0x33')]({'error':![],'message':_0xc3e5('0x3b')});})[_0xc3e5('0x34')](handleError(_0x5dd895));};exports[_0xc3e5('0x3c')]=function(_0x49d5d9,_0x432574){logger[_0xc3e5('0x2b')](_0xc3e5('0x3d'),_0x49d5d9[_0xc3e5('0x2d')]);var _0x55ab15=holdValidation['validate'](_0x49d5d9[_0xc3e5('0x2d')]);if(_0x55ab15[_0xc3e5('0x28')]>0x0){return _0x432574['status'](0x190)[_0xc3e5('0x33')](_0x55ab15);}var _0x4c9b0b=_0x49d5d9[_0xc3e5('0x2d')]['userId'];var _0x17e12f=_0x49d5d9['body']['sessionId'];return getAgent(_0x4c9b0b)['then'](function(_0x87855d){logger[_0xc3e5('0x2b')](_0xc3e5('0x30'),_0x87855d['name']);emit(util['format'](_0xc3e5('0x31'),_0x87855d['name']),_0xc3e5('0x3e'),{'sessionId':_0x17e12f});return _0x432574[_0xc3e5('0x1b')](0xc8)[_0xc3e5('0x33')]({'error':![],'message':_0xc3e5('0x3f')});})[_0xc3e5('0x34')](handleError(_0x432574));};exports[_0xc3e5('0x40')]=function(_0x5cd31c,_0x27924f){logger['info']('unhold\x20fired:',_0x5cd31c[_0xc3e5('0x2d')]);var _0x5c7fc8=unholdValidation[_0xc3e5('0xe')](_0x5cd31c['body']);if(_0x5c7fc8['length']>0x0){return _0x27924f[_0xc3e5('0x1b')](0x190)[_0xc3e5('0x33')](_0x5c7fc8);}var _0x525e5a=_0x5cd31c['body'][_0xc3e5('0x2e')];var _0x38e722=_0x5cd31c['body'][_0xc3e5('0x27')];return getAgent(_0x525e5a)[_0xc3e5('0x1e')](function(_0xbae80a){logger[_0xc3e5('0x2b')](_0xc3e5('0x30'),_0xbae80a[_0xc3e5('0x1a')]);emit(util[_0xc3e5('0x36')]('user:%s',_0xbae80a[_0xc3e5('0x1a')]),_0xc3e5('0x41'),{'sessionId':_0x38e722});return _0x27924f['status'](0xc8)['json']({'error':![],'message':_0xc3e5('0x42')});})[_0xc3e5('0x34')](handleError(_0x27924f));};exports['calls']=function(_0x50f6b7,_0x566ed0){logger['info'](_0xc3e5('0x43'),_0x566ed0[_0xc3e5('0x2d')]);var _0x474891=callsValidation[_0xc3e5('0xe')](_0x50f6b7[_0xc3e5('0x2d')]);if(_0x474891['length']>0x0){return _0x566ed0[_0xc3e5('0x1b')](0x190)[_0xc3e5('0x33')](_0x474891);}var _0x2d62b7=_0x50f6b7['body'][_0xc3e5('0x2e')];var _0x4079ef=respondWithRpcPromise(_0xc3e5('0x44'));var _0x1f32ee=getAgent(_0x2d62b7);return Promise[_0xc3e5('0x45')]([_0x4079ef,_0x1f32ee])['then'](function(_0x52be13){var _0x2a4396=_0x52be13[0x0];var _0x2efe19=_0x52be13[0x1];var _0x5c0f97=_[_0xc3e5('0x46')](_0x2a4396[_0xc3e5('0x25')],function(_0x5c8060){return _0x5c8060[_0xc3e5('0x26')]==_0x2efe19['id'];});return _0x566ed0[_0xc3e5('0x1b')](0xc8)[_0xc3e5('0x33')]({'count':_0x5c0f97[_0xc3e5('0x28')],'rows':_0x5c0f97});})[_0xc3e5('0x34')](handleError(_0x566ed0));};exports[_0xc3e5('0x47')]=function(_0x1fe284,_0xb132b4){logger['info'](_0xc3e5('0x48'),_0x1fe284[_0xc3e5('0x2d')]);var _0x3db9ac=conferenceValidation['validate'](_0x1fe284['body']);if(_0x3db9ac[_0xc3e5('0x28')]>0x0){return _0xb132b4[_0xc3e5('0x1b')](0x190)[_0xc3e5('0x33')](_0x3db9ac);}var _0x27157c=_0x1fe284[_0xc3e5('0x2d')][_0xc3e5('0x2e')];return getAgent(_0x27157c)['then'](function(_0x3876a5){logger['info'](_0xc3e5('0x30'),_0x3876a5[_0xc3e5('0x1a')]);emit(util[_0xc3e5('0x36')](_0xc3e5('0x31'),_0x3876a5[_0xc3e5('0x1a')]),_0xc3e5('0x49'));return _0xb132b4[_0xc3e5('0x1b')](0xc8)[_0xc3e5('0x33')]({'error':![],'message':_0xc3e5('0x4a')});})[_0xc3e5('0x34')](handleError(_0xb132b4));};exports['transfer']=function(_0x5ee3f6,_0x281415){logger[_0xc3e5('0x2b')](_0xc3e5('0x4b'),_0x5ee3f6[_0xc3e5('0x2d')]);var _0x198e90=transferValidation[_0xc3e5('0xe')](_0x5ee3f6[_0xc3e5('0x2d')]);if(_0x198e90[_0xc3e5('0x28')]>0x0){return _0x281415[_0xc3e5('0x1b')](0x190)['json'](_0x198e90);}var _0x5f2a1f=_0x5ee3f6[_0xc3e5('0x2d')][_0xc3e5('0x2e')];var _0x44bf4f=_0x5ee3f6[_0xc3e5('0x2d')]['sessionId'];var _0x2d184a=_0x5ee3f6[_0xc3e5('0x2d')]['transferNumber'];return getAgent(_0x5f2a1f)[_0xc3e5('0x1e')](function(_0x447bdc){logger[_0xc3e5('0x2b')](_0xc3e5('0x30'),_0x447bdc['name']);emit(util[_0xc3e5('0x36')](_0xc3e5('0x31'),_0x447bdc['name']),_0xc3e5('0x4c'),{'sessionId':_0x44bf4f,'transferNumber':_0x2d184a});return _0x281415[_0xc3e5('0x1b')](0xc8)[_0xc3e5('0x33')]({'error':![],'message':_0xc3e5('0x4d')});})[_0xc3e5('0x34')](handleError(_0x281415));};
\ No newline at end of file
index e6ab8e8..3d9c1fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39f5=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','/describe','describe','get','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/users','getAgents','/:id/applications','getApplications','post','create','addAnswer','addAgents','addApplications','notify','send','put','update','delete','removeDispositions','removeAnswers','removeAgents'];(function(_0x5184ae,_0x520830){var _0x3b2fdc=function(_0x42ec74){while(--_0x42ec74){_0x5184ae['push'](_0x5184ae['shift']());}};_0x3b2fdc(++_0x520830);}(_0x39f5,0x110));var _0x539f=function(_0x5212c9,_0x30b896){_0x5212c9=_0x5212c9-0x0;var _0x447a7f=_0x39f5[_0x5212c9];return _0x447a7f;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x539f('0x0'));var timeout=require(_0x539f('0x1'));var express=require(_0x539f('0x2'));var router=express[_0x539f('0x3')]();var fs_extra=require(_0x539f('0x4'));var auth=require(_0x539f('0x5'));var interaction=require(_0x539f('0x6'));var config=require(_0x539f('0x7'));var controller=require('./whatsappAccount.controller');router['get']('/',auth[_0x539f('0x8')](),controller['index']);router['get'](_0x539f('0x9'),auth[_0x539f('0x8')](),controller[_0x539f('0xa')]);router[_0x539f('0xb')](_0x539f('0xc'),auth[_0x539f('0x8')](),controller[_0x539f('0xd')]);router[_0x539f('0xb')](_0x539f('0xe'),auth['isAuthenticated'](),controller[_0x539f('0xf')]);router[_0x539f('0xb')](_0x539f('0x10'),auth['isAuthenticated'](),controller['getAnswers']);router[_0x539f('0xb')](_0x539f('0x11'),auth[_0x539f('0x8')](),controller[_0x539f('0x12')]);router[_0x539f('0xb')](_0x539f('0x13'),auth[_0x539f('0x8')](),controller[_0x539f('0x14')]);router[_0x539f('0x15')]('/',auth[_0x539f('0x8')](),controller[_0x539f('0x16')]);router[_0x539f('0x15')](_0x539f('0xe'),auth[_0x539f('0x8')](),controller['addDisposition']);router[_0x539f('0x15')](_0x539f('0x10'),auth['isAuthenticated'](),controller[_0x539f('0x17')]);router[_0x539f('0x15')]('/:id/users',auth[_0x539f('0x8')](),controller[_0x539f('0x18')]);router[_0x539f('0x15')](_0x539f('0x13'),auth[_0x539f('0x8')](),controller[_0x539f('0x19')]);router[_0x539f('0x15')]('/:id/notify',controller[_0x539f('0x1a')]);router[_0x539f('0x15')]('/:id/send',auth[_0x539f('0x8')](),controller[_0x539f('0x1b')]);router[_0x539f('0x1c')](_0x539f('0xc'),auth[_0x539f('0x8')](),controller[_0x539f('0x1d')]);router[_0x539f('0x1e')](_0x539f('0xc'),auth[_0x539f('0x8')](),controller['destroy']);router[_0x539f('0x1e')]('/:id/dispositions',auth[_0x539f('0x8')](),controller[_0x539f('0x1f')]);router['delete'](_0x539f('0x10'),auth[_0x539f('0x8')](),controller[_0x539f('0x20')]);router[_0x539f('0x1e')](_0x539f('0x11'),auth[_0x539f('0x8')](),controller[_0x539f('0x21')]);module['exports']=router;
\ No newline at end of file
+var _0x20f6=['/:id/canned_answers','/:id/applications','getApplications','create','post','addDisposition','addAnswer','addAgents','addApplications','/:id/notify','notify','put','update','delete','destroy','removeAnswers','/:id/users','removeAgents','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getDispositions'];(function(_0x3725ee,_0x543bd9){var _0x399c71=function(_0xaf9400){while(--_0xaf9400){_0x3725ee['push'](_0x3725ee['shift']());}};_0x399c71(++_0x543bd9);}(_0x20f6,0x160));var _0x620f=function(_0x2cd7c9,_0x3c028d){_0x2cd7c9=_0x2cd7c9-0x0;var _0x267424=_0x20f6[_0x2cd7c9];return _0x267424;};'use strict';var multer=require(_0x620f('0x0'));var util=require('util');var path=require(_0x620f('0x1'));var timeout=require(_0x620f('0x2'));var express=require(_0x620f('0x3'));var router=express[_0x620f('0x4')]();var fs_extra=require(_0x620f('0x5'));var auth=require(_0x620f('0x6'));var interaction=require(_0x620f('0x7'));var config=require(_0x620f('0x8'));var controller=require(_0x620f('0x9'));router[_0x620f('0xa')]('/',auth[_0x620f('0xb')](),controller[_0x620f('0xc')]);router[_0x620f('0xa')](_0x620f('0xd'),auth[_0x620f('0xb')](),controller['describe']);router[_0x620f('0xa')](_0x620f('0xe'),auth[_0x620f('0xb')](),controller[_0x620f('0xf')]);router[_0x620f('0xa')](_0x620f('0x10'),auth[_0x620f('0xb')](),controller[_0x620f('0x11')]);router[_0x620f('0xa')](_0x620f('0x12'),auth[_0x620f('0xb')](),controller['getAnswers']);router['get']('/:id/users',auth[_0x620f('0xb')](),controller['getAgents']);router[_0x620f('0xa')](_0x620f('0x13'),auth[_0x620f('0xb')](),controller[_0x620f('0x14')]);router['post']('/',auth[_0x620f('0xb')](),controller[_0x620f('0x15')]);router[_0x620f('0x16')](_0x620f('0x10'),auth[_0x620f('0xb')](),controller[_0x620f('0x17')]);router[_0x620f('0x16')](_0x620f('0x12'),auth[_0x620f('0xb')](),controller[_0x620f('0x18')]);router[_0x620f('0x16')]('/:id/users',auth[_0x620f('0xb')](),controller[_0x620f('0x19')]);router[_0x620f('0x16')](_0x620f('0x13'),auth['isAuthenticated'](),controller[_0x620f('0x1a')]);router[_0x620f('0x16')](_0x620f('0x1b'),controller[_0x620f('0x1c')]);router['post']('/:id/send',auth[_0x620f('0xb')](),controller['send']);router[_0x620f('0x1d')](_0x620f('0xe'),auth[_0x620f('0xb')](),controller[_0x620f('0x1e')]);router[_0x620f('0x1f')]('/:id',auth[_0x620f('0xb')](),controller[_0x620f('0x20')]);router[_0x620f('0x1f')](_0x620f('0x10'),auth[_0x620f('0xb')](),controller['removeDispositions']);router['delete']('/:id/canned_answers',auth[_0x620f('0xb')](),controller[_0x620f('0x21')]);router[_0x620f('0x1f')](_0x620f('0x22'),auth[_0x620f('0xb')](),controller[_0x620f('0x23')]);module[_0x620f('0x24')]=router;
\ No newline at end of file
index 7a074e0..b0f09d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c00=['mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','STRING','name','generate','ENUM','twilio','sinch','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue'];(function(_0x176b6c,_0x1c8db3){var _0x24aa00=function(_0x39c91d){while(--_0x39c91d){_0x176b6c['push'](_0x176b6c['shift']());}};_0x24aa00(++_0x1c8db3);}(_0x4c00,0x1c2));var _0x04c0=function(_0x39941c,_0x4ad1bb){_0x39941c=_0x39941c-0x0;var _0x52d9c7=_0x4c00[_0x39941c];return _0x52d9c7;};'use strict';var Sequelize=require(_0x04c0('0x0'));var rs=require(_0x04c0('0x1'));module['exports']={'name':{'type':Sequelize[_0x04c0('0x2')],'unique':_0x04c0('0x3'),'allowNull':![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'remote':{'type':Sequelize[_0x04c0('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x04c0('0x2')],'defaultValue':function(){return rs[_0x04c0('0x4')]();}},'phone':{'type':Sequelize[_0x04c0('0x2')]},'type':{'type':Sequelize[_0x04c0('0x5')](_0x04c0('0x6'),_0x04c0('0x7'))},'accountSid':{'type':Sequelize[_0x04c0('0x2')]},'baseUrl':{'type':Sequelize[_0x04c0('0x2')]},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x04c0('0x8');}},'notificationSound':{'type':Sequelize[_0x04c0('0x9')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x04c0('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x04c0('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0x04c0('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x04c0('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x04c0('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x04c0('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x04c0('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x04c0('0xa')],'comment':_0x04c0('0xb')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x04c0('0xc'),'set':function(_0x2702c3){if(!_0x2702c3){this[_0x04c0('0xd')](_0x04c0('0xe'),null);}this[_0x04c0('0xd')](_0x04c0('0xf'),_0x2702c3);}},'description':{'type':Sequelize[_0x04c0('0x2')]}};
\ No newline at end of file
+var _0x9483=['INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','setDataValue','sequelize','exports','STRING','name','generate','ENUM','twilio','sinch','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9483,0x154));var _0x3948=function(_0x4cf823,_0x3470cf){_0x4cf823=_0x4cf823-0x0;var _0x2adc5e=_0x9483[_0x4cf823];return _0x2adc5e;};'use strict';var Sequelize=require(_0x3948('0x0'));var rs=require('randomstring');module[_0x3948('0x1')]={'name':{'type':Sequelize[_0x3948('0x2')],'unique':_0x3948('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x3948('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x3948('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x3948('0x2')],'defaultValue':function(){return rs[_0x3948('0x4')]();}},'phone':{'type':Sequelize[_0x3948('0x2')]},'type':{'type':Sequelize[_0x3948('0x5')](_0x3948('0x6'),_0x3948('0x7'))},'accountSid':{'type':Sequelize[_0x3948('0x2')]},'baseUrl':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x3948('0x8');}},'notificationSound':{'type':Sequelize[_0x3948('0x9')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x3948('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'waitForTheAssignedQueue':{'type':Sequelize[_0x3948('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x3948('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x3948('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x3948('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x3948('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x3948('0xa')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0x3948('0x9')],'defaultValue':![],'comment':_0x3948('0xb'),'set':function(_0x462c05){if(!_0x462c05){this['setDataValue'](_0x3948('0xc'),null);}this[_0x3948('0xd')]('mandatoryDisposition',_0x462c05);}},'description':{'type':Sequelize[_0x3948('0x2')]}};
\ No newline at end of file
index 2110502..4dcee28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8aad=['query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','filter','options','include','findAll','rows','show','params','includeAll','find','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','findOne','order','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','addAgents','spread','removeAgents','isArray','emit','userWhatsappAccount:remove','getAgents','User','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','WhatsappApplication','bulkCreate','findAndCountAll','priority','finally','send','getApplications','notify','whatsapp','Applications','account','type','statuses','read','WhatsappMessage','timestamp','message_id','applications','orderBy','Sequelize','ValidationError','difference','updatedAt','CompanyId','ListId','mobile','twilio','from','From','replace','whatsapp:','Body','MessageSid','sinch','notifications','messageId','isNil','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','CmContact','Contacts','DESC','list','contact','WhatsappInteraction','interaction','created','close','unmanaged','*,*,*,*','ContactId','UserId','unshift','queueId','WhatsappQueue','queue','waitForTheAssignedQueue','startRouting','receiveMessage','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','entity\x20found','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','dataValues','Messages','push','eml-format','rimraf','fast-json-patch','moment','bluebird','path','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','save','update','destroy','WhatsappAccounts','UserProfileResource','stack','name','Pause','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','fieldName','key','model'];(function(_0x36926b,_0x57b997){var _0x537652=function(_0x549445){while(--_0x549445){_0x36926b['push'](_0x36926b['shift']());}};_0x537652(++_0x57b997);}(_0x8aad,0x146));var _0xd8aa=function(_0x35ab83,_0x54ed7a){_0x35ab83=_0x35ab83-0x0;var _0x29261c=_0x8aad[_0x35ab83];return _0x29261c;};'use strict';var emlformat=require(_0xd8aa('0x0'));var rimraf=require(_0xd8aa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd8aa('0x2'));var rp=require('request-promise');var moment=require(_0xd8aa('0x3'));var BPromise=require(_0xd8aa('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd8aa('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd8aa('0x6'));var fs=require('fs');var fs_extra=require(_0xd8aa('0x7'));var _=require(_0xd8aa('0x8'));var squel=require('squel');var crypto=require(_0xd8aa('0x9'));var jsforce=require(_0xd8aa('0xa'));var deskjs=require(_0xd8aa('0xb'));var toCsv=require(_0xd8aa('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd8aa('0xd'));var authService=require(_0xd8aa('0xe'));var qs=require(_0xd8aa('0xf'));var as=require(_0xd8aa('0x10'));var hardwareService=require(_0xd8aa('0x11'));var logger=require('../../config/logger')(_0xd8aa('0x12'));var utils=require(_0xd8aa('0x13'));var config=require(_0xd8aa('0x14'));var licenseUtil=require(_0xd8aa('0x15'));var db=require(_0xd8aa('0x16'))['db'];config[_0xd8aa('0x17')]=_[_0xd8aa('0x18')](config[_0xd8aa('0x17')],{'host':_0xd8aa('0x19'),'port':0x18eb});var socket=require(_0xd8aa('0x1a'))(new Redis(config['redis']));require('./whatsappAccount.socket')[_0xd8aa('0x1b')](socket);var jayson=require(_0xd8aa('0x1c'));var client=jayson[_0xd8aa('0x1d')]['http']({'port':0x232c});function respondWithRpcPromise(_0x2678ed,_0x180c56,_0x39b5bc,_0x404ed6){return new BPromise(function(_0x47a0e3,_0x476930){var _0xa9ba1b=_0x404ed6||client;return _0xa9ba1b['request'](_0x2678ed,_0x39b5bc)[_0xd8aa('0x1e')](function(_0x223a34){logger[_0xd8aa('0x1f')](_0xd8aa('0x20'),_0x180c56,_0xd8aa('0x21'));logger['debug'](_0xd8aa('0x22'),_0x180c56,_0xd8aa('0x21'),JSON[_0xd8aa('0x23')](_0x223a34));if(_0x223a34[_0xd8aa('0x24')]){if(_0x223a34['error'][_0xd8aa('0x25')]===0x1f4){logger[_0xd8aa('0x24')](_0xd8aa('0x20'),_0x180c56,_0x223a34[_0xd8aa('0x24')][_0xd8aa('0x26')]);return _0x476930(_0x223a34['error'][_0xd8aa('0x26')]);}logger[_0xd8aa('0x24')](_0xd8aa('0x20'),_0x180c56,_0x223a34['error'][_0xd8aa('0x26')]);return _0x47a0e3(_0x223a34[_0xd8aa('0x24')][_0xd8aa('0x26')]);}else{logger[_0xd8aa('0x1f')](_0xd8aa('0x20'),_0x180c56,_0xd8aa('0x21'));_0x47a0e3(_0x223a34[_0xd8aa('0x27')][_0xd8aa('0x26')]);}})[_0xd8aa('0x28')](function(_0x210176){logger[_0xd8aa('0x24')](_0xd8aa('0x20'),_0x180c56,_0x210176);_0x476930(_0x210176);});});}function respondWithStatusCode(_0x26cc66,_0x5f1027){_0x5f1027=_0x5f1027||0xcc;return function(_0x1f066a){if(_0x1f066a){return _0x26cc66[_0xd8aa('0x29')](_0x5f1027);}return _0x26cc66[_0xd8aa('0x2a')](_0x5f1027)[_0xd8aa('0x2b')]();};}function respondWithResult(_0x26cff3,_0x3696fd){_0x3696fd=_0x3696fd||0xc8;return function(_0x26ab06){if(_0x26ab06){return _0x26cff3[_0xd8aa('0x2a')](_0x3696fd)[_0xd8aa('0x2c')](_0x26ab06);}};}function respondWithFilteredResult(_0xbe531,_0x4cdb90){return function(_0x1f2a28){if(_0x1f2a28){var _0x34b792=typeof _0x4cdb90[_0xd8aa('0x2d')]==='undefined'&&typeof _0x4cdb90[_0xd8aa('0x2e')]==='undefined';var _0x3052c6=_0x1f2a28[_0xd8aa('0x2f')];var _0x37902c=_0x34b792?0x0:_0x4cdb90[_0xd8aa('0x2d')];var _0x44f783=_0x34b792?_0x1f2a28[_0xd8aa('0x2f')]:_0x4cdb90[_0xd8aa('0x2d')]+_0x4cdb90[_0xd8aa('0x2e')];var _0x5e41e6;if(_0x44f783>=_0x3052c6){_0x44f783=_0x3052c6;_0x5e41e6=0xc8;}else{_0x5e41e6=0xce;}_0xbe531[_0xd8aa('0x2a')](_0x5e41e6);return _0xbe531[_0xd8aa('0x30')](_0xd8aa('0x31'),_0x37902c+'-'+_0x44f783+'/'+_0x3052c6)[_0xd8aa('0x2c')](_0x1f2a28);}return null;};}function patchUpdates(_0x1b475a){return function(_0x3b8476){try{jsonpatch[_0xd8aa('0x32')](_0x3b8476,_0x1b475a,!![]);}catch(_0x3133fb){return BPromise['reject'](_0x3133fb);}return _0x3b8476[_0xd8aa('0x33')]();};}function saveUpdates(_0x172673,_0x47401e){return function(_0x511b4a){if(_0x511b4a){return _0x511b4a[_0xd8aa('0x34')](_0x172673)[_0xd8aa('0x1e')](function(_0x21f550){return _0x21f550;});}return null;};}function removeEntity(_0x45c216,_0x249564){return function(_0x25672a){if(_0x25672a){return _0x25672a[_0xd8aa('0x35')]()[_0xd8aa('0x1e')](function(){var _0x980091=_0x25672a['get']({'plain':!![]});var _0xc35d92=_0xd8aa('0x36');return db[_0xd8aa('0x37')][_0xd8aa('0x35')]({'where':{'type':_0xc35d92,'resourceId':_0x980091['id']}})[_0xd8aa('0x1e')](function(){return _0x25672a;});})[_0xd8aa('0x1e')](function(){_0x45c216[_0xd8aa('0x2a')](0xcc)[_0xd8aa('0x2b')]();});}};}function handleEntityNotFound(_0xb8bfe6,_0x5983f6){return function(_0x1df47c){if(!_0x1df47c){_0xb8bfe6['sendStatus'](0x194);}return _0x1df47c;};}function handleError(_0x18d7fe,_0x1bb798){_0x1bb798=_0x1bb798||0x1f4;return function(_0x4ed01e){logger[_0xd8aa('0x24')](_0x4ed01e[_0xd8aa('0x38')]);if(_0x4ed01e[_0xd8aa('0x39')]){delete _0x4ed01e[_0xd8aa('0x39')];}_0x18d7fe[_0xd8aa('0x2a')](_0x1bb798)['send'](_0x4ed01e);};}exports['index']=function(_0x25145c,_0x4debd0){var _0x25f091={'include':[{'model':db[_0xd8aa('0x3a')],'as':_0xd8aa('0x3b')}]},_0x7a6df2={},_0x8ffbe1={'count':0x0,'rows':[]};var _0x3430ae=_[_0xd8aa('0x3c')](db[_0xd8aa('0x3d')][_0xd8aa('0x3e')],function(_0xa34bea){return{'name':_0xa34bea[_0xd8aa('0x3f')],'type':_0xa34bea['type'][_0xd8aa('0x40')]};});_0x7a6df2[_0xd8aa('0x41')]=_[_0xd8aa('0x3c')](_0x3430ae,'name');_0x7a6df2[_0xd8aa('0x42')]=_[_0xd8aa('0x43')](_0x25145c[_0xd8aa('0x42')]);_0x7a6df2[_0xd8aa('0x44')]=_[_0xd8aa('0x45')](_0x7a6df2[_0xd8aa('0x41')],_0x7a6df2[_0xd8aa('0x42')]);_0x25f091[_0xd8aa('0x46')]=_[_0xd8aa('0x45')](_0x7a6df2[_0xd8aa('0x41')],qs[_0xd8aa('0x47')](_0x25145c[_0xd8aa('0x42')][_0xd8aa('0x47')]));_0x25f091[_0xd8aa('0x46')]=_0x25f091[_0xd8aa('0x46')][_0xd8aa('0x48')]?_0x25f091[_0xd8aa('0x46')]:_0x7a6df2[_0xd8aa('0x41')];if(!_0x25145c['query'][_0xd8aa('0x49')](_0xd8aa('0x4a'))){_0x25f091[_0xd8aa('0x2e')]=qs[_0xd8aa('0x2e')](_0x25145c[_0xd8aa('0x42')][_0xd8aa('0x2e')]);_0x25f091['offset']=qs[_0xd8aa('0x2d')](_0x25145c['query'][_0xd8aa('0x2d')]);}_0x25f091['order']=qs[_0xd8aa('0x4b')](_0x25145c['query']['sort']);_0x25f091[_0xd8aa('0x4c')]=qs[_0xd8aa('0x44')](_[_0xd8aa('0x4d')](_0x25145c[_0xd8aa('0x42')],_0x7a6df2[_0xd8aa('0x44')]),_0x3430ae);if(_0x25145c[_0xd8aa('0x42')]['filter']){_0x25f091[_0xd8aa('0x4c')]=_[_0xd8aa('0x4e')](_0x25f091[_0xd8aa('0x4c')],{'$or':_[_0xd8aa('0x3c')](_0x3430ae,function(_0x269395){if(_0x269395['type']!=='VIRTUAL'){var _0x58cf42={};_0x58cf42[_0x269395[_0xd8aa('0x39')]]={'$like':'%'+_0x25145c[_0xd8aa('0x42')][_0xd8aa('0x4f')]+'%'};return _0x58cf42;}})});}_0x25f091=_[_0xd8aa('0x4e')]({},_0x25f091,_0x25145c[_0xd8aa('0x50')]);var _0xabc36d={'where':_0x25f091['where']};return db[_0xd8aa('0x3d')][_0xd8aa('0x2f')](_0xabc36d)['then'](function(_0x2ad21f){_0x8ffbe1[_0xd8aa('0x2f')]=_0x2ad21f;if(_0x25145c[_0xd8aa('0x42')]['includeAll']){_0x25f091[_0xd8aa('0x51')]=[{'all':!![]}];}return db[_0xd8aa('0x3d')][_0xd8aa('0x52')](_0x25f091);})[_0xd8aa('0x1e')](function(_0x1c6a21){_0x8ffbe1[_0xd8aa('0x53')]=_0x1c6a21;return _0x8ffbe1;})['then'](respondWithFilteredResult(_0x4debd0,_0x25f091))['catch'](handleError(_0x4debd0,null));};exports[_0xd8aa('0x54')]=function(_0x2b5a82,_0x361d5d){var _0x1ea58a={'raw':![],'where':{'id':_0x2b5a82[_0xd8aa('0x55')]['id']},'include':[{'model':db[_0xd8aa('0x3a')],'as':'mandatoryDispositionPause'}]},_0xe810a1={};_0xe810a1[_0xd8aa('0x41')]=_[_0xd8aa('0x43')](db['WhatsappAccount'][_0xd8aa('0x3e')]);_0xe810a1['query']=_[_0xd8aa('0x43')](_0x2b5a82[_0xd8aa('0x42')]);_0xe810a1[_0xd8aa('0x44')]=_['intersection'](_0xe810a1['model'],_0xe810a1['query']);_0x1ea58a['attributes']=_[_0xd8aa('0x45')](_0xe810a1[_0xd8aa('0x41')],qs[_0xd8aa('0x47')](_0x2b5a82['query']['fields']));_0x1ea58a['attributes']=_0x1ea58a[_0xd8aa('0x46')][_0xd8aa('0x48')]?_0x1ea58a[_0xd8aa('0x46')]:_0xe810a1[_0xd8aa('0x41')];if(_0x2b5a82[_0xd8aa('0x42')][_0xd8aa('0x56')]){_0x1ea58a[_0xd8aa('0x51')]=[{'all':!![]}];}_0x1ea58a=_[_0xd8aa('0x4e')]({},_0x1ea58a,_0x2b5a82[_0xd8aa('0x50')]);return db[_0xd8aa('0x3d')][_0xd8aa('0x57')](_0x1ea58a)[_0xd8aa('0x1e')](handleEntityNotFound(_0x361d5d,null))[_0xd8aa('0x1e')](respondWithResult(_0x361d5d,null))['catch'](handleError(_0x361d5d,null));};exports['create']=function(_0x46eaeb,_0x361118){return db[_0xd8aa('0x3d')][_0xd8aa('0x58')](_0x46eaeb['body'],{})[_0xd8aa('0x1e')](function(_0x34efde){var _0x5875df=_0x46eaeb['user'][_0xd8aa('0x59')]({'plain':!![]});if(!_0x5875df)throw new Error(_0xd8aa('0x5a'));if(_0x5875df[_0xd8aa('0x5b')]===_0xd8aa('0x5c')){var _0x54aaef=_0x34efde['get']({'plain':!![]});var _0x38780f='WhatsappAccounts';return db[_0xd8aa('0x5d')][_0xd8aa('0x57')]({'where':{'name':_0x38780f,'userProfileId':_0x5875df[_0xd8aa('0x5e')]},'raw':!![]})[_0xd8aa('0x1e')](function(_0x158eee){if(_0x158eee&&_0x158eee[_0xd8aa('0x5f')]===0x0){return db['UserProfileResource'][_0xd8aa('0x58')]({'name':_0x54aaef[_0xd8aa('0x39')],'resourceId':_0x54aaef['id'],'type':_0x158eee[_0xd8aa('0x39')],'sectionId':_0x158eee['id']},{})[_0xd8aa('0x1e')](function(){return _0x34efde;});}else{return _0x34efde;}})[_0xd8aa('0x28')](function(_0x170954){logger[_0xd8aa('0x24')](_0xd8aa('0x60'),_0x170954);throw _0x170954;});}return _0x34efde;})[_0xd8aa('0x1e')](respondWithResult(_0x361118,0xc9))[_0xd8aa('0x28')](handleError(_0x361118,null));};exports[_0xd8aa('0x34')]=function(_0x447c75,_0x167532){if(_0x447c75[_0xd8aa('0x61')]['id']){delete _0x447c75[_0xd8aa('0x61')]['id'];}return db[_0xd8aa('0x3d')][_0xd8aa('0x57')]({'where':{'id':_0x447c75[_0xd8aa('0x55')]['id']},'include':[{'model':db[_0xd8aa('0x3a')],'as':_0xd8aa('0x3b')}]})[_0xd8aa('0x1e')](handleEntityNotFound(_0x167532,null))['then'](saveUpdates(_0x447c75['body'],null))['then'](respondWithResult(_0x167532,null))[_0xd8aa('0x28')](handleError(_0x167532,null));};exports['destroy']=function(_0xee4dc2,_0xcda805){return db[_0xd8aa('0x3d')][_0xd8aa('0x57')]({'where':{'id':_0xee4dc2[_0xd8aa('0x55')]['id']}})[_0xd8aa('0x1e')](handleEntityNotFound(_0xcda805,null))[_0xd8aa('0x1e')](removeEntity(_0xcda805,null))[_0xd8aa('0x28')](handleError(_0xcda805,null));};exports[_0xd8aa('0x62')]=function(_0x3ef3c8,_0x1824fa){return db['WhatsappAccount']['describe']()[_0xd8aa('0x1e')](respondWithResult(_0x1824fa,null))['catch'](handleError(_0x1824fa,null));};exports[_0xd8aa('0x63')]=function(_0x57d1c3,_0x532db9,_0x288740){if(_0x57d1c3[_0xd8aa('0x61')]['id']){delete _0x57d1c3[_0xd8aa('0x61')]['id'];}return db[_0xd8aa('0x3d')]['find']({'where':{'id':_0x57d1c3[_0xd8aa('0x55')]['id']}})[_0xd8aa('0x1e')](handleEntityNotFound(_0x532db9,null))[_0xd8aa('0x1e')](function(_0x9f73cf){if(_0x9f73cf){_0x57d1c3[_0xd8aa('0x61')][_0xd8aa('0x64')]=_0x9f73cf['id'];return db[_0xd8aa('0x65')][_0xd8aa('0x58')](_0x57d1c3[_0xd8aa('0x61')]);}})[_0xd8aa('0x1e')](respondWithResult(_0x532db9,null))['catch'](handleError(_0x532db9,null));};exports[_0xd8aa('0x66')]=function(_0x4102a3,_0x19651c,_0x588880){var _0x54574c={'raw':![],'where':{}};var _0x6a8bb1={};var _0xeb3f52={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0xd8aa('0x67')]({'where':{'id':_0x4102a3[_0xd8aa('0x55')]['id']}})[_0xd8aa('0x1e')](handleEntityNotFound(_0x19651c,null))[_0xd8aa('0x1e')](function(_0x425524){if(_0x425524){_0x6a8bb1[_0xd8aa('0x41')]=_[_0xd8aa('0x43')](db['Disposition'][_0xd8aa('0x3e')]);_0x6a8bb1[_0xd8aa('0x42')]=_[_0xd8aa('0x43')](_0x4102a3[_0xd8aa('0x42')]);_0x6a8bb1[_0xd8aa('0x44')]=_[_0xd8aa('0x45')](_0x6a8bb1[_0xd8aa('0x41')],_0x6a8bb1[_0xd8aa('0x42')]);_0x54574c['attributes']=_[_0xd8aa('0x45')](_0x6a8bb1[_0xd8aa('0x41')],qs[_0xd8aa('0x47')](_0x4102a3['query'][_0xd8aa('0x47')]));_0x54574c[_0xd8aa('0x46')]=_0x54574c[_0xd8aa('0x46')][_0xd8aa('0x48')]?_0x54574c[_0xd8aa('0x46')]:_0x6a8bb1[_0xd8aa('0x41')];if(!_0x4102a3[_0xd8aa('0x42')][_0xd8aa('0x49')](_0xd8aa('0x4a'))){_0x54574c[_0xd8aa('0x2e')]=qs[_0xd8aa('0x2e')](_0x4102a3[_0xd8aa('0x42')][_0xd8aa('0x2e')]);_0x54574c[_0xd8aa('0x2d')]=qs[_0xd8aa('0x2d')](_0x4102a3[_0xd8aa('0x42')][_0xd8aa('0x2d')]);}_0x54574c[_0xd8aa('0x68')]=qs['sort'](_0x4102a3[_0xd8aa('0x42')][_0xd8aa('0x4b')]);_0x54574c[_0xd8aa('0x4c')]=qs[_0xd8aa('0x44')](_['pick'](_0x4102a3[_0xd8aa('0x42')],_0x6a8bb1[_0xd8aa('0x44')]));_0x54574c[_0xd8aa('0x4c')][_0xd8aa('0x64')]=_0x425524['id'];if(_0x4102a3['query'][_0xd8aa('0x4f')]){_0x54574c['where']=_[_0xd8aa('0x4e')](_0x54574c[_0xd8aa('0x4c')],{'$or':_[_0xd8aa('0x3c')](_0x54574c[_0xd8aa('0x46')],function(_0xd02eb6){var _0xabf19e={};_0xabf19e[_0xd02eb6]={'$like':'%'+_0x4102a3[_0xd8aa('0x42')]['filter']+'%'};return _0xabf19e;})});}_0x54574c=_['merge']({},_0x54574c,_0x4102a3[_0xd8aa('0x50')]);return db[_0xd8aa('0x65')][_0xd8aa('0x2f')]({'where':_0x54574c['where']})[_0xd8aa('0x1e')](function(_0x4215b8){_0xeb3f52[_0xd8aa('0x2f')]=_0x4215b8;if(_0x4102a3[_0xd8aa('0x42')][_0xd8aa('0x56')]){_0x54574c['include']=[{'all':!![]}];}return db['Disposition'][_0xd8aa('0x52')](_0x54574c);})['then'](function(_0x2870e9){_0xeb3f52[_0xd8aa('0x53')]=_0x2870e9;return _0xeb3f52;});}})[_0xd8aa('0x1e')](respondWithFilteredResult(_0x19651c,_0x54574c))[_0xd8aa('0x28')](handleError(_0x19651c,null));};exports[_0xd8aa('0x69')]=function(_0x29bfd6,_0x49d5ab,_0xd23e6b){return db[_0xd8aa('0x3d')][_0xd8aa('0x57')]({'where':{'id':_0x29bfd6['params']['id']}})['then'](handleEntityNotFound(_0x49d5ab,null))['then'](function(_0x5133c2){if(_0x5133c2){return _0x5133c2[_0xd8aa('0x69')](_0x29bfd6[_0xd8aa('0x42')]['ids']);}})['then'](respondWithStatusCode(_0x49d5ab,null))[_0xd8aa('0x28')](handleError(_0x49d5ab,null));};exports[_0xd8aa('0x6a')]=function(_0x5f0700,_0x52ffaf,_0x29d8de){if(_0x5f0700[_0xd8aa('0x61')]['id']){delete _0x5f0700[_0xd8aa('0x61')]['id'];}return db['WhatsappAccount']['find']({'where':{'id':_0x5f0700[_0xd8aa('0x55')]['id']}})[_0xd8aa('0x1e')](handleEntityNotFound(_0x52ffaf,null))[_0xd8aa('0x1e')](function(_0x205bf6){if(_0x205bf6){_0x5f0700[_0xd8aa('0x61')][_0xd8aa('0x64')]=_0x205bf6['id'];return db[_0xd8aa('0x6b')][_0xd8aa('0x58')](_0x5f0700[_0xd8aa('0x61')]);}})[_0xd8aa('0x1e')](respondWithResult(_0x52ffaf,null))[_0xd8aa('0x28')](handleError(_0x52ffaf,null));};exports[_0xd8aa('0x6c')]=function(_0x1c6e62,_0x3bb8f6,_0x3b2958){var _0x3a37bf={'raw':![],'where':{}};var _0x522d5c={};var _0x262913={'count':0x0,'rows':[]};return db[_0xd8aa('0x3d')]['findOne']({'where':{'id':_0x1c6e62[_0xd8aa('0x55')]['id']}})[_0xd8aa('0x1e')](handleEntityNotFound(_0x3bb8f6,null))[_0xd8aa('0x1e')](function(_0x141043){if(_0x141043){_0x522d5c[_0xd8aa('0x41')]=_['keys'](db[_0xd8aa('0x6b')][_0xd8aa('0x3e')]);_0x522d5c['query']=_[_0xd8aa('0x43')](_0x1c6e62[_0xd8aa('0x42')]);_0x522d5c['filters']=_[_0xd8aa('0x45')](_0x522d5c[_0xd8aa('0x41')],_0x522d5c[_0xd8aa('0x42')]);_0x3a37bf[_0xd8aa('0x46')]=_[_0xd8aa('0x45')](_0x522d5c[_0xd8aa('0x41')],qs['fields'](_0x1c6e62[_0xd8aa('0x42')][_0xd8aa('0x47')]));_0x3a37bf[_0xd8aa('0x46')]=_0x3a37bf[_0xd8aa('0x46')][_0xd8aa('0x48')]?_0x3a37bf['attributes']:_0x522d5c[_0xd8aa('0x41')];if(!_0x1c6e62['query'][_0xd8aa('0x49')](_0xd8aa('0x4a'))){_0x3a37bf[_0xd8aa('0x2e')]=qs[_0xd8aa('0x2e')](_0x1c6e62['query'][_0xd8aa('0x2e')]);_0x3a37bf[_0xd8aa('0x2d')]=qs[_0xd8aa('0x2d')](_0x1c6e62[_0xd8aa('0x42')]['offset']);}_0x3a37bf[_0xd8aa('0x68')]=qs[_0xd8aa('0x4b')](_0x1c6e62[_0xd8aa('0x42')][_0xd8aa('0x4b')]);_0x3a37bf[_0xd8aa('0x4c')]=qs['filters'](_['pick'](_0x1c6e62[_0xd8aa('0x42')],_0x522d5c[_0xd8aa('0x44')]));_0x3a37bf[_0xd8aa('0x4c')][_0xd8aa('0x64')]=_0x141043['id'];if(_0x1c6e62[_0xd8aa('0x42')][_0xd8aa('0x4f')]){_0x3a37bf[_0xd8aa('0x4c')]=_['merge'](_0x3a37bf[_0xd8aa('0x4c')],{'$or':_[_0xd8aa('0x3c')](_0x3a37bf['attributes'],function(_0x5027aa){var _0x1add1f={};_0x1add1f[_0x5027aa]={'$like':'%'+_0x1c6e62['query'][_0xd8aa('0x4f')]+'%'};return _0x1add1f;})});}_0x3a37bf=_[_0xd8aa('0x4e')]({},_0x3a37bf,_0x1c6e62[_0xd8aa('0x50')]);return db[_0xd8aa('0x6b')][_0xd8aa('0x2f')]({'where':_0x3a37bf[_0xd8aa('0x4c')]})['then'](function(_0x5e6075){_0x262913['count']=_0x5e6075;if(_0x1c6e62[_0xd8aa('0x42')][_0xd8aa('0x56')]){_0x3a37bf[_0xd8aa('0x51')]=[{'all':!![]}];}return db[_0xd8aa('0x6b')]['findAll'](_0x3a37bf);})[_0xd8aa('0x1e')](function(_0x3c58fc){_0x262913['rows']=_0x3c58fc;return _0x262913;});}})[_0xd8aa('0x1e')](respondWithFilteredResult(_0x3bb8f6,_0x3a37bf))[_0xd8aa('0x28')](handleError(_0x3bb8f6,null));};exports[_0xd8aa('0x6d')]=function(_0x46b9d1,_0x149dc5,_0x3808ef){return db[_0xd8aa('0x3d')]['find']({'where':{'id':_0x46b9d1[_0xd8aa('0x55')]['id']}})['then'](handleEntityNotFound(_0x149dc5,null))[_0xd8aa('0x1e')](function(_0x214976){if(_0x214976){return _0x214976['removeAnswers'](_0x46b9d1[_0xd8aa('0x42')][_0xd8aa('0x6e')]);}})[_0xd8aa('0x1e')](respondWithStatusCode(_0x149dc5,null))[_0xd8aa('0x28')](handleError(_0x149dc5,null));};exports[_0xd8aa('0x6f')]=function(_0x1cd8aa,_0x3bce66,_0x48f833){return db[_0xd8aa('0x3d')][_0xd8aa('0x57')]({'where':{'id':_0x1cd8aa[_0xd8aa('0x55')]['id']}})[_0xd8aa('0x1e')](handleEntityNotFound(_0x3bce66,null))['then'](function(_0xdad00e){if(_0xdad00e){return _0xdad00e[_0xd8aa('0x6f')](_0x1cd8aa['body']['ids'],_['omit'](_0x1cd8aa['body'],[_0xd8aa('0x6e'),'id'])||{})[_0xd8aa('0x70')](function(_0xe8b39e){for(var _0x47954e=0x0;_0x47954e<_0x1cd8aa[_0xd8aa('0x61')]['ids'][_0xd8aa('0x48')];_0x47954e+=0x1){socket['emit']('userWhatsappAccount:save',{'UserId':Number(_0x1cd8aa['body'][_0xd8aa('0x6e')][_0x47954e]),'WhatsappAccountId':Number(_0x1cd8aa['params']['id'])});}return _0xe8b39e;});}})[_0xd8aa('0x1e')](respondWithResult(_0x3bce66,null))[_0xd8aa('0x28')](handleError(_0x3bce66,null));};exports[_0xd8aa('0x71')]=function(_0x101553,_0x161aaa,_0x4c164e){return db[_0xd8aa('0x3d')]['find']({'where':{'id':_0x101553['params']['id']}})[_0xd8aa('0x1e')](handleEntityNotFound(_0x161aaa,null))[_0xd8aa('0x1e')](function(_0x2b06e4){if(_0x2b06e4){return _0x2b06e4[_0xd8aa('0x71')](_0x101553['query'][_0xd8aa('0x6e')])[_0xd8aa('0x1e')](function(){if(_[_0xd8aa('0x72')](_0x101553[_0xd8aa('0x42')]['ids'])){for(var _0x161143=0x0;_0x161143<_0x101553[_0xd8aa('0x42')][_0xd8aa('0x6e')][_0xd8aa('0x48')];_0x161143+=0x1){socket[_0xd8aa('0x73')](_0xd8aa('0x74'),{'UserId':Number(_0x101553[_0xd8aa('0x42')][_0xd8aa('0x6e')][_0x161143]),'WhatsappAccountId':Number(_0x101553[_0xd8aa('0x55')]['id'])});}}else{socket['emit'](_0xd8aa('0x74'),{'UserId':Number(_0x101553['query'][_0xd8aa('0x6e')]),'WhatsappAccountId':Number(_0x101553['params']['id'])});}});}})[_0xd8aa('0x1e')](respondWithStatusCode(_0x161aaa,null))['catch'](handleError(_0x161aaa,null));};exports[_0xd8aa('0x75')]=function(_0x41baf2,_0x160df9,_0xa55a54){var _0x49649f={};var _0x4ed415={};var _0x51a4d1;var _0x3a78a8;return db[_0xd8aa('0x3d')][_0xd8aa('0x67')]({'where':{'id':_0x41baf2[_0xd8aa('0x55')]['id']}})[_0xd8aa('0x1e')](handleEntityNotFound(_0x160df9,null))[_0xd8aa('0x1e')](function(_0x24f73a){if(_0x24f73a){_0x51a4d1=_0x24f73a;_0x4ed415['model']=_['keys'](db[_0xd8aa('0x76')][_0xd8aa('0x3e')]);_0x4ed415[_0xd8aa('0x42')]=_['keys'](_0x41baf2[_0xd8aa('0x42')]);_0x4ed415[_0xd8aa('0x44')]=_[_0xd8aa('0x45')](_0x4ed415['model'],_0x4ed415[_0xd8aa('0x42')]);_0x49649f[_0xd8aa('0x46')]=_[_0xd8aa('0x45')](_0x4ed415[_0xd8aa('0x41')],qs[_0xd8aa('0x47')](_0x41baf2[_0xd8aa('0x42')][_0xd8aa('0x47')]));_0x49649f[_0xd8aa('0x46')]=_0x49649f[_0xd8aa('0x46')][_0xd8aa('0x48')]?_0x49649f[_0xd8aa('0x46')]:_0x4ed415['model'];_0x49649f['order']=qs[_0xd8aa('0x4b')](_0x41baf2[_0xd8aa('0x42')][_0xd8aa('0x4b')]);_0x49649f['where']=qs['filters'](_[_0xd8aa('0x4d')](_0x41baf2[_0xd8aa('0x42')],_0x4ed415[_0xd8aa('0x44')]));if(_0x41baf2[_0xd8aa('0x42')]['filter']){_0x49649f[_0xd8aa('0x4c')]=_[_0xd8aa('0x4e')](_0x49649f['where'],{'$or':_[_0xd8aa('0x3c')](_0x49649f[_0xd8aa('0x46')],function(_0x5efa78){var _0x40decb={};_0x40decb[_0x5efa78]={'$like':'%'+_0x41baf2[_0xd8aa('0x42')]['filter']+'%'};return _0x40decb;})});}_0x49649f=_[_0xd8aa('0x4e')]({},_0x49649f,_0x41baf2[_0xd8aa('0x50')]);return _0x51a4d1[_0xd8aa('0x75')](_0x49649f);}})[_0xd8aa('0x1e')](function(_0x14db0c){if(_0x14db0c){_0x3a78a8=_0x14db0c[_0xd8aa('0x48')];if(!_0x41baf2['query'][_0xd8aa('0x49')](_0xd8aa('0x4a'))){_0x49649f[_0xd8aa('0x2e')]=qs[_0xd8aa('0x2e')](_0x41baf2[_0xd8aa('0x42')][_0xd8aa('0x2e')]);_0x49649f[_0xd8aa('0x2d')]=qs[_0xd8aa('0x2d')](_0x41baf2['query'][_0xd8aa('0x2d')]);}return _0x51a4d1[_0xd8aa('0x75')](_0x49649f);}})[_0xd8aa('0x1e')](function(_0x118894){if(_0x118894){return _0x118894?{'count':_0x3a78a8,'rows':_0x118894}:null;}})['then'](respondWithResult(_0x160df9,null))[_0xd8aa('0x28')](handleError(_0x160df9,null));};exports['addApplications']=function(_0x4de1cc,_0x21ed12){var _0x1cae55=_0x4de1cc[_0xd8aa('0x55')]['id'];var _0x2ae20f=_0x4de1cc[_0xd8aa('0x61')];var _0x2a6f19=0xc8;var _0x1c58b3=null;return db[_0xd8aa('0x77')]['transaction']({'isolationLevel':db[_0xd8aa('0x77')][_0xd8aa('0x78')][_0xd8aa('0x79')][_0xd8aa('0x7a')]},function(_0x32998c){return db[_0xd8aa('0x3d')][_0xd8aa('0x67')]({'where':{'id':_0x1cae55},'transaction':_0x32998c})[_0xd8aa('0x1e')](function(_0x3e9bba){if(_0x3e9bba){return db[_0xd8aa('0x7b')][_0xd8aa('0x35')]({'where':{'WhatsappAccountId':_0x1cae55},'transaction':_0x32998c})[_0xd8aa('0x1e')](function(){var _0x55ad96=_[_0xd8aa('0x3c')](_0x2ae20f,function(_0x39baf6){_0x39baf6['WhatsappAccountId']=_0x1cae55;return _0x39baf6;});return db[_0xd8aa('0x7b')][_0xd8aa('0x7c')](_0x55ad96,{'transaction':_0x32998c});});}else{_0x2a6f19=0x194;_0x1c58b3=[];}});})[_0xd8aa('0x1e')](function(){if(_0x2a6f19!==0x194){return db[_0xd8aa('0x7b')][_0xd8aa('0x7d')]({'where':{'WhatsappAccountId':_0x1cae55},'order':_0xd8aa('0x7e')})[_0xd8aa('0x1e')](function(_0x572d5c){_0x1c58b3=_0x572d5c;});}})['catch'](function(_0x5d0bb9){_0x2a6f19=0x1f4;logger[_0xd8aa('0x24')](_0x5d0bb9['stack']);if(_0x5d0bb9[_0xd8aa('0x39')]){delete _0x5d0bb9[_0xd8aa('0x39')];}_0x1c58b3=_0x5d0bb9;})[_0xd8aa('0x7f')](function(){if(_0x1c58b3===null){_0x21ed12[_0xd8aa('0x29')](_0x2a6f19);}else{if(_0x2a6f19===0x1f4){_0x21ed12[_0xd8aa('0x2a')](_0x2a6f19)[_0xd8aa('0x80')](_0x1c58b3);}else{_0x21ed12['status'](_0x2a6f19)[_0xd8aa('0x2c')](_0x1c58b3);}}});};exports['getApplications']=function(_0xf7ac5,_0x216f52,_0x362392){var _0x28a284={};var _0x14f994={};var _0x4a9d3d;var _0x36bab6;return db[_0xd8aa('0x3d')][_0xd8aa('0x67')]({'where':{'id':_0xf7ac5[_0xd8aa('0x55')]['id']}})[_0xd8aa('0x1e')](handleEntityNotFound(_0x216f52,null))[_0xd8aa('0x1e')](function(_0x4adb75){if(_0x4adb75){_0x4a9d3d=_0x4adb75;_0x14f994[_0xd8aa('0x41')]=_['keys'](db[_0xd8aa('0x7b')][_0xd8aa('0x3e')]);_0x14f994[_0xd8aa('0x42')]=_[_0xd8aa('0x43')](_0xf7ac5[_0xd8aa('0x42')]);_0x14f994[_0xd8aa('0x44')]=_[_0xd8aa('0x45')](_0x14f994[_0xd8aa('0x41')],_0x14f994[_0xd8aa('0x42')]);_0x28a284[_0xd8aa('0x46')]=_['intersection'](_0x14f994[_0xd8aa('0x41')],qs['fields'](_0xf7ac5['query']['fields']));_0x28a284[_0xd8aa('0x46')]=_0x28a284['attributes'][_0xd8aa('0x48')]?_0x28a284[_0xd8aa('0x46')]:_0x14f994[_0xd8aa('0x41')];_0x28a284[_0xd8aa('0x68')]=qs[_0xd8aa('0x4b')](_0xf7ac5['query'][_0xd8aa('0x4b')]);_0x28a284[_0xd8aa('0x4c')]=qs[_0xd8aa('0x44')](_[_0xd8aa('0x4d')](_0xf7ac5[_0xd8aa('0x42')],_0x14f994[_0xd8aa('0x44')]));if(_0xf7ac5[_0xd8aa('0x42')][_0xd8aa('0x4f')]){_0x28a284[_0xd8aa('0x4c')]=_[_0xd8aa('0x4e')](_0x28a284[_0xd8aa('0x4c')],{'$or':_[_0xd8aa('0x3c')](_0x28a284[_0xd8aa('0x46')],function(_0x1bbabd){var _0xa1622b={};_0xa1622b[_0x1bbabd]={'$like':'%'+_0xf7ac5[_0xd8aa('0x42')][_0xd8aa('0x4f')]+'%'};return _0xa1622b;})});}_0x28a284=_[_0xd8aa('0x4e')]({},_0x28a284,_0xf7ac5[_0xd8aa('0x50')]);return _0x4a9d3d[_0xd8aa('0x81')](_0x28a284);}})[_0xd8aa('0x1e')](function(_0x12f314){if(_0x12f314){_0x36bab6=_0x12f314[_0xd8aa('0x48')];if(!_0xf7ac5[_0xd8aa('0x42')]['hasOwnProperty'](_0xd8aa('0x4a'))){_0x28a284['limit']=qs[_0xd8aa('0x2e')](_0xf7ac5[_0xd8aa('0x42')]['limit']);_0x28a284['offset']=qs[_0xd8aa('0x2d')](_0xf7ac5[_0xd8aa('0x42')][_0xd8aa('0x2d')]);}return _0x4a9d3d[_0xd8aa('0x81')](_0x28a284);}})['then'](function(_0x2a74c7){if(_0x2a74c7){return _0x2a74c7?{'count':_0x36bab6,'rows':_0x2a74c7}:null;}})[_0xd8aa('0x1e')](respondWithResult(_0x216f52,null))['catch'](handleError(_0x216f52,null));};exports[_0xd8aa('0x82')]=function(_0x26bf11,_0x38e91c,_0x1c58ff){var _0x4bc45f={'channel':_0xd8aa('0x83')};var _0x27ae48=[];var _0x4d216e=[];var _0x3862cc={};return db['WhatsappAccount'][_0xd8aa('0x57')]({'where':{'id':_0x26bf11[_0xd8aa('0x55')]['id']},'include':[{'model':db['WhatsappApplication'],'as':_0xd8aa('0x84')}]})[_0xd8aa('0x1e')](handleEntityNotFound(_0x38e91c,null))[_0xd8aa('0x1e')](function(_0x4afd5e){_0x4bc45f['account']=_0x4afd5e;if(_0x4bc45f[_0xd8aa('0x85')]&&_0x4bc45f[_0xd8aa('0x85')][_0xd8aa('0x86')]==='sinch'&&_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x87')]){if(_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x87')][_0xd8aa('0x48')]===0x0)return;if(_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x87')][0x0]['state']!==_0xd8aa('0x88'))return;return db[_0xd8aa('0x89')][_0xd8aa('0x34')]({'read':!![],'readAt':_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x87')][0x0][_0xd8aa('0x8a')]},{'where':{'messageId':_0x26bf11[_0xd8aa('0x61')]['statuses'][0x0][_0xd8aa('0x8b')]},'individualHooks':!![]})['then'](function(_0x5b4f3c){return _0x38e91c[_0xd8aa('0x2a')](0xc8)[_0xd8aa('0x2c')](_0x5b4f3c);});}_0x4bc45f[_0xd8aa('0x8c')]=_[_0xd8aa('0x8d')](_0x4afd5e[_0xd8aa('0x84')],[_0xd8aa('0x7e')],['asc']);if(_0x4bc45f[_0xd8aa('0x85')]['Applications']){delete _0x4bc45f[_0xd8aa('0x85')][_0xd8aa('0x84')];}return db['CmContact'][_0xd8aa('0x62')]()[_0xd8aa('0x1e')](function(_0x3e1996){if(!_0x3e1996){throw new db[(_0xd8aa('0x8e'))][(_0xd8aa('0x8f'))]('no\x20available\x20attributes');}_0x27ae48=_[_0xd8aa('0x90')](_[_0xd8aa('0x43')](_0x3e1996),['createdAt',_0xd8aa('0x91')]);_0x4d216e=_[_0xd8aa('0x90')](_['keys'](_0x3e1996),['createdAt',_0xd8aa('0x91'),_0xd8aa('0x92'),_0xd8aa('0x93')]);_0x4bc45f[_0xd8aa('0x61')]={'mapKey':_0xd8aa('0x94')};if(_0x4bc45f['account']&&_0x4bc45f[_0xd8aa('0x85')][_0xd8aa('0x86')]===_0xd8aa('0x95')){_0x4bc45f['body'][_0xd8aa('0x96')]=_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x97')][_0xd8aa('0x98')](_0xd8aa('0x99'),'');_0x4bc45f['body'][_0xd8aa('0x61')]=_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x9a')];_0x4bc45f[_0xd8aa('0x61')]['messageId']=_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x9b')];}if(_0x4bc45f['account']&&_0x4bc45f['account'][_0xd8aa('0x86')]===_0xd8aa('0x9c')){_0x4bc45f[_0xd8aa('0x61')]['from']=_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x9d')][0x0][_0xd8aa('0x96')];_0x4bc45f['body'][_0xd8aa('0x61')]=_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x9d')][0x0][_0xd8aa('0x26')][_0xd8aa('0x61')];_0x4bc45f[_0xd8aa('0x61')][_0xd8aa('0x9e')]=_0x26bf11[_0xd8aa('0x61')][_0xd8aa('0x9d')][0x0]['message_id'];}if(_0x4bc45f[_0xd8aa('0x61')]['id']){delete _0x4bc45f[_0xd8aa('0x61')]['id'];}if(_['isNil'](_0x4bc45f['body'][_0xd8aa('0x96')])){throw new db['Sequelize'][(_0xd8aa('0x8f'))]('from\x20is\x20mandatory');}if(_['isNil'](_0x4bc45f[_0xd8aa('0x61')][_0xd8aa('0x61')])||_0x4bc45f[_0xd8aa('0x61')][_0xd8aa('0x61')]===''){throw new db[(_0xd8aa('0x8e'))][(_0xd8aa('0x8f'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xd8aa('0x9f')](_0x4bc45f[_0xd8aa('0x61')]['mapKey'])){throw new db[(_0xd8aa('0x8e'))][(_0xd8aa('0x8f'))](_0xd8aa('0xa0')+_0x4d216e);}if(!_[_0xd8aa('0xa1')](_0x4d216e,_0x4bc45f['body'][_0xd8aa('0xa2')])){throw new db[(_0xd8aa('0x8e'))][(_0xd8aa('0x8f'))](_0xd8aa('0xa3')+_0x4d216e);}_0x3862cc[_0x4bc45f[_0xd8aa('0x61')][_0xd8aa('0xa2')]]=_0x4bc45f[_0xd8aa('0x61')][_0xd8aa('0x96')];return db[_0xd8aa('0xa4')][_0xd8aa('0x57')]({'where':{'id':_0x4bc45f[_0xd8aa('0x85')][_0xd8aa('0x93')]},'include':[{'model':db[_0xd8aa('0xa5')],'as':_0xd8aa('0xa6'),'where':_0x3862cc,'limit':0x1,'order':[[_0xd8aa('0x91'),_0xd8aa('0xa7')]]}]});})[_0xd8aa('0x1e')](handleEntityNotFound(_0x38e91c,null))[_0xd8aa('0x1e')](function(_0x1bb8c0){if(_0x1bb8c0){_0x4bc45f[_0xd8aa('0xa8')]=_['omit'](_0x1bb8c0,[_0xd8aa('0xa6')]);if(_0x1bb8c0['Contacts'][_0xd8aa('0x48')]){return _0x1bb8c0['Contacts'][0x0];}var _0x902198=_[_0xd8aa('0x18')](_0x4bc45f[_0xd8aa('0x61')],{'firstName':_0x4bc45f[_0xd8aa('0x61')][_0xd8aa('0x96')],'ListId':_0x1bb8c0['id']});_0x902198[_0x4bc45f['body']['mapKey']]=_0x4bc45f[_0xd8aa('0x61')][_0xd8aa('0x96')];return db[_0xd8aa('0xa5')]['create'](_0x902198,{'fields':_0x27ae48,'raw':!![]});}})['then'](handleEntityNotFound(_0x38e91c,null))[_0xd8aa('0x1e')](function(_0x52b3d5){if(_0x52b3d5){_0x4bc45f[_0xd8aa('0xa9')]=_0x52b3d5;var _0x43355f={'ContactId':_0x52b3d5['id'],'phone':_0x4bc45f['body'][_0xd8aa('0x96')],'WhatsappAccountId':_0x26bf11['params']['id']};var _0x355879={'ContactId':_0x52b3d5['id'],'WhatsappAccountId':_0x26bf11[_0xd8aa('0x55')]['id'],'closed':![]};return db[_0xd8aa('0xaa')]['find']({'where':_0x355879})[_0xd8aa('0x1e')](function(_0x51b787){if(_0x51b787){return[_0x51b787,![]];}return db[_0xd8aa('0xaa')][_0xd8aa('0x58')](_0x43355f)[_0xd8aa('0x1e')](function(_0x37645){return[_0x37645,!![]];});});}})[_0xd8aa('0x70')](function(_0x1d0748,_0x566cd4){_0x4bc45f[_0xd8aa('0xab')]=_0x1d0748[_0xd8aa('0x59')]({'plain':!![]});_0x4bc45f[_0xd8aa('0xab')][_0xd8aa('0xac')]=![];if(_0x566cd4){if(_0x4bc45f['account']['autoclose']){_0x4bc45f[_0xd8aa('0x8c')]['push']({'id':0x0,'priority':_0x4bc45f[_0xd8aa('0x8c')][_0xd8aa('0x48')]+0x1,'app':_0xd8aa('0xad'),'appdata':_0xd8aa('0xae'),'interval':_0xd8aa('0xaf')});}_0x4bc45f[_0xd8aa('0xab')][_0xd8aa('0xac')]=!![];}return db[_0xd8aa('0x89')][_0xd8aa('0x58')]({'phone':_0x4bc45f[_0xd8aa('0x61')][_0xd8aa('0x96')],'messageId':_0x4bc45f[_0xd8aa('0x61')][_0xd8aa('0x9e')],'body':_0x4bc45f[_0xd8aa('0x61')]['body'],'WhatsappAccountId':_0x26bf11[_0xd8aa('0x55')]['id'],'WhatsappInteractionId':_0x1d0748['id'],'direction':'in','ContactId':_0x1d0748[_0xd8aa('0xb0')],'AttachmentId':_0x4bc45f['body']['AttachmentId']});})[_0xd8aa('0x1e')](function(_0x3a9332){_0x4bc45f[_0xd8aa('0x26')]=_0x3a9332;if(!_0x4bc45f[_0xd8aa('0xab')][_0xd8aa('0xb1')])return;return db['User'][_0xd8aa('0x57')]({'attributes':['id',_0xd8aa('0x39')],'where':{'id':_0x4bc45f['interaction'][_0xd8aa('0xb1')]}});})[_0xd8aa('0x1e')](function(_0x5d9f0e){if(_0x5d9f0e){_0x4bc45f[_0xd8aa('0x8c')][_0xd8aa('0xb2')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x5d9f0e[_0xd8aa('0x39')]+','+(_0x4bc45f[_0xd8aa('0x85')]['waitForTheAssignedAgent']||0xa),'interval':_0xd8aa('0xaf')});}if(!_0x4bc45f['interaction'][_0xd8aa('0xb3')])return;return db[_0xd8aa('0xb4')]['find']({'attributes':['id',_0xd8aa('0x39')],'where':{'id':_0x4bc45f[_0xd8aa('0xab')][_0xd8aa('0xb3')]}});})[_0xd8aa('0x1e')](function(_0x4f728a){if(_0x4f728a){_0x4bc45f['applications'][_0xd8aa('0xb2')]({'id':0x0,'priority':0x1,'app':_0xd8aa('0xb5'),'appdata':_0x4f728a[_0xd8aa('0x39')]+','+(_0x4bc45f[_0xd8aa('0x85')][_0xd8aa('0xb6')]||0x12c),'interval':_0xd8aa('0xaf')});}return respondWithRpcPromise('Start',_0xd8aa('0xb7'),_0x4bc45f);})[_0xd8aa('0x1e')](function(_0x42ff3c){if(_0x42ff3c){var _0x1141c1=0xc8;var _0x29d3c8=_0xd8aa('0xb8');logger['info'](_0xd8aa('0x22'),_0x29d3c8,_0x1141c1,'entity\x20found');logger[_0xd8aa('0xb9')](_0xd8aa('0xba'),_0x29d3c8,_0x1141c1,_0xd8aa('0xbb'),JSON[_0xd8aa('0x23')](_0x42ff3c));if(_0x4bc45f['account'][_0xd8aa('0x86')]===_0xd8aa('0x95')){return _0x38e91c['status'](_0x1141c1)[_0xd8aa('0x30')]('Content-Type',_0xd8aa('0xbc'))['send'](_0xd8aa('0xbd'));}else{return _0x38e91c[_0xd8aa('0x2a')](_0x1141c1)['json'](_0x42ff3c);}}});})[_0xd8aa('0x28')](handleError(_0x38e91c,null));};exports['send']=function(_0x139d6a,_0x3bc36e,_0xab4f4a){var _0x887d64,_0x25a35a,_0x1bda6a;if(_[_0xd8aa('0x9f')](_0x139d6a[_0xd8aa('0x61')][_0xd8aa('0x61')])||_0x139d6a[_0xd8aa('0x61')][_0xd8aa('0x61')]===''){throw new db[(_0xd8aa('0x8e'))][(_0xd8aa('0x8f'))](_0xd8aa('0xbe'));}if(_[_0xd8aa('0x9f')](_0x139d6a[_0xd8aa('0x61')]['to'])){throw new db[(_0xd8aa('0x8e'))][(_0xd8aa('0x8f'))](_0xd8aa('0xbf'));}_0x887d64=_0x139d6a['body']['to'];return db[_0xd8aa('0x3d')][_0xd8aa('0x57')]({'where':{'id':_0x139d6a[_0xd8aa('0x55')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0xd8aa('0xa5')],'as':_0xd8aa('0xa6'),'where':{'mobile':_0x887d64},'limit':0x1,'order':[['updatedAt',_0xd8aa('0xa7')]]}]}]})['then'](handleEntityNotFound(_0x3bc36e,null))[_0xd8aa('0x1e')](function(_0x51ebb0){if(_0x51ebb0&&_0x51ebb0['List']){_0x25a35a=_0x51ebb0[_0xd8aa('0x59')]({'plain':!![]});if(_0x25a35a['List']&&_0x25a35a['List'][_0xd8aa('0xa6')][_0xd8aa('0x48')]){return _0x25a35a[_0xd8aa('0xc0')][_0xd8aa('0xa6')][0x0];}return db['CmContact'][_0xd8aa('0x58')](_[_0xd8aa('0x18')](_0x139d6a[_0xd8aa('0x61')],{'firstName':_0x887d64,'mobile':_0x887d64,'phone':_0x887d64,'ListId':_0x25a35a[_0xd8aa('0x93')]}));}})[_0xd8aa('0x1e')](handleEntityNotFound(_0x3bc36e,null))[_0xd8aa('0x1e')](function(_0x284db7){if(_0x284db7){_0x1bda6a=_0x284db7;return db[_0xd8aa('0xaa')][_0xd8aa('0x57')]({'where':{'ContactId':_0x1bda6a['id'],'closed':![],'WhatsappAccountId':_0x25a35a['id']}})['then'](function(_0x42aaff){if(_0x42aaff){return[_0x42aaff,![]];}return db[_0xd8aa('0xaa')][_0xd8aa('0x58')]({'UserId':_0x139d6a[_0xd8aa('0x5c')]['id'],'ContactId':_0x1bda6a['id'],'WhatsappAccountId':_0x25a35a['id'],'phone':_0x887d64,'firstMsgDirection':'out','Messages':[_[_0xd8aa('0x4e')](_0x139d6a[_0xd8aa('0x61')],{'read':![],'body':_0x139d6a[_0xd8aa('0x61')][_0xd8aa('0x61')],'phone':_0x887d64,'WhatsappAccountId':_0x25a35a['id'],'UserId':_0x139d6a['user']['id'],'ContactId':_0x1bda6a['id']})]},{'include':[{'model':db[_0xd8aa('0x89')],'as':'Messages'}]})[_0xd8aa('0x1e')](function(_0x508571){return[_0x508571,!![]];});});}})[_0xd8aa('0x70')](function(_0x2d4aa0,_0x438b92){if(_0x438b92){return _0x2d4aa0;}return db[_0xd8aa('0x89')][_0xd8aa('0x58')](_[_0xd8aa('0x4e')](_0x139d6a[_0xd8aa('0x61')],{'read':![],'body':_0x139d6a[_0xd8aa('0x61')][_0xd8aa('0x61')],'phone':_0x887d64,'WhatsappAccountId':_0x25a35a['id'],'WhatsappInteractionId':_0x2d4aa0['id'],'UserId':_0x139d6a['user']['id'],'ContactId':_0x1bda6a['id']}))['then'](function(_0x54a72c){_0x2d4aa0[_0xd8aa('0xc1')][_0xd8aa('0xc2')]=[];_0x2d4aa0[_0xd8aa('0xc1')][_0xd8aa('0xc2')][_0xd8aa('0xc3')](_0x54a72c[_0xd8aa('0xc1')]);return _0x2d4aa0;});})[_0xd8aa('0x1e')](respondWithResult(_0x3bc36e,null))[_0xd8aa('0x28')](handleError(_0x3bc36e,null));};
\ No newline at end of file
+var _0xe864=['push','close','*,*,*,*','AttachmentId','UserId','unshift','agent','queueId','WhatsappQueue','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','dataValues','Messages','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','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','defaults','socket.io-emitter','./whatsappAccount.socket','register','jayson/promise','client','http','then','info','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','WhatsappAccount,\x20%s,\x20%s','message','result','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','destroy','get','WhatsappAccounts','UserProfileResource','stack','name','send','Pause','mandatoryDispositionPause','WhatsappAccount','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','sort','filter','merge','options','where','includeAll','catch','show','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','findOne','order','pick','include','findAll','rows','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addAgents','omit','userWhatsappAccount:save','removeAgents','isArray','emit','userWhatsappAccount:remove','getAgents','User','addApplications','sequelize','transaction','Transaction','READ_COMMITTED','WhatsappApplication','bulkCreate','finally','getApplications','notify','whatsapp','Applications','account','sinch','statuses','state','read','WhatsappMessage','timestamp','message_id','applications','priority','asc','CmContact','ValidationError','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','whatsapp:','Body','messageId','MessageSid','notifications','from\x20is\x20mandatory','isNil','Sequelize','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','contact','WhatsappInteraction','spread','interaction','created'];(function(_0x2b3104,_0x4a053c){var _0x2e7966=function(_0xafb902){while(--_0xafb902){_0x2b3104['push'](_0x2b3104['shift']());}};_0x2e7966(++_0x4a053c);}(_0xe864,0x1ac));var _0x4e86=function(_0x5b7516,_0x1433e6){_0x5b7516=_0x5b7516-0x0;var _0x4233bc=_0xe864[_0x5b7516];return _0x4233bc;};'use strict';var emlformat=require(_0x4e86('0x0'));var rimraf=require(_0x4e86('0x1'));var zipdir=require(_0x4e86('0x2'));var jsonpatch=require(_0x4e86('0x3'));var rp=require(_0x4e86('0x4'));var moment=require(_0x4e86('0x5'));var BPromise=require(_0x4e86('0x6'));var Mustache=require(_0x4e86('0x7'));var util=require(_0x4e86('0x8'));var path=require(_0x4e86('0x9'));var sox=require('sox');var csv=require(_0x4e86('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4e86('0xb'));var _=require(_0x4e86('0xc'));var squel=require(_0x4e86('0xd'));var crypto=require('crypto');var jsforce=require(_0x4e86('0xe'));var deskjs=require(_0x4e86('0xf'));var toCsv=require('to-csv');var querystring=require(_0x4e86('0x10'));var Papa=require(_0x4e86('0x11'));var Redis=require(_0x4e86('0x12'));var authService=require(_0x4e86('0x13'));var qs=require(_0x4e86('0x14'));var as=require(_0x4e86('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4e86('0x16'))(_0x4e86('0x17'));var utils=require(_0x4e86('0x18'));var config=require(_0x4e86('0x19'));var licenseUtil=require(_0x4e86('0x1a'));var db=require(_0x4e86('0x1b'))['db'];config[_0x4e86('0x1c')]=_[_0x4e86('0x1d')](config[_0x4e86('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x4e86('0x1e'))(new Redis(config[_0x4e86('0x1c')]));require(_0x4e86('0x1f'))[_0x4e86('0x20')](socket);var jayson=require(_0x4e86('0x21'));var client=jayson[_0x4e86('0x22')][_0x4e86('0x23')]({'port':0x232c});function respondWithRpcPromise(_0x24d823,_0x42c534,_0xe38ea5,_0x5f69a){return new BPromise(function(_0x3bf7b9,_0x1f5dce){var _0xf29302=_0x5f69a||client;return _0xf29302['request'](_0x24d823,_0xe38ea5)[_0x4e86('0x24')](function(_0x18a7ff){logger[_0x4e86('0x25')]('WhatsappAccount,\x20%s,\x20%s',_0x42c534,'request\x20sent');logger[_0x4e86('0x26')](_0x4e86('0x27'),_0x42c534,_0x4e86('0x28'),JSON[_0x4e86('0x29')](_0x18a7ff));if(_0x18a7ff['error']){if(_0x18a7ff[_0x4e86('0x2a')]['code']===0x1f4){logger[_0x4e86('0x2a')](_0x4e86('0x2b'),_0x42c534,_0x18a7ff[_0x4e86('0x2a')][_0x4e86('0x2c')]);return _0x1f5dce(_0x18a7ff[_0x4e86('0x2a')][_0x4e86('0x2c')]);}logger[_0x4e86('0x2a')](_0x4e86('0x2b'),_0x42c534,_0x18a7ff['error'][_0x4e86('0x2c')]);return _0x3bf7b9(_0x18a7ff['error'][_0x4e86('0x2c')]);}else{logger[_0x4e86('0x25')](_0x4e86('0x2b'),_0x42c534,'request\x20sent');_0x3bf7b9(_0x18a7ff[_0x4e86('0x2d')][_0x4e86('0x2c')]);}})['catch'](function(_0xd16bc6){logger['error'](_0x4e86('0x2b'),_0x42c534,_0xd16bc6);_0x1f5dce(_0xd16bc6);});});}function respondWithStatusCode(_0x3f82e9,_0x14ce96){_0x14ce96=_0x14ce96||0xcc;return function(_0x2fa90b){if(_0x2fa90b){return _0x3f82e9[_0x4e86('0x2e')](_0x14ce96);}return _0x3f82e9[_0x4e86('0x2f')](_0x14ce96)[_0x4e86('0x30')]();};}function respondWithResult(_0x3d3ebe,_0x4392f2){_0x4392f2=_0x4392f2||0xc8;return function(_0xb3e31e){if(_0xb3e31e){return _0x3d3ebe[_0x4e86('0x2f')](_0x4392f2)[_0x4e86('0x31')](_0xb3e31e);}};}function respondWithFilteredResult(_0x352f4f,_0x2a7e8d){return function(_0x174492){if(_0x174492){var _0x541861=typeof _0x2a7e8d[_0x4e86('0x32')]===_0x4e86('0x33')&&typeof _0x2a7e8d[_0x4e86('0x34')]===_0x4e86('0x33');var _0x46e716=_0x174492[_0x4e86('0x35')];var _0x4cb131=_0x541861?0x0:_0x2a7e8d[_0x4e86('0x32')];var _0x7978c=_0x541861?_0x174492['count']:_0x2a7e8d[_0x4e86('0x32')]+_0x2a7e8d['limit'];var _0xf56b55;if(_0x7978c>=_0x46e716){_0x7978c=_0x46e716;_0xf56b55=0xc8;}else{_0xf56b55=0xce;}_0x352f4f[_0x4e86('0x2f')](_0xf56b55);return _0x352f4f['set'](_0x4e86('0x36'),_0x4cb131+'-'+_0x7978c+'/'+_0x46e716)[_0x4e86('0x31')](_0x174492);}return null;};}function patchUpdates(_0x7b1019){return function(_0x5a2884){try{jsonpatch[_0x4e86('0x37')](_0x5a2884,_0x7b1019,!![]);}catch(_0x128d3f){return BPromise[_0x4e86('0x38')](_0x128d3f);}return _0x5a2884[_0x4e86('0x39')]();};}function saveUpdates(_0x1618bc,_0x471bde){return function(_0x871459){if(_0x871459){return _0x871459['update'](_0x1618bc)[_0x4e86('0x24')](function(_0xee866b){return _0xee866b;});}return null;};}function removeEntity(_0x44784f,_0x5c4c30){return function(_0x5d9955){if(_0x5d9955){return _0x5d9955[_0x4e86('0x3a')]()['then'](function(){var _0x50028f=_0x5d9955[_0x4e86('0x3b')]({'plain':!![]});var _0x250fc8=_0x4e86('0x3c');return db[_0x4e86('0x3d')]['destroy']({'where':{'type':_0x250fc8,'resourceId':_0x50028f['id']}})[_0x4e86('0x24')](function(){return _0x5d9955;});})[_0x4e86('0x24')](function(){_0x44784f[_0x4e86('0x2f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x27b719,_0x22da91){return function(_0xe82166){if(!_0xe82166){_0x27b719[_0x4e86('0x2e')](0x194);}return _0xe82166;};}function handleError(_0x586f79,_0x13da94){_0x13da94=_0x13da94||0x1f4;return function(_0x3caed3){logger['error'](_0x3caed3[_0x4e86('0x3e')]);if(_0x3caed3[_0x4e86('0x3f')]){delete _0x3caed3[_0x4e86('0x3f')];}_0x586f79['status'](_0x13da94)[_0x4e86('0x40')](_0x3caed3);};}exports['index']=function(_0x2521ed,_0x937c1e){var _0x5410ec={'include':[{'model':db[_0x4e86('0x41')],'as':_0x4e86('0x42')}]},_0x116753={},_0x3fe578={'count':0x0,'rows':[]};var _0x51be86=_['map'](db[_0x4e86('0x43')][_0x4e86('0x44')],function(_0x2af946){return{'name':_0x2af946[_0x4e86('0x45')],'type':_0x2af946[_0x4e86('0x46')][_0x4e86('0x47')]};});_0x116753[_0x4e86('0x48')]=_[_0x4e86('0x49')](_0x51be86,'name');_0x116753['query']=_[_0x4e86('0x4a')](_0x2521ed['query']);_0x116753[_0x4e86('0x4b')]=_[_0x4e86('0x4c')](_0x116753[_0x4e86('0x48')],_0x116753[_0x4e86('0x4d')]);_0x5410ec['attributes']=_[_0x4e86('0x4c')](_0x116753['model'],qs[_0x4e86('0x4e')](_0x2521ed['query'][_0x4e86('0x4e')]));_0x5410ec[_0x4e86('0x4f')]=_0x5410ec[_0x4e86('0x4f')][_0x4e86('0x50')]?_0x5410ec[_0x4e86('0x4f')]:_0x116753[_0x4e86('0x48')];if(!_0x2521ed[_0x4e86('0x4d')][_0x4e86('0x51')](_0x4e86('0x52'))){_0x5410ec['limit']=qs[_0x4e86('0x34')](_0x2521ed[_0x4e86('0x4d')][_0x4e86('0x34')]);_0x5410ec[_0x4e86('0x32')]=qs[_0x4e86('0x32')](_0x2521ed[_0x4e86('0x4d')][_0x4e86('0x32')]);}_0x5410ec['order']=qs['sort'](_0x2521ed[_0x4e86('0x4d')][_0x4e86('0x53')]);_0x5410ec['where']=qs[_0x4e86('0x4b')](_['pick'](_0x2521ed[_0x4e86('0x4d')],_0x116753[_0x4e86('0x4b')]),_0x51be86);if(_0x2521ed[_0x4e86('0x4d')][_0x4e86('0x54')]){_0x5410ec['where']=_[_0x4e86('0x55')](_0x5410ec['where'],{'$or':_[_0x4e86('0x49')](_0x51be86,function(_0x419615){if(_0x419615['type']!=='VIRTUAL'){var _0x50f664={};_0x50f664[_0x419615['name']]={'$like':'%'+_0x2521ed[_0x4e86('0x4d')][_0x4e86('0x54')]+'%'};return _0x50f664;}})});}_0x5410ec=_[_0x4e86('0x55')]({},_0x5410ec,_0x2521ed[_0x4e86('0x56')]);var _0x4806b9={'where':_0x5410ec[_0x4e86('0x57')]};return db[_0x4e86('0x43')][_0x4e86('0x35')](_0x4806b9)[_0x4e86('0x24')](function(_0xbd5712){_0x3fe578['count']=_0xbd5712;if(_0x2521ed['query'][_0x4e86('0x58')]){_0x5410ec['include']=[{'all':!![]}];}return db['WhatsappAccount']['findAll'](_0x5410ec);})[_0x4e86('0x24')](function(_0x483408){_0x3fe578['rows']=_0x483408;return _0x3fe578;})['then'](respondWithFilteredResult(_0x937c1e,_0x5410ec))[_0x4e86('0x59')](handleError(_0x937c1e,null));};exports[_0x4e86('0x5a')]=function(_0x199091,_0x162d37){var _0x21849b={'raw':![],'where':{'id':_0x199091['params']['id']},'include':[{'model':db[_0x4e86('0x41')],'as':_0x4e86('0x42')}]},_0x3c604a={};_0x3c604a[_0x4e86('0x48')]=_[_0x4e86('0x4a')](db[_0x4e86('0x43')]['rawAttributes']);_0x3c604a[_0x4e86('0x4d')]=_[_0x4e86('0x4a')](_0x199091[_0x4e86('0x4d')]);_0x3c604a[_0x4e86('0x4b')]=_['intersection'](_0x3c604a[_0x4e86('0x48')],_0x3c604a[_0x4e86('0x4d')]);_0x21849b[_0x4e86('0x4f')]=_[_0x4e86('0x4c')](_0x3c604a['model'],qs[_0x4e86('0x4e')](_0x199091[_0x4e86('0x4d')][_0x4e86('0x4e')]));_0x21849b[_0x4e86('0x4f')]=_0x21849b['attributes']['length']?_0x21849b[_0x4e86('0x4f')]:_0x3c604a[_0x4e86('0x48')];if(_0x199091[_0x4e86('0x4d')]['includeAll']){_0x21849b['include']=[{'all':!![]}];}_0x21849b=_[_0x4e86('0x55')]({},_0x21849b,_0x199091[_0x4e86('0x56')]);return db[_0x4e86('0x43')]['find'](_0x21849b)['then'](handleEntityNotFound(_0x162d37,null))[_0x4e86('0x24')](respondWithResult(_0x162d37,null))[_0x4e86('0x59')](handleError(_0x162d37,null));};exports[_0x4e86('0x5b')]=function(_0x1861aa,_0x5cc227){return db[_0x4e86('0x43')][_0x4e86('0x5b')](_0x1861aa[_0x4e86('0x5c')],{})['then'](function(_0x458e67){var _0x5dd260=_0x1861aa[_0x4e86('0x5d')][_0x4e86('0x3b')]({'plain':!![]});if(!_0x5dd260)throw new Error(_0x4e86('0x5e'));if(_0x5dd260[_0x4e86('0x5f')]===_0x4e86('0x5d')){var _0x50fe33=_0x458e67[_0x4e86('0x3b')]({'plain':!![]});var _0xb98c3c=_0x4e86('0x3c');return db[_0x4e86('0x60')][_0x4e86('0x61')]({'where':{'name':_0xb98c3c,'userProfileId':_0x5dd260['userProfileId']},'raw':!![]})[_0x4e86('0x24')](function(_0x524bb2){if(_0x524bb2&&_0x524bb2[_0x4e86('0x62')]===0x0){return db[_0x4e86('0x3d')]['create']({'name':_0x50fe33[_0x4e86('0x3f')],'resourceId':_0x50fe33['id'],'type':_0x524bb2['name'],'sectionId':_0x524bb2['id']},{})[_0x4e86('0x24')](function(){return _0x458e67;});}else{return _0x458e67;}})[_0x4e86('0x59')](function(_0x3e20f1){logger['error'](_0x4e86('0x63'),_0x3e20f1);throw _0x3e20f1;});}return _0x458e67;})[_0x4e86('0x24')](respondWithResult(_0x5cc227,0xc9))[_0x4e86('0x59')](handleError(_0x5cc227,null));};exports[_0x4e86('0x64')]=function(_0x592c36,_0x19ff67){if(_0x592c36[_0x4e86('0x5c')]['id']){delete _0x592c36[_0x4e86('0x5c')]['id'];}return db[_0x4e86('0x43')][_0x4e86('0x61')]({'where':{'id':_0x592c36[_0x4e86('0x65')]['id']},'include':[{'model':db[_0x4e86('0x41')],'as':'mandatoryDispositionPause'}]})[_0x4e86('0x24')](handleEntityNotFound(_0x19ff67,null))[_0x4e86('0x24')](saveUpdates(_0x592c36[_0x4e86('0x5c')],null))[_0x4e86('0x24')](respondWithResult(_0x19ff67,null))[_0x4e86('0x59')](handleError(_0x19ff67,null));};exports['destroy']=function(_0x264510,_0x4037c0){return db['WhatsappAccount']['find']({'where':{'id':_0x264510[_0x4e86('0x65')]['id']}})['then'](handleEntityNotFound(_0x4037c0,null))[_0x4e86('0x24')](removeEntity(_0x4037c0,null))[_0x4e86('0x59')](handleError(_0x4037c0,null));};exports[_0x4e86('0x66')]=function(_0x548342,_0x2087bb){return db[_0x4e86('0x43')][_0x4e86('0x66')]()[_0x4e86('0x24')](respondWithResult(_0x2087bb,null))[_0x4e86('0x59')](handleError(_0x2087bb,null));};exports[_0x4e86('0x67')]=function(_0x464994,_0xab2c73,_0x34fd19){if(_0x464994['body']['id']){delete _0x464994['body']['id'];}return db[_0x4e86('0x43')][_0x4e86('0x61')]({'where':{'id':_0x464994[_0x4e86('0x65')]['id']}})[_0x4e86('0x24')](handleEntityNotFound(_0xab2c73,null))['then'](function(_0x90eb16){if(_0x90eb16){_0x464994[_0x4e86('0x5c')][_0x4e86('0x68')]=_0x90eb16['id'];return db[_0x4e86('0x69')][_0x4e86('0x5b')](_0x464994[_0x4e86('0x5c')]);}})['then'](respondWithResult(_0xab2c73,null))[_0x4e86('0x59')](handleError(_0xab2c73,null));};exports[_0x4e86('0x6a')]=function(_0x2ef749,_0x46624f,_0x1bcbdd){var _0x5bda9f={'raw':![],'where':{}};var _0x20bc6c={};var _0x2c6682={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0x4e86('0x6b')]({'where':{'id':_0x2ef749['params']['id']}})[_0x4e86('0x24')](handleEntityNotFound(_0x46624f,null))[_0x4e86('0x24')](function(_0x4ef8fc){if(_0x4ef8fc){_0x20bc6c[_0x4e86('0x48')]=_[_0x4e86('0x4a')](db[_0x4e86('0x69')][_0x4e86('0x44')]);_0x20bc6c[_0x4e86('0x4d')]=_[_0x4e86('0x4a')](_0x2ef749[_0x4e86('0x4d')]);_0x20bc6c['filters']=_['intersection'](_0x20bc6c['model'],_0x20bc6c[_0x4e86('0x4d')]);_0x5bda9f[_0x4e86('0x4f')]=_[_0x4e86('0x4c')](_0x20bc6c[_0x4e86('0x48')],qs[_0x4e86('0x4e')](_0x2ef749['query'][_0x4e86('0x4e')]));_0x5bda9f[_0x4e86('0x4f')]=_0x5bda9f[_0x4e86('0x4f')][_0x4e86('0x50')]?_0x5bda9f[_0x4e86('0x4f')]:_0x20bc6c[_0x4e86('0x48')];if(!_0x2ef749['query']['hasOwnProperty'](_0x4e86('0x52'))){_0x5bda9f[_0x4e86('0x34')]=qs[_0x4e86('0x34')](_0x2ef749[_0x4e86('0x4d')][_0x4e86('0x34')]);_0x5bda9f[_0x4e86('0x32')]=qs[_0x4e86('0x32')](_0x2ef749[_0x4e86('0x4d')][_0x4e86('0x32')]);}_0x5bda9f[_0x4e86('0x6c')]=qs[_0x4e86('0x53')](_0x2ef749['query'][_0x4e86('0x53')]);_0x5bda9f[_0x4e86('0x57')]=qs[_0x4e86('0x4b')](_[_0x4e86('0x6d')](_0x2ef749[_0x4e86('0x4d')],_0x20bc6c[_0x4e86('0x4b')]));_0x5bda9f['where'][_0x4e86('0x68')]=_0x4ef8fc['id'];if(_0x2ef749[_0x4e86('0x4d')][_0x4e86('0x54')]){_0x5bda9f[_0x4e86('0x57')]=_[_0x4e86('0x55')](_0x5bda9f['where'],{'$or':_[_0x4e86('0x49')](_0x5bda9f[_0x4e86('0x4f')],function(_0x2b018e){var _0x569d5d={};_0x569d5d[_0x2b018e]={'$like':'%'+_0x2ef749[_0x4e86('0x4d')][_0x4e86('0x54')]+'%'};return _0x569d5d;})});}_0x5bda9f=_[_0x4e86('0x55')]({},_0x5bda9f,_0x2ef749[_0x4e86('0x56')]);return db[_0x4e86('0x69')][_0x4e86('0x35')]({'where':_0x5bda9f['where']})['then'](function(_0x2c9830){_0x2c6682[_0x4e86('0x35')]=_0x2c9830;if(_0x2ef749['query'][_0x4e86('0x58')]){_0x5bda9f[_0x4e86('0x6e')]=[{'all':!![]}];}return db[_0x4e86('0x69')][_0x4e86('0x6f')](_0x5bda9f);})[_0x4e86('0x24')](function(_0x50a6e3){_0x2c6682[_0x4e86('0x70')]=_0x50a6e3;return _0x2c6682;});}})[_0x4e86('0x24')](respondWithFilteredResult(_0x46624f,_0x5bda9f))[_0x4e86('0x59')](handleError(_0x46624f,null));};exports[_0x4e86('0x71')]=function(_0x2ee011,_0x4f8c4e,_0x45da5c){return db[_0x4e86('0x43')][_0x4e86('0x61')]({'where':{'id':_0x2ee011[_0x4e86('0x65')]['id']}})['then'](handleEntityNotFound(_0x4f8c4e,null))[_0x4e86('0x24')](function(_0x2e4319){if(_0x2e4319){return _0x2e4319['removeDispositions'](_0x2ee011[_0x4e86('0x4d')][_0x4e86('0x72')]);}})['then'](respondWithStatusCode(_0x4f8c4e,null))[_0x4e86('0x59')](handleError(_0x4f8c4e,null));};exports[_0x4e86('0x73')]=function(_0x5cca5c,_0x59f941,_0x5aebf2){if(_0x5cca5c[_0x4e86('0x5c')]['id']){delete _0x5cca5c[_0x4e86('0x5c')]['id'];}return db['WhatsappAccount'][_0x4e86('0x61')]({'where':{'id':_0x5cca5c[_0x4e86('0x65')]['id']}})[_0x4e86('0x24')](handleEntityNotFound(_0x59f941,null))[_0x4e86('0x24')](function(_0x1ca351){if(_0x1ca351){_0x5cca5c[_0x4e86('0x5c')][_0x4e86('0x68')]=_0x1ca351['id'];return db[_0x4e86('0x74')][_0x4e86('0x5b')](_0x5cca5c[_0x4e86('0x5c')]);}})['then'](respondWithResult(_0x59f941,null))[_0x4e86('0x59')](handleError(_0x59f941,null));};exports[_0x4e86('0x75')]=function(_0x3fd887,_0x7a231f,_0x534bc0){var _0x159d44={'raw':![],'where':{}};var _0x3e4e0a={};var _0x46b210={'count':0x0,'rows':[]};return db[_0x4e86('0x43')][_0x4e86('0x6b')]({'where':{'id':_0x3fd887[_0x4e86('0x65')]['id']}})[_0x4e86('0x24')](handleEntityNotFound(_0x7a231f,null))[_0x4e86('0x24')](function(_0x352fef){if(_0x352fef){_0x3e4e0a[_0x4e86('0x48')]=_['keys'](db[_0x4e86('0x74')][_0x4e86('0x44')]);_0x3e4e0a[_0x4e86('0x4d')]=_[_0x4e86('0x4a')](_0x3fd887['query']);_0x3e4e0a[_0x4e86('0x4b')]=_['intersection'](_0x3e4e0a[_0x4e86('0x48')],_0x3e4e0a[_0x4e86('0x4d')]);_0x159d44[_0x4e86('0x4f')]=_['intersection'](_0x3e4e0a['model'],qs[_0x4e86('0x4e')](_0x3fd887[_0x4e86('0x4d')][_0x4e86('0x4e')]));_0x159d44[_0x4e86('0x4f')]=_0x159d44['attributes'][_0x4e86('0x50')]?_0x159d44['attributes']:_0x3e4e0a[_0x4e86('0x48')];if(!_0x3fd887['query'][_0x4e86('0x51')](_0x4e86('0x52'))){_0x159d44[_0x4e86('0x34')]=qs[_0x4e86('0x34')](_0x3fd887[_0x4e86('0x4d')][_0x4e86('0x34')]);_0x159d44[_0x4e86('0x32')]=qs['offset'](_0x3fd887[_0x4e86('0x4d')][_0x4e86('0x32')]);}_0x159d44[_0x4e86('0x6c')]=qs[_0x4e86('0x53')](_0x3fd887['query']['sort']);_0x159d44['where']=qs['filters'](_[_0x4e86('0x6d')](_0x3fd887['query'],_0x3e4e0a[_0x4e86('0x4b')]));_0x159d44[_0x4e86('0x57')][_0x4e86('0x68')]=_0x352fef['id'];if(_0x3fd887['query'][_0x4e86('0x54')]){_0x159d44[_0x4e86('0x57')]=_[_0x4e86('0x55')](_0x159d44[_0x4e86('0x57')],{'$or':_['map'](_0x159d44[_0x4e86('0x4f')],function(_0x5d2da1){var _0x22a8bc={};_0x22a8bc[_0x5d2da1]={'$like':'%'+_0x3fd887[_0x4e86('0x4d')][_0x4e86('0x54')]+'%'};return _0x22a8bc;})});}_0x159d44=_[_0x4e86('0x55')]({},_0x159d44,_0x3fd887['options']);return db[_0x4e86('0x74')]['count']({'where':_0x159d44[_0x4e86('0x57')]})[_0x4e86('0x24')](function(_0x1c1f3c){_0x46b210['count']=_0x1c1f3c;if(_0x3fd887[_0x4e86('0x4d')]['includeAll']){_0x159d44['include']=[{'all':!![]}];}return db['CannedAnswer'][_0x4e86('0x6f')](_0x159d44);})[_0x4e86('0x24')](function(_0x36b913){_0x46b210['rows']=_0x36b913;return _0x46b210;});}})['then'](respondWithFilteredResult(_0x7a231f,_0x159d44))['catch'](handleError(_0x7a231f,null));};exports['removeAnswers']=function(_0x1bf9e3,_0x2ec3c9,_0x487eec){return db['WhatsappAccount'][_0x4e86('0x61')]({'where':{'id':_0x1bf9e3['params']['id']}})[_0x4e86('0x24')](handleEntityNotFound(_0x2ec3c9,null))[_0x4e86('0x24')](function(_0x58746b){if(_0x58746b){return _0x58746b[_0x4e86('0x76')](_0x1bf9e3[_0x4e86('0x4d')]['ids']);}})[_0x4e86('0x24')](respondWithStatusCode(_0x2ec3c9,null))['catch'](handleError(_0x2ec3c9,null));};exports[_0x4e86('0x77')]=function(_0x85fb37,_0x5943bb,_0x31f983){return db[_0x4e86('0x43')][_0x4e86('0x61')]({'where':{'id':_0x85fb37['params']['id']}})['then'](handleEntityNotFound(_0x5943bb,null))['then'](function(_0x4a5474){if(_0x4a5474){return _0x4a5474[_0x4e86('0x77')](_0x85fb37[_0x4e86('0x5c')][_0x4e86('0x72')],_[_0x4e86('0x78')](_0x85fb37[_0x4e86('0x5c')],[_0x4e86('0x72'),'id'])||{})['spread'](function(_0x273acf){for(var _0x1b3b0e=0x0;_0x1b3b0e<_0x85fb37[_0x4e86('0x5c')][_0x4e86('0x72')][_0x4e86('0x50')];_0x1b3b0e+=0x1){socket['emit'](_0x4e86('0x79'),{'UserId':Number(_0x85fb37['body'][_0x4e86('0x72')][_0x1b3b0e]),'WhatsappAccountId':Number(_0x85fb37['params']['id'])});}return _0x273acf;});}})[_0x4e86('0x24')](respondWithResult(_0x5943bb,null))[_0x4e86('0x59')](handleError(_0x5943bb,null));};exports['removeAgents']=function(_0x4cc810,_0x2a5800,_0x348b4c){return db[_0x4e86('0x43')][_0x4e86('0x61')]({'where':{'id':_0x4cc810[_0x4e86('0x65')]['id']}})[_0x4e86('0x24')](handleEntityNotFound(_0x2a5800,null))[_0x4e86('0x24')](function(_0x3c3f33){if(_0x3c3f33){return _0x3c3f33[_0x4e86('0x7a')](_0x4cc810[_0x4e86('0x4d')][_0x4e86('0x72')])[_0x4e86('0x24')](function(){if(_[_0x4e86('0x7b')](_0x4cc810['query'][_0x4e86('0x72')])){for(var _0x55ee8f=0x0;_0x55ee8f<_0x4cc810[_0x4e86('0x4d')][_0x4e86('0x72')]['length'];_0x55ee8f+=0x1){socket[_0x4e86('0x7c')]('userWhatsappAccount:remove',{'UserId':Number(_0x4cc810[_0x4e86('0x4d')][_0x4e86('0x72')][_0x55ee8f]),'WhatsappAccountId':Number(_0x4cc810[_0x4e86('0x65')]['id'])});}}else{socket['emit'](_0x4e86('0x7d'),{'UserId':Number(_0x4cc810[_0x4e86('0x4d')]['ids']),'WhatsappAccountId':Number(_0x4cc810[_0x4e86('0x65')]['id'])});}});}})[_0x4e86('0x24')](respondWithStatusCode(_0x2a5800,null))[_0x4e86('0x59')](handleError(_0x2a5800,null));};exports[_0x4e86('0x7e')]=function(_0x24de95,_0x15f5df,_0x52975d){var _0x5e8791={};var _0x4c8be2={};var _0x57d314;var _0x3ce1e9;return db[_0x4e86('0x43')]['findOne']({'where':{'id':_0x24de95['params']['id']}})[_0x4e86('0x24')](handleEntityNotFound(_0x15f5df,null))[_0x4e86('0x24')](function(_0x3424e9){if(_0x3424e9){_0x57d314=_0x3424e9;_0x4c8be2[_0x4e86('0x48')]=_[_0x4e86('0x4a')](db[_0x4e86('0x7f')][_0x4e86('0x44')]);_0x4c8be2[_0x4e86('0x4d')]=_[_0x4e86('0x4a')](_0x24de95[_0x4e86('0x4d')]);_0x4c8be2[_0x4e86('0x4b')]=_['intersection'](_0x4c8be2['model'],_0x4c8be2[_0x4e86('0x4d')]);_0x5e8791[_0x4e86('0x4f')]=_[_0x4e86('0x4c')](_0x4c8be2['model'],qs[_0x4e86('0x4e')](_0x24de95[_0x4e86('0x4d')][_0x4e86('0x4e')]));_0x5e8791[_0x4e86('0x4f')]=_0x5e8791[_0x4e86('0x4f')][_0x4e86('0x50')]?_0x5e8791['attributes']:_0x4c8be2[_0x4e86('0x48')];_0x5e8791[_0x4e86('0x6c')]=qs['sort'](_0x24de95[_0x4e86('0x4d')][_0x4e86('0x53')]);_0x5e8791['where']=qs[_0x4e86('0x4b')](_[_0x4e86('0x6d')](_0x24de95['query'],_0x4c8be2[_0x4e86('0x4b')]));if(_0x24de95[_0x4e86('0x4d')][_0x4e86('0x54')]){_0x5e8791['where']=_[_0x4e86('0x55')](_0x5e8791['where'],{'$or':_[_0x4e86('0x49')](_0x5e8791[_0x4e86('0x4f')],function(_0x5caaa7){var _0x17daa1={};_0x17daa1[_0x5caaa7]={'$like':'%'+_0x24de95['query'][_0x4e86('0x54')]+'%'};return _0x17daa1;})});}_0x5e8791=_[_0x4e86('0x55')]({},_0x5e8791,_0x24de95[_0x4e86('0x56')]);return _0x57d314[_0x4e86('0x7e')](_0x5e8791);}})[_0x4e86('0x24')](function(_0x54204e){if(_0x54204e){_0x3ce1e9=_0x54204e['length'];if(!_0x24de95[_0x4e86('0x4d')]['hasOwnProperty'](_0x4e86('0x52'))){_0x5e8791['limit']=qs[_0x4e86('0x34')](_0x24de95[_0x4e86('0x4d')]['limit']);_0x5e8791[_0x4e86('0x32')]=qs[_0x4e86('0x32')](_0x24de95[_0x4e86('0x4d')][_0x4e86('0x32')]);}return _0x57d314[_0x4e86('0x7e')](_0x5e8791);}})[_0x4e86('0x24')](function(_0x21c93e){if(_0x21c93e){return _0x21c93e?{'count':_0x3ce1e9,'rows':_0x21c93e}:null;}})[_0x4e86('0x24')](respondWithResult(_0x15f5df,null))[_0x4e86('0x59')](handleError(_0x15f5df,null));};exports[_0x4e86('0x80')]=function(_0x43a307,_0x1019e8){var _0x2aa773=_0x43a307[_0x4e86('0x65')]['id'];var _0x465ff3=_0x43a307[_0x4e86('0x5c')];var _0x318fb6=0xc8;var _0x2aa55f=null;return db[_0x4e86('0x81')][_0x4e86('0x82')]({'isolationLevel':db[_0x4e86('0x81')][_0x4e86('0x83')]['ISOLATION_LEVELS'][_0x4e86('0x84')]},function(_0x3c90fb){return db[_0x4e86('0x43')][_0x4e86('0x6b')]({'where':{'id':_0x2aa773},'transaction':_0x3c90fb})[_0x4e86('0x24')](function(_0x70ac60){if(_0x70ac60){return db[_0x4e86('0x85')]['destroy']({'where':{'WhatsappAccountId':_0x2aa773},'transaction':_0x3c90fb})[_0x4e86('0x24')](function(){var _0x8d2ad1=_[_0x4e86('0x49')](_0x465ff3,function(_0x2cd3ef){_0x2cd3ef[_0x4e86('0x68')]=_0x2aa773;return _0x2cd3ef;});return db[_0x4e86('0x85')][_0x4e86('0x86')](_0x8d2ad1,{'transaction':_0x3c90fb});});}else{_0x318fb6=0x194;_0x2aa55f=[];}});})[_0x4e86('0x24')](function(){if(_0x318fb6!==0x194){return db[_0x4e86('0x85')]['findAndCountAll']({'where':{'WhatsappAccountId':_0x2aa773},'order':'priority'})[_0x4e86('0x24')](function(_0x135f9c){_0x2aa55f=_0x135f9c;});}})[_0x4e86('0x59')](function(_0x246af7){_0x318fb6=0x1f4;logger[_0x4e86('0x2a')](_0x246af7[_0x4e86('0x3e')]);if(_0x246af7['name']){delete _0x246af7[_0x4e86('0x3f')];}_0x2aa55f=_0x246af7;})[_0x4e86('0x87')](function(){if(_0x2aa55f===null){_0x1019e8['sendStatus'](_0x318fb6);}else{if(_0x318fb6===0x1f4){_0x1019e8[_0x4e86('0x2f')](_0x318fb6)['send'](_0x2aa55f);}else{_0x1019e8[_0x4e86('0x2f')](_0x318fb6)[_0x4e86('0x31')](_0x2aa55f);}}});};exports[_0x4e86('0x88')]=function(_0x55927e,_0x3546ef,_0x1df70f){var _0x46810a={};var _0x404ff8={};var _0x174329;var _0x224727;return db['WhatsappAccount'][_0x4e86('0x6b')]({'where':{'id':_0x55927e[_0x4e86('0x65')]['id']}})[_0x4e86('0x24')](handleEntityNotFound(_0x3546ef,null))[_0x4e86('0x24')](function(_0x561fc7){if(_0x561fc7){_0x174329=_0x561fc7;_0x404ff8[_0x4e86('0x48')]=_[_0x4e86('0x4a')](db['WhatsappApplication'][_0x4e86('0x44')]);_0x404ff8['query']=_[_0x4e86('0x4a')](_0x55927e['query']);_0x404ff8['filters']=_[_0x4e86('0x4c')](_0x404ff8[_0x4e86('0x48')],_0x404ff8['query']);_0x46810a[_0x4e86('0x4f')]=_[_0x4e86('0x4c')](_0x404ff8[_0x4e86('0x48')],qs['fields'](_0x55927e[_0x4e86('0x4d')][_0x4e86('0x4e')]));_0x46810a[_0x4e86('0x4f')]=_0x46810a[_0x4e86('0x4f')][_0x4e86('0x50')]?_0x46810a['attributes']:_0x404ff8[_0x4e86('0x48')];_0x46810a['order']=qs[_0x4e86('0x53')](_0x55927e[_0x4e86('0x4d')][_0x4e86('0x53')]);_0x46810a['where']=qs[_0x4e86('0x4b')](_[_0x4e86('0x6d')](_0x55927e[_0x4e86('0x4d')],_0x404ff8[_0x4e86('0x4b')]));if(_0x55927e[_0x4e86('0x4d')][_0x4e86('0x54')]){_0x46810a[_0x4e86('0x57')]=_[_0x4e86('0x55')](_0x46810a[_0x4e86('0x57')],{'$or':_['map'](_0x46810a[_0x4e86('0x4f')],function(_0x50a9cc){var _0x27f68c={};_0x27f68c[_0x50a9cc]={'$like':'%'+_0x55927e[_0x4e86('0x4d')]['filter']+'%'};return _0x27f68c;})});}_0x46810a=_['merge']({},_0x46810a,_0x55927e[_0x4e86('0x56')]);return _0x174329[_0x4e86('0x88')](_0x46810a);}})[_0x4e86('0x24')](function(_0x54c7bb){if(_0x54c7bb){_0x224727=_0x54c7bb[_0x4e86('0x50')];if(!_0x55927e[_0x4e86('0x4d')]['hasOwnProperty'](_0x4e86('0x52'))){_0x46810a[_0x4e86('0x34')]=qs[_0x4e86('0x34')](_0x55927e[_0x4e86('0x4d')]['limit']);_0x46810a['offset']=qs['offset'](_0x55927e[_0x4e86('0x4d')]['offset']);}return _0x174329[_0x4e86('0x88')](_0x46810a);}})[_0x4e86('0x24')](function(_0x1d5f8a){if(_0x1d5f8a){return _0x1d5f8a?{'count':_0x224727,'rows':_0x1d5f8a}:null;}})[_0x4e86('0x24')](respondWithResult(_0x3546ef,null))['catch'](handleError(_0x3546ef,null));};exports[_0x4e86('0x89')]=function(_0x2f3dc3,_0x25efd0,_0x48871f){var _0x26577b={'channel':_0x4e86('0x8a')};var _0x253452=[];var _0x367ced=[];var _0x216a6b={};return db['WhatsappAccount']['find']({'where':{'id':_0x2f3dc3[_0x4e86('0x65')]['id']},'include':[{'model':db[_0x4e86('0x85')],'as':_0x4e86('0x8b')}]})['then'](handleEntityNotFound(_0x25efd0,null))[_0x4e86('0x24')](function(_0x546c7f){_0x26577b[_0x4e86('0x8c')]=_0x546c7f;if(_0x26577b[_0x4e86('0x8c')]&&_0x26577b['account'][_0x4e86('0x46')]===_0x4e86('0x8d')&&_0x2f3dc3[_0x4e86('0x5c')][_0x4e86('0x8e')]){if(_0x2f3dc3[_0x4e86('0x5c')]['statuses']['length']===0x0)return;if(_0x2f3dc3[_0x4e86('0x5c')][_0x4e86('0x8e')][0x0][_0x4e86('0x8f')]!==_0x4e86('0x90'))return;return db[_0x4e86('0x91')][_0x4e86('0x64')]({'read':!![],'readAt':_0x2f3dc3[_0x4e86('0x5c')][_0x4e86('0x8e')][0x0][_0x4e86('0x92')]},{'where':{'messageId':_0x2f3dc3[_0x4e86('0x5c')]['statuses'][0x0][_0x4e86('0x93')]},'individualHooks':!![]})[_0x4e86('0x24')](function(_0x4cdb93){return _0x25efd0['status'](0xc8)[_0x4e86('0x31')](_0x4cdb93);});}_0x26577b[_0x4e86('0x94')]=_['orderBy'](_0x546c7f['Applications'],[_0x4e86('0x95')],[_0x4e86('0x96')]);if(_0x26577b['account'][_0x4e86('0x8b')]){delete _0x26577b[_0x4e86('0x8c')][_0x4e86('0x8b')];}return db[_0x4e86('0x97')][_0x4e86('0x66')]()[_0x4e86('0x24')](function(_0x5abbce){if(!_0x5abbce){throw new db['Sequelize'][(_0x4e86('0x98'))]('no\x20available\x20attributes');}_0x253452=_[_0x4e86('0x99')](_[_0x4e86('0x4a')](_0x5abbce),[_0x4e86('0x9a'),_0x4e86('0x9b')]);_0x367ced=_[_0x4e86('0x99')](_[_0x4e86('0x4a')](_0x5abbce),['createdAt',_0x4e86('0x9b'),_0x4e86('0x9c'),_0x4e86('0x9d')]);_0x26577b[_0x4e86('0x5c')]={'mapKey':_0x4e86('0x9e')};if(_0x26577b[_0x4e86('0x8c')]&&_0x26577b[_0x4e86('0x8c')][_0x4e86('0x46')]===_0x4e86('0x9f')){_0x26577b[_0x4e86('0x5c')][_0x4e86('0xa0')]=_0x2f3dc3['body'][_0x4e86('0xa1')]['replace'](_0x4e86('0xa2'),'');_0x26577b[_0x4e86('0x5c')][_0x4e86('0x5c')]=_0x2f3dc3[_0x4e86('0x5c')][_0x4e86('0xa3')];_0x26577b['body'][_0x4e86('0xa4')]=_0x2f3dc3[_0x4e86('0x5c')][_0x4e86('0xa5')];}if(_0x26577b[_0x4e86('0x8c')]&&_0x26577b['account'][_0x4e86('0x46')]===_0x4e86('0x8d')){_0x26577b['body'][_0x4e86('0xa0')]=_0x2f3dc3['body'][_0x4e86('0xa6')][0x0][_0x4e86('0xa0')];_0x26577b[_0x4e86('0x5c')]['body']=_0x2f3dc3[_0x4e86('0x5c')]['notifications'][0x0][_0x4e86('0x2c')][_0x4e86('0x5c')];_0x26577b[_0x4e86('0x5c')][_0x4e86('0xa4')]=_0x2f3dc3['body'][_0x4e86('0xa6')][0x0][_0x4e86('0x93')];}if(_0x26577b[_0x4e86('0x5c')]['id']){delete _0x26577b[_0x4e86('0x5c')]['id'];}if(_['isNil'](_0x26577b[_0x4e86('0x5c')][_0x4e86('0xa0')])){throw new db['Sequelize'][(_0x4e86('0x98'))](_0x4e86('0xa7'));}if(_[_0x4e86('0xa8')](_0x26577b[_0x4e86('0x5c')][_0x4e86('0x5c')])||_0x26577b[_0x4e86('0x5c')][_0x4e86('0x5c')]===''){throw new db[(_0x4e86('0xa9'))][(_0x4e86('0x98'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x4e86('0xa8')](_0x26577b[_0x4e86('0x5c')][_0x4e86('0xaa')])){throw new db[(_0x4e86('0xa9'))][(_0x4e86('0x98'))](_0x4e86('0xab')+_0x367ced);}if(!_['includes'](_0x367ced,_0x26577b[_0x4e86('0x5c')][_0x4e86('0xaa')])){throw new db[(_0x4e86('0xa9'))][(_0x4e86('0x98'))](_0x4e86('0xac')+_0x367ced);}_0x216a6b[_0x26577b[_0x4e86('0x5c')][_0x4e86('0xaa')]]=_0x26577b[_0x4e86('0x5c')][_0x4e86('0xa0')];return db[_0x4e86('0xad')][_0x4e86('0x61')]({'where':{'id':_0x26577b['account']['ListId']},'include':[{'model':db[_0x4e86('0x97')],'as':_0x4e86('0xae'),'where':_0x216a6b,'limit':0x1,'order':[[_0x4e86('0x9b'),_0x4e86('0xaf')]]}]});})[_0x4e86('0x24')](handleEntityNotFound(_0x25efd0,null))[_0x4e86('0x24')](function(_0x3acae1){if(_0x3acae1){_0x26577b['list']=_[_0x4e86('0x78')](_0x3acae1,[_0x4e86('0xae')]);if(_0x3acae1[_0x4e86('0xae')]['length']){return _0x3acae1[_0x4e86('0xae')][0x0];}var _0x1d56ca=_[_0x4e86('0x1d')](_0x26577b[_0x4e86('0x5c')],{'firstName':_0x26577b[_0x4e86('0x5c')][_0x4e86('0xa0')],'ListId':_0x3acae1['id']});_0x1d56ca[_0x26577b[_0x4e86('0x5c')][_0x4e86('0xaa')]]=_0x26577b['body']['from'];return db[_0x4e86('0x97')][_0x4e86('0x5b')](_0x1d56ca,{'fields':_0x253452,'raw':!![]});}})[_0x4e86('0x24')](handleEntityNotFound(_0x25efd0,null))['then'](function(_0x4bc7b8){if(_0x4bc7b8){_0x26577b[_0x4e86('0xb0')]=_0x4bc7b8;var _0x986733={'ContactId':_0x4bc7b8['id'],'phone':_0x26577b[_0x4e86('0x5c')]['from'],'WhatsappAccountId':_0x2f3dc3['params']['id']};var _0x2dd54f={'ContactId':_0x4bc7b8['id'],'WhatsappAccountId':_0x2f3dc3[_0x4e86('0x65')]['id'],'closed':![]};return db['WhatsappInteraction']['find']({'where':_0x2dd54f})[_0x4e86('0x24')](function(_0x392fb2){if(_0x392fb2){return[_0x392fb2,![]];}return db[_0x4e86('0xb1')][_0x4e86('0x5b')](_0x986733)[_0x4e86('0x24')](function(_0x179776){return[_0x179776,!![]];});});}})[_0x4e86('0xb2')](function(_0x42b894,_0x3d6031){_0x26577b[_0x4e86('0xb3')]=_0x42b894[_0x4e86('0x3b')]({'plain':!![]});_0x26577b[_0x4e86('0xb3')][_0x4e86('0xb4')]=![];if(_0x3d6031){if(_0x26577b[_0x4e86('0x8c')]['autoclose']){_0x26577b['applications'][_0x4e86('0xb5')]({'id':0x0,'priority':_0x26577b[_0x4e86('0x94')]['length']+0x1,'app':_0x4e86('0xb6'),'appdata':'unmanaged','interval':_0x4e86('0xb7')});}_0x26577b[_0x4e86('0xb3')]['created']=!![];}return db[_0x4e86('0x91')][_0x4e86('0x5b')]({'phone':_0x26577b[_0x4e86('0x5c')][_0x4e86('0xa0')],'messageId':_0x26577b[_0x4e86('0x5c')]['messageId'],'body':_0x26577b[_0x4e86('0x5c')][_0x4e86('0x5c')],'WhatsappAccountId':_0x2f3dc3[_0x4e86('0x65')]['id'],'WhatsappInteractionId':_0x42b894['id'],'direction':'in','ContactId':_0x42b894['ContactId'],'AttachmentId':_0x26577b['body'][_0x4e86('0xb8')]});})[_0x4e86('0x24')](function(_0x6d2abd){_0x26577b[_0x4e86('0x2c')]=_0x6d2abd;if(!_0x26577b[_0x4e86('0xb3')][_0x4e86('0xb9')])return;return db[_0x4e86('0x7f')][_0x4e86('0x61')]({'attributes':['id','name'],'where':{'id':_0x26577b[_0x4e86('0xb3')][_0x4e86('0xb9')]}});})['then'](function(_0x94e4d0){if(_0x94e4d0){_0x26577b[_0x4e86('0x94')][_0x4e86('0xba')]({'id':0x0,'priority':0x0,'app':_0x4e86('0xbb'),'appdata':_0x94e4d0['name']+','+(_0x26577b[_0x4e86('0x8c')]['waitForTheAssignedAgent']||0xa),'interval':'*,*,*,*'});}if(!_0x26577b[_0x4e86('0xb3')][_0x4e86('0xbc')])return;return db[_0x4e86('0xbd')][_0x4e86('0x61')]({'attributes':['id',_0x4e86('0x3f')],'where':{'id':_0x26577b[_0x4e86('0xb3')][_0x4e86('0xbc')]}});})['then'](function(_0x5a65d4){if(_0x5a65d4){_0x26577b['applications'][_0x4e86('0xba')]({'id':0x0,'priority':0x1,'app':'queue','appdata':_0x5a65d4[_0x4e86('0x3f')]+','+(_0x26577b['account']['waitForTheAssignedQueue']||0x12c),'interval':_0x4e86('0xb7')});}return respondWithRpcPromise(_0x4e86('0xbe'),_0x4e86('0xbf'),_0x26577b);})[_0x4e86('0x24')](function(_0x4b74c1){if(_0x4b74c1){var _0x16d10f=0xc8;var _0x26cf02=_0x4e86('0xc0');logger['info'](_0x4e86('0x27'),_0x26cf02,_0x16d10f,_0x4e86('0xc1'));logger['debug'](_0x4e86('0xc2'),_0x26cf02,_0x16d10f,_0x4e86('0xc1'),JSON[_0x4e86('0x29')](_0x4b74c1));if(_0x26577b['account']['type']===_0x4e86('0x9f')){return _0x25efd0['status'](_0x16d10f)['set'](_0x4e86('0xc3'),_0x4e86('0xc4'))['send'](_0x4e86('0xc5'));}else{return _0x25efd0['status'](_0x16d10f)['json'](_0x4b74c1);}}});})['catch'](handleError(_0x25efd0,null));};exports[_0x4e86('0x40')]=function(_0xfc6b17,_0x5e4162,_0x29f1f1){var _0x16fe84,_0x15936d,_0x17b843;if(_[_0x4e86('0xa8')](_0xfc6b17[_0x4e86('0x5c')]['body'])||_0xfc6b17[_0x4e86('0x5c')][_0x4e86('0x5c')]===''){throw new db[(_0x4e86('0xa9'))][(_0x4e86('0x98'))](_0x4e86('0xc6'));}if(_[_0x4e86('0xa8')](_0xfc6b17[_0x4e86('0x5c')]['to'])){throw new db[(_0x4e86('0xa9'))][(_0x4e86('0x98'))](_0x4e86('0xc7'));}_0x16fe84=_0xfc6b17[_0x4e86('0x5c')]['to'];return db[_0x4e86('0x43')][_0x4e86('0x61')]({'where':{'id':_0xfc6b17[_0x4e86('0x65')]['id']},'include':[{'model':db[_0x4e86('0xad')],'as':_0x4e86('0xc8'),'include':[{'model':db[_0x4e86('0x97')],'as':'Contacts','where':{'mobile':_0x16fe84},'limit':0x1,'order':[['updatedAt',_0x4e86('0xaf')]]}]}]})[_0x4e86('0x24')](handleEntityNotFound(_0x5e4162,null))[_0x4e86('0x24')](function(_0x4b73c0){if(_0x4b73c0&&_0x4b73c0['List']){_0x15936d=_0x4b73c0[_0x4e86('0x3b')]({'plain':!![]});if(_0x15936d[_0x4e86('0xc8')]&&_0x15936d['List'][_0x4e86('0xae')][_0x4e86('0x50')]){return _0x15936d['List']['Contacts'][0x0];}return db[_0x4e86('0x97')][_0x4e86('0x5b')](_[_0x4e86('0x1d')](_0xfc6b17['body'],{'firstName':_0x16fe84,'mobile':_0x16fe84,'phone':_0x16fe84,'ListId':_0x15936d[_0x4e86('0x9d')]}));}})[_0x4e86('0x24')](handleEntityNotFound(_0x5e4162,null))[_0x4e86('0x24')](function(_0x53864a){if(_0x53864a){_0x17b843=_0x53864a;return db[_0x4e86('0xb1')][_0x4e86('0x61')]({'where':{'ContactId':_0x17b843['id'],'closed':![],'WhatsappAccountId':_0x15936d['id']}})['then'](function(_0x3592a0){if(_0x3592a0){return[_0x3592a0,![]];}return db[_0x4e86('0xb1')][_0x4e86('0x5b')]({'UserId':_0xfc6b17['user']['id'],'ContactId':_0x17b843['id'],'WhatsappAccountId':_0x15936d['id'],'phone':_0x16fe84,'firstMsgDirection':'out','Messages':[_[_0x4e86('0x55')](_0xfc6b17[_0x4e86('0x5c')],{'read':![],'body':_0xfc6b17['body']['body'],'phone':_0x16fe84,'WhatsappAccountId':_0x15936d['id'],'UserId':_0xfc6b17[_0x4e86('0x5d')]['id'],'ContactId':_0x17b843['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':'Messages'}]})[_0x4e86('0x24')](function(_0x18f584){return[_0x18f584,!![]];});});}})[_0x4e86('0xb2')](function(_0x4a986a,_0x5bff20){if(_0x5bff20){return _0x4a986a;}return db[_0x4e86('0x91')][_0x4e86('0x5b')](_[_0x4e86('0x55')](_0xfc6b17[_0x4e86('0x5c')],{'read':![],'body':_0xfc6b17[_0x4e86('0x5c')][_0x4e86('0x5c')],'phone':_0x16fe84,'WhatsappAccountId':_0x15936d['id'],'WhatsappInteractionId':_0x4a986a['id'],'UserId':_0xfc6b17['user']['id'],'ContactId':_0x17b843['id']}))['then'](function(_0x559e76){_0x4a986a[_0x4e86('0xc9')][_0x4e86('0xca')]=[];_0x4a986a['dataValues']['Messages']['push'](_0x559e76[_0x4e86('0xc9')]);return _0x4a986a;});})[_0x4e86('0x24')](respondWithResult(_0x5e4162,null))[_0x4e86('0x59')](handleError(_0x5e4162,null));};
\ No newline at end of file
index 65efb94..968f8de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d61=['hasOwnProperty','hook','events','../../mysqldb','WhatsappAccount','setMaxListeners','save','update','remove','emit'];(function(_0x2ec02f,_0x3aacf6){var _0x5dac31=function(_0xbc3a42){while(--_0xbc3a42){_0x2ec02f['push'](_0x2ec02f['shift']());}};_0x5dac31(++_0x3aacf6);}(_0x6d61,0x160));var _0x16d6=function(_0x45b1ba,_0x5a6a21){_0x45b1ba=_0x45b1ba-0x0;var _0x145ddb=_0x6d61[_0x45b1ba];return _0x145ddb;};'use strict';var EventEmitter=require(_0x16d6('0x0'));var WhatsappAccount=require(_0x16d6('0x1'))['db'][_0x16d6('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x16d6('0x3')](0x0);var events={'afterCreate':_0x16d6('0x4'),'afterUpdate':_0x16d6('0x5'),'afterDestroy':_0x16d6('0x6')};function emitEvent(_0x3ffa00){return function(_0x55c614,_0x2cf0fe,_0x4da292){WhatsappAccountEvents[_0x16d6('0x7')](_0x3ffa00+':'+_0x55c614['id'],_0x55c614);WhatsappAccountEvents['emit'](_0x3ffa00,_0x55c614);_0x4da292(null);};}for(var e in events){if(events[_0x16d6('0x8')](e)){var event=events[e];WhatsappAccount[_0x16d6('0x9')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
+var _0xb801=['emit','hook','exports','events','../../mysqldb','WhatsappAccount','setMaxListeners','save','update','remove'];(function(_0x13fc3d,_0x56cd85){var _0x476e7b=function(_0x38d4bd){while(--_0x38d4bd){_0x13fc3d['push'](_0x13fc3d['shift']());}};_0x476e7b(++_0x56cd85);}(_0xb801,0x1d9));var _0x1b80=function(_0x16759a,_0x2c1f70){_0x16759a=_0x16759a-0x0;var _0x49d27a=_0xb801[_0x16759a];return _0x49d27a;};'use strict';var EventEmitter=require(_0x1b80('0x0'));var WhatsappAccount=require(_0x1b80('0x1'))['db'][_0x1b80('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x1b80('0x3')](0x0);var events={'afterCreate':_0x1b80('0x4'),'afterUpdate':_0x1b80('0x5'),'afterDestroy':_0x1b80('0x6')};function emitEvent(_0x426fe7){return function(_0x1d16bf,_0x163764,_0x67a821){WhatsappAccountEvents[_0x1b80('0x7')](_0x426fe7+':'+_0x1d16bf['id'],_0x1d16bf);WhatsappAccountEvents[_0x1b80('0x7')](_0x426fe7,_0x1d16bf);_0x67a821(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount[_0x1b80('0x8')](e,emitEvent(event));}}module[_0x1b80('0x9')]=WhatsappAccountEvents;
\ No newline at end of file
index 58344dd..f909664 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x074d=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappAccount.attributes','exports','WhatsappAccount','lodash','../../config/logger'];(function(_0x15ab05,_0x2acb8f){var _0x5231fb=function(_0x67f0f7){while(--_0x67f0f7){_0x15ab05['push'](_0x15ab05['shift']());}};_0x5231fb(++_0x2acb8f);}(_0x074d,0xd6));var _0xd074=function(_0xa184f,_0x33d0c9){_0xa184f=_0xa184f-0x0;var _0x466167=_0x074d[_0xa184f];return _0x466167;};'use strict';var _=require(_0xd074('0x0'));var util=require('util');var logger=require(_0xd074('0x1'))(_0xd074('0x2'));var moment=require(_0xd074('0x3'));var BPromise=require(_0xd074('0x4'));var rp=require(_0xd074('0x5'));var fs=require('fs');var path=require(_0xd074('0x6'));var rimraf=require(_0xd074('0x7'));var config=require(_0xd074('0x8'));var attributes=require(_0xd074('0x9'));module[_0xd074('0xa')]=function(_0x7d7a60,_0x3b9c44){return _0x7d7a60['define'](_0xd074('0xb'),attributes,{'tableName':'whatsapp_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6930=['util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment','exports','WhatsappAccount','whatsapp_accounts','lodash'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x6930,0x1b7));var _0x0693=function(_0x5839c0,_0x1bfa27){_0x5839c0=_0x5839c0-0x0;var _0x48552a=_0x6930[_0x5839c0];return _0x48552a;};'use strict';var _=require(_0x0693('0x0'));var util=require(_0x0693('0x1'));var logger=require(_0x0693('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0693('0x3'));var rp=require(_0x0693('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0693('0x5'));var config=require(_0x0693('0x6'));var attributes=require('./whatsappAccount.attributes');module[_0x0693('0x7')]=function(_0x53b199,_0x318774){return _0x53b199['define'](_0x0693('0x8'),attributes,{'tableName':_0x0693('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 51033d0..7577b64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3b7=['http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where','include','map','model','attributes','debug','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x15d23b,_0x24bfb2){var _0x52e4fe=function(_0x52efe5){while(--_0x52efe5){_0x15d23b['push'](_0x15d23b['shift']());}};_0x52e4fe(++_0x24bfb2);}(_0xb3b7,0x6c));var _0x7b3b=function(_0x5b0dbb,_0x2ac87f){_0x5b0dbb=_0x5b0dbb-0x0;var _0xd0901=_0xb3b7[_0x5b0dbb];return _0xd0901;};'use strict';var _=require('lodash');var util=require(_0x7b3b('0x0'));var moment=require(_0x7b3b('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7b3b('0x2'));var db=require(_0x7b3b('0x3'))['db'];var utils=require(_0x7b3b('0x4'));var logger=require(_0x7b3b('0x5'))(_0x7b3b('0x6'));var config=require('../../config/environment');var jayson=require(_0x7b3b('0x7'));var client=jayson[_0x7b3b('0x8')][_0x7b3b('0x9')]({'port':0x232a});config[_0x7b3b('0xa')]=_[_0x7b3b('0xb')](config[_0x7b3b('0xa')],{'host':_0x7b3b('0xc'),'port':0x18eb});var socket=require(_0x7b3b('0xd'))(new Redis(config[_0x7b3b('0xa')]));require(_0x7b3b('0xe'))[_0x7b3b('0xf')](socket);function respondWithRpcPromise(_0x3e077f,_0x701fce,_0x479951){return new BPromise(function(_0x482c72,_0xc89e70){return client[_0x7b3b('0x10')](_0x3e077f,_0x479951)[_0x7b3b('0x11')](function(_0x54b447){logger[_0x7b3b('0x12')](_0x7b3b('0x13'),_0x701fce,_0x7b3b('0x14'));logger['debug'](_0x7b3b('0x15'),_0x701fce,'request\x20sent',JSON[_0x7b3b('0x16')](_0x54b447));if(_0x54b447[_0x7b3b('0x17')]){if(_0x54b447[_0x7b3b('0x17')][_0x7b3b('0x18')]===0x1f4){logger[_0x7b3b('0x17')](_0x7b3b('0x13'),_0x701fce,_0x54b447[_0x7b3b('0x17')][_0x7b3b('0x19')]);return _0xc89e70(_0x54b447[_0x7b3b('0x17')]['message']);}logger['error'](_0x7b3b('0x13'),_0x701fce,_0x54b447['error'][_0x7b3b('0x19')]);return _0x482c72(_0x54b447[_0x7b3b('0x17')][_0x7b3b('0x19')]);}else{logger[_0x7b3b('0x12')](_0x7b3b('0x13'),_0x701fce,'request\x20sent');_0x482c72(_0x54b447[_0x7b3b('0x1a')]['message']);}})[_0x7b3b('0x1b')](function(_0x10c82b){logger[_0x7b3b('0x17')](_0x7b3b('0x13'),_0x701fce,_0x10c82b);_0xc89e70(_0x10c82b);});});}exports[_0x7b3b('0x1c')]=function(_0x391348){var _0x468f11=this;return new Promise(function(_0x402008,_0x574e78){return db[_0x7b3b('0x1d')][_0x7b3b('0x1e')]({'raw':_0x391348[_0x7b3b('0x1f')]?_0x391348[_0x7b3b('0x1f')][_0x7b3b('0x20')]===undefined?!![]:![]:!![],'where':_0x391348[_0x7b3b('0x1f')]?_0x391348[_0x7b3b('0x1f')][_0x7b3b('0x21')]||null:null,'attributes':_0x391348[_0x7b3b('0x1f')]?_0x391348[_0x7b3b('0x1f')]['attributes']||null:null,'include':_0x391348['options']?_0x391348[_0x7b3b('0x1f')][_0x7b3b('0x22')]?_[_0x7b3b('0x23')](_0x391348[_0x7b3b('0x1f')]['include'],function(_0x4ac096){return{'model':db[_0x4ac096[_0x7b3b('0x24')]],'as':_0x4ac096['as'],'attributes':_0x4ac096[_0x7b3b('0x25')],'include':_0x4ac096['include']?_[_0x7b3b('0x23')](_0x4ac096['include'],function(_0x2c2431){return{'model':db[_0x2c2431[_0x7b3b('0x24')]],'as':_0x2c2431['as'],'attributes':_0x2c2431[_0x7b3b('0x25')],'include':_0x2c2431[_0x7b3b('0x22')]?_[_0x7b3b('0x23')](_0x2c2431[_0x7b3b('0x22')],function(_0x5580e5){return{'model':db[_0x5580e5['model']],'as':_0x5580e5['as'],'attributes':_0x5580e5[_0x7b3b('0x25')]};}):[]};}):[]};}):[]:[]})[_0x7b3b('0x11')](function(_0x476e3f){logger[_0x7b3b('0x12')](_0x7b3b('0x1c'),_0x391348);logger[_0x7b3b('0x26')](_0x7b3b('0x1c'),_0x391348,JSON[_0x7b3b('0x16')](_0x476e3f));_0x402008(_0x476e3f);})[_0x7b3b('0x1b')](function(_0x46bdf6){logger[_0x7b3b('0x17')](_0x7b3b('0x1c'),_0x46bdf6[_0x7b3b('0x19')],_0x391348);_0x574e78(_0x468f11['error'](0x1f4,_0x46bdf6[_0x7b3b('0x19')]));});});};
\ No newline at end of file
+var _0xeaf3=['find','options','attributes','include','map','model','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','localhost','socket.io-emitter','redis','./whatsappAccount.socket','register','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch','ShowWhatsappAccount','WhatsappAccount'];(function(_0x44a814,_0x58c1e5){var _0x15c15f=function(_0x19cd66){while(--_0x19cd66){_0x44a814['push'](_0x44a814['shift']());}};_0x15c15f(++_0x58c1e5);}(_0xeaf3,0x1cd));var _0x3eaf=function(_0xffe100,_0x19a361){_0xffe100=_0xffe100-0x0;var _0x1ce383=_0xeaf3[_0xffe100];return _0x1ce383;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3eaf('0x0'));var BPromise=require(_0x3eaf('0x1'));var rs=require(_0x3eaf('0x2'));var fs=require('fs');var Redis=require(_0x3eaf('0x3'));var db=require(_0x3eaf('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3eaf('0x5'))(_0x3eaf('0x6'));var config=require(_0x3eaf('0x7'));var jayson=require(_0x3eaf('0x8'));var client=jayson[_0x3eaf('0x9')]['http']({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0x3eaf('0xa'),'port':0x18eb});var socket=require(_0x3eaf('0xb'))(new Redis(config[_0x3eaf('0xc')]));require(_0x3eaf('0xd'))[_0x3eaf('0xe')](socket);function respondWithRpcPromise(_0x18cde7,_0x3d6ced,_0x1b9571){return new BPromise(function(_0x2a0dd0,_0x2d69f2){return client[_0x3eaf('0xf')](_0x18cde7,_0x1b9571)[_0x3eaf('0x10')](function(_0x55c0e4){logger[_0x3eaf('0x11')](_0x3eaf('0x12'),_0x3d6ced,_0x3eaf('0x13'));logger[_0x3eaf('0x14')](_0x3eaf('0x15'),_0x3d6ced,'request\x20sent',JSON[_0x3eaf('0x16')](_0x55c0e4));if(_0x55c0e4['error']){if(_0x55c0e4['error'][_0x3eaf('0x17')]===0x1f4){logger[_0x3eaf('0x18')]('WhatsappAccount,\x20%s,\x20%s',_0x3d6ced,_0x55c0e4[_0x3eaf('0x18')]['message']);return _0x2d69f2(_0x55c0e4[_0x3eaf('0x18')]['message']);}logger[_0x3eaf('0x18')]('WhatsappAccount,\x20%s,\x20%s',_0x3d6ced,_0x55c0e4[_0x3eaf('0x18')][_0x3eaf('0x19')]);return _0x2a0dd0(_0x55c0e4[_0x3eaf('0x18')][_0x3eaf('0x19')]);}else{logger[_0x3eaf('0x11')](_0x3eaf('0x12'),_0x3d6ced,_0x3eaf('0x13'));_0x2a0dd0(_0x55c0e4['result'][_0x3eaf('0x19')]);}})[_0x3eaf('0x1a')](function(_0x3430de){logger[_0x3eaf('0x18')](_0x3eaf('0x12'),_0x3d6ced,_0x3430de);_0x2d69f2(_0x3430de);});});}exports[_0x3eaf('0x1b')]=function(_0x1774e2){var _0x2e1b9f=this;return new Promise(function(_0x5ea37e,_0x3aba68){return db[_0x3eaf('0x1c')][_0x3eaf('0x1d')]({'raw':_0x1774e2['options']?_0x1774e2[_0x3eaf('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x1774e2['options']?_0x1774e2['options']['where']||null:null,'attributes':_0x1774e2['options']?_0x1774e2['options'][_0x3eaf('0x1f')]||null:null,'include':_0x1774e2[_0x3eaf('0x1e')]?_0x1774e2[_0x3eaf('0x1e')][_0x3eaf('0x20')]?_[_0x3eaf('0x21')](_0x1774e2[_0x3eaf('0x1e')]['include'],function(_0x3272da){return{'model':db[_0x3272da[_0x3eaf('0x22')]],'as':_0x3272da['as'],'attributes':_0x3272da['attributes'],'include':_0x3272da['include']?_[_0x3eaf('0x21')](_0x3272da[_0x3eaf('0x20')],function(_0xea0baf){return{'model':db[_0xea0baf[_0x3eaf('0x22')]],'as':_0xea0baf['as'],'attributes':_0xea0baf['attributes'],'include':_0xea0baf['include']?_[_0x3eaf('0x21')](_0xea0baf['include'],function(_0x3cc19a){return{'model':db[_0x3cc19a['model']],'as':_0x3cc19a['as'],'attributes':_0x3cc19a[_0x3eaf('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x3eaf('0x10')](function(_0x35a3c9){logger[_0x3eaf('0x11')](_0x3eaf('0x1b'),_0x1774e2);logger['debug'](_0x3eaf('0x1b'),_0x1774e2,JSON[_0x3eaf('0x16')](_0x35a3c9));_0x5ea37e(_0x35a3c9);})[_0x3eaf('0x1a')](function(_0x2134e9){logger[_0x3eaf('0x18')](_0x3eaf('0x1b'),_0x2134e9[_0x3eaf('0x19')],_0x1774e2);_0x3aba68(_0x2e1b9f['error'](0x1f4,_0x2134e9[_0x3eaf('0x19')]));});});};
\ No newline at end of file
index 67ebdd6..0fca362 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0aa=['removeListener','register','length','whatsappAccount:','./whatsappAccount.events','save','remove','update'];(function(_0x438912,_0x3f7f74){var _0x18112f=function(_0x1b8ac9){while(--_0x1b8ac9){_0x438912['push'](_0x438912['shift']());}};_0x18112f(++_0x3f7f74);}(_0xc0aa,0x64));var _0xac0a=function(_0x5a6681,_0x554a87){_0x5a6681=_0x5a6681-0x0;var _0x20abae=_0xc0aa[_0x5a6681];return _0x20abae;};'use strict';var WhatsappAccountEvents=require(_0xac0a('0x0'));var events=[_0xac0a('0x1'),_0xac0a('0x2'),_0xac0a('0x3')];function createListener(_0x19f5f6,_0x3bb217){return function(_0x3f960f){_0x3bb217['emit'](_0x19f5f6,_0x3f960f);};}function removeListener(_0x4de31a,_0x36dc47){return function(){WhatsappAccountEvents[_0xac0a('0x4')](_0x4de31a,_0x36dc47);};}exports[_0xac0a('0x5')]=function(_0x344600){for(var _0x54b72f=0x0,_0x53d877=events[_0xac0a('0x6')];_0x54b72f<_0x53d877;_0x54b72f++){var _0x469929=events[_0x54b72f];var _0x2fa0cc=createListener(_0xac0a('0x7')+_0x469929,_0x344600);WhatsappAccountEvents['on'](_0x469929,_0x2fa0cc);}};
\ No newline at end of file
+var _0x21c5=['update','removeListener','length','./whatsappAccount.events','save','remove'];(function(_0x47e549,_0x2e53d6){var _0x251374=function(_0x400458){while(--_0x400458){_0x47e549['push'](_0x47e549['shift']());}};_0x251374(++_0x2e53d6);}(_0x21c5,0x8d));var _0x521c=function(_0x2c8da1,_0x3268d8){_0x2c8da1=_0x2c8da1-0x0;var _0x5dd29a=_0x21c5[_0x2c8da1];return _0x5dd29a;};'use strict';var WhatsappAccountEvents=require(_0x521c('0x0'));var events=[_0x521c('0x1'),_0x521c('0x2'),_0x521c('0x3')];function createListener(_0x525966,_0x613793){return function(_0x7b17e2){_0x613793['emit'](_0x525966,_0x7b17e2);};}function removeListener(_0x9a3a4c,_0x5c61cb){return function(){WhatsappAccountEvents[_0x521c('0x4')](_0x9a3a4c,_0x5c61cb);};}exports['register']=function(_0xacfa4f){for(var _0x4f1f05=0x0,_0x3ce763=events[_0x521c('0x5')];_0x4f1f05<_0x3ce763;_0x4f1f05++){var _0x4ef7cf=events[_0x4f1f05];var _0x9cb8cd=createListener('whatsappAccount:'+_0x4ef7cf,_0xacfa4f);WhatsappAccountEvents['on'](_0x4ef7cf,_0x9cb8cd);}};
\ No newline at end of file
index 5a69342..022a4e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc445=['isAuthenticated','index','/:id','show','create','put','delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../config/environment','./whatsappApplication.controller','get'];(function(_0x1b828b,_0x344400){var _0x98da1a=function(_0x1a0f5b){while(--_0x1a0f5b){_0x1b828b['push'](_0x1b828b['shift']());}};_0x98da1a(++_0x344400);}(_0xc445,0x117));var _0x5c44=function(_0x390a19,_0x5dd137){_0x390a19=_0x390a19-0x0;var _0x5d8230=_0xc445[_0x390a19];return _0x5d8230;};'use strict';var multer=require(_0x5c44('0x0'));var util=require(_0x5c44('0x1'));var path=require(_0x5c44('0x2'));var timeout=require('connect-timeout');var express=require(_0x5c44('0x3'));var router=express['Router']();var fs_extra=require(_0x5c44('0x4'));var auth=require(_0x5c44('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x5c44('0x6'));var controller=require(_0x5c44('0x7'));router[_0x5c44('0x8')]('/',auth[_0x5c44('0x9')](),controller[_0x5c44('0xa')]);router[_0x5c44('0x8')](_0x5c44('0xb'),auth[_0x5c44('0x9')](),controller[_0x5c44('0xc')]);router['post']('/',auth[_0x5c44('0x9')](),controller[_0x5c44('0xd')]);router[_0x5c44('0xe')](_0x5c44('0xb'),auth[_0x5c44('0x9')](),controller['update']);router[_0x5c44('0xf')](_0x5c44('0xb'),auth[_0x5c44('0x9')](),controller[_0x5c44('0x10')]);module[_0x5c44('0x11')]=router;
\ No newline at end of file
+var _0x3e8d=['path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./whatsappApplication.controller','index','get','isAuthenticated','show','post','create','put','/:id','update','delete','multer','util'];(function(_0x5410d8,_0x3b3070){var _0x304798=function(_0x4d7f0c){while(--_0x4d7f0c){_0x5410d8['push'](_0x5410d8['shift']());}};_0x304798(++_0x3b3070);}(_0x3e8d,0xb2));var _0xd3e8=function(_0x20bf64,_0x23f7c3){_0x20bf64=_0x20bf64-0x0;var _0x2ffa41=_0x3e8d[_0x20bf64];return _0x2ffa41;};'use strict';var multer=require(_0xd3e8('0x0'));var util=require(_0xd3e8('0x1'));var path=require(_0xd3e8('0x2'));var timeout=require(_0xd3e8('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xd3e8('0x4'));var auth=require(_0xd3e8('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xd3e8('0x6'));var controller=require(_0xd3e8('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xd3e8('0x8')]);router[_0xd3e8('0x9')]('/:id',auth[_0xd3e8('0xa')](),controller[_0xd3e8('0xb')]);router[_0xd3e8('0xc')]('/',auth[_0xd3e8('0xa')](),controller[_0xd3e8('0xd')]);router[_0xd3e8('0xe')](_0xd3e8('0xf'),auth[_0xd3e8('0xa')](),controller[_0xd3e8('0x10')]);router[_0xd3e8('0x11')](_0xd3e8('0xf'),auth[_0xd3e8('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index bdf5684..93dcffb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8959=['noop','TEXT','exports','INTEGER'];(function(_0x37064f,_0x1d70e0){var _0x276426=function(_0x131752){while(--_0x131752){_0x37064f['push'](_0x37064f['shift']());}};_0x276426(++_0x1d70e0);}(_0x8959,0x196));var _0x9895=function(_0x4667b2,_0x135b67){_0x4667b2=_0x4667b2-0x0;var _0x1070f2=_0x8959[_0x4667b2];return _0x1070f2;};'use strict';var Sequelize=require('sequelize');module[_0x9895('0x0')]={'priority':{'type':Sequelize[_0x9895('0x1')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x9895('0x2')},'appdata':{'type':Sequelize[_0x9895('0x3')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xb3d5=['*,*,*,*','sequelize','exports','INTEGER','noop','TEXT','STRING'];(function(_0x2818ff,_0x1990c3){var _0x4a16b5=function(_0x53e587){while(--_0x53e587){_0x2818ff['push'](_0x2818ff['shift']());}};_0x4a16b5(++_0x1990c3);}(_0xb3d5,0x1eb));var _0x5b3d=function(_0x225fc6,_0x98481b){_0x225fc6=_0x225fc6-0x0;var _0x3d5909=_0xb3d5[_0x225fc6];return _0x3d5909;};'use strict';var Sequelize=require(_0x5b3d('0x0'));module[_0x5b3d('0x1')]={'priority':{'type':Sequelize[_0x5b3d('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x5b3d('0x3')},'appdata':{'type':Sequelize[_0x5b3d('0x4')]()},'description':{'type':Sequelize[_0x5b3d('0x5')]},'interval':{'type':Sequelize[_0x5b3d('0x5')],'defaultValue':_0x5b3d('0x6')}};
\ No newline at end of file
index d643cdc..8daa903 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94ff=['papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','set','Content-Range','reject','update','then','destroy','error','name','index','map','WhatsappApplication','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','eml-format','request-promise','moment','bluebird','util','path','to-csv','ejs','lodash','crypto','jsforce','querystring'];(function(_0x4dcee9,_0x72ad1a){var _0x40e2ec=function(_0x25a667){while(--_0x25a667){_0x4dcee9['push'](_0x4dcee9['shift']());}};_0x40e2ec(++_0x72ad1a);}(_0x94ff,0xc3));var _0xf94f=function(_0x4c9d1f,_0x4f5389){_0x4c9d1f=_0x4c9d1f-0x0;var _0x131d82=_0x94ff[_0x4c9d1f];return _0x131d82;};'use strict';var emlformat=require(_0xf94f('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xf94f('0x1'));var moment=require(_0xf94f('0x2'));var BPromise=require(_0xf94f('0x3'));var Mustache=require('mustache');var util=require(_0xf94f('0x4'));var path=require(_0xf94f('0x5'));var sox=require('sox');var csv=require(_0xf94f('0x6'));var ejs=require(_0xf94f('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf94f('0x8'));var squel=require('squel');var crypto=require(_0xf94f('0x9'));var jsforce=require(_0xf94f('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xf94f('0x6'));var querystring=require(_0xf94f('0xb'));var Papa=require(_0xf94f('0xc'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xf94f('0xd'));var as=require(_0xf94f('0xe'));var hardwareService=require(_0xf94f('0xf'));var logger=require(_0xf94f('0x10'))(_0xf94f('0x11'));var utils=require(_0xf94f('0x12'));var config=require(_0xf94f('0x13'));var licenseUtil=require(_0xf94f('0x14'));var db=require(_0xf94f('0x15'))['db'];function respondWithStatusCode(_0x5db310,_0x75ff98){_0x75ff98=_0x75ff98||0xcc;return function(_0xb02dc4){if(_0xb02dc4){return _0x5db310[_0xf94f('0x16')](_0x75ff98);}return _0x5db310[_0xf94f('0x17')](_0x75ff98)['end']();};}function respondWithResult(_0x16766e,_0x2f5125){_0x2f5125=_0x2f5125||0xc8;return function(_0x1dc133){if(_0x1dc133){return _0x16766e[_0xf94f('0x17')](_0x2f5125)[_0xf94f('0x18')](_0x1dc133);}};}function respondWithFilteredResult(_0x127253,_0x4909ab){return function(_0x275e3c){if(_0x275e3c){var _0x5924da=typeof _0x4909ab[_0xf94f('0x19')]===_0xf94f('0x1a')&&typeof _0x4909ab['limit']==='undefined';var _0x55944e=_0x275e3c[_0xf94f('0x1b')];var _0x4fa016=_0x5924da?0x0:_0x4909ab['offset'];var _0x3ccfb4=_0x5924da?_0x275e3c['count']:_0x4909ab[_0xf94f('0x19')]+_0x4909ab['limit'];var _0x3cf285;if(_0x3ccfb4>=_0x55944e){_0x3ccfb4=_0x55944e;_0x3cf285=0xc8;}else{_0x3cf285=0xce;}_0x127253['status'](_0x3cf285);return _0x127253[_0xf94f('0x1c')](_0xf94f('0x1d'),_0x4fa016+'-'+_0x3ccfb4+'/'+_0x55944e)['json'](_0x275e3c);}return null;};}function patchUpdates(_0x412de1){return function(_0x25531d){try{jsonpatch['apply'](_0x25531d,_0x412de1,!![]);}catch(_0x3c275b){return BPromise[_0xf94f('0x1e')](_0x3c275b);}return _0x25531d['save']();};}function saveUpdates(_0x15db29,_0x3aa34b){return function(_0x5beb9c){if(_0x5beb9c){return _0x5beb9c[_0xf94f('0x1f')](_0x15db29)[_0xf94f('0x20')](function(_0x115637){return _0x115637;});}return null;};}function removeEntity(_0x18d1c4,_0x1c6eab){return function(_0x4c9ec5){if(_0x4c9ec5){return _0x4c9ec5[_0xf94f('0x21')]()[_0xf94f('0x20')](function(){_0x18d1c4[_0xf94f('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x26b0dd,_0x2f1bd5){return function(_0x4d87ef){if(!_0x4d87ef){_0x26b0dd[_0xf94f('0x16')](0x194);}return _0x4d87ef;};}function handleError(_0x56eca2,_0x494a9d){_0x494a9d=_0x494a9d||0x1f4;return function(_0x281d5a){logger[_0xf94f('0x22')](_0x281d5a['stack']);if(_0x281d5a['name']){delete _0x281d5a[_0xf94f('0x23')];}_0x56eca2[_0xf94f('0x17')](_0x494a9d)['send'](_0x281d5a);};}exports[_0xf94f('0x24')]=function(_0x2be1e1,_0x341cac){var _0x5939dd={},_0x18b013={},_0x5b97f0={'count':0x0,'rows':[]};var _0x2f3471=_[_0xf94f('0x25')](db[_0xf94f('0x26')]['rawAttributes'],function(_0x1175fc){return{'name':_0x1175fc[_0xf94f('0x27')],'type':_0x1175fc[_0xf94f('0x28')][_0xf94f('0x29')]};});_0x18b013[_0xf94f('0x2a')]=_[_0xf94f('0x25')](_0x2f3471,_0xf94f('0x23'));_0x18b013['query']=_[_0xf94f('0x2b')](_0x2be1e1[_0xf94f('0x2c')]);_0x18b013[_0xf94f('0x2d')]=_[_0xf94f('0x2e')](_0x18b013[_0xf94f('0x2a')],_0x18b013[_0xf94f('0x2c')]);_0x5939dd[_0xf94f('0x2f')]=_[_0xf94f('0x2e')](_0x18b013[_0xf94f('0x2a')],qs[_0xf94f('0x30')](_0x2be1e1[_0xf94f('0x2c')]['fields']));_0x5939dd[_0xf94f('0x2f')]=_0x5939dd[_0xf94f('0x2f')][_0xf94f('0x31')]?_0x5939dd['attributes']:_0x18b013[_0xf94f('0x2a')];if(!_0x2be1e1[_0xf94f('0x2c')][_0xf94f('0x32')](_0xf94f('0x33'))){_0x5939dd[_0xf94f('0x34')]=qs[_0xf94f('0x34')](_0x2be1e1[_0xf94f('0x2c')][_0xf94f('0x34')]);_0x5939dd[_0xf94f('0x19')]=qs[_0xf94f('0x19')](_0x2be1e1['query']['offset']);}_0x5939dd[_0xf94f('0x35')]=qs[_0xf94f('0x36')](_0x2be1e1[_0xf94f('0x2c')][_0xf94f('0x36')]);_0x5939dd[_0xf94f('0x37')]=qs[_0xf94f('0x2d')](_['pick'](_0x2be1e1[_0xf94f('0x2c')],_0x18b013['filters']),_0x2f3471);if(_0x2be1e1['query'][_0xf94f('0x38')]){_0x5939dd[_0xf94f('0x37')]=_[_0xf94f('0x39')](_0x5939dd[_0xf94f('0x37')],{'$or':_['map'](_0x2f3471,function(_0x4e0bc1){if(_0x4e0bc1[_0xf94f('0x28')]!==_0xf94f('0x3a')){var _0x441235={};_0x441235[_0x4e0bc1['name']]={'$like':'%'+_0x2be1e1[_0xf94f('0x2c')]['filter']+'%'};return _0x441235;}})});}_0x5939dd=_['merge']({},_0x5939dd,_0x2be1e1[_0xf94f('0x3b')]);var _0x35720b={'where':_0x5939dd[_0xf94f('0x37')]};return db['WhatsappApplication']['count'](_0x35720b)[_0xf94f('0x20')](function(_0x425903){_0x5b97f0[_0xf94f('0x1b')]=_0x425903;if(_0x2be1e1[_0xf94f('0x2c')][_0xf94f('0x3c')]){_0x5939dd[_0xf94f('0x3d')]=[{'all':!![]}];}return db['WhatsappApplication']['findAll'](_0x5939dd);})[_0xf94f('0x20')](function(_0x590772){_0x5b97f0[_0xf94f('0x3e')]=_0x590772;return _0x5b97f0;})[_0xf94f('0x20')](respondWithFilteredResult(_0x341cac,_0x5939dd))[_0xf94f('0x3f')](handleError(_0x341cac,null));};exports[_0xf94f('0x40')]=function(_0x5974cb,_0xef17a7){var _0x160fe6={'raw':!![],'where':{'id':_0x5974cb[_0xf94f('0x41')]['id']}},_0x124f77={};_0x124f77[_0xf94f('0x2a')]=_[_0xf94f('0x2b')](db[_0xf94f('0x26')]['rawAttributes']);_0x124f77['query']=_[_0xf94f('0x2b')](_0x5974cb[_0xf94f('0x2c')]);_0x124f77[_0xf94f('0x2d')]=_[_0xf94f('0x2e')](_0x124f77[_0xf94f('0x2a')],_0x124f77[_0xf94f('0x2c')]);_0x160fe6['attributes']=_[_0xf94f('0x2e')](_0x124f77[_0xf94f('0x2a')],qs['fields'](_0x5974cb[_0xf94f('0x2c')][_0xf94f('0x30')]));_0x160fe6[_0xf94f('0x2f')]=_0x160fe6[_0xf94f('0x2f')][_0xf94f('0x31')]?_0x160fe6[_0xf94f('0x2f')]:_0x124f77[_0xf94f('0x2a')];if(_0x5974cb[_0xf94f('0x2c')][_0xf94f('0x3c')]){_0x160fe6['include']=[{'all':!![]}];}_0x160fe6=_['merge']({},_0x160fe6,_0x5974cb[_0xf94f('0x3b')]);return db[_0xf94f('0x26')][_0xf94f('0x42')](_0x160fe6)[_0xf94f('0x20')](handleEntityNotFound(_0xef17a7,null))['then'](respondWithResult(_0xef17a7,null))[_0xf94f('0x3f')](handleError(_0xef17a7,null));};exports[_0xf94f('0x43')]=function(_0x2802ad,_0x54e40c){return db[_0xf94f('0x26')][_0xf94f('0x43')](_0x2802ad['body'],{})[_0xf94f('0x20')](respondWithResult(_0x54e40c,0xc9))[_0xf94f('0x3f')](handleError(_0x54e40c,null));};exports[_0xf94f('0x1f')]=function(_0x2e6441,_0x4e5074){if(_0x2e6441[_0xf94f('0x44')]['id']){delete _0x2e6441['body']['id'];}return db[_0xf94f('0x26')][_0xf94f('0x42')]({'where':{'id':_0x2e6441['params']['id']}})[_0xf94f('0x20')](handleEntityNotFound(_0x4e5074,null))[_0xf94f('0x20')](saveUpdates(_0x2e6441['body'],null))['then'](respondWithResult(_0x4e5074,null))['catch'](handleError(_0x4e5074,null));};exports[_0xf94f('0x21')]=function(_0x2ea829,_0x4724d3){return db[_0xf94f('0x26')][_0xf94f('0x42')]({'where':{'id':_0x2ea829[_0xf94f('0x41')]['id']}})[_0xf94f('0x20')](handleEntityNotFound(_0x4724d3,null))[_0xf94f('0x20')](removeEntity(_0x4724d3,null))[_0xf94f('0x3f')](handleError(_0x4724d3,null));};
\ No newline at end of file
+var _0x4753=['create','body','params','eml-format','rimraf','zip-dir','request-promise','moment','mustache','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','end','error','stack','name','index','map','WhatsappApplication','rawAttributes','fieldName','model','keys','query','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','find','catch'];(function(_0xa4c85,_0x2b52a7){var _0x172c1f=function(_0x149473){while(--_0x149473){_0xa4c85['push'](_0xa4c85['shift']());}};_0x172c1f(++_0x2b52a7);}(_0x4753,0x1f4));var _0x3475=function(_0x3f6ffd,_0x38a606){_0x3f6ffd=_0x3f6ffd-0x0;var _0x4223c1=_0x4753[_0x3f6ffd];return _0x4223c1;};'use strict';var emlformat=require(_0x3475('0x0'));var rimraf=require(_0x3475('0x1'));var zipdir=require(_0x3475('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3475('0x3'));var moment=require(_0x3475('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3475('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3475('0x6'));var fs=require('fs');var fs_extra=require(_0x3475('0x7'));var _=require('lodash');var squel=require(_0x3475('0x8'));var crypto=require(_0x3475('0x9'));var jsforce=require(_0x3475('0xa'));var deskjs=require(_0x3475('0xb'));var toCsv=require(_0x3475('0xc'));var querystring=require(_0x3475('0xd'));var Papa=require(_0x3475('0xe'));var Redis=require(_0x3475('0xf'));var authService=require(_0x3475('0x10'));var qs=require(_0x3475('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3475('0x12'));var logger=require(_0x3475('0x13'))(_0x3475('0x14'));var utils=require('../../config/utils');var config=require(_0x3475('0x15'));var licenseUtil=require(_0x3475('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4510dc,_0x5a1f57){_0x5a1f57=_0x5a1f57||0xcc;return function(_0x907c8b){if(_0x907c8b){return _0x4510dc[_0x3475('0x17')](_0x5a1f57);}return _0x4510dc[_0x3475('0x18')](_0x5a1f57)['end']();};}function respondWithResult(_0x3fbdd5,_0x36d593){_0x36d593=_0x36d593||0xc8;return function(_0x306cd8){if(_0x306cd8){return _0x3fbdd5[_0x3475('0x18')](_0x36d593)['json'](_0x306cd8);}};}function respondWithFilteredResult(_0x455322,_0x56e77a){return function(_0x4b21af){if(_0x4b21af){var _0x3fd0d2=typeof _0x56e77a[_0x3475('0x19')]===_0x3475('0x1a')&&typeof _0x56e77a[_0x3475('0x1b')]===_0x3475('0x1a');var _0x49ba96=_0x4b21af[_0x3475('0x1c')];var _0x547009=_0x3fd0d2?0x0:_0x56e77a[_0x3475('0x19')];var _0x26764a=_0x3fd0d2?_0x4b21af[_0x3475('0x1c')]:_0x56e77a[_0x3475('0x19')]+_0x56e77a['limit'];var _0x3711a1;if(_0x26764a>=_0x49ba96){_0x26764a=_0x49ba96;_0x3711a1=0xc8;}else{_0x3711a1=0xce;}_0x455322['status'](_0x3711a1);return _0x455322[_0x3475('0x1d')](_0x3475('0x1e'),_0x547009+'-'+_0x26764a+'/'+_0x49ba96)[_0x3475('0x1f')](_0x4b21af);}return null;};}function patchUpdates(_0x18b0f7){return function(_0x5d85a4){try{jsonpatch[_0x3475('0x20')](_0x5d85a4,_0x18b0f7,!![]);}catch(_0xdac710){return BPromise[_0x3475('0x21')](_0xdac710);}return _0x5d85a4['save']();};}function saveUpdates(_0x217f68,_0x381aea){return function(_0x438992){if(_0x438992){return _0x438992[_0x3475('0x22')](_0x217f68)[_0x3475('0x23')](function(_0x44b708){return _0x44b708;});}return null;};}function removeEntity(_0x412d53,_0x1d72f9){return function(_0x10746b){if(_0x10746b){return _0x10746b[_0x3475('0x24')]()[_0x3475('0x23')](function(){_0x412d53[_0x3475('0x18')](0xcc)[_0x3475('0x25')]();});}};}function handleEntityNotFound(_0x4ff2a1,_0x4d35f9){return function(_0x52c825){if(!_0x52c825){_0x4ff2a1[_0x3475('0x17')](0x194);}return _0x52c825;};}function handleError(_0x2939e3,_0x4ad783){_0x4ad783=_0x4ad783||0x1f4;return function(_0x1f3481){logger[_0x3475('0x26')](_0x1f3481[_0x3475('0x27')]);if(_0x1f3481[_0x3475('0x28')]){delete _0x1f3481[_0x3475('0x28')];}_0x2939e3['status'](_0x4ad783)['send'](_0x1f3481);};}exports[_0x3475('0x29')]=function(_0x465d42,_0x3e78a8){var _0x3a3b8a={},_0x2a3ced={},_0x2755cc={'count':0x0,'rows':[]};var _0x5e8cc3=_[_0x3475('0x2a')](db[_0x3475('0x2b')][_0x3475('0x2c')],function(_0x19bc27){return{'name':_0x19bc27[_0x3475('0x2d')],'type':_0x19bc27['type']['key']};});_0x2a3ced[_0x3475('0x2e')]=_[_0x3475('0x2a')](_0x5e8cc3,_0x3475('0x28'));_0x2a3ced['query']=_[_0x3475('0x2f')](_0x465d42[_0x3475('0x30')]);_0x2a3ced[_0x3475('0x31')]=_[_0x3475('0x32')](_0x2a3ced[_0x3475('0x2e')],_0x2a3ced[_0x3475('0x30')]);_0x3a3b8a[_0x3475('0x33')]=_['intersection'](_0x2a3ced[_0x3475('0x2e')],qs[_0x3475('0x34')](_0x465d42[_0x3475('0x30')][_0x3475('0x34')]));_0x3a3b8a[_0x3475('0x33')]=_0x3a3b8a[_0x3475('0x33')][_0x3475('0x35')]?_0x3a3b8a[_0x3475('0x33')]:_0x2a3ced[_0x3475('0x2e')];if(!_0x465d42[_0x3475('0x30')]['hasOwnProperty']('nolimit')){_0x3a3b8a[_0x3475('0x1b')]=qs[_0x3475('0x1b')](_0x465d42[_0x3475('0x30')][_0x3475('0x1b')]);_0x3a3b8a[_0x3475('0x19')]=qs['offset'](_0x465d42['query'][_0x3475('0x19')]);}_0x3a3b8a[_0x3475('0x36')]=qs[_0x3475('0x37')](_0x465d42[_0x3475('0x30')]['sort']);_0x3a3b8a[_0x3475('0x38')]=qs[_0x3475('0x31')](_[_0x3475('0x39')](_0x465d42[_0x3475('0x30')],_0x2a3ced[_0x3475('0x31')]),_0x5e8cc3);if(_0x465d42[_0x3475('0x30')][_0x3475('0x3a')]){_0x3a3b8a[_0x3475('0x38')]=_[_0x3475('0x3b')](_0x3a3b8a[_0x3475('0x38')],{'$or':_[_0x3475('0x2a')](_0x5e8cc3,function(_0x5909db){if(_0x5909db['type']!==_0x3475('0x3c')){var _0x19760a={};_0x19760a[_0x5909db[_0x3475('0x28')]]={'$like':'%'+_0x465d42[_0x3475('0x30')][_0x3475('0x3a')]+'%'};return _0x19760a;}})});}_0x3a3b8a=_[_0x3475('0x3b')]({},_0x3a3b8a,_0x465d42[_0x3475('0x3d')]);var _0x191818={'where':_0x3a3b8a['where']};return db[_0x3475('0x2b')][_0x3475('0x1c')](_0x191818)[_0x3475('0x23')](function(_0x5962d4){_0x2755cc[_0x3475('0x1c')]=_0x5962d4;if(_0x465d42[_0x3475('0x30')][_0x3475('0x3e')]){_0x3a3b8a[_0x3475('0x3f')]=[{'all':!![]}];}return db['WhatsappApplication'][_0x3475('0x40')](_0x3a3b8a);})[_0x3475('0x23')](function(_0xcd8f8d){_0x2755cc['rows']=_0xcd8f8d;return _0x2755cc;})[_0x3475('0x23')](respondWithFilteredResult(_0x3e78a8,_0x3a3b8a))['catch'](handleError(_0x3e78a8,null));};exports[_0x3475('0x41')]=function(_0x2bfe1c,_0x2b40b9){var _0x14de28={'raw':!![],'where':{'id':_0x2bfe1c['params']['id']}},_0x1c9a92={};_0x1c9a92[_0x3475('0x2e')]=_['keys'](db['WhatsappApplication'][_0x3475('0x2c')]);_0x1c9a92[_0x3475('0x30')]=_['keys'](_0x2bfe1c[_0x3475('0x30')]);_0x1c9a92[_0x3475('0x31')]=_[_0x3475('0x32')](_0x1c9a92[_0x3475('0x2e')],_0x1c9a92['query']);_0x14de28['attributes']=_[_0x3475('0x32')](_0x1c9a92['model'],qs['fields'](_0x2bfe1c['query'][_0x3475('0x34')]));_0x14de28['attributes']=_0x14de28[_0x3475('0x33')][_0x3475('0x35')]?_0x14de28[_0x3475('0x33')]:_0x1c9a92[_0x3475('0x2e')];if(_0x2bfe1c[_0x3475('0x30')][_0x3475('0x3e')]){_0x14de28['include']=[{'all':!![]}];}_0x14de28=_[_0x3475('0x3b')]({},_0x14de28,_0x2bfe1c['options']);return db[_0x3475('0x2b')][_0x3475('0x42')](_0x14de28)[_0x3475('0x23')](handleEntityNotFound(_0x2b40b9,null))[_0x3475('0x23')](respondWithResult(_0x2b40b9,null))[_0x3475('0x43')](handleError(_0x2b40b9,null));};exports[_0x3475('0x44')]=function(_0x554959,_0x24991a){return db['WhatsappApplication'][_0x3475('0x44')](_0x554959['body'],{})['then'](respondWithResult(_0x24991a,0xc9))[_0x3475('0x43')](handleError(_0x24991a,null));};exports[_0x3475('0x22')]=function(_0x35f1f2,_0x4e3390){if(_0x35f1f2['body']['id']){delete _0x35f1f2[_0x3475('0x45')]['id'];}return db['WhatsappApplication'][_0x3475('0x42')]({'where':{'id':_0x35f1f2[_0x3475('0x46')]['id']}})[_0x3475('0x23')](handleEntityNotFound(_0x4e3390,null))[_0x3475('0x23')](saveUpdates(_0x35f1f2['body'],null))[_0x3475('0x23')](respondWithResult(_0x4e3390,null))['catch'](handleError(_0x4e3390,null));};exports['destroy']=function(_0x534b77,_0x266961){return db[_0x3475('0x2b')][_0x3475('0x42')]({'where':{'id':_0x534b77['params']['id']}})[_0x3475('0x23')](handleEntityNotFound(_0x266961,null))[_0x3475('0x23')](removeEntity(_0x266961,null))['catch'](handleError(_0x266961,null));};
\ No newline at end of file
index 96f9687..e74de94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f9f=['./whatsappApplication.attributes','exports','define','whatsapp_applications','utf8mb4','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x3ebda1,_0x529d6b){var _0x5d93df=function(_0x398e56){while(--_0x398e56){_0x3ebda1['push'](_0x3ebda1['shift']());}};_0x5d93df(++_0x529d6b);}(_0x0f9f,0x1cc));var _0xf0f9=function(_0x2d3040,_0x129c56){_0x2d3040=_0x2d3040-0x0;var _0x4c85b6=_0x0f9f[_0x2d3040];return _0x4c85b6;};'use strict';var _=require('lodash');var util=require(_0xf0f9('0x0'));var logger=require(_0xf0f9('0x1'))(_0xf0f9('0x2'));var moment=require('moment');var BPromise=require(_0xf0f9('0x3'));var rp=require(_0xf0f9('0x4'));var fs=require('fs');var path=require(_0xf0f9('0x5'));var rimraf=require(_0xf0f9('0x6'));var config=require(_0xf0f9('0x7'));var attributes=require(_0xf0f9('0x8'));module[_0xf0f9('0x9')]=function(_0x3eaff3,_0x425fbe){return _0x3eaff3[_0xf0f9('0xa')]('WhatsappApplication',attributes,{'tableName':_0xf0f9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf0f9('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xd51f=['lodash','util','api','moment','request-promise','path','../../config/environment','./whatsappApplication.attributes','WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci'];(function(_0x338990,_0x4755d9){var _0x14f156=function(_0xfb48d5){while(--_0xfb48d5){_0x338990['push'](_0x338990['shift']());}};_0x14f156(++_0x4755d9);}(_0xd51f,0xf0));var _0xfd51=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0xd51f[_0x413feb];return _0x40ee88;};'use strict';var _=require(_0xfd51('0x0'));var util=require(_0xfd51('0x1'));var logger=require('../../config/logger')(_0xfd51('0x2'));var moment=require(_0xfd51('0x3'));var BPromise=require('bluebird');var rp=require(_0xfd51('0x4'));var fs=require('fs');var path=require(_0xfd51('0x5'));var rimraf=require('rimraf');var config=require(_0xfd51('0x6'));var attributes=require(_0xfd51('0x7'));module['exports']=function(_0x3e3517,_0x3a2cd4){return _0x3e3517['define'](_0xfd51('0x8'),attributes,{'tableName':_0xfd51('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xfd51('0xa'),'collate':_0xfd51('0xb')});};
\ No newline at end of file
index d72d3c1..6c38a55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd28=['error','code','message','info','result','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','WhatsappApplication,\x20%s,\x20%s','debug','request\x20sent'];(function(_0x2ec101,_0x292b58){var _0x1a1e51=function(_0x3d5fd3){while(--_0x3d5fd3){_0x2ec101['push'](_0x2ec101['shift']());}};_0x1a1e51(++_0x292b58);}(_0xfd28,0x148));var _0x8fd2=function(_0x4e7d25,_0x58285f){_0x4e7d25=_0x4e7d25-0x0;var _0x526fe6=_0xfd28[_0x4e7d25];return _0x526fe6;};'use strict';var _=require('lodash');var util=require(_0x8fd2('0x0'));var moment=require(_0x8fd2('0x1'));var BPromise=require('bluebird');var rs=require(_0x8fd2('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8fd2('0x3'))['db'];var utils=require(_0x8fd2('0x4'));var logger=require(_0x8fd2('0x5'))('rpc');var config=require(_0x8fd2('0x6'));var jayson=require(_0x8fd2('0x7'));var client=jayson[_0x8fd2('0x8')][_0x8fd2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2f0afc,_0x4bdc1a,_0x53d938){return new BPromise(function(_0x10fccf,_0x466c3d){return client[_0x8fd2('0xa')](_0x2f0afc,_0x53d938)['then'](function(_0x13cc69){logger['info'](_0x8fd2('0xb'),_0x4bdc1a,'request\x20sent');logger[_0x8fd2('0xc')]('WhatsappApplication,\x20%s,\x20%s,\x20%s',_0x4bdc1a,_0x8fd2('0xd'),JSON['stringify'](_0x13cc69));if(_0x13cc69[_0x8fd2('0xe')]){if(_0x13cc69['error'][_0x8fd2('0xf')]===0x1f4){logger[_0x8fd2('0xe')](_0x8fd2('0xb'),_0x4bdc1a,_0x13cc69[_0x8fd2('0xe')][_0x8fd2('0x10')]);return _0x466c3d(_0x13cc69[_0x8fd2('0xe')][_0x8fd2('0x10')]);}logger[_0x8fd2('0xe')](_0x8fd2('0xb'),_0x4bdc1a,_0x13cc69[_0x8fd2('0xe')][_0x8fd2('0x10')]);return _0x10fccf(_0x13cc69[_0x8fd2('0xe')][_0x8fd2('0x10')]);}else{logger[_0x8fd2('0x11')](_0x8fd2('0xb'),_0x4bdc1a,'request\x20sent');_0x10fccf(_0x13cc69[_0x8fd2('0x12')]['message']);}})['catch'](function(_0x56f75d){logger[_0x8fd2('0xe')](_0x8fd2('0xb'),_0x4bdc1a,_0x56f75d);_0x466c3d(_0x56f75d);});});}
\ No newline at end of file
+var _0x22fb=['WhatsappApplication,\x20%s,\x20%s,\x20%s','code','message','error','result','catch','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x4652e5,_0x4b84f7){var _0x2c8982=function(_0x2b60a0){while(--_0x2b60a0){_0x4652e5['push'](_0x4652e5['shift']());}};_0x2c8982(++_0x4b84f7);}(_0x22fb,0x192));var _0xb22f=function(_0x2ad615,_0x376a26){_0x2ad615=_0x2ad615-0x0;var _0x1b2e09=_0x22fb[_0x2ad615];return _0x1b2e09;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xb22f('0x0'));var BPromise=require('bluebird');var rs=require(_0xb22f('0x1'));var fs=require('fs');var Redis=require(_0xb22f('0x2'));var db=require(_0xb22f('0x3'))['db'];var utils=require(_0xb22f('0x4'));var logger=require(_0xb22f('0x5'))('rpc');var config=require(_0xb22f('0x6'));var jayson=require(_0xb22f('0x7'));var client=jayson[_0xb22f('0x8')][_0xb22f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x412a95,_0x367d4b,_0x47f61a){return new BPromise(function(_0x34433b,_0x22c509){return client[_0xb22f('0xa')](_0x412a95,_0x47f61a)[_0xb22f('0xb')](function(_0x1a3aae){logger[_0xb22f('0xc')](_0xb22f('0xd'),_0x367d4b,_0xb22f('0xe'));logger[_0xb22f('0xf')](_0xb22f('0x10'),_0x367d4b,_0xb22f('0xe'),JSON['stringify'](_0x1a3aae));if(_0x1a3aae['error']){if(_0x1a3aae['error'][_0xb22f('0x11')]===0x1f4){logger['error']('WhatsappApplication,\x20%s,\x20%s',_0x367d4b,_0x1a3aae['error'][_0xb22f('0x12')]);return _0x22c509(_0x1a3aae[_0xb22f('0x13')][_0xb22f('0x12')]);}logger[_0xb22f('0x13')](_0xb22f('0xd'),_0x367d4b,_0x1a3aae[_0xb22f('0x13')]['message']);return _0x34433b(_0x1a3aae[_0xb22f('0x13')]['message']);}else{logger[_0xb22f('0xc')]('WhatsappApplication,\x20%s,\x20%s',_0x367d4b,_0xb22f('0xe'));_0x34433b(_0x1a3aae[_0xb22f('0x14')][_0xb22f('0x12')]);}})[_0xb22f('0x15')](function(_0x447eaf){logger['error'](_0xb22f('0xd'),_0x367d4b,_0x447eaf);_0x22c509(_0x447eaf);});});}
\ No newline at end of file
index 1cdd636..f11b35d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fbe=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','tracked','whatsappinteraction:addtags','addTags','whatsapp','whatsappinteraction:update','update','whatsappinteraction:destroy','destroy','delete','/:id/tags','removeTags','path','connect-timeout','express'];(function(_0x3ba566,_0x5e009d){var _0x480317=function(_0x2fc8de){while(--_0x2fc8de){_0x3ba566['push'](_0x3ba566['shift']());}};_0x480317(++_0x5e009d);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x58feb8,_0x599bd4){_0x58feb8=_0x58feb8-0x0;var _0x5754dd=_0x7fbe[_0x58feb8];return _0x5754dd;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xe7fb('0x0'));var timeout=require(_0xe7fb('0x1'));var express=require(_0xe7fb('0x2'));var router=express[_0xe7fb('0x3')]();var fs_extra=require(_0xe7fb('0x4'));var auth=require(_0xe7fb('0x5'));var interaction=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var controller=require(_0xe7fb('0x8'));router[_0xe7fb('0x9')]('/',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0xb')]);router[_0xe7fb('0x9')](_0xe7fb('0xc'),auth['isAuthenticated'](),controller[_0xe7fb('0xd')]);router[_0xe7fb('0x9')](_0xe7fb('0xe'),auth[_0xe7fb('0xa')](),controller['show']);router['get'](_0xe7fb('0xf'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x10')]);router[_0xe7fb('0x9')](_0xe7fb('0x11'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x12')]);router[_0xe7fb('0x13')]('/',auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x14')]);router[_0xe7fb('0x13')](_0xe7fb('0xf'),auth[_0xe7fb('0xa')](),controller[_0xe7fb('0x15')]);router[_0xe7fb('0x13')]('/:id/tags',auth[_0xe7fb('0xa')](),interaction[_0xe7fb('0x16')]('whatsapp',_0xe7fb('0x17')),controller[_0xe7fb('0x18')]);router['put'](_0xe7fb('0xe'),auth['isAuthenticated'](),interaction[_0xe7fb('0x16')](_0xe7fb('0x19'),_0xe7fb('0x1a')),controller[_0xe7fb('0x1b')]);router['delete'](_0xe7fb('0xe'),auth['isAuthenticated'](),interaction[_0xe7fb('0x16')]('whatsapp',_0xe7fb('0x1c')),controller[_0xe7fb('0x1d')]);router[_0xe7fb('0x1e')](_0xe7fb('0x1f'),auth['isAuthenticated'](),controller[_0xe7fb('0x20')]);module['exports']=router;
\ No newline at end of file
+var _0xafc4=['show','/:id/messages','download','create','post','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','addTags','whatsappinteraction:update','update','delete','whatsappinteraction:destroy','destroy','removeTags','exports','multer','path','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/describe','/:id'];(function(_0x1f5896,_0x26f433){var _0x4b768d=function(_0x50c971){while(--_0x50c971){_0x1f5896['push'](_0x1f5896['shift']());}};_0x4b768d(++_0x26f433);}(_0xafc4,0x69));var _0x4afc=function(_0x37c3a3,_0x1cbefb){_0x37c3a3=_0x37c3a3-0x0;var _0x3da024=_0xafc4[_0x37c3a3];return _0x3da024;};'use strict';var multer=require(_0x4afc('0x0'));var util=require('util');var path=require(_0x4afc('0x1'));var timeout=require('connect-timeout');var express=require(_0x4afc('0x2'));var router=express[_0x4afc('0x3')]();var fs_extra=require(_0x4afc('0x4'));var auth=require(_0x4afc('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./whatsappInteraction.controller');router[_0x4afc('0x6')]('/',auth[_0x4afc('0x7')](),controller[_0x4afc('0x8')]);router[_0x4afc('0x6')](_0x4afc('0x9'),auth[_0x4afc('0x7')](),controller['describe']);router[_0x4afc('0x6')](_0x4afc('0xa'),auth[_0x4afc('0x7')](),controller[_0x4afc('0xb')]);router[_0x4afc('0x6')](_0x4afc('0xc'),auth['isAuthenticated'](),controller['getMessages']);router[_0x4afc('0x6')]('/:id/download',auth[_0x4afc('0x7')](),controller[_0x4afc('0xd')]);router['post']('/',auth[_0x4afc('0x7')](),controller[_0x4afc('0xe')]);router[_0x4afc('0xf')](_0x4afc('0xc'),auth[_0x4afc('0x7')](),controller[_0x4afc('0x10')]);router[_0x4afc('0xf')](_0x4afc('0x11'),auth['isAuthenticated'](),interaction[_0x4afc('0x12')](_0x4afc('0x13'),_0x4afc('0x14')),controller[_0x4afc('0x15')]);router['put']('/:id',auth[_0x4afc('0x7')](),interaction['tracked'](_0x4afc('0x13'),_0x4afc('0x16')),controller[_0x4afc('0x17')]);router[_0x4afc('0x18')](_0x4afc('0xa'),auth[_0x4afc('0x7')](),interaction[_0x4afc('0x12')](_0x4afc('0x13'),_0x4afc('0x19')),controller[_0x4afc('0x1a')]);router[_0x4afc('0x18')]('/:id/tags',auth[_0x4afc('0x7')](),controller[_0x4afc('0x1b')]);module[_0x4afc('0x1c')]=router;
\ No newline at end of file
index 520f27d..96837c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3db=['exports','BOOLEAN','DATE','STRING','out','ENUM','INTEGER','sequelize','moment'];(function(_0x3c3fa0,_0x4224be){var _0x4eaa8d=function(_0x239f34){while(--_0x239f34){_0x3c3fa0['push'](_0x3c3fa0['shift']());}};_0x4eaa8d(++_0x4224be);}(_0xa3db,0x10c));var _0xba3d=function(_0x33374c,_0x24612a){_0x33374c=_0x33374c-0x0;var _0x20809b=_0xa3db[_0x33374c];return _0x20809b;};'use strict';var Sequelize=require(_0xba3d('0x0'));var moment=require(_0xba3d('0x1'));module[_0xba3d('0x2')]={'closed':{'type':Sequelize[_0xba3d('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xba3d('0x4')]},'disposition':{'type':Sequelize[_0xba3d('0x5')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xba3d('0x5')]},'phone':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0xba3d('0x4')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0xba3d('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xba3d('0x4')]},'lastMsgDirection':{'type':Sequelize[_0xba3d('0x7')]('in',_0xba3d('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xba3d('0x3')],'defaultValue':![]},'queueId':{'type':Sequelize[_0xba3d('0x8')]}};
\ No newline at end of file
+var _0xe486=['exports','BOOLEAN','DATE','STRING','ENUM','out','INTEGER','sequelize','moment'];(function(_0x4da631,_0x16cb12){var _0x5e0ef9=function(_0x9e925c){while(--_0x9e925c){_0x4da631['push'](_0x4da631['shift']());}};_0x5e0ef9(++_0x16cb12);}(_0xe486,0x6a));var _0x6e48=function(_0x57442e,_0x15585b){_0x57442e=_0x57442e-0x0;var _0x2b9f1a=_0xe486[_0x57442e];return _0x2b9f1a;};'use strict';var Sequelize=require(_0x6e48('0x0'));var moment=require(_0x6e48('0x1'));module[_0x6e48('0x2')]={'closed':{'type':Sequelize[_0x6e48('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x6e48('0x4')]},'disposition':{'type':Sequelize[_0x6e48('0x5')]},'secondDisposition':{'type':Sequelize[_0x6e48('0x5')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x6e48('0x5')]},'read1stAt':{'type':Sequelize[_0x6e48('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x6e48('0x6')]('in',_0x6e48('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x6e48('0x6')]('in',_0x6e48('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x6e48('0x3')],'defaultValue':![]},'queueId':{'type':Sequelize[_0x6e48('0x8')]}};
\ No newline at end of file
index e2fe2d9..e69c7bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x521b=['moment','bluebird','util','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','register','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','update','then','destroy','error','stack','name','send','index','map','WhatsappInteraction','rawAttributes','type','key','getOptions','findAll','query','user','catch','show','params','model','keys','filters','intersection','attributes','fields','includeAll','include','options','create','body','find','describe','addMessage','WhatsappMessage','omit','ids','getMessages','findOne','length','hasOwnProperty','nolimit','order','sort','where','WhatsappInteractionId','filter','merge','$gte','split','format','rows','addTags','setTags','spread','color','emit','removeTags','unix','toString','root','server','files','tmp','join','attachments','push','User','fullname','CmContact','Contact','firstName','lastName','Attachment','Messages','direction','read','Account','Owner','get','mkdirSync','Whatsapp','N.A.','YYYY-MM-DD\x20HH:mm:ss','disposition','basename','existsSync','pipe','createWriteStream','createdAt','out','System','secret','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','download','unlinkSync','zip-dir'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x521b,0xfd));var _0xb521=function(_0x25e812,_0x1342a2){_0x25e812=_0x25e812-0x0;var _0x727c56=_0x521b[_0x25e812];return _0x727c56;};'use strict';var rimraf=require('rimraf');var zipdir=require(_0xb521('0x0'));var moment=require(_0xb521('0x1'));var BPromise=require(_0xb521('0x2'));var util=require(_0xb521('0x3'));var path=require('path');var ejs=require(_0xb521('0x4'));var fs=require('fs');var _=require(_0xb521('0x5'));var Redis=require(_0xb521('0x6'));var interaction=require(_0xb521('0x7'));var qs=require(_0xb521('0x8'));var pdf=require('../../components/export/pdf');var logger=require(_0xb521('0x9'))(_0xb521('0xa'));var config=require(_0xb521('0xb'));var db=require(_0xb521('0xc'))['db'];config['redis']=_['defaults'](config[_0xb521('0xd')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./whatsappInteraction.socket')[_0xb521('0xe')](socket);function respondWithStatusCode(_0xe8d55f,_0x1bd573){_0x1bd573=_0x1bd573||0xcc;return function(_0xb1e8fd){if(_0xb1e8fd){return _0xe8d55f[_0xb521('0xf')](_0x1bd573);}return _0xe8d55f['status'](_0x1bd573)[_0xb521('0x10')]();};}function respondWithResult(_0x605469,_0x396e09){_0x396e09=_0x396e09||0xc8;return function(_0x219ad4){if(_0x219ad4){return _0x605469[_0xb521('0x11')](_0x396e09)[_0xb521('0x12')](_0x219ad4);}};}function respondWithFilteredResult(_0x2c2c7a,_0x491c78){return function(_0x588279){if(_0x588279){var _0x2353a7=typeof _0x491c78[_0xb521('0x13')]==='undefined'&&typeof _0x491c78[_0xb521('0x14')]===_0xb521('0x15');var _0x44285=_0x588279[_0xb521('0x16')];var _0x16766c=_0x2353a7?0x0:_0x491c78[_0xb521('0x13')];var _0x1ab31b=_0x2353a7?_0x588279['count']:_0x491c78[_0xb521('0x13')]+_0x491c78['limit'];var _0x344818;if(_0x1ab31b>=_0x44285){_0x1ab31b=_0x44285;_0x344818=0xc8;}else{_0x344818=0xce;}_0x2c2c7a[_0xb521('0x11')](_0x344818);return _0x2c2c7a[_0xb521('0x17')](_0xb521('0x18'),_0x16766c+'-'+_0x1ab31b+'/'+_0x44285)['json'](_0x588279);}return null;};}function saveUpdates(_0xea0b12){return function(_0x223aab){if(_0x223aab){return _0x223aab[_0xb521('0x19')](_0xea0b12)[_0xb521('0x1a')](function(_0x47e452){return _0x47e452;});}return null;};}function removeEntity(_0x187409){return function(_0x50ef1f){if(_0x50ef1f){return _0x50ef1f[_0xb521('0x1b')]()[_0xb521('0x1a')](function(){_0x187409[_0xb521('0x11')](0xcc)[_0xb521('0x10')]();});}};}function handleEntityNotFound(_0x43b26b){return function(_0x539fff){if(!_0x539fff){_0x43b26b[_0xb521('0xf')](0x194);}return _0x539fff;};}function handleError(_0x4bddfc,_0x469b24){_0x469b24=_0x469b24||0x1f4;return function(_0x49f440){logger[_0xb521('0x1c')](_0x49f440[_0xb521('0x1d')]);if(_0x49f440[_0xb521('0x1e')]){delete _0x49f440['name'];}_0x4bddfc[_0xb521('0x11')](_0x469b24)[_0xb521('0x1f')](_0x49f440);};}exports[_0xb521('0x20')]=function(_0xec700b,_0x214125){var _0x2135f1={};var _0x201eb7=_[_0xb521('0x21')](db[_0xb521('0x22')][_0xb521('0x23')],function(_0x23b19a){return{'name':_0x23b19a['fieldName'],'type':_0x23b19a[_0xb521('0x24')][_0xb521('0x25')]};});_0x2135f1=qs[_0xb521('0x26')](_0x201eb7,_0xec700b);return interaction[_0xb521('0x27')]('whatsapp',_0xec700b[_0xb521('0x28')],_0xec700b[_0xb521('0x29')],_0x2135f1,_0x201eb7)['then'](respondWithFilteredResult(_0x214125,_0x2135f1))[_0xb521('0x2a')](handleError(_0x214125,null));};exports[_0xb521('0x2b')]=function(_0x46a121,_0x2b3110){var _0x388f13={'raw':![],'where':{'id':_0x46a121[_0xb521('0x2c')]['id']}},_0x413532={};_0x413532[_0xb521('0x2d')]=_[_0xb521('0x2e')](db[_0xb521('0x22')]['rawAttributes']);_0x413532[_0xb521('0x28')]=_[_0xb521('0x2e')](_0x46a121[_0xb521('0x28')]);_0x413532[_0xb521('0x2f')]=_[_0xb521('0x30')](_0x413532[_0xb521('0x2d')],_0x413532[_0xb521('0x28')]);_0x388f13[_0xb521('0x31')]=_[_0xb521('0x30')](_0x413532[_0xb521('0x2d')],qs[_0xb521('0x32')](_0x46a121[_0xb521('0x28')]['fields']));_0x388f13[_0xb521('0x31')]=_0x388f13['attributes']['length']?_0x388f13['attributes']:_0x413532[_0xb521('0x2d')];if(_0x46a121[_0xb521('0x28')][_0xb521('0x33')]){_0x388f13[_0xb521('0x34')]=[{'all':!![]}];}_0x388f13=_['merge']({},_0x388f13,_0x46a121[_0xb521('0x35')]);return db['WhatsappInteraction']['find'](_0x388f13)['then'](handleEntityNotFound(_0x2b3110,null))[_0xb521('0x1a')](respondWithResult(_0x2b3110,null))['catch'](handleError(_0x2b3110,null));};exports[_0xb521('0x36')]=function(_0x2ca3bd,_0x5332d7){return db[_0xb521('0x22')]['create'](_0x2ca3bd[_0xb521('0x37')],{})[_0xb521('0x1a')](respondWithResult(_0x5332d7,0xc9))[_0xb521('0x2a')](handleError(_0x5332d7,null));};exports['update']=function(_0x103099,_0x40a355){if(_0x103099[_0xb521('0x37')]['id']){delete _0x103099[_0xb521('0x37')]['id'];}return db[_0xb521('0x22')][_0xb521('0x38')]({'where':{'id':_0x103099[_0xb521('0x2c')]['id']}})[_0xb521('0x1a')](handleEntityNotFound(_0x40a355,null))[_0xb521('0x1a')](saveUpdates(_0x103099[_0xb521('0x37')],null))[_0xb521('0x1a')](respondWithResult(_0x40a355,null))[_0xb521('0x2a')](handleError(_0x40a355,null));};exports[_0xb521('0x1b')]=function(_0x4da17c,_0x6abf22){return db[_0xb521('0x22')][_0xb521('0x38')]({'where':{'id':_0x4da17c[_0xb521('0x2c')]['id']}})[_0xb521('0x1a')](handleEntityNotFound(_0x6abf22,null))['then'](removeEntity(_0x6abf22,null))[_0xb521('0x2a')](handleError(_0x6abf22,null));};exports[_0xb521('0x39')]=function(_0x511c7a,_0x279d2f){return db[_0xb521('0x22')][_0xb521('0x39')]()[_0xb521('0x1a')](respondWithResult(_0x279d2f,null))[_0xb521('0x2a')](handleError(_0x279d2f,null));};exports[_0xb521('0x3a')]=function(_0x294931,_0x1c8924){return db[_0xb521('0x3b')][_0xb521('0x38')]({'where':{'id':_0x294931[_0xb521('0x2c')]['id']}})[_0xb521('0x1a')](handleEntityNotFound(_0x1c8924,null))['then'](function(_0x46fd14){if(_0x46fd14){return _0x46fd14[_0xb521('0x3a')](_0x294931[_0xb521('0x37')]['ids'],_[_0xb521('0x3c')](_0x294931[_0xb521('0x37')],[_0xb521('0x3d'),'id'])||{});}})[_0xb521('0x1a')](respondWithResult(_0x1c8924,null))[_0xb521('0x2a')](handleError(_0x1c8924,null));};exports[_0xb521('0x3e')]=function(_0x2c5266,_0xea977){var _0x5aaf0c={'raw':![],'where':{}};var _0x592709={};var _0x47156d={'count':0x0,'rows':[]};return db['WhatsappInteraction'][_0xb521('0x3f')]({'where':{'id':_0x2c5266[_0xb521('0x2c')]['id']}})[_0xb521('0x1a')](handleEntityNotFound(_0xea977,null))['then'](function(_0x3dce4b){if(_0x3dce4b){_0x592709[_0xb521('0x2d')]=_[_0xb521('0x2e')](db['WhatsappMessage']['rawAttributes']);_0x592709[_0xb521('0x28')]=_[_0xb521('0x2e')](_0x2c5266[_0xb521('0x28')]);_0x592709[_0xb521('0x2f')]=_[_0xb521('0x30')](_0x592709[_0xb521('0x2d')],_0x592709['query']);_0x5aaf0c['attributes']=_[_0xb521('0x30')](_0x592709[_0xb521('0x2d')],qs['fields'](_0x2c5266[_0xb521('0x28')][_0xb521('0x32')]));_0x5aaf0c[_0xb521('0x31')]=_0x5aaf0c[_0xb521('0x31')][_0xb521('0x40')]?_0x5aaf0c['attributes']:_0x592709[_0xb521('0x2d')];if(!_0x2c5266[_0xb521('0x28')][_0xb521('0x41')](_0xb521('0x42'))){_0x5aaf0c[_0xb521('0x14')]=qs[_0xb521('0x14')](_0x2c5266[_0xb521('0x28')][_0xb521('0x14')]);_0x5aaf0c[_0xb521('0x13')]=qs[_0xb521('0x13')](_0x2c5266[_0xb521('0x28')][_0xb521('0x13')]);}_0x5aaf0c[_0xb521('0x43')]=qs[_0xb521('0x44')](_0x2c5266[_0xb521('0x28')][_0xb521('0x44')]);_0x5aaf0c[_0xb521('0x45')]=qs[_0xb521('0x2f')](_['pick'](_0x2c5266[_0xb521('0x28')],_0x592709[_0xb521('0x2f')]));_0x5aaf0c['where'][_0xb521('0x46')]=_0x3dce4b['id'];if(_0x2c5266[_0xb521('0x28')][_0xb521('0x47')]){_0x5aaf0c[_0xb521('0x45')]=_[_0xb521('0x48')](_0x5aaf0c['where'],{'$or':_[_0xb521('0x21')](_0x5aaf0c[_0xb521('0x31')],function(_0x5c7c90){var _0x20a496={};_0x20a496[_0x5c7c90]={'$like':'%'+_0x2c5266['query'][_0xb521('0x47')]+'%'};return _0x20a496;})});}if(_0x2c5266[_0xb521('0x28')]['$gte']){var _0x32ef73=_0x2c5266['query'][_0xb521('0x49')][_0xb521('0x4a')](',');var _0x26cee0={};_0x26cee0[_0x32ef73[0x0]]={'$gte':moment(_0x32ef73[0x1])[_0xb521('0x4b')]('YYYY-MM-DD\x20HH:mm:ss')};_0x5aaf0c[_0xb521('0x45')]=_[_0xb521('0x48')](_0x5aaf0c[_0xb521('0x45')],_0x26cee0);}_0x5aaf0c=_['merge']({},_0x5aaf0c,_0x2c5266[_0xb521('0x35')]);return db[_0xb521('0x3b')]['count']({'where':_0x5aaf0c[_0xb521('0x45')]})[_0xb521('0x1a')](function(_0x3fd35d){_0x47156d['count']=_0x3fd35d;if(_0x2c5266['query'][_0xb521('0x33')]){_0x5aaf0c[_0xb521('0x34')]=[{'all':!![]}];}return db[_0xb521('0x3b')][_0xb521('0x27')](_0x5aaf0c);})[_0xb521('0x1a')](function(_0x4bfb30){_0x47156d[_0xb521('0x4c')]=_0x4bfb30;return _0x47156d;});}})[_0xb521('0x1a')](respondWithFilteredResult(_0xea977,_0x5aaf0c))[_0xb521('0x2a')](handleError(_0xea977,null));};exports[_0xb521('0x4d')]=function(_0x549252,_0x2b1af7){return db[_0xb521('0x22')][_0xb521('0x38')]({'where':{'id':_0x549252[_0xb521('0x2c')]['id']}})[_0xb521('0x1a')](handleEntityNotFound(_0x2b1af7,null))[_0xb521('0x1a')](function(_0x370996){if(_0x370996){return _0x370996[_0xb521('0x4e')](_0x549252[_0xb521('0x37')][_0xb521('0x3d')],_[_0xb521('0x3c')](_0x549252[_0xb521('0x37')],[_0xb521('0x3d'),'id'])||{})[_0xb521('0x4f')](function(){return db['Tag'][_0xb521('0x27')]({'attributes':['id',_0xb521('0x1e'),_0xb521('0x50')],'where':{'id':_0x549252['body']['ids']}});})[_0xb521('0x1a')](function(_0x46d43a){socket[_0xb521('0x51')]('whatsappInteractionTags:save',{'id':Number(_0x549252['params']['id']),'tags':_0x46d43a||[]});return{'id':Number(_0x549252[_0xb521('0x2c')]['id']),'tags':_0x46d43a||[]};});}})[_0xb521('0x1a')](respondWithResult(_0x2b1af7,null))['catch'](handleError(_0x2b1af7,null));};exports[_0xb521('0x52')]=function(_0x144b46,_0x27732e){return db[_0xb521('0x22')][_0xb521('0x38')]({'where':{'id':_0x144b46['params']['id']}})['then'](handleEntityNotFound(_0x27732e,null))[_0xb521('0x1a')](function(_0x5878f1){if(_0x5878f1){return _0x5878f1['removeTags'](_0x144b46[_0xb521('0x28')][_0xb521('0x3d')]);}})[_0xb521('0x1a')](respondWithStatusCode(_0x27732e,null))['catch'](handleError(_0x27732e,null));};exports['download']=function(_0x40961e,_0x48c82f){var _0x2b1934=moment()[_0xb521('0x53')]()[_0xb521('0x54')]();var _0x58a0af=path['join'](config[_0xb521('0x55')],_0xb521('0x56'),_0xb521('0x57'),_0xb521('0x58'));var _0x1f4b52=path[_0xb521('0x59')](config[_0xb521('0x55')],_0xb521('0x56'),_0xb521('0x57'),_0xb521('0x5a'));var _0x409a18=path[_0xb521('0x59')](_0x58a0af,_0x2b1934);var _0x28b00f=util[_0xb521('0x4b')]('transcript-%d-%s.zip',_0x40961e[_0xb521('0x2c')]['id'],_0x2b1934);var _0x367a0d=path[_0xb521('0x59')](_0x58a0af,_0x28b00f);var _0x34eb43=[];_0x34eb43[_0xb521('0x5b')]({'model':db['User'],'as':_0xb521('0x5c'),'attributes':['id',_0xb521('0x5d')],'raw':!![]});_0x34eb43[_0xb521('0x5b')]({'model':db[_0xb521('0x5e')],'as':_0xb521('0x5f'),'attributes':['id',_0xb521('0x60'),_0xb521('0x61')],'raw':!![]});if(_0x40961e[_0xb521('0x28')][_0xb521('0x5a')]){_0x34eb43[_0xb521('0x5b')]({'model':db['Attachment'],'as':_0xb521('0x62'),'raw':!![]});}var _0x44f6b4=[{'model':db['WhatsappMessage'],'as':_0xb521('0x63'),'attributes':['id',_0xb521('0x37'),'createdAt',_0xb521('0x64'),'secret',_0xb521('0x65')],'include':_0x34eb43}];_0x44f6b4['push']({'model':db['WhatsappAccount'],'as':_0xb521('0x66'),'attributes':['id',_0xb521('0x1e')]});_0x44f6b4[_0xb521('0x5b')]({'model':db['User'],'as':_0xb521('0x67'),'attributes':['id',_0xb521('0x5d')]});return db[_0xb521('0x22')][_0xb521('0x38')]({'where':{'id':_0x40961e['params']['id']},'include':_0x44f6b4})[_0xb521('0x1a')](handleEntityNotFound(_0x48c82f,null))['then'](function(_0x4261b8){if(_0x4261b8){var _0x4344ab=_0x4261b8[_0xb521('0x68')]({'plain':!![]});fs[_0xb521('0x69')](_0x409a18);var _0x464675={'channel':_0xb521('0x6a'),'account':_0x4344ab[_0xb521('0x66')][_0xb521('0x1e')],'agent':_0x4344ab['Owner']?_0x4344ab[_0xb521('0x67')][_0xb521('0x5d')]:_0xb521('0x6b'),'createdAt':moment(_0x4344ab['createdAt'])[_0xb521('0x4b')](_0xb521('0x6c'))[_0xb521('0x54')](),'closedAt':_0x4344ab['closed']?moment(_0x4344ab['closedAt'])[_0xb521('0x4b')](_0xb521('0x6c'))[_0xb521('0x54')]():'','disposition':_0x4344ab[_0xb521('0x6d')],'messages':_(_0x4344ab[_0xb521('0x63')])['filter']({'secret':![]})[_0xb521('0x21')](function(_0xbd8274){if(_0xbd8274[_0xb521('0x62')]){var _0x3af877=path[_0xb521('0x59')](_0x1f4b52,_0xbd8274[_0xb521('0x62')][_0xb521('0x6e')]);if(fs[_0xb521('0x6f')](_0x3af877)){fs['createReadStream'](_0x3af877)[_0xb521('0x70')](fs[_0xb521('0x71')](path[_0xb521('0x59')](_0x409a18,_0xbd8274['Attachment'][_0xb521('0x6e')])));}}return{'date':moment(_0xbd8274[_0xb521('0x72')])[_0xb521('0x4b')](_0xb521('0x6c'))['toString'](),'sender':_0xbd8274['direction']===_0xb521('0x73')?_0xbd8274[_0xb521('0x5c')]?_0xbd8274[_0xb521('0x5c')][_0xb521('0x5d')]:_0xb521('0x74'):_0xbd8274[_0xb521('0x5f')][_0xb521('0x60')]+(_0xbd8274[_0xb521('0x5f')][_0xb521('0x61')]?'\x20'+_0xbd8274[_0xb521('0x5f')][_0xb521('0x61')]:''),'body':_0xbd8274[_0xb521('0x62')]?_0xbd8274['Attachment'][_0xb521('0x6e')]:_0xbd8274['body'],'direction':_0xbd8274[_0xb521('0x64')]===_0xb521('0x73')?'A':'C','secret':_0xbd8274[_0xb521('0x75')],'read':_0xbd8274[_0xb521('0x65')],'attachment':_0xbd8274[_0xb521('0x62')]};})[_0xb521('0x76')]()};return ejs[_0xb521('0x77')](path[_0xb521('0x59')](config[_0xb521('0x55')],'server',_0xb521('0x78'),_0xb521('0x79')),{'interaction':_0x464675})[_0xb521('0x1a')](function(_0x2d3a28){var _0x3dd8ad=path['join'](_0x409a18,_0xb521('0x7a')+_0x4344ab['id']+'-'+_0x2b1934+_0xb521('0x7b'));var _0x25b21e={'path':_0x3dd8ad,'channel':_0xb521('0x6a'),'interactionId':_0x4344ab['id']};return pdf[_0xb521('0x7c')](_0x2d3a28,_0x25b21e);})[_0xb521('0x1a')](function(){return new BPromise(function(_0x181624,_0x5859bb){zipdir(_0x409a18,{'saveTo':_0x367a0d},function(_0x5a297a,_0x11390e){if(_0x5a297a)return _0x5859bb(_0x5a297a);return _0x181624(_0x11390e);});})[_0xb521('0x1a')](function(){return new BPromise(function(_0x5db2e1,_0x387b26){rimraf(_0x409a18,function(_0x2bdd67){if(_0x2bdd67)_0x387b26(_0x2bdd67);return _0x5db2e1();});});})[_0xb521('0x1a')](function(){return _0x48c82f[_0xb521('0x7d')](_0x367a0d,_0x28b00f,function(_0x3ac38f){if(_0x3ac38f){console['log']('err',_0x3ac38f);}else{fs[_0xb521('0x7e')](_0x367a0d);}});});});}else{return _0x48c82f[_0xb521('0xf')](0xc8);}})['catch'](handleError(_0x48c82f,null));};
\ No newline at end of file
+var _0x441a=['Account','Owner','get','Whatsapp','N.A.','closed','disposition','Attachment','basename','existsSync','createReadStream','pipe','System','lastName','out','value','renderFile','views','transcript-','.pdf','err','unlinkSync','sendStatus','rimraf','zip-dir','moment','path','ejs','lodash','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','./whatsappInteraction.socket','register','end','status','json','offset','undefined','limit','count','set','Content-Range','then','destroy','error','stack','name','index','map','WhatsappInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','query','user','params','model','keys','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','body','update','catch','describe','addMessage','ids','omit','getMessages','findOne','WhatsappMessage','nolimit','order','sort','where','pick','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','rows','setTags','spread','Tag','color','emit','whatsappInteractionTags:save','removeTags','download','unix','toString','join','server','files','tmp','root','format','transcript-%d-%s.zip','push','User','fullname','CmContact','Contact','firstName','attachments','Messages','createdAt','direction','secret','read'];(function(_0x379b62,_0x594c3f){var _0x14fdec=function(_0x4054ef){while(--_0x4054ef){_0x379b62['push'](_0x379b62['shift']());}};_0x14fdec(++_0x594c3f);}(_0x441a,0x191));var _0xa441=function(_0x525c7b,_0x488fcc){_0x525c7b=_0x525c7b-0x0;var _0x27b33e=_0x441a[_0x525c7b];return _0x27b33e;};'use strict';var rimraf=require(_0xa441('0x0'));var zipdir=require(_0xa441('0x1'));var moment=require(_0xa441('0x2'));var BPromise=require('bluebird');var util=require('util');var path=require(_0xa441('0x3'));var ejs=require(_0xa441('0x4'));var fs=require('fs');var _=require(_0xa441('0x5'));var Redis=require('ioredis');var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var pdf=require(_0xa441('0x6'));var logger=require(_0xa441('0x7'))(_0xa441('0x8'));var config=require(_0xa441('0x9'));var db=require(_0xa441('0xa'))['db'];config[_0xa441('0xb')]=_[_0xa441('0xc')](config['redis'],{'host':_0xa441('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa441('0xb')]));require(_0xa441('0xe'))[_0xa441('0xf')](socket);function respondWithStatusCode(_0x36f8d0,_0xa414be){_0xa414be=_0xa414be||0xcc;return function(_0x398042){if(_0x398042){return _0x36f8d0['sendStatus'](_0xa414be);}return _0x36f8d0['status'](_0xa414be)[_0xa441('0x10')]();};}function respondWithResult(_0x35c0d7,_0x6090e1){_0x6090e1=_0x6090e1||0xc8;return function(_0x2b49d3){if(_0x2b49d3){return _0x35c0d7[_0xa441('0x11')](_0x6090e1)[_0xa441('0x12')](_0x2b49d3);}};}function respondWithFilteredResult(_0x3aaa34,_0x4fd8d1){return function(_0x7c2dac){if(_0x7c2dac){var _0x2c510b=typeof _0x4fd8d1[_0xa441('0x13')]===_0xa441('0x14')&&typeof _0x4fd8d1[_0xa441('0x15')]==='undefined';var _0x5546db=_0x7c2dac['count'];var _0x14e817=_0x2c510b?0x0:_0x4fd8d1[_0xa441('0x13')];var _0x431678=_0x2c510b?_0x7c2dac[_0xa441('0x16')]:_0x4fd8d1[_0xa441('0x13')]+_0x4fd8d1['limit'];var _0x432033;if(_0x431678>=_0x5546db){_0x431678=_0x5546db;_0x432033=0xc8;}else{_0x432033=0xce;}_0x3aaa34[_0xa441('0x11')](_0x432033);return _0x3aaa34[_0xa441('0x17')](_0xa441('0x18'),_0x14e817+'-'+_0x431678+'/'+_0x5546db)['json'](_0x7c2dac);}return null;};}function saveUpdates(_0x595e44){return function(_0x2e53ff){if(_0x2e53ff){return _0x2e53ff['update'](_0x595e44)[_0xa441('0x19')](function(_0x153529){return _0x153529;});}return null;};}function removeEntity(_0x24cf92){return function(_0x50c28a){if(_0x50c28a){return _0x50c28a[_0xa441('0x1a')]()[_0xa441('0x19')](function(){_0x24cf92[_0xa441('0x11')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1af2e1){return function(_0x40f21d){if(!_0x40f21d){_0x1af2e1['sendStatus'](0x194);}return _0x40f21d;};}function handleError(_0x2554b1,_0x1106a5){_0x1106a5=_0x1106a5||0x1f4;return function(_0x5e09ba){logger[_0xa441('0x1b')](_0x5e09ba[_0xa441('0x1c')]);if(_0x5e09ba[_0xa441('0x1d')]){delete _0x5e09ba[_0xa441('0x1d')];}_0x2554b1[_0xa441('0x11')](_0x1106a5)['send'](_0x5e09ba);};}exports[_0xa441('0x1e')]=function(_0xbb2919,_0x19dd2d){var _0x1b1eb2={};var _0x3cad27=_[_0xa441('0x1f')](db[_0xa441('0x20')][_0xa441('0x21')],function(_0x2a0481){return{'name':_0x2a0481[_0xa441('0x22')],'type':_0x2a0481[_0xa441('0x23')][_0xa441('0x24')]};});_0x1b1eb2=qs[_0xa441('0x25')](_0x3cad27,_0xbb2919);return interaction[_0xa441('0x26')]('whatsapp',_0xbb2919[_0xa441('0x27')],_0xbb2919[_0xa441('0x28')],_0x1b1eb2,_0x3cad27)[_0xa441('0x19')](respondWithFilteredResult(_0x19dd2d,_0x1b1eb2))['catch'](handleError(_0x19dd2d,null));};exports['show']=function(_0x264a79,_0x504d5a){var _0x1d73c1={'raw':![],'where':{'id':_0x264a79[_0xa441('0x29')]['id']}},_0x466d8f={};_0x466d8f[_0xa441('0x2a')]=_['keys'](db['WhatsappInteraction'][_0xa441('0x21')]);_0x466d8f[_0xa441('0x27')]=_[_0xa441('0x2b')](_0x264a79[_0xa441('0x27')]);_0x466d8f[_0xa441('0x2c')]=_[_0xa441('0x2d')](_0x466d8f[_0xa441('0x2a')],_0x466d8f['query']);_0x1d73c1[_0xa441('0x2e')]=_[_0xa441('0x2d')](_0x466d8f[_0xa441('0x2a')],qs[_0xa441('0x2f')](_0x264a79[_0xa441('0x27')][_0xa441('0x2f')]));_0x1d73c1[_0xa441('0x2e')]=_0x1d73c1['attributes'][_0xa441('0x30')]?_0x1d73c1[_0xa441('0x2e')]:_0x466d8f[_0xa441('0x2a')];if(_0x264a79[_0xa441('0x27')][_0xa441('0x31')]){_0x1d73c1[_0xa441('0x32')]=[{'all':!![]}];}_0x1d73c1=_[_0xa441('0x33')]({},_0x1d73c1,_0x264a79[_0xa441('0x34')]);return db[_0xa441('0x20')][_0xa441('0x35')](_0x1d73c1)['then'](handleEntityNotFound(_0x504d5a,null))[_0xa441('0x19')](respondWithResult(_0x504d5a,null))['catch'](handleError(_0x504d5a,null));};exports['create']=function(_0x47735e,_0x17a5e3){return db['WhatsappInteraction']['create'](_0x47735e[_0xa441('0x36')],{})['then'](respondWithResult(_0x17a5e3,0xc9))['catch'](handleError(_0x17a5e3,null));};exports[_0xa441('0x37')]=function(_0x4cae56,_0x4e756e){if(_0x4cae56[_0xa441('0x36')]['id']){delete _0x4cae56[_0xa441('0x36')]['id'];}return db[_0xa441('0x20')][_0xa441('0x35')]({'where':{'id':_0x4cae56['params']['id']}})[_0xa441('0x19')](handleEntityNotFound(_0x4e756e,null))[_0xa441('0x19')](saveUpdates(_0x4cae56[_0xa441('0x36')],null))[_0xa441('0x19')](respondWithResult(_0x4e756e,null))['catch'](handleError(_0x4e756e,null));};exports['destroy']=function(_0x582449,_0x272442){return db['WhatsappInteraction'][_0xa441('0x35')]({'where':{'id':_0x582449[_0xa441('0x29')]['id']}})[_0xa441('0x19')](handleEntityNotFound(_0x272442,null))['then'](removeEntity(_0x272442,null))[_0xa441('0x38')](handleError(_0x272442,null));};exports[_0xa441('0x39')]=function(_0x1b8570,_0x1e4c11){return db[_0xa441('0x20')][_0xa441('0x39')]()[_0xa441('0x19')](respondWithResult(_0x1e4c11,null))[_0xa441('0x38')](handleError(_0x1e4c11,null));};exports[_0xa441('0x3a')]=function(_0x16c783,_0x34e643){return db['WhatsappMessage']['find']({'where':{'id':_0x16c783[_0xa441('0x29')]['id']}})[_0xa441('0x19')](handleEntityNotFound(_0x34e643,null))[_0xa441('0x19')](function(_0x254f19){if(_0x254f19){return _0x254f19[_0xa441('0x3a')](_0x16c783[_0xa441('0x36')][_0xa441('0x3b')],_[_0xa441('0x3c')](_0x16c783[_0xa441('0x36')],[_0xa441('0x3b'),'id'])||{});}})[_0xa441('0x19')](respondWithResult(_0x34e643,null))[_0xa441('0x38')](handleError(_0x34e643,null));};exports[_0xa441('0x3d')]=function(_0x5bbc20,_0x2483ef){var _0x4f91cd={'raw':![],'where':{}};var _0x2c6a7a={};var _0x1811e8={'count':0x0,'rows':[]};return db[_0xa441('0x20')][_0xa441('0x3e')]({'where':{'id':_0x5bbc20['params']['id']}})[_0xa441('0x19')](handleEntityNotFound(_0x2483ef,null))[_0xa441('0x19')](function(_0x60448e){if(_0x60448e){_0x2c6a7a[_0xa441('0x2a')]=_[_0xa441('0x2b')](db[_0xa441('0x3f')]['rawAttributes']);_0x2c6a7a[_0xa441('0x27')]=_[_0xa441('0x2b')](_0x5bbc20[_0xa441('0x27')]);_0x2c6a7a[_0xa441('0x2c')]=_['intersection'](_0x2c6a7a[_0xa441('0x2a')],_0x2c6a7a['query']);_0x4f91cd[_0xa441('0x2e')]=_[_0xa441('0x2d')](_0x2c6a7a[_0xa441('0x2a')],qs[_0xa441('0x2f')](_0x5bbc20['query'][_0xa441('0x2f')]));_0x4f91cd[_0xa441('0x2e')]=_0x4f91cd[_0xa441('0x2e')][_0xa441('0x30')]?_0x4f91cd[_0xa441('0x2e')]:_0x2c6a7a['model'];if(!_0x5bbc20[_0xa441('0x27')]['hasOwnProperty'](_0xa441('0x40'))){_0x4f91cd[_0xa441('0x15')]=qs['limit'](_0x5bbc20[_0xa441('0x27')]['limit']);_0x4f91cd[_0xa441('0x13')]=qs[_0xa441('0x13')](_0x5bbc20['query'][_0xa441('0x13')]);}_0x4f91cd[_0xa441('0x41')]=qs['sort'](_0x5bbc20[_0xa441('0x27')][_0xa441('0x42')]);_0x4f91cd[_0xa441('0x43')]=qs[_0xa441('0x2c')](_[_0xa441('0x44')](_0x5bbc20[_0xa441('0x27')],_0x2c6a7a['filters']));_0x4f91cd[_0xa441('0x43')]['WhatsappInteractionId']=_0x60448e['id'];if(_0x5bbc20[_0xa441('0x27')][_0xa441('0x45')]){_0x4f91cd[_0xa441('0x43')]=_[_0xa441('0x33')](_0x4f91cd[_0xa441('0x43')],{'$or':_[_0xa441('0x1f')](_0x4f91cd[_0xa441('0x2e')],function(_0x37be68){var _0x352b29={};_0x352b29[_0x37be68]={'$like':'%'+_0x5bbc20['query'][_0xa441('0x45')]+'%'};return _0x352b29;})});}if(_0x5bbc20[_0xa441('0x27')]['$gte']){var _0x6a64ee=_0x5bbc20[_0xa441('0x27')][_0xa441('0x46')][_0xa441('0x47')](',');var _0x1cf6cc={};_0x1cf6cc[_0x6a64ee[0x0]]={'$gte':moment(_0x6a64ee[0x1])['format'](_0xa441('0x48'))};_0x4f91cd[_0xa441('0x43')]=_['merge'](_0x4f91cd[_0xa441('0x43')],_0x1cf6cc);}_0x4f91cd=_[_0xa441('0x33')]({},_0x4f91cd,_0x5bbc20['options']);return db['WhatsappMessage']['count']({'where':_0x4f91cd[_0xa441('0x43')]})[_0xa441('0x19')](function(_0x276ae2){_0x1811e8[_0xa441('0x16')]=_0x276ae2;if(_0x5bbc20[_0xa441('0x27')][_0xa441('0x31')]){_0x4f91cd[_0xa441('0x32')]=[{'all':!![]}];}return db[_0xa441('0x3f')][_0xa441('0x26')](_0x4f91cd);})['then'](function(_0x41acf2){_0x1811e8[_0xa441('0x49')]=_0x41acf2;return _0x1811e8;});}})[_0xa441('0x19')](respondWithFilteredResult(_0x2483ef,_0x4f91cd))[_0xa441('0x38')](handleError(_0x2483ef,null));};exports['addTags']=function(_0x1b711b,_0x2dc88d){return db[_0xa441('0x20')]['find']({'where':{'id':_0x1b711b[_0xa441('0x29')]['id']}})['then'](handleEntityNotFound(_0x2dc88d,null))[_0xa441('0x19')](function(_0x109053){if(_0x109053){return _0x109053[_0xa441('0x4a')](_0x1b711b[_0xa441('0x36')][_0xa441('0x3b')],_[_0xa441('0x3c')](_0x1b711b[_0xa441('0x36')],[_0xa441('0x3b'),'id'])||{})[_0xa441('0x4b')](function(){return db[_0xa441('0x4c')][_0xa441('0x26')]({'attributes':['id',_0xa441('0x1d'),_0xa441('0x4d')],'where':{'id':_0x1b711b['body']['ids']}});})[_0xa441('0x19')](function(_0x1f393a){socket[_0xa441('0x4e')](_0xa441('0x4f'),{'id':Number(_0x1b711b[_0xa441('0x29')]['id']),'tags':_0x1f393a||[]});return{'id':Number(_0x1b711b[_0xa441('0x29')]['id']),'tags':_0x1f393a||[]};});}})[_0xa441('0x19')](respondWithResult(_0x2dc88d,null))['catch'](handleError(_0x2dc88d,null));};exports[_0xa441('0x50')]=function(_0x4e85f7,_0x4a9af0){return db['WhatsappInteraction']['find']({'where':{'id':_0x4e85f7[_0xa441('0x29')]['id']}})['then'](handleEntityNotFound(_0x4a9af0,null))[_0xa441('0x19')](function(_0x4cfc66){if(_0x4cfc66){return _0x4cfc66[_0xa441('0x50')](_0x4e85f7['query'][_0xa441('0x3b')]);}})[_0xa441('0x19')](respondWithStatusCode(_0x4a9af0,null))[_0xa441('0x38')](handleError(_0x4a9af0,null));};exports[_0xa441('0x51')]=function(_0x2f1834,_0x34e8b7){var _0x477726=moment()[_0xa441('0x52')]()[_0xa441('0x53')]();var _0x357b69=path[_0xa441('0x54')](config['root'],_0xa441('0x55'),_0xa441('0x56'),_0xa441('0x57'));var _0x569d66=path[_0xa441('0x54')](config[_0xa441('0x58')],_0xa441('0x55'),_0xa441('0x56'),'attachments');var _0x289822=path[_0xa441('0x54')](_0x357b69,_0x477726);var _0x5e701b=util[_0xa441('0x59')](_0xa441('0x5a'),_0x2f1834[_0xa441('0x29')]['id'],_0x477726);var _0x408f4b=path[_0xa441('0x54')](_0x357b69,_0x5e701b);var _0x440255=[];_0x440255[_0xa441('0x5b')]({'model':db[_0xa441('0x5c')],'as':_0xa441('0x5c'),'attributes':['id',_0xa441('0x5d')],'raw':!![]});_0x440255['push']({'model':db[_0xa441('0x5e')],'as':_0xa441('0x5f'),'attributes':['id',_0xa441('0x60'),'lastName'],'raw':!![]});if(_0x2f1834[_0xa441('0x27')][_0xa441('0x61')]){_0x440255[_0xa441('0x5b')]({'model':db['Attachment'],'as':'Attachment','raw':!![]});}var _0x3e2b19=[{'model':db[_0xa441('0x3f')],'as':_0xa441('0x62'),'attributes':['id',_0xa441('0x36'),_0xa441('0x63'),_0xa441('0x64'),_0xa441('0x65'),_0xa441('0x66')],'include':_0x440255}];_0x3e2b19[_0xa441('0x5b')]({'model':db['WhatsappAccount'],'as':_0xa441('0x67'),'attributes':['id',_0xa441('0x1d')]});_0x3e2b19['push']({'model':db[_0xa441('0x5c')],'as':_0xa441('0x68'),'attributes':['id',_0xa441('0x5d')]});return db[_0xa441('0x20')][_0xa441('0x35')]({'where':{'id':_0x2f1834[_0xa441('0x29')]['id']},'include':_0x3e2b19})[_0xa441('0x19')](handleEntityNotFound(_0x34e8b7,null))['then'](function(_0x2d29e4){if(_0x2d29e4){var _0x3b4d88=_0x2d29e4[_0xa441('0x69')]({'plain':!![]});fs['mkdirSync'](_0x289822);var _0x22ceee={'channel':_0xa441('0x6a'),'account':_0x3b4d88[_0xa441('0x67')][_0xa441('0x1d')],'agent':_0x3b4d88[_0xa441('0x68')]?_0x3b4d88[_0xa441('0x68')]['fullname']:_0xa441('0x6b'),'createdAt':moment(_0x3b4d88[_0xa441('0x63')])[_0xa441('0x59')](_0xa441('0x48'))[_0xa441('0x53')](),'closedAt':_0x3b4d88[_0xa441('0x6c')]?moment(_0x3b4d88['closedAt'])[_0xa441('0x59')](_0xa441('0x48'))[_0xa441('0x53')]():'','disposition':_0x3b4d88[_0xa441('0x6d')],'messages':_(_0x3b4d88[_0xa441('0x62')])[_0xa441('0x45')]({'secret':![]})[_0xa441('0x1f')](function(_0x28c98e){if(_0x28c98e[_0xa441('0x6e')]){var _0x1331c7=path[_0xa441('0x54')](_0x569d66,_0x28c98e[_0xa441('0x6e')][_0xa441('0x6f')]);if(fs[_0xa441('0x70')](_0x1331c7)){fs[_0xa441('0x71')](_0x1331c7)[_0xa441('0x72')](fs['createWriteStream'](path[_0xa441('0x54')](_0x289822,_0x28c98e[_0xa441('0x6e')]['basename'])));}}return{'date':moment(_0x28c98e[_0xa441('0x63')])['format'](_0xa441('0x48'))[_0xa441('0x53')](),'sender':_0x28c98e['direction']==='out'?_0x28c98e['User']?_0x28c98e[_0xa441('0x5c')][_0xa441('0x5d')]:_0xa441('0x73'):_0x28c98e[_0xa441('0x5f')][_0xa441('0x60')]+(_0x28c98e[_0xa441('0x5f')]['lastName']?'\x20'+_0x28c98e['Contact'][_0xa441('0x74')]:''),'body':_0x28c98e[_0xa441('0x6e')]?_0x28c98e[_0xa441('0x6e')][_0xa441('0x6f')]:_0x28c98e['body'],'direction':_0x28c98e[_0xa441('0x64')]===_0xa441('0x75')?'A':'C','secret':_0x28c98e[_0xa441('0x65')],'read':_0x28c98e[_0xa441('0x66')],'attachment':_0x28c98e[_0xa441('0x6e')]};})[_0xa441('0x76')]()};return ejs[_0xa441('0x77')](path[_0xa441('0x54')](config[_0xa441('0x58')],'server',_0xa441('0x78'),'downloadInteraction.ejs'),{'interaction':_0x22ceee})[_0xa441('0x19')](function(_0x485f62){var _0xde4ce8=path[_0xa441('0x54')](_0x289822,_0xa441('0x79')+_0x3b4d88['id']+'-'+_0x477726+_0xa441('0x7a'));var _0x2c8fb3={'path':_0xde4ce8,'channel':'Whatsapp','interactionId':_0x3b4d88['id']};return pdf['createPdfFromHTML'](_0x485f62,_0x2c8fb3);})[_0xa441('0x19')](function(){return new BPromise(function(_0xc73434,_0x4da0c4){zipdir(_0x289822,{'saveTo':_0x408f4b},function(_0x3b7f00,_0x2a5d9d){if(_0x3b7f00)return _0x4da0c4(_0x3b7f00);return _0xc73434(_0x2a5d9d);});})[_0xa441('0x19')](function(){return new BPromise(function(_0xead188,_0x3f8c98){rimraf(_0x289822,function(_0x25616e){if(_0x25616e)_0x3f8c98(_0x25616e);return _0xead188();});});})[_0xa441('0x19')](function(){return _0x34e8b7[_0xa441('0x51')](_0x408f4b,_0x5e701b,function(_0x7b4c3a){if(_0x7b4c3a){console['log'](_0xa441('0x7b'),_0x7b4c3a);}else{fs[_0xa441('0x7c')](_0x408f4b);}});});});}else{return _0x34e8b7[_0xa441('0x7d')](0xc8);}})[_0xa441('0x38')](handleError(_0x34e8b7,null));};
\ No newline at end of file
index a963099..159404b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2a6=['update','remove','getUsers','then','Users','map','findAll','unreadMessages','length','emit','catch','hook','exports','events','WhatsappMessage','save'];(function(_0x11f37a,_0x73cf3){var _0x14f364=function(_0x3c9b1b){while(--_0x3c9b1b){_0x11f37a['push'](_0x11f37a['shift']());}};_0x14f364(++_0x73cf3);}(_0xf2a6,0x13d));var _0x6f2a=function(_0x36ed36,_0x375b9b){_0x36ed36=_0x36ed36-0x0;var _0x234b51=_0xf2a6[_0x36ed36];return _0x234b51;};'use strict';var EventEmitter=require(_0x6f2a('0x0'));var WhatsappInteraction=require('../../mysqldb')['db']['WhatsappInteraction'];var WhatsappMessage=require('../../mysqldb')['db'][_0x6f2a('0x1')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6f2a('0x2'),'afterUpdate':_0x6f2a('0x3'),'afterDestroy':_0x6f2a('0x4')};function emitEvent(_0x32ddb6){return function(_0x1b4af5,_0x21a7db,_0x4684f4){_0x1b4af5[_0x6f2a('0x5')]({'attributes':['id'],'raw':!![]})[_0x6f2a('0x6')](function(_0x424ebd){_0x1b4af5['setDataValue'](_0x6f2a('0x7'),_0x424ebd[_0x6f2a('0x8')](function(_0x372663){return{'id':_0x372663['id']};}));return WhatsappMessage[_0x6f2a('0x9')]({'where':{'WhatsappInteractionId':_0x1b4af5['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x2fabc5){_0x1b4af5['setDataValue'](_0x6f2a('0xa'),_0x2fabc5[_0x6f2a('0xb')]);WhatsappInteractionEvents[_0x6f2a('0xc')](_0x32ddb6+':'+_0x1b4af5['id'],_0x1b4af5);WhatsappInteractionEvents['emit'](_0x32ddb6,_0x1b4af5);_0x4684f4(null);})[_0x6f2a('0xd')](_0x4684f4(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappInteraction[_0x6f2a('0xe')](e,emitEvent(event));}}module[_0x6f2a('0xf')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x280f=['save','update','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','WhatsappInteraction','../../mysqldb','WhatsappMessage','setMaxListeners'];(function(_0x25f0aa,_0x319f87){var _0x433835=function(_0x2b8696){while(--_0x2b8696){_0x25f0aa['push'](_0x25f0aa['shift']());}};_0x433835(++_0x319f87);}(_0x280f,0xe2));var _0xf280=function(_0x3ba924,_0x3b99f0){_0x3ba924=_0x3ba924-0x0;var _0x4cc1df=_0x280f[_0x3ba924];return _0x4cc1df;};'use strict';var EventEmitter=require(_0xf280('0x0'));var WhatsappInteraction=require('../../mysqldb')['db'][_0xf280('0x1')];var WhatsappMessage=require(_0xf280('0x2'))['db'][_0xf280('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xf280('0x4')](0x0);var events={'afterCreate':_0xf280('0x5'),'afterUpdate':_0xf280('0x6'),'afterDestroy':_0xf280('0x7')};function emitEvent(_0x4fe5b5){return function(_0x270eed,_0x1d8697,_0x23925d){_0x270eed[_0xf280('0x8')]({'attributes':['id'],'raw':!![]})[_0xf280('0x9')](function(_0x49d0df){_0x270eed[_0xf280('0xa')](_0xf280('0xb'),_0x49d0df[_0xf280('0xc')](function(_0x2c809b){return{'id':_0x2c809b['id']};}));return WhatsappMessage[_0xf280('0xd')]({'where':{'WhatsappInteractionId':_0x270eed['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf280('0x9')](function(_0x5360c3){_0x270eed[_0xf280('0xa')](_0xf280('0xe'),_0x5360c3[_0xf280('0xf')]);WhatsappInteractionEvents[_0xf280('0x10')](_0x4fe5b5+':'+_0x270eed['id'],_0x270eed);WhatsappInteractionEvents[_0xf280('0x10')](_0x4fe5b5,_0x270eed);_0x23925d(null);})[_0xf280('0x11')](_0x23925d(null));};}for(var e in events){if(events[_0xf280('0x12')](e)){var event=events[e];WhatsappInteraction[_0xf280('0x13')](e,emitEvent(event));}}module[_0xf280('0x14')]=WhatsappInteractionEvents;
\ No newline at end of file
index 89d17ad..bbeb537 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b2a=['bluebird','request-promise','path','rimraf','../../config/environment','./whatsappInteraction.attributes','exports','define','whatsapp_interactions','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment'];(function(_0x3e3ac9,_0x403f3a){var _0x285f73=function(_0x26242c){while(--_0x26242c){_0x3e3ac9['push'](_0x3e3ac9['shift']());}};_0x285f73(++_0x403f3a);}(_0x5b2a,0x1bd));var _0xa5b2=function(_0x45ae0d,_0x1ea3b9){_0x45ae0d=_0x45ae0d-0x0;var _0x371826=_0x5b2a[_0x45ae0d];return _0x371826;};'use strict';var _=require(_0xa5b2('0x0'));var util=require(_0xa5b2('0x1'));var logger=require(_0xa5b2('0x2'))(_0xa5b2('0x3'));var moment=require(_0xa5b2('0x4'));var BPromise=require(_0xa5b2('0x5'));var rp=require(_0xa5b2('0x6'));var fs=require('fs');var path=require(_0xa5b2('0x7'));var rimraf=require(_0xa5b2('0x8'));var config=require(_0xa5b2('0x9'));var attributes=require(_0xa5b2('0xa'));module[_0xa5b2('0xb')]=function(_0x221ccd,_0x299b16){return _0x221ccd[_0xa5b2('0xc')]('WhatsappInteraction',attributes,{'tableName':_0xa5b2('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x49f2e7,_0x14b66e,_0x33fd3e){if(_0x49f2e7['changed'](_0xa5b2('0xe'))){_0x49f2e7[_0xa5b2('0xf')]=moment()[_0xa5b2('0x10')](_0xa5b2('0x11'));}_0x33fd3e(null,_0x49f2e7);}}});};
\ No newline at end of file
+var _0x297d=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappInteraction.attributes','define','whatsapp_interactions','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util'];(function(_0x4f4212,_0xd01d82){var _0x1f48ae=function(_0xea4b13){while(--_0xea4b13){_0x4f4212['push'](_0x4f4212['shift']());}};_0x1f48ae(++_0xd01d82);}(_0x297d,0x14e));var _0xd297=function(_0x2493e2,_0x1b9857){_0x2493e2=_0x2493e2-0x0;var _0x4a3899=_0x297d[_0x2493e2];return _0x4a3899;};'use strict';var _=require(_0xd297('0x0'));var util=require(_0xd297('0x1'));var logger=require(_0xd297('0x2'))(_0xd297('0x3'));var moment=require('moment');var BPromise=require(_0xd297('0x4'));var rp=require(_0xd297('0x5'));var fs=require('fs');var path=require(_0xd297('0x6'));var rimraf=require(_0xd297('0x7'));var config=require(_0xd297('0x8'));var attributes=require(_0xd297('0x9'));module['exports']=function(_0x4c728f,_0x2d8cd6){return _0x4c728f[_0xd297('0xa')]('WhatsappInteraction',attributes,{'tableName':_0xd297('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4da32e,_0x59f7d0,_0x446020){if(_0x4da32e[_0xd297('0xc')]('closed')){_0x4da32e[_0xd297('0xd')]=moment()[_0xd297('0xe')](_0xd297('0xf'));}_0x446020(null,_0x4da32e);}}});};
\ No newline at end of file
index 7a20ed4..c719d38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6529=['stringify','error','code','WhatsappInteraction,\x20%s,\x20%s','message','info','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','options','raw','where','attributes','then','AddTagsToWhatsappInteraction','addTags','body','spread','AddTags','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s'];(function(_0x577f71,_0x3a8951){var _0xfec7c2=function(_0x440797){while(--_0x440797){_0x577f71['push'](_0x577f71['shift']());}};_0xfec7c2(++_0x3a8951);}(_0x6529,0x17d));var _0x9652=function(_0x16438c,_0x35d747){_0x16438c=_0x16438c-0x0;var _0x1eb905=_0x6529[_0x16438c];return _0x1eb905;};'use strict';var _=require('lodash');var util=require(_0x9652('0x0'));var moment=require(_0x9652('0x1'));var BPromise=require('bluebird');var rs=require(_0x9652('0x2'));var fs=require('fs');var Redis=require(_0x9652('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x9652('0x4'));var logger=require(_0x9652('0x5'))(_0x9652('0x6'));var config=require(_0x9652('0x7'));var jayson=require(_0x9652('0x8'));var client=jayson['client'][_0x9652('0x9')]({'port':0x232a});config[_0x9652('0xa')]=_[_0x9652('0xb')](config['redis'],{'host':_0x9652('0xc'),'port':0x18eb});var socket=require(_0x9652('0xd'))(new Redis(config[_0x9652('0xa')]));require(_0x9652('0xe'))[_0x9652('0xf')](socket);function respondWithRpcPromise(_0x3489c7,_0x7799c3,_0xf5abec){return new BPromise(function(_0x164907,_0x179e27){return client['request'](_0x3489c7,_0xf5abec)['then'](function(_0x1cc5f0){logger['info']('WhatsappInteraction,\x20%s,\x20%s',_0x7799c3,_0x9652('0x10'));logger[_0x9652('0x11')](_0x9652('0x12'),_0x7799c3,'request\x20sent',JSON[_0x9652('0x13')](_0x1cc5f0));if(_0x1cc5f0[_0x9652('0x14')]){if(_0x1cc5f0[_0x9652('0x14')][_0x9652('0x15')]===0x1f4){logger[_0x9652('0x14')](_0x9652('0x16'),_0x7799c3,_0x1cc5f0['error']['message']);return _0x179e27(_0x1cc5f0['error']['message']);}logger[_0x9652('0x14')](_0x9652('0x16'),_0x7799c3,_0x1cc5f0['error'][_0x9652('0x17')]);return _0x164907(_0x1cc5f0[_0x9652('0x14')][_0x9652('0x17')]);}else{logger[_0x9652('0x18')](_0x9652('0x16'),_0x7799c3,'request\x20sent');_0x164907(_0x1cc5f0[_0x9652('0x19')][_0x9652('0x17')]);}})[_0x9652('0x1a')](function(_0x37e7ee){logger[_0x9652('0x14')](_0x9652('0x16'),_0x7799c3,_0x37e7ee);_0x179e27(_0x37e7ee);});});}exports[_0x9652('0x1b')]=function(_0x3a8ef8){var _0x2b7c9f=this;return new Promise(function(_0x1f3437,_0x3657de){return db[_0x9652('0x1c')][_0x9652('0x1d')](_0x3a8ef8['body'],{'raw':_0x3a8ef8[_0x9652('0x1e')]?_0x3a8ef8[_0x9652('0x1e')][_0x9652('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3a8ef8[_0x9652('0x1e')]?_0x3a8ef8[_0x9652('0x1e')][_0x9652('0x20')]||null:null,'attributes':_0x3a8ef8[_0x9652('0x1e')]?_0x3a8ef8[_0x9652('0x1e')][_0x9652('0x21')]||null:null,'limit':_0x3a8ef8[_0x9652('0x1e')]?_0x3a8ef8[_0x9652('0x1e')]['limit']||null:null})[_0x9652('0x22')](function(_0xa6eafa){logger[_0x9652('0x18')]('UpdateWhatsappInteraction',_0x3a8ef8);logger['debug'](_0x9652('0x1b'),_0x3a8ef8,JSON[_0x9652('0x13')](_0xa6eafa));_0x1f3437(_0xa6eafa);})['catch'](function(_0x12fbc2){logger[_0x9652('0x14')](_0x9652('0x1b'),_0x12fbc2[_0x9652('0x17')],_0x3a8ef8);_0x3657de(_0x2b7c9f[_0x9652('0x14')](0x1f4,_0x12fbc2[_0x9652('0x17')]));});});};exports[_0x9652('0x23')]=function(_0x139f9a){return new Promise(function(_0x33bd09,_0x193b67){return db[_0x9652('0x1c')]['find']({'where':_0x139f9a[_0x9652('0x1e')]?_0x139f9a[_0x9652('0x1e')][_0x9652('0x20')]||null:null})[_0x9652('0x22')](function(_0x19e726){if(_0x19e726){return _0x19e726[_0x9652('0x24')](_0x139f9a[_0x9652('0x25')]['ids'],_['omit'](_0x139f9a[_0x9652('0x25')],['ids','id'])||{});}})[_0x9652('0x26')](function(_0x45eee5){logger[_0x9652('0x18')](_0x9652('0x27'),_0x139f9a);logger[_0x9652('0x11')](_0x9652('0x27'),_0x139f9a,JSON[_0x9652('0x13')](_0x45eee5));_0x33bd09(_0x45eee5);})[_0x9652('0x1a')](function(_0x41d6d5){logger[_0x9652('0x14')]('AddTags',_0x41d6d5[_0x9652('0x17')],_0x139f9a);_0x193b67(_this[_0x9652('0x14')](0x1f4,_0x41d6d5[_0x9652('0x17')]));});});};
\ No newline at end of file
+var _0xbc85=['request\x20sent','stringify','code','error','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','body','options','where','attributes','limit','then','debug','find','addTags','spread','info','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','client','http','redis','defaults','localhost','./whatsappInteraction.socket','register','request','WhatsappInteraction,\x20%s,\x20%s'];(function(_0xfdb1d5,_0x13b38c){var _0x52a849=function(_0x5e7340){while(--_0x5e7340){_0xfdb1d5['push'](_0xfdb1d5['shift']());}};_0x52a849(++_0x13b38c);}(_0xbc85,0x8e));var _0x5bc8=function(_0x4a51d3,_0x12c4f7){_0x4a51d3=_0x4a51d3-0x0;var _0x3634f7=_0xbc85[_0x4a51d3];return _0x3634f7;};'use strict';var _=require(_0x5bc8('0x0'));var util=require(_0x5bc8('0x1'));var moment=require(_0x5bc8('0x2'));var BPromise=require(_0x5bc8('0x3'));var rs=require(_0x5bc8('0x4'));var fs=require('fs');var Redis=require(_0x5bc8('0x5'));var db=require(_0x5bc8('0x6'))['db'];var utils=require(_0x5bc8('0x7'));var logger=require('../../config/logger')(_0x5bc8('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5bc8('0x9')][_0x5bc8('0xa')]({'port':0x232a});config[_0x5bc8('0xb')]=_[_0x5bc8('0xc')](config[_0x5bc8('0xb')],{'host':_0x5bc8('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5bc8('0xb')]));require(_0x5bc8('0xe'))[_0x5bc8('0xf')](socket);function respondWithRpcPromise(_0x5a11ae,_0x5444f2,_0x28f467){return new BPromise(function(_0x55bedc,_0x1a0351){return client[_0x5bc8('0x10')](_0x5a11ae,_0x28f467)['then'](function(_0x403c40){logger['info'](_0x5bc8('0x11'),_0x5444f2,_0x5bc8('0x12'));logger['debug']('WhatsappInteraction,\x20%s,\x20%s,\x20%s',_0x5444f2,'request\x20sent',JSON[_0x5bc8('0x13')](_0x403c40));if(_0x403c40['error']){if(_0x403c40['error'][_0x5bc8('0x14')]===0x1f4){logger[_0x5bc8('0x15')](_0x5bc8('0x11'),_0x5444f2,_0x403c40['error']['message']);return _0x1a0351(_0x403c40[_0x5bc8('0x15')][_0x5bc8('0x16')]);}logger['error'](_0x5bc8('0x11'),_0x5444f2,_0x403c40['error']['message']);return _0x55bedc(_0x403c40[_0x5bc8('0x15')][_0x5bc8('0x16')]);}else{logger['info'](_0x5bc8('0x11'),_0x5444f2,_0x5bc8('0x12'));_0x55bedc(_0x403c40[_0x5bc8('0x17')][_0x5bc8('0x16')]);}})[_0x5bc8('0x18')](function(_0x511659){logger[_0x5bc8('0x15')](_0x5bc8('0x11'),_0x5444f2,_0x511659);_0x1a0351(_0x511659);});});}exports[_0x5bc8('0x19')]=function(_0x2a3711){var _0x17c1f7=this;return new Promise(function(_0x74543f,_0x527910){return db[_0x5bc8('0x1a')][_0x5bc8('0x1b')](_0x2a3711[_0x5bc8('0x1c')],{'raw':_0x2a3711[_0x5bc8('0x1d')]?_0x2a3711['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2a3711[_0x5bc8('0x1d')]?_0x2a3711[_0x5bc8('0x1d')][_0x5bc8('0x1e')]||null:null,'attributes':_0x2a3711[_0x5bc8('0x1d')]?_0x2a3711[_0x5bc8('0x1d')][_0x5bc8('0x1f')]||null:null,'limit':_0x2a3711[_0x5bc8('0x1d')]?_0x2a3711['options'][_0x5bc8('0x20')]||null:null})[_0x5bc8('0x21')](function(_0xe98b9b){logger['info']('UpdateWhatsappInteraction',_0x2a3711);logger[_0x5bc8('0x22')](_0x5bc8('0x19'),_0x2a3711,JSON[_0x5bc8('0x13')](_0xe98b9b));_0x74543f(_0xe98b9b);})[_0x5bc8('0x18')](function(_0x3ca036){logger[_0x5bc8('0x15')](_0x5bc8('0x19'),_0x3ca036[_0x5bc8('0x16')],_0x2a3711);_0x527910(_0x17c1f7[_0x5bc8('0x15')](0x1f4,_0x3ca036[_0x5bc8('0x16')]));});});};exports['AddTagsToWhatsappInteraction']=function(_0x59e0b3){return new Promise(function(_0x20f2ff,_0x4bfe67){return db[_0x5bc8('0x1a')][_0x5bc8('0x23')]({'where':_0x59e0b3[_0x5bc8('0x1d')]?_0x59e0b3['options'][_0x5bc8('0x1e')]||null:null})['then'](function(_0x3fc9c4){if(_0x3fc9c4){return _0x3fc9c4[_0x5bc8('0x24')](_0x59e0b3['body']['ids'],_['omit'](_0x59e0b3[_0x5bc8('0x1c')],['ids','id'])||{});}})[_0x5bc8('0x25')](function(_0x1edafb){logger[_0x5bc8('0x26')](_0x5bc8('0x27'),_0x59e0b3);logger[_0x5bc8('0x22')]('AddTags',_0x59e0b3,JSON[_0x5bc8('0x13')](_0x1edafb));_0x20f2ff(_0x1edafb);})[_0x5bc8('0x18')](function(_0x25cc8c){logger[_0x5bc8('0x15')](_0x5bc8('0x27'),_0x25cc8c[_0x5bc8('0x16')],_0x59e0b3);_0x4bfe67(_this[_0x5bc8('0x15')](0x1f4,_0x25cc8c[_0x5bc8('0x16')]));});});};
\ No newline at end of file
index b680adf..267c07d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25a0=['emit','removeListener','length','whatsappInteraction:','save','remove','update'];(function(_0x4d7379,_0x4b4e63){var _0x46d7cf=function(_0x53f5f0){while(--_0x53f5f0){_0x4d7379['push'](_0x4d7379['shift']());}};_0x46d7cf(++_0x4b4e63);}(_0x25a0,0x74));var _0x025a=function(_0x254634,_0x171c94){_0x254634=_0x254634-0x0;var _0x1e1063=_0x25a0[_0x254634];return _0x1e1063;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=[_0x025a('0x0'),_0x025a('0x1'),_0x025a('0x2')];function createListener(_0x26ea57,_0x3ddbdc){return function(_0x39923d){_0x3ddbdc[_0x025a('0x3')](_0x26ea57,_0x39923d);};}function removeListener(_0x3d0691,_0x2df1db){return function(){WhatsappInteractionEvents[_0x025a('0x4')](_0x3d0691,_0x2df1db);};}exports['register']=function(_0x3f7e01){for(var _0x47160e=0x0,_0x442dec=events[_0x025a('0x5')];_0x47160e<_0x442dec;_0x47160e++){var _0x240119=events[_0x47160e];var _0x30e542=createListener(_0x025a('0x6')+_0x240119,_0x3f7e01);WhatsappInteractionEvents['on'](_0x240119,_0x30e542);}};
\ No newline at end of file
+var _0x59ae=['save','remove','update','removeListener','register','whatsappInteraction:'];(function(_0x28f65b,_0x3e8004){var _0x319ec5=function(_0x428595){while(--_0x428595){_0x28f65b['push'](_0x28f65b['shift']());}};_0x319ec5(++_0x3e8004);}(_0x59ae,0x1aa));var _0xe59a=function(_0x2cfcf1,_0x58299b){_0x2cfcf1=_0x2cfcf1-0x0;var _0x3b66b5=_0x59ae[_0x2cfcf1];return _0x3b66b5;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=[_0xe59a('0x0'),_0xe59a('0x1'),_0xe59a('0x2')];function createListener(_0x5d0892,_0x1ddc8d){return function(_0x13bb7d){_0x1ddc8d['emit'](_0x5d0892,_0x13bb7d);};}function removeListener(_0x1865a2,_0x3c634a){return function(){WhatsappInteractionEvents[_0xe59a('0x3')](_0x1865a2,_0x3c634a);};}exports[_0xe59a('0x4')]=function(_0xd19a64){for(var _0xc947e1=0x0,_0x3e757b=events['length'];_0xc947e1<_0x3e757b;_0xc947e1++){var _0x191dcd=events[_0xc947e1];var _0x1f0682=createListener(_0xe59a('0x5')+_0x191dcd,_0xd19a64);WhatsappInteractionEvents['on'](_0x191dcd,_0x1f0682);}};
\ No newline at end of file
index a2bc0f1..7253670 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4117=['isAuthenticated','describe','/:id','show','whatsapp','create','/:id/status','status','put','update','accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','index','/describe'];(function(_0x132f91,_0xd5579e){var _0x1217b3=function(_0x1cc92d){while(--_0x1cc92d){_0x132f91['push'](_0x132f91['shift']());}};_0x1217b3(++_0xd5579e);}(_0x4117,0x14f));var _0x7411=function(_0x1a72b8,_0x23e189){_0x1a72b8=_0x1a72b8-0x0;var _0x908eae=_0x4117[_0x1a72b8];return _0x908eae;};'use strict';var multer=require(_0x7411('0x0'));var util=require(_0x7411('0x1'));var path=require(_0x7411('0x2'));var timeout=require(_0x7411('0x3'));var express=require(_0x7411('0x4'));var router=express['Router']();var fs_extra=require(_0x7411('0x5'));var auth=require(_0x7411('0x6'));var interaction=require(_0x7411('0x7'));var config=require(_0x7411('0x8'));var controller=require(_0x7411('0x9'));router[_0x7411('0xa')]('/',auth['isAuthenticated'](),controller[_0x7411('0xb')]);router[_0x7411('0xa')](_0x7411('0xc'),auth[_0x7411('0xd')](),controller[_0x7411('0xe')]);router[_0x7411('0xa')](_0x7411('0xf'),auth[_0x7411('0xd')](),controller[_0x7411('0x10')]);router['post']('/',auth[_0x7411('0xd')](),interaction['tracked'](_0x7411('0x11'),'whatsappmessage:create'),controller[_0x7411('0x12')]);router['post'](_0x7411('0x13'),controller[_0x7411('0x14')]);router[_0x7411('0x15')](_0x7411('0xf'),auth[_0x7411('0xd')](),controller[_0x7411('0x16')]);router['put']('/:id/accept',auth['isAuthenticated'](),controller[_0x7411('0x17')]);router[_0x7411('0x15')](_0x7411('0x18'),auth[_0x7411('0xd')](),controller[_0x7411('0x19')]);router[_0x7411('0x1a')](_0x7411('0xf'),auth[_0x7411('0xd')](),controller[_0x7411('0x1b')]);module[_0x7411('0x1c')]=router;
\ No newline at end of file
+var _0x55ef=['Router','../../components/auth/service','./whatsappMessage.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','whatsapp','whatsappmessage:create','create','/:id/status','status','put','/:id/accept','accept','/:id/reject','delete','destroy','exports','multer','util','connect-timeout','express'];(function(_0x5cc8,_0x1faa02){var _0x450661=function(_0x237b05){while(--_0x237b05){_0x5cc8['push'](_0x5cc8['shift']());}};_0x450661(++_0x1faa02);}(_0x55ef,0x10a));var _0xf55e=function(_0x1fb436,_0x43406e){_0x1fb436=_0x1fb436-0x0;var _0x21392e=_0x55ef[_0x1fb436];return _0x21392e;};'use strict';var multer=require(_0xf55e('0x0'));var util=require(_0xf55e('0x1'));var path=require('path');var timeout=require(_0xf55e('0x2'));var express=require(_0xf55e('0x3'));var router=express[_0xf55e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xf55e('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf55e('0x6'));router['get']('/',auth[_0xf55e('0x7')](),controller[_0xf55e('0x8')]);router[_0xf55e('0x9')](_0xf55e('0xa'),auth[_0xf55e('0x7')](),controller[_0xf55e('0xb')]);router[_0xf55e('0x9')](_0xf55e('0xc'),auth[_0xf55e('0x7')](),controller[_0xf55e('0xd')]);router[_0xf55e('0xe')]('/',auth[_0xf55e('0x7')](),interaction['tracked'](_0xf55e('0xf'),_0xf55e('0x10')),controller[_0xf55e('0x11')]);router[_0xf55e('0xe')](_0xf55e('0x12'),controller[_0xf55e('0x13')]);router[_0xf55e('0x14')](_0xf55e('0xc'),auth['isAuthenticated'](),controller['update']);router[_0xf55e('0x14')](_0xf55e('0x15'),auth['isAuthenticated'](),controller[_0xf55e('0x16')]);router['put'](_0xf55e('0x17'),auth[_0xf55e('0x7')](),controller['reject']);router[_0xf55e('0x18')](_0xf55e('0xc'),auth['isAuthenticated'](),controller[_0xf55e('0x19')]);module[_0xf55e('0x1a')]=router;
\ No newline at end of file
index 89a63c3..c44cf95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b1d=['ENUM','out','STRING','sequelize','exports','TEXT','medium','BOOLEAN'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x5b1d,0xc3));var _0xd5b1=function(_0x61b499,_0x20ea34){_0x61b499=_0x61b499-0x0;var _0x21a834=_0x5b1d[_0x61b499];return _0x21a834;};'use strict';var Sequelize=require(_0xd5b1('0x0'));module[_0xd5b1('0x1')]={'body':{'type':Sequelize[_0xd5b1('0x2')](_0xd5b1('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xd5b1('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xd5b1('0x5')]('in',_0xd5b1('0x6')),'defaultValue':_0xd5b1('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0xd5b1('0x7')](0xbe)},'phone':{'type':Sequelize[_0xd5b1('0x7')]},'readAt':{'type':Sequelize['DATE']},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize[_0xd5b1('0x7')]},'providerResponse':{'type':Sequelize[_0xd5b1('0x2')]}};
\ No newline at end of file
+var _0xe35e=['exports','TEXT','medium','out','STRING','DATE','BOOLEAN'];(function(_0x384d5e,_0x4388a5){var _0x2161cc=function(_0x1fd7ea){while(--_0x1fd7ea){_0x384d5e['push'](_0x384d5e['shift']());}};_0x2161cc(++_0x4388a5);}(_0xe35e,0xfc));var _0xee35=function(_0x1e1965,_0x55785c){_0x1e1965=_0x1e1965-0x0;var _0x1a2e96=_0xe35e[_0x1e1965];return _0x1a2e96;};'use strict';var Sequelize=require('sequelize');module[_0xee35('0x0')]={'body':{'type':Sequelize[_0xee35('0x1')](_0xee35('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0xee35('0x3'),'allowNull':![]},'messageId':{'type':Sequelize[_0xee35('0x4')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0xee35('0x5')]},'secret':{'type':Sequelize[_0xee35('0x6')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xee35('0x1')]}};
\ No newline at end of file
index cc6b6e6..af71f0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2194=['email','internal','agent','manual','interface','SIP/%s','channel','motionChannel','EventManager','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','interaction','null','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','QueryTypes','format','event','rejectmessage','WhatsappAccount','debug','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','twilio','MessageSid','MessageStatus','read','WhatsappAccount,\x20%s,\x20%s,\x20%s','inspect','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappMessage.socket','jayson/promise','client','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','status','end','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','map','WhatsappMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','fields','attributes','length','nolimit','sort','where','merge','VIRTUAL','filter','options','includeAll','rows','params','intersection','include','find','create','body','describe','whatsapp-interactions','accept','whatsapp','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','WhatsappInteraction','read1stAt','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','acceptMessage','ContactId','sequelize','Sequelize','SELECT','contact','User','fullname'];(function(_0x135892,_0x203263){var _0x1351d4=function(_0x40bfd8){while(--_0x40bfd8){_0x135892['push'](_0x135892['shift']());}};_0x1351d4(++_0x203263);}(_0x2194,0x12d));var _0x4219=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0x2194[_0xf71120];return _0xbe2fd3;};'use strict';var emlformat=require(_0x4219('0x0'));var rimraf=require(_0x4219('0x1'));var zipdir=require(_0x4219('0x2'));var jsonpatch=require(_0x4219('0x3'));var rp=require(_0x4219('0x4'));var moment=require(_0x4219('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x4219('0x6'));var util=require(_0x4219('0x7'));var path=require('path');var sox=require(_0x4219('0x8'));var csv=require(_0x4219('0x9'));var ejs=require(_0x4219('0xa'));var fs=require('fs');var fs_extra=require(_0x4219('0xb'));var _=require(_0x4219('0xc'));var squel=require(_0x4219('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x4219('0x9'));var querystring=require('querystring');var Papa=require(_0x4219('0xe'));var Redis=require(_0x4219('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x4219('0x10'));var hardwareService=require(_0x4219('0x11'));var logger=require(_0x4219('0x12'))(_0x4219('0x13'));var utils=require(_0x4219('0x14'));var config=require(_0x4219('0x15'));var licenseUtil=require(_0x4219('0x16'));var db=require(_0x4219('0x17'))['db'];config[_0x4219('0x18')]=_['defaults'](config[_0x4219('0x18')],{'host':_0x4219('0x19'),'port':0x18eb});var socket=require(_0x4219('0x1a'))(new Redis(config[_0x4219('0x18')]));require(_0x4219('0x1b'))['register'](socket);var jayson=require(_0x4219('0x1c'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0x4219('0x1d')]['http']({'port':0x232a});function respondWithRpcPromise(_0x497e7e,_0x12b922,_0x42e402,_0x3a17d9){return new BPromise(function(_0x3f7ebb,_0x4ec32c){var _0x576806=_0x3a17d9||client;return _0x576806['request'](_0x497e7e,_0x42e402)[_0x4219('0x1e')](function(_0x48f70f){logger[_0x4219('0x1f')](_0x4219('0x20'),_0x12b922,_0x4219('0x21'));logger['debug'](_0x4219('0x22'),_0x12b922,_0x4219('0x21'),JSON[_0x4219('0x23')](_0x48f70f));if(_0x48f70f['error']){if(_0x48f70f['error'][_0x4219('0x24')]===0x1f4){logger[_0x4219('0x25')](_0x4219('0x20'),_0x12b922,_0x48f70f[_0x4219('0x25')][_0x4219('0x26')]);return _0x4ec32c(_0x48f70f[_0x4219('0x25')][_0x4219('0x26')]);}logger['error'](_0x4219('0x20'),_0x12b922,_0x48f70f[_0x4219('0x25')][_0x4219('0x26')]);return _0x3f7ebb(_0x48f70f[_0x4219('0x25')][_0x4219('0x26')]);}else{logger[_0x4219('0x1f')]('WhatsappMessage,\x20%s,\x20%s',_0x12b922,'request\x20sent');_0x3f7ebb(_0x48f70f[_0x4219('0x27')]['message']);}})[_0x4219('0x28')](function(_0x306856){logger[_0x4219('0x25')]('WhatsappMessage,\x20%s,\x20%s',_0x12b922,_0x306856);_0x4ec32c(_0x306856);});});}function respondWithStatusCode(_0x431160,_0x222d74){_0x222d74=_0x222d74||0xcc;return function(_0x53f3c5){if(_0x53f3c5){return _0x431160['sendStatus'](_0x222d74);}return _0x431160[_0x4219('0x29')](_0x222d74)[_0x4219('0x2a')]();};}function respondWithResult(_0x4f4769,_0x71600f){_0x71600f=_0x71600f||0xc8;return function(_0x252f11){if(_0x252f11){return _0x4f4769['status'](_0x71600f)['json'](_0x252f11);}};}function respondWithFilteredResult(_0x420e0a,_0x11c731){return function(_0x1e9cad){if(_0x1e9cad){var _0x34adb7=typeof _0x11c731['offset']===_0x4219('0x2b')&&typeof _0x11c731[_0x4219('0x2c')]===_0x4219('0x2b');var _0xc7e2ce=_0x1e9cad[_0x4219('0x2d')];var _0x40315a=_0x34adb7?0x0:_0x11c731[_0x4219('0x2e')];var _0x181959=_0x34adb7?_0x1e9cad[_0x4219('0x2d')]:_0x11c731[_0x4219('0x2e')]+_0x11c731[_0x4219('0x2c')];var _0x489588;if(_0x181959>=_0xc7e2ce){_0x181959=_0xc7e2ce;_0x489588=0xc8;}else{_0x489588=0xce;}_0x420e0a[_0x4219('0x29')](_0x489588);return _0x420e0a[_0x4219('0x2f')](_0x4219('0x30'),_0x40315a+'-'+_0x181959+'/'+_0xc7e2ce)['json'](_0x1e9cad);}return null;};}function patchUpdates(_0x168c0f){return function(_0x236edb){try{jsonpatch[_0x4219('0x31')](_0x236edb,_0x168c0f,!![]);}catch(_0x591eb2){return BPromise[_0x4219('0x32')](_0x591eb2);}return _0x236edb[_0x4219('0x33')]();};}function saveUpdates(_0x32c6ff,_0x2d670e){return function(_0x57feef){if(_0x57feef){return _0x57feef[_0x4219('0x34')](_0x32c6ff)[_0x4219('0x1e')](function(_0x276ae1){return _0x276ae1;});}return null;};}function removeEntity(_0x52c11e,_0x5153f7){return function(_0x3989ab){if(_0x3989ab){return _0x3989ab[_0x4219('0x35')]()[_0x4219('0x1e')](function(){_0x52c11e[_0x4219('0x29')](0xcc)[_0x4219('0x2a')]();});}};}function handleEntityNotFound(_0x3251ae,_0x5c18ab){return function(_0xed4ded){if(!_0xed4ded){_0x3251ae[_0x4219('0x36')](0x194);}return _0xed4ded;};}function handleError(_0x25c0dc,_0x46588f){_0x46588f=_0x46588f||0x1f4;return function(_0x2f084c){logger[_0x4219('0x25')](_0x2f084c[_0x4219('0x37')]);if(_0x2f084c[_0x4219('0x38')]){delete _0x2f084c[_0x4219('0x38')];}_0x25c0dc[_0x4219('0x29')](_0x46588f)[_0x4219('0x39')](_0x2f084c);};}exports['index']=function(_0x391674,_0x2386d5){var _0x296552={},_0xbcdf8c={},_0x3b6d0e={'count':0x0,'rows':[]};var _0xa96a8a=_[_0x4219('0x3a')](db[_0x4219('0x3b')][_0x4219('0x3c')],function(_0x182134){return{'name':_0x182134[_0x4219('0x3d')],'type':_0x182134[_0x4219('0x3e')][_0x4219('0x3f')]};});_0xbcdf8c[_0x4219('0x40')]=_[_0x4219('0x3a')](_0xa96a8a,_0x4219('0x38'));_0xbcdf8c[_0x4219('0x41')]=_[_0x4219('0x42')](_0x391674['query']);_0xbcdf8c[_0x4219('0x43')]=_['intersection'](_0xbcdf8c[_0x4219('0x40')],_0xbcdf8c[_0x4219('0x41')]);_0x296552['attributes']=_['intersection'](_0xbcdf8c[_0x4219('0x40')],qs['fields'](_0x391674[_0x4219('0x41')][_0x4219('0x44')]));_0x296552['attributes']=_0x296552[_0x4219('0x45')][_0x4219('0x46')]?_0x296552['attributes']:_0xbcdf8c[_0x4219('0x40')];if(!_0x391674[_0x4219('0x41')]['hasOwnProperty'](_0x4219('0x47'))){_0x296552[_0x4219('0x2c')]=qs[_0x4219('0x2c')](_0x391674[_0x4219('0x41')][_0x4219('0x2c')]);_0x296552[_0x4219('0x2e')]=qs[_0x4219('0x2e')](_0x391674[_0x4219('0x41')][_0x4219('0x2e')]);}_0x296552['order']=qs[_0x4219('0x48')](_0x391674['query'][_0x4219('0x48')]);_0x296552[_0x4219('0x49')]=qs[_0x4219('0x43')](_['pick'](_0x391674[_0x4219('0x41')],_0xbcdf8c[_0x4219('0x43')]),_0xa96a8a);if(_0x391674[_0x4219('0x41')]['filter']){_0x296552[_0x4219('0x49')]=_[_0x4219('0x4a')](_0x296552[_0x4219('0x49')],{'$or':_['map'](_0xa96a8a,function(_0x8adea7){if(_0x8adea7[_0x4219('0x3e')]!==_0x4219('0x4b')){var _0x2edcde={};_0x2edcde[_0x8adea7['name']]={'$like':'%'+_0x391674['query'][_0x4219('0x4c')]+'%'};return _0x2edcde;}})});}_0x296552=_['merge']({},_0x296552,_0x391674[_0x4219('0x4d')]);var _0x58b605={'where':_0x296552[_0x4219('0x49')]};return db[_0x4219('0x3b')][_0x4219('0x2d')](_0x58b605)[_0x4219('0x1e')](function(_0x116fd9){_0x3b6d0e[_0x4219('0x2d')]=_0x116fd9;if(_0x391674['query'][_0x4219('0x4e')]){_0x296552['include']=[{'all':!![]}];}return db[_0x4219('0x3b')]['findAll'](_0x296552);})['then'](function(_0xa96fdd){_0x3b6d0e[_0x4219('0x4f')]=_0xa96fdd;return _0x3b6d0e;})[_0x4219('0x1e')](respondWithFilteredResult(_0x2386d5,_0x296552))['catch'](handleError(_0x2386d5,null));};exports['show']=function(_0x12dc0f,_0x3437d4){var _0x400cf7={'raw':!![],'where':{'id':_0x12dc0f[_0x4219('0x50')]['id']}},_0x26d415={};_0x26d415[_0x4219('0x40')]=_[_0x4219('0x42')](db[_0x4219('0x3b')][_0x4219('0x3c')]);_0x26d415['query']=_['keys'](_0x12dc0f[_0x4219('0x41')]);_0x26d415[_0x4219('0x43')]=_[_0x4219('0x51')](_0x26d415[_0x4219('0x40')],_0x26d415['query']);_0x400cf7['attributes']=_[_0x4219('0x51')](_0x26d415[_0x4219('0x40')],qs[_0x4219('0x44')](_0x12dc0f[_0x4219('0x41')]['fields']));_0x400cf7[_0x4219('0x45')]=_0x400cf7['attributes']['length']?_0x400cf7['attributes']:_0x26d415['model'];if(_0x12dc0f[_0x4219('0x41')]['includeAll']){_0x400cf7[_0x4219('0x52')]=[{'all':!![]}];}_0x400cf7=_[_0x4219('0x4a')]({},_0x400cf7,_0x12dc0f['options']);return db[_0x4219('0x3b')][_0x4219('0x53')](_0x400cf7)[_0x4219('0x1e')](handleEntityNotFound(_0x3437d4,null))['then'](respondWithResult(_0x3437d4,null))[_0x4219('0x28')](handleError(_0x3437d4,null));};exports[_0x4219('0x54')]=function(_0x49d039,_0x168fa2){return db[_0x4219('0x3b')][_0x4219('0x54')](_0x49d039['body'],{})[_0x4219('0x1e')](respondWithResult(_0x168fa2,0xc9))[_0x4219('0x28')](handleError(_0x168fa2,null));};exports[_0x4219('0x34')]=function(_0x2cb6ca,_0x31d5f3){if(_0x2cb6ca[_0x4219('0x55')]['id']){delete _0x2cb6ca[_0x4219('0x55')]['id'];}return db['WhatsappMessage'][_0x4219('0x53')]({'where':{'id':_0x2cb6ca[_0x4219('0x50')]['id']}})[_0x4219('0x1e')](handleEntityNotFound(_0x31d5f3,null))[_0x4219('0x1e')](saveUpdates(_0x2cb6ca['body'],null))[_0x4219('0x1e')](respondWithResult(_0x31d5f3,null))[_0x4219('0x28')](handleError(_0x31d5f3,null));};exports[_0x4219('0x35')]=function(_0x6fdfb,_0x33e65f){return db['WhatsappMessage'][_0x4219('0x53')]({'where':{'id':_0x6fdfb['params']['id']}})['then'](handleEntityNotFound(_0x33e65f,null))[_0x4219('0x1e')](removeEntity(_0x33e65f,null))[_0x4219('0x28')](handleError(_0x33e65f,null));};exports[_0x4219('0x56')]=function(_0x350c39,_0x2cb5cd){return db['WhatsappMessage'][_0x4219('0x56')]()['then'](respondWithResult(_0x2cb5cd,null))['catch'](handleError(_0x2cb5cd,null));};var interaction_log=require(_0x4219('0x12'))(_0x4219('0x57'));exports[_0x4219('0x58')]=function(_0x29646c,_0xc58703,_0x54d585){var _0xd77d43={'agent':{},'channel':_0x4219('0x59')};if(_0x29646c[_0x4219('0x55')]['id']){delete _0x29646c[_0x4219('0x55')]['id'];}_0x29646c[_0x4219('0x55')]['read']=!![];_0x29646c[_0x4219('0x55')][_0x4219('0x5a')]=moment()['format'](_0x4219('0x5b'));_0x29646c[_0x4219('0x55')]['UserId']=_0x29646c[_0x4219('0x55')][_0x4219('0x5c')]||_0x29646c[_0x4219('0x5d')]['id'];_0xd77d43['agent']['id']=_0x29646c[_0x4219('0x55')][_0x4219('0x5c')];return db[_0x4219('0x3b')][_0x4219('0x53')]({'where':{'id':_0x29646c[_0x4219('0x50')]['id'],'UserId':null}})[_0x4219('0x1e')](handleEntityNotFound(_0xc58703,null))[_0x4219('0x1e')](saveUpdates(_0x29646c['body'],null))[_0x4219('0x1e')](function(_0x1da9e4){if(_0x1da9e4){_0xd77d43[_0x4219('0x26')]=_0x1da9e4[_0x4219('0x5e')]({'plain':!![]});return db[_0x4219('0x5f')][_0x4219('0x53')]({'where':{'id':_0x1da9e4['WhatsappInteractionId']}});}return null;})['then'](handleEntityNotFound(_0xc58703,null))[_0x4219('0x1e')](function(_0x3e66a0){if(_0x3e66a0){return _0x3e66a0[_0x4219('0x34')]({'UserId':_0x29646c['body']['UserId'],'read1stAt':_['isNil'](_0x3e66a0[_0x4219('0x60')])?moment()['format'](_0x4219('0x5b')):undefined});}return null;})[_0x4219('0x1e')](function(_0xe73a45){if(_0xe73a45){_0xd77d43['interaction']=_0xe73a45[_0x4219('0x5e')]({'plain':!![]});interaction_log[_0x4219('0x1f')](_0x4219('0x61'),_0x29646c[_0x4219('0x5d')]['id'],_0x29646c['user'][_0x4219('0x38')],_0x29646c[_0x4219('0x5d')][_0x4219('0x62')],_0xd77d43['interaction']['id'],_0x29646c[_0x4219('0x55')]?JSON[_0x4219('0x23')](_0x29646c[_0x4219('0x55')]):'null');return respondWithRpcPromise('AcceptMessage',_0x4219('0x63'),_0xd77d43);}return null;})[_0x4219('0x1e')](function(_0x4d26cc){var _0x1fe6e='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4d26cc[_0x4219('0x26')][_0x4219('0x64')];return db[_0x4219('0x65')][_0x4219('0x41')](_0x1fe6e,{'type':db[_0x4219('0x66')]['QueryTypes'][_0x4219('0x67')],'raw':!![]})[_0x4219('0x1e')](function(_0x2889ef){return _0x2889ef;});})[_0x4219('0x1e')](function(_0x2d8ce7){if(_0x2d8ce7){_0xd77d43[_0x4219('0x26')][_0x4219('0x68')]=_0x2d8ce7[0x0];if(!_0x29646c[_0x4219('0x55')]['UserId'])return;return db[_0x4219('0x69')][_0x4219('0x53')]({'where':{'id':_0x29646c[_0x4219('0x55')][_0x4219('0x5c')],'role':'agent'},'attributes':['id',_0x4219('0x38'),_0x4219('0x6a'),_0x4219('0x6b'),_0x4219('0x6c')],'raw':!![]});}return null;})[_0x4219('0x1e')](function(_0x4309e8){if(!_0x4309e8)return null;_0xd77d43[_0x4219('0x26')][_0x4219('0x6d')]=_0x4309e8;return _0xd77d43;})['then'](function(_0x40e315){if(_0x40e315){if(_0x29646c[_0x4219('0x55')][_0x4219('0x6e')]){_0xd77d43['message'][_0x4219('0x6f')]=util['format'](_0x4219('0x70'),_0x29646c[_0x4219('0x5d')]['name']);_0xd77d43[_0x4219('0x26')][_0x4219('0x71')]=_0xd77d43['channel'];_0xd77d43[_0x4219('0x26')][_0x4219('0x72')]=_0xd77d43[_0x4219('0x71')];_0xd77d43['message']['event']='accept';return respondWithRpcPromise(_0x4219('0x73'),'EventManager',{'event':'acceptmessage','message':_0xd77d43[_0x4219('0x26')]},client9002)['then'](function(){return _0xd77d43;});}return _0xd77d43;}return null;})['then'](respondWithResult(_0xc58703,null))[_0x4219('0x28')](handleError(_0xc58703,null));};var interaction_log=require(_0x4219('0x12'))('whatsapp-interactions');exports[_0x4219('0x32')]=function(_0x5b0a11,_0x17e731,_0x2ae4a9){var _0x555610={'agent':{},'channel':_0x4219('0x59')};if(_0x5b0a11['body']['id']){delete _0x5b0a11[_0x4219('0x55')]['id'];}_0x5b0a11[_0x4219('0x55')][_0x4219('0x5c')]=_0x5b0a11[_0x4219('0x55')][_0x4219('0x5c')]||_0x5b0a11[_0x4219('0x5d')]['id'];_0x555610['agent']['id']=_0x5b0a11[_0x4219('0x55')][_0x4219('0x5c')];return db[_0x4219('0x3b')][_0x4219('0x53')]({'where':{'id':_0x5b0a11[_0x4219('0x50')]['id'],'UserId':null}})[_0x4219('0x1e')](handleEntityNotFound(_0x17e731,null))['then'](function(_0x12ca33){if(_0x12ca33){_0x555610['message']=_0x12ca33['get']({'plain':!![]});return db[_0x4219('0x5f')]['find']({'where':{'id':_0x12ca33['WhatsappInteractionId']}});}return null;})[_0x4219('0x1e')](handleEntityNotFound(_0x17e731,null))['then'](function(_0x2b2082){if(_0x2b2082){_0x555610['interaction']=_0x2b2082[_0x4219('0x5e')]({'plain':!![]});interaction_log[_0x4219('0x1f')](_0x4219('0x74'),_0x5b0a11[_0x4219('0x5d')]['id'],_0x5b0a11['user'][_0x4219('0x38')],_0x5b0a11[_0x4219('0x5d')][_0x4219('0x62')],_0x555610[_0x4219('0x75')]['id'],_0x5b0a11[_0x4219('0x55')]?JSON[_0x4219('0x23')](_0x5b0a11['body']):_0x4219('0x76'));return respondWithRpcPromise(_0x4219('0x77'),_0x4219('0x78'),_0x555610);}return null;})[_0x4219('0x1e')](function(_0x26c97f){var _0x130297=_0x4219('0x79')+_0x26c97f[_0x4219('0x26')][_0x4219('0x64')];return db[_0x4219('0x65')]['query'](_0x130297,{'type':db[_0x4219('0x66')][_0x4219('0x7a')][_0x4219('0x67')],'raw':!![]})['then'](function(_0x123b88){return _0x123b88;});})[_0x4219('0x1e')](function(_0x32685e){if(_0x32685e){_0x555610[_0x4219('0x26')][_0x4219('0x68')]=_0x32685e[0x0];if(!_0x5b0a11[_0x4219('0x55')][_0x4219('0x5c')])return;return db[_0x4219('0x69')][_0x4219('0x53')]({'where':{'id':_0x5b0a11['body']['UserId'],'role':_0x4219('0x6d')},'attributes':['id','name',_0x4219('0x6a'),_0x4219('0x6b'),_0x4219('0x6c')],'raw':!![]});}return null;})[_0x4219('0x1e')](function(_0x7d958c){if(!_0x7d958c)return null;_0x555610[_0x4219('0x26')][_0x4219('0x6d')]=_0x7d958c;return _0x555610;})['then'](function(_0x23d6e2){if(_0x23d6e2){_0x23d6e2[_0x4219('0x26')][_0x4219('0x6f')]=util[_0x4219('0x7b')](_0x4219('0x70'),_0x5b0a11[_0x4219('0x5d')][_0x4219('0x38')]);_0x23d6e2[_0x4219('0x26')]['channel']=_0x555610['channel'];_0x23d6e2[_0x4219('0x26')][_0x4219('0x72')]=_0x555610[_0x4219('0x71')];_0x23d6e2[_0x4219('0x26')][_0x4219('0x7c')]=_0x4219('0x32');respondWithRpcPromise(_0x4219('0x73'),'EventManager',{'event':_0x4219('0x7d'),'message':_0x23d6e2[_0x4219('0x26')]},client9002);return _0x555610;}return null;})['then'](respondWithResult(_0x17e731,null))[_0x4219('0x28')](handleError(_0x17e731,null));};exports[_0x4219('0x29')]=function(_0x430c59,_0x387187,_0x4de3c7){if(_0x430c59[_0x4219('0x55')]['id']){delete _0x430c59[_0x4219('0x55')]['id'];}var _0x5c4f0d;return db[_0x4219('0x3b')][_0x4219('0x53')]({'where':{'id':_0x430c59['params']['id']}})[_0x4219('0x1e')](handleEntityNotFound(_0x387187,null))[_0x4219('0x1e')](function(_0x5b38c5){if(_0x5b38c5){_0x5c4f0d=_0x5b38c5;return db[_0x4219('0x7e')][_0x4219('0x53')]({'where':{'id':_0x5b38c5['WhatsappAccountId']}});}})[_0x4219('0x1e')](handleEntityNotFound(_0x387187,null))[_0x4219('0x1e')](function(_0x49b18d){if(_0x49b18d){logger[_0x4219('0x7f')](_0x4219('0x80'),_0x4219('0x29'),_0x4219('0x81'),_0x49b18d[_0x4219('0x3e')],util['inspect'](_0x430c59[_0x4219('0x55')],{'showHidden':![],'depth':null}));switch(_0x49b18d[_0x4219('0x3e')]){case _0x4219('0x82'):if(_0x430c59[_0x4219('0x55')]['MessageSid']&&_0x430c59[_0x4219('0x55')][_0x4219('0x83')]===_0x5c4f0d['messageId']&&_0x430c59[_0x4219('0x55')][_0x4219('0x84')]&&_0x430c59[_0x4219('0x55')][_0x4219('0x84')]===_0x4219('0x85')){return _0x5c4f0d[_0x4219('0x34')]({'read':!![]});}else{logger[_0x4219('0x25')](_0x4219('0x86'),'status',_0x4219('0x82'),util[_0x4219('0x87')](_0x430c59['body'],{'showHidden':![],'depth':null}));}break;}return _0x5c4f0d;}})['then'](respondWithResult(_0x387187,null))[_0x4219('0x28')](handleError(_0x387187,null));};
\ No newline at end of file
+var _0x44e6=['[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','fullname','interface','motionChannel','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','inspect','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','jayson/promise','http','request','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','offset','limit','count','Content-Range','apply','reject','save','update','then','end','stack','name','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','WhatsappMessage','rows','show','params','options','create','body','find','destroy','describe','whatsapp-interactions','accept','whatsapp','read','format','UserId','user','agent','get','WhatsappInteractionId','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','User','email','internal','manual','SIP/%s','channel','event','EventManager','acceptmessage','WhatsappInteraction'];(function(_0x39772f,_0x5605cb){var _0xc9edbf=function(_0x106a39){while(--_0x106a39){_0x39772f['push'](_0x39772f['shift']());}};_0xc9edbf(++_0x5605cb);}(_0x44e6,0x123));var _0x644e=function(_0x4fdb36,_0x381d6a){_0x4fdb36=_0x4fdb36-0x0;var _0x3a7d0c=_0x44e6[_0x4fdb36];return _0x3a7d0c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x644e('0x0'));var zipdir=require(_0x644e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x644e('0x2'));var moment=require(_0x644e('0x3'));var BPromise=require(_0x644e('0x4'));var Mustache=require(_0x644e('0x5'));var util=require(_0x644e('0x6'));var path=require('path');var sox=require(_0x644e('0x7'));var csv=require('to-csv');var ejs=require(_0x644e('0x8'));var fs=require('fs');var fs_extra=require(_0x644e('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x644e('0xa'));var jsforce=require(_0x644e('0xb'));var deskjs=require(_0x644e('0xc'));var toCsv=require(_0x644e('0xd'));var querystring=require('querystring');var Papa=require(_0x644e('0xe'));var Redis=require(_0x644e('0xf'));var authService=require(_0x644e('0x10'));var qs=require(_0x644e('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x644e('0x12'))(_0x644e('0x13'));var utils=require('../../config/utils');var config=require(_0x644e('0x14'));var licenseUtil=require(_0x644e('0x15'));var db=require(_0x644e('0x16'))['db'];config['redis']=_[_0x644e('0x17')](config[_0x644e('0x18')],{'host':_0x644e('0x19'),'port':0x18eb});var socket=require(_0x644e('0x1a'))(new Redis(config[_0x644e('0x18')]));require('./whatsappMessage.socket')['register'](socket);var jayson=require(_0x644e('0x1b'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson['client'][_0x644e('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x1f68d2,_0x167443,_0x250131,_0x29590a){return new BPromise(function(_0x52c0ed,_0x25e582){var _0x51350c=_0x29590a||client;return _0x51350c[_0x644e('0x1d')](_0x1f68d2,_0x250131)['then'](function(_0x5dbe12){logger[_0x644e('0x1e')](_0x644e('0x1f'),_0x167443,_0x644e('0x20'));logger[_0x644e('0x21')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x167443,_0x644e('0x20'),JSON[_0x644e('0x22')](_0x5dbe12));if(_0x5dbe12[_0x644e('0x23')]){if(_0x5dbe12[_0x644e('0x23')][_0x644e('0x24')]===0x1f4){logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x167443,_0x5dbe12[_0x644e('0x23')]['message']);return _0x25e582(_0x5dbe12[_0x644e('0x23')][_0x644e('0x25')]);}logger[_0x644e('0x23')](_0x644e('0x1f'),_0x167443,_0x5dbe12[_0x644e('0x23')][_0x644e('0x25')]);return _0x52c0ed(_0x5dbe12[_0x644e('0x23')][_0x644e('0x25')]);}else{logger[_0x644e('0x1e')](_0x644e('0x1f'),_0x167443,_0x644e('0x20'));_0x52c0ed(_0x5dbe12[_0x644e('0x26')][_0x644e('0x25')]);}})[_0x644e('0x27')](function(_0x300f2a){logger[_0x644e('0x23')](_0x644e('0x1f'),_0x167443,_0x300f2a);_0x25e582(_0x300f2a);});});}function respondWithStatusCode(_0x438866,_0x2ccaa9){_0x2ccaa9=_0x2ccaa9||0xcc;return function(_0x57e987){if(_0x57e987){return _0x438866[_0x644e('0x28')](_0x2ccaa9);}return _0x438866[_0x644e('0x29')](_0x2ccaa9)['end']();};}function respondWithResult(_0x4c26f9,_0x46ff50){_0x46ff50=_0x46ff50||0xc8;return function(_0x1db308){if(_0x1db308){return _0x4c26f9[_0x644e('0x29')](_0x46ff50)['json'](_0x1db308);}};}function respondWithFilteredResult(_0x15197d,_0x118e8f){return function(_0x59528f){if(_0x59528f){var _0x25180a=typeof _0x118e8f[_0x644e('0x2a')]==='undefined'&&typeof _0x118e8f[_0x644e('0x2b')]==='undefined';var _0x27e548=_0x59528f[_0x644e('0x2c')];var _0x182e28=_0x25180a?0x0:_0x118e8f[_0x644e('0x2a')];var _0x56e2c8=_0x25180a?_0x59528f['count']:_0x118e8f[_0x644e('0x2a')]+_0x118e8f[_0x644e('0x2b')];var _0x44d5bf;if(_0x56e2c8>=_0x27e548){_0x56e2c8=_0x27e548;_0x44d5bf=0xc8;}else{_0x44d5bf=0xce;}_0x15197d[_0x644e('0x29')](_0x44d5bf);return _0x15197d['set'](_0x644e('0x2d'),_0x182e28+'-'+_0x56e2c8+'/'+_0x27e548)['json'](_0x59528f);}return null;};}function patchUpdates(_0x136103){return function(_0x4f0a14){try{jsonpatch[_0x644e('0x2e')](_0x4f0a14,_0x136103,!![]);}catch(_0x5dabfb){return BPromise[_0x644e('0x2f')](_0x5dabfb);}return _0x4f0a14[_0x644e('0x30')]();};}function saveUpdates(_0xd8a7b4,_0x5c41f7){return function(_0x516711){if(_0x516711){return _0x516711[_0x644e('0x31')](_0xd8a7b4)[_0x644e('0x32')](function(_0x26c4bc){return _0x26c4bc;});}return null;};}function removeEntity(_0x4e2bf2,_0x2a66d2){return function(_0x4127fb){if(_0x4127fb){return _0x4127fb['destroy']()['then'](function(){_0x4e2bf2[_0x644e('0x29')](0xcc)[_0x644e('0x33')]();});}};}function handleEntityNotFound(_0x2d0b8c,_0xa440f5){return function(_0xcb507f){if(!_0xcb507f){_0x2d0b8c[_0x644e('0x28')](0x194);}return _0xcb507f;};}function handleError(_0xf831f,_0x1cfc43){_0x1cfc43=_0x1cfc43||0x1f4;return function(_0x525d01){logger[_0x644e('0x23')](_0x525d01[_0x644e('0x34')]);if(_0x525d01[_0x644e('0x35')]){delete _0x525d01[_0x644e('0x35')];}_0xf831f[_0x644e('0x29')](_0x1cfc43)['send'](_0x525d01);};}exports['index']=function(_0x2cf92e,_0x364041){var _0x10b2ee={},_0x3cd22d={},_0x3d5017={'count':0x0,'rows':[]};var _0x1cbe0c=_[_0x644e('0x36')](db['WhatsappMessage'][_0x644e('0x37')],function(_0x56c2be){return{'name':_0x56c2be[_0x644e('0x38')],'type':_0x56c2be[_0x644e('0x39')][_0x644e('0x3a')]};});_0x3cd22d[_0x644e('0x3b')]=_[_0x644e('0x36')](_0x1cbe0c,_0x644e('0x35'));_0x3cd22d[_0x644e('0x3c')]=_[_0x644e('0x3d')](_0x2cf92e[_0x644e('0x3c')]);_0x3cd22d[_0x644e('0x3e')]=_['intersection'](_0x3cd22d[_0x644e('0x3b')],_0x3cd22d[_0x644e('0x3c')]);_0x10b2ee[_0x644e('0x3f')]=_[_0x644e('0x40')](_0x3cd22d['model'],qs[_0x644e('0x41')](_0x2cf92e['query'][_0x644e('0x41')]));_0x10b2ee['attributes']=_0x10b2ee['attributes'][_0x644e('0x42')]?_0x10b2ee[_0x644e('0x3f')]:_0x3cd22d[_0x644e('0x3b')];if(!_0x2cf92e[_0x644e('0x3c')][_0x644e('0x43')](_0x644e('0x44'))){_0x10b2ee['limit']=qs[_0x644e('0x2b')](_0x2cf92e[_0x644e('0x3c')][_0x644e('0x2b')]);_0x10b2ee[_0x644e('0x2a')]=qs[_0x644e('0x2a')](_0x2cf92e[_0x644e('0x3c')][_0x644e('0x2a')]);}_0x10b2ee[_0x644e('0x45')]=qs[_0x644e('0x46')](_0x2cf92e[_0x644e('0x3c')][_0x644e('0x46')]);_0x10b2ee[_0x644e('0x47')]=qs[_0x644e('0x3e')](_[_0x644e('0x48')](_0x2cf92e['query'],_0x3cd22d['filters']),_0x1cbe0c);if(_0x2cf92e[_0x644e('0x3c')][_0x644e('0x49')]){_0x10b2ee['where']=_[_0x644e('0x4a')](_0x10b2ee[_0x644e('0x47')],{'$or':_['map'](_0x1cbe0c,function(_0x1acb9e){if(_0x1acb9e[_0x644e('0x39')]!==_0x644e('0x4b')){var _0x32120a={};_0x32120a[_0x1acb9e[_0x644e('0x35')]]={'$like':'%'+_0x2cf92e[_0x644e('0x3c')]['filter']+'%'};return _0x32120a;}})});}_0x10b2ee=_[_0x644e('0x4a')]({},_0x10b2ee,_0x2cf92e['options']);var _0x3b7858={'where':_0x10b2ee[_0x644e('0x47')]};return db['WhatsappMessage'][_0x644e('0x2c')](_0x3b7858)['then'](function(_0x3a49b7){_0x3d5017[_0x644e('0x2c')]=_0x3a49b7;if(_0x2cf92e['query'][_0x644e('0x4c')]){_0x10b2ee[_0x644e('0x4d')]=[{'all':!![]}];}return db[_0x644e('0x4e')]['findAll'](_0x10b2ee);})[_0x644e('0x32')](function(_0x1518d2){_0x3d5017[_0x644e('0x4f')]=_0x1518d2;return _0x3d5017;})[_0x644e('0x32')](respondWithFilteredResult(_0x364041,_0x10b2ee))[_0x644e('0x27')](handleError(_0x364041,null));};exports[_0x644e('0x50')]=function(_0x2c850a,_0x3ecce1){var _0x33e8fb={'raw':!![],'where':{'id':_0x2c850a[_0x644e('0x51')]['id']}},_0x573fd3={};_0x573fd3[_0x644e('0x3b')]=_[_0x644e('0x3d')](db['WhatsappMessage']['rawAttributes']);_0x573fd3['query']=_[_0x644e('0x3d')](_0x2c850a[_0x644e('0x3c')]);_0x573fd3[_0x644e('0x3e')]=_[_0x644e('0x40')](_0x573fd3[_0x644e('0x3b')],_0x573fd3[_0x644e('0x3c')]);_0x33e8fb[_0x644e('0x3f')]=_[_0x644e('0x40')](_0x573fd3[_0x644e('0x3b')],qs[_0x644e('0x41')](_0x2c850a[_0x644e('0x3c')]['fields']));_0x33e8fb['attributes']=_0x33e8fb[_0x644e('0x3f')][_0x644e('0x42')]?_0x33e8fb[_0x644e('0x3f')]:_0x573fd3[_0x644e('0x3b')];if(_0x2c850a['query'][_0x644e('0x4c')]){_0x33e8fb[_0x644e('0x4d')]=[{'all':!![]}];}_0x33e8fb=_[_0x644e('0x4a')]({},_0x33e8fb,_0x2c850a[_0x644e('0x52')]);return db[_0x644e('0x4e')]['find'](_0x33e8fb)['then'](handleEntityNotFound(_0x3ecce1,null))[_0x644e('0x32')](respondWithResult(_0x3ecce1,null))['catch'](handleError(_0x3ecce1,null));};exports[_0x644e('0x53')]=function(_0x175c1d,_0x4589b7){return db['WhatsappMessage'][_0x644e('0x53')](_0x175c1d[_0x644e('0x54')],{})[_0x644e('0x32')](respondWithResult(_0x4589b7,0xc9))['catch'](handleError(_0x4589b7,null));};exports[_0x644e('0x31')]=function(_0x208f49,_0x278071){if(_0x208f49['body']['id']){delete _0x208f49['body']['id'];}return db['WhatsappMessage'][_0x644e('0x55')]({'where':{'id':_0x208f49['params']['id']}})['then'](handleEntityNotFound(_0x278071,null))['then'](saveUpdates(_0x208f49['body'],null))[_0x644e('0x32')](respondWithResult(_0x278071,null))['catch'](handleError(_0x278071,null));};exports[_0x644e('0x56')]=function(_0x2b9cdb,_0x4b72da){return db['WhatsappMessage'][_0x644e('0x55')]({'where':{'id':_0x2b9cdb[_0x644e('0x51')]['id']}})[_0x644e('0x32')](handleEntityNotFound(_0x4b72da,null))[_0x644e('0x32')](removeEntity(_0x4b72da,null))[_0x644e('0x27')](handleError(_0x4b72da,null));};exports[_0x644e('0x57')]=function(_0x3b1350,_0x482e44){return db[_0x644e('0x4e')]['describe']()[_0x644e('0x32')](respondWithResult(_0x482e44,null))[_0x644e('0x27')](handleError(_0x482e44,null));};var interaction_log=require(_0x644e('0x12'))(_0x644e('0x58'));exports[_0x644e('0x59')]=function(_0x13ed82,_0x57d6c7,_0x26b35d){var _0x566b44={'agent':{},'channel':_0x644e('0x5a')};if(_0x13ed82['body']['id']){delete _0x13ed82[_0x644e('0x54')]['id'];}_0x13ed82[_0x644e('0x54')][_0x644e('0x5b')]=!![];_0x13ed82[_0x644e('0x54')]['readAt']=moment()[_0x644e('0x5c')]('YYYY-MM-DD\x20HH:mm:ss');_0x13ed82[_0x644e('0x54')][_0x644e('0x5d')]=_0x13ed82[_0x644e('0x54')]['UserId']||_0x13ed82[_0x644e('0x5e')]['id'];_0x566b44[_0x644e('0x5f')]['id']=_0x13ed82[_0x644e('0x54')][_0x644e('0x5d')];return db[_0x644e('0x4e')][_0x644e('0x55')]({'where':{'id':_0x13ed82[_0x644e('0x51')]['id'],'UserId':null}})[_0x644e('0x32')](handleEntityNotFound(_0x57d6c7,null))[_0x644e('0x32')](saveUpdates(_0x13ed82[_0x644e('0x54')],null))['then'](function(_0x1d6e13){if(_0x1d6e13){_0x566b44['message']=_0x1d6e13[_0x644e('0x60')]({'plain':!![]});return db['WhatsappInteraction'][_0x644e('0x55')]({'where':{'id':_0x1d6e13[_0x644e('0x61')]}});}return null;})[_0x644e('0x32')](handleEntityNotFound(_0x57d6c7,null))[_0x644e('0x32')](function(_0x120e17){if(_0x120e17){return _0x120e17[_0x644e('0x31')]({'UserId':_0x13ed82[_0x644e('0x54')]['UserId'],'read1stAt':_['isNil'](_0x120e17['read1stAt'])?moment()[_0x644e('0x5c')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x7d4b34){if(_0x7d4b34){_0x566b44[_0x644e('0x62')]=_0x7d4b34['get']({'plain':!![]});interaction_log[_0x644e('0x1e')](_0x644e('0x63'),_0x13ed82['user']['id'],_0x13ed82[_0x644e('0x5e')]['name'],_0x13ed82[_0x644e('0x5e')][_0x644e('0x64')],_0x566b44[_0x644e('0x62')]['id'],_0x13ed82[_0x644e('0x54')]?JSON[_0x644e('0x22')](_0x13ed82[_0x644e('0x54')]):_0x644e('0x65'));return respondWithRpcPromise(_0x644e('0x66'),_0x644e('0x67'),_0x566b44);}return null;})[_0x644e('0x32')](function(_0x1f78f9){var _0x435518=_0x644e('0x68')+_0x1f78f9[_0x644e('0x25')]['ContactId'];return db[_0x644e('0x69')][_0x644e('0x3c')](_0x435518,{'type':db[_0x644e('0x6a')][_0x644e('0x6b')][_0x644e('0x6c')],'raw':!![]})[_0x644e('0x32')](function(_0x40531c){return _0x40531c;});})[_0x644e('0x32')](function(_0x37e681){if(_0x37e681){_0x566b44['message'][_0x644e('0x6d')]=_0x37e681[0x0];if(!_0x13ed82['body'][_0x644e('0x5d')])return;return db[_0x644e('0x6e')][_0x644e('0x55')]({'where':{'id':_0x13ed82[_0x644e('0x54')]['UserId'],'role':'agent'},'attributes':['id','name','fullname',_0x644e('0x6f'),_0x644e('0x70')],'raw':!![]});}return null;})[_0x644e('0x32')](function(_0x3a5e52){if(!_0x3a5e52)return null;_0x566b44[_0x644e('0x25')]['agent']=_0x3a5e52;return _0x566b44;})[_0x644e('0x32')](function(_0x86579c){if(_0x86579c){if(_0x13ed82['body'][_0x644e('0x71')]){_0x566b44[_0x644e('0x25')]['interface']=util[_0x644e('0x5c')](_0x644e('0x72'),_0x13ed82[_0x644e('0x5e')]['name']);_0x566b44['message'][_0x644e('0x73')]=_0x566b44[_0x644e('0x73')];_0x566b44[_0x644e('0x25')]['motionChannel']=_0x566b44['channel'];_0x566b44[_0x644e('0x25')][_0x644e('0x74')]=_0x644e('0x59');return respondWithRpcPromise('EventManager',_0x644e('0x75'),{'event':_0x644e('0x76'),'message':_0x566b44[_0x644e('0x25')]},client9002)[_0x644e('0x32')](function(){return _0x566b44;});}return _0x566b44;}return null;})['then'](respondWithResult(_0x57d6c7,null))['catch'](handleError(_0x57d6c7,null));};var interaction_log=require(_0x644e('0x12'))(_0x644e('0x58'));exports[_0x644e('0x2f')]=function(_0xbc3754,_0x42b44b,_0x58891c){var _0x4198fc={'agent':{},'channel':_0x644e('0x5a')};if(_0xbc3754[_0x644e('0x54')]['id']){delete _0xbc3754['body']['id'];}_0xbc3754[_0x644e('0x54')][_0x644e('0x5d')]=_0xbc3754['body']['UserId']||_0xbc3754[_0x644e('0x5e')]['id'];_0x4198fc['agent']['id']=_0xbc3754['body']['UserId'];return db[_0x644e('0x4e')][_0x644e('0x55')]({'where':{'id':_0xbc3754[_0x644e('0x51')]['id'],'UserId':null}})[_0x644e('0x32')](handleEntityNotFound(_0x42b44b,null))['then'](function(_0x416f3f){if(_0x416f3f){_0x4198fc[_0x644e('0x25')]=_0x416f3f[_0x644e('0x60')]({'plain':!![]});return db[_0x644e('0x77')][_0x644e('0x55')]({'where':{'id':_0x416f3f[_0x644e('0x61')]}});}return null;})[_0x644e('0x32')](handleEntityNotFound(_0x42b44b,null))[_0x644e('0x32')](function(_0x962be2){if(_0x962be2){_0x4198fc[_0x644e('0x62')]=_0x962be2[_0x644e('0x60')]({'plain':!![]});interaction_log['info'](_0x644e('0x78'),_0xbc3754['user']['id'],_0xbc3754[_0x644e('0x5e')][_0x644e('0x35')],_0xbc3754[_0x644e('0x5e')][_0x644e('0x64')],_0x4198fc[_0x644e('0x62')]['id'],_0xbc3754[_0x644e('0x54')]?JSON[_0x644e('0x22')](_0xbc3754['body']):_0x644e('0x65'));return respondWithRpcPromise(_0x644e('0x79'),_0x644e('0x7a'),_0x4198fc);}return null;})['then'](function(_0x1e2a76){var _0x15139e=_0x644e('0x68')+_0x1e2a76['message'][_0x644e('0x7b')];return db['sequelize'][_0x644e('0x3c')](_0x15139e,{'type':db[_0x644e('0x6a')][_0x644e('0x6b')][_0x644e('0x6c')],'raw':!![]})[_0x644e('0x32')](function(_0x618a9e){return _0x618a9e;});})[_0x644e('0x32')](function(_0x311cd8){if(_0x311cd8){_0x4198fc[_0x644e('0x25')][_0x644e('0x6d')]=_0x311cd8[0x0];if(!_0xbc3754[_0x644e('0x54')][_0x644e('0x5d')])return;return db[_0x644e('0x6e')][_0x644e('0x55')]({'where':{'id':_0xbc3754['body'][_0x644e('0x5d')],'role':'agent'},'attributes':['id',_0x644e('0x35'),_0x644e('0x7c'),_0x644e('0x6f'),_0x644e('0x70')],'raw':!![]});}return null;})['then'](function(_0x475710){if(!_0x475710)return null;_0x4198fc[_0x644e('0x25')]['agent']=_0x475710;return _0x4198fc;})['then'](function(_0x28ce0a){if(_0x28ce0a){_0x28ce0a[_0x644e('0x25')][_0x644e('0x7d')]=util[_0x644e('0x5c')](_0x644e('0x72'),_0xbc3754[_0x644e('0x5e')][_0x644e('0x35')]);_0x28ce0a[_0x644e('0x25')]['channel']=_0x4198fc[_0x644e('0x73')];_0x28ce0a['message'][_0x644e('0x7e')]=_0x4198fc[_0x644e('0x73')];_0x28ce0a[_0x644e('0x25')]['event']=_0x644e('0x2f');respondWithRpcPromise(_0x644e('0x75'),'EventManager',{'event':_0x644e('0x7f'),'message':_0x28ce0a[_0x644e('0x25')]},client9002);return _0x4198fc;}return null;})[_0x644e('0x32')](respondWithResult(_0x42b44b,null))[_0x644e('0x27')](handleError(_0x42b44b,null));};exports['status']=function(_0x5a64e0,_0x51e76f,_0x353a71){if(_0x5a64e0[_0x644e('0x54')]['id']){delete _0x5a64e0[_0x644e('0x54')]['id'];}var _0x2fa491;return db[_0x644e('0x4e')][_0x644e('0x55')]({'where':{'id':_0x5a64e0[_0x644e('0x51')]['id']}})[_0x644e('0x32')](handleEntityNotFound(_0x51e76f,null))[_0x644e('0x32')](function(_0x48c3df){if(_0x48c3df){_0x2fa491=_0x48c3df;return db[_0x644e('0x80')]['find']({'where':{'id':_0x48c3df[_0x644e('0x81')]}});}})[_0x644e('0x32')](handleEntityNotFound(_0x51e76f,null))['then'](function(_0x44786c){if(_0x44786c){logger[_0x644e('0x21')](_0x644e('0x82'),_0x644e('0x29'),'received\x20delivery\x20report\x20from',_0x44786c[_0x644e('0x39')],util[_0x644e('0x83')](_0x5a64e0[_0x644e('0x54')],{'showHidden':![],'depth':null}));switch(_0x44786c[_0x644e('0x39')]){case _0x644e('0x84'):if(_0x5a64e0[_0x644e('0x54')]['MessageSid']&&_0x5a64e0['body'][_0x644e('0x85')]===_0x2fa491[_0x644e('0x86')]&&_0x5a64e0[_0x644e('0x54')][_0x644e('0x87')]&&_0x5a64e0[_0x644e('0x54')]['MessageStatus']===_0x644e('0x5b')){return _0x2fa491['update']({'read':!![]});}else{logger[_0x644e('0x23')](_0x644e('0x88'),_0x644e('0x29'),_0x644e('0x84'),util[_0x644e('0x83')](_0x5a64e0[_0x644e('0x54')],{'showHidden':![],'depth':null}));}break;}return _0x2fa491;}})['then'](respondWithResult(_0x51e76f,null))[_0x644e('0x27')](handleError(_0x51e76f,null));};
\ No newline at end of file
index cceae05..2b68243 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x065e=['emit','hasOwnProperty','hook','events','save','update','remove'];(function(_0x594901,_0x2c8115){var _0x116c16=function(_0xcf6432){while(--_0xcf6432){_0x594901['push'](_0x594901['shift']());}};_0x116c16(++_0x2c8115);}(_0x065e,0x1a7));var _0xe065=function(_0x165277,_0x1f5fca){_0x165277=_0x165277-0x0;var _0x5eed91=_0x065e[_0x165277];return _0x5eed91;};'use strict';var EventEmitter=require(_0xe065('0x0'));var WhatsappMessage=require('../../mysqldb')['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe065('0x1'),'afterUpdate':_0xe065('0x2'),'afterDestroy':_0xe065('0x3')};function emitEvent(_0x4d35bf){return function(_0x4964fa,_0x4610a3,_0x2f90aa){WhatsappMessageEvents['emit'](_0x4d35bf+':'+_0x4964fa['id'],_0x4964fa);WhatsappMessageEvents[_0xe065('0x4')](_0x4d35bf,_0x4964fa);_0x2f90aa(null);};}for(var e in events){if(events[_0xe065('0x5')](e)){var event=events[e];WhatsappMessage[_0xe065('0x6')](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
+var _0x4af8=['emit','hasOwnProperty','exports','save','update','remove'];(function(_0x50a687,_0x3f59df){var _0x37f4f3=function(_0x4ad05e){while(--_0x4ad05e){_0x50a687['push'](_0x50a687['shift']());}};_0x37f4f3(++_0x3f59df);}(_0x4af8,0x1ad));var _0x84af=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x4af8[_0x2dafbe];return _0x58a45a;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require('../../mysqldb')['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x84af('0x0'),'afterUpdate':_0x84af('0x1'),'afterDestroy':_0x84af('0x2')};function emitEvent(_0x1446d3){return function(_0x482825,_0x294e04,_0x83633){WhatsappMessageEvents['emit'](_0x1446d3+':'+_0x482825['id'],_0x482825);WhatsappMessageEvents[_0x84af('0x3')](_0x1446d3,_0x482825);_0x83633(null);};}for(var e in events){if(events[_0x84af('0x4')](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module[_0x84af('0x5')]=WhatsappMessageEvents;
\ No newline at end of file
index 7320f2e..0eb486a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x810c=['afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','baseUrl','/whatsapp/v1/','/messages/','text','POST','application/json','statuses','message_id','err','WhatsappMessage,\x20%s','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','request-promise','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','WhatsappMessage','messageId','fti_whatsapp_messages','body','FULLTEXT','get','direction','toLowerCase','out','secret','isNil','WhatsappInteraction','findOne','WhatsappInteractionId','then','update','catch','error','WhatsappAccount','find','type','twilio','accountSid','phone','authToken','messages','create','whatsapp:','remote','/api/whatsapp/messages/','/status?token=','token','sid'];(function(_0x5f5497,_0x50803a){var _0x10e943=function(_0x2f5faa){while(--_0x2f5faa){_0x5f5497['push'](_0x5f5497['shift']());}};_0x10e943(++_0x50803a);}(_0x810c,0x1a5));var _0xc810=function(_0x35387d,_0x1ba72f){_0x35387d=_0x35387d-0x0;var _0x3aba56=_0x810c[_0x35387d];return _0x3aba56;};'use strict';var _=require(_0xc810('0x0'));var util=require(_0xc810('0x1'));var logger=require('../../config/logger')(_0xc810('0x2'));var moment=require(_0xc810('0x3'));var BPromise=require('bluebird');var rp=require(_0xc810('0x4'));var fetch=require('node-fetch');var fs=require('fs');var path=require(_0xc810('0x5'));var rimraf=require(_0xc810('0x6'));var config=require(_0xc810('0x7'));var attributes=require(_0xc810('0x8'));module[_0xc810('0x9')]=function(_0x3c5bb8,_0x38a729){return _0x3c5bb8['define'](_0xc810('0xa'),attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':_0xc810('0xb'),'fields':[_0xc810('0xb')]},{'name':_0xc810('0xc'),'fields':[_0xc810('0xd')],'type':_0xc810('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x458ebd,_0x2ec487,_0x2244ae){var _0x428072=_0x3c5bb8['models'];var _0x1bfea9=_0x458ebd[_0xc810('0xf')]({'plain':!![]});if(_0x1bfea9[_0xc810('0x10')][_0xc810('0x11')]()==='in'||_0x1bfea9[_0xc810('0x10')][_0xc810('0x11')]()===_0xc810('0x12')&&!_0x1bfea9[_0xc810('0x13')]&&!_[_0xc810('0x14')](_0x1bfea9['UserId'])){_0x428072[_0xc810('0x15')][_0xc810('0x16')]({'where':{'id':_0x1bfea9[_0xc810('0x17')]}})[_0xc810('0x18')](function(_0xc76c4){if(_0xc76c4){_0xc76c4[_0xc810('0x19')]({'lastMsgAt':_0x1bfea9['createdAt'],'lastMsgDirection':_0x1bfea9[_0xc810('0x10')]['toLowerCase']()});}})[_0xc810('0x1a')](function(_0xd5eac3){console[_0xc810('0x1b')](_0xd5eac3);});}if(_0x1bfea9[_0xc810('0x10')]==='out'&&!_0x1bfea9[_0xc810('0x13')]){var _0x43e192;_0x428072[_0xc810('0x1c')][_0xc810('0x1d')]({'where':{'id':_0x1bfea9['WhatsappAccountId']},'raw':!![]})['then'](function(_0x5cace4){_0x43e192=_0x5cace4;if(_0x43e192&&_0x43e192[_0xc810('0x1e')]){switch(_0x43e192[_0xc810('0x1e')]){case _0xc810('0x1f'):var _0x285cbe=require(_0xc810('0x1f'));if(_0x43e192[_0xc810('0x20')]&&_0x43e192['authToken']&&_0x43e192[_0xc810('0x21')]){var _0x48f335=new _0x285cbe(_0x43e192[_0xc810('0x20')],_0x43e192[_0xc810('0x22')]);_0x48f335[_0xc810('0x23')][_0xc810('0x24')]({'body':_0x1bfea9[_0xc810('0xd')],'to':_0xc810('0x25')+_0x1bfea9[_0xc810('0x21')],'from':_0xc810('0x25')+_0x43e192['phone'],'statusCallback':_0x43e192[_0xc810('0x26')]+_0xc810('0x27')+_0x1bfea9['id']+_0xc810('0x28')+_0x43e192[_0xc810('0x29')]})[_0xc810('0x18')](function(_0x5e9d54){if(_0x5e9d54['sid']){return _0x458ebd[_0xc810('0x19')]({'messageId':_0x5e9d54[_0xc810('0x2a')]});}})[_0xc810('0x1a')](function(_0x46e4ba){logger[_0xc810('0x1b')]('WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0xc810('0x1f'),util['inspect'](_0x46e4ba,{'showHidden':![],'depth':null}));});}else{logger[_0xc810('0x1b')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xc810('0x2b'),_0xc810('0x1f'),_0xc810('0x2c'));}break;case _0xc810('0x2d'):var _0x273576=_0x43e192[_0xc810('0x20')];var _0x1a427e=_0x43e192[_0xc810('0x22')];var _0x39e5a8=_0x43e192[_0xc810('0x2e')]+_0xc810('0x2f')+_0x273576+_0xc810('0x30');var _0x1e9c06={'to':[_0x1bfea9[_0xc810('0x21')]],'message':{'type':_0xc810('0x31'),'text':_0x1bfea9[_0xc810('0xd')]}};var _0x1d3dd4={'method':_0xc810('0x32'),'uri':_0x39e5a8,'headers':{'Authorization':'Bearer\x20'+_0x1a427e,'Content-Type':_0xc810('0x33')},'body':_0x1e9c06,'json':!![]};rp(_0x1d3dd4)[_0xc810('0x18')](function(_0x27d7a7){if(_0x27d7a7['statuses'][0x0]['message_id']){return _0x458ebd[_0xc810('0x19')]({'messageId':_0x27d7a7[_0xc810('0x34')][0x0][_0xc810('0x35')]});}})[_0xc810('0x1a')](function(_0x257191){logger[_0xc810('0x36')](_0xc810('0x37'),_0x257191);});break;}}})['finally'](function(){_0x2244ae();});}else{_0x2244ae();}}},'charset':_0xc810('0x38'),'collate':_0xc810('0x39')});};
\ No newline at end of file
+var _0xfe00=['UserId','WhatsappInteraction','findOne','WhatsappInteractionId','then','update','createdAt','catch','WhatsappAccount','WhatsappAccountId','type','twilio','authToken','phone','accountSid','messages','create','whatsapp:','/api/whatsapp/messages/','/status?token=','sid','error','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','sinch','baseUrl','/whatsapp/v1/','/messages/','text','POST','Bearer\x20','statuses','message_id','err','WhatsappMessage,\x20%s','utf8mb4','lodash','util','moment','bluebird','request-promise','node-fetch','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','WhatsappMessage','whatsapp_messages','messageId','fti_whatsapp_messages','body','FULLTEXT','get','direction','toLowerCase','secret','isNil'];(function(_0x3f6b1b,_0x58d3d6){var _0x4a3d2b=function(_0x5648f0){while(--_0x5648f0){_0x3f6b1b['push'](_0x3f6b1b['shift']());}};_0x4a3d2b(++_0x58d3d6);}(_0xfe00,0x1c9));var _0x0fe0=function(_0x24a952,_0x583e4f){_0x24a952=_0x24a952-0x0;var _0x138067=_0xfe00[_0x24a952];return _0x138067;};'use strict';var _=require(_0x0fe0('0x0'));var util=require(_0x0fe0('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x0fe0('0x2'));var BPromise=require(_0x0fe0('0x3'));var rp=require(_0x0fe0('0x4'));var fetch=require(_0x0fe0('0x5'));var fs=require('fs');var path=require(_0x0fe0('0x6'));var rimraf=require(_0x0fe0('0x7'));var config=require(_0x0fe0('0x8'));var attributes=require(_0x0fe0('0x9'));module[_0x0fe0('0xa')]=function(_0x565066,_0x44b3d9){return _0x565066[_0x0fe0('0xb')](_0x0fe0('0xc'),attributes,{'tableName':_0x0fe0('0xd'),'paranoid':![],'indexes':[{'name':_0x0fe0('0xe'),'fields':[_0x0fe0('0xe')]},{'name':_0x0fe0('0xf'),'fields':[_0x0fe0('0x10')],'type':_0x0fe0('0x11')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x51f9a9,_0x25c0f7,_0x5c87d7){var _0x1edcd6=_0x565066['models'];var _0x3256e7=_0x51f9a9[_0x0fe0('0x12')]({'plain':!![]});if(_0x3256e7[_0x0fe0('0x13')][_0x0fe0('0x14')]()==='in'||_0x3256e7[_0x0fe0('0x13')][_0x0fe0('0x14')]()==='out'&&!_0x3256e7[_0x0fe0('0x15')]&&!_[_0x0fe0('0x16')](_0x3256e7[_0x0fe0('0x17')])){_0x1edcd6[_0x0fe0('0x18')][_0x0fe0('0x19')]({'where':{'id':_0x3256e7[_0x0fe0('0x1a')]}})[_0x0fe0('0x1b')](function(_0x108b65){if(_0x108b65){_0x108b65[_0x0fe0('0x1c')]({'lastMsgAt':_0x3256e7[_0x0fe0('0x1d')],'lastMsgDirection':_0x3256e7[_0x0fe0('0x13')]['toLowerCase']()});}})[_0x0fe0('0x1e')](function(_0x12b047){console['error'](_0x12b047);});}if(_0x3256e7['direction']==='out'&&!_0x3256e7[_0x0fe0('0x15')]){var _0x15217d;_0x1edcd6[_0x0fe0('0x1f')]['find']({'where':{'id':_0x3256e7[_0x0fe0('0x20')]},'raw':!![]})[_0x0fe0('0x1b')](function(_0x25b0dc){_0x15217d=_0x25b0dc;if(_0x15217d&&_0x15217d[_0x0fe0('0x21')]){switch(_0x15217d[_0x0fe0('0x21')]){case _0x0fe0('0x22'):var _0x3a50c5=require(_0x0fe0('0x22'));if(_0x15217d['accountSid']&&_0x15217d[_0x0fe0('0x23')]&&_0x15217d[_0x0fe0('0x24')]){var _0x4d1076=new _0x3a50c5(_0x15217d[_0x0fe0('0x25')],_0x15217d[_0x0fe0('0x23')]);_0x4d1076[_0x0fe0('0x26')][_0x0fe0('0x27')]({'body':_0x3256e7[_0x0fe0('0x10')],'to':_0x0fe0('0x28')+_0x3256e7['phone'],'from':'whatsapp:'+_0x15217d[_0x0fe0('0x24')],'statusCallback':_0x15217d['remote']+_0x0fe0('0x29')+_0x3256e7['id']+_0x0fe0('0x2a')+_0x15217d['token']})['then'](function(_0x13b66f){if(_0x13b66f[_0x0fe0('0x2b')]){return _0x51f9a9['update']({'messageId':_0x13b66f[_0x0fe0('0x2b')]});}})[_0x0fe0('0x1e')](function(_0x4004c8){logger[_0x0fe0('0x2c')](_0x0fe0('0x2d'),_0x0fe0('0x2e'),_0x0fe0('0x22'),util[_0x0fe0('0x2f')](_0x4004c8,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x0fe0('0x2d'),_0x0fe0('0x2e'),_0x0fe0('0x22'),'Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case _0x0fe0('0x30'):var _0x2b9d59=_0x15217d['accountSid'];var _0x472eb7=_0x15217d[_0x0fe0('0x23')];var _0x53f770=_0x15217d[_0x0fe0('0x31')]+_0x0fe0('0x32')+_0x2b9d59+_0x0fe0('0x33');var _0x151f62={'to':[_0x3256e7[_0x0fe0('0x24')]],'message':{'type':_0x0fe0('0x34'),'text':_0x3256e7[_0x0fe0('0x10')]}};var _0x2e3197={'method':_0x0fe0('0x35'),'uri':_0x53f770,'headers':{'Authorization':_0x0fe0('0x36')+_0x472eb7,'Content-Type':'application/json'},'body':_0x151f62,'json':!![]};rp(_0x2e3197)[_0x0fe0('0x1b')](function(_0x5b04bb){if(_0x5b04bb[_0x0fe0('0x37')][0x0]['message_id']){return _0x51f9a9[_0x0fe0('0x1c')]({'messageId':_0x5b04bb[_0x0fe0('0x37')][0x0][_0x0fe0('0x38')]});}})[_0x0fe0('0x1e')](function(_0x3c5048){logger[_0x0fe0('0x39')](_0x0fe0('0x3a'),_0x3c5048);});break;}}})['finally'](function(){_0x5c87d7();});}else{_0x5c87d7();}}},'charset':_0x0fe0('0x3b'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 1e44a00..cdc40bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55dc=['catch','CreateWhatsappMessage','create','body','options','raw','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result'];(function(_0x11d7b5,_0x4272c3){var _0x2ce311=function(_0x3a0c51){while(--_0x3a0c51){_0x11d7b5['push'](_0x11d7b5['shift']());}};_0x2ce311(++_0x4272c3);}(_0x55dc,0x17a));var _0xc55d=function(_0x1ddaf2,_0x247b5d){_0x1ddaf2=_0x1ddaf2-0x0;var _0x3c1eaa=_0x55dc[_0x1ddaf2];return _0x3c1eaa;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xc55d('0x0'));var BPromise=require(_0xc55d('0x1'));var rs=require(_0xc55d('0x2'));var fs=require('fs');var Redis=require(_0xc55d('0x3'));var db=require(_0xc55d('0x4'))['db'];var utils=require(_0xc55d('0x5'));var logger=require(_0xc55d('0x6'))(_0xc55d('0x7'));var config=require(_0xc55d('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc55d('0x9')][_0xc55d('0xa')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xc55d('0xb'),'port':0x18eb});var socket=require(_0xc55d('0xc'))(new Redis(config['redis']));require(_0xc55d('0xd'))[_0xc55d('0xe')](socket);function respondWithRpcPromise(_0x101843,_0xd6142b,_0x461261){return new BPromise(function(_0x1e19b9,_0x47e88d){return client[_0xc55d('0xf')](_0x101843,_0x461261)[_0xc55d('0x10')](function(_0x36fb21){logger[_0xc55d('0x11')](_0xc55d('0x12'),_0xd6142b,_0xc55d('0x13'));logger['debug']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xd6142b,'request\x20sent',JSON[_0xc55d('0x14')](_0x36fb21));if(_0x36fb21[_0xc55d('0x15')]){if(_0x36fb21[_0xc55d('0x15')][_0xc55d('0x16')]===0x1f4){logger['error']('WhatsappMessage,\x20%s,\x20%s',_0xd6142b,_0x36fb21[_0xc55d('0x15')]['message']);return _0x47e88d(_0x36fb21['error'][_0xc55d('0x17')]);}logger[_0xc55d('0x15')](_0xc55d('0x12'),_0xd6142b,_0x36fb21[_0xc55d('0x15')][_0xc55d('0x17')]);return _0x1e19b9(_0x36fb21[_0xc55d('0x15')][_0xc55d('0x17')]);}else{logger[_0xc55d('0x11')](_0xc55d('0x12'),_0xd6142b,_0xc55d('0x13'));_0x1e19b9(_0x36fb21[_0xc55d('0x18')][_0xc55d('0x17')]);}})[_0xc55d('0x19')](function(_0x1d1c03){logger[_0xc55d('0x15')]('WhatsappMessage,\x20%s,\x20%s',_0xd6142b,_0x1d1c03);_0x47e88d(_0x1d1c03);});});}exports[_0xc55d('0x1a')]=function(_0xd7b479){var _0x137291=this;return new Promise(function(_0x59b853,_0x1c6896){return db['WhatsappMessage'][_0xc55d('0x1b')](_0xd7b479[_0xc55d('0x1c')],{'raw':_0xd7b479[_0xc55d('0x1d')]?_0xd7b479[_0xc55d('0x1d')][_0xc55d('0x1e')]===undefined?!![]:![]:!![]})[_0xc55d('0x10')](function(_0x34930c){logger[_0xc55d('0x11')](_0xc55d('0x1a'),_0xd7b479);logger['debug'](_0xc55d('0x1a'),_0xd7b479,JSON[_0xc55d('0x14')](_0x34930c));_0x59b853(_0x34930c);})[_0xc55d('0x19')](function(_0x3b2bca){logger[_0xc55d('0x15')](_0xc55d('0x1a'),_0x3b2bca[_0xc55d('0x17')],_0xd7b479);_0x1c6896(_0x137291['error'](0x1f4,_0x3b2bca[_0xc55d('0x17')]));});});};
\ No newline at end of file
+var _0x78fd=['WhatsappMessage,\x20%s,\x20%s','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','CreateWhatsappMessage','WhatsappMessage','body','options','raw','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','request','then','info'];(function(_0x319a65,_0x5860aa){var _0xd4a450=function(_0x32b32e){while(--_0x32b32e){_0x319a65['push'](_0x319a65['shift']());}};_0xd4a450(++_0x5860aa);}(_0x78fd,0x1b2));var _0xd78f=function(_0x4f6262,_0x50093c){_0x4f6262=_0x4f6262-0x0;var _0x201f4e=_0x78fd[_0x4f6262];return _0x201f4e;};'use strict';var _=require(_0xd78f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xd78f('0x1'));var rs=require(_0xd78f('0x2'));var fs=require('fs');var Redis=require(_0xd78f('0x3'));var db=require(_0xd78f('0x4'))['db'];var utils=require(_0xd78f('0x5'));var logger=require(_0xd78f('0x6'))(_0xd78f('0x7'));var config=require(_0xd78f('0x8'));var jayson=require(_0xd78f('0x9'));var client=jayson[_0xd78f('0xa')][_0xd78f('0xb')]({'port':0x232a});config[_0xd78f('0xc')]=_[_0xd78f('0xd')](config[_0xd78f('0xc')],{'host':_0xd78f('0xe'),'port':0x18eb});var socket=require(_0xd78f('0xf'))(new Redis(config[_0xd78f('0xc')]));require(_0xd78f('0x10'))[_0xd78f('0x11')](socket);function respondWithRpcPromise(_0x13163a,_0x64b0ad,_0x313e9c){return new BPromise(function(_0x16f51d,_0x438b87){return client[_0xd78f('0x12')](_0x13163a,_0x313e9c)[_0xd78f('0x13')](function(_0xb9496e){logger[_0xd78f('0x14')](_0xd78f('0x15'),_0x64b0ad,'request\x20sent');logger[_0xd78f('0x16')](_0xd78f('0x17'),_0x64b0ad,'request\x20sent',JSON[_0xd78f('0x18')](_0xb9496e));if(_0xb9496e[_0xd78f('0x19')]){if(_0xb9496e[_0xd78f('0x19')][_0xd78f('0x1a')]===0x1f4){logger['error'](_0xd78f('0x15'),_0x64b0ad,_0xb9496e[_0xd78f('0x19')][_0xd78f('0x1b')]);return _0x438b87(_0xb9496e[_0xd78f('0x19')]['message']);}logger[_0xd78f('0x19')](_0xd78f('0x15'),_0x64b0ad,_0xb9496e[_0xd78f('0x19')][_0xd78f('0x1b')]);return _0x16f51d(_0xb9496e[_0xd78f('0x19')]['message']);}else{logger['info'](_0xd78f('0x15'),_0x64b0ad,_0xd78f('0x1c'));_0x16f51d(_0xb9496e['result'][_0xd78f('0x1b')]);}})[_0xd78f('0x1d')](function(_0x3d580f){logger[_0xd78f('0x19')](_0xd78f('0x15'),_0x64b0ad,_0x3d580f);_0x438b87(_0x3d580f);});});}exports[_0xd78f('0x1e')]=function(_0x510894){var _0x5790ae=this;return new Promise(function(_0x11fc7b,_0x10858e){return db[_0xd78f('0x1f')]['create'](_0x510894[_0xd78f('0x20')],{'raw':_0x510894[_0xd78f('0x21')]?_0x510894[_0xd78f('0x21')][_0xd78f('0x22')]===undefined?!![]:![]:!![]})[_0xd78f('0x13')](function(_0x1c053e){logger[_0xd78f('0x14')](_0xd78f('0x1e'),_0x510894);logger['debug'](_0xd78f('0x1e'),_0x510894,JSON[_0xd78f('0x18')](_0x1c053e));_0x11fc7b(_0x1c053e);})[_0xd78f('0x1d')](function(_0x416f80){logger[_0xd78f('0x19')](_0xd78f('0x1e'),_0x416f80[_0xd78f('0x1b')],_0x510894);_0x10858e(_0x5790ae[_0xd78f('0x19')](0x1f4,_0x416f80[_0xd78f('0x1b')]));});});};
\ No newline at end of file
index 938fd14..68000f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b21=['save','remove','update','emit','removeListener','register','length','whatsappMessage:'];(function(_0x1bbcc2,_0x35795d){var _0x126e83=function(_0x430b2c){while(--_0x430b2c){_0x1bbcc2['push'](_0x1bbcc2['shift']());}};_0x126e83(++_0x35795d);}(_0x1b21,0x108));var _0x11b2=function(_0x2d715f,_0x172e0e){_0x2d715f=_0x2d715f-0x0;var _0x3c812b=_0x1b21[_0x2d715f];return _0x3c812b;};'use strict';var WhatsappMessageEvents=require('./whatsappMessage.events');var events=[_0x11b2('0x0'),_0x11b2('0x1'),_0x11b2('0x2')];function createListener(_0x5d1762,_0x33a0d3){return function(_0x479d88){_0x33a0d3[_0x11b2('0x3')](_0x5d1762,_0x479d88);};}function removeListener(_0x578c6a,_0x11b097){return function(){WhatsappMessageEvents[_0x11b2('0x4')](_0x578c6a,_0x11b097);};}exports[_0x11b2('0x5')]=function(_0x495aef){for(var _0x8429d5=0x0,_0x497d04=events[_0x11b2('0x6')];_0x8429d5<_0x497d04;_0x8429d5++){var _0x1a8d5a=events[_0x8429d5];var _0x23dac2=createListener(_0x11b2('0x7')+_0x1a8d5a,_0x495aef);WhatsappMessageEvents['on'](_0x1a8d5a,_0x23dac2);}};
\ No newline at end of file
+var _0xd373=['update','emit','removeListener','register','length','whatsappMessage:','./whatsappMessage.events','save','remove'];(function(_0x344adc,_0x183c37){var _0x4014b2=function(_0xe809e5){while(--_0xe809e5){_0x344adc['push'](_0x344adc['shift']());}};_0x4014b2(++_0x183c37);}(_0xd373,0x1b6));var _0x3d37=function(_0x4a54e8,_0x441b2a){_0x4a54e8=_0x4a54e8-0x0;var _0x4d3e23=_0xd373[_0x4a54e8];return _0x4d3e23;};'use strict';var WhatsappMessageEvents=require(_0x3d37('0x0'));var events=[_0x3d37('0x1'),_0x3d37('0x2'),_0x3d37('0x3')];function createListener(_0x2fcb7a,_0x3c4c33){return function(_0x5af198){_0x3c4c33[_0x3d37('0x4')](_0x2fcb7a,_0x5af198);};}function removeListener(_0x74856c,_0x5d0be3){return function(){WhatsappMessageEvents[_0x3d37('0x5')](_0x74856c,_0x5d0be3);};}exports[_0x3d37('0x6')]=function(_0x4aa875){for(var _0x1c08db=0x0,_0x33d0a3=events[_0x3d37('0x7')];_0x1c08db<_0x33d0a3;_0x1c08db++){var _0x1a8f3b=events[_0x1c08db];var _0x4aeb3a=createListener(_0x3d37('0x8')+_0x1a8f3b,_0x4aa875);WhatsappMessageEvents['on'](_0x1a8f3b,_0x4aeb3a);}};
\ No newline at end of file
index 016dad6..57c9fe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x030e=['Router','../../components/interaction/service','../../config/environment','./whatsappQueue.controller','get','/describe','isAuthenticated','/:id','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','addTeams','put','update','delete','/:id/teams','removeTeams','exports','multer','path','express'];(function(_0x25699c,_0x3973fc){var _0x1fbe02=function(_0x542b9d){while(--_0x542b9d){_0x25699c['push'](_0x25699c['shift']());}};_0x1fbe02(++_0x3973fc);}(_0x030e,0xac));var _0xe030=function(_0x546a8f,_0x2bb120){_0x546a8f=_0x546a8f-0x0;var _0x213cba=_0x030e[_0x546a8f];return _0x213cba;};'use strict';var multer=require(_0xe030('0x0'));var util=require('util');var path=require(_0xe030('0x1'));var timeout=require('connect-timeout');var express=require(_0xe030('0x2'));var router=express[_0xe030('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xe030('0x4'));var config=require(_0xe030('0x5'));var controller=require(_0xe030('0x6'));router[_0xe030('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0xe030('0x7')](_0xe030('0x8'),auth[_0xe030('0x9')](),controller['describe']);router['get'](_0xe030('0xa'),auth[_0xe030('0x9')](),controller[_0xe030('0xb')]);router['get'](_0xe030('0xc'),auth[_0xe030('0x9')](),controller[_0xe030('0xd')]);router[_0xe030('0x7')]('/:id/teams',auth[_0xe030('0x9')](),controller[_0xe030('0xe')]);router[_0xe030('0x7')](_0xe030('0xf'),auth[_0xe030('0x9')](),controller[_0xe030('0x10')]);router[_0xe030('0x11')]('/',auth[_0xe030('0x9')](),controller['create']);router[_0xe030('0x11')]('/:id/teams',auth[_0xe030('0x9')](),controller[_0xe030('0x12')]);router[_0xe030('0x11')]('/:id/users',auth[_0xe030('0x9')](),controller['addAgents']);router[_0xe030('0x13')](_0xe030('0xa'),auth[_0xe030('0x9')](),controller[_0xe030('0x14')]);router[_0xe030('0x15')](_0xe030('0xa'),auth[_0xe030('0x9')](),controller['destroy']);router['delete'](_0xe030('0x16'),auth[_0xe030('0x9')](),controller[_0xe030('0x17')]);router[_0xe030('0x15')](_0xe030('0xf'),auth['isAuthenticated'](),controller['removeAgents']);module[_0xe030('0x18')]=router;
\ No newline at end of file
+var _0xe15e=['getAgents','post','create','addTeams','addAgents','put','update','delete','destroy','removeAgents','exports','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','./whatsappQueue.controller','get','isAuthenticated','index','/describe','/:id','/:id/teams','/:id/users'];(function(_0x2787ed,_0xdc2719){var _0x3c34d7=function(_0x32cb14){while(--_0x32cb14){_0x2787ed['push'](_0x2787ed['shift']());}};_0x3c34d7(++_0xdc2719);}(_0xe15e,0x88));var _0xee15=function(_0x47cd4c,_0xcbb81b){_0x47cd4c=_0x47cd4c-0x0;var _0x5ad4e0=_0xe15e[_0x47cd4c];return _0x5ad4e0;};'use strict';var multer=require(_0xee15('0x0'));var util=require(_0xee15('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xee15('0x2'));var router=express[_0xee15('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xee15('0x4'));var interaction=require(_0xee15('0x5'));var config=require('../../config/environment');var controller=require(_0xee15('0x6'));router[_0xee15('0x7')]('/',auth[_0xee15('0x8')](),controller[_0xee15('0x9')]);router[_0xee15('0x7')](_0xee15('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0xee15('0x7')](_0xee15('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xee15('0x7')]('/:id/members',auth[_0xee15('0x8')](),controller['getMembers']);router[_0xee15('0x7')](_0xee15('0xc'),auth[_0xee15('0x8')](),controller['getTeams']);router[_0xee15('0x7')](_0xee15('0xd'),auth[_0xee15('0x8')](),controller[_0xee15('0xe')]);router[_0xee15('0xf')]('/',auth['isAuthenticated'](),controller[_0xee15('0x10')]);router['post']('/:id/teams',auth[_0xee15('0x8')](),controller[_0xee15('0x11')]);router[_0xee15('0xf')](_0xee15('0xd'),auth['isAuthenticated'](),controller[_0xee15('0x12')]);router[_0xee15('0x13')](_0xee15('0xb'),auth['isAuthenticated'](),controller[_0xee15('0x14')]);router[_0xee15('0x15')]('/:id',auth[_0xee15('0x8')](),controller[_0xee15('0x16')]);router[_0xee15('0x15')]('/:id/teams',auth[_0xee15('0x8')](),controller['removeTeams']);router[_0xee15('0x15')](_0xee15('0xd'),auth['isAuthenticated'](),controller[_0xee15('0x17')]);module[_0xee15('0x18')]=router;
\ No newline at end of file
index c1f52d0..9709c93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35a9=['exports','STRING','name','INTEGER','beepall'];(function(_0x5d8018,_0x588592){var _0x151ac4=function(_0x548679){while(--_0x548679){_0x5d8018['push'](_0x5d8018['shift']());}};_0x151ac4(++_0x588592);}(_0x35a9,0x73));var _0x935a=function(_0x54ea66,_0x13871e){_0x54ea66=_0x54ea66-0x0;var _0xdfc373=_0x35a9[_0x54ea66];return _0xdfc373;};'use strict';var Sequelize=require('sequelize');module[_0x935a('0x0')]={'name':{'type':Sequelize[_0x935a('0x1')],'unique':_0x935a('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x935a('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0x935a('0x4'),'roundrobin')},'description':{'type':Sequelize[_0x935a('0x1')]}};
\ No newline at end of file
+var _0xd3d1=['roundrobin','STRING','sequelize','exports','INTEGER','ENUM','rrmemory','beepall'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd3d1,0x172));var _0x1d3d=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0xd3d1[_0x3e5086];return _0xfeb102;};'use strict';var Sequelize=require(_0x1d3d('0x0'));module[_0x1d3d('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x1d3d('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x1d3d('0x3')](_0x1d3d('0x4'),_0x1d3d('0x5'),_0x1d3d('0x6'))},'description':{'type':Sequelize[_0x1d3d('0x7')]}};
\ No newline at end of file
index 9a1912c..1e7fd17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fc9=['each','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','Agents','field','tq.TeamId','from','join','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','push','sequelize','toString','QueryTypes','every','includes','all','union','compact','value','transaction','removeAgents','addAgents','omit','spread','userWhatsappQueue:remove','getAgents','lodash','squel','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./whatsappQueue.socket','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','update','then','destroy','get','WhatsappQueues','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','getOptions','WhatsappQueue','include','query','findAll','rows','show','model','keys','filters','intersection','attributes','fields','length','includeAll','options','find','catch','create','user','role','UserProfileSection','autoAssociation','body','describe','getMembers','UserWhatsappQueue','hasOwnProperty','nolimit','order','sort','pick','where','WhatsappQueueId','filter','merge','User','agent','updatedAt','createdAt','format','%s/%s','whatsappPause','findOne','params','Team','getTeams','addTeams','ids','online','interface'];(function(_0x4b9b52,_0x511229){var _0x2fbc99=function(_0x251070){while(--_0x251070){_0x4b9b52['push'](_0x4b9b52['shift']());}};_0x2fbc99(++_0x511229);}(_0x2fc9,0x104));var _0x92fc=function(_0x145b3c,_0x31ea4a){_0x145b3c=_0x145b3c-0x0;var _0x1b6e36=_0x2fc9[_0x145b3c];return _0x1b6e36;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require(_0x92fc('0x0'));var squel=require(_0x92fc('0x1'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0x92fc('0x2'));var config=require(_0x92fc('0x3'));var db=require(_0x92fc('0x4'))['db'];config[_0x92fc('0x5')]=_['defaults'](config[_0x92fc('0x5')],{'host':_0x92fc('0x6'),'port':0x18eb});var socket=require(_0x92fc('0x7'))(new Redis(config['redis']));require(_0x92fc('0x8'))['register'](socket);function respondWithStatusCode(_0x1ac55a,_0x57b9ab){_0x57b9ab=_0x57b9ab||0xcc;return function(_0xab8b53){if(_0xab8b53){return _0x1ac55a[_0x92fc('0x9')](_0x57b9ab);}return _0x1ac55a[_0x92fc('0xa')](_0x57b9ab)[_0x92fc('0xb')]();};}function respondWithResult(_0x286068,_0x5c05ab){_0x5c05ab=_0x5c05ab||0xc8;return function(_0x9e7db8){if(_0x9e7db8){return _0x286068[_0x92fc('0xa')](_0x5c05ab)['json'](_0x9e7db8);}};}function respondWithFilteredResult(_0x1088a0,_0x217b9b){return function(_0x1b500d){if(_0x1b500d){var _0x694df1=typeof _0x217b9b[_0x92fc('0xc')]===_0x92fc('0xd')&&typeof _0x217b9b[_0x92fc('0xe')]===_0x92fc('0xd');var _0x46bcf4=_0x1b500d[_0x92fc('0xf')];var _0x233c2c=_0x694df1?0x0:_0x217b9b[_0x92fc('0xc')];var _0x39acc9=_0x694df1?_0x1b500d['count']:_0x217b9b[_0x92fc('0xc')]+_0x217b9b[_0x92fc('0xe')];var _0x293eb1;if(_0x39acc9>=_0x46bcf4){_0x39acc9=_0x46bcf4;_0x293eb1=0xc8;}else{_0x293eb1=0xce;}_0x1088a0[_0x92fc('0xa')](_0x293eb1);return _0x1088a0[_0x92fc('0x10')](_0x92fc('0x11'),_0x233c2c+'-'+_0x39acc9+'/'+_0x46bcf4)[_0x92fc('0x12')](_0x1b500d);}return null;};}function saveUpdates(_0x387091){return function(_0xa5e72e){if(_0xa5e72e){return _0xa5e72e[_0x92fc('0x13')](_0x387091)[_0x92fc('0x14')](function(_0x1b2bbc){return _0x1b2bbc;});}return null;};}function removeEntity(_0x3b1a31){return function(_0x3d0a27){if(_0x3d0a27){return _0x3d0a27[_0x92fc('0x15')]()['then'](function(){var _0x1714e6=_0x3d0a27[_0x92fc('0x16')]({'plain':!![]});var _0x389c8b=_0x92fc('0x17');return db['UserProfileResource'][_0x92fc('0x15')]({'where':{'type':_0x389c8b,'resourceId':_0x1714e6['id']}})['then'](function(){return _0x3d0a27;});})[_0x92fc('0x14')](function(){_0x3b1a31[_0x92fc('0xa')](0xcc)[_0x92fc('0xb')]();});}};}function handleEntityNotFound(_0x1e3626){return function(_0x521b72){if(!_0x521b72){_0x1e3626[_0x92fc('0x9')](0x194);}return _0x521b72;};}function handleError(_0x5458d6,_0x1709cf){_0x1709cf=_0x1709cf||0x1f4;return function(_0x4c7b11){logger[_0x92fc('0x18')](_0x4c7b11[_0x92fc('0x19')]);if(_0x4c7b11[_0x92fc('0x1a')]){delete _0x4c7b11['name'];}_0x5458d6[_0x92fc('0xa')](_0x1709cf)[_0x92fc('0x1b')](_0x4c7b11);};}exports[_0x92fc('0x1c')]=function(_0xd1fa3c,_0x1f2ff0){var _0x35ee02={};var _0x1bf144={'count':0x0,'rows':[]};var _0x5a7ee8=_[_0x92fc('0x1d')](db['WhatsappQueue'][_0x92fc('0x1e')],function(_0x477463){return{'name':_0x477463[_0x92fc('0x1f')],'type':_0x477463[_0x92fc('0x20')][_0x92fc('0x21')]};});_0x35ee02=qs[_0x92fc('0x22')](_0x5a7ee8,_0xd1fa3c);var _0x2c8434={'where':_0x35ee02['where']};return db[_0x92fc('0x23')][_0x92fc('0xf')](_0x2c8434)[_0x92fc('0x14')](function(_0x4298f1){_0x1bf144[_0x92fc('0xf')]=_0x4298f1;_0x35ee02['include']=qs[_0x92fc('0x24')](_0xd1fa3c[_0x92fc('0x25')]);return db[_0x92fc('0x23')][_0x92fc('0x26')](_0x35ee02);})['then'](function(_0x302874){_0x1bf144[_0x92fc('0x27')]=_0x302874;return _0x1bf144;})[_0x92fc('0x14')](respondWithFilteredResult(_0x1f2ff0,_0x35ee02))['catch'](handleError(_0x1f2ff0,null));};exports[_0x92fc('0x28')]=function(_0x435eec,_0x6bb771){var _0x2f14b9={'raw':!![],'where':{'id':_0x435eec['params']['id']}},_0x578f96={};_0x578f96[_0x92fc('0x29')]=_[_0x92fc('0x2a')](db['WhatsappQueue']['rawAttributes']);_0x578f96[_0x92fc('0x25')]=_['keys'](_0x435eec['query']);_0x578f96[_0x92fc('0x2b')]=_[_0x92fc('0x2c')](_0x578f96[_0x92fc('0x29')],_0x578f96[_0x92fc('0x25')]);_0x2f14b9[_0x92fc('0x2d')]=_[_0x92fc('0x2c')](_0x578f96[_0x92fc('0x29')],qs[_0x92fc('0x2e')](_0x435eec[_0x92fc('0x25')][_0x92fc('0x2e')]));_0x2f14b9[_0x92fc('0x2d')]=_0x2f14b9['attributes'][_0x92fc('0x2f')]?_0x2f14b9[_0x92fc('0x2d')]:_0x578f96['model'];if(_0x435eec['query'][_0x92fc('0x30')]){_0x2f14b9[_0x92fc('0x24')]=[{'all':!![]}];}_0x2f14b9=_['merge']({},_0x2f14b9,_0x435eec[_0x92fc('0x31')]);return db[_0x92fc('0x23')][_0x92fc('0x32')](_0x2f14b9)[_0x92fc('0x14')](handleEntityNotFound(_0x6bb771,null))[_0x92fc('0x14')](respondWithResult(_0x6bb771,null))[_0x92fc('0x33')](handleError(_0x6bb771,null));};exports[_0x92fc('0x34')]=function(_0x91fdaf,_0x49dbab){return db[_0x92fc('0x23')][_0x92fc('0x34')](_0x91fdaf['body'],{})[_0x92fc('0x14')](function(_0xd52c15){var _0x54eb2d=_0x91fdaf[_0x92fc('0x35')][_0x92fc('0x16')]({'plain':!![]});if(!_0x54eb2d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x54eb2d[_0x92fc('0x36')]==='user'){var _0x2ba05=_0xd52c15[_0x92fc('0x16')]({'plain':!![]});var _0x53a946=_0x92fc('0x17');return db[_0x92fc('0x37')]['find']({'where':{'name':_0x53a946,'userProfileId':_0x54eb2d['userProfileId']},'raw':!![]})[_0x92fc('0x14')](function(_0x50f44e){if(_0x50f44e&&_0x50f44e[_0x92fc('0x38')]===0x0){return db['UserProfileResource'][_0x92fc('0x34')]({'name':_0x2ba05[_0x92fc('0x1a')],'resourceId':_0x2ba05['id'],'type':_0x50f44e[_0x92fc('0x1a')],'sectionId':_0x50f44e['id']},{})[_0x92fc('0x14')](function(){return _0xd52c15;});}else{return _0xd52c15;}})['catch'](function(_0x577d25){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x577d25);throw _0x577d25;});}return _0xd52c15;})[_0x92fc('0x14')](respondWithResult(_0x49dbab,0xc9))[_0x92fc('0x33')](handleError(_0x49dbab,null));};exports['update']=function(_0x5ab469,_0x557576){if(_0x5ab469['body']['id']){delete _0x5ab469[_0x92fc('0x39')]['id'];}return db[_0x92fc('0x23')]['find']({'where':{'id':_0x5ab469['params']['id']}})[_0x92fc('0x14')](handleEntityNotFound(_0x557576,null))[_0x92fc('0x14')](saveUpdates(_0x5ab469[_0x92fc('0x39')],null))['then'](respondWithResult(_0x557576,null))[_0x92fc('0x33')](handleError(_0x557576,null));};exports[_0x92fc('0x15')]=function(_0x272518,_0x578368){return db[_0x92fc('0x23')][_0x92fc('0x32')]({'where':{'id':_0x272518['params']['id']}})['then'](handleEntityNotFound(_0x578368,null))[_0x92fc('0x14')](removeEntity(_0x578368,null))['catch'](handleError(_0x578368,null));};exports[_0x92fc('0x3a')]=function(_0x38e377,_0x1b4d73){return db['WhatsappQueue'][_0x92fc('0x3a')]()[_0x92fc('0x14')](respondWithResult(_0x1b4d73,null))[_0x92fc('0x33')](handleError(_0x1b4d73,null));};exports[_0x92fc('0x3b')]=function(_0x350d39,_0x4dc3a9){var _0x569694={'raw':!![],'where':{}},_0x4fa098={},_0x436693;return db[_0x92fc('0x23')]['findOne']({'where':{'id':_0x350d39['params']['id']}})['then'](handleEntityNotFound(_0x4dc3a9,null))[_0x92fc('0x14')](function(_0x14ef8e){if(_0x14ef8e){_0x436693=_0x14ef8e['get']({'plain':!![]});_0x4fa098[_0x92fc('0x29')]=_['keys'](db[_0x92fc('0x3c')][_0x92fc('0x1e')]);_0x4fa098[_0x92fc('0x25')]=_[_0x92fc('0x2a')](_0x350d39[_0x92fc('0x25')]);_0x4fa098['filters']=_['intersection'](_0x4fa098[_0x92fc('0x29')],_0x4fa098[_0x92fc('0x25')]);_0x569694['attributes']=_[_0x92fc('0x2c')](_0x4fa098[_0x92fc('0x29')],qs[_0x92fc('0x2e')](_0x350d39['query'][_0x92fc('0x2e')]));_0x569694[_0x92fc('0x2d')]=_0x569694['attributes'][_0x92fc('0x2f')]?_0x569694[_0x92fc('0x2d')]:_0x4fa098['model'];if(!_0x350d39[_0x92fc('0x25')][_0x92fc('0x3d')](_0x92fc('0x3e'))){_0x569694[_0x92fc('0xe')]=qs[_0x92fc('0xe')](_0x350d39[_0x92fc('0x25')]['limit']);_0x569694[_0x92fc('0xc')]=qs['offset'](_0x350d39[_0x92fc('0x25')][_0x92fc('0xc')]);}_0x569694[_0x92fc('0x3f')]=qs[_0x92fc('0x40')](_0x350d39[_0x92fc('0x25')]['sort']);_0x569694['where']=qs[_0x92fc('0x2b')](_[_0x92fc('0x41')](_0x350d39[_0x92fc('0x25')],_0x4fa098[_0x92fc('0x2b')]));_0x569694[_0x92fc('0x42')][_0x92fc('0x43')]=_0x14ef8e['id'];if(_0x350d39[_0x92fc('0x25')][_0x92fc('0x44')]){_0x569694[_0x92fc('0x42')]=_[_0x92fc('0x45')](_0x569694[_0x92fc('0x42')],{'$or':_[_0x92fc('0x1d')](_0x569694[_0x92fc('0x2d')],function(_0x1c6d86){var _0x3002f8={};_0x3002f8[_0x1c6d86]={'$like':'%'+_0x350d39[_0x92fc('0x25')][_0x92fc('0x44')]+'%'};return _0x3002f8;})});}_0x569694=_[_0x92fc('0x45')]({},_0x569694,_0x350d39['options']);return db['UserWhatsappQueue']['findAll'](_0x569694);}})[_0x92fc('0x14')](function(_0x1a371e){if(_0x1a371e){return db[_0x92fc('0x46')]['findAndCountAll']({'where':{'id':_['map'](_0x1a371e,'UserId'),'role':_0x92fc('0x47')},'attributes':['id',_0x92fc('0x1a'),'whatsappPause',_0x92fc('0x48'),_0x92fc('0x49')]});}})['then'](function(_0x4740c8){if(_0x4740c8){return{'count':_0x4740c8[_0x92fc('0xf')],'rows':_[_0x92fc('0x1d')](_0x4740c8[_0x92fc('0x27')],function(_0x1a3798){return{'membername':_0x1a3798[_0x92fc('0x1a')],'UserId':_0x1a3798['id'],'queue_name':_0x436693[_0x92fc('0x1a')],'WhatsappQueueId':_0x436693['id'],'interface':util[_0x92fc('0x4a')](_0x92fc('0x4b'),'SIP',_0x1a3798[_0x92fc('0x1a')]),'penalty':0x0,'paused':_0x1a3798[_0x92fc('0x4c')],'createdAt':_0x1a3798[_0x92fc('0x49')],'updatedAt':_0x1a3798[_0x92fc('0x48')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x4dc3a9,_0x569694))[_0x92fc('0x33')](handleError(_0x4dc3a9,null));};exports['getTeams']=function(_0x48f575,_0x90c0fe){var _0x4d7ec9={};var _0x21bf53={};var _0x5d46f8;var _0x34ccbb;return db['WhatsappQueue'][_0x92fc('0x4d')]({'where':{'id':_0x48f575[_0x92fc('0x4e')]['id']}})[_0x92fc('0x14')](handleEntityNotFound(_0x90c0fe,null))[_0x92fc('0x14')](function(_0x41c2ca){if(_0x41c2ca){_0x5d46f8=_0x41c2ca;_0x21bf53[_0x92fc('0x29')]=_['keys'](db[_0x92fc('0x4f')]['rawAttributes']);_0x21bf53[_0x92fc('0x25')]=_[_0x92fc('0x2a')](_0x48f575[_0x92fc('0x25')]);_0x21bf53[_0x92fc('0x2b')]=_['intersection'](_0x21bf53[_0x92fc('0x29')],_0x21bf53[_0x92fc('0x25')]);_0x4d7ec9[_0x92fc('0x2d')]=_[_0x92fc('0x2c')](_0x21bf53[_0x92fc('0x29')],qs[_0x92fc('0x2e')](_0x48f575[_0x92fc('0x25')][_0x92fc('0x2e')]));_0x4d7ec9[_0x92fc('0x2d')]=_0x4d7ec9[_0x92fc('0x2d')][_0x92fc('0x2f')]?_0x4d7ec9['attributes']:_0x21bf53[_0x92fc('0x29')];_0x4d7ec9['order']=qs[_0x92fc('0x40')](_0x48f575[_0x92fc('0x25')][_0x92fc('0x40')]);_0x4d7ec9['where']=qs['filters'](_['pick'](_0x48f575[_0x92fc('0x25')],_0x21bf53['filters']));if(_0x48f575['query'][_0x92fc('0x44')]){_0x4d7ec9[_0x92fc('0x42')]=_['merge'](_0x4d7ec9[_0x92fc('0x42')],{'$or':_['map'](_0x4d7ec9['attributes'],function(_0x34e7eb){var _0x3fa999={};_0x3fa999[_0x34e7eb]={'$like':'%'+_0x48f575['query'][_0x92fc('0x44')]+'%'};return _0x3fa999;})});}_0x4d7ec9=_['merge']({},_0x4d7ec9,_0x48f575['options']);return _0x5d46f8[_0x92fc('0x50')](_0x4d7ec9);}})[_0x92fc('0x14')](function(_0x38c19d){if(_0x38c19d){_0x34ccbb=_0x38c19d['length'];if(!_0x48f575[_0x92fc('0x25')]['hasOwnProperty']('nolimit')){_0x4d7ec9[_0x92fc('0xe')]=qs['limit'](_0x48f575[_0x92fc('0x25')][_0x92fc('0xe')]);_0x4d7ec9['offset']=qs[_0x92fc('0xc')](_0x48f575[_0x92fc('0x25')]['offset']);}return _0x5d46f8[_0x92fc('0x50')](_0x4d7ec9);}})[_0x92fc('0x14')](function(_0x29a6f3){if(_0x29a6f3){return _0x29a6f3?{'count':_0x34ccbb,'rows':_0x29a6f3}:null;}})[_0x92fc('0x14')](respondWithResult(_0x90c0fe,null))[_0x92fc('0x33')](handleError(_0x90c0fe,null));};exports[_0x92fc('0x51')]=function(_0x1e9aa1,_0x580b39){var _0x77970f=_0x1e9aa1['body'][_0x92fc('0x52')];return db['Team'][_0x92fc('0x26')]({'where':{'id':_0x77970f},'attributes':['id'],'include':[{'model':db[_0x92fc('0x46')],'as':'Agents','attributes':['id','name',_0x92fc('0x53'),'voicePause',_0x92fc('0x54')],'raw':!![]}]})[_0x92fc('0x14')](function(_0x5b0bdd){if(_0x5b0bdd){var _0x31c185=_['flatMap'](_0x5b0bdd,function(_0x43182f){var _0x5d498a=_0x43182f[_0x92fc('0x16')]({'plain':!![]});return _0x5d498a['Agents'];});return db['WhatsappQueue']['find']({'where':{'id':_0x1e9aa1[_0x92fc('0x4e')]['id']}})[_0x92fc('0x14')](function(_0x2421d0){return db['sequelize']['transaction'](function(_0x1a0023){return _0x2421d0[_0x92fc('0x51')](_0x77970f,{'transaction':_0x1a0023})['then'](function(){return BPromise[_0x92fc('0x55')](_0x31c185,function(_0x343d65){return db[_0x92fc('0x3c')][_0x92fc('0x56')]({'where':{'UserId':_0x343d65['id'],'WhatsappQueueId':_0x1e9aa1[_0x92fc('0x4e')]['id']},'transaction':_0x1a0023});});})[_0x92fc('0x14')](function(){_0x31c185[_0x92fc('0x57')](function(_0x1638a2){socket[_0x92fc('0x58')](_0x92fc('0x59'),{'UserId':_0x1638a2['id'],'WhatsappQueueId':_0x2421d0['id']});});});});});}})[_0x92fc('0x14')](respondWithStatusCode(_0x580b39,null))[_0x92fc('0x33')](handleError(_0x580b39,null));};exports[_0x92fc('0x5a')]=function(_0x3fbc3c,_0x117183){return db[_0x92fc('0x4f')][_0x92fc('0x26')]({'where':{'id':_0x3fbc3c[_0x92fc('0x25')]['ids']},'attributes':['id'],'include':[{'model':db[_0x92fc('0x46')],'as':_0x92fc('0x5b'),'attributes':['id'],'raw':!![]}]})[_0x92fc('0x14')](handleEntityNotFound(_0x117183,null))[_0x92fc('0x14')](function(_0x41b004){var _0x50a04e=_[_0x92fc('0x1d')](_0x41b004,'id');var _0x50c66e=[];var _0x1cff09=[];var _0x3030f5=squel['select']();_0x3030f5[_0x92fc('0x5c')](_0x92fc('0x5d'))[_0x92fc('0x5e')]('team_has_whatsapp_queues','tq')[_0x92fc('0x5f')]('user_has_teams','ut',_0x92fc('0x60'))['where'](_0x92fc('0x61'),_0x3fbc3c[_0x92fc('0x4e')]['id']);for(var _0x12b6b7=0x0;_0x12b6b7<_0x41b004['length'];_0x12b6b7+=0x1){let _0x3ab62d=_0x41b004[_0x12b6b7];for(var _0x3b6b4e=0x0;_0x3b6b4e<_0x3ab62d[_0x92fc('0x5b')][_0x92fc('0x2f')];_0x3b6b4e+=0x1){let _0x4647e6=_0x3ab62d['Agents'][_0x3b6b4e];var _0x45fd16=_0x3030f5['clone']();_0x45fd16[_0x92fc('0x42')]('ut.UserId\x20=\x20?',_0x4647e6['id']);_0x1cff09[_0x92fc('0x62')](db[_0x92fc('0x63')][_0x92fc('0x25')](_0x45fd16[_0x92fc('0x64')](),{'type':db['sequelize'][_0x92fc('0x65')]['SELECT']})['then'](function(_0x3cb9a2){if(_0x3cb9a2['length']===0x1){return _0x4647e6['id'];}else{var _0x560b92=_[_0x92fc('0x66')](_[_0x92fc('0x1d')](_0x3cb9a2,'TeamId'),function(_0x51a544){return _[_0x92fc('0x67')](_0x50a04e,_0x51a544);});if(_0x560b92){return _0x4647e6['id'];}}}));}}return BPromise[_0x92fc('0x68')](_0x1cff09)[_0x92fc('0x14')](function(_0x5387f4){_0x50c66e=_(_0x50c66e)[_0x92fc('0x69')](_0x5387f4)[_0x92fc('0x6a')]()[_0x92fc('0x6b')]();return db['WhatsappQueue'][_0x92fc('0x32')]({'where':{'id':_0x3fbc3c[_0x92fc('0x4e')]['id']}})[_0x92fc('0x14')](function(_0xebd763){return db[_0x92fc('0x63')][_0x92fc('0x6c')](function(_0x9fee3d){return _0xebd763[_0x92fc('0x5a')](_0x3fbc3c[_0x92fc('0x25')]['ids'],{'transaction':_0x9fee3d})[_0x92fc('0x14')](function(){if(!_['isEmpty'](_0x50c66e)){return _0xebd763[_0x92fc('0x6d')](_0x50c66e,{'transaction':_0x9fee3d});}})[_0x92fc('0x14')](function(){_0x50c66e[_0x92fc('0x57')](function(_0x33b990){socket['emit']('userWhatsappQueue:remove',{'UserId':_0x33b990,'WhatsappQueueId':_0xebd763['id']});});});});});});})[_0x92fc('0x14')](respondWithStatusCode(_0x117183,null))[_0x92fc('0x33')](handleError(_0x117183,null));};exports[_0x92fc('0x6e')]=function(_0x38febe,_0x5d9b9b){return db[_0x92fc('0x23')]['find']({'where':{'id':_0x38febe[_0x92fc('0x4e')]['id']}})[_0x92fc('0x14')](handleEntityNotFound(_0x5d9b9b,null))[_0x92fc('0x14')](function(_0x43f669){if(_0x43f669){return _0x43f669['addAgents'](_0x38febe[_0x92fc('0x39')][_0x92fc('0x52')],_[_0x92fc('0x6f')](_0x38febe[_0x92fc('0x39')],['ids','id'])||{})[_0x92fc('0x70')](function(_0x7383f9){for(var _0x3bd74a=0x0;_0x3bd74a<_0x38febe[_0x92fc('0x39')][_0x92fc('0x52')][_0x92fc('0x2f')];_0x3bd74a+=0x1){socket[_0x92fc('0x58')](_0x92fc('0x59'),{'UserId':Number(_0x38febe[_0x92fc('0x39')][_0x92fc('0x52')][_0x3bd74a]),'WhatsappQueueId':Number(_0x38febe[_0x92fc('0x4e')]['id'])});}return _0x7383f9;});}})[_0x92fc('0x14')](respondWithResult(_0x5d9b9b,null))[_0x92fc('0x33')](handleError(_0x5d9b9b,null));};exports['removeAgents']=function(_0x431dd5,_0x5f26a4){return db['WhatsappQueue'][_0x92fc('0x32')]({'where':{'id':_0x431dd5[_0x92fc('0x4e')]['id']}})[_0x92fc('0x14')](handleEntityNotFound(_0x5f26a4,null))[_0x92fc('0x14')](function(_0x1b4dbb){if(_0x1b4dbb){return _0x1b4dbb[_0x92fc('0x6d')](_0x431dd5[_0x92fc('0x25')]['ids'])[_0x92fc('0x14')](function(){if(_['isArray'](_0x431dd5[_0x92fc('0x25')][_0x92fc('0x52')])){for(var _0x5a8f47=0x0;_0x5a8f47<_0x431dd5['query']['ids'][_0x92fc('0x2f')];_0x5a8f47+=0x1){socket['emit'](_0x92fc('0x71'),{'UserId':Number(_0x431dd5[_0x92fc('0x25')][_0x92fc('0x52')][_0x5a8f47]),'WhatsappQueueId':Number(_0x431dd5['params']['id'])});}}else{socket[_0x92fc('0x58')](_0x92fc('0x71'),{'UserId':Number(_0x431dd5[_0x92fc('0x25')][_0x92fc('0x52')]),'WhatsappQueueId':Number(_0x431dd5[_0x92fc('0x4e')]['id'])});}});}})[_0x92fc('0x14')](respondWithStatusCode(_0x5f26a4,null))[_0x92fc('0x33')](handleError(_0x5f26a4,null));};exports['getAgents']=function(_0x5725f9,_0x2351ff){var _0x53e9b4={};var _0x14365d={};var _0x52a20d;var _0x227a7f;return db[_0x92fc('0x23')][_0x92fc('0x4d')]({'where':{'id':_0x5725f9['params']['id']}})['then'](handleEntityNotFound(_0x2351ff,null))['then'](function(_0xb9bfea){if(_0xb9bfea){_0x52a20d=_0xb9bfea;_0x14365d['model']=_['keys'](db[_0x92fc('0x46')][_0x92fc('0x1e')]);_0x14365d[_0x92fc('0x25')]=_['keys'](_0x5725f9['query']);_0x14365d[_0x92fc('0x2b')]=_['intersection'](_0x14365d[_0x92fc('0x29')],_0x14365d[_0x92fc('0x25')]);_0x53e9b4[_0x92fc('0x2d')]=_[_0x92fc('0x2c')](_0x14365d['model'],qs[_0x92fc('0x2e')](_0x5725f9['query'][_0x92fc('0x2e')]));_0x53e9b4['attributes']=_0x53e9b4['attributes']['length']?_0x53e9b4[_0x92fc('0x2d')]:_0x14365d['model'];_0x53e9b4['order']=qs[_0x92fc('0x40')](_0x5725f9['query'][_0x92fc('0x40')]);_0x53e9b4[_0x92fc('0x42')]=qs[_0x92fc('0x2b')](_[_0x92fc('0x41')](_0x5725f9[_0x92fc('0x25')],_0x14365d['filters']));if(_0x5725f9[_0x92fc('0x25')][_0x92fc('0x44')]){_0x53e9b4[_0x92fc('0x42')]=_[_0x92fc('0x45')](_0x53e9b4['where'],{'$or':_['map'](_0x53e9b4[_0x92fc('0x2d')],function(_0x46a38e){var _0x5d968b={};_0x5d968b[_0x46a38e]={'$like':'%'+_0x5725f9[_0x92fc('0x25')][_0x92fc('0x44')]+'%'};return _0x5d968b;})});}_0x53e9b4=_[_0x92fc('0x45')]({},_0x53e9b4,_0x5725f9[_0x92fc('0x31')]);return _0x52a20d[_0x92fc('0x72')](_0x53e9b4);}})[_0x92fc('0x14')](function(_0x471646){if(_0x471646){_0x227a7f=_0x471646[_0x92fc('0x2f')];if(!_0x5725f9[_0x92fc('0x25')]['hasOwnProperty']('nolimit')){_0x53e9b4[_0x92fc('0xe')]=qs[_0x92fc('0xe')](_0x5725f9[_0x92fc('0x25')]['limit']);_0x53e9b4[_0x92fc('0xc')]=qs[_0x92fc('0xc')](_0x5725f9[_0x92fc('0x25')][_0x92fc('0xc')]);}return _0x52a20d[_0x92fc('0x72')](_0x53e9b4);}})['then'](function(_0x4d7c01){if(_0x4d7c01){return _0x4d7c01?{'count':_0x227a7f,'rows':_0x4d7c01}:null;}})['then'](respondWithResult(_0x2351ff,null))[_0x92fc('0x33')](handleError(_0x2351ff,null));};
\ No newline at end of file
+var _0x4b12=['../../config/environment','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','sendStatus','status','json','undefined','limit','set','then','destroy','get','WhatsappQueues','error','stack','name','send','index','WhatsappQueue','rawAttributes','fieldName','type','key','getOptions','where','include','query','findAll','rows','catch','show','params','model','keys','filters','fields','attributes','length','includeAll','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','UserWhatsappQueue','intersection','hasOwnProperty','nolimit','offset','order','sort','WhatsappQueueId','filter','merge','User','map','UserId','agent','whatsappPause','createdAt','count','format','%s/%s','SIP','updatedAt','getTeams','addTeams','ids','Team','Agents','voicePause','interface','flatMap','sequelize','each','findOrCreate','forEach','emit','userWhatsappQueue:save','removeTeams','select','field','from','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','SELECT','TeamId','includes','union','compact','value','isEmpty','userWhatsappQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','pick','bluebird','util','ioredis','../../components/parsers/qs','../../config/logger','api'];(function(_0x2425ed,_0x3a6637){var _0x8ce321=function(_0x3bcef7){while(--_0x3bcef7){_0x2425ed['push'](_0x2425ed['shift']());}};_0x8ce321(++_0x3a6637);}(_0x4b12,0x77));var _0x24b1=function(_0x460e68,_0x2e804d){_0x460e68=_0x460e68-0x0;var _0x5948f6=_0x4b12[_0x460e68];return _0x5948f6;};'use strict';var BPromise=require(_0x24b1('0x0'));var util=require(_0x24b1('0x1'));var _=require('lodash');var squel=require('squel');var Redis=require(_0x24b1('0x2'));var qs=require(_0x24b1('0x3'));var logger=require(_0x24b1('0x4'))(_0x24b1('0x5'));var config=require(_0x24b1('0x6'));var db=require('../../mysqldb')['db'];config[_0x24b1('0x7')]=_[_0x24b1('0x8')](config[_0x24b1('0x7')],{'host':_0x24b1('0x9'),'port':0x18eb});var socket=require(_0x24b1('0xa'))(new Redis(config[_0x24b1('0x7')]));require(_0x24b1('0xb'))[_0x24b1('0xc')](socket);function respondWithStatusCode(_0x27f44e,_0x32267b){_0x32267b=_0x32267b||0xcc;return function(_0x2a1d0e){if(_0x2a1d0e){return _0x27f44e[_0x24b1('0xd')](_0x32267b);}return _0x27f44e[_0x24b1('0xe')](_0x32267b)['end']();};}function respondWithResult(_0x1ab428,_0x291165){_0x291165=_0x291165||0xc8;return function(_0x3d2d99){if(_0x3d2d99){return _0x1ab428['status'](_0x291165)[_0x24b1('0xf')](_0x3d2d99);}};}function respondWithFilteredResult(_0x551351,_0x3ba3a1){return function(_0x2fd0d7){if(_0x2fd0d7){var _0x2fa20f=typeof _0x3ba3a1['offset']===_0x24b1('0x10')&&typeof _0x3ba3a1[_0x24b1('0x11')]===_0x24b1('0x10');var _0x5cac77=_0x2fd0d7['count'];var _0x580e6d=_0x2fa20f?0x0:_0x3ba3a1['offset'];var _0xd6d551=_0x2fa20f?_0x2fd0d7['count']:_0x3ba3a1['offset']+_0x3ba3a1[_0x24b1('0x11')];var _0x5b4383;if(_0xd6d551>=_0x5cac77){_0xd6d551=_0x5cac77;_0x5b4383=0xc8;}else{_0x5b4383=0xce;}_0x551351[_0x24b1('0xe')](_0x5b4383);return _0x551351[_0x24b1('0x12')]('Content-Range',_0x580e6d+'-'+_0xd6d551+'/'+_0x5cac77)[_0x24b1('0xf')](_0x2fd0d7);}return null;};}function saveUpdates(_0x406311){return function(_0x3828e9){if(_0x3828e9){return _0x3828e9['update'](_0x406311)[_0x24b1('0x13')](function(_0x2be448){return _0x2be448;});}return null;};}function removeEntity(_0x68c10){return function(_0x44f8fa){if(_0x44f8fa){return _0x44f8fa[_0x24b1('0x14')]()[_0x24b1('0x13')](function(){var _0x5e29f7=_0x44f8fa[_0x24b1('0x15')]({'plain':!![]});var _0x59c5e6=_0x24b1('0x16');return db['UserProfileResource'][_0x24b1('0x14')]({'where':{'type':_0x59c5e6,'resourceId':_0x5e29f7['id']}})['then'](function(){return _0x44f8fa;});})['then'](function(){_0x68c10[_0x24b1('0xe')](0xcc)['end']();});}};}function handleEntityNotFound(_0x207e32){return function(_0x29301b){if(!_0x29301b){_0x207e32[_0x24b1('0xd')](0x194);}return _0x29301b;};}function handleError(_0xf92924,_0x4beab0){_0x4beab0=_0x4beab0||0x1f4;return function(_0x4d7e3f){logger[_0x24b1('0x17')](_0x4d7e3f[_0x24b1('0x18')]);if(_0x4d7e3f[_0x24b1('0x19')]){delete _0x4d7e3f[_0x24b1('0x19')];}_0xf92924[_0x24b1('0xe')](_0x4beab0)[_0x24b1('0x1a')](_0x4d7e3f);};}exports[_0x24b1('0x1b')]=function(_0x3a01e7,_0x3c9edc){var _0x5a2b90={};var _0x444b1e={'count':0x0,'rows':[]};var _0x5c7f26=_['map'](db[_0x24b1('0x1c')][_0x24b1('0x1d')],function(_0x5e383d){return{'name':_0x5e383d[_0x24b1('0x1e')],'type':_0x5e383d[_0x24b1('0x1f')][_0x24b1('0x20')]};});_0x5a2b90=qs[_0x24b1('0x21')](_0x5c7f26,_0x3a01e7);var _0x569b29={'where':_0x5a2b90[_0x24b1('0x22')]};return db[_0x24b1('0x1c')]['count'](_0x569b29)[_0x24b1('0x13')](function(_0x10e222){_0x444b1e['count']=_0x10e222;_0x5a2b90['include']=qs[_0x24b1('0x23')](_0x3a01e7[_0x24b1('0x24')]);return db[_0x24b1('0x1c')][_0x24b1('0x25')](_0x5a2b90);})[_0x24b1('0x13')](function(_0x3e507b){_0x444b1e[_0x24b1('0x26')]=_0x3e507b;return _0x444b1e;})[_0x24b1('0x13')](respondWithFilteredResult(_0x3c9edc,_0x5a2b90))[_0x24b1('0x27')](handleError(_0x3c9edc,null));};exports[_0x24b1('0x28')]=function(_0x2d2981,_0x234a26){var _0x1cfb21={'raw':!![],'where':{'id':_0x2d2981[_0x24b1('0x29')]['id']}},_0x20b4a0={};_0x20b4a0[_0x24b1('0x2a')]=_[_0x24b1('0x2b')](db[_0x24b1('0x1c')][_0x24b1('0x1d')]);_0x20b4a0[_0x24b1('0x24')]=_[_0x24b1('0x2b')](_0x2d2981['query']);_0x20b4a0[_0x24b1('0x2c')]=_['intersection'](_0x20b4a0['model'],_0x20b4a0[_0x24b1('0x24')]);_0x1cfb21['attributes']=_['intersection'](_0x20b4a0[_0x24b1('0x2a')],qs['fields'](_0x2d2981[_0x24b1('0x24')][_0x24b1('0x2d')]));_0x1cfb21[_0x24b1('0x2e')]=_0x1cfb21[_0x24b1('0x2e')][_0x24b1('0x2f')]?_0x1cfb21[_0x24b1('0x2e')]:_0x20b4a0[_0x24b1('0x2a')];if(_0x2d2981['query'][_0x24b1('0x30')]){_0x1cfb21['include']=[{'all':!![]}];}_0x1cfb21=_['merge']({},_0x1cfb21,_0x2d2981[_0x24b1('0x31')]);return db[_0x24b1('0x1c')][_0x24b1('0x32')](_0x1cfb21)['then'](handleEntityNotFound(_0x234a26,null))[_0x24b1('0x13')](respondWithResult(_0x234a26,null))['catch'](handleError(_0x234a26,null));};exports[_0x24b1('0x33')]=function(_0x390565,_0xe8762e){return db['WhatsappQueue']['create'](_0x390565['body'],{})[_0x24b1('0x13')](function(_0x435c74){var _0x189ca0=_0x390565[_0x24b1('0x34')][_0x24b1('0x15')]({'plain':!![]});if(!_0x189ca0)throw new Error(_0x24b1('0x35'));if(_0x189ca0['role']===_0x24b1('0x34')){var _0x86b806=_0x435c74[_0x24b1('0x15')]({'plain':!![]});var _0x52ca84=_0x24b1('0x16');return db[_0x24b1('0x36')][_0x24b1('0x32')]({'where':{'name':_0x52ca84,'userProfileId':_0x189ca0[_0x24b1('0x37')]},'raw':!![]})[_0x24b1('0x13')](function(_0x3831ff){if(_0x3831ff&&_0x3831ff['autoAssociation']===0x0){return db[_0x24b1('0x38')][_0x24b1('0x33')]({'name':_0x86b806[_0x24b1('0x19')],'resourceId':_0x86b806['id'],'type':_0x3831ff[_0x24b1('0x19')],'sectionId':_0x3831ff['id']},{})['then'](function(){return _0x435c74;});}else{return _0x435c74;}})[_0x24b1('0x27')](function(_0x475f22){logger['error'](_0x24b1('0x39'),_0x475f22);throw _0x475f22;});}return _0x435c74;})[_0x24b1('0x13')](respondWithResult(_0xe8762e,0xc9))[_0x24b1('0x27')](handleError(_0xe8762e,null));};exports['update']=function(_0x51bbe3,_0x43f94f){if(_0x51bbe3[_0x24b1('0x3a')]['id']){delete _0x51bbe3[_0x24b1('0x3a')]['id'];}return db[_0x24b1('0x1c')]['find']({'where':{'id':_0x51bbe3['params']['id']}})[_0x24b1('0x13')](handleEntityNotFound(_0x43f94f,null))[_0x24b1('0x13')](saveUpdates(_0x51bbe3['body'],null))[_0x24b1('0x13')](respondWithResult(_0x43f94f,null))['catch'](handleError(_0x43f94f,null));};exports['destroy']=function(_0xf66613,_0x46071b){return db[_0x24b1('0x1c')][_0x24b1('0x32')]({'where':{'id':_0xf66613['params']['id']}})[_0x24b1('0x13')](handleEntityNotFound(_0x46071b,null))[_0x24b1('0x13')](removeEntity(_0x46071b,null))[_0x24b1('0x27')](handleError(_0x46071b,null));};exports['describe']=function(_0x2bc7c7,_0x5b0c20){return db[_0x24b1('0x1c')][_0x24b1('0x3b')]()[_0x24b1('0x13')](respondWithResult(_0x5b0c20,null))[_0x24b1('0x27')](handleError(_0x5b0c20,null));};exports[_0x24b1('0x3c')]=function(_0x585e3b,_0x339a40){var _0x32d693={'raw':!![],'where':{}},_0x124b86={},_0x5b6a75;return db['WhatsappQueue'][_0x24b1('0x3d')]({'where':{'id':_0x585e3b[_0x24b1('0x29')]['id']}})[_0x24b1('0x13')](handleEntityNotFound(_0x339a40,null))[_0x24b1('0x13')](function(_0x40a9a6){if(_0x40a9a6){_0x5b6a75=_0x40a9a6['get']({'plain':!![]});_0x124b86[_0x24b1('0x2a')]=_['keys'](db[_0x24b1('0x3e')][_0x24b1('0x1d')]);_0x124b86[_0x24b1('0x24')]=_[_0x24b1('0x2b')](_0x585e3b[_0x24b1('0x24')]);_0x124b86[_0x24b1('0x2c')]=_[_0x24b1('0x3f')](_0x124b86[_0x24b1('0x2a')],_0x124b86[_0x24b1('0x24')]);_0x32d693[_0x24b1('0x2e')]=_[_0x24b1('0x3f')](_0x124b86['model'],qs[_0x24b1('0x2d')](_0x585e3b['query'][_0x24b1('0x2d')]));_0x32d693[_0x24b1('0x2e')]=_0x32d693['attributes'][_0x24b1('0x2f')]?_0x32d693[_0x24b1('0x2e')]:_0x124b86['model'];if(!_0x585e3b[_0x24b1('0x24')][_0x24b1('0x40')](_0x24b1('0x41'))){_0x32d693[_0x24b1('0x11')]=qs[_0x24b1('0x11')](_0x585e3b[_0x24b1('0x24')]['limit']);_0x32d693[_0x24b1('0x42')]=qs[_0x24b1('0x42')](_0x585e3b[_0x24b1('0x24')][_0x24b1('0x42')]);}_0x32d693[_0x24b1('0x43')]=qs[_0x24b1('0x44')](_0x585e3b[_0x24b1('0x24')][_0x24b1('0x44')]);_0x32d693[_0x24b1('0x22')]=qs[_0x24b1('0x2c')](_['pick'](_0x585e3b['query'],_0x124b86[_0x24b1('0x2c')]));_0x32d693[_0x24b1('0x22')][_0x24b1('0x45')]=_0x40a9a6['id'];if(_0x585e3b['query'][_0x24b1('0x46')]){_0x32d693[_0x24b1('0x22')]=_[_0x24b1('0x47')](_0x32d693[_0x24b1('0x22')],{'$or':_['map'](_0x32d693[_0x24b1('0x2e')],function(_0x588c6c){var _0x4e19f7={};_0x4e19f7[_0x588c6c]={'$like':'%'+_0x585e3b[_0x24b1('0x24')][_0x24b1('0x46')]+'%'};return _0x4e19f7;})});}_0x32d693=_['merge']({},_0x32d693,_0x585e3b[_0x24b1('0x31')]);return db[_0x24b1('0x3e')][_0x24b1('0x25')](_0x32d693);}})[_0x24b1('0x13')](function(_0x4ad65a){if(_0x4ad65a){return db[_0x24b1('0x48')]['findAndCountAll']({'where':{'id':_[_0x24b1('0x49')](_0x4ad65a,_0x24b1('0x4a')),'role':_0x24b1('0x4b')},'attributes':['id',_0x24b1('0x19'),_0x24b1('0x4c'),'updatedAt',_0x24b1('0x4d')]});}})[_0x24b1('0x13')](function(_0x20203c){if(_0x20203c){return{'count':_0x20203c[_0x24b1('0x4e')],'rows':_['map'](_0x20203c['rows'],function(_0x24b292){return{'membername':_0x24b292[_0x24b1('0x19')],'UserId':_0x24b292['id'],'queue_name':_0x5b6a75['name'],'WhatsappQueueId':_0x5b6a75['id'],'interface':util[_0x24b1('0x4f')](_0x24b1('0x50'),_0x24b1('0x51'),_0x24b292[_0x24b1('0x19')]),'penalty':0x0,'paused':_0x24b292[_0x24b1('0x4c')],'createdAt':_0x24b292[_0x24b1('0x4d')],'updatedAt':_0x24b292[_0x24b1('0x52')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x24b1('0x13')](respondWithFilteredResult(_0x339a40,_0x32d693))[_0x24b1('0x27')](handleError(_0x339a40,null));};exports[_0x24b1('0x53')]=function(_0x2aa47b,_0x54a297){var _0x3dd992={};var _0x46be1c={};var _0x214dd8;var _0x15702b;return db[_0x24b1('0x1c')][_0x24b1('0x3d')]({'where':{'id':_0x2aa47b[_0x24b1('0x29')]['id']}})[_0x24b1('0x13')](handleEntityNotFound(_0x54a297,null))['then'](function(_0x5d7369){if(_0x5d7369){_0x214dd8=_0x5d7369;_0x46be1c[_0x24b1('0x2a')]=_['keys'](db['Team'][_0x24b1('0x1d')]);_0x46be1c[_0x24b1('0x24')]=_[_0x24b1('0x2b')](_0x2aa47b[_0x24b1('0x24')]);_0x46be1c['filters']=_['intersection'](_0x46be1c[_0x24b1('0x2a')],_0x46be1c[_0x24b1('0x24')]);_0x3dd992[_0x24b1('0x2e')]=_['intersection'](_0x46be1c[_0x24b1('0x2a')],qs[_0x24b1('0x2d')](_0x2aa47b[_0x24b1('0x24')][_0x24b1('0x2d')]));_0x3dd992['attributes']=_0x3dd992[_0x24b1('0x2e')][_0x24b1('0x2f')]?_0x3dd992[_0x24b1('0x2e')]:_0x46be1c[_0x24b1('0x2a')];_0x3dd992['order']=qs[_0x24b1('0x44')](_0x2aa47b[_0x24b1('0x24')][_0x24b1('0x44')]);_0x3dd992['where']=qs[_0x24b1('0x2c')](_['pick'](_0x2aa47b['query'],_0x46be1c['filters']));if(_0x2aa47b[_0x24b1('0x24')][_0x24b1('0x46')]){_0x3dd992[_0x24b1('0x22')]=_[_0x24b1('0x47')](_0x3dd992[_0x24b1('0x22')],{'$or':_['map'](_0x3dd992['attributes'],function(_0x252662){var _0x555b5f={};_0x555b5f[_0x252662]={'$like':'%'+_0x2aa47b[_0x24b1('0x24')][_0x24b1('0x46')]+'%'};return _0x555b5f;})});}_0x3dd992=_[_0x24b1('0x47')]({},_0x3dd992,_0x2aa47b['options']);return _0x214dd8[_0x24b1('0x53')](_0x3dd992);}})[_0x24b1('0x13')](function(_0x4f47ef){if(_0x4f47ef){_0x15702b=_0x4f47ef[_0x24b1('0x2f')];if(!_0x2aa47b[_0x24b1('0x24')][_0x24b1('0x40')](_0x24b1('0x41'))){_0x3dd992['limit']=qs[_0x24b1('0x11')](_0x2aa47b['query'][_0x24b1('0x11')]);_0x3dd992[_0x24b1('0x42')]=qs['offset'](_0x2aa47b[_0x24b1('0x24')][_0x24b1('0x42')]);}return _0x214dd8[_0x24b1('0x53')](_0x3dd992);}})[_0x24b1('0x13')](function(_0x404bc5){if(_0x404bc5){return _0x404bc5?{'count':_0x15702b,'rows':_0x404bc5}:null;}})[_0x24b1('0x13')](respondWithResult(_0x54a297,null))[_0x24b1('0x27')](handleError(_0x54a297,null));};exports[_0x24b1('0x54')]=function(_0x8da776,_0x35ca37){var _0x56e8ca=_0x8da776[_0x24b1('0x3a')][_0x24b1('0x55')];return db[_0x24b1('0x56')][_0x24b1('0x25')]({'where':{'id':_0x56e8ca},'attributes':['id'],'include':[{'model':db['User'],'as':_0x24b1('0x57'),'attributes':['id','name','online',_0x24b1('0x58'),_0x24b1('0x59')],'raw':!![]}]})[_0x24b1('0x13')](function(_0x41f351){if(_0x41f351){var _0x4e5cf4=_[_0x24b1('0x5a')](_0x41f351,function(_0x5602a2){var _0x55087c=_0x5602a2['get']({'plain':!![]});return _0x55087c[_0x24b1('0x57')];});return db[_0x24b1('0x1c')][_0x24b1('0x32')]({'where':{'id':_0x8da776['params']['id']}})[_0x24b1('0x13')](function(_0x4a65e4){return db[_0x24b1('0x5b')]['transaction'](function(_0x104749){return _0x4a65e4[_0x24b1('0x54')](_0x56e8ca,{'transaction':_0x104749})[_0x24b1('0x13')](function(){return BPromise[_0x24b1('0x5c')](_0x4e5cf4,function(_0x272eec){return db[_0x24b1('0x3e')][_0x24b1('0x5d')]({'where':{'UserId':_0x272eec['id'],'WhatsappQueueId':_0x8da776[_0x24b1('0x29')]['id']},'transaction':_0x104749});});})[_0x24b1('0x13')](function(){_0x4e5cf4[_0x24b1('0x5e')](function(_0x4552e2){socket[_0x24b1('0x5f')](_0x24b1('0x60'),{'UserId':_0x4552e2['id'],'WhatsappQueueId':_0x4a65e4['id']});});});});});}})['then'](respondWithStatusCode(_0x35ca37,null))['catch'](handleError(_0x35ca37,null));};exports[_0x24b1('0x61')]=function(_0x3b9f7a,_0x5bb219){return db[_0x24b1('0x56')]['findAll']({'where':{'id':_0x3b9f7a[_0x24b1('0x24')][_0x24b1('0x55')]},'attributes':['id'],'include':[{'model':db[_0x24b1('0x48')],'as':_0x24b1('0x57'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x5bb219,null))['then'](function(_0x1469f8){var _0x3073aa=_['map'](_0x1469f8,'id');var _0x365d8f=[];var _0x2c413a=[];var _0x40393d=squel[_0x24b1('0x62')]();_0x40393d[_0x24b1('0x63')]('tq.TeamId')[_0x24b1('0x64')](_0x24b1('0x65'),'tq')[_0x24b1('0x66')](_0x24b1('0x67'),'ut',_0x24b1('0x68'))[_0x24b1('0x22')](_0x24b1('0x69'),_0x3b9f7a[_0x24b1('0x29')]['id']);for(var _0x5cf96b=0x0;_0x5cf96b<_0x1469f8[_0x24b1('0x2f')];_0x5cf96b+=0x1){let _0x588fbe=_0x1469f8[_0x5cf96b];for(var _0x45a852=0x0;_0x45a852<_0x588fbe[_0x24b1('0x57')][_0x24b1('0x2f')];_0x45a852+=0x1){let _0x258fd0=_0x588fbe[_0x24b1('0x57')][_0x45a852];var _0xf81d81=_0x40393d[_0x24b1('0x6a')]();_0xf81d81[_0x24b1('0x22')](_0x24b1('0x6b'),_0x258fd0['id']);_0x2c413a[_0x24b1('0x6c')](db[_0x24b1('0x5b')][_0x24b1('0x24')](_0xf81d81[_0x24b1('0x6d')](),{'type':db[_0x24b1('0x5b')]['QueryTypes'][_0x24b1('0x6e')]})[_0x24b1('0x13')](function(_0x2f08b6){if(_0x2f08b6[_0x24b1('0x2f')]===0x1){return _0x258fd0['id'];}else{var _0x5ea094=_['every'](_['map'](_0x2f08b6,_0x24b1('0x6f')),function(_0x50242e){return _[_0x24b1('0x70')](_0x3073aa,_0x50242e);});if(_0x5ea094){return _0x258fd0['id'];}}}));}}return BPromise['all'](_0x2c413a)['then'](function(_0x8b891d){_0x365d8f=_(_0x365d8f)[_0x24b1('0x71')](_0x8b891d)[_0x24b1('0x72')]()[_0x24b1('0x73')]();return db[_0x24b1('0x1c')][_0x24b1('0x32')]({'where':{'id':_0x3b9f7a['params']['id']}})[_0x24b1('0x13')](function(_0x87eadc){return db['sequelize']['transaction'](function(_0xfcf405){return _0x87eadc[_0x24b1('0x61')](_0x3b9f7a[_0x24b1('0x24')][_0x24b1('0x55')],{'transaction':_0xfcf405})[_0x24b1('0x13')](function(){if(!_[_0x24b1('0x74')](_0x365d8f)){return _0x87eadc['removeAgents'](_0x365d8f,{'transaction':_0xfcf405});}})[_0x24b1('0x13')](function(){_0x365d8f[_0x24b1('0x5e')](function(_0x5cd976){socket['emit'](_0x24b1('0x75'),{'UserId':_0x5cd976,'WhatsappQueueId':_0x87eadc['id']});});});});});});})[_0x24b1('0x13')](respondWithStatusCode(_0x5bb219,null))['catch'](handleError(_0x5bb219,null));};exports[_0x24b1('0x76')]=function(_0x4feb70,_0x651269){return db[_0x24b1('0x1c')][_0x24b1('0x32')]({'where':{'id':_0x4feb70[_0x24b1('0x29')]['id']}})[_0x24b1('0x13')](handleEntityNotFound(_0x651269,null))[_0x24b1('0x13')](function(_0x55dcf0){if(_0x55dcf0){return _0x55dcf0['addAgents'](_0x4feb70['body'][_0x24b1('0x55')],_[_0x24b1('0x77')](_0x4feb70[_0x24b1('0x3a')],[_0x24b1('0x55'),'id'])||{})[_0x24b1('0x78')](function(_0xbf9cba){for(var _0x46c03b=0x0;_0x46c03b<_0x4feb70['body']['ids']['length'];_0x46c03b+=0x1){socket['emit'](_0x24b1('0x60'),{'UserId':Number(_0x4feb70[_0x24b1('0x3a')][_0x24b1('0x55')][_0x46c03b]),'WhatsappQueueId':Number(_0x4feb70['params']['id'])});}return _0xbf9cba;});}})[_0x24b1('0x13')](respondWithResult(_0x651269,null))[_0x24b1('0x27')](handleError(_0x651269,null));};exports[_0x24b1('0x79')]=function(_0x6de580,_0x58988a){return db[_0x24b1('0x1c')][_0x24b1('0x32')]({'where':{'id':_0x6de580[_0x24b1('0x29')]['id']}})[_0x24b1('0x13')](handleEntityNotFound(_0x58988a,null))[_0x24b1('0x13')](function(_0x47cea1){if(_0x47cea1){return _0x47cea1[_0x24b1('0x79')](_0x6de580[_0x24b1('0x24')][_0x24b1('0x55')])['then'](function(){if(_[_0x24b1('0x7a')](_0x6de580[_0x24b1('0x24')][_0x24b1('0x55')])){for(var _0x3f3693=0x0;_0x3f3693<_0x6de580[_0x24b1('0x24')][_0x24b1('0x55')][_0x24b1('0x2f')];_0x3f3693+=0x1){socket[_0x24b1('0x5f')](_0x24b1('0x75'),{'UserId':Number(_0x6de580['query'][_0x24b1('0x55')][_0x3f3693]),'WhatsappQueueId':Number(_0x6de580[_0x24b1('0x29')]['id'])});}}else{socket['emit'](_0x24b1('0x75'),{'UserId':Number(_0x6de580['query'][_0x24b1('0x55')]),'WhatsappQueueId':Number(_0x6de580[_0x24b1('0x29')]['id'])});}});}})['then'](respondWithStatusCode(_0x58988a,null))[_0x24b1('0x27')](handleError(_0x58988a,null));};exports[_0x24b1('0x7b')]=function(_0x5163e4,_0x17c479){var _0x398b8f={};var _0x1c4987={};var _0x4ef363;var _0x368a48;return db[_0x24b1('0x1c')]['findOne']({'where':{'id':_0x5163e4[_0x24b1('0x29')]['id']}})[_0x24b1('0x13')](handleEntityNotFound(_0x17c479,null))[_0x24b1('0x13')](function(_0x24497a){if(_0x24497a){_0x4ef363=_0x24497a;_0x1c4987[_0x24b1('0x2a')]=_[_0x24b1('0x2b')](db[_0x24b1('0x48')]['rawAttributes']);_0x1c4987[_0x24b1('0x24')]=_[_0x24b1('0x2b')](_0x5163e4['query']);_0x1c4987[_0x24b1('0x2c')]=_['intersection'](_0x1c4987[_0x24b1('0x2a')],_0x1c4987['query']);_0x398b8f['attributes']=_[_0x24b1('0x3f')](_0x1c4987[_0x24b1('0x2a')],qs[_0x24b1('0x2d')](_0x5163e4[_0x24b1('0x24')][_0x24b1('0x2d')]));_0x398b8f[_0x24b1('0x2e')]=_0x398b8f[_0x24b1('0x2e')][_0x24b1('0x2f')]?_0x398b8f[_0x24b1('0x2e')]:_0x1c4987['model'];_0x398b8f['order']=qs[_0x24b1('0x44')](_0x5163e4['query']['sort']);_0x398b8f[_0x24b1('0x22')]=qs[_0x24b1('0x2c')](_[_0x24b1('0x7c')](_0x5163e4['query'],_0x1c4987['filters']));if(_0x5163e4[_0x24b1('0x24')]['filter']){_0x398b8f[_0x24b1('0x22')]=_['merge'](_0x398b8f[_0x24b1('0x22')],{'$or':_['map'](_0x398b8f[_0x24b1('0x2e')],function(_0x5489a4){var _0x5e7a71={};_0x5e7a71[_0x5489a4]={'$like':'%'+_0x5163e4[_0x24b1('0x24')][_0x24b1('0x46')]+'%'};return _0x5e7a71;})});}_0x398b8f=_[_0x24b1('0x47')]({},_0x398b8f,_0x5163e4[_0x24b1('0x31')]);return _0x4ef363[_0x24b1('0x7b')](_0x398b8f);}})[_0x24b1('0x13')](function(_0x2b055a){if(_0x2b055a){_0x368a48=_0x2b055a[_0x24b1('0x2f')];if(!_0x5163e4[_0x24b1('0x24')][_0x24b1('0x40')](_0x24b1('0x41'))){_0x398b8f[_0x24b1('0x11')]=qs[_0x24b1('0x11')](_0x5163e4[_0x24b1('0x24')][_0x24b1('0x11')]);_0x398b8f[_0x24b1('0x42')]=qs[_0x24b1('0x42')](_0x5163e4[_0x24b1('0x24')]['offset']);}return _0x4ef363['getAgents'](_0x398b8f);}})['then'](function(_0x13182d){if(_0x13182d){return _0x13182d?{'count':_0x368a48,'rows':_0x13182d}:null;}})[_0x24b1('0x13')](respondWithResult(_0x17c479,null))[_0x24b1('0x27')](handleError(_0x17c479,null));};
\ No newline at end of file
index db38b78..7f57a24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e6f=['update','remove','emit','hook','exports','events','WhatsappQueue','setMaxListeners','save'];(function(_0xf65eb3,_0x1e68ce){var _0x5a4024=function(_0x2962fc){while(--_0x2962fc){_0xf65eb3['push'](_0xf65eb3['shift']());}};_0x5a4024(++_0x1e68ce);}(_0x8e6f,0x1c7));var _0xf8e6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8e6f[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xf8e6('0x0'));var WhatsappQueue=require('../../mysqldb')['db'][_0xf8e6('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xf8e6('0x2')](0x0);var events={'afterCreate':_0xf8e6('0x3'),'afterUpdate':_0xf8e6('0x4'),'afterDestroy':_0xf8e6('0x5')};function emitEvent(_0x1ee861){return function(_0x463ddc,_0x3a0f24,_0x4020bb){WhatsappQueueEvents[_0xf8e6('0x6')](_0x1ee861+':'+_0x463ddc['id'],_0x463ddc);WhatsappQueueEvents['emit'](_0x1ee861,_0x463ddc);_0x4020bb(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0xf8e6('0x7')](e,emitEvent(event));}}module[_0xf8e6('0x8')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0x7043=['exports','events','../../mysqldb','WhatsappQueue','setMaxListeners','update','remove','emit','hasOwnProperty','hook'];(function(_0x1de21a,_0x809252){var _0x25715a=function(_0x5cf306){while(--_0x5cf306){_0x1de21a['push'](_0x1de21a['shift']());}};_0x25715a(++_0x809252);}(_0x7043,0x1b9));var _0x3704=function(_0x4178a2,_0x4c38d9){_0x4178a2=_0x4178a2-0x0;var _0x30c4e0=_0x7043[_0x4178a2];return _0x30c4e0;};'use strict';var EventEmitter=require(_0x3704('0x0'));var WhatsappQueue=require(_0x3704('0x1'))['db'][_0x3704('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0x3704('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x3704('0x4'),'afterDestroy':_0x3704('0x5')};function emitEvent(_0x1e1a0f){return function(_0xc87660,_0x418f86,_0x5ea685){WhatsappQueueEvents[_0x3704('0x6')](_0x1e1a0f+':'+_0xc87660['id'],_0xc87660);WhatsappQueueEvents[_0x3704('0x6')](_0x1e1a0f,_0xc87660);_0x5ea685(null);};}for(var e in events){if(events[_0x3704('0x7')](e)){var event=events[e];WhatsappQueue[_0x3704('0x8')](e,emitEvent(event));}}module[_0x3704('0x9')]=WhatsappQueueEvents;
\ No newline at end of file
index 3d2fec4..2cf0d6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9623=['path','../../config/environment','./whatsappQueue.attributes','exports','define','WhatsappQueue','whatsapp_queues','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x59f0dc,_0x1e2497){var _0x5b5445=function(_0x57ca91){while(--_0x57ca91){_0x59f0dc['push'](_0x59f0dc['shift']());}};_0x5b5445(++_0x1e2497);}(_0x9623,0xb0));var _0x3962=function(_0x277b25,_0x2bf168){_0x277b25=_0x277b25-0x0;var _0x31f861=_0x9623[_0x277b25];return _0x31f861;};'use strict';var _=require(_0x3962('0x0'));var util=require(_0x3962('0x1'));var logger=require(_0x3962('0x2'))(_0x3962('0x3'));var moment=require(_0x3962('0x4'));var BPromise=require('bluebird');var rp=require(_0x3962('0x5'));var fs=require('fs');var path=require(_0x3962('0x6'));var rimraf=require('rimraf');var config=require(_0x3962('0x7'));var attributes=require(_0x3962('0x8'));module[_0x3962('0x9')]=function(_0x1d34f4,_0x9f4a0){return _0x1d34f4[_0x3962('0xa')](_0x3962('0xb'),attributes,{'tableName':_0x3962('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0848=['api','moment','bluebird','path','./whatsappQueue.attributes','exports','define','whatsapp_queues','lodash','../../config/logger'];(function(_0x4120db,_0x227755){var _0x25cabb=function(_0x206d0d){while(--_0x206d0d){_0x4120db['push'](_0x4120db['shift']());}};_0x25cabb(++_0x227755);}(_0x0848,0xf8));var _0x8084=function(_0xcc85a5,_0x187fc4){_0xcc85a5=_0xcc85a5-0x0;var _0x47c2be=_0x0848[_0xcc85a5];return _0x47c2be;};'use strict';var _=require(_0x8084('0x0'));var util=require('util');var logger=require(_0x8084('0x1'))(_0x8084('0x2'));var moment=require(_0x8084('0x3'));var BPromise=require(_0x8084('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8084('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8084('0x6'));module[_0x8084('0x7')]=function(_0x11f550,_0x2b1001){return _0x11f550[_0x8084('0x8')]('WhatsappQueue',attributes,{'tableName':_0x8084('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 62bed28..1feda4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7726=['../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','WhatsappQueue,\x20%s,\x20%s','request\x20sent','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowWhatsappQueue','find','debug','lodash','util','bluebird','randomstring'];(function(_0x2d0fdf,_0x39672d){var _0x56749c=function(_0x73c663){while(--_0x73c663){_0x2d0fdf['push'](_0x2d0fdf['shift']());}};_0x56749c(++_0x39672d);}(_0x7726,0x1dc));var _0x6772=function(_0x2f8598,_0x5566ba){_0x2f8598=_0x2f8598-0x0;var _0x12a10d=_0x7726[_0x2f8598];return _0x12a10d;};'use strict';var _=require(_0x6772('0x0'));var util=require(_0x6772('0x1'));var moment=require('moment');var BPromise=require(_0x6772('0x2'));var rs=require(_0x6772('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x6772('0x4'));var logger=require(_0x6772('0x5'))('rpc');var config=require(_0x6772('0x6'));var jayson=require(_0x6772('0x7'));var client=jayson[_0x6772('0x8')][_0x6772('0x9')]({'port':0x232a});config[_0x6772('0xa')]=_[_0x6772('0xb')](config[_0x6772('0xa')],{'host':_0x6772('0xc'),'port':0x18eb});var socket=require(_0x6772('0xd'))(new Redis(config[_0x6772('0xa')]));require('./whatsappQueue.socket')[_0x6772('0xe')](socket);function respondWithRpcPromise(_0x4d79f3,_0x45b684,_0x18873e){return new BPromise(function(_0x245fec,_0x2ae96a){return client[_0x6772('0xf')](_0x4d79f3,_0x18873e)[_0x6772('0x10')](function(_0x12a3b8){logger['info'](_0x6772('0x11'),_0x45b684,_0x6772('0x12'));logger['debug'](_0x6772('0x13'),_0x45b684,'request\x20sent',JSON[_0x6772('0x14')](_0x12a3b8));if(_0x12a3b8[_0x6772('0x15')]){if(_0x12a3b8[_0x6772('0x15')][_0x6772('0x16')]===0x1f4){logger[_0x6772('0x15')](_0x6772('0x11'),_0x45b684,_0x12a3b8[_0x6772('0x15')][_0x6772('0x17')]);return _0x2ae96a(_0x12a3b8[_0x6772('0x15')]['message']);}logger[_0x6772('0x15')](_0x6772('0x11'),_0x45b684,_0x12a3b8[_0x6772('0x15')][_0x6772('0x17')]);return _0x245fec(_0x12a3b8[_0x6772('0x15')]['message']);}else{logger[_0x6772('0x18')](_0x6772('0x11'),_0x45b684,'request\x20sent');_0x245fec(_0x12a3b8['result'][_0x6772('0x17')]);}})[_0x6772('0x19')](function(_0x31366d){logger['error'](_0x6772('0x11'),_0x45b684,_0x31366d);_0x2ae96a(_0x31366d);});});}exports[_0x6772('0x1a')]=function(_0x1629c1){var _0x89f28=this;return new Promise(function(_0x1ce848,_0x3f0fc9){return db[_0x6772('0x1b')][_0x6772('0x1c')]({'raw':_0x1629c1['options']?_0x1629c1[_0x6772('0x1d')][_0x6772('0x1e')]===undefined?!![]:![]:!![],'where':_0x1629c1['options']?_0x1629c1[_0x6772('0x1d')][_0x6772('0x1f')]||null:null,'attributes':_0x1629c1[_0x6772('0x1d')]?_0x1629c1['options'][_0x6772('0x20')]||null:null,'limit':_0x1629c1[_0x6772('0x1d')]?_0x1629c1[_0x6772('0x1d')][_0x6772('0x21')]||null:null,'include':_0x1629c1['options']?_0x1629c1[_0x6772('0x1d')][_0x6772('0x22')]?_[_0x6772('0x23')](_0x1629c1[_0x6772('0x1d')][_0x6772('0x22')],function(_0x5c6a0b){return{'model':db[_0x5c6a0b[_0x6772('0x24')]],'as':_0x5c6a0b['as'],'attributes':_0x5c6a0b[_0x6772('0x20')],'include':_0x5c6a0b[_0x6772('0x22')]?_['map'](_0x5c6a0b[_0x6772('0x22')],function(_0x2c4023){return{'model':db[_0x2c4023['model']],'as':_0x2c4023['as'],'attributes':_0x2c4023[_0x6772('0x20')],'include':_0x2c4023[_0x6772('0x22')]?_['map'](_0x2c4023[_0x6772('0x22')],function(_0x55af15){return{'model':db[_0x55af15[_0x6772('0x24')]],'as':_0x55af15['as'],'attributes':_0x55af15[_0x6772('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x124576){logger[_0x6772('0x18')](_0x6772('0x1a'),_0x1629c1);logger['debug'](_0x6772('0x1a'),_0x1629c1,JSON[_0x6772('0x14')](_0x124576));_0x1ce848(_0x124576);})[_0x6772('0x19')](function(_0x273232){logger[_0x6772('0x15')]('GetWhatsappQueue',_0x273232[_0x6772('0x17')],_0x1629c1);_0x3f0fc9(_0x89f28[_0x6772('0x15')](0x1f4,_0x273232[_0x6772('0x17')]));});});};exports[_0x6772('0x25')]=function(_0x567103){var _0x4bccb7=this;return new Promise(function(_0x364208,_0x23cad8){return db[_0x6772('0x1b')][_0x6772('0x26')]({'raw':_0x567103[_0x6772('0x1d')]?_0x567103[_0x6772('0x1d')][_0x6772('0x1e')]===undefined?!![]:![]:!![],'where':_0x567103[_0x6772('0x1d')]?_0x567103[_0x6772('0x1d')][_0x6772('0x1f')]||null:null,'attributes':_0x567103[_0x6772('0x1d')]?_0x567103[_0x6772('0x1d')][_0x6772('0x20')]||null:null,'include':_0x567103[_0x6772('0x1d')]?_0x567103[_0x6772('0x1d')][_0x6772('0x22')]?_[_0x6772('0x23')](_0x567103[_0x6772('0x1d')][_0x6772('0x22')],function(_0x3866df){return{'model':db[_0x3866df['model']],'as':_0x3866df['as'],'attributes':_0x3866df[_0x6772('0x20')],'include':_0x3866df['include']?_[_0x6772('0x23')](_0x3866df['include'],function(_0x3a6e4a){return{'model':db[_0x3a6e4a[_0x6772('0x24')]],'as':_0x3a6e4a['as'],'attributes':_0x3a6e4a[_0x6772('0x20')],'include':_0x3a6e4a[_0x6772('0x22')]?_['map'](_0x3a6e4a[_0x6772('0x22')],function(_0xa99a56){return{'model':db[_0xa99a56[_0x6772('0x24')]],'as':_0xa99a56['as'],'attributes':_0xa99a56[_0x6772('0x20')]};}):[]};}):[]};}):[]:[]})[_0x6772('0x10')](function(_0x2a2620){logger[_0x6772('0x18')](_0x6772('0x25'),_0x567103);logger[_0x6772('0x27')](_0x6772('0x25'),_0x567103,JSON[_0x6772('0x14')](_0x2a2620));_0x364208(_0x2a2620);})[_0x6772('0x19')](function(_0x4ecbdc){logger[_0x6772('0x15')](_0x6772('0x25'),_0x4ecbdc[_0x6772('0x17')],_0x567103);_0x23cad8(_0x4bccb7[_0x6772('0x15')](0x1f4,_0x4ecbdc['message']));});});};
\ No newline at end of file
+var _0x5c6d=['message','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','where','attributes','limit','include','map','model','stringify','ShowWhatsappQueue','find','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','socket.io-emitter','./whatsappQueue.socket','register','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x39106d,_0x4d5fef){var _0x42d497=function(_0x4a239c){while(--_0x4a239c){_0x39106d['push'](_0x39106d['shift']());}};_0x42d497(++_0x4d5fef);}(_0x5c6d,0x18a));var _0xd5c6=function(_0x329e93,_0x1ab6f2){_0x329e93=_0x329e93-0x0;var _0x5d6166=_0x5c6d[_0x329e93];return _0x5d6166;};'use strict';var _=require(_0xd5c6('0x0'));var util=require(_0xd5c6('0x1'));var moment=require(_0xd5c6('0x2'));var BPromise=require(_0xd5c6('0x3'));var rs=require(_0xd5c6('0x4'));var fs=require('fs');var Redis=require(_0xd5c6('0x5'));var db=require(_0xd5c6('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xd5c6('0x7'))(_0xd5c6('0x8'));var config=require('../../config/environment');var jayson=require(_0xd5c6('0x9'));var client=jayson[_0xd5c6('0xa')][_0xd5c6('0xb')]({'port':0x232a});config[_0xd5c6('0xc')]=_[_0xd5c6('0xd')](config[_0xd5c6('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xd5c6('0xe'))(new Redis(config[_0xd5c6('0xc')]));require(_0xd5c6('0xf'))[_0xd5c6('0x10')](socket);function respondWithRpcPromise(_0xa96a3,_0x16fefd,_0x14860a){return new BPromise(function(_0x1e4fe4,_0xab0816){return client[_0xd5c6('0x11')](_0xa96a3,_0x14860a)[_0xd5c6('0x12')](function(_0x3538ec){logger[_0xd5c6('0x13')](_0xd5c6('0x14'),_0x16fefd,_0xd5c6('0x15'));logger[_0xd5c6('0x16')](_0xd5c6('0x17'),_0x16fefd,_0xd5c6('0x15'),JSON['stringify'](_0x3538ec));if(_0x3538ec['error']){if(_0x3538ec[_0xd5c6('0x18')][_0xd5c6('0x19')]===0x1f4){logger[_0xd5c6('0x18')](_0xd5c6('0x14'),_0x16fefd,_0x3538ec[_0xd5c6('0x18')]['message']);return _0xab0816(_0x3538ec[_0xd5c6('0x18')][_0xd5c6('0x1a')]);}logger[_0xd5c6('0x18')](_0xd5c6('0x14'),_0x16fefd,_0x3538ec[_0xd5c6('0x18')][_0xd5c6('0x1a')]);return _0x1e4fe4(_0x3538ec[_0xd5c6('0x18')][_0xd5c6('0x1a')]);}else{logger[_0xd5c6('0x13')]('WhatsappQueue,\x20%s,\x20%s',_0x16fefd,_0xd5c6('0x15'));_0x1e4fe4(_0x3538ec['result'][_0xd5c6('0x1a')]);}})[_0xd5c6('0x1b')](function(_0x53b44d){logger[_0xd5c6('0x18')](_0xd5c6('0x14'),_0x16fefd,_0x53b44d);_0xab0816(_0x53b44d);});});}exports[_0xd5c6('0x1c')]=function(_0x342c01){var _0x393518=this;return new Promise(function(_0x4c8864,_0x4d0a39){return db[_0xd5c6('0x1d')][_0xd5c6('0x1e')]({'raw':_0x342c01[_0xd5c6('0x1f')]?_0x342c01[_0xd5c6('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x342c01[_0xd5c6('0x1f')]?_0x342c01['options'][_0xd5c6('0x20')]||null:null,'attributes':_0x342c01['options']?_0x342c01[_0xd5c6('0x1f')][_0xd5c6('0x21')]||null:null,'limit':_0x342c01[_0xd5c6('0x1f')]?_0x342c01[_0xd5c6('0x1f')][_0xd5c6('0x22')]||null:null,'include':_0x342c01[_0xd5c6('0x1f')]?_0x342c01[_0xd5c6('0x1f')][_0xd5c6('0x23')]?_[_0xd5c6('0x24')](_0x342c01[_0xd5c6('0x1f')][_0xd5c6('0x23')],function(_0xafbeda){return{'model':db[_0xafbeda[_0xd5c6('0x25')]],'as':_0xafbeda['as'],'attributes':_0xafbeda[_0xd5c6('0x21')],'include':_0xafbeda[_0xd5c6('0x23')]?_[_0xd5c6('0x24')](_0xafbeda[_0xd5c6('0x23')],function(_0x38a8e0){return{'model':db[_0x38a8e0[_0xd5c6('0x25')]],'as':_0x38a8e0['as'],'attributes':_0x38a8e0['attributes'],'include':_0x38a8e0['include']?_[_0xd5c6('0x24')](_0x38a8e0[_0xd5c6('0x23')],function(_0x6546c5){return{'model':db[_0x6546c5[_0xd5c6('0x25')]],'as':_0x6546c5['as'],'attributes':_0x6546c5[_0xd5c6('0x21')]};}):[]};}):[]};}):[]:[]})[_0xd5c6('0x12')](function(_0x394202){logger[_0xd5c6('0x13')]('GetWhatsappQueue',_0x342c01);logger[_0xd5c6('0x16')](_0xd5c6('0x1c'),_0x342c01,JSON[_0xd5c6('0x26')](_0x394202));_0x4c8864(_0x394202);})[_0xd5c6('0x1b')](function(_0xdcbc89){logger[_0xd5c6('0x18')]('GetWhatsappQueue',_0xdcbc89['message'],_0x342c01);_0x4d0a39(_0x393518['error'](0x1f4,_0xdcbc89[_0xd5c6('0x1a')]));});});};exports[_0xd5c6('0x27')]=function(_0x30e359){var _0x3b96da=this;return new Promise(function(_0x2b17eb,_0xa1a12e){return db[_0xd5c6('0x1d')][_0xd5c6('0x28')]({'raw':_0x30e359[_0xd5c6('0x1f')]?_0x30e359[_0xd5c6('0x1f')][_0xd5c6('0x29')]===undefined?!![]:![]:!![],'where':_0x30e359[_0xd5c6('0x1f')]?_0x30e359['options']['where']||null:null,'attributes':_0x30e359[_0xd5c6('0x1f')]?_0x30e359[_0xd5c6('0x1f')][_0xd5c6('0x21')]||null:null,'include':_0x30e359[_0xd5c6('0x1f')]?_0x30e359['options'][_0xd5c6('0x23')]?_[_0xd5c6('0x24')](_0x30e359['options'][_0xd5c6('0x23')],function(_0x16a32c){return{'model':db[_0x16a32c[_0xd5c6('0x25')]],'as':_0x16a32c['as'],'attributes':_0x16a32c[_0xd5c6('0x21')],'include':_0x16a32c[_0xd5c6('0x23')]?_[_0xd5c6('0x24')](_0x16a32c[_0xd5c6('0x23')],function(_0x286802){return{'model':db[_0x286802['model']],'as':_0x286802['as'],'attributes':_0x286802['attributes'],'include':_0x286802[_0xd5c6('0x23')]?_[_0xd5c6('0x24')](_0x286802['include'],function(_0x39274d){return{'model':db[_0x39274d['model']],'as':_0x39274d['as'],'attributes':_0x39274d[_0xd5c6('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x519bc4){logger[_0xd5c6('0x13')]('ShowWhatsappQueue',_0x30e359);logger[_0xd5c6('0x16')](_0xd5c6('0x27'),_0x30e359,JSON[_0xd5c6('0x26')](_0x519bc4));_0x2b17eb(_0x519bc4);})[_0xd5c6('0x1b')](function(_0x2009d8){logger['error']('ShowWhatsappQueue',_0x2009d8[_0xd5c6('0x1a')],_0x30e359);_0xa1a12e(_0x3b96da[_0xd5c6('0x18')](0x1f4,_0x2009d8['message']));});});};
\ No newline at end of file
index 3f49611..eeab3de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6712=['length','whatsappQueue:','./whatsappQueue.events','remove'];(function(_0x500909,_0x21a57a){var _0x16f32d=function(_0xaea696){while(--_0xaea696){_0x500909['push'](_0x500909['shift']());}};_0x16f32d(++_0x21a57a);}(_0x6712,0x162));var _0x2671=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0x6712[_0x209941];return _0x1e8729;};'use strict';var WhatsappQueueEvents=require(_0x2671('0x0'));var events=['save',_0x2671('0x1'),'update'];function createListener(_0x2f940f,_0x2cad78){return function(_0x49e84d){_0x2cad78['emit'](_0x2f940f,_0x49e84d);};}function removeListener(_0x8ddd0b,_0x12fa14){return function(){WhatsappQueueEvents['removeListener'](_0x8ddd0b,_0x12fa14);};}exports['register']=function(_0x591425){for(var _0x578b79=0x0,_0x38780d=events[_0x2671('0x2')];_0x578b79<_0x38780d;_0x578b79++){var _0xb76274=events[_0x578b79];var _0x3db0ec=createListener(_0x2671('0x3')+_0xb76274,_0x591425);WhatsappQueueEvents['on'](_0xb76274,_0x3db0ec);}};
\ No newline at end of file
+var _0xeba7=['register','length','./whatsappQueue.events','save','remove','emit'];(function(_0xd5971c,_0x442146){var _0x1bf68c=function(_0x7d6970){while(--_0x7d6970){_0xd5971c['push'](_0xd5971c['shift']());}};_0x1bf68c(++_0x442146);}(_0xeba7,0xc2));var _0x7eba=function(_0x11c3fa,_0x166ca6){_0x11c3fa=_0x11c3fa-0x0;var _0x409b24=_0xeba7[_0x11c3fa];return _0x409b24;};'use strict';var WhatsappQueueEvents=require(_0x7eba('0x0'));var events=[_0x7eba('0x1'),_0x7eba('0x2'),'update'];function createListener(_0x1b967f,_0x1e7500){return function(_0x4b0ad0){_0x1e7500[_0x7eba('0x3')](_0x1b967f,_0x4b0ad0);};}function removeListener(_0x52710c,_0x4bd1fb){return function(){WhatsappQueueEvents['removeListener'](_0x52710c,_0x4bd1fb);};}exports[_0x7eba('0x4')]=function(_0x59815b){for(var _0x3a8e55=0x0,_0x5b97ef=events[_0x7eba('0x5')];_0x3a8e55<_0x5b97ef;_0x3a8e55++){var _0x1a3bb6=events[_0x3a8e55];var _0x583b67=createListener('whatsappQueue:'+_0x1a3bb6,_0x59815b);WhatsappQueueEvents['on'](_0x1a3bb6,_0x583b67);}};
\ No newline at end of file
index edbfa8b..0b1ad88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce15=['/:id','post','create','put','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./whatsappQueueReport.controller','get','/describe','isAuthenticated'];(function(_0x12efd7,_0x14202f){var _0x4bb9b2=function(_0x57e640){while(--_0x57e640){_0x12efd7['push'](_0x12efd7['shift']());}};_0x4bb9b2(++_0x14202f);}(_0xce15,0x1e2));var _0x5ce1=function(_0x30cf8d,_0x286354){_0x30cf8d=_0x30cf8d-0x0;var _0x92e924=_0xce15[_0x30cf8d];return _0x92e924;};'use strict';var multer=require(_0x5ce1('0x0'));var util=require('util');var path=require(_0x5ce1('0x1'));var timeout=require(_0x5ce1('0x2'));var express=require(_0x5ce1('0x3'));var router=express[_0x5ce1('0x4')]();var fs_extra=require(_0x5ce1('0x5'));var auth=require(_0x5ce1('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5ce1('0x7'));var controller=require(_0x5ce1('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x5ce1('0x9')](_0x5ce1('0xa'),auth[_0x5ce1('0xb')](),controller['describe']);router[_0x5ce1('0x9')](_0x5ce1('0xc'),auth[_0x5ce1('0xb')](),controller['show']);router[_0x5ce1('0xd')]('/',auth[_0x5ce1('0xb')](),controller[_0x5ce1('0xe')]);router[_0x5ce1('0xf')]('/:id',auth[_0x5ce1('0xb')](),controller['update']);router[_0x5ce1('0x10')](_0x5ce1('0xc'),auth[_0x5ce1('0xb')](),controller[_0x5ce1('0x11')]);module[_0x5ce1('0x12')]=router;
\ No newline at end of file
+var _0x6cdd=['multer','path','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','post','put','update','delete','destroy','exports'];(function(_0x508d43,_0x3d94d4){var _0x12b3b7=function(_0x5e5234){while(--_0x5e5234){_0x508d43['push'](_0x508d43['shift']());}};_0x12b3b7(++_0x3d94d4);}(_0x6cdd,0x187));var _0xd6cd=function(_0x166cf1,_0x5d8d6f){_0x166cf1=_0x166cf1-0x0;var _0x3cd44e=_0x6cdd[_0x166cf1];return _0x3cd44e;};'use strict';var multer=require(_0xd6cd('0x0'));var util=require('util');var path=require(_0xd6cd('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xd6cd('0x2')]();var fs_extra=require(_0xd6cd('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xd6cd('0x4'));var config=require(_0xd6cd('0x5'));var controller=require('./whatsappQueueReport.controller');router[_0xd6cd('0x6')]('/',auth[_0xd6cd('0x7')](),controller['index']);router[_0xd6cd('0x6')](_0xd6cd('0x8'),auth[_0xd6cd('0x7')](),controller[_0xd6cd('0x9')]);router['get'](_0xd6cd('0xa'),auth['isAuthenticated'](),controller['show']);router[_0xd6cd('0xb')]('/',auth[_0xd6cd('0x7')](),controller['create']);router[_0xd6cd('0xc')](_0xd6cd('0xa'),auth[_0xd6cd('0x7')](),controller[_0xd6cd('0xd')]);router[_0xd6cd('0xe')](_0xd6cd('0xa'),auth[_0xd6cd('0x7')](),controller[_0xd6cd('0xf')]);module[_0xd6cd('0x10')]=router;
\ No newline at end of file
index b14f4c2..b67bee7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x4e0acf,_0x304563){var _0x12258f=function(_0x304319){while(--_0x304319){_0x4e0acf['push'](_0x4e0acf['shift']());}};_0x12258f(++_0x304563);}(_0x7a54,0x106));var _0x47a5=function(_0x3222da,_0xce252e){_0x3222da=_0x3222da-0x0;var _0x165bfa=_0x7a54[_0x3222da];return _0x165bfa;};'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
+var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x2b5c1d,_0x39834f){var _0x1b1514=function(_0x2345b6){while(--_0x2345b6){_0x2b5c1d['push'](_0x2b5c1d['shift']());}};_0x1b1514(++_0x39834f);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'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
index 6177d46..5506df2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6324=['options','WhatsappQueueReport','includeAll','rows','show','keys','intersection','include','find','catch','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','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','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','index','map','rawAttributes','fieldName','model','name','query','filters','attributes','fields','length','hasOwnProperty','order','sort','pick','merge','where','type','VIRTUAL','filter'];(function(_0x3497af,_0x5ae31a){var _0xc71807=function(_0x3306e7){while(--_0x3306e7){_0x3497af['push'](_0x3497af['shift']());}};_0xc71807(++_0x5ae31a);}(_0x6324,0x142));var _0x4632=function(_0x55de53,_0x5da3e7){_0x55de53=_0x55de53-0x0;var _0x362fbe=_0x6324[_0x55de53];return _0x362fbe;};'use strict';var emlformat=require(_0x4632('0x0'));var rimraf=require(_0x4632('0x1'));var zipdir=require(_0x4632('0x2'));var jsonpatch=require(_0x4632('0x3'));var rp=require('request-promise');var moment=require(_0x4632('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x4632('0x5'));var util=require('util');var path=require(_0x4632('0x6'));var sox=require('sox');var csv=require(_0x4632('0x7'));var ejs=require(_0x4632('0x8'));var fs=require('fs');var fs_extra=require(_0x4632('0x9'));var _=require(_0x4632('0xa'));var squel=require('squel');var crypto=require(_0x4632('0xb'));var jsforce=require(_0x4632('0xc'));var deskjs=require(_0x4632('0xd'));var toCsv=require('to-csv');var querystring=require(_0x4632('0xe'));var Papa=require(_0x4632('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x4632('0x10'));var as=require(_0x4632('0x11'));var hardwareService=require(_0x4632('0x12'));var logger=require(_0x4632('0x13'))(_0x4632('0x14'));var utils=require(_0x4632('0x15'));var config=require(_0x4632('0x16'));var licenseUtil=require(_0x4632('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b3f0f,_0x499d88){_0x499d88=_0x499d88||0xcc;return function(_0x4719f7){if(_0x4719f7){return _0x2b3f0f[_0x4632('0x18')](_0x499d88);}return _0x2b3f0f[_0x4632('0x19')](_0x499d88)[_0x4632('0x1a')]();};}function respondWithResult(_0x51ee37,_0x3ba361){_0x3ba361=_0x3ba361||0xc8;return function(_0x255882){if(_0x255882){return _0x51ee37[_0x4632('0x19')](_0x3ba361)[_0x4632('0x1b')](_0x255882);}};}function respondWithFilteredResult(_0x1c1be0,_0x5438ab){return function(_0x47b349){if(_0x47b349){var _0x2fd7ae=typeof _0x5438ab[_0x4632('0x1c')]===_0x4632('0x1d')&&typeof _0x5438ab[_0x4632('0x1e')]==='undefined';var _0x158831=_0x47b349[_0x4632('0x1f')];var _0x1a94c0=_0x2fd7ae?0x0:_0x5438ab['offset'];var _0x3cddfa=_0x2fd7ae?_0x47b349[_0x4632('0x1f')]:_0x5438ab['offset']+_0x5438ab['limit'];var _0x1c0523;if(_0x3cddfa>=_0x158831){_0x3cddfa=_0x158831;_0x1c0523=0xc8;}else{_0x1c0523=0xce;}_0x1c1be0[_0x4632('0x19')](_0x1c0523);return _0x1c1be0[_0x4632('0x20')](_0x4632('0x21'),_0x1a94c0+'-'+_0x3cddfa+'/'+_0x158831)[_0x4632('0x1b')](_0x47b349);}return null;};}function patchUpdates(_0x3d2d23){return function(_0x9ab826){try{jsonpatch[_0x4632('0x22')](_0x9ab826,_0x3d2d23,!![]);}catch(_0x29f875){return BPromise[_0x4632('0x23')](_0x29f875);}return _0x9ab826[_0x4632('0x24')]();};}function saveUpdates(_0x2d656a,_0x2ca6a5){return function(_0x263907){if(_0x263907){return _0x263907[_0x4632('0x25')](_0x2d656a)[_0x4632('0x26')](function(_0x4264d5){return _0x4264d5;});}return null;};}function removeEntity(_0x3537ed,_0x380a9f){return function(_0x1e1b86){if(_0x1e1b86){return _0x1e1b86[_0x4632('0x27')]()[_0x4632('0x26')](function(){_0x3537ed[_0x4632('0x19')](0xcc)[_0x4632('0x1a')]();});}};}function handleEntityNotFound(_0xb074d,_0x1b8de0){return function(_0x4af026){if(!_0x4af026){_0xb074d[_0x4632('0x18')](0x194);}return _0x4af026;};}function handleError(_0x21118c,_0x372679){_0x372679=_0x372679||0x1f4;return function(_0x22d0f5){logger[_0x4632('0x28')](_0x22d0f5[_0x4632('0x29')]);if(_0x22d0f5['name']){delete _0x22d0f5['name'];}_0x21118c[_0x4632('0x19')](_0x372679)[_0x4632('0x2a')](_0x22d0f5);};}exports[_0x4632('0x2b')]=function(_0x35a533,_0x34079f){var _0x119d1b={},_0x3570b2={},_0x5e2ee4={'count':0x0,'rows':[]};var _0x42d505=_[_0x4632('0x2c')](db['WhatsappQueueReport'][_0x4632('0x2d')],function(_0x5316f7){return{'name':_0x5316f7[_0x4632('0x2e')],'type':_0x5316f7['type']['key']};});_0x3570b2[_0x4632('0x2f')]=_[_0x4632('0x2c')](_0x42d505,_0x4632('0x30'));_0x3570b2['query']=_['keys'](_0x35a533[_0x4632('0x31')]);_0x3570b2[_0x4632('0x32')]=_['intersection'](_0x3570b2['model'],_0x3570b2[_0x4632('0x31')]);_0x119d1b[_0x4632('0x33')]=_['intersection'](_0x3570b2[_0x4632('0x2f')],qs[_0x4632('0x34')](_0x35a533[_0x4632('0x31')][_0x4632('0x34')]));_0x119d1b[_0x4632('0x33')]=_0x119d1b['attributes'][_0x4632('0x35')]?_0x119d1b[_0x4632('0x33')]:_0x3570b2['model'];if(!_0x35a533['query'][_0x4632('0x36')]('nolimit')){_0x119d1b['limit']=qs[_0x4632('0x1e')](_0x35a533['query'][_0x4632('0x1e')]);_0x119d1b[_0x4632('0x1c')]=qs[_0x4632('0x1c')](_0x35a533['query'][_0x4632('0x1c')]);}_0x119d1b[_0x4632('0x37')]=qs[_0x4632('0x38')](_0x35a533[_0x4632('0x31')][_0x4632('0x38')]);_0x119d1b['where']=qs['filters'](_[_0x4632('0x39')](_0x35a533[_0x4632('0x31')],_0x3570b2[_0x4632('0x32')]),_0x42d505);if(_0x35a533['query']['filter']){_0x119d1b['where']=_[_0x4632('0x3a')](_0x119d1b[_0x4632('0x3b')],{'$or':_['map'](_0x42d505,function(_0x3809aa){if(_0x3809aa[_0x4632('0x3c')]!==_0x4632('0x3d')){var _0x3adf41={};_0x3adf41[_0x3809aa[_0x4632('0x30')]]={'$like':'%'+_0x35a533[_0x4632('0x31')][_0x4632('0x3e')]+'%'};return _0x3adf41;}})});}_0x119d1b=_[_0x4632('0x3a')]({},_0x119d1b,_0x35a533[_0x4632('0x3f')]);var _0x2c04a8={'where':_0x119d1b[_0x4632('0x3b')]};return db[_0x4632('0x40')]['count'](_0x2c04a8)[_0x4632('0x26')](function(_0x45bff6){_0x5e2ee4['count']=_0x45bff6;if(_0x35a533[_0x4632('0x31')][_0x4632('0x41')]){_0x119d1b['include']=[{'all':!![]}];}return db[_0x4632('0x40')]['findAll'](_0x119d1b);})[_0x4632('0x26')](function(_0x28df3b){_0x5e2ee4[_0x4632('0x42')]=_0x28df3b;return _0x5e2ee4;})[_0x4632('0x26')](respondWithFilteredResult(_0x34079f,_0x119d1b))['catch'](handleError(_0x34079f,null));};exports[_0x4632('0x43')]=function(_0x29381a,_0x23ef38){var _0x279298={'raw':!![],'where':{'id':_0x29381a['params']['id']}},_0x5cc716={};_0x5cc716[_0x4632('0x2f')]=_[_0x4632('0x44')](db[_0x4632('0x40')]['rawAttributes']);_0x5cc716[_0x4632('0x31')]=_[_0x4632('0x44')](_0x29381a[_0x4632('0x31')]);_0x5cc716[_0x4632('0x32')]=_[_0x4632('0x45')](_0x5cc716[_0x4632('0x2f')],_0x5cc716[_0x4632('0x31')]);_0x279298['attributes']=_[_0x4632('0x45')](_0x5cc716[_0x4632('0x2f')],qs[_0x4632('0x34')](_0x29381a[_0x4632('0x31')][_0x4632('0x34')]));_0x279298['attributes']=_0x279298['attributes'][_0x4632('0x35')]?_0x279298[_0x4632('0x33')]:_0x5cc716[_0x4632('0x2f')];if(_0x29381a[_0x4632('0x31')]['includeAll']){_0x279298[_0x4632('0x46')]=[{'all':!![]}];}_0x279298=_[_0x4632('0x3a')]({},_0x279298,_0x29381a[_0x4632('0x3f')]);return db[_0x4632('0x40')][_0x4632('0x47')](_0x279298)['then'](handleEntityNotFound(_0x23ef38,null))[_0x4632('0x26')](respondWithResult(_0x23ef38,null))[_0x4632('0x48')](handleError(_0x23ef38,null));};exports[_0x4632('0x49')]=function(_0xcce5db,_0x3676fa){return db[_0x4632('0x40')][_0x4632('0x49')](_0xcce5db[_0x4632('0x4a')],{})[_0x4632('0x26')](respondWithResult(_0x3676fa,0xc9))[_0x4632('0x48')](handleError(_0x3676fa,null));};exports[_0x4632('0x25')]=function(_0x517584,_0xc3ffd0){if(_0x517584[_0x4632('0x4a')]['id']){delete _0x517584[_0x4632('0x4a')]['id'];}return db['WhatsappQueueReport'][_0x4632('0x47')]({'where':{'id':_0x517584[_0x4632('0x4b')]['id']}})[_0x4632('0x26')](handleEntityNotFound(_0xc3ffd0,null))[_0x4632('0x26')](saveUpdates(_0x517584[_0x4632('0x4a')],null))[_0x4632('0x26')](respondWithResult(_0xc3ffd0,null))[_0x4632('0x48')](handleError(_0xc3ffd0,null));};exports[_0x4632('0x27')]=function(_0x1f43b6,_0x1aa831){return db['WhatsappQueueReport'][_0x4632('0x47')]({'where':{'id':_0x1f43b6[_0x4632('0x4b')]['id']}})['then'](handleEntityNotFound(_0x1aa831,null))[_0x4632('0x26')](removeEntity(_0x1aa831,null))[_0x4632('0x48')](handleError(_0x1aa831,null));};exports[_0x4632('0x4c')]=function(_0x28e7fb,_0x2c59f5){return db[_0x4632('0x40')][_0x4632('0x4c')]()[_0x4632('0x26')](respondWithResult(_0x2c59f5,null))[_0x4632('0x48')](handleError(_0x2c59f5,null));};
\ No newline at end of file
+var _0x84a0=['fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','options','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','offset','count','limit','set','Content-Range','apply','save','update','destroy','then','name','map','WhatsappQueueReport'];(function(_0x41e63c,_0x5ac5d5){var _0x46a32b=function(_0x4241d9){while(--_0x4241d9){_0x41e63c['push'](_0x41e63c['shift']());}};_0x46a32b(++_0x5ac5d5);}(_0x84a0,0x66));var _0x084a=function(_0x6e971b,_0x46e8d3){_0x6e971b=_0x6e971b-0x0;var _0x5c5945=_0x84a0[_0x6e971b];return _0x5c5945;};'use strict';var emlformat=require(_0x084a('0x0'));var rimraf=require(_0x084a('0x1'));var zipdir=require(_0x084a('0x2'));var jsonpatch=require(_0x084a('0x3'));var rp=require('request-promise');var moment=require(_0x084a('0x4'));var BPromise=require(_0x084a('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x084a('0x6'));var sox=require(_0x084a('0x7'));var csv=require('to-csv');var ejs=require(_0x084a('0x8'));var fs=require('fs');var fs_extra=require(_0x084a('0x9'));var _=require(_0x084a('0xa'));var squel=require(_0x084a('0xb'));var crypto=require(_0x084a('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x084a('0xd'));var toCsv=require(_0x084a('0xe'));var querystring=require(_0x084a('0xf'));var Papa=require(_0x084a('0x10'));var Redis=require(_0x084a('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x084a('0x12'));var hardwareService=require(_0x084a('0x13'));var logger=require(_0x084a('0x14'))(_0x084a('0x15'));var utils=require(_0x084a('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x084a('0x17'))['db'];function respondWithStatusCode(_0x3ca72f,_0xec90a5){_0xec90a5=_0xec90a5||0xcc;return function(_0x9245b1){if(_0x9245b1){return _0x3ca72f[_0x084a('0x18')](_0xec90a5);}return _0x3ca72f[_0x084a('0x19')](_0xec90a5)[_0x084a('0x1a')]();};}function respondWithResult(_0x3a76d1,_0x5aef40){_0x5aef40=_0x5aef40||0xc8;return function(_0x4277c9){if(_0x4277c9){return _0x3a76d1['status'](_0x5aef40)[_0x084a('0x1b')](_0x4277c9);}};}function respondWithFilteredResult(_0x3ccaca,_0x366624){return function(_0x2d35b8){if(_0x2d35b8){var _0xd20527=typeof _0x366624['offset']===_0x084a('0x1c')&&typeof _0x366624['limit']===_0x084a('0x1c');var _0x355b45=_0x2d35b8['count'];var _0xf2c333=_0xd20527?0x0:_0x366624[_0x084a('0x1d')];var _0x4134b9=_0xd20527?_0x2d35b8[_0x084a('0x1e')]:_0x366624[_0x084a('0x1d')]+_0x366624[_0x084a('0x1f')];var _0x447a19;if(_0x4134b9>=_0x355b45){_0x4134b9=_0x355b45;_0x447a19=0xc8;}else{_0x447a19=0xce;}_0x3ccaca[_0x084a('0x19')](_0x447a19);return _0x3ccaca[_0x084a('0x20')](_0x084a('0x21'),_0xf2c333+'-'+_0x4134b9+'/'+_0x355b45)[_0x084a('0x1b')](_0x2d35b8);}return null;};}function patchUpdates(_0x279e25){return function(_0x116328){try{jsonpatch[_0x084a('0x22')](_0x116328,_0x279e25,!![]);}catch(_0xf0dd98){return BPromise['reject'](_0xf0dd98);}return _0x116328[_0x084a('0x23')]();};}function saveUpdates(_0x1ad257,_0x41a90f){return function(_0x2d62bf){if(_0x2d62bf){return _0x2d62bf[_0x084a('0x24')](_0x1ad257)['then'](function(_0x755c24){return _0x755c24;});}return null;};}function removeEntity(_0x288e9e,_0x6346a5){return function(_0x1f2c9f){if(_0x1f2c9f){return _0x1f2c9f[_0x084a('0x25')]()[_0x084a('0x26')](function(){_0x288e9e['status'](0xcc)[_0x084a('0x1a')]();});}};}function handleEntityNotFound(_0x2af138,_0x54233b){return function(_0x5b1474){if(!_0x5b1474){_0x2af138[_0x084a('0x18')](0x194);}return _0x5b1474;};}function handleError(_0x3dd8b9,_0xfc9b8c){_0xfc9b8c=_0xfc9b8c||0x1f4;return function(_0x4c5658){logger['error'](_0x4c5658['stack']);if(_0x4c5658['name']){delete _0x4c5658[_0x084a('0x27')];}_0x3dd8b9['status'](_0xfc9b8c)['send'](_0x4c5658);};}exports['index']=function(_0x3b8176,_0x4651e6){var _0x388062={},_0x2c4149={},_0x3be7a6={'count':0x0,'rows':[]};var _0x25a2a1=_[_0x084a('0x28')](db[_0x084a('0x29')]['rawAttributes'],function(_0x2ed3cd){return{'name':_0x2ed3cd[_0x084a('0x2a')],'type':_0x2ed3cd['type'][_0x084a('0x2b')]};});_0x2c4149[_0x084a('0x2c')]=_[_0x084a('0x28')](_0x25a2a1,_0x084a('0x27'));_0x2c4149[_0x084a('0x2d')]=_[_0x084a('0x2e')](_0x3b8176[_0x084a('0x2d')]);_0x2c4149[_0x084a('0x2f')]=_[_0x084a('0x30')](_0x2c4149[_0x084a('0x2c')],_0x2c4149[_0x084a('0x2d')]);_0x388062[_0x084a('0x31')]=_[_0x084a('0x30')](_0x2c4149['model'],qs['fields'](_0x3b8176[_0x084a('0x2d')][_0x084a('0x32')]));_0x388062[_0x084a('0x31')]=_0x388062[_0x084a('0x31')][_0x084a('0x33')]?_0x388062['attributes']:_0x2c4149[_0x084a('0x2c')];if(!_0x3b8176[_0x084a('0x2d')][_0x084a('0x34')]('nolimit')){_0x388062[_0x084a('0x1f')]=qs[_0x084a('0x1f')](_0x3b8176[_0x084a('0x2d')]['limit']);_0x388062['offset']=qs['offset'](_0x3b8176[_0x084a('0x2d')][_0x084a('0x1d')]);}_0x388062[_0x084a('0x35')]=qs['sort'](_0x3b8176[_0x084a('0x2d')][_0x084a('0x36')]);_0x388062[_0x084a('0x37')]=qs[_0x084a('0x2f')](_[_0x084a('0x38')](_0x3b8176[_0x084a('0x2d')],_0x2c4149[_0x084a('0x2f')]),_0x25a2a1);if(_0x3b8176[_0x084a('0x2d')][_0x084a('0x39')]){_0x388062[_0x084a('0x37')]=_[_0x084a('0x3a')](_0x388062[_0x084a('0x37')],{'$or':_[_0x084a('0x28')](_0x25a2a1,function(_0x1659d3){if(_0x1659d3[_0x084a('0x3b')]!=='VIRTUAL'){var _0x220f88={};_0x220f88[_0x1659d3[_0x084a('0x27')]]={'$like':'%'+_0x3b8176[_0x084a('0x2d')][_0x084a('0x39')]+'%'};return _0x220f88;}})});}_0x388062=_[_0x084a('0x3a')]({},_0x388062,_0x3b8176[_0x084a('0x3c')]);var _0xa7b652={'where':_0x388062[_0x084a('0x37')]};return db[_0x084a('0x29')]['count'](_0xa7b652)[_0x084a('0x26')](function(_0x3d1aa5){_0x3be7a6[_0x084a('0x1e')]=_0x3d1aa5;if(_0x3b8176[_0x084a('0x2d')][_0x084a('0x3d')]){_0x388062[_0x084a('0x3e')]=[{'all':!![]}];}return db['WhatsappQueueReport'][_0x084a('0x3f')](_0x388062);})[_0x084a('0x26')](function(_0x55c5f4){_0x3be7a6[_0x084a('0x40')]=_0x55c5f4;return _0x3be7a6;})[_0x084a('0x26')](respondWithFilteredResult(_0x4651e6,_0x388062))[_0x084a('0x41')](handleError(_0x4651e6,null));};exports['show']=function(_0x1aa4ea,_0xba1081){var _0x4fe9c2={'raw':!![],'where':{'id':_0x1aa4ea[_0x084a('0x42')]['id']}},_0x3e2b92={};_0x3e2b92['model']=_['keys'](db[_0x084a('0x29')][_0x084a('0x43')]);_0x3e2b92[_0x084a('0x2d')]=_[_0x084a('0x2e')](_0x1aa4ea[_0x084a('0x2d')]);_0x3e2b92[_0x084a('0x2f')]=_[_0x084a('0x30')](_0x3e2b92[_0x084a('0x2c')],_0x3e2b92[_0x084a('0x2d')]);_0x4fe9c2[_0x084a('0x31')]=_[_0x084a('0x30')](_0x3e2b92['model'],qs['fields'](_0x1aa4ea[_0x084a('0x2d')][_0x084a('0x32')]));_0x4fe9c2[_0x084a('0x31')]=_0x4fe9c2['attributes'][_0x084a('0x33')]?_0x4fe9c2[_0x084a('0x31')]:_0x3e2b92[_0x084a('0x2c')];if(_0x1aa4ea[_0x084a('0x2d')][_0x084a('0x3d')]){_0x4fe9c2['include']=[{'all':!![]}];}_0x4fe9c2=_[_0x084a('0x3a')]({},_0x4fe9c2,_0x1aa4ea['options']);return db[_0x084a('0x29')][_0x084a('0x44')](_0x4fe9c2)[_0x084a('0x26')](handleEntityNotFound(_0xba1081,null))['then'](respondWithResult(_0xba1081,null))['catch'](handleError(_0xba1081,null));};exports[_0x084a('0x45')]=function(_0xef8fc7,_0x505965){return db[_0x084a('0x29')][_0x084a('0x45')](_0xef8fc7[_0x084a('0x46')],{})[_0x084a('0x26')](respondWithResult(_0x505965,0xc9))['catch'](handleError(_0x505965,null));};exports[_0x084a('0x24')]=function(_0x865368,_0x31677b){if(_0x865368[_0x084a('0x46')]['id']){delete _0x865368['body']['id'];}return db[_0x084a('0x29')][_0x084a('0x44')]({'where':{'id':_0x865368[_0x084a('0x42')]['id']}})[_0x084a('0x26')](handleEntityNotFound(_0x31677b,null))['then'](saveUpdates(_0x865368['body'],null))[_0x084a('0x26')](respondWithResult(_0x31677b,null))[_0x084a('0x41')](handleError(_0x31677b,null));};exports[_0x084a('0x25')]=function(_0x264f09,_0xf936e){return db[_0x084a('0x29')][_0x084a('0x44')]({'where':{'id':_0x264f09[_0x084a('0x42')]['id']}})[_0x084a('0x26')](handleEntityNotFound(_0xf936e,null))[_0x084a('0x26')](removeEntity(_0xf936e,null))[_0x084a('0x41')](handleError(_0xf936e,null));};exports[_0x084a('0x47')]=function(_0x4fe1b5,_0xcdd5b){return db[_0x084a('0x29')][_0x084a('0x47')]()[_0x084a('0x26')](respondWithResult(_0xcdd5b,null))[_0x084a('0x41')](handleError(_0xcdd5b,null));};
\ No newline at end of file
index 2fbd100..ab81425 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5f6=['uniqueid','lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','./whatsappQueueReport.attributes','exports','WhatsappQueueReport','report_whatsapp_queue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa5f6,0x9d));var _0x6a5f=function(_0x2c162c,_0x11f662){_0x2c162c=_0x2c162c-0x0;var _0x5cb605=_0xa5f6[_0x2c162c];return _0x5cb605;};'use strict';var _=require(_0x6a5f('0x0'));var util=require(_0x6a5f('0x1'));var logger=require(_0x6a5f('0x2'))('api');var moment=require(_0x6a5f('0x3'));var BPromise=require(_0x6a5f('0x4'));var rp=require(_0x6a5f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6a5f('0x6'));var config=require('../../config/environment');var attributes=require(_0x6a5f('0x7'));module[_0x6a5f('0x8')]=function(_0x1024c7,_0x346c36){return _0x1024c7['define'](_0x6a5f('0x9'),attributes,{'tableName':_0x6a5f('0xa'),'paranoid':![],'indexes':[{'name':_0x6a5f('0xb'),'fields':[_0x6a5f('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0e0a=['bluebird','request-promise','./whatsappQueueReport.attributes','exports','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash','util','../../config/logger','api'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x0e0a,0xcd));var _0xa0e0=function(_0x161713,_0x5e6507){_0x161713=_0x161713-0x0;var _0x33c142=_0x0e0a[_0x161713];return _0x33c142;};'use strict';var _=require(_0xa0e0('0x0'));var util=require(_0xa0e0('0x1'));var logger=require(_0xa0e0('0x2'))(_0xa0e0('0x3'));var moment=require('moment');var BPromise=require(_0xa0e0('0x4'));var rp=require(_0xa0e0('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xa0e0('0x6'));module[_0xa0e0('0x7')]=function(_0x3125fb,_0x4f8d53){return _0x3125fb['define'](_0xa0e0('0x8'),attributes,{'tableName':_0xa0e0('0x9'),'paranoid':![],'indexes':[{'name':_0xa0e0('0xa'),'fields':[_0xa0e0('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index a4e46a4..a361525 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdf4=['raw','update','attributes','limit','stringify','UpdateWhatsappQueueReport','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','info','WhatsappQueueReport,\x20%s,\x20%s','debug','request\x20sent','error','message','catch','CreateWhatsappQueueReport','WhatsappQueueReport','body','options'];(function(_0x35cb03,_0x578e9d){var _0x696377=function(_0x318fa3){while(--_0x318fa3){_0x35cb03['push'](_0x35cb03['shift']());}};_0x696377(++_0x578e9d);}(_0xfdf4,0x1c6));var _0x4fdf=function(_0x3ad6f8,_0x6344e8){_0x3ad6f8=_0x3ad6f8-0x0;var _0x5dae5f=_0xfdf4[_0x3ad6f8];return _0x5dae5f;};'use strict';var _=require(_0x4fdf('0x0'));var util=require(_0x4fdf('0x1'));var moment=require('moment');var BPromise=require(_0x4fdf('0x2'));var rs=require(_0x4fdf('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4fdf('0x4'))['db'];var utils=require(_0x4fdf('0x5'));var logger=require(_0x4fdf('0x6'))('rpc');var config=require(_0x4fdf('0x7'));var jayson=require(_0x4fdf('0x8'));var client=jayson[_0x4fdf('0x9')][_0x4fdf('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4a52eb,_0x494a1f,_0x332033){return new BPromise(function(_0x5c2ebb,_0x275a26){return client['request'](_0x4a52eb,_0x332033)['then'](function(_0x442849){logger[_0x4fdf('0xb')](_0x4fdf('0xc'),_0x494a1f,'request\x20sent');logger[_0x4fdf('0xd')]('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x494a1f,_0x4fdf('0xe'),JSON['stringify'](_0x442849));if(_0x442849[_0x4fdf('0xf')]){if(_0x442849[_0x4fdf('0xf')]['code']===0x1f4){logger[_0x4fdf('0xf')](_0x4fdf('0xc'),_0x494a1f,_0x442849[_0x4fdf('0xf')][_0x4fdf('0x10')]);return _0x275a26(_0x442849[_0x4fdf('0xf')]['message']);}logger[_0x4fdf('0xf')]('WhatsappQueueReport,\x20%s,\x20%s',_0x494a1f,_0x442849[_0x4fdf('0xf')][_0x4fdf('0x10')]);return _0x5c2ebb(_0x442849['error'][_0x4fdf('0x10')]);}else{logger[_0x4fdf('0xb')](_0x4fdf('0xc'),_0x494a1f,_0x4fdf('0xe'));_0x5c2ebb(_0x442849['result'][_0x4fdf('0x10')]);}})[_0x4fdf('0x11')](function(_0x58e9d0){logger[_0x4fdf('0xf')]('WhatsappQueueReport,\x20%s,\x20%s',_0x494a1f,_0x58e9d0);_0x275a26(_0x58e9d0);});});}exports[_0x4fdf('0x12')]=function(_0x18a940){var _0x335ff5=this;return new Promise(function(_0x121250,_0x134ddd){return db[_0x4fdf('0x13')]['create'](_0x18a940[_0x4fdf('0x14')],{'raw':_0x18a940['options']?_0x18a940[_0x4fdf('0x15')][_0x4fdf('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0xda8403){logger[_0x4fdf('0xb')](_0x4fdf('0x12'),_0x18a940);logger[_0x4fdf('0xd')]('CreateWhatsappQueueReport',_0x18a940,JSON['stringify'](_0xda8403));_0x121250(_0xda8403);})['catch'](function(_0x332596){logger[_0x4fdf('0xf')](_0x4fdf('0x12'),_0x332596[_0x4fdf('0x10')],_0x18a940);_0x134ddd(_0x335ff5[_0x4fdf('0xf')](0x1f4,_0x332596[_0x4fdf('0x10')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x1416b9){var _0x25b06e=this;return new Promise(function(_0x3e9a51,_0x29f8d8){return db[_0x4fdf('0x13')][_0x4fdf('0x17')](_0x1416b9[_0x4fdf('0x14')],{'raw':_0x1416b9[_0x4fdf('0x15')]?_0x1416b9[_0x4fdf('0x15')][_0x4fdf('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1416b9[_0x4fdf('0x15')]?_0x1416b9[_0x4fdf('0x15')]['where']||null:null,'attributes':_0x1416b9[_0x4fdf('0x15')]?_0x1416b9['options'][_0x4fdf('0x18')]||null:null,'limit':_0x1416b9[_0x4fdf('0x15')]?_0x1416b9[_0x4fdf('0x15')][_0x4fdf('0x19')]||null:null})['then'](function(_0x31f6e8){logger['info']('UpdateWhatsappQueueReport',_0x1416b9);logger[_0x4fdf('0xd')]('UpdateWhatsappQueueReport',_0x1416b9,JSON[_0x4fdf('0x1a')](_0x31f6e8));_0x3e9a51(_0x31f6e8);})['catch'](function(_0x45dcef){logger['error'](_0x4fdf('0x1b'),_0x45dcef[_0x4fdf('0x10')],_0x1416b9);_0x29f8d8(_0x25b06e[_0x4fdf('0xf')](0x1f4,_0x45dcef['message']));});});};
\ No newline at end of file
+var _0xf83e=['rpc','client','http','request','info','WhatsappQueueReport,\x20%s,\x20%s','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','WhatsappQueueReport','create','options','then','CreateWhatsappQueueReport','UpdateWhatsappQueueReport','update','body','where','attributes','bluebird','randomstring','../../mysqldb','../../config/utils'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xf83e,0x175));var _0xef83=function(_0x45f4ba,_0x5498c8){_0x45f4ba=_0x45f4ba-0x0;var _0x44db14=_0xf83e[_0x45f4ba];return _0x44db14;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xef83('0x0'));var rs=require(_0xef83('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xef83('0x2'))['db'];var utils=require(_0xef83('0x3'));var logger=require('../../config/logger')(_0xef83('0x4'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xef83('0x5')][_0xef83('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x28f31b,_0x122bc6,_0x218626){return new BPromise(function(_0x54a4ca,_0x537d57){return client[_0xef83('0x7')](_0x28f31b,_0x218626)['then'](function(_0x24d8b0){logger[_0xef83('0x8')](_0xef83('0x9'),_0x122bc6,'request\x20sent');logger[_0xef83('0xa')](_0xef83('0xb'),_0x122bc6,_0xef83('0xc'),JSON[_0xef83('0xd')](_0x24d8b0));if(_0x24d8b0[_0xef83('0xe')]){if(_0x24d8b0[_0xef83('0xe')][_0xef83('0xf')]===0x1f4){logger[_0xef83('0xe')](_0xef83('0x9'),_0x122bc6,_0x24d8b0['error'][_0xef83('0x10')]);return _0x537d57(_0x24d8b0[_0xef83('0xe')][_0xef83('0x10')]);}logger[_0xef83('0xe')](_0xef83('0x9'),_0x122bc6,_0x24d8b0[_0xef83('0xe')][_0xef83('0x10')]);return _0x54a4ca(_0x24d8b0[_0xef83('0xe')][_0xef83('0x10')]);}else{logger[_0xef83('0x8')]('WhatsappQueueReport,\x20%s,\x20%s',_0x122bc6,_0xef83('0xc'));_0x54a4ca(_0x24d8b0[_0xef83('0x11')][_0xef83('0x10')]);}})[_0xef83('0x12')](function(_0x718745){logger['error'](_0xef83('0x9'),_0x122bc6,_0x718745);_0x537d57(_0x718745);});});}exports['CreateWhatsappQueueReport']=function(_0x458489){var _0x2d46c1=this;return new Promise(function(_0x2ecca6,_0x48ab8e){return db[_0xef83('0x13')][_0xef83('0x14')](_0x458489['body'],{'raw':_0x458489[_0xef83('0x15')]?_0x458489[_0xef83('0x15')]['raw']===undefined?!![]:![]:!![]})[_0xef83('0x16')](function(_0x2ab0c3){logger[_0xef83('0x8')](_0xef83('0x17'),_0x458489);logger[_0xef83('0xa')](_0xef83('0x17'),_0x458489,JSON[_0xef83('0xd')](_0x2ab0c3));_0x2ecca6(_0x2ab0c3);})[_0xef83('0x12')](function(_0x1c1982){logger[_0xef83('0xe')](_0xef83('0x17'),_0x1c1982['message'],_0x458489);_0x48ab8e(_0x2d46c1['error'](0x1f4,_0x1c1982[_0xef83('0x10')]));});});};exports[_0xef83('0x18')]=function(_0x2fa12d){var _0x195096=this;return new Promise(function(_0x3c6a45,_0x4b9482){return db[_0xef83('0x13')][_0xef83('0x19')](_0x2fa12d[_0xef83('0x1a')],{'raw':_0x2fa12d['options']?_0x2fa12d[_0xef83('0x15')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2fa12d[_0xef83('0x15')]?_0x2fa12d['options'][_0xef83('0x1b')]||null:null,'attributes':_0x2fa12d[_0xef83('0x15')]?_0x2fa12d['options'][_0xef83('0x1c')]||null:null,'limit':_0x2fa12d['options']?_0x2fa12d[_0xef83('0x15')]['limit']||null:null})[_0xef83('0x16')](function(_0x291e52){logger['info'](_0xef83('0x18'),_0x2fa12d);logger['debug'](_0xef83('0x18'),_0x2fa12d,JSON['stringify'](_0x291e52));_0x3c6a45(_0x291e52);})[_0xef83('0x12')](function(_0xf7d17){logger['error']('UpdateWhatsappQueueReport',_0xf7d17['message'],_0x2fa12d);_0x4b9482(_0x195096[_0xef83('0xe')](0x1f4,_0xf7d17[_0xef83('0x10')]));});});};
\ No newline at end of file
index 0d4bf24..86be8a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfef4=['multer','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','isAuthenticated','index','get','describe','/:id','show','create','put','update','delete','exports'];(function(_0x549278,_0x450754){var _0x1ea9a1=function(_0x2e559d){while(--_0x2e559d){_0x549278['push'](_0x549278['shift']());}};_0x1ea9a1(++_0x450754);}(_0xfef4,0xf7));var _0x4fef=function(_0x391c55,_0x168617){_0x391c55=_0x391c55-0x0;var _0xa434e0=_0xfef4[_0x391c55];return _0xa434e0;};'use strict';var multer=require(_0x4fef('0x0'));var util=require('util');var path=require(_0x4fef('0x1'));var timeout=require(_0x4fef('0x2'));var express=require(_0x4fef('0x3'));var router=express['Router']();var fs_extra=require(_0x4fef('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x4fef('0x5'));var config=require(_0x4fef('0x6'));var controller=require(_0x4fef('0x7'));router['get']('/',auth[_0x4fef('0x8')](),controller[_0x4fef('0x9')]);router[_0x4fef('0xa')]('/describe',auth['isAuthenticated'](),controller[_0x4fef('0xb')]);router[_0x4fef('0xa')](_0x4fef('0xc'),auth['isAuthenticated'](),controller[_0x4fef('0xd')]);router['post']('/',auth[_0x4fef('0x8')](),controller[_0x4fef('0xe')]);router[_0x4fef('0xf')](_0x4fef('0xc'),auth[_0x4fef('0x8')](),controller[_0x4fef('0x10')]);router[_0x4fef('0x11')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0x4fef('0x12')]=router;
\ No newline at end of file
+var _0x1295=['put','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappTransferReport.controller','get','isAuthenticated','/describe','/:id','show','create'];(function(_0x403115,_0x2d6d03){var _0x596ef3=function(_0x145d97){while(--_0x145d97){_0x403115['push'](_0x403115['shift']());}};_0x596ef3(++_0x2d6d03);}(_0x1295,0x15a));var _0x5129=function(_0x5e4107,_0x1b6f7e){_0x5e4107=_0x5e4107-0x0;var _0x52138d=_0x1295[_0x5e4107];return _0x52138d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x5129('0x0'));var timeout=require(_0x5129('0x1'));var express=require(_0x5129('0x2'));var router=express[_0x5129('0x3')]();var fs_extra=require(_0x5129('0x4'));var auth=require(_0x5129('0x5'));var interaction=require(_0x5129('0x6'));var config=require(_0x5129('0x7'));var controller=require(_0x5129('0x8'));router[_0x5129('0x9')]('/',auth[_0x5129('0xa')](),controller['index']);router[_0x5129('0x9')](_0x5129('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0x5129('0x9')](_0x5129('0xc'),auth[_0x5129('0xa')](),controller[_0x5129('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x5129('0xe')]);router[_0x5129('0xf')]('/:id',auth[_0x5129('0xa')](),controller['update']);router[_0x5129('0x10')]('/:id',auth[_0x5129('0xa')](),controller[_0x5129('0x11')]);module[_0x5129('0x12')]=router;
\ No newline at end of file
index b62153d..be2f722 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6df9=['sequelize','exports','ENUM','queue'];(function(_0x23c3b4,_0x31b916){var _0x1eddc8=function(_0x4199dd){while(--_0x4199dd){_0x23c3b4['push'](_0x23c3b4['shift']());}};_0x1eddc8(++_0x31b916);}(_0x6df9,0x84));var _0x96df=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x6df9[_0x397e5f];return _0x5302b8;};'use strict';var Sequelize=require(_0x96df('0x0'));module[_0x96df('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x96df('0x2')]('account','agent',_0x96df('0x3')),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
+var _0x49db=['DATE','sequelize','exports','STRING','ENUM','account','queue'];(function(_0x2459fd,_0x575d9b){var _0x364cd2=function(_0x4b22f6){while(--_0x4b22f6){_0x2459fd['push'](_0x2459fd['shift']());}};_0x364cd2(++_0x575d9b);}(_0x49db,0xc5));var _0xb49d=function(_0x23ada5,_0x429b3e){_0x23ada5=_0x23ada5-0x0;var _0xb4c188=_0x49db[_0x23ada5];return _0xb4c188;};'use strict';var Sequelize=require(_0xb49d('0x0'));module[_0xb49d('0x1')]={'uniqueid':{'type':Sequelize[_0xb49d('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xb49d('0x3')](_0xb49d('0x4'),'agent',_0xb49d('0x5')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xb49d('0x6')]}};
\ No newline at end of file
index c5b19c4..054b6aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13ae=['show','params','catch','create','body','find','destroy','describe','request-promise','moment','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','name','send','WhatsappTransferReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','map','VIRTUAL','filter','options','includeAll','include','findAll','rows'];(function(_0x8c1005,_0x1f3f16){var _0x175354=function(_0xd0e9c4){while(--_0xd0e9c4){_0x8c1005['push'](_0x8c1005['shift']());}};_0x175354(++_0x1f3f16);}(_0x13ae,0xe6));var _0xe13a=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x13ae[_0x502c7d];return _0x30b7ed;};'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(_0xe13a('0x0'));var moment=require(_0xe13a('0x1'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xe13a('0x2'));var path=require('path');var sox=require(_0xe13a('0x3'));var csv=require(_0xe13a('0x4'));var ejs=require(_0xe13a('0x5'));var fs=require('fs');var fs_extra=require(_0xe13a('0x6'));var _=require(_0xe13a('0x7'));var squel=require(_0xe13a('0x8'));var crypto=require(_0xe13a('0x9'));var jsforce=require(_0xe13a('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xe13a('0xb'));var Papa=require(_0xe13a('0xc'));var Redis=require(_0xe13a('0xd'));var authService=require(_0xe13a('0xe'));var qs=require(_0xe13a('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe13a('0x10'));var logger=require(_0xe13a('0x11'))(_0xe13a('0x12'));var utils=require(_0xe13a('0x13'));var config=require(_0xe13a('0x14'));var licenseUtil=require(_0xe13a('0x15'));var db=require(_0xe13a('0x16'))['db'];function respondWithStatusCode(_0x5e715,_0x54ea66){_0x54ea66=_0x54ea66||0xcc;return function(_0x2ab471){if(_0x2ab471){return _0x5e715[_0xe13a('0x17')](_0x54ea66);}return _0x5e715[_0xe13a('0x18')](_0x54ea66)[_0xe13a('0x19')]();};}function respondWithResult(_0x12f6f9,_0x19dc18){_0x19dc18=_0x19dc18||0xc8;return function(_0x462d0e){if(_0x462d0e){return _0x12f6f9['status'](_0x19dc18)['json'](_0x462d0e);}};}function respondWithFilteredResult(_0x463c25,_0x2fca0f){return function(_0x128986){if(_0x128986){var _0x20d162=typeof _0x2fca0f[_0xe13a('0x1a')]===_0xe13a('0x1b')&&typeof _0x2fca0f[_0xe13a('0x1c')]===_0xe13a('0x1b');var _0x165195=_0x128986[_0xe13a('0x1d')];var _0xc6f6d3=_0x20d162?0x0:_0x2fca0f['offset'];var _0x3c8f4f=_0x20d162?_0x128986[_0xe13a('0x1d')]:_0x2fca0f['offset']+_0x2fca0f[_0xe13a('0x1c')];var _0x12a8b9;if(_0x3c8f4f>=_0x165195){_0x3c8f4f=_0x165195;_0x12a8b9=0xc8;}else{_0x12a8b9=0xce;}_0x463c25['status'](_0x12a8b9);return _0x463c25[_0xe13a('0x1e')](_0xe13a('0x1f'),_0xc6f6d3+'-'+_0x3c8f4f+'/'+_0x165195)[_0xe13a('0x20')](_0x128986);}return null;};}function patchUpdates(_0x4489bd){return function(_0xeff2be){try{jsonpatch[_0xe13a('0x21')](_0xeff2be,_0x4489bd,!![]);}catch(_0x2c88bd){return BPromise[_0xe13a('0x22')](_0x2c88bd);}return _0xeff2be['save']();};}function saveUpdates(_0x5e8dea,_0x192240){return function(_0x48cdb8){if(_0x48cdb8){return _0x48cdb8[_0xe13a('0x23')](_0x5e8dea)[_0xe13a('0x24')](function(_0x3a5d29){return _0x3a5d29;});}return null;};}function removeEntity(_0x1d303c,_0x810633){return function(_0xd26093){if(_0xd26093){return _0xd26093['destroy']()[_0xe13a('0x24')](function(){_0x1d303c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3ed1f7,_0x3d6cb5){return function(_0x43b238){if(!_0x43b238){_0x3ed1f7[_0xe13a('0x17')](0x194);}return _0x43b238;};}function handleError(_0x11a40c,_0x4323f5){_0x4323f5=_0x4323f5||0x1f4;return function(_0x4b8442){logger['error'](_0x4b8442['stack']);if(_0x4b8442[_0xe13a('0x25')]){delete _0x4b8442[_0xe13a('0x25')];}_0x11a40c[_0xe13a('0x18')](_0x4323f5)[_0xe13a('0x26')](_0x4b8442);};}exports['index']=function(_0x502bff,_0x475819){var _0x3498ed={},_0x40a5b0={},_0x55e77d={'count':0x0,'rows':[]};var _0x1e551e=_['map'](db[_0xe13a('0x27')][_0xe13a('0x28')],function(_0xd1fdb5){return{'name':_0xd1fdb5[_0xe13a('0x29')],'type':_0xd1fdb5[_0xe13a('0x2a')][_0xe13a('0x2b')]};});_0x40a5b0['model']=_['map'](_0x1e551e,'name');_0x40a5b0[_0xe13a('0x2c')]=_[_0xe13a('0x2d')](_0x502bff['query']);_0x40a5b0[_0xe13a('0x2e')]=_[_0xe13a('0x2f')](_0x40a5b0[_0xe13a('0x30')],_0x40a5b0['query']);_0x3498ed[_0xe13a('0x31')]=_[_0xe13a('0x2f')](_0x40a5b0[_0xe13a('0x30')],qs[_0xe13a('0x32')](_0x502bff[_0xe13a('0x2c')][_0xe13a('0x32')]));_0x3498ed[_0xe13a('0x31')]=_0x3498ed[_0xe13a('0x31')][_0xe13a('0x33')]?_0x3498ed[_0xe13a('0x31')]:_0x40a5b0[_0xe13a('0x30')];if(!_0x502bff[_0xe13a('0x2c')][_0xe13a('0x34')](_0xe13a('0x35'))){_0x3498ed[_0xe13a('0x1c')]=qs[_0xe13a('0x1c')](_0x502bff[_0xe13a('0x2c')][_0xe13a('0x1c')]);_0x3498ed['offset']=qs[_0xe13a('0x1a')](_0x502bff[_0xe13a('0x2c')][_0xe13a('0x1a')]);}_0x3498ed[_0xe13a('0x36')]=qs['sort'](_0x502bff[_0xe13a('0x2c')][_0xe13a('0x37')]);_0x3498ed[_0xe13a('0x38')]=qs[_0xe13a('0x2e')](_['pick'](_0x502bff[_0xe13a('0x2c')],_0x40a5b0[_0xe13a('0x2e')]),_0x1e551e);if(_0x502bff['query']['filter']){_0x3498ed[_0xe13a('0x38')]=_[_0xe13a('0x39')](_0x3498ed[_0xe13a('0x38')],{'$or':_[_0xe13a('0x3a')](_0x1e551e,function(_0x202348){if(_0x202348[_0xe13a('0x2a')]!==_0xe13a('0x3b')){var _0x365b73={};_0x365b73[_0x202348['name']]={'$like':'%'+_0x502bff['query'][_0xe13a('0x3c')]+'%'};return _0x365b73;}})});}_0x3498ed=_[_0xe13a('0x39')]({},_0x3498ed,_0x502bff[_0xe13a('0x3d')]);var _0x319c6a={'where':_0x3498ed[_0xe13a('0x38')]};return db[_0xe13a('0x27')][_0xe13a('0x1d')](_0x319c6a)['then'](function(_0xb811d5){_0x55e77d[_0xe13a('0x1d')]=_0xb811d5;if(_0x502bff[_0xe13a('0x2c')][_0xe13a('0x3e')]){_0x3498ed[_0xe13a('0x3f')]=[{'all':!![]}];}return db['WhatsappTransferReport'][_0xe13a('0x40')](_0x3498ed);})[_0xe13a('0x24')](function(_0x348216){_0x55e77d[_0xe13a('0x41')]=_0x348216;return _0x55e77d;})[_0xe13a('0x24')](respondWithFilteredResult(_0x475819,_0x3498ed))['catch'](handleError(_0x475819,null));};exports[_0xe13a('0x42')]=function(_0x3bca3e,_0x11a9cf){var _0x513cb0={'raw':!![],'where':{'id':_0x3bca3e[_0xe13a('0x43')]['id']}},_0x3c047b={};_0x3c047b[_0xe13a('0x30')]=_[_0xe13a('0x2d')](db['WhatsappTransferReport']['rawAttributes']);_0x3c047b[_0xe13a('0x2c')]=_[_0xe13a('0x2d')](_0x3bca3e[_0xe13a('0x2c')]);_0x3c047b['filters']=_['intersection'](_0x3c047b[_0xe13a('0x30')],_0x3c047b[_0xe13a('0x2c')]);_0x513cb0[_0xe13a('0x31')]=_[_0xe13a('0x2f')](_0x3c047b[_0xe13a('0x30')],qs['fields'](_0x3bca3e[_0xe13a('0x2c')][_0xe13a('0x32')]));_0x513cb0[_0xe13a('0x31')]=_0x513cb0[_0xe13a('0x31')][_0xe13a('0x33')]?_0x513cb0[_0xe13a('0x31')]:_0x3c047b[_0xe13a('0x30')];if(_0x3bca3e[_0xe13a('0x2c')][_0xe13a('0x3e')]){_0x513cb0['include']=[{'all':!![]}];}_0x513cb0=_['merge']({},_0x513cb0,_0x3bca3e[_0xe13a('0x3d')]);return db[_0xe13a('0x27')]['find'](_0x513cb0)['then'](handleEntityNotFound(_0x11a9cf,null))[_0xe13a('0x24')](respondWithResult(_0x11a9cf,null))[_0xe13a('0x44')](handleError(_0x11a9cf,null));};exports[_0xe13a('0x45')]=function(_0x17accd,_0x45a230){return db[_0xe13a('0x27')]['create'](_0x17accd[_0xe13a('0x46')],{})[_0xe13a('0x24')](respondWithResult(_0x45a230,0xc9))[_0xe13a('0x44')](handleError(_0x45a230,null));};exports[_0xe13a('0x23')]=function(_0x569da6,_0x55e08e){if(_0x569da6['body']['id']){delete _0x569da6[_0xe13a('0x46')]['id'];}return db['WhatsappTransferReport'][_0xe13a('0x47')]({'where':{'id':_0x569da6[_0xe13a('0x43')]['id']}})[_0xe13a('0x24')](handleEntityNotFound(_0x55e08e,null))[_0xe13a('0x24')](saveUpdates(_0x569da6[_0xe13a('0x46')],null))['then'](respondWithResult(_0x55e08e,null))[_0xe13a('0x44')](handleError(_0x55e08e,null));};exports[_0xe13a('0x48')]=function(_0x198210,_0x12314d){return db['WhatsappTransferReport'][_0xe13a('0x47')]({'where':{'id':_0x198210[_0xe13a('0x43')]['id']}})[_0xe13a('0x24')](handleEntityNotFound(_0x12314d,null))[_0xe13a('0x24')](removeEntity(_0x12314d,null))[_0xe13a('0x44')](handleError(_0x12314d,null));};exports[_0xe13a('0x49')]=function(_0x16e185,_0x5a3a11){return db[_0xe13a('0x27')][_0xe13a('0x49')]()['then'](respondWithResult(_0x5a3a11,null))[_0xe13a('0x44')](handleError(_0x5a3a11,null));};
\ No newline at end of file
+var _0x74e0=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','stack','name','map','WhatsappTransferReport','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','describe','rimraf','fast-json-patch','moment','bluebird','mustache','util','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x74e0,0x15e));var _0x074e=function(_0x1d66d4,_0x4a4a3c){_0x1d66d4=_0x1d66d4-0x0;var _0x1fde89=_0x74e0[_0x1d66d4];return _0x1fde89;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x074e('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x074e('0x1'));var rp=require('request-promise');var moment=require(_0x074e('0x2'));var BPromise=require(_0x074e('0x3'));var Mustache=require(_0x074e('0x4'));var util=require(_0x074e('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x074e('0x6'));var fs=require('fs');var fs_extra=require(_0x074e('0x7'));var _=require(_0x074e('0x8'));var squel=require(_0x074e('0x9'));var crypto=require(_0x074e('0xa'));var jsforce=require(_0x074e('0xb'));var deskjs=require(_0x074e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x074e('0xd'));var Redis=require(_0x074e('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x074e('0xf'));var as=require(_0x074e('0x10'));var hardwareService=require(_0x074e('0x11'));var logger=require(_0x074e('0x12'))(_0x074e('0x13'));var utils=require(_0x074e('0x14'));var config=require(_0x074e('0x15'));var licenseUtil=require(_0x074e('0x16'));var db=require(_0x074e('0x17'))['db'];function respondWithStatusCode(_0x3df6f0,_0x87af65){_0x87af65=_0x87af65||0xcc;return function(_0x22e9c3){if(_0x22e9c3){return _0x3df6f0[_0x074e('0x18')](_0x87af65);}return _0x3df6f0[_0x074e('0x19')](_0x87af65)[_0x074e('0x1a')]();};}function respondWithResult(_0x406e16,_0x5bd798){_0x5bd798=_0x5bd798||0xc8;return function(_0x5d2b7e){if(_0x5d2b7e){return _0x406e16['status'](_0x5bd798)[_0x074e('0x1b')](_0x5d2b7e);}};}function respondWithFilteredResult(_0x395a37,_0x40d58e){return function(_0x503a5){if(_0x503a5){var _0x103837=typeof _0x40d58e[_0x074e('0x1c')]===_0x074e('0x1d')&&typeof _0x40d58e[_0x074e('0x1e')]===_0x074e('0x1d');var _0x340fb1=_0x503a5[_0x074e('0x1f')];var _0x518fc5=_0x103837?0x0:_0x40d58e[_0x074e('0x1c')];var _0x440e4e=_0x103837?_0x503a5['count']:_0x40d58e[_0x074e('0x1c')]+_0x40d58e[_0x074e('0x1e')];var _0x98a02f;if(_0x440e4e>=_0x340fb1){_0x440e4e=_0x340fb1;_0x98a02f=0xc8;}else{_0x98a02f=0xce;}_0x395a37[_0x074e('0x19')](_0x98a02f);return _0x395a37[_0x074e('0x20')](_0x074e('0x21'),_0x518fc5+'-'+_0x440e4e+'/'+_0x340fb1)['json'](_0x503a5);}return null;};}function patchUpdates(_0x4b62d9){return function(_0x5e97a1){try{jsonpatch[_0x074e('0x22')](_0x5e97a1,_0x4b62d9,!![]);}catch(_0xf7cffa){return BPromise[_0x074e('0x23')](_0xf7cffa);}return _0x5e97a1['save']();};}function saveUpdates(_0x382f2a,_0x26b79c){return function(_0x414c5a){if(_0x414c5a){return _0x414c5a[_0x074e('0x24')](_0x382f2a)[_0x074e('0x25')](function(_0x401dbf){return _0x401dbf;});}return null;};}function removeEntity(_0x3a67cc,_0x220263){return function(_0xaaacc){if(_0xaaacc){return _0xaaacc[_0x074e('0x26')]()[_0x074e('0x25')](function(){_0x3a67cc[_0x074e('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5365f3,_0x44264a){return function(_0x28a389){if(!_0x28a389){_0x5365f3[_0x074e('0x18')](0x194);}return _0x28a389;};}function handleError(_0x2ce426,_0x504a9f){_0x504a9f=_0x504a9f||0x1f4;return function(_0xfcd8e7){logger['error'](_0xfcd8e7[_0x074e('0x27')]);if(_0xfcd8e7['name']){delete _0xfcd8e7[_0x074e('0x28')];}_0x2ce426['status'](_0x504a9f)['send'](_0xfcd8e7);};}exports['index']=function(_0x453921,_0x9b7609){var _0x5a1543={},_0x3af7fb={},_0x5525fa={'count':0x0,'rows':[]};var _0x5e239a=_[_0x074e('0x29')](db[_0x074e('0x2a')]['rawAttributes'],function(_0x476417){return{'name':_0x476417[_0x074e('0x2b')],'type':_0x476417[_0x074e('0x2c')]['key']};});_0x3af7fb[_0x074e('0x2d')]=_[_0x074e('0x29')](_0x5e239a,_0x074e('0x28'));_0x3af7fb[_0x074e('0x2e')]=_[_0x074e('0x2f')](_0x453921[_0x074e('0x2e')]);_0x3af7fb[_0x074e('0x30')]=_[_0x074e('0x31')](_0x3af7fb[_0x074e('0x2d')],_0x3af7fb[_0x074e('0x2e')]);_0x5a1543[_0x074e('0x32')]=_['intersection'](_0x3af7fb['model'],qs[_0x074e('0x33')](_0x453921[_0x074e('0x2e')][_0x074e('0x33')]));_0x5a1543[_0x074e('0x32')]=_0x5a1543[_0x074e('0x32')][_0x074e('0x34')]?_0x5a1543[_0x074e('0x32')]:_0x3af7fb[_0x074e('0x2d')];if(!_0x453921[_0x074e('0x2e')][_0x074e('0x35')](_0x074e('0x36'))){_0x5a1543['limit']=qs[_0x074e('0x1e')](_0x453921[_0x074e('0x2e')]['limit']);_0x5a1543[_0x074e('0x1c')]=qs[_0x074e('0x1c')](_0x453921[_0x074e('0x2e')][_0x074e('0x1c')]);}_0x5a1543['order']=qs[_0x074e('0x37')](_0x453921['query'][_0x074e('0x37')]);_0x5a1543[_0x074e('0x38')]=qs[_0x074e('0x30')](_[_0x074e('0x39')](_0x453921['query'],_0x3af7fb['filters']),_0x5e239a);if(_0x453921['query'][_0x074e('0x3a')]){_0x5a1543[_0x074e('0x38')]=_[_0x074e('0x3b')](_0x5a1543[_0x074e('0x38')],{'$or':_['map'](_0x5e239a,function(_0x4b82e2){if(_0x4b82e2[_0x074e('0x2c')]!==_0x074e('0x3c')){var _0x115864={};_0x115864[_0x4b82e2[_0x074e('0x28')]]={'$like':'%'+_0x453921[_0x074e('0x2e')][_0x074e('0x3a')]+'%'};return _0x115864;}})});}_0x5a1543=_[_0x074e('0x3b')]({},_0x5a1543,_0x453921[_0x074e('0x3d')]);var _0x2ebc78={'where':_0x5a1543[_0x074e('0x38')]};return db[_0x074e('0x2a')]['count'](_0x2ebc78)[_0x074e('0x25')](function(_0x1d25a4){_0x5525fa[_0x074e('0x1f')]=_0x1d25a4;if(_0x453921[_0x074e('0x2e')][_0x074e('0x3e')]){_0x5a1543[_0x074e('0x3f')]=[{'all':!![]}];}return db[_0x074e('0x2a')][_0x074e('0x40')](_0x5a1543);})[_0x074e('0x25')](function(_0x109054){_0x5525fa[_0x074e('0x41')]=_0x109054;return _0x5525fa;})['then'](respondWithFilteredResult(_0x9b7609,_0x5a1543))[_0x074e('0x42')](handleError(_0x9b7609,null));};exports[_0x074e('0x43')]=function(_0xf92134,_0x100546){var _0x1c0778={'raw':!![],'where':{'id':_0xf92134[_0x074e('0x44')]['id']}},_0x187e9b={};_0x187e9b[_0x074e('0x2d')]=_[_0x074e('0x2f')](db[_0x074e('0x2a')][_0x074e('0x45')]);_0x187e9b[_0x074e('0x2e')]=_[_0x074e('0x2f')](_0xf92134['query']);_0x187e9b['filters']=_[_0x074e('0x31')](_0x187e9b['model'],_0x187e9b['query']);_0x1c0778[_0x074e('0x32')]=_[_0x074e('0x31')](_0x187e9b[_0x074e('0x2d')],qs[_0x074e('0x33')](_0xf92134[_0x074e('0x2e')][_0x074e('0x33')]));_0x1c0778[_0x074e('0x32')]=_0x1c0778[_0x074e('0x32')]['length']?_0x1c0778[_0x074e('0x32')]:_0x187e9b['model'];if(_0xf92134[_0x074e('0x2e')][_0x074e('0x3e')]){_0x1c0778[_0x074e('0x3f')]=[{'all':!![]}];}_0x1c0778=_['merge']({},_0x1c0778,_0xf92134['options']);return db[_0x074e('0x2a')][_0x074e('0x46')](_0x1c0778)[_0x074e('0x25')](handleEntityNotFound(_0x100546,null))['then'](respondWithResult(_0x100546,null))[_0x074e('0x42')](handleError(_0x100546,null));};exports[_0x074e('0x47')]=function(_0xc6f573,_0x4b104b){return db['WhatsappTransferReport'][_0x074e('0x47')](_0xc6f573[_0x074e('0x48')],{})[_0x074e('0x25')](respondWithResult(_0x4b104b,0xc9))['catch'](handleError(_0x4b104b,null));};exports[_0x074e('0x24')]=function(_0x25d99e,_0x417386){if(_0x25d99e[_0x074e('0x48')]['id']){delete _0x25d99e[_0x074e('0x48')]['id'];}return db[_0x074e('0x2a')][_0x074e('0x46')]({'where':{'id':_0x25d99e['params']['id']}})[_0x074e('0x25')](handleEntityNotFound(_0x417386,null))[_0x074e('0x25')](saveUpdates(_0x25d99e[_0x074e('0x48')],null))[_0x074e('0x25')](respondWithResult(_0x417386,null))[_0x074e('0x42')](handleError(_0x417386,null));};exports[_0x074e('0x26')]=function(_0x24712d,_0x1f4b5b){return db[_0x074e('0x2a')][_0x074e('0x46')]({'where':{'id':_0x24712d[_0x074e('0x44')]['id']}})['then'](handleEntityNotFound(_0x1f4b5b,null))[_0x074e('0x25')](removeEntity(_0x1f4b5b,null))[_0x074e('0x42')](handleError(_0x1f4b5b,null));};exports['describe']=function(_0x116837,_0x327a53){return db['WhatsappTransferReport'][_0x074e('0x49')]()[_0x074e('0x25')](respondWithResult(_0x327a53,null))['catch'](handleError(_0x327a53,null));};
\ No newline at end of file
index 4f3a08b..63cde1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc11e=['rimraf','../../config/environment','exports','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','api','moment','request-promise','path'];(function(_0x35401b,_0x175e80){var _0x295a97=function(_0x4df4cf){while(--_0x4df4cf){_0x35401b['push'](_0x35401b['shift']());}};_0x295a97(++_0x175e80);}(_0xc11e,0x89));var _0xec11=function(_0x582246,_0xa45179){_0x582246=_0x582246-0x0;var _0x2bcbcd=_0xc11e[_0x582246];return _0x2bcbcd;};'use strict';var _=require(_0xec11('0x0'));var util=require(_0xec11('0x1'));var logger=require('../../config/logger')(_0xec11('0x2'));var moment=require(_0xec11('0x3'));var BPromise=require('bluebird');var rp=require(_0xec11('0x4'));var fs=require('fs');var path=require(_0xec11('0x5'));var rimraf=require(_0xec11('0x6'));var config=require(_0xec11('0x7'));var attributes=require('./whatsappTransferReport.attributes');module[_0xec11('0x8')]=function(_0x5c9829,_0x2a2436){return _0x5c9829[_0xec11('0x9')](_0xec11('0xa'),attributes,{'tableName':_0xec11('0xb'),'paranoid':![],'indexes':[{'name':_0xec11('0xc'),'fields':[_0xec11('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb88d=['../../config/environment','./whatsappTransferReport.attributes','exports','WhatsappTransferReport','report_whatsapp_transfer','lodash','util','api','moment','bluebird','path','rimraf'];(function(_0x3eb81d,_0x24beb8){var _0x1735b5=function(_0x38aa47){while(--_0x38aa47){_0x3eb81d['push'](_0x3eb81d['shift']());}};_0x1735b5(++_0x24beb8);}(_0xb88d,0xad));var _0xdb88=function(_0x5b55c4,_0x2a95dc){_0x5b55c4=_0x5b55c4-0x0;var _0x468c6a=_0xb88d[_0x5b55c4];return _0x468c6a;};'use strict';var _=require(_0xdb88('0x0'));var util=require(_0xdb88('0x1'));var logger=require('../../config/logger')(_0xdb88('0x2'));var moment=require(_0xdb88('0x3'));var BPromise=require(_0xdb88('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xdb88('0x5'));var rimraf=require(_0xdb88('0x6'));var config=require(_0xdb88('0x7'));var attributes=require(_0xdb88('0x8'));module[_0xdb88('0x9')]=function(_0x22ad53,_0x23e984){return _0x22ad53['define'](_0xdb88('0xa'),attributes,{'tableName':_0xdb88('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 91e409b..e20ecb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b52=['code','message','result','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x135d90,_0x554c72){var _0x37975e=function(_0x465981){while(--_0x465981){_0x135d90['push'](_0x135d90['shift']());}};_0x37975e(++_0x554c72);}(_0x2b52,0xd4));var _0x22b5=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0x2b52[_0x1e4360];return _0x31e6b4;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x22b5('0x0'));var rs=require(_0x22b5('0x1'));var fs=require('fs');var Redis=require(_0x22b5('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x22b5('0x3'));var logger=require(_0x22b5('0x4'))(_0x22b5('0x5'));var config=require(_0x22b5('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x22b5('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x3eef67,_0x9bbc26,_0x5977dc){return new BPromise(function(_0xb48459,_0x4f1753){return client[_0x22b5('0x8')](_0x3eef67,_0x5977dc)[_0x22b5('0x9')](function(_0xaf308a){logger[_0x22b5('0xa')](_0x22b5('0xb'),_0x9bbc26,_0x22b5('0xc'));logger[_0x22b5('0xd')](_0x22b5('0xe'),_0x9bbc26,'request\x20sent',JSON['stringify'](_0xaf308a));if(_0xaf308a[_0x22b5('0xf')]){if(_0xaf308a['error'][_0x22b5('0x10')]===0x1f4){logger[_0x22b5('0xf')]('WhatsappTransferReport,\x20%s,\x20%s',_0x9bbc26,_0xaf308a['error'][_0x22b5('0x11')]);return _0x4f1753(_0xaf308a[_0x22b5('0xf')][_0x22b5('0x11')]);}logger[_0x22b5('0xf')](_0x22b5('0xb'),_0x9bbc26,_0xaf308a['error'][_0x22b5('0x11')]);return _0xb48459(_0xaf308a[_0x22b5('0xf')]['message']);}else{logger[_0x22b5('0xa')](_0x22b5('0xb'),_0x9bbc26,_0x22b5('0xc'));_0xb48459(_0xaf308a[_0x22b5('0x12')][_0x22b5('0x11')]);}})['catch'](function(_0x27c384){logger['error'](_0x22b5('0xb'),_0x9bbc26,_0x27c384);_0x4f1753(_0x27c384);});});}
\ No newline at end of file
+var _0x0acc=['util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x19b3f9,_0xade753){var _0x18c3f6=function(_0x21439f){while(--_0x21439f){_0x19b3f9['push'](_0x19b3f9['shift']());}};_0x18c3f6(++_0xade753);}(_0x0acc,0xb8));var _0xc0ac=function(_0x4e6f6e,_0x575e3f){_0x4e6f6e=_0x4e6f6e-0x0;var _0x492e33=_0x0acc[_0x4e6f6e];return _0x492e33;};'use strict';var _=require('lodash');var util=require(_0xc0ac('0x0'));var moment=require(_0xc0ac('0x1'));var BPromise=require(_0xc0ac('0x2'));var rs=require(_0xc0ac('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc0ac('0x4'))['db'];var utils=require(_0xc0ac('0x5'));var logger=require('../../config/logger')(_0xc0ac('0x6'));var config=require(_0xc0ac('0x7'));var jayson=require(_0xc0ac('0x8'));var client=jayson[_0xc0ac('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x280498,_0x2ddcf9,_0x2e3f3d){return new BPromise(function(_0x2d89f8,_0x3745b2){return client[_0xc0ac('0xa')](_0x280498,_0x2e3f3d)[_0xc0ac('0xb')](function(_0x2d39d7){logger[_0xc0ac('0xc')](_0xc0ac('0xd'),_0x2ddcf9,_0xc0ac('0xe'));logger[_0xc0ac('0xf')](_0xc0ac('0x10'),_0x2ddcf9,_0xc0ac('0xe'),JSON[_0xc0ac('0x11')](_0x2d39d7));if(_0x2d39d7[_0xc0ac('0x12')]){if(_0x2d39d7[_0xc0ac('0x12')][_0xc0ac('0x13')]===0x1f4){logger[_0xc0ac('0x12')]('WhatsappTransferReport,\x20%s,\x20%s',_0x2ddcf9,_0x2d39d7['error'][_0xc0ac('0x14')]);return _0x3745b2(_0x2d39d7[_0xc0ac('0x12')][_0xc0ac('0x14')]);}logger[_0xc0ac('0x12')](_0xc0ac('0xd'),_0x2ddcf9,_0x2d39d7[_0xc0ac('0x12')]['message']);return _0x2d89f8(_0x2d39d7[_0xc0ac('0x12')][_0xc0ac('0x14')]);}else{logger['info'](_0xc0ac('0xd'),_0x2ddcf9,_0xc0ac('0xe'));_0x2d89f8(_0x2d39d7[_0xc0ac('0x15')][_0xc0ac('0x14')]);}})[_0xc0ac('0x16')](function(_0x4e6c8d){logger['error'](_0xc0ac('0xd'),_0x2ddcf9,_0x4e6c8d);_0x3745b2(_0x4e6c8d);});});}
\ No newline at end of file
index 381e20c..568340e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc91=['pm2_env','name','Online\x20apps:','map','online','join','Offline\x20apps:','None','catch','error','exit','./mysqldb','./config/license','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','sync','default','then','listen','info','start','filter','exitCode','length','\x20processes\x20failed\x20at\x20startup:\x20'];(function(_0xa3400,_0x3a980a){var _0x33dba2=function(_0x5e988b){while(--_0x5e988b){_0xa3400['push'](_0xa3400['shift']());}};_0x33dba2(++_0x3a980a);}(_0xfc91,0xb5));var _0x1fc9=function(_0xa42329,_0x54f90d){_0xa42329=_0xa42329-0x0;var _0x1a800a=_0xfc91[_0xa42329];return _0x1a800a;};'use strict';var _=require('lodash');var db=require(_0x1fc9('0x0'))['db'];var seedDb=require('./config/seedDB');var checkLicense=require(_0x1fc9('0x1'));var rpc=require(_0x1fc9('0x2'));var config=require(_0x1fc9('0x3'));var logger=require(_0x1fc9('0x4'))(_0x1fc9('0x5'));var pm2=require(_0x1fc9('0x6'));var pm2Config=require(_0x1fc9('0x7'));var schedule=require(_0x1fc9('0x8'));var chat=require(_0x1fc9('0x9'));var whatsapp=require(_0x1fc9('0xa'));var transcribe=require(_0x1fc9('0xb'));var provider=require(_0x1fc9('0xc'));function main(){return db['sequelize'][_0x1fc9('0xd')]()['then'](function(){if(config['seedDB']){return seedDb[_0x1fc9('0xe')]();}})[_0x1fc9('0xf')](function(){return checkLicense[_0x1fc9('0xe')]();})[_0x1fc9('0xf')](function(){return rpc[_0x1fc9('0x10')]();})[_0x1fc9('0xf')](function(_0x43e0f0){logger[_0x1fc9('0x11')](_0x43e0f0);return chat[_0x1fc9('0x12')]();})[_0x1fc9('0xf')](function(){return whatsapp[_0x1fc9('0x12')]();})[_0x1fc9('0xf')](function(){return schedule[_0x1fc9('0x12')]();})[_0x1fc9('0xf')](function(){return transcribe[_0x1fc9('0x12')]();})[_0x1fc9('0xf')](function(){return provider[_0x1fc9('0x12')]();})['then'](function(_0xeafb47){logger[_0x1fc9('0x11')](_0xeafb47);return pm2['start'](pm2Config);})[_0x1fc9('0xf')](function(_0x39fe61){var _0x2d55ae=_0x39fe61[_0x1fc9('0x13')](function(_0x3e0c75){return typeof _0x3e0c75[_0x1fc9('0x14')]==='number'&&_0x3e0c75['exitCode']>=0x0;});if(_0x2d55ae[_0x1fc9('0x15')]>0x0){throw new Error(_0x2d55ae['length']+_0x1fc9('0x16')+_['map'](_0x2d55ae,function(_0x533635){return'\x22'+_0x533635[_0x1fc9('0x17')][_0x1fc9('0x18')]+'\x22';}));}logger[_0x1fc9('0x11')](_0x1fc9('0x19'),_[_0x1fc9('0x1a')](_[_0x1fc9('0x13')](_0x39fe61,{'status':_0x1fc9('0x1b')}),_0x1fc9('0x18'))[_0x1fc9('0x1c')]());logger[_0x1fc9('0x11')](_0x1fc9('0x1d'),_[_0x1fc9('0x1a')](_[_0x1fc9('0x13')](_0x39fe61,function(_0x19d9bd){return _0x19d9bd['status']!=='online';}),_0x1fc9('0x18'))[_0x1fc9('0x1c')]()||_0x1fc9('0x1e'));console['log']('App\x20Ready!');})[_0x1fc9('0x1f')](function(_0x4f8493){console['log']('Server\x20failed\x20to\x20start\x20due\x20to\x20error!',_0x4f8493);logger[_0x1fc9('0x20')]('Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s',_0x4f8493);process[_0x1fc9('0x21')](0x1);});}main();
\ No newline at end of file
+var _0xc9ab=['./config/schedule/cloud-provider','sequelize','sync','then','seedDB','default','listen','info','start','filter','number','exitCode','length','\x20processes\x20failed\x20at\x20startup:\x20','map','name','online','join','Offline\x20apps:','status','None','catch','log','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./config/seedDB','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe'];(function(_0x4398e7,_0x196cec){var _0x4dcdad=function(_0x222c97){while(--_0x222c97){_0x4398e7['push'](_0x4398e7['shift']());}};_0x4dcdad(++_0x196cec);}(_0xc9ab,0x125));var _0xbc9a=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xc9ab[_0x38a7ac];return _0x53061a;};'use strict';var _=require(_0xbc9a('0x0'));var db=require(_0xbc9a('0x1'))['db'];var seedDb=require(_0xbc9a('0x2'));var checkLicense=require('./config/license');var rpc=require('./rpc');var config=require('./config/environment');var logger=require(_0xbc9a('0x3'))(_0xbc9a('0x4'));var pm2=require(_0xbc9a('0x5'));var pm2Config=require(_0xbc9a('0x6'));var schedule=require(_0xbc9a('0x7'));var chat=require(_0xbc9a('0x8'));var whatsapp=require(_0xbc9a('0x9'));var transcribe=require(_0xbc9a('0xa'));var provider=require(_0xbc9a('0xb'));function main(){return db[_0xbc9a('0xc')][_0xbc9a('0xd')]()[_0xbc9a('0xe')](function(){if(config[_0xbc9a('0xf')]){return seedDb[_0xbc9a('0x10')]();}})['then'](function(){return checkLicense['default']();})['then'](function(){return rpc[_0xbc9a('0x11')]();})['then'](function(_0x3ba3bc){logger[_0xbc9a('0x12')](_0x3ba3bc);return chat['start']();})['then'](function(){return whatsapp['start']();})[_0xbc9a('0xe')](function(){return schedule[_0xbc9a('0x13')]();})['then'](function(){return transcribe[_0xbc9a('0x13')]();})[_0xbc9a('0xe')](function(){return provider[_0xbc9a('0x13')]();})[_0xbc9a('0xe')](function(_0x1e8c66){logger[_0xbc9a('0x12')](_0x1e8c66);return pm2[_0xbc9a('0x13')](pm2Config);})['then'](function(_0x1a5a50){var _0x417527=_0x1a5a50[_0xbc9a('0x14')](function(_0x4e06d5){return typeof _0x4e06d5['exitCode']===_0xbc9a('0x15')&&_0x4e06d5[_0xbc9a('0x16')]>=0x0;});if(_0x417527[_0xbc9a('0x17')]>0x0){throw new Error(_0x417527[_0xbc9a('0x17')]+_0xbc9a('0x18')+_[_0xbc9a('0x19')](_0x417527,function(_0x585954){return'\x22'+_0x585954['pm2_env'][_0xbc9a('0x1a')]+'\x22';}));}logger[_0xbc9a('0x12')]('Online\x20apps:',_[_0xbc9a('0x19')](_[_0xbc9a('0x14')](_0x1a5a50,{'status':_0xbc9a('0x1b')}),'name')[_0xbc9a('0x1c')]());logger[_0xbc9a('0x12')](_0xbc9a('0x1d'),_[_0xbc9a('0x19')](_[_0xbc9a('0x14')](_0x1a5a50,function(_0x135619){return _0x135619[_0xbc9a('0x1e')]!==_0xbc9a('0x1b');}),_0xbc9a('0x1a'))[_0xbc9a('0x1c')]()||_0xbc9a('0x1f'));console['log']('App\x20Ready!');})[_0xbc9a('0x20')](function(_0x352816){console[_0xbc9a('0x21')](_0xbc9a('0x22'),_0x352816);logger[_0xbc9a('0x23')](_0xbc9a('0x24'),_0x352816);process[_0xbc9a('0x25')](0x1);});}main();
\ No newline at end of file
index 6a4a76f..e09bce8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['randomBytes','toString','hex','floor','now','HS512','../../config/environment','../../config/license/hardware','../../config/license/util','../encryptor','lodash','jsonwebtoken','composable-middleware','basic-auth','crypto','bluebird','util','moment','secrets','session','role','name','email','userpic','permissions','md5secret','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','pauseType','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','phoneBarAutoAnswer','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','hotdesk','interface','userProfileId','privacyEnabled','settingsEnabled','wssPort','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','chatAutoanswer','chatAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','openchannelAutoanswerDelay','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswer','whatsappAutoanswerDelay','messengerSoundNotification','isChatInteractionAuthorized','use','ChatInteraction','closed','disposition','then','unmanaged','json','Unmanaged.','Forbidden.','isAuthenticated','headers','authorization','startsWith','Basic','find','authenticate','pass','status','Wrong\x20credentials.','user','catch','Bearer','Unknown\x20authorization\x20format','query','apikey','getUuid','User','sub','findOne','allowedLoginAttempts','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blocked','blockDuration','blockedAt','add','minutes','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isWebrtcLicence','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','send','retrieveApiKey','apiKeyIat','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','splice','unshift','encryptString','join','sign','secret','payload','options','promisify','verify'];(function(_0x4a747c,_0x4e0be3){var _0x57a6dc=function(_0x2b7a29){while(--_0x2b7a29){_0x4a747c['push'](_0x4a747c['shift']());}};_0x57a6dc(++_0x4e0be3);}(_0xbaf0,0x12a));var _0x0baf=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xbaf0[_0x6131cd];return _0x47e916;};'use strict';var db=require('../../mysqldb')['db'];var config=require(_0x0baf('0x0'));var hardwareConf=require(_0x0baf('0x1'));var licenseUtil=require(_0x0baf('0x2'));var encryptor=require(_0x0baf('0x3'));var _=require(_0x0baf('0x4'));var jwt=require(_0x0baf('0x5'));var expressJwt=require('express-jwt');var compose=require(_0x0baf('0x6'));var basicAuth=require(_0x0baf('0x7'));var crypto=require(_0x0baf('0x8'));var BPromise=require(_0x0baf('0x9'));var util=require(_0x0baf('0xa'));var moment=require(_0x0baf('0xb'));var validateJwt=expressJwt({'secret':config[_0x0baf('0xc')][_0x0baf('0xd')]});var userAttributes=['id',_0x0baf('0xe'),'fullname',_0x0baf('0xf'),'internal',_0x0baf('0x10'),_0x0baf('0x11'),_0x0baf('0x12'),_0x0baf('0x13'),_0x0baf('0x14'),_0x0baf('0x15'),_0x0baf('0x16'),_0x0baf('0x17'),_0x0baf('0x18'),_0x0baf('0x19'),_0x0baf('0x1a'),'showWebBar','lastLoginAt',_0x0baf('0x1b'),_0x0baf('0x1c'),_0x0baf('0x1d'),_0x0baf('0x1e'),'alias',_0x0baf('0x1f'),'phoneBarAutoAnswerDelay',_0x0baf('0x20'),_0x0baf('0x21'),_0x0baf('0x22'),_0x0baf('0x23'),_0x0baf('0x24'),_0x0baf('0x25'),'phoneBarRemoteControl','phoneBarRemoteControlPort',_0x0baf('0x26'),_0x0baf('0x27'),_0x0baf('0x28'),_0x0baf('0x29'),_0x0baf('0x2a'),_0x0baf('0x2b'),'downloadVoiceRecordings',_0x0baf('0x2c'),_0x0baf('0x2d'),_0x0baf('0x2e'),_0x0baf('0x2f'),_0x0baf('0x30'),_0x0baf('0x31'),'emailAutoanswer','emailAutoanswerDelay',_0x0baf('0x32'),_0x0baf('0x33'),_0x0baf('0x34'),_0x0baf('0x35'),_0x0baf('0x36'),_0x0baf('0x37'),_0x0baf('0x38'),_0x0baf('0x39'),_0x0baf('0x3a')];exports[_0x0baf('0x3b')]=function(){return this['isAuthenticated'](!![])[_0x0baf('0x3c')](function(_0x482522,_0xf6c158,_0x5dbf00){if(_0x482522['user']){_0x5dbf00();}else{return db[_0x0baf('0x3d')]['findOne']({'where':{'id':_0x482522['params']['id']},'attributes':['id',_0x0baf('0x3e'),_0x0baf('0x3f')],'raw':!![]})[_0x0baf('0x40')](function(_0x19d9fd){if(_0x19d9fd&&_0x19d9fd[_0x0baf('0x3e')]){return _0xf6c158['status'](_0x19d9fd[_0x0baf('0x3f')]===_0x0baf('0x41')?0x195:0x193)[_0x0baf('0x42')]({'message':_0x19d9fd[_0x0baf('0x3f')]===_0x0baf('0x41')?_0x0baf('0x43'):_0x0baf('0x44')});}else{_0x5dbf00();}})['catch'](function(_0x1590b4){_0x5dbf00(_0x1590b4);});}});};exports[_0x0baf('0x45')]=function isAuthenticated(_0xcaf13d){return compose()[_0x0baf('0x3c')](function(_0x55c715,_0x29dbdf,_0x34a58a){var _0x5d9d7f;if(_0x55c715[_0x0baf('0x46')][_0x0baf('0x47')]){if(_[_0x0baf('0x48')](_0x55c715[_0x0baf('0x46')][_0x0baf('0x47')],_0x0baf('0x49'))){var _0x213a6a=basicAuth(_0x55c715);db['User'][_0x0baf('0x4a')]({'where':{'name':_0x213a6a[_0x0baf('0xf')]}})[_0x0baf('0x40')](function(_0x3ed995){if(!_0x3ed995||!_0x3ed995[_0x0baf('0x4b')](_0x213a6a[_0x0baf('0x4c')])){return _0x29dbdf[_0x0baf('0x4d')](0x191)[_0x0baf('0x42')]({'message':_0x0baf('0x4e')});}_0x55c715[_0x0baf('0x4f')]={'id':_0x3ed995['id']};_0x34a58a();})[_0x0baf('0x50')](function(_0x165d14){_0x34a58a(_0x165d14);});}else if(_[_0x0baf('0x48')](_0x55c715[_0x0baf('0x46')]['authorization'],_0x0baf('0x51'))){validateJwt(_0x55c715,_0x29dbdf,_0x34a58a);}else{if(_0xcaf13d){_0x34a58a();}else{return _0x29dbdf['status'](0x193)[_0x0baf('0x42')]({'message':_0x0baf('0x52')});}}}else if(_0x55c715[_0x0baf('0x53')][_0x0baf('0x54')]){try{var _0x5300a5={'audience':hardwareConf[_0x0baf('0x55')](),'issuer':hardwareConf[_0x0baf('0x55')]()};verifyJwt(_0x55c715['query'][_0x0baf('0x54')],_0x5300a5)[_0x0baf('0x40')](function(_0x62a2ed){return db[_0x0baf('0x56')][_0x0baf('0x4a')]({'where':{'id':_0x62a2ed[_0x0baf('0x57')]}})[_0x0baf('0x40')](function(_0x675461){_0x5d9d7f=_0x675461;return db['Setting'][_0x0baf('0x58')]({'where':{'id':0x1},'attributes':[_0x0baf('0x59'),'blockDuration'],'raw':!![]});})[_0x0baf('0x40')](function(_0x57783c){if(!_0x5d9d7f||!_['isEqual'](_0x5d9d7f[_0x0baf('0x5a')],_0x62a2ed[_0x0baf('0x5b')])){return _0x29dbdf['status'](0x191)['json']({'message':_0x0baf('0x5c')});}if(_0x5d9d7f[_0x0baf('0x5d')]){return _0x29dbdf[_0x0baf('0x4d')](0x191)[_0x0baf('0x42')]({'message':_0x0baf('0x5e')});}if(_0x5d9d7f[_0x0baf('0x5f')]){if(_0x57783c[_0x0baf('0x60')]>0x0){if(moment(_0x5d9d7f[_0x0baf('0x61')])[_0x0baf('0x62')](_0x57783c[_0x0baf('0x60')],_0x0baf('0x63'))>moment()){return _0x29dbdf[_0x0baf('0x4d')](0x191)[_0x0baf('0x42')]({'message':_0x0baf('0x5e')});}}else{return _0x29dbdf['status'](0x191)[_0x0baf('0x42')]({'message':_0x0baf('0x5e')});}}_0x55c715['user']={'id':_0x5d9d7f['id']};_0x34a58a();});})[_0x0baf('0x50')](function(){return _0x29dbdf[_0x0baf('0x4d')](0x191)[_0x0baf('0x42')]({'message':_0x0baf('0x5e')});});}catch(_0x2e20c8){_0x34a58a(_0x2e20c8);}}else if(_0xcaf13d){_0x34a58a();}else{return _0x29dbdf[_0x0baf('0x4d')](0x193)['json']({'message':_0x0baf('0x52')});}})[_0x0baf('0x3c')](function(_0x540c41,_0x35d442,_0x412e6f){if(_0x540c41[_0x0baf('0x4f')]){db[_0x0baf('0x56')]['find']({'where':{'id':_0x540c41[_0x0baf('0x4f')]['id']},'attributes':userAttributes})[_0x0baf('0x40')](function(_0x301412){if(!_0x301412){return _0x35d442[_0x0baf('0x4d')](0x194)[_0x0baf('0x42')]({'message':_0x0baf('0x64')});}_0x540c41[_0x0baf('0x4f')]=_0x301412;_0x412e6f();})[_0x0baf('0x50')](function(_0xce1bf0){_0x412e6f(_0xce1bf0);});}else if(_0xcaf13d){_0x412e6f();}else{return _0x35d442[_0x0baf('0x4d')](0x194)['json']({'message':_0x0baf('0x65')});}});};exports[_0x0baf('0x66')]=function canUpdate(){return compose()[_0x0baf('0x3c')](function(_0x339aff,_0x22207a,_0x55f4f8){return licenseUtil[_0x0baf('0x67')]()[_0x0baf('0x40')](function(_0x27c3ee){if(_0x27c3ee[_0x0baf('0x68')]){_0x55f4f8();}else{return _0x22207a[_0x0baf('0x4d')](0x193)['json']({'message':_0x0baf('0x69')});}})[_0x0baf('0x50')](function(_0x2fd9bb){_0x55f4f8(_0x2fd9bb);});});};exports[_0x0baf('0x6a')]=function isWebrtcLicence(){return compose()[_0x0baf('0x3c')](function(_0x22d10f,_0x178995,_0x5679d9){return licenseUtil[_0x0baf('0x67')]()[_0x0baf('0x40')](function(_0x3a6489){if(_0x3a6489['webrtc']){_0x5679d9();}else{return _0x178995[_0x0baf('0x4d')](0x193)[_0x0baf('0x42')]({'message':_0x0baf('0x69')});}})[_0x0baf('0x50')](function(_0x204d77){_0x5679d9(_0x204d77);});});};exports[_0x0baf('0x6b')]=function(_0x8905fe,_0x5a54bb,_0x22c451){_0x8905fe[_0x0baf('0x6b')]=!![];return _0x22c451();};exports[_0x0baf('0x6c')]=function signToken(_0x2676eb){return signJwt(_0x2676eb);};exports[_0x0baf('0x6d')]=function(_0xc427b2,_0x40d4a6){if(!_0xc427b2[_0x0baf('0x4f')]){return _0x40d4a6[_0x0baf('0x4d')](0x194)[_0x0baf('0x42')]({'message':_0x0baf('0x6e')});}var _0x58c33f={'payload':{'id':_0xc427b2['user']['id'],'role':_0xc427b2[_0x0baf('0x4f')][_0x0baf('0xe')]},'options':{'expiresIn':0x15180}};return signJwt(_0x58c33f)[_0x0baf('0x40')](function(_0xb8fa28){_0x40d4a6[_0x0baf('0x6f')](_0x0baf('0x70'),_0xb8fa28);_0x40d4a6[_0x0baf('0x71')]('/dashboards/general');})[_0x0baf('0x50')](function(_0x2ef4c1){return _0x40d4a6[_0x0baf('0x4d')](0x1f4)[_0x0baf('0x72')](_0x2ef4c1);});};exports[_0x0baf('0x73')]=function(_0x1e2671){if(_['isNil'](_0x1e2671[_0x0baf('0x5a')])||_['isNil'](_0x1e2671[_0x0baf('0x74')])){return null;}else{return createJwt(_0x1e2671);}};exports['generateApiKey']=function(_0x25a1b2){_0x25a1b2['apiKeyNonce']=generateNonce();_0x25a1b2[_0x0baf('0x74')]=generateIssuedAt();return createJwt(_0x25a1b2);};exports['regenerateApiKey']=function(_0x1b66fa,_0xcf7b8d){var _0x411c1f=_0x1b66fa[_0x0baf('0x53')][_0x0baf('0x54')];if(_0x411c1f){var _0x576475={'nonce':_0xcf7b8d[_0x0baf('0x5a')],'iat':_0xcf7b8d[_0x0baf('0x74')],'audience':hardwareConf[_0x0baf('0x55')](),'issuer':hardwareConf[_0x0baf('0x55')]()};return verifyJwt(_0x411c1f,_0x576475)[_0x0baf('0x40')](function(){return generateApiKey(_0xcf7b8d);});}else{throw{'message':_0x0baf('0x75')};}};exports['validatePasswordPattern']=function(_0x402f4d){var _0x2771a2=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x2771a2[_0x0baf('0x76')](_0x402f4d))throw new db[(_0x0baf('0x77'))][(_0x0baf('0x78'))](_0x0baf('0x79'));return;};exports[_0x0baf('0x7a')]=function(_0x565292,_0x48e855,_0x23f6ea){var _0x11e18a=encryptor[_0x0baf('0x7b')](_0x48e855)[_0x0baf('0x7c')](',');for(var _0x3128aa=0x0;_0x3128aa<_0x23f6ea;_0x3128aa++){if(!_0x11e18a[_0x3128aa])break;if(_0x565292[_0x0baf('0x7d')]()===_0x11e18a[_0x3128aa][_0x0baf('0x7d')]()){var _0x14a667=util[_0x0baf('0x7e')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x23f6ea);if(_0x23f6ea===0x1){_0x14a667=_0x0baf('0x7f');}throw new db[(_0x0baf('0x77'))][(_0x0baf('0x78'))](_0x14a667);}}return;};exports[_0x0baf('0x80')]=function(_0x2024e2,_0xebfc0c){var _0x26f5c9=_0xebfc0c?encryptor['decryptString'](_0xebfc0c)[_0x0baf('0x7c')](','):[];if(_0x26f5c9[_0x0baf('0x81')]===0x5){_0x26f5c9[_0x0baf('0x82')](-0x1,0x1);}_0x26f5c9[_0x0baf('0x83')](_0x2024e2);return encryptor[_0x0baf('0x84')](_0x26f5c9[_0x0baf('0x85')](','));};function signJwt(_0x14e6d0){var _0x12543e=BPromise['promisify'](jwt[_0x0baf('0x86')],{'context':jwt});var _0x5dc434=_0x14e6d0[_0x0baf('0x87')]||config['secrets']['session'];return new BPromise(function(_0x25a0c4,_0x4a2cb0){_0x12543e(_0x14e6d0[_0x0baf('0x88')],_0x5dc434,_0x14e6d0[_0x0baf('0x89')])['then'](function(_0x7fc9ae){_0x25a0c4(_0x7fc9ae);})[_0x0baf('0x50')](function(_0x156572){_0x4a2cb0(_0x156572);});});}function verifyJwt(_0x5b3c1d,_0x4d89f4,_0x2438df){var _0x7e8946=BPromise[_0x0baf('0x8a')](jwt[_0x0baf('0x8b')],{'context':jwt});var _0x784e1a=_0x2438df||config['secrets'][_0x0baf('0xd')];return new BPromise(function(_0x4c02ca,_0x5d5751){_0x7e8946(_0x5b3c1d,_0x784e1a,_0x4d89f4)['then'](function(_0x427ed1){_0x4c02ca(_0x427ed1);})['catch'](function(_0x4946d4){_0x5d5751(_0x4946d4);});});}function generateNonce(){return crypto[_0x0baf('0x8c')](0x10)[_0x0baf('0x8d')](_0x0baf('0x8e'));}function generateIssuedAt(){return Math[_0x0baf('0x8f')](Date[_0x0baf('0x90')]()/0x3e8)[_0x0baf('0x8d')]();}function createJwt(_0x4c05d6){var _0xec3b32={'payload':{'iat':_0x4c05d6[_0x0baf('0x74')],'nonce':_0x4c05d6[_0x0baf('0x5a')]},'options':{'algorithm':_0x0baf('0x91'),'subject':_0x4c05d6['id'][_0x0baf('0x8d')](),'issuer':hardwareConf[_0x0baf('0x55')](),'audience':hardwareConf['getUuid']()}};return signJwt(_0xec3b32)[_0x0baf('0x40')](function(_0x468363){return{'iat':_0x4c05d6[_0x0baf('0x74')],'nonce':_0x4c05d6['apiKeyNonce'],'token':_0x468363};});}
\ No newline at end of file
+var _0x087b=['../../mysqldb','../../config/environment','../encryptor','jsonwebtoken','express-jwt','composable-middleware','basic-auth','crypto','bluebird','util','moment','secrets','session','role','fullname','name','internal','email','userpic','permissions','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','pauseType','lastLoginAt','lastPauseAt','crudPermissions','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControlPort','hotdesk','userProfileId','privacyEnabled','settingsEnabled','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','chatAutoanswer','chatAutoanswerDelay','emailAutoanswer','emailAutoanswerDelay','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswer','whatsappAutoanswerDelay','messengerSoundNotification','isChatInteractionAuthorized','isAuthenticated','user','ChatInteraction','params','closed','disposition','unmanaged','json','Unmanaged.','Forbidden.','catch','use','headers','authorization','startsWith','Basic','then','authenticate','pass','status','Wrong\x20credentials.','Bearer','query','apikey','getUuid','sub','Setting','findOne','blockDuration','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','add','minutes','Unknown\x20authorization\x20format','User','find','canUpdate','update','Forbidden','isWebrtcLicence','getLicense','signToken','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyIat','regenerateApiKey','validatePasswordPattern','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','splice','unshift','encryptString','promisify','sign','secret','payload','options','verify','toString','hex','floor','now','HS512'];(function(_0x39f34f,_0x298f45){var _0x59fee1=function(_0x6ebbb7){while(--_0x6ebbb7){_0x39f34f['push'](_0x39f34f['shift']());}};_0x59fee1(++_0x298f45);}(_0x087b,0x11a));var _0xb087=function(_0x39e84d,_0x11931d){_0x39e84d=_0x39e84d-0x0;var _0x1991bc=_0x087b[_0x39e84d];return _0x1991bc;};'use strict';var db=require(_0xb087('0x0'))['db'];var config=require(_0xb087('0x1'));var hardwareConf=require('../../config/license/hardware');var licenseUtil=require('../../config/license/util');var encryptor=require(_0xb087('0x2'));var _=require('lodash');var jwt=require(_0xb087('0x3'));var expressJwt=require(_0xb087('0x4'));var compose=require(_0xb087('0x5'));var basicAuth=require(_0xb087('0x6'));var crypto=require(_0xb087('0x7'));var BPromise=require(_0xb087('0x8'));var util=require(_0xb087('0x9'));var moment=require(_0xb087('0xa'));var validateJwt=expressJwt({'secret':config[_0xb087('0xb')][_0xb087('0xc')]});var userAttributes=['id',_0xb087('0xd'),_0xb087('0xe'),_0xb087('0xf'),_0xb087('0x10'),_0xb087('0x11'),_0xb087('0x12'),_0xb087('0x13'),'md5secret',_0xb087('0x14'),_0xb087('0x15'),_0xb087('0x16'),_0xb087('0x17'),_0xb087('0x18'),_0xb087('0x19'),_0xb087('0x1a'),'showWebBar',_0xb087('0x1b'),_0xb087('0x1c'),_0xb087('0x1d'),'allowmessenger',_0xb087('0x1e'),_0xb087('0x1f'),_0xb087('0x20'),_0xb087('0x21'),_0xb087('0x22'),_0xb087('0x23'),_0xb087('0x24'),_0xb087('0x25'),_0xb087('0x26'),_0xb087('0x27'),'phoneBarRemoteControl',_0xb087('0x28'),_0xb087('0x29'),'interface',_0xb087('0x2a'),_0xb087('0x2b'),_0xb087('0x2c'),'wssPort',_0xb087('0x2d'),_0xb087('0x2e'),_0xb087('0x2f'),_0xb087('0x30'),'selectRecallMeCampaign',_0xb087('0x31'),_0xb087('0x32'),_0xb087('0x33'),_0xb087('0x34'),'smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','openchannelAutoanswerDelay',_0xb087('0x35'),_0xb087('0x36'),_0xb087('0x37'),_0xb087('0x38'),_0xb087('0x39')];exports[_0xb087('0x3a')]=function(){return this[_0xb087('0x3b')](!![])['use'](function(_0x1d1424,_0x466397,_0x1de654){if(_0x1d1424[_0xb087('0x3c')]){_0x1de654();}else{return db[_0xb087('0x3d')]['findOne']({'where':{'id':_0x1d1424[_0xb087('0x3e')]['id']},'attributes':['id',_0xb087('0x3f'),'disposition'],'raw':!![]})['then'](function(_0x50745a){if(_0x50745a&&_0x50745a['closed']){return _0x466397['status'](_0x50745a[_0xb087('0x40')]===_0xb087('0x41')?0x195:0x193)[_0xb087('0x42')]({'message':_0x50745a[_0xb087('0x40')]===_0xb087('0x41')?_0xb087('0x43'):_0xb087('0x44')});}else{_0x1de654();}})[_0xb087('0x45')](function(_0x6cfb22){_0x1de654(_0x6cfb22);});}});};exports[_0xb087('0x3b')]=function isAuthenticated(_0x18058c){return compose()[_0xb087('0x46')](function(_0xb0baf6,_0x263259,_0x593b78){var _0x37393a;if(_0xb0baf6[_0xb087('0x47')][_0xb087('0x48')]){if(_[_0xb087('0x49')](_0xb0baf6[_0xb087('0x47')][_0xb087('0x48')],_0xb087('0x4a'))){var _0x13fb2f=basicAuth(_0xb0baf6);db['User']['find']({'where':{'name':_0x13fb2f[_0xb087('0xf')]}})[_0xb087('0x4b')](function(_0x4cb5a8){if(!_0x4cb5a8||!_0x4cb5a8[_0xb087('0x4c')](_0x13fb2f[_0xb087('0x4d')])){return _0x263259[_0xb087('0x4e')](0x191)[_0xb087('0x42')]({'message':_0xb087('0x4f')});}_0xb0baf6[_0xb087('0x3c')]={'id':_0x4cb5a8['id']};_0x593b78();})[_0xb087('0x45')](function(_0x3b7ace){_0x593b78(_0x3b7ace);});}else if(_[_0xb087('0x49')](_0xb0baf6[_0xb087('0x47')][_0xb087('0x48')],_0xb087('0x50'))){validateJwt(_0xb0baf6,_0x263259,_0x593b78);}else{if(_0x18058c){_0x593b78();}else{return _0x263259['status'](0x193)[_0xb087('0x42')]({'message':'Unknown\x20authorization\x20format'});}}}else if(_0xb0baf6[_0xb087('0x51')][_0xb087('0x52')]){try{var _0x738e68={'audience':hardwareConf[_0xb087('0x53')](),'issuer':hardwareConf[_0xb087('0x53')]()};verifyJwt(_0xb0baf6[_0xb087('0x51')][_0xb087('0x52')],_0x738e68)[_0xb087('0x4b')](function(_0x8a4c3c){return db['User']['find']({'where':{'id':_0x8a4c3c[_0xb087('0x54')]}})[_0xb087('0x4b')](function(_0x1ce1ef){_0x37393a=_0x1ce1ef;return db[_0xb087('0x55')][_0xb087('0x56')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xb087('0x57')],'raw':!![]});})[_0xb087('0x4b')](function(_0x48524e){if(!_0x37393a||!_['isEqual'](_0x37393a[_0xb087('0x58')],_0x8a4c3c[_0xb087('0x59')])){return _0x263259[_0xb087('0x4e')](0x191)['json']({'message':_0xb087('0x5a')});}if(_0x37393a[_0xb087('0x5b')]){return _0x263259[_0xb087('0x4e')](0x191)[_0xb087('0x42')]({'message':_0xb087('0x5c')});}if(_0x37393a['blocked']){if(_0x48524e[_0xb087('0x57')]>0x0){if(moment(_0x37393a['blockedAt'])[_0xb087('0x5d')](_0x48524e['blockDuration'],_0xb087('0x5e'))>moment()){return _0x263259[_0xb087('0x4e')](0x191)['json']({'message':_0xb087('0x5c')});}}else{return _0x263259['status'](0x191)[_0xb087('0x42')]({'message':'Invalid\x20API\x20access\x20key'});}}_0xb0baf6[_0xb087('0x3c')]={'id':_0x37393a['id']};_0x593b78();});})[_0xb087('0x45')](function(){return _0x263259[_0xb087('0x4e')](0x191)[_0xb087('0x42')]({'message':_0xb087('0x5c')});});}catch(_0x2a4787){_0x593b78(_0x2a4787);}}else if(_0x18058c){_0x593b78();}else{return _0x263259[_0xb087('0x4e')](0x193)['json']({'message':_0xb087('0x5f')});}})['use'](function(_0x2a2b9c,_0x2d71c2,_0x5b6924){if(_0x2a2b9c[_0xb087('0x3c')]){db[_0xb087('0x60')][_0xb087('0x61')]({'where':{'id':_0x2a2b9c['user']['id']},'attributes':userAttributes})[_0xb087('0x4b')](function(_0x4a9ccb){if(!_0x4a9ccb){return _0x2d71c2[_0xb087('0x4e')](0x194)[_0xb087('0x42')]({'message':'User\x20not\x20found.'});}_0x2a2b9c[_0xb087('0x3c')]=_0x4a9ccb;_0x5b6924();})[_0xb087('0x45')](function(_0x4addbd){_0x5b6924(_0x4addbd);});}else if(_0x18058c){_0x5b6924();}else{return _0x2d71c2[_0xb087('0x4e')](0x194)[_0xb087('0x42')]({'message':'User\x20object\x20not\x20found.'});}});};exports[_0xb087('0x62')]=function canUpdate(){return compose()[_0xb087('0x46')](function(_0x1d7f80,_0x174c10,_0x58ca9f){return licenseUtil['getLicense']()[_0xb087('0x4b')](function(_0x42e19f){if(_0x42e19f[_0xb087('0x63')]){_0x58ca9f();}else{return _0x174c10[_0xb087('0x4e')](0x193)[_0xb087('0x42')]({'message':_0xb087('0x64')});}})['catch'](function(_0x4a1949){_0x58ca9f(_0x4a1949);});});};exports[_0xb087('0x65')]=function isWebrtcLicence(){return compose()['use'](function(_0x3a405b,_0x3966f4,_0x2a1823){return licenseUtil[_0xb087('0x66')]()['then'](function(_0x2be4f2){if(_0x2be4f2['webrtc']){_0x2a1823();}else{return _0x3966f4[_0xb087('0x4e')](0x193)[_0xb087('0x42')]({'message':_0xb087('0x64')});}})[_0xb087('0x45')](function(_0x46b12c){_0x2a1823(_0x46b12c);});});};exports['isMiddleware']=function(_0x21506f,_0xb15e28,_0x588d96){_0x21506f['isMiddleware']=!![];return _0x588d96();};exports[_0xb087('0x67')]=function signToken(_0x4f0bc3){return signJwt(_0x4f0bc3);};exports['setTokenCookie']=function(_0x1c9f8f,_0x341665){if(!_0x1c9f8f['user']){return _0x341665[_0xb087('0x4e')](0x194)[_0xb087('0x42')]({'message':_0xb087('0x68')});}var _0x48950c={'payload':{'id':_0x1c9f8f['user']['id'],'role':_0x1c9f8f[_0xb087('0x3c')]['role']},'options':{'expiresIn':0x15180}};return signJwt(_0x48950c)['then'](function(_0x1e52e4){_0x341665[_0xb087('0x69')](_0xb087('0x6a'),_0x1e52e4);_0x341665[_0xb087('0x6b')](_0xb087('0x6c'));})[_0xb087('0x45')](function(_0xbd849d){return _0x341665[_0xb087('0x4e')](0x1f4)[_0xb087('0x6d')](_0xbd849d);});};exports[_0xb087('0x6e')]=function(_0x47d47c){if(_[_0xb087('0x6f')](_0x47d47c['apiKeyNonce'])||_[_0xb087('0x6f')](_0x47d47c[_0xb087('0x70')])){return null;}else{return createJwt(_0x47d47c);}};exports['generateApiKey']=function(_0xde0773){_0xde0773[_0xb087('0x58')]=generateNonce();_0xde0773[_0xb087('0x70')]=generateIssuedAt();return createJwt(_0xde0773);};exports[_0xb087('0x71')]=function(_0x401901,_0x3c85d1){var _0x167e90=_0x401901[_0xb087('0x51')][_0xb087('0x52')];if(_0x167e90){var _0x357616={'nonce':_0x3c85d1[_0xb087('0x58')],'iat':_0x3c85d1['apiKeyIat'],'audience':hardwareConf[_0xb087('0x53')](),'issuer':hardwareConf['getUuid']()};return verifyJwt(_0x167e90,_0x357616)[_0xb087('0x4b')](function(){return generateApiKey(_0x3c85d1);});}else{throw{'message':'Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one'};}};exports[_0xb087('0x72')]=function(_0x56c67){var _0x187ffd=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x187ffd[_0xb087('0x73')](_0x56c67))throw new db[(_0xb087('0x74'))][(_0xb087('0x75'))](_0xb087('0x76'));return;};exports[_0xb087('0x77')]=function(_0x3f3091,_0x323e0a,_0x300e9b){var _0x2ee0a3=encryptor[_0xb087('0x78')](_0x323e0a)[_0xb087('0x79')](',');for(var _0x3f6fd7=0x0;_0x3f6fd7<_0x300e9b;_0x3f6fd7++){if(!_0x2ee0a3[_0x3f6fd7])break;if(_0x3f3091[_0xb087('0x7a')]()===_0x2ee0a3[_0x3f6fd7][_0xb087('0x7a')]()){var _0x3185c4=util[_0xb087('0x7b')](_0xb087('0x7c'),_0x300e9b);if(_0x300e9b===0x1){_0x3185c4=_0xb087('0x7d');}throw new db[(_0xb087('0x74'))]['ValidationError'](_0x3185c4);}}return;};exports[_0xb087('0x7e')]=function(_0x1f893a,_0xe81087){var _0x561c40=_0xe81087?encryptor[_0xb087('0x78')](_0xe81087)[_0xb087('0x79')](','):[];if(_0x561c40['length']===0x5){_0x561c40[_0xb087('0x7f')](-0x1,0x1);}_0x561c40[_0xb087('0x80')](_0x1f893a);return encryptor[_0xb087('0x81')](_0x561c40['join'](','));};function signJwt(_0x133c58){var _0x257894=BPromise[_0xb087('0x82')](jwt[_0xb087('0x83')],{'context':jwt});var _0x1842a2=_0x133c58[_0xb087('0x84')]||config[_0xb087('0xb')][_0xb087('0xc')];return new BPromise(function(_0x4ff2db,_0x3cad9b){_0x257894(_0x133c58[_0xb087('0x85')],_0x1842a2,_0x133c58[_0xb087('0x86')])['then'](function(_0x812ed2){_0x4ff2db(_0x812ed2);})['catch'](function(_0x4a2441){_0x3cad9b(_0x4a2441);});});}function verifyJwt(_0x3516d4,_0x338b13,_0x48c00c){var _0x298fdb=BPromise['promisify'](jwt[_0xb087('0x87')],{'context':jwt});var _0x1a8237=_0x48c00c||config['secrets']['session'];return new BPromise(function(_0x22219d,_0x5c43c8){_0x298fdb(_0x3516d4,_0x1a8237,_0x338b13)['then'](function(_0x3c97ab){_0x22219d(_0x3c97ab);})['catch'](function(_0x34ad78){_0x5c43c8(_0x34ad78);});});}function generateNonce(){return crypto['randomBytes'](0x10)[_0xb087('0x88')](_0xb087('0x89'));}function generateIssuedAt(){return Math[_0xb087('0x8a')](Date[_0xb087('0x8b')]()/0x3e8)[_0xb087('0x88')]();}function createJwt(_0x3174bb){var _0x490cd7={'payload':{'iat':_0x3174bb[_0xb087('0x70')],'nonce':_0x3174bb['apiKeyNonce']},'options':{'algorithm':_0xb087('0x8c'),'subject':_0x3174bb['id'][_0xb087('0x88')](),'issuer':hardwareConf[_0xb087('0x53')](),'audience':hardwareConf['getUuid']()}};return signJwt(_0x490cd7)[_0xb087('0x4b')](function(_0x5d935c){return{'iat':_0x3174bb[_0xb087('0x70')],'nonce':_0x3174bb[_0xb087('0x58')],'token':_0x5d935c};});}
\ No newline at end of file
index b3e128c..4f217e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa691=['resolve','then','search','parseQueryParameters','where','default','fields','filter','user','tags','skip','checkListsRestrictions','tag','count','User','buildContactsQuery','clause','getFilteredContacts','rows','catch','describe','keys','startsWith','cf_','map','CmCustomField','slice','all','length','fieldType','type','lodash','./sql-utils','../../mysqldb','findAll','skipContactsQuery','getContactsSubquery'];(function(_0x54c156,_0x740785){var _0x5d21d1=function(_0x3afb66){while(--_0x3afb66){_0x54c156['push'](_0x54c156['shift']());}};_0x5d21d1(++_0x740785);}(_0xa691,0xd8));var _0x1a69=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xa691[_0x465028];return _0xb783d4;};'use strict';var _=require(_0x1a69('0x0'));var sqlUtils=require(_0x1a69('0x1'));var db=require(_0x1a69('0x2'))['db'];exports[_0x1a69('0x3')]=function(_0x27c55d,_0x1c1245,_0x3dbb53,_0x50a057){var _0x167af2={'count':0x0,'rows':[]};var _0x3f3b16=sqlUtils[_0x1a69('0x4')](_0x1c1245,_0x27c55d);if(_0x3f3b16){return Promise['resolve'](_0x167af2);}var _0xe1c1d6=sqlUtils[_0x1a69('0x5')]();var _0xf1ba36={};var _0x956852=![];var _0x3c7f15=![];return Promise[_0x1a69('0x6')]()[_0x1a69('0x7')](function(){if(_0x27c55d[_0x1a69('0x8')]){return sqlUtils['parseAdvancedSearchFilter'](_0x27c55d[_0x1a69('0x8')],_0x50a057);}else{return sqlUtils[_0x1a69('0x9')](_0x27c55d,_0x50a057);}})[_0x1a69('0x7')](function(_0x573174){_0xe1c1d6[_0x1a69('0xa')](_0x573174[_0x1a69('0xb')]);_0xe1c1d6[_0x1a69('0xa')](_0x573174[_0x1a69('0xc')]);_0xe1c1d6['where'](_0x573174[_0x1a69('0xd')]);_0xe1c1d6[_0x1a69('0xa')](_0x573174[_0x1a69('0xe')]['clause']);_0xf1ba36=_0x573174[_0x1a69('0xf')];_0x3c7f15=_0x573174['user'][_0x1a69('0x10')];return sqlUtils[_0x1a69('0x11')](_0x1c1245,_0x27c55d,_0x3c7f15);})['then'](function(_0x5c74ed){_0xe1c1d6['where'](_0x5c74ed);var _0x2569a8=_0x27c55d[_0x1a69('0x8')]?_0xf1ba36['ids']:_0x27c55d[_0x1a69('0x12')];_0x956852=_0x2569a8?!![]:![];return sqlUtils['countFilteredContacts'](_0xe1c1d6,_0x2569a8);})[_0x1a69('0x7')](function(_0x13ecd2){_0x167af2[_0x1a69('0x13')]=_0x13ecd2;if(_0x167af2['count']===0x0){return;}if(_0x27c55d[_0x1a69('0x14')]){_0x3c7f15=!![];}return sqlUtils[_0x1a69('0x15')](_0xe1c1d6,_0x27c55d[_0x1a69('0xc')],_0x3dbb53,_0x956852,_0xf1ba36[_0x1a69('0x16')],_0x3c7f15);})['then'](function(_0x49446f){if(!_0x49446f){return[];}return sqlUtils[_0x1a69('0x17')](_0x49446f,_0x27c55d,_0x3dbb53);})['then'](function(_0x44172c){_0x167af2[_0x1a69('0x18')]=_0x44172c;return _0x167af2;})[_0x1a69('0x19')](function(_0x115c43){throw _0x115c43;});};exports[_0x1a69('0x1a')]=function(){var _0x52a2cb={};var _0x141639=[];return db['CmContact'][_0x1a69('0x1a')]()['then'](function(_0x3f907c){_0x52a2cb=_0x3f907c;var _0x5a0515=Object[_0x1a69('0x1b')](_0x52a2cb)[_0x1a69('0xd')](function(_0xf730ac){return _[_0x1a69('0x1c')](_0xf730ac,_0x1a69('0x1d'))?_0xf730ac:undefined;});var _0x54ebbe=_0x5a0515[_0x1a69('0x1e')](function(_0x39561a){return db[_0x1a69('0x1f')]['findOne']({'where':{'id':_0x39561a[_0x1a69('0x20')](0x3)},'raw':!![]});});return Promise[_0x1a69('0x21')](_0x54ebbe);})[_0x1a69('0x7')](function(_0x40fcc7){for(var _0x132186=0x0;_0x132186<_0x40fcc7[_0x1a69('0x22')];_0x132186++){if(_0x40fcc7[_0x132186]){var _0x5e14ee='cf_'+_0x40fcc7[_0x132186]['id'];_0x52a2cb[_0x5e14ee][_0x1a69('0x23')]=_0x40fcc7[_0x132186][_0x1a69('0x24')];}}_0x141639=_[_0x1a69('0x1e')](Object[_0x1a69('0x1b')](_0x52a2cb),function(_0x30dc84){return{'name':_0x30dc84,'type':_0x52a2cb[_0x30dc84][_0x1a69('0x24')]};});return _0x141639;})['catch'](function(_0x1535df){throw _0x1535df;});};
\ No newline at end of file
+var _0x49e1=['then','where','default','fields','clause','tags','checkListsRestrictions','ids','countFilteredContacts','count','getFilteredContacts','catch','CmContact','describe','keys','filter','cf_','map','CmCustomField','slice','all','length','fieldType','lodash','./sql-utils','../../mysqldb','findAll','skipContactsQuery','resolve','search','parseAdvancedSearchFilter','parseQueryParameters'];(function(_0xd49e50,_0x14a197){var _0x2c9e00=function(_0x2bcd47){while(--_0x2bcd47){_0xd49e50['push'](_0xd49e50['shift']());}};_0x2c9e00(++_0x14a197);}(_0x49e1,0x157));var _0x149e=function(_0x190d55,_0x541af){_0x190d55=_0x190d55-0x0;var _0x2d1560=_0x49e1[_0x190d55];return _0x2d1560;};'use strict';var _=require(_0x149e('0x0'));var sqlUtils=require(_0x149e('0x1'));var db=require(_0x149e('0x2'))['db'];exports[_0x149e('0x3')]=function(_0x3738a0,_0x26661d,_0x537363,_0x723498){var _0x371ddb={'count':0x0,'rows':[]};var _0x182d33=sqlUtils[_0x149e('0x4')](_0x26661d,_0x3738a0);if(_0x182d33){return Promise[_0x149e('0x5')](_0x371ddb);}var _0x38cbcb=sqlUtils['getContactsSubquery']();var _0x4638a5={};var _0x34d740=![];var _0x45648b=![];return Promise['resolve']()['then'](function(){if(_0x3738a0[_0x149e('0x6')]){return sqlUtils[_0x149e('0x7')](_0x3738a0[_0x149e('0x6')],_0x723498);}else{return sqlUtils[_0x149e('0x8')](_0x3738a0,_0x723498);}})[_0x149e('0x9')](function(_0x5d97a3){_0x38cbcb[_0x149e('0xa')](_0x5d97a3[_0x149e('0xb')]);_0x38cbcb['where'](_0x5d97a3[_0x149e('0xc')]);_0x38cbcb[_0x149e('0xa')](_0x5d97a3['filter']);_0x38cbcb['where'](_0x5d97a3['user'][_0x149e('0xd')]);_0x4638a5=_0x5d97a3[_0x149e('0xe')];_0x45648b=_0x5d97a3['user']['skip'];return sqlUtils[_0x149e('0xf')](_0x26661d,_0x3738a0,_0x45648b);})[_0x149e('0x9')](function(_0x2e08bc){_0x38cbcb['where'](_0x2e08bc);var _0x108f64=_0x3738a0['search']?_0x4638a5[_0x149e('0x10')]:_0x3738a0['tag'];_0x34d740=_0x108f64?!![]:![];return sqlUtils[_0x149e('0x11')](_0x38cbcb,_0x108f64);})[_0x149e('0x9')](function(_0xaacc49){_0x371ddb['count']=_0xaacc49;if(_0x371ddb[_0x149e('0x12')]===0x0){return;}if(_0x3738a0['User']){_0x45648b=!![];}return sqlUtils['buildContactsQuery'](_0x38cbcb,_0x3738a0[_0x149e('0xc')],_0x537363,_0x34d740,_0x4638a5['clause'],_0x45648b);})[_0x149e('0x9')](function(_0x57adbd){if(!_0x57adbd){return[];}return sqlUtils[_0x149e('0x13')](_0x57adbd,_0x3738a0,_0x537363);})[_0x149e('0x9')](function(_0x289f25){_0x371ddb['rows']=_0x289f25;return _0x371ddb;})[_0x149e('0x14')](function(_0x42c36c){throw _0x42c36c;});};exports['describe']=function(){var _0x3cd28f={};var _0xb61150=[];return db[_0x149e('0x15')][_0x149e('0x16')]()[_0x149e('0x9')](function(_0x97ac92){_0x3cd28f=_0x97ac92;var _0x192509=Object[_0x149e('0x17')](_0x3cd28f)[_0x149e('0x18')](function(_0x2c2674){return _['startsWith'](_0x2c2674,_0x149e('0x19'))?_0x2c2674:undefined;});var _0x3e7aad=_0x192509[_0x149e('0x1a')](function(_0x269484){return db[_0x149e('0x1b')]['findOne']({'where':{'id':_0x269484[_0x149e('0x1c')](0x3)},'raw':!![]});});return Promise[_0x149e('0x1d')](_0x3e7aad);})[_0x149e('0x9')](function(_0x4f3a3a){for(var _0x4de2b0=0x0;_0x4de2b0<_0x4f3a3a[_0x149e('0x1e')];_0x4de2b0++){if(_0x4f3a3a[_0x4de2b0]){var _0x146de1='cf_'+_0x4f3a3a[_0x4de2b0]['id'];_0x3cd28f[_0x146de1][_0x149e('0x1f')]=_0x4f3a3a[_0x4de2b0]['type'];}}_0xb61150=_['map'](Object[_0x149e('0x17')](_0x3cd28f),function(_0x2f599c){return{'name':_0x2f599c,'type':_0x3cd28f[_0x2f599c]['type']};});return _0xb61150;})[_0x149e('0x14')](function(_0x2f5ddc){throw _0x2f5ddc;});};
\ No newline at end of file
index 917f7c3..c2a257d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7a6=['tag','filter','getLists','c.ListId\x20IS\x20NULL','group','limit','offset','subqry.id','having','order','forEach','DESC','subqry.','Tag','findAll','color','keyBy','Sequelize','QueryTypes','CmContact','sequelize','toString','Tags','clone','COUNT(*)','c.id','isEmpty','t.id\x20IN\x20?','SELECT','query','squel','../parsers/advancedSearch','../parsers/qs','../../mysqldb','agent','search','true','select','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','ct.CmContactId\x20=\x20','tools_tags','t.id\x20=\x20ct.TagId','fax','email','CompanyId','createdAt','updatedAt','deletedAt','TagIds','includes','push','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','length','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','find','name','dateOfBirth','datetime','castTo','DATE','buildExpression','type','default','text','value','start','map','tags','clause','and','ids','User','user','uc.UserId\x20=\x20?','skip','keys','some','Contact','ListId','c.ListId\x20IN\x20?','concat','\x20=\x20?','resolve','then'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0xf7a6,0xf6));var _0x6f7a=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0xf7a6[_0x36ed48];return _0x51c63a;};'use strict';var _=require('lodash');var squel=require(_0x6f7a('0x0'));var as=require(_0x6f7a('0x1'));var qs=require(_0x6f7a('0x2'));var utils=require('../interaction/utils');var db=require(_0x6f7a('0x3'))['db'];function skipContactsQuery(_0x2ad299,_0x5a575c){var _0x26c357=![];if(_0x2ad299['role']===_0x6f7a('0x4')&&!_0x5a575c[_0x6f7a('0x5')]&&!_0x5a575c['ListId']&&_0x5a575c['autocomplete']!==_0x6f7a('0x6')){_0x26c357=!![];}return _0x26c357;}function getContactsSubquery(){return squel[_0x6f7a('0x7')]()[_0x6f7a('0x8')](_0x6f7a('0x9'),'c')[_0x6f7a('0xa')](_0x6f7a('0xb'));}function applyJoinClauses(_0x468bff,_0xbf4528){var _0x5b755c=_0xbf4528?'c':_0x6f7a('0xc');_0x468bff[_0x6f7a('0xd')](_0x6f7a('0xe'),'uc',_0x6f7a('0xf')+_0x5b755c+_0x6f7a('0x10'))[_0x6f7a('0xd')]('cm_contact_has_tags','ct',_0x6f7a('0x11')+_0x5b755c+_0x6f7a('0x10'))[_0x6f7a('0xd')](_0x6f7a('0x12'),'t',_0x6f7a('0x13'));return _0x468bff;}function addFieldsToQuery(_0x4a04e5,_0x4d2a0f,_0x2ee018,_0xbca0f6,_0x3789bc){var _0x2e1cc6=_0x3789bc?'c':'subqry';if(!_0x4d2a0f){_0x4d2a0f=['id','firstName','lastName','phone','mobile',_0x6f7a('0x14'),_0x6f7a('0x15'),'ListId',_0x6f7a('0x16'),_0x6f7a('0x17'),_0x6f7a('0x18'),_0x6f7a('0x19'),_0x6f7a('0x1a')];}else if(!_0x4d2a0f[_0x6f7a('0x1b')]('id')){_0x4d2a0f[_0x6f7a('0x1c')]('id');}var _0x1be995=_0x2ee018&&_0x3789bc||!_0x2ee018&&!_0x3789bc;if(_0xbca0f6){_0x1be995=_0xbca0f6&&_0x3789bc||!_0xbca0f6&&!_0x3789bc;}_0x4d2a0f['forEach'](function(_0x2645e5){if(_0x2645e5===_0x6f7a('0x1a')){if(_0x1be995){_0x4a04e5[_0x6f7a('0x1d')](_0x6f7a('0x1e'),_0x2645e5);}else if(_0x2ee018||_0xbca0f6){_0x4a04e5[_0x6f7a('0x1d')](_0x2e1cc6+'.'+_0x2645e5);}}else{_0x4a04e5[_0x6f7a('0x1d')](_0x2e1cc6+'.'+_0x2645e5);}});return _0x4a04e5;}function getSqlClauses(){var _0x5a1d2a={'default':squel[_0x6f7a('0x1f')](),'fields':squel['expr'](),'filter':squel[_0x6f7a('0x1f')](),'tags':{'clause':squel[_0x6f7a('0x1f')](),'ids':null},'user':{'clause':squel[_0x6f7a('0x1f')](),'skip':![]}};return _0x5a1d2a;}function parseTagParameter(_0x23c4f8){var _0xa57f2c=squel['expr']();if(_0x23c4f8){var _0x3c55ea=utils[_0x6f7a('0x20')](_0x23c4f8);_0x3c55ea['forEach'](function(_0x1228e2){_0xa57f2c['or'](_0x6f7a('0x21'),'%,'+_0x1228e2+',%');});}return _0xa57f2c;}function parseSearchFilter(_0x16cda6){var _0x59357f=squel[_0x6f7a('0x1f')]();if(_0x16cda6){var _0x3d65fb=_0x16cda6[_0x6f7a('0x22')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(_0x3d65fb[_0x6f7a('0x23')]('\x20')[_0x6f7a('0x24')]>0x1){_0x59357f['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x6f7a('0x25')](_0x3d65fb,!![]),null);}else{if(qs[_0x6f7a('0x26')](_0x3d65fb)){_0x59357f['or'](_0x6f7a('0x27'),_0x3d65fb+'%');_0x59357f['or']('c.phone\x20LIKE\x20?',_0x3d65fb+'%');_0x59357f['or'](_0x6f7a('0x28'),_0x3d65fb+'%');_0x59357f['or'](_0x6f7a('0x29'),_0x3d65fb+'%');}else if(qs[_0x6f7a('0x2a')](_0x3d65fb)){_0x59357f['or'](_0x6f7a('0x2b'),_0x3d65fb+'%');}else{_0x59357f['or']('c.firstName\x20LIKE\x20?','%'+_0x3d65fb+'%');_0x59357f['or'](_0x6f7a('0x2c'),'%'+_0x3d65fb+'%');_0x59357f['or'](_0x6f7a('0x2b'),'%'+_0x3d65fb+'%');}}}return _0x59357f;}function parseAdvancedSearchFilter(_0xca4cba,_0x76d633){var _0x2288f7=getSqlClauses();var _0xc46b6=as[_0x6f7a('0x2d')](_0xca4cba);var _0x22fa49=_0xc46b6[_0x6f7a('0x2e')];for(var _0x9c1de3=0x0;_0x9c1de3<_0xc46b6[_0x6f7a('0x2f')][_0x6f7a('0x24')];_0x9c1de3++){var _0x1272c8=_0xc46b6[_0x6f7a('0x2f')][_0x9c1de3];var _0x36c806='c';var _0x424287=_[_0x6f7a('0x30')](_0x76d633,[_0x6f7a('0x31'),_0x1272c8[_0x6f7a('0x1d')]]);if(_0x424287){if(_0x1272c8[_0x6f7a('0x1d')]===_0x6f7a('0x32')||_0x424287['fieldType']===_0x6f7a('0x33')){_0x1272c8[_0x6f7a('0x34')]=_0x6f7a('0x35');}var _0x3fff14=as[_0x6f7a('0x36')](_0x36c806,_0x424287[_0x6f7a('0x37')],_0x1272c8);_0x2288f7[_0x6f7a('0x38')][_0x22fa49](_0x3fff14[_0x6f7a('0x39')],_0x3fff14[_0x6f7a('0x3a')][_0x6f7a('0x3b')],_0x3fff14[_0x6f7a('0x3a')]['end']);}else{if(_0x1272c8[_0x6f7a('0x1d')]==='Tag'){var _0x385282=_0x1272c8[_0x6f7a('0x3a')][_0x6f7a('0x23')](',')[_0x6f7a('0x3c')](function(_0x6a43e8){return Number(_0x6a43e8);});var _0x3588f7=parseTagParameter(_0x385282);_0x2288f7[_0x6f7a('0x3d')][_0x6f7a('0x3e')][_0x6f7a('0x3f')](_0x3588f7);_0x2288f7[_0x6f7a('0x3d')][_0x6f7a('0x40')]=_0x385282;}else if(_0x1272c8[_0x6f7a('0x1d')]===_0x6f7a('0x41')){_0x2288f7[_0x6f7a('0x42')]['clause'][_0x6f7a('0x3f')](_0x6f7a('0x43'),_0x1272c8['value']);_0x2288f7[_0x6f7a('0x42')][_0x6f7a('0x44')]=!![];}}}return _0x2288f7;}function parseModelFields(_0x4015c0,_0x3d9072){var _0x98f3b8=squel['expr']();var _0x4eef8f=_(_0x4015c0)[_0x6f7a('0x45')]()['map'](function(_0x3e3e1f){return _[_0x6f7a('0x46')](_0x3d9072,[_0x6f7a('0x31'),_0x3e3e1f])?_0x3e3e1f:undefined;})['compact']()['value']();if(_0x4015c0[_0x6f7a('0x47')]){_0x4eef8f[_0x6f7a('0x1c')]('Contact');}if(_0x4015c0['User']){_0x4eef8f[_0x6f7a('0x1c')](_0x6f7a('0x41'));}if(_0x4eef8f[_0x6f7a('0x24')]>0x0){_0x4eef8f['forEach'](function(_0x4a9c06){if(_0x4a9c06===_0x6f7a('0x48')){_0x98f3b8[_0x6f7a('0x3f')](_0x6f7a('0x49'),[][_0x6f7a('0x4a')](_0x4015c0[_0x4a9c06]));}else if(_0x4a9c06===_0x6f7a('0x47')){var _0x12fc06='%'+_0x4015c0[_0x4a9c06]+'%';_0x98f3b8[_0x6f7a('0x3f')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x12fc06);}else if(_0x4a9c06===_0x6f7a('0x41')){_0x98f3b8[_0x6f7a('0x3f')](_0x6f7a('0x43'),_0x4015c0[_0x4a9c06]);}else{_0x98f3b8[_0x6f7a('0x3f')]('c.'+_0x4a9c06+_0x6f7a('0x4b'),_0x4015c0[_0x4a9c06]);}});}return _0x98f3b8;}function parseQueryParameters(_0x4db964,_0x4c6edd){var _0x4996ce=getSqlClauses();return Promise[_0x6f7a('0x4c')]()['then'](function(){return parseModelFields(_0x4db964,_0x4c6edd);})[_0x6f7a('0x4d')](function(_0xb71221){_0x4996ce['fields'][_0x6f7a('0x3f')](_0xb71221);return parseTagParameter(_0x4db964[_0x6f7a('0x4e')]);})['then'](function(_0x3e3d13){_0x4996ce[_0x6f7a('0x3d')]['clause'][_0x6f7a('0x3f')](_0x3e3d13);return parseSearchFilter(_0x4db964[_0x6f7a('0x4f')]);})[_0x6f7a('0x4d')](function(_0x48d1e6){_0x4996ce['filter']=_0x48d1e6;return _0x4996ce;});}function checkListsRestrictions(_0x56c9e2,_0x31eb2c,_0x1d9588){var _0x796a2c=squel[_0x6f7a('0x1f')]();return Promise[_0x6f7a('0x4c')]()[_0x6f7a('0x4d')](function(){if(_0x31eb2c[_0x6f7a('0x5')]&&_0x56c9e2['role']==='agent'&&!_0x1d9588){return _0x56c9e2[_0x6f7a('0x50')]({'attributes':['id'],'raw':!![]});}})[_0x6f7a('0x4d')](function(_0x5dc322){if(_0x5dc322){if(_0x5dc322[_0x6f7a('0x24')]===0x0){_0x796a2c[_0x6f7a('0x3f')](_0x6f7a('0x51'));}else{_0x796a2c[_0x6f7a('0x3f')](_0x6f7a('0x49'),_[_0x6f7a('0x3c')](_0x5dc322,'id'));}}})[_0x6f7a('0x4d')](function(){return _0x796a2c;});}function buildContactsQuery(_0x5c5e7f,_0x1448f1,_0x3da663,_0x51e7af,_0xbd3a03,_0x1bf088){if(_0x1448f1){_0x1448f1=_0x3da663['attributes'];}_0x5c5e7f=addFieldsToQuery(_0x5c5e7f,_0x1448f1,_0x51e7af,_0x1bf088,!![]);var _0x1772e0=squel[_0x6f7a('0x7')]();_0x1772e0=addFieldsToQuery(_0x1772e0,_0x1448f1,_0x51e7af,_0x1bf088,![]);if(_0x51e7af||_0x1bf088){_0x5c5e7f=applyJoinClauses(_0x5c5e7f,!![]);_0x5c5e7f[_0x6f7a('0x52')]('c.id');if(_0x3da663[_0x6f7a('0x53')]){_0x1772e0[_0x6f7a('0x53')](_0x3da663[_0x6f7a('0x53')]);}if(_0x3da663[_0x6f7a('0x54')]){_0x1772e0[_0x6f7a('0x54')](_0x3da663['offset']);}}else{_0x1772e0=applyJoinClauses(_0x1772e0,![]);_0x1772e0[_0x6f7a('0x52')](_0x6f7a('0x55'));if(_0x3da663['limit']){_0x5c5e7f['limit'](_0x3da663[_0x6f7a('0x53')]);}if(_0x3da663[_0x6f7a('0x54')]){_0x5c5e7f[_0x6f7a('0x54')](_0x3da663[_0x6f7a('0x54')]);}}_0x1772e0[_0x6f7a('0x56')](_0xbd3a03);if(_0x3da663['order']){_0x3da663[_0x6f7a('0x57')][_0x6f7a('0x58')](function(_0x1d4d26){_0x5c5e7f[_0x6f7a('0x57')]('c.'+_0x1d4d26[0x0],_0x1d4d26[0x1]===_0x6f7a('0x59')?![]:!![]);_0x1772e0[_0x6f7a('0x57')](_0x6f7a('0x5a')+_0x1d4d26[0x0],_0x1d4d26[0x1]===_0x6f7a('0x59')?![]:!![]);});}_0x1772e0['from'](_0x5c5e7f,_0x6f7a('0xc'));return _0x1772e0;}function getFilteredContacts(_0x36b7d6){var _0x456f31=[];return db[_0x6f7a('0x5b')][_0x6f7a('0x5c')]({'attributes':['id',_0x6f7a('0x31'),_0x6f7a('0x5d')],'raw':!![]})['then'](function(_0x3cc8ae){_0x456f31=_[_0x6f7a('0x5e')](_0x3cc8ae,'id');var _0x2ca6b2={'type':db[_0x6f7a('0x5f')][_0x6f7a('0x60')]['SELECT'],'model':db[_0x6f7a('0x61')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0x6f7a('0x62')]['query'](_0x36b7d6[_0x6f7a('0x63')](),_0x2ca6b2);})[_0x6f7a('0x4d')](function(_0x510837){_0x510837['forEach'](function(_0x348c30){if(_0x348c30[_0x6f7a('0x1a')]){_0x348c30[_0x6f7a('0x64')]=[];_0x348c30[_0x6f7a('0x1a')][_0x6f7a('0x23')](',')[_0x6f7a('0x58')](function(_0x3650ef){_0x348c30[_0x6f7a('0x64')][_0x6f7a('0x1c')](_0x456f31[_0x3650ef]);});}delete _0x348c30['TagIds'];});return _0x510837;});}function countFilteredContacts(_0x3a4325,_0x5e3c86){var _0xb1a520=_0x3a4325[_0x6f7a('0x65')]();_0xb1a520['field'](_0x6f7a('0x66'));_0xb1a520=applyJoinClauses(_0xb1a520,!![]);_0x3a4325[_0x6f7a('0x52')](_0x6f7a('0x67'));var _0x5b08de=utils['getSelectedTags'](_0x5e3c86);if(!_[_0x6f7a('0x68')](_0x5b08de)){_0xb1a520['where'](_0x6f7a('0x69'),_0x5b08de);}var _0x1015d8={'type':db[_0x6f7a('0x5f')][_0x6f7a('0x60')][_0x6f7a('0x6a')],'raw':!![]};return db['sequelize'][_0x6f7a('0x6b')](_0xb1a520[_0x6f7a('0x63')](),_0x1015d8)[_0x6f7a('0x4d')](function(_0x1a366a){return _0x1a366a[0x0][_0x6f7a('0x66')];});}module['exports']={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
+var _0x92fb=['autocomplete','select','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','cm_contact_has_tags','ct.CmContactId\x20=\x20','.id','t.id\x20=\x20ct.TagId','lastName','phone','fax','email','CompanyId','createdAt','updatedAt','deletedAt','TagIds','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','isNumeric','c.phone\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','sqlOperator','conditions','length','name','dateOfBirth','castTo','DATE','buildExpression','type','default','text','value','start','end','split','map','tags','clause','User','uc.UserId\x20=\x20?','user','keys','some','compact','Contact','push','and','then','fields','tag','filter','resolve','agent','getLists','c.ListId\x20IS\x20NULL','c.ListId\x20IN\x20?','attributes','group','c.id','limit','offset','subqry.id','having','order','subqry.','Tag','findAll','color','keyBy','Sequelize','QueryTypes','SELECT','CmContact','sequelize','query','toString','Tags','clone','COUNT(*)','isEmpty','exports','squel','../parsers/qs','../interaction/utils','../../mysqldb','role','search','ListId'];(function(_0x1324c0,_0x3a024e){var _0x5477fc=function(_0x5b9c53){while(--_0x5b9c53){_0x1324c0['push'](_0x1324c0['shift']());}};_0x5477fc(++_0x3a024e);}(_0x92fb,0xcf));var _0xb92f=function(_0x4413cf,_0x3f70e8){_0x4413cf=_0x4413cf-0x0;var _0x9a1479=_0x92fb[_0x4413cf];return _0x9a1479;};'use strict';var _=require('lodash');var squel=require(_0xb92f('0x0'));var as=require('../parsers/advancedSearch');var qs=require(_0xb92f('0x1'));var utils=require(_0xb92f('0x2'));var db=require(_0xb92f('0x3'))['db'];function skipContactsQuery(_0xc64ebd,_0x3a7bcd){var _0x5bd61c=![];if(_0xc64ebd[_0xb92f('0x4')]==='agent'&&!_0x3a7bcd[_0xb92f('0x5')]&&!_0x3a7bcd[_0xb92f('0x6')]&&_0x3a7bcd[_0xb92f('0x7')]!=='true'){_0x5bd61c=!![];}return _0x5bd61c;}function getContactsSubquery(){return squel[_0xb92f('0x8')]()[_0xb92f('0x9')](_0xb92f('0xa'),'c')[_0xb92f('0xb')](_0xb92f('0xc'));}function applyJoinClauses(_0x2f757f,_0x43c53a){var _0x163700=_0x43c53a?'c':_0xb92f('0xd');_0x2f757f[_0xb92f('0xe')](_0xb92f('0xf'),'uc','uc.CmContactId\x20=\x20'+_0x163700+'.id')['left_join'](_0xb92f('0x10'),'ct',_0xb92f('0x11')+_0x163700+_0xb92f('0x12'))[_0xb92f('0xe')]('tools_tags','t',_0xb92f('0x13'));return _0x2f757f;}function addFieldsToQuery(_0x59286f,_0x36f955,_0x3dfeba,_0x180525,_0x541bed){var _0x1685b3=_0x541bed?'c':_0xb92f('0xd');if(!_0x36f955){_0x36f955=['id','firstName',_0xb92f('0x14'),_0xb92f('0x15'),'mobile',_0xb92f('0x16'),_0xb92f('0x17'),_0xb92f('0x6'),_0xb92f('0x18'),_0xb92f('0x19'),_0xb92f('0x1a'),_0xb92f('0x1b'),_0xb92f('0x1c')];}else if(!_0x36f955['includes']('id')){_0x36f955['push']('id');}var _0x529758=_0x3dfeba&&_0x541bed||!_0x3dfeba&&!_0x541bed;if(_0x180525){_0x529758=_0x180525&&_0x541bed||!_0x180525&&!_0x541bed;}_0x36f955['forEach'](function(_0x57943a){if(_0x57943a===_0xb92f('0x1c')){if(_0x529758){_0x59286f[_0xb92f('0x1d')](_0xb92f('0x1e'),_0x57943a);}else if(_0x3dfeba||_0x180525){_0x59286f[_0xb92f('0x1d')](_0x1685b3+'.'+_0x57943a);}}else{_0x59286f[_0xb92f('0x1d')](_0x1685b3+'.'+_0x57943a);}});return _0x59286f;}function getSqlClauses(){var _0x403f34={'default':squel[_0xb92f('0x1f')](),'fields':squel[_0xb92f('0x1f')](),'filter':squel[_0xb92f('0x1f')](),'tags':{'clause':squel[_0xb92f('0x1f')](),'ids':null},'user':{'clause':squel['expr'](),'skip':![]}};return _0x403f34;}function parseTagParameter(_0x30425a){var _0x29691b=squel[_0xb92f('0x1f')]();if(_0x30425a){var _0x2e1247=utils[_0xb92f('0x20')](_0x30425a);_0x2e1247[_0xb92f('0x21')](function(_0xb952fc){_0x29691b['or'](_0xb92f('0x22'),'%,'+_0xb952fc+',%');});}return _0x29691b;}function parseSearchFilter(_0x13f9a0){var _0x2fb07e=squel[_0xb92f('0x1f')]();if(_0x13f9a0){var _0x5687dc=_0x13f9a0[_0xb92f('0x23')]('\x5c','\x5c\x5c')[_0xb92f('0x23')](/'/g,'\x27\x27');if(_0x5687dc['split']('\x20')['length']>0x1){_0x2fb07e['or'](_0xb92f('0x24'),qs['getFullTextValue'](_0x5687dc,!![]),null);}else{if(qs[_0xb92f('0x25')](_0x5687dc)){_0x2fb07e['or']('c.id\x20LIKE\x20?',_0x5687dc+'%');_0x2fb07e['or'](_0xb92f('0x26'),_0x5687dc+'%');_0x2fb07e['or'](_0xb92f('0x27'),_0x5687dc+'%');_0x2fb07e['or'](_0xb92f('0x28'),_0x5687dc+'%');}else if(qs[_0xb92f('0x29')](_0x5687dc)){_0x2fb07e['or'](_0xb92f('0x2a'),_0x5687dc+'%');}else{_0x2fb07e['or'](_0xb92f('0x2b'),'%'+_0x5687dc+'%');_0x2fb07e['or'](_0xb92f('0x2c'),'%'+_0x5687dc+'%');_0x2fb07e['or']('c.email\x20LIKE\x20?','%'+_0x5687dc+'%');}}}return _0x2fb07e;}function parseAdvancedSearchFilter(_0x5cd641,_0x1077e9){var _0x1924c2=getSqlClauses();var _0x3cbf4a=as[_0xb92f('0x2d')](_0x5cd641);var _0xb39df9=_0x3cbf4a[_0xb92f('0x2e')];for(var _0x564ead=0x0;_0x564ead<_0x3cbf4a[_0xb92f('0x2f')][_0xb92f('0x30')];_0x564ead++){var _0x127e76=_0x3cbf4a[_0xb92f('0x2f')][_0x564ead];var _0x5dcf7f='c';var _0x3dfb55=_['find'](_0x1077e9,[_0xb92f('0x31'),_0x127e76[_0xb92f('0x1d')]]);if(_0x3dfb55){if(_0x127e76[_0xb92f('0x1d')]===_0xb92f('0x32')||_0x3dfb55['fieldType']==='datetime'){_0x127e76[_0xb92f('0x33')]=_0xb92f('0x34');}var _0x52b5df=as[_0xb92f('0x35')](_0x5dcf7f,_0x3dfb55[_0xb92f('0x36')],_0x127e76);_0x1924c2[_0xb92f('0x37')][_0xb39df9](_0x52b5df[_0xb92f('0x38')],_0x52b5df[_0xb92f('0x39')][_0xb92f('0x3a')],_0x52b5df['value'][_0xb92f('0x3b')]);}else{if(_0x127e76[_0xb92f('0x1d')]==='Tag'){var _0x3707cd=_0x127e76[_0xb92f('0x39')][_0xb92f('0x3c')](',')[_0xb92f('0x3d')](function(_0x460606){return Number(_0x460606);});var _0x5535c2=parseTagParameter(_0x3707cd);_0x1924c2[_0xb92f('0x3e')][_0xb92f('0x3f')]['and'](_0x5535c2);_0x1924c2[_0xb92f('0x3e')]['ids']=_0x3707cd;}else if(_0x127e76[_0xb92f('0x1d')]===_0xb92f('0x40')){_0x1924c2['user']['clause']['and'](_0xb92f('0x41'),_0x127e76[_0xb92f('0x39')]);_0x1924c2[_0xb92f('0x42')]['skip']=!![];}}}return _0x1924c2;}function parseModelFields(_0x41f0ba,_0x5c8fb0){var _0x417824=squel[_0xb92f('0x1f')]();var _0x33b9c1=_(_0x41f0ba)[_0xb92f('0x43')]()[_0xb92f('0x3d')](function(_0x584b64){return _[_0xb92f('0x44')](_0x5c8fb0,[_0xb92f('0x31'),_0x584b64])?_0x584b64:undefined;})[_0xb92f('0x45')]()[_0xb92f('0x39')]();if(_0x41f0ba[_0xb92f('0x46')]){_0x33b9c1[_0xb92f('0x47')](_0xb92f('0x46'));}if(_0x41f0ba[_0xb92f('0x40')]){_0x33b9c1[_0xb92f('0x47')](_0xb92f('0x40'));}if(_0x33b9c1[_0xb92f('0x30')]>0x0){_0x33b9c1['forEach'](function(_0x294cc1){if(_0x294cc1===_0xb92f('0x6')){_0x417824[_0xb92f('0x48')]('c.ListId\x20IN\x20?',[]['concat'](_0x41f0ba[_0x294cc1]));}else if(_0x294cc1===_0xb92f('0x46')){var _0x2e30d6='%'+_0x41f0ba[_0x294cc1]+'%';_0x417824[_0xb92f('0x48')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x2e30d6);}else if(_0x294cc1===_0xb92f('0x40')){_0x417824[_0xb92f('0x48')](_0xb92f('0x41'),_0x41f0ba[_0x294cc1]);}else{_0x417824[_0xb92f('0x48')]('c.'+_0x294cc1+'\x20=\x20?',_0x41f0ba[_0x294cc1]);}});}return _0x417824;}function parseQueryParameters(_0x4aca97,_0x448d69){var _0x536435=getSqlClauses();return Promise['resolve']()[_0xb92f('0x49')](function(){return parseModelFields(_0x4aca97,_0x448d69);})['then'](function(_0x2ab7d9){_0x536435[_0xb92f('0x4a')][_0xb92f('0x48')](_0x2ab7d9);return parseTagParameter(_0x4aca97[_0xb92f('0x4b')]);})[_0xb92f('0x49')](function(_0x4a5095){_0x536435[_0xb92f('0x3e')][_0xb92f('0x3f')][_0xb92f('0x48')](_0x4a5095);return parseSearchFilter(_0x4aca97[_0xb92f('0x4c')]);})['then'](function(_0x5c315e){_0x536435[_0xb92f('0x4c')]=_0x5c315e;return _0x536435;});}function checkListsRestrictions(_0x4ad484,_0x4e2bea,_0x59bf7d){var _0x290d86=squel[_0xb92f('0x1f')]();return Promise[_0xb92f('0x4d')]()[_0xb92f('0x49')](function(){if(_0x4e2bea[_0xb92f('0x5')]&&_0x4ad484[_0xb92f('0x4')]===_0xb92f('0x4e')&&!_0x59bf7d){return _0x4ad484[_0xb92f('0x4f')]({'attributes':['id'],'raw':!![]});}})['then'](function(_0x12e1ce){if(_0x12e1ce){if(_0x12e1ce['length']===0x0){_0x290d86[_0xb92f('0x48')](_0xb92f('0x50'));}else{_0x290d86[_0xb92f('0x48')](_0xb92f('0x51'),_[_0xb92f('0x3d')](_0x12e1ce,'id'));}}})[_0xb92f('0x49')](function(){return _0x290d86;});}function buildContactsQuery(_0x4620f2,_0x504b3e,_0x5061c7,_0x1d7792,_0x5c156d,_0x414b13){if(_0x504b3e){_0x504b3e=_0x5061c7[_0xb92f('0x52')];}_0x4620f2=addFieldsToQuery(_0x4620f2,_0x504b3e,_0x1d7792,_0x414b13,!![]);var _0x122714=squel['select']();_0x122714=addFieldsToQuery(_0x122714,_0x504b3e,_0x1d7792,_0x414b13,![]);if(_0x1d7792||_0x414b13){_0x4620f2=applyJoinClauses(_0x4620f2,!![]);_0x4620f2[_0xb92f('0x53')](_0xb92f('0x54'));if(_0x5061c7['limit']){_0x122714[_0xb92f('0x55')](_0x5061c7[_0xb92f('0x55')]);}if(_0x5061c7[_0xb92f('0x56')]){_0x122714[_0xb92f('0x56')](_0x5061c7['offset']);}}else{_0x122714=applyJoinClauses(_0x122714,![]);_0x122714[_0xb92f('0x53')](_0xb92f('0x57'));if(_0x5061c7[_0xb92f('0x55')]){_0x4620f2[_0xb92f('0x55')](_0x5061c7[_0xb92f('0x55')]);}if(_0x5061c7[_0xb92f('0x56')]){_0x4620f2[_0xb92f('0x56')](_0x5061c7['offset']);}}_0x122714[_0xb92f('0x58')](_0x5c156d);if(_0x5061c7[_0xb92f('0x59')]){_0x5061c7[_0xb92f('0x59')][_0xb92f('0x21')](function(_0x24a197){_0x4620f2['order']('c.'+_0x24a197[0x0],_0x24a197[0x1]==='DESC'?![]:!![]);_0x122714['order'](_0xb92f('0x5a')+_0x24a197[0x0],_0x24a197[0x1]==='DESC'?![]:!![]);});}_0x122714[_0xb92f('0x9')](_0x4620f2,'subqry');return _0x122714;}function getFilteredContacts(_0x470ed1){var _0x4ce3f4=[];return db[_0xb92f('0x5b')][_0xb92f('0x5c')]({'attributes':['id','name',_0xb92f('0x5d')],'raw':!![]})[_0xb92f('0x49')](function(_0x4fddb0){_0x4ce3f4=_[_0xb92f('0x5e')](_0x4fddb0,'id');var _0xb4bf3a={'type':db[_0xb92f('0x5f')][_0xb92f('0x60')][_0xb92f('0x61')],'model':db[_0xb92f('0x62')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xb92f('0x63')][_0xb92f('0x64')](_0x470ed1[_0xb92f('0x65')](),_0xb4bf3a);})[_0xb92f('0x49')](function(_0x7997bc){_0x7997bc[_0xb92f('0x21')](function(_0x2e9791){if(_0x2e9791[_0xb92f('0x1c')]){_0x2e9791['Tags']=[];_0x2e9791[_0xb92f('0x1c')]['split'](',')[_0xb92f('0x21')](function(_0x36bdfc){_0x2e9791[_0xb92f('0x66')][_0xb92f('0x47')](_0x4ce3f4[_0x36bdfc]);});}delete _0x2e9791[_0xb92f('0x1c')];});return _0x7997bc;});}function countFilteredContacts(_0x1f68a7,_0x485951){var _0xe7f300=_0x1f68a7[_0xb92f('0x67')]();_0xe7f300[_0xb92f('0x1d')](_0xb92f('0x68'));_0xe7f300=applyJoinClauses(_0xe7f300,!![]);_0x1f68a7['group']('c.id');var _0x197133=utils[_0xb92f('0x20')](_0x485951);if(!_[_0xb92f('0x69')](_0x197133)){_0xe7f300[_0xb92f('0xb')]('t.id\x20IN\x20?',_0x197133);}var _0x154537={'type':db['Sequelize']['QueryTypes'][_0xb92f('0x61')],'raw':!![]};return db[_0xb92f('0x63')][_0xb92f('0x64')](_0xe7f300['toString'](),_0x154537)[_0xb92f('0x49')](function(_0xd8158f){return _0xd8158f[0x0][_0xb92f('0x68')];});}module[_0xb92f('0x6a')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
index 8e38bb3..9241f95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda59=['data','update','binary','write','end','final','close','unlink','decryptFile','createWriteStream','createDecipher','encryptString','secret','base64','decryptString','crypto','lodash','../../config/environment','../../config/logger','secrets','session','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createReadStream','createCipher'];(function(_0x2ab4dc,_0x1fea4e){var _0x230724=function(_0x2975e5){while(--_0x2975e5){_0x2ab4dc['push'](_0x2ab4dc['shift']());}};_0x230724(++_0x1fea4e);}(_0xda59,0x1a7));var _0x9da5=function(_0x14980b,_0x5a244d){_0x14980b=_0x14980b-0x0;var _0x2fa455=_0xda59[_0x14980b];return _0x2fa455;};'use strict';var crypto=require(_0x9da5('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require(_0x9da5('0x1'));var config=require(_0x9da5('0x2'));var logger=require(_0x9da5('0x3'))('app');const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config[_0x9da5('0x4')][_0x9da5('0x5')],'algorithm':'aes-256-ctr'};const fileOptions={'algorithm':_0x9da5('0x6')};if(config[_0x9da5('0x7')]&&config['encrypt'][_0x9da5('0x8')]){var isSupported=isAlgorithmSupported(config[_0x9da5('0x7')]['algorithm']);if(isSupported){fileOptions['algorithm']=config[_0x9da5('0x7')][_0x9da5('0x8')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x9da5('0x9')](',\x20');logger[_0x9da5('0xa')](config[_0x9da5('0x7')][_0x9da5('0x8')],_0x9da5('0xb'),supportedAlgorithms);}}function isASupportedCipher(_0x54dbd1){return AES_SUPPORTED_RX['test'](_0x54dbd1);}function getSupportedCiphers(){return crypto[_0x9da5('0xc')]()[_0x9da5('0xd')](isASupportedCipher);}function isAlgorithmSupported(_0x5354f0){return getSupportedCiphers()[_0x9da5('0xe')](_0x5354f0)>-0x1;}function combineOptions(_0x231974){var _0x135592={};for(var _0x4826cb in fileOptions){if(fileOptions[_0x9da5('0xf')](_0x4826cb)){_0x135592[_0x4826cb]=fileOptions[_0x4826cb];}}if(_0x231974){for(var _0x2523b9 in _0x231974){if(_0x231974['hasOwnProperty'](_0x2523b9)){_0x135592[_0x2523b9]=_0x231974[_0x2523b9];}}}return _0x135592;}exports[_0x9da5('0x10')]=function(_0x57e47f,_0x46a1aa,_0x2a030f,_0x179f03){return new BPromise(function(_0x4b3d95,_0x4f9577){_0x179f03=combineOptions(_0x179f03);var _0x47cef3=new Buffer(_0x2a030f);var _0x485aaa=fs[_0x9da5('0x11')](_0x57e47f);var _0xbe556a=fs['createWriteStream'](_0x46a1aa);var _0xd3d313=crypto[_0x9da5('0x12')](_0x179f03['algorithm'],_0x47cef3);_0x485aaa['on'](_0x9da5('0x13'),function(_0x1505c9){var _0x2b33f8=new Buffer(_0xd3d313[_0x9da5('0x14')](_0x1505c9),_0x9da5('0x15'));_0xbe556a[_0x9da5('0x16')](_0x2b33f8);});_0x485aaa['on'](_0x9da5('0x17'),function(){try{var _0x5eb384=new Buffer(_0xd3d313[_0x9da5('0x18')]('binary'),_0x9da5('0x15'));_0xbe556a[_0x9da5('0x16')](_0x5eb384);_0xbe556a[_0x9da5('0x17')]();_0xbe556a['on'](_0x9da5('0x19'),function(){return _0x4b3d95(_0x46a1aa);});}catch(_0x78b4b5){fs[_0x9da5('0x1a')](_0x46a1aa);return _0x4f9577(_0x78b4b5);}});});};exports[_0x9da5('0x1b')]=function(_0x298fbb,_0x341b7d,_0x279c8d,_0x30b102){return new BPromise(function(_0x53735d,_0x296af5){_0x30b102=combineOptions(_0x30b102);var _0x3169ba=new Buffer(_0x279c8d);var _0x21c305=fs[_0x9da5('0x11')](_0x298fbb);var _0x408017=fs[_0x9da5('0x1c')](_0x341b7d);var _0x430955=crypto[_0x9da5('0x1d')](_0x30b102[_0x9da5('0x8')],_0x3169ba);_0x21c305['on'](_0x9da5('0x13'),function(_0x4718e7){var _0x142f98=new Buffer(_0x430955['update'](_0x4718e7),'binary');_0x408017[_0x9da5('0x16')](_0x142f98);});_0x21c305['on']('end',function(){try{var _0x1cfc0f=new Buffer(_0x430955['final']('binary'),'binary');_0x408017[_0x9da5('0x16')](_0x1cfc0f);_0x408017[_0x9da5('0x17')]();_0x408017['on'](_0x9da5('0x19'),function(){return _0x53735d(_0x341b7d);});}catch(_0x3c9ef7){fs[_0x9da5('0x1a')](_0x341b7d);return _0x296af5(_0x3c9ef7);}});});};exports[_0x9da5('0x1e')]=function(_0x5ed244,_0xa297fc,_0x412bb5){var _0xd21e41=_0x412bb5||stringOptions[_0x9da5('0x8')];var _0x1fff31=_0xa297fc||stringOptions[_0x9da5('0x1f')];var _0x2c84b8=crypto[_0x9da5('0x12')](_0xd21e41,_0x1fff31);var _0x438653=_0x2c84b8[_0x9da5('0x14')](_0x5ed244,'utf8',_0x9da5('0x20'));_0x438653+=_0x2c84b8['final'](_0x9da5('0x20'));return _0x438653;};exports[_0x9da5('0x21')]=function(_0x19c27f,_0x190d52,_0x3426e4){var _0x562a23=_0x3426e4||stringOptions[_0x9da5('0x8')];var _0x2e33cf=_0x190d52||stringOptions[_0x9da5('0x1f')];var _0x117638=crypto[_0x9da5('0x1d')](_0x562a23,_0x2e33cf);var _0x365c11=_0x117638[_0x9da5('0x14')](_0x19c27f,_0x9da5('0x20'),'utf8');_0x365c11+=_0x117638[_0x9da5('0x18')]('utf8');return _0x365c11;};
\ No newline at end of file
+var _0x16cd=['createCipher','update','binary','write','end','close','decryptFile','createDecipher','final','unlink','encryptString','secret','base64','decryptString','utf8','crypto','bluebird','lodash','../../config/environment','../../config/logger','app','session','aes192','encrypt','algorithm','join','error','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createReadStream'];(function(_0x3fbe46,_0x12a0d1){var _0x27c406=function(_0x4a1020){while(--_0x4a1020){_0x3fbe46['push'](_0x3fbe46['shift']());}};_0x27c406(++_0x12a0d1);}(_0x16cd,0x104));var _0xd16c=function(_0x54d49e,_0x5d9911){_0x54d49e=_0x54d49e-0x0;var _0x4af0f1=_0x16cd[_0x54d49e];return _0x4af0f1;};'use strict';var crypto=require(_0xd16c('0x0'));var fs=require('fs');var BPromise=require(_0xd16c('0x1'));var _=require(_0xd16c('0x2'));var config=require(_0xd16c('0x3'));var logger=require(_0xd16c('0x4'))(_0xd16c('0x5'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets'][_0xd16c('0x6')],'algorithm':'aes-256-ctr'};const fileOptions={'algorithm':_0xd16c('0x7')};if(config[_0xd16c('0x8')]&&config[_0xd16c('0x8')][_0xd16c('0x9')]){var isSupported=isAlgorithmSupported(config[_0xd16c('0x8')][_0xd16c('0x9')]);if(isSupported){fileOptions[_0xd16c('0x9')]=config[_0xd16c('0x8')][_0xd16c('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()[_0xd16c('0xa')](',\x20');logger[_0xd16c('0xb')](config[_0xd16c('0x8')][_0xd16c('0x9')],_0xd16c('0xc'),supportedAlgorithms);}}function isASupportedCipher(_0x89aefc){return AES_SUPPORTED_RX[_0xd16c('0xd')](_0x89aefc);}function getSupportedCiphers(){return crypto[_0xd16c('0xe')]()[_0xd16c('0xf')](isASupportedCipher);}function isAlgorithmSupported(_0x390915){return getSupportedCiphers()[_0xd16c('0x10')](_0x390915)>-0x1;}function combineOptions(_0x1aaaf2){var _0x1505bc={};for(var _0x534f19 in fileOptions){if(fileOptions[_0xd16c('0x11')](_0x534f19)){_0x1505bc[_0x534f19]=fileOptions[_0x534f19];}}if(_0x1aaaf2){for(var _0x5b77e6 in _0x1aaaf2){if(_0x1aaaf2[_0xd16c('0x11')](_0x5b77e6)){_0x1505bc[_0x5b77e6]=_0x1aaaf2[_0x5b77e6];}}}return _0x1505bc;}exports[_0xd16c('0x12')]=function(_0x210c83,_0x28e3ad,_0x5bb308,_0x4b3f35){return new BPromise(function(_0x3c75f2,_0x3a365e){_0x4b3f35=combineOptions(_0x4b3f35);var _0x5dea5e=new Buffer(_0x5bb308);var _0x1011b9=fs[_0xd16c('0x13')](_0x210c83);var _0x5e9ba9=fs['createWriteStream'](_0x28e3ad);var _0x3089d3=crypto[_0xd16c('0x14')](_0x4b3f35[_0xd16c('0x9')],_0x5dea5e);_0x1011b9['on']('data',function(_0x186e6b){var _0x406003=new Buffer(_0x3089d3[_0xd16c('0x15')](_0x186e6b),_0xd16c('0x16'));_0x5e9ba9[_0xd16c('0x17')](_0x406003);});_0x1011b9['on'](_0xd16c('0x18'),function(){try{var _0x5f1200=new Buffer(_0x3089d3['final'](_0xd16c('0x16')),_0xd16c('0x16'));_0x5e9ba9[_0xd16c('0x17')](_0x5f1200);_0x5e9ba9['end']();_0x5e9ba9['on'](_0xd16c('0x19'),function(){return _0x3c75f2(_0x28e3ad);});}catch(_0x274977){fs['unlink'](_0x28e3ad);return _0x3a365e(_0x274977);}});});};exports[_0xd16c('0x1a')]=function(_0x290930,_0x48ffaa,_0x480429,_0x5a5c1b){return new BPromise(function(_0x82f404,_0x535cc1){_0x5a5c1b=combineOptions(_0x5a5c1b);var _0xc0779f=new Buffer(_0x480429);var _0x36fba8=fs[_0xd16c('0x13')](_0x290930);var _0x4f517b=fs['createWriteStream'](_0x48ffaa);var _0x234adb=crypto[_0xd16c('0x1b')](_0x5a5c1b['algorithm'],_0xc0779f);_0x36fba8['on']('data',function(_0x15d29b){var _0x2b865d=new Buffer(_0x234adb[_0xd16c('0x15')](_0x15d29b),_0xd16c('0x16'));_0x4f517b[_0xd16c('0x17')](_0x2b865d);});_0x36fba8['on'](_0xd16c('0x18'),function(){try{var _0xc07104=new Buffer(_0x234adb[_0xd16c('0x1c')]('binary'),'binary');_0x4f517b[_0xd16c('0x17')](_0xc07104);_0x4f517b['end']();_0x4f517b['on'](_0xd16c('0x19'),function(){return _0x82f404(_0x48ffaa);});}catch(_0x465b95){fs[_0xd16c('0x1d')](_0x48ffaa);return _0x535cc1(_0x465b95);}});});};exports[_0xd16c('0x1e')]=function(_0x7763c2,_0x4c1a02,_0x567434){var _0x11058f=_0x567434||stringOptions[_0xd16c('0x9')];var _0x10add7=_0x4c1a02||stringOptions[_0xd16c('0x1f')];var _0x38e1c0=crypto['createCipher'](_0x11058f,_0x10add7);var _0x127eff=_0x38e1c0[_0xd16c('0x15')](_0x7763c2,'utf8',_0xd16c('0x20'));_0x127eff+=_0x38e1c0[_0xd16c('0x1c')](_0xd16c('0x20'));return _0x127eff;};exports[_0xd16c('0x21')]=function(_0x56723d,_0x8f361c,_0x3f684f){var _0x5129d2=_0x3f684f||stringOptions['algorithm'];var _0x5c35a5=_0x8f361c||stringOptions[_0xd16c('0x1f')];var _0x2a4e5d=crypto[_0xd16c('0x1b')](_0x5129d2,_0x5c35a5);var _0x311505=_0x2a4e5d[_0xd16c('0x15')](_0x56723d,_0xd16c('0x20'),_0xd16c('0x22'));_0x311505+=_0x2a4e5d['final']('utf8');return _0x311505;};
\ No newline at end of file
index d0665f0..b0b5304 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08f5=['SELECT','num','Empty','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','.csv','length','existsSync','join','mkdirSync','%s%d.%s','csv','writeFileSync','zip','Completed','%s.%s','catch','inspect','finally','exit','util','lodash','to-csv','bluebird','zip-dir','rimraf','../../mysqldb','dbH','analytics','argv','AnalyticExtractedReport','update','info','format','Setting','find','split','splitSizeCsv','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t'];(function(_0x2af47e,_0x1d2a86){var _0x5bca26=function(_0x4ba3db){while(--_0x4ba3db){_0x2af47e['push'](_0x2af47e['shift']());}};_0x5bca26(++_0x1d2a86);}(_0x08f5,0x1ce));var _0x508f=function(_0x422b48,_0xf131fb){_0x422b48=_0x422b48-0x0;var _0x4a6f67=_0x08f5[_0x422b48];return _0x4a6f67;};'use strict';var util=require(_0x508f('0x0'));var path=require('path');var _=require(_0x508f('0x1'));var csv=require(_0x508f('0x2'));var fs=require('fs');var BPromise=require(_0x508f('0x3'));var zipdir=require(_0x508f('0x4'));var rimraf=require(_0x508f('0x5'));var db=require('../../mysqldb')['db'];var dbH=require(_0x508f('0x6'))[_0x508f('0x7')];var logger=require('../../config/logger')(_0x508f('0x8'));var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x508f('0x9')][0x3];var PATH=process[_0x508f('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x3ba660,_0x5a4f38){var _0x2985a7={'status':_0x3ba660};var _0x3fdc8e={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x5a4f38){_0x2985a7['savename']=_0x5a4f38;}return db[_0x508f('0xa')][_0x508f('0xb')](_0x2985a7,_0x3fdc8e);}function main(){var _0x25babb=0x1388;var _0x6d5d93;logger[_0x508f('0xc')](util[_0x508f('0xd')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'CSV'));return db[_0x508f('0xe')][_0x508f('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x508f('0x10'),_0x508f('0x11')]})[_0x508f('0x12')](function(_0x670737){if(_0x670737){_0x6d5d93=_0x670737;_0x25babb=_0x6d5d93[_0x508f('0x11')]||0x1388;}})[_0x508f('0x12')](function(){return dbH[_0x508f('0x13')][_0x508f('0x14')](util[_0x508f('0xd')](_0x508f('0x15'),QUERY),{'type':dbH[_0x508f('0x13')]['QueryTypes'][_0x508f('0x16')]});})['then'](function(_0x336192){if(!_0x336192[0x0][_0x508f('0x17')]){return analyticExtractedReport(_0x508f('0x18'));}var _0x332fea=[];var _0x52c37b=0x0;if(_0x6d5d93[_0x508f('0x10')]){if(_0x336192&&_0x336192['length']){var _0x27f9c3=_['range'](_0x336192[0x0][_0x508f('0x17')]/_0x25babb);var _0x13de74=Number['isInteger'](_0x336192[0x0][_0x508f('0x17')]/_0x25babb)?_0x336192[0x0][_0x508f('0x17')]%_0x25babb:0x0;_0x27f9c3[_0x508f('0x19')](function(_0x5c9426){if(_0x5c9426>0x0){_0x52c37b+=_0x25babb;}_0x332fea[_0x508f('0x1a')](dbH[_0x508f('0x13')]['query'](util[_0x508f('0xd')](_0x508f('0x1b'),QUERY,_0x25babb,_0x52c37b),{'type':dbH[_0x508f('0x13')][_0x508f('0x1c')][_0x508f('0x16')]}));});if(_0x13de74>0x0){_0x52c37b+=_0x25babb;_0x332fea[_0x508f('0x1a')](dbH[_0x508f('0x13')][_0x508f('0x14')](util[_0x508f('0xd')](_0x508f('0x1b'),QUERY,_0x13de74,_0x52c37b),{'type':dbH[_0x508f('0x13')][_0x508f('0x1c')][_0x508f('0x16')]}));}}}else{_0x332fea[_0x508f('0x1a')](dbH['sequelize']['query'](QUERY,{'type':dbH[_0x508f('0x13')][_0x508f('0x1c')][_0x508f('0x16')]}));}var _0x4cd73f=path['dirname'](PATH);var _0x9a4853=path['basename'](PATH,_0x508f('0x1d'));var _0x3e3924=_0x6d5d93[_0x508f('0x10')]&&_0x332fea[_0x508f('0x1e')]>0x1;var _0x5b319d=[];if(!fs[_0x508f('0x1f')](path[_0x508f('0x20')](_0x4cd73f,_0x9a4853))&&_0x3e3924){fs[_0x508f('0x21')](path['join'](_0x4cd73f,_0x9a4853));}return BPromise['each'](_0x332fea,function(_0x2e4981){_0x5b319d['push'](_0x2e4981);})[_0x508f('0x12')](function(){for(var _0x612ea5=0x0;_0x612ea5<_0x5b319d[_0x508f('0x1e')];_0x612ea5+=0x1){var _0x6bfc94;var _0x12d83e=_0x5b319d[_0x612ea5];if(_0x3e3924){_0x6bfc94=path[_0x508f('0x20')](_0x4cd73f,_0x9a4853,util[_0x508f('0xd')](_0x508f('0x22'),_0x9a4853,_0x612ea5,_0x508f('0x23')));}else{_0x6bfc94=path[_0x508f('0x20')](_0x4cd73f,util[_0x508f('0xd')]('%s.%s',_0x9a4853,_0x508f('0x23')));}fs[_0x508f('0x24')](_0x6bfc94,csv(_0x12d83e));}})[_0x508f('0x12')](function(){if(_0x3e3924){return new Promise(function(_0x9356c3){zipdir(path[_0x508f('0x20')](_0x4cd73f,_0x9a4853),{'saveTo':path['join'](_0x4cd73f,util['format']('%s.%s',_0x9a4853,_0x508f('0x25')))},function(_0x3668da,_0x3ce20f){rimraf(path['join'](_0x4cd73f,_0x9a4853),function(){});_0x9356c3('zip\x20finished');});});}})[_0x508f('0x12')](function(){logger[_0x508f('0xc')](util[_0x508f('0xd')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0x508f('0x26'),_0x3e3924?util['format'](_0x508f('0x27'),_0x9a4853,_0x3e3924?_0x508f('0x25'):_0x508f('0x23')):null);});})[_0x508f('0x28')](function(_0x254b06){logger[_0x508f('0xc')](util[_0x508f('0xd')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'CSV'),util[_0x508f('0x29')](_0x254b06,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x508f('0x2a')](function(){process[_0x508f('0x2b')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xc2a4=['Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Failed','finally','exit','util','path','lodash','to-csv','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','analytics','argv','savename','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','Setting','find','split','splitSizeCsv','then','sequelize','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','length','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','join','mkdirSync','each','%s%d.%s','csv','%s.%s','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xc2a4,0x1c0));var _0x4c2a=function(_0x5ae024,_0x52c3ac){_0x5ae024=_0x5ae024-0x0;var _0x416602=_0xc2a4[_0x5ae024];return _0x416602;};'use strict';var util=require(_0x4c2a('0x0'));var path=require(_0x4c2a('0x1'));var _=require(_0x4c2a('0x2'));var csv=require(_0x4c2a('0x3'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require(_0x4c2a('0x4'));var rimraf=require(_0x4c2a('0x5'));var db=require(_0x4c2a('0x6'))['db'];var dbH=require(_0x4c2a('0x6'))[_0x4c2a('0x7')];var logger=require(_0x4c2a('0x8'))(_0x4c2a('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0x4c2a('0xa')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x4c2a('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x3cf146,_0x494284){var _0x1ce937={'status':_0x3cf146};var _0x1b0f04={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x494284){_0x1ce937[_0x4c2a('0xb')]=_0x494284;}return db['AnalyticExtractedReport'][_0x4c2a('0xc')](_0x1ce937,_0x1b0f04);}function main(){var _0x2c9d2f=0x1388;var _0x54a1ca;logger[_0x4c2a('0xd')](util[_0x4c2a('0xe')](_0x4c2a('0xf'),EXTRACTED_REPORT_ID,'CSV'));return db[_0x4c2a('0x10')][_0x4c2a('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x4c2a('0x12'),_0x4c2a('0x13')]})[_0x4c2a('0x14')](function(_0x16ff56){if(_0x16ff56){_0x54a1ca=_0x16ff56;_0x2c9d2f=_0x54a1ca[_0x4c2a('0x13')]||0x1388;}})[_0x4c2a('0x14')](function(){return dbH[_0x4c2a('0x15')][_0x4c2a('0x16')](util[_0x4c2a('0xe')](_0x4c2a('0x17'),QUERY),{'type':dbH['sequelize'][_0x4c2a('0x18')][_0x4c2a('0x19')]});})['then'](function(_0x5317d3){if(!_0x5317d3[0x0][_0x4c2a('0x1a')]){return analyticExtractedReport('Empty');}var _0x3be39e=[];var _0x4e1752=0x0;if(_0x54a1ca[_0x4c2a('0x12')]){if(_0x5317d3&&_0x5317d3[_0x4c2a('0x1b')]){var _0x22fe73=_['range'](_0x5317d3[0x0]['num']/_0x2c9d2f);var _0x32434f=Number[_0x4c2a('0x1c')](_0x5317d3[0x0]['num']/_0x2c9d2f)?_0x5317d3[0x0][_0x4c2a('0x1a')]%_0x2c9d2f:0x0;_0x22fe73[_0x4c2a('0x1d')](function(_0x1f8617){if(_0x1f8617>0x0){_0x4e1752+=_0x2c9d2f;}_0x3be39e[_0x4c2a('0x1e')](dbH['sequelize'][_0x4c2a('0x16')](util['format'](_0x4c2a('0x1f'),QUERY,_0x2c9d2f,_0x4e1752),{'type':dbH['sequelize'][_0x4c2a('0x18')][_0x4c2a('0x19')]}));});if(_0x32434f>0x0){_0x4e1752+=_0x2c9d2f;_0x3be39e['push'](dbH[_0x4c2a('0x15')][_0x4c2a('0x16')](util[_0x4c2a('0xe')](_0x4c2a('0x1f'),QUERY,_0x32434f,_0x4e1752),{'type':dbH['sequelize'][_0x4c2a('0x18')][_0x4c2a('0x19')]}));}}}else{_0x3be39e[_0x4c2a('0x1e')](dbH[_0x4c2a('0x15')][_0x4c2a('0x16')](QUERY,{'type':dbH[_0x4c2a('0x15')]['QueryTypes'][_0x4c2a('0x19')]}));}var _0x433b05=path[_0x4c2a('0x20')](PATH);var _0x2e967e=path[_0x4c2a('0x21')](PATH,'.csv');var _0x575a52=_0x54a1ca[_0x4c2a('0x12')]&&_0x3be39e[_0x4c2a('0x1b')]>0x1;var _0x260d6f=[];if(!fs['existsSync'](path[_0x4c2a('0x22')](_0x433b05,_0x2e967e))&&_0x575a52){fs[_0x4c2a('0x23')](path['join'](_0x433b05,_0x2e967e));}return BPromise[_0x4c2a('0x24')](_0x3be39e,function(_0x1cfac8){_0x260d6f['push'](_0x1cfac8);})[_0x4c2a('0x14')](function(){for(var _0x29cfb3=0x0;_0x29cfb3<_0x260d6f[_0x4c2a('0x1b')];_0x29cfb3+=0x1){var _0x18cde9;var _0x3923b9=_0x260d6f[_0x29cfb3];if(_0x575a52){_0x18cde9=path[_0x4c2a('0x22')](_0x433b05,_0x2e967e,util[_0x4c2a('0xe')](_0x4c2a('0x25'),_0x2e967e,_0x29cfb3,_0x4c2a('0x26')));}else{_0x18cde9=path[_0x4c2a('0x22')](_0x433b05,util[_0x4c2a('0xe')](_0x4c2a('0x27'),_0x2e967e,_0x4c2a('0x26')));}fs['writeFileSync'](_0x18cde9,csv(_0x3923b9));}})[_0x4c2a('0x14')](function(){if(_0x575a52){return new Promise(function(_0x283010){zipdir(path[_0x4c2a('0x22')](_0x433b05,_0x2e967e),{'saveTo':path[_0x4c2a('0x22')](_0x433b05,util['format'](_0x4c2a('0x27'),_0x2e967e,_0x4c2a('0x28')))},function(_0x5054b1,_0x37590e){rimraf(path[_0x4c2a('0x22')](_0x433b05,_0x2e967e),function(){});_0x283010('zip\x20finished');});});}})[_0x4c2a('0x14')](function(){logger['info'](util[_0x4c2a('0xe')](_0x4c2a('0x29'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0x4c2a('0x2a'),_0x575a52?util[_0x4c2a('0xe')](_0x4c2a('0x27'),_0x2e967e,_0x575a52?'zip':'csv'):null);});})[_0x4c2a('0x2b')](function(_0x3bf992){logger['info'](util[_0x4c2a('0xe')](_0x4c2a('0x2c'),EXTRACTED_REPORT_ID,_0x4c2a('0x2d')),util['inspect'](_0x3bf992,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x4c2a('0x2e'));})[_0x4c2a('0x2f')](function(){process[_0x4c2a('0x30')](EXIT_CODE);});}main();
\ No newline at end of file
index e3de223..81da917 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30d5=['finally','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','center','Interaction\x20Transcript','pipe','createWriteStream','finish','error','end','lodash','util','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','jsdom','JSDOM','window','bluebird','../../mysqldb','dbH','../../config/logger','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','tableHeader','map','pick','toString','value','length','body','concat','chunk','keys','forEach','push','format','startDate','header','pageBreak','before','margin','landscape','\x20/\x20','footer','Arial','black','right','num','Empty','Setting','find','split','splitSizePdf','then','range','isInteger','query','QueryTypes','SELECT','sequelize','dirname','.pdf','join','each','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','all','zip','zip\x20finished','info','PDF','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','inspect'];(function(_0x421196,_0x1cbd94){var _0x2738af=function(_0xc956ff){while(--_0xc956ff){_0x421196['push'](_0x421196['shift']());}};_0x2738af(++_0x1cbd94);}(_0x30d5,0x110));var _0x530d=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x30d5[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x530d('0x0'));var fs=require('fs');var util=require(_0x530d('0x1'));var path=require(_0x530d('0x2'));var moment=require(_0x530d('0x3'));var htmlToPdfmake=require(_0x530d('0x4'));var PdfPrinter=require(_0x530d('0x5'));var zipdir=require(_0x530d('0x6'));var rimraf=require('rimraf');var JSDOM=require(_0x530d('0x7'))[_0x530d('0x8')];var window=new JSDOM('')[_0x530d('0x9')];var BPromise=require(_0x530d('0xa'));var db=require(_0x530d('0xb'))['db'];var dbH=require(_0x530d('0xb'))[_0x530d('0xc')];var logger=require(_0x530d('0xd'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x530d('0xe')][0x3];var PATH=process[_0x530d('0xe')][0x4];var NAME=process[_0x530d('0xe')][0x5];var FORMAT=_0x530d('0xf');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x4a600c,_0x59dd56){var _0x482d48={'status':_0x4a600c};var _0x534d92={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x59dd56){_0x482d48[_0x530d('0x10')]=_0x59dd56;}return db[_0x530d('0x11')][_0x530d('0x12')](_0x482d48,_0x534d92);}function getHeaders(_0x3436ed){return _['map'](_0x3436ed,function(_0x6574c9){return{'text':_0x6574c9,'style':_0x530d('0x13')};});}function getRows(_0x2d6d47,_0xb18981){return _[_0x530d('0x14')](_0xb18981,function(_0x20f604){return _(_0x20f604)[_0x530d('0x15')](_0x2d6d47)['map'](function(_0x3db788){return _0x3db788?_[_0x530d('0x16')](_0x3db788):'';})[_0x530d('0x17')]();});}function createTable(_0x281238,_0x53faba){var _0x3fffd6={'widths':_['fill'](Array(_0x281238[_0x530d('0x18')]),0x91),'heights':function(_0x577c51){return _0x577c51===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x551a69=getHeaders(_0x281238);_0x3fffd6[_0x530d('0x19')]['push'](_0x551a69);var _0x3b52a6=getRows(_0x281238,_0x53faba);_0x3fffd6['body']=_0x3fffd6[_0x530d('0x19')][_0x530d('0x1a')](_0x3b52a6);return _0x3fffd6;}function createTables(_0x3c66e7){var _0x1a4129=[];var _0x2e556b=_[_0x530d('0x1b')](Object[_0x530d('0x1c')](_0x3c66e7[0x0]),0x5);_0x2e556b[_0x530d('0x1d')](function(_0x6aed67){_0x1a4129[_0x530d('0x1e')](createTable(_0x6aed67,_0x3c66e7));});return _0x1a4129;}function getPDFDocDefinition(_0x416173){var _0xfd0b0e=util[_0x530d('0x1f')]('Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s',NAME,EXTRACTED_REPORT['name'],moment(EXTRACTED_REPORT[_0x530d('0x20')])[_0x530d('0x1f')](FORMAT),moment(EXTRACTED_REPORT['endDate'])[_0x530d('0x1f')](FORMAT));var _0x25bb25=[];for(var _0x3a9986=0x0;_0x3a9986<_0x416173[_0x530d('0x18')];_0x3a9986++){var _0x23e1e1=[];if(_0x3a9986===0x0){_0x23e1e1['push']({'text':_0xfd0b0e,'style':_0x530d('0x21')});}var _0x4a1102={'table':_0x416173[_0x3a9986]};if(_0x3a9986>0x0){_0x4a1102[_0x530d('0x22')]=_0x530d('0x23');_0x4a1102[_0x530d('0x24')]=[0x0,0x46,0x0,0x0];}_0x23e1e1[_0x530d('0x1e')](_0x4a1102);_0x25bb25[_0x530d('0x1e')](_0x23e1e1);}return{'pageSize':'A4','pageOrientation':_0x530d('0x25'),'content':_0x25bb25,'footer':function(_0x181143,_0x181081){return{'text':_0x181143[_0x530d('0x16')]()+_0x530d('0x26')+_0x181081,'style':_0x530d('0x27')};},'defaultStyle':{'font':_0x530d('0x28')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x530d('0x29')},'footer':{'alignment':_0x530d('0x2a'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x27cbff){var _0x42c16d=0x1388;var _0x2f587f;if(!_0x27cbff[0x0][_0x530d('0x2b')]){return analyticExtractedReport(_0x530d('0x2c'));}return db[_0x530d('0x2d')][_0x530d('0x2e')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x530d('0x2f'),_0x530d('0x30')]})[_0x530d('0x31')](function(_0x44580c){if(_0x44580c){_0x2f587f=_0x44580c;_0x42c16d=_0x2f587f[_0x530d('0x30')]||0x3e8;}})[_0x530d('0x31')](function(){var _0x374f3a=[];var _0x49dfa8=0x0;if(_0x2f587f[_0x530d('0x2f')]){if(_0x27cbff&&_0x27cbff['length']){var _0x549b80=_[_0x530d('0x32')](_0x27cbff[0x0][_0x530d('0x2b')]/_0x42c16d);var _0x4f8887=Number[_0x530d('0x33')](_0x27cbff[0x0][_0x530d('0x2b')]/_0x42c16d)?_0x27cbff[0x0]['num']%_0x42c16d:0x0;_0x549b80[_0x530d('0x1d')](function(_0x59bc93){if(_0x59bc93>0x0){_0x49dfa8+=_0x42c16d;}_0x374f3a[_0x530d('0x1e')](dbH['sequelize'][_0x530d('0x34')](util[_0x530d('0x1f')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x42c16d,_0x49dfa8),{'type':dbH['sequelize'][_0x530d('0x35')][_0x530d('0x36')]}));});if(_0x4f8887>0x0){_0x49dfa8+=_0x42c16d;_0x374f3a[_0x530d('0x1e')](dbH['sequelize'][_0x530d('0x34')](util[_0x530d('0x1f')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x4f8887,_0x49dfa8),{'type':dbH[_0x530d('0x37')][_0x530d('0x35')][_0x530d('0x36')]}));}}}else{_0x374f3a['push'](dbH['sequelize'][_0x530d('0x34')](QUERY,{'type':dbH[_0x530d('0x37')][_0x530d('0x35')][_0x530d('0x36')]}));}var _0x205a8e=path[_0x530d('0x38')](PATH);var _0x31d4be=path['basename'](PATH,_0x530d('0x39'));var _0x5bd2a8=_0x2f587f[_0x530d('0x2f')]&&_0x374f3a[_0x530d('0x18')]>0x1;var _0x440976=[];if(!fs['existsSync'](path['join'](_0x205a8e,_0x31d4be))&&_0x5bd2a8){fs['mkdirSync'](path[_0x530d('0x3a')](_0x205a8e,_0x31d4be));}return BPromise[_0x530d('0x3b')](_0x374f3a,function(_0x223f3e){_0x440976['push'](_0x223f3e);})[_0x530d('0x31')](function(){var _0x1abe46=[];for(var _0x465539=0x0;_0x465539<_0x440976[_0x530d('0x18')];_0x465539+=0x1){var _0x42a37c=_0x440976[_0x465539];var _0x18865a=createTables(_[_0x530d('0x3c')](_0x42a37c));var _0x40538e;var _0x356473=getPDFDocDefinition(_0x18865a);var _0x362b7a=getPDFPrinter();var _0x83f53c=_0x362b7a[_0x530d('0x3d')](_0x356473);if(_0x5bd2a8){_0x40538e=path[_0x530d('0x3a')](_0x205a8e,_0x31d4be,util[_0x530d('0x1f')](_0x530d('0x3e'),_0x31d4be,_0x465539,_0x530d('0x3f')));}else{_0x40538e=path[_0x530d('0x3a')](_0x205a8e,util['format'](_0x530d('0x40'),_0x31d4be,_0x530d('0x3f')));}_0x1abe46[_0x530d('0x1e')](writePDFDocument(_0x83f53c,_0x40538e));}return Promise[_0x530d('0x41')](_0x1abe46);})[_0x530d('0x31')](function(){if(_0x5bd2a8){return new Promise(function(_0x233d50){zipdir(path['join'](_0x205a8e,_0x31d4be),{'saveTo':path[_0x530d('0x3a')](_0x205a8e,util[_0x530d('0x1f')]('%s.%s',_0x31d4be,_0x530d('0x42')))},function(){rimraf(path[_0x530d('0x3a')](_0x205a8e,_0x31d4be),function(){});_0x233d50(_0x530d('0x43'));});});}})[_0x530d('0x31')](function(){if(!_0x5bd2a8)return;rimraf(path[_0x530d('0x3a')](_0x205a8e,_0x31d4be),function(){});})[_0x530d('0x31')](function(){logger[_0x530d('0x44')](util[_0x530d('0x1f')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x530d('0x45')));return analyticExtractedReport(_0x530d('0x46'),_0x5bd2a8?util[_0x530d('0x1f')]('%s.%s',_0x31d4be,_0x5bd2a8?_0x530d('0x42'):'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x530d('0x44')](util[_0x530d('0x1f')](_0x530d('0x47'),EXTRACTED_REPORT_ID,_0x530d('0x45')));return db[_0x530d('0x11')][_0x530d('0x48')]({'where':{'id':EXTRACTED_REPORT_ID}})['then'](function(_0x4db88d){EXTRACTED_REPORT=_0x4db88d;return dbH[_0x530d('0x37')][_0x530d('0x34')](util[_0x530d('0x1f')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0x530d('0x35')][_0x530d('0x36')]});})[_0x530d('0x31')](extractReport)[_0x530d('0x49')](function(_0x33c113){logger[_0x530d('0x44')](util[_0x530d('0x1f')](_0x530d('0x4a'),EXTRACTED_REPORT_ID,_0x530d('0x45')),util[_0x530d('0x4b')](_0x33c113,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x530d('0x4c')](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x2d20f5=new PdfPrinter({'Arial':{'normal':__dirname+'/fonts/arial-regular.ttf','bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+_0x530d('0x4d'),'bolditalics':__dirname+_0x530d('0x4e')}});return _0x2d20f5;}function getPDFDocDefinitionFromHTML(_0x372c9b,_0x36185f){var _0xf80926=util[_0x530d('0x1f')](_0x530d('0x4f'),_0x36185f['channel'],_0x36185f['interactionId']);var _0x4ba392=moment()['format']('YYYY-MM-DD')[_0x530d('0x16')]();var _0x51e9f6=htmlToPdfmake(_0x372c9b,{'window':window,'tableAutoSize':!![]});return{'content':[_0x51e9f6],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x530d('0x50'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x530d('0x50'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x530d('0x50')}},'header':function(){return[{'text':_0x530d('0x51'),'style':_0x530d('0x21')}];},'footer':function(_0x2ec34c,_0x2878d2){return[{'text':util[_0x530d('0x1f')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0xf80926,_0x2ec34c,_0x2878d2,_0x4ba392),'style':'footer'}];}};}function writePDFDocument(_0x2961b7,_0x22b7a4){return new Promise(function(_0x5811aa,_0x747ba0){var _0x4f2a3f=_0x2961b7[_0x530d('0x52')](fs[_0x530d('0x53')](_0x22b7a4));_0x4f2a3f['on'](_0x530d('0x54'),function(){_0x5811aa(_0x530d('0x54'));});_0x4f2a3f['on'](_0x530d('0x55'),function(_0x257546){_0x747ba0(_0x257546);});_0x2961b7[_0x530d('0x56')]();});}exports['createPdfFromHTML']=function(_0x7f3798,_0x180a64){var _0x6f9280=getPDFPrinter();var _0x284b0f=getPDFDocDefinitionFromHTML(_0x7f3798,_0x180a64);var _0x5dce8e=_0x6f9280[_0x530d('0x3d')](_0x284b0f);return writePDFDocument(_0x5dce8e,_0x180a64[_0x530d('0x2')])['catch'](function(_0x5cb635){throw _0x5cb635;});};
\ No newline at end of file
+var _0xb22c=['catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','exit','/fonts/arial-bold.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','error','end','createPdfFromHTML','createPdfKitDocument','path','lodash','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','JSDOM','window','bluebird','../../mysqldb','../../config/logger','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','map','pick','toString','value','fill','length','auto','push','body','concat','chunk','forEach','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','format','header','pageBreak','before','margin','landscape','\x20/\x20','footer','Arial','num','Empty','Setting','find','then','split','range','isInteger','query','%s\x20limit\x20%d\x20OFFSET\x20%d','sequelize','QueryTypes','SELECT','dirname','basename','.pdf','existsSync','join','mkdirSync','each','flatten','pdf','%s.%s','all','info','PDF','Completed','zip','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne'];(function(_0x4142db,_0x142dc4){var _0x4a8247=function(_0x3ae3b8){while(--_0x3ae3b8){_0x4142db['push'](_0x4142db['shift']());}};_0x4a8247(++_0x142dc4);}(_0xb22c,0x1cc));var _0xcb22=function(_0x58407b,_0x24a95b){_0x58407b=_0x58407b-0x0;var _0x4172e2=_0xb22c[_0x58407b];return _0x4172e2;};'use strict';var _=require(_0xcb22('0x0'));var fs=require('fs');var util=require('util');var path=require('path');var moment=require(_0xcb22('0x1'));var htmlToPdfmake=require(_0xcb22('0x2'));var PdfPrinter=require(_0xcb22('0x3'));var zipdir=require(_0xcb22('0x4'));var rimraf=require(_0xcb22('0x5'));var JSDOM=require('jsdom')[_0xcb22('0x6')];var window=new JSDOM('')[_0xcb22('0x7')];var BPromise=require(_0xcb22('0x8'));var db=require(_0xcb22('0x9'))['db'];var dbH=require('../../mysqldb')['dbH'];var logger=require(_0xcb22('0xa'))('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0xcb22('0xb')][0x3];var PATH=process[_0xcb22('0xb')][0x4];var NAME=process[_0xcb22('0xb')][0x5];var FORMAT=_0xcb22('0xc');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x52c6fa,_0x27c1d6){var _0x869b35={'status':_0x52c6fa};var _0xc9c703={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x27c1d6){_0x869b35[_0xcb22('0xd')]=_0x27c1d6;}return db[_0xcb22('0xe')]['update'](_0x869b35,_0xc9c703);}function getHeaders(_0x368a96){return _[_0xcb22('0xf')](_0x368a96,function(_0x25772c){return{'text':_0x25772c,'style':'tableHeader'};});}function getRows(_0x590fad,_0x2f480d){return _[_0xcb22('0xf')](_0x2f480d,function(_0x295dfd){return _(_0x295dfd)[_0xcb22('0x10')](_0x590fad)[_0xcb22('0xf')](function(_0x37a23a){return _0x37a23a?_[_0xcb22('0x11')](_0x37a23a):'';})[_0xcb22('0x12')]();});}function createTable(_0x369cc0,_0x43f35f){var _0x1e1f04={'widths':_[_0xcb22('0x13')](Array(_0x369cc0[_0xcb22('0x14')]),0x91),'heights':function(_0x59c729){return _0x59c729===0x0?_0xcb22('0x15'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0xc432c=getHeaders(_0x369cc0);_0x1e1f04['body'][_0xcb22('0x16')](_0xc432c);var _0x4c2c2a=getRows(_0x369cc0,_0x43f35f);_0x1e1f04[_0xcb22('0x17')]=_0x1e1f04['body'][_0xcb22('0x18')](_0x4c2c2a);return _0x1e1f04;}function createTables(_0x2d01fd){var _0x1b0417=[];var _0x36ab65=_[_0xcb22('0x19')](Object['keys'](_0x2d01fd[0x0]),0x5);_0x36ab65[_0xcb22('0x1a')](function(_0x10371c){_0x1b0417[_0xcb22('0x16')](createTable(_0x10371c,_0x2d01fd));});return _0x1b0417;}function getPDFDocDefinition(_0x31ed0f){var _0x168acb=util['format'](_0xcb22('0x1b'),NAME,EXTRACTED_REPORT[_0xcb22('0x1c')],moment(EXTRACTED_REPORT['startDate'])[_0xcb22('0x1d')](FORMAT),moment(EXTRACTED_REPORT['endDate'])['format'](FORMAT));var _0x58b4d3=[];for(var _0x1cc003=0x0;_0x1cc003<_0x31ed0f[_0xcb22('0x14')];_0x1cc003++){var _0x185f21=[];if(_0x1cc003===0x0){_0x185f21[_0xcb22('0x16')]({'text':_0x168acb,'style':_0xcb22('0x1e')});}var _0x21d05f={'table':_0x31ed0f[_0x1cc003]};if(_0x1cc003>0x0){_0x21d05f[_0xcb22('0x1f')]=_0xcb22('0x20');_0x21d05f[_0xcb22('0x21')]=[0x0,0x46,0x0,0x0];}_0x185f21['push'](_0x21d05f);_0x58b4d3[_0xcb22('0x16')](_0x185f21);}return{'pageSize':'A4','pageOrientation':_0xcb22('0x22'),'content':_0x58b4d3,'footer':function(_0x28faac,_0x39d738){return{'text':_0x28faac[_0xcb22('0x11')]()+_0xcb22('0x23')+_0x39d738,'style':_0xcb22('0x24')};},'defaultStyle':{'font':_0xcb22('0x25')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x1545b4){var _0x24ce79=0x1388;var _0x53a79c;if(!_0x1545b4[0x0][_0xcb22('0x26')]){return analyticExtractedReport(_0xcb22('0x27'));}return db[_0xcb22('0x28')][_0xcb22('0x29')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split','splitSizePdf']})[_0xcb22('0x2a')](function(_0x23d3fa){if(_0x23d3fa){_0x53a79c=_0x23d3fa;_0x24ce79=_0x53a79c['splitSizePdf']||0x3e8;}})[_0xcb22('0x2a')](function(){var _0x1d0458=[];var _0x2f4817=0x0;if(_0x53a79c[_0xcb22('0x2b')]){if(_0x1545b4&&_0x1545b4['length']){var _0x32ff8f=_[_0xcb22('0x2c')](_0x1545b4[0x0][_0xcb22('0x26')]/_0x24ce79);var _0x3238fa=Number[_0xcb22('0x2d')](_0x1545b4[0x0][_0xcb22('0x26')]/_0x24ce79)?_0x1545b4[0x0][_0xcb22('0x26')]%_0x24ce79:0x0;_0x32ff8f['forEach'](function(_0x40c8bd){if(_0x40c8bd>0x0){_0x2f4817+=_0x24ce79;}_0x1d0458[_0xcb22('0x16')](dbH['sequelize'][_0xcb22('0x2e')](util['format'](_0xcb22('0x2f'),QUERY,_0x24ce79,_0x2f4817),{'type':dbH[_0xcb22('0x30')][_0xcb22('0x31')][_0xcb22('0x32')]}));});if(_0x3238fa>0x0){_0x2f4817+=_0x24ce79;_0x1d0458[_0xcb22('0x16')](dbH['sequelize']['query'](util[_0xcb22('0x1d')](_0xcb22('0x2f'),QUERY,_0x3238fa,_0x2f4817),{'type':dbH[_0xcb22('0x30')][_0xcb22('0x31')][_0xcb22('0x32')]}));}}}else{_0x1d0458[_0xcb22('0x16')](dbH[_0xcb22('0x30')][_0xcb22('0x2e')](QUERY,{'type':dbH['sequelize'][_0xcb22('0x31')]['SELECT']}));}var _0x46b3f0=path[_0xcb22('0x33')](PATH);var _0x3b4762=path[_0xcb22('0x34')](PATH,_0xcb22('0x35'));var _0x14b322=_0x53a79c[_0xcb22('0x2b')]&&_0x1d0458[_0xcb22('0x14')]>0x1;var _0x40f490=[];if(!fs[_0xcb22('0x36')](path[_0xcb22('0x37')](_0x46b3f0,_0x3b4762))&&_0x14b322){fs[_0xcb22('0x38')](path[_0xcb22('0x37')](_0x46b3f0,_0x3b4762));}return BPromise[_0xcb22('0x39')](_0x1d0458,function(_0x630f0c){_0x40f490[_0xcb22('0x16')](_0x630f0c);})[_0xcb22('0x2a')](function(){var _0x3faf4d=[];for(var _0x2fdf9f=0x0;_0x2fdf9f<_0x40f490[_0xcb22('0x14')];_0x2fdf9f+=0x1){var _0x5eab72=_0x40f490[_0x2fdf9f];var _0x117aa5=createTables(_[_0xcb22('0x3a')](_0x5eab72));var _0x4d77f6;var _0x38f727=getPDFDocDefinition(_0x117aa5);var _0x237280=getPDFPrinter();var _0x5a3e56=_0x237280['createPdfKitDocument'](_0x38f727);if(_0x14b322){_0x4d77f6=path[_0xcb22('0x37')](_0x46b3f0,_0x3b4762,util[_0xcb22('0x1d')]('%s%d.%s',_0x3b4762,_0x2fdf9f,_0xcb22('0x3b')));}else{_0x4d77f6=path[_0xcb22('0x37')](_0x46b3f0,util[_0xcb22('0x1d')](_0xcb22('0x3c'),_0x3b4762,'pdf'));}_0x3faf4d[_0xcb22('0x16')](writePDFDocument(_0x5a3e56,_0x4d77f6));}return Promise[_0xcb22('0x3d')](_0x3faf4d);})[_0xcb22('0x2a')](function(){if(_0x14b322){return new Promise(function(_0x1aaf1f){zipdir(path[_0xcb22('0x37')](_0x46b3f0,_0x3b4762),{'saveTo':path['join'](_0x46b3f0,util['format'](_0xcb22('0x3c'),_0x3b4762,'zip'))},function(){rimraf(path['join'](_0x46b3f0,_0x3b4762),function(){});_0x1aaf1f('zip\x20finished');});});}})[_0xcb22('0x2a')](function(){if(!_0x14b322)return;rimraf(path['join'](_0x46b3f0,_0x3b4762),function(){});})[_0xcb22('0x2a')](function(){logger[_0xcb22('0x3e')](util['format']('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0xcb22('0x3f')));return analyticExtractedReport(_0xcb22('0x40'),_0x14b322?util[_0xcb22('0x1d')](_0xcb22('0x3c'),_0x3b4762,_0x14b322?_0xcb22('0x41'):_0xcb22('0x3b')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0xcb22('0x1d')](_0xcb22('0x42'),EXTRACTED_REPORT_ID,_0xcb22('0x3f')));return db['AnalyticExtractedReport'][_0xcb22('0x43')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xcb22('0x2a')](function(_0xb560d){EXTRACTED_REPORT=_0xb560d;return dbH[_0xcb22('0x30')]['query'](util[_0xcb22('0x1d')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0xcb22('0x30')][_0xcb22('0x31')][_0xcb22('0x32')]});})[_0xcb22('0x2a')](extractReport)[_0xcb22('0x44')](function(_0x1496fe){logger[_0xcb22('0x3e')](util[_0xcb22('0x1d')](_0xcb22('0x45'),EXTRACTED_REPORT_ID,_0xcb22('0x3f')),util[_0xcb22('0x46')](_0x1496fe,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xcb22('0x47'));})['finally'](function(){process[_0xcb22('0x48')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x1a4973=new PdfPrinter({'Arial':{'normal':__dirname+'/fonts/arial-regular.ttf','bold':__dirname+_0xcb22('0x49'),'italics':__dirname+'/fonts/arial-italic.ttf','bolditalics':__dirname+_0xcb22('0x4a')}});return _0x1a4973;}function getPDFDocDefinitionFromHTML(_0x2dc38a,_0x432421){var _0x1321f8=util['format'](_0xcb22('0x4b'),_0x432421[_0xcb22('0x4c')],_0x432421[_0xcb22('0x4d')]);var _0x208465=moment()[_0xcb22('0x1d')](_0xcb22('0x4e'))[_0xcb22('0x11')]();var _0xbfcfc9=htmlToPdfmake(_0x2dc38a,{'window':window,'tableAutoSize':!![]});return{'content':[_0xbfcfc9],'defaultStyle':{'font':_0xcb22('0x25')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0xcb22('0x4f'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0xcb22('0x50'),'style':_0xcb22('0x1e')}];},'footer':function(_0x28dd76,_0x56b14e){return[{'text':util[_0xcb22('0x1d')](_0xcb22('0x51'),_0x1321f8,_0x28dd76,_0x56b14e,_0x208465),'style':_0xcb22('0x24')}];}};}function writePDFDocument(_0x3582f8,_0x1d4808){return new Promise(function(_0x272d25,_0x16713e){var _0x3d88b7=_0x3582f8[_0xcb22('0x52')](fs['createWriteStream'](_0x1d4808));_0x3d88b7['on']('finish',function(){_0x272d25('finish');});_0x3d88b7['on'](_0xcb22('0x53'),function(_0xb433bf){_0x16713e(_0xb433bf);});_0x3582f8[_0xcb22('0x54')]();});}exports[_0xcb22('0x55')]=function(_0x2b1bba,_0x1c5de0){var _0xeedb66=getPDFPrinter();var _0x3484d0=getPDFDocDefinitionFromHTML(_0x2b1bba,_0x1c5de0);var _0x228e88=_0xeedb66[_0xcb22('0x56')](_0x3484d0);return writePDFDocument(_0x228e88,_0x1c5de0[_0xcb22('0x57')])[_0xcb22('0x44')](function(_0x4fec64){throw _0x4fec64;});};
\ No newline at end of file
index ceaff6c..74ce8c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea21=['../../mysqldb','../../config/logger','analytics','argv','update','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','find','split','splitSizeXlsx','then','sequelize','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','SELECT','num','Empty','range','push','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','dirname','basename','.xlsx','length','existsSync','mkdirSync','join','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','Failed','finally','exit','util','path','lodash','json2xls','bluebird','zip-dir'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0xea21,0xf4));var _0x1ea2=function(_0x5e918b,_0x3a3124){_0x5e918b=_0x5e918b-0x0;var _0x303a29=_0xea21[_0x5e918b];return _0x303a29;};'use strict';var util=require(_0x1ea2('0x0'));var path=require(_0x1ea2('0x1'));var _=require(_0x1ea2('0x2'));var fs=require('fs');var json2xls=require(_0x1ea2('0x3'));var BPromise=require(_0x1ea2('0x4'));var zipdir=require(_0x1ea2('0x5'));var rimraf=require('rimraf');var db=require(_0x1ea2('0x6'))['db'];var dbH=require('../../mysqldb')['dbH'];var logger=require(_0x1ea2('0x7'))(_0x1ea2('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0x1ea2('0x9')][0x2]);var QUERY=process[_0x1ea2('0x9')][0x3];var PATH=process[_0x1ea2('0x9')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x4a5493,_0x490f4b){var _0x3c804f={'status':_0x4a5493};var _0x9a864f={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x490f4b){_0x3c804f['savename']=_0x490f4b;}return db['AnalyticExtractedReport'][_0x1ea2('0xa')](_0x3c804f,_0x9a864f);}function main(){var _0x33cfc6=0x1388;var _0x5bf0ce;logger[_0x1ea2('0xb')](util['format'](_0x1ea2('0xc'),EXTRACTED_REPORT_ID,_0x1ea2('0xd')));return db['Setting'][_0x1ea2('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x1ea2('0xf'),_0x1ea2('0x10')]})['then'](function(_0x57083f){if(_0x57083f){_0x5bf0ce=_0x57083f;_0x33cfc6=_0x5bf0ce[_0x1ea2('0x10')]||0x1388;}})[_0x1ea2('0x11')](function(){return dbH[_0x1ea2('0x12')][_0x1ea2('0x13')](util[_0x1ea2('0x14')](_0x1ea2('0x15'),QUERY),{'type':dbH['sequelize']['QueryTypes'][_0x1ea2('0x16')]});})[_0x1ea2('0x11')](function(_0x2190cf){if(!_0x2190cf[0x0][_0x1ea2('0x17')]){return analyticExtractedReport(_0x1ea2('0x18'));}var _0x2dd10a=[];var _0x22b402=0x0;if(_0x5bf0ce['split']){if(_0x2190cf&&_0x2190cf['length']){var _0x38b309=_[_0x1ea2('0x19')](_0x2190cf[0x0][_0x1ea2('0x17')]/_0x33cfc6);var _0x240faa=Number['isInteger'](_0x2190cf[0x0][_0x1ea2('0x17')]/_0x33cfc6)?_0x2190cf[0x0][_0x1ea2('0x17')]%_0x33cfc6:0x0;_0x38b309['forEach'](function(_0x205b8f){if(_0x205b8f>0x0){_0x22b402+=_0x33cfc6;}_0x2dd10a[_0x1ea2('0x1a')](dbH[_0x1ea2('0x12')][_0x1ea2('0x13')](util['format'](_0x1ea2('0x1b'),QUERY,_0x33cfc6,_0x22b402),{'type':dbH[_0x1ea2('0x12')][_0x1ea2('0x1c')]['SELECT']}));});if(_0x240faa>0x0){_0x22b402+=_0x33cfc6;_0x2dd10a[_0x1ea2('0x1a')](dbH['sequelize'][_0x1ea2('0x13')](util['format'](_0x1ea2('0x1b'),QUERY,_0x240faa,_0x22b402),{'type':dbH['sequelize'][_0x1ea2('0x1c')][_0x1ea2('0x16')]}));}}}else{_0x2dd10a[_0x1ea2('0x1a')](dbH['sequelize'][_0x1ea2('0x13')](QUERY,{'type':dbH[_0x1ea2('0x12')][_0x1ea2('0x1c')][_0x1ea2('0x16')]}));}var _0xf1e6da=path[_0x1ea2('0x1d')](PATH);var _0x28777f=path[_0x1ea2('0x1e')](PATH,_0x1ea2('0x1f'));var _0x43cfe6=_0x5bf0ce[_0x1ea2('0xf')]&&_0x2dd10a[_0x1ea2('0x20')]>0x1;var _0x1bcfac=[];if(!fs[_0x1ea2('0x21')](path['join'](_0xf1e6da,_0x28777f))&&_0x43cfe6){fs[_0x1ea2('0x22')](path[_0x1ea2('0x23')](_0xf1e6da,_0x28777f));}return BPromise[_0x1ea2('0x24')](_0x2dd10a,function(_0x37898e){_0x1bcfac[_0x1ea2('0x1a')](_0x37898e);})[_0x1ea2('0x11')](function(){for(var _0x1c13c8=0x0;_0x1c13c8<_0x1bcfac['length'];_0x1c13c8+=0x1){var _0x3f4e59;var _0x4bc549=_0x1bcfac[_0x1c13c8];if(_0x43cfe6){_0x3f4e59=path[_0x1ea2('0x23')](_0xf1e6da,_0x28777f,util[_0x1ea2('0x14')](_0x1ea2('0x25'),_0x28777f,_0x1c13c8,_0x1ea2('0x26')));}else{_0x3f4e59=path[_0x1ea2('0x23')](_0xf1e6da,util[_0x1ea2('0x14')](_0x1ea2('0x27'),_0x28777f,_0x1ea2('0x26')));}fs[_0x1ea2('0x28')](_0x3f4e59,json2xls(_0x4bc549),_0x1ea2('0x29'));}})[_0x1ea2('0x11')](function(){if(_0x43cfe6){return new Promise(function(_0x4021a5){zipdir(path['join'](_0xf1e6da,_0x28777f),{'saveTo':path[_0x1ea2('0x23')](_0xf1e6da,util[_0x1ea2('0x14')](_0x1ea2('0x27'),_0x28777f,_0x1ea2('0x2a')))},function(_0x10a28d,_0x5cccb6){rimraf(path[_0x1ea2('0x23')](_0xf1e6da,_0x28777f),function(){});_0x4021a5(_0x1ea2('0x2b'));});});}})[_0x1ea2('0x11')](function(){logger[_0x1ea2('0xb')](util[_0x1ea2('0x14')](_0x1ea2('0x2c'),EXTRACTED_REPORT_ID,_0x1ea2('0xd')));return analyticExtractedReport(_0x1ea2('0x2d'),_0x43cfe6?util[_0x1ea2('0x14')]('%s.%s',_0x28777f,_0x43cfe6?_0x1ea2('0x2a'):'xlsx'):null);});})[_0x1ea2('0x2e')](function(_0x3ff9f8){logger['info'](util[_0x1ea2('0x14')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'XLSX'),util['inspect'](_0x3ff9f8,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x1ea2('0x2f'));})[_0x1ea2('0x30')](function(){process[_0x1ea2('0x31')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0x2ef8=['catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','path','lodash','bluebird','zip-dir','rimraf','../../mysqldb','dbH','analytics','argv','savename','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','split','splitSizeXlsx','then','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','length','range','isInteger','forEach','query','%s\x20limit\x20%d\x20OFFSET\x20%d','push','dirname','basename','.xlsx','existsSync','join','mkdirSync','each','xlsx','%s.%s','binary','zip','zip\x20finished','Completed'];(function(_0x4b335f,_0x1f12a5){var _0x56d6d4=function(_0x210537){while(--_0x210537){_0x4b335f['push'](_0x4b335f['shift']());}};_0x56d6d4(++_0x1f12a5);}(_0x2ef8,0x162));var _0x82ef=function(_0x3b006b,_0x1866ce){_0x3b006b=_0x3b006b-0x0;var _0x449ef6=_0x2ef8[_0x3b006b];return _0x449ef6;};'use strict';var util=require('util');var path=require(_0x82ef('0x0'));var _=require(_0x82ef('0x1'));var fs=require('fs');var json2xls=require('json2xls');var BPromise=require(_0x82ef('0x2'));var zipdir=require(_0x82ef('0x3'));var rimraf=require(_0x82ef('0x4'));var db=require(_0x82ef('0x5'))['db'];var dbH=require(_0x82ef('0x5'))[_0x82ef('0x6')];var logger=require('../../config/logger')(_0x82ef('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0x82ef('0x8')][0x2]);var QUERY=process[_0x82ef('0x8')][0x3];var PATH=process[_0x82ef('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x11faeb,_0x16d019){var _0x2c6958={'status':_0x11faeb};var _0x16c800={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x16d019){_0x2c6958[_0x82ef('0x9')]=_0x16d019;}return db[_0x82ef('0xa')][_0x82ef('0xb')](_0x2c6958,_0x16c800);}function main(){var _0x535ea0=0x1388;var _0x38bdeb;logger[_0x82ef('0xc')](util[_0x82ef('0xd')](_0x82ef('0xe'),EXTRACTED_REPORT_ID,_0x82ef('0xf')));return db[_0x82ef('0x10')][_0x82ef('0x11')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x82ef('0x12'),_0x82ef('0x13')]})['then'](function(_0x55a502){if(_0x55a502){_0x38bdeb=_0x55a502;_0x535ea0=_0x38bdeb['splitSizeXlsx']||0x1388;}})[_0x82ef('0x14')](function(){return dbH[_0x82ef('0x15')]['query'](util[_0x82ef('0xd')](_0x82ef('0x16'),QUERY),{'type':dbH[_0x82ef('0x15')][_0x82ef('0x17')][_0x82ef('0x18')]});})[_0x82ef('0x14')](function(_0x148d18){if(!_0x148d18[0x0][_0x82ef('0x19')]){return analyticExtractedReport('Empty');}var _0x5af585=[];var _0x1c00f8=0x0;if(_0x38bdeb['split']){if(_0x148d18&&_0x148d18[_0x82ef('0x1a')]){var _0x174501=_[_0x82ef('0x1b')](_0x148d18[0x0]['num']/_0x535ea0);var _0x2c234b=Number[_0x82ef('0x1c')](_0x148d18[0x0][_0x82ef('0x19')]/_0x535ea0)?_0x148d18[0x0][_0x82ef('0x19')]%_0x535ea0:0x0;_0x174501[_0x82ef('0x1d')](function(_0x46b3ce){if(_0x46b3ce>0x0){_0x1c00f8+=_0x535ea0;}_0x5af585['push'](dbH['sequelize']['query'](util[_0x82ef('0xd')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x535ea0,_0x1c00f8),{'type':dbH[_0x82ef('0x15')][_0x82ef('0x17')][_0x82ef('0x18')]}));});if(_0x2c234b>0x0){_0x1c00f8+=_0x535ea0;_0x5af585['push'](dbH[_0x82ef('0x15')][_0x82ef('0x1e')](util[_0x82ef('0xd')](_0x82ef('0x1f'),QUERY,_0x2c234b,_0x1c00f8),{'type':dbH[_0x82ef('0x15')][_0x82ef('0x17')][_0x82ef('0x18')]}));}}}else{_0x5af585[_0x82ef('0x20')](dbH['sequelize']['query'](QUERY,{'type':dbH['sequelize'][_0x82ef('0x17')][_0x82ef('0x18')]}));}var _0x1edc36=path[_0x82ef('0x21')](PATH);var _0x3092d9=path[_0x82ef('0x22')](PATH,_0x82ef('0x23'));var _0x433093=_0x38bdeb[_0x82ef('0x12')]&&_0x5af585[_0x82ef('0x1a')]>0x1;var _0x55704d=[];if(!fs[_0x82ef('0x24')](path[_0x82ef('0x25')](_0x1edc36,_0x3092d9))&&_0x433093){fs[_0x82ef('0x26')](path[_0x82ef('0x25')](_0x1edc36,_0x3092d9));}return BPromise[_0x82ef('0x27')](_0x5af585,function(_0x2aec74){_0x55704d[_0x82ef('0x20')](_0x2aec74);})['then'](function(){for(var _0x332d78=0x0;_0x332d78<_0x55704d['length'];_0x332d78+=0x1){var _0x1ae685;var _0x114828=_0x55704d[_0x332d78];if(_0x433093){_0x1ae685=path[_0x82ef('0x25')](_0x1edc36,_0x3092d9,util['format']('%s%d.%s',_0x3092d9,_0x332d78,_0x82ef('0x28')));}else{_0x1ae685=path[_0x82ef('0x25')](_0x1edc36,util['format'](_0x82ef('0x29'),_0x3092d9,'xlsx'));}fs['writeFileSync'](_0x1ae685,json2xls(_0x114828),_0x82ef('0x2a'));}})[_0x82ef('0x14')](function(){if(_0x433093){return new Promise(function(_0x5e5913){zipdir(path[_0x82ef('0x25')](_0x1edc36,_0x3092d9),{'saveTo':path['join'](_0x1edc36,util[_0x82ef('0xd')](_0x82ef('0x29'),_0x3092d9,_0x82ef('0x2b')))},function(_0x157940,_0x4e8aeb){rimraf(path[_0x82ef('0x25')](_0x1edc36,_0x3092d9),function(){});_0x5e5913(_0x82ef('0x2c'));});});}})[_0x82ef('0x14')](function(){logger[_0x82ef('0xc')](util[_0x82ef('0xd')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x82ef('0xf')));return analyticExtractedReport(_0x82ef('0x2d'),_0x433093?util[_0x82ef('0xd')]('%s.%s',_0x3092d9,_0x433093?'zip':_0x82ef('0x28')):null);});})[_0x82ef('0x2e')](function(_0x560f3d){logger[_0x82ef('0xc')](util['format'](_0x82ef('0x2f'),EXTRACTED_REPORT_ID,_0x82ef('0xf')),util[_0x82ef('0x30')](_0x560f3d,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x82ef('0x31')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
index b0a87cd..20f969f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4770=['inbound','push','Set','CDR(routeid)=','VoiceExtensionId','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','IntervalId','tag','CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','indexOf','app','appType','custom','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1',',${EXTEN},','last','concat','Hangup','transaction','destroy','sortBy','catch','error','rewrite','models','Interval','then','intervals','VoiceExtension','findAll','map','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','priority','extension','exten','extensions','type','context'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x4770,0x1d1));var _0x0477=function(_0x1fa4d9,_0x8e174a){_0x1fa4d9=_0x1fa4d9-0x0;var _0x34de1c=_0x4770[_0x1fa4d9];return _0x34de1c;};'use strict';var _=require('lodash');var util=require('util');function rewrite(_0x26e57f,_0x4edcdd){var _0x72bb1f=this;return _0x26e57f[_0x0477('0x0')][_0x0477('0x1')]['findAll']({'raw':!![]})[_0x0477('0x2')](function(_0x3a9a1d){_0x72bb1f[_0x0477('0x3')]=_0x3a9a1d;return _0x26e57f[_0x0477('0x0')][_0x0477('0x4')][_0x0477('0x5')]({'where':{'IntervalId':_0x4edcdd['IntervalId']},'raw':!![]});})[_0x0477('0x2')](function(_0x3a14f0){return _0x26e57f['models'][_0x0477('0x4')][_0x0477('0x5')]({'where':{'exten':{'$in':_['uniq'](_[_0x0477('0x6')](_0x3a14f0,'exten'))}},'order':[{'raw':_0x0477('0x7')}],'raw':!![]});})['then'](function(_0x306d87){var _0x5b0b61=_['filter'](_0x306d87,{'priority':'1'});var _0x9fcf47=_[_0x0477('0x8')](_0x306d87,{'isApp':0x1});var _0x1f7a0f=_[_0x0477('0x9')](_0x9fcf47,'exten');var _0x46f7eb=[_0x0477('0xa'),_0x0477('0xb')];var _0x228126=[];var _0x5b2e38=[];for(var _0x3c1a47 in _0x1f7a0f){if(_0x1f7a0f['hasOwnProperty'](_0x3c1a47)){_0x72bb1f[_0x0477('0xc')]=0x2;_0x72bb1f['extensions']=[];_0x72bb1f[_0x0477('0xd')]=_['find'](_0x5b0b61,{'exten':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0xe')]});_0x72bb1f[_0x0477('0xf')]['push']({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':'Set','appdata':util['format']('CDR(type)=%s',_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')]),'context':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x11')],'exten':_0x1f7a0f[_0x3c1a47][0x0]['exten'],'priority':_0x72bb1f['priority']++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0]['VoiceExtensionId']});if(_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')]===_0x0477('0x12')){_0x72bb1f['extensions'][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0]['type'],'app':_0x0477('0x14'),'appdata':_0x0477('0x15')+_0x1f7a0f[_0x3c1a47][0x0]['VoiceExtensionId'],'context':_0x1f7a0f[_0x3c1a47][0x0]['context'],'exten':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0xe')],'priority':_0x72bb1f[_0x0477('0xc')]++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});}else if(_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')]===_0x0477('0x17')){if(_0x72bb1f[_0x0477('0xd')]){_0x72bb1f[_0x0477('0xf')][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':_0x0477('0x14'),'appdata':_0x0477('0x18')+(_0x72bb1f[_0x0477('0xd')][_0x0477('0x19')]?_0x0477('0x1a')+_0x72bb1f[_0x0477('0xd')][_0x0477('0x19')]+'}':_0x0477('0x1b')),'context':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x11')],'exten':_0x1f7a0f[_0x3c1a47][0x0]['exten'],'priority':_0x72bb1f[_0x0477('0xc')]++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0]['VoiceExtensionId']});}_0x72bb1f['extensions'][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':_0x0477('0x14'),'appdata':_0x0477('0x15')+_0x1f7a0f[_0x3c1a47][0x0]['VoiceExtensionId'],'context':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x11')],'exten':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0xe')],'priority':_0x72bb1f['priority']++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});var _0x221052=_0x72bb1f[_0x0477('0xc')]++;_0x72bb1f[_0x0477('0xf')][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':_0x0477('0x1c'),'appdata':_0x0477('0x1d')+(_0x221052+0x2)+'):Goto('+(_0x221052+0x1)+')','context':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x11')],'exten':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0xe')],'priority':_0x221052,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});if(_0x72bb1f[_0x0477('0xd')]){_0x72bb1f[_0x0477('0xf')][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':'Set','appdata':_0x72bb1f['extension'][_0x0477('0x19')]?_0x0477('0x1e')+_0x72bb1f[_0x0477('0xd')][_0x0477('0x19')]+'}':_0x0477('0x1f'),'context':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x11')],'exten':_0x1f7a0f[_0x3c1a47][0x0]['exten'],'priority':_0x72bb1f['priority']++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0]['VoiceExtensionId']});}_0x72bb1f['extensions'][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':_0x0477('0x14'),'appdata':'outboundrouteid='+_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')],'context':_0x1f7a0f[_0x3c1a47][0x0]['context'],'exten':_0x1f7a0f[_0x3c1a47][0x0]['exten'],'priority':_0x72bb1f[_0x0477('0xc')]++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});if(_0x72bb1f[_0x0477('0xd')]&&_0x72bb1f[_0x0477('0xd')][_0x0477('0x20')](_0x0477('0x21'))&&_0x72bb1f['extension'][_0x0477('0x21')]!==_0x0477('0x22')){_0x72bb1f[_0x0477('0xf')][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':_0x0477('0x14'),'appdata':_0x0477('0x23'),'context':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x11')],'exten':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0xe')],'priority':_0x72bb1f[_0x0477('0xc')]++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});_0x72bb1f[_0x0477('0xf')][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':_0x0477('0x14'),'appdata':_0x0477('0x24')+_0x72bb1f[_0x0477('0xd')][_0x0477('0x21')]||_0x0477('0x25'),'context':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x11')],'exten':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0xe')],'priority':_0x72bb1f[_0x0477('0xc')]++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});}}_0x72bb1f[_0x0477('0xf')][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':_0x0477('0x14'),'appdata':_0x0477('0x26'),'context':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x11')],'exten':_0x1f7a0f[_0x3c1a47][0x0]['exten'],'priority':_0x72bb1f[_0x0477('0xc')]++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});_0x72bb1f[_0x0477('0xf')][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0]['type'],'app':_0x0477('0x14'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x1f7a0f[_0x3c1a47][0x0]['context'],'exten':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0xe')],'priority':_0x72bb1f[_0x0477('0xc')]++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});_0x72bb1f[_0x0477('0xf')][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':'Set','appdata':_0x0477('0x27'),'context':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x11')],'exten':_0x1f7a0f[_0x3c1a47][0x0]['exten'],'priority':_0x72bb1f[_0x0477('0xc')]++,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});for(var _0x3e94b1=0x0,_0x2712fb=0x0;_0x3e94b1<_0x1f7a0f[_0x3c1a47][_0x0477('0x28')];_0x3e94b1+=0x1,_0x2712fb=0x0){var _0x297157=_0x1f7a0f[_0x3c1a47][_0x3e94b1];if(_0x297157[_0x0477('0x10')]){_0x297157[_0x0477('0x10')]=_0x297157[_0x0477('0x10')][_0x0477('0x29')]();}var _0x132a35=[];var _0x23e100=[];delete _0x297157['id'];delete _0x297157[_0x0477('0x2a')];delete _0x297157[_0x0477('0x2b')];var _0x557cf2=_0x297157[_0x0477('0x2c')]!==_0x0477('0x2d')?[_0x297157[_0x0477('0x2c')]]:_0x297157[_0x0477('0x2e')]?_[_0x0477('0x6')](_[_0x0477('0x8')](_0x72bb1f[_0x0477('0x3')],{'IntervalId':_0x297157[_0x0477('0x2e')]}),_0x0477('0x2c')):[];if(_0x297157[_0x0477('0x20')](_0x0477('0x2f'))){if(_0x297157[_0x0477('0x2f')]&&_0x297157[_0x0477('0x2f')]!=='--'){_0x132a35['push']({'type':_0x297157[_0x0477('0x10')],'app':'Set','appdata':_0x0477('0x30')+_0x297157['tag'],'context':_0x297157[_0x0477('0x11')],'exten':_0x297157['exten'],'priority':_0x557cf2['length']+_0x72bb1f[_0x0477('0xc')]+_0x2712fb++,'VoiceExtensionId':_0x297157[_0x0477('0x16')]});}}if(_0x297157[_0x0477('0x10')]===_0x0477('0x17')&&_0x297157[_0x0477('0x20')]('callerID')){if(_0x297157[_0x0477('0x31')]){_0x132a35[_0x0477('0x13')]({'type':_0x297157[_0x0477('0x10')],'app':_0x0477('0x1c'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='+_0x297157[_0x0477('0x31')]+')','context':_0x297157['context'],'exten':_0x297157['exten'],'priority':_0x557cf2['length']+_0x72bb1f['priority']+_0x2712fb++,'VoiceExtensionId':_0x297157[_0x0477('0x16')]});}else{_0x132a35[_0x0477('0x13')]({'type':_0x297157[_0x0477('0x10')],'app':'ExecIf','appdata':_0x0477('0x32'),'context':_0x297157[_0x0477('0x11')],'exten':_0x297157[_0x0477('0xe')],'priority':_0x557cf2[_0x0477('0x28')]+_0x72bb1f['priority']+_0x2712fb++,'VoiceExtensionId':_0x297157[_0x0477('0x16')]});}}if(_0x297157[_0x0477('0x20')](_0x0477('0x33'))){if(_0x46f7eb[_0x0477('0x34')](_0x297157[_0x0477('0x35')]['toLowerCase']())>=0x0&&_0x297157[_0x0477('0x36')]!==_0x0477('0x37')){if(_0x297157[_0x0477('0x33')]){_0x132a35[_0x0477('0x13')]({'type':_0x297157[_0x0477('0x10')],'app':_0x0477('0x1c'),'appdata':'$[${XCALLY-MOTION-ANSWER}=0]?Answer','context':_0x297157[_0x0477('0x11')],'exten':_0x297157[_0x0477('0xe')],'priority':_0x557cf2[_0x0477('0x28')]+_0x72bb1f[_0x0477('0xc')]+_0x2712fb++,'VoiceExtensionId':_0x297157[_0x0477('0x16')]});_0x132a35[_0x0477('0x13')]({'type':_0x297157[_0x0477('0x10')],'app':_0x0477('0x14'),'appdata':_0x0477('0x38'),'context':_0x297157[_0x0477('0x11')],'exten':_0x297157[_0x0477('0xe')],'priority':_0x557cf2[_0x0477('0x28')]+_0x72bb1f[_0x0477('0xc')]+_0x2712fb++,'VoiceExtensionId':_0x297157[_0x0477('0x16')]});}else{_0x132a35['push']({'type':_0x297157['type'],'app':_0x0477('0x1c'),'appdata':_0x0477('0x39'),'context':_0x297157[_0x0477('0x11')],'exten':_0x297157[_0x0477('0xe')],'priority':_0x557cf2[_0x0477('0x28')]+_0x72bb1f[_0x0477('0xc')]+_0x2712fb++,'VoiceExtensionId':_0x297157[_0x0477('0x16')]});_0x132a35[_0x0477('0x13')]({'type':_0x297157[_0x0477('0x10')],'app':'Set','appdata':_0x0477('0x3a'),'context':_0x297157[_0x0477('0x11')],'exten':_0x297157[_0x0477('0xe')],'priority':_0x557cf2[_0x0477('0x28')]+_0x72bb1f[_0x0477('0xc')]+_0x2712fb++,'VoiceExtensionId':_0x297157[_0x0477('0x16')]});}}}for(var _0x4562a2=0x0;_0x4562a2<_0x557cf2[_0x0477('0x28')];_0x4562a2+=0x1){var _0x44831e=_0x72bb1f[_0x0477('0xc')]+_0x557cf2[_0x0477('0x28')];var _0x45f8f6=_0x4562a2===_0x557cf2[_0x0477('0x28')]-0x1?_0x72bb1f[_0x0477('0xc')]+_0x132a35[_0x0477('0x28')]+_0x23e100[_0x0477('0x28')]+0x2:_0x72bb1f['priority']+_0x4562a2+0x1;_0x132a35['splice'](_0x4562a2,0x0,{'type':_0x297157['type'],'app':'GotoIfTime','appdata':_0x557cf2[_0x4562a2]+'?'+_0x297157[_0x0477('0x11')]+',${EXTEN},'+_0x44831e+':'+_0x297157[_0x0477('0x11')]+_0x0477('0x3b')+_0x45f8f6,'exten':_0x297157['exten'],'context':_0x297157[_0x0477('0x11')],'priority':_0x72bb1f[_0x0477('0xc')]+_0x4562a2,'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});}_0x297157[_0x0477('0xc')]=_0x132a35[_0x0477('0x28')]?_[_0x0477('0x3c')](_0x132a35)[_0x0477('0xc')]+0x1:_0x72bb1f['priority'];_0x72bb1f[_0x0477('0xc')]=(_0x23e100['length']?_['last'](_0x23e100)['priority']:_0x297157[_0x0477('0xc')])+0x1;_0x72bb1f[_0x0477('0xf')]=_[_0x0477('0x3d')](_0x72bb1f['extensions'],_0x132a35,[_0x297157],_0x23e100);}_0x72bb1f['extensions'][_0x0477('0x13')]({'type':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x10')],'app':_0x0477('0x3e'),'exten':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0xe')],'context':_0x1f7a0f[_0x3c1a47][0x0]['context'],'priority':_0x72bb1f[_0x0477('0xc')],'VoiceExtensionId':_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]});_0x228126[_0x0477('0x13')](_0x1f7a0f[_0x3c1a47][0x0][_0x0477('0x16')]);_0x5b2e38=_[_0x0477('0x3d')](_0x5b2e38,_0x72bb1f[_0x0477('0xf')]);}}return _0x26e57f[_0x0477('0x3f')](function(_0x39be9c){return _0x26e57f[_0x0477('0x0')][_0x0477('0x4')][_0x0477('0x40')]({'where':{'VoiceExtensionId':{'$in':_0x228126}},'transaction':_0x39be9c})[_0x0477('0x2')](function(_0x134b07){return _0x26e57f[_0x0477('0x0')][_0x0477('0x4')]['bulkCreate'](_[_0x0477('0x41')](_0x5b2e38,_0x0477('0xc')),{'transaction':_0x39be9c});});});})[_0x0477('0x42')](function(_0xedeaef){console[_0x0477('0x43')](_0xedeaef);});}exports[_0x0477('0x44')]=rewrite;
\ No newline at end of file
+var _0x4e28=['CDR(tag)=','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','indexOf','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','transaction','sortBy','catch','error','util','models','Interval','findAll','VoiceExtension','then','uniq','exten','filter','queue','playback','hasOwnProperty','extensions','extension','push','type','Set','format','CDR(type)=%s','context','priority','VoiceExtensionId','inbound','CDR(routeid)=','CDR(destination)=','cutdigits','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix','outboundrouteid=','none','wav','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','IntervalId','map','tag'];(function(_0x7671bc,_0x171145){var _0x55229f=function(_0x15b421){while(--_0x15b421){_0x7671bc['push'](_0x7671bc['shift']());}};_0x55229f(++_0x171145);}(_0x4e28,0xd4));var _0x84e2=function(_0x56220c,_0x4c0ec8){_0x56220c=_0x56220c-0x0;var _0x4c4d94=_0x4e28[_0x56220c];return _0x4c4d94;};'use strict';var _=require('lodash');var util=require(_0x84e2('0x0'));function rewrite(_0x237faf,_0x3f94a3){var _0x3e6ce2=this;return _0x237faf[_0x84e2('0x1')][_0x84e2('0x2')][_0x84e2('0x3')]({'raw':!![]})['then'](function(_0x2cbe0e){_0x3e6ce2['intervals']=_0x2cbe0e;return _0x237faf[_0x84e2('0x1')][_0x84e2('0x4')]['findAll']({'where':{'IntervalId':_0x3f94a3['IntervalId']},'raw':!![]});})[_0x84e2('0x5')](function(_0x2fce53){return _0x237faf[_0x84e2('0x1')][_0x84e2('0x4')]['findAll']({'where':{'exten':{'$in':_[_0x84e2('0x6')](_['map'](_0x2fce53,_0x84e2('0x7')))}},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})[_0x84e2('0x5')](function(_0x29533f){var _0x27a750=_[_0x84e2('0x8')](_0x29533f,{'priority':'1'});var _0x3cb715=_['filter'](_0x29533f,{'isApp':0x1});var _0x4e83ab=_['groupBy'](_0x3cb715,_0x84e2('0x7'));var _0x1bebfe=[_0x84e2('0x9'),_0x84e2('0xa')];var _0x5bb358=[];var _0x2cec53=[];for(var _0x3d57e9 in _0x4e83ab){if(_0x4e83ab[_0x84e2('0xb')](_0x3d57e9)){_0x3e6ce2['priority']=0x2;_0x3e6ce2[_0x84e2('0xc')]=[];_0x3e6ce2[_0x84e2('0xd')]=_['find'](_0x27a750,{'exten':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x7')]});_0x3e6ce2[_0x84e2('0xc')][_0x84e2('0xe')]({'type':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0xf')],'app':_0x84e2('0x10'),'appdata':util[_0x84e2('0x11')](_0x84e2('0x12'),_0x4e83ab[_0x3d57e9][0x0]['type']),'context':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x13')],'exten':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x7')],'priority':_0x3e6ce2[_0x84e2('0x14')]++,'VoiceExtensionId':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x15')]});if(_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0xf')]===_0x84e2('0x16')){_0x3e6ce2[_0x84e2('0xc')]['push']({'type':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0xf')],'app':_0x84e2('0x10'),'appdata':_0x84e2('0x17')+_0x4e83ab[_0x3d57e9][0x0]['VoiceExtensionId'],'context':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x13')],'exten':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x7')],'priority':_0x3e6ce2['priority']++,'VoiceExtensionId':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x15')]});}else if(_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0xf')]==='outbound'){if(_0x3e6ce2[_0x84e2('0xd')]){_0x3e6ce2['extensions']['push']({'type':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0xf')],'app':'Set','appdata':_0x84e2('0x18')+(_0x3e6ce2[_0x84e2('0xd')][_0x84e2('0x19')]?'${EXTEN:'+_0x3e6ce2[_0x84e2('0xd')][_0x84e2('0x19')]+'}':_0x84e2('0x1a')),'context':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x13')],'exten':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x7')],'priority':_0x3e6ce2[_0x84e2('0x14')]++,'VoiceExtensionId':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x15')]});}_0x3e6ce2['extensions'][_0x84e2('0xe')]({'type':_0x4e83ab[_0x3d57e9][0x0]['type'],'app':_0x84e2('0x10'),'appdata':'CDR(routeid)='+_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x15')],'context':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x13')],'exten':_0x4e83ab[_0x3d57e9][0x0]['exten'],'priority':_0x3e6ce2['priority']++,'VoiceExtensionId':_0x4e83ab[_0x3d57e9][0x0]['VoiceExtensionId']});var _0x5dc247=_0x3e6ce2[_0x84e2('0x14')]++;_0x3e6ce2[_0x84e2('0xc')]['push']({'type':_0x4e83ab[_0x3d57e9][0x0]['type'],'app':_0x84e2('0x1b'),'appdata':_0x84e2('0x1c')+(_0x5dc247+0x2)+_0x84e2('0x1d')+(_0x5dc247+0x1)+')','context':_0x4e83ab[_0x3d57e9][0x0]['context'],'exten':_0x4e83ab[_0x3d57e9][0x0]['exten'],'priority':_0x5dc247,'VoiceExtensionId':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x15')]});if(_0x3e6ce2['extension']){_0x3e6ce2[_0x84e2('0xc')][_0x84e2('0xe')]({'type':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0xf')],'app':'Set','appdata':_0x3e6ce2['extension'][_0x84e2('0x19')]?'CDR(prefix)=${EXTEN:0:'+_0x3e6ce2[_0x84e2('0xd')][_0x84e2('0x19')]+'}':_0x84e2('0x1e'),'context':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x13')],'exten':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x7')],'priority':_0x3e6ce2[_0x84e2('0x14')]++,'VoiceExtensionId':_0x4e83ab[_0x3d57e9][0x0]['VoiceExtensionId']});}_0x3e6ce2['extensions'][_0x84e2('0xe')]({'type':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0xf')],'app':_0x84e2('0x10'),'appdata':_0x84e2('0x1f')+_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x15')],'context':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x13')],'exten':_0x4e83ab[_0x3d57e9][0x0]['exten'],'priority':_0x3e6ce2[_0x84e2('0x14')]++,'VoiceExtensionId':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x15')]});if(_0x3e6ce2[_0x84e2('0xd')]&&_0x3e6ce2[_0x84e2('0xd')][_0x84e2('0xb')]('recordingFormat')&&_0x3e6ce2[_0x84e2('0xd')]['recordingFormat']!==_0x84e2('0x20')){_0x3e6ce2['extensions']['push']({'type':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0xf')],'app':_0x84e2('0x10'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x13')],'exten':_0x4e83ab[_0x3d57e9][0x0]['exten'],'priority':_0x3e6ce2[_0x84e2('0x14')]++,'VoiceExtensionId':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x15')]});_0x3e6ce2[_0x84e2('0xc')]['push']({'type':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0xf')],'app':'Set','appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x3e6ce2[_0x84e2('0xd')]['recordingFormat']||_0x84e2('0x21'),'context':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x13')],'exten':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x7')],'priority':_0x3e6ce2['priority']++,'VoiceExtensionId':_0x4e83ab[_0x3d57e9][0x0]['VoiceExtensionId']});}}_0x3e6ce2[_0x84e2('0xc')][_0x84e2('0xe')]({'type':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0xf')],'app':'Set','appdata':'XCALLY-MOTION-ANSWER=0','context':_0x4e83ab[_0x3d57e9][0x0]['context'],'exten':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x7')],'priority':_0x3e6ce2[_0x84e2('0x14')]++,'VoiceExtensionId':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x15')]});_0x3e6ce2['extensions'][_0x84e2('0xe')]({'type':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0xf')],'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x4e83ab[_0x3d57e9][0x0]['context'],'exten':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x7')],'priority':_0x3e6ce2[_0x84e2('0x14')]++,'VoiceExtensionId':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x15')]});_0x3e6ce2['extensions'][_0x84e2('0xe')]({'type':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0xf')],'app':_0x84e2('0x10'),'appdata':_0x84e2('0x22'),'context':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x13')],'exten':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x7')],'priority':_0x3e6ce2[_0x84e2('0x14')]++,'VoiceExtensionId':_0x4e83ab[_0x3d57e9][0x0]['VoiceExtensionId']});for(var _0x284725=0x0,_0x5c11e2=0x0;_0x284725<_0x4e83ab[_0x3d57e9][_0x84e2('0x23')];_0x284725+=0x1,_0x5c11e2=0x0){var _0x2ae524=_0x4e83ab[_0x3d57e9][_0x284725];if(_0x2ae524[_0x84e2('0xf')]){_0x2ae524[_0x84e2('0xf')]=_0x2ae524[_0x84e2('0xf')][_0x84e2('0x24')]();}var _0xdb604b=[];var _0x164db1=[];delete _0x2ae524['id'];delete _0x2ae524[_0x84e2('0x25')];delete _0x2ae524[_0x84e2('0x26')];var _0x31362d=_0x2ae524[_0x84e2('0x27')]!==_0x84e2('0x28')?[_0x2ae524[_0x84e2('0x27')]]:_0x2ae524[_0x84e2('0x29')]?_[_0x84e2('0x2a')](_[_0x84e2('0x8')](_0x3e6ce2['intervals'],{'IntervalId':_0x2ae524[_0x84e2('0x29')]}),_0x84e2('0x27')):[];if(_0x2ae524[_0x84e2('0xb')](_0x84e2('0x2b'))){if(_0x2ae524[_0x84e2('0x2b')]&&_0x2ae524['tag']!=='--'){_0xdb604b[_0x84e2('0xe')]({'type':_0x2ae524['type'],'app':_0x84e2('0x10'),'appdata':_0x84e2('0x2c')+_0x2ae524[_0x84e2('0x2b')],'context':_0x2ae524[_0x84e2('0x13')],'exten':_0x2ae524[_0x84e2('0x7')],'priority':_0x31362d[_0x84e2('0x23')]+_0x3e6ce2[_0x84e2('0x14')]+_0x5c11e2++,'VoiceExtensionId':_0x2ae524[_0x84e2('0x15')]});}}if(_0x2ae524[_0x84e2('0xf')]==='outbound'&&_0x2ae524[_0x84e2('0xb')](_0x84e2('0x2d'))){if(_0x2ae524['callerID']){_0xdb604b[_0x84e2('0xe')]({'type':_0x2ae524[_0x84e2('0xf')],'app':'ExecIf','appdata':_0x84e2('0x2e')+_0x2ae524[_0x84e2('0x2d')]+')','context':_0x2ae524[_0x84e2('0x13')],'exten':_0x2ae524[_0x84e2('0x7')],'priority':_0x31362d[_0x84e2('0x23')]+_0x3e6ce2[_0x84e2('0x14')]+_0x5c11e2++,'VoiceExtensionId':_0x2ae524[_0x84e2('0x15')]});}else{_0xdb604b['push']({'type':_0x2ae524[_0x84e2('0xf')],'app':_0x84e2('0x1b'),'appdata':_0x84e2('0x2f'),'context':_0x2ae524[_0x84e2('0x13')],'exten':_0x2ae524[_0x84e2('0x7')],'priority':_0x31362d[_0x84e2('0x23')]+_0x3e6ce2[_0x84e2('0x14')]+_0x5c11e2++,'VoiceExtensionId':_0x2ae524[_0x84e2('0x15')]});}}if(_0x2ae524[_0x84e2('0xb')]('answer')){if(_0x1bebfe[_0x84e2('0x30')](_0x2ae524['app'][_0x84e2('0x24')]())>=0x0&&_0x2ae524[_0x84e2('0x31')]!==_0x84e2('0x32')){if(_0x2ae524['answer']){_0xdb604b[_0x84e2('0xe')]({'type':_0x2ae524[_0x84e2('0xf')],'app':'ExecIf','appdata':_0x84e2('0x33'),'context':_0x2ae524['context'],'exten':_0x2ae524[_0x84e2('0x7')],'priority':_0x31362d[_0x84e2('0x23')]+_0x3e6ce2[_0x84e2('0x14')]+_0x5c11e2++,'VoiceExtensionId':_0x2ae524[_0x84e2('0x15')]});_0xdb604b[_0x84e2('0xe')]({'type':_0x2ae524[_0x84e2('0xf')],'app':_0x84e2('0x10'),'appdata':_0x84e2('0x34'),'context':_0x2ae524[_0x84e2('0x13')],'exten':_0x2ae524[_0x84e2('0x7')],'priority':_0x31362d['length']+_0x3e6ce2['priority']+_0x5c11e2++,'VoiceExtensionId':_0x2ae524[_0x84e2('0x15')]});}else{_0xdb604b[_0x84e2('0xe')]({'type':_0x2ae524[_0x84e2('0xf')],'app':_0x84e2('0x1b'),'appdata':_0x84e2('0x35'),'context':_0x2ae524[_0x84e2('0x13')],'exten':_0x2ae524['exten'],'priority':_0x31362d[_0x84e2('0x23')]+_0x3e6ce2['priority']+_0x5c11e2++,'VoiceExtensionId':_0x2ae524['VoiceExtensionId']});_0xdb604b[_0x84e2('0xe')]({'type':_0x2ae524['type'],'app':_0x84e2('0x10'),'appdata':_0x84e2('0x36'),'context':_0x2ae524[_0x84e2('0x13')],'exten':_0x2ae524[_0x84e2('0x7')],'priority':_0x31362d[_0x84e2('0x23')]+_0x3e6ce2[_0x84e2('0x14')]+_0x5c11e2++,'VoiceExtensionId':_0x2ae524[_0x84e2('0x15')]});}}}for(var _0x453cee=0x0;_0x453cee<_0x31362d['length'];_0x453cee+=0x1){var _0x471ea0=_0x3e6ce2[_0x84e2('0x14')]+_0x31362d[_0x84e2('0x23')];var _0x27c9bb=_0x453cee===_0x31362d[_0x84e2('0x23')]-0x1?_0x3e6ce2[_0x84e2('0x14')]+_0xdb604b[_0x84e2('0x23')]+_0x164db1[_0x84e2('0x23')]+0x2:_0x3e6ce2['priority']+_0x453cee+0x1;_0xdb604b[_0x84e2('0x37')](_0x453cee,0x0,{'type':_0x2ae524['type'],'app':_0x84e2('0x38'),'appdata':_0x31362d[_0x453cee]+'?'+_0x2ae524[_0x84e2('0x13')]+_0x84e2('0x39')+_0x471ea0+':'+_0x2ae524[_0x84e2('0x13')]+_0x84e2('0x39')+_0x27c9bb,'exten':_0x2ae524['exten'],'context':_0x2ae524[_0x84e2('0x13')],'priority':_0x3e6ce2[_0x84e2('0x14')]+_0x453cee,'VoiceExtensionId':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x15')]});}_0x2ae524[_0x84e2('0x14')]=_0xdb604b[_0x84e2('0x23')]?_[_0x84e2('0x3a')](_0xdb604b)[_0x84e2('0x14')]+0x1:_0x3e6ce2[_0x84e2('0x14')];_0x3e6ce2[_0x84e2('0x14')]=(_0x164db1[_0x84e2('0x23')]?_[_0x84e2('0x3a')](_0x164db1)[_0x84e2('0x14')]:_0x2ae524['priority'])+0x1;_0x3e6ce2[_0x84e2('0xc')]=_['concat'](_0x3e6ce2[_0x84e2('0xc')],_0xdb604b,[_0x2ae524],_0x164db1);}_0x3e6ce2[_0x84e2('0xc')][_0x84e2('0xe')]({'type':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0xf')],'app':'Hangup','exten':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x7')],'context':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x13')],'priority':_0x3e6ce2[_0x84e2('0x14')],'VoiceExtensionId':_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x15')]});_0x5bb358[_0x84e2('0xe')](_0x4e83ab[_0x3d57e9][0x0][_0x84e2('0x15')]);_0x2cec53=_[_0x84e2('0x3b')](_0x2cec53,_0x3e6ce2[_0x84e2('0xc')]);}}return _0x237faf[_0x84e2('0x3c')](function(_0x23bed8){return _0x237faf[_0x84e2('0x1')][_0x84e2('0x4')]['destroy']({'where':{'VoiceExtensionId':{'$in':_0x5bb358}},'transaction':_0x23bed8})[_0x84e2('0x5')](function(_0x542e2b){return _0x237faf[_0x84e2('0x1')][_0x84e2('0x4')]['bulkCreate'](_[_0x84e2('0x3d')](_0x2cec53,_0x84e2('0x14')),{'transaction':_0x23bed8});});});})[_0x84e2('0x3e')](function(_0x132cfc){console[_0x84e2('0x3f')](_0x132cfc);});}exports['rewrite']=rewrite;
\ No newline at end of file
index eb42620..2fbb554 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1042=['Lists','get','dialCheckDuplicateType','always','sequelize','query','onlyIfOpen','VoiceQueueId','all','findAll','outbound','BlackLists','Campaign','CampaignId','generalCheckHopper','emit','contact:csv_','resume','resolve','unlinkSync','exit','SIGINT','CSV\x20import\x20process\x20stopped!','CmContact','createReadStream','parse','info','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','ioredis','../../../config/logger','redis','defaults','localhost','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','zipObject','split','error','contact','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','find','duplicate','Duplicate\x20Contact','create','then','push','pick','catch','stringify','cmContact','inspect','insert','into','cm_hopper','createdAt','select','field','NOW()','scheduledAt','ContactId','toString','updatedAt','from','cm_contacts','ListId\x20=\x20?','where','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','fromQuery','deletedAt\x20IS\x20NULL','id\x20IN\x20?','calleridnum','str','CmList'];(function(_0x5235af,_0x428a33){var _0x3469c6=function(_0x2d7e93){while(--_0x2d7e93){_0x5235af['push'](_0x5235af['shift']());}};_0x3469c6(++_0x428a33);}(_0x1042,0xf4));var _0x2104=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1042[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0x2104('0x0'));var util=require(_0x2104('0x1'));var _=require(_0x2104('0x2'));var fs=require('fs');var squel=require(_0x2104('0x3'));var Papa=require('papaparse');var Redis=require(_0x2104('0x4'));var db=require('../../../mysqldb')['db'];var config=require('../../../config/environment');var logger=require(_0x2104('0x5'))('api');config[_0x2104('0x6')]=_[_0x2104('0x7')](config[_0x2104('0x6')],{'host':_0x2104('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x2104('0x6')]));require(_0x2104('0x9'))[_0x2104('0xa')](socket);try{if(!process[_0x2104('0xb')][0x2]||process['argv'][0x2]===_0x2104('0xc')||process['argv'][0x2]===_0x2104('0xd')){throw new Error(_0x2104('0xe'));}var FILEPATH=process[_0x2104('0xb')][0x2];if(!process['argv'][0x3]||process[_0x2104('0xb')][0x3]===_0x2104('0xc')||process['argv'][0x3]==='null'||!process[_0x2104('0xb')][0x4]||process[_0x2104('0xb')][0x4]===_0x2104('0xc')||process['argv'][0x4]==='null'){throw new Error(_0x2104('0xf'));}var FIELDS=_[_0x2104('0x10')](process['argv'][0x3][_0x2104('0x11')](','),process[_0x2104('0xb')][0x4][_0x2104('0x11')](','));if(!process['argv'][0x5]||process['argv'][0x5]===_0x2104('0xc')||process[_0x2104('0xb')][0x5]===_0x2104('0xd')){throw new Error('Missing\x20ListId\x20parameter!');}var LISTID=process[_0x2104('0xb')][0x5];var COMPANYID=process[_0x2104('0xb')][0x6]&&process[_0x2104('0xb')][0x6]!=='undefined'&&process[_0x2104('0xb')][0x6]!==_0x2104('0xd')?process['argv'][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0x2104('0xb')][0x7]!=='undefined'&&process[_0x2104('0xb')][0x7]!==_0x2104('0xd')?process[_0x2104('0xb')][0x7]:null;if(!process[_0x2104('0xb')][0x8]||process[_0x2104('0xb')][0x8]===_0x2104('0xc')||process[_0x2104('0xb')][0x8]===_0x2104('0xd')){throw new Error('Missing\x20socket_timestamp\x20parameter!');}var SOCKET_TIMESTAMP=process[_0x2104('0xb')][0x8];}catch(_0x2e2dfe){logger[_0x2104('0x12')](_0x2e2dfe);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(_0x2ebe5b,_0x32966c,_0x36fda7,_0x504400){var _0x2610a9={'message':_0x32966c};_0x2610a9[_0x2ebe5b]=!![];if(_0x36fda7){_0x2610a9[_0x2104('0x13')]=_0x36fda7;}if(_0x504400){_0x2610a9['index']=_0x504400;}return _0x2610a9;}function isEmail(_0x48ecb8){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))*$/[_0x2104('0x14')](_0x48ecb8);}function checkRow(_0x319d41,_0x2da1e8,_0x12ec54){return new BPromise(function(_0x4d0504,_0x3cb5a2){if(_[_0x2104('0x15')](_0x319d41)){return _0x3cb5a2(handleCheckRowError('error',_0x2104('0x16'),null,_0x12ec54));}if(_0x319d41['errors']&&_0x319d41[_0x2104('0x17')][_0x2104('0x18')]){var _0x445c3=_[_0x2104('0x19')](_0x319d41[_0x2104('0x17')],_0x2104('0x1a'))[_0x2104('0x1b')](';');return _0x3cb5a2(handleCheckRowError(_0x2104('0x12'),_0x445c3,null,_0x12ec54));}var _0x2e9a87={};for(var _0x240063 in FIELDS){if(FIELDS[_0x2104('0x1c')](_0x240063)&&FIELDS[_0x240063]){_0x2e9a87[_0x240063]=_0x319d41[_0x2104('0x1d')][0x0][FIELDS[_0x240063]]||_0x319d41['data'][0x0]['\ufeff'+FIELDS[_0x240063]];}}if(!_0x2e9a87[_0x2104('0x1e')]){return _0x3cb5a2(handleCheckRowError('error',_0x2104('0x1f'),null,_0x12ec54));}if(!_0x2e9a87[_0x2104('0x20')]){return _0x3cb5a2(handleCheckRowError(_0x2104('0x12'),_0x2104('0x21'),null,_0x12ec54));}if(_0x2e9a87[_0x2104('0x22')]){var _0x30f9c6=moment(_0x2e9a87[_0x2104('0x22')],_0x2104('0x23'));if(!_0x30f9c6[_0x2104('0x24')]()){return _0x3cb5a2(handleCheckRowError(_0x2104('0x12'),_0x2104('0x25'),null,_0x12ec54));}}if(_0x2e9a87[_0x2104('0x26')]){if(!isEmail(_0x2e9a87[_0x2104('0x26')])){return _0x3cb5a2(handleCheckRowError(_0x2104('0x12'),_0x2104('0x27'),null,_0x12ec54));}}_0x2e9a87[_0x2104('0x28')]=LISTID;_0x2e9a87[_0x2104('0x29')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x2da1e8){var _0x49c381={};for(var _0x10a6a0=0x0,_0x33f571=DUPLICATES[_0x2104('0x18')];_0x10a6a0<_0x33f571;_0x10a6a0+=0x1){_0x49c381[DUPLICATES[_0x10a6a0]]=_0x2e9a87[DUPLICATES[_0x10a6a0]];}var _0x280950=_[_0x2104('0x2a')](_0x2da1e8,_0x49c381);if(_0x280950){return _0x3cb5a2(handleCheckRowError(_0x2104('0x2b'),_0x2104('0x2c'),_0x280950,_0x12ec54));}}return db['CmContact'][_0x2104('0x2d')](_0x2e9a87,{'raw':!![],'hooks':![],'fields':_['keys'](_0x2e9a87)})[_0x2104('0x2e')](function(_0x5e5009){if(DUPLICATES&&DUPLICATES[_0x2104('0x18')]&&_0x2da1e8){_0x2da1e8[_0x2104('0x2f')](_[_0x2104('0x30')](_0x2e9a87,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x5e5009['id'];return _0x4d0504();})[_0x2104('0x31')](function(_0x4f831e){return _0x3cb5a2(handleCheckRowError(_0x2104('0x12'),'Error\x20while\x20creating\x20contact:\x20'+(_0x4f831e['message']||JSON[_0x2104('0x32')](_0x4f831e)),null,_0x12ec54));});});}function checkHopper(){function _0x595ac5(){return function(_0x2511b8){logger[_0x2104('0x12')](_0x2104('0x33'),'checkHopper',util[_0x2104('0x34')](_0x2511b8,{'showHidden':![],'depth':null}));};}var _0x55a72c=function(_0x25073a,_0x6fa4a4){var _0x22f32a=squel[_0x2104('0x35')]()[_0x2104('0x36')](_0x2104('0x37'))['fromQuery']([_0x2104('0x20'),'scheduledAt','ContactId',_0x2104('0x28'),_0x6fa4a4,_0x2104('0x38'),'updatedAt'],squel[_0x2104('0x39')]()[_0x2104('0x3a')]('phone',_0x2104('0x20'))[_0x2104('0x3a')](_0x2104('0x3b'),_0x2104('0x3c'))[_0x2104('0x3a')]('id',_0x2104('0x3d'))[_0x2104('0x3a')](LISTID[_0x2104('0x3e')](),'ListId')['field'](_0x25073a['id'][_0x2104('0x3e')](),_0x6fa4a4)[_0x2104('0x3a')](_0x2104('0x3b'),_0x2104('0x38'))[_0x2104('0x3a')]('NOW()',_0x2104('0x3f'))[_0x2104('0x40')](_0x2104('0x41'))['where']('deletedAt\x20IS\x20NULL')['where'](_0x2104('0x42'),LISTID[_0x2104('0x3e')]())[_0x2104('0x43')](_0x2104('0x44'))[_0x2104('0x43')](_0x2104('0x45'),squel[_0x2104('0x39')]()[_0x2104('0x3a')](_0x2104('0x20'))['from'](_0x2104('0x37'))['where'](_0x6fa4a4+_0x2104('0x46'),_0x25073a['id']['toString']())))[_0x2104('0x3e')]();return _0x22f32a;};var _0x53f93e=function(_0x1e7eb4,_0x42777d){var _0x5a5d7b=squel['insert']()[_0x2104('0x36')](_0x2104('0x37'))[_0x2104('0x47')](['phone','scheduledAt',_0x2104('0x3d'),'ListId',_0x42777d,'createdAt',_0x2104('0x3f')],squel['select']()['field'](_0x2104('0x20'),_0x2104('0x20'))[_0x2104('0x3a')](_0x2104('0x3b'),_0x2104('0x3c'))[_0x2104('0x3a')]('id','ContactId')['field'](LISTID[_0x2104('0x3e')](),'ListId')[_0x2104('0x3a')](_0x1e7eb4['id'][_0x2104('0x3e')](),_0x42777d)[_0x2104('0x3a')](_0x2104('0x3b'),_0x2104('0x38'))['field'](_0x2104('0x3b'),'updatedAt')[_0x2104('0x40')]('cm_contacts')['where'](_0x2104('0x48'))[_0x2104('0x43')](_0x2104('0x42'),LISTID['toString']())[_0x2104('0x43')](_0x2104('0x49'),squel['str'](hopperContacts))[_0x2104('0x43')](_0x2104('0x44'))['where'](_0x2104('0x45'),squel[_0x2104('0x39')]()['field'](_0x2104('0x4a'))[_0x2104('0x40')]('cm_hopper_final')[_0x2104('0x43')](_0x42777d+'\x20=\x20?',_0x1e7eb4['id'][_0x2104('0x3e')]()))[_0x2104('0x43')](_0x2104('0x45'),squel[_0x2104('0x39')]()['field']('phone')[_0x2104('0x40')]('cm_hopper')['where'](_0x42777d+_0x2104('0x46'),_0x1e7eb4['id'][_0x2104('0x3e')]())))[_0x2104('0x3e')]();return _0x5a5d7b;};function _0x2671ff(_0x21130f,_0x2f945e){var _0x17d93b=squel[_0x2104('0x35')]()[_0x2104('0x36')](_0x2104('0x37'))[_0x2104('0x47')](['phone',_0x2104('0x3c'),_0x2104('0x3d'),_0x2104('0x28'),_0x2f945e,'createdAt',_0x2104('0x3f')],squel[_0x2104('0x39')]()[_0x2104('0x3a')]('phone',_0x2104('0x20'))[_0x2104('0x3a')](_0x2104('0x3b'),_0x2104('0x3c'))[_0x2104('0x3a')]('id','ContactId')[_0x2104('0x3a')](LISTID[_0x2104('0x3e')](),_0x2104('0x28'))[_0x2104('0x3a')](_0x21130f['id'][_0x2104('0x3e')](),_0x2f945e)[_0x2104('0x3a')](_0x2104('0x3b'),_0x2104('0x38'))[_0x2104('0x3a')](_0x2104('0x3b'),_0x2104('0x3f'))[_0x2104('0x40')](_0x2104('0x41'))['where'](_0x2104('0x48'))[_0x2104('0x43')]('ListId\x20=\x20?',LISTID[_0x2104('0x3e')]())[_0x2104('0x43')](_0x2104('0x49'),squel[_0x2104('0x4b')](hopperContacts))[_0x2104('0x43')](_0x2104('0x44')))['toString']();return _0x17d93b;}function _0x46d173(_0x447b30,_0x52485b){var _0x3b2427=squel[_0x2104('0x35')]()[_0x2104('0x36')]('cm_hopper_black')[_0x2104('0x47')]([_0x2104('0x20'),_0x2104('0x3d'),_0x2104('0x28'),_0x52485b,'createdAt',_0x2104('0x3f')],squel[_0x2104('0x39')]()[_0x2104('0x3a')](_0x2104('0x20'),_0x2104('0x20'))[_0x2104('0x3a')]('id','ContactId')['field'](LISTID[_0x2104('0x3e')](),_0x2104('0x28'))['field'](_0x447b30['id']['toString'](),_0x52485b)[_0x2104('0x3a')](_0x2104('0x3b'),_0x2104('0x38'))[_0x2104('0x3a')](_0x2104('0x3b'),'updatedAt')[_0x2104('0x40')](_0x2104('0x41'))[_0x2104('0x43')](_0x2104('0x48'))[_0x2104('0x43')](_0x2104('0x42'),LISTID[_0x2104('0x3e')]())[_0x2104('0x43')](_0x2104('0x49'),squel[_0x2104('0x4b')](hopperContacts))[_0x2104('0x43')](_0x2104('0x44')))[_0x2104('0x3e')]();return _0x3b2427;}return db['VoiceQueue']['findAll']({'where':{'type':'outbound'},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x2104('0x4c')],'as':_0x2104('0x4d'),'where':{'id':LISTID}}]})[_0x2104('0x2e')](function(_0x5a56f7){var _0x2389cc=[];if(_0x5a56f7){var _0x5a4dd1;for(var _0x28b9ca=0x0,_0x1a70bc;_0x28b9ca<_0x5a56f7['length'];_0x28b9ca+=0x1){_0x1a70bc=_0x5a56f7[_0x28b9ca][_0x2104('0x4e')]({'plain':!![]});switch(_0x1a70bc[_0x2104('0x4f')]){case _0x2104('0x50'):_0x2389cc['push'](db[_0x2104('0x51')][_0x2104('0x52')](_0x53f93e(_0x1a70bc,'VoiceQueueId'))[_0x2104('0x2e')](function(){})[_0x2104('0x31')](_0x595ac5()));break;case _0x2104('0x53'):_0x2389cc[_0x2104('0x2f')](db[_0x2104('0x51')]['query'](_0x55a72c(_0x1a70bc,_0x2104('0x54')))[_0x2104('0x2e')](function(){})[_0x2104('0x31')](_0x595ac5()));break;default:_0x2389cc[_0x2104('0x2f')](db['sequelize'][_0x2104('0x52')](_0x2671ff(_0x1a70bc,_0x2104('0x54')))['then'](function(){})[_0x2104('0x31')](_0x595ac5()));}}}return _0x2389cc;})[_0x2104('0x55')]()['then'](function(){return db['VoiceQueue'][_0x2104('0x56')]({'where':{'type':_0x2104('0x57')},'attributes':['id'],'include':[{'model':db[_0x2104('0x4c')],'as':_0x2104('0x58'),'where':{'id':LISTID}}]})[_0x2104('0x2e')](function(_0x5c361a){var _0x355d54=[];if(_0x5c361a){var _0x603900;for(var _0x4bfd31=0x0,_0x508072;_0x4bfd31<_0x5c361a['length'];_0x4bfd31+=0x1){_0x508072=_0x5c361a[_0x4bfd31]['get']({'plain':!![]});_0x355d54['push'](db[_0x2104('0x51')]['query'](_0x46d173(_0x508072,_0x2104('0x54')))[_0x2104('0x2e')](function(){})[_0x2104('0x31')](_0x595ac5()));}}return _0x355d54;})[_0x2104('0x55')]();})[_0x2104('0x2e')](function(){return db[_0x2104('0x59')][_0x2104('0x56')]({'attributes':['id',_0x2104('0x4f')],'include':[{'model':db['CmList'],'as':_0x2104('0x4d'),'where':{'id':LISTID}}]})[_0x2104('0x2e')](function(_0x297b0b){var _0x3ad0e7=[];if(_0x297b0b){for(var _0x383893=0x0,_0x4769ad;_0x383893<_0x297b0b[_0x2104('0x18')];_0x383893+=0x1){_0x4769ad=_0x297b0b[_0x383893][_0x2104('0x4e')]({'plain':!![]});switch(_0x4769ad[_0x2104('0x4f')]){case _0x2104('0x50'):_0x3ad0e7[_0x2104('0x2f')](db['sequelize'][_0x2104('0x52')](_0x53f93e(_0x4769ad,_0x2104('0x5a')))['then'](function(){})[_0x2104('0x31')](_0x595ac5()));break;case'onlyIfOpen':_0x3ad0e7[_0x2104('0x2f')](db['sequelize']['query'](_0x55a72c(_0x4769ad,_0x2104('0x5a')))[_0x2104('0x2e')](function(){})['catch'](_0x595ac5()));break;default:_0x3ad0e7[_0x2104('0x2f')](db[_0x2104('0x51')]['query'](_0x2671ff(_0x4769ad,'CampaignId'))['then'](function(){})[_0x2104('0x31')](_0x595ac5()));}}}return _0x3ad0e7;})[_0x2104('0x55')]();})['then'](function(){return db['Campaign'][_0x2104('0x56')]({'attributes':['id'],'include':[{'model':db[_0x2104('0x4c')],'as':_0x2104('0x58'),'where':{'id':LISTID}}]})['then'](function(_0x2c8fcf){var _0x147ce5=[];if(_0x2c8fcf){for(var _0x8b09b8=0x0,_0x182b60;_0x8b09b8<_0x2c8fcf['length'];_0x8b09b8+=0x1){_0x182b60=_0x2c8fcf[_0x8b09b8][_0x2104('0x4e')]({'plain':!![]});_0x147ce5['push'](db[_0x2104('0x51')]['query'](_0x46d173(_0x182b60,'CampaignId'))[_0x2104('0x2e')](function(){})[_0x2104('0x31')](_0x595ac5()));}}return _0x147ce5;})[_0x2104('0x55')]();})['catch'](function(_0x7ec033){logger[_0x2104('0x12')]('cmContact,\x20%s,\x20%s',_0x2104('0x5b'),_0x7ec033[_0x2104('0x1a')]);});}var processPromises=function(_0x296d6e){return BPromise[_0x2104('0x55')](promises)[_0x2104('0x2e')](function(_0x4ec00c){})[_0x2104('0x31')](function(_0xd49d87){logger[_0x2104('0x12')]('Error\x20processing\x20rows\x20block:',JSON['stringify'](_0xd49d87));})['finally'](function(){socket[_0x2104('0x5c')](_0x2104('0x5d')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x296d6e){return _0x296d6e[_0x2104('0x5e')]();}});};var endCsv=function(){return BPromise[_0x2104('0x5f')]()[_0x2104('0x2e')](function(){if(hopperContacts){return checkHopper();}})[_0x2104('0x2e')](function(){socket['emit'](_0x2104('0x5d')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x2104('0x60')](FILEPATH);}catch(_0x15290e){logger['error']('Unable\x20to\x20delete\x20temp\x20file:',JSON['stringify'](_0x15290e));}finally{process[_0x2104('0x61')](0x0);}});};process['on'](_0x2104('0x62'),function(){logger['info'](_0x2104('0x63'));endCsv();});function main(){return BPromise[_0x2104('0x5f')]()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x2104('0x11')](',');return db[_0x2104('0x64')][_0x2104('0x56')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x2104('0x2e')](function(_0x2eea67){var _0x3a2f83=fs[_0x2104('0x65')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x2104('0x66')](_0x3a2f83,{'header':!![],'skipEmptyLines':!![],'step':function(_0x3317fd,_0x12d7c0){total+=0x1;var _0x17d1af=total;promises[_0x2104('0x2f')](checkRow(_0x3317fd,_0x2eea67,_0x17d1af)[_0x2104('0x2e')](function(){success+=0x1;})[_0x2104('0x31')](function(_0x444097){if(_0x444097[_0x2104('0x12')]){errors+=0x1;delete _0x444097[_0x2104('0x12')];}else if(_0x444097[_0x2104('0x2b')]){duplicates+=0x1;delete _0x444097[_0x2104('0x2b')];}rows['push'](_0x444097);}));if(total%0xc8===0x0){_0x12d7c0['pause']();return processPromises(_0x12d7c0);}},'complete':function(){return processPromises()['then'](function(){logger[_0x2104('0x67')](_0x2104('0x68'));endCsv();});},'error':function(_0x3afd24,_0x9b0c83){logger[_0x2104('0x67')](_0x2104('0x69'),JSON[_0x2104('0x32')](_0x3afd24));endCsv();}});})[_0x2104('0x31')](function(_0xbf26d9){logger[_0x2104('0x12')](_0x2104('0x6a'),JSON[_0x2104('0x32')](_0xbf26d9));});}main();
\ No newline at end of file
+var _0x2faa=['contact:csv_','resume','resolve','Unable\x20to\x20delete\x20temp\x20file:','exit','CmContact','createReadStream','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','papaparse','../../../config/logger','api','defaults','redis','localhost','../../../api/cmContact/cmContact.socket','argv','undefined','Missing\x20filepath\x20parameter!','null','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','map','message','join','hasOwnProperty','data','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','length','duplicate','create','then','push','pick','Error\x20while\x20creating\x20contact:\x20','stringify','inspect','insert','fromQuery','ContactId','createdAt','updatedAt','select','field','scheduledAt','toString','NOW()','from','cm_contacts','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','cm_hopper','\x20=\x20?','into','deletedAt\x20IS\x20NULL','id\x20IN\x20?','str','phone\x20NOT\x20IN\x20(?)','calleridnum','cm_hopper_final','VoiceQueue','findAll','dialCheckDuplicateType','CmList','Lists','get','always','sequelize','query','VoiceQueueId','catch','outbound','BlackLists','all','Campaign','CampaignId','onlyIfOpen','Error\x20processing\x20rows\x20block:','finally','emit'];(function(_0x4affe5,_0xa9d17){var _0x250b71=function(_0xf1466f){while(--_0xf1466f){_0x4affe5['push'](_0x4affe5['shift']());}};_0x250b71(++_0xa9d17);}(_0x2faa,0x138));var _0xa2fa=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x2faa[_0x2641f9];return _0x585741;};'use strict';var BPromise=require(_0xa2fa('0x0'));var util=require(_0xa2fa('0x1'));var _=require(_0xa2fa('0x2'));var fs=require('fs');var squel=require('squel');var Papa=require(_0xa2fa('0x3'));var Redis=require('ioredis');var db=require('../../../mysqldb')['db'];var config=require('../../../config/environment');var logger=require(_0xa2fa('0x4'))(_0xa2fa('0x5'));config['redis']=_[_0xa2fa('0x6')](config[_0xa2fa('0x7')],{'host':_0xa2fa('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa2fa('0x7')]));require(_0xa2fa('0x9'))['register'](socket);try{if(!process[_0xa2fa('0xa')][0x2]||process['argv'][0x2]===_0xa2fa('0xb')||process[_0xa2fa('0xa')][0x2]==='null'){throw new Error(_0xa2fa('0xc'));}var FILEPATH=process[_0xa2fa('0xa')][0x2];if(!process[_0xa2fa('0xa')][0x3]||process['argv'][0x3]==='undefined'||process[_0xa2fa('0xa')][0x3]===_0xa2fa('0xd')||!process[_0xa2fa('0xa')][0x4]||process[_0xa2fa('0xa')][0x4]===_0xa2fa('0xb')||process['argv'][0x4]==='null'){throw new Error(_0xa2fa('0xe'));}var FIELDS=_[_0xa2fa('0xf')](process['argv'][0x3][_0xa2fa('0x10')](','),process['argv'][0x4][_0xa2fa('0x10')](','));if(!process['argv'][0x5]||process[_0xa2fa('0xa')][0x5]===_0xa2fa('0xb')||process[_0xa2fa('0xa')][0x5]==='null'){throw new Error('Missing\x20ListId\x20parameter!');}var LISTID=process[_0xa2fa('0xa')][0x5];var COMPANYID=process[_0xa2fa('0xa')][0x6]&&process[_0xa2fa('0xa')][0x6]!==_0xa2fa('0xb')&&process[_0xa2fa('0xa')][0x6]!==_0xa2fa('0xd')?process[_0xa2fa('0xa')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process['argv'][0x7]!==_0xa2fa('0xb')&&process[_0xa2fa('0xa')][0x7]!==_0xa2fa('0xd')?process[_0xa2fa('0xa')][0x7]:null;if(!process['argv'][0x8]||process['argv'][0x8]===_0xa2fa('0xb')||process[_0xa2fa('0xa')][0x8]===_0xa2fa('0xd')){throw new Error(_0xa2fa('0x11'));}var SOCKET_TIMESTAMP=process[_0xa2fa('0xa')][0x8];}catch(_0x1cd5d1){logger[_0xa2fa('0x12')](_0x1cd5d1);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(_0xc6dfcc,_0x2aa24f,_0x4ccdba,_0x18e391){var _0x3b28c1={'message':_0x2aa24f};_0x3b28c1[_0xc6dfcc]=!![];if(_0x4ccdba){_0x3b28c1[_0xa2fa('0x13')]=_0x4ccdba;}if(_0x18e391){_0x3b28c1[_0xa2fa('0x14')]=_0x18e391;}return _0x3b28c1;}function isEmail(_0x10017e){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))*$/[_0xa2fa('0x15')](_0x10017e);}function checkRow(_0x5f21a9,_0x4ab7e8,_0x12173b){return new BPromise(function(_0x1ce890,_0x464a5f){if(_['isNil'](_0x5f21a9)){return _0x464a5f(handleCheckRowError(_0xa2fa('0x12'),_0xa2fa('0x16'),null,_0x12173b));}if(_0x5f21a9[_0xa2fa('0x17')]&&_0x5f21a9['errors']['length']){var _0x4bb1ba=_[_0xa2fa('0x18')](_0x5f21a9[_0xa2fa('0x17')],_0xa2fa('0x19'))[_0xa2fa('0x1a')](';');return _0x464a5f(handleCheckRowError(_0xa2fa('0x12'),_0x4bb1ba,null,_0x12173b));}var _0x18aa4a={};for(var _0x33d47b in FIELDS){if(FIELDS[_0xa2fa('0x1b')](_0x33d47b)&&FIELDS[_0x33d47b]){_0x18aa4a[_0x33d47b]=_0x5f21a9[_0xa2fa('0x1c')][0x0][FIELDS[_0x33d47b]]||_0x5f21a9[_0xa2fa('0x1c')][0x0]['\ufeff'+FIELDS[_0x33d47b]];}}if(!_0x18aa4a['firstName']){return _0x464a5f(handleCheckRowError(_0xa2fa('0x12'),'firstName\x20not\x20specified!',null,_0x12173b));}if(!_0x18aa4a[_0xa2fa('0x1d')]){return _0x464a5f(handleCheckRowError(_0xa2fa('0x12'),_0xa2fa('0x1e'),null,_0x12173b));}if(_0x18aa4a['birthDate']){var _0x56f0f6=moment(_0x18aa4a[_0xa2fa('0x1f')],_0xa2fa('0x20'));if(!_0x56f0f6[_0xa2fa('0x21')]()){return _0x464a5f(handleCheckRowError('error',_0xa2fa('0x22'),null,_0x12173b));}}if(_0x18aa4a['email']){if(!isEmail(_0x18aa4a[_0xa2fa('0x23')])){return _0x464a5f(handleCheckRowError('error',_0xa2fa('0x24'),null,_0x12173b));}}_0x18aa4a[_0xa2fa('0x25')]=LISTID;_0x18aa4a[_0xa2fa('0x26')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xa2fa('0x27')]&&_0x4ab7e8){var _0x40349d={};for(var _0x10f39e=0x0,_0x5cf198=DUPLICATES[_0xa2fa('0x27')];_0x10f39e<_0x5cf198;_0x10f39e+=0x1){_0x40349d[DUPLICATES[_0x10f39e]]=_0x18aa4a[DUPLICATES[_0x10f39e]];}var _0x448773=_['find'](_0x4ab7e8,_0x40349d);if(_0x448773){return _0x464a5f(handleCheckRowError(_0xa2fa('0x28'),'Duplicate\x20Contact',_0x448773,_0x12173b));}}return db['CmContact'][_0xa2fa('0x29')](_0x18aa4a,{'raw':!![],'hooks':![],'fields':_['keys'](_0x18aa4a)})[_0xa2fa('0x2a')](function(_0x497254){if(DUPLICATES&&DUPLICATES[_0xa2fa('0x27')]&&_0x4ab7e8){_0x4ab7e8[_0xa2fa('0x2b')](_[_0xa2fa('0x2c')](_0x18aa4a,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x497254['id'];return _0x1ce890();})['catch'](function(_0x1db901){return _0x464a5f(handleCheckRowError(_0xa2fa('0x12'),_0xa2fa('0x2d')+(_0x1db901[_0xa2fa('0x19')]||JSON[_0xa2fa('0x2e')](_0x1db901)),null,_0x12173b));});});}function checkHopper(){function _0x7a0fc8(){return function(_0x6d440f){logger[_0xa2fa('0x12')]('cmContact','checkHopper',util[_0xa2fa('0x2f')](_0x6d440f,{'showHidden':![],'depth':null}));};}var _0x473a40=function(_0x52a610,_0x880dce){var _0x171237=squel[_0xa2fa('0x30')]()['into']('cm_hopper')[_0xa2fa('0x31')]([_0xa2fa('0x1d'),'scheduledAt',_0xa2fa('0x32'),'ListId',_0x880dce,_0xa2fa('0x33'),_0xa2fa('0x34')],squel[_0xa2fa('0x35')]()[_0xa2fa('0x36')]('phone',_0xa2fa('0x1d'))['field']('NOW()',_0xa2fa('0x37'))[_0xa2fa('0x36')]('id',_0xa2fa('0x32'))['field'](LISTID[_0xa2fa('0x38')](),'ListId')['field'](_0x52a610['id'][_0xa2fa('0x38')](),_0x880dce)[_0xa2fa('0x36')]('NOW()',_0xa2fa('0x33'))[_0xa2fa('0x36')](_0xa2fa('0x39'),_0xa2fa('0x34'))[_0xa2fa('0x3a')](_0xa2fa('0x3b'))[_0xa2fa('0x3c')]('deletedAt\x20IS\x20NULL')['where'](_0xa2fa('0x3d'),LISTID[_0xa2fa('0x38')]())[_0xa2fa('0x3c')](_0xa2fa('0x3e'))[_0xa2fa('0x3c')]('phone\x20NOT\x20IN\x20(?)',squel[_0xa2fa('0x35')]()['field']('phone')[_0xa2fa('0x3a')](_0xa2fa('0x3f'))['where'](_0x880dce+_0xa2fa('0x40'),_0x52a610['id'][_0xa2fa('0x38')]())))[_0xa2fa('0x38')]();return _0x171237;};var _0x32c5ce=function(_0xb4f9b1,_0x28502e){var _0xd787d0=squel[_0xa2fa('0x30')]()[_0xa2fa('0x41')](_0xa2fa('0x3f'))['fromQuery'](['phone',_0xa2fa('0x37'),_0xa2fa('0x32'),_0xa2fa('0x25'),_0x28502e,_0xa2fa('0x33'),_0xa2fa('0x34')],squel[_0xa2fa('0x35')]()[_0xa2fa('0x36')](_0xa2fa('0x1d'),_0xa2fa('0x1d'))[_0xa2fa('0x36')](_0xa2fa('0x39'),_0xa2fa('0x37'))[_0xa2fa('0x36')]('id',_0xa2fa('0x32'))[_0xa2fa('0x36')](LISTID[_0xa2fa('0x38')](),'ListId')[_0xa2fa('0x36')](_0xb4f9b1['id'][_0xa2fa('0x38')](),_0x28502e)[_0xa2fa('0x36')](_0xa2fa('0x39'),_0xa2fa('0x33'))[_0xa2fa('0x36')](_0xa2fa('0x39'),_0xa2fa('0x34'))[_0xa2fa('0x3a')](_0xa2fa('0x3b'))['where'](_0xa2fa('0x42'))[_0xa2fa('0x3c')](_0xa2fa('0x3d'),LISTID[_0xa2fa('0x38')]())[_0xa2fa('0x3c')](_0xa2fa('0x43'),squel[_0xa2fa('0x44')](hopperContacts))['where'](_0xa2fa('0x3e'))[_0xa2fa('0x3c')](_0xa2fa('0x45'),squel[_0xa2fa('0x35')]()[_0xa2fa('0x36')](_0xa2fa('0x46'))[_0xa2fa('0x3a')](_0xa2fa('0x47'))[_0xa2fa('0x3c')](_0x28502e+'\x20=\x20?',_0xb4f9b1['id'][_0xa2fa('0x38')]()))[_0xa2fa('0x3c')](_0xa2fa('0x45'),squel[_0xa2fa('0x35')]()['field'](_0xa2fa('0x1d'))[_0xa2fa('0x3a')](_0xa2fa('0x3f'))[_0xa2fa('0x3c')](_0x28502e+'\x20=\x20?',_0xb4f9b1['id']['toString']())))[_0xa2fa('0x38')]();return _0xd787d0;};function _0x2b9bc3(_0x153bc1,_0xd9e7ce){var _0x338ab0=squel['insert']()['into']('cm_hopper')[_0xa2fa('0x31')]([_0xa2fa('0x1d'),_0xa2fa('0x37'),'ContactId',_0xa2fa('0x25'),_0xd9e7ce,_0xa2fa('0x33'),_0xa2fa('0x34')],squel[_0xa2fa('0x35')]()[_0xa2fa('0x36')]('phone',_0xa2fa('0x1d'))[_0xa2fa('0x36')](_0xa2fa('0x39'),_0xa2fa('0x37'))[_0xa2fa('0x36')]('id',_0xa2fa('0x32'))[_0xa2fa('0x36')](LISTID['toString'](),_0xa2fa('0x25'))['field'](_0x153bc1['id'][_0xa2fa('0x38')](),_0xd9e7ce)[_0xa2fa('0x36')](_0xa2fa('0x39'),'createdAt')['field'](_0xa2fa('0x39'),_0xa2fa('0x34'))[_0xa2fa('0x3a')]('cm_contacts')[_0xa2fa('0x3c')](_0xa2fa('0x42'))[_0xa2fa('0x3c')]('ListId\x20=\x20?',LISTID[_0xa2fa('0x38')]())['where'](_0xa2fa('0x43'),squel[_0xa2fa('0x44')](hopperContacts))['where'](_0xa2fa('0x3e')))[_0xa2fa('0x38')]();return _0x338ab0;}function _0x106e4e(_0x2688fb,_0x34b98d){var _0x1387e5=squel['insert']()[_0xa2fa('0x41')]('cm_hopper_black')[_0xa2fa('0x31')]([_0xa2fa('0x1d'),_0xa2fa('0x32'),'ListId',_0x34b98d,_0xa2fa('0x33'),_0xa2fa('0x34')],squel['select']()[_0xa2fa('0x36')]('phone','phone')[_0xa2fa('0x36')]('id',_0xa2fa('0x32'))[_0xa2fa('0x36')](LISTID[_0xa2fa('0x38')](),_0xa2fa('0x25'))[_0xa2fa('0x36')](_0x2688fb['id'][_0xa2fa('0x38')](),_0x34b98d)[_0xa2fa('0x36')](_0xa2fa('0x39'),_0xa2fa('0x33'))[_0xa2fa('0x36')](_0xa2fa('0x39'),_0xa2fa('0x34'))[_0xa2fa('0x3a')](_0xa2fa('0x3b'))[_0xa2fa('0x3c')](_0xa2fa('0x42'))['where'](_0xa2fa('0x3d'),LISTID[_0xa2fa('0x38')]())[_0xa2fa('0x3c')](_0xa2fa('0x43'),squel[_0xa2fa('0x44')](hopperContacts))[_0xa2fa('0x3c')](_0xa2fa('0x3e')))['toString']();return _0x1387e5;}return db[_0xa2fa('0x48')][_0xa2fa('0x49')]({'where':{'type':'outbound'},'attributes':['id',_0xa2fa('0x4a')],'include':[{'model':db[_0xa2fa('0x4b')],'as':_0xa2fa('0x4c'),'where':{'id':LISTID}}]})['then'](function(_0x32fa48){var _0x8a7b69=[];if(_0x32fa48){var _0x53c05f;for(var _0x3396d9=0x0,_0x517c91;_0x3396d9<_0x32fa48['length'];_0x3396d9+=0x1){_0x517c91=_0x32fa48[_0x3396d9][_0xa2fa('0x4d')]({'plain':!![]});switch(_0x517c91['dialCheckDuplicateType']){case _0xa2fa('0x4e'):_0x8a7b69['push'](db[_0xa2fa('0x4f')][_0xa2fa('0x50')](_0x32c5ce(_0x517c91,_0xa2fa('0x51')))['then'](function(){})[_0xa2fa('0x52')](_0x7a0fc8()));break;case'onlyIfOpen':_0x8a7b69[_0xa2fa('0x2b')](db[_0xa2fa('0x4f')][_0xa2fa('0x50')](_0x473a40(_0x517c91,_0xa2fa('0x51')))[_0xa2fa('0x2a')](function(){})['catch'](_0x7a0fc8()));break;default:_0x8a7b69[_0xa2fa('0x2b')](db[_0xa2fa('0x4f')]['query'](_0x2b9bc3(_0x517c91,_0xa2fa('0x51')))['then'](function(){})[_0xa2fa('0x52')](_0x7a0fc8()));}}}return _0x8a7b69;})['all']()[_0xa2fa('0x2a')](function(){return db['VoiceQueue']['findAll']({'where':{'type':_0xa2fa('0x53')},'attributes':['id'],'include':[{'model':db[_0xa2fa('0x4b')],'as':_0xa2fa('0x54'),'where':{'id':LISTID}}]})[_0xa2fa('0x2a')](function(_0x274bca){var _0x12d78f=[];if(_0x274bca){var _0x5937d5;for(var _0x414430=0x0,_0x3a9e08;_0x414430<_0x274bca[_0xa2fa('0x27')];_0x414430+=0x1){_0x3a9e08=_0x274bca[_0x414430]['get']({'plain':!![]});_0x12d78f[_0xa2fa('0x2b')](db[_0xa2fa('0x4f')][_0xa2fa('0x50')](_0x106e4e(_0x3a9e08,_0xa2fa('0x51')))['then'](function(){})[_0xa2fa('0x52')](_0x7a0fc8()));}}return _0x12d78f;})[_0xa2fa('0x55')]();})[_0xa2fa('0x2a')](function(){return db[_0xa2fa('0x56')][_0xa2fa('0x49')]({'attributes':['id',_0xa2fa('0x4a')],'include':[{'model':db['CmList'],'as':'Lists','where':{'id':LISTID}}]})[_0xa2fa('0x2a')](function(_0x8a5fd4){var _0x3a9bad=[];if(_0x8a5fd4){for(var _0x1c8116=0x0,_0x293fcd;_0x1c8116<_0x8a5fd4[_0xa2fa('0x27')];_0x1c8116+=0x1){_0x293fcd=_0x8a5fd4[_0x1c8116][_0xa2fa('0x4d')]({'plain':!![]});switch(_0x293fcd[_0xa2fa('0x4a')]){case'always':_0x3a9bad[_0xa2fa('0x2b')](db[_0xa2fa('0x4f')][_0xa2fa('0x50')](_0x32c5ce(_0x293fcd,_0xa2fa('0x57')))['then'](function(){})['catch'](_0x7a0fc8()));break;case _0xa2fa('0x58'):_0x3a9bad[_0xa2fa('0x2b')](db[_0xa2fa('0x4f')][_0xa2fa('0x50')](_0x473a40(_0x293fcd,'CampaignId'))['then'](function(){})[_0xa2fa('0x52')](_0x7a0fc8()));break;default:_0x3a9bad[_0xa2fa('0x2b')](db[_0xa2fa('0x4f')][_0xa2fa('0x50')](_0x2b9bc3(_0x293fcd,_0xa2fa('0x57')))[_0xa2fa('0x2a')](function(){})[_0xa2fa('0x52')](_0x7a0fc8()));}}}return _0x3a9bad;})[_0xa2fa('0x55')]();})[_0xa2fa('0x2a')](function(){return db[_0xa2fa('0x56')][_0xa2fa('0x49')]({'attributes':['id'],'include':[{'model':db[_0xa2fa('0x4b')],'as':_0xa2fa('0x54'),'where':{'id':LISTID}}]})[_0xa2fa('0x2a')](function(_0x55b7d7){var _0x3f500b=[];if(_0x55b7d7){for(var _0x5245f0=0x0,_0x4ddca7;_0x5245f0<_0x55b7d7[_0xa2fa('0x27')];_0x5245f0+=0x1){_0x4ddca7=_0x55b7d7[_0x5245f0][_0xa2fa('0x4d')]({'plain':!![]});_0x3f500b[_0xa2fa('0x2b')](db['sequelize']['query'](_0x106e4e(_0x4ddca7,_0xa2fa('0x57')))[_0xa2fa('0x2a')](function(){})[_0xa2fa('0x52')](_0x7a0fc8()));}}return _0x3f500b;})['all']();})[_0xa2fa('0x52')](function(_0x3d4e40){logger[_0xa2fa('0x12')]('cmContact,\x20%s,\x20%s','generalCheckHopper',_0x3d4e40[_0xa2fa('0x19')]);});}var processPromises=function(_0x15662e){return BPromise[_0xa2fa('0x55')](promises)[_0xa2fa('0x2a')](function(_0x5b9199){})[_0xa2fa('0x52')](function(_0xf865e1){logger[_0xa2fa('0x12')](_0xa2fa('0x59'),JSON['stringify'](_0xf865e1));})[_0xa2fa('0x5a')](function(){socket[_0xa2fa('0x5b')](_0xa2fa('0x5c')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x15662e){return _0x15662e[_0xa2fa('0x5d')]();}});};var endCsv=function(){return BPromise[_0xa2fa('0x5e')]()[_0xa2fa('0x2a')](function(){if(hopperContacts){return checkHopper();}})[_0xa2fa('0x2a')](function(){socket['emit']('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs['unlinkSync'](FILEPATH);}catch(_0x301b20){logger[_0xa2fa('0x12')](_0xa2fa('0x5f'),JSON[_0xa2fa('0x2e')](_0x301b20));}finally{process[_0xa2fa('0x60')](0x0);}});};process['on']('SIGINT',function(){logger['info']('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise['resolve']()[_0xa2fa('0x2a')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xa2fa('0x10')](',');return db[_0xa2fa('0x61')]['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0xa2fa('0x2a')](function(_0x22f6d6){var _0x2f29b2=fs[_0xa2fa('0x62')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa['parse'](_0x2f29b2,{'header':!![],'skipEmptyLines':!![],'step':function(_0x27b0cf,_0x2e7e87){total+=0x1;var _0x3ffc44=total;promises[_0xa2fa('0x2b')](checkRow(_0x27b0cf,_0x22f6d6,_0x3ffc44)['then'](function(){success+=0x1;})[_0xa2fa('0x52')](function(_0x36a465){if(_0x36a465[_0xa2fa('0x12')]){errors+=0x1;delete _0x36a465['error'];}else if(_0x36a465['duplicate']){duplicates+=0x1;delete _0x36a465[_0xa2fa('0x28')];}rows[_0xa2fa('0x2b')](_0x36a465);}));if(total%0xc8===0x0){_0x2e7e87['pause']();return processPromises(_0x2e7e87);}},'complete':function(){return processPromises()[_0xa2fa('0x2a')](function(){logger['info']('CSV\x20parsed\x20correctly!');endCsv();});},'error':function(_0x560315,_0x4be4ff){logger['info'](_0xa2fa('0x63'),JSON[_0xa2fa('0x2e')](_0x560315));endCsv();}});})[_0xa2fa('0x52')](function(_0x56b861){logger[_0xa2fa('0x12')](_0xa2fa('0x64'),JSON[_0xa2fa('0x2e')](_0x56b861));});}main();
\ No newline at end of file
index 2cff23c..b2e0ab6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64f3=['binding','clone','socket_timestamp','root','.csv','keys','includes','header','ContactItemType','findAll','name','_description','writeFileSync','parse','createReadStream','data','rows','find','hasOwnProperty','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','itemTypeId','description','SystemRow','appendFileSync','emit','abort','SystemError','step','duplicates','cm_contacts_','\x20LIKE\x20cm_contacts;','campaigns_','voice_queues_','CREATE\x20TABLE\x20','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','dialTimezone,utcOffset','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','each','contactId','contactTypeId','orderBy','VoiceQueueId','voice_queues_has_cm_blacklists','voice_queues','campaigns','CampaignId','campaigns_has_cm_blacklists','DROP\x20TABLE\x20','affectedRows','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','server/files/tmp','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','path','lodash','papaparse','util','bluebird','moment','ioredis','../../../config/environment','defaults','redis','localhost','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','test','select','phone','.id\x20=\x20','\x20=\x20','where','join','CmContact','length','push','all','then','AdditionalPhones','split','CmContactHasItem','update','updated','create','PHONE','inserted','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','fields','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','toString','cm_hopper_black','.CmListId\x20=\x20?','field','ListId\x20=\x20?','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','scheduledat','\x22onlyIfOpen\x22','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','CmHopperId','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','CompanyId','scheduledAt',')\x20NOT\x20IN\x20?','id\x20IN\x20?','MIN(id)','min_id','group','info','message','exit','errors','code','sequelize','spread','catch','error','campaigns_has_cm_lists','campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId','campaigns_has_cm_lists.CmListId=','voice_queues.id','voice_queues_has_cm_lists','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','voice_queues_has_cm_lists.CmListId=','query','timezones','dialTimezone','isNil','utcOffset','set','offset','stringify','start'];(function(_0xade573,_0x7381fb){var _0x33ee47=function(_0x13ec05){while(--_0x13ec05){_0xade573['push'](_0xade573['shift']());}};_0x33ee47(++_0x7381fb);}(_0x64f3,0x107));var _0x364f=function(_0x1f7141,_0x280b75){_0x1f7141=_0x1f7141-0x0;var _0x50bb46=_0x64f3[_0x1f7141];return _0x50bb46;};'use strict';var fs=require('fs');var path=require(_0x364f('0x0'));var _=require(_0x364f('0x1'));var Papa=require(_0x364f('0x2'));var util=require(_0x364f('0x3'));var BPromise=require(_0x364f('0x4'));var moment=require(_0x364f('0x5'));var squel=require('squel');var Redis=require(_0x364f('0x6'));var db=require('../../../mysqldb')['db'];var config=require(_0x364f('0x7'));var shared=require('../../../config/environment/shared');var logger=require('../../../config/logger')('import');config['redis']=_[_0x364f('0x8')](config[_0x364f('0x9')],{'host':_0x364f('0xa'),'port':0x18eb});var socket=require(_0x364f('0xb'))(new Redis(config[_0x364f('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0x364f('0xc')](_0x364f('0xd'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0x364f('0xc')](_0x364f('0xd'));function isEmail(_0x310d8b){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))*$/[_0x364f('0xe')](_0x310d8b);}function selectNotIn(_0x4476b0,_0x1e0ee9,_0x20dc51,_0x48879f,_0x442f89){return squel[_0x364f('0xf')]()['field'](_0x364f('0x10'))['from'](_0x48879f)['join'](_0x1e0ee9,null,_0x1e0ee9+_0x364f('0x11')+_0x48879f+'.'+_0x20dc51)['where'](_0x48879f+'.'+_0x20dc51+_0x364f('0x12')+_0x4476b0+'.'+_0x20dc51)[_0x364f('0x13')](_0x1e0ee9+'.dialCheckDuplicateType\x20IN\x20('+_0x442f89[_0x364f('0x14')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x209fcb,_0x113347){promisesAdditionalPhones=[];return db[_0x364f('0x15')]['findAll']({'raw':!![],'attributes':['id','AdditionalPhones'],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})['then'](function(_0x59eb51){if(_0x59eb51!==null){var _0x279078=[];for(var _0xde76e5=0x0;_0xde76e5<_0x59eb51[_0x364f('0x16')];_0xde76e5++){var _0x267ebb=_0x59eb51[_0xde76e5];_0x279078[_0x364f('0x17')](insertAdditionalPhones(_0x267ebb));}}Promise[_0x364f('0x18')](_0x279078)[_0x364f('0x19')](function(){_0x209fcb({'val':0x1});});});});}function insertAdditionalPhones(_0x5e2ec9){return new Promise(function(_0x1205e2,_0x24aef3){var _0x50e5fb=_0x5e2ec9[_0x364f('0x1a')];var _0x235555=_0x50e5fb[_0x364f('0x1b')](';');var _0xd25318=[];orderBy=0x0;for(var _0x29da67=0x0;_0x29da67<_0x235555['length'];_0x29da67++){_0xd25318[_0x364f('0x17')](splitAdditionalPhone(_0x5e2ec9['id'],_0x235555[_0x29da67]));}Promise[_0x364f('0x18')](_0xd25318)[_0x364f('0x19')](function(){_0x1205e2({'val':_0x235555[_0x364f('0x16')]});});});}function splitAdditionalPhone(_0x10042f,_0x35f464){return new Promise(function(_0x40fa0e,_0x5a6764){var _0x4eb322=_0x35f464[_0x364f('0x1b')](':');var _0xd7d4a8=_0x4eb322[0x0];var _0x5cc2be=_0x4eb322[0x1];if(!_['isNil'](_0x5cc2be)){var _0x44b2bc=_0x5cc2be[_0x364f('0x1b')]('|');var _0x21498a=[];for(var _0x2f0d46=0x0;_0x2f0d46<_0x44b2bc[_0x364f('0x16')];_0x2f0d46++){if(_0x44b2bc[_0x2f0d46]!==''){var _0x1139de=_['filter'](promisesAdditionalPhones,{'contactId':_0x10042f,'phone':_0x44b2bc[_0x2f0d46]});if(_0x1139de[_0x364f('0x16')]==0x0){orderBy++;promisesAdditionalPhones[_0x364f('0x17')]({'contactId':_0x10042f,'contactTypeId':_0xd7d4a8,'phone':_0x44b2bc[_0x2f0d46],'orderBy':orderBy});}}}_0x40fa0e({'ok':0x1});}else _0x40fa0e({'res':0x0});});}function createAdditionalPhone(_0x142858,_0x309975,_0x5ed21a,_0x3497ac){var _0x1f77a9='';var _0x566db9='';var _0x1c2124=_0x5ed21a[_0x364f('0x1b')]('§');_0x1f77a9=_0x1c2124[0x0];if(_0x1c2124[_0x364f('0x16')]==0x2)_0x566db9=_0x1c2124[0x1];return new Promise(function(_0x2c9596,_0x35090f){return db[_0x364f('0x1c')]['findOne']({'where':{'CmContactId':_0x142858,'item':_0x1f77a9}})[_0x364f('0x19')](function(_0x15e63a){if(_0x15e63a){return db[_0x364f('0x1c')][_0x364f('0x1d')]({'ItemTypeId':_0x309975,'description':_0x566db9,'OrderBy':_0x3497ac},{'where':{'CmContactId':_0x142858,'item':_0x1f77a9}})[_0x364f('0x19')](function(_0x57435b){_0x2c9596({'res':_0x364f('0x1e')});});}else{return db['CmContactHasItem'][_0x364f('0x1f')]({'CmContactId':_0x142858,'item':_0x1f77a9,'description':_0x566db9,'ItemTypeId':_0x309975,'OrderBy':_0x3497ac,'ItemClass':_0x364f('0x20')})[_0x364f('0x19')](function(_0x33aca2){_0x2c9596({'res':_0x364f('0x21')});});}});});}function insertCmHopper(_0x509d69,_0x36aed2,_0x1b538c,_0x288688,_0x56f690){var _0x26ef6c=[_0x364f('0x22'),_0x364f('0x23'),_0x364f('0x24'),_0x364f('0x25'),_0x36aed2+'.'+_0x288688,_0x364f('0x26'),_0x364f('0x27'),_0x364f('0x28'),_0x364f('0x29'),'\x22'+_0x56f690+'\x22'];return squel[_0x364f('0x2a')]()[_0x364f('0x2b')](_0x364f('0x2c'))[_0x364f('0x2d')](['phone','scheduledat',_0x364f('0x2e'),_0x364f('0x2f'),_0x288688,_0x364f('0x30'),_0x364f('0x31'),_0x364f('0x32'),_0x364f('0x33'),_0x364f('0x34')],squel[_0x364f('0xf')]()[_0x364f('0x35')](_0x26ef6c)[_0x364f('0x36')](_0x36aed2)['join'](_0x364f('0x37'),null,_0x364f('0x38')+_0x36aed2+_0x364f('0x39'))['join'](_0x1b538c,null,_0x1b538c+'.id\x20=\x20'+_0x36aed2+'.'+_0x288688)[_0x364f('0x13')](_0x36aed2+'.CmListId\x20=\x20?',_0x509d69)['where'](_0x364f('0x3a'),NOW)[_0x364f('0x13')](_0x364f('0x3b'),selectNotIn(_0x36aed2,_0x1b538c,_0x288688,_0x364f('0x2c'),['\x22always\x22','\x22onlyIfOpen\x22']))[_0x364f('0x13')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x36aed2,_0x1b538c,_0x288688,_0x364f('0x2c'),[_0x364f('0x3c')])))[_0x364f('0x3d')]();}function insertCmHopperBlack(_0x29ad29,_0x26aad2,_0x13f528,_0x58b7b7){var _0x1cdee2=['cm_contacts.phone',_0x364f('0x24'),_0x364f('0x25'),_0x26aad2+'.'+_0x58b7b7,'cm_contacts.createdAt',_0x364f('0x27')];return squel[_0x364f('0x2a')]()[_0x364f('0x2b')](_0x364f('0x3e'))[_0x364f('0x2d')]([_0x364f('0x10'),_0x364f('0x2e'),'ListId',_0x58b7b7,_0x364f('0x30'),_0x364f('0x31')],squel['select']()[_0x364f('0x35')](_0x1cdee2)[_0x364f('0x36')](_0x26aad2)['join'](_0x364f('0x37'),null,_0x364f('0x38')+_0x26aad2+_0x364f('0x39'))[_0x364f('0x14')](_0x13f528,null,_0x13f528+'.id\x20=\x20'+_0x26aad2+'.'+_0x58b7b7)[_0x364f('0x13')](_0x26aad2+_0x364f('0x3f'),_0x29ad29)[_0x364f('0x13')](_0x364f('0x3a'),NOW)['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x364f('0xf')]()[_0x364f('0x40')](_0x364f('0x10'))[_0x364f('0x36')](_0x364f('0x3e'))[_0x364f('0x13')](_0x364f('0x41'),_0x29ad29)['where'](_0x58b7b7+_0x364f('0x12')+_0x26aad2+'.'+_0x58b7b7)))[_0x364f('0x3d')]();}function insertTzCmHopper(_0x27cd17,_0x30ee35,_0x2ff330,_0x57de71,_0x429281,_0x19e384){var _0x24ba83=[_0x364f('0x22'),_0x364f('0x42')+_0x19e384+_0x364f('0x43'),_0x364f('0x24'),_0x364f('0x25'),_0x30ee35+'.'+_0x57de71,'cm_contacts.createdAt',_0x364f('0x27'),_0x364f('0x28'),_0x364f('0x29'),'\x22'+_0x429281+'\x22'];var _0x4154fc=squel['insert']()[_0x364f('0x2b')]('cm_hopper')[_0x364f('0x2d')]([_0x364f('0x10'),_0x364f('0x44'),'ContactId',_0x364f('0x2f'),_0x57de71,_0x364f('0x30'),_0x364f('0x31'),'priority',_0x364f('0x33'),_0x364f('0x34')],squel[_0x364f('0xf')]()[_0x364f('0x35')](_0x24ba83)[_0x364f('0x36')](_0x30ee35)[_0x364f('0x14')](_0x364f('0x37'),null,'cm_contacts.ListId\x20=\x20'+_0x30ee35+_0x364f('0x39'))[_0x364f('0x14')](_0x2ff330,null,_0x2ff330+'.id\x20=\x20'+_0x30ee35+'.'+_0x57de71)[_0x364f('0x14')](_0x19e384,null,_0x19e384+'.id\x20=\x20'+_0x30ee35+'.'+_0x57de71)[_0x364f('0x13')](_0x30ee35+'.CmListId\x20=\x20?',_0x27cd17)[_0x364f('0x13')](_0x364f('0x3a'),NOW)[_0x364f('0x13')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x30ee35,_0x2ff330,_0x57de71,_0x364f('0x2c'),['\x22always\x22',_0x364f('0x45')]))['where'](_0x364f('0x3b'),selectNotIn(_0x30ee35,_0x2ff330,_0x57de71,_0x364f('0x2c'),[_0x364f('0x3c')])))[_0x364f('0x3d')]();return _0x4154fc;}function insertTzCmHopperBlack(_0x6139d,_0x5aca2f,_0x2d35d0,_0xaf0dbd){var _0x4628ac=['cm_contacts.phone',_0x364f('0x24'),_0x364f('0x25'),_0x5aca2f+'.'+_0xaf0dbd,'cm_contacts.createdAt',_0x364f('0x27')];return squel[_0x364f('0x2a')]()['into']('cm_hopper_black')[_0x364f('0x2d')](['phone','ContactId','ListId',_0xaf0dbd,_0x364f('0x30'),_0x364f('0x31')],squel['select']()[_0x364f('0x35')](_0x4628ac)[_0x364f('0x36')](_0x5aca2f)['join'](_0x364f('0x37'),null,'cm_contacts.ListId\x20=\x20'+_0x5aca2f+'.CmListId')[_0x364f('0x14')](_0x2d35d0,null,_0x2d35d0+_0x364f('0x11')+_0x5aca2f+'.'+_0xaf0dbd)[_0x364f('0x13')](_0x5aca2f+'.CmListId\x20=\x20?',_0x6139d)['where'](_0x364f('0x3a'),NOW)[_0x364f('0x13')](_0x364f('0x3b'),squel[_0x364f('0xf')]()[_0x364f('0x40')](_0x364f('0x10'))[_0x364f('0x36')](_0x364f('0x3e'))[_0x364f('0x13')](_0x364f('0x41'),_0x6139d)[_0x364f('0x13')](_0xaf0dbd+'\x20=\x20'+_0x5aca2f+'.'+_0xaf0dbd)))[_0x364f('0x3d')]();}function insertCmHopperAdditionalPhones(_0x56428a){var _0x581190=[_0x364f('0x46'),_0x364f('0x47'),'cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt',_0x364f('0x48')];return squel['insert']()['into'](_0x364f('0x49'))[_0x364f('0x2d')]([_0x364f('0x4a'),_0x364f('0x10'),_0x364f('0x4b'),_0x364f('0x30'),'updatedAt'],squel['select']()['fields'](_0x581190)[_0x364f('0x36')](_0x364f('0x2c'))[_0x364f('0x14')](_0x364f('0x37'),null,_0x364f('0x4c'))[_0x364f('0x14')](_0x364f('0x4d'),null,_0x364f('0x4e'))['where'](_0x364f('0x4f'),_0x56428a)[_0x364f('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW))[_0x364f('0x3d')]();}function insertCmContact(_0x2619f0,_0x335f00,_0xa00ca3,_0x1cf3c4){var _0x9599b2=_[_0x364f('0x50')](_['keys'](_0x1cf3c4),['ListId',_0x364f('0x51'),_0x364f('0x30'),_0x364f('0x31'),_0x364f('0x52')]);return squel[_0x364f('0x2a')]()[_0x364f('0x2b')](_0x364f('0x37'))[_0x364f('0x2d')](_0x9599b2,squel[_0x364f('0xf')]()[_0x364f('0x35')](_0x9599b2)['from'](_0x335f00)[_0x364f('0x13')]('('+_0xa00ca3['join'](',')+_0x364f('0x53'),squel[_0x364f('0xf')]()['fields'](_0xa00ca3)[_0x364f('0x36')]('cm_contacts')[_0x364f('0x13')](_0x364f('0x41'),_0x2619f0)[_0x364f('0x13')]('deletedAt\x20IS\x20NULL'))[_0x364f('0x13')](_0x364f('0x54'),squel[_0x364f('0xf')]()['field'](_0x364f('0x55'),_0x364f('0x56'))['from'](_0x335f00)[_0x364f('0x57')](_0xa00ca3[_0x364f('0x14')](','))))[_0x364f('0x3d')]();}function handleStop(){logger[_0x364f('0x58')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x563d14){logger['error'](_0x563d14[_0x364f('0x59')]);process[_0x364f('0x5a')](0x1);}function handleError(_0x555dd1,_0xfd0c2a){stats[_0x364f('0x5b')][_0x364f('0x17')]({'name':_0xfd0c2a[_0x364f('0x5c')],'message':_0xfd0c2a[_0x364f('0x59')],'row':_0x555dd1});}function handleQuery(_0x1b12e1){logger['info'](_0x1b12e1);return db[_0x364f('0x5d')]['query'](_0x1b12e1)[_0x364f('0x5e')](function(_0x2f6091){results[_0x364f('0x17')](_0x2f6091);})[_0x364f('0x5f')](function(_0x3baf05){logger[_0x364f('0x60')](_0x3baf05['message']);});}function updateTzCampaigns(_0x4d0baa){return new Promise(function(_0x2f9062,_0x1b8db3){var _0x106ee6=squel[_0x364f('0xf')]()[_0x364f('0x35')](['campaigns.id','campaigns.dialTimezone'])[_0x364f('0x36')]('campaigns')[_0x364f('0x14')](_0x364f('0x61'),null,_0x364f('0x62'))['where'](_0x364f('0x63')+_0x4d0baa);db[_0x364f('0x5d')]['query'](_0x106ee6[_0x364f('0x3d')]())[_0x364f('0x5e')](function(_0x37164f){var _0x582d3c=[];for(var _0x43e03a=0x0;_0x43e03a<_0x37164f[_0x364f('0x16')];_0x43e03a++){_0x582d3c[_0x364f('0x17')](getTimezoneData(_0x37164f[_0x43e03a],tmp_campaigns));}BPromise['all'](_0x582d3c)[_0x364f('0x19')](function(){_0x2f9062({'val':0x1});});})[_0x364f('0x5f')](function(_0x35dfd4){logger[_0x364f('0x60')](_0x35dfd4[_0x364f('0x59')]);_0x2f9062({'val':0x0});});});}function updateTzVoiceQueues(_0x59aabb){return new Promise(function(_0xc0b607,_0x2d390e){var _0x551b3f=squel['select']()['fields']([_0x364f('0x64'),'voice_queues.dialTimezone'])[_0x364f('0x36')]('voice_queues')[_0x364f('0x14')](_0x364f('0x65'),null,_0x364f('0x66'))[_0x364f('0x13')](_0x364f('0x67')+_0x59aabb);db[_0x364f('0x5d')][_0x364f('0x68')](_0x551b3f[_0x364f('0x3d')]())['spread'](function(_0x5dcf2d){var _0x4a1103=[];for(var _0x59c110=0x0;_0x59c110<_0x5dcf2d[_0x364f('0x16')];_0x59c110++){_0x4a1103[_0x364f('0x17')](getTimezoneData(_0x5dcf2d[_0x59c110],tmp_voice_queues));}BPromise['all'](_0x4a1103)['then'](function(){_0xc0b607({'val':0x1});});})[_0x364f('0x5f')](function(_0x29b0f0){logger[_0x364f('0x60')](_0x29b0f0['message']);_0xc0b607({'val':0x0});});});}function getTimezoneData(_0x2d5727,_0x26c7a4){return new Promise(function(_0x3d108a,_0x351f18){var _0x5a1151=shared[_0x364f('0x69')];var _0x74bdbb=_0x5a1151[_0x2d5727[_0x364f('0x6a')]];if(_[_0x364f('0x6b')](_0x74bdbb)){_0x3d108a({'ret':0x1});}else{var _0x4f54cb=_0x74bdbb[_0x364f('0x6c')];var _0x2611dc=squel[_0x364f('0x2a')]()['into'](_0x26c7a4)[_0x364f('0x6d')]('id',_0x2d5727['id'])[_0x364f('0x6d')](_0x364f('0x6e'),_0x4f54cb)['set'](_0x364f('0x6a'),_0x2d5727[_0x364f('0x6a')])['toString']();return db['sequelize']['query'](_0x2611dc)[_0x364f('0x5e')](function(_0x390fe8){_0x3d108a({'ret':0x1});})['catch'](function(_0x235d60){logger[_0x364f('0x60')](_0x235d60[_0x364f('0x59')]);_0x351f18({'ret':0x1});});}});}function handleTZQuery(_0x4e1e47){logger[_0x364f('0x58')](_0x4e1e47);return db[_0x364f('0x5d')][_0x364f('0x68')](_0x4e1e47)['spread'](function(_0x4d3528){})['catch'](function(_0x2f8c00){logger[_0x364f('0x60')](_0x2f8c00[_0x364f('0x59')]);});}function main(_0x3b05ac,_0x4b5411,_0x50b96b,_0x4388eb){logger[_0x364f('0x58')]('main',_0x3b05ac,JSON[_0x364f('0x6f')](_0x4b5411));process['send'](_0x364f('0x70'));var _0x5ddd4b=_0x4b5411[_0x364f('0x71')];var _0x83b458=_[_0x364f('0x72')](_0x5ddd4b);var _0x5db48d=_0x4b5411[_0x364f('0x73')];var _0x2fc90e=path[_0x364f('0x14')](config[_0x364f('0x74')],'server/files/tmp',_0x5db48d+_0x364f('0x75'));hasTZ=_[_0x364f('0x76')](_0x5ddd4b)[_0x364f('0x77')](_0x364f('0x6a'));var _0x372287=_['keys'](_0x5ddd4b)[_0x364f('0x14')]();logger['info'](_0x364f('0x78'),_0x372287);db[_0x364f('0x79')][_0x364f('0x7a')]({'raw':!![],'attributes':['id',_0x364f('0x7b')]})[_0x364f('0x19')](function(_0x53989b){for(var _0x4e41ab=0x0;_0x4e41ab<_0x53989b[_0x364f('0x16')];_0x4e41ab++){if(_0x53989b[_0x4e41ab][_0x364f('0x7b')]in _0x5ddd4b){contactItemTypes[_0x364f('0x17')](_0x53989b[_0x4e41ab]);delete _0x83b458[_0x53989b[_0x4e41ab]['name']];hasAdditionalPhones=!![];}for(var _0x36bb48 in _0x5ddd4b){if(_0x53989b[_0x4e41ab][_0x364f('0x7b')]+_0x364f('0x7c')===_0x36bb48){phoneDescriptions[_0x364f('0x17')]({'itemTypeId':_0x53989b[_0x4e41ab]['id'],'description':_0x36bb48});delete _0x83b458[_0x36bb48];}}}if(hasAdditionalPhones)_0x83b458[_0x364f('0x1a')]='';var _0x222dcd=_['keys'](_0x83b458)[_0x364f('0x14')]();logger['info'](_0x364f('0x78'),_0x222dcd);fs[_0x364f('0x7d')](_0x2fc90e,_0x222dcd+'\x0a');Papa[_0x364f('0x7e')](fs[_0x364f('0x7f')](_0x3b05ac),{'header':!![],'skipEmptyLines':!![],'step':function(_0x27463c,_0x30f1a8){try{for(var _0x77b350=0x0,_0x11632a=[];_0x77b350<_0x27463c[_0x364f('0x80')]['length'];_0x77b350++){stats[_0x364f('0x81')]+=0x1;if(_0x27463c[_0x364f('0x5b')][_0x77b350]){handleError(_0x27463c['data'][_0x77b350],_0x27463c[_0x364f('0x5b')][_0x77b350]);}else{var _0x582d86=[];var _0x1318ff=[];var _0x4a2f2e={};for(var _0x3ab7db in _0x5ddd4b){let _0xc592f3=contactItemTypes['find'](_0x1e5ae1=>_0x1e5ae1[_0x364f('0x7b')]===_0x3ab7db);let _0x6ad45a=contactItemTypes[_0x364f('0x82')](_0x200c1f=>_0x200c1f['name']+_0x364f('0x7c')===_0x3ab7db);if(_[_0x364f('0x6b')](_0xc592f3)&&_[_0x364f('0x6b')](_0x6ad45a)){if(_0x5ddd4b[_0x364f('0x83')](_0x3ab7db)){if(_0x27463c[_0x364f('0x80')][_0x77b350][_0x5ddd4b[_0x3ab7db]]){var _0x1d2158=_[_0x364f('0x84')](_0x27463c[_0x364f('0x80')][_0x77b350][_0x5ddd4b[_0x3ab7db]][_0x364f('0x85')](/"/g,'\x27'));switch(_0x3ab7db){case _0x364f('0x44'):var _0x26ba5e=moment(_0x1d2158,_0x364f('0xd'),!![]);if(_0x26ba5e[_0x364f('0x86')]()){_0x11632a[_0x364f('0x17')]('\x22'+_0x1d2158+'\x22');}else{_0x582d86[_0x364f('0x17')](_0x364f('0x87'));}break;case _0x364f('0x32'):var _0x12e85e=parseInt(_0x1d2158);_0x1d2158=_[_0x364f('0x88')](_0x12e85e)||_0x12e85e<0x0||_0x12e85e>0x4?_0x4388eb?0x3:0x2:_0x12e85e;_0x11632a[_0x364f('0x17')]('\x22'+_0x1d2158+'\x22');break;case _0x364f('0x33'):var _0x53b0e2=parseInt(_0x1d2158);if(_[_0x364f('0x89')](_0x53b0e2)&&_[_0x364f('0x77')](_0x50b96b,_0x53b0e2)){_0x11632a[_0x364f('0x17')]('\x22'+_0x53b0e2+'\x22');}else{_0x582d86[_0x364f('0x17')](_0x364f('0x8a'));}break;case _0x364f('0x8b'):if(isEmail(_0x1d2158)){_0x11632a[_0x364f('0x17')]('\x22'+_0x1d2158+'\x22');}else{_0x582d86[_0x364f('0x17')](_0x364f('0x8c'));}break;case _0x364f('0x8d'):var _0x53730f=moment(_0x1d2158,_0x364f('0x8e'),!![]);if(_0x53730f[_0x364f('0x86')]()){_0x11632a[_0x364f('0x17')]('\x22'+_0x1d2158+'\x22');}else{_0x582d86[_0x364f('0x17')](_0x364f('0x8f'));}break;case'dialTimezone':var _0x21c924=shared[_0x364f('0x69')];var _0x44e347=_0x21c924[_0x1d2158];if(!_[_0x364f('0x6b')](_0x44e347)){var _0xb3f937=_0x44e347['utcOffset'];_0x11632a[_0x364f('0x17')]('\x22'+_0x1d2158+'\x22');_0x11632a[_0x364f('0x17')]('\x22'+_0xb3f937+'\x22');}break;default:_0x11632a[_0x364f('0x17')]('\x22'+_0x1d2158+'\x22');}}else{switch(_0x3ab7db){case _0x364f('0x90'):case'phone':_0x582d86[_0x364f('0x17')](_0x3ab7db+'\x20not\x20specified');break;default:_0x11632a[_0x364f('0x17')]('\x22\x22');}}}}else{var _0x92204d='';if(!_[_0x364f('0x6b')](_0xc592f3)){if(!_0x4a2f2e['hasOwnProperty'](_0xc592f3['id'])){if(!_[_0x364f('0x6b')](_0x27463c['data'][_0x77b350][_0x5ddd4b[_0x3ab7db]])){var _0x1d2158=_['trim'](_0x27463c[_0x364f('0x80')][_0x77b350][_0x5ddd4b[_0x3ab7db]][_0x364f('0x85')](/"/g,'\x27'));var _0x5aebd8=phoneDescriptions[_0x364f('0x82')](_0x2386e6=>_0x2386e6[_0x364f('0x91')]===_0xc592f3['id']);if(!_[_0x364f('0x6b')](_0x5aebd8)){var _0x11c715=_[_0x364f('0x84')](_0x27463c['data'][_0x77b350][_0x5ddd4b[_0x5aebd8[_0x364f('0x92')]]][_0x364f('0x85')](/"/g,'\x27'));if(!_[_0x364f('0x6b')](_0x11c715))_0x1d2158=_0x1d2158+'§'+_0x11c715;}if(_0x92204d=='')_0x92204d=_0x1d2158;else _0x92204d+='|'+_0x1d2158;}_0x1318ff['push'](_0xc592f3['id']+':'+_0x92204d);_0x4a2f2e[_0xc592f3['id']]=0x1;}}}}if(hasAdditionalPhones){_0x11632a[_0x364f('0x17')]('\x22'+_0x1318ff['join'](';')+'\x22');}if(_0x582d86[_0x364f('0x16')]){handleError(_0x27463c[_0x364f('0x80')][_0x77b350],{'code':_0x364f('0x93'),'message':_0x582d86[_0x364f('0x14')]()});}else{fs[_0x364f('0x94')](_0x2fc90e,_0x11632a[_0x364f('0x14')]()+'\x0a');}_0x11632a=[];}if(!(stats[_0x364f('0x81')]%0xc8)){socket[_0x364f('0x95')]('contact:import:'+_0x5db48d,stats);stats[_0x364f('0x5b')]=[];}}if(stopped){logger[_0x364f('0x58')]('Abort\x20parser');_0x30f1a8[_0x364f('0x96')]();}}catch(_0x1f674e){handleError(_0x27463c[_0x364f('0x80')][_0x77b350],{'code':_0x364f('0x97'),'message':_0x1f674e[_0x364f('0x59')]});logger[_0x364f('0x60')](_0x364f('0x98'),_0x1f674e[_0x364f('0x59')]);}},'complete':function(){try{var _0x1561e8=[];var _0x59b67b=[];var _0x30dfcd='cm_contacts';if(_0x4b5411[_0x364f('0x99')]&&_0x4b5411[_0x364f('0x99')]['length']){_0x30dfcd=_0x364f('0x9a')+_0x5db48d;_0x1561e8[_0x364f('0x17')]('CREATE\x20TABLE\x20'+_0x30dfcd+_0x364f('0x9b'));}tmp_campaigns=_0x364f('0x9c')+_0x5db48d;tmp_voice_queues=_0x364f('0x9d')+_0x5db48d;_0x59b67b[_0x364f('0x17')](_0x364f('0x9e')+tmp_campaigns+_0x364f('0x9f'));_0x59b67b['push'](_0x364f('0x9e')+tmp_voice_queues+_0x364f('0x9f'));BPromise['each'](_0x59b67b,handleTZQuery)[_0x364f('0x19')](function(_0x186944){updateTzCampaigns(_0x4b5411[_0x364f('0x2f')])[_0x364f('0x19')](function(_0x568d60){updateTzVoiceQueues(_0x4b5411[_0x364f('0x2f')])[_0x364f('0x19')](function(_0x3cea3b){if(hasTZ)_0x222dcd=_0x222dcd[_0x364f('0x85')](_0x364f('0x6a'),_0x364f('0xa0'));var _0x4b0a7b=util['format'](_0x364f('0xa1'),_0x2fc90e,_0x30dfcd,_0x222dcd,_0x4b5411[_0x364f('0x2f')],_0x4b5411[_0x364f('0x51')]||null,NOW,NOW);if(_[_0x364f('0x6b')](_0x5ddd4b[_0x364f('0x44')])){_0x4b0a7b+=',\x20scheduledAt\x20=\x20NOW()';}_0x1561e8[_0x364f('0x17')](_0x4b0a7b);if(_0x4b5411[_0x364f('0x99')]&&_0x4b5411['duplicates'][_0x364f('0x16')]){_0x1561e8[_0x364f('0x17')](insertCmContact(_0x4b5411['ListId'],_0x30dfcd,_0x4b5411['duplicates'],_0x5ddd4b));_0x1561e8[_0x364f('0x17')]('DROP\x20TABLE\x20'+_0x30dfcd+';');}BPromise[_0x364f('0xa2')](_0x1561e8,handleQuery)[_0x364f('0x19')](function(_0x5c6d43){BPromise['all']([handleAdditionalPhones()])[_0x364f('0x19')](function(){_0x1561e8=[];for(var _0x46dfd8=0x0;_0x46dfd8<promisesAdditionalPhones[_0x364f('0x16')];_0x46dfd8++){if(promisesAdditionalPhones[_0x46dfd8][_0x364f('0x10')]!='§'){_0x1561e8[_0x364f('0x17')](createAdditionalPhone(promisesAdditionalPhones[_0x46dfd8][_0x364f('0xa3')],promisesAdditionalPhones[_0x46dfd8][_0x364f('0xa4')],promisesAdditionalPhones[_0x46dfd8][_0x364f('0x10')],promisesAdditionalPhones[_0x46dfd8][_0x364f('0xa5')]));}}BPromise[_0x364f('0x18')](_0x1561e8)[_0x364f('0x19')](function(){_0x1561e8=[];if(hasTZ){_0x1561e8[_0x364f('0x17')](insertTzCmHopper(_0x4b5411[_0x364f('0x2f')],'voice_queues_has_cm_lists','voice_queues',_0x364f('0xa6'),_0x4388eb,tmp_voice_queues));_0x1561e8[_0x364f('0x17')](insertTzCmHopperBlack(_0x4b5411[_0x364f('0x2f')],_0x364f('0xa7'),_0x364f('0xa8'),_0x364f('0xa6')));_0x1561e8[_0x364f('0x17')](insertTzCmHopper(_0x4b5411['ListId'],_0x364f('0x61'),_0x364f('0xa9'),_0x364f('0xaa'),_0x4388eb,tmp_campaigns));_0x1561e8[_0x364f('0x17')](insertTzCmHopperBlack(_0x4b5411[_0x364f('0x2f')],'campaigns_has_cm_blacklists',_0x364f('0xa9'),_0x364f('0xaa')));_0x1561e8[_0x364f('0x17')](insertCmHopperAdditionalPhones(_0x4b5411['ListId']));}else{_0x1561e8[_0x364f('0x17')](insertCmHopper(_0x4b5411[_0x364f('0x2f')],_0x364f('0x65'),'voice_queues','VoiceQueueId',_0x4388eb));_0x1561e8[_0x364f('0x17')](insertCmHopperBlack(_0x4b5411[_0x364f('0x2f')],'voice_queues_has_cm_blacklists','voice_queues',_0x364f('0xa6')));_0x1561e8['push'](insertCmHopper(_0x4b5411[_0x364f('0x2f')],_0x364f('0x61'),_0x364f('0xa9'),_0x364f('0xaa'),_0x4388eb));_0x1561e8['push'](insertCmHopperBlack(_0x4b5411[_0x364f('0x2f')],_0x364f('0xab'),_0x364f('0xa9'),_0x364f('0xaa')));_0x1561e8[_0x364f('0x17')](insertCmHopperAdditionalPhones(_0x4b5411[_0x364f('0x2f')]));}_0x1561e8[_0x364f('0x17')](_0x364f('0xac')+tmp_campaigns+';');_0x1561e8['push'](_0x364f('0xac')+tmp_voice_queues+';');BPromise[_0x364f('0xa2')](_0x1561e8,handleQuery)[_0x364f('0x19')](function(_0x2e4791){stats['finish']=!![];stats['affectedRows']=_0x4b5411['duplicates']&&_0x4b5411[_0x364f('0x99')][_0x364f('0x16')]?results[0x2]['affectedRows']:results[0x0][_0x364f('0xad')];socket['emit']('contact:import:'+_0x5db48d,stats);fs[_0x364f('0xae')](_0x3b05ac);fs[_0x364f('0xae')](_0x2fc90e);process[_0x364f('0x5a')](0x0);})[_0x364f('0x5f')](function(_0x5d9a6f){logger['error'](_0x5d9a6f['message']);process[_0x364f('0x5a')](0x1);});});});})[_0x364f('0x5f')](function(_0x508ec3){logger[_0x364f('0x60')](_0x508ec3['message']);process[_0x364f('0x5a')](0x1);});});});});}catch(_0x2dc7ed){logger['error'](_0x364f('0xaf'),_0x2dc7ed[_0x364f('0x59')]);process['exit'](0x1);}},'error':function(_0x2c53df,_0x47b291,_0x291d56,_0x306811){throw new Error(_0x306811);}});});}function validate(){if(process[_0x364f('0xb0')]&&process['argv']['length']<0x4){throw new Error(_0x364f('0xb1'));}var _0x40f1d3=path[_0x364f('0x14')](config[_0x364f('0x74')],_0x364f('0xb2'),process[_0x364f('0xb0')][0x2]);if(!fs[_0x364f('0xb3')](_0x40f1d3)){throw new Error(_0x364f('0xb4'));}var _0x28eafe={};try{_0x28eafe=JSON[_0x364f('0x7e')](process[_0x364f('0xb0')][0x3]);if(!_0x28eafe[_0x364f('0x71')]){throw new Error(_0x364f('0xb5'));}if(!_0x28eafe[_0x364f('0x71')]['phone']){throw new Error(_0x364f('0xb6'));}if(!_0x28eafe[_0x364f('0x71')]['firstName']){throw new Error('firstName\x20is\x20mandatory');}var _0x31251c=0x0;if(_0x28eafe[_0x364f('0x71')][_0x364f('0x33')]){_0x31251c=0x1;}if(!_0x28eafe[_0x364f('0x2f')]){throw new Error(_0x364f('0xb7'));}}catch(_0x1a1c80){throw new Error(_0x364f('0xb8'));}var _0x14331d=[];try{_0x14331d=_[_0x364f('0xb9')](JSON[_0x364f('0x7e')](process[_0x364f('0xb0')][0x4]),'id');}catch(_0x5d6d3c){logger[_0x364f('0x58')](_0x364f('0xba'));}main(_0x40f1d3,_0x28eafe,_0x14331d,_0x31251c);}validate();process['on'](_0x364f('0xbb'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
+var _0x11ee=['CompanyId','scheduledAt','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','group','info','error','message','code','sequelize','query','spread','catch','campaigns','campaigns_has_cm_lists','campaigns_has_cm_lists.CmListId=','voice_queues.id','voice_queues.dialTimezone','voice_queues','voice_queues_has_cm_lists','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','voice_queues_has_cm_lists.CmListId=','timezones','dialTimezone','utcOffset','set','main','start','binding','socket_timestamp','root','server/files/tmp','.csv','header','ContactItemType','name','_description','writeFileSync','parse','data','errors','trim','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','UserId','isNumber','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','hasOwnProperty','find','itemTypeId','description','replace','appendFileSync','rows','emit','contact:import:','Abort\x20parser','abort','SystemError','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','campaigns_','voice_queues_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','each','dialTimezone,utcOffset','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','contactTypeId','VoiceQueueId','voice_queues_has_cm_blacklists','CampaignId','campaigns_has_cm_blacklists','finish','affectedRows','unlink','exit','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','lodash','papaparse','util','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/environment/shared','../../../config/logger','import','socket.io-emitter','redis','format','YYYY-MM-DD\x20HH:mm:ss','select','field','phone','from','.id\x20=\x20','\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','findAll','AdditionalPhones','then','length','push','all','split','isNil','filter','CmContactHasItem','findOne','update','updated','create','PHONE','inserted','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','ContactId','ListId','createdAt','updatedAt','recallme','fields','join','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','cm_hopper_black','ListId\x20=\x20?','toString','cm_contacts.phone','scheduledat','.CmListId','cm_contact_has_items.item','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','CmHopperId','OrderBy','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','keys'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x11ee,0x65));var _0xe11e=function(_0x51042f,_0x2377bb){_0x51042f=_0x51042f-0x0;var _0x39308a=_0x11ee[_0x51042f];return _0x39308a;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0xe11e('0x0'));var Papa=require(_0xe11e('0x1'));var util=require(_0xe11e('0x2'));var BPromise=require(_0xe11e('0x3'));var moment=require(_0xe11e('0x4'));var squel=require(_0xe11e('0x5'));var Redis=require(_0xe11e('0x6'));var db=require(_0xe11e('0x7'))['db'];var config=require(_0xe11e('0x8'));var shared=require(_0xe11e('0x9'));var logger=require(_0xe11e('0xa'))(_0xe11e('0xb'));config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xe11e('0xc'))(new Redis(config[_0xe11e('0xd')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0xe11e('0xe')](_0xe11e('0xf'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()['format'](_0xe11e('0xf'));function isEmail(_0x23cb53){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/['test'](_0x23cb53);}function selectNotIn(_0x1c6b8f,_0x57dbb2,_0x3eba33,_0x290a4f,_0x358f0e){return squel[_0xe11e('0x10')]()[_0xe11e('0x11')](_0xe11e('0x12'))[_0xe11e('0x13')](_0x290a4f)['join'](_0x57dbb2,null,_0x57dbb2+_0xe11e('0x14')+_0x290a4f+'.'+_0x3eba33)['where'](_0x290a4f+'.'+_0x3eba33+_0xe11e('0x15')+_0x1c6b8f+'.'+_0x3eba33)[_0xe11e('0x16')](_0x57dbb2+_0xe11e('0x17')+_0x358f0e['join']()+')');}function handleAdditionalPhones(){return new Promise(function(_0x202c8f,_0x20cf45){promisesAdditionalPhones=[];return db['CmContact'][_0xe11e('0x18')]({'raw':!![],'attributes':['id',_0xe11e('0x19')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0xe11e('0x1a')](function(_0x27609a){if(_0x27609a!==null){var _0x1c99e0=[];for(var _0x2d7073=0x0;_0x2d7073<_0x27609a[_0xe11e('0x1b')];_0x2d7073++){var _0x1968f7=_0x27609a[_0x2d7073];_0x1c99e0[_0xe11e('0x1c')](insertAdditionalPhones(_0x1968f7));}}Promise[_0xe11e('0x1d')](_0x1c99e0)[_0xe11e('0x1a')](function(){_0x202c8f({'val':0x1});});});});}function insertAdditionalPhones(_0x584394){return new Promise(function(_0x5055f1,_0x32addb){var _0x249e71=_0x584394[_0xe11e('0x19')];var _0x5ad76c=_0x249e71[_0xe11e('0x1e')](';');var _0xb60111=[];orderBy=0x0;for(var _0x335d99=0x0;_0x335d99<_0x5ad76c['length'];_0x335d99++){_0xb60111[_0xe11e('0x1c')](splitAdditionalPhone(_0x584394['id'],_0x5ad76c[_0x335d99]));}Promise[_0xe11e('0x1d')](_0xb60111)[_0xe11e('0x1a')](function(){_0x5055f1({'val':_0x5ad76c[_0xe11e('0x1b')]});});});}function splitAdditionalPhone(_0x185167,_0x2a5951){return new Promise(function(_0xbc4d9a,_0x30fc25){var _0x139228=_0x2a5951[_0xe11e('0x1e')](':');var _0x5c81b7=_0x139228[0x0];var _0x2c037a=_0x139228[0x1];if(!_[_0xe11e('0x1f')](_0x2c037a)){var _0xf613f6=_0x2c037a[_0xe11e('0x1e')]('|');var _0x3b53ca=[];for(var _0x59f7a0=0x0;_0x59f7a0<_0xf613f6[_0xe11e('0x1b')];_0x59f7a0++){if(_0xf613f6[_0x59f7a0]!==''){var _0x2594bc=_[_0xe11e('0x20')](promisesAdditionalPhones,{'contactId':_0x185167,'phone':_0xf613f6[_0x59f7a0]});if(_0x2594bc[_0xe11e('0x1b')]==0x0){orderBy++;promisesAdditionalPhones[_0xe11e('0x1c')]({'contactId':_0x185167,'contactTypeId':_0x5c81b7,'phone':_0xf613f6[_0x59f7a0],'orderBy':orderBy});}}}_0xbc4d9a({'ok':0x1});}else _0xbc4d9a({'res':0x0});});}function createAdditionalPhone(_0x3a1d12,_0x912428,_0x2d75c0,_0x150180){var _0x5dac16='';var _0x437850='';var _0x2262eb=_0x2d75c0[_0xe11e('0x1e')]('§');_0x5dac16=_0x2262eb[0x0];if(_0x2262eb[_0xe11e('0x1b')]==0x2)_0x437850=_0x2262eb[0x1];return new Promise(function(_0x5ae8f4,_0x3ff312){return db[_0xe11e('0x21')][_0xe11e('0x22')]({'where':{'CmContactId':_0x3a1d12,'item':_0x5dac16}})['then'](function(_0x223874){if(_0x223874){return db[_0xe11e('0x21')][_0xe11e('0x23')]({'ItemTypeId':_0x912428,'description':_0x437850,'OrderBy':_0x150180},{'where':{'CmContactId':_0x3a1d12,'item':_0x5dac16}})[_0xe11e('0x1a')](function(_0x567506){_0x5ae8f4({'res':_0xe11e('0x24')});});}else{return db[_0xe11e('0x21')][_0xe11e('0x25')]({'CmContactId':_0x3a1d12,'item':_0x5dac16,'description':_0x437850,'ItemTypeId':_0x912428,'OrderBy':_0x150180,'ItemClass':_0xe11e('0x26')})[_0xe11e('0x1a')](function(_0x1bc9d2){_0x5ae8f4({'res':_0xe11e('0x27')});});}});});}function insertCmHopper(_0x5758aa,_0x8aee8f,_0x1d70cd,_0x3a5f89,_0x1dd44b){var _0x5d27a7=['cm_contacts.phone',_0xe11e('0x28'),_0xe11e('0x29'),_0xe11e('0x2a'),_0x8aee8f+'.'+_0x3a5f89,_0xe11e('0x2b'),_0xe11e('0x2c'),_0xe11e('0x2d'),_0xe11e('0x2e'),'\x22'+_0x1dd44b+'\x22'];return squel[_0xe11e('0x2f')]()[_0xe11e('0x30')](_0xe11e('0x31'))[_0xe11e('0x32')](['phone','scheduledat',_0xe11e('0x33'),_0xe11e('0x34'),_0x3a5f89,_0xe11e('0x35'),_0xe11e('0x36'),'priority','UserId',_0xe11e('0x37')],squel[_0xe11e('0x10')]()[_0xe11e('0x38')](_0x5d27a7)[_0xe11e('0x13')](_0x8aee8f)[_0xe11e('0x39')](_0xe11e('0x3a'),null,_0xe11e('0x3b')+_0x8aee8f+'.CmListId')[_0xe11e('0x39')](_0x1d70cd,null,_0x1d70cd+_0xe11e('0x14')+_0x8aee8f+'.'+_0x3a5f89)['where'](_0x8aee8f+_0xe11e('0x3c'),_0x5758aa)[_0xe11e('0x16')](_0xe11e('0x3d'),NOW)['where'](_0xe11e('0x3e'),selectNotIn(_0x8aee8f,_0x1d70cd,_0x3a5f89,_0xe11e('0x31'),[_0xe11e('0x3f'),_0xe11e('0x40')]))['where'](_0xe11e('0x3e'),selectNotIn(_0x8aee8f,_0x1d70cd,_0x3a5f89,_0xe11e('0x31'),[_0xe11e('0x3f')])))['toString']();}function insertCmHopperBlack(_0x5864e9,_0x20670a,_0x48e310,_0x2324ac){var _0x609159=['cm_contacts.phone',_0xe11e('0x29'),'cm_contacts.ListId',_0x20670a+'.'+_0x2324ac,_0xe11e('0x2b'),'cm_contacts.updatedAt'];return squel[_0xe11e('0x2f')]()[_0xe11e('0x30')](_0xe11e('0x41'))[_0xe11e('0x32')]([_0xe11e('0x12'),_0xe11e('0x33'),_0xe11e('0x34'),_0x2324ac,_0xe11e('0x35'),_0xe11e('0x36')],squel[_0xe11e('0x10')]()['fields'](_0x609159)[_0xe11e('0x13')](_0x20670a)[_0xe11e('0x39')](_0xe11e('0x3a'),null,_0xe11e('0x3b')+_0x20670a+'.CmListId')['join'](_0x48e310,null,_0x48e310+_0xe11e('0x14')+_0x20670a+'.'+_0x2324ac)['where'](_0x20670a+_0xe11e('0x3c'),_0x5864e9)['where'](_0xe11e('0x3d'),NOW)[_0xe11e('0x16')](_0xe11e('0x3e'),squel[_0xe11e('0x10')]()[_0xe11e('0x11')](_0xe11e('0x12'))[_0xe11e('0x13')](_0xe11e('0x41'))[_0xe11e('0x16')](_0xe11e('0x42'),_0x5864e9)['where'](_0x2324ac+_0xe11e('0x15')+_0x20670a+'.'+_0x2324ac)))[_0xe11e('0x43')]();}function insertTzCmHopper(_0x177457,_0x2d4eba,_0xcc06d6,_0x2f9fd5,_0x27af7c,_0x1ba8d6){var _0x18b865=[_0xe11e('0x44'),'date_add(cm_contacts.scheduledat,interval\x20'+_0x1ba8d6+'.offset-cm_contacts.utcOffset\x20minute)',_0xe11e('0x29'),_0xe11e('0x2a'),_0x2d4eba+'.'+_0x2f9fd5,_0xe11e('0x2b'),_0xe11e('0x2c'),_0xe11e('0x2d'),_0xe11e('0x2e'),'\x22'+_0x27af7c+'\x22'];var _0x1126e1=squel[_0xe11e('0x2f')]()[_0xe11e('0x30')]('cm_hopper')[_0xe11e('0x32')]([_0xe11e('0x12'),_0xe11e('0x45'),'ContactId',_0xe11e('0x34'),_0x2f9fd5,_0xe11e('0x35'),_0xe11e('0x36'),'priority','UserId',_0xe11e('0x37')],squel[_0xe11e('0x10')]()[_0xe11e('0x38')](_0x18b865)[_0xe11e('0x13')](_0x2d4eba)['join'](_0xe11e('0x3a'),null,_0xe11e('0x3b')+_0x2d4eba+_0xe11e('0x46'))[_0xe11e('0x39')](_0xcc06d6,null,_0xcc06d6+_0xe11e('0x14')+_0x2d4eba+'.'+_0x2f9fd5)[_0xe11e('0x39')](_0x1ba8d6,null,_0x1ba8d6+_0xe11e('0x14')+_0x2d4eba+'.'+_0x2f9fd5)[_0xe11e('0x16')](_0x2d4eba+_0xe11e('0x3c'),_0x177457)[_0xe11e('0x16')](_0xe11e('0x3d'),NOW)[_0xe11e('0x16')](_0xe11e('0x3e'),selectNotIn(_0x2d4eba,_0xcc06d6,_0x2f9fd5,'cm_hopper',[_0xe11e('0x3f'),_0xe11e('0x40')]))[_0xe11e('0x16')](_0xe11e('0x3e'),selectNotIn(_0x2d4eba,_0xcc06d6,_0x2f9fd5,_0xe11e('0x31'),['\x22always\x22'])))[_0xe11e('0x43')]();return _0x1126e1;}function insertTzCmHopperBlack(_0x539877,_0x3990cc,_0x1e399b,_0x5ed22e){var _0x5be607=[_0xe11e('0x44'),'cm_contacts.id','cm_contacts.ListId',_0x3990cc+'.'+_0x5ed22e,_0xe11e('0x2b'),_0xe11e('0x2c')];return squel[_0xe11e('0x2f')]()[_0xe11e('0x30')](_0xe11e('0x41'))[_0xe11e('0x32')]([_0xe11e('0x12'),_0xe11e('0x33'),_0xe11e('0x34'),_0x5ed22e,_0xe11e('0x35'),'updatedAt'],squel[_0xe11e('0x10')]()[_0xe11e('0x38')](_0x5be607)[_0xe11e('0x13')](_0x3990cc)[_0xe11e('0x39')]('cm_contacts',null,'cm_contacts.ListId\x20=\x20'+_0x3990cc+_0xe11e('0x46'))[_0xe11e('0x39')](_0x1e399b,null,_0x1e399b+_0xe11e('0x14')+_0x3990cc+'.'+_0x5ed22e)['where'](_0x3990cc+_0xe11e('0x3c'),_0x539877)[_0xe11e('0x16')](_0xe11e('0x3d'),NOW)[_0xe11e('0x16')](_0xe11e('0x3e'),squel['select']()[_0xe11e('0x11')](_0xe11e('0x12'))[_0xe11e('0x13')](_0xe11e('0x41'))[_0xe11e('0x16')](_0xe11e('0x42'),_0x539877)[_0xe11e('0x16')](_0x5ed22e+_0xe11e('0x15')+_0x3990cc+'.'+_0x5ed22e)))[_0xe11e('0x43')]();}function insertCmHopperAdditionalPhones(_0x596623){var _0x5ee4ca=['cm_hopper.id',_0xe11e('0x47'),'cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt',_0xe11e('0x48')];return squel[_0xe11e('0x2f')]()[_0xe11e('0x30')](_0xe11e('0x49'))[_0xe11e('0x32')]([_0xe11e('0x4a'),_0xe11e('0x12'),_0xe11e('0x4b'),'createdAt',_0xe11e('0x36')],squel[_0xe11e('0x10')]()['fields'](_0x5ee4ca)['from'](_0xe11e('0x31'))[_0xe11e('0x39')](_0xe11e('0x3a'),null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')['join'](_0xe11e('0x4c'),null,_0xe11e('0x4d'))[_0xe11e('0x16')](_0xe11e('0x4e'),_0x596623)[_0xe11e('0x16')](_0xe11e('0x3d'),NOW))['toString']();}function insertCmContact(_0x345698,_0x4f7c9a,_0x1a8e74,_0x1b131a){var _0x5d0112=_[_0xe11e('0x4f')](_[_0xe11e('0x50')](_0x1b131a),['ListId',_0xe11e('0x51'),'createdAt',_0xe11e('0x36'),_0xe11e('0x52')]);return squel[_0xe11e('0x2f')]()[_0xe11e('0x30')](_0xe11e('0x3a'))[_0xe11e('0x32')](_0x5d0112,squel[_0xe11e('0x10')]()[_0xe11e('0x38')](_0x5d0112)[_0xe11e('0x13')](_0x4f7c9a)[_0xe11e('0x16')]('('+_0x1a8e74['join'](',')+')\x20NOT\x20IN\x20?',squel[_0xe11e('0x10')]()[_0xe11e('0x38')](_0x1a8e74)[_0xe11e('0x13')](_0xe11e('0x3a'))[_0xe11e('0x16')](_0xe11e('0x42'),_0x345698)[_0xe11e('0x16')](_0xe11e('0x53')))['where'](_0xe11e('0x54'),squel['select']()[_0xe11e('0x11')](_0xe11e('0x55'),_0xe11e('0x56'))[_0xe11e('0x13')](_0x4f7c9a)[_0xe11e('0x57')](_0x1a8e74['join'](','))))[_0xe11e('0x43')]();}function handleStop(){logger[_0xe11e('0x58')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x142cf5){logger[_0xe11e('0x59')](_0x142cf5[_0xe11e('0x5a')]);process['exit'](0x1);}function handleError(_0x431402,_0x2e5bab){stats['errors'][_0xe11e('0x1c')]({'name':_0x2e5bab[_0xe11e('0x5b')],'message':_0x2e5bab[_0xe11e('0x5a')],'row':_0x431402});}function handleQuery(_0x2473d0){logger[_0xe11e('0x58')](_0x2473d0);return db[_0xe11e('0x5c')][_0xe11e('0x5d')](_0x2473d0)[_0xe11e('0x5e')](function(_0x140859){results[_0xe11e('0x1c')](_0x140859);})[_0xe11e('0x5f')](function(_0x444142){logger[_0xe11e('0x59')](_0x444142['message']);});}function updateTzCampaigns(_0x54642a){return new Promise(function(_0x3340e2,_0x284df8){var _0x2e62fc=squel[_0xe11e('0x10')]()[_0xe11e('0x38')](['campaigns.id','campaigns.dialTimezone'])[_0xe11e('0x13')](_0xe11e('0x60'))[_0xe11e('0x39')](_0xe11e('0x61'),null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')[_0xe11e('0x16')](_0xe11e('0x62')+_0x54642a);db[_0xe11e('0x5c')][_0xe11e('0x5d')](_0x2e62fc[_0xe11e('0x43')]())['spread'](function(_0x526f54){var _0x46983d=[];for(var _0x3cda79=0x0;_0x3cda79<_0x526f54[_0xe11e('0x1b')];_0x3cda79++){_0x46983d[_0xe11e('0x1c')](getTimezoneData(_0x526f54[_0x3cda79],tmp_campaigns));}BPromise[_0xe11e('0x1d')](_0x46983d)[_0xe11e('0x1a')](function(){_0x3340e2({'val':0x1});});})[_0xe11e('0x5f')](function(_0x2db070){logger[_0xe11e('0x59')](_0x2db070[_0xe11e('0x5a')]);_0x3340e2({'val':0x0});});});}function updateTzVoiceQueues(_0x900598){return new Promise(function(_0x1be46f,_0x53580d){var _0x47d8c0=squel['select']()['fields']([_0xe11e('0x63'),_0xe11e('0x64')])[_0xe11e('0x13')](_0xe11e('0x65'))['join'](_0xe11e('0x66'),null,_0xe11e('0x67'))[_0xe11e('0x16')](_0xe11e('0x68')+_0x900598);db['sequelize'][_0xe11e('0x5d')](_0x47d8c0[_0xe11e('0x43')]())[_0xe11e('0x5e')](function(_0x939f46){var _0x57896d=[];for(var _0x3c5b71=0x0;_0x3c5b71<_0x939f46[_0xe11e('0x1b')];_0x3c5b71++){_0x57896d[_0xe11e('0x1c')](getTimezoneData(_0x939f46[_0x3c5b71],tmp_voice_queues));}BPromise[_0xe11e('0x1d')](_0x57896d)[_0xe11e('0x1a')](function(){_0x1be46f({'val':0x1});});})[_0xe11e('0x5f')](function(_0x25a7cb){logger[_0xe11e('0x59')](_0x25a7cb['message']);_0x1be46f({'val':0x0});});});}function getTimezoneData(_0x4ce8a6,_0x84456f){return new Promise(function(_0x18c8fc,_0x4d2387){var _0x38bd5a=shared[_0xe11e('0x69')];var _0x15a829=_0x38bd5a[_0x4ce8a6[_0xe11e('0x6a')]];if(_[_0xe11e('0x1f')](_0x15a829)){_0x18c8fc({'ret':0x1});}else{var _0x1024b9=_0x15a829[_0xe11e('0x6b')];var _0x4de477=squel[_0xe11e('0x2f')]()[_0xe11e('0x30')](_0x84456f)[_0xe11e('0x6c')]('id',_0x4ce8a6['id'])[_0xe11e('0x6c')]('offset',_0x1024b9)[_0xe11e('0x6c')](_0xe11e('0x6a'),_0x4ce8a6[_0xe11e('0x6a')])[_0xe11e('0x43')]();return db[_0xe11e('0x5c')][_0xe11e('0x5d')](_0x4de477)[_0xe11e('0x5e')](function(_0x44cad7){_0x18c8fc({'ret':0x1});})[_0xe11e('0x5f')](function(_0x41204e){logger[_0xe11e('0x59')](_0x41204e[_0xe11e('0x5a')]);_0x4d2387({'ret':0x1});});}});}function handleTZQuery(_0x16d7fe){logger[_0xe11e('0x58')](_0x16d7fe);return db['sequelize'][_0xe11e('0x5d')](_0x16d7fe)[_0xe11e('0x5e')](function(_0x15a639){})[_0xe11e('0x5f')](function(_0x523d69){logger['error'](_0x523d69[_0xe11e('0x5a')]);});}function main(_0x18d731,_0x42356a,_0x1c833d,_0x46ca3e){logger[_0xe11e('0x58')](_0xe11e('0x6d'),_0x18d731,JSON['stringify'](_0x42356a));process['send'](_0xe11e('0x6e'));var _0x1ff19d=_0x42356a[_0xe11e('0x6f')];var _0xd20129=_['clone'](_0x1ff19d);var _0x40fa08=_0x42356a[_0xe11e('0x70')];var _0x4b8f5c=path[_0xe11e('0x39')](config[_0xe11e('0x71')],_0xe11e('0x72'),_0x40fa08+_0xe11e('0x73'));hasTZ=_[_0xe11e('0x50')](_0x1ff19d)['includes'](_0xe11e('0x6a'));var _0x26c26d=_[_0xe11e('0x50')](_0x1ff19d)[_0xe11e('0x39')]();logger[_0xe11e('0x58')](_0xe11e('0x74'),_0x26c26d);db[_0xe11e('0x75')][_0xe11e('0x18')]({'raw':!![],'attributes':['id','name']})[_0xe11e('0x1a')](function(_0x647e1b){for(var _0x9ef023=0x0;_0x9ef023<_0x647e1b[_0xe11e('0x1b')];_0x9ef023++){if(_0x647e1b[_0x9ef023][_0xe11e('0x76')]in _0x1ff19d){contactItemTypes[_0xe11e('0x1c')](_0x647e1b[_0x9ef023]);delete _0xd20129[_0x647e1b[_0x9ef023][_0xe11e('0x76')]];hasAdditionalPhones=!![];}for(var _0x591c70 in _0x1ff19d){if(_0x647e1b[_0x9ef023]['name']+_0xe11e('0x77')===_0x591c70){phoneDescriptions[_0xe11e('0x1c')]({'itemTypeId':_0x647e1b[_0x9ef023]['id'],'description':_0x591c70});delete _0xd20129[_0x591c70];}}}if(hasAdditionalPhones)_0xd20129[_0xe11e('0x19')]='';var _0x31b89c=_['keys'](_0xd20129)['join']();logger['info']('header',_0x31b89c);fs[_0xe11e('0x78')](_0x4b8f5c,_0x31b89c+'\x0a');Papa[_0xe11e('0x79')](fs['createReadStream'](_0x18d731),{'header':!![],'skipEmptyLines':!![],'step':function(_0x14e75e,_0x2bab3f){try{for(var _0x843a92=0x0,_0x481dad=[];_0x843a92<_0x14e75e[_0xe11e('0x7a')][_0xe11e('0x1b')];_0x843a92++){stats['rows']+=0x1;if(_0x14e75e[_0xe11e('0x7b')][_0x843a92]){handleError(_0x14e75e[_0xe11e('0x7a')][_0x843a92],_0x14e75e[_0xe11e('0x7b')][_0x843a92]);}else{var _0x531b6c=[];var _0x3e4b99=[];var _0x48b462={};for(var _0x343e93 in _0x1ff19d){let _0x2eec51=contactItemTypes['find'](_0x61da8f=>_0x61da8f[_0xe11e('0x76')]===_0x343e93);let _0xb6df01=contactItemTypes['find'](_0x3f8c8b=>_0x3f8c8b[_0xe11e('0x76')]+_0xe11e('0x77')===_0x343e93);if(_[_0xe11e('0x1f')](_0x2eec51)&&_[_0xe11e('0x1f')](_0xb6df01)){if(_0x1ff19d['hasOwnProperty'](_0x343e93)){if(_0x14e75e[_0xe11e('0x7a')][_0x843a92][_0x1ff19d[_0x343e93]]){var _0x307512=_[_0xe11e('0x7c')](_0x14e75e[_0xe11e('0x7a')][_0x843a92][_0x1ff19d[_0x343e93]]['replace'](/"/g,'\x27'));switch(_0x343e93){case'scheduledat':var _0x57277e=moment(_0x307512,_0xe11e('0xf'),!![]);if(_0x57277e[_0xe11e('0x7d')]()){_0x481dad[_0xe11e('0x1c')]('\x22'+_0x307512+'\x22');}else{_0x531b6c['push'](_0xe11e('0x7e'));}break;case'priority':var _0x325a82=parseInt(_0x307512);_0x307512=_['isNaN'](_0x325a82)||_0x325a82<0x0||_0x325a82>0x4?_0x46ca3e?0x3:0x2:_0x325a82;_0x481dad[_0xe11e('0x1c')]('\x22'+_0x307512+'\x22');break;case _0xe11e('0x7f'):var _0x48393e=parseInt(_0x307512);if(_[_0xe11e('0x80')](_0x48393e)&&_[_0xe11e('0x81')](_0x1c833d,_0x48393e)){_0x481dad[_0xe11e('0x1c')]('\x22'+_0x48393e+'\x22');}else{_0x531b6c[_0xe11e('0x1c')](_0xe11e('0x82'));}break;case _0xe11e('0x83'):if(isEmail(_0x307512)){_0x481dad[_0xe11e('0x1c')]('\x22'+_0x307512+'\x22');}else{_0x531b6c[_0xe11e('0x1c')](_0xe11e('0x84'));}break;case _0xe11e('0x85'):var _0x1ca026=moment(_0x307512,'YYYY-MM-DD',!![]);if(_0x1ca026['isValid']()){_0x481dad['push']('\x22'+_0x307512+'\x22');}else{_0x531b6c[_0xe11e('0x1c')](_0xe11e('0x86'));}break;case _0xe11e('0x6a'):var _0x13ede5=shared[_0xe11e('0x69')];var _0x260bb2=_0x13ede5[_0x307512];if(!_[_0xe11e('0x1f')](_0x260bb2)){var _0x3bccd4=_0x260bb2[_0xe11e('0x6b')];_0x481dad['push']('\x22'+_0x307512+'\x22');_0x481dad[_0xe11e('0x1c')]('\x22'+_0x3bccd4+'\x22');}break;default:_0x481dad[_0xe11e('0x1c')]('\x22'+_0x307512+'\x22');}}else{switch(_0x343e93){case _0xe11e('0x87'):case _0xe11e('0x12'):_0x531b6c['push'](_0x343e93+_0xe11e('0x88'));break;default:_0x481dad[_0xe11e('0x1c')]('\x22\x22');}}}}else{var _0x48f63f='';if(!_[_0xe11e('0x1f')](_0x2eec51)){if(!_0x48b462[_0xe11e('0x89')](_0x2eec51['id'])){if(!_[_0xe11e('0x1f')](_0x14e75e['data'][_0x843a92][_0x1ff19d[_0x343e93]])){var _0x307512=_[_0xe11e('0x7c')](_0x14e75e[_0xe11e('0x7a')][_0x843a92][_0x1ff19d[_0x343e93]]['replace'](/"/g,'\x27'));var _0x519008=phoneDescriptions[_0xe11e('0x8a')](_0x3964c3=>_0x3964c3[_0xe11e('0x8b')]===_0x2eec51['id']);if(!_['isNil'](_0x519008)){var _0x176259=_[_0xe11e('0x7c')](_0x14e75e[_0xe11e('0x7a')][_0x843a92][_0x1ff19d[_0x519008[_0xe11e('0x8c')]]][_0xe11e('0x8d')](/"/g,'\x27'));if(!_[_0xe11e('0x1f')](_0x176259))_0x307512=_0x307512+'§'+_0x176259;}if(_0x48f63f=='')_0x48f63f=_0x307512;else _0x48f63f+='|'+_0x307512;}_0x3e4b99[_0xe11e('0x1c')](_0x2eec51['id']+':'+_0x48f63f);_0x48b462[_0x2eec51['id']]=0x1;}}}}if(hasAdditionalPhones){_0x481dad[_0xe11e('0x1c')]('\x22'+_0x3e4b99[_0xe11e('0x39')](';')+'\x22');}if(_0x531b6c[_0xe11e('0x1b')]){handleError(_0x14e75e[_0xe11e('0x7a')][_0x843a92],{'code':'SystemRow','message':_0x531b6c[_0xe11e('0x39')]()});}else{fs[_0xe11e('0x8e')](_0x4b8f5c,_0x481dad[_0xe11e('0x39')]()+'\x0a');}_0x481dad=[];}if(!(stats[_0xe11e('0x8f')]%0xc8)){socket[_0xe11e('0x90')](_0xe11e('0x91')+_0x40fa08,stats);stats['errors']=[];}}if(stopped){logger[_0xe11e('0x58')](_0xe11e('0x92'));_0x2bab3f[_0xe11e('0x93')]();}}catch(_0x3dcb12){handleError(_0x14e75e['data'][_0x843a92],{'code':_0xe11e('0x94'),'message':_0x3dcb12[_0xe11e('0x5a')]});logger[_0xe11e('0x59')]('step',_0x3dcb12[_0xe11e('0x5a')]);}},'complete':function(){try{var _0x251042=[];var _0x417b67=[];var _0x16c143=_0xe11e('0x3a');if(_0x42356a[_0xe11e('0x95')]&&_0x42356a[_0xe11e('0x95')]['length']){_0x16c143=_0xe11e('0x96')+_0x40fa08;_0x251042[_0xe11e('0x1c')](_0xe11e('0x97')+_0x16c143+_0xe11e('0x98'));}tmp_campaigns=_0xe11e('0x99')+_0x40fa08;tmp_voice_queues=_0xe11e('0x9a')+_0x40fa08;_0x417b67[_0xe11e('0x1c')](_0xe11e('0x97')+tmp_campaigns+_0xe11e('0x9b'));_0x417b67['push'](_0xe11e('0x97')+tmp_voice_queues+_0xe11e('0x9b'));BPromise[_0xe11e('0x9c')](_0x417b67,handleTZQuery)[_0xe11e('0x1a')](function(_0x57147c){updateTzCampaigns(_0x42356a[_0xe11e('0x34')])[_0xe11e('0x1a')](function(_0x3c1248){updateTzVoiceQueues(_0x42356a[_0xe11e('0x34')])[_0xe11e('0x1a')](function(_0x406b53){if(hasTZ)_0x31b89c=_0x31b89c[_0xe11e('0x8d')](_0xe11e('0x6a'),_0xe11e('0x9d'));var _0x52de6a=util[_0xe11e('0xe')](_0xe11e('0x9e'),_0x4b8f5c,_0x16c143,_0x31b89c,_0x42356a[_0xe11e('0x34')],_0x42356a['CompanyId']||null,NOW,NOW);if(_['isNil'](_0x1ff19d[_0xe11e('0x45')])){_0x52de6a+=_0xe11e('0x9f');}_0x251042[_0xe11e('0x1c')](_0x52de6a);if(_0x42356a[_0xe11e('0x95')]&&_0x42356a[_0xe11e('0x95')][_0xe11e('0x1b')]){_0x251042[_0xe11e('0x1c')](insertCmContact(_0x42356a[_0xe11e('0x34')],_0x16c143,_0x42356a[_0xe11e('0x95')],_0x1ff19d));_0x251042[_0xe11e('0x1c')](_0xe11e('0xa0')+_0x16c143+';');}BPromise[_0xe11e('0x9c')](_0x251042,handleQuery)['then'](function(_0x34b7b0){BPromise[_0xe11e('0x1d')]([handleAdditionalPhones()])[_0xe11e('0x1a')](function(){_0x251042=[];for(var _0x17810b=0x0;_0x17810b<promisesAdditionalPhones[_0xe11e('0x1b')];_0x17810b++){if(promisesAdditionalPhones[_0x17810b][_0xe11e('0x12')]!='§'){_0x251042[_0xe11e('0x1c')](createAdditionalPhone(promisesAdditionalPhones[_0x17810b]['contactId'],promisesAdditionalPhones[_0x17810b][_0xe11e('0xa1')],promisesAdditionalPhones[_0x17810b][_0xe11e('0x12')],promisesAdditionalPhones[_0x17810b]['orderBy']));}}BPromise['all'](_0x251042)[_0xe11e('0x1a')](function(){_0x251042=[];if(hasTZ){_0x251042[_0xe11e('0x1c')](insertTzCmHopper(_0x42356a['ListId'],_0xe11e('0x66'),_0xe11e('0x65'),_0xe11e('0xa2'),_0x46ca3e,tmp_voice_queues));_0x251042['push'](insertTzCmHopperBlack(_0x42356a[_0xe11e('0x34')],_0xe11e('0xa3'),'voice_queues',_0xe11e('0xa2')));_0x251042[_0xe11e('0x1c')](insertTzCmHopper(_0x42356a[_0xe11e('0x34')],_0xe11e('0x61'),_0xe11e('0x60'),_0xe11e('0xa4'),_0x46ca3e,tmp_campaigns));_0x251042[_0xe11e('0x1c')](insertTzCmHopperBlack(_0x42356a[_0xe11e('0x34')],_0xe11e('0xa5'),'campaigns','CampaignId'));_0x251042[_0xe11e('0x1c')](insertCmHopperAdditionalPhones(_0x42356a['ListId']));}else{_0x251042[_0xe11e('0x1c')](insertCmHopper(_0x42356a[_0xe11e('0x34')],'voice_queues_has_cm_lists',_0xe11e('0x65'),_0xe11e('0xa2'),_0x46ca3e));_0x251042[_0xe11e('0x1c')](insertCmHopperBlack(_0x42356a[_0xe11e('0x34')],_0xe11e('0xa3'),_0xe11e('0x65'),'VoiceQueueId'));_0x251042[_0xe11e('0x1c')](insertCmHopper(_0x42356a['ListId'],_0xe11e('0x61'),'campaigns',_0xe11e('0xa4'),_0x46ca3e));_0x251042[_0xe11e('0x1c')](insertCmHopperBlack(_0x42356a['ListId'],_0xe11e('0xa5'),_0xe11e('0x60'),'CampaignId'));_0x251042['push'](insertCmHopperAdditionalPhones(_0x42356a[_0xe11e('0x34')]));}_0x251042[_0xe11e('0x1c')](_0xe11e('0xa0')+tmp_campaigns+';');_0x251042[_0xe11e('0x1c')](_0xe11e('0xa0')+tmp_voice_queues+';');BPromise[_0xe11e('0x9c')](_0x251042,handleQuery)['then'](function(_0x321b8b){stats[_0xe11e('0xa6')]=!![];stats[_0xe11e('0xa7')]=_0x42356a[_0xe11e('0x95')]&&_0x42356a[_0xe11e('0x95')][_0xe11e('0x1b')]?results[0x2][_0xe11e('0xa7')]:results[0x0]['affectedRows'];socket[_0xe11e('0x90')](_0xe11e('0x91')+_0x40fa08,stats);fs['unlink'](_0x18d731);fs[_0xe11e('0xa8')](_0x4b8f5c);process[_0xe11e('0xa9')](0x0);})['catch'](function(_0x60ec14){logger[_0xe11e('0x59')](_0x60ec14[_0xe11e('0x5a')]);process[_0xe11e('0xa9')](0x1);});});});})[_0xe11e('0x5f')](function(_0x392a0e){logger[_0xe11e('0x59')](_0x392a0e['message']);process[_0xe11e('0xa9')](0x1);});});});});}catch(_0x2443e4){logger['error']('complete',_0x2443e4[_0xe11e('0x5a')]);process[_0xe11e('0xa9')](0x1);}},'error':function(_0x271adf,_0x2bc2ac,_0x2d3d0d,_0x10d166){throw new Error(_0x10d166);}});});}function validate(){if(process[_0xe11e('0xaa')]&&process[_0xe11e('0xaa')][_0xe11e('0x1b')]<0x4){throw new Error(_0xe11e('0xab'));}var _0x53a96d=path['join'](config['root'],'server/files/tmp',process[_0xe11e('0xaa')][0x2]);if(!fs['existsSync'](_0x53a96d)){throw new Error(_0xe11e('0xac'));}var _0x1f4ffe={};try{_0x1f4ffe=JSON['parse'](process['argv'][0x3]);if(!_0x1f4ffe[_0xe11e('0x6f')]){throw new Error(_0xe11e('0xad'));}if(!_0x1f4ffe['binding'][_0xe11e('0x12')]){throw new Error(_0xe11e('0xae'));}if(!_0x1f4ffe[_0xe11e('0x6f')][_0xe11e('0x87')]){throw new Error(_0xe11e('0xaf'));}var _0x57b741=0x0;if(_0x1f4ffe[_0xe11e('0x6f')][_0xe11e('0x7f')]){_0x57b741=0x1;}if(!_0x1f4ffe[_0xe11e('0x34')]){throw new Error(_0xe11e('0xb0'));}}catch(_0x316ebb){throw new Error(_0xe11e('0xb1'));}var _0x52957b=[];try{_0x52957b=_[_0xe11e('0xb2')](JSON[_0xe11e('0x79')](process[_0xe11e('0xaa')][0x4]),'id');}catch(_0x3cf09d){logger[_0xe11e('0x58')](_0xe11e('0xb3'));}main(_0x53a96d,_0x1f4ffe,_0x52957b,_0x57b741);}validate();process['on'](_0xe11e('0xb4'),handleStop);process['on'](_0xe11e('0xb5'),handleUncaughtException);
\ No newline at end of file
index 91d430d..c109d71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf79=['contact:import:','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding','binding\x20doesn\x27t\x20exists','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','papaparse','util','bluebird','moment','squel','import','redis','defaults','socket.io-emitter','format','cm_contacts_temp_','YYYYMMDDHHmmss','test','select','field','phone','from','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','sequelize','query','spread','length','isNil','AdditionalPhones','push','all','then','catch','error','split','filter','CmContactHasItem','update','updated','create','inserted','CmContact','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','updatedAt','priority','fields','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.ListId','cm_hopper_black','cm_contacts','ListId\x20=\x20?','\x20=\x20?','cm_contact_has_items.item','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','CmHopperId','OrderBy','createdAt','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId',')\x20NOT\x20IN\x20?','id\x20IN\x20?','min_id','group','info','Received\x20SIGINT','message','exit','errors','code','main','send','start','clone','socket_timestamp','root','server/files/tmp','.csv','body','ContactItemType','findAll','name','_description','writeFileSync','parse','createReadStream','data','rows','find','hasOwnProperty','trim','YYYY-MM-DD\x20HH:mm:ss','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','UserId','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','firstName','replace','itemTypeId','SystemRow','appendFileSync','emit','Abort\x20parser','step','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','CIS\x20len',',\x20scheduledAt\x20=\x20NOW()','contact','contactId','contactTypeId','orderBy','each','finish'];(function(_0x1e0d60,_0x503460){var _0x5b9564=function(_0x331935){while(--_0x331935){_0x1e0d60['push'](_0x1e0d60['shift']());}};_0x5b9564(++_0x503460);}(_0xdf79,0xa7));var _0x9df7=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xdf79[_0x20a584];return _0x4b41a8;};'use strict';var fs=require('fs');var path=require('path');var _=require('lodash');var Papa=require(_0x9df7('0x0'));var util=require(_0x9df7('0x1'));var BPromise=require(_0x9df7('0x2'));var moment=require(_0x9df7('0x3'));var squel=require(_0x9df7('0x4'));var Redis=require('ioredis');var db=require('../../../mysqldb')['db'];var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x9df7('0x5'));config[_0x9df7('0x6')]=_[_0x9df7('0x7')](config[_0x9df7('0x6')],{'host':'localhost','port':0x18eb});var socket=require(_0x9df7('0x8'))(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var promisesContact=[];var orderBy=0x0;var updatedRows=0x0;var stopped=![];var NOW=moment()[_0x9df7('0x9')]('YYYY-MM-DD\x20HH:mm:ss');var tempTableName=_0x9df7('0xa')+moment()[_0x9df7('0x9')](_0x9df7('0xb'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x4ee4aa){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))*$/[_0x9df7('0xc')](_0x4ee4aa);}function selectNotIn(_0x6d46a9,_0x2296e7,_0x5acd8b,_0x2570f8,_0x3c3b99){return squel[_0x9df7('0xd')]()[_0x9df7('0xe')](_0x9df7('0xf'))[_0x9df7('0x10')](_0x2570f8)[_0x9df7('0x11')](_0x2296e7,null,_0x2296e7+_0x9df7('0x12')+_0x2570f8+'.'+_0x5acd8b)[_0x9df7('0x13')](_0x2570f8+'.'+_0x5acd8b+_0x9df7('0x14')+_0x6d46a9+'.'+_0x5acd8b)[_0x9df7('0x13')](_0x2296e7+_0x9df7('0x15')+_0x3c3b99['join']()+')');}function handleAdditionalPhones(){return new Promise(function(_0x49a64d,_0x66813f){promisesAdditionalPhones=[];promisesContact=[];return db[_0x9df7('0x16')][_0x9df7('0x17')]('select\x20*\x20from\x20'+tempTableName)[_0x9df7('0x18')](function(_0x5cb6dc){if(_0x5cb6dc!==null){var _0x5128ea=[];for(var _0x5c0dcd=0x0;_0x5c0dcd<_0x5cb6dc[_0x9df7('0x19')];_0x5c0dcd++){var _0x3d545b=_0x5cb6dc[_0x5c0dcd];if(!_[_0x9df7('0x1a')](_0x3d545b[_0x9df7('0xf')])){if(!_[_0x9df7('0x1a')](_0x3d545b[_0x9df7('0x1b')]))_0x5128ea[_0x9df7('0x1c')](insertAdditionalPhones(_0x3d545b));promisesContact[_0x9df7('0x1c')]({'contact':_0x3d545b});}}}Promise[_0x9df7('0x1d')](_0x5128ea)[_0x9df7('0x1e')](function(){_0x49a64d({'val':0x1});});})[_0x9df7('0x1f')](function(_0x43ef7c){logger[_0x9df7('0x20')](_0x43ef7c['message']);});});}function insertAdditionalPhones(_0x4cf55c){return new Promise(function(_0xec1731,_0x45f9c9){var _0x48fa39=_0x4cf55c[_0x9df7('0x1b')];if(_['isNil'](_0x48fa39))_0x45f9c9({'val':0x0});else{var _0x29fbb=_0x48fa39[_0x9df7('0x21')](';');var _0x30f344=[];orderBy=0x0;for(var _0x25dc95=0x0;_0x25dc95<_0x29fbb[_0x9df7('0x19')];_0x25dc95++){_0x30f344[_0x9df7('0x1c')](splitAdditionalPhone(_0x4cf55c['id'],_0x29fbb[_0x25dc95]));}Promise[_0x9df7('0x1d')](_0x30f344)['then'](function(){_0xec1731({'val':_0x29fbb[_0x9df7('0x19')]});});}});}function splitAdditionalPhone(_0x482d07,_0x149e61){return new Promise(function(_0x17dc45,_0x1fa27c){var _0x5e30a3=_0x149e61[_0x9df7('0x21')](':');var _0x33376e=_0x5e30a3[0x0];var _0x374395=_0x5e30a3[0x1];if(_0x374395!==''){var _0x5210f1=_0x374395[_0x9df7('0x21')]('|');var _0x36c612=[];for(var _0x559ab1=0x0;_0x559ab1<_0x5210f1[_0x9df7('0x19')];_0x559ab1++){if(_0x5210f1[_0x559ab1]!==''){var _0x4cf055=_[_0x9df7('0x22')](promisesAdditionalPhones,{'contactId':_0x482d07,'phone':_0x5210f1[_0x559ab1]});if(_0x4cf055[_0x9df7('0x19')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x482d07,'contactTypeId':_0x33376e,'phone':_0x5210f1[_0x559ab1],'orderBy':orderBy});}}}_0x17dc45({'ok':0x1});}else _0x17dc45({'res':0x0});});}function createAdditionalPhone(_0x43d4cd,_0x2673df,_0x2c5cc8,_0x331a55){var _0x383453='';var _0x1a5da9='';var _0x3cb6ce=_0x2c5cc8[_0x9df7('0x21')]('§');_0x383453=_0x3cb6ce[0x0];if(_0x3cb6ce['length']==0x2)_0x1a5da9=_0x3cb6ce[0x1];return new Promise(function(_0xbc6929,_0x24084c){return db[_0x9df7('0x23')]['findOne']({'where':{'CmContactId':_0x43d4cd,'item':_0x383453}})[_0x9df7('0x1e')](function(_0x527302){if(_0x527302){return db['CmContactHasItem'][_0x9df7('0x24')]({'ItemTypeId':_0x2673df,'description':_0x1a5da9,'OrderBy':_0x331a55},{'where':{'CmContactId':_0x43d4cd,'item':_0x383453}})[_0x9df7('0x1e')](function(_0x327160){_0xbc6929({'res':_0x9df7('0x25')});});}else{return db[_0x9df7('0x23')][_0x9df7('0x26')]({'CmContactId':_0x43d4cd,'item':_0x383453,'ItemTypeId':_0x2673df,'description':_0x1a5da9,'OrderBy':_0x331a55,'ItemClass':'PHONE'})[_0x9df7('0x1e')](function(_0x115d29){_0xbc6929({'res':_0x9df7('0x27')});});}});});}function updateContact(_0x2d20e7){return new Promise(function(_0x37c2ae,_0xc7d6c6){var _0x5a6d0b=_0x2d20e7['id'];delete _0x2d20e7['id'];return db[_0x9df7('0x28')][_0x9df7('0x24')](_0x2d20e7,{'where':{'id':_0x5a6d0b}})[_0x9df7('0x1e')](function(_0x13d316){updatedRows+=0x1;return db['CmHopper'][_0x9df7('0x24')]({'phone':_0x2d20e7[_0x9df7('0xf')]},{'where':{'ContactId':_0x5a6d0b}})[_0x9df7('0x1e')](function(_0x33484d){_0x37c2ae({'ret':'OK'});});});});}function insertCmHopper(_0x3a10e4,_0x5948ec,_0x59340d,_0x4a3418,_0x469ea6){var _0x300055=[_0x9df7('0x29'),_0x9df7('0x2a'),_0x9df7('0x2b'),'cm_contacts.ListId',_0x5948ec+'.'+_0x4a3418,_0x9df7('0x2c'),_0x9df7('0x2d'),_0x9df7('0x2e'),_0x9df7('0x2f'),'\x22'+_0x469ea6+'\x22'];return squel[_0x9df7('0x30')]()[_0x9df7('0x31')](_0x9df7('0x32'))[_0x9df7('0x33')]([_0x9df7('0xf'),_0x9df7('0x34'),_0x9df7('0x35'),_0x9df7('0x36'),_0x4a3418,'createdAt',_0x9df7('0x37'),_0x9df7('0x38'),'UserId','recallme'],squel['select']()[_0x9df7('0x39')](_0x300055)[_0x9df7('0x10')](_0x5948ec)[_0x9df7('0x11')]('cm_contacts',null,_0x9df7('0x3a')+_0x5948ec+_0x9df7('0x3b'))[_0x9df7('0x11')](_0x59340d,null,_0x59340d+_0x9df7('0x12')+_0x5948ec+'.'+_0x4a3418)[_0x9df7('0x13')](_0x5948ec+_0x9df7('0x3c'),_0x3a10e4)['where'](_0x9df7('0x3d'),NOW)[_0x9df7('0x13')](_0x9df7('0x3e'),selectNotIn(_0x5948ec,_0x59340d,_0x4a3418,_0x9df7('0x32'),[_0x9df7('0x3f'),_0x9df7('0x40')]))['where'](_0x9df7('0x3e'),selectNotIn(_0x5948ec,_0x59340d,_0x4a3418,_0x9df7('0x32'),[_0x9df7('0x3f')])))[_0x9df7('0x41')]();}function insertCmHopperBlack(_0x475e23,_0x5977a9,_0x505e19,_0x3175d8){var _0x2564d5=[_0x9df7('0x29'),'cm_contacts.id',_0x9df7('0x42'),_0x5977a9+'.'+_0x3175d8,_0x9df7('0x2c'),_0x9df7('0x2d')];return squel[_0x9df7('0x30')]()[_0x9df7('0x31')](_0x9df7('0x43'))[_0x9df7('0x33')]([_0x9df7('0xf'),'ContactId',_0x9df7('0x36'),_0x3175d8,'createdAt',_0x9df7('0x37')],squel[_0x9df7('0xd')]()[_0x9df7('0x39')](_0x2564d5)[_0x9df7('0x10')](_0x5977a9)[_0x9df7('0x11')](_0x9df7('0x44'),null,'cm_contacts.ListId\x20=\x20'+_0x5977a9+_0x9df7('0x3b'))[_0x9df7('0x11')](_0x505e19,null,_0x505e19+_0x9df7('0x12')+_0x5977a9+'.'+_0x3175d8)[_0x9df7('0x13')](_0x5977a9+_0x9df7('0x3c'),_0x475e23)[_0x9df7('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x9df7('0x13')](_0x9df7('0x3e'),squel[_0x9df7('0xd')]()[_0x9df7('0xe')](_0x9df7('0xf'))[_0x9df7('0x10')](_0x9df7('0x43'))[_0x9df7('0x13')](_0x9df7('0x45'),_0x475e23)[_0x9df7('0x13')](_0x3175d8+_0x9df7('0x46'),_0x5977a9+'.'+_0x3175d8)))[_0x9df7('0x41')]();}function insertCmHopperAdditionalPhones(_0x5e2211){var _0x1d8bfc=['cm_hopper.id',_0x9df7('0x47'),'cm_contact_has_items.OrderBy',_0x9df7('0x48'),_0x9df7('0x49')];return squel[_0x9df7('0x30')]()['into'](_0x9df7('0x4a'))[_0x9df7('0x33')]([_0x9df7('0x4b'),_0x9df7('0xf'),_0x9df7('0x4c'),_0x9df7('0x4d'),_0x9df7('0x37')],squel[_0x9df7('0xd')]()[_0x9df7('0x39')](_0x1d8bfc)[_0x9df7('0x10')](_0x9df7('0x32'))['join'](_0x9df7('0x44'),null,_0x9df7('0x4e'))[_0x9df7('0x11')](_0x9df7('0x4f'),null,'cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId')[_0x9df7('0x13')](_0x9df7('0x50'),_0x5e2211)['where']('cm_contacts.createdAt\x20=\x20?',NOW))['toString']();}function insertCmContact(_0x59f673,_0x3be771,_0x54e623,_0x531abc){var _0x4aec61=_[_0x9df7('0x51')](_[_0x9df7('0x52')](_0x531abc),[_0x9df7('0x36'),_0x9df7('0x53'),'createdAt',_0x9df7('0x37')]);return squel[_0x9df7('0x30')]()['into'](_0x9df7('0x44'))[_0x9df7('0x33')](_0x4aec61,squel[_0x9df7('0xd')]()[_0x9df7('0x39')](_0x4aec61)[_0x9df7('0x10')](_0x3be771)[_0x9df7('0x13')]('('+_0x54e623[_0x9df7('0x11')](',')+_0x9df7('0x54'),squel[_0x9df7('0xd')]()[_0x9df7('0x39')](_0x54e623)[_0x9df7('0x10')](_0x9df7('0x44'))['where'](_0x9df7('0x45'),_0x59f673))[_0x9df7('0x13')](_0x9df7('0x55'),squel[_0x9df7('0xd')]()[_0x9df7('0xe')]('MIN(id)',_0x9df7('0x56'))['from'](_0x3be771)[_0x9df7('0x57')](_0x54e623['join'](','))))[_0x9df7('0x41')]();}function handleStop(){logger[_0x9df7('0x58')](_0x9df7('0x59'));stopped=!![];}function handleUncaughtException(_0x38c1a9){logger[_0x9df7('0x20')](_0x38c1a9[_0x9df7('0x5a')]);process[_0x9df7('0x5b')](0x1);}function handleError(_0x193733,_0x2533c6){stats[_0x9df7('0x5c')]['push']({'name':_0x2533c6[_0x9df7('0x5d')],'message':_0x2533c6['message'],'row':_0x193733});}function handleQuery(_0xdd4ae1){logger[_0x9df7('0x58')](_0xdd4ae1);return db[_0x9df7('0x16')][_0x9df7('0x17')](_0xdd4ae1)[_0x9df7('0x18')](function(_0x45ef77){results['push'](_0x45ef77);})[_0x9df7('0x1f')](function(_0x2a821a){logger[_0x9df7('0x20')](_0x2a821a['message']);});}function main(_0x47818f,_0x12a3ae,_0x9fb36f,_0x4c2ce9){logger['info'](_0x9df7('0x5e'),_0x47818f,JSON['stringify'](_0x12a3ae));process[_0x9df7('0x5f')](_0x9df7('0x60'));var _0x1d7291=_0x12a3ae['binding'];var _0x8d53da=_[_0x9df7('0x61')](_0x1d7291);var _0x3533fe=_0x12a3ae[_0x9df7('0x62')];var _0x27251=path[_0x9df7('0x11')](config[_0x9df7('0x63')],_0x9df7('0x64'),_0x3533fe+_0x9df7('0x65'));logger[_0x9df7('0x58')](_0x9df7('0x66'),_0x12a3ae);db[_0x9df7('0x67')][_0x9df7('0x68')]({'raw':!![],'attributes':['id',_0x9df7('0x69')]})[_0x9df7('0x1e')](function(_0x36b103){for(var _0x469e50=0x0;_0x469e50<_0x36b103['length'];_0x469e50++){if(_0x36b103[_0x469e50]['name']in _0x1d7291){contactItemTypes[_0x9df7('0x1c')](_0x36b103[_0x469e50]);delete _0x8d53da[_0x36b103[_0x469e50][_0x9df7('0x69')]];hasAdditionalPhones=!![];}for(var _0x2542f4 in _0x1d7291){if(_0x36b103[_0x469e50][_0x9df7('0x69')]+_0x9df7('0x6a')===_0x2542f4){phoneDescriptions[_0x9df7('0x1c')]({'itemTypeId':_0x36b103[_0x469e50]['id'],'description':_0x2542f4});delete _0x8d53da[_0x2542f4];}}}if(hasAdditionalPhones)_0x8d53da['AdditionalPhones']='';var _0x17c6e8=_[_0x9df7('0x52')](_0x8d53da)[_0x9df7('0x11')]();logger[_0x9df7('0x58')]('header',_0x17c6e8);fs[_0x9df7('0x6b')](_0x27251,_0x17c6e8+'\x0a');Papa[_0x9df7('0x6c')](fs[_0x9df7('0x6d')](_0x47818f),{'header':!![],'skipEmptyLines':!![],'step':function(_0x2f300f,_0xd6fc82){try{for(var _0x4c7176=0x0,_0x10e81a=[];_0x4c7176<_0x2f300f[_0x9df7('0x6e')][_0x9df7('0x19')];_0x4c7176++){stats[_0x9df7('0x6f')]+=0x1;if(_0x2f300f[_0x9df7('0x5c')][_0x4c7176]){handleError(_0x2f300f[_0x9df7('0x6e')][_0x4c7176],_0x2f300f['errors'][_0x4c7176]);}else{var _0x5e9309=[];var _0x32e625=[];var _0x57a05f={};for(var _0x50b696 in _0x1d7291){let _0xd9fb2b=contactItemTypes[_0x9df7('0x70')](_0x504f81=>_0x504f81[_0x9df7('0x69')]===_0x50b696);let _0x58023e=contactItemTypes['find'](_0x2e1deb=>_0x2e1deb['name']+_0x9df7('0x6a')===_0x50b696);if(_[_0x9df7('0x1a')](_0xd9fb2b)&&_[_0x9df7('0x1a')](_0x58023e)){if(_0x1d7291[_0x9df7('0x71')](_0x50b696)){if(_0x2f300f[_0x9df7('0x6e')][_0x4c7176][_0x1d7291[_0x50b696]]){var _0x2c18c1=_[_0x9df7('0x72')](_0x2f300f[_0x9df7('0x6e')][_0x4c7176][_0x1d7291[_0x50b696]]['replace'](/"/g,'\x27'));switch(_0x50b696){case _0x9df7('0x34'):var _0x50d06f=moment(_0x2c18c1,_0x9df7('0x73'),!![]);if(_0x50d06f['isValid']()){_0x10e81a['push']('\x22'+_0x2c18c1+'\x22');}else{_0x5e9309['push'](_0x9df7('0x74'));}break;case _0x9df7('0x38'):var _0x54fe56=parseInt(_0x2c18c1);_0x2c18c1=_['isNaN'](_0x54fe56)||_0x54fe56<0x0||_0x54fe56>0x4?_0x4c2ce9?0x3:0x2:_0x54fe56;_0x10e81a[_0x9df7('0x1c')]('\x22'+_0x2c18c1+'\x22');break;case _0x9df7('0x75'):var _0x160f1d=parseInt(_0x2c18c1);if(_['isNumber'](_0x160f1d)&&_[_0x9df7('0x76')](_0x9fb36f,_0x160f1d)){_0x10e81a[_0x9df7('0x1c')]('\x22'+_0x160f1d+'\x22');}else{_0x5e9309[_0x9df7('0x1c')](_0x9df7('0x77'));}break;case _0x9df7('0x78'):if(isEmail(_0x2c18c1)){_0x10e81a['push']('\x22'+_0x2c18c1+'\x22');}else{_0x5e9309['push'](_0x9df7('0x79'));}break;case _0x9df7('0x7a'):var _0x4abc96=moment(_0x2c18c1,'YYYY-MM-DD',!![]);if(_0x4abc96['isValid']()){_0x10e81a[_0x9df7('0x1c')]('\x22'+_0x2c18c1+'\x22');}else{_0x5e9309[_0x9df7('0x1c')]('dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)');}break;default:_0x10e81a['push']('\x22'+_0x2c18c1+'\x22');}}else{switch(_0x50b696){case _0x9df7('0x7b'):case _0x9df7('0xf'):_0x5e9309['push'](_0x50b696+'\x20not\x20specified');break;default:_0x10e81a['push']('\x22\x22');}}}}else{var _0x26e30a='';if(!_[_0x9df7('0x1a')](_0xd9fb2b)){if(!_0x57a05f[_0x9df7('0x71')](_0xd9fb2b['id'])){for(var _0x462e08=0x0;_0x462e08<_0x1d7291[_0x50b696][_0x9df7('0x19')];_0x462e08++){var _0x2c18c1=_[_0x9df7('0x72')](_0x2f300f[_0x9df7('0x6e')][_0x4c7176][_0x1d7291[_0x50b696][_0x462e08]][_0x9df7('0x7c')](/"/g,'\x27'));var _0x3737e9=phoneDescriptions[_0x9df7('0x70')](_0x43cd33=>_0x43cd33[_0x9df7('0x7d')]===_0xd9fb2b['id']);if(!_[_0x9df7('0x1a')](_0x3737e9)){var _0x11fdfd=_[_0x9df7('0x72')](_0x2f300f[_0x9df7('0x6e')][_0x4c7176][_0x1d7291[_0x3737e9['description']][0x0]][_0x9df7('0x7c')](/"/g,'\x27'));if(!_[_0x9df7('0x1a')](_0x11fdfd))_0x2c18c1=_0x2c18c1+'§'+_0x11fdfd;}if(_0x26e30a=='')_0x26e30a=_0x2c18c1;else _0x26e30a+='|'+_0x2c18c1;}_0x32e625[_0x9df7('0x1c')](_0xd9fb2b['id']+':'+_0x26e30a);_0x57a05f[_0xd9fb2b['id']]=0x1;}}}}if(hasAdditionalPhones){_0x10e81a['push']('\x22'+_0x32e625[_0x9df7('0x11')](';')+'\x22');}if(_0x5e9309[_0x9df7('0x19')]){handleError(_0x2f300f[_0x9df7('0x6e')][_0x4c7176],{'code':_0x9df7('0x7e'),'message':_0x5e9309['join']()});}else{fs[_0x9df7('0x7f')](_0x27251,_0x10e81a[_0x9df7('0x11')]()+'\x0a');}_0x10e81a=[];}if(!(stats[_0x9df7('0x6f')]%0xc8)){socket[_0x9df7('0x80')]('contact:import:'+_0x3533fe,stats);stats[_0x9df7('0x5c')]=[];}}if(stopped){logger[_0x9df7('0x58')](_0x9df7('0x81'));_0xd6fc82['abort']();}}catch(_0x8a89bf){handleError(_0x2f300f[_0x9df7('0x6e')][_0x4c7176],{'code':'SystemError','message':_0x8a89bf[_0x9df7('0x5a')]});logger[_0x9df7('0x20')](_0x9df7('0x82'),_0x8a89bf[_0x9df7('0x5a')]);}},'complete':function(){try{var _0x16f127=[];var _0x265f46=tempTableName;_0x16f127[_0x9df7('0x1c')](_0x9df7('0x83')+_0x265f46+_0x9df7('0x84'));logger[_0x9df7('0x58')](_0x9df7('0x85'),contactItemTypes[_0x9df7('0x19')]);var _0x4d186b=util['format']('LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',_0x27251,_0x265f46,_0x17c6e8,_0x12a3ae[_0x9df7('0x36')],_0x12a3ae[_0x9df7('0x53')]||null,NOW,NOW);if(_[_0x9df7('0x1a')](_0x1d7291[_0x9df7('0x34')])){_0x4d186b+=_0x9df7('0x86');}_0x16f127[_0x9df7('0x1c')](_0x4d186b);BPromise['each'](_0x16f127,handleQuery)['then'](function(_0x260611){BPromise[_0x9df7('0x1d')]([handleAdditionalPhones()])[_0x9df7('0x1e')](function(){_0x16f127=[];for(var _0x478c04=0x0;_0x478c04<promisesContact[_0x9df7('0x19')];_0x478c04++){_0x16f127[_0x9df7('0x1c')](updateContact(promisesContact[_0x478c04][_0x9df7('0x87')]));}BPromise[_0x9df7('0x1d')](_0x16f127)['then'](function(){_0x16f127=[];for(var _0x4f6ee6=0x0;_0x4f6ee6<promisesAdditionalPhones['length'];_0x4f6ee6++){_0x16f127[_0x9df7('0x1c')](createAdditionalPhone(promisesAdditionalPhones[_0x4f6ee6][_0x9df7('0x88')],promisesAdditionalPhones[_0x4f6ee6][_0x9df7('0x89')],promisesAdditionalPhones[_0x4f6ee6]['phone'],promisesAdditionalPhones[_0x4f6ee6][_0x9df7('0x8a')]));}BPromise['all'](_0x16f127)[_0x9df7('0x1e')](function(){_0x16f127=[];_0x16f127[_0x9df7('0x1c')](insertCmHopperAdditionalPhones(_0x12a3ae['ListId']));_0x16f127[_0x9df7('0x1c')]('DROP\x20TABLE\x20'+_0x265f46+';');BPromise[_0x9df7('0x8b')](_0x16f127,handleQuery)[_0x9df7('0x1e')](function(_0x57b16d){stats[_0x9df7('0x8c')]=!![];stats['affectedRows']=updatedRows;socket[_0x9df7('0x80')](_0x9df7('0x8d')+_0x3533fe,stats);fs['unlink'](_0x47818f);fs[_0x9df7('0x8e')](_0x27251);process['exit'](0x0);})[_0x9df7('0x1f')](function(_0x52260d){logger[_0x9df7('0x20')](_0x52260d['message']);process[_0x9df7('0x5b')](0x1);});});});});})[_0x9df7('0x1f')](function(_0xfc4498){logger[_0x9df7('0x20')](_0xfc4498[_0x9df7('0x5a')]);process['exit'](0x1);});}catch(_0x4e1c51){logger[_0x9df7('0x20')](_0x9df7('0x8f'),_0x4e1c51[_0x9df7('0x5a')]);process['exit'](0x1);}},'error':function(_0x27a660,_0x22df4e,_0x3af58b,_0x493def){throw new Error(_0x493def);}});});}function validate(){if(process[_0x9df7('0x90')]&&process[_0x9df7('0x90')][_0x9df7('0x19')]<0x4){throw new Error(_0x9df7('0x91'));}var _0x1f6244=path['join'](config[_0x9df7('0x63')],_0x9df7('0x64'),process[_0x9df7('0x90')][0x2]);if(!fs[_0x9df7('0x92')](_0x1f6244)){throw new Error(_0x9df7('0x93'));}var _0x54cdb3={};try{_0x54cdb3=JSON[_0x9df7('0x6c')](process['argv'][0x3]);if(!_0x54cdb3[_0x9df7('0x94')]){throw new Error(_0x9df7('0x95'));}var _0x13ab14=0x0;if(_0x54cdb3['binding']['UserId']){_0x13ab14=0x1;}if(!_0x54cdb3[_0x9df7('0x36')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x19e026){throw new Error(_0x9df7('0x96'));}var _0x41f765=[];try{_0x41f765=_[_0x9df7('0x97')](JSON[_0x9df7('0x6c')](process['argv'][0x4]),'id');}catch(_0xb32537){logger[_0x9df7('0x58')](_0x9df7('0x98'));}main(_0x1f6244,_0x54cdb3,_0x41f765,_0x13ab14);}validate();process['on'](_0x9df7('0x99'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
+var _0xe511=['CompanyId',')\x20NOT\x20IN\x20?','id\x20IN\x20?','MIN(id)','min_id','exit','errors','code','info','main','stringify','send','start','binding','clone','socket_timestamp','server/files/tmp','.csv','body','name','parse','data','find','_description','trim','YYYY-MM-DD\x20HH:mm:ss','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','hasOwnProperty','itemTypeId','SystemRow','appendFileSync','rows','emit','Abort\x20parser','SystemError','step','CREATE\x20TABLE\x20','\x20LIKE\x20cm_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\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','contactId','contactTypeId','orderBy','each','contact:import:','unlink','complete','argv','root','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','path','lodash','util','moment','squel','../../../mysqldb','../../../config/environment','../../../config/logger','import','defaults','redis','format','YYYYMMDDHHmmss','test','select','field','phone','from','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','join','sequelize','query','spread','length','isNil','AdditionalPhones','push','all','catch','error','message','then','split','filter','findOne','CmContactHasItem','update','updated','create','PHONE','inserted','CmContact','CmHopper','cm_contacts.phone','cm_contacts.id','cm_contacts.ListId','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','scheduledat','ListId','createdAt','updatedAt','priority','UserId','recallme','fields','cm_contacts','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.createdAt','cm_hopper_black','fromQuery','ContactId','cm_contacts.ListId\x20=\x20','ListId\x20=\x20?','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_hopper_additional_phones','CmHopperId','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','keys'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0xe511,0x16f));var _0x1e51=function(_0x1cb574,_0x318720){_0x1cb574=_0x1cb574-0x0;var _0x3f11a5=_0xe511[_0x1cb574];return _0x3f11a5;};'use strict';var fs=require('fs');var path=require(_0x1e51('0x0'));var _=require(_0x1e51('0x1'));var Papa=require('papaparse');var util=require(_0x1e51('0x2'));var BPromise=require('bluebird');var moment=require(_0x1e51('0x3'));var squel=require(_0x1e51('0x4'));var Redis=require('ioredis');var db=require(_0x1e51('0x5'))['db'];var config=require(_0x1e51('0x6'));var logger=require(_0x1e51('0x7'))(_0x1e51('0x8'));config['redis']=_[_0x1e51('0x9')](config[_0x1e51('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1e51('0xa')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var promisesContact=[];var orderBy=0x0;var updatedRows=0x0;var stopped=![];var NOW=moment()[_0x1e51('0xb')]('YYYY-MM-DD\x20HH:mm:ss');var tempTableName='cm_contacts_temp_'+moment()[_0x1e51('0xb')](_0x1e51('0xc'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x29da1f){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))*$/[_0x1e51('0xd')](_0x29da1f);}function selectNotIn(_0x4241a6,_0x141e2e,_0x4dc7f1,_0x25437c,_0xcdfa5d){return squel[_0x1e51('0xe')]()[_0x1e51('0xf')](_0x1e51('0x10'))[_0x1e51('0x11')](_0x25437c)['join'](_0x141e2e,null,_0x141e2e+_0x1e51('0x12')+_0x25437c+'.'+_0x4dc7f1)[_0x1e51('0x13')](_0x25437c+'.'+_0x4dc7f1+_0x1e51('0x14')+_0x4241a6+'.'+_0x4dc7f1)[_0x1e51('0x13')](_0x141e2e+_0x1e51('0x15')+_0xcdfa5d[_0x1e51('0x16')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x441c70,_0x467e77){promisesAdditionalPhones=[];promisesContact=[];return db[_0x1e51('0x17')][_0x1e51('0x18')]('select\x20*\x20from\x20'+tempTableName)[_0x1e51('0x19')](function(_0x24db4f){if(_0x24db4f!==null){var _0x4526b4=[];for(var _0x5857e2=0x0;_0x5857e2<_0x24db4f[_0x1e51('0x1a')];_0x5857e2++){var _0x4f7aaf=_0x24db4f[_0x5857e2];if(!_['isNil'](_0x4f7aaf[_0x1e51('0x10')])){if(!_[_0x1e51('0x1b')](_0x4f7aaf[_0x1e51('0x1c')]))_0x4526b4[_0x1e51('0x1d')](insertAdditionalPhones(_0x4f7aaf));promisesContact[_0x1e51('0x1d')]({'contact':_0x4f7aaf});}}}Promise[_0x1e51('0x1e')](_0x4526b4)['then'](function(){_0x441c70({'val':0x1});});})[_0x1e51('0x1f')](function(_0x4a9272){logger[_0x1e51('0x20')](_0x4a9272[_0x1e51('0x21')]);});});}function insertAdditionalPhones(_0x309a87){return new Promise(function(_0x183a95,_0x506f40){var _0x5223c3=_0x309a87['AdditionalPhones'];if(_['isNil'](_0x5223c3))_0x506f40({'val':0x0});else{var _0x1aec4f=_0x5223c3['split'](';');var _0x3f7340=[];orderBy=0x0;for(var _0x28aacb=0x0;_0x28aacb<_0x1aec4f[_0x1e51('0x1a')];_0x28aacb++){_0x3f7340[_0x1e51('0x1d')](splitAdditionalPhone(_0x309a87['id'],_0x1aec4f[_0x28aacb]));}Promise[_0x1e51('0x1e')](_0x3f7340)[_0x1e51('0x22')](function(){_0x183a95({'val':_0x1aec4f[_0x1e51('0x1a')]});});}});}function splitAdditionalPhone(_0x461d3d,_0x4bcdd3){return new Promise(function(_0x4d04c0,_0x43f5c5){var _0xdf6c02=_0x4bcdd3[_0x1e51('0x23')](':');var _0x1386db=_0xdf6c02[0x0];var _0x505d79=_0xdf6c02[0x1];if(_0x505d79!==''){var _0x54d031=_0x505d79['split']('|');var _0x1eb83f=[];for(var _0x2a1561=0x0;_0x2a1561<_0x54d031[_0x1e51('0x1a')];_0x2a1561++){if(_0x54d031[_0x2a1561]!==''){var _0x5412bc=_[_0x1e51('0x24')](promisesAdditionalPhones,{'contactId':_0x461d3d,'phone':_0x54d031[_0x2a1561]});if(_0x5412bc['length']==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x461d3d,'contactTypeId':_0x1386db,'phone':_0x54d031[_0x2a1561],'orderBy':orderBy});}}}_0x4d04c0({'ok':0x1});}else _0x4d04c0({'res':0x0});});}function createAdditionalPhone(_0x3349f0,_0x5c5bbd,_0x170ec6,_0x1eb79f){var _0x56722f='';var _0x3e6ef2='';var _0x10ee23=_0x170ec6[_0x1e51('0x23')]('§');_0x56722f=_0x10ee23[0x0];if(_0x10ee23[_0x1e51('0x1a')]==0x2)_0x3e6ef2=_0x10ee23[0x1];return new Promise(function(_0x52538c,_0x4cf046){return db['CmContactHasItem'][_0x1e51('0x25')]({'where':{'CmContactId':_0x3349f0,'item':_0x56722f}})[_0x1e51('0x22')](function(_0x1ba84a){if(_0x1ba84a){return db[_0x1e51('0x26')][_0x1e51('0x27')]({'ItemTypeId':_0x5c5bbd,'description':_0x3e6ef2,'OrderBy':_0x1eb79f},{'where':{'CmContactId':_0x3349f0,'item':_0x56722f}})[_0x1e51('0x22')](function(_0x378206){_0x52538c({'res':_0x1e51('0x28')});});}else{return db[_0x1e51('0x26')][_0x1e51('0x29')]({'CmContactId':_0x3349f0,'item':_0x56722f,'ItemTypeId':_0x5c5bbd,'description':_0x3e6ef2,'OrderBy':_0x1eb79f,'ItemClass':_0x1e51('0x2a')})['then'](function(_0x29adbf){_0x52538c({'res':_0x1e51('0x2b')});});}});});}function updateContact(_0x92707a){return new Promise(function(_0x12da89,_0xcf6b2){var _0x5e4869=_0x92707a['id'];delete _0x92707a['id'];return db[_0x1e51('0x2c')]['update'](_0x92707a,{'where':{'id':_0x5e4869}})[_0x1e51('0x22')](function(_0x3fb57e){updatedRows+=0x1;return db[_0x1e51('0x2d')]['update']({'phone':_0x92707a[_0x1e51('0x10')]},{'where':{'ContactId':_0x5e4869}})['then'](function(_0x247de2){_0x12da89({'ret':'OK'});});});});}function insertCmHopper(_0x4e0187,_0x47fb59,_0x463afa,_0x26e902,_0x45313e){var _0x56783a=[_0x1e51('0x2e'),'cm_contacts.scheduledat',_0x1e51('0x2f'),_0x1e51('0x30'),_0x47fb59+'.'+_0x26e902,'cm_contacts.createdAt',_0x1e51('0x31'),_0x1e51('0x32'),_0x1e51('0x33'),'\x22'+_0x45313e+'\x22'];return squel[_0x1e51('0x34')]()[_0x1e51('0x35')](_0x1e51('0x36'))['fromQuery'](['phone',_0x1e51('0x37'),'ContactId',_0x1e51('0x38'),_0x26e902,_0x1e51('0x39'),_0x1e51('0x3a'),_0x1e51('0x3b'),_0x1e51('0x3c'),_0x1e51('0x3d')],squel[_0x1e51('0xe')]()[_0x1e51('0x3e')](_0x56783a)[_0x1e51('0x11')](_0x47fb59)[_0x1e51('0x16')](_0x1e51('0x3f'),null,'cm_contacts.ListId\x20=\x20'+_0x47fb59+_0x1e51('0x40'))['join'](_0x463afa,null,_0x463afa+_0x1e51('0x12')+_0x47fb59+'.'+_0x26e902)[_0x1e51('0x13')](_0x47fb59+_0x1e51('0x41'),_0x4e0187)[_0x1e51('0x13')](_0x1e51('0x42'),NOW)[_0x1e51('0x13')](_0x1e51('0x43'),selectNotIn(_0x47fb59,_0x463afa,_0x26e902,_0x1e51('0x36'),[_0x1e51('0x44'),_0x1e51('0x45')]))[_0x1e51('0x13')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x47fb59,_0x463afa,_0x26e902,'cm_hopper',[_0x1e51('0x44')])))[_0x1e51('0x46')]();}function insertCmHopperBlack(_0x3be495,_0x4650e4,_0x1ef3d3,_0x1a9e0d){var _0x25592c=[_0x1e51('0x2e'),'cm_contacts.id',_0x1e51('0x30'),_0x4650e4+'.'+_0x1a9e0d,_0x1e51('0x47'),_0x1e51('0x31')];return squel[_0x1e51('0x34')]()[_0x1e51('0x35')](_0x1e51('0x48'))[_0x1e51('0x49')](['phone',_0x1e51('0x4a'),_0x1e51('0x38'),_0x1a9e0d,'createdAt',_0x1e51('0x3a')],squel[_0x1e51('0xe')]()[_0x1e51('0x3e')](_0x25592c)['from'](_0x4650e4)[_0x1e51('0x16')](_0x1e51('0x3f'),null,_0x1e51('0x4b')+_0x4650e4+_0x1e51('0x40'))[_0x1e51('0x16')](_0x1ef3d3,null,_0x1ef3d3+_0x1e51('0x12')+_0x4650e4+'.'+_0x1a9e0d)[_0x1e51('0x13')](_0x4650e4+_0x1e51('0x41'),_0x3be495)[_0x1e51('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x1e51('0x13')](_0x1e51('0x43'),squel['select']()[_0x1e51('0xf')](_0x1e51('0x10'))[_0x1e51('0x11')]('cm_hopper_black')[_0x1e51('0x13')](_0x1e51('0x4c'),_0x3be495)[_0x1e51('0x13')](_0x1a9e0d+'\x20=\x20?',_0x4650e4+'.'+_0x1a9e0d)))[_0x1e51('0x46')]();}function insertCmHopperAdditionalPhones(_0x52e7da){var _0x581f7a=['cm_hopper.id',_0x1e51('0x4d'),_0x1e51('0x4e'),'cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt'];return squel[_0x1e51('0x34')]()[_0x1e51('0x35')](_0x1e51('0x4f'))[_0x1e51('0x49')]([_0x1e51('0x50'),_0x1e51('0x10'),'OrderBy',_0x1e51('0x39'),'updatedAt'],squel[_0x1e51('0xe')]()[_0x1e51('0x3e')](_0x581f7a)['from']('cm_hopper')['join'](_0x1e51('0x3f'),null,_0x1e51('0x51'))[_0x1e51('0x16')]('cm_contact_has_items',null,_0x1e51('0x52'))[_0x1e51('0x13')](_0x1e51('0x53'),_0x52e7da)[_0x1e51('0x13')](_0x1e51('0x42'),NOW))[_0x1e51('0x46')]();}function insertCmContact(_0x32fe1f,_0x2ca91f,_0x5b64f6,_0x37eb4d){var _0x7c5f61=_[_0x1e51('0x54')](_[_0x1e51('0x55')](_0x37eb4d),[_0x1e51('0x38'),_0x1e51('0x56'),'createdAt',_0x1e51('0x3a')]);return squel['insert']()['into']('cm_contacts')[_0x1e51('0x49')](_0x7c5f61,squel[_0x1e51('0xe')]()[_0x1e51('0x3e')](_0x7c5f61)['from'](_0x2ca91f)[_0x1e51('0x13')]('('+_0x5b64f6[_0x1e51('0x16')](',')+_0x1e51('0x57'),squel['select']()[_0x1e51('0x3e')](_0x5b64f6)[_0x1e51('0x11')](_0x1e51('0x3f'))['where'](_0x1e51('0x4c'),_0x32fe1f))[_0x1e51('0x13')](_0x1e51('0x58'),squel[_0x1e51('0xe')]()[_0x1e51('0xf')](_0x1e51('0x59'),_0x1e51('0x5a'))[_0x1e51('0x11')](_0x2ca91f)['group'](_0x5b64f6[_0x1e51('0x16')](','))))[_0x1e51('0x46')]();}function handleStop(){logger['info']('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x577b19){logger[_0x1e51('0x20')](_0x577b19[_0x1e51('0x21')]);process[_0x1e51('0x5b')](0x1);}function handleError(_0x3bdf55,_0x18e9d1){stats[_0x1e51('0x5c')][_0x1e51('0x1d')]({'name':_0x18e9d1[_0x1e51('0x5d')],'message':_0x18e9d1[_0x1e51('0x21')],'row':_0x3bdf55});}function handleQuery(_0x47a961){logger['info'](_0x47a961);return db['sequelize'][_0x1e51('0x18')](_0x47a961)[_0x1e51('0x19')](function(_0x50c202){results['push'](_0x50c202);})[_0x1e51('0x1f')](function(_0x114657){logger['error'](_0x114657[_0x1e51('0x21')]);});}function main(_0x1fc8a9,_0x4550a8,_0x3e4073,_0x1cf3a3){logger[_0x1e51('0x5e')](_0x1e51('0x5f'),_0x1fc8a9,JSON[_0x1e51('0x60')](_0x4550a8));process[_0x1e51('0x61')](_0x1e51('0x62'));var _0x486ebd=_0x4550a8[_0x1e51('0x63')];var _0x2f5bf1=_[_0x1e51('0x64')](_0x486ebd);var _0x402bbd=_0x4550a8[_0x1e51('0x65')];var _0x224dbc=path['join'](config['root'],_0x1e51('0x66'),_0x402bbd+_0x1e51('0x67'));logger[_0x1e51('0x5e')](_0x1e51('0x68'),_0x4550a8);db['ContactItemType']['findAll']({'raw':!![],'attributes':['id','name']})[_0x1e51('0x22')](function(_0x2af7d5){for(var _0x100126=0x0;_0x100126<_0x2af7d5[_0x1e51('0x1a')];_0x100126++){if(_0x2af7d5[_0x100126][_0x1e51('0x69')]in _0x486ebd){contactItemTypes['push'](_0x2af7d5[_0x100126]);delete _0x2f5bf1[_0x2af7d5[_0x100126][_0x1e51('0x69')]];hasAdditionalPhones=!![];}for(var _0x3f9cea in _0x486ebd){if(_0x2af7d5[_0x100126][_0x1e51('0x69')]+'_description'===_0x3f9cea){phoneDescriptions[_0x1e51('0x1d')]({'itemTypeId':_0x2af7d5[_0x100126]['id'],'description':_0x3f9cea});delete _0x2f5bf1[_0x3f9cea];}}}if(hasAdditionalPhones)_0x2f5bf1[_0x1e51('0x1c')]='';var _0x45e607=_['keys'](_0x2f5bf1)[_0x1e51('0x16')]();logger[_0x1e51('0x5e')]('header',_0x45e607);fs['writeFileSync'](_0x224dbc,_0x45e607+'\x0a');Papa[_0x1e51('0x6a')](fs['createReadStream'](_0x1fc8a9),{'header':!![],'skipEmptyLines':!![],'step':function(_0x4464bf,_0x4cd38b){try{for(var _0x17a9fd=0x0,_0xe1cfa0=[];_0x17a9fd<_0x4464bf[_0x1e51('0x6b')][_0x1e51('0x1a')];_0x17a9fd++){stats['rows']+=0x1;if(_0x4464bf[_0x1e51('0x5c')][_0x17a9fd]){handleError(_0x4464bf['data'][_0x17a9fd],_0x4464bf['errors'][_0x17a9fd]);}else{var _0xa31c12=[];var _0x34ae65=[];var _0x4aa76d={};for(var _0x4e69b5 in _0x486ebd){let _0x1fc580=contactItemTypes[_0x1e51('0x6c')](_0x15f15b=>_0x15f15b[_0x1e51('0x69')]===_0x4e69b5);let _0x5b76ae=contactItemTypes[_0x1e51('0x6c')](_0x5ef17b=>_0x5ef17b['name']+_0x1e51('0x6d')===_0x4e69b5);if(_['isNil'](_0x1fc580)&&_[_0x1e51('0x1b')](_0x5b76ae)){if(_0x486ebd['hasOwnProperty'](_0x4e69b5)){if(_0x4464bf[_0x1e51('0x6b')][_0x17a9fd][_0x486ebd[_0x4e69b5]]){var _0x4e3460=_[_0x1e51('0x6e')](_0x4464bf[_0x1e51('0x6b')][_0x17a9fd][_0x486ebd[_0x4e69b5]]['replace'](/"/g,'\x27'));switch(_0x4e69b5){case _0x1e51('0x37'):var _0x51cbce=moment(_0x4e3460,_0x1e51('0x6f'),!![]);if(_0x51cbce[_0x1e51('0x70')]()){_0xe1cfa0[_0x1e51('0x1d')]('\x22'+_0x4e3460+'\x22');}else{_0xa31c12[_0x1e51('0x1d')](_0x1e51('0x71'));}break;case _0x1e51('0x3b'):var _0x5428f4=parseInt(_0x4e3460);_0x4e3460=_[_0x1e51('0x72')](_0x5428f4)||_0x5428f4<0x0||_0x5428f4>0x4?_0x1cf3a3?0x3:0x2:_0x5428f4;_0xe1cfa0['push']('\x22'+_0x4e3460+'\x22');break;case'UserId':var _0x23068f=parseInt(_0x4e3460);if(_[_0x1e51('0x73')](_0x23068f)&&_[_0x1e51('0x74')](_0x3e4073,_0x23068f)){_0xe1cfa0[_0x1e51('0x1d')]('\x22'+_0x23068f+'\x22');}else{_0xa31c12[_0x1e51('0x1d')](_0x1e51('0x75'));}break;case _0x1e51('0x76'):if(isEmail(_0x4e3460)){_0xe1cfa0['push']('\x22'+_0x4e3460+'\x22');}else{_0xa31c12[_0x1e51('0x1d')](_0x1e51('0x77'));}break;case _0x1e51('0x78'):var _0x4c6920=moment(_0x4e3460,'YYYY-MM-DD',!![]);if(_0x4c6920[_0x1e51('0x70')]()){_0xe1cfa0[_0x1e51('0x1d')]('\x22'+_0x4e3460+'\x22');}else{_0xa31c12['push'](_0x1e51('0x79'));}break;default:_0xe1cfa0[_0x1e51('0x1d')]('\x22'+_0x4e3460+'\x22');}}else{switch(_0x4e69b5){case'firstName':case'phone':_0xa31c12[_0x1e51('0x1d')](_0x4e69b5+_0x1e51('0x7a'));break;default:_0xe1cfa0[_0x1e51('0x1d')]('\x22\x22');}}}}else{var _0x1d6a02='';if(!_[_0x1e51('0x1b')](_0x1fc580)){if(!_0x4aa76d[_0x1e51('0x7b')](_0x1fc580['id'])){for(var _0x3718d9=0x0;_0x3718d9<_0x486ebd[_0x4e69b5]['length'];_0x3718d9++){var _0x4e3460=_[_0x1e51('0x6e')](_0x4464bf[_0x1e51('0x6b')][_0x17a9fd][_0x486ebd[_0x4e69b5][_0x3718d9]]['replace'](/"/g,'\x27'));var _0x17e98b=phoneDescriptions[_0x1e51('0x6c')](_0x49ca77=>_0x49ca77[_0x1e51('0x7c')]===_0x1fc580['id']);if(!_['isNil'](_0x17e98b)){var _0x34b98f=_['trim'](_0x4464bf['data'][_0x17a9fd][_0x486ebd[_0x17e98b['description']][0x0]]['replace'](/"/g,'\x27'));if(!_['isNil'](_0x34b98f))_0x4e3460=_0x4e3460+'§'+_0x34b98f;}if(_0x1d6a02=='')_0x1d6a02=_0x4e3460;else _0x1d6a02+='|'+_0x4e3460;}_0x34ae65['push'](_0x1fc580['id']+':'+_0x1d6a02);_0x4aa76d[_0x1fc580['id']]=0x1;}}}}if(hasAdditionalPhones){_0xe1cfa0[_0x1e51('0x1d')]('\x22'+_0x34ae65['join'](';')+'\x22');}if(_0xa31c12[_0x1e51('0x1a')]){handleError(_0x4464bf['data'][_0x17a9fd],{'code':_0x1e51('0x7d'),'message':_0xa31c12[_0x1e51('0x16')]()});}else{fs[_0x1e51('0x7e')](_0x224dbc,_0xe1cfa0['join']()+'\x0a');}_0xe1cfa0=[];}if(!(stats[_0x1e51('0x7f')]%0xc8)){socket[_0x1e51('0x80')]('contact:import:'+_0x402bbd,stats);stats[_0x1e51('0x5c')]=[];}}if(stopped){logger['info'](_0x1e51('0x81'));_0x4cd38b['abort']();}}catch(_0x2b4b49){handleError(_0x4464bf[_0x1e51('0x6b')][_0x17a9fd],{'code':_0x1e51('0x82'),'message':_0x2b4b49[_0x1e51('0x21')]});logger[_0x1e51('0x20')](_0x1e51('0x83'),_0x2b4b49['message']);}},'complete':function(){try{var _0x1adca7=[];var _0x50a248=tempTableName;_0x1adca7[_0x1e51('0x1d')](_0x1e51('0x84')+_0x50a248+_0x1e51('0x85'));logger[_0x1e51('0x5e')]('CIS\x20len',contactItemTypes['length']);var _0x4d2b67=util[_0x1e51('0xb')](_0x1e51('0x86'),_0x224dbc,_0x50a248,_0x45e607,_0x4550a8[_0x1e51('0x38')],_0x4550a8[_0x1e51('0x56')]||null,NOW,NOW);if(_['isNil'](_0x486ebd[_0x1e51('0x37')])){_0x4d2b67+=',\x20scheduledAt\x20=\x20NOW()';}_0x1adca7[_0x1e51('0x1d')](_0x4d2b67);BPromise['each'](_0x1adca7,handleQuery)['then'](function(_0xad2923){BPromise[_0x1e51('0x1e')]([handleAdditionalPhones()])['then'](function(){_0x1adca7=[];for(var _0x315f2f=0x0;_0x315f2f<promisesContact['length'];_0x315f2f++){_0x1adca7[_0x1e51('0x1d')](updateContact(promisesContact[_0x315f2f]['contact']));}BPromise[_0x1e51('0x1e')](_0x1adca7)[_0x1e51('0x22')](function(){_0x1adca7=[];for(var _0x5767d6=0x0;_0x5767d6<promisesAdditionalPhones[_0x1e51('0x1a')];_0x5767d6++){_0x1adca7['push'](createAdditionalPhone(promisesAdditionalPhones[_0x5767d6][_0x1e51('0x87')],promisesAdditionalPhones[_0x5767d6][_0x1e51('0x88')],promisesAdditionalPhones[_0x5767d6][_0x1e51('0x10')],promisesAdditionalPhones[_0x5767d6][_0x1e51('0x89')]));}BPromise['all'](_0x1adca7)[_0x1e51('0x22')](function(){_0x1adca7=[];_0x1adca7[_0x1e51('0x1d')](insertCmHopperAdditionalPhones(_0x4550a8[_0x1e51('0x38')]));_0x1adca7['push']('DROP\x20TABLE\x20'+_0x50a248+';');BPromise[_0x1e51('0x8a')](_0x1adca7,handleQuery)[_0x1e51('0x22')](function(_0x1b13cb){stats['finish']=!![];stats['affectedRows']=updatedRows;socket['emit'](_0x1e51('0x8b')+_0x402bbd,stats);fs[_0x1e51('0x8c')](_0x1fc8a9);fs[_0x1e51('0x8c')](_0x224dbc);process['exit'](0x0);})[_0x1e51('0x1f')](function(_0x1132a5){logger['error'](_0x1132a5[_0x1e51('0x21')]);process[_0x1e51('0x5b')](0x1);});});});});})[_0x1e51('0x1f')](function(_0x4af474){logger[_0x1e51('0x20')](_0x4af474['message']);process[_0x1e51('0x5b')](0x1);});}catch(_0x2c84a3){logger[_0x1e51('0x20')](_0x1e51('0x8d'),_0x2c84a3[_0x1e51('0x21')]);process[_0x1e51('0x5b')](0x1);}},'error':function(_0x37f26c,_0xa3225a,_0x10370b,_0x5a6e2f){throw new Error(_0x5a6e2f);}});});}function validate(){if(process[_0x1e51('0x8e')]&&process['argv'][_0x1e51('0x1a')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x4042f4=path[_0x1e51('0x16')](config[_0x1e51('0x8f')],_0x1e51('0x66'),process[_0x1e51('0x8e')][0x2]);if(!fs[_0x1e51('0x90')](_0x4042f4)){throw new Error(_0x1e51('0x91'));}var _0x40db71={};try{_0x40db71=JSON[_0x1e51('0x6a')](process['argv'][0x3]);if(!_0x40db71[_0x1e51('0x63')]){throw new Error(_0x1e51('0x92'));}var _0x458a18=0x0;if(_0x40db71['binding'][_0x1e51('0x3c')]){_0x458a18=0x1;}if(!_0x40db71[_0x1e51('0x38')]){throw new Error(_0x1e51('0x93'));}}catch(_0x4944f5){throw new Error(_0x1e51('0x94'));}var _0x5c1903=[];try{_0x5c1903=_[_0x1e51('0x95')](JSON[_0x1e51('0x6a')](process[_0x1e51('0x8e')][0x4]),'id');}catch(_0x4dbfae){logger['info'](_0x1e51('0x96'));}main(_0x4042f4,_0x40db71,_0x5c1903,_0x458a18);}validate();process['on']('SIGINT',handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
index 4af5c55..96a273b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3de=['duration','Billable\x20Time','billableseconds','string','toLowerCase','voice','push','queue','calleridnum','outbound','Outbound\x20Call','getDescriptions','inbound','***\x20Call\x20Info\x20***','variable','keyValue','Caller\x20Name','calleridname','Call\x20To','UniqueId','uniqueid','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Number','destcalleridnum','Agent\x20Ring','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','Hold\x20Time','Talk\x20Time','talktime','Member\x20Name','membername','Date','starttime','***\x20Time\x20Info\x20***','answertime','Complete\x20Time','endtime','Duration'];(function(_0x160176,_0x30ebb7){var _0x54794d=function(_0x465e5d){while(--_0x465e5d){_0x160176['push'](_0x160176['shift']());}};_0x54794d(++_0x30ebb7);}(_0xa3de,0x163));var _0xea3d=function(_0x13b330,_0x297092){_0x13b330=_0x13b330-0x0;var _0x1f666c=_0xa3de[_0x13b330];return _0x1f666c;};'use strict';exports['getSubjects']=function(_0x3e3fce,_0x1329a4){var _0x1ca087=[{'type':_0xea3d('0x0'),'content':'[xCALLY\x20Ticket]','variableName':null}];switch(_0x3e3fce[_0xea3d('0x1')]()){case _0xea3d('0x2'):switch(_0x1329a4['toLowerCase']()){case'inbound':_0x1ca087[_0xea3d('0x3')]({'type':'variable','content':'','variableName':_0xea3d('0x4')});_0x1ca087['push']({'type':'variable','content':'','variableName':_0xea3d('0x5')});break;case _0xea3d('0x6'):_0x1ca087[_0xea3d('0x3')]({'type':_0xea3d('0x0'),'content':_0xea3d('0x7'),'variableName':null});_0x1ca087['push']({'type':'variable','content':'','variableName':'destcalleridnum'});break;}}return _0x1ca087;};exports[_0xea3d('0x8')]=function(_0xa8824c,_0x66220c){var _0x30f96e=[];switch(_0xa8824c[_0xea3d('0x1')]()){case _0xea3d('0x2'):switch(_0x66220c[_0xea3d('0x1')]()){case _0xea3d('0x9'):_0x30f96e=[{'type':_0xea3d('0x0'),'content':_0xea3d('0xa'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':'Caller\x20Number','keyType':_0xea3d('0xb'),'variableName':_0xea3d('0x5')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0xd'),'keyType':'variable','variableName':_0xea3d('0xe')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0xf'),'keyType':_0xea3d('0xb'),'variableName':'destexten'},{'type':_0xea3d('0xc'),'content':'','key':'Queue','keyType':_0xea3d('0xb'),'variableName':_0xea3d('0x4')},{'type':'keyValue','content':'','key':_0xea3d('0x10'),'keyType':_0xea3d('0xb'),'variableName':_0xea3d('0x11')},{'type':_0xea3d('0xc'),'content':'','key':'Date','keyType':_0xea3d('0xb'),'variableName':_0xea3d('0x12')},{'type':_0xea3d('0x0'),'content':_0xea3d('0x13'),'key':null,'keyType':null,'variableName':null},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x14'),'keyType':_0xea3d('0xb'),'variableName':_0xea3d('0x15')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x16'),'keyType':_0xea3d('0xb'),'variableName':_0xea3d('0x17')},{'type':_0xea3d('0x0'),'content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x18'),'keyType':'variable','variableName':_0xea3d('0x12')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x19'),'keyType':_0xea3d('0xb'),'variableName':_0xea3d('0x1a')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x1b'),'keyType':'variable','variableName':_0xea3d('0x1c')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x1d'),'keyType':_0xea3d('0xb'),'variableName':'holdtime'},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x1e'),'keyType':_0xea3d('0xb'),'variableName':_0xea3d('0x1f')}];break;case _0xea3d('0x6'):_0x30f96e=[{'type':'string','content':'***\x20Call\x20Info\x20***','variableName':null},{'type':_0xea3d('0xc'),'content':'','key':'Called\x20Number','keyType':_0xea3d('0xb'),'keyContent':'','variableName':_0xea3d('0x17')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x20'),'keyType':'variable','keyContent':'','variableName':_0xea3d('0x21')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x10'),'keyType':_0xea3d('0xb'),'keyContent':'','variableName':_0xea3d('0x11')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x22'),'keyType':_0xea3d('0xb'),'keyContent':'','variableName':_0xea3d('0x23')},{'type':_0xea3d('0x0'),'content':_0xea3d('0x24')},{'type':_0xea3d('0xc'),'content':'','key':'Answer\x20Time','keyType':_0xea3d('0xb'),'keyContent':'','variableName':_0xea3d('0x25')},{'type':'keyValue','content':'','key':_0xea3d('0x26'),'keyType':_0xea3d('0xb'),'keyContent':'','variableName':_0xea3d('0x27')},{'type':_0xea3d('0xc'),'content':'','key':_0xea3d('0x28'),'keyType':'variable','keyContent':'','variableName':_0xea3d('0x29')},{'type':'keyValue','content':'','key':_0xea3d('0x2a'),'keyType':_0xea3d('0xb'),'keyContent':'','variableName':_0xea3d('0x2b')}];break;}}return _0x30f96e;};
\ No newline at end of file
+var _0x83ce=['agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','***\x20Time\x20Info\x20***','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','talktime','Called\x20Number','membername','Date','starttime','answertime','endtime','Duration','duration','Billable\x20Time','billableseconds','getSubjects','[xCALLY\x20Ticket]','toLowerCase','inbound','push','variable','queue','calleridnum','outbound','string','destcalleridnum','getDescriptions','voice','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','calleridname','Call\x20To','destexten','Queue','UniqueId','uniqueid'];(function(_0x19d828,_0x2439ce){var _0x25b133=function(_0x5214a8){while(--_0x5214a8){_0x19d828['push'](_0x19d828['shift']());}};_0x25b133(++_0x2439ce);}(_0x83ce,0xf7));var _0xe83c=function(_0x1ee48f,_0x2b0b2d){_0x1ee48f=_0x1ee48f-0x0;var _0xd58a5f=_0x83ce[_0x1ee48f];return _0xd58a5f;};'use strict';exports[_0xe83c('0x0')]=function(_0x230a3e,_0x32e8cb){var _0x56c9a1=[{'type':'string','content':_0xe83c('0x1'),'variableName':null}];switch(_0x230a3e[_0xe83c('0x2')]()){case'voice':switch(_0x32e8cb[_0xe83c('0x2')]()){case _0xe83c('0x3'):_0x56c9a1[_0xe83c('0x4')]({'type':_0xe83c('0x5'),'content':'','variableName':_0xe83c('0x6')});_0x56c9a1[_0xe83c('0x4')]({'type':_0xe83c('0x5'),'content':'','variableName':_0xe83c('0x7')});break;case _0xe83c('0x8'):_0x56c9a1['push']({'type':_0xe83c('0x9'),'content':'Outbound\x20Call','variableName':null});_0x56c9a1['push']({'type':_0xe83c('0x5'),'content':'','variableName':_0xe83c('0xa')});break;}}return _0x56c9a1;};exports[_0xe83c('0xb')]=function(_0x15ad4c,_0x254c3e){var _0x4c0e32=[];switch(_0x15ad4c['toLowerCase']()){case _0xe83c('0xc'):switch(_0x254c3e[_0xe83c('0x2')]()){case'inbound':_0x4c0e32=[{'type':_0xe83c('0x9'),'content':_0xe83c('0xd'),'key':null,'keyType':null,'variableName':null},{'type':_0xe83c('0xe'),'content':'','key':_0xe83c('0xf'),'keyType':_0xe83c('0x5'),'variableName':_0xe83c('0x7')},{'type':_0xe83c('0xe'),'content':'','key':_0xe83c('0x10'),'keyType':_0xe83c('0x5'),'variableName':_0xe83c('0x11')},{'type':_0xe83c('0xe'),'content':'','key':_0xe83c('0x12'),'keyType':_0xe83c('0x5'),'variableName':_0xe83c('0x13')},{'type':'keyValue','content':'','key':_0xe83c('0x14'),'keyType':_0xe83c('0x5'),'variableName':_0xe83c('0x6')},{'type':'keyValue','content':'','key':_0xe83c('0x15'),'keyType':'variable','variableName':_0xe83c('0x16')},{'type':_0xe83c('0xe'),'content':'','key':'Date','keyType':_0xe83c('0x5'),'variableName':_0xe83c('0x17')},{'type':_0xe83c('0x9'),'content':_0xe83c('0x18'),'key':null,'keyType':null,'variableName':null},{'type':_0xe83c('0xe'),'content':'','key':_0xe83c('0x19'),'keyType':_0xe83c('0x5'),'variableName':_0xe83c('0x1a')},{'type':_0xe83c('0xe'),'content':'','key':'Agent\x20Number','keyType':_0xe83c('0x5'),'variableName':_0xe83c('0xa')},{'type':_0xe83c('0x9'),'content':_0xe83c('0x1b'),'key':null,'keyType':null,'variableName':null},{'type':_0xe83c('0xe'),'content':'','key':'Agent\x20Ring','keyType':_0xe83c('0x5'),'variableName':_0xe83c('0x17')},{'type':'keyValue','content':'','key':_0xe83c('0x1c'),'keyType':_0xe83c('0x5'),'variableName':_0xe83c('0x1d')},{'type':_0xe83c('0xe'),'content':'','key':_0xe83c('0x1e'),'keyType':'variable','variableName':_0xe83c('0x1f')},{'type':_0xe83c('0xe'),'content':'','key':_0xe83c('0x20'),'keyType':'variable','variableName':_0xe83c('0x21')},{'type':'keyValue','content':'','key':'Talk\x20Time','keyType':'variable','variableName':_0xe83c('0x22')}];break;case _0xe83c('0x8'):_0x4c0e32=[{'type':'string','content':_0xe83c('0xd'),'variableName':null},{'type':'keyValue','content':'','key':_0xe83c('0x23'),'keyType':_0xe83c('0x5'),'keyContent':'','variableName':_0xe83c('0xa')},{'type':_0xe83c('0xe'),'content':'','key':'Member\x20Name','keyType':_0xe83c('0x5'),'keyContent':'','variableName':_0xe83c('0x24')},{'type':_0xe83c('0xe'),'content':'','key':_0xe83c('0x15'),'keyType':_0xe83c('0x5'),'keyContent':'','variableName':_0xe83c('0x16')},{'type':'keyValue','content':'','key':_0xe83c('0x25'),'keyType':'variable','keyContent':'','variableName':_0xe83c('0x26')},{'type':'string','content':_0xe83c('0x1b')},{'type':_0xe83c('0xe'),'content':'','key':'Answer\x20Time','keyType':'variable','keyContent':'','variableName':_0xe83c('0x27')},{'type':'keyValue','content':'','key':'Complete\x20Time','keyType':'variable','keyContent':'','variableName':_0xe83c('0x28')},{'type':_0xe83c('0xe'),'content':'','key':_0xe83c('0x29'),'keyType':_0xe83c('0x5'),'keyContent':'','variableName':_0xe83c('0x2a')},{'type':_0xe83c('0xe'),'content':'','key':_0xe83c('0x2b'),'keyType':_0xe83c('0x5'),'keyContent':'','variableName':_0xe83c('0x2c')}];break;}}return _0x4c0e32;};
\ No newline at end of file
index 25f5f16..6013e9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc23=['user','tags','group','i.id','tag','countFilteredInteractions','count','length','having','clause','order','contactName','closed','getClosedOrderClause','DESC','getFilteredInteractions','rows','catch','tracked','query','omit','html','mobile','updateUser','lodash','./sql-utils','findAll','skipInteractionsQuery','resolve','then','search','parseAdvancedSearchFilter','parseQueryParameters','where','body','fields','filter'];(function(_0x39a71e,_0x128d6c){var _0x1d62fb=function(_0x5206a0){while(--_0x5206a0){_0x39a71e['push'](_0x39a71e['shift']());}};_0x1d62fb(++_0x128d6c);}(_0xbc23,0x11b));var _0x3bc2=function(_0x557132,_0x3650c9){_0x557132=_0x557132-0x0;var _0x4cf7e1=_0xbc23[_0x557132];return _0x4cf7e1;};'use strict';var _=require(_0x3bc2('0x0'));var sqlUtils=require(_0x3bc2('0x1'));var utils=require('./utils');exports[_0x3bc2('0x2')]=function(_0xd0066e,_0x2c70e9,_0x358623,_0x3adfb0,_0x476929){var _0x15f2b2={'count':0x0,'rows':[]};var _0x2bcc1d=sqlUtils[_0x3bc2('0x3')](_0xd0066e,_0x358623,_0x2c70e9);if(_0x2bcc1d){return Promise[_0x3bc2('0x4')](_0x15f2b2);}var _0x47e255=sqlUtils['getInteractionsQuery'](_0xd0066e);var _0xd77a={};return Promise['resolve']()[_0x3bc2('0x5')](function(){if(_0x2c70e9[_0x3bc2('0x6')]){return sqlUtils[_0x3bc2('0x7')](_0x2c70e9[_0x3bc2('0x6')],_0x476929);}else{return sqlUtils[_0x3bc2('0x8')](_0xd0066e,_0x2c70e9,_0x476929);}})[_0x3bc2('0x5')](function(_0x32dcc7){_0x47e255[_0x3bc2('0x9')](_0x32dcc7[_0x3bc2('0xa')]);_0x47e255[_0x3bc2('0x9')](_0x32dcc7['contact']);_0x47e255[_0x3bc2('0x9')](_0x32dcc7['default']);_0x47e255[_0x3bc2('0x9')](_0x32dcc7[_0x3bc2('0xb')]);_0x47e255[_0x3bc2('0x9')](_0x32dcc7[_0x3bc2('0xc')]);_0x47e255[_0x3bc2('0x9')](_0x32dcc7[_0x3bc2('0xd')]);_0x47e255['having'](_0x32dcc7['read']);_0xd77a=_0x32dcc7[_0x3bc2('0xe')];return sqlUtils['checkAccountsRestrictions'](_0xd0066e,_0x358623,_0x2c70e9);})['then'](function(_0x316d93){_0x47e255[_0x3bc2('0x9')](_0x316d93);_0x47e255[_0x3bc2('0xf')](_0x3bc2('0x10'));var _0x255c83=_0x2c70e9[_0x3bc2('0x6')]?_0xd77a['ids']:_0x2c70e9[_0x3bc2('0x11')];return sqlUtils[_0x3bc2('0x12')](_0x47e255,_0x255c83);})[_0x3bc2('0x5')](function(_0x3de586){_0x15f2b2[_0x3bc2('0x13')]=_0x3de586[_0x3bc2('0x14')];if(_0x15f2b2[_0x3bc2('0x13')]===0x0){return[];}_0x47e255[_0x3bc2('0x15')](_0xd77a[_0x3bc2('0x16')]);if(_0x3adfb0[_0x3bc2('0x17')]){_0x3adfb0['order']['forEach'](function(_0xd43dcb){var _0x2b2944=_0xd43dcb[0x0]===_0x3bc2('0x18')?_0xd43dcb[0x0]:'i.'+_0xd43dcb[0x0];_0x47e255[_0x3bc2('0x17')](_0x2b2944,_0xd43dcb[0x1]==='DESC'?![]:!![]);if(_0xd43dcb[0x0]===_0x3bc2('0x19')){var _0x7768a8=sqlUtils[_0x3bc2('0x1a')](_0xd0066e,_0x2c70e9);_0x47e255[_0x3bc2('0x17')](_0x7768a8,_0xd43dcb[0x1]===_0x3bc2('0x1b')?![]:!![]);}});}return sqlUtils[_0x3bc2('0x1c')](_0xd0066e,_0x47e255,_0x2c70e9,_0x3adfb0);})[_0x3bc2('0x5')](function(_0x5edf36){_0x15f2b2[_0x3bc2('0x1d')]=_0x5edf36;return _0x15f2b2;})[_0x3bc2('0x1e')](function(_0x5c85c1){throw _0x5c85c1;});};exports[_0x3bc2('0x1f')]=function(_0x431991,_0x5ba900){return function(_0x6852b3,_0x421680,_0x2ecae2){var _0x51c897=_0x6852b3[_0x3bc2('0xd')];var _0x4f85fc={};var _0x2eaed0=_0x6852b3[_0x3bc2('0x20')];if(_0x4f85fc){_0x4f85fc=_['clone'](_0x6852b3[_0x3bc2('0xa')]);_0x4f85fc=_[_0x3bc2('0x21')](_0x4f85fc,['body',_0x3bc2('0x22'),'phone','fax',_0x3bc2('0x23')]);}utils[_0x3bc2('0x24')](_0x51c897,_0x4f85fc,_0x2eaed0,_0x431991,_0x5ba900);_0x2ecae2(null);};};
\ No newline at end of file
+var _0x8ab8=['read','tags','checkAccountsRestrictions','group','i.id','ids','tag','countFilteredInteractions','count','length','clause','order','forEach','contactName','DESC','closed','getClosedOrderClause','getFilteredInteractions','catch','query','clone','omit','fax','updateUser','lodash','./sql-utils','./utils','findAll','skipInteractionsQuery','resolve','getInteractionsQuery','search','parseAdvancedSearchFilter','parseQueryParameters','then','where','body','contact','default','filter','user','having'];(function(_0x21f8cd,_0x1c1b37){var _0x363aeb=function(_0x35d309){while(--_0x35d309){_0x21f8cd['push'](_0x21f8cd['shift']());}};_0x363aeb(++_0x1c1b37);}(_0x8ab8,0xea));var _0x88ab=function(_0x549d25,_0x3f2dee){_0x549d25=_0x549d25-0x0;var _0x424438=_0x8ab8[_0x549d25];return _0x424438;};'use strict';var _=require(_0x88ab('0x0'));var sqlUtils=require(_0x88ab('0x1'));var utils=require(_0x88ab('0x2'));exports[_0x88ab('0x3')]=function(_0x411507,_0xf060ea,_0x146538,_0x527e64,_0x16a81b){var _0x319b4c={'count':0x0,'rows':[]};var _0x49127a=sqlUtils[_0x88ab('0x4')](_0x411507,_0x146538,_0xf060ea);if(_0x49127a){return Promise[_0x88ab('0x5')](_0x319b4c);}var _0x193f65=sqlUtils[_0x88ab('0x6')](_0x411507);var _0x54fa7f={};return Promise[_0x88ab('0x5')]()['then'](function(){if(_0xf060ea[_0x88ab('0x7')]){return sqlUtils[_0x88ab('0x8')](_0xf060ea[_0x88ab('0x7')],_0x16a81b);}else{return sqlUtils[_0x88ab('0x9')](_0x411507,_0xf060ea,_0x16a81b);}})[_0x88ab('0xa')](function(_0x257173){_0x193f65[_0x88ab('0xb')](_0x257173[_0x88ab('0xc')]);_0x193f65[_0x88ab('0xb')](_0x257173[_0x88ab('0xd')]);_0x193f65[_0x88ab('0xb')](_0x257173[_0x88ab('0xe')]);_0x193f65['where'](_0x257173['fields']);_0x193f65['where'](_0x257173[_0x88ab('0xf')]);_0x193f65[_0x88ab('0xb')](_0x257173[_0x88ab('0x10')]);_0x193f65[_0x88ab('0x11')](_0x257173[_0x88ab('0x12')]);_0x54fa7f=_0x257173[_0x88ab('0x13')];return sqlUtils[_0x88ab('0x14')](_0x411507,_0x146538,_0xf060ea);})[_0x88ab('0xa')](function(_0x49d918){_0x193f65['where'](_0x49d918);_0x193f65[_0x88ab('0x15')](_0x88ab('0x16'));var _0x175081=_0xf060ea[_0x88ab('0x7')]?_0x54fa7f[_0x88ab('0x17')]:_0xf060ea[_0x88ab('0x18')];return sqlUtils[_0x88ab('0x19')](_0x193f65,_0x175081);})[_0x88ab('0xa')](function(_0x23648e){_0x319b4c[_0x88ab('0x1a')]=_0x23648e[_0x88ab('0x1b')];if(_0x319b4c[_0x88ab('0x1a')]===0x0){return[];}_0x193f65['having'](_0x54fa7f[_0x88ab('0x1c')]);if(_0x527e64[_0x88ab('0x1d')]){_0x527e64[_0x88ab('0x1d')][_0x88ab('0x1e')](function(_0x33bae2){var _0x4917fe=_0x33bae2[0x0]===_0x88ab('0x1f')?_0x33bae2[0x0]:'i.'+_0x33bae2[0x0];_0x193f65['order'](_0x4917fe,_0x33bae2[0x1]===_0x88ab('0x20')?![]:!![]);if(_0x33bae2[0x0]===_0x88ab('0x21')){var _0x1a0774=sqlUtils[_0x88ab('0x22')](_0x411507,_0xf060ea);_0x193f65[_0x88ab('0x1d')](_0x1a0774,_0x33bae2[0x1]===_0x88ab('0x20')?![]:!![]);}});}return sqlUtils[_0x88ab('0x23')](_0x411507,_0x193f65,_0xf060ea,_0x527e64);})[_0x88ab('0xa')](function(_0x5db639){_0x319b4c['rows']=_0x5db639;return _0x319b4c;})[_0x88ab('0x24')](function(_0xd65f1){throw _0xd65f1;});};exports['tracked']=function(_0x381daa,_0x533af5){return function(_0x54eb41,_0xb947da,_0x124f6d){var _0x1c6672=_0x54eb41['user'];var _0x4186d2={};var _0x47722d=_0x54eb41[_0x88ab('0x25')];if(_0x4186d2){_0x4186d2=_[_0x88ab('0x26')](_0x54eb41[_0x88ab('0xc')]);_0x4186d2=_[_0x88ab('0x27')](_0x4186d2,[_0x88ab('0xc'),'html','phone',_0x88ab('0x28'),'mobile']);}utils[_0x88ab('0x29')](_0x1c6672,_0x4186d2,_0x47722d,_0x381daa,_0x533af5);_0x124f6d(null);};};
\ No newline at end of file
index 67ff02b..ea412e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c8d=['expr','getSelectedTags','unreadMessages\x20{OPERATOR}\x200','replace','{OPERATOR}','i.id\x20LIKE\x20?','sms','whatsapp','includes','i.phone\x20LIKE\x20?','openchannel','i.from\x20LIKE\x20?','mail','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','fax','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','parseSearch','sqlOperator','find','buildExpression','type','default','text','value','start','end','unreadMessages','read','and','Contact','$substring','split','contact','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','map','tags','ids','User','operator','user','UserId','body','plainBody','some','forEach','concat','createdAt','$lte','null','\x20IS\x20NULL','resolve','then','fields','tag','clause','filter','capitalize','chat','Websites','Accounts','\x20IS\x20NOT\x20NULL','unshift','i.substatus','closed','shift','CONCAT_WS(\x27\x27,\x20','join','Interaction','Sequelize','QueryTypes','sequelize','query','toString','keyBy','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','a.email','Account.email','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20CONCAT(\x27%\x27,\x20a.email,\x20\x27%\x27)\x20THEN\x20TRIM(SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201))\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.id','i.createdAt','i.updatedAt','i.closed','i.lastMsgAt','i.lastMsgDirection','i.subject','i.secondDisposition','i.thirdDisposition','i.to','i.ContactId','i.MailAccountId','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','limit','offset','groupBy','Setting','findOne','enableEmailPreview','all','clone','COUNT(*)','t.id\x20IN\x20?','SELECT','exports','lodash','squel','../parsers/advancedSearch','../parsers/qs','updateInteraction','./utils','../../mysqldb','getAccountFK','role','agent','search','field','name','from','tools_tags','getInteractionFK','user_has_','_interactions','select','u.id','u.fullname','ui.','left_join','users','u.id\x20=\x20ui.UserId','length','where','\x20IN\x20?','getInteractionsTables','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','accounts','a.id\x20=\x20i.','messages','interactionsTags','it.','\x20=\x20i.id','t.id\x20=\x20it.TagId'];(function(_0x2b91c5,_0x3b6db5){var _0xbd5531=function(_0x54783d){while(--_0x54783d){_0x2b91c5['push'](_0x2b91c5['shift']());}};_0xbd5531(++_0x3b6db5);}(_0x4c8d,0x129));var _0xd4c8=function(_0x20d435,_0x1c5415){_0x20d435=_0x20d435-0x0;var _0x54288d=_0x4c8d[_0x20d435];return _0x54288d;};'use strict';var _=require(_0xd4c8('0x0'));var squel=require(_0xd4c8('0x1'));var as=require(_0xd4c8('0x2'));var qs=require(_0xd4c8('0x3'));var updateInteraction=require('./update-interaction')[_0xd4c8('0x4')];var utils=require(_0xd4c8('0x5'));var db=require(_0xd4c8('0x6'))['db'];function skipInteractionsQuery(_0x53caf9,_0x5df974,_0x4c03a0){var _0x450b8e=![];var _0x275bcb=utils[_0xd4c8('0x7')](_0x53caf9);if(_0x5df974[_0xd4c8('0x8')]===_0xd4c8('0x9')&&!_0x4c03a0[_0xd4c8('0xa')]&&!_0x4c03a0[_0x275bcb]){_0x450b8e=!![];}return _0x450b8e;}function getTagsQuery(){return squel['select']()[_0xd4c8('0xb')]('id')['field'](_0xd4c8('0xc'))[_0xd4c8('0xb')]('color')[_0xd4c8('0xd')](_0xd4c8('0xe'));}function getUsersQuery(_0x6cb9ee,_0x28b333){var _0x3edebd=utils[_0xd4c8('0xf')](_0x6cb9ee);var _0x29c2d9=_0xd4c8('0x10')+_0x6cb9ee+_0xd4c8('0x11');var _0x4b67d6=squel[_0xd4c8('0x12')]()['field'](_0xd4c8('0x13'))[_0xd4c8('0xb')](_0xd4c8('0x14'))['field'](_0xd4c8('0x15')+_0x3edebd)['from'](_0x29c2d9,'ui')[_0xd4c8('0x16')](_0xd4c8('0x17'),'u',_0xd4c8('0x18'));if(_0x28b333[_0xd4c8('0x19')]>0x0){_0x4b67d6[_0xd4c8('0x1a')](_0xd4c8('0x15')+_0x3edebd+_0xd4c8('0x1b'),_['map'](_0x28b333,'id'));}return _0x4b67d6;}function getInteractionsQuery(_0x45d604){var _0x2e27d0=utils[_0xd4c8('0x1c')](_0x45d604);var _0x420ffb=utils[_0xd4c8('0x7')](_0x45d604);var _0x5ce9ee=utils['getInteractionFK'](_0x45d604);return squel[_0xd4c8('0x12')]()[_0xd4c8('0xd')](_0x2e27d0['interactions'],'i')['left_join'](_0xd4c8('0x1d'),'c',_0xd4c8('0x1e'))[_0xd4c8('0x16')]('users','o',_0xd4c8('0x1f'))[_0xd4c8('0x16')](_0x2e27d0[_0xd4c8('0x20')],'a',_0xd4c8('0x21')+_0x420ffb)[_0xd4c8('0x16')](_0x2e27d0[_0xd4c8('0x22')],'me','me.'+_0x5ce9ee+'\x20=\x20i.id')[_0xd4c8('0x16')](_0x2e27d0[_0xd4c8('0x23')],'it',_0xd4c8('0x24')+_0x5ce9ee+_0xd4c8('0x25'))[_0xd4c8('0x16')](_0xd4c8('0xe'),'t',_0xd4c8('0x26'));}function getSqlClauses(){var _0xd2cac7={'body':squel['expr'](),'contact':squel[_0xd4c8('0x27')](),'default':squel[_0xd4c8('0x27')](),'fields':squel[_0xd4c8('0x27')](),'filter':squel['expr'](),'read':squel[_0xd4c8('0x27')](),'tags':{'clause':squel['expr'](),'ids':null},'user':squel[_0xd4c8('0x27')]()};return _0xd2cac7;}function parseTagParameter(_0x3d1458){var _0x1d2014=squel[_0xd4c8('0x27')]();if(_0x3d1458){var _0x1d9a64=utils[_0xd4c8('0x28')](_0x3d1458);_0x1d9a64['forEach'](function(_0x7ad81d){_0x1d2014['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x7ad81d+',%');});}return _0x1d2014;}function parseReadParameter(_0x5e2be1){var _0x3a2e1c='';if(_0x5e2be1){_0x3a2e1c=_0xd4c8('0x29');if(_0x5e2be1==='1'){_0x3a2e1c=_0x3a2e1c[_0xd4c8('0x2a')]('{OPERATOR}','=');}else{_0x3a2e1c=_0x3a2e1c[_0xd4c8('0x2a')](_0xd4c8('0x2b'),'>');}}return _0x3a2e1c;}function parseSearchFilter(_0x277db2,_0x246432){var _0x216d7=squel[_0xd4c8('0x27')]();if(_0x246432){var _0x1e3f0d=_0x246432['replace']('\x5c','\x5c\x5c')[_0xd4c8('0x2a')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x1e3f0d)){_0x216d7['or'](_0xd4c8('0x2c'),_0x1e3f0d+'%');if([_0xd4c8('0x2d'),_0xd4c8('0x2e')][_0xd4c8('0x2f')](_0x277db2)){_0x216d7['or'](_0xd4c8('0x30'),_0x1e3f0d+'%');}else if(_0x277db2==='fax'){_0x216d7['or']('i.fax\x20LIKE\x20?',_0x1e3f0d+'%');}else if(_0x277db2===_0xd4c8('0x31')){_0x216d7['or'](_0xd4c8('0x32'),_0x1e3f0d+'%');}}else if(_0x277db2===_0xd4c8('0x33')&&qs[_0xd4c8('0x34')](_0x1e3f0d)){_0x216d7['or'](_0xd4c8('0x35'),_0x1e3f0d+'%');}else{if(_0x277db2===_0xd4c8('0x33')){_0x216d7['or'](_0xd4c8('0x36'),qs[_0xd4c8('0x37')](_0x1e3f0d,!![]))['or'](_0xd4c8('0x38'),qs[_0xd4c8('0x37')](_0x1e3f0d));}else if(_0x277db2!==_0xd4c8('0x39')){_0x216d7['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x1e3f0d));}_0x216d7['or'](_0xd4c8('0x3a'),qs['getFullTextValue'](_0x1e3f0d,!![]),null);}}return _0x216d7;}function parseAdvancedSearchFilter(_0x59133e,_0x1a9d60){var _0x2c5a50=getSqlClauses();var _0x448b19=as[_0xd4c8('0x3b')](_0x59133e);var _0x3f206d=_0x448b19[_0xd4c8('0x3c')];for(var _0x39f61c=0x0;_0x39f61c<_0x448b19['conditions'][_0xd4c8('0x19')];_0x39f61c++){var _0xac7dd=_0x448b19['conditions'][_0x39f61c];var _0x547f38='i';var _0x3c7668=_[_0xd4c8('0x3d')](_0x1a9d60,[_0xd4c8('0xc'),_0xac7dd[_0xd4c8('0xb')]]);if(_0x3c7668){var _0x370a09=as[_0xd4c8('0x3e')](_0x547f38,_0x3c7668[_0xd4c8('0x3f')],_0xac7dd);_0x2c5a50[_0xd4c8('0x40')][_0x3f206d](_0x370a09[_0xd4c8('0x41')],_0x370a09[_0xd4c8('0x42')][_0xd4c8('0x43')],_0x370a09['value'][_0xd4c8('0x44')]);}else{switch(_0xac7dd['field']){case _0xd4c8('0x45'):var _0x1cf534=parseReadParameter(_0xac7dd[_0xd4c8('0x42')]);_0x2c5a50[_0xd4c8('0x46')][_0xd4c8('0x47')](_0x1cf534);break;case _0xd4c8('0x48'):if(_0xac7dd['operator']===_0xd4c8('0x49')){if(_0xac7dd['value'][_0xd4c8('0x4a')]('\x20')[_0xd4c8('0x19')]>0x1){_0x2c5a50[_0xd4c8('0x4b')][_0x3f206d](_0xd4c8('0x3a'),qs[_0xd4c8('0x37')](_0xac7dd[_0xd4c8('0x42')],!![]),null);}else{var _0x6cf6d7='%'+_0xac7dd[_0xd4c8('0x42')]+'%';_0x2c5a50[_0xd4c8('0x4b')][_0x3f206d](_0xd4c8('0x4c'),_0x6cf6d7,_0x6cf6d7,_0x6cf6d7);}}else{_0x3c7668=_[_0xd4c8('0x3d')](_0x1a9d60,[_0xd4c8('0xc'),_0xd4c8('0x4d')]);_0xac7dd[_0xd4c8('0xb')]='ContactId';_0x370a09=as[_0xd4c8('0x3e')](_0x547f38,_0x3c7668[_0xd4c8('0x3f')],_0xac7dd);_0x2c5a50[_0xd4c8('0x4b')][_0x3f206d](_0x370a09[_0xd4c8('0x41')],_0x370a09[_0xd4c8('0x42')][_0xd4c8('0x43')],_0x370a09[_0xd4c8('0x42')][_0xd4c8('0x44')]);}break;case'Tag':var _0x5c5902=_0xac7dd[_0xd4c8('0x42')][_0xd4c8('0x4a')](',')[_0xd4c8('0x4e')](function(_0x32a927){return Number(_0x32a927);});var _0x515a9b=parseTagParameter(_0x5c5902);_0x2c5a50[_0xd4c8('0x4f')]['clause'][_0xd4c8('0x47')](_0x515a9b);_0x2c5a50['tags'][_0xd4c8('0x50')]=_0x5c5902;break;case _0xd4c8('0x51'):if(_0xac7dd[_0xd4c8('0x52')]===_0xd4c8('0x49')){_0x2c5a50[_0xd4c8('0x53')][_0x3f206d]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0xac7dd[_0xd4c8('0x42')]+'%',null);}else{_0x3c7668=_['find'](_0x1a9d60,[_0xd4c8('0xc'),_0xd4c8('0x54')]);_0xac7dd[_0xd4c8('0xb')]=_0xd4c8('0x54');_0x370a09=as[_0xd4c8('0x3e')](_0x547f38,_0x3c7668[_0xd4c8('0x3f')],_0xac7dd);_0x2c5a50[_0xd4c8('0x53')][_0x3f206d](_0x370a09[_0xd4c8('0x41')],_0x370a09[_0xd4c8('0x42')]['start'],_0x370a09[_0xd4c8('0x42')][_0xd4c8('0x44')]);}break;case _0xd4c8('0x55'):case _0xd4c8('0x56'):_0x370a09=as[_0xd4c8('0x3e')]('me',null,_0xac7dd);_0x2c5a50[_0xd4c8('0x55')][_0x3f206d](_0x370a09[_0xd4c8('0x41')],_0x370a09[_0xd4c8('0x42')][_0xd4c8('0x43')],_0x370a09[_0xd4c8('0x42')][_0xd4c8('0x44')]);break;}}}return _0x2c5a50;}function parseModelFields(_0x23aa1a,_0x5d70c3,_0x5053dc){var _0x4d1d6c=utils['getAccountFK'](_0x23aa1a);var _0x318108=squel['expr']();var _0x326af8=_(_0x5d70c3)['keys']()['map'](function(_0x4f3918){return _[_0xd4c8('0x57')](_0x5053dc,['name',_0x4f3918])?_0x4f3918:undefined;})['compact']()[_0xd4c8('0x42')]();if(_0x326af8['length']>0x0){_0x326af8[_0xd4c8('0x58')](function(_0x31415b){if(_0x31415b===_0x4d1d6c){_0x318108[_0xd4c8('0x47')]('i.'+_0x4d1d6c+'\x20IN\x20?',[][_0xd4c8('0x59')](_0x5d70c3[_0x31415b]));}else if(_0x31415b===_0xd4c8('0x5a')){var _0x119b7e=JSON['parse'](_0x5d70c3[_0x31415b])['$gte'];var _0x533519=JSON['parse'](_0x5d70c3[_0x31415b])[_0xd4c8('0x5b')];_0x318108[_0xd4c8('0x47')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x119b7e,_0x533519);}else{if(_0x5d70c3[_0x31415b]===_0xd4c8('0x5c')){_0x318108[_0xd4c8('0x47')]('i.'+_0x31415b+_0xd4c8('0x5d'));}else{_0x318108['and']('i.'+_0x31415b+'\x20=\x20?',_0x5d70c3[_0x31415b]);}}});}return _0x318108;}function parseQueryParameters(_0x4aea69,_0x128a08,_0x48827f){var _0x367c9f=getSqlClauses();return Promise[_0xd4c8('0x5e')]()[_0xd4c8('0x5f')](function(){return parseModelFields(_0x4aea69,_0x128a08,_0x48827f);})[_0xd4c8('0x5f')](function(_0x58f272){_0x367c9f[_0xd4c8('0x60')][_0xd4c8('0x47')](_0x58f272);return parseReadParameter(_0x128a08[_0xd4c8('0x46')]);})[_0xd4c8('0x5f')](function(_0x3d8d91){_0x367c9f[_0xd4c8('0x46')][_0xd4c8('0x47')](_0x3d8d91);return parseTagParameter(_0x128a08[_0xd4c8('0x61')]);})[_0xd4c8('0x5f')](function(_0x3307a5){_0x367c9f[_0xd4c8('0x4f')][_0xd4c8('0x62')][_0xd4c8('0x47')](_0x3307a5);return parseSearchFilter(_0x4aea69,_0x128a08[_0xd4c8('0x63')]);})['then'](function(_0x22bff8){_0x367c9f['filter']=_0x22bff8;return _0x367c9f;});}function checkAccountsRestrictions(_0x1c03f9,_0x9f230c,_0x407e5c){var _0x28118a=utils['getAccountFK'](_0x1c03f9);var _0x3d3312='get'+_[_0xd4c8('0x64')](_0x1c03f9)+(_0x1c03f9===_0xd4c8('0x65')?_0xd4c8('0x66'):_0xd4c8('0x67'));var _0x3eeda3=squel['expr']();return Promise['resolve']()[_0xd4c8('0x5f')](function(){if(_0x407e5c[_0xd4c8('0xa')]&&_0x9f230c[_0xd4c8('0x8')]==='agent'){return _0x9f230c[_0x3d3312]({'attributes':['id'],'raw':!![]});}})[_0xd4c8('0x5f')](function(_0x392a5e){if(_0x392a5e){if(_0x392a5e[_0xd4c8('0x19')]===0x0){_0x3eeda3[_0xd4c8('0x47')]('i.'+_0x28118a+_0xd4c8('0x5d'));}else{_0x3eeda3[_0xd4c8('0x47')]('i.'+_0x28118a+_0xd4c8('0x1b'),_[_0xd4c8('0x4e')](_0x392a5e,'id'));}}else if(!_0x407e5c[_0x28118a]){_0x3eeda3[_0xd4c8('0x47')]('i.'+_0x28118a+_0xd4c8('0x68'));}})[_0xd4c8('0x5f')](function(){return _0x3eeda3;});}function getClosedOrderClause(_0x27219e,_0x9e3383){var _0x1dc221='';var _0x5c13bf=['i.thirdDisposition','i.secondDisposition','i.disposition'];if(_0x27219e===_0xd4c8('0x33')){_0x5c13bf[_0xd4c8('0x69')](_0xd4c8('0x6a'));}if(_0x9e3383['closed']==='0'&&_0x27219e==='mail'){_0x1dc221=_0xd4c8('0x6a');}else{if(_0x9e3383[_0xd4c8('0x6b')]==='1'){_0x5c13bf[_0xd4c8('0x6c')]();}_0x1dc221=_0xd4c8('0x6d')+_0x5c13bf[_0xd4c8('0x6e')](',\x20')+')';}return _0x1dc221;}function getFilteredInteractions(_0x4ab251,_0x420e61,_0x23270e,_0x19811b){var _0x525f52=utils['getInteractionFK'](_0x4ab251);var _0x490b9c=_[_0xd4c8('0x64')](_0x4ab251)+_0xd4c8('0x6f');var _0x511dd9=[];var _0x450343=getTagsQuery();var _0x41c7cb={'type':db[_0xd4c8('0x70')][_0xd4c8('0x71')]['SELECT'],'raw':!![]};var _0x52e58f=[];var _0x4b7a98=[];return db[_0xd4c8('0x72')][_0xd4c8('0x73')](_0x450343[_0xd4c8('0x74')](),_0x41c7cb)[_0xd4c8('0x5f')](function(_0x271d84){_0x511dd9=_[_0xd4c8('0x75')](_0x271d84,'id');_0x41c7cb=_[_0xd4c8('0x76')](_0x41c7cb,{'model':db[_0x490b9c],'mapToModel':!![],'nest':!![]});if(_0x23270e[_0xd4c8('0x60')]){_0x19811b['attributes'][_0xd4c8('0x58')](function(_0x19f639){_0x420e61[_0xd4c8('0xb')]('i.'+_0x19f639);});}else{_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x77'),_0xd4c8('0x45'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x78'),_0xd4c8('0x79'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x7a'),_0xd4c8('0x7b'));if(_0x4ab251===_0xd4c8('0x33')){_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x7c'),_0xd4c8('0x7d'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x7e'),'contactName');_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x7f'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x80'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x81'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x82'));_0x420e61[_0xd4c8('0xb')]('i.closedAt');_0x420e61['field']('i.attach');_0x420e61['field'](_0xd4c8('0x83'));_0x420e61['field'](_0xd4c8('0x84'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x85'));_0x420e61[_0xd4c8('0xb')]('i.disposition');_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x86'));_0x420e61['field'](_0xd4c8('0x87'));_0x420e61['field']('i.substatus');_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x88'));_0x420e61['field'](_0xd4c8('0x89'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x8a'));_0x420e61[_0xd4c8('0xb')]('i.UserId');}else if(_0x4ab251==='openchannel'){_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x8b'),_0xd4c8('0x8c'));}else{_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x8d'),_0xd4c8('0x8c'));}if(_0x4ab251!=='mail'){_0x420e61[_0xd4c8('0xb')]('i.*');}_0x420e61['field'](_0xd4c8('0x8e'),_0xd4c8('0x8f'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x90'),_0xd4c8('0x91'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x92'),_0xd4c8('0x93'));_0x420e61[_0xd4c8('0xb')]('c.phone',_0xd4c8('0x94'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x95'),_0xd4c8('0x96'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x97'),_0xd4c8('0x98'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x99'),_0xd4c8('0x9a'));_0x420e61[_0xd4c8('0xb')](_0xd4c8('0x9b'),'Owner.internal');_0x420e61[_0xd4c8('0xb')]('GROUP_CONCAT(DISTINCT\x20t.id)','TagIds');}if(_0x19811b[_0xd4c8('0x9c')]){_0x420e61['limit'](_0x19811b[_0xd4c8('0x9c')]);}if(_0x19811b[_0xd4c8('0x9d')]){_0x420e61[_0xd4c8('0x9d')](_0x19811b['offset']);}return db[_0xd4c8('0x72')][_0xd4c8('0x73')](_0x420e61[_0xd4c8('0x74')](),_0x41c7cb);})[_0xd4c8('0x5f')](function(_0x567acb){_0x52e58f=_0x567acb;var _0x3072da=getUsersQuery(_0x4ab251,_0x52e58f);return db[_0xd4c8('0x72')][_0xd4c8('0x73')](_0x3072da['toString'](),_0x41c7cb);})['then'](function(_0x3db159){_0x4b7a98=_[_0xd4c8('0x9e')](_0x3db159,_0x525f52);if(_0x4ab251==='mail'){return db[_0xd4c8('0x9f')][_0xd4c8('0xa0')]({'attributes':[_0xd4c8('0xa1')],'raw':!![]});}})[_0xd4c8('0x5f')](function(_0x3d7083){var _0x91ade3=_0x3d7083?_0x3d7083[_0xd4c8('0xa1')]:undefined;var _0x39e1ec=_0x52e58f['map'](function(_0x27be14){return updateInteraction(_0x27be14,_0x511dd9,_0x4b7a98,_0x91ade3);});return Promise[_0xd4c8('0xa2')](_0x39e1ec);});}function countFilteredInteractions(_0x5b1d96,_0x113279){var _0x3a2586=_0x5b1d96[_0xd4c8('0xa3')]();_0x3a2586[_0xd4c8('0xb')](_0xd4c8('0xa4'));_0x3a2586[_0xd4c8('0xb')](_0xd4c8('0x77'),_0xd4c8('0x45'));var _0x244673=utils[_0xd4c8('0x28')](_0x113279);if(!_['isEmpty'](_0x244673)){_0x3a2586['where'](_0xd4c8('0xa5'),_0x244673);}var _0x45c8b4={'type':db[_0xd4c8('0x70')][_0xd4c8('0x71')][_0xd4c8('0xa6')],'raw':!![]};return db[_0xd4c8('0x72')][_0xd4c8('0x73')](_0x3a2586['toString'](),_0x45c8b4);}module[_0xd4c8('0xa7')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
+var _0xbf86=['buildExpression','contact','Tag','split','tags','and','User','$substring','user','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','plainBody','body','keys','some','compact','concat','createdAt','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','resolve','then','fields','clause','filter','get','capitalize','chat','Websites','Accounts','\x20IS\x20NOT\x20NULL','i.thirdDisposition','i.secondDisposition','i.disposition','unshift','i.substatus','closed','shift','Interaction','Sequelize','QueryTypes','SELECT','sequelize','keyBy','merge','attributes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.key','a.mandatoryDisposition','a.email','Account.email','contactName','i.id','i.createdAt','i.updatedAt','i.closed','i.lastMsgAt','i.lastMsgDirection','i.subject','i.to','i.ContactId','i.MailAccountId','i.UserId','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','i.*','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','c.mobile','c.fax','Contact.fax','Owner.fullname','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','limit','offset','toString','Setting','enableEmailPreview','all','clone','COUNT(*)','isEmpty','exports','squel','../parsers/advancedSearch','../parsers/qs','./update-interaction','./utils','../../mysqldb','getAccountFK','role','agent','search','select','field','name','from','getInteractionFK','u.fullname','ui.','left_join','users','u.id\x20=\x20ui.UserId','length','where','\x20IN\x20?','map','getInteractionsTables','interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','a.id\x20=\x20i.','messages','me.','\x20=\x20i.id','interactionsTags','it.','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','unreadMessages\x20{OPERATOR}\x200','{OPERATOR}','replace','isNumeric','i.id\x20LIKE\x20?','whatsapp','i.phone\x20LIKE\x20?','fax','i.fax\x20LIKE\x20?','openchannel','mail','isEmail','c.email\x20LIKE\x20?','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','conditions','type','default','text','value','start','end','unreadMessages','read','operator','ContactId'];(function(_0x38273f,_0x23b992){var _0x5bb858=function(_0x58b4ae){while(--_0x58b4ae){_0x38273f['push'](_0x38273f['shift']());}};_0x5bb858(++_0x23b992);}(_0xbf86,0x199));var _0x6bf8=function(_0x1b892b,_0x4efe48){_0x1b892b=_0x1b892b-0x0;var _0xa99e57=_0xbf86[_0x1b892b];return _0xa99e57;};'use strict';var _=require('lodash');var squel=require(_0x6bf8('0x0'));var as=require(_0x6bf8('0x1'));var qs=require(_0x6bf8('0x2'));var updateInteraction=require(_0x6bf8('0x3'))['updateInteraction'];var utils=require(_0x6bf8('0x4'));var db=require(_0x6bf8('0x5'))['db'];function skipInteractionsQuery(_0x3fd1b2,_0x56c369,_0x1657dc){var _0x356a5b=![];var _0x5ad5b3=utils[_0x6bf8('0x6')](_0x3fd1b2);if(_0x56c369[_0x6bf8('0x7')]===_0x6bf8('0x8')&&!_0x1657dc[_0x6bf8('0x9')]&&!_0x1657dc[_0x5ad5b3]){_0x356a5b=!![];}return _0x356a5b;}function getTagsQuery(){return squel[_0x6bf8('0xa')]()[_0x6bf8('0xb')]('id')['field'](_0x6bf8('0xc'))['field']('color')[_0x6bf8('0xd')]('tools_tags');}function getUsersQuery(_0x480cb6,_0x32260b){var _0x464a3c=utils[_0x6bf8('0xe')](_0x480cb6);var _0x18a834='user_has_'+_0x480cb6+'_interactions';var _0x3cfde6=squel[_0x6bf8('0xa')]()[_0x6bf8('0xb')]('u.id')[_0x6bf8('0xb')](_0x6bf8('0xf'))[_0x6bf8('0xb')](_0x6bf8('0x10')+_0x464a3c)[_0x6bf8('0xd')](_0x18a834,'ui')[_0x6bf8('0x11')](_0x6bf8('0x12'),'u',_0x6bf8('0x13'));if(_0x32260b[_0x6bf8('0x14')]>0x0){_0x3cfde6[_0x6bf8('0x15')](_0x6bf8('0x10')+_0x464a3c+_0x6bf8('0x16'),_[_0x6bf8('0x17')](_0x32260b,'id'));}return _0x3cfde6;}function getInteractionsQuery(_0x217d72){var _0x18f629=utils[_0x6bf8('0x18')](_0x217d72);var _0x53c038=utils[_0x6bf8('0x6')](_0x217d72);var _0x28954f=utils[_0x6bf8('0xe')](_0x217d72);return squel[_0x6bf8('0xa')]()[_0x6bf8('0xd')](_0x18f629[_0x6bf8('0x19')],'i')[_0x6bf8('0x11')](_0x6bf8('0x1a'),'c',_0x6bf8('0x1b'))[_0x6bf8('0x11')](_0x6bf8('0x12'),'o',_0x6bf8('0x1c'))['left_join'](_0x18f629['accounts'],'a',_0x6bf8('0x1d')+_0x53c038)['left_join'](_0x18f629[_0x6bf8('0x1e')],'me',_0x6bf8('0x1f')+_0x28954f+_0x6bf8('0x20'))[_0x6bf8('0x11')](_0x18f629[_0x6bf8('0x21')],'it',_0x6bf8('0x22')+_0x28954f+_0x6bf8('0x20'))[_0x6bf8('0x11')]('tools_tags','t','t.id\x20=\x20it.TagId');}function getSqlClauses(){var _0x535f12={'body':squel['expr'](),'contact':squel[_0x6bf8('0x23')](),'default':squel['expr'](),'fields':squel[_0x6bf8('0x23')](),'filter':squel[_0x6bf8('0x23')](),'read':squel[_0x6bf8('0x23')](),'tags':{'clause':squel['expr'](),'ids':null},'user':squel[_0x6bf8('0x23')]()};return _0x535f12;}function parseTagParameter(_0x14080d){var _0xd8591e=squel[_0x6bf8('0x23')]();if(_0x14080d){var _0x1a1e88=utils[_0x6bf8('0x24')](_0x14080d);_0x1a1e88[_0x6bf8('0x25')](function(_0x477c98){_0xd8591e['or'](_0x6bf8('0x26'),'%,'+_0x477c98+',%');});}return _0xd8591e;}function parseReadParameter(_0x1a4737){var _0x54a207='';if(_0x1a4737){_0x54a207=_0x6bf8('0x27');if(_0x1a4737==='1'){_0x54a207=_0x54a207['replace'](_0x6bf8('0x28'),'=');}else{_0x54a207=_0x54a207['replace'](_0x6bf8('0x28'),'>');}}return _0x54a207;}function parseSearchFilter(_0x31a86b,_0x5387d8){var _0x1e0076=squel[_0x6bf8('0x23')]();if(_0x5387d8){var _0x425900=_0x5387d8[_0x6bf8('0x29')]('\x5c','\x5c\x5c')[_0x6bf8('0x29')](/'/g,'\x27\x27');if(qs[_0x6bf8('0x2a')](_0x425900)){_0x1e0076['or'](_0x6bf8('0x2b'),_0x425900+'%');if(['sms',_0x6bf8('0x2c')]['includes'](_0x31a86b)){_0x1e0076['or'](_0x6bf8('0x2d'),_0x425900+'%');}else if(_0x31a86b===_0x6bf8('0x2e')){_0x1e0076['or'](_0x6bf8('0x2f'),_0x425900+'%');}else if(_0x31a86b===_0x6bf8('0x30')){_0x1e0076['or']('i.from\x20LIKE\x20?',_0x425900+'%');}}else if(_0x31a86b===_0x6bf8('0x31')&&qs[_0x6bf8('0x32')](_0x425900)){_0x1e0076['or'](_0x6bf8('0x33'),_0x425900+'%');}else{if(_0x31a86b===_0x6bf8('0x31')){_0x1e0076['or'](_0x6bf8('0x34'),qs[_0x6bf8('0x35')](_0x425900,!![]))['or'](_0x6bf8('0x36'),qs[_0x6bf8('0x35')](_0x425900));}else if(_0x31a86b!==_0x6bf8('0x2e')){_0x1e0076['or'](_0x6bf8('0x37'),qs[_0x6bf8('0x35')](_0x425900));}_0x1e0076['or'](_0x6bf8('0x38'),qs[_0x6bf8('0x35')](_0x425900,!![]),null);}}return _0x1e0076;}function parseAdvancedSearchFilter(_0x1b43cb,_0x40cc30){var _0x2c4eca=getSqlClauses();var _0x10d867=as['parseSearch'](_0x1b43cb);var _0x13e8df=_0x10d867['sqlOperator'];for(var _0x3b61a1=0x0;_0x3b61a1<_0x10d867['conditions'][_0x6bf8('0x14')];_0x3b61a1++){var _0x340590=_0x10d867[_0x6bf8('0x39')][_0x3b61a1];var _0x48f00b='i';var _0x2e9e3e=_['find'](_0x40cc30,[_0x6bf8('0xc'),_0x340590['field']]);if(_0x2e9e3e){var _0x1d8491=as['buildExpression'](_0x48f00b,_0x2e9e3e[_0x6bf8('0x3a')],_0x340590);_0x2c4eca[_0x6bf8('0x3b')][_0x13e8df](_0x1d8491[_0x6bf8('0x3c')],_0x1d8491[_0x6bf8('0x3d')][_0x6bf8('0x3e')],_0x1d8491[_0x6bf8('0x3d')][_0x6bf8('0x3f')]);}else{switch(_0x340590['field']){case _0x6bf8('0x40'):var _0x2c9579=parseReadParameter(_0x340590[_0x6bf8('0x3d')]);_0x2c4eca[_0x6bf8('0x41')]['and'](_0x2c9579);break;case'Contact':if(_0x340590[_0x6bf8('0x42')]==='$substring'){if(_0x340590[_0x6bf8('0x3d')]['split']('\x20')['length']>0x1){_0x2c4eca['contact'][_0x13e8df]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x6bf8('0x35')](_0x340590[_0x6bf8('0x3d')],!![]),null);}else{var _0x2b4ad4='%'+_0x340590[_0x6bf8('0x3d')]+'%';_0x2c4eca['contact'][_0x13e8df]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x2b4ad4,_0x2b4ad4,_0x2b4ad4);}}else{_0x2e9e3e=_['find'](_0x40cc30,[_0x6bf8('0xc'),_0x6bf8('0x43')]);_0x340590[_0x6bf8('0xb')]=_0x6bf8('0x43');_0x1d8491=as[_0x6bf8('0x44')](_0x48f00b,_0x2e9e3e[_0x6bf8('0x3a')],_0x340590);_0x2c4eca[_0x6bf8('0x45')][_0x13e8df](_0x1d8491[_0x6bf8('0x3c')],_0x1d8491[_0x6bf8('0x3d')][_0x6bf8('0x3e')],_0x1d8491[_0x6bf8('0x3d')][_0x6bf8('0x3f')]);}break;case _0x6bf8('0x46'):var _0x19ebac=_0x340590[_0x6bf8('0x3d')][_0x6bf8('0x47')](',')[_0x6bf8('0x17')](function(_0xdeb0f){return Number(_0xdeb0f);});var _0x5e0169=parseTagParameter(_0x19ebac);_0x2c4eca[_0x6bf8('0x48')]['clause'][_0x6bf8('0x49')](_0x5e0169);_0x2c4eca['tags']['ids']=_0x19ebac;break;case _0x6bf8('0x4a'):if(_0x340590[_0x6bf8('0x42')]===_0x6bf8('0x4b')){_0x2c4eca[_0x6bf8('0x4c')][_0x13e8df](_0x6bf8('0x4d'),'%'+_0x340590['value']+'%',null);}else{_0x2e9e3e=_['find'](_0x40cc30,['name',_0x6bf8('0x4e')]);_0x340590[_0x6bf8('0xb')]=_0x6bf8('0x4e');_0x1d8491=as[_0x6bf8('0x44')](_0x48f00b,_0x2e9e3e[_0x6bf8('0x3a')],_0x340590);_0x2c4eca['user'][_0x13e8df](_0x1d8491[_0x6bf8('0x3c')],_0x1d8491[_0x6bf8('0x3d')]['start'],_0x1d8491[_0x6bf8('0x3d')][_0x6bf8('0x3f')]);}break;case'body':case _0x6bf8('0x4f'):_0x1d8491=as[_0x6bf8('0x44')]('me',null,_0x340590);_0x2c4eca[_0x6bf8('0x50')][_0x13e8df](_0x1d8491['text'],_0x1d8491[_0x6bf8('0x3d')][_0x6bf8('0x3e')],_0x1d8491[_0x6bf8('0x3d')]['end']);break;}}}return _0x2c4eca;}function parseModelFields(_0x222b13,_0x3530dd,_0x1f1678){var _0x710894=utils[_0x6bf8('0x6')](_0x222b13);var _0x5c7ea9=squel[_0x6bf8('0x23')]();var _0x1229ac=_(_0x3530dd)[_0x6bf8('0x51')]()[_0x6bf8('0x17')](function(_0xe0efed){return _[_0x6bf8('0x52')](_0x1f1678,[_0x6bf8('0xc'),_0xe0efed])?_0xe0efed:undefined;})[_0x6bf8('0x53')]()[_0x6bf8('0x3d')]();if(_0x1229ac[_0x6bf8('0x14')]>0x0){_0x1229ac[_0x6bf8('0x25')](function(_0x595397){if(_0x595397===_0x710894){_0x5c7ea9[_0x6bf8('0x49')]('i.'+_0x710894+_0x6bf8('0x16'),[][_0x6bf8('0x54')](_0x3530dd[_0x595397]));}else if(_0x595397===_0x6bf8('0x55')){var _0x225561=JSON['parse'](_0x3530dd[_0x595397])['$gte'];var _0x29a851=JSON['parse'](_0x3530dd[_0x595397])['$lte'];_0x5c7ea9[_0x6bf8('0x49')](_0x6bf8('0x56'),_0x225561,_0x29a851);}else{if(_0x3530dd[_0x595397]==='null'){_0x5c7ea9[_0x6bf8('0x49')]('i.'+_0x595397+_0x6bf8('0x57'));}else{_0x5c7ea9['and']('i.'+_0x595397+_0x6bf8('0x58'),_0x3530dd[_0x595397]);}}});}return _0x5c7ea9;}function parseQueryParameters(_0x5ae28a,_0xa07cd3,_0x1c2d15){var _0x3b2b84=getSqlClauses();return Promise[_0x6bf8('0x59')]()[_0x6bf8('0x5a')](function(){return parseModelFields(_0x5ae28a,_0xa07cd3,_0x1c2d15);})[_0x6bf8('0x5a')](function(_0x38c4b4){_0x3b2b84[_0x6bf8('0x5b')][_0x6bf8('0x49')](_0x38c4b4);return parseReadParameter(_0xa07cd3['read']);})[_0x6bf8('0x5a')](function(_0x696423){_0x3b2b84[_0x6bf8('0x41')]['and'](_0x696423);return parseTagParameter(_0xa07cd3['tag']);})[_0x6bf8('0x5a')](function(_0x46c68f){_0x3b2b84[_0x6bf8('0x48')][_0x6bf8('0x5c')]['and'](_0x46c68f);return parseSearchFilter(_0x5ae28a,_0xa07cd3[_0x6bf8('0x5d')]);})[_0x6bf8('0x5a')](function(_0x3bd534){_0x3b2b84['filter']=_0x3bd534;return _0x3b2b84;});}function checkAccountsRestrictions(_0x487c4e,_0x11928c,_0x32005f){var _0x33f384=utils[_0x6bf8('0x6')](_0x487c4e);var _0x2c7e12=_0x6bf8('0x5e')+_[_0x6bf8('0x5f')](_0x487c4e)+(_0x487c4e===_0x6bf8('0x60')?_0x6bf8('0x61'):_0x6bf8('0x62'));var _0x38b3f1=squel[_0x6bf8('0x23')]();return Promise['resolve']()[_0x6bf8('0x5a')](function(){if(_0x32005f[_0x6bf8('0x9')]&&_0x11928c[_0x6bf8('0x7')]===_0x6bf8('0x8')){return _0x11928c[_0x2c7e12]({'attributes':['id'],'raw':!![]});}})[_0x6bf8('0x5a')](function(_0x5867e4){if(_0x5867e4){if(_0x5867e4[_0x6bf8('0x14')]===0x0){_0x38b3f1[_0x6bf8('0x49')]('i.'+_0x33f384+_0x6bf8('0x57'));}else{_0x38b3f1[_0x6bf8('0x49')]('i.'+_0x33f384+_0x6bf8('0x16'),_['map'](_0x5867e4,'id'));}}else if(!_0x32005f[_0x33f384]){_0x38b3f1[_0x6bf8('0x49')]('i.'+_0x33f384+_0x6bf8('0x63'));}})['then'](function(){return _0x38b3f1;});}function getClosedOrderClause(_0x1ef96b,_0x53710a){var _0x27cad5='';var _0x9d862=[_0x6bf8('0x64'),_0x6bf8('0x65'),_0x6bf8('0x66')];if(_0x1ef96b==='mail'){_0x9d862[_0x6bf8('0x67')](_0x6bf8('0x68'));}if(_0x53710a['closed']==='0'&&_0x1ef96b===_0x6bf8('0x31')){_0x27cad5=_0x6bf8('0x68');}else{if(_0x53710a[_0x6bf8('0x69')]==='1'){_0x9d862[_0x6bf8('0x6a')]();}_0x27cad5='CONCAT_WS(\x27\x27,\x20'+_0x9d862['join'](',\x20')+')';}return _0x27cad5;}function getFilteredInteractions(_0x37a116,_0x2e7896,_0x3c3987,_0x56f1cc){var _0x545336=utils['getInteractionFK'](_0x37a116);var _0x98f726=_[_0x6bf8('0x5f')](_0x37a116)+_0x6bf8('0x6b');var _0x23a05b=[];var _0x36e3d8=getTagsQuery();var _0x3737bb={'type':db[_0x6bf8('0x6c')][_0x6bf8('0x6d')][_0x6bf8('0x6e')],'raw':!![]};var _0x103df6=[];var _0x2d3c4c=[];return db[_0x6bf8('0x6f')]['query'](_0x36e3d8['toString'](),_0x3737bb)[_0x6bf8('0x5a')](function(_0xed7dc6){_0x23a05b=_[_0x6bf8('0x70')](_0xed7dc6,'id');_0x3737bb=_[_0x6bf8('0x71')](_0x3737bb,{'model':db[_0x98f726],'mapToModel':!![],'nest':!![]});if(_0x3c3987[_0x6bf8('0x5b')]){_0x56f1cc[_0x6bf8('0x72')][_0x6bf8('0x25')](function(_0xb2f8d0){_0x2e7896[_0x6bf8('0xb')]('i.'+_0xb2f8d0);});}else{_0x2e7896['field'](_0x6bf8('0x73'),'unreadMessages');_0x2e7896[_0x6bf8('0xb')](_0x6bf8('0x74'),_0x6bf8('0x75'));_0x2e7896[_0x6bf8('0xb')](_0x6bf8('0x76'),'Account.mandatoryDisposition');if(_0x37a116==='mail'){_0x2e7896[_0x6bf8('0xb')](_0x6bf8('0x77'),_0x6bf8('0x78'));_0x2e7896[_0x6bf8('0xb')]('CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20CONCAT(\x27%\x27,\x20a.email,\x20\x27%\x27)\x20THEN\x20TRIM(SUBSTRING_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',_0x6bf8('0x79'));_0x2e7896[_0x6bf8('0xb')](_0x6bf8('0x7a'));_0x2e7896['field'](_0x6bf8('0x7b'));_0x2e7896[_0x6bf8('0xb')](_0x6bf8('0x7c'));_0x2e7896['field'](_0x6bf8('0x7d'));_0x2e7896[_0x6bf8('0xb')]('i.closedAt');_0x2e7896[_0x6bf8('0xb')]('i.attach');_0x2e7896[_0x6bf8('0xb')](_0x6bf8('0x7e'));_0x2e7896[_0x6bf8('0xb')](_0x6bf8('0x7f'));_0x2e7896[_0x6bf8('0xb')](_0x6bf8('0x80'));_0x2e7896[_0x6bf8('0xb')](_0x6bf8('0x66'));_0x2e7896['field'](_0x6bf8('0x65'));_0x2e7896['field']('i.thirdDisposition');_0x2e7896[_0x6bf8('0xb')]('i.substatus');_0x2e7896[_0x6bf8('0xb')](_0x6bf8('0x81'));_0x2e7896[_0x6bf8('0xb')](_0x6bf8('0x82'));_0x2e7896[_0x6bf8('0xb')](_0x6bf8('0x83'));_0x2e7896['field'](_0x6bf8('0x84'));}else if(_0x37a116==='openchannel'){_0x2e7896[_0x6bf8('0xb')]('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',_0x6bf8('0x79'));}else{_0x2e7896['field'](_0x6bf8('0x85'),_0x6bf8('0x79'));}if(_0x37a116!==_0x6bf8('0x31')){_0x2e7896['field'](_0x6bf8('0x86'));}_0x2e7896[_0x6bf8('0xb')](_0x6bf8('0x87'),_0x6bf8('0x88'));_0x2e7896[_0x6bf8('0xb')](_0x6bf8('0x89'),_0x6bf8('0x8a'));_0x2e7896['field'](_0x6bf8('0x8b'),_0x6bf8('0x8c'));_0x2e7896[_0x6bf8('0xb')]('c.phone',_0x6bf8('0x8d'));_0x2e7896['field'](_0x6bf8('0x8e'),'Contact.mobile');_0x2e7896[_0x6bf8('0xb')](_0x6bf8('0x8f'),_0x6bf8('0x90'));_0x2e7896['field']('o.fullname',_0x6bf8('0x91'));_0x2e7896['field']('o.internal',_0x6bf8('0x92'));_0x2e7896[_0x6bf8('0xb')](_0x6bf8('0x93'),_0x6bf8('0x94'));}if(_0x56f1cc['limit']){_0x2e7896[_0x6bf8('0x95')](_0x56f1cc[_0x6bf8('0x95')]);}if(_0x56f1cc[_0x6bf8('0x96')]){_0x2e7896['offset'](_0x56f1cc['offset']);}return db['sequelize']['query'](_0x2e7896[_0x6bf8('0x97')](),_0x3737bb);})[_0x6bf8('0x5a')](function(_0x5a91ef){_0x103df6=_0x5a91ef;var _0x163413=getUsersQuery(_0x37a116,_0x103df6);return db['sequelize']['query'](_0x163413[_0x6bf8('0x97')](),_0x3737bb);})[_0x6bf8('0x5a')](function(_0x426007){_0x2d3c4c=_['groupBy'](_0x426007,_0x545336);if(_0x37a116===_0x6bf8('0x31')){return db[_0x6bf8('0x98')]['findOne']({'attributes':['enableEmailPreview'],'raw':!![]});}})[_0x6bf8('0x5a')](function(_0x30615b){var _0x527076=_0x30615b?_0x30615b[_0x6bf8('0x99')]:undefined;var _0x54d35a=_0x103df6[_0x6bf8('0x17')](function(_0x431643){return updateInteraction(_0x431643,_0x23a05b,_0x2d3c4c,_0x527076);});return Promise[_0x6bf8('0x9a')](_0x54d35a);});}function countFilteredInteractions(_0x197d24,_0x5a69a1){var _0x539ad2=_0x197d24[_0x6bf8('0x9b')]();_0x539ad2[_0x6bf8('0xb')](_0x6bf8('0x9c'));_0x539ad2[_0x6bf8('0xb')](_0x6bf8('0x73'),_0x6bf8('0x40'));var _0x35f927=utils[_0x6bf8('0x24')](_0x5a69a1);if(!_[_0x6bf8('0x9d')](_0x35f927)){_0x539ad2[_0x6bf8('0x15')]('t.id\x20IN\x20?',_0x35f927);}var _0x514d32={'type':db[_0x6bf8('0x6c')][_0x6bf8('0x6d')][_0x6bf8('0x6e')],'raw':!![]};return db['sequelize']['query'](_0x539ad2[_0x6bf8('0x97')](),_0x514d32);}module[_0x6bf8('0x9e')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
index bbd1c0a..3b81114 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa15=['disposition','abandoned','UserId','MailMessage','findOne','plainBody','then','lastMsgText','trimStart','catch','Users','TagIds','Tags','lodash','../../mysqldb','map','fullname','split','forEach','waiting','talking','answered','unmanaged','total','closed'];(function(_0x1c5cde,_0x1311e5){var _0x4eafb6=function(_0x2069bf){while(--_0x2069bf){_0x1c5cde['push'](_0x1c5cde['shift']());}};_0x4eafb6(++_0x1311e5);}(_0xfa15,0x120));var _0x5fa1=function(_0x9b9234,_0x3b8f3b){_0x9b9234=_0x9b9234-0x0;var _0x89e7c2=_0xfa15[_0x9b9234];return _0x89e7c2;};'use strict';var _=require(_0x5fa1('0x0'));var db=require(_0x5fa1('0x1'))['db'];function getInteractionUsers(_0x294b63,_0x60a33){return new Promise(function(_0x520d42,_0x1e6f0d){try{var _0xf8b5e8=[];if(_0x60a33[_0x294b63]){_0xf8b5e8=_0x60a33[_0x294b63][_0x5fa1('0x2')](function(_0x45db4a){return{'id':_0x45db4a['id'],'fullname':_0x45db4a[_0x5fa1('0x3')]};});}return _0x520d42(_0xf8b5e8);}catch(_0x522fa3){_0x1e6f0d(_0x522fa3);}});}function getInteractionTags(_0x3eed36,_0x1fbb56){var _0x3d332d=[];if(_0x3eed36){_0x3eed36[_0x5fa1('0x4')](',')[_0x5fa1('0x5')](function(_0x359828){_0x3d332d['push'](_0x1fbb56[_0x359828]);});}return _0x3d332d;}function updateWaitingCounter(_0x4067ab){if(_0x4067ab[_0x5fa1('0x6')]){_0x4067ab[_0x5fa1('0x6')]-=0x1;}}function updateInteractionCounters(_0x385015){_0x385015[_0x5fa1('0x6')]=0x0;_0x385015[_0x5fa1('0x7')]=0x0;_0x385015[_0x5fa1('0x8')]=0x0;_0x385015[_0x5fa1('0x9')]=0x0;_0x385015['abandoned']=0x0;_0x385015[_0x5fa1('0xa')]=0x0;if(_0x385015[_0x5fa1('0xb')]){if(_0x385015[_0x5fa1('0xc')]===_0x5fa1('0xd')){_0x385015['abandoned']+=0x1;updateWaitingCounter(_0x385015);}if(_0x385015['UserId']){_0x385015[_0x5fa1('0x8')]+=0x1;if(_0x385015['talking']){_0x385015[_0x5fa1('0x7')]-=0x1;}}else{if(_0x385015[_0x5fa1('0xc')]){_0x385015['unmanaged']+=0x1;updateWaitingCounter(_0x385015);}}}else{if(!_0x385015[_0x5fa1('0xe')]){_0x385015[_0x5fa1('0x6')]+=0x1;}if(_0x385015[_0x5fa1('0xe')]){_0x385015[_0x5fa1('0x7')]+=0x1;updateWaitingCounter(_0x385015);}}_0x385015[_0x5fa1('0xa')]+=0x1;return _0x385015;}function getLastMessageText(_0x1d2478){return db[_0x5fa1('0xf')][_0x5fa1('0x10')]({'where':{'$and':[{'MailInteractionId':_0x1d2478['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':'out'},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x5fa1('0x11')],'order':'-id','raw':!![]})[_0x5fa1('0x12')](function(_0x1a69d5){if(_0x1a69d5&&_0x1a69d5[_0x5fa1('0x11')]){_0x1d2478[_0x5fa1('0x13')]=_[_0x5fa1('0x14')](_0x1a69d5[_0x5fa1('0x11')]);}return _0x1d2478;})[_0x5fa1('0x15')](function(_0x5f2230){throw _0x5f2230;});}exports['updateInteraction']=function(_0x42de0c,_0x226874,_0x194124,_0x336662){return new Promise(function(_0x19fca2,_0x14cb3e){return getInteractionUsers(_0x42de0c['id'],_0x194124)[_0x5fa1('0x12')](function(_0x244828){_0x42de0c[_0x5fa1('0x16')]=_0x244828;return getInteractionTags(_0x42de0c[_0x5fa1('0x17')],_0x226874);})[_0x5fa1('0x12')](function(_0x493bd1){_0x42de0c[_0x5fa1('0x18')]=_0x493bd1;delete _0x42de0c[_0x5fa1('0x17')];return updateInteractionCounters(_0x42de0c);})[_0x5fa1('0x12')](function(_0x140ef9){if(_0x336662){return getLastMessageText(_0x140ef9);}else{return _0x140ef9;}})[_0x5fa1('0x12')](function(_0x2ad8fa){_0x19fca2(_0x2ad8fa);})['catch'](function(_0x69e90e){_0x14cb3e(_0x69e90e);});});};
\ No newline at end of file
+var _0x3c2d=['talking','total','MailMessage','findOne','out','plainBody','-id','then','lastMsgText','trimStart','catch','updateInteraction','Users','TagIds','Tags','../../mysqldb','map','fullname','split','forEach','push','waiting','unmanaged','abandoned','closed','disposition','UserId','answered'];(function(_0x21459d,_0x119563){var _0x5a71a1=function(_0x5b5aa8){while(--_0x5b5aa8){_0x21459d['push'](_0x21459d['shift']());}};_0x5a71a1(++_0x119563);}(_0x3c2d,0x1b3));var _0xd3c2=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x3c2d[_0x4a9fb1];return _0x348672;};'use strict';var _=require('lodash');var db=require(_0xd3c2('0x0'))['db'];function getInteractionUsers(_0x5ac475,_0x5a7477){return new Promise(function(_0x152ac8,_0x2f71df){try{var _0x536b8c=[];if(_0x5a7477[_0x5ac475]){_0x536b8c=_0x5a7477[_0x5ac475][_0xd3c2('0x1')](function(_0x6de656){return{'id':_0x6de656['id'],'fullname':_0x6de656[_0xd3c2('0x2')]};});}return _0x152ac8(_0x536b8c);}catch(_0x48b84c){_0x2f71df(_0x48b84c);}});}function getInteractionTags(_0x1c9310,_0x88475e){var _0x48886b=[];if(_0x1c9310){_0x1c9310[_0xd3c2('0x3')](',')[_0xd3c2('0x4')](function(_0x44f6ad){_0x48886b[_0xd3c2('0x5')](_0x88475e[_0x44f6ad]);});}return _0x48886b;}function updateWaitingCounter(_0x521654){if(_0x521654[_0xd3c2('0x6')]){_0x521654[_0xd3c2('0x6')]-=0x1;}}function updateInteractionCounters(_0x2ae19e){_0x2ae19e['waiting']=0x0;_0x2ae19e['talking']=0x0;_0x2ae19e['answered']=0x0;_0x2ae19e[_0xd3c2('0x7')]=0x0;_0x2ae19e[_0xd3c2('0x8')]=0x0;_0x2ae19e['total']=0x0;if(_0x2ae19e[_0xd3c2('0x9')]){if(_0x2ae19e[_0xd3c2('0xa')]==='abandoned'){_0x2ae19e[_0xd3c2('0x8')]+=0x1;updateWaitingCounter(_0x2ae19e);}if(_0x2ae19e[_0xd3c2('0xb')]){_0x2ae19e[_0xd3c2('0xc')]+=0x1;if(_0x2ae19e[_0xd3c2('0xd')]){_0x2ae19e[_0xd3c2('0xd')]-=0x1;}}else{if(_0x2ae19e['disposition']){_0x2ae19e[_0xd3c2('0x7')]+=0x1;updateWaitingCounter(_0x2ae19e);}}}else{if(!_0x2ae19e['UserId']){_0x2ae19e[_0xd3c2('0x6')]+=0x1;}if(_0x2ae19e['UserId']){_0x2ae19e[_0xd3c2('0xd')]+=0x1;updateWaitingCounter(_0x2ae19e);}}_0x2ae19e[_0xd3c2('0xe')]+=0x1;return _0x2ae19e;}function getLastMessageText(_0x18529f){return db[_0xd3c2('0xf')][_0xd3c2('0x10')]({'where':{'$and':[{'MailInteractionId':_0x18529f['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xd3c2('0x11')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0xd3c2('0x12')],'order':_0xd3c2('0x13'),'raw':!![]})[_0xd3c2('0x14')](function(_0x3d9873){if(_0x3d9873&&_0x3d9873['plainBody']){_0x18529f[_0xd3c2('0x15')]=_[_0xd3c2('0x16')](_0x3d9873[_0xd3c2('0x12')]);}return _0x18529f;})[_0xd3c2('0x17')](function(_0x165160){throw _0x165160;});}exports[_0xd3c2('0x18')]=function(_0x4941cf,_0x5b593b,_0x1bdb3c,_0x37beb0){return new Promise(function(_0x5190f4,_0x35129e){return getInteractionUsers(_0x4941cf['id'],_0x1bdb3c)['then'](function(_0xa12dec){_0x4941cf[_0xd3c2('0x19')]=_0xa12dec;return getInteractionTags(_0x4941cf[_0xd3c2('0x1a')],_0x5b593b);})['then'](function(_0x2a5c5b){_0x4941cf[_0xd3c2('0x1b')]=_0x2a5c5b;delete _0x4941cf[_0xd3c2('0x1a')];return updateInteractionCounters(_0x4941cf);})['then'](function(_0x1030bb){if(_0x37beb0){return getLastMessageText(_0x1030bb);}else{return _0x1030bb;}})[_0xd3c2('0x14')](function(_0x150bad){_0x5190f4(_0x150bad);})[_0xd3c2('0x17')](function(_0x1a3b17){_0x35129e(_0x1a3b17);});});};
\ No newline at end of file
index e6e381c..e26b379 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a25=['sms-interactions','chat','Website','capitalize','InteractionId','upperFirst','websites','accounts','_interaction_has_tags','_messages','_interactions','isArray','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','role','stringify','Interaction','findOne','then','update','info','catch','error','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','fax-interactions'];(function(_0x58fa86,_0x2806ce){var _0x237582=function(_0xd9abba){while(--_0xd9abba){_0x58fa86['push'](_0x58fa86['shift']());}};_0x237582(++_0x2806ce);}(_0x3a25,0xff));var _0x53a2=function(_0x34a7d2,_0x23a319){_0x34a7d2=_0x34a7d2-0x0;var _0x444ce5=_0x3a25[_0x34a7d2];return _0x444ce5;};'use strict';var _=require(_0x53a2('0x0'));var db=require(_0x53a2('0x1'))['db'];var loggers={'openchannel':require(_0x53a2('0x2'))(_0x53a2('0x3')),'mail':require(_0x53a2('0x2'))(_0x53a2('0x4')),'fax':require('../../config/logger')(_0x53a2('0x5')),'sms':require(_0x53a2('0x2'))(_0x53a2('0x6')),'chat':require(_0x53a2('0x2'))('chat-interactions'),'whatsapp':require(_0x53a2('0x2'))('whatsapp-interactions')};function getAccountFK(_0x484c8e){return _['capitalize'](_0x484c8e)+(_0x484c8e===_0x53a2('0x7')?_0x53a2('0x8'):'Account')+'Id';}function getInteractionFK(_0x30725a){return _[_0x53a2('0x9')](_0x30725a)+_0x53a2('0xa');}function getInteractionId(_0x386ab1,_0x56a52c,_0x561b6e){if(_0x386ab1&&_0x386ab1[_[_0x53a2('0xb')](_0x561b6e)+_0x53a2('0xa')]){return _0x386ab1[_[_0x53a2('0xb')](_0x561b6e)+_0x53a2('0xa')];}else if(_0x386ab1&&_0x386ab1['id']){return _0x386ab1['id'];}else if(_0x56a52c&&_0x56a52c['id']){return _0x56a52c['id'];}else{return'unknown';}}function getInteractionsTables(_0x2ea189){return{'accounts':_0x2ea189+'_'+(_0x2ea189===_0x53a2('0x7')?_0x53a2('0xc'):_0x53a2('0xd')),'interactions':_0x2ea189+'_interactions','interactionsTags':_0x2ea189+_0x53a2('0xe'),'messages':_0x2ea189+_0x53a2('0xf'),'userInteractions':'user_has_'+_0x2ea189+_0x53a2('0x10')};}function getSelectedTags(_0x3e06cb){var _0x6747c9=[];if(_0x3e06cb){_0x6747c9=Array[_0x53a2('0x11')](_0x3e06cb)?_0x3e06cb:[_0x3e06cb];}return _0x6747c9;}function log(_0x48f6b4,_0x5530c2,_0x36136c,_0x1036a1,_0x455f83,_0x410466){loggers[_0x455f83['toLowerCase']()][_0x48f6b4](_0x53a2('0x12'),_0x410466[_0x53a2('0x13')](),_0x5530c2?_0x5530c2['id']:null,_0x5530c2?_0x5530c2['name']:null,_0x5530c2?_0x5530c2[_0x53a2('0x14')]:null,getInteractionId(_0x36136c,_0x1036a1,_0x455f83),_0x36136c?JSON[_0x53a2('0x15')](_0x36136c):'null');}function updateUser(_0x377c39,_0x321fad,_0x51769d,_0x493cfc,_0x245dd9){db[_[_0x53a2('0xb')](_0x493cfc)+_0x53a2('0x16')][_0x53a2('0x17')]({'where':{'id':getInteractionId(_0x321fad,_0x51769d,_0x493cfc)}})[_0x53a2('0x18')](function(_0x38a326){if(_0x38a326){return _0x38a326[_0x53a2('0x19')]({'UserId':_0x377c39?_0x377c39['id']:null});}})[_0x53a2('0x18')](function(_0x1b9a3d){if(_0x1b9a3d){log(_0x53a2('0x1a'),_0x377c39,_0x321fad,_0x51769d,_0x493cfc,_0x245dd9);}})[_0x53a2('0x1b')](function(){log(_0x53a2('0x1c'),_0x377c39,_0x321fad,_0x51769d,_0x493cfc,_0x245dd9);});}module['exports']={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
+var _0xd6cd=['_messages','user_has_','isArray','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','role','stringify','null','upperFirst','Interaction','findOne','then','update','info','error','lodash','../../config/logger','mail-interactions','fax-interactions','sms-interactions','chat-interactions','whatsapp-interactions','capitalize','Website','Account','InteractionId','unknown','chat','accounts','_interactions','_interaction_has_tags'];(function(_0x5c06be,_0x5edb55){var _0xdd205f=function(_0x5be09c){while(--_0x5be09c){_0x5c06be['push'](_0x5c06be['shift']());}};_0xdd205f(++_0x5edb55);}(_0xd6cd,0x19d));var _0xdd6c=function(_0x37f04f,_0x57378f){_0x37f04f=_0x37f04f-0x0;var _0x481b76=_0xd6cd[_0x37f04f];return _0x481b76;};'use strict';var _=require(_0xdd6c('0x0'));var db=require('../../mysqldb')['db'];var loggers={'openchannel':require(_0xdd6c('0x1'))('openchannel-interactions'),'mail':require(_0xdd6c('0x1'))(_0xdd6c('0x2')),'fax':require('../../config/logger')(_0xdd6c('0x3')),'sms':require(_0xdd6c('0x1'))(_0xdd6c('0x4')),'chat':require(_0xdd6c('0x1'))(_0xdd6c('0x5')),'whatsapp':require(_0xdd6c('0x1'))(_0xdd6c('0x6'))};function getAccountFK(_0x497504){return _[_0xdd6c('0x7')](_0x497504)+(_0x497504==='chat'?_0xdd6c('0x8'):_0xdd6c('0x9'))+'Id';}function getInteractionFK(_0x32896a){return _['capitalize'](_0x32896a)+_0xdd6c('0xa');}function getInteractionId(_0x1a4860,_0x547386,_0xd94e40){if(_0x1a4860&&_0x1a4860[_['upperFirst'](_0xd94e40)+_0xdd6c('0xa')]){return _0x1a4860[_['upperFirst'](_0xd94e40)+_0xdd6c('0xa')];}else if(_0x1a4860&&_0x1a4860['id']){return _0x1a4860['id'];}else if(_0x547386&&_0x547386['id']){return _0x547386['id'];}else{return _0xdd6c('0xb');}}function getInteractionsTables(_0x55df79){return{'accounts':_0x55df79+'_'+(_0x55df79===_0xdd6c('0xc')?'websites':_0xdd6c('0xd')),'interactions':_0x55df79+_0xdd6c('0xe'),'interactionsTags':_0x55df79+_0xdd6c('0xf'),'messages':_0x55df79+_0xdd6c('0x10'),'userInteractions':_0xdd6c('0x11')+_0x55df79+'_interactions'};}function getSelectedTags(_0x58989f){var _0x3bdd9a=[];if(_0x58989f){_0x3bdd9a=Array[_0xdd6c('0x12')](_0x58989f)?_0x58989f:[_0x58989f];}return _0x3bdd9a;}function log(_0x11cb5e,_0x464814,_0x3fbc51,_0x20d2e4,_0x289978,_0xe536c5){loggers[_0x289978[_0xdd6c('0x13')]()][_0x11cb5e](_0xdd6c('0x14'),_0xe536c5[_0xdd6c('0x15')](),_0x464814?_0x464814['id']:null,_0x464814?_0x464814[_0xdd6c('0x16')]:null,_0x464814?_0x464814[_0xdd6c('0x17')]:null,getInteractionId(_0x3fbc51,_0x20d2e4,_0x289978),_0x3fbc51?JSON[_0xdd6c('0x18')](_0x3fbc51):_0xdd6c('0x19'));}function updateUser(_0x37a7be,_0x2b921f,_0x295c27,_0x1fb6b2,_0x3de50b){db[_[_0xdd6c('0x1a')](_0x1fb6b2)+_0xdd6c('0x1b')][_0xdd6c('0x1c')]({'where':{'id':getInteractionId(_0x2b921f,_0x295c27,_0x1fb6b2)}})[_0xdd6c('0x1d')](function(_0x6d8fd4){if(_0x6d8fd4){return _0x6d8fd4[_0xdd6c('0x1e')]({'UserId':_0x37a7be?_0x37a7be['id']:null});}})[_0xdd6c('0x1d')](function(_0x568b19){if(_0x568b19){log(_0xdd6c('0x1f'),_0x37a7be,_0x2b921f,_0x295c27,_0x1fb6b2,_0x3de50b);}})['catch'](function(){log(_0xdd6c('0x20'),_0x37a7be,_0x2b921f,_0x295c27,_0x1fb6b2,_0x3de50b);});}module['exports']={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
index 3b43c25..572f24f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25ec=['composable-middleware','../../config/environment','data1','license','createDecipher','format','update','base64','utf8','parse','hasOwnProperty','use','License','then','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','User','admin','user','isUserLimit','crypto'];(function(_0x2f90ec,_0x21e06b){var _0xaf6eb7=function(_0x2e0ff3){while(--_0x2e0ff3){_0x2f90ec['push'](_0x2f90ec['shift']());}};_0xaf6eb7(++_0x21e06b);}(_0x25ec,0x1b4));var _0xc25e=function(_0x2d75f7,_0x5bf19){_0x2d75f7=_0x2d75f7-0x0;var _0x5030e9=_0x25ec[_0x2d75f7];return _0x5030e9;};'use strict';var crypto=require(_0xc25e('0x0'));var util=require('util');var compose=require(_0xc25e('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0xc25e('0x2'));function getValueFromLicense(_0x1b6d5b,_0x10d66a){if(_0x1b6d5b&&_0x10d66a){if(_0x10d66a[_0xc25e('0x3')]&&_0x10d66a[_0xc25e('0x4')]){var _0x39a3f8=_0x10d66a[_0xc25e('0x3')];var _0x2cf747=_0x10d66a[_0xc25e('0x4')];var _0xf6184f=_0x39a3f8['split']('-')[0x4];var _0x232068=_0x39a3f8['split']('-')[0x0];var _0x1e39cb=crypto[_0xc25e('0x5')]('aes-256-ctr',util[_0xc25e('0x6')]('%s:%s:%s',_0xf6184f,_0x39a3f8,_0x232068));var _0x1c0082=_0x1e39cb[_0xc25e('0x7')](_0x2cf747,_0xc25e('0x8'),_0xc25e('0x9'));_0x1c0082+=_0x1e39cb['final'](_0xc25e('0x9'));var _0x2bc2ec=JSON[_0xc25e('0xa')](_0x1c0082);return _0x2bc2ec[_0xc25e('0xb')](_0x1b6d5b)?_0x2bc2ec[_0x1b6d5b]:null;}}return null;}function isLimit(_0x92ccc2,_0xa1525c,_0x999f67,_0x572fe1){var _0x32e5ae=_0xa1525c;return compose()[_0xc25e('0xc')](function(_0x44c939,_0x27436a,_0x4da293){return db[_0xc25e('0xd')]['findOne']({'where':{'id':0x1},'raw':!![]})['then'](function(_0x27de51){var _0x1b2b32=getValueFromLicense(_0x92ccc2,_0x27de51);return _0x1b2b32?_0x1b2b32:_0x32e5ae;})[_0xc25e('0xe')](function(_0x1d7669){_0x32e5ae=_0x1d7669;return _0x999f67['count'](_0x572fe1);})['then'](function(_0xa83c0d){if(_0xa83c0d>=_0x32e5ae){return _0x27436a[_0xc25e('0xf')](0x193)[_0xc25e('0x10')]({'message':util[_0xc25e('0x6')](_0xc25e('0x11'),_0x92ccc2)});}_0x4da293();})[_0xc25e('0x12')](function(_0x589a90){_0x4da293(_0x589a90);});});}function isUserLimit(){return isLimit('users',0x1,db[_0xc25e('0x13')],{'where':{'$or':[{'role':_0xc25e('0x14')},{'role':_0xc25e('0x15')}]}});}exports[_0xc25e('0x16')]=isUserLimit;
\ No newline at end of file
+var _0x45a8=['count','status','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','admin','user','isUserLimit','composable-middleware','../../mysqldb','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','base64','utf8','final','parse','use','License','then'];(function(_0x2d8fc2,_0x1c461d){var _0x3a9e53=function(_0x18941c){while(--_0x18941c){_0x2d8fc2['push'](_0x2d8fc2['shift']());}};_0x3a9e53(++_0x1c461d);}(_0x45a8,0x117));var _0x845a=function(_0x3ff58e,_0xc9ca44){_0x3ff58e=_0x3ff58e-0x0;var _0x23f36f=_0x45a8[_0x3ff58e];return _0x23f36f;};'use strict';var crypto=require('crypto');var util=require('util');var compose=require(_0x845a('0x0'));var db=require(_0x845a('0x1'))['db'];var config=require(_0x845a('0x2'));function getValueFromLicense(_0x8d319b,_0x39930e){if(_0x8d319b&&_0x39930e){if(_0x39930e[_0x845a('0x3')]&&_0x39930e[_0x845a('0x4')]){var _0x31bc10=_0x39930e[_0x845a('0x3')];var _0x2a53e0=_0x39930e[_0x845a('0x4')];var _0xb88f0=_0x31bc10[_0x845a('0x5')]('-')[0x4];var _0xacf3a4=_0x31bc10[_0x845a('0x5')]('-')[0x0];var _0x1408be=crypto[_0x845a('0x6')](_0x845a('0x7'),util[_0x845a('0x8')](_0x845a('0x9'),_0xb88f0,_0x31bc10,_0xacf3a4));var _0x3561a2=_0x1408be[_0x845a('0xa')](_0x2a53e0,_0x845a('0xb'),_0x845a('0xc'));_0x3561a2+=_0x1408be[_0x845a('0xd')](_0x845a('0xc'));var _0x487f98=JSON[_0x845a('0xe')](_0x3561a2);return _0x487f98['hasOwnProperty'](_0x8d319b)?_0x487f98[_0x8d319b]:null;}}return null;}function isLimit(_0x7ad76d,_0x27c060,_0x4cb1fe,_0x4622d5){var _0x15e2b4=_0x27c060;return compose()[_0x845a('0xf')](function(_0x555ce5,_0x71d93e,_0xdab440){return db[_0x845a('0x10')]['findOne']({'where':{'id':0x1},'raw':!![]})[_0x845a('0x11')](function(_0x5c4f44){var _0x1d7136=getValueFromLicense(_0x7ad76d,_0x5c4f44);return _0x1d7136?_0x1d7136:_0x15e2b4;})[_0x845a('0x11')](function(_0x38c562){_0x15e2b4=_0x38c562;return _0x4cb1fe[_0x845a('0x12')](_0x4622d5);})[_0x845a('0x11')](function(_0x271f8e){if(_0x271f8e>=_0x15e2b4){return _0x71d93e[_0x845a('0x13')](0x193)[_0x845a('0x14')]({'message':util[_0x845a('0x8')](_0x845a('0x15'),_0x7ad76d)});}_0xdab440();})[_0x845a('0x16')](function(_0x5ced3a){_0xdab440(_0x5ced3a);});});}function isUserLimit(){return isLimit(_0x845a('0x17'),0x1,db['User'],{'where':{'$or':[{'role':_0x845a('0x18')},{'role':_0x845a('0x19')}]}});}exports[_0x845a('0x1a')]=isUserLimit;
\ No newline at end of file
index 6aa6297..3f42f70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeec6=['utcOffset','minutes','seconds','moment','parseSearch','startsWith','[$or]','and','[$and]','split','length','slice','forEach','shift','match','filter','indexOf','map','conditions','push','buildExpression','DATE','operator','$between','value','includes','$gt','add','days','format','YYYY-MM-DD','castTo','text','field','\x20AS\x20','$ne','\x20OR\x20','$in','IN\x20?','$eq','$substring','$startsWith','$endsWith','LIKE\x20?','$lt','<\x20?','>\x20?','$lte','<=\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','$notIn','start'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xeec6,0xdb));var _0x6eec=function(_0xae9024,_0x17f58e){_0xae9024=_0xae9024-0x0;var _0x23e7d3=_0xeec6[_0xae9024];return _0x23e7d3;};'use strict';var _=require('lodash');var moment=require(_0x6eec('0x0'));exports[_0x6eec('0x1')]=function(_0x1a35e6){var _0x8e44e3={'conditions':[]};_0x8e44e3['sqlOperator']=_[_0x6eec('0x2')](_0x1a35e6,_0x6eec('0x3'))?'or':_0x6eec('0x4');var _0x1947b8=_0x1a35e6['replace'](_0x6eec('0x5'),'')['replace'](_0x6eec('0x3'),'')[_0x6eec('0x6')]('||');for(var _0x38eda3=0x0;_0x38eda3<_0x1947b8[_0x6eec('0x7')];_0x38eda3++){var _0x4792fd=_0x1947b8[_0x38eda3][_0x6eec('0x6')](':=');var _0x3bac83=_0x4792fd[0x0];var _0x24671e=_0x4792fd[_0x6eec('0x8')](0x1);_0x24671e[_0x6eec('0x9')](function(_0x205c68){var _0x282af8=_0x205c68[_0x6eec('0x6')]('[')[_0x6eec('0xa')]();var _0x4664fe=_0x205c68[_0x6eec('0xb')](/\[(.*?)\]/g);_0x4664fe[_0x6eec('0x9')](function(_0xeca727){var _0x3dc8cf=_0xeca727[_0x6eec('0x6')]('[')[_0x6eec('0xc')](function(_0x373bf7){return _0x373bf7[_0x6eec('0xd')](']')>-0x1;})[_0x6eec('0xe')](function(_0x592b19){return _0x592b19[_0x6eec('0x6')](']')[0x0];})[0x0];_0x8e44e3[_0x6eec('0xf')][_0x6eec('0x10')]({'field':_0x3bac83,'operator':_0x282af8,'value':_0x3dc8cf});});});}return _0x8e44e3;};exports[_0x6eec('0x11')]=function(_0x324516,_0x234e52,_0x5738e0){var _0x10d147={};if(_0x234e52===_0x6eec('0x12')){if(_0x5738e0[_0x6eec('0x13')]==='$eq'){_0x5738e0[_0x6eec('0x13')]=_0x6eec('0x14');_0x5738e0['value']+=','+_0x5738e0[_0x6eec('0x15')];}else if(_[_0x6eec('0x16')]([_0x6eec('0x17'),'$lte'],_0x5738e0['operator'])){_0x5738e0[_0x6eec('0x15')]=moment(_0x5738e0['value'])[_0x6eec('0x18')](0x1,_0x6eec('0x19'))[_0x6eec('0x1a')](_0x6eec('0x1b'));}}if(_0x5738e0['castTo']){_0x234e52=_0x5738e0[_0x6eec('0x1c')];_0x10d147[_0x6eec('0x1d')]='CAST('+_0x324516+'.'+_0x5738e0[_0x6eec('0x1e')]+_0x6eec('0x1f')+_0x5738e0[_0x6eec('0x1c')]+')\x20'+parseOperator(_0x5738e0['operator']);}else{_0x10d147['text']=_0x324516+'.'+_0x5738e0['field']+'\x20'+parseOperator(_0x5738e0[_0x6eec('0x13')]);}if(_[_0x6eec('0x16')]([_0x6eec('0x20'),'$notIn'],_0x5738e0[_0x6eec('0x13')]))_0x10d147['text']='('+_0x10d147[_0x6eec('0x1d')]+_0x6eec('0x21')+_0x324516+'.'+_0x5738e0[_0x6eec('0x1e')]+'\x20IS\x20NULL)';_0x10d147[_0x6eec('0x15')]=parseValue(_0x234e52,_0x5738e0[_0x6eec('0x13')],_0x5738e0[_0x6eec('0x15')]);return _0x10d147;};function parseOperator(_0x19a90d){var _0x5ef6e3;switch(_0x19a90d){case _0x6eec('0x22'):_0x5ef6e3=_0x6eec('0x23');break;case'$notIn':_0x5ef6e3='NOT\x20IN\x20?';break;case _0x6eec('0x24'):_0x5ef6e3='=\x20?';break;case _0x6eec('0x20'):_0x5ef6e3='<>\x20?';break;case _0x6eec('0x25'):case _0x6eec('0x26'):case _0x6eec('0x27'):_0x5ef6e3=_0x6eec('0x28');break;case _0x6eec('0x29'):_0x5ef6e3=_0x6eec('0x2a');break;case _0x6eec('0x17'):_0x5ef6e3=_0x6eec('0x2b');break;case _0x6eec('0x2c'):_0x5ef6e3=_0x6eec('0x2d');break;case _0x6eec('0x2e'):_0x5ef6e3=_0x6eec('0x2f');break;case _0x6eec('0x14'):_0x5ef6e3=_0x6eec('0x30');break;}return _0x5ef6e3;}function parseValue(_0x21396b,_0x19be0f,_0x3ec79b){var _0xec45ac={'start':undefined,'end':undefined};switch(_0x19be0f){case'$in':case _0x6eec('0x31'):_0xec45ac['start']=_0x3ec79b['split'](',');break;case _0x6eec('0x25'):_0xec45ac['start']='%'+_0x3ec79b+'%';break;case _0x6eec('0x26'):_0xec45ac[_0x6eec('0x32')]=_0x3ec79b+'%';break;case _0x6eec('0x27'):_0xec45ac[_0x6eec('0x32')]='%'+_0x3ec79b;break;case _0x6eec('0x14'):var _0x366c46=_0x3ec79b['split'](',');var _0x3ec79b=_0x366c46[_0x6eec('0xa')]();var _0x56655e=_0x366c46['pop']();if(_0x21396b==='DATE'){_0x3ec79b=moment(_0x3ec79b)[_0x6eec('0x33')](0x0,!![])[_0x6eec('0x1a')]();_0x56655e=moment(_0x56655e)[_0x6eec('0x33')](0x0,!![])[_0x6eec('0x18')](0x17,'hours')[_0x6eec('0x18')](0x3b,_0x6eec('0x34'))['add'](0x3b,_0x6eec('0x35'))[_0x6eec('0x1a')]();}_0xec45ac={'start':_0x3ec79b,'end':_0x56655e};break;default:_0xec45ac[_0x6eec('0x32')]=_0x3ec79b;break;}return _0xec45ac;}
\ No newline at end of file
+var _0x9a22=['seconds','lodash','moment','parseSearch','[$or]','and','replace','[$and]','split','length','slice','forEach','shift','match','filter','indexOf','map','conditions','push','DATE','operator','$eq','$between','value','includes','$gt','$lte','add','format','castTo','text','CAST(','\x20AS\x20','field','\x20OR\x20','\x20IS\x20NULL)','IN\x20?','=\x20?','<>\x20?','$startsWith','$lt','<\x20?','>\x20?','<=\x20?','$gte','>=\x20?','BETWEEN\x20?\x20AND\x20?','$in','$notIn','start','$endsWith','utcOffset','hours','minutes'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x9a22,0x145));var _0x29a2=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x9a22[_0x31e29a];return _0x32d892;};'use strict';var _=require(_0x29a2('0x0'));var moment=require(_0x29a2('0x1'));exports[_0x29a2('0x2')]=function(_0xd239ce){var _0x2b90aa={'conditions':[]};_0x2b90aa['sqlOperator']=_['startsWith'](_0xd239ce,_0x29a2('0x3'))?'or':_0x29a2('0x4');var _0x4169ea=_0xd239ce[_0x29a2('0x5')](_0x29a2('0x6'),'')['replace'](_0x29a2('0x3'),'')[_0x29a2('0x7')]('||');for(var _0x54a6b7=0x0;_0x54a6b7<_0x4169ea[_0x29a2('0x8')];_0x54a6b7++){var _0x87ca74=_0x4169ea[_0x54a6b7][_0x29a2('0x7')](':=');var _0x2bc7b5=_0x87ca74[0x0];var _0x5db8e5=_0x87ca74[_0x29a2('0x9')](0x1);_0x5db8e5[_0x29a2('0xa')](function(_0x20d767){var _0x346583=_0x20d767[_0x29a2('0x7')]('[')[_0x29a2('0xb')]();var _0x1c7efa=_0x20d767[_0x29a2('0xc')](/\[(.*?)\]/g);_0x1c7efa[_0x29a2('0xa')](function(_0x179c3e){var _0x549fcc=_0x179c3e['split']('[')[_0x29a2('0xd')](function(_0x52a722){return _0x52a722[_0x29a2('0xe')](']')>-0x1;})[_0x29a2('0xf')](function(_0x40978c){return _0x40978c[_0x29a2('0x7')](']')[0x0];})[0x0];_0x2b90aa[_0x29a2('0x10')][_0x29a2('0x11')]({'field':_0x2bc7b5,'operator':_0x346583,'value':_0x549fcc});});});}return _0x2b90aa;};exports['buildExpression']=function(_0x35aaaf,_0x276eef,_0x50b553){var _0x355a18={};if(_0x276eef===_0x29a2('0x12')){if(_0x50b553[_0x29a2('0x13')]===_0x29a2('0x14')){_0x50b553[_0x29a2('0x13')]=_0x29a2('0x15');_0x50b553[_0x29a2('0x16')]+=','+_0x50b553[_0x29a2('0x16')];}else if(_[_0x29a2('0x17')]([_0x29a2('0x18'),_0x29a2('0x19')],_0x50b553[_0x29a2('0x13')])){_0x50b553['value']=moment(_0x50b553[_0x29a2('0x16')])[_0x29a2('0x1a')](0x1,'days')[_0x29a2('0x1b')]('YYYY-MM-DD');}}if(_0x50b553['castTo']){_0x276eef=_0x50b553[_0x29a2('0x1c')];_0x355a18[_0x29a2('0x1d')]=_0x29a2('0x1e')+_0x35aaaf+'.'+_0x50b553['field']+_0x29a2('0x1f')+_0x50b553[_0x29a2('0x1c')]+')\x20'+parseOperator(_0x50b553[_0x29a2('0x13')]);}else{_0x355a18[_0x29a2('0x1d')]=_0x35aaaf+'.'+_0x50b553[_0x29a2('0x20')]+'\x20'+parseOperator(_0x50b553[_0x29a2('0x13')]);}if(_[_0x29a2('0x17')](['$ne','$notIn'],_0x50b553[_0x29a2('0x13')]))_0x355a18[_0x29a2('0x1d')]='('+_0x355a18['text']+_0x29a2('0x21')+_0x35aaaf+'.'+_0x50b553[_0x29a2('0x20')]+_0x29a2('0x22');_0x355a18[_0x29a2('0x16')]=parseValue(_0x276eef,_0x50b553[_0x29a2('0x13')],_0x50b553[_0x29a2('0x16')]);return _0x355a18;};function parseOperator(_0xb46e8){var _0x1ce514;switch(_0xb46e8){case'$in':_0x1ce514=_0x29a2('0x23');break;case'$notIn':_0x1ce514='NOT\x20IN\x20?';break;case _0x29a2('0x14'):_0x1ce514=_0x29a2('0x24');break;case'$ne':_0x1ce514=_0x29a2('0x25');break;case'$substring':case _0x29a2('0x26'):case'$endsWith':_0x1ce514='LIKE\x20?';break;case _0x29a2('0x27'):_0x1ce514=_0x29a2('0x28');break;case _0x29a2('0x18'):_0x1ce514=_0x29a2('0x29');break;case'$lte':_0x1ce514=_0x29a2('0x2a');break;case _0x29a2('0x2b'):_0x1ce514=_0x29a2('0x2c');break;case _0x29a2('0x15'):_0x1ce514=_0x29a2('0x2d');break;}return _0x1ce514;}function parseValue(_0x59443b,_0x1702f1,_0x3e9baf){var _0x7785cb={'start':undefined,'end':undefined};switch(_0x1702f1){case _0x29a2('0x2e'):case _0x29a2('0x2f'):_0x7785cb[_0x29a2('0x30')]=_0x3e9baf[_0x29a2('0x7')](',');break;case'$substring':_0x7785cb['start']='%'+_0x3e9baf+'%';break;case'$startsWith':_0x7785cb[_0x29a2('0x30')]=_0x3e9baf+'%';break;case _0x29a2('0x31'):_0x7785cb[_0x29a2('0x30')]='%'+_0x3e9baf;break;case _0x29a2('0x15'):var _0x5706f7=_0x3e9baf[_0x29a2('0x7')](',');var _0x3e9baf=_0x5706f7[_0x29a2('0xb')]();var _0xa514a8=_0x5706f7['pop']();if(_0x59443b==='DATE'){_0x3e9baf=moment(_0x3e9baf)[_0x29a2('0x32')](0x0,!![])['format']();_0xa514a8=moment(_0xa514a8)[_0x29a2('0x32')](0x0,!![])[_0x29a2('0x1a')](0x17,_0x29a2('0x33'))['add'](0x3b,_0x29a2('0x34'))[_0x29a2('0x1a')](0x3b,_0x29a2('0x35'))[_0x29a2('0x1b')]();}_0x7785cb={'start':_0x3e9baf,'end':_0xa514a8};break;default:_0x7785cb[_0x29a2('0x30')]=_0x3e9baf;break;}return _0x7785cb;}
\ No newline at end of file
index f68a43a..9e5a198 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23ea=['fields','filters','isEmpty','forOwn','find','type','isPlainObject','$gte','format','utc','$lte','subtract','uniqueid','isArray','split','limit','sort','map','indexOf','priority','cast','col','unsigned','substr','DESC','omit','length','isObject','unset','hasOwnProperty','match','^[+]?[0-9]*$','isEmail','getFullTextValue','\x22{EXPR}\x22','{EXPR}','forEach','replace','join','getOptions','query','$id','name','intersection','attributes','offset','order','where','pick','filter','object','columns','value','merge','VIRTUAL','lower','include','includeAll','push','lodash','sequelize','moment','../../mysqldb','parse','keys','includes','model','alias'];(function(_0x199391,_0x525c67){var _0x13c9bd=function(_0x20aef7){while(--_0x20aef7){_0x199391['push'](_0x199391['shift']());}};_0x13c9bd(++_0x525c67);}(_0x23ea,0xc3));var _0xa23e=function(_0x2d120a,_0x5e4d33){_0x2d120a=_0x2d120a-0x0;var _0x205747=_0x23ea[_0x2d120a];return _0x205747;};'use strict';var _=require(_0xa23e('0x0'));var sequelize=require(_0xa23e('0x1'));var moment=require(_0xa23e('0x2'));var db=require(_0xa23e('0x3'))['db'];var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x38f303){var _0x168c22=['ne'];try{var _0x434cbd=JSON[_0xa23e('0x4')](_0x38f303);var _0xf8cea8=Object[_0xa23e('0x5')](_0x434cbd)[0x0];return _0x168c22[_0xa23e('0x6')](_0xf8cea8);}catch(_0x582593){return![];}}function getOperatorValue(_0x3baf3d){var _0x423454=JSON[_0xa23e('0x4')](_0x3baf3d);var _0x90bd9a=Object[_0xa23e('0x5')](_0x423454)[0x0];var _0x1d2a99=_0x423454[_0x90bd9a];return{['$'+_0x90bd9a]:_0x1d2a99};}function parseIncludeModel(_0x4e5680){var _0x57dd55=JSON[_0xa23e('0x4')](_0x4e5680);return{'model':db[_0x57dd55[_0xa23e('0x7')]],'as':_0x57dd55[_0xa23e('0x8')],'attributes':_0x57dd55[_0xa23e('0x9')],'raw':_0x57dd55['raw']};}exports['fields']=function(_0x1d4a1f){var _0x33732b=null;if(_0x1d4a1f){_0x33732b=_0x1d4a1f['split'](',');}return _0x33732b;};exports[_0xa23e('0xa')]=function(_0x547bc0,_0x4c7ab0){var _0x1c9da1={};if(!_[_0xa23e('0xb')](_0x547bc0)){_[_0xa23e('0xc')](_0x547bc0,function(_0x2bc00f,_0x59e043){try{if(_0x4c7ab0){var _0x13aec1=_[_0xa23e('0xd')](_0x4c7ab0,{'name':_0x59e043})||{};if(hasSequelizeOperator(_0x2bc00f)){_0x1c9da1[_0x59e043]=getOperatorValue(_0x2bc00f);}else if(_0x13aec1[_0xa23e('0xe')]==='DATE'&&_[_0xa23e('0xf')](_0x2bc00f)){var _0x3bba28=JSON[_0xa23e('0x4')](_0x2bc00f);var _0x56a9e7={'$gte':moment(moment(_0x3bba28[_0xa23e('0x10')])[_0xa23e('0x11')]('YYYY-MM-DD'))[_0xa23e('0x12')]()['format'](),'$lte':moment(moment(_0x3bba28[_0xa23e('0x13')])[_0xa23e('0x11')]('YYYY-MM-DD'))[_0xa23e('0x12')]()[_0xa23e('0x14')](0x1,'s')[_0xa23e('0x11')]()};_0x1c9da1[_0x59e043]=_0x56a9e7;}else if(_0x13aec1['name']===_0xa23e('0x15')){_0x1c9da1[_0x59e043]=_0x2bc00f;}else{_0x1c9da1[_0x59e043]=_[_0xa23e('0x16')](_0x2bc00f)?_0x2bc00f:JSON[_0xa23e('0x4')](_0x2bc00f);}}else{_0x1c9da1[_0x59e043]=_[_0xa23e('0x16')](_0x2bc00f)?_0x2bc00f:JSON[_0xa23e('0x4')](_0x2bc00f);}}catch(_0x7783bc){_0x1c9da1[_0x59e043]=_0x2bc00f[_0xa23e('0x17')](',');}});}return _0x1c9da1;};exports[_0xa23e('0x18')]=function(_0x455325){_0x455325=parseInt(_0x455325,0xa);if(!_0x455325||_0x455325<0x0){_0x455325=LIMIT_VALUE;}return _0x455325;};exports['offset']=function(_0x18a9ff){_0x18a9ff=parseInt(_0x18a9ff,0xa);if(!_0x18a9ff||_0x18a9ff<0x0){_0x18a9ff=0x0;}return _0x18a9ff;};exports[_0xa23e('0x19')]=function(_0x366a22){var _0x2f6069,_0x4b44e1=null;if(_0x366a22){_0x2f6069=_0x366a22[_0xa23e('0x17')](',');_0x4b44e1=_[_0xa23e('0x1a')](_0x2f6069,function(_0x54b029){if(_0x54b029[_0xa23e('0x1b')]('-')===0x0){return[_0x54b029===_0xa23e('0x1c')?sequelize[_0xa23e('0x1d')](sequelize[_0xa23e('0x1e')](_0xa23e('0x1c')),_0xa23e('0x1f')):_0x54b029[_0xa23e('0x20')](0x1),_0xa23e('0x21')];}else{return[_0x54b029==='priority'?sequelize[_0xa23e('0x1d')](sequelize['col'](_0xa23e('0x1c')),_0xa23e('0x1f')):_0x54b029,'ASC'];}});}return _0x4b44e1;};exports[_0xa23e('0x22')]=function(_0x17bbf4,_0x343958){if(_['isEmpty'](_0x17bbf4)){return _0x17bbf4;}if(_[_0xa23e('0x16')](_0x17bbf4)){for(var _0x43f96b=0x0;_0x43f96b<_0x17bbf4[_0xa23e('0x23')];_0x43f96b+=0x1){_0x17bbf4[_0x43f96b]=this[_0xa23e('0x22')](_0x17bbf4[_0x43f96b],_0x343958);}return _0x17bbf4;}if(!_[_0xa23e('0x24')](_0x17bbf4)){return _0x17bbf4;}if(_['isString'](_0x343958)){_0x343958=[_0x343958];}if(!_[_0xa23e('0x16')](_0x343958)){return _0x17bbf4;}for(var _0x1b1032=0x0;_0x1b1032<_0x343958[_0xa23e('0x23')];_0x1b1032+=0x1){_[_0xa23e('0x25')](_0x17bbf4,_0x343958[_0x1b1032]);}for(var _0x54a8c8 in _0x17bbf4){if(_0x17bbf4[_0xa23e('0x26')](_0x54a8c8)){_0x17bbf4[_0x54a8c8]=this[_0xa23e('0x22')](_0x17bbf4[_0x54a8c8],_0x343958);}}return _0x17bbf4;};exports['isNumeric']=function(_0x11b009){return _0x11b009[_0xa23e('0x27')](RegExp(_0xa23e('0x28')))?!![]:![];};exports[_0xa23e('0x29')]=function(_0x3df53a){return _0x3df53a['match'](/^\S+@\S+$/)?!![]:![];};exports[_0xa23e('0x2a')]=function(_0x3eee6c,_0x1bc7be){var _0x3b08b2=[];var _0x311b11=/[ `!@#$%^&*()_\-?~]/;var _0xd679df=_0x1bc7be?_0xa23e('0x2b'):_0xa23e('0x2c');_0x3eee6c[_0xa23e('0x17')](/[ ,]+/)[_0xa23e('0x2d')](function(_0x4a27e5){_0x4a27e5=_0x4a27e5[_0xa23e('0x2e')](/([^:]")"+/g,'$1');_0x4a27e5='+'+_0x4a27e5+'*';var _0x1596b0=_0x4a27e5[_0xa23e('0x27')](_0x311b11);if(_0x1596b0){_0x4a27e5='\x22'+_0x4a27e5+'\x22';}_0x3b08b2['push'](_0x4a27e5);});_0xd679df=_0xd679df[_0xa23e('0x2e')](_0xa23e('0x2c'),_0x3b08b2[_0xa23e('0x2f')]('\x20'));return _0xd679df;};exports[_0xa23e('0x30')]=function(_0x24212c,_0x1a627e,_0x1585a8){var _0x428e05={},_0x46235b={};if(_0x1a627e[_0xa23e('0x31')][_0xa23e('0x32')]){_0x1a627e[_0xa23e('0x31')]['id']=_0x1a627e[_0xa23e('0x31')]['$id'];delete _0x1a627e[_0xa23e('0x31')]['$id'];}_0x428e05[_0xa23e('0x7')]=_['map'](_0x24212c,_0xa23e('0x33'));_0x428e05[_0xa23e('0x31')]=_[_0xa23e('0x5')](_0x1a627e[_0xa23e('0x31')]);_0x428e05[_0xa23e('0xa')]=_[_0xa23e('0x34')](_0x428e05[_0xa23e('0x7')],_0x428e05[_0xa23e('0x31')]);_0x46235b['attributes']=_[_0xa23e('0x34')](_0x428e05[_0xa23e('0x7')],this['fields'](_0x1a627e[_0xa23e('0x31')][_0xa23e('0x9')]));_0x46235b[_0xa23e('0x35')]=_0x46235b[_0xa23e('0x35')][_0xa23e('0x23')]?_0x46235b[_0xa23e('0x35')]:_0x428e05[_0xa23e('0x7')];if(!_0x1a627e[_0xa23e('0x31')][_0xa23e('0x26')]('nolimit')){_0x46235b[_0xa23e('0x18')]=this[_0xa23e('0x18')](_0x1a627e['query'][_0xa23e('0x18')]);_0x46235b[_0xa23e('0x36')]=this[_0xa23e('0x36')](_0x1a627e[_0xa23e('0x31')][_0xa23e('0x36')]);}_0x46235b[_0xa23e('0x37')]=this['sort'](_0x1a627e[_0xa23e('0x31')]['sort']);_0x46235b[_0xa23e('0x38')]=this['filters'](_[_0xa23e('0x39')](_0x1a627e[_0xa23e('0x31')],_0x428e05[_0xa23e('0xa')]),_0x24212c);if(_0x1a627e[_0xa23e('0x31')]['filter']){var _0x3fbd17=_0x24212c;var _0x8a282d=_0x1a627e['query'][_0xa23e('0x3a')];if(typeof _0x8a282d===_0xa23e('0x3b')){_0x3fbd17=_[_0xa23e('0x3a')](_0x24212c,function(_0x52ba99){return _[_0xa23e('0x6')](_0x8a282d[_0xa23e('0x3c')],_0x52ba99[_0xa23e('0x33')]);});_0x8a282d=_0x8a282d[_0xa23e('0x3d')];}_0x46235b['where']=_[_0xa23e('0x3e')](_0x46235b[_0xa23e('0x38')],{'$or':_['map'](_0x3fbd17,function(_0x3e4cea){if(_0x3e4cea[_0xa23e('0xe')]!==_0xa23e('0x3f')){if(_0x1585a8){return sequelize[_0xa23e('0x38')](sequelize['fn'](_0xa23e('0x40'),sequelize[_0xa23e('0x1e')](_0x3e4cea[_0xa23e('0x33')])),{'$like':sequelize['fn'](_0xa23e('0x40'),'%'+_0x1a627e[_0xa23e('0x31')][_0xa23e('0x3a')]+'%')});}else{var _0x130dad={};_0x130dad[_0x3e4cea[_0xa23e('0x33')]]={'$like':'%'+_0x1a627e[_0xa23e('0x31')][_0xa23e('0x3a')]+'%'};return _0x130dad;}}})});}_0x46235b=_[_0xa23e('0x3e')]({},_0x46235b,_0x1a627e['options']);return _0x46235b;};exports[_0xa23e('0x41')]=function(_0x19b9aa){var _0x334cff=[];if(_0x19b9aa[_0xa23e('0x42')]){_0x334cff[_0xa23e('0x43')]({'all':!![]});}else if(_0x19b9aa[_0xa23e('0x41')]){if(Array[_0xa23e('0x16')](_0x19b9aa['include'])){_0x334cff=Object[_0xa23e('0x5')](_0x19b9aa['include'])[_0xa23e('0x1a')](function(_0x47afce){return parseIncludeModel(_0x19b9aa[_0xa23e('0x41')][_0x47afce]);});}else{var _0x27290b=parseIncludeModel(_0x19b9aa[_0xa23e('0x41')]);_0x334cff[_0xa23e('0x43')](_0x27290b);}}return _0x334cff;};
\ No newline at end of file
+var _0x5057=['query','$id','intersection','attributes','nolimit','offset','order','where','filter','columns','value','merge','VIRTUAL','lower','options','include','includeAll','lodash','sequelize','moment','parse','keys','includes','model','alias','fields','split','filters','isEmpty','find','type','isPlainObject','$gte','YYYY-MM-DD','format','$lte','utc','name','uniqueid','isArray','limit','sort','map','indexOf','col','priority','unsigned','substr','cast','omit','length','isString','unset','hasOwnProperty','isNumeric','match','^[+]?[0-9]*$','isEmail','\x22{EXPR}\x22','forEach','push','replace','{EXPR}','join'];(function(_0x54ce97,_0x1feefa){var _0x3f86af=function(_0x1329e0){while(--_0x1329e0){_0x54ce97['push'](_0x54ce97['shift']());}};_0x3f86af(++_0x1feefa);}(_0x5057,0x151));var _0x7505=function(_0x4d19b0,_0x37eb76){_0x4d19b0=_0x4d19b0-0x0;var _0x3e896b=_0x5057[_0x4d19b0];return _0x3e896b;};'use strict';var _=require(_0x7505('0x0'));var sequelize=require(_0x7505('0x1'));var moment=require(_0x7505('0x2'));var db=require('../../mysqldb')['db'];var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x25f187){var _0x1db2e4=['ne'];try{var _0x3a0a9e=JSON[_0x7505('0x3')](_0x25f187);var _0x4c1825=Object[_0x7505('0x4')](_0x3a0a9e)[0x0];return _0x1db2e4[_0x7505('0x5')](_0x4c1825);}catch(_0x5800d1){return![];}}function getOperatorValue(_0x28aadb){var _0x3dd50c=JSON[_0x7505('0x3')](_0x28aadb);var _0x273f93=Object[_0x7505('0x4')](_0x3dd50c)[0x0];var _0x2f2772=_0x3dd50c[_0x273f93];return{['$'+_0x273f93]:_0x2f2772};}function parseIncludeModel(_0x4e3c23){var _0x221047=JSON['parse'](_0x4e3c23);return{'model':db[_0x221047[_0x7505('0x6')]],'as':_0x221047[_0x7505('0x7')],'attributes':_0x221047[_0x7505('0x8')],'raw':_0x221047['raw']};}exports['fields']=function(_0x4518ab){var _0x5eb19a=null;if(_0x4518ab){_0x5eb19a=_0x4518ab[_0x7505('0x9')](',');}return _0x5eb19a;};exports[_0x7505('0xa')]=function(_0x32112f,_0x5a1827){var _0x1825cf={};if(!_[_0x7505('0xb')](_0x32112f)){_['forOwn'](_0x32112f,function(_0xe783cd,_0x4e85b2){try{if(_0x5a1827){var _0xa23f11=_[_0x7505('0xc')](_0x5a1827,{'name':_0x4e85b2})||{};if(hasSequelizeOperator(_0xe783cd)){_0x1825cf[_0x4e85b2]=getOperatorValue(_0xe783cd);}else if(_0xa23f11[_0x7505('0xd')]==='DATE'&&_[_0x7505('0xe')](_0xe783cd)){var _0x5eeb14=JSON[_0x7505('0x3')](_0xe783cd);var _0x5e1ac0={'$gte':moment(moment(_0x5eeb14[_0x7505('0xf')])['format'](_0x7505('0x10')))['utc']()[_0x7505('0x11')](),'$lte':moment(moment(_0x5eeb14[_0x7505('0x12')])[_0x7505('0x11')](_0x7505('0x10')))[_0x7505('0x13')]()['subtract'](0x1,'s')[_0x7505('0x11')]()};_0x1825cf[_0x4e85b2]=_0x5e1ac0;}else if(_0xa23f11[_0x7505('0x14')]===_0x7505('0x15')){_0x1825cf[_0x4e85b2]=_0xe783cd;}else{_0x1825cf[_0x4e85b2]=_[_0x7505('0x16')](_0xe783cd)?_0xe783cd:JSON[_0x7505('0x3')](_0xe783cd);}}else{_0x1825cf[_0x4e85b2]=_[_0x7505('0x16')](_0xe783cd)?_0xe783cd:JSON[_0x7505('0x3')](_0xe783cd);}}catch(_0x3e2ea4){_0x1825cf[_0x4e85b2]=_0xe783cd[_0x7505('0x9')](',');}});}return _0x1825cf;};exports[_0x7505('0x17')]=function(_0x3c8da0){_0x3c8da0=parseInt(_0x3c8da0,0xa);if(!_0x3c8da0||_0x3c8da0<0x0){_0x3c8da0=LIMIT_VALUE;}return _0x3c8da0;};exports['offset']=function(_0x5237c4){_0x5237c4=parseInt(_0x5237c4,0xa);if(!_0x5237c4||_0x5237c4<0x0){_0x5237c4=0x0;}return _0x5237c4;};exports[_0x7505('0x18')]=function(_0x3aa819){var _0x1dd6b7,_0x59462c=null;if(_0x3aa819){_0x1dd6b7=_0x3aa819[_0x7505('0x9')](',');_0x59462c=_[_0x7505('0x19')](_0x1dd6b7,function(_0xc2f5c6){if(_0xc2f5c6[_0x7505('0x1a')]('-')===0x0){return[_0xc2f5c6==='priority'?sequelize['cast'](sequelize[_0x7505('0x1b')](_0x7505('0x1c')),_0x7505('0x1d')):_0xc2f5c6[_0x7505('0x1e')](0x1),'DESC'];}else{return[_0xc2f5c6===_0x7505('0x1c')?sequelize[_0x7505('0x1f')](sequelize[_0x7505('0x1b')](_0x7505('0x1c')),_0x7505('0x1d')):_0xc2f5c6,'ASC'];}});}return _0x59462c;};exports[_0x7505('0x20')]=function(_0x3044bb,_0x515785){if(_[_0x7505('0xb')](_0x3044bb)){return _0x3044bb;}if(_[_0x7505('0x16')](_0x3044bb)){for(var _0x5cc785=0x0;_0x5cc785<_0x3044bb[_0x7505('0x21')];_0x5cc785+=0x1){_0x3044bb[_0x5cc785]=this[_0x7505('0x20')](_0x3044bb[_0x5cc785],_0x515785);}return _0x3044bb;}if(!_['isObject'](_0x3044bb)){return _0x3044bb;}if(_[_0x7505('0x22')](_0x515785)){_0x515785=[_0x515785];}if(!_['isArray'](_0x515785)){return _0x3044bb;}for(var _0x4a79a9=0x0;_0x4a79a9<_0x515785['length'];_0x4a79a9+=0x1){_[_0x7505('0x23')](_0x3044bb,_0x515785[_0x4a79a9]);}for(var _0x5c1ba1 in _0x3044bb){if(_0x3044bb[_0x7505('0x24')](_0x5c1ba1)){_0x3044bb[_0x5c1ba1]=this[_0x7505('0x20')](_0x3044bb[_0x5c1ba1],_0x515785);}}return _0x3044bb;};exports[_0x7505('0x25')]=function(_0x8788a2){return _0x8788a2[_0x7505('0x26')](RegExp(_0x7505('0x27')))?!![]:![];};exports[_0x7505('0x28')]=function(_0x44eb42){return _0x44eb42[_0x7505('0x26')](/^\S+@\S+$/)?!![]:![];};exports['getFullTextValue']=function(_0x49253d,_0x3959c0){var _0x2ad434=[];var _0x23d0f8=/[ `!@#$%^&*()_\-?~]/;var _0xa118b=_0x3959c0?_0x7505('0x29'):'{EXPR}';_0x49253d[_0x7505('0x9')](/[ ,]+/)[_0x7505('0x2a')](function(_0x25825b){_0x25825b=_0x25825b['replace'](/([^:]")"+/g,'$1');_0x25825b='+'+_0x25825b+'*';var _0x4483e0=_0x25825b['match'](_0x23d0f8);if(_0x4483e0){_0x25825b='\x22'+_0x25825b+'\x22';}_0x2ad434[_0x7505('0x2b')](_0x25825b);});_0xa118b=_0xa118b[_0x7505('0x2c')](_0x7505('0x2d'),_0x2ad434[_0x7505('0x2e')]('\x20'));return _0xa118b;};exports['getOptions']=function(_0x20e0bc,_0x51a16a,_0x10cd4d){var _0x1d0c75={},_0x4bd287={};if(_0x51a16a[_0x7505('0x2f')]['$id']){_0x51a16a[_0x7505('0x2f')]['id']=_0x51a16a[_0x7505('0x2f')][_0x7505('0x30')];delete _0x51a16a[_0x7505('0x2f')]['$id'];}_0x1d0c75[_0x7505('0x6')]=_[_0x7505('0x19')](_0x20e0bc,'name');_0x1d0c75[_0x7505('0x2f')]=_[_0x7505('0x4')](_0x51a16a['query']);_0x1d0c75[_0x7505('0xa')]=_[_0x7505('0x31')](_0x1d0c75[_0x7505('0x6')],_0x1d0c75[_0x7505('0x2f')]);_0x4bd287[_0x7505('0x32')]=_['intersection'](_0x1d0c75[_0x7505('0x6')],this[_0x7505('0x8')](_0x51a16a[_0x7505('0x2f')][_0x7505('0x8')]));_0x4bd287[_0x7505('0x32')]=_0x4bd287[_0x7505('0x32')]['length']?_0x4bd287['attributes']:_0x1d0c75[_0x7505('0x6')];if(!_0x51a16a[_0x7505('0x2f')]['hasOwnProperty'](_0x7505('0x33'))){_0x4bd287[_0x7505('0x17')]=this[_0x7505('0x17')](_0x51a16a[_0x7505('0x2f')][_0x7505('0x17')]);_0x4bd287[_0x7505('0x34')]=this[_0x7505('0x34')](_0x51a16a[_0x7505('0x2f')][_0x7505('0x34')]);}_0x4bd287[_0x7505('0x35')]=this[_0x7505('0x18')](_0x51a16a[_0x7505('0x2f')]['sort']);_0x4bd287[_0x7505('0x36')]=this[_0x7505('0xa')](_['pick'](_0x51a16a[_0x7505('0x2f')],_0x1d0c75[_0x7505('0xa')]),_0x20e0bc);if(_0x51a16a[_0x7505('0x2f')][_0x7505('0x37')]){var _0x36122a=_0x20e0bc;var _0x25bbc6=_0x51a16a[_0x7505('0x2f')][_0x7505('0x37')];if(typeof _0x25bbc6==='object'){_0x36122a=_['filter'](_0x20e0bc,function(_0x179200){return _['includes'](_0x25bbc6[_0x7505('0x38')],_0x179200[_0x7505('0x14')]);});_0x25bbc6=_0x25bbc6[_0x7505('0x39')];}_0x4bd287[_0x7505('0x36')]=_[_0x7505('0x3a')](_0x4bd287[_0x7505('0x36')],{'$or':_[_0x7505('0x19')](_0x36122a,function(_0x503203){if(_0x503203[_0x7505('0xd')]!==_0x7505('0x3b')){if(_0x10cd4d){return sequelize['where'](sequelize['fn'](_0x7505('0x3c'),sequelize[_0x7505('0x1b')](_0x503203['name'])),{'$like':sequelize['fn']('lower','%'+_0x51a16a['query'][_0x7505('0x37')]+'%')});}else{var _0x520895={};_0x520895[_0x503203[_0x7505('0x14')]]={'$like':'%'+_0x51a16a[_0x7505('0x2f')][_0x7505('0x37')]+'%'};return _0x520895;}}})});}_0x4bd287=_[_0x7505('0x3a')]({},_0x4bd287,_0x51a16a[_0x7505('0x3d')]);return _0x4bd287;};exports[_0x7505('0x3e')]=function(_0x227fe2){var _0x283299=[];if(_0x227fe2[_0x7505('0x3f')]){_0x283299[_0x7505('0x2b')]({'all':!![]});}else if(_0x227fe2[_0x7505('0x3e')]){if(Array[_0x7505('0x16')](_0x227fe2[_0x7505('0x3e')])){_0x283299=Object[_0x7505('0x4')](_0x227fe2[_0x7505('0x3e')])[_0x7505('0x19')](function(_0x297d80){return parseIncludeModel(_0x227fe2[_0x7505('0x3e')][_0x297d80]);});}else{var _0xf67fdf=parseIncludeModel(_0x227fe2[_0x7505('0x3e')]);_0x283299[_0x7505('0x2b')](_0xf67fdf);}}return _0x283299;};
\ No newline at end of file
index b94176d..009bfbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31f0=['mailStatus','openchannelStatus','smsStatus','whatsappStatus','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','merge','catch','getRealtimeAgents','*pause','busy','isArray','map','findOne','all','flatten','value','getAgentIdsByQueues','includes','getAgentIdsByStatus','resolve','User','findAll','name','fullname','faxPause','mailPause','openchannelPause','find','globalStatus','getSortedAgentsIdsByStatus','split','fields','startsWith','DESC','ASC','getUpdatedSortOptions','fullname,internal','internal','indexOf','sort','pauseType','toLowerCase','sortAgentsByStatus','userpic','lastPauseAt','address','chatCapacity','openchannelCapacity','mailCapacity','smsCapacity','chatCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','faxCurrentCapacity','chatStatusTime','mailStatusTime','smsStatusTime','faxStatusTime','queue','screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','online','omit','pick','role','lastLoginAt','faxStatus','openchannelStatusTime','voiceStatusTime','whatsappStatusTime','faxCapacity','openchannelCurrentCapacity','destconnectedlinenum','onhold','getRealtimeAgentsQueryFields','lodash','../../mysqldb','http','client','chatPause','smsPause','whatsappPause','every','filter','length','idle','unknown','unavailable','ringing','isNil','voiceStatus','voicePause','pause','chatStatus'];(function(_0x5d9867,_0x5e9030){var _0x7d2118=function(_0x2e5149){while(--_0x2e5149){_0x5d9867['push'](_0x5d9867['shift']());}};_0x7d2118(++_0x5e9030);}(_0x31f0,0xb7));var _0x031f=function(_0x1fe9a4,_0xba8fb){_0x1fe9a4=_0x1fe9a4-0x0;var _0x2750be=_0x31f0[_0x1fe9a4];return _0x2750be;};'use strict';var _=require(_0x031f('0x0'));var jayson=require('jayson/promise');var db=require(_0x031f('0x1'))['db'];var amiClient=jayson['client'][_0x031f('0x2')]({'port':0x232a});var routingClient=jayson[_0x031f('0x3')][_0x031f('0x2')]({'port':0x232c});function isAgentPaused(_0xf20620,_0x526a45){var _0x3c0612=[_0xf20620[_0x031f('0x4')],_0xf20620['faxPause'],_0xf20620['mailPause'],_0xf20620['openchannelPause'],_0xf20620[_0x031f('0x5')],_0xf20620['voicePause'],_0xf20620[_0x031f('0x6')]];if(!_0x526a45)return _[_0x031f('0x7')](_0x3c0612);var _0x2569b6=_[_0x031f('0x8')](_0x3c0612);return _0x2569b6['length']>0x0&&_0x2569b6[_0x031f('0x9')]<_0x3c0612[_0x031f('0x9')]?!![]:![];}function isIdle(_0x327f11){return _0x327f11===_0x031f('0xa')||_0x327f11===_0x031f('0xb')||_0x327f11===_0x031f('0xc')||_0x327f11===_0x031f('0xd')||_[_0x031f('0xe')](_0x327f11);}function isAgentIdle(_0x4df318){if(_0x4df318[_0x031f('0xf')]!==_0x031f('0xa')&&_0x4df318[_0x031f('0x10')]){_0x4df318[_0x031f('0xf')]=_0x031f('0x11');return![];}return _[_0x031f('0x7')]([_0x4df318[_0x031f('0x12')],_0x4df318['faxStatus'],_0x4df318[_0x031f('0x13')],_0x4df318[_0x031f('0x14')],_0x4df318[_0x031f('0x15')],_0x4df318[_0x031f('0xf')],_0x4df318[_0x031f('0x16')]],isIdle);}function getRealtimeAgents(){return amiClient['request']('Agents',{})[_0x031f('0x17')](function(_0x3a10aa){if(_0x3a10aa[_0x031f('0x18')]){throw new Error(_0x031f('0x19'));}var _0x5196b1=_0x3a10aa[_0x031f('0x1a')];return routingClient[_0x031f('0x1b')]('Agents',{})[_0x031f('0x17')](function(_0x535e70){if(_0x535e70[_0x031f('0x18')]){throw new Error(_0x031f('0x1c'));}var _0x563bc8=_0x535e70[_0x031f('0x1a')];return _[_0x031f('0x1d')]({},_0x5196b1,_0x563bc8);});})[_0x031f('0x1e')](function(_0x1b76d6){throw _0x1b76d6;});}exports[_0x031f('0x1f')]=getRealtimeAgents;function getAgentStatus(_0xf76f1b){var _0x345bde=_0x031f('0xb');if(isAgentPaused(_0xf76f1b))_0x345bde='pause';else if(isAgentPaused(_0xf76f1b,!![]))_0x345bde=_0x031f('0x20');else if(isAgentIdle(_0xf76f1b))_0x345bde=_0x031f('0xa');else _0x345bde=_0x031f('0x21');return _0x345bde;}exports['getAgentStatus']=getAgentStatus;function getAgentIdsByQueues(_0x5c4184,_0xa11a2b){var _0x4d0f92=_[_0x031f('0x22')](_0x5c4184)?_0x5c4184:[_0x5c4184];var _0x57f6c4=_['startCase'](_0xa11a2b)+'Queue';var _0x971691=_[_0x031f('0x23')](_0x4d0f92,function(_0x2920cd){return db[_0x57f6c4][_0x031f('0x24')]({'where':{'id':_0x2920cd}})['then'](function(_0x374b65){if(!_0x374b65)return[];return _0x374b65['getAgents']({'attributes':['id'],'raw':!![]});});});return Promise[_0x031f('0x25')](_0x971691)[_0x031f('0x17')](function(_0xfa77b1){var _0x567666=_(_0xfa77b1)[_0x031f('0x26')]()[_0x031f('0x23')]('id')['uniq']()[_0x031f('0x27')]();return _0x567666;});}exports[_0x031f('0x28')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x2403e9,_0x5395ea,_0xa308b){try{if(_0x5395ea[_0x031f('0x9')]>0x0){_0x2403e9=_0x2403e9[_0x031f('0x8')](function(_0xaf5bea){return _0x5395ea[_0x031f('0x29')](_0xaf5bea['id']);});}var _0x301bd2=_0x2403e9['filter'](function(_0x1f62eb){var _0xab24ad=_0x031f('0x21');if(isAgentIdle(_0x1f62eb)){_0xab24ad=_0x031f('0xa');}return _0xab24ad===_0xa308b;});return _[_0x031f('0x23')](_0x301bd2,'id');}catch(_0x2d24f0){throw _0x2d24f0;}}exports[_0x031f('0x2a')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x87dc07,_0x2034ac,_0xfc4a89){return Promise[_0x031f('0x2b')]()['then'](function(){if(_0x2034ac[_0x031f('0x9')]>0x0){_0x87dc07=_0x87dc07[_0x031f('0x8')](function(_0xb3a6bd){return _0x2034ac[_0x031f('0x29')](_0xb3a6bd['id']);});}return _0x87dc07;})[_0x031f('0x17')](function(){return db[_0x031f('0x2c')][_0x031f('0x2d')]({'attributes':['id',_0x031f('0x2e'),_0x031f('0x2f'),_0x031f('0x4'),_0x031f('0x30'),_0x031f('0x31'),_0x031f('0x32'),'smsPause',_0x031f('0x10'),_0x031f('0x6'),'pauseType'],'where':{'id':{'$in':_[_0x031f('0x23')](_0x87dc07,'id')}},'raw':!![]});})[_0x031f('0x17')](function(_0x4ec696){return _0x4ec696[_0x031f('0x23')](function(_0x22e486){var _0x41750a=_[_0x031f('0x33')](_0x87dc07,['id',_0x22e486['id']]);var _0x4b5c42=filterAgentAttributes(_0x41750a);_['merge'](_0x22e486,_0x4b5c42);_0x22e486[_0x031f('0x34')]=getAgentStatus(_0x22e486);return _0x22e486;});})['then'](function(_0x43ab76){var _0x2aa0aa=sortAgentsByStatus(_0x43ab76,_0xfc4a89);return _[_0x031f('0x23')](_0x2aa0aa,'id');})['catch'](function(_0x5c33c5){throw _0x5c33c5;});}exports[_0x031f('0x35')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x5ed480){var _0x57b9c8={'fields':[],'order':null};var _0x2d489a=_0x5ed480[_0x031f('0x36')](',');_0x57b9c8[_0x031f('0x37')]=_[_0x031f('0x8')](_0x2d489a,function(_0x11c03c){if(!_0x11c03c[_0x031f('0x29')](_0x031f('0x34'))){return!![];}_0x57b9c8['order']=_[_0x031f('0x38')](_0x11c03c,'-')?_0x031f('0x39'):_0x031f('0x3a');return![];});return _0x57b9c8;}exports[_0x031f('0x3b')]=getUpdatedSortOptions;function validateSortParameter(_0x58daa2){if(!_0x58daa2){_0x58daa2=_0x031f('0x3c');}if(_0x58daa2[_0x031f('0x29')](_0x031f('0x2f'))&&!_0x58daa2['includes'](_0x031f('0x3d'))){var _0x3b504c=_0x58daa2['substring'](0x0,_0x58daa2[_0x031f('0x3e')](_0x031f('0x2f')));_0x58daa2+=','+_0x3b504c+'internal';}return _0x58daa2;}exports['validateSortParameter']=validateSortParameter;function sortAgentsByStatus(_0x178135,_0x1d85bb){var _0x9efbc4=_0x178135[_0x031f('0x3f')](function(_0x2691b7,_0xf0fb95){if(_0x2691b7[_0x031f('0x34')]===_0xf0fb95['globalStatus']){if(_0x2691b7[_0x031f('0x34')]===_0x031f('0x11')){if(_0x1d85bb==='DESC'){return(_0x2691b7[_0x031f('0x40')]||'')<(_0xf0fb95['pauseType']||'')||_0x2691b7[_0x031f('0x2f')][_0x031f('0x41')]()>_0xf0fb95['fullname'][_0x031f('0x41')]()?0x1:-0x1;}else{return(_0x2691b7[_0x031f('0x40')]||'')<(_0xf0fb95[_0x031f('0x40')]||'')||_0x2691b7['fullname'][_0x031f('0x41')]()>_0xf0fb95[_0x031f('0x2f')][_0x031f('0x41')]()?-0x1:0x1;}}else{if(_0x1d85bb===_0x031f('0x39')){return _0x2691b7[_0x031f('0x2f')][_0x031f('0x41')]()<_0xf0fb95[_0x031f('0x2f')][_0x031f('0x41')]()?0x1:-0x1;}else{return _0x2691b7[_0x031f('0x2f')]['toLowerCase']()<_0xf0fb95[_0x031f('0x2f')][_0x031f('0x41')]()?-0x1:0x1;}}}else{if(_0x1d85bb===_0x031f('0x39')){return _0x2691b7[_0x031f('0x34')]<_0xf0fb95[_0x031f('0x34')]?0x1:-0x1;}else{return _0x2691b7[_0x031f('0x34')]<_0xf0fb95[_0x031f('0x34')]?-0x1:0x1;}}});return _0x9efbc4;}exports[_0x031f('0x42')]=sortAgentsByStatus;function filterAgentAttributes(_0x3411f1){var _0x5f033b=[_0x031f('0x43'),'online','lastLoginAt',_0x031f('0x44'),_0x031f('0x40'),_0x031f('0x44'),_0x031f('0x3d'),_0x031f('0x45'),'chatPause',_0x031f('0x32'),_0x031f('0x31'),_0x031f('0x5'),'whatsappPause',_0x031f('0x30'),_0x031f('0x10'),_0x031f('0x46'),_0x031f('0x47'),_0x031f('0x48'),_0x031f('0x49'),'whatsappCapacity','faxCapacity',_0x031f('0x4a'),'openchannelCurrentCapacity',_0x031f('0x4b'),_0x031f('0x4c'),'whatsappCurrentCapacity',_0x031f('0x4d'),'chatStatus','openchannelStatus',_0x031f('0x13'),'smsStatus',_0x031f('0x16'),'faxStatus',_0x031f('0xf'),_0x031f('0x4e'),'openchannelStatusTime',_0x031f('0x4f'),_0x031f('0x50'),'whatsappStatusTime',_0x031f('0x51'),'voiceStatusTime',_0x031f('0x52'),'destconnectedlinenum',_0x031f('0x53'),_0x031f('0x54'),_0x031f('0x55'),_0x031f('0x56')];var _0x691a68=['chatPause',_0x031f('0x32'),'mailPause',_0x031f('0x5'),_0x031f('0x6'),'faxPause',_0x031f('0x10'),_0x031f('0x57')];var _0x510d17=_(_0x3411f1)[_0x031f('0x58')](_0x691a68)[_0x031f('0x59')](_0x5f033b)[_0x031f('0x27')]();return _0x510d17;}exports['filterAgentAttributes']=filterAgentAttributes;function getRealtimeAgentsQueryFields(){return['id',_0x031f('0x2e'),'fullname',_0x031f('0x5a'),'internal',_0x031f('0x57'),'globalStatus',_0x031f('0x43'),_0x031f('0x5b'),'pauseType','lastPauseAt',_0x031f('0x30'),_0x031f('0x4'),'mailPause',_0x031f('0x32'),_0x031f('0x5'),_0x031f('0x10'),_0x031f('0x6'),_0x031f('0x12'),_0x031f('0x5c'),_0x031f('0x13'),_0x031f('0x14'),'smsStatus',_0x031f('0xf'),_0x031f('0x16'),_0x031f('0x4e'),'faxStatusTime',_0x031f('0x4f'),_0x031f('0x5d'),'smsStatusTime',_0x031f('0x5e'),_0x031f('0x5f'),_0x031f('0x46'),_0x031f('0x60'),'mailCapacity','openchannelCapacity','smsCapacity','whatsappCapacity',_0x031f('0x4a'),_0x031f('0x4d'),'mailCurrentCapacity',_0x031f('0x61'),_0x031f('0x4c'),'whatsappCurrentCapacity',_0x031f('0x54'),_0x031f('0x55'),_0x031f('0x62'),_0x031f('0x63'),_0x031f('0x52'),_0x031f('0x56'),_0x031f('0x53')];}exports[_0x031f('0x64')]=getRealtimeAgentsQueryFields;
\ No newline at end of file
+var _0x4819=['queue','destconnectedlinenum','omit','pick','filterAgentAttributes','role','whatsappStatusTime','chatCapacity','mailCurrentCapacity','phoneBarEnableAutomaticScreenRecording','onhold','routealias','getRealtimeAgentsQueryFields','jayson/promise','../../mysqldb','client','http','chatPause','mailPause','voicePause','whatsappPause','every','filter','length','unknown','unavailable','ringing','isNil','voiceStatus','idle','chatStatus','faxStatus','mailStatus','openchannelStatus','smsStatus','whatsappStatus','Agents','then','error','result','request','merge','catch','getRealtimeAgents','pause','*pause','busy','isArray','startCase','Queue','findOne','getAgents','all','flatten','map','value','getAgentIdsByQueues','includes','getAgentIdsByStatus','User','findAll','name','fullname','openchannelPause','smsPause','pauseType','globalStatus','split','fields','startsWith','ASC','fullname,internal','internal','indexOf','validateSortParameter','DESC','toLowerCase','userpic','online','lastLoginAt','lastPauseAt','faxPause','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','voiceStatusTime'];(function(_0x594b81,_0x1cc011){var _0x2969af=function(_0x33a3f7){while(--_0x33a3f7){_0x594b81['push'](_0x594b81['shift']());}};_0x2969af(++_0x1cc011);}(_0x4819,0xcd));var _0x9481=function(_0x6ab30c,_0x2c713b){_0x6ab30c=_0x6ab30c-0x0;var _0x36e953=_0x4819[_0x6ab30c];return _0x36e953;};'use strict';var _=require('lodash');var jayson=require(_0x9481('0x0'));var db=require(_0x9481('0x1'))['db'];var amiClient=jayson[_0x9481('0x2')][_0x9481('0x3')]({'port':0x232a});var routingClient=jayson[_0x9481('0x2')][_0x9481('0x3')]({'port':0x232c});function isAgentPaused(_0x40a703,_0x14dc10){var _0xc39edf=[_0x40a703[_0x9481('0x4')],_0x40a703['faxPause'],_0x40a703[_0x9481('0x5')],_0x40a703['openchannelPause'],_0x40a703['smsPause'],_0x40a703[_0x9481('0x6')],_0x40a703[_0x9481('0x7')]];if(!_0x14dc10)return _[_0x9481('0x8')](_0xc39edf);var _0x3278ff=_[_0x9481('0x9')](_0xc39edf);return _0x3278ff['length']>0x0&&_0x3278ff[_0x9481('0xa')]<_0xc39edf['length']?!![]:![];}function isIdle(_0x2fabf1){return _0x2fabf1==='idle'||_0x2fabf1===_0x9481('0xb')||_0x2fabf1===_0x9481('0xc')||_0x2fabf1===_0x9481('0xd')||_[_0x9481('0xe')](_0x2fabf1);}function isAgentIdle(_0xe84f77){if(_0xe84f77[_0x9481('0xf')]!==_0x9481('0x10')&&_0xe84f77[_0x9481('0x6')]){_0xe84f77[_0x9481('0xf')]='pause';return![];}return _['every']([_0xe84f77[_0x9481('0x11')],_0xe84f77[_0x9481('0x12')],_0xe84f77[_0x9481('0x13')],_0xe84f77[_0x9481('0x14')],_0xe84f77[_0x9481('0x15')],_0xe84f77[_0x9481('0xf')],_0xe84f77[_0x9481('0x16')]],isIdle);}function getRealtimeAgents(){return amiClient['request'](_0x9481('0x17'),{})[_0x9481('0x18')](function(_0x5b1fe6){if(_0x5b1fe6[_0x9481('0x19')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');}var _0x34108d=_0x5b1fe6[_0x9481('0x1a')];return routingClient[_0x9481('0x1b')](_0x9481('0x17'),{})['then'](function(_0x5eda66){if(_0x5eda66[_0x9481('0x19')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0x4d0da7=_0x5eda66[_0x9481('0x1a')];return _[_0x9481('0x1c')]({},_0x34108d,_0x4d0da7);});})[_0x9481('0x1d')](function(_0x41051d){throw _0x41051d;});}exports[_0x9481('0x1e')]=getRealtimeAgents;function getAgentStatus(_0x3dc33f){var _0x55a1bd=_0x9481('0xb');if(isAgentPaused(_0x3dc33f))_0x55a1bd=_0x9481('0x1f');else if(isAgentPaused(_0x3dc33f,!![]))_0x55a1bd=_0x9481('0x20');else if(isAgentIdle(_0x3dc33f))_0x55a1bd=_0x9481('0x10');else _0x55a1bd=_0x9481('0x21');return _0x55a1bd;}exports['getAgentStatus']=getAgentStatus;function getAgentIdsByQueues(_0x215dd7,_0x294908){var _0x572599=_[_0x9481('0x22')](_0x215dd7)?_0x215dd7:[_0x215dd7];var _0xd1cd1a=_[_0x9481('0x23')](_0x294908)+_0x9481('0x24');var _0x2dc02e=_['map'](_0x572599,function(_0x91e3d9){return db[_0xd1cd1a][_0x9481('0x25')]({'where':{'id':_0x91e3d9}})['then'](function(_0x5eb4f5){if(!_0x5eb4f5)return[];return _0x5eb4f5[_0x9481('0x26')]({'attributes':['id'],'raw':!![]});});});return Promise[_0x9481('0x27')](_0x2dc02e)['then'](function(_0x1e6f28){var _0x20ff9a=_(_0x1e6f28)[_0x9481('0x28')]()[_0x9481('0x29')]('id')['uniq']()[_0x9481('0x2a')]();return _0x20ff9a;});}exports[_0x9481('0x2b')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x3c2585,_0x587706,_0x1791b2){try{if(_0x587706['length']>0x0){_0x3c2585=_0x3c2585[_0x9481('0x9')](function(_0xe153ab){return _0x587706[_0x9481('0x2c')](_0xe153ab['id']);});}var _0x13ef93=_0x3c2585[_0x9481('0x9')](function(_0x53560d){var _0x2aa9ff=_0x9481('0x21');if(isAgentIdle(_0x53560d)){_0x2aa9ff=_0x9481('0x10');}return _0x2aa9ff===_0x1791b2;});return _['map'](_0x13ef93,'id');}catch(_0x56752e){throw _0x56752e;}}exports[_0x9481('0x2d')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x427c25,_0x42df68,_0x2b33f8){return Promise['resolve']()['then'](function(){if(_0x42df68['length']>0x0){_0x427c25=_0x427c25[_0x9481('0x9')](function(_0x5d6c65){return _0x42df68[_0x9481('0x2c')](_0x5d6c65['id']);});}return _0x427c25;})['then'](function(){return db[_0x9481('0x2e')][_0x9481('0x2f')]({'attributes':['id',_0x9481('0x30'),_0x9481('0x31'),_0x9481('0x4'),'faxPause',_0x9481('0x5'),_0x9481('0x32'),_0x9481('0x33'),'voicePause',_0x9481('0x7'),_0x9481('0x34')],'where':{'id':{'$in':_[_0x9481('0x29')](_0x427c25,'id')}},'raw':!![]});})[_0x9481('0x18')](function(_0xdc87e6){return _0xdc87e6[_0x9481('0x29')](function(_0x5d7299){var _0x41c6a2=_['find'](_0x427c25,['id',_0x5d7299['id']]);var _0x203ef9=filterAgentAttributes(_0x41c6a2);_[_0x9481('0x1c')](_0x5d7299,_0x203ef9);_0x5d7299[_0x9481('0x35')]=getAgentStatus(_0x5d7299);return _0x5d7299;});})[_0x9481('0x18')](function(_0x2ebcbd){var _0x2face9=sortAgentsByStatus(_0x2ebcbd,_0x2b33f8);return _['map'](_0x2face9,'id');})[_0x9481('0x1d')](function(_0x15e27f){throw _0x15e27f;});}exports['getSortedAgentsIdsByStatus']=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x5e00ad){var _0x31ea6a={'fields':[],'order':null};var _0x5ab28f=_0x5e00ad[_0x9481('0x36')](',');_0x31ea6a[_0x9481('0x37')]=_[_0x9481('0x9')](_0x5ab28f,function(_0x2a1bcf){if(!_0x2a1bcf['includes'](_0x9481('0x35'))){return!![];}_0x31ea6a['order']=_[_0x9481('0x38')](_0x2a1bcf,'-')?'DESC':_0x9481('0x39');return![];});return _0x31ea6a;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x315fb9){if(!_0x315fb9){_0x315fb9=_0x9481('0x3a');}if(_0x315fb9[_0x9481('0x2c')](_0x9481('0x31'))&&!_0x315fb9[_0x9481('0x2c')](_0x9481('0x3b'))){var _0xb6ff1=_0x315fb9['substring'](0x0,_0x315fb9[_0x9481('0x3c')](_0x9481('0x31')));_0x315fb9+=','+_0xb6ff1+_0x9481('0x3b');}return _0x315fb9;}exports[_0x9481('0x3d')]=validateSortParameter;function sortAgentsByStatus(_0x3f1b6f,_0x344e2d){var _0x2e4241=_0x3f1b6f['sort'](function(_0xf7b2e1,_0x1872ff){if(_0xf7b2e1['globalStatus']===_0x1872ff[_0x9481('0x35')]){if(_0xf7b2e1[_0x9481('0x35')]===_0x9481('0x1f')){if(_0x344e2d===_0x9481('0x3e')){return(_0xf7b2e1[_0x9481('0x34')]||'')<(_0x1872ff['pauseType']||'')||_0xf7b2e1[_0x9481('0x31')]['toLowerCase']()>_0x1872ff[_0x9481('0x31')][_0x9481('0x3f')]()?0x1:-0x1;}else{return(_0xf7b2e1['pauseType']||'')<(_0x1872ff['pauseType']||'')||_0xf7b2e1[_0x9481('0x31')][_0x9481('0x3f')]()>_0x1872ff[_0x9481('0x31')]['toLowerCase']()?-0x1:0x1;}}else{if(_0x344e2d===_0x9481('0x3e')){return _0xf7b2e1[_0x9481('0x31')]['toLowerCase']()<_0x1872ff['fullname'][_0x9481('0x3f')]()?0x1:-0x1;}else{return _0xf7b2e1['fullname'][_0x9481('0x3f')]()<_0x1872ff[_0x9481('0x31')][_0x9481('0x3f')]()?-0x1:0x1;}}}else{if(_0x344e2d===_0x9481('0x3e')){return _0xf7b2e1[_0x9481('0x35')]<_0x1872ff['globalStatus']?0x1:-0x1;}else{return _0xf7b2e1[_0x9481('0x35')]<_0x1872ff[_0x9481('0x35')]?-0x1:0x1;}}});return _0x2e4241;}exports['sortAgentsByStatus']=sortAgentsByStatus;function filterAgentAttributes(_0x1c98fa){var _0x35d740=[_0x9481('0x40'),_0x9481('0x41'),_0x9481('0x42'),_0x9481('0x43'),_0x9481('0x34'),_0x9481('0x43'),_0x9481('0x3b'),'address',_0x9481('0x4'),'openchannelPause','mailPause',_0x9481('0x33'),'whatsappPause',_0x9481('0x44'),_0x9481('0x6'),'chatCapacity',_0x9481('0x45'),_0x9481('0x46'),_0x9481('0x47'),_0x9481('0x48'),_0x9481('0x49'),_0x9481('0x4a'),'openchannelCurrentCapacity','mailCurrentCapacity',_0x9481('0x4b'),_0x9481('0x4c'),_0x9481('0x4d'),_0x9481('0x11'),_0x9481('0x14'),_0x9481('0x13'),_0x9481('0x15'),_0x9481('0x16'),'faxStatus',_0x9481('0xf'),_0x9481('0x4e'),_0x9481('0x4f'),_0x9481('0x50'),_0x9481('0x51'),'whatsappStatusTime','faxStatusTime',_0x9481('0x52'),_0x9481('0x53'),_0x9481('0x54'),'screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias'];var _0x538507=['chatPause','openchannelPause',_0x9481('0x5'),_0x9481('0x33'),'whatsappPause',_0x9481('0x44'),'voicePause',_0x9481('0x41')];var _0x229b69=_(_0x1c98fa)[_0x9481('0x55')](_0x538507)[_0x9481('0x56')](_0x35d740)[_0x9481('0x2a')]();return _0x229b69;}exports[_0x9481('0x57')]=filterAgentAttributes;function getRealtimeAgentsQueryFields(){return['id',_0x9481('0x30'),'fullname',_0x9481('0x58'),_0x9481('0x3b'),'online',_0x9481('0x35'),_0x9481('0x40'),_0x9481('0x42'),_0x9481('0x34'),_0x9481('0x43'),'faxPause',_0x9481('0x4'),_0x9481('0x5'),_0x9481('0x32'),_0x9481('0x33'),_0x9481('0x6'),_0x9481('0x7'),_0x9481('0x11'),_0x9481('0x12'),_0x9481('0x13'),'openchannelStatus','smsStatus','voiceStatus',_0x9481('0x16'),_0x9481('0x4e'),'faxStatusTime',_0x9481('0x50'),_0x9481('0x4f'),_0x9481('0x51'),_0x9481('0x52'),_0x9481('0x59'),_0x9481('0x5a'),'faxCapacity','mailCapacity',_0x9481('0x45'),_0x9481('0x47'),_0x9481('0x48'),_0x9481('0x4a'),_0x9481('0x4d'),_0x9481('0x5b'),'openchannelCurrentCapacity','smsCurrentCapacity',_0x9481('0x4c'),'phoneBarEnableScreenRecordingByAgent',_0x9481('0x5c'),'destconnectedlinenum',_0x9481('0x5d'),_0x9481('0x53'),_0x9481('0x5e'),'screenrecording'];}exports[_0x9481('0x5f')]=getRealtimeAgentsQueryFields;
\ No newline at end of file
index 02968df..6b79842 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9870=['error','format','catch','inbound','concat','get','available','originated','merge','pick','lodash','jayson/promise','util','client','http','loggedIn','paused','waiting','busy','inUse','invalid','loggedInDb','notInUse','onHold','ringing','talking','unavailable','unknown','pTalking','statusMessage','dialActive','dialMethod','Trunk','startPredictive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','dialPredictiveInterval','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','voice','Queues','then'];(function(_0x2346c8,_0x49bb5f){var _0x237a1f=function(_0x47958d){while(--_0x47958d){_0x2346c8['push'](_0x2346c8['shift']());}};_0x237a1f(++_0x49bb5f);}(_0x9870,0x94));var _0x0987=function(_0x4264cd,_0x1772f5){_0x4264cd=_0x4264cd-0x0;var _0x1075f8=_0x9870[_0x4264cd];return _0x1075f8;};'use strict';var _=require(_0x0987('0x0'));var jayson=require(_0x0987('0x1'));var util=require(_0x0987('0x2'));var amiClient=jayson[_0x0987('0x3')][_0x0987('0x4')]({'port':0x232a});var routingClient=jayson['client'][_0x0987('0x4')]({'port':0x232c});var DEFAULT_QUEUE_ATTRIBUTES=['available',_0x0987('0x5'),_0x0987('0x6'),_0x0987('0x7')];var VOICE_QUEUE_ATTRIBUTES=[_0x0987('0x8'),_0x0987('0x9'),_0x0987('0xa'),_0x0987('0xb'),_0x0987('0xc'),_0x0987('0xd'),_0x0987('0xe'),'ringInUse',_0x0987('0xf'),_0x0987('0x10'),_0x0987('0x11')];var OUTBOUND_QUEUE_ATTRIBUTES=[_0x0987('0x12'),'originated','message',_0x0987('0x13'),_0x0987('0x14'),_0x0987('0x15'),_0x0987('0x16'),_0x0987('0x17'),'startProgressive',_0x0987('0x18'),_0x0987('0x19'),_0x0987('0x1a'),'erlangBusyFactor',_0x0987('0x1b'),'dialPredictiveIntervalMaxThreshold',_0x0987('0x1c'),_0x0987('0x1d'),'predictiveIntervalTotalCalls',_0x0987('0x1e'),_0x0987('0x1f'),'predictiveIntervalDroppedCallsCallersExit',_0x0987('0x20'),'predictiveIntervalAvgTalktime'];function getRealtimeQueues(_0x1f1a66,_0x48433a){var _0xd8cf83=_0x48433a===_0x0987('0x21')?amiClient:routingClient;return _0xd8cf83['request'](_['startCase'](_0x48433a)+_0x0987('0x22'),_0x1f1a66)[_0x0987('0x23')](function(_0x25262c){if(_0x25262c[_0x0987('0x24')])throw new Error(util[_0x0987('0x25')]('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x48433a));return _0x25262c['result'];})[_0x0987('0x26')](function(_0x3118ef){throw _0x3118ef;});}exports['getRealtimeQueues']=getRealtimeQueues;function initializeQueues(_0x21445e,_0x5c27b4,_0x36d287,_0x42843f){var _0x42526e=DEFAULT_QUEUE_ATTRIBUTES;if(_0x36d287===_0x0987('0x21')){if(_0x42843f===_0x0987('0x27')){_0x42526e=_0x42526e[_0x0987('0x28')](VOICE_QUEUE_ATTRIBUTES);}else if(_0x42843f==='outbound'){_0x42526e=_0x42526e[_0x0987('0x28')](VOICE_QUEUE_ATTRIBUTES,OUTBOUND_QUEUE_ATTRIBUTES);}}return _0x21445e['map'](function(_0x4f741c){var _0x3f3006=_0x4f741c[_0x0987('0x29')]({'plain':!![]});_0x3f3006['paused']=0x0;_0x3f3006[_0x0987('0xb')]=0x0;_0x3f3006['loggedIn']=0x0;_0x3f3006[_0x0987('0x2a')]=0x0;_0x3f3006['waiting']=0x0;if(_0x36d287===_0x0987('0x21')){_0x3f3006[_0x0987('0xf')]=0x0;_0x3f3006[_0x0987('0x8')]=0x0;if(_0x42843f==='outbound'){_0x3f3006[_0x0987('0x12')]=0x0;_0x3f3006[_0x0987('0x2b')]=0x0;}}var _0x2da432=_['find'](_0x5c27b4,['id',_0x3f3006['id']]);if(_0x2da432){_[_0x0987('0x2c')](_0x3f3006,_[_0x0987('0x2d')](_0x2da432,_0x42526e));}return _0x3f3006;});}exports['initializeQueues']=initializeQueues;
\ No newline at end of file
+var _0x5919=['ringInUse','unavailable','unknown','pTalking','statusMessage','dialActive','dialMethod','Trunk','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','voice','request','Queues','then','error','format','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','result','catch','getRealtimeQueues','inbound','concat','map','get','talking','outbound','originated','find','merge','pick','initializeQueues','lodash','jayson/promise','util','http','available','loggedIn','paused','waiting','inUse','invalid','loggedInDb','notInUse','onHold','ringing'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x5919,0x1cf));var _0x9591=function(_0x263fcc,_0x38c118){_0x263fcc=_0x263fcc-0x0;var _0x25a0a1=_0x5919[_0x263fcc];return _0x25a0a1;};'use strict';var _=require(_0x9591('0x0'));var jayson=require(_0x9591('0x1'));var util=require(_0x9591('0x2'));var amiClient=jayson['client'][_0x9591('0x3')]({'port':0x232a});var routingClient=jayson['client']['http']({'port':0x232c});var DEFAULT_QUEUE_ATTRIBUTES=[_0x9591('0x4'),_0x9591('0x5'),_0x9591('0x6'),_0x9591('0x7')];var VOICE_QUEUE_ATTRIBUTES=['busy',_0x9591('0x8'),_0x9591('0x9'),_0x9591('0xa'),_0x9591('0xb'),_0x9591('0xc'),_0x9591('0xd'),_0x9591('0xe'),'talking',_0x9591('0xf'),_0x9591('0x10')];var OUTBOUND_QUEUE_ATTRIBUTES=[_0x9591('0x11'),'originated','message',_0x9591('0x12'),_0x9591('0x13'),_0x9591('0x14'),_0x9591('0x15'),'startPredictive',_0x9591('0x16'),_0x9591('0x17'),_0x9591('0x18'),_0x9591('0x19'),_0x9591('0x1a'),'dialPredictiveInterval',_0x9591('0x1b'),_0x9591('0x1c'),'predictiveIntervalAvailable','predictiveIntervalTotalCalls',_0x9591('0x1d'),'predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit',_0x9591('0x1e'),_0x9591('0x1f')];function getRealtimeQueues(_0x3e2c1e,_0x140f2a){var _0x5282b1=_0x140f2a===_0x9591('0x20')?amiClient:routingClient;return _0x5282b1[_0x9591('0x21')](_['startCase'](_0x140f2a)+_0x9591('0x22'),_0x3e2c1e)[_0x9591('0x23')](function(_0x1fd647){if(_0x1fd647[_0x9591('0x24')])throw new Error(util[_0x9591('0x25')](_0x9591('0x26'),_0x140f2a));return _0x1fd647[_0x9591('0x27')];})[_0x9591('0x28')](function(_0x539445){throw _0x539445;});}exports[_0x9591('0x29')]=getRealtimeQueues;function initializeQueues(_0x3b70c3,_0x19a367,_0x19eeb4,_0x2e5b06){var _0x574586=DEFAULT_QUEUE_ATTRIBUTES;if(_0x19eeb4===_0x9591('0x20')){if(_0x2e5b06===_0x9591('0x2a')){_0x574586=_0x574586[_0x9591('0x2b')](VOICE_QUEUE_ATTRIBUTES);}else if(_0x2e5b06==='outbound'){_0x574586=_0x574586[_0x9591('0x2b')](VOICE_QUEUE_ATTRIBUTES,OUTBOUND_QUEUE_ATTRIBUTES);}}return _0x3b70c3[_0x9591('0x2c')](function(_0x573e14){var _0x466211=_0x573e14[_0x9591('0x2d')]({'plain':!![]});_0x466211[_0x9591('0x6')]=0x0;_0x466211['loggedInDb']=0x0;_0x466211[_0x9591('0x5')]=0x0;_0x466211[_0x9591('0x4')]=0x0;_0x466211[_0x9591('0x7')]=0x0;if(_0x19eeb4===_0x9591('0x20')){_0x466211[_0x9591('0x2e')]=0x0;_0x466211['busy']=0x0;if(_0x2e5b06===_0x9591('0x2f')){_0x466211[_0x9591('0x11')]=0x0;_0x466211[_0x9591('0x30')]=0x0;}}var _0x3ff1e2=_[_0x9591('0x31')](_0x19a367,['id',_0x466211['id']]);if(_0x3ff1e2){_[_0x9591('0x32')](_0x466211,_[_0x9591('0x33')](_0x3ff1e2,_0x574586));}return _0x466211;});}exports[_0x9591('0x34')]=initializeQueues;
\ No newline at end of file
index 10c11b4..6c9d81a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['root','public','test','join','client','use','json\x20replacer','toISOString','split','static','/server/views','engine','html','ejs','renderFile','view\x20engine','urlencoded','json','50mb','express','method-override','cookie-parser','errorhandler','passport','cors','./environment','default','get','env','production','set','appPath'];(function(_0x4471c2,_0x531995){var _0x15361c=function(_0x371d9b){while(--_0x371d9b){_0x4471c2['push'](_0x4471c2['shift']());}};_0x15361c(++_0x531995);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var express=require(_0x7995('0x0'));var methodOverride=require(_0x7995('0x1'));var cookieParser=require(_0x7995('0x2'));var errorHandler=require(_0x7995('0x3'));var path=require('path');var passport=require(_0x7995('0x4'));var cors=require(_0x7995('0x5'));var config=require(_0x7995('0x6'));exports[_0x7995('0x7')]=function(_0x576d89){var _0x744bea=_0x576d89[_0x7995('0x8')](_0x7995('0x9'));if(_0x744bea===_0x7995('0xa')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path['join'](config[_0x7995('0xd')],_0x7995('0xe')));}if(_0x744bea==='development'||_0x744bea===_0x7995('0xf')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path[_0x7995('0x10')](config[_0x7995('0xd')],_0x7995('0x11')));_0x576d89[_0x7995('0x12')](errorHandler());}_0x576d89['set'](_0x7995('0x13'),function(_0x41c652,_0x581f22){if(this[_0x41c652]instanceof Date){_0x581f22=this[_0x41c652][_0x7995('0x14')]()[_0x7995('0x15')]('.')[0x0]+'Z';}return _0x581f22;});_0x576d89[_0x7995('0x12')](express[_0x7995('0x16')](_0x576d89[_0x7995('0x8')](_0x7995('0xc'))));_0x576d89[_0x7995('0xb')]('views',config['root']+_0x7995('0x17'));_0x576d89[_0x7995('0x18')](_0x7995('0x19'),require(_0x7995('0x1a'))[_0x7995('0x1b')]);_0x576d89[_0x7995('0xb')](_0x7995('0x1c'),_0x7995('0x19'));_0x576d89['use'](express[_0x7995('0x1d')]({'limit':'50mb','extended':!![]}));_0x576d89[_0x7995('0x12')](express[_0x7995('0x1e')]({'limit':_0x7995('0x1f')}));_0x576d89[_0x7995('0x12')](cors());_0x576d89[_0x7995('0x12')](methodOverride());_0x576d89[_0x7995('0x12')](cookieParser());_0x576d89['use'](passport['initialize']());};
\ No newline at end of file
+var _0xa9e0=['get','production','set','appPath','public','join','root','client','use','toISOString','split','static','views','/server/views','engine','html','ejs','urlencoded','50mb','json','initialize','express','method-override','cookie-parser','passport','./environment','default'];(function(_0x265468,_0xcf7439){var _0x37d555=function(_0x47c742){while(--_0x47c742){_0x265468['push'](_0x265468['shift']());}};_0x37d555(++_0xcf7439);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'use strict';var express=require(_0x0a9e('0x0'));var methodOverride=require(_0x0a9e('0x1'));var cookieParser=require(_0x0a9e('0x2'));var errorHandler=require('errorhandler');var path=require('path');var passport=require(_0x0a9e('0x3'));var cors=require('cors');var config=require(_0x0a9e('0x4'));exports[_0x0a9e('0x5')]=function(_0x2ab90b){var _0x991246=_0x2ab90b[_0x0a9e('0x6')]('env');if(_0x991246===_0x0a9e('0x7')){_0x2ab90b[_0x0a9e('0x8')](_0x0a9e('0x9'),path['join'](config['root'],_0x0a9e('0xa')));}if(_0x991246==='development'||_0x991246==='test'){_0x2ab90b[_0x0a9e('0x8')](_0x0a9e('0x9'),path[_0x0a9e('0xb')](config[_0x0a9e('0xc')],_0x0a9e('0xd')));_0x2ab90b[_0x0a9e('0xe')](errorHandler());}_0x2ab90b['set']('json\x20replacer',function(_0x527cdd,_0x4cfe67){if(this[_0x527cdd]instanceof Date){_0x4cfe67=this[_0x527cdd][_0x0a9e('0xf')]()[_0x0a9e('0x10')]('.')[0x0]+'Z';}return _0x4cfe67;});_0x2ab90b[_0x0a9e('0xe')](express[_0x0a9e('0x11')](_0x2ab90b[_0x0a9e('0x6')](_0x0a9e('0x9'))));_0x2ab90b['set'](_0x0a9e('0x12'),config[_0x0a9e('0xc')]+_0x0a9e('0x13'));_0x2ab90b[_0x0a9e('0x14')](_0x0a9e('0x15'),require(_0x0a9e('0x16'))['renderFile']);_0x2ab90b[_0x0a9e('0x8')]('view\x20engine',_0x0a9e('0x15'));_0x2ab90b['use'](express[_0x0a9e('0x17')]({'limit':_0x0a9e('0x18'),'extended':!![]}));_0x2ab90b['use'](express[_0x0a9e('0x19')]({'limit':'50mb'}));_0x2ab90b[_0x0a9e('0xe')](cors());_0x2ab90b[_0x0a9e('0xe')](methodOverride());_0x2ab90b[_0x0a9e('0xe')](cookieParser());_0x2ab90b[_0x0a9e('0xe')](passport[_0x0a9e('0x1a')]());};
\ No newline at end of file
index 233b270..d85a9c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9d6=['update','digest','hex','getUuid','platform','licenseToken','test','win32','dmidecode\x20--string\x20system-uuid','utf8','hostname','macAddress','ipAddress','substring','bimedia-machine-uuid','child_process','execSync','../environment','networkInterfaces','orderBy','keys','length','filter','internal','concat','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','map','model','join','createHash','md5'];(function(_0x493fc9,_0x597cf9){var _0x3a90c3=function(_0x4f9ca2){while(--_0x4f9ca2){_0x493fc9['push'](_0x493fc9['shift']());}};_0x3a90c3(++_0x597cf9);}(_0xe9d6,0x103));var _0x6e9d=function(_0x2d28b1,_0x1f4a94){_0x2d28b1=_0x2d28b1-0x0;var _0x1d9f89=_0xe9d6[_0x2d28b1];return _0x1d9f89;};'use strict';var _=require('lodash');var os=require('os');var crypto=require('crypto');var machine=require(_0x6e9d('0x0'));var exec=require(_0x6e9d('0x1'))[_0x6e9d('0x2')];var config=require(_0x6e9d('0x3'));function getInterfaces(){var _0x14a04d=[];var _0x3b8795=os[_0x6e9d('0x4')]();var _0x3fdfa6=_[_0x6e9d('0x5')](_[_0x6e9d('0x6')](_0x3b8795));for(var _0x2cf948=0x0;_0x2cf948<_0x3fdfa6[_0x6e9d('0x7')];_0x2cf948++){var _0x313cc9=_0x3b8795[_0x3fdfa6[_0x2cf948]][_0x6e9d('0x8')](function(_0x4e2741){return _0x4e2741['family']==='IPv4'&&_0x4e2741[_0x6e9d('0x9')]===![];});_0x14a04d=_0x14a04d[_0x6e9d('0xa')](_0x313cc9);}return _0x14a04d;}function getFirstInterface(){var _0x4574ee=_['head'](getInterfaces());return{'macAddress':_0x4574ee&&_0x4574ee[_0x6e9d('0xb')]?_0x4574ee['mac']:_0x6e9d('0xc'),'ipAddress':_0x4574ee&&_0x4574ee[_0x6e9d('0xd')]?_0x4574ee[_0x6e9d('0xd')]:_0x6e9d('0xe')};}exports[_0x6e9d('0xf')]=getFirstInterface;function getCPUhash(){var _0x4ab2f4=_[_0x6e9d('0x5')](os['cpus']()[_0x6e9d('0x10')](function(_0x3a0636){return _0x3a0636[_0x6e9d('0x11')];}))[_0x6e9d('0x12')](':');return crypto[_0x6e9d('0x13')](_0x6e9d('0x14'))[_0x6e9d('0x15')](_0x4ab2f4)[_0x6e9d('0x16')](_0x6e9d('0x17'));}exports[_0x6e9d('0x18')]=function(){var _0x2d93c4=os[_0x6e9d('0x19')]();var _0x584325=/[0-9a-f-]{36}/;if(config[_0x6e9d('0x1a')]&&_0x584325[_0x6e9d('0x1b')](config[_0x6e9d('0x1a')])){return config[_0x6e9d('0x1a')];}else if(_0x2d93c4===_0x6e9d('0x1c')){return exec(_0x6e9d('0x1d'),{'encoding':_0x6e9d('0x1e')})['replace']('\x0d\x0a','');}else{var _0x218e77=getFirstInterface();var _0x42c409=getCPUhash();var _0x382993=_0x42c409+'|'+os[_0x6e9d('0x1f')]()+'|'+_0x218e77[_0x6e9d('0x20')]+'|'+_0x218e77[_0x6e9d('0x21')];var _0x3e4a87=crypto[_0x6e9d('0x13')](_0x6e9d('0x14'))[_0x6e9d('0x15')](_0x382993)[_0x6e9d('0x16')]('hex');return _0x3e4a87[_0x6e9d('0x22')](0x0,0x8)+'-'+_0x3e4a87['substring'](0x8,0xc)+'-'+_0x3e4a87[_0x6e9d('0x22')](0xc,0x10)+'-'+_0x3e4a87[_0x6e9d('0x22')](0x10,0x14)+'-'+_0x3e4a87['substring'](0x14);}};
\ No newline at end of file
+var _0x3e7b=['internal','concat','head','mac','address','127.0.0.1','map','model','md5','update','digest','platform','test','licenseToken','win32','dmidecode\x20--string\x20system-uuid','utf8','replace','macAddress','ipAddress','createHash','substring','bimedia-machine-uuid','execSync','../environment','networkInterfaces','orderBy','keys','length','family','IPv4'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3e7b,0x73));var _0xb3e7=function(_0x561b26,_0x14d87e){_0x561b26=_0x561b26-0x0;var _0x3e1bba=_0x3e7b[_0x561b26];return _0x3e1bba;};'use strict';var _=require('lodash');var os=require('os');var crypto=require('crypto');var machine=require(_0xb3e7('0x0'));var exec=require('child_process')[_0xb3e7('0x1')];var config=require(_0xb3e7('0x2'));function getInterfaces(){var _0x36d9cd=[];var _0x405b95=os[_0xb3e7('0x3')]();var _0x127636=_[_0xb3e7('0x4')](_[_0xb3e7('0x5')](_0x405b95));for(var _0x39765a=0x0;_0x39765a<_0x127636[_0xb3e7('0x6')];_0x39765a++){var _0xc23208=_0x405b95[_0x127636[_0x39765a]]['filter'](function(_0x523afd){return _0x523afd[_0xb3e7('0x7')]===_0xb3e7('0x8')&&_0x523afd[_0xb3e7('0x9')]===![];});_0x36d9cd=_0x36d9cd[_0xb3e7('0xa')](_0xc23208);}return _0x36d9cd;}function getFirstInterface(){var _0x4466d3=_[_0xb3e7('0xb')](getInterfaces());return{'macAddress':_0x4466d3&&_0x4466d3[_0xb3e7('0xc')]?_0x4466d3[_0xb3e7('0xc')]:'00:00:00:00:00:00','ipAddress':_0x4466d3&&_0x4466d3[_0xb3e7('0xd')]?_0x4466d3['address']:_0xb3e7('0xe')};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0x4cb0f9=_[_0xb3e7('0x4')](os['cpus']()[_0xb3e7('0xf')](function(_0x10641a){return _0x10641a[_0xb3e7('0x10')];}))['join'](':');return crypto['createHash'](_0xb3e7('0x11'))[_0xb3e7('0x12')](_0x4cb0f9)[_0xb3e7('0x13')]('hex');}exports['getUuid']=function(){var _0xb8d07d=os[_0xb3e7('0x14')]();var _0x3ea497=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x3ea497[_0xb3e7('0x15')](config[_0xb3e7('0x16')])){return config['licenseToken'];}else if(_0xb8d07d===_0xb3e7('0x17')){return exec(_0xb3e7('0x18'),{'encoding':_0xb3e7('0x19')})[_0xb3e7('0x1a')]('\x0d\x0a','');}else{var _0x15aeaa=getFirstInterface();var _0x2bdecd=getCPUhash();var _0x3b940f=_0x2bdecd+'|'+os['hostname']()+'|'+_0x15aeaa[_0xb3e7('0x1b')]+'|'+_0x15aeaa[_0xb3e7('0x1c')];var _0x528184=crypto[_0xb3e7('0x1d')](_0xb3e7('0x11'))['update'](_0x3b940f)[_0xb3e7('0x13')]('hex');return _0x528184[_0xb3e7('0x1e')](0x0,0x8)+'-'+_0x528184[_0xb3e7('0x1e')](0x8,0xc)+'-'+_0x528184[_0xb3e7('0x1e')](0xc,0x10)+'-'+_0x528184[_0xb3e7('0x1e')](0x10,0x14)+'-'+_0x528184['substring'](0x14);}};
\ No newline at end of file
index f554096..46cd846 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3147=['request-promise','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','get','data1','data2','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','catch','error','message','finally','getUuid','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','moment'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x3147,0x198));var _0x7314=function(_0x5510df,_0x3a6fad){_0x5510df=_0x5510df-0x0;var _0x5c1998=_0x3147[_0x5510df];return _0x5c1998;};'use strict';var util=require(_0x7314('0x0'));var moment=require(_0x7314('0x1'));var rp=require(_0x7314('0x2'));var BPromise=require(_0x7314('0x3'));var pkginfo=require(_0x7314('0x4'))(module,_0x7314('0x5'));var db=require(_0x7314('0x6'))['db'];var encryptor=require(_0x7314('0x7'));var hardware=require(_0x7314('0x8'));var logger=require(_0x7314('0x9'))(_0x7314('0xa'));var HOST=_0x7314('0xb');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x14fd2b){return new BPromise(function(_0x4b4b0a,_0x25ac10){var _0x2dc59c=util[_0x7314('0xc')](_0x7314('0xd'),HOST,_0x14fd2b,module['exports'][_0x7314('0x5')]);if(oldToken){_0x2dc59c=util[_0x7314('0xc')](_0x7314('0xe'),HOST,_0x14fd2b,module['exports'][_0x7314('0x5')],oldToken);}var _0x2f305f={'uri':_0x2dc59c,'method':_0x7314('0xf'),'timeout':0xea60,'json':!![]};return rp(_0x2f305f)[_0x7314('0x10')](function(_0x1baf76){_0x4b4b0a(_0x1baf76);})['catch'](function(_0x22161f){_0x25ac10(_0x22161f);});});}function manageLicense(_0x3e240d,_0x40f619){var _0xfc8e25=_0x40f619[_0x7314('0x11')]({'plain':!![]});if(!isOldTokenSent&&_0xfc8e25[_0x7314('0x12')]!==_0x3e240d&&!_0xfc8e25[_0x7314('0x13')]){oldToken=_0xfc8e25[_0x7314('0x12')];}httpRequest(_0x3e240d)[_0x7314('0x10')](function(_0x2b6524){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x2b6524[_0x7314('0x14')]){isOldTokenSent=![];if(!_0xfc8e25['license']&&_0xfc8e25[_0x7314('0xa')]!=_0x2b6524['license']||_0xfc8e25['license']&&_0xfc8e25[_0x7314('0x13')]){logger[_0x7314('0x15')](_0x7314('0x16'));}if(_0xfc8e25[_0x7314('0xa')]&&!_0xfc8e25[_0x7314('0x13')]&&_0xfc8e25[_0x7314('0xa')]!=_0x2b6524['license']){logger['info'](_0x7314('0x17'));}if(_0xfc8e25[_0x7314('0xa')]&&!_0xfc8e25[_0x7314('0x13')]&&_0xfc8e25[_0x7314('0xa')]==_0x2b6524[_0x7314('0xa')]){return _0x40f619;}return _0x40f619[_0x7314('0x18')]({'data1':_0x3e240d,'data2':null,'license':_0x2b6524[_0x7314('0xa')]});}else{if(_0x2b6524[_0x7314('0xa')]||_0xfc8e25['license']){if(!_0xfc8e25[_0x7314('0x13')]){if(_0xfc8e25[_0x7314('0x12')]==_0x3e240d){GRAY_PERIOD_REASON='Disabled';logger[_0x7314('0x15')](_0x7314('0x19'));}else{GRAY_PERIOD_REASON=_0x7314('0x1a');logger[_0x7314('0x15')](_0x7314('0x1b'),_0xfc8e25[_0x7314('0x12')],_0x3e240d);}logger['info']('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON[_0x7314('0x1c')](),moment()[_0x7314('0xc')](_0x7314('0x1d')));return _0x40f619[_0x7314('0x18')]({'data2':encryptor[_0x7314('0x1e')](moment()[_0x7314('0xc')]('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()[_0x7314('0x1f')](encryptor[_0x7314('0x20')](_0xfc8e25[_0x7314('0x13')]),'days')>DAYS){logger[_0x7314('0x15')]('DEMO\x20START\x20AT\x20%s',moment()[_0x7314('0xc')]('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x40f619['update']({'data1':_0x3e240d,'data2':null,'license':null});}}}else{if(_0xfc8e25['data1']!=_0x3e240d){logger[_0x7314('0x15')](_0x7314('0x1b'),_0xfc8e25[_0x7314('0x12')],_0x3e240d);return _0x40f619[_0x7314('0x18')]({'data1':_0x3e240d,'data2':null,'license':null});}}}return _0x40f619;})[_0x7314('0x10')](function(_0x30386a){_0x40f619=_0x30386a;})[_0x7314('0x21')](function(_0x3c318a){logger[_0x7314('0x22')](_0x3c318a[_0x7314('0x23')]);})[_0x7314('0x24')](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x40f619);},TIME);});}function defaultLicense(){var _0x3ec884=hardware[_0x7314('0x25')]();if(_0x3ec884){return db['License']['findOrCreate']({'where':{'id':0x1},'defaults':{'data1':_0x3ec884}})[_0x7314('0x26')](function(_0x5570fb,_0x5f9dd6){logger[_0x7314('0x15')](_0x7314('0x27'),_0x3ec884);manageLicense(_0x3ec884,_0x5570fb);})[_0x7314('0x21')](function(_0x50b56e){logger['error'](_0x50b56e[_0x7314('0x23')]);});}}exports[_0x7314('0x28')]=defaultLicense;
\ No newline at end of file
+var _0x6848=['get','data1','data2','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','error','finally','getUuid','SERVICE\x20LICENSE\x20STARTED\x20%s','message','default','util','moment','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','then','catch'];(function(_0x39a86d,_0x10287a){var _0x960fdf=function(_0x209ad0){while(--_0x209ad0){_0x39a86d['push'](_0x39a86d['shift']());}};_0x960fdf(++_0x10287a);}(_0x6848,0x1b1));var _0x8684=function(_0x2fa0be,_0x42d277){_0x2fa0be=_0x2fa0be-0x0;var _0x1e7149=_0x6848[_0x2fa0be];return _0x1e7149;};'use strict';var util=require(_0x8684('0x0'));var moment=require(_0x8684('0x1'));var rp=require('request-promise');var BPromise=require(_0x8684('0x2'));var pkginfo=require(_0x8684('0x3'))(module,_0x8684('0x4'));var db=require(_0x8684('0x5'))['db'];var encryptor=require(_0x8684('0x6'));var hardware=require(_0x8684('0x7'));var logger=require(_0x8684('0x8'))(_0x8684('0x9'));var HOST=_0x8684('0xa');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x359de1){return new BPromise(function(_0x1bd69a,_0x34c980){var _0x1d51d9=util[_0x8684('0xb')](_0x8684('0xc'),HOST,_0x359de1,module[_0x8684('0xd')][_0x8684('0x4')]);if(oldToken){_0x1d51d9=util[_0x8684('0xb')](_0x8684('0xe'),HOST,_0x359de1,module[_0x8684('0xd')][_0x8684('0x4')],oldToken);}var _0x1e2ffd={'uri':_0x1d51d9,'method':_0x8684('0xf'),'timeout':0xea60,'json':!![]};return rp(_0x1e2ffd)[_0x8684('0x10')](function(_0x4316ac){_0x1bd69a(_0x4316ac);})[_0x8684('0x11')](function(_0x163c83){_0x34c980(_0x163c83);});});}function manageLicense(_0x30bf6b,_0x4ba972){var _0x233168=_0x4ba972[_0x8684('0x12')]({'plain':!![]});if(!isOldTokenSent&&_0x233168[_0x8684('0x13')]!==_0x30bf6b&&!_0x233168[_0x8684('0x14')]){oldToken=_0x233168['data1'];}httpRequest(_0x30bf6b)[_0x8684('0x10')](function(_0x76247){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x76247[_0x8684('0x15')]){isOldTokenSent=![];if(!_0x233168['license']&&_0x233168[_0x8684('0x9')]!=_0x76247[_0x8684('0x9')]||_0x233168[_0x8684('0x9')]&&_0x233168['data2']){logger[_0x8684('0x16')]('THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED');}if(_0x233168[_0x8684('0x9')]&&!_0x233168[_0x8684('0x14')]&&_0x233168[_0x8684('0x9')]!=_0x76247[_0x8684('0x9')]){logger[_0x8684('0x16')](_0x8684('0x17'));}if(_0x233168['license']&&!_0x233168[_0x8684('0x14')]&&_0x233168[_0x8684('0x9')]==_0x76247['license']){return _0x4ba972;}return _0x4ba972[_0x8684('0x18')]({'data1':_0x30bf6b,'data2':null,'license':_0x76247[_0x8684('0x9')]});}else{if(_0x76247[_0x8684('0x9')]||_0x233168[_0x8684('0x9')]){if(!_0x233168[_0x8684('0x14')]){if(_0x233168['data1']==_0x30bf6b){GRAY_PERIOD_REASON=_0x8684('0x19');logger[_0x8684('0x16')](_0x8684('0x1a'));}else{GRAY_PERIOD_REASON=_0x8684('0x1b');logger['info'](_0x8684('0x1c'),_0x233168[_0x8684('0x13')],_0x30bf6b);}logger[_0x8684('0x16')]('%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s',GRAY_PERIOD_REASON[_0x8684('0x1d')](),moment()[_0x8684('0xb')](_0x8684('0x1e')));return _0x4ba972[_0x8684('0x18')]({'data2':encryptor['encryptString'](moment()[_0x8684('0xb')](_0x8684('0x1e')))});}else{if(moment()[_0x8684('0x1f')](encryptor[_0x8684('0x20')](_0x233168['data2']),_0x8684('0x21'))>DAYS){logger[_0x8684('0x16')](_0x8684('0x22'),moment()[_0x8684('0xb')](_0x8684('0x1e')));isOldTokenSent=![];return _0x4ba972['update']({'data1':_0x30bf6b,'data2':null,'license':null});}}}else{if(_0x233168[_0x8684('0x13')]!=_0x30bf6b){logger[_0x8684('0x16')](_0x8684('0x1c'),_0x233168[_0x8684('0x13')],_0x30bf6b);return _0x4ba972[_0x8684('0x18')]({'data1':_0x30bf6b,'data2':null,'license':null});}}}return _0x4ba972;})[_0x8684('0x10')](function(_0x51aa42){_0x4ba972=_0x51aa42;})[_0x8684('0x11')](function(_0x522469){logger[_0x8684('0x23')](_0x522469['message']);})[_0x8684('0x24')](function(){setTimeout(function(){manageLicense(hardware[_0x8684('0x25')](),_0x4ba972);},TIME);});}function defaultLicense(){var _0x833ff7=hardware[_0x8684('0x25')]();if(_0x833ff7){return db['License']['findOrCreate']({'where':{'id':0x1},'defaults':{'data1':_0x833ff7}})['spread'](function(_0x5996b8,_0xbe9534){logger[_0x8684('0x16')](_0x8684('0x26'),_0x833ff7);manageLicense(_0x833ff7,_0x5996b8);})[_0x8684('0x11')](function(_0x37e271){logger[_0x8684('0x23')](_0x37e271[_0x8684('0x27')]);});}}exports[_0x8684('0x28')]=defaultLicense;
\ No newline at end of file
index 3bd4b28..2630bec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb58=['add','format','grayReason','changed','message','role','COUNT','col','admin','telephone','users','telephones','user','then','countBy','exports','util','lodash','moment','bluebird','./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','License','find','defaults','catch','uuid','data1','license','License\x20key\x20value\x20not\x20found','split','decryptString','%s:%s:%s','parse','demo','machineUuid','gray','deadline'];(function(_0x1d08f3,_0x3acdd7){var _0x465c79=function(_0x2486a7){while(--_0x2486a7){_0x1d08f3['push'](_0x1d08f3['shift']());}};_0x465c79(++_0x3acdd7);}(_0xfb58,0x136));var _0x8fb5=function(_0x176496,_0x36ca67){_0x176496=_0x176496-0x0;var _0x281ea0=_0xfb58[_0x176496];return _0x281ea0;};'use strict';var util=require(_0x8fb5('0x0'));var _=require(_0x8fb5('0x1'));var moment=require(_0x8fb5('0x2'));var BPromise=require(_0x8fb5('0x3'));var hardware=require(_0x8fb5('0x4'));var encryptor=require(_0x8fb5('0x5'));var db=require(_0x8fb5('0x6'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x8fb5('0x7'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x8fb5('0x8'),'machineUuid':hardware[_0x8fb5('0x9')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x8fb5('0x7'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':'Breaking\x20license','machineUuid':hardware[_0x8fb5('0x9')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x455d37){return new BPromise(function(_0x5f0180,_0x51e16c){return db[_0x8fb5('0xa')][_0x8fb5('0xb')](_[_0x8fb5('0xc')](_0x455d37,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x406755){return checkLicense(_0x406755,null);})['then'](function(_0x1d39b8){_0x5f0180(_0x1d39b8);return;})[_0x8fb5('0xd')](function(_0x2b6d4a){_0x51e16c(_0x2b6d4a);});});}function checkLicense(_0x1da942,_0x29c048){if(!_0x1da942){demoLicense[_0x8fb5('0xe')]=_0x1da942[_0x8fb5('0xf')];return demoLicense;}try{var _0x2a2340=_0x29c048||_0x1da942[_0x8fb5('0x10')];if(_['isEmpty'](_0x2a2340)){throw new Error(_0x8fb5('0x11'));}var _0x5d8cd4=_0x1da942[_0x8fb5('0xf')];var _0x414110=_0x1da942['data2'];var _0x4e2aad=_0x5d8cd4[_0x8fb5('0x12')]('-')[0x4];var _0x13b0cd=_0x5d8cd4[_0x8fb5('0x12')]('-')[0x0];var _0x34bce6=encryptor[_0x8fb5('0x13')](_0x2a2340,util['format'](_0x8fb5('0x14'),_0x4e2aad,_0x5d8cd4,_0x13b0cd));var _0x51e820=JSON[_0x8fb5('0x15')](_0x34bce6);_0x51e820[_0x8fb5('0x16')]=![];_0x51e820[_0x8fb5('0xe')]=_0x5d8cd4;_0x51e820[_0x8fb5('0x17')]=hardware[_0x8fb5('0x9')]();if(_0x414110){var _0x24a2e1=encryptor['decryptString'](_0x414110);_0x51e820[_0x8fb5('0x18')]=_0x24a2e1;_0x51e820[_0x8fb5('0x19')]=moment(_0x24a2e1)[_0x8fb5('0x1a')](0x7,'days')[_0x8fb5('0x1b')]();_0x51e820[_0x8fb5('0x1c')]=_0x51e820[_0x8fb5('0xe')]!=_0x51e820[_0x8fb5('0x17')]?_0x8fb5('0x1d'):'disabled';}return _0x51e820;}catch(_0x584bbb){breakingLicense[_0x8fb5('0xe')]=_0x1da942['data1'];breakingLicense[_0x8fb5('0x1e')]=_0x584bbb['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x427f7d,_0x5d52be){getLicense()['then'](function(_0x4f35f7){return db['User']['findAll']({'attributes':[_0x8fb5('0x1f'),[db['sequelize']['fn'](_0x8fb5('0x20'),db['sequelize'][_0x8fb5('0x21')]('role')),'count']],'group':_0x8fb5('0x1f'),'where':{'role':{'$or':[_0x8fb5('0x22'),'user',_0x8fb5('0x23')]}},'raw':!![]})['then'](function(_0x211874){var _0x8f8f54={'user':_0x4f35f7[_0x8fb5('0x24')]||0x0,'telephone':_0x4f35f7[_0x8fb5('0x25')]||0x0};_0x211874['forEach'](function(_0x29ef31){var _0x1891a4=_0x29ef31[_0x8fb5('0x1f')]===_0x8fb5('0x22')?_0x8fb5('0x26'):_0x29ef31['role'];_0x8f8f54[_0x1891a4]-=_0x29ef31['count'];if(_0x8f8f54[_0x1891a4]<0x0)_0x8f8f54[_0x1891a4]=0x0;});_0x427f7d(_0x8f8f54);return;});})[_0x8fb5('0xd')](function(_0x20e4a4){_0x5d52be(_0x20e4a4);});});}function checkUserLimits(_0x474013){return new BPromise(function(_0x3248cd,_0x486cfe){getLimits()[_0x8fb5('0x27')](function(_0x461def){var _0x376403=_['pick'](_[_0x8fb5('0x28')](_0x474013,_0x8fb5('0x1f')),['admin',_0x8fb5('0x26'),_0x8fb5('0x23')]);var _0x31de32=(_0x376403[_0x8fb5('0x22')]||0x0)+(_0x376403[_0x8fb5('0x26')]||0x0);var _0x3a9d68=_0x376403[_0x8fb5('0x23')]||0x0;if(_0x31de32>_0x461def[_0x8fb5('0x26')])return _0x486cfe('License\x20limit\x20reached\x20for\x20users');if(_0x3a9d68>_0x461def[_0x8fb5('0x23')])return _0x486cfe('License\x20limit\x20reached\x20for\x20telephones');return _0x3248cd();})[_0x8fb5('0xd')](function(_0x3d4313){_0x486cfe(_0x3d4313);});});}module[_0x8fb5('0x29')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x0af8=['catch','uuid','data1','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','decryptString','format','%s:%s:%s','parse','machineUuid','gray','add','days','grayReason','disabled','message','User','sequelize','COUNT','role','count','admin','telephone','users','telephones','user','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','getUuid','Breaking\x20license','find','defaults','then'];(function(_0x5ee2d1,_0x1e2493){var _0x4572be=function(_0x137548){while(--_0x137548){_0x5ee2d1['push'](_0x5ee2d1['shift']());}};_0x4572be(++_0x1e2493);}(_0x0af8,0x1e2));var _0x80af=function(_0xf33079,_0x2279d6){_0xf33079=_0xf33079-0x0;var _0x24dec0=_0x0af8[_0xf33079];return _0x24dec0;};'use strict';var util=require(_0x80af('0x0'));var _=require(_0x80af('0x1'));var moment=require('moment');var BPromise=require('bluebird');var hardware=require('./hardware');var encryptor=require('../../components/encryptor');var db=require(_0x80af('0x2'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x80af('0x3'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x80af('0x4'),'machineUuid':hardware[_0x80af('0x5')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x80af('0x3'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x80af('0x6'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x3288ee){return new BPromise(function(_0x4d8f24,_0x5ac7e2){return db['License'][_0x80af('0x7')](_[_0x80af('0x8')](_0x3288ee,{'raw':!![],'where':{'id':0x1}}))[_0x80af('0x9')](function(_0x1b63d1){return checkLicense(_0x1b63d1,null);})[_0x80af('0x9')](function(_0x274f40){_0x4d8f24(_0x274f40);return;})[_0x80af('0xa')](function(_0x15561b){_0x5ac7e2(_0x15561b);});});}function checkLicense(_0xe3339e,_0xd17453){if(!_0xe3339e){demoLicense[_0x80af('0xb')]=_0xe3339e[_0x80af('0xc')];return demoLicense;}try{var _0x3fafe9=_0xd17453||_0xe3339e['license'];if(_[_0x80af('0xd')](_0x3fafe9)){throw new Error(_0x80af('0xe'));}var _0x3110c0=_0xe3339e['data1'];var _0x2695fa=_0xe3339e[_0x80af('0xf')];var _0x3fe6fd=_0x3110c0[_0x80af('0x10')]('-')[0x4];var _0x2b3ace=_0x3110c0['split']('-')[0x0];var _0x128559=encryptor[_0x80af('0x11')](_0x3fafe9,util[_0x80af('0x12')](_0x80af('0x13'),_0x3fe6fd,_0x3110c0,_0x2b3ace));var _0x5285c6=JSON[_0x80af('0x14')](_0x128559);_0x5285c6['demo']=![];_0x5285c6['uuid']=_0x3110c0;_0x5285c6[_0x80af('0x15')]=hardware['getUuid']();if(_0x2695fa){var _0x239c1d=encryptor[_0x80af('0x11')](_0x2695fa);_0x5285c6[_0x80af('0x16')]=_0x239c1d;_0x5285c6['deadline']=moment(_0x239c1d)[_0x80af('0x17')](0x7,_0x80af('0x18'))[_0x80af('0x12')]();_0x5285c6[_0x80af('0x19')]=_0x5285c6[_0x80af('0xb')]!=_0x5285c6[_0x80af('0x15')]?'changed':_0x80af('0x1a');}return _0x5285c6;}catch(_0x4b182e){breakingLicense[_0x80af('0xb')]=_0xe3339e[_0x80af('0xc')];breakingLicense[_0x80af('0x1b')]=_0x4b182e[_0x80af('0x1b')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x1e5dd6,_0x5e207d){getLicense()[_0x80af('0x9')](function(_0x1b11b4){return db[_0x80af('0x1c')]['findAll']({'attributes':['role',[db[_0x80af('0x1d')]['fn'](_0x80af('0x1e'),db[_0x80af('0x1d')]['col'](_0x80af('0x1f'))),_0x80af('0x20')]],'group':_0x80af('0x1f'),'where':{'role':{'$or':[_0x80af('0x21'),'user',_0x80af('0x22')]}},'raw':!![]})[_0x80af('0x9')](function(_0xeef454){var _0x293f23={'user':_0x1b11b4[_0x80af('0x23')]||0x0,'telephone':_0x1b11b4[_0x80af('0x24')]||0x0};_0xeef454['forEach'](function(_0x318493){var _0x32d747=_0x318493['role']==='admin'?_0x80af('0x25'):_0x318493[_0x80af('0x1f')];_0x293f23[_0x32d747]-=_0x318493[_0x80af('0x20')];if(_0x293f23[_0x32d747]<0x0)_0x293f23[_0x32d747]=0x0;});_0x1e5dd6(_0x293f23);return;});})[_0x80af('0xa')](function(_0x3eb995){_0x5e207d(_0x3eb995);});});}function checkUserLimits(_0x1715d2){return new BPromise(function(_0x1bb4b8,_0x146251){getLimits()[_0x80af('0x9')](function(_0xc2eb7e){var _0x40322b=_['pick'](_['countBy'](_0x1715d2,_0x80af('0x1f')),[_0x80af('0x21'),_0x80af('0x25'),_0x80af('0x22')]);var _0x10a598=(_0x40322b[_0x80af('0x21')]||0x0)+(_0x40322b['user']||0x0);var _0x1cc509=_0x40322b[_0x80af('0x22')]||0x0;if(_0x10a598>_0xc2eb7e['user'])return _0x146251(_0x80af('0x26'));if(_0x1cc509>_0xc2eb7e[_0x80af('0x22')])return _0x146251(_0x80af('0x27'));return _0x1bb4b8();})[_0x80af('0xa')](function(_0x4a1595){_0x146251(_0x4a1595);});});}module[_0x80af('0x28')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 0e22624..51d1811 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2272=['secret','exports','http://localhost:9000','myappanuglar-secret','app-id'];(function(_0x402125,_0x3546a9){var _0x183c8b=function(_0x732136){while(--_0x732136){_0x402125['push'](_0x402125['shift']());}};_0x183c8b(++_0x3546a9);}(_0x2272,0xd8));var _0x2227=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x2272[_0x17d9e3];return _0x14192d;};'use strict';module[_0x2227('0x0')]={'DOMAIN':_0x2227('0x1'),'SESSION_SECRET':_0x2227('0x2'),'GOOGLE_ID':_0x2227('0x3'),'GOOGLE_SECRET':_0x2227('0x4'),'DEBUG':''};
\ No newline at end of file
+var _0x32b6=['secret','exports','http://localhost:9000','app-id'];(function(_0x14a75e,_0x291d72){var _0x48a136=function(_0x1e56d2){while(--_0x1e56d2){_0x14a75e['push'](_0x14a75e['shift']());}};_0x48a136(++_0x291d72);}(_0x32b6,0x1d1));var _0x632b=function(_0x44bdda,_0xa742b2){_0x44bdda=_0x44bdda-0x0;var _0x3bb898=_0x32b6[_0x44bdda];return _0x3bb898;};'use strict';module[_0x632b('0x0')]={'DOMAIN':_0x632b('0x1'),'SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':_0x632b('0x2'),'GOOGLE_SECRET':_0x632b('0x3'),'DEBUG':''};
\ No newline at end of file
index e27a1be..57d7644 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x054f=['../utils/loggers','fileLogger','exports'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x054f,0x11a));var _0xf054=function(_0x3eef97,_0xd423df){_0x3eef97=_0x3eef97-0x0;var _0x1d41a7=_0x054f[_0x3eef97];return _0x1d41a7;};'use strict';var fileLogger=require(_0xf054('0x0'))[_0xf054('0x1')];module[_0xf054('0x2')]=fileLogger;
\ No newline at end of file
+var _0xb77a=['exports','../utils/loggers','fileLogger'];(function(_0x12cd5f,_0x4d3cf3){var _0x8481bd=function(_0x2fbc2a){while(--_0x2fbc2a){_0x12cd5f['push'](_0x12cd5f['shift']());}};_0x8481bd(++_0x4d3cf3);}(_0xb77a,0x169));var _0xab77=function(_0x4a9248,_0x19f1fe){_0x4a9248=_0x4a9248-0x0;var _0x3445d4=_0xb77a[_0x4a9248];return _0x3445d4;};'use strict';var fileLogger=require(_0xab77('0x0'))[_0xab77('0x1')];module[_0xab77('0x2')]=fileLogger;
\ No newline at end of file
index d49d9ad..ea26ac8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33bf=['resolve','join','legacy-libs','express','../../services/express/index.js','ami','../../services/ami/index.js','agi','email','../../services/email/index.js','routing','xdr','../../services/xdr/index.js'];(function(_0x18f6a1,_0x2a9d48){var _0x494d42=function(_0x11c950){while(--_0x11c950){_0x18f6a1['push'](_0x18f6a1['shift']());}};_0x494d42(++_0x2a9d48);}(_0x33bf,0x11e));var _0xf33b=function(_0x2b9e8a,_0x7b21d4){_0x2b9e8a=_0x2b9e8a-0x0;var _0x520e67=_0x33bf[_0x2b9e8a];return _0x520e67;};'use strict';var path=require('path');var cfg=require('../../config/environment');var env={'NODE_PATH':path[_0xf33b('0x0')](path[_0xf33b('0x1')](cfg['root'],_0xf33b('0x2')))};var pm2config={'apps':[{'name':_0xf33b('0x3'),'script':path[_0xf33b('0x1')](__dirname,_0xf33b('0x4')),'env':env},{'name':_0xf33b('0x5'),'script':path[_0xf33b('0x1')](__dirname,_0xf33b('0x6')),'env':env},{'name':_0xf33b('0x7'),'script':path['join'](__dirname,'../../services/agi/index.js'),'env':env},{'name':_0xf33b('0x8'),'script':path[_0xf33b('0x1')](__dirname,_0xf33b('0x9')),'env':env},{'name':_0xf33b('0xa'),'script':path[_0xf33b('0x1')](__dirname,'../../services/routing/index.js'),'env':env},{'name':_0xf33b('0xb'),'script':path[_0xf33b('0x1')](__dirname,_0xf33b('0xc')),'env':env}]};module['exports']=pm2config;
\ No newline at end of file
+var _0xb7b7=['routing','xdr','exports','path','../../config/environment','root','legacy-libs','express','join','ami','../../services/ami/index.js','agi','../../services/agi/index.js','email','../../services/email/index.js'];(function(_0x3274ce,_0xfccd5c){var _0xed387=function(_0x58fc78){while(--_0x58fc78){_0x3274ce['push'](_0x3274ce['shift']());}};_0xed387(++_0xfccd5c);}(_0xb7b7,0x99));var _0x7b7b=function(_0x47e076,_0x3bbc86){_0x47e076=_0x47e076-0x0;var _0x2f2b2f=_0xb7b7[_0x47e076];return _0x2f2b2f;};'use strict';var path=require(_0x7b7b('0x0'));var cfg=require(_0x7b7b('0x1'));var env={'NODE_PATH':path['resolve'](path['join'](cfg[_0x7b7b('0x2')],_0x7b7b('0x3')))};var pm2config={'apps':[{'name':_0x7b7b('0x4'),'script':path[_0x7b7b('0x5')](__dirname,'../../services/express/index.js'),'env':env},{'name':_0x7b7b('0x6'),'script':path[_0x7b7b('0x5')](__dirname,_0x7b7b('0x7')),'env':env},{'name':_0x7b7b('0x8'),'script':path[_0x7b7b('0x5')](__dirname,_0x7b7b('0x9')),'env':env},{'name':_0x7b7b('0xa'),'script':path[_0x7b7b('0x5')](__dirname,_0x7b7b('0xb')),'env':env},{'name':_0x7b7b('0xc'),'script':path[_0x7b7b('0x5')](__dirname,'../../services/routing/index.js'),'env':env},{'name':_0x7b7b('0xd'),'script':path[_0x7b7b('0x5')](__dirname,'../../services/xdr/index.js'),'env':env}]};module[_0x7b7b('0xe')]=pm2config;
\ No newline at end of file
index a676916..60ea65b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfec=['connect','connected','then','start','stop','disconnect','restart','list','delete','dump','saved','./config'];(function(_0x216a00,_0x4916b5){var _0x104560=function(_0x2a5faa){while(--_0x2a5faa){_0x216a00['push'](_0x216a00['shift']());}};_0x104560(++_0x4916b5);}(_0xdfec,0xe3));var _0xcdfe=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xdfec[_0x321bb2];return _0x9c12ed;};'use strict';var pm2=require('pm2');var BPromise=require('bluebird');var config=require(_0xcdfe('0x0'));function connect(){return new BPromise(function(_0x4bf59a,_0x5ed864){return pm2[_0xcdfe('0x1')](function(_0x15d6df){if(_0x15d6df){return _0x5ed864(_0x15d6df);}return _0x4bf59a(_0xcdfe('0x2'));});});};exports['start']=function(_0x1c277e){return connect()[_0xcdfe('0x3')](function(){return new BPromise(function(_0x15e382,_0x20dda4){return pm2[_0xcdfe('0x4')](_0x1c277e,function(_0x2793ca,_0x570315){if(_0x2793ca){return _0x20dda4(_0x2793ca);}pm2['disconnect']();return _0x15e382(_0x570315);});});});};exports[_0xcdfe('0x5')]=function(_0x5561fb){return connect()[_0xcdfe('0x3')](function(){return new BPromise(function(_0x11001b,_0x294975){return pm2[_0xcdfe('0x5')](_0x5561fb,function(_0x3c628f,_0x1f1443){if(_0x3c628f){return _0x294975(_0x3c628f);}pm2[_0xcdfe('0x6')]();return _0x11001b(_0x1f1443);});});});};exports[_0xcdfe('0x7')]=function(_0x3ae00c){return connect()[_0xcdfe('0x3')](function(){return new BPromise(function(_0x3eeef0,_0x2c9fa1){return pm2[_0xcdfe('0x7')](_0x3ae00c,function(_0x4f3856,_0x8a9ba6){if(_0x4f3856){return _0x2c9fa1(_0x4f3856);}pm2[_0xcdfe('0x6')]();return _0x3eeef0(_0x8a9ba6);});});});};exports['list']=function(){return connect()['then'](function(){return new BPromise(function(_0x3a3f01,_0x3a201e){return pm2[_0xcdfe('0x8')](function(_0x3eeb53,_0x1a1c5e){if(_0x3eeb53){return _0x3a201e(_0x3eeb53);}pm2[_0xcdfe('0x6')]();return _0x3a3f01(_0x1a1c5e);});});});};exports['describe']=function(_0x3e780b){return connect()[_0xcdfe('0x3')](function(){return new BPromise(function(_0x2145fc,_0x5df049){return pm2['describe'](_0x3e780b,function(_0x58b3f2,_0x48ba4e){if(_0x58b3f2){return _0x5df049(_0x58b3f2);}pm2[_0xcdfe('0x6')]();return _0x2145fc(_0x48ba4e);});});});};exports[_0xcdfe('0x9')]=function(_0x2973fa){return connect()[_0xcdfe('0x3')](function(){return new BPromise(function(_0x4813b3,_0x2118f0){return pm2[_0xcdfe('0x9')](_0x2973fa,function(_0x16ae40,_0x4e9ade){if(_0x16ae40){return _0x2118f0(_0x16ae40);}pm2[_0xcdfe('0x6')]();return _0x4813b3(_0x4e9ade);});});});};exports['dump']=function(){return connect()[_0xcdfe('0x3')](function(){return new BPromise(function(_0x2a7ca1,_0x4ae84a){return pm2[_0xcdfe('0xa')](function(_0x51d38f){if(_0x51d38f){return _0x4ae84a(_0x51d38f);}return _0x2a7ca1(_0xcdfe('0xb'));});});});};
\ No newline at end of file
+var _0xaecd=['delete','dump','pm2','bluebird','connected','start','then','disconnect','stop','restart','list','describe'];(function(_0x1314d4,_0xb0b16d){var _0x584ba5=function(_0x394269){while(--_0x394269){_0x1314d4['push'](_0x1314d4['shift']());}};_0x584ba5(++_0xb0b16d);}(_0xaecd,0x15e));var _0xdaec=function(_0x3e86b5,_0x138383){_0x3e86b5=_0x3e86b5-0x0;var _0x53998c=_0xaecd[_0x3e86b5];return _0x53998c;};'use strict';var pm2=require(_0xdaec('0x0'));var BPromise=require(_0xdaec('0x1'));var config=require('./config');function connect(){return new BPromise(function(_0x32ba54,_0xfd06cb){return pm2['connect'](function(_0x566dc4){if(_0x566dc4){return _0xfd06cb(_0x566dc4);}return _0x32ba54(_0xdaec('0x2'));});});};exports[_0xdaec('0x3')]=function(_0x3e1fd0){return connect()[_0xdaec('0x4')](function(){return new BPromise(function(_0x267888,_0x4add00){return pm2[_0xdaec('0x3')](_0x3e1fd0,function(_0x3f9079,_0x40d3ff){if(_0x3f9079){return _0x4add00(_0x3f9079);}pm2[_0xdaec('0x5')]();return _0x267888(_0x40d3ff);});});});};exports[_0xdaec('0x6')]=function(_0x316a2a){return connect()[_0xdaec('0x4')](function(){return new BPromise(function(_0x3aae47,_0x1d9f83){return pm2[_0xdaec('0x6')](_0x316a2a,function(_0x164b0,_0x4da23c){if(_0x164b0){return _0x1d9f83(_0x164b0);}pm2[_0xdaec('0x5')]();return _0x3aae47(_0x4da23c);});});});};exports[_0xdaec('0x7')]=function(_0x430ea8){return connect()[_0xdaec('0x4')](function(){return new BPromise(function(_0x4de1ab,_0x144b5d){return pm2[_0xdaec('0x7')](_0x430ea8,function(_0x445c89,_0x2b217f){if(_0x445c89){return _0x144b5d(_0x445c89);}pm2[_0xdaec('0x5')]();return _0x4de1ab(_0x2b217f);});});});};exports[_0xdaec('0x8')]=function(){return connect()[_0xdaec('0x4')](function(){return new BPromise(function(_0x9960ad,_0x5290bd){return pm2[_0xdaec('0x8')](function(_0x1bb527,_0x17e406){if(_0x1bb527){return _0x5290bd(_0x1bb527);}pm2[_0xdaec('0x5')]();return _0x9960ad(_0x17e406);});});});};exports['describe']=function(_0x5e2261){return connect()[_0xdaec('0x4')](function(){return new BPromise(function(_0x5eb318,_0x38448b){return pm2[_0xdaec('0x9')](_0x5e2261,function(_0x14a824,_0x576869){if(_0x14a824){return _0x38448b(_0x14a824);}pm2[_0xdaec('0x5')]();return _0x5eb318(_0x576869);});});});};exports[_0xdaec('0xa')]=function(_0x5c29de){return connect()[_0xdaec('0x4')](function(){return new BPromise(function(_0x5dc17c,_0x50cdf7){return pm2['delete'](_0x5c29de,function(_0x53c4b7,_0x3ce977){if(_0x53c4b7){return _0x50cdf7(_0x53c4b7);}pm2['disconnect']();return _0x5dc17c(_0x3ce977);});});});};exports[_0xdaec('0xb')]=function(){return connect()['then'](function(){return new BPromise(function(_0x141fa4,_0x23a2b7){return pm2[_0xdaec('0xb')](function(_0x1d22b4){if(_0x1d22b4){return _0x23a2b7(_0x1d22b4);}return _0x141fa4('saved');});});});};
\ No newline at end of file
index 53a264c..46c67eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d0c=['lodash','ioredis','util','../../config/environment','schedule','redis','socket.io-emitter','find','chatTimeout','then','ChatInteraction','subtract','length','map','[CHAT]\x20Interactions\x20to\x20close:','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','join','emit','chatInteraction:update','error','inspect','start'];(function(_0x236a40,_0x473b57){var _0x417113=function(_0x1bdd82){while(--_0x1bdd82){_0x236a40['push'](_0x236a40['shift']());}};_0x417113(++_0x473b57);}(_0x4d0c,0x104));var _0xc4d0=function(_0x31b63a,_0x5aadd1){_0x31b63a=_0x31b63a-0x0;var _0x5892ea=_0x4d0c[_0x31b63a];return _0x5892ea;};'use strict';var _=require(_0xc4d0('0x0'));var moment=require('moment');var Redis=require(_0xc4d0('0x1'));var util=require(_0xc4d0('0x2'));var config=require(_0xc4d0('0x3'));var db=require('../../mysqldb')['db'];var logger=require('../logger')(_0xc4d0('0x4'));config[_0xc4d0('0x5')]=_['defaults'](config[_0xc4d0('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xc4d0('0x6'))(new Redis(config[_0xc4d0('0x5')]));function closeInteractions(){var _0x3c00b4=0x0;var _0x3350e6=[];return db['Setting'][_0xc4d0('0x7')]({'raw':!![],'attributes':['id',_0xc4d0('0x8')],'where':{'id':0x1}})[_0xc4d0('0x9')](function(_0x17b3e2){_0x3c00b4=_0x17b3e2[_0xc4d0('0x8')];if(_0x3c00b4){return db[_0xc4d0('0xa')]['findAll']({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xc4d0('0xb')](_0x17b3e2[_0xc4d0('0x8')],'minutes')}}});}else{return[];}})[_0xc4d0('0x9')](function(_0x517ae2){if(_0x517ae2&&_0x517ae2[_0xc4d0('0xc')]){_0x3350e6=_[_0xc4d0('0xd')](_0x517ae2||[],'id');logger['info'](_0xc4d0('0xe'),_0x3350e6['join']());return db[_0xc4d0('0xa')][_0xc4d0('0xf')]({'closeReason':_0xc4d0('0x10'),'disposition':_0xc4d0('0x11'),'closed':!![],'closedAt':moment()[_0xc4d0('0x12')](_0xc4d0('0x13'))},{'where':{'id':_0x3350e6}});}})['then'](function(){if(_0x3350e6&&_0x3350e6[_0xc4d0('0xc')]){logger['info']('[CHAT]\x20Sending\x20updates\x20for\x20interactions:',_0x3350e6[_0xc4d0('0x14')]());for(var _0x379537=0x0;_0x379537<_0x3350e6['length'];_0x379537++){io[_0xc4d0('0x15')](_0xc4d0('0x16'),{'id':_0x3350e6[_0x379537],'closed':!![]});}}})['catch'](function(_0x581497){logger[_0xc4d0('0x17')]('[CHAT]\x20Error\x20closing\x20interactions',_0x581497?util[_0xc4d0('0x18')](_0x581497,{'showHidden':![],'depth':null}):'');});}exports[_0xc4d0('0x19')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x9cf9=['map','info','system','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','chatInteraction:update','error','[CHAT]\x20Error\x20closing\x20interactions','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','localhost','socket.io-emitter','Setting','find','chatTimeout','then','ChatInteraction','findAll','lastMsgAt','subtract','minutes','length'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9cf9,0xcd));var _0x99cf=function(_0xc782b3,_0x441533){_0xc782b3=_0xc782b3-0x0;var _0x67d928=_0x9cf9[_0xc782b3];return _0x67d928;};'use strict';var _=require('lodash');var moment=require('moment');var Redis=require(_0x99cf('0x0'));var util=require(_0x99cf('0x1'));var config=require(_0x99cf('0x2'));var db=require(_0x99cf('0x3'))['db'];var logger=require(_0x99cf('0x4'))(_0x99cf('0x5'));config[_0x99cf('0x6')]=_['defaults'](config[_0x99cf('0x6')],{'host':_0x99cf('0x7'),'port':0x18eb});var io=require(_0x99cf('0x8'))(new Redis(config['redis']));function closeInteractions(){var _0x9206c4=0x0;var _0xaf8de3=[];return db[_0x99cf('0x9')][_0x99cf('0xa')]({'raw':!![],'attributes':['id',_0x99cf('0xb')],'where':{'id':0x1}})[_0x99cf('0xc')](function(_0x59610b){_0x9206c4=_0x59610b['chatTimeout'];if(_0x9206c4){return db[_0x99cf('0xd')][_0x99cf('0xe')]({'raw':!![],'attributes':['id',_0x99cf('0xf')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x99cf('0x10')](_0x59610b[_0x99cf('0xb')],_0x99cf('0x11'))}}});}else{return[];}})[_0x99cf('0xc')](function(_0x2578f9){if(_0x2578f9&&_0x2578f9[_0x99cf('0x12')]){_0xaf8de3=_[_0x99cf('0x13')](_0x2578f9||[],'id');logger[_0x99cf('0x14')]('[CHAT]\x20Interactions\x20to\x20close:',_0xaf8de3['join']());return db['ChatInteraction']['update']({'closeReason':_0x99cf('0x15'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0x99cf('0x16')](_0x99cf('0x17'))},{'where':{'id':_0xaf8de3}});}})[_0x99cf('0xc')](function(){if(_0xaf8de3&&_0xaf8de3[_0x99cf('0x12')]){logger['info'](_0x99cf('0x18'),_0xaf8de3['join']());for(var _0xbbcd97=0x0;_0xbbcd97<_0xaf8de3['length'];_0xbbcd97++){io['emit'](_0x99cf('0x19'),{'id':_0xaf8de3[_0xbbcd97],'closed':!![]});}}})['catch'](function(_0x2ec2e0){logger[_0x99cf('0x1a')](_0x99cf('0x1b'),_0x2ec2e0?util['inspect'](_0x2ec2e0,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index f719c0f..c99b4d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2594=['exports','../../api/cloudProvider/cloudProvider.oauth.js'];(function(_0x5994bc,_0x1b5111){var _0x49f3b1=function(_0x4d4b0d){while(--_0x4d4b0d){_0x5994bc['push'](_0x5994bc['shift']());}};_0x49f3b1(++_0x1b5111);}(_0x2594,0x9f));var _0x4259=function(_0x4c3864,_0x3a9325){_0x4c3864=_0x4c3864-0x0;var _0x270321=_0x2594[_0x4c3864];return _0x270321;};'use strict';function start(){var _0x539cc0=require(_0x4259('0x0'));return _0x539cc0['startAllRefreshIntervals']();}module[_0x4259('0x1')]={'intervals':{},'start':start};
\ No newline at end of file
+var _0x7013=['exports','../../api/cloudProvider/cloudProvider.oauth.js','startAllRefreshIntervals'];(function(_0x583f00,_0x33a902){var _0x10d29e=function(_0x4df025){while(--_0x4df025){_0x583f00['push'](_0x583f00['shift']());}};_0x10d29e(++_0x33a902);}(_0x7013,0x73));var _0x3701=function(_0x376bf7,_0x1eaf7a){_0x376bf7=_0x376bf7-0x0;var _0x17a21a=_0x7013[_0x376bf7];return _0x17a21a;};'use strict';function start(){var _0xa9bc8c=require(_0x3701('0x0'));return _0xa9bc8c[_0x3701('0x1')]();}module[_0x3701('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
index 83269b8..48331f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x748b=['stringify','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','email\x20sent','catch','data','isNil','subtractUnit\x20null\x20or\x20undefined','subtract','subtractUnit','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','CloudProvider','keys','jobs','map','keyBy','toString','intersection','length','exists','stop','resolve','run\x20job','cron','active','isBetween','startAt','endAt','add','add\x20cron','deleteJob','stop\x20cron','update','update\x20cron','run','start','util','lodash','moment','cron-job-manager','jayson/promise','bluebird','../logger','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','info','email','MailAccount','getSmtpOptions','\x22%s\x22\x20<%s>','Smtp','user','bcc','format','Report\x20%s\x20last\x20%s\x20%s','name','subtractNumber','join','../../files/reports','savename','basename','extname','zip','existsSync','status','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'];(function(_0x504e0a,_0x119280){var _0x1e9ed4=function(_0xd915b1){while(--_0xd915b1){_0x504e0a['push'](_0x504e0a['shift']());}};_0x1e9ed4(++_0x119280);}(_0x748b,0x18f));var _0xb748=function(_0xcf99a0,_0x26561a){_0xcf99a0=_0xcf99a0-0x0;var _0xe51196=_0x748b[_0xcf99a0];return _0xe51196;};'use strict';var fs=require('fs');var util=require(_0xb748('0x0'));var path=require('path');var _=require(_0xb748('0x1'));var moment=require(_0xb748('0x2'));var CronJobManager=require(_0xb748('0x3'));var jayson=require(_0xb748('0x4'));var BPromise=require(_0xb748('0x5'));var logger=require(_0xb748('0x6'))(_0xb748('0x7'));var db=require(_0xb748('0x8'))['db'];var analyticCustomReportController=require(_0xb748('0x9'));var analyticDefaultReportController=require(_0xb748('0xa'));var client=jayson['client']['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x31c5f8,_0x4de301){return function(){logger[_0xb748('0xb')]('Try\x20to\x20send\x20a\x20mail\x20to',_0x31c5f8[_0xb748('0xc')]);var _0x515573=!![];var _0x4a6aa3=_0x31c5f8[_0xb748('0xd')][_0xb748('0xe')]();var _0x3438ba={'account':_0x4a6aa3,'message':{'from':util['format'](_0xb748('0xf'),_0x31c5f8[_0xb748('0xd')]['name'],_0x31c5f8[_0xb748('0xd')][_0xb748('0xc')]||_0x31c5f8[_0xb748('0xd')][_0xb748('0x10')][_0xb748('0x11')]),'to':_0x31c5f8[_0xb748('0xc')],'cc':_0x31c5f8['cc'],'bcc':_0x31c5f8[_0xb748('0x12')],'subject':util[_0xb748('0x13')](_0xb748('0x14'),_0x4de301[_0xb748('0x15')],_0x31c5f8[_0xb748('0x16')],_0x31c5f8['subtractUnit'])}};var _0x3a2395=path[_0xb748('0x17')](__dirname,_0xb748('0x18'));var _0x1e5d40=_0x4de301[_0xb748('0x19')];var _0x5eb3de=util['format']('%s.%s',path[_0xb748('0x1a')](_0x4de301[_0xb748('0x19')],path[_0xb748('0x1b')](_0x4de301[_0xb748('0x19')])),_0xb748('0x1c'));var _0xde90d6=path[_0xb748('0x17')](_0x3a2395,_0x1e5d40);var _0x204dc6=path[_0xb748('0x17')](_0x3a2395,_0x5eb3de);if(fs[_0xb748('0x1d')](_0xde90d6)){_0x4de301[_0xb748('0x1e')]=_0xb748('0x1f');_0x3438ba[_0xb748('0x20')][_0xb748('0x21')]=[{'filename':_0x1e5d40,'path':_0xde90d6}];_0x3438ba[_0xb748('0x20')][_0xb748('0x22')]=util[_0xb748('0x13')](_0xb748('0x23'),JSON[_0xb748('0x24')](_0x4de301,null,0x2));}else if(fs[_0xb748('0x1d')](_0x204dc6)){_0x4de301[_0xb748('0x1e')]='Sent';_0x3438ba[_0xb748('0x20')][_0xb748('0x21')]=[{'filename':_0x5eb3de,'path':_0x204dc6}];}else{_0x3438ba[_0xb748('0x20')]['text']='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x31c5f8[_0xb748('0x25')]){_0x515573=![];logger[_0xb748('0xb')](_0xb748('0x26'));}}if(_0x515573){return client[_0xb748('0x27')](_0xb748('0x28'),_0x3438ba)[_0xb748('0x29')](function(_0x1bf924){if(_0x1bf924[_0xb748('0x2a')]){return logger[_0xb748('0x2a')](_0xb748('0x2b'),JSON[_0xb748('0x24')](_0x1bf924));}return logger['info'](_0xb748('0x2c'));})[_0xb748('0x2d')](function(_0x524445){return logger[_0xb748('0x2a')](_0xb748('0x2b'),JSON[_0xb748('0x24')](_0x524445));});}};}function handleError(){return function(_0xb5f224){return logger[_0xb748('0x2a')](JSON['stringify'](_0xb5f224));};}function handleResult(_0x9d84ad){return function(_0x1c461f){logger['info'](_0xb748('0x2e'),JSON[_0xb748('0x24')](_0x1c461f));if(_0x9d84ad[_0xb748('0xd')]&&_0x9d84ad[_0xb748('0xd')]['Smtp']&&!_['isNil'](_0x9d84ad[_0xb748('0xc')])){setTimeout(handleSendEmail(_0x9d84ad,_0x1c461f),0x3c*0x3e8);}};}function handleJob(_0x23b5ce){return function(){try{if(_[_0xb748('0x2f')](_0x23b5ce['subtractNumber'])){return logger[_0xb748('0xb')]('subtractNumber\x20null\x20or\x20undefined');}if(_['isNil'](_0x23b5ce['subtractUnit'])){return logger[_0xb748('0xb')](_0xb748('0x30'));}var _0x17c3c0={'startDate':moment()[_0xb748('0x31')](_0x23b5ce[_0xb748('0x16')],_0x23b5ce[_0xb748('0x32')])[_0xb748('0x13')](_0xb748('0x33')),'endDate':moment()['format'](_0xb748('0x33')),'type':_0xb748('0x34'),'output':_0x23b5ce[_0xb748('0x35')],'name':_0x23b5ce[_0xb748('0x15')]};if(!_[_0xb748('0x2f')](_0x23b5ce[_0xb748('0x36')])){logger[_0xb748('0xb')](_0xb748('0x37'),_0x23b5ce[_0xb748('0x36')]);return analyticDefaultReportController[_0xb748('0x38')]({'id':_0x23b5ce[_0xb748('0x36')]},_0x17c3c0)['then'](handleResult(_0x23b5ce))[_0xb748('0x2d')](handleError());}if(!_[_0xb748('0x2f')](_0x23b5ce[_0xb748('0x39')])){logger[_0xb748('0xb')](_0xb748('0x3a'),_0x23b5ce['CustomReportId']);return analyticCustomReportController[_0xb748('0x38')]({'id':_0x23b5ce[_0xb748('0x39')]},_0x17c3c0)[_0xb748('0x29')](handleResult(_0x23b5ce))[_0xb748('0x2d')](handleError());}}catch(_0x510ea4){logger['error'](JSON[_0xb748('0x24')](_0x510ea4));}return logger[_0xb748('0xb')](_0xb748('0x3b'));};}function getJobs(_0x145146){var _0x57f62f={};if(_0x145146){_0x57f62f['id']=_0x145146;}return db[_0xb748('0x3c')][_0xb748('0x3d')]({'where':_0x57f62f,'include':[{'model':db[_0xb748('0xd')],'attributes':['id',_0xb748('0x15'),_0xb748('0xc')],'include':[{'model':db['MailServerOut'],'as':_0xb748('0x10'),'include':[{'model':db[_0xb748('0x3e')],'as':_0xb748('0x3e')}]}]}]})['then'](function(_0x1b702d){var _0x538d7b=_[_0xb748('0x3f')](manager[_0xb748('0x40')]);var _0x20b42e=_[_0xb748('0x41')](_0x1b702d,function(_0x223186){return _0x223186['id']['toString']();});var _0x2df54c=_[_0xb748('0x42')](_0x1b702d,function(_0x1936f9){return _0x1936f9['id'][_0xb748('0x43')]();});var _0x5bc9fe=_0x145146?_0x20b42e:_['difference'](_0x20b42e,_0x538d7b);var _0x11bea8=_[_0xb748('0x44')](_0x20b42e,_0x538d7b);var _0x4adff4=_['difference'](_0x538d7b,_0x20b42e);var _0x4f839b;var _0xfdaed3;for(_0x4f839b=0x0;_0x4f839b<_0x4adff4[_0xb748('0x45')]&&!_0x145146;_0x4f839b+=0x1){_0xfdaed3=_0x4adff4[_0x4f839b]['toString']();if(manager[_0xb748('0x46')](_0xfdaed3)){manager[_0xb748('0x47')](_0xfdaed3);manager['deleteJob'](_0xfdaed3);logger[_0xb748('0xb')]('delete\x20cron',_0xfdaed3);}}logger['info']('toRun',JSON['stringify'](_0x5bc9fe));for(_0x4f839b=0x0;_0x4f839b<_0x5bc9fe['length'];_0x4f839b+=0x1){_0xfdaed3=_0x5bc9fe[_0x4f839b][_0xb748('0x43')]();logger[_0xb748('0xb')]('index',_0xfdaed3);if(_0x145146){logger['info']('my\x20id',_0x145146);logger[_0xb748('0xb')](JSON['stringify'](_0x2df54c[_0xfdaed3]));BPromise[_0xb748('0x48')]()[_0xb748('0x29')](handleJob(_0x2df54c[_0xfdaed3]));logger['info'](_0xb748('0x49'),_0x2df54c[_0xfdaed3]['name'],_0x2df54c[_0xfdaed3][_0xb748('0x4a')]);}else if(_0x2df54c[_0xfdaed3]['cron']&&_0x2df54c[_0xfdaed3][_0xb748('0x4b')]&&moment()[_0xb748('0x4c')](_0x2df54c[_0xfdaed3][_0xb748('0x4d')],_0x2df54c[_0xfdaed3][_0xb748('0x4e')])){manager[_0xb748('0x4f')](_0xfdaed3,_0x2df54c[_0xfdaed3][_0xb748('0x4a')],handleJob(_0x2df54c[_0xfdaed3]));manager['start'](_0xfdaed3);logger['info'](_0xb748('0x50'),_0x2df54c[_0xfdaed3]['name'],_0x2df54c[_0xfdaed3][_0xb748('0x4a')]);}else if(manager[_0xb748('0x46')](_0xfdaed3)){manager[_0xb748('0x47')](_0xfdaed3);manager[_0xb748('0x51')](_0xfdaed3);logger[_0xb748('0xb')](_0xb748('0x52'),_0x2df54c[_0xfdaed3][_0xb748('0x15')],_0x2df54c[_0xfdaed3][_0xb748('0x4a')]);}}for(_0x4f839b=0x0,_0xfdaed3;_0x4f839b<_0x11bea8[_0xb748('0x45')]&&!_0x145146;_0x4f839b+=0x1){_0xfdaed3=_0x11bea8[_0x4f839b][_0xb748('0x43')]();if(manager[_0xb748('0x46')](_0xfdaed3)){if(_0x2df54c[_0xfdaed3]['cron']&&_0x2df54c[_0xfdaed3][_0xb748('0x4b')]&&moment()['isBetween'](_0x2df54c[_0xfdaed3][_0xb748('0x4d')],_0x2df54c[_0xfdaed3][_0xb748('0x4e')])){manager[_0xb748('0x53')](_0xfdaed3,_0x2df54c[_0xfdaed3][_0xb748('0x4a')],handleJob(_0x2df54c[_0xfdaed3]));logger['info'](_0xb748('0x54'),_0x2df54c[_0xfdaed3][_0xb748('0x15')],_0x2df54c[_0xfdaed3]['cron']);}else{manager[_0xb748('0x47')](_0xfdaed3);manager[_0xb748('0x51')](_0xfdaed3);logger[_0xb748('0xb')](_0xb748('0x52'),_0x2df54c[_0xfdaed3][_0xb748('0x15')],_0x2df54c[_0xfdaed3][_0xb748('0x4a')]);}}}})[_0xb748('0x2d')](function(_0x17a831){logger['error'](JSON['stringify'](_0x17a831));});}exports[_0xb748('0x55')]=function(_0x1bfa75){return getJobs(_0x1bfa75);};exports[_0xb748('0x56')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0x930f=['isNil','subtractNumber','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','exec\x20defaul\x20report\x20id:%s','DefaultReportId','CustomReportId','runReport','no\x20report\x20id','findAll','MailServerOut','CloudProvider','keys','jobs','map','toString','difference','length','exists','stop','deleteJob','delete\x20cron','toRun','resolve','run\x20job','cron','active','endAt','start','add\x20cron','stop\x20cron','isBetween','update','update\x20cron','run','util','path','lodash','moment','cron-job-manager','jayson/promise','bluebird','schedule','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','format','name','bcc','subtractUnit','../../files/reports','savename','%s.%s','basename','extname','zip','join','existsSync','status','message','attachments','stringify','text','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','info','empty\x20file,\x20email\x20not\x20sent','SendMail','then','error','error\x20mail','email\x20sent','catch','data','Smtp'];(function(_0x26022e,_0x35c355){var _0x4a4a5e=function(_0x5d51aa){while(--_0x5d51aa){_0x26022e['push'](_0x26022e['shift']());}};_0x4a4a5e(++_0x35c355);}(_0x930f,0x17b));var _0xf930=function(_0x55d315,_0x2f5192){_0x55d315=_0x55d315-0x0;var _0xa9f16d=_0x930f[_0x55d315];return _0xa9f16d;};'use strict';var fs=require('fs');var util=require(_0xf930('0x0'));var path=require(_0xf930('0x1'));var _=require(_0xf930('0x2'));var moment=require(_0xf930('0x3'));var CronJobManager=require(_0xf930('0x4'));var jayson=require(_0xf930('0x5'));var BPromise=require(_0xf930('0x6'));var logger=require('../logger')(_0xf930('0x7'));var db=require(_0xf930('0x8'))['db'];var analyticCustomReportController=require(_0xf930('0x9'));var analyticDefaultReportController=require(_0xf930('0xa'));var client=jayson[_0xf930('0xb')][_0xf930('0xc')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x56678e,_0x5d8357){return function(){logger['info'](_0xf930('0xd'),_0x56678e[_0xf930('0xe')]);var _0x2b845f=!![];var _0x3f57c9=_0x56678e[_0xf930('0xf')][_0xf930('0x10')]();var _0x37b935={'account':_0x3f57c9,'message':{'from':util[_0xf930('0x11')]('\x22%s\x22\x20<%s>',_0x56678e[_0xf930('0xf')][_0xf930('0x12')],_0x56678e['MailAccount'][_0xf930('0xe')]||_0x56678e[_0xf930('0xf')]['Smtp']['user']),'to':_0x56678e['email'],'cc':_0x56678e['cc'],'bcc':_0x56678e[_0xf930('0x13')],'subject':util['format']('Report\x20%s\x20last\x20%s\x20%s',_0x5d8357[_0xf930('0x12')],_0x56678e['subtractNumber'],_0x56678e[_0xf930('0x14')])}};var _0x302b65=path['join'](__dirname,_0xf930('0x15'));var _0x2381e=_0x5d8357[_0xf930('0x16')];var _0x595395=util['format'](_0xf930('0x17'),path[_0xf930('0x18')](_0x5d8357[_0xf930('0x16')],path[_0xf930('0x19')](_0x5d8357[_0xf930('0x16')])),_0xf930('0x1a'));var _0x124e31=path[_0xf930('0x1b')](_0x302b65,_0x2381e);var _0x1781e4=path[_0xf930('0x1b')](_0x302b65,_0x595395);if(fs[_0xf930('0x1c')](_0x124e31)){_0x5d8357[_0xf930('0x1d')]='Sent';_0x37b935[_0xf930('0x1e')][_0xf930('0x1f')]=[{'filename':_0x2381e,'path':_0x124e31}];_0x37b935[_0xf930('0x1e')]['text']=util['format']('Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a',JSON[_0xf930('0x20')](_0x5d8357,null,0x2));}else if(fs[_0xf930('0x1c')](_0x1781e4)){_0x5d8357[_0xf930('0x1d')]='Sent';_0x37b935[_0xf930('0x1e')]['attachments']=[{'filename':_0x595395,'path':_0x1781e4}];}else{_0x37b935[_0xf930('0x1e')][_0xf930('0x21')]=_0xf930('0x22');if(!_0x56678e[_0xf930('0x23')]){_0x2b845f=![];logger[_0xf930('0x24')](_0xf930('0x25'));}}if(_0x2b845f){return client['request'](_0xf930('0x26'),_0x37b935)[_0xf930('0x27')](function(_0x54e4e5){if(_0x54e4e5[_0xf930('0x28')]){return logger[_0xf930('0x28')](_0xf930('0x29'),JSON['stringify'](_0x54e4e5));}return logger[_0xf930('0x24')](_0xf930('0x2a'));})[_0xf930('0x2b')](function(_0x3561c7){return logger[_0xf930('0x28')](_0xf930('0x29'),JSON['stringify'](_0x3561c7));});}};}function handleError(){return function(_0x3ffce3){return logger[_0xf930('0x28')](JSON[_0xf930('0x20')](_0x3ffce3));};}function handleResult(_0x2ea02b){return function(_0x26784f){logger[_0xf930('0x24')](_0xf930('0x2c'),JSON[_0xf930('0x20')](_0x26784f));if(_0x2ea02b[_0xf930('0xf')]&&_0x2ea02b[_0xf930('0xf')][_0xf930('0x2d')]&&!_['isNil'](_0x2ea02b[_0xf930('0xe')])){setTimeout(handleSendEmail(_0x2ea02b,_0x26784f),0x3c*0x3e8);}};}function handleJob(_0x197c1c){return function(){try{if(_[_0xf930('0x2e')](_0x197c1c[_0xf930('0x2f')])){return logger[_0xf930('0x24')](_0xf930('0x30'));}if(_[_0xf930('0x2e')](_0x197c1c[_0xf930('0x14')])){return logger[_0xf930('0x24')](_0xf930('0x31'));}var _0x4e810c={'startDate':moment()[_0xf930('0x32')](_0x197c1c[_0xf930('0x2f')],_0x197c1c[_0xf930('0x14')])[_0xf930('0x11')](_0xf930('0x33')),'endDate':moment()[_0xf930('0x11')](_0xf930('0x33')),'type':_0xf930('0x34'),'output':_0x197c1c[_0xf930('0x35')],'name':_0x197c1c['name']};if(!_[_0xf930('0x2e')](_0x197c1c['DefaultReportId'])){logger[_0xf930('0x24')](_0xf930('0x36'),_0x197c1c[_0xf930('0x37')]);return analyticDefaultReportController['runReport']({'id':_0x197c1c[_0xf930('0x37')]},_0x4e810c)['then'](handleResult(_0x197c1c))[_0xf930('0x2b')](handleError());}if(!_[_0xf930('0x2e')](_0x197c1c[_0xf930('0x38')])){logger[_0xf930('0x24')]('exec\x20custom\x20report\x20id:%s',_0x197c1c[_0xf930('0x38')]);return analyticCustomReportController[_0xf930('0x39')]({'id':_0x197c1c[_0xf930('0x38')]},_0x4e810c)[_0xf930('0x27')](handleResult(_0x197c1c))[_0xf930('0x2b')](handleError());}}catch(_0x24c042){logger[_0xf930('0x28')](JSON['stringify'](_0x24c042));}return logger[_0xf930('0x24')](_0xf930('0x3a'));};}function getJobs(_0x106ca8){var _0x6daf65={};if(_0x106ca8){_0x6daf65['id']=_0x106ca8;}return db['Schedule'][_0xf930('0x3b')]({'where':_0x6daf65,'include':[{'model':db[_0xf930('0xf')],'attributes':['id',_0xf930('0x12'),_0xf930('0xe')],'include':[{'model':db[_0xf930('0x3c')],'as':'Smtp','include':[{'model':db[_0xf930('0x3d')],'as':_0xf930('0x3d')}]}]}]})[_0xf930('0x27')](function(_0x1f696e){var _0x2bc9b8=_[_0xf930('0x3e')](manager[_0xf930('0x3f')]);var _0x44aed6=_[_0xf930('0x40')](_0x1f696e,function(_0x2a0d01){return _0x2a0d01['id'][_0xf930('0x41')]();});var _0x429a72=_['keyBy'](_0x1f696e,function(_0x4354f6){return _0x4354f6['id'][_0xf930('0x41')]();});var _0x12a12c=_0x106ca8?_0x44aed6:_[_0xf930('0x42')](_0x44aed6,_0x2bc9b8);var _0x6d521f=_['intersection'](_0x44aed6,_0x2bc9b8);var _0x1baf05=_[_0xf930('0x42')](_0x2bc9b8,_0x44aed6);var _0x35d478;var _0x4b7451;for(_0x35d478=0x0;_0x35d478<_0x1baf05[_0xf930('0x43')]&&!_0x106ca8;_0x35d478+=0x1){_0x4b7451=_0x1baf05[_0x35d478][_0xf930('0x41')]();if(manager[_0xf930('0x44')](_0x4b7451)){manager[_0xf930('0x45')](_0x4b7451);manager[_0xf930('0x46')](_0x4b7451);logger['info'](_0xf930('0x47'),_0x4b7451);}}logger[_0xf930('0x24')](_0xf930('0x48'),JSON[_0xf930('0x20')](_0x12a12c));for(_0x35d478=0x0;_0x35d478<_0x12a12c[_0xf930('0x43')];_0x35d478+=0x1){_0x4b7451=_0x12a12c[_0x35d478][_0xf930('0x41')]();logger['info']('index',_0x4b7451);if(_0x106ca8){logger[_0xf930('0x24')]('my\x20id',_0x106ca8);logger[_0xf930('0x24')](JSON[_0xf930('0x20')](_0x429a72[_0x4b7451]));BPromise[_0xf930('0x49')]()[_0xf930('0x27')](handleJob(_0x429a72[_0x4b7451]));logger[_0xf930('0x24')](_0xf930('0x4a'),_0x429a72[_0x4b7451][_0xf930('0x12')],_0x429a72[_0x4b7451]['cron']);}else if(_0x429a72[_0x4b7451][_0xf930('0x4b')]&&_0x429a72[_0x4b7451][_0xf930('0x4c')]&&moment()['isBetween'](_0x429a72[_0x4b7451]['startAt'],_0x429a72[_0x4b7451][_0xf930('0x4d')])){manager['add'](_0x4b7451,_0x429a72[_0x4b7451][_0xf930('0x4b')],handleJob(_0x429a72[_0x4b7451]));manager[_0xf930('0x4e')](_0x4b7451);logger[_0xf930('0x24')](_0xf930('0x4f'),_0x429a72[_0x4b7451][_0xf930('0x12')],_0x429a72[_0x4b7451]['cron']);}else if(manager[_0xf930('0x44')](_0x4b7451)){manager['stop'](_0x4b7451);manager[_0xf930('0x46')](_0x4b7451);logger['info'](_0xf930('0x50'),_0x429a72[_0x4b7451]['name'],_0x429a72[_0x4b7451]['cron']);}}for(_0x35d478=0x0,_0x4b7451;_0x35d478<_0x6d521f[_0xf930('0x43')]&&!_0x106ca8;_0x35d478+=0x1){_0x4b7451=_0x6d521f[_0x35d478][_0xf930('0x41')]();if(manager['exists'](_0x4b7451)){if(_0x429a72[_0x4b7451][_0xf930('0x4b')]&&_0x429a72[_0x4b7451][_0xf930('0x4c')]&&moment()[_0xf930('0x51')](_0x429a72[_0x4b7451]['startAt'],_0x429a72[_0x4b7451]['endAt'])){manager[_0xf930('0x52')](_0x4b7451,_0x429a72[_0x4b7451][_0xf930('0x4b')],handleJob(_0x429a72[_0x4b7451]));logger['info'](_0xf930('0x53'),_0x429a72[_0x4b7451][_0xf930('0x12')],_0x429a72[_0x4b7451][_0xf930('0x4b')]);}else{manager[_0xf930('0x45')](_0x4b7451);manager[_0xf930('0x46')](_0x4b7451);logger['info'](_0xf930('0x50'),_0x429a72[_0x4b7451][_0xf930('0x12')],_0x429a72[_0x4b7451][_0xf930('0x4b')]);}}}})[_0xf930('0x2b')](function(_0x327b3a){logger[_0xf930('0x28')](JSON[_0xf930('0x20')](_0x327b3a));});}exports[_0xf930('0x54')]=function(_0x2eeb7d){return getJobs(_0x2eeb7d);};exports[_0xf930('0x4e')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index 3cf6f88..c0302df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae2b=['[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','language','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Negative','Mixed','Neutral','FailureReason','resolve','tempSentiment','bucket','COMPLETED','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','findAll','No\x20transcribe\x20job\x20to\x20check','Setting','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','all','start','lodash','aws-sdk','util','bluebird','../../mysqldb','../../config/logger','transcribe','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','transcribeRegion','then','TranscriptionJob','fileText','TranscriptionJobStatus','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','transcripts','results','length','transcript','update'];(function(_0x3f3b7d,_0x1c16b9){var _0x22cd3b=function(_0x5a0e24){while(--_0x5a0e24){_0x3f3b7d['push'](_0x3f3b7d['shift']());}};_0x22cd3b(++_0x1c16b9);}(_0xae2b,0xb3));var _0xbae2=function(_0x1b23de,_0x5db20a){_0x1b23de=_0x1b23de-0x0;var _0x31633c=_0xae2b[_0x1b23de];return _0x31633c;};var _=require(_0xbae2('0x0'));var AWS=require(_0xbae2('0x1'));var rp=require('request-promise');var util=require(_0xbae2('0x2'));var BPromise=require(_0xbae2('0x3'));var db=require(_0xbae2('0x4'))['db'];var logger=require(_0xbae2('0x5'))(_0xbae2('0x6'));function getTranscriptionJob(_0x11edb2,_0x564f86,_0x18db49,_0x59b6a7){return new Promise(function(_0x365175,_0xbfd83a){var _0x18bc03=new AWS['TranscribeService']({'accessKeyId':_0x564f86,'secretAccessKey':_0x11edb2,'region':_0x18db49});_0x18bc03['getTranscriptionJob']({'TranscriptionJobName':_0x59b6a7},function(_0x57f2ca,_0x54d696){if(_0x57f2ca){return _0xbfd83a(_0x57f2ca);}else{return _0x365175(_0x54d696);}});});}function sentiment(_0x323eda,_0x417d6b,_0x15c84a,_0xf470fd,_0x27ea94){return new Promise(function(_0x193185,_0x843207){var _0x5a6d1f=new AWS['Comprehend']({'accessKeyId':_0x417d6b,'secretAccessKey':_0x323eda,'region':_0x15c84a});_0x5a6d1f['detectSentiment']({'Text':_0xf470fd,'LanguageCode':_0x27ea94[_0xbae2('0x7')](0x0,0x2)},function(_0x5d6940,_0x3212c3){if(_0x5d6940){return _0x843207(_0x5d6940);}else{return _0x193185(_0x3212c3);}});});}function checkTranscribeJob(_0x1f899a,_0x1b28ce,_0x4c39ef){var _0x381f69;return new BPromise(function(_0x7de704,_0x5b5222){logger[_0xbae2('0x8')](util[_0xbae2('0x9')](_0xbae2('0xa'),_0x1f899a['id'],_0x1f899a[_0xbae2('0xb')]));return getTranscriptionJob(_0x4c39ef[_0xbae2('0xc')],_0x4c39ef[_0xbae2('0xd')],_0x1b28ce[_0xbae2('0xe')],_0x1f899a['transcribeName'])[_0xbae2('0xf')](function(_0x523e23){logger[_0xbae2('0x8')](util[_0xbae2('0x9')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x1f899a['id'],_0x1f899a[_0xbae2('0xb')],_0x523e23[_0xbae2('0x10')]['TranscriptionJobStatus']));if(!_0x1f899a[_0xbae2('0x11')]){switch(_0x523e23[_0xbae2('0x10')][_0xbae2('0x12')]){case'COMPLETED':var _0x21c9fa={'transcribeStatus':_0x523e23['TranscriptionJob']['TranscriptionJobStatus'],'fileUri':_0x523e23[_0xbae2('0x10')][_0xbae2('0x13')][_0xbae2('0x14')]};logger[_0xbae2('0x8')](util['format'](_0xbae2('0x15'),_0x1f899a['id']));return rp({'uri':_0x523e23[_0xbae2('0x10')]['Transcript']['TranscriptFileUri'],'json':!![]})[_0xbae2('0xf')](function(_0x3f1e04){logger[_0xbae2('0x8')](util[_0xbae2('0x9')](_0xbae2('0x16'),_0x1f899a['id']));if(_0x3f1e04&&_0x3f1e04['results']&&_0x3f1e04['results'][_0xbae2('0x17')]&&_0x3f1e04[_0xbae2('0x18')]['transcripts'][_0xbae2('0x19')]){_0x21c9fa[_0xbae2('0x11')]='';for(var _0x4154fd=0x0;_0x4154fd<_0x3f1e04[_0xbae2('0x18')]['transcripts'][_0xbae2('0x19')];_0x4154fd++){_0x21c9fa['fileText']+=_0x3f1e04[_0xbae2('0x18')][_0xbae2('0x17')][_0x4154fd][_0xbae2('0x1a')]+'';}}return _0x1f899a[_0xbae2('0x1b')](_0x21c9fa);})[_0xbae2('0xf')](function(){logger['info'](util[_0xbae2('0x9')](_0xbae2('0x1c'),_0x1f899a['id']));if(!_0x1f899a['tempSentiment']){throw new db[(_0xbae2('0x1d'))][(_0xbae2('0x1e'))](_0xbae2('0x1f'));}if(!_0x1b28ce[_0xbae2('0x20')]||!_0x1b28ce[_0xbae2('0x21')]||!_0x1b28ce['sentimentRegion']||!_0x1b28ce[_0xbae2('0x22')]||!_0x1b28ce['bucket']){throw new db[(_0xbae2('0x1d'))][(_0xbae2('0x1e'))](_0xbae2('0x23'));}if(!_0x21c9fa[_0xbae2('0x11')]){throw new Error(_0xbae2('0x24'));}if(_0x1b28ce[_0xbae2('0x21')]===_0x4c39ef['id']){return _0x4c39ef;}else{return db[_0xbae2('0x25')][_0xbae2('0x26')]({'where':{'id':_settings[_0xbae2('0x21')]}});}})[_0xbae2('0xf')](function(_0x4021c9){if(!_0x4021c9){throw new db[(_0xbae2('0x1d'))][(_0xbae2('0x1e'))](_0xbae2('0x27'));}if(!_0x4021c9[_0xbae2('0xc')]||!_0x4021c9[_0xbae2('0xd')]){throw new db['Sequelize'][(_0xbae2('0x1e'))](_0xbae2('0x28'));}_0x381f69=_0x4021c9;logger['info'](util['format'](_0xbae2('0x29'),_0x1f899a['id']));return sentiment(_0x381f69[_0xbae2('0xc')],_0x381f69[_0xbae2('0xd')],_0x1b28ce[_0xbae2('0x2a')],_0x21c9fa['fileText'],_0x1b28ce[_0xbae2('0x22')]);})[_0xbae2('0xf')](function(_0x35c929){logger[_0xbae2('0x8')](util[_0xbae2('0x9')](_0xbae2('0x2b'),_0x1f899a['id']));return _0x1f899a[_0xbae2('0x1b')]({'sentiment':_0x35c929[_0xbae2('0x2c')],'sPositive':_0x35c929[_0xbae2('0x2d')]['Positive'],'sNegative':_0x35c929[_0xbae2('0x2d')][_0xbae2('0x2e')],'sMixed':_0x35c929[_0xbae2('0x2d')][_0xbae2('0x2f')],'sNeutral':_0x35c929['SentimentScore'][_0xbae2('0x30')]});})[_0xbae2('0xf')](function(){logger[_0xbae2('0x8')](util[_0xbae2('0x9')](_0xbae2('0x1c'),_0x1f899a['id']));_0x7de704();});case'FAILED':return _0x1f899a[_0xbae2('0x1b')]({'transcribeStatus':'FAILED','failureReason':_0x523e23[_0xbae2('0x10')][_0xbae2('0x31')]})[_0xbae2('0xf')](function(){logger[_0xbae2('0x8')](util['format'](_0xbae2('0x1c'),_0x1f899a['id']));_0x7de704();});default:logger['info'](util['format']('[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed',_0x1f899a['id']));break;}}else{return BPromise[_0xbae2('0x32')]()[_0xbae2('0xf')](function(){if(!_0x1f899a[_0xbae2('0x33')]){throw new db[(_0xbae2('0x1d'))][(_0xbae2('0x1e'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x1b28ce['sentiment']||!_0x1b28ce[_0xbae2('0x21')]||!_0x1b28ce['sentimentRegion']||!_0x1b28ce[_0xbae2('0x22')]||!_0x1b28ce[_0xbae2('0x34')]){throw new db[(_0xbae2('0x1d'))][(_0xbae2('0x1e'))](_0xbae2('0x23'));}if(!_0x1f899a[_0xbae2('0x11')]){throw new Error(_0xbae2('0x24'));}if(_0x1b28ce[_0xbae2('0x21')]===_0x4c39ef['id']){return _0x4c39ef;}else{return db[_0xbae2('0x25')][_0xbae2('0x26')]({'where':{'id':_settings[_0xbae2('0x21')]}});}})[_0xbae2('0xf')](function(_0x566db5){if(!_0x566db5){throw new db['Sequelize']['ValidationError'](_0xbae2('0x27'));}if(!_0x566db5[_0xbae2('0xc')]||!_0x566db5['data2']){throw new db[(_0xbae2('0x1d'))][(_0xbae2('0x1e'))](_0xbae2('0x28'));}_0x381f69=_0x566db5;logger[_0xbae2('0x8')](util[_0xbae2('0x9')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x1f899a['id']));return sentiment(_0x381f69['data1'],_0x381f69[_0xbae2('0xd')],_0x1b28ce['sentimentRegion'],_0x1f899a[_0xbae2('0x11')],_0x1b28ce[_0xbae2('0x22')]);})[_0xbae2('0xf')](function(_0x22d925){logger[_0xbae2('0x8')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x1f899a['id']));return _0x1f899a['update']({'sentiment':_0x22d925[_0xbae2('0x2c')],'sPositive':_0x22d925['SentimentScore']['Positive'],'sNegative':_0x22d925[_0xbae2('0x2d')][_0xbae2('0x2e')],'sMixed':_0x22d925['SentimentScore']['Mixed'],'sNeutral':_0x22d925['SentimentScore']['Neutral'],'transcribeStatus':_0xbae2('0x35')});})[_0xbae2('0xf')](function(){logger['info'](util[_0xbae2('0x9')](_0xbae2('0x1c'),_0x1f899a['id']));_0x7de704();});}})[_0xbae2('0x36')](function(_0x133285){if(_0x133285){if(!_0x133285[_0xbae2('0x37')]||_0x133285[_0xbae2('0x37')]!==_0xbae2('0x38')){logger[_0xbae2('0x39')](util[_0xbae2('0x9')](_0xbae2('0x3a'),_0x1f899a['id']),util[_0xbae2('0x3b')](_0x133285,{'showHidden':![],'depth':null}));}}_0x7de704();});});}function checkTranscribe(){var _0x2514d4;var _0x4a2973;var _0x105d8b;return db['VoiceRecording'][_0xbae2('0x3c')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0xbae2('0xf')](function(_0x20fffa){if(!_0x20fffa||!_0x20fffa['length']){throw new db['Sequelize'][(_0xbae2('0x1e'))](_0xbae2('0x3d'));}_0x2514d4=_0x20fffa;return db[_0xbae2('0x3e')][_0xbae2('0x26')]({'where':{'id':0x1}});})[_0xbae2('0xf')](function(_0x426866){if(!_0x426866){throw new db[(_0xbae2('0x1d'))][(_0xbae2('0x1e'))]('Settings\x20not\x20available');}_0x4a2973=_0x426866;if(!_0x4a2973[_0xbae2('0x6')]||!_0x4a2973[_0xbae2('0x3f')]||!_0x4a2973['transcribeRegion']||!_0x4a2973[_0xbae2('0x22')]||!_0x4a2973[_0xbae2('0x34')]){throw new db[(_0xbae2('0x1d'))][(_0xbae2('0x1e'))](_0xbae2('0x40'));}return db[_0xbae2('0x25')][_0xbae2('0x26')]({'where':{'id':_0x4a2973['transcribeAccountId']}});})[_0xbae2('0xf')](function(_0x4303cc){if(!_0x4303cc){throw new db[(_0xbae2('0x1d'))]['ValidationError'](_0xbae2('0x27'));}if(!_0x4303cc['data1']||!_0x4303cc[_0xbae2('0xd')]){throw new db[(_0xbae2('0x1d'))][(_0xbae2('0x1e'))](_0xbae2('0x28'));}_0x105d8b=_0x4303cc;var _0x185e7e=[];_0x2514d4[_0xbae2('0x41')](function(_0x51fff){_0x185e7e[_0xbae2('0x42')](checkTranscribeJob(_0x51fff,_0x4a2973,_0x105d8b));});return BPromise[_0xbae2('0x43')](_0x185e7e);})[_0xbae2('0x36')](function(_0x5a8471){if(_0x5a8471){if(!_0x5a8471[_0xbae2('0x37')]||_0x5a8471[_0xbae2('0x37')]!==_0xbae2('0x38')){logger[_0xbae2('0x39')](util[_0xbae2('0x3b')](_0x5a8471,{'showHidden':![],'depth':null}));}}});}exports[_0xbae2('0x44')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0xd4f4=['getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','data2','transcribeRegion','then','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','sentimentRegion','bucket','ValidationError','Sentiment\x20Analysis\x20not\x20configured','fileText','Transcript\x20not\x20available','CloudProvider','findOne','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','language','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','sentiment','Cloud\x20Provider\x20not\x20available','Neutral','COMPLETED','catch','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','Settings\x20not\x20available','Transcribe\x20not\x20configured','transcribeAccountId','all','error','start','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService'];(function(_0x4e71a2,_0x299d64){var _0x45e27b=function(_0x401a5f){while(--_0x401a5f){_0x4e71a2['push'](_0x4e71a2['shift']());}};_0x45e27b(++_0x299d64);}(_0xd4f4,0x8b));var _0x4d4f=function(_0x1af35f,_0x4ebded){_0x1af35f=_0x1af35f-0x0;var _0x360976=_0xd4f4[_0x1af35f];return _0x360976;};var _=require(_0x4d4f('0x0'));var AWS=require(_0x4d4f('0x1'));var rp=require(_0x4d4f('0x2'));var util=require(_0x4d4f('0x3'));var BPromise=require(_0x4d4f('0x4'));var db=require(_0x4d4f('0x5'))['db'];var logger=require(_0x4d4f('0x6'))(_0x4d4f('0x7'));function getTranscriptionJob(_0x25087a,_0xa53cb8,_0x15585,_0x5a98c7){return new Promise(function(_0x5f451b,_0x5e38d2){var _0x1d7aa8=new AWS[(_0x4d4f('0x8'))]({'accessKeyId':_0xa53cb8,'secretAccessKey':_0x25087a,'region':_0x15585});_0x1d7aa8[_0x4d4f('0x9')]({'TranscriptionJobName':_0x5a98c7},function(_0xea29b,_0x40be66){if(_0xea29b){return _0x5e38d2(_0xea29b);}else{return _0x5f451b(_0x40be66);}});});}function sentiment(_0x3c70b9,_0x1bd887,_0x226837,_0x385597,_0xba5200){return new Promise(function(_0x20db50,_0x88b592){var _0x128d39=new AWS[(_0x4d4f('0xa'))]({'accessKeyId':_0x1bd887,'secretAccessKey':_0x3c70b9,'region':_0x226837});_0x128d39[_0x4d4f('0xb')]({'Text':_0x385597,'LanguageCode':_0xba5200[_0x4d4f('0xc')](0x0,0x2)},function(_0x5017f0,_0xb123dc){if(_0x5017f0){return _0x88b592(_0x5017f0);}else{return _0x20db50(_0xb123dc);}});});}function checkTranscribeJob(_0x5f3182,_0x551a10,_0x5b4f4e){var _0x15fe6a;return new BPromise(function(_0xe9b7a6,_0x4b7472){logger[_0x4d4f('0xd')](util[_0x4d4f('0xe')](_0x4d4f('0xf'),_0x5f3182['id'],_0x5f3182['transcribeName']));return getTranscriptionJob(_0x5b4f4e[_0x4d4f('0x10')],_0x5b4f4e[_0x4d4f('0x11')],_0x551a10[_0x4d4f('0x12')],_0x5f3182['transcribeName'])[_0x4d4f('0x13')](function(_0x5e4ff5){logger[_0x4d4f('0xd')](util[_0x4d4f('0xe')](_0x4d4f('0x14'),_0x5f3182['id'],_0x5f3182['transcribeName'],_0x5e4ff5[_0x4d4f('0x15')][_0x4d4f('0x16')]));if(!_0x5f3182['fileText']){switch(_0x5e4ff5['TranscriptionJob']['TranscriptionJobStatus']){case'COMPLETED':var _0x5eebec={'transcribeStatus':_0x5e4ff5[_0x4d4f('0x15')][_0x4d4f('0x16')],'fileUri':_0x5e4ff5[_0x4d4f('0x15')][_0x4d4f('0x17')]['TranscriptFileUri']};logger['info'](util[_0x4d4f('0xe')]('[RECORDING:%d]\x20Get\x20transcript',_0x5f3182['id']));return rp({'uri':_0x5e4ff5[_0x4d4f('0x15')][_0x4d4f('0x17')][_0x4d4f('0x18')],'json':!![]})[_0x4d4f('0x13')](function(_0x3dd36a){logger['info'](util['format'](_0x4d4f('0x19'),_0x5f3182['id']));if(_0x3dd36a&&_0x3dd36a['results']&&_0x3dd36a[_0x4d4f('0x1a')][_0x4d4f('0x1b')]&&_0x3dd36a[_0x4d4f('0x1a')][_0x4d4f('0x1b')][_0x4d4f('0x1c')]){_0x5eebec['fileText']='';for(var _0x44bd2f=0x0;_0x44bd2f<_0x3dd36a[_0x4d4f('0x1a')][_0x4d4f('0x1b')][_0x4d4f('0x1c')];_0x44bd2f++){_0x5eebec['fileText']+=_0x3dd36a['results'][_0x4d4f('0x1b')][_0x44bd2f][_0x4d4f('0x1d')]+'';}}return _0x5f3182[_0x4d4f('0x1e')](_0x5eebec);})[_0x4d4f('0x13')](function(){logger['info'](util[_0x4d4f('0xe')](_0x4d4f('0x1f'),_0x5f3182['id']));if(!_0x5f3182[_0x4d4f('0x20')]){throw new db[(_0x4d4f('0x21'))]['ValidationError'](_0x4d4f('0x22'));}if(!_0x551a10['sentiment']||!_0x551a10[_0x4d4f('0x23')]||!_0x551a10[_0x4d4f('0x24')]||!_0x551a10['language']||!_0x551a10[_0x4d4f('0x25')]){throw new db[(_0x4d4f('0x21'))][(_0x4d4f('0x26'))](_0x4d4f('0x27'));}if(!_0x5eebec[_0x4d4f('0x28')]){throw new Error(_0x4d4f('0x29'));}if(_0x551a10['sentimentAccountId']===_0x5b4f4e['id']){return _0x5b4f4e;}else{return db[_0x4d4f('0x2a')][_0x4d4f('0x2b')]({'where':{'id':_settings[_0x4d4f('0x23')]}});}})[_0x4d4f('0x13')](function(_0x104104){if(!_0x104104){throw new db['Sequelize'][(_0x4d4f('0x26'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x104104[_0x4d4f('0x10')]||!_0x104104['data2']){throw new db['Sequelize']['ValidationError'](_0x4d4f('0x2c'));}_0x15fe6a=_0x104104;logger['info'](util[_0x4d4f('0xe')](_0x4d4f('0x2d'),_0x5f3182['id']));return sentiment(_0x15fe6a[_0x4d4f('0x10')],_0x15fe6a['data2'],_0x551a10[_0x4d4f('0x24')],_0x5eebec[_0x4d4f('0x28')],_0x551a10[_0x4d4f('0x2e')]);})['then'](function(_0x6a30c4){logger['info'](util[_0x4d4f('0xe')](_0x4d4f('0x2f'),_0x5f3182['id']));return _0x5f3182[_0x4d4f('0x1e')]({'sentiment':_0x6a30c4[_0x4d4f('0x30')],'sPositive':_0x6a30c4[_0x4d4f('0x31')][_0x4d4f('0x32')],'sNegative':_0x6a30c4[_0x4d4f('0x31')][_0x4d4f('0x33')],'sMixed':_0x6a30c4['SentimentScore']['Mixed'],'sNeutral':_0x6a30c4[_0x4d4f('0x31')]['Neutral']});})['then'](function(){logger[_0x4d4f('0xd')](util[_0x4d4f('0xe')](_0x4d4f('0x1f'),_0x5f3182['id']));_0xe9b7a6();});case _0x4d4f('0x34'):return _0x5f3182[_0x4d4f('0x1e')]({'transcribeStatus':'FAILED','failureReason':_0x5e4ff5[_0x4d4f('0x15')][_0x4d4f('0x35')]})['then'](function(){logger[_0x4d4f('0xd')](util[_0x4d4f('0xe')](_0x4d4f('0x1f'),_0x5f3182['id']));_0xe9b7a6();});default:logger[_0x4d4f('0xd')](util[_0x4d4f('0xe')](_0x4d4f('0x36'),_0x5f3182['id']));break;}}else{return BPromise[_0x4d4f('0x37')]()[_0x4d4f('0x13')](function(){if(!_0x5f3182[_0x4d4f('0x20')]){throw new db['Sequelize']['ValidationError'](_0x4d4f('0x22'));}if(!_0x551a10[_0x4d4f('0x38')]||!_0x551a10[_0x4d4f('0x23')]||!_0x551a10[_0x4d4f('0x24')]||!_0x551a10['language']||!_0x551a10['bucket']){throw new db[(_0x4d4f('0x21'))][(_0x4d4f('0x26'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x5f3182['fileText']){throw new Error(_0x4d4f('0x29'));}if(_0x551a10[_0x4d4f('0x23')]===_0x5b4f4e['id']){return _0x5b4f4e;}else{return db['CloudProvider'][_0x4d4f('0x2b')]({'where':{'id':_settings[_0x4d4f('0x23')]}});}})[_0x4d4f('0x13')](function(_0x32c6ff){if(!_0x32c6ff){throw new db[(_0x4d4f('0x21'))]['ValidationError'](_0x4d4f('0x39'));}if(!_0x32c6ff['data1']||!_0x32c6ff[_0x4d4f('0x11')]){throw new db[(_0x4d4f('0x21'))]['ValidationError'](_0x4d4f('0x2c'));}_0x15fe6a=_0x32c6ff;logger[_0x4d4f('0xd')](util[_0x4d4f('0xe')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x5f3182['id']));return sentiment(_0x15fe6a[_0x4d4f('0x10')],_0x15fe6a['data2'],_0x551a10[_0x4d4f('0x24')],_0x5f3182['fileText'],_0x551a10[_0x4d4f('0x2e')]);})[_0x4d4f('0x13')](function(_0x231134){logger[_0x4d4f('0xd')](util[_0x4d4f('0xe')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x5f3182['id']));return _0x5f3182['update']({'sentiment':_0x231134[_0x4d4f('0x30')],'sPositive':_0x231134[_0x4d4f('0x31')][_0x4d4f('0x32')],'sNegative':_0x231134[_0x4d4f('0x31')]['Negative'],'sMixed':_0x231134['SentimentScore']['Mixed'],'sNeutral':_0x231134[_0x4d4f('0x31')][_0x4d4f('0x3a')],'transcribeStatus':_0x4d4f('0x3b')});})[_0x4d4f('0x13')](function(){logger[_0x4d4f('0xd')](util[_0x4d4f('0xe')](_0x4d4f('0x1f'),_0x5f3182['id']));_0xe9b7a6();});}})[_0x4d4f('0x3c')](function(_0xac4d94){if(_0xac4d94){if(!_0xac4d94[_0x4d4f('0x3d')]||_0xac4d94[_0x4d4f('0x3d')]!==_0x4d4f('0x3e')){logger['error'](util[_0x4d4f('0xe')](_0x4d4f('0x3f'),_0x5f3182['id']),util['inspect'](_0xac4d94,{'showHidden':![],'depth':null}));}}_0xe9b7a6();});});}function checkTranscribe(){var _0xb0d5e8;var _0x4983d2;var _0x15cf38;return db[_0x4d4f('0x40')]['findAll']({'where':{'transcribeStatus':_0x4d4f('0x41')}})[_0x4d4f('0x13')](function(_0xc80b59){if(!_0xc80b59||!_0xc80b59[_0x4d4f('0x1c')]){throw new db[(_0x4d4f('0x21'))][(_0x4d4f('0x26'))](_0x4d4f('0x42'));}_0xb0d5e8=_0xc80b59;return db[_0x4d4f('0x43')][_0x4d4f('0x2b')]({'where':{'id':0x1}});})[_0x4d4f('0x13')](function(_0xa6cef){if(!_0xa6cef){throw new db[(_0x4d4f('0x21'))]['ValidationError'](_0x4d4f('0x44'));}_0x4983d2=_0xa6cef;if(!_0x4983d2['transcribe']||!_0x4983d2['transcribeAccountId']||!_0x4983d2['transcribeRegion']||!_0x4983d2[_0x4d4f('0x2e')]||!_0x4983d2[_0x4d4f('0x25')]){throw new db['Sequelize']['ValidationError'](_0x4d4f('0x45'));}return db[_0x4d4f('0x2a')]['findOne']({'where':{'id':_0x4983d2[_0x4d4f('0x46')]}});})['then'](function(_0x17b59e){if(!_0x17b59e){throw new db[(_0x4d4f('0x21'))][(_0x4d4f('0x26'))](_0x4d4f('0x39'));}if(!_0x17b59e['data1']||!_0x17b59e[_0x4d4f('0x11')]){throw new db[(_0x4d4f('0x21'))][(_0x4d4f('0x26'))](_0x4d4f('0x2c'));}_0x15cf38=_0x17b59e;var _0x2550c6=[];_0xb0d5e8['forEach'](function(_0x10f94e){_0x2550c6['push'](checkTranscribeJob(_0x10f94e,_0x4983d2,_0x15cf38));});return BPromise[_0x4d4f('0x47')](_0x2550c6);})['catch'](function(_0x17f4ac){if(_0x17f4ac){if(!_0x17f4ac[_0x4d4f('0x3d')]||_0x17f4ac['name']!==_0x4d4f('0x3e')){logger[_0x4d4f('0x48')](util['inspect'](_0x17f4ac,{'showHidden':![],'depth':null}));}}});}exports[_0x4d4f('0x49')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index 01fe497..ad9a922 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd96d=['lodash','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','redis','defaults','localhost','socket.io-emitter','WhatsappInteraction','subtract','hours','then','length','map','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','info','emit','[WHATSAPP]\x20Error\x20closing\x20interactions','start'];(function(_0x28e8d9,_0x3db8b5){var _0x307a06=function(_0x33b01a){while(--_0x33b01a){_0x28e8d9['push'](_0x28e8d9['shift']());}};_0x307a06(++_0x3db8b5);}(_0xd96d,0x1d4));var _0xdd96=function(_0x2160a9,_0x3cbd9e){_0x2160a9=_0x2160a9-0x0;var _0xa88cf7=_0xd96d[_0x2160a9];return _0xa88cf7;};'use strict';var _=require(_0xdd96('0x0'));var moment=require(_0xdd96('0x1'));var Redis=require(_0xdd96('0x2'));var util=require(_0xdd96('0x3'));var config=require(_0xdd96('0x4'));var db=require(_0xdd96('0x5'))['db'];var logger=require(_0xdd96('0x6'))(_0xdd96('0x7'));config[_0xdd96('0x8')]=_[_0xdd96('0x9')](config[_0xdd96('0x8')],{'host':_0xdd96('0xa'),'port':0x18eb});var io=require(_0xdd96('0xb'))(new Redis(config[_0xdd96('0x8')]));function closeInteractions(){var _0x2cf9d0=[];return db[_0xdd96('0xc')]['findAll']({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xdd96('0xd')](0x18,_0xdd96('0xe'))}}})[_0xdd96('0xf')](function(_0x49473a){if(_0x49473a&&_0x49473a[_0xdd96('0x10')]){_0x2cf9d0=_[_0xdd96('0x11')](_0x49473a||[],'id');logger['info'](_0xdd96('0x12'),_0x2cf9d0[_0xdd96('0x13')]());return db[_0xdd96('0xc')][_0xdd96('0x14')]({'closeReason':_0xdd96('0x15'),'disposition':'timeout','closed':!![],'closedAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x2cf9d0}});}})[_0xdd96('0xf')](function(){if(_0x2cf9d0&&_0x2cf9d0['length']){logger[_0xdd96('0x16')]('[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:',_0x2cf9d0[_0xdd96('0x13')]());for(var _0x18c3a7=0x0;_0x18c3a7<_0x2cf9d0['length'];_0x18c3a7++){io[_0xdd96('0x17')]('whatsappInteraction:update',{'id':_0x2cf9d0[_0x18c3a7],'closed':!![]});}}})['catch'](function(_0x6542e6){logger['error'](_0xdd96('0x18'),_0x6542e6?util['inspect'](_0x6542e6,{'showHidden':![],'depth':null}):'');});}exports[_0xdd96('0x19')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x1d9f=['../logger','defaults','redis','localhost','socket.io-emitter','findAll','lastMsgAt','subtract','hours','length','map','info','join','system','timeout','then','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','start','lodash','moment','ioredis','util','../../mysqldb'];(function(_0x5caee2,_0x325a65){var _0x3f8747=function(_0x2d86bc){while(--_0x2d86bc){_0x5caee2['push'](_0x5caee2['shift']());}};_0x3f8747(++_0x325a65);}(_0x1d9f,0x167));var _0xf1d9=function(_0x377199,_0x1439fa){_0x377199=_0x377199-0x0;var _0x501155=_0x1d9f[_0x377199];return _0x501155;};'use strict';var _=require(_0xf1d9('0x0'));var moment=require(_0xf1d9('0x1'));var Redis=require(_0xf1d9('0x2'));var util=require(_0xf1d9('0x3'));var config=require('../../config/environment');var db=require(_0xf1d9('0x4'))['db'];var logger=require(_0xf1d9('0x5'))('schedule');config['redis']=_[_0xf1d9('0x6')](config[_0xf1d9('0x7')],{'host':_0xf1d9('0x8'),'port':0x18eb});var io=require(_0xf1d9('0x9'))(new Redis(config[_0xf1d9('0x7')]));function closeInteractions(){var _0x42b49a=[];return db['WhatsappInteraction'][_0xf1d9('0xa')]({'raw':!![],'attributes':['id',_0xf1d9('0xb')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xf1d9('0xc')](0x18,_0xf1d9('0xd'))}}})['then'](function(_0x158212){if(_0x158212&&_0x158212[_0xf1d9('0xe')]){_0x42b49a=_[_0xf1d9('0xf')](_0x158212||[],'id');logger[_0xf1d9('0x10')]('[WHATSAPP]\x20Interactions\x20to\x20close:',_0x42b49a[_0xf1d9('0x11')]());return db['WhatsappInteraction']['update']({'closeReason':_0xf1d9('0x12'),'disposition':_0xf1d9('0x13'),'closed':!![],'closedAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x42b49a}});}})[_0xf1d9('0x14')](function(){if(_0x42b49a&&_0x42b49a[_0xf1d9('0xe')]){logger[_0xf1d9('0x10')](_0xf1d9('0x15'),_0x42b49a[_0xf1d9('0x11')]());for(var _0x390f0d=0x0;_0x390f0d<_0x42b49a[_0xf1d9('0xe')];_0x390f0d++){io[_0xf1d9('0x16')](_0xf1d9('0x17'),{'id':_0x42b49a[_0x390f0d],'closed':!![]});}}})[_0xf1d9('0x18')](function(_0x35d012){logger[_0xf1d9('0x19')](_0xf1d9('0x1a'),_0x35d012?util['inspect'](_0x35d012,{'showHidden':![],'depth':null}):'');});}exports[_0xf1d9('0x1b')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index fcc5f79..2e74dc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9fa=['CmContact','destroy','then','bulkCreate','log','finished\x20populating','contacts1','CmHopper','hopper1','contacts2','catch','push','Biondo','innocenzo.biondo','@xcally.com','now'];(function(_0x162739,_0x2f5faa){var _0x97a9b=function(_0xddf869){while(--_0xddf869){_0x162739['push'](_0x162739['shift']());}};_0x97a9b(++_0x2f5faa);}(_0xc9fa,0x18b));var _0xac9f=function(_0x53a11c,_0x393441){_0x53a11c=_0x53a11c-0x0;var _0x2680d5=_0xc9fa[_0x53a11c];return _0x2680d5;};'use strict';var util=require('util');var db=require('../mysqldb')['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xac9f('0x0')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0xac9f('0x1')+i,'phone':0xf879fb460+i,'email':_0xac9f('0x2')+i+_0xac9f('0x3')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xac9f('0x4')](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':'Innocenzo'+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0xac9f('0x3')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xac9f('0x0')]({'id':i,'active':![],'scheduledat':Date[_0xac9f('0x4')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xac9f('0x4')](),'updatedAt':Date[_0xac9f('0x4')]()});}db[_0xac9f('0x5')][_0xac9f('0x6')]({'where':{}})[_0xac9f('0x7')](function(){return db['CmContact'][_0xac9f('0x8')](contacts);})['then'](function(){console[_0xac9f('0x9')](_0xac9f('0xa'),_0xac9f('0xb'));return db[_0xac9f('0xc')][_0xac9f('0x6')]({'where':{}});})[_0xac9f('0x7')](function(){return db[_0xac9f('0xc')][_0xac9f('0x8')](hopper);})[_0xac9f('0x7')](function(){console[_0xac9f('0x9')]('finished\x20populating',_0xac9f('0xd'));return db[_0xac9f('0x5')][_0xac9f('0x8')](contacts2);})[_0xac9f('0x7')](function(){console[_0xac9f('0x9')](_0xac9f('0xa'),_0xac9f('0xe'));return db[_0xac9f('0xc')][_0xac9f('0x8')](hopper2);})[_0xac9f('0x7')](function(){console['log'](_0xac9f('0xa'),'hopper2');})[_0xac9f('0xf')](function(_0x414fb2){console[_0xac9f('0x9')](_0x414fb2);});
\ No newline at end of file
+var _0x2370=['CmHopper','hopper1','hopper2','catch','../mysqldb','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com','now','CmContact','destroy','then','bulkCreate','log','finished\x20populating','contacts1'];(function(_0x52ba97,_0x475785){var _0x42f98d=function(_0x4e1336){while(--_0x4e1336){_0x52ba97['push'](_0x52ba97['shift']());}};_0x42f98d(++_0x475785);}(_0x2370,0x190));var _0x0237=function(_0x504582,_0x5b3965){_0x504582=_0x504582-0x0;var _0x43c6ce=_0x2370[_0x504582];return _0x43c6ce;};'use strict';var util=require('util');var db=require(_0x0237('0x0'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x0237('0x1')]({'id':i,'firstName':_0x0237('0x2')+i,'lastName':_0x0237('0x3')+i,'phone':0xf879fb460+i,'email':_0x0237('0x4')+i+_0x0237('0x5')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x0237('0x1')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x0237('0x6')](),'updatedAt':Date[_0x0237('0x6')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':'Innocenzo'+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0x0237('0x5')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2['push']({'id':i,'active':![],'scheduledat':Date[_0x0237('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0x0237('0x6')]()});}db[_0x0237('0x7')][_0x0237('0x8')]({'where':{}})[_0x0237('0x9')](function(){return db[_0x0237('0x7')][_0x0237('0xa')](contacts);})[_0x0237('0x9')](function(){console[_0x0237('0xb')](_0x0237('0xc'),_0x0237('0xd'));return db[_0x0237('0xe')][_0x0237('0x8')]({'where':{}});})['then'](function(){return db[_0x0237('0xe')][_0x0237('0xa')](hopper);})[_0x0237('0x9')](function(){console[_0x0237('0xb')](_0x0237('0xc'),_0x0237('0xf'));return db[_0x0237('0x7')][_0x0237('0xa')](contacts2);})[_0x0237('0x9')](function(){console['log'](_0x0237('0xc'),'contacts2');return db['CmHopper'][_0x0237('0xa')](hopper2);})[_0x0237('0x9')](function(){console['log'](_0x0237('0xc'),_0x0237('0x10'));})[_0x0237('0x11')](function(_0x2ac5d6){console[_0x0237('0xb')](_0x2ac5d6);});
\ No newline at end of file
index aecc39b..1b141d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d78=['util','../mysqldb','format','%s%s','agent','friend','wss','all','ulaw','yes','/etc/pki/tls/private/motion.key','actpass','User','bulkCreate','then','log','catch'];(function(_0x16ae8e,_0xd935ea){var _0x5a7b3b=function(_0x5a4e0e){while(--_0x5a4e0e){_0x16ae8e['push'](_0x16ae8e['shift']());}};_0x5a7b3b(++_0xd935ea);}(_0x2d78,0x132));var _0x82d7=function(_0x58547b,_0x4b89c2){_0x58547b=_0x58547b-0x0;var _0x1d3fd2=_0x2d78[_0x58547b];return _0x1d3fd2;};'use strict';var util=require(_0x82d7('0x0'));var db=require(_0x82d7('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util[_0x82d7('0x2')](_0x82d7('0x3'),'agent',i),'fullname':util[_0x82d7('0x2')]('%s%s',_0x82d7('0x4'),i),'email':util['format']('%s%s@xcally.com',_0x82d7('0x4'),i),'role':_0x82d7('0x4'),'password':'password','internal':0xfa0+i,'type':_0x82d7('0x5'),'transport':['udp','ws',_0x82d7('0x6')],'disallow':[_0x82d7('0x7')],'allow':[_0x82d7('0x8')],'defaultuser':util[_0x82d7('0x2')](_0x82d7('0x3'),'agent',i),'encryption':_0x82d7('0x9'),'avpf':_0x82d7('0x9'),'force_avp':_0x82d7('0x9'),'icesupport':_0x82d7('0x9'),'dtlsenable':'yes','dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':_0x82d7('0xa'),'dtlssetup':_0x82d7('0xb'),'callerid':util[_0x82d7('0x2')]('\x22%s\x22\x20<%s>',util[_0x82d7('0x2')](_0x82d7('0x3'),_0x82d7('0x4'),i),0xfa0+i)});}db[_0x82d7('0xc')][_0x82d7('0xd')](users)[_0x82d7('0xe')](function(){console[_0x82d7('0xf')]('add\x20user');})[_0x82d7('0x10')](function(_0x256871){console[_0x82d7('0xf')](_0x256871);});
\ No newline at end of file
+var _0x2677=['password','friend','udp','ulaw','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','catch','log','util','push','format','%s%s','agent','%s%s@xcally.com'];(function(_0x2f8a2b,_0x1a7b69){var _0x3d3b4e=function(_0x4fa53e){while(--_0x4fa53e){_0x2f8a2b['push'](_0x2f8a2b['shift']());}};_0x3d3b4e(++_0x1a7b69);}(_0x2677,0xcc));var _0x7267=function(_0x2873c9,_0xd835b4){_0x2873c9=_0x2873c9-0x0;var _0x557b55=_0x2677[_0x2873c9];return _0x557b55;};'use strict';var util=require(_0x7267('0x0'));var db=require('../mysqldb')['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x7267('0x1')]({'name':util[_0x7267('0x2')](_0x7267('0x3'),'agent',i),'fullname':util[_0x7267('0x2')]('%s%s',_0x7267('0x4'),i),'email':util[_0x7267('0x2')](_0x7267('0x5'),_0x7267('0x4'),i),'role':_0x7267('0x4'),'password':_0x7267('0x6'),'internal':0xfa0+i,'type':_0x7267('0x7'),'transport':[_0x7267('0x8'),'ws','wss'],'disallow':['all'],'allow':[_0x7267('0x9')],'defaultuser':util['format'](_0x7267('0x3'),_0x7267('0x4'),i),'encryption':_0x7267('0xa'),'avpf':'yes','force_avp':'yes','icesupport':'yes','dtlsenable':_0x7267('0xa'),'dtlsverify':'no','dtlscertfile':_0x7267('0xb'),'dtlsprivatekey':_0x7267('0xc'),'dtlssetup':'actpass','callerid':util[_0x7267('0x2')]('\x22%s\x22\x20<%s>',util[_0x7267('0x2')](_0x7267('0x3'),'agent',i),0xfa0+i)});}db['User']['bulkCreate'](users)['then'](function(){console['log']('add\x20user');})[_0x7267('0xd')](function(_0x4cc541){console[_0x7267('0xe')](_0x4cc541);});
\ No newline at end of file
index 7e80397..2b4632b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8710=['connectedAt','SocketIO\x20','nsp','CONNECTED','lodash','util','../mysqldb','./environment','name','User','agent','telephone','type','UserProfileSection','findOne','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','UserProfileResource','resourceId','then','map','role','Campaign','where','ivr','format','%s:queue:%s','Agents','length','user:%s','handshake','find','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','user','userProfileId','ChatQueue','FaxQueue','SmsQueues','Trunk','IvrCampaigns','getVoiceQueues','getFaxQueues','getSmsQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','voice','chat','sms','openchannel','whatsapp','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','user_has_chat_interactions:remove','removeMailInteractions','removeFaxInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','address','remoteAddress'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0x8710,0x68));var _0x0871=function(_0x45f697,_0x534ff9){_0x45f697=_0x45f697-0x0;var _0x19608a=_0x8710[_0x45f697];return _0x19608a;};'use strict';var _=require(_0x0871('0x0'));var util=require(_0x0871('0x1'));var BPromise=require('bluebird');var db=require(_0x0871('0x2'))['db'];var config=require(_0x0871('0x3'));var queryQueues={'attributes':['id',_0x0871('0x4')],'include':[{'as':'Agents','model':db[_0x0871('0x5')],'attributes':['id',_0x0871('0x4'),'role'],'raw':!![],'where':{'role':_0x0871('0x6')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0x0871('0x7')}};var queryTrunks={'raw':!![],'attributes':['id',_0x0871('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0x0871('0x4')],'where':{'role':_0x0871('0x6')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x0871('0x4'),_0x0871('0x8')],'where':{'type':'ivr'}};function getAssociatedResources(_0x111b05,_0x9a7961,_0x5e9ef){return db[_0x0871('0x9')][_0x0871('0xa')]({'where':{'name':_0x111b05,'userProfileId':_0x9a7961},'raw':!![]})['then'](function(_0x8488f2){if(_0x8488f2){if(_0x8488f2[_0x0871('0xb')]){switch(_0x111b05){case _0x0871('0xc'):case _0x0871('0xd'):case _0x0871('0xe'):case'SmsQueues':case _0x0871('0xf'):case _0x0871('0x10'):case _0x0871('0x11'):return db[_0x5e9ef][_0x0871('0x12')](queryQueues);case _0x0871('0x13'):return db[_0x5e9ef][_0x0871('0x12')](queryTelephones);case _0x0871('0x14'):return db[_0x5e9ef][_0x0871('0x12')](queryTrunks);case'IvrCampaigns':return db[_0x5e9ef]['findAll'](queryCampaigns);}}else{return db[_0x0871('0x15')][_0x0871('0x12')]({'attributes':[_0x0871('0x16')],'where':{'sectionId':_0x8488f2['id']},'raw':!![]})[_0x0871('0x17')](function(_0x153f30){if(_0x153f30){var _0x2dde49={'where':{'id':_[_0x0871('0x18')](_0x153f30,_0x0871('0x16'))},'raw':!![]};switch(_0x5e9ef){case _0x0871('0x5'):_0x2dde49['where'][_0x0871('0x19')]='telephone';break;case _0x0871('0x1a'):_0x2dde49[_0x0871('0x1b')]['type']=_0x0871('0x1c');break;}return db[_0x5e9ef][_0x0871('0x12')](_0x2dde49);}else{return[];}});}}else{return[];}})[_0x0871('0x17')](function(_0x1abdbc){return _0x1abdbc;});}function joinOrLeaveQueues(_0x4d2033,_0x4a3115,_0x401afa,_0x440ac1){_0x4d2033[_0x4a3115](util[_0x0871('0x1d')](_0x0871('0x1e'),_0x401afa,_0x440ac1[_0x0871('0x4')]));if(_0x440ac1[_0x0871('0x1f')]){for(var _0x360dd2=0x0;_0x360dd2<_0x440ac1[_0x0871('0x1f')][_0x0871('0x20')];_0x360dd2+=0x1){_0x4d2033[_0x4a3115](util[_0x0871('0x1d')](_0x0871('0x21'),_0x440ac1[_0x0871('0x1f')][_0x360dd2][_0x0871('0x4')]));}}}function joinOrLeave(_0x48f5b7,_0x292e57,_0xe92246){var _0x20ca39;if(_0x48f5b7[_0x0871('0x22')]['query']['id']){db[_0x0871('0x5')][_0x0871('0x23')]({'attributes':['id',_0x0871('0x4'),_0x0871('0x19'),'userProfileId'],'where':{'id':_0x48f5b7[_0x0871('0x22')]['query']['id']},'include':[{'model':db[_0x0871('0x24')],'as':_0x0871('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x0871('0x26')],'as':_0x0871('0x27'),'attributes':['id'],'raw':!![]},{'model':db[_0x0871('0x28')],'as':_0x0871('0x29'),'attributes':['id'],'raw':!![]},{'model':db[_0x0871('0x2a')],'as':_0x0871('0x2b'),'attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':_0x0871('0x2c'),'attributes':['id'],'raw':!![]},{'model':db[_0x0871('0x2d')],'as':_0x0871('0x2e'),'attributes':['id'],'raw':!![]}]})[_0x0871('0x17')](function(_0x35d1f9){if(_0x35d1f9){_0x20ca39=_0x35d1f9;_0x48f5b7[_0x292e57](util[_0x0871('0x1d')](_0x0871('0x21'),_0x35d1f9[_0x0871('0x4')]));var _0x3c1aab=[];switch(_0x35d1f9[_0x0871('0x19')]){case'admin':_0x48f5b7[_0x292e57](_0x0871('0x2f'));_0x48f5b7[_0x292e57](_0x0871('0x30'));if(queryQueues[_0x0871('0x31')](_0x0871('0x32'))){delete queryQueues['include'];}_0x3c1aab[_0x0871('0x33')](db[_0x0871('0x34')][_0x0871('0x12')](queryQueues));_0x3c1aab[_0x0871('0x33')](db['ChatQueue']['findAll'](queryQueues));_0x3c1aab[_0x0871('0x33')](db['FaxQueue'][_0x0871('0x12')](queryQueues));_0x3c1aab[_0x0871('0x33')](db[_0x0871('0x35')][_0x0871('0x12')](queryQueues));_0x3c1aab['push'](db[_0x0871('0x36')][_0x0871('0x12')](queryQueues));_0x3c1aab[_0x0871('0x33')](db[_0x0871('0x37')][_0x0871('0x12')](queryQueues));_0x3c1aab[_0x0871('0x33')](db[_0x0871('0x38')][_0x0871('0x12')](queryQueues));_0x3c1aab[_0x0871('0x33')](db['User'][_0x0871('0x12')](queryTelephones));_0x3c1aab[_0x0871('0x33')](db['Trunk'][_0x0871('0x12')](queryTrunks));_0x3c1aab[_0x0871('0x33')](db[_0x0871('0x1a')][_0x0871('0x12')](queryCampaigns));_0x3c1aab[_0x0871('0x33')](db[_0x0871('0x5')][_0x0871('0x12')](queryAgents));break;case _0x0871('0x39'):_0x48f5b7[_0x292e57](_0x0871('0x2f'));_0x48f5b7[_0x292e57](_0x0871('0x30'));_0x3c1aab[_0x0871('0x33')](getAssociatedResources(_0x0871('0xc'),_0x35d1f9[_0x0871('0x3a')],_0x0871('0x34')));_0x3c1aab[_0x0871('0x33')](getAssociatedResources(_0x0871('0xd'),_0x35d1f9[_0x0871('0x3a')],_0x0871('0x3b')));_0x3c1aab['push'](getAssociatedResources(_0x0871('0xe'),_0x35d1f9[_0x0871('0x3a')],_0x0871('0x3c')));_0x3c1aab[_0x0871('0x33')](getAssociatedResources(_0x0871('0x3d'),_0x35d1f9['userProfileId'],_0x0871('0x35')));_0x3c1aab['push'](getAssociatedResources(_0x0871('0xf'),_0x35d1f9[_0x0871('0x3a')],_0x0871('0x36')));_0x3c1aab[_0x0871('0x33')](getAssociatedResources('OpenchannelQueues',_0x35d1f9[_0x0871('0x3a')],_0x0871('0x37')));_0x3c1aab[_0x0871('0x33')](getAssociatedResources('WhatsappQueues',_0x35d1f9[_0x0871('0x3a')],_0x0871('0x38')));_0x3c1aab[_0x0871('0x33')](getAssociatedResources(_0x0871('0x13'),_0x35d1f9[_0x0871('0x3a')],_0x0871('0x5')));_0x3c1aab[_0x0871('0x33')](getAssociatedResources('Trunks',_0x35d1f9[_0x0871('0x3a')],_0x0871('0x3e')));_0x3c1aab[_0x0871('0x33')](getAssociatedResources(_0x0871('0x3f'),_0x35d1f9[_0x0871('0x3a')],_0x0871('0x1a')));_0x3c1aab[_0x0871('0x33')](db[_0x0871('0x5')][_0x0871('0x12')](queryAgents));break;case _0x0871('0x6'):_0x48f5b7[_0x292e57](_0x0871('0x2f'));_0x48f5b7[_0x292e57](_0x0871('0x30'));_0x3c1aab['push'](_0x35d1f9[_0x0871('0x40')]({'attributes':['id','name']}));_0x3c1aab[_0x0871('0x33')](_0x35d1f9['getChatQueues']({'attributes':['id','name']}));_0x3c1aab[_0x0871('0x33')](_0x35d1f9[_0x0871('0x41')]({'attributes':['id',_0x0871('0x4')]}));_0x3c1aab[_0x0871('0x33')](_0x35d1f9[_0x0871('0x42')]({'attributes':['id',_0x0871('0x4')]}));_0x3c1aab[_0x0871('0x33')](_0x35d1f9[_0x0871('0x43')]({'attributes':['id',_0x0871('0x4')]}));_0x3c1aab[_0x0871('0x33')](_0x35d1f9[_0x0871('0x44')]({'attributes':['id','name']}));_0x3c1aab['push'](_0x35d1f9[_0x0871('0x45')]({'attributes':['id',_0x0871('0x4')]}));break;}return BPromise[_0x0871('0x46')](_0x3c1aab);}})[_0x0871('0x17')](function(_0x5f2f41){if(_0x5f2f41&&_0x5f2f41[_0x0871('0x20')]){for(var _0x4a3253=0x0;_0x4a3253<_0x5f2f41[_0x0871('0x20')];_0x4a3253+=0x1){for(var _0x46bdf1=0x0;_0x46bdf1<_0x5f2f41[_0x4a3253]['length'];_0x46bdf1+=0x1){switch(_0x4a3253){case 0x0:joinOrLeaveQueues(_0x48f5b7,_0x292e57,_0x0871('0x47'),_0x5f2f41[_0x4a3253][_0x46bdf1]);break;case 0x1:joinOrLeaveQueues(_0x48f5b7,_0x292e57,_0x0871('0x48'),_0x5f2f41[_0x4a3253][_0x46bdf1]);break;case 0x2:joinOrLeaveQueues(_0x48f5b7,_0x292e57,'fax',_0x5f2f41[_0x4a3253][_0x46bdf1]);break;case 0x3:joinOrLeaveQueues(_0x48f5b7,_0x292e57,_0x0871('0x49'),_0x5f2f41[_0x4a3253][_0x46bdf1]);break;case 0x4:joinOrLeaveQueues(_0x48f5b7,_0x292e57,'mail',_0x5f2f41[_0x4a3253][_0x46bdf1]);break;case 0x5:joinOrLeaveQueues(_0x48f5b7,_0x292e57,_0x0871('0x4a'),_0x5f2f41[_0x4a3253][_0x46bdf1]);break;case 0x6:joinOrLeaveQueues(_0x48f5b7,_0x292e57,_0x0871('0x4b'),_0x5f2f41[_0x4a3253][_0x46bdf1]);break;case 0x7:if(_0x20ca39[_0x0871('0x19')]!==_0x0871('0x6'))_0x48f5b7[_0x292e57](util[_0x0871('0x1d')]('telephone:%s',_0x5f2f41[_0x4a3253][_0x46bdf1][_0x0871('0x4')]));break;case 0x8:if(_0x20ca39['role']!=='agent')_0x48f5b7[_0x292e57](util[_0x0871('0x1d')](_0x0871('0x4c'),_0x5f2f41[_0x4a3253][_0x46bdf1][_0x0871('0x4')]));break;case 0x9:if(_0x20ca39[_0x0871('0x19')]!==_0x0871('0x6'))_0x48f5b7[_0x292e57](util['format'](_0x0871('0x4d'),_0x5f2f41[_0x4a3253][_0x46bdf1][_0x0871('0x8')],_0x5f2f41[_0x4a3253][_0x46bdf1][_0x0871('0x4')]));break;case 0xa:_0x48f5b7[_0x292e57](util[_0x0871('0x1d')](_0x0871('0x21'),_0x5f2f41[_0x4a3253][_0x46bdf1][_0x0871('0x4')]));break;}}}}})[_0x0871('0x17')](function(){if(_0x292e57===_0x0871('0x4e')){var _0x445df2=_[_0x0871('0x18')](_0x20ca39[_0x0871('0x25')],'id');return _0x20ca39[_0x0871('0x4f')](_0x445df2)[_0x0871('0x17')](function(){for(var _0x46c067=0x0;_0x46c067<_0x445df2[_0x0871('0x20')];_0x46c067+=0x1){_0xe92246[_0x0871('0x50')](_0x0871('0x51'),{'ChatInteractionId':Number(_0x445df2[_0x46c067]),'UserId':Number(_0x20ca39['id'])});}});}})['then'](function(){if(_0x292e57===_0x0871('0x4e')){var _0x14db2a=_['map'](_0x20ca39[_0x0871('0x27')],'id');return _0x20ca39[_0x0871('0x52')](_0x14db2a)[_0x0871('0x17')](function(){for(var _0x3c047d=0x0;_0x3c047d<_0x14db2a[_0x0871('0x20')];_0x3c047d+=0x1){_0xe92246['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x14db2a[_0x3c047d]),'UserId':Number(_0x20ca39['id'])});}});}})['then'](function(){if(_0x292e57===_0x0871('0x4e')){var _0x3d4533=_['map'](_0x20ca39['FaxInteractions'],'id');return _0x20ca39[_0x0871('0x53')](_0x3d4533)[_0x0871('0x17')](function(){for(var _0x574f01=0x0;_0x574f01<_0x3d4533[_0x0871('0x20')];_0x574f01+=0x1){_0xe92246['emit'](_0x0871('0x54'),{'FaxInteractionId':Number(_0x3d4533[_0x574f01]),'UserId':Number(_0x20ca39['id'])});}});}})[_0x0871('0x17')](function(){if(_0x292e57===_0x0871('0x4e')){var _0x27863a=_[_0x0871('0x18')](_0x20ca39[_0x0871('0x2b')],'id');return _0x20ca39['removeSmsInteractions'](_0x27863a)['then'](function(){for(var _0x5a03ed=0x0;_0x5a03ed<_0x27863a[_0x0871('0x20')];_0x5a03ed+=0x1){_0xe92246[_0x0871('0x50')](_0x0871('0x55'),{'SmsInteractionId':Number(_0x27863a[_0x5a03ed]),'UserId':Number(_0x20ca39['id'])});}});}})['then'](function(){if(_0x292e57===_0x0871('0x4e')){var _0xcf4a8=_['map'](_0x20ca39['OpenchannelInteractions'],'id');return _0x20ca39[_0x0871('0x56')](_0xcf4a8)[_0x0871('0x17')](function(){for(var _0x230eda=0x0;_0x230eda<_0xcf4a8[_0x0871('0x20')];_0x230eda+=0x1){_0xe92246[_0x0871('0x50')](_0x0871('0x57'),{'OpenchannelInteractionId':Number(_0xcf4a8[_0x230eda]),'UserId':Number(_0x20ca39['id'])});}});}})[_0x0871('0x17')](function(){if(_0x292e57===_0x0871('0x4e')){var _0x55e715=_['map'](_0x20ca39[_0x0871('0x2e')],'id');return _0x20ca39['removeWhatsappInteractions'](_0x55e715)[_0x0871('0x17')](function(){for(var _0x346009=0x0;_0x346009<_0x55e715[_0x0871('0x20')];_0x346009+=0x1){_0xe92246[_0x0871('0x50')](_0x0871('0x58'),{'WhatsappInteractionId':Number(_0x55e715[_0x346009]),'UserId':Number(_0x20ca39['id'])});}});}})[_0x0871('0x59')](function(_0x2f96bb){_0x48f5b7[_0x0871('0x5a')](_0x2f96bb);});}}function onDisconnect(_0x562d84,_0x430af8){joinOrLeave(_0x562d84,'leave',_0x430af8);}function onConnect(_0x47a347){joinOrLeave(_0x47a347,_0x0871('0x5b'));}exports[_0x0871('0x5c')]=function(_0x564afb){_0x564afb['on'](_0x0871('0x5d'),function(_0xe3cc2e){_0xe3cc2e['setMaxListeners'](0x0);_0xe3cc2e[_0x0871('0x5e')]=_0xe3cc2e['request'][_0x0871('0x5d')][_0x0871('0x5f')]+':'+_0xe3cc2e['request'][_0x0871('0x5d')]['remotePort'];_0xe3cc2e[_0x0871('0x60')]=new Date();_0xe3cc2e[_0x0871('0x5a')]=function(_0x2d271b){console['log'](_0x0871('0x61')+_0xe3cc2e[_0x0871('0x62')][_0x0871('0x4')]+'['+_0xe3cc2e[_0x0871('0x5e')]+']',_0x2d271b);};_0xe3cc2e['on']('disconnect',function(){onDisconnect(_0xe3cc2e,_0x564afb);_0xe3cc2e[_0x0871('0x5a')]('DISCONNECTED');});onConnect(_0xe3cc2e);_0xe3cc2e[_0x0871('0x5a')](_0x0871('0x63'));});};
\ No newline at end of file
+var _0xce14=['findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','format','%s:queue:%s','user:%s','find','userProfileId','query','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','admin','voice:inbound','voice:outbound','hasOwnProperty','include','push','VoiceQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','Campaign','user','SmsQueues','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','getMailQueues','all','length','chat','sms','mail','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','emit','user_has_chat_interactions:remove','leave','removeMailInteractions','user_has_fax_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','removeOpenchannelInteractions','removeWhatsappInteractions','catch','join','default','connection','setMaxListeners','address','request','remoteAddress','remotePort','connectedAt','log','SocketIO\x20','nsp','disconnect','DISCONNECTED','util','../mysqldb','./environment','Agents','User','name','role','agent','telephone','type','ivr','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','WhatsappQueues'];(function(_0x5ebdb7,_0x2298dc){var _0x3794e1=function(_0x17e577){while(--_0x17e577){_0x5ebdb7['push'](_0x5ebdb7['shift']());}};_0x3794e1(++_0x2298dc);}(_0xce14,0x17f));var _0x4ce1=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xce14[_0xbca1b1];return _0x4e1686;};'use strict';var _=require('lodash');var util=require(_0x4ce1('0x0'));var BPromise=require('bluebird');var db=require(_0x4ce1('0x1'))['db'];var config=require(_0x4ce1('0x2'));var queryQueues={'attributes':['id','name'],'include':[{'as':_0x4ce1('0x3'),'model':db[_0x4ce1('0x4')],'attributes':['id',_0x4ce1('0x5'),_0x4ce1('0x6')],'raw':!![],'where':{'role':_0x4ce1('0x7')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id','name'],'where':{'role':_0x4ce1('0x8')}};var queryTrunks={'raw':!![],'attributes':['id',_0x4ce1('0x5')]};var queryAgents={'raw':!![],'attributes':['id',_0x4ce1('0x5')],'where':{'role':_0x4ce1('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id','name',_0x4ce1('0x9')],'where':{'type':_0x4ce1('0xa')}};function getAssociatedResources(_0x1b87d1,_0x50e0d4,_0x1b5bd8){return db[_0x4ce1('0xb')][_0x4ce1('0xc')]({'where':{'name':_0x1b87d1,'userProfileId':_0x50e0d4},'raw':!![]})[_0x4ce1('0xd')](function(_0x4c78ac){if(_0x4c78ac){if(_0x4c78ac[_0x4ce1('0xe')]){switch(_0x1b87d1){case _0x4ce1('0xf'):case _0x4ce1('0x10'):case _0x4ce1('0x11'):case'SmsQueues':case _0x4ce1('0x12'):case _0x4ce1('0x13'):case _0x4ce1('0x14'):return db[_0x1b5bd8][_0x4ce1('0x15')](queryQueues);case _0x4ce1('0x16'):return db[_0x1b5bd8][_0x4ce1('0x15')](queryTelephones);case _0x4ce1('0x17'):return db[_0x1b5bd8][_0x4ce1('0x15')](queryTrunks);case _0x4ce1('0x18'):return db[_0x1b5bd8][_0x4ce1('0x15')](queryCampaigns);}}else{return db[_0x4ce1('0x19')]['findAll']({'attributes':[_0x4ce1('0x1a')],'where':{'sectionId':_0x4c78ac['id']},'raw':!![]})['then'](function(_0x172e2c){if(_0x172e2c){var _0x1bfd82={'where':{'id':_[_0x4ce1('0x1b')](_0x172e2c,_0x4ce1('0x1a'))},'raw':!![]};switch(_0x1b5bd8){case'User':_0x1bfd82[_0x4ce1('0x1c')]['role']='telephone';break;case'Campaign':_0x1bfd82[_0x4ce1('0x1c')][_0x4ce1('0x9')]=_0x4ce1('0xa');break;}return db[_0x1b5bd8][_0x4ce1('0x15')](_0x1bfd82);}else{return[];}});}}else{return[];}})['then'](function(_0x4322e6){return _0x4322e6;});}function joinOrLeaveQueues(_0x48a4ed,_0x4ffd1c,_0x315bb7,_0x2a740b){_0x48a4ed[_0x4ffd1c](util[_0x4ce1('0x1d')](_0x4ce1('0x1e'),_0x315bb7,_0x2a740b[_0x4ce1('0x5')]));if(_0x2a740b[_0x4ce1('0x3')]){for(var _0x896adf=0x0;_0x896adf<_0x2a740b[_0x4ce1('0x3')]['length'];_0x896adf+=0x1){_0x48a4ed[_0x4ffd1c](util[_0x4ce1('0x1d')](_0x4ce1('0x1f'),_0x2a740b['Agents'][_0x896adf][_0x4ce1('0x5')]));}}}function joinOrLeave(_0x39eafa,_0x5aa1c2,_0x3cf168){var _0x2da360;if(_0x39eafa['handshake']['query']['id']){db['User'][_0x4ce1('0x20')]({'attributes':['id','name',_0x4ce1('0x6'),_0x4ce1('0x21')],'where':{'id':_0x39eafa['handshake'][_0x4ce1('0x22')]['id']},'include':[{'model':db[_0x4ce1('0x23')],'as':_0x4ce1('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0x4ce1('0x25')],'as':_0x4ce1('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0x4ce1('0x27')],'as':_0x4ce1('0x28'),'attributes':['id'],'raw':!![]},{'model':db[_0x4ce1('0x29')],'as':_0x4ce1('0x2a'),'attributes':['id'],'raw':!![]},{'model':db[_0x4ce1('0x2b')],'as':_0x4ce1('0x2c'),'attributes':['id'],'raw':!![]},{'model':db[_0x4ce1('0x2d')],'as':_0x4ce1('0x2e'),'attributes':['id'],'raw':!![]}]})[_0x4ce1('0xd')](function(_0x1ceb1e){if(_0x1ceb1e){_0x2da360=_0x1ceb1e;_0x39eafa[_0x5aa1c2](util[_0x4ce1('0x1d')](_0x4ce1('0x1f'),_0x1ceb1e[_0x4ce1('0x5')]));var _0x5f5854=[];switch(_0x1ceb1e[_0x4ce1('0x6')]){case _0x4ce1('0x2f'):_0x39eafa[_0x5aa1c2](_0x4ce1('0x30'));_0x39eafa[_0x5aa1c2](_0x4ce1('0x31'));if(queryQueues[_0x4ce1('0x32')](_0x4ce1('0x33'))){delete queryQueues['include'];}_0x5f5854[_0x4ce1('0x34')](db[_0x4ce1('0x35')][_0x4ce1('0x15')](queryQueues));_0x5f5854['push'](db['ChatQueue'][_0x4ce1('0x15')](queryQueues));_0x5f5854[_0x4ce1('0x34')](db[_0x4ce1('0x36')][_0x4ce1('0x15')](queryQueues));_0x5f5854[_0x4ce1('0x34')](db[_0x4ce1('0x37')]['findAll'](queryQueues));_0x5f5854['push'](db[_0x4ce1('0x38')][_0x4ce1('0x15')](queryQueues));_0x5f5854['push'](db[_0x4ce1('0x39')][_0x4ce1('0x15')](queryQueues));_0x5f5854[_0x4ce1('0x34')](db[_0x4ce1('0x3a')][_0x4ce1('0x15')](queryQueues));_0x5f5854[_0x4ce1('0x34')](db[_0x4ce1('0x4')][_0x4ce1('0x15')](queryTelephones));_0x5f5854[_0x4ce1('0x34')](db[_0x4ce1('0x3b')][_0x4ce1('0x15')](queryTrunks));_0x5f5854['push'](db[_0x4ce1('0x3c')][_0x4ce1('0x15')](queryCampaigns));_0x5f5854[_0x4ce1('0x34')](db['User']['findAll'](queryAgents));break;case _0x4ce1('0x3d'):_0x39eafa[_0x5aa1c2]('voice:inbound');_0x39eafa[_0x5aa1c2](_0x4ce1('0x31'));_0x5f5854[_0x4ce1('0x34')](getAssociatedResources(_0x4ce1('0xf'),_0x1ceb1e[_0x4ce1('0x21')],_0x4ce1('0x35')));_0x5f5854[_0x4ce1('0x34')](getAssociatedResources(_0x4ce1('0x10'),_0x1ceb1e['userProfileId'],'ChatQueue'));_0x5f5854[_0x4ce1('0x34')](getAssociatedResources(_0x4ce1('0x11'),_0x1ceb1e[_0x4ce1('0x21')],_0x4ce1('0x36')));_0x5f5854[_0x4ce1('0x34')](getAssociatedResources(_0x4ce1('0x3e'),_0x1ceb1e['userProfileId'],_0x4ce1('0x37')));_0x5f5854[_0x4ce1('0x34')](getAssociatedResources(_0x4ce1('0x12'),_0x1ceb1e[_0x4ce1('0x21')],_0x4ce1('0x38')));_0x5f5854['push'](getAssociatedResources(_0x4ce1('0x13'),_0x1ceb1e[_0x4ce1('0x21')],_0x4ce1('0x39')));_0x5f5854[_0x4ce1('0x34')](getAssociatedResources(_0x4ce1('0x14'),_0x1ceb1e[_0x4ce1('0x21')],_0x4ce1('0x3a')));_0x5f5854[_0x4ce1('0x34')](getAssociatedResources('Telephones',_0x1ceb1e[_0x4ce1('0x21')],_0x4ce1('0x4')));_0x5f5854[_0x4ce1('0x34')](getAssociatedResources(_0x4ce1('0x17'),_0x1ceb1e[_0x4ce1('0x21')],_0x4ce1('0x3b')));_0x5f5854[_0x4ce1('0x34')](getAssociatedResources(_0x4ce1('0x18'),_0x1ceb1e['userProfileId'],_0x4ce1('0x3c')));_0x5f5854[_0x4ce1('0x34')](db[_0x4ce1('0x4')][_0x4ce1('0x15')](queryAgents));break;case _0x4ce1('0x7'):_0x39eafa[_0x5aa1c2](_0x4ce1('0x30'));_0x39eafa[_0x5aa1c2](_0x4ce1('0x31'));_0x5f5854[_0x4ce1('0x34')](_0x1ceb1e[_0x4ce1('0x3f')]({'attributes':['id','name']}));_0x5f5854[_0x4ce1('0x34')](_0x1ceb1e[_0x4ce1('0x40')]({'attributes':['id',_0x4ce1('0x5')]}));_0x5f5854['push'](_0x1ceb1e[_0x4ce1('0x41')]({'attributes':['id',_0x4ce1('0x5')]}));_0x5f5854[_0x4ce1('0x34')](_0x1ceb1e[_0x4ce1('0x42')]({'attributes':['id','name']}));_0x5f5854[_0x4ce1('0x34')](_0x1ceb1e[_0x4ce1('0x43')]({'attributes':['id',_0x4ce1('0x5')]}));_0x5f5854[_0x4ce1('0x34')](_0x1ceb1e['getOpenchannelQueues']({'attributes':['id','name']}));_0x5f5854[_0x4ce1('0x34')](_0x1ceb1e['getWhatsappQueues']({'attributes':['id',_0x4ce1('0x5')]}));break;}return BPromise[_0x4ce1('0x44')](_0x5f5854);}})[_0x4ce1('0xd')](function(_0x6e196c){if(_0x6e196c&&_0x6e196c[_0x4ce1('0x45')]){for(var _0x10d58c=0x0;_0x10d58c<_0x6e196c[_0x4ce1('0x45')];_0x10d58c+=0x1){for(var _0x2d8430=0x0;_0x2d8430<_0x6e196c[_0x10d58c][_0x4ce1('0x45')];_0x2d8430+=0x1){switch(_0x10d58c){case 0x0:joinOrLeaveQueues(_0x39eafa,_0x5aa1c2,'voice',_0x6e196c[_0x10d58c][_0x2d8430]);break;case 0x1:joinOrLeaveQueues(_0x39eafa,_0x5aa1c2,_0x4ce1('0x46'),_0x6e196c[_0x10d58c][_0x2d8430]);break;case 0x2:joinOrLeaveQueues(_0x39eafa,_0x5aa1c2,'fax',_0x6e196c[_0x10d58c][_0x2d8430]);break;case 0x3:joinOrLeaveQueues(_0x39eafa,_0x5aa1c2,_0x4ce1('0x47'),_0x6e196c[_0x10d58c][_0x2d8430]);break;case 0x4:joinOrLeaveQueues(_0x39eafa,_0x5aa1c2,_0x4ce1('0x48'),_0x6e196c[_0x10d58c][_0x2d8430]);break;case 0x5:joinOrLeaveQueues(_0x39eafa,_0x5aa1c2,'openchannel',_0x6e196c[_0x10d58c][_0x2d8430]);break;case 0x6:joinOrLeaveQueues(_0x39eafa,_0x5aa1c2,_0x4ce1('0x49'),_0x6e196c[_0x10d58c][_0x2d8430]);break;case 0x7:if(_0x2da360['role']!==_0x4ce1('0x7'))_0x39eafa[_0x5aa1c2](util[_0x4ce1('0x1d')](_0x4ce1('0x4a'),_0x6e196c[_0x10d58c][_0x2d8430]['name']));break;case 0x8:if(_0x2da360[_0x4ce1('0x6')]!==_0x4ce1('0x7'))_0x39eafa[_0x5aa1c2](util[_0x4ce1('0x1d')](_0x4ce1('0x4b'),_0x6e196c[_0x10d58c][_0x2d8430][_0x4ce1('0x5')]));break;case 0x9:if(_0x2da360[_0x4ce1('0x6')]!==_0x4ce1('0x7'))_0x39eafa[_0x5aa1c2](util['format'](_0x4ce1('0x4c'),_0x6e196c[_0x10d58c][_0x2d8430][_0x4ce1('0x9')],_0x6e196c[_0x10d58c][_0x2d8430][_0x4ce1('0x5')]));break;case 0xa:_0x39eafa[_0x5aa1c2](util['format'](_0x4ce1('0x1f'),_0x6e196c[_0x10d58c][_0x2d8430][_0x4ce1('0x5')]));break;}}}}})[_0x4ce1('0xd')](function(){if(_0x5aa1c2==='leave'){var _0x25b2bb=_[_0x4ce1('0x1b')](_0x2da360['ChatInteractions'],'id');return _0x2da360['removeChatInteractions'](_0x25b2bb)[_0x4ce1('0xd')](function(){for(var _0x4169f0=0x0;_0x4169f0<_0x25b2bb['length'];_0x4169f0+=0x1){_0x3cf168[_0x4ce1('0x4d')](_0x4ce1('0x4e'),{'ChatInteractionId':Number(_0x25b2bb[_0x4169f0]),'UserId':Number(_0x2da360['id'])});}});}})[_0x4ce1('0xd')](function(){if(_0x5aa1c2===_0x4ce1('0x4f')){var _0x49812e=_[_0x4ce1('0x1b')](_0x2da360[_0x4ce1('0x26')],'id');return _0x2da360[_0x4ce1('0x50')](_0x49812e)[_0x4ce1('0xd')](function(){for(var _0x578da8=0x0;_0x578da8<_0x49812e['length'];_0x578da8+=0x1){_0x3cf168['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x49812e[_0x578da8]),'UserId':Number(_0x2da360['id'])});}});}})[_0x4ce1('0xd')](function(){if(_0x5aa1c2===_0x4ce1('0x4f')){var _0x308559=_[_0x4ce1('0x1b')](_0x2da360[_0x4ce1('0x28')],'id');return _0x2da360['removeFaxInteractions'](_0x308559)[_0x4ce1('0xd')](function(){for(var _0x203f2e=0x0;_0x203f2e<_0x308559['length'];_0x203f2e+=0x1){_0x3cf168['emit'](_0x4ce1('0x51'),{'FaxInteractionId':Number(_0x308559[_0x203f2e]),'UserId':Number(_0x2da360['id'])});}});}})[_0x4ce1('0xd')](function(){if(_0x5aa1c2===_0x4ce1('0x4f')){var _0x1450e2=_[_0x4ce1('0x1b')](_0x2da360[_0x4ce1('0x2a')],'id');return _0x2da360[_0x4ce1('0x52')](_0x1450e2)[_0x4ce1('0xd')](function(){for(var _0x205261=0x0;_0x205261<_0x1450e2[_0x4ce1('0x45')];_0x205261+=0x1){_0x3cf168[_0x4ce1('0x4d')](_0x4ce1('0x53'),{'SmsInteractionId':Number(_0x1450e2[_0x205261]),'UserId':Number(_0x2da360['id'])});}});}})[_0x4ce1('0xd')](function(){if(_0x5aa1c2===_0x4ce1('0x4f')){var _0x47376e=_[_0x4ce1('0x1b')](_0x2da360[_0x4ce1('0x2c')],'id');return _0x2da360[_0x4ce1('0x54')](_0x47376e)['then'](function(){for(var _0x43cadc=0x0;_0x43cadc<_0x47376e[_0x4ce1('0x45')];_0x43cadc+=0x1){_0x3cf168[_0x4ce1('0x4d')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x47376e[_0x43cadc]),'UserId':Number(_0x2da360['id'])});}});}})[_0x4ce1('0xd')](function(){if(_0x5aa1c2===_0x4ce1('0x4f')){var _0x451741=_[_0x4ce1('0x1b')](_0x2da360[_0x4ce1('0x2e')],'id');return _0x2da360[_0x4ce1('0x55')](_0x451741)[_0x4ce1('0xd')](function(){for(var _0x2303c6=0x0;_0x2303c6<_0x451741[_0x4ce1('0x45')];_0x2303c6+=0x1){_0x3cf168['emit']('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x451741[_0x2303c6]),'UserId':Number(_0x2da360['id'])});}});}})[_0x4ce1('0x56')](function(_0x158457){_0x39eafa['log'](_0x158457);});}}function onDisconnect(_0x40883e,_0x5b79ba){joinOrLeave(_0x40883e,_0x4ce1('0x4f'),_0x5b79ba);}function onConnect(_0x44bad6){joinOrLeave(_0x44bad6,_0x4ce1('0x57'));}exports[_0x4ce1('0x58')]=function(_0x3d276b){_0x3d276b['on'](_0x4ce1('0x59'),function(_0xc1fdad){_0xc1fdad[_0x4ce1('0x5a')](0x0);_0xc1fdad[_0x4ce1('0x5b')]=_0xc1fdad[_0x4ce1('0x5c')][_0x4ce1('0x59')][_0x4ce1('0x5d')]+':'+_0xc1fdad[_0x4ce1('0x5c')][_0x4ce1('0x59')][_0x4ce1('0x5e')];_0xc1fdad[_0x4ce1('0x5f')]=new Date();_0xc1fdad[_0x4ce1('0x60')]=function(_0x49befa){console[_0x4ce1('0x60')](_0x4ce1('0x61')+_0xc1fdad[_0x4ce1('0x62')][_0x4ce1('0x5')]+'['+_0xc1fdad[_0x4ce1('0x5b')]+']',_0x49befa);};_0xc1fdad['on'](_0x4ce1('0x63'),function(){onDisconnect(_0xc1fdad,_0x3d276b);_0xc1fdad[_0x4ce1('0x60')](_0x4ce1('0x64'));});onConnect(_0xc1fdad);_0xc1fdad[_0x4ce1('0x60')]('CONNECTED');});};
\ No newline at end of file
index 175911f..9b064b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d25=['contact','UserId','interface','SIP/%s','name','outgoingmessage','AfterCreateMessage','offlineMessage','undefined','format','agent','AfterCreate','changed','closed','substatus','AfterUpdate','User','find','fullname','internal','default','length','hasOwnProperty','model','callback','toLowerCase','condition','../../mysqldb','jayson/promise','../logger','triggers','client','http','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','closedinteraction','ChatMessage','newmessage','ChatOfflineMessage','Sms','SmsInteraction','Whatsapp','WhatsappInteraction','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','OpenchannelInteraction','Openchannel','OpenchannelMessage','request','EventManager','info','Trigger,\x20%s','error','code','catch','get','channel','motionChannel','event','direction','resolve','then','ContactId','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','Sequelize','QueryTypes','SELECT'];(function(_0x2344c8,_0x138928){var _0x307902=function(_0x566ac7){while(--_0x566ac7){_0x2344c8['push'](_0x2344c8['shift']());}};_0x307902(++_0x138928);}(_0x8d25,0x192));var _0x58d2=function(_0x44916a,_0x47d076){_0x44916a=_0x44916a-0x0;var _0x10499a=_0x8d25[_0x44916a];return _0x10499a;};'use strict';var util=require('util');var db=require(_0x58d2('0x0'))['db'];var jayson=require(_0x58d2('0x1'));var logger=require(_0x58d2('0x2'))(_0x58d2('0x3'));var client=jayson[_0x58d2('0x4')][_0x58d2('0x5')]({'port':0x232a});var triggers=[{'channel':_0x58d2('0x6'),'model':_0x58d2('0x7'),'event':_0x58d2('0x8'),'condition':_0x58d2('0x9'),'callback':afterCreate},{'channel':_0x58d2('0x6'),'model':'ChatInteraction','event':_0x58d2('0xa'),'condition':_0x58d2('0xb'),'callback':afterUpdate},{'channel':'Chat','model':_0x58d2('0xc'),'event':'afterCreate','condition':_0x58d2('0xd'),'callback':afterCreateMessage},{'channel':_0x58d2('0x6'),'model':_0x58d2('0xe'),'event':_0x58d2('0x8'),'condition':'newmessage','callback':afterCreateOfflineMessage},{'channel':_0x58d2('0xf'),'model':'SmsInteraction','event':_0x58d2('0x8'),'condition':_0x58d2('0x9'),'callback':afterCreate},{'channel':'Sms','model':_0x58d2('0x10'),'event':_0x58d2('0xa'),'condition':_0x58d2('0xb'),'callback':afterUpdate},{'channel':_0x58d2('0xf'),'model':'SmsMessage','event':_0x58d2('0x8'),'condition':_0x58d2('0xd'),'callback':afterCreateMessage},{'channel':_0x58d2('0x11'),'model':_0x58d2('0x12'),'event':_0x58d2('0x8'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x58d2('0x11'),'model':'WhatsappInteraction','event':_0x58d2('0xa'),'condition':_0x58d2('0xb'),'callback':afterUpdate},{'channel':'Whatsapp','model':'WhatsappMessage','event':_0x58d2('0x8'),'condition':_0x58d2('0xd'),'callback':afterCreateMessage},{'channel':_0x58d2('0x13'),'model':_0x58d2('0x14'),'event':_0x58d2('0x8'),'condition':_0x58d2('0x9'),'callback':afterCreate},{'channel':_0x58d2('0x13'),'model':_0x58d2('0x14'),'event':_0x58d2('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Fax','model':_0x58d2('0x15'),'event':_0x58d2('0x8'),'condition':_0x58d2('0xd'),'callback':afterCreateMessage},{'channel':_0x58d2('0x16'),'model':_0x58d2('0x17'),'event':_0x58d2('0x8'),'condition':_0x58d2('0x9'),'callback':afterCreate},{'channel':_0x58d2('0x16'),'model':_0x58d2('0x17'),'event':'afterUpdate','condition':_0x58d2('0xb'),'callback':afterUpdate},{'channel':_0x58d2('0x16'),'model':'MailMessage','event':_0x58d2('0x8'),'condition':_0x58d2('0xd'),'callback':afterCreateMessage},{'channel':'Openchannel','model':_0x58d2('0x18'),'event':_0x58d2('0x8'),'condition':_0x58d2('0x9'),'callback':afterCreate},{'channel':_0x58d2('0x19'),'model':_0x58d2('0x18'),'event':_0x58d2('0xa'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0x58d2('0x19'),'model':_0x58d2('0x1a'),'event':_0x58d2('0x8'),'condition':_0x58d2('0xd'),'callback':afterCreateMessage}];function request(_0x4b73e8){return client[_0x58d2('0x1b')](_0x58d2('0x1c'),_0x4b73e8)['then'](function(_0x4a90ad){logger[_0x58d2('0x1d')](_0x58d2('0x1e'),'EventManager',_0x4a90ad);if(_0x4a90ad[_0x58d2('0x1f')]){if(_0x4a90ad['error'][_0x58d2('0x20')]===0x1f4){logger[_0x58d2('0x1f')](_0x58d2('0x1e'),_0x58d2('0x1c'),_0x4a90ad[_0x58d2('0x1f')]);}}})[_0x58d2('0x21')](function(_0x246c4f){logger[_0x58d2('0x1f')](_0x58d2('0x1e'),_0x58d2('0x1c'),_0x246c4f);});}function afterCreateMessage(_0x16cc7d){return function(_0x52c224){_0x52c224=_0x52c224[_0x58d2('0x22')]({'plain':!![]});_0x52c224[_0x58d2('0x23')]=_0x16cc7d;_0x52c224[_0x58d2('0x24')]=_0x16cc7d;_0x52c224[_0x58d2('0x25')]=_0x52c224[_0x58d2('0x26')];Promise[_0x58d2('0x27')]()[_0x58d2('0x28')](function(){if(typeof _0x52c224[_0x58d2('0x29')]==='undefined')return null;var _0x106519=_0x58d2('0x2a')+_0x52c224['ContactId'];return db[_0x58d2('0x2b')][_0x58d2('0x2c')](_0x106519,{'type':db[_0x58d2('0x2d')][_0x58d2('0x2e')][_0x58d2('0x2f')],'raw':!![]});})['then'](function(_0xbbf235){if(_0xbbf235){_0x52c224[_0x58d2('0x30')]=_0xbbf235[0x0];}if(typeof _0x52c224[_0x58d2('0x31')]==='undefined')return;return getAgent(_0x52c224[_0x58d2('0x31')]);})[_0x58d2('0x28')](function(_0x3d30a8){if(_0x3d30a8){_0x52c224[_0x58d2('0x32')]=util['format'](_0x58d2('0x33'),_0x3d30a8[_0x58d2('0x34')]);_0x52c224['agent']=_0x3d30a8;_0x52c224[_0x58d2('0x23')]=_0x16cc7d;return request({'event':'incomingmessage','message':_0x52c224});}else{return request({'event':_0x58d2('0x35'),'message':_0x52c224});}})[_0x58d2('0x21')](function(_0x1d8234){logger[_0x58d2('0x1f')](_0x58d2('0x1e'),_0x58d2('0x36'),_0x1d8234);});};}function afterCreateOfflineMessage(_0x1467a0){return function(_0x567893){_0x567893=_0x567893['get']({'plain':!![]});_0x567893['channel']=_0x1467a0;_0x567893[_0x58d2('0x24')]=_0x1467a0;_0x567893[_0x58d2('0x25')]=_0x58d2('0x37');return request({'event':_0x567893[_0x58d2('0x25')],'message':_0x567893});};}function afterCreate(_0x2e5c5c,_0x59b00b){return function(_0x2766b0){_0x2766b0=_0x2766b0[_0x58d2('0x22')]({'plain':!![]});_0x2766b0['channel']=_0x2e5c5c;_0x2766b0['motionChannel']=_0x2e5c5c;_0x2766b0[_0x58d2('0x25')]='opened';Promise[_0x58d2('0x27')]()[_0x58d2('0x28')](function(){var _0x313ab1=_0x58d2('0x2a')+_0x2766b0[_0x58d2('0x29')];return db[_0x58d2('0x2b')][_0x58d2('0x2c')](_0x313ab1,{'type':db['Sequelize'][_0x58d2('0x2e')][_0x58d2('0x2f')],'raw':!![]});})[_0x58d2('0x28')](function(_0x8c0194){if(_0x8c0194){_0x2766b0['contact']=_0x8c0194[0x0];}if(typeof _0x2766b0['UserId']===_0x58d2('0x38'))return;return getAgent(_0x2766b0[_0x58d2('0x31')]);})[_0x58d2('0x28')](function(_0x1231dd){if(_0x1231dd){_0x2766b0[_0x58d2('0x32')]=util[_0x58d2('0x39')](_0x58d2('0x33'),_0x1231dd['name']);_0x2766b0[_0x58d2('0x3a')]=_0x1231dd;}return request({'event':_0x59b00b,'message':_0x2766b0});})['catch'](function(_0x1e3364){logger[_0x58d2('0x1f')](_0x58d2('0x1e'),_0x58d2('0x3b'),_0x1e3364);});};}function afterUpdate(_0x84cb93){return function(_0x22e468){var _0x56368a=_0x22e468[_0x58d2('0x3c')](_0x58d2('0x3d'))&&_0x22e468['closed'];var _0x4ce1c6=_0x22e468[_0x58d2('0x3c')](_0x58d2('0x3e'));if(_0x56368a||_0x4ce1c6){var _0x5ad85e=_0x56368a?_0x58d2('0xb'):_0x58d2('0x3e');var _0x386fb6=_0x22e468['get']({'plain':!![]});_0x386fb6['channel']=_0x84cb93;_0x386fb6[_0x58d2('0x24')]=_0x84cb93;_0x386fb6[_0x58d2('0x25')]=_0x56368a?'closed':_0x58d2('0x3e');var _0x2259e0=_0x58d2('0x2a')+_0x386fb6[_0x58d2('0x29')];return db[_0x58d2('0x2b')][_0x58d2('0x2c')](_0x2259e0,{'type':db[_0x58d2('0x2d')][_0x58d2('0x2e')]['SELECT'],'raw':!![]})['then'](function(_0x497e9f){if(_0x497e9f){_0x386fb6[_0x58d2('0x30')]=_0x497e9f[0x0];}if(typeof _0x386fb6[_0x58d2('0x31')]===_0x58d2('0x38'))return;return getAgent(_0x386fb6['UserId']);})[_0x58d2('0x28')](function(_0x165fbb){if(_0x165fbb){_0x386fb6[_0x58d2('0x32')]=util[_0x58d2('0x39')]('SIP/%s',_0x165fbb['name']);_0x386fb6[_0x58d2('0x3a')]=_0x165fbb;}return request({'event':_0x5ad85e,'message':_0x386fb6});})[_0x58d2('0x21')](function(_0x2bf7ce){logger[_0x58d2('0x1f')]('Trigger,\x20%s',_0x58d2('0x3f'),_0x2bf7ce);});}};}function getAgent(_0x3a21b2){return db[_0x58d2('0x40')][_0x58d2('0x41')]({'where':{'id':_0x3a21b2},'attributes':['id',_0x58d2('0x34'),_0x58d2('0x42'),'email',_0x58d2('0x43')],'raw':!![]})[_0x58d2('0x28')](function(_0x37aebb){return _0x37aebb;});}exports[_0x58d2('0x44')]=function(){for(var _0x5378bc=0x0;_0x5378bc<triggers[_0x58d2('0x45')];_0x5378bc+=0x1){if(db[_0x58d2('0x46')](triggers[_0x5378bc][_0x58d2('0x47')])){db[triggers[_0x5378bc][_0x58d2('0x47')]]['hook'](triggers[_0x5378bc][_0x58d2('0x25')],triggers[_0x5378bc][_0x58d2('0x48')](triggers[_0x5378bc][_0x58d2('0x23')][_0x58d2('0x49')](),triggers[_0x5378bc][_0x58d2('0x4a')]));}}};
\ No newline at end of file
+var _0x120f=['../../mysqldb','jayson/promise','../logger','client','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','ChatMessage','ChatOfflineMessage','newmessage','Sms','SmsInteraction','closedinteraction','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','OpenchannelInteraction','Openchannel','EventManager','then','info','Trigger,\x20%s','error','get','channel','motionChannel','event','direction','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','query','QueryTypes','SELECT','UserId','interface','format','SIP/%s','agent','outgoingmessage','AfterCreateMessage','offlineMessage','opened','resolve','sequelize','Sequelize','contact','name','AfterCreate','changed','closed','substatus','catch','AfterUpdate','User','find','fullname','email','internal','default','length','hasOwnProperty','model','hook','callback','toLowerCase','condition','util'];(function(_0x41273c,_0x4c0c04){var _0x453ce4=function(_0x5504e9){while(--_0x5504e9){_0x41273c['push'](_0x41273c['shift']());}};_0x453ce4(++_0x4c0c04);}(_0x120f,0x133));var _0xf120=function(_0x34be44,_0xbcf0e){_0x34be44=_0x34be44-0x0;var _0x22cb22=_0x120f[_0x34be44];return _0x22cb22;};'use strict';var util=require(_0xf120('0x0'));var db=require(_0xf120('0x1'))['db'];var jayson=require(_0xf120('0x2'));var logger=require(_0xf120('0x3'))('triggers');var client=jayson[_0xf120('0x4')]['http']({'port':0x232a});var triggers=[{'channel':_0xf120('0x5'),'model':_0xf120('0x6'),'event':_0xf120('0x7'),'condition':_0xf120('0x8'),'callback':afterCreate},{'channel':_0xf120('0x5'),'model':'ChatInteraction','event':_0xf120('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xf120('0x5'),'model':_0xf120('0xa'),'event':_0xf120('0x7'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xf120('0x5'),'model':_0xf120('0xb'),'event':_0xf120('0x7'),'condition':_0xf120('0xc'),'callback':afterCreateOfflineMessage},{'channel':_0xf120('0xd'),'model':_0xf120('0xe'),'event':'afterCreate','condition':_0xf120('0x8'),'callback':afterCreate},{'channel':_0xf120('0xd'),'model':_0xf120('0xe'),'event':_0xf120('0x9'),'condition':_0xf120('0xf'),'callback':afterUpdate},{'channel':_0xf120('0xd'),'model':_0xf120('0x10'),'event':_0xf120('0x7'),'condition':_0xf120('0xc'),'callback':afterCreateMessage},{'channel':_0xf120('0x11'),'model':'WhatsappInteraction','event':_0xf120('0x7'),'condition':_0xf120('0x8'),'callback':afterCreate},{'channel':'Whatsapp','model':_0xf120('0x12'),'event':_0xf120('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xf120('0x11'),'model':_0xf120('0x13'),'event':'afterCreate','condition':_0xf120('0xc'),'callback':afterCreateMessage},{'channel':_0xf120('0x14'),'model':_0xf120('0x15'),'event':_0xf120('0x7'),'condition':_0xf120('0x8'),'callback':afterCreate},{'channel':_0xf120('0x14'),'model':'FaxInteraction','event':'afterUpdate','condition':_0xf120('0xf'),'callback':afterUpdate},{'channel':'Fax','model':_0xf120('0x16'),'event':_0xf120('0x7'),'condition':_0xf120('0xc'),'callback':afterCreateMessage},{'channel':_0xf120('0x17'),'model':_0xf120('0x18'),'event':'afterCreate','condition':_0xf120('0x8'),'callback':afterCreate},{'channel':_0xf120('0x17'),'model':_0xf120('0x18'),'event':_0xf120('0x9'),'condition':_0xf120('0xf'),'callback':afterUpdate},{'channel':_0xf120('0x17'),'model':_0xf120('0x19'),'event':_0xf120('0x7'),'condition':'newmessage','callback':afterCreateMessage},{'channel':'Openchannel','model':_0xf120('0x1a'),'event':_0xf120('0x7'),'condition':_0xf120('0x8'),'callback':afterCreate},{'channel':_0xf120('0x1b'),'model':_0xf120('0x1a'),'event':_0xf120('0x9'),'condition':_0xf120('0xf'),'callback':afterUpdate},{'channel':_0xf120('0x1b'),'model':'OpenchannelMessage','event':'afterCreate','condition':_0xf120('0xc'),'callback':afterCreateMessage}];function request(_0x212ab8){return client['request'](_0xf120('0x1c'),_0x212ab8)[_0xf120('0x1d')](function(_0x2943d1){logger[_0xf120('0x1e')](_0xf120('0x1f'),_0xf120('0x1c'),_0x2943d1);if(_0x2943d1[_0xf120('0x20')]){if(_0x2943d1[_0xf120('0x20')]['code']===0x1f4){logger[_0xf120('0x20')](_0xf120('0x1f'),'EventManager',_0x2943d1[_0xf120('0x20')]);}}})['catch'](function(_0x519152){logger[_0xf120('0x20')](_0xf120('0x1f'),'EventManager',_0x519152);});}function afterCreateMessage(_0x52a05f){return function(_0x17ad77){_0x17ad77=_0x17ad77[_0xf120('0x21')]({'plain':!![]});_0x17ad77[_0xf120('0x22')]=_0x52a05f;_0x17ad77[_0xf120('0x23')]=_0x52a05f;_0x17ad77[_0xf120('0x24')]=_0x17ad77[_0xf120('0x25')];Promise['resolve']()[_0xf120('0x1d')](function(){if(typeof _0x17ad77['ContactId']===_0xf120('0x26'))return null;var _0x562273=_0xf120('0x27')+_0x17ad77[_0xf120('0x28')];return db['sequelize'][_0xf120('0x29')](_0x562273,{'type':db['Sequelize'][_0xf120('0x2a')][_0xf120('0x2b')],'raw':!![]});})['then'](function(_0x478961){if(_0x478961){_0x17ad77['contact']=_0x478961[0x0];}if(typeof _0x17ad77[_0xf120('0x2c')]===_0xf120('0x26'))return;return getAgent(_0x17ad77['UserId']);})['then'](function(_0x1a6391){if(_0x1a6391){_0x17ad77[_0xf120('0x2d')]=util[_0xf120('0x2e')](_0xf120('0x2f'),_0x1a6391['name']);_0x17ad77[_0xf120('0x30')]=_0x1a6391;_0x17ad77[_0xf120('0x22')]=_0x52a05f;return request({'event':'incomingmessage','message':_0x17ad77});}else{return request({'event':_0xf120('0x31'),'message':_0x17ad77});}})['catch'](function(_0x6db54b){logger[_0xf120('0x20')](_0xf120('0x1f'),_0xf120('0x32'),_0x6db54b);});};}function afterCreateOfflineMessage(_0x11c318){return function(_0x462f5a){_0x462f5a=_0x462f5a[_0xf120('0x21')]({'plain':!![]});_0x462f5a[_0xf120('0x22')]=_0x11c318;_0x462f5a['motionChannel']=_0x11c318;_0x462f5a[_0xf120('0x24')]=_0xf120('0x33');return request({'event':_0x462f5a[_0xf120('0x24')],'message':_0x462f5a});};}function afterCreate(_0x5120c5,_0x51de03){return function(_0x56932d){_0x56932d=_0x56932d['get']({'plain':!![]});_0x56932d[_0xf120('0x22')]=_0x5120c5;_0x56932d[_0xf120('0x23')]=_0x5120c5;_0x56932d['event']=_0xf120('0x34');Promise[_0xf120('0x35')]()[_0xf120('0x1d')](function(){var _0x4cddae='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x56932d[_0xf120('0x28')];return db[_0xf120('0x36')]['query'](_0x4cddae,{'type':db[_0xf120('0x37')][_0xf120('0x2a')]['SELECT'],'raw':!![]});})[_0xf120('0x1d')](function(_0x1d9067){if(_0x1d9067){_0x56932d[_0xf120('0x38')]=_0x1d9067[0x0];}if(typeof _0x56932d['UserId']==='undefined')return;return getAgent(_0x56932d[_0xf120('0x2c')]);})[_0xf120('0x1d')](function(_0x59e308){if(_0x59e308){_0x56932d[_0xf120('0x2d')]=util['format'](_0xf120('0x2f'),_0x59e308[_0xf120('0x39')]);_0x56932d[_0xf120('0x30')]=_0x59e308;}return request({'event':_0x51de03,'message':_0x56932d});})['catch'](function(_0x2b523b){logger[_0xf120('0x20')](_0xf120('0x1f'),_0xf120('0x3a'),_0x2b523b);});};}function afterUpdate(_0x44f84b){return function(_0x424a65){var _0x32eb7f=_0x424a65[_0xf120('0x3b')](_0xf120('0x3c'))&&_0x424a65[_0xf120('0x3c')];var _0x1e7779=_0x424a65[_0xf120('0x3b')]('substatus');if(_0x32eb7f||_0x1e7779){var _0x81e76a=_0x32eb7f?_0xf120('0xf'):_0xf120('0x3d');var _0x535d30=_0x424a65[_0xf120('0x21')]({'plain':!![]});_0x535d30[_0xf120('0x22')]=_0x44f84b;_0x535d30['motionChannel']=_0x44f84b;_0x535d30[_0xf120('0x24')]=_0x32eb7f?'closed':_0xf120('0x3d');var _0x322116=_0xf120('0x27')+_0x535d30[_0xf120('0x28')];return db['sequelize'][_0xf120('0x29')](_0x322116,{'type':db['Sequelize']['QueryTypes'][_0xf120('0x2b')],'raw':!![]})[_0xf120('0x1d')](function(_0x529d30){if(_0x529d30){_0x535d30[_0xf120('0x38')]=_0x529d30[0x0];}if(typeof _0x535d30['UserId']===_0xf120('0x26'))return;return getAgent(_0x535d30[_0xf120('0x2c')]);})[_0xf120('0x1d')](function(_0x562838){if(_0x562838){_0x535d30[_0xf120('0x2d')]=util['format'](_0xf120('0x2f'),_0x562838[_0xf120('0x39')]);_0x535d30[_0xf120('0x30')]=_0x562838;}return request({'event':_0x81e76a,'message':_0x535d30});})[_0xf120('0x3e')](function(_0xd0ac2a){logger[_0xf120('0x20')](_0xf120('0x1f'),_0xf120('0x3f'),_0xd0ac2a);});}};}function getAgent(_0x4ad925){return db[_0xf120('0x40')][_0xf120('0x41')]({'where':{'id':_0x4ad925},'attributes':['id',_0xf120('0x39'),_0xf120('0x42'),_0xf120('0x43'),_0xf120('0x44')],'raw':!![]})[_0xf120('0x1d')](function(_0x378185){return _0x378185;});}exports[_0xf120('0x45')]=function(){for(var _0x4bcc44=0x0;_0x4bcc44<triggers[_0xf120('0x46')];_0x4bcc44+=0x1){if(db[_0xf120('0x47')](triggers[_0x4bcc44]['model'])){db[triggers[_0x4bcc44][_0xf120('0x48')]][_0xf120('0x49')](triggers[_0x4bcc44]['event'],triggers[_0x4bcc44][_0xf120('0x4a')](triggers[_0x4bcc44][_0xf120('0x22')][_0xf120('0x4b')](),triggers[_0x4bcc44][_0xf120('0x4c')]));}}};
\ No newline at end of file
index e1faeda..7f0c83d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x367d=['toLowerCase','clearBlockUser','isUndefined','blockedAt','updateAttributes','getLicense','role','agent','User','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','./license/util','voice','mail','chat','sms','whatsapp','openchannel','getChannels','isValidChannel'];(function(_0x258530,_0xbf9d9b){var _0x4dd0c8=function(_0x23d58c){while(--_0x23d58c){_0x258530['push'](_0x258530['shift']());}};_0x4dd0c8(++_0xbf9d9b);}(_0x367d,0xe9));var _0xd367=function(_0x5187a9,_0x265a3f){_0x5187a9=_0x5187a9-0x0;var _0x483672=_0x367d[_0x5187a9];return _0x483672;};'use strict';var _=require('lodash');var BPromise=require('bluebird');var db=require('../mysqldb')['db'];var util=require(_0xd367('0x0'));var channels=[_0xd367('0x1'),_0xd367('0x2'),_0xd367('0x3'),'fax',_0xd367('0x4'),_0xd367('0x5'),_0xd367('0x6')];exports[_0xd367('0x7')]=function(){return channels;};exports[_0xd367('0x8')]=function(_0xa2cf49){_0xa2cf49=_0xa2cf49[_0xd367('0x9')]();return _['includes'](channels,_0xa2cf49);};exports[_0xd367('0xa')]=function(_0x17ea83,_0x460287,_0x42fded,_0x5b2dec){var _0x237a4e={'loginAttempts':_0x460287,'blocked':_0x42fded};if(!_[_0xd367('0xb')](_0x5b2dec)){_0x237a4e[_0xd367('0xc')]=_0x5b2dec;}return _0x17ea83[_0xd367('0xd')](_0x237a4e);};exports[_0xd367('0xe')]=function(_0x1e8307){return new BPromise(function(_0x34c20c,_0x3ed0d3){var _0xcfdc13=0x0;if(_0x1e8307[_0xd367('0xf')]!==_0xd367('0x10')){_0x34c20c(_0x1e8307);}db[_0xd367('0x11')]['count']({'where':{'role':_0xd367('0x10'),'online':!![],'id':{'$ne':_0x1e8307['id']}}})[_0xd367('0x12')](function(_0x12c1d6){_0xcfdc13=_0x12c1d6;return util[_0xd367('0xe')]();})[_0xd367('0x12')](function(_0x4c5cc7){if(_0x4c5cc7&&_0x4c5cc7['agents']&&_0xcfdc13>=_0x4c5cc7[_0xd367('0x13')]){throw Error(_0xd367('0x14'));}_0x34c20c(_0x1e8307);})[_0xd367('0x15')](function(_0x1feafb){_0x3ed0d3(_0x1feafb);});});};
\ No newline at end of file
+var _0x102e=['then','agents','catch','bluebird','voice','chat','fax','sms','whatsapp','openchannel','getChannels','isValidChannel','includes','blockedAt','updateAttributes','getLicense','role','agent','User'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x102e,0x10d));var _0xe102=function(_0x25e92c,_0x59bb63){_0x25e92c=_0x25e92c-0x0;var _0x30f0bb=_0x102e[_0x25e92c];return _0x30f0bb;};'use strict';var _=require('lodash');var BPromise=require(_0xe102('0x0'));var db=require('../mysqldb')['db'];var util=require('./license/util');var channels=[_0xe102('0x1'),'mail',_0xe102('0x2'),_0xe102('0x3'),_0xe102('0x4'),_0xe102('0x5'),_0xe102('0x6')];exports[_0xe102('0x7')]=function(){return channels;};exports[_0xe102('0x8')]=function(_0x20d745){_0x20d745=_0x20d745['toLowerCase']();return _[_0xe102('0x9')](channels,_0x20d745);};exports['clearBlockUser']=function(_0x183491,_0x37d3e8,_0x4f5fad,_0x31ae66){var _0x2e9cba={'loginAttempts':_0x37d3e8,'blocked':_0x4f5fad};if(!_['isUndefined'](_0x31ae66)){_0x2e9cba[_0xe102('0xa')]=_0x31ae66;}return _0x183491[_0xe102('0xb')](_0x2e9cba);};exports[_0xe102('0xc')]=function(_0x3b538c){return new BPromise(function(_0x473ef2,_0x25c1db){var _0x501a37=0x0;if(_0x3b538c[_0xe102('0xd')]!==_0xe102('0xe')){_0x473ef2(_0x3b538c);}db[_0xe102('0xf')]['count']({'where':{'role':_0xe102('0xe'),'online':!![],'id':{'$ne':_0x3b538c['id']}}})['then'](function(_0x2bdc06){_0x501a37=_0x2bdc06;return util[_0xe102('0xc')]();})[_0xe102('0x10')](function(_0x5bee72){if(_0x5bee72&&_0x5bee72[_0xe102('0x11')]&&_0x501a37>=_0x5bee72[_0xe102('0x11')]){throw Error('Maximum\x20login\x20has\x20been\x20reached');}_0x473ef2(_0x3b538c);})[_0xe102('0x12')](function(_0x48c348){_0x25c1db(_0x48c348);});});};
\ No newline at end of file
index bff97fd..1b15753 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['stack','statusMessage','status','exports','util','../config/logger','api','message','inherits','Bad\x20Request','name','Not\x20Found','Message\x20sent\x20outside\x20a\x20valid\x20interval','Out\x20Of\x20Interval','error'];(function(_0xafebd3,_0x304588){var _0x3e06a7=function(_0x13bb3c){while(--_0x13bb3c){_0xafebd3['push'](_0xafebd3['shift']());}};_0x3e06a7(++_0x304588);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0xc4aa[_0x1caf6a];return _0x1bf493;};'use strict';var util=require(_0xac4a('0x0'));var logger=require(_0xac4a('0x1'))(_0xac4a('0x2'));var APIError=function(_0x351dd5,_0x275161){this[_0xac4a('0x3')]=_0x351dd5||'Internal\x20Server\x20Error';this['name']=_0x275161||'Error';util[_0xac4a('0x4')](APIError,Error);};var APIBadRequestError=function(_0x15b967){this[_0xac4a('0x3')]=_0x15b967||_0xac4a('0x5');this[_0xac4a('0x6')]=_0xac4a('0x5');util[_0xac4a('0x4')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x10525b){this['message']=_0x10525b||'Entity\x20not\x20found';this[_0xac4a('0x6')]=_0xac4a('0x7');util[_0xac4a('0x4')](APINotFoundError,APIError);};var APIOutOfIntervalError=function(_0x4f4146){this[_0xac4a('0x3')]=_0x4f4146||_0xac4a('0x8');this[_0xac4a('0x6')]='Out\x20Of\x20Interval';util[_0xac4a('0x4')](APIOutOfIntervalError,APIError);};function getStatusCode(_0x488e3c){switch(_0x488e3c){case _0xac4a('0x5'):return 0x190;case'Forbidden',_0xac4a('0x9'):return 0x193;case _0xac4a('0x7'):return 0x194;default:return 0x1f4;}}function getCustomStatusMessage(_0x24291d){if(_0x24291d==='Out\x20Of\x20Interval')return _0x24291d;return null;}function handleError(_0x21a79){return function(_0x68424a){logger[_0xac4a('0xa')](_0x68424a[_0xac4a('0xb')]);var _0x1b4313=getStatusCode(_0x68424a[_0xac4a('0x6')]);var _0x34bc01=getCustomStatusMessage(_0x68424a[_0xac4a('0x6')]);if(_0x68424a[_0xac4a('0x6')])delete _0x68424a[_0xac4a('0x6')];if(_0x34bc01)_0x21a79[_0xac4a('0xc')]=_0x34bc01;return _0x21a79[_0xac4a('0xd')](_0x1b4313)['send'](_0x68424a);};}module[_0xac4a('0xe')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APIOutOfIntervalError':APIOutOfIntervalError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
+var _0x814b=['statusMessage','status','send','exports','util','../config/logger','api','message','name','Error','inherits','Bad\x20Request','Entity\x20not\x20found','Not\x20Found','Message\x20sent\x20outside\x20a\x20valid\x20interval','Out\x20Of\x20Interval','error','stack'];(function(_0x1f1f97,_0x168119){var _0xa711cd=function(_0x1c67af){while(--_0x1c67af){_0x1f1f97['push'](_0x1f1f97['shift']());}};_0xa711cd(++_0x168119);}(_0x814b,0x1a2));var _0xb814=function(_0x5f46e7,_0x62f9f8){_0x5f46e7=_0x5f46e7-0x0;var _0x567e95=_0x814b[_0x5f46e7];return _0x567e95;};'use strict';var util=require(_0xb814('0x0'));var logger=require(_0xb814('0x1'))(_0xb814('0x2'));var APIError=function(_0x2f4ece,_0xfbb64b){this[_0xb814('0x3')]=_0x2f4ece||'Internal\x20Server\x20Error';this[_0xb814('0x4')]=_0xfbb64b||_0xb814('0x5');util[_0xb814('0x6')](APIError,Error);};var APIBadRequestError=function(_0x4237bc){this[_0xb814('0x3')]=_0x4237bc||_0xb814('0x7');this['name']=_0xb814('0x7');util[_0xb814('0x6')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x5c8539){this[_0xb814('0x3')]=_0x5c8539||_0xb814('0x8');this[_0xb814('0x4')]=_0xb814('0x9');util[_0xb814('0x6')](APINotFoundError,APIError);};var APIOutOfIntervalError=function(_0x21d4a5){this[_0xb814('0x3')]=_0x21d4a5||_0xb814('0xa');this[_0xb814('0x4')]=_0xb814('0xb');util[_0xb814('0x6')](APIOutOfIntervalError,APIError);};function getStatusCode(_0x4b5f14){switch(_0x4b5f14){case _0xb814('0x7'):return 0x190;case'Forbidden',_0xb814('0xb'):return 0x193;case _0xb814('0x9'):return 0x194;default:return 0x1f4;}}function getCustomStatusMessage(_0x35b10d){if(_0x35b10d===_0xb814('0xb'))return _0x35b10d;return null;}function handleError(_0x2ce718){return function(_0x3bde14){logger[_0xb814('0xc')](_0x3bde14[_0xb814('0xd')]);var _0xa0a2e5=getStatusCode(_0x3bde14[_0xb814('0x4')]);var _0x3f4881=getCustomStatusMessage(_0x3bde14[_0xb814('0x4')]);if(_0x3bde14[_0xb814('0x4')])delete _0x3bde14[_0xb814('0x4')];if(_0x3f4881)_0x2ce718[_0xb814('0xe')]=_0x3f4881;return _0x2ce718[_0xb814('0xf')](_0xa0a2e5)[_0xb814('0x10')](_0x3bde14);};}module[_0xb814('0x11')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APIOutOfIntervalError':APIOutOfIntervalError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
index d262ce2..88955f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5ab=['404','render','status','exports'];(function(_0x915a4c,_0x4ef567){var _0x1d0280=function(_0xb47f60){while(--_0xb47f60){_0x915a4c['push'](_0x915a4c['shift']());}};_0x1d0280(++_0x4ef567);}(_0xf5ab,0x117));var _0xbf5a=function(_0x488e29,_0x19a611){_0x488e29=_0x488e29-0x0;var _0x278d12=_0xf5ab[_0x488e29];return _0x278d12;};'use strict';module[_0xbf5a('0x0')][0x194]=function pageNotFound(_0xa4a39d,_0x59e500){var _0x325b66=_0xbf5a('0x1');var _0x1b90a3=0x194;var _0x14ac9e={'status':_0x1b90a3};_0x59e500['status'](_0x14ac9e['status']);_0x59e500[_0xbf5a('0x2')](_0x325b66,{},function(_0x467b58,_0x118fb4){if(_0x467b58){return _0x59e500['status'](_0x14ac9e[_0xbf5a('0x3')])['json'](_0x14ac9e);}_0x59e500['send'](_0x118fb4);});};
\ No newline at end of file
+var _0xbc9d=['exports','404','status','render','json'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xbc9d,0xb4));var _0xdbc9=function(_0x210466,_0x43dd0a){_0x210466=_0x210466-0x0;var _0x19ff5a=_0xbc9d[_0x210466];return _0x19ff5a;};'use strict';module[_0xdbc9('0x0')][0x194]=function pageNotFound(_0xbca678,_0x8aa82b){var _0x434f6e=_0xdbc9('0x1');var _0x4d5f79=0x194;var _0x4d8228={'status':_0x4d5f79};_0x8aa82b['status'](_0x4d8228[_0xdbc9('0x2')]);_0x8aa82b[_0xdbc9('0x3')](_0x434f6e,{},function(_0x3e63f1,_0x4a32b4){if(_0x3e63f1){return _0x8aa82b[_0xdbc9('0x2')](_0x4d8228[_0xdbc9('0x2')])[_0xdbc9('0x4')](_0x4d8228);}_0x8aa82b['send'](_0x4a32b4);});};
\ No newline at end of file
index a59425a..314e515 100644 (file)
@@ -152,11 +152,16 @@ Migration.prototype.final = function(resolve) {
 };
 
 module.exports = {
-  up: function(queryInterface /*, Sequelize */) {
+  up: function(queryInterface , Sequelize) {
     return new BPromise(function(resolve) {
       var migration = new Migration(queryInterface);
       // Add your migration code here
 
+      migration.addColumn('settings', 'filterFullName', {
+        type: Sequelize.BOOLEAN,
+        defaultValue: false,
+      })
+
       // START FINAL
       migration.final(resolve);
       // END FINAL
index 3128dca..5dd311f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','License','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','../api/cmList/cmList.model','VoicePrefix','UserProfile','UserProfileSection','UserProfileResource','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','hasOne','VoiceMail','userSetting','cascade','UserId','hasMany','VoiceRecording','Recordings','VoiceQueuesRt','Extensions','HopperFinals','CmHopperHistory','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteraction','MailInteraction','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsToMany','Groups','chat_group_has_users','CmContact','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','Team','user_has_teams','user_has_mail_interactions','FaxInteractions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','VoicePrefixes','ChatQueues','UserChatQueue','FaxQueues','SmsQueues','OpenchannelQueue','WhatsappQueues','CmList','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','ChanSpyId','VoiceContext','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperBlacks','JscriptySessions','TrunkId','belongsTo','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPauseId','Teams','BlackLists','voice_queues_has_cm_blacklists','Messages','mailbox','mailboxuser','VoiceCallReport','QueueCalls','uniqueid','VoiceAgentReport','AgentReports','Contact','MailAccountId','CloudProviderId','MailServerOut','restrict','Imap','Smtp','Disposition','Dispositions','Answers','Interactions','MailApplication','List','ListId','TemplateId','mandatoryDispositionPause','Agents','team_has_mail_queues','ContactId','mail_interaction_has_tags','Tags','ThroughTags','Users','MailInteractionId','Attachments','Interaction','ChatWebsiteId','Interval','MailQueueReport','Dashboard','CannedAnswer','FaxAccountId','Exntensions','TagId','FaxInteractionId','Account','Owner','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','team_has_openchannel_queues','ChatProactiveAction','ProactiveActions','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','ChatOfflineMessageId','team_has_chat_queues','ChatGroupId','CmContactId','HopperHistories','CmCompany','Company','cm_contact_has_tags','CmHopperAdditionalPhone','AdditionalPhones','CmHopperId','Campaign','OwnerId','CampaignId','All','OneAll','OneAny','Actions','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','CustomReportId','openchannel_interaction_has_tags','whatsapp_interaction_has_tags','CmContactHasItem','ItemType','ItemTypeId','Hopper','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','AnalyticCustomReport','Fields','MetricId','Configurations','Subjects','DescriptionId','FieldId','AccountId','Subject','SubjectId','Description','Field','SugarcrmField','Descriptions','VariableId','DeskAccount','ZendeskConfiguration','int_zendesk_configuration_has_tags','FreshdeskAccount','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','VtigerAccount','ServicenowField','ToId','JscriptyQuestionReport','JscriptyProject','ProjectId','MailQueues','OpenchannelQueues','team_has_whatsapp_queues','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','FromAgent','ToUserId','ToAgent','ToMailAccountId','ToAccount','FromChatWebsiteId','FromUserId','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','ToFaxQueueId','ToQueue','FromSmsAccountId','CmCustomField','CustomFields','voice_queues_has_cm_lists','userProfileId','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','WhatsappTransferReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','UserSetting','user','../config/environment','sequelize','lodash','motion2','xcall','xC@LL1234','127.0.0.1','utf8mb4','name','utf8','defaultsDeep','mysql','username','password','options','database','sequelizeHistory','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','ScreenRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerOut/mailServerOut.model','MailAccount','MailQueue','MailSubstatus','MailMessage','../api/mailMessage/mailMessage.model','../api/mailApplication/mailApplication.model','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','OpenchannelMessage','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','ChatInteraction','ChatMessage','ChatOfflineMessage','ChatQueue','ChatGroup','../api/chatGroup/chatGroup.model','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','ReportAgentPreview','Action','../api/action/action.model','Automation','../api/automation/automation.model','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','../api/condition/condition.model','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType','../api/contactItemType/contactItemType.model','../api/cmContactHasItem/cmContactHasItem.model','Template','../api/template/template.model','Trigger','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','VtigerField','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','Dynamics365Account','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','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','../api/squareOdbc/squareOdbc.model','SquareProject'];(function(_0x363ef8,_0x4ecb1a){var _0x148822=function(_0x232634){while(--_0x232634){_0x363ef8['push'](_0x363ef8['shift']());}};_0x148822(++_0x4ecb1a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'use strict';var config=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var jstz=require('jstz');var timezone=jstz['determine']();config[_0x0a9e('0x1')]=_['defaultsDeep'](config[_0x0a9e('0x1')],{'database':_0x0a9e('0x3'),'username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':_0x0a9e('0x9'),'collate':'utf8_general_ci'}}});config['sequelizeHistory']=_[_0x0a9e('0xa')](config['sequelizeHistory'],{'database':'motion2','username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':_0x0a9e('0xb'),'dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':'utf8','collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize']['database'],config[_0x0a9e('0x1')][_0x0a9e('0xc')],config[_0x0a9e('0x1')][_0x0a9e('0xd')],config[_0x0a9e('0x1')][_0x0a9e('0xe')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0x0a9e('0xf')],config[_0x0a9e('0x10')][_0x0a9e('0xc')],config[_0x0a9e('0x10')][_0x0a9e('0xd')],config[_0x0a9e('0x10')]['options'])};db[_0x0a9e('0x11')]=db['sequelize'][_0x0a9e('0x12')]('../api/user/user.model');db[_0x0a9e('0x13')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x14'));db['VoiceContext']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x15'));db[_0x0a9e('0x16')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x17'));db[_0x0a9e('0x18')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x19'));db[_0x0a9e('0x1a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x1b'));db['VoiceRecording']=db[_0x0a9e('0x1')]['import']('../api/voiceRecording/voiceRecording.model');db[_0x0a9e('0x1c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1d'));db['VoiceMail']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1e'));db[_0x0a9e('0x1f')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x20'));db['VoiceCallReport']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x21'));db[_0x0a9e('0x22')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x23'));db['VoiceAgentReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x24'));db[_0x0a9e('0x25')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x26'));db[_0x0a9e('0x27')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/memberReport/memberReport.model');db[_0x0a9e('0x28')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x29'));db['VoiceTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2a'));db[_0x0a9e('0x2b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2c'));db[_0x0a9e('0x2d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x2e'));db['UserChatQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2f'));db[_0x0a9e('0x30')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x31'));db[_0x0a9e('0x32')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x33'));db[_0x0a9e('0x34')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userSmsQueue/userSmsQueue.model');db[_0x0a9e('0x35')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x36'));db[_0x0a9e('0x37')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x38'));db[_0x0a9e('0x39')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailServerIn/mailServerIn.model');db['MailServerOut']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x3a'));db[_0x0a9e('0x3b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailAccount/mailAccount.model');db[_0x0a9e('0x3c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailQueue/mailQueue.model');db[_0x0a9e('0x3d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailSubstatus/mailSubstatus.model');db['MailInteraction']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailInteraction/mailInteraction.model');db[_0x0a9e('0x3e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x3f'));db['MailApplication']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x40'));db['MailQueueReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x41'));db['Dashboard']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x42'));db[_0x0a9e('0x43')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x44'));db[_0x0a9e('0x45')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x46'));db[_0x0a9e('0x47')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x48'));db['FaxInteraction']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x49'));db[_0x0a9e('0x4a')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4b'));db[_0x0a9e('0x4c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4d'));db[_0x0a9e('0x4e')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x4f'));db[_0x0a9e('0x50')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x51'));db[_0x0a9e('0x52')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/smsApplication/smsApplication.model');db[_0x0a9e('0x53')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x54'));db[_0x0a9e('0x55')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x56'));db[_0x0a9e('0x57')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x58'));db[_0x0a9e('0x59')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x5a'));db[_0x0a9e('0x5b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5c'));db[_0x0a9e('0x5d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/openchannelInteraction/openchannelInteraction.model');db[_0x0a9e('0x5e')]=db[_0x0a9e('0x1')]['import']('../api/openchannelMessage/openchannelMessage.model');db['OpenchannelQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5f'));db[_0x0a9e('0x60')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x61'));db[_0x0a9e('0x62')]=db['sequelize']['import']('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x0a9e('0x63')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatApplication/chatApplication.model');db[_0x0a9e('0x64')]=db[_0x0a9e('0x1')]['import']('../api/chatInteraction/chatInteraction.model');db[_0x0a9e('0x65')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatMessage/chatMessage.model');db[_0x0a9e('0x66')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0x0a9e('0x67')]=db[_0x0a9e('0x1')]['import']('../api/chatQueue/chatQueue.model');db[_0x0a9e('0x68')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x69'));db['ChatProactiveAction']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x6a'));db['CmCompany']=db['sequelize']['import'](_0x0a9e('0x6b'));db['CmContact']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6c'));db[_0x0a9e('0x6d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6e'));db[_0x0a9e('0x6f')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x70'));db[_0x0a9e('0x71')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x72'));db['CmHopperHistory']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperHistory/cmHopperHistory.model');db[_0x0a9e('0x73')]=db['sequelize'][_0x0a9e('0x12')]('../api/reportAgentPreview/reportAgentPreview.model');db['CmCustomField']=db['sequelize'][_0x0a9e('0x12')]('../api/cmCustomField/cmCustomField.model');db[_0x0a9e('0x74')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x75'));db[_0x0a9e('0x76')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x77'));db['CannedAnswer']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x78'));db['Disposition']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x79'));db[_0x0a9e('0x7a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x7b'));db['Interval']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x7c'));db[_0x0a9e('0x7d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x7e'));db[_0x0a9e('0x7f')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x80'));db['VoiceQueuesLog']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x81'));db[_0x0a9e('0x82')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x83'));db[_0x0a9e('0x84')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x85'));db[_0x0a9e('0x86')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x87'));db[_0x0a9e('0x88')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x89'));db['CmContactHasItem']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8a'));db['CmHopperAdditionalPhone']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model');db[_0x0a9e('0x8b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8c'));db[_0x0a9e('0x8d')]=db['sequelize']['import']('../api/trigger/trigger.model');db[_0x0a9e('0x8e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8f'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['IntegrationReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x92'));db['AnalyticCustomReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x93'));db[_0x0a9e('0x94')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x95'));db[_0x0a9e('0x96')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x97'));db[_0x0a9e('0x98')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/analyticMetric/analyticMetric.model');db[_0x0a9e('0x99')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9a'));db['AnalyticTreeReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9b'));db[_0x0a9e('0x9c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9d'));db[_0x0a9e('0x9e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9f'));db[_0x0a9e('0xa0')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSalesforceField/intSalesforceField.model');db[_0x0a9e('0xa1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSugarcrmAccount/intSugarcrmAccount.model');db[_0x0a9e('0xa2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa3'));db['SugarcrmField']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa4'));db['DeskAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xa5'));db[_0x0a9e('0xa6')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa7'));db[_0x0a9e('0xa8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa9'));db[_0x0a9e('0xaa')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xab'));db[_0x0a9e('0xac')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xad'));db[_0x0a9e('0xae')]=db['sequelize'][_0x0a9e('0x12')]('../api/intZohoField/intZohoField.model');db[_0x0a9e('0xaf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb0'));db['ZendeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb1'));db[_0x0a9e('0xb2')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb3'));db['FreshdeskAccount']=db['sequelize'][_0x0a9e('0x12')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db['FreshdeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb4'));db[_0x0a9e('0xb5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb6'));db['VtigerAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xb7'));db[_0x0a9e('0xb8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0x0a9e('0xb9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerField/intVtigerField.model');db[_0x0a9e('0xba')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbb'));db[_0x0a9e('0xbc')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbd'));db['ServicenowField']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intServicenowField/intServicenowField.model');db[_0x0a9e('0xbe')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0x0a9e('0xbf')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xc0'));db[_0x0a9e('0xc1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc2'));db[_0x0a9e('0xc3')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xc4'));db[_0x0a9e('0xc5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc6'));db[_0x0a9e('0xc7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc8'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['Network']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc9'));db[_0x0a9e('0xca')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcb'));db[_0x0a9e('0xcc')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0x0a9e('0xcd')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xce'));db['JscriptyQuestionReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcf'));db[_0x0a9e('0xd0')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xd1'));db[_0x0a9e('0xd2')]=db['sequelize']['import'](_0x0a9e('0xd3'));db[_0x0a9e('0xd4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd5'));db[_0x0a9e('0xd6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd7'));db['JscriptyProject']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xd8'));db[_0x0a9e('0xd9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xda'));db['SquareOdbc']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xdb'));db[_0x0a9e('0xdc')]=db[_0x0a9e('0x1')]['import']('../api/squareProject/squareProject.model');db[_0x0a9e('0xdd')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xde'));db[_0x0a9e('0xdf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe0'));db['Team']=db['sequelize'][_0x0a9e('0x12')]('../api/team/team.model');db[_0x0a9e('0xe1')]=db['sequelize'][_0x0a9e('0x12')]('../api/license/license.model');db['Campaign']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/campaign/campaign.model');db[_0x0a9e('0xe2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe3'));db[_0x0a9e('0xe4')]=db['sequelize']['import'](_0x0a9e('0xe5'));db[_0x0a9e('0xe6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe7'));db['MailTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailTransferReport/mailTransferReport.model');db[_0x0a9e('0xe8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe9'));db[_0x0a9e('0xea')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xeb'));db[_0x0a9e('0xec')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xed'));db[_0x0a9e('0xee')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xef'));db['CmList']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf0'));db[_0x0a9e('0xf1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/voicePrefix/voicePrefix.model');db[_0x0a9e('0xf2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfile/userProfile.model');db[_0x0a9e('0xf3')]=db['sequelize'][_0x0a9e('0x12')]('../api/userProfileSection/userProfileSection.model');db[_0x0a9e('0xf4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfileResource/userProfileResource.model');db[_0x0a9e('0xf5')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf6'));db[_0x0a9e('0xf7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xf8'));db[_0x0a9e('0xf9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfa'));db[_0x0a9e('0xfb')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfc'));db[_0x0a9e('0xfd')]=db[_0x0a9e('0x1')]['import']('../api/whatsappMessage/whatsappMessage.model');db[_0x0a9e('0xfe')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xff'));db['WhatsappTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x100'));db[_0x0a9e('0x101')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x102'));db[_0x0a9e('0x103')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x104'));db[_0x0a9e('0x105')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x106'));db[_0x0a9e('0x107')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x108'));db[_0x0a9e('0x109')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x10a'));db['UserSetting']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/user-setting/user-setting.model');db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db[_0x0a9e('0x10c')],{'as':'VoiceMail','onDelete':'cascade','foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db['UserSetting'],{'as':_0x0a9e('0x10d'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x111')],{'as':_0x0a9e('0x112'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x113'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x117'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x118'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x11a'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xfb')],{'as':_0x0a9e('0x11e'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xf5')],{'as':_0x0a9e('0x11f'),'foreignKey':_0x0a9e('0x120')});db[_0x0a9e('0x11')]['belongsTo'](db[_0x0a9e('0xf2')],{'as':'UserProfile','foreignKey':'userProfileId'});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x68')],{'as':_0x0a9e('0x122'),'through':_0x0a9e('0x123')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x125'),'through':_0x0a9e('0x126')});db[_0x0a9e('0x11')]['belongsToMany'](db['CmList'],{'as':_0x0a9e('0x127'),'through':_0x0a9e('0x128')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x12a')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'through':_0x0a9e('0x12b')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'through':'user_has_chat_interactions'});db['User']['belongsToMany'](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x12c'),'through':_0x0a9e('0x12d')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x53')],{'as':'SmsInteractions','through':_0x0a9e('0x12e')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'as':_0x0a9e('0x118'),'through':_0x0a9e('0x12f')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0xfb')],{'as':'WhatsappInteractions','through':_0x0a9e('0x130')});db['User'][_0x0a9e('0x121')](db['VoiceQueue'],{'as':_0x0a9e('0x131'),'through':_0x0a9e('0x2d'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0xf1')],{'as':_0x0a9e('0x132'),'through':_0x0a9e('0x109'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x3c')],{'as':'MailQueues','through':_0x0a9e('0x30'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x133'),'through':_0x0a9e('0x134'),'required':![],'hooks':!![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x4c')],{'as':_0x0a9e('0x135'),'through':_0x0a9e('0x32'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'as':_0x0a9e('0x136'),'through':_0x0a9e('0x34'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x137')],{'as':'OpenchannelQueues','through':_0x0a9e('0x35'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'as':_0x0a9e('0x138'),'through':_0x0a9e('0x37'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'through':_0x0a9e('0x128')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x13a'),'through':_0x0a9e('0x13b')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x45')],{'as':'FaxAccounts','through':_0x0a9e('0x13c')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x13d'),'through':_0x0a9e('0x13e')});db[_0x0a9e('0x11')]['belongsToMany'](db['OpenchannelAccount'],{'as':_0x0a9e('0x13f'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x141'),'through':_0x0a9e('0x142')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x143'),'through':_0x0a9e('0x144')});db[_0x0a9e('0x13')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':'SpiedAgents','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x145')});db[_0x0a9e('0x146')]['hasMany'](db[_0x0a9e('0x16')],{'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x16')][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x147'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x18')][_0x0a9e('0x121')](db[_0x0a9e('0x84')],{'as':_0x0a9e('0x148'),'through':_0x0a9e('0x149')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x14a'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db['CmHopper'],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'VoiceQueueId'});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x116')],{'as':'HopperHistories','foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db['CmHopperBlack'],{'as':_0x0a9e('0x14d'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':_0x0a9e('0x14e'),'foreignKey':_0x0a9e('0x14b')});db['VoiceQueue']['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a')][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':_0x0a9e('0x151'),'foreignKey':_0x0a9e('0x152')});db['VoiceQueue'][_0x0a9e('0x150')](db['Interval'],{'as':'Interval','foreignKey':_0x0a9e('0x153')});db['VoiceQueue'][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db['VoiceQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x127'),'through':'voice_queues_has_cm_lists'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':'UserVoiceQueue'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'as':_0x0a9e('0x155'),'through':_0x0a9e('0x105')});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x157')});db['VoiceRecording']['belongsTo'](db['User'],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x1c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x10c')]['hasMany'](db['VoiceMailMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'mailboxuser','sourceKey':_0x0a9e('0x159')});db[_0x0a9e('0x1f')][_0x0a9e('0x150')](db[_0x0a9e('0x10c')],{'foreignKey':_0x0a9e('0x15a'),'targetKey':_0x0a9e('0x159')});db[_0x0a9e('0x15b')][_0x0a9e('0x110')](db[_0x0a9e('0x25')],{'as':_0x0a9e('0x15c'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')]['hasMany'](db[_0x0a9e('0x15e')],{'as':_0x0a9e('0x15f'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db['MailServerIn'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x39')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':'CloudProvider','foreignKey':_0x0a9e('0x162'),'onDelete':'restrict'});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':_0x0a9e('0x103'),'foreignKey':_0x0a9e('0x162'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x3b')][_0x0a9e('0x10b')](db[_0x0a9e('0x39')],{'as':_0x0a9e('0x165'),'onDelete':_0x0a9e('0x10e')});db['MailAccount']['hasOne'](db[_0x0a9e('0x163')],{'as':_0x0a9e('0x166'),'onDelete':'cascade'});db['MailAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'MailAccountId','onDelete':_0x0a9e('0x10e')});db['MailAccount'][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':'MailAccountId'});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x3e')],{'as':'Messages','foreignKey':_0x0a9e('0x161')});db['MailAccount']['hasMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x161'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x8b')],{'as':_0x0a9e('0x8b'),'foreignKey':_0x0a9e('0x16e')});db[_0x0a9e('0x3b')]['belongsTo'](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x3b')]['belongsToMany'](db['User'],{'as':'Agents','through':_0x0a9e('0x13e')});db['MailQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x30')});db[_0x0a9e('0x3c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x11c')]['hasMany'](db[_0x0a9e('0x3e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':'MailInteractionId'});db[_0x0a9e('0x11c')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x11c')]['belongsTo'](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11c')]['belongsTo'](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12b'),'foreignKey':_0x0a9e('0x177')});db[_0x0a9e('0x3e')]['hasMany'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0x178'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':'User'});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x179'),'foreignKey':'MailInteractionId'});db['MailMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x60')],{'as':'ChatWebsite','foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':'ChatOfflineMessageId'});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')]['belongsTo'](db[_0x0a9e('0x3b')],{'onDelete':_0x0a9e('0x164')});db['MailApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':'TagId'});db['MailQueueReport']['belongsTo'](db['MailAccount'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':_0x0a9e('0x16d')});db['MailQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailInteraction'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailMessage'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{});db[_0x0a9e('0x17d')]['hasMany'](db[_0x0a9e('0x43')],{'as':'Items','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')]['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':'Answers','foreignKey':_0x0a9e('0x17f')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x147'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x180'),'onDelete':'cascade'});db[_0x0a9e('0x45')]['hasMany'](db['FaxMessage'],{'as':_0x0a9e('0x158')});db['FaxAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':'Trunk'});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x0a9e('0x45')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_fax_accounts'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'restrict'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x4c')],{'onDelete':'restrict'});db[_0x0a9e('0x47')]['belongsTo'](db[_0x0a9e('0x45')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['FaxInteraction'][_0x0a9e('0x110')](db[_0x0a9e('0x4a')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':'fax_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x185'),'as':'ThroughTags'});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12d'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x11')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x179'),'foreignKey':'FaxInteractionId'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':'Contact'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':'Account','foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db['User'],{'as':'Agents','through':_0x0a9e('0x32')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x187'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['FaxAccount'],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxInteraction'],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x4a')],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxQueue'],{});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x188'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db['SmsMessage'],{'as':_0x0a9e('0x158'),'foreignKey':_0x0a9e('0x188')});db['SmsAccount']['hasMany'](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x147'),'foreignKey':'SmsAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x50')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x142')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db['SmsApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{'onDelete':_0x0a9e('0x164')});db['SmsApplication']['belongsTo'](db[_0x0a9e('0x50')],{'onDelete':'restrict'});db[_0x0a9e('0x52')]['belongsTo'](db['Interval'],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x53')][_0x0a9e('0x110')](db[_0x0a9e('0x55')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x189')});db['SmsInteraction']['belongsTo'](db[_0x0a9e('0x50')],{'as':'Account','foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'sms_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x18a'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x53')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Users','through':_0x0a9e('0x12e'),'foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x55')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x57')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x34'),'foreignKey':_0x0a9e('0x18b')});db[_0x0a9e('0x57')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x59')]['hasMany'](db['Disposition'],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x59')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x16a'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','foreignKey':_0x0a9e('0x18d')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5b')],{'as':'Applications','foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x59')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x59')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x5b')]['belongsTo'](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db['OpenchannelQueue'],{'onDelete':'restrict','foreignKey':_0x0a9e('0x18e')});db['OpenchannelApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db['OpenchannelApplication']['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x5d')][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x18f')});db[_0x0a9e('0x5d')]['belongsTo'](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db['OpenchannelInteraction'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x5d')][_0x0a9e('0x150')](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x175')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':'user_has_openchannel_interactions','foreignKey':_0x0a9e('0x18f')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0x5d')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x179'),'foreignKey':'OpenchannelInteractionId'});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x35'),'foreignKey':_0x0a9e('0x18e')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x155')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x17a')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x191')],{'as':_0x0a9e('0x192')});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x63')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x65')],{'as':_0x0a9e('0x158')});db['ChatWebsite'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x60')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db['ChatWebsite'][_0x0a9e('0x150')](db['MailAccount'],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db['ChatWebsite'][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db['ChatWebsite'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x13b')});db['OpenchannelQueueReport']['belongsTo'](db['OpenchannelAccount'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x5d')],{});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db['OpenchannelMessage'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{});db['ChatApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x193'),'foreignKey':'UserId','onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x194'),'foreignKey':_0x0a9e('0x195'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':_0x0a9e('0x17a'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x64')][_0x0a9e('0x110')](db['ChatMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x64')]['belongsTo'](db['User'],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x199'),'foreignKey':_0x0a9e('0x197')});db['ChatMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x66')][_0x0a9e('0x110')](db['Attachment'],{'as':_0x0a9e('0x178'),'foreignKey':_0x0a9e('0x19a'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['ChatOfflineMessage']['belongsTo'](db['CmContact'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0x66')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0x0a9e('0x67')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserChatQueue','hooks':!![]});db[_0x0a9e('0x67')]['belongsToMany'](db['Team'],{'through':_0x0a9e('0x19b'),'as':'Teams'});db[_0x0a9e('0x68')][_0x0a9e('0x110')](db[_0x0a9e('0xcc')],{'as':'Messages','foreignKey':_0x0a9e('0x19c'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x68')]['belongsToMany'](db['User'],{'as':_0x0a9e('0x14a'),'through':_0x0a9e('0x123')});db[_0x0a9e('0x191')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':'ChatWebsiteId'});db['CmCompany'][_0x0a9e('0x110')](db[_0x0a9e('0x124')],{'as':'Contacts','foreignKey':'CompanyId'});db['CmContact']['hasMany'](db['CmContactHasItem'],{'as':'Phones','foreignKey':_0x0a9e('0x19d')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':'HopperFinals','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':'JscriptySessions','foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':'OpenchannelInteractions','foreignKey':'ContactId','onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db['SmsInteraction'],{'as':'SmsInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db['MailInteraction'],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x172'),'onDelete':'restrict'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x19f')],{'as':_0x0a9e('0x1a0'),'foreignKey':'CompanyId'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':'cascade'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':'cm_user_has_contacts'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'as':_0x0a9e('0x174'),'through':_0x0a9e('0x1a1')});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1a1'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x6d')][_0x0a9e('0x110')](db[_0x0a9e('0x1a2')],{'as':_0x0a9e('0x1a3'),'foreignKey':_0x0a9e('0x1a4')});db['CmHopper'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':'List','foreignKey':'ListId','onDelete':'cascade'});db['CmHopper'][_0x0a9e('0x150')](db['User'],{'as':'Agent','foreignKey':'UserId'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':_0x0a9e('0x194'),'foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':'CampaignId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x1a6')});db['CmHopperBlack'][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172'),'onDelete':'cascade'});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':'Queue','foreignKey':_0x0a9e('0x14b'),'onDelete':_0x0a9e('0x10e')});db['CmHopperBlack'][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':_0x0a9e('0x1a7'),'onDelete':'cascade'});db[_0x0a9e('0x76')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1a8'),'singular':_0x0a9e('0x1a9')},'foreignKey':'AutomationAllId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x76')]['hasMany'](db[_0x0a9e('0x7a')],{'as':{'plural':'Any','singular':_0x0a9e('0x1aa')},'foreignKey':'AutomationAnyId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['Automation'][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'AutomationId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x167')]['hasMany'](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1ac'),'onDelete':'cascade'});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db['Interval'],{'as':_0x0a9e('0x1ad'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x10e'),'hooks':!![],'required':![]});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x164')});db['Interval'][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x1ae'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')]['hasMany'](db['ChatApplication'],{'as':_0x0a9e('0x1af'),'foreignKey':'IntervalId'});db[_0x0a9e('0x17b')]['hasMany'](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x1b0'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x1b1'),'foreignKey':'IntervalId'});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x94')],{'foreignKey':_0x0a9e('0x1b2')});db['Schedule']['belongsTo'](db['AnalyticCustomReport'],{'foreignKey':_0x0a9e('0x1b3')});db[_0x0a9e('0x84')][_0x0a9e('0x121')](db[_0x0a9e('0x18')],{'as':'Mohs','through':_0x0a9e('0x149'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0x124')],{'through':'cm_contact_has_tags'});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'through':'chat_interaction_has_tags'});db['Tag'][_0x0a9e('0x121')](db['MailInteraction'],{'through':_0x0a9e('0x173')});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x53')],{'through':_0x0a9e('0x18a')});db['Tag']['belongsToMany'](db[_0x0a9e('0x11b')],{'through':_0x0a9e('0x185')});db[_0x0a9e('0x86')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'through':_0x0a9e('0x1b4')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0xfb')],{'through':_0x0a9e('0x1b5')});db[_0x0a9e('0x1b6')]['belongsTo'](db[_0x0a9e('0x88')],{'as':_0x0a9e('0x1b7'),'foreignKey':_0x0a9e('0x1b8')});db[_0x0a9e('0x1a2')][_0x0a9e('0x150')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x1b9'),'foreignKey':_0x0a9e('0x1a4')});db[_0x0a9e('0x1b6')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x19d')});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1ba'),'singular':_0x0a9e('0x1bb')},'foreignKey':_0x0a9e('0x1bc'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db['Condition'],{'as':{'plural':_0x0a9e('0x1bd'),'singular':_0x0a9e('0x1be')},'foreignKey':_0x0a9e('0x1bf'),'onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'TriggerId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x1c0')]['hasMany'](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'CustomReportId','hooks':!![]});db['AnalyticDefaultReport'][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':'DefaultReportId'});db[_0x0a9e('0x98')][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c2')});db['AnalyticFieldReport']['belongsTo'](db[_0x0a9e('0x98')],{'foreignKey':_0x0a9e('0x1c2')});db[_0x0a9e('0x9c')]['hasMany'](db[_0x0a9e('0x9e')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['SalesforceConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c4'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0x9e')]['hasMany'](db['SalesforceField'],{'as':'Descriptions','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x9e')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db['SalesforceConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x9c')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa0')][_0x0a9e('0x110')](db['SalesforceField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa0')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['SalesforceField'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa0')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xa1')][_0x0a9e('0x110')](db[_0x0a9e('0xa2')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa2')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa2')][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['SugarcrmConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0xa1')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['SugarcrmField']['hasMany'](db['SugarcrmField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db['SugarcrmField'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1cc')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmField'][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1cf')]['hasMany'](db[_0x0a9e('0xa6')],{'as':'Configurations','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa6')]['hasMany'](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'DescriptionId'});db['DeskConfiguration']['hasMany'](db['DeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':'FieldId'});db[_0x0a9e('0xa6')][_0x0a9e('0x150')](db[_0x0a9e('0x1cf')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'int_desk_configuration_has_tags'});db['DeskField'][_0x0a9e('0x110')](db['DeskField'],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xa8')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['DeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':'Field','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa8')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xaa')][_0x0a9e('0x110')](db[_0x0a9e('0xac')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Subjects','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db['ZohoConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xac')][_0x0a9e('0x150')](db[_0x0a9e('0xaa')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xae')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xaf')][_0x0a9e('0x110')](db['ZendeskConfiguration'],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d0')]['hasMany'](db[_0x0a9e('0xb2')],{'as':'Descriptions','foreignKey':'DescriptionId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Fields','foreignKey':'FieldId'});db[_0x0a9e('0x1d0')][_0x0a9e('0x150')](db[_0x0a9e('0xaf')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0x1d0')]['belongsToMany'](db['Tag'],{'through':_0x0a9e('0x1d1')});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Subject','foreignKey':'SubjectId'});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['ZendeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb2')][_0x0a9e('0x150')](db['Variable'],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d2')][_0x0a9e('0x110')](db[_0x0a9e('0x1d3')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d3')]['hasMany'](db['FreshdeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['FreshdeskConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x1d2')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['FreshdeskConfiguration'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1d4')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db['FreshdeskField'],{'as':'Description','foreignKey':'DescriptionId'});db['FreshdeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb5')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d5')]['hasMany'](db[_0x0a9e('0xb8')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xb8')]['hasMany'](db[_0x0a9e('0xb9')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db['VtigerConfiguration'][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb8')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Fields','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb8')][_0x0a9e('0x150')](db[_0x0a9e('0x1d5')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db['VtigerField']['hasMany'](db[_0x0a9e('0xb9')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb9')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xba')]['hasMany'](db[_0x0a9e('0xbc')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbc')]['hasMany'](db['ServicenowField'],{'as':_0x0a9e('0x1c4'),'foreignKey':'SubjectId'});db[_0x0a9e('0xbc')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xbc')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c1'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbc')][_0x0a9e('0x150')](db[_0x0a9e('0xba')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['ServicenowField'][_0x0a9e('0x110')](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d6')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d6')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cb'),'foreignKey':'FieldId'});db[_0x0a9e('0x1d6')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xbe')]['hasMany'](db[_0x0a9e('0xbf')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbe')][_0x0a9e('0x150')](db['CloudProvider'],{'as':_0x0a9e('0x103'),'foreignKey':'CloudProviderId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':'Subjects','onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['Dynamics365Configuration'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbf')][_0x0a9e('0x150')](db[_0x0a9e('0xbe')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['Dynamics365Field'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xc1')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['FreshsalesAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xc5')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db['FreshsalesField'],{'as':'Subjects','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cd'),'foreignKey':'DescriptionId'});db[_0x0a9e('0xc5')]['hasMany'](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1c1'),'foreignKey':'FieldId'});db[_0x0a9e('0xc5')]['belongsTo'](db[_0x0a9e('0xc3')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['FreshsalesField'][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['FreshsalesField']['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x60')],{});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':'ListId'});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{});db['ChatInternalMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':'FromId'});db['ChatInternalMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1d7')});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0x1d8')],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0xcd')],{'foreignKey':'SessionId','onDelete':_0x0a9e('0x10e')});db['SmsQueueReport']['belongsTo'](db[_0x0a9e('0x50')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0xd2')]['belongsTo'](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xd2')]['belongsTo'](db['SmsMessage'],{});db['SmsQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0x1d8')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db['JscriptyAnswerReport'],{'foreignKey':'ProjectId'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_teams'});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0x1a')],{'through':'TeamVoiceQueue','as':_0x0a9e('0x131')});db['Team']['belongsToMany'](db[_0x0a9e('0x3c')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x1db')});db[_0x0a9e('0x129')]['belongsToMany'](db['ChatQueue'],{'through':_0x0a9e('0x19b'),'as':'ChatQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db['FaxQueue'],{'through':_0x0a9e('0x187'),'as':'FaxQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x136')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x137')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x1dc')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'through':_0x0a9e('0x1dd'),'as':_0x0a9e('0x138')});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0xf1')],{'through':_0x0a9e('0x107'),'as':_0x0a9e('0x132')});db['Campaign'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db['CmHopperHistory'],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')]['hasMany'](db[_0x0a9e('0x6f')],{'as':'HopperBlacks','foreignKey':'CampaignId'});db[_0x0a9e('0x1a5')]['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['Trunk'],{'as':_0x0a9e('0x151'),'foreignKey':'TrunkBackupId'});db['Campaign'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['SquareProject'],{'as':_0x0a9e('0xdc'),'foreignKey':_0x0a9e('0x1de')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':'Lists','through':_0x0a9e('0x1df')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x1e0')});db[_0x0a9e('0xe4')][_0x0a9e('0x150')](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':_0x0a9e('0x19a')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db['MailMessage'],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e2'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0x1e1')]['belongsTo'](db['User'],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'foreignKey':'ToMailQueueId','as':'ToQueue'});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e7'),'as':_0x0a9e('0x1e8')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['ChatInteraction'],{});db[_0x0a9e('0xe8')]['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1e9'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xe8')]['belongsTo'](db[_0x0a9e('0x67')],{'foreignKey':_0x0a9e('0x1eb'),'as':'ToQueue'});db['ChatTransferReport']['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1ec'),'as':_0x0a9e('0x1e8')});db['FaxTransferReport'][_0x0a9e('0x150')](db['FaxMessage'],{});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{});db['FaxTransferReport']['belongsTo'](db[_0x0a9e('0x45')],{'foreignKey':_0x0a9e('0x1ed'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xea')]['belongsTo'](db['FaxQueue'],{'foreignKey':_0x0a9e('0x1ee'),'as':_0x0a9e('0x1ef')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'foreignKey':'ToFaxAccountId','as':_0x0a9e('0x1e8')});db[_0x0a9e('0xec')]['belongsTo'](db[_0x0a9e('0x5e')],{});db['OpenchannelTransferReport']['belongsTo'](db['OpenchannelInteraction'],{});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['OpenchannelAccount'],{'foreignKey':'FromOpenchannelAccountId','as':_0x0a9e('0x1e3')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{'foreignKey':'ToOpenchannelQueueId','as':'ToQueue'});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'foreignKey':'ToOpenchannelAccountId','as':'ToAccount'});db['SmsTransferReport']['belongsTo'](db[_0x0a9e('0x55')],{});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':_0x0a9e('0x1f0'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xee')]['belongsTo'](db['SmsQueue'],{'foreignKey':'ToSmsQueueId','as':_0x0a9e('0x1ef')});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':'ToSmsAccountId','as':'ToAccount'});db['CmList']['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x1f1')],{'as':_0x0a9e('0x1f2'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db['CmContact'],{'as':_0x0a9e('0x125'),'onDelete':'cascade','foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':'HopperHistory','foreignKey':'ListId'});db['CmList'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':'ListId'});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x1a')],{'as':'Queues','through':_0x0a9e('0x1f3')});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x128')});db[_0x0a9e('0xf1')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf1')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserVoicePrefix'});db[_0x0a9e('0xf1')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':'TeamVoicePrefix','as':_0x0a9e('0x155')});db[_0x0a9e('0xf2')][_0x0a9e('0x110')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'foreignKey':_0x0a9e('0x1f4')});db['UserProfile'][_0x0a9e('0x110')](db['UserProfileSection'],{'as':_0x0a9e('0x1f5'),'foreignKey':_0x0a9e('0x1f4'),'onDelete':_0x0a9e('0x10e')});db['UserProfileSection']['hasMany'](db['UserProfileResource'],{'as':_0x0a9e('0x1f6'),'foreignKey':_0x0a9e('0x1f7'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x1f8')});db['WhatsappAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xfd')],{'as':_0x0a9e('0x158'),'foreignKey':'WhatsappAccountId'});db[_0x0a9e('0xf7')]['hasMany'](db[_0x0a9e('0xfb')],{'as':'Interactions'});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['WhatsappApplication'],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db['WhatsappAccount'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xf7')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0xf7')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x144')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x101')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db['WhatsappAccount'],{'onDelete':_0x0a9e('0x164')});db['WhatsappApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0xf9')]['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['WhatsappInteraction'][_0x0a9e('0x110')](db['WhatsappMessage'],{'as':'Messages','onDelete':'cascade','foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0xfb')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x174')});db['WhatsappInteraction'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x175')});db[_0x0a9e('0xfb')]['belongsToMany'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x130'),'foreignKey':'WhatsappInteractionId'});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':_0x0a9e('0x160')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db['WhatsappInteraction'],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfd')]['belongsTo'](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{});db['WhatsappQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['WhatsappInteraction'],{});db['WhatsappQueueReport']['belongsTo'](db[_0x0a9e('0x101')],{});db[_0x0a9e('0xfe')]['belongsTo'](db['WhatsappMessage'],{});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['User'],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfd')],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfb')],{});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappAccount'],{'foreignKey':_0x0a9e('0x1fb'),'as':_0x0a9e('0x1e3')});db['WhatsappTransferReport']['belongsTo'](db[_0x0a9e('0xf7')],{'foreignKey':_0x0a9e('0x1fc'),'as':'ToAccount'});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappQueue'],{'foreignKey':_0x0a9e('0x1fd'),'as':_0x0a9e('0x1ef')});db['WhatsappTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':'FromAgent'});db[_0x0a9e('0x1fa')][_0x0a9e('0x150')](db['User'],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x37'),'foreignKey':'WhatsappQueueId'});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x1dd'),'as':'Teams'});db[_0x0a9e('0x1fe')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x1ff'),'foreignKey':_0x0a9e('0x10f'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x103')][_0x0a9e('0x10b')](db['Dynamics365Account'],{'as':_0x0a9e('0xbe'),'onDelete':_0x0a9e('0x164')});db['CloudProvider'][_0x0a9e('0x10b')](db['MailServerIn'],{'as':'Imap','onDelete':_0x0a9e('0x164')});db['CloudProvider']['hasOne'](db['MailServerOut'],{'as':'Smtp','onDelete':_0x0a9e('0x164')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0xa9e0=['SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','License','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','../api/cmList/cmList.model','VoicePrefix','UserProfile','UserProfileSection','UserProfileResource','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','hasOne','VoiceMail','userSetting','cascade','UserId','hasMany','VoiceRecording','Recordings','VoiceQueuesRt','Extensions','HopperFinals','CmHopperHistory','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteraction','MailInteraction','MailInteractions','WhatsappInteractions','UserNotifications','SenderId','belongsToMany','Groups','chat_group_has_users','CmContact','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','Team','user_has_teams','user_has_mail_interactions','FaxInteractions','user_has_fax_interactions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoiceQueues','VoicePrefixes','ChatQueues','UserChatQueue','FaxQueues','SmsQueues','OpenchannelQueue','WhatsappQueues','CmList','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','ChanSpyId','VoiceContext','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperBlacks','JscriptySessions','TrunkId','belongsTo','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPauseId','Teams','BlackLists','voice_queues_has_cm_blacklists','Messages','mailbox','mailboxuser','VoiceCallReport','QueueCalls','uniqueid','VoiceAgentReport','AgentReports','Contact','MailAccountId','CloudProviderId','MailServerOut','restrict','Imap','Smtp','Disposition','Dispositions','Answers','Interactions','MailApplication','List','ListId','TemplateId','mandatoryDispositionPause','Agents','team_has_mail_queues','ContactId','mail_interaction_has_tags','Tags','ThroughTags','Users','MailInteractionId','Attachments','Interaction','ChatWebsiteId','Interval','MailQueueReport','Dashboard','CannedAnswer','FaxAccountId','Exntensions','TagId','FaxInteractionId','Account','Owner','fax_interaction_has_tags','AttachmentId','team_has_fax_queues','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','team_has_openchannel_queues','ChatProactiveAction','ProactiveActions','Agent','Queue','ChatQueueId','Website','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','ChatOfflineMessageId','team_has_chat_queues','ChatGroupId','CmContactId','HopperHistories','CmCompany','Company','cm_contact_has_tags','CmHopperAdditionalPhone','AdditionalPhones','CmHopperId','Campaign','OwnerId','CampaignId','All','OneAll','OneAny','Actions','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','CustomReportId','openchannel_interaction_has_tags','whatsapp_interaction_has_tags','CmContactHasItem','ItemType','ItemTypeId','Hopper','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','AnalyticCustomReport','Fields','MetricId','Configurations','Subjects','DescriptionId','FieldId','AccountId','Subject','SubjectId','Description','Field','SugarcrmField','Descriptions','VariableId','DeskAccount','ZendeskConfiguration','int_zendesk_configuration_has_tags','FreshdeskAccount','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','VtigerAccount','ServicenowField','ToId','JscriptyQuestionReport','JscriptyProject','ProjectId','MailQueues','OpenchannelQueues','team_has_whatsapp_queues','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromAccount','FromAgent','ToUserId','ToAgent','ToMailAccountId','ToAccount','FromChatWebsiteId','FromUserId','ToChatQueueId','ToChatWebsiteId','FromFaxAccountId','ToFaxQueueId','ToQueue','FromSmsAccountId','CmCustomField','CustomFields','voice_queues_has_cm_lists','userProfileId','UserProfileSections','Resources','sectionId','WhatsappAccountId','WhatsappInteractionId','WhatsappTransferReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','UserSetting','user','../config/environment','sequelize','lodash','motion2','xcall','xC@LL1234','127.0.0.1','utf8mb4','name','utf8','defaultsDeep','mysql','username','password','options','database','sequelizeHistory','User','import','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','ScreenRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerOut/mailServerOut.model','MailAccount','MailQueue','MailSubstatus','MailMessage','../api/mailMessage/mailMessage.model','../api/mailApplication/mailApplication.model','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','OpenchannelMessage','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','ChatApplication','ChatInteraction','ChatMessage','ChatOfflineMessage','ChatQueue','ChatGroup','../api/chatGroup/chatGroup.model','../api/chatProactiveAction/chatProactiveAction.model','../api/cmCompany/cmCompany.model','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','ReportAgentPreview','Action','../api/action/action.model','Automation','../api/automation/automation.model','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','../api/condition/condition.model','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType','../api/contactItemType/contactItemType.model','../api/cmContactHasItem/cmContactHasItem.model','Template','../api/template/template.model','Trigger','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','../api/integrationReport/integrationReport.model','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','VtigerField','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','Dynamics365Account','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','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','../api/squareOdbc/squareOdbc.model','SquareProject'];(function(_0x29dda1,_0x508e13){var _0x21b0ef=function(_0x118906){while(--_0x118906){_0x29dda1['push'](_0x29dda1['shift']());}};_0x21b0ef(++_0x508e13);}(_0xa9e0,0x123));var _0x0a9e=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xa9e0[_0x311c35];return _0x5cc50c;};'use strict';var config=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var jstz=require('jstz');var timezone=jstz['determine']();config[_0x0a9e('0x1')]=_['defaultsDeep'](config[_0x0a9e('0x1')],{'database':_0x0a9e('0x3'),'username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':_0x0a9e('0x9'),'collate':'utf8_general_ci'}}});config['sequelizeHistory']=_[_0x0a9e('0xa')](config['sequelizeHistory'],{'database':'motion2','username':_0x0a9e('0x4'),'password':_0x0a9e('0x5'),'options':{'host':_0x0a9e('0x6'),'port':0xcea,'dialect':_0x0a9e('0xb'),'dialectOptions':{'charset':_0x0a9e('0x7')},'logging':![],'timezone':timezone[_0x0a9e('0x8')](),'define':{'charset':'utf8','collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize']['database'],config[_0x0a9e('0x1')][_0x0a9e('0xc')],config[_0x0a9e('0x1')][_0x0a9e('0xd')],config[_0x0a9e('0x1')][_0x0a9e('0xe')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0x0a9e('0xf')],config[_0x0a9e('0x10')][_0x0a9e('0xc')],config[_0x0a9e('0x10')][_0x0a9e('0xd')],config[_0x0a9e('0x10')]['options'])};db[_0x0a9e('0x11')]=db['sequelize'][_0x0a9e('0x12')]('../api/user/user.model');db[_0x0a9e('0x13')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x14'));db['VoiceContext']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x15'));db[_0x0a9e('0x16')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x17'));db[_0x0a9e('0x18')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x19'));db[_0x0a9e('0x1a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x1b'));db['VoiceRecording']=db[_0x0a9e('0x1')]['import']('../api/voiceRecording/voiceRecording.model');db[_0x0a9e('0x1c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1d'));db['VoiceMail']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x1e'));db[_0x0a9e('0x1f')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x20'));db['VoiceCallReport']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x21'));db[_0x0a9e('0x22')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x23'));db['VoiceAgentReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x24'));db[_0x0a9e('0x25')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x26'));db[_0x0a9e('0x27')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/memberReport/memberReport.model');db[_0x0a9e('0x28')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x29'));db['VoiceTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2a'));db[_0x0a9e('0x2b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2c'));db[_0x0a9e('0x2d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x2e'));db['UserChatQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x2f'));db[_0x0a9e('0x30')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x31'));db[_0x0a9e('0x32')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x33'));db[_0x0a9e('0x34')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userSmsQueue/userSmsQueue.model');db[_0x0a9e('0x35')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x36'));db[_0x0a9e('0x37')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x38'));db[_0x0a9e('0x39')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailServerIn/mailServerIn.model');db['MailServerOut']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x3a'));db[_0x0a9e('0x3b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailAccount/mailAccount.model');db[_0x0a9e('0x3c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailQueue/mailQueue.model');db[_0x0a9e('0x3d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailSubstatus/mailSubstatus.model');db['MailInteraction']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailInteraction/mailInteraction.model');db[_0x0a9e('0x3e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x3f'));db['MailApplication']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x40'));db['MailQueueReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x41'));db['Dashboard']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x42'));db[_0x0a9e('0x43')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x44'));db[_0x0a9e('0x45')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x46'));db[_0x0a9e('0x47')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x48'));db['FaxInteraction']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x49'));db[_0x0a9e('0x4a')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4b'));db[_0x0a9e('0x4c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x4d'));db[_0x0a9e('0x4e')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x4f'));db[_0x0a9e('0x50')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x51'));db[_0x0a9e('0x52')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/smsApplication/smsApplication.model');db[_0x0a9e('0x53')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x54'));db[_0x0a9e('0x55')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x56'));db[_0x0a9e('0x57')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x58'));db[_0x0a9e('0x59')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x5a'));db[_0x0a9e('0x5b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5c'));db[_0x0a9e('0x5d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/openchannelInteraction/openchannelInteraction.model');db[_0x0a9e('0x5e')]=db[_0x0a9e('0x1')]['import']('../api/openchannelMessage/openchannelMessage.model');db['OpenchannelQueue']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x5f'));db[_0x0a9e('0x60')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x61'));db[_0x0a9e('0x62')]=db['sequelize']['import']('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0x0a9e('0x63')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatApplication/chatApplication.model');db[_0x0a9e('0x64')]=db[_0x0a9e('0x1')]['import']('../api/chatInteraction/chatInteraction.model');db[_0x0a9e('0x65')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatMessage/chatMessage.model');db[_0x0a9e('0x66')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0x0a9e('0x67')]=db[_0x0a9e('0x1')]['import']('../api/chatQueue/chatQueue.model');db[_0x0a9e('0x68')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x69'));db['ChatProactiveAction']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x6a'));db['CmCompany']=db['sequelize']['import'](_0x0a9e('0x6b'));db['CmContact']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6c'));db[_0x0a9e('0x6d')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x6e'));db[_0x0a9e('0x6f')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x70'));db[_0x0a9e('0x71')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x72'));db['CmHopperHistory']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperHistory/cmHopperHistory.model');db[_0x0a9e('0x73')]=db['sequelize'][_0x0a9e('0x12')]('../api/reportAgentPreview/reportAgentPreview.model');db['CmCustomField']=db['sequelize'][_0x0a9e('0x12')]('../api/cmCustomField/cmCustomField.model');db[_0x0a9e('0x74')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x75'));db[_0x0a9e('0x76')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x77'));db['CannedAnswer']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x78'));db['Disposition']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x79'));db[_0x0a9e('0x7a')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x7b'));db['Interval']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x7c'));db[_0x0a9e('0x7d')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x7e'));db[_0x0a9e('0x7f')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x80'));db['VoiceQueuesLog']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x81'));db[_0x0a9e('0x82')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x83'));db[_0x0a9e('0x84')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x85'));db[_0x0a9e('0x86')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x87'));db[_0x0a9e('0x88')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x89'));db['CmContactHasItem']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8a'));db['CmHopperAdditionalPhone']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model');db[_0x0a9e('0x8b')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8c'));db[_0x0a9e('0x8d')]=db['sequelize']['import']('../api/trigger/trigger.model');db[_0x0a9e('0x8e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x8f'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['IntegrationReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x92'));db['AnalyticCustomReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x93'));db[_0x0a9e('0x94')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x95'));db[_0x0a9e('0x96')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x97'));db[_0x0a9e('0x98')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/analyticMetric/analyticMetric.model');db[_0x0a9e('0x99')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9a'));db['AnalyticTreeReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9b'));db[_0x0a9e('0x9c')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9d'));db[_0x0a9e('0x9e')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x9f'));db[_0x0a9e('0xa0')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSalesforceField/intSalesforceField.model');db[_0x0a9e('0xa1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intSugarcrmAccount/intSugarcrmAccount.model');db[_0x0a9e('0xa2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa3'));db['SugarcrmField']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa4'));db['DeskAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xa5'));db[_0x0a9e('0xa6')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xa7'));db[_0x0a9e('0xa8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xa9'));db[_0x0a9e('0xaa')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xab'));db[_0x0a9e('0xac')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xad'));db[_0x0a9e('0xae')]=db['sequelize'][_0x0a9e('0x12')]('../api/intZohoField/intZohoField.model');db[_0x0a9e('0xaf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb0'));db['ZendeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb1'));db[_0x0a9e('0xb2')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb3'));db['FreshdeskAccount']=db['sequelize'][_0x0a9e('0x12')]('../api/intFreshdeskAccount/intFreshdeskAccount.model');db['FreshdeskConfiguration']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xb4'));db[_0x0a9e('0xb5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xb6'));db['VtigerAccount']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xb7'));db[_0x0a9e('0xb8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0x0a9e('0xb9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intVtigerField/intVtigerField.model');db[_0x0a9e('0xba')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbb'));db[_0x0a9e('0xbc')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xbd'));db['ServicenowField']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intServicenowField/intServicenowField.model');db[_0x0a9e('0xbe')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0x0a9e('0xbf')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xc0'));db[_0x0a9e('0xc1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc2'));db[_0x0a9e('0xc3')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xc4'));db[_0x0a9e('0xc5')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc6'));db[_0x0a9e('0xc7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc8'));db[_0x0a9e('0x90')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x91'));db['Network']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xc9'));db[_0x0a9e('0xca')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcb'));db[_0x0a9e('0xcc')]=db['sequelize'][_0x0a9e('0x12')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0x0a9e('0xcd')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xce'));db['JscriptyQuestionReport']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xcf'));db[_0x0a9e('0xd0')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xd1'));db[_0x0a9e('0xd2')]=db['sequelize']['import'](_0x0a9e('0xd3'));db[_0x0a9e('0xd4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd5'));db[_0x0a9e('0xd6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xd7'));db['JscriptyProject']=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xd8'));db[_0x0a9e('0xd9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xda'));db['SquareOdbc']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xdb'));db[_0x0a9e('0xdc')]=db[_0x0a9e('0x1')]['import']('../api/squareProject/squareProject.model');db[_0x0a9e('0xdd')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xde'));db[_0x0a9e('0xdf')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe0'));db['Team']=db['sequelize'][_0x0a9e('0x12')]('../api/team/team.model');db[_0x0a9e('0xe1')]=db['sequelize'][_0x0a9e('0x12')]('../api/license/license.model');db['Campaign']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/campaign/campaign.model');db[_0x0a9e('0xe2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe3'));db[_0x0a9e('0xe4')]=db['sequelize']['import'](_0x0a9e('0xe5'));db[_0x0a9e('0xe6')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe7'));db['MailTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/mailTransferReport/mailTransferReport.model');db[_0x0a9e('0xe8')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xe9'));db[_0x0a9e('0xea')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xeb'));db[_0x0a9e('0xec')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0xed'));db[_0x0a9e('0xee')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xef'));db['CmList']=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf0'));db[_0x0a9e('0xf1')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/voicePrefix/voicePrefix.model');db[_0x0a9e('0xf2')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfile/userProfile.model');db[_0x0a9e('0xf3')]=db['sequelize'][_0x0a9e('0x12')]('../api/userProfileSection/userProfileSection.model');db[_0x0a9e('0xf4')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/userProfileResource/userProfileResource.model');db[_0x0a9e('0xf5')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xf6'));db[_0x0a9e('0xf7')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xf8'));db[_0x0a9e('0xf9')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfa'));db[_0x0a9e('0xfb')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0xfc'));db[_0x0a9e('0xfd')]=db[_0x0a9e('0x1')]['import']('../api/whatsappMessage/whatsappMessage.model');db[_0x0a9e('0xfe')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0xff'));db['WhatsappTransferReport']=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x100'));db[_0x0a9e('0x101')]=db['sequelize'][_0x0a9e('0x12')](_0x0a9e('0x102'));db[_0x0a9e('0x103')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x104'));db[_0x0a9e('0x105')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x106'));db[_0x0a9e('0x107')]=db[_0x0a9e('0x1')]['import'](_0x0a9e('0x108'));db[_0x0a9e('0x109')]=db[_0x0a9e('0x1')][_0x0a9e('0x12')](_0x0a9e('0x10a'));db['UserSetting']=db[_0x0a9e('0x1')][_0x0a9e('0x12')]('../api/user-setting/user-setting.model');db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db[_0x0a9e('0x10c')],{'as':'VoiceMail','onDelete':'cascade','foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x10b')](db['UserSetting'],{'as':_0x0a9e('0x10d'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x111')],{'as':_0x0a9e('0x112'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x113'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x117'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x118'),'foreignKey':_0x0a9e('0x10f')});db['User'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x11a'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xfb')],{'as':_0x0a9e('0x11e'),'foreignKey':'UserId'});db[_0x0a9e('0x11')][_0x0a9e('0x110')](db[_0x0a9e('0xf5')],{'as':_0x0a9e('0x11f'),'foreignKey':_0x0a9e('0x120')});db[_0x0a9e('0x11')]['belongsTo'](db[_0x0a9e('0xf2')],{'as':'UserProfile','foreignKey':'userProfileId'});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x68')],{'as':_0x0a9e('0x122'),'through':_0x0a9e('0x123')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x125'),'through':_0x0a9e('0x126')});db[_0x0a9e('0x11')]['belongsToMany'](db['CmList'],{'as':_0x0a9e('0x127'),'through':_0x0a9e('0x128')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x12a')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x11d'),'through':_0x0a9e('0x12b')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'through':'user_has_chat_interactions'});db['User']['belongsToMany'](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x12c'),'through':_0x0a9e('0x12d')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x53')],{'as':'SmsInteractions','through':_0x0a9e('0x12e')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'as':_0x0a9e('0x118'),'through':_0x0a9e('0x12f')});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0xfb')],{'as':'WhatsappInteractions','through':_0x0a9e('0x130')});db['User'][_0x0a9e('0x121')](db['VoiceQueue'],{'as':_0x0a9e('0x131'),'through':_0x0a9e('0x2d'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0xf1')],{'as':_0x0a9e('0x132'),'through':_0x0a9e('0x109'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x3c')],{'as':'MailQueues','through':_0x0a9e('0x30'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x133'),'through':_0x0a9e('0x134'),'required':![],'hooks':!![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x4c')],{'as':_0x0a9e('0x135'),'through':_0x0a9e('0x32'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'as':_0x0a9e('0x136'),'through':_0x0a9e('0x34'),'required':![]});db[_0x0a9e('0x11')]['belongsToMany'](db[_0x0a9e('0x137')],{'as':'OpenchannelQueues','through':_0x0a9e('0x35'),'required':![]});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'as':_0x0a9e('0x138'),'through':_0x0a9e('0x37'),'required':![]});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'through':_0x0a9e('0x128')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x13a'),'through':_0x0a9e('0x13b')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x45')],{'as':'FaxAccounts','through':_0x0a9e('0x13c')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x13d'),'through':_0x0a9e('0x13e')});db[_0x0a9e('0x11')]['belongsToMany'](db['OpenchannelAccount'],{'as':_0x0a9e('0x13f'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x11')][_0x0a9e('0x121')](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x141'),'through':_0x0a9e('0x142')});db['User'][_0x0a9e('0x121')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x143'),'through':_0x0a9e('0x144')});db[_0x0a9e('0x13')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':'SpiedAgents','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x145')});db[_0x0a9e('0x146')]['hasMany'](db[_0x0a9e('0x16')],{'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x16')][_0x0a9e('0x110')](db['VoiceExtension'],{'as':_0x0a9e('0x147'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x18')][_0x0a9e('0x121')](db[_0x0a9e('0x84')],{'as':_0x0a9e('0x148'),'through':_0x0a9e('0x149')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x2b')],{'as':_0x0a9e('0x14a'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db['CmHopper'],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':'VoiceQueueId'});db[_0x0a9e('0x1a')]['hasMany'](db[_0x0a9e('0x116')],{'as':'HopperHistories','foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db['CmHopperBlack'],{'as':_0x0a9e('0x14d'),'foreignKey':_0x0a9e('0x14b')});db[_0x0a9e('0x1a')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':_0x0a9e('0x14e'),'foreignKey':_0x0a9e('0x14b')});db['VoiceQueue']['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a')][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':_0x0a9e('0x151'),'foreignKey':_0x0a9e('0x152')});db['VoiceQueue'][_0x0a9e('0x150')](db['Interval'],{'as':'Interval','foreignKey':_0x0a9e('0x153')});db['VoiceQueue'][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db['VoiceQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x127'),'through':'voice_queues_has_cm_lists'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':'UserVoiceQueue'});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'as':_0x0a9e('0x155'),'through':_0x0a9e('0x105')});db[_0x0a9e('0x1a')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x157')});db['VoiceRecording']['belongsTo'](db['User'],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x1c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x10c')]['hasMany'](db['VoiceMailMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'mailboxuser','sourceKey':_0x0a9e('0x159')});db[_0x0a9e('0x1f')][_0x0a9e('0x150')](db[_0x0a9e('0x10c')],{'foreignKey':_0x0a9e('0x15a'),'targetKey':_0x0a9e('0x159')});db[_0x0a9e('0x15b')][_0x0a9e('0x110')](db[_0x0a9e('0x25')],{'as':_0x0a9e('0x15c'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')]['hasMany'](db[_0x0a9e('0x15e')],{'as':_0x0a9e('0x15f'),'foreignKey':_0x0a9e('0x15d'),'constraints':![]});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x15b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db['MailServerIn'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x39')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':'CloudProvider','foreignKey':_0x0a9e('0x162'),'onDelete':'restrict'});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x163')][_0x0a9e('0x150')](db[_0x0a9e('0x103')],{'as':_0x0a9e('0x103'),'foreignKey':_0x0a9e('0x162'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x3b')][_0x0a9e('0x10b')](db[_0x0a9e('0x39')],{'as':_0x0a9e('0x165'),'onDelete':_0x0a9e('0x10e')});db['MailAccount']['hasOne'](db[_0x0a9e('0x163')],{'as':_0x0a9e('0x166'),'onDelete':'cascade'});db['MailAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'MailAccountId','onDelete':_0x0a9e('0x10e')});db['MailAccount'][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':'MailAccountId'});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x3e')],{'as':'Messages','foreignKey':_0x0a9e('0x161')});db['MailAccount']['hasMany'](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x3b')][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x161'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x3b')][_0x0a9e('0x150')](db[_0x0a9e('0x8b')],{'as':_0x0a9e('0x8b'),'foreignKey':_0x0a9e('0x16e')});db[_0x0a9e('0x3b')]['belongsTo'](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x3b')]['belongsToMany'](db['User'],{'as':'Agents','through':_0x0a9e('0x13e')});db['MailQueue'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x30')});db[_0x0a9e('0x3c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x11c')]['hasMany'](db[_0x0a9e('0x3e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':'MailInteractionId'});db[_0x0a9e('0x11c')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x11c')]['belongsTo'](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11c')]['belongsTo'](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x173'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x11c')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12b'),'foreignKey':_0x0a9e('0x177')});db[_0x0a9e('0x3e')]['hasMany'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0x178'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':'User'});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x3e')][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{'as':_0x0a9e('0x179'),'foreignKey':'MailInteractionId'});db['MailMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'as':'Account','foreignKey':_0x0a9e('0x161')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x60')],{'as':'ChatWebsite','foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x3e')]['belongsTo'](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':'ChatOfflineMessageId'});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x16b')]['belongsTo'](db[_0x0a9e('0x3b')],{'onDelete':_0x0a9e('0x164')});db['MailApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x16b')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':'TagId'});db['MailQueueReport']['belongsTo'](db['MailAccount'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':_0x0a9e('0x16d')});db['MailQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailInteraction'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db['MailMessage'],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x17c')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{});db[_0x0a9e('0x17d')]['hasMany'](db[_0x0a9e('0x43')],{'as':'Items','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')]['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':'Answers','foreignKey':_0x0a9e('0x17f')});db['FaxAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x147'),'foreignKey':'FaxAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x45')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x180'),'onDelete':'cascade'});db[_0x0a9e('0x45')]['hasMany'](db['FaxMessage'],{'as':_0x0a9e('0x158')});db['FaxAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x28')],{'as':'Trunk'});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x45')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':'mandatoryDispositionPauseId'});db[_0x0a9e('0x45')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_fax_accounts'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'restrict'});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x4c')],{'onDelete':'restrict'});db[_0x0a9e('0x47')]['belongsTo'](db[_0x0a9e('0x45')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x47')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['FaxInteraction'][_0x0a9e('0x110')](db[_0x0a9e('0x4a')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x11b')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':'fax_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x185'),'as':'ThroughTags'});db[_0x0a9e('0x11b')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x12d'),'foreignKey':_0x0a9e('0x182')});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x11')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{'as':_0x0a9e('0x179'),'foreignKey':'FaxInteractionId'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':'Contact'});db[_0x0a9e('0x4a')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['FaxMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'as':'Account','foreignKey':_0x0a9e('0x17f')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db['User'],{'as':'Agents','through':_0x0a9e('0x32')});db[_0x0a9e('0x4c')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x187'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['FaxAccount'],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxInteraction'],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x4a')],{});db[_0x0a9e('0x4e')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['FaxQueueReport'][_0x0a9e('0x150')](db['FaxQueue'],{});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x188'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db['SmsMessage'],{'as':_0x0a9e('0x158'),'foreignKey':_0x0a9e('0x188')});db['SmsAccount']['hasMany'](db[_0x0a9e('0x53')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x50')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x147'),'foreignKey':'SmsAccountId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x50')][_0x0a9e('0x150')](db['Pause'],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x50')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x142')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db['User'],{'onDelete':_0x0a9e('0x164')});db['SmsApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{'onDelete':_0x0a9e('0x164')});db['SmsApplication']['belongsTo'](db[_0x0a9e('0x50')],{'onDelete':'restrict'});db[_0x0a9e('0x52')]['belongsTo'](db['Interval'],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x52')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x53')][_0x0a9e('0x110')](db[_0x0a9e('0x55')],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x189')});db['SmsInteraction']['belongsTo'](db[_0x0a9e('0x50')],{'as':'Account','foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x53')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'sms_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x53')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x18a'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x53')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Users','through':_0x0a9e('0x12e'),'foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x55')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0x0a9e('0x189')});db[_0x0a9e('0x55')]['belongsTo'](db[_0x0a9e('0x50')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x188')});db[_0x0a9e('0x57')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x34'),'foreignKey':_0x0a9e('0x18b')});db[_0x0a9e('0x57')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x155')});db[_0x0a9e('0x59')]['hasMany'](db['Disposition'],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x59')][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':_0x0a9e('0x16a'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','foreignKey':_0x0a9e('0x18d')});db['OpenchannelAccount'][_0x0a9e('0x110')](db[_0x0a9e('0x5b')],{'as':'Applications','foreignKey':_0x0a9e('0x18d'),'onDelete':_0x0a9e('0x10e')});db['OpenchannelAccount'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x59')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0x59')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x140')});db[_0x0a9e('0x5b')]['belongsTo'](db['User'],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db['OpenchannelQueue'],{'onDelete':'restrict','foreignKey':_0x0a9e('0x18e')});db['OpenchannelApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x5b')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x153')});db['OpenchannelApplication']['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x5d')][_0x0a9e('0x110')](db[_0x0a9e('0x5e')],{'as':'Messages','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x18f')});db[_0x0a9e('0x5d')]['belongsTo'](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db['OpenchannelInteraction'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x5d')][_0x0a9e('0x150')](db['User'],{'as':'Owner','foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x174')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db['Tag'],{'through':'openchannel_interaction_has_tags','as':_0x0a9e('0x175')});db[_0x0a9e('0x5d')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':'user_has_openchannel_interactions','foreignKey':_0x0a9e('0x18f')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160')});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0x5d')],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x179'),'foreignKey':'OpenchannelInteractionId'});db[_0x0a9e('0x5e')]['belongsTo'](db[_0x0a9e('0xe4')],{'as':_0x0a9e('0xe4'),'foreignKey':_0x0a9e('0x186')});db['OpenchannelMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x18d')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x35'),'foreignKey':_0x0a9e('0x18e')});db[_0x0a9e('0x137')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x155')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x17e')],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x17a')});db['ChatWebsite'][_0x0a9e('0x110')](db[_0x0a9e('0x191')],{'as':_0x0a9e('0x192')});db[_0x0a9e('0x60')]['hasMany'](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x16a')});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x63')],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x17a'),'onDelete':'cascade'});db[_0x0a9e('0x60')][_0x0a9e('0x110')](db[_0x0a9e('0x65')],{'as':_0x0a9e('0x158')});db['ChatWebsite'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x60')][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db['ChatWebsite'][_0x0a9e('0x150')](db['MailAccount'],{'as':_0x0a9e('0x3b'),'foreignKey':_0x0a9e('0x161')});db['ChatWebsite'][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':_0x0a9e('0x16f'),'foreignKey':_0x0a9e('0x154')});db['ChatWebsite'][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x13b')});db['OpenchannelQueueReport']['belongsTo'](db['OpenchannelAccount'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x5d')],{});db['OpenchannelQueueReport'][_0x0a9e('0x150')](db['OpenchannelMessage'],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0x62')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{});db['ChatApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x193'),'foreignKey':'UserId','onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{'as':_0x0a9e('0x194'),'foreignKey':_0x0a9e('0x195'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':_0x0a9e('0x17a'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x63')][_0x0a9e('0x150')](db[_0x0a9e('0x86')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x181')});db[_0x0a9e('0x64')][_0x0a9e('0x110')](db['ChatMessage'],{'as':_0x0a9e('0x158'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x64')]['belongsTo'](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x64')]['belongsTo'](db['User'],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x174')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x198'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x64')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x199'),'foreignKey':_0x0a9e('0x197')});db['ChatMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':'cascade','as':_0x0a9e('0x11')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':'Contact','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x197')});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0xe4')],{'as':'Attachment','foreignKey':'AttachmentId'});db[_0x0a9e('0x65')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x17a')});db[_0x0a9e('0x66')][_0x0a9e('0x110')](db['Attachment'],{'as':_0x0a9e('0x178'),'foreignKey':_0x0a9e('0x19a'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['ChatOfflineMessage']['belongsTo'](db['CmContact'],{'onDelete':_0x0a9e('0x10e'),'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0x66')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0x0a9e('0x67')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserChatQueue','hooks':!![]});db[_0x0a9e('0x67')]['belongsToMany'](db['Team'],{'through':_0x0a9e('0x19b'),'as':'Teams'});db[_0x0a9e('0x68')][_0x0a9e('0x110')](db[_0x0a9e('0xcc')],{'as':'Messages','foreignKey':_0x0a9e('0x19c'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x68')]['belongsToMany'](db['User'],{'as':_0x0a9e('0x14a'),'through':_0x0a9e('0x123')});db[_0x0a9e('0x191')][_0x0a9e('0x150')](db[_0x0a9e('0x60')],{'as':_0x0a9e('0x196'),'foreignKey':'ChatWebsiteId'});db['CmCompany'][_0x0a9e('0x110')](db[_0x0a9e('0x124')],{'as':'Contacts','foreignKey':'CompanyId'});db['CmContact']['hasMany'](db['CmContactHasItem'],{'as':'Phones','foreignKey':_0x0a9e('0x19d')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':'HopperFinals','foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'as':'JscriptySessions','foreignKey':_0x0a9e('0x172')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x5d')],{'as':'OpenchannelInteractions','foreignKey':'ContactId','onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db[_0x0a9e('0x64')],{'as':_0x0a9e('0x119'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db['CmContact'][_0x0a9e('0x110')](db['SmsInteraction'],{'as':'SmsInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db[_0x0a9e('0x11b')],{'as':'FaxInteractions','foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x124')][_0x0a9e('0x110')](db['MailInteraction'],{'as':_0x0a9e('0x11d'),'foreignKey':_0x0a9e('0x172'),'onDelete':'restrict'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x19f')],{'as':_0x0a9e('0x1a0'),'foreignKey':'CompanyId'});db[_0x0a9e('0x124')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':'cascade'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db['User'],{'as':_0x0a9e('0x176'),'through':'cm_user_has_contacts'});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'as':_0x0a9e('0x174'),'through':_0x0a9e('0x1a1')});db[_0x0a9e('0x124')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1a1'),'as':_0x0a9e('0x175')});db[_0x0a9e('0x6d')][_0x0a9e('0x110')](db[_0x0a9e('0x1a2')],{'as':_0x0a9e('0x1a3'),'foreignKey':_0x0a9e('0x1a4')});db['CmHopper'][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':'List','foreignKey':'ListId','onDelete':'cascade'});db['CmHopper'][_0x0a9e('0x150')](db['User'],{'as':'Agent','foreignKey':'UserId'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':_0x0a9e('0x194'),'foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':'CampaignId','onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6d')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x1a6')});db['CmHopperBlack'][_0x0a9e('0x150')](db['CmContact'],{'as':'Contact','foreignKey':_0x0a9e('0x172'),'onDelete':'cascade'});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x6f')][_0x0a9e('0x150')](db[_0x0a9e('0x1a')],{'as':'Queue','foreignKey':_0x0a9e('0x14b'),'onDelete':_0x0a9e('0x10e')});db['CmHopperBlack'][_0x0a9e('0x150')](db[_0x0a9e('0x1a5')],{'as':_0x0a9e('0x1a5'),'foreignKey':_0x0a9e('0x1a7'),'onDelete':'cascade'});db[_0x0a9e('0x76')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1a8'),'singular':_0x0a9e('0x1a9')},'foreignKey':'AutomationAllId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x76')]['hasMany'](db[_0x0a9e('0x7a')],{'as':{'plural':'Any','singular':_0x0a9e('0x1aa')},'foreignKey':'AutomationAnyId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db['Automation'][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'AutomationId','onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x167')]['hasMany'](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1ac'),'onDelete':'cascade'});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db['Interval'],{'as':_0x0a9e('0x1ad'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x10e'),'hooks':!![],'required':![]});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'foreignKey':_0x0a9e('0x153'),'onDelete':_0x0a9e('0x164')});db['Interval'][_0x0a9e('0x110')](db[_0x0a9e('0x16b')],{'as':_0x0a9e('0x1ae'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')]['hasMany'](db['ChatApplication'],{'as':_0x0a9e('0x1af'),'foreignKey':'IntervalId'});db[_0x0a9e('0x17b')]['hasMany'](db[_0x0a9e('0x47')],{'as':_0x0a9e('0x1b0'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x17b')][_0x0a9e('0x110')](db[_0x0a9e('0x52')],{'as':_0x0a9e('0x1b1'),'foreignKey':'IntervalId'});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{});db['Schedule'][_0x0a9e('0x150')](db[_0x0a9e('0x94')],{'foreignKey':_0x0a9e('0x1b2')});db['Schedule']['belongsTo'](db['AnalyticCustomReport'],{'foreignKey':_0x0a9e('0x1b3')});db[_0x0a9e('0x84')][_0x0a9e('0x121')](db[_0x0a9e('0x18')],{'as':'Mohs','through':_0x0a9e('0x149'),'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0x124')],{'through':'cm_contact_has_tags'});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x64')],{'through':'chat_interaction_has_tags'});db['Tag'][_0x0a9e('0x121')](db['MailInteraction'],{'through':_0x0a9e('0x173')});db['Tag'][_0x0a9e('0x121')](db[_0x0a9e('0x53')],{'through':_0x0a9e('0x18a')});db['Tag']['belongsToMany'](db[_0x0a9e('0x11b')],{'through':_0x0a9e('0x185')});db[_0x0a9e('0x86')][_0x0a9e('0x121')](db['OpenchannelInteraction'],{'through':_0x0a9e('0x1b4')});db[_0x0a9e('0x86')]['belongsToMany'](db[_0x0a9e('0xfb')],{'through':_0x0a9e('0x1b5')});db[_0x0a9e('0x1b6')]['belongsTo'](db[_0x0a9e('0x88')],{'as':_0x0a9e('0x1b7'),'foreignKey':_0x0a9e('0x1b8')});db[_0x0a9e('0x1a2')][_0x0a9e('0x150')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x1b9'),'foreignKey':_0x0a9e('0x1a4')});db[_0x0a9e('0x1b6')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x19d')});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x7a')],{'as':{'plural':_0x0a9e('0x1ba'),'singular':_0x0a9e('0x1bb')},'foreignKey':_0x0a9e('0x1bc'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db['Condition'],{'as':{'plural':_0x0a9e('0x1bd'),'singular':_0x0a9e('0x1be')},'foreignKey':_0x0a9e('0x1bf'),'onDelete':'cascade','hooks':!![]});db[_0x0a9e('0x8d')][_0x0a9e('0x110')](db[_0x0a9e('0x74')],{'as':_0x0a9e('0x1ab'),'foreignKey':'TriggerId','onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x1c0')]['hasMany'](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'CustomReportId','hooks':!![]});db['AnalyticDefaultReport'][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':'DefaultReportId'});db[_0x0a9e('0x98')][_0x0a9e('0x110')](db[_0x0a9e('0x99')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c2')});db['AnalyticFieldReport']['belongsTo'](db[_0x0a9e('0x98')],{'foreignKey':_0x0a9e('0x1c2')});db[_0x0a9e('0x9c')]['hasMany'](db[_0x0a9e('0x9e')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['SalesforceConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c4'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0x9e')]['hasMany'](db['SalesforceField'],{'as':'Descriptions','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x9e')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db['SalesforceConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x9c')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa0')][_0x0a9e('0x110')](db['SalesforceField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa0')]['hasMany'](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['SalesforceField'][_0x0a9e('0x110')](db[_0x0a9e('0xa0')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa0')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xa1')][_0x0a9e('0x110')](db[_0x0a9e('0xa2')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa2')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa2')][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['SugarcrmConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0xa1')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['SugarcrmField']['hasMany'](db['SugarcrmField'],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db['SugarcrmField'][_0x0a9e('0x110')](db[_0x0a9e('0x1cc')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1cc')]['hasMany'](db[_0x0a9e('0x1cc')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['SugarcrmField'][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1cf')]['hasMany'](db[_0x0a9e('0xa6')],{'as':'Configurations','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xa6')]['hasMany'](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'DescriptionId'});db['DeskConfiguration']['hasMany'](db['DeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':'FieldId'});db[_0x0a9e('0xa6')][_0x0a9e('0x150')](db[_0x0a9e('0x1cf')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xa6')]['belongsToMany'](db[_0x0a9e('0x86')],{'through':'int_desk_configuration_has_tags'});db['DeskField'][_0x0a9e('0x110')](db['DeskField'],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xa8')][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['DeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xa8')],{'as':'Field','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xa8')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xaa')][_0x0a9e('0x110')](db[_0x0a9e('0xac')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Subjects','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xac')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cd'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c5')});db['ZohoConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c1'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xac')][_0x0a9e('0x150')](db[_0x0a9e('0xaa')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1c8'),'foreignKey':'SubjectId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':'Description','foreignKey':'DescriptionId'});db[_0x0a9e('0xae')][_0x0a9e('0x110')](db[_0x0a9e('0xae')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xae')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xaf')][_0x0a9e('0x110')](db['ZendeskConfiguration'],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':'AccountId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d0')]['hasMany'](db[_0x0a9e('0xb2')],{'as':'Descriptions','foreignKey':'DescriptionId'});db['ZendeskConfiguration'][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Fields','foreignKey':'FieldId'});db[_0x0a9e('0x1d0')][_0x0a9e('0x150')](db[_0x0a9e('0xaf')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0x1d0')]['belongsToMany'](db['Tag'],{'through':_0x0a9e('0x1d1')});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db['ZendeskField'],{'as':'Subject','foreignKey':'SubjectId'});db[_0x0a9e('0xb2')][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['ZendeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb2')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb2')][_0x0a9e('0x150')](db['Variable'],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d2')][_0x0a9e('0x110')](db[_0x0a9e('0x1d3')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1c4'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d3')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d3')]['hasMany'](db['FreshdeskField'],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db['FreshdeskConfiguration'][_0x0a9e('0x150')](db[_0x0a9e('0x1d2')],{'as':'Account','foreignKey':_0x0a9e('0x1c7')});db['FreshdeskConfiguration'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1d4')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xb5')][_0x0a9e('0x110')](db['FreshdeskField'],{'as':'Description','foreignKey':'DescriptionId'});db['FreshdeskField'][_0x0a9e('0x110')](db[_0x0a9e('0xb5')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb5')]['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0x1d5')]['hasMany'](db[_0x0a9e('0xb8')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xb8')]['hasMany'](db[_0x0a9e('0xb9')],{'as':_0x0a9e('0x1c4'),'foreignKey':_0x0a9e('0x1c9')});db['VtigerConfiguration'][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb8')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Fields','foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb8')][_0x0a9e('0x150')](db[_0x0a9e('0x1d5')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db[_0x0a9e('0xb9')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db['VtigerField']['hasMany'](db[_0x0a9e('0xb9')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xb9')][_0x0a9e('0x110')](db['VtigerField'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xb9')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db[_0x0a9e('0xba')]['hasMany'](db[_0x0a9e('0xbc')],{'as':_0x0a9e('0x1c3'),'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbc')]['hasMany'](db['ServicenowField'],{'as':_0x0a9e('0x1c4'),'foreignKey':'SubjectId'});db[_0x0a9e('0xbc')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cd'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xbc')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c1'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbc')][_0x0a9e('0x150')](db[_0x0a9e('0xba')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['ServicenowField'][_0x0a9e('0x110')](db[_0x0a9e('0x1d6')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0x1d6')]['hasMany'](db[_0x0a9e('0x1d6')],{'as':'Description','foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0x1d6')][_0x0a9e('0x110')](db['ServicenowField'],{'as':_0x0a9e('0x1cb'),'foreignKey':'FieldId'});db[_0x0a9e('0x1d6')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':'VariableId'});db[_0x0a9e('0xbe')]['hasMany'](db[_0x0a9e('0xbf')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xbe')][_0x0a9e('0x150')](db['CloudProvider'],{'as':_0x0a9e('0x103'),'foreignKey':'CloudProviderId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':'Subjects','onDelete':'cascade','foreignKey':'SubjectId'});db[_0x0a9e('0xbf')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1cd'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c5')});db['Dynamics365Configuration'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':'Fields','onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xbf')][_0x0a9e('0x150')](db[_0x0a9e('0xbe')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1c7')});db['Dynamics365Field'][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1c8'),'foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db[_0x0a9e('0xc1')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db[_0x0a9e('0xc1')][_0x0a9e('0x110')](db['Dynamics365Field'],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db[_0x0a9e('0xc1')][_0x0a9e('0x150')](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['FreshsalesAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xc5')],{'as':_0x0a9e('0x1c3'),'onDelete':'cascade','foreignKey':_0x0a9e('0x1c7')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db['FreshsalesField'],{'as':'Subjects','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc5')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cd'),'foreignKey':'DescriptionId'});db[_0x0a9e('0xc5')]['hasMany'](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1c1'),'foreignKey':'FieldId'});db[_0x0a9e('0xc5')]['belongsTo'](db[_0x0a9e('0xc3')],{'as':_0x0a9e('0x183'),'foreignKey':'AccountId'});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':'Subject','foreignKey':_0x0a9e('0x1c9')});db[_0x0a9e('0xc7')][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1ca'),'foreignKey':_0x0a9e('0x1c5')});db['FreshsalesField'][_0x0a9e('0x110')](db[_0x0a9e('0xc7')],{'as':_0x0a9e('0x1cb'),'foreignKey':_0x0a9e('0x1c6')});db['FreshsalesField']['belongsTo'](db[_0x0a9e('0x8e')],{'as':_0x0a9e('0x8e'),'foreignKey':_0x0a9e('0x1ce')});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x60')],{});db['ChatQueueReport']['belongsTo'](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':'ListId'});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x64')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xca')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db['ChatQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x67')],{});db['ChatInternalMessage']['belongsTo'](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':'FromId'});db['ChatInternalMessage'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x10e'),'foreignKey':_0x0a9e('0x1d7')});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0x1d8')],{'foreignKey':'SessionId','onDelete':'cascade'});db[_0x0a9e('0xd0')]['hasMany'](db[_0x0a9e('0xcd')],{'foreignKey':'SessionId','onDelete':_0x0a9e('0x10e')});db['SmsQueueReport']['belongsTo'](db[_0x0a9e('0x50')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db['CmContact'],{'as':_0x0a9e('0x160'),'foreignKey':'ContactId'});db[_0x0a9e('0xd2')]['belongsTo'](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xd2')]['belongsTo'](db['SmsMessage'],{});db['SmsQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{});db[_0x0a9e('0xd2')][_0x0a9e('0x150')](db[_0x0a9e('0x57')],{});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0xd0')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db[_0x0a9e('0x1d8')],{'foreignKey':_0x0a9e('0x1da')});db[_0x0a9e('0x1d9')][_0x0a9e('0x110')](db['JscriptyAnswerReport'],{'foreignKey':'ProjectId'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'user_has_teams'});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0x1a')],{'through':'TeamVoiceQueue','as':_0x0a9e('0x131')});db['Team']['belongsToMany'](db[_0x0a9e('0x3c')],{'through':_0x0a9e('0x171'),'as':_0x0a9e('0x1db')});db[_0x0a9e('0x129')]['belongsToMany'](db['ChatQueue'],{'through':_0x0a9e('0x19b'),'as':'ChatQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db['FaxQueue'],{'through':_0x0a9e('0x187'),'as':'FaxQueues'});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x57')],{'through':_0x0a9e('0x18c'),'as':_0x0a9e('0x136')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x137')],{'through':_0x0a9e('0x190'),'as':_0x0a9e('0x1dc')});db[_0x0a9e('0x129')][_0x0a9e('0x121')](db[_0x0a9e('0x101')],{'through':_0x0a9e('0x1dd'),'as':_0x0a9e('0x138')});db[_0x0a9e('0x129')]['belongsToMany'](db[_0x0a9e('0xf1')],{'through':_0x0a9e('0x107'),'as':_0x0a9e('0x132')});db['Campaign'][_0x0a9e('0x110')](db[_0x0a9e('0x6d')],{'as':_0x0a9e('0x14c'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')][_0x0a9e('0x110')](db['CmHopperHistory'],{'as':_0x0a9e('0x19e'),'foreignKey':_0x0a9e('0x1a7')});db[_0x0a9e('0x1a5')]['hasMany'](db[_0x0a9e('0x6f')],{'as':'HopperBlacks','foreignKey':'CampaignId'});db[_0x0a9e('0x1a5')]['belongsTo'](db[_0x0a9e('0x28')],{'as':'Trunk','foreignKey':_0x0a9e('0x14f')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['Trunk'],{'as':_0x0a9e('0x151'),'foreignKey':'TrunkBackupId'});db['Campaign'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'as':_0x0a9e('0x17b'),'foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0x1a5')][_0x0a9e('0x150')](db['SquareProject'],{'as':_0x0a9e('0xdc'),'foreignKey':_0x0a9e('0x1de')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':'Lists','through':_0x0a9e('0x1df')});db[_0x0a9e('0x1a5')][_0x0a9e('0x121')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x156'),'through':_0x0a9e('0x1e0')});db[_0x0a9e('0xe4')][_0x0a9e('0x150')](db[_0x0a9e('0x66')],{'as':_0x0a9e('0x66'),'foreignKey':_0x0a9e('0x19a')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db['MailMessage'],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x11c')],{});db['MailTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e2'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0x1e1')]['belongsTo'](db['User'],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3c')],{'foreignKey':'ToMailQueueId','as':'ToQueue'});db[_0x0a9e('0x1e1')][_0x0a9e('0x150')](db[_0x0a9e('0x3b')],{'foreignKey':_0x0a9e('0x1e7'),'as':_0x0a9e('0x1e8')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x65')],{});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['ChatInteraction'],{});db[_0x0a9e('0xe8')]['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1e9'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xe8')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xe8')]['belongsTo'](db[_0x0a9e('0x67')],{'foreignKey':_0x0a9e('0x1eb'),'as':'ToQueue'});db['ChatTransferReport']['belongsTo'](db['ChatWebsite'],{'foreignKey':_0x0a9e('0x1ec'),'as':_0x0a9e('0x1e8')});db['FaxTransferReport'][_0x0a9e('0x150')](db['FaxMessage'],{});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11b')],{});db['FaxTransferReport']['belongsTo'](db[_0x0a9e('0x45')],{'foreignKey':_0x0a9e('0x1ed'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xea')]['belongsTo'](db['FaxQueue'],{'foreignKey':_0x0a9e('0x1ee'),'as':_0x0a9e('0x1ef')});db[_0x0a9e('0xea')][_0x0a9e('0x150')](db[_0x0a9e('0x45')],{'foreignKey':'ToFaxAccountId','as':_0x0a9e('0x1e8')});db[_0x0a9e('0xec')]['belongsTo'](db[_0x0a9e('0x5e')],{});db['OpenchannelTransferReport']['belongsTo'](db['OpenchannelInteraction'],{});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['OpenchannelAccount'],{'foreignKey':'FromOpenchannelAccountId','as':_0x0a9e('0x1e3')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'FromUserId','as':_0x0a9e('0x1e4')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1e5'),'as':_0x0a9e('0x1e6')});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x137')],{'foreignKey':'ToOpenchannelQueueId','as':'ToQueue'});db[_0x0a9e('0xec')][_0x0a9e('0x150')](db[_0x0a9e('0x59')],{'foreignKey':'ToOpenchannelAccountId','as':'ToAccount'});db['SmsTransferReport']['belongsTo'](db[_0x0a9e('0x55')],{});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x53')],{});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':_0x0a9e('0x1f0'),'as':_0x0a9e('0x1e3')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':_0x0a9e('0x1e4')});db[_0x0a9e('0xee')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0xee')]['belongsTo'](db['SmsQueue'],{'foreignKey':'ToSmsQueueId','as':_0x0a9e('0x1ef')});db[_0x0a9e('0xee')]['belongsTo'](db[_0x0a9e('0x50')],{'foreignKey':'ToSmsAccountId','as':'ToAccount'});db['CmList']['hasMany'](db[_0x0a9e('0x167')],{'as':_0x0a9e('0x168'),'foreignKey':_0x0a9e('0x16d'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x1f1')],{'as':_0x0a9e('0x1f2'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db['CmContact'],{'as':_0x0a9e('0x125'),'onDelete':'cascade','foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x71')],{'as':_0x0a9e('0x115'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0x139')][_0x0a9e('0x110')](db[_0x0a9e('0x116')],{'as':'HopperHistory','foreignKey':'ListId'});db['CmList'][_0x0a9e('0x110')](db[_0x0a9e('0x73')],{'as':_0x0a9e('0x73'),'foreignKey':'ListId'});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x1a')],{'as':'Queues','through':_0x0a9e('0x1f3')});db[_0x0a9e('0x139')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':'Agents','through':_0x0a9e('0x128')});db[_0x0a9e('0xf1')][_0x0a9e('0x110')](db[_0x0a9e('0x16')],{'as':_0x0a9e('0x114'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf1')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':'UserVoicePrefix'});db[_0x0a9e('0xf1')]['belongsToMany'](db[_0x0a9e('0x129')],{'through':'TeamVoicePrefix','as':_0x0a9e('0x155')});db[_0x0a9e('0xf2')][_0x0a9e('0x110')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'foreignKey':_0x0a9e('0x1f4')});db['UserProfile'][_0x0a9e('0x110')](db['UserProfileSection'],{'as':_0x0a9e('0x1f5'),'foreignKey':_0x0a9e('0x1f4'),'onDelete':_0x0a9e('0x10e')});db['UserProfileSection']['hasMany'](db['UserProfileResource'],{'as':_0x0a9e('0x1f6'),'foreignKey':_0x0a9e('0x1f7'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db[_0x0a9e('0x167')],{'as':'Dispositions','foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['CannedAnswer'],{'as':_0x0a9e('0x169'),'foreignKey':_0x0a9e('0x1f8')});db['WhatsappAccount'][_0x0a9e('0x110')](db[_0x0a9e('0xfd')],{'as':_0x0a9e('0x158'),'foreignKey':'WhatsappAccountId'});db[_0x0a9e('0xf7')]['hasMany'](db[_0x0a9e('0xfb')],{'as':'Interactions'});db[_0x0a9e('0xf7')][_0x0a9e('0x110')](db['WhatsappApplication'],{'as':_0x0a9e('0x147'),'foreignKey':_0x0a9e('0x1f8'),'onDelete':_0x0a9e('0x10e')});db['WhatsappAccount'][_0x0a9e('0x150')](db['CmList'],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xf7')][_0x0a9e('0x150')](db[_0x0a9e('0x7d')],{'as':'mandatoryDispositionPause','foreignKey':_0x0a9e('0x154')});db[_0x0a9e('0xf7')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x144')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db[_0x0a9e('0x101')],{'onDelete':_0x0a9e('0x164')});db[_0x0a9e('0xf9')][_0x0a9e('0x150')](db['WhatsappAccount'],{'onDelete':_0x0a9e('0x164')});db['WhatsappApplication'][_0x0a9e('0x150')](db[_0x0a9e('0x17b')],{'onDelete':'restrict','foreignKey':_0x0a9e('0x153')});db[_0x0a9e('0xf9')]['belongsTo'](db[_0x0a9e('0x86')],{'onDelete':_0x0a9e('0x164'),'foreignKey':_0x0a9e('0x181')});db['WhatsappInteraction'][_0x0a9e('0x110')](db['WhatsappMessage'],{'as':'Messages','onDelete':'cascade','foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfb')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x184'),'foreignKey':_0x0a9e('0x10f')});db[_0x0a9e('0xfb')][_0x0a9e('0x121')](db[_0x0a9e('0x86')],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x174')});db['WhatsappInteraction'][_0x0a9e('0x121')](db['Tag'],{'through':_0x0a9e('0x1b5'),'as':_0x0a9e('0x175')});db[_0x0a9e('0xfb')]['belongsToMany'](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x176'),'through':_0x0a9e('0x130'),'foreignKey':'WhatsappInteractionId'});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x11')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'onDelete':'cascade','as':_0x0a9e('0x160')});db[_0x0a9e('0xfd')][_0x0a9e('0x150')](db['WhatsappInteraction'],{'onDelete':'cascade','as':_0x0a9e('0x179'),'foreignKey':_0x0a9e('0x1f9')});db[_0x0a9e('0xfd')]['belongsTo'](db[_0x0a9e('0xf7')],{'as':_0x0a9e('0x183'),'foreignKey':_0x0a9e('0x1f8')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0xf7')],{});db['WhatsappQueueReport'][_0x0a9e('0x150')](db[_0x0a9e('0x139')],{'as':_0x0a9e('0x16c'),'foreignKey':_0x0a9e('0x16d')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db[_0x0a9e('0x124')],{'as':_0x0a9e('0x160'),'foreignKey':_0x0a9e('0x172')});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['WhatsappInteraction'],{});db['WhatsappQueueReport']['belongsTo'](db[_0x0a9e('0x101')],{});db[_0x0a9e('0xfe')]['belongsTo'](db['WhatsappMessage'],{});db[_0x0a9e('0xfe')][_0x0a9e('0x150')](db['User'],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfd')],{});db['WhatsappTransferReport'][_0x0a9e('0x150')](db[_0x0a9e('0xfb')],{});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappAccount'],{'foreignKey':_0x0a9e('0x1fb'),'as':_0x0a9e('0x1e3')});db['WhatsappTransferReport']['belongsTo'](db[_0x0a9e('0xf7')],{'foreignKey':_0x0a9e('0x1fc'),'as':'ToAccount'});db[_0x0a9e('0x1fa')]['belongsTo'](db['WhatsappQueue'],{'foreignKey':_0x0a9e('0x1fd'),'as':_0x0a9e('0x1ef')});db['WhatsappTransferReport']['belongsTo'](db['User'],{'foreignKey':_0x0a9e('0x1ea'),'as':'FromAgent'});db[_0x0a9e('0x1fa')][_0x0a9e('0x150')](db['User'],{'foreignKey':'ToUserId','as':_0x0a9e('0x1e6')});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x170'),'through':_0x0a9e('0x37'),'foreignKey':'WhatsappQueueId'});db[_0x0a9e('0x101')][_0x0a9e('0x121')](db[_0x0a9e('0x129')],{'through':_0x0a9e('0x1dd'),'as':'Teams'});db[_0x0a9e('0x1fe')][_0x0a9e('0x150')](db[_0x0a9e('0x11')],{'as':_0x0a9e('0x1ff'),'foreignKey':_0x0a9e('0x10f'),'onDelete':_0x0a9e('0x10e'),'hooks':!![]});db[_0x0a9e('0x103')][_0x0a9e('0x10b')](db['Dynamics365Account'],{'as':_0x0a9e('0xbe'),'onDelete':_0x0a9e('0x164')});db['CloudProvider'][_0x0a9e('0x10b')](db['MailServerIn'],{'as':'Imap','onDelete':_0x0a9e('0x164')});db['CloudProvider']['hasOne'](db['MailServerOut'],{'as':'Smtp','onDelete':_0x0a9e('0x164')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
index a41578e..bedfa15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x581a=['3.5.0','/server/files/plugins','route','get','resolve','appPath','/index.html','path','express','./config/environment','./utils/client-side-logger','setupLoggers','./api/client-side-logs','default','use','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','./api/voiceMusicOnHold','/api/voice/queues','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','./api/faxAccount','/api/fax/applications','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','./api/openchannelInteraction','/api/openchannel/messages','/api/openchannel/queues','./api/openchannelQueue','./api/chatWebsite','./api/openchannelQueueReport','/api/chat/applications','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopperBlack','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/actions','/api/automations','./api/automation','./api/cannedAnswer','/api/dispositions','./api/disposition','./api/condition','/api/intervals','./api/interval','./api/pause','/api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','/api/sounds','./api/sound','/api/tags','./api/tag','/api/contact_item_types','./api/contactItemType','/api/cm_contact_has_items','./api/cmContactHasItem','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','/api/templates','./api/template','/api/triggers','/api/variables','./api/variable','/api/integrations','./api/integration','./api/integrationReport','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','/api/analytics/field_reports','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','/api/integrations/desk/accounts','./api/intDeskAccount','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','/api/integrations/servicenow/accounts','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','/api/integrations/dynamics365/fields','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/square/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','/api/square/messages','./api/squareMessage','/api/teams','./api/team','/api/license','./api/license','/api/campaigns','./api/migration','/api/attachments','./api/attachment','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','/api/whatsapp/applications','/api/whatsapp/interactions','./api/whatsappMessage','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','/api/whatsapp/queues','./api/whatsappQueue','./api/cloudProvider','/api/realtime','/api/user-settings','./api/user-setting','./api/authLocal','/api/auth/google','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','./api/jira','/api/rpc','./api/rpc','/api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/api/logs','/apidoc','static','root','join','/www','/demo','/snippet','snippet'];(function(_0x34743d,_0x10e4ff){var _0x305ca0=function(_0x87a4df){while(--_0x87a4df){_0x34743d['push'](_0x34743d['shift']());}};_0x305ca0(++_0x10e4ff);}(_0x581a,0x127));var _0xa581=function(_0x36aa74,_0x57eb63){_0x36aa74=_0x36aa74-0x0;var _0x3627e1=_0x581a[_0x36aa74];return _0x3627e1;};'use strict';var path=require(_0xa581('0x0'));var express=require(_0xa581('0x1'));var errors=require('./errors');var config=require(_0xa581('0x2'));var setupLoggers=require(_0xa581('0x3'))[_0xa581('0x4')];var clientSideLogs=require(_0xa581('0x5'));exports[_0xa581('0x6')]=function(_0x4e64cc){return setupLoggers(_0x4e64cc)['then'](function(){_0x4e64cc[_0xa581('0x7')]('/api/users',require(_0xa581('0x8')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x9'),require(_0xa581('0xa')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xb'),require(_0xa581('0xc')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xd'),require(_0xa581('0xe')));_0x4e64cc[_0xa581('0x7')]('/api/voice/mohs',require(_0xa581('0xf')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x10'),require(_0xa581('0x11')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x12'),require(_0xa581('0x13')));_0x4e64cc['use'](_0xa581('0x14'),require(_0xa581('0x15')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x16'),require(_0xa581('0x17')));_0x4e64cc['use'](_0xa581('0x18'),require(_0xa581('0x19')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x1a'),require('./api/voiceCallReport'));_0x4e64cc['use'](_0xa581('0x1b'),require(_0xa581('0x1c')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x1d'),require(_0xa581('0x1e')));_0x4e64cc['use'](_0xa581('0x1f'),require(_0xa581('0x20')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x21'),require(_0xa581('0x22')));_0x4e64cc[_0xa581('0x7')]('/api/trunks',require('./api/trunk'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x23'),require(_0xa581('0x24')));_0x4e64cc['use'](_0xa581('0x25'),require(_0xa581('0x26')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x27'),require(_0xa581('0x28')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x29'),require(_0xa581('0x2a')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x2b'),require(_0xa581('0x2c')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x2d'),require('./api/mailInteraction'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x2e'),require(_0xa581('0x2f')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x30'),require(_0xa581('0x31')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x32'),require(_0xa581('0x33')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x34'),require(_0xa581('0x35')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x36'),require(_0xa581('0x37')));_0x4e64cc[_0xa581('0x7')]('/api/fax/accounts',require(_0xa581('0x38')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x39'),require('./api/faxApplication'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x3a'),require(_0xa581('0x3b')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x3c'),require('./api/faxMessage'));_0x4e64cc[_0xa581('0x7')]('/api/fax/queues',require(_0xa581('0x3d')));_0x4e64cc['use'](_0xa581('0x3e'),require(_0xa581('0x3f')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x40'),require('./api/smsAccount'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x41'),require(_0xa581('0x42')));_0x4e64cc['use'](_0xa581('0x43'),require(_0xa581('0x44')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x45'),require(_0xa581('0x46')));_0x4e64cc['use'](_0xa581('0x47'),require(_0xa581('0x48')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x49'),require(_0xa581('0x4a')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x4b'),require(_0xa581('0x4c')));_0x4e64cc[_0xa581('0x7')]('/api/openchannel/interactions',require(_0xa581('0x4d')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x4e'),require('./api/openchannelMessage'));_0x4e64cc['use'](_0xa581('0x4f'),require(_0xa581('0x50')));_0x4e64cc['use']('/api/chat/websites',require(_0xa581('0x51')));_0x4e64cc[_0xa581('0x7')]('/api/openchannel/reports/queue',require(_0xa581('0x52')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x53'),require('./api/chatApplication'));_0x4e64cc['use'](_0xa581('0x54'),require(_0xa581('0x55')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x56'),require(_0xa581('0x57')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x58'),require(_0xa581('0x59')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x5a'),require(_0xa581('0x5b')));_0x4e64cc[_0xa581('0x7')]('/api/chat/groups',require(_0xa581('0x5c')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x5d'),require(_0xa581('0x5e')));_0x4e64cc[_0xa581('0x7')]('/api/cm/companies',require(_0xa581('0x5f')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x60'),require(_0xa581('0x61')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x62'),require('./api/cmHopper'));_0x4e64cc[_0xa581('0x7')]('/api/cm/hopper_black',require(_0xa581('0x63')));_0x4e64cc['use']('/api/cm/hopper_final',require(_0xa581('0x64')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x65'),require(_0xa581('0x66')));_0x4e64cc['use']('/api/cm/custom_fields',require('./api/cmCustomField'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x67'),require('./api/action'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x68'),require(_0xa581('0x69')));_0x4e64cc[_0xa581('0x7')]('/api/canned_answers',require(_0xa581('0x6a')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x6b'),require(_0xa581('0x6c')));_0x4e64cc[_0xa581('0x7')]('/api/conditions',require(_0xa581('0x6d')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x6e'),require(_0xa581('0x6f')));_0x4e64cc['use']('/api/pauses',require(_0xa581('0x70')));_0x4e64cc['use'](_0xa581('0x71'),require('./api/cdr'));_0x4e64cc['use'](_0xa581('0x72'),require(_0xa581('0x73')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x74'),require('./api/schedule'));_0x4e64cc['use'](_0xa581('0x75'),require(_0xa581('0x76')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x77'),require(_0xa581('0x78')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x79'),require(_0xa581('0x7a')));_0x4e64cc['use'](_0xa581('0x7b'),require(_0xa581('0x7c')));_0x4e64cc['use'](_0xa581('0x7d'),require(_0xa581('0x7e')));_0x4e64cc['use'](_0xa581('0x7f'),require(_0xa581('0x80')));_0x4e64cc['use'](_0xa581('0x81'),require('./api/trigger'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x82'),require(_0xa581('0x83')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x84'),require(_0xa581('0x85')));_0x4e64cc[_0xa581('0x7')]('/api/integrations/reports',require(_0xa581('0x86')));_0x4e64cc[_0xa581('0x7')]('/api/analytics/custom_reports',require(_0xa581('0x87')));_0x4e64cc['use'](_0xa581('0x88'),require(_0xa581('0x89')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x8a'),require(_0xa581('0x8b')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x8c'),require('./api/analyticMetric'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x8d'),require(_0xa581('0x8e')));_0x4e64cc['use'](_0xa581('0x8f'),require(_0xa581('0x90')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x91'),require(_0xa581('0x92')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x93'),require('./api/intSalesforceConfiguration'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x94'),require(_0xa581('0x95')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x96'),require(_0xa581('0x97')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x98'),require(_0xa581('0x99')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x9a'),require('./api/intSugarcrmField'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x9b'),require(_0xa581('0x9c')));_0x4e64cc[_0xa581('0x7')]('/api/integrations/desk/configurations',require(_0xa581('0x9d')));_0x4e64cc['use'](_0xa581('0x9e'),require(_0xa581('0x9f')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xa0'),require(_0xa581('0xa1')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xa2'),require(_0xa581('0xa3')));_0x4e64cc[_0xa581('0x7')]('/api/integrations/zoho/fields',require(_0xa581('0xa4')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xa5'),require(_0xa581('0xa6')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xa7'),require(_0xa581('0xa8')));_0x4e64cc['use'](_0xa581('0xa9'),require('./api/intZendeskField'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xaa'),require(_0xa581('0xab')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xac'),require(_0xa581('0xad')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xae'),require(_0xa581('0xaf')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xb0'),require(_0xa581('0xb1')));_0x4e64cc[_0xa581('0x7')]('/api/integrations/vtiger/configurations',require(_0xa581('0xb2')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xb3'),require('./api/intVtigerField'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xb4'),require('./api/intServicenowAccount'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xb5'),require(_0xa581('0xb6')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xb7'),require(_0xa581('0xb8')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xb9'),require(_0xa581('0xba')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xbb'),require('./api/intDynamics365Configuration'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xbc'),require('./api/intDynamics365Field'));_0x4e64cc['use'](_0xa581('0xbd'),require(_0xa581('0xbe')));_0x4e64cc['use']('/api/integrations/freshsales/configurations',require(_0xa581('0xbf')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xc0'),require(_0xa581('0xc1')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xc2'),require(_0xa581('0xc3')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xc4'),require(_0xa581('0xc5')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xc6'),require(_0xa581('0xc7')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xc8'),require(_0xa581('0xc9')));_0x4e64cc['use'](_0xa581('0xca'),require(_0xa581('0xcb')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xcc'),require(_0xa581('0xcd')));_0x4e64cc[_0xa581('0x7')]('/api/sms/reports/queue',require('./api/smsQueueReport'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xce'),require('./api/squareReport'));_0x4e64cc[_0xa581('0x7')]('/api/square/details/reports',require(_0xa581('0xcf')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xd0'),require(_0xa581('0xd1')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xd2'),require(_0xa581('0xd3')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xd4'),require(_0xa581('0xd5')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xd6'),require(_0xa581('0xd7')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xd8'),require(_0xa581('0xd9')));_0x4e64cc['use'](_0xa581('0xda'),require(_0xa581('0xdb')));_0x4e64cc['use'](_0xa581('0xdc'),require(_0xa581('0xdd')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xde'),require(_0xa581('0xdf')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xe0'),require('./api/campaign'));_0x4e64cc[_0xa581('0x7')]('/api/migrations',require(_0xa581('0xe1')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xe2'),require(_0xa581('0xe3')));_0x4e64cc[_0xa581('0x7')]('/api/plugins',require(_0xa581('0xe4')));_0x4e64cc['use'](_0xa581('0xe5'),require(_0xa581('0xe6')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xe7'),require('./api/chatTransferReport'));_0x4e64cc['use']('/api/fax/reports/transfer',require(_0xa581('0xe8')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xe9'),require('./api/openchannelTransferReport'));_0x4e64cc['use'](_0xa581('0xea'),require(_0xa581('0xeb')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xec'),require(_0xa581('0xed')));_0x4e64cc['use'](_0xa581('0xee'),require('./api/voicePrefix'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xef'),require(_0xa581('0xf0')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xf1'),require(_0xa581('0xf2')));_0x4e64cc['use']('/api/userProfile/resources',require('./api/userProfileResource'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xf3'),require(_0xa581('0xf4')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xf5'),require('./api/whatsappAccount'));_0x4e64cc['use'](_0xa581('0xf6'),require('./api/whatsappApplication'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xf7'),require('./api/whatsappInteraction'));_0x4e64cc[_0xa581('0x7')]('/api/whatsapp/messages',require(_0xa581('0xf8')));_0x4e64cc[_0xa581('0x7')]('/api/whatsapp/reports/queue',require(_0xa581('0xf9')));_0x4e64cc[_0xa581('0x7')](_0xa581('0xfa'),require('./api/whatsappTransferReport'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xfb'),require(_0xa581('0xfc')));_0x4e64cc[_0xa581('0x7')]('/api/cloudProviders',require(_0xa581('0xfd')));_0x4e64cc['use'](_0xa581('0xfe'),require('./api/realtime'));_0x4e64cc[_0xa581('0x7')](_0xa581('0xff'),require(_0xa581('0x100')));_0x4e64cc[_0xa581('0x7')]('/api/auth/local',require(_0xa581('0x101')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x102'),require(_0xa581('0x103')));_0x4e64cc['use'](_0xa581('0x104'),require(_0xa581('0x105')));_0x4e64cc['use']('/api/jira',require(_0xa581('0x106')));_0x4e64cc['use'](_0xa581('0x107'),require(_0xa581('0x108')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x109'),require('./api/version'));_0x4e64cc[_0xa581('0x7')](_0xa581('0x10a'),require(_0xa581('0x10b')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x10c'),require(_0xa581('0x10d')));_0x4e64cc[_0xa581('0x7')](_0xa581('0x10e'),require(_0xa581('0x10f')));_0x4e64cc['use'](_0xa581('0x110'),clientSideLogs);_0x4e64cc['use'](_0xa581('0x111'),express[_0xa581('0x112')](path['join'](config[_0xa581('0x113')],_0xa581('0x111'))));_0x4e64cc[_0xa581('0x7')]('/www',express[_0xa581('0x112')](path[_0xa581('0x114')](config['root'],_0xa581('0x115'))));_0x4e64cc[_0xa581('0x7')](_0xa581('0x116'),express[_0xa581('0x112')](path[_0xa581('0x114')](config[_0xa581('0x113')],_0xa581('0x116'))));_0x4e64cc[_0xa581('0x7')](_0xa581('0x117'),express[_0xa581('0x112')](path[_0xa581('0x114')](config[_0xa581('0x113')],_0xa581('0x118'),_0xa581('0x119'))));_0x4e64cc['use']('/plugins',express[_0xa581('0x112')](path[_0xa581('0x114')](config[_0xa581('0x113')],_0xa581('0x11a'))));_0x4e64cc[_0xa581('0x11b')]('/:url(api|auth|components|app|bower_components|assets)/*')['get'](errors[0x194]);_0x4e64cc[_0xa581('0x11b')]('/*')[_0xa581('0x11c')](function(_0xa3d8f,_0x160beb){_0x160beb['sendFile'](path[_0xa581('0x11d')](_0x4e64cc[_0xa581('0x11c')](_0xa581('0x11e'))+_0xa581('0x11f')));});return _0x4e64cc;});};
\ No newline at end of file
+var _0x195e=['/api/mail/out_servers','./api/mailServerOut','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','/api/sms/applications','./api/smsApplication','/api/sms/interactions','/api/sms/messages','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','./api/chatQueue','./api/chatGroup','./api/chatProactiveAction','/api/cm/companies','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','./api/cmHopperHistory','/api/cm/custom_fields','./api/cmCustomField','/api/automations','/api/dispositions','./api/disposition','/api/conditions','./api/condition','/api/intervals','/api/pauses','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','./api/sound','./api/tag','/api/contact_item_types','./api/contactItemType','/api/cm_contact_has_items','./api/cmContactHasItem','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','./api/template','/api/triggers','./api/trigger','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','./api/analyticFieldReport','/api/analytics/tree_reports','./api/analyticTreeReport','/api/integrations/salesforce/accounts','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','./api/intSalesforceField','./api/intSugarcrmAccount','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields','./api/intSugarcrmField','/api/integrations/desk/accounts','./api/intDeskAccount','/api/integrations/desk/configurations','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intServicenowAccount','/api/integrations/servicenow/fields','/api/integrations/dynamics365/accounts','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/freshsales/accounts','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/networks','./api/network','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','/api/jscripty/sessions/reports','./api/jscriptySessionReport','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/messages','./api/squareMessage','/api/teams','./api/team','/api/license','/api/campaigns','./api/campaign','/api/migrations','/api/attachments','/api/plugins','/api/mail/reports/transfer','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','./api/openchannelTransferReport','./api/smsTransferReport','/api/cm/lists','/api/voice/prefixes','./api/voicePrefix','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','/api/whatsapp/queues','./api/whatsappQueue','/api/cloudProviders','/api/realtime','./api/user-setting','/api/auth/local','/api/auth/google','./api/authGoogle','./api/authActiveDirectory','/api/jira','./api/jira','/api/rpc','./api/rpc','/api/version','./api/version','./api/system','/api/pm2','/api/webbar','./api/webbar','/api/logs','/apidoc','static','join','/www','/demo','/snippet','snippet','3.5.0','/plugins','root','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','path','express','./errors','./config/environment','./utils/client-side-logger','setupLoggers','./api/client-side-logs','default','then','use','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/mohs','./api/voiceMusicOnHold','./api/voiceQueue','/api/voice/recordings','/api/screen/recordings','/api/voice/mails','./api/voiceMail','./api/voiceMailMessage','./api/voiceDialReport','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','./api/memberReport','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport'];(function(_0x581efc,_0x535715){var _0x26aded=function(_0x207132){while(--_0x207132){_0x581efc['push'](_0x581efc['shift']());}};_0x26aded(++_0x535715);}(_0x195e,0xfb));var _0xe195=function(_0x5bbb1d,_0x29b4c0){_0x5bbb1d=_0x5bbb1d-0x0;var _0x2c7305=_0x195e[_0x5bbb1d];return _0x2c7305;};'use strict';var path=require(_0xe195('0x0'));var express=require(_0xe195('0x1'));var errors=require(_0xe195('0x2'));var config=require(_0xe195('0x3'));var setupLoggers=require(_0xe195('0x4'))[_0xe195('0x5')];var clientSideLogs=require(_0xe195('0x6'));exports[_0xe195('0x7')]=function(_0x2243e9){return setupLoggers(_0x2243e9)[_0xe195('0x8')](function(){_0x2243e9[_0xe195('0x9')](_0xe195('0xa'),require(_0xe195('0xb')));_0x2243e9['use'](_0xe195('0xc'),require(_0xe195('0xd')));_0x2243e9[_0xe195('0x9')](_0xe195('0xe'),require(_0xe195('0xf')));_0x2243e9['use']('/api/voice/extensions',require('./api/voiceExtension'));_0x2243e9[_0xe195('0x9')](_0xe195('0x10'),require(_0xe195('0x11')));_0x2243e9[_0xe195('0x9')]('/api/voice/queues',require(_0xe195('0x12')));_0x2243e9[_0xe195('0x9')](_0xe195('0x13'),require('./api/voiceRecording'));_0x2243e9[_0xe195('0x9')](_0xe195('0x14'),require('./api/screenRecording'));_0x2243e9[_0xe195('0x9')](_0xe195('0x15'),require(_0xe195('0x16')));_0x2243e9[_0xe195('0x9')]('/api/voice/mails/messages',require(_0xe195('0x17')));_0x2243e9[_0xe195('0x9')]('/api/voice/calls/reports',require('./api/voiceCallReport'));_0x2243e9[_0xe195('0x9')]('/api/voice/dials/reports',require(_0xe195('0x18')));_0x2243e9['use']('/api/voice/agents/reports',require(_0xe195('0x19')));_0x2243e9[_0xe195('0x9')](_0xe195('0x1a'),require(_0xe195('0x1b')));_0x2243e9[_0xe195('0x9')](_0xe195('0x1c'),require(_0xe195('0x1d')));_0x2243e9[_0xe195('0x9')](_0xe195('0x1e'),require(_0xe195('0x1f')));_0x2243e9['use'](_0xe195('0x20'),require(_0xe195('0x21')));_0x2243e9[_0xe195('0x9')](_0xe195('0x22'),require(_0xe195('0x23')));_0x2243e9[_0xe195('0x9')]('/api/mail/accounts',require(_0xe195('0x24')));_0x2243e9[_0xe195('0x9')](_0xe195('0x25'),require(_0xe195('0x26')));_0x2243e9['use']('/api/mail/substatuses',require('./api/mailSubstatus'));_0x2243e9[_0xe195('0x9')](_0xe195('0x27'),require(_0xe195('0x28')));_0x2243e9[_0xe195('0x9')](_0xe195('0x29'),require(_0xe195('0x2a')));_0x2243e9[_0xe195('0x9')](_0xe195('0x2b'),require(_0xe195('0x2c')));_0x2243e9[_0xe195('0x9')](_0xe195('0x2d'),require(_0xe195('0x2e')));_0x2243e9[_0xe195('0x9')]('/api/dashboards',require(_0xe195('0x2f')));_0x2243e9[_0xe195('0x9')](_0xe195('0x30'),require(_0xe195('0x31')));_0x2243e9[_0xe195('0x9')](_0xe195('0x32'),require(_0xe195('0x33')));_0x2243e9[_0xe195('0x9')](_0xe195('0x34'),require(_0xe195('0x35')));_0x2243e9['use'](_0xe195('0x36'),require(_0xe195('0x37')));_0x2243e9[_0xe195('0x9')](_0xe195('0x38'),require(_0xe195('0x39')));_0x2243e9['use']('/api/fax/queues',require(_0xe195('0x3a')));_0x2243e9[_0xe195('0x9')](_0xe195('0x3b'),require(_0xe195('0x3c')));_0x2243e9[_0xe195('0x9')](_0xe195('0x3d'),require('./api/smsAccount'));_0x2243e9[_0xe195('0x9')](_0xe195('0x3e'),require(_0xe195('0x3f')));_0x2243e9['use'](_0xe195('0x40'),require('./api/smsInteraction'));_0x2243e9[_0xe195('0x9')](_0xe195('0x41'),require('./api/smsMessage'));_0x2243e9[_0xe195('0x9')](_0xe195('0x42'),require(_0xe195('0x43')));_0x2243e9['use'](_0xe195('0x44'),require(_0xe195('0x45')));_0x2243e9[_0xe195('0x9')](_0xe195('0x46'),require(_0xe195('0x47')));_0x2243e9[_0xe195('0x9')]('/api/openchannel/interactions',require(_0xe195('0x48')));_0x2243e9[_0xe195('0x9')](_0xe195('0x49'),require(_0xe195('0x4a')));_0x2243e9[_0xe195('0x9')](_0xe195('0x4b'),require(_0xe195('0x4c')));_0x2243e9['use'](_0xe195('0x4d'),require(_0xe195('0x4e')));_0x2243e9['use'](_0xe195('0x4f'),require(_0xe195('0x50')));_0x2243e9['use'](_0xe195('0x51'),require('./api/chatApplication'));_0x2243e9[_0xe195('0x9')](_0xe195('0x52'),require(_0xe195('0x53')));_0x2243e9[_0xe195('0x9')](_0xe195('0x54'),require(_0xe195('0x55')));_0x2243e9['use'](_0xe195('0x56'),require(_0xe195('0x57')));_0x2243e9[_0xe195('0x9')]('/api/chat/queues',require(_0xe195('0x58')));_0x2243e9[_0xe195('0x9')]('/api/chat/groups',require(_0xe195('0x59')));_0x2243e9[_0xe195('0x9')]('/api/chat/proactive_actions',require(_0xe195('0x5a')));_0x2243e9[_0xe195('0x9')](_0xe195('0x5b'),require('./api/cmCompany'));_0x2243e9[_0xe195('0x9')](_0xe195('0x5c'),require(_0xe195('0x5d')));_0x2243e9[_0xe195('0x9')](_0xe195('0x5e'),require(_0xe195('0x5f')));_0x2243e9[_0xe195('0x9')](_0xe195('0x60'),require(_0xe195('0x61')));_0x2243e9[_0xe195('0x9')](_0xe195('0x62'),require(_0xe195('0x63')));_0x2243e9['use'](_0xe195('0x64'),require(_0xe195('0x65')));_0x2243e9[_0xe195('0x9')](_0xe195('0x66'),require(_0xe195('0x67')));_0x2243e9['use']('/api/actions',require('./api/action'));_0x2243e9['use'](_0xe195('0x68'),require('./api/automation'));_0x2243e9[_0xe195('0x9')]('/api/canned_answers',require('./api/cannedAnswer'));_0x2243e9[_0xe195('0x9')](_0xe195('0x69'),require(_0xe195('0x6a')));_0x2243e9[_0xe195('0x9')](_0xe195('0x6b'),require(_0xe195('0x6c')));_0x2243e9[_0xe195('0x9')](_0xe195('0x6d'),require('./api/interval'));_0x2243e9['use'](_0xe195('0x6e'),require(_0xe195('0x6f')));_0x2243e9['use'](_0xe195('0x70'),require(_0xe195('0x71')));_0x2243e9[_0xe195('0x9')](_0xe195('0x72'),require(_0xe195('0x73')));_0x2243e9[_0xe195('0x9')](_0xe195('0x74'),require(_0xe195('0x75')));_0x2243e9[_0xe195('0x9')](_0xe195('0x76'),require(_0xe195('0x77')));_0x2243e9[_0xe195('0x9')]('/api/tags',require(_0xe195('0x78')));_0x2243e9[_0xe195('0x9')](_0xe195('0x79'),require(_0xe195('0x7a')));_0x2243e9[_0xe195('0x9')](_0xe195('0x7b'),require(_0xe195('0x7c')));_0x2243e9[_0xe195('0x9')](_0xe195('0x7d'),require(_0xe195('0x7e')));_0x2243e9[_0xe195('0x9')]('/api/templates',require(_0xe195('0x7f')));_0x2243e9['use'](_0xe195('0x80'),require(_0xe195('0x81')));_0x2243e9[_0xe195('0x9')]('/api/variables',require('./api/variable'));_0x2243e9[_0xe195('0x9')](_0xe195('0x82'),require(_0xe195('0x83')));_0x2243e9[_0xe195('0x9')](_0xe195('0x84'),require(_0xe195('0x85')));_0x2243e9[_0xe195('0x9')](_0xe195('0x86'),require(_0xe195('0x87')));_0x2243e9[_0xe195('0x9')](_0xe195('0x88'),require(_0xe195('0x89')));_0x2243e9[_0xe195('0x9')](_0xe195('0x8a'),require(_0xe195('0x8b')));_0x2243e9[_0xe195('0x9')](_0xe195('0x8c'),require(_0xe195('0x8d')));_0x2243e9[_0xe195('0x9')]('/api/analytics/field_reports',require(_0xe195('0x8e')));_0x2243e9[_0xe195('0x9')](_0xe195('0x8f'),require(_0xe195('0x90')));_0x2243e9[_0xe195('0x9')](_0xe195('0x91'),require('./api/intSalesforceAccount'));_0x2243e9['use'](_0xe195('0x92'),require(_0xe195('0x93')));_0x2243e9[_0xe195('0x9')]('/api/integrations/salesforce/fields',require(_0xe195('0x94')));_0x2243e9[_0xe195('0x9')]('/api/integrations/sugarcrm/accounts',require(_0xe195('0x95')));_0x2243e9[_0xe195('0x9')]('/api/integrations/sugarcrm/configurations',require(_0xe195('0x96')));_0x2243e9['use'](_0xe195('0x97'),require(_0xe195('0x98')));_0x2243e9[_0xe195('0x9')](_0xe195('0x99'),require(_0xe195('0x9a')));_0x2243e9[_0xe195('0x9')](_0xe195('0x9b'),require('./api/intDeskConfiguration'));_0x2243e9[_0xe195('0x9')](_0xe195('0x9c'),require(_0xe195('0x9d')));_0x2243e9[_0xe195('0x9')](_0xe195('0x9e'),require(_0xe195('0x9f')));_0x2243e9[_0xe195('0x9')](_0xe195('0xa0'),require(_0xe195('0xa1')));_0x2243e9[_0xe195('0x9')](_0xe195('0xa2'),require(_0xe195('0xa3')));_0x2243e9[_0xe195('0x9')](_0xe195('0xa4'),require(_0xe195('0xa5')));_0x2243e9['use'](_0xe195('0xa6'),require(_0xe195('0xa7')));_0x2243e9[_0xe195('0x9')](_0xe195('0xa8'),require(_0xe195('0xa9')));_0x2243e9['use'](_0xe195('0xaa'),require(_0xe195('0xab')));_0x2243e9[_0xe195('0x9')](_0xe195('0xac'),require(_0xe195('0xad')));_0x2243e9[_0xe195('0x9')](_0xe195('0xae'),require(_0xe195('0xaf')));_0x2243e9[_0xe195('0x9')](_0xe195('0xb0'),require(_0xe195('0xb1')));_0x2243e9[_0xe195('0x9')](_0xe195('0xb2'),require(_0xe195('0xb3')));_0x2243e9['use'](_0xe195('0xb4'),require('./api/intVtigerField'));_0x2243e9[_0xe195('0x9')]('/api/integrations/servicenow/accounts',require(_0xe195('0xb5')));_0x2243e9[_0xe195('0x9')]('/api/integrations/servicenow/configurations',require('./api/intServicenowConfiguration'));_0x2243e9[_0xe195('0x9')](_0xe195('0xb6'),require('./api/intServicenowField'));_0x2243e9[_0xe195('0x9')](_0xe195('0xb7'),require('./api/intDynamics365Account'));_0x2243e9[_0xe195('0x9')](_0xe195('0xb8'),require(_0xe195('0xb9')));_0x2243e9[_0xe195('0x9')]('/api/integrations/dynamics365/fields',require('./api/intDynamics365Field'));_0x2243e9['use'](_0xe195('0xba'),require('./api/intFreshsalesAccount'));_0x2243e9['use'](_0xe195('0xbb'),require(_0xe195('0xbc')));_0x2243e9[_0xe195('0x9')]('/api/integrations/freshsales/fields',require('./api/intFreshsalesField'));_0x2243e9[_0xe195('0x9')](_0xe195('0xbd'),require(_0xe195('0xbe')));_0x2243e9['use'](_0xe195('0xbf'),require(_0xe195('0xc0')));_0x2243e9[_0xe195('0x9')](_0xe195('0xc1'),require(_0xe195('0xc2')));_0x2243e9[_0xe195('0x9')](_0xe195('0xc3'),require(_0xe195('0xc4')));_0x2243e9[_0xe195('0x9')](_0xe195('0xc5'),require('./api/jscriptyQuestionReport'));_0x2243e9[_0xe195('0x9')](_0xe195('0xc6'),require(_0xe195('0xc7')));_0x2243e9[_0xe195('0x9')]('/api/sms/reports/queue',require(_0xe195('0xc8')));_0x2243e9[_0xe195('0x9')](_0xe195('0xc9'),require(_0xe195('0xca')));_0x2243e9[_0xe195('0x9')](_0xe195('0xcb'),require(_0xe195('0xcc')));_0x2243e9['use'](_0xe195('0xcd'),require(_0xe195('0xce')));_0x2243e9[_0xe195('0x9')](_0xe195('0xcf'),require('./api/setting'));_0x2243e9['use'](_0xe195('0xd0'),require(_0xe195('0xd1')));_0x2243e9[_0xe195('0x9')](_0xe195('0xd2'),require(_0xe195('0xd3')));_0x2243e9[_0xe195('0x9')]('/api/square/recordings',require('./api/squareRecording'));_0x2243e9[_0xe195('0x9')](_0xe195('0xd4'),require(_0xe195('0xd5')));_0x2243e9[_0xe195('0x9')](_0xe195('0xd6'),require(_0xe195('0xd7')));_0x2243e9[_0xe195('0x9')](_0xe195('0xd8'),require('./api/license'));_0x2243e9[_0xe195('0x9')](_0xe195('0xd9'),require(_0xe195('0xda')));_0x2243e9[_0xe195('0x9')](_0xe195('0xdb'),require('./api/migration'));_0x2243e9[_0xe195('0x9')](_0xe195('0xdc'),require('./api/attachment'));_0x2243e9[_0xe195('0x9')](_0xe195('0xdd'),require('./api/plugin'));_0x2243e9[_0xe195('0x9')](_0xe195('0xde'),require('./api/mailTransferReport'));_0x2243e9[_0xe195('0x9')](_0xe195('0xdf'),require(_0xe195('0xe0')));_0x2243e9[_0xe195('0x9')](_0xe195('0xe1'),require(_0xe195('0xe2')));_0x2243e9[_0xe195('0x9')](_0xe195('0xe3'),require(_0xe195('0xe4')));_0x2243e9[_0xe195('0x9')]('/api/sms/reports/transfer',require(_0xe195('0xe5')));_0x2243e9['use'](_0xe195('0xe6'),require('./api/cmList'));_0x2243e9['use'](_0xe195('0xe7'),require(_0xe195('0xe8')));_0x2243e9[_0xe195('0x9')]('/api/userProfiles',require(_0xe195('0xe9')));_0x2243e9[_0xe195('0x9')](_0xe195('0xea'),require(_0xe195('0xeb')));_0x2243e9[_0xe195('0x9')](_0xe195('0xec'),require(_0xe195('0xed')));_0x2243e9[_0xe195('0x9')](_0xe195('0xee'),require(_0xe195('0xef')));_0x2243e9[_0xe195('0x9')](_0xe195('0xf0'),require('./api/whatsappAccount'));_0x2243e9[_0xe195('0x9')]('/api/whatsapp/applications',require(_0xe195('0xf1')));_0x2243e9[_0xe195('0x9')](_0xe195('0xf2'),require(_0xe195('0xf3')));_0x2243e9[_0xe195('0x9')](_0xe195('0xf4'),require(_0xe195('0xf5')));_0x2243e9[_0xe195('0x9')](_0xe195('0xf6'),require('./api/whatsappQueueReport'));_0x2243e9[_0xe195('0x9')](_0xe195('0xf7'),require(_0xe195('0xf8')));_0x2243e9[_0xe195('0x9')](_0xe195('0xf9'),require(_0xe195('0xfa')));_0x2243e9[_0xe195('0x9')](_0xe195('0xfb'),require('./api/cloudProvider'));_0x2243e9[_0xe195('0x9')](_0xe195('0xfc'),require('./api/realtime'));_0x2243e9[_0xe195('0x9')]('/api/user-settings',require(_0xe195('0xfd')));_0x2243e9['use'](_0xe195('0xfe'),require('./api/authLocal'));_0x2243e9[_0xe195('0x9')](_0xe195('0xff'),require(_0xe195('0x100')));_0x2243e9[_0xe195('0x9')]('/api/auth/activedirectory',require(_0xe195('0x101')));_0x2243e9[_0xe195('0x9')](_0xe195('0x102'),require(_0xe195('0x103')));_0x2243e9[_0xe195('0x9')](_0xe195('0x104'),require(_0xe195('0x105')));_0x2243e9[_0xe195('0x9')](_0xe195('0x106'),require(_0xe195('0x107')));_0x2243e9['use']('/api/system',require(_0xe195('0x108')));_0x2243e9['use'](_0xe195('0x109'),require('./api/pm2'));_0x2243e9[_0xe195('0x9')](_0xe195('0x10a'),require(_0xe195('0x10b')));_0x2243e9[_0xe195('0x9')](_0xe195('0x10c'),clientSideLogs);_0x2243e9['use'](_0xe195('0x10d'),express[_0xe195('0x10e')](path[_0xe195('0x10f')](config['root'],_0xe195('0x10d'))));_0x2243e9[_0xe195('0x9')](_0xe195('0x110'),express[_0xe195('0x10e')](path['join'](config['root'],_0xe195('0x110'))));_0x2243e9['use'](_0xe195('0x111'),express[_0xe195('0x10e')](path[_0xe195('0x10f')](config['root'],_0xe195('0x111'))));_0x2243e9[_0xe195('0x9')](_0xe195('0x112'),express['static'](path['join'](config['root'],_0xe195('0x113'),_0xe195('0x114'))));_0x2243e9['use'](_0xe195('0x115'),express[_0xe195('0x10e')](path[_0xe195('0x10f')](config[_0xe195('0x116')],'/server/files/plugins')));_0x2243e9[_0xe195('0x117')](_0xe195('0x118'))[_0xe195('0x119')](errors[0x194]);_0x2243e9['route']('/*')[_0xe195('0x119')](function(_0x426c9d,_0x1aa68a){_0x1aa68a[_0xe195('0x11a')](path[_0xe195('0x11b')](_0x2243e9[_0xe195('0x119')](_0xe195('0x11c'))+'/index.html'));});return _0x2243e9;});};
\ No newline at end of file
index 19edf1a..a325e8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1067=['../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intDeskAccount/intDeskAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/plugin/plugin.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappQueue/whatsappQueue.rpc','http','rpc','port','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','RPC\x20listening\x20on\x20','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/memberReport/memberReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.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/faxAccount/faxAccount.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsMessage/smsMessage.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc'];(function(_0x53b41e,_0x1a738d){var _0xa12883=function(_0x3b7693){while(--_0x3b7693){_0x53b41e['push'](_0x53b41e['shift']());}};_0xa12883(++_0x1a738d);}(_0x1067,0xa8));var _0x7106=function(_0x403be8,_0x2eccc5){_0x403be8=_0x403be8-0x0;var _0x467f57=_0x1067[_0x403be8];return _0x467f57;};'use strict';var jayson=require('jayson/promise');var _=require(_0x7106('0x0'));var config=require(_0x7106('0x1'));exports[_0x7106('0x2')]=function(){return new Promise(function(_0x48a7f2,_0x5da5b3){var _0x362025={};_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x4')));_0x362025=_['merge'](_0x362025,require(_0x7106('0x5')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x6')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/voiceRecording/voiceRecording.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x7')));_0x362025=_['merge'](_0x362025,require(_0x7106('0x8')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x9')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x362025=_['merge'](_0x362025,require(_0x7106('0xa')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/trunk/trunk.rpc'));_0x362025=_['merge'](_0x362025,require('../api/voiceTransferReport/voiceTransferReport.rpc'));_0x362025=_['merge'](_0x362025,require(_0x7106('0xb')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/mailServerIn/mailServerIn.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0xc')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0xd')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0xe')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0xf')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x10')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x11')));_0x362025=_['merge'](_0x362025,require(_0x7106('0x12')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x13')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x14')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/faxMessage/faxMessage.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/faxQueue/faxQueue.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x15')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x16')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/smsInteraction/smsInteraction.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x17')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/smsQueue/smsQueue.rpc'));_0x362025=_['merge'](_0x362025,require(_0x7106('0x18')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x19')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x1a')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/openchannelQueue/openchannelQueue.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x1b')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/chatInteraction/chatInteraction.rpc'));_0x362025=_['merge'](_0x362025,require(_0x7106('0x1c')));_0x362025=_['merge'](_0x362025,require(_0x7106('0x1d')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x1e')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x1f')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x20')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x21')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x22')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x23')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/interval/interval.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x24')));_0x362025=_['merge'](_0x362025,require(_0x7106('0x25')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x26')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x27')));_0x362025=_['merge'](_0x362025,require(_0x7106('0x28')));_0x362025=_['merge'](_0x362025,require(_0x7106('0x29')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x2a')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x2b')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x2c')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x2d')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x2e')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/intServicenowAccount/intServicenowAccount.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x2f')));_0x362025=_['merge'](_0x362025,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x30')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x31')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/squareReport/squareReport.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x32')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/setting/setting.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x33')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x34')));_0x362025=_['merge'](_0x362025,require(_0x7106('0x35')));_0x362025=_['merge'](_0x362025,require(_0x7106('0x36')));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x37')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/attachment/attachment.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x38')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/whatsappAccount/whatsappAccount.rpc'));_0x362025=_['merge'](_0x362025,require(_0x7106('0x39')));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/whatsappMessage/whatsappMessage.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0x362025=_[_0x7106('0x3')](_0x362025,require(_0x7106('0x3a')));var _0x4fc08e=jayson['server'](_0x362025)[_0x7106('0x3b')]();var _0x3f98b8=config[_0x7106('0x3c')]['port']||config[_0x7106('0x3d')]+0x1;var _0x165118=config[_0x7106('0x3c')]['ip']||'localhost';_0x4fc08e['on'](_0x7106('0x3e'),function(_0x44848b){return _0x5da5b3(_0x44848b);});_0x4fc08e[_0x7106('0x2')](_0x3f98b8,_0x165118,function(){console[_0x7106('0x3f')](_0x7106('0x40'),_0x165118,_0x3f98b8);require(_0x7106('0x41'))['default']();return _0x48a7f2(_0x7106('0x42')+_0x165118+':'+_0x3f98b8);});});};
\ No newline at end of file
+var _0x6fcf=['listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailQueue/mailQueue.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxQueue/faxQueue.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/variable/variable.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','rpc','port','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','RPC\x20listening\x20on\x20','jayson/promise','lodash'];(function(_0x2ba35f,_0xa18db9){var _0x22d5a5=function(_0x447854){while(--_0x447854){_0x2ba35f['push'](_0x2ba35f['shift']());}};_0x22d5a5(++_0xa18db9);}(_0x6fcf,0x1a2));var _0xf6fc=function(_0x225b4e,_0x179ee4){_0x225b4e=_0x225b4e-0x0;var _0x24237a=_0x6fcf[_0x225b4e];return _0x24237a;};'use strict';var jayson=require(_0xf6fc('0x0'));var _=require(_0xf6fc('0x1'));var config=require('../config/environment');exports[_0xf6fc('0x2')]=function(){return new Promise(function(_0x468339,_0x20bdd7){var _0x1e4c2f={};_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x4')));_0x1e4c2f=_['merge'](_0x1e4c2f,require(_0xf6fc('0x5')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x6')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x7')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x8')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x9')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0xa')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0xb')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require('../api/memberReport/memberReport.rpc'));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require('../api/trunk/trunk.rpc'));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0xc')));_0x1e4c2f=_['merge'](_0x1e4c2f,require(_0xf6fc('0xd')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0xe')));_0x1e4c2f=_['merge'](_0x1e4c2f,require('../api/mailAccount/mailAccount.rpc'));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0xf')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require('../api/mailInteraction/mailInteraction.rpc'));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x10')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x11')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x12')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require('../api/faxAccount/faxAccount.rpc'));_0x1e4c2f=_['merge'](_0x1e4c2f,require(_0xf6fc('0x13')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x14')));_0x1e4c2f=_['merge'](_0x1e4c2f,require('../api/faxMessage/faxMessage.rpc'));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x15')));_0x1e4c2f=_['merge'](_0x1e4c2f,require('../api/faxQueueReport/faxQueueReport.rpc'));_0x1e4c2f=_['merge'](_0x1e4c2f,require('../api/smsAccount/smsAccount.rpc'));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x16')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x17')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require('../api/smsQueue/smsQueue.rpc'));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x18')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x19')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x1a')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require('../api/openchannelQueue/openchannelQueue.rpc'));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x1b')));_0x1e4c2f=_['merge'](_0x1e4c2f,require(_0xf6fc('0x1c')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x1d')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x1e')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x1f')));_0x1e4c2f=_['merge'](_0x1e4c2f,require(_0xf6fc('0x20')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require('../api/cmHopperBlack/cmHopperBlack.rpc'));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require('../api/cmHopperHistory/cmHopperHistory.rpc'));_0x1e4c2f=_['merge'](_0x1e4c2f,require(_0xf6fc('0x21')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require('../api/interval/interval.rpc'));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x22')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x23')));_0x1e4c2f=_['merge'](_0x1e4c2f,require(_0xf6fc('0x24')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x25')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x26')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x27')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x28')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x29')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x2a')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x2b')));_0x1e4c2f=_['merge'](_0x1e4c2f,require('../api/intFreshdeskAccount/intFreshdeskAccount.rpc'));_0x1e4c2f=_['merge'](_0x1e4c2f,require(_0xf6fc('0x2c')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x2d')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x2e')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x2f')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x30')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x31')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x32')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require('../api/setting/setting.rpc'));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require('../api/squareOdbc/squareOdbc.rpc'));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x33')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x34')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x35')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x36')));_0x1e4c2f=_['merge'](_0x1e4c2f,require(_0xf6fc('0x37')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x38')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x39')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x3a')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x3b')));_0x1e4c2f=_[_0xf6fc('0x3')](_0x1e4c2f,require(_0xf6fc('0x3c')));var _0xddd34e=jayson[_0xf6fc('0x3d')](_0x1e4c2f)['http']();var _0x55c481=config[_0xf6fc('0x3e')]['port']||config[_0xf6fc('0x3f')]+0x1;var _0x242b29=config['rpc']['ip']||_0xf6fc('0x40');_0xddd34e['on'](_0xf6fc('0x41'),function(_0x45fdc3){return _0x20bdd7(_0x45fdc3);});_0xddd34e[_0xf6fc('0x2')](_0x55c481,_0x242b29,function(){console[_0xf6fc('0x42')](_0xf6fc('0x43'),_0x242b29,_0x55c481);require(_0xf6fc('0x44'))['default']();return _0x468339(_0xf6fc('0x45')+_0x242b29+':'+_0x55c481);});});};
\ No newline at end of file
index 8a49750..63107a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee87=['close','timeout','E_AGI_SOCKET_TIMEOUT','destroy','command','write','inherits','prototype','sendRequest','sync','ANSWER','beep','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','NO\x20MESSAGE','format','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','setVariable','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','extension','GOTO\x20%s\x20%s\x20%s','GET\x20VARIABLE\x20\x22%s\x22','wav','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','lodash','events','EventEmitter','./reply','./error','setEncoding','setTimeout','utf8','headers','ready','toLowerCase','hangup','emit','substring','520\x20End\x20of\x20proper','function','no\x20code','replace','result=','indexOf','substr','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR'];(function(_0x441db3,_0x10f359){var _0x16c05d=function(_0x4c0d4e){while(--_0x4c0d4e){_0x441db3['push'](_0x441db3['shift']());}};_0x16c05d(++_0x10f359);}(_0xee87,0x10d));var _0x7ee8=function(_0x451b12,_0x20d74b){_0x451b12=_0x451b12-0x0;var _0x3d884d=_0xee87[_0x451b12];return _0x3d884d;};'use strict';var util=require('util');var _=require(_0x7ee8('0x0'));var EventEmitter=require(_0x7ee8('0x1'))[_0x7ee8('0x2')];var AGIReply=require(_0x7ee8('0x3'));var AGIError=require(_0x7ee8('0x4'));function AGIChannel(_0x3c3176){var _0x41c2cc=this,_0x2f1867=new AGIReply(),_0x32466c=![],_0x23a89c={};EventEmitter['call'](_0x41c2cc);_0x3c3176[_0x7ee8('0x5')]('utf8');_0x3c3176[_0x7ee8('0x6')](0x8*0x3c*0x3c*0x3e8);_0x2f1867[_0x7ee8('0x5')](_0x7ee8('0x7'));_0x2f1867['on'](_0x7ee8('0x8'),function(_0x287224){for(var _0x5e8a72 in _0x287224){_0x41c2cc[_0x5e8a72]=_0x287224[_0x5e8a72];}_0x41c2cc['emit'](_0x7ee8('0x9'));});_0x2f1867['on']('line',function(_0x511d54){if(_0x511d54[_0x7ee8('0xa')]()==_0x7ee8('0xb')){_0x41c2cc[_0x7ee8('0xc')](_0x7ee8('0xb'));return;}if(_0x511d54[_0x7ee8('0xd')](0x0,0xb)=='520-Invalid'){_0x32466c=!![];}if(_0x32466c){_0x23a89c['rx']+=_0x511d54+'\x0a';if(_0x511d54['search'](_0x7ee8('0xe'))!=-0x1){_0x32466c=![];}}else{_0x23a89c['rx']=_0x511d54;}if(_0x32466c){return;}if(typeof _0x23a89c['cb']==_0x7ee8('0xf')){var _0x39a4cd=_0x23a89c['rx'][_0x7ee8('0xd')](0x0,0x3),_0x36e82a=null,_0xb4a1bc=null;_0x39a4cd=parseInt(_0x39a4cd);if(isNaN(_0x39a4cd)){_0x23a89c['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x7ee8('0x10')});return;}if(_0x39a4cd!=0xc8){_0x23a89c['cb'](null,{'code':_0x39a4cd,'result':-0x1,'extra':'KO'});return;}_0x36e82a=_0x23a89c['rx'][_0x7ee8('0xd')](0x4)[_0x7ee8('0x11')](_0x7ee8('0x12'),'');if(_0x36e82a[_0x7ee8('0x13')]('\x20')!=-0x1){_0x36e82a=_0x36e82a[_0x7ee8('0x14')](0x0,_0x36e82a[_0x7ee8('0x13')]('\x20'));}if(_[_0x7ee8('0x15')](_0x36e82a,'-1')){_0x36e82a=parseInt(_0x36e82a);}_0xb4a1bc=_0x23a89c['rx'][_0x7ee8('0x16')]('\x20');if(_0xb4a1bc[_0x7ee8('0x17')]==0x3){_0xb4a1bc=_0xb4a1bc[0x2][_0x7ee8('0xd')](0x1,_0xb4a1bc[0x2][_0x7ee8('0x17')]-0x1);}else if(_0xb4a1bc[_0x7ee8('0x17')]>0x3){var _0x3de0b8=/\((.+)\)/;var _0x459f0e=_0x23a89c['rx'][_0x7ee8('0x18')](_0x3de0b8);if(_0x459f0e){_0xb4a1bc=_0x459f0e[0x1];}else{_0xb4a1bc=null;}}else{_0xb4a1bc=null;}_0x23a89c['cb'](null,{'code':_0x39a4cd,'result':_0x36e82a,'extra':_0xb4a1bc});}});_0x3c3176['on'](_0x7ee8('0x19'),function(_0x4028a7){_0x41c2cc[_0x7ee8('0xc')]('error',new AGIError(_0x7ee8('0x1a'),_0x4028a7['code']));});_0x3c3176['on'](_0x7ee8('0x1b'),function(){_0x41c2cc[_0x7ee8('0xc')]('close',new AGIError('E_AGI_SOCKET_CLOSE'));});_0x3c3176['on'](_0x7ee8('0x1c'),function(){_0x41c2cc[_0x7ee8('0xc')](_0x7ee8('0x1c'),new AGIError(_0x7ee8('0x1d')));_0x3c3176[_0x7ee8('0x1e')]();});_0x3c3176['pipe'](_0x2f1867);this[_0x7ee8('0x1f')]=function(_0x43485e,_0x334b46){var _0x43485e=_0x43485e||'',_0x334b46=typeof _0x334b46==_0x7ee8('0xf')?_0x334b46:new Function();_0x23a89c={'tx':_0x43485e,'rx':'','cb':_0x334b46};_0x3c3176[_0x7ee8('0x20')](_0x43485e+'\x0a');},this[_0x7ee8('0x1b')]=function(){_0x3c3176['destroy']();};}util[_0x7ee8('0x21')](AGIChannel,EventEmitter);AGIChannel[_0x7ee8('0x22')][_0x7ee8('0x23')]=function(_0x5568cb){return this[_0x7ee8('0x1f')][_0x7ee8('0x24')](this,_0x5568cb);};AGIChannel[_0x7ee8('0x22')]['answer']=function(){return this[_0x7ee8('0x23')](_0x7ee8('0x25'));};AGIChannel[_0x7ee8('0x22')]['getData']=function(_0x27c94c,_0x4c360d,_0x4d23fb){_0x27c94c=_0x27c94c===undefined?_0x7ee8('0x26'):_0x27c94c;_0x4c360d=_0x4c360d===undefined?'5':_0x4c360d;_0x4d23fb=_0x4d23fb===undefined?'1':_0x4d23fb;return this[_0x7ee8('0x23')](util['format'](_0x7ee8('0x27'),_0x27c94c,_0x4c360d*0x3e8,_0x4d23fb));};AGIChannel['prototype'][_0x7ee8('0x28')]=function(_0x5e81d7){_0x5e81d7=_0x5e81d7||_0x7ee8('0x29');return this['sendRequest'](util[_0x7ee8('0x2a')](_0x7ee8('0x2b'),_0x5e81d7));};AGIChannel['prototype'][_0x7ee8('0x2c')]=function(_0x1f34c5,_0x2d8809){if(_[_0x7ee8('0x2d')](_0x2d8809)){return this[_0x7ee8('0x23')](util[_0x7ee8('0x2a')](_0x7ee8('0x2e'),_0x1f34c5,_0x2d8809['join'](',')));}return this[_0x7ee8('0x23')](util['format'](_0x7ee8('0x2e'),_0x1f34c5,_0x2d8809));};AGIChannel[_0x7ee8('0x22')][_0x7ee8('0x2f')]=function(_0x344796){return this['sendRequest'](util[_0x7ee8('0x2a')](_0x7ee8('0x30'),_0x344796));};AGIChannel['prototype'][_0x7ee8('0x31')]=function(_0x279f88){return this[_0x7ee8('0x23')](util[_0x7ee8('0x2a')](_0x7ee8('0x32'),_0x279f88));};AGIChannel['prototype'][_0x7ee8('0x33')]=function(_0x340852){return this[_0x7ee8('0x23')](util['format'](_0x7ee8('0x34'),_0x340852));};AGIChannel['prototype'][_0x7ee8('0xb')]=function(){return this[_0x7ee8('0x23')]('HANGUP');};AGIChannel[_0x7ee8('0x22')][_0x7ee8('0x35')]=function(_0x2105f2,_0x5d5b62){var _0x3004e7=_['isBoolean'](_0x5d5b62)||_[_0x7ee8('0x36')](_0x5d5b62)?_0x5d5b62[_0x7ee8('0x37')]():_0x5d5b62;return this[_0x7ee8('0x23')](util[_0x7ee8('0x2a')](_0x7ee8('0x38'),_0x2105f2,_0x3004e7?_0x3004e7[_0x7ee8('0x37')]()[_0x7ee8('0x11')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x7ee8('0x22')][_0x7ee8('0x39')]=function(_0x465ab0,_0x33fd9b){return this[_0x7ee8('0x23')](util[_0x7ee8('0x2a')](_0x7ee8('0x3a'),_0x465ab0,_0x33fd9b));};AGIChannel['prototype']['sayDigits']=function(_0x3442e7,_0x4d095f){return this[_0x7ee8('0x23')](util[_0x7ee8('0x2a')](_0x7ee8('0x3b'),_0x3442e7,_0x4d095f));};AGIChannel[_0x7ee8('0x22')][_0x7ee8('0x3c')]=function(_0x1c996b,_0x28b493){return this[_0x7ee8('0x23')](util[_0x7ee8('0x2a')](_0x7ee8('0x3d'),_0x1c996b,_0x28b493));};AGIChannel[_0x7ee8('0x22')][_0x7ee8('0x3e')]=function(_0x11f352,_0x3ef618,_0x23c3c2){_0x3ef618=_0x3ef618||this[_0x7ee8('0x3f')];_0x23c3c2=_0x23c3c2||0x1;this[_0x7ee8('0x2f')](_0x11f352);this[_0x7ee8('0x31')](_0x3ef618);this[_0x7ee8('0x33')](_0x23c3c2);return this[_0x7ee8('0x28')](util['format'](_0x7ee8('0x40'),_0x11f352,_0x3ef618,_0x23c3c2));};AGIChannel[_0x7ee8('0x22')]['getVariable']=function(_0x16bd01){return this[_0x7ee8('0x23')](util['format'](_0x7ee8('0x41'),_0x16bd01));};AGIChannel[_0x7ee8('0x22')]['recordFile']=function(_0x2f00de,_0x533cb3,_0x56abcc,_0x4cee21,_0x52e167,_0x274aa4){_0x533cb3=_0x533cb3||_0x7ee8('0x42');_0x56abcc=_0x56abcc||'';_0x4cee21=_0x4cee21===undefined?-0x1:_0x4cee21==='-1'?-0x1:_0x4cee21*0x3e8;_0x52e167=_0x52e167===undefined?'':'s='+_0x52e167;_0x274aa4=_0x274aa4?'BEEP':'';return this[_0x7ee8('0x23')](util[_0x7ee8('0x2a')](_0x7ee8('0x43'),_0x2f00de,_0x533cb3,_0x56abcc,_0x4cee21,_0x274aa4,_0x52e167));};AGIChannel[_0x7ee8('0x22')][_0x7ee8('0x44')]=function(_0x9dc270,_0x183fae){_0x183fae=_0x183fae||'';return this[_0x7ee8('0x23')](util['format'](_0x7ee8('0x45'),_0x9dc270,_0x183fae));};AGIChannel[_0x7ee8('0x22')]['agi']=function(_0xd5d48a){return this['exec']('AGI',_0xd5d48a);};AGIChannel[_0x7ee8('0x22')]['wait']=function(_0xdd4aa5){return this[_0x7ee8('0x2c')](_0x7ee8('0x46'),_0xdd4aa5);};AGIChannel['prototype'][_0x7ee8('0x19')]=function(_0x58bc66,_0xf0d68e){this[_0x7ee8('0x28')](util['format'](_0x7ee8('0x47'),_0x58bc66['id'],_0x58bc66[_0x7ee8('0x48')],_0xf0d68e));return{'code':0x1f4,'result':'-1','extra':''};};module[_0x7ee8('0x49')]=AGIChannel;
\ No newline at end of file
+var _0x228b=['520\x20End\x20of\x20proper','replace','result=','indexOf','substr','startsWith','split','length','match','error','emit','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','command','function','write','sync','prototype','answer','sendRequest','ANSWER','getData','beep','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','isArray','join','EXEC\x20%s\x20%s','setContext','SET\x20EXTENSION\x20%s','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isBoolean','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayNumber','SAY\x20NUMBER\x20%s\x20%s','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','continueAt','setPriority','noop','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','exec','AGI','wait','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','exports','lodash','EventEmitter','./reply','./error','utf8','setEncoding','ready','toLowerCase','hangup','substring','520-Invalid','search'];(function(_0x488818,_0x17c6de){var _0x30783c=function(_0x1b418c){while(--_0x1b418c){_0x488818['push'](_0x488818['shift']());}};_0x30783c(++_0x17c6de);}(_0x228b,0x1f3));var _0xb228=function(_0x4cc12a,_0x2457c8){_0x4cc12a=_0x4cc12a-0x0;var _0x3ee602=_0x228b[_0x4cc12a];return _0x3ee602;};'use strict';var util=require('util');var _=require(_0xb228('0x0'));var EventEmitter=require('events')[_0xb228('0x1')];var AGIReply=require(_0xb228('0x2'));var AGIError=require(_0xb228('0x3'));function AGIChannel(_0x50b1a6){var _0x34993e=this,_0x31d7a8=new AGIReply(),_0x25e55e=![],_0x5ae51d={};EventEmitter['call'](_0x34993e);_0x50b1a6['setEncoding'](_0xb228('0x4'));_0x50b1a6['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x31d7a8[_0xb228('0x5')](_0xb228('0x4'));_0x31d7a8['on']('headers',function(_0x8ab89c){for(var _0x41b80e in _0x8ab89c){_0x34993e[_0x41b80e]=_0x8ab89c[_0x41b80e];}_0x34993e['emit'](_0xb228('0x6'));});_0x31d7a8['on']('line',function(_0x453450){if(_0x453450[_0xb228('0x7')]()==_0xb228('0x8')){_0x34993e['emit'](_0xb228('0x8'));return;}if(_0x453450[_0xb228('0x9')](0x0,0xb)==_0xb228('0xa')){_0x25e55e=!![];}if(_0x25e55e){_0x5ae51d['rx']+=_0x453450+'\x0a';if(_0x453450[_0xb228('0xb')](_0xb228('0xc'))!=-0x1){_0x25e55e=![];}}else{_0x5ae51d['rx']=_0x453450;}if(_0x25e55e){return;}if(typeof _0x5ae51d['cb']=='function'){var _0x535621=_0x5ae51d['rx']['substring'](0x0,0x3),_0x212bb5=null,_0x42fda0=null;_0x535621=parseInt(_0x535621);if(isNaN(_0x535621)){_0x5ae51d['cb'](null,{'code':0x1f4,'result':-0x1,'extra':'no\x20code'});return;}if(_0x535621!=0xc8){_0x5ae51d['cb'](null,{'code':_0x535621,'result':-0x1,'extra':'KO'});return;}_0x212bb5=_0x5ae51d['rx'][_0xb228('0x9')](0x4)[_0xb228('0xd')](_0xb228('0xe'),'');if(_0x212bb5[_0xb228('0xf')]('\x20')!=-0x1){_0x212bb5=_0x212bb5[_0xb228('0x10')](0x0,_0x212bb5[_0xb228('0xf')]('\x20'));}if(_[_0xb228('0x11')](_0x212bb5,'-1')){_0x212bb5=parseInt(_0x212bb5);}_0x42fda0=_0x5ae51d['rx'][_0xb228('0x12')]('\x20');if(_0x42fda0[_0xb228('0x13')]==0x3){_0x42fda0=_0x42fda0[0x2][_0xb228('0x9')](0x1,_0x42fda0[0x2]['length']-0x1);}else if(_0x42fda0[_0xb228('0x13')]>0x3){var _0x87d0df=/\((.+)\)/;var _0x2a4117=_0x5ae51d['rx'][_0xb228('0x14')](_0x87d0df);if(_0x2a4117){_0x42fda0=_0x2a4117[0x1];}else{_0x42fda0=null;}}else{_0x42fda0=null;}_0x5ae51d['cb'](null,{'code':_0x535621,'result':_0x212bb5,'extra':_0x42fda0});}});_0x50b1a6['on'](_0xb228('0x15'),function(_0x29b8d7){_0x34993e[_0xb228('0x16')]('error',new AGIError('E_AGI_SOCKET_ERROR',_0x29b8d7['code']));});_0x50b1a6['on'](_0xb228('0x17'),function(){_0x34993e[_0xb228('0x16')](_0xb228('0x17'),new AGIError(_0xb228('0x18')));});_0x50b1a6['on'](_0xb228('0x19'),function(){_0x34993e[_0xb228('0x16')](_0xb228('0x19'),new AGIError(_0xb228('0x1a')));_0x50b1a6[_0xb228('0x1b')]();});_0x50b1a6['pipe'](_0x31d7a8);this[_0xb228('0x1c')]=function(_0x297976,_0x5097c1){var _0x297976=_0x297976||'',_0x5097c1=typeof _0x5097c1==_0xb228('0x1d')?_0x5097c1:new Function();_0x5ae51d={'tx':_0x297976,'rx':'','cb':_0x5097c1};_0x50b1a6[_0xb228('0x1e')](_0x297976+'\x0a');},this[_0xb228('0x17')]=function(){_0x50b1a6['destroy']();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel['prototype']['sendRequest']=function(_0x46467d){return this[_0xb228('0x1c')][_0xb228('0x1f')](this,_0x46467d);};AGIChannel[_0xb228('0x20')][_0xb228('0x21')]=function(){return this[_0xb228('0x22')](_0xb228('0x23'));};AGIChannel[_0xb228('0x20')][_0xb228('0x24')]=function(_0x38b531,_0x233681,_0x31b184){_0x38b531=_0x38b531===undefined?_0xb228('0x25'):_0x38b531;_0x233681=_0x233681===undefined?'5':_0x233681;_0x31b184=_0x31b184===undefined?'1':_0x31b184;return this[_0xb228('0x22')](util[_0xb228('0x26')](_0xb228('0x27'),_0x38b531,_0x233681*0x3e8,_0x31b184));};AGIChannel[_0xb228('0x20')]['noop']=function(_0x38bd83){_0x38bd83=_0x38bd83||_0xb228('0x28');return this['sendRequest'](util[_0xb228('0x26')](_0xb228('0x29'),_0x38bd83));};AGIChannel['prototype']['exec']=function(_0x1412d4,_0x5c49e8){if(_[_0xb228('0x2a')](_0x5c49e8)){return this[_0xb228('0x22')](util[_0xb228('0x26')]('EXEC\x20%s\x20%s',_0x1412d4,_0x5c49e8[_0xb228('0x2b')](',')));}return this['sendRequest'](util['format'](_0xb228('0x2c'),_0x1412d4,_0x5c49e8));};AGIChannel[_0xb228('0x20')][_0xb228('0x2d')]=function(_0xf997df){return this[_0xb228('0x22')](util['format']('SET\x20CONTEXT\x20%s',_0xf997df));};AGIChannel['prototype']['setExtension']=function(_0x4f5af1){return this[_0xb228('0x22')](util[_0xb228('0x26')](_0xb228('0x2e'),_0x4f5af1));};AGIChannel['prototype']['setPriority']=function(_0x445d61){return this[_0xb228('0x22')](util[_0xb228('0x26')](_0xb228('0x2f'),_0x445d61));};AGIChannel[_0xb228('0x20')][_0xb228('0x8')]=function(){return this['sendRequest'](_0xb228('0x30'));};AGIChannel[_0xb228('0x20')][_0xb228('0x31')]=function(_0x48d077,_0x498927){var _0xcba00f=_[_0xb228('0x32')](_0x498927)||_['isNumber'](_0x498927)?_0x498927['toString']():_0x498927;return this['sendRequest'](util[_0xb228('0x26')](_0xb228('0x33'),_0x48d077,_0xcba00f?_0xcba00f['toString']()['replace'](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xb228('0x20')][_0xb228('0x34')]=function(_0x14be52,_0x2e85b1){return this['sendRequest'](util[_0xb228('0x26')](_0xb228('0x35'),_0x14be52,_0x2e85b1));};AGIChannel['prototype']['sayDigits']=function(_0x366db4,_0x32689f){return this[_0xb228('0x22')](util[_0xb228('0x26')](_0xb228('0x36'),_0x366db4,_0x32689f));};AGIChannel[_0xb228('0x20')][_0xb228('0x37')]=function(_0x365dbe,_0x5f0e82){return this[_0xb228('0x22')](util[_0xb228('0x26')](_0xb228('0x38'),_0x365dbe,_0x5f0e82));};AGIChannel[_0xb228('0x20')][_0xb228('0x39')]=function(_0x2e7cac,_0x26ea6b,_0xd98dde){_0x26ea6b=_0x26ea6b||this['extension'];_0xd98dde=_0xd98dde||0x1;this[_0xb228('0x2d')](_0x2e7cac);this['setExtension'](_0x26ea6b);this[_0xb228('0x3a')](_0xd98dde);return this[_0xb228('0x3b')](util[_0xb228('0x26')](_0xb228('0x3c'),_0x2e7cac,_0x26ea6b,_0xd98dde));};AGIChannel[_0xb228('0x20')][_0xb228('0x3d')]=function(_0x185b3e){return this[_0xb228('0x22')](util[_0xb228('0x26')](_0xb228('0x3e'),_0x185b3e));};AGIChannel[_0xb228('0x20')][_0xb228('0x3f')]=function(_0x3048d2,_0xa3aafe,_0x39cd9d,_0x32e2d6,_0x1b298d,_0x4bef7c){_0xa3aafe=_0xa3aafe||'wav';_0x39cd9d=_0x39cd9d||'';_0x32e2d6=_0x32e2d6===undefined?-0x1:_0x32e2d6==='-1'?-0x1:_0x32e2d6*0x3e8;_0x1b298d=_0x1b298d===undefined?'':'s='+_0x1b298d;_0x4bef7c=_0x4bef7c?'BEEP':'';return this[_0xb228('0x22')](util[_0xb228('0x26')]('RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s',_0x3048d2,_0xa3aafe,_0x39cd9d,_0x32e2d6,_0x4bef7c,_0x1b298d));};AGIChannel[_0xb228('0x20')][_0xb228('0x40')]=function(_0x4ce5c5,_0x23ef43){_0x23ef43=_0x23ef43||'';return this[_0xb228('0x22')](util[_0xb228('0x26')](_0xb228('0x41'),_0x4ce5c5,_0x23ef43));};AGIChannel[_0xb228('0x20')][_0xb228('0x42')]=function(_0x127fb7){return this[_0xb228('0x43')](_0xb228('0x44'),_0x127fb7);};AGIChannel[_0xb228('0x20')][_0xb228('0x45')]=function(_0x59c8d4){return this['exec']('WAIT',_0x59c8d4);};AGIChannel[_0xb228('0x20')]['error']=function(_0x3511c5,_0x529ab9){this[_0xb228('0x3b')](util[_0xb228('0x26')](_0xb228('0x46'),_0x3511c5['id'],_0x3511c5[_0xb228('0x47')],_0x529ab9));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xb228('0x48')]=AGIChannel;
\ No newline at end of file
index ac1e834..95c605e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee70=['name','exports','util','Undefined\x20error.','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\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'];(function(_0x42601,_0x5b7123){var _0x2c722b=function(_0x3dc2d4){while(--_0x3dc2d4){_0x42601['push'](_0x42601['shift']());}};_0x2c722b(++_0x5b7123);}(_0xee70,0x134));var _0x0ee7=function(_0xb4881c,_0x106be3){_0xb4881c=_0xb4881c-0x0;var _0x181cdd=_0xee70[_0xb4881c];return _0x181cdd;};'use strict';var util=require(_0x0ee7('0x0'));var error={'E_AGI_UNDEFINED':_0x0ee7('0x1'),'E_AGI_ARGUMENT_PORT':_0x0ee7('0x2'),'E_AGI_SERVER_ERROR':_0x0ee7('0x3'),'E_AGI_SERVER_CLOSE':_0x0ee7('0x4'),'E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':_0x0ee7('0x5'),'E_AGI_SOCKET_ERROR':_0x0ee7('0x6'),'E_AGI_SOCKET_CLOSE':'Socket\x20closed.','E_AGI_SOCKET_TIMEOUT':_0x0ee7('0x7'),'E_AGI_COMMAND_EMPTY':_0x0ee7('0x8'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x0ee7('0x9'),'E_AGI_IVR_ENTRY':_0x0ee7('0xa')};function AGIError(_0x5a9fc6){var _0x5a9fc6=_0x5a9fc6||null,_0x296229=_0x296229||[],_0x53f058=0x1,_0x40b4ce='';if(!error[_0x5a9fc6]){_0x5a9fc6=_0x0ee7('0xb');}_0x296229[_0x0ee7('0xc')](error[_0x5a9fc6]);while(arguments[_0x53f058]){_0x296229[_0x0ee7('0xc')](arguments[_0x53f058]);_0x53f058++;}_0x40b4ce=util[_0x0ee7('0xd')][_0x0ee7('0xe')](util,_0x296229);this[_0x0ee7('0xf')]=_0x40b4ce;this[_0x0ee7('0x10')]=_0x5a9fc6;}module[_0x0ee7('0x11')]=AGIError;
\ No newline at end of file
+var _0xdea5=['exports','util','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20closed.','Socket\x20timeout.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','push','format','apply','message','name'];(function(_0x172068,_0x2b5cc4){var _0xcb308a=function(_0x1db178){while(--_0x1db178){_0x172068['push'](_0x172068['shift']());}};_0xcb308a(++_0x2b5cc4);}(_0xdea5,0x12d));var _0x5dea=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdea5[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x5dea('0x0'));var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':_0x5dea('0x1'),'E_AGI_SERVER_CLOSE':_0x5dea('0x2'),'E_AGI_SERVER_MAXCONNECTION':_0x5dea('0x3'),'E_AGI_SERVER_VOICE_DISABLED':_0x5dea('0x4'),'E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':_0x5dea('0x5'),'E_AGI_SOCKET_TIMEOUT':_0x5dea('0x6'),'E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x5dea('0x7'),'E_AGI_IVR_ENTRY':_0x5dea('0x8')};function AGIError(_0x23db0b){var _0x23db0b=_0x23db0b||null,_0x28bb2a=_0x28bb2a||[],_0x3ea452=0x1,_0x5011e0='';if(!error[_0x23db0b]){_0x23db0b='E_AGI_UNDEFINED';}_0x28bb2a['push'](error[_0x23db0b]);while(arguments[_0x3ea452]){_0x28bb2a[_0x5dea('0x9')](arguments[_0x3ea452]);_0x3ea452++;}_0x5011e0=util[_0x5dea('0xa')][_0x5dea('0xb')](util,_0x28bb2a);this[_0x5dea('0xc')]=_0x5011e0;this[_0x5dea('0xd')]=_0x23db0b;}module[_0x5dea('0xe')]=AGIError;
\ No newline at end of file
index 1a61f15..15c077a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdca3=['localhost','subscribe','agi','emit','error','parse','projectUpdate','exports','events','./error','../../config/environment','redis'];(function(_0x34ddc1,_0x38aeda){var _0x44aa1c=function(_0xac01be){while(--_0xac01be){_0x34ddc1['push'](_0x34ddc1['shift']());}};_0x44aa1c(++_0x38aeda);}(_0xdca3,0xf8));var _0x3dca=function(_0x10e18f,_0x58c2d3){_0x10e18f=_0x10e18f-0x0;var _0x2372cd=_0xdca3[_0x10e18f];return _0x2372cd;};'use strict';var _=require('lodash');var EventEmitter=require(_0x3dca('0x0'))['EventEmitter'];var Redis=require('ioredis');var AGIError=require(_0x3dca('0x1'));var config=require(_0x3dca('0x2'));config[_0x3dca('0x3')]=_['defaults'](config[_0x3dca('0x3')],{'host':_0x3dca('0x4'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0x3dca('0x3')]);sub[_0x3dca('0x5')](_0x3dca('0x6'),function(_0x54c34c){if(_0x54c34c)return eventEmitter[_0x3dca('0x7')](_0x3dca('0x8'),new AGIError('E_AGI_SERVER_ERROR',_0x54c34c));});sub['on']('message',function(_0x3b4af2,_0x4ae475){if(_0x3b4af2!==_0x3dca('0x6'))return;try{var _0x2fcf50=JSON[_0x3dca('0x9')](_0x4ae475);eventEmitter[_0x3dca('0x7')](_0x3dca('0xa'),_0x2fcf50);}catch(_0x64e562){eventEmitter[_0x3dca('0x7')](_0x3dca('0x8'),new AGIError('E_AGI_SERVER_ERROR',_0x64e562));}});module[_0x3dca('0xb')]={'EventEmitter':eventEmitter};
\ No newline at end of file
+var _0x0f91=['events','EventEmitter','ioredis','./error','redis','defaults','localhost','subscribe','agi','emit','message','parse','projectUpdate','error','exports','lodash'];(function(_0x46aaac,_0x1c3fb5){var _0xcffb5e=function(_0x122362){while(--_0x122362){_0x46aaac['push'](_0x46aaac['shift']());}};_0xcffb5e(++_0x1c3fb5);}(_0x0f91,0x16f));var _0x10f9=function(_0xee588,_0x368239){_0xee588=_0xee588-0x0;var _0x58dd1a=_0x0f91[_0xee588];return _0x58dd1a;};'use strict';var _=require(_0x10f9('0x0'));var EventEmitter=require(_0x10f9('0x1'))[_0x10f9('0x2')];var Redis=require(_0x10f9('0x3'));var AGIError=require(_0x10f9('0x4'));var config=require('../../config/environment');config[_0x10f9('0x5')]=_[_0x10f9('0x6')](config[_0x10f9('0x5')],{'host':_0x10f9('0x7'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0x10f9('0x5')]);sub[_0x10f9('0x8')](_0x10f9('0x9'),function(_0x559ca4){if(_0x559ca4)return eventEmitter[_0x10f9('0xa')]('error',new AGIError('E_AGI_SERVER_ERROR',_0x559ca4));});sub['on'](_0x10f9('0xb'),function(_0xb28d3,_0x287278){if(_0xb28d3!==_0x10f9('0x9'))return;try{var _0x2ed2f0=JSON[_0x10f9('0xc')](_0x287278);eventEmitter[_0x10f9('0xa')](_0x10f9('0xd'),_0x2ed2f0);}catch(_0x4e5054){eventEmitter[_0x10f9('0xa')](_0x10f9('0xe'),new AGIError('E_AGI_SERVER_ERROR',_0x4e5054));}});module[_0x10f9('0xf')]={'EventEmitter':eventEmitter};
\ No newline at end of file
index 2b20664..f8b4091 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6266=['no\x20edge/s\x20available','condition','agicommand','vswitch','target','default','invalid','default\x20on\x20switch\x20not\x20found','includes','lodash','../../../config/logger','agi','menu','getsecretdigits','vertices','edges','numberOfEdges','prototype','addVertex','addEdge','push','size','relations','traverseBFS','no\x20vertex\x20found','info','stop\x20traverse','length'];(function(_0x3fabc0,_0x12033e){var _0x5c4484=function(_0x3dd427){while(--_0x3dd427){_0x3fabc0['push'](_0x3fabc0['shift']());}};_0x5c4484(++_0x12033e);}(_0x6266,0x1e5));var _0x6626=function(_0x5041a2,_0x2cbc56){_0x5041a2=_0x5041a2-0x0;var _0xa6aeef=_0x6266[_0x5041a2];return _0xa6aeef;};'use strict';var _=require(_0x6626('0x0'));var logger=require(_0x6626('0x1'))(_0x6626('0x2'));var verticesWithRetry=[_0x6626('0x3'),'getdigits',_0x6626('0x4')];var Graph=function(){this[_0x6626('0x5')]={};this[_0x6626('0x6')]={};this[_0x6626('0x7')]=0x0;};Graph[_0x6626('0x8')][_0x6626('0x9')]=function(_0xb5e38e){this['vertices'][_0xb5e38e['id']]=_0xb5e38e;this['edges'][_0xb5e38e['id']]=[];};Graph['prototype'][_0x6626('0xa')]=function(_0x5aa2e0,_0x3daf24,_0x4badc5){this[_0x6626('0x6')][_0x5aa2e0][_0x6626('0xb')]({'target':_0x3daf24,'condition':_0x4badc5});this[_0x6626('0x7')]+=0x1;};Graph[_0x6626('0x8')][_0x6626('0xc')]=function(){return _[_0x6626('0xc')](this['vertices']);};Graph[_0x6626('0x8')][_0x6626('0xd')]=function(){return this[_0x6626('0x7')];};Graph[_0x6626('0x8')]['getVertex']=function(_0x386965){return this[_0x6626('0x5')][_0x386965];};Graph[_0x6626('0x8')][_0x6626('0xe')]=function(_0x9610a3,_0x51957d){if(!this[_0x6626('0x5')][_0x9610a3]){return logger['info'](_0x6626('0xf'));}var _0x288fd7=_0x51957d(this['vertices'][_0x9610a3]);if(!_0x288fd7){return logger[_0x6626('0x10')](_0x6626('0x11'));}if(this[_0x6626('0x6')][_0x9610a3][_0x6626('0x12')]===0x0){return logger[_0x6626('0x10')](_0x6626('0x13'));}for(var _0x2e6763=0x0,_0x26c1bf=[],_0x33b5d8=![];_0x2e6763<this['edges'][_0x9610a3]['length'];_0x2e6763+=0x1){if(this['edges'][_0x9610a3][_0x2e6763][_0x6626('0x14')]){_0x26c1bf=this[_0x6626('0x6')][_0x9610a3][_0x2e6763][_0x6626('0x14')]['split'](',');for(var _0x47e889=0x0;_0x47e889<_0x26c1bf[_0x6626('0x12')];_0x47e889+=0x1){if(this[_0x6626('0x5')][_0x9610a3][_0x6626('0x15')]===_0x6626('0x16')&&_0x26c1bf[_0x47e889]==='-'){_0x33b5d8=this['edges'][_0x9610a3][_0x2e6763][_0x6626('0x17')];logger['info'](_0x6626('0x18'),_0x26c1bf[_0x47e889],this[_0x6626('0x6')][_0x9610a3][_0x2e6763][_0x6626('0x17')]);}else if(this[_0x6626('0x5')][_0x9610a3][_0x6626('0x15')]===_0x6626('0x3')&&_0x26c1bf[_0x47e889]==='i'){_0x33b5d8=this[_0x6626('0x6')][_0x9610a3][_0x2e6763][_0x6626('0x17')];logger[_0x6626('0x10')](_0x6626('0x19'),_0x26c1bf[_0x47e889],this['edges'][_0x9610a3][_0x2e6763][_0x6626('0x17')]);}if(_0x26c1bf[_0x47e889]===_0x288fd7){return this[_0x6626('0xe')](this[_0x6626('0x6')][_0x9610a3][_0x2e6763]['target'],_0x51957d);}}}else{return this['traverseBFS'](this[_0x6626('0x6')][_0x9610a3][_0x2e6763]['target'],_0x51957d);}}if(_0x26c1bf[_0x6626('0x12')]){if(this[_0x6626('0x5')][_0x9610a3][_0x6626('0x15')]===_0x6626('0x16')){if(_0x33b5d8){return this[_0x6626('0xe')](_0x33b5d8,_0x51957d);}return logger[_0x6626('0x10')](_0x6626('0x1a'));}else if(_[_0x6626('0x1b')](verticesWithRetry,this[_0x6626('0x5')][_0x9610a3][_0x6626('0x15')])){if(_0x288fd7==='-'){return logger[_0x6626('0x10')]('max\x20retry\x20reach');}if(_0x33b5d8&&_0x288fd7!=='t'){return this['traverseBFS'](_0x33b5d8,_0x51957d);}return this[_0x6626('0xe')](_0x9610a3,_0x51957d);}return logger[_0x6626('0x10')]('condition\x20not\x20found');}};module['exports']=Graph;
\ No newline at end of file
+var _0xcfb2=['addEdge','relations','getVertex','traverseBFS','info','stop\x20traverse','length','no\x20edge/s\x20available','condition','split','agicommand','vswitch','target','default','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','exports','lodash','menu','getdigits','getsecretdigits','vertices','edges','numberOfEdges','prototype','addVertex'];(function(_0xa1c3d3,_0x8f4596){var _0x87448c=function(_0x2d8580){while(--_0x2d8580){_0xa1c3d3['push'](_0xa1c3d3['shift']());}};_0x87448c(++_0x8f4596);}(_0xcfb2,0xf3));var _0x2cfb=function(_0x4caaf4,_0x419ded){_0x4caaf4=_0x4caaf4-0x0;var _0x3924bd=_0xcfb2[_0x4caaf4];return _0x3924bd;};'use strict';var _=require(_0x2cfb('0x0'));var logger=require('../../../config/logger')('agi');var verticesWithRetry=[_0x2cfb('0x1'),_0x2cfb('0x2'),_0x2cfb('0x3')];var Graph=function(){this[_0x2cfb('0x4')]={};this[_0x2cfb('0x5')]={};this[_0x2cfb('0x6')]=0x0;};Graph[_0x2cfb('0x7')][_0x2cfb('0x8')]=function(_0x4e1c45){this[_0x2cfb('0x4')][_0x4e1c45['id']]=_0x4e1c45;this['edges'][_0x4e1c45['id']]=[];};Graph[_0x2cfb('0x7')][_0x2cfb('0x9')]=function(_0x4a321a,_0x29f1e5,_0x277418){this[_0x2cfb('0x5')][_0x4a321a]['push']({'target':_0x29f1e5,'condition':_0x277418});this[_0x2cfb('0x6')]+=0x1;};Graph[_0x2cfb('0x7')]['size']=function(){return _['size'](this[_0x2cfb('0x4')]);};Graph[_0x2cfb('0x7')][_0x2cfb('0xa')]=function(){return this['numberOfEdges'];};Graph[_0x2cfb('0x7')][_0x2cfb('0xb')]=function(_0x3fa9e7){return this[_0x2cfb('0x4')][_0x3fa9e7];};Graph[_0x2cfb('0x7')][_0x2cfb('0xc')]=function(_0x8f64f0,_0x4570cf){if(!this['vertices'][_0x8f64f0]){return logger[_0x2cfb('0xd')]('no\x20vertex\x20found');}var _0xc58321=_0x4570cf(this['vertices'][_0x8f64f0]);if(!_0xc58321){return logger[_0x2cfb('0xd')](_0x2cfb('0xe'));}if(this['edges'][_0x8f64f0][_0x2cfb('0xf')]===0x0){return logger[_0x2cfb('0xd')](_0x2cfb('0x10'));}for(var _0x478e81=0x0,_0x133c36=[],_0x27fd95=![];_0x478e81<this[_0x2cfb('0x5')][_0x8f64f0]['length'];_0x478e81+=0x1){if(this[_0x2cfb('0x5')][_0x8f64f0][_0x478e81][_0x2cfb('0x11')]){_0x133c36=this[_0x2cfb('0x5')][_0x8f64f0][_0x478e81][_0x2cfb('0x11')][_0x2cfb('0x12')](',');for(var _0xcb72ee=0x0;_0xcb72ee<_0x133c36['length'];_0xcb72ee+=0x1){if(this[_0x2cfb('0x4')][_0x8f64f0][_0x2cfb('0x13')]===_0x2cfb('0x14')&&_0x133c36[_0xcb72ee]==='-'){_0x27fd95=this['edges'][_0x8f64f0][_0x478e81][_0x2cfb('0x15')];logger[_0x2cfb('0xd')](_0x2cfb('0x16'),_0x133c36[_0xcb72ee],this[_0x2cfb('0x5')][_0x8f64f0][_0x478e81]['target']);}else if(this[_0x2cfb('0x4')][_0x8f64f0][_0x2cfb('0x13')]===_0x2cfb('0x1')&&_0x133c36[_0xcb72ee]==='i'){_0x27fd95=this[_0x2cfb('0x5')][_0x8f64f0][_0x478e81]['target'];logger[_0x2cfb('0xd')]('invalid',_0x133c36[_0xcb72ee],this['edges'][_0x8f64f0][_0x478e81][_0x2cfb('0x15')]);}if(_0x133c36[_0xcb72ee]===_0xc58321){return this[_0x2cfb('0xc')](this[_0x2cfb('0x5')][_0x8f64f0][_0x478e81][_0x2cfb('0x15')],_0x4570cf);}}}else{return this[_0x2cfb('0xc')](this[_0x2cfb('0x5')][_0x8f64f0][_0x478e81][_0x2cfb('0x15')],_0x4570cf);}}if(_0x133c36[_0x2cfb('0xf')]){if(this[_0x2cfb('0x4')][_0x8f64f0][_0x2cfb('0x13')]===_0x2cfb('0x14')){if(_0x27fd95){return this[_0x2cfb('0xc')](_0x27fd95,_0x4570cf);}return logger['info'](_0x2cfb('0x17'));}else if(_[_0x2cfb('0x18')](verticesWithRetry,this[_0x2cfb('0x4')][_0x8f64f0][_0x2cfb('0x13')])){if(_0xc58321==='-'){return logger[_0x2cfb('0xd')](_0x2cfb('0x19'));}if(_0x27fd95&&_0xc58321!=='t'){return this[_0x2cfb('0xc')](_0x27fd95,_0x4570cf);}return this[_0x2cfb('0xc')](_0x8f64f0,_0x4570cf);}return logger['info'](_0x2cfb('0x1a'));}};module[_0x2cfb('0x1b')]=Graph;
\ No newline at end of file
index 9d83d3c..96d13a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50ff=['splice','stack','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[ERROR]\x20%s','arg_1','calleridname','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','createSquareReport','then','hasOwnProperty','agi_','substring','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','close','timeout','hangup','find','production','handleUnpublished','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','catch','[LICENSE]','finally','./server','listening','connection','syncho','util','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','EventEmitter','defaults','127.0.0.1','error','findIndex','deleted'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x50ff,0xdb));var _0xf50f=function(_0x52cf9b,_0x854ca0){_0x52cf9b=_0x52cf9b-0x0;var _0x36b498=_0x50ff[_0x52cf9b];return _0x36b498;};'use strict';var _=require('lodash');var syncho=require(_0xf50f('0x0'));var util=require(_0xf50f('0x1'));var config=require(_0xf50f('0x2'));var logger=require(_0xf50f('0x3'))(_0xf50f('0x4'));var utilLicense=require(_0xf50f('0x5'));var rpc=require(_0xf50f('0x6'));var Project=require('./project');var AGIEmitter=require('./events')[_0xf50f('0x7')];var projects=[];config[_0xf50f('0x4')]=_[_0xf50f('0x8')](config[_0xf50f('0x4')],{'ip':_0xf50f('0x9'),'port':0x11dd});AGIEmitter['on']('projectUpdate',projectUpdateHandler);function connectionHandler(_0x4c7fa0){process['nextTick'](function(){syncho(function(){try{setChannelVariables(_0x4c7fa0);agiHandler(_0x4c7fa0);}catch(_0x56c537){logger[_0xf50f('0xa')](_0x56c537['stack']);}});});}function projectUpdateHandler(_0x18969){try{var _0x4b7bbd=_[_0xf50f('0xb')](projects,['id',_0x18969['id']]);if(_0x4b7bbd>-0x1){if(_0x18969[_0xf50f('0xc')]===!![]){projects[_0xf50f('0xd')](_0x4b7bbd,0x1);}else{projects[_0x4b7bbd]=_0x18969;}}else{projects['push'](_0x18969);}}catch(_0x1c7212){logger[_0xf50f('0xa')](_0x1c7212[_0xf50f('0xe')]);}}function listeningHandler(){console[_0xf50f('0xf')](_0xf50f('0x10'),config[_0xf50f('0x4')][_0xf50f('0x11')]);logger[_0xf50f('0x12')](util[_0xf50f('0x13')](_0xf50f('0x14'),config['agi']['ip'],config[_0xf50f('0x4')][_0xf50f('0x11')]));}function errorHandler(_0x54b0be){if(_0x54b0be&&_0x54b0be[_0xf50f('0x15')]&&_0x54b0be[_0xf50f('0x16')]){logger[_0xf50f('0xa')](util[_0xf50f('0x13')]('[%s]\x20%s',_0x54b0be[_0xf50f('0x15')],_0x54b0be[_0xf50f('0x16')]));}else{logger[_0xf50f('0xa')](util[_0xf50f('0x13')](_0xf50f('0x17'),_0x54b0be[_0xf50f('0xe')]));}}function closeHandler(){logger[_0xf50f('0x12')](util[_0xf50f('0x13')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xf50f('0x18')],this[_0xf50f('0x19')],this[_0xf50f('0x1a')],this[_0xf50f('0x1b')],this[_0xf50f('0x1c')]));try{createSquareReport(this);}catch(_0x1d65bf){logger[_0xf50f('0xa')](_0x1d65bf[_0xf50f('0xe')]);}}function timeoutHandler(){logger[_0xf50f('0x12')](util['format'](_0xf50f('0x1d'),this[_0xf50f('0x18')],this[_0xf50f('0x19')],this[_0xf50f('0x1a')],this[_0xf50f('0x1b')],this[_0xf50f('0x1c')]));}function hangupHandler(){logger[_0xf50f('0x12')](util[_0xf50f('0x13')](_0xf50f('0x1e'),this[_0xf50f('0x18')],this['calleridname'],this[_0xf50f('0x1a')],this[_0xf50f('0x1b')],this[_0xf50f('0x1c')]));this[_0xf50f('0x1f')]=!![];}function createSquareReport(_0x2a1b12,_0x1e3f19){rpc[_0xf50f('0x20')](_0x2a1b12)[_0xf50f('0x21')](function(_0x447f56){if(_0x1e3f19){_0x1e3f19(null,_0x447f56);}})['catch'](function(_0x793ac4){if(_0x1e3f19){_0x1e3f19(null,_0x793ac4);}});}function setChannelVariables(_0x56eb0f){for(var _0x22ef00 in _0x56eb0f){if(_0x56eb0f[_0xf50f('0x22')](_0x22ef00)){if(_0x22ef00['indexOf'](_0xf50f('0x23'))===0x0){_0x56eb0f[_0x22ef00[_0xf50f('0x24')](0x4)]=_0x56eb0f[_0x22ef00];delete _0x56eb0f[_0x22ef00];}}}}function agiHandler(_0x5c6adc){logger['debug'](_0xf50f('0x25'),JSON[_0xf50f('0x26')](_0x5c6adc,null,0x2));logger[_0xf50f('0x12')](util[_0xf50f('0x13')](_0xf50f('0x27'),_0x5c6adc[_0xf50f('0x18')],_0x5c6adc['calleridname'],_0x5c6adc[_0xf50f('0x1a')],_0x5c6adc[_0xf50f('0x1b')],_0x5c6adc[_0xf50f('0x1c')]));_0x5c6adc['on'](_0xf50f('0xa'),errorHandler);_0x5c6adc['on'](_0xf50f('0x28'),closeHandler);_0x5c6adc['on'](_0xf50f('0x29'),timeoutHandler);_0x5c6adc[_0xf50f('0x1f')]=![];_0x5c6adc['on'](_0xf50f('0x2a'),hangupHandler);var _0x4c8d5f=_[_0xf50f('0x2b')](projects,['name',_0x5c6adc[_0xf50f('0x18')]]);if(!_0x4c8d5f)return Project['handleNotFound'](_0x5c6adc);if(!_0x4c8d5f[_0xf50f('0x2c')])return Project[_0xf50f('0x2d')](_0x5c6adc);return Project['initialize'](_0x4c8d5f,_0x5c6adc);}function main(){var _0x8ba57e;return utilLicense[_0xf50f('0x2e')]()[_0xf50f('0x21')](function(_0x18fcf2){if(!_0x18fcf2)return;if(_0x18fcf2[_0xf50f('0x2f')]){if(_0x18fcf2[_0xf50f('0x30')]&&_0x18fcf2['callysquare']>0x0){logger[_0xf50f('0x12')](util[_0xf50f('0x13')]('[LICENSE]\x20CHANNELS:\x20%s',_0x18fcf2[_0xf50f('0x30')]));_0x8ba57e=_0x18fcf2[_0xf50f('0x30')];}else{logger['info'](_0xf50f('0x31'));}}else{logger[_0xf50f('0x12')](_0xf50f('0x32'));_0x8ba57e=-0x1;}})[_0xf50f('0x21')](function(){return Project[_0xf50f('0x33')]();})[_0xf50f('0x21')](function(_0x192ffb){projects=_0x192ffb;return;})[_0xf50f('0x34')](function(_0x4c0332){logger[_0xf50f('0xa')](_0xf50f('0x35'),_0x4c0332['stack']);})[_0xf50f('0x36')](function(){var _0x5213bc=require(_0xf50f('0x37'))(config[_0xf50f('0x4')][_0xf50f('0x11')],config[_0xf50f('0x4')]['ip'],_0x8ba57e);_0x5213bc['on'](_0xf50f('0xa'),errorHandler);_0x5213bc['on'](_0xf50f('0x38'),listeningHandler);_0x5213bc['on'](_0xf50f('0x39'),connectionHandler);_0x5213bc['on'](_0xf50f('0x28'),closeHandler);});}main();
\ No newline at end of file
+var _0x65f1=['listening','connection','lodash','syncho','util','../../config/environment','../../config/logger','agi','../../config/license/util','./rpc','./project','./events','EventEmitter','defaults','127.0.0.1','projectUpdate','nextTick','stack','findIndex','deleted','splice','push','error','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','format','name','message','[%s]\x20%s','[ERROR]\x20%s','info','[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','callerid','dnid','uniqueid','arg_1','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','createSquareReport','catch','hasOwnProperty','agi_','substring','variables','stringify','close','timeout','hangup','find','handleNotFound','handleUnpublished','initialize','then','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','finally','./server'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x65f1,0x1f2));var _0x165f=function(_0x115d5b,_0x26aff2){_0x115d5b=_0x115d5b-0x0;var _0x6cfc50=_0x65f1[_0x115d5b];return _0x6cfc50;};'use strict';var _=require(_0x165f('0x0'));var syncho=require(_0x165f('0x1'));var util=require(_0x165f('0x2'));var config=require(_0x165f('0x3'));var logger=require(_0x165f('0x4'))(_0x165f('0x5'));var utilLicense=require(_0x165f('0x6'));var rpc=require(_0x165f('0x7'));var Project=require(_0x165f('0x8'));var AGIEmitter=require(_0x165f('0x9'))[_0x165f('0xa')];var projects=[];config[_0x165f('0x5')]=_[_0x165f('0xb')](config[_0x165f('0x5')],{'ip':_0x165f('0xc'),'port':0x11dd});AGIEmitter['on'](_0x165f('0xd'),projectUpdateHandler);function connectionHandler(_0x20db6f){process[_0x165f('0xe')](function(){syncho(function(){try{setChannelVariables(_0x20db6f);agiHandler(_0x20db6f);}catch(_0x942a18){logger['error'](_0x942a18[_0x165f('0xf')]);}});});}function projectUpdateHandler(_0x4b7b92){try{var _0x50e739=_[_0x165f('0x10')](projects,['id',_0x4b7b92['id']]);if(_0x50e739>-0x1){if(_0x4b7b92[_0x165f('0x11')]===!![]){projects[_0x165f('0x12')](_0x50e739,0x1);}else{projects[_0x50e739]=_0x4b7b92;}}else{projects[_0x165f('0x13')](_0x4b7b92);}}catch(_0x525e93){logger[_0x165f('0x14')](_0x525e93[_0x165f('0xf')]);}}function listeningHandler(){console[_0x165f('0x15')](_0x165f('0x16'),config['agi'][_0x165f('0x17')]);logger['info'](util[_0x165f('0x18')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config[_0x165f('0x5')]['ip'],config['agi']['port']));}function errorHandler(_0x308809){if(_0x308809&&_0x308809[_0x165f('0x19')]&&_0x308809[_0x165f('0x1a')]){logger[_0x165f('0x14')](util[_0x165f('0x18')](_0x165f('0x1b'),_0x308809[_0x165f('0x19')],_0x308809['message']));}else{logger[_0x165f('0x14')](util[_0x165f('0x18')](_0x165f('0x1c'),_0x308809['stack']));}}function closeHandler(){logger[_0x165f('0x1d')](util[_0x165f('0x18')](_0x165f('0x1e'),this['arg_1'],this[_0x165f('0x1f')],this[_0x165f('0x20')],this[_0x165f('0x21')],this[_0x165f('0x22')]));try{createSquareReport(this);}catch(_0x51840b){logger[_0x165f('0x14')](_0x51840b[_0x165f('0xf')]);}}function timeoutHandler(){logger[_0x165f('0x1d')](util[_0x165f('0x18')]('[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x165f('0x23')],this[_0x165f('0x1f')],this[_0x165f('0x20')],this[_0x165f('0x21')],this[_0x165f('0x22')]));}function hangupHandler(){logger['info'](util[_0x165f('0x18')](_0x165f('0x24'),this[_0x165f('0x23')],this['calleridname'],this[_0x165f('0x20')],this[_0x165f('0x21')],this['uniqueid']));this['evtHangup']=!![];}function createSquareReport(_0x2771c8,_0x43f143){rpc[_0x165f('0x25')](_0x2771c8)['then'](function(_0x3448b4){if(_0x43f143){_0x43f143(null,_0x3448b4);}})[_0x165f('0x26')](function(_0x1e3931){if(_0x43f143){_0x43f143(null,_0x1e3931);}});}function setChannelVariables(_0x123034){for(var _0x2311b0 in _0x123034){if(_0x123034[_0x165f('0x27')](_0x2311b0)){if(_0x2311b0['indexOf'](_0x165f('0x28'))===0x0){_0x123034[_0x2311b0[_0x165f('0x29')](0x4)]=_0x123034[_0x2311b0];delete _0x123034[_0x2311b0];}}}}function agiHandler(_0x2aef0d){logger['debug'](_0x165f('0x2a'),JSON[_0x165f('0x2b')](_0x2aef0d,null,0x2));logger['info'](util[_0x165f('0x18')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x2aef0d[_0x165f('0x23')],_0x2aef0d[_0x165f('0x1f')],_0x2aef0d[_0x165f('0x20')],_0x2aef0d[_0x165f('0x21')],_0x2aef0d[_0x165f('0x22')]));_0x2aef0d['on'](_0x165f('0x14'),errorHandler);_0x2aef0d['on'](_0x165f('0x2c'),closeHandler);_0x2aef0d['on'](_0x165f('0x2d'),timeoutHandler);_0x2aef0d['evtHangup']=![];_0x2aef0d['on'](_0x165f('0x2e'),hangupHandler);var _0x138b5a=_[_0x165f('0x2f')](projects,['name',_0x2aef0d['arg_1']]);if(!_0x138b5a)return Project[_0x165f('0x30')](_0x2aef0d);if(!_0x138b5a['production'])return Project[_0x165f('0x31')](_0x2aef0d);return Project[_0x165f('0x32')](_0x138b5a,_0x2aef0d);}function main(){var _0x4ddc98;return utilLicense['getLicense']()[_0x165f('0x33')](function(_0x59d8cc){if(!_0x59d8cc)return;if(_0x59d8cc[_0x165f('0x34')]){if(_0x59d8cc[_0x165f('0x35')]&&_0x59d8cc[_0x165f('0x35')]>0x0){logger[_0x165f('0x1d')](util[_0x165f('0x18')](_0x165f('0x36'),_0x59d8cc[_0x165f('0x35')]));_0x4ddc98=_0x59d8cc[_0x165f('0x35')];}else{logger['info'](_0x165f('0x37'));}}else{logger[_0x165f('0x1d')](_0x165f('0x38'));_0x4ddc98=-0x1;}})['then'](function(){return Project[_0x165f('0x39')]();})[_0x165f('0x33')](function(_0x26b517){projects=_0x26b517;return;})[_0x165f('0x26')](function(_0x532685){logger['error']('[LICENSE]',_0x532685[_0x165f('0xf')]);})[_0x165f('0x3a')](function(){var _0x552de4=require(_0x165f('0x3b'))(config[_0x165f('0x5')][_0x165f('0x17')],config['agi']['ip'],_0x4ddc98);_0x552de4['on'](_0x165f('0x14'),errorHandler);_0x552de4['on'](_0x165f('0x3c'),listeningHandler);_0x552de4['on'](_0x165f('0x3d'),connectionHandler);_0x552de4['on'](_0x165f('0x2c'),closeHandler);});}main();
\ No newline at end of file
index 41727ca..ce20093 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcae9=['catch','sendMailMessage','SendMail','bluebird','jayson/promise','http','then','error','result'];(function(_0x1ef85e,_0x4e431a){var _0x2ff8fa=function(_0x855afb){while(--_0x855afb){_0x1ef85e['push'](_0x1ef85e['shift']());}};_0x2ff8fa(++_0x4e431a);}(_0xcae9,0x1f2));var _0x9cae=function(_0x25efdf,_0x521462){_0x25efdf=_0x25efdf-0x0;var _0x22c495=_0xcae9[_0x25efdf];return _0x22c495;};'use strict';var BPromise=require(_0x9cae('0x0'));var jayson=require(_0x9cae('0x1'));var client=jayson['client'][_0x9cae('0x2')]({'port':0x232b});function request(_0x8d579,_0x1bc8e0){return new BPromise(function(_0x5e57b8,_0x5d143c){return client['request'](_0x8d579,_0x1bc8e0)[_0x9cae('0x3')](function(_0x3e3623){if(_0x3e3623['error']){return _0x5d143c(_0x3e3623[_0x9cae('0x4')]['message']);}else{return _0x5e57b8(_0x3e3623[_0x9cae('0x5')]);}})[_0x9cae('0x6')](function(_0x4129d3){return _0x5d143c(_0x4129d3);});});}exports[_0x9cae('0x7')]=function(_0x817ab5,_0x5ea064){return request(_0x9cae('0x8'),{'account':_0x817ab5,'message':_0x5ea064});};
\ No newline at end of file
+var _0x70a7=['message','SendMail','bluebird','jayson/promise','client','http','then','error'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x70a7,0x13a));var _0x770a=function(_0x44946b,_0xf874ec){_0x44946b=_0x44946b-0x0;var _0x249bc4=_0x70a7[_0x44946b];return _0x249bc4;};'use strict';var BPromise=require(_0x770a('0x0'));var jayson=require(_0x770a('0x1'));var client=jayson[_0x770a('0x2')][_0x770a('0x3')]({'port':0x232b});function request(_0x48faf6,_0x2e097f){return new BPromise(function(_0x3aaf4a,_0xaa450b){return client['request'](_0x48faf6,_0x2e097f)[_0x770a('0x4')](function(_0x5dedea){if(_0x5dedea['error']){return _0xaa450b(_0x5dedea[_0x770a('0x5')][_0x770a('0x6')]);}else{return _0x3aaf4a(_0x5dedea['result']);}})['catch'](function(_0x33fa65){return _0xaa450b(_0x33fa65);});});}exports['sendMailMessage']=function(_0x211ce9,_0x3f54ba){return request(_0x770a('0x7'),{'account':_0x211ce9,'message':_0x3f54ba});};
\ No newline at end of file
index 0fae371..6f9c13d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e1f=['YYYY-MM-DD\x20HH:mm:ss','mxCell','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','callerid','dnid','uniqueid','clear','vertex','stringify','agicommand','gotoc','info','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','result','isUndefined','toString','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','traverseBFS','debug','calleridname','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','Project\x20%s\x20not\x20found','Project\x20%s\x20not\x20published','close','lodash','moment','xml2json','util','../../config/logger','agi','./rpc','./mailRpc','./graph','./vertices','getSquareProjects','catch','error','Unable\x20to\x20download\x20CallySquare\x20projects','stack','hasOwnProperty','maxRetry','retry','omit','isArray','length','source','target','value','mxGraphModel','root','inspect','production','start','joinAt','format'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0e1f,0xdd));var _0xf0e1=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x0e1f[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0xf0e1('0x0'));var moment=require(_0xf0e1('0x1'));var parser=require(_0xf0e1('0x2'));var util=require(_0xf0e1('0x3'));var logger=require(_0xf0e1('0x4'))(_0xf0e1('0x5'));var rpc=require(_0xf0e1('0x6'));var mailRpc=require(_0xf0e1('0x7'));var Graph=require(_0xf0e1('0x8'));var Vertices=require(_0xf0e1('0x9'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0xf0e1('0xa')]()[_0xf0e1('0xb')](function(_0x59ea5f){logger[_0xf0e1('0xc')](_0xf0e1('0xd'),_0x59ea5f[_0xf0e1('0xe')]);return[];});}function addVertex(_0x2892ad,_0x1ee1ce,_0x587a49){_0x1ee1ce['agicommand']=_0x587a49;if(_0x1ee1ce[_0xf0e1('0xf')]('retry')){_0x1ee1ce[_0xf0e1('0x10')]=parseInt(_0x1ee1ce[_0xf0e1('0x11')],0xa);}_0x2892ad['addVertex'](_[_0xf0e1('0x12')](_0x1ee1ce,'mxCell'));}function initGraph(_0x31a251,_0x1a5136){var _0x4c4bd3=new Graph();for(var _0x5d4e46 in _0x31a251){if(_0x31a251[_0xf0e1('0xf')](_0x5d4e46)){if(_[_0xf0e1('0x13')](_0x31a251[_0x5d4e46])){for(var _0x3949b5=0x0;_0x3949b5<_0x31a251[_0x5d4e46][_0xf0e1('0x14')];_0x3949b5+=0x1){addVertex(_0x4c4bd3,_0x31a251[_0x5d4e46][_0x3949b5],_0x5d4e46);}}else{addVertex(_0x4c4bd3,_0x31a251[_0x5d4e46],_0x5d4e46);}}}for(var _0x39b3a0=0x0;_0x39b3a0<_0x1a5136['length'];_0x39b3a0+=0x1){if(_0x1a5136[_0x39b3a0]['source']&&_0x1a5136[_0x39b3a0]['target']){_0x4c4bd3['addEdge'](_0x1a5136[_0x39b3a0][_0xf0e1('0x15')],_0x1a5136[_0x39b3a0][_0xf0e1('0x16')],_0x1a5136[_0x39b3a0][_0xf0e1('0x17')]);}}return _0x4c4bd3;}function getRoot(_0x198b65){return parser['toJson'](_0x198b65,{'object':!![]})[_0xf0e1('0x18')][_0xf0e1('0x19')];}function inspect(_0x15ba92){return util[_0xf0e1('0x1a')](_0x15ba92,{'showHidden':![],'depth':null});}function initialize(_0x24516a,_0x550369){var _0x5c9766=getRoot(_0x24516a[_0xf0e1('0x1b')]);if(!_0x5c9766||!_0x5c9766[_0xf0e1('0x1c')])return;var _0x4ad1eb,_0x48e51c,_0x352092;logger['debug'](_0xf0e1('0x19'),JSON['stringify'](_0x5c9766,null,0x2));_0x550369[_0xf0e1('0x1d')]=moment()[_0xf0e1('0x1e')](_0xf0e1('0x1f'));_0x4ad1eb=initGraph(_[_0xf0e1('0x12')](_0x5c9766,_0xf0e1('0x20')),_0x5c9766[_0xf0e1('0x20')]);_0x48e51c=new Vertices(_0x550369,rpc,mailRpc);logger['info'](util[_0xf0e1('0x1e')](_0xf0e1('0x21'),_0x550369[_0xf0e1('0x22')],_0x550369['calleridname'],_0x550369[_0xf0e1('0x23')],_0x550369[_0xf0e1('0x24')],_0x550369[_0xf0e1('0x25')]));_0x4ad1eb['traverseBFS'](_0x5c9766[_0xf0e1('0x1c')]['id'],function(_0x178fa2){try{_0x178fa2=_0x48e51c[_0xf0e1('0x26')](_0x178fa2);logger['debug'](_0xf0e1('0x27'),JSON[_0xf0e1('0x28')](_0x178fa2,null,0x2));if(_0x178fa2[_0xf0e1('0x29')]===_0xf0e1('0x2a')){logger[_0xf0e1('0x2b')](_0xf0e1('0x2c'));_0x550369[_0xf0e1('0x2d')]=_0x178fa2[_0xf0e1('0x2d')]||_0x550369['context'];_0x550369[_0xf0e1('0x2e')]=_0x178fa2[_0xf0e1('0x2e')];_0x550369['priority']=_0x178fa2[_0xf0e1('0x2f')]?_0x178fa2[_0xf0e1('0x2f')]-0x1:0x1;return null;}else if(_0x178fa2&&_0x48e51c[_0x178fa2[_0xf0e1('0x29')]]){_0x352092=_0x48e51c[_0x178fa2[_0xf0e1('0x29')]](_0x178fa2);logger[_0xf0e1('0x2b')](_0xf0e1('0x30'),JSON[_0xf0e1('0x28')](_0x352092,null,0x2));if(_0x352092&&_0x352092['code']===AGI_CODE_SUCCESS&&_0x352092[_0xf0e1('0x31')]!==AGI_RESULT_ERROR&&!_0x550369['evtHangup']){logger['debug'](_0xf0e1('0x30'),inspect(_0x352092));return _[_0xf0e1('0x32')](_0x352092[_0xf0e1('0x31')])?null:_0x352092['result'][_0xf0e1('0x33')]();}else{logger[_0xf0e1('0xc')]('response',inspect(_0x352092));return null;}}else{logger[_0xf0e1('0xc')](_0xf0e1('0x34'));return null;}}catch(_0xb380e8){logger['error'](_0xb380e8[_0xf0e1('0xe')]);return null;}});if(_0x5c9766[_0xf0e1('0x35')]){logger['info'](util[_0xf0e1('0x1e')](_0xf0e1('0x36'),_0x550369[_0xf0e1('0x22')],_0x550369['calleridname'],_0x550369[_0xf0e1('0x23')],_0x550369[_0xf0e1('0x24')],_0x550369[_0xf0e1('0x25')]));_0x4ad1eb[_0xf0e1('0x37')](_0x5c9766['finally']['id'],function(_0x412848){try{_0x412848=_0x48e51c[_0xf0e1('0x26')](_0x412848);logger[_0xf0e1('0x38')](_0xf0e1('0x27'),JSON[_0xf0e1('0x28')](_0x412848,null,0x2));if(_0x412848&&_0x48e51c[_0x412848[_0xf0e1('0x29')]]){_0x352092=_0x48e51c[_0x412848[_0xf0e1('0x29')]](_0x412848);if(_0x352092){logger['debug']('response',inspect(_0x352092));return _[_0xf0e1('0x32')](_0x352092[_0xf0e1('0x31')])?null:_0x352092['result'][_0xf0e1('0x33')]();}else{logger[_0xf0e1('0xc')](_0xf0e1('0x30'),inspect(_0x352092));return null;}}else{logger[_0xf0e1('0xc')](_0xf0e1('0x34'));return null;}}catch(_0x325e68){logger[_0xf0e1('0xc')](_0x325e68[_0xf0e1('0xe')]);return null;}});}logger[_0xf0e1('0x2b')](util['format']('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x550369[_0xf0e1('0x22')],_0x550369[_0xf0e1('0x39')],_0x550369[_0xf0e1('0x23')],_0x550369['dnid'],_0x550369[_0xf0e1('0x25')]));logger[_0xf0e1('0x2b')](util[_0xf0e1('0x1e')](_0xf0e1('0x3a'),_0x550369[_0xf0e1('0x2d')],_0x550369[_0xf0e1('0x2e')],parseInt(_0x550369[_0xf0e1('0x2f')],0xa)+0x1));_0x550369[_0xf0e1('0x3b')](_0x550369[_0xf0e1('0x2d')],_0x550369[_0xf0e1('0x2e')],parseInt(_0x550369['priority'],0xa)+0x1);_0x550369['close']();}function handleNotFound(_0x207ae6){logger[_0xf0e1('0xc')](util[_0xf0e1('0x1e')](_0xf0e1('0x3c'),_0x207ae6['arg_1']));_0x207ae6[_0xf0e1('0x3b')](_0x207ae6[_0xf0e1('0x2d')],_0x207ae6['extension'],parseInt(_0x207ae6[_0xf0e1('0x2f')],0xa)+0x1);_0x207ae6['close']();}function handleUnpublished(_0x1ec473){logger[_0xf0e1('0xc')](util[_0xf0e1('0x1e')](_0xf0e1('0x3d'),_0x1ec473[_0xf0e1('0x22')]));_0x1ec473[_0xf0e1('0x3b')](_0x1ec473[_0xf0e1('0x2d')],_0x1ec473[_0xf0e1('0x2e')],parseInt(_0x1ec473[_0xf0e1('0x2f')],0xa)+0x1);_0x1ec473[_0xf0e1('0x3e')]();}module['exports']={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
+var _0x5fa6=['agicommand','hasOwnProperty','retry','maxRetry','addVertex','mxCell','length','source','target','addEdge','mxGraphModel','root','inspect','production','start','debug','stringify','joinAt','format','YYYY-MM-DD\x20HH:mm:ss','info','callerid','dnid','uniqueid','traverseBFS','clear','vertex','gotoc','context','extension','priority','code','result','isUndefined','toString','response','agicommand\x20not\x20found','stack','finally','arg_1','calleridname','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','continueAt','close','Project\x20%s\x20not\x20found','Project\x20%s\x20not\x20published','exports','moment','xml2json','util','agi','./rpc','./graph','./vertices','getSquareProjects','catch','error'];(function(_0x320efc,_0x4ce55b){var _0x213f7d=function(_0x1176da){while(--_0x1176da){_0x320efc['push'](_0x320efc['shift']());}};_0x213f7d(++_0x4ce55b);}(_0x5fa6,0xda));var _0x65fa=function(_0x5b4a94,_0x39e9ae){_0x5b4a94=_0x5b4a94-0x0;var _0x97d164=_0x5fa6[_0x5b4a94];return _0x97d164;};'use strict';var _=require('lodash');var moment=require(_0x65fa('0x0'));var parser=require(_0x65fa('0x1'));var util=require(_0x65fa('0x2'));var logger=require('../../config/logger')(_0x65fa('0x3'));var rpc=require(_0x65fa('0x4'));var mailRpc=require('./mailRpc');var Graph=require(_0x65fa('0x5'));var Vertices=require(_0x65fa('0x6'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0x65fa('0x7')]()[_0x65fa('0x8')](function(_0x1d8747){logger[_0x65fa('0x9')]('Unable\x20to\x20download\x20CallySquare\x20projects',_0x1d8747['stack']);return[];});}function addVertex(_0x5cc8aa,_0x20ead4,_0x47c1e2){_0x20ead4[_0x65fa('0xa')]=_0x47c1e2;if(_0x20ead4[_0x65fa('0xb')](_0x65fa('0xc'))){_0x20ead4[_0x65fa('0xd')]=parseInt(_0x20ead4[_0x65fa('0xc')],0xa);}_0x5cc8aa[_0x65fa('0xe')](_['omit'](_0x20ead4,_0x65fa('0xf')));}function initGraph(_0x6a6f8a,_0x323139){var _0x312310=new Graph();for(var _0x4e1fa2 in _0x6a6f8a){if(_0x6a6f8a[_0x65fa('0xb')](_0x4e1fa2)){if(_['isArray'](_0x6a6f8a[_0x4e1fa2])){for(var _0x528c2f=0x0;_0x528c2f<_0x6a6f8a[_0x4e1fa2]['length'];_0x528c2f+=0x1){addVertex(_0x312310,_0x6a6f8a[_0x4e1fa2][_0x528c2f],_0x4e1fa2);}}else{addVertex(_0x312310,_0x6a6f8a[_0x4e1fa2],_0x4e1fa2);}}}for(var _0x28734a=0x0;_0x28734a<_0x323139[_0x65fa('0x10')];_0x28734a+=0x1){if(_0x323139[_0x28734a][_0x65fa('0x11')]&&_0x323139[_0x28734a][_0x65fa('0x12')]){_0x312310[_0x65fa('0x13')](_0x323139[_0x28734a][_0x65fa('0x11')],_0x323139[_0x28734a][_0x65fa('0x12')],_0x323139[_0x28734a]['value']);}}return _0x312310;}function getRoot(_0x179ea0){return parser['toJson'](_0x179ea0,{'object':!![]})[_0x65fa('0x14')][_0x65fa('0x15')];}function inspect(_0x1797ee){return util[_0x65fa('0x16')](_0x1797ee,{'showHidden':![],'depth':null});}function initialize(_0x394951,_0x516dfd){var _0x88892e=getRoot(_0x394951[_0x65fa('0x17')]);if(!_0x88892e||!_0x88892e[_0x65fa('0x18')])return;var _0x48f86c,_0x147b0e,_0x2e2377;logger[_0x65fa('0x19')](_0x65fa('0x15'),JSON[_0x65fa('0x1a')](_0x88892e,null,0x2));_0x516dfd[_0x65fa('0x1b')]=moment()[_0x65fa('0x1c')](_0x65fa('0x1d'));_0x48f86c=initGraph(_['omit'](_0x88892e,_0x65fa('0xf')),_0x88892e[_0x65fa('0xf')]);_0x147b0e=new Vertices(_0x516dfd,rpc,mailRpc);logger[_0x65fa('0x1e')](util[_0x65fa('0x1c')]('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x516dfd['arg_1'],_0x516dfd['calleridname'],_0x516dfd[_0x65fa('0x1f')],_0x516dfd[_0x65fa('0x20')],_0x516dfd[_0x65fa('0x21')]));_0x48f86c[_0x65fa('0x22')](_0x88892e[_0x65fa('0x18')]['id'],function(_0x3317b5){try{_0x3317b5=_0x147b0e[_0x65fa('0x23')](_0x3317b5);logger[_0x65fa('0x19')](_0x65fa('0x24'),JSON['stringify'](_0x3317b5,null,0x2));if(_0x3317b5['agicommand']===_0x65fa('0x25')){logger[_0x65fa('0x1e')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x516dfd['context']=_0x3317b5[_0x65fa('0x26')]||_0x516dfd[_0x65fa('0x26')];_0x516dfd[_0x65fa('0x27')]=_0x3317b5[_0x65fa('0x27')];_0x516dfd[_0x65fa('0x28')]=_0x3317b5[_0x65fa('0x28')]?_0x3317b5[_0x65fa('0x28')]-0x1:0x1;return null;}else if(_0x3317b5&&_0x147b0e[_0x3317b5[_0x65fa('0xa')]]){_0x2e2377=_0x147b0e[_0x3317b5[_0x65fa('0xa')]](_0x3317b5);logger[_0x65fa('0x1e')]('response',JSON[_0x65fa('0x1a')](_0x2e2377,null,0x2));if(_0x2e2377&&_0x2e2377[_0x65fa('0x29')]===AGI_CODE_SUCCESS&&_0x2e2377[_0x65fa('0x2a')]!==AGI_RESULT_ERROR&&!_0x516dfd['evtHangup']){logger[_0x65fa('0x19')]('response',inspect(_0x2e2377));return _[_0x65fa('0x2b')](_0x2e2377['result'])?null:_0x2e2377[_0x65fa('0x2a')][_0x65fa('0x2c')]();}else{logger[_0x65fa('0x9')](_0x65fa('0x2d'),inspect(_0x2e2377));return null;}}else{logger[_0x65fa('0x9')](_0x65fa('0x2e'));return null;}}catch(_0x1798f6){logger[_0x65fa('0x9')](_0x1798f6[_0x65fa('0x2f')]);return null;}});if(_0x88892e[_0x65fa('0x30')]){logger[_0x65fa('0x1e')](util[_0x65fa('0x1c')]('[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x516dfd[_0x65fa('0x31')],_0x516dfd[_0x65fa('0x32')],_0x516dfd[_0x65fa('0x1f')],_0x516dfd['dnid'],_0x516dfd[_0x65fa('0x21')]));_0x48f86c[_0x65fa('0x22')](_0x88892e[_0x65fa('0x30')]['id'],function(_0x585cc8){try{_0x585cc8=_0x147b0e[_0x65fa('0x23')](_0x585cc8);logger[_0x65fa('0x19')](_0x65fa('0x24'),JSON[_0x65fa('0x1a')](_0x585cc8,null,0x2));if(_0x585cc8&&_0x147b0e[_0x585cc8[_0x65fa('0xa')]]){_0x2e2377=_0x147b0e[_0x585cc8[_0x65fa('0xa')]](_0x585cc8);if(_0x2e2377){logger[_0x65fa('0x19')](_0x65fa('0x2d'),inspect(_0x2e2377));return _[_0x65fa('0x2b')](_0x2e2377[_0x65fa('0x2a')])?null:_0x2e2377[_0x65fa('0x2a')][_0x65fa('0x2c')]();}else{logger[_0x65fa('0x9')](_0x65fa('0x2d'),inspect(_0x2e2377));return null;}}else{logger['error'](_0x65fa('0x2e'));return null;}}catch(_0x4f737e){logger[_0x65fa('0x9')](_0x4f737e['stack']);return null;}});}logger[_0x65fa('0x1e')](util[_0x65fa('0x1c')](_0x65fa('0x33'),_0x516dfd[_0x65fa('0x31')],_0x516dfd[_0x65fa('0x32')],_0x516dfd['callerid'],_0x516dfd[_0x65fa('0x20')],_0x516dfd['uniqueid']));logger[_0x65fa('0x1e')](util['format']('[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s',_0x516dfd[_0x65fa('0x26')],_0x516dfd['extension'],parseInt(_0x516dfd[_0x65fa('0x28')],0xa)+0x1));_0x516dfd[_0x65fa('0x34')](_0x516dfd[_0x65fa('0x26')],_0x516dfd[_0x65fa('0x27')],parseInt(_0x516dfd['priority'],0xa)+0x1);_0x516dfd[_0x65fa('0x35')]();}function handleNotFound(_0x4f4e24){logger['error'](util[_0x65fa('0x1c')](_0x65fa('0x36'),_0x4f4e24[_0x65fa('0x31')]));_0x4f4e24[_0x65fa('0x34')](_0x4f4e24[_0x65fa('0x26')],_0x4f4e24[_0x65fa('0x27')],parseInt(_0x4f4e24[_0x65fa('0x28')],0xa)+0x1);_0x4f4e24['close']();}function handleUnpublished(_0x5bba82){logger[_0x65fa('0x9')](util['format'](_0x65fa('0x37'),_0x5bba82[_0x65fa('0x31')]));_0x5bba82[_0x65fa('0x34')](_0x5bba82[_0x65fa('0x26')],_0x5bba82[_0x65fa('0x27')],parseInt(_0x5bba82['priority'],0xa)+0x1);_0x5bba82['close']();}module[_0x65fa('0x38')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
index da9b6d8..46eb261 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97f4=['line','util','stream','Transform','_localBuffer','_inBody','inherits','prototype','_transform','\x0d\x0a\x0d\x0a','indexOf','substring','length','slice','trim','emit','headers'];(function(_0x2ba3fd,_0x132ae7){var _0xe72d5f=function(_0x4ebd1e){while(--_0x4ebd1e){_0x2ba3fd['push'](_0x2ba3fd['shift']());}};_0xe72d5f(++_0x132ae7);}(_0x97f4,0x166));var _0x497f=function(_0x2239f8,_0xe2601a){_0x2239f8=_0x2239f8-0x0;var _0x283894=_0x97f4[_0x2239f8];return _0x283894;};'use strict';var util=require(_0x497f('0x0'));var Transform=require(_0x497f('0x1'))[_0x497f('0x2')];function AGIReply(_0x40bd65){Transform['call'](this,_0x40bd65);this[_0x497f('0x3')]='';this[_0x497f('0x4')]=![];}util[_0x497f('0x5')](AGIReply,Transform);AGIReply[_0x497f('0x6')][_0x497f('0x7')]=function(_0x5295dc,_0x54892d,_0x3bf9b6){var _0x37a074='\x0a',_0x19b15d=['\x0a\x0a',_0x497f('0x8')],_0x3b23df=-0x1,_0x134614=-0x1,_0x1b5224='',_0x2e6ad0=0x0,_0x534706='',_0x34cec1='';this['_localBuffer']+=_0x5295dc['toString']();_0x534706=this[_0x497f('0x3')];if(!this[_0x497f('0x4')]){_0x2e6ad0=0x0;while(_0x19b15d[_0x2e6ad0]){while((_0x134614=_0x534706[_0x497f('0x9')](_0x19b15d[_0x2e6ad0]))!=-0x1){_0x1b5224=_0x19b15d[_0x2e6ad0];_0x34cec1=_0x534706[_0x497f('0xa')](0x0,_0x134614);_0x534706=_0x534706[_0x497f('0xa')](_0x134614+_0x1b5224[_0x497f('0xb')]);var _0x7bb881=_0x34cec1['split'](_0x37a074),_0x21cf2a=0x0,_0x30579e={},_0x3c769f='',_0x3a82c2='',_0x33771b=-0x1;while(_0x7bb881[_0x21cf2a]){_0x33771b=_0x7bb881[_0x21cf2a][_0x497f('0x9')](':');if(_0x33771b!=-0x1){_0x3c769f=_0x7bb881[_0x21cf2a][_0x497f('0xc')](0x0,_0x33771b)[_0x497f('0xd')]();_0x3a82c2=_0x7bb881[_0x21cf2a][_0x497f('0xc')](_0x33771b+0x1)['trim']();if(_0x3c769f[_0x497f('0xb')]>0x0){_0x30579e[_0x3c769f]=_0x3a82c2;}}else{}_0x21cf2a++;}this[_0x497f('0xe')](_0x497f('0xf'),_0x30579e);this[_0x497f('0x4')]=!![];}_0x2e6ad0++;}this['_localBuffer']=_0x534706;}else{while((_0x3b23df=_0x534706[_0x497f('0x9')](_0x37a074))!=-0x1){_0x34cec1=_0x534706[_0x497f('0xa')](0x0,_0x3b23df);this[_0x497f('0xe')](_0x497f('0x10'),_0x34cec1);_0x534706=_0x534706['substring'](_0x3b23df+_0x37a074[_0x497f('0xb')]);}this['_localBuffer']=_0x534706;}_0x3bf9b6();};module['exports']=AGIReply;
\ No newline at end of file
+var _0x0194=['headers','Transform','call','_inBody','inherits','prototype','_transform','\x0d\x0a\x0d\x0a','_localBuffer','toString','indexOf','substring','split','slice','trim','length'];(function(_0x1f1982,_0x1494e2){var _0x2474b1=function(_0xb042fe){while(--_0xb042fe){_0x1f1982['push'](_0x1f1982['shift']());}};_0x2474b1(++_0x1494e2);}(_0x0194,0xf1));var _0x4019=function(_0x35ae26,_0x2fc66f){_0x35ae26=_0x35ae26-0x0;var _0x1da14e=_0x0194[_0x35ae26];return _0x1da14e;};'use strict';var util=require('util');var Transform=require('stream')[_0x4019('0x0')];function AGIReply(_0x337750){Transform[_0x4019('0x1')](this,_0x337750);this['_localBuffer']='';this[_0x4019('0x2')]=![];}util[_0x4019('0x3')](AGIReply,Transform);AGIReply[_0x4019('0x4')][_0x4019('0x5')]=function(_0x1706dd,_0x5530a0,_0x17ab91){var _0x2803a5='\x0a',_0x3b47b6=['\x0a\x0a',_0x4019('0x6')],_0x45b6d8=-0x1,_0x5c4015=-0x1,_0x173f77='',_0x598c33=0x0,_0x43111a='',_0x2526c6='';this[_0x4019('0x7')]+=_0x1706dd[_0x4019('0x8')]();_0x43111a=this['_localBuffer'];if(!this['_inBody']){_0x598c33=0x0;while(_0x3b47b6[_0x598c33]){while((_0x5c4015=_0x43111a[_0x4019('0x9')](_0x3b47b6[_0x598c33]))!=-0x1){_0x173f77=_0x3b47b6[_0x598c33];_0x2526c6=_0x43111a[_0x4019('0xa')](0x0,_0x5c4015);_0x43111a=_0x43111a[_0x4019('0xa')](_0x5c4015+_0x173f77['length']);var _0x5ced98=_0x2526c6[_0x4019('0xb')](_0x2803a5),_0x9aeaa=0x0,_0x14337b={},_0x325f03='',_0x513b3c='',_0x381ba5=-0x1;while(_0x5ced98[_0x9aeaa]){_0x381ba5=_0x5ced98[_0x9aeaa]['indexOf'](':');if(_0x381ba5!=-0x1){_0x325f03=_0x5ced98[_0x9aeaa]['slice'](0x0,_0x381ba5)['trim']();_0x513b3c=_0x5ced98[_0x9aeaa][_0x4019('0xc')](_0x381ba5+0x1)[_0x4019('0xd')]();if(_0x325f03[_0x4019('0xe')]>0x0){_0x14337b[_0x325f03]=_0x513b3c;}}else{}_0x9aeaa++;}this['emit'](_0x4019('0xf'),_0x14337b);this['_inBody']=!![];}_0x598c33++;}this[_0x4019('0x7')]=_0x43111a;}else{while((_0x45b6d8=_0x43111a['indexOf'](_0x2803a5))!=-0x1){_0x2526c6=_0x43111a['substring'](0x0,_0x45b6d8);this['emit']('line',_0x2526c6);_0x43111a=_0x43111a[_0x4019('0xa')](_0x45b6d8+_0x2803a5[_0x4019('0xe')]);}this[_0x4019('0x7')]=_0x43111a;}_0x17ab91();};module['exports']=AGIReply;
\ No newline at end of file
index 1928313..13b605a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40b5=['getPauseById','agentLogin','LoginUser','agentPause','PauseUser','agentUnpause','UnpauseUser','lodash','moment','jayson/promise','client','http','request','then','error','message','result','catch','GetSquareProjects','production','ShowMailAccount','MailServerOut','CloudProvider','name','email','ShowSquareProject','getVoiceQueueById','ShowVoiceQueue','ShowVariable','getSquareOdbcById','dsn','getUserById','ShowUser','getContactByPhone','GetContactByPhone','phone','ShowTrunk','getSoundById','ShowSound','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','merge','arg_1','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper','CreateCmContact'];(function(_0x55609e,_0x55fb56){var _0x316b00=function(_0x3b5349){while(--_0x3b5349){_0x55609e['push'](_0x55609e['shift']());}};_0x316b00(++_0x55fb56);}(_0x40b5,0x1d7));var _0x540b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x40b5[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x540b('0x0'));var moment=require(_0x540b('0x1'));var jayson=require(_0x540b('0x2'));var client=jayson[_0x540b('0x3')][_0x540b('0x4')]({'port':0x2329});function request(_0x273ac6,_0x424c68){return new Promise(function(_0x4bfe55,_0x39da2c){return client[_0x540b('0x5')](_0x273ac6,_0x424c68)[_0x540b('0x6')](function(_0x239467){if(_0x239467[_0x540b('0x7')]){return _0x39da2c(_0x239467['error'][_0x540b('0x8')]);}else{return _0x4bfe55(_0x239467[_0x540b('0x9')]);}})[_0x540b('0xa')](function(_0x5aeb5f){return _0x39da2c(_0x5aeb5f);});});}exports['getSquareProjects']=function(){return request(_0x540b('0xb'),{'options':{'raw':![],'attributes':['id','name','production']}});};exports['getSquareProject']=function(_0x13dc02){return request('ShowSquareProject',{'options':{'raw':![],'where':{'name':_0x13dc02},'attributes':[_0x540b('0xc')]}});};exports['getMailAccountById']=function(_0x5f23ae){return request(_0x540b('0xd'),{'options':{'raw':![],'where':{'id':_0x5f23ae},'include':[{'model':_0x540b('0xe'),'as':'Smtp','include':[{'model':_0x540b('0xf'),'as':_0x540b('0xf')}]}],'attributes':['id',_0x540b('0x10'),_0x540b('0x11')],'smtp':!![]}});};exports['getSquareProjectById']=function(_0xdf0923){return request(_0x540b('0x12'),{'options':{'where':{'id':_0xdf0923},'attributes':[_0x540b('0x10')]}});};exports[_0x540b('0x13')]=function(_0x498616){return request(_0x540b('0x14'),{'options':{'where':{'id':_0x498616},'attributes':['name']}});};exports['getVariableById']=function(_0x2ab462){return request(_0x540b('0x15'),{'options':{'where':{'id':_0x2ab462},'attributes':[_0x540b('0x10')]}});};exports[_0x540b('0x16')]=function(_0x1efac9){return request('ShowSquareOdbc',{'options':{'where':{'id':_0x1efac9},'attributes':[_0x540b('0x17')]}});};exports[_0x540b('0x18')]=function(_0x118e5d){return request(_0x540b('0x19'),{'options':{'where':{'id':_0x118e5d},'attributes':[_0x540b('0x10')]}});};exports[_0x540b('0x1a')]=function(_0x2a3265){return request(_0x540b('0x1b'),{'options':{'where':{'phone':_0x2a3265[_0x540b('0x1c')]},'attributes':['id']}});};exports['getTrunkById']=function(_0x1b9401){return request(_0x540b('0x1d'),{'options':{'where':{'id':_0x1b9401},'attributes':['name']}});};exports[_0x540b('0x1e')]=function(_0x4b3ec6){return request(_0x540b('0x1f'),{'options':{'where':{'id':_0x4b3ec6},'attributes':['save_name']}});};exports['getIntervalById']=function(_0x17674c){return request('ShowInterval',{'options':{'raw':![],'where':{'id':_0x17674c},'include':[{'model':_0x540b('0x20'),'as':_0x540b('0x21')}]}});};exports[_0x540b('0x22')]=function(_0x4d7422){return request(_0x540b('0x23'),{'options':{'where':{'id':_0x4d7422},'attributes':['id',_0x540b('0x10')]}});};exports[_0x540b('0x24')]=function(_0x1f69d4){return request(_0x540b('0x25'),{'body':_0x1f69d4});};exports[_0x540b('0x26')]=function(_0x3acfef){return request(_0x540b('0x27'),{'body':_0x3acfef});};exports[_0x540b('0x28')]=function(_0xc967f6){return request('CreateSquareReport',{'body':_[_0x540b('0x29')](_0xc967f6,{'project_name':_0xc967f6[_0x540b('0x2a')],'prev_project_name':_0xc967f6['arg_2']||'','is_subproject':_0xc967f6['arg_2']?!![]:![],'leaveAt':moment()[_0x540b('0x2b')](_0x540b('0x2c'))})});};exports[_0x540b('0x2d')]=function(_0x341b22){return request('CreateSquareRecording',{'body':_0x341b22});};exports[_0x540b('0x2e')]=function(_0x399a6e){return request(_0x540b('0x2f'),{'body':_0x399a6e});};exports[_0x540b('0x30')]=function(_0xd3f5f6){return request(_0x540b('0x31'),{'options':{'raw':![],'where':{'phone':_0xd3f5f6[_0x540b('0x1c')],'ListId':_0xd3f5f6['ListId']}}})['then'](function(_0x491eca){if(_0x491eca){return _0x491eca;}return request(_0x540b('0x32'),{'body':_0xd3f5f6});});};exports[_0x540b('0x33')]=function(_0x3eb220){return request('ShowPause',{'options':{'where':{'id':_0x3eb220},'attributes':['name']}});};exports[_0x540b('0x34')]=function(_0x3a9fe4,_0x541b72){return request(_0x540b('0x35'),{'body':{'interface':_0x541b72},'options':{'where':_0x3a9fe4}});};exports[_0x540b('0x36')]=function(_0x2d4922,_0x3179bb,_0x3735ca){return request(_0x540b('0x37'),{'body':{'type':_0x3179bb,'uniqueid':_0x3735ca},'options':{'where':_0x2d4922}});};exports[_0x540b('0x38')]=function(_0x113a93){return request(_0x540b('0x39'),{'body':{},'options':{'where':_0x113a93}});};exports['agentLogout']=function(_0x45a054){return request('LogoutUser',{'body':{},'options':{'where':_0x45a054}});};
\ No newline at end of file
+var _0x8c52=['ListId','CreateCmContact','ShowPause','agentLogin','agentPause','agentUnpause','agentLogout','LogoutUser','lodash','jayson/promise','client','http','request','then','error','getSquareProjects','GetSquareProjects','name','getSquareProject','production','getMailAccountById','ShowMailAccount','MailServerOut','Smtp','CloudProvider','email','ShowSquareProject','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','dsn','getUserById','ShowUser','GetContactByPhone','phone','ShowTrunk','ShowSound','save_name','getIntervalById','ShowInterval','Interval','Intervals','getSmsAccountById','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareReport','merge','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ShowCmHopper'];(function(_0x3c725c,_0x28c593){var _0x3ef2d4=function(_0x2c35f7){while(--_0x2c35f7){_0x3c725c['push'](_0x3c725c['shift']());}};_0x3ef2d4(++_0x28c593);}(_0x8c52,0x7e));var _0x28c5=function(_0x352de7,_0x42d665){_0x352de7=_0x352de7-0x0;var _0x76cff2=_0x8c52[_0x352de7];return _0x76cff2;};'use strict';var _=require(_0x28c5('0x0'));var moment=require('moment');var jayson=require(_0x28c5('0x1'));var client=jayson[_0x28c5('0x2')][_0x28c5('0x3')]({'port':0x2329});function request(_0x37c10f,_0x398f22){return new Promise(function(_0x41668f,_0x412a0a){return client[_0x28c5('0x4')](_0x37c10f,_0x398f22)[_0x28c5('0x5')](function(_0x7f67){if(_0x7f67[_0x28c5('0x6')]){return _0x412a0a(_0x7f67[_0x28c5('0x6')]['message']);}else{return _0x41668f(_0x7f67['result']);}})['catch'](function(_0x5099e8){return _0x412a0a(_0x5099e8);});});}exports[_0x28c5('0x7')]=function(){return request(_0x28c5('0x8'),{'options':{'raw':![],'attributes':['id',_0x28c5('0x9'),'production']}});};exports[_0x28c5('0xa')]=function(_0x193b2b){return request('ShowSquareProject',{'options':{'raw':![],'where':{'name':_0x193b2b},'attributes':[_0x28c5('0xb')]}});};exports[_0x28c5('0xc')]=function(_0xbf75f2){return request(_0x28c5('0xd'),{'options':{'raw':![],'where':{'id':_0xbf75f2},'include':[{'model':_0x28c5('0xe'),'as':_0x28c5('0xf'),'include':[{'model':_0x28c5('0x10'),'as':_0x28c5('0x10')}]}],'attributes':['id',_0x28c5('0x9'),_0x28c5('0x11')],'smtp':!![]}});};exports['getSquareProjectById']=function(_0x168f0f){return request(_0x28c5('0x12'),{'options':{'where':{'id':_0x168f0f},'attributes':[_0x28c5('0x9')]}});};exports[_0x28c5('0x13')]=function(_0x57cfde){return request(_0x28c5('0x14'),{'options':{'where':{'id':_0x57cfde},'attributes':[_0x28c5('0x9')]}});};exports[_0x28c5('0x15')]=function(_0x20f186){return request(_0x28c5('0x16'),{'options':{'where':{'id':_0x20f186},'attributes':[_0x28c5('0x9')]}});};exports[_0x28c5('0x17')]=function(_0x583349){return request('ShowSquareOdbc',{'options':{'where':{'id':_0x583349},'attributes':[_0x28c5('0x18')]}});};exports[_0x28c5('0x19')]=function(_0x19fc7f){return request(_0x28c5('0x1a'),{'options':{'where':{'id':_0x19fc7f},'attributes':[_0x28c5('0x9')]}});};exports['getContactByPhone']=function(_0x5d6edd){return request(_0x28c5('0x1b'),{'options':{'where':{'phone':_0x5d6edd[_0x28c5('0x1c')]},'attributes':['id']}});};exports['getTrunkById']=function(_0x12b55e){return request(_0x28c5('0x1d'),{'options':{'where':{'id':_0x12b55e},'attributes':['name']}});};exports['getSoundById']=function(_0x59d964){return request(_0x28c5('0x1e'),{'options':{'where':{'id':_0x59d964},'attributes':[_0x28c5('0x1f')]}});};exports[_0x28c5('0x20')]=function(_0x345e4a){return request(_0x28c5('0x21'),{'options':{'raw':![],'where':{'id':_0x345e4a},'include':[{'model':_0x28c5('0x22'),'as':_0x28c5('0x23')}]}});};exports[_0x28c5('0x24')]=function(_0x37a3fe){return request('ShowSmsAccount',{'options':{'where':{'id':_0x37a3fe},'attributes':['id',_0x28c5('0x9')]}});};exports[_0x28c5('0x25')]=function(_0x3b1f32){return request(_0x28c5('0x26'),{'body':_0x3b1f32});};exports[_0x28c5('0x27')]=function(_0x5a5370){return request('CreateSquareDetailsReport',{'body':_0x5a5370});};exports['createSquareReport']=function(_0x1ac028){return request(_0x28c5('0x28'),{'body':_[_0x28c5('0x29')](_0x1ac028,{'project_name':_0x1ac028[_0x28c5('0x2a')],'prev_project_name':_0x1ac028[_0x28c5('0x2b')]||'','is_subproject':_0x1ac028[_0x28c5('0x2b')]?!![]:![],'leaveAt':moment()[_0x28c5('0x2c')](_0x28c5('0x2d'))})});};exports['createSquareRecording']=function(_0x1c5c55){return request(_0x28c5('0x2e'),{'body':_0x1c5c55});};exports[_0x28c5('0x2f')]=function(_0x511fb3){return request(_0x28c5('0x30'),{'body':_0x511fb3});};exports[_0x28c5('0x31')]=function(_0x489e2a){return request(_0x28c5('0x32'),{'options':{'raw':![],'where':{'phone':_0x489e2a[_0x28c5('0x1c')],'ListId':_0x489e2a[_0x28c5('0x33')]}}})[_0x28c5('0x5')](function(_0x597420){if(_0x597420){return _0x597420;}return request(_0x28c5('0x34'),{'body':_0x489e2a});});};exports['getPauseById']=function(_0x17721a){return request(_0x28c5('0x35'),{'options':{'where':{'id':_0x17721a},'attributes':[_0x28c5('0x9')]}});};exports[_0x28c5('0x36')]=function(_0x512573,_0x3b80e1){return request('LoginUser',{'body':{'interface':_0x3b80e1},'options':{'where':_0x512573}});};exports[_0x28c5('0x37')]=function(_0x3323f7,_0x46d6a2,_0x1efa1f){return request('PauseUser',{'body':{'type':_0x46d6a2,'uniqueid':_0x1efa1f},'options':{'where':_0x3323f7}});};exports[_0x28c5('0x38')]=function(_0x3bf542){return request('UnpauseUser',{'body':{},'options':{'where':_0x3bf542}});};exports[_0x28c5('0x39')]=function(_0x10aaec){return request(_0x28c5('0x3a'),{'body':{},'options':{'where':_0x10aaec}});};
\ No newline at end of file
index b5eb6c8..fd76988 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc492=['./lex','exports','./polly'];(function(_0x35e124,_0x1d85e2){var _0x53c482=function(_0x5afd39){while(--_0x5afd39){_0x35e124['push'](_0x35e124['shift']());}};_0x53c482(++_0x1d85e2);}(_0xc492,0xd7));var _0x2c49=function(_0x2491a0,_0x5840aa){_0x2491a0=_0x2491a0-0x0;var _0x5bd41e=_0xc492[_0x2491a0];return _0x5bd41e;};var polly=require(_0x2c49('0x0'));var lex=require(_0x2c49('0x1'));module[_0x2c49('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x8458=['exports','./polly'];(function(_0x4cf30b,_0xbd8c01){var _0x31d9d7=function(_0xf87e1e){while(--_0xf87e1e){_0x4cf30b['push'](_0x4cf30b['shift']());}};_0x31d9d7(++_0xbd8c01);}(_0x8458,0x1a5));var _0x8845=function(_0x4e26e1,_0x283e03){_0x4e26e1=_0x4e26e1-0x0;var _0x391627=_0x8458[_0x4e26e1];return _0x391627;};var polly=require(_0x8845('0x0'));var lex=require('./lex');module[_0x8845('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
index e51d885..24e5385 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c81=['./lib/api','exports'];(function(_0x1fa059,_0x563a20){var _0x4b2d58=function(_0x5e1aeb){while(--_0x5e1aeb){_0x1fa059['push'](_0x1fa059['shift']());}};_0x4b2d58(++_0x563a20);}(_0x3c81,0x102));var _0x13c8=function(_0x8e2ad0,_0x49e52b){_0x8e2ad0=_0x8e2ad0-0x0;var _0x5c43e5=_0x3c81[_0x8e2ad0];return _0x5c43e5;};'use strict';var lex=require(_0x13c8('0x0'));module[_0x13c8('0x1')]=function(_0x48c35b,_0x252f26,_0x131d0b,_0x4954c2,_0x5913e9,_0x5c3ba4){return lex(_0x48c35b,_0x252f26,_0x131d0b,_0x4954c2,_0x5913e9,_0x5c3ba4);};
\ No newline at end of file
+var _0x5c00=['./lib/api','exports'];(function(_0x4882a7,_0x3d0045){var _0x16c9cb=function(_0x4d09f6){while(--_0x4d09f6){_0x4882a7['push'](_0x4882a7['shift']());}};_0x16c9cb(++_0x3d0045);}(_0x5c00,0x17e));var _0x05c0=function(_0x568f96,_0x32d489){_0x568f96=_0x568f96-0x0;var _0x5a053a=_0x5c00[_0x568f96];return _0x5a053a;};'use strict';var lex=require(_0x05c0('0x0'));module[_0x05c0('0x1')]=function(_0x1c3b79,_0x4e54ec,_0x1e76da,_0x5859bc,_0x41c4b4,_0x25c3a9){return lex(_0x1c3b79,_0x4e54ec,_0x1e76da,_0x5859bc,_0x41c4b4,_0x25c3a9);};
\ No newline at end of file
index 4e30c66..ad1b2bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0xdb6e6b,_0x28d173){var _0x4f9c73=function(_0x11db22){while(--_0x11db22){_0xdb6e6b['push'](_0xdb6e6b['shift']());}};_0x4f9c73(++_0x28d173);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
+var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x513484,_0x2f5229){var _0xb4eb8f=function(_0x4e0ae6){while(--_0x4e0ae6){_0x513484['push'](_0x513484['shift']());}};_0xb4eb8f(++_0x2f5229);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xa9e0[_0xf50820];return _0x2a9b10;};'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 641be4f..347eb23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8603=['exports','./lib/api'];(function(_0x1eed52,_0x1bb3c1){var _0x57782a=function(_0x2cb894){while(--_0x2cb894){_0x1eed52['push'](_0x1eed52['shift']());}};_0x57782a(++_0x1bb3c1);}(_0x8603,0xcb));var _0x3860=function(_0x1a6c94,_0x445053){_0x1a6c94=_0x1a6c94-0x0;var _0x4a2d59=_0x8603[_0x1a6c94];return _0x4a2d59;};'use strict';var polly=require(_0x3860('0x0'));module[_0x3860('0x1')]=function(_0x5e2f76,_0x4f547f,_0x2868aa,_0x2ce627,_0x328141,_0x4c3444,_0xe8ff99){return polly(_0x5e2f76,_0x4f547f,_0x2868aa,_0x2ce627,_0x328141,_0x4c3444,_0xe8ff99);};
\ No newline at end of file
+var _0xc04a=['./lib/api','exports'];(function(_0x14b8c7,_0x4839ea){var _0x4bb5a3=function(_0x17cf53){while(--_0x17cf53){_0x14b8c7['push'](_0x14b8c7['shift']());}};_0x4bb5a3(++_0x4839ea);}(_0xc04a,0xc0));var _0xac04=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc04a[_0x3dd15e];return _0x231fd0;};'use strict';var polly=require(_0xac04('0x0'));module[_0xac04('0x1')]=function(_0x179e49,_0x1ca8e5,_0x1def06,_0x1f3958,_0x705f69,_0x4c6295,_0x16aeec){return polly(_0x179e49,_0x1ca8e5,_0x1def06,_0x1f3958,_0x705f69,_0x4c6295,_0x16aeec);};
\ No newline at end of file
index 37af1cb..2deddfe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61fb=['aws-sdk','synthesizeSpeech','AudioStream','writeFile','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','text','mp3','path','bluebird','randomstring'];(function(_0x53daae,_0x51a400){var _0x12be55=function(_0x312d46){while(--_0x312d46){_0x53daae['push'](_0x53daae['shift']());}};_0x12be55(++_0x51a400);}(_0x61fb,0x129));var _0xb61f=function(_0x5ad37c,_0x48985a){_0x5ad37c=_0x5ad37c-0x0;var _0x322c6a=_0x61fb[_0x5ad37c];return _0x322c6a;};'use strict';var fs=require('fs');var path=require(_0xb61f('0x0'));var BPromise=require(_0xb61f('0x1'));var rs=require(_0xb61f('0x2'));var AWS=require(_0xb61f('0x3'));function pollyResult(_0x51c179,_0x1981bd,_0x5a86c9){return new BPromise(function(_0x4248dd,_0x90528b){_0x51c179[_0xb61f('0x4')](_0x1981bd,function(_0x4b71ac,_0x2e97a1){if(_0x4b71ac){_0x90528b(_0x4b71ac);}else if(_0x2e97a1){if(_0x2e97a1[_0xb61f('0x5')]instanceof Buffer){fs[_0xb61f('0x6')](_0x5a86c9,_0x2e97a1[_0xb61f('0x5')],function(_0x332bb7){if(_0x332bb7){_0x90528b(_0x332bb7);}else{_0x4248dd();}});}else{_0x90528b(new Error('Invalid\x20data\x20response\x20from\x20aws\x20Polly!'));}}else{_0x90528b(new Error(_0xb61f('0x7')));}});});}module[_0xb61f('0x8')]=function(_0x454ee4,_0x1394ab,_0x518fa7,_0x20b2c3,_0x238b0b,_0xeb923f,_0x4b511e){var _0x6faad2=new AWS[(_0xb61f('0x9'))]({'accessKeyId':_0x454ee4,'secretAccessKey':_0x1394ab,'region':_0x518fa7});var _0x424a8d={'Text':_0x238b0b,'TextType':_0xeb923f||_0xb61f('0xa'),'OutputFormat':_0xb61f('0xb'),'VoiceId':_0x20b2c3};return pollyResult(_0x6faad2,_0x424a8d,_0x4b511e);};
\ No newline at end of file
+var _0xe121=['bluebird','randomstring','aws-sdk','synthesizeSpeech','AudioStream','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','text','mp3','path'];(function(_0x11497f,_0x375f61){var _0x34b3d9=function(_0x3db8cd){while(--_0x3db8cd){_0x11497f['push'](_0x11497f['shift']());}};_0x34b3d9(++_0x375f61);}(_0xe121,0xaa));var _0x1e12=function(_0x3b60b1,_0x3d575c){_0x3b60b1=_0x3b60b1-0x0;var _0x30e8cd=_0xe121[_0x3b60b1];return _0x30e8cd;};'use strict';var fs=require('fs');var path=require(_0x1e12('0x0'));var BPromise=require(_0x1e12('0x1'));var rs=require(_0x1e12('0x2'));var AWS=require(_0x1e12('0x3'));function pollyResult(_0x3721bb,_0x5742df,_0x3d56a8){return new BPromise(function(_0x3a6cc2,_0x23a49d){_0x3721bb[_0x1e12('0x4')](_0x5742df,function(_0x306990,_0x5ee977){if(_0x306990){_0x23a49d(_0x306990);}else if(_0x5ee977){if(_0x5ee977[_0x1e12('0x5')]instanceof Buffer){fs['writeFile'](_0x3d56a8,_0x5ee977[_0x1e12('0x5')],function(_0x17527d){if(_0x17527d){_0x23a49d(_0x17527d);}else{_0x3a6cc2();}});}else{_0x23a49d(new Error(_0x1e12('0x6')));}}else{_0x23a49d(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module['exports']=function(_0x2beb9c,_0x503c14,_0x36552e,_0x5c1d6d,_0x1f4e06,_0x2b4c13,_0x1f70fb){var _0x327033=new AWS['Polly']({'accessKeyId':_0x2beb9c,'secretAccessKey':_0x503c14,'region':_0x36552e});var _0x4a31d={'Text':_0x1f4e06,'TextType':_0x2b4c13||_0x1e12('0x7'),'OutputFormat':_0x1e12('0x8'),'VoiceId':_0x5c1d6d};return pollyResult(_0x327033,_0x4a31d,_0x1f70fb);};
\ No newline at end of file
index 31843b9..f82b2bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8eb6=['./lib/api'];(function(_0x501e26,_0x1acb7b){var _0x568e27=function(_0x4d0c81){while(--_0x4d0c81){_0x501e26['push'](_0x501e26['shift']());}};_0x568e27(++_0x1acb7b);}(_0x8eb6,0x12e));var _0x68eb=function(_0x18e978,_0x13ad9c){_0x18e978=_0x18e978-0x0;var _0x33f249=_0x8eb6[_0x18e978];return _0x33f249;};'use strict';var asr=require(_0x68eb('0x0'));module['exports']=function(_0x78931f,_0x1046a9,_0xe3b055,_0x5833e7){return asr(_0x78931f,_0x1046a9,_0xe3b055);};
\ No newline at end of file
+var _0xbded=['./lib/api','exports'];(function(_0xa866ee,_0x4efec6){var _0x471651=function(_0x2c1a14){while(--_0x2c1a14){_0xa866ee['push'](_0xa866ee['shift']());}};_0x471651(++_0x4efec6);}(_0xbded,0xb2));var _0xdbde=function(_0x578e98,_0x4cb9c5){_0x578e98=_0x578e98-0x0;var _0x28052e=_0xbded[_0x578e98];return _0x28052e;};'use strict';var asr=require(_0xdbde('0x0'));module[_0xdbde('0x1')]=function(_0x4f71f2,_0x529fcc,_0x3b4eee,_0x450511){return asr(_0x4f71f2,_0x529fcc,_0x3b4eee);};
\ No newline at end of file
index b44c16b..255b6dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99e9=['bluebird','https://speech.googleapis.com','exports','string','filepath\x20should\x20be\x20a\x20string','length','key\x20should\x20be\x20a\x20string','lang\x20should\x20be\x20a\x20string','readFileSync','toString','base64','POST','/v1/speech:recognize?key=','LINEAR16','8000'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x99e9,0xb4));var _0x999e=function(_0x508c10,_0x5a15f0){_0x508c10=_0x508c10-0x0;var _0x3108b5=_0x99e9[_0x508c10];return _0x3108b5;};'use strict';var url=require('url');var BPromise=require(_0x999e('0x0'));var fs=require('fs');var host=_0x999e('0x1');module[_0x999e('0x2')]=function(_0x1c6fa0,_0x4aaeb4,_0x19a818){return new BPromise(function(_0x2f803e,_0x3aac27){var _0x4e2112;if(typeof _0x1c6fa0!==_0x999e('0x3')||_0x1c6fa0['length']===0x0){return _0x3aac27(_0x999e('0x4'));}if(typeof _0x4aaeb4!==_0x999e('0x3')||_0x4aaeb4[_0x999e('0x5')]===0x0){return _0x3aac27(_0x999e('0x6'));}if(typeof _0x19a818!=='undefined'&&(typeof _0x19a818!==_0x999e('0x3')||_0x19a818[_0x999e('0x5')]===0x0)){return _0x3aac27(_0x999e('0x7'));}try{_0x4e2112=fs[_0x999e('0x8')](_0x1c6fa0)[_0x999e('0x9')](_0x999e('0xa'));}catch(_0x3f2c24){return _0x3aac27(_0x3f2c24);}return _0x2f803e({'method':_0x999e('0xb'),'uri':host+_0x999e('0xc')+_0x4aaeb4,'body':{'config':{'encoding':_0x999e('0xd'),'sampleRateHertz':_0x999e('0xe'),'languageCode':_0x19a818},'audio':{'content':_0x4e2112}},'json':!![]});});};
\ No newline at end of file
+var _0x131e=['filepath\x20should\x20be\x20a\x20string','lang\x20should\x20be\x20a\x20string','readFileSync','base64','POST','/v1/speech:recognize?key=','LINEAR16','8000','exports','string','length'];(function(_0x2eb87a,_0x1f6468){var _0x183ceb=function(_0x4e912e){while(--_0x4e912e){_0x2eb87a['push'](_0x2eb87a['shift']());}};_0x183ceb(++_0x1f6468);}(_0x131e,0x1ec));var _0xe131=function(_0x361983,_0x5abef4){_0x361983=_0x361983-0x0;var _0x4d8cd0=_0x131e[_0x361983];return _0x4d8cd0;};'use strict';var url=require('url');var BPromise=require('bluebird');var fs=require('fs');var host='https://speech.googleapis.com';module[_0xe131('0x0')]=function(_0x1f42ef,_0x2615f2,_0x418ed5){return new BPromise(function(_0x30486b,_0x761c){var _0x4ff7f7;if(typeof _0x1f42ef!==_0xe131('0x1')||_0x1f42ef[_0xe131('0x2')]===0x0){return _0x761c(_0xe131('0x3'));}if(typeof _0x2615f2!==_0xe131('0x1')||_0x2615f2[_0xe131('0x2')]===0x0){return _0x761c('key\x20should\x20be\x20a\x20string');}if(typeof _0x418ed5!=='undefined'&&(typeof _0x418ed5!=='string'||_0x418ed5['length']===0x0)){return _0x761c(_0xe131('0x4'));}try{_0x4ff7f7=fs[_0xe131('0x5')](_0x1f42ef)['toString'](_0xe131('0x6'));}catch(_0x4e126a){return _0x761c(_0x4e126a);}return _0x30486b({'method':_0xe131('0x7'),'uri':host+_0xe131('0x8')+_0x2615f2,'body':{'config':{'encoding':_0xe131('0x9'),'sampleRateHertz':_0xe131('0xa'),'languageCode':_0x418ed5},'audio':{'content':_0x4ff7f7}},'json':!![]});});};
\ No newline at end of file
index fd11709..327b3e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf63a=['./asr','exports'];(function(_0x12e9ef,_0x2897ca){var _0x563da8=function(_0x25a219){while(--_0x25a219){_0x12e9ef['push'](_0x12e9ef['shift']());}};_0x563da8(++_0x2897ca);}(_0xf63a,0x130));var _0xaf63=function(_0x1fd8b3,_0x3bd29a){_0x1fd8b3=_0x1fd8b3-0x0;var _0x1f461f=_0xf63a[_0x1fd8b3];return _0x1f461f;};var asr=require(_0xaf63('0x0'));module[_0xaf63('0x1')]={'asr':asr};
\ No newline at end of file
+var _0xa6d1=['./asr','exports'];(function(_0x3e478c,_0x152670){var _0x29ef89=function(_0x3d0d77){while(--_0x3d0d77){_0x3e478c['push'](_0x3e478c['shift']());}};_0x29ef89(++_0x152670);}(_0xa6d1,0x1ec));var _0x1a6d=function(_0x7946ae,_0x14cb7d){_0x7946ae=_0x7946ae-0x0;var _0x4e5e76=_0xa6d1[_0x7946ae];return _0x4e5e76;};var asr=require(_0x1a6d('0x0'));module[_0x1a6d('0x1')]={'asr':asr};
\ No newline at end of file
index 389accf..c20e16d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6799=['download\x20error','pipe','end','protocol','data','error\x20convert','info','finish\x20to\x20convert','start','resolve','tmp','generate','writeFileSync','base64','then','unlink','chmodSync','split','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','MP3','text:synthesize','POST','.mp3','audioContent','writeFile','777','.wav','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','f.req=','stringify','jQ1olc','null','generic','slice','length','text\x20length\x20limit\x20reached','parse\x20response\x20failed:\x0a','goggleTTS\x20path','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','source','resolvedQuery','action','actionIncomplete','fulfillment','status','code','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','fulfillmentText','intent','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','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','freeform=3','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','md5','path','querystring','request-promise','randomstring','sox','google-tts-api','url','parse','util','./aws','./google','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','host','WHAT_EVER','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','finish\x20download\x20file'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6799,0x6e));var _0x9679=function(_0x9b3c59,_0x3a014e){_0x9b3c59=_0x9b3c59-0x0;var _0x2b41d6=_0x6799[_0x9b3c59];return _0x2b41d6;};'use strict';var apiai=require(_0x9679('0x0'));var BPromise=require(_0x9679('0x1'));var dialogflow=require(_0x9679('0x2'));var fs=require('fs');var http=require(_0x9679('0x3'));var https=require('https');var md5=require(_0x9679('0x4'));var path=require(_0x9679('0x5'));var querystring=require(_0x9679('0x6'));var rp=require(_0x9679('0x7'));var rs=require(_0x9679('0x8'));var sox=require(_0x9679('0x9'));var tts=require(_0x9679('0xa'));var urlParse=require(_0x9679('0xb'))[_0x9679('0xc')];var util=require(_0x9679('0xd'));var aws=require(_0x9679('0xe'));var google=require(_0x9679('0xf'));var sestek=require(_0x9679('0x10'));var tilde=require(_0x9679('0x11'));var logger=require(_0x9679('0x12'))(_0x9679('0x13'));var ISPEECH_API=_0x9679('0x14');function downloadFile(_0x1d7002,_0x384ba8){return new BPromise(function(_0x3f0868,_0xde048f){var _0x2a6479=urlParse(_0x1d7002);var _0x3a3400=_0x2a6479['protocol']===_0x9679('0x15')?https:http;var _0x930d1f={'host':_0x2a6479[_0x9679('0x16')],'path':_0x2a6479[_0x9679('0x5')],'headers':{'user-agent':_0x9679('0x17')}};_0x3a3400[_0x9679('0x18')](_0x930d1f,function(_0xe950f4){if(_0xe950f4[_0x9679('0x19')]!==0xc8){logger[_0x9679('0x1a')](_0x9679('0x1b')+_0x1d7002+_0x9679('0x1c')+_0xe950f4['statusCode']+'\x20('+_0xe950f4[_0x9679('0x1d')]+')');_0xde048f(new Error(_0x9679('0x1b')+_0x1d7002+_0x9679('0x1c')+_0xe950f4['statusCode']+'\x20('+_0xe950f4['statusMessage']+')'));return;}var _0x2ac02e=fs[_0x9679('0x1e')](_0x384ba8);_0x2ac02e['on'](_0x9679('0x1f'),function(){logger['info'](_0x9679('0x20'));_0x2ac02e['close'](_0x3f0868);});_0x2ac02e['on'](_0x9679('0x1a'),function(_0x3efc36){fs['unlink'](_0x384ba8);logger['error'](_0x9679('0x21'),_0x3efc36);_0xde048f(_0x3efc36);});_0xe950f4[_0x9679('0x22')](_0x2ac02e);})['on'](_0x9679('0x1a'),function(_0x476ac3){logger[_0x9679('0x1a')](_0x476ac3);_0xde048f(_0x476ac3);})[_0x9679('0x23')]();});}function uploadFile(_0x5a40d3){return new BPromise(function(_0x4c8a01,_0x232fbb){var _0x45cd1a=urlParse(_0x5a40d3);var _0xbcd33=_0x45cd1a[_0x9679('0x24')]==='https:'?https:http;var _0x430c0e={'host':_0x45cd1a[_0x9679('0x16')],'path':_0x45cd1a[_0x9679('0x5')],'headers':{'user-agent':_0x9679('0x17')}};_0xbcd33['get'](_0x430c0e,function(_0x191592){if(_0x191592[_0x9679('0x19')]!==0xc8){_0x232fbb(new Error(_0x9679('0x1b')+_0x5a40d3+_0x9679('0x1c')+_0x191592['statusCode']+'\x20('+_0x191592[_0x9679('0x1d')]+')'));return;}var _0x215ae9='';_0x191592['on'](_0x9679('0x25'),function(_0x5afb0b){_0x215ae9+=_0x5afb0b;});_0x191592['on']('end',function(){_0x4c8a01(_0x215ae9);});})['on'](_0x9679('0x1a'),function(_0x310e48){_0x232fbb(_0x310e48);})[_0x9679('0x23')]();});}function convertFile(_0x5826fc,_0x16d501){return new BPromise(function(_0x49d695,_0x203743){var _0x569018=sox['transcode'](_0x5826fc,_0x16d501,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x569018['on']('error',function(_0x5423c7){logger[_0x9679('0x1a')](_0x9679('0x26'),_0x5423c7);_0x203743(_0x5423c7);});_0x569018['on'](_0x9679('0x23'),function(){logger[_0x9679('0x27')](_0x9679('0x28'));_0x49d695();});_0x569018[_0x9679('0x29')]();});}function base64Decode(_0x26982e,_0x302ca6){var _0x4679e5=path[_0x9679('0x2a')](__dirname,_0x9679('0x2b'),rs[_0x9679('0x2c')](0x4)+'.wav');fs[_0x9679('0x2d')](_0x4679e5,_0x26982e,_0x9679('0x2e'));return convertFile(_0x4679e5,_0x302ca6)[_0x9679('0x2f')](function(){try{fs[_0x9679('0x30')](_0x4679e5);fs[_0x9679('0x31')](_0x302ca6,'777');}catch(_0x350058){logger['error'](_0x350058);}return _0x302ca6[_0x9679('0x32')]('.')[0x0];});}function base64Encode(_0x4aa1ec){var _0x1bf8bb=fs['readFileSync'](_0x4aa1ec);return new Buffer(_0x1bf8bb)['toString']('base64');}exports[_0x9679('0x33')]=function(_0x5f0e19,_0x53c5a5,_0x44a3c8,_0x37e743,_0x4ea828,_0x4d36c2){var _0x1ec0b0,_0xb1a34c;var _0x348416=_0x9679('0x34');var _0xdd061b=_0x9679('0x35')+_0x5f0e19;var _0x4d04d9={};if(_0x53c5a5===_0x9679('0x36')){_0x4d04d9[_0x9679('0x37')]={'ssml':_0x44a3c8};}else{_0x4d04d9[_0x9679('0x37')]={'text':_0x44a3c8};};_0x4d04d9[_0x9679('0x38')]={'languageCode':_0x37e743,'ssmlGender':_0x4ea828};_0x4d04d9['audioConfig']={'audioEncoding':_0x9679('0x39'),'sampleRateHertz':0x1f40};var _0x2badfc={'url':_0x348416+_0x9679('0x3a')+_0xdd061b,'method':_0x9679('0x3b'),'json':!![],'body':_0x4d04d9};return rp(_0x2badfc)['then'](function(_0x50fa2f){return new BPromise(function(_0x481097,_0x4aa310){_0x1ec0b0=path[_0x9679('0x2a')](__dirname,_0x9679('0x2b'),rs[_0x9679('0x2c')](0x4)+_0x9679('0x3c'));var _0x35187d=Buffer['from'](_0x50fa2f[_0x9679('0x3d')],'base64');return fs[_0x9679('0x3e')](_0x1ec0b0,_0x35187d,function(_0x55ad26){_0x4aa310(_0x55ad26);},function(_0xdb285c){fs[_0x9679('0x31')](_0x1ec0b0,_0x9679('0x3f'));_0x481097(_0xdb285c);});});})[_0x9679('0x2f')](function(_0x166df2){_0xb1a34c=path[_0x9679('0x2a')](__dirname,'tmp',rs['generate'](0x4)+_0x9679('0x40'));return convertFile(_0x1ec0b0,_0xb1a34c);})['then'](function(){try{fs[_0x9679('0x30')](_0x1ec0b0);fs[_0x9679('0x31')](_0xb1a34c,_0x9679('0x3f'));}catch(_0x40958b){logger[_0x9679('0x1a')](_0x40958b);}logger[_0x9679('0x27')](_0x9679('0x41'),_0xb1a34c[_0x9679('0x32')]('.')[0x0]);return _0xb1a34c[_0x9679('0x32')]('.')[0x0];});};exports[_0x9679('0x42')]=function(_0x3c1ab8,_0x1d5c69){var _0x5a9a77=_0x9679('0x43');var _0x58c0d0,_0xdf9f9b;var _0x307d46;var _0x48fd94={'encoding':_0x9679('0x44'),'method':_0x9679('0x3b'),'timeout':0x2710,'url':_0x5a9a77,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0x9679('0x45')+encodeURIComponent(JSON[_0x9679('0x46')]([[[_0x9679('0x47'),JSON['stringify']([_0x3c1ab8,_0x1d5c69||'en',![],_0x9679('0x48')]),null,_0x9679('0x49')]]]))};return rp(_0x48fd94)[_0x9679('0x2f')](function(_0x12e6f1){try{_0x307d46=eval(_0x12e6f1[_0x9679('0x4a')](0x5))[0x0][0x2];}catch(_0x49bb01){throw new Error('parse\x20response\x20failed:\x0a'+_0x12e6f1['data']);}if(!_0x307d46){if(_0x3c1ab8[_0x9679('0x4b')]>0xc8){throw new Error(_0x9679('0x4c'));}else{throw new Error('lang\x20\x22'+_0x1d5c69+'\x22\x20might\x20not\x20exist');}}try{_0x307d46=eval(_0x307d46)[0x0];}catch(_0x869f79){throw new Error(_0x9679('0x4d')+res[_0x9679('0x25')]);}const _0xdbc169=_0x307d46;_0x58c0d0=path['resolve'](__dirname,_0x9679('0x2b'),rs[_0x9679('0x2c')](0x4)+_0x9679('0x3c'));fs['writeFileSync'](_0x58c0d0,_0x307d46,{'encoding':_0x9679('0x2e')});_0xdf9f9b=path[_0x9679('0x2a')](__dirname,_0x9679('0x2b'),rs['generate'](0x4)+_0x9679('0x40'));return convertFile(_0x58c0d0,_0xdf9f9b);})['then'](function(){try{fs['unlink'](_0x58c0d0);fs[_0x9679('0x31')](_0xdf9f9b,_0x9679('0x3f'));}catch(_0x296044){logger['error'](_0x296044);}logger['info'](_0x9679('0x4e'),_0xdf9f9b[_0x9679('0x32')]('.')[0x0]);return _0xdf9f9b['split']('.')[0x0];});};exports[_0x9679('0x4f')]=function(_0x210bee,_0x590d05,_0x1c72a9){return google[_0x9679('0x50')](_0x210bee,_0x590d05,_0x1c72a9)[_0x9679('0x2f')](function(_0x8e649e){logger[_0x9679('0x27')](_0x8e649e[_0x9679('0x51')]);return rp(_0x8e649e);})[_0x9679('0x2f')](function(_0x9f823f){var _0x471821='';var _0x10bae0=0x0;try{fs[_0x9679('0x30')](_0x210bee);}catch(_0x87cef0){logger[_0x9679('0x1a')](_0x87cef0);}if(_0x9f823f&&_0x9f823f[_0x9679('0x52')]){_0x471821=_0x9f823f[_0x9679('0x52')][_0x9679('0x53')](function(_0x12cb6a){return _0x12cb6a&&_0x12cb6a[_0x9679('0x54')][0x0]&&_0x12cb6a[_0x9679('0x54')][0x0][_0x9679('0x55')]?_0x12cb6a[_0x9679('0x54')][0x0][_0x9679('0x55')]:'';})[_0x9679('0x56')]('\x0a');_0x10bae0=_0x9f823f[_0x9679('0x52')][_0x9679('0x53')](function(_0x2a1dee){return _0x2a1dee&&_0x2a1dee[_0x9679('0x54')][0x0]&&_0x2a1dee[_0x9679('0x54')][0x0]['confidence']?_0x2a1dee[_0x9679('0x54')][0x0][_0x9679('0x57')]:0x0;})[_0x9679('0x56')]('\x0a');}logger[_0x9679('0x27')](_0x9679('0x58'),_0x471821);logger[_0x9679('0x27')](_0x9679('0x59'),_0x10bae0);return{'transcript':_0x471821,'confidence':_0x10bae0};})[_0x9679('0x5a')](function(_0x4ff2d7){logger[_0x9679('0x1a')](_0x9679('0x5b'),_0x4ff2d7[_0x9679('0x19')],_0x4ff2d7[_0x9679('0x5c')],_0x4ff2d7[_0x9679('0x5d')]);});};exports[_0x9679('0x5e')]=function(_0x4b41d4,_0x17b473,_0x1a4e99,_0x30765f){var _0x560d5a=apiai(_0x17b473,{'language':_0x30765f||'en'});return _0x560d5a[_0x9679('0x5f')](_0x1a4e99,{'sessionId':md5(_0x4b41d4)})[_0x9679('0x2f')](function(_0x944d31){logger[_0x9679('0x27')](JSON[_0x9679('0x46')](_0x944d31));return{'source':_0x944d31[_0x9679('0x60')][_0x9679('0x61')],'resolvedQuery':_0x944d31['result'][_0x9679('0x62')],'action':_0x944d31[_0x9679('0x60')][_0x9679('0x63')],'actionIncomplete':_0x944d31[_0x9679('0x60')][_0x9679('0x64')],'speech':_0x944d31['result'][_0x9679('0x65')]['speech'],'score':_0x944d31[_0x9679('0x60')]['score'],'statusCode':_0x944d31[_0x9679('0x66')][_0x9679('0x67')],'endConversation':_0x944d31[_0x9679('0x60')]['metadata'][_0x9679('0x68')]||![],'isFallbackIntent':_0x944d31[_0x9679('0x60')]['metadata'][_0x9679('0x69')]};});};exports[_0x9679('0x6a')]=function(_0x511d01,_0x312d15,_0x4561e3,_0x3b98d0,_0xff677,_0x26560a){var _0x458302=_0x3b98d0[_0x9679('0x6b')](/\\n/g,'\x0a');var _0x5bc66a={'credentials':{'private_key':_0x458302,'client_email':_0x4561e3}};var _0xae1a7=new dialogflow[(_0x9679('0x6c'))](_0x5bc66a);var _0x242a5e=_0xae1a7[_0x9679('0x6d')](_0x312d15,md5(_0x511d01));var _0x50c321={'session':_0x242a5e,'queryInput':{'text':{'text':_0xff677,'languageCode':_0x26560a}}};return _0xae1a7[_0x9679('0x6e')](_0x50c321)[_0x9679('0x2f')](function(_0x54a128){if(_0x54a128&&_0x54a128['length']){logger['info'](_0x9679('0x6f'),JSON['stringify'](_0x54a128));var _0x311823=_0x54a128[0x0];if(_0x311823){var _0x1ec69f={'action':_0x311823[_0x9679('0x70')][_0x9679('0x63')],'allRequiredParamsPresent':_0x311823['queryResult'][_0x9679('0x71')],'endConversation':_0x311823[_0x9679('0x70')][_0x9679('0x72')]&&_0x311823[_0x9679('0x70')]['diagnosticInfo']['fields']?_0x311823['queryResult'][_0x9679('0x72')][_0x9679('0x73')]['end_conversation']['boolValue']:![],'fulfillmentText':_0x311823[_0x9679('0x70')][_0x9679('0x74')],'intentName':_0x311823['queryResult']['intent']['name'],'intentDisplayName':_0x311823['queryResult'][_0x9679('0x75')][_0x9679('0x76')],'isFallbackIntent':_0x311823['queryResult'][_0x9679('0x75')][_0x9679('0x77')],'languageCode':_0x311823['queryResult'][_0x9679('0x78')],'queryText':_0x311823[_0x9679('0x70')][_0x9679('0x79')],'responseId':_0x311823[_0x9679('0x7a')],'score':_0x311823[_0x9679('0x70')][_0x9679('0x7b')],'speech':_0x311823[_0x9679('0x70')]['fulfillmentText'],'providerResponse':JSON[_0x9679('0x46')](_0x54a128)};return _0x1ec69f;}}});};exports[_0x9679('0x7c')]=function(_0x54bd4d,_0x1c9e0f,_0x4f9989,_0x33f53d){return tilde['asr'](_0x54bd4d,_0x1c9e0f,_0x4f9989,_0x33f53d)[_0x9679('0x2f')](function(_0x50c22a){try{fs[_0x9679('0x30')](_0x54bd4d);}catch(_0x1d081e){logger['error'](_0x1d081e);}logger['info'](_0x9679('0x7d'),_0x50c22a[_0x9679('0x55')]);logger[_0x9679('0x27')](_0x9679('0x7e'),_0x50c22a[_0x9679('0x57')]);return _0x50c22a;});};exports[_0x9679('0x7f')]=function(_0x707389,_0x4bdcd2,_0x239fb8,_0x4af5da,_0x5c6df3,_0x22ba0f){var _0xb12e2=path[_0x9679('0x2a')](__dirname,_0x9679('0x2b'),rs[_0x9679('0x2c')](0x4)+_0x9679('0x3c'));var _0x1ecdf2;return aws[_0x9679('0x80')](_0x707389,_0x4bdcd2,_0x239fb8,_0x4af5da,_0x5c6df3,_0x22ba0f,_0xb12e2)[_0x9679('0x2f')](function(){_0x1ecdf2=path[_0x9679('0x2a')](__dirname,_0x9679('0x2b'),rs[_0x9679('0x2c')](0x4)+_0x9679('0x40'));return convertFile(_0xb12e2,_0x1ecdf2);})[_0x9679('0x2f')](function(){try{fs[_0x9679('0x30')](_0xb12e2);fs['chmodSync'](_0x1ecdf2,_0x9679('0x3f'));}catch(_0x388346){logger[_0x9679('0x1a')](_0x388346);}return _0x1ecdf2['split']('.')[0x0];});};exports['awsLex']=function(_0x225bfd,_0xebc313,_0x49ef82,_0x4f668a,_0x417b8f,_0x524e6c){return aws['lex'](_0x225bfd,_0xebc313,_0x49ef82,_0x4f668a,_0x417b8f,_0x524e6c)[_0x9679('0x2f')](function(_0x341676){logger[_0x9679('0x27')](JSON[_0x9679('0x46')](_0x341676));return _0x341676;});};exports['ispeechTTS']=function(_0x2f34aa,_0x58e4c7,_0x5dd3a2,_0x4bdd81){var _0x1c1f1c=util[_0x9679('0x81')](_0x9679('0x82'),ISPEECH_API,_0x2f34aa,encodeURIComponent(_0x58e4c7),_0x5dd3a2,_0x4bdd81);var _0x1b0366=path[_0x9679('0x2a')](__dirname,_0x9679('0x2b'),rs[_0x9679('0x2c')](0x4)+_0x9679('0x3c'));var _0x4b5c8c;return downloadFile(_0x1c1f1c,_0x1b0366)[_0x9679('0x2f')](function(){_0x4b5c8c=path[_0x9679('0x2a')](__dirname,_0x9679('0x2b'),rs[_0x9679('0x2c')](0x4)+_0x9679('0x40'));return convertFile(_0x1b0366,_0x4b5c8c);})[_0x9679('0x2f')](function(){try{fs[_0x9679('0x30')](_0x1b0366);fs['chmodSync'](_0x4b5c8c,_0x9679('0x3f'));}catch(_0x37dd94){logger['error'](_0x37dd94);}return _0x4b5c8c[_0x9679('0x32')]('.')[0x0];});};exports[_0x9679('0x83')]=function(_0x58b847,_0x288b78,_0x4452ea,_0x1781dd){var _0x1cba1b=util['format'](_0x9679('0x84'),ISPEECH_API,_0x288b78,_0x4452ea,base64Encode(_0x58b847),_0x1781dd?util['format']('model=%s',encodeURIComponent(_0x1781dd)):_0x9679('0x85'));return uploadFile(_0x1cba1b)['then'](function(_0x2d629e){return querystring[_0x9679('0xc')](_0x2d629e);});};exports['sestekNDA']=function(_0x257fa6,_0x5cf83f){return sestek[_0x9679('0x86')](_0x257fa6,_0x5cf83f)[_0x9679('0x2f')](function(_0x2e3688){logger['info'](JSON['stringify'](_0x2e3688));var _0x59efa8={'speech':_0x2e3688[_0x9679('0x87')],'action':_0x2e3688[_0x9679('0x88')]?_0x2e3688['channelData'][_0x9679('0x89')]:undefined,'actiondata':_0x2e3688[_0x9679('0x88')]?_0x2e3688['channelData'][_0x9679('0x8a')]:undefined};if(_0x2e3688[_0x9679('0x88')]&&_0x2e3688[_0x9679('0x88')][_0x9679('0x8b')]){return base64Decode(_0x2e3688['channelData'][_0x9679('0x8b')][_0x9679('0x8c')],path[_0x9679('0x2a')](__dirname,_0x9679('0x2b'),rs[_0x9679('0x2c')](0x4)+_0x9679('0x40')))[_0x9679('0x2f')](function(_0x5ec133){_0x59efa8[_0x9679('0x8d')]=_0x5ec133;return _0x59efa8;});}return _0x59efa8;});};exports[_0x9679('0x8e')]=function(){return __dirname;};
\ No newline at end of file
+var _0x3086=['statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','finish','info','close','download\x20error','end','transcode','wav','resolve','generate','.wav','writeFileSync','base64','then','unlink','chmodSync','777','split','readFileSync','toString','googleCloudTTS','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','tmp','.mp3','from','writeFile','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','f.req=','stringify','jQ1olc','null','generic','parse\x20response\x20failed:\x0a','data','lang\x20\x22','\x22\x20might\x20not\x20exist','goggleTTS\x20path','asr','uri','map','alternatives','transcript','join','results','confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','result','source','resolvedQuery','action','actionIncomplete','fulfillment','score','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','sessionPath','detectIntent','length','queryResult','allRequiredParamsPresent','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','ispeechTTS','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','freeform=3','sestekNDA','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','audiofile','dialogflow','http','https','md5','path','querystring','google-tts-api','url','parse','util','./aws','./google','./tilde','../../../config/logger','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','get'];(function(_0x21fd0e,_0x35f669){var _0x43d9a8=function(_0x4d8ead){while(--_0x4d8ead){_0x21fd0e['push'](_0x21fd0e['shift']());}};_0x43d9a8(++_0x35f669);}(_0x3086,0x74));var _0x6308=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0x3086[_0x4c12ec];return _0x3ae42c;};'use strict';var apiai=require('apiai-promise');var BPromise=require('bluebird');var dialogflow=require(_0x6308('0x0'));var fs=require('fs');var http=require(_0x6308('0x1'));var https=require(_0x6308('0x2'));var md5=require(_0x6308('0x3'));var path=require(_0x6308('0x4'));var querystring=require(_0x6308('0x5'));var rp=require('request-promise');var rs=require('randomstring');var sox=require('sox');var tts=require(_0x6308('0x6'));var urlParse=require(_0x6308('0x7'))[_0x6308('0x8')];var util=require(_0x6308('0x9'));var aws=require(_0x6308('0xa'));var google=require(_0x6308('0xb'));var sestek=require('./sestek');var tilde=require(_0x6308('0xc'));var logger=require(_0x6308('0xd'))('agi');var ISPEECH_API=_0x6308('0xe');function downloadFile(_0x350868,_0x2aea16){return new BPromise(function(_0x4b3cec,_0x21be51){var _0x529adf=urlParse(_0x350868);var _0x538a27=_0x529adf[_0x6308('0xf')]===_0x6308('0x10')?https:http;var _0x2f3201={'host':_0x529adf[_0x6308('0x11')],'path':_0x529adf[_0x6308('0x4')],'headers':{'user-agent':_0x6308('0x12')}};_0x538a27[_0x6308('0x13')](_0x2f3201,function(_0x16de1a){if(_0x16de1a[_0x6308('0x14')]!==0xc8){logger[_0x6308('0x15')](_0x6308('0x16')+_0x350868+_0x6308('0x17')+_0x16de1a[_0x6308('0x14')]+'\x20('+_0x16de1a[_0x6308('0x18')]+')');_0x21be51(new Error('request\x20to\x20'+_0x350868+_0x6308('0x17')+_0x16de1a['statusCode']+'\x20('+_0x16de1a['statusMessage']+')'));return;}var _0x28ae60=fs['createWriteStream'](_0x2aea16);_0x28ae60['on'](_0x6308('0x19'),function(){logger[_0x6308('0x1a')]('finish\x20download\x20file');_0x28ae60[_0x6308('0x1b')](_0x4b3cec);});_0x28ae60['on']('error',function(_0x7d85df){fs['unlink'](_0x2aea16);logger['error'](_0x6308('0x1c'),_0x7d85df);_0x21be51(_0x7d85df);});_0x16de1a['pipe'](_0x28ae60);})['on'](_0x6308('0x15'),function(_0x3abafa){logger['error'](_0x3abafa);_0x21be51(_0x3abafa);})[_0x6308('0x1d')]();});}function uploadFile(_0x5de569){return new BPromise(function(_0x34bbae,_0x5bfa4e){var _0x132944=urlParse(_0x5de569);var _0x9a1e1=_0x132944[_0x6308('0xf')]==='https:'?https:http;var _0x20d422={'host':_0x132944[_0x6308('0x11')],'path':_0x132944[_0x6308('0x4')],'headers':{'user-agent':'WHAT_EVER'}};_0x9a1e1['get'](_0x20d422,function(_0x4347e0){if(_0x4347e0[_0x6308('0x14')]!==0xc8){_0x5bfa4e(new Error(_0x6308('0x16')+_0x5de569+_0x6308('0x17')+_0x4347e0[_0x6308('0x14')]+'\x20('+_0x4347e0[_0x6308('0x18')]+')'));return;}var _0x11e03a='';_0x4347e0['on']('data',function(_0x7ab108){_0x11e03a+=_0x7ab108;});_0x4347e0['on'](_0x6308('0x1d'),function(){_0x34bbae(_0x11e03a);});})['on'](_0x6308('0x15'),function(_0x246b01){_0x5bfa4e(_0x246b01);})[_0x6308('0x1d')]();});}function convertFile(_0x589431,_0x3239c7){return new BPromise(function(_0x197d8b,_0x45ac4e){var _0x43bc6c=sox[_0x6308('0x1e')](_0x589431,_0x3239c7,{'sampleRate':0x1f40,'format':_0x6308('0x1f'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x43bc6c['on'](_0x6308('0x15'),function(_0x43b098){logger[_0x6308('0x15')]('error\x20convert',_0x43b098);_0x45ac4e(_0x43b098);});_0x43bc6c['on'](_0x6308('0x1d'),function(){logger[_0x6308('0x1a')]('finish\x20to\x20convert');_0x197d8b();});_0x43bc6c['start']();});}function base64Decode(_0x56f212,_0x3c5b84){var _0x2c86f1=path[_0x6308('0x20')](__dirname,'tmp',rs[_0x6308('0x21')](0x4)+_0x6308('0x22'));fs[_0x6308('0x23')](_0x2c86f1,_0x56f212,_0x6308('0x24'));return convertFile(_0x2c86f1,_0x3c5b84)[_0x6308('0x25')](function(){try{fs[_0x6308('0x26')](_0x2c86f1);fs[_0x6308('0x27')](_0x3c5b84,_0x6308('0x28'));}catch(_0x24172e){logger[_0x6308('0x15')](_0x24172e);}return _0x3c5b84[_0x6308('0x29')]('.')[0x0];});}function base64Encode(_0x85b549){var _0xba89ad=fs[_0x6308('0x2a')](_0x85b549);return new Buffer(_0xba89ad)[_0x6308('0x2b')]('base64');}exports[_0x6308('0x2c')]=function(_0x4d5598,_0x223f7a,_0x1164f3,_0x4938eb,_0x286e06,_0x1384fe){var _0x3a6890,_0x54f968;var _0x1286eb='https://texttospeech.googleapis.com/v1/';var _0x3bf71d=_0x6308('0x2d')+_0x4d5598;var _0x29a3d6={};if(_0x223f7a===_0x6308('0x2e')){_0x29a3d6[_0x6308('0x2f')]={'ssml':_0x1164f3};}else{_0x29a3d6['input']={'text':_0x1164f3};};_0x29a3d6[_0x6308('0x30')]={'languageCode':_0x4938eb,'ssmlGender':_0x286e06};_0x29a3d6[_0x6308('0x31')]={'audioEncoding':_0x6308('0x32'),'sampleRateHertz':0x1f40};var _0x2d7164={'url':_0x1286eb+_0x6308('0x33')+_0x3bf71d,'method':_0x6308('0x34'),'json':!![],'body':_0x29a3d6};return rp(_0x2d7164)[_0x6308('0x25')](function(_0x648a3f){return new BPromise(function(_0x4e9744,_0x378da){_0x3a6890=path[_0x6308('0x20')](__dirname,_0x6308('0x35'),rs[_0x6308('0x21')](0x4)+_0x6308('0x36'));var _0x14bc8f=Buffer[_0x6308('0x37')](_0x648a3f['audioContent'],'base64');return fs[_0x6308('0x38')](_0x3a6890,_0x14bc8f,function(_0x205e8d){_0x378da(_0x205e8d);},function(_0x4a3f6c){fs['chmodSync'](_0x3a6890,_0x6308('0x28'));_0x4e9744(_0x4a3f6c);});});})['then'](function(_0x21daf6){_0x54f968=path[_0x6308('0x20')](__dirname,_0x6308('0x35'),rs[_0x6308('0x21')](0x4)+'.wav');return convertFile(_0x3a6890,_0x54f968);})['then'](function(){try{fs['unlink'](_0x3a6890);fs[_0x6308('0x27')](_0x54f968,_0x6308('0x28'));}catch(_0x2362bd){logger[_0x6308('0x15')](_0x2362bd);}logger['info']('googleCloudTTS\x20path',_0x54f968[_0x6308('0x29')]('.')[0x0]);return _0x54f968[_0x6308('0x29')]('.')[0x0];});};exports[_0x6308('0x39')]=function(_0x51c546,_0x29d116){var _0x466b79=_0x6308('0x3a');var _0x1cd344,_0x250234;var _0x231c8f;var _0xdc01f5={'encoding':_0x6308('0x3b'),'method':'POST','timeout':0x2710,'url':_0x466b79,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0x6308('0x3c')+encodeURIComponent(JSON[_0x6308('0x3d')]([[[_0x6308('0x3e'),JSON['stringify']([_0x51c546,_0x29d116||'en',![],_0x6308('0x3f')]),null,_0x6308('0x40')]]]))};return rp(_0xdc01f5)['then'](function(_0x3ff0a8){try{_0x231c8f=eval(_0x3ff0a8['slice'](0x5))[0x0][0x2];}catch(_0x20e42d){throw new Error(_0x6308('0x41')+_0x3ff0a8[_0x6308('0x42')]);}if(!_0x231c8f){if(_0x51c546['length']>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error(_0x6308('0x43')+_0x29d116+_0x6308('0x44'));}}try{_0x231c8f=eval(_0x231c8f)[0x0];}catch(_0x214e05){throw new Error(_0x6308('0x41')+res['data']);}const _0x14c663=_0x231c8f;_0x1cd344=path['resolve'](__dirname,_0x6308('0x35'),rs[_0x6308('0x21')](0x4)+'.mp3');fs[_0x6308('0x23')](_0x1cd344,_0x231c8f,{'encoding':_0x6308('0x24')});_0x250234=path[_0x6308('0x20')](__dirname,_0x6308('0x35'),rs[_0x6308('0x21')](0x4)+'.wav');return convertFile(_0x1cd344,_0x250234);})['then'](function(){try{fs[_0x6308('0x26')](_0x1cd344);fs[_0x6308('0x27')](_0x250234,_0x6308('0x28'));}catch(_0x93179e){logger[_0x6308('0x15')](_0x93179e);}logger[_0x6308('0x1a')](_0x6308('0x45'),_0x250234['split']('.')[0x0]);return _0x250234[_0x6308('0x29')]('.')[0x0];});};exports['googleASR']=function(_0x48d03f,_0x327ad8,_0x277374){return google[_0x6308('0x46')](_0x48d03f,_0x327ad8,_0x277374)[_0x6308('0x25')](function(_0x29e14a){logger[_0x6308('0x1a')](_0x29e14a[_0x6308('0x47')]);return rp(_0x29e14a);})['then'](function(_0x7d87b3){var _0x5db944='';var _0x20b55b=0x0;try{fs[_0x6308('0x26')](_0x48d03f);}catch(_0x2a823d){logger[_0x6308('0x15')](_0x2a823d);}if(_0x7d87b3&&_0x7d87b3['results']){_0x5db944=_0x7d87b3['results'][_0x6308('0x48')](function(_0x3becfe){return _0x3becfe&&_0x3becfe[_0x6308('0x49')][0x0]&&_0x3becfe['alternatives'][0x0][_0x6308('0x4a')]?_0x3becfe['alternatives'][0x0][_0x6308('0x4a')]:'';})[_0x6308('0x4b')]('\x0a');_0x20b55b=_0x7d87b3[_0x6308('0x4c')][_0x6308('0x48')](function(_0x3a866d){return _0x3a866d&&_0x3a866d['alternatives'][0x0]&&_0x3a866d[_0x6308('0x49')][0x0][_0x6308('0x4d')]?_0x3a866d[_0x6308('0x49')][0x0][_0x6308('0x4d')]:0x0;})[_0x6308('0x4b')]('\x0a');}logger[_0x6308('0x1a')]('googleASR\x20transcription',_0x5db944);logger[_0x6308('0x1a')]('googleASR\x20confidence',_0x20b55b);return{'transcript':_0x5db944,'confidence':_0x20b55b};})[_0x6308('0x4e')](function(_0x5bcb01){logger[_0x6308('0x15')](_0x6308('0x4f'),_0x5bcb01[_0x6308('0x14')],_0x5bcb01[_0x6308('0x50')],_0x5bcb01[_0x6308('0x51')]);});};exports[_0x6308('0x52')]=function(_0x2d4b68,_0x2dcab1,_0x49b428,_0x25216f){var _0x58e72a=apiai(_0x2dcab1,{'language':_0x25216f||'en'});return _0x58e72a['textRequest'](_0x49b428,{'sessionId':md5(_0x2d4b68)})[_0x6308('0x25')](function(_0x4715ef){logger[_0x6308('0x1a')](JSON[_0x6308('0x3d')](_0x4715ef));return{'source':_0x4715ef[_0x6308('0x53')][_0x6308('0x54')],'resolvedQuery':_0x4715ef[_0x6308('0x53')][_0x6308('0x55')],'action':_0x4715ef['result'][_0x6308('0x56')],'actionIncomplete':_0x4715ef[_0x6308('0x53')][_0x6308('0x57')],'speech':_0x4715ef['result'][_0x6308('0x58')]['speech'],'score':_0x4715ef[_0x6308('0x53')][_0x6308('0x59')],'statusCode':_0x4715ef[_0x6308('0x5a')][_0x6308('0x5b')],'endConversation':_0x4715ef['result'][_0x6308('0x5c')][_0x6308('0x5d')]||![],'isFallbackIntent':_0x4715ef[_0x6308('0x53')][_0x6308('0x5c')][_0x6308('0x5e')]};});};exports[_0x6308('0x5f')]=function(_0x7ec242,_0x1bd4c2,_0x535707,_0x272a57,_0x470102,_0x1ae3b1){var _0x41f57a=_0x272a57[_0x6308('0x60')](/\\n/g,'\x0a');var _0x3232fb={'credentials':{'private_key':_0x41f57a,'client_email':_0x535707}};var _0xbbd976=new dialogflow[(_0x6308('0x61'))](_0x3232fb);var _0x55636b=_0xbbd976[_0x6308('0x62')](_0x1bd4c2,md5(_0x7ec242));var _0x36e9bf={'session':_0x55636b,'queryInput':{'text':{'text':_0x470102,'languageCode':_0x1ae3b1}}};return _0xbbd976[_0x6308('0x63')](_0x36e9bf)[_0x6308('0x25')](function(_0x12db38){if(_0x12db38&&_0x12db38[_0x6308('0x64')]){logger[_0x6308('0x1a')]('Dialogflow\x20V2\x20response:',JSON[_0x6308('0x3d')](_0x12db38));var _0x249268=_0x12db38[0x0];if(_0x249268){var _0x110526={'action':_0x249268[_0x6308('0x65')][_0x6308('0x56')],'allRequiredParamsPresent':_0x249268['queryResult'][_0x6308('0x66')],'endConversation':_0x249268[_0x6308('0x65')]['diagnosticInfo']&&_0x249268[_0x6308('0x65')]['diagnosticInfo']['fields']?_0x249268['queryResult']['diagnosticInfo'][_0x6308('0x67')][_0x6308('0x68')][_0x6308('0x69')]:![],'fulfillmentText':_0x249268[_0x6308('0x65')][_0x6308('0x6a')],'intentName':_0x249268[_0x6308('0x65')][_0x6308('0x6b')][_0x6308('0x50')],'intentDisplayName':_0x249268['queryResult'][_0x6308('0x6b')][_0x6308('0x6c')],'isFallbackIntent':_0x249268['queryResult'][_0x6308('0x6b')][_0x6308('0x6d')],'languageCode':_0x249268[_0x6308('0x65')][_0x6308('0x6e')],'queryText':_0x249268[_0x6308('0x65')][_0x6308('0x6f')],'responseId':_0x249268[_0x6308('0x70')],'score':_0x249268['queryResult'][_0x6308('0x71')],'speech':_0x249268[_0x6308('0x65')]['fulfillmentText'],'providerResponse':JSON[_0x6308('0x3d')](_0x12db38)};return _0x110526;}}});};exports[_0x6308('0x72')]=function(_0x55c563,_0x5309e7,_0x26a8d0,_0x1e892b){return tilde[_0x6308('0x46')](_0x55c563,_0x5309e7,_0x26a8d0,_0x1e892b)['then'](function(_0x1cbd26){try{fs[_0x6308('0x26')](_0x55c563);}catch(_0x1369e9){logger[_0x6308('0x15')](_0x1369e9);}logger[_0x6308('0x1a')](_0x6308('0x73'),_0x1cbd26[_0x6308('0x4a')]);logger[_0x6308('0x1a')](_0x6308('0x74'),_0x1cbd26[_0x6308('0x4d')]);return _0x1cbd26;});};exports[_0x6308('0x75')]=function(_0x48f39c,_0x930ea6,_0x2abfee,_0x59c5b7,_0x4475b8,_0xe60dd9){var _0x1c79fb=path[_0x6308('0x20')](__dirname,_0x6308('0x35'),rs[_0x6308('0x21')](0x4)+_0x6308('0x36'));var _0x1379ff;return aws[_0x6308('0x76')](_0x48f39c,_0x930ea6,_0x2abfee,_0x59c5b7,_0x4475b8,_0xe60dd9,_0x1c79fb)[_0x6308('0x25')](function(){_0x1379ff=path['resolve'](__dirname,_0x6308('0x35'),rs[_0x6308('0x21')](0x4)+'.wav');return convertFile(_0x1c79fb,_0x1379ff);})[_0x6308('0x25')](function(){try{fs[_0x6308('0x26')](_0x1c79fb);fs[_0x6308('0x27')](_0x1379ff,_0x6308('0x28'));}catch(_0x58617f){logger[_0x6308('0x15')](_0x58617f);}return _0x1379ff[_0x6308('0x29')]('.')[0x0];});};exports[_0x6308('0x77')]=function(_0x16f3fc,_0x23198b,_0x2696e8,_0x1a9c40,_0x3a30b7,_0x338ace){return aws[_0x6308('0x78')](_0x16f3fc,_0x23198b,_0x2696e8,_0x1a9c40,_0x3a30b7,_0x338ace)[_0x6308('0x25')](function(_0x157f51){logger[_0x6308('0x1a')](JSON[_0x6308('0x3d')](_0x157f51));return _0x157f51;});};exports[_0x6308('0x79')]=function(_0x1caca0,_0x1524c0,_0x7184eb,_0x2376f9){var _0x344241=util[_0x6308('0x7a')](_0x6308('0x7b'),ISPEECH_API,_0x1caca0,encodeURIComponent(_0x1524c0),_0x7184eb,_0x2376f9);var _0x2b6044=path[_0x6308('0x20')](__dirname,_0x6308('0x35'),rs[_0x6308('0x21')](0x4)+_0x6308('0x36'));var _0x14a357;return downloadFile(_0x344241,_0x2b6044)[_0x6308('0x25')](function(){_0x14a357=path['resolve'](__dirname,_0x6308('0x35'),rs[_0x6308('0x21')](0x4)+_0x6308('0x22'));return convertFile(_0x2b6044,_0x14a357);})[_0x6308('0x25')](function(){try{fs[_0x6308('0x26')](_0x2b6044);fs['chmodSync'](_0x14a357,_0x6308('0x28'));}catch(_0x454cbc){logger[_0x6308('0x15')](_0x454cbc);}return _0x14a357[_0x6308('0x29')]('.')[0x0];});};exports[_0x6308('0x7c')]=function(_0x161c47,_0x36b229,_0x5e2d1e,_0x34eb25){var _0x22e031=util[_0x6308('0x7a')](_0x6308('0x7d'),ISPEECH_API,_0x36b229,_0x5e2d1e,base64Encode(_0x161c47),_0x34eb25?util[_0x6308('0x7a')](_0x6308('0x7e'),encodeURIComponent(_0x34eb25)):_0x6308('0x7f'));return uploadFile(_0x22e031)['then'](function(_0x567b5b){return querystring[_0x6308('0x8')](_0x567b5b);});};exports[_0x6308('0x80')]=function(_0x5430c0,_0x38f92e){return sestek['nda'](_0x5430c0,_0x38f92e)[_0x6308('0x25')](function(_0x2b06e4){logger[_0x6308('0x1a')](JSON['stringify'](_0x2b06e4));var _0x272b13={'speech':_0x2b06e4[_0x6308('0x81')],'action':_0x2b06e4[_0x6308('0x82')]?_0x2b06e4['channelData'][_0x6308('0x83')]:undefined,'actiondata':_0x2b06e4[_0x6308('0x82')]?_0x2b06e4[_0x6308('0x82')][_0x6308('0x84')]:undefined};if(_0x2b06e4[_0x6308('0x82')]&&_0x2b06e4[_0x6308('0x82')][_0x6308('0x85')]){return base64Decode(_0x2b06e4[_0x6308('0x82')][_0x6308('0x85')][_0x6308('0x86')],path['resolve'](__dirname,_0x6308('0x35'),rs[_0x6308('0x21')](0x4)+_0x6308('0x22')))[_0x6308('0x25')](function(_0x4cdaec){_0x272b13[_0x6308('0x87')]=_0x4cdaec;return _0x272b13;});}return _0x272b13;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
index b5fa9d4..af44e30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8861=['exports'];(function(_0x2ed2d1,_0xf1f32b){var _0x5ac086=function(_0x426c2f){while(--_0x426c2f){_0x2ed2d1['push'](_0x2ed2d1['shift']());}};_0x5ac086(++_0xf1f32b);}(_0x8861,0xd8));var _0x1886=function(_0x1621dd,_0x172229){_0x1621dd=_0x1621dd-0x0;var _0x3b0046=_0x8861[_0x1621dd];return _0x3b0046;};var nda=require('./nda');module[_0x1886('0x0')]={'nda':nda};
\ No newline at end of file
+var _0x0389=['exports','./nda'];(function(_0x38e6bf,_0x363659){var _0x1cca35=function(_0x15b8e3){while(--_0x15b8e3){_0x38e6bf['push'](_0x38e6bf['shift']());}};_0x1cca35(++_0x363659);}(_0x0389,0xf1));var _0x9038=function(_0x2a67fe,_0x295c09){_0x2a67fe=_0x2a67fe-0x0;var _0x57e726=_0x0389[_0x2a67fe];return _0x57e726;};var nda=require(_0x9038('0x0'));module[_0x9038('0x1')]={'nda':nda};
\ No newline at end of file
index cfde7e0..ed3f537 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd139=['calleridname','dnid','extension','access_token','project','body','channelData','ProjectName','AudioOutputSettings','audio/wav','custom_action','custom_action_data','CustomActionData','info','stringify','request-promise','url','exports','POST','resolve','ndauth_url','password','username','then','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','uniqueid'];(function(_0x388cd7,_0x5cd067){var _0x8cd2f0=function(_0x595452){while(--_0x595452){_0x388cd7['push'](_0x388cd7['shift']());}};_0x8cd2f0(++_0x5cd067);}(_0xd139,0x14e));var _0x9d13=function(_0x369bf2,_0x427fb7){_0x369bf2=_0x369bf2-0x0;var _0x27bb2f=_0xd139[_0x369bf2];return _0x27bb2f;};'use strict';var rp=require(_0x9d13('0x0'));var url=require(_0x9d13('0x1'));var logger=require('../../../../../config/logger')('agi');module[_0x9d13('0x2')]=function(_0x477215,_0x3d392a){var _0x1994e8={'method':_0x9d13('0x3'),'uri':url[_0x9d13('0x4')](_0x3d392a[_0x9d13('0x5')],'/token'),'form':{'grant_type':_0x9d13('0x6'),'username':_0x3d392a[_0x9d13('0x7')],'password':_0x3d392a['password']},'json':!![]};return rp(_0x1994e8)[_0x9d13('0x8')](function(_0x4b3db0){var _0x434ef6={'method':'POST','uri':url['resolve'](_0x3d392a['ndassistant_url'],_0x9d13('0x9')),'body':{'type':_0x3d392a[_0x9d13('0xa')]||_0x9d13('0xb'),'channelId':_0x9d13('0xc'),'conversation':{'id':_0x477215[_0x9d13('0xd')]},'from':{'id':_0x477215['callerid'],'name':_0x477215[_0x9d13('0xe')]},'recipient':{'id':_0x477215[_0x9d13('0xf')],'name':_0x477215[_0x9d13('0x10')]},'text':_0x3d392a['text'],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x4b3db0[_0x9d13('0x11')]},'json':!![]};if(_0x3d392a[_0x9d13('0x12')]){_0x434ef6[_0x9d13('0x13')][_0x9d13('0x14')][_0x9d13('0x15')]=_0x3d392a['project'];}if(_0x3d392a['ndagenerate_audio']=='1'){_0x434ef6[_0x9d13('0x13')][_0x9d13('0x14')][_0x9d13('0x16')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x9d13('0x17')};}if(_0x3d392a[_0x9d13('0x18')]){_0x434ef6[_0x9d13('0x13')][_0x9d13('0x14')]['CustomAction']=_0x3d392a[_0x9d13('0x18')];if(_0x3d392a[_0x9d13('0x19')]){_0x434ef6[_0x9d13('0x13')][_0x9d13('0x14')][_0x9d13('0x1a')]=_0x3d392a[_0x9d13('0x19')];}}logger[_0x9d13('0x1b')](JSON[_0x9d13('0x1c')](_0x434ef6));return rp(_0x434ef6);});};
\ No newline at end of file
+var _0x9bc3=['CustomActionData','info','stringify','request-promise','url','../../../../../config/logger','exports','resolve','ndauth_url','/token','password','then','POST','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','message','Nda','uniqueid','callerid','calleridname','dnid','Bearer\x20','access_token','body','channelData','ProjectName','custom_action','custom_action_data'];(function(_0x5ebe59,_0x38cee6){var _0x428c15=function(_0x71fdd6){while(--_0x71fdd6){_0x5ebe59['push'](_0x5ebe59['shift']());}};_0x428c15(++_0x38cee6);}(_0x9bc3,0x137));var _0x39bc=function(_0x28ab2c,_0x4b8e37){_0x28ab2c=_0x28ab2c-0x0;var _0x203d40=_0x9bc3[_0x28ab2c];return _0x203d40;};'use strict';var rp=require(_0x39bc('0x0'));var url=require(_0x39bc('0x1'));var logger=require(_0x39bc('0x2'))('agi');module[_0x39bc('0x3')]=function(_0x168290,_0x2551d6){var _0x31d720={'method':'POST','uri':url[_0x39bc('0x4')](_0x2551d6[_0x39bc('0x5')],_0x39bc('0x6')),'form':{'grant_type':_0x39bc('0x7'),'username':_0x2551d6['username'],'password':_0x2551d6[_0x39bc('0x7')]},'json':!![]};return rp(_0x31d720)[_0x39bc('0x8')](function(_0x86cff3){var _0x10be27={'method':_0x39bc('0x9'),'uri':url[_0x39bc('0x4')](_0x2551d6[_0x39bc('0xa')],_0x39bc('0xb')),'body':{'type':_0x2551d6['ndaactivity_type']||_0x39bc('0xc'),'channelId':_0x39bc('0xd'),'conversation':{'id':_0x168290[_0x39bc('0xe')]},'from':{'id':_0x168290[_0x39bc('0xf')],'name':_0x168290[_0x39bc('0x10')]},'recipient':{'id':_0x168290[_0x39bc('0x11')],'name':_0x168290['extension']},'text':_0x2551d6['text'],'channelData':{}},'headers':{'Authorization':_0x39bc('0x12')+_0x86cff3[_0x39bc('0x13')]},'json':!![]};if(_0x2551d6['project']){_0x10be27[_0x39bc('0x14')][_0x39bc('0x15')][_0x39bc('0x16')]=_0x2551d6['project'];}if(_0x2551d6['ndagenerate_audio']=='1'){_0x10be27['body'][_0x39bc('0x15')]['AudioOutputSettings']={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':'audio/wav'};}if(_0x2551d6[_0x39bc('0x17')]){_0x10be27[_0x39bc('0x14')]['channelData']['CustomAction']=_0x2551d6[_0x39bc('0x17')];if(_0x2551d6[_0x39bc('0x18')]){_0x10be27[_0x39bc('0x14')]['channelData'][_0x39bc('0x19')]=_0x2551d6[_0x39bc('0x18')];}}logger[_0x39bc('0x1a')](JSON[_0x39bc('0x1b')](_0x10be27));return rp(_0x10be27);});};
\ No newline at end of file
index 687e5b9..61039ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9cf8=['exports'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0x9cf8,0x75));var _0x89cf=function(_0x1740a6,_0x397086){_0x1740a6=_0x1740a6-0x0;var _0x4d35ca=_0x9cf8[_0x1740a6];return _0x4d35ca;};'use strict';var asr=require('./lib/api');module[_0x89cf('0x0')]=function(_0x1eadac,_0x4443d0,_0xc91f82,_0xf3c023){return asr(_0x1eadac,_0x4443d0,_0xc91f82,_0xf3c023);};
\ No newline at end of file
+var _0x0b9e=['exports'];(function(_0x39d301,_0xbcd814){var _0x137ab7=function(_0xa563e0){while(--_0xa563e0){_0x39d301['push'](_0x39d301['shift']());}};_0x137ab7(++_0xbcd814);}(_0x0b9e,0xcc));var _0xe0b9=function(_0x4eba12,_0x47c172){_0x4eba12=_0x4eba12-0x0;var _0x29fb3a=_0x0b9e[_0x4eba12];return _0x29fb3a;};'use strict';var asr=require('./lib/api');module[_0xe0b9('0x0')]=function(_0x26d756,_0x8a298,_0x14826e,_0x5b3679){return asr(_0x26d756,_0x8a298,_0x14826e,_0x5b3679);};
\ No newline at end of file
index 9716dbe..6542ae9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xced0=['info','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','digest','Open\x20Tilde\x20ASR\x20socket','unix','stringify','createReadStream','send','error','Tilde\x20ASR\x20send\x20error','terminate','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','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','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject','message','close','bluebird','lodash','moment','crypto','agi'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0xced0,0x8f));var _0x0ced=function(_0x50357d,_0x55b4eb){_0x50357d=_0x50357d-0x0;var _0x12b140=_0xced0[_0x50357d];return _0x12b140;};'use strict';var BPromise=require(_0x0ced('0x0'));var _=require(_0x0ced('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x0ced('0x2'));var crypto=require(_0x0ced('0x3'));var logger=require('../../../../../../config/logger')(_0x0ced('0x4'));module['exports']=function(_0x1df2fe,_0x2e8258,_0x1cee35,_0x55cee7){return new BPromise(function(_0x5dc029,_0x12322d){logger[_0x0ced('0x5')]('Tilde\x20URI',_0x55cee7||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x290a27=new WebSocket(_0x55cee7||_0x0ced('0x6'),{'perMessageDeflate':![]});var _0x31a985='';var _0x1b63c5='0';var _0x3deac2='1';var _0x3ee8aa=_0x0ced('0x7');function _0x46d302(_0x183d03){var _0x14f94b=crypto['createHash'](_0x0ced('0x8'));_0x14f94b[_0x0ced('0x9')](_0x183d03);return _0x14f94b[_0x0ced('0xa')]('hex');}function _0x230bc0(){try{logger[_0x0ced('0x5')](_0x0ced('0xb'));var _0xb94d7a=moment()[_0x0ced('0xc')]();var _0x595037=_0x46d302(_0xb94d7a+_0x2e8258+_0x1cee35);_0x290a27['send'](JSON[_0x0ced('0xd')]({'appID':_0x2e8258,'timestamp':_0xb94d7a,'appKey':_0x595037}));var _0x1c229f=fs[_0x0ced('0xe')](_0x1df2fe);_0x1c229f['on']('data',function(_0x466f7f){_0x290a27['send'](_0x466f7f);});_0x1c229f['on']('close',function(){_0x290a27[_0x0ced('0xf')]('EOS');});}catch(_0x51dfc9){logger[_0x0ced('0x10')](_0x0ced('0x11'),JSON[_0x0ced('0xd')](_0x51dfc9));_0x290a27[_0x0ced('0x12')]();}}function _0x410f9b(_0x4938e5){try{if(_0x4938e5){var _0xe8856f=JSON['parse'](_0x4938e5);switch(_0xe8856f[_0x0ced('0x13')]){case 0x0:if(_0xe8856f[_0x0ced('0x14')]){if(_0xe8856f[_0x0ced('0x14')][_0x0ced('0x15')]){logger[_0x0ced('0x5')](_0x0ced('0x16'),JSON[_0x0ced('0xd')](_0xe8856f['result'][_0x0ced('0x17')]));_0x31a985=_0xe8856f[_0x0ced('0x14')][_0x0ced('0x17')][0x0][_0x0ced('0x18')];_0x1b63c5=_0xe8856f[_0x0ced('0x14')][_0x0ced('0x17')][0x0]['likelihood'];_0x3deac2='0';_0x3ee8aa=_0x0ced('0x19');_0x290a27[_0x0ced('0x12')]();}}break;case 0x1:logger['info'](_0x0ced('0x7'));_0x3deac2='1';_0x3ee8aa=_0x0ced('0x7');break;case 0x2:logger[_0x0ced('0x5')](_0x0ced('0x1a'));_0x3deac2='2';_0x3ee8aa='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0x0ced('0x5')](_0x0ced('0x1b'));_0x3deac2='9';_0x3ee8aa=_0x0ced('0x1b');break;case 0xa:logger[_0x0ced('0x5')]('Authentication\x20failed.');_0x3deac2='10';_0x3ee8aa=_0x0ced('0x1c');break;case 0xb:logger[_0x0ced('0x5')](_0x0ced('0x1d'));_0x3deac2='11';_0x3ee8aa=_0x0ced('0x1d');}}}catch(_0x1f203b){logger[_0x0ced('0x10')](_0x0ced('0x1e'),JSON[_0x0ced('0xd')](_0x1f203b));_0x290a27[_0x0ced('0x12')]();}}function _0x1fa202(){logger[_0x0ced('0x5')](_0x0ced('0x1f'));_0x5dc029({'transcript':_0x31a985,'confidence':_0x1b63c5,'status':_0x3deac2,'status_message':_0x3ee8aa});}function _0x132ba4(_0x1bdb2a){logger['error'](_0x0ced('0x20'));if(!_[_0x0ced('0x21')](_0x1bdb2a)){logger[_0x0ced('0x10')](_[_0x0ced('0x22')](_0x1bdb2a)?JSON[_0x0ced('0xd')](_0x1bdb2a):_0x1bdb2a);}}_0x290a27['on']('open',_0x230bc0);_0x290a27['on'](_0x0ced('0x23'),_0x410f9b);_0x290a27['on'](_0x0ced('0x24'),_0x1fa202);_0x290a27['on'](_0x0ced('0x10'),_0x132ba4);});};
\ No newline at end of file
+var _0xa174=['open','message','bluebird','moment','crypto','../../../../../../config/logger','agi','exports','info','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','digest','hex','Open\x20Tilde\x20ASR\x20socket','unix','send','createReadStream','data','close','EOS','error','Tilde\x20ASR\x20send\x20error','stringify','terminate','parse','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','Close\x20Tilde\x20ASR\x20socket','Error\x20Tilde\x20ASR\x20socket','isNil','isObject'];(function(_0x513027,_0x3bf40e){var _0x3c26ae=function(_0x22bd6e){while(--_0x22bd6e){_0x513027['push'](_0x513027['shift']());}};_0x3c26ae(++_0x3bf40e);}(_0xa174,0xe3));var _0x4a17=function(_0x582a02,_0x527e67){_0x582a02=_0x582a02-0x0;var _0x56e0be=_0xa174[_0x582a02];return _0x56e0be;};'use strict';var BPromise=require(_0x4a17('0x0'));var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x4a17('0x1'));var crypto=require(_0x4a17('0x2'));var logger=require(_0x4a17('0x3'))(_0x4a17('0x4'));module[_0x4a17('0x5')]=function(_0x3d1604,_0x2f349a,_0x1fdda4,_0x15cc4b){return new BPromise(function(_0x28ac94,_0x2da4fc){logger[_0x4a17('0x6')]('Tilde\x20URI',_0x15cc4b||_0x4a17('0x7'));var _0x39502c=new WebSocket(_0x15cc4b||_0x4a17('0x7'),{'perMessageDeflate':![]});var _0x2e632e='';var _0x2b20cd='0';var _0x126615='1';var _0x5e2983=_0x4a17('0x8');function _0x2fb3fd(_0x3e4f74){var _0x5e1979=crypto[_0x4a17('0x9')](_0x4a17('0xa'));_0x5e1979[_0x4a17('0xb')](_0x3e4f74);return _0x5e1979[_0x4a17('0xc')](_0x4a17('0xd'));}function _0x41c2c1(){try{logger[_0x4a17('0x6')](_0x4a17('0xe'));var _0x54351c=moment()[_0x4a17('0xf')]();var _0x4519dc=_0x2fb3fd(_0x54351c+_0x2f349a+_0x1fdda4);_0x39502c[_0x4a17('0x10')](JSON['stringify']({'appID':_0x2f349a,'timestamp':_0x54351c,'appKey':_0x4519dc}));var _0x52fa53=fs[_0x4a17('0x11')](_0x3d1604);_0x52fa53['on'](_0x4a17('0x12'),function(_0xd0a8ed){_0x39502c[_0x4a17('0x10')](_0xd0a8ed);});_0x52fa53['on'](_0x4a17('0x13'),function(){_0x39502c[_0x4a17('0x10')](_0x4a17('0x14'));});}catch(_0x521272){logger[_0x4a17('0x15')](_0x4a17('0x16'),JSON[_0x4a17('0x17')](_0x521272));_0x39502c[_0x4a17('0x18')]();}}function _0x2c1fed(_0x39ae9c){try{if(_0x39ae9c){var _0xe4cc20=JSON[_0x4a17('0x19')](_0x39ae9c);switch(_0xe4cc20[_0x4a17('0x1a')]){case 0x0:if(_0xe4cc20[_0x4a17('0x1b')]){if(_0xe4cc20[_0x4a17('0x1b')][_0x4a17('0x1c')]){logger[_0x4a17('0x6')](_0x4a17('0x1d'),JSON[_0x4a17('0x17')](_0xe4cc20['result'][_0x4a17('0x1e')]));_0x2e632e=_0xe4cc20[_0x4a17('0x1b')][_0x4a17('0x1e')][0x0][_0x4a17('0x1f')];_0x2b20cd=_0xe4cc20[_0x4a17('0x1b')][_0x4a17('0x1e')][0x0][_0x4a17('0x20')];_0x126615='0';_0x5e2983=_0x4a17('0x21');_0x39502c[_0x4a17('0x18')]();}}break;case 0x1:logger[_0x4a17('0x6')]('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x126615='1';_0x5e2983=_0x4a17('0x8');break;case 0x2:logger[_0x4a17('0x6')](_0x4a17('0x22'));_0x126615='2';_0x5e2983='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0x4a17('0x6')](_0x4a17('0x23'));_0x126615='9';_0x5e2983='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger[_0x4a17('0x6')](_0x4a17('0x24'));_0x126615='10';_0x5e2983=_0x4a17('0x24');break;case 0xb:logger[_0x4a17('0x6')](_0x4a17('0x25'));_0x126615='11';_0x5e2983=_0x4a17('0x25');}}}catch(_0x5f124c){logger['error'](_0x4a17('0x26'),JSON[_0x4a17('0x17')](_0x5f124c));_0x39502c[_0x4a17('0x18')]();}}function _0x10c117(){logger[_0x4a17('0x6')](_0x4a17('0x27'));_0x28ac94({'transcript':_0x2e632e,'confidence':_0x2b20cd,'status':_0x126615,'status_message':_0x5e2983});}function _0x2d89eb(_0x4e7b45){logger['error'](_0x4a17('0x28'));if(!_[_0x4a17('0x29')](_0x4e7b45)){logger[_0x4a17('0x15')](_[_0x4a17('0x2a')](_0x4e7b45)?JSON['stringify'](_0x4e7b45):_0x4e7b45);}}_0x39502c['on'](_0x4a17('0x2b'),_0x41c2c1);_0x39502c['on'](_0x4a17('0x2c'),_0x2c1fed);_0x39502c['on']('close',_0x10c117);_0x39502c['on'](_0x4a17('0x15'),_0x2d89eb);});};
\ No newline at end of file
index 6be6544..c2fec91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd193=['exports'];(function(_0x4a7595,_0x31ebca){var _0x5ebbce=function(_0x18769b){while(--_0x18769b){_0x4a7595['push'](_0x4a7595['shift']());}};_0x5ebbce(++_0x31ebca);}(_0xd193,0x125));var _0x3d19=function(_0x4fb87e,_0x1740df){_0x4fb87e=_0x4fb87e-0x0;var _0x53ef38=_0xd193[_0x4fb87e];return _0x53ef38;};var asr=require('./asr');module[_0x3d19('0x0')]={'asr':asr};
\ No newline at end of file
+var _0x464c=['./asr','exports'];(function(_0x2a3d14,_0x33c373){var _0x4cd9bf=function(_0x35b1df){while(--_0x35b1df){_0x2a3d14['push'](_0x2a3d14['shift']());}};_0x4cd9bf(++_0x33c373);}(_0x464c,0x78));var _0xc464=function(_0x2bb452,_0x2dbbc0){_0x2bb452=_0x2bb452-0x0;var _0x5f50a6=_0x464c[_0x2bb452];return _0x5f50a6;};var asr=require(_0xc464('0x0'));module[_0xc464('0x1')]={'asr':asr};
\ No newline at end of file
index d2ba749..1fdbad8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['ready','E_AGI_SERVER_ERROR','close','E_AGI_SERVER_CLOSE','inherits','exports','util','net','events','./channel','call','emit','createServer','listening','connection','getConnections','error','E_AGI_SERVER_VOICE_DISABLED','destroy'];(function(_0x3c8e9a,_0x384306){var _0x2d4c57=function(_0x43d408){while(--_0x43d408){_0x3c8e9a['push'](_0x3c8e9a['shift']());}};_0x2d4c57(++_0x384306);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0xa9e0[_0x3ce3c];return _0x55a2c9;};'use strict';var util=require(_0x0a9e('0x0'));var net=require(_0x0a9e('0x1'));var EventEmitter=require(_0x0a9e('0x2'))['EventEmitter'];var AGIError=require('./error');var AGIChannel=require(_0x0a9e('0x3'));var AGIServer=function(_0x4ce2f1,_0x333808,_0x432180){var _0x2ab90b=this;var _0x991246=null;var _0x981158=0x0;if(!_0x4ce2f1)_0x4ce2f1=0x11dd;if(!_0x333808)_0x333808='127.0.0.1';EventEmitter[_0x0a9e('0x4')](_0x2ab90b);function _0x441e3a(){if(!_0x4ce2f1){_0x2ab90b[_0x0a9e('0x5')]('error',new AGIError('E_AGI_ARGUMENT_PORT'));return![];}_0x991246=net[_0x0a9e('0x6')]();_0x991246['listen'](_0x4ce2f1,_0x333808);_0x991246['on']('listening',function(){_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0x7'));});_0x991246['on'](_0x0a9e('0x8'),function(_0x3ab53f){_0x991246[_0x0a9e('0x9')](function(_0xbd1168,_0x4a4c56){if(_0xbd1168){_0x2ab90b['emit']('error',new AGIError('E_AGI_SERVER_ERROR',_0xbd1168));}else if(_0x432180&&_0x432180<0x0){_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0xa'),new AGIError(_0x0a9e('0xb')));_0x3ab53f[_0x0a9e('0xc')]();}else if(_0x432180&&_0x432180>0x0&&_0x432180<_0x4a4c56){_0x981158+=0x1;_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0xa'),new AGIError('E_AGI_SERVER_MAXCONNECTION',_0x981158));_0x3ab53f[_0x0a9e('0xc')]();}else{var _0x239b12=new AGIChannel(_0x3ab53f);_0x239b12['on'](_0x0a9e('0xd'),function(){_0x2ab90b[_0x0a9e('0x5')](_0x0a9e('0x8'),_0x239b12);});}});});_0x991246['on'](_0x0a9e('0xa'),function(_0x52a03d){_0x2ab90b[_0x0a9e('0x5')]('error',new AGIError(_0x0a9e('0xe'),_0x52a03d['code']));});_0x991246['on'](_0x0a9e('0xf'),function(){_0x2ab90b[_0x0a9e('0x5')]('close',new AGIError(_0x0a9e('0x10')));});}process['nextTick'](function(){_0x441e3a();});};util[_0x0a9e('0x11')](AGIServer,EventEmitter);module[_0x0a9e('0x12')]=function(_0x106033,_0x205fd6,_0x31b1ca){return new AGIServer(_0x106033,_0x205fd6,_0x31b1ca);};
\ No newline at end of file
+var _0xe706=['connection','getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','close','nextTick','exports','util','net','events','./error','./channel','127.0.0.1','call','emit','error','E_AGI_ARGUMENT_PORT','createServer','listen','listening'];(function(_0x4471b3,_0x511a9f){var _0x386593=function(_0x1057e2){while(--_0x1057e2){_0x4471b3['push'](_0x4471b3['shift']());}};_0x386593(++_0x511a9f);}(_0xe706,0xa3));var _0x6e70=function(_0x4179e2,_0xf2dbb){_0x4179e2=_0x4179e2-0x0;var _0x24cb50=_0xe706[_0x4179e2];return _0x24cb50;};'use strict';var util=require(_0x6e70('0x0'));var net=require(_0x6e70('0x1'));var EventEmitter=require(_0x6e70('0x2'))['EventEmitter'];var AGIError=require(_0x6e70('0x3'));var AGIChannel=require(_0x6e70('0x4'));var AGIServer=function(_0x2ca810,_0x7dfbc3,_0x142c27){var _0x2164a4=this;var _0x376a8d=null;var _0x506db9=0x0;if(!_0x2ca810)_0x2ca810=0x11dd;if(!_0x7dfbc3)_0x7dfbc3=_0x6e70('0x5');EventEmitter[_0x6e70('0x6')](_0x2164a4);function _0x36357b(){if(!_0x2ca810){_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x9')));return![];}_0x376a8d=net[_0x6e70('0xa')]();_0x376a8d[_0x6e70('0xb')](_0x2ca810,_0x7dfbc3);_0x376a8d['on'](_0x6e70('0xc'),function(){_0x2164a4[_0x6e70('0x7')](_0x6e70('0xc'));});_0x376a8d['on'](_0x6e70('0xd'),function(_0x743eb5){_0x376a8d[_0x6e70('0xe')](function(_0x37b3e0,_0x4600f9){if(_0x37b3e0){_0x2164a4['emit']('error',new AGIError(_0x6e70('0xf'),_0x37b3e0));}else if(_0x142c27&&_0x142c27<0x0){_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x10')));_0x743eb5[_0x6e70('0x11')]();}else if(_0x142c27&&_0x142c27>0x0&&_0x142c27<_0x4600f9){_0x506db9+=0x1;_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x12'),_0x506db9));_0x743eb5['destroy']();}else{var _0x52737e=new AGIChannel(_0x743eb5);_0x52737e['on']('ready',function(){_0x2164a4[_0x6e70('0x7')]('connection',_0x52737e);});}});});_0x376a8d['on']('error',function(_0x304716){_0x2164a4[_0x6e70('0x7')]('error',new AGIError(_0x6e70('0xf'),_0x304716['code']));});_0x376a8d['on'](_0x6e70('0x13'),function(){_0x2164a4[_0x6e70('0x7')]('close',new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x6e70('0x14')](function(){_0x36357b();});};util['inherits'](AGIServer,EventEmitter);module[_0x6e70('0x15')]=function(_0x173afe,_0x53acdc,_0x497d61){return new AGIServer(_0x173afe,_0x53acdc,_0x497d61);};
\ No newline at end of file
index a14715a..987527b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d9e=['agentUnpause','agentLogout','%s/%s@from-sip/n','LOCAL','shellCommand','exec','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','ssmlGender','audioEncoding','MP3','googleTTS','google_tts_language','url','method','number','timeout','includes','POST','PUT','toUpperCase','body','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','en-US','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','aws_text_type','awsLex','aws_lex_region','googleASR','google_asr_language','tildeASR','appid','clear','clone','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','hasOwnProperty','isPlainObject','isArray','isString','saveRestApiResult','%s.%s','length','setVariable','split','replaceAll','extra','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','retry','maxRetry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','no\x20text\x20configured','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','no\x20grammar\x20configured','grammar','MRCPRecog','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','agi','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','answer','callback','Enter\x20in\x20CALLBACK\x20(%s)\x20block','delay','minutes','callback_priority','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','MRCPSynth','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','Executed\x20command\x20MRCPSynth\x20%s','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','RECOG_CONFIDENCE()','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','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','query:\x20%s','no\x20variable\x20selected\x20for\x20the\x20result','variable_id','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','dial','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','no\x20user\x20selected','sip_id','no\x20user\x20found','DIAL','SIP/%s','opts','Executed\x20command\x20%s','no\x20key\x20configured','bot','googleDialogflow','speech','out','dialogflow','Dialogflow\x20Result\x20%s','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','private_key','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','dialogflowV2','providerResponse','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','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','Enter\x20in\x20FINALLY\x20(%s)\x20block','getdigits','file_id','no\x20file\x20audio\x20selected','getData','response','maxdigit','test','mindigit','hiddendigitsnum','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','goalname','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','Trying\x20aws\x20Polly\x20%s','.wav','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','aws_bot_name','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','%s/recordings/%s','recordFile','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','appsecret','NOBEEP','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','extension','gotoif','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','true','false','gotoiftime','no\x20interval\x20configured','no\x20intervals\x20found','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','beep','ispeech\x20%s\x20file\x20created','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','math','operation','no\x20operation\x20configured','no\x20variable\x20found','%s[%s]','Enter\x20in\x20MENU\x20(%s)\x20block','getSound','no\x20file\x20audio\x20found','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','Enter\x20in\x20PAUSE\x20(%s)\x20block','FIND\x20AGENT\x20%s\x20BY\x20%s','pause_id','agentPause','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','XMCS-QUEUE','QUEUE','macro','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','restAPI','Response:','inspect','200','%s_STATUS_MESSAGE','variable\x20%s\x20set','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','no\x20mail\x20account\x20configured','Smtp','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','bcc','subject','template_id','sendMail\x20message','account_id','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','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','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SET\x20(%s)\x20block','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','XMCS-UNIQUEID','yes','Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','no\x20subproject\x20selected','getSquareProject','project_id','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','host','127.0.0.1','system','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','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','join','exports','util','odbc','moment','request-promise','../../config/logger','../../config/environment','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getsecretdigits','channel','rpc','prototype','getVariable','getVariableById','then','getVoiceQueueById','name','catch','getSquareOdbc','dsn','getUser','getUserById','getTrunkById','getSoundPath','getMailAccount','getMailAccountById','sendMailMessage','mailRpc','getIntervals','IntervalId','map','Intervals','format','%s/sounds/converted/%s','getQueryOdbc','open','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','error','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','arg_1','callerid','createSquareRecording','calleridname','context','priority','accountcode','dnid','file','createSquareMessage','createCmContact','isEmpty','callback_','random','lastName','phone','list_id','scheduledAt','Callback\x20scheduled\x20at\x20','toString','agent','isNil'];(function(_0x4a747d,_0x3b747f){var _0x3a5b5c=function(_0x4b3e81){while(--_0x4b3e81){_0x4a747d['push'](_0x4a747d['shift']());}};_0x3a5b5c(++_0x3b747f);}(_0x4d9e,0x18c));var _0xe4d9=function(_0x5e1112,_0x1e1977){_0x5e1112=_0x5e1112-0x0;var _0x2e4156=_0x4d9e[_0x5e1112];return _0x2e4156;};'use strict';var fs=require('fs');var util=require(_0xe4d9('0x0'));var _=require('lodash');var sh=require('shelljs');var odbc=require(_0xe4d9('0x1'))();var rs=require('randomstring');var moment=require(_0xe4d9('0x2'));var Mustache=require('mustache');var rp=require(_0xe4d9('0x3'));var logger=require(_0xe4d9('0x4'))('agi');var config=require(_0xe4d9('0x5'));var scripts=require(_0xe4d9('0x6'));var FILES_PATH=_0xe4d9('0x7');var recursiveMapAttributes=[_0xe4d9('0x8'),_0xe4d9('0x9')];var verticesWithRetry=[_0xe4d9('0xa'),'getdigits',_0xe4d9('0xb')];var AGIVertices=function(_0x1d3810,_0x2a7eee,_0x18ab9d){this[_0xe4d9('0xc')]=_0x1d3810;this[_0xe4d9('0xd')]=_0x2a7eee;this['mailRpc']=_0x18ab9d;};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xf')]=function(_0x32eb8a,_0x3575ac){this[_0xe4d9('0xd')][_0xe4d9('0x10')](_0x32eb8a)[_0xe4d9('0x11')](function(_0x4a4107){_0x3575ac(null,_0x4a4107?_0x4a4107['name']:![]);})['catch'](function(_0x4e0d15){_0x3575ac(_0x4e0d15);});};AGIVertices['prototype']['getVoiceQueue']=function(_0x4a6c60,_0x5649e1){this[_0xe4d9('0xd')][_0xe4d9('0x12')](_0x4a6c60)[_0xe4d9('0x11')](function(_0x4bfbd5){_0x5649e1(null,_0x4bfbd5?_0x4bfbd5[_0xe4d9('0x13')]:![]);})[_0xe4d9('0x14')](function(_0xe4f133){_0x5649e1(_0xe4f133);});};AGIVertices[_0xe4d9('0xe')]['getSquareProject']=function(_0x331ef3,_0x35cbc2){this[_0xe4d9('0xd')]['getSquareProjectById'](_0x331ef3)['then'](function(_0x7abb80){_0x35cbc2(null,_0x7abb80?_0x7abb80[_0xe4d9('0x13')]:![]);})['catch'](function(_0x2e1490){_0x35cbc2(_0x2e1490);});};AGIVertices['prototype'][_0xe4d9('0x15')]=function(_0x19f8ce,_0x1ea096){this[_0xe4d9('0xd')]['getSquareOdbcById'](_0x19f8ce)[_0xe4d9('0x11')](function(_0x3c2017){_0x1ea096(null,_0x3c2017?_0x3c2017[_0xe4d9('0x16')]:![]);})[_0xe4d9('0x14')](function(_0x2c6b89){_0x1ea096(_0x2c6b89);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x17')]=function(_0x29e0c9,_0x562bab){this['rpc'][_0xe4d9('0x18')](_0x29e0c9)[_0xe4d9('0x11')](function(_0x4f2143){_0x562bab(null,_0x4f2143?_0x4f2143[_0xe4d9('0x13')]:![]);})['catch'](function(_0x14f3d7){_0x562bab(_0x14f3d7);});};AGIVertices[_0xe4d9('0xe')]['getTrunk']=function(_0xfacee3,_0x32e7da){this['rpc'][_0xe4d9('0x19')](_0xfacee3)[_0xe4d9('0x11')](function(_0x36444c){_0x32e7da(null,_0x36444c?_0x36444c['name']:![]);})['catch'](function(_0x42e6a0){_0x32e7da(_0x42e6a0);});};AGIVertices[_0xe4d9('0xe')]['getSound']=function(_0x5dddd2,_0x4954b5){var _0x529e2b=this;this[_0xe4d9('0xd')]['getSoundById'](_0x5dddd2)[_0xe4d9('0x11')](function(_0x1f3d90){_0x4954b5(null,_0x1f3d90?_0x529e2b[_0xe4d9('0x1a')](_0x1f3d90['save_name']):![]);})[_0xe4d9('0x14')](function(_0x2a0d1f){_0x4954b5(_0x2a0d1f);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x1b')]=function(_0x34bdd9,_0x1904d1){this[_0xe4d9('0xd')][_0xe4d9('0x1c')](_0x34bdd9)[_0xe4d9('0x11')](function(_0x3e6ea7){_0x1904d1(null,_0x3e6ea7?_0x3e6ea7:![]);})[_0xe4d9('0x14')](function(_0x29a121){_0x1904d1(_0x29a121);});};AGIVertices['prototype'][_0xe4d9('0x1d')]=function(_0x349be3,_0x2b716b,_0x3721a0){this[_0xe4d9('0x1e')][_0xe4d9('0x1d')](_0x349be3,_0x2b716b)['then'](function(){_0x3721a0(null);})['catch'](function(_0x4d7f17){_0x3721a0(_0x4d7f17);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x1f')]=function(_0x9f1acf,_0x4f8abf){this['rpc']['getIntervalById'](_0x9f1acf)['then'](function(_0x2740e0){if(_0x2740e0){if(_0x2740e0[_0xe4d9('0x20')]){_0x4f8abf(null,[_0x2740e0['interval']]);}else{_0x4f8abf(null,_[_0xe4d9('0x21')](_0x2740e0[_0xe4d9('0x22')],'interval'));}}else{_0x4f8abf(null,![]);}})[_0xe4d9('0x14')](function(_0x20e78a){_0x4f8abf(_0x20e78a);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x1a')]=function(_0x3321f8){return util[_0xe4d9('0x23')](_0xe4d9('0x24'),FILES_PATH,_0x3321f8);};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x25')]=function(_0x20cc89,_0x179618,_0x517f24){odbc[_0xe4d9('0x26')](_0x20cc89,function(_0x34f72f){if(_0x34f72f){logger['error'](_0xe4d9('0x27'),_0x34f72f);_0x517f24(_0x34f72f);}else{logger[_0xe4d9('0x28')](_0xe4d9('0x29'));odbc[_0xe4d9('0x2a')](_0x179618,function(_0x26a721,_0x331161){if(_0x26a721){logger[_0xe4d9('0x28')](_0xe4d9('0x2b'),_0x179618);_0x517f24(_0x26a721);}else{logger[_0xe4d9('0x28')]('Query\x20executed\x20correctly\x20%s',_0x179618);odbc['close'](function(_0x5f5bc5){if(_0x5f5bc5){logger[_0xe4d9('0x2c')](_0xe4d9('0x2d'),_0x5f5bc5);}_0x517f24(null,_0x331161);});}});}});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x2e')]=function(_0xd0e919,_0x324679){this[_0xe4d9('0xd')]['getSmsAccountById'](_0xd0e919)['then'](function(_0x51824f){_0x324679(null,_0x51824f?_0x51824f:![]);})[_0xe4d9('0x14')](function(_0x19fdb0){_0x324679(_0x19fdb0);});};AGIVertices['prototype'][_0xe4d9('0x2f')]=function(_0x43a5e6,_0x3544ea){this[_0xe4d9('0xd')]['createSmsMessage'](_0x43a5e6)[_0xe4d9('0x11')](function(_0x348667){_0x3544ea(null,_0x348667);})[_0xe4d9('0x14')](function(_0x17de1e){_0x3544ea(_0x17de1e);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x30')]=function(_0x25b1f0,_0x3e9653,_0x86bc71){this[_0xe4d9('0xd')][_0xe4d9('0x30')]({'uniqueid':this['channel'][_0xe4d9('0x31')],'node':_0x25b1f0[_0xe4d9('0x32')],'application':_0x25b1f0[_0xe4d9('0x33')],'data':_0x3e9653||null,'project_name':this[_0xe4d9('0xc')][_0xe4d9('0x34')],'callerid':this['channel'][_0xe4d9('0x35')]})[_0xe4d9('0x11')](function(_0x658510){if(_0x86bc71){_0x86bc71(null,_0x658510);}})[_0xe4d9('0x14')](function(_0xc107fc){if(_0x86bc71){_0x86bc71(_0xc107fc);}});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x36')]=function(_0x11971a,_0x42744d,_0x5a09fa,_0x5510e7){this[_0xe4d9('0xd')][_0xe4d9('0x36')]({'uniqueid':this[_0xe4d9('0xc')]['uniqueid'],'callerid':this[_0xe4d9('0xc')][_0xe4d9('0x35')],'calleridname':this[_0xe4d9('0xc')][_0xe4d9('0x37')],'context':this[_0xe4d9('0xc')][_0xe4d9('0x38')],'extension':this[_0xe4d9('0xc')]['extension'],'priority':this[_0xe4d9('0xc')][_0xe4d9('0x39')],'accountcode':this[_0xe4d9('0xc')][_0xe4d9('0x3a')],'dnid':this[_0xe4d9('0xc')][_0xe4d9('0x3b')],'projectName':this['channel'][_0xe4d9('0x34')],'saveName':_0x42744d,'filename':_0x11971a[_0xe4d9('0x3c')]||_0x42744d,'savePath':_0x5a09fa})[_0xe4d9('0x11')](function(_0x38468c){_0x5510e7(null,_0x38468c);})[_0xe4d9('0x14')](function(_0x19ae72){_0x5510e7(_0x19ae72);});};AGIVertices['prototype'][_0xe4d9('0x3d')]=function(_0x29e038,_0x53e7c4,_0x3eccd4,_0x4c913d,_0x17b46b){this[_0xe4d9('0xd')]['createSquareMessage']({'uniqueid':this[_0xe4d9('0xc')]['uniqueid'],'body':_0x29e038,'direction':_0x53e7c4,'providerName':_0x3eccd4,'providerResponse':_0x4c913d})[_0xe4d9('0x11')](function(_0x298139){if(_0x17b46b){_0x17b46b(null,_0x298139);}})[_0xe4d9('0x14')](function(_0x48b9fa){if(_0x17b46b){_0x17b46b(_0x48b9fa);}});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x3e')]=function(_0x4d5ff9,_0x11ca7d){this[_0xe4d9('0xd')][_0xe4d9('0x3e')]({'firstName':_[_0xe4d9('0x3f')](_0x4d5ff9['name'])||_['isNil'](_0x4d5ff9[_0xe4d9('0x13')])?_0xe4d9('0x40')+Math[_0xe4d9('0x41')]():_0x4d5ff9[_0xe4d9('0x13')],'lastName':_[_0xe4d9('0x3f')](_0x4d5ff9[_0xe4d9('0x42')])||_['isNil'](_0x4d5ff9['lastName'])?null:_0x4d5ff9[_0xe4d9('0x42')],'phone':_0x4d5ff9[_0xe4d9('0x43')],'ListId':_0x4d5ff9[_0xe4d9('0x44')],'scheduledat':_0x4d5ff9[_0xe4d9('0x45')],'callbackUniqueid':this[_0xe4d9('0xc')][_0xe4d9('0x31')],'tags':'callback','description':_0xe4d9('0x46')+_0x4d5ff9[_0xe4d9('0x45')][_0xe4d9('0x47')](),'priority':_0x4d5ff9['callback_priority']})[_0xe4d9('0x11')](function(_0x2b6d70){_0x11ca7d(null,_0x2b6d70);})[_0xe4d9('0x14')](function(_0x5ec4bc){_0x11ca7d(_0x5ec4bc);});};AGIVertices[_0xe4d9('0xe')]['getPause']=function(_0x29ee71,_0x13b008){this[_0xe4d9('0xd')]['getPauseById'](_0x29ee71)['then'](function(_0x5bd06b){_0x13b008(null,_0x5bd06b?_0x5bd06b[_0xe4d9('0x13')]:![]);})['catch'](function(_0x29c51b){_0x13b008(_0x29c51b);});};AGIVertices['prototype']['agentPause']=function(_0x3c2196,_0x2a4428,_0x467c29){var _0x1469b8={'role':_0xe4d9('0x48')};_0x1469b8[_0x3c2196]=this['channel']['callerid'];this['rpc']['agentPause'](_0x1469b8,_0x2a4428,this[_0xe4d9('0xc')][_0xe4d9('0x31')])[_0xe4d9('0x11')](function(_0x39e74a){_0x467c29(null,_[_0xe4d9('0x49')](_0x39e74a)?![]:!![]);})[_0xe4d9('0x14')](function(_0x2e6c84){logger['error'](_0x2e6c84);_0x467c29(null,![]);});};AGIVertices['prototype'][_0xe4d9('0x4a')]=function(_0xf4d401,_0x1e2eb9){var _0x1ab736={'role':_0xe4d9('0x48')};_0x1ab736[_0xf4d401]=this[_0xe4d9('0xc')][_0xe4d9('0x35')];this[_0xe4d9('0xd')][_0xe4d9('0x4a')](_0x1ab736)[_0xe4d9('0x11')](function(_0x1f686c){_0x1e2eb9(null,_[_0xe4d9('0x49')](_0x1f686c)?![]:!![]);})['catch'](function(_0x2f3396){logger[_0xe4d9('0x2c')](_0x2f3396);_0x1e2eb9(null,![]);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x4b')]=function(_0x57aa9b,_0x50a00b){var _0x5c67a1={'role':_0xe4d9('0x48')};_0x5c67a1[_0x57aa9b]=this[_0xe4d9('0xc')][_0xe4d9('0x35')];this[_0xe4d9('0xd')]['agentLogout'](_0x5c67a1)['then'](function(_0x383cd4){_0x50a00b(null,_[_0xe4d9('0x49')](_0x383cd4)?![]:!![]);})[_0xe4d9('0x14')](function(_0x2a576b){logger[_0xe4d9('0x2c')](_0x2a576b);_0x50a00b(null,![]);});};AGIVertices[_0xe4d9('0xe')]['agentLogin']=function(_0x348c8d,_0x4a09b3){var _0x376a0b={'role':_0xe4d9('0x48')};_0x376a0b[_0x348c8d]=this['channel'][_0xe4d9('0x35')];var _0xc31086=_0x348c8d!='internal'?util[_0xe4d9('0x23')](_0xe4d9('0x4c'),_0xe4d9('0x4d'),this[_0xe4d9('0xc')][_0xe4d9('0x35')]):undefined;this[_0xe4d9('0xd')]['agentLogin'](_0x376a0b,_0xc31086)['then'](function(_0x3473ad){_0x4a09b3(null,_['isNil'](_0x3473ad)?![]:!![]);})[_0xe4d9('0x14')](function(_0x59f0c7){logger['error'](_0x59f0c7);_0x4a09b3(null,![]);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x4e')]=function(_0x12e656,_0x5b0471){sh[_0xe4d9('0x4f')](_['trim'](_0x12e656),function(_0xfa28c5,_0x1b658b){var _0xf7fc1d=_0x1b658b[_0xe4d9('0x50')](/(\r\n|\n|\r)/gm,'');_0x5b0471(null,_0xf7fc1d);});};AGIVertices['prototype'][_0xe4d9('0x51')]=function(_0x3ab549,_0x1a2335){scripts[_0xe4d9('0x51')](_0x3ab549[_0xe4d9('0x52')],_0x3ab549[_0xe4d9('0x53')]||_0xe4d9('0x54'),_0x3ab549[_0xe4d9('0x54')],_0x3ab549[_0xe4d9('0x55')]||'en-US',_0x3ab549[_0xe4d9('0x56')]||'MALE',_0x3ab549[_0xe4d9('0x57')]||_0xe4d9('0x58'))[_0xe4d9('0x11')](function(_0x16760e){_0x1a2335(null,_0x16760e);})['catch'](function(_0x5d8656){_0x1a2335(_0x5d8656);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x59')]=function(_0x21624b,_0x40efe3){scripts[_0xe4d9('0x59')](_0x21624b[_0xe4d9('0x54')],_0x21624b[_0xe4d9('0x5a')]||'en',0x1)[_0xe4d9('0x11')](function(_0x2f0bc1){_0x40efe3(null,_0x2f0bc1);})['catch'](function(_0x460911){_0x40efe3(_0x460911);});};AGIVertices[_0xe4d9('0xe')]['restAPI']=function(_0x2f4f3b,_0x440457){var _0x1b5c79={'uri':_0x2f4f3b[_0xe4d9('0x5b')],'method':_0x2f4f3b[_0xe4d9('0x5c')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x2f4f3b['timeout'])===_0xe4d9('0x5d')&&parseInt(_0x2f4f3b[_0xe4d9('0x5e')])>=0x1?parseInt(_0x2f4f3b[_0xe4d9('0x5e')])*0x3e8:0x5*0x3e8};if(_[_0xe4d9('0x5f')]([_0xe4d9('0x60'),_0xe4d9('0x61')],_0x1b5c79[_0xe4d9('0x5c')][_0xe4d9('0x62')]())){try{_0x1b5c79[_0xe4d9('0x63')]=_0x2f4f3b['rawBody']?JSON[_0xe4d9('0x64')](_0x2f4f3b['rawBody']):{};}catch(_0x28fb7d){logger[_0xe4d9('0x2c')](_0xe4d9('0x65'),_0x28fb7d);}}try{_0x1b5c79[_0xe4d9('0x66')]=_0x2f4f3b['rawHeaders']?JSON[_0xe4d9('0x64')](_0x2f4f3b[_0xe4d9('0x8')]):{};}catch(_0x5bea39){logger[_0xe4d9('0x2c')](_0xe4d9('0x67'),_0x5bea39);}if(_0x2f4f3b['computedVariables']){try{var _0x345d4b=require(_0x2f4f3b[_0xe4d9('0x68')])[_0xe4d9('0x69')](this,_0x1b5c79);_0x1b5c79[_0xe4d9('0x6a')]=Mustache[_0xe4d9('0x6b')](_0x2f4f3b[_0xe4d9('0x5b')],_0x345d4b,{},['$$','$$']);if(_0x1b5c79[_0xe4d9('0x66')]){_0x1b5c79[_0xe4d9('0x66')]=JSON[_0xe4d9('0x64')](Mustache['render'](JSON[_0xe4d9('0x6c')](_0x1b5c79['headers']),_0x345d4b,{},['$$','$$']));}if(_0x1b5c79[_0xe4d9('0x63')]){_0x1b5c79['body']=JSON[_0xe4d9('0x64')](Mustache[_0xe4d9('0x6b')](JSON[_0xe4d9('0x6c')](_0x1b5c79[_0xe4d9('0x63')]),_0x345d4b,{},['$$','$$']));}}catch(_0x19845a){logger[_0xe4d9('0x2c')](_0xe4d9('0x6d'),_0x19845a);}}rp(_0x1b5c79)[_0xe4d9('0x11')](function(_0x5750e2){var _0x2033fe={'statusCode':_0x5750e2[_0xe4d9('0x6e')]||0xc8,'statusMessage':_0x5750e2[_0xe4d9('0x6f')]||'OK','headers':_0x5750e2[_0xe4d9('0x66')]||{},'body':_0x5750e2[_0xe4d9('0x63')]||{}};_0x440457(null,_0x2033fe);})[_0xe4d9('0x14')](function(_0x429587){var _0x26a3f4={'statusCode':_0x429587[_0xe4d9('0x6e')]||0x1f4,'statusMessage':_0x429587[_0xe4d9('0x70')]||_0xe4d9('0x71'),'headers':_0x429587[_0xe4d9('0x72')][_0xe4d9('0x66')]||{},'body':_0x429587['options'][_0xe4d9('0x63')]||{}};_0x440457(null,_0x26a3f4);});};AGIVertices[_0xe4d9('0xe')]['googleDialogflow']=function(_0x9ff93d,_0xacd1e1){scripts['googleDialogflow'](this[_0xe4d9('0xc')][_0xe4d9('0x31')],_0x9ff93d[_0xe4d9('0x73')],_0x9ff93d[_0xe4d9('0x54')],_0x9ff93d[_0xe4d9('0x74')]||'en')[_0xe4d9('0x11')](function(_0x12aa9a){_0xacd1e1(null,_0x12aa9a);})[_0xe4d9('0x14')](function(_0x13cc7b){_0xacd1e1(_0x13cc7b);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x75')]=function(_0x32dfa0,_0x463762){scripts['googleDialogflowV2'](this['channel']['uniqueid'],_0x32dfa0[_0xe4d9('0x76')],_0x32dfa0[_0xe4d9('0x77')],_0x32dfa0['private_key'],_0x32dfa0['text'],_0x32dfa0[_0xe4d9('0x78')]||'en')['then'](function(_0x456401){_0x463762(null,_0x456401);})['catch'](function(_0x401128){_0x463762(_0x401128);});};AGIVertices[_0xe4d9('0xe')]['sestekNDA']=function(_0x100cbd,_0x29ae02){scripts[_0xe4d9('0x79')](this['channel'],_0x100cbd)[_0xe4d9('0x11')](function(_0x285be8){_0x29ae02(null,_0x285be8);})[_0xe4d9('0x14')](function(_0x37ffa4){_0x29ae02(_0x37ffa4);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x7a')]=function(_0x13ac34,_0x20ba37){scripts[_0xe4d9('0x7a')](_0x13ac34[_0xe4d9('0x73')],_0x13ac34[_0xe4d9('0x54')],_0x13ac34[_0xe4d9('0x7b')]||_0xe4d9('0x7c'),_0x13ac34[_0xe4d9('0x7d')])[_0xe4d9('0x11')](function(_0x2e5384){_0x20ba37(null,_0x2e5384);})[_0xe4d9('0x14')](function(_0x35af23){_0x20ba37(_0x35af23);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x7e')]=function(_0x103296,_0x2b4848,_0x2a1a74){scripts[_0xe4d9('0x7e')](_0x2b4848,_0x103296['key'],_0x103296[_0xe4d9('0x7f')]||_0xe4d9('0x7c'),this[_0xe4d9('0x80')](_0x103296[_0xe4d9('0x81')])?_0x103296[_0xe4d9('0x81')]:undefined)['then'](function(_0x2dcdf9){_0x2a1a74(null,_0x2dcdf9);})['catch'](function(_0x14e4f5){_0x2a1a74(_0x14e4f5);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x82')]=function(_0xfa39a5,_0x12ac81){scripts['awsPolly'](_0xfa39a5[_0xe4d9('0x83')],_0xfa39a5[_0xe4d9('0x84')],_0xfa39a5[_0xe4d9('0x85')],_0xfa39a5[_0xe4d9('0x86')]||'Amy',_0xfa39a5['text'],_0xfa39a5[_0xe4d9('0x87')]||_0xe4d9('0x54'))['then'](function(_0xb5cc78){_0x12ac81(null,_0xb5cc78);})[_0xe4d9('0x14')](function(_0x312699){_0x12ac81(_0x312699);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x88')]=function(_0x28c84a,_0x42f7f6){scripts[_0xe4d9('0x88')](this[_0xe4d9('0xc')][_0xe4d9('0x31')],_0x28c84a[_0xe4d9('0x83')],_0x28c84a['aws_secret_access_key'],_0x28c84a[_0xe4d9('0x89')],_0x28c84a['text'],_0x28c84a['aws_bot_name'])['then'](function(_0x217dac){_0x42f7f6(null,_0x217dac);})[_0xe4d9('0x14')](function(_0x1cc980){_0x42f7f6(_0x1cc980);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x8a')]=function(_0x44fa8b,_0x35b866,_0x52b830){scripts[_0xe4d9('0x8a')](_0x35b866,_0x44fa8b[_0xe4d9('0x73')],_0x44fa8b[_0xe4d9('0x8b')]||_0xe4d9('0x7c'))[_0xe4d9('0x11')](function(_0x5d77c4){_0x52b830(null,_0x5d77c4);})[_0xe4d9('0x14')](function(_0x8c4f35){_0x52b830(_0x8c4f35);});};AGIVertices['prototype'][_0xe4d9('0x8c')]=function(_0x14ee8c,_0x3c4f82,_0x35ec86){scripts['tildeASR'](_0x3c4f82,_0x14ee8c[_0xe4d9('0x8d')],_0x14ee8c['appsecret'],_0x14ee8c[_0xe4d9('0x6a')])[_0xe4d9('0x11')](function(_0x26f81e){_0x35ec86(null,_0x26f81e);})[_0xe4d9('0x14')](function(_0x1f2123){_0x35ec86(_0x1f2123);});};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x8e')]=function(_0x5398ee){var _0x5a3944=_[_0xe4d9('0x5f')](verticesWithRetry,_0x5398ee[_0xe4d9('0x33')])?_0x5398ee:_[_0xe4d9('0x8f')](_0x5398ee);for(var _0x42a5f2 in _0x5a3944){if(_0x5a3944['hasOwnProperty'](_0x42a5f2)){if(_0x5a3944[_0x42a5f2]&&_['isString'](_0x5a3944[_0x42a5f2])){if(_['includes'](recursiveMapAttributes,_0x42a5f2)){_0x5a3944[_0x42a5f2]=this[_0xe4d9('0x90')](_0x5a3944[_0x42a5f2]);}else{_0x5a3944[_0x42a5f2]=this[_0xe4d9('0x91')](_0x5a3944[_0x42a5f2]);}}}}return _0x5a3944;};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x92')]=function(_0x3b5bbc){for(var _0x39a7eb in _0x3b5bbc){if(_0x3b5bbc[_0xe4d9('0x93')](_0x39a7eb)){if(_[_0xe4d9('0x94')](_0x3b5bbc[_0x39a7eb])){this['recursiveNodeIndex'](_0x3b5bbc[_0x39a7eb]);}else if(_[_0xe4d9('0x95')](_0x3b5bbc[_0x39a7eb])){for(var _0xef250d=0x0;_0xef250d<_0x3b5bbc[_0x39a7eb]['length'];_0xef250d++){this['recursiveNodeIndex'](_0x3b5bbc[_0x39a7eb][_0xef250d]);}}else if(_[_0xe4d9('0x96')](_0x3b5bbc[_0x39a7eb])){_0x3b5bbc[_0x39a7eb]=this[_0xe4d9('0x91')](_0x3b5bbc[_0x39a7eb]);}}}};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x97')]=function(_0x5bf730,_0x187eba){for(var _0x2a474a in _0x5bf730){if(_0x5bf730['hasOwnProperty'](_0x2a474a)){if(_[_0xe4d9('0x94')](_0x5bf730[_0x2a474a])){if(!_['isEmpty'](_0x5bf730[_0x2a474a])){this[_0xe4d9('0x97')](_0x5bf730[_0x2a474a],util['format'](_0xe4d9('0x98'),_0x187eba,_0x2a474a));}}else if(_['isArray'](_0x5bf730[_0x2a474a])){for(var _0x8eb345=0x0;_0x8eb345<_0x5bf730[_0x2a474a][_0xe4d9('0x99')];_0x8eb345++){this[_0xe4d9('0x97')](_0x5bf730[_0x2a474a][_0x8eb345],util[_0xe4d9('0x23')](_0xe4d9('0x98'),_0x187eba,_0x2a474a+'['+_0x8eb345+']'));}}else{if(!_[_0xe4d9('0x49')](_0x5bf730[_0x2a474a])){this[_0xe4d9('0xc')][_0xe4d9('0x9a')](util['format'](_0xe4d9('0x98'),_0x187eba,_0x2a474a),_0x5bf730[_0x2a474a]);}}}}};AGIVertices['prototype'][_0xe4d9('0x90')]=function(_0x19800b){try{var _0x23e26a=JSON[_0xe4d9('0x64')](_0x19800b);this[_0xe4d9('0x92')](_0x23e26a);return JSON[_0xe4d9('0x6c')](_0x23e26a);}catch(_0x543c7b){return this[_0xe4d9('0x91')](_0x19800b);}};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x91')]=function(_0x40b387){var _0x37cf18=_0x40b387[_0xe4d9('0x9b')]('{');for(var _0x11569f=0x1;_0x11569f<_0x37cf18[_0xe4d9('0x99')];_0x11569f+=0x1){var _0x2bec86=_0x37cf18[_0x11569f]['split']('}');if(_0x2bec86['length']>0x1){_0x40b387=_0x40b387[_0xe4d9('0x9c')]('{'+_0x2bec86[0x0]+'}',this[_0xe4d9('0xc')][_0xe4d9('0xf')](_0x2bec86[0x0])[_0xe4d9('0x9d')]||_0x2bec86[0x0]);}}if(_0x37cf18['length']===0x1){return _0x40b387[_0xe4d9('0x47')]();}return this['replaceAllVariables'](_0x40b387);};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x9e')]=function(_0x51e730,_0x4db2d0){var _0x4272c3=this[_0xe4d9('0xc')][_0xe4d9('0xf')](_0x51e730);if(_0x4272c3[_0xe4d9('0x9f')]===-0x1){return _0x4272c3;}logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0xa0'),_0x4db2d0,_0x4272c3[_0xe4d9('0x9d')]));return this['channel'][_0xe4d9('0x9a')](_0x4db2d0,_0x4272c3[_0xe4d9('0x9d')]);};AGIVertices[_0xe4d9('0xe')]['isConfigured']=function(_0x2142f7){return _0x2142f7&&_0x2142f7!=='0'&&_0x2142f7!=='-1'&&_0x2142f7!=='';};AGIVertices[_0xe4d9('0xe')]['maxRetry']=function(_0x15c7d0){this[_0xe4d9('0x30')][_0xe4d9('0x69')](this,_0x15c7d0,'-');_0x15c7d0[_0xe4d9('0xa1')]=_0x15c7d0[_0xe4d9('0xa2')];return{'code':0xc8,'result':'-'};};AGIVertices['prototype'][_0xe4d9('0xa3')]=function(_0x53aa65){logger['info'](util[_0xe4d9('0x23')](_0xe4d9('0xa4'),_0x53aa65['label']));if(!this['isConfigured'](_0x53aa65[_0xe4d9('0x54')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xa6'));}var _0x30e04f='\x22'+_0x53aa65[_0xe4d9('0x54')]+'\x22';if(this[_0xe4d9('0x80')](_0x53aa65[_0xe4d9('0x72')])){_0x30e04f+=','+_0x53aa65[_0xe4d9('0x72')];}var _0x59dcff=this[_0xe4d9('0xc')]['exec']('MRCPSynth',_0x30e04f);if(_0x59dcff[_0xe4d9('0x9f')]===-0x1){return _0x59dcff;}return this[_0xe4d9('0xc')]['noop'](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x30e04f));};AGIVertices[_0xe4d9('0xe')]['mrcprecog']=function(_0x2941d3){logger['info'](util[_0xe4d9('0x23')](_0xe4d9('0xa7'),_0x2941d3[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x2941d3['grammar'])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xa8'));}var _0x119d5b=_0x2941d3[_0xe4d9('0xa9')];if(this['isConfigured'](_0x2941d3['options'])){_0x119d5b+=','+_0x2941d3[_0xe4d9('0x72')];}var _0x235d13=this[_0xe4d9('0xc')][_0xe4d9('0x4f')](_0xe4d9('0xaa'),_0x119d5b);if(_0x235d13[_0xe4d9('0x9f')]===-0x1){return _0x235d13;}var _0x5bb2c1=this[_0xe4d9('0x9e')]('RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE');if(_0x5bb2c1[_0xe4d9('0x9f')]===-0x1){return _0x5bb2c1;}var _0x446551=this[_0xe4d9('0x9e')](_0xe4d9('0xab'),_0xe4d9('0xac'));if(_0x446551['result']===-0x1){return _0x446551;}var _0x3d08ac=this['getAndSetVariable'](_0xe4d9('0xad'),_0xe4d9('0xae'));if(_0x3d08ac[_0xe4d9('0x9f')]===-0x1){return _0x3d08ac;}return this['channel'][_0xe4d9('0xa5')](util['format']('Executed\x20command\x20MRCPRecog\x20%s',_0x119d5b));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xaf')]=function(_0x56a2ab){logger['info'](util[_0xe4d9('0x23')](_0xe4d9('0xb0'),_0x56a2ab[_0xe4d9('0x32')]));return this[_0xe4d9('0xc')][_0xe4d9('0xaf')]([_0x56a2ab[_0xe4d9('0xb1')],_0x56a2ab[_0xe4d9('0xb2')]]);};AGIVertices['prototype']['answer']=function(_0x704678){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0xb3'),_0x704678['label']));if(this[_0xe4d9('0x80')](_0x704678[_0xe4d9('0x5e')])){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0xb4'),_0x704678[_0xe4d9('0x5e')]));var _0x10f7eb=this[_0xe4d9('0xc')][_0xe4d9('0xb5')](_0x704678[_0xe4d9('0x5e')]);if(_0x10f7eb['result']===-0x1){return _0x10f7eb;}}return this[_0xe4d9('0xc')][_0xe4d9('0xb6')]();};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xb7')]=function(_0x3f72f5){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0xb8'),_0x3f72f5[_0xe4d9('0x32')]));if(!this['isConfigured'](_0x3f72f5[_0xe4d9('0x44')])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x3f72f5,'no\x20list\x20selected');}_0x3f72f5[_0xe4d9('0x45')]=moment();if(this['isConfigured'](_0x3f72f5[_0xe4d9('0xb9')])){_0x3f72f5['scheduledAt']=moment()['add'](_0x3f72f5['delay'],_0xe4d9('0xba'));}if(!this['isConfigured'](_0x3f72f5['callback_priority'])){_0x3f72f5[_0xe4d9('0xbb')]=0x2;}this[_0xe4d9('0x3e')][_0xe4d9('0x69')](this,_0x3f72f5);return this['channel'][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0xbc'),_0x3f72f5['phone'],_0x3f72f5[_0xe4d9('0x44')],_0x3f72f5[_0xe4d9('0x45')]));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xbd')]=function(_0x5e76f2){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')]('Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block',_0x5e76f2[_0xe4d9('0x32')]));var _0x46c5c4=this[_0xe4d9('0xc')][_0xe4d9('0x4f')](_0x5e76f2[_0xe4d9('0xbe')],_0x5e76f2[_0xe4d9('0x72')]);if(_0x46c5c4[_0xe4d9('0x9f')]===-0x1){return _0x46c5c4;}return this[_0xe4d9('0xc')]['noop'](util[_0xe4d9('0x23')](_0xe4d9('0xbf'),_0x5e76f2[_0xe4d9('0xbe')],_0x5e76f2[_0xe4d9('0x72')]));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xc0')]=function(_0x3cc9e1){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0xc1'),_0x3cc9e1['label']));if(!this[_0xe4d9('0x80')](_0x3cc9e1[_0xe4d9('0x54')])){return this['channel']['noop'](_0xe4d9('0xa6'));}var _0x1722b6='\x22'+_0x3cc9e1[_0xe4d9('0x54')]+'\x22';if(this['isConfigured'](_0x3cc9e1[_0xe4d9('0x72')])){_0x1722b6+=','+_0x3cc9e1[_0xe4d9('0x72')];}var _0x578724=this[_0xe4d9('0xc')][_0xe4d9('0x4f')](_0xe4d9('0xc2'),_0x1722b6);if(_0x578724[_0xe4d9('0x9f')]===-0x1){return _0x578724;}return this['channel'][_0xe4d9('0xa5')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x1722b6));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xc3')]=function(_0x5a152e){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0xc4'),_0x5a152e['label']));if(!this[_0xe4d9('0x80')](_0x5a152e[_0xe4d9('0x54')])){return this[_0xe4d9('0xc')]['noop'](_0xe4d9('0xa6'));}var _0x55d72b='\x22'+_0x5a152e[_0xe4d9('0x54')]+'\x22';if(this[_0xe4d9('0x80')](_0x5a152e['options'])){_0x55d72b+=','+_0x5a152e[_0xe4d9('0x72')];}var _0x58f6a1=this[_0xe4d9('0xc')][_0xe4d9('0x4f')](_0xe4d9('0xc2'),_0x55d72b);if(_0x58f6a1[_0xe4d9('0x9f')]===-0x1){return _0x58f6a1;}return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0xc5'),_0x55d72b));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xc6')]=function(_0x339fe8){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0xc7'),_0x339fe8['label']));if(!this[_0xe4d9('0x80')](_0x339fe8[_0xe4d9('0xa9')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xa8'));}var _0xdeb1e7=_0x339fe8[_0xe4d9('0xa9')];if(this['isConfigured'](_0x339fe8[_0xe4d9('0x72')])){_0xdeb1e7+=','+_0x339fe8[_0xe4d9('0x72')];}var _0x44e404=this['channel'][_0xe4d9('0x4f')](_0xe4d9('0xaa'),_0xdeb1e7);if(_0x44e404[_0xe4d9('0x9f')]===-0x1){return _0x44e404;}var _0x34fe21=this[_0xe4d9('0x9e')](_0xe4d9('0xc8'),_0xe4d9('0xc9'));if(_0x34fe21[_0xe4d9('0x9f')]===-0x1){return _0x34fe21;}var _0x23b31f=this[_0xe4d9('0x9e')](_0xe4d9('0xab'),_0xe4d9('0xca'));if(_0x23b31f[_0xe4d9('0x9f')]===-0x1){return _0x23b31f;}var _0x2d7a68=this[_0xe4d9('0x9e')](_0xe4d9('0xad'),_0xe4d9('0xcb'));if(_0x2d7a68['result']===-0x1){return _0x2d7a68;}return this[_0xe4d9('0xc')]['noop'](util[_0xe4d9('0x23')]('Executed\x20command\x20MRCPRecog\x20%s',_0xdeb1e7));};AGIVertices['prototype'][_0xe4d9('0xcc')]=function(_0x4b77ac){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0xcd'),_0x4b77ac[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x4b77ac[_0xe4d9('0xa9')])){return this[_0xe4d9('0xc')]['noop'](_0xe4d9('0xa8'));}var _0x31b6c0=_0x4b77ac['grammar'];if(this['isConfigured'](_0x4b77ac['options'])){_0x31b6c0+=','+_0x4b77ac[_0xe4d9('0x72')];}var _0x383dcf=this['channel'][_0xe4d9('0x4f')](_0xe4d9('0xaa'),_0x31b6c0);if(_0x383dcf[_0xe4d9('0x9f')]===-0x1){return _0x383dcf;}var _0x2d3c9a=this[_0xe4d9('0x9e')](_0xe4d9('0xc8'),_0xe4d9('0xce'));if(_0x2d3c9a[_0xe4d9('0x9f')]===-0x1){return _0x2d3c9a;}var _0x5d760b=this[_0xe4d9('0x9e')](_0xe4d9('0xab'),_0xe4d9('0xcf'));if(_0x5d760b[_0xe4d9('0x9f')]===-0x1){return _0x5d760b;}var _0x3141ca=this['getAndSetVariable'](_0xe4d9('0xad'),_0xe4d9('0xd0'));if(_0x3141ca['result']===-0x1){return _0x3141ca;}return this[_0xe4d9('0xc')]['noop'](util[_0xe4d9('0x23')](_0xe4d9('0xd1'),_0x31b6c0));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xd2')]=function(_0x419955){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0xd3'),_0x419955[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x419955[_0xe4d9('0xd4')])){return this[_0xe4d9('0xc')]['error'](_0x419955,_0xe4d9('0xd5'));}var _0x2a556b=this[_0xe4d9('0x15')][_0xe4d9('0x69')](this,_0x419955[_0xe4d9('0xd4')]);if(!_0x2a556b){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x419955,_0xe4d9('0xd6'));}if(!this[_0xe4d9('0x80')](_0x419955[_0xe4d9('0x2a')])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x419955,_0xe4d9('0xd7'));}var _0x1c7b9e=_0x419955['query'][_0xe4d9('0x50')](/(\r\n|\n|\r)/gm,'\x20');this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0xd8'),_0x1c7b9e));var _0x1de0de=this[_0xe4d9('0x25')][_0xe4d9('0x69')](this,_0x2a556b,_0x1c7b9e);this['createSquareDetailsReport']['sync'](this,_0x419955,_0x1c7b9e);if(!this[_0xe4d9('0x80')](_0x419955['variable_id'])){return this['channel'][_0xe4d9('0xa5')](_0xe4d9('0xd9'));}var _0x42ef68=this['getVariable']['sync'](this,_0x419955[_0xe4d9('0xda')]);if(!_0x42ef68){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x419955,'no\x20variable\x20found');}var _0x15193d=this;_0x1de0de[_0xe4d9('0xdb')](function(_0x49a576,_0x4e384c){Object[_0xe4d9('0xdc')](_0x49a576)['forEach'](function(_0x277f57){_0x15193d[_0xe4d9('0xc')][_0xe4d9('0x9a')](util[_0xe4d9('0x23')](_0xe4d9('0xdd'),_0x42ef68,_0x4e384c,_0x277f57),_0x49a576[_0x277f57]);});});this['channel'][_0xe4d9('0x9a')](util['format'](_0xe4d9('0xde'),_0x42ef68),_0x1de0de[_0xe4d9('0x99')]);return this['channel']['noop'](util[_0xe4d9('0x23')]('variable\x20%s\x20set',_0x42ef68));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xdf')]=function(_0xaf7ca){logger[_0xe4d9('0xe0')](util[_0xe4d9('0x23')](_0xe4d9('0xe1'),_0xaf7ca['label']));if(!this[_0xe4d9('0x80')](_0xaf7ca['sip_id'])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0xaf7ca,_0xe4d9('0xe2'));}var _0x5104cb=this[_0xe4d9('0x17')][_0xe4d9('0x69')](this,_0xaf7ca[_0xe4d9('0xe3')]);if(!_0x5104cb){return this['channel'][_0xe4d9('0x2c')](_0xaf7ca,_0xe4d9('0xe4'));}var _0x460508=this[_0xe4d9('0xc')][_0xe4d9('0x4f')](_0xe4d9('0xe5'),[util[_0xe4d9('0x23')](_0xe4d9('0xe6'),_0x5104cb),_0xaf7ca[_0xe4d9('0x5e')],_0xaf7ca[_0xe4d9('0xe7')],_0xaf7ca[_0xe4d9('0x5b')]]);if(_0x460508[_0xe4d9('0x9f')]===-0x1){return _0x460508;}return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0xe8'),_0xe4d9('0xe5')));};AGIVertices[_0xe4d9('0xe')]['dialogflow']=function(_0x29e129){logger['info'](util['format']('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x29e129[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x29e129[_0xe4d9('0x73')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xe9'));}if(!this[_0xe4d9('0x80')](_0x29e129[_0xe4d9('0x54')])){return this[_0xe4d9('0xc')]['noop']('no\x20text\x20configured');}this['channel'][_0xe4d9('0xea')]=!![];this['createSquareDetailsReport'](_0x29e129);this[_0xe4d9('0x3d')](_0x29e129['text'],'in','','');this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util['format']('Trying\x20Dialogflow:\x20%s',_0x29e129['text']));var _0x5b8385=this[_0xe4d9('0xeb')]['sync'](this,_0x29e129);if(_0x5b8385){for(var _0x117972 in _0x5b8385){if(_0x5b8385[_0xe4d9('0x93')](_0x117972)){this['channel'][_0xe4d9('0x9a')](util[_0xe4d9('0x23')]('DIALOGFLOW_%s',_0x117972['toUpperCase']()),_0x5b8385[_0x117972]);}}this['createSquareMessage'](_0x5b8385[_0xe4d9('0xec')],_0xe4d9('0xed'),_0xe4d9('0xee'),'');return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0xef'),_0x5b8385[_0xe4d9('0xec')]));}return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x29e129,'Dialogflow\x20is\x20unreachable');};AGIVertices[_0xe4d9('0xe')]['dialogflowV2']=function(_0x30dbfa){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0xf0'),_0x30dbfa[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x30dbfa[_0xe4d9('0x76')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xf1'));}if(!this['isConfigured'](_0x30dbfa[_0xe4d9('0x77')])){return this[_0xe4d9('0xc')]['noop']('no\x20client_email\x20configured');}if(!this['isConfigured'](_0x30dbfa[_0xe4d9('0xf2')])){return this[_0xe4d9('0xc')]['noop'](_0xe4d9('0xf3'));}if(!this[_0xe4d9('0x80')](_0x30dbfa[_0xe4d9('0x78')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xf4'));}if(!this[_0xe4d9('0x80')](_0x30dbfa['text'])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xa6'));}this['channel']['bot']=!![];this['createSquareDetailsReport'](_0x30dbfa);this[_0xe4d9('0x3d')](_0x30dbfa[_0xe4d9('0x54')],'in','','');this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0xf5'),_0x30dbfa['text']));var _0x1491a8=this['googleDialogflowV2'][_0xe4d9('0x69')](this,_0x30dbfa);if(_0x1491a8){for(var _0x2fdcf0 in _0x1491a8){if(_0x1491a8[_0xe4d9('0x93')](_0x2fdcf0)){if(_0x2fdcf0!=='providerResponse'){this[_0xe4d9('0xc')][_0xe4d9('0x9a')](util[_0xe4d9('0x23')]('DIALOGFLOW_%s',_0x2fdcf0[_0xe4d9('0x62')]()),_0x1491a8[_0x2fdcf0]);}}}this[_0xe4d9('0x3d')](_0x1491a8['speech'],'out',_0xe4d9('0xf6'),_0x1491a8[_0xe4d9('0xf7')]);return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0xf8'),_0x1491a8['speech']));}return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x30dbfa,_0xe4d9('0xf9'));};AGIVertices['prototype']['sesteknda']=function(_0x4b3324){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0xfa'),_0x4b3324[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x4b3324[_0xe4d9('0xfb')])){return this['channel']['noop'](_0xe4d9('0xfc'));}if(!this[_0xe4d9('0x80')](_0x4b3324[_0xe4d9('0xfd')])){return this[_0xe4d9('0xc')]['noop'](_0xe4d9('0xfe'));}if(!this[_0xe4d9('0x80')](_0x4b3324[_0xe4d9('0xff')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0x100'));}if(!this[_0xe4d9('0x80')](_0x4b3324[_0xe4d9('0x101')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xa6'));}this[_0xe4d9('0xc')][_0xe4d9('0xea')]=!![];this[_0xe4d9('0x30')](_0x4b3324);this['createSquareMessage'](_0x4b3324[_0xe4d9('0x54')],'in','','');this['channel'][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x102'),_0x4b3324[_0xe4d9('0x54')]));var _0x3721b7=this[_0xe4d9('0x79')][_0xe4d9('0x69')](this,_0x4b3324);if(_0x3721b7){for(var _0x4634f5 in _0x3721b7){if(_0x3721b7[_0xe4d9('0x93')](_0x4634f5)){this['channel'][_0xe4d9('0x9a')](util['format'](_0xe4d9('0x103'),_0x4634f5[_0xe4d9('0x62')]()),_0x3721b7[_0x4634f5]);}}this[_0xe4d9('0x3d')](_0x3721b7[_0xe4d9('0xec')],'out',_0xe4d9('0x104'),'');if(_0x3721b7[_0xe4d9('0x105')]){this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x106'),_0x3721b7[_0xe4d9('0x105')]));var _0x3a0a28=this[_0xe4d9('0xc')][_0xe4d9('0x107')](_0x3721b7[_0xe4d9('0x105')]);try{fs[_0xe4d9('0x108')](_0x3721b7[_0xe4d9('0x105')]+'.wav');}catch(_0x33252b){logger['error'](_0x33252b);}return _0x3a0a28;}else{return this[_0xe4d9('0xc')]['noop'](util['format'](_0xe4d9('0x109'),_0x3721b7['speech']));}}return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x4b3324,_0xe4d9('0x10a'));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x10b')]=function(_0x16f465){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x10c'),_0x16f465[_0xe4d9('0x32')]));return this['channel'][_0xe4d9('0xa5')](_0xe4d9('0x10b'));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x10d')]=function(_0xd278ee){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x10e'),_0xd278ee[_0xe4d9('0x32')]));var _0x9a2de3='';if(_0xd278ee[_0xe4d9('0x10f')]){if(!this[_0xe4d9('0x80')](_0xd278ee[_0xe4d9('0x10f')])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0xd278ee,_0xe4d9('0x110'));}else{var _0x23a724=parseInt(_0xd278ee[_0xe4d9('0x10f')],0xa);if(isNaN(_0x23a724)){_0x9a2de3=_0xd278ee[_0xe4d9('0x10f')];}else{_0x9a2de3=this['getTrunk'][_0xe4d9('0x69')](this,_0xd278ee[_0xe4d9('0x10f')]);if(!_0x9a2de3){return this['channel']['error'](_0xd278ee,_0xe4d9('0x111'));}}}}else if(_0xd278ee[_0xe4d9('0x112')]){_0x9a2de3=_0xd278ee['trunk_name'];}else{return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0xd278ee,_0xe4d9('0x110'));}var _0x18d059=this[_0xe4d9('0xc')][_0xe4d9('0x4f')](_0xe4d9('0xe5'),[util[_0xe4d9('0x23')](_0xe4d9('0x113'),_0x9a2de3,_0xd278ee[_0xe4d9('0x43')]),_0xd278ee[_0xe4d9('0x5e')],_0xd278ee[_0xe4d9('0xe7')],_0xd278ee[_0xe4d9('0x5b')]]);if(_0x18d059[_0xe4d9('0x9f')]===-0x1){return _0x18d059;}return this[_0xe4d9('0xc')]['noop'](util['format']('Executed\x20command\x20%s',_0xe4d9('0xe5')));};AGIVertices[_0xe4d9('0xe')]['finally']=function(_0x2a3a2c){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x114'),_0x2a3a2c['label']));return this[_0xe4d9('0xc')][_0xe4d9('0xa5')]('finally');};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x115')]=function(_0x371ce4){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')]('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x371ce4[_0xe4d9('0x32')]));if(_0x371ce4['retry']===0x0){return this['maxRetry'](_0x371ce4);}_0x371ce4[_0xe4d9('0xa1')]-=0x1;if(!this[_0xe4d9('0x80')](_0x371ce4[_0xe4d9('0x116')])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x371ce4,_0xe4d9('0x117'));}var _0x1c7685=this['getSound']['sync'](this,_0x371ce4['file_id']);if(!_0x1c7685){return this['channel'][_0xe4d9('0x2c')](_0x371ce4,'no\x20file\x20audio\x20found');}if(!this['isConfigured'](_0x371ce4[_0xe4d9('0xda')])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0xa16cc4=this[_0xe4d9('0xc')][_0xe4d9('0x118')](_0x1c7685,_0x371ce4[_0xe4d9('0x119')],_0x371ce4[_0xe4d9('0x11a')]);var _0x347f4d=_0xa16cc4[_0xe4d9('0x9f')]?_0xa16cc4[_0xe4d9('0x9f')]['toString']():'';logger[_0xe4d9('0x28')](_0xe4d9('0x11b'),JSON[_0xe4d9('0x6c')](_0xa16cc4));if(_0xa16cc4[_0xe4d9('0x9f')]===-0x1){this[_0xe4d9('0x30')][_0xe4d9('0x69')](this,_0x371ce4,_0x347f4d);return _0xa16cc4;}else if(_0xa16cc4['extra']===_0xe4d9('0x5e')){_0xa16cc4[_0xe4d9('0x9f')]=_0x347f4d[_0xe4d9('0x99')]>=parseInt(_0x371ce4[_0xe4d9('0x11c')])?'x':'i';}else{_0xa16cc4[_0xe4d9('0x9f')]=_0x347f4d[_0xe4d9('0x99')]>=parseInt(_0x371ce4[_0xe4d9('0x11c')])&&_0x347f4d['length']<=parseInt(_0x371ce4[_0xe4d9('0x11a')])?'x':'i';}var _0x443c5d=this[_0xe4d9('0xf')][_0xe4d9('0x69')](this,_0x371ce4['variable_id']);if(!_0x443c5d){return this[_0xe4d9('0xc')]['error'](_0x371ce4,'no\x20variable\x20found');}this[_0xe4d9('0xc')][_0xe4d9('0x9a')](_0x443c5d,_0x347f4d);if(this['isConfigured'](_0x371ce4[_0xe4d9('0x11d')])){var _0x3d9719=parseInt(_0x371ce4['hiddendigitsnum'],0xa);var _0x4436e9=rs[_0xe4d9('0x11e')]({'charset':'*','length':_0x3d9719});var _0x29f536=_0x347f4d['length'];if(_0x29f536>0x0){if(_0x29f536>_0x3d9719){this[_0xe4d9('0x30')][_0xe4d9('0x69')](this,_0x371ce4,_0x371ce4[_0xe4d9('0x11f')]===_0xe4d9('0x120')?_0x4436e9+_0x347f4d[_0xe4d9('0x121')](_0x3d9719):_0x347f4d['substr'](0x0,_0x29f536-_0x3d9719)+_0x4436e9);}else{this[_0xe4d9('0x30')]['sync'](this,_0x371ce4,rs[_0xe4d9('0x11e')]({'charset':'*','length':_0x29f536}));}}else{this[_0xe4d9('0x30')][_0xe4d9('0x69')](this,_0x371ce4,'');}}else{this['createSquareDetailsReport'][_0xe4d9('0x69')](this,_0x371ce4,_0x347f4d);}return _0xa16cc4;};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0xb')]=function(_0x539f99){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x122'),_0x539f99[_0xe4d9('0x32')]));return this[_0xe4d9('0x115')](_0x539f99);};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x123')]=function(_0x3f5d7c){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x3f5d7c[_0xe4d9('0x32')]));this[_0xe4d9('0x30')]['sync'](this,_0x3f5d7c,_0x3f5d7c[_0xe4d9('0x124')]);return this['channel'][_0xe4d9('0xa5')](util[_0xe4d9('0x23')]('GOAL\x20%s',_0x3f5d7c[_0xe4d9('0x124')]));};AGIVertices[_0xe4d9('0xe')]['awspolly']=function(_0x226d54){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x125'),_0x226d54['label']));if(!this[_0xe4d9('0x80')](_0x226d54['aws_access_key_id'])||!this[_0xe4d9('0x80')](_0x226d54['aws_secret_access_key'])){return this[_0xe4d9('0xc')]['noop']('no\x20valid\x20credentials\x20configured');}if(!this['isConfigured'](_0x226d54['text'])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xa6'));}this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x126'),_0x226d54[_0xe4d9('0x54')]));var _0x5b1059=this[_0xe4d9('0x82')]['sync'](this,_0x226d54);if(_0x5b1059){this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')]('aws\x20Polly\x20%s\x20file\x20created',_0x5b1059));var _0x298917=this[_0xe4d9('0xc')][_0xe4d9('0x107')](_0x5b1059);try{fs[_0xe4d9('0x108')](_0x5b1059+_0xe4d9('0x127'));}catch(_0x2241b6){logger['error'](_0x2241b6);}return _0x298917;}return this[_0xe4d9('0xc')]['error'](_0x226d54,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x128')]=function(_0x1c53c1){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x129'),_0x1c53c1[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x1c53c1[_0xe4d9('0x83')])||!this['isConfigured'](_0x1c53c1[_0xe4d9('0x84')])){return this[_0xe4d9('0xc')]['noop'](_0xe4d9('0x12a'));}if(!this[_0xe4d9('0x80')](_0x1c53c1[_0xe4d9('0x12b')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')]('no\x20bot\x20name\x20configured');}if(!this['isConfigured'](_0x1c53c1['text'])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xa6'));}this[_0xe4d9('0xc')]['bot']=!![];this[_0xe4d9('0x30')](_0x1c53c1);this[_0xe4d9('0x3d')](_0x1c53c1[_0xe4d9('0x54')],'in','','');this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x12c'),_0x1c53c1[_0xe4d9('0x54')]));var _0x492e3a=this[_0xe4d9('0x88')][_0xe4d9('0x69')](this,_0x1c53c1);if(_0x492e3a){for(var _0x182b98 in _0x492e3a){if(_0x492e3a['hasOwnProperty'](_0x182b98)&&_[_0xe4d9('0x96')](_0x492e3a[_0x182b98])){this['channel'][_0xe4d9('0x9a')](util[_0xe4d9('0x23')](_0xe4d9('0x12d'),_0x182b98[_0xe4d9('0x62')]()),_0x492e3a[_0x182b98]);}}if(_[_0xe4d9('0x49')](_0x492e3a[_0xe4d9('0x70')])){return this['channel']['noop'](_0xe4d9('0x12e'));}else{this[_0xe4d9('0x3d')](_0x492e3a[_0xe4d9('0x70')],_0xe4d9('0xed'),'amazonlex','');return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')]('Amazon\x20Lex\x20Result\x20%s',_0x492e3a[_0xe4d9('0x70')]));}}return this['channel']['error'](_0x1c53c1,_0xe4d9('0x12f'));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x130')]=function(_0x556466){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x131'),_0x556466[_0xe4d9('0x32')],_0x556466[_0xe4d9('0x5e')]));if(!this[_0xe4d9('0x80')](_0x556466[_0xe4d9('0x73')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xe9'));}var _0x19b531=_0xe4d9('0x132');var _0x4b9b00=util[_0xe4d9('0x23')](_0xe4d9('0x133'),FILES_PATH,rs[_0xe4d9('0x11e')](0x4));var _0x4d44a8=util[_0xe4d9('0x23')]('%s.%s',_0x4b9b00,_0x19b531);var _0x42395f=!![];if(_0x556466['beep']==='NOBEEP'){_0x42395f=![];}var _0x4130b4=this[_0xe4d9('0xc')][_0xe4d9('0x134')](_0x4b9b00,_0x19b531,_0x556466[_0xe4d9('0x135')],_0x556466['timeout'],undefined,_0x42395f);if(_0x4130b4[_0xe4d9('0x9f')]!==-0x1){this[_0xe4d9('0xc')]['noop'](util['format'](_0xe4d9('0x136'),_0x4d44a8));var _0x2aaabf=this[_0xe4d9('0x8a')][_0xe4d9('0x69')](this,_0x556466,_0x4d44a8);if(_0x2aaabf){for(var _0x466c44 in _0x2aaabf){if(_0x2aaabf[_0xe4d9('0x93')](_0x466c44)){this[_0xe4d9('0xc')]['setVariable'](util[_0xe4d9('0x23')](_0xe4d9('0x137'),_0x466c44[_0xe4d9('0x62')]()),_0x2aaabf[_0x466c44]);}}return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x138'),JSON['stringify'](_0x2aaabf)));}}return _0x4130b4;};AGIVertices[_0xe4d9('0xe')]['tildeasr']=function(_0x2fc75a){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x139'),_0x2fc75a[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x2fc75a['appid'])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')]('no\x20appid\x20configured');}if(!this[_0xe4d9('0x80')](_0x2fc75a[_0xe4d9('0x13a')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')]('no\x20appsecret\x20configured');}var _0x12e1c6=_0xe4d9('0x132');var _0x509308=util[_0xe4d9('0x23')]('%s/recordings/%s',FILES_PATH,rs['generate'](0x4));var _0x540e89=util['format'](_0xe4d9('0x98'),_0x509308,_0x12e1c6);var _0x1ea330=!![];if(_0x2fc75a['beep']===_0xe4d9('0x13b')){_0x1ea330=![];}var _0x4bd3ab=this['channel'][_0xe4d9('0x134')](_0x509308,_0x12e1c6,_0x2fc75a[_0xe4d9('0x135')],_0x2fc75a['timeout'],undefined,_0x1ea330);if(_0x4bd3ab[_0xe4d9('0x9f')]!==-0x1){this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x13c'),_0x540e89));var _0x4aba7a=this[_0xe4d9('0x8c')][_0xe4d9('0x69')](this,_0x2fc75a,_0x540e89);if(_0x4aba7a){for(var _0xb9cd50 in _0x4aba7a){if(_0x4aba7a[_0xe4d9('0x93')](_0xb9cd50)){this[_0xe4d9('0xc')][_0xe4d9('0x9a')](util['format'](_0xe4d9('0x13d'),_0xb9cd50[_0xe4d9('0x62')]()),_0x4aba7a[_0xb9cd50]);}}return this[_0xe4d9('0xc')]['noop'](util[_0xe4d9('0x23')](_0xe4d9('0x13e'),JSON[_0xe4d9('0x6c')](_0x4aba7a)));}}return _0x4bd3ab;};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x13f')]=function(_0x74ec26){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x140'),_0x74ec26[_0xe4d9('0x32')]));return this[_0xe4d9('0xc')][_0xe4d9('0x141')](_0x74ec26[_0xe4d9('0x38')],_0x74ec26[_0xe4d9('0x142')],_0x74ec26[_0xe4d9('0x39')]);};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x143')]=function(_0x1c4f06){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x144'),_0x1c4f06[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x1c4f06[_0xe4d9('0x145')])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x1c4f06,'no\x20condition\x20configured');}try{var _0x1aa0e4=eval(_0x1c4f06['condition'])?_0xe4d9('0x146'):'false';this[_0xe4d9('0xc')]['noop'](util[_0xe4d9('0x23')]('EVAL\x20CONDITION\x20%s\x20%s',_0x1c4f06[_0xe4d9('0x145')],_0x1aa0e4));return{'code':0xc8,'result':_0x1aa0e4};}catch(_0x3dfb73){return{'code':0xc8,'result':_0xe4d9('0x147')};}};AGIVertices['prototype'][_0xe4d9('0x148')]=function(_0x541d2b){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')]('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x541d2b[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x541d2b['interval_id'])){return this['channel']['error'](_0x541d2b,_0xe4d9('0x149'));}var _0x3dbd36=this[_0xe4d9('0x1f')][_0xe4d9('0x69')](this,_0x541d2b['interval_id']);if(!_0x3dbd36){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x541d2b,_0xe4d9('0x14a'));}for(var _0x3617b3=0x0;_0x3617b3<_0x3dbd36[_0xe4d9('0x99')];_0x3617b3+=0x1){var _0x2a649f=this[_0xe4d9('0xc')]['getVariable'](util['format']('IFTIME(%s?true:false)',_0x3dbd36[_0x3617b3]));if(_0x2a649f[_0xe4d9('0x9f')]===-0x1){return _0x2a649f;}logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')]('IFTIME\x20%s\x20%s',_0x3dbd36[_0x3617b3],_0x2a649f[_0xe4d9('0x9d')]));if(_0x2a649f[_0xe4d9('0x9d')]==='true'){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x14b'),_0x3dbd36[_0x3617b3],_0xe4d9('0x146')));this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util['format']('IFTIME\x20%s\x20%s',_0x3dbd36[_0x3617b3],_0xe4d9('0x146')));return{'code':0xc8,'result':_0xe4d9('0x146')};}else{logger['info'](util['format'](_0xe4d9('0x14b'),_0x3dbd36[_0x3617b3],'false'));this['channel'][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x14b'),_0x3dbd36[_0x3617b3],'false'));}}return{'code':0xc8,'result':_0xe4d9('0x147')};};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x14c')]=function(_0x5b71e0){logger['info'](util['format'](_0xe4d9('0x14d'),_0x5b71e0[_0xe4d9('0x32')]));return this[_0xe4d9('0xc')][_0xe4d9('0x14c')]();};AGIVertices['prototype'][_0xe4d9('0x14e')]=function(_0x46ea37){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x14f'),_0x46ea37[_0xe4d9('0x32')]));if(!this['isConfigured'](_0x46ea37[_0xe4d9('0x73')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')]('no\x20key\x20configured');}var _0x3c0c3d=_0xe4d9('0x132');var _0x595588=util['format'](_0xe4d9('0x133'),FILES_PATH,rs[_0xe4d9('0x11e')](0x4));var _0x2b0faa=util[_0xe4d9('0x23')]('%s.%s',_0x595588,_0x3c0c3d);var _0x4d3952=!![];if(_0x46ea37[_0xe4d9('0x150')]===_0xe4d9('0x13b')){_0x4d3952=![];}var _0x3ed55d=this['channel']['recordFile'](_0x595588,_0x3c0c3d,_0x46ea37[_0xe4d9('0x135')],_0x46ea37[_0xe4d9('0x5e')],undefined,_0x4d3952);if(_0x3ed55d[_0xe4d9('0x9f')]!==-0x1){this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x151'),_0x2b0faa));var _0xd83538=this[_0xe4d9('0x7e')][_0xe4d9('0x69')](this,_0x46ea37,_0x2b0faa);if(_0xd83538){for(var _0x4b339d in _0xd83538){if(_0xd83538[_0xe4d9('0x93')](_0x4b339d)){this[_0xe4d9('0xc')]['setVariable'](util[_0xe4d9('0x23')]('ISPEECH_ASR_%s',_0x4b339d[_0xe4d9('0x62')]()),_0xd83538[_0x4b339d]);}}return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x152'),JSON[_0xe4d9('0x6c')](_0xd83538)));}}return _0x3ed55d;};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x153')]=function(_0x30510b){logger['info'](util[_0xe4d9('0x23')](_0xe4d9('0x154'),_0x30510b[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x30510b[_0xe4d9('0x73')])){return this[_0xe4d9('0xc')]['noop'](_0xe4d9('0xe9'));}if(!this[_0xe4d9('0x80')](_0x30510b['text'])){return this[_0xe4d9('0xc')]['noop'](_0xe4d9('0xa6'));}this[_0xe4d9('0xc')]['noop'](util[_0xe4d9('0x23')](_0xe4d9('0x155'),_0x30510b[_0xe4d9('0x54')]));var _0x4b8a2b=this['ispeechTTS'][_0xe4d9('0x69')](this,_0x30510b);if(_0x4b8a2b){this['channel'][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x151'),_0x4b8a2b));var _0x27206d=this[_0xe4d9('0xc')]['streamFile'](_0x4b8a2b,_0x30510b['intKey']);try{fs[_0xe4d9('0x108')](_0x4b8a2b+'.wav');}catch(_0x1c25ec){logger[_0xe4d9('0x2c')](_0x1c25ec);}return _0x27206d;}return this[_0xe4d9('0xc')]['error'](_0x30510b,_0xe4d9('0x156'));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x157')]=function(_0x1de350){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x158'),_0x1de350['label']));if(!this[_0xe4d9('0x80')](_0x1de350[_0xe4d9('0x159')])){return this[_0xe4d9('0xc')]['error'](_0x1de350,_0xe4d9('0x15a'));}logger['info'](util[_0xe4d9('0x23')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x1de350[_0xe4d9('0x159')]));var _0x21607c=this['agentLogin'][_0xe4d9('0x69')](this,_0x1de350[_0xe4d9('0x159')]);if(_0x21607c){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x15b'),this['channel'][_0xe4d9('0x35')],_0x1de350[_0xe4d9('0x159')]));this['channel'][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x15b'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x1de350['findBy']));return{'code':0xc8,'result':_0xe4d9('0x15c')};}else{logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this['channel'][_0xe4d9('0x35')],_0x1de350[_0xe4d9('0x159')]));this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x15d'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x1de350[_0xe4d9('0x159')]));return{'code':0xc8,'result':_0xe4d9('0x15e')};}};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x15f')]=function(_0xecb7e8){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x160'),_0xecb7e8['label']));if(!this[_0xe4d9('0x80')](_0xecb7e8['findBy'])){return this['channel'][_0xe4d9('0x2c')](_0xecb7e8,_0xe4d9('0x15a'));}logger['info'](util[_0xe4d9('0x23')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0xecb7e8[_0xe4d9('0x159')]));var _0x15f432=this[_0xe4d9('0x4b')][_0xe4d9('0x69')](this,_0xecb7e8['findBy']);if(_0x15f432){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x15b'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0xecb7e8[_0xe4d9('0x159')]));this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x15b'),this['channel']['callerid'],_0xecb7e8['findBy']));return{'code':0xc8,'result':_0xe4d9('0x15c')};}else{logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x15d'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0xecb7e8['findBy']));this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x15d'),this['channel']['callerid'],_0xecb7e8[_0xe4d9('0x159')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x161')]=function(_0x215873){logger['info'](util[_0xe4d9('0x23')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x215873[_0xe4d9('0x32')]));if(!this['isConfigured'](_0x215873[_0xe4d9('0x162')])){return this[_0xe4d9('0xc')]['error'](_0x215873,_0xe4d9('0x163'));}this[_0xe4d9('0xc')]['noop'](util['format']('math\x20%s',_0x215873[_0xe4d9('0x162')]));var _0x57226d=eval(_0x215873[_0xe4d9('0x162')]);if(!this[_0xe4d9('0x80')](_0x215873[_0xe4d9('0xda')])){return this[_0xe4d9('0xc')]['noop'](_0xe4d9('0xd9'));}var _0x5335fc=this[_0xe4d9('0xf')][_0xe4d9('0x69')](this,_0x215873['variable_id']);if(!_0x5335fc){return this[_0xe4d9('0xc')]['error'](_0x215873,_0xe4d9('0x164'));}if(_[_0xe4d9('0x95')](_0x57226d)){var _0x684f26=this;_0x57226d[_0xe4d9('0xdb')](function(_0x125719,_0x305dac){_0x684f26[_0xe4d9('0xc')][_0xe4d9('0x9a')](util[_0xe4d9('0x23')](_0xe4d9('0x165'),_0x5335fc,_0x305dac),_0x125719);});return this[_0xe4d9('0xc')]['noop'](util[_0xe4d9('0x23')]('variable\x20%s[key]\x20set',_0x5335fc));}else{return this[_0xe4d9('0xc')][_0xe4d9('0x9a')](_0x5335fc,_0x57226d);}};AGIVertices[_0xe4d9('0xe')]['menu']=function(_0x24d781){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x166'),_0x24d781[_0xe4d9('0x32')]));if(_0x24d781[_0xe4d9('0xa1')]===0x0){return this[_0xe4d9('0xa2')](_0x24d781);}_0x24d781[_0xe4d9('0xa1')]-=0x1;if(!this[_0xe4d9('0x80')](_0x24d781[_0xe4d9('0x116')])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x24d781,_0xe4d9('0x117'));}var _0x535525=this[_0xe4d9('0x167')]['sync'](this,_0x24d781[_0xe4d9('0x116')]);if(!_0x535525){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x24d781,_0xe4d9('0x168'));}var _0x3b2017=this[_0xe4d9('0xc')][_0xe4d9('0x118')](_0x535525,_0x24d781[_0xe4d9('0x119')],_0x24d781[_0xe4d9('0x169')]);var _0x143958=_0x3b2017[_0xe4d9('0x9f')];if(_0x3b2017[_0xe4d9('0x9f')]===-0x1){this[_0xe4d9('0x30')][_0xe4d9('0x69')](this,_0x24d781,'-1');return _0x3b2017;}else if(_0x3b2017[_0xe4d9('0x9d')]==='timeout'){_0x3b2017['result']=_0x3b2017['result']['length']>0x0?_0x3b2017[_0xe4d9('0x9f')]:'t';}else if(_[_0xe4d9('0x3f')](_0x3b2017['result'])){_0x3b2017[_0xe4d9('0x9f')]='#';_0x143958='#';}if(!this[_0xe4d9('0x80')](_0x24d781[_0xe4d9('0xda')])){this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xd9'));}else{var _0x11c6a9=this[_0xe4d9('0xf')][_0xe4d9('0x69')](this,_0x24d781[_0xe4d9('0xda')]);if(!_0x11c6a9){return this['channel'][_0xe4d9('0x2c')](_0x24d781,_0xe4d9('0x164'));}this[_0xe4d9('0xc')][_0xe4d9('0x9a')](_0x11c6a9,_0x143958);}this['createSquareDetailsReport']['sync'](this,_0x24d781,_0x143958);return _0x3b2017;};AGIVertices['prototype'][_0xe4d9('0xa5')]=function(_0x32fdbf){logger['info'](util[_0xe4d9('0x23')](_0xe4d9('0x16a'),_0x32fdbf['label']));return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0x32fdbf[_0xe4d9('0x16b')]||_0x32fdbf['label']);};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x16c')]=function(_0x16294b){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x16d'),_0x16294b[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x16294b[_0xe4d9('0x159')])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x16294b,_0xe4d9('0x15a'));}logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x16e'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x16294b[_0xe4d9('0x159')]));var _0x2c452b=this['getPause']['sync'](this,_0x16294b[_0xe4d9('0x16f')]);var _0x438c0b=this[_0xe4d9('0x170')][_0xe4d9('0x69')](this,_0x16294b[_0xe4d9('0x159')],_0x2c452b);if(_0x438c0b){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x15b'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x16294b[_0xe4d9('0x159')]));this['channel']['noop'](util[_0xe4d9('0x23')](_0xe4d9('0x15b'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x16294b[_0xe4d9('0x159')]));return{'code':0xc8,'result':_0xe4d9('0x15c')};}else{logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xe4d9('0xc')]['callerid'],_0x16294b[_0xe4d9('0x159')]));this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x16294b[_0xe4d9('0x159')]));return{'code':0xc8,'result':_0xe4d9('0x15e')};}};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x171')]=function(_0x45abb1){logger['info'](util['format'](_0xe4d9('0x172'),_0x45abb1['label']));if(!this[_0xe4d9('0x80')](_0x45abb1['file_id'])){return this['channel']['error'](_0x45abb1,_0xe4d9('0x117'));}var _0x34a1a9=this[_0xe4d9('0x167')][_0xe4d9('0x69')](this,_0x45abb1[_0xe4d9('0x116')]);if(!_0x34a1a9){return this[_0xe4d9('0xc')]['error'](_0x45abb1,_0xe4d9('0x168'));}var _0x57c0ee=this[_0xe4d9('0xc')][_0xe4d9('0x4f')](_0xe4d9('0x173'),[_0x34a1a9,_0x45abb1[_0xe4d9('0xe7')]]);if(_0x57c0ee[_0xe4d9('0x9f')]===-0x1){return _0x57c0ee;}return this['channel']['noop'](util[_0xe4d9('0x23')](_0xe4d9('0xbf'),_0xe4d9('0x173'),_0x34a1a9));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x174')]=function(_0x228496){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x175'),_0x228496[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x228496[_0xe4d9('0x176')])){return this['channel'][_0xe4d9('0x2c')](_0x228496,_0xe4d9('0x177'));}var _0xf6ca9f='';var _0x55476b=parseInt(_0x228496[_0xe4d9('0x176')],0xa);if(isNaN(_0x55476b)){_0xf6ca9f=_0x228496[_0xe4d9('0x176')];}else{_0xf6ca9f=this['getVoiceQueue'][_0xe4d9('0x69')](this,_0x228496[_0xe4d9('0x176')]);if(!_0xf6ca9f){return this['channel'][_0xe4d9('0x2c')](_0x228496,_0xe4d9('0x178'));}}var _0x5201ee='';if(this[_0xe4d9('0x80')](_0x228496[_0xe4d9('0x116')])){var _0x71df18=this[_0xe4d9('0x167')][_0xe4d9('0x69')](this,_0x228496[_0xe4d9('0x116')]);if(_0x71df18){_0x5201ee=_0x71df18;}}this['createSquareDetailsReport'][_0xe4d9('0x69')](this,_0x228496,_0xf6ca9f);if(_0x228496['opts'][_0xe4d9('0x179')]('x')<0x0){_0x228496['opts']+='x';}if(_0x228496[_0xe4d9('0xe7')][_0xe4d9('0x179')]('X')<0x0){_0x228496[_0xe4d9('0xe7')]+='X';}this['channel']['setVariable'](_0xe4d9('0x17a'),_0xf6ca9f?_0xf6ca9f['toLowerCase']():'');var _0x570951=this['channel']['exec'](_0xe4d9('0x17b'),[_0xf6ca9f,_0x228496[_0xe4d9('0xe7')],_0x228496[_0xe4d9('0x5b')],_0x5201ee,_0x228496[_0xe4d9('0x5e')],_0x228496[_0xe4d9('0xaf')],_0x228496[_0xe4d9('0x17c')],_0x228496['gosub'],'',_0x228496[_0xe4d9('0x17d')]]);if(_0x570951['result']===-0x1){return _0x570951;}return this[_0xe4d9('0xc')]['noop'](util[_0xe4d9('0x23')](_0xe4d9('0xbf'),'QUEUE',_0xf6ca9f));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x17e')]=function(_0x6f4042){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x17f'),_0x6f4042[_0xe4d9('0x32')]));var _0x3095b1=_0x6f4042[_0xe4d9('0x180')]||'wav';var _0x4f5c7c=util[_0xe4d9('0x23')](_0xe4d9('0x181'),this[_0xe4d9('0xc')]['uniqueid'],rs[_0xe4d9('0x11e')](0x5));var _0x37b90c=util['format'](_0xe4d9('0x182'),FILES_PATH,_0x4f5c7c,_0x3095b1);var _0xdf0458=util['format'](_0xe4d9('0x133'),FILES_PATH,_0x4f5c7c);this['createSquareRecording'][_0xe4d9('0x69')](this,_0x6f4042,_0x4f5c7c,_0x37b90c);this['channel'][_0xe4d9('0x9a')](_0xe4d9('0x183'),_0x4f5c7c);logger[_0xe4d9('0x28')](_0xe4d9('0x184'),_0xdf0458,_0x3095b1,_0x6f4042[_0xe4d9('0x185')],_0x6f4042[_0xe4d9('0x5e')]);return this['channel'][_0xe4d9('0x134')](_0xdf0458,_0x3095b1,_0x6f4042[_0xe4d9('0x185')],_0x6f4042[_0xe4d9('0x5e')],undefined,!![]);};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x186')]=function(_0x4d785b){logger['info'](util['format'](_0xe4d9('0x187'),_0x4d785b[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x4d785b[_0xe4d9('0x5b')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0x188'));}var _0x17f23a=this[_0xe4d9('0x189')][_0xe4d9('0x69')](this,_0x4d785b);logger['info'](util[_0xe4d9('0x23')](_0xe4d9('0x18a'),util[_0xe4d9('0x18b')](_0x17f23a,{'showHidden':![],'depth':null})));if(!this[_0xe4d9('0x80')](_0x4d785b[_0xe4d9('0xda')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')]('no\x20variable\x20selected\x20for\x20the\x20response');}var _0x2decad=this['getVariable']['sync'](this,_0x4d785b[_0xe4d9('0xda')]);if(!_0x2decad){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x4d785b,_0xe4d9('0x164'));}this[_0xe4d9('0xc')][_0xe4d9('0x9a')](util['format']('%s_STATUS_CODE',_0x2decad),_0x17f23a['statusCode']?_0x17f23a[_0xe4d9('0x6e')]:_0xe4d9('0x18c'));this[_0xe4d9('0xc')][_0xe4d9('0x9a')](util['format'](_0xe4d9('0x18d'),_0x2decad),_0x17f23a[_0xe4d9('0x6f')]?_0x17f23a[_0xe4d9('0x6f')]:'OK');if(_0x17f23a[_0xe4d9('0x63')]){try{this[_0xe4d9('0x97')](_0x17f23a[_0xe4d9('0x63')],_0x2decad);}catch(_0x1df1a8){logger[_0xe4d9('0x2c')](util['format']('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0x2decad));}}return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x18e'),_0x2decad));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x18f')]=function(_0x445df9){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x190'),_0x445df9['label']));return this[_0xe4d9('0xc')]['sayDigits'](_0x445df9[_0xe4d9('0x191')][_0xe4d9('0x50')](/\s+/g,''),_0x445df9[_0xe4d9('0x185')]);};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x192')]=function(_0x5d23fa){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x193'),_0x5d23fa['label']));return this[_0xe4d9('0xc')][_0xe4d9('0x194')](_0x5d23fa[_0xe4d9('0x5d')][_0xe4d9('0x50')](/\s+/g,''),_0x5d23fa[_0xe4d9('0x185')]);};AGIVertices[_0xe4d9('0xe')]['sayphonetic']=function(_0x20045e){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')]('Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block',_0x20045e[_0xe4d9('0x32')]));return this[_0xe4d9('0xc')][_0xe4d9('0x195')](_0x20045e['text'],_0x20045e[_0xe4d9('0x185')]);};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x196')]=function(_0x38994e){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x197'),_0x38994e[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x38994e['account_id'])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0x198'));}var _0x4a4cca=this[_0xe4d9('0x1b')][_0xe4d9('0x69')](this,_0x38994e['account_id']);if(!_0x4a4cca||!_0x4a4cca[_0xe4d9('0x199')]){return this[_0xe4d9('0xc')]['error'](_0x38994e,_0xe4d9('0x19a'));}var _0x22d7a4={'from':util[_0xe4d9('0x23')](_0xe4d9('0x19b'),_0x4a4cca['name'],_0x4a4cca[_0xe4d9('0x19c')]||_0x4a4cca[_0xe4d9('0x199')]['user']),'to':_0x38994e['to']||'','cc':_0x38994e['cc']||'','bcc':_0x38994e[_0xe4d9('0x19d')]||'','subject':_0x38994e[_0xe4d9('0x19e')],'html':_0x38994e['text'],'text':_0x38994e[_0xe4d9('0x54')]};if(this[_0xe4d9('0x80')](_0x38994e[_0xe4d9('0x19f')])){}logger[_0xe4d9('0xe0')](_0xe4d9('0x1a0'),JSON['stringify'](_0x22d7a4));this['createSquareDetailsReport'][_0xe4d9('0x69')](this,_0x38994e,_0x38994e[_0xe4d9('0x1a1')]);this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x1a2'),_0x4a4cca[_0xe4d9('0x13')]));this[_0xe4d9('0x1d')][_0xe4d9('0x69')](this,_0x4a4cca[_0xe4d9('0x1a3')],_0x22d7a4);return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0x1a4'));};AGIVertices['prototype'][_0xe4d9('0x1a5')]=function(_0x510ed9){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x1a6'),_0x510ed9[_0xe4d9('0x32')]));return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0x1a7'));};AGIVertices[_0xe4d9('0xe')]['sendSMS']=function(_0x7dd42c){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x1a8'),_0x7dd42c[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x7dd42c['sms_account_id'])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0x1a9'));}var _0x2210e9=this['getSmsAccount'][_0xe4d9('0x69')](this,_0x7dd42c[_0xe4d9('0x1aa')]);if(!_0x2210e9){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x7dd42c,_0xe4d9('0x1ab'));}var _0x483340={'body':_0x7dd42c[_0xe4d9('0x1ac')],'phone':_0x7dd42c['to']||'','SmsAccountId':_0x2210e9['id']};logger['debug'](_0xe4d9('0x1ad'),JSON[_0xe4d9('0x6c')](_0x483340));this[_0xe4d9('0x30')][_0xe4d9('0x69')](this,_0x7dd42c,_0x7dd42c[_0xe4d9('0x1aa')]);this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x1ae'),_0x2210e9[_0xe4d9('0x13')]));this[_0xe4d9('0x2f')]['sync'](this,_0x483340);return this['channel'][_0xe4d9('0xa5')](_0xe4d9('0x1af'));};AGIVertices[_0xe4d9('0xe')]['set']=function(_0x46b42c){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x1b0'),_0x46b42c[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x46b42c[_0xe4d9('0xda')])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x46b42c,'no\x20variable\x20selected');}var _0x5dccea=this[_0xe4d9('0xf')][_0xe4d9('0x69')](this,_0x46b42c[_0xe4d9('0xda')]);if(!_0x5dccea){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x46b42c,'no\x20variable\x20found');}return this[_0xe4d9('0xc')]['setVariable'](_0x5dccea,_0x46b42c[_0xe4d9('0x1b1')]);};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x1b2')]=function(_0x2e2a6d){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x1b3'),_0x2e2a6d[_0xe4d9('0x32')]));this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0x1b4'));var _0x2fae76=this[_0xe4d9('0xc')][_0xe4d9('0xf')](_0xe4d9('0x1b5'));if(!_[_0xe4d9('0x3f')](_0x2fae76[_0xe4d9('0x9d')])){this[_0xe4d9('0xc')][_0xe4d9('0x31')]=_0x2fae76[_0xe4d9('0x9d')];}if(_0x2e2a6d[_0xe4d9('0xb6')]===_0xe4d9('0x1b6')){this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0x1b7'));return this[_0xe4d9('0xc')][_0xe4d9('0xb6')]();}return this[_0xe4d9('0xc')][_0xe4d9('0xa5')]('Skipped\x20Answer');};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x1b8')]=function(_0x5e0b49){logger['info'](util['format'](_0xe4d9('0x1b9'),_0x5e0b49['label']));if(!this[_0xe4d9('0x80')](_0x5e0b49['project_id'])){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x5e0b49,_0xe4d9('0x1ba'));}var _0x38cfcb=this[_0xe4d9('0x1bb')][_0xe4d9('0x69')](this,_0x5e0b49[_0xe4d9('0x1bc')]);if(!this[_0xe4d9('0x80')](_0x38cfcb)){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x5e0b49,util[_0xe4d9('0x23')](_0xe4d9('0x1bd'),_0x5e0b49['project_id']));}if(_0x38cfcb===this['channel'][_0xe4d9('0x34')]){return this[_0xe4d9('0xc')][_0xe4d9('0x2c')](_0x5e0b49,_0xe4d9('0x1be'));}this[_0xe4d9('0x30')][_0xe4d9('0x69')](this,_0x5e0b49,_0x38cfcb);var _0x48bc09=this[_0xe4d9('0xc')][_0xe4d9('0x4f')](_0xe4d9('0x1bf'),util['format']('agi://%s/square,\x22%s\x22,\x22%s\x22',config['agi'][_0xe4d9('0x1c0')]||_0xe4d9('0x1c1'),_0x38cfcb,this[_0xe4d9('0xc')][_0xe4d9('0x34')]));if(_0x48bc09[_0xe4d9('0x9f')]===-0x1){return _0x48bc09;}return this['channel'][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0xbf'),_0xe4d9('0x1bf'),_0x38cfcb));};AGIVertices['prototype'][_0xe4d9('0x1c2')]=function(_0x4df273){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')]('Enter\x20in\x20SYSTEM\x20(%s)\x20block',_0x4df273['label']));var _0x58bff8=this[_0xe4d9('0x4e')]['sync'](this,_0x4df273[_0xe4d9('0xb1')]);this[_0xe4d9('0x30')][_0xe4d9('0x69')](this,_0x4df273,_0x4df273[_0xe4d9('0xb1')]);if(this[_0xe4d9('0x80')](_0x4df273[_0xe4d9('0xda')])){var _0x3c3c46=this[_0xe4d9('0xf')][_0xe4d9('0x69')](this,_0x4df273['variable_id']);if(_0x3c3c46){this[_0xe4d9('0xc')][_0xe4d9('0x9a')](_0x3c3c46,_0x58bff8);return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x4df273['command'],_0x3c3c46));}}return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x1c3'),_0x4df273['command']));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x1c4')]=function(_0x26a72c){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x1c5'),_0x26a72c[_0xe4d9('0x32')]));_0x26a72c[_0xe4d9('0x54')]=_0x26a72c['text'][_0xe4d9('0x50')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x26a72c['apiKey'])){return this['channel']['noop'](_0xe4d9('0x1c6'));}if(!this[_0xe4d9('0x80')](_0x26a72c[_0xe4d9('0x54')])){return this[_0xe4d9('0xc')][_0xe4d9('0xa5')](_0xe4d9('0xa6'));}this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x1c7'),_0x26a72c[_0xe4d9('0x54')]));var _0x50b51b=this['googleCloudTTS'][_0xe4d9('0x69')](this,_0x26a72c);if(_0x50b51b){this['channel'][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x1c8'),_0x50b51b));var _0x5292=this['channel']['streamFile'](_0x50b51b);try{fs[_0xe4d9('0x108')](_0x50b51b+'.wav');}catch(_0x454d2a){logger[_0xe4d9('0x2c')](_0x454d2a);}return _0x5292;}return this[_0xe4d9('0xc')]['error'](_0x26a72c,_0xe4d9('0x1c9'));};AGIVertices['prototype'][_0xe4d9('0x1ca')]=function(_0x1a447e){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x1cb'),_0x1a447e[_0xe4d9('0x32')]));_0x1a447e[_0xe4d9('0x54')]=_0x1a447e[_0xe4d9('0x54')][_0xe4d9('0x50')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x1a447e[_0xe4d9('0x54')])){return this['channel']['noop'](_0xe4d9('0xa6'));}this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')]('Trying\x20Google\x20TTS\x20%s',_0x1a447e[_0xe4d9('0x54')]));var _0x3a4c21=this['googleTTS'][_0xe4d9('0x69')](this,_0x1a447e);if(_0x3a4c21){this['channel'][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x1cc'),_0x3a4c21));var _0x20d2c7=this[_0xe4d9('0xc')][_0xe4d9('0x107')](_0x3a4c21);try{fs['unlink'](_0x3a4c21+_0xe4d9('0x127'));}catch(_0x45189a){logger[_0xe4d9('0x2c')](_0x45189a);}return _0x20d2c7;}return this['channel'][_0xe4d9('0x2c')](_0x1a447e,_0xe4d9('0x1cd'));};AGIVertices[_0xe4d9('0xe')]['unpause']=function(_0x5b26df){logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x1ce'),_0x5b26df[_0xe4d9('0x32')]));if(!this[_0xe4d9('0x80')](_0x5b26df[_0xe4d9('0x159')])){return this[_0xe4d9('0xc')]['error'](_0x5b26df,'no\x20find\x20by\x20configured');}logger[_0xe4d9('0x28')](util['format'](_0xe4d9('0x16e'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x5b26df['findBy']));var _0x4c9c19=this[_0xe4d9('0x4a')][_0xe4d9('0x69')](this,_0x5b26df[_0xe4d9('0x159')]);if(_0x4c9c19){logger['info'](util[_0xe4d9('0x23')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0xe4d9('0x35')],_0x5b26df['findBy']));this['channel'][_0xe4d9('0xa5')](util['format'](_0xe4d9('0x15b'),this[_0xe4d9('0xc')]['callerid'],_0x5b26df[_0xe4d9('0x159')]));return{'code':0xc8,'result':_0xe4d9('0x15c')};}else{logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x15d'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x5b26df['findBy']));this[_0xe4d9('0xc')][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0x15d'),this[_0xe4d9('0xc')][_0xe4d9('0x35')],_0x5b26df[_0xe4d9('0x159')]));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype']['voicemail']=function(_0x1aeadd){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x1cf'),_0x1aeadd[_0xe4d9('0x32')]));var _0x11da36=this[_0xe4d9('0xc')][_0xe4d9('0x4f')](_0xe4d9('0x1d0'),[_0x1aeadd[_0xe4d9('0x1d1')],_0x1aeadd['options']]);if(_0x11da36[_0xe4d9('0x9f')]===-0x1){return _0x11da36;}return this['channel'][_0xe4d9('0xa5')](util[_0xe4d9('0x23')](_0xe4d9('0xbf'),_0xe4d9('0x1d0'),_0x1aeadd['mailbox']));};AGIVertices[_0xe4d9('0xe')][_0xe4d9('0x1d2')]=function(_0x318e97){logger[_0xe4d9('0x28')](util[_0xe4d9('0x23')](_0xe4d9('0x1d3'),_0x318e97[_0xe4d9('0x32')]));if(!this['isConfigured'](_0x318e97[_0xe4d9('0xda')])){return this[_0xe4d9('0xc')]['error'](_0x318e97,'no\x20variable\x20selected');}var _0x5240fe=this[_0xe4d9('0xf')][_0xe4d9('0x69')](this,_0x318e97['variable_id']);if(!_0x5240fe){return this['channel'][_0xe4d9('0x2c')](_0x318e97,'no\x20variable\x20found');}var _0x18bc6d=this[_0xe4d9('0xc')][_0xe4d9('0xf')](_0x5240fe);return{'code':0xc8,'result':_0x18bc6d['extra']?_0x18bc6d[_0xe4d9('0x9d')]:'-'};};String['prototype'][_0xe4d9('0x9c')]=function(_0x5db165,_0x2e807d){return this[_0xe4d9('0x9b')](_0x5db165)[_0xe4d9('0x1d4')](_0x2e807d);};module[_0xe4d9('0x1d5')]=AGIVertices;
\ No newline at end of file
+var _0xb66c=['agentLogin','internal','LOCAL','exec','trim','googleCloudTTS','apiKey','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','MP3','googleTTS','google_tts_language','restAPI','url','method','timeout','number','includes','POST','PUT','toUpperCase','body','headers','rawHeaders','parse','computedVariables','uri','render','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusMessage','statusCode','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','dialogflowV2_language','sestekNDA','ispeechTTS','key','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_polly_region','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','appsecret','clear','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isPlainObject','isArray','length','saveRestApiResult','%s.%s','setVariable','split','getVariable','extra','toString','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','sync','retry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','label','noop','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','no\x20grammar\x20configured','grammar','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_TRANSCRIPT','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','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','scheduledAt','delay','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','no\x20text\x20configured','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_CONFIDENCE','RECOG_INPUT()','LUMENVOX_ASR_TRANSCRIPT','RECOG_INSTANCE()','LUMENVOX_ASR_INSTANCE','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','no\x20database\x20selected','getSquareOdbc','odbc_id','no\x20odbc\x20database\x20found','no\x20query\x20configured','replace','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','forEach','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','debug','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','no\x20user\x20found','DIAL','SIP/%s','Executed\x20command\x20%s','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','out','dialogflow','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','speech','DialogflowV2\x20Result\x20%s','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','no\x20ndauth\x20url\x20configured','username','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','audiofile','streamFile','unlink','.wav','SestekNDA\x20is\x20unreachable','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','getTrunk','no\x20trunk\x20found','trunk_name','SIP/%s/%s','opts','Enter\x20in\x20FINALLY\x20(%s)\x20block','file_id','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','getData','response','mindigit','maxdigit','hiddendigitsnum','hiddendigitspos','substr','generate','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','GOAL\x20%s','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','aws_access_key_id','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','aws\x20Polly\x20is\x20unreachable','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','aws_secret_access_key','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','wav','beep','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','stringify','no\x20appid\x20configured','no\x20appsecret\x20configured','%s/recordings/%s','NOBEEP','recordFile','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','gotoif','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','no\x20interval\x20configured','interval_id','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','Enter\x20in\x20HANGUP\x20(%s)\x20block','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ispeech\x20TTS\x20is\x20unreachable','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','AGENT\x20%s\x20FOUND\x20BY','success','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','Enter\x20in\x20MENU\x20(%s)\x20block','digit','no\x20variable\x20found','Enter\x20in\x20NOOP\x20(%s)\x20block','getPause','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','no\x20queue\x20found','indexOf','XMCS-QUEUE','QUEUE','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','no\x20url\x20configured','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','digits','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','getMailAccount','no\x20mail\x20account\x20found','Smtp','bcc','subject','template_id','smtpOptions','Mail\x20message\x20added\x20to\x20outgoing\x20process','SENDFAX\x20block\x20not\x20implemented','Enter\x20in\x20SENDSMS\x20(%s)\x20block','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','sms_account_id','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','XMCS-UNIQUEID','yes','Skipped\x20Answer','subproject','no\x20subproject\x20selected','getSquareProject','no\x20subproject\x20found\x20with\x20id\x20%d','project_id','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','host','system','shellCommand','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','VOICEMAIL','mailbox','Enter\x20in\x20SWITCH\x20(%s)\x20block','util','shelljs','randomstring','moment','mustache','../../config/logger','agi','../../config/environment','./scripts','rawBody','menu','getdigits','getsecretdigits','channel','rpc','mailRpc','prototype','getVariableById','name','catch','getVoiceQueue','then','getSquareProjectById','getSquareOdbcById','getUser','getUserById','getTrunkById','getSound','getSoundById','getSoundPath','save_name','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','IntervalId','interval','map','Intervals','format','%s/sounds/converted/%s','getQueryOdbc','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','error','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','agicommand','arg_1','callerid','createSquareRecording','uniqueid','calleridname','context','priority','dnid','createSquareMessage','createCmContact','isEmpty','callback_','random','lastName','isNil','phone','list_id','callback','Callback\x20scheduled\x20at\x20','callback_priority','getPauseById','agentPause','agent','agentUnpause','agentLogout'];(function(_0x1a7846,_0x59723e){var _0x48049=function(_0x203ff6){while(--_0x203ff6){_0x1a7846['push'](_0x1a7846['shift']());}};_0x48049(++_0x59723e);}(_0xb66c,0x175));var _0xcb66=function(_0x2e2121,_0x422083){_0x2e2121=_0x2e2121-0x0;var _0x13a4e5=_0xb66c[_0x2e2121];return _0x13a4e5;};'use strict';var fs=require('fs');var util=require(_0xcb66('0x0'));var _=require('lodash');var sh=require(_0xcb66('0x1'));var odbc=require('odbc')();var rs=require(_0xcb66('0x2'));var moment=require(_0xcb66('0x3'));var Mustache=require(_0xcb66('0x4'));var rp=require('request-promise');var logger=require(_0xcb66('0x5'))(_0xcb66('0x6'));var config=require(_0xcb66('0x7'));var scripts=require(_0xcb66('0x8'));var FILES_PATH='/var/opt/motion2/server/files';var recursiveMapAttributes=['rawHeaders',_0xcb66('0x9')];var verticesWithRetry=[_0xcb66('0xa'),_0xcb66('0xb'),_0xcb66('0xc')];var AGIVertices=function(_0xf7bc39,_0x58582b,_0x2c62ad){this[_0xcb66('0xd')]=_0xf7bc39;this[_0xcb66('0xe')]=_0x58582b;this[_0xcb66('0xf')]=_0x2c62ad;};AGIVertices[_0xcb66('0x10')]['getVariable']=function(_0x393bde,_0x2b32ec){this[_0xcb66('0xe')][_0xcb66('0x11')](_0x393bde)['then'](function(_0x9eda68){_0x2b32ec(null,_0x9eda68?_0x9eda68[_0xcb66('0x12')]:![]);})[_0xcb66('0x13')](function(_0x2339bb){_0x2b32ec(_0x2339bb);});};AGIVertices['prototype'][_0xcb66('0x14')]=function(_0x40c810,_0x36c846){this[_0xcb66('0xe')]['getVoiceQueueById'](_0x40c810)[_0xcb66('0x15')](function(_0x540e7e){_0x36c846(null,_0x540e7e?_0x540e7e[_0xcb66('0x12')]:![]);})['catch'](function(_0x27442d){_0x36c846(_0x27442d);});};AGIVertices['prototype']['getSquareProject']=function(_0x274aed,_0x13cfea){this[_0xcb66('0xe')][_0xcb66('0x16')](_0x274aed)['then'](function(_0x3a6e26){_0x13cfea(null,_0x3a6e26?_0x3a6e26[_0xcb66('0x12')]:![]);})[_0xcb66('0x13')](function(_0x58bca0){_0x13cfea(_0x58bca0);});};AGIVertices[_0xcb66('0x10')]['getSquareOdbc']=function(_0x4165ea,_0x41edae){this[_0xcb66('0xe')][_0xcb66('0x17')](_0x4165ea)['then'](function(_0x51990b){_0x41edae(null,_0x51990b?_0x51990b['dsn']:![]);})[_0xcb66('0x13')](function(_0x4b13d4){_0x41edae(_0x4b13d4);});};AGIVertices['prototype'][_0xcb66('0x18')]=function(_0x507d5a,_0x1c1219){this[_0xcb66('0xe')][_0xcb66('0x19')](_0x507d5a)[_0xcb66('0x15')](function(_0x1261d2){_0x1c1219(null,_0x1261d2?_0x1261d2[_0xcb66('0x12')]:![]);})[_0xcb66('0x13')](function(_0x5977e1){_0x1c1219(_0x5977e1);});};AGIVertices[_0xcb66('0x10')]['getTrunk']=function(_0x4cdcd9,_0xf89c0e){this[_0xcb66('0xe')][_0xcb66('0x1a')](_0x4cdcd9)['then'](function(_0x341554){_0xf89c0e(null,_0x341554?_0x341554[_0xcb66('0x12')]:![]);})[_0xcb66('0x13')](function(_0x40e3de){_0xf89c0e(_0x40e3de);});};AGIVertices['prototype'][_0xcb66('0x1b')]=function(_0x31560e,_0x134987){var _0x293711=this;this[_0xcb66('0xe')][_0xcb66('0x1c')](_0x31560e)[_0xcb66('0x15')](function(_0x967710){_0x134987(null,_0x967710?_0x293711[_0xcb66('0x1d')](_0x967710[_0xcb66('0x1e')]):![]);})['catch'](function(_0x2152dc){_0x134987(_0x2152dc);});};AGIVertices['prototype']['getMailAccount']=function(_0x58cd2b,_0x31a10a){this['rpc'][_0xcb66('0x1f')](_0x58cd2b)[_0xcb66('0x15')](function(_0x1b8a79){_0x31a10a(null,_0x1b8a79?_0x1b8a79:![]);})['catch'](function(_0x123787){_0x31a10a(_0x123787);});};AGIVertices[_0xcb66('0x10')][_0xcb66('0x20')]=function(_0x311ede,_0xa411e3,_0x375636){this[_0xcb66('0xf')][_0xcb66('0x20')](_0x311ede,_0xa411e3)[_0xcb66('0x15')](function(){_0x375636(null);})[_0xcb66('0x13')](function(_0x521350){_0x375636(_0x521350);});};AGIVertices[_0xcb66('0x10')][_0xcb66('0x21')]=function(_0xeba0d1,_0x5f6d80){this[_0xcb66('0xe')][_0xcb66('0x22')](_0xeba0d1)[_0xcb66('0x15')](function(_0x5a343f){if(_0x5a343f){if(_0x5a343f[_0xcb66('0x23')]){_0x5f6d80(null,[_0x5a343f[_0xcb66('0x24')]]);}else{_0x5f6d80(null,_[_0xcb66('0x25')](_0x5a343f[_0xcb66('0x26')],'interval'));}}else{_0x5f6d80(null,![]);}})[_0xcb66('0x13')](function(_0x17a21a){_0x5f6d80(_0x17a21a);});};AGIVertices[_0xcb66('0x10')][_0xcb66('0x1d')]=function(_0x17152e){return util[_0xcb66('0x27')](_0xcb66('0x28'),FILES_PATH,_0x17152e);};AGIVertices[_0xcb66('0x10')][_0xcb66('0x29')]=function(_0x299156,_0x3dc592,_0x17b087){odbc['open'](_0x299156,function(_0x4d9b76){if(_0x4d9b76){logger['error'](_0xcb66('0x2a'),_0x4d9b76);_0x17b087(_0x4d9b76);}else{logger[_0xcb66('0x2b')](_0xcb66('0x2c'));odbc[_0xcb66('0x2d')](_0x3dc592,function(_0x1a2686,_0x2d8a5e){if(_0x1a2686){logger['info'](_0xcb66('0x2e'),_0x3dc592);_0x17b087(_0x1a2686);}else{logger['info']('Query\x20executed\x20correctly\x20%s',_0x3dc592);odbc['close'](function(_0x411105){if(_0x411105){logger[_0xcb66('0x2f')](_0xcb66('0x30'),_0x411105);}_0x17b087(null,_0x2d8a5e);});}});}});};AGIVertices[_0xcb66('0x10')][_0xcb66('0x31')]=function(_0x3e71a7,_0x3422b6){this[_0xcb66('0xe')][_0xcb66('0x32')](_0x3e71a7)['then'](function(_0xe45331){_0x3422b6(null,_0xe45331?_0xe45331:![]);})[_0xcb66('0x13')](function(_0x4df1b8){_0x3422b6(_0x4df1b8);});};AGIVertices['prototype'][_0xcb66('0x33')]=function(_0x1f1712,_0x4a5934){this['rpc'][_0xcb66('0x33')](_0x1f1712)['then'](function(_0x4d2049){_0x4a5934(null,_0x4d2049);})[_0xcb66('0x13')](function(_0x192bb){_0x4a5934(_0x192bb);});};AGIVertices[_0xcb66('0x10')][_0xcb66('0x34')]=function(_0x99229,_0x235862,_0x3323ee){this[_0xcb66('0xe')][_0xcb66('0x34')]({'uniqueid':this['channel']['uniqueid'],'node':_0x99229['label'],'application':_0x99229[_0xcb66('0x35')],'data':_0x235862||null,'project_name':this['channel'][_0xcb66('0x36')],'callerid':this['channel'][_0xcb66('0x37')]})[_0xcb66('0x15')](function(_0x3c3b62){if(_0x3323ee){_0x3323ee(null,_0x3c3b62);}})[_0xcb66('0x13')](function(_0x3115e2){if(_0x3323ee){_0x3323ee(_0x3115e2);}});};AGIVertices[_0xcb66('0x10')]['createSquareRecording']=function(_0x51848c,_0x437490,_0x99d85b,_0x165397){this[_0xcb66('0xe')][_0xcb66('0x38')]({'uniqueid':this[_0xcb66('0xd')][_0xcb66('0x39')],'callerid':this[_0xcb66('0xd')][_0xcb66('0x37')],'calleridname':this['channel'][_0xcb66('0x3a')],'context':this[_0xcb66('0xd')][_0xcb66('0x3b')],'extension':this[_0xcb66('0xd')]['extension'],'priority':this[_0xcb66('0xd')][_0xcb66('0x3c')],'accountcode':this[_0xcb66('0xd')]['accountcode'],'dnid':this[_0xcb66('0xd')][_0xcb66('0x3d')],'projectName':this[_0xcb66('0xd')][_0xcb66('0x36')],'saveName':_0x437490,'filename':_0x51848c['file']||_0x437490,'savePath':_0x99d85b})[_0xcb66('0x15')](function(_0xb0854f){_0x165397(null,_0xb0854f);})[_0xcb66('0x13')](function(_0x4b1d46){_0x165397(_0x4b1d46);});};AGIVertices['prototype'][_0xcb66('0x3e')]=function(_0x5defd3,_0x37262a,_0x55c6e4,_0x184653,_0x416448){this[_0xcb66('0xe')]['createSquareMessage']({'uniqueid':this[_0xcb66('0xd')]['uniqueid'],'body':_0x5defd3,'direction':_0x37262a,'providerName':_0x55c6e4,'providerResponse':_0x184653})[_0xcb66('0x15')](function(_0xe1b64d){if(_0x416448){_0x416448(null,_0xe1b64d);}})[_0xcb66('0x13')](function(_0x1f6d4d){if(_0x416448){_0x416448(_0x1f6d4d);}});};AGIVertices[_0xcb66('0x10')]['createCmContact']=function(_0x9017f4,_0x5b04ad){this[_0xcb66('0xe')][_0xcb66('0x3f')]({'firstName':_[_0xcb66('0x40')](_0x9017f4['name'])||_['isNil'](_0x9017f4['name'])?_0xcb66('0x41')+Math[_0xcb66('0x42')]():_0x9017f4[_0xcb66('0x12')],'lastName':_[_0xcb66('0x40')](_0x9017f4[_0xcb66('0x43')])||_[_0xcb66('0x44')](_0x9017f4[_0xcb66('0x43')])?null:_0x9017f4[_0xcb66('0x43')],'phone':_0x9017f4[_0xcb66('0x45')],'ListId':_0x9017f4[_0xcb66('0x46')],'scheduledat':_0x9017f4['scheduledAt'],'callbackUniqueid':this[_0xcb66('0xd')][_0xcb66('0x39')],'tags':_0xcb66('0x47'),'description':_0xcb66('0x48')+_0x9017f4['scheduledAt']['toString'](),'priority':_0x9017f4[_0xcb66('0x49')]})[_0xcb66('0x15')](function(_0x726d0f){_0x5b04ad(null,_0x726d0f);})[_0xcb66('0x13')](function(_0xff3820){_0x5b04ad(_0xff3820);});};AGIVertices[_0xcb66('0x10')]['getPause']=function(_0x3888ce,_0xf69f45){this[_0xcb66('0xe')][_0xcb66('0x4a')](_0x3888ce)['then'](function(_0x454493){_0xf69f45(null,_0x454493?_0x454493['name']:![]);})[_0xcb66('0x13')](function(_0x4b2110){_0xf69f45(_0x4b2110);});};AGIVertices[_0xcb66('0x10')][_0xcb66('0x4b')]=function(_0x146a06,_0x5cab77,_0x54e6c2){var _0x696bc1={'role':_0xcb66('0x4c')};_0x696bc1[_0x146a06]=this['channel']['callerid'];this[_0xcb66('0xe')]['agentPause'](_0x696bc1,_0x5cab77,this[_0xcb66('0xd')]['uniqueid'])[_0xcb66('0x15')](function(_0x26c39e){_0x54e6c2(null,_[_0xcb66('0x44')](_0x26c39e)?![]:!![]);})['catch'](function(_0x11c279){logger[_0xcb66('0x2f')](_0x11c279);_0x54e6c2(null,![]);});};AGIVertices['prototype'][_0xcb66('0x4d')]=function(_0x27e83c,_0x417c7e){var _0x1fd270={'role':_0xcb66('0x4c')};_0x1fd270[_0x27e83c]=this[_0xcb66('0xd')]['callerid'];this[_0xcb66('0xe')][_0xcb66('0x4d')](_0x1fd270)[_0xcb66('0x15')](function(_0x22438d){_0x417c7e(null,_[_0xcb66('0x44')](_0x22438d)?![]:!![]);})[_0xcb66('0x13')](function(_0x8913b0){logger[_0xcb66('0x2f')](_0x8913b0);_0x417c7e(null,![]);});};AGIVertices[_0xcb66('0x10')]['agentLogout']=function(_0x2cba8,_0x253ca3){var _0x25e648={'role':_0xcb66('0x4c')};_0x25e648[_0x2cba8]=this[_0xcb66('0xd')][_0xcb66('0x37')];this['rpc'][_0xcb66('0x4e')](_0x25e648)[_0xcb66('0x15')](function(_0x5c59e6){_0x253ca3(null,_[_0xcb66('0x44')](_0x5c59e6)?![]:!![]);})[_0xcb66('0x13')](function(_0x3a232f){logger[_0xcb66('0x2f')](_0x3a232f);_0x253ca3(null,![]);});};AGIVertices['prototype'][_0xcb66('0x4f')]=function(_0x33b739,_0x412eaa){var _0x5926ae={'role':_0xcb66('0x4c')};_0x5926ae[_0x33b739]=this[_0xcb66('0xd')][_0xcb66('0x37')];var _0x1462af=_0x33b739!=_0xcb66('0x50')?util[_0xcb66('0x27')]('%s/%s@from-sip/n',_0xcb66('0x51'),this[_0xcb66('0xd')][_0xcb66('0x37')]):undefined;this[_0xcb66('0xe')]['agentLogin'](_0x5926ae,_0x1462af)[_0xcb66('0x15')](function(_0x26c43c){_0x412eaa(null,_[_0xcb66('0x44')](_0x26c43c)?![]:!![]);})[_0xcb66('0x13')](function(_0x183381){logger[_0xcb66('0x2f')](_0x183381);_0x412eaa(null,![]);});};AGIVertices[_0xcb66('0x10')]['shellCommand']=function(_0x5b8f76,_0x1b7f2b){sh[_0xcb66('0x52')](_[_0xcb66('0x53')](_0x5b8f76),function(_0x43fb09,_0xaef77){var _0x11072c=_0xaef77['replace'](/(\r\n|\n|\r)/gm,'');_0x1b7f2b(null,_0x11072c);});};AGIVertices[_0xcb66('0x10')][_0xcb66('0x54')]=function(_0x19da1c,_0x534cf4){scripts[_0xcb66('0x54')](_0x19da1c[_0xcb66('0x55')],_0x19da1c['google_cloud_tts_text_type']||_0xcb66('0x56'),_0x19da1c[_0xcb66('0x56')],_0x19da1c[_0xcb66('0x57')]||_0xcb66('0x58'),_0x19da1c[_0xcb66('0x59')]||_0xcb66('0x5a'),_0x19da1c[_0xcb66('0x5b')]||_0xcb66('0x5c'))[_0xcb66('0x15')](function(_0x4277e1){_0x534cf4(null,_0x4277e1);})[_0xcb66('0x13')](function(_0x30faa6){_0x534cf4(_0x30faa6);});};AGIVertices[_0xcb66('0x10')][_0xcb66('0x5d')]=function(_0x4332f4,_0x39e86a){scripts[_0xcb66('0x5d')](_0x4332f4[_0xcb66('0x56')],_0x4332f4[_0xcb66('0x5e')]||'en',0x1)['then'](function(_0x1eebc5){_0x39e86a(null,_0x1eebc5);})['catch'](function(_0x14eada){_0x39e86a(_0x14eada);});};AGIVertices['prototype'][_0xcb66('0x5f')]=function(_0x2912c9,_0x42a71a){var _0x1a4cdb={'uri':_0x2912c9[_0xcb66('0x60')],'method':_0x2912c9[_0xcb66('0x61')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x2912c9[_0xcb66('0x62')])===_0xcb66('0x63')&&parseInt(_0x2912c9[_0xcb66('0x62')])>=0x1?parseInt(_0x2912c9[_0xcb66('0x62')])*0x3e8:0x5*0x3e8};if(_[_0xcb66('0x64')]([_0xcb66('0x65'),_0xcb66('0x66')],_0x1a4cdb['method'][_0xcb66('0x67')]())){try{_0x1a4cdb[_0xcb66('0x68')]=_0x2912c9[_0xcb66('0x9')]?JSON['parse'](_0x2912c9[_0xcb66('0x9')]):{};}catch(_0x416e29){logger[_0xcb66('0x2f')]('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x416e29);}}try{_0x1a4cdb[_0xcb66('0x69')]=_0x2912c9[_0xcb66('0x6a')]?JSON[_0xcb66('0x6b')](_0x2912c9[_0xcb66('0x6a')]):{};}catch(_0x38a3c0){logger[_0xcb66('0x2f')]('An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function',_0x38a3c0);}if(_0x2912c9[_0xcb66('0x6c')]){try{var _0x536ecf=require(_0x2912c9[_0xcb66('0x6c')])['sync'](this,_0x1a4cdb);_0x1a4cdb[_0xcb66('0x6d')]=Mustache['render'](_0x2912c9[_0xcb66('0x60')],_0x536ecf,{},['$$','$$']);if(_0x1a4cdb[_0xcb66('0x69')]){_0x1a4cdb[_0xcb66('0x69')]=JSON['parse'](Mustache[_0xcb66('0x6e')](JSON['stringify'](_0x1a4cdb[_0xcb66('0x69')]),_0x536ecf,{},['$$','$$']));}if(_0x1a4cdb[_0xcb66('0x68')]){_0x1a4cdb[_0xcb66('0x68')]=JSON[_0xcb66('0x6b')](Mustache[_0xcb66('0x6e')](JSON['stringify'](_0x1a4cdb[_0xcb66('0x68')]),_0x536ecf,{},['$$','$$']));}}catch(_0xfa72ee){logger[_0xcb66('0x2f')](_0xcb66('0x6f'),_0xfa72ee);}}rp(_0x1a4cdb)['then'](function(_0x19ac18){var _0x469b1f={'statusCode':_0x19ac18['statusCode']||0xc8,'statusMessage':_0x19ac18[_0xcb66('0x70')]||'OK','headers':_0x19ac18[_0xcb66('0x69')]||{},'body':_0x19ac18[_0xcb66('0x68')]||{}};_0x42a71a(null,_0x469b1f);})[_0xcb66('0x13')](function(_0x4be3e7){var _0x197eb8={'statusCode':_0x4be3e7[_0xcb66('0x71')]||0x1f4,'statusMessage':_0x4be3e7[_0xcb66('0x72')]||_0xcb66('0x73'),'headers':_0x4be3e7[_0xcb66('0x74')]['headers']||{},'body':_0x4be3e7[_0xcb66('0x74')][_0xcb66('0x68')]||{}};_0x42a71a(null,_0x197eb8);});};AGIVertices[_0xcb66('0x10')][_0xcb66('0x75')]=function(_0xb3a1e,_0xf7b62b){scripts[_0xcb66('0x75')](this['channel']['uniqueid'],_0xb3a1e['key'],_0xb3a1e[_0xcb66('0x56')],_0xb3a1e[_0xcb66('0x76')]||'en')['then'](function(_0x1722c6){_0xf7b62b(null,_0x1722c6);})['catch'](function(_0x3f3b1a){_0xf7b62b(_0x3f3b1a);});};AGIVertices[_0xcb66('0x10')][_0xcb66('0x77')]=function(_0x28987a,_0x4d45b2){scripts[_0xcb66('0x77')](this[_0xcb66('0xd')][_0xcb66('0x39')],_0x28987a[_0xcb66('0x78')],_0x28987a[_0xcb66('0x79')],_0x28987a['private_key'],_0x28987a['text'],_0x28987a[_0xcb66('0x7a')]||'en')['then'](function(_0x2b6166){_0x4d45b2(null,_0x2b6166);})[_0xcb66('0x13')](function(_0x3c36d2){_0x4d45b2(_0x3c36d2);});};AGIVertices[_0xcb66('0x10')][_0xcb66('0x7b')]=function(_0x2a478c,_0x5f0b8d){scripts[_0xcb66('0x7b')](this['channel'],_0x2a478c)[_0xcb66('0x15')](function(_0x3c3ec3){_0x5f0b8d(null,_0x3c3ec3);})[_0xcb66('0x13')](function(_0x23b942){_0x5f0b8d(_0x23b942);});};AGIVertices[_0xcb66('0x10')][_0xcb66('0x7c')]=function(_0x5763c7,_0x137a66){scripts[_0xcb66('0x7c')](_0x5763c7[_0xcb66('0x7d')],_0x5763c7[_0xcb66('0x56')],_0x5763c7[_0xcb66('0x7e')]||_0xcb66('0x58'),_0x5763c7[_0xcb66('0x7f')])[_0xcb66('0x15')](function(_0x56e3ef){_0x137a66(null,_0x56e3ef);})['catch'](function(_0x25c9da){_0x137a66(_0x25c9da);});};AGIVertices[_0xcb66('0x10')]['ispeechASR']=function(_0xa876b8,_0x33490d,_0x5e6799){scripts[_0xcb66('0x80')](_0x33490d,_0xa876b8['key'],_0xa876b8[_0xcb66('0x81')]||_0xcb66('0x58'),this[_0xcb66('0x82')](_0xa876b8[_0xcb66('0x83')])?_0xa876b8[_0xcb66('0x83')]:undefined)['then'](function(_0x5d512f){_0x5e6799(null,_0x5d512f);})[_0xcb66('0x13')](function(_0x3c0cb6){_0x5e6799(_0x3c0cb6);});};AGIVertices[_0xcb66('0x10')][_0xcb66('0x84')]=function(_0x3731c5,_0x4d50b1){scripts[_0xcb66('0x84')](_0x3731c5['aws_access_key_id'],_0x3731c5['aws_secret_access_key'],_0x3731c5[_0xcb66('0x85')],_0x3731c5['aws_polly_voice']||'Amy',_0x3731c5[_0xcb66('0x56')],_0x3731c5[_0xcb66('0x86')]||'text')[_0xcb66('0x15')](function(_0x134589){_0x4d50b1(null,_0x134589);})[_0xcb66('0x13')](function(_0x3acdeb){_0x4d50b1(_0x3acdeb);});};AGIVertices[_0xcb66('0x10')][_0xcb66('0x87')]=function(_0x1e21db,_0x3cb320){scripts[_0xcb66('0x87')](this[_0xcb66('0xd')][_0xcb66('0x39')],_0x1e21db['aws_access_key_id'],_0x1e21db['aws_secret_access_key'],_0x1e21db[_0xcb66('0x88')],_0x1e21db[_0xcb66('0x56')],_0x1e21db[_0xcb66('0x89')])[_0xcb66('0x15')](function(_0x16f499){_0x3cb320(null,_0x16f499);})[_0xcb66('0x13')](function(_0x16b420){_0x3cb320(_0x16b420);});};AGIVertices['prototype'][_0xcb66('0x8a')]=function(_0x49a473,_0x4f30c2,_0x590640){scripts[_0xcb66('0x8a')](_0x4f30c2,_0x49a473[_0xcb66('0x7d')],_0x49a473[_0xcb66('0x8b')]||'en-US')[_0xcb66('0x15')](function(_0x50a683){_0x590640(null,_0x50a683);})['catch'](function(_0x2c83df){_0x590640(_0x2c83df);});};AGIVertices[_0xcb66('0x10')][_0xcb66('0x8c')]=function(_0x395294,_0x2668f2,_0x5a10f9){scripts[_0xcb66('0x8c')](_0x2668f2,_0x395294[_0xcb66('0x8d')],_0x395294[_0xcb66('0x8e')],_0x395294[_0xcb66('0x6d')])[_0xcb66('0x15')](function(_0x113a9e){_0x5a10f9(null,_0x113a9e);})[_0xcb66('0x13')](function(_0x5d3772){_0x5a10f9(_0x5d3772);});};AGIVertices[_0xcb66('0x10')][_0xcb66('0x8f')]=function(_0x2f7a2a){var _0x56b9e7=_[_0xcb66('0x64')](verticesWithRetry,_0x2f7a2a[_0xcb66('0x35')])?_0x2f7a2a:_['clone'](_0x2f7a2a);for(var _0x7736a2 in _0x56b9e7){if(_0x56b9e7[_0xcb66('0x90')](_0x7736a2)){if(_0x56b9e7[_0x7736a2]&&_[_0xcb66('0x91')](_0x56b9e7[_0x7736a2])){if(_['includes'](recursiveMapAttributes,_0x7736a2)){_0x56b9e7[_0x7736a2]=this[_0xcb66('0x92')](_0x56b9e7[_0x7736a2]);}else{_0x56b9e7[_0x7736a2]=this[_0xcb66('0x93')](_0x56b9e7[_0x7736a2]);}}}}return _0x56b9e7;};AGIVertices[_0xcb66('0x10')][_0xcb66('0x94')]=function(_0x25f06c){for(var _0x5b2e1d in _0x25f06c){if(_0x25f06c[_0xcb66('0x90')](_0x5b2e1d)){if(_[_0xcb66('0x95')](_0x25f06c[_0x5b2e1d])){this[_0xcb66('0x94')](_0x25f06c[_0x5b2e1d]);}else if(_[_0xcb66('0x96')](_0x25f06c[_0x5b2e1d])){for(var _0x276be1=0x0;_0x276be1<_0x25f06c[_0x5b2e1d][_0xcb66('0x97')];_0x276be1++){this['recursiveNodeIndex'](_0x25f06c[_0x5b2e1d][_0x276be1]);}}else if(_['isString'](_0x25f06c[_0x5b2e1d])){_0x25f06c[_0x5b2e1d]=this[_0xcb66('0x93')](_0x25f06c[_0x5b2e1d]);}}}};AGIVertices[_0xcb66('0x10')][_0xcb66('0x98')]=function(_0x38b12c,_0x3bd0d7){for(var _0x42f38b in _0x38b12c){if(_0x38b12c['hasOwnProperty'](_0x42f38b)){if(_[_0xcb66('0x95')](_0x38b12c[_0x42f38b])){if(!_[_0xcb66('0x40')](_0x38b12c[_0x42f38b])){this[_0xcb66('0x98')](_0x38b12c[_0x42f38b],util[_0xcb66('0x27')](_0xcb66('0x99'),_0x3bd0d7,_0x42f38b));}}else if(_[_0xcb66('0x96')](_0x38b12c[_0x42f38b])){for(var _0x3135e7=0x0;_0x3135e7<_0x38b12c[_0x42f38b]['length'];_0x3135e7++){this[_0xcb66('0x98')](_0x38b12c[_0x42f38b][_0x3135e7],util[_0xcb66('0x27')](_0xcb66('0x99'),_0x3bd0d7,_0x42f38b+'['+_0x3135e7+']'));}}else{if(!_['isNil'](_0x38b12c[_0x42f38b])){this[_0xcb66('0xd')][_0xcb66('0x9a')](util['format']('%s.%s',_0x3bd0d7,_0x42f38b),_0x38b12c[_0x42f38b]);}}}}};AGIVertices[_0xcb66('0x10')][_0xcb66('0x92')]=function(_0x285b9c){try{var _0x51247a=JSON['parse'](_0x285b9c);this[_0xcb66('0x94')](_0x51247a);return JSON['stringify'](_0x51247a);}catch(_0x5d701a){return this[_0xcb66('0x93')](_0x285b9c);}};AGIVertices['prototype']['replaceAllVariables']=function(_0x2b6ed1){var _0x1dbf42=_0x2b6ed1[_0xcb66('0x9b')]('{');for(var _0xf66e40=0x1;_0xf66e40<_0x1dbf42[_0xcb66('0x97')];_0xf66e40+=0x1){var _0x405765=_0x1dbf42[_0xf66e40][_0xcb66('0x9b')]('}');if(_0x405765[_0xcb66('0x97')]>0x1){_0x2b6ed1=_0x2b6ed1['replaceAll']('{'+_0x405765[0x0]+'}',this[_0xcb66('0xd')][_0xcb66('0x9c')](_0x405765[0x0])[_0xcb66('0x9d')]||_0x405765[0x0]);}}if(_0x1dbf42[_0xcb66('0x97')]===0x1){return _0x2b6ed1[_0xcb66('0x9e')]();}return this[_0xcb66('0x93')](_0x2b6ed1);};AGIVertices[_0xcb66('0x10')][_0xcb66('0x9f')]=function(_0x1a3ba8,_0x39fc6b){var _0x3e0c2c=this[_0xcb66('0xd')]['getVariable'](_0x1a3ba8);if(_0x3e0c2c[_0xcb66('0xa0')]===-0x1){return _0x3e0c2c;}logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0xa1'),_0x39fc6b,_0x3e0c2c[_0xcb66('0x9d')]));return this[_0xcb66('0xd')]['setVariable'](_0x39fc6b,_0x3e0c2c['extra']);};AGIVertices['prototype'][_0xcb66('0x82')]=function(_0x5ab121){return _0x5ab121&&_0x5ab121!=='0'&&_0x5ab121!=='-1'&&_0x5ab121!=='';};AGIVertices['prototype'][_0xcb66('0xa2')]=function(_0x135046){this[_0xcb66('0x34')][_0xcb66('0xa3')](this,_0x135046,'-');_0x135046[_0xcb66('0xa4')]=_0x135046[_0xcb66('0xa2')];return{'code':0xc8,'result':'-'};};AGIVertices[_0xcb66('0x10')][_0xcb66('0xa5')]=function(_0x56135d){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0xa6'),_0x56135d[_0xcb66('0xa7')]));if(!this[_0xcb66('0x82')](_0x56135d[_0xcb66('0x56')])){return this[_0xcb66('0xd')][_0xcb66('0xa8')]('no\x20text\x20configured');}var _0x42e664='\x22'+_0x56135d[_0xcb66('0x56')]+'\x22';if(this[_0xcb66('0x82')](_0x56135d[_0xcb66('0x74')])){_0x42e664+=','+_0x56135d[_0xcb66('0x74')];}var _0x62477d=this[_0xcb66('0xd')][_0xcb66('0x52')](_0xcb66('0xa9'),_0x42e664);if(_0x62477d['result']===-0x1){return _0x62477d;}return this[_0xcb66('0xd')][_0xcb66('0xa8')](util['format'](_0xcb66('0xaa'),_0x42e664));};AGIVertices[_0xcb66('0x10')][_0xcb66('0xab')]=function(_0x40ab09){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0xac'),_0x40ab09['label']));if(!this[_0xcb66('0x82')](_0x40ab09['grammar'])){return this['channel']['noop'](_0xcb66('0xad'));}var _0x3cd531=_0x40ab09[_0xcb66('0xae')];if(this[_0xcb66('0x82')](_0x40ab09[_0xcb66('0x74')])){_0x3cd531+=','+_0x40ab09[_0xcb66('0x74')];}var _0x1664bc=this['channel'][_0xcb66('0x52')](_0xcb66('0xaf'),_0x3cd531);if(_0x1664bc[_0xcb66('0xa0')]===-0x1){return _0x1664bc;}var _0x1cb179=this['getAndSetVariable'](_0xcb66('0xb0'),'MRCP_RECOG_CONFIDENCE');if(_0x1cb179['result']===-0x1){return _0x1cb179;}var _0x3dbff2=this[_0xcb66('0x9f')]('RECOG_INPUT()',_0xcb66('0xb1'));if(_0x3dbff2[_0xcb66('0xa0')]===-0x1){return _0x3dbff2;}var _0xf4a5bf=this[_0xcb66('0x9f')]('RECOG_INSTANCE()',_0xcb66('0xb2'));if(_0xf4a5bf[_0xcb66('0xa0')]===-0x1){return _0xf4a5bf;}return this[_0xcb66('0xd')][_0xcb66('0xa8')](util['format'](_0xcb66('0xb3'),_0x3cd531));};AGIVertices['prototype'][_0xcb66('0x6')]=function(_0x311e56){logger['info'](util['format']('Enter\x20in\x20AGI\x20(%s)\x20block',_0x311e56[_0xcb66('0xa7')]));return this[_0xcb66('0xd')]['agi']([_0x311e56[_0xcb66('0xb4')],_0x311e56[_0xcb66('0xb5')]]);};AGIVertices['prototype'][_0xcb66('0xb6')]=function(_0x2b1f71){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0xb7'),_0x2b1f71[_0xcb66('0xa7')]));if(this[_0xcb66('0x82')](_0x2b1f71[_0xcb66('0x62')])){logger['info'](util[_0xcb66('0x27')](_0xcb66('0xb8'),_0x2b1f71[_0xcb66('0x62')]));var _0x22ed1d=this[_0xcb66('0xd')][_0xcb66('0xb9')](_0x2b1f71[_0xcb66('0x62')]);if(_0x22ed1d['result']===-0x1){return _0x22ed1d;}}return this[_0xcb66('0xd')][_0xcb66('0xb6')]();};AGIVertices[_0xcb66('0x10')][_0xcb66('0x47')]=function(_0x5e7a5a){logger['info'](util[_0xcb66('0x27')](_0xcb66('0xba'),_0x5e7a5a[_0xcb66('0xa7')]));if(!this[_0xcb66('0x82')](_0x5e7a5a[_0xcb66('0x46')])){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x5e7a5a,_0xcb66('0xbb'));}_0x5e7a5a[_0xcb66('0xbc')]=moment();if(this[_0xcb66('0x82')](_0x5e7a5a[_0xcb66('0xbd')])){_0x5e7a5a[_0xcb66('0xbc')]=moment()['add'](_0x5e7a5a['delay'],'minutes');}if(!this[_0xcb66('0x82')](_0x5e7a5a[_0xcb66('0x49')])){_0x5e7a5a[_0xcb66('0x49')]=0x2;}this['createCmContact'][_0xcb66('0xa3')](this,_0x5e7a5a);return this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')]('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0x5e7a5a['phone'],_0x5e7a5a[_0xcb66('0x46')],_0x5e7a5a['scheduledAt']));};AGIVertices[_0xcb66('0x10')][_0xcb66('0xbe')]=function(_0x36f067){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0xbf'),_0x36f067[_0xcb66('0xa7')]));var _0x4b03cc=this[_0xcb66('0xd')][_0xcb66('0x52')](_0x36f067[_0xcb66('0xc0')],_0x36f067[_0xcb66('0x74')]);if(_0x4b03cc['result']===-0x1){return _0x4b03cc;}return this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0xc1'),_0x36f067[_0xcb66('0xc0')],_0x36f067[_0xcb66('0x74')]));};AGIVertices[_0xcb66('0x10')][_0xcb66('0xc2')]=function(_0x166f62){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')]('Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block',_0x166f62[_0xcb66('0xa7')]));if(!this[_0xcb66('0x82')](_0x166f62[_0xcb66('0x56')])){return this[_0xcb66('0xd')][_0xcb66('0xa8')](_0xcb66('0xc3'));}var _0x58b6db='\x22'+_0x166f62[_0xcb66('0x56')]+'\x22';if(this[_0xcb66('0x82')](_0x166f62['options'])){_0x58b6db+=','+_0x166f62[_0xcb66('0x74')];}var _0x2869c9=this[_0xcb66('0xd')]['exec']('MRCPSynth',_0x58b6db);if(_0x2869c9[_0xcb66('0xa0')]===-0x1){return _0x2869c9;}return this[_0xcb66('0xd')]['noop'](util[_0xcb66('0x27')](_0xcb66('0xaa'),_0x58b6db));};AGIVertices['prototype'][_0xcb66('0xc4')]=function(_0x90c525){logger['info'](util[_0xcb66('0x27')](_0xcb66('0xc5'),_0x90c525['label']));if(!this[_0xcb66('0x82')](_0x90c525['text'])){return this[_0xcb66('0xd')][_0xcb66('0xa8')](_0xcb66('0xc3'));}var _0x46eb02='\x22'+_0x90c525['text']+'\x22';if(this[_0xcb66('0x82')](_0x90c525['options'])){_0x46eb02+=','+_0x90c525[_0xcb66('0x74')];}var _0x31772e=this['channel'][_0xcb66('0x52')](_0xcb66('0xa9'),_0x46eb02);if(_0x31772e[_0xcb66('0xa0')]===-0x1){return _0x31772e;}return this['channel'][_0xcb66('0xa8')](util[_0xcb66('0x27')]('Executed\x20command\x20MRCPSynth\x20%s',_0x46eb02));};AGIVertices[_0xcb66('0x10')][_0xcb66('0xc6')]=function(_0x26359b){logger['info'](util[_0xcb66('0x27')](_0xcb66('0xc7'),_0x26359b['label']));if(!this[_0xcb66('0x82')](_0x26359b[_0xcb66('0xae')])){return this[_0xcb66('0xd')][_0xcb66('0xa8')](_0xcb66('0xad'));}var _0x422855=_0x26359b[_0xcb66('0xae')];if(this[_0xcb66('0x82')](_0x26359b[_0xcb66('0x74')])){_0x422855+=','+_0x26359b[_0xcb66('0x74')];}var _0x45797c=this[_0xcb66('0xd')][_0xcb66('0x52')]('MRCPRecog',_0x422855);if(_0x45797c[_0xcb66('0xa0')]===-0x1){return _0x45797c;}var _0x2c1c5e=this[_0xcb66('0x9f')]('RECOG_CONFIDENCE()',_0xcb66('0xc8'));if(_0x2c1c5e['result']===-0x1){return _0x2c1c5e;}var _0x3a67eb=this[_0xcb66('0x9f')](_0xcb66('0xc9'),_0xcb66('0xca'));if(_0x3a67eb[_0xcb66('0xa0')]===-0x1){return _0x3a67eb;}var _0xc0a30e=this[_0xcb66('0x9f')](_0xcb66('0xcb'),_0xcb66('0xcc'));if(_0xc0a30e[_0xcb66('0xa0')]===-0x1){return _0xc0a30e;}return this['channel'][_0xcb66('0xa8')](util['format']('Executed\x20command\x20MRCPRecog\x20%s',_0x422855));};AGIVertices[_0xcb66('0x10')][_0xcb66('0xcd')]=function(_0x8d83eb){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0xce'),_0x8d83eb[_0xcb66('0xa7')]));if(!this['isConfigured'](_0x8d83eb[_0xcb66('0xae')])){return this[_0xcb66('0xd')][_0xcb66('0xa8')](_0xcb66('0xad'));}var _0x3752fe=_0x8d83eb[_0xcb66('0xae')];if(this[_0xcb66('0x82')](_0x8d83eb[_0xcb66('0x74')])){_0x3752fe+=','+_0x8d83eb['options'];}var _0x2245ef=this[_0xcb66('0xd')][_0xcb66('0x52')](_0xcb66('0xaf'),_0x3752fe);if(_0x2245ef['result']===-0x1){return _0x2245ef;}var _0xe4a247=this['getAndSetVariable'](_0xcb66('0xb0'),_0xcb66('0xcf'));if(_0xe4a247['result']===-0x1){return _0xe4a247;}var _0x38de32=this[_0xcb66('0x9f')](_0xcb66('0xc9'),_0xcb66('0xd0'));if(_0x38de32[_0xcb66('0xa0')]===-0x1){return _0x38de32;}var _0x743338=this[_0xcb66('0x9f')](_0xcb66('0xcb'),_0xcb66('0xd1'));if(_0x743338[_0xcb66('0xa0')]===-0x1){return _0x743338;}return this[_0xcb66('0xd')]['noop'](util[_0xcb66('0x27')](_0xcb66('0xb3'),_0x3752fe));};AGIVertices['prototype'][_0xcb66('0xd2')]=function(_0x203bcf){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0xd3'),_0x203bcf[_0xcb66('0xa7')]));if(!this['isConfigured'](_0x203bcf['odbc_id'])){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x203bcf,_0xcb66('0xd4'));}var _0x46ae54=this[_0xcb66('0xd5')][_0xcb66('0xa3')](this,_0x203bcf[_0xcb66('0xd6')]);if(!_0x46ae54){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x203bcf,_0xcb66('0xd7'));}if(!this[_0xcb66('0x82')](_0x203bcf[_0xcb66('0x2d')])){return this[_0xcb66('0xd')]['error'](_0x203bcf,_0xcb66('0xd8'));}var _0x1ee052=_0x203bcf[_0xcb66('0x2d')][_0xcb66('0xd9')](/(\r\n|\n|\r)/gm,'\x20');this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0xda'),_0x1ee052));var _0x37addb=this['getQueryOdbc'][_0xcb66('0xa3')](this,_0x46ae54,_0x1ee052);this[_0xcb66('0x34')][_0xcb66('0xa3')](this,_0x203bcf,_0x1ee052);if(!this[_0xcb66('0x82')](_0x203bcf[_0xcb66('0xdb')])){return this['channel'][_0xcb66('0xa8')](_0xcb66('0xdc'));}var _0x3b8d55=this['getVariable'][_0xcb66('0xa3')](this,_0x203bcf[_0xcb66('0xdb')]);if(!_0x3b8d55){return this['channel'][_0xcb66('0x2f')](_0x203bcf,'no\x20variable\x20found');}var _0x2f55e6=this;_0x37addb[_0xcb66('0xdd')](function(_0x5d4f3c,_0x1c8e78){Object['keys'](_0x5d4f3c)[_0xcb66('0xdd')](function(_0x2de3fa){_0x2f55e6[_0xcb66('0xd')][_0xcb66('0x9a')](util[_0xcb66('0x27')](_0xcb66('0xde'),_0x3b8d55,_0x1c8e78,_0x2de3fa),_0x5d4f3c[_0x2de3fa]);});});this[_0xcb66('0xd')]['setVariable'](util['format'](_0xcb66('0xdf'),_0x3b8d55),_0x37addb['length']);return this['channel'][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0xe0'),_0x3b8d55));};AGIVertices[_0xcb66('0x10')]['dial']=function(_0x209219){logger[_0xcb66('0xe1')](util[_0xcb66('0x27')](_0xcb66('0xe2'),_0x209219['label']));if(!this[_0xcb66('0x82')](_0x209219[_0xcb66('0xe3')])){return this[_0xcb66('0xd')]['error'](_0x209219,_0xcb66('0xe4'));}var _0x25d937=this[_0xcb66('0x18')][_0xcb66('0xa3')](this,_0x209219[_0xcb66('0xe3')]);if(!_0x25d937){return this[_0xcb66('0xd')]['error'](_0x209219,_0xcb66('0xe5'));}var _0x1895f2=this[_0xcb66('0xd')][_0xcb66('0x52')](_0xcb66('0xe6'),[util[_0xcb66('0x27')](_0xcb66('0xe7'),_0x25d937),_0x209219[_0xcb66('0x62')],_0x209219['opts'],_0x209219['url']]);if(_0x1895f2[_0xcb66('0xa0')]===-0x1){return _0x1895f2;}return this[_0xcb66('0xd')]['noop'](util[_0xcb66('0x27')](_0xcb66('0xe8'),_0xcb66('0xe6')));};AGIVertices['prototype']['dialogflow']=function(_0x452dfa){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0xe9'),_0x452dfa['label']));if(!this['isConfigured'](_0x452dfa['key'])){return this[_0xcb66('0xd')][_0xcb66('0xa8')](_0xcb66('0xea'));}if(!this[_0xcb66('0x82')](_0x452dfa[_0xcb66('0x56')])){return this[_0xcb66('0xd')][_0xcb66('0xa8')](_0xcb66('0xc3'));}this['channel'][_0xcb66('0xeb')]=!![];this[_0xcb66('0x34')](_0x452dfa);this['createSquareMessage'](_0x452dfa[_0xcb66('0x56')],'in','','');this['channel'][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0xec'),_0x452dfa[_0xcb66('0x56')]));var _0x2b951b=this['googleDialogflow'][_0xcb66('0xa3')](this,_0x452dfa);if(_0x2b951b){for(var _0x3ec59e in _0x2b951b){if(_0x2b951b[_0xcb66('0x90')](_0x3ec59e)){this[_0xcb66('0xd')]['setVariable'](util[_0xcb66('0x27')](_0xcb66('0xed'),_0x3ec59e[_0xcb66('0x67')]()),_0x2b951b[_0x3ec59e]);}}this[_0xcb66('0x3e')](_0x2b951b['speech'],_0xcb66('0xee'),_0xcb66('0xef'),'');return this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0xf0'),_0x2b951b['speech']));}return this[_0xcb66('0xd')]['error'](_0x452dfa,_0xcb66('0xf1'));};AGIVertices[_0xcb66('0x10')][_0xcb66('0xf2')]=function(_0x3ddf49){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0xf3'),_0x3ddf49[_0xcb66('0xa7')]));if(!this[_0xcb66('0x82')](_0x3ddf49[_0xcb66('0x78')])){return this[_0xcb66('0xd')][_0xcb66('0xa8')](_0xcb66('0xf4'));}if(!this[_0xcb66('0x82')](_0x3ddf49[_0xcb66('0x79')])){return this['channel']['noop']('no\x20client_email\x20configured');}if(!this[_0xcb66('0x82')](_0x3ddf49['private_key'])){return this[_0xcb66('0xd')][_0xcb66('0xa8')](_0xcb66('0xf5'));}if(!this[_0xcb66('0x82')](_0x3ddf49[_0xcb66('0x7a')])){return this[_0xcb66('0xd')]['noop'](_0xcb66('0xf6'));}if(!this[_0xcb66('0x82')](_0x3ddf49['text'])){return this[_0xcb66('0xd')]['noop']('no\x20text\x20configured');}this['channel'][_0xcb66('0xeb')]=!![];this[_0xcb66('0x34')](_0x3ddf49);this[_0xcb66('0x3e')](_0x3ddf49[_0xcb66('0x56')],'in','','');this[_0xcb66('0xd')]['noop'](util[_0xcb66('0x27')](_0xcb66('0xf7'),_0x3ddf49[_0xcb66('0x56')]));var _0x5a54bd=this[_0xcb66('0x77')][_0xcb66('0xa3')](this,_0x3ddf49);if(_0x5a54bd){for(var _0x272e99 in _0x5a54bd){if(_0x5a54bd['hasOwnProperty'](_0x272e99)){if(_0x272e99!==_0xcb66('0xf8')){this[_0xcb66('0xd')][_0xcb66('0x9a')](util[_0xcb66('0x27')](_0xcb66('0xed'),_0x272e99[_0xcb66('0x67')]()),_0x5a54bd[_0x272e99]);}}}this[_0xcb66('0x3e')](_0x5a54bd[_0xcb66('0xf9')],'out',_0xcb66('0xf2'),_0x5a54bd[_0xcb66('0xf8')]);return this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0xfa'),_0x5a54bd['speech']));}return this[_0xcb66('0xd')]['error'](_0x3ddf49,'DialogflowV2\x20is\x20unreachable');};AGIVertices[_0xcb66('0x10')][_0xcb66('0xfb')]=function(_0x205dc5){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0xfc'),_0x205dc5[_0xcb66('0xa7')]));if(!this[_0xcb66('0x82')](_0x205dc5['ndauth_url'])){return this[_0xcb66('0xd')][_0xcb66('0xa8')](_0xcb66('0xfd'));}if(!this[_0xcb66('0x82')](_0x205dc5[_0xcb66('0xfe')])){return this[_0xcb66('0xd')][_0xcb66('0xa8')]('no\x20username\x20configured');}if(!this[_0xcb66('0x82')](_0x205dc5[_0xcb66('0xff')])){return this['channel'][_0xcb66('0xa8')](_0xcb66('0x100'));}if(!this[_0xcb66('0x82')](_0x205dc5[_0xcb66('0x101')])){return this['channel'][_0xcb66('0xa8')]('no\x20text\x20configured');}this[_0xcb66('0xd')]['bot']=!![];this['createSquareDetailsReport'](_0x205dc5);this[_0xcb66('0x3e')](_0x205dc5[_0xcb66('0x56')],'in','','');this['channel'][_0xcb66('0xa8')](util['format'](_0xcb66('0x102'),_0x205dc5[_0xcb66('0x56')]));var _0x5c5b35=this[_0xcb66('0x7b')][_0xcb66('0xa3')](this,_0x205dc5);if(_0x5c5b35){for(var _0x5b1110 in _0x5c5b35){if(_0x5c5b35[_0xcb66('0x90')](_0x5b1110)){this[_0xcb66('0xd')][_0xcb66('0x9a')](util[_0xcb66('0x27')]('SESTEK_NDA_%s',_0x5b1110[_0xcb66('0x67')]()),_0x5c5b35[_0x5b1110]);}}this['createSquareMessage'](_0x5c5b35[_0xcb66('0xf9')],_0xcb66('0xee'),'sesteknda','');if(_0x5c5b35[_0xcb66('0x103')]){this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')]('Sestek\x20NDA\x20%s\x20file\x20created',_0x5c5b35['audiofile']));var _0x271776=this[_0xcb66('0xd')][_0xcb66('0x104')](_0x5c5b35[_0xcb66('0x103')]);try{fs[_0xcb66('0x105')](_0x5c5b35[_0xcb66('0x103')]+_0xcb66('0x106'));}catch(_0xe7310f){logger[_0xcb66('0x2f')](_0xe7310f);}return _0x271776;}else{return this['channel']['noop'](util[_0xcb66('0x27')]('SestekNDA\x20Result\x20%s',_0x5c5b35[_0xcb66('0xf9')]));}}return this[_0xcb66('0xd')]['error'](_0x205dc5,_0xcb66('0x107'));};AGIVertices[_0xcb66('0x10')]['end']=function(_0x28fdb5){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x108'),_0x28fdb5[_0xcb66('0xa7')]));return this[_0xcb66('0xd')][_0xcb66('0xa8')]('end');};AGIVertices[_0xcb66('0x10')][_0xcb66('0x109')]=function(_0x413772){logger['info'](util['format'](_0xcb66('0x10a'),_0x413772['label']));var _0x2aab13='';if(_0x413772[_0xcb66('0x10b')]){if(!this[_0xcb66('0x82')](_0x413772['trunk_id'])){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x413772,'no\x20trunk\x20selected');}else{var _0x388047=parseInt(_0x413772[_0xcb66('0x10b')],0xa);if(isNaN(_0x388047)){_0x2aab13=_0x413772['trunk_id'];}else{_0x2aab13=this[_0xcb66('0x10c')][_0xcb66('0xa3')](this,_0x413772[_0xcb66('0x10b')]);if(!_0x2aab13){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x413772,_0xcb66('0x10d'));}}}}else if(_0x413772[_0xcb66('0x10e')]){_0x2aab13=_0x413772[_0xcb66('0x10e')];}else{return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x413772,'no\x20trunk\x20selected');}var _0x4266f5=this[_0xcb66('0xd')][_0xcb66('0x52')]('DIAL',[util[_0xcb66('0x27')](_0xcb66('0x10f'),_0x2aab13,_0x413772[_0xcb66('0x45')]),_0x413772['timeout'],_0x413772[_0xcb66('0x110')],_0x413772[_0xcb66('0x60')]]);if(_0x4266f5[_0xcb66('0xa0')]===-0x1){return _0x4266f5;}return this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')]('Executed\x20command\x20%s',_0xcb66('0xe6')));};AGIVertices[_0xcb66('0x10')]['finally']=function(_0x49ccd2){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x111'),_0x49ccd2[_0xcb66('0xa7')]));return this[_0xcb66('0xd')][_0xcb66('0xa8')]('finally');};AGIVertices[_0xcb66('0x10')][_0xcb66('0xb')]=function(_0x5b66c4){logger[_0xcb66('0x2b')](util['format']('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x5b66c4[_0xcb66('0xa7')]));if(_0x5b66c4[_0xcb66('0xa4')]===0x0){return this[_0xcb66('0xa2')](_0x5b66c4);}_0x5b66c4[_0xcb66('0xa4')]-=0x1;if(!this[_0xcb66('0x82')](_0x5b66c4[_0xcb66('0x112')])){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x5b66c4,_0xcb66('0x113'));}var _0x308447=this[_0xcb66('0x1b')]['sync'](this,_0x5b66c4[_0xcb66('0x112')]);if(!_0x308447){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x5b66c4,_0xcb66('0x114'));}if(!this[_0xcb66('0x82')](_0x5b66c4[_0xcb66('0xdb')])){return this[_0xcb66('0xd')][_0xcb66('0x2f')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x2f7a36=this[_0xcb66('0xd')][_0xcb66('0x115')](_0x308447,_0x5b66c4[_0xcb66('0x116')],_0x5b66c4['maxdigit']);var _0x1b800e=_0x2f7a36[_0xcb66('0xa0')]?_0x2f7a36[_0xcb66('0xa0')][_0xcb66('0x9e')]():'';logger[_0xcb66('0x2b')]('test',JSON['stringify'](_0x2f7a36));if(_0x2f7a36['result']===-0x1){this[_0xcb66('0x34')][_0xcb66('0xa3')](this,_0x5b66c4,_0x1b800e);return _0x2f7a36;}else if(_0x2f7a36[_0xcb66('0x9d')]===_0xcb66('0x62')){_0x2f7a36[_0xcb66('0xa0')]=_0x1b800e[_0xcb66('0x97')]>=parseInt(_0x5b66c4[_0xcb66('0x117')])?'x':'i';}else{_0x2f7a36[_0xcb66('0xa0')]=_0x1b800e['length']>=parseInt(_0x5b66c4['mindigit'])&&_0x1b800e[_0xcb66('0x97')]<=parseInt(_0x5b66c4[_0xcb66('0x118')])?'x':'i';}var _0x223781=this[_0xcb66('0x9c')][_0xcb66('0xa3')](this,_0x5b66c4[_0xcb66('0xdb')]);if(!_0x223781){return this[_0xcb66('0xd')]['error'](_0x5b66c4,'no\x20variable\x20found');}this[_0xcb66('0xd')][_0xcb66('0x9a')](_0x223781,_0x1b800e);if(this[_0xcb66('0x82')](_0x5b66c4[_0xcb66('0x119')])){var _0x6fdb45=parseInt(_0x5b66c4[_0xcb66('0x119')],0xa);var _0x23e190=rs['generate']({'charset':'*','length':_0x6fdb45});var _0x499e54=_0x1b800e[_0xcb66('0x97')];if(_0x499e54>0x0){if(_0x499e54>_0x6fdb45){this[_0xcb66('0x34')][_0xcb66('0xa3')](this,_0x5b66c4,_0x5b66c4[_0xcb66('0x11a')]==='first'?_0x23e190+_0x1b800e[_0xcb66('0x11b')](_0x6fdb45):_0x1b800e['substr'](0x0,_0x499e54-_0x6fdb45)+_0x23e190);}else{this[_0xcb66('0x34')][_0xcb66('0xa3')](this,_0x5b66c4,rs[_0xcb66('0x11c')]({'charset':'*','length':_0x499e54}));}}else{this[_0xcb66('0x34')][_0xcb66('0xa3')](this,_0x5b66c4,'');}}else{this[_0xcb66('0x34')]['sync'](this,_0x5b66c4,_0x1b800e);}return _0x2f7a36;};AGIVertices[_0xcb66('0x10')][_0xcb66('0xc')]=function(_0x103f37){logger[_0xcb66('0x2b')](util['format']('Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block',_0x103f37[_0xcb66('0xa7')]));return this[_0xcb66('0xb')](_0x103f37);};AGIVertices['prototype'][_0xcb66('0x11d')]=function(_0x6f8055){logger['info'](util['format'](_0xcb66('0x11e'),_0x6f8055[_0xcb66('0xa7')]));this['createSquareDetailsReport'][_0xcb66('0xa3')](this,_0x6f8055,_0x6f8055[_0xcb66('0x11f')]);return this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0x120'),_0x6f8055[_0xcb66('0x11f')]));};AGIVertices[_0xcb66('0x10')][_0xcb66('0x121')]=function(_0xad3910){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x122'),_0xad3910[_0xcb66('0xa7')]));if(!this[_0xcb66('0x82')](_0xad3910[_0xcb66('0x123')])||!this['isConfigured'](_0xad3910['aws_secret_access_key'])){return this['channel']['noop'](_0xcb66('0x124'));}if(!this[_0xcb66('0x82')](_0xad3910[_0xcb66('0x56')])){return this['channel'][_0xcb66('0xa8')](_0xcb66('0xc3'));}this[_0xcb66('0xd')][_0xcb66('0xa8')](util['format'](_0xcb66('0x125'),_0xad3910[_0xcb66('0x56')]));var _0x45eae5=this[_0xcb66('0x84')]['sync'](this,_0xad3910);if(_0x45eae5){this['channel'][_0xcb66('0xa8')](util['format'](_0xcb66('0x126'),_0x45eae5));var _0x454967=this[_0xcb66('0xd')]['streamFile'](_0x45eae5);try{fs[_0xcb66('0x105')](_0x45eae5+'.wav');}catch(_0x24832c){logger[_0xcb66('0x2f')](_0x24832c);}return _0x454967;}return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0xad3910,_0xcb66('0x127'));};AGIVertices[_0xcb66('0x10')][_0xcb66('0x128')]=function(_0x55e321){logger['info'](util[_0xcb66('0x27')](_0xcb66('0x129'),_0x55e321[_0xcb66('0xa7')]));if(!this['isConfigured'](_0x55e321[_0xcb66('0x123')])||!this[_0xcb66('0x82')](_0x55e321[_0xcb66('0x12a')])){return this[_0xcb66('0xd')][_0xcb66('0xa8')]('no\x20valid\x20credentials\x20configured');}if(!this['isConfigured'](_0x55e321['aws_bot_name'])){return this[_0xcb66('0xd')]['noop'](_0xcb66('0x12b'));}if(!this[_0xcb66('0x82')](_0x55e321[_0xcb66('0x56')])){return this[_0xcb66('0xd')][_0xcb66('0xa8')](_0xcb66('0xc3'));}this[_0xcb66('0xd')][_0xcb66('0xeb')]=!![];this[_0xcb66('0x34')](_0x55e321);this[_0xcb66('0x3e')](_0x55e321[_0xcb66('0x56')],'in','','');this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0x12c'),_0x55e321[_0xcb66('0x56')]));var _0x3a84b0=this[_0xcb66('0x87')][_0xcb66('0xa3')](this,_0x55e321);if(_0x3a84b0){for(var _0x30c2b9 in _0x3a84b0){if(_0x3a84b0[_0xcb66('0x90')](_0x30c2b9)&&_['isString'](_0x3a84b0[_0x30c2b9])){this['channel'][_0xcb66('0x9a')](util[_0xcb66('0x27')](_0xcb66('0x12d'),_0x30c2b9[_0xcb66('0x67')]()),_0x3a84b0[_0x30c2b9]);}}if(_[_0xcb66('0x44')](_0x3a84b0['message'])){return this[_0xcb66('0xd')][_0xcb66('0xa8')]('Amazon\x20Lex\x20ready\x20for\x20fulfillment');}else{this[_0xcb66('0x3e')](_0x3a84b0[_0xcb66('0x72')],_0xcb66('0xee'),_0xcb66('0x12e'),'');return this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0x12f'),_0x3a84b0[_0xcb66('0x72')]));}}return this['channel']['error'](_0x55e321,_0xcb66('0x130'));};AGIVertices['prototype'][_0xcb66('0x131')]=function(_0x234bf5){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x132'),_0x234bf5[_0xcb66('0xa7')],_0x234bf5[_0xcb66('0x62')]));if(!this[_0xcb66('0x82')](_0x234bf5[_0xcb66('0x7d')])){return this[_0xcb66('0xd')][_0xcb66('0xa8')]('no\x20key\x20configured');}var _0x187f4f=_0xcb66('0x133');var _0x466e59=util['format']('%s/recordings/%s',FILES_PATH,rs[_0xcb66('0x11c')](0x4));var _0x3b0713=util[_0xcb66('0x27')](_0xcb66('0x99'),_0x466e59,_0x187f4f);var _0x4237ba=!![];if(_0x234bf5[_0xcb66('0x134')]==='NOBEEP'){_0x4237ba=![];}var _0x11b5f2=this['channel']['recordFile'](_0x466e59,_0x187f4f,_0x234bf5[_0xcb66('0x135')],_0x234bf5[_0xcb66('0x62')],undefined,_0x4237ba);if(_0x11b5f2[_0xcb66('0xa0')]!==-0x1){this['channel'][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0x136'),_0x3b0713));var _0x30e5fb=this[_0xcb66('0x8a')][_0xcb66('0xa3')](this,_0x234bf5,_0x3b0713);if(_0x30e5fb){for(var _0x585aba in _0x30e5fb){if(_0x30e5fb[_0xcb66('0x90')](_0x585aba)){this[_0xcb66('0xd')][_0xcb66('0x9a')](util[_0xcb66('0x27')](_0xcb66('0x137'),_0x585aba[_0xcb66('0x67')]()),_0x30e5fb[_0x585aba]);}}return this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0x138'),JSON[_0xcb66('0x139')](_0x30e5fb)));}}return _0x11b5f2;};AGIVertices[_0xcb66('0x10')]['tildeasr']=function(_0x1cece0){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')]('Enter\x20in\x20TILDEASR\x20(%s)\x20block',_0x1cece0['label']));if(!this['isConfigured'](_0x1cece0[_0xcb66('0x8d')])){return this[_0xcb66('0xd')][_0xcb66('0xa8')](_0xcb66('0x13a'));}if(!this['isConfigured'](_0x1cece0[_0xcb66('0x8e')])){return this[_0xcb66('0xd')]['noop'](_0xcb66('0x13b'));}var _0x412515=_0xcb66('0x133');var _0x5e0001=util[_0xcb66('0x27')](_0xcb66('0x13c'),FILES_PATH,rs[_0xcb66('0x11c')](0x4));var _0x174aa6=util['format']('%s.%s',_0x5e0001,_0x412515);var _0x389aa3=!![];if(_0x1cece0[_0xcb66('0x134')]===_0xcb66('0x13d')){_0x389aa3=![];}var _0xcf8863=this[_0xcb66('0xd')][_0xcb66('0x13e')](_0x5e0001,_0x412515,_0x1cece0['intKey'],_0x1cece0[_0xcb66('0x62')],undefined,_0x389aa3);if(_0xcf8863[_0xcb66('0xa0')]!==-0x1){this['channel'][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0x13f'),_0x174aa6));var _0x17d2f2=this[_0xcb66('0x8c')][_0xcb66('0xa3')](this,_0x1cece0,_0x174aa6);if(_0x17d2f2){for(var _0x1aad4a in _0x17d2f2){if(_0x17d2f2[_0xcb66('0x90')](_0x1aad4a)){this[_0xcb66('0xd')]['setVariable'](util[_0xcb66('0x27')](_0xcb66('0x140'),_0x1aad4a['toUpperCase']()),_0x17d2f2[_0x1aad4a]);}}return this['channel'][_0xcb66('0xa8')](util[_0xcb66('0x27')]('TildeASR\x20Result\x20%s',JSON[_0xcb66('0x139')](_0x17d2f2)));}}return _0xcf8863;};AGIVertices[_0xcb66('0x10')][_0xcb66('0x141')]=function(_0x2d6b00){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x142'),_0x2d6b00[_0xcb66('0xa7')]));return this['channel'][_0xcb66('0x143')](_0x2d6b00[_0xcb66('0x3b')],_0x2d6b00['extension'],_0x2d6b00[_0xcb66('0x3c')]);};AGIVertices[_0xcb66('0x10')][_0xcb66('0x144')]=function(_0x2337c7){logger['info'](util[_0xcb66('0x27')]('Enter\x20in\x20GOTOIF\x20(%s)\x20block',_0x2337c7['label']));if(!this[_0xcb66('0x82')](_0x2337c7[_0xcb66('0x145')])){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x2337c7,_0xcb66('0x146'));}try{var _0x23b351=eval(_0x2337c7[_0xcb66('0x145')])?_0xcb66('0x147'):_0xcb66('0x148');this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0x149'),_0x2337c7[_0xcb66('0x145')],_0x23b351));return{'code':0xc8,'result':_0x23b351};}catch(_0x1b193d){return{'code':0xc8,'result':'false'};}};AGIVertices[_0xcb66('0x10')]['gotoiftime']=function(_0x157291){logger[_0xcb66('0x2b')](util['format']('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x157291[_0xcb66('0xa7')]));if(!this[_0xcb66('0x82')](_0x157291['interval_id'])){return this['channel'][_0xcb66('0x2f')](_0x157291,_0xcb66('0x14a'));}var _0x47a606=this[_0xcb66('0x21')][_0xcb66('0xa3')](this,_0x157291[_0xcb66('0x14b')]);if(!_0x47a606){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x157291,_0xcb66('0x14c'));}for(var _0x5d63e7=0x0;_0x5d63e7<_0x47a606[_0xcb66('0x97')];_0x5d63e7+=0x1){var _0x10d862=this['channel'][_0xcb66('0x9c')](util['format'](_0xcb66('0x14d'),_0x47a606[_0x5d63e7]));if(_0x10d862[_0xcb66('0xa0')]===-0x1){return _0x10d862;}logger[_0xcb66('0x2b')](util['format'](_0xcb66('0x14e'),_0x47a606[_0x5d63e7],_0x10d862[_0xcb66('0x9d')]));if(_0x10d862['extra']===_0xcb66('0x147')){logger[_0xcb66('0x2b')](util['format']('IFTIME\x20%s\x20%s',_0x47a606[_0x5d63e7],_0xcb66('0x147')));this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')]('IFTIME\x20%s\x20%s',_0x47a606[_0x5d63e7],_0xcb66('0x147')));return{'code':0xc8,'result':_0xcb66('0x147')};}else{logger['info'](util[_0xcb66('0x27')](_0xcb66('0x14e'),_0x47a606[_0x5d63e7],'false'));this[_0xcb66('0xd')][_0xcb66('0xa8')](util['format'](_0xcb66('0x14e'),_0x47a606[_0x5d63e7],_0xcb66('0x148')));}}return{'code':0xc8,'result':_0xcb66('0x148')};};AGIVertices[_0xcb66('0x10')]['hangup']=function(_0x105003){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x14f'),_0x105003['label']));return this[_0xcb66('0xd')]['hangup']();};AGIVertices[_0xcb66('0x10')]['ispeechasr']=function(_0xca430e){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x150'),_0xca430e[_0xcb66('0xa7')]));if(!this[_0xcb66('0x82')](_0xca430e[_0xcb66('0x7d')])){return this[_0xcb66('0xd')][_0xcb66('0xa8')](_0xcb66('0xea'));}var _0x18700b=_0xcb66('0x133');var _0x1ced4f=util['format'](_0xcb66('0x13c'),FILES_PATH,rs[_0xcb66('0x11c')](0x4));var _0xee9a3e=util[_0xcb66('0x27')]('%s.%s',_0x1ced4f,_0x18700b);var _0x268f8f=!![];if(_0xca430e['beep']===_0xcb66('0x13d')){_0x268f8f=![];}var _0x57b01c=this['channel'][_0xcb66('0x13e')](_0x1ced4f,_0x18700b,_0xca430e['intKey'],_0xca430e['timeout'],undefined,_0x268f8f);if(_0x57b01c['result']!==-0x1){this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')]('ispeech\x20%s\x20file\x20created',_0xee9a3e));var _0x1c410b=this[_0xcb66('0x80')]['sync'](this,_0xca430e,_0xee9a3e);if(_0x1c410b){for(var _0x7a9324 in _0x1c410b){if(_0x1c410b['hasOwnProperty'](_0x7a9324)){this[_0xcb66('0xd')][_0xcb66('0x9a')](util[_0xcb66('0x27')](_0xcb66('0x151'),_0x7a9324['toUpperCase']()),_0x1c410b[_0x7a9324]);}}return this['channel']['noop'](util[_0xcb66('0x27')](_0xcb66('0x152'),JSON[_0xcb66('0x139')](_0x1c410b)));}}return _0x57b01c;};AGIVertices[_0xcb66('0x10')][_0xcb66('0x153')]=function(_0x5ec6d1){logger['info'](util[_0xcb66('0x27')](_0xcb66('0x154'),_0x5ec6d1[_0xcb66('0xa7')]));if(!this['isConfigured'](_0x5ec6d1[_0xcb66('0x7d')])){return this[_0xcb66('0xd')]['noop'](_0xcb66('0xea'));}if(!this[_0xcb66('0x82')](_0x5ec6d1['text'])){return this[_0xcb66('0xd')][_0xcb66('0xa8')]('no\x20text\x20configured');}this['channel']['noop'](util[_0xcb66('0x27')]('Trying\x20ispeech\x20TTS\x20%s',_0x5ec6d1['text']));var _0x564444=this[_0xcb66('0x7c')][_0xcb66('0xa3')](this,_0x5ec6d1);if(_0x564444){this[_0xcb66('0xd')][_0xcb66('0xa8')](util['format'](_0xcb66('0x155'),_0x564444));var _0x385416=this[_0xcb66('0xd')][_0xcb66('0x104')](_0x564444,_0x5ec6d1['intKey']);try{fs[_0xcb66('0x105')](_0x564444+'.wav');}catch(_0x5787b4){logger[_0xcb66('0x2f')](_0x5787b4);}return _0x385416;}return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x5ec6d1,_0xcb66('0x156'));};AGIVertices[_0xcb66('0x10')]['login']=function(_0x1795ad){logger[_0xcb66('0x2b')](util['format'](_0xcb66('0x157'),_0x1795ad[_0xcb66('0xa7')]));if(!this[_0xcb66('0x82')](_0x1795ad[_0xcb66('0x158')])){return this['channel'][_0xcb66('0x2f')](_0x1795ad,_0xcb66('0x159'));}logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x15a'),this[_0xcb66('0xd')][_0xcb66('0x37')],_0x1795ad[_0xcb66('0x158')]));var _0x567f05=this['agentLogin']['sync'](this,_0x1795ad['findBy']);if(_0x567f05){logger[_0xcb66('0x2b')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0xcb66('0xd')][_0xcb66('0x37')],_0x1795ad[_0xcb66('0x158')]));this['channel'][_0xcb66('0xa8')](util[_0xcb66('0x27')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0xcb66('0x37')],_0x1795ad[_0xcb66('0x158')]));return{'code':0xc8,'result':'success'};}else{logger[_0xcb66('0x2b')](util[_0xcb66('0x27')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xcb66('0xd')][_0xcb66('0x37')],_0x1795ad[_0xcb66('0x158')]));this[_0xcb66('0xd')]['noop'](util[_0xcb66('0x27')](_0xcb66('0x15b'),this['channel']['callerid'],_0x1795ad['findBy']));return{'code':0xc8,'result':_0xcb66('0x15c')};}};AGIVertices[_0xcb66('0x10')]['logout']=function(_0x3a953f){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')]('Enter\x20in\x20LOGOUT\x20(%s)\x20block',_0x3a953f[_0xcb66('0xa7')]));if(!this['isConfigured'](_0x3a953f[_0xcb66('0x158')])){return this[_0xcb66('0xd')]['error'](_0x3a953f,_0xcb66('0x159'));}logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x15a'),this[_0xcb66('0xd')]['callerid'],_0x3a953f[_0xcb66('0x158')]));var _0x59b15f=this[_0xcb66('0x4e')]['sync'](this,_0x3a953f[_0xcb66('0x158')]);if(_0x59b15f){logger['info'](util[_0xcb66('0x27')](_0xcb66('0x15d'),this[_0xcb66('0xd')][_0xcb66('0x37')],_0x3a953f[_0xcb66('0x158')]));this[_0xcb66('0xd')][_0xcb66('0xa8')](util['format'](_0xcb66('0x15d'),this['channel'][_0xcb66('0x37')],_0x3a953f[_0xcb66('0x158')]));return{'code':0xc8,'result':_0xcb66('0x15e')};}else{logger[_0xcb66('0x2b')](util[_0xcb66('0x27')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xcb66('0xd')][_0xcb66('0x37')],_0x3a953f[_0xcb66('0x158')]));this[_0xcb66('0xd')]['noop'](util[_0xcb66('0x27')](_0xcb66('0x15b'),this[_0xcb66('0xd')]['callerid'],_0x3a953f[_0xcb66('0x158')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xcb66('0x10')][_0xcb66('0x15f')]=function(_0x5e6914){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x160'),_0x5e6914['label']));if(!this[_0xcb66('0x82')](_0x5e6914[_0xcb66('0x161')])){return this[_0xcb66('0xd')]['error'](_0x5e6914,_0xcb66('0x162'));}this['channel'][_0xcb66('0xa8')](util['format'](_0xcb66('0x163'),_0x5e6914[_0xcb66('0x161')]));var _0x217ddf=eval(_0x5e6914[_0xcb66('0x161')]);if(!this['isConfigured'](_0x5e6914[_0xcb66('0xdb')])){return this[_0xcb66('0xd')][_0xcb66('0xa8')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x2176f7=this['getVariable'][_0xcb66('0xa3')](this,_0x5e6914[_0xcb66('0xdb')]);if(!_0x2176f7){return this['channel'][_0xcb66('0x2f')](_0x5e6914,'no\x20variable\x20found');}if(_[_0xcb66('0x96')](_0x217ddf)){var _0x20cad2=this;_0x217ddf['forEach'](function(_0x1f316a,_0x3e29c5){_0x20cad2['channel'][_0xcb66('0x9a')](util[_0xcb66('0x27')](_0xcb66('0x164'),_0x2176f7,_0x3e29c5),_0x1f316a);});return this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')]('variable\x20%s[key]\x20set',_0x2176f7));}else{return this['channel']['setVariable'](_0x2176f7,_0x217ddf);}};AGIVertices[_0xcb66('0x10')][_0xcb66('0xa')]=function(_0x458b45){logger[_0xcb66('0x2b')](util['format'](_0xcb66('0x165'),_0x458b45[_0xcb66('0xa7')]));if(_0x458b45[_0xcb66('0xa4')]===0x0){return this[_0xcb66('0xa2')](_0x458b45);}_0x458b45[_0xcb66('0xa4')]-=0x1;if(!this[_0xcb66('0x82')](_0x458b45['file_id'])){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x458b45,_0xcb66('0x113'));}var _0x41c507=this[_0xcb66('0x1b')][_0xcb66('0xa3')](this,_0x458b45[_0xcb66('0x112')]);if(!_0x41c507){return this['channel']['error'](_0x458b45,_0xcb66('0x114'));}var _0x16448e=this[_0xcb66('0xd')]['getData'](_0x41c507,_0x458b45['response'],_0x458b45[_0xcb66('0x166')]);var _0x1c712d=_0x16448e['result'];if(_0x16448e[_0xcb66('0xa0')]===-0x1){this[_0xcb66('0x34')]['sync'](this,_0x458b45,'-1');return _0x16448e;}else if(_0x16448e[_0xcb66('0x9d')]===_0xcb66('0x62')){_0x16448e[_0xcb66('0xa0')]=_0x16448e['result'][_0xcb66('0x97')]>0x0?_0x16448e['result']:'t';}else if(_[_0xcb66('0x40')](_0x16448e[_0xcb66('0xa0')])){_0x16448e[_0xcb66('0xa0')]='#';_0x1c712d='#';}if(!this['isConfigured'](_0x458b45[_0xcb66('0xdb')])){this[_0xcb66('0xd')][_0xcb66('0xa8')]('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x7443df=this[_0xcb66('0x9c')]['sync'](this,_0x458b45[_0xcb66('0xdb')]);if(!_0x7443df){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x458b45,_0xcb66('0x167'));}this['channel']['setVariable'](_0x7443df,_0x1c712d);}this[_0xcb66('0x34')]['sync'](this,_0x458b45,_0x1c712d);return _0x16448e;};AGIVertices[_0xcb66('0x10')]['noop']=function(_0x52ad64){logger['info'](util['format'](_0xcb66('0x168'),_0x52ad64[_0xcb66('0xa7')]));return this[_0xcb66('0xd')][_0xcb66('0xa8')](_0x52ad64['output']||_0x52ad64[_0xcb66('0xa7')]);};AGIVertices[_0xcb66('0x10')]['pause']=function(_0x45a22d){logger['info'](util[_0xcb66('0x27')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x45a22d[_0xcb66('0xa7')]));if(!this['isConfigured'](_0x45a22d[_0xcb66('0x158')])){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x45a22d,_0xcb66('0x159'));}logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x15a'),this[_0xcb66('0xd')]['callerid'],_0x45a22d[_0xcb66('0x158')]));var _0x13d034=this[_0xcb66('0x169')][_0xcb66('0xa3')](this,_0x45a22d['pause_id']);var _0x13bfcd=this['agentPause'][_0xcb66('0xa3')](this,_0x45a22d[_0xcb66('0x158')],_0x13d034);if(_0x13bfcd){logger['info'](util[_0xcb66('0x27')](_0xcb66('0x15d'),this[_0xcb66('0xd')][_0xcb66('0x37')],_0x45a22d['findBy']));this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0x15d'),this[_0xcb66('0xd')][_0xcb66('0x37')],_0x45a22d[_0xcb66('0x158')]));return{'code':0xc8,'result':'success'};}else{logger[_0xcb66('0x2b')](util['format'](_0xcb66('0x15b'),this['channel'][_0xcb66('0x37')],_0x45a22d['findBy']));this[_0xcb66('0xd')][_0xcb66('0xa8')](util['format'](_0xcb66('0x15d'),this[_0xcb66('0xd')][_0xcb66('0x37')],_0x45a22d['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype'][_0xcb66('0x16a')]=function(_0x3bd915){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x16b'),_0x3bd915[_0xcb66('0xa7')]));if(!this[_0xcb66('0x82')](_0x3bd915[_0xcb66('0x112')])){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x3bd915,'no\x20file\x20audio\x20selected');}var _0x1f8b45=this[_0xcb66('0x1b')][_0xcb66('0xa3')](this,_0x3bd915[_0xcb66('0x112')]);if(!_0x1f8b45){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x3bd915,'no\x20file\x20audio\x20found');}var _0x38c268=this['channel']['exec'](_0xcb66('0x16c'),[_0x1f8b45,_0x3bd915[_0xcb66('0x110')]]);if(_0x38c268[_0xcb66('0xa0')]===-0x1){return _0x38c268;}return this['channel'][_0xcb66('0xa8')](util['format']('Executed\x20command\x20%s\x20%s','PLAYBACK',_0x1f8b45));};AGIVertices[_0xcb66('0x10')][_0xcb66('0x16d')]=function(_0x5b9252){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x16e'),_0x5b9252['label']));if(!this[_0xcb66('0x82')](_0x5b9252[_0xcb66('0x16f')])){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x5b9252,_0xcb66('0x170'));}var _0x2cd34b='';var _0x500d77=parseInt(_0x5b9252['queue_id'],0xa);if(isNaN(_0x500d77)){_0x2cd34b=_0x5b9252['queue_id'];}else{_0x2cd34b=this[_0xcb66('0x14')][_0xcb66('0xa3')](this,_0x5b9252['queue_id']);if(!_0x2cd34b){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x5b9252,_0xcb66('0x171'));}}var _0xe9da2='';if(this['isConfigured'](_0x5b9252['file_id'])){var _0x2d908e=this['getSound'][_0xcb66('0xa3')](this,_0x5b9252[_0xcb66('0x112')]);if(_0x2d908e){_0xe9da2=_0x2d908e;}}this['createSquareDetailsReport'][_0xcb66('0xa3')](this,_0x5b9252,_0x2cd34b);if(_0x5b9252[_0xcb66('0x110')][_0xcb66('0x172')]('x')<0x0){_0x5b9252[_0xcb66('0x110')]+='x';}if(_0x5b9252[_0xcb66('0x110')]['indexOf']('X')<0x0){_0x5b9252[_0xcb66('0x110')]+='X';}this[_0xcb66('0xd')][_0xcb66('0x9a')](_0xcb66('0x173'),_0x2cd34b?_0x2cd34b['toLowerCase']():'');var _0x519c78=this[_0xcb66('0xd')][_0xcb66('0x52')](_0xcb66('0x174'),[_0x2cd34b,_0x5b9252['opts'],_0x5b9252[_0xcb66('0x60')],_0xe9da2,_0x5b9252['timeout'],_0x5b9252[_0xcb66('0x6')],_0x5b9252['macro'],_0x5b9252['gosub'],'',_0x5b9252[_0xcb66('0x175')]]);if(_0x519c78['result']===-0x1){return _0x519c78;}return this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')]('Executed\x20command\x20%s\x20%s',_0xcb66('0x174'),_0x2cd34b));};AGIVertices[_0xcb66('0x10')][_0xcb66('0x176')]=function(_0x292033){logger[_0xcb66('0x2b')](util['format'](_0xcb66('0x177'),_0x292033[_0xcb66('0xa7')]));var _0x19bfeb=_0x292033['recordingFormat']||'wav';var _0x29d222=util[_0xcb66('0x27')](_0xcb66('0x178'),this[_0xcb66('0xd')][_0xcb66('0x39')],rs[_0xcb66('0x11c')](0x5));var _0x373155=util['format'](_0xcb66('0x179'),FILES_PATH,_0x29d222,_0x19bfeb);var _0x2921de=util[_0xcb66('0x27')](_0xcb66('0x13c'),FILES_PATH,_0x29d222);this[_0xcb66('0x38')][_0xcb66('0xa3')](this,_0x292033,_0x29d222,_0x373155);this[_0xcb66('0xd')][_0xcb66('0x9a')](_0xcb66('0x17a'),_0x29d222);logger[_0xcb66('0x2b')](_0xcb66('0x17b'),_0x2921de,_0x19bfeb,_0x292033[_0xcb66('0x17c')],_0x292033['timeout']);return this[_0xcb66('0xd')][_0xcb66('0x13e')](_0x2921de,_0x19bfeb,_0x292033[_0xcb66('0x17c')],_0x292033[_0xcb66('0x62')],undefined,!![]);};AGIVertices['prototype'][_0xcb66('0x17d')]=function(_0x2fd975){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x17e'),_0x2fd975[_0xcb66('0xa7')]));if(!this['isConfigured'](_0x2fd975[_0xcb66('0x60')])){return this[_0xcb66('0xd')][_0xcb66('0xa8')](_0xcb66('0x17f'));}var _0x2dd920=this[_0xcb66('0x5f')][_0xcb66('0xa3')](this,_0x2fd975);logger[_0xcb66('0x2b')](util['format']('Response:',util[_0xcb66('0x180')](_0x2dd920,{'showHidden':![],'depth':null})));if(!this['isConfigured'](_0x2fd975['variable_id'])){return this['channel'][_0xcb66('0xa8')](_0xcb66('0x181'));}var _0x4508d1=this[_0xcb66('0x9c')][_0xcb66('0xa3')](this,_0x2fd975['variable_id']);if(!_0x4508d1){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x2fd975,_0xcb66('0x167'));}this[_0xcb66('0xd')][_0xcb66('0x9a')](util[_0xcb66('0x27')](_0xcb66('0x182'),_0x4508d1),_0x2dd920['statusCode']?_0x2dd920[_0xcb66('0x71')]:_0xcb66('0x183'));this['channel'][_0xcb66('0x9a')](util[_0xcb66('0x27')](_0xcb66('0x184'),_0x4508d1),_0x2dd920[_0xcb66('0x70')]?_0x2dd920[_0xcb66('0x70')]:'OK');if(_0x2dd920[_0xcb66('0x68')]){try{this['saveRestApiResult'](_0x2dd920[_0xcb66('0x68')],_0x4508d1);}catch(_0x1381d8){logger[_0xcb66('0x2f')](util[_0xcb66('0x27')](_0xcb66('0x185'),_0x4508d1));}}return this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0xe0'),_0x4508d1));};AGIVertices[_0xcb66('0x10')][_0xcb66('0x186')]=function(_0x1f7253){logger['info'](util[_0xcb66('0x27')](_0xcb66('0x187'),_0x1f7253[_0xcb66('0xa7')]));return this[_0xcb66('0xd')][_0xcb66('0x188')](_0x1f7253[_0xcb66('0x189')][_0xcb66('0xd9')](/\s+/g,''),_0x1f7253[_0xcb66('0x17c')]);};AGIVertices[_0xcb66('0x10')]['saynumber']=function(_0x440587){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x18a'),_0x440587[_0xcb66('0xa7')]));return this[_0xcb66('0xd')][_0xcb66('0x18b')](_0x440587[_0xcb66('0x63')]['replace'](/\s+/g,''),_0x440587['escape_digits']);};AGIVertices[_0xcb66('0x10')][_0xcb66('0x18c')]=function(_0x4cac68){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x18d'),_0x4cac68[_0xcb66('0xa7')]));return this[_0xcb66('0xd')][_0xcb66('0x18e')](_0x4cac68[_0xcb66('0x56')],_0x4cac68[_0xcb66('0x17c')]);};AGIVertices[_0xcb66('0x10')]['sendMail']=function(_0x837cae){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x18f'),_0x837cae[_0xcb66('0xa7')]));if(!this['isConfigured'](_0x837cae[_0xcb66('0x190')])){return this[_0xcb66('0xd')]['noop']('no\x20mail\x20account\x20configured');}var _0x3bae4b=this[_0xcb66('0x191')][_0xcb66('0xa3')](this,_0x837cae[_0xcb66('0x190')]);if(!_0x3bae4b||!_0x3bae4b['Smtp']){return this['channel']['error'](_0x837cae,_0xcb66('0x192'));}var _0x1b1e9e={'from':util[_0xcb66('0x27')]('\x22%s\x22\x20<%s>',_0x3bae4b[_0xcb66('0x12')],_0x3bae4b['email']||_0x3bae4b[_0xcb66('0x193')]['user']),'to':_0x837cae['to']||'','cc':_0x837cae['cc']||'','bcc':_0x837cae[_0xcb66('0x194')]||'','subject':_0x837cae[_0xcb66('0x195')],'html':_0x837cae[_0xcb66('0x56')],'text':_0x837cae['text']};if(this['isConfigured'](_0x837cae[_0xcb66('0x196')])){}logger[_0xcb66('0xe1')]('sendMail\x20message',JSON[_0xcb66('0x139')](_0x1b1e9e));this[_0xcb66('0x34')][_0xcb66('0xa3')](this,_0x837cae,_0x837cae[_0xcb66('0x190')]);this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')]('Trying\x20SendMail\x20with\x20account\x20%s',_0x3bae4b[_0xcb66('0x12')]));this[_0xcb66('0x20')][_0xcb66('0xa3')](this,_0x3bae4b[_0xcb66('0x197')],_0x1b1e9e);return this['channel'][_0xcb66('0xa8')](_0xcb66('0x198'));};AGIVertices['prototype']['sendFax']=function(_0x54242d){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')]('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x54242d[_0xcb66('0xa7')]));return this[_0xcb66('0xd')][_0xcb66('0xa8')](_0xcb66('0x199'));};AGIVertices[_0xcb66('0x10')]['sendSMS']=function(_0x33c25d){logger['info'](util['format'](_0xcb66('0x19a'),_0x33c25d['label']));if(!this[_0xcb66('0x82')](_0x33c25d['sms_account_id'])){return this[_0xcb66('0xd')][_0xcb66('0xa8')]('no\x20sms\x20account\x20configured');}var _0x471701=this[_0xcb66('0x31')][_0xcb66('0xa3')](this,_0x33c25d['sms_account_id']);if(!_0x471701){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x33c25d,_0xcb66('0x19b'));}var _0x5c13db={'body':_0x33c25d[_0xcb66('0x19c')],'phone':_0x33c25d['to']||'','SmsAccountId':_0x471701['id']};logger['debug'](_0xcb66('0x19d'),JSON['stringify'](_0x5c13db));this[_0xcb66('0x34')]['sync'](this,_0x33c25d,_0x33c25d[_0xcb66('0x19e')]);this['channel']['noop'](util[_0xcb66('0x27')](_0xcb66('0x19f'),_0x471701[_0xcb66('0x12')]));this[_0xcb66('0x33')][_0xcb66('0xa3')](this,_0x5c13db);return this[_0xcb66('0xd')]['noop'](_0xcb66('0x1a0'));};AGIVertices[_0xcb66('0x10')][_0xcb66('0x1a1')]=function(_0x107f0e){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x1a2'),_0x107f0e[_0xcb66('0xa7')]));if(!this[_0xcb66('0x82')](_0x107f0e[_0xcb66('0xdb')])){return this[_0xcb66('0xd')]['error'](_0x107f0e,_0xcb66('0x1a3'));}var _0x42f949=this['getVariable']['sync'](this,_0x107f0e[_0xcb66('0xdb')]);if(!_0x42f949){return this['channel'][_0xcb66('0x2f')](_0x107f0e,_0xcb66('0x167'));}return this['channel'][_0xcb66('0x9a')](_0x42f949,_0x107f0e[_0xcb66('0x1a4')]);};AGIVertices['prototype'][_0xcb66('0x1a5')]=function(_0xbb8975){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x1a6'),_0xbb8975[_0xcb66('0xa7')]));this[_0xcb66('0xd')]['noop']('START\x20CALLY\x20SQUARE');var _0x215f2f=this[_0xcb66('0xd')][_0xcb66('0x9c')](_0xcb66('0x1a7'));if(!_['isEmpty'](_0x215f2f[_0xcb66('0x9d')])){this[_0xcb66('0xd')][_0xcb66('0x39')]=_0x215f2f['extra'];}if(_0xbb8975[_0xcb66('0xb6')]===_0xcb66('0x1a8')){this[_0xcb66('0xd')]['noop']('Answer');return this[_0xcb66('0xd')]['answer']();}return this['channel']['noop'](_0xcb66('0x1a9'));};AGIVertices[_0xcb66('0x10')][_0xcb66('0x1aa')]=function(_0x57a726){logger['info'](util['format']('Enter\x20in\x20SUBPROJECT\x20(%s)\x20block',_0x57a726[_0xcb66('0xa7')]));if(!this[_0xcb66('0x82')](_0x57a726['project_id'])){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x57a726,_0xcb66('0x1ab'));}var _0x470652=this[_0xcb66('0x1ac')]['sync'](this,_0x57a726['project_id']);if(!this[_0xcb66('0x82')](_0x470652)){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x57a726,util[_0xcb66('0x27')](_0xcb66('0x1ad'),_0x57a726[_0xcb66('0x1ae')]));}if(_0x470652===this[_0xcb66('0xd')]['arg_1']){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x57a726,_0xcb66('0x1af'));}this[_0xcb66('0x34')][_0xcb66('0xa3')](this,_0x57a726,_0x470652);var _0x68d3b9=this[_0xcb66('0xd')][_0xcb66('0x52')](_0xcb66('0x1b0'),util['format']('agi://%s/square,\x22%s\x22,\x22%s\x22',config[_0xcb66('0x6')][_0xcb66('0x1b1')]||'127.0.0.1',_0x470652,this['channel'][_0xcb66('0x36')]));if(_0x68d3b9[_0xcb66('0xa0')]===-0x1){return _0x68d3b9;}return this[_0xcb66('0xd')]['noop'](util['format']('Executed\x20command\x20%s\x20%s',_0xcb66('0x1b0'),_0x470652));};AGIVertices[_0xcb66('0x10')][_0xcb66('0x1b2')]=function(_0x518845){logger['info'](util[_0xcb66('0x27')]('Enter\x20in\x20SYSTEM\x20(%s)\x20block',_0x518845[_0xcb66('0xa7')]));var _0x1a3145=this[_0xcb66('0x1b3')][_0xcb66('0xa3')](this,_0x518845[_0xcb66('0xb4')]);this[_0xcb66('0x34')][_0xcb66('0xa3')](this,_0x518845,_0x518845['command']);if(this['isConfigured'](_0x518845[_0xcb66('0xdb')])){var _0x580ab3=this[_0xcb66('0x9c')][_0xcb66('0xa3')](this,_0x518845[_0xcb66('0xdb')]);if(_0x580ab3){this[_0xcb66('0xd')]['setVariable'](_0x580ab3,_0x1a3145);return this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0x1b4'),_0x518845[_0xcb66('0xb4')],_0x580ab3));}}return this['channel'][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0x1b5'),_0x518845['command']));};AGIVertices[_0xcb66('0x10')][_0xcb66('0x1b6')]=function(_0x1365fb){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x1b7'),_0x1365fb['label']));_0x1365fb[_0xcb66('0x56')]=_0x1365fb[_0xcb66('0x56')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xcb66('0x82')](_0x1365fb[_0xcb66('0x55')])){return this[_0xcb66('0xd')][_0xcb66('0xa8')](_0xcb66('0x1b8'));}if(!this['isConfigured'](_0x1365fb['text'])){return this[_0xcb66('0xd')][_0xcb66('0xa8')](_0xcb66('0xc3'));}this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0x1b9'),_0x1365fb['text']));var _0x1a418a=this[_0xcb66('0x54')][_0xcb66('0xa3')](this,_0x1365fb);if(_0x1a418a){this[_0xcb66('0xd')][_0xcb66('0xa8')](util['format'](_0xcb66('0x1ba'),_0x1a418a));var _0x3a7c30=this['channel']['streamFile'](_0x1a418a);try{fs[_0xcb66('0x105')](_0x1a418a+_0xcb66('0x106'));}catch(_0x280225){logger['error'](_0x280225);}return _0x3a7c30;}return this[_0xcb66('0xd')]['error'](_0x1365fb,_0xcb66('0x1bb'));};AGIVertices[_0xcb66('0x10')]['tts']=function(_0x509679){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')]('Enter\x20in\x20GOOGLETTS\x20(%s)\x20block',_0x509679['label']));_0x509679[_0xcb66('0x56')]=_0x509679[_0xcb66('0x56')][_0xcb66('0xd9')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xcb66('0x82')](_0x509679[_0xcb66('0x56')])){return this[_0xcb66('0xd')]['noop'](_0xcb66('0xc3'));}this[_0xcb66('0xd')]['noop'](util[_0xcb66('0x27')](_0xcb66('0x1bc'),_0x509679[_0xcb66('0x56')]));var _0x8568c6=this['googleTTS'][_0xcb66('0xa3')](this,_0x509679);if(_0x8568c6){this['channel'][_0xcb66('0xa8')](util[_0xcb66('0x27')]('Google\x20TTS\x20%s\x20file\x20created',_0x8568c6));var _0x2f0935=this['channel'][_0xcb66('0x104')](_0x8568c6);try{fs[_0xcb66('0x105')](_0x8568c6+_0xcb66('0x106'));}catch(_0x357702){logger[_0xcb66('0x2f')](_0x357702);}return _0x2f0935;}return this[_0xcb66('0xd')]['error'](_0x509679,_0xcb66('0x1bd'));};AGIVertices['prototype'][_0xcb66('0x1be')]=function(_0x42ef7f){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x1bf'),_0x42ef7f[_0xcb66('0xa7')]));if(!this['isConfigured'](_0x42ef7f['findBy'])){return this['channel']['error'](_0x42ef7f,_0xcb66('0x159'));}logger['info'](util['format'](_0xcb66('0x15a'),this[_0xcb66('0xd')]['callerid'],_0x42ef7f[_0xcb66('0x158')]));var _0x270d26=this[_0xcb66('0x4d')][_0xcb66('0xa3')](this,_0x42ef7f[_0xcb66('0x158')]);if(_0x270d26){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x15d'),this[_0xcb66('0xd')][_0xcb66('0x37')],_0x42ef7f[_0xcb66('0x158')]));this[_0xcb66('0xd')]['noop'](util[_0xcb66('0x27')](_0xcb66('0x15d'),this[_0xcb66('0xd')][_0xcb66('0x37')],_0x42ef7f[_0xcb66('0x158')]));return{'code':0xc8,'result':_0xcb66('0x15e')};}else{logger['info'](util[_0xcb66('0x27')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xcb66('0xd')]['callerid'],_0x42ef7f['findBy']));this[_0xcb66('0xd')][_0xcb66('0xa8')](util[_0xcb66('0x27')](_0xcb66('0x15b'),this[_0xcb66('0xd')][_0xcb66('0x37')],_0x42ef7f[_0xcb66('0x158')]));return{'code':0xc8,'result':_0xcb66('0x15c')};}};AGIVertices[_0xcb66('0x10')][_0xcb66('0x1c0')]=function(_0x339ec6){logger['info'](util[_0xcb66('0x27')]('Enter\x20in\x20VOICEMAIL\x20(%s)\x20block',_0x339ec6[_0xcb66('0xa7')]));var _0x4c4438=this['channel'][_0xcb66('0x52')](_0xcb66('0x1c1'),[_0x339ec6[_0xcb66('0x1c2')],_0x339ec6[_0xcb66('0x74')]]);if(_0x4c4438['result']===-0x1){return _0x4c4438;}return this[_0xcb66('0xd')]['noop'](util['format']('Executed\x20command\x20%s\x20%s','VOICEMAIL',_0x339ec6[_0xcb66('0x1c2')]));};AGIVertices[_0xcb66('0x10')]['vswitch']=function(_0x2a62e7){logger[_0xcb66('0x2b')](util[_0xcb66('0x27')](_0xcb66('0x1c3'),_0x2a62e7[_0xcb66('0xa7')]));if(!this[_0xcb66('0x82')](_0x2a62e7[_0xcb66('0xdb')])){return this[_0xcb66('0xd')][_0xcb66('0x2f')](_0x2a62e7,_0xcb66('0x1a3'));}var _0x43f532=this['getVariable'][_0xcb66('0xa3')](this,_0x2a62e7[_0xcb66('0xdb')]);if(!_0x43f532){return this['channel'][_0xcb66('0x2f')](_0x2a62e7,'no\x20variable\x20found');}var _0x4d49b4=this[_0xcb66('0xd')][_0xcb66('0x9c')](_0x43f532);return{'code':0xc8,'result':_0x4d49b4[_0xcb66('0x9d')]?_0x4d49b4[_0xcb66('0x9d')]:'-'};};String[_0xcb66('0x10')]['replaceAll']=function(_0x466dea,_0x14245e){return this[_0xcb66('0x9b')](_0x466dea)['join'](_0x14245e);};module['exports']=AGIVertices;
\ No newline at end of file
index 65ad1cc..f13f212 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1c=['hanguprequest','syncHangupRequest','hangup','syncHangup','agentringnoanswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','syncAgentConnectPreview','milliseconds','seconds','prototype','updateAcw','lastPauseAt','timer','uniqueid','then','info','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','finally','startAcw','channels','interface','queue','mandatoryDisposition','mandatoryDispositionPause','name','getAgent','voicePause','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','format','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','update','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','stringify','acw','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','autopause','all','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','../rpc/voiceAgentReport','voiceQueues','agents','timers','agentconnect','syncAgentConnect','bind'];(function(_0x336ca2,_0x1a813a){var _0xda59a6=function(_0x47caa6){while(--_0x47caa6){_0x336ca2['push'](_0x336ca2['shift']());}};_0xda59a6(++_0x1a813a);}(_0xed1c,0xe4));var _0xced1=function(_0x22af22,_0x5b5c55){_0x22af22=_0x22af22-0x0;var _0x4c94b8=_0xed1c[_0x22af22];return _0x4c94b8;};'use strict';var _=require(_0xced1('0x0'));var moment=require(_0xced1('0x1'));var ami=require('../ami');var logger=require('../../../config/logger')('acw');var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0xced1('0x2'));function Acw(_0x329a0a){this[_0xced1('0x3')]=_0x329a0a['voiceQueues'];this[_0xced1('0x4')]=_0x329a0a[_0xced1('0x4')];this[_0xced1('0x5')]=_0x329a0a[_0xced1('0x5')];this['channels']={};ami['on'](_0xced1('0x6'),this[_0xced1('0x7')][_0xced1('0x8')](this));ami['on'](_0xced1('0x9'),this[_0xced1('0xa')][_0xced1('0x8')](this));ami['on'](_0xced1('0xb'),this[_0xced1('0xc')]['bind'](this));ami['on'](_0xced1('0xd'),this['syncAgentRingNoAnswer'][_0xced1('0x8')](this));ami['on'](_0xced1('0xe'),this[_0xced1('0xf')][_0xced1('0x8')](this));ami['on'](_0xced1('0x10'),this[_0xced1('0x11')][_0xced1('0x8')](this));ami['on']('custom:agentConnectPreview',this[_0xced1('0x12')][_0xced1('0x8')](this));}function getDiff(_0x1b7a33){var _0x52d96a=moment()['milliseconds'](0x0);var _0xdaaea7=moment(_0x1b7a33)[_0xced1('0x13')](0x0);return _0x52d96a['diff'](_0xdaaea7,_0xced1('0x14'));}Acw[_0xced1('0x15')][_0xced1('0x16')]=function(_0x32100b,_0x47baec){var _0x5560af=this;var _0x3eb3ac=getDiff(_0x5560af[_0xced1('0x5')][_0x32100b][_0xced1('0x17')]);clearTimeout(_0x5560af[_0xced1('0x5')][_0x32100b][_0xced1('0x18')]);_0x5560af[_0xced1('0x5')][_0x32100b]['timer']=![];return RpcVoiceAgentReport['update']({'acwtime':_0x3eb3ac},_0x5560af[_0xced1('0x5')][_0x32100b][_0xced1('0x19')],_0x32100b)[_0xced1('0x1a')](function(_0x5257e7){logger[_0xced1('0x1b')](_0xced1('0x1c'),_0x47baec,_0x3eb3ac,_0x5257e7);})[_0xced1('0x1d')](function(_0x4eed16){logger[_0xced1('0x1e')](_0xced1('0x1f'),_0x47baec,_0x4eed16);})[_0xced1('0x20')](function(){delete _0x5560af['timers'][_0x32100b];});};Acw[_0xced1('0x15')][_0xced1('0x21')]=function(_0xc1bd39){try{var _0x5f1474=this;var _0x4dab56=this[_0xced1('0x22')][_0xc1bd39][_0xced1('0x23')];var _0x2a6248=this[_0xced1('0x22')][_0xc1bd39][_0xced1('0x24')];var _0x49c8b9=this[_0xced1('0x3')][_0x2a6248];var _0xdd5a47=![];var _0x4ea85e='ACW';if(_0x49c8b9[_0xced1('0x25')]&&_0x49c8b9[_0xced1('0x26')][_0xced1('0x27')]){_0xdd5a47=!![];_0x4ea85e=_0x49c8b9[_0xced1('0x26')][_0xced1('0x27')];}if(!_0x5f1474[_0xced1('0x4')][_0x4dab56]){return Promise['resolve']();}return RpcUser[_0xced1('0x28')](_0x5f1474[_0xced1('0x4')][_0x4dab56]['id'])[_0xced1('0x1a')](function(_0x351afc){if(!_0x351afc||_0x351afc[_0xced1('0x29')]){logger[_0xced1('0x1b')](_0xced1('0x2a'),_0xc1bd39,_0x4dab56,_0x2a6248);return;}logger['info'](_0xced1('0x2b'),_0xc1bd39,_0x4dab56,_0x2a6248);var _0x4ef64e=_0x5f1474[_0xced1('0x22')][_0xc1bd39][_0xced1('0x2c')]&&_0x5f1474[_0xced1('0x22')][_0xc1bd39][_0xced1('0x2d')]?_0x5f1474['channels'][_0xc1bd39]['destlinkedid']:_0xc1bd39;return RpcUser[_0xced1('0x2e')](_0x5f1474[_0xced1('0x4')][_0x4dab56],_0x4ea85e,_0x4ef64e);})[_0xced1('0x1a')](function(_0x4ea07e){if(_0xdd5a47||!_0x4ea07e){return;}_0x5f1474['timers'][_0x4dab56]={};logger['info'](_0xced1('0x2f'),_0xc1bd39,_0x5f1474[_0xced1('0x3')][_0x2a6248][_0xced1('0x30')],_0x4dab56,_0x2a6248);_0x5f1474[_0xced1('0x5')][_0x4dab56]['timer']=setTimeout(_0x5f1474[_0xced1('0x31')][_0xced1('0x8')](_0x5f1474,_0x4dab56),_0x5f1474[_0xced1('0x3')][_0x2a6248][_0xced1('0x30')]*0x3e8);_0x5f1474[_0xced1('0x5')][_0x4dab56][_0xced1('0x17')]=moment()[_0xced1('0x32')]('YYYY-MM-DD\x20HH:mm:ss');_0x5f1474['timers'][_0x4dab56][_0xced1('0x19')]=_0xc1bd39;_0x5f1474[_0xced1('0x5')][_0x4dab56][_0xced1('0x24')]=_0x2a6248;_0x5f1474[_0xced1('0x5')][_0x4dab56][_0xced1('0x16')]=_0x5f1474[_0xced1('0x16')]['bind'](_0x5f1474,_0x4dab56,_0xc1bd39);})['catch'](function(){logger['error']('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0xc1bd39,_0x5f1474[_0xced1('0x3')][_0x2a6248][_0xced1('0x30')],_0x4dab56,_0x2a6248);})[_0xced1('0x20')](function(){delete _0x5f1474[_0xced1('0x22')][_0xc1bd39];});}catch(_0x5c76bb){logger[_0xced1('0x1e')](_0xced1('0x33'),_0x5c76bb[_0xced1('0x34')]);}};Acw[_0xced1('0x15')][_0xced1('0x31')]=function(_0x306e19){try{var _0x1db647=this;if(_0x1db647[_0xced1('0x5')][_0x306e19]){_0x1db647['timers'][_0x306e19][_0xced1('0x18')]=![];var _0x23db06=_0x1db647[_0xced1('0x5')][_0x306e19][_0xced1('0x19')];var _0x3bdc6f=_0x1db647[_0xced1('0x5')][_0x306e19]['queue'];var _0xc7afa1=_0x1db647[_0xced1('0x3')][_0x3bdc6f][_0xced1('0x30')];logger[_0xced1('0x1b')](_0xced1('0x35'),_0x23db06,_0x306e19);RpcUser[_0xced1('0x36')](this[_0xced1('0x4')][_0x306e19]);RpcVoiceAgentReport[_0xced1('0x37')]({'acwtime':_0xc7afa1,'agentacw':!![]},_0x23db06,_0x306e19)[_0xced1('0x1a')](function(_0x359a10){logger[_0xced1('0x1b')]('[%s][UPDATE][ACWTIME:%s]',_0x23db06,_0xc7afa1,_0x359a10);})['catch'](function(_0x26b74b){logger[_0xced1('0x1e')](_0xced1('0x1f'),_0x23db06,_0x26b74b);});}else{logger['error'](_0xced1('0x38'),_0x306e19);if(_0x1db647[_0xced1('0x5')]){logger[_0xced1('0x1b')]('[ACW][TIMERS]',JSON[_0xced1('0x39')](_0x1db647[_0xced1('0x5')]));}}}catch(_0x5a01f6){logger[_0xced1('0x1e')]('[ACW][STOP]\x20%s',_0x5a01f6[_0xced1('0x34')]);}};Acw[_0xced1('0x15')]['syncAgentConnect']=function(_0x1ddaea){try{if(this[_0xced1('0x3')][_0x1ddaea[_0xced1('0x24')]]&&(this['voiceQueues'][_0x1ddaea[_0xced1('0x24')]][_0xced1('0x3a')]||this['voiceQueues'][_0x1ddaea[_0xced1('0x24')]]['mandatoryDisposition'])){if(this['agents'][_0x1ddaea[_0xced1('0x23')]]){this['channels'][_0x1ddaea[_0xced1('0x19')]]={'queue':_0x1ddaea[_0xced1('0x24')],'interface':_0x1ddaea[_0xced1('0x23')],'destlinkedid':_0x1ddaea['destlinkedid']};}}}catch(_0x1809c7){logger['error'](_0xced1('0x3b'),_0x1809c7[_0xced1('0x34')]);}};Acw[_0xced1('0x15')][_0xced1('0x12')]=function(_0x5e20a5){try{if(this[_0xced1('0x3')][_0x5e20a5[_0xced1('0x24')]]&&(this['voiceQueues'][_0x5e20a5[_0xced1('0x24')]][_0xced1('0x3a')]||this['voiceQueues'][_0x5e20a5[_0xced1('0x24')]][_0xced1('0x25')])){if(this[_0xced1('0x4')][_0x5e20a5['interface']]){this[_0xced1('0x22')][_0x5e20a5[_0xced1('0x19')]]={'queue':_0x5e20a5[_0xced1('0x24')],'interface':_0x5e20a5[_0xced1('0x23')]};}}}catch(_0x376619){logger['error'](_0xced1('0x3c'),_0x376619['message']);}};Acw[_0xced1('0x15')][_0xced1('0xa')]=function(_0xf06f87){try{if(this[_0xced1('0x22')][_0xf06f87[_0xced1('0x19')]]&&_[_0xced1('0x3d')](this['channels'][_0xf06f87[_0xced1('0x19')]][_0xced1('0x2c')])){logger['info'](_0xced1('0x3e'),_0xf06f87['uniqueid']);this['startAcw'](_0xf06f87[_0xced1('0x19')]);}else if(this[_0xced1('0x22')][_0xf06f87[_0xced1('0x3f')]]&&_[_0xced1('0x3d')](this['channels'][_0xf06f87[_0xced1('0x3f')]][_0xced1('0x2c')])){logger[_0xced1('0x1b')]('[%s][HANGUP:LINKEDID]',_0xf06f87['linkedid']);this[_0xced1('0x21')](_0xf06f87[_0xced1('0x3f')]);}}catch(_0xad1d9f){logger[_0xced1('0x1e')]('[ACW][syncHangupRequest]\x20%s',_0xad1d9f['message']);}};Acw['prototype'][_0xced1('0xc')]=function(_0x14fcc0){try{if(this[_0xced1('0x22')][_0x14fcc0[_0xced1('0x19')]]&&this[_0xced1('0x22')][_0x14fcc0[_0xced1('0x19')]][_0xced1('0x2c')]){logger[_0xced1('0x1b')](_0xced1('0x40'),_0x14fcc0['uniqueid']);this[_0xced1('0x21')](_0x14fcc0[_0xced1('0x19')]);}else if(this[_0xced1('0x22')][_0x14fcc0['linkedid']]&&this[_0xced1('0x22')][_0x14fcc0[_0xced1('0x3f')]][_0xced1('0x2c')]){logger[_0xced1('0x1b')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x14fcc0[_0xced1('0x3f')]);this['startAcw'](_0x14fcc0['linkedid']);}}catch(_0x1a2b65){logger[_0xced1('0x1e')]('[ACW][syncHangup]\x20%s',_0x1a2b65['message']);}};Acw['prototype'][_0xced1('0xf')]=function(_0x5dfcf4){try{if(!_[_0xced1('0x41')](this[_0xced1('0x22')][_0x5dfcf4[_0xced1('0x42')]])){this[_0xced1('0x21')](_0x5dfcf4[_0xced1('0x42')]);if(this[_0xced1('0x22')][_0x5dfcf4[_0xced1('0x43')]]){this[_0xced1('0x22')][_0x5dfcf4['secondtransfereruniqueid']]['attended']=!![];this[_0xced1('0x22')][_0x5dfcf4[_0xced1('0x44')]]=this[_0xced1('0x22')][_0x5dfcf4[_0xced1('0x43')]];delete this['channels'][_0x5dfcf4[_0xced1('0x43')]];}}else if(!_[_0xced1('0x41')](this[_0xced1('0x22')][_0x5dfcf4[_0xced1('0x44')]])){this['startAcw'](_0x5dfcf4[_0xced1('0x44')]);if(this[_0xced1('0x22')][_0x5dfcf4[_0xced1('0x45')]]){this[_0xced1('0x22')][_0x5dfcf4[_0xced1('0x45')]][_0xced1('0x2c')]=!![];this[_0xced1('0x22')][_0x5dfcf4[_0xced1('0x42')]]=this['channels'][_0x5dfcf4['origtransfereruniqueid']];delete this['channels'][_0x5dfcf4[_0xced1('0x45')]];}}}catch(_0x52e873){logger[_0xced1('0x1e')]('[ACW][syncAttendedTransfer]\x20%s',_0x52e873['message']);}};Acw[_0xced1('0x15')][_0xced1('0x11')]=function(_0x3265c1){try{if(this[_0xced1('0x22')][_0x3265c1[_0xced1('0x46')]]){logger[_0xced1('0x1b')](_0xced1('0x47'),JSON[_0xced1('0x39')](_0x3265c1[_0xced1('0x46')]));this[_0xced1('0x21')](_0x3265c1[_0xced1('0x46')]);}else if(this['channels'][_0x3265c1[_0xced1('0x48')]]){logger[_0xced1('0x1b')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0xced1('0x39')](_0x3265c1[_0xced1('0x48')]));this['startAcw'](_0x3265c1[_0xced1('0x48')]);}}catch(_0x2c6369){logger[_0xced1('0x1e')](_0xced1('0x49'),_0x2c6369[_0xced1('0x34')]);}};Acw['prototype']['syncAgentRingNoAnswer']=function(_0x487094){try{if(this[_0xced1('0x3')][_0x487094[_0xced1('0x24')]]&&this['voiceQueues'][_0x487094[_0xced1('0x24')]][_0xced1('0x4a')]===_0xced1('0x4b')){if(this['agents'][_0x487094[_0xced1('0x23')]]){logger[_0xced1('0x1b')]('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x487094[_0xced1('0x19')],_0x487094['interface'],_0x487094[_0xced1('0x24')]);return RpcUser[_0xced1('0x2e')](this[_0xced1('0x4')][_0x487094[_0xced1('0x23')]],_0xced1('0x4c'),_0x487094[_0xced1('0x19')]);}}}catch(_0x2459cd){logger['error'](_0xced1('0x4d'),_0x2459cd[_0xced1('0x34')]);}};module[_0xced1('0x4e')]=Acw;
\ No newline at end of file
+var _0xa8f0=['error','[%s][UPDATE][ERRORS:%s]','finally','channels','interface','ACW','mandatoryDisposition','name','mandatoryDispositionPause','agents','then','voicePause','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','available','paused','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','stopAcw','format','YYYY-MM-DD\x20HH:mm:ss','updateAcw','message','prototype','[%s][TIMER][STOP][AGENT:%s]','getAgent','saveUnpause','catch','stringify','[ACW][STOP]\x20%s','queue','acw','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','startAcw','linkedid','[ACW][syncHangupRequest]\x20%s','syncHangup','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','autopause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','../../../config/logger','../rpc/user','../rpc/voiceAgentReport','voiceQueues','timers','agentconnect','syncAgentConnect','hanguprequest','bind','hangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','syncAgentConnectPreview','milliseconds','diff','seconds','lastPauseAt','timer','update','uniqueid','info','[%s][UPDATE][ACWTIME:%s]'];(function(_0x3e866a,_0x726f3f){var _0x1df71d=function(_0x51b3fe){while(--_0x51b3fe){_0x3e866a['push'](_0x3e866a['shift']());}};_0x1df71d(++_0x726f3f);}(_0xa8f0,0x1d2));var _0x0a8f=function(_0x24f870,_0x2c8a88){_0x24f870=_0x24f870-0x0;var _0x5d065b=_0xa8f0[_0x24f870];return _0x5d065b;};'use strict';var _=require('lodash');var moment=require('moment');var ami=require('../ami');var logger=require(_0x0a8f('0x0'))('acw');var RpcUser=require(_0x0a8f('0x1'));var RpcVoiceAgentReport=require(_0x0a8f('0x2'));function Acw(_0x57b4a7){this[_0x0a8f('0x3')]=_0x57b4a7[_0x0a8f('0x3')];this['agents']=_0x57b4a7['agents'];this[_0x0a8f('0x4')]=_0x57b4a7[_0x0a8f('0x4')];this['channels']={};ami['on'](_0x0a8f('0x5'),this[_0x0a8f('0x6')]['bind'](this));ami['on'](_0x0a8f('0x7'),this['syncHangupRequest'][_0x0a8f('0x8')](this));ami['on'](_0x0a8f('0x9'),this['syncHangup'][_0x0a8f('0x8')](this));ami['on'](_0x0a8f('0xa'),this[_0x0a8f('0xb')][_0x0a8f('0x8')](this));ami['on'](_0x0a8f('0xc'),this[_0x0a8f('0xd')]['bind'](this));ami['on'](_0x0a8f('0xe'),this[_0x0a8f('0xf')]['bind'](this));ami['on']('custom:agentConnectPreview',this[_0x0a8f('0x10')][_0x0a8f('0x8')](this));}function getDiff(_0x59b5af){var _0x457c8a=moment()['milliseconds'](0x0);var _0x431dd5=moment(_0x59b5af)[_0x0a8f('0x11')](0x0);return _0x457c8a[_0x0a8f('0x12')](_0x431dd5,_0x0a8f('0x13'));}Acw['prototype']['updateAcw']=function(_0x1b1151,_0x50e436){var _0x56f0b8=this;var _0x279af9=getDiff(_0x56f0b8[_0x0a8f('0x4')][_0x1b1151][_0x0a8f('0x14')]);clearTimeout(_0x56f0b8['timers'][_0x1b1151][_0x0a8f('0x15')]);_0x56f0b8[_0x0a8f('0x4')][_0x1b1151][_0x0a8f('0x15')]=![];return RpcVoiceAgentReport[_0x0a8f('0x16')]({'acwtime':_0x279af9},_0x56f0b8['timers'][_0x1b1151][_0x0a8f('0x17')],_0x1b1151)['then'](function(_0x8e7abc){logger[_0x0a8f('0x18')](_0x0a8f('0x19'),_0x50e436,_0x279af9,_0x8e7abc);})['catch'](function(_0x3bda24){logger[_0x0a8f('0x1a')](_0x0a8f('0x1b'),_0x50e436,_0x3bda24);})[_0x0a8f('0x1c')](function(){delete _0x56f0b8[_0x0a8f('0x4')][_0x1b1151];});};Acw['prototype']['startAcw']=function(_0x50497d){try{var _0x4133d3=this;var _0x456ac6=this[_0x0a8f('0x1d')][_0x50497d][_0x0a8f('0x1e')];var _0x34c505=this[_0x0a8f('0x1d')][_0x50497d]['queue'];var _0x1bbdd1=this['voiceQueues'][_0x34c505];var _0x39b999=![];var _0x5451e3=_0x0a8f('0x1f');if(_0x1bbdd1[_0x0a8f('0x20')]&&_0x1bbdd1['mandatoryDispositionPause'][_0x0a8f('0x21')]){_0x39b999=!![];_0x5451e3=_0x1bbdd1[_0x0a8f('0x22')][_0x0a8f('0x21')];}if(!_0x4133d3['agents'][_0x456ac6]){return Promise['resolve']();}return RpcUser['getAgent'](_0x4133d3[_0x0a8f('0x23')][_0x456ac6]['id'])[_0x0a8f('0x24')](function(_0x16447e){if(!_0x16447e||_0x16447e[_0x0a8f('0x25')]){logger[_0x0a8f('0x18')](_0x0a8f('0x26'),_0x50497d,_0x456ac6,_0x34c505);return;}logger['info']('[%s][START][AGENT:%s][QUEUE:%s]',_0x50497d,_0x456ac6,_0x34c505);var _0x5083fd=_0x4133d3[_0x0a8f('0x1d')][_0x50497d][_0x0a8f('0x27')]&&_0x4133d3[_0x0a8f('0x1d')][_0x50497d][_0x0a8f('0x28')]?_0x4133d3[_0x0a8f('0x1d')][_0x50497d][_0x0a8f('0x28')]:_0x50497d;return RpcUser[_0x0a8f('0x29')](_0x4133d3[_0x0a8f('0x23')][_0x456ac6],_0x5451e3,_0x5083fd)['then'](function(_0x2fdacc){_0x4133d3['voiceQueues'][_0x34c505][_0x0a8f('0x2a')]-=0x1;_0x4133d3['voiceQueues'][_0x34c505][_0x0a8f('0x2b')]+=0x1;return _0x2fdacc;});})[_0x0a8f('0x24')](function(_0x2b3695){if(_0x39b999||!_0x2b3695){return;}_0x4133d3[_0x0a8f('0x4')][_0x456ac6]={};logger[_0x0a8f('0x18')](_0x0a8f('0x2c'),_0x50497d,_0x4133d3['voiceQueues'][_0x34c505][_0x0a8f('0x2d')],_0x456ac6,_0x34c505);_0x4133d3['timers'][_0x456ac6][_0x0a8f('0x15')]=setTimeout(_0x4133d3[_0x0a8f('0x2e')][_0x0a8f('0x8')](_0x4133d3,_0x456ac6),_0x4133d3[_0x0a8f('0x3')][_0x34c505]['acwTimeout']*0x3e8);_0x4133d3[_0x0a8f('0x4')][_0x456ac6][_0x0a8f('0x14')]=moment()[_0x0a8f('0x2f')](_0x0a8f('0x30'));_0x4133d3[_0x0a8f('0x4')][_0x456ac6][_0x0a8f('0x17')]=_0x50497d;_0x4133d3[_0x0a8f('0x4')][_0x456ac6]['queue']=_0x34c505;_0x4133d3[_0x0a8f('0x4')][_0x456ac6][_0x0a8f('0x31')]=_0x4133d3['updateAcw'][_0x0a8f('0x8')](_0x4133d3,_0x456ac6,_0x50497d);})['catch'](function(){logger[_0x0a8f('0x1a')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x50497d,_0x4133d3[_0x0a8f('0x3')][_0x34c505][_0x0a8f('0x2d')],_0x456ac6,_0x34c505);})[_0x0a8f('0x1c')](function(){delete _0x4133d3[_0x0a8f('0x1d')][_0x50497d];});}catch(_0x59ace7){logger[_0x0a8f('0x1a')]('[ACW][START]\x20%s',_0x59ace7[_0x0a8f('0x32')]);}};Acw[_0x0a8f('0x33')][_0x0a8f('0x2e')]=function(_0x2f99ad){try{var _0x7d67d3=this;if(_0x7d67d3['timers'][_0x2f99ad]){_0x7d67d3['timers'][_0x2f99ad][_0x0a8f('0x15')]=![];var _0xbed7a0=_0x7d67d3['timers'][_0x2f99ad][_0x0a8f('0x17')];var _0x393f97=_0x7d67d3['timers'][_0x2f99ad]['queue'];var _0x1e49ef=_0x7d67d3[_0x0a8f('0x3')][_0x393f97][_0x0a8f('0x2d')];logger[_0x0a8f('0x18')](_0x0a8f('0x34'),_0xbed7a0,_0x2f99ad);RpcUser[_0x0a8f('0x35')](this[_0x0a8f('0x23')][_0x2f99ad]['id'])[_0x0a8f('0x24')](function(_0x1bce17){if(_0x1bce17['pauseType']===_0x0a8f('0x1f')){return RpcUser[_0x0a8f('0x36')](_0x7d67d3[_0x0a8f('0x23')][_0x2f99ad]);}});RpcVoiceAgentReport[_0x0a8f('0x16')]({'acwtime':_0x1e49ef,'agentacw':!![]},_0xbed7a0,_0x2f99ad)[_0x0a8f('0x24')](function(_0x3d1610){logger['info'](_0x0a8f('0x19'),_0xbed7a0,_0x1e49ef,_0x3d1610);})[_0x0a8f('0x37')](function(_0x12f27f){logger[_0x0a8f('0x1a')](_0x0a8f('0x1b'),_0xbed7a0,_0x12f27f);});}else{logger['error']('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x2f99ad);if(_0x7d67d3[_0x0a8f('0x4')]){logger[_0x0a8f('0x18')]('[ACW][TIMERS]',JSON[_0x0a8f('0x38')](_0x7d67d3[_0x0a8f('0x4')]));}}}catch(_0x1e1fcb){logger[_0x0a8f('0x1a')](_0x0a8f('0x39'),_0x1e1fcb['message']);}};Acw['prototype'][_0x0a8f('0x6')]=function(_0x487d39){try{if(this[_0x0a8f('0x3')][_0x487d39[_0x0a8f('0x3a')]]&&(this[_0x0a8f('0x3')][_0x487d39[_0x0a8f('0x3a')]][_0x0a8f('0x3b')]||this[_0x0a8f('0x3')][_0x487d39[_0x0a8f('0x3a')]]['mandatoryDisposition'])){if(this[_0x0a8f('0x23')][_0x487d39[_0x0a8f('0x1e')]]){this[_0x0a8f('0x1d')][_0x487d39[_0x0a8f('0x17')]]={'queue':_0x487d39[_0x0a8f('0x3a')],'interface':_0x487d39[_0x0a8f('0x1e')],'destlinkedid':_0x487d39[_0x0a8f('0x28')]};}}}catch(_0x3e147f){logger[_0x0a8f('0x1a')](_0x0a8f('0x3c'),_0x3e147f['message']);}};Acw[_0x0a8f('0x33')]['syncAgentConnectPreview']=function(_0x2a8417){try{if(this[_0x0a8f('0x3')][_0x2a8417['queue']]&&(this[_0x0a8f('0x3')][_0x2a8417[_0x0a8f('0x3a')]][_0x0a8f('0x3b')]||this['voiceQueues'][_0x2a8417['queue']][_0x0a8f('0x20')])){if(this[_0x0a8f('0x23')][_0x2a8417[_0x0a8f('0x1e')]]){this[_0x0a8f('0x1d')][_0x2a8417[_0x0a8f('0x17')]]={'queue':_0x2a8417[_0x0a8f('0x3a')],'interface':_0x2a8417[_0x0a8f('0x1e')]};}}}catch(_0xf374dc){logger[_0x0a8f('0x1a')](_0x0a8f('0x3d'),_0xf374dc[_0x0a8f('0x32')]);}};Acw['prototype']['syncHangupRequest']=function(_0x171b56){try{if(this[_0x0a8f('0x1d')][_0x171b56['uniqueid']]&&_[_0x0a8f('0x3e')](this[_0x0a8f('0x1d')][_0x171b56[_0x0a8f('0x17')]][_0x0a8f('0x27')])){logger['info'](_0x0a8f('0x3f'),_0x171b56['uniqueid']);this[_0x0a8f('0x40')](_0x171b56['uniqueid']);}else if(this[_0x0a8f('0x1d')][_0x171b56['linkedid']]&&_[_0x0a8f('0x3e')](this['channels'][_0x171b56['linkedid']][_0x0a8f('0x27')])){logger[_0x0a8f('0x18')]('[%s][HANGUP:LINKEDID]',_0x171b56[_0x0a8f('0x41')]);this[_0x0a8f('0x40')](_0x171b56[_0x0a8f('0x41')]);}}catch(_0x725e8){logger[_0x0a8f('0x1a')](_0x0a8f('0x42'),_0x725e8[_0x0a8f('0x32')]);}};Acw['prototype'][_0x0a8f('0x43')]=function(_0x19428d){try{if(this[_0x0a8f('0x1d')][_0x19428d[_0x0a8f('0x17')]]&&this[_0x0a8f('0x1d')][_0x19428d[_0x0a8f('0x17')]][_0x0a8f('0x27')]){logger['info'](_0x0a8f('0x44'),_0x19428d[_0x0a8f('0x17')]);this[_0x0a8f('0x40')](_0x19428d[_0x0a8f('0x17')]);}else if(this[_0x0a8f('0x1d')][_0x19428d[_0x0a8f('0x41')]]&&this[_0x0a8f('0x1d')][_0x19428d[_0x0a8f('0x41')]][_0x0a8f('0x27')]){logger[_0x0a8f('0x18')]('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x19428d[_0x0a8f('0x41')]);this[_0x0a8f('0x40')](_0x19428d[_0x0a8f('0x41')]);}}catch(_0x483357){logger[_0x0a8f('0x1a')](_0x0a8f('0x45'),_0x483357[_0x0a8f('0x32')]);}};Acw[_0x0a8f('0x33')][_0x0a8f('0xd')]=function(_0x412bd7){try{if(!_[_0x0a8f('0x46')](this[_0x0a8f('0x1d')][_0x412bd7[_0x0a8f('0x47')]])){this[_0x0a8f('0x40')](_0x412bd7[_0x0a8f('0x47')]);if(this['channels'][_0x412bd7[_0x0a8f('0x48')]]){this['channels'][_0x412bd7[_0x0a8f('0x48')]][_0x0a8f('0x27')]=!![];this[_0x0a8f('0x1d')][_0x412bd7['transfertargetuniqueid']]=this[_0x0a8f('0x1d')][_0x412bd7['secondtransfereruniqueid']];delete this[_0x0a8f('0x1d')][_0x412bd7[_0x0a8f('0x48')]];}}else if(!_[_0x0a8f('0x46')](this[_0x0a8f('0x1d')][_0x412bd7[_0x0a8f('0x49')]])){this[_0x0a8f('0x40')](_0x412bd7['transfertargetuniqueid']);if(this[_0x0a8f('0x1d')][_0x412bd7['origtransfereruniqueid']]){this[_0x0a8f('0x1d')][_0x412bd7[_0x0a8f('0x4a')]]['attended']=!![];this[_0x0a8f('0x1d')][_0x412bd7[_0x0a8f('0x47')]]=this['channels'][_0x412bd7[_0x0a8f('0x4a')]];delete this['channels'][_0x412bd7[_0x0a8f('0x4a')]];}}}catch(_0x50786f){logger['error'](_0x0a8f('0x4b'),_0x50786f['message']);}};Acw[_0x0a8f('0x33')][_0x0a8f('0xf')]=function(_0x17cd87){try{if(this['channels'][_0x17cd87[_0x0a8f('0x4c')]]){logger[_0x0a8f('0x18')](_0x0a8f('0x4d'),JSON[_0x0a8f('0x38')](_0x17cd87[_0x0a8f('0x4c')]));this[_0x0a8f('0x40')](_0x17cd87[_0x0a8f('0x4c')]);}else if(this[_0x0a8f('0x1d')][_0x17cd87[_0x0a8f('0x4e')]]){logger[_0x0a8f('0x18')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x0a8f('0x38')](_0x17cd87[_0x0a8f('0x4e')]));this['startAcw'](_0x17cd87['transfererlinkedid']);}}catch(_0x5254a3){logger['error']('[ACW][syncBlindTransfer]\x20%s',_0x5254a3[_0x0a8f('0x32')]);}};Acw[_0x0a8f('0x33')][_0x0a8f('0xb')]=function(_0x6f4014){try{if(this[_0x0a8f('0x3')][_0x6f4014[_0x0a8f('0x3a')]]&&this[_0x0a8f('0x3')][_0x6f4014[_0x0a8f('0x3a')]][_0x0a8f('0x4f')]==='all'){if(this[_0x0a8f('0x23')][_0x6f4014[_0x0a8f('0x1e')]]){logger['info']('[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]',_0x6f4014[_0x0a8f('0x17')],_0x6f4014[_0x0a8f('0x1e')],_0x6f4014[_0x0a8f('0x3a')]);return RpcUser[_0x0a8f('0x29')](this[_0x0a8f('0x23')][_0x6f4014[_0x0a8f('0x1e')]],_0x0a8f('0x50'),_0x6f4014[_0x0a8f('0x17')]);}}}catch(_0x3a8542){logger[_0x0a8f('0x1a')](_0x0a8f('0x51'),_0x3a8542[_0x0a8f('0x32')]);}};module['exports']=Acw;
\ No newline at end of file
index c3e46b4..94a3351 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x581b=['actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','inspect','fullybooted','resolve','then','catch','asterisk-manager','bluebird','util','../../config/logger','ami','asterisk','port','username','password','keepConnected','Action','promisify','action','error','format','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','actionSipShowRegistry','sipshowregistry','actionDeviceStateList','devicestatelist'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x581b,0x178));var _0xb581=function(_0x124298,_0x542004){_0x124298=_0x124298-0x0;var _0x35ac24=_0x581b[_0x124298];return _0x35ac24;};'use strict';var Manager=require(_0xb581('0x0'));var BPromise=require(_0xb581('0x1'));var util=require(_0xb581('0x2'));var logger=require(_0xb581('0x3'))(_0xb581('0x4'));var config=require('../../config/environment');var ami=new Manager(config[_0xb581('0x5')][_0xb581('0x6')],config['asterisk']['ip'],config[_0xb581('0x5')][_0xb581('0x7')],config['asterisk'][_0xb581('0x8')],!![]);ami[_0xb581('0x9')]();ami[_0xb581('0xa')]=BPromise[_0xb581('0xb')](ami[_0xb581('0xc')]);function error(_0x5af131){logger[_0xb581('0xd')](util[_0xb581('0xe')](_0xb581('0xf'),config[_0xb581('0x5')][_0xb581('0x7')],config[_0xb581('0x5')]['ip'],config[_0xb581('0x5')]['port'],util['inspect'](_0x5af131,![],null)));}function close(){logger['error'](util[_0xb581('0xe')]('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config['asterisk'][_0xb581('0x7')],config[_0xb581('0x5')]['ip'],config[_0xb581('0x5')][_0xb581('0x6')]));}ami[_0xb581('0x10')]=function(){return function(){return ami[_0xb581('0xa')]({'action':_0xb581('0x11')});};};ami[_0xb581('0x12')]=function(){return function(){return ami[_0xb581('0xa')]({'action':_0xb581('0x13')});};};ami[_0xb581('0x14')]=function(){return function(){return ami[_0xb581('0xa')]({'action':_0xb581('0x15')});};};ami[_0xb581('0x16')]=function(){return function(){return ami[_0xb581('0xa')]({'action':_0xb581('0x17')});};};ami[_0xb581('0x18')]=function(){return function(){return ami['Action']({'action':_0xb581('0x19')});};};function connect(){logger[_0xb581('0x1a')](util['format'](_0xb581('0x1b'),config[_0xb581('0x5')]['username'],config[_0xb581('0x5')]['ip'],config[_0xb581('0x5')][_0xb581('0x6')]));ami[_0xb581('0x1c')](_0xb581('0xd'),error);ami[_0xb581('0x1c')](_0xb581('0x1d'),close);}ami['on'](_0xb581('0x1e'),connect);ami['on']('shutdown',function(_0x2e27de){logger[_0xb581('0x1a')](util[_0xb581('0xe')]('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config['asterisk'][_0xb581('0x7')],config['asterisk']['ip'],config[_0xb581('0x5')][_0xb581('0x6')],util[_0xb581('0x1f')](_0x2e27de,![],null)));});ami['on'](_0xb581('0x20'),function(){logger[_0xb581('0x1a')](util['format']('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0xb581('0x5')]['username'],config['asterisk']['ip'],config['asterisk']['port']));return Promise[_0xb581('0x21')]()[_0xb581('0x22')](ami[_0xb581('0x10')]())['then'](ami['actionDeviceStateList']())[_0xb581('0x22')](ami[_0xb581('0x14')]())['then'](ami['actionQueueSummary']())[_0xb581('0x22')](ami['actionCoreShowChannels']())[_0xb581('0x23')](function(_0xa802a7){logger[_0xb581('0xd')]('[ami.js][fullybooted]',util[_0xb581('0x1f')](_0xa802a7,{'showHidden':![],'depth':null}));});});ami[_0xb581('0x1c')](_0xb581('0xd'),error);ami[_0xb581('0x1c')]('close',close);module['exports']=ami;
\ No newline at end of file
+var _0x38d6=['actionSipShowRegistry','sipshowregistry','actionDeviceStateList','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','connect','shutdown','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','fullybooted','format','then','actionSipPeerStatus','actionQueueSummary','close','exports','bluebird','util','../../config/logger','asterisk','port','username','Action','promisify','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect'];(function(_0x134658,_0x767deb){var _0x181652=function(_0x558543){while(--_0x558543){_0x134658['push'](_0x134658['shift']());}};_0x181652(++_0x767deb);}(_0x38d6,0x12a));var _0x638d=function(_0x320dd0,_0x266a5b){_0x320dd0=_0x320dd0-0x0;var _0x1ffb02=_0x38d6[_0x320dd0];return _0x1ffb02;};'use strict';var Manager=require('asterisk-manager');var BPromise=require(_0x638d('0x0'));var util=require(_0x638d('0x1'));var logger=require(_0x638d('0x2'))('ami');var config=require('../../config/environment');var ami=new Manager(config[_0x638d('0x3')][_0x638d('0x4')],config[_0x638d('0x3')]['ip'],config[_0x638d('0x3')][_0x638d('0x5')],config[_0x638d('0x3')]['password'],!![]);ami['keepConnected']();ami[_0x638d('0x6')]=BPromise[_0x638d('0x7')](ami[_0x638d('0x8')]);function error(_0x1d8fc2){logger[_0x638d('0x9')](util['format'](_0x638d('0xa'),config[_0x638d('0x3')][_0x638d('0x5')],config[_0x638d('0x3')]['ip'],config[_0x638d('0x3')][_0x638d('0x4')],util[_0x638d('0xb')](_0x1d8fc2,![],null)));}function close(){logger[_0x638d('0x9')](util['format']('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config[_0x638d('0x3')][_0x638d('0x5')],config[_0x638d('0x3')]['ip'],config[_0x638d('0x3')][_0x638d('0x4')]));}ami[_0x638d('0xc')]=function(){return function(){return ami[_0x638d('0x6')]({'action':_0x638d('0xd')});};};ami[_0x638d('0xe')]=function(){return function(){return ami['Action']({'action':'devicestatelist'});};};ami['actionSipPeerStatus']=function(){return function(){return ami[_0x638d('0x6')]({'action':'sippeerstatus'});};};ami['actionQueueSummary']=function(){return function(){return ami[_0x638d('0x6')]({'action':_0x638d('0xf')});};};ami[_0x638d('0x10')]=function(){return function(){return ami[_0x638d('0x6')]({'action':_0x638d('0x11')});};};function connect(){logger[_0x638d('0x12')](util['format'](_0x638d('0x13'),config[_0x638d('0x3')][_0x638d('0x5')],config[_0x638d('0x3')]['ip'],config[_0x638d('0x3')][_0x638d('0x4')]));ami[_0x638d('0x14')]('error',error);ami[_0x638d('0x14')]('close',close);}ami['on'](_0x638d('0x15'),connect);ami['on'](_0x638d('0x16'),function(_0x469ad6){logger[_0x638d('0x12')](util['format'](_0x638d('0x17'),config[_0x638d('0x3')]['username'],config[_0x638d('0x3')]['ip'],config[_0x638d('0x3')][_0x638d('0x4')],util[_0x638d('0xb')](_0x469ad6,![],null)));});ami['on'](_0x638d('0x18'),function(){logger[_0x638d('0x12')](util[_0x638d('0x19')]('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0x638d('0x3')]['username'],config[_0x638d('0x3')]['ip'],config[_0x638d('0x3')][_0x638d('0x4')]));return Promise['resolve']()[_0x638d('0x1a')](ami[_0x638d('0xc')]())[_0x638d('0x1a')](ami[_0x638d('0xe')]())[_0x638d('0x1a')](ami[_0x638d('0x1b')]())[_0x638d('0x1a')](ami[_0x638d('0x1c')]())['then'](ami[_0x638d('0x10')]())['catch'](function(_0x35dc41){logger[_0x638d('0x9')]('[ami.js][fullybooted]',util[_0x638d('0xb')](_0x35dc41,{'showHidden':![],'depth':null}));});});ami[_0x638d('0x14')](_0x638d('0x9'),error);ami[_0x638d('0x14')](_0x638d('0x1d'),close);module[_0x638d('0x1e')]=ami;
\ No newline at end of file
index c6a27a9..ff3eb24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['ami','client','http','Request','then','debug','rpc','memberReport','error','message','result','exports','../../config/logger'];(function(_0x536128,_0x57ba8d){var _0x2dc941=function(_0x58dffe){while(--_0x58dffe){_0x536128['push'](_0x536128['shift']());}};_0x2dc941(++_0x57ba8d);}(_0x9c44,0x178));var _0x49c4=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x9c44[_0x4b055c];return _0x4b62bb;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x49c4('0x0'))(_0x49c4('0x1'));var client=jayson[_0x49c4('0x2')][_0x49c4('0x3')]({'port':0x2329});client[_0x49c4('0x4')]=function(_0x2ad237,_0x4e0313){return new BPromise(function(_0x4941f1,_0x41a183){return client['request'](_0x2ad237,_0x4e0313)[_0x49c4('0x5')](function(_0x6030ae){logger[_0x49c4('0x6')](_0x49c4('0x7'),_0x49c4('0x8'),_0x2ad237,_0x4e0313,_0x6030ae);if(_0x6030ae['error']){logger[_0x49c4('0x9')](_0x49c4('0x7'),_0x49c4('0x8'),_0x2ad237,_0x6030ae[_0x49c4('0x9')]['message'],_0x4e0313);return _0x41a183(_0x6030ae['error'][_0x49c4('0xa')]);}else{return _0x4941f1(_0x6030ae[_0x49c4('0xb')]);}})['catch'](function(_0xb611a1){logger[_0x49c4('0x9')]('rpc','memberReport',_0x2ad237,_0xb611a1,_0x4e0313);return _0x41a183(_0xb611a1);});});};module[_0x49c4('0xc')]=client;
\ No newline at end of file
+var _0xbdb7=['result','catch','jayson/promise','bluebird','../../config/logger','ami','client','http','Request','debug','error','message'];(function(_0x3e1dbe,_0x54bb59){var _0x2fc58f=function(_0x5cffc8){while(--_0x5cffc8){_0x3e1dbe['push'](_0x3e1dbe['shift']());}};_0x2fc58f(++_0x54bb59);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x1719e4,_0x4278fe){_0x1719e4=_0x1719e4-0x0;var _0x236bac=_0xbdb7[_0x1719e4];return _0x236bac;};'use strict';var jayson=require(_0x7bdb('0x0'));var BPromise=require(_0x7bdb('0x1'));var logger=require(_0x7bdb('0x2'))(_0x7bdb('0x3'));var client=jayson[_0x7bdb('0x4')][_0x7bdb('0x5')]({'port':0x2329});client[_0x7bdb('0x6')]=function(_0x2c7e07,_0x46c068){return new BPromise(function(_0x47aec5,_0x28542c){return client['request'](_0x2c7e07,_0x46c068)['then'](function(_0xffdc86){logger[_0x7bdb('0x7')]('rpc','memberReport',_0x2c7e07,_0x46c068,_0xffdc86);if(_0xffdc86[_0x7bdb('0x8')]){logger[_0x7bdb('0x8')]('rpc','memberReport',_0x2c7e07,_0xffdc86[_0x7bdb('0x8')][_0x7bdb('0x9')],_0x46c068);return _0x28542c(_0xffdc86[_0x7bdb('0x8')][_0x7bdb('0x9')]);}else{return _0x47aec5(_0xffdc86[_0x7bdb('0xa')]);}})[_0x7bdb('0xb')](function(_0x297724){logger[_0x7bdb('0x8')]('rpc','memberReport',_0x2c7e07,_0x297724,_0x46c068);return _0x28542c(_0x297724);});});};module['exports']=client;
\ No newline at end of file
index 51dd90e..e7f99d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a36=['YYYY-MM-DD\x20HH:mm:ss','outboundAnswerCallsDay','agent','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','createHistory','[syncAgentComplete][createHistory]','moveContactManagedDialer','[syncAgentComplete]','updateOriginated','droptime','outboundDropCallsDayTimeout','predictiveIntervalErlangCallsDroppedCalls','statedesc','dropreason','TIMEOUT','countdropretry','countglobal','dialDropRetryFrequency','callAdditionalPhoneAfterMin','verifyAdditionalPhones','voiceQueue','additional','dialDropMaxRetry','queueCallerAbandonCreateState','rescheduleContact','add','minutes','ContactId','CampaignId','[rescheduleContact][Drop]','Drop','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','outboundDropCallsDayCallersExit','Abandoned','countabandonedretry','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','swapAdditionalPhones','channel','actionid','strategy','rrmemory','roundrobin','isNil','paused','stateinterface','locked','idHopper','run','[Catch][Preview][syncQueueStatusComplete]','ListId','queueBookedRR','_rr','length','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','[booked][RR][finaly]','[booked][unlock]','VoiceQueueId','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','syncOriginateResponse','responsetime','getQueue','Success','callProgressDetecting','[callProgressDetecting]\x20','variable','exten','xcally-motion-dialer','dialAMDActive','value','HANGUP','outboundAnswerAgiCallsDay','HangupInAMD','membername','AMD','custom:amd','saveInDb','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','MACHINE','countmachineretry','amd','buildObj','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','dialMachineRetryFrequency','[rescheduleContact][Machine]','[syncHangupInAMDIvr]','Machine','dialGlobalMaxRetry','ivrAnswerCallsDay','[syncHangupIvr]','dialQueueProject','AnswerAGI','[syncHangupIvr][createHistory]','outboundUnknownCallsDay','cause-txt','Unknow','running','isPreviewCampaign','statusMessage','getQueueCampaignStatusMessage','inUse','talking','ACTIVE','[syncQueueSummary]','compareToOutboundQueue','queueSummaryCountersUpdated','updateReportFromOutboundQueue','assign','filter','dialPreviewRecallmeReminder','online','handlePreviewRecallNotifications','map','Agent','user:%s','user:dialPreviewRecallReminder','checkPreviewRecallReminder','clearZombieChannels','[uniqueid]','[actions]','No\x20such\x20channel','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','emptyContact','notFound','UserId','[emptyContact][createHistory]','[emptyContact]','[syncQueueCallerAbandon]\x20[Drop]','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','dialQueueTimeout','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDAFTERGREETINGSILENCE','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','XMD-AMDMAXIMUMWORDLENGTH','XMD-VOICEQUEUEID','setXMDContactVariables','Contact','getCallerId','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','originatecalleridname','XMD-ORIGINATECALLERIDNUM','variables','dialPrefix','substring','dialCutDigit','SIP/%s/%s%s','trim','from-sip','dialOriginateTimeout','outboundOriginateFailureCallsDay','[originateError]:\x20%s','OriginateError','[originate][error]','Error','originate\x20action\x20Error','checkRetriveMax','countagentrejectretry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAbandonedMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','entity\x20is\x20undefine','reason','outboundNoSuchCallsDay','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','reason\x200\x20no\x20such\x20number....','buildNoAnswerEventPayload','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','custom:agentbusy','reason\x205\x20busy','outboundCongestionCallsDay','custom:agentcongestion','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','round','predictiveIntervalMinThreshold','available','floor','predictiveIntervalHitRate','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','dialPredictiveInterval','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','avgHandleTime','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','predictiveIntervalAnsweredCalls','abandonmentRate','agentBusyFactor','busyFactor','[getDataPredictive]','Unknown\x20Predictive','check\x20failure','getDataPredictiveOld','loggedIn','outboundQueuePauses','predictiveIntervalPauses','[CatchErlangB]','one\x20call\x20every:','milliseconds','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','Queue:\x20','scheduledat','dialRecallMeTimeout','voicePause','unlockContact','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','QUEUE_RECALL','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALL_TIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','Blacklist','[Originate][historyBlacklist]','inBlackList','handleIvr','limitCalls','NO_AVAILABLE_CONTACTS','[getContactCampaign2][Empty]','ivrTotalCallsDays','checkIsBlackListIvr','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','pTalking','checkContactEmpty','countReScheduled','RUNNING','[actionOriginate]\x20','loggerHandler','[getContactDialer2]','[handlePredictive][limitChannel]','tryOriginatePredictive','getContactDialer','dialOrderByScheduledAt','checkIsBlackList','[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','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','m\x20=\x20','[abandonmentRate]','p\x20=\x20','interval\x20=\x20','Amax\x20=\x20','erlangb','----\x20Agent\x20Busy\x20Factor\x20----','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','Ts\x20=\x20','Umin\x20=\x20','exports','util','lodash','uuid','moment','./utils','dialer','../../../config/logger','predictive','syncQueueSummary','../ami','redis','defaults','socket.io-emitter','../rpc/cmHopper','../rpc/setting','./models/action','./models/history','./models/final','./models/agentComplete','./models/queueCallerAbandon','./models/hangup','env','XCALLY_IP_AGI','127.0.0.1','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','maxNumberOriginate','channels','actions','uniqueId','optionPredictive','startPredictive','queueBooked','queuesSummary','agentconnect','syncAgentConnect','bind','syncQueueCallerAbandon','originateresponse','agentcomplete','syncAgentComplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','hangup','newexten','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','getSettings','previewRecallmeReminderInterval','isUndefined','emit','type','debug','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','inspect','format','voice:queue:%s','name','voice_queue:save','-----\x20Stats\x20Predictive\x20---','info','predictiveIntervalTotalCalls','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsTimeout','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsCallersExit','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgHoldtime','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','predictiveIntervalAvgTalktime','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCalls','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','erlangAbandonmentRate','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangBusyFactor','merge','getSeconds','startProgressive','startProgressive\x20value\x20cleared','handlePredictive','handlePredictive\x20interval\x20cleared','error','stack','checkContactLowerLimitOriginate','temp','contactsRescheduled','message','CAMPAIGN_STATUS','CONTACTS_RESCHEDULED','contacts','state','endtime','starttime','queueStatusComplete','[unlockQueueStatus][undefined]','stringify','pick','Interval','NULL_INTERVAL','\x20INTERVAL_IS_NULL','Intervals','isEmpty','isIVRCampaignActive','INACTIVE','\x20NOT\x20Active','campaign:ivr:%s','campaign:save','sendMessageOneNotActive','originated','DISACTIVED','prototype','isTrunkReachable','active','trunks','status','reachable','SIP/%s','Trunk','TrunkBackup','TRUNK_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTimeIvr','Failure','\x20Intervals\x20is\x20null\x20','EMPTY_INTERVAL','ifTime','timezones','UNKNOWN_TIMEZONE','\x20Timezone\x20unknow\x20','isArray','push','Action','iftime\x20%s,%s','interval','then','content','indexOf','true','catch','command','all','some','OVERTIME_GLOBAL_INTERVAL','OVERTIME_INTERVAL','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','resetActiveCalls','syncCampaigns','undefined','isIVRCampaign','resolve','checkIsTrunkReachable','dialGlobalInterval','dialTimezone','checkIfTimeIntervals','launchHandleIvr','[syncCampaigns]','dialMethod','handlePower','power','booked','Queue','silly','Voice\x20Queue\x20%s\x20$s','intervalIftime','Global:\x20','Dialer::ifTime()\x20errResponse\x20NOT\x20NULL:','isGlobal','AMI\x20IfTime','[ifTime][Action]','queue','uniqueid','ivr','answertime'];(function(_0x162dea,_0x418e88){var _0x418872=function(_0x46e00d){while(--_0x46e00d){_0x162dea['push'](_0x162dea['shift']());}};_0x418872(++_0x418e88);}(_0x9a36,0x15e));var _0x69a3=function(_0x295299,_0x5071f9){_0x295299=_0x295299-0x0;var _0xeacd13=_0x9a36[_0x295299];return _0xeacd13;};'use strict';var util=require(_0x69a3('0x0'));var _=require(_0x69a3('0x1'));var uuid=require(_0x69a3('0x2'));var moment=require(_0x69a3('0x3'));var rr=require('rr');var Redis=require('ioredis');var utils=require(_0x69a3('0x4'));var hopperUtils=require('./utils/hopper');var ut=require('../preview/util/util');var config=require('../../../config/environment/');var logger=require('../../../config/logger')(_0x69a3('0x5'));var loggerBooked=require('../../../config/logger')('booked');var loggerPredictive=require(_0x69a3('0x6'))(_0x69a3('0x7'));var loggerPredictiveCalls=require(_0x69a3('0x6'))('predictiveCalls');var loggerSyncQueueSummary=require(_0x69a3('0x6'))(_0x69a3('0x8'));var ami=require(_0x69a3('0x9'));config[_0x69a3('0xa')]=_[_0x69a3('0xb')](config[_0x69a3('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0x69a3('0xc'))(new Redis(config[_0x69a3('0xa')]));var cmHopper=require(_0x69a3('0xd'));var voiceQueueRt=require('../rpc/voiceQueueRt');var RpcSetting=require(_0x69a3('0xe'));var Interval=require('../rpc/interval');var Action=require(_0x69a3('0xf'));var History=require(_0x69a3('0x10'));var Final=require(_0x69a3('0x11'));var AgentComplete=require(_0x69a3('0x12'));var QueueCallerAbandon=require(_0x69a3('0x13'));var Hangup=require(_0x69a3('0x14'));var ipAgi=process[_0x69a3('0x15')][_0x69a3('0x16')]||_0x69a3('0x17');var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence['prototype'][_0x69a3('0x18')]=function(_0x336061){this[_0x69a3('0x19')]=this['tail']?this[_0x69a3('0x19')][_0x69a3('0x1a')](_0x336061):_0x336061();};function Dialer(_0x430a8d,_0x4096f2){this[_0x69a3('0x1b')]=new Sequence();this[_0x69a3('0x1c')]=_0x4096f2;this[_0x69a3('0x1d')]=_0x430a8d[_0x69a3('0x1d')];this[_0x69a3('0x1e')]=_0x430a8d['campaigns'];this[_0x69a3('0x1f')]=_0x430a8d[_0x69a3('0x1f')];this['trunks']=_0x430a8d['trunks'];this[_0x69a3('0x20')]=config[_0x69a3('0x20')]||0x2;this[_0x69a3('0x21')]={};this[_0x69a3('0x22')]={};this['contactsId']={};this[_0x69a3('0x23')]={};this[_0x69a3('0x24')]={};this[_0x69a3('0x25')]={};this['startProgressive']={};this['ivrOriginated']={};this[_0x69a3('0x26')]={};this['queueBookedRR']={};this[_0x69a3('0x27')]={};ami['on'](_0x69a3('0x28'),this[_0x69a3('0x29')][_0x69a3('0x2a')](this));ami['on']('queuecallerabandon',this[_0x69a3('0x2b')][_0x69a3('0x2a')](this));ami['on'](_0x69a3('0x2c'),this['syncOriginateResponse']['bind'](this));ami['on'](_0x69a3('0x2d'),this[_0x69a3('0x2e')]['bind'](this));ami['on'](_0x69a3('0x2f'),this[_0x69a3('0x8')][_0x69a3('0x2a')](this));ami['on'](_0x69a3('0x30'),this[_0x69a3('0x31')][_0x69a3('0x2a')](this));ami['on'](_0x69a3('0x32'),this['syncHangup']['bind'](this));ami['on'](_0x69a3('0x33'),this[_0x69a3('0x34')][_0x69a3('0x2a')](this));ami['on'](_0x69a3('0x35'),this[_0x69a3('0x36')][_0x69a3('0x2a')](this));ami['on'](_0x69a3('0x37'),this[_0x69a3('0x38')][_0x69a3('0x2a')](this));ami['on'](_0x69a3('0x39'),this[_0x69a3('0x3a')][_0x69a3('0x2a')](this));this[_0x69a3('0x3b')]();this[_0x69a3('0x3c')]();RpcSetting[_0x69a3('0x3d')]()['then'](function(_0x596498){previewRecallmeReminderInterval=_0x596498[_0x69a3('0x3e')];});}function isNotNull(_0x36ab0c){return _0x36ab0c!==null&&!_[_0x69a3('0x3f')](_0x36ab0c);}function msgResponse(_0x3b0040,_0x1451fe,_0xde094d){return{'action':_0x3b0040,'response':_0x1451fe,'message':_0xde094d,'stack':_0xde094d};}function emit(_0x157685,_0x560424,_0x2dde8a){io['to'](_0x157685)[_0x69a3('0x40')](_0x560424,_0x2dde8a);}function emitOutboundVoiceQueueSummary(_0x54ca39){if(_0x54ca39[_0x69a3('0x41')]==='outbound'){logger[_0x69a3('0x42')](_0x69a3('0x43'),util[_0x69a3('0x44')](_0x54ca39,{'showHidden':![],'depth':null}));emit(util[_0x69a3('0x45')](_0x69a3('0x46'),_0x54ca39[_0x69a3('0x47')]),_0x69a3('0x48'),_0x54ca39);}}function checkGetDataPredictive(_0x39e31b){if(isNotNull(_0x39e31b)&&!_['isEmpty'](_0x39e31b)){loggerPredictive['info'](_0x69a3('0x49'));loggerPredictive[_0x69a3('0x4a')]('Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x39e31b[_0x69a3('0x4b')]);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x4c'),_0x39e31b['predictiveIntervalAnsweredCalls']);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x4d'),_0x39e31b[_0x69a3('0x4e')]);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x4f'),_0x39e31b[_0x69a3('0x50')]);loggerPredictive['info'](_0x69a3('0x51'),_0x39e31b[_0x69a3('0x52')]);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x53'),_0x39e31b['predictiveIntervalAvgTalktime']);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x54'));if(_0x39e31b[_0x69a3('0x4b')]>0x0){if(!_[_0x69a3('0x3f')](_0x39e31b[_0x69a3('0x55')])&&_0x39e31b[_0x69a3('0x55')]>0x0){return!![];}loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x56'));if(!_[_0x69a3('0x3f')](_0x39e31b['predictiveIntervalAvgHoldtime'])&&_0x39e31b['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive['info'](_0x69a3('0x57'));}else{loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x58'));}}else{loggerPredictive[_0x69a3('0x4a')]('History\x20information\x20are\x20empty');}return![];}function mergeDataErlangB(_0x257e1c){return function(_0x3e7149){loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x59'));loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x5a'),_0x3e7149[_0x69a3('0x5b')]);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x5c'),_0x3e7149[_0x69a3('0x5d')]);loggerPredictive['info'](_0x69a3('0x5e'),_0x3e7149[_0x69a3('0x5f')]);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x60'),_0x3e7149[_0x69a3('0x61')]);loggerPredictive[_0x69a3('0x4a')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3e7149[_0x69a3('0x5f')]);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x54'));_[_0x69a3('0x62')](_0x257e1c,_0x3e7149);};}function ifInterval(_0x275731,_0x3455a5){if(_[_0x69a3('0x3f')](_0x3455a5)){return![];}return utils[_0x69a3('0x63')](undefined,_0x3455a5)<_0x275731*0x3c;}function clearPredictiveAttributes(_0x4faac5){if(_0x4faac5[_0x69a3('0x64')]){_0x4faac5[_0x69a3('0x64')]=undefined;loggerPredictive['debug'](_0x4faac5[_0x69a3('0x47')],_0x69a3('0x65'));}if(_0x4faac5[_0x69a3('0x25')]){_0x4faac5[_0x69a3('0x25')]=undefined;loggerPredictive[_0x69a3('0x42')](_0x4faac5['name'],'startPredictive\x20value\x20cleared');}if(_0x4faac5[_0x69a3('0x66')]){clearInterval(_0x4faac5[_0x69a3('0x66')]);_0x4faac5[_0x69a3('0x66')]=undefined;loggerPredictive[_0x69a3('0x42')](_0x4faac5[_0x69a3('0x47')],_0x69a3('0x67'));}}function loggerCatchPredictive(_0x58d444,_0x51c9e7){return function(_0x12ffba){loggerPredictive[_0x69a3('0x68')](_0x51c9e7[_0x69a3('0x47')],_0x58d444);loggerPredictive[_0x69a3('0x68')](_0x12ffba[_0x69a3('0x69')]);clearPredictiveAttributes(_0x51c9e7);};}function loggerCatch(_0x27fcc8){return function(_0x18016d){logger['error'](_0x27fcc8,util[_0x69a3('0x44')](_0x18016d,{'showHidden':![],'depth':null}));};}function loggerGetContactDialer(_0x2718af,_0x342c3e,_0xee3b17){return function(_0x5231be){utils[_0x69a3('0x6a')](_0x342c3e,_0xee3b17,0x0);_0x342c3e[_0x69a3('0x6b')]=0x0;logger[_0x69a3('0x68')](_0x2718af,util[_0x69a3('0x44')](_0x5231be,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x512e49){return function(_0x1e0ca6){if(isNotNull(_0x1e0ca6)&&isNotNull(_0x1e0ca6[0x0])){if(_0x1e0ca6[0x0][_0x69a3('0x6c')]>0x0){_0x512e49[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')][_0x69a3('0x6f')];logger[_0x69a3('0x4a')]('[getContactDialer2][ReScheduled]'+_0x512e49[_0x69a3('0x47')],_0x1e0ca6[0x0][_0x69a3('0x6c')],_0x69a3('0x70'));}else{_0x512e49[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')]['NO_AVAILABLE_CONTACTS'];logger[_0x69a3('0x4a')]('[getContactDialer2][Empty]'+_0x512e49[_0x69a3('0x47')]);}}};}function createObjHistory(_0x3a99f1,_0x1c412e,_0x5cca5e,_0x2aa421,_0x10bc6a){_0x3a99f1[_0x69a3('0x6d')]=_0x5cca5e;var _0x40d048=new Action(_0x3a99f1,_0x1c412e);var _0x4bd825=new History(_0x40d048);_0x4bd825[_0x69a3('0x71')]=_0x2aa421;_0x4bd825['statedesc']=_0x10bc6a;_0x4bd825[_0x69a3('0x72')]=_0x40d048[_0x69a3('0x73')];return _0x4bd825;}function unlockQueueStatus(_0x10755c,_0x4a0e64){setTimeout(function(){if(_[_0x69a3('0x3f')](_0x10755c[_0x69a3('0x74')])){loggerBooked[_0x69a3('0x68')](_0x69a3('0x75'),_0x4a0e64);}_0x10755c[_0x69a3('0x74')]=!![];loggerBooked[_0x69a3('0x4a')]('[booked][unlockQueueStatus]',_0x4a0e64,JSON[_0x69a3('0x76')](_[_0x69a3('0x77')](_0x10755c,['name','queueStatusComplete'])));},0x1f3);}function checkInterval(_0x36f7a5){return function(){if(!isNotNull(_0x36f7a5[_0x69a3('0x78')])){_0x36f7a5[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')][_0x69a3('0x79')];throw _0x36f7a5['name']+_0x69a3('0x7a');}if(!isNotNull(_0x36f7a5[_0x69a3('0x78')][_0x69a3('0x7b')])){_0x36f7a5[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')]['NULL_INTERVAL'];throw _0x36f7a5[_0x69a3('0x47')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_[_0x69a3('0x7c')](_0x36f7a5[_0x69a3('0x78')]['Intervals']))){_0x36f7a5[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')][_0x69a3('0x79')];throw _0x36f7a5[_0x69a3('0x47')]+_0x69a3('0x7a');}};}function checkIsIVRCampaignActive(_0x3bca89){return function(){if(!utils[_0x69a3('0x7d')](_0x3bca89)){_0x3bca89['message']=utils[_0x69a3('0x6e')][_0x69a3('0x7e')];throw _0x3bca89[_0x69a3('0x47')]+_0x69a3('0x7f');}};}function emitCampaignSummary(_0x36266b){if(utils['isIVRCampaign'](_0x36266b)){emit(util[_0x69a3('0x45')](_0x69a3('0x80'),_0x36266b[_0x69a3('0x47')]),_0x69a3('0x81'),_0x36266b);}}function loggerCatchQueueSummary(_0x264c4d,_0x4a0c83){return function(_0x19ff3b){clearPredictiveAttributes(_0x4a0c83);emitCampaignSummary(_0x4a0c83);loggerSyncQueueSummary[_0x69a3('0x42')](_0x264c4d,util[_0x69a3('0x44')](_0x19ff3b,{'showHidden':![],'depth':null}));};}function notSendMessagesCampaign(_0x3d9b0d){if(_0x3d9b0d[_0x69a3('0x82')]){if(_0x3d9b0d[_0x69a3('0x83')]===0x0){_0x3d9b0d['sendMessageOneNotActive']=![];_0x3d9b0d[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')][_0x69a3('0x7e')];loggerSyncQueueSummary[_0x69a3('0x42')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x3d9b0d[_0x69a3('0x47')],'is\x20not\x20active');}else{_0x3d9b0d['message']=utils[_0x69a3('0x6e')][_0x69a3('0x84')];loggerSyncQueueSummary[_0x69a3('0x42')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x3d9b0d[_0x69a3('0x47')],'is\x20disactive');}emitCampaignSummary(_0x3d9b0d);}}function myreject(_0x4871c0){return function(_0x14bc3d){return _0x4871c0(msgResponse('[ifTime][Action]','Error',JSON[_0x69a3('0x76')](_0x14bc3d)));};}Dialer[_0x69a3('0x85')][_0x69a3('0x86')]=function(_0x5ab0d7){return!_[_0x69a3('0x3f')](_0x5ab0d7)&&_0x5ab0d7&&!_[_0x69a3('0x3f')](_0x5ab0d7['name'])&&!_[_0x69a3('0x3f')](_0x5ab0d7[_0x69a3('0x87')])&&_0x5ab0d7[_0x69a3('0x87')]&&(this[_0x69a3('0x88')][util['format']('SIP/%s',_0x5ab0d7[_0x69a3('0x47')])][_0x69a3('0x89')]===_0x69a3('0x8a')||this['trunks'][util['format'](_0x69a3('0x8b'),_0x5ab0d7[_0x69a3('0x47')])][_0x69a3('0x89')]==='unmonitored');};Dialer[_0x69a3('0x85')]['checkIsTrunkReachable']=function(_0x2a59ba){var _0x3e04a0=this;return function(){if(!_0x3e04a0[_0x69a3('0x86')](_0x2a59ba[_0x69a3('0x8c')])){if(!_0x3e04a0[_0x69a3('0x86')](_0x2a59ba[_0x69a3('0x8d')])){_0x2a59ba['message']=utils[_0x69a3('0x6e')][_0x69a3('0x8e')];throw _0x2a59ba[_0x69a3('0x47')]+_0x69a3('0x8f');}}};};Dialer[_0x69a3('0x85')][_0x69a3('0x90')]=function(_0x436305,_0x4d8fca,_0x46fa70,_0x162af2){var _0x276f3b=this;return function(){var _0x2dc57f=!![];return _0x276f3b[_0x69a3('0x91')](_0x436305,_0x4d8fca,_0x46fa70,_0x162af2,_0x2dc57f);};};Dialer[_0x69a3('0x85')]['checkIfTimeIntervals']=function(_0x95e18f,_0x12fe97,_0x22dbb7,_0x208f97){var _0x4a5d91=this;return function(){var _0x3f05ce=![];return _0x4a5d91['ifTimeIvr'](_0x95e18f['Intervals'],_0x12fe97,_0x22dbb7,_0x208f97,_0x3f05ce);};};Dialer[_0x69a3('0x85')][_0x69a3('0x91')]=function(_0x3eb561,_0x5d83b0,_0xb15adc,_0x8ab981,_0x2a8f2c){var _0x8c2eab=[];return new Promise(function(_0xaa7986,_0x2a69f6){if(!isNotNull(_0x3eb561)){_0x8ab981[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')][_0x69a3('0x79')];return _0x2a69f6(msgResponse('ifTime',_0x69a3('0x92'),_0xb15adc+_0x69a3('0x93')));}if(_['isEmpty'](_0x3eb561)){_0x8ab981[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')][_0x69a3('0x94')];return _0x2a69f6(msgResponse(_0x69a3('0x95'),'Failure',_0xb15adc+'\x20Intervals\x20is\x20empty\x20'));}if(_0x5d83b0&&_[_0x69a3('0x3f')](config[_0x69a3('0x96')][_0x5d83b0])){_0x8ab981[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')][_0x69a3('0x97')];return _0x2a69f6(msgResponse(_0x69a3('0x95'),'Failure',_0xb15adc+_0x69a3('0x98')+_0x5d83b0));}if(_[_0x69a3('0x99')](_0x3eb561)){for(var _0x3fe6b8=0x0;_0x3fe6b8<_0x3eb561['length'];_0x3fe6b8+=0x1){_0x8c2eab[_0x69a3('0x9a')](ami[_0x69a3('0x9b')]({'action':'command','command':util[_0x69a3('0x45')](_0x69a3('0x9c'),_0x3eb561[_0x3fe6b8][_0x69a3('0x9d')],!_[_0x69a3('0x3f')](config[_0x69a3('0x96')][_0x5d83b0])?_0x5d83b0:'')})[_0x69a3('0x9e')](function(_0x222625){return _0x222625[_0x69a3('0x9f')][_0x69a3('0xa0')](_0x69a3('0xa1'))>=0x0;})[_0x69a3('0xa2')](myreject(_0x2a69f6)));}}else{_0x8c2eab[_0x69a3('0x9a')](ami[_0x69a3('0x9b')]({'action':_0x69a3('0xa3'),'command':util[_0x69a3('0x45')](_0x69a3('0x9c'),_0x3eb561,!_[_0x69a3('0x3f')](config[_0x69a3('0x96')][_0x5d83b0])?_0x5d83b0:'')})[_0x69a3('0x9e')](function(_0x504c0a){return _0x504c0a['content']['indexOf'](_0x69a3('0xa1'))>=0x0;})[_0x69a3('0xa2')](myreject(_0x2a69f6)));}Promise[_0x69a3('0xa4')](_0x8c2eab)[_0x69a3('0x9e')](function(_0x4a5f28){var _0x45149e=_[_0x69a3('0xa5')](_0x4a5f28);if(_0x45149e){return _0xaa7986(_0x45149e);}else{_0x8ab981[_0x69a3('0x6d')]=_0x2a8f2c?utils[_0x69a3('0x6e')][_0x69a3('0xa6')]:utils[_0x69a3('0x6e')][_0x69a3('0xa7')];return _0x2a69f6(msgResponse(_0x69a3('0xa8'),'Failure','Global:\x20'+_0x2a8f2c+'\x20'+_0xb15adc+_0x69a3('0xa9')+util[_0x69a3('0x44')](_0x3eb561,{'showHidden':![],'depth':null})+_0x69a3('0xaa')+_0x5d83b0));}})[_0x69a3('0xa2')](function(_0x440ba8){return _0x2a69f6(msgResponse(_0x69a3('0x95'),_0x69a3('0x92'),JSON[_0x69a3('0x76')](_0x440ba8)));});});};Dialer[_0x69a3('0x85')][_0x69a3('0x3b')]=function(){var _0x1922c3=this;return cmHopper[_0x69a3('0xab')]({'active':![]},{'where':{'active':!![]}})[_0x69a3('0x9e')](function(){setInterval(function(){_0x1922c3[_0x69a3('0xac')]();},0x3e8);});};Dialer[_0x69a3('0x85')][_0x69a3('0xac')]=function(){var _0x108a76=this;var _0x271060;for(var _0x552218 in this[_0x69a3('0x1e')]){if(typeof this[_0x69a3('0x1e')][_0x552218]!==_0x69a3('0xad')){_0x271060=this[_0x69a3('0x1e')][_0x552218];if(utils[_0x69a3('0xae')](_0x271060)&&utils[_0x69a3('0x7d')](_0x271060)){_0x271060[_0x69a3('0x82')]=!![];Promise[_0x69a3('0xaf')]()[_0x69a3('0x9e')](checkIsIVRCampaignActive(_0x271060))[_0x69a3('0x9e')](checkInterval(_0x271060))[_0x69a3('0x9e')](_0x108a76[_0x69a3('0xb0')](_0x271060))[_0x69a3('0x9e')](_0x108a76[_0x69a3('0x90')](_0x271060[_0x69a3('0xb1')],_0x271060[_0x69a3('0xb2')],_0x271060['name'],_0x271060))['then'](_0x108a76[_0x69a3('0xb3')](_0x271060[_0x69a3('0x78')],_0x271060[_0x69a3('0xb2')],_0x271060[_0x69a3('0x47')],_0x271060))[_0x69a3('0x9e')](_0x108a76[_0x69a3('0xb4')](_0x271060))[_0x69a3('0xa2')](loggerCatchQueueSummary(_0x69a3('0xb5'),_0x271060));}else{notSendMessagesCampaign(_0x271060);}}}};Dialer[_0x69a3('0x85')]['checkDialMethod']=function(_0x22caf2){if(_0x22caf2[_0x69a3('0xb6')]!==_0x69a3('0x7')){clearPredictiveAttributes(_0x22caf2);}switch(_0x22caf2['dialMethod']){case'progressive':this[_0x69a3('0xb7')](_0x22caf2,0x1);break;case _0x69a3('0xb8'):this[_0x69a3('0xb7')](_0x22caf2,_0x22caf2['dialPowerLevel']);break;case'predictive':this['predictive'](_0x22caf2);break;case _0x69a3('0xb9'):this['handlePower'](_0x22caf2,0x1);break;default:logger[_0x69a3('0x68')](_0x69a3('0xba'),_0x22caf2[_0x69a3('0x47')],'method\x20not\x20recognized');}};Dialer[_0x69a3('0x85')][_0x69a3('0x95')]=function(_0x1796a5,_0x142d33){var _0x5b904e=_0x1796a5[_0x69a3('0xb2')];var _0x4715ae=_0x142d33?_0x1796a5[_0x69a3('0xb1')]:_0x1796a5[_0x69a3('0x78')]['Intervals'];logger[_0x69a3('0xbb')]('Dialer::ifTime()',_0x4715ae,_0x5b904e,_0x1796a5['name'],util['format'](_0x69a3('0xbc'),_0x1796a5[_0x69a3('0x47')],_0x1796a5['id']));var _0x114942=null;return Interval[_0x69a3('0xbd')](_0x4715ae,_0x5b904e)[_0x69a3('0x9e')](function(_0x55d6bf){if(_0x55d6bf===!![]){return _0x55d6bf;}else{_0x1796a5['message']=_0x142d33?utils[_0x69a3('0x6e')][_0x69a3('0xa6')]:utils[_0x69a3('0x6e')][_0x69a3('0xa7')];_0x114942=msgResponse(_0x69a3('0xa8'),_0x69a3('0x92'),_0x69a3('0xbe')+_0x142d33+'\x20'+_0x1796a5['name']+_0x69a3('0xa9')+util[_0x69a3('0x44')](_0x4715ae,{'showHidden':![],'depth':null})+'Timezone:\x20'+_0x5b904e);}if(_0x114942!==null){logger[_0x69a3('0xbb')](_0x69a3('0xbf'),_0x114942);_0x114942[_0x69a3('0xc0')]=_0x142d33;throw _0x114942;}})['catch'](function(_0x435cb9){logger['error'](_0x69a3('0xc1'),_0x435cb9);throw msgResponse(_0x69a3('0xc2'),'Error',util[_0x69a3('0x44')](_0x435cb9,{'showHidden':![],'depth':null}));});};Dialer[_0x69a3('0x85')][_0x69a3('0x29')]=function(_0x567494){if(this['voiceQueues'][_0x567494[_0x69a3('0xc3')]]){if(this[_0x69a3('0x23')][_0x567494['uniqueid']]&&this[_0x69a3('0x23')][_0x567494[_0x69a3('0xc4')]][_0x69a3('0x41')]!==_0x69a3('0xc5')){this['updateOriginated'](this[_0x69a3('0x1d')][_0x567494[_0x69a3('0xc3')]]);this[_0x69a3('0x23')][_0x567494[_0x69a3('0xc4')]][_0x69a3('0xc6')]=moment()['format'](_0x69a3('0xc7'));}}};Dialer[_0x69a3('0x85')][_0x69a3('0x2e')]=function(_0x3dd3bd){var _0x529345=this['uniqueId'][_0x3dd3bd[_0x69a3('0xc4')]];if(this['voiceQueues'][_0x3dd3bd[_0x69a3('0xc3')]]){if(_0x529345&&_0x529345[_0x69a3('0x41')]!==_0x69a3('0xc5')){delete this[_0x69a3('0x23')][_0x3dd3bd[_0x69a3('0xc4')]];this[_0x69a3('0x1d')][_0x3dd3bd['queue']][_0x69a3('0xc8')]+=0x1;var _0x87a928=new AgentComplete(_0x529345,_0x3dd3bd);if(_0x3dd3bd['reason']===_0x69a3('0xc9')){_0x87a928[_0x69a3('0xca')]=this[_0x69a3('0x1d')][_0x3dd3bd[_0x69a3('0xc3')]][_0x69a3('0xcb')]&&this[_0x69a3('0x1d')][_0x3dd3bd[_0x69a3('0xc3')]][_0x69a3('0xcc')]?moment()['format'](_0x69a3('0xc7')):undefined;}hopperUtils[_0x69a3('0xcd')](_0x87a928)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0xce')));hopperUtils[_0x69a3('0xcf')](_0x87a928)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0xd0')));}}};Dialer[_0x69a3('0x85')][_0x69a3('0x2b')]=function(_0x51bfef){var _0x5a21a7=this[_0x69a3('0x23')][_0x51bfef['uniqueid']];var _0x3f2173=this;var _0x514831=![];var _0x4427ad;var _0x53d5bb;if(this[_0x69a3('0x1d')][_0x51bfef['queue']]){if(_0x5a21a7&&_0x5a21a7[_0x69a3('0x41')]!==_0x69a3('0xc5')){delete this[_0x69a3('0x23')][_0x51bfef[_0x69a3('0xc4')]];this[_0x69a3('0xd1')](this[_0x69a3('0x1d')][_0x51bfef['queue']]);_0x5a21a7[_0x69a3('0xd2')]=moment()[_0x69a3('0x45')](_0x69a3('0xc7'));var _0x3098d3=new QueueCallerAbandon(_0x5a21a7,_0x51bfef);if(utils[_0x69a3('0x63')](_0x5a21a7[_0x69a3('0xd2')],_0x5a21a7['responsetime'])>=_0x5a21a7['dialQueueTimeout']){this[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]][_0x69a3('0x4e')]+=0x1;this[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]][_0x69a3('0xd3')]+=0x1;this[_0x69a3('0x1d')][_0x51bfef['queue']][_0x69a3('0xd4')]+=0x1;_0x3098d3[_0x69a3('0x71')]=0xa;_0x3098d3[_0x69a3('0xd5')]='Drop';_0x3098d3[_0x69a3('0xd6')]=_0x69a3('0xd7');_0x3098d3[_0x69a3('0xca')]=this[_0x69a3('0x1d')][_0x51bfef['queue']][_0x69a3('0xcb')]?moment()[_0x69a3('0x45')](_0x69a3('0xc7')):undefined;_0x3098d3[_0x69a3('0xd8')]+=0x1;_0x3098d3[_0x69a3('0xd9')]+=0x1;_0x4427ad=this['voiceQueues'][_0x51bfef[_0x69a3('0xc3')]][_0x69a3('0xda')];_0x53d5bb=this[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]][_0x69a3('0xdb')];hopperUtils[_0x69a3('0xdc')](_0x3098d3,_0x3098d3[_0x69a3('0x71')],_0x5a21a7[_0x69a3('0xdd')])[_0x69a3('0x9e')](function(_0x584843){_0x514831=_0x584843[_0x69a3('0xde')]==0x1;if(_0x3098d3[_0x69a3('0xd8')]>=_0x3f2173[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]][_0x69a3('0xdf')]){_0x3f2173[_0x69a3('0xe0')](_0x3098d3,_0x584843[_0x69a3('0xde')]);}else{hopperUtils[_0x69a3('0xe1')]({'active':![],'countdropretry':_0x3098d3[_0x69a3('0xd8')],'scheduledat':moment()[_0x69a3('0xe2')](_0x3f2173[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]]['dialDropRetryFrequency'],_0x69a3('0xe3'))[_0x69a3('0x45')](_0x69a3('0xc7')),'ContactId':_0x5a21a7[_0x69a3('0xe4')],'ListId':_0x5a21a7['ListId'],'VoiceQueueId':_0x5a21a7['VoiceQueueId']||undefined,'CampaignId':_0x5a21a7[_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0xe6')));var _0xf65df0=new History(_0x3098d3);_0xf65df0[_0x69a3('0x71')]=0xa;_0xf65df0['statedesc']=_0x69a3('0xe7');_0xf65df0[_0x69a3('0x73')]=moment()[_0x69a3('0x45')](_0x69a3('0xc7'));_0xf65df0[_0x69a3('0x72')]=_0xf65df0[_0x69a3('0x73')];_0xf65df0[_0x69a3('0xe8')]=_0x3098d3['calleridname'];_0xf65df0['calleridnum']=_0x3098d3[_0x69a3('0xe9')];hopperUtils[_0x69a3('0xcd')](_0xf65df0)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0xea')));}})[_0x69a3('0x9e')](function(){if(_0x514831)hopperUtils['swapAdditionalPhones'](_0x3098d3,_0x4427ad,_0x53d5bb)[_0x69a3('0x9e')](function(){return 0x1;});});}else{this[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]][_0x69a3('0x50')]+=0x1;this[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]][_0x69a3('0xeb')]+=0x1;_0x3098d3[_0x69a3('0x71')]=0xb;_0x3098d3['statedesc']=_0x69a3('0xec');_0x3098d3[_0x69a3('0xd6')]='CALLEREXIT';_0x3098d3[_0x69a3('0xed')]+=0x1;_0x3098d3['countglobal']+=0x1;_0x4427ad=this[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]][_0x69a3('0xee')];_0x53d5bb=this[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]][_0x69a3('0xdb')];hopperUtils[_0x69a3('0xdc')](_0x3098d3,_0x3098d3[_0x69a3('0x71')],_0x5a21a7['voiceQueue'])[_0x69a3('0x9e')](function(_0x2683eb){if(_0x3098d3['countabandonedretry']>=_0x3f2173[_0x69a3('0x1d')][_0x51bfef[_0x69a3('0xc3')]]['dialAbandonedMaxRetry']){_0x3f2173[_0x69a3('0xe0')](_0x3098d3,_0x2683eb[_0x69a3('0xde')]);}else{hopperUtils[_0x69a3('0xe1')]({'active':![],'countabandonedretry':_0x3098d3[_0x69a3('0xed')],'scheduledat':moment()['add'](_0x3f2173[_0x69a3('0x1d')][_0x51bfef['queue']][_0x69a3('0xee')],_0x69a3('0xe3'))[_0x69a3('0x45')](_0x69a3('0xc7')),'ContactId':_0x5a21a7['ContactId'],'ListId':_0x5a21a7['ListId'],'VoiceQueueId':_0x5a21a7['VoiceQueueId']||undefined,'CampaignId':_0x5a21a7['CampaignId']||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0xef')));var _0x418a75=new History(_0x3098d3);_0x418a75['state']=0xb;_0x418a75[_0x69a3('0xd5')]=_0x69a3('0xec');_0x418a75[_0x69a3('0x73')]=moment()[_0x69a3('0x45')]('YYYY-MM-DD\x20HH:mm:ss');_0x418a75[_0x69a3('0x72')]=_0x418a75['starttime'];_0x418a75[_0x69a3('0xe8')]=_0x3098d3[_0x69a3('0xe8')];_0x418a75[_0x69a3('0xe9')]=_0x3098d3['calleridnum'];hopperUtils[_0x69a3('0xcd')](_0x418a75)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0xf0')));}})[_0x69a3('0x9e')](function(){if(_0x514831)hopperUtils[_0x69a3('0xf1')](_0x3098d3,_0x4427ad,_0x53d5bb)['then'](function(){return 0x1;});});}}}};Dialer[_0x69a3('0x85')][_0x69a3('0x34')]=function(_0x3f8a30){if(this[_0x69a3('0x22')][_0x3f8a30[_0x69a3('0xc4')]]){this[_0x69a3('0x22')][_0x3f8a30[_0x69a3('0xc4')]][_0x69a3('0xf2')]=_0x3f8a30[_0x69a3('0xf2')];}if(this[_0x69a3('0x23')][_0x3f8a30[_0x69a3('0xc4')]]){this['uniqueId'][_0x3f8a30[_0x69a3('0xc4')]][_0x69a3('0xf2')]=_0x3f8a30[_0x69a3('0xf2')];}};Dialer['prototype'][_0x69a3('0x38')]=function(_0x306f63){if(!this['actions'][_0x306f63[_0x69a3('0xf3')]]){return;}var _0x215805=this[_0x69a3('0x1d')][this['actions'][_0x306f63[_0x69a3('0xf3')]][_0x69a3('0xc3')]][_0x69a3('0xf4')]||_0x69a3('0xf5');if(_0x215805===_0x69a3('0xf6')){if(this[_0x69a3('0x22')][_0x306f63['actionid']]&&_[_0x69a3('0xf7')](this[_0x69a3('0x22')][_0x306f63['actionid']]['locked'])&&_0x306f63[_0x69a3('0x89')]==='1'&&_0x306f63[_0x69a3('0xf8')]==='0'){if(this['agents'][_0x306f63['stateinterface']]){if(!this[_0x69a3('0x1f')][_0x306f63[_0x69a3('0xf9')]][_0x69a3('0xfa')]){this[_0x69a3('0x1f')][_0x306f63['stateinterface']][_0x69a3('0xfa')]=!![];this[_0x69a3('0x22')][_0x306f63[_0x69a3('0xf3')]]['locked']=!![];this[_0x69a3('0x22')][_0x306f63['actionid']]['stateinterface']=_0x306f63[_0x69a3('0xf9')];}}}}else if(_0x215805==='rrmemory'){if(this[_0x69a3('0x22')][_0x306f63[_0x69a3('0xf3')]]){if(this[_0x69a3('0x1f')][_0x306f63[_0x69a3('0xf9')]]){this[_0x69a3('0x22')][_0x306f63[_0x69a3('0xf3')]][_0x69a3('0xf9')]=_0x306f63[_0x69a3('0xf9')];if(_['isNil'](this['queueBooked'][this['actions'][_0x306f63[_0x69a3('0xf3')]][_0x69a3('0xc3')]])){this['queueBooked'][this['actions'][_0x306f63['actionid']]['queue']]=[];}this[_0x69a3('0x26')][this[_0x69a3('0x22')][_0x306f63[_0x69a3('0xf3')]][_0x69a3('0xc3')]][_0x69a3('0x9a')](_[_0x69a3('0x62')](_[_0x69a3('0x77')](this[_0x69a3('0x22')][_0x306f63[_0x69a3('0xf3')]],[_0x69a3('0xfb'),_0x69a3('0xf9')]),{'status':_0x306f63[_0x69a3('0x89')],'paused':_0x306f63['paused']}));}}}};Dialer['prototype']['syncQueueStatusComplete']=function(_0x44b437){if(!this['actions'][_0x44b437['actionid']]){return;}var _0x2b4636=this;var _0x1e53b9=this[_0x69a3('0x1d')][this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]]['queue']];var _0x5cde3d=_0x1e53b9[_0x69a3('0xf4')]||'rrmemory';if(_0x5cde3d===_0x69a3('0xf6')){if(this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]]&&this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xf9')]){this[_0x69a3('0x1c')][_0x69a3('0xfc')](this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]]['idHopper'],this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xf9')])[_0x69a3('0xa2')](function(_0x56d523){logger[_0x69a3('0x68')](_0x69a3('0xfd'),util[_0x69a3('0x44')](_0x56d523,{'showHidden':![],'depth':null}));})[_0x69a3('0x1a')](function(){_0x2b4636[_0x69a3('0xd1')](_0x2b4636[_0x69a3('0x1d')][_0x2b4636[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]]['queue']]);_0x2b4636[_0x69a3('0x1f')][_0x2b4636[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xf9')]][_0x69a3('0xfa')]=![];delete _0x2b4636[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]];unlockQueueStatus(_0x1e53b9);});}else{this[_0x69a3('0xd1')](this[_0x69a3('0x1d')][this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]]);hopperUtils['rescheduleContact']({'active':![],'ContactId':this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xe4')],'ListId':this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xfe')],'VoiceQueueId':this['actions'][_0x44b437[_0x69a3('0xf3')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x44b437['actionid']][_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this['actions'][_0x44b437[_0x69a3('0xf3')]];unlockQueueStatus(_0x1e53b9);}}else if(_0x5cde3d===_0x69a3('0xf5')){var _0x1968ee;if(this['actions'][_0x44b437[_0x69a3('0xf3')]]&&!_[_0x69a3('0x7c')](this[_0x69a3('0x26')][this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]])){if(this[_0x69a3('0xff')][_0x2b4636['actions'][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]]){this[_0x69a3('0xff')][_0x2b4636[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]]['queue']]=this[_0x69a3('0xff')][this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]]?this[_0x69a3('0xff')][this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]]:this[_0x69a3('0x26')][this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]]['queue']]?this[_0x69a3('0x26')][this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]][_0x69a3('0x100')]||0x0:0x0;}this[_0x69a3('0x26')][this[_0x69a3('0x22')][_0x44b437['actionid']]['queue']][_0x69a3('0x100')]=this[_0x69a3('0xff')][this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]]['queue']];for(var _0x1b4f20=0x0;_0x1b4f20<this[_0x69a3('0x26')][this['actions'][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]][_0x69a3('0x101')];_0x1b4f20+=0x1){_0x1968ee=rr(this['queueBooked'][this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]]);this[_0x69a3('0xff')][_0x2b4636[_0x69a3('0x22')][_0x44b437['actionid']][_0x69a3('0xc3')]]=this[_0x69a3('0x26')][this['actions'][_0x44b437['actionid']][_0x69a3('0xc3')]][_0x69a3('0x100')];if(_0x1968ee[_0x69a3('0x89')]==='1'&&_0x1968ee[_0x69a3('0xf8')]==='0'){break;}}if(!_['isNil'](_0x1968ee)){this[_0x69a3('0x1f')][_0x1968ee[_0x69a3('0xf9')]][_0x69a3('0x102')]=_['isUndefined'](this[_0x69a3('0x1f')][_0x1968ee[_0x69a3('0xf9')]]['unlockRR'])?!![]:this[_0x69a3('0x1f')][_0x1968ee[_0x69a3('0xf9')]]['unlockRR'];}loggerBooked[_0x69a3('0x4a')](_0x69a3('0x103'),_0x44b437[_0x69a3('0xf3')],_0x69a3('0x104'),JSON[_0x69a3('0x76')](_['pick'](this[_0x69a3('0x1f')][_0x1968ee['stateinterface']],[_0x69a3('0x47'),_0x69a3('0x102')])),_0x69a3('0x105'),JSON[_0x69a3('0x76')](_0x1968ee[_0x69a3('0xfb')]));if(!_[_0x69a3('0xf7')](_0x1968ee)&&_0x1968ee['status']==='1'&&_0x1968ee[_0x69a3('0xf8')]==='0'&&this[_0x69a3('0x1f')][_0x1968ee['stateinterface']][_0x69a3('0x102')]){this[_0x69a3('0x1f')][_0x1968ee[_0x69a3('0xf9')]]['unlockRR']=![];this[_0x69a3('0x26')][_0x2b4636['actions'][_0x44b437['actionid']]['queue']]=[];this[_0x69a3('0x1c')][_0x69a3('0xfc')](_0x1968ee[_0x69a3('0xfb')],_0x1968ee[_0x69a3('0xf9')])[_0x69a3('0xa2')](function(_0x5091ef){logger[_0x69a3('0x68')]('[Catch][Preview][syncQueueStatusComplete]',util[_0x69a3('0x44')](_0x5091ef,{'showHidden':![],'depth':null}));})[_0x69a3('0x1a')](function(){_0x2b4636[_0x69a3('0xd1')](_0x2b4636[_0x69a3('0x1d')][_0x2b4636[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]]);setTimeout(function(){_0x2b4636['agents'][_0x1968ee['stateinterface']][_0x69a3('0x102')]=!![];loggerBooked[_0x69a3('0x4a')](_0x69a3('0x106'),_0x44b437[_0x69a3('0xf3')],'Agent:\x20',JSON['stringify'](_[_0x69a3('0x77')](_0x2b4636[_0x69a3('0x1f')][_0x1968ee['stateinterface']],[_0x69a3('0x47'),'unlockRR'])),_0x69a3('0x105'),JSON['stringify'](_0x1968ee[_0x69a3('0xfb')]));},0xc7);delete _0x2b4636[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]];unlockQueueStatus(_0x1e53b9,_0x44b437['actionid']);});}else{loggerBooked[_0x69a3('0x4a')](_0x69a3('0x107'));this[_0x69a3('0xd1')](this[_0x69a3('0x1d')][this['actions'][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]]);hopperUtils[_0x69a3('0xe1')]({'active':![],'ContactId':this[_0x69a3('0x22')][_0x44b437['actionid']][_0x69a3('0xe4')],'ListId':this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xfe')],'VoiceQueueId':this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0x108')]||undefined,'CampaignId':this[_0x69a3('0x22')][_0x44b437['actionid']]['CampaignId']||undefined})[_0x69a3('0xa2')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0x69a3('0x22')][_0x44b437['actionid']];unlockQueueStatus(_0x1e53b9);}}else{loggerBooked[_0x69a3('0x4a')](_0x69a3('0x109'));this['updateOriginated'](this['voiceQueues'][this['actions'][_0x44b437['actionid']][_0x69a3('0xc3')]]);hopperUtils[_0x69a3('0xe1')]({'active':![],'ContactId':this[_0x69a3('0x22')][_0x44b437['actionid']][_0x69a3('0xe4')],'ListId':this['actions'][_0x44b437[_0x69a3('0xf3')]]['ListId'],'VoiceQueueId':this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0x108')]||undefined,'CampaignId':this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x10a')));delete this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]];unlockQueueStatus(_0x1e53b9);}}else{loggerBooked[_0x69a3('0x4a')](_0x69a3('0x10b'));this[_0x69a3('0xd1')](this[_0x69a3('0x1d')][this['actions'][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xc3')]]);hopperUtils[_0x69a3('0xe1')]({'active':![],'ContactId':this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]][_0x69a3('0xe4')],'ListId':this['actions'][_0x44b437['actionid']][_0x69a3('0xfe')],'VoiceQueueId':this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]]['VoiceQueueId']||undefined,'CampaignId':this[_0x69a3('0x22')][_0x44b437[_0x69a3('0xf3')]]['CampaignId']||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x10c')));delete this[_0x69a3('0x22')][_0x44b437['actionid']];unlockQueueStatus(_0x1e53b9);}};Dialer[_0x69a3('0x85')][_0x69a3('0x10d')]=function(_0x4c9f6f){var _0x2d9f46=this['actions'][_0x4c9f6f[_0x69a3('0xf3')]];if(_0x2d9f46){delete this[_0x69a3('0x22')][_0x4c9f6f[_0x69a3('0xf3')]];_0x2d9f46[_0x69a3('0x10e')]=moment()[_0x69a3('0x45')](_0x69a3('0xc7'));var _0x5520e1=_0x2d9f46[_0x69a3('0x41')]===_0x69a3('0xc5')?this[_0x69a3('0x1e')][_0x2d9f46[_0x69a3('0xc3')]]:this[_0x69a3('0x1d')][_0x2d9f46[_0x69a3('0x10f')]()];if(_0x4c9f6f['response']!==_0x69a3('0x110')){this[_0x69a3('0xd1')](_0x5520e1);return this[_0x69a3('0x111')](_0x2d9f46,_0x5520e1,_0x4c9f6f)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x112')));}this['uniqueId'][_0x4c9f6f[_0x69a3('0xc4')]]=_0x2d9f46;}};Dialer[_0x69a3('0x85')][_0x69a3('0x36')]=function(_0x3a8c5c){var _0x3eb441=this;var _0x4e38a4=this['uniqueId'][_0x3a8c5c[_0x69a3('0xc4')]];var _0x3621f0;if(!_[_0x69a3('0xf7')](_0x3a8c5c)&&!_[_0x69a3('0xf7')](_0x3a8c5c[_0x69a3('0x113')])&&!_[_0x69a3('0xf7')](_0x3a8c5c[_0x69a3('0x113')]['amdstatus'])&&_0x3a8c5c[_0x69a3('0x114')]===_0x69a3('0x115')&&_0x4e38a4){if(_0x4e38a4[_0x69a3('0x41')]!==_0x69a3('0xc5')&&this['voiceQueues'][_0x4e38a4['queue']][_0x69a3('0x116')]&&_0x3a8c5c[_0x69a3('0x117')]===_0x69a3('0x118')){delete this[_0x69a3('0x23')][_0x3a8c5c['uniqueid']];this[_0x69a3('0xd1')](this['voiceQueues'][_0x4e38a4[_0x69a3('0xc3')]]);this[_0x69a3('0x1d')][_0x4e38a4['queue']][_0x69a3('0xc8')]+=0x1;this[_0x69a3('0x1d')][_0x4e38a4[_0x69a3('0xc3')]][_0x69a3('0x119')]+=0x1;_0x3621f0=new Hangup(_0x4e38a4,_0x3a8c5c);_0x3621f0[_0x69a3('0x71')]=0x12;_0x3621f0[_0x69a3('0xd5')]=_0x69a3('0x11a');_0x3621f0[_0x69a3('0x11b')]=_0x69a3('0x11c');ami[_0x69a3('0x40')](_0x69a3('0x11d'),ut['buildObj'](_0x3621f0,'amd'));this[_0x69a3('0x11e')](_0x3621f0,_0x69a3('0x11f'),_0x69a3('0x120'));}if(_0x4e38a4[_0x69a3('0x41')]!=='ivr'&&this['voiceQueues'][_0x4e38a4['queue']][_0x69a3('0x116')]&&_0x3a8c5c[_0x69a3('0x117')]===_0x69a3('0x121')){return new Promise(function(_0xa6d922,_0x1e6653){delete _0x3eb441[_0x69a3('0x23')][_0x3a8c5c['uniqueid']];_0x3eb441[_0x69a3('0xd1')](_0x3eb441[_0x69a3('0x1d')][_0x4e38a4[_0x69a3('0xc3')]]);_0x3eb441[_0x69a3('0x1d')][_0x4e38a4[_0x69a3('0xc3')]][_0x69a3('0xc8')]+=0x1;_0x3eb441[_0x69a3('0x1d')][_0x4e38a4['queue']][_0x69a3('0x119')]+=0x1;var _0x2ca574=_0x3eb441['voiceQueues'][_0x4e38a4['queue']];var _0x993348=new Hangup(_0x4e38a4,_0x3a8c5c);_0x993348[_0x69a3('0x71')]=0x13;_0x993348[_0x69a3('0xd5')]='Machine';_0x993348['membername']=_0x69a3('0x11c');_0x993348[_0x69a3('0x122')]+=0x1;_0x993348['countglobal']+=0x1;_0x993348[_0x69a3('0x123')]=!![];ami[_0x69a3('0x40')]('custom:amd',ut[_0x69a3('0x124')](_0x993348,_0x69a3('0x123')));hopperUtils[_0x69a3('0xcd')](_0x993348)['catch'](loggerCatch(_0x69a3('0x125')));if(_0x993348[_0x69a3('0x126')]+_0x993348[_0x69a3('0x127')]+_0x993348[_0x69a3('0x128')]+_0x993348[_0x69a3('0x129')]+_0x993348['countdropretry']+_0x993348[_0x69a3('0xed')]+_0x993348[_0x69a3('0x122')]+_0x993348['countagentrejectretry']>=_0x2ca574['dialGlobalMaxRetry']){_0x3eb441[_0x69a3('0x12a')](_0x993348,_0xa6d922,_0x1e6653,_0x69a3('0x12b'));}else{if(_0x993348[_0x69a3('0x122')]>=_0x2ca574[_0x69a3('0x12c')]){_0x3eb441[_0x69a3('0x12d')](_0x993348,_0xa6d922,_0x1e6653,_0x69a3('0x12e'));}else{hopperUtils[_0x69a3('0xe1')]({'active':![],'countmachineretry':_0x993348[_0x69a3('0x122')],'scheduledat':moment()['add'](_0x2ca574[_0x69a3('0x12f')],_0x69a3('0xe3'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x993348[_0x69a3('0xe4')],'ListId':_0x993348[_0x69a3('0xfe')],'VoiceQueueId':_0x993348[_0x69a3('0x108')]||undefined,'CampaignId':_0x993348[_0x69a3('0xe5')]||undefined})['catch'](loggerCatch(_0x69a3('0x130')));_0xa6d922({'reschedule':0x1});}}});}if(_0x4e38a4[_0x69a3('0x41')]===_0x69a3('0xc5')&&this['campaigns'][_0x4e38a4[_0x69a3('0xc3')]][_0x69a3('0x116')]&&_0x3a8c5c[_0x69a3('0x117')]===_0x69a3('0x118')){delete this[_0x69a3('0x23')][_0x3a8c5c[_0x69a3('0xc4')]];this[_0x69a3('0xd1')](this[_0x69a3('0x1e')][_0x4e38a4['queue']]);_0x3621f0=new Hangup(_0x4e38a4,_0x3a8c5c);_0x3621f0[_0x69a3('0x71')]=0x12;_0x3621f0[_0x69a3('0xd5')]=_0x69a3('0x11a');_0x3621f0['membername']='AMD';ami[_0x69a3('0x40')](_0x69a3('0x11d'),ut[_0x69a3('0x124')](_0x3621f0,_0x69a3('0x123')));this['saveInDb'](_0x3621f0,'[syncHangupInAMDIvr][createHistory]',_0x69a3('0x131'));}if(_0x4e38a4['type']===_0x69a3('0xc5')&&this[_0x69a3('0x1e')][_0x4e38a4['queue']][_0x69a3('0x116')]&&_0x3a8c5c[_0x69a3('0x117')]===_0x69a3('0x121')){return new Promise(function(_0x72a0bc,_0x30aa94){delete _0x3eb441[_0x69a3('0x23')][_0x3a8c5c[_0x69a3('0xc4')]];_0x3eb441[_0x69a3('0xd1')](_0x3eb441[_0x69a3('0x1e')][_0x4e38a4['queue']]);_0x3eb441[_0x69a3('0x1e')][_0x4e38a4[_0x69a3('0xc3')]]['outboundAnswerCallsDay']+=0x1;_0x3eb441[_0x69a3('0x1e')][_0x4e38a4[_0x69a3('0xc3')]][_0x69a3('0x119')]+=0x1;var _0x5422c5=_0x3eb441[_0x69a3('0x1e')][_0x4e38a4[_0x69a3('0xc3')]];var _0x4ba030=new Hangup(_0x4e38a4,_0x3a8c5c);_0x4ba030['state']=0x13;_0x4ba030[_0x69a3('0xd5')]=_0x69a3('0x132');_0x4ba030[_0x69a3('0x11b')]=_0x69a3('0x11c');_0x4ba030[_0x69a3('0x122')]+=0x1;_0x4ba030[_0x69a3('0xd9')]+=0x1;_0x4ba030['amd']=!![];ami[_0x69a3('0x40')](_0x69a3('0x11d'),ut[_0x69a3('0x124')](_0x4ba030,_0x69a3('0x123')));hopperUtils[_0x69a3('0xcd')](_0x4ba030)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x125')));if(_0x4ba030['countbusyretry']+_0x4ba030[_0x69a3('0x127')]+_0x4ba030[_0x69a3('0x128')]+_0x4ba030[_0x69a3('0x129')]+_0x4ba030['countdropretry']+_0x4ba030[_0x69a3('0xed')]+_0x4ba030[_0x69a3('0x122')]+_0x4ba030['countagentrejectretry']>=_0x5422c5[_0x69a3('0x133')]){_0x3eb441[_0x69a3('0x12a')](_0x4ba030,_0x72a0bc,_0x30aa94,_0x69a3('0x12b'));}else{if(_0x4ba030[_0x69a3('0x122')]>=_0x5422c5[_0x69a3('0x12c')]){_0x3eb441['createStateFinal'](_0x4ba030,_0x72a0bc,_0x30aa94,_0x69a3('0x12e'));}else{hopperUtils[_0x69a3('0xe1')]({'active':![],'countmachineretry':_0x4ba030[_0x69a3('0x122')],'scheduledat':moment()['add'](_0x5422c5[_0x69a3('0x12f')],_0x69a3('0xe3'))[_0x69a3('0x45')](_0x69a3('0xc7')),'ContactId':_0x4ba030[_0x69a3('0xe4')],'ListId':_0x4ba030[_0x69a3('0xfe')],'VoiceQueueId':_0x4ba030[_0x69a3('0x108')]||undefined,'CampaignId':_0x4ba030[_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x130')));_0x72a0bc({'reschedule':0x1});}}});}}};Dialer[_0x69a3('0x85')]['syncHangup']=function(_0x5728be){var _0xcf36e6=this[_0x69a3('0x23')][_0x5728be[_0x69a3('0xc4')]];var _0x214272;if(_0xcf36e6&&_0xcf36e6[_0x69a3('0x41')]===_0x69a3('0xc5')){delete this[_0x69a3('0x23')][_0x5728be[_0x69a3('0xc4')]];this[_0x69a3('0xd1')](this[_0x69a3('0x1e')][_0xcf36e6[_0x69a3('0xc3')]]);this[_0x69a3('0x1e')][_0xcf36e6[_0x69a3('0xc3')]][_0x69a3('0x134')]+=0x1;_0x214272=new Hangup(_0xcf36e6,_0x5728be);hopperUtils[_0x69a3('0xcd')](_0x214272)[_0x69a3('0xa2')](loggerCatch('[syncHangupIvr][createHistory]'));hopperUtils[_0x69a3('0xcf')](_0x214272)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x135')));}if(_0xcf36e6&&_0xcf36e6[_0x69a3('0x41')]!==_0x69a3('0xc5')&&isNotNull(this[_0x69a3('0x1d')][_0xcf36e6['queue']][_0x69a3('0x136')])){delete this[_0x69a3('0x23')][_0x5728be[_0x69a3('0xc4')]];this['updateOriginated'](this[_0x69a3('0x1d')][_0xcf36e6[_0x69a3('0xc3')]]);this['voiceQueues'][_0xcf36e6[_0x69a3('0xc3')]][_0x69a3('0xc8')]+=0x1;this[_0x69a3('0x1d')][_0xcf36e6[_0x69a3('0xc3')]]['outboundAnswerAgiCallsDay']+=0x1;_0x214272=new Hangup(_0xcf36e6,_0x5728be);_0x214272['state']=0x10;_0x214272[_0x69a3('0xd5')]=_0x69a3('0x137');_0x214272['membername']='AGI';hopperUtils[_0x69a3('0xcd')](_0x214272)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x138')));hopperUtils['moveContactManagedDialer'](_0x214272)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x135')));}if(_0xcf36e6&&_0xcf36e6[_0x69a3('0x41')]!=='ivr'&&!isNotNull(this[_0x69a3('0x1d')][_0xcf36e6[_0x69a3('0xc3')]][_0x69a3('0x136')])){delete this['uniqueId'][_0x5728be['uniqueid']];this['updateOriginated'](this['voiceQueues'][_0xcf36e6['queue']]);this[_0x69a3('0x1d')][_0xcf36e6[_0x69a3('0xc3')]][_0x69a3('0x139')]+=0x1;_0x214272=new Hangup(_0xcf36e6,_0x5728be);_0x214272[_0x69a3('0x71')]=0xc;_0x214272[_0x69a3('0xd5')]=_0x5728be[_0x69a3('0x13a')];_0x214272[_0x69a3('0x11b')]=_0x69a3('0x13b');hopperUtils['createHistory'](_0x214272)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x138')));hopperUtils['moveContactManagedDialer'](_0x214272)['catch'](loggerCatch(_0x69a3('0x135')));}};Dialer[_0x69a3('0x85')]['syncQueueSummary']=function(_0x1b7c58){var _0x50bf3c=this;if(!_0x50bf3c[_0x69a3('0x27')][_0x1b7c58[_0x69a3('0x47')]]){_0x50bf3c['queuesSummary'][_0x1b7c58[_0x69a3('0x47')]]={'running':![]};}else if(_0x50bf3c['queuesSummary'][_0x1b7c58['name']][_0x69a3('0x13c')]===!![]){return;}else if(_0x50bf3c[_0x69a3('0x27')][_0x1b7c58[_0x69a3('0x47')]]['running']===![]){_0x50bf3c[_0x69a3('0x27')][_0x1b7c58[_0x69a3('0x47')]][_0x69a3('0x13c')]=!![];}var _0x13f157=_0x50bf3c[_0x69a3('0x1d')][_0x1b7c58[_0x69a3('0x47')]];var _0x6fe2bf=_0x13f157[_0x69a3('0x6d')]!==utils['CAMPAIGN_STATUS'][_0x69a3('0x7e')];var _0x1958d9=utils[_0x69a3('0x13d')](_0x13f157);_0x13f157[_0x69a3('0x13e')]=utils[_0x69a3('0x13f')](_0x13f157,_0x50bf3c[_0x69a3('0x88')]);Promise[_0x69a3('0xaf')]()[_0x69a3('0x9e')](function(){if(_0x13f157[_0x69a3('0x13e')]===utils[_0x69a3('0x6e')][_0x69a3('0x7e')]){if(_0x6fe2bf){clearPredictiveAttributes(_0x13f157);_0x1b7c58['startPredictive']=undefined;_0x1b7c58[_0x69a3('0x64')]=undefined;}if(_0x13f157[_0x69a3('0x13e')]===utils[_0x69a3('0x6e')]['INACTIVE']){_0x1b7c58['available']=0x0;_0x1b7c58[_0x69a3('0xf8')]=0x0;_0x1b7c58[_0x69a3('0x140')]=0x0;_0x1b7c58[_0x69a3('0x141')]=0x0;_0x1b7c58['pTalking']=0x0;}}else if(_0x13f157[_0x69a3('0x13e')]===utils[_0x69a3('0x6e')][_0x69a3('0x142')]&&!_0x1958d9){return _0x50bf3c[_0x69a3('0x95')](_0x13f157,!![])[_0x69a3('0x9e')](function(){return _0x50bf3c[_0x69a3('0x95')](_0x13f157,![]);})[_0x69a3('0x9e')](function(){return _0x50bf3c['checkDialMethod'](_0x13f157);})[_0x69a3('0xa2')](function(_0x5cfa64){loggerSyncQueueSummary['debug'](_0x69a3('0x143'),util[_0x69a3('0x44')](_0x5cfa64,{'showHidden':![],'depth':null}));clearPredictiveAttributes(_0x13f157);});}else{clearPredictiveAttributes(_0x13f157);}})[_0x69a3('0x9e')](function(){var _0x35e40d=_0x1b7c58[_0x69a3('0x144')](_0x13f157);if(_0x35e40d||_0x13f157[_0x69a3('0x145')]){_0x13f157['queueSummaryCountersUpdated']=![];_0x1b7c58[_0x69a3('0x146')](_0x13f157);Object[_0x69a3('0x147')](_0x13f157,_0x1b7c58);emitOutboundVoiceQueueSummary(_0x1b7c58);}_0x50bf3c['queuesSummary'][_0x13f157['name']][_0x69a3('0x13c')]=![];})[_0x69a3('0xa2')](function(_0x36fbdb){logger[_0x69a3('0x68')](_0x69a3('0x143'),util[_0x69a3('0x44')](_0x36fbdb,{'showHidden':![],'depth':null}));_0x50bf3c['queuesSummary'][_0x13f157[_0x69a3('0x47')]][_0x69a3('0x13c')]=![];});};Dialer[_0x69a3('0x85')][_0x69a3('0x31')]=_['throttle'](function(){var _0x5eb2e9=_[_0x69a3('0x148')](this[_0x69a3('0x1d')],function(_0x46016e){return _0x46016e[_0x69a3('0x149')];});var _0x4c7418=_[_0x69a3('0x148')](this[_0x69a3('0x1f')],function(_0x9ca67f){return _0x9ca67f[_0x69a3('0x14a')]&&_0x9ca67f[_0x69a3('0x89')]===_0x69a3('0x8a');});if(_0x5eb2e9[_0x69a3('0x101')]>0x0&&_0x4c7418[_0x69a3('0x101')]>0x0){return Promise['resolve']()[_0x69a3('0x9e')](cmHopper[_0x69a3('0x14b')](_[_0x69a3('0x14c')](_0x5eb2e9,'id'),previewRecallmeReminderInterval,_[_0x69a3('0x14c')](_0x4c7418,'id')))['then'](function(_0x25ad1e){for(var _0x6984aa=0x0;_0x6984aa<_0x25ad1e[_0x69a3('0x101')];_0x6984aa++){var _0x3d7d97=_0x25ad1e[_0x6984aa][_0x69a3('0x14d')][_0x69a3('0x47')];if(_0x3d7d97)io['to'](util[_0x69a3('0x45')](_0x69a3('0x14e'),_0x3d7d97))[_0x69a3('0x40')](_0x69a3('0x14f'),{'hopper':_0x25ad1e[_0x6984aa]});}})[_0x69a3('0xa2')](function(_0x36d336){logger[_0x69a3('0x68')](_0x69a3('0x150'),_0x36d336);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0x69a3('0x85')]['loopClearZombieChannels']=function(){var _0x5d6919=this;setInterval(function(){_0x5d6919[_0x69a3('0x151')](_0x5d6919[_0x69a3('0x23')],_0x69a3('0x152'));_0x5d6919[_0x69a3('0x151')](_0x5d6919[_0x69a3('0x22')],_0x69a3('0x153'));},0x32c8);};Dialer[_0x69a3('0x85')][_0x69a3('0x151')]=function(_0xc30be6,_0x42d6e2){var _0x29128f=this;for(var _0x27f9a7 in _0xc30be6){if(typeof _0xc30be6[_0x27f9a7]!==_0x69a3('0xad')){this[_0x69a3('0x1b')][_0x69a3('0x18')](function(){if(!_['isNil'](_0xc30be6[_0x27f9a7])){return ami[_0x69a3('0x9b')]({'action':_0x69a3('0x89'),'channel':_0xc30be6[_0x27f9a7][_0x69a3('0xf2')]})[_0x69a3('0xa2')](function(_0x218712){if(_0x218712[_0x69a3('0x6d')]===_0x69a3('0x154')){setTimeout(function(){if(_0xc30be6[_0x27f9a7]&&_0xc30be6[_0x27f9a7][_0x69a3('0x41')]!==_0x69a3('0xc5')){_0x29128f[_0x69a3('0xd1')](_0x29128f[_0x69a3('0x1d')][_0xc30be6[_0x27f9a7]['queue']]);logger[_0x69a3('0x68')](_0x69a3('0x155'),_0x42d6e2,_0x27f9a7,_0xc30be6[_0x27f9a7][_0x69a3('0xc3')]);delete _0xc30be6[_0x27f9a7];}if(_0xc30be6[_0x27f9a7]&&_0xc30be6[_0x27f9a7]['type']===_0x69a3('0xc5')){_0x29128f['updateOriginated'](_0x29128f[_0x69a3('0x1e')][_0xc30be6[_0x27f9a7][_0x69a3('0xc3')]]);logger[_0x69a3('0x68')](_0x69a3('0x156'),_0x42d6e2,_0x27f9a7,_0xc30be6[_0x27f9a7][_0x69a3('0xc3')]);delete _0xc30be6[_0x27f9a7];}},0x2328);}});}});}}};Dialer[_0x69a3('0x85')][_0x69a3('0x157')]=function(_0x22d5aa){return Promise[_0x69a3('0xaf')]()[_0x69a3('0x9e')](voiceQueueRt[_0x69a3('0x157')](_0x22d5aa))[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x158')));};Dialer['prototype'][_0x69a3('0xd1')]=function(_0x22e171){if(!_[_0x69a3('0x3f')](_0x22e171)&&_0x22e171!==null){if(typeof _0x22e171['originated']!==_0x69a3('0xad')){if(_0x22e171['originated']>0x0){_0x22e171['originated']-=0x1;}else{logger[_0x69a3('0x68')](_0x69a3('0x159'));}}}else{logger[_0x69a3('0x68')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer[_0x69a3('0x85')]['loggerHandler']=function(_0x4b3714,_0x2f3772){var _0x460e2b=this;return function(_0x11466d){_0x460e2b[_0x69a3('0xd1')](_0x2f3772);logger[_0x69a3('0x68')](_0x4b3714,util[_0x69a3('0x44')](_0x11466d,{'showHidden':![],'depth':null}));};};Dialer[_0x69a3('0x85')][_0x69a3('0x15a')]=function(_0x340365,_0x95e4ac,_0x19beed){var _0x486cd8={'state':0x19,'statedesc':_0x69a3('0x15b')};this[_0x69a3('0xd1')](_0x95e4ac);this[_0x69a3('0x11e')](_['merge'](_0x486cd8,_[_0x69a3('0x77')](_0x19beed,[_0x69a3('0xe4'),_0x69a3('0xfe'),_0x69a3('0x15c'),_0x69a3('0x108'),_0x69a3('0xe5')])),_0x69a3('0x15d'),_0x69a3('0x15e'));logger['error'](_0x340365);};Dialer['prototype'][_0x69a3('0x11e')]=function(_0x4aed9a,_0x411dae,_0x8e527a){hopperUtils[_0x69a3('0xcd')](_0x4aed9a)['catch'](loggerCatch(_0x411dae));hopperUtils[_0x69a3('0xcf')](_0x4aed9a)['catch'](loggerCatch(_0x8e527a));};Dialer[_0x69a3('0x85')]['queueCallerAbandonCreateState']=function(_0x3ddead,_0x360721){hopperUtils[_0x69a3('0xcd')](_0x3ddead)[_0x69a3('0xa2')](loggerCatch('[syncAgentComplete][createHistory]'));if(_0x360721==0x0){hopperUtils[_0x69a3('0xcf')](_0x3ddead)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x15f')));}};Dialer['prototype'][_0x69a3('0x150')]=function(_0x11e4b7){return Promise['resolve']()[_0x69a3('0x9e')](cmHopper['handlePreviewRecallNotifications'](_0x11e4b7['id'],previewRecallmeReminderInterval))[_0x69a3('0x9e')](function(_0x3539f2){for(var _0x5cae71=0x0;_0x5cae71<_0x3539f2[_0x69a3('0x101')];_0x5cae71++){var _0x334615=_0x3539f2[_0x5cae71][_0x69a3('0x14d')][_0x69a3('0x47')];if(_0x334615)io['to'](util[_0x69a3('0x45')](_0x69a3('0x14e'),_0x334615))[_0x69a3('0x40')](_0x69a3('0x14f'),{'hopper':_0x3539f2[_0x5cae71]});}})['catch'](function(){});};Dialer[_0x69a3('0x85')][_0x69a3('0xb4')]=function(_0x486f21){var _0x258eb6=this;return function(){_0x258eb6['handleIvr'](_0x486f21);};};Dialer[_0x69a3('0x85')][_0x69a3('0x160')]=function(_0xd03f3d,_0x5c99b7){var _0x43c88b=this;var _0x5f0e47=uuid['v4']();this[_0x69a3('0x22')][_0x5f0e47]=new Action(_0xd03f3d,_0x5c99b7,_0x5f0e47);return new Promise(function(_0x18eb9e,_0x4426f6){if(_[_0x69a3('0x3f')](_0xd03f3d)&&typeof _0xd03f3d!==_0x69a3('0x161')){return _0x4426f6(msgResponse(_0x69a3('0x162'),_0x69a3('0x92'),_0x69a3('0x163')));}if(_['isUndefined'](_0x5c99b7[_0x69a3('0x164')])||_0x5c99b7[_0x69a3('0x164')]===null){return _0x4426f6(msgResponse(_0x69a3('0x162'),_0x69a3('0x92'),_0x69a3('0x165')));}var _0x2e8441={'XMD-CALLERID':_0x43c88b[_0x69a3('0x22')][_0x5f0e47][_0x69a3('0x166')](),'XMD-AGI':_0xd03f3d[_0x69a3('0x136')]?util[_0x69a3('0x45')](_0x69a3('0x167'),ipAgi,_0xd03f3d['dialQueueProject']):'NONE','XMD-AGIAFTER':_0xd03f3d[_0x69a3('0xcb')]?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0xd03f3d[_0x69a3('0xcb')]):_0x69a3('0x168'),'XMD-QUEUE':utils['isOutboundQueue'](_0xd03f3d)?util[_0x69a3('0x45')](_0x69a3('0x169'),_0xd03f3d['name'],_0xd03f3d[_0x69a3('0x16a')]||'',_0xd03f3d['dialAgiAfterHangupAgent']?'c':'',_0xd03f3d[_0x69a3('0x16b')]||0x3):_0x69a3('0x168'),'XMD-CONTACTID':_0x5c99b7['ContactId'],'XMD-CDRTYPE':_0x69a3('0x5'),'CALLERID(all)':_0x43c88b[_0x69a3('0x22')][_0x5f0e47][_0x69a3('0x166')](),'XMD-AMD':_0xd03f3d[_0x69a3('0x116')]?_0x69a3('0x142'):_0x69a3('0x168'),'XMD-DESTINATION':_0x69a3('0x115')};if(_0xd03f3d[_0x69a3('0x116')]){_0x2e8441[_0x69a3('0x16c')]=_0xd03f3d[_0x69a3('0x16d')]||0x9c4;_0x2e8441['XMD-AMDGREETING']=_0xd03f3d['dialAMDGreeting']||0x5dc;_0x2e8441[_0x69a3('0x16e')]=_0xd03f3d['dialAMDAfterGreetingSilence']||0x320;_0x2e8441['XMD-AMDTOTALANALYSISTIME']=_0xd03f3d['dialAMDTotalAnalysisTime']||0x1388;_0x2e8441[_0x69a3('0x16f')]=_0xd03f3d[_0x69a3('0x170')]||0x64;_0x2e8441[_0x69a3('0x171')]=_0xd03f3d[_0x69a3('0x172')]||0x32;_0x2e8441[_0x69a3('0x173')]=_0xd03f3d[_0x69a3('0x174')]||0x3;_0x2e8441[_0x69a3('0x175')]=_0xd03f3d[_0x69a3('0x176')]||0x100;_0x2e8441[_0x69a3('0x177')]=_0xd03f3d['dialAMDMaximumWordLength']||0x1388;}if(utils['isOutboundQueue'](_0xd03f3d)){_0x2e8441[_0x69a3('0x178')]=_0x5c99b7[_0x69a3('0x108')];}else{_0x2e8441['XMD-CAMPAIGNID']=_0x5c99b7[_0x69a3('0xe5')];}var _0x1fcffd=utils[_0x69a3('0x179')](_0x5c99b7[_0x69a3('0x17a')]);Object['assign'](_0x2e8441,_0x1fcffd);var _0x2065c0=_0x43c88b['isTrunkReachable'](_0xd03f3d['Trunk'])?utils[_0x69a3('0x17b')](_0xd03f3d['Trunk'][_0x69a3('0x17c')],_0xd03f3d[_0x69a3('0x17d')],_0xd03f3d[_0x69a3('0x17e')]>0x0?utils[_0x69a3('0x17f')](_0xd03f3d['dialOriginateCallerIdNumber'],_0xd03f3d[_0x69a3('0x17e')]):_0xd03f3d[_0x69a3('0x180')]):utils[_0x69a3('0x17b')](_[_0x69a3('0xf7')](_0xd03f3d[_0x69a3('0x8d')])?_0xd03f3d['Trunk']['callerid']:_0xd03f3d['TrunkBackup'][_0x69a3('0x17c')],_0xd03f3d[_0x69a3('0x17d')],_0xd03f3d[_0x69a3('0x17e')]>0x0?utils[_0x69a3('0x17f')](_0xd03f3d[_0x69a3('0x180')],_0xd03f3d[_0x69a3('0x17e')]):_0xd03f3d[_0x69a3('0x180')]);if(_0x2065c0){_0x2e8441['XMD-ORIGINATECALLERIDNAME']=_0x43c88b[_0x69a3('0x22')][_0x5f0e47][_0x69a3('0x181')]=utils['extractCalleridName'](_0x2065c0);_0x2e8441[_0x69a3('0x182')]=_0x5c99b7[_0x69a3('0x164')];}_0xd03f3d[_0x69a3('0x183')]=_0x2e8441;return ami[_0x69a3('0x9b')]({'actionid':_0x5f0e47,'action':'originate','channel':_0x43c88b[_0x69a3('0x86')](_0xd03f3d[_0x69a3('0x8c')])?util['format']('SIP/%s/%s%s',_0xd03f3d[_0x69a3('0x8c')]['name'],isNotNull(_0xd03f3d[_0x69a3('0x184')])?_0xd03f3d[_0x69a3('0x184')]['trim']()||'':'',_0xd03f3d['dialCutDigit']>0x0?_0x5c99b7[_0x69a3('0x164')][_0x69a3('0x185')](_0xd03f3d[_0x69a3('0x186')]):_0x5c99b7[_0x69a3('0x164')]):util[_0x69a3('0x45')](_0x69a3('0x187'),_[_0x69a3('0xf7')](_0xd03f3d[_0x69a3('0x8d')])?_0xd03f3d[_0x69a3('0x8c')][_0x69a3('0x47')]:_0xd03f3d['TrunkBackup'][_0x69a3('0x47')],isNotNull(_0xd03f3d[_0x69a3('0x184')])?_0xd03f3d[_0x69a3('0x184')][_0x69a3('0x188')]()||'':'',_0xd03f3d[_0x69a3('0x186')]>0x0?_0x5c99b7[_0x69a3('0x164')][_0x69a3('0x185')](_0xd03f3d['dialCutDigit']):_0x5c99b7[_0x69a3('0x164')]),'callerid':_0x2065c0,'Exten':_0x69a3('0x115'),'Context':_0x69a3('0x189'),'Priority':'1','variable':_0x2e8441,'timeout':(_0xd03f3d[_0x69a3('0x18a')]||0x1e)*0x3e8,'async':!![],'channelid':_0x5f0e47})['then'](function(_0x2d3f25){return _0x18eb9e(_0x2d3f25);})[_0x69a3('0xa2')](function(_0x57759b){_0xd03f3d[_0x69a3('0x18b')]+=0x1;var _0x11eb2d=new History(_0x43c88b[_0x69a3('0x22')][_0x5f0e47]);logger[_0x69a3('0x68')](util[_0x69a3('0x45')](_0x69a3('0x18c'),JSON['stringify'](_0x57759b)));_0x11eb2d[_0x69a3('0x71')]=0xe;_0x11eb2d[_0x69a3('0xd5')]=_0x69a3('0x18d');_0x11eb2d[_0x69a3('0x73')]=moment()[_0x69a3('0x45')](_0x69a3('0xc7'));_0x11eb2d['endtime']=_0x11eb2d[_0x69a3('0x73')];hopperUtils[_0x69a3('0xcd')](_0x11eb2d)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x18e')));_0x43c88b[_0x69a3('0xcf')](_0x11eb2d)['catch'](loggerCatch(_0x69a3('0x18e')))[_0x69a3('0x1a')](function(){delete _0x43c88b['actions'][_0x5f0e47];return _0x4426f6(msgResponse(_0x69a3('0x162'),_0x69a3('0x18f'),_0x69a3('0x190')));});});});};Dialer[_0x69a3('0x85')][_0x69a3('0x191')]=function(_0x723d13,_0x5b86f9,_0x1e79e4){var _0x360da0=new History(_0x5b86f9);if(_0x360da0['countbusyretry']+_0x360da0[_0x69a3('0x127')]+_0x360da0[_0x69a3('0x128')]+_0x360da0['countnosuchnumberretry']+_0x360da0[_0x69a3('0xd8')]+_0x360da0[_0x69a3('0xed')]+_0x360da0[_0x69a3('0x122')]+_0x360da0[_0x69a3('0x192')]>=_0x1e79e4[_0x69a3('0x133')]-0x1){return!![];}switch(_0x723d13){case 0x3:if(_0x360da0[_0x69a3('0x128')]>=_0x1e79e4[_0x69a3('0x193')]-0x1){return!![];}hopperUtils[_0x69a3('0xe1')]({'active':![],'countnoanswerretry':_0x360da0[_0x69a3('0x128')]+=0x1,'scheduledat':moment()['add'](_0x1e79e4[_0x69a3('0x194')],_0x69a3('0xe3'))[_0x69a3('0x45')](_0x69a3('0xc7')),'ContactId':_0x360da0['ContactId'],'ListId':_0x360da0[_0x69a3('0xfe')],'VoiceQueueId':_0x360da0['VoiceQueueId']||undefined,'CampaignId':_0x360da0[_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x195')));break;case 0x5:if(_0x360da0['countbusyretry']>=_0x1e79e4[_0x69a3('0x196')]-0x1){return!![];}hopperUtils[_0x69a3('0xe1')]({'active':![],'countbusyretry':_0x360da0[_0x69a3('0x126')]+=0x1,'scheduledat':moment()[_0x69a3('0xe2')](_0x1e79e4[_0x69a3('0x197')],_0x69a3('0xe3'))[_0x69a3('0x45')](_0x69a3('0xc7')),'ContactId':_0x360da0[_0x69a3('0xe4')],'ListId':_0x360da0['ListId'],'VoiceQueueId':_0x360da0['VoiceQueueId']||undefined,'CampaignId':_0x360da0[_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x360da0['countcongestionretry']>=_0x1e79e4[_0x69a3('0x198')]-0x1){return!![];}hopperUtils[_0x69a3('0xe1')]({'active':![],'countcongestionretry':_0x360da0[_0x69a3('0x127')]+=0x1,'scheduledat':moment()[_0x69a3('0xe2')](_0x1e79e4[_0x69a3('0x199')],_0x69a3('0xe3'))[_0x69a3('0x45')](_0x69a3('0xc7')),'ContactId':_0x360da0[_0x69a3('0xe4')],'ListId':_0x360da0['ListId'],'VoiceQueueId':_0x360da0['VoiceQueueId']||undefined,'CampaignId':_0x360da0['CampaignId']||undefined})[_0x69a3('0xa2')](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x360da0['countnosuchnumberretry']>=_0x1e79e4[_0x69a3('0x19a')]-0x1){return!![];}else{hopperUtils['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x360da0[_0x69a3('0x129')]+=0x1,'scheduledat':moment()[_0x69a3('0xe2')](_0x1e79e4[_0x69a3('0x19b')],'minutes')[_0x69a3('0x45')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x360da0['ContactId'],'ListId':_0x360da0[_0x69a3('0xfe')],'VoiceQueueId':_0x360da0[_0x69a3('0x108')]||undefined,'CampaignId':_0x360da0[_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x19c')));}break;case 0xa:if(_0x360da0[_0x69a3('0xd8')]>=_0x1e79e4[_0x69a3('0xdf')]-0x1){return!![];}hopperUtils[_0x69a3('0xe1')]({'active':![],'countdropretry':_0x360da0[_0x69a3('0xd8')]+=0x1,'scheduledat':moment()[_0x69a3('0xe2')](_0x1e79e4[_0x69a3('0xda')],_0x69a3('0xe3'))[_0x69a3('0x45')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x360da0['ContactId'],'ListId':_0x360da0['ListId'],'VoiceQueueId':_0x360da0['VoiceQueueId']||undefined,'CampaignId':_0x360da0[_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0xe6')));break;case 0xb:if(_0x360da0[_0x69a3('0xed')]>=_0x1e79e4[_0x69a3('0x19d')]-0x1){return!![];}hopperUtils[_0x69a3('0xe1')]({'active':![],'countabandonedretry':_0x360da0[_0x69a3('0xed')]+=0x1,'scheduledat':moment()[_0x69a3('0xe2')](_0x1e79e4[_0x69a3('0xee')],_0x69a3('0xe3'))[_0x69a3('0x45')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x360da0[_0x69a3('0xe4')],'ListId':_0x360da0[_0x69a3('0xfe')],'VoiceQueueId':_0x360da0[_0x69a3('0x108')]||undefined,'CampaignId':_0x360da0[_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0xef')));break;case 0x13:if(_0x360da0[_0x69a3('0x122')]>=_0x1e79e4[_0x69a3('0x12c')]-0x1){return!![];}hopperUtils[_0x69a3('0xe1')]({'active':![],'countmachineretry':_0x360da0[_0x69a3('0x122')]+=0x1,'scheduledat':moment()[_0x69a3('0xe2')](_0x1e79e4['dialMachineRetryFrequency'],_0x69a3('0xe3'))[_0x69a3('0x45')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x360da0[_0x69a3('0xe4')],'ListId':_0x360da0['ListId'],'VoiceQueueId':_0x360da0['VoiceQueueId']||undefined,'CampaignId':_0x360da0[_0x69a3('0xe5')]||undefined})['catch'](loggerCatch(_0x69a3('0x130')));break;case 0x14:if(_0x360da0[_0x69a3('0x192')]>=_0x1e79e4[_0x69a3('0x19e')]-0x1){return!![];}hopperUtils[_0x69a3('0xe1')]({'active':![],'countagentrejectretry':_0x360da0[_0x69a3('0x192')]+=0x1,'scheduledat':moment()['add'](_0x1e79e4[_0x69a3('0x19f')],_0x69a3('0xe3'))[_0x69a3('0x45')](_0x69a3('0xc7')),'ContactId':_0x360da0[_0x69a3('0xe4')],'ListId':_0x360da0[_0x69a3('0xfe')],'VoiceQueueId':_0x360da0['VoiceQueueId']||undefined,'CampaignId':_0x360da0['CampaignId']||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x1a0')));break;default:return!![];}};Dialer[_0x69a3('0x85')][_0x69a3('0x111')]=function(_0x30763c,_0x521b87,_0x4af1e9){var _0x26351d=this;var _0x21e8e6=new History(_0x30763c);var _0xae7b7e=![];var _0x46c24e;var _0x128857;return new Promise(function(_0x23d6f1,_0x57134e){if(_[_0x69a3('0x3f')](_0x521b87)&&typeof _0x521b87!==_0x69a3('0x161')){return _0x57134e(msgResponse(_0x69a3('0x1a1'),_0x69a3('0x92'),_0x69a3('0x1a2')));}if(_['isUndefined'](_0x4af1e9)&&typeof _0x4af1e9!==_0x69a3('0x161')){return _0x57134e(msgResponse(_0x69a3('0x1a1'),_0x69a3('0x92'),'evt\x20is\x20undefine'));}hopperUtils[_0x69a3('0xdc')](_0x21e8e6,_0x4af1e9[_0x69a3('0x1a3')],_0x521b87)[_0x69a3('0x9e')](function(_0x22d81d){if(_0x22d81d[_0x69a3('0xde')]==0x1)_0xae7b7e=!![];switch(_0x4af1e9['reason']){case'0':_0x521b87[_0x69a3('0x1a4')]+=0x1;_0x21e8e6[_0x69a3('0x71')]=0x0;_0x21e8e6[_0x69a3('0xd5')]=_0x69a3('0x1a5');_0x21e8e6[_0x69a3('0x129')]+=0x1;_0x21e8e6[_0x69a3('0xd9')]+=0x1;ami[_0x69a3('0x40')](_0x69a3('0x1a6'),ut['buildObj'](_0x30763c,_0x69a3('0x1a7')));_0x46c24e=_0x521b87[_0x69a3('0x19b')];_0x128857=_0x521b87['callAdditionalPhoneAfterMin'];hopperUtils[_0x69a3('0xcd')](_0x21e8e6)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x125')));if(_0x26351d[_0x69a3('0x191')](0x0,_0x30763c,_0x521b87)&&!_0xae7b7e){if(_0x21e8e6[_0x69a3('0x129')]>=_0x521b87[_0x69a3('0x19a')]){_0x26351d[_0x69a3('0x12d')](_0x21e8e6,_0x23d6f1,_0x57134e,'reason\x200\x20no\x20such\x20number....');}else{_0x26351d['stateGlobal'](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1a8'));}}break;case'3':_0x521b87['outboundNoAnswerCallsDay']+=0x1;_0x21e8e6[_0x69a3('0x71')]=0x3;_0x21e8e6[_0x69a3('0xd5')]='NoAnswer';_0x21e8e6[_0x69a3('0x128')]+=0x1;_0x21e8e6[_0x69a3('0xd9')]+=0x1;var _0x2482fa=ut[_0x69a3('0x1a9')](_0x30763c,_0x521b87);ami[_0x69a3('0x40')]('custom:agentnoanswer',_0x2482fa);_0x46c24e=_0x521b87['dialNoAnswerRetryFrequency'];_0x128857=_0x521b87[_0x69a3('0xdb')];hopperUtils[_0x69a3('0xcd')](_0x21e8e6)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x1aa')));if(_0x26351d[_0x69a3('0x191')](0x3,_0x30763c,_0x521b87)&&!_0xae7b7e){if(_0x21e8e6[_0x69a3('0x128')]>=_0x521b87['dialNoAnswerMaxRetry']){_0x26351d[_0x69a3('0x12d')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1ab'));}else{_0x26351d[_0x69a3('0x12a')](_0x21e8e6,_0x23d6f1,_0x57134e,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x521b87[_0x69a3('0x1ac')]+=0x1;_0x21e8e6[_0x69a3('0x71')]=0x5;_0x21e8e6[_0x69a3('0xd5')]='Busy';_0x21e8e6['countbusyretry']+=0x1;_0x21e8e6[_0x69a3('0xd9')]+=0x1;ami[_0x69a3('0x40')](_0x69a3('0x1ad'),ut[_0x69a3('0x124')](_0x30763c,'busy'));_0x46c24e=_0x521b87[_0x69a3('0x197')];_0x128857=_0x521b87[_0x69a3('0xdb')];hopperUtils['createHistory'](_0x21e8e6)['catch'](loggerCatch('[syncAgentComplete][createHistory][5]'));if(_0x26351d[_0x69a3('0x191')](0x5,_0x30763c,_0x521b87)&&!_0xae7b7e){if(_0x21e8e6[_0x69a3('0x126')]>=_0x521b87[_0x69a3('0x196')]){_0x26351d[_0x69a3('0x12d')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1ae'));}else{_0x26351d[_0x69a3('0x12a')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1ae'));}}break;case'8':_0x521b87[_0x69a3('0x1af')]+=0x1;_0x21e8e6[_0x69a3('0x71')]=0x8;_0x21e8e6[_0x69a3('0xd5')]='Congestion';_0x21e8e6[_0x69a3('0x127')]+=0x1;_0x21e8e6[_0x69a3('0xd9')]+=0x1;_0x46c24e=_0x521b87[_0x69a3('0x199')];_0x128857=_0x521b87[_0x69a3('0xdb')];ami[_0x69a3('0x40')](_0x69a3('0x1b0'),ut[_0x69a3('0x124')](_0x30763c,_0x69a3('0x1b1')));hopperUtils[_0x69a3('0xcd')](_0x21e8e6)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x1b2')));if(_0x26351d[_0x69a3('0x191')](0x8,_0x30763c,_0x521b87)&&!_0xae7b7e){if(_0x21e8e6[_0x69a3('0x127')]>=_0x521b87[_0x69a3('0x198')]){_0x26351d[_0x69a3('0x12d')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1b3'));}else{_0x26351d[_0x69a3('0x12a')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1b3'));}}break;case'11':_0x521b87[_0x69a3('0x1b4')]+=0x1;_0x21e8e6[_0x69a3('0x71')]=0xb;_0x21e8e6['statedesc']=_0x69a3('0xec');_0x21e8e6[_0x69a3('0xed')]+=0x1;_0x21e8e6['countglobal']+=0x1;_0x46c24e=_0x521b87[_0x69a3('0xee')];_0x128857=_0x521b87['callAdditionalPhoneAfterMin'];hopperUtils[_0x69a3('0xcd')](_0x21e8e6)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0xf0')));if(_0x26351d[_0x69a3('0x191')](0xb,_0x30763c,_0x521b87)&&!_0xae7b7e){if(_0x21e8e6[_0x69a3('0xed')]>=_0x521b87[_0x69a3('0x19d')]){_0x26351d['createStateFinal'](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1b5'));}else{_0x26351d[_0x69a3('0x12a')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1b5'));}}break;case'20':_0x521b87[_0x69a3('0x1b6')]+=0x1;_0x21e8e6[_0x69a3('0x71')]=0x14;_0x21e8e6[_0x69a3('0xd5')]=_0x69a3('0x1b7');_0x21e8e6['countagentrejectretry']+=0x1;_0x21e8e6[_0x69a3('0xd9')]+=0x1;_0x46c24e=_0x521b87[_0x69a3('0x19f')];_0x128857=_0x521b87[_0x69a3('0xdb')];ami[_0x69a3('0x40')]('custom:agentreject',ut['buildObj'](_0x30763c,'agentreject'));hopperUtils['createHistory'](_0x21e8e6)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x1b8')));if(_0x26351d[_0x69a3('0x191')](0x14,_0x30763c,_0x521b87)&&!_0xae7b7e){if(_0x21e8e6[_0x69a3('0x192')]>=_0x521b87[_0x69a3('0x19e')]){_0x26351d[_0x69a3('0x12d')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1b9'));}else{_0x26351d[_0x69a3('0x12a')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x69a3('0x1b9'));}}break;default:_0x521b87['outboundUnknownCallsDay']+=0x1;_0x21e8e6['state']=0xc;_0x21e8e6[_0x69a3('0xd5')]=_0x4af1e9[_0x69a3('0x1a3')];_0x46c24e=_0x521b87[_0x69a3('0x19f')];_0x128857=_0x521b87[_0x69a3('0xdb')];hopperUtils[_0x69a3('0xcd')](_0x21e8e6)[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x1ba')));if(_0x26351d[_0x69a3('0x191')](_0x4af1e9['reason'],_0x30763c,_0x521b87)&&!_0xae7b7e){if(_0x21e8e6[_0x69a3('0x126')]+_0x21e8e6[_0x69a3('0x127')]+_0x21e8e6[_0x69a3('0x128')]+_0x21e8e6['countnosuchnumberretry']+_0x21e8e6[_0x69a3('0xd8')]+_0x21e8e6['countabandonedretry']+_0x21e8e6[_0x69a3('0x122')]+_0x21e8e6[_0x69a3('0x192')]>=_0x521b87[_0x69a3('0x133')]){_0x26351d[_0x69a3('0x12a')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x4af1e9[_0x69a3('0x1a3')]);}else{_0x26351d[_0x69a3('0x12d')](_0x21e8e6,_0x23d6f1,_0x57134e,_0x4af1e9[_0x69a3('0x1a3')]);}}}})['then'](function(){if(_0xae7b7e){hopperUtils[_0x69a3('0xf1')](_0x21e8e6,_0x46c24e,_0x128857)[_0x69a3('0x9e')](function(){return _0x23d6f1(0x1);});}});});};Dialer[_0x69a3('0x85')][_0x69a3('0x12a')]=function(_0x209da7,_0x2e4fce,_0xb45b24,_0x92d572){var _0x412f18=new Final(_0x209da7);_0x412f18[_0x69a3('0x71')]=0xf;_0x412f18[_0x69a3('0xd5')]='Global';this[_0x69a3('0x12d')](_0x412f18,_0x2e4fce,_0xb45b24,_0x92d572);};Dialer[_0x69a3('0x85')]['createStateFinal']=function(_0x4a2b75,_0x3a7ea1,_0x1c9a55,_0x507b9a){hopperUtils[_0x69a3('0xcf')](_0x4a2b75)[_0x69a3('0x9e')](function(){return _0x3a7ea1(msgResponse(_0x69a3('0x1a1'),_0x69a3('0x110'),_0x507b9a));})[_0x69a3('0xa2')](function(){return _0x1c9a55(msgResponse('[moveContactManagedDialer][0]',_0x69a3('0x92'),_0x69a3('0x1bb')));});};Dialer[_0x69a3('0x85')][_0x69a3('0x7')]=function(_0x1b6a39){var _0x5b8b7e=_0x1b6a39[_0x69a3('0x1bc')]/0x64;var _0x6545b=_0x1b6a39[_0x69a3('0xd3')]/(_0x1b6a39[_0x69a3('0xd3')]+_0x1b6a39[_0x69a3('0xc8')]);var _0x280c41=Math['round'](_0x1b6a39[_0x69a3('0x1bd')]*(_0x1b6a39[_0x69a3('0x1be')]/0x64));var _0x1ee3cb=Math[_0x69a3('0x1bf')](_0x1b6a39['predictiveIntervalAvailable']*(_0x1b6a39[_0x69a3('0x1c0')]/0x64));var _0x5d1596=_0x1b6a39[_0x69a3('0x1c1')]+_0x1b6a39[_0x69a3('0x141')];var _0x393329=Math[_0x69a3('0x1c2')](_0x1b6a39[_0x69a3('0x5b')]*_0x1b6a39[_0x69a3('0x5f')]*_0x1b6a39[_0x69a3('0x1c3')]*_0x1b6a39['predictiveIntervalMultiplicativeFactor']);if(_[_0x69a3('0x3f')](_0x1b6a39[_0x69a3('0x64')])){if(!_[_0x69a3('0x3f')](_0x1b6a39[_0x69a3('0x25')])){_0x1b6a39[_0x69a3('0x25')]=undefined;loggerPredictive[_0x69a3('0x68')](_0x69a3('0x1c4'),_0x69a3('0x1c5'));}if(!_[_0x69a3('0x3f')](_0x1b6a39[_0x69a3('0x66')])){loggerPredictive[_0x69a3('0x68')](_0x69a3('0x1c4'),_0x69a3('0x1c6'));clearInterval(_0x1b6a39[_0x69a3('0x66')]);_0x1b6a39['handlePredictive']=undefined;}_0x1b6a39[_0x69a3('0x64')]=moment()['format'](_0x69a3('0xc7'));loggerPredictive[_0x69a3('0x4a')](_0x1b6a39[_0x69a3('0x47')],'collection\x20data\x20in\x20progressive\x20at',_0x1b6a39[_0x69a3('0x64')]);this[_0x69a3('0xb7')](_0x1b6a39,0x1);}else if(ifInterval(_0x1b6a39[_0x69a3('0x1c7')],_0x1b6a39[_0x69a3('0x64')])){this[_0x69a3('0xb7')](_0x1b6a39,0x1);loggerPredictiveCalls[_0x69a3('0x4a')]('[startMethodPredictive][StartProgressive][Loop]',_0x1b6a39[_0x69a3('0x64')],_0x1b6a39[_0x69a3('0x47')]);_0x1b6a39[_0x69a3('0x5b')]=0x0;_0x1b6a39[_0x69a3('0xd4')]=0x0;}else if(_0x5b8b7e<_0x6545b&&_0x1b6a39[_0x69a3('0x1c8')]===_0x69a3('0x1c9')){clearPredictiveAttributes(_0x1b6a39);loggerPredictive['info'](_0x69a3('0x1ca'),_0x69a3('0x1cb'),_0x6545b,_0x69a3('0x64'),_0x1b6a39[_0x69a3('0x47')]);}else if(_0x393329<_0x1b6a39[_0x69a3('0xd4')]&&_0x1b6a39[_0x69a3('0x1c8')]==='dropRate'){clearPredictiveAttributes(_0x1b6a39);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x1cc'),'Max\x20Drop\x20',_0x393329,_0x69a3('0x1cd'),_0x1b6a39[_0x69a3('0xd4')],_0x69a3('0x64'),_0x1b6a39[_0x69a3('0x47')]);}else if(!ifInterval(_0x1b6a39[_0x69a3('0x1c7')],_0x1b6a39[_0x69a3('0x64')])&&_[_0x69a3('0x3f')](_0x1b6a39['startPredictive'])&&!_[_0x69a3('0x3f')](_0x1b6a39[_0x69a3('0x64')])){_0x1b6a39['startPredictive']=moment()['format'](_0x69a3('0xc7'));loggerPredictive[_0x69a3('0x4a')](_0x1b6a39[_0x69a3('0x47')],_0x69a3('0x1ce'),_0x1b6a39[_0x69a3('0x25')]);hopperUtils[_0x69a3('0x1cf')](_0x1b6a39['dialPredictiveInterval'])[_0x69a3('0x9e')](this[_0x69a3('0x1d0')](_0x1b6a39))[_0x69a3('0x9e')](mergeDataErlangB(_0x1b6a39))[_0x69a3('0x9e')](this[_0x69a3('0x1d1')](_0x1b6a39))[_0x69a3('0xa2')](loggerCatchPredictive(_0x69a3('0x1d2'),_0x1b6a39));}else if(!ifInterval(_0x1b6a39[_0x69a3('0x1c7')],_0x1b6a39['startPredictive'])){_0x1b6a39['predictiveIntervalErlangCallsDroppedCalls']=0x0;_0x1b6a39[_0x69a3('0x25')]=moment()[_0x69a3('0x45')](_0x69a3('0xc7'));loggerPredictive['info'](_0x1b6a39[_0x69a3('0x47')],'recalculate\x20predictive\x20at',_0x1b6a39[_0x69a3('0x25')]);clearInterval(_0x1b6a39['handlePredictive']);_0x1b6a39[_0x69a3('0x66')]=undefined;hopperUtils[_0x69a3('0x1cf')](_0x1b6a39['dialPredictiveInterval'])['then'](this['getDataPredictive'](_0x1b6a39))[_0x69a3('0x9e')](mergeDataErlangB(_0x1b6a39))[_0x69a3('0x9e')](this[_0x69a3('0x1d1')](_0x1b6a39))[_0x69a3('0xa2')](loggerCatchPredictive(_0x69a3('0x1d3'),_0x1b6a39));}else if(_0x1b6a39[_0x69a3('0x1bd')]&&_0x5d1596<_0x1b6a39[_0x69a3('0x1bd')]-_0x1ee3cb){clearPredictiveAttributes(_0x1b6a39);loggerPredictive[_0x69a3('0x4a')](_0x1b6a39[_0x69a3('0x47')],_0x69a3('0x1d4'),_0x5d1596,')\x20are\x20less\x20than\x20threshold\x20(',_0x1b6a39[_0x69a3('0x1bd')],'-',_0x1ee3cb,'=',_0x1b6a39[_0x69a3('0x1bd')]-_0x1ee3cb,')');}else if(_0x1b6a39[_0x69a3('0x1bd')]&&_0x5d1596>_0x1b6a39[_0x69a3('0x1bd')]+_0x280c41){clearPredictiveAttributes(_0x1b6a39);loggerPredictive[_0x69a3('0x4a')](_0x1b6a39[_0x69a3('0x47')],_0x69a3('0x1d4'),_0x5d1596,_0x69a3('0x1d5'),_0x1b6a39[_0x69a3('0x1bd')],'+',_0x280c41,'=',_0x1b6a39['predictiveIntervalAvailable']+_0x280c41,')');}};Dialer[_0x69a3('0x85')]['getDataPredictive']=function(_0x2bf3b5){var _0x189af2=this;return function(_0x2c02e9){return new Promise(function(_0x48f03d,_0x38cbd9){_[_0x69a3('0x62')](_0x2bf3b5,_0x2c02e9[0x0]);if(checkGetDataPredictive(_0x2c02e9[0x0])){var _0x4a1084=_0x2bf3b5[_0x69a3('0x1bd')]=_0x2bf3b5['talking']+_0x2bf3b5[_0x69a3('0x1c1')];var _0x30d036=_0x2bf3b5[_0x69a3('0x1c7')]*0x3c;var _0x1ff964=_0x2c02e9[0x0][_0x69a3('0x55')]+_0x2c02e9[0x0][_0x69a3('0x52')];var _0x538e58=(_0x2c02e9[0x0][_0x69a3('0x1d6')]+_0x2c02e9[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x2c02e9[0x0][_0x69a3('0x50')])/_0x2c02e9[0x0][_0x69a3('0x4b')];_0x2bf3b5['predictiveIntervalHitRate']=_0x538e58>0x0?_0x538e58:0x1;switch(_0x2bf3b5[_0x69a3('0x1c8')]){case _0x69a3('0x1c9'):var _0x5f2ed9=_0x2bf3b5['dialPredictiveOptimizationPercentage']/0x64;return _0x189af2[_0x69a3('0x1d7')](_0x4a1084,_0x30d036,_0x1ff964,_0x538e58,_0x5f2ed9)[_0x69a3('0x9e')](function(_0x1338e2){return _0x48f03d(_0x1338e2);});case _0x69a3('0x1d8'):var _0x747997=_0x2bf3b5[_0x69a3('0x1bc')]/0x64;return _0x189af2[_0x69a3('0x1d9')](_0x4a1084,_0x30d036,_0x1ff964,_0x538e58,_0x747997)[_0x69a3('0x9e')](function(_0x3290ea){return _0x48f03d(_0x3290ea);});default:return _0x38cbd9(msgResponse(_0x69a3('0x1da'),'Failure',_0x69a3('0x1db')));}}else{return _0x38cbd9(msgResponse(_0x69a3('0x1da'),_0x69a3('0x92'),_0x69a3('0x1dc')));}});};};Dialer[_0x69a3('0x85')][_0x69a3('0x1dd')]=function(_0x810793){var _0x15dd3a=this;return function(_0x306539){return new Promise(function(_0x25401d,_0x3fd5c5){_['merge'](_0x810793,_0x306539[0x0]);if(checkGetDataPredictive(_0x306539[0x0])){loggerPredictive[_0x69a3('0x4a')](JSON[_0x69a3('0x76')](_0x306539[0x0]));if(_0x810793[_0x69a3('0x1c8')]===_0x69a3('0x1c9')){return _0x15dd3a[_0x69a3('0x157')](_0x810793['id'])['then'](function(_0x785cbe){var _0x49b155=_0x810793[_0x69a3('0x1de')]-_0x785cbe[0x0][_0x69a3('0x1df')];var _0x5356f6=_0x810793[_0x69a3('0x1c7')]*0x3c;var _0x35042e=_0x306539[0x0]['predictiveIntervalAvgTalktime']+_0x306539[0x0][_0x69a3('0x52')];var _0x5f3d94=(_0x306539[0x0][_0x69a3('0x1d6')]+_0x306539[0x0][_0x69a3('0x4e')]+_0x306539[0x0][_0x69a3('0x50')])/_0x306539[0x0][_0x69a3('0x4b')];var _0x18a6e0=_0x810793[_0x69a3('0x1bc')]/0x64;_0x810793[_0x69a3('0x1e0')]=_0x785cbe[0x0][_0x69a3('0x1df')]||0x0;_0x810793[_0x69a3('0x1c3')]=_0x5f3d94>0x0?_0x5f3d94:0x1;return _0x15dd3a[_0x69a3('0x1d7')](_0x49b155,_0x5356f6,_0x35042e,_0x5f3d94,_0x18a6e0);})[_0x69a3('0x9e')](function(_0x48b498){return _0x25401d(_0x48b498);})[_0x69a3('0xa2')](function(_0x2ca0c5){return _0x3fd5c5(msgResponse(_0x69a3('0x1e1'),'Failure',JSON[_0x69a3('0x76')](_0x2ca0c5)));});}if(_0x810793[_0x69a3('0x1c8')]==='agentBusyFactor'){return _0x15dd3a['getVoiceQueueRtPauses'](_0x810793['id'])[_0x69a3('0x9e')](function(_0x22082b){var _0x59fb4e=_0x810793[_0x69a3('0x1de')]-_0x22082b[0x0][_0x69a3('0x1df')];var _0x59eb72=_0x810793[_0x69a3('0x1c7')]*0x3c;var _0x175f85=_0x306539[0x0][_0x69a3('0x55')]+_0x306539[0x0][_0x69a3('0x52')];var _0x164fd0=(_0x306539[0x0]['predictiveIntervalAnsweredCalls']+_0x306539[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x306539[0x0][_0x69a3('0x50')])/_0x306539[0x0][_0x69a3('0x4b')];var _0x192ef5=_0x810793['dialPredictiveOptimizationPercentage']/0x64;_0x810793[_0x69a3('0x1e0')]=_0x22082b[0x0][_0x69a3('0x1df')]||0x0;_0x810793[_0x69a3('0x1c3')]=_0x164fd0>0x0?_0x164fd0:0x1;return _0x15dd3a['busyFactor'](_0x59fb4e,_0x59eb72,_0x175f85,_0x164fd0,_0x192ef5);})[_0x69a3('0x9e')](function(_0x5d03c0){return _0x25401d(_0x5d03c0);})[_0x69a3('0xa2')](function(_0x3c7d4b){return _0x3fd5c5(msgResponse(_0x69a3('0x1e1'),_0x69a3('0x92'),JSON[_0x69a3('0x76')](_0x3c7d4b)));});}}else{return _0x3fd5c5(msgResponse(_0x69a3('0x1da'),_0x69a3('0x92'),_0x69a3('0x1dc')));}});};};Dialer[_0x69a3('0x85')][_0x69a3('0x1d1')]=function(_0x125753){var _0x4049f7=this;return function(){var _0x4cd026=0x0;var _0x439c99=Math[_0x69a3('0x1c2')](_0x125753[_0x69a3('0x5d')]*0x3e8);if(_0x439c99>0x0){_0x439c99=_0x439c99<0x64?0x64:_0x439c99;loggerPredictive[_0x69a3('0x4a')](_0x125753[_0x69a3('0x47')],_0x69a3('0x1e2'),_0x439c99,_0x69a3('0x1e3'));_0x125753[_0x69a3('0x66')]=setInterval(function(){_0x4049f7[_0x69a3('0x66')](_0x125753);loggerPredictiveCalls[_0x69a3('0x4a')](_0x69a3('0x1e4'),_0x4cd026+=0x1);},_0x439c99);}else{loggerPredictive[_0x69a3('0x4a')](_0x125753[_0x69a3('0x47')],_0x69a3('0x1e5'));}};};Dialer[_0x69a3('0x85')][_0x69a3('0x1e6')]=function(_0x1c97fc,_0x1f9b79){var _0x21e23b=this;return function(_0x192dee){if(_[_0x69a3('0x7c')](_0x192dee)){if(_[_0x69a3('0xf7')](_0x1f9b79['UserId'])||!_0x1f9b79[_0x69a3('0x1e7')]){if(_0x1c97fc[_0x69a3('0xb6')]===_0x69a3('0xb9')){_0x1c97fc[_0x69a3('0x74')]=_[_0x69a3('0x3f')](_0x1c97fc[_0x69a3('0x74')])?!![]:_0x1c97fc['queueStatusComplete'];var _0x54e784=uuid['v4']();_0x21e23b[_0x69a3('0x22')][_0x54e784]=new Action(_0x1c97fc,_0x1f9b79,_0x54e784);loggerBooked[_0x69a3('0x4a')](_0x69a3('0x1e8'),_0x54e784,_0x69a3('0x1e9'),JSON[_0x69a3('0x76')](_0x1c97fc['queueStatusComplete']),'Queue:\x20',_0x1c97fc[_0x69a3('0x47')]);if(_0x1c97fc['queueStatusComplete']){_0x1c97fc[_0x69a3('0x74')]=![];_0x21e23b['queueBooked'][_0x21e23b['actions'][_0x54e784][_0x69a3('0xc3')]]=[];ami[_0x69a3('0x9b')]({'actionid':_0x54e784,'action':'queuestatus','queue':_0x1c97fc[_0x69a3('0x47')]})[_0x69a3('0xa2')](function(){_0x21e23b[_0x69a3('0xd1')](_0x1c97fc);hopperUtils[_0x69a3('0xe1')]({'active':![],'ContactId':_0x21e23b[_0x69a3('0x22')][_0x54e784][_0x69a3('0xe4')],'ListId':_0x21e23b[_0x69a3('0x22')][_0x54e784][_0x69a3('0xfe')],'VoiceQueueId':_0x21e23b['actions'][_0x54e784]['VoiceQueueId']||undefined,'CampaignId':_0x21e23b['actions'][_0x54e784][_0x69a3('0xe5')]||undefined})[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x1ea')));delete _0x21e23b['actions'][_0x54e784];});}else{loggerBooked[_0x69a3('0x4a')](_0x69a3('0x1eb'),JSON[_0x69a3('0x76')](_0x1c97fc['queueStatusComplete']),_0x69a3('0x1ec'),_0x1c97fc[_0x69a3('0x47')]);_0x21e23b[_0x69a3('0xd1')](_0x1c97fc);hopperUtils['rescheduleContact']({'active':![],'ContactId':_0x21e23b[_0x69a3('0x22')][_0x54e784][_0x69a3('0xe4')],'ListId':_0x21e23b[_0x69a3('0x22')][_0x54e784][_0x69a3('0xfe')],'VoiceQueueId':_0x21e23b[_0x69a3('0x22')][_0x54e784][_0x69a3('0x108')]||undefined,'CampaignId':_0x21e23b['actions'][_0x54e784]['CampaignId']||undefined})[_0x69a3('0xa2')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x21e23b[_0x69a3('0x22')][_0x54e784];}}else{return _0x21e23b[_0x69a3('0x160')](_0x1c97fc,_0x1f9b79);}}else{if(utils['getSeconds'](undefined,_0x1f9b79[_0x69a3('0x1ed')])<_0x1c97fc[_0x69a3('0x1ee')]*0x3c){if(_0x1f9b79[_0x69a3('0x14d')]&&!_0x1f9b79[_0x69a3('0x14d')][_0x69a3('0x1ef')]){_0x21e23b[_0x69a3('0x1c')]['run'](_0x1f9b79['id'])[_0x69a3('0x1a')](function(){_0x21e23b[_0x69a3('0xd1')](_0x1c97fc);});}else{hopperUtils[_0x69a3('0x1f0')]({'active':![]},_0x1f9b79['id'],0x1)[_0x69a3('0x1a')](function(){_0x21e23b[_0x69a3('0xd1')](_0x1c97fc);});}}else{_0x1c97fc['outboundReCallsDay']+=0x1;_0x21e23b[_0x69a3('0xd1')](_0x1c97fc);if(_0x1c97fc[_0x69a3('0x1f1')]){hopperUtils['rescheduleContact']({'active':![],'recallme':![],'UserId':null,'ContactId':_0x1f9b79[_0x69a3('0xe4')],'ListId':_0x1f9b79[_0x69a3('0xfe')],'VoiceQueueId':_0x1f9b79[_0x69a3('0x108')]||undefined,'CampaignId':_0x1f9b79[_0x69a3('0xe5')]||undefined})['catch'](loggerCatch(_0x69a3('0x1f2')));hopperUtils[_0x69a3('0xcd')](createObjHistory(_0x1c97fc,_0x1f9b79,utils[_0x69a3('0x6e')][_0x69a3('0x1f3')],0x17,_0x69a3('0x1f4')))[_0x69a3('0xa2')](loggerCatch(_0x69a3('0x1f5')));}else{_0x21e23b[_0x69a3('0x11e')](createObjHistory(_0x1c97fc,_0x1f9b79,utils['CAMPAIGN_STATUS'][_0x69a3('0x1f6')],0x16,_0x69a3('0x1f7')),_0x69a3('0x1f8'),_0x69a3('0x1f9'));}}}}else{_0x1c97fc['outboundBlacklistCallsDay']+=0x1;_0x21e23b[_0x69a3('0x11e')](createObjHistory(_0x1c97fc,_0x1f9b79,utils[_0x69a3('0x6e')]['BLACKLIST'],0xd,_0x69a3('0x1fa')),_0x69a3('0x1fb'),'[Originate][MoveBlacklist]');throw _0x69a3('0x1fc');}};};Dialer['prototype'][_0x69a3('0x1fd')]=function(_0x204653){var _0x416738=this;var _0x51a158=_0x204653[_0x69a3('0x1fe')]-_0x204653[_0x69a3('0x83')];emitCampaignSummary(_0x204653);if(_0x51a158>0x0&&_0x204653[_0x69a3('0x6b')]==0x0){if(_0x51a158>this[_0x69a3('0x20')]){_0x51a158=this['maxNumberOriginate'];}_0x204653[_0x69a3('0x6b')]=0x1;hopperUtils['getContactDialerIvr'](_0x204653,_0x51a158)[_0x69a3('0x9e')](function(_0x13b03b){_0x204653[_0x69a3('0x6b')]=0x0;if(_0x13b03b){if(!utils['checkContactEmpty'](_0x13b03b)){_0x204653['message']=utils[_0x69a3('0x6e')][_0x69a3('0x1ff')];logger[_0x69a3('0x4a')](_0x69a3('0x200')+_0x204653[_0x69a3('0x47')]);}else{_0x204653[_0x69a3('0x83')]+=_0x13b03b[_0x69a3('0x101')];_0x204653[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')]['RUNNING'];for(var _0x250da9=0x0;_0x250da9<_0x13b03b[_0x69a3('0x101')];_0x250da9+=0x1){_0x204653[_0x69a3('0x201')]+=0x1;if(_[_0x69a3('0xf7')](_0x13b03b[_0x250da9])||_[_0x69a3('0xf7')](_0x13b03b[_0x250da9]['Contact'])||_['isNil'](_0x13b03b[_0x250da9][_0x69a3('0x164')])){_0x416738['emptyContact']('[actionOriginate]\x20',_0x204653,_0x13b03b[_0x250da9]);}else{hopperUtils[_0x69a3('0x202')](_[_0x69a3('0x77')](_0x13b03b[_0x250da9],['CampaignId','phone']))[_0x69a3('0x9e')](_0x416738['checkContactBlack'](_0x204653,_0x13b03b[_0x250da9]))[_0x69a3('0xa2')](_0x416738['loggerHandler'](_0x69a3('0x203'),_0x204653));}}}}})['catch'](loggerGetContactDialer(_0x69a3('0x204'),_0x204653,_0x51a158));}};Dialer['prototype'][_0x69a3('0xb7')]=function(_0x20a21d,_0x4d4b5f){var _0x5325de=this;var _0x540da7=[];if(_0x4d4b5f<0x1||_0x20a21d[_0x69a3('0xb6')]===_0x69a3('0xb9')){_0x4d4b5f=0x1;}var _0x31a35c=Math[_0x69a3('0x1c2')](_0x20a21d[_0x69a3('0x1c1')]*_0x4d4b5f)-_0x20a21d[_0x69a3('0x83')];if(_0x20a21d[_0x69a3('0x205')]>0x0){var _0x3068de=_0x20a21d['dialLimitQueue']-_0x20a21d[_0x69a3('0x83')]-_0x20a21d[_0x69a3('0x141')]-_0x20a21d[_0x69a3('0x206')];if(_0x31a35c>_0x3068de){_0x31a35c=_0x3068de;}}if(_0x31a35c>0x0&&_0x20a21d['temp']==0x0){if(_0x20a21d[_0x69a3('0xb6')]===_0x69a3('0xb9')){_0x31a35c=0x1;}if(_0x31a35c>this[_0x69a3('0x20')]){_0x31a35c=this[_0x69a3('0x20')];}for(var _0x42c686 in this[_0x69a3('0x1f')]){if(typeof this['agents'][_0x42c686]!=='undefined'){if(this[_0x69a3('0x1f')][_0x42c686]['state']==='not_inuse'&&this['agents'][_0x42c686][_0x69a3('0x89')]==='reachable'){_0x540da7[_0x69a3('0x9a')](this[_0x69a3('0x1f')][_0x42c686]['id']);}}}_0x20a21d[_0x69a3('0x6b')]=0x1;hopperUtils['getContactDialer'](_0x20a21d,_0x540da7,_0x31a35c)[_0x69a3('0x9e')](function(_0x3f2276){_0x20a21d[_0x69a3('0x6b')]=0x0;if(_0x3f2276){if(!utils[_0x69a3('0x207')](_0x3f2276)){hopperUtils[_0x69a3('0x208')](_0x20a21d)[_0x69a3('0x9e')](sendMessageReschedule(_0x20a21d))[_0x69a3('0xa2')](loggerCatch('[countReScheduled]\x20'));}else{_0x20a21d[_0x69a3('0x83')]+=_0x3f2276[_0x69a3('0x101')];_0x20a21d[_0x69a3('0x6d')]=_0x20a21d['dialMethod']===_0x69a3('0xb9')?utils['CAMPAIGN_STATUS'][_0x69a3('0x142')]:utils[_0x69a3('0x6e')][_0x69a3('0x209')];for(var _0x46259d=0x0;_0x46259d<_0x3f2276[_0x69a3('0x101')];_0x46259d+=0x1){if(_[_0x69a3('0xf7')](_0x3f2276[_0x46259d])||_['isNil'](_0x3f2276[_0x46259d][_0x69a3('0x17a')])||_[_0x69a3('0xf7')](_0x3f2276[_0x46259d]['phone'])){_0x5325de[_0x69a3('0x15a')](_0x69a3('0x20a'),_0x20a21d,_0x3f2276[_0x46259d]);}else{hopperUtils['checkIsBlackList'](_[_0x69a3('0x77')](_0x3f2276[_0x46259d],['VoiceQueueId','phone']))[_0x69a3('0x9e')](_0x5325de[_0x69a3('0x1e6')](_0x20a21d,_0x3f2276[_0x46259d]))[_0x69a3('0xa2')](_0x5325de[_0x69a3('0x20b')](_0x69a3('0x20a'),_0x20a21d));}}}}})[_0x69a3('0xa2')](loggerGetContactDialer(_0x69a3('0x20c'),_0x20a21d,_0x31a35c));}};Dialer['prototype'][_0x69a3('0x66')]=function(_0x209801){if(_0x209801[_0x69a3('0x205')]>0x0){var _0x46063f=_0x209801[_0x69a3('0x205')]-_0x209801[_0x69a3('0x83')]-_0x209801[_0x69a3('0x141')];if(_0x46063f>0x0&&_0x209801[_0x69a3('0x6b')]==0x0){this['tryOriginatePredictive'](_0x209801);}else{loggerPredictiveCalls[_0x69a3('0x4a')](_0x69a3('0x20d'));}}else{this['tryOriginatePredictive'](_0x209801);}};Dialer[_0x69a3('0x85')][_0x69a3('0x20e')]=function(_0x28bbc9){var _0x1f6f95=this;var _0x2fc9a7=[];_0x28bbc9[_0x69a3('0x83')]+=0x1;for(var _0x11937b in this[_0x69a3('0x1f')]){if(typeof this[_0x69a3('0x1f')][_0x11937b]!==_0x69a3('0xad')){if(this[_0x69a3('0x1f')][_0x11937b][_0x69a3('0x71')]==='not_inuse'&&this['agents'][_0x11937b][_0x69a3('0x89')]===_0x69a3('0x8a')){_0x2fc9a7[_0x69a3('0x9a')](this[_0x69a3('0x1f')][_0x11937b]['id']);}}}_0x28bbc9['temp']=0x1;return this[_0x69a3('0x20f')](_0x28bbc9['id'],_0x2fc9a7,0x1,_0x28bbc9[_0x69a3('0x210')],_0x28bbc9)[_0x69a3('0x9e')](function(_0xcac7ff){_0x28bbc9[_0x69a3('0x6b')]=0x1;if(_0xcac7ff){if(!utils[_0x69a3('0x207')](_0xcac7ff)){utils[_0x69a3('0x6a')](_0x28bbc9,0x1,0x0);return hopperUtils['countReScheduled'](_0x28bbc9)[_0x69a3('0x9e')](sendMessageReschedule(_0x28bbc9))[_0x69a3('0xa2')](loggerCatch('[countReScheduled]\x20'));}else{_0x28bbc9[_0x69a3('0x6d')]=utils[_0x69a3('0x6e')][_0x69a3('0x209')];if(_[_0x69a3('0xf7')](_0xcac7ff[0x0])||_[_0x69a3('0xf7')](_0xcac7ff[0x0]['Contact'])||_['isNil'](_0xcac7ff[0x0]['phone'])){_0x1f6f95[_0x69a3('0x15a')](_0x69a3('0x20a'),_0x28bbc9,_0xcac7ff[0x0]);}else{return hopperUtils[_0x69a3('0x211')](_[_0x69a3('0x77')](_0xcac7ff[0x0],[_0x69a3('0x108'),'phone']))[_0x69a3('0x9e')](_0x1f6f95['checkContactBlack'](_0x28bbc9,_0xcac7ff[0x0]))[_0x69a3('0xa2')](_0x1f6f95[_0x69a3('0x20b')](_0x69a3('0x212'),_0x28bbc9));}}}})[_0x69a3('0xa2')](loggerGetContactDialer(_0x69a3('0x213'),_0x28bbc9,0x1));};Dialer[_0x69a3('0x85')]['abandonmentRate']=function(_0x1cf7f6,_0x194da3,_0x54ecaa,_0x2ecc54,_0xf5ca3b,_0x5c85a4){loggerPredictive['info'](_0x69a3('0x214'));loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x215'),_0x1cf7f6);loggerPredictive['info'](_0x69a3('0x216'),_0x194da3);loggerPredictive['info']('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',_0x54ecaa);loggerPredictive['info']('P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x2ecc54);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x217'),_0xf5ca3b);loggerPredictive['info']('---------------------------');return new Promise(function(_0x151786,_0x5c4403){if(_0x1cf7f6<=0x0||isNaN(_0x1cf7f6)){return _0x5c4403(msgResponse('[abandonmentRate]',_0x69a3('0x18f'),_0x69a3('0x218')+_0x1cf7f6));}if(_0x54ecaa<=0x0||isNaN(_0x54ecaa)){return _0x5c4403(msgResponse(_0x69a3('0x219'),_0x69a3('0x18f'),'Ts\x20=\x20'+_0x54ecaa));}if(_0x2ecc54<=0x0||isNaN(_0x2ecc54)){return _0x5c4403(msgResponse('[abandonmentRate]',_0x69a3('0x18f'),_0x69a3('0x21a')+_0x2ecc54));}if(_0x194da3<=0x0||isNaN(_0x194da3)){return _0x5c4403(msgResponse(_0x69a3('0x219'),_0x69a3('0x18f'),_0x69a3('0x21b')+_0x194da3));}if(_0xf5ca3b<=0x0||isNaN(_0xf5ca3b)){return _0x5c4403(msgResponse(_0x69a3('0x219'),'Error',_0x69a3('0x21c')+_0xf5ca3b));}_0x5c85a4=_0x5c85a4||0x0;var _0x213530=0x1/_0x54ecaa;var _0x23d4ca=0x0;var _0x5eae6b=0x0;var _0x33150b=0x0;var _0x1ef0a3=0x0;for(var _0x108672=0x0;_0x33150b<_0xf5ca3b;_0x108672+=0x1){_0x5eae6b=_0x108672/_0x194da3;_0x23d4ca=(_0x2ecc54*_0x5eae6b+_0x5c85a4)/_0x213530;_0x33150b=utils[_0x69a3('0x21d')](_0x23d4ca,_0x1cf7f6);_0x1ef0a3=_0x23d4ca/_0x1cf7f6*(0x1-utils[_0x69a3('0x21d')](_0x23d4ca,_0x1cf7f6));}return _0x151786({'erlangCalls':_0x108672,'erlangCallToSecond':_0x194da3/_0x108672,'erlangAbandonmentRate':_0x33150b,'erlangBusyFactor':_0x1ef0a3});});};Dialer[_0x69a3('0x85')][_0x69a3('0x1d9')]=function(_0x514fc9,_0x12eca7,_0x36a713,_0x5d9045,_0x19d6f6,_0xbe9de4){loggerPredictive['info'](_0x69a3('0x21e'));loggerPredictive['info'](_0x69a3('0x215'),_0x514fc9);loggerPredictive['info'](_0x69a3('0x216'),_0x12eca7);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x21f'),_0x36a713);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x220'),_0x5d9045);loggerPredictive['info']('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x19d6f6);loggerPredictive[_0x69a3('0x4a')](_0x69a3('0x54'));return new Promise(function(_0x270e24,_0x15c78b){if(_0x514fc9<=0x0||isNaN(_0x514fc9)){return _0x15c78b(msgResponse(_0x69a3('0x221'),_0x69a3('0x18f'),_0x69a3('0x218')+_0x514fc9));}if(_0x36a713<=0x0||isNaN(_0x36a713)){return _0x15c78b(msgResponse('[busyFactor]',_0x69a3('0x18f'),_0x69a3('0x222')+_0x36a713));}if(_0x5d9045<=0x0||isNaN(_0x5d9045)){return _0x15c78b(msgResponse('[busyFactor]',_0x69a3('0x18f'),_0x69a3('0x21a')+_0x5d9045));}if(_0x12eca7<=0x0||isNaN(_0x12eca7)){return _0x15c78b(msgResponse(_0x69a3('0x221'),'Error',_0x69a3('0x21b')+_0x12eca7));}if(_0x19d6f6<=0x0||isNaN(_0x19d6f6)){return _0x15c78b(msgResponse('[busyFactor]',_0x69a3('0x18f'),_0x69a3('0x223')+_0x19d6f6));}_0xbe9de4=_0xbe9de4||0x0;var _0x19364c=0x1/_0x36a713;var _0x82a39f=0x0;var _0x5cdb34=0x0;var _0x5ad7eb=0x0;var _0x77c2fa=0x0;for(var _0x1ef70e=0x0;_0x77c2fa<_0x19d6f6;_0x1ef70e+=0x1){_0x5cdb34=_0x1ef70e/_0x12eca7;_0x82a39f=(_0x5d9045*_0x5cdb34+_0xbe9de4)/_0x19364c;_0x5ad7eb=utils[_0x69a3('0x21d')](_0x82a39f,_0x514fc9);_0x77c2fa=_0x82a39f/_0x514fc9*(0x1-utils[_0x69a3('0x21d')](_0x82a39f,_0x514fc9));}return _0x270e24({'erlangCalls':_0x1ef70e,'erlangCallToSecond':_0x12eca7/_0x1ef70e,'erlangAbandonmentRate':_0x5ad7eb,'erlangBusyFactor':_0x77c2fa});});};module[_0x69a3('0x224')]=Dialer;
\ No newline at end of file
+var _0x3185=['entity\x20is\x20undefine','evt\x20is\x20undefine','NoSuchNumber','custom:agentnosuchnumber','checkRetriveMax','reason\x200\x20no\x20such\x20number....','outboundNoAnswerCallsDay','buildNoAnswerEventPayload','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','Busy','custom:agentbusy','busy','dialBusyRetryFrequency','callAdditionalPhoneAfterMin','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','outboundCongestionCallsDay','dialCongestionRetryFrequency','custom:agentcongestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','floor','predictiveIntervalMultiplicativeFactor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','predictiveIntervalErlangCallsDroppedCalls','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','avgHandleTime','startMethodPredictive','recalculate\x20predictive\x20at','getDataPredictive','predictiveIntervalAvailable','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','predictiveIntervalHitRate','abandonmentRate','agentBusyFactor','busyFactor','Unknown\x20Predictive','[getDataPredictive]','getDataPredictiveOld','loggedIn','outboundQueuePauses','predictiveIntervalPauses','[CatchErlangB]','check\x20failure','[handlePredictive]','[booked][checkContactBlack]','queueStatusComplete:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','Queue:\x20','getSeconds','scheduledat','dialRecallMeTimeout','voicePause','outboundReCallsDay','dialRecallInQueue','QUEUE_RECALL','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALL_TIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','outboundBlacklistCallsDay','BLACKLIST','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','limitCalls','getContactDialerIvr','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','checkIsBlackListIvr','checkContactBlack','loggerHandler','[actionOriginateIvr]\x20','dialLimitQueue','not_inuse','getContactDialer','checkContactEmpty','[countReScheduled]\x20','checkIsBlackList','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','dialOrderByScheduledAt','checkContactLowerLimitOriginate','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','Amax\x20=\x20','erlangb','----\x20Agent\x20Busy\x20Factor\x20----','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','m\x20=\x20','Umin\x20=\x20','exports','util','uuid','moment','ioredis','../preview/util/util','../../../config/environment/','dialer','booked','../../../config/logger','predictive','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/setting','../rpc/interval','./models/action','./models/agentComplete','./models/queueCallerAbandon','./models/hangup','XCALLY_IP_AGI','127.0.0.1','prototype','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','optionPredictive','startProgressive','queueBooked','queuesSummary','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','syncQueueSummary','syncQueueSummaryComplete','newexten','syncNewExten','varset','syncVarSet','queuemember','syncQueueMember','loopClearZombieChannels','getSettings','then','isUndefined','emit','outbound','debug','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','inspect','format','name','voice_queue:save','isEmpty','info','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalTotalCalls','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAnsweredCalls','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsTimeout','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAvgTalktime','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','erlangCalls','erlangCallToSecond','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangAbandonmentRate','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangBusyFactor','---------------------------','merge','startProgressive\x20value\x20cleared','startPredictive','handlePredictive','error','stack','temp','message','CONTACTS_RESCHEDULED','[getContactDialer2][ReScheduled]','contactsRescheduled','contacts','CAMPAIGN_STATUS','NO_AVAILABLE_CONTACTS','state','statedesc','endtime','starttime','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','pick','NULL_INTERVAL','Intervals','\x20INTERVAL_IS_NULL','Interval','isIVRCampaignActive','INACTIVE','\x20NOT\x20Active','isIVRCampaign','campaign:ivr:%s','campaign:save','sendMessageOneNotActive','originated','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','DISACTIVED','[ifTime][Action]','Error','stringify','active','status','reachable','unmonitored','checkIsTrunkReachable','isTrunkReachable','Trunk','TrunkBackup','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTimeIvr','checkIfTimeIntervals','ifTime','Failure','\x20Intervals\x20is\x20null\x20','EMPTY_INTERVAL','\x20Intervals\x20is\x20empty\x20','timezones','UNKNOWN_TIMEZONE','\x20Timezone\x20unknow\x20','length','push','Action','command','iftime\x20%s,%s','content','indexOf','true','catch','all','OVERTIME_GLOBAL_INTERVAL','OVERTIME_INTERVAL','[ifTime][promiseAll]','Global:\x20','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','loopCampaigns','resetActiveCalls','syncCampaigns','undefined','resolve','dialTimezone','launchHandleIvr','[syncCampaigns]','checkDialMethod','dialMethod','progressive','power','handlePower','dialPowerLevel','Queue','method\x20not\x20recognized','silly','Dialer::ifTime()','intervalIftime','Dialer::ifTime()\x20errResponse\x20NOT\x20NULL:','isGlobal','AMI\x20IfTime','queue','uniqueId','ivr','updateOriginated','uniqueid','answertime','type','outboundAnswerCallsDay','reason','agiafterat','dialQueueProject2','dialAgiAfterHangupAgent','YYYY-MM-DD\x20HH:mm:ss','createHistory','[syncAgentComplete][createHistory]','moveContactManagedDialer','[syncAgentComplete]','droptime','responsetime','outboundDropCallsDayTimeout','Drop','dropreason','TIMEOUT','countdropretry','countglobal','dialDropRetryFrequency','voiceQueue','additional','dialDropMaxRetry','queueCallerAbandonCreateState','add','ContactId','ListId','CampaignId','[rescheduleContact][Drop]','calleridnum','[syncAgentComplete][createHistory][10]','swapAdditionalPhones','CALLEREXIT','countabandonedretry','dialAbandonedRetryFrequency','verifyAdditionalPhones','dialAbandonedMaxRetry','rescheduleContact','VoiceQueueId','[rescheduleContact][Abandoned]','Abandoned','calleridname','channel','actionid','strategy','rrmemory','locked','paused','stateinterface','syncQueueStatusComplete','roundrobin','run','idHopper','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','queueBookedRR','_rr','isNil','unlockRR','Agent:\x20','contactAgent-idHopper:\x20','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','getQueue','response','Success','callProgressDetecting','[callProgressDetecting]\x20','variable','amdstatus','exten','dialAMDActive','value','HANGUP','HangupInAMD','membername','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','MACHINE','outboundAnswerAgiCallsDay','Machine','AMD','countmachineretry','[syncAgentComplete][createHistory][0]','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countagentrejectretry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','minutes','saveInDb','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','countbusyretry','dialGlobalMaxRetry','reason\x2019\x20machine....','[rescheduleContact][Machine]','syncHangup','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','AGI','dialQueueProject','outboundUnknownCallsDay','cause-txt','Unknow','running','isPreviewCampaign','statusMessage','getQueueCampaignStatusMessage','available','talking','pTalking','ACTIVE','compareToOutboundQueue','queueSummaryCountersUpdated','assign','[syncQueueSummary]','throttle','dialPreviewRecallmeReminder','filter','online','map','user:%s','user:dialPreviewRecallReminder','checkPreviewRecallReminder','clearZombieChannels','[Dialer][checkChannel]','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','emptyContact','notFound','UserId','[emptyContact][createHistory]','[emptyContact]','[syncQueueCallerAbandon]\x20[Drop]','handlePreviewRecallNotifications','Agent','handleIvr','object','originate','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','dialQueueTimeout','NONE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','XMD-AMDMAXIMUMWORDLENGTH','isOutboundQueue','XMD-VOICEQUEUEID','setXMDContactVariables','Contact','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','callerid','dialOriginateCallerIdName','extractCalleridName','XMD-ORIGINATECALLERIDNUM','phone','variables','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','from-sip','dialOriginateTimeout','outboundOriginateFailureCallsDay','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialBusyMaxRetry','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[callProgressDetecting]'];(function(_0x3fd885,_0x47925b){var _0x2489ca=function(_0x480217){while(--_0x480217){_0x3fd885['push'](_0x3fd885['shift']());}};_0x2489ca(++_0x47925b);}(_0x3185,0x87));var _0x5318=function(_0xed50c5,_0x5ef5e5){_0xed50c5=_0xed50c5-0x0;var _0x4f5ccf=_0x3185[_0xed50c5];return _0x4f5ccf;};'use strict';var util=require(_0x5318('0x0'));var _=require('lodash');var uuid=require(_0x5318('0x1'));var moment=require(_0x5318('0x2'));var rr=require('rr');var Redis=require(_0x5318('0x3'));var utils=require('./utils');var hopperUtils=require('./utils/hopper');var ut=require(_0x5318('0x4'));var config=require(_0x5318('0x5'));var logger=require('../../../config/logger')(_0x5318('0x6'));var loggerBooked=require('../../../config/logger')(_0x5318('0x7'));var loggerPredictive=require(_0x5318('0x8'))(_0x5318('0x9'));var loggerPredictiveCalls=require(_0x5318('0x8'))('predictiveCalls');var loggerSyncQueueSummary=require(_0x5318('0x8'))('syncQueueSummary');var ami=require(_0x5318('0xa'));config[_0x5318('0xb')]=_[_0x5318('0xc')](config[_0x5318('0xb')],{'host':_0x5318('0xd'),'port':0x18eb});var io=require(_0x5318('0xe'))(new Redis(config['redis']));var cmHopper=require(_0x5318('0xf'));var voiceQueueRt=require('../rpc/voiceQueueRt');var RpcSetting=require(_0x5318('0x10'));var Interval=require(_0x5318('0x11'));var Action=require(_0x5318('0x12'));var History=require('./models/history');var Final=require('./models/final');var AgentComplete=require(_0x5318('0x13'));var QueueCallerAbandon=require(_0x5318('0x14'));var Hangup=require(_0x5318('0x15'));var ipAgi=process['env'][_0x5318('0x16')]||_0x5318('0x17');var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0x5318('0x18')][_0x5318('0x19')]=function(_0x2a6832){this[_0x5318('0x1a')]=this[_0x5318('0x1a')]?this[_0x5318('0x1a')][_0x5318('0x1b')](_0x2a6832):_0x2a6832();};function Dialer(_0x4afdfe,_0xdc6a6e){this[_0x5318('0x1c')]=new Sequence();this[_0x5318('0x1d')]=_0xdc6a6e;this['voiceQueues']=_0x4afdfe[_0x5318('0x1e')];this[_0x5318('0x1f')]=_0x4afdfe[_0x5318('0x1f')];this[_0x5318('0x20')]=_0x4afdfe['agents'];this[_0x5318('0x21')]=_0x4afdfe[_0x5318('0x21')];this[_0x5318('0x22')]=config[_0x5318('0x22')]||0x2;this[_0x5318('0x23')]={};this[_0x5318('0x24')]={};this['contactsId']={};this['uniqueId']={};this[_0x5318('0x25')]={};this['startPredictive']={};this[_0x5318('0x26')]={};this['ivrOriginated']={};this[_0x5318('0x27')]={};this['queueBookedRR']={};this[_0x5318('0x28')]={};ami['on']('agentconnect',this[_0x5318('0x29')][_0x5318('0x2a')](this));ami['on'](_0x5318('0x2b'),this[_0x5318('0x2c')][_0x5318('0x2a')](this));ami['on'](_0x5318('0x2d'),this[_0x5318('0x2e')][_0x5318('0x2a')](this));ami['on'](_0x5318('0x2f'),this[_0x5318('0x30')][_0x5318('0x2a')](this));ami['on']('custom:queuesummary',this[_0x5318('0x31')][_0x5318('0x2a')](this));ami['on']('custom:queuesummarycomplete',this[_0x5318('0x32')][_0x5318('0x2a')](this));ami['on']('hangup',this['syncHangup']['bind'](this));ami['on'](_0x5318('0x33'),this[_0x5318('0x34')][_0x5318('0x2a')](this));ami['on'](_0x5318('0x35'),this[_0x5318('0x36')][_0x5318('0x2a')](this));ami['on'](_0x5318('0x37'),this[_0x5318('0x38')][_0x5318('0x2a')](this));ami['on']('queuestatuscomplete',this['syncQueueStatusComplete']['bind'](this));this['loopCampaigns']();this[_0x5318('0x39')]();RpcSetting[_0x5318('0x3a')]()[_0x5318('0x3b')](function(_0x1e7030){previewRecallmeReminderInterval=_0x1e7030['previewRecallmeReminderInterval'];});}function isNotNull(_0x3f3e94){return _0x3f3e94!==null&&!_[_0x5318('0x3c')](_0x3f3e94);}function msgResponse(_0x3d742e,_0x395015,_0x2cd218){return{'action':_0x3d742e,'response':_0x395015,'message':_0x2cd218,'stack':_0x2cd218};}function emit(_0x223d65,_0x40e869,_0x566e5c){io['to'](_0x223d65)[_0x5318('0x3d')](_0x40e869,_0x566e5c);}function emitOutboundVoiceQueueSummary(_0x40f637){if(_0x40f637['type']===_0x5318('0x3e')){logger[_0x5318('0x3f')](_0x5318('0x40'),util[_0x5318('0x41')](_0x40f637,{'showHidden':![],'depth':null}));emit(util[_0x5318('0x42')]('voice:queue:%s',_0x40f637[_0x5318('0x43')]),_0x5318('0x44'),_0x40f637);}}function checkGetDataPredictive(_0x37feaa){if(isNotNull(_0x37feaa)&&!_[_0x5318('0x45')](_0x37feaa)){loggerPredictive['info']('-----\x20Stats\x20Predictive\x20---');loggerPredictive[_0x5318('0x46')](_0x5318('0x47'),_0x37feaa[_0x5318('0x48')]);loggerPredictive[_0x5318('0x46')](_0x5318('0x49'),_0x37feaa[_0x5318('0x4a')]);loggerPredictive[_0x5318('0x46')](_0x5318('0x4b'),_0x37feaa[_0x5318('0x4c')]);loggerPredictive[_0x5318('0x46')](_0x5318('0x4d'),_0x37feaa[_0x5318('0x4e')]);loggerPredictive[_0x5318('0x46')]('AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x37feaa[_0x5318('0x4f')]);loggerPredictive[_0x5318('0x46')](_0x5318('0x50'),_0x37feaa[_0x5318('0x51')]);loggerPredictive[_0x5318('0x46')]('---------------------------');if(_0x37feaa[_0x5318('0x48')]>0x0){if(!_[_0x5318('0x3c')](_0x37feaa['predictiveIntervalAvgTalktime'])&&_0x37feaa['predictiveIntervalAvgTalktime']>0x0){return!![];}loggerPredictive[_0x5318('0x46')](_0x5318('0x52'));if(!_[_0x5318('0x3c')](_0x37feaa[_0x5318('0x4f')])&&_0x37feaa['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive[_0x5318('0x46')](_0x5318('0x53'));}else{loggerPredictive['info'](_0x5318('0x54'));}}else{loggerPredictive[_0x5318('0x46')](_0x5318('0x55'));}return![];}function mergeDataErlangB(_0x304d8a){return function(_0x29a721){loggerPredictive[_0x5318('0x46')](_0x5318('0x56'));loggerPredictive[_0x5318('0x46')]('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x29a721[_0x5318('0x57')]);loggerPredictive['info']('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x29a721[_0x5318('0x58')]);loggerPredictive['info'](_0x5318('0x59'),_0x29a721[_0x5318('0x5a')]);loggerPredictive['info'](_0x5318('0x5b'),_0x29a721[_0x5318('0x5c')]);loggerPredictive[_0x5318('0x46')](_0x5318('0x59'),_0x29a721[_0x5318('0x5a')]);loggerPredictive[_0x5318('0x46')](_0x5318('0x5d'));_[_0x5318('0x5e')](_0x304d8a,_0x29a721);};}function ifInterval(_0x16bf6b,_0x90fe7d){if(_[_0x5318('0x3c')](_0x90fe7d)){return![];}return utils['getSeconds'](undefined,_0x90fe7d)<_0x16bf6b*0x3c;}function clearPredictiveAttributes(_0x387b17){if(_0x387b17[_0x5318('0x26')]){_0x387b17[_0x5318('0x26')]=undefined;loggerPredictive[_0x5318('0x3f')](_0x387b17[_0x5318('0x43')],_0x5318('0x5f'));}if(_0x387b17[_0x5318('0x60')]){_0x387b17[_0x5318('0x60')]=undefined;loggerPredictive[_0x5318('0x3f')](_0x387b17[_0x5318('0x43')],'startPredictive\x20value\x20cleared');}if(_0x387b17[_0x5318('0x61')]){clearInterval(_0x387b17['handlePredictive']);_0x387b17['handlePredictive']=undefined;loggerPredictive[_0x5318('0x3f')](_0x387b17[_0x5318('0x43')],'handlePredictive\x20interval\x20cleared');}}function loggerCatchPredictive(_0x4751b5,_0x4a6cb1){return function(_0x22ee9d){loggerPredictive[_0x5318('0x62')](_0x4a6cb1[_0x5318('0x43')],_0x4751b5);loggerPredictive[_0x5318('0x62')](_0x22ee9d[_0x5318('0x63')]);clearPredictiveAttributes(_0x4a6cb1);};}function loggerCatch(_0x16b1ad){return function(_0x5e6d88){logger[_0x5318('0x62')](_0x16b1ad,util['inspect'](_0x5e6d88,{'showHidden':![],'depth':null}));};}function loggerGetContactDialer(_0x1b1e77,_0x1d3be3,_0x5903e6){return function(_0x416628){utils['checkContactLowerLimitOriginate'](_0x1d3be3,_0x5903e6,0x0);_0x1d3be3[_0x5318('0x64')]=0x0;logger['error'](_0x1b1e77,util[_0x5318('0x41')](_0x416628,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x4c6163){return function(_0x588f75){if(isNotNull(_0x588f75)&&isNotNull(_0x588f75[0x0])){if(_0x588f75[0x0]['contactsRescheduled']>0x0){_0x4c6163[_0x5318('0x65')]=utils['CAMPAIGN_STATUS'][_0x5318('0x66')];logger[_0x5318('0x46')](_0x5318('0x67')+_0x4c6163[_0x5318('0x43')],_0x588f75[0x0][_0x5318('0x68')],_0x5318('0x69'));}else{_0x4c6163[_0x5318('0x65')]=utils[_0x5318('0x6a')][_0x5318('0x6b')];logger[_0x5318('0x46')]('[getContactDialer2][Empty]'+_0x4c6163['name']);}}};}function createObjHistory(_0x2dbb04,_0x96dc38,_0x40885c,_0x4c7253,_0x344099){_0x2dbb04['message']=_0x40885c;var _0x420eae=new Action(_0x2dbb04,_0x96dc38);var _0x58f4d9=new History(_0x420eae);_0x58f4d9[_0x5318('0x6c')]=_0x4c7253;_0x58f4d9[_0x5318('0x6d')]=_0x344099;_0x58f4d9[_0x5318('0x6e')]=_0x420eae[_0x5318('0x6f')];return _0x58f4d9;}function unlockQueueStatus(_0x4bf714,_0x119993){setTimeout(function(){if(_[_0x5318('0x3c')](_0x4bf714[_0x5318('0x70')])){loggerBooked[_0x5318('0x62')](_0x5318('0x71'),_0x119993);}_0x4bf714[_0x5318('0x70')]=!![];loggerBooked[_0x5318('0x46')](_0x5318('0x72'),_0x119993,JSON['stringify'](_[_0x5318('0x73')](_0x4bf714,[_0x5318('0x43'),_0x5318('0x70')])));},0x1f3);}function checkInterval(_0x20de28){return function(){if(!isNotNull(_0x20de28['Interval'])){_0x20de28[_0x5318('0x65')]=utils[_0x5318('0x6a')][_0x5318('0x74')];throw _0x20de28[_0x5318('0x43')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_0x20de28['Interval'][_0x5318('0x75')])){_0x20de28['message']=utils[_0x5318('0x6a')][_0x5318('0x74')];throw _0x20de28[_0x5318('0x43')]+_0x5318('0x76');}if(!isNotNull(_['isEmpty'](_0x20de28[_0x5318('0x77')][_0x5318('0x75')]))){_0x20de28[_0x5318('0x65')]=utils[_0x5318('0x6a')][_0x5318('0x74')];throw _0x20de28[_0x5318('0x43')]+_0x5318('0x76');}};}function checkIsIVRCampaignActive(_0xdaf9c6){return function(){if(!utils[_0x5318('0x78')](_0xdaf9c6)){_0xdaf9c6[_0x5318('0x65')]=utils[_0x5318('0x6a')][_0x5318('0x79')];throw _0xdaf9c6[_0x5318('0x43')]+_0x5318('0x7a');}};}function emitCampaignSummary(_0x29ac77){if(utils[_0x5318('0x7b')](_0x29ac77)){emit(util['format'](_0x5318('0x7c'),_0x29ac77[_0x5318('0x43')]),_0x5318('0x7d'),_0x29ac77);}}function loggerCatchQueueSummary(_0x93430c,_0x53f819){return function(_0x165680){clearPredictiveAttributes(_0x53f819);emitCampaignSummary(_0x53f819);loggerSyncQueueSummary[_0x5318('0x3f')](_0x93430c,util[_0x5318('0x41')](_0x165680,{'showHidden':![],'depth':null}));};}function notSendMessagesCampaign(_0x3135b7){if(_0x3135b7[_0x5318('0x7e')]){if(_0x3135b7[_0x5318('0x7f')]===0x0){_0x3135b7['sendMessageOneNotActive']=![];_0x3135b7[_0x5318('0x65')]=utils[_0x5318('0x6a')][_0x5318('0x79')];loggerSyncQueueSummary[_0x5318('0x3f')](_0x5318('0x80'),_0x3135b7[_0x5318('0x43')],'is\x20not\x20active');}else{_0x3135b7['message']=utils['CAMPAIGN_STATUS'][_0x5318('0x81')];loggerSyncQueueSummary[_0x5318('0x3f')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x3135b7[_0x5318('0x43')],'is\x20disactive');}emitCampaignSummary(_0x3135b7);}}function myreject(_0x3fa3ad){return function(_0x2aa109){return _0x3fa3ad(msgResponse(_0x5318('0x82'),_0x5318('0x83'),JSON[_0x5318('0x84')](_0x2aa109)));};}Dialer['prototype']['isTrunkReachable']=function(_0x498717){return!_[_0x5318('0x3c')](_0x498717)&&_0x498717&&!_[_0x5318('0x3c')](_0x498717[_0x5318('0x43')])&&!_[_0x5318('0x3c')](_0x498717[_0x5318('0x85')])&&_0x498717[_0x5318('0x85')]&&(this[_0x5318('0x21')][util['format']('SIP/%s',_0x498717[_0x5318('0x43')])][_0x5318('0x86')]===_0x5318('0x87')||this[_0x5318('0x21')][util['format']('SIP/%s',_0x498717[_0x5318('0x43')])][_0x5318('0x86')]===_0x5318('0x88'));};Dialer[_0x5318('0x18')][_0x5318('0x89')]=function(_0xfb13fc){var _0x4b69f9=this;return function(){if(!_0x4b69f9[_0x5318('0x8a')](_0xfb13fc[_0x5318('0x8b')])){if(!_0x4b69f9['isTrunkReachable'](_0xfb13fc[_0x5318('0x8c')])){_0xfb13fc[_0x5318('0x65')]=utils['CAMPAIGN_STATUS']['TRUNK_NOT_REACHABLE'];throw _0xfb13fc['name']+_0x5318('0x8d');}}};};Dialer[_0x5318('0x18')][_0x5318('0x8e')]=function(_0xc71914,_0x2aeee2,_0x439b25,_0x2193a6){var _0x1f59fe=this;return function(){var _0x911373=!![];return _0x1f59fe[_0x5318('0x8f')](_0xc71914,_0x2aeee2,_0x439b25,_0x2193a6,_0x911373);};};Dialer['prototype'][_0x5318('0x90')]=function(_0x1a630d,_0x15a9de,_0x5df8fe,_0x2886c3){var _0x14cf97=this;return function(){var _0x1329c8=![];return _0x14cf97[_0x5318('0x8f')](_0x1a630d['Intervals'],_0x15a9de,_0x5df8fe,_0x2886c3,_0x1329c8);};};Dialer[_0x5318('0x18')]['ifTimeIvr']=function(_0x4b3868,_0x40543e,_0x2d58ad,_0x5ad160,_0x5b3026){var _0x288ca9=[];return new Promise(function(_0xdc452a,_0x4655b5){if(!isNotNull(_0x4b3868)){_0x5ad160[_0x5318('0x65')]=utils[_0x5318('0x6a')][_0x5318('0x74')];return _0x4655b5(msgResponse(_0x5318('0x91'),_0x5318('0x92'),_0x2d58ad+_0x5318('0x93')));}if(_[_0x5318('0x45')](_0x4b3868)){_0x5ad160[_0x5318('0x65')]=utils[_0x5318('0x6a')][_0x5318('0x94')];return _0x4655b5(msgResponse(_0x5318('0x91'),_0x5318('0x92'),_0x2d58ad+_0x5318('0x95')));}if(_0x40543e&&_[_0x5318('0x3c')](config[_0x5318('0x96')][_0x40543e])){_0x5ad160[_0x5318('0x65')]=utils[_0x5318('0x6a')][_0x5318('0x97')];return _0x4655b5(msgResponse('ifTime',_0x5318('0x92'),_0x2d58ad+_0x5318('0x98')+_0x40543e));}if(_['isArray'](_0x4b3868)){for(var _0x3a3399=0x0;_0x3a3399<_0x4b3868[_0x5318('0x99')];_0x3a3399+=0x1){_0x288ca9[_0x5318('0x9a')](ami[_0x5318('0x9b')]({'action':_0x5318('0x9c'),'command':util[_0x5318('0x42')](_0x5318('0x9d'),_0x4b3868[_0x3a3399]['interval'],!_[_0x5318('0x3c')](config[_0x5318('0x96')][_0x40543e])?_0x40543e:'')})[_0x5318('0x3b')](function(_0x1443c0){return _0x1443c0[_0x5318('0x9e')][_0x5318('0x9f')](_0x5318('0xa0'))>=0x0;})['catch'](myreject(_0x4655b5)));}}else{_0x288ca9[_0x5318('0x9a')](ami['Action']({'action':_0x5318('0x9c'),'command':util[_0x5318('0x42')](_0x5318('0x9d'),_0x4b3868,!_[_0x5318('0x3c')](config[_0x5318('0x96')][_0x40543e])?_0x40543e:'')})['then'](function(_0x453bd8){return _0x453bd8[_0x5318('0x9e')][_0x5318('0x9f')]('true')>=0x0;})[_0x5318('0xa1')](myreject(_0x4655b5)));}Promise[_0x5318('0xa2')](_0x288ca9)[_0x5318('0x3b')](function(_0x3bcd49){var _0x210e4b=_['some'](_0x3bcd49);if(_0x210e4b){return _0xdc452a(_0x210e4b);}else{_0x5ad160[_0x5318('0x65')]=_0x5b3026?utils['CAMPAIGN_STATUS'][_0x5318('0xa3')]:utils[_0x5318('0x6a')][_0x5318('0xa4')];return _0x4655b5(msgResponse(_0x5318('0xa5'),_0x5318('0x92'),_0x5318('0xa6')+_0x5b3026+'\x20'+_0x2d58ad+_0x5318('0xa7')+util[_0x5318('0x41')](_0x4b3868,{'showHidden':![],'depth':null})+_0x5318('0xa8')+_0x40543e));}})[_0x5318('0xa1')](function(_0xc2e146){return _0x4655b5(msgResponse(_0x5318('0x91'),_0x5318('0x92'),JSON[_0x5318('0x84')](_0xc2e146)));});});};Dialer[_0x5318('0x18')][_0x5318('0xa9')]=function(){var _0x50504c=this;return cmHopper[_0x5318('0xaa')]({'active':![]},{'where':{'active':!![]}})[_0x5318('0x3b')](function(){setInterval(function(){_0x50504c[_0x5318('0xab')]();},0x3e8);});};Dialer[_0x5318('0x18')][_0x5318('0xab')]=function(){var _0x5eaf2f=this;var _0x3b8230;for(var _0x312093 in this['campaigns']){if(typeof this[_0x5318('0x1f')][_0x312093]!==_0x5318('0xac')){_0x3b8230=this[_0x5318('0x1f')][_0x312093];if(utils[_0x5318('0x7b')](_0x3b8230)&&utils[_0x5318('0x78')](_0x3b8230)){_0x3b8230['sendMessageOneNotActive']=!![];Promise[_0x5318('0xad')]()['then'](checkIsIVRCampaignActive(_0x3b8230))[_0x5318('0x3b')](checkInterval(_0x3b8230))['then'](_0x5eaf2f[_0x5318('0x89')](_0x3b8230))[_0x5318('0x3b')](_0x5eaf2f[_0x5318('0x8e')](_0x3b8230['dialGlobalInterval'],_0x3b8230[_0x5318('0xae')],_0x3b8230[_0x5318('0x43')],_0x3b8230))[_0x5318('0x3b')](_0x5eaf2f[_0x5318('0x90')](_0x3b8230[_0x5318('0x77')],_0x3b8230[_0x5318('0xae')],_0x3b8230[_0x5318('0x43')],_0x3b8230))['then'](_0x5eaf2f[_0x5318('0xaf')](_0x3b8230))[_0x5318('0xa1')](loggerCatchQueueSummary(_0x5318('0xb0'),_0x3b8230));}else{notSendMessagesCampaign(_0x3b8230);}}}};Dialer[_0x5318('0x18')][_0x5318('0xb1')]=function(_0xd4d250){if(_0xd4d250[_0x5318('0xb2')]!==_0x5318('0x9')){clearPredictiveAttributes(_0xd4d250);}switch(_0xd4d250[_0x5318('0xb2')]){case _0x5318('0xb3'):this['handlePower'](_0xd4d250,0x1);break;case _0x5318('0xb4'):this[_0x5318('0xb5')](_0xd4d250,_0xd4d250[_0x5318('0xb6')]);break;case _0x5318('0x9'):this[_0x5318('0x9')](_0xd4d250);break;case'booked':this[_0x5318('0xb5')](_0xd4d250,0x1);break;default:logger[_0x5318('0x62')](_0x5318('0xb7'),_0xd4d250[_0x5318('0x43')],_0x5318('0xb8'));}};Dialer[_0x5318('0x18')][_0x5318('0x91')]=function(_0x156d5c,_0x40d6d0){var _0x18bcdd=_0x156d5c[_0x5318('0xae')];var _0x214f3e=_0x40d6d0?_0x156d5c['dialGlobalInterval']:_0x156d5c[_0x5318('0x77')][_0x5318('0x75')];logger[_0x5318('0xb9')](_0x5318('0xba'),_0x214f3e,_0x18bcdd,_0x156d5c['name'],util[_0x5318('0x42')]('Voice\x20Queue\x20%s\x20$s',_0x156d5c['name'],_0x156d5c['id']));var _0x2f9d80=null;return Interval[_0x5318('0xbb')](_0x214f3e,_0x18bcdd)[_0x5318('0x3b')](function(_0x5ca477){if(_0x5ca477===!![]){return _0x5ca477;}else{_0x156d5c[_0x5318('0x65')]=_0x40d6d0?utils[_0x5318('0x6a')][_0x5318('0xa3')]:utils[_0x5318('0x6a')][_0x5318('0xa4')];_0x2f9d80=msgResponse(_0x5318('0xa5'),'Failure','Global:\x20'+_0x40d6d0+'\x20'+_0x156d5c['name']+'\x20Interval\x20is\x20overtime:\x20'+util[_0x5318('0x41')](_0x214f3e,{'showHidden':![],'depth':null})+_0x5318('0xa8')+_0x18bcdd);}if(_0x2f9d80!==null){logger[_0x5318('0xb9')](_0x5318('0xbc'),_0x2f9d80);_0x2f9d80[_0x5318('0xbd')]=_0x40d6d0;throw _0x2f9d80;}})['catch'](function(_0x1e8827){logger[_0x5318('0x62')](_0x5318('0xbe'),_0x1e8827);throw msgResponse(_0x5318('0x82'),_0x5318('0x83'),util[_0x5318('0x41')](_0x1e8827,{'showHidden':![],'depth':null}));});};Dialer[_0x5318('0x18')][_0x5318('0x29')]=function(_0x74ff00){if(this[_0x5318('0x1e')][_0x74ff00[_0x5318('0xbf')]]){if(this[_0x5318('0xc0')][_0x74ff00['uniqueid']]&&this[_0x5318('0xc0')][_0x74ff00['uniqueid']]['type']!==_0x5318('0xc1')){this[_0x5318('0xc2')](this[_0x5318('0x1e')][_0x74ff00[_0x5318('0xbf')]]);this['uniqueId'][_0x74ff00[_0x5318('0xc3')]][_0x5318('0xc4')]=moment()[_0x5318('0x42')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer[_0x5318('0x18')][_0x5318('0x30')]=function(_0x573bcc){var _0x3b6d60=this['uniqueId'][_0x573bcc[_0x5318('0xc3')]];if(this[_0x5318('0x1e')][_0x573bcc['queue']]){if(_0x3b6d60&&_0x3b6d60[_0x5318('0xc5')]!==_0x5318('0xc1')){delete this[_0x5318('0xc0')][_0x573bcc[_0x5318('0xc3')]];this[_0x5318('0x1e')][_0x573bcc[_0x5318('0xbf')]][_0x5318('0xc6')]+=0x1;var _0x9e101f=new AgentComplete(_0x3b6d60,_0x573bcc);if(_0x573bcc[_0x5318('0xc7')]==='agent'){_0x9e101f[_0x5318('0xc8')]=this[_0x5318('0x1e')][_0x573bcc[_0x5318('0xbf')]][_0x5318('0xc9')]&&this[_0x5318('0x1e')][_0x573bcc[_0x5318('0xbf')]][_0x5318('0xca')]?moment()[_0x5318('0x42')](_0x5318('0xcb')):undefined;}hopperUtils[_0x5318('0xcc')](_0x9e101f)[_0x5318('0xa1')](loggerCatch(_0x5318('0xcd')));hopperUtils[_0x5318('0xce')](_0x9e101f)[_0x5318('0xa1')](loggerCatch(_0x5318('0xcf')));}}};Dialer[_0x5318('0x18')]['syncQueueCallerAbandon']=function(_0x145155){var _0x16ba67=this[_0x5318('0xc0')][_0x145155['uniqueid']];var _0x2d2b6f=this;var _0x8e4c66=![];var _0x55351f;var _0x883acd;if(this[_0x5318('0x1e')][_0x145155[_0x5318('0xbf')]]){if(_0x16ba67&&_0x16ba67[_0x5318('0xc5')]!==_0x5318('0xc1')){delete this[_0x5318('0xc0')][_0x145155[_0x5318('0xc3')]];this['updateOriginated'](this[_0x5318('0x1e')][_0x145155[_0x5318('0xbf')]]);_0x16ba67[_0x5318('0xd0')]=moment()['format'](_0x5318('0xcb'));var _0x2da8fd=new QueueCallerAbandon(_0x16ba67,_0x145155);if(utils['getSeconds'](_0x16ba67['droptime'],_0x16ba67[_0x5318('0xd1')])>=_0x16ba67['dialQueueTimeout']){this[_0x5318('0x1e')][_0x145155[_0x5318('0xbf')]][_0x5318('0x4c')]+=0x1;this['voiceQueues'][_0x145155[_0x5318('0xbf')]][_0x5318('0xd2')]+=0x1;this[_0x5318('0x1e')][_0x145155[_0x5318('0xbf')]]['predictiveIntervalErlangCallsDroppedCalls']+=0x1;_0x2da8fd['state']=0xa;_0x2da8fd[_0x5318('0x6d')]=_0x5318('0xd3');_0x2da8fd[_0x5318('0xd4')]=_0x5318('0xd5');_0x2da8fd['agiafterat']=this[_0x5318('0x1e')][_0x145155['queue']][_0x5318('0xc9')]?moment()['format'](_0x5318('0xcb')):undefined;_0x2da8fd[_0x5318('0xd6')]+=0x1;_0x2da8fd[_0x5318('0xd7')]+=0x1;_0x55351f=this['voiceQueues'][_0x145155[_0x5318('0xbf')]][_0x5318('0xd8')];_0x883acd=this['voiceQueues'][_0x145155[_0x5318('0xbf')]]['callAdditionalPhoneAfterMin'];hopperUtils['verifyAdditionalPhones'](_0x2da8fd,_0x2da8fd[_0x5318('0x6c')],_0x16ba67[_0x5318('0xd9')])[_0x5318('0x3b')](function(_0x4fc052){_0x8e4c66=_0x4fc052[_0x5318('0xda')]==0x1;if(_0x2da8fd[_0x5318('0xd6')]>=_0x2d2b6f[_0x5318('0x1e')][_0x145155[_0x5318('0xbf')]][_0x5318('0xdb')]){_0x2d2b6f[_0x5318('0xdc')](_0x2da8fd,_0x4fc052[_0x5318('0xda')]);}else{hopperUtils['rescheduleContact']({'active':![],'countdropretry':_0x2da8fd['countdropretry'],'scheduledat':moment()[_0x5318('0xdd')](_0x2d2b6f['voiceQueues'][_0x145155[_0x5318('0xbf')]][_0x5318('0xd8')],'minutes')[_0x5318('0x42')](_0x5318('0xcb')),'ContactId':_0x16ba67[_0x5318('0xde')],'ListId':_0x16ba67[_0x5318('0xdf')],'VoiceQueueId':_0x16ba67['VoiceQueueId']||undefined,'CampaignId':_0x16ba67[_0x5318('0xe0')]||undefined})[_0x5318('0xa1')](loggerCatch(_0x5318('0xe1')));var _0x4e0402=new History(_0x2da8fd);_0x4e0402[_0x5318('0x6c')]=0xa;_0x4e0402[_0x5318('0x6d')]=_0x5318('0xd3');_0x4e0402['starttime']=moment()[_0x5318('0x42')](_0x5318('0xcb'));_0x4e0402[_0x5318('0x6e')]=_0x4e0402[_0x5318('0x6f')];_0x4e0402['calleridname']=_0x2da8fd['calleridname'];_0x4e0402[_0x5318('0xe2')]=_0x2da8fd[_0x5318('0xe2')];hopperUtils[_0x5318('0xcc')](_0x4e0402)['catch'](loggerCatch(_0x5318('0xe3')));}})[_0x5318('0x3b')](function(){if(_0x8e4c66)hopperUtils[_0x5318('0xe4')](_0x2da8fd,_0x55351f,_0x883acd)[_0x5318('0x3b')](function(){return 0x1;});});}else{this[_0x5318('0x1e')][_0x145155[_0x5318('0xbf')]][_0x5318('0x4e')]+=0x1;this['voiceQueues'][_0x145155[_0x5318('0xbf')]]['outboundDropCallsDayCallersExit']+=0x1;_0x2da8fd['state']=0xb;_0x2da8fd[_0x5318('0x6d')]='Abandoned';_0x2da8fd[_0x5318('0xd4')]=_0x5318('0xe5');_0x2da8fd[_0x5318('0xe6')]+=0x1;_0x2da8fd['countglobal']+=0x1;_0x55351f=this[_0x5318('0x1e')][_0x145155[_0x5318('0xbf')]][_0x5318('0xe7')];_0x883acd=this[_0x5318('0x1e')][_0x145155[_0x5318('0xbf')]]['callAdditionalPhoneAfterMin'];hopperUtils[_0x5318('0xe8')](_0x2da8fd,_0x2da8fd[_0x5318('0x6c')],_0x16ba67[_0x5318('0xd9')])[_0x5318('0x3b')](function(_0xdbb910){if(_0x2da8fd['countabandonedretry']>=_0x2d2b6f[_0x5318('0x1e')][_0x145155['queue']][_0x5318('0xe9')]){_0x2d2b6f['queueCallerAbandonCreateState'](_0x2da8fd,_0xdbb910['additional']);}else{hopperUtils[_0x5318('0xea')]({'active':![],'countabandonedretry':_0x2da8fd[_0x5318('0xe6')],'scheduledat':moment()[_0x5318('0xdd')](_0x2d2b6f[_0x5318('0x1e')][_0x145155[_0x5318('0xbf')]][_0x5318('0xe7')],'minutes')[_0x5318('0x42')](_0x5318('0xcb')),'ContactId':_0x16ba67[_0x5318('0xde')],'ListId':_0x16ba67[_0x5318('0xdf')],'VoiceQueueId':_0x16ba67[_0x5318('0xeb')]||undefined,'CampaignId':_0x16ba67[_0x5318('0xe0')]||undefined})['catch'](loggerCatch(_0x5318('0xec')));var _0x3d6c91=new History(_0x2da8fd);_0x3d6c91[_0x5318('0x6c')]=0xb;_0x3d6c91['statedesc']=_0x5318('0xed');_0x3d6c91[_0x5318('0x6f')]=moment()[_0x5318('0x42')](_0x5318('0xcb'));_0x3d6c91[_0x5318('0x6e')]=_0x3d6c91['starttime'];_0x3d6c91[_0x5318('0xee')]=_0x2da8fd[_0x5318('0xee')];_0x3d6c91[_0x5318('0xe2')]=_0x2da8fd['calleridnum'];hopperUtils[_0x5318('0xcc')](_0x3d6c91)['catch'](loggerCatch('[syncAgentComplete][createHistory][11]'));}})[_0x5318('0x3b')](function(){if(_0x8e4c66)hopperUtils['swapAdditionalPhones'](_0x2da8fd,_0x55351f,_0x883acd)[_0x5318('0x3b')](function(){return 0x1;});});}}}};Dialer[_0x5318('0x18')][_0x5318('0x34')]=function(_0xbbea81){if(this[_0x5318('0x24')][_0xbbea81[_0x5318('0xc3')]]){this[_0x5318('0x24')][_0xbbea81[_0x5318('0xc3')]][_0x5318('0xef')]=_0xbbea81[_0x5318('0xef')];}if(this['uniqueId'][_0xbbea81[_0x5318('0xc3')]]){this[_0x5318('0xc0')][_0xbbea81[_0x5318('0xc3')]][_0x5318('0xef')]=_0xbbea81['channel'];}};Dialer[_0x5318('0x18')][_0x5318('0x38')]=function(_0x4825cd){if(!this[_0x5318('0x24')][_0x4825cd[_0x5318('0xf0')]]){return;}var _0x37aabe=this[_0x5318('0x1e')][this[_0x5318('0x24')][_0x4825cd[_0x5318('0xf0')]][_0x5318('0xbf')]][_0x5318('0xf1')]||_0x5318('0xf2');if(_0x37aabe==='roundrobin'){if(this[_0x5318('0x24')][_0x4825cd[_0x5318('0xf0')]]&&_['isNil'](this[_0x5318('0x24')][_0x4825cd['actionid']][_0x5318('0xf3')])&&_0x4825cd[_0x5318('0x86')]==='1'&&_0x4825cd[_0x5318('0xf4')]==='0'){if(this[_0x5318('0x20')][_0x4825cd[_0x5318('0xf5')]]){if(!this['agents'][_0x4825cd['stateinterface']][_0x5318('0xf3')]){this[_0x5318('0x20')][_0x4825cd[_0x5318('0xf5')]]['locked']=!![];this[_0x5318('0x24')][_0x4825cd[_0x5318('0xf0')]][_0x5318('0xf3')]=!![];this[_0x5318('0x24')][_0x4825cd['actionid']][_0x5318('0xf5')]=_0x4825cd['stateinterface'];}}}}else if(_0x37aabe===_0x5318('0xf2')){if(this['actions'][_0x4825cd[_0x5318('0xf0')]]){if(this[_0x5318('0x20')][_0x4825cd[_0x5318('0xf5')]]){this[_0x5318('0x24')][_0x4825cd['actionid']][_0x5318('0xf5')]=_0x4825cd[_0x5318('0xf5')];if(_['isNil'](this['queueBooked'][this[_0x5318('0x24')][_0x4825cd[_0x5318('0xf0')]][_0x5318('0xbf')]])){this[_0x5318('0x27')][this[_0x5318('0x24')][_0x4825cd[_0x5318('0xf0')]]['queue']]=[];}this[_0x5318('0x27')][this['actions'][_0x4825cd[_0x5318('0xf0')]][_0x5318('0xbf')]][_0x5318('0x9a')](_[_0x5318('0x5e')](_[_0x5318('0x73')](this[_0x5318('0x24')][_0x4825cd['actionid']],['idHopper',_0x5318('0xf5')]),{'status':_0x4825cd['status'],'paused':_0x4825cd[_0x5318('0xf4')]}));}}}};Dialer[_0x5318('0x18')][_0x5318('0xf6')]=function(_0x4d8217){if(!this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]]){return;}var _0x24a5e9=this;var _0x4a0ded=this[_0x5318('0x1e')][this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xbf')]];var _0x1c2ce4=_0x4a0ded[_0x5318('0xf1')]||_0x5318('0xf2');if(_0x1c2ce4===_0x5318('0xf7')){if(this['actions'][_0x4d8217[_0x5318('0xf0')]]&&this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]]['stateinterface']){this[_0x5318('0x1d')][_0x5318('0xf8')](this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xf9')],this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]]['stateinterface'])[_0x5318('0xa1')](function(_0x1c5089){logger[_0x5318('0x62')](_0x5318('0xfa'),util[_0x5318('0x41')](_0x1c5089,{'showHidden':![],'depth':null}));})['finally'](function(){_0x24a5e9[_0x5318('0xc2')](_0x24a5e9[_0x5318('0x1e')][_0x24a5e9[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xbf')]]);_0x24a5e9['agents'][_0x24a5e9[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]]['stateinterface']]['locked']=![];delete _0x24a5e9[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]];unlockQueueStatus(_0x4a0ded);});}else{this['updateOriginated'](this[_0x5318('0x1e')][this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xbf')]]);hopperUtils[_0x5318('0xea')]({'active':![],'ContactId':this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]]['ContactId'],'ListId':this[_0x5318('0x24')][_0x4d8217['actionid']][_0x5318('0xdf')],'VoiceQueueId':this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xeb')]||undefined,'CampaignId':this[_0x5318('0x24')][_0x4d8217['actionid']][_0x5318('0xe0')]||undefined})[_0x5318('0xa1')](loggerCatch(_0x5318('0xfb')));delete this[_0x5318('0x24')][_0x4d8217['actionid']];unlockQueueStatus(_0x4a0ded);}}else if(_0x1c2ce4===_0x5318('0xf2')){var _0x1da380;if(this[_0x5318('0x24')][_0x4d8217['actionid']]&&!_[_0x5318('0x45')](this[_0x5318('0x27')][this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xbf')]])){if(this[_0x5318('0xfc')][_0x24a5e9[_0x5318('0x24')][_0x4d8217['actionid']]['queue']]){this['queueBookedRR'][_0x24a5e9[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]]['queue']]=this[_0x5318('0xfc')][this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xbf')]]?this[_0x5318('0xfc')][this['actions'][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xbf')]]:this[_0x5318('0x27')][this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xbf')]]?this[_0x5318('0x27')][this['actions'][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xbf')]]['_rr']||0x0:0x0;}this[_0x5318('0x27')][this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xbf')]][_0x5318('0xfd')]=this['queueBookedRR'][this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xbf')]];for(var _0xfa8edd=0x0;_0xfa8edd<this[_0x5318('0x27')][this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]]['queue']][_0x5318('0x99')];_0xfa8edd+=0x1){_0x1da380=rr(this[_0x5318('0x27')][this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xbf')]]);this[_0x5318('0xfc')][_0x24a5e9[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]]['queue']]=this[_0x5318('0x27')][this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xbf')]][_0x5318('0xfd')];if(_0x1da380[_0x5318('0x86')]==='1'&&_0x1da380[_0x5318('0xf4')]==='0'){break;}}if(!_[_0x5318('0xfe')](_0x1da380)){this[_0x5318('0x20')][_0x1da380['stateinterface']][_0x5318('0xff')]=_['isUndefined'](this['agents'][_0x1da380[_0x5318('0xf5')]][_0x5318('0xff')])?!![]:this[_0x5318('0x20')][_0x1da380[_0x5318('0xf5')]]['unlockRR'];}loggerBooked['info']('[booked][RR]',_0x4d8217[_0x5318('0xf0')],_0x5318('0x100'),JSON[_0x5318('0x84')](_['pick'](this['agents'][_0x1da380[_0x5318('0xf5')]],[_0x5318('0x43'),_0x5318('0xff')])),_0x5318('0x101'),JSON[_0x5318('0x84')](_0x1da380[_0x5318('0xf9')]));if(!_[_0x5318('0xfe')](_0x1da380)&&_0x1da380[_0x5318('0x86')]==='1'&&_0x1da380['paused']==='0'&&this[_0x5318('0x20')][_0x1da380[_0x5318('0xf5')]][_0x5318('0xff')]){this[_0x5318('0x20')][_0x1da380[_0x5318('0xf5')]][_0x5318('0xff')]=![];this['queueBooked'][_0x24a5e9[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xbf')]]=[];this[_0x5318('0x1d')]['run'](_0x1da380[_0x5318('0xf9')],_0x1da380[_0x5318('0xf5')])[_0x5318('0xa1')](function(_0x127916){logger['error']('[Catch][Preview][syncQueueStatusComplete]',util['inspect'](_0x127916,{'showHidden':![],'depth':null}));})[_0x5318('0x1b')](function(){_0x24a5e9[_0x5318('0xc2')](_0x24a5e9['voiceQueues'][_0x24a5e9[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xbf')]]);setTimeout(function(){_0x24a5e9[_0x5318('0x20')][_0x1da380['stateinterface']][_0x5318('0xff')]=!![];loggerBooked[_0x5318('0x46')]('[booked][RR][finaly]',_0x4d8217[_0x5318('0xf0')],_0x5318('0x100'),JSON[_0x5318('0x84')](_['pick'](_0x24a5e9[_0x5318('0x20')][_0x1da380[_0x5318('0xf5')]],[_0x5318('0x43'),_0x5318('0xff')])),_0x5318('0x101'),JSON[_0x5318('0x84')](_0x1da380[_0x5318('0xf9')]));},0xc7);delete _0x24a5e9[_0x5318('0x24')][_0x4d8217['actionid']];unlockQueueStatus(_0x4a0ded,_0x4d8217[_0x5318('0xf0')]);});}else{loggerBooked['info'](_0x5318('0x102'));this[_0x5318('0xc2')](this[_0x5318('0x1e')][this[_0x5318('0x24')][_0x4d8217['actionid']][_0x5318('0xbf')]]);hopperUtils[_0x5318('0xea')]({'active':![],'ContactId':this[_0x5318('0x24')][_0x4d8217['actionid']]['ContactId'],'ListId':this[_0x5318('0x24')][_0x4d8217['actionid']][_0x5318('0xdf')],'VoiceQueueId':this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xeb')]||undefined,'CampaignId':this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]]['CampaignId']||undefined})[_0x5318('0xa1')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0x5318('0x24')][_0x4d8217['actionid']];unlockQueueStatus(_0x4a0ded);}}else{loggerBooked[_0x5318('0x46')](_0x5318('0x103'));this[_0x5318('0xc2')](this[_0x5318('0x1e')][this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]]['queue']]);hopperUtils[_0x5318('0xea')]({'active':![],'ContactId':this['actions'][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xde')],'ListId':this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xdf')],'VoiceQueueId':this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xeb')]||undefined,'CampaignId':this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]]['CampaignId']||undefined})['catch'](loggerCatch(_0x5318('0x104')));delete this[_0x5318('0x24')][_0x4d8217['actionid']];unlockQueueStatus(_0x4a0ded);}}else{loggerBooked[_0x5318('0x46')](_0x5318('0x105'));this[_0x5318('0xc2')](this[_0x5318('0x1e')][this[_0x5318('0x24')][_0x4d8217['actionid']][_0x5318('0xbf')]]);hopperUtils[_0x5318('0xea')]({'active':![],'ContactId':this[_0x5318('0x24')][_0x4d8217['actionid']][_0x5318('0xde')],'ListId':this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]][_0x5318('0xdf')],'VoiceQueueId':this[_0x5318('0x24')][_0x4d8217['actionid']][_0x5318('0xeb')]||undefined,'CampaignId':this[_0x5318('0x24')][_0x4d8217['actionid']][_0x5318('0xe0')]||undefined})[_0x5318('0xa1')](loggerCatch('[unlock3][syncQueueStatusComplete]'));delete this[_0x5318('0x24')][_0x4d8217[_0x5318('0xf0')]];unlockQueueStatus(_0x4a0ded);}};Dialer['prototype']['syncOriginateResponse']=function(_0x1c5c06){var _0x2fa1d4=this['actions'][_0x1c5c06[_0x5318('0xf0')]];if(_0x2fa1d4){delete this['actions'][_0x1c5c06[_0x5318('0xf0')]];_0x2fa1d4[_0x5318('0xd1')]=moment()[_0x5318('0x42')](_0x5318('0xcb'));var _0x553da5=_0x2fa1d4[_0x5318('0xc5')]===_0x5318('0xc1')?this[_0x5318('0x1f')][_0x2fa1d4[_0x5318('0xbf')]]:this[_0x5318('0x1e')][_0x2fa1d4[_0x5318('0x106')]()];if(_0x1c5c06[_0x5318('0x107')]!==_0x5318('0x108')){this['updateOriginated'](_0x553da5);return this[_0x5318('0x109')](_0x2fa1d4,_0x553da5,_0x1c5c06)['catch'](loggerCatch(_0x5318('0x10a')));}this[_0x5318('0xc0')][_0x1c5c06[_0x5318('0xc3')]]=_0x2fa1d4;}};Dialer[_0x5318('0x18')][_0x5318('0x36')]=function(_0x570cbd){var _0x32409b=this;var _0x5bdecd=this[_0x5318('0xc0')][_0x570cbd[_0x5318('0xc3')]];var _0x30fb9c;if(!_[_0x5318('0xfe')](_0x570cbd)&&!_[_0x5318('0xfe')](_0x570cbd[_0x5318('0x10b')])&&!_[_0x5318('0xfe')](_0x570cbd[_0x5318('0x10b')][_0x5318('0x10c')])&&_0x570cbd[_0x5318('0x10d')]==='xcally-motion-dialer'&&_0x5bdecd){if(_0x5bdecd[_0x5318('0xc5')]!==_0x5318('0xc1')&&this[_0x5318('0x1e')][_0x5bdecd[_0x5318('0xbf')]][_0x5318('0x10e')]&&_0x570cbd[_0x5318('0x10f')]===_0x5318('0x110')){delete this['uniqueId'][_0x570cbd['uniqueid']];this[_0x5318('0xc2')](this[_0x5318('0x1e')][_0x5bdecd[_0x5318('0xbf')]]);this[_0x5318('0x1e')][_0x5bdecd['queue']]['outboundAnswerCallsDay']+=0x1;this[_0x5318('0x1e')][_0x5bdecd[_0x5318('0xbf')]]['outboundAnswerAgiCallsDay']+=0x1;_0x30fb9c=new Hangup(_0x5bdecd,_0x570cbd);_0x30fb9c[_0x5318('0x6c')]=0x12;_0x30fb9c[_0x5318('0x6d')]=_0x5318('0x111');_0x30fb9c[_0x5318('0x112')]='AMD';ami['emit'](_0x5318('0x113'),ut[_0x5318('0x114')](_0x30fb9c,_0x5318('0x115')));this['saveInDb'](_0x30fb9c,_0x5318('0x116'),_0x5318('0x117'));}if(_0x5bdecd[_0x5318('0xc5')]!==_0x5318('0xc1')&&this[_0x5318('0x1e')][_0x5bdecd[_0x5318('0xbf')]][_0x5318('0x10e')]&&_0x570cbd[_0x5318('0x10f')]===_0x5318('0x118')){return new Promise(function(_0x39ed99,_0x30feca){delete _0x32409b[_0x5318('0xc0')][_0x570cbd['uniqueid']];_0x32409b['updateOriginated'](_0x32409b[_0x5318('0x1e')][_0x5bdecd[_0x5318('0xbf')]]);_0x32409b[_0x5318('0x1e')][_0x5bdecd[_0x5318('0xbf')]][_0x5318('0xc6')]+=0x1;_0x32409b[_0x5318('0x1e')][_0x5bdecd[_0x5318('0xbf')]][_0x5318('0x119')]+=0x1;var _0x5bdacb=_0x32409b[_0x5318('0x1e')][_0x5bdecd[_0x5318('0xbf')]];var _0x14b8db=new Hangup(_0x5bdecd,_0x570cbd);_0x14b8db['state']=0x13;_0x14b8db[_0x5318('0x6d')]=_0x5318('0x11a');_0x14b8db[_0x5318('0x112')]=_0x5318('0x11b');_0x14b8db[_0x5318('0x11c')]+=0x1;_0x14b8db[_0x5318('0xd7')]+=0x1;_0x14b8db[_0x5318('0x115')]=!![];ami[_0x5318('0x3d')](_0x5318('0x113'),ut['buildObj'](_0x14b8db,'amd'));hopperUtils[_0x5318('0xcc')](_0x14b8db)[_0x5318('0xa1')](loggerCatch(_0x5318('0x11d')));if(_0x14b8db['countbusyretry']+_0x14b8db[_0x5318('0x11e')]+_0x14b8db[_0x5318('0x11f')]+_0x14b8db[_0x5318('0x120')]+_0x14b8db[_0x5318('0xd6')]+_0x14b8db[_0x5318('0xe6')]+_0x14b8db['countmachineretry']+_0x14b8db[_0x5318('0x121')]>=_0x5bdacb['dialGlobalMaxRetry']){_0x32409b[_0x5318('0x122')](_0x14b8db,_0x39ed99,_0x30feca,_0x5318('0x123'));}else{if(_0x14b8db[_0x5318('0x11c')]>=_0x5bdacb[_0x5318('0x124')]){_0x32409b[_0x5318('0x125')](_0x14b8db,_0x39ed99,_0x30feca,'reason\x2019\x20machine....');}else{hopperUtils[_0x5318('0xea')]({'active':![],'countmachineretry':_0x14b8db['countmachineretry'],'scheduledat':moment()[_0x5318('0xdd')](_0x5bdacb['dialMachineRetryFrequency'],_0x5318('0x126'))[_0x5318('0x42')](_0x5318('0xcb')),'ContactId':_0x14b8db[_0x5318('0xde')],'ListId':_0x14b8db[_0x5318('0xdf')],'VoiceQueueId':_0x14b8db[_0x5318('0xeb')]||undefined,'CampaignId':_0x14b8db[_0x5318('0xe0')]||undefined})[_0x5318('0xa1')](loggerCatch('[rescheduleContact][Machine]'));_0x39ed99({'reschedule':0x1});}}});}if(_0x5bdecd[_0x5318('0xc5')]===_0x5318('0xc1')&&this[_0x5318('0x1f')][_0x5bdecd['queue']][_0x5318('0x10e')]&&_0x570cbd[_0x5318('0x10f')]===_0x5318('0x110')){delete this[_0x5318('0xc0')][_0x570cbd[_0x5318('0xc3')]];this[_0x5318('0xc2')](this['campaigns'][_0x5bdecd[_0x5318('0xbf')]]);_0x30fb9c=new Hangup(_0x5bdecd,_0x570cbd);_0x30fb9c[_0x5318('0x6c')]=0x12;_0x30fb9c[_0x5318('0x6d')]='HangupInAMD';_0x30fb9c[_0x5318('0x112')]=_0x5318('0x11b');ami[_0x5318('0x3d')](_0x5318('0x113'),ut['buildObj'](_0x30fb9c,'amd'));this[_0x5318('0x127')](_0x30fb9c,_0x5318('0x128'),_0x5318('0x129'));}if(_0x5bdecd[_0x5318('0xc5')]===_0x5318('0xc1')&&this[_0x5318('0x1f')][_0x5bdecd[_0x5318('0xbf')]][_0x5318('0x10e')]&&_0x570cbd['value']===_0x5318('0x118')){return new Promise(function(_0x31c659,_0x577eb9){delete _0x32409b[_0x5318('0xc0')][_0x570cbd['uniqueid']];_0x32409b[_0x5318('0xc2')](_0x32409b[_0x5318('0x1f')][_0x5bdecd['queue']]);_0x32409b[_0x5318('0x1f')][_0x5bdecd[_0x5318('0xbf')]][_0x5318('0xc6')]+=0x1;_0x32409b['campaigns'][_0x5bdecd[_0x5318('0xbf')]][_0x5318('0x119')]+=0x1;var _0x1b0df1=_0x32409b['campaigns'][_0x5bdecd[_0x5318('0xbf')]];var _0x455446=new Hangup(_0x5bdecd,_0x570cbd);_0x455446[_0x5318('0x6c')]=0x13;_0x455446[_0x5318('0x6d')]=_0x5318('0x11a');_0x455446['membername']=_0x5318('0x11b');_0x455446[_0x5318('0x11c')]+=0x1;_0x455446['countglobal']+=0x1;_0x455446[_0x5318('0x115')]=!![];ami[_0x5318('0x3d')](_0x5318('0x113'),ut['buildObj'](_0x455446,'amd'));hopperUtils[_0x5318('0xcc')](_0x455446)[_0x5318('0xa1')](loggerCatch(_0x5318('0x11d')));if(_0x455446[_0x5318('0x12a')]+_0x455446[_0x5318('0x11e')]+_0x455446[_0x5318('0x11f')]+_0x455446[_0x5318('0x120')]+_0x455446[_0x5318('0xd6')]+_0x455446[_0x5318('0xe6')]+_0x455446[_0x5318('0x11c')]+_0x455446[_0x5318('0x121')]>=_0x1b0df1[_0x5318('0x12b')]){_0x32409b['stateGlobal'](_0x455446,_0x31c659,_0x577eb9,_0x5318('0x123'));}else{if(_0x455446['countmachineretry']>=_0x1b0df1['dialMachineMaxRetry']){_0x32409b[_0x5318('0x125')](_0x455446,_0x31c659,_0x577eb9,_0x5318('0x12c'));}else{hopperUtils[_0x5318('0xea')]({'active':![],'countmachineretry':_0x455446[_0x5318('0x11c')],'scheduledat':moment()['add'](_0x1b0df1['dialMachineRetryFrequency'],_0x5318('0x126'))[_0x5318('0x42')](_0x5318('0xcb')),'ContactId':_0x455446[_0x5318('0xde')],'ListId':_0x455446['ListId'],'VoiceQueueId':_0x455446[_0x5318('0xeb')]||undefined,'CampaignId':_0x455446[_0x5318('0xe0')]||undefined})[_0x5318('0xa1')](loggerCatch(_0x5318('0x12d')));_0x31c659({'reschedule':0x1});}}});}}};Dialer[_0x5318('0x18')][_0x5318('0x12e')]=function(_0x13c6f6){var _0x3788c1=this[_0x5318('0xc0')][_0x13c6f6['uniqueid']];var _0x1fe1e1;if(_0x3788c1&&_0x3788c1[_0x5318('0xc5')]===_0x5318('0xc1')){delete this['uniqueId'][_0x13c6f6[_0x5318('0xc3')]];this['updateOriginated'](this[_0x5318('0x1f')][_0x3788c1[_0x5318('0xbf')]]);this['campaigns'][_0x3788c1[_0x5318('0xbf')]][_0x5318('0x12f')]+=0x1;_0x1fe1e1=new Hangup(_0x3788c1,_0x13c6f6);hopperUtils[_0x5318('0xcc')](_0x1fe1e1)[_0x5318('0xa1')](loggerCatch(_0x5318('0x130')));hopperUtils[_0x5318('0xce')](_0x1fe1e1)[_0x5318('0xa1')](loggerCatch(_0x5318('0x131')));}if(_0x3788c1&&_0x3788c1[_0x5318('0xc5')]!==_0x5318('0xc1')&&isNotNull(this['voiceQueues'][_0x3788c1['queue']]['dialQueueProject'])){delete this[_0x5318('0xc0')][_0x13c6f6['uniqueid']];this[_0x5318('0xc2')](this['voiceQueues'][_0x3788c1[_0x5318('0xbf')]]);this[_0x5318('0x1e')][_0x3788c1[_0x5318('0xbf')]][_0x5318('0xc6')]+=0x1;this[_0x5318('0x1e')][_0x3788c1['queue']][_0x5318('0x119')]+=0x1;_0x1fe1e1=new Hangup(_0x3788c1,_0x13c6f6);_0x1fe1e1[_0x5318('0x6c')]=0x10;_0x1fe1e1[_0x5318('0x6d')]='AnswerAGI';_0x1fe1e1['membername']=_0x5318('0x132');hopperUtils[_0x5318('0xcc')](_0x1fe1e1)[_0x5318('0xa1')](loggerCatch(_0x5318('0x130')));hopperUtils[_0x5318('0xce')](_0x1fe1e1)[_0x5318('0xa1')](loggerCatch(_0x5318('0x131')));}if(_0x3788c1&&_0x3788c1[_0x5318('0xc5')]!==_0x5318('0xc1')&&!isNotNull(this[_0x5318('0x1e')][_0x3788c1[_0x5318('0xbf')]][_0x5318('0x133')])){delete this[_0x5318('0xc0')][_0x13c6f6[_0x5318('0xc3')]];this[_0x5318('0xc2')](this['voiceQueues'][_0x3788c1['queue']]);this[_0x5318('0x1e')][_0x3788c1['queue']][_0x5318('0x134')]+=0x1;_0x1fe1e1=new Hangup(_0x3788c1,_0x13c6f6);_0x1fe1e1[_0x5318('0x6c')]=0xc;_0x1fe1e1[_0x5318('0x6d')]=_0x13c6f6[_0x5318('0x135')];_0x1fe1e1[_0x5318('0x112')]=_0x5318('0x136');hopperUtils['createHistory'](_0x1fe1e1)['catch'](loggerCatch('[syncHangupIvr][createHistory]'));hopperUtils['moveContactManagedDialer'](_0x1fe1e1)['catch'](loggerCatch(_0x5318('0x131')));}};Dialer[_0x5318('0x18')][_0x5318('0x31')]=function(_0x47d2e8){var _0x419b57=this;if(!_0x419b57[_0x5318('0x28')][_0x47d2e8[_0x5318('0x43')]]){_0x419b57[_0x5318('0x28')][_0x47d2e8[_0x5318('0x43')]]={'running':![]};}else if(_0x419b57[_0x5318('0x28')][_0x47d2e8['name']][_0x5318('0x137')]===!![]){return;}else if(_0x419b57[_0x5318('0x28')][_0x47d2e8[_0x5318('0x43')]][_0x5318('0x137')]===![]){_0x419b57['queuesSummary'][_0x47d2e8[_0x5318('0x43')]][_0x5318('0x137')]=!![];}var _0x13ad3e=_0x419b57[_0x5318('0x1e')][_0x47d2e8[_0x5318('0x43')]];var _0x2e5e26=_0x13ad3e[_0x5318('0x65')]!==utils['CAMPAIGN_STATUS'][_0x5318('0x79')];var _0x1b8fe7=utils[_0x5318('0x138')](_0x13ad3e);_0x13ad3e[_0x5318('0x139')]=utils[_0x5318('0x13a')](_0x13ad3e,_0x419b57[_0x5318('0x21')]);Promise[_0x5318('0xad')]()['then'](function(){if(_0x13ad3e['statusMessage']===utils[_0x5318('0x6a')][_0x5318('0x79')]){if(_0x2e5e26){clearPredictiveAttributes(_0x13ad3e);_0x47d2e8['startPredictive']=undefined;_0x47d2e8[_0x5318('0x26')]=undefined;}if(_0x13ad3e['statusMessage']===utils[_0x5318('0x6a')][_0x5318('0x79')]){_0x47d2e8[_0x5318('0x13b')]=0x0;_0x47d2e8[_0x5318('0xf4')]=0x0;_0x47d2e8['inUse']=0x0;_0x47d2e8[_0x5318('0x13c')]=0x0;_0x47d2e8[_0x5318('0x13d')]=0x0;}}else if(_0x13ad3e[_0x5318('0x139')]===utils[_0x5318('0x6a')][_0x5318('0x13e')]&&!_0x1b8fe7){return _0x419b57[_0x5318('0x91')](_0x13ad3e,!![])[_0x5318('0x3b')](function(){return _0x419b57[_0x5318('0x91')](_0x13ad3e,![]);})['then'](function(){return _0x419b57[_0x5318('0xb1')](_0x13ad3e);})[_0x5318('0xa1')](function(_0x1531ef){loggerSyncQueueSummary[_0x5318('0x3f')]('[syncQueueSummary]',util['inspect'](_0x1531ef,{'showHidden':![],'depth':null}));clearPredictiveAttributes(_0x13ad3e);});}else{clearPredictiveAttributes(_0x13ad3e);}})[_0x5318('0x3b')](function(){var _0x1e4ace=_0x47d2e8[_0x5318('0x13f')](_0x13ad3e);if(_0x1e4ace||_0x13ad3e[_0x5318('0x140')]){_0x13ad3e[_0x5318('0x140')]=![];_0x47d2e8['updateReportFromOutboundQueue'](_0x13ad3e);Object[_0x5318('0x141')](_0x13ad3e,_0x47d2e8);emitOutboundVoiceQueueSummary(_0x47d2e8);}_0x419b57[_0x5318('0x28')][_0x13ad3e[_0x5318('0x43')]][_0x5318('0x137')]=![];})['catch'](function(_0xf2b035){logger[_0x5318('0x62')](_0x5318('0x142'),util[_0x5318('0x41')](_0xf2b035,{'showHidden':![],'depth':null}));_0x419b57[_0x5318('0x28')][_0x13ad3e[_0x5318('0x43')]]['running']=![];});};Dialer['prototype'][_0x5318('0x32')]=_[_0x5318('0x143')](function(){var _0x57d9a6=_['filter'](this[_0x5318('0x1e')],function(_0x630385){return _0x630385[_0x5318('0x144')];});var _0x36263d=_[_0x5318('0x145')](this[_0x5318('0x20')],function(_0x1ded4c){return _0x1ded4c[_0x5318('0x146')]&&_0x1ded4c[_0x5318('0x86')]==='reachable';});if(_0x57d9a6[_0x5318('0x99')]>0x0&&_0x36263d[_0x5318('0x99')]>0x0){return Promise[_0x5318('0xad')]()[_0x5318('0x3b')](cmHopper['handlePreviewRecallNotifications'](_[_0x5318('0x147')](_0x57d9a6,'id'),previewRecallmeReminderInterval,_['map'](_0x36263d,'id')))['then'](function(_0x1820cc){for(var _0x4e0a90=0x0;_0x4e0a90<_0x1820cc[_0x5318('0x99')];_0x4e0a90++){var _0x1a5efd=_0x1820cc[_0x4e0a90]['Agent'][_0x5318('0x43')];if(_0x1a5efd)io['to'](util[_0x5318('0x42')](_0x5318('0x148'),_0x1a5efd))[_0x5318('0x3d')](_0x5318('0x149'),{'hopper':_0x1820cc[_0x4e0a90]});}})[_0x5318('0xa1')](function(_0x5b76ff){logger[_0x5318('0x62')](_0x5318('0x14a'),_0x5b76ff);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0x5318('0x18')][_0x5318('0x39')]=function(){var _0x40deb8=this;setInterval(function(){_0x40deb8[_0x5318('0x14b')](_0x40deb8[_0x5318('0xc0')],'[uniqueid]');_0x40deb8[_0x5318('0x14b')](_0x40deb8['actions'],'[actions]');},0x32c8);};Dialer[_0x5318('0x18')][_0x5318('0x14b')]=function(_0x305356,_0x2aab63){var _0x186090=this;for(var _0x3b12f7 in _0x305356){if(typeof _0x305356[_0x3b12f7]!==_0x5318('0xac')){this[_0x5318('0x1c')][_0x5318('0x19')](function(){if(!_[_0x5318('0xfe')](_0x305356[_0x3b12f7])){return ami[_0x5318('0x9b')]({'action':_0x5318('0x86'),'channel':_0x305356[_0x3b12f7][_0x5318('0xef')]})['catch'](function(_0x1cc61b){if(_0x1cc61b['message']==='No\x20such\x20channel'){setTimeout(function(){if(_0x305356[_0x3b12f7]&&_0x305356[_0x3b12f7][_0x5318('0xc5')]!==_0x5318('0xc1')){_0x186090[_0x5318('0xc2')](_0x186090[_0x5318('0x1e')][_0x305356[_0x3b12f7][_0x5318('0xbf')]]);logger[_0x5318('0x62')](_0x5318('0x14c'),_0x2aab63,_0x3b12f7,_0x305356[_0x3b12f7]['queue']);delete _0x305356[_0x3b12f7];}if(_0x305356[_0x3b12f7]&&_0x305356[_0x3b12f7][_0x5318('0xc5')]===_0x5318('0xc1')){_0x186090['updateOriginated'](_0x186090[_0x5318('0x1f')][_0x305356[_0x3b12f7][_0x5318('0xbf')]]);logger[_0x5318('0x62')]('[Dialer][checkChannel][ivr]',_0x2aab63,_0x3b12f7,_0x305356[_0x3b12f7][_0x5318('0xbf')]);delete _0x305356[_0x3b12f7];}},0x2328);}});}});}}};Dialer[_0x5318('0x18')][_0x5318('0x14d')]=function(_0x40e0c9){return Promise[_0x5318('0xad')]()['then'](voiceQueueRt[_0x5318('0x14d')](_0x40e0c9))['catch'](loggerCatch(_0x5318('0x14e')));};Dialer[_0x5318('0x18')]['updateOriginated']=function(_0x3dadd7){if(!_[_0x5318('0x3c')](_0x3dadd7)&&_0x3dadd7!==null){if(typeof _0x3dadd7[_0x5318('0x7f')]!==_0x5318('0xac')){if(_0x3dadd7[_0x5318('0x7f')]>0x0){_0x3dadd7[_0x5318('0x7f')]-=0x1;}else{logger[_0x5318('0x62')](_0x5318('0x14f'));}}}else{logger[_0x5318('0x62')]('[updateOriginated]\x20is\x20null\x20or\x20undefined');}};Dialer['prototype']['loggerHandler']=function(_0x390a96,_0x5b3636){var _0x5266fb=this;return function(_0x2743f0){_0x5266fb[_0x5318('0xc2')](_0x5b3636);logger['error'](_0x390a96,util[_0x5318('0x41')](_0x2743f0,{'showHidden':![],'depth':null}));};};Dialer[_0x5318('0x18')][_0x5318('0x150')]=function(_0x42d134,_0x52d793,_0x47265c){var _0x230d5e={'state':0x19,'statedesc':_0x5318('0x151')};this[_0x5318('0xc2')](_0x52d793);this['saveInDb'](_[_0x5318('0x5e')](_0x230d5e,_[_0x5318('0x73')](_0x47265c,['ContactId','ListId',_0x5318('0x152'),_0x5318('0xeb'),_0x5318('0xe0')])),_0x5318('0x153'),_0x5318('0x154'));logger[_0x5318('0x62')](_0x42d134);};Dialer[_0x5318('0x18')][_0x5318('0x127')]=function(_0x491698,_0x2696f4,_0xf68f5c){hopperUtils[_0x5318('0xcc')](_0x491698)['catch'](loggerCatch(_0x2696f4));hopperUtils['moveContactManagedDialer'](_0x491698)[_0x5318('0xa1')](loggerCatch(_0xf68f5c));};Dialer[_0x5318('0x18')][_0x5318('0xdc')]=function(_0x3a1e74,_0x170a3e){hopperUtils[_0x5318('0xcc')](_0x3a1e74)[_0x5318('0xa1')](loggerCatch(_0x5318('0xcd')));if(_0x170a3e==0x0){hopperUtils['moveContactManagedDialer'](_0x3a1e74)[_0x5318('0xa1')](loggerCatch(_0x5318('0x155')));}};Dialer[_0x5318('0x18')][_0x5318('0x14a')]=function(_0x5c5b2a){return Promise[_0x5318('0xad')]()['then'](cmHopper[_0x5318('0x156')](_0x5c5b2a['id'],previewRecallmeReminderInterval))[_0x5318('0x3b')](function(_0x52355b){for(var _0x2bcb48=0x0;_0x2bcb48<_0x52355b['length'];_0x2bcb48++){var _0x2794c1=_0x52355b[_0x2bcb48][_0x5318('0x157')][_0x5318('0x43')];if(_0x2794c1)io['to'](util['format'](_0x5318('0x148'),_0x2794c1))['emit'](_0x5318('0x149'),{'hopper':_0x52355b[_0x2bcb48]});}})['catch'](function(){});};Dialer[_0x5318('0x18')][_0x5318('0xaf')]=function(_0x62e524){var _0x1bbd9d=this;return function(){_0x1bbd9d[_0x5318('0x158')](_0x62e524);};};Dialer[_0x5318('0x18')]['actionOriginate']=function(_0x601f08,_0xbe39a2){var _0x5c6065=this;var _0x395352=uuid['v4']();this['actions'][_0x395352]=new Action(_0x601f08,_0xbe39a2,_0x395352);return new Promise(function(_0x3a7c6d,_0x506f88){if(_[_0x5318('0x3c')](_0x601f08)&&typeof _0x601f08!==_0x5318('0x159')){return _0x506f88(msgResponse(_0x5318('0x15a'),_0x5318('0x92'),'voiceQueue\x20is\x20undefine'));}if(_['isUndefined'](_0xbe39a2['phone'])||_0xbe39a2['phone']===null){return _0x506f88(msgResponse(_0x5318('0x15a'),_0x5318('0x92'),_0x5318('0x15b')));}var _0x5e249c={'XMD-CALLERID':_0x5c6065[_0x5318('0x24')][_0x395352][_0x5318('0x15c')](),'XMD-AGI':_0x601f08['dialQueueProject']?util[_0x5318('0x42')](_0x5318('0x15d'),ipAgi,_0x601f08[_0x5318('0x133')]):'NONE','XMD-AGIAFTER':_0x601f08['dialQueueProject2']?util['format'](_0x5318('0x15d'),ipAgi,_0x601f08[_0x5318('0xc9')]):'NONE','XMD-QUEUE':utils['isOutboundQueue'](_0x601f08)?util['format']('\x22%s,%s%s,,,%s\x22',_0x601f08[_0x5318('0x43')],_0x601f08['dialQueueOptions']||'',_0x601f08['dialAgiAfterHangupAgent']?'c':'',_0x601f08[_0x5318('0x15e')]||0x3):_0x5318('0x15f'),'XMD-CONTACTID':_0xbe39a2[_0x5318('0xde')],'XMD-CDRTYPE':_0x5318('0x6'),'CALLERID(all)':_0x5c6065[_0x5318('0x24')][_0x395352]['getCaller'](),'XMD-AMD':_0x601f08[_0x5318('0x10e')]?_0x5318('0x13e'):_0x5318('0x15f'),'XMD-DESTINATION':'xcally-motion-dialer'};if(_0x601f08[_0x5318('0x10e')]){_0x5e249c[_0x5318('0x160')]=_0x601f08[_0x5318('0x161')]||0x9c4;_0x5e249c[_0x5318('0x162')]=_0x601f08[_0x5318('0x163')]||0x5dc;_0x5e249c[_0x5318('0x164')]=_0x601f08[_0x5318('0x165')]||0x320;_0x5e249c[_0x5318('0x166')]=_0x601f08[_0x5318('0x167')]||0x1388;_0x5e249c['XMD-AMDMINWORDLENGTH']=_0x601f08['dialAMDMinWordLength']||0x64;_0x5e249c[_0x5318('0x168')]=_0x601f08[_0x5318('0x169')]||0x32;_0x5e249c['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x601f08[_0x5318('0x16a')]||0x3;_0x5e249c[_0x5318('0x16b')]=_0x601f08['dialAMDSilenceThreshold']||0x100;_0x5e249c[_0x5318('0x16c')]=_0x601f08['dialAMDMaximumWordLength']||0x1388;}if(utils[_0x5318('0x16d')](_0x601f08)){_0x5e249c[_0x5318('0x16e')]=_0xbe39a2[_0x5318('0xeb')];}else{_0x5e249c['XMD-CAMPAIGNID']=_0xbe39a2[_0x5318('0xe0')];}var _0x162116=utils[_0x5318('0x16f')](_0xbe39a2[_0x5318('0x170')]);Object[_0x5318('0x141')](_0x5e249c,_0x162116);var _0x31778f=_0x5c6065[_0x5318('0x8a')](_0x601f08[_0x5318('0x8b')])?utils[_0x5318('0x171')](_0x601f08[_0x5318('0x8b')]['callerid'],_0x601f08['dialOriginateCallerIdName'],_0x601f08[_0x5318('0x172')]>0x0?utils[_0x5318('0x173')](_0x601f08[_0x5318('0x174')],_0x601f08[_0x5318('0x172')]):_0x601f08[_0x5318('0x174')]):utils['getCallerId'](_[_0x5318('0xfe')](_0x601f08['TrunkBackup'])?_0x601f08[_0x5318('0x8b')][_0x5318('0x175')]:_0x601f08[_0x5318('0x8c')][_0x5318('0x175')],_0x601f08[_0x5318('0x176')],_0x601f08[_0x5318('0x172')]>0x0?utils[_0x5318('0x173')](_0x601f08[_0x5318('0x174')],_0x601f08[_0x5318('0x172')]):_0x601f08['dialOriginateCallerIdNumber']);if(_0x31778f){_0x5e249c['XMD-ORIGINATECALLERIDNAME']=_0x5c6065[_0x5318('0x24')][_0x395352]['originatecalleridname']=utils[_0x5318('0x177')](_0x31778f);_0x5e249c[_0x5318('0x178')]=_0xbe39a2[_0x5318('0x179')];}_0x601f08[_0x5318('0x17a')]=_0x5e249c;return ami[_0x5318('0x9b')]({'actionid':_0x395352,'action':_0x5318('0x15a'),'channel':_0x5c6065['isTrunkReachable'](_0x601f08['Trunk'])?util[_0x5318('0x42')](_0x5318('0x17b'),_0x601f08[_0x5318('0x8b')][_0x5318('0x43')],isNotNull(_0x601f08[_0x5318('0x17c')])?_0x601f08[_0x5318('0x17c')][_0x5318('0x17d')]()||'':'',_0x601f08[_0x5318('0x17e')]>0x0?_0xbe39a2['phone'][_0x5318('0x17f')](_0x601f08['dialCutDigit']):_0xbe39a2[_0x5318('0x179')]):util[_0x5318('0x42')](_0x5318('0x17b'),_['isNil'](_0x601f08[_0x5318('0x8c')])?_0x601f08[_0x5318('0x8b')]['name']:_0x601f08[_0x5318('0x8c')][_0x5318('0x43')],isNotNull(_0x601f08[_0x5318('0x17c')])?_0x601f08[_0x5318('0x17c')][_0x5318('0x17d')]()||'':'',_0x601f08['dialCutDigit']>0x0?_0xbe39a2[_0x5318('0x179')]['substring'](_0x601f08['dialCutDigit']):_0xbe39a2[_0x5318('0x179')]),'callerid':_0x31778f,'Exten':'xcally-motion-dialer','Context':_0x5318('0x180'),'Priority':'1','variable':_0x5e249c,'timeout':(_0x601f08[_0x5318('0x181')]||0x1e)*0x3e8,'async':!![],'channelid':_0x395352})['then'](function(_0x1f4d35){return _0x3a7c6d(_0x1f4d35);})[_0x5318('0xa1')](function(_0x52c701){_0x601f08[_0x5318('0x182')]+=0x1;var _0x4ddd9c=new History(_0x5c6065[_0x5318('0x24')][_0x395352]);logger['error'](util['format'](_0x5318('0x183'),JSON[_0x5318('0x84')](_0x52c701)));_0x4ddd9c['state']=0xe;_0x4ddd9c[_0x5318('0x6d')]=_0x5318('0x184');_0x4ddd9c[_0x5318('0x6f')]=moment()[_0x5318('0x42')]('YYYY-MM-DD\x20HH:mm:ss');_0x4ddd9c[_0x5318('0x6e')]=_0x4ddd9c[_0x5318('0x6f')];hopperUtils['createHistory'](_0x4ddd9c)['catch'](loggerCatch(_0x5318('0x185')));_0x5c6065['moveContactManagedDialer'](_0x4ddd9c)[_0x5318('0xa1')](loggerCatch(_0x5318('0x185')))[_0x5318('0x1b')](function(){delete _0x5c6065['actions'][_0x395352];return _0x506f88(msgResponse('originate',_0x5318('0x83'),_0x5318('0x186')));});});});};Dialer['prototype']['checkRetriveMax']=function(_0x3d13ad,_0x28f587,_0x2f226e){var _0x4d4169=new History(_0x28f587);if(_0x4d4169[_0x5318('0x12a')]+_0x4d4169['countcongestionretry']+_0x4d4169[_0x5318('0x11f')]+_0x4d4169[_0x5318('0x120')]+_0x4d4169[_0x5318('0xd6')]+_0x4d4169['countabandonedretry']+_0x4d4169[_0x5318('0x11c')]+_0x4d4169[_0x5318('0x121')]>=_0x2f226e[_0x5318('0x12b')]-0x1){return!![];}switch(_0x3d13ad){case 0x3:if(_0x4d4169[_0x5318('0x11f')]>=_0x2f226e[_0x5318('0x187')]-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countnoanswerretry':_0x4d4169[_0x5318('0x11f')]+=0x1,'scheduledat':moment()[_0x5318('0xdd')](_0x2f226e[_0x5318('0x188')],_0x5318('0x126'))[_0x5318('0x42')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4d4169['ContactId'],'ListId':_0x4d4169['ListId'],'VoiceQueueId':_0x4d4169[_0x5318('0xeb')]||undefined,'CampaignId':_0x4d4169[_0x5318('0xe0')]||undefined})[_0x5318('0xa1')](loggerCatch('[rescheduleContact][NoAnswer]'));break;case 0x5:if(_0x4d4169[_0x5318('0x12a')]>=_0x2f226e[_0x5318('0x189')]-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countbusyretry':_0x4d4169[_0x5318('0x12a')]+=0x1,'scheduledat':moment()['add'](_0x2f226e['dialBusyRetryFrequency'],_0x5318('0x126'))[_0x5318('0x42')](_0x5318('0xcb')),'ContactId':_0x4d4169[_0x5318('0xde')],'ListId':_0x4d4169[_0x5318('0xdf')],'VoiceQueueId':_0x4d4169['VoiceQueueId']||undefined,'CampaignId':_0x4d4169[_0x5318('0xe0')]||undefined})[_0x5318('0xa1')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x4d4169[_0x5318('0x11e')]>=_0x2f226e[_0x5318('0x18a')]-0x1){return!![];}hopperUtils[_0x5318('0xea')]({'active':![],'countcongestionretry':_0x4d4169[_0x5318('0x11e')]+=0x1,'scheduledat':moment()[_0x5318('0xdd')](_0x2f226e['dialCongestionRetryFrequency'],_0x5318('0x126'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4d4169[_0x5318('0xde')],'ListId':_0x4d4169['ListId'],'VoiceQueueId':_0x4d4169[_0x5318('0xeb')]||undefined,'CampaignId':_0x4d4169[_0x5318('0xe0')]||undefined})[_0x5318('0xa1')](loggerCatch(_0x5318('0x18b')));break;case 0x0:if(_0x4d4169[_0x5318('0x120')]>=_0x2f226e[_0x5318('0x18c')]-0x1){return!![];}else{hopperUtils['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x4d4169[_0x5318('0x120')]+=0x1,'scheduledat':moment()[_0x5318('0xdd')](_0x2f226e[_0x5318('0x18d')],_0x5318('0x126'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4d4169[_0x5318('0xde')],'ListId':_0x4d4169[_0x5318('0xdf')],'VoiceQueueId':_0x4d4169['VoiceQueueId']||undefined,'CampaignId':_0x4d4169[_0x5318('0xe0')]||undefined})[_0x5318('0xa1')](loggerCatch('[rescheduleContact][NoSuchNumber]'));}break;case 0xa:if(_0x4d4169[_0x5318('0xd6')]>=_0x2f226e[_0x5318('0xdb')]-0x1){return!![];}hopperUtils[_0x5318('0xea')]({'active':![],'countdropretry':_0x4d4169[_0x5318('0xd6')]+=0x1,'scheduledat':moment()[_0x5318('0xdd')](_0x2f226e[_0x5318('0xd8')],_0x5318('0x126'))['format'](_0x5318('0xcb')),'ContactId':_0x4d4169[_0x5318('0xde')],'ListId':_0x4d4169[_0x5318('0xdf')],'VoiceQueueId':_0x4d4169[_0x5318('0xeb')]||undefined,'CampaignId':_0x4d4169['CampaignId']||undefined})[_0x5318('0xa1')](loggerCatch('[rescheduleContact][Drop]'));break;case 0xb:if(_0x4d4169['countabandonedretry']>=_0x2f226e[_0x5318('0xe9')]-0x1){return!![];}hopperUtils[_0x5318('0xea')]({'active':![],'countabandonedretry':_0x4d4169[_0x5318('0xe6')]+=0x1,'scheduledat':moment()['add'](_0x2f226e['dialAbandonedRetryFrequency'],_0x5318('0x126'))[_0x5318('0x42')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x4d4169[_0x5318('0xde')],'ListId':_0x4d4169[_0x5318('0xdf')],'VoiceQueueId':_0x4d4169['VoiceQueueId']||undefined,'CampaignId':_0x4d4169[_0x5318('0xe0')]||undefined})['catch'](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x4d4169[_0x5318('0x11c')]>=_0x2f226e[_0x5318('0x124')]-0x1){return!![];}hopperUtils[_0x5318('0xea')]({'active':![],'countmachineretry':_0x4d4169[_0x5318('0x11c')]+=0x1,'scheduledat':moment()['add'](_0x2f226e['dialMachineRetryFrequency'],'minutes')[_0x5318('0x42')](_0x5318('0xcb')),'ContactId':_0x4d4169[_0x5318('0xde')],'ListId':_0x4d4169[_0x5318('0xdf')],'VoiceQueueId':_0x4d4169[_0x5318('0xeb')]||undefined,'CampaignId':_0x4d4169[_0x5318('0xe0')]||undefined})[_0x5318('0xa1')](loggerCatch('[rescheduleContact][Machine]'));break;case 0x14:if(_0x4d4169[_0x5318('0x121')]>=_0x2f226e[_0x5318('0x18e')]-0x1){return!![];}hopperUtils['rescheduleContact']({'active':![],'countagentrejectretry':_0x4d4169[_0x5318('0x121')]+=0x1,'scheduledat':moment()[_0x5318('0xdd')](_0x2f226e[_0x5318('0x18f')],_0x5318('0x126'))[_0x5318('0x42')](_0x5318('0xcb')),'ContactId':_0x4d4169[_0x5318('0xde')],'ListId':_0x4d4169[_0x5318('0xdf')],'VoiceQueueId':_0x4d4169[_0x5318('0xeb')]||undefined,'CampaignId':_0x4d4169[_0x5318('0xe0')]||undefined})['catch'](loggerCatch('[rescheduleContact][AgentReject]'));break;default:return!![];}};Dialer['prototype'][_0x5318('0x109')]=function(_0x54e317,_0x14926f,_0x595c9c){var _0x364434=this;var _0x211462=new History(_0x54e317);var _0x4635aa=![];var _0x15c5a6;var _0x4b9701;return new Promise(function(_0x3454a5,_0x549ed6){if(_[_0x5318('0x3c')](_0x14926f)&&typeof _0x14926f!==_0x5318('0x159')){return _0x549ed6(msgResponse(_0x5318('0x190'),'Failure',_0x5318('0x191')));}if(_[_0x5318('0x3c')](_0x595c9c)&&typeof _0x595c9c!==_0x5318('0x159')){return _0x549ed6(msgResponse(_0x5318('0x190'),_0x5318('0x92'),_0x5318('0x192')));}hopperUtils['verifyAdditionalPhones'](_0x211462,_0x595c9c[_0x5318('0xc7')],_0x14926f)['then'](function(_0x89cf47){if(_0x89cf47[_0x5318('0xda')]==0x1)_0x4635aa=!![];switch(_0x595c9c[_0x5318('0xc7')]){case'0':_0x14926f['outboundNoSuchCallsDay']+=0x1;_0x211462[_0x5318('0x6c')]=0x0;_0x211462[_0x5318('0x6d')]=_0x5318('0x193');_0x211462[_0x5318('0x120')]+=0x1;_0x211462[_0x5318('0xd7')]+=0x1;ami[_0x5318('0x3d')](_0x5318('0x194'),ut[_0x5318('0x114')](_0x54e317,'nosuchnumber'));_0x15c5a6=_0x14926f[_0x5318('0x18d')];_0x4b9701=_0x14926f['callAdditionalPhoneAfterMin'];hopperUtils[_0x5318('0xcc')](_0x211462)['catch'](loggerCatch(_0x5318('0x11d')));if(_0x364434[_0x5318('0x195')](0x0,_0x54e317,_0x14926f)&&!_0x4635aa){if(_0x211462[_0x5318('0x120')]>=_0x14926f[_0x5318('0x18c')]){_0x364434['createStateFinal'](_0x211462,_0x3454a5,_0x549ed6,_0x5318('0x196'));}else{_0x364434['stateGlobal'](_0x211462,_0x3454a5,_0x549ed6,_0x5318('0x196'));}}break;case'3':_0x14926f[_0x5318('0x197')]+=0x1;_0x211462[_0x5318('0x6c')]=0x3;_0x211462[_0x5318('0x6d')]='NoAnswer';_0x211462[_0x5318('0x11f')]+=0x1;_0x211462[_0x5318('0xd7')]+=0x1;var _0x54abdb=ut[_0x5318('0x198')](_0x54e317,_0x14926f);ami[_0x5318('0x3d')]('custom:agentnoanswer',_0x54abdb);_0x15c5a6=_0x14926f[_0x5318('0x188')];_0x4b9701=_0x14926f['callAdditionalPhoneAfterMin'];hopperUtils[_0x5318('0xcc')](_0x211462)[_0x5318('0xa1')](loggerCatch(_0x5318('0x199')));if(_0x364434[_0x5318('0x195')](0x3,_0x54e317,_0x14926f)&&!_0x4635aa){if(_0x211462['countnoanswerretry']>=_0x14926f[_0x5318('0x187')]){_0x364434[_0x5318('0x125')](_0x211462,_0x3454a5,_0x549ed6,_0x5318('0x19a'));}else{_0x364434[_0x5318('0x122')](_0x211462,_0x3454a5,_0x549ed6,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x14926f['outboundBusyCallsDay']+=0x1;_0x211462[_0x5318('0x6c')]=0x5;_0x211462[_0x5318('0x6d')]=_0x5318('0x19b');_0x211462[_0x5318('0x12a')]+=0x1;_0x211462[_0x5318('0xd7')]+=0x1;ami[_0x5318('0x3d')](_0x5318('0x19c'),ut[_0x5318('0x114')](_0x54e317,_0x5318('0x19d')));_0x15c5a6=_0x14926f[_0x5318('0x19e')];_0x4b9701=_0x14926f[_0x5318('0x19f')];hopperUtils[_0x5318('0xcc')](_0x211462)[_0x5318('0xa1')](loggerCatch(_0x5318('0x1a0')));if(_0x364434[_0x5318('0x195')](0x5,_0x54e317,_0x14926f)&&!_0x4635aa){if(_0x211462[_0x5318('0x12a')]>=_0x14926f[_0x5318('0x189')]){_0x364434[_0x5318('0x125')](_0x211462,_0x3454a5,_0x549ed6,_0x5318('0x1a1'));}else{_0x364434[_0x5318('0x122')](_0x211462,_0x3454a5,_0x549ed6,_0x5318('0x1a1'));}}break;case'8':_0x14926f[_0x5318('0x1a2')]+=0x1;_0x211462['state']=0x8;_0x211462[_0x5318('0x6d')]='Congestion';_0x211462[_0x5318('0x11e')]+=0x1;_0x211462['countglobal']+=0x1;_0x15c5a6=_0x14926f[_0x5318('0x1a3')];_0x4b9701=_0x14926f[_0x5318('0x19f')];ami[_0x5318('0x3d')](_0x5318('0x1a4'),ut[_0x5318('0x114')](_0x54e317,'congestion'));hopperUtils[_0x5318('0xcc')](_0x211462)[_0x5318('0xa1')](loggerCatch(_0x5318('0x1a5')));if(_0x364434[_0x5318('0x195')](0x8,_0x54e317,_0x14926f)&&!_0x4635aa){if(_0x211462[_0x5318('0x11e')]>=_0x14926f[_0x5318('0x18a')]){_0x364434['createStateFinal'](_0x211462,_0x3454a5,_0x549ed6,'reason\x208\x20congestion');}else{_0x364434[_0x5318('0x122')](_0x211462,_0x3454a5,_0x549ed6,_0x5318('0x1a6'));}}break;case'11':_0x14926f[_0x5318('0x1a7')]+=0x1;_0x211462[_0x5318('0x6c')]=0xb;_0x211462[_0x5318('0x6d')]=_0x5318('0xed');_0x211462[_0x5318('0xe6')]+=0x1;_0x211462[_0x5318('0xd7')]+=0x1;_0x15c5a6=_0x14926f[_0x5318('0xe7')];_0x4b9701=_0x14926f[_0x5318('0x19f')];hopperUtils['createHistory'](_0x211462)[_0x5318('0xa1')](loggerCatch('[syncAgentComplete][createHistory][11]'));if(_0x364434['checkRetriveMax'](0xb,_0x54e317,_0x14926f)&&!_0x4635aa){if(_0x211462['countabandonedretry']>=_0x14926f['dialAbandonedMaxRetry']){_0x364434['createStateFinal'](_0x211462,_0x3454a5,_0x549ed6,_0x5318('0x1a8'));}else{_0x364434[_0x5318('0x122')](_0x211462,_0x3454a5,_0x549ed6,_0x5318('0x1a8'));}}break;case'20':_0x14926f[_0x5318('0x1a9')]+=0x1;_0x211462[_0x5318('0x6c')]=0x14;_0x211462['statedesc']=_0x5318('0x1aa');_0x211462['countagentrejectretry']+=0x1;_0x211462['countglobal']+=0x1;_0x15c5a6=_0x14926f[_0x5318('0x18f')];_0x4b9701=_0x14926f[_0x5318('0x19f')];ami[_0x5318('0x3d')](_0x5318('0x1ab'),ut['buildObj'](_0x54e317,_0x5318('0x1ac')));hopperUtils[_0x5318('0xcc')](_0x211462)[_0x5318('0xa1')](loggerCatch(_0x5318('0x1ad')));if(_0x364434[_0x5318('0x195')](0x14,_0x54e317,_0x14926f)&&!_0x4635aa){if(_0x211462[_0x5318('0x121')]>=_0x14926f[_0x5318('0x18e')]){_0x364434[_0x5318('0x125')](_0x211462,_0x3454a5,_0x549ed6,_0x5318('0x1ae'));}else{_0x364434[_0x5318('0x122')](_0x211462,_0x3454a5,_0x549ed6,_0x5318('0x1ae'));}}break;default:_0x14926f['outboundUnknownCallsDay']+=0x1;_0x211462[_0x5318('0x6c')]=0xc;_0x211462['statedesc']=_0x595c9c['reason'];_0x15c5a6=_0x14926f[_0x5318('0x18f')];_0x4b9701=_0x14926f[_0x5318('0x19f')];hopperUtils['createHistory'](_0x211462)['catch'](loggerCatch(_0x5318('0x1af')));if(_0x364434[_0x5318('0x195')](_0x595c9c[_0x5318('0xc7')],_0x54e317,_0x14926f)&&!_0x4635aa){if(_0x211462[_0x5318('0x12a')]+_0x211462[_0x5318('0x11e')]+_0x211462[_0x5318('0x11f')]+_0x211462[_0x5318('0x120')]+_0x211462[_0x5318('0xd6')]+_0x211462[_0x5318('0xe6')]+_0x211462['countmachineretry']+_0x211462[_0x5318('0x121')]>=_0x14926f[_0x5318('0x12b')]){_0x364434[_0x5318('0x122')](_0x211462,_0x3454a5,_0x549ed6,_0x595c9c[_0x5318('0xc7')]);}else{_0x364434[_0x5318('0x125')](_0x211462,_0x3454a5,_0x549ed6,_0x595c9c[_0x5318('0xc7')]);}}}})['then'](function(){if(_0x4635aa){hopperUtils[_0x5318('0xe4')](_0x211462,_0x15c5a6,_0x4b9701)[_0x5318('0x3b')](function(){return _0x3454a5(0x1);});}});});};Dialer[_0x5318('0x18')][_0x5318('0x122')]=function(_0x2c494a,_0x49355e,_0x3fc487,_0x5aa29b){var _0x2a3144=new Final(_0x2c494a);_0x2a3144[_0x5318('0x6c')]=0xf;_0x2a3144[_0x5318('0x6d')]=_0x5318('0x1b0');this['createStateFinal'](_0x2a3144,_0x49355e,_0x3fc487,_0x5aa29b);};Dialer['prototype']['createStateFinal']=function(_0x27fae5,_0x7228ca,_0x545b7c,_0xe3fd3a){hopperUtils['moveContactManagedDialer'](_0x27fae5)['then'](function(){return _0x7228ca(msgResponse(_0x5318('0x190'),'Success',_0xe3fd3a));})['catch'](function(){return _0x545b7c(msgResponse(_0x5318('0x1b1'),'Failure',_0x5318('0x1b2')));});};Dialer[_0x5318('0x18')][_0x5318('0x9')]=function(_0x3483a3){var _0x54f7e9=_0x3483a3[_0x5318('0x1b3')]/0x64;var _0x576b33=_0x3483a3[_0x5318('0xd2')]/(_0x3483a3[_0x5318('0xd2')]+_0x3483a3['outboundAnswerCallsDay']);var _0x2352a7=Math[_0x5318('0x1b4')](_0x3483a3['predictiveIntervalAvailable']*(_0x3483a3[_0x5318('0x1b5')]/0x64));var _0xbdb911=Math[_0x5318('0x1b4')](_0x3483a3['predictiveIntervalAvailable']*(_0x3483a3[_0x5318('0x1b6')]/0x64));var _0x11ab59=_0x3483a3[_0x5318('0x13b')]+_0x3483a3[_0x5318('0x13c')];var _0x148357=Math[_0x5318('0x1b7')](_0x3483a3[_0x5318('0x57')]*_0x3483a3['erlangAbandonmentRate']*_0x3483a3['predictiveIntervalHitRate']*_0x3483a3[_0x5318('0x1b8')]);if(_[_0x5318('0x3c')](_0x3483a3[_0x5318('0x26')])){if(!_[_0x5318('0x3c')](_0x3483a3[_0x5318('0x60')])){_0x3483a3['startPredictive']=undefined;loggerPredictive[_0x5318('0x62')](_0x5318('0x1b9'),_0x5318('0x1ba'));}if(!_[_0x5318('0x3c')](_0x3483a3['handlePredictive'])){loggerPredictive[_0x5318('0x62')](_0x5318('0x1b9'),_0x5318('0x1bb'));clearInterval(_0x3483a3[_0x5318('0x61')]);_0x3483a3['handlePredictive']=undefined;}_0x3483a3['startProgressive']=moment()[_0x5318('0x42')](_0x5318('0xcb'));loggerPredictive[_0x5318('0x46')](_0x3483a3[_0x5318('0x43')],'collection\x20data\x20in\x20progressive\x20at',_0x3483a3[_0x5318('0x26')]);this['handlePower'](_0x3483a3,0x1);}else if(ifInterval(_0x3483a3[_0x5318('0x1bc')],_0x3483a3[_0x5318('0x26')])){this[_0x5318('0xb5')](_0x3483a3,0x1);loggerPredictiveCalls[_0x5318('0x46')](_0x5318('0x1bd'),_0x3483a3[_0x5318('0x26')],_0x3483a3[_0x5318('0x43')]);_0x3483a3[_0x5318('0x57')]=0x0;_0x3483a3['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x54f7e9<_0x576b33&&_0x3483a3[_0x5318('0x1be')]===_0x5318('0x1bf')){clearPredictiveAttributes(_0x3483a3);loggerPredictive[_0x5318('0x46')]('[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day',_0x576b33,'startProgressive',_0x3483a3[_0x5318('0x43')]);}else if(_0x148357<_0x3483a3[_0x5318('0x1c0')]&&_0x3483a3[_0x5318('0x1be')]===_0x5318('0x1bf')){clearPredictiveAttributes(_0x3483a3);loggerPredictive[_0x5318('0x46')](_0x5318('0x1c1'),'Max\x20Drop\x20',_0x148357,_0x5318('0x1c2'),_0x3483a3[_0x5318('0x1c0')],_0x5318('0x26'),_0x3483a3[_0x5318('0x43')]);}else if(!ifInterval(_0x3483a3['dialPredictiveInterval'],_0x3483a3[_0x5318('0x26')])&&_[_0x5318('0x3c')](_0x3483a3[_0x5318('0x60')])&&!_[_0x5318('0x3c')](_0x3483a3['startProgressive'])){_0x3483a3[_0x5318('0x60')]=moment()[_0x5318('0x42')](_0x5318('0xcb'));loggerPredictive['info'](_0x3483a3[_0x5318('0x43')],_0x5318('0x1c3'),_0x3483a3[_0x5318('0x60')]);hopperUtils[_0x5318('0x1c4')](_0x3483a3[_0x5318('0x1bc')])['then'](this['getDataPredictive'](_0x3483a3))[_0x5318('0x3b')](mergeDataErlangB(_0x3483a3))[_0x5318('0x3b')](this[_0x5318('0x1c5')](_0x3483a3))[_0x5318('0xa1')](loggerCatchPredictive('Predictive\x20after\x20first\x20interval',_0x3483a3));}else if(!ifInterval(_0x3483a3[_0x5318('0x1bc')],_0x3483a3['startPredictive'])){_0x3483a3['predictiveIntervalErlangCallsDroppedCalls']=0x0;_0x3483a3[_0x5318('0x60')]=moment()[_0x5318('0x42')](_0x5318('0xcb'));loggerPredictive[_0x5318('0x46')](_0x3483a3[_0x5318('0x43')],_0x5318('0x1c6'),_0x3483a3[_0x5318('0x60')]);clearInterval(_0x3483a3[_0x5318('0x61')]);_0x3483a3[_0x5318('0x61')]=undefined;hopperUtils['avgHandleTime'](_0x3483a3['dialPredictiveInterval'])[_0x5318('0x3b')](this[_0x5318('0x1c7')](_0x3483a3))[_0x5318('0x3b')](mergeDataErlangB(_0x3483a3))[_0x5318('0x3b')](this['startMethodPredictive'](_0x3483a3))[_0x5318('0xa1')](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0x3483a3));}else if(_0x3483a3['predictiveIntervalAvailable']&&_0x11ab59<_0x3483a3[_0x5318('0x1c8')]-_0xbdb911){clearPredictiveAttributes(_0x3483a3);loggerPredictive[_0x5318('0x46')](_0x3483a3[_0x5318('0x43')],_0x5318('0x1c9'),_0x11ab59,_0x5318('0x1ca'),_0x3483a3[_0x5318('0x1c8')],'-',_0xbdb911,'=',_0x3483a3[_0x5318('0x1c8')]-_0xbdb911,')');}else if(_0x3483a3['predictiveIntervalAvailable']&&_0x11ab59>_0x3483a3[_0x5318('0x1c8')]+_0x2352a7){clearPredictiveAttributes(_0x3483a3);loggerPredictive[_0x5318('0x46')](_0x3483a3[_0x5318('0x43')],_0x5318('0x1c9'),_0x11ab59,_0x5318('0x1cb'),_0x3483a3['predictiveIntervalAvailable'],'+',_0x2352a7,'=',_0x3483a3[_0x5318('0x1c8')]+_0x2352a7,')');}};Dialer[_0x5318('0x18')][_0x5318('0x1c7')]=function(_0x2148ac){var _0x5619f3=this;return function(_0x451ee6){return new Promise(function(_0x618ad3,_0x364458){_[_0x5318('0x5e')](_0x2148ac,_0x451ee6[0x0]);if(checkGetDataPredictive(_0x451ee6[0x0])){var _0x1522f9=_0x2148ac[_0x5318('0x1c8')]=_0x2148ac[_0x5318('0x13c')]+_0x2148ac[_0x5318('0x13b')];var _0xdb15bf=_0x2148ac[_0x5318('0x1bc')]*0x3c;var _0x26b08e=_0x451ee6[0x0]['predictiveIntervalAvgTalktime']+_0x451ee6[0x0][_0x5318('0x4f')];var _0xde2b03=(_0x451ee6[0x0][_0x5318('0x4a')]+_0x451ee6[0x0][_0x5318('0x4c')]+_0x451ee6[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x451ee6[0x0][_0x5318('0x48')];_0x2148ac[_0x5318('0x1cc')]=_0xde2b03>0x0?_0xde2b03:0x1;switch(_0x2148ac[_0x5318('0x1be')]){case _0x5318('0x1bf'):var _0x1bf4e1=_0x2148ac[_0x5318('0x1b3')]/0x64;return _0x5619f3[_0x5318('0x1cd')](_0x1522f9,_0xdb15bf,_0x26b08e,_0xde2b03,_0x1bf4e1)[_0x5318('0x3b')](function(_0x357f94){return _0x618ad3(_0x357f94);});case _0x5318('0x1ce'):var _0x50ed31=_0x2148ac['dialPredictiveOptimizationPercentage']/0x64;return _0x5619f3[_0x5318('0x1cf')](_0x1522f9,_0xdb15bf,_0x26b08e,_0xde2b03,_0x50ed31)[_0x5318('0x3b')](function(_0x3140ac){return _0x618ad3(_0x3140ac);});default:return _0x364458(msgResponse('[getDataPredictive]','Failure',_0x5318('0x1d0')));}}else{return _0x364458(msgResponse(_0x5318('0x1d1'),_0x5318('0x92'),'check\x20failure'));}});};};Dialer[_0x5318('0x18')][_0x5318('0x1d2')]=function(_0x7aacdd){var _0x5dc836=this;return function(_0x5c4282){return new Promise(function(_0x4e56b7,_0xd70c68){_[_0x5318('0x5e')](_0x7aacdd,_0x5c4282[0x0]);if(checkGetDataPredictive(_0x5c4282[0x0])){loggerPredictive[_0x5318('0x46')](JSON[_0x5318('0x84')](_0x5c4282[0x0]));if(_0x7aacdd[_0x5318('0x1be')]===_0x5318('0x1bf')){return _0x5dc836[_0x5318('0x14d')](_0x7aacdd['id'])[_0x5318('0x3b')](function(_0xeb9975){var _0xdda717=_0x7aacdd[_0x5318('0x1d3')]-_0xeb9975[0x0][_0x5318('0x1d4')];var _0x82fe70=_0x7aacdd[_0x5318('0x1bc')]*0x3c;var _0x340ef2=_0x5c4282[0x0][_0x5318('0x51')]+_0x5c4282[0x0][_0x5318('0x4f')];var _0x3d5f3a=(_0x5c4282[0x0][_0x5318('0x4a')]+_0x5c4282[0x0]['predictiveIntervalDroppedCallsTimeout']+_0x5c4282[0x0][_0x5318('0x4e')])/_0x5c4282[0x0]['predictiveIntervalTotalCalls'];var _0x504f53=_0x7aacdd[_0x5318('0x1b3')]/0x64;_0x7aacdd[_0x5318('0x1d5')]=_0xeb9975[0x0][_0x5318('0x1d4')]||0x0;_0x7aacdd[_0x5318('0x1cc')]=_0x3d5f3a>0x0?_0x3d5f3a:0x1;return _0x5dc836[_0x5318('0x1cd')](_0xdda717,_0x82fe70,_0x340ef2,_0x3d5f3a,_0x504f53);})[_0x5318('0x3b')](function(_0x35af57){return _0x4e56b7(_0x35af57);})['catch'](function(_0x1bf83f){return _0xd70c68(msgResponse(_0x5318('0x1d6'),_0x5318('0x92'),JSON['stringify'](_0x1bf83f)));});}if(_0x7aacdd[_0x5318('0x1be')]==='agentBusyFactor'){return _0x5dc836[_0x5318('0x14d')](_0x7aacdd['id'])['then'](function(_0xd3bb71){var _0x3f2476=_0x7aacdd['loggedIn']-_0xd3bb71[0x0]['outboundQueuePauses'];var _0x33b4cb=_0x7aacdd[_0x5318('0x1bc')]*0x3c;var _0x178829=_0x5c4282[0x0][_0x5318('0x51')]+_0x5c4282[0x0][_0x5318('0x4f')];var _0x59b738=(_0x5c4282[0x0][_0x5318('0x4a')]+_0x5c4282[0x0][_0x5318('0x4c')]+_0x5c4282[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x5c4282[0x0][_0x5318('0x48')];var _0x14a38a=_0x7aacdd[_0x5318('0x1b3')]/0x64;_0x7aacdd[_0x5318('0x1d5')]=_0xd3bb71[0x0]['outboundQueuePauses']||0x0;_0x7aacdd[_0x5318('0x1cc')]=_0x59b738>0x0?_0x59b738:0x1;return _0x5dc836[_0x5318('0x1cf')](_0x3f2476,_0x33b4cb,_0x178829,_0x59b738,_0x14a38a);})[_0x5318('0x3b')](function(_0x55c22c){return _0x4e56b7(_0x55c22c);})[_0x5318('0xa1')](function(_0x3f9fe7){return _0xd70c68(msgResponse(_0x5318('0x1d6'),'Failure',JSON[_0x5318('0x84')](_0x3f9fe7)));});}}else{return _0xd70c68(msgResponse(_0x5318('0x1d1'),_0x5318('0x92'),_0x5318('0x1d7')));}});};};Dialer['prototype'][_0x5318('0x1c5')]=function(_0x595ac4){var _0xd17b6f=this;return function(){var _0x3dc565=0x0;var _0x37f838=Math[_0x5318('0x1b7')](_0x595ac4[_0x5318('0x58')]*0x3e8);if(_0x37f838>0x0){_0x37f838=_0x37f838<0x64?0x64:_0x37f838;loggerPredictive[_0x5318('0x46')](_0x595ac4['name'],'one\x20call\x20every:',_0x37f838,'milliseconds');_0x595ac4[_0x5318('0x61')]=setInterval(function(){_0xd17b6f['handlePredictive'](_0x595ac4);loggerPredictiveCalls[_0x5318('0x46')](_0x5318('0x1d8'),_0x3dc565+=0x1);},_0x37f838);}else{loggerPredictive[_0x5318('0x46')](_0x595ac4[_0x5318('0x43')],'fail\x20to\x20scheduled\x20calls');}};};Dialer[_0x5318('0x18')]['checkContactBlack']=function(_0x453ef7,_0x1f5ce5){var _0x27a96d=this;return function(_0x15f5dc){if(_[_0x5318('0x45')](_0x15f5dc)){if(_[_0x5318('0xfe')](_0x1f5ce5[_0x5318('0x152')])||!_0x1f5ce5['recallme']){if(_0x453ef7[_0x5318('0xb2')]===_0x5318('0x7')){_0x453ef7[_0x5318('0x70')]=_['isUndefined'](_0x453ef7[_0x5318('0x70')])?!![]:_0x453ef7['queueStatusComplete'];var _0x25a942=uuid['v4']();_0x27a96d[_0x5318('0x24')][_0x25a942]=new Action(_0x453ef7,_0x1f5ce5,_0x25a942);loggerBooked[_0x5318('0x46')](_0x5318('0x1d9'),_0x25a942,_0x5318('0x1da'),JSON[_0x5318('0x84')](_0x453ef7[_0x5318('0x70')]),'Queue:\x20',_0x453ef7[_0x5318('0x43')]);if(_0x453ef7['queueStatusComplete']){_0x453ef7[_0x5318('0x70')]=![];_0x27a96d['queueBooked'][_0x27a96d[_0x5318('0x24')][_0x25a942][_0x5318('0xbf')]]=[];ami[_0x5318('0x9b')]({'actionid':_0x25a942,'action':_0x5318('0x1db'),'queue':_0x453ef7[_0x5318('0x43')]})[_0x5318('0xa1')](function(){_0x27a96d['updateOriginated'](_0x453ef7);hopperUtils['rescheduleContact']({'active':![],'ContactId':_0x27a96d[_0x5318('0x24')][_0x25a942][_0x5318('0xde')],'ListId':_0x27a96d[_0x5318('0x24')][_0x25a942][_0x5318('0xdf')],'VoiceQueueId':_0x27a96d[_0x5318('0x24')][_0x25a942][_0x5318('0xeb')]||undefined,'CampaignId':_0x27a96d[_0x5318('0x24')][_0x25a942]['CampaignId']||undefined})[_0x5318('0xa1')](loggerCatch(_0x5318('0x1dc')));delete _0x27a96d[_0x5318('0x24')][_0x25a942];});}else{loggerBooked[_0x5318('0x46')](_0x5318('0x1dd'),JSON[_0x5318('0x84')](_0x453ef7[_0x5318('0x70')]),_0x5318('0x1de'),_0x453ef7[_0x5318('0x43')]);_0x27a96d[_0x5318('0xc2')](_0x453ef7);hopperUtils[_0x5318('0xea')]({'active':![],'ContactId':_0x27a96d['actions'][_0x25a942][_0x5318('0xde')],'ListId':_0x27a96d['actions'][_0x25a942][_0x5318('0xdf')],'VoiceQueueId':_0x27a96d['actions'][_0x25a942]['VoiceQueueId']||undefined,'CampaignId':_0x27a96d['actions'][_0x25a942]['CampaignId']||undefined})[_0x5318('0xa1')](loggerCatch(_0x5318('0x1dc')));delete _0x27a96d[_0x5318('0x24')][_0x25a942];}}else{return _0x27a96d['actionOriginate'](_0x453ef7,_0x1f5ce5);}}else{if(utils[_0x5318('0x1df')](undefined,_0x1f5ce5[_0x5318('0x1e0')])<_0x453ef7[_0x5318('0x1e1')]*0x3c){if(_0x1f5ce5[_0x5318('0x157')]&&!_0x1f5ce5[_0x5318('0x157')][_0x5318('0x1e2')]){_0x27a96d[_0x5318('0x1d')][_0x5318('0xf8')](_0x1f5ce5['id'])['finally'](function(){_0x27a96d[_0x5318('0xc2')](_0x453ef7);});}else{hopperUtils['unlockContact']({'active':![]},_0x1f5ce5['id'],0x1)[_0x5318('0x1b')](function(){_0x27a96d['updateOriginated'](_0x453ef7);});}}else{_0x453ef7[_0x5318('0x1e3')]+=0x1;_0x27a96d[_0x5318('0xc2')](_0x453ef7);if(_0x453ef7[_0x5318('0x1e4')]){hopperUtils[_0x5318('0xea')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x1f5ce5[_0x5318('0xde')],'ListId':_0x1f5ce5[_0x5318('0xdf')],'VoiceQueueId':_0x1f5ce5[_0x5318('0xeb')]||undefined,'CampaignId':_0x1f5ce5[_0x5318('0xe0')]||undefined})[_0x5318('0xa1')](loggerCatch('[rescheduleContact][dialRecallInQueue]'));hopperUtils[_0x5318('0xcc')](createObjHistory(_0x453ef7,_0x1f5ce5,utils['CAMPAIGN_STATUS'][_0x5318('0x1e5')],0x17,_0x5318('0x1e6')))[_0x5318('0xa1')](loggerCatch(_0x5318('0x1e7')));}else{_0x27a96d[_0x5318('0x127')](createObjHistory(_0x453ef7,_0x1f5ce5,utils['CAMPAIGN_STATUS'][_0x5318('0x1e8')],0x16,_0x5318('0x1e9')),_0x5318('0x1ea'),_0x5318('0x1eb'));}}}}else{_0x453ef7[_0x5318('0x1ec')]+=0x1;_0x27a96d[_0x5318('0x127')](createObjHistory(_0x453ef7,_0x1f5ce5,utils[_0x5318('0x6a')][_0x5318('0x1ed')],0xd,'Blacklist'),_0x5318('0x1ee'),_0x5318('0x1ef'));throw'inBlackList';}};};Dialer[_0x5318('0x18')][_0x5318('0x158')]=function(_0x5279fa){var _0x136422=this;var _0x5132b3=_0x5279fa[_0x5318('0x1f0')]-_0x5279fa['originated'];emitCampaignSummary(_0x5279fa);if(_0x5132b3>0x0&&_0x5279fa['temp']==0x0){if(_0x5132b3>this[_0x5318('0x22')]){_0x5132b3=this[_0x5318('0x22')];}_0x5279fa[_0x5318('0x64')]=0x1;hopperUtils[_0x5318('0x1f1')](_0x5279fa,_0x5132b3)[_0x5318('0x3b')](function(_0x4cbcf5){_0x5279fa[_0x5318('0x64')]=0x0;if(_0x4cbcf5){if(!utils['checkContactEmpty'](_0x4cbcf5)){_0x5279fa[_0x5318('0x65')]=utils[_0x5318('0x6a')][_0x5318('0x6b')];logger[_0x5318('0x46')](_0x5318('0x1f2')+_0x5279fa[_0x5318('0x43')]);}else{_0x5279fa[_0x5318('0x7f')]+=_0x4cbcf5[_0x5318('0x99')];_0x5279fa['message']=utils[_0x5318('0x6a')][_0x5318('0x1f3')];for(var _0x3e6223=0x0;_0x3e6223<_0x4cbcf5['length'];_0x3e6223+=0x1){_0x5279fa[_0x5318('0x1f4')]+=0x1;if(_[_0x5318('0xfe')](_0x4cbcf5[_0x3e6223])||_[_0x5318('0xfe')](_0x4cbcf5[_0x3e6223][_0x5318('0x170')])||_[_0x5318('0xfe')](_0x4cbcf5[_0x3e6223][_0x5318('0x179')])){_0x136422['emptyContact'](_0x5318('0x1f5'),_0x5279fa,_0x4cbcf5[_0x3e6223]);}else{hopperUtils[_0x5318('0x1f6')](_[_0x5318('0x73')](_0x4cbcf5[_0x3e6223],[_0x5318('0xe0'),_0x5318('0x179')]))['then'](_0x136422[_0x5318('0x1f7')](_0x5279fa,_0x4cbcf5[_0x3e6223]))[_0x5318('0xa1')](_0x136422[_0x5318('0x1f8')](_0x5318('0x1f9'),_0x5279fa));}}}}})[_0x5318('0xa1')](loggerGetContactDialer('[getContactCampaign2]',_0x5279fa,_0x5132b3));}};Dialer['prototype'][_0x5318('0xb5')]=function(_0x556158,_0x48c638){var _0x2a7d80=this;var _0xb1c862=[];if(_0x48c638<0x1||_0x556158['dialMethod']==='booked'){_0x48c638=0x1;}var _0x918a6c=Math[_0x5318('0x1b7')](_0x556158[_0x5318('0x13b')]*_0x48c638)-_0x556158['originated'];if(_0x556158[_0x5318('0x1fa')]>0x0){var _0x363678=_0x556158[_0x5318('0x1fa')]-_0x556158[_0x5318('0x7f')]-_0x556158['talking']-_0x556158[_0x5318('0x13d')];if(_0x918a6c>_0x363678){_0x918a6c=_0x363678;}}if(_0x918a6c>0x0&&_0x556158[_0x5318('0x64')]==0x0){if(_0x556158['dialMethod']==='booked'){_0x918a6c=0x1;}if(_0x918a6c>this['maxNumberOriginate']){_0x918a6c=this[_0x5318('0x22')];}for(var _0x12485f in this[_0x5318('0x20')]){if(typeof this[_0x5318('0x20')][_0x12485f]!==_0x5318('0xac')){if(this[_0x5318('0x20')][_0x12485f][_0x5318('0x6c')]===_0x5318('0x1fb')&&this[_0x5318('0x20')][_0x12485f][_0x5318('0x86')]===_0x5318('0x87')){_0xb1c862['push'](this['agents'][_0x12485f]['id']);}}}_0x556158['temp']=0x1;hopperUtils[_0x5318('0x1fc')](_0x556158,_0xb1c862,_0x918a6c)[_0x5318('0x3b')](function(_0x406f8e){_0x556158['temp']=0x0;if(_0x406f8e){if(!utils[_0x5318('0x1fd')](_0x406f8e)){hopperUtils['countReScheduled'](_0x556158)[_0x5318('0x3b')](sendMessageReschedule(_0x556158))[_0x5318('0xa1')](loggerCatch(_0x5318('0x1fe')));}else{_0x556158[_0x5318('0x7f')]+=_0x406f8e[_0x5318('0x99')];_0x556158[_0x5318('0x65')]=_0x556158[_0x5318('0xb2')]===_0x5318('0x7')?utils['CAMPAIGN_STATUS'][_0x5318('0x13e')]:utils['CAMPAIGN_STATUS']['RUNNING'];for(var _0x545f20=0x0;_0x545f20<_0x406f8e[_0x5318('0x99')];_0x545f20+=0x1){if(_['isNil'](_0x406f8e[_0x545f20])||_[_0x5318('0xfe')](_0x406f8e[_0x545f20][_0x5318('0x170')])||_[_0x5318('0xfe')](_0x406f8e[_0x545f20][_0x5318('0x179')])){_0x2a7d80[_0x5318('0x150')](_0x5318('0x1f5'),_0x556158,_0x406f8e[_0x545f20]);}else{hopperUtils[_0x5318('0x1ff')](_[_0x5318('0x73')](_0x406f8e[_0x545f20],['VoiceQueueId',_0x5318('0x179')]))[_0x5318('0x3b')](_0x2a7d80['checkContactBlack'](_0x556158,_0x406f8e[_0x545f20]))[_0x5318('0xa1')](_0x2a7d80[_0x5318('0x1f8')](_0x5318('0x1f5'),_0x556158));}}}}})[_0x5318('0xa1')](loggerGetContactDialer(_0x5318('0x200'),_0x556158,_0x918a6c));}};Dialer[_0x5318('0x18')][_0x5318('0x61')]=function(_0x5691bf){if(_0x5691bf['dialLimitQueue']>0x0){var _0xadabeb=_0x5691bf[_0x5318('0x1fa')]-_0x5691bf[_0x5318('0x7f')]-_0x5691bf[_0x5318('0x13c')];if(_0xadabeb>0x0&&_0x5691bf[_0x5318('0x64')]==0x0){this[_0x5318('0x201')](_0x5691bf);}else{loggerPredictiveCalls[_0x5318('0x46')](_0x5318('0x202'));}}else{this[_0x5318('0x201')](_0x5691bf);}};Dialer[_0x5318('0x18')][_0x5318('0x201')]=function(_0x2fac9f){var _0xdb744d=this;var _0x59b97b=[];_0x2fac9f[_0x5318('0x7f')]+=0x1;for(var _0x2ba6b5 in this[_0x5318('0x20')]){if(typeof this['agents'][_0x2ba6b5]!=='undefined'){if(this[_0x5318('0x20')][_0x2ba6b5]['state']==='not_inuse'&&this['agents'][_0x2ba6b5][_0x5318('0x86')]===_0x5318('0x87')){_0x59b97b[_0x5318('0x9a')](this[_0x5318('0x20')][_0x2ba6b5]['id']);}}}_0x2fac9f[_0x5318('0x64')]=0x1;return this['getContactDialer'](_0x2fac9f['id'],_0x59b97b,0x1,_0x2fac9f[_0x5318('0x203')],_0x2fac9f)[_0x5318('0x3b')](function(_0x1d3ae4){_0x2fac9f[_0x5318('0x64')]=0x1;if(_0x1d3ae4){if(!utils[_0x5318('0x1fd')](_0x1d3ae4)){utils[_0x5318('0x204')](_0x2fac9f,0x1,0x0);return hopperUtils['countReScheduled'](_0x2fac9f)[_0x5318('0x3b')](sendMessageReschedule(_0x2fac9f))[_0x5318('0xa1')](loggerCatch(_0x5318('0x1fe')));}else{_0x2fac9f[_0x5318('0x65')]=utils['CAMPAIGN_STATUS']['RUNNING'];if(_[_0x5318('0xfe')](_0x1d3ae4[0x0])||_[_0x5318('0xfe')](_0x1d3ae4[0x0][_0x5318('0x170')])||_['isNil'](_0x1d3ae4[0x0][_0x5318('0x179')])){_0xdb744d[_0x5318('0x150')](_0x5318('0x1f5'),_0x2fac9f,_0x1d3ae4[0x0]);}else{return hopperUtils[_0x5318('0x1ff')](_[_0x5318('0x73')](_0x1d3ae4[0x0],['VoiceQueueId',_0x5318('0x179')]))[_0x5318('0x3b')](_0xdb744d[_0x5318('0x1f7')](_0x2fac9f,_0x1d3ae4[0x0]))[_0x5318('0xa1')](_0xdb744d['loggerHandler'](_0x5318('0x205'),_0x2fac9f));}}}})['catch'](loggerGetContactDialer(_0x5318('0x206'),_0x2fac9f,0x1));};Dialer[_0x5318('0x18')][_0x5318('0x1cd')]=function(_0x419761,_0x115672,_0x3e1868,_0x4f0ef2,_0x5c3baf,_0x59b001){loggerPredictive['info'](_0x5318('0x207'));loggerPredictive['info']('M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x419761);loggerPredictive[_0x5318('0x46')](_0x5318('0x208'),_0x115672);loggerPredictive[_0x5318('0x46')]('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',_0x3e1868);loggerPredictive[_0x5318('0x46')](_0x5318('0x209'),_0x4f0ef2);loggerPredictive[_0x5318('0x46')]('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5c3baf);loggerPredictive['info'](_0x5318('0x5d'));return new Promise(function(_0x50829f,_0xcae066){if(_0x419761<=0x0||isNaN(_0x419761)){return _0xcae066(msgResponse(_0x5318('0x20a'),_0x5318('0x83'),'m\x20=\x20'+_0x419761));}if(_0x3e1868<=0x0||isNaN(_0x3e1868)){return _0xcae066(msgResponse('[abandonmentRate]',_0x5318('0x83'),_0x5318('0x20b')+_0x3e1868));}if(_0x4f0ef2<=0x0||isNaN(_0x4f0ef2)){return _0xcae066(msgResponse(_0x5318('0x20a'),'Error',_0x5318('0x20c')+_0x4f0ef2));}if(_0x115672<=0x0||isNaN(_0x115672)){return _0xcae066(msgResponse(_0x5318('0x20a'),_0x5318('0x83'),_0x5318('0x20d')+_0x115672));}if(_0x5c3baf<=0x0||isNaN(_0x5c3baf)){return _0xcae066(msgResponse(_0x5318('0x20a'),_0x5318('0x83'),_0x5318('0x20e')+_0x5c3baf));}_0x59b001=_0x59b001||0x0;var _0x13aa3b=0x1/_0x3e1868;var _0x476eb=0x0;var _0x229069=0x0;var _0xa770f0=0x0;var _0x171b22=0x0;for(var _0x201276=0x0;_0xa770f0<_0x5c3baf;_0x201276+=0x1){_0x229069=_0x201276/_0x115672;_0x476eb=(_0x4f0ef2*_0x229069+_0x59b001)/_0x13aa3b;_0xa770f0=utils[_0x5318('0x20f')](_0x476eb,_0x419761);_0x171b22=_0x476eb/_0x419761*(0x1-utils[_0x5318('0x20f')](_0x476eb,_0x419761));}return _0x50829f({'erlangCalls':_0x201276,'erlangCallToSecond':_0x115672/_0x201276,'erlangAbandonmentRate':_0xa770f0,'erlangBusyFactor':_0x171b22});});};Dialer[_0x5318('0x18')][_0x5318('0x1cf')]=function(_0x4cafcf,_0x18c7f9,_0x500b39,_0x49f550,_0x35cb89,_0x160ded){loggerPredictive[_0x5318('0x46')](_0x5318('0x210'));loggerPredictive[_0x5318('0x46')](_0x5318('0x211'),_0x4cafcf);loggerPredictive['info'](_0x5318('0x208'),_0x18c7f9);loggerPredictive['info'](_0x5318('0x212'),_0x500b39);loggerPredictive[_0x5318('0x46')](_0x5318('0x209'),_0x49f550);loggerPredictive['info'](_0x5318('0x213'),_0x35cb89);loggerPredictive[_0x5318('0x46')]('---------------------------');return new Promise(function(_0x1ec6aa,_0x49a97d){if(_0x4cafcf<=0x0||isNaN(_0x4cafcf)){return _0x49a97d(msgResponse(_0x5318('0x214'),_0x5318('0x83'),_0x5318('0x215')+_0x4cafcf));}if(_0x500b39<=0x0||isNaN(_0x500b39)){return _0x49a97d(msgResponse(_0x5318('0x214'),_0x5318('0x83'),_0x5318('0x20b')+_0x500b39));}if(_0x49f550<=0x0||isNaN(_0x49f550)){return _0x49a97d(msgResponse(_0x5318('0x214'),_0x5318('0x83'),_0x5318('0x20c')+_0x49f550));}if(_0x18c7f9<=0x0||isNaN(_0x18c7f9)){return _0x49a97d(msgResponse(_0x5318('0x214'),_0x5318('0x83'),_0x5318('0x20d')+_0x18c7f9));}if(_0x35cb89<=0x0||isNaN(_0x35cb89)){return _0x49a97d(msgResponse(_0x5318('0x214'),_0x5318('0x83'),_0x5318('0x216')+_0x35cb89));}_0x160ded=_0x160ded||0x0;var _0x15de66=0x1/_0x500b39;var _0x545bf3=0x0;var _0xb6de06=0x0;var _0x54093c=0x0;var _0x5a9b47=0x0;for(var _0x3d53ab=0x0;_0x5a9b47<_0x35cb89;_0x3d53ab+=0x1){_0xb6de06=_0x3d53ab/_0x18c7f9;_0x545bf3=(_0x49f550*_0xb6de06+_0x160ded)/_0x15de66;_0x54093c=utils[_0x5318('0x20f')](_0x545bf3,_0x4cafcf);_0x5a9b47=_0x545bf3/_0x4cafcf*(0x1-utils[_0x5318('0x20f')](_0x545bf3,_0x4cafcf));}return _0x1ec6aa({'erlangCalls':_0x3d53ab,'erlangCallToSecond':_0x18c7f9/_0x3d53ab,'erlangAbandonmentRate':_0x54093c,'erlangBusyFactor':_0x5a9b47});});};module[_0x5318('0x217')]=Dialer;
\ No newline at end of file
index 97e81c3..673e009 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51b0=['type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','\x22%s\x22\x20<%s>','dialCutDigit','substring','exports','util','lodash','moment','isNil','string','voiceQueue','uniqueid','name','Contact','phone','firstName','number','queue','active'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x51b0,0x9a));var _0x051b=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x51b0[_0x1ac595];return _0x455fff;};'use strict';var util=require(_0x051b('0x0'));var _=require(_0x051b('0x1'));var moment=require(_0x051b('0x2'));function checkNameSurname(_0x2781bd,_0x24e35d,_0x118c89){var _0x12c0fe='';if(!_[_0x051b('0x3')](_0x24e35d)&&'string'===typeof _0x24e35d){_0x12c0fe+=_0x24e35d;}if(!_[_0x051b('0x3')](_0x118c89)&&_0x051b('0x4')===typeof _0x118c89){_0x12c0fe+='\x20'+_0x118c89;}if(_0x12c0fe!==''){return _0x12c0fe;}return _0x2781bd;}function Action(_0x542cb2,_0x447be4,_0x5dcc52){this[_0x051b('0x5')]=_0x542cb2;this[_0x051b('0x6')]=_0x5dcc52||undefined;this[_0x051b('0x7')]=checkNameSurname(_0x447be4[_0x051b('0x8')][_0x051b('0x9')],_0x447be4['Contact'][_0x051b('0xa')],_0x447be4[_0x051b('0x8')]['lastName']);this[_0x051b('0xb')]=_0x447be4[_0x051b('0x9')];this[_0x051b('0xc')]=_0x542cb2[_0x051b('0x7')];this[_0x051b('0xd')]=_0x447be4[_0x051b('0xd')]||![];this[_0x051b('0xe')]=_0x542cb2[_0x051b('0xe')];this[_0x051b('0xf')]=_0x542cb2[_0x051b('0xf')]||0x3;this[_0x051b('0x10')]=_0x447be4[_0x051b('0x10')];this[_0x051b('0x11')]=_0x447be4['countbusyretry'];this[_0x051b('0x12')]=_0x447be4[_0x051b('0x12')];this[_0x051b('0x13')]=_0x447be4[_0x051b('0x13')];this[_0x051b('0x14')]=_0x447be4[_0x051b('0x14')];this[_0x051b('0x15')]=_0x447be4['countdropretry'];this[_0x051b('0x16')]=_0x447be4[_0x051b('0x16')];this[_0x051b('0x17')]=_0x447be4[_0x051b('0x17')];this['countagentrejectretry']=_0x447be4['countagentrejectretry'];this['ContactId']=_0x447be4[_0x051b('0x18')];this[_0x051b('0x19')]=_0x447be4['ListId'];this[_0x051b('0x1a')]=_0x447be4[_0x051b('0x1a')];this[_0x051b('0x1b')]=_0x447be4[_0x051b('0x1b')];this[_0x051b('0x1c')]=_0x447be4['CampaignId'];this['idHopper']=_0x447be4['id'];this['ContactFirstName']=_0x447be4[_0x051b('0x8')][_0x051b('0xa')]||'';this['starttime']=moment()[_0x051b('0x1d')](_0x051b('0x1e'));this['callback']=_0x447be4[_0x051b('0x1f')];this[_0x051b('0x20')]=_0x447be4[_0x051b('0x20')];this[_0x051b('0x21')]=_0x447be4['callbackat'];this[_0x051b('0x22')]=_0x447be4[_0x051b('0x22')];this[_0x051b('0x23')]='';this[_0x051b('0x24')]='';}Action[_0x051b('0x25')]['getCaller']=function(){return util['format'](_0x051b('0x26'),this[_0x051b('0x7')],this[_0x051b('0x5')][_0x051b('0x27')]>0x0?this['number'][_0x051b('0x28')](this[_0x051b('0x5')]['dialCutDigit']):this[_0x051b('0xb')]);};Action[_0x051b('0x25')]['getQueue']=function(){return this[_0x051b('0xc')];};module[_0x051b('0x29')]=Action;
\ No newline at end of file
+var _0xbb82=['VoiceQueueId','CampaignId','ContactFirstName','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','originatecalleridnum','\x22%s\x22\x20<%s>','dialCutDigit','substring','getQueue','util','lodash','moment','isNil','string','voiceQueue','uniqueid','name','Contact','firstName','lastName','number','phone','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId'];(function(_0x3225e8,_0x3d90be){var _0x485424=function(_0x56bace){while(--_0x56bace){_0x3225e8['push'](_0x3225e8['shift']());}};_0x485424(++_0x3d90be);}(_0xbb82,0x133));var _0x2bb8=function(_0x1a3cc7,_0x2900e3){_0x1a3cc7=_0x1a3cc7-0x0;var _0x338438=_0xbb82[_0x1a3cc7];return _0x338438;};'use strict';var util=require(_0x2bb8('0x0'));var _=require(_0x2bb8('0x1'));var moment=require(_0x2bb8('0x2'));function checkNameSurname(_0x4715e6,_0x45ff3f,_0x3c5571){var _0x2b9a71='';if(!_[_0x2bb8('0x3')](_0x45ff3f)&&_0x2bb8('0x4')===typeof _0x45ff3f){_0x2b9a71+=_0x45ff3f;}if(!_[_0x2bb8('0x3')](_0x3c5571)&&'string'===typeof _0x3c5571){_0x2b9a71+='\x20'+_0x3c5571;}if(_0x2b9a71!==''){return _0x2b9a71;}return _0x4715e6;}function Action(_0x11ae15,_0x301e86,_0x11b54e){this[_0x2bb8('0x5')]=_0x11ae15;this[_0x2bb8('0x6')]=_0x11b54e||undefined;this[_0x2bb8('0x7')]=checkNameSurname(_0x301e86[_0x2bb8('0x8')]['phone'],_0x301e86[_0x2bb8('0x8')][_0x2bb8('0x9')],_0x301e86[_0x2bb8('0x8')][_0x2bb8('0xa')]);this[_0x2bb8('0xb')]=_0x301e86[_0x2bb8('0xc')];this[_0x2bb8('0xd')]=_0x11ae15['name'];this[_0x2bb8('0xe')]=_0x301e86[_0x2bb8('0xe')]||![];this['type']=_0x11ae15[_0x2bb8('0xf')];this[_0x2bb8('0x10')]=_0x11ae15[_0x2bb8('0x10')]||0x3;this['scheduledat']=_0x301e86[_0x2bb8('0x11')];this[_0x2bb8('0x12')]=_0x301e86[_0x2bb8('0x12')];this[_0x2bb8('0x13')]=_0x301e86[_0x2bb8('0x13')];this[_0x2bb8('0x14')]=_0x301e86[_0x2bb8('0x14')];this[_0x2bb8('0x15')]=_0x301e86['countnosuchnumberretry'];this['countdropretry']=_0x301e86[_0x2bb8('0x16')];this[_0x2bb8('0x17')]=_0x301e86[_0x2bb8('0x17')];this['countmachineretry']=_0x301e86[_0x2bb8('0x18')];this[_0x2bb8('0x19')]=_0x301e86[_0x2bb8('0x19')];this[_0x2bb8('0x1a')]=_0x301e86[_0x2bb8('0x1a')];this[_0x2bb8('0x1b')]=_0x301e86['ListId'];this[_0x2bb8('0x1c')]=_0x301e86[_0x2bb8('0x1c')];this[_0x2bb8('0x1d')]=_0x301e86[_0x2bb8('0x1d')];this[_0x2bb8('0x1e')]=_0x301e86[_0x2bb8('0x1e')];this['idHopper']=_0x301e86['id'];this[_0x2bb8('0x1f')]=_0x301e86[_0x2bb8('0x8')][_0x2bb8('0x9')]||'';this['starttime']=moment()[_0x2bb8('0x20')](_0x2bb8('0x21'));this[_0x2bb8('0x22')]=_0x301e86[_0x2bb8('0x22')];this[_0x2bb8('0x23')]=_0x301e86[_0x2bb8('0x23')];this[_0x2bb8('0x24')]=_0x301e86['callbackat'];this['recallme']=_0x301e86['recallme'];this[_0x2bb8('0x25')]='';this['originatecalleridname']='';}Action['prototype']['getCaller']=function(){return util['format'](_0x2bb8('0x26'),this[_0x2bb8('0x7')],this[_0x2bb8('0x5')][_0x2bb8('0x27')]>0x0?this[_0x2bb8('0xb')][_0x2bb8('0x28')](this[_0x2bb8('0x5')]['dialCutDigit']):this[_0x2bb8('0xb')]);};Action['prototype'][_0x2bb8('0x29')]=function(){return this[_0x2bb8('0xd')];};module['exports']=Action;
\ No newline at end of file
index 9b8e435..309f758 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f35=['reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','agiafterat','exports','../utils','statedesc','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','uniqueid','calleridname','name','number','starttime','responsetime','answertime','YYYY-MM-DD\x20HH:mm:ss','holdtime','talktime','getSeconds','membername'];(function(_0x4bc018,_0x529ee6){var _0x5e3a90=function(_0x2ed7f0){while(--_0x2ed7f0){_0x4bc018['push'](_0x4bc018['shift']());}};_0x5e3a90(++_0x529ee6);}(_0x3f35,0xd6));var _0x53f3=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x3f35[_0x164eca];return _0x2ce562;};'use strict';var moment=require('moment');var utils=require(_0x53f3('0x0'));function AgentComplete(_0x16e4a9,_0x5846ff){this['state']=0x4;this[_0x53f3('0x1')]='Answer';this['scheduledat']=_0x16e4a9[_0x53f3('0x2')];this[_0x53f3('0x3')]=_0x16e4a9['type'];this[_0x53f3('0x4')]=_0x16e4a9['type']==='outbound'?_0x53f3('0x5'):_0x16e4a9[_0x53f3('0x3')];this[_0x53f3('0x6')]=_0x16e4a9['countbusyretry'];this[_0x53f3('0x7')]=_0x16e4a9[_0x53f3('0x7')];this[_0x53f3('0x8')]=_0x16e4a9[_0x53f3('0x8')];this['countglobal']=_0x16e4a9['countbusyretry']+_0x16e4a9[_0x53f3('0x7')]+_0x16e4a9[_0x53f3('0x8')]+_0x16e4a9[_0x53f3('0x9')]+_0x16e4a9['countdropretry']+_0x16e4a9[_0x53f3('0xa')]+_0x16e4a9[_0x53f3('0xb')]+_0x16e4a9[_0x53f3('0xc')];this['countnosuchnumberretry']=_0x16e4a9['countnosuchnumberretry'];this[_0x53f3('0xd')]=_0x16e4a9[_0x53f3('0xd')];this['countabandonedretry']=_0x16e4a9[_0x53f3('0xa')];this[_0x53f3('0xb')]=_0x16e4a9[_0x53f3('0xb')];this[_0x53f3('0xc')]=_0x16e4a9[_0x53f3('0xc')];this['uniqueid']=_0x5846ff[_0x53f3('0xe')];this[_0x53f3('0xf')]=_0x16e4a9[_0x53f3('0x10')];this['calleridnum']=_0x16e4a9[_0x53f3('0x11')];this[_0x53f3('0x12')]=_0x16e4a9['starttime'];this['responsetime']=_0x16e4a9[_0x53f3('0x13')];this['answertime']=_0x16e4a9[_0x53f3('0x14')];this['endtime']=moment()['format'](_0x53f3('0x15'));this['ringtime']=utils['getSeconds'](_0x16e4a9[_0x53f3('0x13')],_0x16e4a9[_0x53f3('0x12')]);this[_0x53f3('0x16')]=utils['getSeconds'](_0x16e4a9[_0x53f3('0x14')],_0x16e4a9[_0x53f3('0x13')]);this[_0x53f3('0x17')]=utils[_0x53f3('0x18')](this['endtime'],_0x16e4a9[_0x53f3('0x14')]);this['queue']=_0x5846ff[_0x53f3('0x5')];this[_0x53f3('0x19')]=_0x5846ff[_0x53f3('0x19')];this[_0x53f3('0x1a')]=_0x5846ff['reason'];this[_0x53f3('0x1b')]=_0x16e4a9[_0x53f3('0x1b')];this[_0x53f3('0x1c')]=_0x16e4a9[_0x53f3('0x1c')];this['callbackat']=_0x16e4a9[_0x53f3('0x1d')];this[_0x53f3('0x1e')]=_0x16e4a9[_0x53f3('0x1e')];this['ContactId']=_0x16e4a9[_0x53f3('0x1f')];this[_0x53f3('0x20')]=_0x16e4a9[_0x53f3('0x20')];this['UserId']=_0x16e4a9[_0x53f3('0x21')];this['VoiceQueueId']=_0x16e4a9[_0x53f3('0x22')];this[_0x53f3('0x23')]=_0x16e4a9[_0x53f3('0x23')];this[_0x53f3('0x24')]=_0x16e4a9[_0x53f3('0x24')]||'';this[_0x53f3('0x25')]=_0x16e4a9[_0x53f3('0x25')]||'';this['agiafterat']=_0x16e4a9[_0x53f3('0x26')];}module[_0x53f3('0x27')]=AgentComplete;
\ No newline at end of file
+var _0xd16d=['responsetime','answertime','endtime','format','ringtime','getSeconds','holdtime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','agiafterat','exports','moment','../utils','state','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countdropretry','uniqueid','calleridname','name','calleridnum','number','starttime'];(function(_0x244ddb,_0x107a6c){var _0x2aa596=function(_0x30fad9){while(--_0x30fad9){_0x244ddb['push'](_0x244ddb['shift']());}};_0x2aa596(++_0x107a6c);}(_0xd16d,0x175));var _0xdd16=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0xd16d[_0x46e363];return _0x3fb059;};'use strict';var moment=require(_0xdd16('0x0'));var utils=require(_0xdd16('0x1'));function AgentComplete(_0x33662c,_0x4b4ffe){this[_0xdd16('0x2')]=0x4;this['statedesc']=_0xdd16('0x3');this[_0xdd16('0x4')]=_0x33662c[_0xdd16('0x4')];this[_0xdd16('0x5')]=_0x33662c['type'];this[_0xdd16('0x6')]=_0x33662c[_0xdd16('0x5')]===_0xdd16('0x7')?_0xdd16('0x8'):_0x33662c[_0xdd16('0x5')];this[_0xdd16('0x9')]=_0x33662c[_0xdd16('0x9')];this[_0xdd16('0xa')]=_0x33662c[_0xdd16('0xa')];this[_0xdd16('0xb')]=_0x33662c[_0xdd16('0xb')];this['countglobal']=_0x33662c[_0xdd16('0x9')]+_0x33662c[_0xdd16('0xa')]+_0x33662c['countnoanswerretry']+_0x33662c['countnosuchnumberretry']+_0x33662c['countdropretry']+_0x33662c[_0xdd16('0xc')]+_0x33662c[_0xdd16('0xd')]+_0x33662c[_0xdd16('0xe')];this[_0xdd16('0xf')]=_0x33662c['countnosuchnumberretry'];this[_0xdd16('0x10')]=_0x33662c[_0xdd16('0x10')];this[_0xdd16('0xc')]=_0x33662c[_0xdd16('0xc')];this['countmachineretry']=_0x33662c[_0xdd16('0xd')];this[_0xdd16('0xe')]=_0x33662c['countagentrejectretry'];this[_0xdd16('0x11')]=_0x4b4ffe[_0xdd16('0x11')];this[_0xdd16('0x12')]=_0x33662c[_0xdd16('0x13')];this[_0xdd16('0x14')]=_0x33662c[_0xdd16('0x15')];this['starttime']=_0x33662c[_0xdd16('0x16')];this[_0xdd16('0x17')]=_0x33662c[_0xdd16('0x17')];this[_0xdd16('0x18')]=_0x33662c[_0xdd16('0x18')];this[_0xdd16('0x19')]=moment()[_0xdd16('0x1a')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xdd16('0x1b')]=utils[_0xdd16('0x1c')](_0x33662c[_0xdd16('0x17')],_0x33662c[_0xdd16('0x16')]);this[_0xdd16('0x1d')]=utils[_0xdd16('0x1c')](_0x33662c['answertime'],_0x33662c[_0xdd16('0x17')]);this['talktime']=utils[_0xdd16('0x1c')](this[_0xdd16('0x19')],_0x33662c[_0xdd16('0x18')]);this[_0xdd16('0x8')]=_0x4b4ffe[_0xdd16('0x8')];this[_0xdd16('0x1e')]=_0x4b4ffe[_0xdd16('0x1e')];this[_0xdd16('0x1f')]=_0x4b4ffe['reason'];this[_0xdd16('0x20')]=_0x33662c[_0xdd16('0x20')];this[_0xdd16('0x21')]=_0x33662c[_0xdd16('0x21')];this[_0xdd16('0x22')]=_0x33662c[_0xdd16('0x22')];this[_0xdd16('0x23')]=_0x33662c[_0xdd16('0x23')];this[_0xdd16('0x24')]=_0x33662c[_0xdd16('0x24')];this['ListId']=_0x33662c[_0xdd16('0x25')];this[_0xdd16('0x26')]=_0x33662c[_0xdd16('0x26')];this[_0xdd16('0x27')]=_0x33662c[_0xdd16('0x27')];this['CampaignId']=_0x33662c['CampaignId'];this['originatecalleridnum']=_0x33662c[_0xdd16('0x28')]||'';this[_0xdd16('0x29')]=_0x33662c['originatecalleridname']||'';this[_0xdd16('0x2a')]=_0x33662c['agiafterat'];}module[_0xdd16('0x2b')]=AgentComplete;
\ No newline at end of file
index 23d4f3d..c729f38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba03=['scheduledat','type','campaigntype','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','queue','calleridname','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','state','statedesc','uniqueid'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xba03,0x1c6));var _0x3ba0=function(_0x264032,_0x13fa04){_0x264032=_0x264032-0x0;var _0x1ee3db=_0xba03[_0x264032];return _0x1ee3db;};'use strict';function Final(_0x48f3ce){this[_0x3ba0('0x0')]=_0x48f3ce['uniqueid'];this[_0x3ba0('0x1')]=_0x48f3ce[_0x3ba0('0x1')];this[_0x3ba0('0x2')]=_0x48f3ce[_0x3ba0('0x2')];this[_0x3ba0('0x3')]=_0x48f3ce[_0x3ba0('0x2')]===_0x3ba0('0x4')?'queue':_0x48f3ce['type'];this['countbusyretry']=_0x48f3ce[_0x3ba0('0x5')];this['countcongestionretry']=_0x48f3ce[_0x3ba0('0x6')];this[_0x3ba0('0x7')]=_0x48f3ce[_0x3ba0('0x7')];this[_0x3ba0('0x8')]=_0x48f3ce[_0x3ba0('0x5')]+_0x48f3ce[_0x3ba0('0x6')]+_0x48f3ce[_0x3ba0('0x7')]+_0x48f3ce[_0x3ba0('0x9')]+_0x48f3ce[_0x3ba0('0xa')]+_0x48f3ce[_0x3ba0('0xb')]+_0x48f3ce[_0x3ba0('0xc')]+_0x48f3ce['countagentrejectretry'];this[_0x3ba0('0x9')]=_0x48f3ce[_0x3ba0('0x9')];this[_0x3ba0('0xa')]=_0x48f3ce[_0x3ba0('0xa')];this[_0x3ba0('0xb')]=_0x48f3ce[_0x3ba0('0xb')];this[_0x3ba0('0xc')]=_0x48f3ce[_0x3ba0('0xc')];this[_0x3ba0('0xd')]=_0x48f3ce[_0x3ba0('0xd')];this[_0x3ba0('0xe')]=_0x48f3ce[_0x3ba0('0xe')];this[_0x3ba0('0xf')]=_0x48f3ce[_0x3ba0('0xf')];this['calleridnum']=_0x48f3ce[_0x3ba0('0x10')];this[_0x3ba0('0x11')]=_0x48f3ce[_0x3ba0('0x11')];this[_0x3ba0('0x12')]=_0x48f3ce['responsetime'];this['endtime']=_0x48f3ce[_0x3ba0('0x12')];this[_0x3ba0('0x13')]=_0x48f3ce[_0x3ba0('0x13')]||0x0;this['holdtime']=_0x48f3ce[_0x3ba0('0x14')]||0x0;this[_0x3ba0('0x15')]=_0x48f3ce[_0x3ba0('0x15')]||0x0;this[_0x3ba0('0x16')]=_0x48f3ce[_0x3ba0('0x16')];this[_0x3ba0('0x17')]=_0x48f3ce[_0x3ba0('0x17')];this[_0x3ba0('0x18')]=_0x48f3ce[_0x3ba0('0x18')];this[_0x3ba0('0x19')]=_0x48f3ce['recallme'];this[_0x3ba0('0x1a')]=_0x48f3ce['ContactId'];this[_0x3ba0('0x1b')]=_0x48f3ce[_0x3ba0('0x1b')];this['UserId']=_0x48f3ce[_0x3ba0('0x1c')];this['VoiceQueueId']=_0x48f3ce[_0x3ba0('0x1d')];this[_0x3ba0('0x1e')]=_0x48f3ce['CampaignId'];this[_0x3ba0('0x1f')]=_0x48f3ce[_0x3ba0('0x1f')]||'';this[_0x3ba0('0x20')]=_0x48f3ce[_0x3ba0('0x20')]||'';this[_0x3ba0('0x21')]=_0x48f3ce[_0x3ba0('0x21')];this[_0x3ba0('0x22')]=_0x48f3ce[_0x3ba0('0x22')];}module['exports']=Final;
\ No newline at end of file
+var _0x2047=['VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','state','statedesc','exports','uniqueid','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId'];(function(_0x37a3f3,_0xa543df){var _0x369b24=function(_0x4e9e11){while(--_0x4e9e11){_0x37a3f3['push'](_0x37a3f3['shift']());}};_0x369b24(++_0xa543df);}(_0x2047,0xdf));var _0x7204=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0x2047[_0x37bd26];return _0xe83dc4;};'use strict';function Final(_0x1fd814){this[_0x7204('0x0')]=_0x1fd814[_0x7204('0x0')];this[_0x7204('0x1')]=_0x1fd814[_0x7204('0x1')];this[_0x7204('0x2')]=_0x1fd814[_0x7204('0x2')];this[_0x7204('0x3')]=_0x1fd814['type']==='outbound'?_0x7204('0x4'):_0x1fd814[_0x7204('0x2')];this['countbusyretry']=_0x1fd814[_0x7204('0x5')];this[_0x7204('0x6')]=_0x1fd814['countcongestionretry'];this[_0x7204('0x7')]=_0x1fd814[_0x7204('0x7')];this[_0x7204('0x8')]=_0x1fd814[_0x7204('0x5')]+_0x1fd814[_0x7204('0x6')]+_0x1fd814[_0x7204('0x7')]+_0x1fd814['countnosuchnumberretry']+_0x1fd814[_0x7204('0x9')]+_0x1fd814[_0x7204('0xa')]+_0x1fd814[_0x7204('0xb')]+_0x1fd814[_0x7204('0xc')];this[_0x7204('0xd')]=_0x1fd814[_0x7204('0xd')];this[_0x7204('0x9')]=_0x1fd814[_0x7204('0x9')];this[_0x7204('0xa')]=_0x1fd814[_0x7204('0xa')];this[_0x7204('0xb')]=_0x1fd814[_0x7204('0xb')];this[_0x7204('0xc')]=_0x1fd814['countagentrejectretry'];this[_0x7204('0x4')]=_0x1fd814['queue'];this[_0x7204('0xe')]=_0x1fd814[_0x7204('0xe')];this[_0x7204('0xf')]=_0x1fd814[_0x7204('0xf')];this['starttime']=_0x1fd814[_0x7204('0x10')];this[_0x7204('0x11')]=_0x1fd814[_0x7204('0x11')];this[_0x7204('0x12')]=_0x1fd814[_0x7204('0x11')];this['ringtime']=_0x1fd814[_0x7204('0x13')]||0x0;this[_0x7204('0x14')]=_0x1fd814['holdtime']||0x0;this[_0x7204('0x15')]=_0x1fd814[_0x7204('0x15')]||0x0;this['callback']=_0x1fd814[_0x7204('0x16')];this[_0x7204('0x17')]=_0x1fd814[_0x7204('0x17')];this[_0x7204('0x18')]=_0x1fd814['callbackat'];this['recallme']=_0x1fd814[_0x7204('0x19')];this[_0x7204('0x1a')]=_0x1fd814[_0x7204('0x1a')];this[_0x7204('0x1b')]=_0x1fd814['ListId'];this[_0x7204('0x1c')]=_0x1fd814[_0x7204('0x1c')];this[_0x7204('0x1d')]=_0x1fd814['VoiceQueueId'];this[_0x7204('0x1e')]=_0x1fd814[_0x7204('0x1e')];this[_0x7204('0x1f')]=_0x1fd814[_0x7204('0x1f')]||'';this[_0x7204('0x20')]=_0x1fd814[_0x7204('0x20')]||'';this[_0x7204('0x21')]=_0x1fd814[_0x7204('0x21')];this['statedesc']=_0x1fd814[_0x7204('0x22')];}module[_0x7204('0x23')]=Final;
\ No newline at end of file
index 7a87d2b..4bc0438 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe255=['reason','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','moment','../utils','state','statedesc','Answer','type','campaigntype','queue','amd','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','name','calleridnum','number','starttime','responsetime','format','YYYY-MM-DD\x20HH:mm:ss','holdtime','talktime','getSeconds','endtime','membername','IVR'];(function(_0x49d48b,_0x3f60ea){var _0x3b64dc=function(_0x4d877a){while(--_0x4d877a){_0x49d48b['push'](_0x49d48b['shift']());}};_0x3b64dc(++_0x3f60ea);}(_0xe255,0x114));var _0x5e25=function(_0x3d99c8,_0x5a87e4){_0x3d99c8=_0x3d99c8-0x0;var _0x1a9782=_0xe255[_0x3d99c8];return _0x1a9782;};'use strict';var moment=require(_0x5e25('0x0'));var utils=require(_0x5e25('0x1'));function Hangup(_0x539fa,_0x47ec68){this[_0x5e25('0x2')]=0x4;this[_0x5e25('0x3')]=_0x5e25('0x4');this['scheduledat']=_0x539fa['scheduledat'];this[_0x5e25('0x5')]=_0x539fa[_0x5e25('0x5')];this[_0x5e25('0x6')]=_0x539fa[_0x5e25('0x5')]==='outbound'?_0x5e25('0x7'):_0x539fa[_0x5e25('0x5')];this[_0x5e25('0x8')]=_0x539fa[_0x5e25('0x8')]||![];this[_0x5e25('0x9')]=_0x539fa[_0x5e25('0x9')];this[_0x5e25('0xa')]=_0x539fa[_0x5e25('0xa')];this[_0x5e25('0xb')]=_0x539fa[_0x5e25('0xb')];this[_0x5e25('0xc')]=_0x539fa[_0x5e25('0x9')]+_0x539fa[_0x5e25('0xa')]+_0x539fa[_0x5e25('0xb')]+_0x539fa[_0x5e25('0xd')]+_0x539fa[_0x5e25('0xe')]+_0x539fa[_0x5e25('0xf')]+_0x539fa[_0x5e25('0x10')]+_0x539fa['countagentrejectretry'];this['countnosuchnumberretry']=_0x539fa[_0x5e25('0xd')];this[_0x5e25('0xe')]=_0x539fa[_0x5e25('0xe')];this[_0x5e25('0xf')]=_0x539fa['countabandonedretry'];this[_0x5e25('0x10')]=_0x539fa[_0x5e25('0x10')];this[_0x5e25('0x11')]=_0x539fa['countagentrejectretry'];this['uniqueid']=_0x47ec68[_0x5e25('0x12')];this['calleridname']=_0x539fa[_0x5e25('0x13')];this[_0x5e25('0x14')]=_0x539fa[_0x5e25('0x15')];this[_0x5e25('0x16')]=_0x539fa[_0x5e25('0x16')];this['responsetime']=_0x539fa[_0x5e25('0x17')];this['endtime']=moment()[_0x5e25('0x18')](_0x5e25('0x19'));this['ringtime']=utils['getSeconds'](_0x539fa['responsetime'],_0x539fa[_0x5e25('0x16')]);this[_0x5e25('0x1a')]=0x0;this[_0x5e25('0x1b')]=utils[_0x5e25('0x1c')](this[_0x5e25('0x1d')],_0x539fa[_0x5e25('0x17')]);this[_0x5e25('0x7')]=_0x539fa[_0x5e25('0x7')];this[_0x5e25('0x1e')]=_0x5e25('0x1f');this[_0x5e25('0x20')]=_0x47ec68[_0x5e25('0x21')];this['callback']=_0x539fa[_0x5e25('0x22')];this['callbackuniqueid']=_0x539fa[_0x5e25('0x23')];this[_0x5e25('0x24')]=_0x539fa[_0x5e25('0x24')];this[_0x5e25('0x25')]=_0x539fa['recallme'];this[_0x5e25('0x26')]=_0x539fa['ContactId'];this[_0x5e25('0x27')]=_0x539fa[_0x5e25('0x27')];this[_0x5e25('0x28')]=_0x539fa['UserId'];this[_0x5e25('0x29')]=_0x539fa[_0x5e25('0x29')];this[_0x5e25('0x2a')]=_0x539fa[_0x5e25('0x2a')];}module[_0x5e25('0x2b')]=Hangup;
\ No newline at end of file
+var _0xdeb3=['IVR','reason','cause-txt','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId','CampaignId','exports','moment','../utils','statedesc','scheduledat','type','amd','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countabandonedretry','countagentrejectretry','uniqueid','name','calleridnum','number','starttime','responsetime','YYYY-MM-DD\x20HH:mm:ss','ringtime','getSeconds','holdtime','endtime','queue','membername'];(function(_0x5bab95,_0x502e73){var _0x39972e=function(_0x4c2866){while(--_0x4c2866){_0x5bab95['push'](_0x5bab95['shift']());}};_0x39972e(++_0x502e73);}(_0xdeb3,0x19c));var _0x3deb=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xdeb3[_0x42cae2];return _0x5f256f;};'use strict';var moment=require(_0x3deb('0x0'));var utils=require(_0x3deb('0x1'));function Hangup(_0x1a8a2e,_0x34010d){this['state']=0x4;this[_0x3deb('0x2')]='Answer';this[_0x3deb('0x3')]=_0x1a8a2e[_0x3deb('0x3')];this[_0x3deb('0x4')]=_0x1a8a2e[_0x3deb('0x4')];this['campaigntype']=_0x1a8a2e['type']==='outbound'?'queue':_0x1a8a2e[_0x3deb('0x4')];this[_0x3deb('0x5')]=_0x1a8a2e[_0x3deb('0x5')]||![];this[_0x3deb('0x6')]=_0x1a8a2e['countbusyretry'];this[_0x3deb('0x7')]=_0x1a8a2e[_0x3deb('0x7')];this[_0x3deb('0x8')]=_0x1a8a2e[_0x3deb('0x8')];this[_0x3deb('0x9')]=_0x1a8a2e[_0x3deb('0x6')]+_0x1a8a2e[_0x3deb('0x7')]+_0x1a8a2e[_0x3deb('0x8')]+_0x1a8a2e[_0x3deb('0xa')]+_0x1a8a2e[_0x3deb('0xb')]+_0x1a8a2e['countabandonedretry']+_0x1a8a2e[_0x3deb('0xc')]+_0x1a8a2e['countagentrejectretry'];this['countnosuchnumberretry']=_0x1a8a2e[_0x3deb('0xa')];this[_0x3deb('0xb')]=_0x1a8a2e[_0x3deb('0xb')];this[_0x3deb('0xd')]=_0x1a8a2e['countabandonedretry'];this[_0x3deb('0xc')]=_0x1a8a2e['countmachineretry'];this[_0x3deb('0xe')]=_0x1a8a2e[_0x3deb('0xe')];this[_0x3deb('0xf')]=_0x34010d['uniqueid'];this['calleridname']=_0x1a8a2e[_0x3deb('0x10')];this[_0x3deb('0x11')]=_0x1a8a2e[_0x3deb('0x12')];this[_0x3deb('0x13')]=_0x1a8a2e['starttime'];this[_0x3deb('0x14')]=_0x1a8a2e[_0x3deb('0x14')];this['endtime']=moment()['format'](_0x3deb('0x15'));this[_0x3deb('0x16')]=utils[_0x3deb('0x17')](_0x1a8a2e[_0x3deb('0x14')],_0x1a8a2e[_0x3deb('0x13')]);this[_0x3deb('0x18')]=0x0;this['talktime']=utils[_0x3deb('0x17')](this[_0x3deb('0x19')],_0x1a8a2e[_0x3deb('0x14')]);this[_0x3deb('0x1a')]=_0x1a8a2e[_0x3deb('0x1a')];this[_0x3deb('0x1b')]=_0x3deb('0x1c');this[_0x3deb('0x1d')]=_0x34010d[_0x3deb('0x1e')];this[_0x3deb('0x1f')]=_0x1a8a2e[_0x3deb('0x1f')];this[_0x3deb('0x20')]=_0x1a8a2e[_0x3deb('0x20')];this[_0x3deb('0x21')]=_0x1a8a2e[_0x3deb('0x21')];this['recallme']=_0x1a8a2e['recallme'];this[_0x3deb('0x22')]=_0x1a8a2e[_0x3deb('0x22')];this[_0x3deb('0x23')]=_0x1a8a2e[_0x3deb('0x23')];this[_0x3deb('0x24')]=_0x1a8a2e[_0x3deb('0x24')];this[_0x3deb('0x25')]=_0x1a8a2e[_0x3deb('0x25')];this[_0x3deb('0x26')]=_0x1a8a2e[_0x3deb('0x26')];}module[_0x3deb('0x27')]=Hangup;
\ No newline at end of file
index 4f8596d..b60f05b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0273=['CampaignId','originatecalleridnum','originatecalleridname','state','statedesc','exports','uniqueid','scheduledat','outbound','queue','type','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','calleridname','name','number','starttime','responsetime','endtime','ringtime','getSeconds','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId'];(function(_0x1e94eb,_0x17c2d5){var _0x1f235d=function(_0x2ab2dd){while(--_0x2ab2dd){_0x1e94eb['push'](_0x1e94eb['shift']());}};_0x1f235d(++_0x17c2d5);}(_0x0273,0x1f4));var _0x3027=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x0273[_0x14add3];return _0x4a174f;};'use strict';var utils=require('../utils');function History(_0x417355){this['uniqueid']=_0x417355[_0x3027('0x0')];this[_0x3027('0x1')]=_0x417355[_0x3027('0x1')]||undefined;this['type']=_0x417355['type'];this['campaigntype']=_0x417355['type']===_0x3027('0x2')?_0x3027('0x3'):_0x417355[_0x3027('0x4')];this['countbusyretry']=_0x417355[_0x3027('0x5')];this[_0x3027('0x6')]=_0x417355[_0x3027('0x6')];this[_0x3027('0x7')]=_0x417355[_0x3027('0x7')];this[_0x3027('0x8')]=_0x417355['countbusyretry']+_0x417355['countcongestionretry']+_0x417355['countnoanswerretry']+_0x417355[_0x3027('0x9')]+_0x417355['countdropretry']+_0x417355[_0x3027('0xa')]+_0x417355[_0x3027('0xb')]+_0x417355[_0x3027('0xc')];this['countnosuchnumberretry']=_0x417355['countnosuchnumberretry'];this[_0x3027('0xd')]=_0x417355[_0x3027('0xd')];this[_0x3027('0xa')]=_0x417355[_0x3027('0xa')];this['countmachineretry']=_0x417355['countmachineretry'];this[_0x3027('0xc')]=_0x417355[_0x3027('0xc')];this['queue']=_0x417355[_0x3027('0x3')];this[_0x3027('0xe')]=_0x417355[_0x3027('0xf')];this['calleridnum']=_0x417355[_0x3027('0x10')];this[_0x3027('0x11')]=_0x417355[_0x3027('0x11')];this[_0x3027('0x12')]=_0x417355[_0x3027('0x12')];this[_0x3027('0x13')]=_0x417355['responsetime'];this[_0x3027('0x14')]=utils[_0x3027('0x15')](_0x417355[_0x3027('0x12')],_0x417355[_0x3027('0x11')]);this[_0x3027('0x16')]=0x0;this[_0x3027('0x17')]=0x0;this[_0x3027('0x18')]=_0x417355[_0x3027('0x18')];this[_0x3027('0x19')]=_0x417355['callbackuniqueid'];this[_0x3027('0x1a')]=_0x417355[_0x3027('0x1a')];this['recallme']=_0x417355[_0x3027('0x1b')];this[_0x3027('0x1c')]=_0x417355['ContactId'];this[_0x3027('0x1d')]=_0x417355[_0x3027('0x1d')];this[_0x3027('0x1e')]=_0x417355['UserId'];this[_0x3027('0x1f')]=_0x417355[_0x3027('0x1f')];this[_0x3027('0x20')]=_0x417355[_0x3027('0x20')];this[_0x3027('0x21')]=_0x417355[_0x3027('0x21')]||'';this[_0x3027('0x22')]=_0x417355[_0x3027('0x22')]||'';this[_0x3027('0x23')]=_0x417355['state'];this['statedesc']=_0x417355[_0x3027('0x24')];}module[_0x3027('0x25')]=History;
\ No newline at end of file
+var _0xefa0=['countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countdropretry','countagentrejectretry','queue','calleridname','name','number','starttime','responsetime','endtime','ringtime','getSeconds','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','state','exports','../utils','uniqueid','scheduledat','type','outbound','countbusyretry'];(function(_0x4c8745,_0x20ffda){var _0x43b515=function(_0x212ac2){while(--_0x212ac2){_0x4c8745['push'](_0x4c8745['shift']());}};_0x43b515(++_0x20ffda);}(_0xefa0,0x1e8));var _0x0efa=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xefa0[_0x42cae2];return _0x5f256f;};'use strict';var utils=require(_0x0efa('0x0'));function History(_0x500e05){this[_0x0efa('0x1')]=_0x500e05[_0x0efa('0x1')];this[_0x0efa('0x2')]=_0x500e05[_0x0efa('0x2')]||undefined;this[_0x0efa('0x3')]=_0x500e05['type'];this['campaigntype']=_0x500e05[_0x0efa('0x3')]===_0x0efa('0x4')?'queue':_0x500e05['type'];this[_0x0efa('0x5')]=_0x500e05['countbusyretry'];this[_0x0efa('0x6')]=_0x500e05[_0x0efa('0x6')];this[_0x0efa('0x7')]=_0x500e05['countnoanswerretry'];this[_0x0efa('0x8')]=_0x500e05[_0x0efa('0x5')]+_0x500e05[_0x0efa('0x6')]+_0x500e05[_0x0efa('0x7')]+_0x500e05[_0x0efa('0x9')]+_0x500e05['countdropretry']+_0x500e05[_0x0efa('0xa')]+_0x500e05[_0x0efa('0xb')]+_0x500e05['countagentrejectretry'];this[_0x0efa('0x9')]=_0x500e05[_0x0efa('0x9')];this[_0x0efa('0xc')]=_0x500e05['countdropretry'];this['countabandonedretry']=_0x500e05[_0x0efa('0xa')];this[_0x0efa('0xb')]=_0x500e05[_0x0efa('0xb')];this[_0x0efa('0xd')]=_0x500e05[_0x0efa('0xd')];this[_0x0efa('0xe')]=_0x500e05['queue'];this[_0x0efa('0xf')]=_0x500e05[_0x0efa('0x10')];this['calleridnum']=_0x500e05[_0x0efa('0x11')];this[_0x0efa('0x12')]=_0x500e05['starttime'];this[_0x0efa('0x13')]=_0x500e05['responsetime'];this[_0x0efa('0x14')]=_0x500e05[_0x0efa('0x13')];this[_0x0efa('0x15')]=utils[_0x0efa('0x16')](_0x500e05['responsetime'],_0x500e05[_0x0efa('0x12')]);this[_0x0efa('0x17')]=0x0;this[_0x0efa('0x18')]=0x0;this[_0x0efa('0x19')]=_0x500e05[_0x0efa('0x19')];this[_0x0efa('0x1a')]=_0x500e05[_0x0efa('0x1a')];this[_0x0efa('0x1b')]=_0x500e05[_0x0efa('0x1b')];this[_0x0efa('0x1c')]=_0x500e05[_0x0efa('0x1c')];this[_0x0efa('0x1d')]=_0x500e05[_0x0efa('0x1d')];this[_0x0efa('0x1e')]=_0x500e05[_0x0efa('0x1e')];this[_0x0efa('0x1f')]=_0x500e05[_0x0efa('0x1f')];this[_0x0efa('0x20')]=_0x500e05[_0x0efa('0x20')];this[_0x0efa('0x21')]=_0x500e05[_0x0efa('0x21')];this[_0x0efa('0x22')]=_0x500e05[_0x0efa('0x22')]||'';this[_0x0efa('0x23')]=_0x500e05[_0x0efa('0x23')]||'';this[_0x0efa('0x24')]=_0x500e05['state'];this['statedesc']=_0x500e05['statedesc'];}module[_0x0efa('0x25')]=History;
\ No newline at end of file
index 6e5034a..a3c928d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b79=['dropreason','endtime','ringtime','getSeconds','talktime','queue','membername','reason','callback','callbackuniqueid','callbackat','recallme','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','agiafterat','state','statedesc','exports','scheduledat','campaigntype','outbound','type','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','name','number','starttime','responsetime','droptime'];(function(_0xa60623,_0x2d4e4f){var _0x4a6487=function(_0xba6cbe){while(--_0xba6cbe){_0xa60623['push'](_0xa60623['shift']());}};_0x4a6487(++_0x2d4e4f);}(_0x2b79,0x187));var _0x92b7=function(_0x1e0d60,_0x503460){_0x1e0d60=_0x1e0d60-0x0;var _0x5b9564=_0x2b79[_0x1e0d60];return _0x5b9564;};'use strict';var utils=require('../utils');function QueueCallerAbandon(_0x4440e8,_0x1f59ab){this[_0x92b7('0x0')]=_0x4440e8[_0x92b7('0x0')];this['type']=_0x4440e8['type'];this[_0x92b7('0x1')]=_0x4440e8['type']===_0x92b7('0x2')?'queue':_0x4440e8[_0x92b7('0x3')];this[_0x92b7('0x4')]=_0x4440e8['countbusyretry'];this[_0x92b7('0x5')]=_0x4440e8['countcongestionretry'];this['countnoanswerretry']=_0x4440e8[_0x92b7('0x6')];this[_0x92b7('0x7')]=_0x4440e8[_0x92b7('0x4')]+_0x4440e8[_0x92b7('0x5')]+_0x4440e8[_0x92b7('0x6')]+_0x4440e8[_0x92b7('0x8')]+_0x4440e8[_0x92b7('0x9')]+_0x4440e8[_0x92b7('0xa')]+_0x4440e8[_0x92b7('0xb')]+_0x4440e8[_0x92b7('0xc')];this['countnosuchnumberretry']=_0x4440e8[_0x92b7('0x8')];this[_0x92b7('0x9')]=_0x4440e8[_0x92b7('0x9')];this[_0x92b7('0xa')]=_0x4440e8['countabandonedretry'];this[_0x92b7('0xb')]=_0x4440e8['countmachineretry'];this[_0x92b7('0xc')]=_0x4440e8[_0x92b7('0xc')];this['uniqueid']=_0x1f59ab['uniqueid'];this[_0x92b7('0xd')]=_0x4440e8[_0x92b7('0xe')];this['calleridnum']=_0x4440e8[_0x92b7('0xf')];this[_0x92b7('0x10')]=_0x4440e8['starttime'];this['responsetime']=_0x4440e8[_0x92b7('0x11')];this[_0x92b7('0x12')]=_0x4440e8[_0x92b7('0x12')];this[_0x92b7('0x13')]=_0x4440e8[_0x92b7('0x13')];this[_0x92b7('0x14')]=this[_0x92b7('0x12')];this[_0x92b7('0x15')]=utils[_0x92b7('0x16')](_0x4440e8[_0x92b7('0x11')],_0x4440e8[_0x92b7('0x10')]);this['holdtime']=utils[_0x92b7('0x16')](this[_0x92b7('0x12')],_0x4440e8[_0x92b7('0x11')]);this[_0x92b7('0x17')]=0x0;this[_0x92b7('0x18')]=_0x1f59ab[_0x92b7('0x18')];this[_0x92b7('0x19')]=_0x1f59ab['connectedlinename'];this['reason']=_0x1f59ab[_0x92b7('0x1a')];this[_0x92b7('0x1b')]=_0x4440e8[_0x92b7('0x1b')];this[_0x92b7('0x1c')]=_0x4440e8['callbackuniqueid'];this[_0x92b7('0x1d')]=_0x4440e8[_0x92b7('0x1d')];this[_0x92b7('0x1e')]=_0x4440e8[_0x92b7('0x1e')];this['ContactId']=_0x4440e8['ContactId'];this[_0x92b7('0x1f')]=_0x4440e8[_0x92b7('0x1f')];this[_0x92b7('0x20')]=_0x4440e8['UserId'];this['VoiceQueueId']=_0x4440e8[_0x92b7('0x21')];this[_0x92b7('0x22')]=_0x4440e8[_0x92b7('0x22')];this[_0x92b7('0x23')]=_0x4440e8[_0x92b7('0x23')]||'';this['originatecalleridname']=_0x4440e8[_0x92b7('0x24')]||'';this[_0x92b7('0x25')]=_0x4440e8[_0x92b7('0x25')];this[_0x92b7('0x26')]=_0x4440e8[_0x92b7('0x26')];this[_0x92b7('0x27')]=_0x4440e8[_0x92b7('0x27')];}module[_0x92b7('0x28')]=QueueCallerAbandon;
\ No newline at end of file
+var _0x54e7=['countabandonedretry','countmachineretry','countnosuchnumberretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','droptime','ringtime','getSeconds','holdtime','talktime','connectedlinename','reason','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','agiafterat','state','statedesc','exports','../utils','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry'];(function(_0x4c5feb,_0x5af0ab){var _0x49f7fc=function(_0x1192be){while(--_0x1192be){_0x4c5feb['push'](_0x4c5feb['shift']());}};_0x49f7fc(++_0x5af0ab);}(_0x54e7,0xa1));var _0x754e=function(_0x5eabaf,_0x6fc8be){_0x5eabaf=_0x5eabaf-0x0;var _0x59fe60=_0x54e7[_0x5eabaf];return _0x59fe60;};'use strict';var utils=require(_0x754e('0x0'));function QueueCallerAbandon(_0x44d453,_0x238d3a){this[_0x754e('0x1')]=_0x44d453[_0x754e('0x1')];this[_0x754e('0x2')]=_0x44d453['type'];this[_0x754e('0x3')]=_0x44d453[_0x754e('0x2')]===_0x754e('0x4')?_0x754e('0x5'):_0x44d453['type'];this[_0x754e('0x6')]=_0x44d453[_0x754e('0x6')];this[_0x754e('0x7')]=_0x44d453['countcongestionretry'];this[_0x754e('0x8')]=_0x44d453[_0x754e('0x8')];this[_0x754e('0x9')]=_0x44d453[_0x754e('0x6')]+_0x44d453['countcongestionretry']+_0x44d453[_0x754e('0x8')]+_0x44d453['countnosuchnumberretry']+_0x44d453[_0x754e('0xa')]+_0x44d453[_0x754e('0xb')]+_0x44d453[_0x754e('0xc')]+_0x44d453['countagentrejectretry'];this[_0x754e('0xd')]=_0x44d453[_0x754e('0xd')];this[_0x754e('0xa')]=_0x44d453[_0x754e('0xa')];this[_0x754e('0xb')]=_0x44d453['countabandonedretry'];this[_0x754e('0xc')]=_0x44d453[_0x754e('0xc')];this[_0x754e('0xe')]=_0x44d453[_0x754e('0xe')];this['uniqueid']=_0x238d3a[_0x754e('0xf')];this[_0x754e('0x10')]=_0x44d453[_0x754e('0x11')];this[_0x754e('0x12')]=_0x44d453[_0x754e('0x13')];this[_0x754e('0x14')]=_0x44d453[_0x754e('0x14')];this[_0x754e('0x15')]=_0x44d453['responsetime'];this[_0x754e('0x16')]=_0x44d453[_0x754e('0x16')];this['dropreason']=_0x44d453['dropreason'];this['endtime']=this['droptime'];this[_0x754e('0x17')]=utils[_0x754e('0x18')](_0x44d453['responsetime'],_0x44d453[_0x754e('0x14')]);this[_0x754e('0x19')]=utils['getSeconds'](this['droptime'],_0x44d453[_0x754e('0x15')]);this[_0x754e('0x1a')]=0x0;this[_0x754e('0x5')]=_0x238d3a['queue'];this['membername']=_0x238d3a[_0x754e('0x1b')];this[_0x754e('0x1c')]=_0x238d3a['reason'];this['callback']=_0x44d453['callback'];this['callbackuniqueid']=_0x44d453[_0x754e('0x1d')];this['callbackat']=_0x44d453[_0x754e('0x1e')];this[_0x754e('0x1f')]=_0x44d453[_0x754e('0x1f')];this[_0x754e('0x20')]=_0x44d453[_0x754e('0x20')];this[_0x754e('0x21')]=_0x44d453['ListId'];this['UserId']=_0x44d453[_0x754e('0x22')];this[_0x754e('0x23')]=_0x44d453[_0x754e('0x23')];this['CampaignId']=_0x44d453[_0x754e('0x24')];this[_0x754e('0x25')]=_0x44d453[_0x754e('0x25')]||'';this['originatecalleridname']=_0x44d453[_0x754e('0x26')]||'';this[_0x754e('0x27')]=_0x44d453[_0x754e('0x27')];this[_0x754e('0x28')]=_0x44d453['state'];this[_0x754e('0x29')]=_0x44d453[_0x754e('0x29')];}module[_0x754e('0x2a')]=QueueCallerAbandon;
\ No newline at end of file
index b36b0f2..cbf14fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb65=['../../../../config/logger','dialer','../../rpc/cmHopperAdditionalPhone','../../rpc/cmHopperHistory','inspect','catch','temp','error','getContactDialer','getContactDialerIvr','[getContactDialerIvr]','countReScheduled','[countReScheduled]','rescheduleContact','unlockContact','[unlockContact]','moveContactManagedDialer','checkIsBlackList','[checkIsBlackList]','checkIsBlackListIvr','[verifyAdditionalPhone]','verifyAdditionalPhones','swapAdditionalPhones','[swapAdditionalPhone]','avgHandleTime','[createHistory]'];(function(_0xa9eaa0,_0x4ba2b4){var _0x30897a=function(_0x2caa01){while(--_0x2caa01){_0xa9eaa0['push'](_0xa9eaa0['shift']());}};_0x30897a(++_0x4ba2b4);}(_0xfb65,0x82));var _0x5fb6=function(_0x15ddc9,_0x209223){_0x15ddc9=_0x15ddc9-0x0;var _0x2fc9e8=_0xfb65[_0x15ddc9];return _0x2fc9e8;};'use strict';var util=require('util');var logger=require(_0x5fb6('0x0'))(_0x5fb6('0x1'));var cmHopper=require('../../rpc/cmHopper');var cmHopperAdditionalPhone=require(_0x5fb6('0x2'));var cmHopperBlack=require('../../rpc/cmHopperBlack');var cmHopperHistory=require(_0x5fb6('0x3'));function inspectError(_0x15d15c){return util[_0x5fb6('0x4')](_0x15d15c,{'showHidden':![],'depth':null});}function getContactDialer(_0xb5f7c4,_0x3a3b1b,_0x1fefe3){return cmHopper['getContactDialer'](_0xb5f7c4['id'],_0x3a3b1b,_0x1fefe3,_0xb5f7c4['dialOrderByScheduledAt'])[_0x5fb6('0x5')](function(_0x1b586b){_0xb5f7c4[_0x5fb6('0x6')]=0x0;logger[_0x5fb6('0x7')]('[getContactDialer]',inspectError(_0x1b586b));});}exports[_0x5fb6('0x8')]=getContactDialer;function getContactDialerIvr(_0x29dd40,_0x46e061){return cmHopper[_0x5fb6('0x9')](_0x29dd40['id'],_0x46e061,_0x29dd40['dialOrderByScheduledAt'])[_0x5fb6('0x5')](function(_0xcf0402){_0x29dd40['temp']=0x0;logger[_0x5fb6('0x7')](_0x5fb6('0xa'),inspectError(_0xcf0402));});}exports[_0x5fb6('0x9')]=getContactDialerIvr;function countReScheduled(_0x41405c){return cmHopper[_0x5fb6('0xb')](_0x41405c)['catch'](function(_0x1927d0){logger[_0x5fb6('0x7')](_0x5fb6('0xc'),inspectError(_0x1927d0));});}exports[_0x5fb6('0xb')]=countReScheduled;function rescheduleContact(_0x6b58a2){return cmHopper[_0x5fb6('0xd')](_0x6b58a2)[_0x5fb6('0x5')](function(_0x1ded21){logger['error']('[rescheduleContact]',inspectError(_0x1ded21));});}exports[_0x5fb6('0xd')]=rescheduleContact;function unlockContact(_0xfaea56,_0x58febe,_0x1d57b1){return cmHopper[_0x5fb6('0xe')](_0xfaea56,_0x58febe,_0x1d57b1)[_0x5fb6('0x5')](function(_0x5d71c0){logger[_0x5fb6('0x7')](_0x5fb6('0xf'),inspectError(_0x5d71c0));});}exports[_0x5fb6('0xe')]=unlockContact;function moveContactManagedDialer(_0x182af5){return cmHopper[_0x5fb6('0x10')](_0x182af5)[_0x5fb6('0x5')](function(_0x50bca8){logger[_0x5fb6('0x7')]('[moveContactManagedDialer]',inspectError(_0x50bca8));});}exports[_0x5fb6('0x10')]=moveContactManagedDialer;function checkIsBlackList(_0x54c319){return cmHopperBlack[_0x5fb6('0x11')](_0x54c319)[_0x5fb6('0x5')](function(_0x402e8a){logger[_0x5fb6('0x7')](_0x5fb6('0x12'),inspectError(_0x402e8a));});}exports[_0x5fb6('0x11')]=checkIsBlackList;function checkIsBlackListIvr(_0x11c21b){return cmHopperBlack['checkIsBlackListIvr'](_0x11c21b)['catch'](function(_0xfd8d78){logger[_0x5fb6('0x7')]('[checkIsBlackListIvr]',inspectError(_0xfd8d78));});}exports[_0x5fb6('0x13')]=checkIsBlackListIvr;function verifyAdditionalPhones(_0xe58cb1,_0x331bba,_0x36457e){return cmHopperAdditionalPhone['verifyAdditionalPhones'](_0xe58cb1,_0x331bba,_0x36457e)[_0x5fb6('0x5')](function(_0x44aebe){logger[_0x5fb6('0x7')](_0x5fb6('0x14'),inspectError(_0x44aebe));});}exports[_0x5fb6('0x15')]=verifyAdditionalPhones;function swapAdditionalPhones(_0x1c1b96,_0x4e2bff,_0x4cbdaf){return cmHopperAdditionalPhone[_0x5fb6('0x16')](_0x1c1b96,_0x4e2bff,_0x4cbdaf)[_0x5fb6('0x5')](function(_0x92f94d){logger[_0x5fb6('0x7')](_0x5fb6('0x17'),inspectError(_0x92f94d));});}exports[_0x5fb6('0x16')]=swapAdditionalPhones;function avgHandleTime(_0x36ac58){return cmHopperHistory['avgHandleTime'](_0x36ac58)[_0x5fb6('0x5')](function(_0x3f9b86){logger[_0x5fb6('0x7')]('[avgHandleTime]',inspectError(_0x3f9b86));});}exports[_0x5fb6('0x18')]=avgHandleTime;function createHistory(_0x1b4ae4){return cmHopperHistory['createHistory'](_0x1b4ae4)[_0x5fb6('0x5')](function(_0x408fd9){logger['error'](_0x5fb6('0x19'),inspectError(_0x408fd9));});}exports['createHistory']=createHistory;
\ No newline at end of file
+var _0x32f4=['catch','[getContactDialerIvr]','countReScheduled','error','[rescheduleContact]','rescheduleContact','unlockContact','[unlockContact]','moveContactManagedDialer','[moveContactManagedDialer]','checkIsBlackList','[checkIsBlackList]','checkIsBlackListIvr','[verifyAdditionalPhone]','verifyAdditionalPhones','swapAdditionalPhones','[swapAdditionalPhone]','avgHandleTime','createHistory','[createHistory]','util','../../../../config/logger','dialer','../../rpc/cmHopper','../../rpc/cmHopperBlack','../../rpc/cmHopperHistory','inspect','getContactDialer','temp','[getContactDialer]','getContactDialerIvr','dialOrderByScheduledAt'];(function(_0x994fbd,_0x581e5d){var _0x1c1b10=function(_0x27fff9){while(--_0x27fff9){_0x994fbd['push'](_0x994fbd['shift']());}};_0x1c1b10(++_0x581e5d);}(_0x32f4,0x154));var _0x432f=function(_0x3a3b8d,_0x259d2a){_0x3a3b8d=_0x3a3b8d-0x0;var _0x5cc112=_0x32f4[_0x3a3b8d];return _0x5cc112;};'use strict';var util=require(_0x432f('0x0'));var logger=require(_0x432f('0x1'))(_0x432f('0x2'));var cmHopper=require(_0x432f('0x3'));var cmHopperAdditionalPhone=require('../../rpc/cmHopperAdditionalPhone');var cmHopperBlack=require(_0x432f('0x4'));var cmHopperHistory=require(_0x432f('0x5'));function inspectError(_0x51a71a){return util[_0x432f('0x6')](_0x51a71a,{'showHidden':![],'depth':null});}function getContactDialer(_0x1eabac,_0x344a29,_0x355b02){return cmHopper[_0x432f('0x7')](_0x1eabac['id'],_0x344a29,_0x355b02,_0x1eabac['dialOrderByScheduledAt'])['catch'](function(_0x2f66fd){_0x1eabac[_0x432f('0x8')]=0x0;logger['error'](_0x432f('0x9'),inspectError(_0x2f66fd));});}exports['getContactDialer']=getContactDialer;function getContactDialerIvr(_0x1cdcfd,_0x340fe9){return cmHopper[_0x432f('0xa')](_0x1cdcfd['id'],_0x340fe9,_0x1cdcfd[_0x432f('0xb')])[_0x432f('0xc')](function(_0x5d0155){_0x1cdcfd[_0x432f('0x8')]=0x0;logger['error'](_0x432f('0xd'),inspectError(_0x5d0155));});}exports['getContactDialerIvr']=getContactDialerIvr;function countReScheduled(_0x138967){return cmHopper[_0x432f('0xe')](_0x138967)['catch'](function(_0x457389){logger[_0x432f('0xf')]('[countReScheduled]',inspectError(_0x457389));});}exports[_0x432f('0xe')]=countReScheduled;function rescheduleContact(_0x26aa9a){return cmHopper['rescheduleContact'](_0x26aa9a)['catch'](function(_0x28d9e9){logger[_0x432f('0xf')](_0x432f('0x10'),inspectError(_0x28d9e9));});}exports[_0x432f('0x11')]=rescheduleContact;function unlockContact(_0x419bfe,_0x4f91c5,_0x175ba7){return cmHopper[_0x432f('0x12')](_0x419bfe,_0x4f91c5,_0x175ba7)[_0x432f('0xc')](function(_0x1504db){logger['error'](_0x432f('0x13'),inspectError(_0x1504db));});}exports[_0x432f('0x12')]=unlockContact;function moveContactManagedDialer(_0x42c2d2){return cmHopper[_0x432f('0x14')](_0x42c2d2)[_0x432f('0xc')](function(_0x129582){logger['error'](_0x432f('0x15'),inspectError(_0x129582));});}exports['moveContactManagedDialer']=moveContactManagedDialer;function checkIsBlackList(_0x3d545d){return cmHopperBlack[_0x432f('0x16')](_0x3d545d)[_0x432f('0xc')](function(_0x391fd8){logger[_0x432f('0xf')](_0x432f('0x17'),inspectError(_0x391fd8));});}exports[_0x432f('0x16')]=checkIsBlackList;function checkIsBlackListIvr(_0x1899e6){return cmHopperBlack[_0x432f('0x18')](_0x1899e6)[_0x432f('0xc')](function(_0x40176d){logger[_0x432f('0xf')]('[checkIsBlackListIvr]',inspectError(_0x40176d));});}exports['checkIsBlackListIvr']=checkIsBlackListIvr;function verifyAdditionalPhones(_0x343d13,_0x5c4deb,_0x28968e){return cmHopperAdditionalPhone['verifyAdditionalPhones'](_0x343d13,_0x5c4deb,_0x28968e)[_0x432f('0xc')](function(_0x175d1b){logger[_0x432f('0xf')](_0x432f('0x19'),inspectError(_0x175d1b));});}exports[_0x432f('0x1a')]=verifyAdditionalPhones;function swapAdditionalPhones(_0x1e347a,_0x59f352,_0x252b3b){return cmHopperAdditionalPhone[_0x432f('0x1b')](_0x1e347a,_0x59f352,_0x252b3b)['catch'](function(_0x2cbde9){logger[_0x432f('0xf')](_0x432f('0x1c'),inspectError(_0x2cbde9));});}exports[_0x432f('0x1b')]=swapAdditionalPhones;function avgHandleTime(_0x44839){return cmHopperHistory[_0x432f('0x1d')](_0x44839)[_0x432f('0xc')](function(_0x5a3d18){logger[_0x432f('0xf')]('[avgHandleTime]',inspectError(_0x5a3d18));});}exports[_0x432f('0x1d')]=avgHandleTime;function createHistory(_0x573cc5){return cmHopperHistory[_0x432f('0x1e')](_0x573cc5)['catch'](function(_0x3f768b){logger['error'](_0x432f('0x1f'),inspectError(_0x3f768b));});}exports[_0x432f('0x1e')]=createHistory;
\ No newline at end of file
index add004f..4996fc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4095=['getQueueCampaignActiveStatusMessage','match','isUndefined','string','format','\x22%s\x22\x20<%s>','getCallerId','\x5cw{0,','pow','replace','random','toString','getCallerIdRandom','[decrementOriginate]\x20queue\x20originate\x20value\x20is\x20negative','decrementOriginate','length','checkContactEmpty','checkContactLowerLimitOriginate','createdAt','tags','updatedAt','undefined','%s%s','XMD-','toUpperCase','setXMDContactVariables','lodash','util','../../../../config/logger','../../../../config/environment/shared','RESCHEDULED_CONTACTS','DEACTIVATED','INTERVAL_IS_EMPTY','NOT_ACTIVE','AGENTS_NOT_LOGGED','AVAILABLE_CONTACTS_FINISHED','INTERVAL_IS_OVERTIME','GLOBAL_INTERVAL_IS_OVERTIME','RUNNING','TIMEZONE_UNKNOW','TRUNK_IS_NOT_REACHABLE','dialMethod','type','outbound','dialActive','isQueueCampaignActive','active','isIVRCampaignActive','milliseconds','diff','seconds','message','available','loggedIn','loggedInDb','paused','talking','pTalking','waiting','inUse','originated','name','Trunk','hasQueueCampaignDataChanged','dialTimezone','isNil','Interval','NULL_INTERVAL','isEmpty','Intervals','EMPTY_INTERVAL','UNKNOWN_TIMEZONE','SIP/','reachable','unmonitored','status','TrunkBackup','includes','INACTIVE','DISACTIVED','NO_AGENTS_LOGGED','getQueueCampaignStatusMessage'];(function(_0x3ff332,_0x145564){var _0x5a2264=function(_0x36e730){while(--_0x36e730){_0x3ff332['push'](_0x3ff332['shift']());}};_0x5a2264(++_0x145564);}(_0x4095,0xbe));var _0x5409=function(_0x3de8a4,_0x289a5c){_0x3de8a4=_0x3de8a4-0x0;var _0x4635cf=_0x4095[_0x3de8a4];return _0x4635cf;};'use strict';var _=require(_0x5409('0x0'));var moment=require('moment');var util=require(_0x5409('0x1'));var logger=require(_0x5409('0x2'))('dialer');var timezones=require(_0x5409('0x3'))['timezones'];var CAMPAIGN_STATUS={'ACTIVE':'ACTIVE','BLACKLIST':'BLACKLIST','CONTACTS_RESCHEDULED':_0x5409('0x4'),'DEACTIVATED':_0x5409('0x5'),'DISACTIVED':'IS_DISACTIVED','EMPTY_INTERVAL':_0x5409('0x6'),'INACTIVE':_0x5409('0x7'),'NO_AGENTS_LOGGED':_0x5409('0x8'),'NO_AVAILABLE_CONTACTS':_0x5409('0x9'),'NULL_INTERVAL':'INTERVAL_IS_NULL','OVERTIME_INTERVAL':_0x5409('0xa'),'OVERTIME_GLOBAL_INTERVAL':_0x5409('0xb'),'QUEUE_RECALL':'RECALLINQUEUE','RECALL_TIMEOUT':'RECALLFAILEDTIMEOUT','RUNNING':_0x5409('0xc'),'UNKNOWN_TIMEZONE':_0x5409('0xd'),'UNREACHABLE_TRUNK':_0x5409('0xe')};exports['CAMPAIGN_STATUS']=CAMPAIGN_STATUS;function isPreviewCampaign(_0x4a451d){return _0x4a451d[_0x5409('0xf')]==='preview';}exports['isPreviewCampaign']=isPreviewCampaign;function isIVRCampaign(_0x3605df){return _0x3605df['type']==='ivr';}exports['isIVRCampaign']=isIVRCampaign;function isOutboundQueue(_0x16b506){return _0x16b506[_0x5409('0x10')]===_0x5409('0x11');}exports['isOutboundQueue']=isOutboundQueue;function isQueueCampaignActive(_0x32889a){return _0x32889a[_0x5409('0x12')];}exports[_0x5409('0x13')]=isQueueCampaignActive;function isIVRCampaignActive(_0x276d3d){return _0x276d3d[_0x5409('0x14')];}exports[_0x5409('0x15')]=isIVRCampaignActive;function getSeconds(_0x517ba2,_0x2735e0){var _0x153028=moment(_0x517ba2)['milliseconds'](0x0);var _0x1b95e5=moment(_0x2735e0)[_0x5409('0x16')](0x0);return _0x153028[_0x5409('0x17')](_0x1b95e5,_0x5409('0x18'));}exports['getSeconds']=getSeconds;function hasQueueCampaignDataChanged(_0x3c24e9,_0xaf5539){var _0x74a641=![];var _0xc78fba=_0x3c24e9[_0x5409('0xf')]!==_0xaf5539[_0x5409('0xf')]||_0x3c24e9['dialActive']!==_0xaf5539[_0x5409('0x12')]||_0x3c24e9['message']!==_0xaf5539[_0x5409('0x19')];var _0x449a28=_0x3c24e9[_0x5409('0x1a')]!==_0xaf5539['available']||_0x3c24e9[_0x5409('0x1b')]!==_0xaf5539[_0x5409('0x1b')]||_0x3c24e9[_0x5409('0x1c')]!==_0xaf5539[_0x5409('0x1c')]||_0x3c24e9[_0x5409('0x1d')]!==_0xaf5539[_0x5409('0x1d')]||_0x3c24e9[_0x5409('0x1e')]!==_0xaf5539['talking']||_0x3c24e9[_0x5409('0x1f')]!==_0xaf5539['pTalking']||_0x3c24e9[_0x5409('0x20')]!==_0xaf5539['waiting']||_0x3c24e9[_0x5409('0x21')]!==_0xaf5539['inUse']||_0x3c24e9[_0x5409('0x22')]!==_0xaf5539[_0x5409('0x22')];if(_0x3c24e9['Trunk']&&_0xaf5539['Trunk']){_0x74a641=_0x3c24e9['Trunk'][_0x5409('0x23')]!==_0xaf5539[_0x5409('0x24')][_0x5409('0x23')]||_0x3c24e9['Trunk'][_0x5409('0x14')]!==_0xaf5539[_0x5409('0x24')][_0x5409('0x14')];}return _0xc78fba||_0x449a28||_0x74a641;}exports[_0x5409('0x25')]=hasQueueCampaignDataChanged;function checkAnyValidQueueCampaignInterval(_0x3c28c9){var _0x91f685=null;var _0x4a801c=_0x3c28c9[_0x5409('0x26')];if(_['isNil'](_0x3c28c9['dialGlobalInterval'])||_[_0x5409('0x27')](_0x3c28c9[_0x5409('0x28')])||_[_0x5409('0x27')](_0x3c28c9[_0x5409('0x28')]['Intervals'])){_0x91f685=CAMPAIGN_STATUS[_0x5409('0x29')];}else if(_[_0x5409('0x2a')](_0x3c28c9['dialGlobalInterval'])||_[_0x5409('0x2a')](_0x3c28c9[_0x5409('0x28')][_0x5409('0x2b')])){_0x91f685=CAMPAIGN_STATUS[_0x5409('0x2c')];}else if(_0x4a801c&&!timezones[_0x4a801c]){_0x91f685=CAMPAIGN_STATUS[_0x5409('0x2d')];}return _0x91f685;}function checkAnyValidTrunk(_0x115fd,_0x186b3b){var _0x2e0279=null;var _0x33c58e=_0x5409('0x2e');var _0x31276d=[_0x5409('0x2f'),_0x5409('0x30')];var _0x24782e=!![];if(_0x115fd[_0x5409('0x24')]&&_0x115fd[_0x5409('0x24')]['active']){_0x33c58e+=_0x115fd[_0x5409('0x24')][_0x5409('0x23')];_0x2e0279=_0x186b3b[_0x33c58e];_0x24782e=_0x31276d['includes'](_0x2e0279[_0x5409('0x31')]);}else if(_0x115fd[_0x5409('0x32')]&&_0x115fd[_0x5409('0x32')][_0x5409('0x14')]){_0x33c58e+=_0x115fd['TrunkBackup'][_0x5409('0x23')];_0x2e0279=_0x186b3b[_0x33c58e];_0x24782e=_0x31276d[_0x5409('0x33')](_0x2e0279['status']);}return _0x24782e;}function getQueueCampaignStatusMessage(_0x1ab03d,_0x1ccfaf){var _0x188985=CAMPAIGN_STATUS['ACTIVE'];var _0xe7e85f=isPreviewCampaign(_0x1ab03d);if(!isQueueCampaignActive(_0x1ab03d)){if(_0xe7e85f){_0x188985=CAMPAIGN_STATUS[_0x5409('0x34')];}else{if(_0x1ab03d[_0x5409('0x22')]===0x0&&_0x1ab03d[_0x5409('0x1e')]===0x0&&_0x1ab03d[_0x5409('0x20')]===0x0&&(_0x1ab03d[_0x5409('0x1f')]||0x0)===0x0){_0x188985=CAMPAIGN_STATUS[_0x5409('0x34')];}else{_0x188985=CAMPAIGN_STATUS[_0x5409('0x35')];}}}else if(_0x1ab03d['loggedIn']===0x0){_0x188985=CAMPAIGN_STATUS[_0x5409('0x36')];}else if(!checkAnyValidTrunk(_0x1ab03d,_0x1ccfaf)){_0x188985=CAMPAIGN_STATUS['UNREACHABLE_TRUNK'];}else if(!isPreviewCampaign(_0x1ab03d)){var _0xa2eae8=checkAnyValidQueueCampaignInterval(_0x1ab03d);if(_0xa2eae8){_0x188985=_0xa2eae8;}}return _0x188985;}exports[_0x5409('0x37')]=getQueueCampaignStatusMessage;function getQueueCampaignActiveStatusMessage(_0xa6faee){var _0x4a2874=CAMPAIGN_STATUS[_0x5409('0x35')];if(_0xa6faee[_0x5409('0x22')]===0x0&&_0xa6faee[_0x5409('0x1e')]===0x0&&_0xa6faee['waiting']===0x0&&(_0xa6faee[_0x5409('0x1f')]||0x0)===0x0){_0x4a2874=CAMPAIGN_STATUS[_0x5409('0x34')];}return _0x4a2874;}exports[_0x5409('0x38')]=getQueueCampaignActiveStatusMessage;function extractCalleridName(_0x266a81){var _0x55ad2d=_0x266a81[_0x5409('0x39')](/"(.*?)"/);return _0x55ad2d?_0x55ad2d[0x1]:_0x266a81;}exports['extractCalleridName']=extractCalleridName;function getCallerId(_0x502136,_0x393a40,_0x4b48c7){if(!_[_0x5409('0x3a')](_0x4b48c7)&&typeof _0x4b48c7==='string'&&!_[_0x5409('0x2a')](_0x4b48c7)){if(!_['isUndefined'](_0x393a40)&&typeof _0x393a40===_0x5409('0x3b')&&!_[_0x5409('0x2a')](_0x393a40)){return util[_0x5409('0x3c')](_0x5409('0x3d'),_0x393a40,_0x4b48c7);}return util[_0x5409('0x3c')]('\x22%s\x22\x20<%s>',_0x4b48c7,_0x4b48c7);}if(!_[_0x5409('0x3a')](_0x502136)&&typeof _0x502136===_0x5409('0x3b')&&!_['isEmpty'](_0x502136)){return _0x502136;}return'\x22\x22\x20<>';}exports[_0x5409('0x3e')]=getCallerId;function getCallerIdRandom(_0x27deb8,_0x30c6e9){var _0x24e8ef;var _0x2e023b;var _0x5c9505;if(_0x30c6e9<=0x0){_0x30c6e9=0x1;}_0x24e8ef=new RegExp(_0x5409('0x3f')+_0x30c6e9+'}$');_0x2e023b=Math[_0x5409('0x40')](0xa,_0x30c6e9-0x1);_0x5c9505=Math[_0x5409('0x40')](0xa,_0x30c6e9)-0x1;return util[_0x5409('0x3c')]('%s',_[_0x5409('0x41')](_0x27deb8,_0x24e8ef,_[_0x5409('0x42')](_0x2e023b,_0x5c9505)[_0x5409('0x43')]()));}exports[_0x5409('0x44')]=getCallerIdRandom;function decrementOriginate(_0x9db1b5){if(_0x9db1b5[_0x5409('0x22')]&&_0x9db1b5['originated']>0x0){_0x9db1b5[_0x5409('0x22')]-=0x1;}else{logger['error'](_0x5409('0x45'));}}exports[_0x5409('0x46')]=decrementOriginate;function checkContactEmpty(_0x42e132){return _0x42e132&&_0x42e132[_0x5409('0x47')]>0x0;}exports[_0x5409('0x48')]=checkContactEmpty;function erlangb(_0x4ed137,_0x42b0e5){if(_0x42b0e5===0x0){return 0x0;}var _0x513933=0x1;for(var _0x734546=0x1;_0x734546<=_0x42b0e5;_0x734546+=0x1){_0x513933=0x1+_0x513933*_0x734546/_0x4ed137;}return 0x1/_0x513933;}exports['erlangb']=erlangb;function checkContactLowerLimitOriginate(_0x4bdc23,_0x255a4a,_0x58e5a9){if(_0x255a4a>_0x58e5a9){for(var _0x1c61f7=0x0;_0x1c61f7<_0x255a4a-_0x58e5a9;_0x1c61f7+=0x1){decrementOriginate(_0x4bdc23);}}}exports[_0x5409('0x49')]=checkContactLowerLimitOriginate;function setXMDContactVariables(_0x3d6d60){var _0x167753={};var _0x40668e=['id',_0x5409('0x4a'),'description',_0x5409('0x4b'),_0x5409('0x4c')];if(_0x3d6d60){for(var _0x37abe9 in _0x3d6d60){if(typeof _0x3d6d60[_0x37abe9]!==_0x5409('0x4d')){if(!_[_0x5409('0x27')](_0x3d6d60[_0x37abe9])&&!_0x40668e[_0x5409('0x33')](_0x37abe9)){_0x167753[util[_0x5409('0x3c')](_0x5409('0x4e'),_0x5409('0x4f'),_0x37abe9[_0x5409('0x50')]())]=_0x3d6d60[_0x37abe9];}}}}return _0x167753;}exports[_0x5409('0x51')]=setXMDContactVariables;
\ No newline at end of file
+var _0x4e4f=['toUpperCase','setXMDContactVariables','moment','util','../../../../config/logger','dialer','ACTIVE','BLACKLIST','RESCHEDULED_CONTACTS','DEACTIVATED','IS_DISACTIVED','INTERVAL_IS_EMPTY','NOT_ACTIVE','INTERVAL_IS_NULL','INTERVAL_IS_OVERTIME','GLOBAL_INTERVAL_IS_OVERTIME','RECALLINQUEUE','RECALLFAILEDTIMEOUT','RUNNING','TIMEZONE_UNKNOW','dialMethod','preview','isPreviewCampaign','ivr','type','outbound','isQueueCampaignActive','active','isIVRCampaignActive','milliseconds','getSeconds','dialActive','message','available','loggedIn','loggedInDb','paused','talking','pTalking','waiting','inUse','Trunk','name','dialTimezone','isNil','dialGlobalInterval','Interval','NULL_INTERVAL','isEmpty','UNKNOWN_TIMEZONE','SIP/','unmonitored','includes','status','TrunkBackup','INACTIVE','originated','DISACTIVED','NO_AGENTS_LOGGED','UNREACHABLE_TRUNK','getQueueCampaignStatusMessage','match','extractCalleridName','isUndefined','string','\x22%s\x22\x20<%s>','format','\x22\x22\x20<>','getCallerId','\x5cw{0,','pow','replace','random','getCallerIdRandom','error','decrementOriginate','length','checkContactEmpty','erlangb','checkContactLowerLimitOriginate','createdAt','description','tags','undefined','XMD-'];(function(_0x3b92c1,_0x180bbb){var _0x1c726=function(_0x513dad){while(--_0x513dad){_0x3b92c1['push'](_0x3b92c1['shift']());}};_0x1c726(++_0x180bbb);}(_0x4e4f,0x1ab));var _0xf4e4=function(_0x38a704,_0x3c06e2){_0x38a704=_0x38a704-0x0;var _0x2afbd3=_0x4e4f[_0x38a704];return _0x2afbd3;};'use strict';var _=require('lodash');var moment=require(_0xf4e4('0x0'));var util=require(_0xf4e4('0x1'));var logger=require(_0xf4e4('0x2'))(_0xf4e4('0x3'));var timezones=require('../../../../config/environment/shared')['timezones'];var CAMPAIGN_STATUS={'ACTIVE':_0xf4e4('0x4'),'BLACKLIST':_0xf4e4('0x5'),'CONTACTS_RESCHEDULED':_0xf4e4('0x6'),'DEACTIVATED':_0xf4e4('0x7'),'DISACTIVED':_0xf4e4('0x8'),'EMPTY_INTERVAL':_0xf4e4('0x9'),'INACTIVE':_0xf4e4('0xa'),'NO_AGENTS_LOGGED':'AGENTS_NOT_LOGGED','NO_AVAILABLE_CONTACTS':'AVAILABLE_CONTACTS_FINISHED','NULL_INTERVAL':_0xf4e4('0xb'),'OVERTIME_INTERVAL':_0xf4e4('0xc'),'OVERTIME_GLOBAL_INTERVAL':_0xf4e4('0xd'),'QUEUE_RECALL':_0xf4e4('0xe'),'RECALL_TIMEOUT':_0xf4e4('0xf'),'RUNNING':_0xf4e4('0x10'),'UNKNOWN_TIMEZONE':_0xf4e4('0x11'),'UNREACHABLE_TRUNK':'TRUNK_IS_NOT_REACHABLE'};exports['CAMPAIGN_STATUS']=CAMPAIGN_STATUS;function isPreviewCampaign(_0x4c5773){return _0x4c5773[_0xf4e4('0x12')]===_0xf4e4('0x13');}exports[_0xf4e4('0x14')]=isPreviewCampaign;function isIVRCampaign(_0xb53b76){return _0xb53b76['type']===_0xf4e4('0x15');}exports['isIVRCampaign']=isIVRCampaign;function isOutboundQueue(_0x55c332){return _0x55c332[_0xf4e4('0x16')]===_0xf4e4('0x17');}exports['isOutboundQueue']=isOutboundQueue;function isQueueCampaignActive(_0x3b3422){return _0x3b3422['dialActive'];}exports[_0xf4e4('0x18')]=isQueueCampaignActive;function isIVRCampaignActive(_0x1ce80e){return _0x1ce80e[_0xf4e4('0x19')];}exports[_0xf4e4('0x1a')]=isIVRCampaignActive;function getSeconds(_0x231f02,_0x42038b){var _0x2b1198=moment(_0x231f02)['milliseconds'](0x0);var _0x8d0be0=moment(_0x42038b)[_0xf4e4('0x1b')](0x0);return _0x2b1198['diff'](_0x8d0be0,'seconds');}exports[_0xf4e4('0x1c')]=getSeconds;function hasQueueCampaignDataChanged(_0x3be2cb,_0x8d5b42){var _0x1cdfd2=![];var _0xf9790c=_0x3be2cb[_0xf4e4('0x12')]!==_0x8d5b42['dialMethod']||_0x3be2cb[_0xf4e4('0x1d')]!==_0x8d5b42[_0xf4e4('0x1d')]||_0x3be2cb[_0xf4e4('0x1e')]!==_0x8d5b42[_0xf4e4('0x1e')];var _0x4a6ad0=_0x3be2cb[_0xf4e4('0x1f')]!==_0x8d5b42['available']||_0x3be2cb[_0xf4e4('0x20')]!==_0x8d5b42[_0xf4e4('0x20')]||_0x3be2cb[_0xf4e4('0x21')]!==_0x8d5b42[_0xf4e4('0x21')]||_0x3be2cb[_0xf4e4('0x22')]!==_0x8d5b42['paused']||_0x3be2cb[_0xf4e4('0x23')]!==_0x8d5b42['talking']||_0x3be2cb['pTalking']!==_0x8d5b42[_0xf4e4('0x24')]||_0x3be2cb['waiting']!==_0x8d5b42[_0xf4e4('0x25')]||_0x3be2cb[_0xf4e4('0x26')]!==_0x8d5b42[_0xf4e4('0x26')]||_0x3be2cb['originated']!==_0x8d5b42['originated'];if(_0x3be2cb[_0xf4e4('0x27')]&&_0x8d5b42[_0xf4e4('0x27')]){_0x1cdfd2=_0x3be2cb[_0xf4e4('0x27')]['name']!==_0x8d5b42['Trunk'][_0xf4e4('0x28')]||_0x3be2cb[_0xf4e4('0x27')][_0xf4e4('0x19')]!==_0x8d5b42[_0xf4e4('0x27')][_0xf4e4('0x19')];}return _0xf9790c||_0x4a6ad0||_0x1cdfd2;}exports['hasQueueCampaignDataChanged']=hasQueueCampaignDataChanged;function checkAnyValidQueueCampaignInterval(_0x9f0fbf){var _0x3bf21b=null;var _0x281b60=_0x9f0fbf[_0xf4e4('0x29')];if(_[_0xf4e4('0x2a')](_0x9f0fbf[_0xf4e4('0x2b')])||_[_0xf4e4('0x2a')](_0x9f0fbf[_0xf4e4('0x2c')])||_[_0xf4e4('0x2a')](_0x9f0fbf['Interval']['Intervals'])){_0x3bf21b=CAMPAIGN_STATUS[_0xf4e4('0x2d')];}else if(_['isEmpty'](_0x9f0fbf['dialGlobalInterval'])||_[_0xf4e4('0x2e')](_0x9f0fbf[_0xf4e4('0x2c')]['Intervals'])){_0x3bf21b=CAMPAIGN_STATUS['EMPTY_INTERVAL'];}else if(_0x281b60&&!timezones[_0x281b60]){_0x3bf21b=CAMPAIGN_STATUS[_0xf4e4('0x2f')];}return _0x3bf21b;}function checkAnyValidTrunk(_0x2867ef,_0x3a8b3a){var _0xb5b327=null;var _0x163a13=_0xf4e4('0x30');var _0x24fea4=['reachable',_0xf4e4('0x31')];var _0x45c301=!![];if(_0x2867ef['Trunk']&&_0x2867ef[_0xf4e4('0x27')][_0xf4e4('0x19')]){_0x163a13+=_0x2867ef['Trunk']['name'];_0xb5b327=_0x3a8b3a[_0x163a13];_0x45c301=_0x24fea4[_0xf4e4('0x32')](_0xb5b327[_0xf4e4('0x33')]);}else if(_0x2867ef[_0xf4e4('0x34')]&&_0x2867ef[_0xf4e4('0x34')][_0xf4e4('0x19')]){_0x163a13+=_0x2867ef['TrunkBackup'][_0xf4e4('0x28')];_0xb5b327=_0x3a8b3a[_0x163a13];_0x45c301=_0x24fea4[_0xf4e4('0x32')](_0xb5b327[_0xf4e4('0x33')]);}return _0x45c301;}function getQueueCampaignStatusMessage(_0x122438,_0x4f2d96){var _0x5cf906=CAMPAIGN_STATUS[_0xf4e4('0x4')];var _0x1cfa1a=isPreviewCampaign(_0x122438);if(!isQueueCampaignActive(_0x122438)){if(_0x1cfa1a){_0x5cf906=CAMPAIGN_STATUS[_0xf4e4('0x35')];}else{if(_0x122438[_0xf4e4('0x36')]===0x0&&_0x122438['talking']===0x0&&_0x122438['waiting']===0x0&&(_0x122438[_0xf4e4('0x24')]||0x0)===0x0){_0x5cf906=CAMPAIGN_STATUS['INACTIVE'];}else{_0x5cf906=CAMPAIGN_STATUS[_0xf4e4('0x37')];}}}else if(_0x122438[_0xf4e4('0x20')]===0x0){_0x5cf906=CAMPAIGN_STATUS[_0xf4e4('0x38')];}else if(!checkAnyValidTrunk(_0x122438,_0x4f2d96)){_0x5cf906=CAMPAIGN_STATUS[_0xf4e4('0x39')];}else if(!isPreviewCampaign(_0x122438)){var _0x4d4258=checkAnyValidQueueCampaignInterval(_0x122438);if(_0x4d4258){_0x5cf906=_0x4d4258;}}return _0x5cf906;}exports[_0xf4e4('0x3a')]=getQueueCampaignStatusMessage;function getQueueCampaignActiveStatusMessage(_0x2f8d8a){var _0x5b9954=CAMPAIGN_STATUS[_0xf4e4('0x37')];if(_0x2f8d8a[_0xf4e4('0x36')]===0x0&&_0x2f8d8a[_0xf4e4('0x23')]===0x0&&_0x2f8d8a['waiting']===0x0&&(_0x2f8d8a[_0xf4e4('0x24')]||0x0)===0x0){_0x5b9954=CAMPAIGN_STATUS[_0xf4e4('0x35')];}return _0x5b9954;}exports['getQueueCampaignActiveStatusMessage']=getQueueCampaignActiveStatusMessage;function extractCalleridName(_0x4c7f7a){var _0x1c3d66=_0x4c7f7a[_0xf4e4('0x3b')](/"(.*?)"/);return _0x1c3d66?_0x1c3d66[0x1]:_0x4c7f7a;}exports[_0xf4e4('0x3c')]=extractCalleridName;function getCallerId(_0x1a86a4,_0x84dc99,_0x3ad0ce){if(!_[_0xf4e4('0x3d')](_0x3ad0ce)&&typeof _0x3ad0ce===_0xf4e4('0x3e')&&!_[_0xf4e4('0x2e')](_0x3ad0ce)){if(!_[_0xf4e4('0x3d')](_0x84dc99)&&typeof _0x84dc99==='string'&&!_['isEmpty'](_0x84dc99)){return util['format'](_0xf4e4('0x3f'),_0x84dc99,_0x3ad0ce);}return util[_0xf4e4('0x40')]('\x22%s\x22\x20<%s>',_0x3ad0ce,_0x3ad0ce);}if(!_['isUndefined'](_0x1a86a4)&&typeof _0x1a86a4===_0xf4e4('0x3e')&&!_[_0xf4e4('0x2e')](_0x1a86a4)){return _0x1a86a4;}return _0xf4e4('0x41');}exports[_0xf4e4('0x42')]=getCallerId;function getCallerIdRandom(_0x169803,_0x40956c){var _0x2c12ca;var _0x58491f;var _0x5bdfcd;if(_0x40956c<=0x0){_0x40956c=0x1;}_0x2c12ca=new RegExp(_0xf4e4('0x43')+_0x40956c+'}$');_0x58491f=Math[_0xf4e4('0x44')](0xa,_0x40956c-0x1);_0x5bdfcd=Math[_0xf4e4('0x44')](0xa,_0x40956c)-0x1;return util[_0xf4e4('0x40')]('%s',_[_0xf4e4('0x45')](_0x169803,_0x2c12ca,_[_0xf4e4('0x46')](_0x58491f,_0x5bdfcd)['toString']()));}exports[_0xf4e4('0x47')]=getCallerIdRandom;function decrementOriginate(_0x356e12){if(_0x356e12[_0xf4e4('0x36')]&&_0x356e12[_0xf4e4('0x36')]>0x0){_0x356e12[_0xf4e4('0x36')]-=0x1;}else{logger[_0xf4e4('0x48')]('[decrementOriginate]\x20queue\x20originate\x20value\x20is\x20negative');}}exports[_0xf4e4('0x49')]=decrementOriginate;function checkContactEmpty(_0x181dec){return _0x181dec&&_0x181dec[_0xf4e4('0x4a')]>0x0;}exports[_0xf4e4('0x4b')]=checkContactEmpty;function erlangb(_0x25557c,_0x525379){if(_0x525379===0x0){return 0x0;}var _0x4a8805=0x1;for(var _0xffde27=0x1;_0xffde27<=_0x525379;_0xffde27+=0x1){_0x4a8805=0x1+_0x4a8805*_0xffde27/_0x25557c;}return 0x1/_0x4a8805;}exports[_0xf4e4('0x4c')]=erlangb;function checkContactLowerLimitOriginate(_0x19bd28,_0x10ad34,_0x1b84f8){if(_0x10ad34>_0x1b84f8){for(var _0x1d4486=0x0;_0x1d4486<_0x10ad34-_0x1b84f8;_0x1d4486+=0x1){decrementOriginate(_0x19bd28);}}}exports[_0xf4e4('0x4d')]=checkContactLowerLimitOriginate;function setXMDContactVariables(_0x2eaa05){var _0x435efc={};var _0x28ac0c=['id',_0xf4e4('0x4e'),_0xf4e4('0x4f'),_0xf4e4('0x50'),'updatedAt'];if(_0x2eaa05){for(var _0x5545cd in _0x2eaa05){if(typeof _0x2eaa05[_0x5545cd]!==_0xf4e4('0x51')){if(!_[_0xf4e4('0x2a')](_0x2eaa05[_0x5545cd])&&!_0x28ac0c['includes'](_0x5545cd)){_0x435efc[util[_0xf4e4('0x40')]('%s%s',_0xf4e4('0x52'),_0x5545cd[_0xf4e4('0x53')]())]=_0x2eaa05[_0x5545cd];}}}}return _0x435efc;}exports[_0xf4e4('0x54')]=setXMDContactVariables;
\ No newline at end of file
index 349f857..cb671c4 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(_0x2969a1,_0x19f50f){var _0x19f57e=function(_0x402bcb){while(--_0x402bcb){_0x2969a1['push'](_0x2969a1['shift']());}};_0x19f57e(++_0x19f50f);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xa9e0[_0xf50820];return _0x2a9b10;};'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(_0x173e21,_0x150ce1){var _0x5621c4=function(_0x17f680){while(--_0x17f680){_0x173e21['push'](_0x173e21['shift']());}};_0x5621c4(++_0x150ce1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xa9e0[_0x2a6809];return _0x11c371;};'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 1dd9a15..30f6641 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dae=['Action','variablesAction','execOriginate','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','exports','util','lodash','bluebird','uuid','moment','path','tiff2pdf','fax','../ami','./rpcDb','./util/util','./action','../rpc/faxAccount','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','syncNewState','syncNewExten','faxstatus','syncFaxStatus','receivefax','hangup','syncOriginateResponse','prototype','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','channel','info','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc','operation','status','filename','\x20syncFaxStatus\x20','syncReceiveFax','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','name','.pdf','then','catch','stringify','\x20receiveFax\x20','merge','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate2]','updateStatus','finally','[Fax][Message][NoUpdate2]','syncHangup','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxstatusstring','send','FaxAccountId','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkTrunk','isValid','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','%s/%s.tif'];(function(_0x323367,_0x47d37a){var _0x59bd4f=function(_0x585823){while(--_0x585823){_0x323367['push'](_0x323367['shift']());}};_0x59bd4f(++_0x47d37a);}(_0x2dae,0xe7));var _0xe2da=function(_0x2892da,_0x191a40){_0x2892da=_0x2892da-0x0;var _0x28cff2=_0x2dae[_0x2892da];return _0x28cff2;};'use strict';var util=require(_0xe2da('0x0'));var _=require(_0xe2da('0x1'));var BPromise=require(_0xe2da('0x2'));var uuid=require(_0xe2da('0x3'));var moment=require(_0xe2da('0x4'));var path=require(_0xe2da('0x5'));var tiff2pdf=require(_0xe2da('0x6'));var gs=require('./util/gs');var logger=require('../../../config/logger')(_0xe2da('0x7'));var ami=require(_0xe2da('0x8'));var rpcDb=require(_0xe2da('0x9'));var Channel=require('./channel');var ut=require(_0xe2da('0xa'));var Action=require(_0xe2da('0xb'));var faxAccount=require(_0xe2da('0xc'));var attachment=require('../rpc/attachment');var faxMessage=require('../rpc/faxMessage');function Fax(_0x4458d1){this[_0xe2da('0xd')]={};this[_0xe2da('0xe')]=_0x4458d1[_0xe2da('0xe')];this[_0xe2da('0xf')]=_0x4458d1[_0xe2da('0xf')];this[_0xe2da('0x10')]={};ami['on'](_0xe2da('0x11'),this[_0xe2da('0x12')][_0xe2da('0x13')](this));ami['on'](_0xe2da('0x14'),this[_0xe2da('0x15')][_0xe2da('0x13')](this));ami['on']('newstate',this[_0xe2da('0x16')]['bind'](this));ami['on']('newexten',this[_0xe2da('0x17')][_0xe2da('0x13')](this));ami['on'](_0xe2da('0x18'),this[_0xe2da('0x19')][_0xe2da('0x13')](this));ami['on'](_0xe2da('0x1a'),this['syncReceiveFax'][_0xe2da('0x13')](this));ami['on'](_0xe2da('0x1b'),this['syncHangup']['bind'](this));ami['on']('originateresponse',this[_0xe2da('0x1c')]['bind'](this));}Fax[_0xe2da('0x1d')][_0xe2da('0x12')]=function(_0x552042){if(_0x552042['context']===_0xe2da('0x1e')){for(var _0xac75a9 in this[_0xe2da('0xe')]){if(this[_0xe2da('0xe')][_0xe2da('0x1f')](_0xac75a9)){if(_0x552042[_0xe2da('0x20')]===this['faxAccounts'][_0xac75a9][_0xe2da('0x21')]){this['channels'][_0x552042[_0xe2da('0x22')]]={};this['channels'][_0x552042['uniqueid']][_0xe2da('0x23')]=_0x552042[_0xe2da('0x23')];this['channels'][_0x552042[_0xe2da('0x22')]]['id']=this[_0xe2da('0xe')][_0xac75a9]['id'];this[_0xe2da('0xd')][_0x552042[_0xe2da('0x22')]]['name']=this[_0xe2da('0xe')][_0xac75a9]['name'];logger[_0xe2da('0x24')](_0x552042[_0xe2da('0x22')],_0xe2da('0x25'));}}}}if(this['actions'][_0x552042[_0xe2da('0x22')]]){this[_0xe2da('0xd')][_0x552042['uniqueid']]={};this[_0xe2da('0xd')][_0x552042[_0xe2da('0x22')]][_0xe2da('0x23')]=_0x552042['channel'];logger[_0xe2da('0x24')](_0x552042['uniqueid'],_0xe2da('0x25'));}};Fax['prototype'][_0xe2da('0x15')]=function(_0x3d48b1){if(this['channels'][_0x3d48b1[_0xe2da('0x22')]]){for(var _0x574041 in _0x3d48b1[_0xe2da('0x26')]){if(_0x3d48b1[_0xe2da('0x26')][_0xe2da('0x1f')](_0x574041)){this[_0xe2da('0xd')][_0x3d48b1[_0xe2da('0x22')]][_0x574041]=_0x3d48b1[_0xe2da('0x27')];}}}};Fax['prototype'][_0xe2da('0x16')]=function(_0x4626e7){if(this[_0xe2da('0xd')][_0x4626e7['uniqueid']]){this[_0xe2da('0xd')][_0x4626e7[_0xe2da('0x22')]][_0xe2da('0x28')]=_0x4626e7[_0xe2da('0x28')];this['channels'][_0x4626e7[_0xe2da('0x22')]][_0xe2da('0x29')]=_0x4626e7[_0xe2da('0x29')];}};Fax[_0xe2da('0x1d')][_0xe2da('0x17')]=function(_0x34eebf){if(this[_0xe2da('0xd')][_0x34eebf[_0xe2da('0x22')]]){for(var _0x24ca4a in _0x34eebf[_0xe2da('0x26')]){if(_0x34eebf[_0xe2da('0x26')][_0xe2da('0x1f')](_0x24ca4a)){this['channels'][_0x34eebf[_0xe2da('0x22')]][_0x24ca4a]=_0x34eebf[_0xe2da('0x27')];}}}};Fax[_0xe2da('0x1d')][_0xe2da('0x19')]=function(_0x18cd4e){if(this[_0xe2da('0xd')][_0x18cd4e[_0xe2da('0x22')]]){this[_0xe2da('0xd')][_0x18cd4e[_0xe2da('0x22')]][_0xe2da('0x2a')]=_0x18cd4e['operation'];this['channels'][_0x18cd4e['uniqueid']][_0xe2da('0x2b')]=_0x18cd4e[_0xe2da('0x2b')];this[_0xe2da('0xd')][_0x18cd4e[_0xe2da('0x22')]][_0xe2da('0x21')]=_0x18cd4e[_0xe2da('0x21')];this[_0xe2da('0xd')][_0x18cd4e[_0xe2da('0x22')]][_0xe2da('0x2c')]=_0x18cd4e[_0xe2da('0x2c')];logger[_0xe2da('0x24')](_0x18cd4e[_0xe2da('0x22')],_0xe2da('0x2d'));}};Fax[_0xe2da('0x1d')][_0xe2da('0x2e')]=function(_0xbb670){var _0x777698=this;if(this[_0xe2da('0xd')][_0xbb670[_0xe2da('0x22')]]){var _0x5e60a5=this[_0xe2da('0xd')][_0xbb670['uniqueid']]['id'];this[_0xe2da('0xd')][_0xbb670[_0xe2da('0x22')]][_0xe2da('0x2f')]=_0xbb670[_0xe2da('0x2f')];this[_0xe2da('0xd')][_0xbb670[_0xe2da('0x22')]]['pagestransferred']=_0xbb670[_0xe2da('0x30')];this['channels'][_0xbb670['uniqueid']][_0xe2da('0x21')]=_0xbb670[_0xe2da('0x21')];this[_0xe2da('0xd')][_0xbb670[_0xe2da('0x22')]][_0xe2da('0x31')]=_0xbb670[_0xe2da('0x31')];this[_0xe2da('0xd')][_0xbb670[_0xe2da('0x22')]][_0xe2da('0x32')]=_0xbb670['transferrate'];this[_0xe2da('0xd')][_0xbb670[_0xe2da('0x22')]][_0xe2da('0x2c')]=_0xbb670[_0xe2da('0x2c')];this[_0xe2da('0xd')][_0xbb670[_0xe2da('0x22')]][_0xe2da('0x33')]=_0xbb670['calleridnum'];if(this[_0xe2da('0xd')][_0xbb670[_0xe2da('0x22')]][_0xe2da('0x30')]>0x0){tiff2pdf(_0xbb670[_0xe2da('0x2c')],_0xe2da('0x34'),function(_0x43476a){logger[_0xe2da('0x24')](_0xbb670[_0xe2da('0x22')],_0xe2da('0x35'),_0x43476a[_0xe2da('0x36')]);attachment[_0xe2da('0x37')]({'name':path[_0xe2da('0x38')](_0xbb670[_0xe2da('0x2c')])[_0xe2da('0x39')],'basename':path[_0xe2da('0x38')](_0xbb670['filename'])[_0xe2da('0x39')]+_0xe2da('0x3a'),'type':'application/pdf'})[_0xe2da('0x3b')](function(_0x57ec5d){faxAccount['notify'](_0x5e60a5,{'from':_0xbb670[_0xe2da('0x33')],'mapKey':_0xe2da('0x7'),'body':path[_0xe2da('0x38')](_0xbb670[_0xe2da('0x2c')])[_0xe2da('0x39')]+'.pdf','AttachmentId':_0x57ec5d['id']})[_0xe2da('0x3c')](function(_0x16a65c){logger['error'](_0xbb670['uniqueid'],'\x20notify\x20',JSON[_0xe2da('0x3d')](_0x16a65c));});})[_0xe2da('0x3c')](function(_0x421b83){logger['error'](_0xbb670[_0xe2da('0x22')],_0xe2da('0x3e'),JSON['stringify'](_0x421b83));});});}logger[_0xe2da('0x24')](_0xbb670['uniqueid'],_0xe2da('0x3e'));}};Fax['prototype'][_0xe2da('0x1c')]=function(_0x556d8d){if(this[_0xe2da('0x10')][_0x556d8d[_0xe2da('0x22')]]){_[_0xe2da('0x3f')](this[_0xe2da('0xd')][_0x556d8d[_0xe2da('0x22')]],_['pick'](_0x556d8d,[_0xe2da('0x40'),_0xe2da('0x41')]));}};function updateStatus(_0x746668){if(_0x746668[_0xe2da('0x42')]){faxMessage[_0xe2da('0x43')](_0x746668[_0xe2da('0x42')],{'failMessage':_0xe2da('0x44')})[_0xe2da('0x3b')](function(_0x22b13a){ut[_0xe2da('0x45')](_0xe2da('0x46'),_0x22b13a);})[_0xe2da('0x3c')](function(_0x33e2a5){ut[_0xe2da('0x45')]('[Fax][Message][Error][NoUpdate1]',_0x33e2a5);});}else{ut['logger'](_0xe2da('0x47'));}}Fax['prototype'][_0xe2da('0x48')]=function(_0x2b3d93,_0x4cde52,_0x213578){var _0x386e9e=this;var _0x124439={};if(_0x4cde52){_0x124439={'read':_0x4cde52};}else{_0x124439={'failMessage':_0x213578};}if(this[_0xe2da('0x10')][_0x2b3d93][_0xe2da('0x42')]){faxMessage[_0xe2da('0x43')](this[_0xe2da('0x10')][_0x2b3d93]['AttachmentId'],_0x124439)[_0xe2da('0x3b')](function(_0x304b22){ut['logger']('[Fax][Message][Updated]',_0x304b22);})[_0xe2da('0x3c')](function(_0x4477fc){ut['logger']('[Fax][Message][NoUpdate1]',_0x4477fc);})[_0xe2da('0x49')](function(){delete _0x386e9e[_0xe2da('0xd')][_0x2b3d93];delete _0x386e9e[_0xe2da('0x10')][_0x2b3d93];});}else{ut[_0xe2da('0x45')](_0xe2da('0x4a'));delete this[_0xe2da('0xd')][_0x2b3d93];delete this['actions'][_0x2b3d93];}};Fax[_0xe2da('0x1d')][_0xe2da('0x4b')]=function(_0x44121b){var _0x26e73e=this;if(this[_0xe2da('0xd')][_0x44121b[_0xe2da('0x22')]]){if(this[_0xe2da('0x10')][_0x44121b[_0xe2da('0x22')]]){this[_0xe2da('0xd')][_0x44121b[_0xe2da('0x22')]]['id']=this[_0xe2da('0x10')][_0x44121b['uniqueid']]['id'];this[_0xe2da('0xd')][_0x44121b[_0xe2da('0x22')]]['name']=this[_0xe2da('0x10')][_0x44121b['uniqueid']][_0xe2da('0x39')];}logger['info'](_0x44121b['uniqueid'],this[_0xe2da('0x10')][_0x44121b[_0xe2da('0x22')]]?_0xe2da('0x4c'):_0xe2da('0x4d'),JSON[_0xe2da('0x3d')](this[_0xe2da('0xd')][_0x44121b[_0xe2da('0x22')]]));if(this[_0xe2da('0x10')][_0x44121b[_0xe2da('0x22')]]){if(this[_0xe2da('0xd')][_0x44121b[_0xe2da('0x22')]]['faxpages']>0x0&&this[_0xe2da('0xd')][_0x44121b['uniqueid']]['faxstatus']==='SUCCESS'){this['updateStatus'](_0x44121b[_0xe2da('0x22')],!![]);}else{this[_0xe2da('0x48')](_0x44121b['uniqueid'],![],this['channels'][_0x44121b[_0xe2da('0x22')]][_0xe2da('0x4e')]?'SENDING\x20FAILED:\x20'+this[_0xe2da('0xd')][_0x44121b[_0xe2da('0x22')]][_0xe2da('0x4e')]:'SENDING\x20FAILED');}}}};Fax[_0xe2da('0x1d')][_0xe2da('0x4f')]=function(_0xa3c84){var _0x41e191=this;return new BPromise(function(_0x49f3bb,_0xe3cbbc){_0x41e191['execOriginate'](_0xa3c84,_0x41e191[_0xe2da('0xe')][_0xa3c84[_0xe2da('0x50')]])['then'](function(_0xa85491){ut[_0xe2da('0x45')]('[Fax][execOriginate][success]',_0xa85491);_0x49f3bb(ut[_0xe2da('0x36')](_0xe2da('0x51')));})[_0xe2da('0x3c')](function(_0x5c4f36){ut['logger'](_0xe2da('0x52'),_0x5c4f36);updateStatus(_0xa3c84);_0xe3cbbc(ut[_0xe2da('0x36')](_0xe2da('0x53')));});});};Fax[_0xe2da('0x1d')]['checkAfterSend']=function(_0xba4fc7){var _0x40dbc5=this;return new BPromise(function(_0x4610fd,_0x43ee87){var _0x5bc573=_0x40dbc5[_0xe2da('0x54')](_0x40dbc5['faxAccounts'][_0xba4fc7[_0xe2da('0x50')]]['Trunk'],_0xba4fc7);if(_0x5bc573[_0xe2da('0x55')]){_0x4610fd(ut['message']('Trunk\x20Reachable'));}else{_0x43ee87(ut[_0xe2da('0x36')](_0x5bc573[_0xe2da('0x36')]));}});};function originate(_0x34b0cd,_0xfed3fa,_0x1143f3){return new BPromise(function(_0x1cbab8,_0x21921b){if(_0x1143f3){var _0x22bcb1=util[_0xe2da('0x56')](_0xe2da('0x57'),path[_0xe2da('0x38')](_0x34b0cd[_0xe2da('0x5')])[_0xe2da('0x39')],_0x34b0cd[_0xe2da('0x5')]);gs[_0xe2da('0x58')](_0x22bcb1)[_0xe2da('0x3b')](function(){_0x34b0cd['path']=util[_0xe2da('0x56')](_0xe2da('0x59'),path[_0xe2da('0x38')](_0x34b0cd[_0xe2da('0x5')])['dir'],path[_0xe2da('0x38')](_0x34b0cd[_0xe2da('0x5')])[_0xe2da('0x39')]);_0xfed3fa['XMF-PATH']=_0x34b0cd[_0xe2da('0x5')];ut[_0xe2da('0x45')]('Convert\x20pdf\x20to\x20tif','');ami[_0xe2da('0x5a')](ut[_0xe2da('0x5b')](_0x34b0cd,_0xfed3fa))[_0xe2da('0x3b')](function(_0x2a5ff8){_0x1cbab8(_0x2a5ff8);})['catch'](function(_0x19b1a9){_0x21921b(_0x19b1a9);});})['catch'](function(_0x32133d){_0x21921b(_0x32133d);});}else{ami[_0xe2da('0x5a')](ut[_0xe2da('0x5b')](_0x34b0cd,_0xfed3fa))[_0xe2da('0x3b')](function(_0x282608){_0x1cbab8(_0x282608);})[_0xe2da('0x3c')](function(_0x21d8b0){_0x21921b(_0x21d8b0);});}});}Fax[_0xe2da('0x1d')][_0xe2da('0x5c')]=function(_0x281d7f,_0x3c4435){var _0x31918d=this;return new BPromise(function(_0x380894,_0x408080){var _0xa8a7e8=uuid['v4']();var _0x4e1a05=ut['addVariables'](_0x281d7f,_0x3c4435);_0x31918d[_0xe2da('0x10')][_0xa8a7e8]=new Action(_0xa8a7e8,_0x3c4435,_0x281d7f);var _0x1b3b3a=_0x31918d[_0xe2da('0x10')][_0xa8a7e8];if(path[_0xe2da('0x38')](_0x281d7f[_0xe2da('0x5')])[_0xe2da('0x5d')]==='.pdf'){originate(_0x1b3b3a,_0x4e1a05,!![])[_0xe2da('0x3b')](function(_0x28aa3b){_0x380894(_0x28aa3b);})['catch'](function(_0x281afd){_0x408080(_0x281afd);});}else{originate(_0x1b3b3a,_0x4e1a05,![])[_0xe2da('0x3b')](function(_0x57007f){_0x380894(_0x57007f);})['catch'](function(_0x349c49){_0x408080(_0x349c49);});}});};Fax['prototype'][_0xe2da('0x5e')]=function(_0x4cafba){return!_[_0xe2da('0x5f')](_0x4cafba)&&!_[_0xe2da('0x5f')](_0x4cafba['name'])&&!_[_0xe2da('0x5f')](_0x4cafba[_0xe2da('0x60')])&&_0x4cafba[_0xe2da('0x60')]&&!_['isNil'](this[_0xe2da('0xf')][util[_0xe2da('0x56')](_0xe2da('0x61'),_0x4cafba[_0xe2da('0x39')])])&&!_['isNil'](this[_0xe2da('0xf')][util['format'](_0xe2da('0x61'),_0x4cafba['name'])][_0xe2da('0x2b')])&&(this[_0xe2da('0xf')][util[_0xe2da('0x56')](_0xe2da('0x61'),_0x4cafba[_0xe2da('0x39')])][_0xe2da('0x2b')]===_0xe2da('0x62')||this[_0xe2da('0xf')][util[_0xe2da('0x56')](_0xe2da('0x61'),_0x4cafba['name'])][_0xe2da('0x2b')]==='unmonitored');};Fax[_0xe2da('0x1d')]['checkTrunk']=function(_0x52d940,_0x5f2b85){if(!this[_0xe2da('0x5e')](_0x52d940)){ut[_0xe2da('0x45')]('[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]',_[_0xe2da('0x5f')](_0x52d940)?'':_0x52d940['name']+_0xe2da('0x63'));return{'isValid':![],'message':_0xe2da('0x64')};}if(_['isNil'](_0x5f2b85['fax'])){ut[_0xe2da('0x45')](_0xe2da('0x65'),JSON[_0xe2da('0x3d')](_0x5f2b85));return{'isValid':![],'message':_0xe2da('0x66')};}if(_[_0xe2da('0x5f')](_0x5f2b85['path'])){ut['logger'](_0xe2da('0x67'),JSON[_0xe2da('0x3d')](_0x5f2b85));return{'isValid':![],'message':_0xe2da('0x68')};}return{'isValid':!![],'message':_0xe2da('0x69')};};module[_0xe2da('0x6a')]=Fax;
\ No newline at end of file
+var _0xfd18=['[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','[Fax][execOriginate][success]','[Fax][execOriginate][failure]','Fax\x20failed','checkTrunk','FaxAccountId','Trunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','path','%s/%s.tif','dir','XMF-PATH','Convert\x20pdf\x20to\x20tif','Action','variablesAction','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Fax][checkTrunk][Empty\x20Fax]','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','Is\x20Valid','util','lodash','uuid','moment','tiff2pdf','./util/gs','../../../config/logger','fax','../ami','./rpcDb','./util/util','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','newstate','syncNewState','newexten','syncNewExten','faxstatus','syncReceiveFax','hangup','syncHangup','originateresponse','prototype','context','from-voip-provider','localstationid','channel','uniqueid','name','info','\x20syncNewchannel\x20','syncVarSet','variable','hasOwnProperty','value','channelstate','channelstatedesc','syncFaxStatus','operation','status','filename','\x20syncFaxStatus\x20','remotestationid','pagestransferred','resolution','transferrate','message','parse','.pdf','notify','calleridnum','catch','error','stringify','\x20receiveFax\x20','syncOriginateResponse','merge','reason','AttachmentId','then','[Fax][Message][Error][Updated]','logger','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','update'];(function(_0x4ef066,_0x4143a0){var _0x12ba64=function(_0x1e4635){while(--_0x1e4635){_0x4ef066['push'](_0x4ef066['shift']());}};_0x12ba64(++_0x4143a0);}(_0xfd18,0x181));var _0x8fd1=function(_0x1fdf47,_0x1da0d0){_0x1fdf47=_0x1fdf47-0x0;var _0x2f42d3=_0xfd18[_0x1fdf47];return _0x2f42d3;};'use strict';var util=require(_0x8fd1('0x0'));var _=require(_0x8fd1('0x1'));var BPromise=require('bluebird');var uuid=require(_0x8fd1('0x2'));var moment=require(_0x8fd1('0x3'));var path=require('path');var tiff2pdf=require(_0x8fd1('0x4'));var gs=require(_0x8fd1('0x5'));var logger=require(_0x8fd1('0x6'))(_0x8fd1('0x7'));var ami=require(_0x8fd1('0x8'));var rpcDb=require(_0x8fd1('0x9'));var Channel=require('./channel');var ut=require(_0x8fd1('0xa'));var Action=require(_0x8fd1('0xb'));var faxAccount=require(_0x8fd1('0xc'));var attachment=require(_0x8fd1('0xd'));var faxMessage=require(_0x8fd1('0xe'));function Fax(_0x45784e){this[_0x8fd1('0xf')]={};this[_0x8fd1('0x10')]=_0x45784e[_0x8fd1('0x10')];this['trunks']=_0x45784e[_0x8fd1('0x11')];this[_0x8fd1('0x12')]={};ami['on'](_0x8fd1('0x13'),this[_0x8fd1('0x14')][_0x8fd1('0x15')](this));ami['on']('varset',this['syncVarSet'][_0x8fd1('0x15')](this));ami['on'](_0x8fd1('0x16'),this[_0x8fd1('0x17')][_0x8fd1('0x15')](this));ami['on'](_0x8fd1('0x18'),this[_0x8fd1('0x19')]['bind'](this));ami['on'](_0x8fd1('0x1a'),this['syncFaxStatus'][_0x8fd1('0x15')](this));ami['on']('receivefax',this[_0x8fd1('0x1b')][_0x8fd1('0x15')](this));ami['on'](_0x8fd1('0x1c'),this[_0x8fd1('0x1d')][_0x8fd1('0x15')](this));ami['on'](_0x8fd1('0x1e'),this['syncOriginateResponse']['bind'](this));}Fax[_0x8fd1('0x1f')][_0x8fd1('0x14')]=function(_0x224c0b){if(_0x224c0b[_0x8fd1('0x20')]===_0x8fd1('0x21')){for(var _0x293a59 in this[_0x8fd1('0x10')]){if(this['faxAccounts']['hasOwnProperty'](_0x293a59)){if(_0x224c0b['exten']===this['faxAccounts'][_0x293a59][_0x8fd1('0x22')]){this['channels'][_0x224c0b['uniqueid']]={};this[_0x8fd1('0xf')][_0x224c0b['uniqueid']][_0x8fd1('0x23')]=_0x224c0b[_0x8fd1('0x23')];this[_0x8fd1('0xf')][_0x224c0b[_0x8fd1('0x24')]]['id']=this[_0x8fd1('0x10')][_0x293a59]['id'];this[_0x8fd1('0xf')][_0x224c0b[_0x8fd1('0x24')]][_0x8fd1('0x25')]=this[_0x8fd1('0x10')][_0x293a59][_0x8fd1('0x25')];logger[_0x8fd1('0x26')](_0x224c0b['uniqueid'],'\x20syncNewchannel\x20');}}}}if(this['actions'][_0x224c0b[_0x8fd1('0x24')]]){this[_0x8fd1('0xf')][_0x224c0b['uniqueid']]={};this['channels'][_0x224c0b['uniqueid']][_0x8fd1('0x23')]=_0x224c0b['channel'];logger[_0x8fd1('0x26')](_0x224c0b[_0x8fd1('0x24')],_0x8fd1('0x27'));}};Fax[_0x8fd1('0x1f')][_0x8fd1('0x28')]=function(_0x161978){if(this[_0x8fd1('0xf')][_0x161978[_0x8fd1('0x24')]]){for(var _0x2a2ee7 in _0x161978[_0x8fd1('0x29')]){if(_0x161978[_0x8fd1('0x29')][_0x8fd1('0x2a')](_0x2a2ee7)){this[_0x8fd1('0xf')][_0x161978[_0x8fd1('0x24')]][_0x2a2ee7]=_0x161978[_0x8fd1('0x2b')];}}}};Fax[_0x8fd1('0x1f')][_0x8fd1('0x17')]=function(_0x8e46d){if(this['channels'][_0x8e46d[_0x8fd1('0x24')]]){this['channels'][_0x8e46d[_0x8fd1('0x24')]][_0x8fd1('0x2c')]=_0x8e46d[_0x8fd1('0x2c')];this[_0x8fd1('0xf')][_0x8e46d[_0x8fd1('0x24')]][_0x8fd1('0x2d')]=_0x8e46d[_0x8fd1('0x2d')];}};Fax[_0x8fd1('0x1f')][_0x8fd1('0x19')]=function(_0x141860){if(this[_0x8fd1('0xf')][_0x141860[_0x8fd1('0x24')]]){for(var _0x3385ff in _0x141860[_0x8fd1('0x29')]){if(_0x141860[_0x8fd1('0x29')][_0x8fd1('0x2a')](_0x3385ff)){this[_0x8fd1('0xf')][_0x141860['uniqueid']][_0x3385ff]=_0x141860[_0x8fd1('0x2b')];}}}};Fax[_0x8fd1('0x1f')][_0x8fd1('0x2e')]=function(_0x459086){if(this[_0x8fd1('0xf')][_0x459086[_0x8fd1('0x24')]]){this[_0x8fd1('0xf')][_0x459086[_0x8fd1('0x24')]]['operation']=_0x459086[_0x8fd1('0x2f')];this[_0x8fd1('0xf')][_0x459086[_0x8fd1('0x24')]][_0x8fd1('0x30')]=_0x459086['status'];this[_0x8fd1('0xf')][_0x459086['uniqueid']][_0x8fd1('0x22')]=_0x459086[_0x8fd1('0x22')];this['channels'][_0x459086[_0x8fd1('0x24')]]['filename']=_0x459086[_0x8fd1('0x31')];logger['info'](_0x459086[_0x8fd1('0x24')],_0x8fd1('0x32'));}};Fax[_0x8fd1('0x1f')][_0x8fd1('0x1b')]=function(_0x590f9e){var _0x4267fb=this;if(this[_0x8fd1('0xf')][_0x590f9e[_0x8fd1('0x24')]]){var _0x5f2409=this[_0x8fd1('0xf')][_0x590f9e[_0x8fd1('0x24')]]['id'];this[_0x8fd1('0xf')][_0x590f9e[_0x8fd1('0x24')]]['remotestationid']=_0x590f9e[_0x8fd1('0x33')];this[_0x8fd1('0xf')][_0x590f9e[_0x8fd1('0x24')]][_0x8fd1('0x34')]=_0x590f9e[_0x8fd1('0x34')];this[_0x8fd1('0xf')][_0x590f9e['uniqueid']][_0x8fd1('0x22')]=_0x590f9e[_0x8fd1('0x22')];this[_0x8fd1('0xf')][_0x590f9e[_0x8fd1('0x24')]][_0x8fd1('0x35')]=_0x590f9e[_0x8fd1('0x35')];this[_0x8fd1('0xf')][_0x590f9e[_0x8fd1('0x24')]][_0x8fd1('0x36')]=_0x590f9e[_0x8fd1('0x36')];this[_0x8fd1('0xf')][_0x590f9e[_0x8fd1('0x24')]][_0x8fd1('0x31')]=_0x590f9e[_0x8fd1('0x31')];this[_0x8fd1('0xf')][_0x590f9e[_0x8fd1('0x24')]]['calleridnum']=_0x590f9e['calleridnum'];if(this['channels'][_0x590f9e[_0x8fd1('0x24')]][_0x8fd1('0x34')]>0x0){tiff2pdf(_0x590f9e[_0x8fd1('0x31')],'/var/opt/motion2/server/files/attachments/',function(_0x357741){logger[_0x8fd1('0x26')](_0x590f9e[_0x8fd1('0x24')],'\x20result\x20conversion\x20file\x20',_0x357741[_0x8fd1('0x37')]);attachment['create']({'name':path[_0x8fd1('0x38')](_0x590f9e['filename'])[_0x8fd1('0x25')],'basename':path[_0x8fd1('0x38')](_0x590f9e[_0x8fd1('0x31')])[_0x8fd1('0x25')]+_0x8fd1('0x39'),'type':'application/pdf'})['then'](function(_0x5afe30){faxAccount[_0x8fd1('0x3a')](_0x5f2409,{'from':_0x590f9e[_0x8fd1('0x3b')],'mapKey':_0x8fd1('0x7'),'body':path[_0x8fd1('0x38')](_0x590f9e[_0x8fd1('0x31')])[_0x8fd1('0x25')]+_0x8fd1('0x39'),'AttachmentId':_0x5afe30['id']})[_0x8fd1('0x3c')](function(_0x424650){logger[_0x8fd1('0x3d')](_0x590f9e[_0x8fd1('0x24')],'\x20notify\x20',JSON[_0x8fd1('0x3e')](_0x424650));});})['catch'](function(_0x348b7d){logger[_0x8fd1('0x3d')](_0x590f9e[_0x8fd1('0x24')],_0x8fd1('0x3f'),JSON[_0x8fd1('0x3e')](_0x348b7d));});});}logger[_0x8fd1('0x26')](_0x590f9e[_0x8fd1('0x24')],_0x8fd1('0x3f'));}};Fax['prototype'][_0x8fd1('0x40')]=function(_0x4f3d17){if(this[_0x8fd1('0x12')][_0x4f3d17[_0x8fd1('0x24')]]){_[_0x8fd1('0x41')](this[_0x8fd1('0xf')][_0x4f3d17[_0x8fd1('0x24')]],_['pick'](_0x4f3d17,['response',_0x8fd1('0x42')]));}};function updateStatus(_0x3b82e4){if(_0x3b82e4[_0x8fd1('0x43')]){faxMessage['update'](_0x3b82e4[_0x8fd1('0x43')],{'failMessage':'SENDING\x20FAILED\x20'})[_0x8fd1('0x44')](function(_0x302d2f){ut['logger'](_0x8fd1('0x45'),_0x302d2f);})[_0x8fd1('0x3c')](function(_0x2604ad){ut[_0x8fd1('0x46')](_0x8fd1('0x47'),_0x2604ad);});}else{ut[_0x8fd1('0x46')](_0x8fd1('0x48'));}}Fax[_0x8fd1('0x1f')][_0x8fd1('0x49')]=function(_0x3f6313,_0x296e4a,_0x881611){var _0x2d3c11=this;var _0x386914={};if(_0x296e4a){_0x386914={'read':_0x296e4a};}else{_0x386914={'failMessage':_0x881611};}if(this[_0x8fd1('0x12')][_0x3f6313][_0x8fd1('0x43')]){faxMessage[_0x8fd1('0x4a')](this[_0x8fd1('0x12')][_0x3f6313][_0x8fd1('0x43')],_0x386914)[_0x8fd1('0x44')](function(_0x46b600){ut['logger'](_0x8fd1('0x4b'),_0x46b600);})['catch'](function(_0x413f2d){ut['logger'](_0x8fd1('0x4c'),_0x413f2d);})['finally'](function(){delete _0x2d3c11[_0x8fd1('0xf')][_0x3f6313];delete _0x2d3c11[_0x8fd1('0x12')][_0x3f6313];});}else{ut[_0x8fd1('0x46')](_0x8fd1('0x4d'));delete this['channels'][_0x3f6313];delete this[_0x8fd1('0x12')][_0x3f6313];}};Fax[_0x8fd1('0x1f')][_0x8fd1('0x1d')]=function(_0x408ad1){var _0x1cdb34=this;if(this['channels'][_0x408ad1[_0x8fd1('0x24')]]){if(this[_0x8fd1('0x12')][_0x408ad1['uniqueid']]){this[_0x8fd1('0xf')][_0x408ad1[_0x8fd1('0x24')]]['id']=this[_0x8fd1('0x12')][_0x408ad1['uniqueid']]['id'];this[_0x8fd1('0xf')][_0x408ad1[_0x8fd1('0x24')]]['name']=this[_0x8fd1('0x12')][_0x408ad1[_0x8fd1('0x24')]][_0x8fd1('0x25')];}logger[_0x8fd1('0x26')](_0x408ad1[_0x8fd1('0x24')],this[_0x8fd1('0x12')][_0x408ad1[_0x8fd1('0x24')]]?_0x8fd1('0x4e'):'\x20hangup\x20faxRiceive\x20',JSON['stringify'](this[_0x8fd1('0xf')][_0x408ad1['uniqueid']]));if(this['actions'][_0x408ad1[_0x8fd1('0x24')]]){if(this['channels'][_0x408ad1['uniqueid']]['faxpages']>0x0&&this['channels'][_0x408ad1[_0x8fd1('0x24')]][_0x8fd1('0x1a')]==='SUCCESS'){this[_0x8fd1('0x49')](_0x408ad1[_0x8fd1('0x24')],!![]);}else{this['updateStatus'](_0x408ad1[_0x8fd1('0x24')],![],this['channels'][_0x408ad1[_0x8fd1('0x24')]][_0x8fd1('0x4f')]?_0x8fd1('0x50')+this[_0x8fd1('0xf')][_0x408ad1[_0x8fd1('0x24')]]['faxstatusstring']:_0x8fd1('0x51'));}}}};Fax[_0x8fd1('0x1f')][_0x8fd1('0x52')]=function(_0x3f66f1){var _0x562779=this;return new BPromise(function(_0x102d28,_0x172ddd){_0x562779[_0x8fd1('0x53')](_0x3f66f1,_0x562779[_0x8fd1('0x10')][_0x3f66f1['FaxAccountId']])[_0x8fd1('0x44')](function(_0x3578c3){ut[_0x8fd1('0x46')](_0x8fd1('0x54'),_0x3578c3);_0x102d28(ut[_0x8fd1('0x37')]('Fax\x20received'));})['catch'](function(_0x368457){ut[_0x8fd1('0x46')](_0x8fd1('0x55'),_0x368457);updateStatus(_0x3f66f1);_0x172ddd(ut[_0x8fd1('0x37')](_0x8fd1('0x56')));});});};Fax[_0x8fd1('0x1f')]['checkAfterSend']=function(_0x306be7){var _0x4489a2=this;return new BPromise(function(_0x561afd,_0x2dbf1a){var _0x129c89=_0x4489a2[_0x8fd1('0x57')](_0x4489a2[_0x8fd1('0x10')][_0x306be7[_0x8fd1('0x58')]][_0x8fd1('0x59')],_0x306be7);if(_0x129c89[_0x8fd1('0x5a')]){_0x561afd(ut[_0x8fd1('0x37')](_0x8fd1('0x5b')));}else{_0x2dbf1a(ut[_0x8fd1('0x37')](_0x129c89[_0x8fd1('0x37')]));}});};function originate(_0x1a1be6,_0x40bfd9,_0x493692){return new BPromise(function(_0x218f03,_0x282da6){if(_0x493692){var _0x5a0ccb=util[_0x8fd1('0x5c')](_0x8fd1('0x5d'),path[_0x8fd1('0x38')](_0x1a1be6['path'])[_0x8fd1('0x25')],_0x1a1be6['path']);gs[_0x8fd1('0x5e')](_0x5a0ccb)[_0x8fd1('0x44')](function(){_0x1a1be6[_0x8fd1('0x5f')]=util[_0x8fd1('0x5c')](_0x8fd1('0x60'),path[_0x8fd1('0x38')](_0x1a1be6[_0x8fd1('0x5f')])[_0x8fd1('0x61')],path[_0x8fd1('0x38')](_0x1a1be6[_0x8fd1('0x5f')])[_0x8fd1('0x25')]);_0x40bfd9[_0x8fd1('0x62')]=_0x1a1be6[_0x8fd1('0x5f')];ut[_0x8fd1('0x46')](_0x8fd1('0x63'),'');ami[_0x8fd1('0x64')](ut[_0x8fd1('0x65')](_0x1a1be6,_0x40bfd9))[_0x8fd1('0x44')](function(_0x3538fd){_0x218f03(_0x3538fd);})['catch'](function(_0x267613){_0x282da6(_0x267613);});})['catch'](function(_0x4a2a41){_0x282da6(_0x4a2a41);});}else{ami[_0x8fd1('0x64')](ut['variablesAction'](_0x1a1be6,_0x40bfd9))[_0x8fd1('0x44')](function(_0x1b3f48){_0x218f03(_0x1b3f48);})[_0x8fd1('0x3c')](function(_0x3b7577){_0x282da6(_0x3b7577);});}});}Fax['prototype'][_0x8fd1('0x53')]=function(_0x309018,_0x172550){var _0x1c250d=this;return new BPromise(function(_0x287b36,_0x12cffb){var _0x1907cd=uuid['v4']();var _0x3122e3=ut['addVariables'](_0x309018,_0x172550);_0x1c250d[_0x8fd1('0x12')][_0x1907cd]=new Action(_0x1907cd,_0x172550,_0x309018);var _0x75618c=_0x1c250d[_0x8fd1('0x12')][_0x1907cd];if(path[_0x8fd1('0x38')](_0x309018['path'])[_0x8fd1('0x66')]==='.pdf'){originate(_0x75618c,_0x3122e3,!![])[_0x8fd1('0x44')](function(_0x16ef94){_0x287b36(_0x16ef94);})[_0x8fd1('0x3c')](function(_0x6543f1){_0x12cffb(_0x6543f1);});}else{originate(_0x75618c,_0x3122e3,![])[_0x8fd1('0x44')](function(_0x543443){_0x287b36(_0x543443);})[_0x8fd1('0x3c')](function(_0x58c53f){_0x12cffb(_0x58c53f);});}});};Fax[_0x8fd1('0x1f')][_0x8fd1('0x67')]=function(_0x166983){return!_[_0x8fd1('0x68')](_0x166983)&&!_[_0x8fd1('0x68')](_0x166983['name'])&&!_[_0x8fd1('0x68')](_0x166983[_0x8fd1('0x69')])&&_0x166983[_0x8fd1('0x69')]&&!_['isNil'](this[_0x8fd1('0x11')][util[_0x8fd1('0x5c')](_0x8fd1('0x6a'),_0x166983[_0x8fd1('0x25')])])&&!_['isNil'](this[_0x8fd1('0x11')][util[_0x8fd1('0x5c')](_0x8fd1('0x6a'),_0x166983['name'])][_0x8fd1('0x30')])&&(this[_0x8fd1('0x11')][util[_0x8fd1('0x5c')](_0x8fd1('0x6a'),_0x166983[_0x8fd1('0x25')])][_0x8fd1('0x30')]===_0x8fd1('0x6b')||this[_0x8fd1('0x11')][util[_0x8fd1('0x5c')]('SIP/%s',_0x166983['name'])][_0x8fd1('0x30')]===_0x8fd1('0x6c'));};Fax[_0x8fd1('0x1f')]['checkTrunk']=function(_0x3ea3e3,_0x4d8d8d){if(!this[_0x8fd1('0x67')](_0x3ea3e3)){ut[_0x8fd1('0x46')]('[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]',_[_0x8fd1('0x68')](_0x3ea3e3)?'':_0x3ea3e3[_0x8fd1('0x25')]+_0x8fd1('0x6d'));return{'isValid':![],'message':_0x8fd1('0x6e')};}if(_[_0x8fd1('0x68')](_0x4d8d8d[_0x8fd1('0x7')])){ut[_0x8fd1('0x46')](_0x8fd1('0x6f'),JSON['stringify'](_0x4d8d8d));return{'isValid':![],'message':'Empty\x20Fax'};}if(_[_0x8fd1('0x68')](_0x4d8d8d[_0x8fd1('0x5f')])){ut[_0x8fd1('0x46')](_0x8fd1('0x70'),JSON[_0x8fd1('0x3e')](_0x4d8d8d));return{'isValid':![],'message':_0x8fd1('0x71')};}return{'isValid':!![],'message':_0x8fd1('0x72')};};module['exports']=Fax;
\ No newline at end of file
index 88a4f17..27daa91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x170e=['notify','resolve','catch','[Notify]\x20','util','bluebird','preview','lodash','../rpc/faxAccount','error'];(function(_0x57ebd7,_0x5644cc){var _0x528e9d=function(_0x44ff99){while(--_0x44ff99){_0x57ebd7['push'](_0x57ebd7['shift']());}};_0x528e9d(++_0x5644cc);}(_0x170e,0x9a));var _0xe170=function(_0x212dad,_0xb862ef){_0x212dad=_0x212dad-0x0;var _0x4fea3f=_0x170e[_0x212dad];return _0x4fea3f;};'use strict';var util=require(_0xe170('0x0'));var BPromise=require(_0xe170('0x1'));var logger=require('../../../config/logger')(_0xe170('0x2'));var _=require(_0xe170('0x3'));var faxAccount=require(_0xe170('0x4'));function loggerCatch(_0x398b8d){return function(_0x2cbe95){logger[_0xe170('0x5')](_0x398b8d,util['inspect'](_0x2cbe95,{'showHidden':![],'depth':null}));};}exports[_0xe170('0x6')]=function(_0x594720,_0x4f1c48){return BPromise[_0xe170('0x7')]()['then'](faxAccount[_0xe170('0x6')](_0x594720,_0x4f1c48))[_0xe170('0x8')](loggerCatch(_0xe170('0x9')));};
\ No newline at end of file
+var _0x4a92=['resolve','then','[Notify]\x20','util','bluebird','../../../config/logger','preview','lodash','error','inspect','notify'];(function(_0x44f748,_0x25730b){var _0x52001a=function(_0x23ba20){while(--_0x23ba20){_0x44f748['push'](_0x44f748['shift']());}};_0x52001a(++_0x25730b);}(_0x4a92,0x18f));var _0x24a9=function(_0x3f6381,_0x518409){_0x3f6381=_0x3f6381-0x0;var _0x398bde=_0x4a92[_0x3f6381];return _0x398bde;};'use strict';var util=require(_0x24a9('0x0'));var BPromise=require(_0x24a9('0x1'));var logger=require(_0x24a9('0x2'))(_0x24a9('0x3'));var _=require(_0x24a9('0x4'));var faxAccount=require('../rpc/faxAccount');function loggerCatch(_0x7773b6){return function(_0x2ea429){logger[_0x24a9('0x5')](_0x7773b6,util[_0x24a9('0x6')](_0x2ea429,{'showHidden':![],'depth':null}));};}exports[_0x24a9('0x7')]=function(_0x208b3c,_0xded1ed){return BPromise[_0x24a9('0x8')]()[_0x24a9('0x9')](faxAccount[_0x24a9('0x7')](_0x208b3c,_0xded1ed))['catch'](loggerCatch(_0x24a9('0xa')));};
\ No newline at end of file
index 7efc834..15c286b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d71=['execute','info','Exec\x20gs','\x20Error\x20:','inspect','../../../../config/logger','fax','bluebird'];(function(_0x53693d,_0x5c088d){var _0x1c2668=function(_0x8bd913){while(--_0x8bd913){_0x53693d['push'](_0x53693d['shift']());}};_0x1c2668(++_0x5c088d);}(_0x6d71,0x17d));var _0x16d7=function(_0x50205f,_0x4df9bc){_0x50205f=_0x50205f-0x0;var _0x8e1089=_0x6d71[_0x50205f];return _0x8e1089;};'use strict';var util=require('util');var logger=require(_0x16d7('0x0'))(_0x16d7('0x1'));var BPromise=require(_0x16d7('0x2'));var exec=require('child_process')['exec'];exports[_0x16d7('0x3')]=function(_0x4226d2){return new BPromise(function(_0x331a45,_0x55460d){exec(_0x4226d2,function(_0xf43d85,_0x2ac794,_0x186158){logger[_0x16d7('0x4')](_0x16d7('0x5'),_0x2ac794);if(_0xf43d85){logger[_0x16d7('0x4')](_0x16d7('0x5'),_0x16d7('0x6'),util[_0x16d7('0x7')](_0xf43d85,{'showHidden':![],'depth':null}),_0x2ac794,_0x186158);_0x55460d(_0xf43d85);}_0x331a45(_0x2ac794);});});};
\ No newline at end of file
+var _0xbfa4=['Exec\x20gs','inspect','fax','child_process','exec','execute','info'];(function(_0x2231fd,_0x17fe86){var _0x43f40c=function(_0x8b02d5){while(--_0x8b02d5){_0x2231fd['push'](_0x2231fd['shift']());}};_0x43f40c(++_0x17fe86);}(_0xbfa4,0x1b4));var _0x4bfa=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0xbfa4[_0x481bf7];return _0x461787;};'use strict';var util=require('util');var logger=require('../../../../config/logger')(_0x4bfa('0x0'));var BPromise=require('bluebird');var exec=require(_0x4bfa('0x1'))[_0x4bfa('0x2')];exports[_0x4bfa('0x3')]=function(_0x517f2c){return new BPromise(function(_0x109844,_0x768c37){exec(_0x517f2c,function(_0xc4a0cb,_0x3d9b5e,_0xec8c54){logger[_0x4bfa('0x4')](_0x4bfa('0x5'),_0x3d9b5e);if(_0xc4a0cb){logger[_0x4bfa('0x4')](_0x4bfa('0x5'),'\x20Error\x20:',util[_0x4bfa('0x6')](_0xc4a0cb,{'showHidden':![],'depth':null}),_0x3d9b5e,_0xec8c54);_0x768c37(_0xc4a0cb);}_0x109844(_0x3d9b5e);});});};
\ No newline at end of file
index f686a97..bfbddda 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0260=['path','variablesAction','uniqueid','originate','channel','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>','util','fax','message','logger','info','inspect','addVariables','ecm','headerinfo','minrate','format','\x22%s\x22','modem','t38timeout','localstationid'];(function(_0x31b5dc,_0x8e17d1){var _0x47871e=function(_0x3c319b){while(--_0x3c319b){_0x31b5dc['push'](_0x31b5dc['shift']());}};_0x47871e(++_0x8e17d1);}(_0x0260,0x178));var _0x0026=function(_0x1abb09,_0x18ee91){_0x1abb09=_0x1abb09-0x0;var _0xea1c07=_0x0260[_0x1abb09];return _0xea1c07;};'use strict';var util=require(_0x0026('0x0'));var _=require('lodash');var moment=require('moment');var logger=require('../../../../config/logger')(_0x0026('0x1'));exports[_0x0026('0x2')]=function(_0x36bd18){return{'message':_0x36bd18};};exports[_0x0026('0x3')]=function(_0x38d788,_0x4ccf0d){logger[_0x0026('0x4')](_0x38d788,util[_0x0026('0x5')](_0x4ccf0d,{'showHidden':![],'depth':null}));};exports[_0x0026('0x6')]=function(_0x257437,_0x50f077){var _0x190e30={'XMF-ECM':_0x50f077[_0x0026('0x7')],'XMF-HEADERINFO':_0x50f077[_0x0026('0x8')],'XMF-MINRATE':_0x50f077[_0x0026('0x9')],'XMF-MAXRATE':_0x50f077['maxrate'],'XMF-MODEM':util[_0x0026('0xa')](_0x0026('0xb'),_0x50f077[_0x0026('0xc')]),'XMF-GATEWAY':_0x50f077['gateway'],'XMF-FAXDETECT':_0x50f077['faxdetect'],'XMF-T38TIMEOUT':_0x50f077[_0x0026('0xd')],'XMF-LOCALSTATIONID':_0x50f077[_0x0026('0xe')],'XMF-PATH':_0x257437[_0x0026('0xf')]};return _0x190e30;};exports[_0x0026('0x10')]=function(_0x518ff2,_0x1adf91){return{'actionid':_0x518ff2[_0x0026('0x11')],'action':_0x0026('0x12'),'channel':_0x518ff2[_0x0026('0x13')],'Exten':_0x0026('0x14'),'Context':_0x0026('0x15'),'Priority':'1','callerid':util[_0x0026('0xa')](_0x0026('0x16'),_0x518ff2[_0x0026('0x8')]?_0x518ff2[_0x0026('0x8')]:'',_0x518ff2['localstationid']),'variable':_0x1adf91,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x518ff2[_0x0026('0x11')]};};
\ No newline at end of file
+var _0xfdb1=['moment','../../../../config/logger','fax','message','logger','inspect','addVariables','ecm','headerinfo','maxrate','format','\x22%s\x22','gateway','faxdetect','variablesAction','originate','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>','util','lodash'];(function(_0x2543d6,_0x3a5e78){var _0x55213c=function(_0x292768){while(--_0x292768){_0x2543d6['push'](_0x2543d6['shift']());}};_0x55213c(++_0x3a5e78);}(_0xfdb1,0x1cc));var _0x1fdb=function(_0x4e6c6a,_0x241de4){_0x4e6c6a=_0x4e6c6a-0x0;var _0x47199a=_0xfdb1[_0x4e6c6a];return _0x47199a;};'use strict';var util=require(_0x1fdb('0x0'));var _=require(_0x1fdb('0x1'));var moment=require(_0x1fdb('0x2'));var logger=require(_0x1fdb('0x3'))(_0x1fdb('0x4'));exports[_0x1fdb('0x5')]=function(_0x181b70){return{'message':_0x181b70};};exports[_0x1fdb('0x6')]=function(_0x5d78a7,_0x51f353){logger['info'](_0x5d78a7,util[_0x1fdb('0x7')](_0x51f353,{'showHidden':![],'depth':null}));};exports[_0x1fdb('0x8')]=function(_0x358db2,_0xeb8854){var _0x35388f={'XMF-ECM':_0xeb8854[_0x1fdb('0x9')],'XMF-HEADERINFO':_0xeb8854[_0x1fdb('0xa')],'XMF-MINRATE':_0xeb8854['minrate'],'XMF-MAXRATE':_0xeb8854[_0x1fdb('0xb')],'XMF-MODEM':util[_0x1fdb('0xc')](_0x1fdb('0xd'),_0xeb8854['modem']),'XMF-GATEWAY':_0xeb8854[_0x1fdb('0xe')],'XMF-FAXDETECT':_0xeb8854[_0x1fdb('0xf')],'XMF-T38TIMEOUT':_0xeb8854['t38timeout'],'XMF-LOCALSTATIONID':_0xeb8854['localstationid'],'XMF-PATH':_0x358db2['path']};return _0x35388f;};exports[_0x1fdb('0x10')]=function(_0x15f537,_0x37df87){return{'actionid':_0x15f537['uniqueid'],'action':_0x1fdb('0x11'),'channel':_0x15f537['channel'],'Exten':_0x1fdb('0x12'),'Context':_0x1fdb('0x13'),'Priority':'1','callerid':util[_0x1fdb('0xc')](_0x1fdb('0x14'),_0x15f537['headerinfo']?_0x15f537[_0x1fdb('0xa')]:'',_0x15f537['localstationid']),'variable':_0x37df87,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x15f537['uniqueid']};};
\ No newline at end of file
index 6ac9c28..be0f214 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfa4=['initTemplates','getZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','initFreshsalesAccounts','getServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','getFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','error','[index.js][initParams]','inspect','listen','[index.js][main]','util','moment','./server','./realtime','./report','./acw','./trigger','./dialer','./fax','./rpc/user','./rpc/voiceQueueReport','./rpc/trunk','./rpc/cmHopperHistory','./rpc/campaign','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/freshsales','./rpc/integrations/dynamics365','ami','get','hour','resolve','then','getAgents','initAgents','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','getTriggers','initTriggers'];(function(_0x3f8d72,_0x35ce7d){var _0x2c0e0b=function(_0x261910){while(--_0x261910){_0x3f8d72['push'](_0x3f8d72['shift']());}};_0x2c0e0b(++_0x35ce7d);}(_0xbfa4,0xb1));var _0x4bfa=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xbfa4[_0x220dbb];return _0x2b77de;};'use strict';var util=require(_0x4bfa('0x0'));var moment=require(_0x4bfa('0x1'));var server=require(_0x4bfa('0x2'));var Realtime=require(_0x4bfa('0x3'));var Report=require(_0x4bfa('0x4'));var Acw=require(_0x4bfa('0x5'));var Trigger=require(_0x4bfa('0x6'));var Dialer=require(_0x4bfa('0x7'));var Preview=require('./preview');var Fax=require(_0x4bfa('0x8'));var user=require(_0x4bfa('0x9'));var voiceQueue=require('./rpc/voiceQueue');var voiceQueueReport=require(_0x4bfa('0xa'));var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0x4bfa('0xb'));var trigger=require('./rpc/trigger');var template=require('./rpc/template');var cmHopperHistory=require(_0x4bfa('0xc'));var campaign=require(_0x4bfa('0xd'));var voiceExtension=require('./rpc/voiceExtension');var faxAccount=require(_0x4bfa('0xe'));var zendesk=require(_0x4bfa('0xf'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x4bfa('0x10'));var freshdesk=require(_0x4bfa('0x11'));var desk=require(_0x4bfa('0x12'));var zoho=require(_0x4bfa('0x13'));var vtiger=require('./rpc/integrations/vtiger');var freshsales=require(_0x4bfa('0x14'));var servicenow=require('./rpc/integrations/servicenow');var dynamics365=require(_0x4bfa('0x15'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require('../../config/logger')(_0x4bfa('0x16'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x4bfa('0x17')]('hour')===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x4bfa('0x17')](_0x4bfa('0x18'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return Promise[_0x4bfa('0x19')]()[_0x4bfa('0x1a')](user[_0x4bfa('0x1b')]())['then'](realtime[_0x4bfa('0x1c')]())[_0x4bfa('0x1a')](user[_0x4bfa('0x1d')]())['then'](realtime[_0x4bfa('0x1e')]())[_0x4bfa('0x1a')](trunk[_0x4bfa('0x1f')]())['then'](realtime[_0x4bfa('0x20')]())[_0x4bfa('0x1a')](voiceQueue[_0x4bfa('0x21')]())['then'](realtime['initVoiceQueues']())[_0x4bfa('0x1a')](trigger[_0x4bfa('0x22')]())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x23')]())[_0x4bfa('0x1a')](template['getTemplates']())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x24')]())['then'](zendesk[_0x4bfa('0x25')]())[_0x4bfa('0x1a')](realtime['initZendeskAccounts']())['then'](salesforce[_0x4bfa('0x26')]())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x27')]())[_0x4bfa('0x1a')](sugarcrm[_0x4bfa('0x28')]())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x29')]())[_0x4bfa('0x1a')](freshdesk[_0x4bfa('0x2a')]())['then'](realtime[_0x4bfa('0x2b')]())[_0x4bfa('0x1a')](desk['getDeskAccounts']())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x2c')]())['then'](zoho[_0x4bfa('0x2d')]())['then'](realtime[_0x4bfa('0x2e')]())['then'](vtiger[_0x4bfa('0x2f')]())['then'](realtime[_0x4bfa('0x30')]())[_0x4bfa('0x1a')](freshsales['getFreshsalesAccounts']())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x31')]())['then'](servicenow[_0x4bfa('0x32')]())['then'](realtime['initServicenowAccounts']())['then'](dynamics365[_0x4bfa('0x33')]())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x34')]())[_0x4bfa('0x1a')](campaign[_0x4bfa('0x35')]())['then'](realtime[_0x4bfa('0x36')]())['then'](voiceExtension[_0x4bfa('0x37')]())['then'](realtime['initVoiceExtensions']())[_0x4bfa('0x1a')](faxAccount[_0x4bfa('0x38')]())['then'](realtime['initFaxAccounts']())['then'](function(){return realtime;});}function initParams(){return Promise[_0x4bfa('0x19')]()[_0x4bfa('0x1a')](voiceQueueReport[_0x4bfa('0x39')]())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x3a')]())[_0x4bfa('0x1a')](cmHopperHistory[_0x4bfa('0x3b')]())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x3c')]())[_0x4bfa('0x1a')](cmHopperHistory[_0x4bfa('0x3d')]())[_0x4bfa('0x1a')](realtime[_0x4bfa('0x3e')]())[_0x4bfa('0x1a')](voiceCallReport[_0x4bfa('0x3f')]())['then'](realtime[_0x4bfa('0x40')]())[_0x4bfa('0x41')](function(_0x20bb44){logger[_0x4bfa('0x42')](_0x4bfa('0x43'),util[_0x4bfa('0x44')](_0x20bb44,{'showHidden':![],'depth':null}));});}function main(){return server[_0x4bfa('0x45')](realtime,preview,fax)['then'](function(){return initRealtime();})['then'](function(){return initParams();})[_0x4bfa('0x1a')](function(){report['sync']();setInterval(initRealtime,0x1388);})[_0x4bfa('0x41')](function(_0x319955){logger[_0x4bfa('0x42')](_0x4bfa('0x46'),util[_0x4bfa('0x44')](_0x319955,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0x3435=['initDeskAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','initServicenowAccounts','initDynamics365Accounts','getCampaigns','getVoiceExtensions','getVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','error','inspect','sync','util','moment','./server','./realtime','./report','./acw','./trigger','./dialer','./fax','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/trunk','./rpc/trigger','./rpc/cmHopperHistory','./rpc/campaign','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/sugarcrm','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','../../config/logger','ami','get','hour','resolve','getAgents','then','initAgents','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','getTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','initSalesforceAccounts','getSugarcrmAccounts','getDeskAccounts'];(function(_0x3a6efd,_0x2a5102){var _0x487b9a=function(_0x104f89){while(--_0x104f89){_0x3a6efd['push'](_0x3a6efd['shift']());}};_0x487b9a(++_0x2a5102);}(_0x3435,0x99));var _0x5343=function(_0x5235a6,_0x680b76){_0x5235a6=_0x5235a6-0x0;var _0x1cf37e=_0x3435[_0x5235a6];return _0x1cf37e;};'use strict';var util=require(_0x5343('0x0'));var moment=require(_0x5343('0x1'));var server=require(_0x5343('0x2'));var Realtime=require(_0x5343('0x3'));var Report=require(_0x5343('0x4'));var Acw=require(_0x5343('0x5'));var Trigger=require(_0x5343('0x6'));var Dialer=require(_0x5343('0x7'));var Preview=require('./preview');var Fax=require(_0x5343('0x8'));var user=require('./rpc/user');var voiceQueue=require(_0x5343('0x9'));var voiceQueueReport=require(_0x5343('0xa'));var voiceCallReport=require('./rpc/voiceCallReport');var trunk=require(_0x5343('0xb'));var trigger=require(_0x5343('0xc'));var template=require('./rpc/template');var cmHopperHistory=require(_0x5343('0xd'));var campaign=require(_0x5343('0xe'));var voiceExtension=require('./rpc/voiceExtension');var faxAccount=require(_0x5343('0xf'));var zendesk=require(_0x5343('0x10'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x5343('0x11'));var freshdesk=require('./rpc/integrations/freshdesk');var desk=require(_0x5343('0x12'));var zoho=require(_0x5343('0x13'));var vtiger=require(_0x5343('0x14'));var freshsales=require(_0x5343('0x15'));var servicenow=require(_0x5343('0x16'));var dynamics365=require(_0x5343('0x17'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require(_0x5343('0x18'))(_0x5343('0x19'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x5343('0x1a')]('hour')===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x5343('0x1a')](_0x5343('0x1b'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return Promise[_0x5343('0x1c')]()['then'](user[_0x5343('0x1d')]())[_0x5343('0x1e')](realtime[_0x5343('0x1f')]())[_0x5343('0x1e')](user[_0x5343('0x20')]())[_0x5343('0x1e')](realtime[_0x5343('0x21')]())['then'](trunk[_0x5343('0x22')]())[_0x5343('0x1e')](realtime[_0x5343('0x23')]())[_0x5343('0x1e')](voiceQueue[_0x5343('0x24')]())[_0x5343('0x1e')](realtime['initVoiceQueues']())['then'](trigger[_0x5343('0x25')]())[_0x5343('0x1e')](realtime['initTriggers']())[_0x5343('0x1e')](template[_0x5343('0x26')]())[_0x5343('0x1e')](realtime[_0x5343('0x27')]())['then'](zendesk[_0x5343('0x28')]())[_0x5343('0x1e')](realtime[_0x5343('0x29')]())[_0x5343('0x1e')](salesforce['getSalesforceAccounts']())['then'](realtime[_0x5343('0x2a')]())['then'](sugarcrm[_0x5343('0x2b')]())[_0x5343('0x1e')](realtime['initSugarcrmAccounts']())[_0x5343('0x1e')](freshdesk['getFreshdeskAccounts']())[_0x5343('0x1e')](realtime['initFreshdeskAccounts']())[_0x5343('0x1e')](desk[_0x5343('0x2c')]())[_0x5343('0x1e')](realtime[_0x5343('0x2d')]())[_0x5343('0x1e')](zoho['getZohoAccounts']())[_0x5343('0x1e')](realtime['initZohoAccounts']())[_0x5343('0x1e')](vtiger[_0x5343('0x2e')]())['then'](realtime[_0x5343('0x2f')]())[_0x5343('0x1e')](freshsales[_0x5343('0x30')]())[_0x5343('0x1e')](realtime[_0x5343('0x31')]())[_0x5343('0x1e')](servicenow[_0x5343('0x32')]())[_0x5343('0x1e')](realtime[_0x5343('0x33')]())[_0x5343('0x1e')](dynamics365['getDynamics365Accounts']())[_0x5343('0x1e')](realtime[_0x5343('0x34')]())['then'](campaign[_0x5343('0x35')]())['then'](realtime['initCampaigns']())[_0x5343('0x1e')](voiceExtension[_0x5343('0x36')]())['then'](realtime['initVoiceExtensions']())[_0x5343('0x1e')](faxAccount['getFaxAccounts']())[_0x5343('0x1e')](realtime['initFaxAccounts']())[_0x5343('0x1e')](function(){return realtime;});}function initParams(){return Promise[_0x5343('0x1c')]()[_0x5343('0x1e')](voiceQueueReport[_0x5343('0x37')]())[_0x5343('0x1e')](realtime['initVoiceQueueReports']())[_0x5343('0x1e')](cmHopperHistory[_0x5343('0x38')]())[_0x5343('0x1e')](realtime[_0x5343('0x39')]())[_0x5343('0x1e')](cmHopperHistory[_0x5343('0x3a')]())['then'](realtime[_0x5343('0x3b')]())[_0x5343('0x1e')](voiceCallReport[_0x5343('0x3c')]())['then'](realtime[_0x5343('0x3d')]())[_0x5343('0x3e')](function(_0x6e7779){logger[_0x5343('0x3f')]('[index.js][initParams]',util[_0x5343('0x40')](_0x6e7779,{'showHidden':![],'depth':null}));});}function main(){return server['listen'](realtime,preview,fax)[_0x5343('0x1e')](function(){return initRealtime();})['then'](function(){return initParams();})[_0x5343('0x1e')](function(){report[_0x5343('0x41')]();setInterval(initRealtime,0x1388);})['catch'](function(_0x133988){logger[_0x5343('0x3f')]('[index.js][main]',util[_0x5343('0x40')](_0x133988,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index 309e0ae..1fd8b4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4884=['voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','local','prototype','idle','inuse','talking','format','onhold','stringify','user:%s','emit','user:ami:update','omit','user:presence','exports','lodash','util','moment','md5','../../../config/environment','redis','socket.io-emitter','name','email','accountcode','fullname','state','unknown','stateTime','address','phone','mobile','online'];(function(_0x4e074e,_0x35a42e){var _0x1fb96a=function(_0x432263){while(--_0x432263){_0x4e074e['push'](_0x4e074e['shift']());}};_0x1fb96a(++_0x35a42e);}(_0x4884,0xea));var _0x4488=function(_0x22f041,_0x438230){_0x22f041=_0x22f041-0x0;var _0x3d58f0=_0x4884[_0x22f041];return _0x3d58f0;};'use strict';var _=require(_0x4488('0x0'));var util=require(_0x4488('0x1'));var moment=require(_0x4488('0x2'));var md5=require(_0x4488('0x3'));var Redis=require('ioredis');var config=require(_0x4488('0x4'));config['redis']=_['defaults'](config[_0x4488('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x4488('0x6'))(new Redis(config[_0x4488('0x5')]));function Agent(_0x368b57){this['id']=_0x368b57['id']||0x0;this[_0x4488('0x7')]=_0x368b57[_0x4488('0x7')]||'';this['email']=_0x368b57[_0x4488('0x8')]||'';this[_0x4488('0x9')]=_0x368b57[_0x4488('0x9')]||'';this['fullname']=_0x368b57[_0x4488('0xa')]||'';this[_0x4488('0xb')]=_0x4488('0xc');this[_0x4488('0xd')]=0x0;this['status']=_0x4488('0xc');this[_0x4488('0xe')]='';this[_0x4488('0xf')]='';this[_0x4488('0x10')]='';this['interface']='';this[_0x4488('0x11')]=_0x368b57[_0x4488('0x11')]||![];this[_0x4488('0x12')]=_0x4488('0xc');this[_0x4488('0x13')]=0x0;this[_0x4488('0x14')]='';this[_0x4488('0x15')]='';this['onhold']=![];this[_0x4488('0x16')]=![];this['md5']='';}Agent[_0x4488('0x17')]['updateStatusRealtime']=function(_0x55a462){var _0x5d63e2;if(_0x55a462&&_0x55a462[_0x4488('0xb')]){_0x5d63e2=_0x55a462[_0x4488('0xb')]['toLowerCase']();switch(_0x5d63e2){case'not_inuse':_0x5d63e2=_0x4488('0x18');break;case _0x4488('0x19'):_0x5d63e2=_0x4488('0x1a');break;}}if(_0x5d63e2&&this[_0x4488('0x12')]!==_0x5d63e2||_0x55a462['statePause']){this[_0x4488('0x13')]=_['toNumber'](moment()[_0x4488('0x1b')]('x'));}if(_0x5d63e2){this[_0x4488('0x12')]=_0x5d63e2;}var _0x4431fe={'id':this['id'],'name':this[_0x4488('0x7')],'email':this['email'],'accountcode':this[_0x4488('0x9')],'fullname':this[_0x4488('0xa')],'state':this['state'],'stateTime':this[_0x4488('0xd')],'status':this['status'],'address':this[_0x4488('0xe')],'online':this[_0x4488('0x11')],'voiceStatus':this[_0x4488('0x12')],'voiceStatusTime':this[_0x4488('0x13')],'voiceStatusCallerIdNumber':this[_0x4488('0x14')],'voiceStatusQueue':this[_0x4488('0x15')],'interface':this['interface'],'onhold':this[_0x4488('0x1c')]};var _0x7f500c=md5(JSON[_0x4488('0x1d')](_0x4431fe));if(this['md5']!==_0x7f500c){this['md5']=_0x7f500c;io['to'](util[_0x4488('0x1b')](_0x4488('0x1e'),_0x4431fe['name']))[_0x4488('0x1f')](_0x4488('0x20'),_[_0x4488('0x21')](_0x4431fe,[_0x4488('0x11')]));io[_0x4488('0x1f')](_0x4488('0x22'),_0x4431fe);}};module[_0x4488('0x23')]=Agent;
\ No newline at end of file
+var _0x6e58=['talking','voiceStatus','statePause','format','user:%s','emit','user:ami:update','omit','exports','lodash','util','md5','ioredis','../../../config/environment','redis','defaults','localhost','name','email','accountcode','fullname','state','unknown','stateTime','status','address','phone','mobile','online','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','onhold','local','updateStatusRealtime','idle'];(function(_0x372219,_0x44f6c2){var _0x598c1d=function(_0x3aaaac){while(--_0x3aaaac){_0x372219['push'](_0x372219['shift']());}};_0x598c1d(++_0x44f6c2);}(_0x6e58,0xe1));var _0x86e5=function(_0x44a4e1,_0x416b89){_0x44a4e1=_0x44a4e1-0x0;var _0x244e48=_0x6e58[_0x44a4e1];return _0x244e48;};'use strict';var _=require(_0x86e5('0x0'));var util=require(_0x86e5('0x1'));var moment=require('moment');var md5=require(_0x86e5('0x2'));var Redis=require(_0x86e5('0x3'));var config=require(_0x86e5('0x4'));config[_0x86e5('0x5')]=_[_0x86e5('0x6')](config[_0x86e5('0x5')],{'host':_0x86e5('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x86e5('0x5')]));function Agent(_0x37c664){this['id']=_0x37c664['id']||0x0;this[_0x86e5('0x8')]=_0x37c664[_0x86e5('0x8')]||'';this[_0x86e5('0x9')]=_0x37c664[_0x86e5('0x9')]||'';this[_0x86e5('0xa')]=_0x37c664['accountcode']||'';this[_0x86e5('0xb')]=_0x37c664[_0x86e5('0xb')]||'';this[_0x86e5('0xc')]=_0x86e5('0xd');this[_0x86e5('0xe')]=0x0;this[_0x86e5('0xf')]='unknown';this[_0x86e5('0x10')]='';this[_0x86e5('0x11')]='';this[_0x86e5('0x12')]='';this['interface']='';this[_0x86e5('0x13')]=_0x37c664['online']||![];this['voiceStatus']=_0x86e5('0xd');this[_0x86e5('0x14')]=0x0;this[_0x86e5('0x15')]='';this[_0x86e5('0x16')]='';this[_0x86e5('0x17')]=![];this[_0x86e5('0x18')]=![];this['md5']='';}Agent['prototype'][_0x86e5('0x19')]=function(_0x52e1a1){var _0x5cb30a;if(_0x52e1a1&&_0x52e1a1[_0x86e5('0xc')]){_0x5cb30a=_0x52e1a1[_0x86e5('0xc')]['toLowerCase']();switch(_0x5cb30a){case'not_inuse':_0x5cb30a=_0x86e5('0x1a');break;case'inuse':_0x5cb30a=_0x86e5('0x1b');break;}}if(_0x5cb30a&&this[_0x86e5('0x1c')]!==_0x5cb30a||_0x52e1a1[_0x86e5('0x1d')]){this['voiceStatusTime']=_['toNumber'](moment()[_0x86e5('0x1e')]('x'));}if(_0x5cb30a){this[_0x86e5('0x1c')]=_0x5cb30a;}var _0x2d23ce={'id':this['id'],'name':this[_0x86e5('0x8')],'email':this['email'],'accountcode':this['accountcode'],'fullname':this[_0x86e5('0xb')],'state':this[_0x86e5('0xc')],'stateTime':this[_0x86e5('0xe')],'status':this[_0x86e5('0xf')],'address':this['address'],'online':this[_0x86e5('0x13')],'voiceStatus':this[_0x86e5('0x1c')],'voiceStatusTime':this[_0x86e5('0x14')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this['voiceStatusQueue'],'interface':this['interface'],'onhold':this[_0x86e5('0x17')]};var _0x111117=md5(JSON['stringify'](_0x2d23ce));if(this['md5']!==_0x111117){this[_0x86e5('0x2')]=_0x111117;io['to'](util['format'](_0x86e5('0x1f'),_0x2d23ce[_0x86e5('0x8')]))[_0x86e5('0x20')](_0x86e5('0x21'),_[_0x86e5('0x22')](_0x2d23ce,[_0x86e5('0x13')]));io['emit']('user:presence',_0x2d23ce);}};module[_0x86e5('0x23')]=Agent;
\ No newline at end of file
index 33847a4..803fb36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaae=['dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','originated','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry'];(function(_0x6deaa8,_0x56a27f){var _0x3342e1=function(_0x3f82a3){while(--_0x3f82a3){_0x6deaa8['push'](_0x6deaa8['shift']());}};_0x3342e1(++_0x56a27f);}(_0xfaae,0xe7));var _0xefaa=function(_0x41aa7f,_0x590db3){_0x41aa7f=_0x41aa7f-0x0;var _0x576042=_0xfaae[_0x41aa7f];return _0x576042;};'use strict';function Campaign(_0x3ba8bd){this['id']=_0x3ba8bd['id']||0x0;this[_0xefaa('0x0')]=_0x3ba8bd[_0xefaa('0x0')]||'';this['type']=_0x3ba8bd[_0xefaa('0x1')]||'campaign';this[_0xefaa('0x2')]=0x0;this['temp']=0x0;this[_0xefaa('0x3')]=0x0;this[_0xefaa('0x4')]=0x0;this[_0xefaa('0x5')]='';this[_0xefaa('0x6')]=!![];this[_0xefaa('0x7')]=_0x3ba8bd[_0xefaa('0x7')];this[_0xefaa('0x8')]=_0x3ba8bd[_0xefaa('0x8')];this[_0xefaa('0x9')]=_0x3ba8bd['dialTimezone']||null;this[_0xefaa('0xa')]=_0x3ba8bd['dialGlobalInterval']?_0x3ba8bd['dialGlobalInterval']:null;this['dialOriginateCallerIdName']=_0x3ba8bd[_0xefaa('0xb')];this[_0xefaa('0xc')]=_0x3ba8bd['dialOriginateCallerIdNumber'];this[_0xefaa('0xd')]=_0x3ba8bd[_0xefaa('0xd')]||0x1e;this[_0xefaa('0xe')]=_0x3ba8bd[_0xefaa('0xe')];this[_0xefaa('0xf')]=_0x3ba8bd[_0xefaa('0xf')];this[_0xefaa('0x10')]=_0x3ba8bd['dialBusyMaxRetry'];this[_0xefaa('0x11')]=_0x3ba8bd[_0xefaa('0x11')];this[_0xefaa('0x12')]=_0x3ba8bd[_0xefaa('0x12')];this[_0xefaa('0x13')]=_0x3ba8bd[_0xefaa('0x13')];this[_0xefaa('0x14')]=_0x3ba8bd[_0xefaa('0x14')];this[_0xefaa('0x15')]=_0x3ba8bd[_0xefaa('0x15')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x3ba8bd[_0xefaa('0x16')]||0x96;this[_0xefaa('0x17')]=_0x3ba8bd[_0xefaa('0x17')]||0x3;this['dialDropRetryFrequency']=_0x3ba8bd[_0xefaa('0x18')]||0x96;this[_0xefaa('0x19')]=_0x3ba8bd[_0xefaa('0x19')]||0x3;this['dialAbandonedRetryFrequency']=_0x3ba8bd[_0xefaa('0x1a')]||0x96;this[_0xefaa('0x1b')]=_0x3ba8bd[_0xefaa('0x1b')]||0x3;this['dialMachineRetryFrequency']=_0x3ba8bd[_0xefaa('0x1c')]||0x96;this[_0xefaa('0x1d')]=_0x3ba8bd[_0xefaa('0x1d')]||0x3;this[_0xefaa('0x1e')]=_0x3ba8bd['dialAgentRejectRetryFrequency']||0x96;this[_0xefaa('0x1f')]=_0x3ba8bd['dialOrderByScheduledAt']||_0xefaa('0x20');this['dialPrefix']=_0x3ba8bd[_0xefaa('0x21')]||undefined;this[_0xefaa('0x22')]=_0x3ba8bd['dialRandomLastDigitCallerIdNumber']||undefined;this['dialCutDigit']=_0x3ba8bd[_0xefaa('0x23')]||undefined;this['TrunkBackup']=_0x3ba8bd[_0xefaa('0x24')]?_0x3ba8bd[_0xefaa('0x24')]:undefined;this['Trunk']=_0x3ba8bd[_0xefaa('0x25')]?_0x3ba8bd[_0xefaa('0x25')]:undefined;this[_0xefaa('0x26')]=_0x3ba8bd['Interval']?_0x3ba8bd[_0xefaa('0x26')]:undefined;this[_0xefaa('0x27')]=_0x3ba8bd['SquareProject']?_0x3ba8bd[_0xefaa('0x27')]:undefined;this['dialQueueProject']=_0x3ba8bd['SquareProject']?_0x3ba8bd[_0xefaa('0x27')]['name']:undefined;this[_0xefaa('0x28')]=_0x3ba8bd['dialAMDActive']||![];this[_0xefaa('0x29')]=_0x3ba8bd[_0xefaa('0x29')];this['dialAMDGreeting']=_0x3ba8bd['dialAMDGreeting'];this['dialAMDAfterGreetingSilence']=_0x3ba8bd[_0xefaa('0x2a')];this[_0xefaa('0x2b')]=_0x3ba8bd[_0xefaa('0x2b')];this[_0xefaa('0x2c')]=_0x3ba8bd[_0xefaa('0x2c')];this[_0xefaa('0x2d')]=_0x3ba8bd[_0xefaa('0x2d')];this[_0xefaa('0x2e')]=_0x3ba8bd[_0xefaa('0x2e')];this['dialAMDSilenceThreshold']=_0x3ba8bd[_0xefaa('0x2f')];this['dialAMDMaximumWordLength']=_0x3ba8bd[_0xefaa('0x30')];}module[_0xefaa('0x31')]=Campaign;
\ No newline at end of file
+var _0x03ae=['dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDMaximumWordLength','exports','name','type','temp','ivrTotalCallsDays','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject'];(function(_0x218551,_0x4c7ae8){var _0x24466f=function(_0x5e48b0){while(--_0x5e48b0){_0x218551['push'](_0x218551['shift']());}};_0x24466f(++_0x4c7ae8);}(_0x03ae,0x154));var _0xe03a=function(_0xd1d19a,_0x1933f0){_0xd1d19a=_0xd1d19a-0x0;var _0x52a79d=_0x03ae[_0xd1d19a];return _0x52a79d;};'use strict';function Campaign(_0xb84ca2){this['id']=_0xb84ca2['id']||0x0;this[_0xe03a('0x0')]=_0xb84ca2['name']||'';this[_0xe03a('0x1')]=_0xb84ca2[_0xe03a('0x1')]||'campaign';this['originated']=0x0;this[_0xe03a('0x2')]=0x0;this['ivrAnswerCallsDay']=0x0;this[_0xe03a('0x3')]=0x0;this['message']='';this['sendMessageOneNotActive']=!![];this['active']=_0xb84ca2[_0xe03a('0x4')];this[_0xe03a('0x5')]=_0xb84ca2[_0xe03a('0x5')];this['dialTimezone']=_0xb84ca2[_0xe03a('0x6')]||null;this[_0xe03a('0x7')]=_0xb84ca2['dialGlobalInterval']?_0xb84ca2['dialGlobalInterval']:null;this[_0xe03a('0x8')]=_0xb84ca2[_0xe03a('0x8')];this[_0xe03a('0x9')]=_0xb84ca2[_0xe03a('0x9')];this[_0xe03a('0xa')]=_0xb84ca2[_0xe03a('0xa')]||0x1e;this[_0xe03a('0xb')]=_0xb84ca2[_0xe03a('0xb')];this['dialCongestionRetryFrequency']=_0xb84ca2[_0xe03a('0xc')];this[_0xe03a('0xd')]=_0xb84ca2[_0xe03a('0xd')];this[_0xe03a('0xe')]=_0xb84ca2[_0xe03a('0xe')];this['dialNoAnswerMaxRetry']=_0xb84ca2[_0xe03a('0xf')];this[_0xe03a('0x10')]=_0xb84ca2[_0xe03a('0x10')];this['dialGlobalMaxRetry']=_0xb84ca2['dialGlobalMaxRetry'];this[_0xe03a('0x11')]=_0xb84ca2[_0xe03a('0x11')]||0x3;this[_0xe03a('0x12')]=_0xb84ca2['dialNoSuchNumberRetryFrequency']||0x96;this[_0xe03a('0x13')]=_0xb84ca2['dialDropMaxRetry']||0x3;this[_0xe03a('0x14')]=_0xb84ca2[_0xe03a('0x14')]||0x96;this[_0xe03a('0x15')]=_0xb84ca2[_0xe03a('0x15')]||0x3;this[_0xe03a('0x16')]=_0xb84ca2[_0xe03a('0x16')]||0x96;this[_0xe03a('0x17')]=_0xb84ca2['dialMachineMaxRetry']||0x3;this['dialMachineRetryFrequency']=_0xb84ca2[_0xe03a('0x18')]||0x96;this[_0xe03a('0x19')]=_0xb84ca2['dialAgentRejectMaxRetry']||0x3;this[_0xe03a('0x1a')]=_0xb84ca2[_0xe03a('0x1a')]||0x96;this[_0xe03a('0x1b')]=_0xb84ca2[_0xe03a('0x1b')]||_0xe03a('0x1c');this[_0xe03a('0x1d')]=_0xb84ca2[_0xe03a('0x1d')]||undefined;this[_0xe03a('0x1e')]=_0xb84ca2['dialRandomLastDigitCallerIdNumber']||undefined;this[_0xe03a('0x1f')]=_0xb84ca2[_0xe03a('0x1f')]||undefined;this[_0xe03a('0x20')]=_0xb84ca2[_0xe03a('0x20')]?_0xb84ca2[_0xe03a('0x20')]:undefined;this[_0xe03a('0x21')]=_0xb84ca2[_0xe03a('0x21')]?_0xb84ca2['Trunk']:undefined;this['Interval']=_0xb84ca2[_0xe03a('0x22')]?_0xb84ca2[_0xe03a('0x22')]:undefined;this[_0xe03a('0x23')]=_0xb84ca2[_0xe03a('0x23')]?_0xb84ca2[_0xe03a('0x23')]:undefined;this[_0xe03a('0x24')]=_0xb84ca2[_0xe03a('0x23')]?_0xb84ca2[_0xe03a('0x23')][_0xe03a('0x0')]:undefined;this['dialAMDActive']=_0xb84ca2[_0xe03a('0x25')]||![];this[_0xe03a('0x26')]=_0xb84ca2[_0xe03a('0x26')];this[_0xe03a('0x27')]=_0xb84ca2[_0xe03a('0x27')];this[_0xe03a('0x28')]=_0xb84ca2[_0xe03a('0x28')];this[_0xe03a('0x29')]=_0xb84ca2[_0xe03a('0x29')];this[_0xe03a('0x2a')]=_0xb84ca2[_0xe03a('0x2a')];this['dialAMDBetweenWordsSilence']=_0xb84ca2[_0xe03a('0x2b')];this[_0xe03a('0x2c')]=_0xb84ca2[_0xe03a('0x2c')];this['dialAMDSilenceThreshold']=_0xb84ca2['dialAMDSilenceThreshold'];this[_0xe03a('0x2d')]=_0xb84ca2['dialAMDMaximumWordLength'];}module[_0xe03a('0x2e')]=Campaign;
\ No newline at end of file
index 1431b3d..3931db2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6da=['accountcode','uniqueid','answered','endtime','unmanaged','lastapplication','duration','billableseconds','holdtime','type','disposition','monitorFilename','queue','monitors','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','exports','channel','destinationchannel','calleridnum','calleridname','connectedlinenum','connectedlinename'];(function(_0x2ad0f8,_0x538693){var _0x26c3cb=function(_0x4a72a6){while(--_0x4a72a6){_0x2ad0f8['push'](_0x2ad0f8['shift']());}};_0x26c3cb(++_0x538693);}(_0xe6da,0x1ee));var _0xae6d=function(_0x267eaa,_0x10e7f5){_0x267eaa=_0x267eaa-0x0;var _0x567a81=_0xe6da[_0x267eaa];return _0x567a81;};'use strict';function Channel(){this['starttime']=null;this[_0xae6d('0x0')]='';this[_0xae6d('0x1')]='';this[_0xae6d('0x2')]=0x0;this[_0xae6d('0x3')]='';this[_0xae6d('0x4')]=undefined;this[_0xae6d('0x5')]=undefined;this[_0xae6d('0x6')]=0x0;this['context']='';this[_0xae6d('0x7')]=0x0;this['linkedid']=0x0;this['exten']=0x0;this[_0xae6d('0x8')]=![];this['answertime']=null;this[_0xae6d('0x9')]=null;this[_0xae6d('0xa')]=![];this['abandoned']=![];this[_0xae6d('0xb')]='';this['lastdata']='';this[_0xae6d('0xc')]=0x0;this[_0xae6d('0xd')]=0x0;this[_0xae6d('0xe')]=0x0;this[_0xae6d('0xf')]=null;this['tag']=null;this[_0xae6d('0x10')]=null;this['monitor']=![];this[_0xae6d('0x11')]=null;this[_0xae6d('0x12')]=null;this[_0xae6d('0x13')]=[];this[_0xae6d('0x14')]=undefined;this[_0xae6d('0x15')]=undefined;this[_0xae6d('0x16')]=undefined;this[_0xae6d('0x17')]=0x0;}module[_0xae6d('0x18')]=Channel;
\ No newline at end of file
+var _0xb235=['uniqueid','exten','answered','answertime','unmanaged','lastdata','duration','holdtime','type','tag','disposition','monitor','monitorFilename','queue','monitors','transfercalleridnum','transferconnectedlinenum','transferType','exports','calleridnum','calleridname','connectedlinenum','connectedlinename','accountcode','context'];(function(_0x3a4960,_0x114a33){var _0x3380ef=function(_0x646b18){while(--_0x646b18){_0x3a4960['push'](_0x3a4960['shift']());}};_0x3380ef(++_0x114a33);}(_0xb235,0x10d));var _0x5b23=function(_0x31c5fd,_0x33131f){_0x31c5fd=_0x31c5fd-0x0;var _0x3799ab=_0xb235[_0x31c5fd];return _0x3799ab;};'use strict';function Channel(){this['starttime']=null;this['channel']='';this['destinationchannel']='';this[_0x5b23('0x0')]=0x0;this[_0x5b23('0x1')]='';this[_0x5b23('0x2')]=undefined;this[_0x5b23('0x3')]=undefined;this[_0x5b23('0x4')]=0x0;this[_0x5b23('0x5')]='';this[_0x5b23('0x6')]=0x0;this['linkedid']=0x0;this[_0x5b23('0x7')]=0x0;this[_0x5b23('0x8')]=![];this[_0x5b23('0x9')]=null;this['endtime']=null;this[_0x5b23('0xa')]=![];this['abandoned']=![];this['lastapplication']='';this[_0x5b23('0xb')]='';this[_0x5b23('0xc')]=0x0;this['billableseconds']=0x0;this[_0x5b23('0xd')]=0x0;this[_0x5b23('0xe')]=null;this[_0x5b23('0xf')]=null;this[_0x5b23('0x10')]=null;this[_0x5b23('0x11')]=![];this[_0x5b23('0x12')]=null;this[_0x5b23('0x13')]=null;this[_0x5b23('0x14')]=[];this[_0x5b23('0x15')]=undefined;this[_0x5b23('0x16')]=undefined;this[_0x5b23('0x17')]=undefined;this['mohtime']=0x0;}module[_0x5b23('0x18')]=Channel;
\ No newline at end of file
index b91bbcb..e7f4efd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61c4=['consumerSecret','token','tokenSecret','type','serverUrl','Configurations','exports','name','username','remoteUri','authType','consumerKey'];(function(_0x2a19cf,_0x3b64cb){var _0xcf810b=function(_0x237ffd){while(--_0x237ffd){_0x2a19cf['push'](_0x2a19cf['shift']());}};_0xcf810b(++_0x3b64cb);}(_0x61c4,0x193));var _0x461c=function(_0x5ba223,_0x23afbe){_0x5ba223=_0x5ba223-0x0;var _0x1a08ac=_0x61c4[_0x5ba223];return _0x1a08ac;};'use strict';function DeskAccount(_0x46b2c7){this['id']=_0x46b2c7['id']||0x0;this[_0x461c('0x0')]=_0x46b2c7[_0x461c('0x0')]||'';this[_0x461c('0x1')]=_0x46b2c7['username']||'';this[_0x461c('0x2')]=_0x46b2c7[_0x461c('0x2')]||'';this[_0x461c('0x3')]=_0x46b2c7['authType']||'';this['password']=_0x46b2c7['password']||'';this[_0x461c('0x4')]=_0x46b2c7[_0x461c('0x4')]||'';this['consumerSecret']=_0x46b2c7[_0x461c('0x5')]||'';this['token']=_0x46b2c7[_0x461c('0x6')]||'';this[_0x461c('0x7')]=_0x46b2c7[_0x461c('0x7')]||'';this[_0x461c('0x8')]=_0x46b2c7[_0x461c('0x8')]||'';this[_0x461c('0x9')]=_0x46b2c7[_0x461c('0x9')]||'';this[_0x461c('0xa')]=_0x46b2c7[_0x461c('0xa')]||{};}module[_0x461c('0xb')]=DeskAccount;
\ No newline at end of file
+var _0x51e0=['authType','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','name','username','remoteUri'];(function(_0xa72a5a,_0xdaa416){var _0x5d5abf=function(_0x512e89){while(--_0x512e89){_0xa72a5a['push'](_0xa72a5a['shift']());}};_0x5d5abf(++_0xdaa416);}(_0x51e0,0x76));var _0x051e=function(_0x553b91,_0x3aadea){_0x553b91=_0x553b91-0x0;var _0x2ce0f5=_0x51e0[_0x553b91];return _0x2ce0f5;};'use strict';function DeskAccount(_0x5adff3){this['id']=_0x5adff3['id']||0x0;this['name']=_0x5adff3[_0x051e('0x0')]||'';this['username']=_0x5adff3[_0x051e('0x1')]||'';this[_0x051e('0x2')]=_0x5adff3[_0x051e('0x2')]||'';this['authType']=_0x5adff3[_0x051e('0x3')]||'';this['password']=_0x5adff3['password']||'';this[_0x051e('0x4')]=_0x5adff3[_0x051e('0x4')]||'';this['consumerSecret']=_0x5adff3[_0x051e('0x5')]||'';this[_0x051e('0x6')]=_0x5adff3['token']||'';this[_0x051e('0x7')]=_0x5adff3[_0x051e('0x7')]||'';this[_0x051e('0x8')]=_0x5adff3['type']||'';this['serverUrl']=_0x5adff3[_0x051e('0x9')]||'';this[_0x051e('0xa')]=_0x5adff3['Configurations']||{};}module['exports']=DeskAccount;
\ No newline at end of file
index 4435641..2caa5b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7c8=['modernAuthentication','Configurations','CloudProvider','exports','name','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl'];(function(_0x66f3d3,_0x340a35){var _0x161326=function(_0x4cde3c){while(--_0x4cde3c){_0x66f3d3['push'](_0x66f3d3['shift']());}};_0x161326(++_0x340a35);}(_0xb7c8,0x94));var _0x8b7c=function(_0x1ac772,_0x285d30){_0x1ac772=_0x1ac772-0x0;var _0x2da529=_0xb7c8[_0x1ac772];return _0x2da529;};'use strict';function Dynamics365Account(_0x3975fe){this['id']=_0x3975fe['id']||0x0;this[_0x8b7c('0x0')]=_0x3975fe['name']||'';this[_0x8b7c('0x1')]=_0x3975fe['username']||'';this[_0x8b7c('0x2')]=_0x3975fe[_0x8b7c('0x2')]||'';this[_0x8b7c('0x3')]=_0x3975fe[_0x8b7c('0x3')]||'';this[_0x8b7c('0x4')]=_0x3975fe['tenantId']||'';this[_0x8b7c('0x5')]=_0x3975fe['clientId']||'';this[_0x8b7c('0x6')]=_0x3975fe['clientSecret']||{};this[_0x8b7c('0x7')]=_0x3975fe[_0x8b7c('0x7')]||'';this[_0x8b7c('0x8')]=_0x3975fe['modernAuthentication']||![];this[_0x8b7c('0x9')]=_0x3975fe[_0x8b7c('0x9')]||{};this[_0x8b7c('0xa')]=_0x3975fe[_0x8b7c('0xa')]||{};}module[_0x8b7c('0xb')]=Dynamics365Account;
\ No newline at end of file
+var _0x3545=['exports','name','username','password','remoteUri','tenantId','clientId','clientSecret','modernAuthentication','Configurations','CloudProvider'];(function(_0x4df58e,_0xf2d8dd){var _0x16ac17=function(_0x28a08c){while(--_0x28a08c){_0x4df58e['push'](_0x4df58e['shift']());}};_0x16ac17(++_0xf2d8dd);}(_0x3545,0x18d));var _0x5354=function(_0x11fe8d,_0x19aba4){_0x11fe8d=_0x11fe8d-0x0;var _0x356099=_0x3545[_0x11fe8d];return _0x356099;};'use strict';function Dynamics365Account(_0x40a7dd){this['id']=_0x40a7dd['id']||0x0;this[_0x5354('0x0')]=_0x40a7dd['name']||'';this[_0x5354('0x1')]=_0x40a7dd[_0x5354('0x1')]||'';this[_0x5354('0x2')]=_0x40a7dd['password']||'';this[_0x5354('0x3')]=_0x40a7dd[_0x5354('0x3')]||'';this[_0x5354('0x4')]=_0x40a7dd['tenantId']||'';this[_0x5354('0x5')]=_0x40a7dd[_0x5354('0x5')]||'';this[_0x5354('0x6')]=_0x40a7dd[_0x5354('0x6')]||{};this['serverUrl']=_0x40a7dd['serverUrl']||'';this[_0x5354('0x7')]=_0x40a7dd[_0x5354('0x7')]||![];this[_0x5354('0x8')]=_0x40a7dd[_0x5354('0x8')]||{};this[_0x5354('0x9')]=_0x40a7dd['CloudProvider']||{};}module[_0x5354('0xa')]=Dynamics365Account;
\ No newline at end of file
index eac69d2..0b9e703 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13ac=['localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports','name','description','ecm','headerinfo'];(function(_0xd5cefc,_0x677c71){var _0x155997=function(_0x3059b4){while(--_0x3059b4){_0xd5cefc['push'](_0xd5cefc['shift']());}};_0x155997(++_0x677c71);}(_0x13ac,0xb0));var _0xc13a=function(_0x583d3a,_0x309eec){_0x583d3a=_0x583d3a-0x0;var _0x3a8d4c=_0x13ac[_0x583d3a];return _0x3a8d4c;};'use strict';function FaxAccount(_0x1839cb){this['id']=_0x1839cb['id']||0x0;this[_0xc13a('0x0')]=_0x1839cb[_0xc13a('0x0')]||'';this[_0xc13a('0x1')]=_0x1839cb[_0xc13a('0x1')];this['ecm']=_0x1839cb[_0xc13a('0x2')];this[_0xc13a('0x3')]=_0x1839cb[_0xc13a('0x3')];this['localstationid']=_0x1839cb[_0xc13a('0x4')];this['minrate']=_0x1839cb[_0xc13a('0x5')]||0x960;this[_0xc13a('0x6')]=_0x1839cb[_0xc13a('0x6')]||0x3840;this['modem']=_0x1839cb[_0xc13a('0x7')]||_0xc13a('0x8');this[_0xc13a('0x9')]=_0x1839cb[_0xc13a('0x9')]||'no';this[_0xc13a('0xa')]=_0x1839cb[_0xc13a('0xa')]||'no';this[_0xc13a('0xb')]=_0x1839cb[_0xc13a('0xb')]||0x1388;this['tech']=_0x1839cb[_0xc13a('0xc')]||_0xc13a('0xd');this[_0xc13a('0xe')]=_0x1839cb[_0xc13a('0xe')]?_0x1839cb['Trunk']:undefined;this[_0xc13a('0xf')]=_0x1839cb[_0xc13a('0xf')];this['key']=_0x1839cb[_0xc13a('0x10')];}module[_0xc13a('0x11')]=FaxAccount;
\ No newline at end of file
+var _0x81a5=['key','exports','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk'];(function(_0x4661ed,_0x4e3907){var _0x3a28c3=function(_0x10f02){while(--_0x10f02){_0x4661ed['push'](_0x4661ed['shift']());}};_0x3a28c3(++_0x4e3907);}(_0x81a5,0xa2));var _0x581a=function(_0x152100,_0x18919c){_0x152100=_0x152100-0x0;var _0x1a57be=_0x81a5[_0x152100];return _0x1a57be;};'use strict';function FaxAccount(_0x4bcab8){this['id']=_0x4bcab8['id']||0x0;this['name']=_0x4bcab8['name']||'';this[_0x581a('0x0')]=_0x4bcab8[_0x581a('0x0')];this[_0x581a('0x1')]=_0x4bcab8[_0x581a('0x1')];this[_0x581a('0x2')]=_0x4bcab8[_0x581a('0x2')];this[_0x581a('0x3')]=_0x4bcab8[_0x581a('0x3')];this[_0x581a('0x4')]=_0x4bcab8['minrate']||0x960;this[_0x581a('0x5')]=_0x4bcab8[_0x581a('0x5')]||0x3840;this['modem']=_0x4bcab8[_0x581a('0x6')]||_0x581a('0x7');this[_0x581a('0x8')]=_0x4bcab8[_0x581a('0x8')]||'no';this[_0x581a('0x9')]=_0x4bcab8[_0x581a('0x9')]||'no';this[_0x581a('0xa')]=_0x4bcab8[_0x581a('0xa')]||0x1388;this['tech']=_0x4bcab8[_0x581a('0xb')]||_0x581a('0xc');this[_0x581a('0xd')]=_0x4bcab8[_0x581a('0xd')]?_0x4bcab8[_0x581a('0xd')]:undefined;this['ListId']=_0x4bcab8['ListId'];this[_0x581a('0xe')]=_0x4bcab8['key'];}module[_0x581a('0xf')]=FaxAccount;
\ No newline at end of file
index 3f5b1b9..27433a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c60=['serverUrl','Configurations','exports','username','token'];(function(_0x1b7780,_0x4b9c6b){var _0xc8b61d=function(_0x504686){while(--_0x504686){_0x1b7780['push'](_0x1b7780['shift']());}};_0xc8b61d(++_0x4b9c6b);}(_0x5c60,0x1ca));var _0x05c6=function(_0xbf781c,_0x44fed4){_0xbf781c=_0xbf781c-0x0;var _0x549862=_0x5c60[_0xbf781c];return _0x549862;};'use strict';function FreshdeskAccount(_0x3daf6d){this['id']=_0x3daf6d['id']||0x0;this['name']=_0x3daf6d['name']||'';this[_0x05c6('0x0')]=_0x3daf6d[_0x05c6('0x0')]||'';this['apiKey']=_0x3daf6d[_0x05c6('0x1')]||'';this['remoteUri']=_0x3daf6d['remoteUri']||'';this[_0x05c6('0x2')]=_0x3daf6d[_0x05c6('0x2')]||'';this[_0x05c6('0x3')]=_0x3daf6d[_0x05c6('0x3')]||{};}module[_0x05c6('0x4')]=FreshdeskAccount;
\ No newline at end of file
+var _0xf83b=['Configurations','exports','name','username','apiKey','token','remoteUri','serverUrl'];(function(_0x5ea908,_0x1dae33){var _0x2d7bb4=function(_0x19663e){while(--_0x19663e){_0x5ea908['push'](_0x5ea908['shift']());}};_0x2d7bb4(++_0x1dae33);}(_0xf83b,0x142));var _0xbf83=function(_0x1b13f6,_0x410a49){_0x1b13f6=_0x1b13f6-0x0;var _0x14d1c5=_0xf83b[_0x1b13f6];return _0x14d1c5;};'use strict';function FreshdeskAccount(_0x580997){this['id']=_0x580997['id']||0x0;this['name']=_0x580997[_0xbf83('0x0')]||'';this[_0xbf83('0x1')]=_0x580997['username']||'';this[_0xbf83('0x2')]=_0x580997[_0xbf83('0x3')]||'';this[_0xbf83('0x4')]=_0x580997[_0xbf83('0x4')]||'';this[_0xbf83('0x5')]=_0x580997[_0xbf83('0x5')]||'';this[_0xbf83('0x6')]=_0x580997[_0xbf83('0x6')]||{};}module[_0xbf83('0x7')]=FreshdeskAccount;
\ No newline at end of file
index 433e500..f72a32c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18af=['exports','name','username','remoteUri','serverUrl','Configurations'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x18af,0x8b));var _0xf18a=function(_0x4ab396,_0x19d73c){_0x4ab396=_0x4ab396-0x0;var _0x219196=_0x18af[_0x4ab396];return _0x219196;};'use strict';function FreshsalesAccount(_0x211cc7){this['id']=_0x211cc7['id']||0x0;this['name']=_0x211cc7[_0xf18a('0x0')]||'';this['username']=_0x211cc7[_0xf18a('0x1')]||'';this['apiKey']=_0x211cc7['token']||'';this['remoteUri']=_0x211cc7[_0xf18a('0x2')]||'';this[_0xf18a('0x3')]=_0x211cc7[_0xf18a('0x3')]||'';this[_0xf18a('0x4')]=_0x211cc7['Configurations']||{};}module[_0xf18a('0x5')]=FreshsalesAccount;
\ No newline at end of file
+var _0x8819=['remoteUri','serverUrl','Configurations','exports','name','username','apiKey','token'];(function(_0x5a9c0c,_0x4ec485){var _0x53c77d=function(_0x1cf384){while(--_0x1cf384){_0x5a9c0c['push'](_0x5a9c0c['shift']());}};_0x53c77d(++_0x4ec485);}(_0x8819,0x94));var _0x9881=function(_0x44f3d9,_0x2f9f31){_0x44f3d9=_0x44f3d9-0x0;var _0x5ece8b=_0x8819[_0x44f3d9];return _0x5ece8b;};'use strict';function FreshsalesAccount(_0x46ac3c){this['id']=_0x46ac3c['id']||0x0;this['name']=_0x46ac3c[_0x9881('0x0')]||'';this[_0x9881('0x1')]=_0x46ac3c[_0x9881('0x1')]||'';this[_0x9881('0x2')]=_0x46ac3c[_0x9881('0x3')]||'';this['remoteUri']=_0x46ac3c[_0x9881('0x4')]||'';this[_0x9881('0x5')]=_0x46ac3c[_0x9881('0x5')]||'';this[_0x9881('0x6')]=_0x46ac3c[_0x9881('0x6')]||{};}module[_0x9881('0x7')]=FreshsalesAccount;
\ No newline at end of file
index 0029178..de3226d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2313=['routealias','mohtime','variables','exports','type','inbound','uniqueid','calleridname','queue','queuecallerleaveAt','position','count','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','originalposition','channel','connectedlinenum','connectedlinename','context','exten','priority','holdtime','assigned','lastAssignedTo','motionChannel','voice'];(function(_0x5283c8,_0x284a19){var _0x221b39=function(_0x2b101e){while(--_0x2b101e){_0x5283c8['push'](_0x5283c8['shift']());}};_0x221b39(++_0x284a19);}(_0x2313,0x163));var _0x3231=function(_0x3911be,_0x3053a6){_0x3911be=_0x3911be-0x0;var _0x4a1b7a=_0x2313[_0x3911be];return _0x4a1b7a;};'use strict';function QueueReport(){this[_0x3231('0x0')]=_0x3231('0x1');this[_0x3231('0x2')]='';this['calleridnum']='';this[_0x3231('0x3')]='';this[_0x3231('0x4')]='';this['queuecallerjoinAt']=null;this[_0x3231('0x5')]=null;this[_0x3231('0x6')]=0x1;this[_0x3231('0x7')]=0x1;this['queuecallerabandon']=![];this[_0x3231('0x8')]=null;this[_0x3231('0x9')]=![];this[_0x3231('0xa')]=null;this['queuecallerexit']=![];this['queuecallerexitAt']=null;this[_0x3231('0xb')]=0x1;this[_0x3231('0xc')]='';this[_0x3231('0xd')]='';this[_0x3231('0xe')]='';this['accountcode']='';this[_0x3231('0xf')]='';this[_0x3231('0x10')]='';this[_0x3231('0x11')]='';this[_0x3231('0x12')]=0x0;this[_0x3231('0x13')]=![];this[_0x3231('0x14')]='';this[_0x3231('0x15')]=_0x3231('0x16');this[_0x3231('0x17')]=null;this[_0x3231('0x18')]=0x0;this[_0x3231('0x19')]={};}module[_0x3231('0x1a')]=QueueReport;
\ No newline at end of file
+var _0x4e97=['variables','exports','inbound','uniqueid','calleridnum','queuecallerjoinAt','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinename','accountcode','context','exten','priority','holdtime','assigned','lastAssignedTo','motionChannel','voice','routealias','mohtime'];(function(_0x5f309e,_0x66e31){var _0x487b5e=function(_0x44f203){while(--_0x44f203){_0x5f309e['push'](_0x5f309e['shift']());}};_0x487b5e(++_0x66e31);}(_0x4e97,0xf5));var _0x74e9=function(_0x2480a9,_0x59ec2f){_0x2480a9=_0x2480a9-0x0;var _0x1954bd=_0x4e97[_0x2480a9];return _0x1954bd;};'use strict';function QueueReport(){this['type']=_0x74e9('0x0');this[_0x74e9('0x1')]='';this[_0x74e9('0x2')]='';this['calleridname']='';this['queue']='';this[_0x74e9('0x3')]=null;this['queuecallerleaveAt']=null;this['position']=0x1;this[_0x74e9('0x4')]=0x1;this[_0x74e9('0x5')]=![];this[_0x74e9('0x6')]=null;this[_0x74e9('0x7')]=![];this[_0x74e9('0x8')]=null;this[_0x74e9('0x9')]=![];this[_0x74e9('0xa')]=null;this[_0x74e9('0xb')]=0x1;this[_0x74e9('0xc')]='';this['connectedlinenum']='';this[_0x74e9('0xd')]='';this[_0x74e9('0xe')]='';this[_0x74e9('0xf')]='';this[_0x74e9('0x10')]='';this[_0x74e9('0x11')]='';this[_0x74e9('0x12')]=0x0;this[_0x74e9('0x13')]=![];this[_0x74e9('0x14')]='';this[_0x74e9('0x15')]=_0x74e9('0x16');this[_0x74e9('0x17')]=null;this[_0x74e9('0x18')]=0x0;this[_0x74e9('0x19')]={};}module[_0x74e9('0x1a')]=QueueReport;
\ No newline at end of file
index 9a2dfa9..10c0fee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc247=['exports','name','username','remoteUri','password','clientId','clientSecret','securityToken','type','serverUrl','Configurations'];(function(_0x355250,_0x46287f){var _0x5d3c8d=function(_0x596523){while(--_0x596523){_0x355250['push'](_0x355250['shift']());}};_0x5d3c8d(++_0x46287f);}(_0xc247,0xfe));var _0x7c24=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xc247[_0x3b380d];return _0x54502b;};'use strict';function SalesforceAccount(_0xec41fe){this['id']=_0xec41fe['id']||0x0;this[_0x7c24('0x0')]=_0xec41fe[_0x7c24('0x0')]||'';this['username']=_0xec41fe[_0x7c24('0x1')]||'';this[_0x7c24('0x2')]=_0xec41fe['remoteUri']||'';this['password']=_0xec41fe[_0x7c24('0x3')]||'';this[_0x7c24('0x4')]=_0xec41fe[_0x7c24('0x4')]||'';this[_0x7c24('0x5')]=_0xec41fe[_0x7c24('0x5')]||'';this[_0x7c24('0x6')]=_0xec41fe[_0x7c24('0x6')]||'';this[_0x7c24('0x7')]=_0xec41fe[_0x7c24('0x7')]||'integrationTab';this[_0x7c24('0x8')]=_0xec41fe['serverUrl']||'';this['Configurations']=_0xec41fe[_0x7c24('0x9')]||{};}module[_0x7c24('0xa')]=SalesforceAccount;
\ No newline at end of file
+var _0x1777=['name','username','remoteUri','password','clientId','clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','exports'];(function(_0x567d9c,_0x50405d){var _0x472c9b=function(_0x1e0ba){while(--_0x1e0ba){_0x567d9c['push'](_0x567d9c['shift']());}};_0x472c9b(++_0x50405d);}(_0x1777,0x168));var _0x7177=function(_0x5728d5,_0x52b7e6){_0x5728d5=_0x5728d5-0x0;var _0x37809a=_0x1777[_0x5728d5];return _0x37809a;};'use strict';function SalesforceAccount(_0x5e6335){this['id']=_0x5e6335['id']||0x0;this[_0x7177('0x0')]=_0x5e6335[_0x7177('0x0')]||'';this[_0x7177('0x1')]=_0x5e6335[_0x7177('0x1')]||'';this['remoteUri']=_0x5e6335[_0x7177('0x2')]||'';this[_0x7177('0x3')]=_0x5e6335[_0x7177('0x3')]||'';this[_0x7177('0x4')]=_0x5e6335[_0x7177('0x4')]||'';this[_0x7177('0x5')]=_0x5e6335[_0x7177('0x5')]||'';this[_0x7177('0x6')]=_0x5e6335[_0x7177('0x6')]||'';this[_0x7177('0x7')]=_0x5e6335[_0x7177('0x7')]||_0x7177('0x8');this[_0x7177('0x9')]=_0x5e6335['serverUrl']||'';this['Configurations']=_0x5e6335[_0x7177('0xa')]||{};}module[_0x7177('0xb')]=SalesforceAccount;
\ No newline at end of file
index a21c95d..e35ff92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a55=['exports','name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x30a900,_0x37daf9){var _0x31d7f3=function(_0x41373a){while(--_0x41373a){_0x30a900['push'](_0x30a900['shift']());}};_0x31d7f3(++_0x37daf9);}(_0x5a55,0x17b));var _0x55a5=function(_0x590851,_0x496bee){_0x590851=_0x590851-0x0;var _0x3b0115=_0x5a55[_0x590851];return _0x3b0115;};'use strict';function ServicenowAccount(_0x20e301){this['id']=_0x20e301['id']||0x0;this[_0x55a5('0x0')]=_0x20e301['name']||'';this[_0x55a5('0x1')]=_0x20e301[_0x55a5('0x1')]||'';this[_0x55a5('0x2')]=_0x20e301[_0x55a5('0x2')]||'';this['remoteUri']=_0x20e301[_0x55a5('0x3')]||'';this[_0x55a5('0x4')]=_0x20e301[_0x55a5('0x4')]||'';this[_0x55a5('0x5')]=_0x20e301[_0x55a5('0x5')]||{};}module[_0x55a5('0x6')]=ServicenowAccount;
\ No newline at end of file
+var _0x7be2=['username','password','remoteUri','serverUrl','Configurations','exports','name'];(function(_0x47ba39,_0x10f228){var _0x1157f9=function(_0x20f0ea){while(--_0x20f0ea){_0x47ba39['push'](_0x47ba39['shift']());}};_0x1157f9(++_0x10f228);}(_0x7be2,0x6f));var _0x27be=function(_0x37510a,_0xbd8503){_0x37510a=_0x37510a-0x0;var _0x5618e5=_0x7be2[_0x37510a];return _0x5618e5;};'use strict';function ServicenowAccount(_0x275be1){this['id']=_0x275be1['id']||0x0;this['name']=_0x275be1[_0x27be('0x0')]||'';this[_0x27be('0x1')]=_0x275be1[_0x27be('0x1')]||'';this[_0x27be('0x2')]=_0x275be1[_0x27be('0x2')]||'';this[_0x27be('0x3')]=_0x275be1[_0x27be('0x3')]||'';this[_0x27be('0x4')]=_0x275be1[_0x27be('0x4')]||'';this[_0x27be('0x5')]=_0x275be1[_0x27be('0x5')]||{};}module[_0x27be('0x6')]=ServicenowAccount;
\ No newline at end of file
index 1d10b3e..3c8a393 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ac2=['name','username','remoteUri','serverUrl','exports'];(function(_0x263b35,_0x421508){var _0x48168e=function(_0x3bb3a6){while(--_0x3bb3a6){_0x263b35['push'](_0x263b35['shift']());}};_0x48168e(++_0x421508);}(_0x3ac2,0x159));var _0x23ac=function(_0x576b95,_0x4a3165){_0x576b95=_0x576b95-0x0;var _0x4b744b=_0x3ac2[_0x576b95];return _0x4b744b;};'use strict';function SugarcrmAccount(_0x4d4ae9){this['id']=_0x4d4ae9['id']||0x0;this[_0x23ac('0x0')]=_0x4d4ae9[_0x23ac('0x0')]||'';this[_0x23ac('0x1')]=_0x4d4ae9['username']||'';this['password']=_0x4d4ae9['password']||'';this['remoteUri']=_0x4d4ae9[_0x23ac('0x2')]||'';this[_0x23ac('0x3')]=_0x4d4ae9[_0x23ac('0x3')]||'';this['Configurations']=_0x4d4ae9['Configurations']||{};}module[_0x23ac('0x4')]=SugarcrmAccount;
\ No newline at end of file
+var _0x5e3f=['Configurations','exports','name','username','password','remoteUri','serverUrl'];(function(_0x154d88,_0x485504){var _0x5f2793=function(_0x31cfa3){while(--_0x31cfa3){_0x154d88['push'](_0x154d88['shift']());}};_0x5f2793(++_0x485504);}(_0x5e3f,0xfe));var _0xf5e3=function(_0x1bcc04,_0x19fa70){_0x1bcc04=_0x1bcc04-0x0;var _0x443f85=_0x5e3f[_0x1bcc04];return _0x443f85;};'use strict';function SugarcrmAccount(_0x2568eb){this['id']=_0x2568eb['id']||0x0;this[_0xf5e3('0x0')]=_0x2568eb[_0xf5e3('0x0')]||'';this['username']=_0x2568eb[_0xf5e3('0x1')]||'';this[_0xf5e3('0x2')]=_0x2568eb[_0xf5e3('0x2')]||'';this[_0xf5e3('0x3')]=_0x2568eb[_0xf5e3('0x3')]||'';this[_0xf5e3('0x4')]=_0x2568eb[_0xf5e3('0x4')]||'';this[_0xf5e3('0x5')]=_0x2568eb[_0xf5e3('0x5')]||{};}module[_0xf5e3('0x6')]=SugarcrmAccount;
\ No newline at end of file
index fd1418e..e4a6156 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf51f=['status','address','name','accountcode','state','unknown','stateTime'];(function(_0x3f27fb,_0x3d3bec){var _0x5abfd8=function(_0x339c27){while(--_0x339c27){_0x3f27fb['push'](_0x3f27fb['shift']());}};_0x5abfd8(++_0x3d3bec);}(_0xf51f,0x191));var _0xff51=function(_0x102b0c,_0x33dee4){_0x102b0c=_0x102b0c-0x0;var _0x9b15ca=_0xf51f[_0x102b0c];return _0x9b15ca;};'use strict';function Telephone(_0x219c46){this['id']=_0x219c46['id']||0x0;this[_0xff51('0x0')]=_0x219c46[_0xff51('0x0')]||'';this[_0xff51('0x1')]=_0x219c46[_0xff51('0x1')]||'';this[_0xff51('0x2')]=_0xff51('0x3');this[_0xff51('0x4')]=0x0;this[_0xff51('0x5')]=_0xff51('0x3');this[_0xff51('0x6')]='';}module['exports']=Telephone;
\ No newline at end of file
+var _0x39c4=['exports','name','accountcode','state','status','unknown','address'];(function(_0x4a1547,_0x4d5164){var _0x3ad685=function(_0x3fac4c){while(--_0x3fac4c){_0x4a1547['push'](_0x4a1547['shift']());}};_0x3ad685(++_0x4d5164);}(_0x39c4,0x174));var _0x439c=function(_0x22ed64,_0x15a40f){_0x22ed64=_0x22ed64-0x0;var _0x34664e=_0x39c4[_0x22ed64];return _0x34664e;};'use strict';function Telephone(_0x58ad47){this['id']=_0x58ad47['id']||0x0;this[_0x439c('0x0')]=_0x58ad47['name']||'';this['accountcode']=_0x58ad47[_0x439c('0x1')]||'';this[_0x439c('0x2')]='unknown';this['stateTime']=0x0;this[_0x439c('0x3')]=_0x439c('0x4');this[_0x439c('0x5')]='';}module[_0x439c('0x6')]=Telephone;
\ No newline at end of file
index a8e2fec..9b61c6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0xee82c3,_0x4c3196){var _0x4c1b05=function(_0x284023){while(--_0x284023){_0xee82c3['push'](_0xee82c3['shift']());}};_0x4c1b05(++_0x4c3196);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
+var _0xb10b=['name','html'];(function(_0x4a599c,_0x23de19){var _0x262195=function(_0x3681d4){while(--_0x3681d4){_0x4a599c['push'](_0x4a599c['shift']());}};_0x262195(++_0x23de19);}(_0xb10b,0x12a));var _0xbb10=function(_0x37236d,_0x3e8445){_0x37236d=_0x37236d-0x0;var _0x5ea146=_0xb10b[_0x37236d];return _0x5ea146;};'use strict';function template(_0x13ce8d){this['id']=_0x13ce8d['id']||0x0;this['name']=_0x13ce8d[_0xbb10('0x0')]||'';this[_0xbb10('0x1')]=_0x13ce8d[_0xbb10('0x1')]||'';}module['exports']=template;
\ No newline at end of file
index 93e6b33..c45c6db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['voice','status','AnyConditions','Actions','name','channel'];(function(_0x46717b,_0x93c604){var _0x262f8d=function(_0x2522ad){while(--_0x2522ad){_0x46717b['push'](_0x46717b['shift']());}};_0x262f8d(++_0x93c604);}(_0x14a0,0x8e));var _0x014a=function(_0x864393,_0x1b9d2b){_0x864393=_0x864393-0x0;var _0x275730=_0x14a0[_0x864393];return _0x275730;};'use strict';function Trigger(_0x1ee939){this['id']=_0x1ee939['id']||0x0;this[_0x014a('0x0')]=_0x1ee939[_0x014a('0x0')]||'';this[_0x014a('0x1')]=_0x1ee939[_0x014a('0x1')]||_0x014a('0x2');this[_0x014a('0x3')]=_0x1ee939[_0x014a('0x3')]||![];this['AllConditions']=_0x1ee939['AllConditions']||[];this[_0x014a('0x4')]=_0x1ee939[_0x014a('0x4')]||[];this[_0x014a('0x5')]=_0x1ee939['Actions']||[];}module['exports']=Trigger;
\ No newline at end of file
+var _0xb7e7=['Actions','exports','name','channel','status','AllConditions','AnyConditions'];(function(_0x4fb5ce,_0x3a79f9){var _0x3c07b5=function(_0x5aed51){while(--_0x5aed51){_0x4fb5ce['push'](_0x4fb5ce['shift']());}};_0x3c07b5(++_0x3a79f9);}(_0xb7e7,0x121));var _0x7b7e=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0xb7e7[_0x36eaaa];return _0x461349;};'use strict';function Trigger(_0x2e5e07){this['id']=_0x2e5e07['id']||0x0;this['name']=_0x2e5e07[_0x7b7e('0x0')]||'';this['channel']=_0x2e5e07[_0x7b7e('0x1')]||'voice';this[_0x7b7e('0x2')]=_0x2e5e07['status']||![];this[_0x7b7e('0x3')]=_0x2e5e07[_0x7b7e('0x3')]||[];this[_0x7b7e('0x4')]=_0x2e5e07['AnyConditions']||[];this['Actions']=_0x2e5e07[_0x7b7e('0x5')]||[];}module[_0x7b7e('0x6')]=Trigger;
\ No newline at end of file
index 9b31ffa..c94bcbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca94=['exports','active','name','state','unknown','registry','indexOf','host','port','domainport','refresh','stateRegistry','address'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xca94,0xde));var _0x4ca9=function(_0x200aa5,_0x197802){_0x200aa5=_0x200aa5-0x0;var _0x458200=_0xca94[_0x200aa5];return _0x458200;};'use strict';function Trunk(_0x567777){this['id']=_0x567777['id']||0x0;this[_0x4ca9('0x0')]=_0x567777['active']||![];this[_0x4ca9('0x1')]=_0x567777['name']||'';this[_0x4ca9('0x2')]='unknown';this['stateTime']=0x0;this['status']=_0x4ca9('0x3');this['registry']=_0x567777[_0x4ca9('0x4')]&&_0x567777['registry'][_0x4ca9('0x5')](':')?_0x567777['registry']['split'](':')[0x0]:'';this[_0x4ca9('0x6')]='';this[_0x4ca9('0x7')]='';this['domain']='';this[_0x4ca9('0x8')]='';this[_0x4ca9('0x9')]='';this[_0x4ca9('0xa')]=_0x4ca9('0x3');this['registrationtime']='';this[_0x4ca9('0xb')]='';this['defaultuser']=_0x567777['defaultuser']||'';}module[_0x4ca9('0xc')]=Trunk;
\ No newline at end of file
+var _0xf6c7=['host','port','domain','domainport','refresh','stateRegistry','defaultuser','exports','active','name','unknown','status','registry','indexOf'];(function(_0x15913f,_0x3ef0e2){var _0x27d00a=function(_0x25fada){while(--_0x25fada){_0x15913f['push'](_0x15913f['shift']());}};_0x27d00a(++_0x3ef0e2);}(_0xf6c7,0xe8));var _0x7f6c=function(_0x1a3225,_0x4192c6){_0x1a3225=_0x1a3225-0x0;var _0x3a246f=_0xf6c7[_0x1a3225];return _0x3a246f;};'use strict';function Trunk(_0x4e62e2){this['id']=_0x4e62e2['id']||0x0;this[_0x7f6c('0x0')]=_0x4e62e2[_0x7f6c('0x0')]||![];this[_0x7f6c('0x1')]=_0x4e62e2[_0x7f6c('0x1')]||'';this['state']=_0x7f6c('0x2');this['stateTime']=0x0;this[_0x7f6c('0x3')]=_0x7f6c('0x2');this[_0x7f6c('0x4')]=_0x4e62e2['registry']&&_0x4e62e2['registry'][_0x7f6c('0x5')](':')?_0x4e62e2[_0x7f6c('0x4')]['split'](':')[0x0]:'';this[_0x7f6c('0x6')]='';this[_0x7f6c('0x7')]='';this[_0x7f6c('0x8')]='';this[_0x7f6c('0x9')]='';this[_0x7f6c('0xa')]='';this[_0x7f6c('0xb')]='unknown';this['registrationtime']='';this['address']='';this[_0x7f6c('0xc')]=_0x4e62e2[_0x7f6c('0xc')]||'';}module[_0x7f6c('0xd')]=Trunk;
\ No newline at end of file
index b7cf388..5ef2f8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6721=['exports','exten','none','mandatoryDisposition'];(function(_0x560434,_0x339ec1){var _0x24e61d=function(_0x14291c){while(--_0x14291c){_0x560434['push'](_0x560434['shift']());}};_0x24e61d(++_0x339ec1);}(_0x6721,0xe5));var _0x1672=function(_0x91829,_0x57edac){_0x91829=_0x91829-0x0;var _0x5e5f1f=_0x6721[_0x91829];return _0x5e5f1f;};'use strict';function voiceExtension(_0x479271){this['id']=_0x479271['id']||0x0;this[_0x1672('0x0')]=_0x479271[_0x1672('0x0')]||'';this['recordingFormat']=_0x479271['recordingFormat']||_0x1672('0x1');this[_0x1672('0x2')]=_0x479271[_0x1672('0x2')]||![];}module[_0x1672('0x3')]=voiceExtension;
\ No newline at end of file
+var _0x90f1=['mandatoryDisposition','exports','exten','recordingFormat'];(function(_0x3a9887,_0x124705){var _0x31174d=function(_0x4afd9){while(--_0x4afd9){_0x3a9887['push'](_0x3a9887['shift']());}};_0x31174d(++_0x124705);}(_0x90f1,0x1ee));var _0x190f=function(_0xe7a653,_0x202b4f){_0xe7a653=_0xe7a653-0x0;var _0x200e58=_0x90f1[_0xe7a653];return _0x200e58;};'use strict';function voiceExtension(_0x5adb28){this['id']=_0x5adb28['id']||0x0;this['exten']=_0x5adb28[_0x190f('0x0')]||'';this[_0x190f('0x1')]=_0x5adb28[_0x190f('0x1')]||'none';this[_0x190f('0x2')]=_0x5adb28[_0x190f('0x2')]||![];}module[_0x190f('0x3')]=voiceExtension;
\ No newline at end of file
index b11b304..c853a68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bd7=['dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundAbandonedDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','mandatoryDisposition','mandatoryDispositionPause','queueSummaryCountersUpdated','wav49','gsm','fewestcalls','linear','ringall','roundrobin','rrordered','wrandom','name','monitor_format','type','inbound','waiting','answered','sumBillable','unmanaged','abandoned','busy','inUse','invalid','loggedIn','notInUse','onHold','talking','unavailable','unknown','acw','acwTimeout','autopause','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoAnswerMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x5bd7,0x12a));var _0x75bd=function(_0x11c281,_0x7fe6f0){_0x11c281=_0x11c281-0x0;var _0x671947=_0x5bd7[_0x11c281];return _0x671947;};'use strict';var monitorFormat={'wav':'wav','wav49':_0x75bd('0x0'),'gsm':_0x75bd('0x1')};var strategy={'fewestcalls':_0x75bd('0x2'),'leastrecent':'leastrecent','linear':_0x75bd('0x3'),'random':'random','ringall':_0x75bd('0x4'),'rr':_0x75bd('0x5'),'rrmemory':'rrmemory','rrordered':_0x75bd('0x6'),'wrandom':_0x75bd('0x7')};function VoiceQueue(_0x2aaa6a){this['id']=_0x2aaa6a['id']||0x0;this['name']=_0x2aaa6a[_0x75bd('0x8')]||'';this[_0x75bd('0x9')]=_0x2aaa6a[_0x75bd('0x9')]||'';this[_0x75bd('0xa')]=_0x2aaa6a[_0x75bd('0xa')]||_0x75bd('0xb');this[_0x75bd('0xc')]=0x0;this['total']=0x0;this[_0x75bd('0xd')]=0x0;this['sumDuration']=0x0;this['sumHoldTime']=0x0;this[_0x75bd('0xe')]=0x0;this[_0x75bd('0xf')]=0x0;this[_0x75bd('0x10')]=0x0;this['available']=0x0;this[_0x75bd('0x11')]=0x0;this[_0x75bd('0x12')]=0x0;this[_0x75bd('0x13')]=0x0;this[_0x75bd('0x14')]=0x0;this[_0x75bd('0x15')]=0x0;this[_0x75bd('0x16')]=0x0;this['paused']=0x0;this['ringing']=0x0;this['ringInUse']=0x0;this[_0x75bd('0x17')]=0x0;this[_0x75bd('0x18')]=0x0;this[_0x75bd('0x19')]=0x0;this[_0x75bd('0x1a')]=_0x2aaa6a[_0x75bd('0x1a')]||![];this[_0x75bd('0x1b')]=_0x2aaa6a[_0x75bd('0x1b')]||0xa;this[_0x75bd('0x1c')]=_0x2aaa6a[_0x75bd('0x1c')]||'no';this['sendMessageOneNotActive']=!![];this['message']='';this['statusMessage']='';this['originated']=0x0;this[_0x75bd('0x1d')]=0x0;this[_0x75bd('0x1e')]=_0x2aaa6a['dialTimezone']||null;this['dialGlobalInterval']=_0x2aaa6a[_0x75bd('0x1f')]?_0x2aaa6a[_0x75bd('0x1f')]:null;this[_0x75bd('0x20')]=_0x2aaa6a['dialActive'];this['dialMethod']=_0x2aaa6a[_0x75bd('0x21')]||'progressive';this[_0x75bd('0x22')]=_0x2aaa6a[_0x75bd('0x22')]||0x0;this['dialLimitQueue']=_0x2aaa6a[_0x75bd('0x23')]||0x0;this['dialPowerLevel']=_0x2aaa6a['dialPowerLevel']||0x1;this[_0x75bd('0x24')]=_0x2aaa6a[_0x75bd('0x24')]||_0x75bd('0x25');this[_0x75bd('0x26')]=_0x2aaa6a[_0x75bd('0x26')]||0.03;this[_0x75bd('0x27')]=_0x2aaa6a[_0x75bd('0x27')]||0x258;this[_0x75bd('0x28')]=_0x2aaa6a['dialOriginateCallerIdName']||_0x75bd('0x29');this[_0x75bd('0x2a')]=_0x2aaa6a['dialOriginateCallerIdNumber']||_0x75bd('0x29');this[_0x75bd('0x2b')]=_0x2aaa6a['dialOriginateTimeout']||0x1e;this[_0x75bd('0x2c')]=_0x2aaa6a[_0x75bd('0x2c')]||'tTxX';this[_0x75bd('0x2d')]=_0x2aaa6a[_0x75bd('0x2d')]||0x3;this[_0x75bd('0x2e')]=_0x2aaa6a[_0x75bd('0x2e')]||undefined;this[_0x75bd('0x2f')]=_0x2aaa6a['dialCongestionMaxRetry']||0x3;this[_0x75bd('0x30')]=_0x2aaa6a[_0x75bd('0x30')]||0x96;this['dialBusyMaxRetry']=_0x2aaa6a['dialBusyMaxRetry']||0x3;this['dialBusyRetryFrequency']=_0x2aaa6a['dialBusyRetryFrequency']||0x96;this[_0x75bd('0x31')]=_0x2aaa6a[_0x75bd('0x31')]||0x3;this['dialNoAnswerRetryFrequency']=_0x2aaa6a['dialNoAnswerRetryFrequency']||0x96;this[_0x75bd('0x32')]=_0x2aaa6a[_0x75bd('0x32')]||0x3;this[_0x75bd('0x33')]=_0x2aaa6a['dialNoSuchNumberRetryFrequency']||0x96;this[_0x75bd('0x34')]=_0x2aaa6a[_0x75bd('0x34')]||0x3;this[_0x75bd('0x35')]=_0x2aaa6a[_0x75bd('0x35')]||0x96;this[_0x75bd('0x36')]=_0x2aaa6a[_0x75bd('0x36')]||0x3;this[_0x75bd('0x37')]=_0x2aaa6a[_0x75bd('0x37')]||0x96;this[_0x75bd('0x38')]=_0x2aaa6a[_0x75bd('0x38')]||0x3;this['dialMachineRetryFrequency']=_0x2aaa6a['dialMachineRetryFrequency']||0x96;this[_0x75bd('0x39')]=_0x2aaa6a[_0x75bd('0x39')]||0x3;this['dialAgentRejectRetryFrequency']=_0x2aaa6a['dialAgentRejectRetryFrequency']||0x96;this[_0x75bd('0x3a')]=_0x2aaa6a[_0x75bd('0x3a')]||0x3;this['dialGlobalMaxRetry']=_0x2aaa6a[_0x75bd('0x3b')]||0x4;this[_0x75bd('0x3c')]=_0x2aaa6a[_0x75bd('0x3c')]?_0x2aaa6a['Trunk']:undefined;this['TrunkBackup']=_0x2aaa6a[_0x75bd('0x3d')]?_0x2aaa6a[_0x75bd('0x3d')]:undefined;this[_0x75bd('0x3e')]=_0x2aaa6a[_0x75bd('0x3e')]||undefined;this['Interval']=_0x2aaa6a['Interval']?_0x2aaa6a[_0x75bd('0x3f')]:undefined;this['dialOrderByScheduledAt']=_0x2aaa6a[_0x75bd('0x40')]||_0x75bd('0x41');this['dialRandomLastDigitCallerIdNumber']=_0x2aaa6a[_0x75bd('0x42')]||undefined;this['dialCutDigit']=_0x2aaa6a[_0x75bd('0x43')]||undefined;this[_0x75bd('0x44')]=strategy[_0x2aaa6a[_0x75bd('0x44')]];this[_0x75bd('0x45')]=!![];this[_0x75bd('0x46')]=_0x2aaa6a[_0x75bd('0x46')]||![];this[_0x75bd('0x47')]=_0x2aaa6a[_0x75bd('0x47')];this[_0x75bd('0x48')]=_0x2aaa6a[_0x75bd('0x48')];this[_0x75bd('0x49')]=_0x2aaa6a[_0x75bd('0x49')];this[_0x75bd('0x4a')]=_0x2aaa6a[_0x75bd('0x4a')];this[_0x75bd('0x4b')]=_0x2aaa6a[_0x75bd('0x4b')];this[_0x75bd('0x4c')]=_0x2aaa6a[_0x75bd('0x4c')];this[_0x75bd('0x4d')]=_0x2aaa6a[_0x75bd('0x4d')];this[_0x75bd('0x4e')]=_0x2aaa6a[_0x75bd('0x4e')];this[_0x75bd('0x4f')]=_0x2aaa6a[_0x75bd('0x4f')];this[_0x75bd('0x50')]=0x0;this[_0x75bd('0x51')]=0x0;this[_0x75bd('0x52')]=_0x2aaa6a[_0x75bd('0x52')];this[_0x75bd('0x53')]=0x0;this[_0x75bd('0x54')]=0x0;this[_0x75bd('0x55')]=0x0;this[_0x75bd('0x56')]=0x0;this['outboundCongestionCallsDay']=0x0;this['outboundNoSuchCallsDay']=0x0;this['outboundUnknownCallsDay']=0x0;this[_0x75bd('0x57')]=0x0;this[_0x75bd('0x58')]=0x0;this[_0x75bd('0x59')]=0x0;this[_0x75bd('0x5a')]=0x0;this[_0x75bd('0x5b')]=0x0;this['outboundReCallsDay']=0x0;this[_0x75bd('0x5c')]=0x0;this[_0x75bd('0x5d')]=undefined;this[_0x75bd('0x5e')]=undefined;this[_0x75bd('0x5f')]=undefined;this[_0x75bd('0x60')]=1.05;this['predictiveIntervalTotalCalls']=0x0;this[_0x75bd('0x61')]=0x0;this[_0x75bd('0x62')]=0x0;this[_0x75bd('0x63')]=0x0;this[_0x75bd('0x64')]=0x0;this[_0x75bd('0x65')]=0x0;this[_0x75bd('0x66')]=0x0;this[_0x75bd('0x67')]=0x0;this[_0x75bd('0x68')]=_0x2aaa6a[_0x75bd('0x69')]||0x14;this['predictiveIntervalMinThreshold']=_0x2aaa6a[_0x75bd('0x69')]||0xa;this[_0x75bd('0x6a')]=0x0;this[_0x75bd('0x6b')]=0x0;this[_0x75bd('0x6c')]=0x1;this['erlangCalls']=0x0;this['erlangCallToSecond']=0x0;this[_0x75bd('0x6d')]=0x0;this[_0x75bd('0x6e')]=0x0;this[_0x75bd('0x6f')]=_0x2aaa6a[_0x75bd('0x6f')]||0x1e;this[_0x75bd('0x70')]=_0x2aaa6a[_0x75bd('0x70')]||![];this[_0x75bd('0x71')]=!!_0x2aaa6a[_0x75bd('0x71')]||![];this[_0x75bd('0x72')]=!!_0x2aaa6a[_0x75bd('0x72')]||![];this[_0x75bd('0x73')]=_0x2aaa6a[_0x75bd('0x73')]||undefined;this[_0x75bd('0x74')]=_0x2aaa6a[_0x75bd('0x74')]||![];this['dialAgiAfterHangupAgent']=_0x2aaa6a['dialAgiAfterHangupAgent']||![];this[_0x75bd('0x9')]=monitorFormat[_0x2aaa6a[_0x75bd('0x9')]]?monitorFormat[_0x2aaa6a[_0x75bd('0x9')]]:undefined;this[_0x75bd('0x75')]=_0x2aaa6a[_0x75bd('0x75')]||![];this[_0x75bd('0x76')]=_0x2aaa6a[_0x75bd('0x76')]?_0x2aaa6a['mandatoryDispositionPause']:undefined;this[_0x75bd('0x77')]=![];}module['exports']=VoiceQueue;
\ No newline at end of file
+var _0x4473=['onHold','paused','ringing','talking','unavailable','unknown','acw','acwTimeout','autopause','message','statusMessage','originated','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialCutDigit','strategy','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundReCallsDay','outboundAbandonedDay','startProgressive','handlePredictive','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','queueSummaryCountersUpdated','exports','linear','random','ringall','wrandom','name','monitor_format','type','inbound','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','available','busy','inUse','loggedIn','notInUse'];(function(_0x4ca731,_0x3d9665){var _0x1fd0a1=function(_0x2c938f){while(--_0x2c938f){_0x4ca731['push'](_0x4ca731['shift']());}};_0x1fd0a1(++_0x3d9665);}(_0x4473,0x15c));var _0x3447=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x4473[_0x1d1779];return _0x2377e9;};'use strict';var monitorFormat={'wav':'wav','wav49':'wav49','gsm':'gsm'};var strategy={'fewestcalls':'fewestcalls','leastrecent':'leastrecent','linear':_0x3447('0x0'),'random':_0x3447('0x1'),'ringall':_0x3447('0x2'),'rr':'roundrobin','rrmemory':'rrmemory','rrordered':'rrordered','wrandom':_0x3447('0x3')};function VoiceQueue(_0x3a82c7){this['id']=_0x3a82c7['id']||0x0;this[_0x3447('0x4')]=_0x3a82c7[_0x3447('0x4')]||'';this[_0x3447('0x5')]=_0x3a82c7[_0x3447('0x5')]||'';this[_0x3447('0x6')]=_0x3a82c7[_0x3447('0x6')]||_0x3447('0x7');this['waiting']=0x0;this['total']=0x0;this[_0x3447('0x8')]=0x0;this[_0x3447('0x9')]=0x0;this[_0x3447('0xa')]=0x0;this[_0x3447('0xb')]=0x0;this[_0x3447('0xc')]=0x0;this['abandoned']=0x0;this[_0x3447('0xd')]=0x0;this[_0x3447('0xe')]=0x0;this[_0x3447('0xf')]=0x0;this['invalid']=0x0;this[_0x3447('0x10')]=0x0;this[_0x3447('0x11')]=0x0;this[_0x3447('0x12')]=0x0;this[_0x3447('0x13')]=0x0;this[_0x3447('0x14')]=0x0;this['ringInUse']=0x0;this[_0x3447('0x15')]=0x0;this[_0x3447('0x16')]=0x0;this[_0x3447('0x17')]=0x0;this[_0x3447('0x18')]=_0x3a82c7[_0x3447('0x18')]||![];this[_0x3447('0x19')]=_0x3a82c7[_0x3447('0x19')]||0xa;this[_0x3447('0x1a')]=_0x3a82c7[_0x3447('0x1a')]||'no';this['sendMessageOneNotActive']=!![];this[_0x3447('0x1b')]='';this[_0x3447('0x1c')]='';this[_0x3447('0x1d')]=0x0;this[_0x3447('0x1e')]=0x0;this[_0x3447('0x1f')]=_0x3a82c7['dialTimezone']||null;this['dialGlobalInterval']=_0x3a82c7[_0x3447('0x20')]?_0x3a82c7[_0x3447('0x20')]:null;this[_0x3447('0x21')]=_0x3a82c7[_0x3447('0x21')];this[_0x3447('0x22')]=_0x3a82c7[_0x3447('0x22')]||_0x3447('0x23');this['dialLimitChannel']=_0x3a82c7[_0x3447('0x24')]||0x0;this[_0x3447('0x25')]=_0x3a82c7[_0x3447('0x25')]||0x0;this[_0x3447('0x26')]=_0x3a82c7['dialPowerLevel']||0x1;this[_0x3447('0x27')]=_0x3a82c7[_0x3447('0x27')]||_0x3447('0x28');this['dialPredictiveOptimizationPercentage']=_0x3a82c7[_0x3447('0x29')]||0.03;this[_0x3447('0x2a')]=_0x3a82c7['dialPredictiveInterval']||0x258;this[_0x3447('0x2b')]=_0x3a82c7[_0x3447('0x2b')]||_0x3447('0x2c');this[_0x3447('0x2d')]=_0x3a82c7[_0x3447('0x2d')]||_0x3447('0x2c');this[_0x3447('0x2e')]=_0x3a82c7[_0x3447('0x2e')]||0x1e;this['dialQueueOptions']=_0x3a82c7[_0x3447('0x2f')]||_0x3447('0x30');this[_0x3447('0x31')]=_0x3a82c7[_0x3447('0x31')]||0x3;this['dialQueueProject']=_0x3a82c7['dialQueueProject']||undefined;this[_0x3447('0x32')]=_0x3a82c7[_0x3447('0x32')]||0x3;this[_0x3447('0x33')]=_0x3a82c7['dialCongestionRetryFrequency']||0x96;this['dialBusyMaxRetry']=_0x3a82c7[_0x3447('0x34')]||0x3;this[_0x3447('0x35')]=_0x3a82c7[_0x3447('0x35')]||0x96;this[_0x3447('0x36')]=_0x3a82c7[_0x3447('0x36')]||0x3;this[_0x3447('0x37')]=_0x3a82c7[_0x3447('0x37')]||0x96;this[_0x3447('0x38')]=_0x3a82c7[_0x3447('0x38')]||0x3;this[_0x3447('0x39')]=_0x3a82c7[_0x3447('0x39')]||0x96;this['dialDropMaxRetry']=_0x3a82c7[_0x3447('0x3a')]||0x3;this[_0x3447('0x3b')]=_0x3a82c7[_0x3447('0x3b')]||0x96;this[_0x3447('0x3c')]=_0x3a82c7[_0x3447('0x3c')]||0x3;this[_0x3447('0x3d')]=_0x3a82c7[_0x3447('0x3d')]||0x96;this[_0x3447('0x3e')]=_0x3a82c7['dialMachineMaxRetry']||0x3;this[_0x3447('0x3f')]=_0x3a82c7[_0x3447('0x3f')]||0x96;this[_0x3447('0x40')]=_0x3a82c7['dialAgentRejectMaxRetry']||0x3;this[_0x3447('0x41')]=_0x3a82c7[_0x3447('0x41')]||0x96;this[_0x3447('0x42')]=_0x3a82c7[_0x3447('0x42')]||0x3;this[_0x3447('0x43')]=_0x3a82c7[_0x3447('0x43')]||0x4;this[_0x3447('0x44')]=_0x3a82c7[_0x3447('0x44')]?_0x3a82c7['Trunk']:undefined;this[_0x3447('0x45')]=_0x3a82c7[_0x3447('0x45')]?_0x3a82c7[_0x3447('0x45')]:undefined;this[_0x3447('0x46')]=_0x3a82c7['dialPrefix']||undefined;this[_0x3447('0x47')]=_0x3a82c7[_0x3447('0x47')]?_0x3a82c7[_0x3447('0x47')]:undefined;this['dialOrderByScheduledAt']=_0x3a82c7[_0x3447('0x48')]||_0x3447('0x49');this['dialRandomLastDigitCallerIdNumber']=_0x3a82c7['dialRandomLastDigitCallerIdNumber']||undefined;this[_0x3447('0x4a')]=_0x3a82c7[_0x3447('0x4a')]||undefined;this[_0x3447('0x4b')]=strategy[_0x3a82c7[_0x3447('0x4b')]];this['queueStatusComplete']=!![];this[_0x3447('0x4c')]=_0x3a82c7[_0x3447('0x4c')]||![];this[_0x3447('0x4d')]=_0x3a82c7[_0x3447('0x4d')];this[_0x3447('0x4e')]=_0x3a82c7[_0x3447('0x4e')];this[_0x3447('0x4f')]=_0x3a82c7[_0x3447('0x4f')];this['dialAMDTotalAnalysisTime']=_0x3a82c7['dialAMDTotalAnalysisTime'];this[_0x3447('0x50')]=_0x3a82c7[_0x3447('0x50')];this['dialAMDBetweenWordsSilence']=_0x3a82c7[_0x3447('0x51')];this[_0x3447('0x52')]=_0x3a82c7[_0x3447('0x52')];this[_0x3447('0x53')]=_0x3a82c7[_0x3447('0x53')];this[_0x3447('0x54')]=_0x3a82c7[_0x3447('0x54')];this['outboundRejectCallsDay']=0x0;this['pTalking']=0x0;this['timeout']=_0x3a82c7[_0x3447('0x55')];this[_0x3447('0x56')]=0x0;this[_0x3447('0x57')]=0x0;this[_0x3447('0x58')]=0x0;this['outboundBusyCallsDay']=0x0;this[_0x3447('0x59')]=0x0;this[_0x3447('0x5a')]=0x0;this[_0x3447('0x5b')]=0x0;this['outboundBlacklistCallsDay']=0x0;this['outboundOriginateFailureCallsDay']=0x0;this[_0x3447('0x5c')]=0x0;this[_0x3447('0x5d')]=0x0;this['outboundDropCallsDayACS']=0x0;this[_0x3447('0x5e')]=0x0;this[_0x3447('0x5f')]=0x0;this[_0x3447('0x60')]=undefined;this['startPredictive']=undefined;this[_0x3447('0x61')]=undefined;this['predictiveIntervalMultiplicativeFactor']=1.05;this[_0x3447('0x62')]=0x0;this[_0x3447('0x63')]=0x0;this[_0x3447('0x64')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0x3447('0x65')]=0x0;this[_0x3447('0x66')]=0x0;this[_0x3447('0x67')]=0x0;this[_0x3447('0x68')]=0x0;this[_0x3447('0x69')]=_0x3a82c7['dialPredictiveIntervalMaxThreshold']||0x14;this['predictiveIntervalMinThreshold']=_0x3a82c7[_0x3447('0x6a')]||0xa;this[_0x3447('0x6b')]=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this[_0x3447('0x6c')]=0x1;this[_0x3447('0x6d')]=0x0;this[_0x3447('0x6e')]=0x0;this[_0x3447('0x6f')]=0x0;this[_0x3447('0x70')]=0x0;this[_0x3447('0x71')]=_0x3a82c7[_0x3447('0x71')]||0x1e;this[_0x3447('0x72')]=_0x3a82c7[_0x3447('0x72')]||![];this[_0x3447('0x73')]=!!_0x3a82c7['dialPreviewAutoRecallMe']||![];this[_0x3447('0x74')]=!!_0x3a82c7['dialPreviewRecallmeReminder']||![];this['dialQueueProject2']=_0x3a82c7['dialQueueProject2']||undefined;this[_0x3447('0x75')]=_0x3a82c7[_0x3447('0x75')]||![];this[_0x3447('0x76')]=_0x3a82c7[_0x3447('0x76')]||![];this['monitor_format']=monitorFormat[_0x3a82c7[_0x3447('0x5')]]?monitorFormat[_0x3a82c7['monitor_format']]:undefined;this['mandatoryDisposition']=_0x3a82c7[_0x3447('0x77')]||![];this['mandatoryDispositionPause']=_0x3a82c7['mandatoryDispositionPause']?_0x3a82c7['mandatoryDispositionPause']:undefined;this[_0x3447('0x78')]=![];}module[_0x3447('0x79')]=VoiceQueue;
\ No newline at end of file
index 01222f4..84bdaf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0845=['predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startProgressive','message','statusMessage','Trunk','active','callerid','prototype','unknown','loggedin','callers','length','SIP/','online','incall','includes','status','booked','keys','queue','dialer','exten','xcally-motion-preview','compareToInboundQueue','some','compareToOutboundQueue','outboundAbandonedCallsDay','available','paused','ringing','talking','waiting','answered','loggedIn','loggedInDb','originated','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoAnswerCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','sumBillable','sumDuration','name','strategy','abandoned','busy','inUse','invalid','onHold','notInUse','ringInUse','sumHoldTime','total','type','unavailable','unmanaged','pTalking','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundReCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls'];(function(_0x406cc8,_0x117c7f){var _0x385af1=function(_0xb0d137){while(--_0xb0d137){_0x406cc8['push'](_0x406cc8['shift']());}};_0x385af1(++_0x117c7f);}(_0x0845,0x125));var _0x5084=function(_0x146524,_0xc6c5ae){_0x146524=_0x146524-0x0;var _0x40300a=_0x0845[_0x146524];return _0x40300a;};'use strict';var INBOUND_COUNTERS=[_0x5084('0x0'),'loggedIn','loggedInDb',_0x5084('0x1'),_0x5084('0x2'),_0x5084('0x3'),_0x5084('0x4')];var OUTBOUND_COUNTERS=[_0x5084('0x0'),_0x5084('0x5'),'inUse',_0x5084('0x6'),_0x5084('0x7'),_0x5084('0x8'),'outboundAbandonedCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay',_0x5084('0x9'),_0x5084('0xa'),_0x5084('0xb'),'outboundNoSuchCallsDay','outboundReCallsDay',_0x5084('0xc'),_0x5084('0xd'),_0x5084('0x1'),'pTalking',_0x5084('0x3'),_0x5084('0xe'),_0x5084('0xf'),'total','waiting'];function VoiceQueueSummary(_0x1d650c){this['id']=_0x1d650c['id'];this[_0x5084('0x10')]=_0x1d650c[_0x5084('0x10')];this[_0x5084('0x11')]=_0x1d650c[_0x5084('0x11')];this[_0x5084('0x12')]=_0x1d650c[_0x5084('0x12')]||0x0;this[_0x5084('0x5')]=_0x1d650c['answered']||0x0;this[_0x5084('0x0')]=_0x1d650c[_0x5084('0x0')]||0x0;this[_0x5084('0x13')]=_0x1d650c['busy']||0x0;this[_0x5084('0x14')]=_0x1d650c[_0x5084('0x14')]||0x0;this[_0x5084('0x15')]=_0x1d650c[_0x5084('0x15')]||0x0;this['loggedIn']=_0x1d650c[_0x5084('0x6')]||0x0;this['loggedInDb']=_0x1d650c[_0x5084('0x7')]||0x0;this[_0x5084('0x16')]=_0x1d650c[_0x5084('0x16')]||0x0;this[_0x5084('0x17')]=_0x1d650c[_0x5084('0x17')]||0x0;this[_0x5084('0x1')]=_0x1d650c[_0x5084('0x1')]||0x0;this[_0x5084('0x2')]=_0x1d650c[_0x5084('0x2')]||0x0;this[_0x5084('0x18')]=_0x1d650c[_0x5084('0x18')];this[_0x5084('0xe')]=_0x1d650c[_0x5084('0xe')];this[_0x5084('0xf')]=_0x1d650c[_0x5084('0xf')];this[_0x5084('0x19')]=_0x1d650c[_0x5084('0x19')]||0x0;this[_0x5084('0x3')]=_0x1d650c[_0x5084('0x3')]||0x0;this[_0x5084('0x1a')]=_0x1d650c['total']||0x0;this[_0x5084('0x1b')]=_0x1d650c[_0x5084('0x1b')];this[_0x5084('0x1c')]=_0x1d650c['unavailable']||0x0;this['unknown']=_0x1d650c['unknown']||0x0;this[_0x5084('0x1d')]=_0x1d650c[_0x5084('0x1d')]||0x0;this['waiting']=_0x1d650c[_0x5084('0x4')]||0x0;if(_0x1d650c[_0x5084('0x1b')]==='outbound'){this[_0x5084('0x1e')]=_0x1d650c[_0x5084('0x1e')]||0x0;this[_0x5084('0x1f')]=_0x1d650c[_0x5084('0x1f')];this[_0x5084('0x20')]=_0x1d650c[_0x5084('0x20')];this['dialOriginateCallerIdName']=_0x1d650c[_0x5084('0x21')];this[_0x5084('0x22')]=_0x1d650c['dialOriginateCallerIdNumber'];this[_0x5084('0x23')]=_0x1d650c[_0x5084('0x23')];this['dialPrefix']=_0x1d650c['dialPrefix'];this['temp']=_0x1d650c[_0x5084('0x24')];this[_0x5084('0x25')]=_0x1d650c[_0x5084('0x25')];this['outboundAnswerCallsDay']=_0x1d650c[_0x5084('0x26')];this['outboundBlacklistCallsDay']=_0x1d650c[_0x5084('0x27')];this[_0x5084('0x9')]=_0x1d650c[_0x5084('0x9')];this[_0x5084('0xa')]=_0x1d650c[_0x5084('0xa')];this[_0x5084('0x28')]=_0x1d650c[_0x5084('0x28')];this[_0x5084('0x29')]=_0x1d650c[_0x5084('0x29')];this[_0x5084('0x2a')]=_0x1d650c[_0x5084('0x2a')];this[_0x5084('0xb')]=_0x1d650c['outboundNoAnswerCallsDay'];this[_0x5084('0x2b')]=_0x1d650c[_0x5084('0x2b')];this['outboundOriginateFailureCallsDay']=_0x1d650c['outboundOriginateFailureCallsDay'];this[_0x5084('0x2c')]=_0x1d650c[_0x5084('0x2c')];this[_0x5084('0xc')]=_0x1d650c['outboundRejectCallsDay'];this[_0x5084('0xd')]=_0x1d650c['outboundUnknownCallsDay'];this[_0x5084('0x2d')]=_0x1d650c[_0x5084('0x2d')];this['predictiveIntervalAvgHoldtime']=_0x1d650c[_0x5084('0x2e')];this[_0x5084('0x2f')]=_0x1d650c[_0x5084('0x2f')];this[_0x5084('0x30')]=_0x1d650c[_0x5084('0x30')];this['predictiveIntervalDroppedCallsTimeout']=_0x1d650c[_0x5084('0x31')];this[_0x5084('0x32')]=_0x1d650c[_0x5084('0x32')];this['predictiveIntervalErlangCallsDroppedCalls']=_0x1d650c[_0x5084('0x33')];this[_0x5084('0x34')]=_0x1d650c[_0x5084('0x34')];this[_0x5084('0x35')]=_0x1d650c[_0x5084('0x35')];this['predictiveIntervalPauses']=_0x1d650c[_0x5084('0x36')];this[_0x5084('0x37')]=_0x1d650c[_0x5084('0x37')];this['predictiveIntervalTotalCalls']=_0x1d650c[_0x5084('0x38')];this[_0x5084('0x8')]=_0x1d650c[_0x5084('0x8')];this[_0x5084('0x39')]=_0x1d650c[_0x5084('0x39')];this['erlangCallToSecond']=_0x1d650c['erlangCallToSecond'];this[_0x5084('0x3a')]=_0x1d650c['erlangAbandonmentRate'];this['erlangBusyFactor']=_0x1d650c[_0x5084('0x3b')];this['startPredictive']=_0x1d650c['startPredictive'];this[_0x5084('0x3c')]=_0x1d650c[_0x5084('0x3c')];this[_0x5084('0x3d')]=_0x1d650c[_0x5084('0x3d')];this[_0x5084('0x3e')]=_0x1d650c['statusMessage'];}if(_0x1d650c[_0x5084('0x3f')]){this[_0x5084('0x3f')]={'id':_0x1d650c['Trunk']['id'],'name':_0x1d650c[_0x5084('0x3f')][_0x5084('0x10')],'active':_0x1d650c[_0x5084('0x3f')][_0x5084('0x40')],'callerid':_0x1d650c['Trunk'][_0x5084('0x41')]};}}VoiceQueueSummary[_0x5084('0x42')]['createReport']=function(_0x569060,_0x4fba00,_0x1fa16f,_0x1dbabd){this[_0x5084('0x7')]=0x0;this[_0x5084('0x3')]=0x0;this[_0x5084('0x1')]=0x0;this[_0x5084('0x43')]=0x0;this['notInUse']=0x0;this['inUse']=0x0;this[_0x5084('0x13')]=0x0;this[_0x5084('0x15')]=0x0;this['unavailable']=0x0;this['ringing']=0x0;this[_0x5084('0x18')]=0x0;this['onHold']=0x0;if(_0x1fa16f){if(_0x1fa16f['available']){this[_0x5084('0x0')]=Number(_0x1fa16f[_0x5084('0x0')]);}if(_0x1fa16f[_0x5084('0x44')]){this['loggedIn']=Number(_0x1fa16f['loggedin']);}if(_0x1fa16f[_0x5084('0x45')]){this[_0x5084('0x4')]=Number(_0x1fa16f[_0x5084('0x45')]);}}for(var _0x171bf7=0x0;_0x171bf7<_0x569060[_0x5084('0x46')];_0x171bf7++){var _0x27db28=_0x4fba00[_0x5084('0x47')+_0x569060[_0x171bf7][_0x5084('0x10')]];if(_0x27db28&&_0x27db28[_0x5084('0x48')]){this[_0x5084('0x7')]+=0x1;}if(_0x569060[_0x171bf7][_0x5084('0x49')]==='1'){this[_0x5084('0x3')]+=0x1;}if(_0x569060[_0x171bf7][_0x5084('0x1')]==='1'&&!['2','7','8'][_0x5084('0x4a')](_0x569060[_0x171bf7]['status'])){this[_0x5084('0x1')]+=0x1;}switch(_0x569060[_0x171bf7][_0x5084('0x4b')]){case'0':this[_0x5084('0x43')]+=0x1;break;case'1':this[_0x5084('0x17')]+=0x1;break;case'2':this[_0x5084('0x14')]+=0x1;break;case'3':this[_0x5084('0x13')]+=0x1;break;case'4':this[_0x5084('0x15')]+=0x1;break;case'5':this['unavailable']+=0x1;break;case'6':this['ringing']+=0x1;break;case'7':this['ringInUse']+=0x1;break;case'8':this[_0x5084('0x16')]+=0x1;break;}}if(this[_0x5084('0x20')]===_0x5084('0x4c')){var _0x4e0346=Object[_0x5084('0x4d')](_0x1dbabd);for(var _0x2926e0=0x0;_0x2926e0<_0x4e0346[_0x5084('0x46')];_0x2926e0++){var _0xb44861=_0x4e0346[_0x2926e0];var _0x48beb1=_0x1dbabd[_0xb44861];if(_0x48beb1[_0x5084('0x4e')]===this[_0x5084('0x10')]&&_0x48beb1[_0x5084('0x1b')]===_0x5084('0x4f')&&_0x48beb1[_0x5084('0x50')]===_0x5084('0x51')){this[_0x5084('0x3')]+=0x1;}}if(this[_0x5084('0x3')]>this[_0x5084('0x14')]){this['talking']=this[_0x5084('0x14')];}this[_0x5084('0x1e')]=0x0;}return this;};VoiceQueueSummary[_0x5084('0x42')][_0x5084('0x52')]=function(_0x2e23b7){var _0x29524d=![];if(_0x2e23b7){_0x29524d=INBOUND_COUNTERS[_0x5084('0x53')](function(_0x2f382e){return this[_0x2f382e]!==_0x2e23b7[_0x2f382e];},this);}return _0x29524d;};VoiceQueueSummary['prototype'][_0x5084('0x54')]=function(_0x50bce5){var _0x407a11=![];var _0x2e12bb=![];var _0x115ff5=![];if(_0x50bce5){_0x407a11=this[_0x5084('0x20')]!==_0x50bce5[_0x5084('0x20')]||this[_0x5084('0x1f')]!==_0x50bce5[_0x5084('0x1f')]||this[_0x5084('0x3d')]!==_0x50bce5['message']||this[_0x5084('0x3e')]!==_0x50bce5[_0x5084('0x3e')];_0x2e12bb=OUTBOUND_COUNTERS['some'](function(_0x2510a3){return this[_0x2510a3]!==_0x50bce5[_0x2510a3];},this);if(this[_0x5084('0x3f')]&&_0x50bce5[_0x5084('0x3f')]){_0x115ff5=this[_0x5084('0x3f')]['name']!==_0x50bce5['Trunk'][_0x5084('0x10')]||this['Trunk'][_0x5084('0x40')]!==_0x50bce5[_0x5084('0x3f')][_0x5084('0x40')];}}return _0x407a11||_0x2e12bb||_0x115ff5;};VoiceQueueSummary[_0x5084('0x42')]['updateReportFromOutboundQueue']=function(_0x2d3b00){this[_0x5084('0x5')]=_0x2d3b00['answered'];this['message']=_0x2d3b00[_0x5084('0x3d')];this[_0x5084('0x3e')]=_0x2d3b00['statusMessage'];this[_0x5084('0x8')]=_0x2d3b00['originated'];this[_0x5084('0x55')]=_0x2d3b00[_0x5084('0x55')];this[_0x5084('0x26')]=_0x2d3b00['outboundAnswerCallsDay'];this[_0x5084('0x27')]=_0x2d3b00[_0x5084('0x27')];this[_0x5084('0x9')]=_0x2d3b00['outboundBusyCallsDay'];this[_0x5084('0xa')]=_0x2d3b00['outboundCongestionCallsDay'];this['outboundNoAnswerCallsDay']=_0x2d3b00[_0x5084('0xb')];this['outboundNoSuchCallsDay']=_0x2d3b00[_0x5084('0x2b')];this[_0x5084('0x2c')]=_0x2d3b00['outboundReCallsDay'];this[_0x5084('0xc')]=_0x2d3b00[_0x5084('0xc')];this['outboundUnknownCallsDay']=_0x2d3b00[_0x5084('0xd')];this['sumBillable']=_0x2d3b00['sumBillable'];this['sumDuration']=_0x2d3b00['sumDuration'];this['total']=_0x2d3b00[_0x5084('0x1a')];if(this[_0x5084('0x20')]==='preview'){this[_0x5084('0x1e')]=_0x2d3b00['pTalking'];}};module['exports']=VoiceQueueSummary;
\ No newline at end of file
+var _0xdbbe=['abandoned','available','busy','onHold','notInUse','ringInUse','sumBillable','sumHoldTime','type','unavailable','unknown','unmanaged','outbound','pTalking','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundReCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','message','statusMessage','Trunk','callerid','prototype','loggedin','callers','SIP/','online','incall','includes','status','invalid','length','queue','dialer','exten','compareToInboundQueue','some','compareToOutboundQueue','active','updateReportFromOutboundQueue','exports','loggedIn','loggedInDb','paused','ringing','talking','waiting','answered','inUse','originated','outboundAbandonedCallsDay','outboundAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','sumDuration','total','name','strategy'];(function(_0x552291,_0x37ae2f){var _0x4985c2=function(_0x1ac5d9){while(--_0x1ac5d9){_0x552291['push'](_0x552291['shift']());}};_0x4985c2(++_0x37ae2f);}(_0xdbbe,0x148));var _0xedbb=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0xdbbe[_0x2b4411];return _0x8e41ef;};'use strict';var INBOUND_COUNTERS=['available',_0xedbb('0x0'),_0xedbb('0x1'),_0xedbb('0x2'),_0xedbb('0x3'),_0xedbb('0x4'),_0xedbb('0x5')];var OUTBOUND_COUNTERS=['available',_0xedbb('0x6'),_0xedbb('0x7'),_0xedbb('0x0'),_0xedbb('0x1'),_0xedbb('0x8'),_0xedbb('0x9'),_0xedbb('0xa'),'outboundBlacklistCallsDay',_0xedbb('0xb'),_0xedbb('0xc'),'outboundNoAnswerCallsDay',_0xedbb('0xd'),'outboundReCallsDay',_0xedbb('0xe'),_0xedbb('0xf'),_0xedbb('0x2'),'pTalking',_0xedbb('0x4'),'sumBillable',_0xedbb('0x10'),_0xedbb('0x11'),_0xedbb('0x5')];function VoiceQueueSummary(_0x41d163){this['id']=_0x41d163['id'];this['name']=_0x41d163[_0xedbb('0x12')];this[_0xedbb('0x13')]=_0x41d163[_0xedbb('0x13')];this[_0xedbb('0x14')]=_0x41d163[_0xedbb('0x14')]||0x0;this[_0xedbb('0x6')]=_0x41d163['answered']||0x0;this[_0xedbb('0x15')]=_0x41d163[_0xedbb('0x15')]||0x0;this[_0xedbb('0x16')]=_0x41d163[_0xedbb('0x16')]||0x0;this[_0xedbb('0x7')]=_0x41d163[_0xedbb('0x7')]||0x0;this['invalid']=_0x41d163['invalid']||0x0;this[_0xedbb('0x0')]=_0x41d163[_0xedbb('0x0')]||0x0;this['loggedInDb']=_0x41d163[_0xedbb('0x1')]||0x0;this[_0xedbb('0x17')]=_0x41d163[_0xedbb('0x17')]||0x0;this['notInUse']=_0x41d163[_0xedbb('0x18')]||0x0;this['paused']=_0x41d163['paused']||0x0;this['ringing']=_0x41d163['ringing']||0x0;this[_0xedbb('0x19')]=_0x41d163['ringInUse'];this['sumBillable']=_0x41d163[_0xedbb('0x1a')];this[_0xedbb('0x10')]=_0x41d163[_0xedbb('0x10')];this[_0xedbb('0x1b')]=_0x41d163[_0xedbb('0x1b')]||0x0;this[_0xedbb('0x4')]=_0x41d163['talking']||0x0;this[_0xedbb('0x11')]=_0x41d163[_0xedbb('0x11')]||0x0;this[_0xedbb('0x1c')]=_0x41d163['type'];this[_0xedbb('0x1d')]=_0x41d163[_0xedbb('0x1d')]||0x0;this[_0xedbb('0x1e')]=_0x41d163['unknown']||0x0;this[_0xedbb('0x1f')]=_0x41d163[_0xedbb('0x1f')]||0x0;this[_0xedbb('0x5')]=_0x41d163[_0xedbb('0x5')]||0x0;if(_0x41d163[_0xedbb('0x1c')]===_0xedbb('0x20')){this[_0xedbb('0x21')]=_0x41d163[_0xedbb('0x21')]||0x0;this[_0xedbb('0x22')]=_0x41d163['dialActive'];this[_0xedbb('0x23')]=_0x41d163[_0xedbb('0x23')];this[_0xedbb('0x24')]=_0x41d163['dialOriginateCallerIdName'];this[_0xedbb('0x25')]=_0x41d163[_0xedbb('0x25')];this['dialOriginateTimeout']=_0x41d163['dialOriginateTimeout'];this['dialPrefix']=_0x41d163[_0xedbb('0x26')];this[_0xedbb('0x27')]=_0x41d163[_0xedbb('0x27')];this[_0xedbb('0x28')]=_0x41d163[_0xedbb('0x28')];this['outboundAnswerCallsDay']=_0x41d163[_0xedbb('0xa')];this[_0xedbb('0x29')]=_0x41d163[_0xedbb('0x29')];this[_0xedbb('0xb')]=_0x41d163[_0xedbb('0xb')];this['outboundCongestionCallsDay']=_0x41d163[_0xedbb('0xc')];this[_0xedbb('0x2a')]=_0x41d163[_0xedbb('0x2a')];this[_0xedbb('0x2b')]=_0x41d163[_0xedbb('0x2b')];this[_0xedbb('0x2c')]=_0x41d163[_0xedbb('0x2c')];this['outboundNoAnswerCallsDay']=_0x41d163[_0xedbb('0x2d')];this[_0xedbb('0xd')]=_0x41d163[_0xedbb('0xd')];this['outboundOriginateFailureCallsDay']=_0x41d163['outboundOriginateFailureCallsDay'];this[_0xedbb('0x2e')]=_0x41d163['outboundReCallsDay'];this[_0xedbb('0xe')]=_0x41d163[_0xedbb('0xe')];this[_0xedbb('0xf')]=_0x41d163[_0xedbb('0xf')];this['predictiveIntervalAnsweredCalls']=_0x41d163[_0xedbb('0x2f')];this[_0xedbb('0x30')]=_0x41d163['predictiveIntervalAvgHoldtime'];this[_0xedbb('0x31')]=_0x41d163[_0xedbb('0x31')];this['predictiveIntervalDroppedCallsCallersExit']=_0x41d163[_0xedbb('0x32')];this['predictiveIntervalDroppedCallsTimeout']=_0x41d163[_0xedbb('0x33')];this[_0xedbb('0x34')]=_0x41d163['predictiveIntervalErlangCalls'];this['predictiveIntervalErlangCallsDroppedCalls']=_0x41d163['predictiveIntervalErlangCallsDroppedCalls'];this[_0xedbb('0x35')]=_0x41d163['predictiveIntervalHitRate'];this[_0xedbb('0x36')]=_0x41d163[_0xedbb('0x36')];this[_0xedbb('0x37')]=_0x41d163['predictiveIntervalPauses'];this[_0xedbb('0x38')]=_0x41d163[_0xedbb('0x38')];this[_0xedbb('0x39')]=_0x41d163[_0xedbb('0x39')];this[_0xedbb('0x8')]=_0x41d163[_0xedbb('0x8')];this[_0xedbb('0x3a')]=_0x41d163[_0xedbb('0x3a')];this['erlangCallToSecond']=_0x41d163[_0xedbb('0x3b')];this[_0xedbb('0x3c')]=_0x41d163['erlangAbandonmentRate'];this['erlangBusyFactor']=_0x41d163[_0xedbb('0x3d')];this[_0xedbb('0x3e')]=_0x41d163[_0xedbb('0x3e')];this[_0xedbb('0x3f')]=_0x41d163[_0xedbb('0x3f')];this[_0xedbb('0x40')]=_0x41d163['message'];this[_0xedbb('0x41')]=_0x41d163[_0xedbb('0x41')];}if(_0x41d163[_0xedbb('0x42')]){this[_0xedbb('0x42')]={'id':_0x41d163['Trunk']['id'],'name':_0x41d163[_0xedbb('0x42')][_0xedbb('0x12')],'active':_0x41d163[_0xedbb('0x42')]['active'],'callerid':_0x41d163['Trunk'][_0xedbb('0x43')]};}}VoiceQueueSummary[_0xedbb('0x44')]['createReport']=function(_0x25998c,_0x2c99a9,_0x3fc00d,_0x42a555){this[_0xedbb('0x1')]=0x0;this[_0xedbb('0x4')]=0x0;this[_0xedbb('0x2')]=0x0;this['unknown']=0x0;this[_0xedbb('0x18')]=0x0;this['inUse']=0x0;this[_0xedbb('0x16')]=0x0;this['invalid']=0x0;this[_0xedbb('0x1d')]=0x0;this[_0xedbb('0x3')]=0x0;this[_0xedbb('0x19')]=0x0;this[_0xedbb('0x17')]=0x0;if(_0x3fc00d){if(_0x3fc00d[_0xedbb('0x15')]){this['available']=Number(_0x3fc00d[_0xedbb('0x15')]);}if(_0x3fc00d[_0xedbb('0x45')]){this[_0xedbb('0x0')]=Number(_0x3fc00d[_0xedbb('0x45')]);}if(_0x3fc00d[_0xedbb('0x46')]){this[_0xedbb('0x5')]=Number(_0x3fc00d[_0xedbb('0x46')]);}}for(var _0x42f8a9=0x0;_0x42f8a9<_0x25998c['length'];_0x42f8a9++){var _0x1390ec=_0x2c99a9[_0xedbb('0x47')+_0x25998c[_0x42f8a9][_0xedbb('0x12')]];if(_0x1390ec&&_0x1390ec[_0xedbb('0x48')]){this[_0xedbb('0x1')]+=0x1;}if(_0x25998c[_0x42f8a9][_0xedbb('0x49')]==='1'){this[_0xedbb('0x4')]+=0x1;}if(_0x25998c[_0x42f8a9]['paused']==='1'&&!['2','7','8'][_0xedbb('0x4a')](_0x25998c[_0x42f8a9][_0xedbb('0x4b')])){this['paused']+=0x1;}switch(_0x25998c[_0x42f8a9]['status']){case'0':this[_0xedbb('0x1e')]+=0x1;break;case'1':this[_0xedbb('0x18')]+=0x1;break;case'2':this[_0xedbb('0x7')]+=0x1;break;case'3':this[_0xedbb('0x16')]+=0x1;break;case'4':this[_0xedbb('0x4c')]+=0x1;break;case'5':this['unavailable']+=0x1;break;case'6':this[_0xedbb('0x3')]+=0x1;break;case'7':this['ringInUse']+=0x1;break;case'8':this[_0xedbb('0x17')]+=0x1;break;}}if(this[_0xedbb('0x23')]==='booked'){var _0x3f3f36=Object['keys'](_0x42a555);for(var _0x4f330a=0x0;_0x4f330a<_0x3f3f36[_0xedbb('0x4d')];_0x4f330a++){var _0xee17f6=_0x3f3f36[_0x4f330a];var _0x362295=_0x42a555[_0xee17f6];if(_0x362295[_0xedbb('0x4e')]===this[_0xedbb('0x12')]&&_0x362295['type']===_0xedbb('0x4f')&&_0x362295[_0xedbb('0x50')]==='xcally-motion-preview'){this[_0xedbb('0x4')]+=0x1;}}if(this['talking']>this[_0xedbb('0x7')]){this['talking']=this[_0xedbb('0x7')];}this[_0xedbb('0x21')]=0x0;}return this;};VoiceQueueSummary[_0xedbb('0x44')][_0xedbb('0x51')]=function(_0xae7e4f){var _0x2a4b51=![];if(_0xae7e4f){_0x2a4b51=INBOUND_COUNTERS[_0xedbb('0x52')](function(_0xa50c1c){return this[_0xa50c1c]!==_0xae7e4f[_0xa50c1c];},this);}return _0x2a4b51;};VoiceQueueSummary[_0xedbb('0x44')][_0xedbb('0x53')]=function(_0x1830c8){var _0x22e2de=![];var _0x29dc68=![];var _0x1005c7=![];if(_0x1830c8){_0x22e2de=this[_0xedbb('0x23')]!==_0x1830c8[_0xedbb('0x23')]||this[_0xedbb('0x22')]!==_0x1830c8['dialActive']||this[_0xedbb('0x40')]!==_0x1830c8[_0xedbb('0x40')]||this[_0xedbb('0x41')]!==_0x1830c8[_0xedbb('0x41')];_0x29dc68=OUTBOUND_COUNTERS[_0xedbb('0x52')](function(_0x3daa09){return this[_0x3daa09]!==_0x1830c8[_0x3daa09];},this);if(this[_0xedbb('0x42')]&&_0x1830c8[_0xedbb('0x42')]){_0x1005c7=this['Trunk'][_0xedbb('0x12')]!==_0x1830c8[_0xedbb('0x42')][_0xedbb('0x12')]||this[_0xedbb('0x42')][_0xedbb('0x54')]!==_0x1830c8['Trunk'][_0xedbb('0x54')];}}return _0x22e2de||_0x29dc68||_0x1005c7;};VoiceQueueSummary[_0xedbb('0x44')][_0xedbb('0x55')]=function(_0x387756){this[_0xedbb('0x6')]=_0x387756[_0xedbb('0x6')];this[_0xedbb('0x40')]=_0x387756[_0xedbb('0x40')];this[_0xedbb('0x41')]=_0x387756[_0xedbb('0x41')];this[_0xedbb('0x8')]=_0x387756[_0xedbb('0x8')];this['outboundAbandonedCallsDay']=_0x387756[_0xedbb('0x9')];this[_0xedbb('0xa')]=_0x387756[_0xedbb('0xa')];this[_0xedbb('0x29')]=_0x387756[_0xedbb('0x29')];this[_0xedbb('0xb')]=_0x387756[_0xedbb('0xb')];this[_0xedbb('0xc')]=_0x387756[_0xedbb('0xc')];this['outboundNoAnswerCallsDay']=_0x387756[_0xedbb('0x2d')];this[_0xedbb('0xd')]=_0x387756['outboundNoSuchCallsDay'];this['outboundReCallsDay']=_0x387756['outboundReCallsDay'];this[_0xedbb('0xe')]=_0x387756[_0xedbb('0xe')];this['outboundUnknownCallsDay']=_0x387756[_0xedbb('0xf')];this['sumBillable']=_0x387756[_0xedbb('0x1a')];this[_0xedbb('0x10')]=_0x387756[_0xedbb('0x10')];this[_0xedbb('0x11')]=_0x387756[_0xedbb('0x11')];if(this[_0xedbb('0x23')]==='preview'){this[_0xedbb('0x21')]=_0x387756['pTalking'];}};module[_0xedbb('0x56')]=VoiceQueueSummary;
\ No newline at end of file
index 847d4d0..95ea2fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d93=['name','username','accessKey','remoteUri','serverUrl','Configurations'];(function(_0x25292d,_0x3f0ac2){var _0x568b8b=function(_0x52d081){while(--_0x52d081){_0x25292d['push'](_0x25292d['shift']());}};_0x568b8b(++_0x3f0ac2);}(_0x6d93,0xa2));var _0x36d9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6d93[_0x3dd15e];return _0x231fd0;};'use strict';function VtigerAccount(_0x4730b){this['id']=_0x4730b['id']||0x0;this[_0x36d9('0x0')]=_0x4730b[_0x36d9('0x0')]||'';this[_0x36d9('0x1')]=_0x4730b['username']||'';this['accessKey']=_0x4730b[_0x36d9('0x2')]||'';this[_0x36d9('0x3')]=_0x4730b['remoteUri']||'';this[_0x36d9('0x4')]=_0x4730b[_0x36d9('0x4')]||'';this[_0x36d9('0x5')]=_0x4730b[_0x36d9('0x5')]||{};}module['exports']=VtigerAccount;
\ No newline at end of file
+var _0xbba3=['serverUrl','Configurations','exports','name','username','accessKey','remoteUri'];(function(_0x411c4a,_0x1769a5){var _0xdca442=function(_0x4f916b){while(--_0x4f916b){_0x411c4a['push'](_0x411c4a['shift']());}};_0xdca442(++_0x1769a5);}(_0xbba3,0x96));var _0x3bba=function(_0x52e526,_0x2eef28){_0x52e526=_0x52e526-0x0;var _0x239e68=_0xbba3[_0x52e526];return _0x239e68;};'use strict';function VtigerAccount(_0x2eacb9){this['id']=_0x2eacb9['id']||0x0;this[_0x3bba('0x0')]=_0x2eacb9['name']||'';this['username']=_0x2eacb9[_0x3bba('0x1')]||'';this[_0x3bba('0x2')]=_0x2eacb9[_0x3bba('0x2')]||'';this['remoteUri']=_0x2eacb9[_0x3bba('0x3')]||'';this[_0x3bba('0x4')]=_0x2eacb9[_0x3bba('0x4')]||'';this['Configurations']=_0x2eacb9[_0x3bba('0x5')]||{};}module[_0x3bba('0x6')]=VtigerAccount;
\ No newline at end of file
index c84443d..c379956 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb4c=['token','remoteUri','authType','type','integrationTab','serverUrl','Configurations','name','username','password'];(function(_0x2fb31e,_0x199b64){var _0x32b921=function(_0x13f5d6){while(--_0x13f5d6){_0x2fb31e['push'](_0x2fb31e['shift']());}};_0x32b921(++_0x199b64);}(_0xdb4c,0x75));var _0xcdb4=function(_0x1368ac,_0x5a6a69){_0x1368ac=_0x1368ac-0x0;var _0x2a54e0=_0xdb4c[_0x1368ac];return _0x2a54e0;};'use strict';function ZendeskAccount(_0x21e2ae){this['id']=_0x21e2ae['id']||0x0;this[_0xcdb4('0x0')]=_0x21e2ae[_0xcdb4('0x0')]||'';this[_0xcdb4('0x1')]=_0x21e2ae[_0xcdb4('0x1')]||'';this['password']=_0x21e2ae[_0xcdb4('0x2')]||'';this[_0xcdb4('0x3')]=_0x21e2ae[_0xcdb4('0x3')]||'';this['remoteUri']=_0x21e2ae[_0xcdb4('0x4')]||'';this[_0xcdb4('0x5')]=_0x21e2ae[_0xcdb4('0x5')]||'';this[_0xcdb4('0x6')]=_0x21e2ae['type']||_0xcdb4('0x7');this[_0xcdb4('0x8')]=_0x21e2ae[_0xcdb4('0x8')]||'';this[_0xcdb4('0x9')]=_0x21e2ae[_0xcdb4('0x9')]||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
+var _0xdb88=['authType','type','integrationTab','serverUrl','Configurations','name','username','token','remoteUri'];(function(_0x261861,_0x49682f){var _0x410a4a=function(_0x3a3bdb){while(--_0x3a3bdb){_0x261861['push'](_0x261861['shift']());}};_0x410a4a(++_0x49682f);}(_0xdb88,0x95));var _0x8db8=function(_0x5984bb,_0x56f02a){_0x5984bb=_0x5984bb-0x0;var _0x5351d8=_0xdb88[_0x5984bb];return _0x5351d8;};'use strict';function ZendeskAccount(_0x8bdbb9){this['id']=_0x8bdbb9['id']||0x0;this[_0x8db8('0x0')]=_0x8bdbb9[_0x8db8('0x0')]||'';this[_0x8db8('0x1')]=_0x8bdbb9[_0x8db8('0x1')]||'';this['password']=_0x8bdbb9['password']||'';this[_0x8db8('0x2')]=_0x8bdbb9[_0x8db8('0x2')]||'';this[_0x8db8('0x3')]=_0x8bdbb9['remoteUri']||'';this[_0x8db8('0x4')]=_0x8bdbb9[_0x8db8('0x4')]||'';this[_0x8db8('0x5')]=_0x8bdbb9[_0x8db8('0x5')]||_0x8db8('0x6');this[_0x8db8('0x7')]=_0x8bdbb9['serverUrl']||'';this[_0x8db8('0x8')]=_0x8bdbb9[_0x8db8('0x8')]||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
index abeff1a..d19aa27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47b7=['name','description','host','zone','clientId','clientSecret','serverUrl','code','refreshToken','Configurations','exports'];(function(_0x49ed01,_0x3a7b58){var _0x2998c2=function(_0x4830d9){while(--_0x4830d9){_0x49ed01['push'](_0x49ed01['shift']());}};_0x2998c2(++_0x3a7b58);}(_0x47b7,0x6e));var _0x747b=function(_0x188a40,_0x1c2002){_0x188a40=_0x188a40-0x0;var _0xa4124b=_0x47b7[_0x188a40];return _0xa4124b;};'use strict';function ZohoAccount(_0x1331df){this['id']=_0x1331df['id']||0x0;this[_0x747b('0x0')]=_0x1331df[_0x747b('0x0')]||'';this[_0x747b('0x1')]=_0x1331df['description']||'';this[_0x747b('0x2')]=_0x1331df[_0x747b('0x2')]||'';this[_0x747b('0x3')]=_0x1331df[_0x747b('0x3')]||'';this[_0x747b('0x4')]=_0x1331df[_0x747b('0x4')]||'';this['clientSecret']=_0x1331df[_0x747b('0x5')]||'';this[_0x747b('0x6')]=_0x1331df[_0x747b('0x6')]||'';this[_0x747b('0x7')]=_0x1331df[_0x747b('0x7')]||'';this[_0x747b('0x8')]=_0x1331df[_0x747b('0x8')]||'';this[_0x747b('0x9')]=_0x1331df[_0x747b('0x9')]||{};}module[_0x747b('0xa')]=ZohoAccount;
\ No newline at end of file
+var _0xc818=['description','host','zone','clientId','serverUrl','code','Configurations','exports','name'];(function(_0x1793de,_0x4d7233){var _0x4f0309=function(_0x229ee7){while(--_0x229ee7){_0x1793de['push'](_0x1793de['shift']());}};_0x4f0309(++_0x4d7233);}(_0xc818,0x116));var _0x8c81=function(_0x461c72,_0x330c4d){_0x461c72=_0x461c72-0x0;var _0x56a004=_0xc818[_0x461c72];return _0x56a004;};'use strict';function ZohoAccount(_0xedfe7f){this['id']=_0xedfe7f['id']||0x0;this[_0x8c81('0x0')]=_0xedfe7f[_0x8c81('0x0')]||'';this[_0x8c81('0x1')]=_0xedfe7f[_0x8c81('0x1')]||'';this[_0x8c81('0x2')]=_0xedfe7f['host']||'';this[_0x8c81('0x3')]=_0xedfe7f[_0x8c81('0x3')]||'';this[_0x8c81('0x4')]=_0xedfe7f[_0x8c81('0x4')]||'';this['clientSecret']=_0xedfe7f['clientSecret']||'';this[_0x8c81('0x5')]=_0xedfe7f[_0x8c81('0x5')]||'';this[_0x8c81('0x6')]=_0xedfe7f[_0x8c81('0x6')]||'';this['refreshToken']=_0xedfe7f['refreshToken']||'';this[_0x8c81('0x7')]=_0xedfe7f[_0x8c81('0x7')]||{};}module[_0x8c81('0x8')]=ZohoAccount;
\ No newline at end of file
index 628ce78..63a5462 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb3b=['Contact','lastName','active','calleridnum','scheduledat','countbusyretry','countnoanswerretry','countglobal','countcongestionretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','calleridname','number','util','lodash','moment','isNil','uniqueid','queue','name','type','campaigntype','dialAnswer','Agent','channelAgent','membername','format','SIP/%s','phone'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xeb3b,0x19e));var _0xbeb3=function(_0x1ac6ec,_0x1f81fc){_0x1ac6ec=_0x1ac6ec-0x0;var _0x48a489=_0xeb3b[_0x1ac6ec];return _0x48a489;};'use strict';var util=require(_0xbeb3('0x0'));var _=require(_0xbeb3('0x1'));var moment=require(_0xbeb3('0x2'));function checkNameSurname(_0x33e049,_0xba125a,_0x565c41){var _0x5df0cb='';if(!_[_0xbeb3('0x3')](_0xba125a)&&'string'===typeof _0xba125a){_0x5df0cb+=_0xba125a;}if(!_[_0xbeb3('0x3')](_0x565c41)&&'string'===typeof _0x565c41){_0x5df0cb+='\x20'+_0x565c41;}if(_0x5df0cb!==''){return _0x5df0cb;}return _0x33e049;}function Action(_0x2e8a69,_0x5ae6f9,_0x8d8cce,_0x294cc9,_0x406927){this[_0xbeb3('0x4')]=_0x8d8cce||undefined;this['idContact']=_0x2e8a69['id'];this[_0xbeb3('0x5')]=_0x5ae6f9[_0xbeb3('0x6')];this[_0xbeb3('0x7')]=_0x5ae6f9[_0xbeb3('0x7')];this[_0xbeb3('0x8')]=_0xbeb3('0x5');this[_0xbeb3('0x9')]=![];this['membername']=_[_0xbeb3('0x3')](_0x2e8a69[_0xbeb3('0xa')])?undefined:_0x2e8a69['Agent'][_0xbeb3('0x6')];this[_0xbeb3('0xb')]=this[_0xbeb3('0xc')]?util[_0xbeb3('0xd')](_0xbeb3('0xe'),this[_0xbeb3('0xc')]):_0x294cc9||undefined;this['calleridname']=checkNameSurname(_0x2e8a69['Contact'][_0xbeb3('0xf')],_0x2e8a69[_0xbeb3('0x10')]['firstName'],_0x2e8a69['Contact'][_0xbeb3('0x11')]);this[_0xbeb3('0x12')]=_0x2e8a69[_0xbeb3('0x12')]||![];this[_0xbeb3('0x13')]=_0x2e8a69[_0xbeb3('0xf')];this['scheduledat']=_0x2e8a69[_0xbeb3('0x14')];this['countbusyretry']=_0x2e8a69[_0xbeb3('0x15')]||0x0;this['countcongestionretry']=_0x2e8a69['countcongestionretry']||0x0;this['countnoanswerretry']=_0x2e8a69[_0xbeb3('0x16')]||0x0;this[_0xbeb3('0x17')]=(_0x2e8a69[_0xbeb3('0x15')]||0x0)+(_0x2e8a69[_0xbeb3('0x18')]||0x0)+(_0x2e8a69['countnoanswerretry']||0x0)+(_0x2e8a69[_0xbeb3('0x19')]||0x0)+(_0x2e8a69[_0xbeb3('0x1a')]||0x0)+(_0x2e8a69[_0xbeb3('0x1b')]||0x0)+(_0x2e8a69['countmachineretry']||0x0)+(_0x2e8a69['countagentrejectretry']||0x0);this[_0xbeb3('0x19')]=_0x2e8a69['countnosuchnumberretry']||0x0;this[_0xbeb3('0x1a')]=_0x2e8a69['countdropretry']||0x0;this['countabandonedretry']=_0x2e8a69[_0xbeb3('0x1b')]||0x0;this[_0xbeb3('0x1c')]=_0x2e8a69[_0xbeb3('0x1c')]||0x0;this['countagentrejectretry']=_0x2e8a69[_0xbeb3('0x1d')]||0x0;this[_0xbeb3('0x1e')]=_0x2e8a69['callback'];this[_0xbeb3('0x1f')]=_0x2e8a69[_0xbeb3('0x1f')];this['callbackat']=_0x2e8a69[_0xbeb3('0x20')];this[_0xbeb3('0x21')]=_0x2e8a69[_0xbeb3('0x21')];this[_0xbeb3('0x22')]=_0x2e8a69[_0xbeb3('0x22')];this[_0xbeb3('0x23')]=_0x2e8a69[_0xbeb3('0x23')];this[_0xbeb3('0x24')]=_[_0xbeb3('0x3')](_0x2e8a69['Agent'])?_0x2e8a69['UserId']:_0x2e8a69[_0xbeb3('0xa')]['id'];this['VoiceQueueId']=_0x2e8a69[_0xbeb3('0x25')];this[_0xbeb3('0x26')]='';this[_0xbeb3('0x27')]='';}Action[_0xbeb3('0x28')]['getCaller']=function(){return util[_0xbeb3('0xd')]('\x22%s\x22\x20<%s>',this[_0xbeb3('0x29')],this[_0xbeb3('0x2a')]);};module['exports']=Action;
\ No newline at end of file
+var _0x1893=['type','queue','dialAnswer','membername','Agent','channelAgent','format','calleridname','Contact','phone','firstName','lastName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','getCaller','\x22%s\x22\x20<%s>','number','exports','moment','isNil','string','uniqueid','idContact','name'];(function(_0x29dea5,_0x1b3b29){var _0x3007db=function(_0x33ff3f){while(--_0x33ff3f){_0x29dea5['push'](_0x29dea5['shift']());}};_0x3007db(++_0x1b3b29);}(_0x1893,0xa2));var _0x3189=function(_0xa1e030,_0x579969){_0xa1e030=_0xa1e030-0x0;var _0x1619bb=_0x1893[_0xa1e030];return _0x1619bb;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x3189('0x0'));function checkNameSurname(_0x3aec2b,_0x1b12ad,_0x106df4){var _0x10c189='';if(!_[_0x3189('0x1')](_0x1b12ad)&&_0x3189('0x2')===typeof _0x1b12ad){_0x10c189+=_0x1b12ad;}if(!_['isNil'](_0x106df4)&&_0x3189('0x2')===typeof _0x106df4){_0x10c189+='\x20'+_0x106df4;}if(_0x10c189!==''){return _0x10c189;}return _0x3aec2b;}function Action(_0x4faebf,_0x2333e6,_0x4080a9,_0x77c566,_0x118970){this[_0x3189('0x3')]=_0x4080a9||undefined;this[_0x3189('0x4')]=_0x4faebf['id'];this['queue']=_0x2333e6[_0x3189('0x5')];this['type']=_0x2333e6[_0x3189('0x6')];this['campaigntype']=_0x3189('0x7');this[_0x3189('0x8')]=![];this[_0x3189('0x9')]=_[_0x3189('0x1')](_0x4faebf['Agent'])?undefined:_0x4faebf[_0x3189('0xa')][_0x3189('0x5')];this[_0x3189('0xb')]=this[_0x3189('0x9')]?util[_0x3189('0xc')]('SIP/%s',this[_0x3189('0x9')]):_0x77c566||undefined;this[_0x3189('0xd')]=checkNameSurname(_0x4faebf[_0x3189('0xe')][_0x3189('0xf')],_0x4faebf[_0x3189('0xe')][_0x3189('0x10')],_0x4faebf[_0x3189('0xe')][_0x3189('0x11')]);this['active']=_0x4faebf[_0x3189('0x12')]||![];this[_0x3189('0x13')]=_0x4faebf[_0x3189('0xf')];this[_0x3189('0x14')]=_0x4faebf['scheduledat'];this[_0x3189('0x15')]=_0x4faebf['countbusyretry']||0x0;this['countcongestionretry']=_0x4faebf[_0x3189('0x16')]||0x0;this['countnoanswerretry']=_0x4faebf[_0x3189('0x17')]||0x0;this[_0x3189('0x18')]=(_0x4faebf[_0x3189('0x15')]||0x0)+(_0x4faebf[_0x3189('0x16')]||0x0)+(_0x4faebf['countnoanswerretry']||0x0)+(_0x4faebf[_0x3189('0x19')]||0x0)+(_0x4faebf[_0x3189('0x1a')]||0x0)+(_0x4faebf[_0x3189('0x1b')]||0x0)+(_0x4faebf['countmachineretry']||0x0)+(_0x4faebf[_0x3189('0x1c')]||0x0);this[_0x3189('0x19')]=_0x4faebf[_0x3189('0x19')]||0x0;this[_0x3189('0x1a')]=_0x4faebf[_0x3189('0x1a')]||0x0;this['countabandonedretry']=_0x4faebf[_0x3189('0x1b')]||0x0;this[_0x3189('0x1d')]=_0x4faebf[_0x3189('0x1d')]||0x0;this['countagentrejectretry']=_0x4faebf[_0x3189('0x1c')]||0x0;this['callback']=_0x4faebf[_0x3189('0x1e')];this[_0x3189('0x1f')]=_0x4faebf[_0x3189('0x1f')];this[_0x3189('0x20')]=_0x4faebf[_0x3189('0x20')];this[_0x3189('0x21')]=_0x4faebf['recallme'];this['ContactId']=_0x4faebf[_0x3189('0x22')];this[_0x3189('0x23')]=_0x4faebf[_0x3189('0x23')];this[_0x3189('0x24')]=_[_0x3189('0x1')](_0x4faebf[_0x3189('0xa')])?_0x4faebf[_0x3189('0x24')]:_0x4faebf[_0x3189('0xa')]['id'];this[_0x3189('0x25')]=_0x4faebf[_0x3189('0x25')];this['originatecalleridnum']='';this['originatecalleridname']='';}Action['prototype'][_0x3189('0x26')]=function(){return util[_0x3189('0xc')](_0x3189('0x27'),this[_0x3189('0xd')],this[_0x3189('0x28')]);};module[_0x3189('0x29')]=Action;
\ No newline at end of file
index d94205b..494f07f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a83=['nosuchnumber','verifyAdditionalPhones','additional','dialNoSuchNumberRetryFrequency','callAdditionalPhoneAfterMin','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','scheduledAt','linkedid','actioncountonusuch','incrementPreviewCounters','idContact','swapAdditionalPhones','ANSWER','responsetime','answertime','[syncHangup][talking][increment]','uniqueid','\x20Queue','connect','custom:agentConnectPreview','buildAcw','custom:agentcomplete','complete','buildObj','outboundAnswerCallsDay','total','answered','[16]','countglobal','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','sumDuration','sumBillable','talktime','[syncHangup][talking][decrement]','BUSY','outboundBusyCallsDay','countbusyretry','Busy','dialBusyRetryFrequency','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','dialGlobalMaxRetry','Global','[callProgressDetectingCustomer][logBusyGlobal]','rescheduleContact','unlockAgent','activeContact','NOANSWER','outboundNoAnswerCallsDay','countnoanswerretry','NoAnswer','buildNoAnswerEventPayload','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','outboundCongestionCallsDay','countcongestionretry','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','congestion','cloneAction','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','[callProgressDetectingCustomer][logCongestion]','CANCEL','outboundRejectCallsDay','dialAgentRejectRetryFrequency','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','countagentrejectretry','dialAgentRejectMaxRetry','ABANDONED','outboundAbandonedCallsDay','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','outboundUnknownCallsDay','countmachineretry','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','cause-txt','[callProgressDetectingCustomer][machine]','[default]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','queueSummaryCountersUpdated','callProgressDetectingAgent','isUndefined','object','reason','logAgent','createAgentHistory','[callProgressDetectingAgent][logNoSuch]','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','resolve','[incrementPreviewCounters]\x20','checkInBlack','phone','Queue','lookAgent','isEmpty','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','active','SIP/%s','execRun','unlock','unlockContact','disableContact','recallme','validateContact','isValid','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','Trunk','campaign\x20Name:\x20','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','isActive','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','execCall','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','getCallerId','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','dialOriginateCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','assign','merge','toLowerVariables','variables','variablesAction','OriginateError','[originateFailure][logOriginateFailure]','channel','actionid','clone','isFailure','response','custom:agentringnoanswer','Answer','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','pTalking:\x20','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','destuniqueid','addVariable','filterKey','keys','variable','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','uuid','moment','ioredis','../../../config/environment','../../../config/logger','preview','actionPreview','../ami','./rpcDb','../rpc/cmHopperAdditionalPhone','./action','./util/util','../dialer/utils','redis','defaults','socket.io-emitter','prototype','enqueue','tail','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','syncHangup','bind','hanguprequest','syncHangupRequest','dialend','syncDialEnd','newexten','syncNewExten','syncVarSet','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','emit','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','stringify','voice:queue:%s','name','sendMessageOneNotActive','originated','pTalking','available','message','INACTIVE','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','CAMPAIGN_STATUS','logger','loopCampaigns','syncCampaigns','hasOwnProperty','dialMethod','booked','type','outbound','clearZombieChannels','dialActive','setMessage','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','[clearZombieChannels][talking]','originated:\x20','queue','dialAnswer','pick','contactId','UserId','VoiceQueueId','ListId','Action','status','No\x20such\x20channel','updateOriginated','[clearZombieChannel]','decrementTalkink','[Dialer][checkChannel][pTalking][Preview]','loggerError','[action]','size','getContactRecallMe','agentReadyId','then','isNil','length','scheduledat','Agent','voicePause','run','logger2','[RecallMe]','starttime','format','YYYY-MM-DD\x20HH:mm:ss','outboundReCallsDay','logCustomer','RecallInQueue','dialRecallInQueue','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','catch','[getContactRecallMe]','loggedIn','isTrunkReachable','TrunkBackup','UNREACHABLE_TRUNK','callProgressDetectingCustomer','countnosuchnumberretry','totalGlobal','NoSuchNumber','custom:agentnosuchnumber'];(function(_0x533a7c,_0x263149){var _0x4f81c5=function(_0x272335){while(--_0x272335){_0x533a7c['push'](_0x533a7c['shift']());}};_0x4f81c5(++_0x263149);}(_0x6a83,0xd2));var _0x36a8=function(_0x397ad3,_0x13531f){_0x397ad3=_0x397ad3-0x0;var _0x16ef84=_0x6a83[_0x397ad3];return _0x16ef84;};'use strict';var util=require(_0x36a8('0x0'));var _=require(_0x36a8('0x1'));var uuid=require(_0x36a8('0x2'));var moment=require(_0x36a8('0x3'));var Redis=require(_0x36a8('0x4'));var config=require(_0x36a8('0x5'));var logger=require(_0x36a8('0x6'))(_0x36a8('0x7'));var loggerAction=require(_0x36a8('0x6'))(_0x36a8('0x8'));var ami=require(_0x36a8('0x9'));var rpcDb=require(_0x36a8('0xa'));var cmHopperAdditionalPhone=require(_0x36a8('0xb'));var Action=require(_0x36a8('0xc'));var ut=require(_0x36a8('0xd'));var utils=require(_0x36a8('0xe'));config[_0x36a8('0xf')]=_[_0x36a8('0x10')](config[_0x36a8('0xf')],{'host':'localhost','port':0x18eb});var io=require(_0x36a8('0x11'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0x36a8('0x12')][_0x36a8('0x13')]=function(_0x48b0fc){this[_0x36a8('0x14')]=this[_0x36a8('0x14')]?this['tail'][_0x36a8('0x15')](_0x48b0fc):_0x48b0fc();};function Preview(_0x3c8c08){this[_0x36a8('0x16')]=new Sequence();this[_0x36a8('0x17')]=_0x3c8c08[_0x36a8('0x18')];this[_0x36a8('0x19')]=_0x3c8c08[_0x36a8('0x19')];this[_0x36a8('0x1a')]={};this['agents']=_0x3c8c08[_0x36a8('0x1b')];this[_0x36a8('0x1c')]=0x0;ami['on'](_0x36a8('0x1d'),this[_0x36a8('0x1e')]['bind'](this));ami['on']('hangup',this[_0x36a8('0x1f')][_0x36a8('0x20')](this));ami['on'](_0x36a8('0x21'),this[_0x36a8('0x22')][_0x36a8('0x20')](this));ami['on'](_0x36a8('0x23'),this[_0x36a8('0x24')]['bind'](this));ami['on'](_0x36a8('0x25'),this[_0x36a8('0x26')][_0x36a8('0x20')](this));ami['on']('varset',this[_0x36a8('0x27')]['bind'](this));ami['on'](_0x36a8('0x28'),this[_0x36a8('0x29')][_0x36a8('0x20')](this));ami['on']('blindtransfer',this[_0x36a8('0x2a')][_0x36a8('0x20')](this));this['loopCampaigns'](this[_0x36a8('0x17')]);}function emit(_0x218550,_0x5a6d98,_0xebd54){io['to'](_0x218550)[_0x36a8('0x2b')](_0x5a6d98,_0xebd54);}function emitVoiceQueueChannelRemove(_0x4775f8){logger[_0x36a8('0x2c')](_0x36a8('0x2d'),JSON[_0x36a8('0x2e')](_0x4775f8));emit(util['format'](_0x36a8('0x2f'),_0x4775f8[_0x36a8('0x30')]),'voice_queue_channel:remove',_0x4775f8);io['emit']('voice_queue_presence:remove',_0x4775f8);}function notSendMessagesQueue(_0xe56800){if(_0xe56800[_0x36a8('0x31')]){if(_0xe56800[_0x36a8('0x32')]===0x0&&_0xe56800[_0x36a8('0x33')]===0x0){_0xe56800['sendMessageOneNotActive']=![];_0xe56800[_0x36a8('0x34')]=0x0;_0xe56800['paused']=0x0;_0xe56800[_0x36a8('0x35')]=utils['CAMPAIGN_STATUS'][_0x36a8('0x36')];ut['logger'](_0x36a8('0x37'),_0xe56800[_0x36a8('0x30')]+_0x36a8('0x38'));}else{_0xe56800[_0x36a8('0x35')]=utils[_0x36a8('0x39')]['DEACTIVATED'];ut[_0x36a8('0x3a')](_0x36a8('0x37'),_0xe56800[_0x36a8('0x30')]+'\x20is\x20deactivated');}}}Preview[_0x36a8('0x12')][_0x36a8('0x3b')]=function(){var _0x3b6280=this;setInterval(function(){_0x3b6280['syncCampaigns']();},0x7cf);};Preview['prototype'][_0x36a8('0x3c')]=function(){var _0x70e42c=this[_0x36a8('0x17')];this[_0x36a8('0x1c')]+=0x1;for(var _0x460b47 in _0x70e42c){if(_0x70e42c[_0x36a8('0x3d')](_0x460b47)&&(_0x70e42c[_0x460b47]['dialMethod']===_0x36a8('0x7')||_0x70e42c[_0x460b47][_0x36a8('0x3e')]===_0x36a8('0x3f'))&&_0x70e42c[_0x460b47][_0x36a8('0x40')]===_0x36a8('0x41')){if(this[_0x36a8('0x1c')]>0x7){this[_0x36a8('0x1c')]=0x0;this[_0x36a8('0x42')]();}}if(_0x70e42c[_0x36a8('0x3d')](_0x460b47)&&_0x70e42c[_0x460b47][_0x36a8('0x3e')]===_0x36a8('0x7')&&_0x70e42c[_0x460b47][_0x36a8('0x40')]===_0x36a8('0x41')){if(_0x70e42c[_0x460b47][_0x36a8('0x43')]){this[_0x36a8('0x44')](_0x70e42c[_0x460b47]);if(_0x70e42c[_0x460b47][_0x36a8('0x45')])this[_0x36a8('0x46')](_0x70e42c[_0x460b47]);}else{notSendMessagesQueue(_0x70e42c[_0x460b47]);}}}};Preview[_0x36a8('0x12')][_0x36a8('0x47')]=function(_0x4aad01){var _0x463d8c=this;this['sequence'][_0x36a8('0x13')](function(){if(!_['isNil'](_0x463d8c['actions'][_0x4aad01])){loggerAction['info'](_0x36a8('0x48'),_0x4aad01,'Queue',_0x463d8c[_0x36a8('0x1a')][_0x4aad01]['queue'],_0x36a8('0x49'),JSON[_0x36a8('0x2e')](_0x463d8c[_0x36a8('0x17')][_0x463d8c[_0x36a8('0x1a')][_0x4aad01][_0x36a8('0x4a')]]['originated']),'pTalking:\x20',JSON[_0x36a8('0x2e')](_0x463d8c[_0x36a8('0x17')][_0x463d8c[_0x36a8('0x1a')][_0x4aad01]['queue']][_0x36a8('0x33')]),JSON[_0x36a8('0x2e')](_0x463d8c[_0x36a8('0x1a')][_0x4aad01][_0x36a8('0x4b')]),JSON[_0x36a8('0x2e')](_[_0x36a8('0x4c')](_0x463d8c['actions'][_0x4aad01],[_0x36a8('0x4d'),_0x36a8('0x4e'),_0x36a8('0x4f'),_0x36a8('0x50')])));return ami[_0x36a8('0x51')]({'action':_0x36a8('0x52'),'channel':_0x463d8c[_0x36a8('0x1a')][_0x4aad01]['channel']})['catch'](function(_0x50eff4){if(_0x50eff4[_0x36a8('0x35')]===_0x36a8('0x53')){setTimeout(function(){if(_0x463d8c['actions'][_0x4aad01]){ut[_0x36a8('0x54')](_0x463d8c[_0x36a8('0x17')][_0x463d8c[_0x36a8('0x1a')][_0x4aad01]['queue']],_0x36a8('0x55'));if(_0x463d8c[_0x36a8('0x1a')][_0x4aad01][_0x36a8('0x4b')]===!![]){ut[_0x36a8('0x56')](_0x463d8c['campaignsPreview'][_0x463d8c[_0x36a8('0x1a')][_0x4aad01][_0x36a8('0x4a')]],_0x36a8('0x55'));ut['loggerError'](_0x36a8('0x57')+_0x4aad01,_0x463d8c['actions'][_0x4aad01][_0x36a8('0x4a')]);}ut[_0x36a8('0x58')]('[Dialer][checkChannel][Preview]'+_0x4aad01,_0x463d8c[_0x36a8('0x1a')][_0x4aad01][_0x36a8('0x4a')]);delete _0x463d8c[_0x36a8('0x1a')][_0x4aad01];}},0x2328);}});}});};Preview[_0x36a8('0x12')][_0x36a8('0x42')]=function(){var _0x1ad270=this;loggerAction[_0x36a8('0x2c')](_0x36a8('0x59'),_[_0x36a8('0x5a')](this['actions']));for(var _0x153922 in this[_0x36a8('0x1a')]){if(_0x1ad270[_0x36a8('0x1a')][_0x36a8('0x3d')](_0x153922)){_0x1ad270[_0x36a8('0x47')](_0x153922);}}};Preview[_0x36a8('0x12')][_0x36a8('0x46')]=function(_0x347379){var _0x532004=this;rpcDb[_0x36a8('0x5b')](_0x347379['id'],ut[_0x36a8('0x5c')](this[_0x36a8('0x1b')]))[_0x36a8('0x5d')](function(_0xfa7036){if(!_[_0x36a8('0x5e')](_0xfa7036)){for(var _0x353804=0x0;_0x353804<_0xfa7036[_0x36a8('0x5f')];_0x353804+=0x1){if(ut['getDiff'](_0xfa7036[_0x353804][_0x36a8('0x60')])<_0x347379['dialRecallMeTimeout']*0x3c){if(_0xfa7036[_0x353804][_0x36a8('0x61')]&&!_0xfa7036[_0x353804]['Agent'][_0x36a8('0x62')]){_0x532004[_0x36a8('0x63')](_0xfa7036[_0x353804]['id'])[_0x36a8('0x5d')](ut[_0x36a8('0x64')](_0x36a8('0x65')))['catch'](ut['logger2'](_0x36a8('0x65')));}else{rpcDb['disableContact'](_0xfa7036[_0x353804]['id']);}}else{var _0x3abb71=new Action(_0xfa7036[_0x353804],_0x347379);_0x3abb71[_0x36a8('0x66')]=moment()[_0x36a8('0x67')](_0x36a8('0x68'));_0x347379[_0x36a8('0x69')]+=0x1;ut[_0x36a8('0x6a')](_0x3abb71,0x17,_0x36a8('0x6b'));if(_0x347379[_0x36a8('0x6c')]){rpcDb['rescheduleContactInQueue'](ut['createBody'](_0xfa7036[_0x353804]));rpcDb[_0x36a8('0x6d')](_0x3abb71,_0x36a8('0x6e'));}else{ut[_0x36a8('0x6a')](_0x3abb71,0x16,_0x36a8('0x6f'));rpcDb[_0x36a8('0x6d')](_0x3abb71,_0x36a8('0x70'));rpcDb[_0x36a8('0x71')](_0x3abb71,_0x36a8('0x70'));}}}}})[_0x36a8('0x72')](ut[_0x36a8('0x64')](_0x36a8('0x73')));};Preview[_0x36a8('0x12')][_0x36a8('0x44')]=function(_0x9c2c5){_0x9c2c5['sendMessageOneNotActive']=!![];if(ut['IsNotLoggedIn'](_0x9c2c5[_0x36a8('0x74')])){_0x9c2c5[_0x36a8('0x35')]=utils[_0x36a8('0x39')]['NO_AGENTS_LOGGED'];}else if(!ut['isActive'](_0x9c2c5[_0x36a8('0x43')])){_0x9c2c5[_0x36a8('0x35')]=utils[_0x36a8('0x39')][_0x36a8('0x36')];}else if(!this[_0x36a8('0x75')](_0x9c2c5['Trunk'])){if(!this[_0x36a8('0x75')](_0x9c2c5[_0x36a8('0x76')])){_0x9c2c5[_0x36a8('0x35')]=utils['CAMPAIGN_STATUS'][_0x36a8('0x77')];}else{_0x9c2c5[_0x36a8('0x35')]=utils[_0x36a8('0x39')]['ACTIVE'];}}else{_0x9c2c5[_0x36a8('0x35')]=utils['CAMPAIGN_STATUS']['ACTIVE'];}};Preview[_0x36a8('0x12')][_0x36a8('0x78')]=function(_0x1c4eb8,_0x5623c1,_0x3c24ca){var _0x223665=this;var _0x2c37d1=this[_0x36a8('0x1a')][_0x5623c1];var _0x51984c=this[_0x36a8('0x17')][_0x2c37d1['queue']];var _0x4e052e;var _0x2ca00e=![];var _0x228087=0x2;var _0x2daa86=0x3;if(_0x51984c){switch(_0x3c24ca){case'1':_0x51984c['outboundNoSuchCallsDay']+=0x1;_0x2c37d1[_0x36a8('0x79')]+=0x1;_0x2c37d1['countglobal']=ut[_0x36a8('0x7a')](_0x2c37d1);ut[_0x36a8('0x6a')](_0x2c37d1,0x0,_0x36a8('0x7b'));ami['emit'](_0x36a8('0x7c'),ut['buildObj'](_0x2c37d1,_0x36a8('0x7d')));rpcDb[_0x36a8('0x6d')](_0x2c37d1,'[callProgressDetectingCustomer][logNoSuch]');_0x223665[_0x36a8('0x7e')](_0x2c37d1,'0',_0x51984c)[_0x36a8('0x5d')](function(_0xc78bb6){_0x2ca00e=_0xc78bb6[_0x36a8('0x7f')]==0x1;_0x228087=_0x51984c[_0x36a8('0x80')];_0x2daa86=_0x51984c[_0x36a8('0x81')];if(!_0x2ca00e){if(ut['totalGlobal'](_0x2c37d1)>=_0x51984c['dialGlobalMaxRetry']){_0x4e052e=ut['cloneAction'](_0x2c37d1,0xf,'Global');rpcDb[_0x36a8('0x71')](_0x4e052e,_0x36a8('0x82'));}else{if(_0x2c37d1[_0x36a8('0x79')]>=_0x51984c[_0x36a8('0x83')]){rpcDb[_0x36a8('0x71')](_0x2c37d1,_0x36a8('0x82'));}else{rpcDb['rescheduleContact'](ut[_0x36a8('0x84')](_0x2c37d1,_0x36a8('0x79'),_0x51984c[_0x36a8('0x80')]),_0x2c37d1['unlockAgent'],_0x2c37d1['activeContact']);}}delete this[_0x36a8('0x1a')][_0x1c4eb8[_0x36a8('0x85')]];}else{_0x2c37d1[_0x36a8('0x79')]++;logger[_0x36a8('0x2c')](_0x36a8('0x86'),_0x2c37d1['countnosuchnumberretry']);logger['info']('id',_0x2c37d1['idContact']);_0x223665[_0x36a8('0x87')]({'id':_0x2c37d1[_0x36a8('0x88')],'field':{'countnosuchnumberretry':_0x2c37d1[_0x36a8('0x79')]}})[_0x36a8('0x5d')](function(){_0x223665[_0x36a8('0x89')](_0x2c37d1,_0x228087,_0x2daa86)['then'](function(){});});}});break;case _0x36a8('0x8a'):var _0x489eac=moment()[_0x36a8('0x67')]('YYYY-MM-DD\x20HH:mm:ss');_0x2c37d1[_0x36a8('0x8b')]=_0x489eac;_0x2c37d1[_0x36a8('0x8c')]=_0x489eac;_0x2c37d1[_0x36a8('0x4b')]=!![];_0x51984c['pTalking']+=0x1;logger[_0x36a8('0x2c')](_0x36a8('0x8d'),_0x2c37d1[_0x36a8('0x8e')],_0x36a8('0x8f'),_0x51984c['name'],'pTalking:\x20',_0x51984c[_0x36a8('0x33')]);ami[_0x36a8('0x2b')]('custom:agentconnect',ut['buildObj'](_0x2c37d1,_0x36a8('0x90'),this[_0x36a8('0x17')][_0x2c37d1[_0x36a8('0x4a')]]));if(_0x51984c['acw']){ami[_0x36a8('0x2b')](_0x36a8('0x91'),ut[_0x36a8('0x92')](_0x2c37d1));}break;case'16':ami[_0x36a8('0x2b')](_0x36a8('0x93'),ut['buildObj'](_0x2c37d1,_0x36a8('0x94'),this['campaignsPreview'][_0x2c37d1[_0x36a8('0x4a')]]));emitVoiceQueueChannelRemove(ut[_0x36a8('0x95')](_0x2c37d1,'complete'));_0x51984c[_0x36a8('0x96')]+=0x1;_0x51984c[_0x36a8('0x97')]+=0x1;_0x51984c[_0x36a8('0x98')]+=0x1;ut['decrementTalkink'](_0x51984c,_0x36a8('0x99'));_0x2c37d1[_0x36a8('0x9a')]=ut[_0x36a8('0x7a')](_0x2c37d1);ut[_0x36a8('0x6a')](_0x2c37d1,0x4,'Answer');rpcDb[_0x36a8('0x6d')](_0x2c37d1,_0x36a8('0x9b'));rpcDb['createCustomerFinal'](_0x2c37d1,_0x36a8('0x9c'));rpcDb[_0x36a8('0x9d')](_0x2c37d1);_0x51984c[_0x36a8('0x9e')]+=_0x2c37d1['talktime'];_0x51984c[_0x36a8('0x9f')]+=_0x2c37d1[_0x36a8('0xa0')];logger[_0x36a8('0x2c')](_0x36a8('0xa1'),_0x2c37d1[_0x36a8('0x8e')],'\x20Queue',_0x51984c[_0x36a8('0x30')],'pTalking:\x20',_0x51984c[_0x36a8('0x33')]);delete this[_0x36a8('0x1a')][_0x1c4eb8[_0x36a8('0x85')]];break;case _0x36a8('0xa2'):_0x51984c[_0x36a8('0xa3')]+=0x1;_0x2c37d1[_0x36a8('0xa4')]+=0x1;_0x2c37d1[_0x36a8('0x9a')]=ut[_0x36a8('0x7a')](_0x2c37d1);ut[_0x36a8('0x6a')](_0x2c37d1,0x5,_0x36a8('0xa5'));_0x228087=_0x51984c[_0x36a8('0xa6')];_0x2daa86=_0x51984c[_0x36a8('0x81')];ami[_0x36a8('0x2b')](_0x36a8('0xa7'),ut['buildObj'](_0x2c37d1,_0x36a8('0xa8')));rpcDb[_0x36a8('0x6d')](_0x2c37d1,_0x36a8('0xa9'));_0x223665['verifyAdditionalPhones'](_0x2c37d1,'5',_0x51984c)[_0x36a8('0x5d')](function(_0x2409e5){_0x2ca00e=_0x2409e5['additional']==0x1;if(!_0x2ca00e){if(ut['totalGlobal'](_0x2c37d1)>=_0x51984c[_0x36a8('0xaa')]){_0x4e052e=ut['cloneAction'](_0x2c37d1,0xf,_0x36a8('0xab'));rpcDb[_0x36a8('0x71')](_0x4e052e,_0x36a8('0xac'));}else{if(_0x2c37d1[_0x36a8('0xa4')]>=_0x51984c['dialBusyMaxRetry']){rpcDb[_0x36a8('0x71')](_0x2c37d1,_0x36a8('0xa9'));}else{rpcDb[_0x36a8('0xad')](ut[_0x36a8('0x84')](_0x2c37d1,_0x36a8('0xa4'),_0x51984c[_0x36a8('0xa6')]),_0x2c37d1[_0x36a8('0xae')],_0x2c37d1[_0x36a8('0xaf')]);}}}else{_0x2c37d1[_0x36a8('0xa4')]++;_0x223665[_0x36a8('0x87')]({'id':_0x2c37d1[_0x36a8('0x88')],'field':{'countbusyretry':_0x2c37d1[_0x36a8('0xa4')]}})[_0x36a8('0x5d')](function(){_0x223665[_0x36a8('0x89')](_0x2c37d1,_0x228087,_0x2daa86)[_0x36a8('0x5d')](function(){});});}});break;case _0x36a8('0xb0'):_0x51984c[_0x36a8('0xb1')]+=0x1;_0x2c37d1[_0x36a8('0xb2')]+=0x1;_0x2c37d1[_0x36a8('0x9a')]=ut[_0x36a8('0x7a')](_0x2c37d1);ut[_0x36a8('0x6a')](_0x2c37d1,0x3,_0x36a8('0xb3'));_0x228087=_0x51984c['dialNoAnswerRetryFrequency'];_0x2daa86=_0x51984c[_0x36a8('0x81')];var _0x15f628=ut[_0x36a8('0xb4')](_0x2c37d1,_0x51984c);ami[_0x36a8('0x2b')](_0x36a8('0xb5'),_0x15f628);rpcDb[_0x36a8('0x6d')](_0x2c37d1,_0x36a8('0xb6'));_0x223665[_0x36a8('0x7e')](_0x2c37d1,'3',_0x51984c)[_0x36a8('0x5d')](function(_0x35529d){_0x2ca00e=_0x35529d['additional']==0x1;if(!_0x2ca00e){if(ut['totalGlobal'](_0x2c37d1)>=_0x51984c[_0x36a8('0xaa')]){_0x4e052e=ut['cloneAction'](_0x2c37d1,0xf,_0x36a8('0xab'));rpcDb[_0x36a8('0x71')](_0x4e052e,_0x36a8('0xb7'));}else{if(_0x2c37d1[_0x36a8('0xb2')]>=_0x51984c[_0x36a8('0xb8')]){rpcDb[_0x36a8('0x71')](_0x2c37d1,_0x36a8('0xb6'));}else{rpcDb[_0x36a8('0xad')](ut[_0x36a8('0x84')](_0x2c37d1,_0x36a8('0xb2'),_0x51984c[_0x36a8('0xb9')]),_0x2c37d1['unlockAgent'],_0x2c37d1[_0x36a8('0xaf')]);}}}else{_0x2c37d1['countnoanswerretry']++;_0x223665[_0x36a8('0x87')]({'id':_0x2c37d1['idContact'],'field':{'countnoanswerretry':_0x2c37d1[_0x36a8('0xb2')]}})[_0x36a8('0x5d')](function(){_0x223665[_0x36a8('0x89')](_0x2c37d1,_0x228087,_0x2daa86)[_0x36a8('0x5d')](function(){});});}});break;case'CONGESTION':_0x51984c[_0x36a8('0xba')]+=0x1;_0x2c37d1[_0x36a8('0xbb')]+=0x1;_0x2c37d1[_0x36a8('0x9a')]=ut[_0x36a8('0x7a')](_0x2c37d1);ut[_0x36a8('0x6a')](_0x2c37d1,0x8,_0x36a8('0xbc'));_0x228087=_0x51984c[_0x36a8('0xbd')];_0x2daa86=_0x51984c[_0x36a8('0x81')];ami['emit'](_0x36a8('0xbe'),ut[_0x36a8('0x95')](_0x2c37d1,_0x36a8('0xbf')));rpcDb[_0x36a8('0x6d')](_0x2c37d1,'[callProgressDetectingCustomer][logCongestion]');_0x223665[_0x36a8('0x7e')](_0x2c37d1,'8',_0x51984c)[_0x36a8('0x5d')](function(_0x520b6d){_0x2ca00e=_0x520b6d[_0x36a8('0x7f')]==0x1;if(!_0x2ca00e){if(ut['totalGlobal'](_0x2c37d1)>=_0x51984c['dialGlobalMaxRetry']){_0x4e052e=ut[_0x36a8('0xc0')](_0x2c37d1,0xf,'Global');rpcDb[_0x36a8('0x71')](_0x4e052e,_0x36a8('0xc1'));}else{if(_0x2c37d1[_0x36a8('0xbb')]>=_0x51984c[_0x36a8('0xc2')]){rpcDb[_0x36a8('0x71')](_0x2c37d1,_0x36a8('0xc3'));}else{rpcDb[_0x36a8('0xad')](ut[_0x36a8('0x84')](_0x2c37d1,_0x36a8('0xbb'),_0x51984c[_0x36a8('0xa6')]),_0x2c37d1['unlockAgent'],_0x2c37d1[_0x36a8('0xaf')]);}}}else{_0x2c37d1[_0x36a8('0xbb')]++;_0x223665[_0x36a8('0x87')]({'id':_0x2c37d1[_0x36a8('0x88')],'field':{'countcongestionretry':_0x2c37d1[_0x36a8('0xbb')]}})[_0x36a8('0x5d')](function(){_0x223665[_0x36a8('0x89')](_0x2c37d1,_0x228087,_0x2daa86)[_0x36a8('0x5d')](function(){});});}});break;case _0x36a8('0xc4'):_0x51984c[_0x36a8('0xc5')]+=0x1;_0x2c37d1['countagentrejectretry']+=0x1;_0x2c37d1[_0x36a8('0x9a')]=ut[_0x36a8('0x7a')](_0x2c37d1);ut['logCustomer'](_0x2c37d1,0x14,'AgentReject');_0x228087=_0x51984c[_0x36a8('0xc6')];_0x2daa86=_0x51984c[_0x36a8('0x81')];ami['emit'](_0x36a8('0xc7'),ut['buildObj'](_0x2c37d1,_0x36a8('0xc8')));rpcDb[_0x36a8('0x6d')](_0x2c37d1,_0x36a8('0xc9'));_0x223665[_0x36a8('0x7e')](_0x2c37d1,'20',_0x51984c)[_0x36a8('0x5d')](function(_0x494526){_0x2ca00e=_0x494526[_0x36a8('0x7f')]==0x1;if(!_0x2ca00e){if(ut['totalGlobal'](_0x2c37d1)>=_0x51984c[_0x36a8('0xaa')]){_0x4e052e=ut[_0x36a8('0xc0')](_0x2c37d1,0x14,'AgentReject');rpcDb['createCustomerFinal'](_0x4e052e,_0x36a8('0xca'));}else{if(_0x2c37d1[_0x36a8('0xcb')]>=_0x51984c[_0x36a8('0xcc')]){rpcDb['createCustomerFinal'](_0x2c37d1,_0x36a8('0xca'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x2c37d1,_0x36a8('0xcb'),_0x51984c[_0x36a8('0xc6')]),_0x2c37d1['unlockAgent'],_0x2c37d1[_0x36a8('0xaf')]);}}}else{_0x2c37d1['countnoanswerretry']++;_0x223665['incrementPreviewCounters']({'id':_0x2c37d1['idContact'],'field':{'countnoanswerretry':_0x2c37d1[_0x36a8('0xb2')]}})[_0x36a8('0x5d')](function(){_0x223665['swapAdditionalPhones'](_0x2c37d1,_0x228087,_0x2daa86)['then'](function(){});});}});break;case _0x36a8('0xcd'):_0x51984c[_0x36a8('0xce')]+=0x1;_0x2c37d1[_0x36a8('0xcf')]+=0x1;_0x2c37d1[_0x36a8('0x9a')]=ut[_0x36a8('0x7a')](_0x2c37d1);ut[_0x36a8('0x6a')](_0x2c37d1,0xb,_0x36a8('0xd0'));rpcDb[_0x36a8('0x6d')](_0x2c37d1,_0x36a8('0xd1'));_0x223665[_0x36a8('0x7e')](_0x2c37d1,'11',_0x51984c)[_0x36a8('0x5d')](function(_0x5d8885){_0x2ca00e=_0x5d8885[_0x36a8('0x7f')]==0x1;if(!_0x2ca00e){if(ut['totalGlobal'](_0x2c37d1)>=_0x51984c[_0x36a8('0xaa')]){_0x4e052e=ut[_0x36a8('0xc0')](_0x2c37d1,0xf,'Global');rpcDb[_0x36a8('0x71')](_0x4e052e,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0x2c37d1[_0x36a8('0xd2')]>=_0x51984c[_0x36a8('0xd3')]){rpcDb['createCustomerFinal'](_0x2c37d1,_0x36a8('0xd1'));}else{rpcDb['rescheduleContact'](ut[_0x36a8('0x84')](_0x2c37d1,_0x36a8('0xcf'),_0x51984c['dialAbandonedRetryFrequency']),_0x2c37d1['unlockAgent'],_0x2c37d1[_0x36a8('0xaf')]);}}}else{_0x2c37d1[_0x36a8('0xb2')]++;_0x223665['incrementPreviewCounters']({'id':_0x2c37d1[_0x36a8('0x88')],'field':{'countnoanswerretry':_0x2c37d1[_0x36a8('0xb2')]}})[_0x36a8('0x5d')](function(){_0x223665[_0x36a8('0x89')](_0x2c37d1,_0x228087,_0x2daa86)[_0x36a8('0x5d')](function(){});});}});break;case'18':_0x51984c[_0x36a8('0xd4')]+=0x1;_0x2c37d1[_0x36a8('0xd5')]+=0x1;_0x2c37d1['countglobal']=ut[_0x36a8('0x7a')](_0x2c37d1);ut[_0x36a8('0x6a')](_0x2c37d1,0x12,_0x1c4eb8['cause-txt']||_0x1c4eb8[_0x36a8('0xd6')]);ami['emit'](_0x36a8('0xd7'),ut['buildObj'](_0x2c37d1,_0x36a8('0xd8')));rpcDb[_0x36a8('0x6d')](_0x2c37d1,_0x36a8('0xd9'));_0x223665[_0x36a8('0x7e')](_0x2c37d1,'18',_0x51984c)[_0x36a8('0x5d')](function(_0x40518d){_0x2ca00e=_0x40518d[_0x36a8('0x7f')]==0x1;if(!_0x2ca00e){if(ut['totalGlobal'](_0x2c37d1)>=_0x51984c[_0x36a8('0xaa')]){_0x4e052e=ut['cloneAction'](_0x2c37d1,0x12,_0x36a8('0xab'));rpcDb[_0x36a8('0x71')](_0x4e052e,_0x36a8('0xd9'));}else{rpcDb[_0x36a8('0x71')](_0x2c37d1,_0x36a8('0xd9'));}}else{_0x2c37d1[_0x36a8('0xb2')]++;_0x223665[_0x36a8('0x87')]({'id':_0x2c37d1['idContact'],'field':{'countnoanswerretry':_0x2c37d1['countnoanswerretry']}})['then'](function(){_0x223665[_0x36a8('0x89')](_0x2c37d1,_0x228087,_0x2daa86)['then'](function(){});});}});delete this[_0x36a8('0x1a')][_0x1c4eb8[_0x36a8('0x85')]];break;case'19':_0x51984c[_0x36a8('0xd4')]+=0x1;_0x2c37d1['countglobal']=ut['totalGlobal'](_0x2c37d1);ut['logCustomer'](_0x2c37d1,0x13,_0x1c4eb8[_0x36a8('0xda')]||_0x1c4eb8[_0x36a8('0xd6')]);ami['emit'](_0x36a8('0xd7'),ut[_0x36a8('0x95')](_0x2c37d1,'amd'));rpcDb[_0x36a8('0x6d')](_0x2c37d1,_0x36a8('0xdb'));_0x223665[_0x36a8('0x7e')](_0x2c37d1,'18',_0x51984c)['then'](function(_0x50a99d){_0x2ca00e=_0x50a99d[_0x36a8('0x7f')]==0x1;if(!_0x2ca00e){if(ut[_0x36a8('0x7a')](_0x2c37d1)>=_0x51984c[_0x36a8('0xaa')]){_0x4e052e=ut[_0x36a8('0xc0')](_0x2c37d1,0xf,_0x36a8('0xab'));rpcDb[_0x36a8('0x71')](_0x4e052e,'[callProgressDetectingCustomer][machine]');}else{rpcDb[_0x36a8('0x71')](_0x2c37d1,_0x36a8('0xdb'));}}else{_0x2c37d1[_0x36a8('0xb2')]++;_0x223665[_0x36a8('0x87')]({'id':_0x2c37d1[_0x36a8('0x88')],'field':{'countnoanswerretry':_0x2c37d1[_0x36a8('0xb2')]}})[_0x36a8('0x5d')](function(){_0x223665[_0x36a8('0x89')](_0x2c37d1,_0x228087,_0x2daa86)['then'](function(){});});}});delete this[_0x36a8('0x1a')][_0x1c4eb8[_0x36a8('0x85')]];break;default:if(_0x2c37d1[_0x36a8('0x4b')]){ut[_0x36a8('0x56')](_0x51984c,_0x36a8('0xdc'));ut['loggerError']('[Dialer][decrementTalkink][no\x20Hangup][Preview]'+_0x51984c[_0x36a8('0x30')],_0x1c4eb8);}_0x51984c[_0x36a8('0xd4')]+=0x1;_0x2c37d1[_0x36a8('0x9a')]=ut[_0x36a8('0x7a')](_0x2c37d1);ut[_0x36a8('0x6a')](_0x2c37d1,0xc,_0x1c4eb8[_0x36a8('0xda')]||_0x1c4eb8['dialstatus']);_0x228087=_0x51984c[_0x36a8('0xc6')];_0x2daa86=_0x51984c[_0x36a8('0x81')];rpcDb[_0x36a8('0x6d')](_0x2c37d1,'[callProgressDetectingCustomer][logUnknown]');_0x223665['verifyAdditionalPhones'](_0x2c37d1,'20',_0x51984c)[_0x36a8('0x5d')](function(_0x43e006){_0x2ca00e=_0x43e006[_0x36a8('0x7f')]==0x1;if(!_0x2ca00e){if(ut[_0x36a8('0x7a')](_0x2c37d1)>=_0x51984c['dialGlobalMaxRetry']){_0x4e052e=ut[_0x36a8('0xc0')](_0x2c37d1,0xf,_0x36a8('0xab'));rpcDb[_0x36a8('0x71')](_0x4e052e,_0x36a8('0xdd'));}else{rpcDb['createCustomerFinal'](_0x2c37d1,_0x36a8('0xdd'));}delete this[_0x36a8('0x1a')][_0x1c4eb8[_0x36a8('0x85')]];}else{_0x223665[_0x36a8('0x89')](_0x2c37d1,_0x228087,_0x2daa86)[_0x36a8('0x5d')](function(){});}});}if(!(_0x2c37d1[_0x36a8('0x4b')]&&_0x3c24ca==='16')){ut[_0x36a8('0x54')](_0x51984c,_0x36a8('0xde'));logger[_0x36a8('0x2c')](_0x36a8('0xdf'),_0x2c37d1['uniqueid'],_0x36a8('0x8f'),_0x51984c[_0x36a8('0x30')],_0x36a8('0x49'),_0x51984c[_0x36a8('0x32')]);}if(_0x3c24ca!==_0x36a8('0x8a')){delete this[_0x36a8('0x1a')][_0x1c4eb8[_0x36a8('0x85')]];delete this[_0x36a8('0x1a')][_0x1c4eb8[_0x36a8('0xe0')]];}_0x51984c[_0x36a8('0xe1')]=!![];}};Preview[_0x36a8('0x12')][_0x36a8('0xe2')]=function(_0x1b2321,_0x275719,_0x54caa7){if(_[_0x36a8('0xe3')](_0x275719)&&_0x36a8('0xe4')!==typeof _0x275719){return;}if(_[_0x36a8('0xe3')](_0x54caa7)&&'object'!==typeof _0x54caa7){return;}switch(_0x54caa7[_0x36a8('0xe5')]){case'0':ut[_0x36a8('0xe6')](_0x1b2321,0x0,_0x36a8('0x7b'));rpcDb[_0x36a8('0xe7')](_0x1b2321,_0x36a8('0xe8'));break;case'3':ut[_0x36a8('0xe6')](_0x1b2321,0x3,'NoAnswer');rpcDb[_0x36a8('0xe7')](_0x1b2321,_0x36a8('0xe9'));break;case'5':ut[_0x36a8('0xe6')](_0x1b2321,0x5,'Busy');rpcDb['createAgentHistory'](_0x1b2321,_0x36a8('0xea'));break;case'8':ut[_0x36a8('0xe6')](_0x1b2321,0x8,_0x36a8('0xbc'));rpcDb['createAgentHistory'](_0x1b2321,_0x36a8('0xeb'));break;case'22':ut[_0x36a8('0xe6')](_0x1b2321,0x16,_0x36a8('0xec'));rpcDb['createAgentHistory'](_0x1b2321,_0x36a8('0xed'));break;default:ut[_0x36a8('0xe6')](_0x1b2321,0xc,_0x54caa7[_0x36a8('0xe5')]);rpcDb[_0x36a8('0xe7')](_0x1b2321,'[callProgressDetectingAgent][logCongestion]');}ut[_0x36a8('0x54')](_0x275719,_0x36a8('0xee'));logger['info'](_0x36a8('0xef'),_0x1b2321[_0x36a8('0x8e')],'\x20Queue',_0x275719[_0x36a8('0x30')],_0x36a8('0x49'),_0x275719[_0x36a8('0x32')]);delete this[_0x36a8('0x1a')][_0x1b2321[_0x36a8('0x8e')]];};Preview['prototype']['verifyAdditionalPhones']=function(_0x1aef1d,_0x2bcbb5,_0x243fd9){return cmHopperAdditionalPhone['verifyAdditionalPhones'](_0x1aef1d,_0x2bcbb5,_0x243fd9)['catch'](logger[_0x36a8('0x2c')]('[verifyAdditionalPhone]\x20'));};Preview[_0x36a8('0x12')]['swapAdditionalPhones']=function(_0x12a173,_0x4212c0,_0x4fd086){return cmHopperAdditionalPhone['swapAdditionalPhones'](_0x12a173,_0x4212c0,_0x4fd086)[_0x36a8('0x72')](logger[_0x36a8('0x2c')]('[swapAdditionalPhone]\x20'));};Preview[_0x36a8('0x12')]['incrementPreviewCounters']=function(_0x474dc6){return Promise[_0x36a8('0xf0')]()[_0x36a8('0x5d')](cmHopperAdditionalPhone[_0x36a8('0x87')](_0x474dc6))[_0x36a8('0x72')](logger['info'](_0x36a8('0xf1')));};Preview['prototype'][_0x36a8('0xf2')]=function(_0x1e860e,_0x4313d2,_0x556949,_0x32d119,_0x3bac98){var _0x4123e7=this;return new Promise(function(_0x3cebbb,_0x44e4a2){if(_['isNil'](_0x4313d2)||_[_0x36a8('0x5e')](_0x4313d2['Contact'])||_[_0x36a8('0x5e')](_0x4313d2[_0x36a8('0xf3')])||_[_0x36a8('0x5e')](_0x4313d2[_0x36a8('0x4f')])){_0x44e4a2(ut[_0x36a8('0x35')]('Contact\x20is\x20undefined',_0x32d119,_0x3bac98));return;}var _0x36d9fb=uuid['v4']();var _0x4ed4fa=_0x4123e7[_0x36a8('0x17')][_0x4313d2[_0x36a8('0xf4')]['name']];var _0x38c4ae=_0x556949?_0x4123e7[_0x36a8('0x1b')][_0x556949]['id']:undefined;_0x4123e7['actions'][_0x36d9fb]=new Action(_0x4313d2,_0x4ed4fa,_0x36d9fb,_0x556949,_0x38c4ae);var _0x3bda44=_0x4123e7[_0x36a8('0x1a')][_0x36d9fb];_0x3bda44['unlockAgent']=_0x32d119;_0x3bda44['activeContact']=_0x3bac98;_0x3bda44[_0x36a8('0xf5')]=_0x556949;if(_[_0x36a8('0xf6')](_0x1e860e)){_0x4123e7['execCall'](_0x3bda44,_0x4ed4fa,_0x4313d2,_0x556949)[_0x36a8('0x5d')](function(_0x3fe498){logger['info'](_0x36a8('0xf7'),_0x36a8('0xf8')+_0x3bda44[_0x36a8('0x4a')]+_0x36a8('0xf9')+_0x3bda44[_0x36a8('0x88')],JSON['stringify'](_0x3fe498));ami[_0x36a8('0x2b')](_0x36a8('0xfa'),ut[_0x36a8('0x95')](_0x3bda44,_0x36a8('0xfb'),_0x4123e7['campaignsPreview'][_0x3bda44['queue']]));_0x3cebbb(ut[_0x36a8('0x35')](_0x36a8('0xfc')));})[_0x36a8('0x72')](function(_0x18b000){ut[_0x36a8('0x3a')](_0x36a8('0xfd'),_0x18b000);_0x44e4a2(ut[_0x36a8('0x35')](_0x36a8('0xfe'),_0x32d119,_0x3bac98));});}else{_0x4ed4fa['outboundBlacklistCallsDay']+=0x1;ut[_0x36a8('0xff')](_0x3bda44);rpcDb[_0x36a8('0x100')](_0x3bda44,_0x36a8('0x101'));delete _0x4123e7[_0x36a8('0x1a')][_0x36d9fb];_0x44e4a2(ut[_0x36a8('0x35')](_0x36a8('0x102'),_0x32d119,_0x3bac98));}});};Preview[_0x36a8('0x12')][_0x36a8('0x75')]=function(_0x3ff2ef){return!_[_0x36a8('0x5e')](_0x3ff2ef)&&!_[_0x36a8('0x5e')](_0x3ff2ef['name'])&&!_[_0x36a8('0x5e')](_0x3ff2ef[_0x36a8('0x103')])&&_0x3ff2ef[_0x36a8('0x103')]&&!_['isNil'](this[_0x36a8('0x19')][util[_0x36a8('0x67')](_0x36a8('0x104'),_0x3ff2ef['name'])])&&!_[_0x36a8('0x5e')](this[_0x36a8('0x19')][util[_0x36a8('0x67')](_0x36a8('0x104'),_0x3ff2ef[_0x36a8('0x30')])][_0x36a8('0x52')])&&(this[_0x36a8('0x19')][util['format'](_0x36a8('0x104'),_0x3ff2ef[_0x36a8('0x30')])][_0x36a8('0x52')]==='reachable'||this[_0x36a8('0x19')][util[_0x36a8('0x67')](_0x36a8('0x104'),_0x3ff2ef[_0x36a8('0x30')])][_0x36a8('0x52')]==='unmonitored');};Preview[_0x36a8('0x12')][_0x36a8('0x63')]=function(_0x593998,_0x55a67c){return this[_0x36a8('0x105')](_0x593998,_0x55a67c)['then'](function(_0x2777ca){return _[_0x36a8('0x4c')](_0x2777ca,[_0x36a8('0x35')]);})[_0x36a8('0x72')](function(_0xbe18da){if(_0xbe18da[_0x36a8('0x106')]){rpcDb[_0x36a8('0x107')](_0x593998);}if(_0xbe18da[_0x36a8('0x103')]){rpcDb[_0x36a8('0x108')](_0x593998);}throw _[_0x36a8('0x4c')](_0xbe18da,[_0x36a8('0x35')]);});};Preview[_0x36a8('0x12')][_0x36a8('0x105')]=function(_0x2aced1,_0x7e64f){var _0x3c814b=this;var _0x598c48,_0x45c4e6;return rpcDb['getContactPreview'](_0x2aced1)[_0x36a8('0x5d')](function(_0x5430c6){if(!_['isNil'](_0x5430c6[0x0])){_0x45c4e6=_0x5430c6[0x0][_0x36a8('0x109')]?![]:!![];_0x598c48=_0x5430c6[0x0][_0x36a8('0x109')]?!![]:![];_0x598c48=_0x7e64f?!![]:_0x598c48;}var _0x10195a=_0x3c814b[_0x36a8('0x10a')](_0x5430c6);if(_0x10195a[_0x36a8('0x10b')]){rpcDb['checkIsBlackList'](_[_0x36a8('0x4c')](_0x5430c6[0x0],['VoiceQueueId','phone']))[_0x36a8('0x5d')](function(_0x5375cc){_0x3c814b[_0x36a8('0xf2')](_0x5375cc,_0x5430c6[0x0],_0x7e64f,_0x45c4e6,_0x598c48)[_0x36a8('0x5d')](function(_0x2cfe4a){return _0x2cfe4a;})[_0x36a8('0x72')](function(_0x1795f0){throw _0x1795f0;});})['catch'](function(_0x11d472){ut[_0x36a8('0x3a')](_0x36a8('0x10c'),_0x11d472);throw ut['message'](_0x36a8('0x10d'),_0x45c4e6,_0x598c48);});}else{throw ut[_0x36a8('0x35')](_0x10195a[_0x36a8('0x35')],_0x45c4e6,_0x598c48);}})[_0x36a8('0x72')](function(_0xc4c00a){ut[_0x36a8('0x3a')](_0x36a8('0x10e'),_0xc4c00a);throw ut[_0x36a8('0x35')](_0x36a8('0x10d'),![],!![]);});};Preview['prototype']['validateContact']=function(_0x21e32c){if(_['isNil'](_0x21e32c)||_[_0x36a8('0xf6')](_0x21e32c)||!_['isNil'](_0x21e32c[0x0]['Agent'])&&_[_0x36a8('0x5e')](_0x21e32c[0x0][_0x36a8('0x61')][_0x36a8('0x30')])){ut[_0x36a8('0x3a')](_0x36a8('0x10f'),_0x21e32c);return{'isValid':![],'message':_0x36a8('0x110')};}var _0x472c60=this[_0x36a8('0x17')][_0x21e32c[0x0][_0x36a8('0xf4')][_0x36a8('0x30')]];_0x472c60[_0x36a8('0x35')]=utils[_0x36a8('0x39')]['ACTIVE'];if(_[_0x36a8('0x5e')](_0x472c60)){ut[_0x36a8('0x3a')](_0x36a8('0x111'),_0x472c60);return{'isValid':![],'message':_0x36a8('0x112')};}if(!this['isTrunkReachable'](_0x472c60[_0x36a8('0x113')])){ut[_0x36a8('0x3a')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]',_0x36a8('0x114')+_0x472c60[_0x36a8('0x30')]+'\x20Trunk\x20is\x20not\x20active');if(!this['isTrunkReachable'](_0x472c60[_0x36a8('0x76')])){ut['logger'](_0x36a8('0x115'),_0x472c60[_0x36a8('0x30')]+_0x36a8('0x116'));return{'isValid':![],'message':_0x36a8('0x117')};}}if(!ut[_0x36a8('0x118')](_0x472c60['dialActive'])){ut[_0x36a8('0x3a')](_0x36a8('0x119'),_0x472c60[_0x36a8('0x30')]+_0x36a8('0x11a'));return{'isValid':![],'message':_0x36a8('0x114')+_0x472c60[_0x36a8('0x30')]+_0x36a8('0x11a')};}return{'isValid':!![],'message':_0x36a8('0x11b')};};Preview[_0x36a8('0x12')][_0x36a8('0x11c')]=function(_0x11acae,_0x27e44b,_0x255ab8,_0x8b414d){var _0x197a45=this;return new Promise(function(_0x4ccec6,_0x119091){var _0x5c9f17=_0x11acae[_0x36a8('0x8e')];var _0x1298ba=_0x197a45[_0x36a8('0x75')](_0x27e44b['Trunk'])?util['format'](_0x36a8('0x11d'),_0x27e44b[_0x36a8('0x113')][_0x36a8('0x30')],_[_0x36a8('0x5e')](_0x27e44b[_0x36a8('0x11e')])?'':_0x27e44b['dialPrefix'][_0x36a8('0x11f')]()||'',_0x27e44b['dialCutDigit']>0x0?_0x255ab8[_0x36a8('0xf3')]['substring'](_0x27e44b[_0x36a8('0x120')]):_0x255ab8['phone']):util[_0x36a8('0x67')](_0x36a8('0x11d'),_[_0x36a8('0x5e')](_0x27e44b[_0x36a8('0x76')])?_0x27e44b[_0x36a8('0x113')][_0x36a8('0x30')]:_0x27e44b[_0x36a8('0x76')][_0x36a8('0x30')],_[_0x36a8('0x5e')](_0x27e44b[_0x36a8('0x11e')])?'':_0x27e44b['dialPrefix'][_0x36a8('0x11f')]()||'',_0x27e44b[_0x36a8('0x120')]>0x0?_0x255ab8[_0x36a8('0xf3')]['substring'](_0x27e44b['dialCutDigit']):_0x255ab8['phone']);var _0xd5a20e=_0x197a45[_0x36a8('0x75')](_0x27e44b[_0x36a8('0x113')])?ut[_0x36a8('0x121')](_0x27e44b[_0x36a8('0x113')][_0x36a8('0x122')],_0x27e44b[_0x36a8('0x123')],_0x27e44b[_0x36a8('0x124')]>0x0?ut['getCallerIdRandom'](_0x27e44b[_0x36a8('0x125')],_0x27e44b[_0x36a8('0x124')]):_0x27e44b[_0x36a8('0x125')]):ut[_0x36a8('0x121')](_['isNil'](_0x27e44b[_0x36a8('0x76')])?_0x27e44b['Trunk'][_0x36a8('0x122')]:_0x27e44b[_0x36a8('0x76')][_0x36a8('0x122')],_0x27e44b[_0x36a8('0x123')],_0x27e44b[_0x36a8('0x124')]>0x0?ut[_0x36a8('0x126')](_0x27e44b[_0x36a8('0x125')],_0x27e44b[_0x36a8('0x124')]):_0x27e44b[_0x36a8('0x125')]);if(_0xd5a20e){_0x11acae[_0x36a8('0x127')]=ut[_0x36a8('0x128')](_0xd5a20e);_0x11acae[_0x36a8('0x129')]=ut[_0x36a8('0x12a')](_0xd5a20e);}var _0x5c4720=ut['addVariables'](_0x27e44b,_0x255ab8,_0x1298ba,_0xd5a20e,_0x5c9f17,_0x11acae);var _0x1e394a=utils['setXMDContactVariables'](_0x255ab8['Contact']);Object[_0x36a8('0x12b')](_0x5c4720,_0x1e394a);_[_0x36a8('0x12c')](_0x11acae,ut[_0x36a8('0x12d')](_0x5c4720));_0x11acae['starttime']=moment()['format'](_0x36a8('0x68'));_0x27e44b[_0x36a8('0x12e')]=_0x5c4720;var _0x182865=ut[_0x36a8('0x12f')](_0x11acae,_0x27e44b,_0x5c4720,_0x11acae['activeContact'],_0x8b414d);return ami[_0x36a8('0x51')](_0x182865)[_0x36a8('0x5d')](function(_0x2e55d8){_0x27e44b[_0x36a8('0x32')]+=0x1;logger[_0x36a8('0x2c')]('[originated][increment]',_0x5c9f17,_0x36a8('0x8f'),_0x27e44b[_0x36a8('0x30')],_0x36a8('0x49'),_0x27e44b[_0x36a8('0x32')]);_0x4ccec6(_0x2e55d8);})[_0x36a8('0x72')](function(_0x26062a){ut[_0x36a8('0xe6')](_0x11acae,0xe,_0x36a8('0x130'));rpcDb['createAgentHistory'](_0x11acae,_0x36a8('0x131'));_0x119091(_0x26062a);});});};Preview[_0x36a8('0x12')]['syncNewExten']=function(_0x49a818){if(this[_0x36a8('0x1a')][_0x49a818['linkedid']]){this[_0x36a8('0x1a')][_0x49a818['linkedid']]['channel']=_0x49a818[_0x36a8('0x132')];}};Preview[_0x36a8('0x12')][_0x36a8('0x1e')]=function(_0x488f1d){var _0x29e458=this;var _0x575814=this[_0x36a8('0x1a')][_0x488f1d[_0x36a8('0x133')]];if(_0x575814){if(_0x575814[_0x36a8('0xf5')]&&this['agents'][_0x575814[_0x36a8('0xf5')]]){ut['logLookAgent'](_0x575814,this['agents'][_0x575814[_0x36a8('0xf5')]][_0x36a8('0x30')],this[_0x36a8('0x1b')][_0x575814[_0x36a8('0xf5')]]['id']);}var _0x30975a=_[_0x36a8('0x134')](_0x575814);_0x30975a[_0x36a8('0x8b')]=moment()['format'](_0x36a8('0x68'));var _0x41f691=_0x29e458[_0x36a8('0x17')][_0x575814['queue']];if(ut[_0x36a8('0x135')](_0x488f1d[_0x36a8('0x136')])){if(_0x575814[_0x36a8('0xae')]){rpcDb['unlockContact'](_0x575814['idContact']);}if(_0x575814[_0x36a8('0xaf')]){rpcDb[_0x36a8('0x108')](_0x575814[_0x36a8('0x88')]);}ami[_0x36a8('0x2b')](_0x36a8('0x137'),ut[_0x36a8('0x95')](_0x575814,'rejected',this[_0x36a8('0x17')][_0x575814[_0x36a8('0x4a')]]));this[_0x36a8('0xe2')](_0x30975a,_0x41f691,_0x488f1d);}else{_0x575814[_0x36a8('0x66')]=moment()[_0x36a8('0x67')](_0x36a8('0x68'));ut['logAgent'](_0x30975a,0x4,_0x36a8('0x138'));rpcDb[_0x36a8('0xe7')](_0x30975a,_0x36a8('0x139'));}}};Preview[_0x36a8('0x12')][_0x36a8('0x1f')]=function(_0x21daae){var _0x51a016=this[_0x36a8('0x1a')][_0x21daae['linkedid']];var _0x56eae9;if(_0x51a016){_0x56eae9=this['campaignsPreview'][_0x51a016[_0x36a8('0x4a')]];logger[_0x36a8('0x2c')](_0x36a8('0x13a'),_0x21daae[_0x36a8('0x85')],'\x20Queue',_0x56eae9[_0x36a8('0x30')],_0x36a8('0x13b'),_0x56eae9[_0x36a8('0x33')]);}if(this['actions'][_0x21daae[_0x36a8('0x85')]]&&_0x21daae[_0x36a8('0x85')]!==_0x21daae['uniqueid']){if(_0x21daae[_0x36a8('0x13c')]==='16'&&this[_0x36a8('0x1a')][_0x21daae[_0x36a8('0x85')]][_0x36a8('0x4b')]){this['callProgressDetectingCustomer'](_0x21daae,_0x21daae[_0x36a8('0x85')],_0x21daae[_0x36a8('0x13c')]);}else if(this['actions'][_0x21daae[_0x36a8('0x85')]][_0x36a8('0x4b')]){logger[_0x36a8('0x2c')](_0x36a8('0x13d'),_0x21daae[_0x36a8('0x85')],_0x21daae[_0x36a8('0x13c')],_0x36a8('0x8f'),_0x56eae9['name'],_0x36a8('0x13b'),_0x56eae9[_0x36a8('0x33')]);this['callProgressDetectingCustomer'](_0x21daae,_0x21daae['linkedid'],_0x21daae[_0x36a8('0x13c')]);}}else if(_0x51a016&&_['isNil'](_0x51a016[_0x36a8('0x13e')])&&_0x56eae9[_0x36a8('0x13f')]&&_0x21daae['linkedid']===_0x21daae[_0x36a8('0x8e')]&&_['isNil'](_0x21daae[_0x36a8('0xe5')])&&_0x21daae[_0x36a8('0x13c')]==='16'&&_0x21daae[_0x36a8('0x140')]==='6'&&_[_0x36a8('0xe3')](_0x51a016[_0x36a8('0x141')])){if(_0x51a016[_0x36a8('0xae')]){rpcDb[_0x36a8('0x107')](_0x51a016[_0x36a8('0x88')]);}if(_0x51a016[_0x36a8('0xaf')]){rpcDb[_0x36a8('0x108')](_0x51a016[_0x36a8('0x88')]);}_0x21daae[_0x36a8('0xe5')]='22';this[_0x36a8('0xe2')](_0x51a016,_0x56eae9,_0x21daae);}else if(_0x51a016&&_0x51a016['transfer']){if(_0x21daae[_0x36a8('0x13c')]==='16'&&this[_0x36a8('0x1a')][_0x21daae[_0x36a8('0x85')]][_0x36a8('0x4b')]){logger['info'](_0x36a8('0x142'),_0x21daae[_0x36a8('0x85')],_0x21daae['cause'],_0x36a8('0x8f'),_0x56eae9['name'],'pTalking:\x20',_0x56eae9[_0x36a8('0x33')]);this['callProgressDetectingCustomer'](_0x21daae,_0x21daae[_0x36a8('0x85')],_0x21daae[_0x36a8('0x13c')]);}else if(this[_0x36a8('0x1a')][_0x21daae[_0x36a8('0x85')]][_0x36a8('0x4b')]){logger[_0x36a8('0x2c')]('[syncHangup][talking][cause]',_0x21daae[_0x36a8('0x85')],_0x21daae[_0x36a8('0x13c')],_0x36a8('0x8f'),_0x56eae9[_0x36a8('0x30')],_0x36a8('0x13b'),_0x56eae9['pTalking']);this['callProgressDetectingCustomer'](_0x21daae,_0x21daae[_0x36a8('0x85')],_0x21daae[_0x36a8('0x13c')]);}}};Preview[_0x36a8('0x12')][_0x36a8('0x24')]=function(_0x30e9c9){if(this[_0x36a8('0x1a')][_0x30e9c9[_0x36a8('0xe0')]]&&_0x30e9c9['destlinkedid']!==_0x30e9c9[_0x36a8('0x143')]){this[_0x36a8('0x78')](_0x30e9c9,_0x30e9c9[_0x36a8('0xe0')],_0x30e9c9[_0x36a8('0xd6')]);}};Preview[_0x36a8('0x12')]['syncHangupRequest']=function(_0x2990a9){if(this[_0x36a8('0x1a')][_0x2990a9['linkedid']]&&_0x2990a9[_0x36a8('0x85')]!==_0x2990a9['uniqueid']&&!this[_0x36a8('0x1a')][_0x2990a9['linkedid']][_0x36a8('0x4b')]){if(_0x2990a9[_0x36a8('0x13c')]==='1'){this[_0x36a8('0x78')](_0x2990a9,_0x2990a9['linkedid'],_0x2990a9['cause']);}}};Preview['prototype'][_0x36a8('0x144')]=function(_0x15206d,_0x9f5685,_0x48d44d){if(this[_0x36a8('0x1a')][_0x15206d]){if(_[_0x36a8('0x5e')](this[_0x36a8('0x1a')][_0x15206d][_0x36a8('0x12e')])){this['actions'][_0x15206d][_0x36a8('0x12e')]={};}this['actions'][_0x15206d]['variables'][_0x9f5685]=_0x48d44d;}};Preview[_0x36a8('0x12')]['syncVarSet']=function(_0x29e2f8){try{if(!_[_0x36a8('0x5e')](_0x29e2f8)){if(ut[_0x36a8('0x145')](_[_0x36a8('0x146')](_0x29e2f8[_0x36a8('0x147')])[0x0])){this[_0x36a8('0x144')](_0x29e2f8[_0x36a8('0x8e')],_[_0x36a8('0x146')](_0x29e2f8[_0x36a8('0x147')])[0x0],_0x29e2f8[_0x36a8('0x148')]);}}}catch(_0x3d6744){logger[_0x36a8('0x149')](_0x36a8('0x14a'),util[_0x36a8('0x14b')](_0x3d6744,{'showHidden':![],'depth':null}));}};Preview[_0x36a8('0x12')][_0x36a8('0x29')]=function(_0x5a3a2b){if(_0x5a3a2b){if(this[_0x36a8('0x1a')][_0x5a3a2b[_0x36a8('0x14c')]]){this[_0x36a8('0x1a')][_0x5a3a2b[_0x36a8('0x14c')]][_0x36a8('0x141')]=!![];}}};Preview[_0x36a8('0x12')]['syncBlindTransfer']=function(_0xd5b6cd){if(_0xd5b6cd){if(this[_0x36a8('0x1a')][_0xd5b6cd[_0x36a8('0x14d')]]){this[_0x36a8('0x1a')][_0xd5b6cd['transfererlinkedid']][_0x36a8('0x141')]=!![];}}};module[_0x36a8('0x14e')]=Preview;
\ No newline at end of file
+var _0xa9e0=['varset','syncVarSet','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','info','format','voice:queue:%s','name','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','originated','pTalking','available','CAMPAIGN_STATUS','INACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','\x20is\x20deactivated','syncCampaigns','hasOwnProperty','dialMethod','booked','type','outbound','dialActive','setMessage','recallMe','clearZombieChannel','sequence','isNil','Queue','queue','originated:\x20','stringify','pick','UserId','VoiceQueueId','ListId','channel','message','No\x20such\x20channel','dialAnswer','decrementTalkink','[clearZombieChannel]','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','clearZombieChannels','size','getContactRecallMe','then','length','getDiff','scheduledat','Agent','voicePause','run','[RecallMe]','catch','logger2','disableContact','starttime','YYYY-MM-DD\x20HH:mm:ss','outboundReCallsDay','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[getContactRecallMe]','IsNotLoggedIn','NO_AGENTS_LOGGED','isActive','isTrunkReachable','UNREACHABLE_TRUNK','callProgressDetectingCustomer','outboundNoSuchCallsDay','countnosuchnumberretry','countglobal','totalGlobal','NoSuchNumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','dialNoSuchNumberRetryFrequency','cloneAction','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','rescheduleContact','scheduledAt','activeContact','linkedid','idContact','incrementPreviewCounters','ANSWER','answertime','[syncHangup][talking][increment]','pTalking:\x20','custom:agentconnect','connect','acw','mandatoryDisposition','custom:agentConnectPreview','channelAgent','uniqueid','custom:agentcomplete','complete','outboundAnswerCallsDay','answered','[16]','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','sumDuration','talktime','sumBillable','[syncHangup][talking][decrement]','\x20Queue','outboundBusyCallsDay','countbusyretry','Busy','dialBusyRetryFrequency','callAdditionalPhoneAfterMin','busy','[callProgressDetectingCustomer][logBusy]','dialGlobalMaxRetry','Global','[callProgressDetectingCustomer][logBusyGlobal]','dialBusyMaxRetry','unlockAgent','NOANSWER','countnoanswerretry','dialNoAnswerRetryFrequency','buildNoAnswerEventPayload','custom:agentnoanswer','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','outboundCongestionCallsDay','countcongestionretry','Congestion','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','[callProgressDetectingCustomer][logCongestion]','swapAdditionalPhones','CANCEL','outboundRejectCallsDay','countagentrejectretry','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedMaxRety','countmachineretry','cause-txt','custom:amd','[callProgressDetectingCustomer][hangupInAMD]','outboundUnknownCallsDay','dialstatus','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknownGlobal]','updateOriginated','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','object','isUndefined','reason','logAgent','[callProgressDetectingAgent][logNoSuch]','NoAnswer','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','[verifyAdditionalPhone]\x20','[swapAdditionalPhone]\x20','resolve','checkInBlack','Contact','phone','Contact\x20is\x20undefined','lookAgent','isEmpty','execCall','[Preview][execCall][success]','custom:agentcalled','called','Calling','[Preview][execCall][failure]','Call\x20failed','logBlacklist','[Blacklist][error]','Contact\x20in\x20black\x20List','active','SIP/%s','status','reachable','unmonitored','execRun','unlock','unlockContact','recallme','validateContact','checkIsBlackList','[Preview][checkIsBlackList]','[Preview][getContactPreview]','Call\x20unsuccessful','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','Trunk','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','TrunkBackup','\x20Trunk\x20Backup\x20is\x20not\x20active','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','dialPrefix','trim','dialCutDigit','substring','getCallerId','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','toLowerVariables','variables','variablesAction','Action','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','actionid','logLookAgent','clone','responsetime','response','rejected','Answer','[callProgressDetectingAgent][logAnswer]','cause','[syncHangup][talking][cause]','dialQueueProject','channelstate','transfer','[syncHangup][talking][transfer]','syncHangupRequest','addVariable','keys','variable','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','uuid','../../../config/environment','preview','../../../config/logger','actionPreview','../ami','./rpcDb','./action','./util/util','../dialer/utils','redis','prototype','enqueue','tail','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','hangup','syncHangup','hanguprequest','syncDialEnd','syncNewExten'];(function(_0x185b1b,_0x2d666b){var _0x3cca82=function(_0x5672ab){while(--_0x5672ab){_0x185b1b['push'](_0x185b1b['shift']());}};_0x3cca82(++_0x2d666b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xa9e0[_0x4709c0];return _0x13348b;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var uuid=require(_0x0a9e('0x2'));var moment=require('moment');var Redis=require('ioredis');var config=require(_0x0a9e('0x3'));var logger=require('../../../config/logger')(_0x0a9e('0x4'));var loggerAction=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var ami=require(_0x0a9e('0x7'));var rpcDb=require(_0x0a9e('0x8'));var cmHopperAdditionalPhone=require('../rpc/cmHopperAdditionalPhone');var Action=require(_0x0a9e('0x9'));var ut=require(_0x0a9e('0xa'));var utils=require(_0x0a9e('0xb'));config['redis']=_['defaults'](config[_0x0a9e('0xc')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0a9e('0xc')]));var Sequence=function(){};Sequence[_0x0a9e('0xd')][_0x0a9e('0xe')]=function(_0x3ab53f){this[_0x0a9e('0xf')]=this[_0x0a9e('0xf')]?this['tail']['finally'](_0x3ab53f):_0x3ab53f();};function Preview(_0x527cdd){this['sequence']=new Sequence();this[_0x0a9e('0x10')]=_0x527cdd[_0x0a9e('0x11')];this[_0x0a9e('0x12')]=_0x527cdd[_0x0a9e('0x12')];this[_0x0a9e('0x13')]={};this[_0x0a9e('0x14')]=_0x527cdd['agents'];this[_0x0a9e('0x15')]=0x0;ami['on'](_0x0a9e('0x16'),this[_0x0a9e('0x17')][_0x0a9e('0x18')](this));ami['on'](_0x0a9e('0x19'),this[_0x0a9e('0x1a')]['bind'](this));ami['on'](_0x0a9e('0x1b'),this['syncHangupRequest'][_0x0a9e('0x18')](this));ami['on']('dialend',this[_0x0a9e('0x1c')][_0x0a9e('0x18')](this));ami['on']('newexten',this[_0x0a9e('0x1d')]['bind'](this));ami['on'](_0x0a9e('0x1e'),this[_0x0a9e('0x1f')][_0x0a9e('0x18')](this));ami['on'](_0x0a9e('0x20'),this[_0x0a9e('0x21')][_0x0a9e('0x18')](this));ami['on'](_0x0a9e('0x22'),this[_0x0a9e('0x23')][_0x0a9e('0x18')](this));this[_0x0a9e('0x24')](this[_0x0a9e('0x10')]);}function emit(_0x105080,_0x4bb1e3,_0x2c3407){io['to'](_0x105080)[_0x0a9e('0x25')](_0x4bb1e3,_0x2c3407);}function emitVoiceQueueChannelRemove(_0x53682f){logger[_0x0a9e('0x26')]('[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event',JSON['stringify'](_0x53682f));emit(util[_0x0a9e('0x27')](_0x0a9e('0x28'),_0x53682f[_0x0a9e('0x29')]),_0x0a9e('0x2a'),_0x53682f);io['emit'](_0x0a9e('0x2b'),_0x53682f);}function notSendMessagesQueue(_0x2fb0e4){if(_0x2fb0e4[_0x0a9e('0x2c')]){if(_0x2fb0e4[_0x0a9e('0x2d')]===0x0&&_0x2fb0e4[_0x0a9e('0x2e')]===0x0){_0x2fb0e4[_0x0a9e('0x2c')]=![];_0x2fb0e4[_0x0a9e('0x2f')]=0x0;_0x2fb0e4['paused']=0x0;_0x2fb0e4['message']=utils[_0x0a9e('0x30')][_0x0a9e('0x31')];ut[_0x0a9e('0x32')](_0x0a9e('0x33'),_0x2fb0e4['name']+_0x0a9e('0x34'));}else{_0x2fb0e4['message']=utils[_0x0a9e('0x30')]['DEACTIVATED'];ut[_0x0a9e('0x32')](_0x0a9e('0x33'),_0x2fb0e4[_0x0a9e('0x29')]+_0x0a9e('0x35'));}}}Preview[_0x0a9e('0xd')][_0x0a9e('0x24')]=function(){var _0x11c3b6=this;setInterval(function(){_0x11c3b6[_0x0a9e('0x36')]();},0x7cf);};Preview['prototype'][_0x0a9e('0x36')]=function(){var _0x468813=this[_0x0a9e('0x10')];this[_0x0a9e('0x15')]+=0x1;for(var _0x5c877d in _0x468813){if(_0x468813[_0x0a9e('0x37')](_0x5c877d)&&(_0x468813[_0x5c877d][_0x0a9e('0x38')]===_0x0a9e('0x4')||_0x468813[_0x5c877d][_0x0a9e('0x38')]===_0x0a9e('0x39'))&&_0x468813[_0x5c877d][_0x0a9e('0x3a')]===_0x0a9e('0x3b')){if(this[_0x0a9e('0x15')]>0x7){this[_0x0a9e('0x15')]=0x0;this['clearZombieChannels']();}}if(_0x468813[_0x0a9e('0x37')](_0x5c877d)&&_0x468813[_0x5c877d]['dialMethod']===_0x0a9e('0x4')&&_0x468813[_0x5c877d][_0x0a9e('0x3a')]===_0x0a9e('0x3b')){if(_0x468813[_0x5c877d][_0x0a9e('0x3c')]){this[_0x0a9e('0x3d')](_0x468813[_0x5c877d]);if(_0x468813[_0x5c877d]['dialPreviewAutoRecallMe'])this[_0x0a9e('0x3e')](_0x468813[_0x5c877d]);}else{notSendMessagesQueue(_0x468813[_0x5c877d]);}}}};Preview[_0x0a9e('0xd')][_0x0a9e('0x3f')]=function(_0x2da5c0){var _0x2b45ea=this;this[_0x0a9e('0x40')][_0x0a9e('0xe')](function(){if(!_[_0x0a9e('0x41')](_0x2b45ea['actions'][_0x2da5c0])){loggerAction[_0x0a9e('0x26')]('[clearZombieChannels][talking]',_0x2da5c0,_0x0a9e('0x42'),_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')],_0x0a9e('0x44'),JSON['stringify'](_0x2b45ea[_0x0a9e('0x10')][_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]][_0x0a9e('0x2d')]),'pTalking:\x20',JSON['stringify'](_0x2b45ea[_0x0a9e('0x10')][_0x2b45ea['actions'][_0x2da5c0][_0x0a9e('0x43')]][_0x0a9e('0x2e')]),JSON[_0x0a9e('0x45')](_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0]['dialAnswer']),JSON[_0x0a9e('0x45')](_[_0x0a9e('0x46')](_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0],['contactId',_0x0a9e('0x47'),_0x0a9e('0x48'),_0x0a9e('0x49')])));return ami['Action']({'action':'status','channel':_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x4a')]})['catch'](function(_0x2b814e){if(_0x2b814e[_0x0a9e('0x4b')]===_0x0a9e('0x4c')){setTimeout(function(){if(_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0]){ut['updateOriginated'](_0x2b45ea['campaignsPreview'][_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]],'[clearZombieChannel]');if(_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x4d')]===!![]){ut[_0x0a9e('0x4e')](_0x2b45ea['campaignsPreview'][_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]],_0x0a9e('0x4f'));ut[_0x0a9e('0x50')](_0x0a9e('0x51')+_0x2da5c0,_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]);}ut[_0x0a9e('0x50')](_0x0a9e('0x52')+_0x2da5c0,_0x2b45ea[_0x0a9e('0x13')][_0x2da5c0][_0x0a9e('0x43')]);delete _0x2b45ea[_0x0a9e('0x13')][_0x2da5c0];}},0x2328);}});}});};Preview[_0x0a9e('0xd')][_0x0a9e('0x53')]=function(){var _0x37f6cc=this;loggerAction['info']('[action]',_[_0x0a9e('0x54')](this[_0x0a9e('0x13')]));for(var _0x405c8f in this[_0x0a9e('0x13')]){if(_0x37f6cc[_0x0a9e('0x13')][_0x0a9e('0x37')](_0x405c8f)){_0x37f6cc[_0x0a9e('0x3f')](_0x405c8f);}}};Preview[_0x0a9e('0xd')][_0x0a9e('0x3e')]=function(_0x25c6e6){var _0x2c2cb0=this;rpcDb[_0x0a9e('0x55')](_0x25c6e6['id'],ut['agentReadyId'](this[_0x0a9e('0x14')]))[_0x0a9e('0x56')](function(_0xdd268f){if(!_[_0x0a9e('0x41')](_0xdd268f)){for(var _0x2e8caf=0x0;_0x2e8caf<_0xdd268f[_0x0a9e('0x57')];_0x2e8caf+=0x1){if(ut[_0x0a9e('0x58')](_0xdd268f[_0x2e8caf][_0x0a9e('0x59')])<_0x25c6e6['dialRecallMeTimeout']*0x3c){if(_0xdd268f[_0x2e8caf][_0x0a9e('0x5a')]&&!_0xdd268f[_0x2e8caf]['Agent'][_0x0a9e('0x5b')]){_0x2c2cb0[_0x0a9e('0x5c')](_0xdd268f[_0x2e8caf]['id'])[_0x0a9e('0x56')](ut['logger2'](_0x0a9e('0x5d')))[_0x0a9e('0x5e')](ut[_0x0a9e('0x5f')](_0x0a9e('0x5d')));}else{rpcDb[_0x0a9e('0x60')](_0xdd268f[_0x2e8caf]['id']);}}else{var _0x37be73=new Action(_0xdd268f[_0x2e8caf],_0x25c6e6);_0x37be73[_0x0a9e('0x61')]=moment()['format'](_0x0a9e('0x62'));_0x25c6e6[_0x0a9e('0x63')]+=0x1;ut[_0x0a9e('0x64')](_0x37be73,0x17,_0x0a9e('0x65'));if(_0x25c6e6[_0x0a9e('0x66')]){rpcDb[_0x0a9e('0x67')](ut[_0x0a9e('0x68')](_0xdd268f[_0x2e8caf]));rpcDb[_0x0a9e('0x69')](_0x37be73,_0x0a9e('0x6a'));}else{ut['logCustomer'](_0x37be73,0x16,_0x0a9e('0x6b'));rpcDb[_0x0a9e('0x69')](_0x37be73,'[HistoryRecallClose]');rpcDb['createCustomerFinal'](_0x37be73,'[HistoryRecallClose]');}}}}})[_0x0a9e('0x5e')](ut[_0x0a9e('0x5f')](_0x0a9e('0x6c')));};Preview[_0x0a9e('0xd')][_0x0a9e('0x3d')]=function(_0x30decb){_0x30decb[_0x0a9e('0x2c')]=!![];if(ut[_0x0a9e('0x6d')](_0x30decb['loggedIn'])){_0x30decb['message']=utils['CAMPAIGN_STATUS'][_0x0a9e('0x6e')];}else if(!ut[_0x0a9e('0x6f')](_0x30decb[_0x0a9e('0x3c')])){_0x30decb['message']=utils[_0x0a9e('0x30')][_0x0a9e('0x31')];}else if(!this['isTrunkReachable'](_0x30decb['Trunk'])){if(!this[_0x0a9e('0x70')](_0x30decb['TrunkBackup'])){_0x30decb[_0x0a9e('0x4b')]=utils['CAMPAIGN_STATUS'][_0x0a9e('0x71')];}else{_0x30decb[_0x0a9e('0x4b')]=utils[_0x0a9e('0x30')]['ACTIVE'];}}else{_0x30decb[_0x0a9e('0x4b')]=utils[_0x0a9e('0x30')]['ACTIVE'];}};Preview['prototype'][_0x0a9e('0x72')]=function(_0x3aedd0,_0x49c095,_0x145931){var _0x5ce9ac=this;var _0x211ef9=this['actions'][_0x49c095];var _0xe22ccc=this['campaignsPreview'][_0x211ef9['queue']];var _0x5df0ad;var _0x2da03c=![];var _0x47de4c=0x2;var _0x2f7092=0x3;if(_0xe22ccc){switch(_0x145931){case'1':_0xe22ccc[_0x0a9e('0x73')]+=0x1;_0x211ef9[_0x0a9e('0x74')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0x0,_0x0a9e('0x77'));ami[_0x0a9e('0x25')]('custom:agentnosuchnumber',ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0x79')));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0x7a'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'0',_0xe22ccc)[_0x0a9e('0x56')](function(_0x5d86e9){_0x2da03c=_0x5d86e9[_0x0a9e('0x7c')]==0x1;_0x47de4c=_0xe22ccc[_0x0a9e('0x7d')];_0x2f7092=_0xe22ccc['callAdditionalPhoneAfterMin'];if(!_0x2da03c){if(ut[_0x0a9e('0x76')](_0x211ef9)>=_0xe22ccc['dialGlobalMaxRetry']){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,'Global');rpcDb['createCustomerFinal'](_0x5df0ad,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0x211ef9[_0x0a9e('0x74')]>=_0xe22ccc['dialNoSuchNumberMaxRetry']){rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0x80'));}else{rpcDb[_0x0a9e('0x81')](ut[_0x0a9e('0x82')](_0x211ef9,_0x0a9e('0x74'),_0xe22ccc[_0x0a9e('0x7d')]),_0x211ef9['unlockAgent'],_0x211ef9[_0x0a9e('0x83')]);}}delete this['actions'][_0x3aedd0[_0x0a9e('0x84')]];}else{_0x211ef9[_0x0a9e('0x74')]++;logger[_0x0a9e('0x26')]('actioncountonusuch',_0x211ef9[_0x0a9e('0x74')]);logger[_0x0a9e('0x26')]('id',_0x211ef9[_0x0a9e('0x85')]);_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9['idContact'],'field':{'countnosuchnumberretry':_0x211ef9[_0x0a9e('0x74')]}})[_0x0a9e('0x56')](function(){_0x5ce9ac['swapAdditionalPhones'](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});break;case _0x0a9e('0x87'):var _0x88dcbf=moment()[_0x0a9e('0x27')](_0x0a9e('0x62'));_0x211ef9['responsetime']=_0x88dcbf;_0x211ef9[_0x0a9e('0x88')]=_0x88dcbf;_0x211ef9[_0x0a9e('0x4d')]=!![];_0xe22ccc[_0x0a9e('0x2e')]+=0x1;logger['info'](_0x0a9e('0x89'),_0x211ef9['uniqueid'],'\x20Queue',_0xe22ccc[_0x0a9e('0x29')],_0x0a9e('0x8a'),_0xe22ccc[_0x0a9e('0x2e')]);ami[_0x0a9e('0x25')](_0x0a9e('0x8b'),ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0x8c'),this[_0x0a9e('0x10')][_0x211ef9[_0x0a9e('0x43')]]));if(_0xe22ccc[_0x0a9e('0x8d')]||_0xe22ccc[_0x0a9e('0x8e')]){ami[_0x0a9e('0x25')](_0x0a9e('0x8f'),{'queue':_0x211ef9[_0x0a9e('0x43')],'interface':_0x211ef9[_0x0a9e('0x90')],'uniqueid':_0x211ef9[_0x0a9e('0x91')]});}break;case'16':ami[_0x0a9e('0x25')](_0x0a9e('0x92'),ut['buildObj'](_0x211ef9,_0x0a9e('0x93'),this[_0x0a9e('0x10')][_0x211ef9[_0x0a9e('0x43')]]));emitVoiceQueueChannelRemove(ut['buildObj'](_0x211ef9,_0x0a9e('0x93')));_0xe22ccc[_0x0a9e('0x94')]+=0x1;_0xe22ccc['total']+=0x1;_0xe22ccc[_0x0a9e('0x95')]+=0x1;ut[_0x0a9e('0x4e')](_0xe22ccc,_0x0a9e('0x96'));_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut['logCustomer'](_0x211ef9,0x4,'Answer');rpcDb['createCustomerHistory'](_0x211ef9,_0x0a9e('0x97'));rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0x98'));rpcDb[_0x0a9e('0x99')](_0x211ef9);_0xe22ccc[_0x0a9e('0x9a')]+=_0x211ef9[_0x0a9e('0x9b')];_0xe22ccc[_0x0a9e('0x9c')]+=_0x211ef9[_0x0a9e('0x9b')];logger['info'](_0x0a9e('0x9d'),_0x211ef9[_0x0a9e('0x91')],_0x0a9e('0x9e'),_0xe22ccc['name'],_0x0a9e('0x8a'),_0xe22ccc['pTalking']);delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0x84')]];break;case'BUSY':_0xe22ccc[_0x0a9e('0x9f')]+=0x1;_0x211ef9[_0x0a9e('0xa0')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut['logCustomer'](_0x211ef9,0x5,_0x0a9e('0xa1'));_0x47de4c=_0xe22ccc[_0x0a9e('0xa2')];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];ami[_0x0a9e('0x25')]('custom:agentbusy',ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0xa4')));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0xa5'));_0x5ce9ac['verifyAdditionalPhones'](_0x211ef9,'5',_0xe22ccc)[_0x0a9e('0x56')](function(_0x3511c9){_0x2da03c=_0x3511c9[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut[_0x0a9e('0x76')](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,_0x0a9e('0xa8'));}else{if(_0x211ef9[_0x0a9e('0xa0')]>=_0xe22ccc[_0x0a9e('0xa9')]){rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0xa5'));}else{rpcDb[_0x0a9e('0x81')](ut['scheduledAt'](_0x211ef9,_0x0a9e('0xa0'),_0xe22ccc[_0x0a9e('0xa2')]),_0x211ef9[_0x0a9e('0xaa')],_0x211ef9['activeContact']);}}}else{_0x211ef9[_0x0a9e('0xa0')]++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countbusyretry':_0x211ef9[_0x0a9e('0xa0')]}})['then'](function(){_0x5ce9ac['swapAdditionalPhones'](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});break;case _0x0a9e('0xab'):_0xe22ccc['outboundNoAnswerCallsDay']+=0x1;_0x211ef9[_0x0a9e('0xac')]+=0x1;_0x211ef9['countglobal']=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0x3,'NoAnswer');_0x47de4c=_0xe22ccc[_0x0a9e('0xad')];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];var _0x2d2286=ut[_0x0a9e('0xae')](_0x211ef9,_0xe22ccc);ami[_0x0a9e('0x25')](_0x0a9e('0xaf'),_0x2d2286);rpcDb[_0x0a9e('0x69')](_0x211ef9,'[callProgressDetectingCustomer][logNoAnswer]');_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'3',_0xe22ccc)[_0x0a9e('0x56')](function(_0x45c109){_0x2da03c=_0x45c109[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,'Global');rpcDb[_0x0a9e('0x7f')](_0x5df0ad,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x211ef9[_0x0a9e('0xac')]>=_0xe22ccc[_0x0a9e('0xb0')]){rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0xb1'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x211ef9,_0x0a9e('0xac'),_0xe22ccc[_0x0a9e('0xad')]),_0x211ef9[_0x0a9e('0xaa')],_0x211ef9['activeContact']);}}}else{_0x211ef9[_0x0a9e('0xac')]++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9['idContact'],'field':{'countnoanswerretry':_0x211ef9['countnoanswerretry']}})[_0x0a9e('0x56')](function(){_0x5ce9ac['swapAdditionalPhones'](_0x211ef9,_0x47de4c,_0x2f7092)['then'](function(){});});}});break;case'CONGESTION':_0xe22ccc[_0x0a9e('0xb2')]+=0x1;_0x211ef9[_0x0a9e('0xb3')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0x8,_0x0a9e('0xb4'));_0x47de4c=_0xe22ccc['dialCongestionRetryFrequency'];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];ami['emit'](_0x0a9e('0xb5'),ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0xb6')));rpcDb[_0x0a9e('0x69')](_0x211ef9,'[callProgressDetectingCustomer][logCongestion]');_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'8',_0xe22ccc)[_0x0a9e('0x56')](function(_0x1d4877){_0x2da03c=_0x1d4877['additional']==0x1;if(!_0x2da03c){if(ut[_0x0a9e('0x76')](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,_0x0a9e('0xb7'));}else{if(_0x211ef9[_0x0a9e('0xb3')]>=_0xe22ccc[_0x0a9e('0xb8')]){rpcDb['createCustomerFinal'](_0x211ef9,_0x0a9e('0xb9'));}else{rpcDb[_0x0a9e('0x81')](ut['scheduledAt'](_0x211ef9,_0x0a9e('0xb3'),_0xe22ccc[_0x0a9e('0xa2')]),_0x211ef9[_0x0a9e('0xaa')],_0x211ef9['activeContact']);}}}else{_0x211ef9[_0x0a9e('0xb3')]++;_0x5ce9ac['incrementPreviewCounters']({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countcongestionretry':_0x211ef9[_0x0a9e('0xb3')]}})[_0x0a9e('0x56')](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});break;case _0x0a9e('0xbb'):_0xe22ccc[_0x0a9e('0xbc')]+=0x1;_0x211ef9[_0x0a9e('0xbd')]+=0x1;_0x211ef9['countglobal']=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0x14,_0x0a9e('0xbe'));_0x47de4c=_0xe22ccc[_0x0a9e('0xbf')];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];ami[_0x0a9e('0x25')](_0x0a9e('0xc0'),ut[_0x0a9e('0x78')](_0x211ef9,_0x0a9e('0xc1')));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0xc2'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'20',_0xe22ccc)[_0x0a9e('0x56')](function(_0x4989f9){_0x2da03c=_0x4989f9[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut[_0x0a9e('0x76')](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0x14,_0x0a9e('0xbe'));rpcDb['createCustomerFinal'](_0x5df0ad,_0x0a9e('0xc3'));}else{if(_0x211ef9[_0x0a9e('0xbd')]>=_0xe22ccc['dialAgentRejectMaxRetry']){rpcDb[_0x0a9e('0x7f')](_0x211ef9,'[callProgressDetectingCustomer][logAgentReject]');}else{rpcDb[_0x0a9e('0x81')](ut[_0x0a9e('0x82')](_0x211ef9,_0x0a9e('0xbd'),_0xe22ccc[_0x0a9e('0xbf')]),_0x211ef9['unlockAgent'],_0x211ef9[_0x0a9e('0x83')]);}}}else{_0x211ef9['countnoanswerretry']++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countnoanswerretry':_0x211ef9['countnoanswerretry']}})[_0x0a9e('0x56')](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});break;case'ABANDONED':_0xe22ccc['outboundAbandonedCallsDay']+=0x1;_0x211ef9[_0x0a9e('0xc4')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0xb,_0x0a9e('0xc5'));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0xc6'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'11',_0xe22ccc)[_0x0a9e('0x56')](function(_0x586510){_0x2da03c=_0x586510[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,_0x0a9e('0xc6'));}else{if(_0x211ef9['countabandonedetry']>=_0xe22ccc[_0x0a9e('0xc7')]){rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0xc6'));}else{rpcDb[_0x0a9e('0x81')](ut[_0x0a9e('0x82')](_0x211ef9,'countabandonedretry',_0xe22ccc['dialAbandonedRetryFrequency']),_0x211ef9[_0x0a9e('0xaa')],_0x211ef9['activeContact']);}}}else{_0x211ef9[_0x0a9e('0xac')]++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countnoanswerretry':_0x211ef9[_0x0a9e('0xac')]}})[_0x0a9e('0x56')](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)['then'](function(){});});}});break;case'18':_0xe22ccc['outboundUnknownCallsDay']+=0x1;_0x211ef9[_0x0a9e('0xc8')]+=0x1;_0x211ef9['countglobal']=ut[_0x0a9e('0x76')](_0x211ef9);ut['logCustomer'](_0x211ef9,0x12,_0x3aedd0[_0x0a9e('0xc9')]||_0x3aedd0['dialstatus']);ami['emit'](_0x0a9e('0xca'),ut[_0x0a9e('0x78')](_0x211ef9,'amd'));rpcDb[_0x0a9e('0x69')](_0x211ef9,_0x0a9e('0xcb'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'18',_0xe22ccc)[_0x0a9e('0x56')](function(_0x2eb028){_0x2da03c=_0x2eb028['additional']==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0x12,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,_0x0a9e('0xcb'));}else{rpcDb['createCustomerFinal'](_0x211ef9,_0x0a9e('0xcb'));}}else{_0x211ef9[_0x0a9e('0xac')]++;_0x5ce9ac['incrementPreviewCounters']({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countnoanswerretry':_0x211ef9[_0x0a9e('0xac')]}})[_0x0a9e('0x56')](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});});}});delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0x84')]];break;case'19':_0xe22ccc[_0x0a9e('0xcc')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut['logCustomer'](_0x211ef9,0x13,_0x3aedd0[_0x0a9e('0xc9')]||_0x3aedd0[_0x0a9e('0xcd')]);ami[_0x0a9e('0x25')](_0x0a9e('0xca'),ut[_0x0a9e('0x78')](_0x211ef9,'amd'));rpcDb['createCustomerHistory'](_0x211ef9,_0x0a9e('0xce'));_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'18',_0xe22ccc)[_0x0a9e('0x56')](function(_0x2fea95){_0x2da03c=_0x2fea95[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb['createCustomerFinal'](_0x5df0ad,_0x0a9e('0xce'));}else{rpcDb['createCustomerFinal'](_0x211ef9,_0x0a9e('0xce'));}}else{_0x211ef9['countnoanswerretry']++;_0x5ce9ac[_0x0a9e('0x86')]({'id':_0x211ef9[_0x0a9e('0x85')],'field':{'countnoanswerretry':_0x211ef9[_0x0a9e('0xac')]}})['then'](function(){_0x5ce9ac[_0x0a9e('0xba')](_0x211ef9,_0x47de4c,_0x2f7092)['then'](function(){});});}});delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0x84')]];break;default:if(_0x211ef9[_0x0a9e('0x4d')]){ut[_0x0a9e('0x4e')](_0xe22ccc,_0x0a9e('0xcf'));ut[_0x0a9e('0x50')](_0x0a9e('0xd0')+_0xe22ccc[_0x0a9e('0x29')],_0x3aedd0);}_0xe22ccc[_0x0a9e('0xcc')]+=0x1;_0x211ef9[_0x0a9e('0x75')]=ut[_0x0a9e('0x76')](_0x211ef9);ut[_0x0a9e('0x64')](_0x211ef9,0xc,_0x3aedd0[_0x0a9e('0xc9')]||_0x3aedd0[_0x0a9e('0xcd')]);_0x47de4c=_0xe22ccc[_0x0a9e('0xbf')];_0x2f7092=_0xe22ccc[_0x0a9e('0xa3')];rpcDb['createCustomerHistory'](_0x211ef9,'[callProgressDetectingCustomer][logUnknown]');_0x5ce9ac[_0x0a9e('0x7b')](_0x211ef9,'20',_0xe22ccc)['then'](function(_0x1d999b){_0x2da03c=_0x1d999b[_0x0a9e('0x7c')]==0x1;if(!_0x2da03c){if(ut['totalGlobal'](_0x211ef9)>=_0xe22ccc[_0x0a9e('0xa6')]){_0x5df0ad=ut[_0x0a9e('0x7e')](_0x211ef9,0xf,_0x0a9e('0xa7'));rpcDb[_0x0a9e('0x7f')](_0x5df0ad,'[callProgressDetectingCustomer][logUnknownGlobal]');}else{rpcDb[_0x0a9e('0x7f')](_0x211ef9,_0x0a9e('0xd1'));}delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0x84')]];}else{_0x5ce9ac['swapAdditionalPhones'](_0x211ef9,_0x47de4c,_0x2f7092)[_0x0a9e('0x56')](function(){});}});}if(!(_0x211ef9[_0x0a9e('0x4d')]&&_0x145931==='16')){ut[_0x0a9e('0xd2')](_0xe22ccc,'[callProgressDetectingCustomer]');logger[_0x0a9e('0x26')](_0x0a9e('0xd3'),_0x211ef9[_0x0a9e('0x91')],'\x20Queue',_0xe22ccc[_0x0a9e('0x29')],_0x0a9e('0x44'),_0xe22ccc[_0x0a9e('0x2d')]);}if(_0x145931!==_0x0a9e('0x87')){delete this[_0x0a9e('0x13')][_0x3aedd0['linkedid']];delete this[_0x0a9e('0x13')][_0x3aedd0[_0x0a9e('0xd4')]];}_0xe22ccc['queueSummaryCountersUpdated']=!![];}};Preview[_0x0a9e('0xd')][_0x0a9e('0xd5')]=function(_0x1f6f1c,_0x5822a7,_0x5c3b6f){if(_['isUndefined'](_0x5822a7)&&_0x0a9e('0xd6')!==typeof _0x5822a7){return;}if(_[_0x0a9e('0xd7')](_0x5c3b6f)&&'object'!==typeof _0x5c3b6f){return;}switch(_0x5c3b6f[_0x0a9e('0xd8')]){case'0':ut[_0x0a9e('0xd9')](_0x1f6f1c,0x0,_0x0a9e('0x77'));rpcDb['createAgentHistory'](_0x1f6f1c,_0x0a9e('0xda'));break;case'3':ut[_0x0a9e('0xd9')](_0x1f6f1c,0x3,_0x0a9e('0xdb'));rpcDb[_0x0a9e('0xdc')](_0x1f6f1c,_0x0a9e('0xdd'));break;case'5':ut[_0x0a9e('0xd9')](_0x1f6f1c,0x5,_0x0a9e('0xa1'));rpcDb[_0x0a9e('0xdc')](_0x1f6f1c,_0x0a9e('0xde'));break;case'8':ut['logAgent'](_0x1f6f1c,0x8,_0x0a9e('0xb4'));rpcDb['createAgentHistory'](_0x1f6f1c,_0x0a9e('0xdf'));break;case'22':ut[_0x0a9e('0xd9')](_0x1f6f1c,0x16,_0x0a9e('0xe0'));rpcDb[_0x0a9e('0xdc')](_0x1f6f1c,_0x0a9e('0xe1'));break;default:ut[_0x0a9e('0xd9')](_0x1f6f1c,0xc,_0x5c3b6f['reason']);rpcDb[_0x0a9e('0xdc')](_0x1f6f1c,_0x0a9e('0xdf'));}ut[_0x0a9e('0xd2')](_0x5822a7,_0x0a9e('0xe2'));logger['info'](_0x0a9e('0xe3'),_0x1f6f1c[_0x0a9e('0x91')],_0x0a9e('0x9e'),_0x5822a7[_0x0a9e('0x29')],_0x0a9e('0x44'),_0x5822a7[_0x0a9e('0x2d')]);delete this[_0x0a9e('0x13')][_0x1f6f1c[_0x0a9e('0x91')]];};Preview[_0x0a9e('0xd')][_0x0a9e('0x7b')]=function(_0x57f0ad,_0x2272bc,_0x88b25f){return cmHopperAdditionalPhone[_0x0a9e('0x7b')](_0x57f0ad,_0x2272bc,_0x88b25f)[_0x0a9e('0x5e')](logger[_0x0a9e('0x26')](_0x0a9e('0xe4')));};Preview[_0x0a9e('0xd')][_0x0a9e('0xba')]=function(_0x566b90,_0x3b581c,_0xd2391){return cmHopperAdditionalPhone[_0x0a9e('0xba')](_0x566b90,_0x3b581c,_0xd2391)['catch'](logger[_0x0a9e('0x26')](_0x0a9e('0xe5')));};Preview[_0x0a9e('0xd')][_0x0a9e('0x86')]=function(_0x370b5e){return Promise[_0x0a9e('0xe6')]()[_0x0a9e('0x56')](cmHopperAdditionalPhone[_0x0a9e('0x86')](_0x370b5e))[_0x0a9e('0x5e')](logger[_0x0a9e('0x26')]('[incrementPreviewCounters]\x20'));};Preview[_0x0a9e('0xd')][_0x0a9e('0xe7')]=function(_0x15a9ed,_0x3db98f,_0x2b624e,_0x3942fd,_0x5cb48d){var _0x382687=this;return new Promise(function(_0x4f854b,_0x5bd139){if(_['isNil'](_0x3db98f)||_[_0x0a9e('0x41')](_0x3db98f[_0x0a9e('0xe8')])||_[_0x0a9e('0x41')](_0x3db98f[_0x0a9e('0xe9')])||_['isNil'](_0x3db98f[_0x0a9e('0x48')])){_0x5bd139(ut[_0x0a9e('0x4b')](_0x0a9e('0xea'),_0x3942fd,_0x5cb48d));return;}var _0x1fdb10=uuid['v4']();var _0x2c8d1d=_0x382687['campaignsPreview'][_0x3db98f['Queue'][_0x0a9e('0x29')]];var _0x33bcb2=_0x2b624e?_0x382687[_0x0a9e('0x14')][_0x2b624e]['id']:undefined;_0x382687['actions'][_0x1fdb10]=new Action(_0x3db98f,_0x2c8d1d,_0x1fdb10,_0x2b624e,_0x33bcb2);var _0x319752=_0x382687[_0x0a9e('0x13')][_0x1fdb10];_0x319752[_0x0a9e('0xaa')]=_0x3942fd;_0x319752['activeContact']=_0x5cb48d;_0x319752[_0x0a9e('0xeb')]=_0x2b624e;if(_[_0x0a9e('0xec')](_0x15a9ed)){_0x382687[_0x0a9e('0xed')](_0x319752,_0x2c8d1d,_0x3db98f,_0x2b624e)['then'](function(_0x272291){logger[_0x0a9e('0x26')](_0x0a9e('0xee'),'Queue:\x20'+_0x319752['queue']+'\x20IdHopper:\x20'+_0x319752[_0x0a9e('0x85')],JSON[_0x0a9e('0x45')](_0x272291));ami[_0x0a9e('0x25')](_0x0a9e('0xef'),ut['buildObj'](_0x319752,_0x0a9e('0xf0'),_0x382687['campaignsPreview'][_0x319752[_0x0a9e('0x43')]]));_0x4f854b(ut[_0x0a9e('0x4b')](_0x0a9e('0xf1')));})['catch'](function(_0x33b4b3){ut[_0x0a9e('0x32')](_0x0a9e('0xf2'),_0x33b4b3);_0x5bd139(ut['message'](_0x0a9e('0xf3'),_0x3942fd,_0x5cb48d));});}else{_0x2c8d1d['outboundBlacklistCallsDay']+=0x1;ut[_0x0a9e('0xf4')](_0x319752);rpcDb['createHistory'](_0x319752,_0x0a9e('0xf5'));delete _0x382687['actions'][_0x1fdb10];_0x5bd139(ut[_0x0a9e('0x4b')](_0x0a9e('0xf6'),_0x3942fd,_0x5cb48d));}});};Preview[_0x0a9e('0xd')][_0x0a9e('0x70')]=function(_0x1e306c){return!_[_0x0a9e('0x41')](_0x1e306c)&&!_[_0x0a9e('0x41')](_0x1e306c['name'])&&!_[_0x0a9e('0x41')](_0x1e306c[_0x0a9e('0xf7')])&&_0x1e306c['active']&&!_[_0x0a9e('0x41')](this[_0x0a9e('0x12')][util['format'](_0x0a9e('0xf8'),_0x1e306c[_0x0a9e('0x29')])])&&!_[_0x0a9e('0x41')](this['trunks'][util[_0x0a9e('0x27')](_0x0a9e('0xf8'),_0x1e306c[_0x0a9e('0x29')])][_0x0a9e('0xf9')])&&(this[_0x0a9e('0x12')][util[_0x0a9e('0x27')](_0x0a9e('0xf8'),_0x1e306c[_0x0a9e('0x29')])][_0x0a9e('0xf9')]===_0x0a9e('0xfa')||this['trunks'][util[_0x0a9e('0x27')]('SIP/%s',_0x1e306c[_0x0a9e('0x29')])][_0x0a9e('0xf9')]===_0x0a9e('0xfb'));};Preview[_0x0a9e('0xd')][_0x0a9e('0x5c')]=function(_0x2d45db,_0x5691ac){return this[_0x0a9e('0xfc')](_0x2d45db,_0x5691ac)[_0x0a9e('0x56')](function(_0x2977a7){return _['pick'](_0x2977a7,[_0x0a9e('0x4b')]);})[_0x0a9e('0x5e')](function(_0x4435d2){if(_0x4435d2[_0x0a9e('0xfd')]){rpcDb[_0x0a9e('0xfe')](_0x2d45db);}if(_0x4435d2[_0x0a9e('0xf7')]){rpcDb[_0x0a9e('0x60')](_0x2d45db);}throw _['pick'](_0x4435d2,[_0x0a9e('0x4b')]);});};Preview[_0x0a9e('0xd')][_0x0a9e('0xfc')]=function(_0x2ce3be,_0x3de77e){var _0x241404=this;var _0x8120e,_0x5d6a48;return rpcDb['getContactPreview'](_0x2ce3be)[_0x0a9e('0x56')](function(_0x3f507c){if(!_[_0x0a9e('0x41')](_0x3f507c[0x0])){_0x5d6a48=_0x3f507c[0x0][_0x0a9e('0xff')]?![]:!![];_0x8120e=_0x3f507c[0x0][_0x0a9e('0xff')]?!![]:![];_0x8120e=_0x3de77e?!![]:_0x8120e;}var _0x131da8=_0x241404[_0x0a9e('0x100')](_0x3f507c);if(_0x131da8['isValid']){rpcDb[_0x0a9e('0x101')](_[_0x0a9e('0x46')](_0x3f507c[0x0],[_0x0a9e('0x48'),_0x0a9e('0xe9')]))[_0x0a9e('0x56')](function(_0x3c6082){_0x241404[_0x0a9e('0xe7')](_0x3c6082,_0x3f507c[0x0],_0x3de77e,_0x5d6a48,_0x8120e)['then'](function(_0x311288){return _0x311288;})[_0x0a9e('0x5e')](function(_0x231826){throw _0x231826;});})['catch'](function(_0x2b8ad4){ut[_0x0a9e('0x32')](_0x0a9e('0x102'),_0x2b8ad4);throw ut[_0x0a9e('0x4b')]('Call\x20unsuccessful',_0x5d6a48,_0x8120e);});}else{throw ut[_0x0a9e('0x4b')](_0x131da8[_0x0a9e('0x4b')],_0x5d6a48,_0x8120e);}})[_0x0a9e('0x5e')](function(_0x93d953){ut[_0x0a9e('0x32')](_0x0a9e('0x103'),_0x93d953);throw ut[_0x0a9e('0x4b')](_0x0a9e('0x104'),![],!![]);});};Preview['prototype'][_0x0a9e('0x100')]=function(_0x266aa1){if(_[_0x0a9e('0x41')](_0x266aa1)||_[_0x0a9e('0xec')](_0x266aa1)||!_['isNil'](_0x266aa1[0x0]['Agent'])&&_[_0x0a9e('0x41')](_0x266aa1[0x0][_0x0a9e('0x5a')][_0x0a9e('0x29')])){ut['logger'](_0x0a9e('0x105'),_0x266aa1);return{'isValid':![],'message':_0x0a9e('0x106')};}var _0x4d8a67=this[_0x0a9e('0x10')][_0x266aa1[0x0]['Queue'][_0x0a9e('0x29')]];_0x4d8a67['message']=utils['CAMPAIGN_STATUS']['ACTIVE'];if(_[_0x0a9e('0x41')](_0x4d8a67)){ut[_0x0a9e('0x32')](_0x0a9e('0x107'),_0x4d8a67);return{'isValid':![],'message':_0x0a9e('0x108')};}if(!this[_0x0a9e('0x70')](_0x4d8a67[_0x0a9e('0x109')])){ut['logger'](_0x0a9e('0x10a'),_0x0a9e('0x10b')+_0x4d8a67[_0x0a9e('0x29')]+_0x0a9e('0x10c'));if(!this[_0x0a9e('0x70')](_0x4d8a67[_0x0a9e('0x10d')])){ut[_0x0a9e('0x32')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]',_0x4d8a67['name']+_0x0a9e('0x10e'));return{'isValid':![],'message':'Trunk\x20not\x20working\x20correctly'};}}if(!ut[_0x0a9e('0x6f')](_0x4d8a67[_0x0a9e('0x3c')])){ut[_0x0a9e('0x32')](_0x0a9e('0x10f'),_0x4d8a67[_0x0a9e('0x29')]+_0x0a9e('0x110'));return{'isValid':![],'message':'campaign\x20Name:\x20'+_0x4d8a67[_0x0a9e('0x29')]+'\x20Not\x20Active'};}return{'isValid':!![],'message':'Is\x20Valid'};};Preview[_0x0a9e('0xd')]['execCall']=function(_0x38dceb,_0x5dc978,_0x550cbf,_0x26223f){var _0x4a7a3c=this;return new Promise(function(_0x24470a,_0x142e53){var _0xe1ab0d=_0x38dceb['uniqueid'];var _0x4152cd=_0x4a7a3c[_0x0a9e('0x70')](_0x5dc978[_0x0a9e('0x109')])?util['format']('SIP/%s/%s%s',_0x5dc978[_0x0a9e('0x109')][_0x0a9e('0x29')],_[_0x0a9e('0x41')](_0x5dc978[_0x0a9e('0x111')])?'':_0x5dc978[_0x0a9e('0x111')][_0x0a9e('0x112')]()||'',_0x5dc978[_0x0a9e('0x113')]>0x0?_0x550cbf[_0x0a9e('0xe9')][_0x0a9e('0x114')](_0x5dc978[_0x0a9e('0x113')]):_0x550cbf['phone']):util['format']('SIP/%s/%s%s',_[_0x0a9e('0x41')](_0x5dc978[_0x0a9e('0x10d')])?_0x5dc978[_0x0a9e('0x109')][_0x0a9e('0x29')]:_0x5dc978[_0x0a9e('0x10d')][_0x0a9e('0x29')],_[_0x0a9e('0x41')](_0x5dc978[_0x0a9e('0x111')])?'':_0x5dc978['dialPrefix']['trim']()||'',_0x5dc978[_0x0a9e('0x113')]>0x0?_0x550cbf[_0x0a9e('0xe9')]['substring'](_0x5dc978[_0x0a9e('0x113')]):_0x550cbf[_0x0a9e('0xe9')]);var _0x2e2280=_0x4a7a3c[_0x0a9e('0x70')](_0x5dc978[_0x0a9e('0x109')])?ut[_0x0a9e('0x115')](_0x5dc978[_0x0a9e('0x109')][_0x0a9e('0x116')],_0x5dc978[_0x0a9e('0x117')],_0x5dc978[_0x0a9e('0x118')]>0x0?ut[_0x0a9e('0x119')](_0x5dc978[_0x0a9e('0x11a')],_0x5dc978['dialRandomLastDigitCallerIdNumber']):_0x5dc978[_0x0a9e('0x11a')]):ut[_0x0a9e('0x115')](_[_0x0a9e('0x41')](_0x5dc978[_0x0a9e('0x10d')])?_0x5dc978[_0x0a9e('0x109')][_0x0a9e('0x116')]:_0x5dc978[_0x0a9e('0x10d')][_0x0a9e('0x116')],_0x5dc978[_0x0a9e('0x117')],_0x5dc978[_0x0a9e('0x118')]>0x0?ut[_0x0a9e('0x119')](_0x5dc978[_0x0a9e('0x11a')],_0x5dc978['dialRandomLastDigitCallerIdNumber']):_0x5dc978['dialOriginateCallerIdNumber']);if(_0x2e2280){_0x38dceb[_0x0a9e('0x11b')]=ut[_0x0a9e('0x11c')](_0x2e2280);_0x38dceb[_0x0a9e('0x11d')]=ut[_0x0a9e('0x11e')](_0x2e2280);}var _0x33359a=ut[_0x0a9e('0x11f')](_0x5dc978,_0x550cbf,_0x4152cd,_0x2e2280,_0xe1ab0d,_0x38dceb);var _0xa8b5de=utils['setXMDContactVariables'](_0x550cbf[_0x0a9e('0xe8')]);Object['assign'](_0x33359a,_0xa8b5de);_[_0x0a9e('0x120')](_0x38dceb,ut[_0x0a9e('0x121')](_0x33359a));_0x38dceb[_0x0a9e('0x61')]=moment()[_0x0a9e('0x27')](_0x0a9e('0x62'));_0x5dc978[_0x0a9e('0x122')]=_0x33359a;var _0x465003=ut[_0x0a9e('0x123')](_0x38dceb,_0x5dc978,_0x33359a,_0x38dceb[_0x0a9e('0x83')],_0x26223f);return ami[_0x0a9e('0x124')](_0x465003)[_0x0a9e('0x56')](function(_0x8231e5){_0x5dc978[_0x0a9e('0x2d')]+=0x1;logger[_0x0a9e('0x26')](_0x0a9e('0x125'),_0xe1ab0d,_0x0a9e('0x9e'),_0x5dc978['name'],'originated:\x20',_0x5dc978[_0x0a9e('0x2d')]);_0x24470a(_0x8231e5);})[_0x0a9e('0x5e')](function(_0x52b365){ut['logAgent'](_0x38dceb,0xe,_0x0a9e('0x126'));rpcDb[_0x0a9e('0xdc')](_0x38dceb,_0x0a9e('0x127'));_0x142e53(_0x52b365);});});};Preview['prototype'][_0x0a9e('0x1d')]=function(_0x5b6447){if(this[_0x0a9e('0x13')][_0x5b6447['linkedid']]){this[_0x0a9e('0x13')][_0x5b6447['linkedid']][_0x0a9e('0x4a')]=_0x5b6447[_0x0a9e('0x4a')];}};Preview[_0x0a9e('0xd')]['syncOriginateResponse']=function(_0x316b51){var _0x497fda=this;var _0x505ffd=this[_0x0a9e('0x13')][_0x316b51[_0x0a9e('0x128')]];if(_0x505ffd){if(_0x505ffd[_0x0a9e('0xeb')]&&this[_0x0a9e('0x14')][_0x505ffd[_0x0a9e('0xeb')]]){ut[_0x0a9e('0x129')](_0x505ffd,this[_0x0a9e('0x14')][_0x505ffd[_0x0a9e('0xeb')]][_0x0a9e('0x29')],this[_0x0a9e('0x14')][_0x505ffd[_0x0a9e('0xeb')]]['id']);}var _0x98bf26=_[_0x0a9e('0x12a')](_0x505ffd);_0x98bf26[_0x0a9e('0x12b')]=moment()[_0x0a9e('0x27')](_0x0a9e('0x62'));var _0x310026=_0x497fda[_0x0a9e('0x10')][_0x505ffd[_0x0a9e('0x43')]];if(ut['isFailure'](_0x316b51[_0x0a9e('0x12c')])){if(_0x505ffd[_0x0a9e('0xaa')]){rpcDb[_0x0a9e('0xfe')](_0x505ffd[_0x0a9e('0x85')]);}if(_0x505ffd['activeContact']){rpcDb['disableContact'](_0x505ffd['idContact']);}ami[_0x0a9e('0x25')]('custom:agentringnoanswer',ut[_0x0a9e('0x78')](_0x505ffd,_0x0a9e('0x12d'),this[_0x0a9e('0x10')][_0x505ffd[_0x0a9e('0x43')]]));this[_0x0a9e('0xd5')](_0x98bf26,_0x310026,_0x316b51);}else{_0x505ffd[_0x0a9e('0x61')]=moment()[_0x0a9e('0x27')](_0x0a9e('0x62'));ut[_0x0a9e('0xd9')](_0x98bf26,0x4,_0x0a9e('0x12e'));rpcDb['createAgentHistory'](_0x98bf26,_0x0a9e('0x12f'));}}};Preview['prototype'][_0x0a9e('0x1a')]=function(_0x586d2f){var _0xf4de86=this[_0x0a9e('0x13')][_0x586d2f[_0x0a9e('0x84')]];var _0x556bb7;if(_0xf4de86){_0x556bb7=this[_0x0a9e('0x10')][_0xf4de86[_0x0a9e('0x43')]];logger['info']('[syncHangup][talking]',_0x586d2f[_0x0a9e('0x84')],_0x0a9e('0x9e'),_0x556bb7[_0x0a9e('0x29')],'pTalking:\x20',_0x556bb7['pTalking']);}if(this['actions'][_0x586d2f[_0x0a9e('0x84')]]&&_0x586d2f[_0x0a9e('0x84')]!==_0x586d2f[_0x0a9e('0x91')]){if(_0x586d2f[_0x0a9e('0x130')]==='16'&&this[_0x0a9e('0x13')][_0x586d2f[_0x0a9e('0x84')]][_0x0a9e('0x4d')]){this[_0x0a9e('0x72')](_0x586d2f,_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')]);}else if(this[_0x0a9e('0x13')][_0x586d2f[_0x0a9e('0x84')]][_0x0a9e('0x4d')]){logger[_0x0a9e('0x26')](_0x0a9e('0x131'),_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')],_0x0a9e('0x9e'),_0x556bb7['name'],_0x0a9e('0x8a'),_0x556bb7[_0x0a9e('0x2e')]);this[_0x0a9e('0x72')](_0x586d2f,_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')]);}}else if(_0xf4de86&&_[_0x0a9e('0x41')](_0xf4de86['statedesc'])&&_0x556bb7[_0x0a9e('0x132')]&&_0x586d2f[_0x0a9e('0x84')]===_0x586d2f[_0x0a9e('0x91')]&&_[_0x0a9e('0x41')](_0x586d2f[_0x0a9e('0xd8')])&&_0x586d2f[_0x0a9e('0x130')]==='16'&&_0x586d2f[_0x0a9e('0x133')]==='6'&&_[_0x0a9e('0xd7')](_0xf4de86[_0x0a9e('0x134')])){if(_0xf4de86['unlockAgent']){rpcDb['unlockContact'](_0xf4de86[_0x0a9e('0x85')]);}if(_0xf4de86[_0x0a9e('0x83')]){rpcDb['disableContact'](_0xf4de86[_0x0a9e('0x85')]);}_0x586d2f[_0x0a9e('0xd8')]='22';this['callProgressDetectingAgent'](_0xf4de86,_0x556bb7,_0x586d2f);}else if(_0xf4de86&&_0xf4de86[_0x0a9e('0x134')]){if(_0x586d2f['cause']==='16'&&this[_0x0a9e('0x13')][_0x586d2f[_0x0a9e('0x84')]]['dialAnswer']){logger[_0x0a9e('0x26')](_0x0a9e('0x135'),_0x586d2f['linkedid'],_0x586d2f[_0x0a9e('0x130')],_0x0a9e('0x9e'),_0x556bb7['name'],_0x0a9e('0x8a'),_0x556bb7[_0x0a9e('0x2e')]);this[_0x0a9e('0x72')](_0x586d2f,_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')]);}else if(this[_0x0a9e('0x13')][_0x586d2f['linkedid']][_0x0a9e('0x4d')]){logger[_0x0a9e('0x26')]('[syncHangup][talking][cause]',_0x586d2f[_0x0a9e('0x84')],_0x586d2f[_0x0a9e('0x130')],_0x0a9e('0x9e'),_0x556bb7[_0x0a9e('0x29')],_0x0a9e('0x8a'),_0x556bb7[_0x0a9e('0x2e')]);this[_0x0a9e('0x72')](_0x586d2f,_0x586d2f['linkedid'],_0x586d2f['cause']);}}};Preview['prototype']['syncDialEnd']=function(_0x5e9817){if(this[_0x0a9e('0x13')][_0x5e9817[_0x0a9e('0xd4')]]&&_0x5e9817['destlinkedid']!==_0x5e9817['destuniqueid']){this[_0x0a9e('0x72')](_0x5e9817,_0x5e9817['destlinkedid'],_0x5e9817[_0x0a9e('0xcd')]);}};Preview[_0x0a9e('0xd')][_0x0a9e('0x136')]=function(_0x175c97){if(this[_0x0a9e('0x13')][_0x175c97[_0x0a9e('0x84')]]&&_0x175c97['linkedid']!==_0x175c97[_0x0a9e('0x91')]&&!this[_0x0a9e('0x13')][_0x175c97['linkedid']][_0x0a9e('0x4d')]){if(_0x175c97[_0x0a9e('0x130')]==='1'){this[_0x0a9e('0x72')](_0x175c97,_0x175c97[_0x0a9e('0x84')],_0x175c97[_0x0a9e('0x130')]);}}};Preview[_0x0a9e('0xd')][_0x0a9e('0x137')]=function(_0x4a36df,_0x331216,_0x508395){if(this[_0x0a9e('0x13')][_0x4a36df]){if(_[_0x0a9e('0x41')](this['actions'][_0x4a36df][_0x0a9e('0x122')])){this[_0x0a9e('0x13')][_0x4a36df]['variables']={};}this[_0x0a9e('0x13')][_0x4a36df]['variables'][_0x331216]=_0x508395;}};Preview[_0x0a9e('0xd')][_0x0a9e('0x1f')]=function(_0x5d0620){try{if(!_[_0x0a9e('0x41')](_0x5d0620)){if(ut['filterKey'](_[_0x0a9e('0x138')](_0x5d0620[_0x0a9e('0x139')])[0x0])){this[_0x0a9e('0x137')](_0x5d0620[_0x0a9e('0x91')],_[_0x0a9e('0x138')](_0x5d0620[_0x0a9e('0x139')])[0x0],_0x5d0620[_0x0a9e('0x13a')]);}}}catch(_0x53b5c2){logger[_0x0a9e('0x13b')](_0x0a9e('0x13c'),util[_0x0a9e('0x13d')](_0x53b5c2,{'showHidden':![],'depth':null}));}};Preview[_0x0a9e('0xd')][_0x0a9e('0x21')]=function(_0x5932ad){if(_0x5932ad){if(this[_0x0a9e('0x13')][_0x5932ad['transfertargetlinkedid']]){this['actions'][_0x5932ad[_0x0a9e('0x13e')]]['transfer']=!![];}}};Preview[_0x0a9e('0xd')][_0x0a9e('0x23')]=function(_0x58d5fd){if(_0x58d5fd){if(this[_0x0a9e('0x13')][_0x58d5fd[_0x0a9e('0x13f')]]){this[_0x0a9e('0x13')][_0x58d5fd[_0x0a9e('0x13f')]][_0x0a9e('0x134')]=!![];}}};module[_0x0a9e('0x140')]=Preview;
\ No newline at end of file
index b33a860..f9a77cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc308=['connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','holdtime','assigned','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','bluebird','preview','../rpc/cmHopperBlack','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','catch','[createHistory]\x20','resolve','then','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[unlockContact]\x20','disableContact','unlockContact','[activeContact]\x20','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','endtime'];(function(_0x2dea24,_0x2fc021){var _0x309d58=function(_0x2eb89f){while(--_0x2eb89f){_0x2dea24['push'](_0x2dea24['shift']());}};_0x309d58(++_0x2fc021);}(_0xc308,0xb4));var _0x8c30=function(_0x4330ab,_0x141abd){_0x4330ab=_0x4330ab-0x0;var _0x1d764d=_0xc308[_0x4330ab];return _0x1d764d;};'use strict';var util=require('util');var BPromise=require(_0x8c30('0x0'));var logger=require('../../../config/logger')(_0x8c30('0x1'));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0x8c30('0x2'));var agentReportPreview=require(_0x8c30('0x3'));var voiceQueueReport=require(_0x8c30('0x4'));function loggerCatch(_0x3c0984){return function(_0x44bfe0){logger[_0x8c30('0x5')](_0x3c0984,util[_0x8c30('0x6')](_0x44bfe0,{'showHidden':![],'depth':null}));};}function create(_0x3498aa){return cmHopperHistory['createHistory'](_0x3498aa)[_0x8c30('0x7')](loggerCatch(_0x8c30('0x8')));}function createAgent(_0x5cbe90){return BPromise[_0x8c30('0x9')]()[_0x8c30('0xa')](agentReportPreview['createHistory'](_0x5cbe90))[_0x8c30('0x7')](loggerCatch(_0x8c30('0x8')));}function moveContact(_0x26cadb){return cmHopper[_0x8c30('0xb')](_0x26cadb,!![])['catch'](loggerCatch(_0x8c30('0xc')));}exports[_0x8c30('0xd')]=function(_0xecb750){return cmHopperBlack[_0x8c30('0xd')](_0xecb750)['catch'](loggerCatch(_0x8c30('0xe')));};exports[_0x8c30('0xf')]=function(_0x5c9523){return BPromise[_0x8c30('0x9')]()[_0x8c30('0xa')](cmHopper[_0x8c30('0xf')](_0x5c9523))[_0x8c30('0x7')](loggerCatch(_0x8c30('0x10')));};exports['createHistory']=function(_0x3a5e70,_0x5706d5){create(_0x3a5e70)[_0x8c30('0x7')](loggerCatch(_0x5706d5));moveContact(_0x3a5e70)[_0x8c30('0x7')](loggerCatch(_0x5706d5));};exports[_0x8c30('0x11')]=function(_0x15a0ee,_0x1fa94b){createAgent(_0x15a0ee)[_0x8c30('0x7')](loggerCatch(_0x1fa94b));};exports[_0x8c30('0x12')]=function(_0x59c382,_0x4a6b53){create(_0x59c382)[_0x8c30('0x7')](loggerCatch(_0x4a6b53));};exports[_0x8c30('0x13')]=function(_0xa512a7,_0x1e6572){moveContact(_0xa512a7)[_0x8c30('0x7')](loggerCatch(_0x1e6572));};exports[_0x8c30('0x14')]=function(_0x21bb67,_0x48ab50,_0x319b04){if(_0x48ab50){_0x21bb67[_0x8c30('0x15')]=null;}if(_0x319b04){_0x21bb67[_0x8c30('0x16')]=![];}return cmHopper['rescheduleContact'](_0x21bb67)[_0x8c30('0x7')](loggerCatch(_0x8c30('0x17')));};exports[_0x8c30('0x18')]=function(_0x3ff194){return cmHopper[_0x8c30('0x18')](_0x3ff194)[_0x8c30('0x7')](loggerCatch('[countReScheduled]\x20'));};exports['unlockContact']=function(_0x2a1fdc){return cmHopper['unlockContact']({'UserId':null},_0x2a1fdc,0x1)[_0x8c30('0x7')](loggerCatch(_0x8c30('0x19')));};exports[_0x8c30('0x1a')]=function(_0x2209ed){return cmHopper[_0x8c30('0x1b')]({'active':![]},_0x2209ed,0x1)[_0x8c30('0x7')](loggerCatch(_0x8c30('0x1c')));};exports[_0x8c30('0x1d')]=function(_0x4a8116){var _0x3096a3={};_0x3096a3['type']=_0x4a8116[_0x8c30('0x1e')];_0x3096a3[_0x8c30('0x1f')]=_0x4a8116[_0x8c30('0x1f')];_0x3096a3[_0x8c30('0x20')]=_0x4a8116[_0x8c30('0x20')];_0x3096a3['calleridname']=_0x4a8116[_0x8c30('0x21')];_0x3096a3['queue']=_0x4a8116['queue'];_0x3096a3[_0x8c30('0x22')]=_0x4a8116[_0x8c30('0x23')];_0x3096a3[_0x8c30('0x24')]=_0x4a8116['answertime'];_0x3096a3[_0x8c30('0x25')]=0x1;_0x3096a3[_0x8c30('0x26')]=_0x4a8116[_0x8c30('0x27')];_0x3096a3[_0x8c30('0x28')]=_0x4a8116[_0x8c30('0x29')];_0x3096a3[_0x8c30('0x2a')]=_0x8c30('0x2b');_0x3096a3[_0x8c30('0x2c')]=_0x8c30('0x2d');_0x3096a3[_0x8c30('0x2e')]=0x0;_0x3096a3[_0x8c30('0x2f')]=0x1;_0x3096a3['lastAssignedTo']=_0x4a8116['membername'];_0x3096a3['queuecallerexitreason']=_0x8c30('0x30');return BPromise[_0x8c30('0x9')]()['then'](voiceQueueReport[_0x8c30('0x31')](_0x3096a3))[_0x8c30('0x7')](loggerCatch(_0x8c30('0x32')));};exports[_0x8c30('0x33')]=function(_0x3703f0,_0x27f381){return BPromise['resolve']()[_0x8c30('0xa')](cmHopper[_0x8c30('0x33')](_0x3703f0,_0x27f381))['catch'](loggerCatch(_0x8c30('0x34')));};exports[_0x8c30('0x35')]=function(_0x56c67b){return cmHopper['rescheduleContact'](_0x56c67b,!![],!![])[_0x8c30('0x7')](loggerCatch(_0x8c30('0x36')));};
\ No newline at end of file
+var _0x8d55=['[getContactPreview]\x20','createAgentHistory','createCustomerFinal','UserId','rescheduleContact','[rescheduleContact]\x20','[countReScheduled]\x20','unlockContact','disableContact','[activeContact]\x20','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercomplete','endtime','membername','context','from-sip','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','util','../../../config/logger','preview','../rpc/cmHopper','../rpc/agentReportPreview','error','createHistory','[createHistory]\x20','resolve','then','catch','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview'];(function(_0x3622f6,_0xd241d3){var _0x2d88f4=function(_0x136796){while(--_0x136796){_0x3622f6['push'](_0x3622f6['shift']());}};_0x2d88f4(++_0xd241d3);}(_0x8d55,0x1c4));var _0x58d5=function(_0x161d5e,_0xea7447){_0x161d5e=_0x161d5e-0x0;var _0x576e49=_0x8d55[_0x161d5e];return _0x576e49;};'use strict';var util=require(_0x58d5('0x0'));var BPromise=require('bluebird');var logger=require(_0x58d5('0x1'))(_0x58d5('0x2'));var cmHopper=require(_0x58d5('0x3'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require('../rpc/cmHopperBlack');var agentReportPreview=require(_0x58d5('0x4'));var voiceQueueReport=require('../rpc/voiceQueueReport');function loggerCatch(_0x24f5ce){return function(_0x4908c3){logger[_0x58d5('0x5')](_0x24f5ce,util['inspect'](_0x4908c3,{'showHidden':![],'depth':null}));};}function create(_0x1d35d3){return cmHopperHistory[_0x58d5('0x6')](_0x1d35d3)['catch'](loggerCatch(_0x58d5('0x7')));}function createAgent(_0x2f7c76){return BPromise[_0x58d5('0x8')]()[_0x58d5('0x9')](agentReportPreview['createHistory'](_0x2f7c76))[_0x58d5('0xa')](loggerCatch(_0x58d5('0x7')));}function moveContact(_0x1e8ac2){return cmHopper[_0x58d5('0xb')](_0x1e8ac2,!![])[_0x58d5('0xa')](loggerCatch(_0x58d5('0xc')));}exports[_0x58d5('0xd')]=function(_0x2fa01c){return cmHopperBlack[_0x58d5('0xd')](_0x2fa01c)[_0x58d5('0xa')](loggerCatch(_0x58d5('0xe')));};exports[_0x58d5('0xf')]=function(_0x56e0f1){return BPromise[_0x58d5('0x8')]()[_0x58d5('0x9')](cmHopper['getContactPreview'](_0x56e0f1))['catch'](loggerCatch(_0x58d5('0x10')));};exports[_0x58d5('0x6')]=function(_0x25aac1,_0x1a3f1e){create(_0x25aac1)[_0x58d5('0xa')](loggerCatch(_0x1a3f1e));moveContact(_0x25aac1)[_0x58d5('0xa')](loggerCatch(_0x1a3f1e));};exports[_0x58d5('0x11')]=function(_0x1b090d,_0x3bd229){createAgent(_0x1b090d)[_0x58d5('0xa')](loggerCatch(_0x3bd229));};exports['createCustomerHistory']=function(_0x4e266d,_0xc1f9ee){create(_0x4e266d)[_0x58d5('0xa')](loggerCatch(_0xc1f9ee));};exports[_0x58d5('0x12')]=function(_0x4914c1,_0xdcd978){moveContact(_0x4914c1)[_0x58d5('0xa')](loggerCatch(_0xdcd978));};exports['rescheduleContact']=function(_0x3158f2,_0x3805ad,_0x6fcb75){if(_0x3805ad){_0x3158f2[_0x58d5('0x13')]=null;}if(_0x6fcb75){_0x3158f2['active']=![];}return cmHopper[_0x58d5('0x14')](_0x3158f2)[_0x58d5('0xa')](loggerCatch(_0x58d5('0x15')));};exports['countReScheduled']=function(_0x4f9071){return cmHopper['countReScheduled'](_0x4f9071)[_0x58d5('0xa')](loggerCatch(_0x58d5('0x16')));};exports[_0x58d5('0x17')]=function(_0x961eb7){return cmHopper['unlockContact']({'UserId':null},_0x961eb7,0x1)['catch'](loggerCatch('[unlockContact]\x20'));};exports[_0x58d5('0x18')]=function(_0x456093){return cmHopper[_0x58d5('0x17')]({'active':![]},_0x456093,0x1)[_0x58d5('0xa')](loggerCatch(_0x58d5('0x19')));};exports['crateCustomerReportQueue']=function(_0xdbca69){var _0x1b32ad={};_0x1b32ad['type']=_0xdbca69[_0x58d5('0x1a')];_0x1b32ad[_0x58d5('0x1b')]=_0xdbca69[_0x58d5('0x1b')];_0x1b32ad[_0x58d5('0x1c')]=_0xdbca69[_0x58d5('0x1c')];_0x1b32ad['calleridname']=_0xdbca69[_0x58d5('0x1d')];_0x1b32ad[_0x58d5('0x1e')]=_0xdbca69[_0x58d5('0x1e')];_0x1b32ad[_0x58d5('0x1f')]=_0xdbca69[_0x58d5('0x20')];_0x1b32ad[_0x58d5('0x21')]=_0xdbca69[_0x58d5('0x20')];_0x1b32ad[_0x58d5('0x22')]=0x1;_0x1b32ad['queuecallercompleteAt']=_0xdbca69[_0x58d5('0x23')];_0x1b32ad['connectedlinename']=_0xdbca69[_0x58d5('0x24')];_0x1b32ad[_0x58d5('0x25')]=_0x58d5('0x26');_0x1b32ad[_0x58d5('0x27')]=_0x58d5('0x28');_0x1b32ad[_0x58d5('0x29')]=0x0;_0x1b32ad[_0x58d5('0x2a')]=0x1;_0x1b32ad[_0x58d5('0x2b')]=_0xdbca69[_0x58d5('0x24')];_0x1b32ad[_0x58d5('0x2c')]=_0x58d5('0x2d');return BPromise['resolve']()[_0x58d5('0x9')](voiceQueueReport[_0x58d5('0x2e')](_0x1b32ad))[_0x58d5('0xa')](loggerCatch(_0x58d5('0x2f')));};exports[_0x58d5('0x30')]=function(_0x31a16a,_0x12fbb2){return BPromise[_0x58d5('0x8')]()[_0x58d5('0x9')](cmHopper[_0x58d5('0x30')](_0x31a16a,_0x12fbb2))[_0x58d5('0xa')](loggerCatch(_0x58d5('0x31')));};exports[_0x58d5('0x32')]=function(_0x261031){return cmHopper[_0x58d5('0x14')](_0x261031,!![],!![])['catch'](loggerCatch(_0x58d5('0x33')));};
\ No newline at end of file
index 9586616..b5db8b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64d0=['xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepeer','getCallerIdRandom','\x5cw{0,','pow','random','extractCalleridName','match','variables','keys','forEach','toLowerCase','buildNoAnswerEventPayload','util','lodash','../../../../config/logger','preview','env','loggerCatch','inspect','info','loggerError','error','logger2','getCallerId','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','isNil','addVariables','Queue','calleridname','ContactId','dialer','VoiceQueueId','\x22rtTxX%s%s\x22','dialQueueProject2','U(xcally-mixmonitor-context)','dialPreviewUrl','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','Call-Type:\x20PREVIEW','monitor_format','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','toLowerVariables','hasOwnProperty','toLower','updateOriginated','originated','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','Blacklist','starttime','responsetime','endtime','logAgent','ringtime','getSeconds','membername','UserId','talktime','answertime','variablesAction','BOOKED','uniqueid','originate','channelAgent','calleridnum','xcally-motion-preview','from-sip','timeout','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','cloneAction','clone','Global','active','scheduledat','add','ListId','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','name','queue','interface','voice','mandatoryDisposition','buildObj','agentReadyId','not_inuse','reachable','milliseconds','diff','seconds','createBody','CampaignId','filterKey','idContact','dialAnswer','countglobal','callbackuniqueid','callbackat','recallme','sipcallid'];(function(_0x4e8dfc,_0x448b97){var _0x3c47e0=function(_0x844a2b){while(--_0x844a2b){_0x4e8dfc['push'](_0x4e8dfc['shift']());}};_0x3c47e0(++_0x448b97);}(_0x64d0,0xab));var _0x064d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x64d0[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0x064d('0x0'));var _=require(_0x064d('0x1'));var moment=require('moment');var logger=require(_0x064d('0x2'))(_0x064d('0x3'));var ipAgi=process[_0x064d('0x4')]['XCALLY_IP_AGI']||'127.0.0.1';var utils=require('../../dialer/utils');exports[_0x064d('0x5')]=function(_0x1e82ea){return function(_0x5bfe0d){logger['error'](_0x1e82ea,util[_0x064d('0x6')](_0x5bfe0d,{'showHidden':![],'depth':null}));};};exports['logger']=function(_0x95e9c7,_0x18a475){logger[_0x064d('0x7')](_0x95e9c7,util['inspect'](_0x18a475,{'showHidden':![],'depth':null}));};exports[_0x064d('0x8')]=function(_0x25091d,_0x545f88){logger[_0x064d('0x9')](_0x25091d,util[_0x064d('0x6')](_0x545f88,{'showHidden':![],'depth':null}));};exports[_0x064d('0xa')]=function(_0x5a7e63){return function(_0x582275){logger[_0x064d('0x7')](_0x5a7e63,util[_0x064d('0x6')](_0x582275,{'showHidden':![],'depth':null}));};};exports['message']=function(_0x1d76d2,_0x2c0a63,_0x7a67c3){return{'message':_0x1d76d2,'unlock':_0x2c0a63,'active':_0x7a67c3};};exports[_0x064d('0xb')]=function(_0x5c9aef,_0xdae202,_0x5cf1e0){if(!_[_0x064d('0xc')](_0x5cf1e0)&&_0x064d('0xd')===typeof _0x5cf1e0&&!_[_0x064d('0xe')](_0x5cf1e0)){if(!_[_0x064d('0xc')](_0xdae202)&&_0x064d('0xd')===typeof _0xdae202&&!_[_0x064d('0xe')](_0xdae202)){return util[_0x064d('0xf')](_0x064d('0x10'),_0xdae202,_0x5cf1e0);}return util[_0x064d('0xf')](_0x064d('0x10'),_0x5cf1e0,_0x5cf1e0);}if(!_[_0x064d('0xc')](_0x5c9aef)&&_0x064d('0xd')===typeof _0x5c9aef&&!_['isEmpty'](_0x5c9aef)){return _0x5c9aef;}return _0x064d('0x11');};exports[_0x064d('0x12')]=function(_0x472898){if(_[_0x064d('0x13')](_0x472898)){return![];}return _0x472898;};exports[_0x064d('0x14')]=function(_0x56fbc4,_0x3b2ba6,_0x36f905,_0x346c95,_0x186195,_0x3c2395){var _0x4b6e8b={'XMD-QUEUE':_0x3b2ba6[_0x064d('0x15')]?_0x3b2ba6['Queue']['name']:'','XMD-CALLERID':_0x346c95,'XMD-CALLERID-PREVIEW':_0x3c2395?util[_0x064d('0xf')](_0x064d('0x10'),_0x3c2395[_0x064d('0x16')],_0x3c2395['calleridnum']):_0x346c95,'XMD-DIALID':_0x186195,'XMD-CONTACTID':_0x3b2ba6[_0x064d('0x17')],'XMD-CDRTYPE':_0x064d('0x18'),'CALLERID(all)':_0x346c95,'XMD-VOICEQUEUEID':_0x3b2ba6[_0x064d('0x19')],'XMD-DIALCHANNEL':_0x36f905,'XMD-DIALTIMEOUT':_0x56fbc4['dialOriginateTimeout']||0x1e,'XMD-DIALOPTIONS':util[_0x064d('0xf')](_0x064d('0x1a'),_0x56fbc4[_0x064d('0x1b')]?'g':'',_[_0x064d('0xe')](_0x56fbc4['monitor_format'])?'':_0x064d('0x1c')),'XMD-DIALURL':_0x56fbc4[_0x064d('0x1d')]||'','XMD-AGI':_0x56fbc4['dialQueueProject']?util[_0x064d('0xf')](_0x064d('0x1e'),ipAgi,_0x56fbc4['dialQueueProject']):_0x064d('0x1f'),'XMD-AGIAFTER':_0x56fbc4[_0x064d('0x1b')]?util[_0x064d('0xf')]('\x22agi://%s/square,%s\x22',ipAgi,_0x56fbc4[_0x064d('0x1b')]):_0x064d('0x1f'),'XMD-ORIGINATECALLERIDNUM':_0x3c2395?_0x3c2395[_0x064d('0x20')]:'','XMD-ORIGINATECALLERIDNAME':_0x3c2395?_0x3c2395[_0x064d('0x21')]:'','XMD-DESTINATION':'xcally-motion-preview','SIPADDHEADER':_0x064d('0x22')};if(!_[_0x064d('0xe')](_0x56fbc4[_0x064d('0x23')])){_0x4b6e8b[util[_0x064d('0xf')]('%s',_0x064d('0x24'))]=_0x56fbc4[_0x064d('0x23')];_0x4b6e8b[util[_0x064d('0xf')]('%s',_0x064d('0x25'))]=_0x186195;}return _0x4b6e8b;};exports[_0x064d('0x26')]=function(_0x58e76b){var _0x1121ef={};for(var _0x8fccb7 in _0x58e76b){if(_0x58e76b[_0x064d('0x27')](_0x8fccb7)){_0x1121ef[util[_0x064d('0xf')]('%s',_[_0x064d('0x28')](_0x8fccb7))]=_0x58e76b[_0x8fccb7];}}return{'variables':_0x1121ef};};exports[_0x064d('0x29')]=function(_0x48a145,_0x1d114d){if(!_[_0x064d('0x13')](_0x48a145)){if(_0x48a145[_0x064d('0x27')](_0x064d('0x2a'))){if(_0x48a145['originated']>0x0){_0x48a145[_0x064d('0x2a')]-=0x1;}else{logger[_0x064d('0x9')]('[updateOriginated]\x20object\x20originated\x20is\x20negative',_0x1d114d);}}}else{logger['error']('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x1d114d);}};exports[_0x064d('0x2b')]=function(_0x3d80c8){var _0x2b4ef9=moment()['format'](_0x064d('0x2c'));_0x3d80c8[_0x064d('0x2d')]=0xd;_0x3d80c8[_0x064d('0x2e')]=_0x064d('0x2f');_0x3d80c8[_0x064d('0x30')]=_0x2b4ef9;_0x3d80c8[_0x064d('0x31')]=_0x2b4ef9;_0x3d80c8[_0x064d('0x32')]=_0x2b4ef9;};exports[_0x064d('0x33')]=function(_0x5dd6a2,_0x51292,_0x30008e){var _0x2a9561=moment()['format'](_0x064d('0x2c'));_0x5dd6a2[_0x064d('0x2d')]=_0x51292;_0x5dd6a2[_0x064d('0x2e')]=_0x30008e;_0x5dd6a2['responsetime']=_0x2a9561;_0x5dd6a2[_0x064d('0x34')]=utils[_0x064d('0x35')](_0x5dd6a2[_0x064d('0x31')],_0x5dd6a2['starttime']);};exports['logLookAgent']=function(_0x279a2a,_0x241dd6,_0x1099c3){_0x279a2a[_0x064d('0x36')]=_0x241dd6;_0x279a2a[_0x064d('0x37')]=_0x1099c3;};exports['logCustomer']=function(_0x5ccd0a,_0x3c757b,_0x1b67b3){var _0x730fb8=moment()[_0x064d('0xf')](_0x064d('0x2c'));_0x5ccd0a[_0x064d('0x2d')]=_0x3c757b;_0x5ccd0a[_0x064d('0x2e')]=_0x1b67b3;_0x5ccd0a[_0x064d('0x31')]=_0x5ccd0a[_0x064d('0x31')]?_0x5ccd0a[_0x064d('0x31')]:_0x730fb8;_0x5ccd0a[_0x064d('0x32')]=_0x5ccd0a[_0x064d('0x32')]?_0x5ccd0a['endtime']:_0x730fb8;_0x5ccd0a[_0x064d('0x34')]=utils['getSeconds'](_0x5ccd0a[_0x064d('0x31')]||0x0,_0x5ccd0a[_0x064d('0x30')]||0x0);_0x5ccd0a[_0x064d('0x38')]=_0x5ccd0a[_0x064d('0x39')]?utils[_0x064d('0x35')](_0x5ccd0a['endtime'],_0x5ccd0a[_0x064d('0x39')]):0x0;};exports['isFailure']=function(_0x266469){return _0x266469==='Failure';};exports[_0x064d('0x3a')]=function(_0xab08df,_0x1549da,_0x5d7886,_0x2595cd,_0x37e6ec){var _0x34dbb8=_0x2595cd?'RECALL':_0xab08df[_0x064d('0x16')];_0x34dbb8=_0x37e6ec?_0x064d('0x3b'):_0x34dbb8;return{'actionid':_0xab08df[_0x064d('0x3c')],'action':_0x064d('0x3d'),'channel':_0xab08df[_0x064d('0x3e')],'callerid':util['format'](_0x064d('0x10'),_0x34dbb8,_0xab08df[_0x064d('0x3f')]),'Exten':_0x064d('0x40'),'Context':_0x064d('0x41'),'Priority':'1','variable':_0x5d7886,'timeout':(_0x1549da[_0x064d('0x42')]||0x1e)*0x3e8,'async':!![],'channelid':_0xab08df[_0x064d('0x3c')]};};exports['totalGlobal']=function(_0x289ccf){return _0x289ccf[_0x064d('0x43')]+_0x289ccf[_0x064d('0x44')]+_0x289ccf[_0x064d('0x45')]+_0x289ccf['countagentrejectretry']+_0x289ccf[_0x064d('0x46')];};exports[_0x064d('0x47')]=function(_0x9f0244){var _0x245257=_[_0x064d('0x48')](_0x9f0244);_0x245257[_0x064d('0x2d')]=0xf;_0x245257[_0x064d('0x2e')]=_0x064d('0x49');return _0x245257;};exports['scheduledAt']=function(_0x4407ba,_0x4bc29b,_0x2a6064){var _0x26f4cf={};_0x26f4cf[_0x4bc29b]=_0x4407ba[_0x4bc29b];_0x26f4cf[_0x064d('0x4a')]=![];_0x26f4cf[_0x064d('0x4b')]=moment()[_0x064d('0x4c')](_0x2a6064,'minutes')[_0x064d('0xf')]('YYYY-MM-DD\x20HH:mm:ss');_0x26f4cf[_0x064d('0x17')]=_0x4407ba[_0x064d('0x17')];_0x26f4cf[_0x064d('0x4d')]=_0x4407ba['ListId'];_0x26f4cf[_0x064d('0x19')]=_0x4407ba[_0x064d('0x19')]||undefined;return _0x26f4cf;};exports['decrementTalkink']=function(_0x5720fa,_0x3a9a46){if(!_['isNil'](_0x5720fa)){if(_0x5720fa[_0x064d('0x4e')]>0x0){_0x5720fa[_0x064d('0x4e')]-=0x1;}else{logger[_0x064d('0x9')](_0x3a9a46,_0x064d('0x4f'));}}else{logger[_0x064d('0x9')](_0x3a9a46,_0x064d('0x50'));}};exports[_0x064d('0x51')]=function(_0x37a980){if(_0x37a980<=0x0){return!![];}return![];};function buildObj(_0x356d5d,_0x5313e7,_0xd8a24f){_0x356d5d[_0x064d('0x52')]=_0x5313e7;_0x356d5d[_0x064d('0x53')]=_0x356d5d[_0x064d('0x54')];_0x356d5d[_0x064d('0x55')]=_0x356d5d['channelAgent'];_0x356d5d['motionChannel']=_0x064d('0x56');if(_0xd8a24f){_0x356d5d[_0x064d('0x57')]=_0xd8a24f['mandatoryDisposition'];}return _0x356d5d;}exports[_0x064d('0x58')]=buildObj;exports['buildAcw']=function(_0x19d086){var _0x136939={};_0x136939[_0x064d('0x54')]=_0x19d086['queue'];_0x136939[_0x064d('0x55')]=_0x19d086[_0x064d('0x3e')];_0x136939[_0x064d('0x3c')]=_0x19d086[_0x064d('0x3c')];return _0x136939;};exports[_0x064d('0x59')]=function(_0x46e922){var _0x4b25dd=[];for(var _0x240643 in _0x46e922){if(_0x46e922[_0x064d('0x27')](_0x240643)){if(!_[_0x064d('0x13')](_0x46e922[_0x240643])&&_0x46e922[_0x240643][_0x064d('0x2d')]===_0x064d('0x5a')&&_0x46e922[_0x240643]['status']===_0x064d('0x5b')){_0x4b25dd['push'](_0x46e922[_0x240643]['id']);}}}return _0x4b25dd;};exports['getDiff']=function(_0x370a38){var _0x53f52e=moment()[_0x064d('0x5c')](0x0);var _0x598ce8=moment(_0x370a38)['milliseconds'](0x0);return _0x53f52e[_0x064d('0x5d')](_0x598ce8,_0x064d('0x5e'));};exports[_0x064d('0x5f')]=function(_0x5a001a){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x5a001a[_0x064d('0x17')],'ListId':_0x5a001a['ListId'],'VoiceQueueId':_0x5a001a[_0x064d('0x19')]||undefined,'CampaignId':_0x5a001a[_0x064d('0x60')]||undefined};};exports[_0x064d('0x61')]=function(_0x31837f){if(_0x31837f==='uniqueid'||_0x31837f===_0x064d('0x62')||_0x31837f===_0x064d('0x54')||_0x31837f==='type'||_0x31837f==='campaigntype'||_0x31837f===_0x064d('0x63')||_0x31837f==='membername'||_0x31837f===_0x064d('0x3e')||_0x31837f===_0x064d('0x16')||_0x31837f===_0x064d('0x4a')||_0x31837f===_0x064d('0x3f')||_0x31837f==='scheduledat'||_0x31837f===_0x064d('0x43')||_0x31837f===_0x064d('0x44')||_0x31837f===_0x064d('0x45')||_0x31837f===_0x064d('0x64')||_0x31837f==='callback'||_0x31837f===_0x064d('0x65')||_0x31837f===_0x064d('0x66')||_0x31837f===_0x064d('0x67')||_0x31837f===_0x064d('0x17')||_0x31837f===_0x064d('0x4d')||_0x31837f===_0x064d('0x37')||_0x31837f===_0x064d('0x19')||_0x31837f===_0x064d('0x68')||_0x31837f===_0x064d('0x69')||_0x31837f===_0x064d('0x6a')||_0x31837f===_0x064d('0x6b')||_0x31837f===_0x064d('0x6c')||_0x31837f===_0x064d('0x6d')||_0x31837f===_0x064d('0x6e')||_0x31837f===_0x064d('0x6f')||_0x31837f===_0x064d('0x70')||_0x31837f===_0x064d('0x71')||_0x31837f===_0x064d('0x72')||_0x31837f===_0x064d('0x73')||_0x31837f===_0x064d('0x74')||_0x31837f===_0x064d('0x75')||_0x31837f==='xmd-agi'||_0x31837f===_0x064d('0x76')||_0x31837f===_0x064d('0x77')||_0x31837f===_0x064d('0x78')||_0x31837f===_0x064d('0x79')||_0x31837f===_0x064d('0x7a')||_0x31837f===_0x064d('0x7b')||_0x31837f===_0x064d('0x7c')||_0x31837f===_0x064d('0x7d')||_0x31837f===_0x064d('0x76')||_0x31837f===_0x064d('0x77')||_0x31837f===_0x064d('0x78')||_0x31837f===_0x064d('0x79')||_0x31837f===_0x064d('0x7a')||_0x31837f===_0x064d('0x7b')||_0x31837f===_0x064d('0x7c')||_0x31837f===_0x064d('0x7d')||_0x31837f===_0x064d('0x7e')||_0x31837f==='bridgepvtcallid'||_0x31837f==='state'||_0x31837f===_0x064d('0x2e')){return![];}return!![];};exports[_0x064d('0x7f')]=function(_0x5ccbe1,_0x5d4b2c){var _0x575e6e,_0x2a2a6c,_0x385490;if(_0x5d4b2c<=0x0){_0x5d4b2c=0x1;}_0x575e6e=new RegExp(_0x064d('0x80')+_0x5d4b2c+'}$');_0x2a2a6c=Math['pow'](0xa,_0x5d4b2c-0x1);_0x385490=Math[_0x064d('0x81')](0xa,_0x5d4b2c)-0x1;return util[_0x064d('0xf')]('%s',_['replace'](_0x5ccbe1,_0x575e6e,_[_0x064d('0x82')](_0x2a2a6c,_0x385490)));};exports[_0x064d('0x83')]=function(_0x396254){var _0x1b310e=_0x396254[_0x064d('0x84')](/"(.*?)"/);return _0x1b310e?_0x1b310e[0x1]:_0x396254;};exports['extractCalleridNumber']=function(_0x14f565){var _0x54102a=_0x14f565[_0x064d('0x84')](/<(.*?)>/);return _0x54102a?_0x54102a[0x1]:_0x14f565;};function buildNoAnswerEventPayload(_0x5800f3,_0x4a0e62){var _0x51e356=buildObj(_0x5800f3,'noanswer');if(!_[_0x064d('0xe')](_0x4a0e62[_0x064d('0x85')])){Object[_0x064d('0x86')](_0x4a0e62[_0x064d('0x85')])[_0x064d('0x87')](function(_0x34e45f){_0x51e356[_0x34e45f[_0x064d('0x88')]()]=_0x4a0e62[_0x064d('0x85')][_0x34e45f];});}return _0x51e356;}exports[_0x064d('0x89')]=buildNoAnswerEventPayload;
\ No newline at end of file
+var _0x7517=['pow','replace','extractCalleridName','extractCalleridNumber','match','variables','keys','forEach','buildNoAnswerEventPayload','util','lodash','moment','env','XCALLY_IP_AGI','../../dialer/utils','loggerCatch','error','inspect','logger','info','loggerError','logger2','message','getCallerId','string','isEmpty','format','\x22%s\x22\x20<%s>','isUndefined','addVariables','Queue','name','calleridname','calleridnum','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','dialQueueProject2','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','Call-Type:\x20PREVIEW','monitor_format','_XCALLY_MIXMONITOR_FORMAT','hasOwnProperty','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','statedesc','starttime','responsetime','endtime','logAgent','state','ringtime','getSeconds','logLookAgent','membername','UserId','logCustomer','talktime','answertime','isFailure','Failure','variablesAction','BOOKED','uniqueid','originate','xcally-motion-preview','timeout','totalGlobal','countbusyretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','clone','active','scheduledat','ListId','pTalking','IsNotLoggedIn','lastevent','queue','channelAgent','motionChannel','mandatoryDisposition','buildObj','agentReadyId','not_inuse','status','reachable','push','milliseconds','diff','seconds','CampaignId','filterKey','idContact','type','dialAnswer','countcongestionretry','countglobal','callback','callbackuniqueid','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepeer','getCallerIdRandom','\x5cw{0,'];(function(_0x58ec33,_0x4cbab5){var _0x392112=function(_0x35ad55){while(--_0x35ad55){_0x58ec33['push'](_0x58ec33['shift']());}};_0x392112(++_0x4cbab5);}(_0x7517,0x91));var _0x7751=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x7517[_0x543084];return _0x306a57;};'use strict';var util=require(_0x7751('0x0'));var _=require(_0x7751('0x1'));var moment=require(_0x7751('0x2'));var logger=require('../../../../config/logger')('preview');var ipAgi=process[_0x7751('0x3')][_0x7751('0x4')]||'127.0.0.1';var utils=require(_0x7751('0x5'));exports[_0x7751('0x6')]=function(_0x3e66f7){return function(_0x2d6053){logger[_0x7751('0x7')](_0x3e66f7,util[_0x7751('0x8')](_0x2d6053,{'showHidden':![],'depth':null}));};};exports[_0x7751('0x9')]=function(_0x53f07d,_0xc0e29a){logger[_0x7751('0xa')](_0x53f07d,util[_0x7751('0x8')](_0xc0e29a,{'showHidden':![],'depth':null}));};exports[_0x7751('0xb')]=function(_0x5a8390,_0x8e5164){logger['error'](_0x5a8390,util[_0x7751('0x8')](_0x8e5164,{'showHidden':![],'depth':null}));};exports[_0x7751('0xc')]=function(_0x13ef10){return function(_0x4022aa){logger['info'](_0x13ef10,util[_0x7751('0x8')](_0x4022aa,{'showHidden':![],'depth':null}));};};exports[_0x7751('0xd')]=function(_0x230160,_0x331064,_0xae9f45){return{'message':_0x230160,'unlock':_0x331064,'active':_0xae9f45};};exports[_0x7751('0xe')]=function(_0x4ac700,_0xed3297,_0x1352f8){if(!_['isUndefined'](_0x1352f8)&&_0x7751('0xf')===typeof _0x1352f8&&!_[_0x7751('0x10')](_0x1352f8)){if(!_['isUndefined'](_0xed3297)&&'string'===typeof _0xed3297&&!_[_0x7751('0x10')](_0xed3297)){return util[_0x7751('0x11')](_0x7751('0x12'),_0xed3297,_0x1352f8);}return util[_0x7751('0x11')](_0x7751('0x12'),_0x1352f8,_0x1352f8);}if(!_[_0x7751('0x13')](_0x4ac700)&&'string'===typeof _0x4ac700&&!_[_0x7751('0x10')](_0x4ac700)){return _0x4ac700;}return'\x22\x22\x20<>';};exports['isActive']=function(_0x247ad7){if(_['isNil'](_0x247ad7)){return![];}return _0x247ad7;};exports[_0x7751('0x14')]=function(_0x5356d0,_0x3b4cea,_0x1ccbfa,_0x5de88c,_0x4552fa,_0x1d9844){var _0x2a9b6f={'XMD-QUEUE':_0x3b4cea[_0x7751('0x15')]?_0x3b4cea[_0x7751('0x15')][_0x7751('0x16')]:'','XMD-CALLERID':_0x5de88c,'XMD-CALLERID-PREVIEW':_0x1d9844?util['format']('\x22%s\x22\x20<%s>',_0x1d9844[_0x7751('0x17')],_0x1d9844[_0x7751('0x18')]):_0x5de88c,'XMD-DIALID':_0x4552fa,'XMD-CONTACTID':_0x3b4cea[_0x7751('0x19')],'XMD-CDRTYPE':_0x7751('0x1a'),'CALLERID(all)':_0x5de88c,'XMD-VOICEQUEUEID':_0x3b4cea[_0x7751('0x1b')],'XMD-DIALCHANNEL':_0x1ccbfa,'XMD-DIALTIMEOUT':_0x5356d0[_0x7751('0x1c')]||0x1e,'XMD-DIALOPTIONS':util['format']('\x22rtTxX%s%s\x22',_0x5356d0[_0x7751('0x1d')]?'g':'',_[_0x7751('0x10')](_0x5356d0['monitor_format'])?'':_0x7751('0x1e')),'XMD-DIALURL':_0x5356d0[_0x7751('0x1f')]||'','XMD-AGI':_0x5356d0[_0x7751('0x20')]?util[_0x7751('0x11')](_0x7751('0x21'),ipAgi,_0x5356d0[_0x7751('0x20')]):'NONE','XMD-AGIAFTER':_0x5356d0[_0x7751('0x1d')]?util[_0x7751('0x11')]('\x22agi://%s/square,%s\x22',ipAgi,_0x5356d0[_0x7751('0x1d')]):_0x7751('0x22'),'XMD-ORIGINATECALLERIDNUM':_0x1d9844?_0x1d9844[_0x7751('0x23')]:'','XMD-ORIGINATECALLERIDNAME':_0x1d9844?_0x1d9844[_0x7751('0x24')]:'','XMD-DESTINATION':'xcally-motion-preview','SIPADDHEADER':_0x7751('0x25')};if(!_[_0x7751('0x10')](_0x5356d0[_0x7751('0x26')])){_0x2a9b6f[util['format']('%s',_0x7751('0x27'))]=_0x5356d0['monitor_format'];_0x2a9b6f[util[_0x7751('0x11')]('%s','_XCALLY_MIXMONITOR_UNIQUEID')]=_0x4552fa;}return _0x2a9b6f;};exports['toLowerVariables']=function(_0x2b63fd){var _0x539f70={};for(var _0x51af41 in _0x2b63fd){if(_0x2b63fd[_0x7751('0x28')](_0x51af41)){_0x539f70[util[_0x7751('0x11')]('%s',_[_0x7751('0x29')](_0x51af41))]=_0x2b63fd[_0x51af41];}}return{'variables':_0x539f70};};exports[_0x7751('0x2a')]=function(_0x169128,_0x44cabd){if(!_['isNil'](_0x169128)){if(_0x169128[_0x7751('0x28')](_0x7751('0x2b'))){if(_0x169128[_0x7751('0x2b')]>0x0){_0x169128[_0x7751('0x2b')]-=0x1;}else{logger['error'](_0x7751('0x2c'),_0x44cabd);}}}else{logger[_0x7751('0x7')](_0x7751('0x2d'),_0x44cabd);}};exports['logBlacklist']=function(_0x4e9b34){var _0x2f1c83=moment()[_0x7751('0x11')]('YYYY-MM-DD\x20HH:mm:ss');_0x4e9b34['state']=0xd;_0x4e9b34[_0x7751('0x2e')]='Blacklist';_0x4e9b34[_0x7751('0x2f')]=_0x2f1c83;_0x4e9b34[_0x7751('0x30')]=_0x2f1c83;_0x4e9b34[_0x7751('0x31')]=_0x2f1c83;};exports[_0x7751('0x32')]=function(_0x2fc605,_0x51e88d,_0x22787e){var _0x1c9581=moment()[_0x7751('0x11')]('YYYY-MM-DD\x20HH:mm:ss');_0x2fc605[_0x7751('0x33')]=_0x51e88d;_0x2fc605[_0x7751('0x2e')]=_0x22787e;_0x2fc605[_0x7751('0x30')]=_0x1c9581;_0x2fc605[_0x7751('0x34')]=utils[_0x7751('0x35')](_0x2fc605[_0x7751('0x30')],_0x2fc605[_0x7751('0x2f')]);};exports[_0x7751('0x36')]=function(_0xbae58c,_0x383dda,_0x236aaa){_0xbae58c[_0x7751('0x37')]=_0x383dda;_0xbae58c[_0x7751('0x38')]=_0x236aaa;};exports[_0x7751('0x39')]=function(_0x1b85cc,_0x427a60,_0x2e6d59){var _0x1376b6=moment()[_0x7751('0x11')]('YYYY-MM-DD\x20HH:mm:ss');_0x1b85cc[_0x7751('0x33')]=_0x427a60;_0x1b85cc[_0x7751('0x2e')]=_0x2e6d59;_0x1b85cc[_0x7751('0x30')]=_0x1b85cc['responsetime']?_0x1b85cc[_0x7751('0x30')]:_0x1376b6;_0x1b85cc[_0x7751('0x31')]=_0x1b85cc[_0x7751('0x31')]?_0x1b85cc['endtime']:_0x1376b6;_0x1b85cc[_0x7751('0x34')]=utils['getSeconds'](_0x1b85cc[_0x7751('0x30')]||0x0,_0x1b85cc[_0x7751('0x2f')]||0x0);_0x1b85cc[_0x7751('0x3a')]=_0x1b85cc[_0x7751('0x3b')]?utils[_0x7751('0x35')](_0x1b85cc['endtime'],_0x1b85cc['answertime']):0x0;};exports[_0x7751('0x3c')]=function(_0x2c1af5){return _0x2c1af5===_0x7751('0x3d');};exports[_0x7751('0x3e')]=function(_0x48c74d,_0x38dd7a,_0x2049c5,_0x2df2db,_0x421da3){var _0x276b36=_0x2df2db?'RECALL':_0x48c74d[_0x7751('0x17')];_0x276b36=_0x421da3?_0x7751('0x3f'):_0x276b36;return{'actionid':_0x48c74d[_0x7751('0x40')],'action':_0x7751('0x41'),'channel':_0x48c74d['channelAgent'],'callerid':util[_0x7751('0x11')](_0x7751('0x12'),_0x276b36,_0x48c74d['calleridnum']),'Exten':_0x7751('0x42'),'Context':'from-sip','Priority':'1','variable':_0x2049c5,'timeout':(_0x38dd7a[_0x7751('0x43')]||0x1e)*0x3e8,'async':!![],'channelid':_0x48c74d[_0x7751('0x40')]};};exports[_0x7751('0x44')]=function(_0x56c90f){return _0x56c90f[_0x7751('0x45')]+_0x56c90f['countcongestionretry']+_0x56c90f[_0x7751('0x46')]+_0x56c90f[_0x7751('0x47')]+_0x56c90f[_0x7751('0x48')];};exports['cloneAction']=function(_0x1f4085){var _0x3fcaa0=_[_0x7751('0x49')](_0x1f4085);_0x3fcaa0['state']=0xf;_0x3fcaa0[_0x7751('0x2e')]='Global';return _0x3fcaa0;};exports['scheduledAt']=function(_0x4210be,_0x240b95,_0xec390a){var _0x55564d={};_0x55564d[_0x240b95]=_0x4210be[_0x240b95];_0x55564d[_0x7751('0x4a')]=![];_0x55564d[_0x7751('0x4b')]=moment()['add'](_0xec390a,'minutes')['format']('YYYY-MM-DD\x20HH:mm:ss');_0x55564d['ContactId']=_0x4210be[_0x7751('0x19')];_0x55564d['ListId']=_0x4210be[_0x7751('0x4c')];_0x55564d[_0x7751('0x1b')]=_0x4210be['VoiceQueueId']||undefined;return _0x55564d;};exports['decrementTalkink']=function(_0x5c5b88,_0x2e249e){if(!_['isNil'](_0x5c5b88)){if(_0x5c5b88[_0x7751('0x4d')]>0x0){_0x5c5b88[_0x7751('0x4d')]-=0x1;}else{logger[_0x7751('0x7')](_0x2e249e,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger[_0x7751('0x7')](_0x2e249e,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports[_0x7751('0x4e')]=function(_0x15aada){if(_0x15aada<=0x0){return!![];}return![];};function buildObj(_0x321de4,_0x113e44,_0x365d12){_0x321de4[_0x7751('0x4f')]=_0x113e44;_0x321de4['name']=_0x321de4[_0x7751('0x50')];_0x321de4['interface']=_0x321de4[_0x7751('0x51')];_0x321de4[_0x7751('0x52')]='voice';if(_0x365d12){_0x321de4[_0x7751('0x53')]=_0x365d12[_0x7751('0x53')];}return _0x321de4;}exports[_0x7751('0x54')]=buildObj;exports[_0x7751('0x55')]=function(_0x40d6ef){var _0x2fac03=[];for(var _0x3660c6 in _0x40d6ef){if(_0x40d6ef[_0x7751('0x28')](_0x3660c6)){if(!_['isNil'](_0x40d6ef[_0x3660c6])&&_0x40d6ef[_0x3660c6][_0x7751('0x33')]===_0x7751('0x56')&&_0x40d6ef[_0x3660c6][_0x7751('0x57')]===_0x7751('0x58')){_0x2fac03[_0x7751('0x59')](_0x40d6ef[_0x3660c6]['id']);}}}return _0x2fac03;};exports['getDiff']=function(_0x3e2785){var _0x594677=moment()[_0x7751('0x5a')](0x0);var _0x81ea21=moment(_0x3e2785)[_0x7751('0x5a')](0x0);return _0x594677[_0x7751('0x5b')](_0x81ea21,_0x7751('0x5c'));};exports['createBody']=function(_0x5513f8){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x5513f8[_0x7751('0x19')],'ListId':_0x5513f8[_0x7751('0x4c')],'VoiceQueueId':_0x5513f8['VoiceQueueId']||undefined,'CampaignId':_0x5513f8[_0x7751('0x5d')]||undefined};};exports[_0x7751('0x5e')]=function(_0x4b0038){if(_0x4b0038===_0x7751('0x40')||_0x4b0038===_0x7751('0x5f')||_0x4b0038==='queue'||_0x4b0038===_0x7751('0x60')||_0x4b0038==='campaigntype'||_0x4b0038===_0x7751('0x61')||_0x4b0038===_0x7751('0x37')||_0x4b0038==='channelAgent'||_0x4b0038===_0x7751('0x17')||_0x4b0038===_0x7751('0x4a')||_0x4b0038==='calleridnum'||_0x4b0038==='scheduledat'||_0x4b0038===_0x7751('0x45')||_0x4b0038===_0x7751('0x62')||_0x4b0038===_0x7751('0x46')||_0x4b0038===_0x7751('0x63')||_0x4b0038===_0x7751('0x64')||_0x4b0038===_0x7751('0x65')||_0x4b0038===_0x7751('0x66')||_0x4b0038===_0x7751('0x67')||_0x4b0038==='ContactId'||_0x4b0038===_0x7751('0x4c')||_0x4b0038===_0x7751('0x38')||_0x4b0038===_0x7751('0x1b')||_0x4b0038===_0x7751('0x68')||_0x4b0038===_0x7751('0x69')||_0x4b0038===_0x7751('0x6a')||_0x4b0038==='xmd-phone'||_0x4b0038===_0x7751('0x6b')||_0x4b0038===_0x7751('0x6c')||_0x4b0038===_0x7751('0x6d')||_0x4b0038===_0x7751('0x6e')||_0x4b0038===_0x7751('0x6f')||_0x4b0038===_0x7751('0x70')||_0x4b0038===_0x7751('0x71')||_0x4b0038===_0x7751('0x72')||_0x4b0038===_0x7751('0x73')||_0x4b0038===_0x7751('0x74')||_0x4b0038==='xmd-agi'||_0x4b0038==='rtpaudioqos'||_0x4b0038===_0x7751('0x75')||_0x4b0038===_0x7751('0x76')||_0x4b0038===_0x7751('0x77')||_0x4b0038===_0x7751('0x78')||_0x4b0038===_0x7751('0x79')||_0x4b0038===_0x7751('0x7a')||_0x4b0038==='rtpaudioqosrttbridged'||_0x4b0038==='rtpaudioqos'||_0x4b0038==='rtpaudioqosbridged'||_0x4b0038==='rtpaudioqosjitter'||_0x4b0038===_0x7751('0x77')||_0x4b0038===_0x7751('0x78')||_0x4b0038===_0x7751('0x79')||_0x4b0038===_0x7751('0x7a')||_0x4b0038===_0x7751('0x7b')||_0x4b0038===_0x7751('0x7c')||_0x4b0038==='bridgepvtcallid'||_0x4b0038===_0x7751('0x33')||_0x4b0038===_0x7751('0x2e')){return![];}return!![];};exports[_0x7751('0x7d')]=function(_0x8bd332,_0x38bebd){var _0x3f7ad3,_0x47f106,_0x8a590b;if(_0x38bebd<=0x0){_0x38bebd=0x1;}_0x3f7ad3=new RegExp(_0x7751('0x7e')+_0x38bebd+'}$');_0x47f106=Math[_0x7751('0x7f')](0xa,_0x38bebd-0x1);_0x8a590b=Math[_0x7751('0x7f')](0xa,_0x38bebd)-0x1;return util[_0x7751('0x11')]('%s',_[_0x7751('0x80')](_0x8bd332,_0x3f7ad3,_['random'](_0x47f106,_0x8a590b)));};exports[_0x7751('0x81')]=function(_0x43adbc){var _0x1d898f=_0x43adbc['match'](/"(.*?)"/);return _0x1d898f?_0x1d898f[0x1]:_0x43adbc;};exports[_0x7751('0x82')]=function(_0x5304a5){var _0x5ba3ab=_0x5304a5[_0x7751('0x83')](/<(.*?)>/);return _0x5ba3ab?_0x5ba3ab[0x1]:_0x5304a5;};function buildNoAnswerEventPayload(_0x55ef9b,_0xcb96c6){var _0x438388=buildObj(_0x55ef9b,'noanswer');if(!_[_0x7751('0x10')](_0xcb96c6[_0x7751('0x84')])){Object[_0x7751('0x85')](_0xcb96c6[_0x7751('0x84')])[_0x7751('0x86')](function(_0x1d8f40){_0x438388[_0x1d8f40['toLowerCase']()]=_0xcb96c6[_0x7751('0x84')][_0x1d8f40];});}return _0x438388;}exports[_0x7751('0x87')]=buildNoAnswerEventPayload;
\ No newline at end of file
index e51eb99..e9ea649 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaab4=['queueadd','number','boolean','string','queuepause','reload','voicequeuechannel','voicechannel','voicequeuechannelredirect'];(function(_0x5141e0,_0x200c21){var _0x14e855=function(_0x5b53ec){while(--_0x5b53ec){_0x5141e0['push'](_0x5141e0['shift']());}};_0x14e855(++_0x200c21);}(_0xaab4,0x75));var _0x4aab=function(_0x25521f,_0x5f5100){_0x25521f=_0x25521f-0x0;var _0x38a12d=_0xaab4[_0x25521f];return _0x38a12d;};'use strict';exports[_0x4aab('0x0')]={'queue':{'type':'string','required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':_0x4aab('0x1'),'required':![]},'paused':{'type':_0x4aab('0x2'),'required':![]}};exports['queueremove']={'queue':{'type':_0x4aab('0x3'),'required':!![]},'interface':{'type':'string','required':!![]}};exports[_0x4aab('0x4')]={'interface':{'type':_0x4aab('0x3'),'required':!![]},'paused':{'type':_0x4aab('0x2')},'reason':{'type':_0x4aab('0x3'),'required':![]}};exports[_0x4aab('0x5')]={'module':{'type':_0x4aab('0x3'),'required':![]}};exports[_0x4aab('0x6')]={'uniqueid':{'type':_0x4aab('0x3'),'required':!![]}};exports[_0x4aab('0x7')]={'uniqueid':{'type':_0x4aab('0x3'),'required':!![]},'filename':{'type':_0x4aab('0x3')},'format':{'type':'string'},'mixmonitorid':{'type':_0x4aab('0x3')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':'string','required':!![]}};exports[_0x4aab('0x8')]={'uniqueid':{'type':_0x4aab('0x3'),'required':!![]},'exten':{'type':_0x4aab('0x3'),'required':!![]},'context':{'type':_0x4aab('0x3')}};
\ No newline at end of file
+var _0xf4a5=['boolean','queueremove','reload','voicechannel','voicequeuechannelhangup','string','number'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0xf4a5,0xd0));var _0x5f4a=function(_0xa3400,_0x3a980a){_0xa3400=_0xa3400-0x0;var _0x33dba2=_0xf4a5[_0xa3400];return _0x33dba2;};'use strict';exports['queueadd']={'queue':{'type':'string','required':!![]},'interface':{'type':_0x5f4a('0x0'),'required':!![]},'membername':{'type':_0x5f4a('0x0'),'required':!![]},'penalty':{'type':_0x5f4a('0x1'),'required':![]},'paused':{'type':_0x5f4a('0x2'),'required':![]}};exports[_0x5f4a('0x3')]={'queue':{'type':_0x5f4a('0x0'),'required':!![]},'interface':{'type':_0x5f4a('0x0'),'required':!![]}};exports['queuepause']={'interface':{'type':_0x5f4a('0x0'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':_0x5f4a('0x0'),'required':![]}};exports[_0x5f4a('0x4')]={'module':{'type':'string','required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0x5f4a('0x0'),'required':!![]}};exports[_0x5f4a('0x5')]={'uniqueid':{'type':_0x5f4a('0x0'),'required':!![]},'filename':{'type':'string'},'format':{'type':_0x5f4a('0x0')},'mixmonitorid':{'type':_0x5f4a('0x0')}};exports[_0x5f4a('0x6')]={'uniqueid':{'type':'string','required':!![]}};exports['voicequeuechannelredirect']={'uniqueid':{'type':_0x5f4a('0x0'),'required':!![]},'exten':{'type':_0x5f4a('0x0'),'required':!![]},'context':{'type':'string'}};
\ No newline at end of file
index 8026b4c..0537962 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['initTriggers','triggers','initTemplates','initZendeskAccounts','zendeskAccounts','initFreshdeskAccounts','initZohoAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','initDynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','groupBy','uniqueid','queuecallerexit','queuecallerabandon','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','diff','queuecallercomplete','queuecallerleaveAt','initVoiceCallReports','outbound','duration','disposition','ANSWERED','billableseconds','initCampaigns','dialQueueProject','SquareProject','initVoiceExtensions','initCampaignHopperHistory','initVoiceQueues','exports','lodash','moment','util','../model/agent','../model/trunk','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/zendeskAccount','../model/salesforceAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','telephones','trunks','voiceQueues','campaigns','templates','voiceExtensions','channels','queueChannels','outboundChannels','timers','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','faxAccounts','mapKeys','hasOwnProperty','format','SIP/%s','name','isNil','interface','sumDuration','sumBillable','isEmpty','ivrAnswerCallsDay','total','answered','unmanaged','abandoned','sumHoldTime','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundCongestionCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','initAgents','agents','length','isUndefined','mergeFromDatabase','initTelephones','initTrunks'];(function(_0x4e62c5,_0x4a4406){var _0x5e6d1d=function(_0x17e6ea){while(--_0x17e6ea){_0x4e62c5['push'](_0x4e62c5['shift']());}};_0x5e6d1d(++_0x4a4406);}(_0xdb28,0x106));var _0x8db2=function(_0x45e03c,_0x58c388){_0x45e03c=_0x45e03c-0x0;var _0x30eb78=_0xdb28[_0x45e03c];return _0x30eb78;};'use strict';var _=require(_0x8db2('0x0'));var moment=require(_0x8db2('0x1'));var util=require(_0x8db2('0x2'));var Agent=require(_0x8db2('0x3'));var Telephone=require('../model/telephone');var Trunk=require(_0x8db2('0x4'));var VoiceQueue=require(_0x8db2('0x5'));var Trigger=require(_0x8db2('0x6'));var Template=require(_0x8db2('0x7'));var Campaign=require(_0x8db2('0x8'));var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require(_0x8db2('0x9'));var SalesforceAccount=require(_0x8db2('0xa'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x8db2('0xb'));var DeskAccount=require(_0x8db2('0xc'));var VtigerAccount=require(_0x8db2('0xd'));var ServicenowAccount=require(_0x8db2('0xe'));var Dynamics365Account=require(_0x8db2('0xf'));var FreshsalesAccount=require(_0x8db2('0x10'));var FaxAccount=require(_0x8db2('0x11'));function Realtime(){this['agents']={};this[_0x8db2('0x12')]={};this[_0x8db2('0x13')]={};this[_0x8db2('0x14')]={};this['triggers']={};this[_0x8db2('0x15')]={};this[_0x8db2('0x16')]={};this['outbound']={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x8db2('0x17')]={};this[_0x8db2('0x18')]={};this[_0x8db2('0x19')]={};this[_0x8db2('0x1a')]={};this[_0x8db2('0x1b')]={};this['settings']={};this['zendeskAccounts']={};this[_0x8db2('0x1c')]={};this[_0x8db2('0x1d')]={};this[_0x8db2('0x1e')]={};this[_0x8db2('0x1f')]={};this[_0x8db2('0x20')]={};this[_0x8db2('0x21')]={};this[_0x8db2('0x22')]={};this[_0x8db2('0x23')]={};this[_0x8db2('0x24')]={};this[_0x8db2('0x25')]={};}function freeIsNotKey(_0x5489a9,_0x13b0f5,_0x24da1b){var _0x48101e=_[_0x8db2('0x26')](_0x5489a9,function(_0x44957d){return _0x44957d[_0x24da1b];});for(var _0x21db8c in _0x13b0f5){if(_0x13b0f5[_0x8db2('0x27')](_0x21db8c)){if(!_0x48101e[_0x21db8c]){delete _0x13b0f5[_0x21db8c];}}}}function freeIsNotKeySip(_0x2efd06,_0x46ce14){var _0x51d60d=_['mapKeys'](_0x2efd06,function(_0x77789){return util[_0x8db2('0x28')](_0x8db2('0x29'),_0x77789[_0x8db2('0x2a')]);});for(var _0x58562e in _0x46ce14){if(_0x46ce14[_0x8db2('0x27')](_0x58562e)){if(!_0x51d60d[_0x58562e]){delete _0x46ce14[_0x58562e];}}}}function freeIsNotKeyAgent(_0x36a9ff,_0x260940){var _0x297ba3=_[_0x8db2('0x26')](_0x36a9ff,function(_0x597260){var _0x124467=_[_0x8db2('0x2b')](_0x597260[_0x8db2('0x2c')])?util[_0x8db2('0x28')](_0x8db2('0x29'),_0x597260[_0x8db2('0x2a')]):_0x597260[_0x8db2('0x2c')];return _0x124467;});for(var _0x5c6614 in _0x260940){if(_0x260940[_0x8db2('0x27')](_0x5c6614)){if(!_0x297ba3[_0x5c6614]){delete _0x260940[_0x5c6614];}}}}function clearVoiceCallReports(_0x4f6516){_0x4f6516['total']=0x0;_0x4f6516['answered']=0x0;_0x4f6516['sumHoldTime']=0x0;_0x4f6516[_0x8db2('0x2d')]=0x0;_0x4f6516[_0x8db2('0x2e')]=0x0;}function clearCampaigns(_0x3be281){if(!_[_0x8db2('0x2f')](_0x3be281)){for(var _0x145328 in _0x3be281){if(_0x3be281[_0x8db2('0x27')](_0x145328)){_0x3be281[_0x145328]['ivrTotalCallsDays']=0x0;_0x3be281[_0x145328][_0x8db2('0x30')]=0x0;}}}}function clearVoiceQueues(_0x372311){if(!_[_0x8db2('0x2f')](_0x372311)){for(var _0x8b7cec in _0x372311){if(_0x372311['hasOwnProperty'](_0x8b7cec)){_0x372311[_0x8b7cec][_0x8db2('0x31')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x32')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x33')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x34')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x35')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x2d')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x2e')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x36')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x37')]=0x0;_0x372311[_0x8b7cec]['outboundBusyCallsDay']=0x0;_0x372311[_0x8b7cec][_0x8db2('0x38')]=0x0;_0x372311[_0x8b7cec]['outboundNoSuchCallsDay']=0x0;_0x372311[_0x8b7cec]['outboundUnknownCallsDay']=0x0;_0x372311[_0x8b7cec][_0x8db2('0x39')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x3a')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x3b')]=0x0;_0x372311[_0x8b7cec]['outboundOriginateFailureCallsDay']=0x0;_0x372311[_0x8b7cec][_0x8db2('0x3c')]=0x0;_0x372311[_0x8b7cec]['outboundReCallsDay']=0x0;_0x372311[_0x8b7cec][_0x8db2('0x36')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x3d')]=0x0;_0x372311[_0x8b7cec][_0x8db2('0x3e')]=!![];}}}}Realtime['prototype']['mergeFromDatabase']=function(_0x35d337,_0x1a460b){for(var _0x4df530 in _0x1a460b){if(_0x35d337['hasOwnProperty'](_0x4df530)){_0x35d337[_0x4df530]=_0x1a460b[_0x4df530];}}};Realtime[_0x8db2('0x3f')][_0x8db2('0x40')]=function(){var _0xc884a=this;return function(_0x2a2d65){if(_0x2a2d65){freeIsNotKeyAgent(_0x2a2d65,_0xc884a[_0x8db2('0x41')]);for(var _0xd39848=0x0,_0x101711={};_0xd39848<_0x2a2d65[_0x8db2('0x42')];_0xd39848+=0x1){_0x101711=_0x2a2d65[_0xd39848];var _0x46e0c8=_[_0x8db2('0x2b')](_0x101711['interface'])?util[_0x8db2('0x28')](_0x8db2('0x29'),_0x101711['name']):_0x101711[_0x8db2('0x2c')];if(_[_0x8db2('0x43')](_0xc884a['agents'][_0x46e0c8])){_0xc884a['agents'][_0x46e0c8]=new Agent(_0x101711);}else{_0xc884a[_0x8db2('0x44')](_0xc884a['agents'][_0x46e0c8],_0x101711);}}}return _0xc884a[_0x8db2('0x41')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x45')]=function(){var _0x22c896=this;return function(_0x5cc419){if(_0x5cc419){freeIsNotKeySip(_0x5cc419,_0x22c896[_0x8db2('0x12')]);for(var _0x5e34e0=0x0,_0x227a08={};_0x5e34e0<_0x5cc419[_0x8db2('0x42')];_0x5e34e0+=0x1){_0x227a08=_0x5cc419[_0x5e34e0];if(_[_0x8db2('0x43')](_0x22c896[_0x8db2('0x12')][util['format']('SIP/%s',_0x227a08[_0x8db2('0x2a')])])){_0x22c896[_0x8db2('0x12')][util['format'](_0x8db2('0x29'),_0x227a08[_0x8db2('0x2a')])]=new Telephone(_0x227a08);}else{_0x22c896[_0x8db2('0x44')](_0x22c896['telephones'][util[_0x8db2('0x28')](_0x8db2('0x29'),_0x227a08[_0x8db2('0x2a')])],_0x227a08);}}}return _0x22c896[_0x8db2('0x12')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x46')]=function(){var _0x380046=this;return function(_0x1575ea){if(_0x1575ea){freeIsNotKeySip(_0x1575ea,_0x380046[_0x8db2('0x13')]);for(var _0x63c561=0x0,_0x21cf7c={};_0x63c561<_0x1575ea[_0x8db2('0x42')];_0x63c561+=0x1){_0x21cf7c=_0x1575ea[_0x63c561];if(_[_0x8db2('0x43')](_0x380046['trunks'][util[_0x8db2('0x28')](_0x8db2('0x29'),_0x21cf7c['name'])])){_0x380046['trunks'][util[_0x8db2('0x28')]('SIP/%s',_0x21cf7c[_0x8db2('0x2a')])]=new Trunk(_0x21cf7c);}else{_0x380046[_0x8db2('0x44')](_0x380046[_0x8db2('0x13')][util[_0x8db2('0x28')](_0x8db2('0x29'),_0x21cf7c[_0x8db2('0x2a')])],_0x21cf7c);}}}return _0x380046[_0x8db2('0x13')];};};Realtime['prototype'][_0x8db2('0x47')]=function(){var _0x3d44de=this;return function(_0x40c69e){if(_0x40c69e){freeIsNotKey(_0x40c69e,_0x3d44de[_0x8db2('0x48')],'id');for(var _0x482b26=0x0,_0x424c27={};_0x482b26<_0x40c69e[_0x8db2('0x42')];_0x482b26+=0x1){_0x424c27=_0x40c69e[_0x482b26];if(_[_0x8db2('0x43')](_0x3d44de[_0x8db2('0x48')][_0x424c27['id']])){_0x3d44de['triggers'][_0x424c27['id']]=new Trigger(_0x424c27);}else{_0x3d44de[_0x8db2('0x44')](_0x3d44de['triggers'][_0x424c27['id']],_0x424c27);}}}return _0x3d44de[_0x8db2('0x48')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x49')]=function(){var _0x4d2164=this;return function(_0x4b0e72){if(_0x4b0e72){freeIsNotKey(_0x4b0e72,_0x4d2164[_0x8db2('0x16')],'id');for(var _0x47c556=0x0,_0x173cc7={};_0x47c556<_0x4b0e72[_0x8db2('0x42')];_0x47c556+=0x1){_0x173cc7=_0x4b0e72[_0x47c556];if(_[_0x8db2('0x43')](_0x4d2164[_0x8db2('0x16')][_0x173cc7['id']])){_0x4d2164[_0x8db2('0x16')][_0x173cc7['id']]=new Template(_0x173cc7);}else{_0x4d2164[_0x8db2('0x44')](_0x4d2164[_0x8db2('0x16')][_0x173cc7['id']],_0x173cc7);}}}return _0x4d2164[_0x8db2('0x16')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x4a')]=function(){var _0x1362ed=this;return function(_0x36f9d6){if(_0x36f9d6){freeIsNotKey(_0x36f9d6,_0x1362ed['zendeskAccounts'],'id');for(var _0x449109=0x0,_0x2ada52={};_0x449109<_0x36f9d6[_0x8db2('0x42')];_0x449109+=0x1){_0x2ada52=_0x36f9d6[_0x449109];if(_[_0x8db2('0x43')](_0x1362ed['zendeskAccounts'][_0x2ada52['id']])){_0x1362ed['zendeskAccounts'][_0x2ada52['id']]=new ZendeskAccount(_0x2ada52);}else{_0x1362ed[_0x8db2('0x44')](_0x1362ed[_0x8db2('0x4b')][_0x2ada52['id']],_0x2ada52);}}}return _0x1362ed[_0x8db2('0x4b')];};};Realtime['prototype']['initSalesforceAccounts']=function(){var _0x494d6e=this;return function(_0x44ac56){if(_0x44ac56){freeIsNotKey(_0x44ac56,_0x494d6e[_0x8db2('0x1c')],'id');for(var _0x55c7dd=0x0,_0x383fa1={};_0x55c7dd<_0x44ac56[_0x8db2('0x42')];_0x55c7dd+=0x1){_0x383fa1=_0x44ac56[_0x55c7dd];if(_[_0x8db2('0x43')](_0x494d6e[_0x8db2('0x1c')][_0x383fa1['id']])){_0x494d6e['salesforceAccounts'][_0x383fa1['id']]=new SalesforceAccount(_0x383fa1);}else{_0x494d6e['mergeFromDatabase'](_0x494d6e[_0x8db2('0x1c')][_0x383fa1['id']],_0x383fa1);}}}return _0x494d6e[_0x8db2('0x1c')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x4c')]=function(){var _0x3daed6=this;return function(_0x2bf408){if(_0x2bf408){freeIsNotKey(_0x2bf408,_0x3daed6[_0x8db2('0x1e')],'id');for(var _0x3ca2a7=0x0,_0x4187d6={};_0x3ca2a7<_0x2bf408[_0x8db2('0x42')];_0x3ca2a7+=0x1){_0x4187d6=_0x2bf408[_0x3ca2a7];if(_[_0x8db2('0x43')](_0x3daed6[_0x8db2('0x1e')][_0x4187d6['id']])){_0x3daed6[_0x8db2('0x1e')][_0x4187d6['id']]=new FreshdeskAccount(_0x4187d6);}else{_0x3daed6[_0x8db2('0x44')](_0x3daed6[_0x8db2('0x1e')][_0x4187d6['id']],_0x4187d6);}}}return _0x3daed6['freshdeskAccounts'];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x4d')]=function(){var _0x579317=this;return function(_0x27b644){if(_0x27b644){freeIsNotKey(_0x27b644,_0x579317[_0x8db2('0x1f')],'id');for(var _0x3af298=0x0,_0x547215={};_0x3af298<_0x27b644[_0x8db2('0x42')];_0x3af298+=0x1){_0x547215=_0x27b644[_0x3af298];if(_[_0x8db2('0x43')](_0x579317[_0x8db2('0x1f')][_0x547215['id']])){_0x579317[_0x8db2('0x1f')][_0x547215['id']]=new ZohoAccount(_0x547215);}else{_0x579317[_0x8db2('0x44')](_0x579317['zohoAccounts'][_0x547215['id']],_0x547215);}}}return _0x579317[_0x8db2('0x1f')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x4e')]=function(){var _0x58bb60=this;return function(_0x1e7d1a){if(_0x1e7d1a){freeIsNotKey(_0x1e7d1a,_0x58bb60[_0x8db2('0x20')],'id');for(var _0x33dddd=0x0,_0x7b0de8={};_0x33dddd<_0x1e7d1a[_0x8db2('0x42')];_0x33dddd+=0x1){_0x7b0de8=_0x1e7d1a[_0x33dddd];if(_[_0x8db2('0x43')](_0x58bb60[_0x8db2('0x20')][_0x7b0de8['id']])){_0x58bb60['deskAccounts'][_0x7b0de8['id']]=new DeskAccount(_0x7b0de8);}else{_0x58bb60[_0x8db2('0x44')](_0x58bb60[_0x8db2('0x20')][_0x7b0de8['id']],_0x7b0de8);}}}return _0x58bb60['deskAccounts'];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x4f')]=function(){var _0x533e41=this;return function(_0x107bbe){if(_0x107bbe){freeIsNotKey(_0x107bbe,_0x533e41[_0x8db2('0x1d')],'id');for(var _0x63e8f7=0x0,_0x30f4f3={};_0x63e8f7<_0x107bbe[_0x8db2('0x42')];_0x63e8f7+=0x1){_0x30f4f3=_0x107bbe[_0x63e8f7];if(_[_0x8db2('0x43')](_0x533e41[_0x8db2('0x1d')][_0x30f4f3['id']])){_0x533e41[_0x8db2('0x1d')][_0x30f4f3['id']]=new SugarcrmAccount(_0x30f4f3);}else{_0x533e41[_0x8db2('0x44')](_0x533e41[_0x8db2('0x1d')][_0x30f4f3['id']],_0x30f4f3);}}}return _0x533e41[_0x8db2('0x1d')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x50')]=function(){var _0x1ce89f=this;return function(_0x64ec90){if(_0x64ec90){freeIsNotKey(_0x64ec90,_0x1ce89f[_0x8db2('0x21')],'id');for(var _0x4a20a7=0x0,_0xe0c3e={};_0x4a20a7<_0x64ec90[_0x8db2('0x42')];_0x4a20a7+=0x1){_0xe0c3e=_0x64ec90[_0x4a20a7];if(_[_0x8db2('0x43')](_0x1ce89f[_0x8db2('0x21')][_0xe0c3e['id']])){_0x1ce89f[_0x8db2('0x21')][_0xe0c3e['id']]=new VtigerAccount(_0xe0c3e);}else{_0x1ce89f['mergeFromDatabase'](_0x1ce89f[_0x8db2('0x21')][_0xe0c3e['id']],_0xe0c3e);}}}return _0x1ce89f[_0x8db2('0x21')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x51')]=function(){var _0x2ad70f=this;return function(_0x348da8){if(_0x348da8){freeIsNotKey(_0x348da8,_0x2ad70f[_0x8db2('0x22')],'id');for(var _0x2c7b04=0x0,_0x24cfe9={};_0x2c7b04<_0x348da8[_0x8db2('0x42')];_0x2c7b04+=0x1){_0x24cfe9=_0x348da8[_0x2c7b04];if(_[_0x8db2('0x43')](_0x2ad70f[_0x8db2('0x22')][_0x24cfe9['id']])){_0x2ad70f[_0x8db2('0x22')][_0x24cfe9['id']]=new ServicenowAccount(_0x24cfe9);}else{_0x2ad70f[_0x8db2('0x44')](_0x2ad70f[_0x8db2('0x22')][_0x24cfe9['id']],_0x24cfe9);}}}return _0x2ad70f[_0x8db2('0x22')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x52')]=function(){var _0x5a719f=this;return function(_0x3273dd){if(_0x3273dd){freeIsNotKey(_0x3273dd,_0x5a719f['dynamics365Accounts'],'id');for(var _0x364176=0x0,_0x570c53={};_0x364176<_0x3273dd[_0x8db2('0x42')];_0x364176+=0x1){_0x570c53=_0x3273dd[_0x364176];if(_[_0x8db2('0x43')](_0x5a719f[_0x8db2('0x23')][_0x570c53['id']])){_0x5a719f[_0x8db2('0x23')][_0x570c53['id']]=new Dynamics365Account(_0x570c53);}else{_0x5a719f[_0x8db2('0x44')](_0x5a719f['dynamics365Accounts'][_0x570c53['id']],_0x570c53);}}}return _0x5a719f['dynamics365Accounts'];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x53')]=function(){var _0x21ec87=this;return function(_0x3ba1d2){if(_0x3ba1d2){freeIsNotKey(_0x3ba1d2,_0x21ec87[_0x8db2('0x24')],'id');for(var _0x1f28d2=0x0,_0x3e3de3={};_0x1f28d2<_0x3ba1d2[_0x8db2('0x42')];_0x1f28d2+=0x1){_0x3e3de3=_0x3ba1d2[_0x1f28d2];if(_['isUndefined'](_0x21ec87[_0x8db2('0x24')][_0x3e3de3['id']])){_0x21ec87[_0x8db2('0x24')][_0x3e3de3['id']]=new FreshsalesAccount(_0x3e3de3);}else{_0x21ec87[_0x8db2('0x44')](_0x21ec87[_0x8db2('0x24')][_0x3e3de3['id']],_0x3e3de3);}}}return _0x21ec87[_0x8db2('0x24')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x54')]=function(){var _0x20caf0=this;return function(_0x4938bb){for(var _0x54318c=0x0;_0x54318c<_0x4938bb[_0x8db2('0x42')];_0x54318c+=0x1){_[_0x8db2('0x55')](_0x20caf0[_0x8db2('0x14')][_0x4938bb[_0x54318c][_0x8db2('0x2a')]],_0x4938bb[_0x54318c]);}return _0x20caf0[_0x8db2('0x14')];};};Realtime['prototype']['initVoiceQueueReports']=function(){var _0x3611da=this;return function(_0x364807){clearVoiceQueues(_0x3611da['voiceQueues']);if(_0x364807){_0x364807=_[_0x8db2('0x56')](_0x364807,_0x8db2('0x57'));for(var _0x1ab84c in _0x364807){if(_0x364807['hasOwnProperty'](_0x1ab84c)){for(var _0x26523b=0x0;_0x26523b<_0x364807[_0x1ab84c][_0x8db2('0x42')];_0x26523b+=0x1){var _0x2cf731=_0x364807[_0x1ab84c][_0x26523b]['queue'];if(_0x3611da[_0x8db2('0x14')][_0x2cf731]){if(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x58')]){_0x3611da[_0x8db2('0x14')][_0x2cf731][_0x8db2('0x33')]+=0x1;}if(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x59')]){_0x3611da['voiceQueues'][_0x2cf731][_0x8db2('0x34')]+=0x1;}_0x3611da[_0x8db2('0x14')][_0x2cf731][_0x8db2('0x35')]+=moment(_0x364807[_0x1ab84c][_0x26523b]['queuecallerleaveAt'])['diff'](moment(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x5a')]),_0x8db2('0x5b'))||0x0;if(_0x26523b===_0x364807[_0x1ab84c]['length']-0x1){_0x3611da[_0x8db2('0x14')][_0x2cf731][_0x8db2('0x2d')]+=moment(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x5c')]||_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x5d')]||_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x5e')])[_0x8db2('0x5f')](moment(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x5a')]),_0x8db2('0x5b'))||0x0;_0x3611da[_0x8db2('0x14')][_0x2cf731][_0x8db2('0x31')]+=0x1;if(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x60')]){_0x3611da[_0x8db2('0x14')][_0x2cf731][_0x8db2('0x32')]+=0x1;_0x3611da['voiceQueues'][_0x2cf731][_0x8db2('0x2e')]+=moment(_0x364807[_0x1ab84c][_0x26523b]['queuecallercompleteAt'])[_0x8db2('0x5f')](moment(_0x364807[_0x1ab84c][_0x26523b][_0x8db2('0x61')]),'seconds')||0x0;}}else{_0x3611da[_0x8db2('0x14')][_0x2cf731][_0x8db2('0x2d')]+=_0x3611da['voiceQueues'][_0x2cf731][_0x8db2('0x35')]||0x0;}}}}}}return _0x3611da[_0x8db2('0x14')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x62')]=function(){var _0x242379=this;return function(_0x31a095){clearVoiceCallReports(_0x242379[_0x8db2('0x63')]);if(_0x31a095){for(var _0x3ac0fa=0x0;_0x3ac0fa<_0x31a095[_0x8db2('0x42')];_0x3ac0fa+=0x1){_0x242379['outbound']['total']+=0x1;_0x242379[_0x8db2('0x63')]['sumDuration']+=_0x31a095[_0x3ac0fa][_0x8db2('0x64')];if(_0x31a095[_0x3ac0fa][_0x8db2('0x65')]===_0x8db2('0x66')){_0x242379['outbound'][_0x8db2('0x32')]+=0x1;_0x242379[_0x8db2('0x63')][_0x8db2('0x35')]+=_0x31a095[_0x3ac0fa]['duration']-_0x31a095[_0x3ac0fa][_0x8db2('0x67')]||0x0;_0x242379[_0x8db2('0x63')][_0x8db2('0x2e')]+=_0x31a095[_0x3ac0fa][_0x8db2('0x67')];}}}return _0x242379['outbound'];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x68')]=function(){var _0x299640=this;return function(_0x1edb1a){if(_0x1edb1a){freeIsNotKey(_0x1edb1a,_0x299640[_0x8db2('0x15')],_0x8db2('0x2a'));for(var _0x1aadfb=0x0,_0x3682bf={};_0x1aadfb<_0x1edb1a[_0x8db2('0x42')];_0x1aadfb+=0x1){_0x3682bf=_0x1edb1a[_0x1aadfb];if(_[_0x8db2('0x43')](_0x299640[_0x8db2('0x15')][_0x3682bf['name']])){_0x299640[_0x8db2('0x15')][_0x3682bf[_0x8db2('0x2a')]]=new Campaign(_0x3682bf);}else{_0x299640[_0x8db2('0x44')](_0x299640['campaigns'][_0x3682bf['name']],_0x3682bf);_0x299640['campaigns'][_0x3682bf[_0x8db2('0x2a')]][_0x8db2('0x69')]=_0x3682bf[_0x8db2('0x6a')]?_0x3682bf[_0x8db2('0x6a')][_0x8db2('0x2a')]:undefined;}}}return _0x299640[_0x8db2('0x15')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x6b')]=function(){var _0x3b1929=this;return function(_0x37cf6d){if(_0x37cf6d){freeIsNotKey(_0x37cf6d,_0x3b1929[_0x8db2('0x17')],'id');for(var _0x4d0ff6=0x0,_0x360a06={};_0x4d0ff6<_0x37cf6d[_0x8db2('0x42')];_0x4d0ff6+=0x1){_0x360a06=_0x37cf6d[_0x4d0ff6];if(_[_0x8db2('0x43')](_0x3b1929[_0x8db2('0x17')][_0x360a06['id']])){_0x3b1929['voiceExtensions'][_0x360a06['id']]=new VoiceExtension(_0x360a06);}else{_0x3b1929['mergeFromDatabase'](_0x3b1929[_0x8db2('0x17')][_0x360a06['id']],_0x360a06);}}}return _0x3b1929[_0x8db2('0x17')];};};Realtime['prototype'][_0x8db2('0x6c')]=function(){var _0x121f31=this;return function(_0x9132b4){clearCampaigns(_0x121f31['campaigns']);for(var _0x5dc46c=0x0;_0x5dc46c<_0x9132b4['length'];_0x5dc46c+=0x1){_[_0x8db2('0x55')](_0x121f31[_0x8db2('0x15')][_0x9132b4[_0x5dc46c][_0x8db2('0x2a')]],_0x9132b4[_0x5dc46c]);}return _0x121f31[_0x8db2('0x15')];};};Realtime[_0x8db2('0x3f')]['initFaxAccounts']=function(){var _0x30930a=this;return function(_0x5e349c){if(_0x5e349c){freeIsNotKey(_0x5e349c,_0x30930a[_0x8db2('0x25')],'id');for(var _0x353101=0x0,_0xa083b1={};_0x353101<_0x5e349c[_0x8db2('0x42')];_0x353101+=0x1){_0xa083b1=_0x5e349c[_0x353101];if(_[_0x8db2('0x43')](_0x30930a['faxAccounts'][_0xa083b1['id']])){_0x30930a['faxAccounts'][_0xa083b1['id']]=new FaxAccount(_0xa083b1);}else{_0x30930a[_0x8db2('0x44')](_0x30930a['faxAccounts'][_0xa083b1['id']],_0xa083b1);}}}return _0x30930a[_0x8db2('0x25')];};};Realtime[_0x8db2('0x3f')][_0x8db2('0x6d')]=function(){var _0x1e7bc2=this;return function(_0x2b7224){if(_0x2b7224){freeIsNotKey(_0x2b7224,_0x1e7bc2[_0x8db2('0x14')],'name');for(var _0x19f9a0=0x0,_0x222ea2={};_0x19f9a0<_0x2b7224[_0x8db2('0x42')];_0x19f9a0+=0x1){_0x222ea2=_0x2b7224[_0x19f9a0];if(_['isUndefined'](_0x1e7bc2[_0x8db2('0x14')][_0x222ea2[_0x8db2('0x2a')]])){_0x1e7bc2['voiceQueues'][_0x222ea2[_0x8db2('0x2a')]]=new VoiceQueue(_0x222ea2);}else{_0x1e7bc2[_0x8db2('0x44')](_0x1e7bc2[_0x8db2('0x14')][_0x222ea2[_0x8db2('0x2a')]],_0x222ea2);}}}return _0x1e7bc2[_0x8db2('0x14')];};};module[_0x8db2('0x6e')]=Realtime;
\ No newline at end of file
+var _0xadb5=['ivrTotalCallsDays','ivrAnswerCallsDay','unmanaged','sumBillable','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','mergeFromDatabase','prototype','initAgents','initTelephones','length','isUndefined','triggers','initTemplates','initZendeskAccounts','initSalesforceAccounts','initFreshdeskAccounts','initDeskAccounts','initSugarcrmAccounts','sugarcrmAccounts','initVtigerAccounts','vtigerAccounts','initServicenowAccounts','dynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','voiceQueues','groupBy','uniqueid','queue','queuecallerexit','queuecallerabandon','abandoned','queuecallerleaveAt','diff','seconds','queuecallerabandonAt','queuecallerexitAt','queuecallerjoinAt','queuecallercomplete','queuecallercompleteAt','duration','ANSWERED','billableseconds','initCampaigns','dialQueueProject','initVoiceExtensions','voiceExtensions','initCampaignHopperHistory','initFaxAccounts','moment','../model/agent','../model/telephone','../model/trunk','../model/trigger','../model/template','../model/campaign','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','../model/faxAccount','agents','telephones','trunks','campaigns','templates','outbound','channels','outboundChannels','settings','zendeskAccounts','salesforceAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','servicenowAccounts','freshsalesAccounts','faxAccounts','mapKeys','name','hasOwnProperty','isNil','interface','format','SIP/%s','total','answered','sumHoldTime','sumDuration','isEmpty'];(function(_0x51fff0,_0x4a09aa){var _0x35f18e=function(_0xb972d3){while(--_0xb972d3){_0x51fff0['push'](_0x51fff0['shift']());}};_0x35f18e(++_0x4a09aa);}(_0xadb5,0xad));var _0x5adb=function(_0x478bd1,_0xead432){_0x478bd1=_0x478bd1-0x0;var _0x310a68=_0xadb5[_0x478bd1];return _0x310a68;};'use strict';var _=require('lodash');var moment=require(_0x5adb('0x0'));var util=require('util');var Agent=require(_0x5adb('0x1'));var Telephone=require(_0x5adb('0x2'));var Trunk=require(_0x5adb('0x3'));var VoiceQueue=require('../model/voiceQueue');var Trigger=require(_0x5adb('0x4'));var Template=require(_0x5adb('0x5'));var Campaign=require(_0x5adb('0x6'));var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require(_0x5adb('0x7'));var SalesforceAccount=require(_0x5adb('0x8'));var FreshdeskAccount=require(_0x5adb('0x9'));var SugarcrmAccount=require(_0x5adb('0xa'));var ZohoAccount=require(_0x5adb('0xb'));var DeskAccount=require(_0x5adb('0xc'));var VtigerAccount=require(_0x5adb('0xd'));var ServicenowAccount=require(_0x5adb('0xe'));var Dynamics365Account=require(_0x5adb('0xf'));var FreshsalesAccount=require(_0x5adb('0x10'));var FaxAccount=require(_0x5adb('0x11'));function Realtime(){this[_0x5adb('0x12')]={};this[_0x5adb('0x13')]={};this[_0x5adb('0x14')]={};this['voiceQueues']={};this['triggers']={};this[_0x5adb('0x15')]={};this[_0x5adb('0x16')]={};this[_0x5adb('0x17')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0x5adb('0x18')]={};this['queueChannels']={};this[_0x5adb('0x19')]={};this['timers']={};this[_0x5adb('0x1a')]={};this[_0x5adb('0x1b')]={};this[_0x5adb('0x1c')]={};this['sugarcrmAccounts']={};this[_0x5adb('0x1d')]={};this[_0x5adb('0x1e')]={};this[_0x5adb('0x1f')]={};this['vtigerAccounts']={};this[_0x5adb('0x20')]={};this['dynamics365Accounts']={};this[_0x5adb('0x21')]={};this[_0x5adb('0x22')]={};}function freeIsNotKey(_0x30614e,_0x304784,_0x1c0f97){var _0x39d24d=_[_0x5adb('0x23')](_0x30614e,function(_0x42f4c6){return _0x42f4c6[_0x1c0f97];});for(var _0xb953a6 in _0x304784){if(_0x304784['hasOwnProperty'](_0xb953a6)){if(!_0x39d24d[_0xb953a6]){delete _0x304784[_0xb953a6];}}}}function freeIsNotKeySip(_0x3fff62,_0x5de028){var _0x1d9e86=_['mapKeys'](_0x3fff62,function(_0x3ef465){return util['format']('SIP/%s',_0x3ef465[_0x5adb('0x24')]);});for(var _0x1bed20 in _0x5de028){if(_0x5de028[_0x5adb('0x25')](_0x1bed20)){if(!_0x1d9e86[_0x1bed20]){delete _0x5de028[_0x1bed20];}}}}function freeIsNotKeyAgent(_0x1fd4a7,_0x99bc6c){var _0x5af69d=_[_0x5adb('0x23')](_0x1fd4a7,function(_0x5c296e){var _0x4e9f16=_[_0x5adb('0x26')](_0x5c296e[_0x5adb('0x27')])?util[_0x5adb('0x28')](_0x5adb('0x29'),_0x5c296e[_0x5adb('0x24')]):_0x5c296e[_0x5adb('0x27')];return _0x4e9f16;});for(var _0xfd9bb9 in _0x99bc6c){if(_0x99bc6c['hasOwnProperty'](_0xfd9bb9)){if(!_0x5af69d[_0xfd9bb9]){delete _0x99bc6c[_0xfd9bb9];}}}}function clearVoiceCallReports(_0x4b1957){_0x4b1957[_0x5adb('0x2a')]=0x0;_0x4b1957[_0x5adb('0x2b')]=0x0;_0x4b1957[_0x5adb('0x2c')]=0x0;_0x4b1957[_0x5adb('0x2d')]=0x0;_0x4b1957['sumBillable']=0x0;}function clearCampaigns(_0x2fee18){if(!_[_0x5adb('0x2e')](_0x2fee18)){for(var _0x5aed76 in _0x2fee18){if(_0x2fee18[_0x5adb('0x25')](_0x5aed76)){_0x2fee18[_0x5aed76][_0x5adb('0x2f')]=0x0;_0x2fee18[_0x5aed76][_0x5adb('0x30')]=0x0;}}}}function clearVoiceQueues(_0x55b40a){if(!_[_0x5adb('0x2e')](_0x55b40a)){for(var _0xbe21b1 in _0x55b40a){if(_0x55b40a[_0x5adb('0x25')](_0xbe21b1)){_0x55b40a[_0xbe21b1][_0x5adb('0x2a')]=0x0;_0x55b40a[_0xbe21b1][_0x5adb('0x2b')]=0x0;_0x55b40a[_0xbe21b1][_0x5adb('0x31')]=0x0;_0x55b40a[_0xbe21b1]['abandoned']=0x0;_0x55b40a[_0xbe21b1]['sumHoldTime']=0x0;_0x55b40a[_0xbe21b1]['sumDuration']=0x0;_0x55b40a[_0xbe21b1][_0x5adb('0x32')]=0x0;_0x55b40a[_0xbe21b1][_0x5adb('0x33')]=0x0;_0x55b40a[_0xbe21b1][_0x5adb('0x34')]=0x0;_0x55b40a[_0xbe21b1][_0x5adb('0x35')]=0x0;_0x55b40a[_0xbe21b1][_0x5adb('0x36')]=0x0;_0x55b40a[_0xbe21b1]['outboundNoSuchCallsDay']=0x0;_0x55b40a[_0xbe21b1][_0x5adb('0x37')]=0x0;_0x55b40a[_0xbe21b1][_0x5adb('0x38')]=0x0;_0x55b40a[_0xbe21b1][_0x5adb('0x39')]=0x0;_0x55b40a[_0xbe21b1][_0x5adb('0x3a')]=0x0;_0x55b40a[_0xbe21b1][_0x5adb('0x3b')]=0x0;_0x55b40a[_0xbe21b1][_0x5adb('0x3c')]=0x0;_0x55b40a[_0xbe21b1][_0x5adb('0x3d')]=0x0;_0x55b40a[_0xbe21b1][_0x5adb('0x33')]=0x0;_0x55b40a[_0xbe21b1][_0x5adb('0x3e')]=0x0;_0x55b40a[_0xbe21b1][_0x5adb('0x3f')]=!![];}}}}Realtime['prototype'][_0x5adb('0x40')]=function(_0x4c8b2e,_0x12424d){for(var _0x20cde6 in _0x12424d){if(_0x4c8b2e['hasOwnProperty'](_0x20cde6)){_0x4c8b2e[_0x20cde6]=_0x12424d[_0x20cde6];}}};Realtime[_0x5adb('0x41')][_0x5adb('0x42')]=function(){var _0x461a39=this;return function(_0x4a3661){if(_0x4a3661){freeIsNotKeyAgent(_0x4a3661,_0x461a39[_0x5adb('0x12')]);for(var _0x14cf00=0x0,_0x4b5887={};_0x14cf00<_0x4a3661['length'];_0x14cf00+=0x1){_0x4b5887=_0x4a3661[_0x14cf00];var _0x1ed9ea=_['isNil'](_0x4b5887[_0x5adb('0x27')])?util[_0x5adb('0x28')](_0x5adb('0x29'),_0x4b5887[_0x5adb('0x24')]):_0x4b5887[_0x5adb('0x27')];if(_['isUndefined'](_0x461a39[_0x5adb('0x12')][_0x1ed9ea])){_0x461a39[_0x5adb('0x12')][_0x1ed9ea]=new Agent(_0x4b5887);}else{_0x461a39[_0x5adb('0x40')](_0x461a39['agents'][_0x1ed9ea],_0x4b5887);}}}return _0x461a39['agents'];};};Realtime[_0x5adb('0x41')][_0x5adb('0x43')]=function(){var _0x586820=this;return function(_0x2355bc){if(_0x2355bc){freeIsNotKeySip(_0x2355bc,_0x586820['telephones']);for(var _0x199d3b=0x0,_0x58cc5d={};_0x199d3b<_0x2355bc[_0x5adb('0x44')];_0x199d3b+=0x1){_0x58cc5d=_0x2355bc[_0x199d3b];if(_['isUndefined'](_0x586820[_0x5adb('0x13')][util[_0x5adb('0x28')]('SIP/%s',_0x58cc5d[_0x5adb('0x24')])])){_0x586820['telephones'][util[_0x5adb('0x28')](_0x5adb('0x29'),_0x58cc5d[_0x5adb('0x24')])]=new Telephone(_0x58cc5d);}else{_0x586820['mergeFromDatabase'](_0x586820[_0x5adb('0x13')][util[_0x5adb('0x28')](_0x5adb('0x29'),_0x58cc5d[_0x5adb('0x24')])],_0x58cc5d);}}}return _0x586820[_0x5adb('0x13')];};};Realtime['prototype']['initTrunks']=function(){var _0x4f491a=this;return function(_0x599999){if(_0x599999){freeIsNotKeySip(_0x599999,_0x4f491a[_0x5adb('0x14')]);for(var _0x2fbe14=0x0,_0x3a104a={};_0x2fbe14<_0x599999[_0x5adb('0x44')];_0x2fbe14+=0x1){_0x3a104a=_0x599999[_0x2fbe14];if(_[_0x5adb('0x45')](_0x4f491a[_0x5adb('0x14')][util[_0x5adb('0x28')](_0x5adb('0x29'),_0x3a104a['name'])])){_0x4f491a['trunks'][util[_0x5adb('0x28')]('SIP/%s',_0x3a104a[_0x5adb('0x24')])]=new Trunk(_0x3a104a);}else{_0x4f491a[_0x5adb('0x40')](_0x4f491a[_0x5adb('0x14')][util[_0x5adb('0x28')](_0x5adb('0x29'),_0x3a104a['name'])],_0x3a104a);}}}return _0x4f491a[_0x5adb('0x14')];};};Realtime[_0x5adb('0x41')]['initTriggers']=function(){var _0x4160ad=this;return function(_0x1a256c){if(_0x1a256c){freeIsNotKey(_0x1a256c,_0x4160ad['triggers'],'id');for(var _0x120497=0x0,_0x407a4c={};_0x120497<_0x1a256c[_0x5adb('0x44')];_0x120497+=0x1){_0x407a4c=_0x1a256c[_0x120497];if(_[_0x5adb('0x45')](_0x4160ad[_0x5adb('0x46')][_0x407a4c['id']])){_0x4160ad[_0x5adb('0x46')][_0x407a4c['id']]=new Trigger(_0x407a4c);}else{_0x4160ad[_0x5adb('0x40')](_0x4160ad['triggers'][_0x407a4c['id']],_0x407a4c);}}}return _0x4160ad['triggers'];};};Realtime[_0x5adb('0x41')][_0x5adb('0x47')]=function(){var _0x1cd0a3=this;return function(_0xb79d85){if(_0xb79d85){freeIsNotKey(_0xb79d85,_0x1cd0a3['templates'],'id');for(var _0x507e48=0x0,_0xaa32e4={};_0x507e48<_0xb79d85[_0x5adb('0x44')];_0x507e48+=0x1){_0xaa32e4=_0xb79d85[_0x507e48];if(_[_0x5adb('0x45')](_0x1cd0a3[_0x5adb('0x16')][_0xaa32e4['id']])){_0x1cd0a3[_0x5adb('0x16')][_0xaa32e4['id']]=new Template(_0xaa32e4);}else{_0x1cd0a3['mergeFromDatabase'](_0x1cd0a3[_0x5adb('0x16')][_0xaa32e4['id']],_0xaa32e4);}}}return _0x1cd0a3[_0x5adb('0x16')];};};Realtime['prototype'][_0x5adb('0x48')]=function(){var _0x251f45=this;return function(_0x1cdb03){if(_0x1cdb03){freeIsNotKey(_0x1cdb03,_0x251f45[_0x5adb('0x1b')],'id');for(var _0x186bd2=0x0,_0x3a5409={};_0x186bd2<_0x1cdb03[_0x5adb('0x44')];_0x186bd2+=0x1){_0x3a5409=_0x1cdb03[_0x186bd2];if(_[_0x5adb('0x45')](_0x251f45['zendeskAccounts'][_0x3a5409['id']])){_0x251f45[_0x5adb('0x1b')][_0x3a5409['id']]=new ZendeskAccount(_0x3a5409);}else{_0x251f45['mergeFromDatabase'](_0x251f45['zendeskAccounts'][_0x3a5409['id']],_0x3a5409);}}}return _0x251f45['zendeskAccounts'];};};Realtime[_0x5adb('0x41')][_0x5adb('0x49')]=function(){var _0x207a81=this;return function(_0x4ba0b5){if(_0x4ba0b5){freeIsNotKey(_0x4ba0b5,_0x207a81[_0x5adb('0x1c')],'id');for(var _0x5cbab5=0x0,_0x177a81={};_0x5cbab5<_0x4ba0b5[_0x5adb('0x44')];_0x5cbab5+=0x1){_0x177a81=_0x4ba0b5[_0x5cbab5];if(_[_0x5adb('0x45')](_0x207a81['salesforceAccounts'][_0x177a81['id']])){_0x207a81[_0x5adb('0x1c')][_0x177a81['id']]=new SalesforceAccount(_0x177a81);}else{_0x207a81['mergeFromDatabase'](_0x207a81[_0x5adb('0x1c')][_0x177a81['id']],_0x177a81);}}}return _0x207a81[_0x5adb('0x1c')];};};Realtime['prototype'][_0x5adb('0x4a')]=function(){var _0x1ab97b=this;return function(_0x3594e3){if(_0x3594e3){freeIsNotKey(_0x3594e3,_0x1ab97b[_0x5adb('0x1d')],'id');for(var _0x372734=0x0,_0x4cb36c={};_0x372734<_0x3594e3[_0x5adb('0x44')];_0x372734+=0x1){_0x4cb36c=_0x3594e3[_0x372734];if(_[_0x5adb('0x45')](_0x1ab97b[_0x5adb('0x1d')][_0x4cb36c['id']])){_0x1ab97b[_0x5adb('0x1d')][_0x4cb36c['id']]=new FreshdeskAccount(_0x4cb36c);}else{_0x1ab97b['mergeFromDatabase'](_0x1ab97b[_0x5adb('0x1d')][_0x4cb36c['id']],_0x4cb36c);}}}return _0x1ab97b[_0x5adb('0x1d')];};};Realtime[_0x5adb('0x41')]['initZohoAccounts']=function(){var _0x2b34a8=this;return function(_0xd0e5b7){if(_0xd0e5b7){freeIsNotKey(_0xd0e5b7,_0x2b34a8[_0x5adb('0x1e')],'id');for(var _0xfd3471=0x0,_0x4f2da9={};_0xfd3471<_0xd0e5b7[_0x5adb('0x44')];_0xfd3471+=0x1){_0x4f2da9=_0xd0e5b7[_0xfd3471];if(_[_0x5adb('0x45')](_0x2b34a8[_0x5adb('0x1e')][_0x4f2da9['id']])){_0x2b34a8[_0x5adb('0x1e')][_0x4f2da9['id']]=new ZohoAccount(_0x4f2da9);}else{_0x2b34a8[_0x5adb('0x40')](_0x2b34a8['zohoAccounts'][_0x4f2da9['id']],_0x4f2da9);}}}return _0x2b34a8[_0x5adb('0x1e')];};};Realtime['prototype'][_0x5adb('0x4b')]=function(){var _0x4f7227=this;return function(_0x31ae72){if(_0x31ae72){freeIsNotKey(_0x31ae72,_0x4f7227[_0x5adb('0x1f')],'id');for(var _0x1a9358=0x0,_0x42f6d9={};_0x1a9358<_0x31ae72['length'];_0x1a9358+=0x1){_0x42f6d9=_0x31ae72[_0x1a9358];if(_[_0x5adb('0x45')](_0x4f7227[_0x5adb('0x1f')][_0x42f6d9['id']])){_0x4f7227[_0x5adb('0x1f')][_0x42f6d9['id']]=new DeskAccount(_0x42f6d9);}else{_0x4f7227['mergeFromDatabase'](_0x4f7227['deskAccounts'][_0x42f6d9['id']],_0x42f6d9);}}}return _0x4f7227['deskAccounts'];};};Realtime[_0x5adb('0x41')][_0x5adb('0x4c')]=function(){var _0xa5ecc0=this;return function(_0x12a146){if(_0x12a146){freeIsNotKey(_0x12a146,_0xa5ecc0[_0x5adb('0x4d')],'id');for(var _0xb06bee=0x0,_0x204b9b={};_0xb06bee<_0x12a146[_0x5adb('0x44')];_0xb06bee+=0x1){_0x204b9b=_0x12a146[_0xb06bee];if(_[_0x5adb('0x45')](_0xa5ecc0[_0x5adb('0x4d')][_0x204b9b['id']])){_0xa5ecc0[_0x5adb('0x4d')][_0x204b9b['id']]=new SugarcrmAccount(_0x204b9b);}else{_0xa5ecc0[_0x5adb('0x40')](_0xa5ecc0[_0x5adb('0x4d')][_0x204b9b['id']],_0x204b9b);}}}return _0xa5ecc0['sugarcrmAccounts'];};};Realtime['prototype'][_0x5adb('0x4e')]=function(){var _0x27a8e4=this;return function(_0x43cde9){if(_0x43cde9){freeIsNotKey(_0x43cde9,_0x27a8e4[_0x5adb('0x4f')],'id');for(var _0x5d7a9f=0x0,_0xfba0d5={};_0x5d7a9f<_0x43cde9[_0x5adb('0x44')];_0x5d7a9f+=0x1){_0xfba0d5=_0x43cde9[_0x5d7a9f];if(_['isUndefined'](_0x27a8e4[_0x5adb('0x4f')][_0xfba0d5['id']])){_0x27a8e4[_0x5adb('0x4f')][_0xfba0d5['id']]=new VtigerAccount(_0xfba0d5);}else{_0x27a8e4[_0x5adb('0x40')](_0x27a8e4['vtigerAccounts'][_0xfba0d5['id']],_0xfba0d5);}}}return _0x27a8e4[_0x5adb('0x4f')];};};Realtime[_0x5adb('0x41')][_0x5adb('0x50')]=function(){var _0x30c92c=this;return function(_0x330290){if(_0x330290){freeIsNotKey(_0x330290,_0x30c92c[_0x5adb('0x20')],'id');for(var _0x513f26=0x0,_0x836b91={};_0x513f26<_0x330290[_0x5adb('0x44')];_0x513f26+=0x1){_0x836b91=_0x330290[_0x513f26];if(_[_0x5adb('0x45')](_0x30c92c['servicenowAccounts'][_0x836b91['id']])){_0x30c92c[_0x5adb('0x20')][_0x836b91['id']]=new ServicenowAccount(_0x836b91);}else{_0x30c92c[_0x5adb('0x40')](_0x30c92c[_0x5adb('0x20')][_0x836b91['id']],_0x836b91);}}}return _0x30c92c['servicenowAccounts'];};};Realtime[_0x5adb('0x41')]['initDynamics365Accounts']=function(){var _0xa8ff64=this;return function(_0x1e7e3a){if(_0x1e7e3a){freeIsNotKey(_0x1e7e3a,_0xa8ff64[_0x5adb('0x51')],'id');for(var _0x57f0a4=0x0,_0x192b1f={};_0x57f0a4<_0x1e7e3a[_0x5adb('0x44')];_0x57f0a4+=0x1){_0x192b1f=_0x1e7e3a[_0x57f0a4];if(_['isUndefined'](_0xa8ff64[_0x5adb('0x51')][_0x192b1f['id']])){_0xa8ff64[_0x5adb('0x51')][_0x192b1f['id']]=new Dynamics365Account(_0x192b1f);}else{_0xa8ff64[_0x5adb('0x40')](_0xa8ff64[_0x5adb('0x51')][_0x192b1f['id']],_0x192b1f);}}}return _0xa8ff64['dynamics365Accounts'];};};Realtime[_0x5adb('0x41')][_0x5adb('0x52')]=function(){var _0x307f07=this;return function(_0x16716e){if(_0x16716e){freeIsNotKey(_0x16716e,_0x307f07['freshsalesAccounts'],'id');for(var _0x53a4bc=0x0,_0x304512={};_0x53a4bc<_0x16716e['length'];_0x53a4bc+=0x1){_0x304512=_0x16716e[_0x53a4bc];if(_['isUndefined'](_0x307f07['freshsalesAccounts'][_0x304512['id']])){_0x307f07[_0x5adb('0x21')][_0x304512['id']]=new FreshsalesAccount(_0x304512);}else{_0x307f07[_0x5adb('0x40')](_0x307f07['freshsalesAccounts'][_0x304512['id']],_0x304512);}}}return _0x307f07[_0x5adb('0x21')];};};Realtime[_0x5adb('0x41')][_0x5adb('0x53')]=function(){var _0xf6ef8a=this;return function(_0x358a23){for(var _0x126e38=0x0;_0x126e38<_0x358a23[_0x5adb('0x44')];_0x126e38+=0x1){_[_0x5adb('0x54')](_0xf6ef8a['voiceQueues'][_0x358a23[_0x126e38]['name']],_0x358a23[_0x126e38]);}return _0xf6ef8a['voiceQueues'];};};Realtime[_0x5adb('0x41')][_0x5adb('0x55')]=function(){var _0x3a0d1b=this;return function(_0x2a55a3){clearVoiceQueues(_0x3a0d1b[_0x5adb('0x56')]);if(_0x2a55a3){_0x2a55a3=_[_0x5adb('0x57')](_0x2a55a3,_0x5adb('0x58'));for(var _0x25f761 in _0x2a55a3){if(_0x2a55a3['hasOwnProperty'](_0x25f761)){for(var _0x5e55c2=0x0;_0x5e55c2<_0x2a55a3[_0x25f761][_0x5adb('0x44')];_0x5e55c2+=0x1){var _0x56df90=_0x2a55a3[_0x25f761][_0x5e55c2][_0x5adb('0x59')];if(_0x3a0d1b[_0x5adb('0x56')][_0x56df90]){if(_0x2a55a3[_0x25f761][_0x5e55c2][_0x5adb('0x5a')]){_0x3a0d1b[_0x5adb('0x56')][_0x56df90][_0x5adb('0x31')]+=0x1;}if(_0x2a55a3[_0x25f761][_0x5e55c2][_0x5adb('0x5b')]){_0x3a0d1b[_0x5adb('0x56')][_0x56df90][_0x5adb('0x5c')]+=0x1;}_0x3a0d1b['voiceQueues'][_0x56df90][_0x5adb('0x2c')]+=moment(_0x2a55a3[_0x25f761][_0x5e55c2][_0x5adb('0x5d')])[_0x5adb('0x5e')](moment(_0x2a55a3[_0x25f761][_0x5e55c2]['queuecallerjoinAt']),_0x5adb('0x5f'))||0x0;if(_0x5e55c2===_0x2a55a3[_0x25f761][_0x5adb('0x44')]-0x1){_0x3a0d1b['voiceQueues'][_0x56df90][_0x5adb('0x2d')]+=moment(_0x2a55a3[_0x25f761][_0x5e55c2]['queuecallercompleteAt']||_0x2a55a3[_0x25f761][_0x5e55c2][_0x5adb('0x60')]||_0x2a55a3[_0x25f761][_0x5e55c2][_0x5adb('0x61')])['diff'](moment(_0x2a55a3[_0x25f761][_0x5e55c2][_0x5adb('0x62')]),_0x5adb('0x5f'))||0x0;_0x3a0d1b[_0x5adb('0x56')][_0x56df90][_0x5adb('0x2a')]+=0x1;if(_0x2a55a3[_0x25f761][_0x5e55c2][_0x5adb('0x63')]){_0x3a0d1b[_0x5adb('0x56')][_0x56df90][_0x5adb('0x2b')]+=0x1;_0x3a0d1b[_0x5adb('0x56')][_0x56df90]['sumBillable']+=moment(_0x2a55a3[_0x25f761][_0x5e55c2][_0x5adb('0x64')])[_0x5adb('0x5e')](moment(_0x2a55a3[_0x25f761][_0x5e55c2][_0x5adb('0x5d')]),'seconds')||0x0;}}else{_0x3a0d1b['voiceQueues'][_0x56df90][_0x5adb('0x2d')]+=_0x3a0d1b['voiceQueues'][_0x56df90][_0x5adb('0x2c')]||0x0;}}}}}}return _0x3a0d1b[_0x5adb('0x56')];};};Realtime[_0x5adb('0x41')]['initVoiceCallReports']=function(){var _0x3a9735=this;return function(_0x288e4f){clearVoiceCallReports(_0x3a9735[_0x5adb('0x17')]);if(_0x288e4f){for(var _0x3ecc56=0x0;_0x3ecc56<_0x288e4f[_0x5adb('0x44')];_0x3ecc56+=0x1){_0x3a9735['outbound'][_0x5adb('0x2a')]+=0x1;_0x3a9735[_0x5adb('0x17')][_0x5adb('0x2d')]+=_0x288e4f[_0x3ecc56][_0x5adb('0x65')];if(_0x288e4f[_0x3ecc56]['disposition']===_0x5adb('0x66')){_0x3a9735[_0x5adb('0x17')][_0x5adb('0x2b')]+=0x1;_0x3a9735[_0x5adb('0x17')][_0x5adb('0x2c')]+=_0x288e4f[_0x3ecc56][_0x5adb('0x65')]-_0x288e4f[_0x3ecc56][_0x5adb('0x67')]||0x0;_0x3a9735['outbound'][_0x5adb('0x32')]+=_0x288e4f[_0x3ecc56][_0x5adb('0x67')];}}}return _0x3a9735['outbound'];};};Realtime[_0x5adb('0x41')][_0x5adb('0x68')]=function(){var _0x4fc0d5=this;return function(_0x462fa0){if(_0x462fa0){freeIsNotKey(_0x462fa0,_0x4fc0d5['campaigns'],_0x5adb('0x24'));for(var _0x268df2=0x0,_0x4a2ebc={};_0x268df2<_0x462fa0[_0x5adb('0x44')];_0x268df2+=0x1){_0x4a2ebc=_0x462fa0[_0x268df2];if(_['isUndefined'](_0x4fc0d5[_0x5adb('0x15')][_0x4a2ebc[_0x5adb('0x24')]])){_0x4fc0d5[_0x5adb('0x15')][_0x4a2ebc[_0x5adb('0x24')]]=new Campaign(_0x4a2ebc);}else{_0x4fc0d5[_0x5adb('0x40')](_0x4fc0d5['campaigns'][_0x4a2ebc[_0x5adb('0x24')]],_0x4a2ebc);_0x4fc0d5[_0x5adb('0x15')][_0x4a2ebc[_0x5adb('0x24')]][_0x5adb('0x69')]=_0x4a2ebc['SquareProject']?_0x4a2ebc['SquareProject'][_0x5adb('0x24')]:undefined;}}}return _0x4fc0d5[_0x5adb('0x15')];};};Realtime[_0x5adb('0x41')][_0x5adb('0x6a')]=function(){var _0x277668=this;return function(_0xc74e86){if(_0xc74e86){freeIsNotKey(_0xc74e86,_0x277668[_0x5adb('0x6b')],'id');for(var _0x514833=0x0,_0xda26cc={};_0x514833<_0xc74e86[_0x5adb('0x44')];_0x514833+=0x1){_0xda26cc=_0xc74e86[_0x514833];if(_[_0x5adb('0x45')](_0x277668[_0x5adb('0x6b')][_0xda26cc['id']])){_0x277668['voiceExtensions'][_0xda26cc['id']]=new VoiceExtension(_0xda26cc);}else{_0x277668[_0x5adb('0x40')](_0x277668[_0x5adb('0x6b')][_0xda26cc['id']],_0xda26cc);}}}return _0x277668[_0x5adb('0x6b')];};};Realtime[_0x5adb('0x41')][_0x5adb('0x6c')]=function(){var _0x188cbd=this;return function(_0x315ac6){clearCampaigns(_0x188cbd[_0x5adb('0x15')]);for(var _0x1f753e=0x0;_0x1f753e<_0x315ac6['length'];_0x1f753e+=0x1){_[_0x5adb('0x54')](_0x188cbd[_0x5adb('0x15')][_0x315ac6[_0x1f753e]['name']],_0x315ac6[_0x1f753e]);}return _0x188cbd[_0x5adb('0x15')];};};Realtime[_0x5adb('0x41')][_0x5adb('0x6d')]=function(){var _0x3bb3fc=this;return function(_0x200221){if(_0x200221){freeIsNotKey(_0x200221,_0x3bb3fc[_0x5adb('0x22')],'id');for(var _0x450516=0x0,_0x350bb1={};_0x450516<_0x200221['length'];_0x450516+=0x1){_0x350bb1=_0x200221[_0x450516];if(_[_0x5adb('0x45')](_0x3bb3fc[_0x5adb('0x22')][_0x350bb1['id']])){_0x3bb3fc['faxAccounts'][_0x350bb1['id']]=new FaxAccount(_0x350bb1);}else{_0x3bb3fc[_0x5adb('0x40')](_0x3bb3fc[_0x5adb('0x22')][_0x350bb1['id']],_0x350bb1);}}}return _0x3bb3fc[_0x5adb('0x22')];};};Realtime['prototype']['initVoiceQueues']=function(){var _0x2d7a9f=this;return function(_0x328851){if(_0x328851){freeIsNotKey(_0x328851,_0x2d7a9f[_0x5adb('0x56')],'name');for(var _0x14b36f=0x0,_0x321c3a={};_0x14b36f<_0x328851[_0x5adb('0x44')];_0x14b36f+=0x1){_0x321c3a=_0x328851[_0x14b36f];if(_[_0x5adb('0x45')](_0x2d7a9f[_0x5adb('0x56')][_0x321c3a[_0x5adb('0x24')]])){_0x2d7a9f[_0x5adb('0x56')][_0x321c3a[_0x5adb('0x24')]]=new VoiceQueue(_0x321c3a);}else{_0x2d7a9f[_0x5adb('0x40')](_0x2d7a9f[_0x5adb('0x56')][_0x321c3a[_0x5adb('0x24')]],_0x321c3a);}}}return _0x2d7a9f[_0x5adb('0x56')];};};module['exports']=Realtime;
\ No newline at end of file
index 97f8d28..7f84f2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9c7=['mergeDBDataToRealtime','assign','hasOwnProperty'];(function(_0x2bea59,_0x566e6a){var _0x17e885=function(_0x39bfcd){while(--_0x39bfcd){_0x2bea59['push'](_0x2bea59['shift']());}};_0x17e885(++_0x566e6a);}(_0xa9c7,0x13f));var _0x7a9c=function(_0x3740fe,_0x6c543c){_0x3740fe=_0x3740fe-0x0;var _0x55492b=_0xa9c7[_0x3740fe];return _0x55492b;};'use strict';function mergeDBDataToRealtime(_0x467650,_0xc6a620){var _0x4bb2ce=Object[_0x7a9c('0x0')]({},_0x467650);for(var _0x534322 in _0xc6a620){if(_0x4bb2ce[_0x7a9c('0x1')](_0x534322)){_0x4bb2ce[_0x534322]=_0xc6a620[_0x534322];}}return _0x4bb2ce;}exports[_0x7a9c('0x2')]=mergeDBDataToRealtime;
\ No newline at end of file
+var _0x47a2=['hasOwnProperty','assign'];(function(_0x2b1122,_0x28b201){var _0x2db778=function(_0x6deb10){while(--_0x6deb10){_0x2b1122['push'](_0x2b1122['shift']());}};_0x2db778(++_0x28b201);}(_0x47a2,0xb1));var _0x247a=function(_0x2f48cd,_0x46a75a){_0x2f48cd=_0x2f48cd-0x0;var _0x193ae2=_0x47a2[_0x2f48cd];return _0x193ae2;};'use strict';function mergeDBDataToRealtime(_0xcbe8d3,_0x24fcbe){var _0x3d68fc=Object[_0x247a('0x0')]({},_0xcbe8d3);for(var _0x1cbc72 in _0x24fcbe){if(_0x3d68fc[_0x247a('0x1')](_0x1cbc72)){_0x3d68fc[_0x1cbc72]=_0x24fcbe[_0x1cbc72];}}return _0x3d68fc;}exports['mergeDBDataToRealtime']=mergeDBDataToRealtime;
\ No newline at end of file
index fd7549a..de8504a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ef5=['findAgent','find','accountcode','name','isNil','interface','format','length','assigned','lastAssignedTo','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','getAgentByInternal','keys','getCallType','channel','split','internal','exten','type','dialer','lastapplication','queue','lastdata','context','from-voip-provider','callerid','from-sip','destination','xcally-motion-preview','calleridpreview','calleridnum','originatecalleridnum','destinationchannel','disposition','ANSWERED','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','UserId','membername','monitor','filename','createdAt','monitors','connectedlinename','xcally-motion-dialer','forEach','startsWith','Local','indexOf','substring','lastIndexOf','blindTransfer','transfererlinkedid','attendedTransfer','exports','lodash','moment','util','../../../config/environment','../ami','../rpc/voiceCallReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','realtime','agents','telephones','prototype','sync','xdr','custom:voiceQueueReport','voiceQueueReport','bind','voiceCallReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','attendedtransfer'];(function(_0x16cc06,_0x4c8f27){var _0x41b802=function(_0x4af1f1){while(--_0x4af1f1){_0x16cc06['push'](_0x16cc06['shift']());}};_0x41b802(++_0x4c8f27);}(_0x6ef5,0x9d));var _0x56ef=function(_0x231bed,_0x10e7e5){_0x231bed=_0x231bed-0x0;var _0x3928fb=_0x6ef5[_0x231bed];return _0x3928fb;};'use strict';var _=require(_0x56ef('0x0'));var moment=require(_0x56ef('0x1'));var util=require(_0x56ef('0x2'));var config=require(_0x56ef('0x3'));var ami=require(_0x56ef('0x4'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0x56ef('0x5'));var RpcVoiceDialReport=require('../rpc/voiceDialReport');var RpcMemberReport=require(_0x56ef('0x6'));var RpcVoiceQueueReport=require(_0x56ef('0x7'));var RpcVoiceRecording=require(_0x56ef('0x8'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0x56ef('0x9'));var VoiceCallReport=require(_0x56ef('0xa'));var VoiceAgentReport=require(_0x56ef('0xb'));var VoiceDialReport=require(_0x56ef('0xc'));var UserReport=require(_0x56ef('0xd'));function Report(_0x406905){this[_0x56ef('0xe')]=_0x406905;this[_0x56ef('0xf')]=_0x406905[_0x56ef('0xf')];this['telephones']=_0x406905[_0x56ef('0x10')];}Report[_0x56ef('0x11')][_0x56ef('0x12')]=function(_0x215630){var _0xd05118=new VoiceQueueReport(this['realtime']);var _0x7a73e8=new VoiceAgentReport(this[_0x56ef('0xe')]);var _0x36dc1b=new VoiceDialReport(this[_0x56ef('0xe')]);var _0x4d8867=new VoiceCallReport(this['realtime']);var _0xc3486d=new UserReport(this[_0x56ef('0xe')]);if(config[_0x56ef('0x13')]&&config[_0x56ef('0x13')]['disabled']){ami['on'](_0x56ef('0x14'),this[_0x56ef('0x15')][_0x56ef('0x16')](this));ami['on']('custom:voiceCallReport',this[_0x56ef('0x17')][_0x56ef('0x16')](this));ami['on']('custom:voiceAgentReport',this[_0x56ef('0x18')][_0x56ef('0x16')](this));ami['on'](_0x56ef('0x19'),this[_0x56ef('0x1a')][_0x56ef('0x16')](this));ami['on'](_0x56ef('0x1b'),this['blindTransfer'][_0x56ef('0x16')](this));ami['on'](_0x56ef('0x1c'),this['attendedTransfer'][_0x56ef('0x16')](this));}};Report[_0x56ef('0x11')][_0x56ef('0x1d')]=function(_0x3c6002){var _0x4e15cc;_0x4e15cc=_[_0x56ef('0x1e')](this[_0x56ef('0xf')],function(_0x2dadb0){return _0x2dadb0[_0x56ef('0x1f')]==_0x3c6002||_0x2dadb0[_0x56ef('0x20')]==_0x3c6002;});if(_[_0x56ef('0x21')](_0x4e15cc)){var _0x405d1e=_[_0x56ef('0x1e')](this[_0x56ef('0x10')],function(_0x9af05b){return _0x9af05b[_0x56ef('0x1f')]==_0x3c6002||_0x9af05b[_0x56ef('0x20')]==_0x3c6002;});if(_0x405d1e){_0x4e15cc=_['find'](this['agents'],function(_0x4c1f8f){return _0x4c1f8f[_0x56ef('0x22')]==util[_0x56ef('0x23')]('SIP/%s',_0x405d1e[_0x56ef('0x20')]);});}}return _0x4e15cc;};Report[_0x56ef('0x11')][_0x56ef('0x15')]=function(_0x29f626){for(var _0x5460aa=0x0;_0x5460aa<_0x29f626[_0x56ef('0x24')];_0x5460aa+=0x1){var _0xaa762d=this['findAgent'](_0x29f626[_0x5460aa]['connectedlinenum']);if(_0xaa762d){_0x29f626[_0x5460aa]['accountcode']=_0xaa762d[_0x56ef('0x1f')];_0x29f626[_0x5460aa][_0x56ef('0x25')]=!![];_0x29f626[_0x5460aa][_0x56ef('0x26')]=_0xaa762d['name'];_0x29f626[_0x5460aa]['interface']=_[_0x56ef('0x21')](_0xaa762d[_0x56ef('0x22')])?util[_0x56ef('0x23')]('SIP/%s',_0xaa762d['name']):_0xaa762d[_0x56ef('0x22')];if(_0x29f626[_0x5460aa][_0x56ef('0x27')]){_0x29f626[_0x5460aa][_0x56ef('0x28')]=moment()['format'](_0x56ef('0x29'));}if(_0x29f626[_0x5460aa][_0x56ef('0x2a')]){_0x29f626[_0x5460aa][_0x56ef('0x2b')]=moment()[_0x56ef('0x23')](_0x56ef('0x29'));}RpcMemberReport[_0x56ef('0x15')](_0x29f626[_0x5460aa]);}RpcVoiceQueueReport[_0x56ef('0x2c')](_0x29f626[_0x5460aa]);}};function extractCalleridNumber(_0x5dcd4a){var _0x53a4d6=_0x5dcd4a['match'](/<(.*?)>/);return _0x53a4d6?_0x53a4d6[0x1]:_0x5dcd4a;}Report[_0x56ef('0x11')][_0x56ef('0x2d')]=function(_0x55f1d6){for(var _0x374cbc=0x0;_0x374cbc<Object['keys'](this['agents'])['length'];_0x374cbc++){var _0x41ba86=Object[_0x56ef('0x2e')](this[_0x56ef('0xf')])[_0x374cbc];var _0x50e450=this[_0x56ef('0xf')][_0x41ba86];if(_0x50e450[_0x56ef('0x1f')]===Number(_0x55f1d6))return _0x50e450;}return null;};Report['prototype'][_0x56ef('0x2f')]=function(_0x525d21){var _0x1f758f=_0x525d21[_0x56ef('0x30')][_0x56ef('0x31')]('-')[0x0];var _0x49159a=this[_0x56ef('0xf')][_0x1f758f];if(!_0x49159a)_0x49159a=this['getAgentByInternal'](_0x525d21['calleridnum']);return!_0x49159a?'outbound':_0x56ef('0x32');};Report[_0x56ef('0x11')][_0x56ef('0x17')]=function(_0x1290e3){_0x1290e3['destination']=_0x1290e3['destination']||_0x1290e3[_0x56ef('0x33')];if(_0x1290e3[_0x56ef('0x34')]==_0x56ef('0x35')){_0x1290e3[_0x56ef('0x36')]=_0x56ef('0x37');_0x1290e3[_0x56ef('0x38')]=_0x1290e3[_0x56ef('0x37')];if(_0x1290e3[_0x56ef('0x39')]==_0x56ef('0x3a')){_0x1290e3[_0x56ef('0x1f')]='';_0x1290e3['destination']=extractCalleridNumber(_0x1290e3[_0x56ef('0x3b')]);}else if(_0x1290e3[_0x56ef('0x39')]==_0x56ef('0x3c')){if(_0x1290e3[_0x56ef('0x3d')]==_0x56ef('0x3e')){_0x1290e3[_0x56ef('0x3d')]=extractCalleridNumber(_0x1290e3[_0x56ef('0x3f')]);_0x1290e3[_0x56ef('0x40')]=_0x1290e3[_0x56ef('0x41')];_0x1290e3[_0x56ef('0x42')]=[_0x1290e3['channel'],_0x1290e3[_0x56ef('0x30')]=_0x1290e3[_0x56ef('0x42')]][0x0];_0x1290e3[_0x56ef('0x3b')]=_0x1290e3[_0x56ef('0x3f')];}else{_0x1290e3[_0x56ef('0x3d')]=_0x1290e3[_0x56ef('0x40')];_0x1290e3[_0x56ef('0x40')]=_0x1290e3[_0x56ef('0x41')];if(_0x1290e3[_0x56ef('0x43')]==_0x56ef('0x44')){_0x1290e3['accountcode']=_0x1290e3[_0x56ef('0x45')];}else{_0x1290e3[_0x56ef('0x1f')]='';}}}}else{_0x1290e3['callerid']=util['format'](_0x56ef('0x46'),_0x1290e3[_0x56ef('0x47')],_0x1290e3['calleridnum']);}if(RpcVoiceTransferReport[_0x56ef('0x48')][_0x1290e3[_0x56ef('0x49')]]){var _0x2e4d58=RpcVoiceTransferReport[_0x56ef('0x48')][_0x1290e3[_0x56ef('0x49')]];_0x2e4d58[_0x56ef('0x4a')]=_0x1290e3['uniqueid'];RpcVoiceTransferReport['blindTransfer'](_0x2e4d58);delete RpcVoiceTransferReport[_0x56ef('0x48')][_0x1290e3[_0x56ef('0x49')]];}if(_[_0x56ef('0x21')](_0x1290e3[_0x56ef('0x34')])){_0x1290e3[_0x56ef('0x34')]=this[_0x56ef('0x2f')](_0x1290e3);}if(_[_0x56ef('0x21')](_0x1290e3['UserId'])){var _0x27432d=_0x1290e3[_0x56ef('0x30')]['split']('-')[0x0];var _0x4dbbbb=this[_0x56ef('0xf')][_0x27432d];if(!_0x4dbbbb)_0x4dbbbb=this[_0x56ef('0x2d')](_0x1290e3[_0x56ef('0x1f')]);if(_0x4dbbbb){_0x1290e3[_0x56ef('0x4b')]=_0x4dbbbb['id'];_0x1290e3[_0x56ef('0x4c')]=_0x4dbbbb[_0x56ef('0x20')];}}RpcVoiceCallReport[_0x56ef('0x2c')](_0x1290e3);if(_0x1290e3[_0x56ef('0x4d')]){for(var _0x294333=0x0;_0x294333<_0x1290e3['monitors'][_0x56ef('0x24')];_0x294333+=0x1){_0x1290e3['monitorFilename']=_0x1290e3['monitors'][_0x294333][_0x56ef('0x4e')];_0x1290e3[_0x56ef('0x4f')]=_0x1290e3[_0x56ef('0x50')][_0x294333][_0x56ef('0x4f')];if(_0x1290e3['exten']==_0x56ef('0x3e')){_0x1290e3['calleridnum']=_0x1290e3[_0x56ef('0x45')];_0x1290e3[_0x56ef('0x47')]=_0x1290e3[_0x56ef('0x51')];_0x1290e3[_0x56ef('0x45')]=_0x1290e3['accountcode'];_0x1290e3[_0x56ef('0x51')]=_0x1290e3['membername'];_0x1290e3[_0x56ef('0x33')]=_0x1290e3[_0x56ef('0x41')];}else if(_0x1290e3[_0x56ef('0x33')]==_0x56ef('0x52')){_0x1290e3['calleridnum']=_0x1290e3[_0x56ef('0x3d')];_0x1290e3[_0x56ef('0x33')]=_0x1290e3[_0x56ef('0x41')];}RpcVoiceRecording[_0x56ef('0x2c')](_0x1290e3);}}};Report[_0x56ef('0x11')][_0x56ef('0x18')]=function(_0x2bff5f){if(_['isArray'](_0x2bff5f)){_0x2bff5f[_0x56ef('0x53')](function(_0x36e43e){RpcVoiceAgentReport[_0x56ef('0x2c')](_0x36e43e);});}else{RpcVoiceAgentReport['create'](_0x2bff5f);}};Report[_0x56ef('0x11')]['voiceDialReport']=function(_0x4997a1){RpcVoiceDialReport['create'](_0x4997a1);var _0x3a532e;var _0x1bd65b;var _0x122d27=_0x4997a1[_0x56ef('0x30')];if(_[_0x56ef('0x54')](_0x122d27,_0x56ef('0x55'))){_0x1bd65b=_0x122d27['substring'](_0x122d27[_0x56ef('0x56')]('/')+0x1,_0x122d27[_0x56ef('0x56')]('@'));_0x3a532e=_[_0x56ef('0x1e')](this[_0x56ef('0xf')],function(_0xd1b352){return _0xd1b352['mobile']==_0x1bd65b||_0xd1b352['phone']==_0x1bd65b||_0xd1b352[_0x56ef('0x1f')]==_0x1bd65b;});}else{_0x1bd65b=_0x122d27[_0x56ef('0x57')](_0x122d27[_0x56ef('0x56')]('/')+0x1,_0x122d27[_0x56ef('0x58')]('-'));_0x3a532e=this[_0x56ef('0x1d')](_0x1bd65b);}if(_0x3a532e){_0x4997a1[_0x56ef('0x22')]=_[_0x56ef('0x21')](_0x3a532e['interface'])?util[_0x56ef('0x23')]('SIP/%s',_0x3a532e['name']):_0x3a532e[_0x56ef('0x22')];_0x4997a1[_0x56ef('0x4c')]=_0x3a532e[_0x56ef('0x20')];_0x4997a1[_0x56ef('0x1f')]=_0x3a532e['accountcode'];RpcMemberReport[_0x56ef('0x1a')](_0x4997a1);}};Report[_0x56ef('0x11')][_0x56ef('0x59')]=function(_0x8789d0){RpcVoiceTransferReport[_0x56ef('0x48')][_0x8789d0[_0x56ef('0x5a')]]=_0x8789d0;};Report['prototype'][_0x56ef('0x5b')]=function(_0xe231bd){RpcVoiceTransferReport[_0x56ef('0x5b')](_0xe231bd);};module[_0x56ef('0x5c')]=Report;
\ No newline at end of file
+var _0x7697=['monitors','monitorFilename','createdAt','xcally-motion-preview','connectedlinename','membername','isArray','forEach','voiceDialReport','startsWith','substring','indexOf','mobile','phone','lastIndexOf','attendedTransfer','exports','moment','util','../../../config/environment','../ami','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceRecording','./voiceQueueReport','./voiceCallReport','./userReport','agents','telephones','prototype','sync','realtime','xdr','disabled','custom:voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','findAgent','find','name','accountcode','interface','SIP/%s','length','assigned','lastAssignedTo','isNil','format','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','voiceQueueReport','create','match','getAgentByInternal','keys','getCallType','split','calleridnum','outbound','internal','destination','exten','lastapplication','queue','lastdata','from-voip-provider','callerid','context','from-sip','originatecalleridnum','destinationchannel','channel','ANSWERED','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','linkedid','transfers','uniqueid','type','UserId'];(function(_0x498c50,_0x1888cd){var _0x5043d4=function(_0x47408a){while(--_0x47408a){_0x498c50['push'](_0x498c50['shift']());}};_0x5043d4(++_0x1888cd);}(_0x7697,0x17d));var _0x7769=function(_0x4ac60a,_0x503a99){_0x4ac60a=_0x4ac60a-0x0;var _0x4b22e8=_0x7697[_0x4ac60a];return _0x4b22e8;};'use strict';var _=require('lodash');var moment=require(_0x7769('0x0'));var util=require(_0x7769('0x1'));var config=require(_0x7769('0x2'));var ami=require(_0x7769('0x3'));var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require('../rpc/voiceCallReport');var RpcVoiceDialReport=require(_0x7769('0x4'));var RpcMemberReport=require(_0x7769('0x5'));var RpcVoiceQueueReport=require('../rpc/voiceQueueReport');var RpcVoiceRecording=require(_0x7769('0x6'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0x7769('0x7'));var VoiceCallReport=require(_0x7769('0x8'));var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require('./voiceDialReport');var UserReport=require(_0x7769('0x9'));function Report(_0x4038f6){this['realtime']=_0x4038f6;this[_0x7769('0xa')]=_0x4038f6[_0x7769('0xa')];this[_0x7769('0xb')]=_0x4038f6[_0x7769('0xb')];}Report[_0x7769('0xc')][_0x7769('0xd')]=function(_0x20b40e){var _0x5e03db=new VoiceQueueReport(this[_0x7769('0xe')]);var _0x256a5d=new VoiceAgentReport(this[_0x7769('0xe')]);var _0x254e82=new VoiceDialReport(this[_0x7769('0xe')]);var _0x49575b=new VoiceCallReport(this[_0x7769('0xe')]);var _0x2d7a6b=new UserReport(this[_0x7769('0xe')]);if(config[_0x7769('0xf')]&&config[_0x7769('0xf')][_0x7769('0x10')]){ami['on'](_0x7769('0x11'),this['voiceQueueReport'][_0x7769('0x12')](this));ami['on'](_0x7769('0x13'),this[_0x7769('0x14')][_0x7769('0x12')](this));ami['on'](_0x7769('0x15'),this[_0x7769('0x16')][_0x7769('0x12')](this));ami['on'](_0x7769('0x17'),this['voiceDialReport'][_0x7769('0x12')](this));ami['on'](_0x7769('0x18'),this[_0x7769('0x19')][_0x7769('0x12')](this));ami['on'](_0x7769('0x1a'),this['attendedTransfer'][_0x7769('0x12')](this));}};Report[_0x7769('0xc')][_0x7769('0x1b')]=function(_0x5bb0aa){var _0x1b3610;_0x1b3610=_[_0x7769('0x1c')](this[_0x7769('0xa')],function(_0x1c5e3e){return _0x1c5e3e['accountcode']==_0x5bb0aa||_0x1c5e3e[_0x7769('0x1d')]==_0x5bb0aa;});if(_['isNil'](_0x1b3610)){var _0x4bb171=_['find'](this[_0x7769('0xb')],function(_0x5dbf13){return _0x5dbf13[_0x7769('0x1e')]==_0x5bb0aa||_0x5dbf13['name']==_0x5bb0aa;});if(_0x4bb171){_0x1b3610=_[_0x7769('0x1c')](this[_0x7769('0xa')],function(_0x349a88){return _0x349a88[_0x7769('0x1f')]==util['format'](_0x7769('0x20'),_0x4bb171[_0x7769('0x1d')]);});}}return _0x1b3610;};Report[_0x7769('0xc')]['voiceQueueReport']=function(_0x3bc767){for(var _0x133767=0x0;_0x133767<_0x3bc767[_0x7769('0x21')];_0x133767+=0x1){var _0x474a0f=this[_0x7769('0x1b')](_0x3bc767[_0x133767]['connectedlinenum']);if(_0x474a0f){_0x3bc767[_0x133767][_0x7769('0x1e')]=_0x474a0f[_0x7769('0x1e')];_0x3bc767[_0x133767][_0x7769('0x22')]=!![];_0x3bc767[_0x133767][_0x7769('0x23')]=_0x474a0f['name'];_0x3bc767[_0x133767][_0x7769('0x1f')]=_[_0x7769('0x24')](_0x474a0f['interface'])?util[_0x7769('0x25')](_0x7769('0x20'),_0x474a0f['name']):_0x474a0f[_0x7769('0x1f')];if(_0x3bc767[_0x133767][_0x7769('0x26')]){_0x3bc767[_0x133767][_0x7769('0x27')]=moment()[_0x7769('0x25')](_0x7769('0x28'));}if(_0x3bc767[_0x133767][_0x7769('0x29')]){_0x3bc767[_0x133767][_0x7769('0x2a')]=moment()[_0x7769('0x25')]('YYYY-MM-DD\x20HH:mm:ss');}RpcMemberReport[_0x7769('0x2b')](_0x3bc767[_0x133767]);}RpcVoiceQueueReport[_0x7769('0x2c')](_0x3bc767[_0x133767]);}};function extractCalleridNumber(_0xc8f235){var _0x47a3e2=_0xc8f235[_0x7769('0x2d')](/<(.*?)>/);return _0x47a3e2?_0x47a3e2[0x1]:_0xc8f235;}Report[_0x7769('0xc')][_0x7769('0x2e')]=function(_0x19933f){for(var _0x543c8f=0x0;_0x543c8f<Object[_0x7769('0x2f')](this[_0x7769('0xa')])['length'];_0x543c8f++){var _0xa5d78f=Object[_0x7769('0x2f')](this[_0x7769('0xa')])[_0x543c8f];var _0x42ede9=this[_0x7769('0xa')][_0xa5d78f];if(_0x42ede9['accountcode']===Number(_0x19933f))return _0x42ede9;}return null;};Report[_0x7769('0xc')][_0x7769('0x30')]=function(_0x3569bf){var _0x577b0b=_0x3569bf['channel'][_0x7769('0x31')]('-')[0x0];var _0x591447=this[_0x7769('0xa')][_0x577b0b];if(!_0x591447)_0x591447=this[_0x7769('0x2e')](_0x3569bf[_0x7769('0x32')]);return!_0x591447?_0x7769('0x33'):_0x7769('0x34');};Report['prototype'][_0x7769('0x14')]=function(_0x26f747){_0x26f747[_0x7769('0x35')]=_0x26f747[_0x7769('0x35')]||_0x26f747[_0x7769('0x36')];if(_0x26f747['type']=='dialer'){_0x26f747[_0x7769('0x37')]=_0x7769('0x38');_0x26f747[_0x7769('0x39')]=_0x26f747[_0x7769('0x38')];if(_0x26f747['context']==_0x7769('0x3a')){_0x26f747[_0x7769('0x1e')]='';_0x26f747[_0x7769('0x35')]=extractCalleridNumber(_0x26f747[_0x7769('0x3b')]);}else if(_0x26f747[_0x7769('0x3c')]==_0x7769('0x3d')){if(_0x26f747[_0x7769('0x35')]=='xcally-motion-preview'){_0x26f747[_0x7769('0x35')]=extractCalleridNumber(_0x26f747['calleridpreview']);_0x26f747[_0x7769('0x32')]=_0x26f747[_0x7769('0x3e')];_0x26f747[_0x7769('0x3f')]=[_0x26f747[_0x7769('0x40')],_0x26f747[_0x7769('0x40')]=_0x26f747[_0x7769('0x3f')]][0x0];_0x26f747[_0x7769('0x3b')]=_0x26f747['calleridpreview'];}else{_0x26f747['destination']=_0x26f747['calleridnum'];_0x26f747[_0x7769('0x32')]=_0x26f747['originatecalleridnum'];if(_0x26f747['disposition']==_0x7769('0x41')){_0x26f747[_0x7769('0x1e')]=_0x26f747[_0x7769('0x42')];}else{_0x26f747['accountcode']='';}}}}else{_0x26f747[_0x7769('0x3b')]=util['format'](_0x7769('0x43'),_0x26f747[_0x7769('0x44')],_0x26f747[_0x7769('0x32')]);}if(RpcVoiceTransferReport['transfers'][_0x26f747[_0x7769('0x45')]]){var _0x12bd4f=RpcVoiceTransferReport[_0x7769('0x46')][_0x26f747[_0x7769('0x45')]];_0x12bd4f['transfereelinkedid']=_0x26f747[_0x7769('0x47')];RpcVoiceTransferReport[_0x7769('0x19')](_0x12bd4f);delete RpcVoiceTransferReport[_0x7769('0x46')][_0x26f747[_0x7769('0x45')]];}if(_[_0x7769('0x24')](_0x26f747[_0x7769('0x48')])){_0x26f747[_0x7769('0x48')]=this[_0x7769('0x30')](_0x26f747);}if(_[_0x7769('0x24')](_0x26f747[_0x7769('0x49')])){var _0x25fdc3=_0x26f747[_0x7769('0x40')][_0x7769('0x31')]('-')[0x0];var _0x5a6557=this['agents'][_0x25fdc3];if(!_0x5a6557)_0x5a6557=this[_0x7769('0x2e')](_0x26f747[_0x7769('0x1e')]);if(_0x5a6557){_0x26f747['UserId']=_0x5a6557['id'];_0x26f747['membername']=_0x5a6557['name'];}}RpcVoiceCallReport[_0x7769('0x2c')](_0x26f747);if(_0x26f747['monitor']){for(var _0x3b8e7d=0x0;_0x3b8e7d<_0x26f747[_0x7769('0x4a')][_0x7769('0x21')];_0x3b8e7d+=0x1){_0x26f747[_0x7769('0x4b')]=_0x26f747[_0x7769('0x4a')][_0x3b8e7d]['filename'];_0x26f747[_0x7769('0x4c')]=_0x26f747[_0x7769('0x4a')][_0x3b8e7d][_0x7769('0x4c')];if(_0x26f747[_0x7769('0x36')]==_0x7769('0x4d')){_0x26f747[_0x7769('0x32')]=_0x26f747[_0x7769('0x42')];_0x26f747[_0x7769('0x44')]=_0x26f747['connectedlinename'];_0x26f747[_0x7769('0x42')]=_0x26f747[_0x7769('0x1e')];_0x26f747[_0x7769('0x4e')]=_0x26f747[_0x7769('0x4f')];_0x26f747['exten']=_0x26f747[_0x7769('0x3e')];}else if(_0x26f747[_0x7769('0x36')]=='xcally-motion-dialer'){_0x26f747[_0x7769('0x32')]=_0x26f747['destination'];_0x26f747[_0x7769('0x36')]=_0x26f747[_0x7769('0x3e')];}RpcVoiceRecording['create'](_0x26f747);}}};Report[_0x7769('0xc')][_0x7769('0x16')]=function(_0x58cee3){if(_[_0x7769('0x50')](_0x58cee3)){_0x58cee3[_0x7769('0x51')](function(_0x32d4ef){RpcVoiceAgentReport['create'](_0x32d4ef);});}else{RpcVoiceAgentReport[_0x7769('0x2c')](_0x58cee3);}};Report[_0x7769('0xc')][_0x7769('0x52')]=function(_0x280424){RpcVoiceDialReport[_0x7769('0x2c')](_0x280424);var _0x57de44;var _0x142270;var _0x4a8722=_0x280424[_0x7769('0x40')];if(_[_0x7769('0x53')](_0x4a8722,'Local')){_0x142270=_0x4a8722[_0x7769('0x54')](_0x4a8722['indexOf']('/')+0x1,_0x4a8722[_0x7769('0x55')]('@'));_0x57de44=_[_0x7769('0x1c')](this[_0x7769('0xa')],function(_0x31bc5e){return _0x31bc5e[_0x7769('0x56')]==_0x142270||_0x31bc5e[_0x7769('0x57')]==_0x142270||_0x31bc5e['accountcode']==_0x142270;});}else{_0x142270=_0x4a8722[_0x7769('0x54')](_0x4a8722[_0x7769('0x55')]('/')+0x1,_0x4a8722[_0x7769('0x58')]('-'));_0x57de44=this['findAgent'](_0x142270);}if(_0x57de44){_0x280424[_0x7769('0x1f')]=_[_0x7769('0x24')](_0x57de44['interface'])?util[_0x7769('0x25')](_0x7769('0x20'),_0x57de44[_0x7769('0x1d')]):_0x57de44['interface'];_0x280424[_0x7769('0x4f')]=_0x57de44[_0x7769('0x1d')];_0x280424[_0x7769('0x1e')]=_0x57de44[_0x7769('0x1e')];RpcMemberReport['voiceDialReport'](_0x280424);}};Report[_0x7769('0xc')][_0x7769('0x19')]=function(_0x3a0878){RpcVoiceTransferReport['transfers'][_0x3a0878['transfererlinkedid']]=_0x3a0878;};Report[_0x7769('0xc')]['attendedTransfer']=function(_0x5e17dd){RpcVoiceTransferReport[_0x7769('0x59')](_0x5e17dd);};module[_0x7769('0x5a')]=Report;
\ No newline at end of file
index 9cde0e1..11c40ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b16=['syncPeerStatus','peer','address','[userReport][peerstatus]','status','telephone:%s','telephone:save','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','lodash','moment','bluebird','ami','redis','localhost','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','syncDeviceState','peerstatus','resolve','then','actionSipShowRegistry','catch','error','inspect','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','syncRealtimeShow','isNotNull','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','state','[userReport][registry]','find','username','stateRegistry','omit','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','debug','[userReport][devicestatechange]','local','toLowerCase','inuse','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:save','startsWith','Local','substring','indexOf','mobile','phone','accountcode'];(function(_0x47c116,_0x4e6c53){var _0x34b734=function(_0x201bd4){while(--_0x201bd4){_0x47c116['push'](_0x47c116['shift']());}};_0x34b734(++_0x4e6c53);}(_0x0b16,0x95));var _0x60b1=function(_0x19c682,_0x221bcd){_0x19c682=_0x19c682-0x0;var _0x3de686=_0x0b16[_0x19c682];return _0x3de686;};'use strict';var _=require(_0x60b1('0x0'));var moment=require(_0x60b1('0x1'));var util=require('util');var Redis=require('ioredis');var BPromise=require(_0x60b1('0x2'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x60b1('0x3'));var ami=require('../ami');config[_0x60b1('0x4')]=_['defaults'](config['redis'],{'host':_0x60b1('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function UserReport(_0x42817b){this[_0x60b1('0x6')]=_0x42817b[_0x60b1('0x6')];this[_0x60b1('0x7')]=_0x42817b[_0x60b1('0x7')];this[_0x60b1('0x8')]=_0x42817b[_0x60b1('0x8')];ami['on'](_0x60b1('0x9'),this[_0x60b1('0xa')][_0x60b1('0xb')](this));ami['on'](_0x60b1('0xc'),this['syncRegistry'][_0x60b1('0xb')](this));ami['on']('devicestatechange',this[_0x60b1('0xd')][_0x60b1('0xb')](this));ami['on'](_0x60b1('0xe'),this['syncPeerStatus']['bind'](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0x60b1('0xf')]()[_0x60b1('0x10')](ami[_0x60b1('0x11')]())[_0x60b1('0x12')](function(_0x46a2be){logger[_0x60b1('0x13')]('[userReport][sipshowregistry]',util[_0x60b1('0x14')](_0x46a2be,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x60b1('0xf')]()[_0x60b1('0x10')](ami[_0x60b1('0x15')]())['catch'](function(_0x42264e){logger[_0x60b1('0x13')](_0x60b1('0x16'),util['inspect'](_0x42264e,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x60b1('0xf')]()[_0x60b1('0x10')](ami[_0x60b1('0x17')]())[_0x60b1('0x12')](function(_0x5892fd){logger['error'](_0x60b1('0x18'),util[_0x60b1('0x14')](_0x5892fd,{'showHidden':![],'depth':null}));});}UserReport[_0x60b1('0x19')][_0x60b1('0x1a')]=function(){setInterval(function(){BPromise[_0x60b1('0xf')]()[_0x60b1('0x10')](showSipRegistrations())[_0x60b1('0x10')](listDeviceStates())[_0x60b1('0x10')](showPeersStatus());},0x32c8);};UserReport[_0x60b1('0x19')][_0x60b1('0x1b')]=function(_0x3c9c0c){return _0x3c9c0c!==null&&!_[_0x60b1('0x1c')](_0x3c9c0c);};UserReport[_0x60b1('0x19')][_0x60b1('0x1d')]=function(_0x316ba9,_0x443797,_0xc47740){io['to'](_0x316ba9)[_0x60b1('0x1d')](_0x443797,_0xc47740);};UserReport[_0x60b1('0x19')][_0x60b1('0xa')]=function(_0x3fa80a){try{if(this[_0x60b1('0x1b')](_0x3fa80a)){logger[_0x60b1('0x1e')](_0x60b1('0x1f'),_0x3fa80a['username'],_0x3fa80a[_0x60b1('0x20')]);logger['debug'](_0x60b1('0x21'),util[_0x60b1('0x14')](_0x3fa80a,{'showHidden':![],'depth':null}));var _0x3bf3b6=_[_0x60b1('0x22')](this['trunks'],{'defaultuser':_0x3fa80a[_0x60b1('0x23')]});if(_0x3bf3b6){_0x3fa80a[_0x60b1('0x24')]=_0x3fa80a[_0x60b1('0x20')];_['merge'](_0x3bf3b6,_[_0x60b1('0x25')](_0x3fa80a,['event','actionid',_0x60b1('0x23'),'state']));logger['debug'](_0x60b1('0x26'),util[_0x60b1('0x14')](_0x3bf3b6,{'showHidden':![],'depth':null}));this['emit'](util[_0x60b1('0x27')](_0x60b1('0x28'),_0x3bf3b6[_0x60b1('0x29')]),'trunk:save',_0x3bf3b6);}}}catch(_0x212765){logger[_0x60b1('0x13')](_0x60b1('0x21'),util[_0x60b1('0x14')](_0x212765,{'showHidden':![],'depth':null}));}};UserReport[_0x60b1('0x19')][_0x60b1('0xd')]=function(_0x3f23f3){try{if(this['isNotNull'](_0x3f23f3)){logger[_0x60b1('0x1e')](_0x60b1('0x2a'),_0x3f23f3[_0x60b1('0x2b')],_0x3f23f3[_0x60b1('0x20')]);logger[_0x60b1('0x2c')](_0x60b1('0x2d'),util[_0x60b1('0x14')](_0x3f23f3,{'showHidden':![],'depth':null}));if(this['agents'][_0x3f23f3['device']]){if(!this[_0x60b1('0x7')][_0x3f23f3[_0x60b1('0x2b')]][_0x60b1('0x2e')]||_0x3f23f3[_0x60b1('0x20')][_0x60b1('0x2f')]()==_0x60b1('0x30')){this[_0x60b1('0x7')][_0x3f23f3[_0x60b1('0x2b')]][_0x60b1('0x2e')]=![];if(this[_0x60b1('0x7')][_0x3f23f3[_0x60b1('0x2b')]]['state']!==_0x3f23f3[_0x60b1('0x20')]['toLowerCase']()){this[_0x60b1('0x7')][_0x3f23f3[_0x60b1('0x2b')]]['stateTime']=_[_0x60b1('0x31')](moment()[_0x60b1('0x27')]('x'));}this[_0x60b1('0x7')][_0x3f23f3['device']][_0x60b1('0x20')]=_0x3f23f3[_0x60b1('0x20')][_0x60b1('0x2f')]();this['agents'][_0x3f23f3[_0x60b1('0x2b')]][_0x60b1('0x32')](_0x3f23f3);}}else if(this[_0x60b1('0x8')][_0x3f23f3[_0x60b1('0x2b')]]){if(this[_0x60b1('0x8')][_0x3f23f3[_0x60b1('0x2b')]][_0x60b1('0x20')]!==_0x3f23f3['state'][_0x60b1('0x2f')]()){this[_0x60b1('0x8')][_0x3f23f3['device']]['stateTime']=_['toNumber'](moment()[_0x60b1('0x27')]('x'));}this[_0x60b1('0x8')][_0x3f23f3[_0x60b1('0x2b')]]['state']=_0x3f23f3['state'][_0x60b1('0x2f')]();logger['debug'](_0x60b1('0x33'),util[_0x60b1('0x14')](this['telephones'][_0x3f23f3[_0x60b1('0x2b')]],{'showHidden':![],'depth':null}));this[_0x60b1('0x1d')](util[_0x60b1('0x27')]('telephone:%s',this[_0x60b1('0x8')][_0x3f23f3[_0x60b1('0x2b')]][_0x60b1('0x29')]),'telephone:save',this[_0x60b1('0x8')][_0x3f23f3[_0x60b1('0x2b')]]);}else if(this['trunks'][_0x3f23f3[_0x60b1('0x2b')]]){if(this[_0x60b1('0x6')][_0x3f23f3['device']]['state']!==_0x3f23f3[_0x60b1('0x20')][_0x60b1('0x2f')]()){this[_0x60b1('0x6')][_0x3f23f3[_0x60b1('0x2b')]]['stateTime']=_['toNumber'](moment()[_0x60b1('0x27')]('x'));}this[_0x60b1('0x6')][_0x3f23f3[_0x60b1('0x2b')]]['state']=_0x3f23f3['state'][_0x60b1('0x2f')]();logger[_0x60b1('0x2c')](_0x60b1('0x34'),util[_0x60b1('0x14')](this['trunks'][_0x3f23f3[_0x60b1('0x2b')]],{'showHidden':![],'depth':null}));this[_0x60b1('0x1d')](util[_0x60b1('0x27')](_0x60b1('0x28'),this[_0x60b1('0x6')][_0x3f23f3['device']]['name']),_0x60b1('0x35'),this['trunks'][_0x3f23f3[_0x60b1('0x2b')]]);}else if(_[_0x60b1('0x36')](_0x3f23f3[_0x60b1('0x2b')],_0x60b1('0x37'))){var _0x5ad429=_0x3f23f3[_0x60b1('0x2b')];var _0x20714f=_0x5ad429[_0x60b1('0x38')](_0x5ad429[_0x60b1('0x39')]('/')+0x1,_0x5ad429[_0x60b1('0x39')]('@'));var _0x525386=_['find'](this[_0x60b1('0x7')],function(_0xa25ae1){return _0xa25ae1[_0x60b1('0x3a')]==_0x20714f||_0xa25ae1[_0x60b1('0x3b')]==_0x20714f||_0xa25ae1[_0x60b1('0x3c')]==_0x20714f;});if(_0x525386){if(_0x525386[_0x60b1('0x20')]!==_0x3f23f3[_0x60b1('0x20')][_0x60b1('0x2f')]()){_0x525386['stateTime']=_[_0x60b1('0x31')](moment()[_0x60b1('0x27')]('x'));}_0x525386[_0x60b1('0x20')]=_0x3f23f3[_0x60b1('0x20')][_0x60b1('0x2f')]();_0x525386['local']=!![];_0x525386['updateStatusRealtime'](_0x3f23f3);}}}}catch(_0x320eb1){logger[_0x60b1('0x13')]('[userReport][devicestatechange]',util[_0x60b1('0x14')](_0x320eb1,{'showHidden':![],'depth':null}));}};UserReport[_0x60b1('0x19')][_0x60b1('0x3d')]=function(_0x1234fb){try{if(this['isNotNull'](_0x1234fb)&&this[_0x60b1('0x1b')](_0x1234fb['peerstatus'])){logger[_0x60b1('0x1e')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x1234fb[_0x60b1('0x3e')],_0x1234fb[_0x60b1('0x3f')],_0x1234fb[_0x60b1('0xe')]);logger[_0x60b1('0x2c')](_0x60b1('0x40'),util[_0x60b1('0x14')](_0x1234fb,{'showHidden':![],'depth':null}));if(this['agents'][_0x1234fb[_0x60b1('0x3e')]]){if(!this[_0x60b1('0x7')][_0x1234fb[_0x60b1('0x3e')]][_0x60b1('0x2e')]||_0x1234fb[_0x60b1('0xe')][_0x60b1('0x2f')]()=='registered'){this[_0x60b1('0x7')][_0x1234fb[_0x60b1('0x3e')]][_0x60b1('0x2e')]=![];this['agents'][_0x1234fb[_0x60b1('0x3e')]][_0x60b1('0x41')]=_0x1234fb['peerstatus']['toLowerCase']();this[_0x60b1('0x7')][_0x1234fb['peer']][_0x60b1('0x3f')]=_0x1234fb[_0x60b1('0x3f')];this[_0x60b1('0x7')][_0x1234fb[_0x60b1('0x3e')]][_0x60b1('0x32')](_0x1234fb);}}else if(this['telephones'][_0x1234fb[_0x60b1('0x3e')]]){this[_0x60b1('0x8')][_0x1234fb[_0x60b1('0x3e')]][_0x60b1('0x41')]=_0x1234fb['peerstatus'][_0x60b1('0x2f')]();this[_0x60b1('0x8')][_0x1234fb[_0x60b1('0x3e')]][_0x60b1('0x3f')]=_0x1234fb[_0x60b1('0x3f')];logger['debug']('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util['inspect'](this[_0x60b1('0x8')][_0x1234fb[_0x60b1('0x3e')]],{'showHidden':![],'depth':null}));this[_0x60b1('0x1d')](util[_0x60b1('0x27')](_0x60b1('0x42'),this[_0x60b1('0x8')][_0x1234fb['peer']]['name']),_0x60b1('0x43'),this[_0x60b1('0x8')][_0x1234fb[_0x60b1('0x3e')]]);}else if(this[_0x60b1('0x6')][_0x1234fb[_0x60b1('0x3e')]]){this[_0x60b1('0x6')][_0x1234fb[_0x60b1('0x3e')]][_0x60b1('0x41')]=_0x1234fb[_0x60b1('0xe')][_0x60b1('0x2f')]();this['trunks'][_0x1234fb['peer']][_0x60b1('0x3f')]=_0x1234fb['address'];logger[_0x60b1('0x2c')](_0x60b1('0x44'),util['inspect'](this['trunks'][_0x1234fb[_0x60b1('0x3e')]],{'showHidden':![],'depth':null}));this[_0x60b1('0x1d')](util['format']('trunk:%s',this['trunks'][_0x1234fb['peer']][_0x60b1('0x29')]),_0x60b1('0x35'),this[_0x60b1('0x6')][_0x1234fb[_0x60b1('0x3e')]]);}}}catch(_0x34d6f1){logger[_0x60b1('0x13')](_0x60b1('0x40'),util[_0x60b1('0x14')](_0x34d6f1,{'showHidden':![],'depth':null}));}};module[_0x60b1('0x45')]=UserReport;
\ No newline at end of file
+var _0x4e12=['[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','username','state','stateRegistry','merge','omit','event','actionid','debug','[userReport][registry]\x20sending\x20trunk:save\x20event:','trunk:%s','trunk:save','info','[userReport][devicestatechange]','device','toLowerCase','inuse','stateTime','toNumber','format','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','name','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','startsWith','substring','indexOf','find','phone','accountcode','local','peerstatus','peer','registered','status','address','exports','lodash','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','redis','trunks','agents','telephones','registryentry','syncRegistry','bind','registry','devicestatechange','syncDeviceState','syncPeerStatus','syncRealtimeShow','then','actionSipShowRegistry','catch','error','inspect','resolve','[userReport][devicestatelist]'];(function(_0x3bc72e,_0x220bfb){var _0x5da390=function(_0x4a9364){while(--_0x4a9364){_0x3bc72e['push'](_0x3bc72e['shift']());}};_0x5da390(++_0x220bfb);}(_0x4e12,0x13b));var _0x24e1=function(_0xe3ce18,_0x461543){_0xe3ce18=_0xe3ce18-0x0;var _0x4bceb5=_0x4e12[_0xe3ce18];return _0x4bceb5;};'use strict';var _=require(_0x24e1('0x0'));var moment=require('moment');var util=require('util');var Redis=require(_0x24e1('0x1'));var BPromise=require(_0x24e1('0x2'));var config=require(_0x24e1('0x3'));var logger=require(_0x24e1('0x4'))(_0x24e1('0x5'));var ami=require('../ami');config[_0x24e1('0x6')]=_['defaults'](config[_0x24e1('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x24e1('0x6')]));function UserReport(_0x183d31){this[_0x24e1('0x7')]=_0x183d31[_0x24e1('0x7')];this[_0x24e1('0x8')]=_0x183d31[_0x24e1('0x8')];this[_0x24e1('0x9')]=_0x183d31['telephones'];ami['on'](_0x24e1('0xa'),this[_0x24e1('0xb')][_0x24e1('0xc')](this));ami['on'](_0x24e1('0xd'),this[_0x24e1('0xb')][_0x24e1('0xc')](this));ami['on'](_0x24e1('0xe'),this[_0x24e1('0xf')][_0x24e1('0xc')](this));ami['on']('peerstatus',this[_0x24e1('0x10')][_0x24e1('0xc')](this));return this[_0x24e1('0x11')]();}function showSipRegistrations(){Promise['resolve']()[_0x24e1('0x12')](ami[_0x24e1('0x13')]())[_0x24e1('0x14')](function(_0x2f2ad5){logger[_0x24e1('0x15')]('[userReport][sipshowregistry]',util[_0x24e1('0x16')](_0x2f2ad5,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x24e1('0x17')]()[_0x24e1('0x12')](ami['actionDeviceStateList']())[_0x24e1('0x14')](function(_0x3e8d2d){logger[_0x24e1('0x15')](_0x24e1('0x18'),util[_0x24e1('0x16')](_0x3e8d2d,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0x24e1('0x17')]()['then'](ami['actionSipPeerStatus']())[_0x24e1('0x14')](function(_0x429791){logger[_0x24e1('0x15')](_0x24e1('0x19'),util[_0x24e1('0x16')](_0x429791,{'showHidden':![],'depth':null}));});}UserReport[_0x24e1('0x1a')][_0x24e1('0x11')]=function(){setInterval(function(){BPromise[_0x24e1('0x17')]()[_0x24e1('0x12')](showSipRegistrations())[_0x24e1('0x12')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport['prototype'][_0x24e1('0x1b')]=function(_0x1dbd89){return _0x1dbd89!==null&&!_[_0x24e1('0x1c')](_0x1dbd89);};UserReport['prototype']['emit']=function(_0x275a35,_0xa5e81f,_0x17ba9a){io['to'](_0x275a35)[_0x24e1('0x1d')](_0xa5e81f,_0x17ba9a);};UserReport['prototype'][_0x24e1('0xb')]=function(_0x14ccde){try{if(this[_0x24e1('0x1b')](_0x14ccde)){logger['info']('[userReport][registry]\x20registry:%s\x20state:%s',_0x14ccde[_0x24e1('0x1e')],_0x14ccde[_0x24e1('0x1f')]);logger['debug']('[userReport][registry]',util[_0x24e1('0x16')](_0x14ccde,{'showHidden':![],'depth':null}));var _0x33c463=_['find'](this[_0x24e1('0x7')],{'defaultuser':_0x14ccde[_0x24e1('0x1e')]});if(_0x33c463){_0x14ccde[_0x24e1('0x20')]=_0x14ccde[_0x24e1('0x1f')];_[_0x24e1('0x21')](_0x33c463,_[_0x24e1('0x22')](_0x14ccde,[_0x24e1('0x23'),_0x24e1('0x24'),'username',_0x24e1('0x1f')]));logger[_0x24e1('0x25')](_0x24e1('0x26'),util['inspect'](_0x33c463,{'showHidden':![],'depth':null}));this[_0x24e1('0x1d')](util['format'](_0x24e1('0x27'),_0x33c463['name']),_0x24e1('0x28'),_0x33c463);}}}catch(_0x54b295){logger['error']('[userReport][registry]',util[_0x24e1('0x16')](_0x54b295,{'showHidden':![],'depth':null}));}};UserReport[_0x24e1('0x1a')][_0x24e1('0xf')]=function(_0x9ff6f5){try{if(this['isNotNull'](_0x9ff6f5)){logger[_0x24e1('0x29')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x9ff6f5['device'],_0x9ff6f5[_0x24e1('0x1f')]);logger['debug'](_0x24e1('0x2a'),util[_0x24e1('0x16')](_0x9ff6f5,{'showHidden':![],'depth':null}));if(this[_0x24e1('0x8')][_0x9ff6f5[_0x24e1('0x2b')]]){if(!this[_0x24e1('0x8')][_0x9ff6f5[_0x24e1('0x2b')]]['local']||_0x9ff6f5[_0x24e1('0x1f')][_0x24e1('0x2c')]()==_0x24e1('0x2d')){this[_0x24e1('0x8')][_0x9ff6f5[_0x24e1('0x2b')]]['local']=![];if(this['agents'][_0x9ff6f5['device']][_0x24e1('0x1f')]!==_0x9ff6f5['state'][_0x24e1('0x2c')]()){this[_0x24e1('0x8')][_0x9ff6f5[_0x24e1('0x2b')]][_0x24e1('0x2e')]=_[_0x24e1('0x2f')](moment()[_0x24e1('0x30')]('x'));}this[_0x24e1('0x8')][_0x9ff6f5['device']][_0x24e1('0x1f')]=_0x9ff6f5[_0x24e1('0x1f')][_0x24e1('0x2c')]();this[_0x24e1('0x8')][_0x9ff6f5['device']][_0x24e1('0x31')](_0x9ff6f5);}}else if(this[_0x24e1('0x9')][_0x9ff6f5[_0x24e1('0x2b')]]){if(this[_0x24e1('0x9')][_0x9ff6f5[_0x24e1('0x2b')]]['state']!==_0x9ff6f5[_0x24e1('0x1f')][_0x24e1('0x2c')]()){this[_0x24e1('0x9')][_0x9ff6f5['device']][_0x24e1('0x2e')]=_['toNumber'](moment()[_0x24e1('0x30')]('x'));}this[_0x24e1('0x9')][_0x9ff6f5[_0x24e1('0x2b')]][_0x24e1('0x1f')]=_0x9ff6f5[_0x24e1('0x1f')][_0x24e1('0x2c')]();logger[_0x24e1('0x25')](_0x24e1('0x32'),util[_0x24e1('0x16')](this[_0x24e1('0x9')][_0x9ff6f5[_0x24e1('0x2b')]],{'showHidden':![],'depth':null}));this[_0x24e1('0x1d')](util['format'](_0x24e1('0x33'),this[_0x24e1('0x9')][_0x9ff6f5[_0x24e1('0x2b')]][_0x24e1('0x34')]),_0x24e1('0x35'),this[_0x24e1('0x9')][_0x9ff6f5[_0x24e1('0x2b')]]);}else if(this[_0x24e1('0x7')][_0x9ff6f5[_0x24e1('0x2b')]]){if(this['trunks'][_0x9ff6f5[_0x24e1('0x2b')]][_0x24e1('0x1f')]!==_0x9ff6f5[_0x24e1('0x1f')][_0x24e1('0x2c')]()){this[_0x24e1('0x7')][_0x9ff6f5[_0x24e1('0x2b')]][_0x24e1('0x2e')]=_[_0x24e1('0x2f')](moment()[_0x24e1('0x30')]('x'));}this[_0x24e1('0x7')][_0x9ff6f5['device']][_0x24e1('0x1f')]=_0x9ff6f5[_0x24e1('0x1f')][_0x24e1('0x2c')]();logger['debug'](_0x24e1('0x36'),util[_0x24e1('0x16')](this[_0x24e1('0x7')][_0x9ff6f5[_0x24e1('0x2b')]],{'showHidden':![],'depth':null}));this[_0x24e1('0x1d')](util[_0x24e1('0x30')](_0x24e1('0x27'),this[_0x24e1('0x7')][_0x9ff6f5[_0x24e1('0x2b')]][_0x24e1('0x34')]),'trunk:save',this[_0x24e1('0x7')][_0x9ff6f5[_0x24e1('0x2b')]]);}else if(_[_0x24e1('0x37')](_0x9ff6f5[_0x24e1('0x2b')],'Local')){var _0x23ad88=_0x9ff6f5[_0x24e1('0x2b')];var _0x81b13c=_0x23ad88[_0x24e1('0x38')](_0x23ad88[_0x24e1('0x39')]('/')+0x1,_0x23ad88['indexOf']('@'));var _0x261b58=_[_0x24e1('0x3a')](this[_0x24e1('0x8')],function(_0x7f11c){return _0x7f11c['mobile']==_0x81b13c||_0x7f11c[_0x24e1('0x3b')]==_0x81b13c||_0x7f11c[_0x24e1('0x3c')]==_0x81b13c;});if(_0x261b58){if(_0x261b58[_0x24e1('0x1f')]!==_0x9ff6f5[_0x24e1('0x1f')][_0x24e1('0x2c')]()){_0x261b58[_0x24e1('0x2e')]=_[_0x24e1('0x2f')](moment()[_0x24e1('0x30')]('x'));}_0x261b58[_0x24e1('0x1f')]=_0x9ff6f5[_0x24e1('0x1f')][_0x24e1('0x2c')]();_0x261b58[_0x24e1('0x3d')]=!![];_0x261b58[_0x24e1('0x31')](_0x9ff6f5);}}}}catch(_0x58d4e5){logger['error'](_0x24e1('0x2a'),util[_0x24e1('0x16')](_0x58d4e5,{'showHidden':![],'depth':null}));}};UserReport[_0x24e1('0x1a')][_0x24e1('0x10')]=function(_0x149063){try{if(this[_0x24e1('0x1b')](_0x149063)&&this[_0x24e1('0x1b')](_0x149063[_0x24e1('0x3e')])){logger[_0x24e1('0x29')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x149063[_0x24e1('0x3f')],_0x149063['address'],_0x149063[_0x24e1('0x3e')]);logger[_0x24e1('0x25')]('[userReport][peerstatus]',util[_0x24e1('0x16')](_0x149063,{'showHidden':![],'depth':null}));if(this[_0x24e1('0x8')][_0x149063[_0x24e1('0x3f')]]){if(!this['agents'][_0x149063['peer']]['local']||_0x149063[_0x24e1('0x3e')]['toLowerCase']()==_0x24e1('0x40')){this[_0x24e1('0x8')][_0x149063['peer']]['local']=![];this[_0x24e1('0x8')][_0x149063['peer']][_0x24e1('0x41')]=_0x149063['peerstatus'][_0x24e1('0x2c')]();this[_0x24e1('0x8')][_0x149063[_0x24e1('0x3f')]]['address']=_0x149063[_0x24e1('0x42')];this[_0x24e1('0x8')][_0x149063['peer']][_0x24e1('0x31')](_0x149063);}}else if(this[_0x24e1('0x9')][_0x149063[_0x24e1('0x3f')]]){this[_0x24e1('0x9')][_0x149063[_0x24e1('0x3f')]][_0x24e1('0x41')]=_0x149063['peerstatus'][_0x24e1('0x2c')]();this['telephones'][_0x149063[_0x24e1('0x3f')]][_0x24e1('0x42')]=_0x149063[_0x24e1('0x42')];logger[_0x24e1('0x25')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0x24e1('0x16')](this[_0x24e1('0x9')][_0x149063[_0x24e1('0x3f')]],{'showHidden':![],'depth':null}));this[_0x24e1('0x1d')](util['format']('telephone:%s',this[_0x24e1('0x9')][_0x149063['peer']][_0x24e1('0x34')]),_0x24e1('0x35'),this['telephones'][_0x149063[_0x24e1('0x3f')]]);}else if(this[_0x24e1('0x7')][_0x149063[_0x24e1('0x3f')]]){this[_0x24e1('0x7')][_0x149063['peer']][_0x24e1('0x41')]=_0x149063[_0x24e1('0x3e')]['toLowerCase']();this[_0x24e1('0x7')][_0x149063[_0x24e1('0x3f')]][_0x24e1('0x42')]=_0x149063[_0x24e1('0x42')];logger['debug']('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0x24e1('0x16')](this[_0x24e1('0x7')][_0x149063[_0x24e1('0x3f')]],{'showHidden':![],'depth':null}));this[_0x24e1('0x1d')](util[_0x24e1('0x30')]('trunk:%s',this[_0x24e1('0x7')][_0x149063[_0x24e1('0x3f')]]['name']),_0x24e1('0x28'),this['trunks'][_0x149063['peer']]);}}}catch(_0x25da9c){logger[_0x24e1('0x15')]('[userReport][peerstatus]',util[_0x24e1('0x16')](_0x25da9c,{'showHidden':![],'depth':null}));}};module[_0x24e1('0x43')]=UserReport;
\ No newline at end of file
index 6c19c04..fda4cb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe696=['reason','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','user:agentringnoanswer','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','transfer','talktime','acwtime','acwTimeout','agentacw','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberinterface','memberlastcall','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','custom:voiceAgentReport','values','[%s][voiceAgentReport][hangup]','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','complete','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','diff','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','exports','lodash','moment','util','ioredis','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','voiceChannels','voiceQueues','agents','variables','syncAgentCalled','bind','agentconnect','syncAgentConnect','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','prototype','isNotNull','uniqueid','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','isUndefined','queue','YYYY-MM-DD\x20HH:mm:ss','mandatoryDisposition','type','inbound','voice','assign','omit','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','emit','custom:agentcalled','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','format','user:%s','user:called','error','[%s][voiceAgentReport][agentcalled]','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','merge','interface','pick','destconnectedlinenum','name','accountcode','exten','custom:agentconnect','user:agentconnect','agentringnoanswer','info','agentringnoanswerAt','answeredelsewheremembername','answered_elsewhere'];(function(_0x3474c8,_0x433a13){var _0x41b56d=function(_0x44bf3a){while(--_0x44bf3a){_0x3474c8['push'](_0x3474c8['shift']());}};_0x41b56d(++_0x433a13);}(_0xe696,0x192));var _0x6e69=function(_0x527496,_0x5004a6){_0x527496=_0x527496-0x0;var _0x372684=_0xe696[_0x527496];return _0x372684;};'use strict';var _=require(_0x6e69('0x0'));var moment=require(_0x6e69('0x1'));var util=require(_0x6e69('0x2'));var Redis=require(_0x6e69('0x3'));var config=require('../../../config/environment');var logger=require(_0x6e69('0x4'))(_0x6e69('0x5'));var ami=require(_0x6e69('0x6'));config[_0x6e69('0x7')]=_[_0x6e69('0x8')](config[_0x6e69('0x7')],{'host':_0x6e69('0x9'),'port':0x18eb});var io=require(_0x6e69('0xa'))(new Redis(config[_0x6e69('0x7')]));function VoiceAgentReport(_0x5ba57c){this[_0x6e69('0xb')]={};this[_0x6e69('0xc')]=_0x5ba57c[_0x6e69('0xb')];this[_0x6e69('0xd')]=_0x5ba57c[_0x6e69('0xd')];this['agents']=_0x5ba57c[_0x6e69('0xe')];this[_0x6e69('0xf')]={};ami['on']('agentcalled',this[_0x6e69('0x10')][_0x6e69('0x11')](this));ami['on'](_0x6e69('0x12'),this[_0x6e69('0x13')]['bind'](this));ami['on']('agentringnoanswer',this[_0x6e69('0x14')][_0x6e69('0x11')](this));ami['on'](_0x6e69('0x15'),this[_0x6e69('0x16')][_0x6e69('0x11')](this));ami['on'](_0x6e69('0x17'),this[_0x6e69('0x18')][_0x6e69('0x11')](this));ami['on'](_0x6e69('0x19'),this[_0x6e69('0x1a')][_0x6e69('0x11')](this));ami['on'](_0x6e69('0x1b'),this[_0x6e69('0x1c')][_0x6e69('0x11')](this));ami['on'](_0x6e69('0x1d'),this[_0x6e69('0x1e')][_0x6e69('0x11')](this));ami['on'](_0x6e69('0x1f'),this[_0x6e69('0x20')]['bind'](this));ami['on'](_0x6e69('0x21'),this[_0x6e69('0x22')][_0x6e69('0x11')](this));ami['on'](_0x6e69('0x23'),this['syncBlindTransfer']['bind'](this));}VoiceAgentReport[_0x6e69('0x24')]['emit']=function(_0x331473,_0x3abaae,_0x3d0515){io['to'](_0x331473)['emit'](_0x3abaae,_0x3d0515);};VoiceAgentReport[_0x6e69('0x24')][_0x6e69('0x25')]=function(_0x22f91b){return _0x22f91b!==null&&!_['isUndefined'](_0x22f91b);};VoiceAgentReport[_0x6e69('0x24')][_0x6e69('0x10')]=function(_0x5ac5ca){try{if(this[_0x6e69('0x25')](_0x5ac5ca)){logger['info']('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x5ac5ca[_0x6e69('0x26')],_0x5ac5ca[_0x6e69('0x27')],_0x5ac5ca[_0x6e69('0x28')]);logger[_0x6e69('0x29')](_0x6e69('0x2a'),_0x5ac5ca[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x5ac5ca,{'showHidden':![],'depth':null}));if(_[_0x6e69('0x2c')](this[_0x6e69('0xb')][_0x5ac5ca['uniqueid']])){this[_0x6e69('0xb')][_0x5ac5ca['uniqueid']]={};}var _0x4f1193=this[_0x6e69('0xe')][_0x5ac5ca['interface']];var _0x14a350=this[_0x6e69('0xb')][_0x5ac5ca[_0x6e69('0x26')]][_0x5ac5ca[_0x6e69('0x28')]];var _0x17717b=this[_0x6e69('0xd')][_0x5ac5ca[_0x6e69('0x2d')]];var _0xca725a=this[_0x6e69('0xf')][_0x5ac5ca[_0x6e69('0x26')]];if(_[_0x6e69('0x2c')](_0x14a350)){_0x14a350={'agentcalledAt':moment()['format'](_0x6e69('0x2e')),'lastevent':'called','mandatoryDisposition':_0x17717b&&_0x17717b[_0x6e69('0x2f')]?_0x17717b['mandatoryDisposition']:![],'type':_0x17717b&&_0x17717b[_0x6e69('0x30')]?_0x17717b[_0x6e69('0x30')]:_0x6e69('0x31'),'variables':_0xca725a,'motionChannel':_0x6e69('0x32')};}Object[_0x6e69('0x33')](_0x14a350,_[_0x6e69('0x34')](_0x5ac5ca,['event','privilege']));this[_0x6e69('0xb')][_0x5ac5ca[_0x6e69('0x26')]][_0x5ac5ca[_0x6e69('0x28')]]=_0x14a350;logger[_0x6e69('0x29')](_0x6e69('0x35'),_0x5ac5ca[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x14a350,{'showHidden':![],'depth':null}));ami[_0x6e69('0x36')](_0x6e69('0x37'),_0x14a350);var _0x567dd9={'id':_0x4f1193['id'],'calleridnum':_0x14a350[_0x6e69('0x38')],'queue':_0x14a350[_0x6e69('0x2d')],'variables':_0x14a350['variables'],'uniqueid':_0x5ac5ca[_0x6e69('0x26')]};logger['debug'](_0x6e69('0x39'),_0x5ac5ca[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x567dd9,{'showHidden':![],'depth':null}));this[_0x6e69('0x36')](util[_0x6e69('0x3a')](_0x6e69('0x3b'),_0x5ac5ca[_0x6e69('0x27')]),_0x6e69('0x3c'),_0x567dd9);}}catch(_0x3b0b17){logger[_0x6e69('0x3d')](_0x6e69('0x3e'),_0x5ac5ca[_0x6e69('0x26')],util['inspect'](_0x3b0b17,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6e69('0x24')]['syncAgentConnect']=function(_0x53da39){try{if(this[_0x6e69('0x25')](_0x53da39)){if(this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]]){for(var _0x84019 in this[_0x6e69('0xb')][_0x53da39['uniqueid']]){if(this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x6e69('0x3f')](_0x84019)){if(_0x53da39[_0x6e69('0x28')]===_0x84019){logger['info'](_0x6e69('0x40'),_0x53da39[_0x6e69('0x26')],_0x53da39['membername'],_0x53da39[_0x6e69('0x28')]);this['channels'][_0x53da39[_0x6e69('0x26')]][_0x84019][_0x6e69('0x41')]=moment()['format'](_0x6e69('0x2e'));this[_0x6e69('0xb')][_0x53da39['uniqueid']][_0x84019][_0x6e69('0x42')]=_0x53da39[_0x6e69('0x42')];this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019]['connectedlinenum']=_0x53da39['connectedlinenum'];this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019][_0x6e69('0x43')]=_0x53da39[_0x6e69('0x43')];this['channels'][_0x53da39[_0x6e69('0x26')]][_0x84019][_0x6e69('0x44')]=_0x53da39['destchannelstatedesc'];this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019]['holdtime']=_0x53da39[_0x6e69('0x45')];this[_0x6e69('0xb')][_0x53da39['uniqueid']][_0x84019][_0x6e69('0x46')]=_0x6e69('0x47');if(this[_0x6e69('0xc')][this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019][_0x6e69('0x26')]]){var _0x175378=this[_0x6e69('0xc')][this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019]['uniqueid']][_0x6e69('0x48')];this[_0x6e69('0xb')][_0x53da39['uniqueid']][_0x84019][_0x6e69('0x48')]=_0x175378;_0x53da39[_0x6e69('0x48')]=_0x175378;}_[_0x6e69('0x49')](this['agents'][_0x53da39[_0x6e69('0x4a')]],_[_0x6e69('0x4b')](_0x53da39,[_0x6e69('0x2d'),_0x6e69('0x4c'),_0x6e69('0x48')]));var _0xe431e8=this['agents'][_0x53da39[_0x6e69('0x4a')]];var _0x4d2728={'id':_0xe431e8['id'],'name':_0xe431e8[_0x6e69('0x4d')],'agentconnected':!![],'destaccountcode':_0xe431e8[_0x6e69('0x4e')],'destconnectedlinenum':this['channels'][_0x53da39[_0x6e69('0x26')]][_0x53da39[_0x6e69('0x28')]][_0x6e69('0x4f')],'queue':this['channels'][_0x53da39[_0x6e69('0x26')]][_0x53da39[_0x6e69('0x28')]][_0x6e69('0x2d')],'routealias':this['channels'][_0x53da39['uniqueid']][_0x53da39[_0x6e69('0x28')]][_0x6e69('0x48')],'uniqueid':this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x53da39[_0x6e69('0x28')]][_0x6e69('0x26')]};ami[_0x6e69('0x36')](_0x6e69('0x50'),this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x53da39['destuniqueid']]);this[_0x6e69('0x36')](util[_0x6e69('0x3a')](_0x6e69('0x3b'),_0x53da39['membername']),_0x6e69('0x51'),_0x4d2728);}else if(!this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019][_0x6e69('0x52')]&&!this['channels'][_0x53da39['uniqueid']][_0x84019][_0x6e69('0x17')]){logger[_0x6e69('0x53')]('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x53da39[_0x6e69('0x26')],this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019]['membername'],_0x84019);this[_0x6e69('0xb')][_0x53da39['uniqueid']][_0x84019][_0x6e69('0x52')]=!![];this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019][_0x6e69('0x54')]=moment()[_0x6e69('0x3a')](_0x6e69('0x2e'));this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019]['answeredelsewheredestinationuniqueid']=_0x53da39['destuniqueid'];this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019][_0x6e69('0x55')]=_0x53da39[_0x6e69('0x27')];this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019]['lastevent']=_0x6e69('0x56');this[_0x6e69('0xb')][_0x53da39['uniqueid']][_0x84019][_0x6e69('0x57')]=_0x6e69('0x56');logger[_0x6e69('0x29')]('[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:',_0x53da39[_0x6e69('0x26')],util[_0x6e69('0x2b')](this[_0x6e69('0xb')][_0x53da39[_0x6e69('0x26')]][_0x84019],{'showHidden':![],'depth':null}));ami[_0x6e69('0x36')](_0x6e69('0x58'),this['channels'][_0x53da39[_0x6e69('0x26')]][_0x84019]);}else{logger[_0x6e69('0x29')]('[%s][voiceAgentReport][agentconnect]\x20Else\x20path\x20should\x20never\x20be\x20taken',_0x53da39[_0x6e69('0x26')]);}}}}}}catch(_0x26dd20){logger[_0x6e69('0x3d')]('[%s][voiceAgentReport][agentconnect]',_0x53da39[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x26dd20,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6e69('0x24')][_0x6e69('0x14')]=function(_0xeba125){try{if(this[_0x6e69('0x25')](_0xeba125)){logger[_0x6e69('0x29')](_0x6e69('0x59'),_0xeba125[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0xeba125,{'showHidden':![],'depth':null}));if(this[_0x6e69('0xb')][_0xeba125[_0x6e69('0x26')]]&&this['channels'][_0xeba125['uniqueid']][_0xeba125['destuniqueid']]){logger[_0x6e69('0x53')](_0x6e69('0x5a'),_0xeba125[_0x6e69('0x26')],_0xeba125[_0x6e69('0x27')],_0xeba125[_0x6e69('0x28')]);var _0x282c3f=this['agents'][_0xeba125[_0x6e69('0x4a')]];var _0x223c51=this['channels'][_0xeba125[_0x6e69('0x26')]][_0xeba125[_0x6e69('0x28')]];_0x223c51['agentringnoanswer']=!![];_0x223c51['agentringnoanswerAt']=moment()[_0x6e69('0x3a')](_0x6e69('0x2e'));_0x223c51['lastevent']='rejected';_0x223c51['reason']=_0x6e69('0x5b');var _0x6be0a0={'id':_0x282c3f['id'],'name':_0x282c3f[_0x6e69('0x4d')],'queue':_0x223c51[_0x6e69('0x2d')],'uniqueid':_0x223c51[_0x6e69('0x26')]};logger[_0x6e69('0x29')](_0x6e69('0x5c'),_0xeba125[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x6be0a0,{'showHidden':![],'depth':null}));this[_0x6e69('0x36')](util[_0x6e69('0x3a')]('user:%s',_0x282c3f['name']),_0x6e69('0x5d'),_0x6be0a0);ami['emit'](_0x6e69('0x5e'),_0x223c51);this[_0x6e69('0xb')][_0xeba125[_0x6e69('0x26')]][_0xeba125[_0x6e69('0x28')]]=Object['assign']({},_0x223c51);}}}catch(_0x20cb67){logger[_0x6e69('0x3d')](_0x6e69('0x5f'),_0xeba125[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x20cb67,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6e69('0x24')][_0x6e69('0x16')]=function(_0x58107c){try{if(this[_0x6e69('0x25')](_0x58107c)){logger[_0x6e69('0x29')]('[%s][voiceAgentReport][queuecallerabandon]\x20event:',_0x58107c[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x58107c,{'showHidden':![],'depth':null}));if(this['channels'][_0x58107c[_0x6e69('0x26')]]){for(var _0x56db09 in this['channels'][_0x58107c['uniqueid']]){if(this[_0x6e69('0xb')][_0x58107c[_0x6e69('0x26')]][_0x6e69('0x3f')](_0x56db09)&&!this['channels'][_0x58107c['uniqueid']][_0x56db09][_0x6e69('0x52')]&&!this['channels'][_0x58107c[_0x6e69('0x26')]][_0x56db09][_0x6e69('0x17')]){logger['info'](_0x6e69('0x60'),_0x58107c[_0x6e69('0x26')],this['channels'][_0x58107c[_0x6e69('0x26')]][_0x56db09][_0x6e69('0x27')],_0x56db09);this[_0x6e69('0xb')][_0x58107c['uniqueid']][_0x56db09]['agentringnoanswer']=!![];this[_0x6e69('0xb')][_0x58107c[_0x6e69('0x26')]][_0x56db09][_0x6e69('0x54')]=moment()[_0x6e69('0x3a')](_0x6e69('0x2e'));this[_0x6e69('0xb')][_0x58107c[_0x6e69('0x26')]][_0x56db09]['lastevent']=_0x6e69('0x61');this[_0x6e69('0xb')][_0x58107c[_0x6e69('0x26')]][_0x56db09][_0x6e69('0x57')]=_0x6e69('0x61');logger[_0x6e69('0x29')](_0x6e69('0x62'),_0x58107c['uniqueid'],util['inspect'](this['channels'][_0x58107c[_0x6e69('0x26')]][_0x56db09],{'showHidden':![],'depth':null}));ami[_0x6e69('0x36')](_0x6e69('0x63'),this['channels'][_0x58107c[_0x6e69('0x26')]][_0x56db09]);}}}}}catch(_0x5727b5){logger[_0x6e69('0x3d')](_0x6e69('0x64'),_0x58107c[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x5727b5,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6e69('0x24')][_0x6e69('0x18')]=function(_0x124ba1){try{if(this[_0x6e69('0x25')](_0x124ba1)){logger[_0x6e69('0x29')](_0x6e69('0x65'),_0x124ba1[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x124ba1,{'showHidden':![],'depth':null}));if(this[_0x6e69('0xb')][_0x124ba1['uniqueid']]){for(var _0x53a2d1 in this[_0x6e69('0xb')][_0x124ba1[_0x6e69('0x26')]]){if(this['channels'][_0x124ba1[_0x6e69('0x26')]][_0x6e69('0x3f')](_0x53a2d1)){if(this[_0x6e69('0xb')][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1][_0x6e69('0x41')]&&!this[_0x6e69('0xb')][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1][_0x6e69('0x17')]){logger[_0x6e69('0x53')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x124ba1[_0x6e69('0x26')],this[_0x6e69('0xb')][_0x124ba1['uniqueid']][_0x53a2d1][_0x6e69('0x27')],_0x53a2d1);this['channels'][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1][_0x6e69('0x17')]=!![];this[_0x6e69('0xb')][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1][_0x6e69('0x66')]=moment()[_0x6e69('0x3a')](_0x6e69('0x2e'));this[_0x6e69('0xb')][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1][_0x6e69('0x46')]='complete';this[_0x6e69('0xb')][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1][_0x6e69('0x57')]=_0x124ba1[_0x6e69('0x57')]==_0x6e69('0x67')?'agent':_0x124ba1['reason'];this[_0x6e69('0xb')][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1][_0x6e69('0x68')]=_0x124ba1[_0x6e69('0x68')];if(this['voiceQueues'][_0x124ba1['queue']]&&this[_0x6e69('0xd')][_0x124ba1['queue']]['acw']){this['channels'][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1][_0x6e69('0x69')]=this[_0x6e69('0xd')][_0x124ba1[_0x6e69('0x2d')]][_0x6e69('0x6a')];this['channels'][_0x124ba1['uniqueid']][_0x53a2d1][_0x6e69('0x6b')]=!![];}this['agents'][_0x124ba1[_0x6e69('0x4a')]]=_[_0x6e69('0x34')](this[_0x6e69('0xe')][_0x124ba1['interface']],[_0x6e69('0x2d'),_0x6e69('0x4c')]);logger[_0x6e69('0x29')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x124ba1['uniqueid'],util[_0x6e69('0x2b')](this[_0x6e69('0xb')][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1],{'showHidden':![],'depth':null}));ami[_0x6e69('0x36')](_0x6e69('0x6c'),this[_0x6e69('0xb')][_0x124ba1[_0x6e69('0x26')]][_0x53a2d1]);logger[_0x6e69('0x29')](_0x6e69('0x6d'),_0x124ba1[_0x6e69('0x26')],util['inspect']({'id':this['agents'][_0x124ba1[_0x6e69('0x4a')]]['id'],'destaccountcode':_0x124ba1[_0x6e69('0x6e')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x6e69('0x3a')]('user:%s',_0x124ba1['membername']),'user:agentcomplete',{'id':this[_0x6e69('0xe')][_0x124ba1[_0x6e69('0x4a')]]['id'],'destaccountcode':Number(_0x124ba1['destaccountcode'])});}}}}}}catch(_0x5a66aa){logger[_0x6e69('0x3d')](_0x6e69('0x6f'),_0x124ba1['uniqueid'],util[_0x6e69('0x2b')](_0x5a66aa,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x6e69('0x1a')]=function(_0x3f3e08){try{if(this[_0x6e69('0x25')](_0x3f3e08)){logger[_0x6e69('0x29')](_0x6e69('0x70'),_0x3f3e08[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x3f3e08,{'showHidden':![],'depth':null}));this[_0x6e69('0x71')](_0x3f3e08[_0x6e69('0x26')],_[_0x6e69('0x72')](_0x3f3e08[_0x6e69('0x73')])[0x0],_0x3f3e08[_0x6e69('0x74')]);if(this['channels'][_0x3f3e08[_0x6e69('0x26')]]){for(var _0x529c02 in this[_0x6e69('0xb')][_0x3f3e08[_0x6e69('0x26')]]){if(this[_0x6e69('0xb')][_0x3f3e08[_0x6e69('0x26')]][_0x6e69('0x3f')](_0x529c02)){logger['info'](_0x6e69('0x75'),_0x3f3e08[_0x6e69('0x26')],_0x529c02,_[_0x6e69('0x72')](_0x3f3e08[_0x6e69('0x73')])[0x0],_0x3f3e08[_0x6e69('0x74')]);if(_[_0x6e69('0x2c')](this[_0x6e69('0xb')][_0x3f3e08[_0x6e69('0x26')]][_0x529c02][_0x6e69('0xf')])){this[_0x6e69('0xb')][_0x3f3e08[_0x6e69('0x26')]][_0x529c02][_0x6e69('0xf')]={};}this[_0x6e69('0xb')][_0x3f3e08[_0x6e69('0x26')]][_0x529c02][_0x6e69('0xf')]=this[_0x6e69('0xf')][_0x3f3e08[_0x6e69('0x26')]];}}}}}catch(_0x2022ac){logger['error'](_0x6e69('0x76'),_0x3f3e08[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x2022ac,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x6e69('0x71')]=function(_0x2dde59,_0x487b63,_0x16d380){var _0x24f1ea=[_0x6e69('0x77'),_0x6e69('0x78'),_0x6e69('0x79'),_0x6e69('0x7a'),_0x6e69('0x7b'),_0x6e69('0x7c'),_0x6e69('0x7d'),_0x6e69('0x7e'),_0x6e69('0x7f'),_0x6e69('0x80'),_0x6e69('0x81'),_0x6e69('0x82'),_0x6e69('0x83'),'memberdynamic',_0x6e69('0x84'),_0x6e69('0x85'),_0x6e69('0x27'),'memberpenalty',_0x6e69('0x86')];if(!_[_0x6e69('0x87')](_0x487b63)&&!_[_0x6e69('0x88')](_0x24f1ea,_0x487b63)){if(_[_0x6e69('0x2c')](this[_0x6e69('0xf')][_0x2dde59])){this[_0x6e69('0xf')][_0x2dde59]={};}this[_0x6e69('0xf')][_0x2dde59][_0x487b63]=_0x16d380;}};VoiceAgentReport['prototype']['syncHangup']=function(_0xfc531c){try{if(this['isNotNull'](_0xfc531c)){logger[_0x6e69('0x29')](_0x6e69('0x89'),_0xfc531c[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0xfc531c,{'showHidden':![],'depth':null}));if(this[_0x6e69('0xb')][_0xfc531c[_0x6e69('0x26')]]){for(var _0x4dd140 in this[_0x6e69('0xb')][_0xfc531c[_0x6e69('0x26')]]){if(this[_0x6e69('0xb')][_0xfc531c['uniqueid']]['hasOwnProperty'](_0x4dd140)){if(this['channels'][_0xfc531c[_0x6e69('0x26')]][_0x4dd140][_0x6e69('0x57')]==_0x6e69('0x67')&&this[_0x6e69('0xb')][_0xfc531c['uniqueid']][_0x4dd140][_0x6e69('0x17')]){logger[_0x6e69('0x53')](_0x6e69('0x8a'),_0xfc531c[_0x6e69('0x26')],_0x4dd140);this['channels'][_0xfc531c[_0x6e69('0x26')]][_0x4dd140][_0x6e69('0x66')]=moment()[_0x6e69('0x3a')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger[_0x6e69('0x29')](_0x6e69('0x8b'),_0xfc531c['uniqueid'],util[_0x6e69('0x2b')](_['values'](this[_0x6e69('0xb')][_0xfc531c['uniqueid']]),{'showHidden':![],'depth':null}));ami['emit'](_0x6e69('0x8c'),_[_0x6e69('0x8d')](this[_0x6e69('0xb')][_0xfc531c[_0x6e69('0x26')]]));delete this[_0x6e69('0xb')][_0xfc531c[_0x6e69('0x26')]];}if(this['variables'][_0xfc531c[_0x6e69('0x26')]]){delete this[_0x6e69('0xf')][_0xfc531c[_0x6e69('0x26')]];}}}catch(_0x41b154){logger[_0x6e69('0x3d')](_0x6e69('0x8e'),_0xfc531c['uniqueid'],util[_0x6e69('0x2b')](_0x41b154,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6e69('0x24')][_0x6e69('0x22')]=function(_0x1cf889){try{if(this[_0x6e69('0x25')](_0x1cf889)){logger[_0x6e69('0x29')](_0x6e69('0x8f'),_0x1cf889['uniqueid'],util[_0x6e69('0x2b')](_0x1cf889,{'showHidden':![],'depth':null}));if(this[_0x6e69('0xb')][_0x1cf889[_0x6e69('0x90')]]){for(var _0x45cee4 in this['channels'][_0x1cf889['transfereeuniqueid']]){if(this[_0x6e69('0xb')][_0x1cf889[_0x6e69('0x90')]][_0x6e69('0x3f')](_0x45cee4)){if(_0x1cf889[_0x6e69('0x91')]===_0x45cee4){logger[_0x6e69('0x53')](_0x6e69('0x92'),_0x1cf889[_0x6e69('0x26')],this['channels'][_0x1cf889[_0x6e69('0x90')]][_0x45cee4][_0x6e69('0x27')],_0x45cee4);var _0x16baa2=moment();this['channels'][_0x1cf889['transfereeuniqueid']][_0x45cee4][_0x6e69('0x17')]=!![];this[_0x6e69('0xb')][_0x1cf889[_0x6e69('0x90')]][_0x45cee4][_0x6e69('0x66')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x6e69('0xb')][_0x1cf889[_0x6e69('0x90')]][_0x45cee4][_0x6e69('0x46')]=_0x6e69('0x93');this['channels'][_0x1cf889[_0x6e69('0x90')]][_0x45cee4]['reason']='transfer';this[_0x6e69('0xb')][_0x1cf889[_0x6e69('0x90')]][_0x45cee4]['talktime']=_0x16baa2['diff'](this[_0x6e69('0xb')][_0x1cf889[_0x6e69('0x90')]][_0x45cee4][_0x6e69('0x41')],_0x6e69('0x94'));}}}}if(this['channels'][_0x1cf889[_0x6e69('0x95')]]){var _0x49357c=this[_0x6e69('0xb')][_0x1cf889[_0x6e69('0x95')]];this[_0x6e69('0xb')][_0x1cf889['secondtransfereruniqueid']]=this['channels'][_0x1cf889[_0x6e69('0x90')]];this[_0x6e69('0xb')][_0x1cf889[_0x6e69('0x90')]]=_0x49357c;}}}catch(_0xebb5e6){logger[_0x6e69('0x3d')]('[%s][voiceAgentReport][attendedtransfer]',_0x1cf889[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0xebb5e6,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6e69('0x24')]['syncBlindTransfer']=function(_0x359bbf){try{if(this[_0x6e69('0x25')](_0x359bbf)){logger[_0x6e69('0x29')](_0x6e69('0x96'),_0x359bbf['uniqueid'],util[_0x6e69('0x2b')](_0x359bbf,{'showHidden':![],'depth':null}));if(this[_0x6e69('0xb')][_0x359bbf['transfereeuniqueid']]){for(var _0xf166b7 in this['channels'][_0x359bbf['transfereeuniqueid']]){if(this[_0x6e69('0xb')][_0x359bbf[_0x6e69('0x90')]][_0x6e69('0x3f')](_0xf166b7)){if(_0x359bbf[_0x6e69('0x97')]===_0xf166b7){logger[_0x6e69('0x53')]('[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x359bbf[_0x6e69('0x26')],this[_0x6e69('0xb')][_0x359bbf['transfereeuniqueid']][_0xf166b7]['membername'],_0xf166b7);var _0x34100d=moment();this[_0x6e69('0xb')][_0x359bbf[_0x6e69('0x90')]][_0xf166b7][_0x6e69('0x17')]=!![];this[_0x6e69('0xb')][_0x359bbf[_0x6e69('0x90')]][_0xf166b7]['agentcompleteAt']=_0x34100d;this[_0x6e69('0xb')][_0x359bbf['transfereeuniqueid']][_0xf166b7][_0x6e69('0x46')]=_0x6e69('0x93');this[_0x6e69('0xb')][_0x359bbf['transfereeuniqueid']][_0xf166b7][_0x6e69('0x57')]='transfer';this['channels'][_0x359bbf[_0x6e69('0x90')]][_0xf166b7]['talktime']=_0x34100d[_0x6e69('0x98')](this[_0x6e69('0xb')][_0x359bbf[_0x6e69('0x90')]][_0xf166b7][_0x6e69('0x41')],'seconds');}}}}}}catch(_0x168b18){logger['error'](_0x6e69('0x99'),_0x359bbf[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x168b18,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6e69('0x24')][_0x6e69('0x1e')]=function(_0x28329e){var _0x4824d1='';try{if(this[_0x6e69('0x25')](_0x28329e)){logger[_0x6e69('0x29')](_0x6e69('0x9a'),_0x28329e[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x28329e,{'showHidden':![],'depth':null}));if(_0x28329e['channel']){_0x4824d1=_0x28329e[_0x6e69('0x9b')]['substring'](0x0,_0x28329e['channel']['lastIndexOf']('-'));if(this['agents'][_0x4824d1]){logger[_0x6e69('0x53')]('[%s][voiceAgentReport][musiconholdstart]\x20interface:%s',_0x28329e[_0x6e69('0x26')],_0x4824d1);this['agents'][_0x4824d1][_0x6e69('0x9c')]=!![];}}}}catch(_0x9e1691){logger['error'](_0x6e69('0x9d'),_0x28329e[_0x6e69('0x26')],util[_0x6e69('0x2b')](_0x9e1691,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x6e69('0x24')][_0x6e69('0x20')]=function(_0x16ec5f){var _0x26075b='';try{if(this[_0x6e69('0x25')](_0x16ec5f)){logger['debug'](_0x6e69('0x9e'),_0x16ec5f['uniqueid'],util[_0x6e69('0x2b')](_0x16ec5f,{'showHidden':![],'depth':null}));if(_0x16ec5f['channel']){_0x26075b=_0x16ec5f[_0x6e69('0x9b')][_0x6e69('0x9f')](0x0,_0x16ec5f[_0x6e69('0x9b')][_0x6e69('0xa0')]('-'));if(this[_0x6e69('0xe')][_0x26075b]){logger[_0x6e69('0x53')](_0x6e69('0xa1'),_0x16ec5f[_0x6e69('0x26')],_0x26075b);this[_0x6e69('0xe')][_0x26075b]['onhold']=![];}}}}catch(_0x208198){logger[_0x6e69('0x3d')]('[%s][voiceAgentReport][musiconholdstop]',_0x16ec5f['uniqueid'],util[_0x6e69('0x2b')](_0x208198,{'showHidden':![],'depth':null}));}};module[_0x6e69('0xa2')]=VoiceAgentReport;
\ No newline at end of file
+var _0xe2fe=['name','accountcode','exten','custom:agentconnect','user:agentconnect','agentringnoanswerAt','answeredelsewheremembername','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentconnect]\x20Else\x20path\x20should\x20never\x20be\x20taken','[%s][voiceAgentReport][agentconnect]','syncAgentRingNoAnswer','[%s][voiceAgentReport][agentringnoanswer]\x20event:','rejected','user:agentringnoanswer','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','syncAgentComplete','[%s][voiceAgentReport][agentcomplete]\x20event:','complete','transfer','agent','talktime','acw','acwTimeout','agentacw','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','syncVarSet','[%s][voiceAgentReport][varset]\x20event:','keys','variable','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','value','[%s][voiceAgentReport][varset]','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosrtt','sipcallid','bridgepeer','bridgepvtcallid','memberdynamic','memberinterface','memberlastcall','memberrealtime','isNil','syncHangup','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','agentcompleteAt','values','custom:voiceAgentReport','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][musiconholdstart]\x20event:','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','onhold','exports','lodash','moment','ioredis','../../../config/logger','ami','../ami','defaults','socket.io-emitter','redis','channels','voiceChannels','voiceQueues','agents','variables','syncAgentCalled','bind','agentconnect','agentringnoanswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','varset','hangup','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncAttendedTransfer','blindtransfer','syncBlindTransfer','emit','prototype','isUndefined','isNotNull','info','uniqueid','membername','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','destuniqueid','queue','format','YYYY-MM-DD\x20HH:mm:ss','called','mandatoryDisposition','type','voice','assign','omit','privilege','user:%s','user:called','error','syncAgentConnect','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','routealias','interface','pick','destconnectedlinenum'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe2fe,0xe7));var _0xee2f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe2fe[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xee2f('0x0'));var moment=require(_0xee2f('0x1'));var util=require('util');var Redis=require(_0xee2f('0x2'));var config=require('../../../config/environment');var logger=require(_0xee2f('0x3'))(_0xee2f('0x4'));var ami=require(_0xee2f('0x5'));config['redis']=_[_0xee2f('0x6')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xee2f('0x7'))(new Redis(config[_0xee2f('0x8')]));function VoiceAgentReport(_0x1116d7){this[_0xee2f('0x9')]={};this[_0xee2f('0xa')]=_0x1116d7[_0xee2f('0x9')];this[_0xee2f('0xb')]=_0x1116d7[_0xee2f('0xb')];this['agents']=_0x1116d7[_0xee2f('0xc')];this[_0xee2f('0xd')]={};ami['on']('agentcalled',this[_0xee2f('0xe')][_0xee2f('0xf')](this));ami['on'](_0xee2f('0x10'),this['syncAgentConnect'][_0xee2f('0xf')](this));ami['on'](_0xee2f('0x11'),this['syncAgentRingNoAnswer'][_0xee2f('0xf')](this));ami['on'](_0xee2f('0x12'),this[_0xee2f('0x13')][_0xee2f('0xf')](this));ami['on'](_0xee2f('0x14'),this['syncAgentComplete'][_0xee2f('0xf')](this));ami['on'](_0xee2f('0x15'),this['syncVarSet'][_0xee2f('0xf')](this));ami['on'](_0xee2f('0x16'),this['syncHangup']['bind'](this));ami['on'](_0xee2f('0x17'),this[_0xee2f('0x18')][_0xee2f('0xf')](this));ami['on'](_0xee2f('0x19'),this['syncMusicOnHoldStop']['bind'](this));ami['on']('attendedtransfer',this[_0xee2f('0x1a')][_0xee2f('0xf')](this));ami['on'](_0xee2f('0x1b'),this[_0xee2f('0x1c')][_0xee2f('0xf')](this));}VoiceAgentReport['prototype'][_0xee2f('0x1d')]=function(_0x525a41,_0xa34688,_0x3412ad){io['to'](_0x525a41)['emit'](_0xa34688,_0x3412ad);};VoiceAgentReport[_0xee2f('0x1e')]['isNotNull']=function(_0x54331e){return _0x54331e!==null&&!_[_0xee2f('0x1f')](_0x54331e);};VoiceAgentReport[_0xee2f('0x1e')][_0xee2f('0xe')]=function(_0x162377){try{if(this[_0xee2f('0x20')](_0x162377)){logger[_0xee2f('0x21')]('[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x162377[_0xee2f('0x22')],_0x162377[_0xee2f('0x23')],_0x162377['destuniqueid']);logger[_0xee2f('0x24')](_0xee2f('0x25'),_0x162377['uniqueid'],util[_0xee2f('0x26')](_0x162377,{'showHidden':![],'depth':null}));if(_[_0xee2f('0x1f')](this['channels'][_0x162377[_0xee2f('0x22')]])){this[_0xee2f('0x9')][_0x162377['uniqueid']]={};}var _0x23fe23=this[_0xee2f('0xc')][_0x162377['interface']];var _0x590b5f=this[_0xee2f('0x9')][_0x162377[_0xee2f('0x22')]][_0x162377[_0xee2f('0x27')]];var _0x234dd4=this[_0xee2f('0xb')][_0x162377[_0xee2f('0x28')]];var _0x10105f=this['variables'][_0x162377['uniqueid']];if(_['isUndefined'](_0x590b5f)){_0x590b5f={'agentcalledAt':moment()[_0xee2f('0x29')](_0xee2f('0x2a')),'lastevent':_0xee2f('0x2b'),'mandatoryDisposition':_0x234dd4&&_0x234dd4[_0xee2f('0x2c')]?_0x234dd4['mandatoryDisposition']:![],'type':_0x234dd4&&_0x234dd4['type']?_0x234dd4[_0xee2f('0x2d')]:'inbound','variables':_0x10105f,'motionChannel':_0xee2f('0x2e')};}Object[_0xee2f('0x2f')](_0x590b5f,_[_0xee2f('0x30')](_0x162377,['event',_0xee2f('0x31')]));this[_0xee2f('0x9')][_0x162377['uniqueid']][_0x162377[_0xee2f('0x27')]]=_0x590b5f;logger[_0xee2f('0x24')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:',_0x162377[_0xee2f('0x22')],util[_0xee2f('0x26')](_0x590b5f,{'showHidden':![],'depth':null}));ami['emit']('custom:agentcalled',_0x590b5f);var _0x411a34={'id':_0x23fe23['id'],'calleridnum':_0x590b5f['calleridnum'],'queue':_0x590b5f[_0xee2f('0x28')],'variables':_0x590b5f['variables'],'uniqueid':_0x162377[_0xee2f('0x22')]};logger['debug']('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:',_0x162377[_0xee2f('0x22')],util[_0xee2f('0x26')](_0x411a34,{'showHidden':![],'depth':null}));this[_0xee2f('0x1d')](util[_0xee2f('0x29')](_0xee2f('0x32'),_0x162377['membername']),_0xee2f('0x33'),_0x411a34);}}catch(_0x1cf18d){logger[_0xee2f('0x34')]('[%s][voiceAgentReport][agentcalled]',_0x162377[_0xee2f('0x22')],util[_0xee2f('0x26')](_0x1cf18d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xee2f('0x1e')][_0xee2f('0x35')]=function(_0x130f46){try{if(this['isNotNull'](_0x130f46)){if(this[_0xee2f('0x9')][_0x130f46[_0xee2f('0x22')]]){for(var _0x2c16b8 in this[_0xee2f('0x9')][_0x130f46[_0xee2f('0x22')]]){if(this['channels'][_0x130f46[_0xee2f('0x22')]][_0xee2f('0x36')](_0x2c16b8)){if(_0x130f46['destuniqueid']===_0x2c16b8){logger['info'](_0xee2f('0x37'),_0x130f46[_0xee2f('0x22')],_0x130f46[_0xee2f('0x23')],_0x130f46['destuniqueid']);this['channels'][_0x130f46[_0xee2f('0x22')]][_0x2c16b8][_0xee2f('0x38')]=moment()[_0xee2f('0x29')](_0xee2f('0x2a'));this['channels'][_0x130f46[_0xee2f('0x22')]][_0x2c16b8][_0xee2f('0x39')]=_0x130f46[_0xee2f('0x39')];this[_0xee2f('0x9')][_0x130f46['uniqueid']][_0x2c16b8]['connectedlinenum']=_0x130f46[_0xee2f('0x3a')];this['channels'][_0x130f46['uniqueid']][_0x2c16b8][_0xee2f('0x3b')]=_0x130f46['destchannelstate'];this[_0xee2f('0x9')][_0x130f46['uniqueid']][_0x2c16b8][_0xee2f('0x3c')]=_0x130f46[_0xee2f('0x3c')];this['channels'][_0x130f46[_0xee2f('0x22')]][_0x2c16b8][_0xee2f('0x3d')]=_0x130f46[_0xee2f('0x3d')];this[_0xee2f('0x9')][_0x130f46[_0xee2f('0x22')]][_0x2c16b8][_0xee2f('0x3e')]='connect';if(this[_0xee2f('0xa')][this[_0xee2f('0x9')][_0x130f46['uniqueid']][_0x2c16b8][_0xee2f('0x22')]]){var _0x3cfce4=this[_0xee2f('0xa')][this[_0xee2f('0x9')][_0x130f46[_0xee2f('0x22')]][_0x2c16b8][_0xee2f('0x22')]][_0xee2f('0x3f')];this[_0xee2f('0x9')][_0x130f46[_0xee2f('0x22')]][_0x2c16b8][_0xee2f('0x3f')]=_0x3cfce4;_0x130f46[_0xee2f('0x3f')]=_0x3cfce4;}_['merge'](this[_0xee2f('0xc')][_0x130f46[_0xee2f('0x40')]],_[_0xee2f('0x41')](_0x130f46,['queue',_0xee2f('0x42'),'routealias']));var _0x19da1f=this[_0xee2f('0xc')][_0x130f46['interface']];var _0x31f7a4={'id':_0x19da1f['id'],'name':_0x19da1f[_0xee2f('0x43')],'agentconnected':!![],'destaccountcode':_0x19da1f[_0xee2f('0x44')],'destconnectedlinenum':this[_0xee2f('0x9')][_0x130f46[_0xee2f('0x22')]][_0x130f46[_0xee2f('0x27')]][_0xee2f('0x45')],'queue':this[_0xee2f('0x9')][_0x130f46[_0xee2f('0x22')]][_0x130f46[_0xee2f('0x27')]][_0xee2f('0x28')],'routealias':this[_0xee2f('0x9')][_0x130f46['uniqueid']][_0x130f46[_0xee2f('0x27')]][_0xee2f('0x3f')],'uniqueid':this['channels'][_0x130f46[_0xee2f('0x22')]][_0x130f46['destuniqueid']][_0xee2f('0x22')]};ami['emit'](_0xee2f('0x46'),this['channels'][_0x130f46[_0xee2f('0x22')]][_0x130f46[_0xee2f('0x27')]]);this[_0xee2f('0x1d')](util[_0xee2f('0x29')]('user:%s',_0x130f46[_0xee2f('0x23')]),_0xee2f('0x47'),_0x31f7a4);}else if(!this[_0xee2f('0x9')][_0x130f46[_0xee2f('0x22')]][_0x2c16b8][_0xee2f('0x11')]&&!this[_0xee2f('0x9')][_0x130f46[_0xee2f('0x22')]][_0x2c16b8][_0xee2f('0x14')]){logger[_0xee2f('0x21')]('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x130f46[_0xee2f('0x22')],this[_0xee2f('0x9')][_0x130f46['uniqueid']][_0x2c16b8][_0xee2f('0x23')],_0x2c16b8);this['channels'][_0x130f46[_0xee2f('0x22')]][_0x2c16b8]['agentringnoanswer']=!![];this['channels'][_0x130f46[_0xee2f('0x22')]][_0x2c16b8][_0xee2f('0x48')]=moment()[_0xee2f('0x29')](_0xee2f('0x2a'));this[_0xee2f('0x9')][_0x130f46[_0xee2f('0x22')]][_0x2c16b8]['answeredelsewheredestinationuniqueid']=_0x130f46[_0xee2f('0x27')];this[_0xee2f('0x9')][_0x130f46[_0xee2f('0x22')]][_0x2c16b8][_0xee2f('0x49')]=_0x130f46[_0xee2f('0x23')];this[_0xee2f('0x9')][_0x130f46[_0xee2f('0x22')]][_0x2c16b8][_0xee2f('0x3e')]=_0xee2f('0x4a');this['channels'][_0x130f46[_0xee2f('0x22')]][_0x2c16b8][_0xee2f('0x4b')]='answered_elsewhere';logger[_0xee2f('0x24')](_0xee2f('0x4c'),_0x130f46[_0xee2f('0x22')],util[_0xee2f('0x26')](this[_0xee2f('0x9')][_0x130f46['uniqueid']][_0x2c16b8],{'showHidden':![],'depth':null}));ami[_0xee2f('0x1d')](_0xee2f('0x4d'),this[_0xee2f('0x9')][_0x130f46['uniqueid']][_0x2c16b8]);}else{logger[_0xee2f('0x24')](_0xee2f('0x4e'),_0x130f46['uniqueid']);}}}}}}catch(_0x1b73ea){logger['error'](_0xee2f('0x4f'),_0x130f46[_0xee2f('0x22')],util[_0xee2f('0x26')](_0x1b73ea,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xee2f('0x50')]=function(_0x5358db){try{if(this[_0xee2f('0x20')](_0x5358db)){logger[_0xee2f('0x24')](_0xee2f('0x51'),_0x5358db[_0xee2f('0x22')],util['inspect'](_0x5358db,{'showHidden':![],'depth':null}));if(this[_0xee2f('0x9')][_0x5358db['uniqueid']]&&this['channels'][_0x5358db['uniqueid']][_0x5358db[_0xee2f('0x27')]]){logger[_0xee2f('0x21')]('[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected',_0x5358db[_0xee2f('0x22')],_0x5358db['membername'],_0x5358db[_0xee2f('0x27')]);var _0x38dadc=this[_0xee2f('0xc')][_0x5358db[_0xee2f('0x40')]];var _0x14a4ce=this[_0xee2f('0x9')][_0x5358db[_0xee2f('0x22')]][_0x5358db[_0xee2f('0x27')]];_0x14a4ce[_0xee2f('0x11')]=!![];_0x14a4ce['agentringnoanswerAt']=moment()[_0xee2f('0x29')]('YYYY-MM-DD\x20HH:mm:ss');_0x14a4ce[_0xee2f('0x3e')]='rejected';_0x14a4ce[_0xee2f('0x4b')]=_0xee2f('0x52');var _0x4ec42f={'id':_0x38dadc['id'],'name':_0x38dadc[_0xee2f('0x43')],'queue':_0x14a4ce[_0xee2f('0x28')],'uniqueid':_0x14a4ce[_0xee2f('0x22')]};logger[_0xee2f('0x24')]('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x5358db[_0xee2f('0x22')],util[_0xee2f('0x26')](_0x4ec42f,{'showHidden':![],'depth':null}));this[_0xee2f('0x1d')](util[_0xee2f('0x29')](_0xee2f('0x32'),_0x38dadc['name']),_0xee2f('0x53'),_0x4ec42f);ami['emit'](_0xee2f('0x54'),_0x14a4ce);this['channels'][_0x5358db[_0xee2f('0x22')]][_0x5358db[_0xee2f('0x27')]]=Object[_0xee2f('0x2f')]({},_0x14a4ce);}}}catch(_0xdf9976){logger['error'](_0xee2f('0x55'),_0x5358db[_0xee2f('0x22')],util['inspect'](_0xdf9976,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0xee2f('0x13')]=function(_0x3af35a){try{if(this[_0xee2f('0x20')](_0x3af35a)){logger[_0xee2f('0x24')](_0xee2f('0x56'),_0x3af35a[_0xee2f('0x22')],util[_0xee2f('0x26')](_0x3af35a,{'showHidden':![],'depth':null}));if(this['channels'][_0x3af35a[_0xee2f('0x22')]]){for(var _0x465d3c in this[_0xee2f('0x9')][_0x3af35a[_0xee2f('0x22')]]){if(this['channels'][_0x3af35a['uniqueid']][_0xee2f('0x36')](_0x465d3c)&&!this['channels'][_0x3af35a[_0xee2f('0x22')]][_0x465d3c][_0xee2f('0x11')]&&!this[_0xee2f('0x9')][_0x3af35a[_0xee2f('0x22')]][_0x465d3c]['agentcomplete']){logger['info'](_0xee2f('0x57'),_0x3af35a[_0xee2f('0x22')],this[_0xee2f('0x9')][_0x3af35a[_0xee2f('0x22')]][_0x465d3c]['membername'],_0x465d3c);this[_0xee2f('0x9')][_0x3af35a[_0xee2f('0x22')]][_0x465d3c][_0xee2f('0x11')]=!![];this[_0xee2f('0x9')][_0x3af35a[_0xee2f('0x22')]][_0x465d3c][_0xee2f('0x48')]=moment()[_0xee2f('0x29')](_0xee2f('0x2a'));this[_0xee2f('0x9')][_0x3af35a[_0xee2f('0x22')]][_0x465d3c][_0xee2f('0x3e')]=_0xee2f('0x58');this['channels'][_0x3af35a[_0xee2f('0x22')]][_0x465d3c][_0xee2f('0x4b')]=_0xee2f('0x58');logger[_0xee2f('0x24')](_0xee2f('0x59'),_0x3af35a[_0xee2f('0x22')],util[_0xee2f('0x26')](this[_0xee2f('0x9')][_0x3af35a[_0xee2f('0x22')]][_0x465d3c],{'showHidden':![],'depth':null}));ami[_0xee2f('0x1d')](_0xee2f('0x5a'),this[_0xee2f('0x9')][_0x3af35a[_0xee2f('0x22')]][_0x465d3c]);}}}}}catch(_0x105088){logger[_0xee2f('0x34')](_0xee2f('0x5b'),_0x3af35a[_0xee2f('0x22')],util[_0xee2f('0x26')](_0x105088,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xee2f('0x1e')][_0xee2f('0x5c')]=function(_0x56520b){try{if(this[_0xee2f('0x20')](_0x56520b)){logger[_0xee2f('0x24')](_0xee2f('0x5d'),_0x56520b['uniqueid'],util[_0xee2f('0x26')](_0x56520b,{'showHidden':![],'depth':null}));if(this[_0xee2f('0x9')][_0x56520b[_0xee2f('0x22')]]){for(var _0x1e1c47 in this[_0xee2f('0x9')][_0x56520b[_0xee2f('0x22')]]){if(this[_0xee2f('0x9')][_0x56520b['uniqueid']][_0xee2f('0x36')](_0x1e1c47)){if(this['channels'][_0x56520b[_0xee2f('0x22')]][_0x1e1c47][_0xee2f('0x38')]&&!this[_0xee2f('0x9')][_0x56520b['uniqueid']][_0x1e1c47][_0xee2f('0x14')]){logger['info']('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x56520b[_0xee2f('0x22')],this[_0xee2f('0x9')][_0x56520b[_0xee2f('0x22')]][_0x1e1c47][_0xee2f('0x23')],_0x1e1c47);this[_0xee2f('0x9')][_0x56520b[_0xee2f('0x22')]][_0x1e1c47][_0xee2f('0x14')]=!![];this[_0xee2f('0x9')][_0x56520b['uniqueid']][_0x1e1c47]['agentcompleteAt']=moment()[_0xee2f('0x29')](_0xee2f('0x2a'));this['channels'][_0x56520b[_0xee2f('0x22')]][_0x1e1c47][_0xee2f('0x3e')]=_0xee2f('0x5e');this[_0xee2f('0x9')][_0x56520b[_0xee2f('0x22')]][_0x1e1c47][_0xee2f('0x4b')]=_0x56520b[_0xee2f('0x4b')]==_0xee2f('0x5f')?_0xee2f('0x60'):_0x56520b[_0xee2f('0x4b')];this[_0xee2f('0x9')][_0x56520b['uniqueid']][_0x1e1c47][_0xee2f('0x61')]=_0x56520b['talktime'];if(this[_0xee2f('0xb')][_0x56520b['queue']]&&this[_0xee2f('0xb')][_0x56520b['queue']][_0xee2f('0x62')]){this[_0xee2f('0x9')][_0x56520b['uniqueid']][_0x1e1c47]['acwtime']=this[_0xee2f('0xb')][_0x56520b[_0xee2f('0x28')]][_0xee2f('0x63')];this[_0xee2f('0x9')][_0x56520b[_0xee2f('0x22')]][_0x1e1c47][_0xee2f('0x64')]=!![];}this['agents'][_0x56520b[_0xee2f('0x40')]]=_[_0xee2f('0x30')](this[_0xee2f('0xc')][_0x56520b['interface']],[_0xee2f('0x28'),_0xee2f('0x42')]);logger[_0xee2f('0x24')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x56520b['uniqueid'],util[_0xee2f('0x26')](this[_0xee2f('0x9')][_0x56520b[_0xee2f('0x22')]][_0x1e1c47],{'showHidden':![],'depth':null}));ami[_0xee2f('0x1d')](_0xee2f('0x65'),this[_0xee2f('0x9')][_0x56520b[_0xee2f('0x22')]][_0x1e1c47]);logger[_0xee2f('0x24')](_0xee2f('0x66'),_0x56520b['uniqueid'],util[_0xee2f('0x26')]({'id':this[_0xee2f('0xc')][_0x56520b[_0xee2f('0x40')]]['id'],'destaccountcode':_0x56520b[_0xee2f('0x67')]},{'showHidden':![],'depth':null}));this[_0xee2f('0x1d')](util[_0xee2f('0x29')](_0xee2f('0x32'),_0x56520b[_0xee2f('0x23')]),_0xee2f('0x68'),{'id':this[_0xee2f('0xc')][_0x56520b[_0xee2f('0x40')]]['id'],'destaccountcode':Number(_0x56520b[_0xee2f('0x67')])});}}}}}}catch(_0x1cf1ab){logger['error'](_0xee2f('0x69'),_0x56520b[_0xee2f('0x22')],util[_0xee2f('0x26')](_0x1cf1ab,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xee2f('0x1e')][_0xee2f('0x6a')]=function(_0x42ba50){try{if(this[_0xee2f('0x20')](_0x42ba50)){logger['debug'](_0xee2f('0x6b'),_0x42ba50[_0xee2f('0x22')],util[_0xee2f('0x26')](_0x42ba50,{'showHidden':![],'depth':null}));this['addVariable'](_0x42ba50['uniqueid'],_[_0xee2f('0x6c')](_0x42ba50[_0xee2f('0x6d')])[0x0],_0x42ba50['value']);if(this[_0xee2f('0x9')][_0x42ba50[_0xee2f('0x22')]]){for(var _0x2fdb92 in this['channels'][_0x42ba50['uniqueid']]){if(this[_0xee2f('0x9')][_0x42ba50['uniqueid']][_0xee2f('0x36')](_0x2fdb92)){logger[_0xee2f('0x21')](_0xee2f('0x6e'),_0x42ba50[_0xee2f('0x22')],_0x2fdb92,_[_0xee2f('0x6c')](_0x42ba50[_0xee2f('0x6d')])[0x0],_0x42ba50[_0xee2f('0x6f')]);if(_[_0xee2f('0x1f')](this['channels'][_0x42ba50[_0xee2f('0x22')]][_0x2fdb92][_0xee2f('0xd')])){this[_0xee2f('0x9')][_0x42ba50[_0xee2f('0x22')]][_0x2fdb92][_0xee2f('0xd')]={};}this[_0xee2f('0x9')][_0x42ba50[_0xee2f('0x22')]][_0x2fdb92][_0xee2f('0xd')]=this[_0xee2f('0xd')][_0x42ba50[_0xee2f('0x22')]];}}}}}catch(_0x842f73){logger[_0xee2f('0x34')](_0xee2f('0x70'),_0x42ba50['uniqueid'],util[_0xee2f('0x26')](_0x842f73,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xee2f('0x1e')][_0xee2f('0x71')]=function(_0x2921b8,_0x3659cc,_0x50f4d5){var _0x32bffd=[_0xee2f('0x72'),_0xee2f('0x73'),'rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged',_0xee2f('0x74'),'rtpaudioqosrttbridged',_0xee2f('0x75'),'sipuri',_0xee2f('0x76'),_0xee2f('0x77'),'membercalls',_0xee2f('0x78'),_0xee2f('0x79'),_0xee2f('0x7a'),_0xee2f('0x23'),'memberpenalty',_0xee2f('0x7b')];if(!_[_0xee2f('0x7c')](_0x3659cc)&&!_['includes'](_0x32bffd,_0x3659cc)){if(_['isUndefined'](this[_0xee2f('0xd')][_0x2921b8])){this[_0xee2f('0xd')][_0x2921b8]={};}this[_0xee2f('0xd')][_0x2921b8][_0x3659cc]=_0x50f4d5;}};VoiceAgentReport[_0xee2f('0x1e')][_0xee2f('0x7d')]=function(_0x24ea64){try{if(this[_0xee2f('0x20')](_0x24ea64)){logger[_0xee2f('0x24')]('[%s][voiceAgentReport][hangup]\x20event:',_0x24ea64['uniqueid'],util['inspect'](_0x24ea64,{'showHidden':![],'depth':null}));if(this[_0xee2f('0x9')][_0x24ea64[_0xee2f('0x22')]]){for(var _0x35cc6d in this['channels'][_0x24ea64['uniqueid']]){if(this[_0xee2f('0x9')][_0x24ea64['uniqueid']]['hasOwnProperty'](_0x35cc6d)){if(this[_0xee2f('0x9')][_0x24ea64[_0xee2f('0x22')]][_0x35cc6d][_0xee2f('0x4b')]==_0xee2f('0x5f')&&this[_0xee2f('0x9')][_0x24ea64[_0xee2f('0x22')]][_0x35cc6d][_0xee2f('0x14')]){logger[_0xee2f('0x21')](_0xee2f('0x7e'),_0x24ea64[_0xee2f('0x22')],_0x35cc6d);this['channels'][_0x24ea64[_0xee2f('0x22')]][_0x35cc6d][_0xee2f('0x7f')]=moment()[_0xee2f('0x29')](_0xee2f('0x2a'));}}}logger[_0xee2f('0x24')]('[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:',_0x24ea64[_0xee2f('0x22')],util[_0xee2f('0x26')](_[_0xee2f('0x80')](this[_0xee2f('0x9')][_0x24ea64['uniqueid']]),{'showHidden':![],'depth':null}));ami['emit'](_0xee2f('0x81'),_[_0xee2f('0x80')](this[_0xee2f('0x9')][_0x24ea64[_0xee2f('0x22')]]));delete this[_0xee2f('0x9')][_0x24ea64[_0xee2f('0x22')]];}if(this[_0xee2f('0xd')][_0x24ea64[_0xee2f('0x22')]]){delete this[_0xee2f('0xd')][_0x24ea64[_0xee2f('0x22')]];}}}catch(_0x2aa20e){logger[_0xee2f('0x34')]('[%s][voiceAgentReport][hangup]',_0x24ea64[_0xee2f('0x22')],util[_0xee2f('0x26')](_0x2aa20e,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xee2f('0x1e')][_0xee2f('0x1a')]=function(_0x199c14){try{if(this[_0xee2f('0x20')](_0x199c14)){logger['debug'](_0xee2f('0x82'),_0x199c14[_0xee2f('0x22')],util[_0xee2f('0x26')](_0x199c14,{'showHidden':![],'depth':null}));if(this['channels'][_0x199c14[_0xee2f('0x83')]]){for(var _0x4c769b in this[_0xee2f('0x9')][_0x199c14[_0xee2f('0x83')]]){if(this[_0xee2f('0x9')][_0x199c14[_0xee2f('0x83')]][_0xee2f('0x36')](_0x4c769b)){if(_0x199c14[_0xee2f('0x84')]===_0x4c769b){logger['info']('[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x199c14[_0xee2f('0x22')],this['channels'][_0x199c14[_0xee2f('0x83')]][_0x4c769b][_0xee2f('0x23')],_0x4c769b);var _0x475645=moment();this[_0xee2f('0x9')][_0x199c14[_0xee2f('0x83')]][_0x4c769b][_0xee2f('0x14')]=!![];this[_0xee2f('0x9')][_0x199c14[_0xee2f('0x83')]][_0x4c769b]['agentcompleteAt']=moment()[_0xee2f('0x29')](_0xee2f('0x2a'));this[_0xee2f('0x9')][_0x199c14['transfereeuniqueid']][_0x4c769b]['lastevent']='complete';this[_0xee2f('0x9')][_0x199c14['transfereeuniqueid']][_0x4c769b][_0xee2f('0x4b')]='transfer';this[_0xee2f('0x9')][_0x199c14[_0xee2f('0x83')]][_0x4c769b][_0xee2f('0x61')]=_0x475645[_0xee2f('0x85')](this[_0xee2f('0x9')][_0x199c14[_0xee2f('0x83')]][_0x4c769b]['agentconnectAt'],_0xee2f('0x86'));}}}}if(this[_0xee2f('0x9')][_0x199c14[_0xee2f('0x87')]]){var _0x3c18ff=this[_0xee2f('0x9')][_0x199c14['secondtransfereruniqueid']];this[_0xee2f('0x9')][_0x199c14[_0xee2f('0x87')]]=this['channels'][_0x199c14[_0xee2f('0x83')]];this['channels'][_0x199c14[_0xee2f('0x83')]]=_0x3c18ff;}}}catch(_0x203908){logger[_0xee2f('0x34')](_0xee2f('0x88'),_0x199c14['uniqueid'],util[_0xee2f('0x26')](_0x203908,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xee2f('0x1e')]['syncBlindTransfer']=function(_0x20705e){try{if(this[_0xee2f('0x20')](_0x20705e)){logger['debug'](_0xee2f('0x89'),_0x20705e[_0xee2f('0x22')],util[_0xee2f('0x26')](_0x20705e,{'showHidden':![],'depth':null}));if(this[_0xee2f('0x9')][_0x20705e[_0xee2f('0x83')]]){for(var _0x3d1c7f in this[_0xee2f('0x9')][_0x20705e[_0xee2f('0x83')]]){if(this[_0xee2f('0x9')][_0x20705e['transfereeuniqueid']][_0xee2f('0x36')](_0x3d1c7f)){if(_0x20705e['transfereruniqueid']===_0x3d1c7f){logger[_0xee2f('0x21')](_0xee2f('0x8a'),_0x20705e[_0xee2f('0x22')],this['channels'][_0x20705e[_0xee2f('0x83')]][_0x3d1c7f][_0xee2f('0x23')],_0x3d1c7f);var _0x2ef571=moment();this['channels'][_0x20705e[_0xee2f('0x83')]][_0x3d1c7f][_0xee2f('0x14')]=!![];this[_0xee2f('0x9')][_0x20705e[_0xee2f('0x83')]][_0x3d1c7f][_0xee2f('0x7f')]=_0x2ef571;this[_0xee2f('0x9')][_0x20705e[_0xee2f('0x83')]][_0x3d1c7f][_0xee2f('0x3e')]=_0xee2f('0x5e');this[_0xee2f('0x9')][_0x20705e[_0xee2f('0x83')]][_0x3d1c7f]['reason']=_0xee2f('0x5f');this[_0xee2f('0x9')][_0x20705e[_0xee2f('0x83')]][_0x3d1c7f][_0xee2f('0x61')]=_0x2ef571['diff'](this[_0xee2f('0x9')][_0x20705e[_0xee2f('0x83')]][_0x3d1c7f][_0xee2f('0x38')],_0xee2f('0x86'));}}}}}}catch(_0x16b28c){logger[_0xee2f('0x34')]('[%s][voiceAgentReport][blindtransfer]',_0x20705e[_0xee2f('0x22')],util[_0xee2f('0x26')](_0x16b28c,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xee2f('0x1e')][_0xee2f('0x18')]=function(_0x1a7f62){var _0x6d3e49='';try{if(this['isNotNull'](_0x1a7f62)){logger[_0xee2f('0x24')](_0xee2f('0x8b'),_0x1a7f62['uniqueid'],util[_0xee2f('0x26')](_0x1a7f62,{'showHidden':![],'depth':null}));if(_0x1a7f62[_0xee2f('0x8c')]){_0x6d3e49=_0x1a7f62[_0xee2f('0x8c')][_0xee2f('0x8d')](0x0,_0x1a7f62[_0xee2f('0x8c')][_0xee2f('0x8e')]('-'));if(this[_0xee2f('0xc')][_0x6d3e49]){logger[_0xee2f('0x21')](_0xee2f('0x8f'),_0x1a7f62[_0xee2f('0x22')],_0x6d3e49);this[_0xee2f('0xc')][_0x6d3e49]['onhold']=!![];}}}}catch(_0x3e5ae1){logger[_0xee2f('0x34')](_0xee2f('0x90'),_0x1a7f62[_0xee2f('0x22')],util['inspect'](_0x3e5ae1,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xee2f('0x1e')]['syncMusicOnHoldStop']=function(_0x24ce97){var _0x324c75='';try{if(this[_0xee2f('0x20')](_0x24ce97)){logger['debug'](_0xee2f('0x91'),_0x24ce97[_0xee2f('0x22')],util[_0xee2f('0x26')](_0x24ce97,{'showHidden':![],'depth':null}));if(_0x24ce97[_0xee2f('0x8c')]){_0x324c75=_0x24ce97['channel'][_0xee2f('0x8d')](0x0,_0x24ce97[_0xee2f('0x8c')]['lastIndexOf']('-'));if(this[_0xee2f('0xc')][_0x324c75]){logger[_0xee2f('0x21')](_0xee2f('0x92'),_0x24ce97['uniqueid'],_0x324c75);this[_0xee2f('0xc')][_0x324c75][_0xee2f('0x93')]=![];}}}}catch(_0x356ce4){logger[_0xee2f('0x34')]('[%s][voiceAgentReport][musiconholdstop]',_0x24ce97[_0xee2f('0x22')],util[_0xee2f('0x26')](_0x356ce4,{'showHidden':![],'depth':null}));}};module[_0xee2f('0x94')]=VoiceAgentReport;
\ No newline at end of file
index 3ea68a1..688b7d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x416c=['callerid','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','xmd-destination','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalllinkedid','[%s][voiceCallReport][varset]','destinationchannel','cause-txt','endtime','billableseconds','holdtime','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','resolve','then','isEmpty','getSettings','stopRecordingOnTransfer','Action','StopMixMonitor','catch','finally','webbar:stopmonitors','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','ATTENDED','origtransfererlinkedid','some','routeid','transferToInternal','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','[%s][voiceCallReport][blindtransfer]\x20event:','extension','BLIND','transfererchannel','transfereruniqueid','syncMusicOnHoldStart','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','moment','util','../../../config/environment','../../../config/logger','ami','../model/channel','../rpc/setting','set','agi','dial','playback','NO\x20ANSWER','FAILED','ANSWERED','BUSY','redis','localhost','channels','agents','blindTransfers','coreshowchannel','syncNewExten','bind','newexten','newchannel','syncNewChannel','newstate','varset','syncVarSet','hangup','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','prototype','isNotNull','isUndefined','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid','calleridname','calleridnum','debug','inspect','linkedid','merge','keys','context','from-sip','channel','split','exten','destconnectedlinenum','connectedlinenum','format','user:%s','name','accountcode','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','disposition','channelstate','pick','undefined','user:agentconnect','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','queue','subtract','duration','seconds','YYYY-MM-DD\x20HH:mm:ss','lastapplication','lastdata','cdr(','match','type','isNil','[%s][voiceCallReport][newexten]','syncNewState','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','diff','connectedlinename','UserId','membername','xcally-motion-preview','toNumber','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','.WAV','monitorFilename','find','monitors','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','syncMixMonitorFilename','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s'];(function(_0x38a7ac,_0x45514b){var _0x53061a=function(_0x1d2469){while(--_0x1d2469){_0x38a7ac['push'](_0x38a7ac['shift']());}};_0x53061a(++_0x45514b);}(_0x416c,0x116));var _0xc416=function(_0x358ccd,_0x310df7){_0x358ccd=_0x358ccd-0x0;var _0x4efe94=_0x416c[_0x358ccd];return _0x4efe94;};'use strict';var _=require('lodash');var moment=require(_0xc416('0x0'));var util=require(_0xc416('0x1'));var path=require('path');var Redis=require('ioredis');var config=require(_0xc416('0x2'));var logger=require(_0xc416('0x3'))(_0xc416('0x4'));var ami=require('../ami');var Channel=require(_0xc416('0x5'));var RpcSetting=require(_0xc416('0x6'));var applications=[_0xc416('0x7'),'queue',_0xc416('0x8'),_0xc416('0x9'),_0xc416('0xa'),'voicemail'];var dispositions=[_0xc416('0xb'),'FAILED',_0xc416('0xc'),'NO\x20ANSWER',_0xc416('0xb'),_0xc416('0xb'),_0xc416('0xd'),_0xc416('0xe'),'FAILED','FAILED',_0xc416('0xc')];config[_0xc416('0xf')]=_['defaults'](config[_0xc416('0xf')],{'host':_0xc416('0x10'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xc416('0xf')]));function VoiceCallReport(_0x355182){this[_0xc416('0x11')]=_0x355182[_0xc416('0x11')];this[_0xc416('0x12')]=_0x355182['agents'];this[_0xc416('0x13')]={};ami['on'](_0xc416('0x14'),this[_0xc416('0x15')][_0xc416('0x16')](this));ami['on'](_0xc416('0x17'),this[_0xc416('0x15')][_0xc416('0x16')](this));ami['on'](_0xc416('0x18'),this[_0xc416('0x19')][_0xc416('0x16')](this));ami['on'](_0xc416('0x1a'),this['syncNewState']['bind'](this));ami['on'](_0xc416('0x1b'),this[_0xc416('0x1c')][_0xc416('0x16')](this));ami['on'](_0xc416('0x1d'),this[_0xc416('0x1e')][_0xc416('0x16')](this));ami['on'](_0xc416('0x1f'),this[_0xc416('0x20')][_0xc416('0x16')](this));ami['on'](_0xc416('0x21'),this[_0xc416('0x22')][_0xc416('0x16')](this));ami['on'](_0xc416('0x23'),this[_0xc416('0x24')][_0xc416('0x16')](this));ami['on'](_0xc416('0x25'),this['syncMusicOnHoldStart'][_0xc416('0x16')](this));ami['on'](_0xc416('0x26'),this[_0xc416('0x27')][_0xc416('0x16')](this));try{logger[_0xc416('0x28')](_0xc416('0x29'));ami[_0xc416('0x2a')]();}catch(_0x207136){logger[_0xc416('0x2b')](_0xc416('0x2c'),util['inspect'](_0x207136,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xc416('0x2d')][_0xc416('0x2e')]=function(_0x2d0f0e){return _0x2d0f0e!==null&&!_[_0xc416('0x2f')](_0x2d0f0e);};VoiceCallReport[_0xc416('0x2d')][_0xc416('0x30')]=function(_0x595867,_0x5342c1,_0x43dc66){io['to'](_0x595867)[_0xc416('0x30')](_0x5342c1,_0x43dc66);};VoiceCallReport[_0xc416('0x2d')][_0xc416('0x20')]=function(_0x39289f){try{if(this['isNotNull'](_0x39289f)){logger[_0xc416('0x28')](_0xc416('0x31'),_0x39289f[_0xc416('0x32')],_0x39289f[_0xc416('0x33')],_0x39289f[_0xc416('0x34')]);logger[_0xc416('0x35')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x39289f[_0xc416('0x32')],util[_0xc416('0x36')](_0x39289f,{'showHidden':![],'depth':null}));if(_0x39289f[_0xc416('0x32')]===_0x39289f[_0xc416('0x37')]){if(!_[_0xc416('0x2f')](this[_0xc416('0x11')][_0x39289f[_0xc416('0x32')]])){_[_0xc416('0x38')](this[_0xc416('0x11')][_0x39289f['uniqueid']],_['pick'](_0x39289f,_[_0xc416('0x39')](this[_0xc416('0x11')][_0x39289f['uniqueid']])));}}if(_0x39289f[_0xc416('0x3a')]===_0xc416('0x3b')){var _0x83c35=this['agents'][_0x39289f[_0xc416('0x3c')][_0xc416('0x3d')]('-')[0x0]];if(_0x83c35){if(_0x39289f[_0xc416('0x3e')]=='xcally-motion-preview'){_0x83c35[_0xc416('0x3f')]=_0x39289f[_0xc416('0x40')];this[_0xc416('0x30')](util[_0xc416('0x41')](_0xc416('0x42'),_0x83c35[_0xc416('0x43')]),'user:agentconnect',{'id':_0x83c35['id'],'destaccountcode':_0x83c35[_0xc416('0x44')],'destconnectedlinenum':_0x39289f['connectedlinenum']});}}}}}catch(_0x51d45b){logger[_0xc416('0x2b')](_0xc416('0x45'),_0x39289f[_0xc416('0x32')],util['inspect'](_0x51d45b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc416('0x2d')][_0xc416('0x19')]=function(_0x4e64b3){try{if(this[_0xc416('0x2e')](_0x4e64b3)){logger[_0xc416('0x35')](_0xc416('0x46'),_0x4e64b3[_0xc416('0x32')],util[_0xc416('0x36')](_0x4e64b3,{'showHidden':![],'depth':null}));if(this[_0xc416('0x11')][_0x4e64b3[_0xc416('0x32')]]){return;}if(_0x4e64b3[_0xc416('0x3c')]===_0xc416('0x47')){return;}if(_0x4e64b3[_0xc416('0x32')]!==_0x4e64b3[_0xc416('0x37')]&&!this[_0xc416('0x13')][_0x4e64b3[_0xc416('0x37')]]){return;}logger['info'](_0xc416('0x48'),_0x4e64b3[_0xc416('0x32')],_0x4e64b3[_0xc416('0x3a')],_0x4e64b3['exten']);this[_0xc416('0x11')][_0x4e64b3[_0xc416('0x32')]]=new Channel();this[_0xc416('0x11')][_0x4e64b3[_0xc416('0x32')]][_0xc416('0x49')]=moment()[_0xc416('0x41')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xc416('0x11')][_0x4e64b3[_0xc416('0x32')]][_0xc416('0x4a')]=dispositions[_['toNumber'](_0x4e64b3[_0xc416('0x4b')])];_[_0xc416('0x38')](this[_0xc416('0x11')][_0x4e64b3[_0xc416('0x32')]],_[_0xc416('0x4c')](_0x4e64b3,_['keys'](this['channels'][_0x4e64b3[_0xc416('0x32')]])));if(_0x4e64b3[_0xc416('0x3a')]===_0xc416('0x3b')){var _0x1ef0c6=this[_0xc416('0x12')][_0x4e64b3[_0xc416('0x3c')][_0xc416('0x3d')]('-')[0x0]];if(_0x1ef0c6&&typeof _0x1ef0c6['destconnectedlinenum']===_0xc416('0x4d')){_0x1ef0c6[_0xc416('0x3f')]=_0x4e64b3[_0xc416('0x3e')];logger[_0xc416('0x35')]('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0x4e64b3[_0xc416('0x32')],util[_0xc416('0x36')]({'id':_0x1ef0c6['id'],'destaccountcode':_0x1ef0c6[_0xc416('0x44')],'destconnectedlinenum':_0x4e64b3[_0xc416('0x3e')]},{'showHidden':![],'depth':null}));this['emit'](util[_0xc416('0x41')](_0xc416('0x42'),_0x1ef0c6['name']),_0xc416('0x4e'),{'id':_0x1ef0c6['id'],'destaccountcode':_0x1ef0c6[_0xc416('0x44')],'destconnectedlinenum':_0x4e64b3['exten']});}}}}catch(_0x180ff3){logger[_0xc416('0x2b')](_0xc416('0x4f'),_0x4e64b3[_0xc416('0x32')],util['inspect'](_0x180ff3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc416('0x2d')][_0xc416('0x15')]=function(_0x1c623d){try{if(this[_0xc416('0x2e')](_0x1c623d)){logger[_0xc416('0x35')](_0xc416('0x50'),_0x1c623d[_0xc416('0x32')],util[_0xc416('0x36')](_0x1c623d,{'showHidden':![],'depth':null}));if(_0x1c623d[_0xc416('0x3c')]===_0xc416('0x47')||_0x1c623d[_0xc416('0x3e')]==='h')return;if(_0x1c623d[_0xc416('0x32')]===_0x1c623d[_0xc416('0x37')]||this[_0xc416('0x13')][_0x1c623d[_0xc416('0x37')]]){_0x1c623d[_0xc416('0x51')]=_0x1c623d['application']?_0x1c623d[_0xc416('0x51')][_0xc416('0x52')]():undefined;_0x1c623d[_0xc416('0x53')]=_0x1c623d[_0xc416('0x54')]||_0x1c623d['applicationdata'];if(_0x1c623d[_0xc416('0x54')]&&!_0x1c623d[_0xc416('0x54')][_0xc416('0x55')](_0xc416('0x56'))&&_0x1c623d['application']!==_0xc416('0x57')){_0x1c623d[_0xc416('0x53')]=_0x1c623d[_0xc416('0x53')][_0xc416('0x52')]();}logger[_0xc416('0x28')]('[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s',_0x1c623d[_0xc416('0x32')],_0x1c623d['application'],_0x1c623d[_0xc416('0x53')]);if(_[_0xc416('0x2f')](this[_0xc416('0x11')][_0x1c623d['uniqueid']])){this[_0xc416('0x11')][_0x1c623d[_0xc416('0x32')]]=new Channel();this[_0xc416('0x11')][_0x1c623d['uniqueid']][_0xc416('0x49')]=_0x1c623d['duration']?moment()[_0xc416('0x58')](moment[_0xc416('0x59')](_0x1c623d[_0xc416('0x59')])[_0xc416('0x5a')](),'seconds')[_0xc416('0x41')](_0xc416('0x5b')):moment()[_0xc416('0x41')](_0xc416('0x5b'));this[_0xc416('0x11')][_0x1c623d[_0xc416('0x32')]]['disposition']=_0xc416('0xb');}_['merge'](this['channels'][_0x1c623d[_0xc416('0x32')]],_['pick'](_0x1c623d,_[_0xc416('0x39')](this['channels'][_0x1c623d['uniqueid']])));if(_['includes'](applications,_0x1c623d[_0xc416('0x51')])){this[_0xc416('0x11')][_0x1c623d[_0xc416('0x32')]][_0xc416('0x5c')]=_0x1c623d['application'];this[_0xc416('0x11')][_0x1c623d[_0xc416('0x32')]][_0xc416('0x5d')]=_0x1c623d['applicationdata'];if(_0x1c623d[_0xc416('0x51')]==='set'&&_['startsWith'](_0x1c623d[_0xc416('0x53')]['toLowerCase'](),_0xc416('0x5e'))){var _0x763377=_0x1c623d['applicationdata'][_0xc416('0x3d')]('=');var _0x334965=_0x763377[0x0][_0xc416('0x52')]()[_0xc416('0x5f')](/cdr\((.*)\)/);if(_0x334965){if(_0x334965[0x1]===_0xc416('0x60')&&!_[_0xc416('0x61')](this[_0xc416('0x11')][_0x1c623d['uniqueid']][_0x334965[0x1]]))return;this[_0xc416('0x11')][_0x1c623d[_0xc416('0x32')]][_0x334965[0x1]]=_0x763377[0x1];}}else if(_0x1c623d[_0xc416('0x51')]===_0xc416('0x57')){this[_0xc416('0x11')][_0x1c623d['uniqueid']][_0xc416('0x57')]=_0x1c623d[_0xc416('0x53')][_0xc416('0x3d')](',')[0x0];}}}}}catch(_0x18cb54){logger[_0xc416('0x2b')](_0xc416('0x62'),_0x1c623d[_0xc416('0x32')],util[_0xc416('0x36')](_0x18cb54,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc416('0x2d')][_0xc416('0x63')]=function(_0x976a48){try{if(this[_0xc416('0x2e')](_0x976a48)){logger[_0xc416('0x28')](_0xc416('0x64'),_0x976a48['uniqueid'],_0x976a48['linkedid'],_0x976a48['calleridname'],_0x976a48[_0xc416('0x34')]);logger['debug'](_0xc416('0x65'),_0x976a48[_0xc416('0x32')],util[_0xc416('0x36')](_0x976a48,{'showHidden':![],'depth':null}));if(_0x976a48['channelstate']!=='6')return;var _0x47794d=this[_0xc416('0x12')][_0x976a48[_0xc416('0x3c')]['split']('-')[0x0]];if(_0x976a48[_0xc416('0x32')]!==_0x976a48['linkedid']){var _0x58701f=moment();if(this['channels'][_0x976a48[_0xc416('0x37')]]){if(!this[_0xc416('0x11')][_0x976a48[_0xc416('0x37')]][_0xc416('0x66')]){this['channels'][_0x976a48[_0xc416('0x37')]][_0xc416('0x66')]=!![];this[_0xc416('0x11')][_0x976a48['linkedid']][_0xc416('0x67')]=_0x58701f[_0xc416('0x41')](_0xc416('0x5b'));if(this[_0xc416('0x11')][_0x976a48[_0xc416('0x37')]][_0xc416('0x49')]){this[_0xc416('0x11')][_0x976a48[_0xc416('0x37')]]['holdtime']=_0x58701f[_0xc416('0x68')](this[_0xc416('0x11')][_0x976a48[_0xc416('0x37')]][_0xc416('0x49')],_0xc416('0x5a'));}}this[_0xc416('0x11')][_0x976a48['linkedid']][_0xc416('0x37')]=_0x976a48['uniqueid'];if(_0x976a48[_0xc416('0x34')]!=='xcally-motion-preview'){this['channels'][_0x976a48[_0xc416('0x37')]][_0xc416('0x40')]=_0x976a48[_0xc416('0x34')];}this['channels'][_0x976a48[_0xc416('0x37')]][_0xc416('0x69')]=_0x976a48[_0xc416('0x33')];this[_0xc416('0x11')][_0x976a48[_0xc416('0x37')]]['destinationchannel']=_0x976a48['channel'];this[_0xc416('0x11')][_0x976a48[_0xc416('0x37')]][_0xc416('0x4a')]=dispositions[_['toNumber'](_0x976a48[_0xc416('0x4b')])];if(_0x47794d){this[_0xc416('0x11')][_0x976a48[_0xc416('0x37')]][_0xc416('0x6a')]=_0x47794d['id'];this[_0xc416('0x11')][_0x976a48['linkedid']][_0xc416('0x6b')]=_0x47794d[_0xc416('0x43')];}}if(this['channels'][_0x976a48[_0xc416('0x32')]]){if(!this['channels'][_0x976a48[_0xc416('0x32')]][_0xc416('0x66')]){this[_0xc416('0x11')][_0x976a48['uniqueid']][_0xc416('0x66')]=!![];this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]][_0xc416('0x67')]=_0x58701f['format'](_0xc416('0x5b'));if(this['channels'][_0x976a48['uniqueid']]['starttime']){this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]]['holdtime']=_0x58701f[_0xc416('0x68')](this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]]['starttime'],_0xc416('0x5a'));}}if(_0x976a48[_0xc416('0x34')]!==_0xc416('0x6c')){this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]][_0xc416('0x40')]=_0x976a48[_0xc416('0x34')];}this['channels'][_0x976a48[_0xc416('0x32')]]['connectedlinename']=_0x976a48['calleridname'];this[_0xc416('0x11')][_0x976a48['uniqueid']]['destinationchannel']=_0x976a48[_0xc416('0x3c')];this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]][_0xc416('0x4a')]=dispositions[_[_0xc416('0x6d')](_0x976a48['channelstate'])];}}else{if(this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]]){if(_0x47794d){this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]][_0xc416('0x6a')]=_0x47794d['id'];this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]][_0xc416('0x6b')]=_0x47794d[_0xc416('0x43')];}}}if(_0x976a48[_0xc416('0x3a')]===_0xc416('0x3b')){if(_0x47794d){_0x47794d[_0xc416('0x3f')]=_0x976a48[_0xc416('0x3e')];var _0x18d903,_0x369bc0;if(this['channels'][_0x976a48[_0xc416('0x32')]]){_0x18d903=this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]][_0xc416('0x6e')];_0x369bc0=this[_0xc416('0x11')][_0x976a48[_0xc416('0x32')]][_0xc416('0x57')];}else if(this[_0xc416('0x11')][_0x976a48['linkedid']]){_0x18d903=this[_0xc416('0x11')][_0x976a48[_0xc416('0x37')]][_0xc416('0x6e')];_0x369bc0=this[_0xc416('0x11')][_0x976a48['linkedid']][_0xc416('0x57')];}_0x47794d[_0xc416('0x57')]=_0x369bc0;_0x47794d['routealias']=_0x18d903;var _0x58af12={'id':_0x47794d['id'],'name':_0x47794d['name'],'agentconnected':!![],'destaccountcode':_0x47794d[_0xc416('0x44')],'destconnectedlinenum':_0x976a48['exten'],'queue':_0x369bc0||undefined,'routealias':_0x18d903,'uniqueid':_0x976a48[_0xc416('0x37')]};logger['debug'](_0xc416('0x6f'),_0x976a48[_0xc416('0x32')],util[_0xc416('0x36')](_0x58af12,{'showHidden':![],'depth':null}));this[_0xc416('0x30')](util['format'](_0xc416('0x42'),_0x47794d[_0xc416('0x43')]),_0xc416('0x4e'),_0x58af12);}}}}catch(_0x42a321){logger[_0xc416('0x2b')](_0xc416('0x70'),_0x976a48[_0xc416('0x32')],util[_0xc416('0x36')](_0x42a321,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc416('0x2d')]['syncMixMonitorFilename']=function(_0x3873e4,_0x474024){try{if(this['channels'][_0x3873e4]){logger[_0xc416('0x28')](_0xc416('0x71'),_0x3873e4,_0x474024);this[_0xc416('0x11')][_0x3873e4][_0xc416('0x72')]=!![];if(_[_0xc416('0x73')](_0x474024,_0xc416('0x74'))){_0x474024=_0x474024['replace'](_0xc416('0x74'),_0xc416('0x75'));}this['channels'][_0x3873e4][_0xc416('0x76')]=_0x474024;var _0x3b5405=_[_0xc416('0x77')](this[_0xc416('0x11')][_0x3873e4][_0xc416('0x78')],{'filename':_0x474024});if(_[_0xc416('0x61')](_0x3b5405)){this[_0xc416('0x11')][_0x3873e4][_0xc416('0x78')][_0xc416('0x79')]({'filename':_0x474024,'createdAt':moment()[_0xc416('0x41')](_0xc416('0x5b')),'mixmonitorid':'','status':_0xc416('0x7a')});}}}catch(_0x3e2120){logger['error'](_0xc416('0x7b'),_0x3873e4,util[_0xc416('0x36')](_0x3e2120,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc416('0x2d')][_0xc416('0x1c')]=function(_0x4cada3){try{if(this['isNotNull'](_0x4cada3)){logger[_0xc416('0x35')](_0xc416('0x7c'),_0x4cada3['uniqueid'],util[_0xc416('0x36')](_0x4cada3,{'showHidden':![],'depth':null}));if(this[_0xc416('0x11')][_0x4cada3[_0xc416('0x32')]]&&_0x4cada3[_0xc416('0x3c')]!='OutgoingSpoolFailed'){if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')])){if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')][_0xc416('0x7e')])){logger[_0xc416('0x28')](_0xc416('0x7f'),_0x4cada3[_0xc416('0x32')],_0x4cada3[_0xc416('0x80')]);this[_0xc416('0x81')](_0x4cada3[_0xc416('0x32')],_0x4cada3[_0xc416('0x80')]);}else if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')][_0xc416('0x82')])){logger[_0xc416('0x28')](_0xc416('0x83'),_0x4cada3[_0xc416('0x32')],_0x4cada3[_0xc416('0x80')]);this[_0xc416('0x11')][_0x4cada3[_0xc416('0x32')]][_0xc416('0x34')]=_0x4cada3[_0xc416('0x80')];}else if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')][_0xc416('0x84')])){logger['info'](_0xc416('0x85'),_0x4cada3[_0xc416('0x32')],_0x4cada3['value']);this[_0xc416('0x11')][_0x4cada3[_0xc416('0x32')]][_0xc416('0x86')]=_0x4cada3[_0xc416('0x80')];}else if(this[_0xc416('0x2e')](_0x4cada3['variable']['xmd-cdrtype'])){logger[_0xc416('0x28')](_0xc416('0x87'),_0x4cada3[_0xc416('0x32')],_0x4cada3[_0xc416('0x80')]);this[_0xc416('0x11')][_0x4cada3[_0xc416('0x32')]][_0xc416('0x60')]=_0x4cada3[_0xc416('0x80')];}else if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')][_0xc416('0x88')])){logger[_0xc416('0x28')]('[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s',_0x4cada3['uniqueid'],_0x4cada3[_0xc416('0x80')][_0xc416('0x3d')](',')[0x0]);this['channels'][_0x4cada3['uniqueid']]['queue']=_0x4cada3[_0xc416('0x80')][_0xc416('0x3d')](',')[0x0];}else if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')][_0xc416('0x89')])){logger[_0xc416('0x28')](_0xc416('0x8a'),_0x4cada3[_0xc416('0x32')],_0x4cada3[_0xc416('0x80')]);this[_0xc416('0x11')][_0x4cada3[_0xc416('0x32')]]['originatecalleridnum']=_0x4cada3[_0xc416('0x80')];}else if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')][_0xc416('0x8b')])){logger[_0xc416('0x28')]('[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s',_0x4cada3['uniqueid'],_0x4cada3[_0xc416('0x80')]);this[_0xc416('0x11')][_0x4cada3[_0xc416('0x32')]][_0xc416('0x8c')]=_0x4cada3[_0xc416('0x80')];}else if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')][_0xc416('0x8d')])){logger['info'](_0xc416('0x8e'),_0x4cada3[_0xc416('0x32')],_0x4cada3[_0xc416('0x80')]);this['channels'][_0x4cada3[_0xc416('0x32')]][_0xc416('0x8f')]=_0x4cada3[_0xc416('0x80')];}else if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')][_0xc416('0x90')])){logger['info'](_0xc416('0x91'),_0x4cada3[_0xc416('0x32')],_0x4cada3[_0xc416('0x80')]);this[_0xc416('0x11')][_0x4cada3[_0xc416('0x32')]][_0xc416('0x57')]=_0x4cada3['value'];}else if(this[_0xc416('0x2e')](_0x4cada3['variable'][_0xc416('0x92')])){logger[_0xc416('0x28')](_0xc416('0x93'),_0x4cada3[_0xc416('0x32')],_0x4cada3[_0xc416('0x80')]);this[_0xc416('0x11')][_0x4cada3[_0xc416('0x32')]]['sipcalluniqueid']=_0x4cada3[_0xc416('0x80')];}}}else if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')]['mixmonitor_filename'])){if(_0x4cada3[_0xc416('0x80')]){var _0x414e24=path['parse'](_0x4cada3['value'])[_0xc416('0x43')];logger['info']('[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s',_0x414e24,_0x4cada3[_0xc416('0x80')]);this[_0xc416('0x81')](_0x414e24,_0x4cada3[_0xc416('0x80')]);}}else if(this[_0xc416('0x11')][_0x4cada3[_0xc416('0x37')]]){if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')])){if(this[_0xc416('0x2e')](_0x4cada3[_0xc416('0x7d')][_0xc416('0x92')])){logger[_0xc416('0x28')](_0xc416('0x93'),_0x4cada3[_0xc416('0x37')],_0x4cada3[_0xc416('0x80')]);this['channels'][_0x4cada3[_0xc416('0x37')]][_0xc416('0x94')]=_0x4cada3[_0xc416('0x80')];}}}}}catch(_0x4bfc1c){logger[_0xc416('0x2b')](_0xc416('0x95'),_0x4cada3[_0xc416('0x32')],util['inspect'](_0x4bfc1c,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xc416('0x1e')]=function(_0x1dd6aa){try{if(this[_0xc416('0x2e')](_0x1dd6aa)){logger[_0xc416('0x35')]('[%s][voiceCallReport][hangup]\x20event:',_0x1dd6aa[_0xc416('0x32')],util[_0xc416('0x36')](_0x1dd6aa,{'showHidden':![],'depth':null}));if(this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]]){if(this[_0xc416('0x11')][this['blindTransfers'][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x37')]]){this[_0xc416('0x11')][this['blindTransfers'][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x37')]][_0xc416('0x32')]=_0x1dd6aa[_0xc416('0x32')];this['channels'][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]]['linkedid']][_0xc416('0x66')]=this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x66')];this[_0xc416('0x11')][this['blindTransfers'][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x37')]]['answertime']=this[_0xc416('0x11')][_0x1dd6aa['uniqueid']]['answertime'];this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x37')]]['destinationchannel']=this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]]['linkedid']][_0xc416('0x3c')];this['channels'][this['blindTransfers'][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x37')]][_0xc416('0x4a')]=this['channels'][_0x1dd6aa['uniqueid']]['disposition'];this[_0xc416('0x11')][_0x1dd6aa['uniqueid']]=this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x37')]];delete this['channels'][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x37')]];}else if(this[_0xc416('0x11')][this['blindTransfers'][_0x1dd6aa[_0xc416('0x37')]]['uniqueid']]){this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]]['uniqueid']][_0xc416('0x32')]=[this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa['linkedid']][_0xc416('0x32')]][_0xc416('0x37')],this['channels'][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x32')]][_0xc416('0x37')]=this['channels'][this['blindTransfers'][_0x1dd6aa['linkedid']][_0xc416('0x32')]][_0xc416('0x32')]][0x0];this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]]['uniqueid']][_0xc416('0x66')]=this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x66')];this['channels'][this[_0xc416('0x13')][_0x1dd6aa['linkedid']][_0xc416('0x32')]]['answertime']=this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x67')];this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]]['uniqueid']][_0xc416('0x96')]=this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa['linkedid']][_0xc416('0x32')]]['channel'];this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x32')]][_0xc416('0x4a')]=this['channels'][_0x1dd6aa[_0xc416('0x32')]]['disposition'];this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]]=this[_0xc416('0x11')][this[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x32')]];delete this['channels'][this['blindTransfers'][_0x1dd6aa[_0xc416('0x37')]][_0xc416('0x32')]];}}if(this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]]){logger['info']('[%s][voiceCallReport][hangup]\x20reason:%s',_0x1dd6aa[_0xc416('0x32')],_0x1dd6aa[_0xc416('0x97')]);var _0x327e67=moment();this['channels'][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x98')]=_0x327e67[_0xc416('0x41')](_0xc416('0x5b'));this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x59')]=_0x327e67[_0xc416('0x68')](this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x49')],_0xc416('0x5a'));if(this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x66')]){this[_0xc416('0x11')][_0x1dd6aa['uniqueid']][_0xc416('0x99')]=_0x327e67[_0xc416('0x68')](this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x67')],_0xc416('0x5a'));this[_0xc416('0x11')][_0x1dd6aa['uniqueid']][_0xc416('0x9a')]=this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x59')]-this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x99')];}if(_0x1dd6aa[_0xc416('0x3a')]===_0xc416('0x3b')){if(this['agents'][_0x1dd6aa[_0xc416('0x3c')][_0xc416('0x3d')]('-')[0x0]]){this['agents'][_0x1dd6aa['channel']['split']('-')[0x0]]=_['omit'](this[_0xc416('0x12')][_0x1dd6aa[_0xc416('0x3c')][_0xc416('0x3d')]('-')[0x0]],['destconnectedlinenum']);logger['debug'](_0xc416('0x9b'),_0x1dd6aa[_0xc416('0x32')],util[_0xc416('0x36')]({'id':this[_0xc416('0x12')][_0x1dd6aa[_0xc416('0x3c')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xc416('0x12')][_0x1dd6aa[_0xc416('0x3c')][_0xc416('0x3d')]('-')[0x0]][_0xc416('0x44')]},{'showHidden':![],'depth':null}));this['emit'](util[_0xc416('0x41')](_0xc416('0x42'),this['agents'][_0x1dd6aa['channel'][_0xc416('0x3d')]('-')[0x0]][_0xc416('0x43')]),_0xc416('0x9c'),{'id':this[_0xc416('0x12')][_0x1dd6aa['channel'][_0xc416('0x3d')]('-')[0x0]]['id'],'destaccountcode':this[_0xc416('0x12')][_0x1dd6aa[_0xc416('0x3c')][_0xc416('0x3d')]('-')[0x0]][_0xc416('0x44')]});for(var _0x44566a=0x0;_0x44566a<Object[_0xc416('0x39')](this[_0xc416('0x12')])[_0xc416('0x9d')];_0x44566a++){var _0x1f95d1=Object[_0xc416('0x39')](this['agents'])[_0x44566a];var _0x3d8a6b=this[_0xc416('0x12')][_0x1f95d1];if(_0x3d8a6b[_0xc416('0x44')]===Number(this[_0xc416('0x11')][_0x1dd6aa['uniqueid']][_0xc416('0x40')])){this[_0xc416('0x30')](util[_0xc416('0x41')](_0xc416('0x42'),_0x3d8a6b['name']),_0xc416('0x9c'),{'id':_0x3d8a6b['id'],'destaccountcode':_0x3d8a6b[_0xc416('0x44')],'transfer':this[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x9e')]});break;}}}}var _0x3b77cb=this;Promise[_0xc416('0x9f')]()[_0xc416('0xa0')](function(){var _0xa7670=_0x3b77cb['channels'][_0x1dd6aa[_0xc416('0x32')]];if(typeof _0xa7670['transferType']===_0xc416('0x4d')){return;}if(_0xa7670['transferToInternal']===!![]){return;}if(_[_0xc416('0xa1')](_0xa7670[_0xc416('0x78')])){return;}return RpcSetting[_0xc416('0xa2')]()[_0xc416('0xa0')](function(_0x350e2a){if(!_0x350e2a[_0xc416('0xa3')])return;return Promise[_0xc416('0x9f')]()[_0xc416('0xa0')](function(){return ami[_0xc416('0xa4')]({'action':_0xc416('0xa5'),'channel':_0xa7670[_0xc416('0x3c')]})[_0xc416('0xa6')](function(){});})[_0xc416('0xa0')](function(){return ami['Action']({'action':_0xc416('0xa5'),'channel':_0xa7670['destinationchannel']})[_0xc416('0xa6')](function(){})[_0xc416('0xa7')](function(){var _0x65a877=_0x3b77cb[_0xc416('0x12')][_0xa7670[_0xc416('0x96')]['split']('-')[0x0]];if(!_0x65a877)return;io[_0xc416('0x30')](_0xc416('0xa8'),{'agentId':_0x65a877['id'],'uniqueid':_0xa7670[_0xc416('0x32')]});});});});})[_0xc416('0xa0')](function(){if(_0x1dd6aa['event']===_0xc416('0xa9')){_0x3b77cb['blindTransfers'][_0x1dd6aa[_0xc416('0x32')]]=_0x1dd6aa;}else{if(_0x3b77cb[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]]&&_0x3b77cb[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x60')]===_0xc416('0xaa')&&_0x3b77cb[_0xc416('0x13')][_0x1dd6aa['uniqueid']]){_0x3b77cb[_0xc416('0x11')][_0x1dd6aa['uniqueid']][_0xc416('0x32')]=[_0x3b77cb[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x37')],_0x3b77cb['channels'][_0x1dd6aa[_0xc416('0x32')]][_0xc416('0x37')]=_0x3b77cb[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]]['uniqueid']][0x0];delete _0x3b77cb[_0xc416('0x13')][_0x1dd6aa[_0xc416('0x32')]];}}logger[_0xc416('0x35')](_0xc416('0xab'),_0x1dd6aa['uniqueid'],util[_0xc416('0x36')](_0x3b77cb[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]],{'showHidden':![],'depth':null}));ami[_0xc416('0x30')](_0xc416('0xac'),_0x3b77cb['channels'][_0x1dd6aa[_0xc416('0x32')]]);delete _0x3b77cb[_0xc416('0x11')][_0x1dd6aa[_0xc416('0x32')]];});}}}catch(_0x5bd25e){logger[_0xc416('0x2b')](_0xc416('0xad'),_0x1dd6aa[_0xc416('0x32')],util[_0xc416('0x36')](_0x5bd25e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc416('0x2d')][_0xc416('0x22')]=function(_0x67f2d0){try{if(this[_0xc416('0x2e')](_0x67f2d0)){logger['info']('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x67f2d0[_0xc416('0x32')],_0x67f2d0[_0xc416('0xae')],_0x67f2d0[_0xc416('0xaf')]);logger[_0xc416('0x35')](_0xc416('0xb0'),_0x67f2d0[_0xc416('0x32')],util['inspect'](_0x67f2d0,{'showHidden':![],'depth':null}));var _0x3c7b25;if(this['channels'][_0x67f2d0[_0xc416('0xb1')]]){this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb1')]][_0xc416('0xb2')]=_0x67f2d0[_0xc416('0xae')];this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb1')]][_0xc416('0xb3')]=_0x67f2d0[_0xc416('0xaf')];if(this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb4')]]){_0x3c7b25=this['channels'][_0x67f2d0[_0xc416('0xb4')]];this['channels'][_0x67f2d0['secondtransfereruniqueid']]=this[_0xc416('0x11')][_0x67f2d0['transfereeuniqueid']];this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb1')]]=_0x3c7b25;}this[_0xc416('0x11')][_0x67f2d0['secondtransfereruniqueid']][_0xc416('0x9e')]='ATTENDED';}else if(this[_0xc416('0x11')][_0x67f2d0['transfertargetuniqueid']]){this['channels'][_0x67f2d0['transfertargetuniqueid']][_0xc416('0xb2')]=_0x67f2d0[_0xc416('0xae')];this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb5')]][_0xc416('0xb3')]=_0x67f2d0[_0xc416('0xaf')];if(this[_0xc416('0x11')][_0x67f2d0['origtransfereruniqueid']]){_0x3c7b25=this['channels'][_0x67f2d0[_0xc416('0xb6')]];this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb6')]]=this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb5')]];this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb5')]]=_0x3c7b25;}this['channels'][_0x67f2d0[_0xc416('0xb5')]][_0xc416('0x9e')]=_0xc416('0xb7');}if((this['channels'][_0x67f2d0['origtransfereruniqueid']]||this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb8')]])&&this['channels'][_0x67f2d0[_0xc416('0xb4')]]){var _0x33dbee=_[_0xc416('0xb9')]([this[_0xc416('0x11')][_0x67f2d0['origtransfereruniqueid']],this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb8')]],this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb4')]]],function(_0x3eb2b7){return _0x3eb2b7&&_0x3eb2b7[_0xc416('0x60')]===_0xc416('0xaa')&&_0x3eb2b7[_0xc416('0xba')];});if(_0x33dbee){if(this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb6')]])this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb6')]]['transferType']=_0xc416('0xb7');if(this['channels'][_0x67f2d0[_0xc416('0xb8')]])this['channels'][_0x67f2d0[_0xc416('0xb8')]][_0xc416('0x9e')]=_0xc416('0xb7');this[_0xc416('0x11')][_0x67f2d0['secondtransfereruniqueid']][_0xc416('0x9e')]=_0xc416('0xb7');}else{if(this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb1')]]){this[_0xc416('0x11')][_0x67f2d0[_0xc416('0xb4')]][_0xc416('0xbb')]=!![];}if(this['channels'][_0x67f2d0[_0xc416('0xb5')]]){this['channels'][_0x67f2d0[_0xc416('0xb5')]][_0xc416('0xbb')]=!![];}}}}}catch(_0x251a2a){logger[_0xc416('0x2b')](_0xc416('0xbc'),_0x67f2d0[_0xc416('0x32')],util[_0xc416('0x36')](_0x251a2a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc416('0x2d')]['syncBlindTransfer']=function(_0x5c8a9c){try{if(this['isNotNull'](_0x5c8a9c)){logger[_0xc416('0x28')](_0xc416('0xbd'),_0x5c8a9c[_0xc416('0x32')],_0x5c8a9c[_0xc416('0xbe')],_0x5c8a9c['extension']);logger[_0xc416('0x35')](_0xc416('0xbf'),_0x5c8a9c[_0xc416('0x32')],util[_0xc416('0x36')](_0x5c8a9c,{'showHidden':![],'depth':null}));if(this[_0xc416('0x11')][_0x5c8a9c[_0xc416('0xb1')]]){this[_0xc416('0x11')][_0x5c8a9c['transfereeuniqueid']]['transfercalleridnum']=_0x5c8a9c[_0xc416('0xbe')];this[_0xc416('0x11')][_0x5c8a9c[_0xc416('0xb1')]][_0xc416('0xb3')]=_0x5c8a9c[_0xc416('0xc0')];this['channels'][_0x5c8a9c[_0xc416('0xb1')]][_0xc416('0x9e')]=_0xc416('0xc1');this[_0xc416('0x1e')]({'event':'BlindTransfer','uniqueid':_0x5c8a9c[_0xc416('0xb1')],'linkedid':_0x5c8a9c['transfereruniqueid'],'context':_0x5c8a9c[_0xc416('0x3a')],'channel':_0x5c8a9c[_0xc416('0xc2')]});}else{this[_0xc416('0x11')][_0x5c8a9c['transfereruniqueid']][_0xc416('0x9e')]=_0xc416('0xc1');this['syncHangup']({'event':_0xc416('0xa9'),'uniqueid':_0x5c8a9c[_0xc416('0xc3')],'linkedid':_0x5c8a9c[_0xc416('0xb1')],'context':_0x5c8a9c['context'],'channel':_0x5c8a9c[_0xc416('0xc2')]});}}}catch(_0x2d10bd){logger[_0xc416('0x2b')]('[%s][voiceCallReport][blindtransfer]',_0x5c8a9c[_0xc416('0x32')],util['inspect'](_0x2d10bd,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc416('0x2d')][_0xc416('0xc4')]=function(_0x377ae0){try{if(this['isNotNull'](_0x377ae0)){logger[_0xc416('0x35')](_0xc416('0xc5'),_0x377ae0[_0xc416('0x32')],util[_0xc416('0x36')](_0x377ae0,{'showHidden':![],'depth':null}));if(this['channels'][_0x377ae0[_0xc416('0x32')]]){if(!_[_0xc416('0x61')](this[_0xc416('0x11')][_0x377ae0['uniqueid']]['answertime'])){this[_0xc416('0x11')][_0x377ae0[_0xc416('0x32')]][_0xc416('0xc6')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');logger[_0xc416('0x28')](_0xc416('0xc7'),_0x377ae0[_0xc416('0x32')],this[_0xc416('0x11')][_0x377ae0[_0xc416('0x32')]]['mohstarttime']);}}}}catch(_0x16ab58){logger[_0xc416('0x2b')](_0xc416('0xc8'),_0x377ae0['uniqueid'],util[_0xc416('0x36')](_0x16ab58,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xc416('0x2d')][_0xc416('0x27')]=function(_0x540cf2){try{if(this[_0xc416('0x2e')](_0x540cf2)){logger[_0xc416('0x35')](_0xc416('0xc9'),_0x540cf2[_0xc416('0x32')],util[_0xc416('0x36')](_0x540cf2,{'showHidden':![],'depth':null}));if(this[_0xc416('0x11')][_0x540cf2[_0xc416('0x32')]]){if(!_[_0xc416('0x61')](this[_0xc416('0x11')][_0x540cf2[_0xc416('0x32')]][_0xc416('0xc6')])){this['channels'][_0x540cf2[_0xc416('0x32')]][_0xc416('0xca')]+=moment()[_0xc416('0xcb')](0x0)[_0xc416('0x68')](this[_0xc416('0x11')][_0x540cf2['uniqueid']][_0xc416('0xc6')],_0xc416('0x5a'));logger[_0xc416('0x28')](_0xc416('0xcc'),_0x540cf2[_0xc416('0x32')],this['channels'][_0x540cf2['uniqueid']][_0xc416('0xca')]);delete this[_0xc416('0x11')][_0x540cf2[_0xc416('0x32')]][_0xc416('0xc6')];}}}}catch(_0x144663){logger['error'](_0xc416('0xcd'),_0x540cf2[_0xc416('0x32')],util[_0xc416('0x36')](_0x144663,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
+var _0x230d=['calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','linkedid','merge','pick','keys','context','channel','xcally-motion-preview','destconnectedlinenum','connectedlinenum','format','user:agentconnect','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','exten','starttime','disposition','channelstate','split','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','accountcode','user:%s','error','[%s][voiceCallReport][newexten]\x20event:','application','applicationdata','appdata','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','YYYY-MM-DD\x20HH:mm:ss','includes','lastdata','set','startsWith','toLowerCase','cdr(','type','isNil','[%s][voiceCallReport][newexten]','syncNewState','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','calleridname','[%s][voiceCallReport][newstate]\x20event:','answertime','diff','toNumber','UserId','membername','name','answered','connectedlinename','from-sip','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','monitor','.wav49','.WAV','monitorFilename','find','push','rec','[%s][voiceCallReport][mixMonitorFilename]','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','xmd-callerid','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','sipcalllinkedid','[%s][voiceCallReport][hangup]\x20event:','destinationchannel','[%s][voiceCallReport][hangup]\x20reason:%s','cause-txt','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','transferType','then','transferToInternal','isEmpty','monitors','getSettings','Action','StopMixMonitor','catch','webbar:stopmonitors','event','BlindTransfer','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transferconnectedlinenum','transfertargetcalleridnum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','transfercalleridnum','origtransfereruniqueid','origtransfererlinkedid','some','routeid','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','extension','[%s][voiceCallReport][blindtransfer]\x20event:','transfereecalleridnum','BLIND','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','[%s][voiceCallReport][musiconholdstop]','exports','lodash','moment','util','path','../../../config/logger','../ami','../model/channel','../rpc/setting','queue','agi','playback','voicemail','NO\x20ANSWER','FAILED','BUSY','defaults','redis','localhost','socket.io-emitter','channels','agents','blindTransfers','coreshowchannel','syncNewExten','newexten','bind','newchannel','varset','syncVarSet','hangup','syncHangup','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','[voiceCallReport][coreshowchannels]','inspect','prototype','isUndefined','emit','isNotNull','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','uniqueid'];(function(_0x42d1f8,_0x22e529){var _0x40d234=function(_0xd59b57){while(--_0xd59b57){_0x42d1f8['push'](_0x42d1f8['shift']());}};_0x40d234(++_0x22e529);}(_0x230d,0x155));var _0xd230=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x230d[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0xd230('0x0'));var moment=require(_0xd230('0x1'));var util=require(_0xd230('0x2'));var path=require(_0xd230('0x3'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require(_0xd230('0x4'))('ami');var ami=require(_0xd230('0x5'));var Channel=require(_0xd230('0x6'));var RpcSetting=require(_0xd230('0x7'));var applications=['set',_0xd230('0x8'),_0xd230('0x9'),'dial',_0xd230('0xa'),_0xd230('0xb')];var dispositions=[_0xd230('0xc'),_0xd230('0xd'),_0xd230('0xd'),_0xd230('0xc'),_0xd230('0xc'),_0xd230('0xc'),'ANSWERED',_0xd230('0xe'),_0xd230('0xd'),_0xd230('0xd'),_0xd230('0xd')];config['redis']=_[_0xd230('0xf')](config[_0xd230('0x10')],{'host':_0xd230('0x11'),'port':0x18eb});var io=require(_0xd230('0x12'))(new Redis(config['redis']));function VoiceCallReport(_0x2b1f91){this[_0xd230('0x13')]=_0x2b1f91['channels'];this[_0xd230('0x14')]=_0x2b1f91[_0xd230('0x14')];this[_0xd230('0x15')]={};ami['on'](_0xd230('0x16'),this[_0xd230('0x17')]['bind'](this));ami['on'](_0xd230('0x18'),this[_0xd230('0x17')][_0xd230('0x19')](this));ami['on'](_0xd230('0x1a'),this['syncNewChannel'][_0xd230('0x19')](this));ami['on']('newstate',this['syncNewState'][_0xd230('0x19')](this));ami['on'](_0xd230('0x1b'),this[_0xd230('0x1c')][_0xd230('0x19')](this));ami['on'](_0xd230('0x1d'),this[_0xd230('0x1e')]['bind'](this));ami['on']('newcallerid',this['syncNewCallerId'][_0xd230('0x19')](this));ami['on'](_0xd230('0x1f'),this[_0xd230('0x20')][_0xd230('0x19')](this));ami['on'](_0xd230('0x21'),this[_0xd230('0x22')][_0xd230('0x19')](this));ami['on'](_0xd230('0x23'),this[_0xd230('0x24')][_0xd230('0x19')](this));ami['on']('musiconholdstop',this[_0xd230('0x25')][_0xd230('0x19')](this));try{logger[_0xd230('0x26')](_0xd230('0x27'));ami[_0xd230('0x28')]();}catch(_0x5dc804){logger['error'](_0xd230('0x29'),util[_0xd230('0x2a')](_0x5dc804,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xd230('0x2b')]['isNotNull']=function(_0x5e9bdd){return _0x5e9bdd!==null&&!_[_0xd230('0x2c')](_0x5e9bdd);};VoiceCallReport[_0xd230('0x2b')]['emit']=function(_0x783b65,_0x4299a0,_0x5e4e24){io['to'](_0x783b65)[_0xd230('0x2d')](_0x4299a0,_0x5e4e24);};VoiceCallReport[_0xd230('0x2b')]['syncNewCallerId']=function(_0x4f826c){try{if(this[_0xd230('0x2e')](_0x4f826c)){logger[_0xd230('0x26')](_0xd230('0x2f'),_0x4f826c[_0xd230('0x30')],_0x4f826c['calleridname'],_0x4f826c[_0xd230('0x31')]);logger[_0xd230('0x32')](_0xd230('0x33'),_0x4f826c['uniqueid'],util['inspect'](_0x4f826c,{'showHidden':![],'depth':null}));if(_0x4f826c[_0xd230('0x30')]===_0x4f826c[_0xd230('0x34')]){if(!_[_0xd230('0x2c')](this[_0xd230('0x13')][_0x4f826c['uniqueid']])){_[_0xd230('0x35')](this[_0xd230('0x13')][_0x4f826c[_0xd230('0x30')]],_[_0xd230('0x36')](_0x4f826c,_[_0xd230('0x37')](this[_0xd230('0x13')][_0x4f826c[_0xd230('0x30')]])));}}if(_0x4f826c[_0xd230('0x38')]==='from-sip'){var _0x129741=this[_0xd230('0x14')][_0x4f826c[_0xd230('0x39')]['split']('-')[0x0]];if(_0x129741){if(_0x4f826c['exten']==_0xd230('0x3a')){_0x129741[_0xd230('0x3b')]=_0x4f826c[_0xd230('0x3c')];this[_0xd230('0x2d')](util[_0xd230('0x3d')]('user:%s',_0x129741['name']),_0xd230('0x3e'),{'id':_0x129741['id'],'destaccountcode':_0x129741['accountcode'],'destconnectedlinenum':_0x4f826c[_0xd230('0x3c')]});}}}}}catch(_0x85798c){logger['error'](_0xd230('0x3f'),_0x4f826c[_0xd230('0x30')],util[_0xd230('0x2a')](_0x85798c,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncNewChannel']=function(_0x4bae8a){try{if(this['isNotNull'](_0x4bae8a)){logger[_0xd230('0x32')](_0xd230('0x40'),_0x4bae8a['uniqueid'],util[_0xd230('0x2a')](_0x4bae8a,{'showHidden':![],'depth':null}));if(this[_0xd230('0x13')][_0x4bae8a[_0xd230('0x30')]]){return;}if(_0x4bae8a[_0xd230('0x39')]===_0xd230('0x41')){return;}if(_0x4bae8a[_0xd230('0x30')]!==_0x4bae8a['linkedid']&&!this[_0xd230('0x15')][_0x4bae8a[_0xd230('0x34')]]){return;}logger[_0xd230('0x26')]('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0x4bae8a['uniqueid'],_0x4bae8a[_0xd230('0x38')],_0x4bae8a[_0xd230('0x42')]);this['channels'][_0x4bae8a[_0xd230('0x30')]]=new Channel();this[_0xd230('0x13')][_0x4bae8a[_0xd230('0x30')]][_0xd230('0x43')]=moment()[_0xd230('0x3d')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xd230('0x13')][_0x4bae8a[_0xd230('0x30')]][_0xd230('0x44')]=dispositions[_['toNumber'](_0x4bae8a[_0xd230('0x45')])];_[_0xd230('0x35')](this[_0xd230('0x13')][_0x4bae8a['uniqueid']],_[_0xd230('0x36')](_0x4bae8a,_['keys'](this['channels'][_0x4bae8a[_0xd230('0x30')]])));if(_0x4bae8a['context']==='from-sip'){var _0x195c09=this['agents'][_0x4bae8a['channel'][_0xd230('0x46')]('-')[0x0]];if(_0x195c09&&typeof _0x195c09[_0xd230('0x3b')]==='undefined'){_0x195c09[_0xd230('0x3b')]=_0x4bae8a[_0xd230('0x42')];logger[_0xd230('0x32')](_0xd230('0x47'),_0x4bae8a[_0xd230('0x30')],util[_0xd230('0x2a')]({'id':_0x195c09['id'],'destaccountcode':_0x195c09[_0xd230('0x48')],'destconnectedlinenum':_0x4bae8a['exten']},{'showHidden':![],'depth':null}));this[_0xd230('0x2d')](util[_0xd230('0x3d')](_0xd230('0x49'),_0x195c09['name']),_0xd230('0x3e'),{'id':_0x195c09['id'],'destaccountcode':_0x195c09[_0xd230('0x48')],'destconnectedlinenum':_0x4bae8a[_0xd230('0x42')]});}}}}catch(_0x3df756){logger[_0xd230('0x4a')]('[%s][voiceCallReport][newchannel]',_0x4bae8a[_0xd230('0x30')],util['inspect'](_0x3df756,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd230('0x2b')][_0xd230('0x17')]=function(_0x509bcd){try{if(this['isNotNull'](_0x509bcd)){logger[_0xd230('0x32')](_0xd230('0x4b'),_0x509bcd[_0xd230('0x30')],util[_0xd230('0x2a')](_0x509bcd,{'showHidden':![],'depth':null}));if(_0x509bcd['channel']==='OutgoingSpoolFailed'||_0x509bcd[_0xd230('0x42')]==='h')return;if(_0x509bcd[_0xd230('0x30')]===_0x509bcd['linkedid']||this['blindTransfers'][_0x509bcd[_0xd230('0x34')]]){_0x509bcd[_0xd230('0x4c')]=_0x509bcd[_0xd230('0x4c')]?_0x509bcd['application']['toLowerCase']():undefined;_0x509bcd[_0xd230('0x4d')]=_0x509bcd['appdata']||_0x509bcd[_0xd230('0x4d')];if(_0x509bcd[_0xd230('0x4e')]&&!_0x509bcd['appdata']['startsWith'](_0xd230('0x4f'))&&_0x509bcd[_0xd230('0x4c')]!==_0xd230('0x8')){_0x509bcd[_0xd230('0x4d')]=_0x509bcd['applicationdata']['toLowerCase']();}logger[_0xd230('0x26')](_0xd230('0x50'),_0x509bcd[_0xd230('0x30')],_0x509bcd[_0xd230('0x4c')],_0x509bcd['applicationdata']);if(_['isUndefined'](this['channels'][_0x509bcd[_0xd230('0x30')]])){this[_0xd230('0x13')][_0x509bcd[_0xd230('0x30')]]=new Channel();this['channels'][_0x509bcd[_0xd230('0x30')]][_0xd230('0x43')]=_0x509bcd[_0xd230('0x51')]?moment()[_0xd230('0x52')](moment['duration'](_0x509bcd[_0xd230('0x51')])[_0xd230('0x53')](),_0xd230('0x53'))[_0xd230('0x3d')](_0xd230('0x54')):moment()[_0xd230('0x3d')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xd230('0x13')][_0x509bcd[_0xd230('0x30')]][_0xd230('0x44')]=_0xd230('0xc');}_[_0xd230('0x35')](this[_0xd230('0x13')][_0x509bcd[_0xd230('0x30')]],_['pick'](_0x509bcd,_[_0xd230('0x37')](this[_0xd230('0x13')][_0x509bcd['uniqueid']])));if(_[_0xd230('0x55')](applications,_0x509bcd[_0xd230('0x4c')])){this[_0xd230('0x13')][_0x509bcd['uniqueid']]['lastapplication']=_0x509bcd[_0xd230('0x4c')];this[_0xd230('0x13')][_0x509bcd[_0xd230('0x30')]][_0xd230('0x56')]=_0x509bcd[_0xd230('0x4d')];if(_0x509bcd['application']===_0xd230('0x57')&&_[_0xd230('0x58')](_0x509bcd[_0xd230('0x4d')][_0xd230('0x59')](),_0xd230('0x5a'))){var _0xcd48d6=_0x509bcd[_0xd230('0x4d')]['split']('=');var _0x189a64=_0xcd48d6[0x0][_0xd230('0x59')]()['match'](/cdr\((.*)\)/);if(_0x189a64){if(_0x189a64[0x1]===_0xd230('0x5b')&&!_[_0xd230('0x5c')](this[_0xd230('0x13')][_0x509bcd[_0xd230('0x30')]][_0x189a64[0x1]]))return;this[_0xd230('0x13')][_0x509bcd['uniqueid']][_0x189a64[0x1]]=_0xcd48d6[0x1];}}else if(_0x509bcd[_0xd230('0x4c')]===_0xd230('0x8')){this['channels'][_0x509bcd[_0xd230('0x30')]][_0xd230('0x8')]=_0x509bcd['applicationdata'][_0xd230('0x46')](',')[0x0];}}}}}catch(_0x1b6495){logger['error'](_0xd230('0x5d'),_0x509bcd[_0xd230('0x30')],util[_0xd230('0x2a')](_0x1b6495,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd230('0x2b')][_0xd230('0x5e')]=function(_0x516d35){try{if(this[_0xd230('0x2e')](_0x516d35)){logger['info'](_0xd230('0x5f'),_0x516d35['uniqueid'],_0x516d35[_0xd230('0x34')],_0x516d35[_0xd230('0x60')],_0x516d35[_0xd230('0x31')]);logger[_0xd230('0x32')](_0xd230('0x61'),_0x516d35[_0xd230('0x30')],util[_0xd230('0x2a')](_0x516d35,{'showHidden':![],'depth':null}));if(_0x516d35[_0xd230('0x45')]!=='6')return;var _0x289541=this[_0xd230('0x14')][_0x516d35[_0xd230('0x39')][_0xd230('0x46')]('-')[0x0]];if(_0x516d35[_0xd230('0x30')]!==_0x516d35['linkedid']){var _0x27c896=moment();if(this[_0xd230('0x13')][_0x516d35[_0xd230('0x34')]]){if(!this['channels'][_0x516d35[_0xd230('0x34')]]['answered']){this[_0xd230('0x13')][_0x516d35[_0xd230('0x34')]]['answered']=!![];this['channels'][_0x516d35[_0xd230('0x34')]][_0xd230('0x62')]=_0x27c896[_0xd230('0x3d')]('YYYY-MM-DD\x20HH:mm:ss');if(this[_0xd230('0x13')][_0x516d35[_0xd230('0x34')]][_0xd230('0x43')]){this[_0xd230('0x13')][_0x516d35[_0xd230('0x34')]]['holdtime']=_0x27c896[_0xd230('0x63')](this[_0xd230('0x13')][_0x516d35[_0xd230('0x34')]][_0xd230('0x43')],_0xd230('0x53'));}}this[_0xd230('0x13')][_0x516d35['linkedid']]['linkedid']=_0x516d35[_0xd230('0x30')];if(_0x516d35[_0xd230('0x31')]!==_0xd230('0x3a')){this[_0xd230('0x13')][_0x516d35[_0xd230('0x34')]][_0xd230('0x3c')]=_0x516d35[_0xd230('0x31')];}this[_0xd230('0x13')][_0x516d35[_0xd230('0x34')]]['connectedlinename']=_0x516d35[_0xd230('0x60')];this[_0xd230('0x13')][_0x516d35[_0xd230('0x34')]]['destinationchannel']=_0x516d35[_0xd230('0x39')];this[_0xd230('0x13')][_0x516d35['linkedid']][_0xd230('0x44')]=dispositions[_[_0xd230('0x64')](_0x516d35['channelstate'])];if(_0x289541){this[_0xd230('0x13')][_0x516d35[_0xd230('0x34')]][_0xd230('0x65')]=_0x289541['id'];this[_0xd230('0x13')][_0x516d35[_0xd230('0x34')]][_0xd230('0x66')]=_0x289541[_0xd230('0x67')];}}if(this[_0xd230('0x13')][_0x516d35[_0xd230('0x30')]]){if(!this[_0xd230('0x13')][_0x516d35['uniqueid']][_0xd230('0x68')]){this[_0xd230('0x13')][_0x516d35[_0xd230('0x30')]][_0xd230('0x68')]=!![];this[_0xd230('0x13')][_0x516d35[_0xd230('0x30')]][_0xd230('0x62')]=_0x27c896[_0xd230('0x3d')]('YYYY-MM-DD\x20HH:mm:ss');if(this['channels'][_0x516d35[_0xd230('0x30')]]['starttime']){this[_0xd230('0x13')][_0x516d35[_0xd230('0x30')]]['holdtime']=_0x27c896[_0xd230('0x63')](this[_0xd230('0x13')][_0x516d35[_0xd230('0x30')]][_0xd230('0x43')],'seconds');}}if(_0x516d35[_0xd230('0x31')]!=='xcally-motion-preview'){this[_0xd230('0x13')][_0x516d35[_0xd230('0x30')]]['connectedlinenum']=_0x516d35['calleridnum'];}this[_0xd230('0x13')][_0x516d35[_0xd230('0x30')]][_0xd230('0x69')]=_0x516d35[_0xd230('0x60')];this[_0xd230('0x13')][_0x516d35[_0xd230('0x30')]]['destinationchannel']=_0x516d35['channel'];this['channels'][_0x516d35[_0xd230('0x30')]][_0xd230('0x44')]=dispositions[_[_0xd230('0x64')](_0x516d35['channelstate'])];}}else{if(this['channels'][_0x516d35[_0xd230('0x30')]]){if(_0x289541){this['channels'][_0x516d35['uniqueid']][_0xd230('0x65')]=_0x289541['id'];this['channels'][_0x516d35[_0xd230('0x30')]][_0xd230('0x66')]=_0x289541[_0xd230('0x67')];}}}if(_0x516d35[_0xd230('0x38')]===_0xd230('0x6a')){if(_0x289541){_0x289541['destconnectedlinenum']=_0x516d35['exten'];var _0x1a7b61,_0x30edbf;if(this[_0xd230('0x13')][_0x516d35[_0xd230('0x30')]]){_0x1a7b61=this[_0xd230('0x13')][_0x516d35[_0xd230('0x30')]][_0xd230('0x6b')];_0x30edbf=this['channels'][_0x516d35[_0xd230('0x30')]][_0xd230('0x8')];}else if(this[_0xd230('0x13')][_0x516d35['linkedid']]){_0x1a7b61=this[_0xd230('0x13')][_0x516d35[_0xd230('0x34')]][_0xd230('0x6b')];_0x30edbf=this[_0xd230('0x13')][_0x516d35['linkedid']]['queue'];}_0x289541[_0xd230('0x8')]=_0x30edbf;_0x289541[_0xd230('0x6b')]=_0x1a7b61;var _0xa28687={'id':_0x289541['id'],'name':_0x289541[_0xd230('0x67')],'agentconnected':!![],'destaccountcode':_0x289541[_0xd230('0x48')],'destconnectedlinenum':_0x516d35['exten'],'queue':_0x30edbf||undefined,'routealias':_0x1a7b61,'uniqueid':_0x516d35[_0xd230('0x34')]};logger[_0xd230('0x32')](_0xd230('0x6c'),_0x516d35[_0xd230('0x30')],util[_0xd230('0x2a')](_0xa28687,{'showHidden':![],'depth':null}));this[_0xd230('0x2d')](util[_0xd230('0x3d')](_0xd230('0x49'),_0x289541[_0xd230('0x67')]),_0xd230('0x3e'),_0xa28687);}}}}catch(_0x2da187){logger[_0xd230('0x4a')](_0xd230('0x6d'),_0x516d35[_0xd230('0x30')],util[_0xd230('0x2a')](_0x2da187,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd230('0x2b')][_0xd230('0x6e')]=function(_0x3812fa,_0x11815f){try{if(this['channels'][_0x3812fa]){logger[_0xd230('0x26')]('[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s',_0x3812fa,_0x11815f);this[_0xd230('0x13')][_0x3812fa][_0xd230('0x6f')]=!![];if(_['endsWith'](_0x11815f,_0xd230('0x70'))){_0x11815f=_0x11815f['replace'](_0xd230('0x70'),_0xd230('0x71'));}this[_0xd230('0x13')][_0x3812fa][_0xd230('0x72')]=_0x11815f;var _0x2e6829=_[_0xd230('0x73')](this[_0xd230('0x13')][_0x3812fa]['monitors'],{'filename':_0x11815f});if(_[_0xd230('0x5c')](_0x2e6829)){this[_0xd230('0x13')][_0x3812fa]['monitors'][_0xd230('0x74')]({'filename':_0x11815f,'createdAt':moment()[_0xd230('0x3d')](_0xd230('0x54')),'mixmonitorid':'','status':_0xd230('0x75')});}}}catch(_0x57d424){logger[_0xd230('0x4a')](_0xd230('0x76'),_0x3812fa,util[_0xd230('0x2a')](_0x57d424,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd230('0x2b')][_0xd230('0x1c')]=function(_0x458053){try{if(this[_0xd230('0x2e')](_0x458053)){logger[_0xd230('0x32')]('[%s][voiceCallReport][varset]\x20event:',_0x458053[_0xd230('0x30')],util[_0xd230('0x2a')](_0x458053,{'showHidden':![],'depth':null}));if(this[_0xd230('0x13')][_0x458053[_0xd230('0x30')]]&&_0x458053[_0xd230('0x39')]!='OutgoingSpoolFailed'){if(this[_0xd230('0x2e')](_0x458053[_0xd230('0x77')])){if(this[_0xd230('0x2e')](_0x458053[_0xd230('0x77')][_0xd230('0x78')])){logger[_0xd230('0x26')](_0xd230('0x79'),_0x458053[_0xd230('0x30')],_0x458053[_0xd230('0x7a')]);this[_0xd230('0x6e')](_0x458053[_0xd230('0x30')],_0x458053[_0xd230('0x7a')]);}else if(this[_0xd230('0x2e')](_0x458053[_0xd230('0x77')][_0xd230('0x7b')])){logger[_0xd230('0x26')](_0xd230('0x7c'),_0x458053['uniqueid'],_0x458053['value']);this['channels'][_0x458053['uniqueid']][_0xd230('0x31')]=_0x458053[_0xd230('0x7a')];}else if(this[_0xd230('0x2e')](_0x458053['variable'][_0xd230('0x7d')])){logger[_0xd230('0x26')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s',_0x458053[_0xd230('0x30')],_0x458053[_0xd230('0x7a')]);this[_0xd230('0x13')][_0x458053[_0xd230('0x30')]][_0xd230('0x7e')]=_0x458053[_0xd230('0x7a')];}else if(this[_0xd230('0x2e')](_0x458053[_0xd230('0x77')][_0xd230('0x7f')])){logger[_0xd230('0x26')](_0xd230('0x80'),_0x458053['uniqueid'],_0x458053[_0xd230('0x7a')]);this[_0xd230('0x13')][_0x458053[_0xd230('0x30')]]['type']=_0x458053[_0xd230('0x7a')];}else if(this[_0xd230('0x2e')](_0x458053['variable'][_0xd230('0x81')])){logger[_0xd230('0x26')](_0xd230('0x82'),_0x458053['uniqueid'],_0x458053[_0xd230('0x7a')][_0xd230('0x46')](',')[0x0]);this['channels'][_0x458053[_0xd230('0x30')]]['queue']=_0x458053[_0xd230('0x7a')][_0xd230('0x46')](',')[0x0];}else if(this['isNotNull'](_0x458053[_0xd230('0x77')][_0xd230('0x83')])){logger[_0xd230('0x26')](_0xd230('0x84'),_0x458053['uniqueid'],_0x458053['value']);this[_0xd230('0x13')][_0x458053['uniqueid']][_0xd230('0x85')]=_0x458053[_0xd230('0x7a')];}else if(this[_0xd230('0x2e')](_0x458053['variable']['xmd-destination'])){logger['info'](_0xd230('0x86'),_0x458053[_0xd230('0x30')],_0x458053['value']);this[_0xd230('0x13')][_0x458053['uniqueid']][_0xd230('0x87')]=_0x458053[_0xd230('0x7a')];}else if(this['isNotNull'](_0x458053['variable'][_0xd230('0x88')])){logger['info']('[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s',_0x458053[_0xd230('0x30')],_0x458053['value']);this[_0xd230('0x13')][_0x458053['uniqueid']][_0xd230('0x89')]=_0x458053['value'];}else if(this[_0xd230('0x2e')](_0x458053[_0xd230('0x77')][_0xd230('0x8a')])){logger['info'](_0xd230('0x8b'),_0x458053['uniqueid'],_0x458053[_0xd230('0x7a')]);this[_0xd230('0x13')][_0x458053[_0xd230('0x30')]]['queue']=_0x458053[_0xd230('0x7a')];}else if(this[_0xd230('0x2e')](_0x458053[_0xd230('0x77')][_0xd230('0x8c')])){logger[_0xd230('0x26')](_0xd230('0x8d'),_0x458053[_0xd230('0x30')],_0x458053[_0xd230('0x7a')]);this[_0xd230('0x13')][_0x458053[_0xd230('0x30')]][_0xd230('0x8e')]=_0x458053[_0xd230('0x7a')];}}}else if(this['isNotNull'](_0x458053['variable'][_0xd230('0x78')])){if(_0x458053[_0xd230('0x7a')]){var _0x2a63ab=path[_0xd230('0x8f')](_0x458053[_0xd230('0x7a')])[_0xd230('0x67')];logger[_0xd230('0x26')](_0xd230('0x79'),_0x2a63ab,_0x458053['value']);this[_0xd230('0x6e')](_0x2a63ab,_0x458053[_0xd230('0x7a')]);}}else if(this['channels'][_0x458053['linkedid']]){if(this['isNotNull'](_0x458053[_0xd230('0x77')])){if(this[_0xd230('0x2e')](_0x458053[_0xd230('0x77')][_0xd230('0x8c')])){logger['info'](_0xd230('0x8d'),_0x458053[_0xd230('0x34')],_0x458053[_0xd230('0x7a')]);this[_0xd230('0x13')][_0x458053[_0xd230('0x34')]][_0xd230('0x90')]=_0x458053[_0xd230('0x7a')];}}}}}catch(_0x3b7109){logger[_0xd230('0x4a')]('[%s][voiceCallReport][varset]',_0x458053[_0xd230('0x30')],util[_0xd230('0x2a')](_0x3b7109,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd230('0x2b')][_0xd230('0x1e')]=function(_0x4297f1){try{if(this[_0xd230('0x2e')](_0x4297f1)){logger[_0xd230('0x32')](_0xd230('0x91'),_0x4297f1['uniqueid'],util['inspect'](_0x4297f1,{'showHidden':![],'depth':null}));if(this['blindTransfers'][_0x4297f1[_0xd230('0x34')]]){if(this[_0xd230('0x13')][this[_0xd230('0x15')][_0x4297f1[_0xd230('0x34')]][_0xd230('0x34')]]){this[_0xd230('0x13')][this['blindTransfers'][_0x4297f1[_0xd230('0x34')]][_0xd230('0x34')]][_0xd230('0x30')]=_0x4297f1['uniqueid'];this[_0xd230('0x13')][this['blindTransfers'][_0x4297f1[_0xd230('0x34')]][_0xd230('0x34')]][_0xd230('0x68')]=this[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]][_0xd230('0x68')];this['channels'][this['blindTransfers'][_0x4297f1[_0xd230('0x34')]][_0xd230('0x34')]][_0xd230('0x62')]=this['channels'][_0x4297f1[_0xd230('0x30')]][_0xd230('0x62')];this[_0xd230('0x13')][this[_0xd230('0x15')][_0x4297f1[_0xd230('0x34')]][_0xd230('0x34')]][_0xd230('0x92')]=this[_0xd230('0x13')][this[_0xd230('0x15')][_0x4297f1[_0xd230('0x34')]][_0xd230('0x34')]][_0xd230('0x39')];this[_0xd230('0x13')][this[_0xd230('0x15')][_0x4297f1[_0xd230('0x34')]]['linkedid']]['disposition']=this[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]][_0xd230('0x44')];this[_0xd230('0x13')][_0x4297f1['uniqueid']]=this[_0xd230('0x13')][this[_0xd230('0x15')][_0x4297f1['linkedid']][_0xd230('0x34')]];delete this[_0xd230('0x13')][this[_0xd230('0x15')][_0x4297f1[_0xd230('0x34')]][_0xd230('0x34')]];}else if(this[_0xd230('0x13')][this[_0xd230('0x15')][_0x4297f1['linkedid']][_0xd230('0x30')]]){this[_0xd230('0x13')][this[_0xd230('0x15')][_0x4297f1[_0xd230('0x34')]][_0xd230('0x30')]][_0xd230('0x30')]=[this['channels'][this[_0xd230('0x15')][_0x4297f1[_0xd230('0x34')]][_0xd230('0x30')]][_0xd230('0x34')],this[_0xd230('0x13')][this[_0xd230('0x15')][_0x4297f1['linkedid']][_0xd230('0x30')]][_0xd230('0x34')]=this[_0xd230('0x13')][this['blindTransfers'][_0x4297f1['linkedid']][_0xd230('0x30')]]['uniqueid']][0x0];this[_0xd230('0x13')][this[_0xd230('0x15')][_0x4297f1['linkedid']]['uniqueid']][_0xd230('0x68')]=this[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]][_0xd230('0x68')];this['channels'][this[_0xd230('0x15')][_0x4297f1[_0xd230('0x34')]][_0xd230('0x30')]][_0xd230('0x62')]=this[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]][_0xd230('0x62')];this['channels'][this[_0xd230('0x15')][_0x4297f1[_0xd230('0x34')]]['uniqueid']][_0xd230('0x92')]=this[_0xd230('0x13')][this[_0xd230('0x15')][_0x4297f1['linkedid']][_0xd230('0x30')]]['channel'];this[_0xd230('0x13')][this[_0xd230('0x15')][_0x4297f1[_0xd230('0x34')]][_0xd230('0x30')]][_0xd230('0x44')]=this[_0xd230('0x13')][_0x4297f1['uniqueid']][_0xd230('0x44')];this['channels'][_0x4297f1[_0xd230('0x30')]]=this['channels'][this[_0xd230('0x15')][_0x4297f1[_0xd230('0x34')]][_0xd230('0x30')]];delete this[_0xd230('0x13')][this['blindTransfers'][_0x4297f1[_0xd230('0x34')]][_0xd230('0x30')]];}}if(this[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]]){logger[_0xd230('0x26')](_0xd230('0x93'),_0x4297f1[_0xd230('0x30')],_0x4297f1[_0xd230('0x94')]);var _0x1bf256=moment();this[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]]['endtime']=_0x1bf256['format'](_0xd230('0x54'));this[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]][_0xd230('0x51')]=_0x1bf256[_0xd230('0x63')](this[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]][_0xd230('0x43')],'seconds');if(this[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]]['answered']){this[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]][_0xd230('0x95')]=_0x1bf256['diff'](this[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]][_0xd230('0x62')],'seconds');this['channels'][_0x4297f1[_0xd230('0x30')]]['holdtime']=this[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]]['duration']-this['channels'][_0x4297f1[_0xd230('0x30')]]['billableseconds'];}if(_0x4297f1[_0xd230('0x38')]===_0xd230('0x6a')){if(this[_0xd230('0x14')][_0x4297f1[_0xd230('0x39')]['split']('-')[0x0]]){this[_0xd230('0x14')][_0x4297f1[_0xd230('0x39')][_0xd230('0x46')]('-')[0x0]]=_[_0xd230('0x96')](this[_0xd230('0x14')][_0x4297f1['channel']['split']('-')[0x0]],['destconnectedlinenum']);logger[_0xd230('0x32')](_0xd230('0x97'),_0x4297f1['uniqueid'],util['inspect']({'id':this[_0xd230('0x14')][_0x4297f1[_0xd230('0x39')][_0xd230('0x46')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x4297f1['channel'][_0xd230('0x46')]('-')[0x0]][_0xd230('0x48')]},{'showHidden':![],'depth':null}));this[_0xd230('0x2d')](util[_0xd230('0x3d')](_0xd230('0x49'),this[_0xd230('0x14')][_0x4297f1[_0xd230('0x39')][_0xd230('0x46')]('-')[0x0]][_0xd230('0x67')]),_0xd230('0x98'),{'id':this[_0xd230('0x14')][_0x4297f1['channel'][_0xd230('0x46')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x4297f1[_0xd230('0x39')][_0xd230('0x46')]('-')[0x0]][_0xd230('0x48')]});for(var _0x1af61f=0x0;_0x1af61f<Object[_0xd230('0x37')](this[_0xd230('0x14')])['length'];_0x1af61f++){var _0x4aa284=Object[_0xd230('0x37')](this[_0xd230('0x14')])[_0x1af61f];var _0x5eb067=this[_0xd230('0x14')][_0x4aa284];if(_0x5eb067[_0xd230('0x48')]===Number(this[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]]['connectedlinenum'])){this[_0xd230('0x2d')](util['format']('user:%s',_0x5eb067[_0xd230('0x67')]),_0xd230('0x98'),{'id':_0x5eb067['id'],'destaccountcode':_0x5eb067[_0xd230('0x48')],'transfer':this['channels'][_0x4297f1[_0xd230('0x30')]][_0xd230('0x99')]});break;}}}}var _0x59a4d4=this;Promise['resolve']()[_0xd230('0x9a')](function(){var _0x4f95f5=_0x59a4d4[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]];if(typeof _0x4f95f5[_0xd230('0x99')]==='undefined'){return;}if(_0x4f95f5[_0xd230('0x9b')]===!![]){return;}if(_[_0xd230('0x9c')](_0x4f95f5[_0xd230('0x9d')])){return;}return RpcSetting[_0xd230('0x9e')]()['then'](function(_0x4e0312){if(!_0x4e0312['stopRecordingOnTransfer'])return;return Promise['resolve']()[_0xd230('0x9a')](function(){return ami[_0xd230('0x9f')]({'action':_0xd230('0xa0'),'channel':_0x4f95f5[_0xd230('0x39')]})[_0xd230('0xa1')](function(){});})[_0xd230('0x9a')](function(){return ami[_0xd230('0x9f')]({'action':_0xd230('0xa0'),'channel':_0x4f95f5[_0xd230('0x92')]})[_0xd230('0xa1')](function(){})['finally'](function(){var _0x34ae78=_0x59a4d4['agents'][_0x4f95f5[_0xd230('0x92')]['split']('-')[0x0]];if(!_0x34ae78)return;io[_0xd230('0x2d')](_0xd230('0xa2'),{'agentId':_0x34ae78['id'],'uniqueid':_0x4f95f5['uniqueid']});});});});})[_0xd230('0x9a')](function(){if(_0x4297f1[_0xd230('0xa3')]===_0xd230('0xa4')){_0x59a4d4[_0xd230('0x15')][_0x4297f1[_0xd230('0x30')]]=_0x4297f1;}else{if(_0x59a4d4[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]]&&_0x59a4d4[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]]['type']==='outbound'&&_0x59a4d4[_0xd230('0x15')][_0x4297f1[_0xd230('0x30')]]){_0x59a4d4['channels'][_0x4297f1[_0xd230('0x30')]][_0xd230('0x30')]=[_0x59a4d4[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]][_0xd230('0x34')],_0x59a4d4[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]][_0xd230('0x34')]=_0x59a4d4[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]]['uniqueid']][0x0];delete _0x59a4d4[_0xd230('0x15')][_0x4297f1[_0xd230('0x30')]];}}logger[_0xd230('0x32')]('[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:',_0x4297f1[_0xd230('0x30')],util['inspect'](_0x59a4d4[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]],{'showHidden':![],'depth':null}));ami[_0xd230('0x2d')]('custom:voiceCallReport',_0x59a4d4[_0xd230('0x13')][_0x4297f1[_0xd230('0x30')]]);delete _0x59a4d4['channels'][_0x4297f1[_0xd230('0x30')]];});}}}catch(_0x2a492e){logger[_0xd230('0x4a')](_0xd230('0xa5'),_0x4297f1[_0xd230('0x30')],util[_0xd230('0x2a')](_0x2a492e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd230('0x2b')][_0xd230('0x20')]=function(_0xb90dc2){try{if(this[_0xd230('0x2e')](_0xb90dc2)){logger[_0xd230('0x26')](_0xd230('0xa6'),_0xb90dc2[_0xd230('0x30')],_0xb90dc2[_0xd230('0xa7')],_0xb90dc2['transfertargetcalleridnum']);logger['debug'](_0xd230('0xa8'),_0xb90dc2[_0xd230('0x30')],util[_0xd230('0x2a')](_0xb90dc2,{'showHidden':![],'depth':null}));var _0x43dc9d;if(this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xa9')]]){this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xa9')]]['transfercalleridnum']=_0xb90dc2['origtransferercalleridnum'];this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xa9')]][_0xd230('0xaa')]=_0xb90dc2[_0xd230('0xab')];if(this['channels'][_0xb90dc2[_0xd230('0xac')]]){_0x43dc9d=this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xac')]];this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xac')]]=this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xa9')]];this['channels'][_0xb90dc2[_0xd230('0xa9')]]=_0x43dc9d;}this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xac')]]['transferType']=_0xd230('0xad');}else if(this[_0xd230('0x13')][_0xb90dc2['transfertargetuniqueid']]){this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xae')]][_0xd230('0xaf')]=_0xb90dc2[_0xd230('0xa7')];this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xae')]]['transferconnectedlinenum']=_0xb90dc2[_0xd230('0xab')];if(this[_0xd230('0x13')][_0xb90dc2['origtransfereruniqueid']]){_0x43dc9d=this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xb0')]];this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xb0')]]=this[_0xd230('0x13')][_0xb90dc2['transfertargetuniqueid']];this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xae')]]=_0x43dc9d;}this[_0xd230('0x13')][_0xb90dc2['transfertargetuniqueid']][_0xd230('0x99')]=_0xd230('0xad');}if((this['channels'][_0xb90dc2[_0xd230('0xb0')]]||this['channels'][_0xb90dc2[_0xd230('0xb1')]])&&this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xac')]]){var _0x58e8e2=_[_0xd230('0xb2')]([this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xb0')]],this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xb1')]],this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xac')]]],function(_0xd3aa22){return _0xd3aa22&&_0xd3aa22[_0xd230('0x5b')]==='outbound'&&_0xd3aa22[_0xd230('0xb3')];});if(_0x58e8e2){if(this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xb0')]])this['channels'][_0xb90dc2[_0xd230('0xb0')]][_0xd230('0x99')]=_0xd230('0xad');if(this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xb1')]])this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xb1')]][_0xd230('0x99')]='ATTENDED';this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xac')]][_0xd230('0x99')]=_0xd230('0xad');}else{if(this['channels'][_0xb90dc2[_0xd230('0xa9')]]){this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xac')]]['transferToInternal']=!![];}if(this[_0xd230('0x13')][_0xb90dc2[_0xd230('0xae')]]){this[_0xd230('0x13')][_0xb90dc2['transfertargetuniqueid']]['transferToInternal']=!![];}}}}}catch(_0x3b0626){logger[_0xd230('0x4a')](_0xd230('0xb4'),_0xb90dc2['uniqueid'],util[_0xd230('0x2a')](_0x3b0626,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd230('0x2b')][_0xd230('0x22')]=function(_0x3152c2){try{if(this[_0xd230('0x2e')](_0x3152c2)){logger[_0xd230('0x26')](_0xd230('0xb5'),_0x3152c2['uniqueid'],_0x3152c2['transfereecalleridnum'],_0x3152c2[_0xd230('0xb6')]);logger['debug'](_0xd230('0xb7'),_0x3152c2[_0xd230('0x30')],util[_0xd230('0x2a')](_0x3152c2,{'showHidden':![],'depth':null}));if(this[_0xd230('0x13')][_0x3152c2[_0xd230('0xa9')]]){this[_0xd230('0x13')][_0x3152c2[_0xd230('0xa9')]][_0xd230('0xaf')]=_0x3152c2[_0xd230('0xb8')];this[_0xd230('0x13')][_0x3152c2['transfereeuniqueid']]['transferconnectedlinenum']=_0x3152c2[_0xd230('0xb6')];this[_0xd230('0x13')][_0x3152c2[_0xd230('0xa9')]][_0xd230('0x99')]=_0xd230('0xb9');this[_0xd230('0x1e')]({'event':'BlindTransfer','uniqueid':_0x3152c2[_0xd230('0xa9')],'linkedid':_0x3152c2[_0xd230('0xba')],'context':_0x3152c2[_0xd230('0x38')],'channel':_0x3152c2['transfererchannel']});}else{this['channels'][_0x3152c2[_0xd230('0xba')]][_0xd230('0x99')]=_0xd230('0xb9');this[_0xd230('0x1e')]({'event':'BlindTransfer','uniqueid':_0x3152c2[_0xd230('0xba')],'linkedid':_0x3152c2[_0xd230('0xa9')],'context':_0x3152c2[_0xd230('0x38')],'channel':_0x3152c2['transfererchannel']});}}}catch(_0x5a40d0){logger[_0xd230('0x4a')](_0xd230('0xbb'),_0x3152c2[_0xd230('0x30')],util[_0xd230('0x2a')](_0x5a40d0,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xd230('0x2b')]['syncMusicOnHoldStart']=function(_0x14f7e1){try{if(this['isNotNull'](_0x14f7e1)){logger[_0xd230('0x32')](_0xd230('0xbc'),_0x14f7e1['uniqueid'],util[_0xd230('0x2a')](_0x14f7e1,{'showHidden':![],'depth':null}));if(this[_0xd230('0x13')][_0x14f7e1[_0xd230('0x30')]]){if(!_['isNil'](this['channels'][_0x14f7e1[_0xd230('0x30')]][_0xd230('0x62')])){this['channels'][_0x14f7e1[_0xd230('0x30')]][_0xd230('0xbd')]=moment()[_0xd230('0x3d')](_0xd230('0x54'));logger['info']('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x14f7e1['uniqueid'],this[_0xd230('0x13')][_0x14f7e1[_0xd230('0x30')]][_0xd230('0xbd')]);}}}}catch(_0x161756){logger[_0xd230('0x4a')](_0xd230('0xbe'),_0x14f7e1[_0xd230('0x30')],util['inspect'](_0x161756,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xd230('0x25')]=function(_0x158d70){try{if(this['isNotNull'](_0x158d70)){logger[_0xd230('0x32')](_0xd230('0xbf'),_0x158d70['uniqueid'],util[_0xd230('0x2a')](_0x158d70,{'showHidden':![],'depth':null}));if(this['channels'][_0x158d70[_0xd230('0x30')]]){if(!_[_0xd230('0x5c')](this[_0xd230('0x13')][_0x158d70['uniqueid']][_0xd230('0xbd')])){this[_0xd230('0x13')][_0x158d70[_0xd230('0x30')]][_0xd230('0xc0')]+=moment()['milliseconds'](0x0)[_0xd230('0x63')](this[_0xd230('0x13')][_0x158d70[_0xd230('0x30')]][_0xd230('0xbd')],_0xd230('0x53'));logger[_0xd230('0x26')]('[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s',_0x158d70['uniqueid'],this[_0xd230('0x13')][_0x158d70[_0xd230('0x30')]][_0xd230('0xc0')]);delete this[_0xd230('0x13')][_0x158d70[_0xd230('0x30')]][_0xd230('0xbd')];}}}}catch(_0x51adcf){logger[_0xd230('0x4a')](_0xd230('0xc1'),_0x158d70['uniqueid'],util[_0xd230('0x2a')](_0x51adcf,{'showHidden':![],'depth':null}));}};module[_0xd230('0xc2')]=VoiceCallReport;
\ No newline at end of file
index e6e15fa..1f60c5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5496=['holdtime','answertime','starttime','billableseconds','sumHoldTime','sumBillable','sumDuration','duration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','[%s][voiceDialReport][hangup]','application','toLowerCase','set','applicationdata','appdata','cdr(','split','match','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','ioredis','../../../config/environment','ami','redis','defaults','outboundChannels','outbound','variables','dialbegin','syncDialBegin','bind','dialend','syncDialEnd','syncVarSet','hangup','syncHangup','isUndefined','emit','prototype','isNotNull','debug','uniqueid','inspect','channels','merge','format','channel','substring','lastIndexOf','omit','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','applications','voice:outbound','custom:dialbegin','error','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','YYYY-MM-DD\x20HH:mm:ss','lastevent','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','voice_outbound_channel:save','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','outboundrouteid','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberinterface','memberpenalty','memberrealtime','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','diff','seconds','complete'];(function(_0x5659c9,_0x34759b){var _0x392f35=function(_0x420fe0){while(--_0x420fe0){_0x5659c9['push'](_0x5659c9['shift']());}};_0x392f35(++_0x34759b);}(_0x5496,0x175));var _0x6549=function(_0x492f49,_0x507390){_0x492f49=_0x492f49-0x0;var _0xffdb4e=_0x5496[_0x492f49];return _0xffdb4e;};'use strict';var _=require(_0x6549('0x0'));var moment=require(_0x6549('0x1'));var util=require(_0x6549('0x2'));var Redis=require(_0x6549('0x3'));var config=require(_0x6549('0x4'));var logger=require('../../../config/logger')(_0x6549('0x5'));var ami=require('../ami');config[_0x6549('0x6')]=_[_0x6549('0x7')](config[_0x6549('0x6')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x6549('0x6')]));function VoiceDialReport(_0x1d8cea){this['channels']=_0x1d8cea[_0x6549('0x8')];this[_0x6549('0x9')]=_0x1d8cea[_0x6549('0x9')];this['applications']={};this[_0x6549('0xa')]={};ami['on'](_0x6549('0xb'),this[_0x6549('0xc')][_0x6549('0xd')](this));ami['on'](_0x6549('0xe'),this[_0x6549('0xf')]['bind'](this));ami['on']('varset',this[_0x6549('0x10')][_0x6549('0xd')](this));ami['on'](_0x6549('0x11'),this[_0x6549('0x12')][_0x6549('0xd')](this));}VoiceDialReport['prototype']['isNotNull']=function(_0x3f844f){return _0x3f844f!==null&&!_[_0x6549('0x13')](_0x3f844f);};VoiceDialReport['prototype'][_0x6549('0x14')]=function(_0x150fc8,_0x195d25,_0x12b068){io['to'](_0x150fc8)[_0x6549('0x14')](_0x195d25,_0x12b068);};VoiceDialReport[_0x6549('0x15')]['syncDialBegin']=function(_0x5db86d){try{if(this[_0x6549('0x16')](_0x5db86d)){logger[_0x6549('0x17')]('[%s][voiceDialReport][dialbegin]\x20event:',_0x5db86d[_0x6549('0x18')],util[_0x6549('0x19')](_0x5db86d,{'showHidden':![],'depth':null}));if(this[_0x6549('0x1a')][_0x5db86d[_0x6549('0x18')]]){_[_0x6549('0x1b')](this['channels'][_0x5db86d['uniqueid']],{'starttime':moment()[_0x6549('0x1c')]('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':'called','interface':_0x5db86d[_0x6549('0x1d')][_0x6549('0x1e')](0x0,_0x5db86d[_0x6549('0x1d')][_0x6549('0x1f')]('-')),'membername':_0x5db86d[_0x6549('0x1d')]['substring'](_0x5db86d[_0x6549('0x1d')]['lastIndexOf']('/')+0x1,_0x5db86d[_0x6549('0x1d')][_0x6549('0x1f')]('-'))},_[_0x6549('0x20')](_0x5db86d,[_0x6549('0x21'),_0x6549('0x22')]));logger[_0x6549('0x23')](_0x6549('0x24'),_0x5db86d[_0x6549('0x18')],this[_0x6549('0x1a')][_0x5db86d[_0x6549('0x18')]][_0x6549('0x25')],this[_0x6549('0x1a')][_0x5db86d[_0x6549('0x18')]]['interface']);logger[_0x6549('0x17')](_0x6549('0x26'),_0x5db86d['uniqueid'],util[_0x6549('0x19')](this[_0x6549('0x1a')][_0x5db86d[_0x6549('0x18')]],{'showHidden':![],'depth':null}));if(this['applications'][_0x5db86d[_0x6549('0x18')]])_[_0x6549('0x1b')](this[_0x6549('0x1a')][_0x5db86d[_0x6549('0x18')]],this[_0x6549('0x27')][_0x5db86d[_0x6549('0x18')]]);this[_0x6549('0x14')](_0x6549('0x28'),'voice_outbound_channel:save',this[_0x6549('0x1a')][_0x5db86d[_0x6549('0x18')]]);logger[_0x6549('0x17')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x5db86d[_0x6549('0x18')],util['inspect'](this['channels'][_0x5db86d['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x6549('0x14')](_0x6549('0x29'),this['channels'][_0x5db86d[_0x6549('0x18')]]);}}}catch(_0x194ae7){logger[_0x6549('0x2a')](_0x6549('0x2b'),_0x5db86d[_0x6549('0x18')],util[_0x6549('0x19')](_0x194ae7,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6549('0x15')]['syncDialEnd']=function(_0x1b453c){try{if(this[_0x6549('0x16')](_0x1b453c)){logger[_0x6549('0x17')](_0x6549('0x2c'),_0x1b453c[_0x6549('0x18')],util[_0x6549('0x19')](_0x1b453c,{'showHidden':![],'depth':null}));if(this['channels'][_0x1b453c[_0x6549('0x18')]]){this['channels'][_0x1b453c[_0x6549('0x18')]]['dialstatus']=_0x1b453c[_0x6549('0x2d')];if(_0x1b453c[_0x6549('0x2d')]===_0x6549('0x2e')){this['channels'][_0x1b453c[_0x6549('0x18')]][_0x6549('0x2f')]=_0x1b453c[_0x6549('0x2f')];this[_0x6549('0x1a')][_0x1b453c['uniqueid']]['connectedlinename']=_0x1b453c['connectedlinename'];this[_0x6549('0x1a')][_0x1b453c[_0x6549('0x18')]]['answertime']=moment()[_0x6549('0x1c')](_0x6549('0x30'));this[_0x6549('0x1a')][_0x1b453c[_0x6549('0x18')]][_0x6549('0x31')]='connect';logger['info'](_0x6549('0x32'),_0x1b453c[_0x6549('0x18')],_0x1b453c[_0x6549('0x1d')][_0x6549('0x1e')](_0x1b453c[_0x6549('0x1d')][_0x6549('0x1f')]('/')+0x1,_0x1b453c[_0x6549('0x1d')][_0x6549('0x1f')]('-')));logger[_0x6549('0x17')](_0x6549('0x33'),_0x1b453c['uniqueid'],util[_0x6549('0x19')](this[_0x6549('0x1a')][_0x1b453c[_0x6549('0x18')]],{'showHidden':![],'depth':null}));ami[_0x6549('0x14')](_0x6549('0x34'),this['channels'][_0x1b453c['uniqueid']]);}logger['debug'](_0x6549('0x35'),_0x1b453c[_0x6549('0x18')],util[_0x6549('0x19')](this[_0x6549('0x1a')][_0x1b453c['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0x6549('0x28'),_0x6549('0x36'),this[_0x6549('0x1a')][_0x1b453c['uniqueid']]);}}}catch(_0x973d2d){logger['error'](_0x6549('0x37'),_0x1b453c[_0x6549('0x18')],util[_0x6549('0x19')](_0x973d2d,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6549('0x15')][_0x6549('0x10')]=function(_0xd525a5){try{if(this[_0x6549('0x16')](_0xd525a5)){logger['debug'](_0x6549('0x38'),_0xd525a5[_0x6549('0x18')],util[_0x6549('0x19')](_0xd525a5,{'showHidden':![],'depth':null}));this[_0x6549('0x39')](_0xd525a5[_0x6549('0x18')],_[_0x6549('0x3a')](_0xd525a5[_0x6549('0x3b')])[0x0],_0xd525a5[_0x6549('0x3c')]);if(this[_0x6549('0x16')](_0xd525a5[_0x6549('0x3b')])&&this[_0x6549('0x16')](_0xd525a5[_0x6549('0x3b')][_0x6549('0x3d')])){if(_[_0x6549('0x13')](this[_0x6549('0x1a')][_0xd525a5[_0x6549('0x18')]])){this['channels'][_0xd525a5[_0x6549('0x18')]]={'routeId':_0xd525a5[_0x6549('0x3c')],'variables':this[_0x6549('0xa')][_0xd525a5[_0x6549('0x18')]],'motionChannel':'voice'};logger[_0x6549('0x23')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0xd525a5[_0x6549('0x18')],_0xd525a5[_0x6549('0x3b')]['outboundrouteid'],_[_0x6549('0x3a')](_0xd525a5[_0x6549('0x3b')])[0x0],_0xd525a5[_0x6549('0x3c')]);logger[_0x6549('0x17')](_0x6549('0x3e'),_0xd525a5['uniqueid'],util['inspect'](this[_0x6549('0x1a')][_0xd525a5[_0x6549('0x18')]],{'showHidden':![],'depth':null}));this[_0x6549('0x14')](_0x6549('0x28'),_0x6549('0x36'),this['channels'][_0xd525a5[_0x6549('0x18')]]);}}}}catch(_0x17e691){logger[_0x6549('0x2a')](_0x6549('0x3f'),_0xd525a5[_0x6549('0x18')],util[_0x6549('0x19')](_0x17e691,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6549('0x15')][_0x6549('0x39')]=function(_0x5e6abf,_0x32b2d4,_0x58746c){var _0x2ed77c=[_0x6549('0x40'),_0x6549('0x41'),'rtpaudioqosjitter',_0x6549('0x42'),_0x6549('0x43'),_0x6549('0x44'),'rtpaudioqosrtt',_0x6549('0x45'),_0x6549('0x46'),_0x6549('0x47'),_0x6549('0x48'),_0x6549('0x49'),_0x6549('0x4a'),'memberdynamic',_0x6549('0x4b'),'memberlastcall',_0x6549('0x25'),_0x6549('0x4c'),_0x6549('0x4d')];if(!_[_0x6549('0x4e')](_0x32b2d4)&&!_[_0x6549('0x4f')](_0x2ed77c,_0x32b2d4)){if(_[_0x6549('0x13')](this[_0x6549('0xa')][_0x5e6abf])){this[_0x6549('0xa')][_0x5e6abf]={};}this[_0x6549('0xa')][_0x5e6abf][_0x32b2d4]=_0x58746c;}};VoiceDialReport[_0x6549('0x15')][_0x6549('0x12')]=function(_0x241201){try{if(this['isNotNull'](_0x241201)){logger[_0x6549('0x17')](_0x6549('0x50'),_0x241201[_0x6549('0x18')],util[_0x6549('0x19')](_0x241201,{'showHidden':![],'depth':null}));if(this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]]){logger[_0x6549('0x23')](_0x6549('0x51'),_0x241201['uniqueid'],_0x241201[_0x6549('0x52')]);this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]][_0x6549('0x53')]=moment()[_0x6549('0x1c')](_0x6549('0x30'));this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]]['duration']=moment(this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]][_0x6549('0x53')])[_0x6549('0x54')](this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]]['starttime'],_0x6549('0x55'));this[_0x6549('0x1a')][_0x241201['uniqueid']][_0x6549('0x31')]=_0x6549('0x56');this[_0x6549('0x9')]['total']+=0x1;if(this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]]['answertime']){this[_0x6549('0x9')]['answered']+=0x1;this[_0x6549('0x1a')][_0x241201['uniqueid']][_0x6549('0x57')]=moment(this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]][_0x6549('0x58')])[_0x6549('0x54')](this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]][_0x6549('0x59')],_0x6549('0x55'));this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]][_0x6549('0x5a')]=moment(this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]]['endtime'])[_0x6549('0x54')](this[_0x6549('0x1a')][_0x241201['uniqueid']][_0x6549('0x58')],_0x6549('0x55'));this[_0x6549('0x9')][_0x6549('0x5b')]+=this['channels'][_0x241201[_0x6549('0x18')]][_0x6549('0x57')]||0x0;this[_0x6549('0x9')][_0x6549('0x5c')]+=this['channels'][_0x241201[_0x6549('0x18')]]['billableseconds'];}this[_0x6549('0x9')][_0x6549('0x5d')]+=this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]][_0x6549('0x5e')];logger[_0x6549('0x17')](_0x6549('0x5f'),_0x241201[_0x6549('0x18')],util[_0x6549('0x19')](this[_0x6549('0x1a')][_0x241201['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x6549('0x14')](_0x6549('0x60'),this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]]);logger[_0x6549('0x17')](_0x6549('0x61'),_0x241201['uniqueid'],util['inspect'](this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]],{'showHidden':![],'depth':null}));ami[_0x6549('0x14')]('custom:dialend',this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]]);logger['debug'](_0x6549('0x62'),_0x241201[_0x6549('0x18')],util[_0x6549('0x19')](this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]],{'showHidden':![],'depth':null}));this[_0x6549('0x14')](_0x6549('0x28'),_0x6549('0x63'),this['outbound']);logger[_0x6549('0x23')]('[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event',JSON[_0x6549('0x64')](this[_0x6549('0x1a')][_0x241201['uniqueid']]));logger[_0x6549('0x17')](_0x6549('0x65'),_0x241201[_0x6549('0x18')],util['inspect'](this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]],{'showHidden':![],'depth':null}));this[_0x6549('0x14')](_0x6549('0x28'),_0x6549('0x66'),this[_0x6549('0x1a')][_0x241201['uniqueid']]);delete this[_0x6549('0x1a')][_0x241201[_0x6549('0x18')]];}else if(this[_0x6549('0x1a')][_0x241201['linkedid']]){this['channels'][_0x241201['linkedid']][_0x6549('0x18')]=this[_0x6549('0x1a')][_0x241201[_0x6549('0x67')]]['destuniqueid'];}if(this['variables'][_0x241201[_0x6549('0x18')]]){delete this['variables'][_0x241201[_0x6549('0x18')]];}}}catch(_0x3e3f8c){logger[_0x6549('0x2a')](_0x6549('0x68'),_0x241201[_0x6549('0x18')],util[_0x6549('0x19')](_0x3e3f8c,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x6549('0x15')]['syncNewExten']=function(_0x2f8c3a){try{if(this[_0x6549('0x16')](_0x2f8c3a)){logger[_0x6549('0x17')]('[%s][voiceDialReport][newexten]\x20event:',_0x2f8c3a[_0x6549('0x18')],util[_0x6549('0x19')](_0x2f8c3a,{'showHidden':![],'depth':null}));if(_0x2f8c3a[_0x6549('0x69')][_0x6549('0x6a')]()===_0x6549('0x6b')){_0x2f8c3a[_0x6549('0x6c')]=(_0x2f8c3a[_0x6549('0x6d')]||_0x2f8c3a['applicationdata'])[_0x6549('0x6a')]();if(_['startsWith'](_0x2f8c3a[_0x6549('0x6c')],_0x6549('0x6e'))){if(_[_0x6549('0x13')](this[_0x6549('0x27')][_0x2f8c3a[_0x6549('0x18')]]))this[_0x6549('0x27')][_0x2f8c3a[_0x6549('0x18')]]={};logger[_0x6549('0x23')]('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x2f8c3a[_0x6549('0x18')],_0x2f8c3a[_0x6549('0x69')],_0x2f8c3a[_0x6549('0x6c')]);var _0x30214c=_0x2f8c3a[_0x6549('0x6c')][_0x6549('0x6f')]('=');var _0xc8645b=_0x30214c[0x0][_0x6549('0x70')](/cdr\((.*)\)/);if(_0xc8645b)this[_0x6549('0x27')][_0x2f8c3a[_0x6549('0x18')]][_0xc8645b[0x1]]=_0x30214c[0x1];}}}}catch(_0x51f479){logger[_0x6549('0x2a')](_0x6549('0x71'),_0x2f8c3a[_0x6549('0x18')],util[_0x6549('0x19')](_0x51f479,{'showHidden':![],'depth':null}));}};module[_0x6549('0x72')]=VoiceDialReport;
\ No newline at end of file
+var _0x1261=['outboundChannels','outbound','applications','variables','syncDialBegin','bind','dialend','syncHangup','prototype','isNotNull','isUndefined','emit','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','format','YYYY-MM-DD\x20HH:mm:ss','substring','lastIndexOf','channel','omit','event','privilege','info','channels','membername','debug','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]','syncDialEnd','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','lastevent','connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','error','[%s][voiceDialReport][dialend]','addVariable','value','variable','voice','keys','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepvtcallid','membercalls','memberdynamic','memberlastcall','memberpenalty','memberrealtime','includes','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','starttime','seconds','complete','total','answertime','holdtime','sumHoldTime','billableseconds','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','[%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]','syncNewExten','toLowerCase','set','appdata','applicationdata','cdr(','split','match','[%s][voiceDialReport][newexten]','exports','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults'];(function(_0x2298f0,_0x3bbf4f){var _0x39b136=function(_0xc2cd6e){while(--_0xc2cd6e){_0x2298f0['push'](_0x2298f0['shift']());}};_0x39b136(++_0x3bbf4f);}(_0x1261,0x144));var _0x1126=function(_0x58c576,_0x3df9c6){_0x58c576=_0x58c576-0x0;var _0x2677c3=_0x1261[_0x58c576];return _0x2677c3;};'use strict';var _=require('lodash');var moment=require(_0x1126('0x0'));var util=require(_0x1126('0x1'));var Redis=require(_0x1126('0x2'));var config=require(_0x1126('0x3'));var logger=require(_0x1126('0x4'))(_0x1126('0x5'));var ami=require(_0x1126('0x6'));config[_0x1126('0x7')]=_[_0x1126('0x8')](config[_0x1126('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x1126('0x7')]));function VoiceDialReport(_0x907180){this['channels']=_0x907180[_0x1126('0x9')];this[_0x1126('0xa')]=_0x907180[_0x1126('0xa')];this[_0x1126('0xb')]={};this[_0x1126('0xc')]={};ami['on']('dialbegin',this[_0x1126('0xd')][_0x1126('0xe')](this));ami['on'](_0x1126('0xf'),this['syncDialEnd'][_0x1126('0xe')](this));ami['on']('varset',this['syncVarSet'][_0x1126('0xe')](this));ami['on']('hangup',this[_0x1126('0x10')][_0x1126('0xe')](this));}VoiceDialReport[_0x1126('0x11')][_0x1126('0x12')]=function(_0xca0355){return _0xca0355!==null&&!_[_0x1126('0x13')](_0xca0355);};VoiceDialReport[_0x1126('0x11')][_0x1126('0x14')]=function(_0x43850b,_0x53a8f0,_0x5de9a7){io['to'](_0x43850b)[_0x1126('0x14')](_0x53a8f0,_0x5de9a7);};VoiceDialReport[_0x1126('0x11')][_0x1126('0xd')]=function(_0x4be0c6){try{if(this[_0x1126('0x12')](_0x4be0c6)){logger['debug'](_0x1126('0x15'),_0x4be0c6[_0x1126('0x16')],util[_0x1126('0x17')](_0x4be0c6,{'showHidden':![],'depth':null}));if(this['channels'][_0x4be0c6[_0x1126('0x16')]]){_[_0x1126('0x18')](this['channels'][_0x4be0c6['uniqueid']],{'starttime':moment()[_0x1126('0x19')](_0x1126('0x1a')),'lastevent':'called','interface':_0x4be0c6['channel'][_0x1126('0x1b')](0x0,_0x4be0c6['channel'][_0x1126('0x1c')]('-')),'membername':_0x4be0c6[_0x1126('0x1d')][_0x1126('0x1b')](_0x4be0c6['channel'][_0x1126('0x1c')]('/')+0x1,_0x4be0c6['channel']['lastIndexOf']('-'))},_[_0x1126('0x1e')](_0x4be0c6,[_0x1126('0x1f'),_0x1126('0x20')]));logger[_0x1126('0x21')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x4be0c6[_0x1126('0x16')],this[_0x1126('0x22')][_0x4be0c6['uniqueid']][_0x1126('0x23')],this['channels'][_0x4be0c6['uniqueid']]['interface']);logger[_0x1126('0x24')](_0x1126('0x25'),_0x4be0c6[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x4be0c6[_0x1126('0x16')]],{'showHidden':![],'depth':null}));if(this[_0x1126('0xb')][_0x4be0c6[_0x1126('0x16')]])_['merge'](this[_0x1126('0x22')][_0x4be0c6[_0x1126('0x16')]],this[_0x1126('0xb')][_0x4be0c6['uniqueid']]);this['emit'](_0x1126('0x26'),_0x1126('0x27'),this['channels'][_0x4be0c6[_0x1126('0x16')]]);logger[_0x1126('0x24')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x4be0c6[_0x1126('0x16')],util['inspect'](this[_0x1126('0x22')][_0x4be0c6['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')]('custom:dialbegin',this[_0x1126('0x22')][_0x4be0c6['uniqueid']]);}}}catch(_0x5252e0){logger['error'](_0x1126('0x28'),_0x4be0c6[_0x1126('0x16')],util[_0x1126('0x17')](_0x5252e0,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x1126('0x29')]=function(_0x226afb){try{if(this['isNotNull'](_0x226afb)){logger[_0x1126('0x24')](_0x1126('0x2a'),_0x226afb[_0x1126('0x16')],util[_0x1126('0x17')](_0x226afb,{'showHidden':![],'depth':null}));if(this['channels'][_0x226afb['uniqueid']]){this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]][_0x1126('0x2b')]=_0x226afb[_0x1126('0x2b')];if(_0x226afb['dialstatus']===_0x1126('0x2c')){this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]][_0x1126('0x2d')]=_0x226afb[_0x1126('0x2d')];this['channels'][_0x226afb[_0x1126('0x16')]][_0x1126('0x2e')]=_0x226afb[_0x1126('0x2e')];this[_0x1126('0x22')][_0x226afb['uniqueid']]['answertime']=moment()[_0x1126('0x19')](_0x1126('0x1a'));this['channels'][_0x226afb[_0x1126('0x16')]][_0x1126('0x2f')]=_0x1126('0x30');logger['info']('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x226afb[_0x1126('0x16')],_0x226afb[_0x1126('0x1d')][_0x1126('0x1b')](_0x226afb[_0x1126('0x1d')]['lastIndexOf']('/')+0x1,_0x226afb[_0x1126('0x1d')]['lastIndexOf']('-')));logger[_0x1126('0x24')](_0x1126('0x31'),_0x226afb[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x226afb['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')](_0x1126('0x32'),this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]]);}logger[_0x1126('0x24')](_0x1126('0x33'),_0x226afb[_0x1126('0x16')],util['inspect'](this[_0x1126('0x22')][_0x226afb[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this[_0x1126('0x14')](_0x1126('0x26'),_0x1126('0x27'),this['channels'][_0x226afb['uniqueid']]);}}}catch(_0x1c4f06){logger[_0x1126('0x34')](_0x1126('0x35'),_0x226afb[_0x1126('0x16')],util[_0x1126('0x17')](_0x1c4f06,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x1126('0x11')]['syncVarSet']=function(_0x497576){try{if(this['isNotNull'](_0x497576)){logger[_0x1126('0x24')]('[%s][voiceDialReport][varset]\x20event:',_0x497576[_0x1126('0x16')],util[_0x1126('0x17')](_0x497576,{'showHidden':![],'depth':null}));this[_0x1126('0x36')](_0x497576[_0x1126('0x16')],_['keys'](_0x497576['variable'])[0x0],_0x497576[_0x1126('0x37')]);if(this[_0x1126('0x12')](_0x497576[_0x1126('0x38')])&&this['isNotNull'](_0x497576[_0x1126('0x38')]['outboundrouteid'])){if(_[_0x1126('0x13')](this['channels'][_0x497576[_0x1126('0x16')]])){this[_0x1126('0x22')][_0x497576[_0x1126('0x16')]]={'routeId':_0x497576['value'],'variables':this[_0x1126('0xc')][_0x497576[_0x1126('0x16')]],'motionChannel':_0x1126('0x39')};logger['info']('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x497576['uniqueid'],_0x497576[_0x1126('0x38')]['outboundrouteid'],_[_0x1126('0x3a')](_0x497576['variable'])[0x0],_0x497576[_0x1126('0x37')]);logger[_0x1126('0x24')](_0x1126('0x3b'),_0x497576[_0x1126('0x16')],util[_0x1126('0x17')](this['channels'][_0x497576[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this[_0x1126('0x14')]('voice:outbound',_0x1126('0x27'),this[_0x1126('0x22')][_0x497576['uniqueid']]);}}}}catch(_0x5f6d73){logger[_0x1126('0x34')]('[%s][voiceDialReport][varset]',_0x497576[_0x1126('0x16')],util[_0x1126('0x17')](_0x5f6d73,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x1126('0x11')]['addVariable']=function(_0x3fe7c1,_0x1c405c,_0x411c89){var _0x5878bb=[_0x1126('0x3c'),_0x1126('0x3d'),_0x1126('0x3e'),_0x1126('0x3f'),'rtpaudioqosloss',_0x1126('0x40'),'rtpaudioqosrtt',_0x1126('0x41'),_0x1126('0x42'),'sipuri','bridgepeer',_0x1126('0x43'),_0x1126('0x44'),_0x1126('0x45'),'memberinterface',_0x1126('0x46'),_0x1126('0x23'),_0x1126('0x47'),_0x1126('0x48')];if(!_['isNil'](_0x1c405c)&&!_[_0x1126('0x49')](_0x5878bb,_0x1c405c)){if(_[_0x1126('0x13')](this['variables'][_0x3fe7c1])){this['variables'][_0x3fe7c1]={};}this['variables'][_0x3fe7c1][_0x1c405c]=_0x411c89;}};VoiceDialReport['prototype'][_0x1126('0x10')]=function(_0x3bf090){try{if(this['isNotNull'](_0x3bf090)){logger[_0x1126('0x24')](_0x1126('0x4a'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](_0x3bf090,{'showHidden':![],'depth':null}));if(this[_0x1126('0x22')][_0x3bf090['uniqueid']]){logger[_0x1126('0x21')](_0x1126('0x4b'),_0x3bf090['uniqueid'],_0x3bf090[_0x1126('0x4c')]);this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x4d')]=moment()[_0x1126('0x19')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x4e')]=moment(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]['endtime'])[_0x1126('0x4f')](this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x50')],_0x1126('0x51'));this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x2f')]=_0x1126('0x52');this[_0x1126('0xa')][_0x1126('0x53')]+=0x1;if(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x54')]){this[_0x1126('0xa')]['answered']+=0x1;this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x55')]=moment(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]['answertime'])[_0x1126('0x4f')](this[_0x1126('0x22')][_0x3bf090['uniqueid']][_0x1126('0x50')],'seconds');this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]['billableseconds']=moment(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x4d')])['diff'](this[_0x1126('0x22')][_0x3bf090['uniqueid']]['answertime'],_0x1126('0x51'));this[_0x1126('0xa')][_0x1126('0x56')]+=this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x55')]||0x0;this[_0x1126('0xa')]['sumBillable']+=this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]][_0x1126('0x57')];}this[_0x1126('0xa')][_0x1126('0x58')]+=this[_0x1126('0x22')][_0x3bf090['uniqueid']]['duration'];logger[_0x1126('0x24')](_0x1126('0x59'),_0x3bf090['uniqueid'],util['inspect'](this['channels'][_0x3bf090['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')](_0x1126('0x5a'),this[_0x1126('0x22')][_0x3bf090['uniqueid']]);logger[_0x1126('0x24')](_0x1126('0x5b'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]],{'showHidden':![],'depth':null}));ami[_0x1126('0x14')]('custom:dialend',this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]);logger[_0x1126('0x24')](_0x1126('0x5c'),_0x3bf090[_0x1126('0x16')],util['inspect'](this['channels'][_0x3bf090[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this[_0x1126('0x14')]('voice:outbound',_0x1126('0x5d'),this[_0x1126('0xa')]);logger[_0x1126('0x21')](_0x1126('0x5e'),JSON[_0x1126('0x5f')](this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]]));logger[_0x1126('0x24')](_0x1126('0x60'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](this[_0x1126('0x22')][_0x3bf090[_0x1126('0x16')]],{'showHidden':![],'depth':null}));this['emit'](_0x1126('0x26'),_0x1126('0x61'),this[_0x1126('0x22')][_0x3bf090['uniqueid']]);delete this['channels'][_0x3bf090[_0x1126('0x16')]];}else if(this[_0x1126('0x22')][_0x3bf090[_0x1126('0x62')]]){this[_0x1126('0x22')][_0x3bf090['linkedid']]['uniqueid']=this['channels'][_0x3bf090[_0x1126('0x62')]][_0x1126('0x63')];}if(this[_0x1126('0xc')][_0x3bf090[_0x1126('0x16')]]){delete this['variables'][_0x3bf090[_0x1126('0x16')]];}}}catch(_0x5d7014){logger[_0x1126('0x34')](_0x1126('0x64'),_0x3bf090[_0x1126('0x16')],util[_0x1126('0x17')](_0x5d7014,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x1126('0x11')][_0x1126('0x65')]=function(_0x9a61b1){try{if(this['isNotNull'](_0x9a61b1)){logger[_0x1126('0x24')]('[%s][voiceDialReport][newexten]\x20event:',_0x9a61b1[_0x1126('0x16')],util[_0x1126('0x17')](_0x9a61b1,{'showHidden':![],'depth':null}));if(_0x9a61b1['application'][_0x1126('0x66')]()===_0x1126('0x67')){_0x9a61b1['applicationdata']=(_0x9a61b1[_0x1126('0x68')]||_0x9a61b1[_0x1126('0x69')])['toLowerCase']();if(_['startsWith'](_0x9a61b1[_0x1126('0x69')],_0x1126('0x6a'))){if(_[_0x1126('0x13')](this['applications'][_0x9a61b1['uniqueid']]))this['applications'][_0x9a61b1[_0x1126('0x16')]]={};logger['info']('[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s',_0x9a61b1[_0x1126('0x16')],_0x9a61b1['application'],_0x9a61b1[_0x1126('0x69')]);var _0x288a0c=_0x9a61b1['applicationdata'][_0x1126('0x6b')]('=');var _0x375728=_0x288a0c[0x0][_0x1126('0x6c')](/cdr\((.*)\)/);if(_0x375728)this[_0x1126('0xb')][_0x9a61b1[_0x1126('0x16')]][_0x375728[0x1]]=_0x288a0c[0x1];}}}}catch(_0x5e9872){logger[_0x1126('0x34')](_0x1126('0x6d'),_0x9a61b1['uniqueid'],util[_0x1126('0x17')](_0x5e9872,{'showHidden':![],'depth':null}));}};module[_0x1126('0x6e')]=VoiceDialReport;
\ No newline at end of file
index 9633d6a..7bf26e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8d7=['moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','../model/voiceQueueSummary','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','realtime','agents','channels','queueChannels','voiceQueues','campaigns','summary','queuesummary','syncQueueSummary','bind','syncQueueSummaryComplete','queuemember','syncQueueMember','queuestatuscomplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','syncAgentComplete','agentconnect','syncAgentConnect','syncHangup','fullybooted','syncFullyBooted','musiconholdstart','musiconholdstop','syncMusicOnHoldStop','syncAttendedTransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','talking','pTalking','waiting','queueStatusComplete','unlockRR','queuecallerexit','queuecallercomplete','clearZombieChannels','isNil','channel','catch','message','No\x20such\x20channel','error','inspect','queueReports','[%s][voiceQueueReport][checkQueueReport]','variables','[%s][voiceQueueReport][checkVariables]','clearQueueReport','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','queue','voice_queue_channel:save','emitVoiceQueueChannelRemove',']\x20sending\x20voice_queue_channel:remove\x20event:','queuecallerexitreason','ATTENDEDTRANSFER','voice:queue:%s','voice_queue_presence:remove','emitInboundVoiceQueueSummary','type','name','isUndefined','Action','queues','[voiceQueueReport][queues]','isRunning','then','queuestatus','createQueueSummaryReport','createReport','compareToInboundQueue','syncQueueStatusComplete','actionid','inbound','outbound','custom:queuesummary','statusRequests','push','isNotNull','[voiceQueueReport][queuesummary]\x20event:','[voiceQueueReport][queuesummary]\x20name:%s','[voiceQueueReport][queuesummary]','custom:queuesummarycomplete','[%s][voiceQueueReport][queuecallerjoin]','queuecallerjoinAt','count','routealias','info','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','assign','pick','keys','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercompleteAt','holdtime','originalposition','ABANDONED','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','queuecallerleaveAt','YYYY-MM-DD\x20HH:mm:ss','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','queuecallerabandonAt','lastAssignedTo','membername','queuecallerexitAt','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','local/','linkedid','add','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','value','variable','CONTINUE','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','varset','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','addVariable','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepvtcallid','membercalls','memberinterface','memberlastcall','memberpenalty','includes','sumHoldTime','diff','seconds','sumDuration','milliseconds','total','answered','sumBillable','unmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','abandoned','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','hangup','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][handleHangup]','[%s][voiceQueueReport][hangup]','handleHangup','cause-txt','cause','length','transferid','[%s][voiceQueueReport][attendedtransfer]','secondtransfererexten','secondtransfereruniqueid','ATTENDED','transfereeuniqueid','switch','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','transfererchannel','syncMusicOnHoldStart','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstop]','mohtime','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','application','applicationdata','appdata','cdr(','[%s][voiceQueueReport][newexten]','exports','lodash'];(function(_0x2e8bfe,_0x26b928){var _0x4a6a73=function(_0x3fdda6){while(--_0x3fdda6){_0x2e8bfe['push'](_0x2e8bfe['shift']());}};_0x4a6a73(++_0x26b928);}(_0xc8d7,0x1e7));var _0x7c8d=function(_0x47f76a,_0x2abb39){_0x47f76a=_0x47f76a-0x0;var _0x510186=_0xc8d7[_0x47f76a];return _0x510186;};'use strict';var _=require(_0x7c8d('0x0'));var moment=require(_0x7c8d('0x1'));var util=require(_0x7c8d('0x2'));var Redis=require(_0x7c8d('0x3'));var config=require(_0x7c8d('0x4'));var logger=require(_0x7c8d('0x5'))(_0x7c8d('0x6'));var ami=require(_0x7c8d('0x7'));var QueueReport=require(_0x7c8d('0x8'));var VoiceQueueSummary=require(_0x7c8d('0x9'));config[_0x7c8d('0xa')]=_[_0x7c8d('0xb')](config[_0x7c8d('0xa')],{'host':_0x7c8d('0xc'),'port':0x18eb});var io=require(_0x7c8d('0xd'))(new Redis(config[_0x7c8d('0xa')]));var Sequence=function(){};Sequence[_0x7c8d('0xe')][_0x7c8d('0xf')]=function(_0xb9cd97){this[_0x7c8d('0x10')]=this['tail']?this[_0x7c8d('0x10')][_0x7c8d('0x11')](_0xb9cd97):_0xb9cd97();};function VoiceQueueReport(_0x3cec73){this[_0x7c8d('0x12')]=new Sequence();this['queueReports']={};this[_0x7c8d('0x13')]=_0x3cec73;this['agents']=_0x3cec73[_0x7c8d('0x14')];this[_0x7c8d('0x15')]=_0x3cec73[_0x7c8d('0x16')];this[_0x7c8d('0x17')]=_0x3cec73['voiceQueues'];this['campaigns']=_0x3cec73[_0x7c8d('0x18')];this[_0x7c8d('0x19')]=initializeSummary();this['variables']={};ami['on'](_0x7c8d('0x1a'),this[_0x7c8d('0x1b')][_0x7c8d('0x1c')](this));ami['on']('queuesummarycomplete',this[_0x7c8d('0x1d')][_0x7c8d('0x1c')](this));ami['on'](_0x7c8d('0x1e'),this[_0x7c8d('0x1f')][_0x7c8d('0x1c')](this));ami['on'](_0x7c8d('0x20'),this['syncQueueStatusComplete'][_0x7c8d('0x1c')](this));ami['on'](_0x7c8d('0x21'),this[_0x7c8d('0x22')]['bind'](this));ami['on'](_0x7c8d('0x23'),this[_0x7c8d('0x24')][_0x7c8d('0x1c')](this));ami['on'](_0x7c8d('0x25'),this[_0x7c8d('0x26')]['bind'](this));ami['on']('agentcomplete',this[_0x7c8d('0x27')][_0x7c8d('0x1c')](this));ami['on'](_0x7c8d('0x28'),this[_0x7c8d('0x29')][_0x7c8d('0x1c')](this));ami['on']('varset',this['syncVarSet']['bind'](this));ami['on']('hangup',this[_0x7c8d('0x2a')]['bind'](this));ami['on'](_0x7c8d('0x2b'),this[_0x7c8d('0x2c')][_0x7c8d('0x1c')](this));ami['on'](_0x7c8d('0x2d'),this['syncMusicOnHoldStart']['bind'](this));ami['on'](_0x7c8d('0x2e'),this[_0x7c8d('0x2f')][_0x7c8d('0x1c')](this));ami['on']('attendedtransfer',this[_0x7c8d('0x30')]['bind'](this));ami['on']('blindtransfer',this[_0x7c8d('0x31')][_0x7c8d('0x1c')](this));this[_0x7c8d('0x32')]();this[_0x7c8d('0x33')]();}function clearChannels(_0x5b62de){if(!_[_0x7c8d('0x34')](_0x5b62de)){for(var _0x48cea1 in _0x5b62de){if(_0x5b62de[_0x7c8d('0x35')](_0x48cea1)){delete _0x5b62de[_0x48cea1];}}}}function clearCampaigns(_0x2899b8){if(!_[_0x7c8d('0x34')](_0x2899b8)){for(var _0x38c9d3 in _0x2899b8){if(_0x2899b8[_0x7c8d('0x35')](_0x38c9d3)){_0x2899b8[_0x38c9d3][_0x7c8d('0x36')]=0x0;}}}}function clearVoiceQueues(_0x5cf1c9){if(!_['isEmpty'](_0x5cf1c9)){for(var _0x1c8b54 in _0x5cf1c9){if(_0x5cf1c9[_0x7c8d('0x35')](_0x1c8b54)){_0x5cf1c9[_0x1c8b54][_0x7c8d('0x36')]=0x0;_0x5cf1c9[_0x1c8b54][_0x7c8d('0x37')]=0x0;_0x5cf1c9[_0x1c8b54][_0x7c8d('0x38')]=0x0;_0x5cf1c9[_0x1c8b54][_0x7c8d('0x39')]=0x0;_0x5cf1c9[_0x1c8b54][_0x7c8d('0x3a')]=!![];}}}}function clearAgentBooked(_0x29c123){if(!_['isEmpty'](_0x29c123)){for(var _0x5ca88a in _0x29c123){if(_0x29c123[_0x7c8d('0x35')](_0x5ca88a)){_0x29c123[_0x5ca88a][_0x7c8d('0x3b')]=!![];}}}}function initializeSummary(){return{'id':null,'completeEvent':null,'isRunning':![],'queues':{},'queuestatus':{},'statusRequests':0x0};}function hasCallerLeftTheQueue(_0x47cbed){return _0x47cbed[_0x7c8d('0x3c')]||_0x47cbed['queuecallerabandon']||_0x47cbed[_0x7c8d('0x3d')];}VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x3e')]=function(){var _0x41d8f1=this;for(var _0x426650 in this[_0x7c8d('0x15')]){if(this['channels'][_0x7c8d('0x35')](_0x426650)&&!this['channels'][_0x426650]['switch']){this['sequence']['enqueue'](function(){if(!_[_0x7c8d('0x3f')](_0x41d8f1['channels'][_0x426650])){return ami['Action']({'action':'status','channel':_0x41d8f1['channels'][_0x426650][_0x7c8d('0x40')]})[_0x7c8d('0x41')](function(_0x2fb897){if(_0x2fb897[_0x7c8d('0x42')]===_0x7c8d('0x43')){setTimeout(function(){if(_0x41d8f1[_0x7c8d('0x15')][_0x426650]){delete _0x41d8f1['channels'][_0x426650];logger[_0x7c8d('0x44')]('[%s][voiceQueueReport][checkChannel]',_0x426650,util[_0x7c8d('0x45')](_0x2fb897,{'showHidden':![],'depth':null}));}if(_0x41d8f1[_0x7c8d('0x46')][_0x426650]){delete _0x41d8f1['queueReports'][_0x426650];logger[_0x7c8d('0x44')](_0x7c8d('0x47'),_0x426650,util[_0x7c8d('0x45')](_0x2fb897,{'showHidden':![],'depth':null}));}if(_0x41d8f1[_0x7c8d('0x48')][_0x426650]){delete _0x41d8f1[_0x7c8d('0x48')][_0x426650];logger[_0x7c8d('0x44')](_0x7c8d('0x49'),_0x426650,util[_0x7c8d('0x45')](_0x2fb897,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x7c8d('0xe')]['syncFullyBooted']=function(){logger[_0x7c8d('0x44')]('[FullyBooted]\x20clear\x20realtime');clearChannels(this[_0x7c8d('0x15')]);this['clearQueueReport'](this[_0x7c8d('0x46')]);clearAgentBooked(this['agents']);clearVoiceQueues(this[_0x7c8d('0x17')]);clearCampaigns(this[_0x7c8d('0x18')]);this[_0x7c8d('0x19')]=initializeSummary();};VoiceQueueReport['prototype'][_0x7c8d('0x4a')]=function(_0x51ab77){var _0x1c7b47=this;if(!_['isEmpty'](_0x51ab77)){for(var _0x24ec39 in _0x51ab77){if(_0x51ab77[_0x7c8d('0x35')](_0x24ec39)){_0x1c7b47['emitVoiceQueueChannelRemove'](_0x51ab77[_0x24ec39],_0x7c8d('0x4b'));delete _0x51ab77[_0x24ec39];}}}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x4c')]=function(_0xbd251a,_0x22bf9c,_0x57a3d0){io['to'](_0xbd251a)[_0x7c8d('0x4c')](_0x22bf9c,_0x57a3d0);};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x4d')]=function(_0x31f741,_0x216553){logger[_0x7c8d('0x4e')](_0x7c8d('0x4f')+_0x216553+_0x7c8d('0x50'),_0x31f741[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0x31f741,{'showHidden':![],'depth':null}));this[_0x7c8d('0x4c')](util[_0x7c8d('0x52')]('voice:queue:%s',_0x31f741[_0x7c8d('0x53')]),_0x7c8d('0x54'),_0x31f741);io[_0x7c8d('0x4c')]('voice_queue_presence:save',_0x31f741);};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x55')]=function(_0x3ec715,_0x1b4844){logger[_0x7c8d('0x4e')](_0x7c8d('0x4f')+_0x1b4844+_0x7c8d('0x56'),_0x3ec715['uniqueid'],util[_0x7c8d('0x45')](_0x3ec715,{'showHidden':![],'depth':null}));if(_0x3ec715[_0x7c8d('0x57')]===_0x7c8d('0x58')){return;}this[_0x7c8d('0x4c')](util[_0x7c8d('0x52')](_0x7c8d('0x59'),_0x3ec715[_0x7c8d('0x53')]),'voice_queue_channel:remove',_0x3ec715);io[_0x7c8d('0x4c')](_0x7c8d('0x5a'),_0x3ec715);};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x5b')]=function(_0x3e8b73){if(_0x3e8b73[_0x7c8d('0x5c')]==='inbound'){logger[_0x7c8d('0x4e')]('[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:',util[_0x7c8d('0x45')](_0x3e8b73,{'showHidden':![],'depth':null}));this[_0x7c8d('0x4c')](util[_0x7c8d('0x52')](_0x7c8d('0x59'),_0x3e8b73[_0x7c8d('0x5d')]),'voice_queue:save',_0x3e8b73);}};VoiceQueueReport[_0x7c8d('0xe')]['isNotNull']=function(_0x1851e3){return _0x1851e3!==null&&!_[_0x7c8d('0x5e')](_0x1851e3);};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x33')]=function(){var _0x50f6ed=this;setInterval(function(){_0x50f6ed[_0x7c8d('0x3e')]();ami[_0x7c8d('0x5f')]({'action':_0x7c8d('0x60')})[_0x7c8d('0x41')](function(_0x4133be){logger[_0x7c8d('0x44')](_0x7c8d('0x61'),util[_0x7c8d('0x45')](_0x4133be,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x7c8d('0xe')]['loopQueueSummary']=function(){var _0x1f4fe9=this;setInterval(function(){if(!_0x1f4fe9[_0x7c8d('0x19')][_0x7c8d('0x62')]){return ami[_0x7c8d('0x5f')]({'action':_0x7c8d('0x1a')})[_0x7c8d('0x63')](function(_0x125730){_0x1f4fe9[_0x7c8d('0x19')]['id']=_0x125730['actionid'];_0x1f4fe9[_0x7c8d('0x19')]['isRunning']=!![];_0x1f4fe9[_0x7c8d('0x19')][_0x7c8d('0x64')][_0x125730['actionid']]={};})[_0x7c8d('0x41')](function(_0x573c3f){logger['error']('[voiceQueueReport][queuesummary]',util['inspect'](_0x573c3f,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport['prototype'][_0x7c8d('0x65')]=function(_0x150ccb,_0x5d006d){var _0x38a1c3;if(this['summary']&&this[_0x7c8d('0x19')][_0x7c8d('0x60')]&&this[_0x7c8d('0x19')]['queues'][_0x150ccb[_0x7c8d('0x5d')]]){_0x38a1c3=this[_0x7c8d('0x19')][_0x7c8d('0x60')][_0x150ccb[_0x7c8d('0x5d')]]['summaryEvent'];}var _0x46ee50=new VoiceQueueSummary(_0x150ccb);return _0x46ee50[_0x7c8d('0x66')](_0x5d006d[_0x7c8d('0x14')],this[_0x7c8d('0x14')],_0x38a1c3,this[_0x7c8d('0x13')][_0x7c8d('0x15')]);};VoiceQueueReport[_0x7c8d('0xe')]['handleInboundQueueSummaryReport']=function(_0x307efd,_0x5cb902){var _0x20c7f8=this[_0x7c8d('0x65')](_0x307efd,_0x5cb902);var _0x9fcb40=![];_0x9fcb40=_0x20c7f8[_0x7c8d('0x67')](_0x307efd);if(_0x9fcb40){Object['assign'](_0x307efd,_0x20c7f8);this[_0x7c8d('0x13')][_0x7c8d('0x17')][_0x307efd[_0x7c8d('0x5d')]]=_0x307efd;this[_0x7c8d('0x5b')](_0x20c7f8);}};VoiceQueueReport['prototype'][_0x7c8d('0x68')]=function(_0x53b565){var _0x1f209e=null;var _0x19fcc5=this['summary']['id'];if(this['summary'][_0x7c8d('0x64')][_0x19fcc5]){_0x1f209e=this['summary'][_0x7c8d('0x64')][_0x19fcc5][_0x53b565[_0x7c8d('0x69')]];}if(!_0x1f209e){this['summary']=initializeSummary();return;}var _0x3c3ad4=this[_0x7c8d('0x17')][_0x1f209e[_0x7c8d('0x53')]];if(_0x3c3ad4[_0x7c8d('0x5c')]===_0x7c8d('0x6a')){this['handleInboundQueueSummaryReport'](_0x3c3ad4,_0x1f209e);}else if(_0x3c3ad4[_0x7c8d('0x5c')]===_0x7c8d('0x6b')){var _0x46b147=this[_0x7c8d('0x65')](_0x3c3ad4,_0x1f209e);ami['emit'](_0x7c8d('0x6c'),_0x46b147);}this[_0x7c8d('0x19')]['statusRequests']-=0x1;var _0x3eb567=this[_0x7c8d('0x19')][_0x7c8d('0x6d')]>0x0?!![]:![];if(!_0x3eb567){return this[_0x7c8d('0x1d')](this[_0x7c8d('0x19')]['completeEvent']);}};VoiceQueueReport['prototype'][_0x7c8d('0x1f')]=function(_0x4e18e3){var _0x5ad017=this[_0x7c8d('0x19')]['id'];if(this[_0x7c8d('0x19')][_0x7c8d('0x64')][_0x5ad017]&&this[_0x7c8d('0x19')][_0x7c8d('0x64')][_0x5ad017][_0x4e18e3['actionid']]){this[_0x7c8d('0x19')]['queuestatus'][_0x5ad017][_0x4e18e3['actionid']][_0x7c8d('0x14')][_0x7c8d('0x6e')](_0x4e18e3);}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x1b')]=function(_0xbd0ca3){var _0x3d310b=this;try{if(this[_0x7c8d('0x6f')](_0xbd0ca3)&&this['isNotNull'](_0xbd0ca3[_0x7c8d('0x53')])){logger['debug'](_0x7c8d('0x70'),util[_0x7c8d('0x45')](_0xbd0ca3,{'showHidden':![],'depth':null}));var _0x41c37e=this[_0x7c8d('0x17')][_0xbd0ca3[_0x7c8d('0x53')]];if(_0x41c37e){logger['debug'](_0x7c8d('0x71'),_0x41c37e[_0x7c8d('0x5d')]);this[_0x7c8d('0x19')][_0x7c8d('0x60')][_0x41c37e[_0x7c8d('0x5d')]]={'summaryEvent':_0xbd0ca3};this[_0x7c8d('0x19')][_0x7c8d('0x6d')]+=0x1;return ami[_0x7c8d('0x5f')]({'action':_0x7c8d('0x64'),'queue':_0x41c37e[_0x7c8d('0x5d')]})[_0x7c8d('0x63')](function(_0x200ffc){if(!_0x3d310b[_0x7c8d('0x19')][_0x7c8d('0x64')][_0xbd0ca3['actionid']]){_0x3d310b[_0x7c8d('0x19')]['queuestatus'][_0xbd0ca3['actionid']]={};}_0x3d310b[_0x7c8d('0x19')]['queuestatus'][_0xbd0ca3['actionid']][_0x200ffc[_0x7c8d('0x69')]]={'queue':_0x41c37e[_0x7c8d('0x5d')],'agents':[]};})[_0x7c8d('0x41')](function(_0x53f7ce){throw _0x53f7ce;});}}}catch(_0x4f46ea){logger[_0x7c8d('0x44')](_0x7c8d('0x72'),util[_0x7c8d('0x45')](_0x4f46ea,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')]['syncQueueSummaryComplete']=function(_0x566bda){if(this[_0x7c8d('0x19')][_0x7c8d('0x6d')]>0x0){this[_0x7c8d('0x19')]['completeEvent']=_0x566bda;return;}logger[_0x7c8d('0x4e')]('[voiceQueueReport][queuesummarycomplete]\x20event:',util[_0x7c8d('0x45')](_0x566bda,{'showHidden':![],'depth':null}));this[_0x7c8d('0x19')]=initializeSummary();ami[_0x7c8d('0x4c')](_0x7c8d('0x73'),{});};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x22')]=function(_0x3b9e4e){try{if(this['isNotNull'](_0x3b9e4e)){logger[_0x7c8d('0x4e')](_0x7c8d('0x74'),_0x3b9e4e[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0x3b9e4e,{'showHidden':![],'depth':null}));if(_[_0x7c8d('0x5e')](this['queueReports'][_0x3b9e4e[_0x7c8d('0x51')]])){this[_0x7c8d('0x46')][_0x3b9e4e[_0x7c8d('0x51')]]=[];}if(_[_0x7c8d('0x5e')](this['channels'][_0x3b9e4e[_0x7c8d('0x51')]])){this['channels'][_0x3b9e4e[_0x7c8d('0x51')]]={};}var _0x20a778=new QueueReport();_0x20a778[_0x7c8d('0x53')]=_0x3b9e4e[_0x7c8d('0x53')];_0x20a778['type']=this[_0x7c8d('0x17')][_0x20a778[_0x7c8d('0x53')]]&&this[_0x7c8d('0x17')][_0x20a778[_0x7c8d('0x53')]][_0x7c8d('0x5c')]?this[_0x7c8d('0x17')][_0x20a778[_0x7c8d('0x53')]][_0x7c8d('0x5c')]||'inbound':_0x7c8d('0x6a');_0x20a778[_0x7c8d('0x75')]=moment()[_0x7c8d('0x52')]('YYYY-MM-DD\x20HH:mm:ss');_0x20a778['position']=_0x3b9e4e['position'];_0x20a778[_0x7c8d('0x76')]=_0x3b9e4e[_0x7c8d('0x76')];_0x20a778[_0x7c8d('0x51')]=_0x3b9e4e[_0x7c8d('0x51')];_0x20a778['routealias']=this[_0x7c8d('0x15')][_0x3b9e4e[_0x7c8d('0x51')]][_0x7c8d('0x77')];logger[_0x7c8d('0x78')](_0x7c8d('0x79'),_0x20a778[_0x7c8d('0x53')],_0x20a778[_0x7c8d('0x5c')]);Object[_0x7c8d('0x7a')](_0x20a778,_[_0x7c8d('0x7b')](_0x3b9e4e,_[_0x7c8d('0x7c')](_0x20a778)));this[_0x7c8d('0x46')][_0x3b9e4e[_0x7c8d('0x51')]][_0x7c8d('0x6e')](_0x20a778);this[_0x7c8d('0x15')][_0x3b9e4e[_0x7c8d('0x51')]]=_0x20a778;this[_0x7c8d('0x4d')](_0x20a778,_0x7c8d('0x21'));}}catch(_0x570c40){logger['error'](_0x7c8d('0x74'),_0x3b9e4e[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0x570c40,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x24')]=function(_0x19cf86){try{if(this[_0x7c8d('0x6f')](_0x19cf86)){logger[_0x7c8d('0x4e')](_0x7c8d('0x7d'),_0x19cf86['uniqueid'],util['inspect'](_0x19cf86,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x19cf86[_0x7c8d('0x51')]]){var _0xbe575a=_[_0x7c8d('0x7e')](this[_0x7c8d('0x46')][_0x19cf86[_0x7c8d('0x51')]]);_0xbe575a[_0x7c8d('0x3d')]=![];_0xbe575a[_0x7c8d('0x7f')]=null;_0xbe575a[_0x7c8d('0x80')]=_0x19cf86[_0x7c8d('0x80')];_0xbe575a['originalposition']=_0x19cf86[_0x7c8d('0x81')];_0xbe575a[_0x7c8d('0x23')]=!![];_0xbe575a['queuecallerabandonAt']=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0xbe575a[_0x7c8d('0x57')]=_0x7c8d('0x82');_0xbe575a['lastAssignedTo']=null;logger[_0x7c8d('0x78')](_0x7c8d('0x83'),_0xbe575a[_0x7c8d('0x53')],_0xbe575a['type']);this[_0x7c8d('0x15')][_0x19cf86[_0x7c8d('0x51')]]=_0xbe575a;this['emitVoiceQueueChannelRemove'](_0xbe575a,'queuecallerabandon');}}}catch(_0xbd9e77){logger[_0x7c8d('0x44')]('[%s][voiceQueueReport][queuecallerabandon]',_0x19cf86[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0xbd9e77,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')]['syncQueueCallerLeave']=function(_0x46ae49){try{if(this['isNotNull'](_0x46ae49)){logger[_0x7c8d('0x4e')]('[%s][voiceQueueReport][queuecallerleave]',_0x46ae49[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0x46ae49,{'showHidden':![],'depth':null}));if(this[_0x7c8d('0x46')][_0x46ae49[_0x7c8d('0x51')]]){var _0x678213=_['last'](this[_0x7c8d('0x46')][_0x46ae49[_0x7c8d('0x51')]]);_0x678213[_0x7c8d('0x84')]=moment()[_0x7c8d('0x52')](_0x7c8d('0x85'));_0x678213[_0x7c8d('0x86')]=_0x46ae49[_0x7c8d('0x86')];_0x678213[_0x7c8d('0x87')]=_0x46ae49[_0x7c8d('0x87')];logger[_0x7c8d('0x78')](_0x7c8d('0x88'),_0x678213[_0x7c8d('0x53')],_0x678213[_0x7c8d('0x5c')],_0x46ae49[_0x7c8d('0x86')],_0x46ae49[_0x7c8d('0x87')]);this[_0x7c8d('0x15')][_0x46ae49[_0x7c8d('0x51')]]=_0x678213;this[_0x7c8d('0x4d')](_0x678213,_0x7c8d('0x25'));}}}catch(_0x446606){logger['error']('[%s][voiceQueueReport][queuecallerleave]',_0x46ae49['uniqueid'],util[_0x7c8d('0x45')](_0x446606,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x29')]=function(_0x208b63){try{if(this[_0x7c8d('0x6f')](_0x208b63)){logger[_0x7c8d('0x4e')](_0x7c8d('0x89'),_0x208b63['uniqueid'],util['inspect'](_0x208b63,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x208b63[_0x7c8d('0x51')]]){var _0x44eba6=_[_0x7c8d('0x7e')](this['queueReports'][_0x208b63[_0x7c8d('0x51')]]);_0x44eba6[_0x7c8d('0x3d')]=!![];_0x44eba6[_0x7c8d('0x57')]=_0x7c8d('0x8a');logger[_0x7c8d('0x78')](_0x7c8d('0x8b'),_0x44eba6[_0x7c8d('0x53')],_0x44eba6[_0x7c8d('0x5c')]);}}}catch(_0x26858c){logger['error'](_0x7c8d('0x89'),_0x208b63['uniqueid'],util[_0x7c8d('0x45')](_0x26858c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x27')]=function(_0x5b7ebf){try{if(this['isNotNull'](_0x5b7ebf)){logger[_0x7c8d('0x4e')](_0x7c8d('0x8c'),_0x5b7ebf['uniqueid'],util[_0x7c8d('0x45')](_0x5b7ebf,{'showHidden':![],'depth':null}));if(this[_0x7c8d('0x46')][_0x5b7ebf[_0x7c8d('0x51')]]){var _0x129e07=_[_0x7c8d('0x7e')](this[_0x7c8d('0x46')][_0x5b7ebf[_0x7c8d('0x51')]]);_0x129e07[_0x7c8d('0x23')]=![];_0x129e07[_0x7c8d('0x8d')]=null;_0x129e07['assigned']=!![];_0x129e07[_0x7c8d('0x8e')]=_0x5b7ebf[_0x7c8d('0x8f')];_0x129e07[_0x7c8d('0x80')]=_0x5b7ebf[_0x7c8d('0x80')];_0x129e07[_0x7c8d('0x3d')]=!![];_0x129e07[_0x7c8d('0x3c')]=![];_0x129e07[_0x7c8d('0x90')]=null;if(!_0x129e07[_0x7c8d('0x91')]){if(_0x5b7ebf[_0x7c8d('0x92')]==_0x7c8d('0x91')){_0x129e07[_0x7c8d('0x57')]=_0x7c8d('0x93');logger[_0x7c8d('0x78')](_0x7c8d('0x94'),_0x129e07[_0x7c8d('0x53')],_0x129e07[_0x7c8d('0x5c')]);}else{if(_[_0x7c8d('0x95')](_0x5b7ebf[_0x7c8d('0x40')][_0x7c8d('0x96')](),_0x7c8d('0x97'))){if(this[_0x7c8d('0x46')][_0x5b7ebf[_0x7c8d('0x98')]]){var _0x740a35=_[_0x7c8d('0x7e')](this['queueReports'][_0x5b7ebf['linkedid']]);_0x740a35[_0x7c8d('0x3d')]=![];_0x740a35[_0x7c8d('0x3c')]=!![];_0x740a35['queuecallerexitAt']=moment(_0x129e07[_0x7c8d('0x75')])[_0x7c8d('0x99')](_0x5b7ebf[_0x7c8d('0x80')],'seconds')['format'](_0x7c8d('0x85'));_0x740a35['queuecallerexitreason']=_0x7c8d('0x9a');_0x740a35[_0x7c8d('0x91')]=!![];_0x740a35[_0x7c8d('0x9b')]=_0x7c8d('0x9c');_0x740a35[_0x7c8d('0x9d')]=_0x5b7ebf[_0x7c8d('0x9e')];_0x740a35[_0x7c8d('0x9f')]=_0x5b7ebf[_0x7c8d('0x51')];logger['info'](_0x7c8d('0xa0'),_0x740a35[_0x7c8d('0x53')],_0x740a35['type']);var _0x1f1965=this[_0x7c8d('0x46')][_0x5b7ebf[_0x7c8d('0x98')]];this[_0x7c8d('0x46')][_0x5b7ebf[_0x7c8d('0x98')]]=this['queueReports'][_0x5b7ebf['uniqueid']];this[_0x7c8d('0x46')][_0x5b7ebf[_0x7c8d('0x51')]]=_0x1f1965;}}else{_0x129e07[_0x7c8d('0x57')]='COMPLETEDBY'+_0x5b7ebf['reason'][_0x7c8d('0xa1')]();logger[_0x7c8d('0x78')](_0x7c8d('0xa2'),_0x129e07[_0x7c8d('0x53')],_0x129e07[_0x7c8d('0x5c')],_0x129e07[_0x7c8d('0x57')]);}}}this[_0x7c8d('0x15')][_0x5b7ebf[_0x7c8d('0x51')]]=_0x129e07;}}}catch(_0x535840){logger[_0x7c8d('0x44')](_0x7c8d('0x8c'),_0x5b7ebf[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0x535840,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')]['syncVarSet']=function(_0x5f4c1a){try{if(this[_0x7c8d('0x6f')](_0x5f4c1a)){logger[_0x7c8d('0x4e')]('[%s][voiceQueueReport][varset]',_0x5f4c1a['uniqueid'],util[_0x7c8d('0x45')](_0x5f4c1a,{'showHidden':![],'depth':null}));this['addVariable'](_0x5f4c1a[_0x7c8d('0x51')],_['keys'](_0x5f4c1a['variable'])[0x0],_0x5f4c1a[_0x7c8d('0xa3')]);if(this[_0x7c8d('0x46')][_0x5f4c1a['uniqueid']]){var _0x10c974=_[_0x7c8d('0x7e')](this[_0x7c8d('0x46')][_0x5f4c1a['uniqueid']]);if(_0x10c974){if(this[_0x7c8d('0x6f')](_0x5f4c1a[_0x7c8d('0xa4')])&&this[_0x7c8d('0x6f')](_0x5f4c1a['variable'][_0x7c8d('0x64')])){switch(_0x5f4c1a[_0x7c8d('0xa3')]){case _0x7c8d('0xa5'):_0x10c974[_0x7c8d('0x3c')]=![];_0x10c974[_0x7c8d('0x90')]=null;break;case'TIMEOUT':_0x10c974[_0x7c8d('0xa6')]=_0x7c8d('0xa7');_0x10c974[_0x7c8d('0x3c')]=!![];_0x10c974[_0x7c8d('0x90')]=moment()[_0x7c8d('0x52')]('YYYY-MM-DD\x20HH:mm:ss');_0x10c974[_0x7c8d('0x84')]=moment()[_0x7c8d('0x52')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x7c8d('0x4e')](_0x7c8d('0xa8'),_0x5f4c1a[_0x7c8d('0x51')],util['inspect'](_0x10c974,{'showHidden':![],'depth':null}));ami['emit'](_0x7c8d('0xa9'),_0x10c974);break;default:_0x10c974['queuecallerexit']=!![];_0x10c974[_0x7c8d('0x90')]=moment()[_0x7c8d('0x52')](_0x7c8d('0x85'));_0x10c974['queuecallerleaveAt']=moment()[_0x7c8d('0x52')](_0x7c8d('0x85'));}_0x10c974[_0x7c8d('0x23')]=![];_0x10c974[_0x7c8d('0x8d')]=null;_0x10c974['queuecallerexitreason']=_0x5f4c1a[_0x7c8d('0xa3')];this[_0x7c8d('0x15')][_0x5f4c1a[_0x7c8d('0x51')]]=_0x10c974;this[_0x7c8d('0x55')](_0x10c974,_0x7c8d('0xaa'));}else if(this[_0x7c8d('0x6f')](_0x5f4c1a[_0x7c8d('0xa4')])&&this[_0x7c8d('0x6f')](_0x5f4c1a[_0x7c8d('0xa4')][_0x7c8d('0xab')])){if(!_0x10c974[_0x7c8d('0x23')]){_0x10c974[_0x7c8d('0x3c')]=!![];_0x10c974['queuecallerexitAt']=moment()[_0x7c8d('0x52')](_0x7c8d('0x85'));_0x10c974['queuecallerexitreason']=_0x7c8d('0xac');_0x10c974[_0x7c8d('0x84')]=moment()[_0x7c8d('0x52')](_0x7c8d('0x85'));this[_0x7c8d('0x15')][_0x5f4c1a[_0x7c8d('0x51')]]=_0x10c974;}}logger[_0x7c8d('0x78')](_0x7c8d('0xad'),_0x5f4c1a[_0x7c8d('0x51')],_0x10c974['queue'],_0x10c974[_0x7c8d('0x5c')],_[_0x7c8d('0x7c')](_0x5f4c1a[_0x7c8d('0xa4')])[0x0],_0x5f4c1a[_0x7c8d('0xa3')]);_0x10c974[_0x7c8d('0x48')]=this[_0x7c8d('0x48')][_0x5f4c1a['uniqueid']];}}}}catch(_0x17f9ae){logger[_0x7c8d('0x44')]('[%s][voiceQueueReport][varset]',_0x5f4c1a[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0x17f9ae,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0xae')]=function(_0x21e628,_0x42087c,_0x464b9c){var _0x2df25c=[_0x7c8d('0xaf'),'rtpaudioqosbridged',_0x7c8d('0xb0'),_0x7c8d('0xb1'),_0x7c8d('0xb2'),_0x7c8d('0xb3'),_0x7c8d('0xb4'),_0x7c8d('0xb5'),_0x7c8d('0xb6'),'sipuri','bridgepeer',_0x7c8d('0xb7'),_0x7c8d('0xb8'),'memberdynamic',_0x7c8d('0xb9'),_0x7c8d('0xba'),_0x7c8d('0x8f'),_0x7c8d('0xbb'),'memberrealtime'];if(!_['isNil'](_0x42087c)&&!_[_0x7c8d('0xbc')](_0x2df25c,_0x42087c)){if(_[_0x7c8d('0x5e')](this[_0x7c8d('0x48')][_0x21e628])){this[_0x7c8d('0x48')][_0x21e628]={};}this[_0x7c8d('0x48')][_0x21e628][_0x42087c]=_0x464b9c;}};VoiceQueueReport[_0x7c8d('0xe')]['handleHangup']=function(_0x1b4ea7,_0x1e8bae,_0x2656d6){try{var _0x522144={};if(this[_0x7c8d('0x46')][_0x1b4ea7]){for(var _0x3c70e6=0x0;_0x3c70e6<this[_0x7c8d('0x46')][_0x1b4ea7]['length'];_0x3c70e6+=0x1){_0x522144=this[_0x7c8d('0x46')][_0x1b4ea7][_0x3c70e6];var _0x5eb32b=this[_0x7c8d('0x17')][_0x522144[_0x7c8d('0x53')]];if(_0x5eb32b){_0x5eb32b[_0x7c8d('0xbd')]+=moment(_0x522144[_0x7c8d('0x84')])[_0x7c8d('0xbe')](_0x522144['queuecallerjoinAt'],_0x7c8d('0xbf'))||0x0;if(_0x2656d6&&_0x522144['queuecallerexitreason']===_0x7c8d('0x58')){_0x522144[_0x7c8d('0x57')]=_0x7c8d('0x8a');}if(_0x3c70e6===this[_0x7c8d('0x46')][_0x1b4ea7]['length']-0x1){_0x5eb32b[_0x7c8d('0xc0')]+=moment()[_0x7c8d('0xc1')](0x0)[_0x7c8d('0xbe')](_0x522144[_0x7c8d('0x75')],_0x7c8d('0xbf'));if(hasCallerLeftTheQueue(_0x522144)&&_0x522144[_0x7c8d('0x57')]!==_0x7c8d('0x58')){_0x5eb32b[_0x7c8d('0xc2')]+=0x1;}if(_0x522144[_0x7c8d('0x3d')]){_0x5eb32b[_0x7c8d('0xc3')]+=0x1;_0x5eb32b[_0x7c8d('0xc4')]+=moment()[_0x7c8d('0xc1')](0x0)[_0x7c8d('0xbe')](_0x522144[_0x7c8d('0x84')],_0x7c8d('0xbf'));_0x522144['queuecallercompleteAt']=moment()['format'](_0x7c8d('0x85'));_0x522144['queuecallerexit']=![];_0x522144[_0x7c8d('0x90')]=null;}if(_0x522144[_0x7c8d('0x3c')]&&_0x522144[_0x7c8d('0x91')]!=!![]){_0x5eb32b[_0x7c8d('0xc5')]+=0x1;_0x522144[_0x7c8d('0xa6')]='unmanaged';logger[_0x7c8d('0x4e')](_0x7c8d('0xc6'),_0x1b4ea7,util['inspect'](_0x522144,{'showHidden':![],'depth':null}));ami[_0x7c8d('0x4c')](_0x7c8d('0xc7'),_0x522144);}if(_0x522144[_0x7c8d('0x23')]){_0x5eb32b[_0x7c8d('0xc8')]+=0x1;_0x522144[_0x7c8d('0xa6')]=_0x7c8d('0xc8');logger[_0x7c8d('0x4e')](_0x7c8d('0xc9'),_0x1b4ea7,util[_0x7c8d('0x45')](_0x522144,{'showHidden':![],'depth':null}));ami['emit'](_0x7c8d('0xca'),_0x522144);}}else{_0x5eb32b[_0x7c8d('0xc0')]+=_0x5eb32b['sumHoldTime'];}logger['info'](_0x7c8d('0xcb'),_0x1b4ea7,_0x522144[_0x7c8d('0x53')],_0x522144[_0x7c8d('0x5c')],_0x1e8bae);this[_0x7c8d('0x15')][_0x1b4ea7]=_0x522144;Object[_0x7c8d('0x7a')](this['voiceQueues'][_0x522144[_0x7c8d('0x53')]],_0x5eb32b);if(_0x522144[_0x7c8d('0x84')]){this[_0x7c8d('0x55')](_0x522144,_0x7c8d('0xcc'));}}}logger[_0x7c8d('0x4e')](_0x7c8d('0xcd'),_0x1b4ea7,util['inspect'](this['queueReports'][_0x1b4ea7],{'showHidden':![],'depth':null}));if(hasCallerLeftTheQueue(_0x522144)&&_0x522144[_0x7c8d('0x57')]!==_0x7c8d('0x58')){ami[_0x7c8d('0x4c')](_0x7c8d('0xce'),this[_0x7c8d('0x46')][_0x1b4ea7]);if(this[_0x7c8d('0x46')][_0x1b4ea7]){delete this[_0x7c8d('0x46')][_0x1b4ea7];}if(this[_0x7c8d('0x15')][_0x1b4ea7]){delete this[_0x7c8d('0x15')][_0x1b4ea7];}if(this['variables'][_0x1b4ea7]){delete this['variables'][_0x1b4ea7];}}}}catch(_0x10a8dd){logger[_0x7c8d('0x44')](_0x7c8d('0xcf'),_0x1b4ea7,util[_0x7c8d('0x45')](_0x10a8dd,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')]['syncHangup']=function(_0x2e5a7d){try{if(this[_0x7c8d('0x6f')](_0x2e5a7d)){logger['debug'](_0x7c8d('0xd0'),_0x2e5a7d[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0x2e5a7d,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2e5a7d[_0x7c8d('0x51')]]){return this[_0x7c8d('0xd1')](_0x2e5a7d[_0x7c8d('0x51')],_0x2e5a7d[_0x7c8d('0xd2')],![]);}if(this[_0x7c8d('0x46')][_0x2e5a7d['linkedid']]){if(_0x2e5a7d[_0x7c8d('0xd3')]==='21'){return;}return this[_0x7c8d('0xd1')](_0x2e5a7d['linkedid'],_0x2e5a7d['cause-txt'],!![]);}var _0x2528fd=Object[_0x7c8d('0x7c')](this[_0x7c8d('0x46')]);for(var _0x4c903c=0x0;_0x4c903c<_0x2528fd[_0x7c8d('0xd4')];_0x4c903c++){var _0x1dcee0=_['last'](this[_0x7c8d('0x46')][_0x2528fd[_0x4c903c]]);if(_0x1dcee0&&_0x1dcee0[_0x7c8d('0xd5')]===_0x2e5a7d[_0x7c8d('0x51')]){return this[_0x7c8d('0xd1')](_0x1dcee0[_0x7c8d('0x51')],_0x2e5a7d[_0x7c8d('0xd2')],!![]);}}if(!this[_0x7c8d('0x46')][_0x2e5a7d[_0x7c8d('0x51')]]){logger['debug']('[%s][voiceQueueReport][syncHangup]\x20No\x20available\x20data\x20in\x20queueReports\x20structure:\x20clear\x20action\x20in\x20variablea\x20and\x20channels\x20structures\x20needed',_0x2e5a7d[_0x7c8d('0x51')]);if(this[_0x7c8d('0x15')][_0x2e5a7d['uniqueid']]){delete this[_0x7c8d('0x15')][_0x2e5a7d['uniqueid']];}if(this[_0x7c8d('0x48')][_0x2e5a7d[_0x7c8d('0x51')]]){delete this[_0x7c8d('0x48')][_0x2e5a7d['uniqueid']];}}}}catch(_0x3ca796){logger[_0x7c8d('0x44')](_0x7c8d('0xd0'),_0x2e5a7d[_0x7c8d('0x51')],util['inspect'](_0x3ca796,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x30')]=function(_0xb54034){try{if(this['isNotNull'](_0xb54034)){logger['debug'](_0x7c8d('0xd6'),_0xb54034[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0xb54034,{'showHidden':![],'depth':null}));var _0xa532d5;var _0x3a96c5;var _0x2b858e;if(this[_0x7c8d('0x46')][_0xb54034['transfereeuniqueid']]){_0xa532d5=_[_0x7c8d('0x7e')](this[_0x7c8d('0x46')][_0xb54034['transfereeuniqueid']]);_0xa532d5[_0x7c8d('0x9d')]=_0xb54034[_0x7c8d('0xd7')];_0xa532d5[_0x7c8d('0x9f')]=_0xb54034[_0x7c8d('0xd8')];_0xa532d5['queuecallerexitreason']='ATTENDEDTRANSFER';_0xa532d5[_0x7c8d('0x91')]=!![];_0xa532d5[_0x7c8d('0x9b')]=_0x7c8d('0xd9');if(this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xd8')]]){_0x2b858e=this['queueReports'][_0xb54034['secondtransfereruniqueid']];this['queueReports'][_0xb54034[_0x7c8d('0xd8')]]=this['queueReports'][_0xb54034['transfereeuniqueid']];this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xda')]]=_0x2b858e;_0x3a96c5=_[_0x7c8d('0x7e')](this[_0x7c8d('0x46')][_0xb54034['transfereeuniqueid']]);_0x3a96c5[_0x7c8d('0xdb')]=!![];}logger['info'](_0x7c8d('0xdc'),_0xb54034[_0x7c8d('0x51')],_0xa532d5[_0x7c8d('0x53')],_0xa532d5['type'],_0xa532d5[_0x7c8d('0x9d')],_0xa532d5[_0x7c8d('0x9f')]);}else if(this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xdd')]]){_0xa532d5=_[_0x7c8d('0x7e')](this['queueReports'][_0xb54034[_0x7c8d('0xdd')]]);_0xa532d5['transferexten']=_0xb54034[_0x7c8d('0xde')];_0xa532d5[_0x7c8d('0x9f')]=_0xb54034[_0x7c8d('0xdf')];_0xa532d5[_0x7c8d('0x57')]='ATTENDEDTRANSFER';_0xa532d5[_0x7c8d('0x91')]=!![];_0xa532d5['transfertype']=_0x7c8d('0xd9');if(this['queueReports'][_0xb54034[_0x7c8d('0xdf')]]){_0x2b858e=this['queueReports'][_0xb54034['origtransfereruniqueid']];this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xdf')]]=this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xdd')]];this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xdd')]]=_0x2b858e;_0x3a96c5=_[_0x7c8d('0x7e')](this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xdd')]]);_0x3a96c5[_0x7c8d('0xdb')]=!![];}logger['info'](_0x7c8d('0xdc'),_0xb54034['uniqueid'],_0xa532d5[_0x7c8d('0x53')],_0xa532d5['type'],_0xa532d5['transferexten'],_0xa532d5[_0x7c8d('0x9f')]);}else if(this[_0x7c8d('0x46')][_0xb54034['origtransfereruniqueid']]){_0xa532d5=_[_0x7c8d('0x7e')](this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xdf')]]);_0xa532d5[_0x7c8d('0x9d')]=_0xb54034[_0x7c8d('0xde')];_0xa532d5[_0x7c8d('0x9f')]=_0xb54034['origtransfereruniqueid'];_0xa532d5['queuecallerexitreason']=_0x7c8d('0x58');_0xa532d5[_0x7c8d('0x91')]=!![];_0xa532d5['transfertype']=_0x7c8d('0xd9');_0xa532d5['switch']=!![];_0xa532d5[_0x7c8d('0xd5')]=_0xb54034[_0x7c8d('0xda')];}else if(this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xd8')]]){_0xa532d5=_['last'](this[_0x7c8d('0x46')][_0xb54034[_0x7c8d('0xd8')]]);_0xa532d5[_0x7c8d('0x9d')]=_0xb54034[_0x7c8d('0xd7')];_0xa532d5[_0x7c8d('0x9f')]=_0xb54034[_0x7c8d('0xd8')];_0xa532d5[_0x7c8d('0x57')]=_0x7c8d('0x58');_0xa532d5[_0x7c8d('0x91')]=!![];_0xa532d5[_0x7c8d('0x9b')]=_0x7c8d('0xd9');_0xa532d5[_0x7c8d('0xdb')]=!![];_0xa532d5[_0x7c8d('0xd5')]=_0xb54034['transfertargetuniqueid'];}}}catch(_0x14ad3c){logger[_0x7c8d('0x44')](_0x7c8d('0xd6'),_0xb54034[_0x7c8d('0x51')],util['inspect'](_0x14ad3c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x31')]=function(_0xadbf76){try{if(this[_0x7c8d('0x6f')](_0xadbf76)){logger[_0x7c8d('0x4e')](_0x7c8d('0xe0'),_0xadbf76['uniqueid'],util[_0x7c8d('0x45')](_0xadbf76,{'showHidden':![],'depth':null}));if(this[_0x7c8d('0x46')][_0xadbf76['transfereeuniqueid']]){var _0x56522f=_['last'](this['queueReports'][_0xadbf76['transfereeuniqueid']]);_0x56522f[_0x7c8d('0x57')]=_0x7c8d('0xe1');_0x56522f[_0x7c8d('0x91')]=!![];_0x56522f[_0x7c8d('0x9b')]='BLIND';_0x56522f[_0x7c8d('0x9d')]=_0xadbf76['extension'];_0x56522f[_0x7c8d('0x9f')]=_0xadbf76[_0x7c8d('0xda')];logger[_0x7c8d('0x78')](_0x7c8d('0xe2'),_0xadbf76['uniqueid'],_0x56522f[_0x7c8d('0x53')],_0x56522f[_0x7c8d('0x5c')],_0x56522f[_0x7c8d('0x9d')],_0x56522f[_0x7c8d('0x9f')]);this[_0x7c8d('0x2a')]({'event':_0x7c8d('0xe3'),'uniqueid':_0xadbf76[_0x7c8d('0xda')],'context':_0xadbf76[_0x7c8d('0xe4')],'channel':_0xadbf76[_0x7c8d('0xe5')]});}}}catch(_0x65aac9){logger[_0x7c8d('0x44')]('[%s][voiceQueueReport][blindtransfer]',_0xadbf76[_0x7c8d('0x51')],util['inspect'](_0x65aac9,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x7c8d('0xe6')]=function(_0x1abdd9){try{if(this[_0x7c8d('0x6f')](_0x1abdd9)){logger[_0x7c8d('0x4e')]('[%s][voiceQueueReport][musiconholdstart]',_0x1abdd9[_0x7c8d('0x51')],util['inspect'](_0x1abdd9,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x1abdd9[_0x7c8d('0x51')]]){var _0x51f671=_[_0x7c8d('0x7e')](this[_0x7c8d('0x46')][_0x1abdd9[_0x7c8d('0x51')]]);if(!_['isNil'](_0x51f671[_0x7c8d('0x84')])){_0x51f671['mohstarttime']=moment()[_0x7c8d('0x52')](_0x7c8d('0x85'));logger[_0x7c8d('0x78')](_0x7c8d('0xe7'),_0x1abdd9[_0x7c8d('0x51')],_0x51f671[_0x7c8d('0xe8')]);}}}}catch(_0x467a6e){logger[_0x7c8d('0x44')](_0x7c8d('0xe9'),_0x1abdd9['uniqueid'],util['inspect'](_0x467a6e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0x2f')]=function(_0x14aa02){try{if(this[_0x7c8d('0x6f')](_0x14aa02)){logger['debug'](_0x7c8d('0xea'),_0x14aa02[_0x7c8d('0x51')],util[_0x7c8d('0x45')](_0x14aa02,{'showHidden':![],'depth':null}));if(this[_0x7c8d('0x46')][_0x14aa02[_0x7c8d('0x51')]]){var _0x27f019=_[_0x7c8d('0x7e')](this[_0x7c8d('0x46')][_0x14aa02['uniqueid']]);if(!_[_0x7c8d('0x3f')](_0x27f019[_0x7c8d('0xe8')])){_0x27f019[_0x7c8d('0xeb')]+=moment()['milliseconds'](0x0)[_0x7c8d('0xbe')](_0x27f019[_0x7c8d('0xe8')],_0x7c8d('0xbf'));logger[_0x7c8d('0x78')]('[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s',_0x14aa02[_0x7c8d('0x51')],_0x27f019[_0x7c8d('0xeb')]);delete _0x27f019['mohstarttime'];}}}}catch(_0x4708f1){logger[_0x7c8d('0x44')](_0x7c8d('0xea'),_0x14aa02['uniqueid'],util[_0x7c8d('0x45')](_0x4708f1,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7c8d('0xe')][_0x7c8d('0xec')]=function(_0x1aeb0d){try{if(this[_0x7c8d('0x6f')](_0x1aeb0d)){logger['debug'](_0x7c8d('0xed'),_0x1aeb0d[_0x7c8d('0x51')],util['inspect'](_0x1aeb0d,{'showHidden':![],'depth':null}));if(_0x1aeb0d[_0x7c8d('0xee')]['toLowerCase']()==='set'){_0x1aeb0d[_0x7c8d('0xef')]=_0x1aeb0d[_0x7c8d('0xf0')]&&_0x1aeb0d[_0x7c8d('0xf0')]['startsWith']('CDR(routeAlias)')?_0x1aeb0d[_0x7c8d('0xf0')]:(_0x1aeb0d['appdata']||_0x1aeb0d[_0x7c8d('0xef')])[_0x7c8d('0x96')]();if(_[_0x7c8d('0x95')](_0x1aeb0d[_0x7c8d('0xef')][_0x7c8d('0x96')](),_0x7c8d('0xf1'))){logger[_0x7c8d('0x78')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x1aeb0d['uniqueid'],_0x1aeb0d[_0x7c8d('0xee')],_0x1aeb0d[_0x7c8d('0xef')]);if(_[_0x7c8d('0x5e')](this[_0x7c8d('0x15')][_0x1aeb0d[_0x7c8d('0x51')]]))this[_0x7c8d('0x15')][_0x1aeb0d[_0x7c8d('0x51')]]={};var _0x528fee=_0x1aeb0d[_0x7c8d('0xef')]['split']('=');var _0xe53a79=_0x528fee[0x0][_0x7c8d('0x96')]()['match'](/cdr\((.*)\)/);if(_0xe53a79)this['channels'][_0x1aeb0d[_0x7c8d('0x51')]][_0xe53a79[0x1]]=_0x528fee[0x1];}}}}catch(_0x1ac49c){logger[_0x7c8d('0x44')](_0x7c8d('0xf2'),_0x1aeb0d['uniqueid'],util[_0x7c8d('0x45')](_0x1ac49c,{'showHidden':![],'depth':null}));}};module[_0x7c8d('0xf3')]=VoiceQueueReport;
\ No newline at end of file
+var _0xddb2=['[FullyBooted]\x20clear\x20realtime','clearQueueReport','emit','emitVoiceQueueChannelSave','debug',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','queue','voice_queue_channel:save','voice_queue_presence:save','emitVoiceQueueChannelRemove','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:remove\x20event:','ATTENDEDTRANSFER','voice:queue:%s','emitInboundVoiceQueueSummary','type','inbound','[voiceQueueReport][queuesummary]\x20sending\x20voice_queue:save\x20event:','name','voice_queue:save','isNotNull','queues','catch','loopQueueSummary','isRunning','then','actionid','queuestatus','[voiceQueueReport][queuesummary]','createQueueSummaryReport','createReport','compareToInboundQueue','assign','handleInboundQueueSummaryReport','custom:queuesummary','syncQueueMember','[voiceQueueReport][queuesummary]\x20event:','[voiceQueueReport][queuesummary]\x20name:%s','statusRequests','completeEvent','isUndefined','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','pick','keys','push','[%s][voiceQueueReport][queuecallerjoin]','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','ABANDONED','lastAssignedTo','info','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','queuecallerleave','syncAgentConnect','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','membername','queuecallerexit','queuecallerexitAt','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','local/','linkedid','add','seconds','queuecallerexitreason','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','toUpperCase','addVariable','variable','value','TIMEOUT','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','queueposition','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','includes','sumHoldTime','diff','length','milliseconds','total','answered','sumBillable','unmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','abandoned','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','sumDuration','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][handleHangup]','syncHangup','[%s][voiceQueueReport][hangup]','handleHangup','cause','cause-txt','transferid','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','transferuniqueid','secondtransfereruniqueid','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','switch','BLINDTRANSFER','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','transfererchannel','[%s][voiceQueueReport][blindtransfer]','syncMusicOnHoldStart','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][musiconholdstop]','syncNewExten','application','set','applicationdata','appdata','CDR(routeAlias)','cdr(','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','ioredis','../../../config/environment','../ami','../model/voiceQueueSummary','defaults','localhost','socket.io-emitter','redis','prototype','enqueue','tail','finally','sequence','queueReports','realtime','agents','channels','queueChannels','voiceQueues','campaigns','summary','variables','queuesummary','bind','queuesummarycomplete','syncQueueSummaryComplete','queuemember','queuestatuscomplete','syncQueueStatusComplete','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerAbandon','syncQueueCallerLeave','agentcomplete','syncAgentComplete','agentconnect','varset','syncVarSet','hangup','fullybooted','syncFullyBooted','musiconholdstart','musiconholdstop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueShow','isEmpty','hasOwnProperty','originated','pTalking','queueStatusComplete','unlockRR','clearZombieChannels','isNil','Action','status','channel','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]'];(function(_0x315c50,_0x420252){var _0x9de649=function(_0x4cc7ae){while(--_0x4cc7ae){_0x315c50['push'](_0x315c50['shift']());}};_0x9de649(++_0x420252);}(_0xddb2,0xb1));var _0x2ddb=function(_0x3d8265,_0x5512bb){_0x3d8265=_0x3d8265-0x0;var _0x3e9e2d=_0xddb2[_0x3d8265];return _0x3e9e2d;};'use strict';var _=require(_0x2ddb('0x0'));var moment=require(_0x2ddb('0x1'));var util=require(_0x2ddb('0x2'));var Redis=require(_0x2ddb('0x3'));var config=require(_0x2ddb('0x4'));var logger=require('../../../config/logger')('ami');var ami=require(_0x2ddb('0x5'));var QueueReport=require('../model/queueReport');var VoiceQueueSummary=require(_0x2ddb('0x6'));config['redis']=_[_0x2ddb('0x7')](config['redis'],{'host':_0x2ddb('0x8'),'port':0x18eb});var io=require(_0x2ddb('0x9'))(new Redis(config[_0x2ddb('0xa')]));var Sequence=function(){};Sequence[_0x2ddb('0xb')][_0x2ddb('0xc')]=function(_0x43dc4c){this[_0x2ddb('0xd')]=this[_0x2ddb('0xd')]?this[_0x2ddb('0xd')][_0x2ddb('0xe')](_0x43dc4c):_0x43dc4c();};function VoiceQueueReport(_0x29542d){this[_0x2ddb('0xf')]=new Sequence();this[_0x2ddb('0x10')]={};this[_0x2ddb('0x11')]=_0x29542d;this[_0x2ddb('0x12')]=_0x29542d[_0x2ddb('0x12')];this[_0x2ddb('0x13')]=_0x29542d[_0x2ddb('0x14')];this[_0x2ddb('0x15')]=_0x29542d[_0x2ddb('0x15')];this[_0x2ddb('0x16')]=_0x29542d[_0x2ddb('0x16')];this[_0x2ddb('0x17')]=initializeSummary();this[_0x2ddb('0x18')]={};ami['on'](_0x2ddb('0x19'),this['syncQueueSummary'][_0x2ddb('0x1a')](this));ami['on'](_0x2ddb('0x1b'),this[_0x2ddb('0x1c')]['bind'](this));ami['on'](_0x2ddb('0x1d'),this['syncQueueMember'][_0x2ddb('0x1a')](this));ami['on'](_0x2ddb('0x1e'),this[_0x2ddb('0x1f')][_0x2ddb('0x1a')](this));ami['on'](_0x2ddb('0x20'),this[_0x2ddb('0x21')][_0x2ddb('0x1a')](this));ami['on'](_0x2ddb('0x22'),this[_0x2ddb('0x23')][_0x2ddb('0x1a')](this));ami['on']('queuecallerleave',this[_0x2ddb('0x24')][_0x2ddb('0x1a')](this));ami['on'](_0x2ddb('0x25'),this[_0x2ddb('0x26')][_0x2ddb('0x1a')](this));ami['on'](_0x2ddb('0x27'),this['syncAgentConnect'][_0x2ddb('0x1a')](this));ami['on'](_0x2ddb('0x28'),this[_0x2ddb('0x29')]['bind'](this));ami['on'](_0x2ddb('0x2a'),this['syncHangup'][_0x2ddb('0x1a')](this));ami['on'](_0x2ddb('0x2b'),this[_0x2ddb('0x2c')][_0x2ddb('0x1a')](this));ami['on'](_0x2ddb('0x2d'),this['syncMusicOnHoldStart'][_0x2ddb('0x1a')](this));ami['on'](_0x2ddb('0x2e'),this['syncMusicOnHoldStop'][_0x2ddb('0x1a')](this));ami['on'](_0x2ddb('0x2f'),this[_0x2ddb('0x30')][_0x2ddb('0x1a')](this));ami['on'](_0x2ddb('0x31'),this[_0x2ddb('0x32')][_0x2ddb('0x1a')](this));this['loopQueueSummary']();this[_0x2ddb('0x33')]();}function clearChannels(_0x435dfc){if(!_[_0x2ddb('0x34')](_0x435dfc)){for(var _0x16c9c1 in _0x435dfc){if(_0x435dfc[_0x2ddb('0x35')](_0x16c9c1)){delete _0x435dfc[_0x16c9c1];}}}}function clearCampaigns(_0x3972a0){if(!_[_0x2ddb('0x34')](_0x3972a0)){for(var _0x894576 in _0x3972a0){if(_0x3972a0[_0x2ddb('0x35')](_0x894576)){_0x3972a0[_0x894576]['originated']=0x0;}}}}function clearVoiceQueues(_0x173b53){if(!_[_0x2ddb('0x34')](_0x173b53)){for(var _0xf6a09e in _0x173b53){if(_0x173b53[_0x2ddb('0x35')](_0xf6a09e)){_0x173b53[_0xf6a09e][_0x2ddb('0x36')]=0x0;_0x173b53[_0xf6a09e]['talking']=0x0;_0x173b53[_0xf6a09e][_0x2ddb('0x37')]=0x0;_0x173b53[_0xf6a09e]['waiting']=0x0;_0x173b53[_0xf6a09e][_0x2ddb('0x38')]=!![];}}}}function clearAgentBooked(_0xdfc35){if(!_[_0x2ddb('0x34')](_0xdfc35)){for(var _0x26f28a in _0xdfc35){if(_0xdfc35['hasOwnProperty'](_0x26f28a)){_0xdfc35[_0x26f28a][_0x2ddb('0x39')]=!![];}}}}function initializeSummary(){return{'id':null,'completeEvent':null,'isRunning':![],'queues':{},'queuestatus':{},'statusRequests':0x0};}function hasCallerLeftTheQueue(_0x104acd){return _0x104acd['queuecallerexit']||_0x104acd[_0x2ddb('0x22')]||_0x104acd['queuecallercomplete'];}VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0x3a')]=function(){var _0x4314cd=this;for(var _0x16cceb in this[_0x2ddb('0x13')]){if(this[_0x2ddb('0x13')][_0x2ddb('0x35')](_0x16cceb)&&!this[_0x2ddb('0x13')][_0x16cceb]['switch']){this[_0x2ddb('0xf')][_0x2ddb('0xc')](function(){if(!_[_0x2ddb('0x3b')](_0x4314cd[_0x2ddb('0x13')][_0x16cceb])){return ami[_0x2ddb('0x3c')]({'action':_0x2ddb('0x3d'),'channel':_0x4314cd[_0x2ddb('0x13')][_0x16cceb][_0x2ddb('0x3e')]})['catch'](function(_0x5457ce){if(_0x5457ce[_0x2ddb('0x3f')]===_0x2ddb('0x40')){setTimeout(function(){if(_0x4314cd['channels'][_0x16cceb]){delete _0x4314cd[_0x2ddb('0x13')][_0x16cceb];logger[_0x2ddb('0x41')](_0x2ddb('0x42'),_0x16cceb,util[_0x2ddb('0x43')](_0x5457ce,{'showHidden':![],'depth':null}));}if(_0x4314cd[_0x2ddb('0x10')][_0x16cceb]){delete _0x4314cd[_0x2ddb('0x10')][_0x16cceb];logger[_0x2ddb('0x41')](_0x2ddb('0x44'),_0x16cceb,util[_0x2ddb('0x43')](_0x5457ce,{'showHidden':![],'depth':null}));}if(_0x4314cd[_0x2ddb('0x18')][_0x16cceb]){delete _0x4314cd[_0x2ddb('0x18')][_0x16cceb];logger[_0x2ddb('0x41')](_0x2ddb('0x45'),_0x16cceb,util['inspect'](_0x5457ce,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0x2ddb('0x2c')]=function(){logger['error'](_0x2ddb('0x46'));clearChannels(this['channels']);this[_0x2ddb('0x47')](this[_0x2ddb('0x10')]);clearAgentBooked(this['agents']);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this['campaigns']);this[_0x2ddb('0x17')]=initializeSummary();};VoiceQueueReport[_0x2ddb('0xb')]['clearQueueReport']=function(_0x2a8441){var _0x3d873f=this;if(!_['isEmpty'](_0x2a8441)){for(var _0x410e77 in _0x2a8441){if(_0x2a8441[_0x2ddb('0x35')](_0x410e77)){_0x3d873f['emitVoiceQueueChannelRemove'](_0x2a8441[_0x410e77],'clearqueuereport');delete _0x2a8441[_0x410e77];}}}};VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0x48')]=function(_0x1a922d,_0x1c66e1,_0x801c73){io['to'](_0x1a922d)[_0x2ddb('0x48')](_0x1c66e1,_0x801c73);};VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0x49')]=function(_0x22ea50,_0xdc27bf){logger[_0x2ddb('0x4a')]('[%s][voiceQueueReport]['+_0xdc27bf+_0x2ddb('0x4b'),_0x22ea50[_0x2ddb('0x4c')],util[_0x2ddb('0x43')](_0x22ea50,{'showHidden':![],'depth':null}));this[_0x2ddb('0x48')](util[_0x2ddb('0x4d')]('voice:queue:%s',_0x22ea50[_0x2ddb('0x4e')]),_0x2ddb('0x4f'),_0x22ea50);io[_0x2ddb('0x48')](_0x2ddb('0x50'),_0x22ea50);};VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0x51')]=function(_0x41e994,_0x555181){logger[_0x2ddb('0x4a')](_0x2ddb('0x52')+_0x555181+_0x2ddb('0x53'),_0x41e994['uniqueid'],util[_0x2ddb('0x43')](_0x41e994,{'showHidden':![],'depth':null}));if(_0x41e994['queuecallerexitreason']===_0x2ddb('0x54')){return;}this[_0x2ddb('0x48')](util[_0x2ddb('0x4d')](_0x2ddb('0x55'),_0x41e994[_0x2ddb('0x4e')]),'voice_queue_channel:remove',_0x41e994);io[_0x2ddb('0x48')]('voice_queue_presence:remove',_0x41e994);};VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0x56')]=function(_0x270cd4){if(_0x270cd4[_0x2ddb('0x57')]===_0x2ddb('0x58')){logger['debug'](_0x2ddb('0x59'),util[_0x2ddb('0x43')](_0x270cd4,{'showHidden':![],'depth':null}));this[_0x2ddb('0x48')](util[_0x2ddb('0x4d')](_0x2ddb('0x55'),_0x270cd4[_0x2ddb('0x5a')]),_0x2ddb('0x5b'),_0x270cd4);}};VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0x5c')]=function(_0x8abca4){return _0x8abca4!==null&&!_['isUndefined'](_0x8abca4);};VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0x33')]=function(){var _0x296741=this;setInterval(function(){_0x296741[_0x2ddb('0x3a')]();ami[_0x2ddb('0x3c')]({'action':_0x2ddb('0x5d')})[_0x2ddb('0x5e')](function(_0x13a5c2){logger[_0x2ddb('0x41')]('[voiceQueueReport][queues]',util[_0x2ddb('0x43')](_0x13a5c2,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0x5f')]=function(){var _0xfec05=this;setInterval(function(){if(!_0xfec05['summary'][_0x2ddb('0x60')]){return ami[_0x2ddb('0x3c')]({'action':'queuesummary'})[_0x2ddb('0x61')](function(_0x258157){_0xfec05['summary']['id']=_0x258157[_0x2ddb('0x62')];_0xfec05[_0x2ddb('0x17')][_0x2ddb('0x60')]=!![];_0xfec05[_0x2ddb('0x17')][_0x2ddb('0x63')][_0x258157[_0x2ddb('0x62')]]={};})[_0x2ddb('0x5e')](function(_0x1c3d0d){logger['error'](_0x2ddb('0x64'),util[_0x2ddb('0x43')](_0x1c3d0d,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0x65')]=function(_0x2becb4,_0x31ef9e){var _0x4b4d92;if(this[_0x2ddb('0x17')]&&this[_0x2ddb('0x17')][_0x2ddb('0x5d')]&&this[_0x2ddb('0x17')][_0x2ddb('0x5d')][_0x2becb4[_0x2ddb('0x5a')]]){_0x4b4d92=this[_0x2ddb('0x17')][_0x2ddb('0x5d')][_0x2becb4[_0x2ddb('0x5a')]]['summaryEvent'];}var _0x395bf8=new VoiceQueueSummary(_0x2becb4);return _0x395bf8[_0x2ddb('0x66')](_0x31ef9e[_0x2ddb('0x12')],this[_0x2ddb('0x12')],_0x4b4d92,this[_0x2ddb('0x11')][_0x2ddb('0x13')]);};VoiceQueueReport[_0x2ddb('0xb')]['handleInboundQueueSummaryReport']=function(_0x4cc854,_0xa28522){var _0x23ab6e=this[_0x2ddb('0x65')](_0x4cc854,_0xa28522);var _0x55a3e0=![];_0x55a3e0=_0x23ab6e[_0x2ddb('0x67')](_0x4cc854);if(_0x55a3e0){Object[_0x2ddb('0x68')](_0x4cc854,_0x23ab6e);this[_0x2ddb('0x11')][_0x2ddb('0x15')][_0x4cc854[_0x2ddb('0x5a')]]=_0x4cc854;this[_0x2ddb('0x56')](_0x23ab6e);}};VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0x1f')]=function(_0xb03d72){var _0x2d31e9=null;var _0x24112f=this['summary']['id'];if(this[_0x2ddb('0x17')][_0x2ddb('0x63')][_0x24112f]){_0x2d31e9=this[_0x2ddb('0x17')]['queuestatus'][_0x24112f][_0xb03d72['actionid']];}if(!_0x2d31e9){this[_0x2ddb('0x17')]=initializeSummary();return;}var _0x201292=this['voiceQueues'][_0x2d31e9[_0x2ddb('0x4e')]];if(_0x201292[_0x2ddb('0x57')]===_0x2ddb('0x58')){this[_0x2ddb('0x69')](_0x201292,_0x2d31e9);}else if(_0x201292['type']==='outbound'){var _0x3df291=this[_0x2ddb('0x65')](_0x201292,_0x2d31e9);ami[_0x2ddb('0x48')](_0x2ddb('0x6a'),_0x3df291);}this['summary']['statusRequests']-=0x1;var _0x19d98e=this[_0x2ddb('0x17')]['statusRequests']>0x0?!![]:![];if(!_0x19d98e){return this[_0x2ddb('0x1c')](this[_0x2ddb('0x17')]['completeEvent']);}};VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0x6b')]=function(_0x30934c){var _0x265a05=this[_0x2ddb('0x17')]['id'];if(this[_0x2ddb('0x17')][_0x2ddb('0x63')][_0x265a05]&&this[_0x2ddb('0x17')]['queuestatus'][_0x265a05][_0x30934c['actionid']]){this['summary'][_0x2ddb('0x63')][_0x265a05][_0x30934c['actionid']][_0x2ddb('0x12')]['push'](_0x30934c);}};VoiceQueueReport['prototype']['syncQueueSummary']=function(_0x5cfd03){var _0x47e6ea=this;try{if(this[_0x2ddb('0x5c')](_0x5cfd03)&&this[_0x2ddb('0x5c')](_0x5cfd03[_0x2ddb('0x4e')])){logger['debug'](_0x2ddb('0x6c'),util['inspect'](_0x5cfd03,{'showHidden':![],'depth':null}));var _0x50a097=this['voiceQueues'][_0x5cfd03[_0x2ddb('0x4e')]];if(_0x50a097){logger[_0x2ddb('0x4a')](_0x2ddb('0x6d'),_0x50a097[_0x2ddb('0x5a')]);this[_0x2ddb('0x17')]['queues'][_0x50a097['name']]={'summaryEvent':_0x5cfd03};this[_0x2ddb('0x17')][_0x2ddb('0x6e')]+=0x1;return ami['Action']({'action':_0x2ddb('0x63'),'queue':_0x50a097[_0x2ddb('0x5a')]})[_0x2ddb('0x61')](function(_0x5e2cec){if(!_0x47e6ea[_0x2ddb('0x17')]['queuestatus'][_0x5cfd03[_0x2ddb('0x62')]]){_0x47e6ea[_0x2ddb('0x17')][_0x2ddb('0x63')][_0x5cfd03[_0x2ddb('0x62')]]={};}_0x47e6ea[_0x2ddb('0x17')][_0x2ddb('0x63')][_0x5cfd03['actionid']][_0x5e2cec[_0x2ddb('0x62')]]={'queue':_0x50a097['name'],'agents':[]};})[_0x2ddb('0x5e')](function(_0x2b3c42){throw _0x2b3c42;});}}}catch(_0xde6588){logger[_0x2ddb('0x41')](_0x2ddb('0x64'),util[_0x2ddb('0x43')](_0xde6588,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x2ddb('0x1c')]=function(_0x32c21e){if(this[_0x2ddb('0x17')][_0x2ddb('0x6e')]>0x0){this[_0x2ddb('0x17')][_0x2ddb('0x6f')]=_0x32c21e;return;}logger['debug']('[voiceQueueReport][queuesummarycomplete]\x20event:',util[_0x2ddb('0x43')](_0x32c21e,{'showHidden':![],'depth':null}));this[_0x2ddb('0x17')]=initializeSummary();ami[_0x2ddb('0x48')]('custom:queuesummarycomplete',{});};VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0x21')]=function(_0x5229c3){try{if(this[_0x2ddb('0x5c')](_0x5229c3)){logger[_0x2ddb('0x4a')]('[%s][voiceQueueReport][queuecallerjoin]',_0x5229c3[_0x2ddb('0x4c')],util[_0x2ddb('0x43')](_0x5229c3,{'showHidden':![],'depth':null}));if(_[_0x2ddb('0x70')](this[_0x2ddb('0x10')][_0x5229c3['uniqueid']])){this['queueReports'][_0x5229c3[_0x2ddb('0x4c')]]=[];}if(_[_0x2ddb('0x70')](this[_0x2ddb('0x13')][_0x5229c3['uniqueid']])){this[_0x2ddb('0x13')][_0x5229c3[_0x2ddb('0x4c')]]={};}var _0x5ca5a2=new QueueReport();_0x5ca5a2[_0x2ddb('0x4e')]=_0x5229c3[_0x2ddb('0x4e')];_0x5ca5a2[_0x2ddb('0x57')]=this[_0x2ddb('0x15')][_0x5ca5a2[_0x2ddb('0x4e')]]&&this[_0x2ddb('0x15')][_0x5ca5a2['queue']][_0x2ddb('0x57')]?this[_0x2ddb('0x15')][_0x5ca5a2[_0x2ddb('0x4e')]][_0x2ddb('0x57')]||_0x2ddb('0x58'):'inbound';_0x5ca5a2[_0x2ddb('0x71')]=moment()[_0x2ddb('0x4d')](_0x2ddb('0x72'));_0x5ca5a2['position']=_0x5229c3[_0x2ddb('0x73')];_0x5ca5a2[_0x2ddb('0x74')]=_0x5229c3[_0x2ddb('0x74')];_0x5ca5a2[_0x2ddb('0x4c')]=_0x5229c3[_0x2ddb('0x4c')];_0x5ca5a2['routealias']=this['channels'][_0x5229c3['uniqueid']][_0x2ddb('0x75')];logger['info'](_0x2ddb('0x76'),_0x5ca5a2[_0x2ddb('0x4e')],_0x5ca5a2[_0x2ddb('0x57')]);Object[_0x2ddb('0x68')](_0x5ca5a2,_[_0x2ddb('0x77')](_0x5229c3,_[_0x2ddb('0x78')](_0x5ca5a2)));this[_0x2ddb('0x10')][_0x5229c3[_0x2ddb('0x4c')]][_0x2ddb('0x79')](_0x5ca5a2);this[_0x2ddb('0x13')][_0x5229c3[_0x2ddb('0x4c')]]=_0x5ca5a2;this[_0x2ddb('0x49')](_0x5ca5a2,_0x2ddb('0x20'));}}catch(_0x4b7a9b){logger[_0x2ddb('0x41')](_0x2ddb('0x7a'),_0x5229c3['uniqueid'],util[_0x2ddb('0x43')](_0x4b7a9b,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0x23')]=function(_0x35fbfc){try{if(this[_0x2ddb('0x5c')](_0x35fbfc)){logger[_0x2ddb('0x4a')](_0x2ddb('0x7b'),_0x35fbfc[_0x2ddb('0x4c')],util[_0x2ddb('0x43')](_0x35fbfc,{'showHidden':![],'depth':null}));if(this[_0x2ddb('0x10')][_0x35fbfc[_0x2ddb('0x4c')]]){var _0x5c7453=_[_0x2ddb('0x7c')](this['queueReports'][_0x35fbfc['uniqueid']]);_0x5c7453[_0x2ddb('0x7d')]=![];_0x5c7453[_0x2ddb('0x7e')]=null;_0x5c7453[_0x2ddb('0x7f')]=_0x35fbfc[_0x2ddb('0x7f')];_0x5c7453[_0x2ddb('0x80')]=_0x35fbfc[_0x2ddb('0x80')];_0x5c7453[_0x2ddb('0x22')]=!![];_0x5c7453[_0x2ddb('0x81')]=moment()[_0x2ddb('0x4d')](_0x2ddb('0x72'));_0x5c7453['queuecallerexitreason']=_0x2ddb('0x82');_0x5c7453[_0x2ddb('0x83')]=null;logger[_0x2ddb('0x84')](_0x2ddb('0x85'),_0x5c7453[_0x2ddb('0x4e')],_0x5c7453[_0x2ddb('0x57')]);this['channels'][_0x35fbfc[_0x2ddb('0x4c')]]=_0x5c7453;this[_0x2ddb('0x51')](_0x5c7453,'queuecallerabandon');}}}catch(_0x56d0f5){logger[_0x2ddb('0x41')](_0x2ddb('0x7b'),_0x35fbfc[_0x2ddb('0x4c')],util[_0x2ddb('0x43')](_0x56d0f5,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x2ddb('0x24')]=function(_0x2b4367){try{if(this[_0x2ddb('0x5c')](_0x2b4367)){logger[_0x2ddb('0x4a')](_0x2ddb('0x86'),_0x2b4367['uniqueid'],util['inspect'](_0x2b4367,{'showHidden':![],'depth':null}));if(this[_0x2ddb('0x10')][_0x2b4367[_0x2ddb('0x4c')]]){var _0x53fadb=_[_0x2ddb('0x7c')](this[_0x2ddb('0x10')][_0x2b4367[_0x2ddb('0x4c')]]);_0x53fadb[_0x2ddb('0x87')]=moment()['format'](_0x2ddb('0x72'));_0x53fadb['connectedlinenum']=_0x2b4367[_0x2ddb('0x88')];_0x53fadb[_0x2ddb('0x89')]=_0x2b4367['connectedlinename'];logger['info'](_0x2ddb('0x8a'),_0x53fadb['queue'],_0x53fadb[_0x2ddb('0x57')],_0x2b4367[_0x2ddb('0x88')],_0x2b4367[_0x2ddb('0x89')]);this[_0x2ddb('0x13')][_0x2b4367[_0x2ddb('0x4c')]]=_0x53fadb;this[_0x2ddb('0x49')](_0x53fadb,_0x2ddb('0x8b'));}}}catch(_0x779d28){logger[_0x2ddb('0x41')]('[%s][voiceQueueReport][queuecallerleave]',_0x2b4367[_0x2ddb('0x4c')],util[_0x2ddb('0x43')](_0x779d28,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0x8c')]=function(_0x4b455c){try{if(this[_0x2ddb('0x5c')](_0x4b455c)){logger[_0x2ddb('0x4a')](_0x2ddb('0x8d'),_0x4b455c[_0x2ddb('0x4c')],util[_0x2ddb('0x43')](_0x4b455c,{'showHidden':![],'depth':null}));if(this[_0x2ddb('0x10')][_0x4b455c[_0x2ddb('0x4c')]]){var _0x4ebe33=_[_0x2ddb('0x7c')](this[_0x2ddb('0x10')][_0x4b455c[_0x2ddb('0x4c')]]);_0x4ebe33[_0x2ddb('0x7d')]=!![];_0x4ebe33['queuecallerexitreason']=_0x2ddb('0x8e');logger['info'](_0x2ddb('0x8f'),_0x4ebe33[_0x2ddb('0x4e')],_0x4ebe33['type']);}}}catch(_0x309636){logger[_0x2ddb('0x41')](_0x2ddb('0x8d'),_0x4b455c[_0x2ddb('0x4c')],util[_0x2ddb('0x43')](_0x309636,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0x26')]=function(_0x5996e3){try{if(this['isNotNull'](_0x5996e3)){logger[_0x2ddb('0x4a')]('[%s][voiceQueueReport][agentcomplete]',_0x5996e3[_0x2ddb('0x4c')],util[_0x2ddb('0x43')](_0x5996e3,{'showHidden':![],'depth':null}));if(this[_0x2ddb('0x10')][_0x5996e3[_0x2ddb('0x4c')]]){var _0x1fd9e2=_['last'](this['queueReports'][_0x5996e3[_0x2ddb('0x4c')]]);_0x1fd9e2[_0x2ddb('0x22')]=![];_0x1fd9e2[_0x2ddb('0x81')]=null;_0x1fd9e2['assigned']=!![];_0x1fd9e2[_0x2ddb('0x83')]=_0x5996e3[_0x2ddb('0x90')];_0x1fd9e2[_0x2ddb('0x7f')]=_0x5996e3[_0x2ddb('0x7f')];_0x1fd9e2[_0x2ddb('0x7d')]=!![];_0x1fd9e2[_0x2ddb('0x91')]=![];_0x1fd9e2[_0x2ddb('0x92')]=null;if(!_0x1fd9e2[_0x2ddb('0x93')]){if(_0x5996e3[_0x2ddb('0x94')]==_0x2ddb('0x93')){_0x1fd9e2['queuecallerexitreason']=_0x2ddb('0x95');logger[_0x2ddb('0x84')](_0x2ddb('0x96'),_0x1fd9e2['queue'],_0x1fd9e2['type']);}else{if(_[_0x2ddb('0x97')](_0x5996e3[_0x2ddb('0x3e')][_0x2ddb('0x98')](),_0x2ddb('0x99'))){if(this[_0x2ddb('0x10')][_0x5996e3[_0x2ddb('0x9a')]]){var _0x2ebb7f=_['last'](this[_0x2ddb('0x10')][_0x5996e3['linkedid']]);_0x2ebb7f[_0x2ddb('0x7d')]=![];_0x2ebb7f[_0x2ddb('0x91')]=!![];_0x2ebb7f[_0x2ddb('0x92')]=moment(_0x1fd9e2[_0x2ddb('0x71')])[_0x2ddb('0x9b')](_0x5996e3[_0x2ddb('0x7f')],_0x2ddb('0x9c'))[_0x2ddb('0x4d')](_0x2ddb('0x72'));_0x2ebb7f[_0x2ddb('0x9d')]=_0x2ddb('0x9e');_0x2ebb7f['transfer']=!![];_0x2ebb7f[_0x2ddb('0x9f')]=_0x2ddb('0xa0');_0x2ebb7f[_0x2ddb('0xa1')]=_0x5996e3[_0x2ddb('0xa2')];_0x2ebb7f['transferuniqueid']=_0x5996e3[_0x2ddb('0x4c')];logger[_0x2ddb('0x84')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER',_0x2ebb7f['queue'],_0x2ebb7f[_0x2ddb('0x57')]);var _0x3a6ef2=this[_0x2ddb('0x10')][_0x5996e3['linkedid']];this[_0x2ddb('0x10')][_0x5996e3['linkedid']]=this['queueReports'][_0x5996e3[_0x2ddb('0x4c')]];this[_0x2ddb('0x10')][_0x5996e3[_0x2ddb('0x4c')]]=_0x3a6ef2;}}else{_0x1fd9e2[_0x2ddb('0x9d')]='COMPLETEDBY'+_0x5996e3[_0x2ddb('0x94')][_0x2ddb('0xa3')]();logger[_0x2ddb('0x84')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0x1fd9e2[_0x2ddb('0x4e')],_0x1fd9e2[_0x2ddb('0x57')],_0x1fd9e2[_0x2ddb('0x9d')]);}}}this[_0x2ddb('0x13')][_0x5996e3[_0x2ddb('0x4c')]]=_0x1fd9e2;}}}catch(_0x52ae32){logger[_0x2ddb('0x41')]('[%s][voiceQueueReport][agentcomplete]',_0x5996e3['uniqueid'],util[_0x2ddb('0x43')](_0x52ae32,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0x29')]=function(_0x1f4530){try{if(this['isNotNull'](_0x1f4530)){logger[_0x2ddb('0x4a')]('[%s][voiceQueueReport][varset]',_0x1f4530[_0x2ddb('0x4c')],util[_0x2ddb('0x43')](_0x1f4530,{'showHidden':![],'depth':null}));this[_0x2ddb('0xa4')](_0x1f4530['uniqueid'],_['keys'](_0x1f4530[_0x2ddb('0xa5')])[0x0],_0x1f4530[_0x2ddb('0xa6')]);if(this['queueReports'][_0x1f4530[_0x2ddb('0x4c')]]){var _0x44850c=_['last'](this[_0x2ddb('0x10')][_0x1f4530[_0x2ddb('0x4c')]]);if(_0x44850c){if(this[_0x2ddb('0x5c')](_0x1f4530[_0x2ddb('0xa5')])&&this[_0x2ddb('0x5c')](_0x1f4530['variable'][_0x2ddb('0x63')])){switch(_0x1f4530[_0x2ddb('0xa6')]){case'CONTINUE':_0x44850c[_0x2ddb('0x91')]=![];_0x44850c[_0x2ddb('0x92')]=null;break;case _0x2ddb('0xa7'):_0x44850c[_0x2ddb('0xa8')]=_0x2ddb('0xa9');_0x44850c[_0x2ddb('0x91')]=!![];_0x44850c['queuecallerexitAt']=moment()[_0x2ddb('0x4d')](_0x2ddb('0x72'));_0x44850c[_0x2ddb('0x87')]=moment()[_0x2ddb('0x4d')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x2ddb('0x4a')](_0x2ddb('0xaa'),_0x1f4530[_0x2ddb('0x4c')],util['inspect'](_0x44850c,{'showHidden':![],'depth':null}));ami[_0x2ddb('0x48')]('custom:timeout',_0x44850c);break;default:_0x44850c[_0x2ddb('0x91')]=!![];_0x44850c[_0x2ddb('0x92')]=moment()[_0x2ddb('0x4d')](_0x2ddb('0x72'));_0x44850c[_0x2ddb('0x87')]=moment()[_0x2ddb('0x4d')]('YYYY-MM-DD\x20HH:mm:ss');}_0x44850c[_0x2ddb('0x22')]=![];_0x44850c[_0x2ddb('0x81')]=null;_0x44850c[_0x2ddb('0x9d')]=_0x1f4530['value'];this[_0x2ddb('0x13')][_0x1f4530[_0x2ddb('0x4c')]]=_0x44850c;this['emitVoiceQueueChannelRemove'](_0x44850c,_0x2ddb('0x28'));}else if(this[_0x2ddb('0x5c')](_0x1f4530[_0x2ddb('0xa5')])&&this['isNotNull'](_0x1f4530[_0x2ddb('0xa5')][_0x2ddb('0xab')])){if(!_0x44850c[_0x2ddb('0x22')]){_0x44850c[_0x2ddb('0x91')]=!![];_0x44850c['queuecallerexitAt']=moment()[_0x2ddb('0x4d')](_0x2ddb('0x72'));_0x44850c[_0x2ddb('0x9d')]='EXITWITHKEY';_0x44850c['queuecallerleaveAt']=moment()[_0x2ddb('0x4d')](_0x2ddb('0x72'));this[_0x2ddb('0x13')][_0x1f4530[_0x2ddb('0x4c')]]=_0x44850c;}}logger[_0x2ddb('0x84')](_0x2ddb('0xac'),_0x1f4530[_0x2ddb('0x4c')],_0x44850c[_0x2ddb('0x4e')],_0x44850c[_0x2ddb('0x57')],_['keys'](_0x1f4530[_0x2ddb('0xa5')])[0x0],_0x1f4530[_0x2ddb('0xa6')]);_0x44850c[_0x2ddb('0x18')]=this['variables'][_0x1f4530['uniqueid']];}}}}catch(_0x30ab08){logger[_0x2ddb('0x41')]('[%s][voiceQueueReport][varset]',_0x1f4530[_0x2ddb('0x4c')],util[_0x2ddb('0x43')](_0x30ab08,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x2ddb('0xa4')]=function(_0x48ca0f,_0xbfdbfe,_0x33be6b){var _0x2469db=['rtpaudioqos','rtpaudioqosbridged',_0x2ddb('0xad'),_0x2ddb('0xae'),_0x2ddb('0xaf'),_0x2ddb('0xb0'),'rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid',_0x2ddb('0xb1'),_0x2ddb('0xb2'),_0x2ddb('0xb3'),_0x2ddb('0xb4'),_0x2ddb('0xb5'),_0x2ddb('0xb6'),_0x2ddb('0xb7'),_0x2ddb('0x90'),_0x2ddb('0xb8'),_0x2ddb('0xb9')];if(!_['isNil'](_0xbfdbfe)&&!_[_0x2ddb('0xba')](_0x2469db,_0xbfdbfe)){if(_[_0x2ddb('0x70')](this[_0x2ddb('0x18')][_0x48ca0f])){this['variables'][_0x48ca0f]={};}this['variables'][_0x48ca0f][_0xbfdbfe]=_0x33be6b;}};VoiceQueueReport[_0x2ddb('0xb')]['handleHangup']=function(_0x2a8d3b,_0x514a4e,_0x50aaa9){try{var _0x525b8d={};if(this[_0x2ddb('0x10')][_0x2a8d3b]){for(var _0x40f3e1=0x0;_0x40f3e1<this[_0x2ddb('0x10')][_0x2a8d3b]['length'];_0x40f3e1+=0x1){_0x525b8d=this[_0x2ddb('0x10')][_0x2a8d3b][_0x40f3e1];var _0x2b4665=this[_0x2ddb('0x15')][_0x525b8d[_0x2ddb('0x4e')]];if(_0x2b4665){_0x2b4665[_0x2ddb('0xbb')]+=moment(_0x525b8d[_0x2ddb('0x87')])[_0x2ddb('0xbc')](_0x525b8d[_0x2ddb('0x71')],_0x2ddb('0x9c'))||0x0;if(_0x50aaa9&&_0x525b8d[_0x2ddb('0x9d')]===_0x2ddb('0x54')){_0x525b8d[_0x2ddb('0x9d')]='COMPLETEDBYAGENT';}if(_0x40f3e1===this[_0x2ddb('0x10')][_0x2a8d3b][_0x2ddb('0xbd')]-0x1){_0x2b4665['sumDuration']+=moment()[_0x2ddb('0xbe')](0x0)[_0x2ddb('0xbc')](_0x525b8d['queuecallerjoinAt'],_0x2ddb('0x9c'));if(hasCallerLeftTheQueue(_0x525b8d)&&_0x525b8d[_0x2ddb('0x9d')]!==_0x2ddb('0x54')){_0x2b4665[_0x2ddb('0xbf')]+=0x1;}if(_0x525b8d[_0x2ddb('0x7d')]){_0x2b4665[_0x2ddb('0xc0')]+=0x1;_0x2b4665[_0x2ddb('0xc1')]+=moment()['milliseconds'](0x0)[_0x2ddb('0xbc')](_0x525b8d[_0x2ddb('0x87')],_0x2ddb('0x9c'));_0x525b8d[_0x2ddb('0x7e')]=moment()[_0x2ddb('0x4d')]('YYYY-MM-DD\x20HH:mm:ss');_0x525b8d[_0x2ddb('0x91')]=![];_0x525b8d['queuecallerexitAt']=null;}if(_0x525b8d['queuecallerexit']&&_0x525b8d[_0x2ddb('0x93')]!=!![]){_0x2b4665[_0x2ddb('0xc2')]+=0x1;_0x525b8d[_0x2ddb('0xa8')]=_0x2ddb('0xc2');logger['debug'](_0x2ddb('0xc3'),_0x2a8d3b,util[_0x2ddb('0x43')](_0x525b8d,{'showHidden':![],'depth':null}));ami[_0x2ddb('0x48')](_0x2ddb('0xc4'),_0x525b8d);}if(_0x525b8d['queuecallerabandon']){_0x2b4665['abandoned']+=0x1;_0x525b8d[_0x2ddb('0xa8')]=_0x2ddb('0xc5');logger['debug'](_0x2ddb('0xc6'),_0x2a8d3b,util[_0x2ddb('0x43')](_0x525b8d,{'showHidden':![],'depth':null}));ami[_0x2ddb('0x48')](_0x2ddb('0xc7'),_0x525b8d);}}else{_0x2b4665[_0x2ddb('0xc8')]+=_0x2b4665[_0x2ddb('0xbb')];}logger['info'](_0x2ddb('0xc9'),_0x2a8d3b,_0x525b8d[_0x2ddb('0x4e')],_0x525b8d[_0x2ddb('0x57')],_0x514a4e);this[_0x2ddb('0x13')][_0x2a8d3b]=_0x525b8d;Object[_0x2ddb('0x68')](this[_0x2ddb('0x15')][_0x525b8d['queue']],_0x2b4665);if(_0x525b8d[_0x2ddb('0x87')]){this[_0x2ddb('0x51')](_0x525b8d,_0x2ddb('0x2a'));}}}logger['debug'](_0x2ddb('0xca'),_0x2a8d3b,util[_0x2ddb('0x43')](this[_0x2ddb('0x10')][_0x2a8d3b],{'showHidden':![],'depth':null}));if(hasCallerLeftTheQueue(_0x525b8d)&&_0x525b8d[_0x2ddb('0x9d')]!=='ATTENDEDTRANSFER'){ami[_0x2ddb('0x48')](_0x2ddb('0xcb'),this['queueReports'][_0x2a8d3b]);if(this[_0x2ddb('0x10')][_0x2a8d3b]){delete this[_0x2ddb('0x10')][_0x2a8d3b];}if(this['channels'][_0x2a8d3b]){delete this[_0x2ddb('0x13')][_0x2a8d3b];}if(this[_0x2ddb('0x18')][_0x2a8d3b]){delete this['variables'][_0x2a8d3b];}}}}catch(_0x535659){logger[_0x2ddb('0x41')](_0x2ddb('0xcc'),_0x2a8d3b,util['inspect'](_0x535659,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0xcd')]=function(_0x1f2e9c){try{if(this[_0x2ddb('0x5c')](_0x1f2e9c)){logger[_0x2ddb('0x4a')](_0x2ddb('0xce'),_0x1f2e9c[_0x2ddb('0x4c')],util[_0x2ddb('0x43')](_0x1f2e9c,{'showHidden':![],'depth':null}));if(this[_0x2ddb('0x10')][_0x1f2e9c[_0x2ddb('0x4c')]]){return this[_0x2ddb('0xcf')](_0x1f2e9c[_0x2ddb('0x4c')],_0x1f2e9c['cause-txt'],![]);}if(this[_0x2ddb('0x10')][_0x1f2e9c[_0x2ddb('0x9a')]]){if(_0x1f2e9c[_0x2ddb('0xd0')]==='21'){return;}return this[_0x2ddb('0xcf')](_0x1f2e9c['linkedid'],_0x1f2e9c[_0x2ddb('0xd1')],!![]);}var _0x25f031=Object[_0x2ddb('0x78')](this['queueReports']);for(var _0x130efe=0x0;_0x130efe<_0x25f031['length'];_0x130efe++){var _0x457a44=_[_0x2ddb('0x7c')](this[_0x2ddb('0x10')][_0x25f031[_0x130efe]]);if(_0x457a44&&_0x457a44[_0x2ddb('0xd2')]===_0x1f2e9c['uniqueid']){return this['handleHangup'](_0x457a44['uniqueid'],_0x1f2e9c[_0x2ddb('0xd1')],!![]);}}if(!this[_0x2ddb('0x10')][_0x1f2e9c[_0x2ddb('0x4c')]]){logger[_0x2ddb('0x4a')]('[%s][voiceQueueReport][syncHangup]\x20No\x20available\x20data\x20in\x20queueReports\x20structure:\x20clear\x20action\x20in\x20variablea\x20and\x20channels\x20structures\x20needed',_0x1f2e9c['uniqueid']);if(this[_0x2ddb('0x13')][_0x1f2e9c[_0x2ddb('0x4c')]]){delete this[_0x2ddb('0x13')][_0x1f2e9c[_0x2ddb('0x4c')]];}if(this[_0x2ddb('0x18')][_0x1f2e9c[_0x2ddb('0x4c')]]){delete this[_0x2ddb('0x18')][_0x1f2e9c[_0x2ddb('0x4c')]];}}}}catch(_0x50de7e){logger['error'](_0x2ddb('0xce'),_0x1f2e9c[_0x2ddb('0x4c')],util[_0x2ddb('0x43')](_0x50de7e,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0x30')]=function(_0x390a1a){try{if(this[_0x2ddb('0x5c')](_0x390a1a)){logger[_0x2ddb('0x4a')](_0x2ddb('0xd3'),_0x390a1a[_0x2ddb('0x4c')],util['inspect'](_0x390a1a,{'showHidden':![],'depth':null}));var _0x5b4234;var _0x47aa3e;var _0xa4b877;if(this['queueReports'][_0x390a1a[_0x2ddb('0xd4')]]){_0x5b4234=_[_0x2ddb('0x7c')](this['queueReports'][_0x390a1a['transfereeuniqueid']]);_0x5b4234['transferexten']=_0x390a1a[_0x2ddb('0xd5')];_0x5b4234[_0x2ddb('0xd6')]=_0x390a1a[_0x2ddb('0xd7')];_0x5b4234[_0x2ddb('0x9d')]='ATTENDEDTRANSFER';_0x5b4234['transfer']=!![];_0x5b4234['transfertype']=_0x2ddb('0xd8');if(this[_0x2ddb('0x10')][_0x390a1a[_0x2ddb('0xd7')]]){_0xa4b877=this[_0x2ddb('0x10')][_0x390a1a[_0x2ddb('0xd7')]];this[_0x2ddb('0x10')][_0x390a1a[_0x2ddb('0xd7')]]=this[_0x2ddb('0x10')][_0x390a1a['transfereeuniqueid']];this[_0x2ddb('0x10')][_0x390a1a[_0x2ddb('0xd4')]]=_0xa4b877;_0x47aa3e=_[_0x2ddb('0x7c')](this[_0x2ddb('0x10')][_0x390a1a[_0x2ddb('0xd4')]]);_0x47aa3e['switch']=!![];}logger[_0x2ddb('0x84')](_0x2ddb('0xd9'),_0x390a1a[_0x2ddb('0x4c')],_0x5b4234['queue'],_0x5b4234[_0x2ddb('0x57')],_0x5b4234[_0x2ddb('0xa1')],_0x5b4234[_0x2ddb('0xd6')]);}else if(this[_0x2ddb('0x10')][_0x390a1a[_0x2ddb('0xda')]]){_0x5b4234=_[_0x2ddb('0x7c')](this[_0x2ddb('0x10')][_0x390a1a['transfertargetuniqueid']]);_0x5b4234[_0x2ddb('0xa1')]=_0x390a1a[_0x2ddb('0xdb')];_0x5b4234[_0x2ddb('0xd6')]=_0x390a1a[_0x2ddb('0xdc')];_0x5b4234['queuecallerexitreason']=_0x2ddb('0x54');_0x5b4234[_0x2ddb('0x93')]=!![];_0x5b4234[_0x2ddb('0x9f')]=_0x2ddb('0xd8');if(this['queueReports'][_0x390a1a['origtransfereruniqueid']]){_0xa4b877=this[_0x2ddb('0x10')][_0x390a1a[_0x2ddb('0xdc')]];this[_0x2ddb('0x10')][_0x390a1a[_0x2ddb('0xdc')]]=this[_0x2ddb('0x10')][_0x390a1a[_0x2ddb('0xda')]];this[_0x2ddb('0x10')][_0x390a1a[_0x2ddb('0xda')]]=_0xa4b877;_0x47aa3e=_[_0x2ddb('0x7c')](this[_0x2ddb('0x10')][_0x390a1a[_0x2ddb('0xda')]]);_0x47aa3e[_0x2ddb('0xdd')]=!![];}logger[_0x2ddb('0x84')](_0x2ddb('0xd9'),_0x390a1a[_0x2ddb('0x4c')],_0x5b4234[_0x2ddb('0x4e')],_0x5b4234[_0x2ddb('0x57')],_0x5b4234[_0x2ddb('0xa1')],_0x5b4234[_0x2ddb('0xd6')]);}else if(this[_0x2ddb('0x10')][_0x390a1a['origtransfereruniqueid']]){_0x5b4234=_['last'](this['queueReports'][_0x390a1a[_0x2ddb('0xdc')]]);_0x5b4234[_0x2ddb('0xa1')]=_0x390a1a[_0x2ddb('0xdb')];_0x5b4234['transferuniqueid']=_0x390a1a[_0x2ddb('0xdc')];_0x5b4234[_0x2ddb('0x9d')]=_0x2ddb('0x54');_0x5b4234[_0x2ddb('0x93')]=!![];_0x5b4234[_0x2ddb('0x9f')]=_0x2ddb('0xd8');_0x5b4234[_0x2ddb('0xdd')]=!![];_0x5b4234[_0x2ddb('0xd2')]=_0x390a1a['transfereeuniqueid'];}else if(this['queueReports'][_0x390a1a[_0x2ddb('0xd7')]]){_0x5b4234=_[_0x2ddb('0x7c')](this[_0x2ddb('0x10')][_0x390a1a[_0x2ddb('0xd7')]]);_0x5b4234[_0x2ddb('0xa1')]=_0x390a1a[_0x2ddb('0xd5')];_0x5b4234[_0x2ddb('0xd6')]=_0x390a1a[_0x2ddb('0xd7')];_0x5b4234[_0x2ddb('0x9d')]='ATTENDEDTRANSFER';_0x5b4234[_0x2ddb('0x93')]=!![];_0x5b4234['transfertype']=_0x2ddb('0xd8');_0x5b4234[_0x2ddb('0xdd')]=!![];_0x5b4234['transferid']=_0x390a1a['transfertargetuniqueid'];}}}catch(_0x2a4b81){logger['error'](_0x2ddb('0xd3'),_0x390a1a[_0x2ddb('0x4c')],util[_0x2ddb('0x43')](_0x2a4b81,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncBlindTransfer']=function(_0x17dda5){try{if(this['isNotNull'](_0x17dda5)){logger[_0x2ddb('0x4a')]('[%s][voiceQueueReport][blindtransfer]',_0x17dda5[_0x2ddb('0x4c')],util['inspect'](_0x17dda5,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x17dda5[_0x2ddb('0xd4')]]){var _0x38c3f8=_[_0x2ddb('0x7c')](this[_0x2ddb('0x10')][_0x17dda5[_0x2ddb('0xd4')]]);_0x38c3f8[_0x2ddb('0x9d')]=_0x2ddb('0xde');_0x38c3f8[_0x2ddb('0x93')]=!![];_0x38c3f8[_0x2ddb('0x9f')]=_0x2ddb('0xdf');_0x38c3f8[_0x2ddb('0xa1')]=_0x17dda5[_0x2ddb('0xe0')];_0x38c3f8['transferuniqueid']=_0x17dda5['transfereeuniqueid'];logger[_0x2ddb('0x84')](_0x2ddb('0xe1'),_0x17dda5[_0x2ddb('0x4c')],_0x38c3f8[_0x2ddb('0x4e')],_0x38c3f8[_0x2ddb('0x57')],_0x38c3f8[_0x2ddb('0xa1')],_0x38c3f8[_0x2ddb('0xd6')]);this['syncHangup']({'event':_0x2ddb('0xe2'),'uniqueid':_0x17dda5['transfereeuniqueid'],'context':_0x17dda5[_0x2ddb('0xe3')],'channel':_0x17dda5[_0x2ddb('0xe4')]});}}}catch(_0x10f126){logger[_0x2ddb('0x41')](_0x2ddb('0xe5'),_0x17dda5[_0x2ddb('0x4c')],util[_0x2ddb('0x43')](_0x10f126,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x2ddb('0xe6')]=function(_0x3e9c03){try{if(this[_0x2ddb('0x5c')](_0x3e9c03)){logger[_0x2ddb('0x4a')](_0x2ddb('0xe7'),_0x3e9c03[_0x2ddb('0x4c')],util[_0x2ddb('0x43')](_0x3e9c03,{'showHidden':![],'depth':null}));if(this[_0x2ddb('0x10')][_0x3e9c03[_0x2ddb('0x4c')]]){var _0xf8b817=_[_0x2ddb('0x7c')](this[_0x2ddb('0x10')][_0x3e9c03[_0x2ddb('0x4c')]]);if(!_[_0x2ddb('0x3b')](_0xf8b817[_0x2ddb('0x87')])){_0xf8b817[_0x2ddb('0xe8')]=moment()[_0x2ddb('0x4d')](_0x2ddb('0x72'));logger[_0x2ddb('0x84')](_0x2ddb('0xe9'),_0x3e9c03[_0x2ddb('0x4c')],_0xf8b817[_0x2ddb('0xe8')]);}}}}catch(_0x30df61){logger[_0x2ddb('0x41')]('[%s][voiceQueueReport][musiconholdstart]',_0x3e9c03[_0x2ddb('0x4c')],util[_0x2ddb('0x43')](_0x30df61,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2ddb('0xb')]['syncMusicOnHoldStop']=function(_0x2802fe){try{if(this['isNotNull'](_0x2802fe)){logger[_0x2ddb('0x4a')]('[%s][voiceQueueReport][musiconholdstop]',_0x2802fe['uniqueid'],util[_0x2ddb('0x43')](_0x2802fe,{'showHidden':![],'depth':null}));if(this[_0x2ddb('0x10')][_0x2802fe[_0x2ddb('0x4c')]]){var _0x3320d9=_[_0x2ddb('0x7c')](this[_0x2ddb('0x10')][_0x2802fe['uniqueid']]);if(!_['isNil'](_0x3320d9[_0x2ddb('0xe8')])){_0x3320d9['mohtime']+=moment()[_0x2ddb('0xbe')](0x0)['diff'](_0x3320d9[_0x2ddb('0xe8')],_0x2ddb('0x9c'));logger['info'](_0x2ddb('0xea'),_0x2802fe[_0x2ddb('0x4c')],_0x3320d9['mohtime']);delete _0x3320d9[_0x2ddb('0xe8')];}}}}catch(_0x1101f9){logger[_0x2ddb('0x41')](_0x2ddb('0xeb'),_0x2802fe['uniqueid'],util[_0x2ddb('0x43')](_0x1101f9,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x2ddb('0xb')][_0x2ddb('0xec')]=function(_0x10cacd){try{if(this[_0x2ddb('0x5c')](_0x10cacd)){logger[_0x2ddb('0x4a')]('[%s][voiceQueueReport][newexten]\x20event:',_0x10cacd['uniqueid'],util[_0x2ddb('0x43')](_0x10cacd,{'showHidden':![],'depth':null}));if(_0x10cacd[_0x2ddb('0xed')][_0x2ddb('0x98')]()===_0x2ddb('0xee')){_0x10cacd[_0x2ddb('0xef')]=_0x10cacd[_0x2ddb('0xf0')]&&_0x10cacd[_0x2ddb('0xf0')][_0x2ddb('0x97')](_0x2ddb('0xf1'))?_0x10cacd[_0x2ddb('0xf0')]:(_0x10cacd[_0x2ddb('0xf0')]||_0x10cacd[_0x2ddb('0xef')])[_0x2ddb('0x98')]();if(_['startsWith'](_0x10cacd[_0x2ddb('0xef')]['toLowerCase'](),_0x2ddb('0xf2'))){logger[_0x2ddb('0x84')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x10cacd[_0x2ddb('0x4c')],_0x10cacd[_0x2ddb('0xed')],_0x10cacd[_0x2ddb('0xef')]);if(_['isUndefined'](this[_0x2ddb('0x13')][_0x10cacd[_0x2ddb('0x4c')]]))this[_0x2ddb('0x13')][_0x10cacd['uniqueid']]={};var _0x71f50a=_0x10cacd['applicationdata'][_0x2ddb('0xf3')]('=');var _0x476d66=_0x71f50a[0x0][_0x2ddb('0x98')]()[_0x2ddb('0xf4')](/cdr\((.*)\)/);if(_0x476d66)this[_0x2ddb('0x13')][_0x10cacd['uniqueid']][_0x476d66[0x1]]=_0x71f50a[0x1];}}}}catch(_0x53e5a7){logger[_0x2ddb('0x41')](_0x2ddb('0xf5'),_0x10cacd[_0x2ddb('0x4c')],util['inspect'](_0x53e5a7,{'showHidden':![],'depth':null}));}};module[_0x2ddb('0xf6')]=VoiceQueueReport;
\ No newline at end of file
index 9fe5da7..1c860cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59a4=['Request','CreateReportAgentPreview','../client','createHistory','campaign','queue'];(function(_0x2e8889,_0xcd72f9){var _0x19dae6=function(_0x4a7100){while(--_0x4a7100){_0x2e8889['push'](_0x2e8889['shift']());}};_0x19dae6(++_0xcd72f9);}(_0x59a4,0x1e8));var _0x459a=function(_0x2e58c7,_0x23d092){_0x2e58c7=_0x2e58c7-0x0;var _0x26eb00=_0x59a4[_0x2e58c7];return _0x26eb00;};'use strict';var client=require(_0x459a('0x0'));exports[_0x459a('0x1')]=function(_0x306e6a){return function(){_0x306e6a[_0x459a('0x2')]=_0x306e6a[_0x459a('0x3')];return client[_0x459a('0x4')](_0x459a('0x5'),{'body':_0x306e6a,'log':'CreateReportAgentPreview'});};};
\ No newline at end of file
+var _0x762e=['../client','queue','Request','CreateReportAgentPreview'];(function(_0x3d4426,_0x1200ae){var _0xabf3fb=function(_0x12c89b){while(--_0x12c89b){_0x3d4426['push'](_0x3d4426['shift']());}};_0xabf3fb(++_0x1200ae);}(_0x762e,0x170));var _0xe762=function(_0x314de1,_0x1bf45f){_0x314de1=_0x314de1-0x0;var _0x205277=_0x762e[_0x314de1];return _0x205277;};'use strict';var client=require(_0xe762('0x0'));exports['createHistory']=function(_0x6ea895){return function(){_0x6ea895['campaign']=_0x6ea895[_0xe762('0x1')];return client[_0xe762('0x2')](_0xe762('0x3'),{'body':_0x6ea895,'log':_0xe762('0x3')});};};
\ No newline at end of file
index 7962bbe..a91bfe2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa150=['../client','Request','CreateAttachment'];(function(_0xd2e2ab,_0x2440cf){var _0x1703a2=function(_0x23deba){while(--_0x23deba){_0xd2e2ab['push'](_0xd2e2ab['shift']());}};_0x1703a2(++_0x2440cf);}(_0xa150,0x1ad));var _0x0a15=function(_0x47f6e2,_0x3de9e7){_0x47f6e2=_0x47f6e2-0x0;var _0x42be8e=_0xa150[_0x47f6e2];return _0x42be8e;};'use strict';var client=require(_0x0a15('0x0'));exports['create']=function(_0x5bfc63){return client[_0x0a15('0x1')](_0x0a15('0x2'),{'body':_0x5bfc63,'log':_0x0a15('0x2')});};
\ No newline at end of file
+var _0x0362=['CreateAttachment','../client'];(function(_0x8234f5,_0x4ad0d6){var _0x230534=function(_0x442f78){while(--_0x442f78){_0x8234f5['push'](_0x8234f5['shift']());}};_0x230534(++_0x4ad0d6);}(_0x0362,0x15d));var _0x2036=function(_0x3a58bf,_0x214ead){_0x3a58bf=_0x3a58bf-0x0;var _0x4959de=_0x0362[_0x3a58bf];return _0x4959de;};'use strict';var client=require(_0x2036('0x0'));exports['create']=function(_0x28b59e){return client['Request'](_0x2036('0x1'),{'body':_0x28b59e,'log':_0x2036('0x1')});};
\ No newline at end of file
index cd5693e..28f718b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['Interval','interval','SquareProject','getCampaign','getCampaigns','Request','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','TrunkBackup','callerid'];(function(_0xf52513,_0x28c4ce){var _0x2ba7a9=function(_0x543e06){while(--_0x543e06){_0xf52513['push'](_0xf52513['shift']());}};_0x2ba7a9(++_0x28c4ce);}(_0x1261,0x144));var _0x1126=function(_0x208bc9,_0x4f36f6){_0x208bc9=_0x208bc9-0x0;var _0x2675a8=_0x1261[_0x208bc9];return _0x2675a8;};'use strict';var client=require('../client');exports[_0x1126('0x0')]=function(){return function(){return client[_0x1126('0x1')](_0x1126('0x2'),{'options':{'raw':![],'attributes':['id',_0x1126('0x3'),_0x1126('0x4'),_0x1126('0x5'),_0x1126('0x6'),_0x1126('0x7'),_0x1126('0x8'),_0x1126('0x9'),'dialCongestionMaxRetry','dialCongestionRetryFrequency',_0x1126('0xa'),_0x1126('0xb'),'dialNoAnswerMaxRetry',_0x1126('0xc'),_0x1126('0xd'),_0x1126('0xe'),_0x1126('0xf'),_0x1126('0x10'),'dialDropRetryFrequency',_0x1126('0x11'),_0x1126('0x12'),_0x1126('0x13'),'dialMachineRetryFrequency',_0x1126('0x14'),'dialAgentRejectRetryFrequency','dialTimezone',_0x1126('0x15'),'dialAMDActive',_0x1126('0x16'),_0x1126('0x17'),_0x1126('0x18'),_0x1126('0x19'),_0x1126('0x1a'),_0x1126('0x1b'),_0x1126('0x1c'),_0x1126('0x1d'),_0x1126('0x1e'),'dialOrderByScheduledAt','dialPrefix',_0x1126('0x1f'),_0x1126('0x20')],'include':[{'model':_0x1126('0x21'),'as':'Trunk','attributes':['id',_0x1126('0x3'),'callerid',_0x1126('0x5')]},{'model':_0x1126('0x21'),'as':_0x1126('0x22'),'attributes':['id','name',_0x1126('0x23'),_0x1126('0x5')]},{'model':'Interval','as':'Interval','attributes':['id',_0x1126('0x3')],'include':[{'model':_0x1126('0x24'),'as':'Intervals','attributes':['id','name',_0x1126('0x25')]}]},{'model':'SquareProject','as':_0x1126('0x26'),'attributes':['id',_0x1126('0x3')]}]},'log':_0x1126('0x27')});};};
\ No newline at end of file
+var _0x2ef3=['dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumWordLength','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','active','TrunkBackup','Interval','Intervals','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry'];(function(_0x231dda,_0x5b04cc){var _0x3f88cb=function(_0x16eb77){while(--_0x16eb77){_0x231dda['push'](_0x231dda['shift']());}};_0x3f88cb(++_0x5b04cc);}(_0x2ef3,0xba));var _0x32ef=function(_0x4c02c8,_0xd3e0d0){_0x4c02c8=_0x4c02c8-0x0;var _0x599f87=_0x2ef3[_0x4c02c8];return _0x599f87;};'use strict';var client=require(_0x32ef('0x0'));exports[_0x32ef('0x1')]=function(){return function(){return client[_0x32ef('0x2')](_0x32ef('0x3'),{'options':{'raw':![],'attributes':['id',_0x32ef('0x4'),_0x32ef('0x5'),'active',_0x32ef('0x6'),_0x32ef('0x7'),'dialOriginateCallerIdNumber',_0x32ef('0x8'),_0x32ef('0x9'),'dialCongestionRetryFrequency','dialBusyMaxRetry',_0x32ef('0xa'),_0x32ef('0xb'),_0x32ef('0xc'),_0x32ef('0xd'),_0x32ef('0xe'),_0x32ef('0xf'),_0x32ef('0x10'),_0x32ef('0x11'),_0x32ef('0x12'),_0x32ef('0x13'),'dialMachineMaxRetry','dialMachineRetryFrequency',_0x32ef('0x14'),_0x32ef('0x15'),_0x32ef('0x16'),_0x32ef('0x17'),'dialAMDActive',_0x32ef('0x18'),'dialAMDGreeting',_0x32ef('0x19'),'dialAMDTotalAnalysisTime',_0x32ef('0x1a'),_0x32ef('0x1b'),'dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold',_0x32ef('0x1c'),'dialOrderByScheduledAt',_0x32ef('0x1d'),_0x32ef('0x1e'),_0x32ef('0x1f')],'include':[{'model':_0x32ef('0x20'),'as':'Trunk','attributes':['id','name','callerid',_0x32ef('0x21')]},{'model':_0x32ef('0x20'),'as':_0x32ef('0x22'),'attributes':['id','name','callerid',_0x32ef('0x21')]},{'model':_0x32ef('0x23'),'as':_0x32ef('0x23'),'attributes':['id','name'],'include':[{'model':_0x32ef('0x23'),'as':_0x32ef('0x24'),'attributes':['id','name',_0x32ef('0x25')]}]},{'model':_0x32ef('0x26'),'as':_0x32ef('0x26'),'attributes':['id',_0x32ef('0x4')]}]},'log':_0x32ef('0x27')});};};
\ No newline at end of file
index b102925..58f64b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x140a=['getContacts','createContact','Request','CreateCmContact'];(function(_0x566ac0,_0x567cb3){var _0x1998b5=function(_0x836dac){while(--_0x836dac){_0x566ac0['push'](_0x566ac0['shift']());}};_0x1998b5(++_0x567cb3);}(_0x140a,0xa1));var _0xa140=function(_0x6cf19c,_0x2f3f02){_0x6cf19c=_0x6cf19c-0x0;var _0xce14f3=_0x140a[_0x6cf19c];return _0xce14f3;};'use strict';var client=require('../client');exports[_0xa140('0x0')]=function(_0x11e077){return function(){return client[_0xa140('0x1')](_0xa140('0x2'),{'body':_0x11e077,'log':_0xa140('0x2')});};};exports[_0xa140('0x3')]=function(_0x3749d0){return function(){return client[_0xa140('0x1')]('GetCmContact',{'options':_0x3749d0,'log':'GetCmContact'});};};
\ No newline at end of file
+var _0x6cc3=['CreateCmContact','getContacts','Request','GetCmContact'];(function(_0x110579,_0x241f97){var _0x4c4e6b=function(_0x306e2c){while(--_0x306e2c){_0x110579['push'](_0x110579['shift']());}};_0x4c4e6b(++_0x241f97);}(_0x6cc3,0x74));var _0x36cc=function(_0x5311e8,_0x57c5bb){_0x5311e8=_0x5311e8-0x0;var _0x582ad8=_0x6cc3[_0x5311e8];return _0x582ad8;};'use strict';var client=require('../client');exports['createContact']=function(_0x4184f8){return function(){return client['Request']('CreateCmContact',{'body':_0x4184f8,'log':_0x36cc('0x0')});};};exports[_0x36cc('0x1')]=function(_0x1ccd12){return function(){return client[_0x36cc('0x2')](_0x36cc('0x3'),{'options':_0x1ccd12,'log':'GetCmContact'});};};
\ No newline at end of file
index 134136d..623ea90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe55d=['UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','priority','scheduledat','ASC','GetContactDialer','getContactDialerIvr','DESC','GetContactDialerIvr','campaign','ContactId','ListId','MoveContactManagedDialer','countReScheduled','CountReScheduled','GetCmHopperPreview','User','Agent','name','VoiceQueue','Queue','getCmHopper','unlockContact','getContactRecallMe','voicePause','db.CmHopper.UserId','ResetActiveCalls','handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','../client','moment','Request','GetCmHopper','CmContact','Contact','updateContacts'];(function(_0x3f6825,_0xa348c8){var _0x324b3c=function(_0x3c77a1){while(--_0x3c77a1){_0x3f6825['push'](_0x3f6825['shift']());}};_0x324b3c(++_0xa348c8);}(_0xe55d,0x126));var _0xde55=function(_0x25b4e4,_0x5da42a){_0x25b4e4=_0x25b4e4-0x0;var _0x18df1a=_0xe55d[_0x25b4e4];return _0x18df1a;};'use strict';var client=require(_0xde55('0x0'));var moment=require(_0xde55('0x1'));exports['getContacts']=function(_0x2feb9d,_0x144148){return function(){return client[_0xde55('0x2')](_0xde55('0x3'),{'options':{'where':{'VoiceQueueId':_0x2feb9d},'include':[{'model':_0xde55('0x4'),'as':_0xde55('0x5')}],'limit':_0x144148,'raw':![]},'log':'getCmHopper'});};};exports[_0xde55('0x6')]=function(_0x295f54,_0x3b2c0a,_0x55d5fa){return function(){return client[_0xde55('0x2')](_0xde55('0x7'),{'body':_0x295f54,'options':{'where':{'VoiceQueueId':_0x3b2c0a,'scheduledat':{'$lte':moment()[_0xde55('0x8')](_0xde55('0x9'))}},'limit':_0x55d5fa},'log':_0xde55('0x7')});};};exports[_0xde55('0xa')]=function(_0x51f649){return client[_0xde55('0x2')](_0xde55('0x7'),{'body':_0x51f649,'options':{'where':{'ContactId':_0x51f649['ContactId'],'ListId':_0x51f649['ListId'],'VoiceQueueId':_0x51f649[_0xde55('0xb')],'CampaignId':_0x51f649[_0xde55('0xc')]}},'log':'rescheduleContact'});};exports[_0xde55('0xd')]=function(_0x23edbf,_0x49e5ae,_0x31c776){return function(){return client[_0xde55('0x2')](_0xde55('0xe'),{'options':{'where':{'VoiceQueueId':_0x23edbf,'ListId':_0x49e5ae,'ContactId':_0x31c776}},'log':'DestroyCmHopper'});};};exports[_0xde55('0xf')]=function(_0x1f756a,_0xe667a3,_0x3d3584,_0x81ea0f){return client[_0xde55('0x2')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x1f756a,'active':![],'scheduledat':{'$lte':moment()['format'](_0xde55('0x9'))},'$or':[{'UserId':null},{'UserId':{'$in':_0xe667a3}}]},'order':[[_0xde55('0x10'),'DESC'],[_0xde55('0x11'),_0x81ea0f],['id',_0xde55('0x12')]],'raw':!![],'limit':_0x3d3584},'log':_0xde55('0x13')});};exports[_0xde55('0x14')]=function(_0x2f4a77,_0x8bd0c8,_0x2411a4){return client[_0xde55('0x2')](_0xde55('0x13'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x2f4a77,'active':![],'scheduledat':{'$lte':moment()[_0xde55('0x8')](_0xde55('0x9'))}},'include':[{'model':_0xde55('0x4'),'as':_0xde55('0x5')}],'order':[['priority',_0xde55('0x15')],['scheduledat',_0x2411a4],['id',_0xde55('0x12')]],'raw':!![],'limit':_0x8bd0c8},'log':_0xde55('0x16')});};exports['moveContactManagedDialer']=function(_0x2dc9b9,_0x5c2991){_0x2dc9b9[_0xde55('0x17')]=_0x2dc9b9['queue'];return client[_0xde55('0x2')]('MoveContactManagedDialer',{'body':_0x2dc9b9,'options':{'where':{'ContactId':_0x2dc9b9[_0xde55('0x18')],'ListId':_0x2dc9b9[_0xde55('0x19')],'VoiceQueueId':_0x2dc9b9[_0xde55('0xb')],'CampaignId':_0x2dc9b9[_0xde55('0xc')],'active':_0x5c2991?undefined:!![]}},'log':_0xde55('0x1a')});};exports[_0xde55('0x1b')]=function(_0xbafeab){return client[_0xde55('0x2')](_0xde55('0x1c'),{'options':{'where':{'VoiceQueueId':_0xbafeab['id']?_0xbafeab['id']||null:null}},'log':'countReScheduled'});};exports['getContactPreview']=function(_0x409881){return function(){return client[_0xde55('0x2')](_0xde55('0x1d'),{'options':{'where':{'id':_0x409881},'include':[{'model':_0xde55('0x4'),'as':_0xde55('0x5')},{'model':_0xde55('0x1e'),'as':_0xde55('0x1f'),'attributes':['id',_0xde55('0x20')]},{'model':_0xde55('0x21'),'as':_0xde55('0x22'),'attributes':['id',_0xde55('0x20')]}],'raw':!![]},'log':_0xde55('0x23')});};};exports[_0xde55('0x24')]=function(_0x494f10,_0x498706,_0x2073c1){return client['Request'](_0xde55('0x7'),{'body':_0x494f10,'options':{'where':{'id':_0x498706},'limit':_0x2073c1},'log':_0xde55('0x7')});};exports[_0xde55('0x25')]=function(_0x5592e7,_0x408165){return function(){return client[_0xde55('0x2')]('GetContactRecallMe',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x5592e7,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xde55('0x8')](_0xde55('0x9'))},'UserId':{'$in':_0x408165}},'order':[[_0xde55('0x10'),'DESC'],['scheduledat',_0xde55('0x15')],['id',_0xde55('0x12')]],'include':[{'model':_0xde55('0x4'),'as':_0xde55('0x5')},{'model':_0xde55('0x1e'),'as':_0xde55('0x1f'),'attributes':['id','name',_0xde55('0x26')]}],'group':_0xde55('0x27'),'raw':!![]},'log':_0xde55('0x13')});};};exports['resetActiveCalls']=function(_0x3ee702,_0xc52bbf){return client[_0xde55('0x2')](_0xde55('0x28'),{'body':_0x3ee702,'options':_0xc52bbf||{},'log':_0xde55('0x28')});};exports[_0xde55('0x29')]=function(_0x23e499,_0x58bac3,_0x43c8eb){return function(){return client[_0xde55('0x2')](_0xde55('0x2a'),{'body':{'where':{'voiceQueueIds':_0x23e499,'interval':_0x58bac3,'availableAgentsIds':_0x43c8eb}},'log':'handlePreviewRecallNotifications'});};};
\ No newline at end of file
+var _0xdbfa=['handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','Request','GetCmHopper','Contact','getCmHopper','updateContacts','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','GetContactDialer','priority','DESC','scheduledat','ASC','getContactDialerIvr','CmContact','GetContactDialerIvr','moveContactManagedDialer','campaign','queue','countReScheduled','CountReScheduled','GetCmHopperPreview','User','Agent','name','Queue','getContactRecallMe','GetContactRecallMe','voicePause','db.CmHopper.UserId','resetActiveCalls','ResetActiveCalls'];(function(_0x46401e,_0x2a345b){var _0x447cba=function(_0x54ea97){while(--_0x54ea97){_0x46401e['push'](_0x46401e['shift']());}};_0x447cba(++_0x2a345b);}(_0xdbfa,0x128));var _0xadbf=function(_0x19a856,_0x39d20e){_0x19a856=_0x19a856-0x0;var _0x187777=_0xdbfa[_0x19a856];return _0x187777;};'use strict';var client=require('../client');var moment=require('moment');exports['getContacts']=function(_0xbe0e7b,_0x534d5d){return function(){return client[_0xadbf('0x0')](_0xadbf('0x1'),{'options':{'where':{'VoiceQueueId':_0xbe0e7b},'include':[{'model':'CmContact','as':_0xadbf('0x2')}],'limit':_0x534d5d,'raw':![]},'log':_0xadbf('0x3')});};};exports[_0xadbf('0x4')]=function(_0x11d4ae,_0xd2abca,_0x5bad41){return function(){return client[_0xadbf('0x0')](_0xadbf('0x5'),{'body':_0x11d4ae,'options':{'where':{'VoiceQueueId':_0xd2abca,'scheduledat':{'$lte':moment()[_0xadbf('0x6')](_0xadbf('0x7'))}},'limit':_0x5bad41},'log':'UpdateCmHopper'});};};exports[_0xadbf('0x8')]=function(_0xbacf16){return client[_0xadbf('0x0')]('UpdateCmHopper',{'body':_0xbacf16,'options':{'where':{'ContactId':_0xbacf16[_0xadbf('0x9')],'ListId':_0xbacf16[_0xadbf('0xa')],'VoiceQueueId':_0xbacf16[_0xadbf('0xb')],'CampaignId':_0xbacf16[_0xadbf('0xc')]}},'log':_0xadbf('0x8')});};exports[_0xadbf('0xd')]=function(_0x1a9bcc,_0x11b6c1,_0x53e912){return function(){return client[_0xadbf('0x0')](_0xadbf('0xe'),{'options':{'where':{'VoiceQueueId':_0x1a9bcc,'ListId':_0x11b6c1,'ContactId':_0x53e912}},'log':'DestroyCmHopper'});};};exports[_0xadbf('0xf')]=function(_0x4484a9,_0x557422,_0x4d9947,_0x1ec136){return client['Request'](_0xadbf('0x10'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x4484a9,'active':![],'scheduledat':{'$lte':moment()[_0xadbf('0x6')](_0xadbf('0x7'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x557422}}]},'order':[[_0xadbf('0x11'),_0xadbf('0x12')],[_0xadbf('0x13'),_0x1ec136],['id',_0xadbf('0x14')]],'raw':!![],'limit':_0x4d9947},'log':_0xadbf('0x10')});};exports[_0xadbf('0x15')]=function(_0x59712,_0x363a34,_0x3e9de1){return client['Request'](_0xadbf('0x10'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x59712,'active':![],'scheduledat':{'$lte':moment()[_0xadbf('0x6')](_0xadbf('0x7'))}},'include':[{'model':_0xadbf('0x16'),'as':_0xadbf('0x2')}],'order':[[_0xadbf('0x11'),'DESC'],[_0xadbf('0x13'),_0x3e9de1],['id',_0xadbf('0x14')]],'raw':!![],'limit':_0x363a34},'log':_0xadbf('0x17')});};exports[_0xadbf('0x18')]=function(_0x38a7e4,_0x12536e){_0x38a7e4[_0xadbf('0x19')]=_0x38a7e4[_0xadbf('0x1a')];return client[_0xadbf('0x0')]('MoveContactManagedDialer',{'body':_0x38a7e4,'options':{'where':{'ContactId':_0x38a7e4[_0xadbf('0x9')],'ListId':_0x38a7e4[_0xadbf('0xa')],'VoiceQueueId':_0x38a7e4[_0xadbf('0xb')],'CampaignId':_0x38a7e4[_0xadbf('0xc')],'active':_0x12536e?undefined:!![]}},'log':'MoveContactManagedDialer'});};exports[_0xadbf('0x1b')]=function(_0x3f9e1b){return client[_0xadbf('0x0')](_0xadbf('0x1c'),{'options':{'where':{'VoiceQueueId':_0x3f9e1b['id']?_0x3f9e1b['id']||null:null}},'log':_0xadbf('0x1b')});};exports['getContactPreview']=function(_0x4b4b05){return function(){return client['Request'](_0xadbf('0x1d'),{'options':{'where':{'id':_0x4b4b05},'include':[{'model':_0xadbf('0x16'),'as':_0xadbf('0x2')},{'model':_0xadbf('0x1e'),'as':_0xadbf('0x1f'),'attributes':['id',_0xadbf('0x20')]},{'model':'VoiceQueue','as':_0xadbf('0x21'),'attributes':['id',_0xadbf('0x20')]}],'raw':!![]},'log':_0xadbf('0x3')});};};exports['unlockContact']=function(_0x199853,_0x3bf39e,_0x302dab){return client[_0xadbf('0x0')](_0xadbf('0x5'),{'body':_0x199853,'options':{'where':{'id':_0x3bf39e},'limit':_0x302dab},'log':_0xadbf('0x5')});};exports[_0xadbf('0x22')]=function(_0x56e624,_0x4d1015){return function(){return client[_0xadbf('0x0')](_0xadbf('0x23'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x56e624,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xadbf('0x6')]('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x4d1015}},'order':[[_0xadbf('0x11'),_0xadbf('0x12')],[_0xadbf('0x13'),'DESC'],['id',_0xadbf('0x14')]],'include':[{'model':_0xadbf('0x16'),'as':'Contact'},{'model':_0xadbf('0x1e'),'as':_0xadbf('0x1f'),'attributes':['id',_0xadbf('0x20'),_0xadbf('0x24')]}],'group':_0xadbf('0x25'),'raw':!![]},'log':_0xadbf('0x10')});};};exports[_0xadbf('0x26')]=function(_0x12b51b,_0xfa41e9){return client[_0xadbf('0x0')](_0xadbf('0x27'),{'body':_0x12b51b,'options':_0xfa41e9||{},'log':_0xadbf('0x27')});};exports[_0xadbf('0x28')]=function(_0x5c2014,_0x3f097e,_0x5c6b8f){return function(){return client[_0xadbf('0x0')](_0xadbf('0x29'),{'body':{'where':{'voiceQueueIds':_0x5c2014,'interval':_0x3f097e,'availableAgentsIds':_0x5c6b8f}},'log':_0xadbf('0x28')});};};
\ No newline at end of file
index 9cc47ae..ee4a550 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d28=['SwapAdditionalPhones','incrementPreviewCounters','IncrementPreviewCounters','../client','verifyAdditionalPhones','Request','VerifyAdditionalPhones','swapAdditionalPhones'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x4d28,0x1c3));var _0x84d2=function(_0x564dff,_0x32bdc5){_0x564dff=_0x564dff-0x0;var _0x283988=_0x4d28[_0x564dff];return _0x283988;};'use strict';var client=require(_0x84d2('0x0'));exports[_0x84d2('0x1')]=function(_0x8e863b,_0xf3c076,_0x414283){return client[_0x84d2('0x2')](_0x84d2('0x3'),{'body':_0x8e863b,'reason':_0xf3c076,'entity':_0x414283,'log':_0x84d2('0x3')});};exports[_0x84d2('0x4')]=function(_0x46f58f,_0x50a3f4,_0x339fac){return client[_0x84d2('0x2')]('SwapAdditionalPhones',{'body':_0x46f58f,'duration':_0x50a3f4,'waitTime':_0x339fac,'log':_0x84d2('0x5')});};exports[_0x84d2('0x6')]=function(_0x20985d){return function(){return client[_0x84d2('0x2')](_0x84d2('0x7'),{'body':_0x20985d,'log':'IncrementPreviewCounters'});};};
\ No newline at end of file
+var _0x2b44=['verifyAdditionalPhones','Request','VerifyAdditionalPhones','swapAdditionalPhones','SwapAdditionalPhones','incrementPreviewCounters','IncrementPreviewCounters','../client'];(function(_0x4c0ef4,_0x4ba344){var _0x4a6d88=function(_0x2de1e8){while(--_0x2de1e8){_0x4c0ef4['push'](_0x4c0ef4['shift']());}};_0x4a6d88(++_0x4ba344);}(_0x2b44,0x11f));var _0x42b4=function(_0x1c1779,_0x3e1b90){_0x1c1779=_0x1c1779-0x0;var _0x40eea8=_0x2b44[_0x1c1779];return _0x40eea8;};'use strict';var client=require(_0x42b4('0x0'));exports[_0x42b4('0x1')]=function(_0x1d4f2a,_0x27bfe1,_0x471470){return client[_0x42b4('0x2')](_0x42b4('0x3'),{'body':_0x1d4f2a,'reason':_0x27bfe1,'entity':_0x471470,'log':_0x42b4('0x3')});};exports[_0x42b4('0x4')]=function(_0x3dc236,_0x46d51f,_0x280d4a){return client[_0x42b4('0x2')]('SwapAdditionalPhones',{'body':_0x3dc236,'duration':_0x46d51f,'waitTime':_0x280d4a,'log':_0x42b4('0x5')});};exports[_0x42b4('0x6')]=function(_0x314547){return function(){return client[_0x42b4('0x2')](_0x42b4('0x7'),{'body':_0x314547,'log':'IncrementPreviewCounters'});};};
\ No newline at end of file
index e0a30df..11f454d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xced9=['GetCmHopperBlack','CampaignId','GetCmHopperBlackIvr','../client','checkIsBlackList','Request','phone','checkIsBlackListIvr'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xced9,0x6b));var _0x9ced=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xced9[_0x4baae2];return _0x1a2285;};'use strict';var client=require(_0x9ced('0x0'));exports[_0x9ced('0x1')]=function(_0x2c4d97){return client[_0x9ced('0x2')]('GetCmHopperBlack',{'options':{'where':{'VoiceQueueId':_0x2c4d97['VoiceQueueId'],'phone':_0x2c4d97[_0x9ced('0x3')]},'raw':![]},'log':'GetCmHopperBlack'});};exports[_0x9ced('0x4')]=function(_0x221c98){return client[_0x9ced('0x2')](_0x9ced('0x5'),{'options':{'where':{'CampaignId':_0x221c98[_0x9ced('0x6')],'phone':_0x221c98[_0x9ced('0x3')]},'raw':![]},'log':_0x9ced('0x7')});};
\ No newline at end of file
+var _0x56a6=['VoiceQueueId','GetCmHopperBlack','checkIsBlackListIvr','CampaignId','phone','GetCmHopperBlackIvr','../client','Request'];(function(_0x476f3c,_0x4a0b88){var _0x9a6ab3=function(_0x5c213d){while(--_0x5c213d){_0x476f3c['push'](_0x476f3c['shift']());}};_0x9a6ab3(++_0x4a0b88);}(_0x56a6,0x96));var _0x656a=function(_0x54ba88,_0x5353bf){_0x54ba88=_0x54ba88-0x0;var _0x18c387=_0x56a6[_0x54ba88];return _0x18c387;};'use strict';var client=require(_0x656a('0x0'));exports['checkIsBlackList']=function(_0x2b90a1){return client[_0x656a('0x1')]('GetCmHopperBlack',{'options':{'where':{'VoiceQueueId':_0x2b90a1[_0x656a('0x2')],'phone':_0x2b90a1['phone']},'raw':![]},'log':_0x656a('0x3')});};exports[_0x656a('0x4')]=function(_0x144236){return client['Request'](_0x656a('0x3'),{'options':{'where':{'CampaignId':_0x144236[_0x656a('0x5')],'phone':_0x144236[_0x656a('0x6')]},'raw':![]},'log':_0x656a('0x7')});};
\ No newline at end of file
index ef0d72e..06a5679 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30d0=['createContact','campaign','queue','Request','CreateCmHopperFinal'];(function(_0x5ad757,_0x36fbc6){var _0x235969=function(_0x15e136){while(--_0x15e136){_0x5ad757['push'](_0x5ad757['shift']());}};_0x235969(++_0x36fbc6);}(_0x30d0,0x186));var _0x030d=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x30d0[_0x19950b];return _0x3c6b41;};'use strict';var client=require('../client');exports[_0x030d('0x0')]=function(_0x14e9a2){return function(){_0x14e9a2[_0x030d('0x1')]=_0x14e9a2[_0x030d('0x2')];return client[_0x030d('0x3')](_0x030d('0x4'),{'body':_0x14e9a2,'log':_0x030d('0x4')});};};
\ No newline at end of file
+var _0x589d=['Request','CreateCmHopperFinal','../client','createContact','campaign','queue'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x589d,0xda));var _0xd589=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x589d[_0x42cae2];return _0x5f256f;};'use strict';var client=require(_0xd589('0x0'));exports[_0xd589('0x1')]=function(_0x15d380){return function(){_0x15d380[_0xd589('0x2')]=_0x15d380[_0xd589('0x3')];return client[_0xd589('0x4')](_0xd589('0x5'),{'body':_0x15d380,'log':'CreateCmHopperFinal'});};};
\ No newline at end of file
index c26af8b..d1aa201 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cc1=['format','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','day','YYYY-MM-DD\x20HH:mm:ss','endOf','queue','GetCampaignHopperHistory','ivr','createHistory','campaign','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','subtract','minutes'];(function(_0x4b2863,_0x494899){var _0x567d67=function(_0x751f03){while(--_0x751f03){_0x4b2863['push'](_0x4b2863['shift']());}};_0x567d67(++_0x494899);}(_0x7cc1,0x118));var _0x17cc=function(_0x12ed5d,_0x3194b4){_0x12ed5d=_0x12ed5d-0x0;var _0x3fadd0=_0x7cc1[_0x12ed5d];return _0x3fadd0;};'use strict';var client=require('../client');var moment=require('moment');exports[_0x17cc('0x0')]=function(_0x3f1f9d){_0x3f1f9d[_0x17cc('0x1')]=_0x3f1f9d['queue'];return client[_0x17cc('0x2')](_0x17cc('0x3'),{'body':_0x3f1f9d,'log':'CreateCmHopperHistory'});};exports[_0x17cc('0x4')]=function(_0x49b938){return client[_0x17cc('0x2')](_0x17cc('0x5'),{'options':{'where':{'endtime':{'$between':[moment()[_0x17cc('0x6')](_0x49b938,_0x17cc('0x7'))[_0x17cc('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x17cc('0x8')]('YYYY-MM-DD\x20HH:mm:ss')]}},'raw':![]},'log':'GetCmHopperHistory'});};exports[_0x17cc('0x9')]=function(){return function(){return client[_0x17cc('0x2')](_0x17cc('0xa'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x17cc('0xb')](_0x17cc('0xc'))[_0x17cc('0x8')](_0x17cc('0xd')),moment()[_0x17cc('0xe')](_0x17cc('0xc'))[_0x17cc('0x8')](_0x17cc('0xd'))]},'campaigntype':_0x17cc('0xf')},'raw':![]},'log':_0x17cc('0xa')});};};exports['getCampaignHopperHistory']=function(){return function(){return client[_0x17cc('0x2')](_0x17cc('0x10'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x17cc('0xb')]('day')[_0x17cc('0x8')](_0x17cc('0xd')),moment()[_0x17cc('0xe')](_0x17cc('0xc'))[_0x17cc('0x8')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x17cc('0x11')},'raw':![]},'log':_0x17cc('0x10')});};};
\ No newline at end of file
+var _0x8328=['campaign','queue','Request','CreateCmHopperHistory','avgHandleTime','AvgHandleTime','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','startOf','day','endOf','GetVoiceQueueHopperHistory','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','../client','moment','createHistory'];(function(_0x3b7df9,_0xed259d){var _0x433784=function(_0x30f10f){while(--_0x30f10f){_0x3b7df9['push'](_0x3b7df9['shift']());}};_0x433784(++_0xed259d);}(_0x8328,0x1e0));var _0x8832=function(_0x268475,_0x495ac0){_0x268475=_0x268475-0x0;var _0x65f9ff=_0x8328[_0x268475];return _0x65f9ff;};'use strict';var client=require(_0x8832('0x0'));var moment=require(_0x8832('0x1'));exports[_0x8832('0x2')]=function(_0x29cbe8){_0x29cbe8[_0x8832('0x3')]=_0x29cbe8[_0x8832('0x4')];return client[_0x8832('0x5')](_0x8832('0x6'),{'body':_0x29cbe8,'log':_0x8832('0x6')});};exports[_0x8832('0x7')]=function(_0x140e7d){return client[_0x8832('0x5')](_0x8832('0x8'),{'options':{'where':{'endtime':{'$between':[moment()['subtract'](_0x140e7d,_0x8832('0x9'))[_0x8832('0xa')](_0x8832('0xb')),moment()['format'](_0x8832('0xb'))]}},'raw':![]},'log':_0x8832('0xc')});};exports[_0x8832('0xd')]=function(){return function(){return client[_0x8832('0x5')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0x8832('0xe')](_0x8832('0xf'))[_0x8832('0xa')](_0x8832('0xb')),moment()[_0x8832('0x10')](_0x8832('0xf'))['format'](_0x8832('0xb'))]},'campaigntype':_0x8832('0x4')},'raw':![]},'log':_0x8832('0x11')});};};exports[_0x8832('0x12')]=function(){return function(){return client['Request'](_0x8832('0x13'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0x8832('0xf'))[_0x8832('0xa')](_0x8832('0xb')),moment()[_0x8832('0x10')]('day')[_0x8832('0xa')](_0x8832('0xb'))]},'campaigntype':_0x8832('0x14')},'raw':![]},'log':_0x8832('0x13')});};};
\ No newline at end of file
index 540335d..f2b4a17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2cf=['NotifyFaxAccount','getFaxAccounts','GetFaxAccount','description','ecm','headerinfo','localstationid','maxrate','modem','t38timeout','tech','key','Trunk','active','getFaxAccount','Request'];(function(_0x5ce848,_0x4c8981){var _0x14bde2=function(_0x1137f3){while(--_0x1137f3){_0x5ce848['push'](_0x5ce848['shift']());}};_0x14bde2(++_0x4c8981);}(_0xe2cf,0x1a1));var _0xfe2c=function(_0x183256,_0x1a596d){_0x183256=_0x183256-0x0;var _0x5394a2=_0xe2cf[_0x183256];return _0x5394a2;};'use strict';var client=require('../client');exports[_0xfe2c('0x0')]=function(){return function(){return client['Request'](_0xfe2c('0x1'),{'options':{'raw':![],'attributes':['id','name',_0xfe2c('0x2'),_0xfe2c('0x3'),_0xfe2c('0x4'),_0xfe2c('0x5'),'minrate',_0xfe2c('0x6'),_0xfe2c('0x7'),'gateway','faxdetect',_0xfe2c('0x8'),_0xfe2c('0x9'),'TrunkId','ListId',_0xfe2c('0xa')],'include':[{'model':_0xfe2c('0xb'),'as':_0xfe2c('0xb'),'attributes':['id','name','callerid',_0xfe2c('0xc')]}]},'log':_0xfe2c('0xd')});};};exports['notify']=function(_0x22278c,_0x5d752d){return client[_0xfe2c('0xe')](_0xfe2c('0xf'),{'account':{'id':_0x22278c},'body':_0x5d752d,'log':_0xfe2c('0xf')});};
\ No newline at end of file
+var _0x3ef7=['localstationid','minrate','maxrate','modem','faxdetect','t38timeout','tech','TrunkId','ListId','Trunk','callerid','active','getFaxAccount','notify','NotifyFaxAccount','../client','Request','GetFaxAccount','name','description','ecm'];(function(_0x40951a,_0x2cbe60){var _0xdb2028=function(_0x134fa6){while(--_0x134fa6){_0x40951a['push'](_0x40951a['shift']());}};_0xdb2028(++_0x2cbe60);}(_0x3ef7,0xa2));var _0x73ef=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x3ef7[_0x2dafbe];return _0x58a45a;};'use strict';var client=require(_0x73ef('0x0'));exports['getFaxAccounts']=function(){return function(){return client[_0x73ef('0x1')](_0x73ef('0x2'),{'options':{'raw':![],'attributes':['id',_0x73ef('0x3'),_0x73ef('0x4'),_0x73ef('0x5'),'headerinfo',_0x73ef('0x6'),_0x73ef('0x7'),_0x73ef('0x8'),_0x73ef('0x9'),'gateway',_0x73ef('0xa'),_0x73ef('0xb'),_0x73ef('0xc'),_0x73ef('0xd'),_0x73ef('0xe'),'key'],'include':[{'model':_0x73ef('0xf'),'as':_0x73ef('0xf'),'attributes':['id','name',_0x73ef('0x10'),_0x73ef('0x11')]}]},'log':_0x73ef('0x12')});};};exports[_0x73ef('0x13')]=function(_0x33aa09,_0x4cad5a){return client[_0x73ef('0x1')](_0x73ef('0x14'),{'account':{'id':_0x33aa09},'body':_0x4cad5a,'log':_0x73ef('0x14')});};
\ No newline at end of file
index 6cc6009..6d5a6df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc63e=['Request','UpdateFaxMessage'];(function(_0x28a98a,_0x114ae0){var _0x1e4648=function(_0x3b8f71){while(--_0x3b8f71){_0x28a98a['push'](_0x28a98a['shift']());}};_0x1e4648(++_0x114ae0);}(_0xc63e,0x1de));var _0xec63=function(_0x8c1005,_0x1f3f16){_0x8c1005=_0x8c1005-0x0;var _0x175354=_0xc63e[_0x8c1005];return _0x175354;};'use strict';var client=require('../client');exports['update']=function(_0x487e60,_0x5599b5){return client[_0xec63('0x0')](_0xec63('0x1'),{'body':_0x5599b5,'options':{'where':{'AttachmentId':_0x487e60}},'log':_0xec63('0x1')});};
\ No newline at end of file
+var _0xbf7e=['../client','update','Request','UpdateFaxMessage'];(function(_0x4e9fcd,_0x57235e){var _0x5daee8=function(_0x454bea){while(--_0x454bea){_0x4e9fcd['push'](_0x4e9fcd['shift']());}};_0x5daee8(++_0x57235e);}(_0xbf7e,0x15c));var _0xebf7=function(_0x29b591,_0x1ceb0b){_0x29b591=_0x29b591-0x0;var _0xa52bcc=_0xbf7e[_0x29b591];return _0xa52bcc;};'use strict';var client=require(_0xebf7('0x0'));exports[_0xebf7('0x1')]=function(_0x1de08f,_0x367d56){return client[_0xebf7('0x2')]('UpdateFaxMessage',{'body':_0x367d56,'options':{'where':{'AttachmentId':_0x1de08f}},'log':_0xebf7('0x3')});};
\ No newline at end of file
index a3c7aa4..ff54e6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bf6=['Tag','Tags','GetDeskAccount','getDeskAccounts','Request','name','description','password','remoteUri','authType','type','serverUrl','DeskConfiguration','Configurations','DeskField','Subjects','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','nameField','customField'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0x2bf6,0x198));var _0x62bf=function(_0xdb166b,_0x28ed75){_0xdb166b=_0xdb166b-0x0;var _0x30234d=_0x2bf6[_0xdb166b];return _0x30234d;};'use strict';var client=require('../../client');exports[_0x62bf('0x0')]=function(){return function(_0x949437){return client[_0x62bf('0x1')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id',_0x62bf('0x2'),_0x62bf('0x3'),'username',_0x62bf('0x4'),_0x62bf('0x5'),_0x62bf('0x6'),_0x62bf('0x7'),_0x62bf('0x8')],'include':[{'model':_0x62bf('0x9'),'as':_0x62bf('0xa'),'attributes':['id','name'],'include':[{'model':_0x62bf('0xb'),'as':_0x62bf('0xc'),'attributes':['id',_0x62bf('0x7'),_0x62bf('0xd'),_0x62bf('0xe')],'include':[{'model':_0x62bf('0xf'),'as':_0x62bf('0xf'),'attributes':['id','name']}]},{'model':'DeskField','as':_0x62bf('0x10'),'attributes':['id','type',_0x62bf('0xd'),_0x62bf('0x11'),_0x62bf('0x12'),_0x62bf('0x13'),_0x62bf('0xe')],'include':[{'model':'Variable','as':_0x62bf('0xf'),'attributes':['id','name']}]},{'model':'DeskField','as':_0x62bf('0x14'),'attributes':['id',_0x62bf('0x7'),_0x62bf('0xd'),_0x62bf('0x15'),_0x62bf('0x16'),_0x62bf('0x17'),'variableName'],'include':[{'model':_0x62bf('0xf'),'as':_0x62bf('0xf'),'attributes':['id',_0x62bf('0x2')]}]},{'model':_0x62bf('0x18'),'as':_0x62bf('0x19'),'attributes':['id',_0x62bf('0x2')]}]}]},'log':_0x62bf('0x1a')});};};
\ No newline at end of file
+var _0x436b=['variableName','Tag','Tags','../../client','GetDeskAccount','name','description','password','remoteUri','authType','type','serverUrl','DeskConfiguration','Subjects','content','Variable','DeskField','Descriptions','key','keyType','keyContent','idField','nameField','customField'];(function(_0x1b756d,_0x5e0421){var _0x416125=function(_0x19ae2b){while(--_0x19ae2b){_0x1b756d['push'](_0x1b756d['shift']());}};_0x416125(++_0x5e0421);}(_0x436b,0x10b));var _0xb436=function(_0x35f6af,_0x505074){_0x35f6af=_0x35f6af-0x0;var _0x4ae86a=_0x436b[_0x35f6af];return _0x4ae86a;};'use strict';var client=require(_0xb436('0x0'));exports['getDeskAccounts']=function(){return function(_0x520ac4){return client['Request'](_0xb436('0x1'),{'options':{'raw':![],'attributes':['id',_0xb436('0x2'),_0xb436('0x3'),'username',_0xb436('0x4'),_0xb436('0x5'),_0xb436('0x6'),_0xb436('0x7'),_0xb436('0x8')],'include':[{'model':_0xb436('0x9'),'as':'Configurations','attributes':['id',_0xb436('0x2')],'include':[{'model':'DeskField','as':_0xb436('0xa'),'attributes':['id',_0xb436('0x7'),_0xb436('0xb'),'variableName'],'include':[{'model':_0xb436('0xc'),'as':'Variable','attributes':['id',_0xb436('0x2')]}]},{'model':_0xb436('0xd'),'as':_0xb436('0xe'),'attributes':['id',_0xb436('0x7'),_0xb436('0xb'),_0xb436('0xf'),_0xb436('0x10'),_0xb436('0x11'),'variableName'],'include':[{'model':_0xb436('0xc'),'as':'Variable','attributes':['id','name']}]},{'model':_0xb436('0xd'),'as':'Fields','attributes':['id',_0xb436('0x7'),_0xb436('0xb'),_0xb436('0x12'),_0xb436('0x13'),_0xb436('0x14'),_0xb436('0x15')],'include':[{'model':_0xb436('0xc'),'as':_0xb436('0xc'),'attributes':['id','name']}]},{'model':_0xb436('0x16'),'as':_0xb436('0x17'),'attributes':['id',_0xb436('0x2')]}]}]},'log':_0xb436('0x1')});};};
\ No newline at end of file
index b38f929..37aaf69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8caf=['keyContent','Fields','idField','customField','CloudProvider','data2','data7','getDynamics365Accounts','Request','GetDynamics365Account','name','username','remoteUri','tenantId','clientId','clientSecret','serverUrl','description','Dynamics365Configuration','Configurations','ticketType','openNewTab','Subjects','type','content','variableName','Variable','Dynamics365Field','Descriptions','key'];(function(_0x157cc7,_0x1a4089){var _0x4d71b3=function(_0x495352){while(--_0x495352){_0x157cc7['push'](_0x157cc7['shift']());}};_0x4d71b3(++_0x1a4089);}(_0x8caf,0x1ab));var _0xf8ca=function(_0x35ead7,_0x453d3a){_0x35ead7=_0x35ead7-0x0;var _0x33b761=_0x8caf[_0x35ead7];return _0x33b761;};'use strict';var client=require('../../client');exports[_0xf8ca('0x0')]=function(){return function(_0x215811){return client[_0xf8ca('0x1')](_0xf8ca('0x2'),{'options':{'raw':![],'attributes':['id',_0xf8ca('0x3'),_0xf8ca('0x4'),'password',_0xf8ca('0x5'),_0xf8ca('0x6'),_0xf8ca('0x7'),_0xf8ca('0x8'),_0xf8ca('0x9'),_0xf8ca('0xa'),'modernAuthentication'],'include':[{'model':_0xf8ca('0xb'),'as':_0xf8ca('0xc'),'attributes':['id',_0xf8ca('0x3'),_0xf8ca('0xd'),'moduleCreate','additionalSearchContact',_0xf8ca('0xe')],'include':[{'model':'Dynamics365Field','as':_0xf8ca('0xf'),'attributes':['id',_0xf8ca('0x10'),_0xf8ca('0x11'),_0xf8ca('0x12')],'include':[{'model':'Variable','as':_0xf8ca('0x13'),'attributes':['id',_0xf8ca('0x3')]}]},{'model':_0xf8ca('0x14'),'as':_0xf8ca('0x15'),'attributes':['id','type',_0xf8ca('0x11'),_0xf8ca('0x16'),'keyType',_0xf8ca('0x17'),_0xf8ca('0x12')],'include':[{'model':_0xf8ca('0x13'),'as':_0xf8ca('0x13'),'attributes':['id',_0xf8ca('0x3')]}]},{'model':_0xf8ca('0x14'),'as':_0xf8ca('0x18'),'attributes':['id',_0xf8ca('0x10'),_0xf8ca('0x11'),_0xf8ca('0x19'),'nameField',_0xf8ca('0x1a'),_0xf8ca('0x12')],'include':[{'model':_0xf8ca('0x13'),'as':_0xf8ca('0x13'),'attributes':['id',_0xf8ca('0x3')]}]}]},{'model':_0xf8ca('0x1b'),'as':_0xf8ca('0x1b'),'attributes':['id',_0xf8ca('0x1c'),'data5',_0xf8ca('0x1d')]}]},'log':_0xf8ca('0x2')});};};
\ No newline at end of file
+var _0xa45c=['ticketType','moduleCreate','additionalSearchContact','Dynamics365Field','Subjects','type','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','idField','nameField','customField','CloudProvider','data5','data7','../../client','getDynamics365Accounts','GetDynamics365Account','username','remoteUri','clientSecret','serverUrl','description','modernAuthentication','Configurations','name'];(function(_0x2e0858,_0x502ae5){var _0x43578d=function(_0x454e27){while(--_0x454e27){_0x2e0858['push'](_0x2e0858['shift']());}};_0x43578d(++_0x502ae5);}(_0xa45c,0x6d));var _0xca45=function(_0x34d925,_0x41fc18){_0x34d925=_0x34d925-0x0;var _0x40158d=_0xa45c[_0x34d925];return _0x40158d;};'use strict';var client=require(_0xca45('0x0'));exports[_0xca45('0x1')]=function(){return function(_0x4a63e1){return client['Request'](_0xca45('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xca45('0x3'),'password',_0xca45('0x4'),'tenantId','clientId',_0xca45('0x5'),_0xca45('0x6'),_0xca45('0x7'),_0xca45('0x8')],'include':[{'model':'Dynamics365Configuration','as':_0xca45('0x9'),'attributes':['id',_0xca45('0xa'),_0xca45('0xb'),_0xca45('0xc'),_0xca45('0xd'),'openNewTab'],'include':[{'model':_0xca45('0xe'),'as':_0xca45('0xf'),'attributes':['id',_0xca45('0x10'),_0xca45('0x11'),_0xca45('0x12')],'include':[{'model':_0xca45('0x13'),'as':_0xca45('0x13'),'attributes':['id','name']}]},{'model':_0xca45('0xe'),'as':_0xca45('0x14'),'attributes':['id',_0xca45('0x10'),_0xca45('0x11'),'key',_0xca45('0x15'),_0xca45('0x16'),_0xca45('0x12')],'include':[{'model':'Variable','as':_0xca45('0x13'),'attributes':['id','name']}]},{'model':_0xca45('0xe'),'as':_0xca45('0x17'),'attributes':['id',_0xca45('0x10'),_0xca45('0x11'),_0xca45('0x18'),_0xca45('0x19'),_0xca45('0x1a'),'variableName'],'include':[{'model':_0xca45('0x13'),'as':'Variable','attributes':['id','name']}]}]},{'model':_0xca45('0x1b'),'as':_0xca45('0x1b'),'attributes':['id','data2',_0xca45('0x1c'),_0xca45('0x1d')]}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
index 7b69e5c..39d71a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee4e=['keyContent','idField','nameField','customField','../../client','getFreshdeskAccounts','GetFreshdeskAccount','name','username','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag','FreshdeskField','type','content','variableName','Variable','key','keyType'];(function(_0x297d7a,_0x5b5e91){var _0x569563=function(_0x1bf17c){while(--_0x1bf17c){_0x297d7a['push'](_0x297d7a['shift']());}};_0x569563(++_0x5b5e91);}(_0xee4e,0x122));var _0xeee4=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xee4e[_0xf50820];return _0x2a9b10;};'use strict';var client=require(_0xeee4('0x0'));exports[_0xeee4('0x1')]=function(){return function(_0x6ba261){return client['Request'](_0xeee4('0x2'),{'options':{'raw':![],'attributes':['id',_0xeee4('0x3'),_0xeee4('0x4'),_0xeee4('0x5'),_0xeee4('0x6'),_0xeee4('0x7')],'include':[{'model':_0xeee4('0x8'),'as':_0xeee4('0x9'),'attributes':['id','name'],'include':[{'model':_0xeee4('0xa'),'attributes':['id',_0xeee4('0x3')]},{'model':_0xeee4('0xb'),'as':'Subjects','attributes':['id',_0xeee4('0xc'),_0xeee4('0xd'),_0xeee4('0xe')],'include':[{'model':'Variable','as':_0xeee4('0xf'),'attributes':['id',_0xeee4('0x3')]}]},{'model':_0xeee4('0xb'),'as':'Descriptions','attributes':['id',_0xeee4('0xc'),'content',_0xeee4('0x10'),_0xeee4('0x11'),_0xeee4('0x12'),'variableName'],'include':[{'model':_0xeee4('0xf'),'as':_0xeee4('0xf'),'attributes':['id',_0xeee4('0x3')]}]},{'model':_0xeee4('0xb'),'as':'Fields','attributes':['id','type',_0xeee4('0xd'),_0xeee4('0x13'),_0xeee4('0x14'),_0xeee4('0x15'),_0xeee4('0xe')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xeee4('0x3')]}]}]}]},'log':_0xeee4('0x2')});};};
\ No newline at end of file
+var _0xcf66=['Variable','Descriptions','key','keyType','keyContent','Fields','idField','customField','../../client','getFreshdeskAccounts','GetFreshdeskAccount','name','remoteUri','serverUrl','Configurations','Tag','FreshdeskField','Subjects','type','content','variableName'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0xcf66,0x71));var _0x6cf6=function(_0x5eddde,_0x58b4a3){_0x5eddde=_0x5eddde-0x0;var _0x390864=_0xcf66[_0x5eddde];return _0x390864;};'use strict';var client=require(_0x6cf6('0x0'));exports[_0x6cf6('0x1')]=function(){return function(_0x3ec413){return client['Request'](_0x6cf6('0x2'),{'options':{'raw':![],'attributes':['id',_0x6cf6('0x3'),'username','apiKey',_0x6cf6('0x4'),_0x6cf6('0x5')],'include':[{'model':'FreshdeskConfiguration','as':_0x6cf6('0x6'),'attributes':['id',_0x6cf6('0x3')],'include':[{'model':_0x6cf6('0x7'),'attributes':['id','name']},{'model':_0x6cf6('0x8'),'as':_0x6cf6('0x9'),'attributes':['id',_0x6cf6('0xa'),_0x6cf6('0xb'),_0x6cf6('0xc')],'include':[{'model':_0x6cf6('0xd'),'as':'Variable','attributes':['id','name']}]},{'model':'FreshdeskField','as':_0x6cf6('0xe'),'attributes':['id','type',_0x6cf6('0xb'),_0x6cf6('0xf'),_0x6cf6('0x10'),_0x6cf6('0x11'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x6cf6('0x3')]}]},{'model':_0x6cf6('0x8'),'as':_0x6cf6('0x12'),'attributes':['id',_0x6cf6('0xa'),_0x6cf6('0xb'),_0x6cf6('0x13'),'nameField',_0x6cf6('0x14'),'variableName'],'include':[{'model':_0x6cf6('0xd'),'as':_0x6cf6('0xd'),'attributes':['id','name']}]}]}]},'log':_0x6cf6('0x2')});};};
\ No newline at end of file
index af7a3f1..a406cc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ab=['Variable','Descriptions','keyType','keyContent','GetFreshsalesccount','getFreshsalesAccounts','Request','name','username','apiKey','remoteUri','serverUrl','FreshsalesConfiguration','Configurations','FreshsalesField','Subjects','type','content','variableName'];(function(_0x185ca8,_0x79bbcd){var _0x1198d7=function(_0x366cb2){while(--_0x366cb2){_0x185ca8['push'](_0x185ca8['shift']());}};_0x1198d7(++_0x79bbcd);}(_0x71ab,0x64));var _0xb71a=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x71ab[_0x432682];return _0x463d05;};'use strict';var client=require('../../client');exports[_0xb71a('0x0')]=function(){return function(_0x4d5607){return client[_0xb71a('0x1')]('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id',_0xb71a('0x2'),_0xb71a('0x3'),_0xb71a('0x4'),_0xb71a('0x5'),_0xb71a('0x6')],'include':[{'model':_0xb71a('0x7'),'as':_0xb71a('0x8'),'attributes':['id',_0xb71a('0x2')],'include':[{'model':_0xb71a('0x9'),'as':_0xb71a('0xa'),'attributes':['id',_0xb71a('0xb'),_0xb71a('0xc'),_0xb71a('0xd')],'include':[{'model':_0xb71a('0xe'),'as':_0xb71a('0xe'),'attributes':['id',_0xb71a('0x2')]}]},{'model':_0xb71a('0x9'),'as':_0xb71a('0xf'),'attributes':['id','type',_0xb71a('0xc'),'key',_0xb71a('0x10'),_0xb71a('0x11'),_0xb71a('0xd')],'include':[{'model':'Variable','as':_0xb71a('0xe'),'attributes':['id','name']}]}]}]},'log':_0xb71a('0x12')});};};
\ No newline at end of file
+var _0xbd51=['content','variableName','Variable','Descriptions','key','keyType','keyContent','GetFreshsalesccount','../../client','Request','GetFreshsalesAccount','name','FreshsalesConfiguration','Configurations','Subjects','type'];(function(_0x1842c0,_0x52093f){var _0x4c79bc=function(_0x20e44f){while(--_0x20e44f){_0x1842c0['push'](_0x1842c0['shift']());}};_0x4c79bc(++_0x52093f);}(_0xbd51,0x1a8));var _0x1bd5=function(_0x37ce24,_0x37ea05){_0x37ce24=_0x37ce24-0x0;var _0x2bb264=_0xbd51[_0x37ce24];return _0x2bb264;};'use strict';var client=require(_0x1bd5('0x0'));exports['getFreshsalesAccounts']=function(){return function(_0x16551f){return client[_0x1bd5('0x1')](_0x1bd5('0x2'),{'options':{'raw':![],'attributes':['id',_0x1bd5('0x3'),'username','apiKey','remoteUri','serverUrl'],'include':[{'model':_0x1bd5('0x4'),'as':_0x1bd5('0x5'),'attributes':['id',_0x1bd5('0x3')],'include':[{'model':'FreshsalesField','as':_0x1bd5('0x6'),'attributes':['id',_0x1bd5('0x7'),_0x1bd5('0x8'),_0x1bd5('0x9')],'include':[{'model':_0x1bd5('0xa'),'as':'Variable','attributes':['id',_0x1bd5('0x3')]}]},{'model':'FreshsalesField','as':_0x1bd5('0xb'),'attributes':['id',_0x1bd5('0x7'),_0x1bd5('0x8'),_0x1bd5('0xc'),_0x1bd5('0xd'),_0x1bd5('0xe'),'variableName'],'include':[{'model':_0x1bd5('0xa'),'as':'Variable','attributes':['id',_0x1bd5('0x3')]}]}]}]},'log':_0x1bd5('0xf')});};};
\ No newline at end of file
index ee230ef..b90b76e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa596=['GetSalesforceAccount','name','username','password','remoteUri','clientId','clientSecret','serverUrl','type','SalesforceConfiguration','Configurations','moduleSearch','ticketType','additionalSearchAccount','SalesforceField','Subjects','Variable','Fields','../../client','getSalesforceAccounts','Request'];(function(_0x58f9a8,_0x46cc13){var _0x551362=function(_0x4af943){while(--_0x4af943){_0x58f9a8['push'](_0x58f9a8['shift']());}};_0x551362(++_0x46cc13);}(_0xa596,0x7b));var _0x6a59=function(_0x4b2aef,_0x4254c5){_0x4b2aef=_0x4b2aef-0x0;var _0x40d1e7=_0xa596[_0x4b2aef];return _0x40d1e7;};'use strict';var client=require(_0x6a59('0x0'));exports[_0x6a59('0x1')]=function(){return function(_0x5b127f){return client[_0x6a59('0x2')](_0x6a59('0x3'),{'options':{'raw':![],'attributes':['id',_0x6a59('0x4'),_0x6a59('0x5'),_0x6a59('0x6'),_0x6a59('0x7'),_0x6a59('0x8'),_0x6a59('0x9'),'securityToken',_0x6a59('0xa'),_0x6a59('0xb')],'include':[{'model':_0x6a59('0xc'),'as':_0x6a59('0xd'),'attributes':['id',_0x6a59('0x4'),_0x6a59('0xe'),'moduleCreate',_0x6a59('0xf'),'leadId',_0x6a59('0x10'),'additionalSearchContact','additionalSearchLead'],'include':[{'model':_0x6a59('0x11'),'as':_0x6a59('0x12'),'include':[{'model':_0x6a59('0x13'),'as':'Variable','attributes':['id',_0x6a59('0x4')]}]},{'model':_0x6a59('0x11'),'as':'Descriptions','include':[{'model':_0x6a59('0x13'),'as':'Variable','attributes':['id',_0x6a59('0x4')]}]},{'model':_0x6a59('0x11'),'as':_0x6a59('0x14'),'include':[{'model':_0x6a59('0x13'),'as':_0x6a59('0x13'),'attributes':['id',_0x6a59('0x4')]}]}]}]},'log':_0x6a59('0x3')});};};
\ No newline at end of file
+var _0x225b=['securityToken','serverUrl','type','SalesforceConfiguration','Configurations','name','moduleCreate','ticketType','leadId','additionalSearchAccount','additionalSearchLead','SalesforceField','Subjects','Variable','Descriptions','Fields','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','username','remoteUri','clientSecret'];(function(_0x31abee,_0x11ff0c){var _0x3c1761=function(_0x2b5062){while(--_0x2b5062){_0x31abee['push'](_0x31abee['shift']());}};_0x3c1761(++_0x11ff0c);}(_0x225b,0xb1));var _0xb225=function(_0x109d9e,_0x3a6afe){_0x109d9e=_0x109d9e-0x0;var _0x301619=_0x225b[_0x109d9e];return _0x301619;};'use strict';var client=require(_0xb225('0x0'));exports[_0xb225('0x1')]=function(){return function(_0x4e01e1){return client[_0xb225('0x2')](_0xb225('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xb225('0x4'),'password',_0xb225('0x5'),'clientId',_0xb225('0x6'),_0xb225('0x7'),_0xb225('0x8'),_0xb225('0x9')],'include':[{'model':_0xb225('0xa'),'as':_0xb225('0xb'),'attributes':['id',_0xb225('0xc'),'moduleSearch',_0xb225('0xd'),_0xb225('0xe'),_0xb225('0xf'),_0xb225('0x10'),'additionalSearchContact',_0xb225('0x11')],'include':[{'model':_0xb225('0x12'),'as':_0xb225('0x13'),'include':[{'model':'Variable','as':_0xb225('0x14'),'attributes':['id',_0xb225('0xc')]}]},{'model':_0xb225('0x12'),'as':_0xb225('0x15'),'include':[{'model':_0xb225('0x14'),'as':'Variable','attributes':['id',_0xb225('0xc')]}]},{'model':_0xb225('0x12'),'as':_0xb225('0x16'),'include':[{'model':_0xb225('0x14'),'as':_0xb225('0x14'),'attributes':['id','name']}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
index 413e185..6cc0af6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2fe=['type','variableName','Variable','keyType','Fields','content','nameField','GetServicenowkAccount','../../client','Request','name','description','username','password','email','serverUrl','ServicenowConfiguration','ServicenowField'];(function(_0x41684b,_0xdb047){var _0x384874=function(_0x78828c){while(--_0x78828c){_0x41684b['push'](_0x41684b['shift']());}};_0x384874(++_0xdb047);}(_0xe2fe,0x86));var _0xee2f=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe2fe[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xee2f('0x0'));exports['getServicenowAccounts']=function(){return function(_0x521787){return client[_0xee2f('0x1')]('GetServicenowAccount',{'options':{'raw':![],'attributes':['id',_0xee2f('0x2'),_0xee2f('0x3'),_0xee2f('0x4'),_0xee2f('0x5'),_0xee2f('0x6'),'remoteUri',_0xee2f('0x7')],'include':[{'model':_0xee2f('0x8'),'as':'Configurations','attributes':['id',_0xee2f('0x2')],'include':[{'model':_0xee2f('0x9'),'as':'Subjects','attributes':['id',_0xee2f('0xa'),'content',_0xee2f('0xb')],'include':[{'model':_0xee2f('0xc'),'as':'Variable','attributes':['id',_0xee2f('0x2')]}]},{'model':_0xee2f('0x9'),'as':'Descriptions','attributes':['id','type','content','key',_0xee2f('0xd'),'keyContent','variableName'],'include':[{'model':'Variable','as':_0xee2f('0xc'),'attributes':['id',_0xee2f('0x2')]}]},{'model':_0xee2f('0x9'),'as':_0xee2f('0xe'),'attributes':['id',_0xee2f('0xa'),_0xee2f('0xf'),'idField',_0xee2f('0x10'),'customField',_0xee2f('0xb')],'include':[{'model':_0xee2f('0xc'),'as':'Variable','attributes':['id',_0xee2f('0x2')]}]}]}]},'log':_0xee2f('0x11')});};};
\ No newline at end of file
+var _0xc4aa=['keyContent','Fields','content','idField','nameField','customField','GetServicenowkAccount','../../client','getServicenowAccounts','Request','GetServicenowAccount','name','email','remoteUri','serverUrl','ServicenowConfiguration','Configurations','ServicenowField','Subjects','variableName','Variable','Descriptions','type','key'];(function(_0x86a228,_0x64cc26){var _0x176685=function(_0x32c6d7){while(--_0x32c6d7){_0x86a228['push'](_0x86a228['shift']());}};_0x176685(++_0x64cc26);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x3b0731,_0xcf9925){_0x3b0731=_0x3b0731-0x0;var _0x4204d7=_0xc4aa[_0x3b0731];return _0x4204d7;};'use strict';var client=require(_0xac4a('0x0'));exports[_0xac4a('0x1')]=function(){return function(_0x40a0d0){return client[_0xac4a('0x2')](_0xac4a('0x3'),{'options':{'raw':![],'attributes':['id',_0xac4a('0x4'),'description','username','password',_0xac4a('0x5'),_0xac4a('0x6'),_0xac4a('0x7')],'include':[{'model':_0xac4a('0x8'),'as':_0xac4a('0x9'),'attributes':['id',_0xac4a('0x4')],'include':[{'model':_0xac4a('0xa'),'as':_0xac4a('0xb'),'attributes':['id','type','content',_0xac4a('0xc')],'include':[{'model':_0xac4a('0xd'),'as':_0xac4a('0xd'),'attributes':['id','name']}]},{'model':_0xac4a('0xa'),'as':_0xac4a('0xe'),'attributes':['id',_0xac4a('0xf'),'content',_0xac4a('0x10'),'keyType',_0xac4a('0x11'),'variableName'],'include':[{'model':_0xac4a('0xd'),'as':_0xac4a('0xd'),'attributes':['id',_0xac4a('0x4')]}]},{'model':'ServicenowField','as':_0xac4a('0x12'),'attributes':['id',_0xac4a('0xf'),_0xac4a('0x13'),_0xac4a('0x14'),_0xac4a('0x15'),_0xac4a('0x16'),_0xac4a('0xc')],'include':[{'model':_0xac4a('0xd'),'as':_0xac4a('0xd'),'attributes':['id',_0xac4a('0x4')]}]}]}]},'log':_0xac4a('0x17')});};};
\ No newline at end of file
index 91849ec..d74f0d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66fa=['password','remoteUri','serverUrl','SugarcrmField','Subjects','type','content','Variable','Descriptions','keyType','keyContent','Fields','customField','../../client','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','username'];(function(_0x21009a,_0x5acd53){var _0x411a4c=function(_0x534486){while(--_0x534486){_0x21009a['push'](_0x21009a['shift']());}};_0x411a4c(++_0x5acd53);}(_0x66fa,0x117));var _0xa66f=function(_0x56194b,_0x20c7e4){_0x56194b=_0x56194b-0x0;var _0x5e9f9b=_0x66fa[_0x56194b];return _0x5e9f9b;};'use strict';var client=require(_0xa66f('0x0'));exports[_0xa66f('0x1')]=function(){return function(_0x52947a){return client[_0xa66f('0x2')](_0xa66f('0x3'),{'options':{'raw':![],'attributes':['id',_0xa66f('0x4'),_0xa66f('0x5'),_0xa66f('0x6'),_0xa66f('0x7'),_0xa66f('0x8')],'include':[{'model':'SugarcrmConfiguration','as':'Configurations','attributes':['id',_0xa66f('0x4')],'include':[{'model':_0xa66f('0x9'),'as':_0xa66f('0xa'),'attributes':['id',_0xa66f('0xb'),_0xa66f('0xc'),'variableName'],'include':[{'model':_0xa66f('0xd'),'as':'Variable','attributes':['id',_0xa66f('0x4')]}]},{'model':'SugarcrmField','as':_0xa66f('0xe'),'attributes':['id','type','content','key',_0xa66f('0xf'),_0xa66f('0x10'),'variableName'],'include':[{'model':_0xa66f('0xd'),'as':'Variable','attributes':['id',_0xa66f('0x4')]}]},{'model':'SugarcrmField','as':_0xa66f('0x11'),'attributes':['id',_0xa66f('0xb'),_0xa66f('0xc'),'idField','nameField',_0xa66f('0x12'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xa66f('0x4')]}]}]}]},'log':_0xa66f('0x3')});};};
\ No newline at end of file
+var _0x2032=['GetSugarcrmAccount','getSugarcrmAccounts','Request','name','username','remoteUri','serverUrl','SugarcrmConfiguration','Configurations','SugarcrmField','Subjects','type','content','variableName','Variable','key','keyContent','customField'];(function(_0x379d56,_0x59c3f1){var _0x182c3b=function(_0x504a2c){while(--_0x504a2c){_0x379d56['push'](_0x379d56['shift']());}};_0x182c3b(++_0x59c3f1);}(_0x2032,0xd9));var _0x2203=function(_0x572e4e,_0x285c5c){_0x572e4e=_0x572e4e-0x0;var _0x3f16c0=_0x2032[_0x572e4e];return _0x3f16c0;};'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
index 36f3fa8..3f352a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10d0=['Descriptions','key','keyType','keyContent','VtigerField','idField','nameField','customField','../../client','getVtigerAccounts','Request','name','username','accessKey','remoteUri','VtigerConfiguration','Configurations','Subjects','type','content','variableName','Variable'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0x10d0,0x13c));var _0x010d=function(_0x3f9b69,_0x3c87c0){_0x3f9b69=_0x3f9b69-0x0;var _0x4a4bb1=_0x10d0[_0x3f9b69];return _0x4a4bb1;};'use strict';var client=require(_0x010d('0x0'));exports[_0x010d('0x1')]=function(){return function(_0x4cc755){return client[_0x010d('0x2')]('GetVtigerAccount',{'options':{'raw':![],'attributes':['id',_0x010d('0x3'),'description',_0x010d('0x4'),_0x010d('0x5'),_0x010d('0x6'),'serverUrl'],'include':[{'model':_0x010d('0x7'),'as':_0x010d('0x8'),'attributes':['id',_0x010d('0x3')],'include':[{'model':'VtigerField','as':_0x010d('0x9'),'attributes':['id',_0x010d('0xa'),_0x010d('0xb'),_0x010d('0xc')],'include':[{'model':_0x010d('0xd'),'as':_0x010d('0xd'),'attributes':['id',_0x010d('0x3')]}]},{'model':'VtigerField','as':_0x010d('0xe'),'attributes':['id','type',_0x010d('0xb'),_0x010d('0xf'),_0x010d('0x10'),_0x010d('0x11'),_0x010d('0xc')],'include':[{'model':_0x010d('0xd'),'as':_0x010d('0xd'),'attributes':['id','name']}]},{'model':_0x010d('0x12'),'as':'Fields','attributes':['id',_0x010d('0xa'),_0x010d('0xb'),_0x010d('0x13'),_0x010d('0x14'),_0x010d('0x15'),_0x010d('0xc')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x010d('0x3')]}]}]}]},'log':'GetVtigerAccount'});};};
\ No newline at end of file
+var _0x0b94=['Fields','idField','nameField','GetVtigerAccount','../../client','getVtigerAccounts','Request','name','description','username','accessKey','remoteUri','serverUrl','VtigerConfiguration','Subjects','type','content','variableName','Variable','VtigerField','Descriptions','key','keyType'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0b94,0x174));var _0x40b9=function(_0x55661b,_0x255a28){_0x55661b=_0x55661b-0x0;var _0x270ffc=_0x0b94[_0x55661b];return _0x270ffc;};'use strict';var client=require(_0x40b9('0x0'));exports[_0x40b9('0x1')]=function(){return function(_0x440153){return client[_0x40b9('0x2')]('GetVtigerAccount',{'options':{'raw':![],'attributes':['id',_0x40b9('0x3'),_0x40b9('0x4'),_0x40b9('0x5'),_0x40b9('0x6'),_0x40b9('0x7'),_0x40b9('0x8')],'include':[{'model':_0x40b9('0x9'),'as':'Configurations','attributes':['id',_0x40b9('0x3')],'include':[{'model':'VtigerField','as':_0x40b9('0xa'),'attributes':['id',_0x40b9('0xb'),_0x40b9('0xc'),_0x40b9('0xd')],'include':[{'model':_0x40b9('0xe'),'as':_0x40b9('0xe'),'attributes':['id',_0x40b9('0x3')]}]},{'model':_0x40b9('0xf'),'as':_0x40b9('0x10'),'attributes':['id',_0x40b9('0xb'),'content',_0x40b9('0x11'),_0x40b9('0x12'),'keyContent','variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x40b9('0x3')]}]},{'model':_0x40b9('0xf'),'as':_0x40b9('0x13'),'attributes':['id',_0x40b9('0xb'),'content',_0x40b9('0x14'),_0x40b9('0x15'),'customField',_0x40b9('0xd')],'include':[{'model':_0x40b9('0xe'),'as':_0x40b9('0xe'),'attributes':['id',_0x40b9('0x3')]}]}]}]},'log':_0x40b9('0x16')});};};
\ No newline at end of file
index b251299..7359ad7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee34=['Subjects','type','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','idField','nameField','customField','getZendeskAccounts','Request','GetZendeskAccount','username','password','authType','serverUrl','ZendeskConfiguration','Configurations','name','ZendeskField'];(function(_0xdea41a,_0x552987){var _0x15d0d8=function(_0x1e0d0b){while(--_0x1e0d0b){_0xdea41a['push'](_0xdea41a['shift']());}};_0x15d0d8(++_0x552987);}(_0xee34,0x7f));var _0x4ee3=function(_0x575f6a,_0x2ac04f){_0x575f6a=_0x575f6a-0x0;var _0x2b856d=_0xee34[_0x575f6a];return _0x2b856d;};'use strict';var client=require('../../client');exports[_0x4ee3('0x0')]=function(){return function(_0x150642){return client[_0x4ee3('0x1')](_0x4ee3('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x4ee3('0x3'),_0x4ee3('0x4'),'token','remoteUri',_0x4ee3('0x5'),_0x4ee3('0x6'),'type'],'include':[{'model':_0x4ee3('0x7'),'as':_0x4ee3('0x8'),'attributes':['id',_0x4ee3('0x9')],'include':[{'model':'Tag','attributes':['id','name']},{'model':_0x4ee3('0xa'),'as':_0x4ee3('0xb'),'attributes':['id',_0x4ee3('0xc'),_0x4ee3('0xd'),_0x4ee3('0xe')],'include':[{'model':_0x4ee3('0xf'),'as':_0x4ee3('0xf'),'attributes':['id',_0x4ee3('0x9')]}]},{'model':_0x4ee3('0xa'),'as':_0x4ee3('0x10'),'attributes':['id','type','content','key',_0x4ee3('0x11'),_0x4ee3('0x12'),_0x4ee3('0xe')],'include':[{'model':_0x4ee3('0xf'),'as':_0x4ee3('0xf'),'attributes':['id',_0x4ee3('0x9')]}]},{'model':_0x4ee3('0xa'),'as':_0x4ee3('0x13'),'attributes':['id',_0x4ee3('0xc'),_0x4ee3('0xd'),_0x4ee3('0x14'),_0x4ee3('0x15'),_0x4ee3('0x16'),_0x4ee3('0xe')],'include':[{'model':_0x4ee3('0xf'),'as':_0x4ee3('0xf'),'attributes':['id',_0x4ee3('0x9')]}]}]}]},'log':_0x4ee3('0x2')});};};
\ No newline at end of file
+var _0x9ce5=['nameField','customField','../../client','Request','GetZendeskAccount','name','username','password','token','authType','serverUrl','type','ZendeskConfiguration','Tag','ZendeskField','content','Variable','Descriptions','variableName','Fields'];(function(_0x3c5db0,_0x4fd655){var _0x1b513b=function(_0x4c29f6){while(--_0x4c29f6){_0x3c5db0['push'](_0x3c5db0['shift']());}};_0x1b513b(++_0x4fd655);}(_0x9ce5,0xb6));var _0x59ce=function(_0x4aa4e6,_0x278c45){_0x4aa4e6=_0x4aa4e6-0x0;var _0x322588=_0x9ce5[_0x4aa4e6];return _0x322588;};'use strict';var client=require(_0x59ce('0x0'));exports['getZendeskAccounts']=function(){return function(_0x3c4530){return client[_0x59ce('0x1')](_0x59ce('0x2'),{'options':{'raw':![],'attributes':['id',_0x59ce('0x3'),_0x59ce('0x4'),_0x59ce('0x5'),_0x59ce('0x6'),'remoteUri',_0x59ce('0x7'),_0x59ce('0x8'),_0x59ce('0x9')],'include':[{'model':_0x59ce('0xa'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0x59ce('0xb'),'attributes':['id','name']},{'model':_0x59ce('0xc'),'as':'Subjects','attributes':['id',_0x59ce('0x9'),_0x59ce('0xd'),'variableName'],'include':[{'model':'Variable','as':_0x59ce('0xe'),'attributes':['id',_0x59ce('0x3')]}]},{'model':_0x59ce('0xc'),'as':_0x59ce('0xf'),'attributes':['id',_0x59ce('0x9'),'content','key','keyType','keyContent',_0x59ce('0x10')],'include':[{'model':'Variable','as':_0x59ce('0xe'),'attributes':['id',_0x59ce('0x3')]}]},{'model':'ZendeskField','as':_0x59ce('0x11'),'attributes':['id',_0x59ce('0x9'),_0x59ce('0xd'),'idField',_0x59ce('0x12'),_0x59ce('0x13'),_0x59ce('0x10')],'include':[{'model':_0x59ce('0xe'),'as':'Variable','attributes':['id',_0x59ce('0x3')]}]}]}]},'log':'GetZendeskAccount'});};};
\ No newline at end of file
index e288ea5..dd39d7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c03=['host','clientId','clientSecret','serverUrl','refreshToken','ZohoConfiguration','Configurations','moduleCreate','moduleSearch','Subjects','type','Variable','ZohoField','content','keyContent','variableName','Fields','idField','nameField','customField','GetZohoAccount','getZohoAccounts','Request','name','description'];(function(_0x41f55e,_0x264009){var _0x922b33=function(_0x510189){while(--_0x510189){_0x41f55e['push'](_0x41f55e['shift']());}};_0x922b33(++_0x264009);}(_0x7c03,0x173));var _0x37c0=function(_0x39e57f,_0x5eee1e){_0x39e57f=_0x39e57f-0x0;var _0x3e24cc=_0x7c03[_0x39e57f];return _0x3e24cc;};'use strict';var client=require('../../client');exports[_0x37c0('0x0')]=function(){return function(_0x4dfc04){return client[_0x37c0('0x1')]('GetZohoAccount',{'options':{'raw':![],'attributes':['id',_0x37c0('0x2'),_0x37c0('0x3'),_0x37c0('0x4'),'zone',_0x37c0('0x5'),_0x37c0('0x6'),_0x37c0('0x7'),'code',_0x37c0('0x8')],'include':[{'model':_0x37c0('0x9'),'as':_0x37c0('0xa'),'attributes':['id',_0x37c0('0x2'),_0x37c0('0xb'),_0x37c0('0xc'),'description'],'include':[{'model':'ZohoField','as':_0x37c0('0xd'),'attributes':['id',_0x37c0('0xe'),'content','variableName'],'include':[{'model':'Variable','as':_0x37c0('0xf'),'attributes':['id',_0x37c0('0x2')]}]},{'model':_0x37c0('0x10'),'as':'Descriptions','attributes':['id','type',_0x37c0('0x11'),'key','keyType',_0x37c0('0x12'),_0x37c0('0x13')],'include':[{'model':_0x37c0('0xf'),'as':_0x37c0('0xf'),'attributes':['id',_0x37c0('0x2')]}]},{'model':_0x37c0('0x10'),'as':_0x37c0('0x14'),'attributes':['id',_0x37c0('0xe'),_0x37c0('0x11'),_0x37c0('0x15'),_0x37c0('0x16'),_0x37c0('0x17'),_0x37c0('0x13')],'include':[{'model':_0x37c0('0xf'),'as':'Variable','attributes':['id',_0x37c0('0x2')]}]}]}]},'log':_0x37c0('0x18')});};};
\ No newline at end of file
+var _0x4593=['moduleSearch','ZohoField','Subjects','content','Variable','Descriptions','type','keyContent','variableName','idField','customField','../../client','getZohoAccounts','Request','GetZohoAccount','description','host','zone','clientId','serverUrl','code','ZohoConfiguration','Configurations','name','moduleCreate'];(function(_0x22868f,_0x450f48){var _0x97bc75=function(_0x447cb4){while(--_0x447cb4){_0x22868f['push'](_0x22868f['shift']());}};_0x97bc75(++_0x450f48);}(_0x4593,0x88));var _0x3459=function(_0x2678d6,_0x4e2001){_0x2678d6=_0x2678d6-0x0;var _0x475503=_0x4593[_0x2678d6];return _0x475503;};'use strict';var client=require(_0x3459('0x0'));exports[_0x3459('0x1')]=function(){return function(_0x3d7d8a){return client[_0x3459('0x2')](_0x3459('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x3459('0x4'),_0x3459('0x5'),_0x3459('0x6'),_0x3459('0x7'),'clientSecret',_0x3459('0x8'),_0x3459('0x9'),'refreshToken'],'include':[{'model':_0x3459('0xa'),'as':_0x3459('0xb'),'attributes':['id',_0x3459('0xc'),_0x3459('0xd'),_0x3459('0xe'),_0x3459('0x4')],'include':[{'model':_0x3459('0xf'),'as':_0x3459('0x10'),'attributes':['id','type',_0x3459('0x11'),'variableName'],'include':[{'model':_0x3459('0x12'),'as':_0x3459('0x12'),'attributes':['id',_0x3459('0xc')]}]},{'model':_0x3459('0xf'),'as':_0x3459('0x13'),'attributes':['id',_0x3459('0x14'),'content','key','keyType',_0x3459('0x15'),_0x3459('0x16')],'include':[{'model':'Variable','as':_0x3459('0x12'),'attributes':['id',_0x3459('0xc')]}]},{'model':_0x3459('0xf'),'as':'Fields','attributes':['id',_0x3459('0x14'),_0x3459('0x11'),_0x3459('0x17'),'nameField',_0x3459('0x18'),_0x3459('0x16')],'include':[{'model':'Variable','as':_0x3459('0x12'),'attributes':['id',_0x3459('0xc')]}]}]}]},'log':_0x3459('0x3')});};};
\ No newline at end of file
index b3cc2e4..ef1d9b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90e2=['resolve','every','string','map','interval','concat','Request','IntervalIftime','intervalIftime','dialer','../client','stack','trim','intervalIftime\x20called\x20with','isArray','length'];(function(_0x3936c4,_0x59b4bb){var _0x5c2e58=function(_0x35cd52){while(--_0x35cd52){_0x3936c4['push'](_0x3936c4['shift']());}};_0x5c2e58(++_0x59b4bb);}(_0x90e2,0x129));var _0x290e=function(_0x2835ff,_0x3ddfbb){_0x2835ff=_0x2835ff-0x0;var _0x5b8f8c=_0x90e2[_0x2835ff];return _0x5b8f8c;};var logger=require('../../../config/logger')(_0x290e('0x0'));var client=require(_0x290e('0x1'));function intervalIftime(_0x4979aa,_0x237fe0){const _0x36bd70=new Error()[_0x290e('0x2')]['replace'](/^Error/,'')[_0x290e('0x3')]();logger['silly'](_0x290e('0x4'),_0x4979aa,_0x237fe0,_0x36bd70);const _0xda6fbe=Array[_0x290e('0x5')](_0x4979aa);if(!_0x4979aa||_0xda6fbe&&_0x4979aa[_0x290e('0x6')]===0x0){return Promise[_0x290e('0x7')](![]);}else{var _0x378e1f=[];var _0x19ef67=[];var _0x5a2ce1=_0xda6fbe?_0x4979aa:[_0x4979aa];var _0x298229=_0x5a2ce1['every'](function(_0x2f3d93){return typeof _0x2f3d93==='number';});var _0x565efd=_0x5a2ce1[_0x290e('0x8')](function(_0x4b43da){return typeof _0x4b43da===_0x290e('0x9');});if(!_0x298229&&!_0x565efd){_0x378e1f=_0x5a2ce1[_0x290e('0xa')](function(_0x1e6528){return _0x1e6528['id'];});if(_0x378e1f['length']===0x0){_0x19ef67=_0x5a2ce1[_0x290e('0xa')](function(_0x324a1d){return _0x324a1d[_0x290e('0xb')];});}}else{if(_0x298229){_0x378e1f=_0x378e1f[_0x290e('0xc')](_0x5a2ce1);}if(_0x565efd){_0x19ef67=_0x19ef67[_0x290e('0xc')](_0x5a2ce1);}}return client[_0x290e('0xd')]('IntervalIftime',{'intervalIds':_0x378e1f,'intervals':_0x19ef67,'timezone':_0x237fe0,'log':_0x290e('0xe')});}}exports[_0x290e('0xf')]=intervalIftime;
\ No newline at end of file
+var _0x46e8=['resolve','number','string','map','interval','concat','Request','intervalIftime','dialer','../client','stack','replace','isArray'];(function(_0x192d94,_0x244371){var _0x3d6483=function(_0x1b1112){while(--_0x1b1112){_0x192d94['push'](_0x192d94['shift']());}};_0x3d6483(++_0x244371);}(_0x46e8,0x18e));var _0x846e=function(_0x29c04a,_0x4a55cc){_0x29c04a=_0x29c04a-0x0;var _0x107e44=_0x46e8[_0x29c04a];return _0x107e44;};var logger=require('../../../config/logger')(_0x846e('0x0'));var client=require(_0x846e('0x1'));function intervalIftime(_0x455353,_0x2f13a7){const _0x2dc106=new Error()[_0x846e('0x2')][_0x846e('0x3')](/^Error/,'')['trim']();logger['silly']('intervalIftime\x20called\x20with',_0x455353,_0x2f13a7,_0x2dc106);const _0x184af8=Array[_0x846e('0x4')](_0x455353);if(!_0x455353||_0x184af8&&_0x455353['length']===0x0){return Promise[_0x846e('0x5')](![]);}else{var _0x2f484f=[];var _0x4e4cd9=[];var _0x31e8c9=_0x184af8?_0x455353:[_0x455353];var _0x80a523=_0x31e8c9['every'](function(_0x19e562){return typeof _0x19e562===_0x846e('0x6');});var _0x5b8359=_0x31e8c9['every'](function(_0x39076e){return typeof _0x39076e===_0x846e('0x7');});if(!_0x80a523&&!_0x5b8359){_0x2f484f=_0x31e8c9[_0x846e('0x8')](function(_0x367b58){return _0x367b58['id'];});if(_0x2f484f['length']===0x0){_0x4e4cd9=_0x31e8c9[_0x846e('0x8')](function(_0xce9fca){return _0xce9fca[_0x846e('0x9')];});}}else{if(_0x80a523){_0x2f484f=_0x2f484f[_0x846e('0xa')](_0x31e8c9);}if(_0x5b8359){_0x4e4cd9=_0x4e4cd9[_0x846e('0xa')](_0x31e8c9);}}return client[_0x846e('0xb')]('IntervalIftime',{'intervalIds':_0x2f484f,'intervals':_0x4e4cd9,'timezone':_0x2f13a7,'log':'IntervalIftime'});}}exports[_0x846e('0xc')]=intervalIftime;
\ No newline at end of file
index 1031f56..0cdaa62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd281=['exten','agent','uniqueid','lodash','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','CreateMemberReport','lastAssignedTo','isNil','SIP/%s','interface','queuecallerleaveAt','diff','inbound','accountcode','toNumber','voice','membername','TALKING','endtime','starttime','seconds','outbound'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0xd281,0x161));var _0x1d28=function(_0x22f581,_0x180341){_0x22f581=_0x22f581-0x0;var _0x2dbdd5=_0xd281[_0x22f581];return _0x2dbdd5;};'use strict';var moment=require('moment');var _=require(_0x1d28('0x0'));var util=require('util');var client=require('../client');exports[_0x1d28('0x1')]=function(_0x3fdd36){var _0x42aaf8=_0x3fdd36[_0x1d28('0x2')]||_0x3fdd36[_0x1d28('0x3')];return client[_0x1d28('0x4')](_0x1d28('0x5'),{'body':{'channel':'voice','membername':_0x3fdd36[_0x1d28('0x6')],'interface':_[_0x1d28('0x7')](_0x3fdd36['interface'])?util['format'](_0x1d28('0x8'),_0x3fdd36['lastAssignedTo']):_0x3fdd36[_0x1d28('0x9')],'type':'TALKING','enterAt':_0x3fdd36[_0x1d28('0xa')],'exitAt':_0x42aaf8,'duration':moment(_0x42aaf8)[_0x1d28('0xb')](_0x3fdd36[_0x1d28('0xa')],'seconds'),'data1':_0x1d28('0xc'),'data2':_0x3fdd36['calleridnum'],'data3':_0x3fdd36['exten'],'data4':null,'data5':_0x3fdd36['queue'],'role':'agent','internal':_0x3fdd36[_0x1d28('0xd')]?_[_0x1d28('0xe')](_0x3fdd36[_0x1d28('0xd')]):undefined,'uniqueid':_0x3fdd36['uniqueid']},'log':'CreateMemberReport'});};exports['voiceDialReport']=function(_0x5cf6d6){return client[_0x1d28('0x4')](_0x1d28('0x5'),{'body':{'channel':_0x1d28('0xf'),'membername':_0x5cf6d6[_0x1d28('0x10')],'interface':_0x5cf6d6[_0x1d28('0x9')],'type':_0x1d28('0x11'),'enterAt':_0x5cf6d6['starttime'],'exitAt':_0x5cf6d6[_0x1d28('0x12')],'duration':moment(_0x5cf6d6['endtime'])[_0x1d28('0xb')](_0x5cf6d6[_0x1d28('0x13')],_0x1d28('0x14'))>=0x0?moment(_0x5cf6d6[_0x1d28('0x12')])[_0x1d28('0xb')](_0x5cf6d6['starttime'],'seconds'):null,'data1':_0x1d28('0x15'),'data2':_0x5cf6d6[_0x1d28('0xd')],'data3':_0x5cf6d6[_0x1d28('0x16')],'data4':_0x5cf6d6['dialstring']||null,'role':_0x1d28('0x17'),'internal':_0x5cf6d6[_0x1d28('0xd')]?_[_0x1d28('0xe')](_0x5cf6d6[_0x1d28('0xd')]):undefined,'uniqueid':_0x5cf6d6[_0x1d28('0x18')]},'log':_0x1d28('0x5')});};
\ No newline at end of file
+var _0xa511=['isNil','interface','format','TALKING','queuecallerleaveAt','diff','inbound','agent','toNumber','accountcode','uniqueid','voiceDialReport','membername','endtime','starttime','seconds','outbound','dialstring','moment','lodash','util','queuecallerexitAt','Request','CreateMemberReport','voice','lastAssignedTo'];(function(_0x32fdbc,_0xf5c62){var _0x394a90=function(_0x550709){while(--_0x550709){_0x32fdbc['push'](_0x32fdbc['shift']());}};_0x394a90(++_0xf5c62);}(_0xa511,0x1b2));var _0x1a51=function(_0x45c7d0,_0x43ecc){_0x45c7d0=_0x45c7d0-0x0;var _0x30f250=_0xa511[_0x45c7d0];return _0x30f250;};'use strict';var moment=require(_0x1a51('0x0'));var _=require(_0x1a51('0x1'));var util=require(_0x1a51('0x2'));var client=require('../client');exports['voiceQueueReport']=function(_0x1c00a0){var _0xbc98ee=_0x1c00a0['queuecallercompleteAt']||_0x1c00a0[_0x1a51('0x3')];return client[_0x1a51('0x4')](_0x1a51('0x5'),{'body':{'channel':_0x1a51('0x6'),'membername':_0x1c00a0[_0x1a51('0x7')],'interface':_[_0x1a51('0x8')](_0x1c00a0[_0x1a51('0x9')])?util[_0x1a51('0xa')]('SIP/%s',_0x1c00a0[_0x1a51('0x7')]):_0x1c00a0['interface'],'type':_0x1a51('0xb'),'enterAt':_0x1c00a0[_0x1a51('0xc')],'exitAt':_0xbc98ee,'duration':moment(_0xbc98ee)[_0x1a51('0xd')](_0x1c00a0[_0x1a51('0xc')],'seconds'),'data1':_0x1a51('0xe'),'data2':_0x1c00a0['calleridnum'],'data3':_0x1c00a0['exten'],'data4':null,'data5':_0x1c00a0['queue'],'role':_0x1a51('0xf'),'internal':_0x1c00a0['accountcode']?_[_0x1a51('0x10')](_0x1c00a0[_0x1a51('0x11')]):undefined,'uniqueid':_0x1c00a0[_0x1a51('0x12')]},'log':_0x1a51('0x5')});};exports[_0x1a51('0x13')]=function(_0x2a89bb){return client[_0x1a51('0x4')](_0x1a51('0x5'),{'body':{'channel':_0x1a51('0x6'),'membername':_0x2a89bb[_0x1a51('0x14')],'interface':_0x2a89bb[_0x1a51('0x9')],'type':'TALKING','enterAt':_0x2a89bb['starttime'],'exitAt':_0x2a89bb['endtime'],'duration':moment(_0x2a89bb[_0x1a51('0x15')])[_0x1a51('0xd')](_0x2a89bb[_0x1a51('0x16')],_0x1a51('0x17'))>=0x0?moment(_0x2a89bb[_0x1a51('0x15')])['diff'](_0x2a89bb[_0x1a51('0x16')],'seconds'):null,'data1':_0x1a51('0x18'),'data2':_0x2a89bb[_0x1a51('0x11')],'data3':_0x2a89bb['exten'],'data4':_0x2a89bb[_0x1a51('0x19')]||null,'role':_0x1a51('0xf'),'internal':_0x2a89bb[_0x1a51('0x11')]?_[_0x1a51('0x10')](_0x2a89bb[_0x1a51('0x11')]):undefined,'uniqueid':_0x2a89bb['uniqueid']},'log':_0x1a51('0x5')});};
\ No newline at end of file
index 813a44f..a88ef76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd61e=['getSettings','Request','ShowSetting','stopRecordingOnTransfer','previewRecallmeReminderInterval','../client'];(function(_0x23ba26,_0x110781){var _0xfeb1c7=function(_0xded30d){while(--_0xded30d){_0x23ba26['push'](_0x23ba26['shift']());}};_0xfeb1c7(++_0x110781);}(_0xd61e,0x13d));var _0xed61=function(_0x2f8c62,_0x5cd6b6){_0x2f8c62=_0x2f8c62-0x0;var _0x21cf48=_0xd61e[_0x2f8c62];return _0x21cf48;};'use strict';var client=require(_0xed61('0x0'));exports[_0xed61('0x1')]=function(){return client[_0xed61('0x2')](_0xed61('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xed61('0x4'),_0xed61('0x5')]},'log':'GetSettings'});};
\ No newline at end of file
+var _0x130d=['Request','previewRecallmeReminderInterval','GetSettings','../client','getSettings'];(function(_0x1b9a9f,_0x482c35){var _0x2552fd=function(_0x48839e){while(--_0x48839e){_0x1b9a9f['push'](_0x1b9a9f['shift']());}};_0x2552fd(++_0x482c35);}(_0x130d,0x19d));var _0xd130=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x130d[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xd130('0x0'));exports[_0xd130('0x1')]=function(){return client[_0xd130('0x2')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer',_0xd130('0x3')]},'log':_0xd130('0x4')});};
\ No newline at end of file
index c1745f8..6baf1f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74a4=['Request','name','html','GetTemplate','../client','getTemplates'];(function(_0x249e96,_0x3ea39d){var _0x17444c=function(_0x1221d0){while(--_0x1221d0){_0x249e96['push'](_0x249e96['shift']());}};_0x17444c(++_0x3ea39d);}(_0x74a4,0x166));var _0x474a=function(_0x2381a7,_0x12c8fa){_0x2381a7=_0x2381a7-0x0;var _0x1f4098=_0x74a4[_0x2381a7];return _0x1f4098;};'use strict';var client=require(_0x474a('0x0'));exports[_0x474a('0x1')]=function(_0x7b8333){return function(_0xd6e322){return client[_0x474a('0x2')]('GetTemplate',{'options':{'raw':!![],'attributes':['id',_0x474a('0x3'),_0x474a('0x4')]},'log':_0x474a('0x5')});};};
\ No newline at end of file
+var _0x22be=['getTemplates','Request','GetTemplate','html','../client'];(function(_0x5d8024,_0x2c612c){var _0x4b0afd=function(_0xa2cf53){while(--_0xa2cf53){_0x5d8024['push'](_0x5d8024['shift']());}};_0x4b0afd(++_0x2c612c);}(_0x22be,0x108));var _0xe22b=function(_0x2d982d,_0x121028){_0x2d982d=_0x2d982d-0x0;var _0x4f36b0=_0x22be[_0x2d982d];return _0x4f36b0;};'use strict';var client=require(_0xe22b('0x0'));exports[_0xe22b('0x1')]=function(_0x438a55){return function(_0x5cc54e){return client[_0xe22b('0x2')](_0xe22b('0x3'),{'options':{'raw':!![],'attributes':['id','name',_0xe22b('0x4')]},'log':_0xe22b('0x3')});};};
\ No newline at end of file
index a00c193..93eb763 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf3f=['data4','data5','data6','data7','getTriggers','Request','GetTrigger','name','channel','status','field','operator','value','Condition','AnyConditions','Action','data2','data3'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xaf3f,0x190));var _0xfaf3=function(_0x212757,_0x170792){_0x212757=_0x212757-0x0;var _0x46acc7=_0xaf3f[_0x212757];return _0x46acc7;};'use strict';var client=require('../client');exports[_0xfaf3('0x0')]=function(_0x23d2d2){return function(_0x239cd0){return client[_0xfaf3('0x1')](_0xfaf3('0x2'),{'options':{'raw':![],'attributes':['id',_0xfaf3('0x3'),_0xfaf3('0x4'),_0xfaf3('0x5')],'include':[{'model':'Condition','as':'AllConditions','attributes':['id',_0xfaf3('0x6'),_0xfaf3('0x7'),_0xfaf3('0x8')]},{'model':_0xfaf3('0x9'),'as':_0xfaf3('0xa'),'attributes':['id',_0xfaf3('0x6'),_0xfaf3('0x7'),_0xfaf3('0x8')]},{'model':_0xfaf3('0xb'),'as':'Actions','attributes':['id','action','data1',_0xfaf3('0xc'),_0xfaf3('0xd'),_0xfaf3('0xe'),_0xfaf3('0xf'),_0xfaf3('0x10'),_0xfaf3('0x11')]}]},'log':_0xfaf3('0x2')});};};
\ No newline at end of file
+var _0xb034=['GetTrigger','../client','Request','name','channel','Condition','AllConditions','field','operator','AnyConditions','Actions','action','data3','data4','data5','data6','data7'];(function(_0x113098,_0x34f8bc){var _0x12ce27=function(_0xfd4d9e){while(--_0xfd4d9e){_0x113098['push'](_0x113098['shift']());}};_0x12ce27(++_0x34f8bc);}(_0xb034,0x1ee));var _0x4b03=function(_0x261e29,_0x10fffd){_0x261e29=_0x261e29-0x0;var _0x25ef43=_0xb034[_0x261e29];return _0x25ef43;};'use strict';var client=require(_0x4b03('0x0'));exports['getTriggers']=function(_0x35bae3){return function(_0x270b6d){return client[_0x4b03('0x1')]('GetTrigger',{'options':{'raw':![],'attributes':['id',_0x4b03('0x2'),_0x4b03('0x3'),'status'],'include':[{'model':_0x4b03('0x4'),'as':_0x4b03('0x5'),'attributes':['id',_0x4b03('0x6'),_0x4b03('0x7'),'value']},{'model':_0x4b03('0x4'),'as':_0x4b03('0x8'),'attributes':['id',_0x4b03('0x6'),_0x4b03('0x7'),'value']},{'model':'Action','as':_0x4b03('0x9'),'attributes':['id',_0x4b03('0xa'),'data1','data2',_0x4b03('0xb'),_0x4b03('0xc'),_0x4b03('0xd'),_0x4b03('0xe'),_0x4b03('0xf')]}]},'log':_0x4b03('0x10')});};};
\ No newline at end of file
index add7d10..85a0f61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea63=['GetTrunk','defaultuser','getTrunks','Request'];(function(_0x43cb9e,_0x239aab){var _0x447ed2=function(_0x33958e){while(--_0x33958e){_0x43cb9e['push'](_0x43cb9e['shift']());}};_0x447ed2(++_0x239aab);}(_0xea63,0x1d6));var _0x3ea6=function(_0xa5f0d,_0x5ee027){_0xa5f0d=_0xa5f0d-0x0;var _0x5f16fd=_0xea63[_0xa5f0d];return _0x5f16fd;};'use strict';var client=require('../client');exports[_0x3ea6('0x0')]=function(_0x3ace54){return function(_0x2e97e6){return client[_0x3ea6('0x1')](_0x3ea6('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name','registry',_0x3ea6('0x3')]},'log':_0x3ea6('0x2')});};};
\ No newline at end of file
+var _0x1de4=['GetTrunk','name','registry','../client','getTrunks'];(function(_0x43b584,_0x20a6bd){var _0x48f27b=function(_0x1eeb77){while(--_0x1eeb77){_0x43b584['push'](_0x43b584['shift']());}};_0x48f27b(++_0x20a6bd);}(_0x1de4,0x94));var _0x41de=function(_0x49961d,_0x32bfdf){_0x49961d=_0x49961d-0x0;var _0x3821fe=_0x1de4[_0x49961d];return _0x3821fe;};'use strict';var client=require(_0x41de('0x0'));exports[_0x41de('0x1')]=function(_0x1dd566){return function(_0x100ced){return client['Request'](_0x41de('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x41de('0x3'),_0x41de('0x4'),'defaultuser']},'log':_0x41de('0x2')});};};
\ No newline at end of file
index a0e9d25..1b35aef 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(_0x23063e,_0x3be739){var _0x2b4006=function(_0x2e5d8e){while(--_0x2e5d8e){_0x23063e['push'](_0x23063e['shift']());}};_0x2b4006(++_0x3be739);}(_0x70e0,0x17b));var _0x070e=function(_0x13cae1,_0xb663b5){_0x13cae1=_0x13cae1-0x0;var _0x9ea344=_0x70e0[_0x13cae1];return _0x9ea344;};'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 _0xe706=['internal','savePause','PauseUser','saveUnpause','UnpauseUser','ShowUser','getAgent','../client','getAgents','Request','agent','name','email','accountcode','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','GetUser','telephone'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xe706,0xa3));var _0x6e70=function(_0x46bf45,_0x201aaf){_0x46bf45=_0x46bf45-0x0;var _0x10cdc3=_0xe706[_0x46bf45];return _0x10cdc3;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':_0x6e70('0x3')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x5'),_0x6e70('0x6'),_0x6e70('0x7'),_0x6e70('0x8'),_0x6e70('0x9'),_0x6e70('0xa'),_0x6e70('0xb'),_0x6e70('0xc'),_0x6e70('0xd'),_0x6e70('0xe'),_0x6e70('0xf')]},'log':_0x6e70('0x1')});};};exports[_0x6e70('0x10')]=function(){return function(){return client[_0x6e70('0x2')](_0x6e70('0x11'),{'options':{'raw':!![],'where':{'role':_0x6e70('0x12')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x6'),_0x6e70('0x13')]},'log':_0x6e70('0x10')});};};exports[_0x6e70('0x14')]=function(_0x4600f9,_0x5b3d07,_0x47f6b2){return client[_0x6e70('0x2')](_0x6e70('0x15'),{'body':{'type':_0x5b3d07,'uniqueid':_0x47f6b2},'options':{'where':{'id':_0x4600f9['id']}},'log':_0x6e70('0x14')});};exports[_0x6e70('0x16')]=function(_0x3b38f3){return client[_0x6e70('0x2')](_0x6e70('0x17'),{'body':{},'options':{'where':{'id':_0x3b38f3['id']}},'log':_0x6e70('0x14')});};exports['getAgent']=function(_0x52737e){return client['Request'](_0x6e70('0x18'),{'options':{'raw':![],'where':{'role':'agent','id':_0x52737e},'attributes':['id','name',_0x6e70('0x5'),_0x6e70('0x6'),'fullname',_0x6e70('0x8'),'lastLoginAt',_0x6e70('0xa'),_0x6e70('0xb'),'voicePause','interface']},'log':_0x6e70('0x19')});};
\ No newline at end of file
index 54e56a7..451f9dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17d6=['CreateVoiceAgentReport','update','create','Request'];(function(_0x34053b,_0x9098d6){var _0x18970d=function(_0x463068){while(--_0x463068){_0x34053b['push'](_0x34053b['shift']());}};_0x18970d(++_0x9098d6);}(_0x17d6,0xe6));var _0x617d=function(_0x309636,_0xcec7ea){_0x309636=_0x309636-0x0;var _0x51ba46=_0x17d6[_0x309636];return _0x51ba46;};'use strict';var client=require('../client');exports[_0x617d('0x0')]=function(_0x4cb27f){return client[_0x617d('0x1')](_0x617d('0x2'),{'body':_0x4cb27f,'log':_0x617d('0x2')});};exports[_0x617d('0x3')]=function(_0x315646,_0x1e6c1c,_0x500261){return client[_0x617d('0x1')]('UpdateVoiceAgentReport',{'body':_0x315646,'options':{'where':{'uniqueid':_0x1e6c1c,'interface':_0x500261,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
+var _0x14a9=['Request','CreateVoiceAgentReport','update','UpdateVoiceAgentReport','create'];(function(_0x5f4168,_0x5775ca){var _0x260588=function(_0x551550){while(--_0x551550){_0x5f4168['push'](_0x5f4168['shift']());}};_0x260588(++_0x5775ca);}(_0x14a9,0x6d));var _0x914a=function(_0x117696,_0x18926a){_0x117696=_0x117696-0x0;var _0x5bef49=_0x14a9[_0x117696];return _0x5bef49;};'use strict';var client=require('../client');exports[_0x914a('0x0')]=function(_0x151c33){return client[_0x914a('0x1')](_0x914a('0x2'),{'body':_0x151c33,'log':_0x914a('0x2')});};exports[_0x914a('0x3')]=function(_0x1d25b4,_0x58801a,_0xd989c2){return client[_0x914a('0x1')](_0x914a('0x4'),{'body':_0x1d25b4,'options':{'where':{'uniqueid':_0x58801a,'interface':_0xd989c2,'agentcomplete':!![]}},'log':_0x914a('0x4')});};
\ No newline at end of file
index fda024c..13a5fcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6d9=['moment','util','lodash','create','CreateVoiceCallReport','merge','calleridnum','context','DOCUMENTATION','getVoiceCallReports','Request','GetVoiceCallReport','format','endOf','YYYY-MM-DD\x20HH:mm:ss','duration','billableseconds','GetVoiceCallReports'];(function(_0xeeb852,_0x37287e){var _0x2c434d=function(_0x1f3da1){while(--_0x1f3da1){_0xeeb852['push'](_0xeeb852['shift']());}};_0x2c434d(++_0x37287e);}(_0xe6d9,0x1c2));var _0x9e6d=function(_0x48317f,_0x12895a){_0x48317f=_0x48317f-0x0;var _0x4d1cce=_0xe6d9[_0x48317f];return _0x4d1cce;};'use strict';var moment=require(_0x9e6d('0x0'));var util=require(_0x9e6d('0x1'));var _=require(_0x9e6d('0x2'));var client=require('../client');exports[_0x9e6d('0x3')]=function(_0x830971){return client['Request'](_0x9e6d('0x4'),{'body':_[_0x9e6d('0x5')](_0x830971,{'source':_0x830971[_0x9e6d('0x6')],'destinationcontext':_0x830971[_0x9e6d('0x7')],'callerid':_0x830971['callerid'],'amaflags':_0x9e6d('0x8')}),'log':'CreateVoiceCallReport'});};exports[_0x9e6d('0x9')]=function(){return function(){return client[_0x9e6d('0xa')](_0x9e6d('0xb'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()['startOf']('day')[_0x9e6d('0xc')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0x9e6d('0xd')]('day')[_0x9e6d('0xc')](_0x9e6d('0xe'))]}},'attributes':['type','disposition',_0x9e6d('0xf'),_0x9e6d('0x10')]},'log':_0x9e6d('0x11')});};};
\ No newline at end of file
+var _0xd07a=['create','Request','CreateVoiceCallReport','DOCUMENTATION','getVoiceCallReports','outbound','startOf','format','YYYY-MM-DD\x20HH:mm:ss','endOf','day','type','disposition','duration','moment','util','lodash','../client'];(function(_0x2aefb6,_0x1bd384){var _0x202772=function(_0x507d3f){while(--_0x507d3f){_0x2aefb6['push'](_0x2aefb6['shift']());}};_0x202772(++_0x1bd384);}(_0xd07a,0xf8));var _0xad07=function(_0x391c55,_0x168617){_0x391c55=_0x391c55-0x0;var _0xa434e0=_0xd07a[_0x391c55];return _0xa434e0;};'use strict';var moment=require(_0xad07('0x0'));var util=require(_0xad07('0x1'));var _=require(_0xad07('0x2'));var client=require(_0xad07('0x3'));exports[_0xad07('0x4')]=function(_0x363e45){return client[_0xad07('0x5')](_0xad07('0x6'),{'body':_['merge'](_0x363e45,{'source':_0x363e45['calleridnum'],'destinationcontext':_0x363e45['context'],'callerid':_0x363e45['callerid'],'amaflags':_0xad07('0x7')}),'log':_0xad07('0x6')});};exports[_0xad07('0x8')]=function(){return function(){return client[_0xad07('0x5')]('GetVoiceCallReport',{'options':{'where':{'type':[_0xad07('0x9')],'createdAt':{'$between':[moment()[_0xad07('0xa')]('day')[_0xad07('0xb')](_0xad07('0xc')),moment()[_0xad07('0xd')](_0xad07('0xe'))[_0xad07('0xb')](_0xad07('0xc'))]}},'attributes':[_0xad07('0xf'),_0xad07('0x10'),_0xad07('0x11'),'billableseconds']},'log':'GetVoiceCallReports'});};};
\ No newline at end of file
index b9b1b1f..3fa3c23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78af=['../client','CreateVoiceDialReport'];(function(_0x449870,_0x555c4d){var _0x18555a=function(_0x4f7272){while(--_0x4f7272){_0x449870['push'](_0x449870['shift']());}};_0x18555a(++_0x555c4d);}(_0x78af,0x17a));var _0xf78a=function(_0x4a7631,_0x2c85b9){_0x4a7631=_0x4a7631-0x0;var _0x1a5a6f=_0x78af[_0x4a7631];return _0x1a5a6f;};'use strict';var client=require(_0xf78a('0x0'));exports['create']=function(_0x8dda99){return client['Request'](_0xf78a('0x1'),{'body':_0x8dda99,'log':_0xf78a('0x1')});};
\ No newline at end of file
+var _0x7e76=['../client','create','Request','CreateVoiceDialReport'];(function(_0x3cb10d,_0x26b91b){var _0xb504ba=function(_0x494943){while(--_0x494943){_0x3cb10d['push'](_0x3cb10d['shift']());}};_0xb504ba(++_0x26b91b);}(_0x7e76,0x11c));var _0x67e7=function(_0x156c03,_0x3877be){_0x156c03=_0x156c03-0x0;var _0x2fb1f6=_0x7e76[_0x156c03];return _0x2fb1f6;};'use strict';var client=require(_0x67e7('0x0'));exports[_0x67e7('0x1')]=function(_0x27fb46){return client[_0x67e7('0x2')](_0x67e7('0x3'),{'body':_0x27fb46,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
index 4ebf842..2ce785e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc125=['getVoiceExtensions','GetVoiceExtension','exten','recordingFormat'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc125,0x150));var _0x5c12=function(_0xcec345,_0x4ca677){_0xcec345=_0xcec345-0x0;var _0x479800=_0xc125[_0xcec345];return _0x479800;};'use strict';var client=require('../client');exports[_0x5c12('0x0')]=function(){return function(){return client['Request'](_0x5c12('0x1'),{'options':{'raw':!![],'attributes':['id',_0x5c12('0x2'),_0x5c12('0x3')],'where':{'VoiceExtensionId':null}},'log':_0x5c12('0x0')});};};
\ No newline at end of file
+var _0x2cbd=['getVoiceExtensions','GetVoiceExtension','exten','recordingFormat','../client'];(function(_0x1717a2,_0x2aa117){var _0x58a108=function(_0x5cbb6b){while(--_0x5cbb6b){_0x1717a2['push'](_0x1717a2['shift']());}};_0x58a108(++_0x2aa117);}(_0x2cbd,0x19e));var _0xd2cb=function(_0x43b08,_0x15f967){_0x43b08=_0x43b08-0x0;var _0x5e05f4=_0x2cbd[_0x43b08];return _0x5e05f4;};'use strict';var client=require(_0xd2cb('0x0'));exports[_0xd2cb('0x1')]=function(){return function(){return client['Request'](_0xd2cb('0x2'),{'options':{'raw':!![],'attributes':['id',_0xd2cb('0x3'),_0xd2cb('0x4')],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
index 79005a3..f732b5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8509=['dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','dialCutDigit','dialNoSuchNumberRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialPredictiveIntervalMinThreshold','dialPreviewRecallmeReminder','Trunk','callerid','active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','getVoiceQueues','Request','GetVoiceQueue','name','autopause','monitor_format','type','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialGlobalMaxRetry','dialTimezone','dialGlobalInterval','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8509,0x1c1));var _0x9850=function(_0x1f951b,_0x654997){_0x1f951b=_0x1f951b-0x0;var _0x503af0=_0x8509[_0x1f951b];return _0x503af0;};'use strict';var client=require('../client');exports[_0x9850('0x0')]=function(){return function(){return client[_0x9850('0x1')](_0x9850('0x2'),{'options':{'raw':![],'attributes':['id',_0x9850('0x3'),'acw','acwTimeout',_0x9850('0x4'),_0x9850('0x5'),_0x9850('0x6'),'dialActive',_0x9850('0x7'),_0x9850('0x8'),_0x9850('0x9'),_0x9850('0xa'),_0x9850('0xb'),_0x9850('0xc'),_0x9850('0xd'),_0x9850('0xe'),_0x9850('0xf'),'dialOriginateTimeout',_0x9850('0x10'),_0x9850('0x11'),_0x9850('0x12'),_0x9850('0x13'),_0x9850('0x14'),_0x9850('0x15'),_0x9850('0x16'),_0x9850('0x17'),'dialNoAnswerRetryFrequency',_0x9850('0x18'),_0x9850('0x19'),_0x9850('0x1a'),'dialPrefix',_0x9850('0x1b'),_0x9850('0x1c'),_0x9850('0x1d'),_0x9850('0x1e'),_0x9850('0x1f'),'dialAMDTotalAnalysisTime',_0x9850('0x20'),'dialAMDBetweenWordsSilence',_0x9850('0x21'),_0x9850('0x22'),_0x9850('0x23'),_0x9850('0x24'),_0x9850('0x25'),_0x9850('0x26'),_0x9850('0x27'),_0x9850('0x28'),_0x9850('0x29'),_0x9850('0x2a'),_0x9850('0x5'),'strategy','dialRandomLastDigitCallerIdNumber',_0x9850('0x2b'),'dialNoSuchNumberMaxRetry',_0x9850('0x2c'),'dialDropMaxRetry','dialDropRetryFrequency',_0x9850('0x2d'),'dialAbandonedRetryFrequency',_0x9850('0x2e'),_0x9850('0x2f'),_0x9850('0x30'),_0x9850('0x31'),'mandatoryDisposition','dialPredictiveIntervalMaxThreshold',_0x9850('0x32'),'dialPreviewAutoRecallMe',_0x9850('0x33')],'include':[{'model':_0x9850('0x34'),'as':_0x9850('0x34'),'attributes':['id',_0x9850('0x3'),_0x9850('0x35'),_0x9850('0x36')]},{'model':_0x9850('0x37'),'as':_0x9850('0x38'),'attributes':['id',_0x9850('0x3')]},{'model':_0x9850('0x34'),'as':_0x9850('0x39'),'attributes':['id','name',_0x9850('0x35'),'active']},{'model':'Interval','as':_0x9850('0x3a'),'attributes':['id',_0x9850('0x3')],'include':[{'model':'Interval','as':_0x9850('0x3b'),'attributes':['id',_0x9850('0x3'),'interval']}]}]},'log':_0x9850('0x0')});};};
\ No newline at end of file
+var _0x97c7=['dialGlobalMaxRetry','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','timeout','dialRecallMeTimeout','dialRecallInQueue','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','Trunk','callerid','active','mandatoryDispositionPause','Interval','../client','Request','GetVoiceQueue','name','acw','autopause','monitor_format','type','dialActive','dialMethod','dialLimitChannel','dialPowerLevel','dialPredictiveOptimization','dialPredictiveInterval','dialQueueOptions','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency'];(function(_0x4e5843,_0xa4daa4){var _0x321f1e=function(_0x5a2af7){while(--_0x5a2af7){_0x4e5843['push'](_0x4e5843['shift']());}};_0x321f1e(++_0xa4daa4);}(_0x97c7,0x1da));var _0x797c=function(_0x34ffa5,_0x3318ed){_0x34ffa5=_0x34ffa5-0x0;var _0x187f90=_0x97c7[_0x34ffa5];return _0x187f90;};'use strict';var client=require(_0x797c('0x0'));exports['getVoiceQueues']=function(){return function(){return client[_0x797c('0x1')](_0x797c('0x2'),{'options':{'raw':![],'attributes':['id',_0x797c('0x3'),_0x797c('0x4'),'acwTimeout',_0x797c('0x5'),_0x797c('0x6'),_0x797c('0x7'),_0x797c('0x8'),_0x797c('0x9'),_0x797c('0xa'),'dialLimitQueue',_0x797c('0xb'),_0x797c('0xc'),'dialPredictiveOptimizationPercentage',_0x797c('0xd'),'dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout',_0x797c('0xe'),'dialQueueTimeout',_0x797c('0xf'),_0x797c('0x10'),_0x797c('0x11'),_0x797c('0x12'),_0x797c('0x13'),'dialNoAnswerMaxRetry',_0x797c('0x14'),_0x797c('0x15'),'dialTimezone',_0x797c('0x16'),_0x797c('0x17'),_0x797c('0x18'),_0x797c('0x19'),_0x797c('0x1a'),_0x797c('0x1b'),_0x797c('0x1c'),'dialAMDTotalAnalysisTime',_0x797c('0x1d'),'dialAMDBetweenWordsSilence',_0x797c('0x1e'),_0x797c('0x1f'),'dialAMDMaximumWordLength',_0x797c('0x20'),_0x797c('0x21'),_0x797c('0x22'),'dialOrderByScheduledAt',_0x797c('0x23'),_0x797c('0x24'),_0x797c('0x25'),_0x797c('0x6'),'strategy',_0x797c('0x26'),_0x797c('0x27'),_0x797c('0x28'),_0x797c('0x29'),'dialDropMaxRetry',_0x797c('0x2a'),_0x797c('0x2b'),_0x797c('0x2c'),_0x797c('0x2d'),'dialMachineRetryFrequency',_0x797c('0x2e'),'dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold',_0x797c('0x2f'),_0x797c('0x30'),_0x797c('0x31')],'include':[{'model':_0x797c('0x32'),'as':_0x797c('0x32'),'attributes':['id',_0x797c('0x3'),_0x797c('0x33'),_0x797c('0x34')]},{'model':'Pause','as':_0x797c('0x35'),'attributes':['id','name']},{'model':_0x797c('0x32'),'as':'TrunkBackup','attributes':['id',_0x797c('0x3'),_0x797c('0x33'),_0x797c('0x34')]},{'model':'Interval','as':_0x797c('0x36'),'attributes':['id',_0x797c('0x3')],'include':[{'model':'Interval','as':'Intervals','attributes':['id',_0x797c('0x3'),'interval']}]}]},'log':'getVoiceQueues'});};};
\ No newline at end of file
index f338cbd..0565725 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(_0x4128fa,_0x21e02d){var _0x10ae44=function(_0x368dc4){while(--_0x368dc4){_0x4128fa['push'](_0x4128fa['shift']());}};_0x10ae44(++_0x21e02d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0xa9e0[_0x4bfac3];return _0x15f0f2;};'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(_0x334258,_0x312d23){var _0x240bf1=function(_0x591462){while(--_0x591462){_0x334258['push'](_0x334258['shift']());}};_0x240bf1(++_0x312d23);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xa9e0[_0x34bc30];return _0x5706de;};'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 b168cc8..f74ab3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed30=['../client','getVoiceQueueRtPauses','GetVoiceQueueRtPauses'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0xed30,0x138));var _0x0ed3=function(_0x169b0f,_0x2432e6){_0x169b0f=_0x169b0f-0x0;var _0xefbdd1=_0xed30[_0x169b0f];return _0xefbdd1;};'use strict';var client=require(_0x0ed3('0x0'));exports[_0x0ed3('0x1')]=function(_0x96d48a){return function(){return client['Request'](_0x0ed3('0x2'),{'options':{'where':{'VoiceQueueId':_0x96d48a,'paused':!![]},'raw':!![]},'log':'getVoiceQueueRtPauses'});};};
\ No newline at end of file
+var _0x862a=['Request','GetVoiceQueueRtPauses','../client','getVoiceQueueRtPauses'];(function(_0x2eaff4,_0x4852b7){var _0x278c7a=function(_0x9a80f6){while(--_0x9a80f6){_0x2eaff4['push'](_0x2eaff4['shift']());}};_0x278c7a(++_0x4852b7);}(_0x862a,0x1ea));var _0xa862=function(_0x2f62aa,_0x108e95){_0x2f62aa=_0x2f62aa-0x0;var _0x1a341f=_0x862a[_0x2f62aa];return _0x1a341f;};'use strict';var client=require(_0xa862('0x0'));exports[_0xa862('0x1')]=function(_0x875d66){return function(){return client[_0xa862('0x2')](_0xa862('0x3'),{'options':{'where':{'VoiceQueueId':_0x875d66,'paused':!![]},'raw':!![]},'log':'getVoiceQueueRtPauses'});};};
\ No newline at end of file
index 213c434..cf95736 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x35f172,_0x31cbb1){var _0x747d5d=function(_0x494b2b){while(--_0x494b2b){_0x35f172['push'](_0x35f172['shift']());}};_0x747d5d(++_0x31cbb1);}(_0x7a54,0x106));var _0x47a5=function(_0x5c0685,_0x3a7d06){_0x5c0685=_0x5c0685-0x0;var _0x30ac0c=_0x7a54[_0x5c0685];return _0x30ac0c;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
+var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x44e78f,_0x21aa72){var _0x22ddc4=function(_0x97a8aa){while(--_0x97a8aa){_0x44e78f['push'](_0x44e78f['shift']());}};_0x22ddc4(++_0x21aa72);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'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 20aeff2..16ca283 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cd6=['Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererexten','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeaccountcode','transfereelinkedid','isexternal','context','extension','blind','attendedTransfer','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetcontext','transfertargetexten','transfertargetlinkedid','attended','../client','transfers'];(function(_0x3a2855,_0x3495e1){var _0x1fc9cc=function(_0x3265f3){while(--_0x3265f3){_0x3a2855['push'](_0x3a2855['shift']());}};_0x1fc9cc(++_0x3495e1);}(_0x3cd6,0x116));var _0x63cd=function(_0x4783ee,_0x4735d9){_0x4783ee=_0x4783ee-0x0;var _0xff9fbf=_0x3cd6[_0x4783ee];return _0xff9fbf;};'use strict';var client=require(_0x63cd('0x0'));exports[_0x63cd('0x1')]={};exports['blindTransfer']=function(_0x2ffb79){return client[_0x63cd('0x2')](_0x63cd('0x3'),{'body':{'result':_0x2ffb79[_0x63cd('0x4')],'transfererchannel':_0x2ffb79[_0x63cd('0x5')],'transferercalleridnum':_0x2ffb79[_0x63cd('0x6')],'transferercalleridname':_0x2ffb79[_0x63cd('0x7')],'transfererconnectedlinenum':_0x2ffb79[_0x63cd('0x8')],'transfererconnectedlinename':_0x2ffb79[_0x63cd('0x9')],'transfereraccountcode':_0x2ffb79[_0x63cd('0xa')],'transferercontext':_0x2ffb79[_0x63cd('0xb')],'transfererexten':_0x2ffb79[_0x63cd('0xc')],'transfererlinkedid':_0x2ffb79['transfererlinkedid'],'transfereechannel':_0x2ffb79[_0x63cd('0xd')],'transfereecalleridnum':_0x2ffb79[_0x63cd('0xe')],'transfereecalleridname':_0x2ffb79[_0x63cd('0xf')],'transfereeconnectedlinenum':_0x2ffb79[_0x63cd('0x10')],'transfereeconnectedlinename':_0x2ffb79['transfereeconnectedlinename'],'transfereeaccountcode':_0x2ffb79[_0x63cd('0x11')],'transfereecontext':_0x2ffb79['transfereecontext'],'transfereeexten':_0x2ffb79['transfereeexten'],'transfereelinkedid':_0x2ffb79[_0x63cd('0x12')],'isexternal':_0x2ffb79[_0x63cd('0x13')],'context':_0x2ffb79[_0x63cd('0x14')],'extension':_0x2ffb79[_0x63cd('0x15')],'type':_0x63cd('0x16')},'log':'CreateVoiceTransferReport'});};exports[_0x63cd('0x17')]=function(_0x193e17){return client[_0x63cd('0x2')](_0x63cd('0x3'),{'body':{'result':_0x193e17['result'],'transfererchannel':_0x193e17[_0x63cd('0x18')],'transferercalleridnum':_0x193e17[_0x63cd('0x19')],'transferercalleridname':_0x193e17[_0x63cd('0x1a')],'transfererconnectedlinenum':_0x193e17[_0x63cd('0x1b')],'transfererconnectedlinename':_0x193e17[_0x63cd('0x1c')],'transfereraccountcode':_0x193e17[_0x63cd('0x1d')],'transferercontext':_0x193e17[_0x63cd('0x1e')],'transfererexten':_0x193e17[_0x63cd('0x1f')],'transfererlinkedid':_0x193e17[_0x63cd('0x20')],'transfereechannel':_0x193e17['transfertargetchannel'],'transfereecalleridnum':_0x193e17['transfertargetcalleridnum'],'transfereecalleridname':_0x193e17[_0x63cd('0x21')],'transfereeconnectedlinenum':_0x193e17[_0x63cd('0x22')],'transfereeconnectedlinename':_0x193e17[_0x63cd('0x23')],'transfereeaccountcode':_0x193e17['transfertargetaccountcode'],'transfereecontext':_0x193e17[_0x63cd('0x24')],'transfereeexten':_0x193e17[_0x63cd('0x25')],'transfereelinkedid':_0x193e17[_0x63cd('0x26')],'isexternal':_0x193e17[_0x63cd('0x13')],'context':_0x193e17['origtransferercontext'],'extension':_0x193e17['origtransfererexten'],'type':_0x63cd('0x27')},'log':_0x63cd('0x3')});};
\ No newline at end of file
+var _0x8430=['transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereelinkedid','isexternal','context','blind','attendedTransfer','origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetexten','transfertargetlinkedid','../client','transfers','blindTransfer','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transfererconnectedlinenum','transfereraccountcode','transferercontext','transfererexten','transfererlinkedid','transfereecalleridnum'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0x8430,0x17e));var _0x0843=function(_0x525673,_0xb429c2){_0x525673=_0x525673-0x0;var _0x8f7574=_0x8430[_0x525673];return _0x8f7574;};'use strict';var client=require(_0x0843('0x0'));exports[_0x0843('0x1')]={};exports[_0x0843('0x2')]=function(_0x2aa64c){return client[_0x0843('0x3')](_0x0843('0x4'),{'body':{'result':_0x2aa64c[_0x0843('0x5')],'transfererchannel':_0x2aa64c[_0x0843('0x6')],'transferercalleridnum':_0x2aa64c[_0x0843('0x7')],'transferercalleridname':_0x2aa64c['transferercalleridname'],'transfererconnectedlinenum':_0x2aa64c[_0x0843('0x8')],'transfererconnectedlinename':_0x2aa64c['transfererconnectedlinename'],'transfereraccountcode':_0x2aa64c[_0x0843('0x9')],'transferercontext':_0x2aa64c[_0x0843('0xa')],'transfererexten':_0x2aa64c[_0x0843('0xb')],'transfererlinkedid':_0x2aa64c[_0x0843('0xc')],'transfereechannel':_0x2aa64c['transfereechannel'],'transfereecalleridnum':_0x2aa64c[_0x0843('0xd')],'transfereecalleridname':_0x2aa64c[_0x0843('0xe')],'transfereeconnectedlinenum':_0x2aa64c[_0x0843('0xf')],'transfereeconnectedlinename':_0x2aa64c[_0x0843('0x10')],'transfereeaccountcode':_0x2aa64c[_0x0843('0x11')],'transfereecontext':_0x2aa64c[_0x0843('0x12')],'transfereeexten':_0x2aa64c['transfereeexten'],'transfereelinkedid':_0x2aa64c[_0x0843('0x13')],'isexternal':_0x2aa64c[_0x0843('0x14')],'context':_0x2aa64c[_0x0843('0x15')],'extension':_0x2aa64c['extension'],'type':_0x0843('0x16')},'log':'CreateVoiceTransferReport'});};exports[_0x0843('0x17')]=function(_0x33c106){return client[_0x0843('0x3')](_0x0843('0x4'),{'body':{'result':_0x33c106['result'],'transfererchannel':_0x33c106[_0x0843('0x18')],'transferercalleridnum':_0x33c106['origtransferercalleridnum'],'transferercalleridname':_0x33c106[_0x0843('0x19')],'transfererconnectedlinenum':_0x33c106[_0x0843('0x1a')],'transfererconnectedlinename':_0x33c106[_0x0843('0x1b')],'transfereraccountcode':_0x33c106['origtransfereraccountcode'],'transferercontext':_0x33c106['secondtransferercontext'],'transfererexten':_0x33c106[_0x0843('0x1c')],'transfererlinkedid':_0x33c106[_0x0843('0x1d')],'transfereechannel':_0x33c106[_0x0843('0x1e')],'transfereecalleridnum':_0x33c106['transfertargetcalleridnum'],'transfereecalleridname':_0x33c106['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x33c106[_0x0843('0x1f')],'transfereeconnectedlinename':_0x33c106[_0x0843('0x20')],'transfereeaccountcode':_0x33c106[_0x0843('0x21')],'transfereecontext':_0x33c106['transfertargetcontext'],'transfereeexten':_0x33c106[_0x0843('0x22')],'transfereelinkedid':_0x33c106[_0x0843('0x23')],'isexternal':_0x33c106[_0x0843('0x14')],'context':_0x33c106['origtransferercontext'],'extension':_0x33c106['origtransfererexten'],'type':'attended'},'log':_0x0843('0x4')});};
\ No newline at end of file
index 163b145..0579735 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['http','127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','moment','../../../config/environment','../ami','../model/voiceQueueSummary','listen','name','timers','updateAcw','agents','updateStatusRealtime','voiceStatus','pause','isConnected','error','asterisk','ami\x20disconnected','join','pick','keys','reload','Reload','message','catch','username','command','action','Command','then','voiceQueues','hasOwnProperty','push','length','find','omit','undefined','values','channels','validate','map','uniqueid','channel','format','wav','MixMonitor','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','isNil','toLowerCase','mixmonitorid','rec','status','Channel\x20doesn\x27t\x20exist','Action','StopMixMonitor','destinationchannel','stop','filename','queueChannels','type','outbound','includes','Invalid\x20type\x20parameter.\x20Allowed\x20values:\x20inbound,\x20outbound','filter','count','rows','voicequeuechannelhangup','voicequeuechannelredirect','Redirect','exten','context','telephones','trunks','outboundChannels','run','custom:','event','faxAccounts','send'];(function(_0x1ab0bf,_0x132cd){var _0x25736b=function(_0x213174){while(--_0x213174){_0x1ab0bf['push'](_0x1ab0bf['shift']());}};_0x25736b(++_0x132cd);}(_0x7a54,0x106));var _0x47a5=function(_0x25ed94,_0x3cdc87){_0x25ed94=_0x25ed94-0x0;var _0x2061d5=_0x7a54[_0x25ed94];return _0x2061d5;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var jayson=require(_0x47a5('0x2'));var schema=require('validate');var moment=require(_0x47a5('0x3'));var config=require(_0x47a5('0x4'));var properties=require('../properties');var ami=require(_0x47a5('0x5'));var VoiceQueueSummary=require(_0x47a5('0x6'));exports[_0x47a5('0x7')]=function(_0x3717e1,_0xfdf934,_0x545a97){return new Promise(function(_0x3d5629,_0x59199c){var _0x343372={'QueuePause':function(_0x30e405){return new Promise(function(_0x506eda){var _0x194fb0=util['format']('%s/%s','SIP',_0x30e405[_0x47a5('0x8')]);if(_0x3717e1[_0x47a5('0x9')]&&_0x3717e1['timers'][_0x194fb0]&&_0x3717e1[_0x47a5('0x9')][_0x194fb0]['timer']){_0x3717e1['timers'][_0x194fb0][_0x47a5('0xa')]();}if(_0x3717e1[_0x47a5('0xb')][_0x194fb0]){_0x3717e1[_0x47a5('0xb')][_0x194fb0][_0x47a5('0xc')]({'state':_0x3717e1[_0x47a5('0xb')][_0x194fb0][_0x47a5('0xd')],'statePause':_0x30e405[_0x47a5('0xe')]?!![]:![]});}_0x506eda({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x44bd3e){var _0x221b54=this;return new Promise(function(_0x1cf309,_0x711793){if(ami[_0x47a5('0xf')]()==![]){return _0x711793(_0x221b54[_0x47a5('0x10')](0x1f4,[config[_0x47a5('0x11')]['ip'],config[_0x47a5('0x11')]['username'],_0x47a5('0x12')][_0x47a5('0x13')]('\x20')));}_0x44bd3e=_[_0x47a5('0x14')](_0x44bd3e,_[_0x47a5('0x15')](properties[_0x47a5('0x16')]['module']));_0x44bd3e['action']=_0x47a5('0x17');return ami['Action'](_0x44bd3e)['then'](function(_0x423a81){_0x1cf309({'code':0xc8,'message':_0x423a81[_0x47a5('0x18')]});})[_0x47a5('0x19')](function(_0x1ef371){_0x711793(_0x221b54[_0x47a5('0x10')](0x1f5,_0x1ef371[_0x47a5('0x18')]));});});},'Command':function(_0x2763d6){var _0xe3c618=this;return new Promise(function(_0x3aed38,_0x4a9fcb){if(ami[_0x47a5('0xf')]()==![]){return _0x4a9fcb(_0xe3c618[_0x47a5('0x10')](0x1f4,[config['asterisk']['ip'],config[_0x47a5('0x11')][_0x47a5('0x1a')],_0x47a5('0x12')]['join']('\x20')));}_0x2763d6=_[_0x47a5('0x14')](_0x2763d6,_0x47a5('0x1b'));_0x2763d6[_0x47a5('0x1c')]=_0x47a5('0x1d');return ami['Action'](_0x2763d6)[_0x47a5('0x1e')](function(_0x385687){_0x3aed38({'code':0xc8,'message':_0x385687['content']});})[_0x47a5('0x19')](function(_0xc4cd63){_0x4a9fcb(_0xe3c618[_0x47a5('0x10')](0x1f5,_0xc4cd63[_0x47a5('0x18')]));});});},'VoiceQueues':function(){return new Promise(function(_0x3abd6a){var _0x50bf17=[];for(var _0x53078a in _0x3717e1[_0x47a5('0x1f')]){if(_0x3717e1['voiceQueues'][_0x47a5('0x20')](_0x53078a)){var _0x5b6c4e=_0x3717e1[_0x47a5('0x1f')][_0x53078a];var _0x378208=new VoiceQueueSummary(_0x5b6c4e);_0x50bf17[_0x47a5('0x21')](_0x378208);}}_0x3abd6a({'count':_0x50bf17[_0x47a5('0x22')],'rows':_0x50bf17});});},'UpdateVoiceQueue':function(_0x21f296){return new Promise(function(_0x3ba0b7,_0x24b162){var _0x136b14=_[_0x47a5('0x23')](_0x3717e1[_0x47a5('0x1f')],{'id':parseInt(_0x21f296['id'])});var _0x1127f8=_[_0x47a5('0x24')](_0x21f296,['id']);if(_0x136b14){for(var _0x3ad507 in _0x1127f8){if(typeof _0x1127f8[_0x3ad507]!=='undefined'&&typeof _0x136b14[_0x3ad507]!==_0x47a5('0x25')){_0x136b14[_0x3ad507]=_0x1127f8[_0x3ad507];}}_0x3ba0b7(_0x136b14);}else{_0x24b162();}});},'VoiceChannels':function(){return new Promise(function(_0x51833b){var _0x2ef875=_[_0x47a5('0x26')](_0x3717e1[_0x47a5('0x27')]);_0x51833b({'count':_0x2ef875['length'],'rows':_0x2ef875});});},'VoiceChannelMixMonitor':function(_0x256650){var _0x625952=this;return new Promise(function(_0x39b50b,_0x1f1c68){if(ami['isConnected']()==![]){return _0x1f1c68(_0x625952['error'](0x1f4,[config[_0x47a5('0x11')]['ip'],config[_0x47a5('0x11')]['username'],'ami\x20disconnected'][_0x47a5('0x13')]('\x20')));}var _0x51544e=schema(properties['voicechannel'])[_0x47a5('0x28')](_0x256650);if(_0x51544e['length']>0x0){return _0x1f1c68(_0x625952[_0x47a5('0x10')](0x1f4,_[_0x47a5('0x29')](_0x51544e,'message')['join'](',\x20')));}var _0x274e34=_['find'](_0x3717e1[_0x47a5('0x27')],{'uniqueid':_0x256650[_0x47a5('0x2a')]});if(_0x274e34&&_0x274e34[_0x47a5('0x2b')]){var _0x52749b=util[_0x47a5('0x2c')]('%s.%s',_0x256650['filename']||_0x256650[_0x47a5('0x2a')],_0x256650['format']||_0x47a5('0x2d'));return ami['Action']({'action':_0x47a5('0x2e'),'channel':_0x274e34[_0x47a5('0x2b')],'file':_0x52749b,'options':_0x47a5('0x2f')})[_0x47a5('0x1e')](function(_0x36add5){var _0xed6320=_[_0x47a5('0x23')](_0x274e34[_0x47a5('0x30')],{'filename':_0x47a5('0x31')+_0x52749b['toLowerCase']()});if(_[_0x47a5('0x32')](_0xed6320)){_0x274e34[_0x47a5('0x30')]['push']({'filename':_0x47a5('0x31')+_0x52749b[_0x47a5('0x33')](),'createdAt':moment()[_0x47a5('0x2c')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':_0x36add5[_0x47a5('0x34')],'status':_0x47a5('0x35')});}else{_0xed6320['mixmonitorid']=_0x36add5[_0x47a5('0x34')];_0xed6320[_0x47a5('0x36')]='rec';}_0x39b50b({'code':0xc8,'message':[_0x256650['uniqueid'],'MixMonitor\x20Success',_0x36add5[_0x47a5('0x34')]]['join']('\x20'),'mixmonitorid':_0x36add5[_0x47a5('0x34')]});})[_0x47a5('0x19')](function(_0x301a85){_0x1f1c68(_0x625952[_0x47a5('0x10')](0x1f5,[_0x256650[_0x47a5('0x2a')],_0x301a85[_0x47a5('0x18')][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')));});}else{return _0x1f1c68(_0x625952[_0x47a5('0x10')](0x1f5,_0x47a5('0x37')));}});},'VoiceChannelStopMixMonitor':function(_0x280500){var _0x1658e8=this;return new Promise(function(_0x23d6d8,_0x56dbbd){if(ami[_0x47a5('0xf')]()==![]){return _0x56dbbd(_0x1658e8[_0x47a5('0x10')](0x1f4,[config[_0x47a5('0x11')]['ip'],config[_0x47a5('0x11')]['username'],_0x47a5('0x12')]['join']('\x20')));}var _0x47c7a2=schema(properties['voicechannel'])['validate'](_0x280500);if(_0x47c7a2[_0x47a5('0x22')]>0x0){return _0x56dbbd(_0x1658e8['error'](0x1f4,_[_0x47a5('0x29')](_0x47c7a2,_0x47a5('0x18'))[_0x47a5('0x13')](',\x20')));}var _0x494526=_[_0x47a5('0x23')](_0x3717e1[_0x47a5('0x27')],{'uniqueid':_0x280500['uniqueid']});if(_0x494526){return Promise['resolve']()[_0x47a5('0x1e')](function(){if(_0x494526['channel']){return ami[_0x47a5('0x38')]({'action':_0x47a5('0x39'),'channel':_0x494526[_0x47a5('0x2b')],'mixmonitorid':_0x280500[_0x47a5('0x34')]})[_0x47a5('0x19')](function(){});}})[_0x47a5('0x1e')](function(){if(_0x494526[_0x47a5('0x3a')]){return ami[_0x47a5('0x38')]({'action':_0x47a5('0x39'),'channel':_0x494526[_0x47a5('0x3a')],'mixmonitorid':_0x280500[_0x47a5('0x34')]})[_0x47a5('0x19')](function(){});}})[_0x47a5('0x1e')](function(){var _0x3574d4=_[_0x47a5('0x23')](_0x494526[_0x47a5('0x30')],{'mixmonitorid':_0x280500['mixmonitorid']});if(_0x3574d4){_0x3574d4[_0x47a5('0x36')]=_0x47a5('0x3b');}})['then'](function(){var _0x52b3a8=util[_0x47a5('0x2c')]('%s.%s',_0x280500[_0x47a5('0x3c')]||_0x280500[_0x47a5('0x2a')],_0x280500['format']||'wav');var _0x3d85cc=_['find'](_0x494526[_0x47a5('0x30')],{'filename':_0x47a5('0x31')+_0x52b3a8[_0x47a5('0x33')]()});if(_0x3d85cc){_0x3d85cc[_0x47a5('0x36')]=_0x47a5('0x3b');}})[_0x47a5('0x1e')](function(){_0x23d6d8({'code':0xc8,'message':[_0x280500[_0x47a5('0x2a')],'StopMixMonitor\x20Success']['join']('\x20')});})[_0x47a5('0x19')](function(_0x411230){_0x56dbbd(_0x1658e8[_0x47a5('0x10')](0x1f5,[_0x280500[_0x47a5('0x2a')],_0x411230[_0x47a5('0x18')][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')));});}else{return _0x56dbbd(_0x1658e8['error'](0x1f5,_0x47a5('0x37')));}});},'VoiceQueuesChannels':function(_0x1c9a62){var _0x5f6a=this;return new Promise(function(_0x5c3c75){var _0x12ca40=_['values'](_0x3717e1[_0x47a5('0x3d')]);var _0xe31817={'count':_0x12ca40[_0x47a5('0x22')],'rows':_0x12ca40};if(_0x1c9a62&&_0x1c9a62[_0x47a5('0x3e')]){if(!['inbound',_0x47a5('0x3f')][_0x47a5('0x40')](_0x1c9a62[_0x47a5('0x3e')])){return _0x59199c(_0x5f6a[_0x47a5('0x10')](0x190,_0x47a5('0x41')));}var _0x6a53b3=_[_0x47a5('0x42')](_0x12ca40,function(_0x481089){return _0x481089[_0x47a5('0x3e')]===_0x1c9a62[_0x47a5('0x3e')];});_0xe31817[_0x47a5('0x43')]=_0x6a53b3[_0x47a5('0x22')];_0xe31817[_0x47a5('0x44')]=_0x6a53b3;}_0x5c3c75(_0xe31817);});},'VoiceQueuesChannel':function(_0x1ab0bf){var _0x572233=this;return new Promise(function(_0x1ad6a9,_0x245a15){var _0x1aa581=schema(properties['voicequeuechannel'])[_0x47a5('0x28')](_0x1ab0bf);if(_0x1aa581[_0x47a5('0x22')]>0x0){return _0x245a15(_0x572233[_0x47a5('0x10')](0x1f4,_['map'](_0x1aa581,'message')[_0x47a5('0x13')](',\x20')));}var _0x376e1d=_['find'](_0x3717e1['queueChannels'],{'uniqueid':_0x1ab0bf[_0x47a5('0x2a')]});if(_0x376e1d){_0x1ad6a9(_0x376e1d);}else{return _0x245a15(_0x572233['error'](0x1f5,_0x47a5('0x37')));}});},'VoiceQueuesChannelHangup':function(_0x5d383d){var _0x482de6=this;return new Promise(function(_0x389ed9,_0x46d2d3){if(ami['isConnected']()==![]){return _0x46d2d3(_0x482de6[_0x47a5('0x10')](0x1f4,[config[_0x47a5('0x11')]['ip'],config['asterisk']['username'],_0x47a5('0x12')][_0x47a5('0x13')]('\x20')));}var _0x867da0=schema(properties[_0x47a5('0x45')])['validate'](_0x5d383d);if(_0x867da0[_0x47a5('0x22')]>0x0){return _0x46d2d3(_0x482de6[_0x47a5('0x10')](0x1f4,_[_0x47a5('0x29')](_0x867da0,'message')[_0x47a5('0x13')](',\x20')));}var _0x4db625=_[_0x47a5('0x23')](_0x3717e1[_0x47a5('0x3d')],{'uniqueid':_0x5d383d[_0x47a5('0x2a')]});if(_0x4db625&&_0x4db625[_0x47a5('0x2b')]){return ami[_0x47a5('0x38')]({'action':'Hangup','channel':_0x4db625[_0x47a5('0x2b')]})['then'](function(_0x5cbe97){_0x389ed9({'code':0xc8,'message':[_0x5d383d['uniqueid'],_0x5cbe97['message'][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')});})[_0x47a5('0x19')](function(_0x52e3ee){_0x46d2d3(_0x482de6['error'](0x1f5,[_0x5d383d[_0x47a5('0x2a')],_0x52e3ee[_0x47a5('0x18')][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')));});}else{return _0x46d2d3(_0x482de6[_0x47a5('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x3474b7){var _0x519e9e=this;return new Promise(function(_0x22c886,_0x274d31){if(ami['isConnected']()==![]){return _0x274d31(_0x519e9e[_0x47a5('0x10')](0x1f4,[config[_0x47a5('0x11')]['ip'],config[_0x47a5('0x11')][_0x47a5('0x1a')],_0x47a5('0x12')][_0x47a5('0x13')]('\x20')));}var _0x35cca8=schema(properties[_0x47a5('0x46')])['validate'](_0x3474b7);if(_0x35cca8[_0x47a5('0x22')]>0x0){return _0x274d31(_0x519e9e[_0x47a5('0x10')](0x1f4,_[_0x47a5('0x29')](_0x35cca8,_0x47a5('0x18'))[_0x47a5('0x13')](',\x20')));}var _0x4bbe14=_[_0x47a5('0x23')](_0x3717e1[_0x47a5('0x3d')],{'uniqueid':_0x3474b7[_0x47a5('0x2a')]});if(_0x4bbe14&&_0x4bbe14[_0x47a5('0x2b')]){return ami[_0x47a5('0x38')]({'action':_0x47a5('0x47'),'channel':_0x4bbe14[_0x47a5('0x2b')],'exten':_0x3474b7[_0x47a5('0x48')],'context':_0x3474b7[_0x47a5('0x49')]||_0x4bbe14[_0x47a5('0x49')],'priority':0x1})[_0x47a5('0x1e')](function(_0x44fda9){_0x22c886({'code':0xc8,'message':[_0x3474b7[_0x47a5('0x2a')],_0x44fda9[_0x47a5('0x18')][_0x47a5('0x33')]()]['join']('\x20')});})[_0x47a5('0x19')](function(_0x284fb8){_0x274d31(_0x519e9e[_0x47a5('0x10')](0x1f5,[_0x3474b7['uniqueid'],_0x284fb8[_0x47a5('0x18')][_0x47a5('0x33')]()][_0x47a5('0x13')]('\x20')));});}else{return _0x274d31(_0x519e9e[_0x47a5('0x10')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x3ac402){return new Promise(function(_0x522ccf){var _0x2d5ee6=_['values'](_0x3717e1[_0x47a5('0xb')]);if(_0x3ac402&&_0x3ac402['id']){var _0x4cf7c5=_[_0x47a5('0x23')](_0x2d5ee6,function(_0x2f27c3){return _0x2f27c3['id']===_0x3ac402['id'];});_0x522ccf(_0x4cf7c5);}else{_0x522ccf({'count':_0x2d5ee6[_0x47a5('0x22')],'rows':_0x2d5ee6});}});},'Telephones':function(){return new Promise(function(_0x58473b){var _0x4af557=_['values'](_0x3717e1[_0x47a5('0x4a')]);_0x58473b({'count':_0x4af557[_0x47a5('0x22')],'rows':_0x4af557});});},'Trunks':function(){return new Promise(function(_0xe3c0a7){var _0x117510=_['values'](_0x3717e1[_0x47a5('0x4b')]);_0xe3c0a7({'count':_0x117510[_0x47a5('0x22')],'rows':_0x117510});});},'OutboundChannels':function(){return new Promise(function(_0x390bc0){var _0xd5b23f=_[_0x47a5('0x26')](_0x3717e1[_0x47a5('0x4c')]);_0x390bc0({'count':_0xd5b23f[_0x47a5('0x22')],'rows':_0xd5b23f});});},'Outbound':function(){return new Promise(function(_0x39939a){_0x39939a(_0x3717e1[_0x47a5('0x3f')]);});},'Campaigns':function(){return new Promise(function(_0xc69a68){var _0x2e6fcc=_[_0x47a5('0x26')](_0x3717e1['campaigns']);_0xc69a68({'count':_0x2e6fcc[_0x47a5('0x22')],'rows':_0x2e6fcc});});},'VoiceQueuesPreview':function(_0x4833be){var _0x2ad00a=this;return new Promise(function(_0x2ac30f,_0x281e5f){_0xfdf934[_0x47a5('0x4d')](_0x4833be['id'])[_0x47a5('0x1e')](function(_0xa9c853){_0x2ac30f({'code':0xc8,'message':_0xa9c853[_0x47a5('0x18')]});})[_0x47a5('0x19')](function(_0x11c1db){_0x281e5f(_0x2ad00a[_0x47a5('0x10')](0x1f4,_0x11c1db[_0x47a5('0x18')]));});});},'EventManager':function(_0x1f07ac){var _0x8f0035=this;return new Promise(function(_0x2d434c,_0x441d64){if(!_0x1f07ac['event']){return _0x441d64(_0x8f0035['error'](0x1f4,'Event\x20name\x20mandatory'));}ami['emit'](_0x47a5('0x4e')+_0x1f07ac[_0x47a5('0x4f')],_0x1f07ac['message']);_0x2d434c({'code':0xc8,'message':_0x1f07ac});});},'FaxAccounts':function(){return new Promise(function(_0x732e00){var _0x44dda2=_[_0x47a5('0x26')](_0x3717e1[_0x47a5('0x50')]);_0x732e00({'count':_0x44dda2[_0x47a5('0x22')],'rows':_0x44dda2});});},'SendFax':function(_0x930d25){var _0x218dfa=this;return new Promise(function(_0x1c7302,_0x2e9a96){_0x545a97[_0x47a5('0x51')](_0x930d25)[_0x47a5('0x1e')](function(_0x5e5f16){_0x1c7302({'code':0xc8,'message':_0x5e5f16[_0x47a5('0x18')]});})[_0x47a5('0x19')](function(_0x420671){_0x2e9a96(_0x218dfa['error'](0x1f4,_0x420671[_0x47a5('0x18')]));});});},'CheckAfterSend':function(_0x32f393){var _0x17b61d=this;return new Promise(function(_0x5d41d8,_0x19dc8c){_0x545a97['checkAfterSend'](_0x32f393)['then'](function(_0x356e16){_0x5d41d8({'code':0xc8,'message':_0x356e16[_0x47a5('0x18')]});})[_0x47a5('0x19')](function(_0x27333e){_0x19dc8c(_0x17b61d[_0x47a5('0x10')](0x1f4,_0x27333e[_0x47a5('0x18')]));});});}};var _0x479a82=jayson['server'](_0x343372)[_0x47a5('0x52')]();_0x479a82['on']('error',function(_0x24dbee){return _0x59199c(_0x24dbee);});_0x479a82[_0x47a5('0x7')](0x232a,_0x47a5('0x53'),function(){console[_0x47a5('0x54')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x3d5629(_0x47a5('0x55')+0x232a);});});};
\ No newline at end of file
+var _0xb10b=['type','Invalid\x20type\x20parameter.\x20Allowed\x20values:\x20inbound,\x20outbound','filter','count','rows','voicequeuechannel','voicequeuechannelhangup','Hangup','voicequeuechannelredirect','Redirect','telephones','trunks','run','event','Event\x20name\x20mandatory','faxAccounts','send','checkAfterSend','server','http','127.0.0.1','RPC\x20listening\x20on\x20port:','lodash','jayson/promise','validate','moment','../properties','../ami','../model/voiceQueueSummary','listen','format','%s/%s','SIP','name','timers','timer','updateAcw','agents','voiceStatus','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','join','pick','keys','module','action','Reload','Action','then','message','catch','command','Command','content','voiceQueues','hasOwnProperty','push','length','find','omit','undefined','values','voicechannel','map','channels','uniqueid','channel','%s.%s','filename','wav','ai(mixmonitorid)','/var/spool/asterisk/monitor/','toLowerCase','mixmonitorid','rec','status','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','StopMixMonitor','destinationchannel','monitors','stop','queueChannels','inbound','outbound','includes'];(function(_0x1354cb,_0x3a2cd5){var _0x483b7e=function(_0x1d4ace){while(--_0x1d4ace){_0x1354cb['push'](_0x1354cb['shift']());}};_0x483b7e(++_0x3a2cd5);}(_0xb10b,0x12a));var _0xbb10=function(_0x3b166b,_0x2c8ba1){_0x3b166b=_0x3b166b-0x0;var _0x579602=_0xb10b[_0x3b166b];return _0x579602;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var jayson=require(_0xbb10('0x1'));var schema=require(_0xbb10('0x2'));var moment=require(_0xbb10('0x3'));var config=require('../../../config/environment');var properties=require(_0xbb10('0x4'));var ami=require(_0xbb10('0x5'));var VoiceQueueSummary=require(_0xbb10('0x6'));exports[_0xbb10('0x7')]=function(_0x49baf4,_0x312b72,_0x481979){return new Promise(function(_0x328583,_0x3cdd53){var _0x513741={'QueuePause':function(_0x1b9e94){return new Promise(function(_0x3fb675){var _0x21370f=util[_0xbb10('0x8')](_0xbb10('0x9'),_0xbb10('0xa'),_0x1b9e94[_0xbb10('0xb')]);if(_0x49baf4[_0xbb10('0xc')]&&_0x49baf4['timers'][_0x21370f]&&_0x49baf4['timers'][_0x21370f][_0xbb10('0xd')]){_0x49baf4[_0xbb10('0xc')][_0x21370f][_0xbb10('0xe')]();}if(_0x49baf4['agents'][_0x21370f]){_0x49baf4[_0xbb10('0xf')][_0x21370f]['updateStatusRealtime']({'state':_0x49baf4[_0xbb10('0xf')][_0x21370f][_0xbb10('0x10')],'statePause':_0x1b9e94[_0xbb10('0x11')]?!![]:![]});}_0x3fb675({'code':0xc8,'message':_0xbb10('0x12')});});},'Reload':function(_0x442548){var _0x147230=this;return new Promise(function(_0x58a612,_0x26e021){if(ami[_0xbb10('0x13')]()==![]){return _0x26e021(_0x147230[_0xbb10('0x14')](0x1f4,[config[_0xbb10('0x15')]['ip'],config[_0xbb10('0x15')][_0xbb10('0x16')],_0xbb10('0x17')][_0xbb10('0x18')]('\x20')));}_0x442548=_[_0xbb10('0x19')](_0x442548,_[_0xbb10('0x1a')](properties['reload'][_0xbb10('0x1b')]));_0x442548[_0xbb10('0x1c')]=_0xbb10('0x1d');return ami[_0xbb10('0x1e')](_0x442548)[_0xbb10('0x1f')](function(_0x1682a4){_0x58a612({'code':0xc8,'message':_0x1682a4[_0xbb10('0x20')]});})[_0xbb10('0x21')](function(_0xbf2906){_0x26e021(_0x147230[_0xbb10('0x14')](0x1f5,_0xbf2906['message']));});});},'Command':function(_0x5ff0cf){var _0x19f48d=this;return new Promise(function(_0x388fab,_0x109908){if(ami[_0xbb10('0x13')]()==![]){return _0x109908(_0x19f48d[_0xbb10('0x14')](0x1f4,[config['asterisk']['ip'],config[_0xbb10('0x15')][_0xbb10('0x16')],'ami\x20disconnected']['join']('\x20')));}_0x5ff0cf=_[_0xbb10('0x19')](_0x5ff0cf,_0xbb10('0x22'));_0x5ff0cf[_0xbb10('0x1c')]=_0xbb10('0x23');return ami[_0xbb10('0x1e')](_0x5ff0cf)[_0xbb10('0x1f')](function(_0x407cb4){_0x388fab({'code':0xc8,'message':_0x407cb4[_0xbb10('0x24')]});})[_0xbb10('0x21')](function(_0x395404){_0x109908(_0x19f48d[_0xbb10('0x14')](0x1f5,_0x395404[_0xbb10('0x20')]));});});},'VoiceQueues':function(){return new Promise(function(_0x537898){var _0x4fedac=[];for(var _0x4fb5e0 in _0x49baf4[_0xbb10('0x25')]){if(_0x49baf4[_0xbb10('0x25')][_0xbb10('0x26')](_0x4fb5e0)){var _0x4e25ff=_0x49baf4[_0xbb10('0x25')][_0x4fb5e0];var _0x24d586=new VoiceQueueSummary(_0x4e25ff);_0x4fedac[_0xbb10('0x27')](_0x24d586);}}_0x537898({'count':_0x4fedac[_0xbb10('0x28')],'rows':_0x4fedac});});},'UpdateVoiceQueue':function(_0x1acce9){return new Promise(function(_0x20d946,_0x2a0e8b){var _0x4aabb9=_[_0xbb10('0x29')](_0x49baf4[_0xbb10('0x25')],{'id':parseInt(_0x1acce9['id'])});var _0xfc3595=_[_0xbb10('0x2a')](_0x1acce9,['id']);if(_0x4aabb9){for(var _0x1d30aa in _0xfc3595){if(typeof _0xfc3595[_0x1d30aa]!==_0xbb10('0x2b')&&typeof _0x4aabb9[_0x1d30aa]!=='undefined'){_0x4aabb9[_0x1d30aa]=_0xfc3595[_0x1d30aa];}}_0x20d946(_0x4aabb9);}else{_0x2a0e8b();}});},'VoiceChannels':function(){return new Promise(function(_0x221624){var _0x4ee02e=_[_0xbb10('0x2c')](_0x49baf4['channels']);_0x221624({'count':_0x4ee02e[_0xbb10('0x28')],'rows':_0x4ee02e});});},'VoiceChannelMixMonitor':function(_0x1dcc9c){var _0x1b59f9=this;return new Promise(function(_0x491db4,_0x518d47){if(ami[_0xbb10('0x13')]()==![]){return _0x518d47(_0x1b59f9[_0xbb10('0x14')](0x1f4,[config['asterisk']['ip'],config[_0xbb10('0x15')][_0xbb10('0x16')],_0xbb10('0x17')][_0xbb10('0x18')]('\x20')));}var _0x37a83f=schema(properties[_0xbb10('0x2d')])[_0xbb10('0x2')](_0x1dcc9c);if(_0x37a83f['length']>0x0){return _0x518d47(_0x1b59f9[_0xbb10('0x14')](0x1f4,_[_0xbb10('0x2e')](_0x37a83f,_0xbb10('0x20'))[_0xbb10('0x18')](',\x20')));}var _0xfb2c5e=_[_0xbb10('0x29')](_0x49baf4[_0xbb10('0x2f')],{'uniqueid':_0x1dcc9c[_0xbb10('0x30')]});if(_0xfb2c5e&&_0xfb2c5e[_0xbb10('0x31')]){var _0x56943c=util[_0xbb10('0x8')](_0xbb10('0x32'),_0x1dcc9c[_0xbb10('0x33')]||_0x1dcc9c[_0xbb10('0x30')],_0x1dcc9c['format']||_0xbb10('0x34'));return ami['Action']({'action':'MixMonitor','channel':_0xfb2c5e[_0xbb10('0x31')],'file':_0x56943c,'options':_0xbb10('0x35')})[_0xbb10('0x1f')](function(_0x120d21){var _0x15d895=_[_0xbb10('0x29')](_0xfb2c5e['monitors'],{'filename':_0xbb10('0x36')+_0x56943c[_0xbb10('0x37')]()});if(_['isNil'](_0x15d895)){_0xfb2c5e['monitors']['push']({'filename':_0xbb10('0x36')+_0x56943c[_0xbb10('0x37')](),'createdAt':moment()[_0xbb10('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':_0x120d21[_0xbb10('0x38')],'status':_0xbb10('0x39')});}else{_0x15d895[_0xbb10('0x38')]=_0x120d21['mixmonitorid'];_0x15d895[_0xbb10('0x3a')]=_0xbb10('0x39');}_0x491db4({'code':0xc8,'message':[_0x1dcc9c[_0xbb10('0x30')],_0xbb10('0x3b'),_0x120d21['mixmonitorid']][_0xbb10('0x18')]('\x20'),'mixmonitorid':_0x120d21[_0xbb10('0x38')]});})['catch'](function(_0xe2040f){_0x518d47(_0x1b59f9[_0xbb10('0x14')](0x1f5,[_0x1dcc9c[_0xbb10('0x30')],_0xe2040f[_0xbb10('0x20')][_0xbb10('0x37')]()][_0xbb10('0x18')]('\x20')));});}else{return _0x518d47(_0x1b59f9['error'](0x1f5,_0xbb10('0x3c')));}});},'VoiceChannelStopMixMonitor':function(_0x1c7fae){var _0x3e7b4c=this;return new Promise(function(_0x3d3c41,_0x4943d9){if(ami[_0xbb10('0x13')]()==![]){return _0x4943d9(_0x3e7b4c[_0xbb10('0x14')](0x1f4,[config[_0xbb10('0x15')]['ip'],config[_0xbb10('0x15')]['username'],_0xbb10('0x17')][_0xbb10('0x18')]('\x20')));}var _0x54ac18=schema(properties['voicechannel'])[_0xbb10('0x2')](_0x1c7fae);if(_0x54ac18['length']>0x0){return _0x4943d9(_0x3e7b4c[_0xbb10('0x14')](0x1f4,_[_0xbb10('0x2e')](_0x54ac18,'message')[_0xbb10('0x18')](',\x20')));}var _0x1d82bf=_[_0xbb10('0x29')](_0x49baf4['channels'],{'uniqueid':_0x1c7fae[_0xbb10('0x30')]});if(_0x1d82bf){return Promise[_0xbb10('0x3d')]()[_0xbb10('0x1f')](function(){if(_0x1d82bf[_0xbb10('0x31')]){return ami[_0xbb10('0x1e')]({'action':_0xbb10('0x3e'),'channel':_0x1d82bf[_0xbb10('0x31')],'mixmonitorid':_0x1c7fae[_0xbb10('0x38')]})[_0xbb10('0x21')](function(){});}})[_0xbb10('0x1f')](function(){if(_0x1d82bf[_0xbb10('0x3f')]){return ami[_0xbb10('0x1e')]({'action':'StopMixMonitor','channel':_0x1d82bf[_0xbb10('0x3f')],'mixmonitorid':_0x1c7fae[_0xbb10('0x38')]})['catch'](function(){});}})[_0xbb10('0x1f')](function(){var _0x2f5027=_[_0xbb10('0x29')](_0x1d82bf[_0xbb10('0x40')],{'mixmonitorid':_0x1c7fae[_0xbb10('0x38')]});if(_0x2f5027){_0x2f5027[_0xbb10('0x3a')]=_0xbb10('0x41');}})['then'](function(){var _0x4a9793=util[_0xbb10('0x8')](_0xbb10('0x32'),_0x1c7fae[_0xbb10('0x33')]||_0x1c7fae['uniqueid'],_0x1c7fae['format']||_0xbb10('0x34'));var _0x34cf4e=_[_0xbb10('0x29')](_0x1d82bf[_0xbb10('0x40')],{'filename':_0xbb10('0x36')+_0x4a9793[_0xbb10('0x37')]()});if(_0x34cf4e){_0x34cf4e[_0xbb10('0x3a')]=_0xbb10('0x41');}})[_0xbb10('0x1f')](function(){_0x3d3c41({'code':0xc8,'message':[_0x1c7fae[_0xbb10('0x30')],'StopMixMonitor\x20Success']['join']('\x20')});})[_0xbb10('0x21')](function(_0x467dba){_0x4943d9(_0x3e7b4c[_0xbb10('0x14')](0x1f5,[_0x1c7fae[_0xbb10('0x30')],_0x467dba[_0xbb10('0x20')][_0xbb10('0x37')]()][_0xbb10('0x18')]('\x20')));});}else{return _0x4943d9(_0x3e7b4c[_0xbb10('0x14')](0x1f5,_0xbb10('0x3c')));}});},'VoiceQueuesChannels':function(_0x1214f7){var _0x19ca3e=this;return new Promise(function(_0x20e18a){var _0x61e689=_[_0xbb10('0x2c')](_0x49baf4[_0xbb10('0x42')]);var _0x547a7a={'count':_0x61e689[_0xbb10('0x28')],'rows':_0x61e689};if(_0x1214f7&&_0x1214f7['type']){if(![_0xbb10('0x43'),_0xbb10('0x44')][_0xbb10('0x45')](_0x1214f7[_0xbb10('0x46')])){return _0x3cdd53(_0x19ca3e[_0xbb10('0x14')](0x190,_0xbb10('0x47')));}var _0x2e3326=_[_0xbb10('0x48')](_0x61e689,function(_0x180400){return _0x180400[_0xbb10('0x46')]===_0x1214f7[_0xbb10('0x46')];});_0x547a7a[_0xbb10('0x49')]=_0x2e3326[_0xbb10('0x28')];_0x547a7a[_0xbb10('0x4a')]=_0x2e3326;}_0x20e18a(_0x547a7a);});},'VoiceQueuesChannel':function(_0x4475e1){var _0x5de0cc=this;return new Promise(function(_0x4571b6,_0x466eb7){var _0x1b83a9=schema(properties[_0xbb10('0x4b')])[_0xbb10('0x2')](_0x4475e1);if(_0x1b83a9[_0xbb10('0x28')]>0x0){return _0x466eb7(_0x5de0cc['error'](0x1f4,_[_0xbb10('0x2e')](_0x1b83a9,_0xbb10('0x20'))[_0xbb10('0x18')](',\x20')));}var _0x14fed3=_[_0xbb10('0x29')](_0x49baf4[_0xbb10('0x42')],{'uniqueid':_0x4475e1[_0xbb10('0x30')]});if(_0x14fed3){_0x4571b6(_0x14fed3);}else{return _0x466eb7(_0x5de0cc[_0xbb10('0x14')](0x1f5,_0xbb10('0x3c')));}});},'VoiceQueuesChannelHangup':function(_0x40c4fb){var _0x2eb05a=this;return new Promise(function(_0x2a1ce1,_0x16932f){if(ami['isConnected']()==![]){return _0x16932f(_0x2eb05a['error'](0x1f4,[config[_0xbb10('0x15')]['ip'],config[_0xbb10('0x15')][_0xbb10('0x16')],_0xbb10('0x17')]['join']('\x20')));}var _0x506498=schema(properties[_0xbb10('0x4c')])[_0xbb10('0x2')](_0x40c4fb);if(_0x506498[_0xbb10('0x28')]>0x0){return _0x16932f(_0x2eb05a[_0xbb10('0x14')](0x1f4,_[_0xbb10('0x2e')](_0x506498,_0xbb10('0x20'))[_0xbb10('0x18')](',\x20')));}var _0x4a5fb9=_[_0xbb10('0x29')](_0x49baf4[_0xbb10('0x42')],{'uniqueid':_0x40c4fb['uniqueid']});if(_0x4a5fb9&&_0x4a5fb9['channel']){return ami['Action']({'action':_0xbb10('0x4d'),'channel':_0x4a5fb9[_0xbb10('0x31')]})[_0xbb10('0x1f')](function(_0x5bd1c0){_0x2a1ce1({'code':0xc8,'message':[_0x40c4fb['uniqueid'],_0x5bd1c0['message'][_0xbb10('0x37')]()][_0xbb10('0x18')]('\x20')});})[_0xbb10('0x21')](function(_0x4e9fbd){_0x16932f(_0x2eb05a[_0xbb10('0x14')](0x1f5,[_0x40c4fb[_0xbb10('0x30')],_0x4e9fbd['message']['toLowerCase']()][_0xbb10('0x18')]('\x20')));});}else{return _0x16932f(_0x2eb05a[_0xbb10('0x14')](0x1f5,_0xbb10('0x3c')));}});},'VoiceQueuesChannelRedirect':function(_0x237246){var _0x54b7c5=this;return new Promise(function(_0x43eaec,_0xec48ac){if(ami[_0xbb10('0x13')]()==![]){return _0xec48ac(_0x54b7c5['error'](0x1f4,[config[_0xbb10('0x15')]['ip'],config[_0xbb10('0x15')][_0xbb10('0x16')],'ami\x20disconnected'][_0xbb10('0x18')]('\x20')));}var _0x31e85e=schema(properties[_0xbb10('0x4e')])[_0xbb10('0x2')](_0x237246);if(_0x31e85e['length']>0x0){return _0xec48ac(_0x54b7c5[_0xbb10('0x14')](0x1f4,_[_0xbb10('0x2e')](_0x31e85e,_0xbb10('0x20'))[_0xbb10('0x18')](',\x20')));}var _0x56b3a3=_[_0xbb10('0x29')](_0x49baf4[_0xbb10('0x42')],{'uniqueid':_0x237246[_0xbb10('0x30')]});if(_0x56b3a3&&_0x56b3a3[_0xbb10('0x31')]){return ami[_0xbb10('0x1e')]({'action':_0xbb10('0x4f'),'channel':_0x56b3a3[_0xbb10('0x31')],'exten':_0x237246['exten'],'context':_0x237246['context']||_0x56b3a3['context'],'priority':0x1})[_0xbb10('0x1f')](function(_0x9c672d){_0x43eaec({'code':0xc8,'message':[_0x237246[_0xbb10('0x30')],_0x9c672d['message']['toLowerCase']()][_0xbb10('0x18')]('\x20')});})[_0xbb10('0x21')](function(_0xd9e743){_0xec48ac(_0x54b7c5[_0xbb10('0x14')](0x1f5,[_0x237246[_0xbb10('0x30')],_0xd9e743[_0xbb10('0x20')]['toLowerCase']()][_0xbb10('0x18')]('\x20')));});}else{return _0xec48ac(_0x54b7c5[_0xbb10('0x14')](0x1f5,_0xbb10('0x3c')));}});},'Agents':function(_0x14f16b){return new Promise(function(_0x2aaaa6){var _0x5bfc68=_['values'](_0x49baf4['agents']);if(_0x14f16b&&_0x14f16b['id']){var _0x329da7=_[_0xbb10('0x29')](_0x5bfc68,function(_0x36917f){return _0x36917f['id']===_0x14f16b['id'];});_0x2aaaa6(_0x329da7);}else{_0x2aaaa6({'count':_0x5bfc68[_0xbb10('0x28')],'rows':_0x5bfc68});}});},'Telephones':function(){return new Promise(function(_0x2f7d2a){var _0x1d40b8=_['values'](_0x49baf4[_0xbb10('0x50')]);_0x2f7d2a({'count':_0x1d40b8['length'],'rows':_0x1d40b8});});},'Trunks':function(){return new Promise(function(_0x4fe3b5){var _0x519a54=_[_0xbb10('0x2c')](_0x49baf4[_0xbb10('0x51')]);_0x4fe3b5({'count':_0x519a54[_0xbb10('0x28')],'rows':_0x519a54});});},'OutboundChannels':function(){return new Promise(function(_0x108f99){var _0x5ce94f=_[_0xbb10('0x2c')](_0x49baf4['outboundChannels']);_0x108f99({'count':_0x5ce94f['length'],'rows':_0x5ce94f});});},'Outbound':function(){return new Promise(function(_0x165fe9){_0x165fe9(_0x49baf4[_0xbb10('0x44')]);});},'Campaigns':function(){return new Promise(function(_0x29529c){var _0x2bd2ab=_[_0xbb10('0x2c')](_0x49baf4['campaigns']);_0x29529c({'count':_0x2bd2ab[_0xbb10('0x28')],'rows':_0x2bd2ab});});},'VoiceQueuesPreview':function(_0x19fcec){var _0x2c6429=this;return new Promise(function(_0x3f3d38,_0x43cdb7){_0x312b72[_0xbb10('0x52')](_0x19fcec['id'])[_0xbb10('0x1f')](function(_0x53fa98){_0x3f3d38({'code':0xc8,'message':_0x53fa98[_0xbb10('0x20')]});})[_0xbb10('0x21')](function(_0x30f3ea){_0x43cdb7(_0x2c6429[_0xbb10('0x14')](0x1f4,_0x30f3ea[_0xbb10('0x20')]));});});},'EventManager':function(_0x172be3){var _0xa3b23=this;return new Promise(function(_0x312a08,_0x5a4429){if(!_0x172be3[_0xbb10('0x53')]){return _0x5a4429(_0xa3b23[_0xbb10('0x14')](0x1f4,_0xbb10('0x54')));}ami['emit']('custom:'+_0x172be3['event'],_0x172be3[_0xbb10('0x20')]);_0x312a08({'code':0xc8,'message':_0x172be3});});},'FaxAccounts':function(){return new Promise(function(_0x5a3c44){var _0x4e3d6a=_[_0xbb10('0x2c')](_0x49baf4[_0xbb10('0x55')]);_0x5a3c44({'count':_0x4e3d6a[_0xbb10('0x28')],'rows':_0x4e3d6a});});},'SendFax':function(_0x12ed63){var _0x32ec27=this;return new Promise(function(_0x24dca6,_0x33116){_0x481979[_0xbb10('0x56')](_0x12ed63)[_0xbb10('0x1f')](function(_0x5206e1){_0x24dca6({'code':0xc8,'message':_0x5206e1[_0xbb10('0x20')]});})[_0xbb10('0x21')](function(_0x46b6d2){_0x33116(_0x32ec27[_0xbb10('0x14')](0x1f4,_0x46b6d2['message']));});});},'CheckAfterSend':function(_0x4c0795){var _0x3547a3=this;return new Promise(function(_0x2280bd,_0x30f0a4){_0x481979[_0xbb10('0x57')](_0x4c0795)['then'](function(_0x17d596){_0x2280bd({'code':0xc8,'message':_0x17d596[_0xbb10('0x20')]});})[_0xbb10('0x21')](function(_0xf7b3e1){_0x30f0a4(_0x3547a3[_0xbb10('0x14')](0x1f4,_0xf7b3e1['message']));});});}};var _0x5f0691=jayson[_0xbb10('0x58')](_0x513741)[_0xbb10('0x59')]();_0x5f0691['on'](_0xbb10('0x14'),function(_0x5239da){return _0x3cdd53(_0x5239da);});_0x5f0691[_0xbb10('0x7')](0x232a,_0xbb10('0x5a'),function(){console['log']('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x328583(_0xbb10('0x5b')+0x232a);});});};
\ No newline at end of file
index c4a4bc6..e2021d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5ea=['[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','map','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','calleridname','<unknown>','Unknown','destcalleridname','resolve','createContact','push','[CM][%s][%s]\x20Autocreate\x20disabled','format','user:%s','name','trigger:%s','action','toLowerCase','merge','lodash','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','localhost','[CM][%s][%s]','stringify','emit','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','split','phone','$or','destcalleridnum','calleridnum','routeId','firstName','mobile','fax','createdAt','updatedAt','getContacts','then','info','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid'];(function(_0x16bd44,_0x3c91ba){var _0x368a61=function(_0x1c68ab){while(--_0x1c68ab){_0x16bd44['push'](_0x16bd44['shift']());}};_0x368a61(++_0x3c91ba);}(_0xb5ea,0x1aa));var _0xab5e=function(_0x448aff,_0x57adc8){_0x448aff=_0x448aff-0x0;var _0x2b4e39=_0xb5ea[_0x448aff];return _0x2b4e39;};'use strict';var _=require(_0xab5e('0x0'));var BPromise=require(_0xab5e('0x1'));var Redis=require(_0xab5e('0x2'));var util=require(_0xab5e('0x3'));var config=require(_0xab5e('0x4'));var logger=require(_0xab5e('0x5'))(_0xab5e('0x6'));var cmContactRpc=require(_0xab5e('0x7'));config[_0xab5e('0x8')]=_[_0xab5e('0x9')](config[_0xab5e('0x8')],{'host':_0xab5e('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xab5e('0x8')]));function emit(_0x388b21,_0xf71a22,_0xbc521b,_0x5d5c41,_0x26910d){logger['info'](_0xab5e('0xb'),_0x388b21,_0xf71a22['id'],_0xbc521b,_0x5d5c41,JSON[_0xab5e('0xc')](_0x26910d));io['to'](_0xbc521b)[_0xab5e('0xd')](_0x5d5c41,_0x26910d);}exports[_0xab5e('0xe')]=function(_0x2f447d,_0x1380c6,_0x28d462,_0x5800ec){var _0x58ccf6,_0x4f08b2;var _0x3bbefd={};var _0x559fde;var _0x2d771d=Number(_0x28d462[_0xab5e('0xf')]);var _0x3beab4=_0x28d462[_0xab5e('0x10')]?Boolean(Number(_0x28d462[_0xab5e('0x10')])):![];var _0x95a013;var _0x15e4aa=![];if(!_[_0xab5e('0x11')](_0x28d462[_0xab5e('0x12')])){if(_0x28d462[_0xab5e('0x12')]=='1')_0x15e4aa=!![];}if(!_0x15e4aa){if(_0x5800ec[_0xab5e('0x13')]){_0x3bbefd['id']=_0x5800ec[_0xab5e('0x13')];}}if(!_0x3bbefd['id']){_0x3bbefd[_0xab5e('0x14')]=_0x2d771d;_0x95a013=_0x28d462[_0xab5e('0x15')]&&_0x28d462[_0xab5e('0x15')]!=='0'?_0x28d462[_0xab5e('0x15')][_0xab5e('0x16')](','):[_0xab5e('0x17')];_0x3bbefd[_0xab5e('0x18')]=_['map'](_0x95a013,function(_0x3156c2){var _0x3cecaa={};_0x3cecaa[_0x3156c2]=_0x5800ec['routeId']?_0x5800ec[_0xab5e('0x19')]:_0x5800ec[_0xab5e('0x1a')];return _0x3cecaa;});_0x559fde=_0x5800ec[_0xab5e('0x1b')]?_0x5800ec['destcalleridnum']:_0x5800ec[_0xab5e('0x1a')];}var _0x582820=['id',_0xab5e('0x1c'),'lastName','phone',_0xab5e('0x1d'),_0xab5e('0x1e'),'ListId',_0xab5e('0x1f'),'scheduledAt',_0xab5e('0x20')];var _0x1897fb=_['union'](_0x582820,_0x95a013);BPromise['resolve']()['then'](cmContactRpc[_0xab5e('0x21')]({'attributes':_0x1897fb,'where':_0x3bbefd,'phone':_0x559fde}))[_0xab5e('0x22')](function(_0x597293){_0x4f08b2=_0x597293;if(!_['isEmpty'](_0x4f08b2)){if(_0x4f08b2['length']===0x1){_0x58ccf6=_0x4f08b2[0x0];logger[_0xab5e('0x23')](_0xab5e('0x24'),_0x5800ec[_0xab5e('0x25')],_0x1380c6['id'],_0x58ccf6['id']);}else{logger['info'](_0xab5e('0x26'),_0x5800ec['uniqueid'],_0x1380c6['id'],_[_0xab5e('0x27')](_0x4f08b2,'id')[_0xab5e('0x28')](','));}return;}else{logger[_0xab5e('0x23')](_0xab5e('0x29'),_0x5800ec[_0xab5e('0x25')],_0x1380c6['id']);var _0x5566ba={'ListId':_0x2d771d};var _0x1adf91=_0x28d462['data4']&&_0x28d462[_0xab5e('0x2a')]!=='0'?_0x28d462['data4']:_0xab5e('0x17');if(_0x3beab4){logger['info']('[CM][%s][%s]\x20Autocreate\x20enabled',_0x5800ec['uniqueid'],_0x1380c6['id']);_0x5566ba[_0x1adf91]=_[_0xab5e('0x11')](_0x5800ec[_0xab5e('0x1b')])?_0x5800ec[_0xab5e('0x1a')]:_0x5800ec[_0xab5e('0x19')];if(_['isNil'](_0x5800ec['routeId'])){_0x5566ba[_0xab5e('0x1c')]=_0x5800ec[_0xab5e('0x2b')]&&_0x5800ec[_0xab5e('0x2b')]!==_0xab5e('0x2c')?_0x5800ec['calleridname']:_0xab5e('0x2d');}else{_0x5566ba[_0xab5e('0x1c')]=_0x5800ec[_0xab5e('0x2e')]&&_0x5800ec[_0xab5e('0x2e')]!=='<unknown>'?_0x5800ec['destcalleridname']:'Unknown';}return BPromise[_0xab5e('0x2f')]()['then'](cmContactRpc[_0xab5e('0x30')](_0x5566ba))['then'](function(_0x4ba699){_0x58ccf6=_0x4ba699;_0x4f08b2[_0xab5e('0x31')](_0x4ba699);if(_0x58ccf6){logger['info']('[CM][%s][%s]\x20Contact\x20created:%s',_0x5800ec[_0xab5e('0x25')],_0x1380c6['id'],_0x58ccf6['id']);}return;});}else{logger[_0xab5e('0x23')](_0xab5e('0x32'),_0x5800ec[_0xab5e('0x25')],_0x1380c6['id']);_0x5566ba[_0x1adf91]=_[_0xab5e('0x11')](_0x5800ec[_0xab5e('0x1b')])?_0x5800ec[_0xab5e('0x1a')]:_0x5800ec[_0xab5e('0x19')];if(_[_0xab5e('0x11')](_0x5800ec['routeId'])){_0x5566ba['firstName']=_0x5800ec[_0xab5e('0x2b')]&&_0x5800ec['calleridname']!=='<unknown>'?_0x5800ec[_0xab5e('0x2b')]:_0xab5e('0x2d');}else{_0x5566ba[_0xab5e('0x1c')]=_0x5800ec[_0xab5e('0x2e')]&&_0x5800ec[_0xab5e('0x2e')]!==_0xab5e('0x2c')?_0x5800ec[_0xab5e('0x2e')]:'Unknown';}_0x58ccf6=_0x5566ba;_0x4f08b2['push'](_0x5566ba);return;}}})[_0xab5e('0x22')](function(){if(_0x2f447d){emit(_0x5800ec[_0xab5e('0x25')],_0x1380c6,util[_0xab5e('0x33')](_0xab5e('0x34'),_0x2f447d[_0xab5e('0x35')]),util[_0xab5e('0x33')](_0xab5e('0x36'),_0x28d462[_0xab5e('0x37')][_0xab5e('0x38')]()),{'evt':_[_0xab5e('0x39')](_0x5800ec,{'autoCreate':_0x3beab4}),'contact':_0x58ccf6===undefined?{}:_0x58ccf6,'contacts':_0x4f08b2['length']===0x0?undefined:_0x4f08b2});}});};
\ No newline at end of file
+var _0x14d8=['isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','data4','[CM][%s][%s]\x20Autocreate\x20enabled','calleridname','<unknown>','Unknown','destcalleridname','createContact','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','format','user:%s','name','trigger:%s','action','toLowerCase','merge','lodash','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','../../rpc/cmContact','localhost','socket.io-emitter','redis','info','[CM][%s][%s]','stringify','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','phone','$or','map','routeId','calleridnum','destcalleridnum','firstName','lastName','mobile','fax','scheduledAt','updatedAt','union','getContacts','then'];(function(_0x132449,_0x2663db){var _0x4e9ff3=function(_0x181e3e){while(--_0x181e3e){_0x132449['push'](_0x132449['shift']());}};_0x4e9ff3(++_0x2663db);}(_0x14d8,0x87));var _0x814d=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x14d8[_0x17d9e3];return _0x14192d;};'use strict';var _=require(_0x814d('0x0'));var BPromise=require(_0x814d('0x1'));var Redis=require(_0x814d('0x2'));var util=require(_0x814d('0x3'));var config=require(_0x814d('0x4'));var logger=require(_0x814d('0x5'))('trigger');var cmContactRpc=require(_0x814d('0x6'));config['redis']=_['defaults'](config['redis'],{'host':_0x814d('0x7'),'port':0x18eb});var io=require(_0x814d('0x8'))(new Redis(config[_0x814d('0x9')]));function emit(_0x52e4c5,_0x927885,_0x2d9a38,_0x2ac802,_0xa745c8){logger[_0x814d('0xa')](_0x814d('0xb'),_0x52e4c5,_0x927885['id'],_0x2d9a38,_0x2ac802,JSON[_0x814d('0xc')](_0xa745c8));io['to'](_0x2d9a38)['emit'](_0x2ac802,_0xa745c8);}exports[_0x814d('0xd')]=function(_0x1ec807,_0x39ad3b,_0x193d92,_0x3d47f8){var _0x3f4663,_0xdf4495;var _0x42bf27={};var _0x2ff10f;var _0x127dd5=Number(_0x193d92[_0x814d('0xe')]);var _0x2b6d1d=_0x193d92[_0x814d('0xf')]?Boolean(Number(_0x193d92[_0x814d('0xf')])):![];var _0x47e2ad;var _0x275a8a=![];if(!_[_0x814d('0x10')](_0x193d92[_0x814d('0x11')])){if(_0x193d92['data5']=='1')_0x275a8a=!![];}if(!_0x275a8a){if(_0x3d47f8[_0x814d('0x12')]){_0x42bf27['id']=_0x3d47f8[_0x814d('0x12')];}}if(!_0x42bf27['id']){_0x42bf27[_0x814d('0x13')]=_0x127dd5;_0x47e2ad=_0x193d92[_0x814d('0x14')]&&_0x193d92[_0x814d('0x14')]!=='0'?_0x193d92[_0x814d('0x14')]['split'](','):[_0x814d('0x15')];_0x42bf27[_0x814d('0x16')]=_[_0x814d('0x17')](_0x47e2ad,function(_0x57ccaa){var _0x1a43ad={};_0x1a43ad[_0x57ccaa]=_0x3d47f8[_0x814d('0x18')]?_0x3d47f8['destcalleridnum']:_0x3d47f8[_0x814d('0x19')];return _0x1a43ad;});_0x2ff10f=_0x3d47f8[_0x814d('0x18')]?_0x3d47f8[_0x814d('0x1a')]:_0x3d47f8['calleridnum'];}var _0x3634fe=['id',_0x814d('0x1b'),_0x814d('0x1c'),_0x814d('0x15'),_0x814d('0x1d'),_0x814d('0x1e'),_0x814d('0x13'),'createdAt',_0x814d('0x1f'),_0x814d('0x20')];var _0x10cf29=_[_0x814d('0x21')](_0x3634fe,_0x47e2ad);BPromise['resolve']()['then'](cmContactRpc[_0x814d('0x22')]({'attributes':_0x10cf29,'where':_0x42bf27,'phone':_0x2ff10f}))[_0x814d('0x23')](function(_0x376c31){_0xdf4495=_0x376c31;if(!_[_0x814d('0x24')](_0xdf4495)){if(_0xdf4495[_0x814d('0x25')]===0x1){_0x3f4663=_0xdf4495[0x0];logger['info'](_0x814d('0x26'),_0x3d47f8[_0x814d('0x27')],_0x39ad3b['id'],_0x3f4663['id']);}else{logger[_0x814d('0xa')](_0x814d('0x28'),_0x3d47f8['uniqueid'],_0x39ad3b['id'],_[_0x814d('0x17')](_0xdf4495,'id')['join'](','));}return;}else{logger['info']('[CM][%s][%s]\x20Contact\x20not\x20found',_0x3d47f8['uniqueid'],_0x39ad3b['id']);var _0x14a5e3={'ListId':_0x127dd5};var _0x1edb70=_0x193d92[_0x814d('0x29')]&&_0x193d92[_0x814d('0x29')]!=='0'?_0x193d92['data4']:_0x814d('0x15');if(_0x2b6d1d){logger['info'](_0x814d('0x2a'),_0x3d47f8[_0x814d('0x27')],_0x39ad3b['id']);_0x14a5e3[_0x1edb70]=_[_0x814d('0x10')](_0x3d47f8[_0x814d('0x18')])?_0x3d47f8[_0x814d('0x19')]:_0x3d47f8[_0x814d('0x1a')];if(_[_0x814d('0x10')](_0x3d47f8[_0x814d('0x18')])){_0x14a5e3[_0x814d('0x1b')]=_0x3d47f8['calleridname']&&_0x3d47f8[_0x814d('0x2b')]!==_0x814d('0x2c')?_0x3d47f8['calleridname']:_0x814d('0x2d');}else{_0x14a5e3[_0x814d('0x1b')]=_0x3d47f8['destcalleridname']&&_0x3d47f8['destcalleridname']!==_0x814d('0x2c')?_0x3d47f8[_0x814d('0x2e')]:'Unknown';}return BPromise['resolve']()[_0x814d('0x23')](cmContactRpc[_0x814d('0x2f')](_0x14a5e3))[_0x814d('0x23')](function(_0x38de40){_0x3f4663=_0x38de40;_0xdf4495['push'](_0x38de40);if(_0x3f4663){logger[_0x814d('0xa')](_0x814d('0x30'),_0x3d47f8[_0x814d('0x27')],_0x39ad3b['id'],_0x3f4663['id']);}return;});}else{logger[_0x814d('0xa')](_0x814d('0x31'),_0x3d47f8[_0x814d('0x27')],_0x39ad3b['id']);_0x14a5e3[_0x1edb70]=_['isNil'](_0x3d47f8['routeId'])?_0x3d47f8['calleridnum']:_0x3d47f8[_0x814d('0x1a')];if(_[_0x814d('0x10')](_0x3d47f8[_0x814d('0x18')])){_0x14a5e3[_0x814d('0x1b')]=_0x3d47f8[_0x814d('0x2b')]&&_0x3d47f8[_0x814d('0x2b')]!==_0x814d('0x2c')?_0x3d47f8[_0x814d('0x2b')]:_0x814d('0x2d');}else{_0x14a5e3[_0x814d('0x1b')]=_0x3d47f8[_0x814d('0x2e')]&&_0x3d47f8[_0x814d('0x2e')]!==_0x814d('0x2c')?_0x3d47f8[_0x814d('0x2e')]:_0x814d('0x2d');}_0x3f4663=_0x14a5e3;_0xdf4495['push'](_0x14a5e3);return;}}})[_0x814d('0x23')](function(){if(_0x1ec807){emit(_0x3d47f8[_0x814d('0x27')],_0x39ad3b,util[_0x814d('0x32')](_0x814d('0x33'),_0x1ec807[_0x814d('0x34')]),util[_0x814d('0x32')](_0x814d('0x35'),_0x193d92[_0x814d('0x36')][_0x814d('0x37')]()),{'evt':_[_0x814d('0x38')](_0x3d47f8,{'autoCreate':_0x2b6d1d}),'contact':_0x3f4663===undefined?{}:_0x3f4663,'contacts':_0xdf4495[_0x814d('0x25')]===0x0?undefined:_0xdf4495});}});};
\ No newline at end of file
index 71c1201..830c97c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20b1=['name','data1','jscripty','trigger:%s','merge','exec','routeId','parse','query','search','replace','channel','every','AllConditions','checkConditions','some','AnyConditions','evt','operator','value','upperFirst','AccountId','interaction','message','event','queue','agent','membername','lastevent','mailSubstatus','null','substatus','created','equals','exports','lodash','url','mustache','./urlforward','./integration','./cmContact','../../../config/environment','trigger','../ami','redis','defaults','localhost','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','bind','custom:agentconnect','syncCustomEvent','custom:agentcomplete','custom:agentnosuchnumber','custom:agentbusy','custom:amd','custom:timeout','custom:dialbegin','syncAgentDial','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:incomingmessage','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','prototype','info','stringify','emit','clone','motionChannel','undefined','voice','debug','inspect','checkTriggers','interface','hasOwnProperty','status','checkTrigger','variables','Actions','length','action','toLowerCase','contactmanager','motionbar','browser','popup','data2','html','render','template\x20not\x20found','uri','buildUri','isNil','data3','data4','location','windowWidth','data5','data6','600','winArguments','format','user:%s'];(function(_0x5834bc,_0x3d4801){var _0x3e183a=function(_0x18b023){while(--_0x18b023){_0x5834bc['push'](_0x5834bc['shift']());}};_0x3e183a(++_0x3d4801);}(_0x20b1,0x197));var _0x120b=function(_0x21e553,_0x456a2e){_0x21e553=_0x21e553-0x0;var _0x4f8482=_0x20b1[_0x21e553];return _0x4f8482;};'use strict';var util=require('util');var _=require(_0x120b('0x0'));var url=require(_0x120b('0x1'));var Mustache=require(_0x120b('0x2'));var Redis=require('ioredis');var urlforward=require(_0x120b('0x3'));var integration=require(_0x120b('0x4'));var cmContact=require(_0x120b('0x5'));var script=require('./script');var config=require(_0x120b('0x6'));var logger=require('../../../config/logger')(_0x120b('0x7'));var ami=require(_0x120b('0x8'));config[_0x120b('0x9')]=_[_0x120b('0xa')](config[_0x120b('0x9')],{'host':_0x120b('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x120b('0x9')]));var operators={'equals':function(_0x530c54,_0x5c2377){return _0x530c54==_0x5c2377;},'not_equals':function(_0x442546,_0x1c173a){return _0x442546!=_0x1c173a;}};var barAndWebActions=['popup',_0x120b('0x1'),_0x120b('0xc')];function Trigger(_0x2d81a3){this[_0x120b('0xd')]=_0x2d81a3[_0x120b('0xd')];this[_0x120b('0xe')]=_0x2d81a3[_0x120b('0xe')];this[_0x120b('0xf')]=_0x2d81a3[_0x120b('0xf')];this[_0x120b('0x10')]=_0x2d81a3[_0x120b('0x10')];this[_0x120b('0x11')]=_0x2d81a3[_0x120b('0x11')];this[_0x120b('0x12')]=_0x2d81a3[_0x120b('0x12')];this[_0x120b('0x13')]=_0x2d81a3[_0x120b('0x13')];this[_0x120b('0x14')]=_0x2d81a3['salesforceAccounts'];this[_0x120b('0x15')]=_0x2d81a3[_0x120b('0x15')];this[_0x120b('0x16')]=_0x2d81a3[_0x120b('0x16')];this['deskAccounts']=_0x2d81a3[_0x120b('0x17')];this['vtigerAccounts']=_0x2d81a3[_0x120b('0x18')];this[_0x120b('0x19')]=_0x2d81a3['servicenowAccounts'];this['dynamics365Accounts']=_0x2d81a3[_0x120b('0x1a')];this[_0x120b('0x1b')]=_0x2d81a3[_0x120b('0x1b')];this[_0x120b('0x1c')]={'zendesk':this[_0x120b('0x12')],'salesforce':this[_0x120b('0x14')],'freshdesk':this[_0x120b('0x13')],'sugarcrm':this[_0x120b('0x15')],'zoho':this[_0x120b('0x16')],'desk':this[_0x120b('0x17')],'vtiger':this[_0x120b('0x18')],'dynamics365':this['dynamics365Accounts'],'freshsales':this[_0x120b('0x1b')],'servicenow':this['servicenowAccounts']};ami['on'](_0x120b('0x1d'),this['syncCustomEvent'][_0x120b('0x1e')](this));ami['on'](_0x120b('0x1f'),this[_0x120b('0x20')]['bind'](this));ami['on']('custom:agentringnoanswer',this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on'](_0x120b('0x21'),this['syncCustomEvent'][_0x120b('0x1e')](this));ami['on'](_0x120b('0x22'),this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on']('custom:agentnoanswer',this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on'](_0x120b('0x23'),this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on']('custom:agentcongestion',this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on']('custom:agentreject',this['syncCustomEvent'][_0x120b('0x1e')](this));ami['on'](_0x120b('0x24'),this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on']('custom:queuecallerabandon',this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on'](_0x120b('0x25'),this['syncCustomEvent'][_0x120b('0x1e')](this));ami['on'](_0x120b('0x26'),this[_0x120b('0x27')][_0x120b('0x1e')](this));ami['on']('custom:dialconnect',this['syncAgentDial'][_0x120b('0x1e')](this));ami['on']('custom:dialend',this[_0x120b('0x27')]['bind'](this));ami['on'](_0x120b('0x28'),this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on'](_0x120b('0x29'),this['syncCustomEvent'][_0x120b('0x1e')](this));ami['on'](_0x120b('0x2a'),this['syncCustomEvent'][_0x120b('0x1e')](this));ami['on'](_0x120b('0x2b'),this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on'](_0x120b('0x2c'),this['syncCustomEvent'][_0x120b('0x1e')](this));ami['on'](_0x120b('0x2d'),this[_0x120b('0x20')][_0x120b('0x1e')](this));ami['on'](_0x120b('0x2e'),this[_0x120b('0x20')]['bind'](this));ami['on'](_0x120b('0x2f'),this[_0x120b('0x20')][_0x120b('0x1e')](this));}Trigger[_0x120b('0x30')]['emit']=function(_0x3a3008,_0x24dfde,_0x3ed043){logger[_0x120b('0x31')](_0x3a3008,_0x24dfde,JSON[_0x120b('0x32')](_0x3ed043));io['to'](_0x3a3008)[_0x120b('0x33')](_0x24dfde,_0x3ed043);};Trigger[_0x120b('0x30')][_0x120b('0x20')]=function(_0x3ddecd){var _0x324796=_[_0x120b('0x34')](_0x3ddecd);if(typeof _0x324796[_0x120b('0x35')]===_0x120b('0x36')){_0x324796[_0x120b('0x35')]=_0x120b('0x37');}logger[_0x120b('0x38')](_0x120b('0x20'),util[_0x120b('0x39')](_0x324796,{'showHidden':!![],'depth':null}));this[_0x120b('0x3a')](_0x324796);};Trigger[_0x120b('0x30')][_0x120b('0x27')]=function(_0x362d5f){if(this['agents'][_0x362d5f[_0x120b('0x3b')]]){this[_0x120b('0x20')](_0x362d5f);}};Trigger[_0x120b('0x30')][_0x120b('0x3a')]=function(_0xbd0293){var _0xf62a37;for(var _0x3bed6c in this['triggers']){if(this[_0x120b('0xd')][_0x120b('0x3c')](_0x3bed6c)){if(this['triggers'][_0x3bed6c][_0x120b('0x3d')]){_0xf62a37=this[_0x120b('0x3e')](this[_0x120b('0xd')][_0x3bed6c],_0xbd0293);if(_0xf62a37){_['merge'](_0xbd0293,_0xbd0293[_0x120b('0x3f')]);for(var _0x169914=0x0,_0x1bc1f1,_0x8662de,_0x4c78da;_0x169914<this[_0x120b('0xd')][_0x3bed6c][_0x120b('0x40')][_0x120b('0x41')];_0x169914+=0x1){_0x1bc1f1=this[_0x120b('0xd')][_0x3bed6c]['Actions'][_0x169914];if(this[_0x120b('0xe')][_0xbd0293[_0x120b('0x3b')]]){switch(_0x1bc1f1[_0x120b('0x42')][_0x120b('0x43')]()){case _0x120b('0x44'):break;case _0x120b('0x45'):case _0x120b('0x46'):var _0xa783f4={};switch(barAndWebActions[_0x1bc1f1['data1']]){case _0x120b('0x47'):_0xa783f4['TemplateId']=_0x1bc1f1[_0x120b('0x48')];_0xa783f4[_0x120b('0x49')]=this[_0x120b('0x10')][_0x1bc1f1[_0x120b('0x48')]]?Mustache[_0x120b('0x4a')](this[_0x120b('0x10')][_0x1bc1f1[_0x120b('0x48')]][_0x120b('0x49')],_0xbd0293):_0x120b('0x4b');break;case'url':_0xa783f4[_0x120b('0x4c')]=this[_0x120b('0x4d')](_0x1bc1f1['data2'],_0xbd0293,_[_0x120b('0x4e')](_0x1bc1f1[_0x120b('0x4f')])?!![]:parseInt(_0x1bc1f1[_0x120b('0x4f')],0xa));if(_[_0x120b('0x4e')](_0x1bc1f1[_0x120b('0x50')])){_0xa783f4[_0x120b('0x51')]='0';}else{_0xa783f4['uriLocation']=_0x1bc1f1[_0x120b('0x50')];_0xa783f4[_0x120b('0x52')]=_[_0x120b('0x4e')](_0x1bc1f1[_0x120b('0x53')])?'800':_0x1bc1f1[_0x120b('0x53')];_0xa783f4['windowHeight']=_[_0x120b('0x4e')](_0x1bc1f1[_0x120b('0x54')])?_0x120b('0x55'):_0x1bc1f1[_0x120b('0x54')];}break;case _0x120b('0xc'):_0xa783f4['winApplication']=_0x1bc1f1[_0x120b('0x48')]?Mustache[_0x120b('0x4a')](_0x1bc1f1[_0x120b('0x48')],_0xbd0293):'';_0xa783f4[_0x120b('0x56')]=_0x1bc1f1['data3']?Mustache[_0x120b('0x4a')](_0x1bc1f1[_0x120b('0x4f')],_0xbd0293):'';break;}this[_0x120b('0x33')](util[_0x120b('0x57')](_0x120b('0x58'),this[_0x120b('0xe')][_0xbd0293[_0x120b('0x3b')]][_0x120b('0x59')]),util[_0x120b('0x57')]('trigger:%s:%s',_0x1bc1f1[_0x120b('0x42')][_0x120b('0x43')](),barAndWebActions[_0x1bc1f1[_0x120b('0x5a')]]),_['merge'](_0xa783f4,_0xbd0293));break;case _0x120b('0x5b'):this[_0x120b('0x33')](util['format']('user:%s',this[_0x120b('0xe')][_0xbd0293[_0x120b('0x3b')]][_0x120b('0x59')]),util['format'](_0x120b('0x5c'),_0x1bc1f1[_0x120b('0x42')][_0x120b('0x43')]()),_[_0x120b('0x5d')]({'ProjectId':parseInt(_0x1bc1f1[_0x120b('0x5a')],0xa)},_0xbd0293));break;default:this[_0x120b('0x33')](util['format'](_0x120b('0x58'),this['agents'][_0xbd0293[_0x120b('0x3b')]]['name']),util[_0x120b('0x57')](_0x120b('0x5c'),_0x1bc1f1[_0x120b('0x42')][_0x120b('0x43')]()),_[_0x120b('0x5d')]({},_0x1bc1f1,_0xbd0293));}}switch(_0x1bc1f1['action'][_0x120b('0x43')]()){case _0x120b('0x44'):cmContact['exec'](this[_0x120b('0xe')][_0xbd0293['interface']],this[_0x120b('0xd')][_0x3bed6c],_0x1bc1f1,_0xbd0293);break;case'integration':integration[_0x120b('0x5e')](_0x1bc1f1,_0xbd0293,this['accounts'],this[_0x120b('0xe')][_0xbd0293[_0x120b('0x3b')]],this[_0x120b('0xf')][_0xbd0293['queue']],this['voiceExtensions'][_0xbd0293[_0x120b('0x5f')]]);break;case'urlforward':urlforward[_0x120b('0x5e')](_0x1bc1f1,_0xbd0293);break;case'script':script['exec'](_0x1bc1f1,_0xbd0293);break;}}}}}}};Trigger[_0x120b('0x30')][_0x120b('0x4d')]=function(_0x5c3afa,_0x13d19f,_0x5b4580){var _0x227fef=url[_0x120b('0x60')](Mustache['render'](_0x5c3afa,_0x13d19f),!![]);if(_0x5b4580){_[_0x120b('0x5d')](_0x227fef[_0x120b('0x61')],_0x13d19f);}delete _0x227fef[_0x120b('0x62')];var _0x12a014=url[_0x120b('0x57')](_0x227fef);_0x12a014=_0x12a014[_0x120b('0x63')](/\/\?/g,'?');return _0x12a014;};Trigger[_0x120b('0x30')][_0x120b('0x3e')]=function(_0x1d09b0,_0x2b0812){var _0x12f8e0=!![];var _0x4dfa0a=!![];var _0x2034c8=![];if(_0x1d09b0[_0x120b('0x64')]===_0x2b0812[_0x120b('0x35')]){_0x2034c8=!![];}if(_0x1d09b0['AllConditions'][_0x120b('0x41')]){_0x12f8e0=_[_0x120b('0x65')](_0x1d09b0[_0x120b('0x66')],this[_0x120b('0x67')](_0x2b0812,_0x1d09b0[_0x120b('0x64')]));}if(_0x1d09b0['AnyConditions'][_0x120b('0x41')]){_0x4dfa0a=_[_0x120b('0x68')](_0x1d09b0[_0x120b('0x69')],this[_0x120b('0x67')](_0x2b0812,_0x1d09b0['channel']));}var _0x59f670=_0x2034c8&&_0x12f8e0&&_0x4dfa0a;logger['debug']('checkTrigger:\x20trigger',util[_0x120b('0x39')](_0x1d09b0,{'showHidden':!![],'depth':null}),_0x120b('0x6a'),util[_0x120b('0x39')](_0x2b0812,{'showHidden':!![],'depth':null}),_0x2034c8,_0x12f8e0,_0x4dfa0a);return _0x59f670;};Trigger['prototype']['checkConditions']=function(_0x227b63,_0x4f660a){return function(_0x314d21){switch(_0x314d21['field']){case'account':if(_0x227b63['channel']===_0x4f660a){if(_0x4f660a==='chat'){return _0x227b63['ChatWebsiteId']?operators[_0x314d21[_0x120b('0x6b')]](Number(_0x314d21[_0x120b('0x6c')]),_0x227b63['ChatWebsiteId']):![];}else{return _0x227b63[_[_0x120b('0x6d')](_0x4f660a)+_0x120b('0x6e')]?operators[_0x314d21['operator']](Number(_0x314d21[_0x120b('0x6c')]),_0x227b63[_['upperFirst'](_0x4f660a)+_0x120b('0x6e')]):![];}}break;case _0x120b('0x6f'):case _0x120b('0x70'):if(_0x227b63[_0x120b('0x64')]===_0x4f660a){return _0x227b63[_0x120b('0x71')]?operators[_0x314d21[_0x120b('0x6b')]](_0x314d21[_0x120b('0x6c')],_0x227b63[_0x120b('0x71')]):![];}break;case _0x120b('0x72'):return _0x227b63[_0x120b('0x72')]?operators[_0x314d21[_0x120b('0x6b')]](_0x314d21[_0x120b('0x6c')],_0x227b63[_0x120b('0x72')]):![];case _0x120b('0x73'):return _0x227b63['membername']?operators[_0x314d21[_0x120b('0x6b')]](_0x314d21[_0x120b('0x6c')],_0x227b63[_0x120b('0x74')]):![];case'lastevent':return _0x227b63['lastevent']?operators[_0x314d21['operator']](_0x314d21[_0x120b('0x6c')],_0x227b63[_0x120b('0x75')]):![];case _0x120b('0x5f'):return _0x227b63[_0x120b('0x5f')]?operators[_0x314d21['operator']](_0x314d21[_0x120b('0x6c')],_0x227b63['routeId']):![];case _0x120b('0x76'):if(_0x314d21[_0x120b('0x6c')]===_0x120b('0x77'))_0x314d21['value']=null;return typeof _0x227b63[_0x120b('0x78')]!==_0x120b('0x36')?operators[_0x314d21[_0x120b('0x6b')]](_0x314d21['value'],_0x227b63[_0x120b('0x78')]):![];case'offlineMessage':if(_0x227b63[_0x120b('0x64')]===_0x4f660a){return _0x314d21[_0x120b('0x6c')]===_0x120b('0x79')&&_0x314d21[_0x120b('0x6b')]===_0x120b('0x7a')?!![]:![];}break;}return![];};};module[_0x120b('0x7b')]=Trigger;
\ No newline at end of file
+var _0x8701=['mustache','ioredis','./urlforward','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','redis','localhost','socket.io-emitter','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','syncCustomEvent','bind','custom:agentconnect','custom:agentcomplete','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:timeout','custom:dialbegin','syncAgentDial','custom:dialconnect','custom:dialend','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:outgoingmessage','custom:acceptmessage','custom:rejectmessage','prototype','stringify','emit','clone','motionChannel','undefined','debug','checkTriggers','interface','hasOwnProperty','status','Actions','length','toLowerCase','contactmanager','browser','data1','popup','html','data2','template\x20not\x20found','buildUri','isNil','data3','data4','location','windowWidth','data5','data6','600','winArguments','format','name','trigger:%s:%s','merge','jscripty','action','exec','integration','queue','routeId','urlforward','script','parse','render','query','replace','checkTrigger','channel','AllConditions','every','checkConditions','AnyConditions','some','checkTrigger:\x20trigger','inspect','evt','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','interaction','message','event','membername','lastevent','null','substatus','offlineMessage','created','equals','exports','util','url'];(function(_0x210027,_0x3a533a){var _0x46da16=function(_0x424c53){while(--_0x424c53){_0x210027['push'](_0x210027['shift']());}};_0x46da16(++_0x3a533a);}(_0x8701,0x1ea));var _0x1870=function(_0x649417,_0x5cc470){_0x649417=_0x649417-0x0;var _0x19b060=_0x8701[_0x649417];return _0x19b060;};'use strict';var util=require(_0x1870('0x0'));var _=require('lodash');var url=require(_0x1870('0x1'));var Mustache=require(_0x1870('0x2'));var Redis=require(_0x1870('0x3'));var urlforward=require(_0x1870('0x4'));var integration=require('./integration');var cmContact=require(_0x1870('0x5'));var script=require(_0x1870('0x6'));var config=require(_0x1870('0x7'));var logger=require(_0x1870('0x8'))(_0x1870('0x9'));var ami=require('../ami');config[_0x1870('0xa')]=_['defaults'](config[_0x1870('0xa')],{'host':_0x1870('0xb'),'port':0x18eb});var io=require(_0x1870('0xc'))(new Redis(config[_0x1870('0xa')]));var operators={'equals':function(_0x33adc2,_0x1a411f){return _0x33adc2==_0x1a411f;},'not_equals':function(_0x56fdb2,_0x499385){return _0x56fdb2!=_0x499385;}};var barAndWebActions=['popup',_0x1870('0x1'),_0x1870('0xd')];function Trigger(_0x14111d){this[_0x1870('0xe')]=_0x14111d['triggers'];this['agents']=_0x14111d[_0x1870('0xf')];this[_0x1870('0x10')]=_0x14111d[_0x1870('0x10')];this[_0x1870('0x11')]=_0x14111d['templates'];this[_0x1870('0x12')]=_0x14111d['voiceExtensions'];this[_0x1870('0x13')]=_0x14111d[_0x1870('0x13')];this['freshdeskAccounts']=_0x14111d[_0x1870('0x14')];this[_0x1870('0x15')]=_0x14111d[_0x1870('0x15')];this[_0x1870('0x16')]=_0x14111d[_0x1870('0x16')];this[_0x1870('0x17')]=_0x14111d[_0x1870('0x17')];this[_0x1870('0x18')]=_0x14111d[_0x1870('0x18')];this[_0x1870('0x19')]=_0x14111d[_0x1870('0x19')];this[_0x1870('0x1a')]=_0x14111d[_0x1870('0x1a')];this[_0x1870('0x1b')]=_0x14111d[_0x1870('0x1b')];this[_0x1870('0x1c')]=_0x14111d[_0x1870('0x1c')];this['accounts']={'zendesk':this[_0x1870('0x13')],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0x1870('0x14')],'sugarcrm':this[_0x1870('0x16')],'zoho':this[_0x1870('0x17')],'desk':this['deskAccounts'],'vtiger':this[_0x1870('0x19')],'dynamics365':this[_0x1870('0x1b')],'freshsales':this['freshsalesAccounts'],'servicenow':this[_0x1870('0x1a')]};ami['on']('custom:agentcalled',this[_0x1870('0x1d')][_0x1870('0x1e')](this));ami['on'](_0x1870('0x1f'),this[_0x1870('0x1d')][_0x1870('0x1e')](this));ami['on']('custom:agentringnoanswer',this[_0x1870('0x1d')][_0x1870('0x1e')](this));ami['on'](_0x1870('0x20'),this[_0x1870('0x1d')]['bind'](this));ami['on']('custom:agentnosuchnumber',this[_0x1870('0x1d')][_0x1870('0x1e')](this));ami['on'](_0x1870('0x21'),this[_0x1870('0x1d')][_0x1870('0x1e')](this));ami['on'](_0x1870('0x22'),this['syncCustomEvent'][_0x1870('0x1e')](this));ami['on'](_0x1870('0x23'),this['syncCustomEvent']['bind'](this));ami['on'](_0x1870('0x24'),this[_0x1870('0x1d')][_0x1870('0x1e')](this));ami['on'](_0x1870('0x25'),this[_0x1870('0x1d')]['bind'](this));ami['on']('custom:queuecallerabandon',this['syncCustomEvent'][_0x1870('0x1e')](this));ami['on'](_0x1870('0x26'),this[_0x1870('0x1d')]['bind'](this));ami['on'](_0x1870('0x27'),this[_0x1870('0x28')][_0x1870('0x1e')](this));ami['on'](_0x1870('0x29'),this[_0x1870('0x28')][_0x1870('0x1e')](this));ami['on'](_0x1870('0x2a'),this[_0x1870('0x28')][_0x1870('0x1e')](this));ami['on'](_0x1870('0x2b'),this['syncCustomEvent'][_0x1870('0x1e')](this));ami['on'](_0x1870('0x2c'),this['syncCustomEvent'][_0x1870('0x1e')](this));ami['on'](_0x1870('0x2d'),this[_0x1870('0x1d')][_0x1870('0x1e')](this));ami['on']('custom:incomingmessage',this['syncCustomEvent'][_0x1870('0x1e')](this));ami['on'](_0x1870('0x2e'),this['syncCustomEvent']['bind'](this));ami['on'](_0x1870('0x2f'),this[_0x1870('0x1d')][_0x1870('0x1e')](this));ami['on'](_0x1870('0x30'),this['syncCustomEvent'][_0x1870('0x1e')](this));ami['on']('custom:offlineMessage',this[_0x1870('0x1d')]['bind'](this));}Trigger[_0x1870('0x31')]['emit']=function(_0x573b2a,_0x597bb7,_0x538bc8){logger['info'](_0x573b2a,_0x597bb7,JSON[_0x1870('0x32')](_0x538bc8));io['to'](_0x573b2a)[_0x1870('0x33')](_0x597bb7,_0x538bc8);};Trigger[_0x1870('0x31')][_0x1870('0x1d')]=function(_0x1c1f33){var _0x4f6a70=_[_0x1870('0x34')](_0x1c1f33);if(typeof _0x4f6a70[_0x1870('0x35')]===_0x1870('0x36')){_0x4f6a70[_0x1870('0x35')]='voice';}logger[_0x1870('0x37')]('syncCustomEvent',util['inspect'](_0x4f6a70,{'showHidden':!![],'depth':null}));this[_0x1870('0x38')](_0x4f6a70);};Trigger[_0x1870('0x31')]['syncAgentDial']=function(_0x1548b6){if(this[_0x1870('0xf')][_0x1548b6[_0x1870('0x39')]]){this[_0x1870('0x1d')](_0x1548b6);}};Trigger['prototype'][_0x1870('0x38')]=function(_0x1ad3e5){var _0x4a7af6;for(var _0xeda68 in this[_0x1870('0xe')]){if(this[_0x1870('0xe')][_0x1870('0x3a')](_0xeda68)){if(this[_0x1870('0xe')][_0xeda68][_0x1870('0x3b')]){_0x4a7af6=this['checkTrigger'](this[_0x1870('0xe')][_0xeda68],_0x1ad3e5);if(_0x4a7af6){_['merge'](_0x1ad3e5,_0x1ad3e5['variables']);for(var _0x2aeb36=0x0,_0x56859a,_0x29c331,_0x34f4f0;_0x2aeb36<this['triggers'][_0xeda68][_0x1870('0x3c')][_0x1870('0x3d')];_0x2aeb36+=0x1){_0x56859a=this['triggers'][_0xeda68][_0x1870('0x3c')][_0x2aeb36];if(this[_0x1870('0xf')][_0x1ad3e5['interface']]){switch(_0x56859a['action'][_0x1870('0x3e')]()){case _0x1870('0x3f'):break;case'motionbar':case _0x1870('0x40'):var _0x4bde41={};switch(barAndWebActions[_0x56859a[_0x1870('0x41')]]){case _0x1870('0x42'):_0x4bde41['TemplateId']=_0x56859a['data2'];_0x4bde41[_0x1870('0x43')]=this['templates'][_0x56859a[_0x1870('0x44')]]?Mustache['render'](this[_0x1870('0x11')][_0x56859a[_0x1870('0x44')]][_0x1870('0x43')],_0x1ad3e5):_0x1870('0x45');break;case _0x1870('0x1'):_0x4bde41['uri']=this[_0x1870('0x46')](_0x56859a['data2'],_0x1ad3e5,_[_0x1870('0x47')](_0x56859a[_0x1870('0x48')])?!![]:parseInt(_0x56859a[_0x1870('0x48')],0xa));if(_[_0x1870('0x47')](_0x56859a[_0x1870('0x49')])){_0x4bde41[_0x1870('0x4a')]='0';}else{_0x4bde41['uriLocation']=_0x56859a[_0x1870('0x49')];_0x4bde41[_0x1870('0x4b')]=_['isNil'](_0x56859a[_0x1870('0x4c')])?'800':_0x56859a['data5'];_0x4bde41['windowHeight']=_[_0x1870('0x47')](_0x56859a[_0x1870('0x4d')])?_0x1870('0x4e'):_0x56859a[_0x1870('0x4d')];}break;case _0x1870('0xd'):_0x4bde41['winApplication']=_0x56859a[_0x1870('0x44')]?Mustache['render'](_0x56859a[_0x1870('0x44')],_0x1ad3e5):'';_0x4bde41[_0x1870('0x4f')]=_0x56859a[_0x1870('0x48')]?Mustache['render'](_0x56859a[_0x1870('0x48')],_0x1ad3e5):'';break;}this[_0x1870('0x33')](util[_0x1870('0x50')]('user:%s',this['agents'][_0x1ad3e5[_0x1870('0x39')]][_0x1870('0x51')]),util['format'](_0x1870('0x52'),_0x56859a['action'][_0x1870('0x3e')](),barAndWebActions[_0x56859a[_0x1870('0x41')]]),_[_0x1870('0x53')](_0x4bde41,_0x1ad3e5));break;case _0x1870('0x54'):this[_0x1870('0x33')](util[_0x1870('0x50')]('user:%s',this['agents'][_0x1ad3e5[_0x1870('0x39')]][_0x1870('0x51')]),util['format']('trigger:%s',_0x56859a[_0x1870('0x55')]['toLowerCase']()),_[_0x1870('0x53')]({'ProjectId':parseInt(_0x56859a[_0x1870('0x41')],0xa)},_0x1ad3e5));break;default:this[_0x1870('0x33')](util[_0x1870('0x50')]('user:%s',this[_0x1870('0xf')][_0x1ad3e5[_0x1870('0x39')]][_0x1870('0x51')]),util[_0x1870('0x50')]('trigger:%s',_0x56859a[_0x1870('0x55')][_0x1870('0x3e')]()),_[_0x1870('0x53')]({},_0x56859a,_0x1ad3e5));}}switch(_0x56859a['action'][_0x1870('0x3e')]()){case'contactmanager':cmContact[_0x1870('0x56')](this[_0x1870('0xf')][_0x1ad3e5[_0x1870('0x39')]],this[_0x1870('0xe')][_0xeda68],_0x56859a,_0x1ad3e5);break;case _0x1870('0x57'):integration[_0x1870('0x56')](_0x56859a,_0x1ad3e5,this['accounts'],this[_0x1870('0xf')][_0x1ad3e5['interface']],this[_0x1870('0x10')][_0x1ad3e5[_0x1870('0x58')]],this[_0x1870('0x12')][_0x1ad3e5[_0x1870('0x59')]]);break;case _0x1870('0x5a'):urlforward[_0x1870('0x56')](_0x56859a,_0x1ad3e5);break;case _0x1870('0x5b'):script['exec'](_0x56859a,_0x1ad3e5);break;}}}}}}};Trigger[_0x1870('0x31')][_0x1870('0x46')]=function(_0x4a2b2c,_0x5a83e1,_0x5ea02e){var _0x38ea9a=url[_0x1870('0x5c')](Mustache[_0x1870('0x5d')](_0x4a2b2c,_0x5a83e1),!![]);if(_0x5ea02e){_[_0x1870('0x53')](_0x38ea9a[_0x1870('0x5e')],_0x5a83e1);}delete _0x38ea9a['search'];var _0x36dcd4=url[_0x1870('0x50')](_0x38ea9a);_0x36dcd4=_0x36dcd4[_0x1870('0x5f')](/\/\?/g,'?');return _0x36dcd4;};Trigger[_0x1870('0x31')][_0x1870('0x60')]=function(_0x7424fe,_0x42d6b6){var _0x17a891=!![];var _0x19682a=!![];var _0x2195b5=![];if(_0x7424fe[_0x1870('0x61')]===_0x42d6b6[_0x1870('0x35')]){_0x2195b5=!![];}if(_0x7424fe[_0x1870('0x62')]['length']){_0x17a891=_[_0x1870('0x63')](_0x7424fe[_0x1870('0x62')],this[_0x1870('0x64')](_0x42d6b6,_0x7424fe['channel']));}if(_0x7424fe[_0x1870('0x65')]['length']){_0x19682a=_[_0x1870('0x66')](_0x7424fe[_0x1870('0x65')],this[_0x1870('0x64')](_0x42d6b6,_0x7424fe[_0x1870('0x61')]));}var _0x3ee331=_0x2195b5&&_0x17a891&&_0x19682a;logger[_0x1870('0x37')](_0x1870('0x67'),util[_0x1870('0x68')](_0x7424fe,{'showHidden':!![],'depth':null}),_0x1870('0x69'),util[_0x1870('0x68')](_0x42d6b6,{'showHidden':!![],'depth':null}),_0x2195b5,_0x17a891,_0x19682a);return _0x3ee331;};Trigger[_0x1870('0x31')][_0x1870('0x64')]=function(_0x44ab00,_0xfb017a){return function(_0x62bf){switch(_0x62bf['field']){case'account':if(_0x44ab00[_0x1870('0x61')]===_0xfb017a){if(_0xfb017a===_0x1870('0x6a')){return _0x44ab00[_0x1870('0x6b')]?operators[_0x62bf[_0x1870('0x6c')]](Number(_0x62bf[_0x1870('0x6d')]),_0x44ab00[_0x1870('0x6b')]):![];}else{return _0x44ab00[_[_0x1870('0x6e')](_0xfb017a)+_0x1870('0x6f')]?operators[_0x62bf[_0x1870('0x6c')]](Number(_0x62bf[_0x1870('0x6d')]),_0x44ab00[_[_0x1870('0x6e')](_0xfb017a)+_0x1870('0x6f')]):![];}}break;case _0x1870('0x70'):case _0x1870('0x71'):if(_0x44ab00[_0x1870('0x61')]===_0xfb017a){return _0x44ab00[_0x1870('0x72')]?operators[_0x62bf['operator']](_0x62bf[_0x1870('0x6d')],_0x44ab00[_0x1870('0x72')]):![];}break;case _0x1870('0x58'):return _0x44ab00[_0x1870('0x58')]?operators[_0x62bf[_0x1870('0x6c')]](_0x62bf[_0x1870('0x6d')],_0x44ab00[_0x1870('0x58')]):![];case'agent':return _0x44ab00[_0x1870('0x73')]?operators[_0x62bf[_0x1870('0x6c')]](_0x62bf[_0x1870('0x6d')],_0x44ab00[_0x1870('0x73')]):![];case _0x1870('0x74'):return _0x44ab00[_0x1870('0x74')]?operators[_0x62bf[_0x1870('0x6c')]](_0x62bf[_0x1870('0x6d')],_0x44ab00['lastevent']):![];case _0x1870('0x59'):return _0x44ab00[_0x1870('0x59')]?operators[_0x62bf[_0x1870('0x6c')]](_0x62bf['value'],_0x44ab00[_0x1870('0x59')]):![];case'mailSubstatus':if(_0x62bf[_0x1870('0x6d')]===_0x1870('0x75'))_0x62bf[_0x1870('0x6d')]=null;return typeof _0x44ab00[_0x1870('0x76')]!==_0x1870('0x36')?operators[_0x62bf[_0x1870('0x6c')]](_0x62bf['value'],_0x44ab00[_0x1870('0x76')]):![];case _0x1870('0x77'):if(_0x44ab00[_0x1870('0x61')]===_0xfb017a){return _0x62bf[_0x1870('0x6d')]===_0x1870('0x78')&&_0x62bf[_0x1870('0x6c')]===_0x1870('0x79')?!![]:![];}break;}return![];};};module[_0x1870('0x7a')]=Trigger;
\ No newline at end of file
index fe7382f..3652436 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','%s/customers/%d/cases','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','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','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','integrationTab','newTab','catch','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','ioredis','./util','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','application/json','validateEmail','format','%s/users','then','total_entries','find','_embedded','entries','info','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','%s/users/me','debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','password','token','%s/token:%s','Basic\x20%s','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','%s/customers','remoteUri','POST','length','map','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','idField','variableName','custom_fields','Variable','name','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xe14b,0x93));var _0xbe14=function(_0x182b04,_0x1da09c){_0x182b04=_0x182b04-0x0;var _0x45137c=_0xe14b[_0x182b04];return _0x45137c;};'use strict';var _=require(_0xbe14('0x0'));var rp=require(_0xbe14('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0xbe14('0x2'));var intUtil=require(_0xbe14('0x3'));var config=require('../../../../config/environment');var logger=require(_0xbe14('0x4'))('desk');config['redis']=_[_0xbe14('0x5')](config[_0xbe14('0x6')],{'host':_0xbe14('0x7'),'port':0x18eb});var io=require(_0xbe14('0x8'))(new Redis(config[_0xbe14('0x6')]));function emit(_0x39387e,_0x196fca,_0x566ae7){io['to'](_0x39387e)['emit'](_0x196fca,_0x566ae7);}var headers={'Content-Type':'application/json','Accept':_0xbe14('0x9')};function getUser(_0x6fceff,_0xd68cd7){if(intUtil[_0xbe14('0xa')](_0xd68cd7)===!![]){logger['info']('Getting\x20agent\x20with\x20email',_0xd68cd7);return request({'uri':util[_0xbe14('0xb')](_0xbe14('0xc'),_0x6fceff['remoteUri'])})[_0xbe14('0xd')](function(_0x35aa19){if(_0x35aa19[_0xbe14('0xe')]){return _[_0xbe14('0xf')](_0x35aa19[_0xbe14('0x10')][_0xbe14('0x11')],{'email':_0xd68cd7});}})[_0xbe14('0xd')](function(_0x2850cb){if(_0x2850cb){logger[_0xbe14('0x12')](_0xbe14('0x13'));return _0x2850cb;}else{logger[_0xbe14('0x12')](_0xbe14('0x14'));return request({'uri':util[_0xbe14('0xb')]('%s/users/me',_0x6fceff['remoteUri'])});}});}else{logger[_0xbe14('0x12')](_0xbe14('0x15'));return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x16'),_0x6fceff['remoteUri'])});}}function request(_0x21c789){logger[_0xbe14('0x17')](_0xbe14('0x18'),JSON[_0xbe14('0x19')](_0x21c789));return rp(_[_0xbe14('0x5')](_0x21c789,{'method':_0xbe14('0x1a'),'headers':headers,'json':!![]}));}function getAuth(_0x17ae86){var _0x5ea1f8;if(_0x17ae86[_0xbe14('0x1b')]===_0xbe14('0x1c')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x1d'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x1f')]);}else if(_0x17ae86['authType']===_0xbe14('0x20')){_0x5ea1f8=util[_0xbe14('0xb')](_0xbe14('0x21'),_0x17ae86[_0xbe14('0x1e')],_0x17ae86[_0xbe14('0x20')]);}return util['format'](_0xbe14('0x22'),new Buffer(_0x5ea1f8)['toString'](_0xbe14('0x23')));}function getEndUser(_0x56e80c,_0x32e8eb,_0x4a25fa){logger[_0xbe14('0x12')](_0xbe14('0x24'),_0x4a25fa);return request({'uri':util['format'](_0xbe14('0x25'),_0x56e80c['remoteUri']),'qs':{'phone':_0x4a25fa}})[_0xbe14('0xd')](function(_0x4851f8){if(_0x4851f8[_0xbe14('0xe')]){logger[_0xbe14('0x12')](_0xbe14('0x26'));return _0x4851f8[_0xbe14('0x10')][_0xbe14('0x11')][0x0];}else{logger[_0xbe14('0x12')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xbe14('0xb')](_0xbe14('0x27'),_0x56e80c[_0xbe14('0x28')]),'method':_0xbe14('0x29'),'body':{'first_name':_0x32e8eb,'title':_0x32e8eb,'phone_numbers':[{'type':'work','value':_0x4a25fa}]}});}});}function getTags(_0x16f884,_0x29fc64){var _0x59bf34=[];if(_0x16f884&&_0x16f884[_0xbe14('0x2a')]>0x0){_0x59bf34=_[_0xbe14('0x2b')](_0x16f884,_0x29fc64);}return _0x59bf34;}function getCustomFields(_0x1c7cc7,_0x19252f){var _0x34d648=[];var _0x36d4b2={'custom_fields':{}};if(_0x1c7cc7[_0xbe14('0x2a')]>0x0){_[_0xbe14('0x2c')](_0x1c7cc7,function(_0x4168c8){if(_[_0xbe14('0x2d')]([_0xbe14('0x2e'),_0xbe14('0x2f')],_0x4168c8[_0xbe14('0x30')])&&_0x4168c8[_0xbe14('0x31')]&&!_0x4168c8[_0xbe14('0x32')]){_0x36d4b2[_0x4168c8[_0xbe14('0x31')][_0xbe14('0x33')]()]=_0x4168c8[_0xbe14('0x34')][_0xbe14('0x35')]();}else if(_[_0xbe14('0x2d')](['string',_0xbe14('0x2f')],_0x4168c8['type'])&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x36d4b2['custom_fields'][_0x4168c8[_0xbe14('0x36')]]=_0x4168c8[_0xbe14('0x34')]['toString']();}else if(_0x4168c8['type']==='variable'&&_0x4168c8[_0xbe14('0x37')]&&_0x4168c8[_0xbe14('0x36')]&&_0x4168c8['customField']){_0x19252f[_0x4168c8[_0xbe14('0x37')]]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x37')]][_0xbe14('0x35')]());}else if(_0x4168c8['type']==='customVariable'&&_0x4168c8[_0xbe14('0x39')]&&_0x4168c8['Variable']['name']&&_0x4168c8['idField']&&_0x4168c8[_0xbe14('0x32')]){_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()]&&(_0x36d4b2[_0xbe14('0x38')][_0x4168c8[_0xbe14('0x36')]]=_0x19252f[_0x4168c8[_0xbe14('0x39')][_0xbe14('0x3a')][_0xbe14('0x33')]()][_0xbe14('0x35')]());}});}if(_0x36d4b2[_0xbe14('0x3b')]){_0x36d4b2[_0xbe14('0x3b')]=Number(_0x36d4b2['priority']);}return _0x36d4b2;}function getTicket(_0x4f51f8,_0x43cdaa,_0x2951e1,_0x13bfcf,_0x520e09){logger[_0xbe14('0x12')](_0xbe14('0x3c'));var _0xeda70e=_[_0xbe14('0x3d')]({'subject':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x3f')],_0x520e09,'\x20'),'type':_0xbe14('0x40'),'status':_0xbe14('0x41'),'labels':[_0xbe14('0x42'),'Motion',_0xbe14('0x43')][_0xbe14('0x44')](getTags(_0x13bfcf[_0xbe14('0x45')],_0xbe14('0x3a'))),'description':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a'),'_links':{'assigned_user':{'href':util['format'](_0xbe14('0x47'),_0x43cdaa['id']),'class':_0xbe14('0x48')}},'message':{'direction':'in','body':intUtil[_0xbe14('0x3e')](_0x13bfcf[_0xbe14('0x46')],_0x520e09,'\x0a')}},getCustomFields(_0x13bfcf['Fields'],_0x520e09));return request({'uri':util['format'](_0xbe14('0x49'),_0x4f51f8[_0xbe14('0x28')],_0x2951e1['id']),'method':_0xbe14('0x29'),'body':_0xeda70e});}exports['queue']=function(_0x5d5318,_0x6b6aa8,_0x59ae4d,_0x5657fe,_0x3593f8,_0x1f0355){var _0x8216c3,_0x5051e4;_0x1f0355['remoteUri']=intUtil['stripTrailingSlash'](_0x1f0355[_0xbe14('0x28')]);_0x1f0355[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x1f0355['serverUrl']);if(_0x3593f8&&_0x3593f8[_0xbe14('0x4c')]){logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x4e'));_0x6b6aa8['recordingURL']=util['format'](_0xbe14('0x4f'),_0x1f0355[_0xbe14('0x4a')],_0x6b6aa8[_0xbe14('0x50')],md5(_0x6b6aa8[_0xbe14('0x50')]));}else{_0x6b6aa8[_0xbe14('0x51')]='';}headers['Authorization']=getAuth(_0x1f0355);return getUser(_0x1f0355,_0x5657fe['email'])[_0xbe14('0xd')](function(_0x2a3623){_0x8216c3=_0x2a3623;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x8216c3['id']);return getEndUser(_0x1f0355,_0x6b6aa8['calleridname'],_0x6b6aa8[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x53e8ab){_0x5051e4=_0x53e8ab;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x5051e4['id']);return getTicket(_0x1f0355,_0x8216c3,_0x5051e4,_0x59ae4d,_0x6b6aa8);})[_0xbe14('0xd')](function(_0x36c20c){if(_0x36c20c){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x36c20c['id']);switch(_0x1f0355['type']){case'integrationTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x36c20c['id']});break;case'newTab':logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x5657fe['name']),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')](_0xbe14('0x5b'),_0x36c20c['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x4d'),_0xbe14('0x5d'));}}})['catch'](function(_0x5aeea9){console[_0xbe14('0x5c')](_0x5aeea9);logger[_0xbe14('0x5c')](_0xbe14('0x4d'),JSON['stringify'](_0x5aeea9));});};exports['outbound']=function(_0x44fe0d,_0x134878,_0x50d78f,_0x339a86,_0x32496a,_0x50c2a0,_0x28f995){var _0x4a40d2,_0x41ba58;_0x50c2a0[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['remoteUri']);_0x50c2a0[_0xbe14('0x4a')]=intUtil[_0xbe14('0x4b')](_0x50c2a0['serverUrl']);if(_0x28f995&&_0x28f995[_0xbe14('0x5e')]&&_0x28f995[_0xbe14('0x5e')]!==_0xbe14('0x5f')){logger[_0xbe14('0x12')](_0xbe14('0x60'),'Recording\x20is\x20enabled!');_0x134878[_0xbe14('0x51')]=util[_0xbe14('0xb')](_0xbe14('0x4f'),_0x50c2a0[_0xbe14('0x4a')],_0x134878[_0xbe14('0x50')],md5(_0x134878[_0xbe14('0x50')]));}headers[_0xbe14('0x61')]=getAuth(_0x50c2a0);return getUser(_0x50c2a0,_0x339a86['email'])[_0xbe14('0xd')](function(_0x1b47a4){_0x4a40d2=_0x1b47a4;logger[_0xbe14('0x12')](_0xbe14('0x52'),_0x4a40d2['id']);return getEndUser(_0x50c2a0,_0x134878[_0xbe14('0x62')],_0x134878[_0xbe14('0x63')]);})[_0xbe14('0xd')](function(_0x32df3c){_0x41ba58=_0x32df3c;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x41ba58['id']);return getTicket(_0x50c2a0,_0x4a40d2,_0x41ba58,_0x50d78f,_0x134878);})[_0xbe14('0xd')](function(_0x4bccfc){if(_0x4bccfc){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x4bccfc['id']);switch(_0x50c2a0[_0xbe14('0x30')]){case _0xbe14('0x64'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x56'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x58'),{'recordId':_0x4bccfc['id']});break;case _0xbe14('0x65'):logger[_0xbe14('0x12')](_0xbe14('0x4d'),_0xbe14('0x59'));emit(util[_0xbe14('0xb')](_0xbe14('0x57'),_0x339a86[_0xbe14('0x3a')]),_0xbe14('0x5a'),{'uri':util[_0xbe14('0xb')]('%s/agent/tickets/%s',_0x50c2a0[_0xbe14('0x28')],_0x4bccfc['id'])});break;default:logger[_0xbe14('0x5c')](_0xbe14('0x60'),_0xbe14('0x5d'));}}})[_0xbe14('0x66')](function(_0x222944){logger[_0xbe14('0x5c')](_0xbe14('0x60'),JSON[_0xbe14('0x19')](_0x222944));});};exports[_0xbe14('0x67')]=function(_0x5917d5,_0x18be56,_0x442ec4,_0x2d4dd4,_0xfd32a3,_0x3ac6d8){var _0x5a1ea6,_0x42b341;_0x3ac6d8[_0xbe14('0x28')]=intUtil[_0xbe14('0x4b')](_0x3ac6d8[_0xbe14('0x28')]);_0x3ac6d8[_0xbe14('0x4a')]=intUtil['stripTrailingSlash'](_0x3ac6d8[_0xbe14('0x4a')]);if(_0xfd32a3&&_0xfd32a3[_0xbe14('0x4c')]){logger[_0xbe14('0x12')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',_0xbe14('0x4e'));_0x18be56[_0xbe14('0x51')]=util[_0xbe14('0xb')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3ac6d8[_0xbe14('0x4a')],_0x18be56[_0xbe14('0x50')],md5(_0x18be56[_0xbe14('0x50')]));}else{_0x18be56[_0xbe14('0x51')]='';}headers[_0xbe14('0x61')]=getAuth(_0x3ac6d8);return getUser(_0x3ac6d8)[_0xbe14('0xd')](function(_0x445302){_0x5a1ea6=_0x445302;logger['info']('The\x20User\x20ID\x20is:',_0x5a1ea6['id']);return getEndUser(_0x3ac6d8,_0x18be56[_0xbe14('0x6a')],_0x18be56[_0xbe14('0x53')]);})[_0xbe14('0xd')](function(_0x2510a0){_0x42b341=_0x2510a0;logger[_0xbe14('0x12')](_0xbe14('0x54'),_0x42b341['id']);return getTicket(_0x3ac6d8,_0x5a1ea6,_0x42b341,_0x442ec4,_0x18be56);})[_0xbe14('0xd')](function(_0x43511e){if(_0x43511e){logger['info']('Ticket\x20created!');logger[_0xbe14('0x12')](_0xbe14('0x55'),_0x43511e['id']);}})[_0xbe14('0x66')](function(_0x57729f){logger[_0xbe14('0x5c')]('['+_0x18be56[_0xbe14('0x68')][_0xbe14('0x69')]()+']',JSON[_0xbe14('0x19')](_0x57729f));});};
\ No newline at end of file
+var _0x7217=['format','%s/users','remoteUri','then','total_entries','find','entries','info','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','debug','stringify','GET','authType','basic','%s:%s','username','password','token','Basic\x20%s','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','_embedded','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','length','map','forEach','string','picklist','nameField','customField','content','toString','includes','idField','custom_fields','variable','variableName','type','customVariable','Variable','name','toLowerCase','priority','Creating\x20new\x20ticket...','merge','getString','new','xCALLY','Motion','CTI','Tags','Descriptions','user','%s/customers/%d/cases','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','integrationTab','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','catch','outbound','recordingFormat','none','[OUTBOUND]','uniqueid','The\x20Ticket\x20ID\x20is:','%s/agent/tickets/%s','unmanaged','lastevent','toUpperCase','calleridname','lodash','md5','util','ioredis','./util','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','emit','application/json','validateEmail','Getting\x20agent\x20with\x20email'];(function(_0x146265,_0x5c7068){var _0x4ebc44=function(_0x4319d2){while(--_0x4319d2){_0x146265['push'](_0x146265['shift']());}};_0x4ebc44(++_0x5c7068);}(_0x7217,0x19e));var _0x7721=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0x7217[_0x139a3c];return _0x2b375b;};'use strict';var _=require(_0x7721('0x0'));var rp=require('request-promise');var md5=require(_0x7721('0x1'));var util=require(_0x7721('0x2'));var Redis=require(_0x7721('0x3'));var intUtil=require(_0x7721('0x4'));var config=require(_0x7721('0x5'));var logger=require('../../../../config/logger')('desk');config[_0x7721('0x6')]=_[_0x7721('0x7')](config[_0x7721('0x6')],{'host':_0x7721('0x8'),'port':0x18eb});var io=require(_0x7721('0x9'))(new Redis(config[_0x7721('0x6')]));function emit(_0x18ab6b,_0x21f680,_0x225610){io['to'](_0x18ab6b)[_0x7721('0xa')](_0x21f680,_0x225610);}var headers={'Content-Type':_0x7721('0xb'),'Accept':_0x7721('0xb')};function getUser(_0xfa8835,_0x138740){if(intUtil[_0x7721('0xc')](_0x138740)===!![]){logger['info'](_0x7721('0xd'),_0x138740);return request({'uri':util[_0x7721('0xe')](_0x7721('0xf'),_0xfa8835[_0x7721('0x10')])})[_0x7721('0x11')](function(_0x409b37){if(_0x409b37[_0x7721('0x12')]){return _[_0x7721('0x13')](_0x409b37['_embedded'][_0x7721('0x14')],{'email':_0x138740});}})[_0x7721('0x11')](function(_0x57ff6d){if(_0x57ff6d){logger[_0x7721('0x15')](_0x7721('0x16'));return _0x57ff6d;}else{logger[_0x7721('0x15')](_0x7721('0x17'));return request({'uri':util['format'](_0x7721('0x18'),_0xfa8835[_0x7721('0x10')])});}});}else{logger['info']('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0x7721('0x18'),_0xfa8835[_0x7721('0x10')])});}}function request(_0x3cc909){logger[_0x7721('0x19')]('[HTTP]',JSON[_0x7721('0x1a')](_0x3cc909));return rp(_['defaults'](_0x3cc909,{'method':_0x7721('0x1b'),'headers':headers,'json':!![]}));}function getAuth(_0x5cb0e6){var _0xfec626;if(_0x5cb0e6[_0x7721('0x1c')]===_0x7721('0x1d')){_0xfec626=util[_0x7721('0xe')](_0x7721('0x1e'),_0x5cb0e6[_0x7721('0x1f')],_0x5cb0e6[_0x7721('0x20')]);}else if(_0x5cb0e6[_0x7721('0x1c')]===_0x7721('0x21')){_0xfec626=util[_0x7721('0xe')]('%s/token:%s',_0x5cb0e6[_0x7721('0x1f')],_0x5cb0e6[_0x7721('0x21')]);}return util[_0x7721('0xe')](_0x7721('0x22'),new Buffer(_0xfec626)['toString'](_0x7721('0x23')));}function getEndUser(_0x512f31,_0xb9e9dd,_0x288e3a){logger[_0x7721('0x15')](_0x7721('0x24'),_0x288e3a);return request({'uri':util[_0x7721('0xe')](_0x7721('0x25'),_0x512f31[_0x7721('0x10')]),'qs':{'phone':_0x288e3a}})['then'](function(_0x216f20){if(_0x216f20[_0x7721('0x12')]){logger[_0x7721('0x15')](_0x7721('0x26'));return _0x216f20[_0x7721('0x27')][_0x7721('0x14')][0x0];}else{logger[_0x7721('0x15')](_0x7721('0x28'));return request({'uri':util[_0x7721('0xe')]('%s/customers',_0x512f31[_0x7721('0x10')]),'method':'POST','body':{'first_name':_0xb9e9dd,'title':_0xb9e9dd,'phone_numbers':[{'type':'work','value':_0x288e3a}]}});}});}function getTags(_0x315202,_0x343c19){var _0x53c904=[];if(_0x315202&&_0x315202[_0x7721('0x29')]>0x0){_0x53c904=_[_0x7721('0x2a')](_0x315202,_0x343c19);}return _0x53c904;}function getCustomFields(_0x37b9f0,_0xd7d703){var _0x1da2d8=[];var _0x5c54f0={'custom_fields':{}};if(_0x37b9f0[_0x7721('0x29')]>0x0){_[_0x7721('0x2b')](_0x37b9f0,function(_0x497f9f){if(_['includes']([_0x7721('0x2c'),_0x7721('0x2d')],_0x497f9f['type'])&&_0x497f9f[_0x7721('0x2e')]&&!_0x497f9f[_0x7721('0x2f')]){_0x5c54f0[_0x497f9f[_0x7721('0x2e')]['toLowerCase']()]=_0x497f9f[_0x7721('0x30')][_0x7721('0x31')]();}else if(_[_0x7721('0x32')]([_0x7721('0x2c'),_0x7721('0x2d')],_0x497f9f['type'])&&_0x497f9f[_0x7721('0x33')]&&_0x497f9f[_0x7721('0x2f')]){_0x5c54f0[_0x7721('0x34')][_0x497f9f['idField']]=_0x497f9f[_0x7721('0x30')][_0x7721('0x31')]();}else if(_0x497f9f['type']===_0x7721('0x35')&&_0x497f9f['variableName']&&_0x497f9f[_0x7721('0x33')]&&_0x497f9f[_0x7721('0x2f')]){_0xd7d703[_0x497f9f[_0x7721('0x36')]]&&(_0x5c54f0[_0x7721('0x34')][_0x497f9f[_0x7721('0x33')]]=_0xd7d703[_0x497f9f[_0x7721('0x36')]][_0x7721('0x31')]());}else if(_0x497f9f[_0x7721('0x37')]===_0x7721('0x38')&&_0x497f9f[_0x7721('0x39')]&&_0x497f9f[_0x7721('0x39')]['name']&&_0x497f9f[_0x7721('0x33')]&&_0x497f9f['customField']){_0xd7d703[_0x497f9f[_0x7721('0x39')][_0x7721('0x3a')][_0x7721('0x3b')]()]&&(_0x5c54f0[_0x7721('0x34')][_0x497f9f[_0x7721('0x33')]]=_0xd7d703[_0x497f9f[_0x7721('0x39')]['name']['toLowerCase']()]['toString']());}});}if(_0x5c54f0['priority']){_0x5c54f0[_0x7721('0x3c')]=Number(_0x5c54f0[_0x7721('0x3c')]);}return _0x5c54f0;}function getTicket(_0x1acc72,_0x22ef35,_0x4a90ce,_0xa389fa,_0x4cf659){logger[_0x7721('0x15')](_0x7721('0x3d'));var _0x5a278e=_[_0x7721('0x3e')]({'subject':intUtil[_0x7721('0x3f')](_0xa389fa['Subjects'],_0x4cf659,'\x20'),'type':'phone','status':_0x7721('0x40'),'labels':[_0x7721('0x41'),_0x7721('0x42'),_0x7721('0x43')]['concat'](getTags(_0xa389fa[_0x7721('0x44')],_0x7721('0x3a'))),'description':intUtil[_0x7721('0x3f')](_0xa389fa[_0x7721('0x45')],_0x4cf659,'\x0a'),'_links':{'assigned_user':{'href':util[_0x7721('0xe')]('/api/v2/users/%d',_0x22ef35['id']),'class':_0x7721('0x46')}},'message':{'direction':'in','body':intUtil['getString'](_0xa389fa[_0x7721('0x45')],_0x4cf659,'\x0a')}},getCustomFields(_0xa389fa['Fields'],_0x4cf659));return request({'uri':util[_0x7721('0xe')](_0x7721('0x47'),_0x1acc72[_0x7721('0x10')],_0x4a90ce['id']),'method':'POST','body':_0x5a278e});}exports[_0x7721('0x48')]=function(_0x11d853,_0x1ad315,_0x481fa8,_0x9f7b1d,_0x754071,_0xdb3033){var _0x2d5f35,_0x135dbc;_0xdb3033[_0x7721('0x10')]=intUtil[_0x7721('0x49')](_0xdb3033['remoteUri']);_0xdb3033['serverUrl']=intUtil[_0x7721('0x49')](_0xdb3033[_0x7721('0x4a')]);if(_0x754071&&_0x754071[_0x7721('0x4b')]){logger[_0x7721('0x15')](_0x7721('0x4c'),_0x7721('0x4d'));_0x1ad315[_0x7721('0x4e')]=util[_0x7721('0xe')](_0x7721('0x4f'),_0xdb3033[_0x7721('0x4a')],_0x1ad315['uniqueid'],md5(_0x1ad315['uniqueid']));}else{_0x1ad315[_0x7721('0x4e')]='';}headers[_0x7721('0x50')]=getAuth(_0xdb3033);return getUser(_0xdb3033,_0x9f7b1d[_0x7721('0x51')])[_0x7721('0x11')](function(_0x589e95){_0x2d5f35=_0x589e95;logger[_0x7721('0x15')](_0x7721('0x52'),_0x2d5f35['id']);return getEndUser(_0xdb3033,_0x1ad315['calleridname'],_0x1ad315[_0x7721('0x53')]);})['then'](function(_0x2682b1){_0x135dbc=_0x2682b1;logger['info'](_0x7721('0x54'),_0x135dbc['id']);return getTicket(_0xdb3033,_0x2d5f35,_0x135dbc,_0x481fa8,_0x1ad315);})[_0x7721('0x11')](function(_0xf17c40){if(_0xf17c40){logger['info'](_0x7721('0x55'));logger[_0x7721('0x15')]('The\x20Ticket\x20ID\x20is:',_0xf17c40['id']);switch(_0xdb3033[_0x7721('0x37')]){case _0x7721('0x56'):logger[_0x7721('0x15')]('[QUEUE]',_0x7721('0x57'));emit(util['format'](_0x7721('0x58'),_0x9f7b1d[_0x7721('0x3a')]),_0x7721('0x59'),{'recordId':_0xf17c40['id']});break;case _0x7721('0x5a'):logger[_0x7721('0x15')](_0x7721('0x4c'),_0x7721('0x5b'));emit(util[_0x7721('0xe')](_0x7721('0x58'),_0x9f7b1d[_0x7721('0x3a')]),_0x7721('0x5c'),{'uri':util[_0x7721('0xe')](_0x7721('0x5d'),_0xf17c40['id'])});break;default:logger[_0x7721('0x5e')](_0x7721('0x4c'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0x7721('0x5f')](function(_0x2f6f30){console[_0x7721('0x5e')](_0x2f6f30);logger[_0x7721('0x5e')](_0x7721('0x4c'),JSON[_0x7721('0x1a')](_0x2f6f30));});};exports[_0x7721('0x60')]=function(_0x57484c,_0x234bee,_0x17036e,_0x134908,_0x3b7382,_0x1f1e84,_0x9c0d4){var _0x7fbd6c,_0x33287d;_0x1f1e84[_0x7721('0x10')]=intUtil[_0x7721('0x49')](_0x1f1e84[_0x7721('0x10')]);_0x1f1e84['serverUrl']=intUtil[_0x7721('0x49')](_0x1f1e84[_0x7721('0x4a')]);if(_0x9c0d4&&_0x9c0d4[_0x7721('0x61')]&&_0x9c0d4[_0x7721('0x61')]!==_0x7721('0x62')){logger[_0x7721('0x15')](_0x7721('0x63'),_0x7721('0x4d'));_0x234bee[_0x7721('0x4e')]=util[_0x7721('0xe')](_0x7721('0x4f'),_0x1f1e84[_0x7721('0x4a')],_0x234bee[_0x7721('0x64')],md5(_0x234bee[_0x7721('0x64')]));}headers[_0x7721('0x50')]=getAuth(_0x1f1e84);return getUser(_0x1f1e84,_0x134908['email'])['then'](function(_0x4e112e){_0x7fbd6c=_0x4e112e;logger[_0x7721('0x15')]('The\x20User\x20ID\x20is:',_0x7fbd6c['id']);return getEndUser(_0x1f1e84,_0x234bee['destcalleridname'],_0x234bee['destcalleridnum']);})['then'](function(_0x47925a){_0x33287d=_0x47925a;logger[_0x7721('0x15')](_0x7721('0x54'),_0x33287d['id']);return getTicket(_0x1f1e84,_0x7fbd6c,_0x33287d,_0x17036e,_0x234bee);})['then'](function(_0x5181d7){if(_0x5181d7){logger['info']('Ticket\x20created!');logger['info'](_0x7721('0x65'),_0x5181d7['id']);switch(_0x1f1e84['type']){case'integrationTab':logger['info'](_0x7721('0x4c'),_0x7721('0x57'));emit(util[_0x7721('0xe')]('user:%s',_0x134908[_0x7721('0x3a')]),_0x7721('0x59'),{'recordId':_0x5181d7['id']});break;case _0x7721('0x5a'):logger[_0x7721('0x15')](_0x7721('0x4c'),_0x7721('0x5b'));emit(util[_0x7721('0xe')](_0x7721('0x58'),_0x134908[_0x7721('0x3a')]),_0x7721('0x5c'),{'uri':util[_0x7721('0xe')](_0x7721('0x66'),_0x1f1e84[_0x7721('0x10')],_0x5181d7['id'])});break;default:logger[_0x7721('0x5e')](_0x7721('0x63'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0x7721('0x5f')](function(_0x2c93b0){logger[_0x7721('0x5e')](_0x7721('0x63'),JSON['stringify'](_0x2c93b0));});};exports[_0x7721('0x67')]=function(_0x104f05,_0x4c8284,_0x3e7df3,_0x5d37ad,_0x1f508d,_0x4bfb48){var _0x36a3a6,_0x3f9eaa;_0x4bfb48[_0x7721('0x10')]=intUtil[_0x7721('0x49')](_0x4bfb48[_0x7721('0x10')]);_0x4bfb48[_0x7721('0x4a')]=intUtil[_0x7721('0x49')](_0x4bfb48['serverUrl']);if(_0x1f508d&&_0x1f508d[_0x7721('0x4b')]){logger[_0x7721('0x15')]('['+_0x4c8284[_0x7721('0x68')][_0x7721('0x69')]()+']',_0x7721('0x4d'));_0x4c8284[_0x7721('0x4e')]=util[_0x7721('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4bfb48[_0x7721('0x4a')],_0x4c8284[_0x7721('0x64')],md5(_0x4c8284['uniqueid']));}else{_0x4c8284[_0x7721('0x4e')]='';}headers['Authorization']=getAuth(_0x4bfb48);return getUser(_0x4bfb48)[_0x7721('0x11')](function(_0x382800){_0x36a3a6=_0x382800;logger[_0x7721('0x15')](_0x7721('0x52'),_0x36a3a6['id']);return getEndUser(_0x4bfb48,_0x4c8284[_0x7721('0x6a')],_0x4c8284[_0x7721('0x53')]);})[_0x7721('0x11')](function(_0x5dca04){_0x3f9eaa=_0x5dca04;logger[_0x7721('0x15')](_0x7721('0x54'),_0x3f9eaa['id']);return getTicket(_0x4bfb48,_0x36a3a6,_0x3f9eaa,_0x3e7df3,_0x4c8284);})[_0x7721('0x11')](function(_0x5f08cc){if(_0x5f08cc){logger['info']('Ticket\x20created!');logger['info']('The\x20Ticket\x20ID\x20is:',_0x5f08cc['id']);}})[_0x7721('0x5f')](function(_0x2645dd){logger['error']('['+_0x4c8284[_0x7721('0x68')][_0x7721('0x69')]()+']',JSON[_0x7721('0x1a')](_0x2645dd));});};
\ No newline at end of file
index bd9a87c..ee2913a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2578=['string','type','nameField','customField','idField','indexOf','substring','content','ticketType','incident','POST','getString','Subjects','Descriptions','/contacts(','Fields','phonecall','callDirection','queue','phonecalls','assign','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','modernAuthentication','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','[OUTBOUND]','Recording\x20is\x20enabled!',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','openNewTab','name',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','md5','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','data7','CloudProvider','resolve','data5','remoteUri','username','password','clientSecret','access_token','catch','error','then','GET','4.0','value','isNil','validateEmail','email','length','isdisabled','info','toUpperCase',']\x20Agent\x20found\x20','systemuserid','userId',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userEmail','internalemailaddress','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','Bearer\x20','body','headers','odata-entityid','lastIndexOf','enduserId','message','telephone1','contacts?$select=','&$filter=','%2b','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing','forEach'];(function(_0x24bf11,_0x320ad8){var _0x20f05b=function(_0x175223){while(--_0x175223){_0x24bf11['push'](_0x24bf11['shift']());}};_0x20f05b(++_0x320ad8);}(_0x2578,0x117));var _0x8257=function(_0x1c9fc5,_0x3ca335){_0x1c9fc5=_0x1c9fc5-0x0;var _0x4eea03=_0x2578[_0x1c9fc5];return _0x4eea03;};'use strict';var _=require(_0x8257('0x0'));var rp=require(_0x8257('0x1'));var util=require(_0x8257('0x2'));var intUtil=require('./util');var md5=require(_0x8257('0x3'));var Redis=require('ioredis');var logger=require(_0x8257('0x4'))(_0x8257('0x5'));var config=require(_0x8257('0x6'));config[_0x8257('0x7')]=_[_0x8257('0x8')](config[_0x8257('0x7')],{'host':_0x8257('0x9'),'port':0x18eb});var io=require(_0x8257('0xa'))(new Redis(config[_0x8257('0x7')]));function getAuthToken(_0x353831,_0x419dad,_0x3130d8){if(_0x353831['modernAuthentication']){_0x353831['remoteUri']=_0x353831['CloudProvider'][_0x8257('0xb')];_0x353831['tenantId']=_0x353831[_0x8257('0xc')]['data2'];return Promise[_0x8257('0xd')](_0x353831[_0x8257('0xc')][_0x8257('0xe')]);}var _0x508a5a={'method':'POST','uri':_0x419dad,'form':{'client_id':_0x353831['clientId'],'resource':_0x353831[_0x8257('0xf')],'username':_0x353831[_0x8257('0x10')],'password':_0x353831[_0x8257('0x11')],'grant_type':'password','client_secret':_0x353831[_0x8257('0x12')]},'json':!![]};return rp(_0x508a5a)['then'](function(_0x5b7857){return _0x5b7857[_0x8257('0x13')];})[_0x8257('0x14')](function(_0x47811a){logger[_0x8257('0x15')]('['+[_0x3130d8['toUpperCase']()]+']\x20Wrong\x20credentials!');return _0x47811a['message'];});}function getUser(_0x5c7b5b,_0x2f3be9,_0x4cbde6,_0x445ead,_0x4cc5a2,_0x2633e2){return new Promise(function(_0x2dc485,_0x1aed37){return getAuthToken(_0x2f3be9,_0x445ead,_0x2633e2)[_0x8257('0x16')](function(_0x12bed5){var _0x2ace71={'method':_0x8257('0x17'),'uri':_0x4cc5a2+'systemusers?$select=internalemailaddress,isdisabled,systemuserid','headers':{'Authorization':'Bearer\x20'+_0x12bed5,'OData-Version':_0x8257('0x18')},'json':!![]};return rp(_0x2ace71);})[_0x8257('0x16')](function(_0x4a82e5){var _0x2678da=_0x4a82e5[_0x8257('0x19')];var _0x1e2f79=![];var _0x3b8b0f=null;if(!_[_0x8257('0x1a')](_0x4cbde6)){if(intUtil[_0x8257('0x1b')](_0x4cbde6[_0x8257('0x1c')])){_0x5c7b5b['userEmail']=_0x4cbde6[_0x8257('0x1c')];for(_0x3b8b0f=0x0;_0x3b8b0f<_0x2678da[_0x8257('0x1d')];_0x3b8b0f++){if(_0x2678da[_0x3b8b0f]['internalemailaddress']===_0x4cbde6[_0x8257('0x1c')]&&!_0x2678da[_0x3b8b0f][_0x8257('0x1e')]){_0x1e2f79=!![];logger[_0x8257('0x1f')]('['+[_0x2633e2[_0x8257('0x20')]()]+_0x8257('0x21')+_0x2678da[_0x3b8b0f][_0x8257('0x22')]+'!');_0x5c7b5b[_0x8257('0x23')]=_0x2678da[_0x3b8b0f]['systemuserid'];}}}}if(!_0x1e2f79){logger['info']('['+[_0x2633e2['toUpperCase']()]+_0x8257('0x24'));_0x5c7b5b[_0x8257('0x25')]=_0x2f3be9['username'];for(_0x3b8b0f=0x0;_0x3b8b0f<_0x2678da['length'];_0x3b8b0f++){if(_0x2678da[_0x3b8b0f][_0x8257('0x26')]===_0x2f3be9['username']){_0x5c7b5b[_0x8257('0x23')]=_0x2678da[_0x3b8b0f][_0x8257('0x22')];}}}_0x2dc485(_0x5c7b5b);})[_0x8257('0x14')](function(_0x24d388){_0x1aed37(_0x24d388['message']);});});}function createEndUser(_0x391f9d,_0x15d567,_0x29871,_0x40b831,_0x3a2f74,_0x334197,_0x28e8ca){return new Promise(function(_0x1605d9,_0x25dbd4){return getAuthToken(_0x15d567,_0x29871,_0x334197)[_0x8257('0x16')](function(_0xd040d8){var _0x4091c0=_0x334197[_0x8257('0x27')]()===_0x8257('0x28')?_0x3a2f74[_0x8257('0x29')]:_0x3a2f74[_0x8257('0x2a')];var _0x2c929c={'method':'POST','uri':_0x40b831+_0x8257('0x2b'),'body':{'fullname':_0x4091c0,'firstname':_0x4091c0,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x8257('0x2c')+_0x391f9d[_0x8257('0x23')]+')'},'headers':{'Authorization':_0x8257('0x2d')+_0xd040d8,'OData-Version':_0x8257('0x18')},'json':!![],'resolveWithFullResponse':!![]};_0x2c929c[_0x8257('0x2e')][_0x28e8ca]=_0x4091c0;return rp(_0x2c929c);})[_0x8257('0x16')](function(_0x1ffcbd){var _0x5b146e=_0x1ffcbd[_0x8257('0x2f')][_0x8257('0x30')];var _0x11e92f=_0x5b146e['substring'](_0x5b146e[_0x8257('0x31')]('(')+0x1,_0x5b146e[_0x8257('0x31')](')'));_0x391f9d[_0x8257('0x32')]=_0x11e92f;_0x1605d9(_0x391f9d);})[_0x8257('0x14')](function(_0x1447ac){_0x25dbd4(_0x1447ac[_0x8257('0x33')]);});});}function getEndUser(_0x10c3ab,_0x2de910,_0xb4d5d2,_0x2e09e9,_0x5304fb,_0x56fdec,_0x5b3971,_0x4b6dda){var _0x1ae0c8=_0x56fdec['toLowerCase']()==='outbound'?_0x5304fb[_0x8257('0x29')]:_0x5304fb[_0x8257('0x2a')];return getAuthToken(_0x2de910,_0xb4d5d2,_0x56fdec)[_0x8257('0x16')](function(_0x46e905){_0x4b6dda=_0x4b6dda?_0x4b6dda:_0x8257('0x34');var _0x106bea={'method':_0x8257('0x17'),'uri':_0x2e09e9+_0x8257('0x35')+_0x4b6dda+_0x8257('0x36')+_0x4b6dda+'\x20eq\x20\x27'+_0x1ae0c8['replace']('+',_0x8257('0x37'))+'\x27','headers':{'Authorization':_0x8257('0x2d')+_0x46e905,'If-None-Match':null,'OData-Version':_0x8257('0x18')},'json':!![]};return rp(_0x106bea);})[_0x8257('0x16')](function(_0x256504){var _0x276186=![];if(!_0x256504)return _0x276186;var _0x371b81=_0x256504[_0x8257('0x19')];for(var _0x48eb88=0x0;_0x48eb88<_0x371b81[_0x8257('0x1d')];_0x48eb88++){if(_0x371b81[_0x48eb88][_0x4b6dda]===_0x1ae0c8){_0x276186=!![];_0x10c3ab[_0x8257('0x32')]=_0x371b81[_0x48eb88][_0x8257('0x38')];}}return _0x276186;})['then'](function(_0x1a42f7){if(_0x1a42f7)return _0x10c3ab;if(_0x5b3971===_0x8257('0x39')){logger[_0x8257('0x1f')]('['+[_0x56fdec[_0x8257('0x20')]()]+_0x8257('0x3a'));return _0x10c3ab;}return createEndUser(_0x10c3ab,_0x2de910,_0xb4d5d2,_0x2e09e9,_0x5304fb,_0x56fdec,_0x4b6dda)[_0x8257('0x16')](function(_0x14d04a){logger['info']('['+[_0x56fdec[_0x8257('0x20')]()]+']\x20Enduser\x20created!',_0x14d04a[_0x8257('0x32')]);return _0x14d04a;});});}function getCustomFields(_0x11040c,_0x4af6aa,_0x55af62){var _0xc5f23={};if(_0x11040c[_0x8257('0x1d')]>0x0){_[_0x8257('0x3b')](_0x11040c,function(_0x59f71a){if(_['includes']([_0x8257('0x3c'),'picklist'],_0x59f71a[_0x8257('0x3d')])&&_0x59f71a[_0x8257('0x3e')]&&!_0x59f71a[_0x8257('0x3f')]){var _0xf0ae4=_0x59f71a[_0x8257('0x40')][_0x8257('0x27')]();var _0x356dc9=_0xf0ae4['substring'](0x0,_0xf0ae4[_0x8257('0x41')]('_'));var _0x31caf9=_0xf0ae4[_0x8257('0x42')](_0xf0ae4[_0x8257('0x41')]('_')+0x1);if(_0x356dc9===_0x55af62){_0xc5f23[_0x31caf9]=_0x59f71a[_0x8257('0x43')];}}});}return _0xc5f23;}function getTicket(_0x55135a,_0x53ff0e,_0x4e2375,_0x3490ea,_0x1c46e1,_0x4e0d8c,_0x394cc5){return new Promise(function(_0x1a88e0,_0x4e7362){var _0x279bfa;return getAuthToken(_0x53ff0e,_0x4e2375,_0x394cc5)[_0x8257('0x16')](function(_0x462d08){if(_0x4e0d8c[_0x8257('0x44')]===_0x8257('0x45')){_0x279bfa={'method':_0x8257('0x46'),'uri':_0x3490ea+'incidents','body':Object['assign']({},{'title':intUtil[_0x8257('0x47')](_0x4e0d8c[_0x8257('0x48')],_0x1c46e1,'\x20'),'description':intUtil[_0x8257('0x47')](_0x4e0d8c[_0x8257('0x49')],_0x1c46e1,'\x0a'),'customerid_contact@odata.bind':_0x55135a[_0x8257('0x32')]?_0x8257('0x4a')+_0x55135a[_0x8257('0x32')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x55135a[_0x8257('0x23')]+')','caseorigincode':'1'},getCustomFields(_0x4e0d8c[_0x8257('0x4b')],_0x1c46e1,_0x4e0d8c[_0x8257('0x44')])),'headers':{'Authorization':_0x8257('0x2d')+_0x462d08,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x4e0d8c[_0x8257('0x44')]===_0x8257('0x4c')){var _0xf43616=_0x55135a[_0x8257('0x32')]?[{'partyid_systemuser@odata.bind':_0x8257('0x2c')+_0x55135a[_0x8257('0x23')]+')','participationtypemask':_0x55135a[_0x8257('0x4d')]===_0x8257('0x4e')?0x2:0x1},{'partyid_contact@odata.bind':_0x8257('0x4a')+_0x55135a['enduserId']+')','participationtypemask':_0x55135a[_0x8257('0x4d')]===_0x8257('0x4e')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x8257('0x2c')+_0x55135a['userId']+')','participationtypemask':_0x55135a[_0x8257('0x4d')]===_0x8257('0x4e')?0x2:0x1}];_0x279bfa={'method':_0x8257('0x46'),'uri':_0x3490ea+_0x8257('0x4f'),'body':Object[_0x8257('0x50')]({},{'subject':intUtil['getString'](_0x4e0d8c[_0x8257('0x48')],_0x1c46e1,'\x20'),'phonenumber':String(_0x1c46e1[_0x8257('0x2a')]),'description':intUtil['getString'](_0x4e0d8c['Descriptions'],_0x1c46e1,'\x0a'),'regardingobjectid_contact@odata.bind':_0x55135a['enduserId']?_0x8257('0x4a')+_0x55135a[_0x8257('0x32')]+')':undefined,'ownerid@odata.bind':'/systemusers('+_0x55135a['userId']+')','directioncode':_0x55135a[_0x8257('0x4d')]===_0x8257('0x4e')?![]:!![],'phonecall_activity_parties':_0xf43616},getCustomFields(_0x4e0d8c[_0x8257('0x4b')],_0x1c46e1,_0x4e0d8c[_0x8257('0x44')])),'headers':{'Authorization':_0x8257('0x2d')+_0x462d08,'OData-Version':_0x8257('0x18')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x279bfa);})[_0x8257('0x16')](function(_0x5e5bc7){var _0x2ea073=_0x5e5bc7[_0x8257('0x2f')][_0x8257('0x30')];var _0x5c671e=_0x2ea073[_0x8257('0x42')](_0x2ea073['lastIndexOf']('(')+0x1,_0x2ea073[_0x8257('0x31')](')'));_0x55135a[_0x8257('0x51')]=_0x5c671e;_0x1a88e0(_0x55135a);})[_0x8257('0x14')](function(_0x5c608c){_0x4e7362(_0x5c608c[_0x8257('0x33')]);});});}function emit(_0x34aa96,_0x34b3b4,_0x100e84,_0x1515a6){var _0x2dd218={'uri':util[_0x8257('0x52')](_0x8257('0x53'),_0x34aa96,_0x100e84,_0x1515a6)};io['to'](util['format'](_0x8257('0x54'),_0x34b3b4))[_0x8257('0x55')](_0x8257('0x56'),_0x2dd218);}exports['cs']=function(_0x5a7621,_0x158130,_0xb08b21,_0x334a09,_0x4de810,_0x14ae6c,_0x2fae28,_0x17548a){var _0x5c77be={};_0x14ae6c[_0x8257('0xf')]=_0x14ae6c[_0x8257('0x57')]?intUtil[_0x8257('0x58')](_0x14ae6c[_0x8257('0xc')][_0x8257('0xb')]):intUtil[_0x8257('0x58')](_0x14ae6c[_0x8257('0xf')]);_0x14ae6c[_0x8257('0x59')]=intUtil[_0x8257('0x58')](_0x14ae6c[_0x8257('0x59')]);_0x5c77be['callDirection']=_0x17548a===_0x8257('0x4e')||_0x17548a===_0x8257('0x5a')?'queue':_0x8257('0x28');var _0x5372da=_0x14ae6c[_0x8257('0x57')]?util['format'](_0x8257('0x5b'),_0x14ae6c[_0x8257('0xc')]['data7']):util['format'](_0x8257('0x5b'),_0x14ae6c[_0x8257('0xf')]);var _0xce4d39=util['format'](_0x8257('0x5c'),_0x14ae6c['tenantId']);var _0x5993a7=util[_0x8257('0x52')](_0x8257('0x5d'),_0x14ae6c[_0x8257('0x59')],_0x158130[_0x8257('0x5e')],md5(_0x158130[_0x8257('0x5e')]));if(_0x4de810&&_0x4de810[_0x8257('0x5f')]){logger[_0x8257('0x1f')](_0x8257('0x60'),'Recording\x20is\x20enabled!');_0x158130[_0x8257('0x61')]=_0x5993a7;}else if(_0x2fae28&&_0x2fae28[_0x8257('0x62')]&&_0x2fae28[_0x8257('0x62')]!=='none'){logger[_0x8257('0x1f')](_0x8257('0x63'),_0x8257('0x64'));_0x158130[_0x8257('0x61')]=_0x5993a7;}else{_0x158130['recordingURL']='';}return getUser(_0x5c77be,_0x14ae6c,_0x334a09,_0xce4d39,_0x5372da,_0x17548a)[_0x8257('0x16')](function(_0xa3dbf8){logger['info']('['+_0x17548a[_0x8257('0x20')]()+_0x8257('0x65'),_0xa3dbf8[_0x8257('0x23')]);logger[_0x8257('0x1f')]('['+_0x17548a[_0x8257('0x20')]()+_0x8257('0x66'),_0xa3dbf8[_0x8257('0x25')]);return getEndUser(_0xa3dbf8,_0x14ae6c,_0xce4d39,_0x5372da,_0x158130,_0x17548a,_0xb08b21[_0x8257('0x67')],_0xb08b21[_0x8257('0x68')]);})[_0x8257('0x16')](function(_0x17693e){logger[_0x8257('0x1f')]('['+_0x17548a[_0x8257('0x20')]()+_0x8257('0x69'),_0x17693e['enduserId']);logger[_0x8257('0x1f')]('['+_0x17548a[_0x8257('0x20')]()+_0x8257('0x6a'),_0x158130[_0x8257('0x2a')]);return getTicket(_0x17693e,_0x14ae6c,_0xce4d39,_0x5372da,_0x158130,_0xb08b21,_0x17548a);})[_0x8257('0x16')](function(_0x4d7b50){logger[_0x8257('0x1f')](util['format']('['+_0x17548a[_0x8257('0x20')]()+_0x8257('0x6b'),_0xb08b21[_0x8257('0x44')],_0x4d7b50['ticketId']));logger[_0x8257('0x1f')](util[_0x8257('0x52')]('['+_0x17548a[_0x8257('0x20')]()+_0x8257('0x6c'),_0x17548a));if(_0x17548a!==_0x8257('0x5a')&&_0xb08b21[_0x8257('0x6d')]){logger[_0x8257('0x1f')]('['+_0x17548a[_0x8257('0x20')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x14ae6c[_0x8257('0xf')],_0x334a09[_0x8257('0x6e')],_0xb08b21[_0x8257('0x44')],_0x4d7b50[_0x8257('0x51')]);}})[_0x8257('0x14')](function(_0x5ebc51){logger['error']('['+_0x17548a[_0x8257('0x20')]()+_0x8257('0x6f'),_0x5ebc51[_0x8257('0x33')]);console[_0x8257('0x15')](_0x8257('0x70'),_0x5ebc51);});};
\ No newline at end of file
+var _0xd37b=['queue','POST','phonecalls','Descriptions','ticketId','format','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','trigger:browser:url','modernAuthentication','stripTrailingSlash','data7','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','tenantId','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat',']\x20The\x20User\x20email\x20is:','moduleCreate',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','error',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','./util','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','remoteUri','data2','resolve','CloudProvider','data5','clientId','password','clientSecret','catch','toUpperCase','then','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','validateEmail','email','length','internalemailaddress','isdisabled','info','systemuserid','userId','userEmail','username','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','headers','odata-entityid','substring','lastIndexOf','enduserId','message','toLowerCase','telephone1','GET','contacts?$select=','&$filter=','\x20eq\x20\x27','replace','%2b','contactid','nothing',']\x20Enduser\x20created!','forEach','string','picklist','type','nameField','customField','indexOf','content','ticketType','incident','incidents','assign','getString','Subjects','/contacts(','Fields','callDirection'];(function(_0x8a4ce3,_0x2b3f77){var _0x2154c4=function(_0x45c3b7){while(--_0x45c3b7){_0x8a4ce3['push'](_0x8a4ce3['shift']());}};_0x2154c4(++_0x2b3f77);}(_0xd37b,0x8e));var _0xbd37=function(_0x5a4fc5,_0x3240bc){_0x5a4fc5=_0x5a4fc5-0x0;var _0x4e817f=_0xd37b[_0x5a4fc5];return _0x4e817f;};'use strict';var _=require(_0xbd37('0x0'));var rp=require(_0xbd37('0x1'));var util=require('util');var intUtil=require(_0xbd37('0x2'));var md5=require('md5');var Redis=require('ioredis');var logger=require(_0xbd37('0x3'))(_0xbd37('0x4'));var config=require(_0xbd37('0x5'));config[_0xbd37('0x6')]=_[_0xbd37('0x7')](config[_0xbd37('0x6')],{'host':_0xbd37('0x8'),'port':0x18eb});var io=require(_0xbd37('0x9'))(new Redis(config['redis']));function getAuthToken(_0x3afe97,_0x5b65c6,_0x307d77){if(_0x3afe97['modernAuthentication']){_0x3afe97[_0xbd37('0xa')]=_0x3afe97['CloudProvider']['data7'];_0x3afe97['tenantId']=_0x3afe97['CloudProvider'][_0xbd37('0xb')];return Promise[_0xbd37('0xc')](_0x3afe97[_0xbd37('0xd')][_0xbd37('0xe')]);}var _0x828ba1={'method':'POST','uri':_0x5b65c6,'form':{'client_id':_0x3afe97[_0xbd37('0xf')],'resource':_0x3afe97[_0xbd37('0xa')],'username':_0x3afe97['username'],'password':_0x3afe97['password'],'grant_type':_0xbd37('0x10'),'client_secret':_0x3afe97[_0xbd37('0x11')]},'json':!![]};return rp(_0x828ba1)['then'](function(_0x4384ca){return _0x4384ca['access_token'];})[_0xbd37('0x12')](function(_0x75e210){logger['error']('['+[_0x307d77[_0xbd37('0x13')]()]+']\x20Wrong\x20credentials!');return _0x75e210['message'];});}function getUser(_0x325de4,_0x215983,_0x2df823,_0x20d738,_0x3e9007,_0x1d9d4a){return new Promise(function(_0x1977bb,_0x2fa1c2){return getAuthToken(_0x215983,_0x20d738,_0x1d9d4a)[_0xbd37('0x14')](function(_0x5efe76){var _0x13bda9={'method':'GET','uri':_0x3e9007+_0xbd37('0x15'),'headers':{'Authorization':_0xbd37('0x16')+_0x5efe76,'OData-Version':_0xbd37('0x17')},'json':!![]};return rp(_0x13bda9);})['then'](function(_0x5a1d33){var _0x871e67=_0x5a1d33[_0xbd37('0x18')];var _0x438336=![];var _0x2d9127=null;if(!_['isNil'](_0x2df823)){if(intUtil[_0xbd37('0x19')](_0x2df823[_0xbd37('0x1a')])){_0x325de4['userEmail']=_0x2df823[_0xbd37('0x1a')];for(_0x2d9127=0x0;_0x2d9127<_0x871e67[_0xbd37('0x1b')];_0x2d9127++){if(_0x871e67[_0x2d9127][_0xbd37('0x1c')]===_0x2df823[_0xbd37('0x1a')]&&!_0x871e67[_0x2d9127][_0xbd37('0x1d')]){_0x438336=!![];logger[_0xbd37('0x1e')]('['+[_0x1d9d4a[_0xbd37('0x13')]()]+']\x20Agent\x20found\x20'+_0x871e67[_0x2d9127][_0xbd37('0x1f')]+'!');_0x325de4[_0xbd37('0x20')]=_0x871e67[_0x2d9127][_0xbd37('0x1f')];}}}}if(!_0x438336){logger[_0xbd37('0x1e')]('['+[_0x1d9d4a['toUpperCase']()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x325de4[_0xbd37('0x21')]=_0x215983[_0xbd37('0x22')];for(_0x2d9127=0x0;_0x2d9127<_0x871e67['length'];_0x2d9127++){if(_0x871e67[_0x2d9127][_0xbd37('0x1c')]===_0x215983['username']){_0x325de4[_0xbd37('0x20')]=_0x871e67[_0x2d9127]['systemuserid'];}}}_0x1977bb(_0x325de4);})[_0xbd37('0x12')](function(_0x3558a1){_0x2fa1c2(_0x3558a1['message']);});});}function createEndUser(_0x5ec7ff,_0x255378,_0xfccbf4,_0x4424fa,_0x13d763,_0x2224fa,_0x4f644f){return new Promise(function(_0x39b851,_0x43bfa2){return getAuthToken(_0x255378,_0xfccbf4,_0x2224fa)[_0xbd37('0x14')](function(_0x20f302){var _0x16ea11=_0x2224fa['toLowerCase']()===_0xbd37('0x23')?_0x13d763[_0xbd37('0x24')]:_0x13d763[_0xbd37('0x25')];var _0x495193={'method':'POST','uri':_0x4424fa+_0xbd37('0x26'),'body':{'fullname':_0x16ea11,'firstname':_0x16ea11,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xbd37('0x27')+_0x5ec7ff[_0xbd37('0x20')]+')'},'headers':{'Authorization':_0xbd37('0x16')+_0x20f302,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};_0x495193['body'][_0x4f644f]=_0x16ea11;return rp(_0x495193);})[_0xbd37('0x14')](function(_0x5e7848){var _0x510492=_0x5e7848[_0xbd37('0x28')][_0xbd37('0x29')];var _0x2c71b8=_0x510492[_0xbd37('0x2a')](_0x510492[_0xbd37('0x2b')]('(')+0x1,_0x510492[_0xbd37('0x2b')](')'));_0x5ec7ff[_0xbd37('0x2c')]=_0x2c71b8;_0x39b851(_0x5ec7ff);})[_0xbd37('0x12')](function(_0x5b8dd9){_0x43bfa2(_0x5b8dd9[_0xbd37('0x2d')]);});});}function getEndUser(_0x5c12df,_0xace5ba,_0x59f184,_0xd222ec,_0x55a009,_0x5b9801,_0x4898b7,_0x452c90){var _0x3345bd=_0x5b9801[_0xbd37('0x2e')]()===_0xbd37('0x23')?_0x55a009[_0xbd37('0x24')]:_0x55a009[_0xbd37('0x25')];return getAuthToken(_0xace5ba,_0x59f184,_0x5b9801)[_0xbd37('0x14')](function(_0x420b82){_0x452c90=_0x452c90?_0x452c90:_0xbd37('0x2f');var _0x1ba82e={'method':_0xbd37('0x30'),'uri':_0xd222ec+_0xbd37('0x31')+_0x452c90+_0xbd37('0x32')+_0x452c90+_0xbd37('0x33')+_0x3345bd[_0xbd37('0x34')]('+',_0xbd37('0x35'))+'\x27','headers':{'Authorization':'Bearer\x20'+_0x420b82,'If-None-Match':null,'OData-Version':_0xbd37('0x17')},'json':!![]};return rp(_0x1ba82e);})[_0xbd37('0x14')](function(_0xa637e6){var _0x44ffee=![];if(!_0xa637e6)return _0x44ffee;var _0xb3308b=_0xa637e6[_0xbd37('0x18')];for(var _0x11c224=0x0;_0x11c224<_0xb3308b['length'];_0x11c224++){if(_0xb3308b[_0x11c224][_0x452c90]===_0x3345bd){_0x44ffee=!![];_0x5c12df[_0xbd37('0x2c')]=_0xb3308b[_0x11c224][_0xbd37('0x36')];}}return _0x44ffee;})[_0xbd37('0x14')](function(_0x2f3694){if(_0x2f3694)return _0x5c12df;if(_0x4898b7===_0xbd37('0x37')){logger[_0xbd37('0x1e')]('['+[_0x5b9801[_0xbd37('0x13')]()]+']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing');return _0x5c12df;}return createEndUser(_0x5c12df,_0xace5ba,_0x59f184,_0xd222ec,_0x55a009,_0x5b9801,_0x452c90)[_0xbd37('0x14')](function(_0x9eb95){logger[_0xbd37('0x1e')]('['+[_0x5b9801[_0xbd37('0x13')]()]+_0xbd37('0x38'),_0x9eb95[_0xbd37('0x2c')]);return _0x9eb95;});});}function getCustomFields(_0x59ac5e,_0x3d2405,_0x4efd6c){var _0x31a4b1={};if(_0x59ac5e['length']>0x0){_[_0xbd37('0x39')](_0x59ac5e,function(_0x474815){if(_['includes']([_0xbd37('0x3a'),_0xbd37('0x3b')],_0x474815[_0xbd37('0x3c')])&&_0x474815[_0xbd37('0x3d')]&&!_0x474815[_0xbd37('0x3e')]){var _0x3ba975=_0x474815['idField'][_0xbd37('0x2e')]();var _0x336f81=_0x3ba975[_0xbd37('0x2a')](0x0,_0x3ba975['indexOf']('_'));var _0x48ff99=_0x3ba975[_0xbd37('0x2a')](_0x3ba975[_0xbd37('0x3f')]('_')+0x1);if(_0x336f81===_0x4efd6c){_0x31a4b1[_0x48ff99]=_0x474815[_0xbd37('0x40')];}}});}return _0x31a4b1;}function getTicket(_0x1eda32,_0x33ec78,_0x1a2226,_0x34df9a,_0x3ee5c3,_0x4ac052,_0x3586b0){return new Promise(function(_0x70a7c2,_0x4a2aab){var _0x43728c;return getAuthToken(_0x33ec78,_0x1a2226,_0x3586b0)[_0xbd37('0x14')](function(_0x32ab16){if(_0x4ac052[_0xbd37('0x41')]===_0xbd37('0x42')){_0x43728c={'method':'POST','uri':_0x34df9a+_0xbd37('0x43'),'body':Object[_0xbd37('0x44')]({},{'title':intUtil[_0xbd37('0x45')](_0x4ac052[_0xbd37('0x46')],_0x3ee5c3,'\x20'),'description':intUtil[_0xbd37('0x45')](_0x4ac052['Descriptions'],_0x3ee5c3,'\x0a'),'customerid_contact@odata.bind':_0x1eda32[_0xbd37('0x2c')]?_0xbd37('0x47')+_0x1eda32[_0xbd37('0x2c')]+')':undefined,'ownerid@odata.bind':_0xbd37('0x27')+_0x1eda32[_0xbd37('0x20')]+')','caseorigincode':'1'},getCustomFields(_0x4ac052[_0xbd37('0x48')],_0x3ee5c3,_0x4ac052[_0xbd37('0x41')])),'headers':{'Authorization':'Bearer\x20'+_0x32ab16,'OData-Version':_0xbd37('0x17')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x4ac052[_0xbd37('0x41')]==='phonecall'){var _0x149afa=_0x1eda32[_0xbd37('0x2c')]?[{'partyid_systemuser@odata.bind':_0xbd37('0x27')+_0x1eda32['userId']+')','participationtypemask':_0x1eda32['callDirection']==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0xbd37('0x47')+_0x1eda32[_0xbd37('0x2c')]+')','participationtypemask':_0x1eda32[_0xbd37('0x49')]===_0xbd37('0x4a')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0x1eda32['userId']+')','participationtypemask':_0x1eda32[_0xbd37('0x49')]===_0xbd37('0x4a')?0x2:0x1}];_0x43728c={'method':_0xbd37('0x4b'),'uri':_0x34df9a+_0xbd37('0x4c'),'body':Object[_0xbd37('0x44')]({},{'subject':intUtil[_0xbd37('0x45')](_0x4ac052['Subjects'],_0x3ee5c3,'\x20'),'phonenumber':String(_0x3ee5c3['calleridnum']),'description':intUtil[_0xbd37('0x45')](_0x4ac052[_0xbd37('0x4d')],_0x3ee5c3,'\x0a'),'regardingobjectid_contact@odata.bind':_0x1eda32[_0xbd37('0x2c')]?'/contacts('+_0x1eda32['enduserId']+')':undefined,'ownerid@odata.bind':_0xbd37('0x27')+_0x1eda32[_0xbd37('0x20')]+')','directioncode':_0x1eda32[_0xbd37('0x49')]===_0xbd37('0x4a')?![]:!![],'phonecall_activity_parties':_0x149afa},getCustomFields(_0x4ac052[_0xbd37('0x48')],_0x3ee5c3,_0x4ac052[_0xbd37('0x41')])),'headers':{'Authorization':_0xbd37('0x16')+_0x32ab16,'OData-Version':_0xbd37('0x17')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x43728c);})[_0xbd37('0x14')](function(_0x547adb){var _0xd95e97=_0x547adb[_0xbd37('0x28')]['odata-entityid'];var _0x62e2b7=_0xd95e97[_0xbd37('0x2a')](_0xd95e97['lastIndexOf']('(')+0x1,_0xd95e97[_0xbd37('0x2b')](')'));_0x1eda32[_0xbd37('0x4e')]=_0x62e2b7;_0x70a7c2(_0x1eda32);})['catch'](function(_0x526c3d){_0x4a2aab(_0x526c3d['message']);});});}function emit(_0x5376f7,_0x1d8416,_0x579d26,_0x466ea0){var _0x3a124d={'uri':util[_0xbd37('0x4f')](_0xbd37('0x50'),_0x5376f7,_0x579d26,_0x466ea0)};io['to'](util[_0xbd37('0x4f')]('user:%s',_0x1d8416))['emit'](_0xbd37('0x51'),_0x3a124d);}exports['cs']=function(_0x2265ff,_0x4d1577,_0x57b027,_0x1601ce,_0x799451,_0x996b01,_0x3fb8a2,_0x32a1aa){var _0xb07e81={};_0x996b01[_0xbd37('0xa')]=_0x996b01[_0xbd37('0x52')]?intUtil[_0xbd37('0x53')](_0x996b01[_0xbd37('0xd')][_0xbd37('0x54')]):intUtil['stripTrailingSlash'](_0x996b01['remoteUri']);_0x996b01[_0xbd37('0x55')]=intUtil[_0xbd37('0x53')](_0x996b01[_0xbd37('0x55')]);_0xb07e81[_0xbd37('0x49')]=_0x32a1aa===_0xbd37('0x4a')||_0x32a1aa===_0xbd37('0x56')?_0xbd37('0x4a'):_0xbd37('0x23');var _0x59f488=_0x996b01[_0xbd37('0x52')]?util[_0xbd37('0x4f')](_0xbd37('0x57'),_0x996b01[_0xbd37('0xd')]['data7']):util[_0xbd37('0x4f')](_0xbd37('0x57'),_0x996b01[_0xbd37('0xa')]);var _0x4fd740=util['format'](_0xbd37('0x58'),_0x996b01[_0xbd37('0x59')]);var _0x454c38=util[_0xbd37('0x4f')](_0xbd37('0x5a'),_0x996b01['serverUrl'],_0x4d1577[_0xbd37('0x5b')],md5(_0x4d1577[_0xbd37('0x5b')]));if(_0x799451&&_0x799451['monitor_format']){logger[_0xbd37('0x1e')](_0xbd37('0x5c'),_0xbd37('0x5d'));_0x4d1577[_0xbd37('0x5e')]=_0x454c38;}else if(_0x3fb8a2&&_0x3fb8a2[_0xbd37('0x5f')]&&_0x3fb8a2[_0xbd37('0x5f')]!=='none'){logger[_0xbd37('0x1e')]('[OUTBOUND]',_0xbd37('0x5d'));_0x4d1577['recordingURL']=_0x454c38;}else{_0x4d1577[_0xbd37('0x5e')]='';}return getUser(_0xb07e81,_0x996b01,_0x1601ce,_0x4fd740,_0x59f488,_0x32a1aa)['then'](function(_0x48d6c7){logger[_0xbd37('0x1e')]('['+_0x32a1aa[_0xbd37('0x13')]()+']\x20The\x20User\x20ID\x20is:',_0x48d6c7[_0xbd37('0x20')]);logger[_0xbd37('0x1e')]('['+_0x32a1aa[_0xbd37('0x13')]()+_0xbd37('0x60'),_0x48d6c7[_0xbd37('0x21')]);return getEndUser(_0x48d6c7,_0x996b01,_0x4fd740,_0x59f488,_0x4d1577,_0x32a1aa,_0x57b027[_0xbd37('0x61')],_0x57b027['additionalSearchContact']);})[_0xbd37('0x14')](function(_0x5c252f){logger['info']('['+_0x32a1aa[_0xbd37('0x13')]()+_0xbd37('0x62'),_0x5c252f[_0xbd37('0x2c')]);logger[_0xbd37('0x1e')]('['+_0x32a1aa[_0xbd37('0x13')]()+_0xbd37('0x63'),_0x4d1577[_0xbd37('0x25')]);return getTicket(_0x5c252f,_0x996b01,_0x4fd740,_0x59f488,_0x4d1577,_0x57b027,_0x32a1aa);})[_0xbd37('0x14')](function(_0x1bde81){logger[_0xbd37('0x1e')](util[_0xbd37('0x4f')]('['+_0x32a1aa[_0xbd37('0x13')]()+_0xbd37('0x64'),_0x57b027['ticketType'],_0x1bde81[_0xbd37('0x4e')]));logger[_0xbd37('0x1e')](util[_0xbd37('0x4f')]('['+_0x32a1aa['toUpperCase']()+_0xbd37('0x65'),_0x32a1aa));if(_0x32a1aa!=='unmanaged'&&_0x57b027[_0xbd37('0x66')]){logger[_0xbd37('0x1e')]('['+_0x32a1aa[_0xbd37('0x13')]()+']',_0xbd37('0x67'));emit(_0x996b01['remoteUri'],_0x1601ce[_0xbd37('0x68')],_0x57b027[_0xbd37('0x41')],_0x1bde81['ticketId']);}})[_0xbd37('0x12')](function(_0x4ef62c){logger[_0xbd37('0x69')]('['+_0x32a1aa['toUpperCase']()+_0xbd37('0x6a'),_0x4ef62c[_0xbd37('0x2d')]);console[_0xbd37('0x69')](_0xbd37('0x6b'),_0x4ef62c);});};
\ No newline at end of file
index 3f9ce34..ce77ba1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fca=['contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','length','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','then','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','stringify','GET','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','idField','push','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/helpdesk/tickets/%d','catch','outbound','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','user:%s','trigger:browser:url','error','unmanaged','toUpperCase','lastevent','lodash','request-promise','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','defaults','socket.io-emitter','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','Caller\x20-\x20%s','calleridname','calleridnum','Subjects','getString','Descriptions','<br>','name','Fields','custom_fields','keyBy','value','remoteUri','POST','validateEmail','Agent\x20found!','find'];(function(_0x2d91c6,_0x10ae0e){var _0x3a8d19=function(_0x27a3ce){while(--_0x27a3ce){_0x2d91c6['push'](_0x2d91c6['shift']());}};_0x3a8d19(++_0x10ae0e);}(_0x9fca,0x1be));var _0xa9fc=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x9fca[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xa9fc('0x0'));var rp=require(_0xa9fc('0x1'));var md5=require(_0xa9fc('0x2'));var util=require('util');var Redis=require(_0xa9fc('0x3'));var intUtil=require(_0xa9fc('0x4'));var config=require(_0xa9fc('0x5'));var logger=require(_0xa9fc('0x6'))(_0xa9fc('0x7'));config[_0xa9fc('0x8')]=_[_0xa9fc('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xa9fc('0xa'))(new Redis(config[_0xa9fc('0x8')]));var headers={'Content-Type':_0xa9fc('0xb'),'Accept':_0xa9fc('0xb')};function emit(_0x3dd792,_0x45a14f,_0x4ced1d){io['to'](_0x3dd792)[_0xa9fc('0xc')](_0x45a14f,_0x4ced1d);}function getTicket(_0x5213e6,_0x5c131c,_0x249094,_0x540a53,_0x3562d9){logger[_0xa9fc('0xd')](_0xa9fc('0xe'));var _0x25fa0f=_[_0xa9fc('0xf')]({'responder_id':_0x5c131c['id'],'requester_id':_0x249094['id'],'name':util[_0xa9fc('0x10')](_0xa9fc('0x11'),_0x3562d9[_0xa9fc('0x12')]),'phone':_0x3562d9[_0xa9fc('0x13')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x540a53[_0xa9fc('0x14')],_0x3562d9,'\x20'),'description':intUtil[_0xa9fc('0x15')](_0x540a53[_0xa9fc('0x16')],_0x3562d9,_0xa9fc('0x17')),'tags':getTags(_0x540a53['Tags'],_0xa9fc('0x18'))},getCustomFields(_0x540a53[_0xa9fc('0x19')],_0x3562d9));_0x25fa0f[_0xa9fc('0x1a')]=_['mapValues'](_[_0xa9fc('0x1b')](_0x25fa0f[_0xa9fc('0x1a')],'id'),_0xa9fc('0x1c'));return request({'uri':util['format']('%s/api/v2/tickets',_0x5213e6[_0xa9fc('0x1d')]),'method':_0xa9fc('0x1e'),'body':_0x25fa0f})['then'](function(_0x34ccb7){logger[_0xa9fc('0xd')]('Ticket\x20created!');return _0x34ccb7;});}function getUser(_0x3c1980,_0x112b1f){if(intUtil[_0xa9fc('0x1f')](_0x112b1f)){return request({'uri':util[_0xa9fc('0x10')]('%s/api/v2/agents',_0x3c1980[_0xa9fc('0x1d')]),'qs':{'email':_0x112b1f}})['then'](function(_0x36ccd5){if(_0x36ccd5['length']){logger[_0xa9fc('0xd')](_0xa9fc('0x20'));return _[_0xa9fc('0x21')](_0x36ccd5,function(_0x2778ed){return _0x2778ed[_0xa9fc('0x22')]['email']===_0x112b1f;});}else{logger['info'](_0xa9fc('0x23'));return request({'uri':util[_0xa9fc('0x10')]('%s/api/v2/agents/me',_0x3c1980[_0xa9fc('0x1d')])})['then'](function(_0x151858){logger[_0xa9fc('0xd')]('Admin\x20account\x20selected.');return _0x151858;});}});}else{logger[_0xa9fc('0xd')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xa9fc('0x10')](_0xa9fc('0x24'),_0x3c1980[_0xa9fc('0x1d')])})['then'](function(_0x455412){logger[_0xa9fc('0xd')](_0xa9fc('0x25'));return _0x455412;});}}function getEndUser(_0xc0961a,_0x58d62a,_0x3395ad){logger['info'](_0xa9fc('0x26'),_0x3395ad);return request({'uri':util[_0xa9fc('0x10')](_0xa9fc('0x27'),_0xc0961a[_0xa9fc('0x1d')]),'qs':{'phone':_0x3395ad}})['then'](function(_0x509fc0){if(_0x509fc0[_0xa9fc('0x28')]){logger['info'](_0xa9fc('0x29'));return _[_0xa9fc('0x21')](_0x509fc0,{'phone':_0x3395ad});}else{logger[_0xa9fc('0xd')](_0xa9fc('0x2a'));return request({'uri':util[_0xa9fc('0x10')](_0xa9fc('0x27'),_0xc0961a[_0xa9fc('0x1d')]),'method':'POST','body':{'name':_0x58d62a,'phone':_0x3395ad}})[_0xa9fc('0x2b')](function(_0x2e8269){logger['info'](_0xa9fc('0x2c'));return _0x2e8269;});}});}function getAuth(_0x1c8508){return util[_0xa9fc('0x10')](_0xa9fc('0x2d'),new Buffer(_0x1c8508[_0xa9fc('0x2e')]+':X')[_0xa9fc('0x2f')]('base64'));}function request(_0x2b2fea){logger[_0xa9fc('0x30')]('[HTTP]',JSON[_0xa9fc('0x31')](_0x2b2fea));return rp(_[_0xa9fc('0x9')](_0x2b2fea,{'method':_0xa9fc('0x32'),'headers':headers,'json':!![]}));}function getTags(_0x560908,_0x52f7cb){var _0x65a36=[];if(_0x560908&&_0x560908[_0xa9fc('0x28')]>0x0){_0x65a36=_['map'](_0x560908,_0x52f7cb);}return _0x65a36;}function getCustomFields(_0x4803b0,_0x4ee452){var _0x33e359=[];var _0x473131={'custom_fields':[]};if(_0x4803b0[_0xa9fc('0x28')]>0x0){_[_0xa9fc('0x33')](_0x4803b0,function(_0x5c8e91){if(_[_0xa9fc('0x34')]([_0xa9fc('0x35'),_0xa9fc('0x36')],_0x5c8e91[_0xa9fc('0x37')])&&_0x5c8e91[_0xa9fc('0x38')]&&!_0x5c8e91[_0xa9fc('0x39')]){_0x473131[_0x5c8e91[_0xa9fc('0x38')][_0xa9fc('0x3a')]()]=_0x5c8e91[_0xa9fc('0x3b')][_0xa9fc('0x2f')]();}else if(_['includes']([_0xa9fc('0x35'),_0xa9fc('0x36')],_0x5c8e91[_0xa9fc('0x37')])&&_0x5c8e91[_0xa9fc('0x3c')]&&_0x5c8e91['customField']){_0x473131['custom_fields'][_0xa9fc('0x3d')]({'id':_0x5c8e91[_0xa9fc('0x3c')],'value':_0x5c8e91['content'][_0xa9fc('0x2f')]()});}else if(_0x5c8e91[_0xa9fc('0x37')]===_0xa9fc('0x3e')&&_0x5c8e91['variableName']&&_0x5c8e91[_0xa9fc('0x3c')]&&_0x5c8e91['customField']){_0x4ee452[_0x5c8e91[_0xa9fc('0x3f')]]&&_0x473131[_0xa9fc('0x1a')]['push']({'id':_0x5c8e91[_0xa9fc('0x3c')],'value':_0x4ee452[_0x5c8e91['variableName']]['toString']()});}else if(_0x5c8e91[_0xa9fc('0x37')]===_0xa9fc('0x40')&&_0x5c8e91['Variable']&&_0x5c8e91[_0xa9fc('0x41')][_0xa9fc('0x18')]&&_0x5c8e91[_0xa9fc('0x3c')]&&_0x5c8e91['customField']){_0x4ee452[_0x5c8e91[_0xa9fc('0x41')][_0xa9fc('0x18')][_0xa9fc('0x3a')]()]&&_0x473131[_0xa9fc('0x1a')][_0xa9fc('0x3d')]({'id':_0x5c8e91[_0xa9fc('0x3c')],'value':_0x4ee452[_0x5c8e91[_0xa9fc('0x41')][_0xa9fc('0x18')]['toLowerCase']()][_0xa9fc('0x2f')]()});}});}return _0x473131;}exports[_0xa9fc('0x42')]=function(_0x2fd53c,_0x4b6c5c,_0x2bd0e7,_0x54afb5,_0x25b404,_0x2e1151){var _0x47fc28,_0x1f58fc;_0x2e1151[_0xa9fc('0x1d')]=intUtil[_0xa9fc('0x43')](_0x2e1151['remoteUri']);_0x2e1151[_0xa9fc('0x44')]=intUtil[_0xa9fc('0x43')](_0x2e1151[_0xa9fc('0x44')]);if(_0x25b404&&_0x25b404[_0xa9fc('0x45')]){logger[_0xa9fc('0xd')](_0xa9fc('0x46'),_0xa9fc('0x47'));_0x4b6c5c[_0xa9fc('0x48')]=util[_0xa9fc('0x10')](_0xa9fc('0x49'),_0x2e1151[_0xa9fc('0x44')],_0x4b6c5c[_0xa9fc('0x4a')],md5(_0x4b6c5c[_0xa9fc('0x4a')]));}else{_0x4b6c5c['recordingURL']='';}headers[_0xa9fc('0x4b')]=getAuth(_0x2e1151);return getUser(_0x2e1151,_0x54afb5[_0xa9fc('0x4c')])['then'](function(_0x248475){_0x47fc28=_0x248475;logger[_0xa9fc('0xd')](_0xa9fc('0x4d'),_0x47fc28['id']);return getEndUser(_0x2e1151,_0x4b6c5c[_0xa9fc('0x12')],_0x4b6c5c[_0xa9fc('0x13')]);})[_0xa9fc('0x2b')](function(_0x46fc10){_0x1f58fc=_0x46fc10;logger['info']('The\x20Enduser\x20ID\x20is:',_0x1f58fc['id']);return getTicket(_0x2e1151,_0x47fc28,_0x1f58fc,_0x2bd0e7,_0x4b6c5c);})['then'](function(_0x2cdb78){if(_0x2cdb78&&_0x2cdb78['id']){logger[_0xa9fc('0xd')](_0xa9fc('0x4e'));logger[_0xa9fc('0xd')](_0xa9fc('0x4f'),_0x2cdb78['id']);logger[_0xa9fc('0xd')](_0xa9fc('0x46'),_0xa9fc('0x50'));emit(util[_0xa9fc('0x10')]('user:%s',_0x54afb5['name']),'trigger:browser:url',{'uri':util[_0xa9fc('0x10')](_0xa9fc('0x51'),_0x2e1151[_0xa9fc('0x1d')],_0x2cdb78['id'])});}})[_0xa9fc('0x52')](function(_0x350759){logger['error'](_0xa9fc('0x46'),JSON[_0xa9fc('0x31')](_0x350759));});};exports[_0xa9fc('0x53')]=function(_0xa9ebc6,_0x8240f2,_0x237571,_0x229898,_0x725751,_0x6c6168,_0x248120){var _0x54eebf,_0x57081d;_0x6c6168[_0xa9fc('0x1d')]=intUtil[_0xa9fc('0x43')](_0x6c6168[_0xa9fc('0x1d')]);_0x6c6168[_0xa9fc('0x44')]=intUtil[_0xa9fc('0x43')](_0x6c6168['serverUrl']);if(_0x248120&&_0x248120[_0xa9fc('0x54')]&&_0x248120[_0xa9fc('0x54')]!==_0xa9fc('0x55')){logger[_0xa9fc('0xd')](_0xa9fc('0x56'),_0xa9fc('0x47'));_0x8240f2[_0xa9fc('0x48')]=util[_0xa9fc('0x10')](_0xa9fc('0x49'),_0x6c6168[_0xa9fc('0x44')],_0x8240f2['uniqueid'],md5(_0x8240f2[_0xa9fc('0x4a')]));}headers[_0xa9fc('0x4b')]=getAuth(_0x6c6168);return getUser(_0x6c6168,_0x229898[_0xa9fc('0x4c')])[_0xa9fc('0x2b')](function(_0x52000d){_0x54eebf=_0x52000d;logger[_0xa9fc('0xd')](_0xa9fc('0x4d'),_0x54eebf['id']);return getEndUser(_0x6c6168,_0x8240f2[_0xa9fc('0x57')],_0x8240f2[_0xa9fc('0x58')]);})[_0xa9fc('0x2b')](function(_0x52689d){_0x57081d=_0x52689d;logger[_0xa9fc('0xd')](_0xa9fc('0x59'),_0x57081d['id']);return getTicket(_0x6c6168,_0x54eebf,_0x57081d,_0x237571,_0x8240f2);})[_0xa9fc('0x2b')](function(_0x7fe21e){if(_0x7fe21e&&_0x7fe21e['id']){logger['info'](_0xa9fc('0x4e'));logger[_0xa9fc('0xd')]('The\x20Ticket\x20ID\x20is:',_0x7fe21e['id']);logger[_0xa9fc('0xd')](_0xa9fc('0x56'),_0xa9fc('0x50'));emit(util['format'](_0xa9fc('0x5a'),_0x229898[_0xa9fc('0x18')]),_0xa9fc('0x5b'),{'uri':util['format']('%s/helpdesk/tickets/%d',_0x6c6168[_0xa9fc('0x1d')],_0x7fe21e['id'])});}})[_0xa9fc('0x52')](function(_0x150961){logger[_0xa9fc('0x5c')](_0xa9fc('0x56'),JSON['stringify'](_0x150961));});};exports[_0xa9fc('0x5d')]=function(_0x373477,_0x5caafe,_0x24f464,_0x483ef2,_0x5d32a1,_0x136620){var _0x3e3595,_0x4dfb63;_0x136620['remoteUri']=intUtil['stripTrailingSlash'](_0x136620[_0xa9fc('0x1d')]);_0x136620[_0xa9fc('0x44')]=intUtil[_0xa9fc('0x43')](_0x136620[_0xa9fc('0x44')]);if(_0x5d32a1&&_0x5d32a1[_0xa9fc('0x45')]){logger[_0xa9fc('0xd')]('['+_0x5caafe['lastevent'][_0xa9fc('0x5e')]()+']',_0xa9fc('0x47'));_0x5caafe[_0xa9fc('0x48')]=util['format'](_0xa9fc('0x49'),_0x136620['serverUrl'],_0x5caafe[_0xa9fc('0x4a')],md5(_0x5caafe['uniqueid']));}else{_0x5caafe[_0xa9fc('0x48')]='';}headers[_0xa9fc('0x4b')]=getAuth(_0x136620);return getUser(_0x136620,'')[_0xa9fc('0x2b')](function(_0x1c803a){_0x3e3595=_0x1c803a;logger[_0xa9fc('0xd')](_0xa9fc('0x4d'),_0x3e3595['id']);return getEndUser(_0x136620,_0x5caafe[_0xa9fc('0x12')],_0x5caafe['calleridnum']);})['then'](function(_0x5096b7){_0x4dfb63=_0x5096b7;logger[_0xa9fc('0xd')](_0xa9fc('0x59'),_0x4dfb63['id']);return getTicket(_0x136620,_0x3e3595,_0x4dfb63,_0x24f464,_0x5caafe);})[_0xa9fc('0x2b')](function(_0x495497){if(_0x495497){logger[_0xa9fc('0xd')](_0xa9fc('0x4e'));logger['info'](_0xa9fc('0x4f'),_0x495497['id']);}})[_0xa9fc('0x52')](function(_0x1c3494){logger['error']('['+_0x5caafe[_0xa9fc('0x5f')]['toUpperCase']()+']',JSON[_0xa9fc('0x31')](_0x1c3494));});};
\ No newline at end of file
+var _0x8a11=['Enduser\x20created.','Basic\x20%s','apiKey','toString','base64','debug','[HTTP]','stringify','GET','map','includes','picklist','type','nameField','customField','toLowerCase','content','string','idField','push','variable','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','[OUTBOUND]','email','destcalleridname','unmanaged','toUpperCase','lastevent','lodash','request-promise','md5','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','emit','info','Creating\x20new\x20ticket...','merge','format','calleridname','calleridnum','Subjects','Descriptions','<br>','Tags','name','Fields','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','POST','Ticket\x20created!','validateEmail','length','Agent\x20found!','contact','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','then','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','find','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!'];(function(_0x421b4a,_0x1b87b9){var _0x49fc9f=function(_0x25d16d){while(--_0x25d16d){_0x421b4a['push'](_0x421b4a['shift']());}};_0x49fc9f(++_0x1b87b9);}(_0x8a11,0xf3));var _0x18a1=function(_0x587fb5,_0x59cb3b){_0x587fb5=_0x587fb5-0x0;var _0x551105=_0x8a11[_0x587fb5];return _0x551105;};'use strict';var _=require(_0x18a1('0x0'));var rp=require(_0x18a1('0x1'));var md5=require(_0x18a1('0x2'));var util=require('util');var Redis=require('ioredis');var intUtil=require(_0x18a1('0x3'));var config=require(_0x18a1('0x4'));var logger=require(_0x18a1('0x5'))('freshdesk');config[_0x18a1('0x6')]=_[_0x18a1('0x7')](config[_0x18a1('0x6')],{'host':_0x18a1('0x8'),'port':0x18eb});var io=require(_0x18a1('0x9'))(new Redis(config[_0x18a1('0x6')]));var headers={'Content-Type':'application/json','Accept':'application/json'};function emit(_0x18c750,_0xcd28bd,_0x12f442){io['to'](_0x18c750)[_0x18a1('0xa')](_0xcd28bd,_0x12f442);}function getTicket(_0x4af00f,_0x407259,_0x48f786,_0x380682,_0xf86920){logger[_0x18a1('0xb')](_0x18a1('0xc'));var _0x12e265=_[_0x18a1('0xd')]({'responder_id':_0x407259['id'],'requester_id':_0x48f786['id'],'name':util[_0x18a1('0xe')]('Caller\x20-\x20%s',_0xf86920[_0x18a1('0xf')]),'phone':_0xf86920[_0x18a1('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x380682[_0x18a1('0x11')],_0xf86920,'\x20'),'description':intUtil['getString'](_0x380682[_0x18a1('0x12')],_0xf86920,_0x18a1('0x13')),'tags':getTags(_0x380682[_0x18a1('0x14')],_0x18a1('0x15'))},getCustomFields(_0x380682[_0x18a1('0x16')],_0xf86920));_0x12e265[_0x18a1('0x17')]=_[_0x18a1('0x18')](_[_0x18a1('0x19')](_0x12e265[_0x18a1('0x17')],'id'),_0x18a1('0x1a'));return request({'uri':util[_0x18a1('0xe')](_0x18a1('0x1b'),_0x4af00f[_0x18a1('0x1c')]),'method':_0x18a1('0x1d'),'body':_0x12e265})['then'](function(_0x4d002d){logger[_0x18a1('0xb')](_0x18a1('0x1e'));return _0x4d002d;});}function getUser(_0x514513,_0x27bb87){if(intUtil[_0x18a1('0x1f')](_0x27bb87)){return request({'uri':util[_0x18a1('0xe')]('%s/api/v2/agents',_0x514513[_0x18a1('0x1c')]),'qs':{'email':_0x27bb87}})['then'](function(_0x5143d0){if(_0x5143d0[_0x18a1('0x20')]){logger[_0x18a1('0xb')](_0x18a1('0x21'));return _['find'](_0x5143d0,function(_0x162506){return _0x162506[_0x18a1('0x22')]['email']===_0x27bb87;});}else{logger[_0x18a1('0xb')](_0x18a1('0x23'));return request({'uri':util[_0x18a1('0xe')](_0x18a1('0x24'),_0x514513[_0x18a1('0x1c')])})['then'](function(_0x4085c8){logger[_0x18a1('0xb')](_0x18a1('0x25'));return _0x4085c8;});}});}else{logger[_0x18a1('0xb')](_0x18a1('0x26'));return request({'uri':util[_0x18a1('0xe')](_0x18a1('0x24'),_0x514513[_0x18a1('0x1c')])})[_0x18a1('0x27')](function(_0x358c06){logger[_0x18a1('0xb')](_0x18a1('0x25'));return _0x358c06;});}}function getEndUser(_0x3d1b81,_0x443d85,_0x368d49){logger['info'](_0x18a1('0x28'),_0x368d49);return request({'uri':util[_0x18a1('0xe')](_0x18a1('0x29'),_0x3d1b81[_0x18a1('0x1c')]),'qs':{'phone':_0x368d49}})['then'](function(_0xdd26d8){if(_0xdd26d8[_0x18a1('0x20')]){logger[_0x18a1('0xb')](_0x18a1('0x2a'));return _[_0x18a1('0x2b')](_0xdd26d8,{'phone':_0x368d49});}else{logger[_0x18a1('0xb')](_0x18a1('0x2c'));return request({'uri':util[_0x18a1('0xe')](_0x18a1('0x29'),_0x3d1b81[_0x18a1('0x1c')]),'method':_0x18a1('0x1d'),'body':{'name':_0x443d85,'phone':_0x368d49}})['then'](function(_0x108b1d){logger[_0x18a1('0xb')](_0x18a1('0x2d'));return _0x108b1d;});}});}function getAuth(_0x597111){return util[_0x18a1('0xe')](_0x18a1('0x2e'),new Buffer(_0x597111[_0x18a1('0x2f')]+':X')[_0x18a1('0x30')](_0x18a1('0x31')));}function request(_0x279ea2){logger[_0x18a1('0x32')](_0x18a1('0x33'),JSON[_0x18a1('0x34')](_0x279ea2));return rp(_[_0x18a1('0x7')](_0x279ea2,{'method':_0x18a1('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x21411e,_0x321552){var _0x24a8b9=[];if(_0x21411e&&_0x21411e[_0x18a1('0x20')]>0x0){_0x24a8b9=_[_0x18a1('0x36')](_0x21411e,_0x321552);}return _0x24a8b9;}function getCustomFields(_0xa21bb7,_0x250e8f){var _0x59bffc=[];var _0x2f3ddc={'custom_fields':[]};if(_0xa21bb7[_0x18a1('0x20')]>0x0){_['forEach'](_0xa21bb7,function(_0x5934a5){if(_[_0x18a1('0x37')](['string',_0x18a1('0x38')],_0x5934a5[_0x18a1('0x39')])&&_0x5934a5[_0x18a1('0x3a')]&&!_0x5934a5[_0x18a1('0x3b')]){_0x2f3ddc[_0x5934a5[_0x18a1('0x3a')][_0x18a1('0x3c')]()]=_0x5934a5[_0x18a1('0x3d')][_0x18a1('0x30')]();}else if(_[_0x18a1('0x37')]([_0x18a1('0x3e'),_0x18a1('0x38')],_0x5934a5[_0x18a1('0x39')])&&_0x5934a5[_0x18a1('0x3f')]&&_0x5934a5['customField']){_0x2f3ddc[_0x18a1('0x17')][_0x18a1('0x40')]({'id':_0x5934a5[_0x18a1('0x3f')],'value':_0x5934a5[_0x18a1('0x3d')][_0x18a1('0x30')]()});}else if(_0x5934a5[_0x18a1('0x39')]===_0x18a1('0x41')&&_0x5934a5['variableName']&&_0x5934a5[_0x18a1('0x3f')]&&_0x5934a5['customField']){_0x250e8f[_0x5934a5['variableName']]&&_0x2f3ddc['custom_fields'][_0x18a1('0x40')]({'id':_0x5934a5[_0x18a1('0x3f')],'value':_0x250e8f[_0x5934a5['variableName']][_0x18a1('0x30')]()});}else if(_0x5934a5['type']===_0x18a1('0x42')&&_0x5934a5[_0x18a1('0x43')]&&_0x5934a5[_0x18a1('0x43')][_0x18a1('0x15')]&&_0x5934a5[_0x18a1('0x3f')]&&_0x5934a5['customField']){_0x250e8f[_0x5934a5['Variable']['name']['toLowerCase']()]&&_0x2f3ddc[_0x18a1('0x17')][_0x18a1('0x40')]({'id':_0x5934a5[_0x18a1('0x3f')],'value':_0x250e8f[_0x5934a5['Variable'][_0x18a1('0x15')][_0x18a1('0x3c')]()][_0x18a1('0x30')]()});}});}return _0x2f3ddc;}exports[_0x18a1('0x44')]=function(_0x44d0ab,_0x3a897b,_0x56b129,_0x12d8d3,_0x1d79be,_0x17114b){var _0x2b3a01,_0x37ac01;_0x17114b[_0x18a1('0x1c')]=intUtil[_0x18a1('0x45')](_0x17114b[_0x18a1('0x1c')]);_0x17114b[_0x18a1('0x46')]=intUtil[_0x18a1('0x45')](_0x17114b[_0x18a1('0x46')]);if(_0x1d79be&&_0x1d79be[_0x18a1('0x47')]){logger[_0x18a1('0xb')](_0x18a1('0x48'),_0x18a1('0x49'));_0x3a897b[_0x18a1('0x4a')]=util[_0x18a1('0xe')](_0x18a1('0x4b'),_0x17114b[_0x18a1('0x46')],_0x3a897b[_0x18a1('0x4c')],md5(_0x3a897b[_0x18a1('0x4c')]));}else{_0x3a897b[_0x18a1('0x4a')]='';}headers[_0x18a1('0x4d')]=getAuth(_0x17114b);return getUser(_0x17114b,_0x12d8d3['email'])[_0x18a1('0x27')](function(_0x177bf1){_0x2b3a01=_0x177bf1;logger[_0x18a1('0xb')](_0x18a1('0x4e'),_0x2b3a01['id']);return getEndUser(_0x17114b,_0x3a897b[_0x18a1('0xf')],_0x3a897b[_0x18a1('0x10')]);})[_0x18a1('0x27')](function(_0xf9e721){_0x37ac01=_0xf9e721;logger[_0x18a1('0xb')](_0x18a1('0x4f'),_0x37ac01['id']);return getTicket(_0x17114b,_0x2b3a01,_0x37ac01,_0x56b129,_0x3a897b);})['then'](function(_0x43ab54){if(_0x43ab54&&_0x43ab54['id']){logger['info'](_0x18a1('0x1e'));logger['info'](_0x18a1('0x50'),_0x43ab54['id']);logger['info'](_0x18a1('0x48'),_0x18a1('0x51'));emit(util[_0x18a1('0xe')](_0x18a1('0x52'),_0x12d8d3['name']),_0x18a1('0x53'),{'uri':util['format'](_0x18a1('0x54'),_0x17114b[_0x18a1('0x1c')],_0x43ab54['id'])});}})[_0x18a1('0x55')](function(_0x160818){logger[_0x18a1('0x56')](_0x18a1('0x48'),JSON[_0x18a1('0x34')](_0x160818));});};exports[_0x18a1('0x57')]=function(_0x266616,_0x5d4728,_0x5abf39,_0x1fd09c,_0x3aefad,_0xacc2f2,_0x41d2d3){var _0x16cb21,_0x1d3fc6;_0xacc2f2[_0x18a1('0x1c')]=intUtil[_0x18a1('0x45')](_0xacc2f2[_0x18a1('0x1c')]);_0xacc2f2[_0x18a1('0x46')]=intUtil[_0x18a1('0x45')](_0xacc2f2[_0x18a1('0x46')]);if(_0x41d2d3&&_0x41d2d3[_0x18a1('0x58')]&&_0x41d2d3['recordingFormat']!==_0x18a1('0x59')){logger[_0x18a1('0xb')](_0x18a1('0x5a'),_0x18a1('0x49'));_0x5d4728[_0x18a1('0x4a')]=util[_0x18a1('0xe')](_0x18a1('0x4b'),_0xacc2f2[_0x18a1('0x46')],_0x5d4728['uniqueid'],md5(_0x5d4728[_0x18a1('0x4c')]));}headers[_0x18a1('0x4d')]=getAuth(_0xacc2f2);return getUser(_0xacc2f2,_0x1fd09c[_0x18a1('0x5b')])[_0x18a1('0x27')](function(_0x3a04fa){_0x16cb21=_0x3a04fa;logger[_0x18a1('0xb')](_0x18a1('0x4e'),_0x16cb21['id']);return getEndUser(_0xacc2f2,_0x5d4728[_0x18a1('0x5c')],_0x5d4728['destcalleridnum']);})[_0x18a1('0x27')](function(_0x4d70a2){_0x1d3fc6=_0x4d70a2;logger['info'](_0x18a1('0x4f'),_0x1d3fc6['id']);return getTicket(_0xacc2f2,_0x16cb21,_0x1d3fc6,_0x5abf39,_0x5d4728);})['then'](function(_0x26ecd0){if(_0x26ecd0&&_0x26ecd0['id']){logger[_0x18a1('0xb')]('Ticket\x20created!');logger['info'](_0x18a1('0x50'),_0x26ecd0['id']);logger[_0x18a1('0xb')]('[OUTBOUND]',_0x18a1('0x51'));emit(util['format'](_0x18a1('0x52'),_0x1fd09c[_0x18a1('0x15')]),_0x18a1('0x53'),{'uri':util[_0x18a1('0xe')](_0x18a1('0x54'),_0xacc2f2['remoteUri'],_0x26ecd0['id'])});}})[_0x18a1('0x55')](function(_0x40c928){logger['error'](_0x18a1('0x5a'),JSON[_0x18a1('0x34')](_0x40c928));});};exports[_0x18a1('0x5d')]=function(_0x420ff4,_0x4955f0,_0x307f51,_0x2f36b6,_0x5e7544,_0x5ca7c6){var _0x33f9d4,_0x8769a6;_0x5ca7c6[_0x18a1('0x1c')]=intUtil[_0x18a1('0x45')](_0x5ca7c6['remoteUri']);_0x5ca7c6[_0x18a1('0x46')]=intUtil[_0x18a1('0x45')](_0x5ca7c6['serverUrl']);if(_0x5e7544&&_0x5e7544[_0x18a1('0x47')]){logger[_0x18a1('0xb')]('['+_0x4955f0['lastevent'][_0x18a1('0x5e')]()+']',_0x18a1('0x49'));_0x4955f0[_0x18a1('0x4a')]=util[_0x18a1('0xe')](_0x18a1('0x4b'),_0x5ca7c6[_0x18a1('0x46')],_0x4955f0[_0x18a1('0x4c')],md5(_0x4955f0[_0x18a1('0x4c')]));}else{_0x4955f0[_0x18a1('0x4a')]='';}headers[_0x18a1('0x4d')]=getAuth(_0x5ca7c6);return getUser(_0x5ca7c6,'')[_0x18a1('0x27')](function(_0x3220ed){_0x33f9d4=_0x3220ed;logger[_0x18a1('0xb')]('The\x20User\x20ID\x20is:',_0x33f9d4['id']);return getEndUser(_0x5ca7c6,_0x4955f0['calleridname'],_0x4955f0[_0x18a1('0x10')]);})[_0x18a1('0x27')](function(_0x3a6c21){_0x8769a6=_0x3a6c21;logger[_0x18a1('0xb')](_0x18a1('0x4f'),_0x8769a6['id']);return getTicket(_0x5ca7c6,_0x33f9d4,_0x8769a6,_0x307f51,_0x4955f0);})[_0x18a1('0x27')](function(_0x2aa6ea){if(_0x2aa6ea){logger[_0x18a1('0xb')](_0x18a1('0x1e'));logger[_0x18a1('0xb')]('The\x20Ticket\x20ID\x20is:',_0x2aa6ea['id']);}})[_0x18a1('0x55')](function(_0x54254a){logger[_0x18a1('0x56')]('['+_0x4955f0[_0x18a1('0x5f')][_0x18a1('0x5e')]()+']',JSON[_0x18a1('0x34')](_0x54254a));});};
\ No newline at end of file
index 8728fc7..166a685 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d35=['length','email','User\x20found:','userId','Admin\x20selected','catch','/api/lookup?q=','&f=','find','contacts','format','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','getString','Subjects','Descriptions','add','task','Task\x20created:','ticketId','user:%s','emit','trigger:browser:url','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','calleridnum','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','monitor_format','[QUEUE]','recordingFormat','none','recordingURL','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','lodash','request-promise','md5','util','moment','bluebird','./util','../../../../config/logger','freshsales','redis','defaults','socket.io-emitter','GET','headers','info','Getting\x20admin\x20information','users','adminEmail','adminId','Requested\x20Resource\x20not\x20Found','error','toUpperCase','message','/api/selector/owners','Getting\x20user\x20list','then','agentEmail','userEmail'];(function(_0x45b034,_0x3a57dd){var _0x509cb0=function(_0x3a89d5){while(--_0x3a89d5){_0x45b034['push'](_0x45b034['shift']());}};_0x509cb0(++_0x3a57dd);}(_0x1d35,0x174));var _0x51d3=function(_0x56e083,_0x4605c8){_0x56e083=_0x56e083-0x0;var _0x2e89eb=_0x1d35[_0x56e083];return _0x2e89eb;};'use strict';var _=require(_0x51d3('0x0'));var rp=require(_0x51d3('0x1'));var md5=require(_0x51d3('0x2'));var util=require(_0x51d3('0x3'));var moment=require(_0x51d3('0x4'));var Promise=require(_0x51d3('0x5'));var Redis=require('ioredis');var intUtil=require(_0x51d3('0x6'));var config=require('../../../../config/environment');var logger=require(_0x51d3('0x7'))(_0x51d3('0x8'));config[_0x51d3('0x9')]=_[_0x51d3('0xa')](config[_0x51d3('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x51d3('0xb'))(new Redis(config[_0x51d3('0x9')]));function getAdminId(_0x41c82c,_0x3dddc9,_0x4833fe,_0x2ea9ee){return new Promise(function(_0x56905c,_0x312132){var _0x6b8ae8=![];var _0x19b787={'method':_0x51d3('0xc'),'uri':_0x2ea9ee+'/api/selector/owners','json':!![]};_0x19b787[_0x51d3('0xd')]=_0x4833fe;logger[_0x51d3('0xe')](_0x51d3('0xf'));return rp(_0x19b787)['then'](function(_0x18e81f){if(_0x18e81f){var _0x22f52e=_0x18e81f[_0x51d3('0x10')];var _0x45c767=null;for(_0x45c767=0x0;_0x45c767<_0x22f52e['length'];_0x45c767++){if(_0x22f52e[_0x45c767]['email']===_0x41c82c[_0x51d3('0x11')]){_0x41c82c[_0x51d3('0x12')]=_0x22f52e[_0x45c767]['id'];_0x6b8ae8=!![];}}if(_0x6b8ae8){logger[_0x51d3('0xe')]('Admin\x20found:',_0x41c82c[_0x51d3('0x12')]);_0x56905c(_0x41c82c);}else{_0x312132({'statusCode':0x194,'message':_0x51d3('0x13')});}}else{_0x312132({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})['catch'](function(_0x4d43b0){logger[_0x51d3('0x14')]('['+[_0x3dddc9[_0x51d3('0x15')]()]+']',_0x4d43b0[_0x51d3('0x16')]);_0x312132(_0x4d43b0);});});}function getUser(_0x38ea12,_0x46da32,_0x4ac82c){return function(_0x5331ac){return new Promise(function(_0x5427b4,_0x7c0fbd){var _0x124bd5={'method':_0x51d3('0xc'),'uri':_0x4ac82c+_0x51d3('0x17'),'json':!![]};_0x124bd5[_0x51d3('0xd')]=_0x46da32;logger['info'](_0x51d3('0x18'));return rp(_0x124bd5)[_0x51d3('0x19')](function(_0x1953c8){if(_0x1953c8){var _0x3a26f0=_0x1953c8[_0x51d3('0x10')];var _0x8006bb=![];var _0x1dcec2=null;if(_0x5331ac[_0x51d3('0x1a')]!==null){logger[_0x51d3('0xe')]('Getting\x20user\x20with\x20email',_0x5331ac[_0x51d3('0x1a')]);_0x5331ac[_0x51d3('0x1b')]=_0x5331ac['agentEmail'];for(_0x1dcec2=0x0;_0x1dcec2<_0x3a26f0[_0x51d3('0x1c')];_0x1dcec2++){if(_0x3a26f0[_0x1dcec2][_0x51d3('0x1d')]===_0x5331ac['agentEmail']){_0x8006bb=!![];_0x5331ac['userId']=_0x3a26f0[_0x1dcec2]['id'];logger[_0x51d3('0xe')](_0x51d3('0x1e'),_0x5331ac[_0x51d3('0x1f')]);}}}if(!_0x8006bb){logger[_0x51d3('0xe')](_0x51d3('0x20'));_0x5331ac['userEmail']=_0x5331ac['adminEmail'];_0x5331ac[_0x51d3('0x1f')]=_0x5331ac[_0x51d3('0x12')];_0x8006bb=!![];}if(_0x8006bb){_0x5427b4(_0x5331ac);}else{_0x7c0fbd({'statusCode':0x194,'message':_0x51d3('0x13')});}}else{_0x7c0fbd({'statusCode':0x194,'message':_0x51d3('0x13')});}})[_0x51d3('0x21')](function(_0x1a3a75){logger[_0x51d3('0x14')]('['+[_0x38ea12['toUpperCase']()]+']',_0x1a3a75['message']);_0x7c0fbd(_0x1a3a75);});});};}function searchContact(_0x4df848,_0xe5cc1b,_0x3458f3,_0x5f339e){return new Promise(function(_0x5e8d4d,_0x4108d7){var _0x505e41={'method':_0x51d3('0xc'),'headers':_0xe5cc1b,'uri':_0x4df848+_0x51d3('0x22')+_0x5f339e+_0x51d3('0x23')+_0x3458f3+'&entities=contact','json':!![]};rp(_0x505e41)[_0x51d3('0x19')](function(_0x47ee5f){var _0x1b9df5=_[_0x51d3('0x24')](_0x47ee5f['contacts'][_0x51d3('0x25')],[_0x3458f3,_0x5f339e]);_0x5e8d4d(_0x1b9df5);})[_0x51d3('0x21')](function(_0x27ecd3){_0x4108d7(_0x27ecd3);});});}function getEndUser(_0xcac30c,_0x4c1810,_0x359cd5){return function(_0x46ebe5){return new Promise(function(_0x5d7bec,_0x68a849){logger[_0x51d3('0xe')](util[_0x51d3('0x26')]('Searching\x20contact\x20with\x20phone\x20%s',_0x46ebe5[_0x51d3('0x27')]));searchContact(_0x359cd5,_0x4c1810,'mobile_number',_0x46ebe5[_0x51d3('0x27')])[_0x51d3('0x19')](function(_0x376d4c){if(_0x376d4c){_0x46ebe5[_0x51d3('0x28')]=_0x376d4c['id'];logger['info'](_0x51d3('0x29'),_0x46ebe5[_0x51d3('0x28')]);return _0x5d7bec(_0x46ebe5);}searchContact(_0x359cd5,_0x4c1810,_0x51d3('0x2a'),_0x46ebe5[_0x51d3('0x27')])[_0x51d3('0x19')](function(_0x4d96c0){if(_0x4d96c0){_0x46ebe5[_0x51d3('0x28')]=_0x4d96c0['id'];logger['info']('Contact\x20found\x20work_number:',_0x46ebe5[_0x51d3('0x28')]);return _0x5d7bec(_0x46ebe5);}createEndUser(_0x46ebe5,_0xcac30c,_0x4c1810,_0x359cd5)[_0x51d3('0x19')](function(_0x2e11fe){logger[_0x51d3('0xe')](_0x51d3('0x2b'),_0x2e11fe[_0x51d3('0x28')]);return _0x5d7bec(_0x2e11fe);});});})[_0x51d3('0x21')](function(_0x40556f){_0x68a849(_0x40556f);});});};}function createEndUser(_0x187cfa,_0xce19fb,_0xd3b9c7,_0x1fba9a){return new Promise(function(_0x5012c7,_0x2a6346){var _0x1dd94f=moment();var _0x20cb77={'method':_0x51d3('0x2c'),'uri':_0x1fba9a+_0x51d3('0x2d'),'body':{'contact':{'last_name':_0x187cfa[_0x51d3('0x27')],'work_number':_0x187cfa[_0x51d3('0x27')],'mobile_number':_0x187cfa[_0x51d3('0x27')],'owner_id':_0x187cfa[_0x51d3('0x1f')],'created_at':_0x1dd94f[_0x51d3('0x26')](_0x51d3('0x2e'))}},'json':!![]};_0x20cb77[_0x51d3('0xd')]=_0xd3b9c7;logger[_0x51d3('0xe')](_0x51d3('0x2f'));return rp(_0x20cb77)[_0x51d3('0x19')](function(_0x44afca){_0x187cfa[_0x51d3('0x28')]=_0x44afca[_0x51d3('0x30')]['id'];_0x5012c7(_0x187cfa);})[_0x51d3('0x21')](function(_0x131151){logger[_0x51d3('0x14')]('['+[_0xce19fb[_0x51d3('0x15')]()]+']',_0x131151[_0x51d3('0x16')]);_0x2a6346(_0x131151[_0x51d3('0x16')]);});});}function getTicket(_0x36b288,_0x2c8b45,_0x5c391c,_0xcd2214,_0x23f9ea){return function(_0x180aac){logger[_0x51d3('0xe')](_0x51d3('0x31'));return new Promise(function(_0x115fa7,_0x9ef6c2){var _0x5055ed=moment();var _0x254f6a={'method':'POST','uri':_0x5c391c+'/api/tasks','body':{'title':intUtil[_0x51d3('0x32')](_0xcd2214[_0x51d3('0x33')],_0x23f9ea,'\x20'),'description':intUtil[_0x51d3('0x32')](_0xcd2214[_0x51d3('0x34')],_0x23f9ea,'\x0a'),'owner_id':_0x180aac[_0x51d3('0x1f')],'creater_id':_0x180aac[_0x51d3('0x12')],'targetable_id':_0x180aac[_0x51d3('0x28')],'targetable_type':'Contact','created_at':_0x5055ed[_0x51d3('0x26')]('YYYY-MM-DDTHH:mm:ss'),'due_date':_0x5055ed[_0x51d3('0x35')](0x1e,'m')[_0x51d3('0x26')](_0x51d3('0x2e'))},'json':!![]};_0x254f6a[_0x51d3('0xd')]=_0x2c8b45;return rp(_0x254f6a)[_0x51d3('0x19')](function(_0x5486b2){_0x180aac['ticketId']=_0x5486b2[_0x51d3('0x36')]['id'];logger['info'](_0x51d3('0x37'),_0x180aac[_0x51d3('0x38')]);_0x115fa7(_0x180aac);})[_0x51d3('0x21')](function(_0x5a779a){logger[_0x51d3('0x14')]('['+[_0x36b288[_0x51d3('0x15')]()]+']',_0x5a779a[_0x51d3('0x16')]);_0x9ef6c2(_0x5a779a[_0x51d3('0x16')]);});});};}function emit(_0x2785bc,_0x5b5aed,_0x1b4620){var _0x376ec9={'uri':_0x2785bc+'/contacts/'+_0x1b4620};io['to'](util[_0x51d3('0x26')](_0x51d3('0x39'),_0x5b5aed))[_0x51d3('0x3a')](_0x51d3('0x3b'),_0x376ec9);}exports['cs']=function(_0x4cb999,_0x5a8c85,_0x8dcdef,_0x3eb665,_0xfadd55,_0x17caec,_0x41a5cd,_0x2fe2ee){var _0x1a7484={};var _0x5bce29={'Authorization':'Token\x20token='+_0x17caec[_0x51d3('0x3c')]};_0x17caec[_0x51d3('0x3d')]=intUtil[_0x51d3('0x3e')](_0x17caec[_0x51d3('0x3d')]);_0x17caec[_0x51d3('0x3f')]=intUtil[_0x51d3('0x3e')](_0x17caec[_0x51d3('0x3f')]);var _0x11544b=_0x17caec[_0x51d3('0x3d')];_0x1a7484[_0x51d3('0x11')]=_0x17caec[_0x51d3('0x40')];_0x1a7484[_0x51d3('0x27')]=_0x2fe2ee[_0x51d3('0x41')]()===_0x51d3('0x42')?_0x5a8c85[_0x51d3('0x43')]:_0x5a8c85[_0x51d3('0x44')];_0x1a7484['callDirection']=_0x2fe2ee===_0x51d3('0x45')||_0x2fe2ee===_0x51d3('0x46')?'queue':_0x51d3('0x42');if(_0x3eb665){_0x1a7484['agentEmail']=_0x3eb665['email'];}var _0x493503=util[_0x51d3('0x26')](_0x51d3('0x47'),_0x17caec[_0x51d3('0x3f')],_0x5a8c85['uniqueid'],md5(_0x5a8c85['uniqueid']));if(_0xfadd55&&_0xfadd55[_0x51d3('0x48')]){logger[_0x51d3('0xe')](_0x51d3('0x49'),'Recording\x20is\x20enabled!');_0x5a8c85['recordingURL']=_0x493503;}else if(_0x41a5cd&&_0x41a5cd[_0x51d3('0x4a')]&&_0x41a5cd[_0x51d3('0x4a')]!==_0x51d3('0x4b')){logger[_0x51d3('0xe')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0x5a8c85[_0x51d3('0x4c')]=_0x493503;}else{_0x5a8c85[_0x51d3('0x4c')]='';}return getAdminId(_0x1a7484,_0x2fe2ee,_0x5bce29,_0x11544b)[_0x51d3('0x19')](getUser(_0x2fe2ee,_0x5bce29,_0x11544b))[_0x51d3('0x19')](getEndUser(_0x2fe2ee,_0x5bce29,_0x11544b))[_0x51d3('0x19')](getTicket(_0x2fe2ee,_0x5bce29,_0x11544b,_0x8dcdef,_0x5a8c85))['then'](function(_0x361a8f){logger[_0x51d3('0xe')](util[_0x51d3('0x26')]('The\x20ticket\x20ID\x20is:\x20%s',_0x361a8f[_0x51d3('0x38')]));if(_0x2fe2ee!==_0x51d3('0x46')){logger[_0x51d3('0xe')]('['+[_0x2fe2ee[_0x51d3('0x15')]()]+']',_0x51d3('0x4d'));emit(_0x11544b,_0x3eb665[_0x51d3('0x4e')],_0x361a8f[_0x51d3('0x28')]);}})[_0x51d3('0x21')](function(_0x1b86d8){logger['error']('['+[_0x2fe2ee[_0x51d3('0x15')]()]+_0x51d3('0x4f'),util['inspect'](_0x1b86d8,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x2fcb=['Descriptions','Contact','ticketId','Task\x20created:','/contacts/','user:%s','emit','trigger:browser:url','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','outbound','calleridnum','callDirection','unmanaged','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','recordingURL','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','md5','util','bluebird','ioredis','../../../../config/logger','freshsales','redis','defaults','localhost','socket.io-emitter','GET','/api/selector/owners','Getting\x20admin\x20information','users','length','adminEmail','adminId','info','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','Getting\x20user\x20list','then','agentEmail','Getting\x20user\x20with\x20email','email','userId','User\x20found:','Admin\x20selected','userEmail','/api/lookup?q=','&f=','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','contactNumber','work_number','endUserId','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','headers','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','message','Creating\x20new\x20task','/api/tasks','getString','Subjects'];(function(_0x4e77e0,_0x2a8374){var _0x10ed26=function(_0x200533){while(--_0x200533){_0x4e77e0['push'](_0x4e77e0['shift']());}};_0x10ed26(++_0x2a8374);}(_0x2fcb,0x176));var _0xb2fc=function(_0x2a818a,_0x532c97){_0x2a818a=_0x2a818a-0x0;var _0x596b8b=_0x2fcb[_0x2a818a];return _0x596b8b;};'use strict';var _=require(_0xb2fc('0x0'));var rp=require('request-promise');var md5=require(_0xb2fc('0x1'));var util=require(_0xb2fc('0x2'));var moment=require('moment');var Promise=require(_0xb2fc('0x3'));var Redis=require(_0xb2fc('0x4'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require(_0xb2fc('0x5'))(_0xb2fc('0x6'));config[_0xb2fc('0x7')]=_[_0xb2fc('0x8')](config[_0xb2fc('0x7')],{'host':_0xb2fc('0x9'),'port':0x18eb});var io=require(_0xb2fc('0xa'))(new Redis(config['redis']));function getAdminId(_0x3e4268,_0x96672a,_0x29a774,_0x1c9de2){return new Promise(function(_0x443b73,_0x58e2ae){var _0xcb2c5a=![];var _0x23afbc={'method':_0xb2fc('0xb'),'uri':_0x1c9de2+_0xb2fc('0xc'),'json':!![]};_0x23afbc['headers']=_0x29a774;logger['info'](_0xb2fc('0xd'));return rp(_0x23afbc)['then'](function(_0xb0ba1c){if(_0xb0ba1c){var _0x50352a=_0xb0ba1c[_0xb2fc('0xe')];var _0x2fec40=null;for(_0x2fec40=0x0;_0x2fec40<_0x50352a[_0xb2fc('0xf')];_0x2fec40++){if(_0x50352a[_0x2fec40]['email']===_0x3e4268[_0xb2fc('0x10')]){_0x3e4268[_0xb2fc('0x11')]=_0x50352a[_0x2fec40]['id'];_0xcb2c5a=!![];}}if(_0xcb2c5a){logger[_0xb2fc('0x12')](_0xb2fc('0x13'),_0x3e4268[_0xb2fc('0x11')]);_0x443b73(_0x3e4268);}else{_0x58e2ae({'statusCode':0x194,'message':_0xb2fc('0x14')});}}else{_0x58e2ae({'statusCode':0x194,'message':_0xb2fc('0x14')});}})[_0xb2fc('0x15')](function(_0x1b72a3){logger[_0xb2fc('0x16')]('['+[_0x96672a[_0xb2fc('0x17')]()]+']',_0x1b72a3['message']);_0x58e2ae(_0x1b72a3);});});}function getUser(_0x1c3998,_0x49f44b,_0x1838d7){return function(_0x1a4d0f){return new Promise(function(_0x8eeb42,_0x47734c){var _0x21014a={'method':_0xb2fc('0xb'),'uri':_0x1838d7+_0xb2fc('0xc'),'json':!![]};_0x21014a['headers']=_0x49f44b;logger[_0xb2fc('0x12')](_0xb2fc('0x18'));return rp(_0x21014a)[_0xb2fc('0x19')](function(_0x451bf9){if(_0x451bf9){var _0x4c3401=_0x451bf9[_0xb2fc('0xe')];var _0x48344f=![];var _0x1795ca=null;if(_0x1a4d0f[_0xb2fc('0x1a')]!==null){logger[_0xb2fc('0x12')](_0xb2fc('0x1b'),_0x1a4d0f['agentEmail']);_0x1a4d0f['userEmail']=_0x1a4d0f[_0xb2fc('0x1a')];for(_0x1795ca=0x0;_0x1795ca<_0x4c3401[_0xb2fc('0xf')];_0x1795ca++){if(_0x4c3401[_0x1795ca][_0xb2fc('0x1c')]===_0x1a4d0f[_0xb2fc('0x1a')]){_0x48344f=!![];_0x1a4d0f[_0xb2fc('0x1d')]=_0x4c3401[_0x1795ca]['id'];logger[_0xb2fc('0x12')](_0xb2fc('0x1e'),_0x1a4d0f[_0xb2fc('0x1d')]);}}}if(!_0x48344f){logger['info'](_0xb2fc('0x1f'));_0x1a4d0f[_0xb2fc('0x20')]=_0x1a4d0f[_0xb2fc('0x10')];_0x1a4d0f['userId']=_0x1a4d0f[_0xb2fc('0x11')];_0x48344f=!![];}if(_0x48344f){_0x8eeb42(_0x1a4d0f);}else{_0x47734c({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x47734c({'statusCode':0x194,'message':_0xb2fc('0x14')});}})['catch'](function(_0x5f1bd6){logger[_0xb2fc('0x16')]('['+[_0x1c3998[_0xb2fc('0x17')]()]+']',_0x5f1bd6['message']);_0x47734c(_0x5f1bd6);});});};}function searchContact(_0x4f76eb,_0x235fce,_0x2649db,_0x22be8d){return new Promise(function(_0x11db54,_0x3c6858){var _0x899b33={'method':_0xb2fc('0xb'),'headers':_0x235fce,'uri':_0x4f76eb+_0xb2fc('0x21')+_0x22be8d+_0xb2fc('0x22')+_0x2649db+'&entities=contact','json':!![]};rp(_0x899b33)[_0xb2fc('0x19')](function(_0x4bd0db){var _0x24a932=_[_0xb2fc('0x23')](_0x4bd0db[_0xb2fc('0x24')][_0xb2fc('0x24')],[_0x2649db,_0x22be8d]);_0x11db54(_0x24a932);})[_0xb2fc('0x15')](function(_0x3ead38){_0x3c6858(_0x3ead38);});});}function getEndUser(_0x1847a1,_0x307e61,_0x386c7b){return function(_0x8e5fc4){return new Promise(function(_0x3c8abc,_0x205106){logger[_0xb2fc('0x12')](util[_0xb2fc('0x25')](_0xb2fc('0x26'),_0x8e5fc4['contactNumber']));searchContact(_0x386c7b,_0x307e61,_0xb2fc('0x27'),_0x8e5fc4[_0xb2fc('0x28')])[_0xb2fc('0x19')](function(_0x4aa80a){if(_0x4aa80a){_0x8e5fc4['endUserId']=_0x4aa80a['id'];logger[_0xb2fc('0x12')]('Contact\x20found\x20mobile_number:',_0x8e5fc4['endUserId']);return _0x3c8abc(_0x8e5fc4);}searchContact(_0x386c7b,_0x307e61,_0xb2fc('0x29'),_0x8e5fc4['contactNumber'])[_0xb2fc('0x19')](function(_0x3a7dc9){if(_0x3a7dc9){_0x8e5fc4[_0xb2fc('0x2a')]=_0x3a7dc9['id'];logger[_0xb2fc('0x12')](_0xb2fc('0x2b'),_0x8e5fc4['endUserId']);return _0x3c8abc(_0x8e5fc4);}createEndUser(_0x8e5fc4,_0x1847a1,_0x307e61,_0x386c7b)[_0xb2fc('0x19')](function(_0x3b6a0a){logger[_0xb2fc('0x12')](_0xb2fc('0x2c'),_0x3b6a0a[_0xb2fc('0x2a')]);return _0x3c8abc(_0x3b6a0a);});});})[_0xb2fc('0x15')](function(_0x157d3b){_0x205106(_0x157d3b);});});};}function createEndUser(_0x346371,_0x4fe015,_0x17f468,_0x51d21d){return new Promise(function(_0xb9d46b,_0x1252ae){var _0x21345d=moment();var _0xd6e2c4={'method':_0xb2fc('0x2d'),'uri':_0x51d21d+_0xb2fc('0x2e'),'body':{'contact':{'last_name':_0x346371[_0xb2fc('0x28')],'work_number':_0x346371['contactNumber'],'mobile_number':_0x346371['contactNumber'],'owner_id':_0x346371['userId'],'created_at':_0x21345d[_0xb2fc('0x25')](_0xb2fc('0x2f'))}},'json':!![]};_0xd6e2c4[_0xb2fc('0x30')]=_0x17f468;logger[_0xb2fc('0x12')](_0xb2fc('0x31'));return rp(_0xd6e2c4)[_0xb2fc('0x19')](function(_0xea3d48){_0x346371['endUserId']=_0xea3d48[_0xb2fc('0x32')]['id'];_0xb9d46b(_0x346371);})[_0xb2fc('0x15')](function(_0x3b2582){logger['error']('['+[_0x4fe015[_0xb2fc('0x17')]()]+']',_0x3b2582['message']);_0x1252ae(_0x3b2582[_0xb2fc('0x33')]);});});}function getTicket(_0x3435e9,_0x4c7d75,_0x448e32,_0x380d94,_0x1ee78e){return function(_0x2247ec){logger[_0xb2fc('0x12')](_0xb2fc('0x34'));return new Promise(function(_0x13bd91,_0x39573e){var _0x329606=moment();var _0x39970d={'method':_0xb2fc('0x2d'),'uri':_0x448e32+_0xb2fc('0x35'),'body':{'title':intUtil[_0xb2fc('0x36')](_0x380d94[_0xb2fc('0x37')],_0x1ee78e,'\x20'),'description':intUtil[_0xb2fc('0x36')](_0x380d94[_0xb2fc('0x38')],_0x1ee78e,'\x0a'),'owner_id':_0x2247ec['userId'],'creater_id':_0x2247ec['adminId'],'targetable_id':_0x2247ec[_0xb2fc('0x2a')],'targetable_type':_0xb2fc('0x39'),'created_at':_0x329606[_0xb2fc('0x25')](_0xb2fc('0x2f')),'due_date':_0x329606['add'](0x1e,'m')[_0xb2fc('0x25')](_0xb2fc('0x2f'))},'json':!![]};_0x39970d[_0xb2fc('0x30')]=_0x4c7d75;return rp(_0x39970d)[_0xb2fc('0x19')](function(_0x1807c5){_0x2247ec[_0xb2fc('0x3a')]=_0x1807c5['task']['id'];logger[_0xb2fc('0x12')](_0xb2fc('0x3b'),_0x2247ec['ticketId']);_0x13bd91(_0x2247ec);})[_0xb2fc('0x15')](function(_0x59be7c){logger[_0xb2fc('0x16')]('['+[_0x3435e9[_0xb2fc('0x17')]()]+']',_0x59be7c[_0xb2fc('0x33')]);_0x39573e(_0x59be7c[_0xb2fc('0x33')]);});});};}function emit(_0x578f60,_0x213141,_0x16b981){var _0x1e9be0={'uri':_0x578f60+_0xb2fc('0x3c')+_0x16b981};io['to'](util[_0xb2fc('0x25')](_0xb2fc('0x3d'),_0x213141))[_0xb2fc('0x3e')](_0xb2fc('0x3f'),_0x1e9be0);}exports['cs']=function(_0x2dd987,_0x49e33c,_0x5ae913,_0x35f201,_0xa982c3,_0x4fc63b,_0x3499d1,_0x3ae197){var _0x2f4748={};var _0xb3ce5c={'Authorization':'Token\x20token='+_0x4fc63b[_0xb2fc('0x40')]};_0x4fc63b[_0xb2fc('0x41')]=intUtil[_0xb2fc('0x42')](_0x4fc63b[_0xb2fc('0x41')]);_0x4fc63b[_0xb2fc('0x43')]=intUtil[_0xb2fc('0x42')](_0x4fc63b[_0xb2fc('0x43')]);var _0x216271=_0x4fc63b['remoteUri'];_0x2f4748[_0xb2fc('0x10')]=_0x4fc63b[_0xb2fc('0x44')];_0x2f4748[_0xb2fc('0x28')]=_0x3ae197['toLowerCase']()===_0xb2fc('0x45')?_0x49e33c['destcalleridnum']:_0x49e33c[_0xb2fc('0x46')];_0x2f4748[_0xb2fc('0x47')]=_0x3ae197==='queue'||_0x3ae197===_0xb2fc('0x48')?_0xb2fc('0x49'):_0xb2fc('0x45');if(_0x35f201){_0x2f4748[_0xb2fc('0x1a')]=_0x35f201[_0xb2fc('0x1c')];}var _0x1ca5a5=util['format'](_0xb2fc('0x4a'),_0x4fc63b[_0xb2fc('0x43')],_0x49e33c[_0xb2fc('0x4b')],md5(_0x49e33c[_0xb2fc('0x4b')]));if(_0xa982c3&&_0xa982c3['monitor_format']){logger[_0xb2fc('0x12')](_0xb2fc('0x4c'),'Recording\x20is\x20enabled!');_0x49e33c[_0xb2fc('0x4d')]=_0x1ca5a5;}else if(_0x3499d1&&_0x3499d1['recordingFormat']&&_0x3499d1[_0xb2fc('0x4e')]!==_0xb2fc('0x4f')){logger[_0xb2fc('0x12')](_0xb2fc('0x50'),_0xb2fc('0x51'));_0x49e33c[_0xb2fc('0x4d')]=_0x1ca5a5;}else{_0x49e33c[_0xb2fc('0x4d')]='';}return getAdminId(_0x2f4748,_0x3ae197,_0xb3ce5c,_0x216271)[_0xb2fc('0x19')](getUser(_0x3ae197,_0xb3ce5c,_0x216271))[_0xb2fc('0x19')](getEndUser(_0x3ae197,_0xb3ce5c,_0x216271))[_0xb2fc('0x19')](getTicket(_0x3ae197,_0xb3ce5c,_0x216271,_0x5ae913,_0x49e33c))['then'](function(_0x658f52){logger[_0xb2fc('0x12')](util[_0xb2fc('0x25')]('The\x20ticket\x20ID\x20is:\x20%s',_0x658f52[_0xb2fc('0x3a')]));if(_0x3ae197!=='unmanaged'){logger[_0xb2fc('0x12')]('['+[_0x3ae197['toUpperCase']()]+']',_0xb2fc('0x52'));emit(_0x216271,_0x35f201[_0xb2fc('0x53')],_0x658f52[_0xb2fc('0x2a')]);}})[_0xb2fc('0x15')](function(_0x1d8c6f){logger['error']('['+[_0x3ae197[_0xb2fc('0x17')]()]+_0xb2fc('0x54'),util[_0xb2fc('0x55')](_0x1d8c6f,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index bb80612..7c48b65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb580=['dynamics365','freshsales','includes','data1','toLowerCase','data2','find','Configurations','data3','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','desk','unknown\x20integration','format','%s\x20configuration\x20#%s\x20not\x20found','../../../../config/logger','error','[EXEC]','%s\x20account\x20#%s\x20not\x20found','util','./zendesk','./salesforce','./freshdesk','./zoho','./desk','./dynamics365','./freshsales','zendesk','salesforce','sugarcrm','zoho','vtiger'];(function(_0xc4aeb3,_0x545fbc){var _0x476d6a=function(_0x141d4f){while(--_0x141d4f){_0xc4aeb3['push'](_0xc4aeb3['shift']());}};_0x476d6a(++_0x545fbc);}(_0xb580,0xa7));var _0x0b58=function(_0x3d8332,_0x117b88){_0x3d8332=_0x3d8332-0x0;var _0xde40fa=_0xb580[_0x3d8332];return _0xde40fa;};'use strict';var _=require('lodash');var util=require(_0x0b58('0x0'));var zendesk=require(_0x0b58('0x1'));var salesforce=require(_0x0b58('0x2'));var sugarcrm=require('./sugarcrm');var freshdesk=require(_0x0b58('0x3'));var zoho=require(_0x0b58('0x4'));var desk=require(_0x0b58('0x5'));var vtiger=require('./vtiger');var servicenow=require('./servicenow');var dynamics365=require(_0x0b58('0x6'));var freshsales=require(_0x0b58('0x7'));var integrations=[_0x0b58('0x8'),_0x0b58('0x9'),_0x0b58('0xa'),'freshdesk',_0x0b58('0xb'),'desk',_0x0b58('0xc'),_0x0b58('0xd'),_0x0b58('0xe'),'servicenow'];exports['exec']=function(_0x2695a3,_0xe586a6,_0x20094f,_0x481a48,_0x10130d,_0x55ba14){if(_0x20094f){if(_[_0x0b58('0xf')](integrations,_0x2695a3[_0x0b58('0x10')]['toLowerCase']())){try{var _0x3bcf6b=null;var _0x534e7b='';var _0x1351d3=_0x20094f[_0x2695a3[_0x0b58('0x10')][_0x0b58('0x11')]()];if(_0x1351d3){var _0x404120=_0x1351d3[_0x2695a3[_0x0b58('0x12')]];if(_0x404120){var _0x5562bc=_[_0x0b58('0x13')](_0x404120[_0x0b58('0x14')],{'id':parseInt(_0x2695a3[_0x0b58('0x15')],0xa)});if(_0x5562bc){if(_0x481a48){if(_0x10130d&&_0xe586a6['queue']){_0x534e7b=_0x0b58('0x16');}else if(_0xe586a6[_0x0b58('0x17')]){_0x534e7b=_0x0b58('0x18');}else{console[_0x0b58('0x19')](_0x0b58('0x1a'),_0xe586a6);}}else{_0x534e7b=_0x0b58('0x1b');}switch(_0x2695a3[_0x0b58('0x10')]['toLowerCase']()){case _0x0b58('0x8'):zendesk[_0x534e7b](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14);break;case _0x0b58('0x9'):salesforce[_0x534e7b](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14);break;case _0x0b58('0xa'):sugarcrm[_0x534e7b](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14);break;case'freshdesk':freshdesk[_0x534e7b](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14);break;case'zoho':zoho[_0x534e7b](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14);break;case _0x0b58('0x1c'):desk[_0x534e7b](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14);break;case _0x0b58('0xc'):vtiger[_0x534e7b](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14);break;case _0x0b58('0xe'):freshsales['cs'](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14,_0x534e7b);break;case'servicenow':servicenow['cs'](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14,_0x534e7b);break;case'dynamics365':dynamics365['cs'](_0x2695a3,_0xe586a6,_0x5562bc,_0x481a48,_0x10130d,_0x404120,_0x55ba14,_0x534e7b);break;default:console['log'](_0x0b58('0x1d'));}}else{_0x3bcf6b=require('../../../../config/logger')(_0x2695a3[_0x0b58('0x10')][_0x0b58('0x11')]());_0x3bcf6b['error']('[EXEC]',util[_0x0b58('0x1e')](_0x0b58('0x1f'),_0x2695a3[_0x0b58('0x10')][_0x0b58('0x11')](),_0x2695a3[_0x0b58('0x15')]));}}else{_0x3bcf6b=require(_0x0b58('0x20'))(_0x2695a3['data1']['toLowerCase']());_0x3bcf6b[_0x0b58('0x21')](_0x0b58('0x22'),util[_0x0b58('0x1e')](_0x0b58('0x23'),_0x2695a3[_0x0b58('0x10')][_0x0b58('0x11')](),_0x2695a3[_0x0b58('0x12')]));}}else{}}catch(_0x61386c){console[_0x0b58('0x21')](_0x61386c);}}}};
\ No newline at end of file
+var _0x2572=['%s\x20account\x20#%s\x20not\x20found','lodash','util','./zendesk','./salesforce','./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./servicenow','./dynamics365','./freshsales','sugarcrm','freshdesk','zoho','desk','vtiger','dynamics365','freshsales','servicenow','exec','includes','data1','toLowerCase','data2','Configurations','data3','queue','routeId','log','EVENT\x20UNKNOWN','unknown\x20integration','../../../../config/logger','[EXEC]','format','error'];(function(_0x37a416,_0x14ee6a){var _0x47959e=function(_0x57aa93){while(--_0x57aa93){_0x37a416['push'](_0x37a416['shift']());}};_0x47959e(++_0x14ee6a);}(_0x2572,0x70));var _0x2257=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x2572[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x2257('0x0'));var util=require(_0x2257('0x1'));var zendesk=require(_0x2257('0x2'));var salesforce=require(_0x2257('0x3'));var sugarcrm=require(_0x2257('0x4'));var freshdesk=require(_0x2257('0x5'));var zoho=require(_0x2257('0x6'));var desk=require(_0x2257('0x7'));var vtiger=require(_0x2257('0x8'));var servicenow=require(_0x2257('0x9'));var dynamics365=require(_0x2257('0xa'));var freshsales=require(_0x2257('0xb'));var integrations=['zendesk','salesforce',_0x2257('0xc'),_0x2257('0xd'),_0x2257('0xe'),_0x2257('0xf'),_0x2257('0x10'),_0x2257('0x11'),_0x2257('0x12'),_0x2257('0x13')];exports[_0x2257('0x14')]=function(_0x114215,_0x10b902,_0x34ed51,_0x21bdc0,_0x2d2bf5,_0x436b0c){if(_0x34ed51){if(_[_0x2257('0x15')](integrations,_0x114215[_0x2257('0x16')][_0x2257('0x17')]())){try{var _0x486aee=null;var _0x3e2af8='';var _0x3caccc=_0x34ed51[_0x114215[_0x2257('0x16')][_0x2257('0x17')]()];if(_0x3caccc){var _0x582a9b=_0x3caccc[_0x114215[_0x2257('0x18')]];if(_0x582a9b){var _0x53e896=_['find'](_0x582a9b[_0x2257('0x19')],{'id':parseInt(_0x114215[_0x2257('0x1a')],0xa)});if(_0x53e896){if(_0x21bdc0){if(_0x2d2bf5&&_0x10b902[_0x2257('0x1b')]){_0x3e2af8=_0x2257('0x1b');}else if(_0x10b902[_0x2257('0x1c')]){_0x3e2af8='outbound';}else{console[_0x2257('0x1d')](_0x2257('0x1e'),_0x10b902);}}else{_0x3e2af8='unmanaged';}switch(_0x114215[_0x2257('0x16')][_0x2257('0x17')]()){case'zendesk':zendesk[_0x3e2af8](_0x114215,_0x10b902,_0x53e896,_0x21bdc0,_0x2d2bf5,_0x582a9b,_0x436b0c);break;case'salesforce':salesforce[_0x3e2af8](_0x114215,_0x10b902,_0x53e896,_0x21bdc0,_0x2d2bf5,_0x582a9b,_0x436b0c);break;case _0x2257('0xc'):sugarcrm[_0x3e2af8](_0x114215,_0x10b902,_0x53e896,_0x21bdc0,_0x2d2bf5,_0x582a9b,_0x436b0c);break;case _0x2257('0xd'):freshdesk[_0x3e2af8](_0x114215,_0x10b902,_0x53e896,_0x21bdc0,_0x2d2bf5,_0x582a9b,_0x436b0c);break;case _0x2257('0xe'):zoho[_0x3e2af8](_0x114215,_0x10b902,_0x53e896,_0x21bdc0,_0x2d2bf5,_0x582a9b,_0x436b0c);break;case _0x2257('0xf'):desk[_0x3e2af8](_0x114215,_0x10b902,_0x53e896,_0x21bdc0,_0x2d2bf5,_0x582a9b,_0x436b0c);break;case _0x2257('0x10'):vtiger[_0x3e2af8](_0x114215,_0x10b902,_0x53e896,_0x21bdc0,_0x2d2bf5,_0x582a9b,_0x436b0c);break;case _0x2257('0x12'):freshsales['cs'](_0x114215,_0x10b902,_0x53e896,_0x21bdc0,_0x2d2bf5,_0x582a9b,_0x436b0c,_0x3e2af8);break;case _0x2257('0x13'):servicenow['cs'](_0x114215,_0x10b902,_0x53e896,_0x21bdc0,_0x2d2bf5,_0x582a9b,_0x436b0c,_0x3e2af8);break;case _0x2257('0x11'):dynamics365['cs'](_0x114215,_0x10b902,_0x53e896,_0x21bdc0,_0x2d2bf5,_0x582a9b,_0x436b0c,_0x3e2af8);break;default:console[_0x2257('0x1d')](_0x2257('0x1f'));}}else{_0x486aee=require(_0x2257('0x20'))(_0x114215[_0x2257('0x16')]['toLowerCase']());_0x486aee['error'](_0x2257('0x21'),util[_0x2257('0x22')]('%s\x20configuration\x20#%s\x20not\x20found',_0x114215[_0x2257('0x16')][_0x2257('0x17')](),_0x114215[_0x2257('0x1a')]));}}else{_0x486aee=require(_0x2257('0x20'))(_0x114215[_0x2257('0x16')][_0x2257('0x17')]());_0x486aee[_0x2257('0x23')]('[EXEC]',util[_0x2257('0x22')](_0x2257('0x24'),_0x114215[_0x2257('0x16')][_0x2257('0x17')](),_0x114215[_0x2257('0x18')]));}}else{}}catch(_0x23176c){console[_0x2257('0x23')](_0x23176c);}}}};
\ No newline at end of file
index 0d26b63..f46e3a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd38f=['stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','email','calleridname','calleridnum','[QUEUE]\x20Ticket\x20%s\x20created','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','trigger:salesforce:display','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','catch','outbound','recordingFormat','[OUTBOUND]','Fields','[OUTBOUND]\x20Ticket\x20%s\x20created.','integrationTab','user:%s','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','toUpperCase','isNil','lastevent',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','request-promise','moment','md5','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','socket.io-emitter','assign','getString','Descriptions','ticketType','Task','ActivityDate','utc','IsReminderSet','IsRecurrence','endUserType','contact','lead','WhoId','account','WhatId','Case','ContactId','AccountId','leadId','info','sobject','create','validateEmail','find','execute','then','Email','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','cloneDeep','additionalSearchContact','merge','length','additionalSearchLead','$or','Lead','account_contact_lead','additionalSearchAccount','Contact','first','Phone','attributes','type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','<unknown>','format','Caller\x20-\x20%s','Company','No\x20Company','upperFirst','forEach','includes','string','picklist','idField','content','toString','variable','variableName','customVariable','Variable','name','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','Connection\x20established.','queue','serverUrl'];(function(_0x9bc277,_0x361003){var _0x2d3fc0=function(_0x27ea86){while(--_0x27ea86){_0x9bc277['push'](_0x9bc277['shift']());}};_0x2d3fc0(++_0x361003);}(_0xd38f,0x123));var _0xfd38=function(_0x5d960a,_0x36d84d){_0x5d960a=_0x5d960a-0x0;var _0x17a0ff=_0xd38f[_0x5d960a];return _0x17a0ff;};'use strict';var _=require('lodash');var rp=require(_0xfd38('0x0'));var moment=require(_0xfd38('0x1'));var BPromise=require('bluebird');var md5=require(_0xfd38('0x2'));var jsforce=require(_0xfd38('0x3'));var util=require(_0xfd38('0x4'));var Redis=require(_0xfd38('0x5'));var intUtil=require(_0xfd38('0x6'));var config=require(_0xfd38('0x7'));var logger=require(_0xfd38('0x8'))(_0xfd38('0x9'));config[_0xfd38('0xa')]=_[_0xfd38('0xb')](config[_0xfd38('0xa')],{'host':_0xfd38('0xc'),'port':0x18eb});var io=require(_0xfd38('0xd'))(new Redis(config[_0xfd38('0xa')]));function emit(_0x25db23,_0xb92f5f,_0x43e88b){io['to'](_0x25db23)['emit'](_0xb92f5f,_0x43e88b);}function getTicket(_0x1779cd,_0x54ab04,_0x13a57e,_0x3c8cdc,_0x46aee8,_0x3ec054,_0x5c3b56,_0x2abe17){var _0x3704d4=Object[_0xfd38('0xe')]({},{'OwnerId':_0x54ab04['id'],'Subject':intUtil['getString'](_0x3c8cdc['Subjects'],_0x46aee8,'\x20'),'Description':intUtil[_0xfd38('0xf')](_0x3c8cdc[_0xfd38('0x10')],_0x46aee8,'\x0a')},getCustomFields(_0x3ec054,_0x46aee8));if(_0x13a57e){if(_0x3c8cdc[_0xfd38('0x11')]===_0xfd38('0x12')){_0x3704d4[_0xfd38('0x13')]=moment[_0xfd38('0x14')]();_0x3704d4[_0xfd38('0x15')]=![];_0x3704d4[_0xfd38('0x16')]=![];if(_0x13a57e[_0xfd38('0x17')]===_0xfd38('0x18')||_0x13a57e[_0xfd38('0x17')]===_0xfd38('0x19')){_0x3704d4[_0xfd38('0x1a')]=_0x13a57e['id'];}else if(_0x13a57e[_0xfd38('0x17')]===_0xfd38('0x1b')){_0x3704d4[_0xfd38('0x1c')]=_0x13a57e['id'];}}else if(_0x3c8cdc[_0xfd38('0x11')]===_0xfd38('0x1d')){if(_0x13a57e[_0xfd38('0x17')]===_0xfd38('0x18')){_0x3704d4[_0xfd38('0x1e')]=_0x13a57e['id'];}else if(_0x13a57e[_0xfd38('0x17')]===_0xfd38('0x1b')){_0x3704d4[_0xfd38('0x1f')]=_0x13a57e['id'];}else if(_0x13a57e[_0xfd38('0x17')]==='lead'&&_0x3c8cdc[_0xfd38('0x20')]){_0x3704d4[_0x3c8cdc[_0xfd38('0x20')]]=_0x13a57e['id'];}else{logger[_0xfd38('0x21')]('Association\x20between\x20Case\x20and\x20Lead\x20skipped');}}}return _0x5c3b56[_0xfd38('0x22')](_0x3c8cdc['ticketType'])[_0xfd38('0x23')](_0x3704d4);}function getUser(_0x7f4a11,_0x273f81,_0x359314){if(!_['isNil'](_0x273f81)&&intUtil[_0xfd38('0x24')](_0x273f81)){var _0x5391bd={'Email':_0x273f81};var _0x5c5643={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x359314['sobject']('User')[_0xfd38('0x25')](_0x5391bd,_0x5c5643)[_0xfd38('0x26')]()[_0xfd38('0x27')](function(_0x3dee58){if(_0x3dee58['length']){var _0x58bf5b=_[_0xfd38('0x25')](_0x3dee58,function(_0x2e0ea7){return _0x2e0ea7[_0xfd38('0x28')]===_0x273f81;});if(_0x58bf5b){logger[_0xfd38('0x21')]('Agent\x20%s\x20found.',_0x273f81);return BPromise[_0xfd38('0x29')]({'id':_0x58bf5b['Id'],'name':_0x58bf5b[_0xfd38('0x2a')]});}}else{logger[_0xfd38('0x21')](_0xfd38('0x2b'),_0x273f81);return _0x359314[_0xfd38('0x2c')]()[_0xfd38('0x27')](function(_0x56e650){return BPromise[_0xfd38('0x29')]({'id':_0x56e650[_0xfd38('0x2d')],'name':_0x56e650[_0xfd38('0x2e')]});});}});}else{logger['info'](_0xfd38('0x2b'),_0x273f81);return _0x359314['identity']()[_0xfd38('0x27')](function(_0x491729){return BPromise[_0xfd38('0x29')]({'id':_0x491729[_0xfd38('0x2d')],'name':_0x491729[_0xfd38('0x2e')]});});}}function getEndUser(_0x5d689f,_0x5157d0,_0x131b28,_0x24c9fe,_0xe87328){var _0xbcc96d={'$or':{'Phone':_0x24c9fe}};var _0x5dd37b={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()[_0xfd38('0x27')](function(){logger['info'](_0xfd38('0x2f'),_0x24c9fe,_0x5157d0['moduleSearch']);switch(_0x5157d0['moduleSearch']){case'contact_lead':var _0x4c656a=_[_0xfd38('0x30')](_0xbcc96d);if(_0x5157d0[_0xfd38('0x31')]){var _0x5cb156={};_0x5cb156[_0x5157d0[_0xfd38('0x31')]]=_0x24c9fe;_[_0xfd38('0x32')](_0x4c656a['$or'],_0x5cb156);}return _0xe87328[_0xfd38('0x22')]('Contact')['find'](_0x4c656a,_0x5dd37b)[_0xfd38('0x26')]()[_0xfd38('0x27')](function(_0x3cbfff){if(_0x3cbfff&&_0x3cbfff[_0xfd38('0x33')]){return _0x3cbfff;}else{var _0x814153=_[_0xfd38('0x30')](_0xbcc96d);if(_0x5157d0['additionalSearchLead']){var _0x32e9a2={};_0x32e9a2[_0x5157d0[_0xfd38('0x34')]]=_0x24c9fe;_['merge'](_0x814153[_0xfd38('0x35')],_0x32e9a2);}return _0xe87328['sobject'](_0xfd38('0x36'))[_0xfd38('0x25')](_0x814153,_0x5dd37b);}});case _0xfd38('0x37'):var _0x107dc6=_['cloneDeep'](_0xbcc96d);if(_0x5157d0[_0xfd38('0x38')]){var _0x5cb156={};_0x5cb156[_0x5157d0[_0xfd38('0x38')]]=_0x24c9fe;_[_0xfd38('0x32')](_0x107dc6[_0xfd38('0x35')],_0x5cb156);}return _0xe87328[_0xfd38('0x22')]('Account')[_0xfd38('0x25')](_0x107dc6,_0x5dd37b)[_0xfd38('0x26')]()[_0xfd38('0x27')](function(_0x5f062c){if(_0x5f062c&&_0x5f062c[_0xfd38('0x33')]){return _0x5f062c;}else{var _0x22ed6a=_[_0xfd38('0x30')](_0xbcc96d);if(_0x5157d0[_0xfd38('0x31')]){var _0x3b85a6={};_0x3b85a6[_0x5157d0['additionalSearchContact']]=_0x24c9fe;_['merge'](_0x22ed6a[_0xfd38('0x35')],_0x3b85a6);}return _0xe87328['sobject']('Contact')[_0xfd38('0x25')](_0x22ed6a,_0x5dd37b)['then'](function(_0x40fb54){if(_0x40fb54&&_0x40fb54['length']){return _0x40fb54;}else{var _0x4ce836=_[_0xfd38('0x30')](_0xbcc96d);if(_0x5157d0[_0xfd38('0x34')]){var _0x51bfb2={};_0x51bfb2[_0x5157d0['additionalSearchLead']]=_0x24c9fe;_['merge'](_0x4ce836[_0xfd38('0x35')],_0x51bfb2);}return _0xe87328[_0xfd38('0x22')](_0xfd38('0x36'))[_0xfd38('0x25')](_0x4ce836,_0x5dd37b);}});}});case _0xfd38('0x18'):var _0x4c656a=_[_0xfd38('0x30')](_0xbcc96d);if(_0x5157d0[_0xfd38('0x31')]){var _0x5cb156={};_0x5cb156[_0x5157d0[_0xfd38('0x31')]]=_0x24c9fe;_[_0xfd38('0x32')](_0x4c656a[_0xfd38('0x35')],_0x5cb156);}return _0xe87328[_0xfd38('0x22')](_0xfd38('0x39'))[_0xfd38('0x25')](_0x4c656a,_0x5dd37b)[_0xfd38('0x26')]();case'lead':var _0x1c53b2=_[_0xfd38('0x30')](_0xbcc96d);if(_0x5157d0[_0xfd38('0x34')]){var _0x5cb156={};_0x5cb156[_0x5157d0['additionalSearchLead']]=_0x24c9fe;_[_0xfd38('0x32')](_0x1c53b2[_0xfd38('0x35')],_0x5cb156);}return _0xe87328[_0xfd38('0x22')](_0xfd38('0x36'))[_0xfd38('0x25')](_0x1c53b2,_0x5dd37b);case _0xfd38('0x1b'):var _0x107dc6=_[_0xfd38('0x30')](_0xbcc96d);if(_0x5157d0[_0xfd38('0x38')]){var _0x5cb156={};_0x5cb156[_0x5157d0[_0xfd38('0x38')]]=_0x24c9fe;_[_0xfd38('0x32')](_0x107dc6[_0xfd38('0x35')],_0x5cb156);}return _0xe87328[_0xfd38('0x22')]('Account')[_0xfd38('0x25')](_0x107dc6,_0x5dd37b);default:return null;}})['then'](function(_0x5e9ec0){if(_0x5e9ec0&&_0x5e9ec0[_0xfd38('0x33')]){var _0x56a0a3=_[_0xfd38('0x3a')](_0x5e9ec0);if(_0x56a0a3){return BPromise[_0xfd38('0x29')]({'id':_0x56a0a3['Id'],'name':_0x56a0a3[_0xfd38('0x2a')],'phone':_0x56a0a3[_0xfd38('0x3b')],'endUserType':_0x56a0a3[_0xfd38('0x3c')][_0xfd38('0x3d')][_0xfd38('0x3e')]()});}}})[_0xfd38('0x27')](function(_0x28d44e){if(_0x28d44e){logger[_0xfd38('0x21')](_0xfd38('0x3f'),_0x28d44e[_0xfd38('0x17')],_0x24c9fe);return BPromise[_0xfd38('0x29')](_0x28d44e);}else{logger['info']('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0x24c9fe);var _0xfbe339={'Phone':_0x24c9fe};if(_0x5157d0[_0xfd38('0x40')]){if(_0x5157d0[_0xfd38('0x40')]===_0xfd38('0x18')){logger['info'](_0xfd38('0x41'),_0x24c9fe,_0x5157d0[_0xfd38('0x40')]);_0xfbe339[_0xfd38('0x42')]=_0x131b28!==_0xfd38('0x43')?_0x131b28:util[_0xfd38('0x44')](_0xfd38('0x45'),_0x24c9fe);}else if(_0x5157d0['moduleCreate']===_0xfd38('0x19')){logger[_0xfd38('0x21')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x24c9fe,_0x5157d0['moduleCreate']);_0xfbe339[_0xfd38('0x42')]=_0x131b28!==_0xfd38('0x43')?_0x131b28:util[_0xfd38('0x44')](_0xfd38('0x45'),_0x24c9fe);_0xfbe339[_0xfd38('0x46')]=_0xfd38('0x47');}else if(_0x5157d0['moduleCreate']===_0xfd38('0x1b')){logger[_0xfd38('0x21')](_0xfd38('0x41'),_0x24c9fe,_0x5157d0['moduleCreate']);_0xfbe339[_0xfd38('0x2a')]=_0x131b28!==_0xfd38('0x43')?_0x131b28:util['format']('Caller\x20-\x20%s',_0x24c9fe);}else{return null;}}return _0xe87328['sobject'](_[_0xfd38('0x48')](_0x5157d0[_0xfd38('0x40')]))[_0xfd38('0x23')](_0xfbe339)['then'](function(_0x34920c){return BPromise[_0xfd38('0x29')]({'id':_0x34920c['id'],'endUserType':_0x5157d0['moduleCreate']});});}});}function getCustomFields(_0x279073,_0x488e15){var _0x2a0501={};if(_0x279073[_0xfd38('0x33')]>0x0){_[_0xfd38('0x49')](_0x279073,function(_0x917a51){if(_[_0xfd38('0x4a')]([_0xfd38('0x4b'),_0xfd38('0x4c')],_0x917a51[_0xfd38('0x3d')])&&_0x917a51[_0xfd38('0x4d')]){_0x2a0501[_0x917a51[_0xfd38('0x4d')]]=_0x917a51[_0xfd38('0x4e')][_0xfd38('0x4f')]();}else if(_0x917a51[_0xfd38('0x3d')]===_0xfd38('0x50')&&_0x917a51[_0xfd38('0x51')]&&_0x917a51[_0xfd38('0x4d')]){_0x488e15[_0x917a51[_0xfd38('0x51')]]&&(_0x2a0501[_0x917a51['idField']]=_0x488e15[_0x917a51[_0xfd38('0x51')]][_0xfd38('0x4f')]());}else if(_0x917a51[_0xfd38('0x3d')]===_0xfd38('0x52')&&_0x917a51[_0xfd38('0x53')]&&_0x917a51[_0xfd38('0x53')][_0xfd38('0x54')]&&_0x917a51[_0xfd38('0x4d')]){_0x488e15[_0x917a51['Variable']['name'][_0xfd38('0x3e')]()]&&(_0x2a0501[_0x917a51['idField']]=_0x488e15[_0x917a51[_0xfd38('0x53')][_0xfd38('0x54')]['toLowerCase']()][_0xfd38('0x4f')]());}});}return _0x2a0501;}function getConnection(_0x32a523){var _0x4da1bf=_0x32a523['password'][_0xfd38('0x55')](_0x32a523[_0xfd38('0x56')]);var _0x235ff7=new jsforce[(_0xfd38('0x57'))]({'oauth2':{'loginUrl':_0x32a523[_0xfd38('0x58')]||_0xfd38('0x59'),'clientId':_0x32a523[_0xfd38('0x5a')],'clientSecret':_0x32a523[_0xfd38('0x5b')]}});return _0x235ff7[_0xfd38('0x5c')](_0x32a523['username'],_0x4da1bf)[_0xfd38('0x27')](function(){logger['info'](_0xfd38('0x5d'));return _0x235ff7;});}exports[_0xfd38('0x5e')]=function(_0x3fb76c,_0x4f0fd0,_0x2e5ff2,_0x542af8,_0x354e56,_0x3d0e2d){var _0xc7b7e9,_0x5a26fd,_0x2233f7,_0x7d7568;_0x3d0e2d[_0xfd38('0x5f')]=intUtil['stripTrailingSlash'](_0x3d0e2d[_0xfd38('0x5f')]);_0x3d0e2d[_0xfd38('0x58')]=intUtil[_0xfd38('0x60')](_0x3d0e2d[_0xfd38('0x58')]);if(_0x354e56&&_0x354e56[_0xfd38('0x61')]){logger[_0xfd38('0x21')](_0xfd38('0x62'),_0xfd38('0x63'));_0x4f0fd0['recordingURL']=util[_0xfd38('0x44')](_0xfd38('0x64'),_0x3d0e2d[_0xfd38('0x5f')],_0x4f0fd0[_0xfd38('0x65')],md5(_0x4f0fd0['uniqueid']));}else{_0x4f0fd0[_0xfd38('0x66')]='';}return getConnection(_0x3d0e2d)['then'](function(_0x21e0c2){_0x7d7568=_0x21e0c2;return getUser(_0x3d0e2d,_0x542af8[_0xfd38('0x67')],_0x7d7568);})[_0xfd38('0x27')](function(_0x2303d8){_0xc7b7e9=_0x2303d8;return getEndUser(_0x3d0e2d,_0x2e5ff2,_0x4f0fd0[_0xfd38('0x68')],_0x4f0fd0[_0xfd38('0x69')],_0x7d7568);})[_0xfd38('0x27')](function(_0x35ed79){_0x5a26fd=_0x35ed79;return getTicket(_0x3d0e2d,_0xc7b7e9,_0x5a26fd,_0x2e5ff2,_0x4f0fd0,_0x2e5ff2['Fields'],_0x7d7568,_0xfd38('0x5e'));})[_0xfd38('0x27')](function(_0x13673b){_0x2233f7=_0x13673b;logger[_0xfd38('0x21')](_0xfd38('0x6a'),_0x2233f7['id']);logger[_0xfd38('0x21')](_0xfd38('0x6b'),_0x2233f7['id'],_0x542af8[_0xfd38('0x54')],_0x3d0e2d['type']);switch(_0x3d0e2d[_0xfd38('0x3d')]){case'integrationTab':emit(util['format']('user:%s',_0x542af8[_0xfd38('0x54')]),_0xfd38('0x6c'),{'recordId':_0x2233f7['id']});break;case _0xfd38('0x6d'):emit(util['format']('user:%s',_0x542af8[_0xfd38('0x54')]),_0xfd38('0x6e'),{'uri':util['format'](_0xfd38('0x6f'),_0x7d7568[_0xfd38('0x70')],_0x2233f7['id'])});break;default:logger[_0xfd38('0x71')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})[_0xfd38('0x72')](function(_0x35db86){logger['error'](_0xfd38('0x62'),_0x35db86);});};exports[_0xfd38('0x73')]=function(_0x5bbab1,_0x2223f1,_0x4e1399,_0x4b9df9,_0x50b647,_0x159ed5,_0x4136ae){var _0x494cbd,_0x4c2b15,_0x10de54,_0x1710e5;_0x159ed5[_0xfd38('0x5f')]=intUtil[_0xfd38('0x60')](_0x159ed5[_0xfd38('0x5f')]);_0x159ed5[_0xfd38('0x58')]=intUtil[_0xfd38('0x60')](_0x159ed5[_0xfd38('0x58')]);if(_0x4136ae&&_0x4136ae[_0xfd38('0x74')]&&_0x4136ae[_0xfd38('0x74')]!=='none'){logger[_0xfd38('0x21')](_0xfd38('0x75'),_0xfd38('0x63'));_0x2223f1['recordingURL']=util[_0xfd38('0x44')](_0xfd38('0x64'),_0x159ed5[_0xfd38('0x5f')],_0x2223f1[_0xfd38('0x65')],md5(_0x2223f1[_0xfd38('0x65')]));}return getConnection(_0x159ed5)['then'](function(_0x116105){_0x1710e5=_0x116105;return getUser(_0x159ed5,_0x4b9df9[_0xfd38('0x67')],_0x1710e5);})['then'](function(_0x160d40){_0x494cbd=_0x160d40;return getEndUser(_0x159ed5,_0x4e1399,_0x2223f1['destcalleridname'],_0x2223f1['destcalleridnum'],_0x1710e5);})[_0xfd38('0x27')](function(_0x3faed0){_0x4c2b15=_0x3faed0;return getTicket(_0x159ed5,_0x494cbd,_0x4c2b15,_0x4e1399,_0x2223f1,_0x4e1399[_0xfd38('0x76')],_0x1710e5,'outbound');})['then'](function(_0x4a0963){_0x10de54=_0x4a0963;logger['info'](_0xfd38('0x77'),_0x10de54['id']);logger['info']('[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x10de54['id'],_0x4b9df9['name'],_0x159ed5[_0xfd38('0x3d')]);switch(_0x159ed5[_0xfd38('0x3d')]){case _0xfd38('0x78'):emit(util[_0xfd38('0x44')](_0xfd38('0x79'),_0x4b9df9[_0xfd38('0x54')]),_0xfd38('0x6c'),{'recordId':_0x10de54['id']});break;case _0xfd38('0x6d'):emit(util[_0xfd38('0x44')](_0xfd38('0x79'),_0x4b9df9[_0xfd38('0x54')]),_0xfd38('0x6e'),{'uri':util[_0xfd38('0x44')](_0xfd38('0x6f'),_0x1710e5['instanceUrl'],_0x10de54['id'])});break;default:logger[_0xfd38('0x71')](_0xfd38('0x75'),_0xfd38('0x7a'));}})['catch'](function(_0x4f8548){logger[_0xfd38('0x71')]('[OUTBOUND]',_0x4f8548);});};exports[_0xfd38('0x7b')]=function(_0x34c72d,_0x4d574f,_0x123b60,_0x1fb06a,_0x34e3d4,_0x53adce){var _0x4f475b,_0x4d6435,_0x54ba87,_0x440712;_0x53adce[_0xfd38('0x5f')]=intUtil[_0xfd38('0x60')](_0x53adce[_0xfd38('0x5f')]);_0x53adce[_0xfd38('0x58')]=intUtil[_0xfd38('0x60')](_0x53adce[_0xfd38('0x58')]);if(_0x34e3d4&&_0x34e3d4[_0xfd38('0x61')]){logger[_0xfd38('0x21')]('['+_0x4d574f['lastevent'][_0xfd38('0x7c')]()+']',_0xfd38('0x63'));_0x4d574f[_0xfd38('0x66')]=util[_0xfd38('0x44')](_0xfd38('0x64'),_0x53adce['serverUrl'],_0x4d574f[_0xfd38('0x65')],md5(_0x4d574f['uniqueid']));}else{_0x4d574f[_0xfd38('0x66')]='';}return getConnection(_0x53adce)['then'](function(_0x3ae8d2){_0x440712=_0x3ae8d2;if(!_[_0xfd38('0x7d')](_0x1fb06a)){return getUser(_0x53adce,_0x1fb06a[_0xfd38('0x54')],_0x440712);}else{return getUser(_0x53adce,null,_0x440712);}})[_0xfd38('0x27')](function(_0x4c7062){_0x4f475b=_0x4c7062;return getEndUser(_0x53adce,_0x123b60,_0x4d574f[_0xfd38('0x68')],_0x4d574f[_0xfd38('0x69')],_0x440712);})[_0xfd38('0x27')](function(_0x39ede3){_0x4d6435=_0x39ede3;return getTicket(_0x53adce,_0x4f475b,_0x4d6435,_0x123b60,_0x4d574f,_0x123b60[_0xfd38('0x76')],_0x440712);})[_0xfd38('0x27')](function(_0x29a6be){_0x54ba87=_0x29a6be;logger['info']('['+_0x4d574f[_0xfd38('0x7e')][_0xfd38('0x7c')]()+_0xfd38('0x7f'),_0x54ba87['id']);logger[_0xfd38('0x21')]('['+_0x4d574f[_0xfd38('0x7e')][_0xfd38('0x7c')]()+_0xfd38('0x80'),_0x53adce[_0xfd38('0x3d')]);})[_0xfd38('0x72')](function(_0x3bda5a){logger[_0xfd38('0x71')]('['+_0x4d574f[_0xfd38('0x7e')][_0xfd38('0x7c')]()+']',_0x3bda5a);});};
\ No newline at end of file
+var _0x13a5=['Caller\x20-\x20%s','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','<unknown>','forEach','includes','string','picklist','idField','content','toString','variable','variableName','customVariable','Variable','name','password','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','calleridnum','Fields','integrationTab','user:%s','trigger:salesforce:display','newTab','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','[QUEUE]','outbound','recordingFormat','none','[OUTBOUND]','email','destcalleridname','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','unmanaged','lastevent','toUpperCase',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','request-promise','moment','md5','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','localhost','socket.io-emitter','emit','getString','Subjects','Descriptions','Task','ActivityDate','utc','IsReminderSet','IsRecurrence','endUserType','contact','lead','WhoId','account','Case','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','ticketType','create','validateEmail','execute','then','length','find','Email','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','additionalSearchContact','merge','$or','cloneDeep','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','Account','Contact','first','type','toLowerCase','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','LastName','format'];(function(_0x44574b,_0x4662ab){var _0x1a977f=function(_0x2e06b3){while(--_0x2e06b3){_0x44574b['push'](_0x44574b['shift']());}};_0x1a977f(++_0x4662ab);}(_0x13a5,0x1bf));var _0x513a=function(_0x2c7779,_0xf70917){_0x2c7779=_0x2c7779-0x0;var _0x2f3eb2=_0x13a5[_0x2c7779];return _0x2f3eb2;};'use strict';var _=require('lodash');var rp=require(_0x513a('0x0'));var moment=require(_0x513a('0x1'));var BPromise=require('bluebird');var md5=require(_0x513a('0x2'));var jsforce=require(_0x513a('0x3'));var util=require(_0x513a('0x4'));var Redis=require(_0x513a('0x5'));var intUtil=require(_0x513a('0x6'));var config=require(_0x513a('0x7'));var logger=require(_0x513a('0x8'))(_0x513a('0x9'));config[_0x513a('0xa')]=_[_0x513a('0xb')](config['redis'],{'host':_0x513a('0xc'),'port':0x18eb});var io=require(_0x513a('0xd'))(new Redis(config[_0x513a('0xa')]));function emit(_0x4d9678,_0x2975aa,_0x6e9097){io['to'](_0x4d9678)[_0x513a('0xe')](_0x2975aa,_0x6e9097);}function getTicket(_0x1b6a5b,_0xa24e72,_0x3747bb,_0x4c259e,_0x65a0f3,_0x5d92d2,_0x5341e7,_0xe2fcc){var _0x517204=Object['assign']({},{'OwnerId':_0xa24e72['id'],'Subject':intUtil[_0x513a('0xf')](_0x4c259e[_0x513a('0x10')],_0x65a0f3,'\x20'),'Description':intUtil[_0x513a('0xf')](_0x4c259e[_0x513a('0x11')],_0x65a0f3,'\x0a')},getCustomFields(_0x5d92d2,_0x65a0f3));if(_0x3747bb){if(_0x4c259e['ticketType']===_0x513a('0x12')){_0x517204[_0x513a('0x13')]=moment[_0x513a('0x14')]();_0x517204[_0x513a('0x15')]=![];_0x517204[_0x513a('0x16')]=![];if(_0x3747bb[_0x513a('0x17')]===_0x513a('0x18')||_0x3747bb[_0x513a('0x17')]===_0x513a('0x19')){_0x517204[_0x513a('0x1a')]=_0x3747bb['id'];}else if(_0x3747bb[_0x513a('0x17')]===_0x513a('0x1b')){_0x517204['WhatId']=_0x3747bb['id'];}}else if(_0x4c259e['ticketType']===_0x513a('0x1c')){if(_0x3747bb[_0x513a('0x17')]===_0x513a('0x18')){_0x517204['ContactId']=_0x3747bb['id'];}else if(_0x3747bb['endUserType']===_0x513a('0x1b')){_0x517204[_0x513a('0x1d')]=_0x3747bb['id'];}else if(_0x3747bb['endUserType']===_0x513a('0x19')&&_0x4c259e['leadId']){_0x517204[_0x4c259e[_0x513a('0x1e')]]=_0x3747bb['id'];}else{logger[_0x513a('0x1f')](_0x513a('0x20'));}}}return _0x5341e7[_0x513a('0x21')](_0x4c259e[_0x513a('0x22')])[_0x513a('0x23')](_0x517204);}function getUser(_0x400022,_0xcb1f0c,_0x423cda){if(!_['isNil'](_0xcb1f0c)&&intUtil[_0x513a('0x24')](_0xcb1f0c)){var _0x24f0c8={'Email':_0xcb1f0c};var _0x4c760c={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x423cda[_0x513a('0x21')]('User')['find'](_0x24f0c8,_0x4c760c)[_0x513a('0x25')]()[_0x513a('0x26')](function(_0x3bac0b){if(_0x3bac0b[_0x513a('0x27')]){var _0x149777=_[_0x513a('0x28')](_0x3bac0b,function(_0x35c4ce){return _0x35c4ce[_0x513a('0x29')]===_0xcb1f0c;});if(_0x149777){logger[_0x513a('0x1f')](_0x513a('0x2a'),_0xcb1f0c);return BPromise[_0x513a('0x2b')]({'id':_0x149777['Id'],'name':_0x149777[_0x513a('0x2c')]});}}else{logger[_0x513a('0x1f')](_0x513a('0x2d'),_0xcb1f0c);return _0x423cda[_0x513a('0x2e')]()[_0x513a('0x26')](function(_0x23a87f){return BPromise[_0x513a('0x2b')]({'id':_0x23a87f[_0x513a('0x2f')],'name':_0x23a87f[_0x513a('0x30')]});});}});}else{logger[_0x513a('0x1f')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0xcb1f0c);return _0x423cda['identity']()[_0x513a('0x26')](function(_0x128c0d){return BPromise[_0x513a('0x2b')]({'id':_0x128c0d[_0x513a('0x2f')],'name':_0x128c0d[_0x513a('0x30')]});});}}function getEndUser(_0x2db90b,_0x3ead86,_0x1c1d49,_0x379003,_0x561e6a){var _0x45195d={'$or':{'Phone':_0x379003}};var _0x203e64={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x513a('0x2b')]()[_0x513a('0x26')](function(){logger[_0x513a('0x1f')](_0x513a('0x31'),_0x379003,_0x3ead86['moduleSearch']);switch(_0x3ead86[_0x513a('0x32')]){case _0x513a('0x33'):var _0x429c9d=_['cloneDeep'](_0x45195d);if(_0x3ead86[_0x513a('0x34')]){var _0x4c0df4={};_0x4c0df4[_0x3ead86[_0x513a('0x34')]]=_0x379003;_[_0x513a('0x35')](_0x429c9d[_0x513a('0x36')],_0x4c0df4);}return _0x561e6a['sobject']('Contact')[_0x513a('0x28')](_0x429c9d,_0x203e64)[_0x513a('0x25')]()['then'](function(_0xc918b5){if(_0xc918b5&&_0xc918b5['length']){return _0xc918b5;}else{var _0x1789cc=_[_0x513a('0x37')](_0x45195d);if(_0x3ead86[_0x513a('0x38')]){var _0x456d97={};_0x456d97[_0x3ead86['additionalSearchLead']]=_0x379003;_[_0x513a('0x35')](_0x1789cc[_0x513a('0x36')],_0x456d97);}return _0x561e6a['sobject'](_0x513a('0x39'))[_0x513a('0x28')](_0x1789cc,_0x203e64);}});case _0x513a('0x3a'):var _0x288069=_['cloneDeep'](_0x45195d);if(_0x3ead86[_0x513a('0x3b')]){var _0x4c0df4={};_0x4c0df4[_0x3ead86[_0x513a('0x3b')]]=_0x379003;_[_0x513a('0x35')](_0x288069[_0x513a('0x36')],_0x4c0df4);}return _0x561e6a[_0x513a('0x21')](_0x513a('0x3c'))[_0x513a('0x28')](_0x288069,_0x203e64)['execute']()[_0x513a('0x26')](function(_0x317211){if(_0x317211&&_0x317211[_0x513a('0x27')]){return _0x317211;}else{var _0x2666d7=_['cloneDeep'](_0x45195d);if(_0x3ead86['additionalSearchContact']){var _0x3a992b={};_0x3a992b[_0x3ead86['additionalSearchContact']]=_0x379003;_[_0x513a('0x35')](_0x2666d7[_0x513a('0x36')],_0x3a992b);}return _0x561e6a['sobject']('Contact')['find'](_0x2666d7,_0x203e64)[_0x513a('0x26')](function(_0x26d9fd){if(_0x26d9fd&&_0x26d9fd['length']){return _0x26d9fd;}else{var _0x79deba=_['cloneDeep'](_0x45195d);if(_0x3ead86[_0x513a('0x38')]){var _0x167d7c={};_0x167d7c[_0x3ead86[_0x513a('0x38')]]=_0x379003;_[_0x513a('0x35')](_0x79deba[_0x513a('0x36')],_0x167d7c);}return _0x561e6a['sobject'](_0x513a('0x39'))[_0x513a('0x28')](_0x79deba,_0x203e64);}});}});case _0x513a('0x18'):var _0x429c9d=_['cloneDeep'](_0x45195d);if(_0x3ead86[_0x513a('0x34')]){var _0x4c0df4={};_0x4c0df4[_0x3ead86[_0x513a('0x34')]]=_0x379003;_[_0x513a('0x35')](_0x429c9d[_0x513a('0x36')],_0x4c0df4);}return _0x561e6a[_0x513a('0x21')](_0x513a('0x3d'))[_0x513a('0x28')](_0x429c9d,_0x203e64)[_0x513a('0x25')]();case _0x513a('0x19'):var _0x48f40a=_[_0x513a('0x37')](_0x45195d);if(_0x3ead86[_0x513a('0x38')]){var _0x4c0df4={};_0x4c0df4[_0x3ead86[_0x513a('0x38')]]=_0x379003;_[_0x513a('0x35')](_0x48f40a[_0x513a('0x36')],_0x4c0df4);}return _0x561e6a[_0x513a('0x21')](_0x513a('0x39'))[_0x513a('0x28')](_0x48f40a,_0x203e64);case _0x513a('0x1b'):var _0x288069=_['cloneDeep'](_0x45195d);if(_0x3ead86['additionalSearchAccount']){var _0x4c0df4={};_0x4c0df4[_0x3ead86['additionalSearchAccount']]=_0x379003;_['merge'](_0x288069[_0x513a('0x36')],_0x4c0df4);}return _0x561e6a[_0x513a('0x21')]('Account')[_0x513a('0x28')](_0x288069,_0x203e64);default:return null;}})['then'](function(_0x59ed76){if(_0x59ed76&&_0x59ed76[_0x513a('0x27')]){var _0x26b8fd=_[_0x513a('0x3e')](_0x59ed76);if(_0x26b8fd){return BPromise['resolve']({'id':_0x26b8fd['Id'],'name':_0x26b8fd[_0x513a('0x2c')],'phone':_0x26b8fd['Phone'],'endUserType':_0x26b8fd['attributes'][_0x513a('0x3f')][_0x513a('0x40')]()});}}})['then'](function(_0x43d2f7){if(_0x43d2f7){logger[_0x513a('0x1f')]('Enduser\x20(%s)\x20with\x20phone\x20%s\x20found',_0x43d2f7['endUserType'],_0x379003);return BPromise['resolve'](_0x43d2f7);}else{logger[_0x513a('0x1f')](_0x513a('0x41'),_0x379003);var _0x1ab0a1={'Phone':_0x379003};if(_0x3ead86['moduleCreate']){if(_0x3ead86[_0x513a('0x42')]===_0x513a('0x18')){logger[_0x513a('0x1f')]('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x379003,_0x3ead86[_0x513a('0x42')]);_0x1ab0a1[_0x513a('0x43')]=_0x1c1d49!=='<unknown>'?_0x1c1d49:util[_0x513a('0x44')](_0x513a('0x45'),_0x379003);}else if(_0x3ead86[_0x513a('0x42')]===_0x513a('0x19')){logger[_0x513a('0x1f')](_0x513a('0x46'),_0x379003,_0x3ead86[_0x513a('0x42')]);_0x1ab0a1[_0x513a('0x43')]=_0x1c1d49!=='<unknown>'?_0x1c1d49:util['format'](_0x513a('0x45'),_0x379003);_0x1ab0a1['Company']='No\x20Company';}else if(_0x3ead86[_0x513a('0x42')]===_0x513a('0x1b')){logger['info'](_0x513a('0x46'),_0x379003,_0x3ead86[_0x513a('0x42')]);_0x1ab0a1[_0x513a('0x2c')]=_0x1c1d49!==_0x513a('0x47')?_0x1c1d49:util[_0x513a('0x44')](_0x513a('0x45'),_0x379003);}else{return null;}}return _0x561e6a['sobject'](_['upperFirst'](_0x3ead86[_0x513a('0x42')]))[_0x513a('0x23')](_0x1ab0a1)[_0x513a('0x26')](function(_0x464936){return BPromise[_0x513a('0x2b')]({'id':_0x464936['id'],'endUserType':_0x3ead86[_0x513a('0x42')]});});}});}function getCustomFields(_0x36edae,_0x412d42){var _0x35fcca={};if(_0x36edae[_0x513a('0x27')]>0x0){_[_0x513a('0x48')](_0x36edae,function(_0x91ad38){if(_[_0x513a('0x49')]([_0x513a('0x4a'),_0x513a('0x4b')],_0x91ad38['type'])&&_0x91ad38[_0x513a('0x4c')]){_0x35fcca[_0x91ad38[_0x513a('0x4c')]]=_0x91ad38[_0x513a('0x4d')][_0x513a('0x4e')]();}else if(_0x91ad38[_0x513a('0x3f')]===_0x513a('0x4f')&&_0x91ad38[_0x513a('0x50')]&&_0x91ad38[_0x513a('0x4c')]){_0x412d42[_0x91ad38[_0x513a('0x50')]]&&(_0x35fcca[_0x91ad38['idField']]=_0x412d42[_0x91ad38[_0x513a('0x50')]]['toString']());}else if(_0x91ad38[_0x513a('0x3f')]===_0x513a('0x51')&&_0x91ad38[_0x513a('0x52')]&&_0x91ad38[_0x513a('0x52')][_0x513a('0x53')]&&_0x91ad38['idField']){_0x412d42[_0x91ad38[_0x513a('0x52')][_0x513a('0x53')][_0x513a('0x40')]()]&&(_0x35fcca[_0x91ad38[_0x513a('0x4c')]]=_0x412d42[_0x91ad38[_0x513a('0x52')]['name']['toLowerCase']()][_0x513a('0x4e')]());}});}return _0x35fcca;}function getConnection(_0x51262a){var _0x599de7=_0x51262a[_0x513a('0x54')][_0x513a('0x55')](_0x51262a[_0x513a('0x56')]);var _0x88aa9b=new jsforce[(_0x513a('0x57'))]({'oauth2':{'loginUrl':_0x51262a[_0x513a('0x58')]||_0x513a('0x59'),'clientId':_0x51262a[_0x513a('0x5a')],'clientSecret':_0x51262a[_0x513a('0x5b')]}});return _0x88aa9b[_0x513a('0x5c')](_0x51262a[_0x513a('0x5d')],_0x599de7)[_0x513a('0x26')](function(){logger[_0x513a('0x1f')](_0x513a('0x5e'));return _0x88aa9b;});}exports[_0x513a('0x5f')]=function(_0x17b520,_0x4d7bb0,_0x14c7e9,_0x3cc43d,_0x1f3590,_0x5b27b9){var _0x34c6fa,_0x808381,_0x140740,_0x8d8263;_0x5b27b9[_0x513a('0x60')]=intUtil['stripTrailingSlash'](_0x5b27b9[_0x513a('0x60')]);_0x5b27b9['remoteUri']=intUtil[_0x513a('0x61')](_0x5b27b9[_0x513a('0x58')]);if(_0x1f3590&&_0x1f3590[_0x513a('0x62')]){logger[_0x513a('0x1f')]('[QUEUE]',_0x513a('0x63'));_0x4d7bb0[_0x513a('0x64')]=util[_0x513a('0x44')](_0x513a('0x65'),_0x5b27b9['serverUrl'],_0x4d7bb0[_0x513a('0x66')],md5(_0x4d7bb0[_0x513a('0x66')]));}else{_0x4d7bb0[_0x513a('0x64')]='';}return getConnection(_0x5b27b9)[_0x513a('0x26')](function(_0x26ed7c){_0x8d8263=_0x26ed7c;return getUser(_0x5b27b9,_0x3cc43d['email'],_0x8d8263);})[_0x513a('0x26')](function(_0x159b55){_0x34c6fa=_0x159b55;return getEndUser(_0x5b27b9,_0x14c7e9,_0x4d7bb0[_0x513a('0x67')],_0x4d7bb0[_0x513a('0x68')],_0x8d8263);})[_0x513a('0x26')](function(_0x110a4a){_0x808381=_0x110a4a;return getTicket(_0x5b27b9,_0x34c6fa,_0x808381,_0x14c7e9,_0x4d7bb0,_0x14c7e9[_0x513a('0x69')],_0x8d8263,_0x513a('0x5f'));})['then'](function(_0x169e43){_0x140740=_0x169e43;logger['info']('[QUEUE]\x20Ticket\x20%s\x20created',_0x140740['id']);logger[_0x513a('0x1f')]('[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x140740['id'],_0x3cc43d[_0x513a('0x53')],_0x5b27b9['type']);switch(_0x5b27b9[_0x513a('0x3f')]){case _0x513a('0x6a'):emit(util['format'](_0x513a('0x6b'),_0x3cc43d['name']),_0x513a('0x6c'),{'recordId':_0x140740['id']});break;case _0x513a('0x6d'):emit(util[_0x513a('0x44')](_0x513a('0x6b'),_0x3cc43d[_0x513a('0x53')]),_0x513a('0x6e'),{'uri':util[_0x513a('0x44')](_0x513a('0x6f'),_0x8d8263[_0x513a('0x70')],_0x140740['id'])});break;default:logger[_0x513a('0x71')](_0x513a('0x72'));}})[_0x513a('0x73')](function(_0x56ac5e){logger[_0x513a('0x71')](_0x513a('0x74'),_0x56ac5e);});};exports[_0x513a('0x75')]=function(_0x510f81,_0x21b756,_0x2f700f,_0x2b8cd2,_0x560a27,_0x42d764,_0x44342b){var _0x569e8a,_0xfba4c4,_0x119703,_0x1bdcf0;_0x42d764[_0x513a('0x60')]=intUtil[_0x513a('0x61')](_0x42d764[_0x513a('0x60')]);_0x42d764['remoteUri']=intUtil[_0x513a('0x61')](_0x42d764[_0x513a('0x58')]);if(_0x44342b&&_0x44342b['recordingFormat']&&_0x44342b[_0x513a('0x76')]!==_0x513a('0x77')){logger[_0x513a('0x1f')](_0x513a('0x78'),_0x513a('0x63'));_0x21b756[_0x513a('0x64')]=util[_0x513a('0x44')](_0x513a('0x65'),_0x42d764['serverUrl'],_0x21b756[_0x513a('0x66')],md5(_0x21b756[_0x513a('0x66')]));}return getConnection(_0x42d764)[_0x513a('0x26')](function(_0x15a836){_0x1bdcf0=_0x15a836;return getUser(_0x42d764,_0x2b8cd2[_0x513a('0x79')],_0x1bdcf0);})[_0x513a('0x26')](function(_0x4d4083){_0x569e8a=_0x4d4083;return getEndUser(_0x42d764,_0x2f700f,_0x21b756[_0x513a('0x7a')],_0x21b756['destcalleridnum'],_0x1bdcf0);})[_0x513a('0x26')](function(_0x4c0993){_0xfba4c4=_0x4c0993;return getTicket(_0x42d764,_0x569e8a,_0xfba4c4,_0x2f700f,_0x21b756,_0x2f700f[_0x513a('0x69')],_0x1bdcf0,'outbound');})['then'](function(_0x26ffab){_0x119703=_0x26ffab;logger[_0x513a('0x1f')]('[OUTBOUND]\x20Ticket\x20%s\x20created.',_0x119703['id']);logger['info'](_0x513a('0x7b'),_0x119703['id'],_0x2b8cd2[_0x513a('0x53')],_0x42d764[_0x513a('0x3f')]);switch(_0x42d764[_0x513a('0x3f')]){case'integrationTab':emit(util[_0x513a('0x44')](_0x513a('0x6b'),_0x2b8cd2[_0x513a('0x53')]),'trigger:salesforce:display',{'recordId':_0x119703['id']});break;case _0x513a('0x6d'):emit(util[_0x513a('0x44')](_0x513a('0x6b'),_0x2b8cd2['name']),_0x513a('0x6e'),{'uri':util[_0x513a('0x44')](_0x513a('0x6f'),_0x1bdcf0[_0x513a('0x70')],_0x119703['id'])});break;default:logger['error'](_0x513a('0x78'),'Salesforce\x20account\x20type\x20not\x20recognized');}})[_0x513a('0x73')](function(_0x48ba7d){logger[_0x513a('0x71')]('[OUTBOUND]',_0x48ba7d);});};exports[_0x513a('0x7c')]=function(_0x49bd59,_0x2c7f06,_0x3b8d43,_0x45d5f2,_0x5a6bd0,_0x58fed8){var _0x53001d,_0x27114a,_0x16a9a6,_0x551f8d;_0x58fed8[_0x513a('0x60')]=intUtil[_0x513a('0x61')](_0x58fed8['serverUrl']);_0x58fed8[_0x513a('0x58')]=intUtil['stripTrailingSlash'](_0x58fed8[_0x513a('0x58')]);if(_0x5a6bd0&&_0x5a6bd0[_0x513a('0x62')]){logger[_0x513a('0x1f')]('['+_0x2c7f06[_0x513a('0x7d')][_0x513a('0x7e')]()+']',_0x513a('0x63'));_0x2c7f06[_0x513a('0x64')]=util[_0x513a('0x44')](_0x513a('0x65'),_0x58fed8[_0x513a('0x60')],_0x2c7f06[_0x513a('0x66')],md5(_0x2c7f06[_0x513a('0x66')]));}else{_0x2c7f06[_0x513a('0x64')]='';}return getConnection(_0x58fed8)[_0x513a('0x26')](function(_0x4da636){_0x551f8d=_0x4da636;if(!_['isNil'](_0x45d5f2)){return getUser(_0x58fed8,_0x45d5f2[_0x513a('0x53')],_0x551f8d);}else{return getUser(_0x58fed8,null,_0x551f8d);}})[_0x513a('0x26')](function(_0xc33ace){_0x53001d=_0xc33ace;return getEndUser(_0x58fed8,_0x3b8d43,_0x2c7f06['calleridname'],_0x2c7f06[_0x513a('0x68')],_0x551f8d);})[_0x513a('0x26')](function(_0x11d373){_0x27114a=_0x11d373;return getTicket(_0x58fed8,_0x53001d,_0x27114a,_0x3b8d43,_0x2c7f06,_0x3b8d43[_0x513a('0x69')],_0x551f8d);})[_0x513a('0x26')](function(_0xd3a531){_0x16a9a6=_0xd3a531;logger[_0x513a('0x1f')]('['+_0x2c7f06[_0x513a('0x7d')][_0x513a('0x7e')]()+_0x513a('0x7f'),_0x16a9a6['id']);logger['info']('['+_0x2c7f06[_0x513a('0x7d')][_0x513a('0x7e')]()+_0x513a('0x80'),_0x58fed8[_0x513a('0x3f')]);})[_0x513a('0x73')](function(_0x4758cd){logger[_0x513a('0x71')]('['+_0x2c7f06[_0x513a('0x7d')][_0x513a('0x7e')]()+']',_0x4758cd);});};
\ No newline at end of file
index ed6512a..af28117 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d5e=['serverUrl','stripTrailingSlash','%s/api/now/table/','isNil','email','calleridnum','callDirection','queue','unmanaged','outbound','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','[OUTBOUND]','recordingURL','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','inspect','bluebird','request-promise','md5','./util','../../../../config/environment','../../../../config/logger','servicenow','redis','defaults','localhost','then','result','length','adminId','sys_id','catch','error','toUpperCase','message','validateEmail','userEmail','GET','sys_user?sysparm_query=email%3D','info','],\x20getUser\x20entity','active','true','userId','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','POST','endUserNumber','user','System','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','endUserId','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','nameField','customField','toString','type','idField','toLowerCase','content','variable','variableName','customVariable','Variable','incident','assign','getString','Descriptions',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','push',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','Tags','map','name','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','format','trigger:browser:url','password','sysparm_limit=1','sysparm_display_value=true','remoteUri'];(function(_0x59103d,_0x203fea){var _0x3ba108=function(_0x47c609){while(--_0x47c609){_0x59103d['push'](_0x59103d['shift']());}};_0x3ba108(++_0x203fea);}(_0x4d5e,0x1ad));var _0xe4d5=function(_0x56e154,_0x3e904d){_0x56e154=_0x56e154-0x0;var _0x1db6cb=_0x4d5e[_0x56e154];return _0x1db6cb;};'use strict';var _=require('lodash');var Promise=require(_0xe4d5('0x0'));var rp=require(_0xe4d5('0x1'));var util=require('util');var md5=require(_0xe4d5('0x2'));var Redis=require('ioredis');var intUtil=require(_0xe4d5('0x3'));var config=require(_0xe4d5('0x4'));var logger=require(_0xe4d5('0x5'))(_0xe4d5('0x6'));config[_0xe4d5('0x7')]=_[_0xe4d5('0x8')](config[_0xe4d5('0x7')],{'host':_0xe4d5('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xe4d5('0x7')]));function getAdminUser(_0x1e1c38,_0x1e0f9b,_0x4ab16d,_0x308bde,_0x1e372e,_0x4a4412){return new Promise(function(_0x211811,_0x5703b5){var _0x43cdb8={'method':'GET','uri':_0x308bde+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x1e372e+'&'+_0x4a4412,'auth':_0x1e0f9b,'json':!![]};return rp(_0x43cdb8)[_0xe4d5('0xa')](function(_0x2e8adc){if(_0x2e8adc[_0xe4d5('0xb')][_0xe4d5('0xc')]>0x0){_0x4ab16d[_0xe4d5('0xd')]=_0x2e8adc[_0xe4d5('0xb')][0x0][_0xe4d5('0xe')];}logger['info']('['+[_0x1e1c38['toUpperCase']()]+'],\x20getAdminUser\x20crm',_0x4ab16d);_0x211811(_0x4ab16d);})[_0xe4d5('0xf')](function(_0x217116){logger[_0xe4d5('0x10')]('['+[_0x1e1c38[_0xe4d5('0x11')]()]+']',_0x217116[_0xe4d5('0x12')]);_0x5703b5(_0x217116['message']);});});}function getUser(_0x46139b,_0x5a0953,_0x4bf3f6,_0x1dca72,_0x59237b){return function(_0x5892a6){logger['info']('['+[_0x46139b[_0xe4d5('0x11')]()]+'],\x20getUser\x20input\x20crm',_0x5892a6);return new Promise(function(_0x3f69f1,_0x1f4c16){if(intUtil[_0xe4d5('0x13')](_0x5892a6[_0xe4d5('0x14')])){var _0x39231c={'method':_0xe4d5('0x15'),'uri':_0x4bf3f6+_0xe4d5('0x16')+_0x5892a6[_0xe4d5('0x14')]+'&'+_0x1dca72+'&'+_0x59237b,'auth':_0x5a0953,'json':!![]};logger[_0xe4d5('0x17')]('['+[_0x46139b['toUpperCase']()]+'],\x20getUser\x20rp\x20obj',_0x39231c);return rp(_0x39231c)[_0xe4d5('0xa')](function(_0x502458){logger[_0xe4d5('0x17')]('['+[_0x46139b[_0xe4d5('0x11')]()]+_0xe4d5('0x18'),_0x502458);if(_0x502458['result'][_0xe4d5('0xc')]>0x0&&String(_0x502458[_0xe4d5('0xb')][0x0][_0xe4d5('0x19')])===_0xe4d5('0x1a')){_0x5892a6[_0xe4d5('0x1b')]=_0x502458[_0xe4d5('0xb')][0x0][_0xe4d5('0xe')];}else{_0x5892a6[_0xe4d5('0x1b')]=_0x5892a6[_0xe4d5('0xd')];_0x5892a6['userEmail']=_0x5892a6[_0xe4d5('0x1c')];}logger['info']('['+[_0x46139b['toUpperCase']()]+_0xe4d5('0x1d'),_0x5892a6);_0x3f69f1(_0x5892a6);})[_0xe4d5('0xf')](function(_0x1c4fa6){logger[_0xe4d5('0x10')]('['+[_0x46139b[_0xe4d5('0x11')]()]+']',_0x1c4fa6['message']);_0x1f4c16(_0x1c4fa6[_0xe4d5('0x12')]);});}else{logger[_0xe4d5('0x17')]('['+[_0x46139b[_0xe4d5('0x11')]()]+_0xe4d5('0x1e'));_0x5892a6[_0xe4d5('0x1b')]=_0x5892a6[_0xe4d5('0xd')];_0x5892a6[_0xe4d5('0x14')]=_0x5892a6[_0xe4d5('0x1c')];_0x3f69f1(_0x5892a6);}});};}function createEndUser(_0x1eb65c,_0x40299a,_0xbcd0c,_0x4f1698,_0xf3701d){logger['info']('['+[_0x1eb65c['toUpperCase']()]+'],\x20createEndUser\x20input\x20crm',_0xbcd0c);return new Promise(function(_0x55b0d2,_0x4408b2){var _0x430249={'method':_0xe4d5('0x1f'),'uri':_0x4f1698+'sys_user?'+_0xf3701d,'body':{'user_name':_0xbcd0c[_0xe4d5('0x20')],'roles':_0xe4d5('0x21'),'first_name':_0xbcd0c[_0xe4d5('0x20')],'active':_0xe4d5('0x1a'),'date_format':_0xe4d5('0x22'),'phone':_0xbcd0c[_0xe4d5('0x20')]},'auth':_0x40299a,'json':!![]};return rp(_0x430249)[_0xe4d5('0xa')](function(_0x1254d6){logger[_0xe4d5('0x17')]('['+[_0x1eb65c[_0xe4d5('0x11')]()]+_0xe4d5('0x23'),_0x1254d6[_0xe4d5('0xb')]);_0xbcd0c['endUserId']=_0x1254d6[_0xe4d5('0xb')][_0xe4d5('0xe')];_0x55b0d2(_0xbcd0c);})[_0xe4d5('0xf')](function(_0x291f1d){logger[_0xe4d5('0x10')]('['+[_0x1eb65c['toUpperCase']()]+']',_0x291f1d[_0xe4d5('0x12')]);_0x4408b2(_0x291f1d[_0xe4d5('0x12')]);});});}function getEndUser(_0x5d0269,_0x90d943,_0x564b1d,_0x166ccb,_0x2730f4){return function(_0x50339e){logger[_0xe4d5('0x17')]('['+[_0x5d0269[_0xe4d5('0x11')]()]+_0xe4d5('0x24'),_0x50339e);return new Promise(function(_0x37c041,_0x499160){var _0x124f18={'method':_0xe4d5('0x15'),'uri':_0x564b1d+_0xe4d5('0x25')+_0x50339e[_0xe4d5('0x20')]+'&'+_0x166ccb+'&'+_0x2730f4,'auth':_0x90d943,'json':!![]};return rp(_0x124f18)[_0xe4d5('0xa')](function(_0x305307){if(_0x305307[_0xe4d5('0xb')]['length']>0x0){_0x50339e[_0xe4d5('0x26')]=_0x305307[_0xe4d5('0xb')][0x0][_0xe4d5('0xe')];logger[_0xe4d5('0x17')]('['+[_0x5d0269[_0xe4d5('0x11')]()]+_0xe4d5('0x27'),_0x50339e);_0x37c041(_0x50339e);}else{return createEndUser(_0x5d0269,_0x90d943,_0x50339e,_0x564b1d,_0x166ccb)[_0xe4d5('0xa')](function(_0x1417b5){logger[_0xe4d5('0x17')]('['+[_0x5d0269[_0xe4d5('0x11')]()]+_0xe4d5('0x28'),_0x1417b5);_0x37c041(_0x1417b5);});}})[_0xe4d5('0xf')](function(_0x35db03){logger[_0xe4d5('0x10')]('['+[_0x5d0269[_0xe4d5('0x11')]()]+']',_0x35db03['message']);_0x499160(_0x35db03[_0xe4d5('0x12')]);});});};}function getCustomFields(_0x2be959,_0x115a06){var _0xda217f={};if(_0x2be959[_0xe4d5('0xc')]>0x0){_[_0xe4d5('0x29')](_0x2be959,function(_0x2116aa){if(_[_0xe4d5('0x2a')]([_0xe4d5('0x2b'),_0xe4d5('0x2c')],_0x2116aa['type'])&&_0x2116aa[_0xe4d5('0x2d')]&&!_0x2116aa[_0xe4d5('0x2e')]){_0xda217f[_0x2116aa[_0xe4d5('0x2d')]['toLowerCase']()]=_0x2116aa['content'][_0xe4d5('0x2f')]();}else if(_['includes'](['string',_0xe4d5('0x2c')],_0x2116aa[_0xe4d5('0x30')])&&_0x2116aa[_0xe4d5('0x31')]&&_0x2116aa[_0xe4d5('0x2e')]){_0xda217f[_0x2116aa['idField'][_0xe4d5('0x32')]()]=_0x2116aa[_0xe4d5('0x33')][_0xe4d5('0x2f')]();}else if(_0x2116aa[_0xe4d5('0x30')]===_0xe4d5('0x34')&&_0x2116aa[_0xe4d5('0x35')]&&_0x2116aa['idField']&&_0x2116aa[_0xe4d5('0x2e')]){_0xda217f[_0x2116aa[_0xe4d5('0x31')][_0xe4d5('0x32')]()]=_0x115a06[_0x2116aa['variableName']][_0xe4d5('0x2f')]();}else if(_0x2116aa[_0xe4d5('0x30')]===_0xe4d5('0x36')&&_0x2116aa['Variable']&&_0x2116aa[_0xe4d5('0x37')]['name']&&_0x2116aa[_0xe4d5('0x31')]&&_0x2116aa[_0xe4d5('0x2e')]){_0xda217f[_0x2116aa[_0xe4d5('0x31')][_0xe4d5('0x32')]()]=_0x115a06[_0x2116aa[_0xe4d5('0x37')]['name']['toLowerCase']()][_0xe4d5('0x2f')]();}});}return _0xda217f;}function getTicket(_0x177bce,_0x4b8ea3,_0x22aad0,_0x1a64d5,_0x4be76a,_0x8093ea){return function(_0x5c12eb){logger[_0xe4d5('0x17')]('['+[_0x177bce[_0xe4d5('0x11')]()]+']\x20getTicket\x20input\x20crm',_0x5c12eb);return new Promise(function(_0x464ff9,_0x2215c9){var _0x564945=_0x177bce[_0xe4d5('0x32')]()==='outbound'?_0x5c12eb[_0xe4d5('0x1b')]:_0x5c12eb[_0xe4d5('0x26')];var _0xc1cbb4={'method':_0xe4d5('0x1f'),'uri':_0x22aad0+_0xe4d5('0x38')+'?'+_0x8093ea,'body':Object[_0xe4d5('0x39')]({},{'active':_0xe4d5('0x1a'),'caller_id':_0x564945,'assigned_to':_0x5c12eb['userId'],'short_description':intUtil[_0xe4d5('0x3a')](_0x1a64d5['Subjects'],_0x4be76a,'\x20'),'description':intUtil[_0xe4d5('0x3a')](_0x1a64d5[_0xe4d5('0x3b')],_0x4be76a,'\x0a')},getCustomFields(_0x1a64d5['Fields'],_0x4be76a)),'auth':_0x4b8ea3,'json':!![]};return rp(_0xc1cbb4)[_0xe4d5('0xa')](function(_0x4fcbb7){logger[_0xe4d5('0x17')]('['+[_0x177bce[_0xe4d5('0x11')]()]+_0xe4d5('0x3c'),_0x4fcbb7[_0xe4d5('0xb')]);_0x5c12eb[_0xe4d5('0x3d')]=_0x4fcbb7['result']['sys_id'];_0x5c12eb[_0xe4d5('0x3e')]=_0x4fcbb7[_0xe4d5('0xb')]['number'];logger[_0xe4d5('0x17')]('['+[_0x177bce[_0xe4d5('0x11')]()]+_0xe4d5('0x3f'),_0x5c12eb);_0x464ff9(_0x5c12eb);})[_0xe4d5('0xf')](function(_0x348eb1){logger['error']('['+[_0x177bce[_0xe4d5('0x11')]()]+']',_0x348eb1[_0xe4d5('0x12')]);_0x2215c9(_0x348eb1[_0xe4d5('0x12')]);});});};}function createRemoteTag(_0x36d610,_0xf24a11,_0x3a739a,_0x204132){return new Promise(function(_0x343051,_0x22f84a){var _0x30923d={'method':_0xe4d5('0x1f'),'uri':_0x3a739a+_0xe4d5('0x40')+'?'+_0x204132,'body':{'short_description':_0x36d610,'global':!![],'active':!![],'name':_0x36d610},'auth':_0xf24a11,'json':!![]};return rp(_0x30923d)[_0xe4d5('0xa')](function(_0x5b509c){var _0x210b0c=_0x5b509c[_0xe4d5('0xb')][_0xe4d5('0xe')];_0x343051(_0x210b0c);});});}function getRemoteTag(_0xca0f52,_0x5d15f1,_0xbba546,_0x3fc8e,_0x1f1f45){return new Promise(function(_0x52453d,_0x38176e){var _0x1cdc02={'method':'GET','uri':_0xbba546+_0xe4d5('0x40')+_0xe4d5('0x41')+_0xca0f52+'&'+_0x3fc8e,'auth':_0x5d15f1,'json':!![]};return rp(_0x1cdc02)[_0xe4d5('0xa')](function(_0x4825c9){if(_0x4825c9[_0xe4d5('0xb')][_0xe4d5('0xc')]>0x0){var _0x40e68e=_0x4825c9[_0xe4d5('0xb')][0x0][_0xe4d5('0xe')];_0x52453d(_0x40e68e);}else{return createRemoteTag(_0xca0f52,_0x5d15f1,_0xbba546,_0x3fc8e)['then'](function(_0x1d003a){_0x52453d(_0x1d003a);});}});});}function assignTagToIncident(_0x14ed0c,_0x3c691e,_0x4458d0,_0x4b6674,_0x11511a){return new Promise(function(_0x58142e,_0xfc491b){var _0x26dc22={'method':_0xe4d5('0x1f'),'uri':_0x4458d0+_0xe4d5('0x42')+'?'+_0x11511a,'body':{'label':_0x14ed0c,'table':'incident','id_type':'Incident','table_key':_0x4b6674['ticketId'],'title':'Incident\x20-\x20'+_0x4b6674[_0xe4d5('0x3e')],'id_display':_0x4b6674[_0xe4d5('0x3e')]},'auth':_0x3c691e,'json':!![]};return rp(_0x26dc22)[_0xe4d5('0xa')](function(_0x1d10ae){_0x58142e();})[_0xe4d5('0xf')](function(){_0x58142e();});});}function manageTags(_0x5fe943,_0xa593d9,_0x23da82,_0x5e4ab4,_0x17cf52,_0x44799f,_0x2287f1){return new Promise(function(_0x5b272a,_0x4bfe4d){var _0x21d204=[];_0xa593d9['forEach'](function(_0x3b6290){_0x21d204[_0xe4d5('0x43')](getRemoteTag(_0x3b6290,_0x23da82,_0x5e4ab4,_0x44799f,_0x2287f1));});return Promise['all'](_0x21d204)[_0xe4d5('0xa')](function(_0x3fa7ee){if(_0x3fa7ee[_0xe4d5('0xc')]){logger['info']('['+[_0x5fe943[_0xe4d5('0x11')]()]+_0xe4d5('0x44'),_0x3fa7ee);var _0x5712a8=[];_0x3fa7ee[_0xe4d5('0x29')](function(_0xe64ee4){_0x5712a8['push'](assignTagToIncident(_0xe64ee4,_0x23da82,_0x5e4ab4,_0x17cf52,_0x44799f));});return Promise['all'](_0x5712a8)[_0xe4d5('0xa')](function(){_0x5b272a();})['catch'](function(){_0x5b272a();});}else{_0x5b272a();}});});}function getTags(_0x246beb,_0x1e2e67,_0x1ec02d,_0x58fc21,_0x7ed088,_0x2c773c){return function(_0x29c5dc){return new Promise(function(_0x3cf30b,_0x448048){var _0x34d1bb=[];var _0x4a81cc=_0x58fc21[_0xe4d5('0x45')];if(_0x4a81cc&&_0x4a81cc[_0xe4d5('0xc')]>0x0){_0x34d1bb=_[_0xe4d5('0x46')](_0x4a81cc,_0xe4d5('0x47'));}if(_0x34d1bb[_0xe4d5('0xc')]>0x0){return manageTags(_0x246beb,_0x34d1bb,_0x1e2e67,_0x1ec02d,_0x29c5dc,_0x7ed088,_0x2c773c)[_0xe4d5('0xa')](function(){_0x3cf30b(_0x29c5dc);});}else{_0x3cf30b(_0x29c5dc);}});};}function emit(_0x5b6b5c,_0x5ccc6b,_0x4564e3){var _0x39aeca='%26sysparm_record_target%3Dincident'+_0xe4d5('0x48')+_0xe4d5('0x49')+_0xe4d5('0x4a');var _0x5b78bf={'uri':_0x5b6b5c+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x4564e3+_0x39aeca};io['to'](util[_0xe4d5('0x4b')]('user:%s',_0x5ccc6b))['emit'](_0xe4d5('0x4c'),_0x5b78bf);}exports['cs']=function(_0x57480a,_0x5c621d,_0x2292cd,_0x173833,_0x453a95,_0x253201,_0xbdff2c,_0x389b50){var _0x2abfa0={};var _0x5e33da={'user':_0x253201['username'],'pass':_0x253201[_0xe4d5('0x4d')]};var _0x270503=_0xe4d5('0x4e');var _0x52715f=_0xe4d5('0x4f');_0x253201[_0xe4d5('0x50')]=intUtil['stripTrailingSlash'](_0x253201[_0xe4d5('0x50')]);_0x253201[_0xe4d5('0x51')]=intUtil[_0xe4d5('0x52')](_0x253201['serverUrl']);var _0x18bc4f=util['format'](_0xe4d5('0x53'),_0x253201[_0xe4d5('0x50')]);_0x2abfa0[_0xe4d5('0x14')]=!_[_0xe4d5('0x54')](_0x173833)?_0x173833[_0xe4d5('0x55')]:null;_0x2abfa0[_0xe4d5('0x1c')]=_0x253201[_0xe4d5('0x55')];_0x2abfa0['endUserNumber']=_0x389b50[_0xe4d5('0x32')]()==='outbound'?_0x5c621d['destcalleridnum']:_0x5c621d[_0xe4d5('0x56')];_0x2abfa0[_0xe4d5('0x57')]=_0x389b50===_0xe4d5('0x58')||_0x389b50===_0xe4d5('0x59')?_0xe4d5('0x58'):_0xe4d5('0x5a');var _0x52ca43=util[_0xe4d5('0x4b')](_0xe4d5('0x5b'),_0x253201[_0xe4d5('0x51')],_0x5c621d[_0xe4d5('0x5c')],md5(_0x5c621d[_0xe4d5('0x5c')]));if(_0x453a95&&_0x453a95['monitor_format']){logger[_0xe4d5('0x17')](_0xe4d5('0x5d'),_0xe4d5('0x5e'));_0x5c621d['recordingURL']=_0x52ca43;}else if(_0xbdff2c&&_0xbdff2c[_0xe4d5('0x5f')]&&_0xbdff2c[_0xe4d5('0x5f')]!=='none'){logger[_0xe4d5('0x17')](_0xe4d5('0x60'),_0xe4d5('0x5e'));_0x5c621d[_0xe4d5('0x61')]=_0x52ca43;}else{_0x5c621d['recordingURL']='';}return getAdminUser(_0x389b50,_0x5e33da,_0x2abfa0,_0x18bc4f,_0x52715f,_0x270503)[_0xe4d5('0xa')](getUser(_0x389b50,_0x5e33da,_0x18bc4f,_0x52715f,_0x270503))[_0xe4d5('0xa')](getEndUser(_0x389b50,_0x5e33da,_0x18bc4f,_0x52715f,_0x270503))[_0xe4d5('0xa')](getTicket(_0x389b50,_0x5e33da,_0x18bc4f,_0x2292cd,_0x5c621d,_0x52715f))[_0xe4d5('0xa')](function(_0x2bd7ac){logger[_0xe4d5('0x17')](util[_0xe4d5('0x4b')](_0xe4d5('0x62'),_0x2bd7ac[_0xe4d5('0x3d')]));logger['info'](util[_0xe4d5('0x4b')](_0xe4d5('0x63'),_0x389b50));if(_0x389b50!=='unmanaged'){logger[_0xe4d5('0x17')]('['+[_0x389b50[_0xe4d5('0x11')]()]+']',_0xe4d5('0x64'));emit(_0x253201[_0xe4d5('0x50')],_0x173833[_0xe4d5('0x47')],_0x2bd7ac[_0xe4d5('0x3d')]);}})[_0xe4d5('0xf')](function(_0x568044){logger[_0xe4d5('0x10')]('['+[_0x389b50['toUpperCase']()]+']\x20Error\x20running\x20ServiceNow\x20integration',util[_0xe4d5('0x65')](_0x568044,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x02ee=['string','picklist','type','nameField','customField','toString','includes','idField','content','variableName','Variable','name','toLowerCase',']\x20getTicket\x20input\x20crm','outbound','POST','incident','assign','getString','Subjects','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','?sysparm_query=name%3D','Incident','Incident\x20-\x20',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','push','all','Tags','map','%26sysparm_record_row%3D1%26sysparm_record_rows%3D39','%26sysparm_record_list%3Dactive%253Dtrue','format','user:%s','emit','trigger:browser:url','password','sysparm_limit=1','remoteUri','stripTrailingSlash','serverUrl','isNil','email','destcalleridnum','calleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','Recording\x20is\x20enabled!','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','md5','ioredis','./util','../../../../config/environment','servicenow','socket.io-emitter','redis','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','adminId','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','userId','adminEmail','],\x20getUser\x20crm','],\x20createEndUser\x20input\x20crm','sys_user?','endUserNumber','user','System','sys_user?sysparm_query=phone%3D','endUserId','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach'];(function(_0x234ae1,_0x42bdd6){var _0x227ba0=function(_0x1f6531){while(--_0x1f6531){_0x234ae1['push'](_0x234ae1['shift']());}};_0x227ba0(++_0x42bdd6);}(_0x02ee,0x110));var _0xe02e=function(_0x2d627e,_0x1f1232){_0x2d627e=_0x2d627e-0x0;var _0x3cf4f1=_0x02ee[_0x2d627e];return _0x3cf4f1;};'use strict';var _=require(_0xe02e('0x0'));var Promise=require('bluebird');var rp=require('request-promise');var util=require('util');var md5=require(_0xe02e('0x1'));var Redis=require(_0xe02e('0x2'));var intUtil=require(_0xe02e('0x3'));var config=require(_0xe02e('0x4'));var logger=require('../../../../config/logger')(_0xe02e('0x5'));config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xe02e('0x6'))(new Redis(config[_0xe02e('0x7')]));function getAdminUser(_0x5bd5c0,_0x4d7862,_0x4e1769,_0x169dc8,_0x32e5e2,_0x1d1fdf){return new Promise(function(_0x178f04,_0x5dadfa){var _0x479e83={'method':_0xe02e('0x8'),'uri':_0x169dc8+_0xe02e('0x9')+'&'+_0x32e5e2+'&'+_0x1d1fdf,'auth':_0x4d7862,'json':!![]};return rp(_0x479e83)[_0xe02e('0xa')](function(_0x4ffd73){if(_0x4ffd73[_0xe02e('0xb')][_0xe02e('0xc')]>0x0){_0x4e1769[_0xe02e('0xd')]=_0x4ffd73[_0xe02e('0xb')][0x0][_0xe02e('0xe')];}logger[_0xe02e('0xf')]('['+[_0x5bd5c0[_0xe02e('0x10')]()]+_0xe02e('0x11'),_0x4e1769);_0x178f04(_0x4e1769);})[_0xe02e('0x12')](function(_0x46c521){logger[_0xe02e('0x13')]('['+[_0x5bd5c0['toUpperCase']()]+']',_0x46c521[_0xe02e('0x14')]);_0x5dadfa(_0x46c521['message']);});});}function getUser(_0x2b21df,_0x205681,_0x36f688,_0x20f9a6,_0x41cbc3){return function(_0x87cb28){logger[_0xe02e('0xf')]('['+[_0x2b21df['toUpperCase']()]+_0xe02e('0x15'),_0x87cb28);return new Promise(function(_0xbaafda,_0x3e90bb){if(intUtil[_0xe02e('0x16')](_0x87cb28[_0xe02e('0x17')])){var _0x54c702={'method':_0xe02e('0x8'),'uri':_0x36f688+'sys_user?sysparm_query=email%3D'+_0x87cb28[_0xe02e('0x17')]+'&'+_0x20f9a6+'&'+_0x41cbc3,'auth':_0x205681,'json':!![]};logger[_0xe02e('0xf')]('['+[_0x2b21df[_0xe02e('0x10')]()]+_0xe02e('0x18'),_0x54c702);return rp(_0x54c702)[_0xe02e('0xa')](function(_0x45fca0){logger['info']('['+[_0x2b21df[_0xe02e('0x10')]()]+_0xe02e('0x19'),_0x45fca0);if(_0x45fca0[_0xe02e('0xb')][_0xe02e('0xc')]>0x0&&String(_0x45fca0[_0xe02e('0xb')][0x0][_0xe02e('0x1a')])==='true'){_0x87cb28[_0xe02e('0x1b')]=_0x45fca0[_0xe02e('0xb')][0x0][_0xe02e('0xe')];}else{_0x87cb28[_0xe02e('0x1b')]=_0x87cb28[_0xe02e('0xd')];_0x87cb28[_0xe02e('0x17')]=_0x87cb28[_0xe02e('0x1c')];}logger['info']('['+[_0x2b21df[_0xe02e('0x10')]()]+_0xe02e('0x1d'),_0x87cb28);_0xbaafda(_0x87cb28);})[_0xe02e('0x12')](function(_0xb9ca2a){logger['error']('['+[_0x2b21df[_0xe02e('0x10')]()]+']',_0xb9ca2a[_0xe02e('0x14')]);_0x3e90bb(_0xb9ca2a[_0xe02e('0x14')]);});}else{logger[_0xe02e('0xf')]('['+[_0x2b21df[_0xe02e('0x10')]()]+']\x20using\x20admin\x20profile');_0x87cb28['userId']=_0x87cb28['adminId'];_0x87cb28['userEmail']=_0x87cb28['adminEmail'];_0xbaafda(_0x87cb28);}});};}function createEndUser(_0x1545e9,_0x35da8b,_0x108f4d,_0x1dffb9,_0xe88b89){logger[_0xe02e('0xf')]('['+[_0x1545e9['toUpperCase']()]+_0xe02e('0x1e'),_0x108f4d);return new Promise(function(_0x3908d6,_0x2c20bd){var _0x3afc50={'method':'POST','uri':_0x1dffb9+_0xe02e('0x1f')+_0xe88b89,'body':{'user_name':_0x108f4d[_0xe02e('0x20')],'roles':_0xe02e('0x21'),'first_name':_0x108f4d[_0xe02e('0x20')],'active':'true','date_format':_0xe02e('0x22'),'phone':_0x108f4d[_0xe02e('0x20')]},'auth':_0x35da8b,'json':!![]};return rp(_0x3afc50)['then'](function(_0x36feac){logger[_0xe02e('0xf')]('['+[_0x1545e9[_0xe02e('0x10')]()]+'],\x20EndUser\x20schema',_0x36feac['result']);_0x108f4d['endUserId']=_0x36feac['result'][_0xe02e('0xe')];_0x3908d6(_0x108f4d);})[_0xe02e('0x12')](function(_0x3531f8){logger[_0xe02e('0x13')]('['+[_0x1545e9[_0xe02e('0x10')]()]+']',_0x3531f8[_0xe02e('0x14')]);_0x2c20bd(_0x3531f8[_0xe02e('0x14')]);});});}function getEndUser(_0x5ba715,_0x487800,_0x40e540,_0x3974e9,_0x33ec1e){return function(_0x23b763){logger['info']('['+[_0x5ba715[_0xe02e('0x10')]()]+'],\x20getEndUser\x20input\x20crm',_0x23b763);return new Promise(function(_0x3d39cf,_0x5ddef7){var _0x132a75={'method':_0xe02e('0x8'),'uri':_0x40e540+_0xe02e('0x23')+_0x23b763[_0xe02e('0x20')]+'&'+_0x3974e9+'&'+_0x33ec1e,'auth':_0x487800,'json':!![]};return rp(_0x132a75)['then'](function(_0x52908b){if(_0x52908b['result'][_0xe02e('0xc')]>0x0){_0x23b763[_0xe02e('0x24')]=_0x52908b[_0xe02e('0xb')][0x0][_0xe02e('0xe')];logger[_0xe02e('0xf')]('['+[_0x5ba715['toUpperCase']()]+_0xe02e('0x25'),_0x23b763);_0x3d39cf(_0x23b763);}else{return createEndUser(_0x5ba715,_0x487800,_0x23b763,_0x40e540,_0x3974e9)[_0xe02e('0xa')](function(_0x1cda9d){logger[_0xe02e('0xf')]('['+[_0x5ba715[_0xe02e('0x10')]()]+_0xe02e('0x26'),_0x1cda9d);_0x3d39cf(_0x1cda9d);});}})[_0xe02e('0x12')](function(_0x3dee76){logger[_0xe02e('0x13')]('['+[_0x5ba715['toUpperCase']()]+']',_0x3dee76[_0xe02e('0x14')]);_0x5ddef7(_0x3dee76[_0xe02e('0x14')]);});});};}function getCustomFields(_0x5da2ab,_0x5e8db5){var _0x576f57={};if(_0x5da2ab[_0xe02e('0xc')]>0x0){_[_0xe02e('0x27')](_0x5da2ab,function(_0x2a6363){if(_['includes']([_0xe02e('0x28'),_0xe02e('0x29')],_0x2a6363[_0xe02e('0x2a')])&&_0x2a6363[_0xe02e('0x2b')]&&!_0x2a6363[_0xe02e('0x2c')]){_0x576f57[_0x2a6363[_0xe02e('0x2b')]['toLowerCase']()]=_0x2a6363['content'][_0xe02e('0x2d')]();}else if(_[_0xe02e('0x2e')](['string','picklist'],_0x2a6363['type'])&&_0x2a6363[_0xe02e('0x2f')]&&_0x2a6363['customField']){_0x576f57[_0x2a6363['idField']['toLowerCase']()]=_0x2a6363[_0xe02e('0x30')]['toString']();}else if(_0x2a6363[_0xe02e('0x2a')]==='variable'&&_0x2a6363['variableName']&&_0x2a6363['idField']&&_0x2a6363[_0xe02e('0x2c')]){_0x576f57[_0x2a6363[_0xe02e('0x2f')]['toLowerCase']()]=_0x5e8db5[_0x2a6363[_0xe02e('0x31')]][_0xe02e('0x2d')]();}else if(_0x2a6363[_0xe02e('0x2a')]==='customVariable'&&_0x2a6363[_0xe02e('0x32')]&&_0x2a6363[_0xe02e('0x32')][_0xe02e('0x33')]&&_0x2a6363[_0xe02e('0x2f')]&&_0x2a6363[_0xe02e('0x2c')]){_0x576f57[_0x2a6363[_0xe02e('0x2f')][_0xe02e('0x34')]()]=_0x5e8db5[_0x2a6363['Variable'][_0xe02e('0x33')]['toLowerCase']()][_0xe02e('0x2d')]();}});}return _0x576f57;}function getTicket(_0xc2c251,_0x38b389,_0x94399f,_0x466a3a,_0x1bca03,_0x3ae3b8){return function(_0x3e1150){logger[_0xe02e('0xf')]('['+[_0xc2c251[_0xe02e('0x10')]()]+_0xe02e('0x35'),_0x3e1150);return new Promise(function(_0x49196c,_0x188d97){var _0x2dae73=_0xc2c251[_0xe02e('0x34')]()===_0xe02e('0x36')?_0x3e1150[_0xe02e('0x1b')]:_0x3e1150['endUserId'];var _0x16cabc={'method':_0xe02e('0x37'),'uri':_0x94399f+_0xe02e('0x38')+'?'+_0x3ae3b8,'body':Object[_0xe02e('0x39')]({},{'active':'true','caller_id':_0x2dae73,'assigned_to':_0x3e1150[_0xe02e('0x1b')],'short_description':intUtil[_0xe02e('0x3a')](_0x466a3a[_0xe02e('0x3b')],_0x1bca03,'\x20'),'description':intUtil[_0xe02e('0x3a')](_0x466a3a['Descriptions'],_0x1bca03,'\x0a')},getCustomFields(_0x466a3a[_0xe02e('0x3c')],_0x1bca03)),'auth':_0x38b389,'json':!![]};return rp(_0x16cabc)[_0xe02e('0xa')](function(_0x4b8350){logger[_0xe02e('0xf')]('['+[_0xc2c251['toUpperCase']()]+_0xe02e('0x3d'),_0x4b8350['result']);_0x3e1150[_0xe02e('0x3e')]=_0x4b8350['result']['sys_id'];_0x3e1150[_0xe02e('0x3f')]=_0x4b8350[_0xe02e('0xb')][_0xe02e('0x40')];logger['info']('['+[_0xc2c251[_0xe02e('0x10')]()]+_0xe02e('0x41'),_0x3e1150);_0x49196c(_0x3e1150);})[_0xe02e('0x12')](function(_0x3f179b){logger[_0xe02e('0x13')]('['+[_0xc2c251[_0xe02e('0x10')]()]+']',_0x3f179b[_0xe02e('0x14')]);_0x188d97(_0x3f179b[_0xe02e('0x14')]);});});};}function createRemoteTag(_0x52a31f,_0x35d670,_0x572b1c,_0x3e692e){return new Promise(function(_0x11e361,_0x14530a){var _0x2a3dac={'method':_0xe02e('0x37'),'uri':_0x572b1c+'label'+'?'+_0x3e692e,'body':{'short_description':_0x52a31f,'global':!![],'active':!![],'name':_0x52a31f},'auth':_0x35d670,'json':!![]};return rp(_0x2a3dac)[_0xe02e('0xa')](function(_0x4d8e69){var _0x224520=_0x4d8e69[_0xe02e('0xb')][_0xe02e('0xe')];_0x11e361(_0x224520);});});}function getRemoteTag(_0x7ba19d,_0x247fc4,_0x4faee8,_0x2c541c,_0x330da3){return new Promise(function(_0x5f5aaa,_0x524b8a){var _0x1c83df={'method':'GET','uri':_0x4faee8+'label'+_0xe02e('0x42')+_0x7ba19d+'&'+_0x2c541c,'auth':_0x247fc4,'json':!![]};return rp(_0x1c83df)[_0xe02e('0xa')](function(_0x3588c5){if(_0x3588c5[_0xe02e('0xb')]['length']>0x0){var _0x20bab5=_0x3588c5[_0xe02e('0xb')][0x0][_0xe02e('0xe')];_0x5f5aaa(_0x20bab5);}else{return createRemoteTag(_0x7ba19d,_0x247fc4,_0x4faee8,_0x2c541c)[_0xe02e('0xa')](function(_0x3ae533){_0x5f5aaa(_0x3ae533);});}});});}function assignTagToIncident(_0x5783ae,_0x4f4d9d,_0x12118b,_0x175edb,_0x14ef96){return new Promise(function(_0xfccc37,_0xc32b41){var _0x455438={'method':'POST','uri':_0x12118b+'label_entry'+'?'+_0x14ef96,'body':{'label':_0x5783ae,'table':_0xe02e('0x38'),'id_type':_0xe02e('0x43'),'table_key':_0x175edb[_0xe02e('0x3e')],'title':_0xe02e('0x44')+_0x175edb[_0xe02e('0x3f')],'id_display':_0x175edb[_0xe02e('0x3f')]},'auth':_0x4f4d9d,'json':!![]};return rp(_0x455438)[_0xe02e('0xa')](function(_0x4c2966){_0xfccc37();})[_0xe02e('0x12')](function(){_0xfccc37();});});}function manageTags(_0x1529de,_0x3a0440,_0xc56a11,_0x3581a6,_0x4f45da,_0x22bdf8,_0x1186cf){return new Promise(function(_0x28d0bf,_0x3687b5){var _0x127eb2=[];_0x3a0440[_0xe02e('0x27')](function(_0x588423){_0x127eb2['push'](getRemoteTag(_0x588423,_0xc56a11,_0x3581a6,_0x22bdf8,_0x1186cf));});return Promise['all'](_0x127eb2)[_0xe02e('0xa')](function(_0x465b32){if(_0x465b32['length']){logger[_0xe02e('0xf')]('['+[_0x1529de[_0xe02e('0x10')]()]+_0xe02e('0x45'),_0x465b32);var _0x307c2c=[];_0x465b32[_0xe02e('0x27')](function(_0x1b1afc){_0x307c2c[_0xe02e('0x46')](assignTagToIncident(_0x1b1afc,_0xc56a11,_0x3581a6,_0x4f45da,_0x22bdf8));});return Promise[_0xe02e('0x47')](_0x307c2c)[_0xe02e('0xa')](function(){_0x28d0bf();})['catch'](function(){_0x28d0bf();});}else{_0x28d0bf();}});});}function getTags(_0x109f98,_0x3d2672,_0x4e29d5,_0x1fe750,_0x13c54a,_0x524bc3){return function(_0x4a3396){return new Promise(function(_0xcfc2e7,_0x348f2c){var _0x774adb=[];var _0x91c62=_0x1fe750[_0xe02e('0x48')];if(_0x91c62&&_0x91c62[_0xe02e('0xc')]>0x0){_0x774adb=_[_0xe02e('0x49')](_0x91c62,_0xe02e('0x33'));}if(_0x774adb[_0xe02e('0xc')]>0x0){return manageTags(_0x109f98,_0x774adb,_0x3d2672,_0x4e29d5,_0x4a3396,_0x13c54a,_0x524bc3)[_0xe02e('0xa')](function(){_0xcfc2e7(_0x4a3396);});}else{_0xcfc2e7(_0x4a3396);}});};}function emit(_0x20ac45,_0x2ec9af,_0x219e03){var _0x36fd5e='%26sysparm_record_target%3Dincident'+_0xe02e('0x4a')+_0xe02e('0x4b')+'%255EORDERBYDESCnumber';var _0x47ec51={'uri':_0x20ac45+'/nav_to.do?uri=incident.do?sys_id%3D'+_0x219e03+_0x36fd5e};io['to'](util[_0xe02e('0x4c')](_0xe02e('0x4d'),_0x2ec9af))[_0xe02e('0x4e')](_0xe02e('0x4f'),_0x47ec51);}exports['cs']=function(_0x1fd30c,_0x5ae57d,_0x57051c,_0x196353,_0x385bd0,_0x4c213e,_0x4c7e84,_0x4225a5){var _0x29c81e={};var _0x36e691={'user':_0x4c213e['username'],'pass':_0x4c213e[_0xe02e('0x50')]};var _0x1dd6e9=_0xe02e('0x51');var _0x256fcc='sysparm_display_value=true';_0x4c213e[_0xe02e('0x52')]=intUtil[_0xe02e('0x53')](_0x4c213e['remoteUri']);_0x4c213e['serverUrl']=intUtil[_0xe02e('0x53')](_0x4c213e[_0xe02e('0x54')]);var _0x2b9ab3=util[_0xe02e('0x4c')]('%s/api/now/table/',_0x4c213e[_0xe02e('0x52')]);_0x29c81e['userEmail']=!_[_0xe02e('0x55')](_0x196353)?_0x196353[_0xe02e('0x56')]:null;_0x29c81e['adminEmail']=_0x4c213e['email'];_0x29c81e[_0xe02e('0x20')]=_0x4225a5[_0xe02e('0x34')]()===_0xe02e('0x36')?_0x5ae57d[_0xe02e('0x57')]:_0x5ae57d[_0xe02e('0x58')];_0x29c81e[_0xe02e('0x59')]=_0x4225a5===_0xe02e('0x5a')||_0x4225a5===_0xe02e('0x5b')?_0xe02e('0x5a'):_0xe02e('0x36');var _0x5dc630=util[_0xe02e('0x4c')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x4c213e[_0xe02e('0x54')],_0x5ae57d[_0xe02e('0x5c')],md5(_0x5ae57d['uniqueid']));if(_0x385bd0&&_0x385bd0[_0xe02e('0x5d')]){logger[_0xe02e('0xf')](_0xe02e('0x5e'),'Recording\x20is\x20enabled!');_0x5ae57d[_0xe02e('0x5f')]=_0x5dc630;}else if(_0x4c7e84&&_0x4c7e84[_0xe02e('0x60')]&&_0x4c7e84[_0xe02e('0x60')]!==_0xe02e('0x61')){logger[_0xe02e('0xf')]('[OUTBOUND]',_0xe02e('0x62'));_0x5ae57d[_0xe02e('0x5f')]=_0x5dc630;}else{_0x5ae57d[_0xe02e('0x5f')]='';}return getAdminUser(_0x4225a5,_0x36e691,_0x29c81e,_0x2b9ab3,_0x256fcc,_0x1dd6e9)['then'](getUser(_0x4225a5,_0x36e691,_0x2b9ab3,_0x256fcc,_0x1dd6e9))[_0xe02e('0xa')](getEndUser(_0x4225a5,_0x36e691,_0x2b9ab3,_0x256fcc,_0x1dd6e9))[_0xe02e('0xa')](getTicket(_0x4225a5,_0x36e691,_0x2b9ab3,_0x57051c,_0x5ae57d,_0x256fcc))[_0xe02e('0xa')](function(_0x4309e4){logger[_0xe02e('0xf')](util['format'](_0xe02e('0x63'),_0x4309e4[_0xe02e('0x3e')]));logger[_0xe02e('0xf')](util['format'](_0xe02e('0x64'),_0x4225a5));if(_0x4225a5!==_0xe02e('0x5b')){logger[_0xe02e('0xf')]('['+[_0x4225a5[_0xe02e('0x10')]()]+']',_0xe02e('0x65'));emit(_0x4c213e[_0xe02e('0x52')],_0x196353[_0xe02e('0x33')],_0x4309e4['ticketId']);}})[_0xe02e('0x12')](function(_0x1a3644){logger[_0xe02e('0x13')]('['+[_0x4225a5['toUpperCase']()]+_0xe02e('0x66'),util[_0xe02e('0x67')](_0x1a3644,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 05eb1f5..7c1f53c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6779=['toLowerCase','content','custom_fields','variable','customVariable','Variable','login','username','xCALLY\x20Motion\x20integration','Account\x20%d\x20is\x20not\x20valid','set_relationship','Calls','queue','remoteUri','stripTrailingSlash','serverUrl','uri','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','recordingURL','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','users','version','charAt','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','error','outbound','%s/service/v4_1/rest.php','none','[OUTBOUND]','uniqueid','The\x20User\x20ID\x20is:','destcalleridname','Outbound','Ticket\x20created!','contacts','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','unmanaged','lastevent','isNil','calleridnum','Inbound','catch','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','sugarcrm','redis','defaults','localhost','socket.io-emitter','POST','emit','info','Creating\x20new\x20ticket...','name','getString','Subjects','created_by','date_start','slice','duration_hours','duration_minutes','parent_id','parent_type','Contacts','direction','length','forEach','variableName','push','idField','set_entry','JSON','stringify','format','Basic\x20%s','apiKey','toString','get_server_info','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','then','find','entry_list','resolve','value','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','Enduser\x20created.','[HTTP]','merge','map','type','string','nameField','customField'];(function(_0x321bbc,_0x2b45d8){var _0xcfe5b6=function(_0xcf10b8){while(--_0xcf10b8){_0x321bbc['push'](_0x321bbc['shift']());}};_0xcfe5b6(++_0x2b45d8);}(_0x6779,0x11e));var _0x9677=function(_0xfca14d,_0x104400){_0xfca14d=_0xfca14d-0x0;var _0x306f5c=_0x6779[_0xfca14d];return _0x306f5c;};'use strict';var _=require(_0x9677('0x0'));var rp=require(_0x9677('0x1'));var BPromise=require('bluebird');var md5=require(_0x9677('0x2'));var util=require(_0x9677('0x3'));var Redis=require(_0x9677('0x4'));var intUtil=require(_0x9677('0x5'));var config=require(_0x9677('0x6'));var logger=require(_0x9677('0x7'))(_0x9677('0x8'));config[_0x9677('0x9')]=_[_0x9677('0xa')](config[_0x9677('0x9')],{'host':_0x9677('0xb'),'port':0x18eb});var io=require(_0x9677('0xc'))(new Redis(config[_0x9677('0x9')]));var def={'method':_0x9677('0xd'),'json':!![]};function emit(_0x1649fe,_0x1ed7b5,_0x3eb53d){io['to'](_0x1649fe)[_0x9677('0xe')](_0x1ed7b5,_0x3eb53d);}function getTicket(_0x29c306,_0x11d720,_0x36b118,_0xbb69bb,_0x4e181f,_0x2471cf,_0x5405c7,_0x1e6f8e){logger[_0x9677('0xf')](_0x9677('0x10'));var _0x413474=new Date();var _0x29dd21=[{'name':_0x9677('0x11'),'value':intUtil[_0x9677('0x12')](_0xbb69bb[_0x9677('0x13')],_0x4e181f,'\x20')},{'name':'assigned_user_id','value':_0x11d720['id']},{'name':_0x9677('0x14'),'value':_0x11d720['id']},{'name':'description','value':intUtil[_0x9677('0x12')](_0xbb69bb['Descriptions'],_0x4e181f,'\x0a')},{'name':_0x9677('0x15'),'value':_0x413474['toISOString']()[_0x9677('0x16')](0x0,0x13)['replace']('T','\x20')},{'name':_0x9677('0x17'),'value':'0'},{'name':_0x9677('0x18'),'value':'15'},{'name':_0x9677('0x19'),'value':_0x36b118['id']},{'name':_0x9677('0x1a'),'value':_0x9677('0x1b')},{'name':'parent_name','value':_0x36b118['name']},{'name':_0x9677('0x1c'),'value':_0x1e6f8e}];if(_0x2471cf[_0x9677('0x1d')]){_[_0x9677('0x1e')](_0x2471cf,function(_0x2e2a9b){if(_0x4e181f[_0x2e2a9b[_0x9677('0x1f')]]){_0x29dd21[_0x9677('0x20')]({'name':_0x2e2a9b[_0x9677('0x21')],'value':_0x4e181f[_0x2e2a9b[_0x9677('0x1f')]]});}});}return request({'form':{'method':_0x9677('0x22'),'input_type':_0x9677('0x23'),'response_type':_0x9677('0x23'),'rest_data':JSON[_0x9677('0x24')]({'session':_0x5405c7['id'],'module_name':'Calls','name_value_list':_0x29dd21})}});}function getAuth(_0x2ce154){return util[_0x9677('0x25')](_0x9677('0x26'),new Buffer(_0x2ce154[_0x9677('0x27')]+':X')[_0x9677('0x28')]('base64'));}function getServerInfo(_0x41555e){return request({'form':{'method':_0x9677('0x29'),'input_type':_0x9677('0x23'),'response_type':'JSON','rest_data':JSON['stringify']({'session':_0x41555e['id']})}});}function getUser(_0x573387,_0x3e5ec1,_0x3e8778){if(!_['isNil'](_0x3e5ec1)){logger[_0x9677('0xf')]('Getting\x20agent\x20with\x20name',_0x3e5ec1);return request({'form':{'method':_0x9677('0x2a'),'input_type':'JSON','response_type':_0x9677('0x23'),'rest_data':JSON[_0x9677('0x24')]({'session':_0x3e8778['id'],'module_name':_0x9677('0x2b'),'query':util['format'](_0x9677('0x2c'),_0x3e5ec1),'order_by':'','offset':'0','select_fields':['id',_0x9677('0x11'),_0x9677('0x2d')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x9677('0x2e')](function(_0x15a4cf){if(_0x15a4cf['entry_list'][_0x9677('0x1d')]){var _0x22477e=_[_0x9677('0x2f')](_0x15a4cf[_0x9677('0x30')],function(_0x2190f5){return _0x2190f5['name_value_list']['user_name']['value']===_0x3e5ec1;});if(_0x22477e){logger[_0x9677('0xf')]('Agent\x20found!');return BPromise[_0x9677('0x31')]({'id':_0x22477e['name_value_list']['id'][_0x9677('0x32')],'name':_0x22477e[_0x9677('0x33')][_0x9677('0x11')][_0x9677('0x32')]});}}logger[_0x9677('0xf')](_0x9677('0x34'));return BPromise['resolve']({'id':_0x3e8778[_0x9677('0x33')][_0x9677('0x35')]['value'],'name':_0x3e8778[_0x9677('0x33')][_0x9677('0x2d')][_0x9677('0x32')]});});}else{logger[_0x9677('0xf')]('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise[_0x9677('0x31')]({'id':_0x3e8778[_0x9677('0x33')]['user_id']['value'],'name':_0x3e8778[_0x9677('0x33')][_0x9677('0x2d')][_0x9677('0x32')]});}}function getEndUser(_0x3828a5,_0x13cc77,_0x5705a3,_0x2dac0a){logger[_0x9677('0xf')](_0x9677('0x36'),_0x5705a3);return request({'form':{'method':_0x9677('0x2a'),'input_type':_0x9677('0x23'),'response_type':_0x9677('0x23'),'rest_data':JSON[_0x9677('0x24')]({'session':_0x2dac0a['id'],'module_name':'Contacts','query':util['format'](_0x9677('0x37'),_0x5705a3),'order_by':'','offset':'0','select_fields':['id','name',_0x9677('0x38')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x9677('0x2e')](function(_0x1064e0){if(_0x1064e0[_0x9677('0x30')][_0x9677('0x1d')]){var _0x589746=_[_0x9677('0x2f')](_0x1064e0[_0x9677('0x30')],function(_0x599a33){return _0x599a33[_0x9677('0x33')][_0x9677('0x38')][_0x9677('0x32')]===_0x5705a3;});if(_0x589746){logger[_0x9677('0xf')](_0x9677('0x39'));return BPromise[_0x9677('0x31')]({'id':_0x589746['name_value_list']['id'][_0x9677('0x32')],'name':_0x589746[_0x9677('0x33')]['name'][_0x9677('0x32')],'phone':_0x589746['name_value_list'][_0x9677('0x38')][_0x9677('0x32')]});}}else{logger[_0x9677('0xf')](_0x9677('0x3a'));return request({'form':{'method':_0x9677('0x22'),'input_type':'JSON','response_type':_0x9677('0x23'),'rest_data':JSON['stringify']({'session':_0x2dac0a['id'],'module_name':_0x9677('0x1b'),'name_value_list':[{'name':_0x9677('0x3b'),'value':_0x13cc77!=='<unknown>'?_0x13cc77:util['format']('Caller\x20-\x20%s',_0x5705a3)},{'name':_0x9677('0x38'),'value':_0x5705a3}]})}})[_0x9677('0x2e')](function(_0x3b485a){logger['info'](_0x9677('0x3c'));return BPromise['resolve']({'id':_0x3b485a['id'],'name':_0x3b485a[_0x9677('0x30')][_0x9677('0x3b')][_0x9677('0x32')],'phone':_0x3b485a[_0x9677('0x30')]['phone_home']['value']});});}});}function request(_0x49f47e){logger['debug'](_0x9677('0x3d'),JSON[_0x9677('0x24')](_0x49f47e));return rp(_[_0x9677('0x3e')](def,_0x49f47e));}function getTags(_0x8405ff,_0x2a287c){var _0x508c58=[];if(_0x8405ff&&_0x8405ff[_0x9677('0x1d')]>0x0){_0x508c58=_[_0x9677('0x3f')](_0x8405ff,_0x2a287c);}return _0x508c58;}function getCustomFields(_0x43be30,_0x12c1e2){var _0x59c0ac=[];var _0x500e98={'custom_fields':[]};if(_0x43be30['length']>0x0){_[_0x9677('0x1e')](_0x43be30,function(_0x5a21d5){if(_0x5a21d5[_0x9677('0x40')]===_0x9677('0x41')&&_0x5a21d5[_0x9677('0x42')]&&!_0x5a21d5[_0x9677('0x43')]){_0x500e98[_0x5a21d5['nameField'][_0x9677('0x44')]()]=_0x5a21d5[_0x9677('0x45')][_0x9677('0x28')]();}else if(_0x5a21d5[_0x9677('0x40')]===_0x9677('0x41')&&_0x5a21d5[_0x9677('0x21')]&&_0x5a21d5[_0x9677('0x43')]){_0x500e98[_0x9677('0x46')][_0x9677('0x20')]({'id':_0x5a21d5[_0x9677('0x21')],'value':_0x5a21d5[_0x9677('0x45')]['toString']()});}else if(_0x5a21d5[_0x9677('0x40')]===_0x9677('0x47')&&_0x5a21d5[_0x9677('0x1f')]&&_0x5a21d5[_0x9677('0x21')]&&_0x5a21d5[_0x9677('0x43')]){_0x12c1e2[_0x5a21d5[_0x9677('0x1f')]]&&_0x500e98['custom_fields'][_0x9677('0x20')]({'id':_0x5a21d5[_0x9677('0x21')],'value':_0x12c1e2[_0x5a21d5[_0x9677('0x1f')]][_0x9677('0x28')]()});}else if(_0x5a21d5[_0x9677('0x40')]===_0x9677('0x48')&&_0x5a21d5['Variable']&&_0x5a21d5[_0x9677('0x49')][_0x9677('0x11')]&&_0x5a21d5[_0x9677('0x21')]&&_0x5a21d5[_0x9677('0x43')]){_0x12c1e2[_0x5a21d5[_0x9677('0x49')]['name']['toLowerCase']()]&&_0x500e98[_0x9677('0x46')][_0x9677('0x20')]({'id':_0x5a21d5[_0x9677('0x21')],'value':_0x12c1e2[_0x5a21d5[_0x9677('0x49')][_0x9677('0x11')][_0x9677('0x44')]()][_0x9677('0x28')]()});}});}return _0x500e98;}function getConnection(_0x55f7b1){return request({'method':_0x9677('0xd'),'form':{'method':_0x9677('0x4a'),'input_type':_0x9677('0x23'),'response_type':_0x9677('0x23'),'rest_data':JSON[_0x9677('0x24')]({'user_auth':{'user_name':_0x55f7b1[_0x9677('0x4b')],'password':_0x55f7b1['password'],'encryption':'PLAIN'},'application':_0x9677('0x4c')})}})[_0x9677('0x2e')](function(_0x393af4){var _0x58db5f=_0x393af4;if(_0x58db5f['id']){def['sessionID']=_0x58db5f['id'];return BPromise['resolve'](_0x58db5f);}else{throw new Error(util['format'](_0x9677('0x4d'),_0x55f7b1['id']));}});}function setRelationship(_0x5400f9,_0x2e4681,_0x8fa37e,_0x491e00){return request({'form':{'method':_0x9677('0x4e'),'input_type':_0x9677('0x23'),'response_type':_0x9677('0x23'),'rest_data':JSON[_0x9677('0x24')]({'session':_0x5400f9['id'],'module_name':_0x9677('0x4f'),'module_id':_0x8fa37e['id'],'link_field_name':_0x491e00,'related_ids':[_0x2e4681['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x9677('0x50')]=function(_0xd9b6a0,_0x2c123a,_0x49bf6b,_0x46efc3,_0x3b9e28,_0x51204c){var _0x525f1c,_0xafc08e,_0x529b7c,_0x283c62;_0x51204c[_0x9677('0x51')]=intUtil['stripTrailingSlash'](_0x51204c[_0x9677('0x51')]);_0x51204c['serverUrl']=intUtil[_0x9677('0x52')](_0x51204c[_0x9677('0x53')]);def[_0x9677('0x54')]=util[_0x9677('0x25')]('%s/service/v4_1/rest.php',_0x51204c[_0x9677('0x51')]);if(_0x3b9e28&&_0x3b9e28[_0x9677('0x55')]){logger[_0x9677('0xf')](_0x9677('0x56'),_0x9677('0x57'));_0x2c123a['recordingURL']=util[_0x9677('0x25')](_0x9677('0x58'),_0x51204c[_0x9677('0x53')],_0x2c123a['uniqueid'],md5(_0x2c123a['uniqueid']));}else{_0x2c123a[_0x9677('0x59')]='';}return getConnection(_0x51204c)[_0x9677('0x2e')](function(_0x408a86){_0x283c62=_0x408a86;return getUser(_0x51204c,_0x46efc3[_0x9677('0x11')],_0x283c62);})['then'](function(_0x49c61a){_0x525f1c=_0x49c61a;logger['info']('The\x20User\x20ID\x20is:',_0x525f1c['id']);return getEndUser(_0x51204c,_0x2c123a[_0x9677('0x5a')],_0x2c123a['calleridnum'],_0x283c62);})[_0x9677('0x2e')](function(_0x4fb1aa){_0xafc08e=_0x4fb1aa;logger[_0x9677('0xf')](_0x9677('0x5b'),_0xafc08e['id']);return getTicket(_0x51204c,_0x525f1c,_0xafc08e,_0x49bf6b,_0x2c123a,_0x49bf6b['Fields'],_0x283c62,'Inbound');})[_0x9677('0x2e')](function(_0x237ada){_0x529b7c=_0x237ada;logger['info']('Ticket\x20created!');logger['info'](_0x9677('0x5c'),_0x529b7c['id']);return setRelationship(_0x283c62,_0x525f1c,_0x529b7c,_0x9677('0x5d'));})['then'](function(){return setRelationship(_0x283c62,_0xafc08e,_0x529b7c,'contacts');})[_0x9677('0x2e')](function(){return getServerInfo(_0x283c62);})['then'](function(_0x8bc9df){var _0x20a81b=parseInt(_0x8bc9df[_0x9677('0x5e')][_0x9677('0x5f')](0x0));var _0x5159c8=util[_0x9677('0x25')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x51204c[_0x9677('0x51')],_0x529b7c['id']);if(_0x20a81b>0x6){_0x5159c8=util[_0x9677('0x25')](_0x9677('0x60'),_0x51204c[_0x9677('0x51')],_0x529b7c['id']);}logger['info'](_0x9677('0x56'),_0x9677('0x61'));emit(util[_0x9677('0x25')](_0x9677('0x62'),_0x46efc3['name']),_0x9677('0x63'),{'uri':_0x5159c8});})['catch'](function(_0x159e27){logger[_0x9677('0x64')](_0x9677('0x56'),JSON[_0x9677('0x24')](_0x159e27));});};exports[_0x9677('0x65')]=function(_0x3760f4,_0x51a2ba,_0x3a1b7a,_0x57fe9a,_0x191dc1,_0x2d37b0,_0x34ab95){var _0x2b6e0d,_0x190987,_0x5277c,_0x7e8040;_0x2d37b0[_0x9677('0x51')]=intUtil[_0x9677('0x52')](_0x2d37b0['remoteUri']);_0x2d37b0['serverUrl']=intUtil[_0x9677('0x52')](_0x2d37b0[_0x9677('0x53')]);def[_0x9677('0x54')]=util[_0x9677('0x25')](_0x9677('0x66'),_0x2d37b0[_0x9677('0x51')]);if(_0x34ab95&&_0x34ab95['recordingFormat']&&_0x34ab95['recordingFormat']!==_0x9677('0x67')){logger['info'](_0x9677('0x68'),_0x9677('0x57'));_0x51a2ba[_0x9677('0x59')]=util[_0x9677('0x25')](_0x9677('0x58'),_0x2d37b0[_0x9677('0x53')],_0x51a2ba['uniqueid'],md5(_0x51a2ba[_0x9677('0x69')]));}return getConnection(_0x2d37b0)['then'](function(_0x1d5bf3){_0x7e8040=_0x1d5bf3;return getUser(_0x2d37b0,_0x57fe9a[_0x9677('0x11')],_0x7e8040);})[_0x9677('0x2e')](function(_0x5768dc){_0x2b6e0d=_0x5768dc;logger['info'](_0x9677('0x6a'),_0x2b6e0d['id']);return getEndUser(_0x2d37b0,_0x51a2ba[_0x9677('0x6b')],_0x51a2ba['destcalleridnum'],_0x7e8040);})[_0x9677('0x2e')](function(_0x5f9d86){_0x190987=_0x5f9d86;logger[_0x9677('0xf')](_0x9677('0x5b'),_0x190987['id']);return getTicket(_0x2d37b0,_0x2b6e0d,_0x190987,_0x3a1b7a,_0x51a2ba,_0x3a1b7a['Fields'],_0x7e8040,_0x9677('0x6c'));})[_0x9677('0x2e')](function(_0x497055){_0x5277c=_0x497055;logger[_0x9677('0xf')](_0x9677('0x6d'));logger[_0x9677('0xf')](_0x9677('0x5c'),_0x5277c['id']);return setRelationship(_0x7e8040,_0x2b6e0d,_0x5277c,_0x9677('0x5d'));})['then'](function(){return setRelationship(_0x7e8040,_0x190987,_0x5277c,_0x9677('0x6e'));})['then'](function(){return getServerInfo(_0x7e8040);})[_0x9677('0x2e')](function(_0x566541){var _0x96ff96=parseInt(_0x566541[_0x9677('0x5e')][_0x9677('0x5f')](0x0));var _0x7dd742=util[_0x9677('0x25')](_0x9677('0x6f'),_0x2d37b0[_0x9677('0x51')],_0x5277c['id']);if(_0x96ff96>0x6){_0x7dd742=util[_0x9677('0x25')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x2d37b0[_0x9677('0x51')],_0x5277c['id']);}logger[_0x9677('0xf')](_0x9677('0x68'),_0x9677('0x61'));emit(util['format']('user:%s',_0x57fe9a[_0x9677('0x11')]),_0x9677('0x63'),{'uri':_0x7dd742});})['catch'](function(_0x3194d8){logger['error'](_0x9677('0x68'),JSON[_0x9677('0x24')](_0x3194d8));});};exports[_0x9677('0x70')]=function(_0x38a5e8,_0x5b03ce,_0x5375a6,_0x5482ba,_0xb55af5,_0x197191){var _0x4f8ad7,_0x33bd33,_0x412686,_0x5576ba;_0x197191['remoteUri']=intUtil[_0x9677('0x52')](_0x197191['remoteUri']);_0x197191[_0x9677('0x53')]=intUtil['stripTrailingSlash'](_0x197191['serverUrl']);def[_0x9677('0x54')]=util[_0x9677('0x25')]('%s/service/v4_1/rest.php',_0x197191[_0x9677('0x51')]);if(_0xb55af5&&_0xb55af5[_0x9677('0x55')]){logger[_0x9677('0xf')]('['+_0x5b03ce[_0x9677('0x71')]['toUpperCase']()+']',_0x9677('0x57'));_0x5b03ce['recordingURL']=util[_0x9677('0x25')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x197191[_0x9677('0x53')],_0x5b03ce[_0x9677('0x69')],md5(_0x5b03ce['uniqueid']));}else{_0x5b03ce[_0x9677('0x59')]='';}return getConnection(_0x197191)[_0x9677('0x2e')](function(_0x1f9b13){_0x5576ba=_0x1f9b13;if(!_[_0x9677('0x72')](_0x5482ba)){return getUser(_0x197191,_0x5482ba[_0x9677('0x11')],_0x5576ba);}else{return getUser(_0x197191,null,_0x5576ba);}})[_0x9677('0x2e')](function(_0x4d541e){_0x4f8ad7=_0x4d541e;logger[_0x9677('0xf')](_0x9677('0x6a'),_0x4f8ad7['id']);return getEndUser(_0x197191,_0x5b03ce[_0x9677('0x5a')],_0x5b03ce[_0x9677('0x73')],_0x5576ba);})[_0x9677('0x2e')](function(_0x55a20c){_0x33bd33=_0x55a20c;logger[_0x9677('0xf')](_0x9677('0x5b'),_0x33bd33['id']);return getTicket(_0x197191,_0x4f8ad7,_0x33bd33,_0x5375a6,_0x5b03ce,_0x5375a6['Fields'],_0x5576ba,_0x9677('0x74'));})[_0x9677('0x2e')](function(_0x2dd837){_0x412686=_0x2dd837;logger[_0x9677('0xf')](_0x9677('0x6d'));logger[_0x9677('0xf')](_0x9677('0x5c'),_0x412686['id']);return setRelationship(_0x5576ba,_0x4f8ad7,_0x412686,'users');})[_0x9677('0x2e')](function(){return setRelationship(_0x5576ba,_0x33bd33,_0x412686,'contacts');})[_0x9677('0x2e')](function(){return getServerInfo(_0x5576ba);})[_0x9677('0x75')](function(_0x1344b9){logger[_0x9677('0x64')]('['+_0x5b03ce[_0x9677('0x71')]['toUpperCase']()+']',JSON[_0x9677('0x24')](_0x1344b9));});};
\ No newline at end of file
+var _0x48ca=['user_id','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>','Caller\x20-\x20%s','Enduser\x20created.','debug','[HTTP]','merge','map','forEach','type','string','customField','nameField','toLowerCase','content','custom_fields','customVariable','Variable','toString','login','username','password','PLAIN','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','remoteUri','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','calleridname','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','catch','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridnum','Outbound','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','error','monitor_format','toUpperCase','calleridnum','lastevent','lodash','bluebird','ioredis','./util','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','POST','emit','name','getString','Subjects','assigned_user_id','description','Descriptions','date_start','toISOString','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','parent_name','direction','length','push','idField','variableName','set_entry','JSON','stringify','Calls','format','apiKey','base64','get_server_info','isNil','Getting\x20agent\x20with\x20name','get_entry_list','Employees','user_name','then','entry_list','name_value_list','value','info','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','resolve'];(function(_0x380543,_0x56113c){var _0x54060f=function(_0x2ffbf1){while(--_0x2ffbf1){_0x380543['push'](_0x380543['shift']());}};_0x54060f(++_0x56113c);}(_0x48ca,0x136));var _0xa48c=function(_0x3c66ea,_0x24a3e4){_0x3c66ea=_0x3c66ea-0x0;var _0x308dc6=_0x48ca[_0x3c66ea];return _0x308dc6;};'use strict';var _=require(_0xa48c('0x0'));var rp=require('request-promise');var BPromise=require(_0xa48c('0x1'));var md5=require('md5');var util=require('util');var Redis=require(_0xa48c('0x2'));var intUtil=require(_0xa48c('0x3'));var config=require(_0xa48c('0x4'));var logger=require(_0xa48c('0x5'))('sugarcrm');config[_0xa48c('0x6')]=_[_0xa48c('0x7')](config['redis'],{'host':_0xa48c('0x8'),'port':0x18eb});var io=require(_0xa48c('0x9'))(new Redis(config[_0xa48c('0x6')]));var def={'method':_0xa48c('0xa'),'json':!![]};function emit(_0x5d9b84,_0x457f0d,_0x2d557a){io['to'](_0x5d9b84)[_0xa48c('0xb')](_0x457f0d,_0x2d557a);}function getTicket(_0x576505,_0x28b14b,_0x2017b3,_0x107471,_0x11e466,_0x77507d,_0x56e6eb,_0x2ff07d){logger['info']('Creating\x20new\x20ticket...');var _0x27e766=new Date();var _0x4c9b3e=[{'name':_0xa48c('0xc'),'value':intUtil[_0xa48c('0xd')](_0x107471[_0xa48c('0xe')],_0x11e466,'\x20')},{'name':_0xa48c('0xf'),'value':_0x28b14b['id']},{'name':'created_by','value':_0x28b14b['id']},{'name':_0xa48c('0x10'),'value':intUtil['getString'](_0x107471[_0xa48c('0x11')],_0x11e466,'\x0a')},{'name':_0xa48c('0x12'),'value':_0x27e766[_0xa48c('0x13')]()['slice'](0x0,0x13)[_0xa48c('0x14')]('T','\x20')},{'name':_0xa48c('0x15'),'value':'0'},{'name':_0xa48c('0x16'),'value':'15'},{'name':_0xa48c('0x17'),'value':_0x2017b3['id']},{'name':_0xa48c('0x18'),'value':_0xa48c('0x19')},{'name':_0xa48c('0x1a'),'value':_0x2017b3[_0xa48c('0xc')]},{'name':_0xa48c('0x1b'),'value':_0x2ff07d}];if(_0x77507d[_0xa48c('0x1c')]){_['forEach'](_0x77507d,function(_0x37ce19){if(_0x11e466[_0x37ce19['variableName']]){_0x4c9b3e[_0xa48c('0x1d')]({'name':_0x37ce19[_0xa48c('0x1e')],'value':_0x11e466[_0x37ce19[_0xa48c('0x1f')]]});}});}return request({'form':{'method':_0xa48c('0x20'),'input_type':_0xa48c('0x21'),'response_type':'JSON','rest_data':JSON[_0xa48c('0x22')]({'session':_0x56e6eb['id'],'module_name':_0xa48c('0x23'),'name_value_list':_0x4c9b3e})}});}function getAuth(_0x2c1df2){return util[_0xa48c('0x24')]('Basic\x20%s',new Buffer(_0x2c1df2[_0xa48c('0x25')]+':X')['toString'](_0xa48c('0x26')));}function getServerInfo(_0x4df146){return request({'form':{'method':_0xa48c('0x27'),'input_type':_0xa48c('0x21'),'response_type':_0xa48c('0x21'),'rest_data':JSON[_0xa48c('0x22')]({'session':_0x4df146['id']})}});}function getUser(_0x15baf4,_0x1f42aa,_0x21aca2){if(!_[_0xa48c('0x28')](_0x1f42aa)){logger['info'](_0xa48c('0x29'),_0x1f42aa);return request({'form':{'method':_0xa48c('0x2a'),'input_type':_0xa48c('0x21'),'response_type':_0xa48c('0x21'),'rest_data':JSON['stringify']({'session':_0x21aca2['id'],'module_name':_0xa48c('0x2b'),'query':util[_0xa48c('0x24')]('INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200',_0x1f42aa),'order_by':'','offset':'0','select_fields':['id',_0xa48c('0xc'),_0xa48c('0x2c')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xa48c('0x2d')](function(_0x5d465d){if(_0x5d465d[_0xa48c('0x2e')]['length']){var _0x436cda=_['find'](_0x5d465d[_0xa48c('0x2e')],function(_0x3dc56c){return _0x3dc56c[_0xa48c('0x2f')][_0xa48c('0x2c')][_0xa48c('0x30')]===_0x1f42aa;});if(_0x436cda){logger[_0xa48c('0x31')](_0xa48c('0x32'));return BPromise['resolve']({'id':_0x436cda[_0xa48c('0x2f')]['id'][_0xa48c('0x30')],'name':_0x436cda[_0xa48c('0x2f')][_0xa48c('0xc')][_0xa48c('0x30')]});}}logger[_0xa48c('0x31')](_0xa48c('0x33'));return BPromise[_0xa48c('0x34')]({'id':_0x21aca2[_0xa48c('0x2f')][_0xa48c('0x35')][_0xa48c('0x30')],'name':_0x21aca2[_0xa48c('0x2f')][_0xa48c('0x2c')][_0xa48c('0x30')]});});}else{logger[_0xa48c('0x31')]('Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!');return BPromise[_0xa48c('0x34')]({'id':_0x21aca2[_0xa48c('0x2f')][_0xa48c('0x35')][_0xa48c('0x30')],'name':_0x21aca2[_0xa48c('0x2f')][_0xa48c('0x2c')][_0xa48c('0x30')]});}}function getEndUser(_0x1a9f81,_0x4d29c8,_0x45945b,_0x401577){logger[_0xa48c('0x31')]('Searching\x20enduser\x20with\x20phone',_0x45945b);return request({'form':{'method':_0xa48c('0x2a'),'input_type':_0xa48c('0x21'),'response_type':_0xa48c('0x21'),'rest_data':JSON[_0xa48c('0x22')]({'session':_0x401577['id'],'module_name':_0xa48c('0x19'),'query':util[_0xa48c('0x24')]('contacts.phone_home\x20=\x20\x22%s\x22',_0x45945b),'order_by':'','offset':'0','select_fields':['id','name',_0xa48c('0x36')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xa48c('0x2d')](function(_0xc771e9){if(_0xc771e9[_0xa48c('0x2e')]['length']){var _0x2a86f0=_['find'](_0xc771e9[_0xa48c('0x2e')],function(_0x76a37a){return _0x76a37a[_0xa48c('0x2f')][_0xa48c('0x36')][_0xa48c('0x30')]===_0x45945b;});if(_0x2a86f0){logger[_0xa48c('0x31')](_0xa48c('0x37'));return BPromise[_0xa48c('0x34')]({'id':_0x2a86f0[_0xa48c('0x2f')]['id'][_0xa48c('0x30')],'name':_0x2a86f0[_0xa48c('0x2f')][_0xa48c('0xc')][_0xa48c('0x30')],'phone':_0x2a86f0[_0xa48c('0x2f')]['phone_home'][_0xa48c('0x30')]});}}else{logger[_0xa48c('0x31')](_0xa48c('0x38'));return request({'form':{'method':_0xa48c('0x20'),'input_type':_0xa48c('0x21'),'response_type':_0xa48c('0x21'),'rest_data':JSON['stringify']({'session':_0x401577['id'],'module_name':_0xa48c('0x19'),'name_value_list':[{'name':_0xa48c('0x39'),'value':_0x4d29c8!==_0xa48c('0x3a')?_0x4d29c8:util['format'](_0xa48c('0x3b'),_0x45945b)},{'name':_0xa48c('0x36'),'value':_0x45945b}]})}})[_0xa48c('0x2d')](function(_0x161c88){logger[_0xa48c('0x31')](_0xa48c('0x3c'));return BPromise['resolve']({'id':_0x161c88['id'],'name':_0x161c88['entry_list']['first_name'][_0xa48c('0x30')],'phone':_0x161c88['entry_list']['phone_home'][_0xa48c('0x30')]});});}});}function request(_0x5363f7){logger[_0xa48c('0x3d')](_0xa48c('0x3e'),JSON[_0xa48c('0x22')](_0x5363f7));return rp(_[_0xa48c('0x3f')](def,_0x5363f7));}function getTags(_0x3e8d60,_0xc57a94){var _0x3aaefc=[];if(_0x3e8d60&&_0x3e8d60['length']>0x0){_0x3aaefc=_[_0xa48c('0x40')](_0x3e8d60,_0xc57a94);}return _0x3aaefc;}function getCustomFields(_0x24ffb7,_0x4e1f3f){var _0x579f10=[];var _0x3eeef8={'custom_fields':[]};if(_0x24ffb7['length']>0x0){_[_0xa48c('0x41')](_0x24ffb7,function(_0x21c261){if(_0x21c261[_0xa48c('0x42')]===_0xa48c('0x43')&&_0x21c261['nameField']&&!_0x21c261[_0xa48c('0x44')]){_0x3eeef8[_0x21c261[_0xa48c('0x45')][_0xa48c('0x46')]()]=_0x21c261[_0xa48c('0x47')]['toString']();}else if(_0x21c261[_0xa48c('0x42')]===_0xa48c('0x43')&&_0x21c261['idField']&&_0x21c261[_0xa48c('0x44')]){_0x3eeef8[_0xa48c('0x48')]['push']({'id':_0x21c261[_0xa48c('0x1e')],'value':_0x21c261['content']['toString']()});}else if(_0x21c261['type']==='variable'&&_0x21c261['variableName']&&_0x21c261[_0xa48c('0x1e')]&&_0x21c261[_0xa48c('0x44')]){_0x4e1f3f[_0x21c261['variableName']]&&_0x3eeef8['custom_fields']['push']({'id':_0x21c261[_0xa48c('0x1e')],'value':_0x4e1f3f[_0x21c261[_0xa48c('0x1f')]]['toString']()});}else if(_0x21c261[_0xa48c('0x42')]===_0xa48c('0x49')&&_0x21c261[_0xa48c('0x4a')]&&_0x21c261[_0xa48c('0x4a')][_0xa48c('0xc')]&&_0x21c261[_0xa48c('0x1e')]&&_0x21c261['customField']){_0x4e1f3f[_0x21c261[_0xa48c('0x4a')][_0xa48c('0xc')][_0xa48c('0x46')]()]&&_0x3eeef8[_0xa48c('0x48')][_0xa48c('0x1d')]({'id':_0x21c261[_0xa48c('0x1e')],'value':_0x4e1f3f[_0x21c261['Variable'][_0xa48c('0xc')][_0xa48c('0x46')]()][_0xa48c('0x4b')]()});}});}return _0x3eeef8;}function getConnection(_0x394d3e){return request({'method':_0xa48c('0xa'),'form':{'method':_0xa48c('0x4c'),'input_type':_0xa48c('0x21'),'response_type':_0xa48c('0x21'),'rest_data':JSON[_0xa48c('0x22')]({'user_auth':{'user_name':_0x394d3e[_0xa48c('0x4d')],'password':_0x394d3e[_0xa48c('0x4e')],'encryption':_0xa48c('0x4f')},'application':'xCALLY\x20Motion\x20integration'})}})['then'](function(_0x4f11ad){var _0x375d47=_0x4f11ad;if(_0x375d47['id']){def[_0xa48c('0x50')]=_0x375d47['id'];return BPromise[_0xa48c('0x34')](_0x375d47);}else{throw new Error(util[_0xa48c('0x24')](_0xa48c('0x51'),_0x394d3e['id']));}});}function setRelationship(_0x268f0d,_0x1a0b8c,_0x6861e9,_0x4d1057){return request({'form':{'method':_0xa48c('0x52'),'input_type':_0xa48c('0x21'),'response_type':'JSON','rest_data':JSON[_0xa48c('0x22')]({'session':_0x268f0d['id'],'module_name':_0xa48c('0x23'),'module_id':_0x6861e9['id'],'link_field_name':_0x4d1057,'related_ids':[_0x1a0b8c['id']],'name_value_list':[],'delete':0x0})}});}exports['queue']=function(_0x38005b,_0x5cfc1b,_0x3aa4c9,_0x52b12c,_0x500c37,_0x50f976){var _0x4ae06b,_0x4450ac,_0x3cb26c,_0x10efa8;_0x50f976[_0xa48c('0x53')]=intUtil[_0xa48c('0x54')](_0x50f976['remoteUri']);_0x50f976[_0xa48c('0x55')]=intUtil[_0xa48c('0x54')](_0x50f976[_0xa48c('0x55')]);def[_0xa48c('0x56')]=util['format'](_0xa48c('0x57'),_0x50f976['remoteUri']);if(_0x500c37&&_0x500c37['monitor_format']){logger['info'](_0xa48c('0x58'),_0xa48c('0x59'));_0x5cfc1b[_0xa48c('0x5a')]=util[_0xa48c('0x24')](_0xa48c('0x5b'),_0x50f976[_0xa48c('0x55')],_0x5cfc1b[_0xa48c('0x5c')],md5(_0x5cfc1b[_0xa48c('0x5c')]));}else{_0x5cfc1b[_0xa48c('0x5a')]='';}return getConnection(_0x50f976)[_0xa48c('0x2d')](function(_0x5e5e01){_0x10efa8=_0x5e5e01;return getUser(_0x50f976,_0x52b12c[_0xa48c('0xc')],_0x10efa8);})[_0xa48c('0x2d')](function(_0x6577f4){_0x4ae06b=_0x6577f4;logger[_0xa48c('0x31')]('The\x20User\x20ID\x20is:',_0x4ae06b['id']);return getEndUser(_0x50f976,_0x5cfc1b[_0xa48c('0x5d')],_0x5cfc1b['calleridnum'],_0x10efa8);})['then'](function(_0x573aa1){_0x4450ac=_0x573aa1;logger[_0xa48c('0x31')](_0xa48c('0x5e'),_0x4450ac['id']);return getTicket(_0x50f976,_0x4ae06b,_0x4450ac,_0x3aa4c9,_0x5cfc1b,_0x3aa4c9[_0xa48c('0x5f')],_0x10efa8,_0xa48c('0x60'));})[_0xa48c('0x2d')](function(_0x84e5fd){_0x3cb26c=_0x84e5fd;logger['info'](_0xa48c('0x61'));logger[_0xa48c('0x31')](_0xa48c('0x62'),_0x3cb26c['id']);return setRelationship(_0x10efa8,_0x4ae06b,_0x3cb26c,_0xa48c('0x63'));})[_0xa48c('0x2d')](function(){return setRelationship(_0x10efa8,_0x4450ac,_0x3cb26c,_0xa48c('0x64'));})[_0xa48c('0x2d')](function(){return getServerInfo(_0x10efa8);})['then'](function(_0x21f441){var _0x3ae227=parseInt(_0x21f441[_0xa48c('0x65')][_0xa48c('0x66')](0x0));var _0x505bf6=util['format'](_0xa48c('0x67'),_0x50f976['remoteUri'],_0x3cb26c['id']);if(_0x3ae227>0x6){_0x505bf6=util[_0xa48c('0x24')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x50f976[_0xa48c('0x53')],_0x3cb26c['id']);}logger['info'](_0xa48c('0x58'),_0xa48c('0x68'));emit(util[_0xa48c('0x24')](_0xa48c('0x69'),_0x52b12c[_0xa48c('0xc')]),_0xa48c('0x6a'),{'uri':_0x505bf6});})[_0xa48c('0x6b')](function(_0x504785){logger['error'](_0xa48c('0x58'),JSON[_0xa48c('0x22')](_0x504785));});};exports[_0xa48c('0x6c')]=function(_0x551ce3,_0xca1de9,_0x4aa261,_0x4809f7,_0x45fa22,_0x710d34,_0x1677dc){var _0x86f8bd,_0x322286,_0x152748,_0x33ff40;_0x710d34[_0xa48c('0x53')]=intUtil['stripTrailingSlash'](_0x710d34[_0xa48c('0x53')]);_0x710d34[_0xa48c('0x55')]=intUtil[_0xa48c('0x54')](_0x710d34[_0xa48c('0x55')]);def[_0xa48c('0x56')]=util[_0xa48c('0x24')](_0xa48c('0x57'),_0x710d34[_0xa48c('0x53')]);if(_0x1677dc&&_0x1677dc[_0xa48c('0x6d')]&&_0x1677dc[_0xa48c('0x6d')]!==_0xa48c('0x6e')){logger[_0xa48c('0x31')](_0xa48c('0x6f'),'Recording\x20is\x20enabled!');_0xca1de9['recordingURL']=util[_0xa48c('0x24')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x710d34[_0xa48c('0x55')],_0xca1de9[_0xa48c('0x5c')],md5(_0xca1de9[_0xa48c('0x5c')]));}return getConnection(_0x710d34)[_0xa48c('0x2d')](function(_0x4e89da){_0x33ff40=_0x4e89da;return getUser(_0x710d34,_0x4809f7[_0xa48c('0xc')],_0x33ff40);})[_0xa48c('0x2d')](function(_0x29186d){_0x86f8bd=_0x29186d;logger['info'](_0xa48c('0x70'),_0x86f8bd['id']);return getEndUser(_0x710d34,_0xca1de9['destcalleridname'],_0xca1de9[_0xa48c('0x71')],_0x33ff40);})[_0xa48c('0x2d')](function(_0x565889){_0x322286=_0x565889;logger[_0xa48c('0x31')](_0xa48c('0x5e'),_0x322286['id']);return getTicket(_0x710d34,_0x86f8bd,_0x322286,_0x4aa261,_0xca1de9,_0x4aa261[_0xa48c('0x5f')],_0x33ff40,_0xa48c('0x72'));})[_0xa48c('0x2d')](function(_0x2b2230){_0x152748=_0x2b2230;logger[_0xa48c('0x31')](_0xa48c('0x61'));logger[_0xa48c('0x31')](_0xa48c('0x62'),_0x152748['id']);return setRelationship(_0x33ff40,_0x86f8bd,_0x152748,_0xa48c('0x63'));})[_0xa48c('0x2d')](function(){return setRelationship(_0x33ff40,_0x322286,_0x152748,_0xa48c('0x64'));})[_0xa48c('0x2d')](function(){return getServerInfo(_0x33ff40);})[_0xa48c('0x2d')](function(_0x148c68){var _0x1616da=parseInt(_0x148c68[_0xa48c('0x65')][_0xa48c('0x66')](0x0));var _0xabd44c=util[_0xa48c('0x24')](_0xa48c('0x67'),_0x710d34['remoteUri'],_0x152748['id']);if(_0x1616da>0x6){_0xabd44c=util['format'](_0xa48c('0x73'),_0x710d34[_0xa48c('0x53')],_0x152748['id']);}logger['info'](_0xa48c('0x6f'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xa48c('0x24')](_0xa48c('0x69'),_0x4809f7['name']),_0xa48c('0x6a'),{'uri':_0xabd44c});})[_0xa48c('0x6b')](function(_0x294dc7){logger[_0xa48c('0x74')](_0xa48c('0x6f'),JSON[_0xa48c('0x22')](_0x294dc7));});};exports['unmanaged']=function(_0x3a0b1b,_0x3fd23b,_0x38762f,_0xacdb8c,_0x2900a3,_0x27b2f4){var _0x7f191d,_0x5333b4,_0x5e5b17,_0x20ec55;_0x27b2f4[_0xa48c('0x53')]=intUtil[_0xa48c('0x54')](_0x27b2f4[_0xa48c('0x53')]);_0x27b2f4[_0xa48c('0x55')]=intUtil[_0xa48c('0x54')](_0x27b2f4['serverUrl']);def['uri']=util[_0xa48c('0x24')](_0xa48c('0x57'),_0x27b2f4['remoteUri']);if(_0x2900a3&&_0x2900a3[_0xa48c('0x75')]){logger['info']('['+_0x3fd23b['lastevent'][_0xa48c('0x76')]()+']',_0xa48c('0x59'));_0x3fd23b[_0xa48c('0x5a')]=util[_0xa48c('0x24')](_0xa48c('0x5b'),_0x27b2f4[_0xa48c('0x55')],_0x3fd23b[_0xa48c('0x5c')],md5(_0x3fd23b[_0xa48c('0x5c')]));}else{_0x3fd23b[_0xa48c('0x5a')]='';}return getConnection(_0x27b2f4)[_0xa48c('0x2d')](function(_0x85a447){_0x20ec55=_0x85a447;if(!_[_0xa48c('0x28')](_0xacdb8c)){return getUser(_0x27b2f4,_0xacdb8c[_0xa48c('0xc')],_0x20ec55);}else{return getUser(_0x27b2f4,null,_0x20ec55);}})[_0xa48c('0x2d')](function(_0x52fe8a){_0x7f191d=_0x52fe8a;logger[_0xa48c('0x31')](_0xa48c('0x70'),_0x7f191d['id']);return getEndUser(_0x27b2f4,_0x3fd23b['calleridname'],_0x3fd23b[_0xa48c('0x77')],_0x20ec55);})[_0xa48c('0x2d')](function(_0x4b3264){_0x5333b4=_0x4b3264;logger[_0xa48c('0x31')](_0xa48c('0x5e'),_0x5333b4['id']);return getTicket(_0x27b2f4,_0x7f191d,_0x5333b4,_0x38762f,_0x3fd23b,_0x38762f[_0xa48c('0x5f')],_0x20ec55,_0xa48c('0x60'));})[_0xa48c('0x2d')](function(_0x3e3e61){_0x5e5b17=_0x3e3e61;logger[_0xa48c('0x31')](_0xa48c('0x61'));logger[_0xa48c('0x31')](_0xa48c('0x62'),_0x5e5b17['id']);return setRelationship(_0x20ec55,_0x7f191d,_0x5e5b17,_0xa48c('0x63'));})[_0xa48c('0x2d')](function(){return setRelationship(_0x20ec55,_0x5333b4,_0x5e5b17,_0xa48c('0x64'));})['then'](function(){return getServerInfo(_0x20ec55);})[_0xa48c('0x6b')](function(_0x1939a2){logger[_0xa48c('0x74')]('['+_0x3fd23b[_0xa48c('0x78')][_0xa48c('0x76')]()+']',JSON[_0xa48c('0x22')](_0x1939a2));});};
\ No newline at end of file
index f2407a4..d5da676 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28c3=['key','format','%s:\x20%s','join','stripTrailingSlash','slice','substring','lastIndexOf','test','util','getString','length','sortBy','type','string','push','content','variableName','customVariable','Variable','toLowerCase','name','keyValue','keyType'];(function(_0x1e435e,_0x19298d){var _0x258ba9=function(_0x394d4b){while(--_0x394d4b){_0x1e435e['push'](_0x1e435e['shift']());}};_0x258ba9(++_0x19298d);}(_0x28c3,0x1e9));var _0x328c=function(_0x16321b,_0x50131c){_0x16321b=_0x16321b-0x0;var _0x2c33a7=_0x28c3[_0x16321b];return _0x2c33a7;};'use strict';var _=require('lodash');var util=require(_0x328c('0x0'));exports[_0x328c('0x1')]=function(_0x3fa6c6,_0x8eadcf,_0x5a7c0e){var _0x10cf3d=[];if(_0x3fa6c6[_0x328c('0x2')]>0x0){var _0x5b8c6d=_[_0x328c('0x3')](_0x3fa6c6,['id']);for(var _0x432465=0x0;_0x432465<_0x5b8c6d[_0x328c('0x2')];_0x432465++){var _0xbfb61f=_0x5b8c6d[_0x432465];if(_0xbfb61f[_0x328c('0x4')]===_0x328c('0x5')){_0x10cf3d[_0x328c('0x6')](_0xbfb61f[_0x328c('0x7')]);}else if(_0xbfb61f[_0x328c('0x4')]==='variable'&&_0xbfb61f[_0x328c('0x8')]){_0x8eadcf[_0xbfb61f[_0x328c('0x8')]]&&_0x10cf3d[_0x328c('0x6')](_0x8eadcf[_0xbfb61f[_0x328c('0x8')]]['toString']());}else if(_0xbfb61f[_0x328c('0x4')]===_0x328c('0x9')&&_0xbfb61f['Variable']&&_0xbfb61f[_0x328c('0xa')]['name']){_0x8eadcf[_0xbfb61f[_0x328c('0xa')]['name'][_0x328c('0xb')]()]&&_0x10cf3d[_0x328c('0x6')](_0x8eadcf[_0xbfb61f[_0x328c('0xa')][_0x328c('0xc')]['toLowerCase']()]['toString']());}else if(_0xbfb61f['type']===_0x328c('0xd')){if(_0xbfb61f[_0x328c('0xe')]==='string'&&_0xbfb61f[_0x328c('0xf')]){_0x10cf3d[_0x328c('0x6')](util[_0x328c('0x10')]('%s:\x20%s',_0xbfb61f['key'],_0xbfb61f['keyContent']));}else if(_0xbfb61f[_0x328c('0xe')]==='variable'&&_0xbfb61f[_0x328c('0x8')]&&_0xbfb61f[_0x328c('0xf')]){_0x8eadcf[_0xbfb61f['variableName']]&&_0x10cf3d[_0x328c('0x6')](util[_0x328c('0x10')]('%s:\x20%s',_0xbfb61f[_0x328c('0xf')],_0x8eadcf[_0xbfb61f[_0x328c('0x8')]]));}else if(_0xbfb61f[_0x328c('0xe')]===_0x328c('0x9')&&_0xbfb61f[_0x328c('0xa')]&&_0xbfb61f[_0x328c('0xa')]['name']&&_0xbfb61f['key']){_0x8eadcf[_0xbfb61f[_0x328c('0xa')][_0x328c('0xc')][_0x328c('0xb')]()]&&_0x10cf3d['push'](util['format'](_0x328c('0x11'),_0xbfb61f[_0x328c('0xf')],_0x8eadcf[_0xbfb61f['Variable']['name']['toLowerCase']()]));}}}}return _0x10cf3d[_0x328c('0x12')](_0x5a7c0e);};exports[_0x328c('0x13')]=function(_0x318a14){var _0x2952e8=_0x318a14[_0x328c('0x14')](-0x1);if(_0x2952e8==='/'){_0x318a14=_0x318a14[_0x328c('0x15')](0x0,_0x318a14[_0x328c('0x16')](_0x2952e8));}return _0x318a14;};exports['validateEmail']=function(_0x402191){if(!_['isNil'](_0x402191)&&_0x402191!==''){var _0x3bd054=/^(([^<>()\[\]\\.,;:\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 _0x3bd054[_0x328c('0x17')](String(_0x402191)['toLowerCase']());}else{return![];}};
\ No newline at end of file
+var _0x8a35=['variable','variableName','Variable','name','toLowerCase','toString','keyValue','keyType','key','format','%s:\x20%s','keyContent','stripTrailingSlash','slice','validateEmail','isNil','test','getString','length','sortBy','type','string','push','content'];(function(_0x15c56d,_0x5cfdbc){var _0x21b156=function(_0x32c6fa){while(--_0x32c6fa){_0x15c56d['push'](_0x15c56d['shift']());}};_0x21b156(++_0x5cfdbc);}(_0x8a35,0x191));var _0x58a3=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x8a35[_0x160c73];return _0xd9302;};'use strict';var _=require('lodash');var util=require('util');exports[_0x58a3('0x0')]=function(_0x128c33,_0x3a3089,_0x19e902){var _0x31f46d=[];if(_0x128c33[_0x58a3('0x1')]>0x0){var _0xb91ffa=_[_0x58a3('0x2')](_0x128c33,['id']);for(var _0x2eff41=0x0;_0x2eff41<_0xb91ffa['length'];_0x2eff41++){var _0x8a86f1=_0xb91ffa[_0x2eff41];if(_0x8a86f1[_0x58a3('0x3')]===_0x58a3('0x4')){_0x31f46d[_0x58a3('0x5')](_0x8a86f1[_0x58a3('0x6')]);}else if(_0x8a86f1[_0x58a3('0x3')]===_0x58a3('0x7')&&_0x8a86f1[_0x58a3('0x8')]){_0x3a3089[_0x8a86f1[_0x58a3('0x8')]]&&_0x31f46d['push'](_0x3a3089[_0x8a86f1['variableName']]['toString']());}else if(_0x8a86f1[_0x58a3('0x3')]==='customVariable'&&_0x8a86f1[_0x58a3('0x9')]&&_0x8a86f1['Variable'][_0x58a3('0xa')]){_0x3a3089[_0x8a86f1['Variable']['name'][_0x58a3('0xb')]()]&&_0x31f46d[_0x58a3('0x5')](_0x3a3089[_0x8a86f1[_0x58a3('0x9')][_0x58a3('0xa')]['toLowerCase']()][_0x58a3('0xc')]());}else if(_0x8a86f1[_0x58a3('0x3')]===_0x58a3('0xd')){if(_0x8a86f1[_0x58a3('0xe')]===_0x58a3('0x4')&&_0x8a86f1[_0x58a3('0xf')]){_0x31f46d[_0x58a3('0x5')](util[_0x58a3('0x10')](_0x58a3('0x11'),_0x8a86f1['key'],_0x8a86f1[_0x58a3('0x12')]));}else if(_0x8a86f1[_0x58a3('0xe')]===_0x58a3('0x7')&&_0x8a86f1[_0x58a3('0x8')]&&_0x8a86f1[_0x58a3('0xf')]){_0x3a3089[_0x8a86f1[_0x58a3('0x8')]]&&_0x31f46d[_0x58a3('0x5')](util[_0x58a3('0x10')](_0x58a3('0x11'),_0x8a86f1[_0x58a3('0xf')],_0x3a3089[_0x8a86f1[_0x58a3('0x8')]]));}else if(_0x8a86f1['keyType']==='customVariable'&&_0x8a86f1[_0x58a3('0x9')]&&_0x8a86f1[_0x58a3('0x9')]['name']&&_0x8a86f1[_0x58a3('0xf')]){_0x3a3089[_0x8a86f1['Variable'][_0x58a3('0xa')][_0x58a3('0xb')]()]&&_0x31f46d[_0x58a3('0x5')](util[_0x58a3('0x10')](_0x58a3('0x11'),_0x8a86f1['key'],_0x3a3089[_0x8a86f1[_0x58a3('0x9')][_0x58a3('0xa')][_0x58a3('0xb')]()]));}}}}return _0x31f46d['join'](_0x19e902);};exports[_0x58a3('0x13')]=function(_0xdd7bfb){var _0x39c951=_0xdd7bfb[_0x58a3('0x14')](-0x1);if(_0x39c951==='/'){_0xdd7bfb=_0xdd7bfb['substring'](0x0,_0xdd7bfb['lastIndexOf'](_0x39c951));}return _0xdd7bfb;};exports[_0x58a3('0x15')]=function(_0x4d21d6){if(!_[_0x58a3('0x16')](_0x4d21d6)&&_0x4d21d6!==''){var _0x4a7108=/^(([^<>()\[\]\\.,;:\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 _0x4a7108[_0x58a3('0x17')](String(_0x4d21d6)[_0x58a3('0xb')]());}else{return![];}};
\ No newline at end of file
index 1839d73..b6d5dd7 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(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xa9e0[_0x2f5ac5];return _0x37c9a8;};'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 _0xd8b0=['info','Creating\x20new\x20ticket...','merge','Normal','Subjects','POST','format','%s/webservice.php','remoteUri','create','username','sessionName','HelpDesk','stringify','success','result','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','error','statusCode','[vTiger],\x20%s,\x20%s,\x20%s','validateEmail','Getting\x20agent\x20with\x20email','then','Agent\x20found!','resolve','email1','first_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','admin','catch','userId','getUser','Searching\x20end\x20user\x20with\x20phone','GET','query','Enduser\x20found!','firstname','Enduser\x20created.','lastname','phone','accessKey','getchallenge','login','token','getConnection','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','recordingURL','email','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','outbound','recordingFormat','none','[OUTBOUND]','uniqueid','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','user:%s','lastevent','toUpperCase','lodash','request-promise','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger','redis','localhost','socket.io-emitter','emit','length','forEach','includes','picklist','idField','content','toString','type','variable','variableName','customVariable','Variable','name','toLowerCase'];(function(_0x12b8ec,_0x1655be){var _0x21af77=function(_0xe59f){while(--_0xe59f){_0x12b8ec['push'](_0x12b8ec['shift']());}};_0x21af77(++_0x1655be);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x0d8b('0x0'));var rp=require(_0x0d8b('0x1'));var BPromise=require('bluebird');var md5=require('md5');var util=require('util');var Redis=require(_0x0d8b('0x2'));var intUtil=require(_0x0d8b('0x3'));var config=require(_0x0d8b('0x4'));var logger=require(_0x0d8b('0x5'))(_0x0d8b('0x6'));config['redis']=_['defaults'](config[_0x0d8b('0x7')],{'host':_0x0d8b('0x8'),'port':0x18eb});var io=require(_0x0d8b('0x9'))(new Redis(config['redis']));function emit(_0x413284,_0x284169,_0x58e4e2){io['to'](_0x413284)[_0x0d8b('0xa')](_0x284169,_0x58e4e2);}function getCustomFields(_0x348e65,_0x3b027f){var _0x1f4800={};if(_0x348e65[_0x0d8b('0xb')]>0x0){_[_0x0d8b('0xc')](_0x348e65,function(_0x2c5e9e){if(_[_0x0d8b('0xd')](['string',_0x0d8b('0xe')],_0x2c5e9e['type'])&&_0x2c5e9e[_0x0d8b('0xf')]){_0x1f4800[_0x2c5e9e[_0x0d8b('0xf')]]=_0x2c5e9e[_0x0d8b('0x10')][_0x0d8b('0x11')]();}else if(_0x2c5e9e[_0x0d8b('0x12')]===_0x0d8b('0x13')&&_0x2c5e9e[_0x0d8b('0x14')]&&_0x2c5e9e[_0x0d8b('0xf')]&&_0x3b027f[_0x2c5e9e[_0x0d8b('0x14')]]){_0x1f4800[_0x2c5e9e[_0x0d8b('0xf')]]=_0x3b027f[_0x2c5e9e[_0x0d8b('0x14')]][_0x0d8b('0x11')]();}else if(_0x2c5e9e[_0x0d8b('0x12')]===_0x0d8b('0x15')&&_0x2c5e9e['Variable']&&_0x2c5e9e[_0x0d8b('0x16')][_0x0d8b('0x17')]&&_0x2c5e9e[_0x0d8b('0xf')]&&_0x3b027f[_0x2c5e9e[_0x0d8b('0x16')][_0x0d8b('0x17')]['toLowerCase']()]){_0x1f4800[_0x2c5e9e[_0x0d8b('0xf')]]=_0x3b027f[_0x2c5e9e[_0x0d8b('0x16')][_0x0d8b('0x17')][_0x0d8b('0x18')]()][_0x0d8b('0x11')]();}});}return _0x1f4800;}function createTicket(_0x18dd2d,_0x264b39,_0xa3612a,_0x4a15bf,_0x27512e,_0x23d58f,_0x196c0a){logger[_0x0d8b('0x19')](_0x0d8b('0x1a'));var _0x5b709c=_[_0x0d8b('0x1b')]({'parent_id':'','assigned_user_id':_0x264b39['id'],'ticketpriorities':_0x0d8b('0x1c'),'ticketstatus':'Open','ticket_title':intUtil['getString'](_0x4a15bf[_0x0d8b('0x1d')],_0x27512e,'\x20'),'description':intUtil['getString'](_0x4a15bf['Descriptions'],_0x27512e,'\x0a'),'contact_id':_0xa3612a['id']},getCustomFields(_0x23d58f,_0x27512e));var _0x5527d8={'method':_0x0d8b('0x1e'),'uri':util[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x18dd2d[_0x0d8b('0x21')]),'form':{'operation':_0x0d8b('0x22'),'username':_0x18dd2d[_0x0d8b('0x23')],'sessionName':_0x196c0a[_0x0d8b('0x24')],'elementType':_0x0d8b('0x25'),'element':JSON[_0x0d8b('0x26')](_0x5b709c)},'json':!![]};return request(_0x5527d8)['then'](function(_0xe8bbee){if(_0xe8bbee[_0x0d8b('0x27')]){return BPromise['resolve']({'id':_0xe8bbee[_0x0d8b('0x28')]['id']});}else{throw new Error(util['format'](_0x0d8b('0x29'),JSON[_0x0d8b('0x26')](_0xe8bbee[_0x0d8b('0x2a')])));}})['catch'](function(_0x59a905){var _0x28f639=_0x59a905[_0x0d8b('0x2b')]||0x1f4;logger['error'](_0x0d8b('0x2c'),'createTicket',_0x28f639,JSON[_0x0d8b('0x26')](_0x59a905));});}function getUser(_0x4b59e5,_0x97050a,_0x48f24f){if(intUtil[_0x0d8b('0x2d')](_0x97050a)){logger['info'](_0x0d8b('0x2e'),_0x97050a);return request({'method':'GET','uri':util[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x4b59e5[_0x0d8b('0x21')]),'qs':{'operation':'query','username':_0x4b59e5['username'],'sessionName':_0x48f24f['sessionName'],'query':util[_0x0d8b('0x1f')]('SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;',_0x97050a)},'json':!![]})[_0x0d8b('0x2f')](function(_0x54f6f3){if(_0x54f6f3['success']&&_0x54f6f3[_0x0d8b('0x28')][_0x0d8b('0xb')]){logger[_0x0d8b('0x19')](_0x0d8b('0x30'));return BPromise[_0x0d8b('0x31')]({'id':_0x54f6f3[_0x0d8b('0x28')][0x0]['id'],'email':_0x54f6f3[_0x0d8b('0x28')][0x0][_0x0d8b('0x32')],'name':_0x54f6f3['result'][0x0][_0x0d8b('0x33')]+'\x20'+_0x54f6f3[_0x0d8b('0x28')]['last_name']});}else{logger[_0x0d8b('0x19')](_0x0d8b('0x34'));return BPromise[_0x0d8b('0x31')]({'id':_0x48f24f['userId'],'email':_0x4b59e5[_0x0d8b('0x23')],'name':_0x0d8b('0x35')});}})[_0x0d8b('0x36')](function(_0x31ceba){var _0x933e01=_0x31ceba['statusCode']||0x1f4;logger[_0x0d8b('0x2a')](_0x0d8b('0x2c'),'getUser',_0x933e01,JSON[_0x0d8b('0x26')](_0x31ceba));});}else{logger[_0x0d8b('0x19')](_0x0d8b('0x34'));return BPromise[_0x0d8b('0x31')]({'id':_0x48f24f[_0x0d8b('0x37')],'email':_0x4b59e5['username'],'name':'admin'})[_0x0d8b('0x36')](function(_0x5c2c04){var _0x531c55=_0x5c2c04[_0x0d8b('0x2b')]||0x1f4;logger[_0x0d8b('0x2a')](_0x0d8b('0x2c'),_0x0d8b('0x38'),_0x531c55,JSON[_0x0d8b('0x26')](_0x5c2c04));});}}function getEndUser(_0x24c789,_0x579324,_0x6e5bab,_0x6a02ad){logger[_0x0d8b('0x19')](_0x0d8b('0x39'),_0x6e5bab);return request({'method':_0x0d8b('0x3a'),'uri':util[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x24c789['remoteUri']),'qs':{'operation':_0x0d8b('0x3b'),'username':_0x24c789[_0x0d8b('0x23')],'sessionName':_0x6a02ad[_0x0d8b('0x24')],'query':util[_0x0d8b('0x1f')]('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;',_0x6e5bab,_0x6e5bab,_0x6e5bab,_0x6e5bab,_0x6e5bab)},'json':!![]})[_0x0d8b('0x2f')](function(_0x4b4bde){if(_0x4b4bde[_0x0d8b('0x27')]&&_0x4b4bde[_0x0d8b('0x28')][_0x0d8b('0xb')]){logger[_0x0d8b('0x19')](_0x0d8b('0x3c'));return BPromise[_0x0d8b('0x31')]({'id':_0x4b4bde[_0x0d8b('0x28')][0x0]['id'],'name':_0x4b4bde[_0x0d8b('0x28')][0x0][_0x0d8b('0x3d')]+'\x20'+_0x4b4bde[_0x0d8b('0x28')][0x0]['lastname'],'phone':_0x6e5bab});}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'method':'POST','uri':util['format'](_0x0d8b('0x20'),_0x24c789[_0x0d8b('0x21')]),'form':{'operation':_0x0d8b('0x22'),'sessionName':_0x6a02ad['sessionName'],'elementType':'Contacts','element':JSON[_0x0d8b('0x26')]({'lastname':_0x579324,'phone':_0x6e5bab,'assigned_user_id':'\x20'})},'json':!![]})[_0x0d8b('0x2f')](function(_0x344278){logger['info'](_0x0d8b('0x3e'));return BPromise[_0x0d8b('0x31')]({'id':_0x344278['result']['id'],'name':_0x344278['result'][_0x0d8b('0x3f')],'phone':_0x344278['result'][_0x0d8b('0x40')]});})['catch'](function(_0x53f643){var _0x30ccee=_0x53f643[_0x0d8b('0x2b')]||0x1f4;logger['error']('[vTiger],\x20%s,\x20%s,\x20%s','getEndUser',_0x30ccee,JSON['stringify'](_0x53f643));});}});}function getConnection(_0x374d40){var _0x1e0498=_0x374d40[_0x0d8b('0x23')];var _0x490eda=_0x374d40[_0x0d8b('0x41')];return request({'method':_0x0d8b('0x3a'),'uri':util[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x374d40[_0x0d8b('0x21')]),'qs':{'operation':_0x0d8b('0x42'),'username':_0x1e0498},'json':!![]})[_0x0d8b('0x2f')](function(_0x1d5067){if(_0x1d5067[_0x0d8b('0x27')]){return request({'method':_0x0d8b('0x1e'),'uri':util[_0x0d8b('0x1f')](_0x0d8b('0x20'),_0x374d40[_0x0d8b('0x21')]),'form':{'operation':_0x0d8b('0x43'),'username':_0x1e0498,'accessKey':md5(_0x1d5067[_0x0d8b('0x28')][_0x0d8b('0x44')]+_0x490eda)},'json':!![]});}})[_0x0d8b('0x2f')](function(_0x1e162c){if(_0x1e162c[_0x0d8b('0x27')]){return BPromise['resolve'](_0x1e162c[_0x0d8b('0x28')]);}else{throw new Error(util['format']('Account\x20%d\x20is\x20not\x20valid',_0x374d40['id']));}})[_0x0d8b('0x36')](function(_0x113fb7){var _0x3f943a=_0x113fb7[_0x0d8b('0x2b')]||0x1f4;logger['error'](_0x0d8b('0x2c'),_0x0d8b('0x45'),_0x3f943a,JSON[_0x0d8b('0x26')](_0x113fb7));});}function request(_0x241587){logger[_0x0d8b('0x19')]('[HTTP]',JSON['stringify'](_0x241587));return rp(_0x241587);}exports['queue']=function(_0x573f4f,_0x368ede,_0xf22c3c,_0x5e3bb4,_0x4950a8,_0x44c5c1){var _0x3d3cb6,_0x5c5bd7,_0x5ef6c3,_0x900906;_0x44c5c1[_0x0d8b('0x21')]=intUtil[_0x0d8b('0x46')](_0x44c5c1[_0x0d8b('0x21')]);if(_0x4950a8&&_0x4950a8[_0x0d8b('0x47')]){logger['info'](_0x0d8b('0x48'),_0x0d8b('0x49'));_0x368ede['recordingURL']=util['format'](_0x0d8b('0x4a'),_0x44c5c1[_0x0d8b('0x4b')],_0x368ede['uniqueid'],md5(_0x368ede['uniqueid']));}else{_0x368ede[_0x0d8b('0x4c')]='';}return getConnection(_0x44c5c1)[_0x0d8b('0x2f')](function(_0x377027){_0x900906=_0x377027;return getUser(_0x44c5c1,_0x5e3bb4[_0x0d8b('0x4d')],_0x900906);})['then'](function(_0x356b3d){_0x3d3cb6=_0x356b3d;logger['info']('The\x20User\x20ID\x20is:',_0x3d3cb6['id']);return getEndUser(_0x44c5c1,_0x368ede[_0x0d8b('0x4e')],_0x368ede[_0x0d8b('0x4f')],_0x900906);})['then'](function(_0x4a8f33){_0x5c5bd7=_0x4a8f33;logger[_0x0d8b('0x19')](_0x0d8b('0x50'),_0x5c5bd7['id']);return createTicket(_0x44c5c1,_0x3d3cb6,_0x5c5bd7,_0xf22c3c,_0x368ede,_0xf22c3c[_0x0d8b('0x51')],_0x900906);})[_0x0d8b('0x2f')](function(_0x3afc3a){_0x5ef6c3=_0x3afc3a;logger[_0x0d8b('0x19')](_0x0d8b('0x52'));logger[_0x0d8b('0x19')]('The\x20Ticket\x20ID\x20is:',_0x5ef6c3['id']);var _0x24a859=util[_0x0d8b('0x1f')](_0x0d8b('0x53'),_0x44c5c1[_0x0d8b('0x21')],_[_0x0d8b('0x54')](_0x5ef6c3['id'],'x')[0x1]);logger[_0x0d8b('0x19')](_0x0d8b('0x48'),_0x0d8b('0x55'));emit(util[_0x0d8b('0x1f')]('user:%s',_0x5e3bb4[_0x0d8b('0x17')]),_0x0d8b('0x56'),{'uri':_0x24a859});})[_0x0d8b('0x36')](function(_0x23de9e){logger[_0x0d8b('0x2a')]('[QUEUE]',JSON[_0x0d8b('0x26')](_0x23de9e));});};exports[_0x0d8b('0x57')]=function(_0x181d49,_0x17a87f,_0x1d6cd4,_0x59ada2,_0x4d0e7c,_0x3b1166,_0x291b83){var _0x3e4a41,_0xbbb520,_0x5a70bd,_0x199122;_0x3b1166[_0x0d8b('0x21')]=intUtil[_0x0d8b('0x46')](_0x3b1166['remoteUri']);_0x3b1166[_0x0d8b('0x4b')]=intUtil['stripTrailingSlash'](_0x3b1166[_0x0d8b('0x4b')]);if(_0x291b83&&_0x291b83[_0x0d8b('0x58')]&&_0x291b83[_0x0d8b('0x58')]!==_0x0d8b('0x59')){logger[_0x0d8b('0x19')](_0x0d8b('0x5a'),'Recording\x20is\x20enabled!');_0x17a87f[_0x0d8b('0x4c')]=util['format'](_0x0d8b('0x4a'),_0x3b1166[_0x0d8b('0x4b')],_0x17a87f[_0x0d8b('0x5b')],md5(_0x17a87f[_0x0d8b('0x5b')]));}return getConnection(_0x3b1166)['then'](function(_0x19e097){_0x199122=_0x19e097;return getUser(_0x3b1166,_0x59ada2[_0x0d8b('0x4d')],_0x199122);})[_0x0d8b('0x2f')](function(_0x2332fc){_0x3e4a41=_0x2332fc;logger[_0x0d8b('0x19')](_0x0d8b('0x5c'),_0x3e4a41['id']);return getEndUser(_0x3b1166,_0x17a87f[_0x0d8b('0x5d')],_0x17a87f[_0x0d8b('0x5e')],_0x199122);})[_0x0d8b('0x2f')](function(_0x34affb){_0xbbb520=_0x34affb;logger['info']('The\x20Enduser\x20ID\x20is:',_0xbbb520['id']);return createTicket(_0x3b1166,_0x3e4a41,_0xbbb520,_0x1d6cd4,_0x17a87f,_0x1d6cd4[_0x0d8b('0x51')],_0x199122);})[_0x0d8b('0x2f')](function(_0x53e399){_0x5a70bd=_0x53e399;logger[_0x0d8b('0x19')]('Ticket\x20created!');logger['info'](_0x0d8b('0x5f'),_0x5a70bd['id']);var _0x1c4e96=util['format']('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x3b1166[_0x0d8b('0x21')],_[_0x0d8b('0x54')](_0x5a70bd['id'],'x')[0x1]);logger[_0x0d8b('0x19')](_0x0d8b('0x5a'),_0x0d8b('0x55'));emit(util[_0x0d8b('0x1f')](_0x0d8b('0x60'),_0x59ada2['name']),_0x0d8b('0x56'),{'uri':_0x1c4e96});})['catch'](function(_0x1a203e){logger[_0x0d8b('0x2a')](_0x0d8b('0x5a'),JSON[_0x0d8b('0x26')](_0x1a203e));});};exports['unmanaged']=function(_0x3fe47d,_0x4a1c4a,_0x3a356b,_0x2c6c5f,_0x1c5fe2,_0x2ebea3){var _0xc5c35f,_0x2b44e5,_0x3e927c,_0x91aa89;_0x2ebea3[_0x0d8b('0x21')]=intUtil[_0x0d8b('0x46')](_0x2ebea3['remoteUri']);_0x2ebea3[_0x0d8b('0x4b')]=intUtil['stripTrailingSlash'](_0x2ebea3[_0x0d8b('0x4b')]);if(_0x1c5fe2&&_0x1c5fe2[_0x0d8b('0x47')]){logger['info']('['+_0x4a1c4a[_0x0d8b('0x61')]['toUpperCase']()+']',_0x0d8b('0x49'));_0x4a1c4a[_0x0d8b('0x4c')]=util[_0x0d8b('0x1f')](_0x0d8b('0x4a'),_0x2ebea3[_0x0d8b('0x4b')],_0x4a1c4a[_0x0d8b('0x5b')],md5(_0x4a1c4a[_0x0d8b('0x5b')]));}else{_0x4a1c4a[_0x0d8b('0x4c')]='';}return getConnection(_0x2ebea3)['then'](function(_0x10eca6){_0x91aa89=_0x10eca6;return getUser(_0x2ebea3,'',_0x91aa89);})[_0x0d8b('0x2f')](function(_0x5b2916){_0xc5c35f=_0x5b2916;logger[_0x0d8b('0x19')](_0x0d8b('0x5c'),_0xc5c35f['id']);return getEndUser(_0x2ebea3,_0x4a1c4a[_0x0d8b('0x4e')],_0x4a1c4a[_0x0d8b('0x4f')],_0x91aa89);})[_0x0d8b('0x2f')](function(_0x9e44b4){_0x2b44e5=_0x9e44b4;logger[_0x0d8b('0x19')](_0x0d8b('0x50'),_0x2b44e5['id']);return createTicket(_0x2ebea3,_0xc5c35f,_0x2b44e5,_0x3a356b,_0x4a1c4a,_0x3a356b[_0x0d8b('0x51')],_0x91aa89);})[_0x0d8b('0x2f')](function(_0xe35028){_0x3e927c=_0xe35028;logger[_0x0d8b('0x19')]('Ticket\x20created!');logger[_0x0d8b('0x19')](_0x0d8b('0x5f'),_0x3e927c['id']);})[_0x0d8b('0x36')](function(_0x58525c){logger['error']('['+_0x4a1c4a[_0x0d8b('0x61')][_0x0d8b('0x62')]()+']',JSON[_0x0d8b('0x26')](_0x58525c));});};
\ No newline at end of file
index bbfcb65..68fe629 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb491=['custom_fields','push','customVariable','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','Authorization','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','%s/agent/tickets/%s','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','destcalleridnum','user:%s','trigger:browser:url','replace','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','POST','merge','Tags','name','getString','Subjects','Descriptions','Fields','Ticket\x20created!','ticket','validateEmail','Getting\x20agent\x20with\x20email','%s/search.json','remoteUri','type:user\x20role:agent\x20email:%s','then','count','find','results','agent','%s/users/me.json','Admin\x20account\x20selected.','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','password','%s:%s','username','authType','token','Basic\x20%s','base64','debug','[HTTP]','stringify','defaults','length','map','forEach','includes','string','picklist','customField','nameField','toLowerCase','type','idField','content','toString','variable','variableName'];(function(_0xa91905,_0x23f6a6){var _0x401bc8=function(_0x36b93f){while(--_0x36b93f){_0xa91905['push'](_0xa91905['shift']());}};_0x401bc8(++_0x23f6a6);}(_0xb491,0x18d));var _0x1b49=function(_0x333fed,_0x3d2122){_0x333fed=_0x333fed-0x0;var _0x12cac2=_0xb491[_0x333fed];return _0x12cac2;};'use strict';var _=require(_0x1b49('0x0'));var rp=require(_0x1b49('0x1'));var md5=require(_0x1b49('0x2'));var util=require('util');var Redis=require(_0x1b49('0x3'));var intUtil=require(_0x1b49('0x4'));var config=require(_0x1b49('0x5'));var logger=require(_0x1b49('0x6'))(_0x1b49('0x7'));config[_0x1b49('0x8')]=_['defaults'](config[_0x1b49('0x8')],{'host':_0x1b49('0x9'),'port':0x18eb});var io=require(_0x1b49('0xa'))(new Redis(config[_0x1b49('0x8')]));function emit(_0x3236bc,_0x4b37cb,_0x3620f4){io['to'](_0x3236bc)[_0x1b49('0xb')](_0x4b37cb,_0x3620f4);}var headers={'Content-Type':_0x1b49('0xc'),'Accept':_0x1b49('0xc')};function getTicket(_0x3ae2f9,_0xee792b,_0x4dd0b2,_0x33f2ec,_0x577de2){logger[_0x1b49('0xd')](_0x1b49('0xe'));return request({'uri':util[_0x1b49('0xf')](_0x1b49('0x10'),_0x3ae2f9['remoteUri']),'method':_0x1b49('0x11'),'body':{'ticket':_[_0x1b49('0x12')]({'requester_id':_0x4dd0b2['id'],'submitter_id':_0xee792b?_0xee792b['id']:undefined,'assignee_id':_0xee792b?_0xee792b['id']:undefined,'tags':getTags(_0x33f2ec[_0x1b49('0x13')],_0x1b49('0x14')),'subject':intUtil[_0x1b49('0x15')](_0x33f2ec[_0x1b49('0x16')],_0x577de2,'\x20'),'description':intUtil[_0x1b49('0x15')](_0x33f2ec[_0x1b49('0x17')],_0x577de2,'\x0a'),'comment':{'public':![],'body':intUtil[_0x1b49('0x15')](_0x33f2ec['Descriptions'],_0x577de2,'\x0a')}},getCustomFields(_0x33f2ec[_0x1b49('0x18')],_0x577de2))}})['then'](function(_0x185173){logger[_0x1b49('0xd')](_0x1b49('0x19'));return _0x185173[_0x1b49('0x1a')];});}function getUser(_0x146580,_0x223c5f){if(intUtil[_0x1b49('0x1b')](_0x223c5f)){logger[_0x1b49('0xd')](_0x1b49('0x1c'),_0x223c5f);return request({'uri':util[_0x1b49('0xf')](_0x1b49('0x1d'),_0x146580[_0x1b49('0x1e')]),'qs':{'query':util['format'](_0x1b49('0x1f'),_0x223c5f)}})[_0x1b49('0x20')](function(_0x340276){if(_0x340276[_0x1b49('0x21')]){logger[_0x1b49('0xd')]('Agent\x20found!');return _[_0x1b49('0x22')](_0x340276[_0x1b49('0x23')],{'email':_0x223c5f,'role':_0x1b49('0x24')});}else{logger['info']('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0x1b49('0xf')](_0x1b49('0x25'),_0x146580[_0x1b49('0x1e')])})['then'](function(_0x3b0098){logger['info'](_0x1b49('0x26'));return _0x3b0098['user'];});}});}else{logger['info'](_0x1b49('0x27'));return request({'uri':util['format'](_0x1b49('0x25'),_0x146580[_0x1b49('0x1e')])})[_0x1b49('0x20')](function(_0x479d93){logger[_0x1b49('0xd')](_0x1b49('0x26'));return _0x479d93[_0x1b49('0x28')];});}}function getEndUser(_0x5b5aed,_0x1940f3,_0x4666c0){logger[_0x1b49('0xd')](_0x1b49('0x29'),_0x4666c0);return request({'uri':util['format'](_0x1b49('0x1d'),_0x5b5aed[_0x1b49('0x1e')]),'qs':{'query':util['format'](_0x1b49('0x2a'),_0x4666c0)}})['then'](function(_0x3bf714){var _0x5bda9d;if(_0x3bf714[_0x1b49('0x23')]['length']){_0x3bf714[_0x1b49('0x23')]=_[_0x1b49('0x2b')](_0x3bf714['results'],{'suspended':![],'role':_0x1b49('0x2c')});if(_0x3bf714[_0x1b49('0x23')]['length']){_0x5bda9d=_[_0x1b49('0x2d')](_0x3bf714[_0x1b49('0x23')]);}}if(_0x5bda9d){logger[_0x1b49('0xd')](_0x1b49('0x2e'));return _0x5bda9d;}else{logger[_0x1b49('0xd')](_0x1b49('0x2f'));return request({'uri':util[_0x1b49('0xf')](_0x1b49('0x30'),_0x5b5aed[_0x1b49('0x1e')]),'method':_0x1b49('0x11'),'body':{'user':{'role':_0x1b49('0x2c'),'name':util[_0x1b49('0xf')]('Caller\x20-\x20%s',_0x1940f3||_0x4666c0),'phone':_0x4666c0}}})[_0x1b49('0x20')](function(_0xf03aac){logger[_0x1b49('0xd')]('Enduser\x20created.');return _0xf03aac[_0x1b49('0x28')];});}});}function getAuth(_0xbec6fe){var _0x19231d;if(_0xbec6fe['authType']===_0x1b49('0x31')){_0x19231d=util[_0x1b49('0xf')](_0x1b49('0x32'),_0xbec6fe[_0x1b49('0x33')],_0xbec6fe[_0x1b49('0x31')]);}else if(_0xbec6fe[_0x1b49('0x34')]===_0x1b49('0x35')){_0x19231d=util[_0x1b49('0xf')]('%s/token:%s',_0xbec6fe['username'],_0xbec6fe[_0x1b49('0x35')]);}return util[_0x1b49('0xf')](_0x1b49('0x36'),new Buffer(_0x19231d)['toString'](_0x1b49('0x37')));}function request(_0x591099){logger[_0x1b49('0x38')](_0x1b49('0x39'),JSON[_0x1b49('0x3a')](_0x591099));return rp(_[_0x1b49('0x3b')](_0x591099,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x2b1884,_0x3fa610){var _0x34ba02=[];if(_0x2b1884&&_0x2b1884[_0x1b49('0x3c')]>0x0){_0x34ba02=_[_0x1b49('0x3d')](_0x2b1884,_0x3fa610);}return _0x34ba02;}function getCustomFields(_0x3bdad2,_0x53ffda){var _0x4f2b18=[];var _0x23666d={'custom_fields':[]};if(_0x3bdad2[_0x1b49('0x3c')]>0x0){_[_0x1b49('0x3e')](_0x3bdad2,function(_0x44d5aa){if(_[_0x1b49('0x3f')]([_0x1b49('0x40'),_0x1b49('0x41')],_0x44d5aa['type'])&&_0x44d5aa['nameField']&&!_0x44d5aa[_0x1b49('0x42')]){_0x23666d[_0x44d5aa[_0x1b49('0x43')][_0x1b49('0x44')]()]=_0x44d5aa['content']['toString']();}else if(_[_0x1b49('0x3f')]([_0x1b49('0x40'),_0x1b49('0x41')],_0x44d5aa[_0x1b49('0x45')])&&_0x44d5aa[_0x1b49('0x46')]&&_0x44d5aa[_0x1b49('0x42')]){_0x23666d['custom_fields']['push']({'id':_0x44d5aa[_0x1b49('0x46')],'value':_0x44d5aa[_0x1b49('0x47')][_0x1b49('0x48')]()});}else if(_0x44d5aa[_0x1b49('0x45')]===_0x1b49('0x49')&&_0x44d5aa[_0x1b49('0x4a')]&&_0x44d5aa[_0x1b49('0x46')]&&_0x44d5aa[_0x1b49('0x42')]){_0x53ffda[_0x44d5aa[_0x1b49('0x4a')]]&&_0x23666d[_0x1b49('0x4b')][_0x1b49('0x4c')]({'id':_0x44d5aa[_0x1b49('0x46')],'value':_0x53ffda[_0x44d5aa['variableName']]['toString']()});}else if(_0x44d5aa[_0x1b49('0x45')]===_0x1b49('0x4d')&&_0x44d5aa[_0x1b49('0x4e')]&&_0x44d5aa['Variable'][_0x1b49('0x14')]&&_0x44d5aa[_0x1b49('0x46')]&&_0x44d5aa['customField']){_0x53ffda[_0x44d5aa['Variable']['name']['toLowerCase']()]&&_0x23666d[_0x1b49('0x4b')][_0x1b49('0x4c')]({'id':_0x44d5aa[_0x1b49('0x46')],'value':_0x53ffda[_0x44d5aa[_0x1b49('0x4e')][_0x1b49('0x14')][_0x1b49('0x44')]()][_0x1b49('0x48')]()});}});}return _0x23666d;}exports[_0x1b49('0x4f')]=function(_0x401b31,_0xa07620,_0x1c0b33,_0x507f7e,_0x2f99f6,_0x58d010){var _0x3f78cd,_0x1b421a;_0x58d010['remoteUri']=intUtil[_0x1b49('0x50')](_0x58d010[_0x1b49('0x1e')]);_0x58d010[_0x1b49('0x51')]=intUtil[_0x1b49('0x50')](_0x58d010['serverUrl']);if(_0x2f99f6&&_0x2f99f6[_0x1b49('0x52')]){logger[_0x1b49('0xd')](_0x1b49('0x53'),_0x1b49('0x54'));_0xa07620[_0x1b49('0x55')]=util[_0x1b49('0xf')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x58d010[_0x1b49('0x51')],_0xa07620['uniqueid'],md5(_0xa07620['uniqueid']));}else{_0xa07620[_0x1b49('0x55')]='';}headers[_0x1b49('0x56')]=getAuth(_0x58d010);return getUser(_0x58d010,_0x507f7e['email'])[_0x1b49('0x20')](function(_0x5ab56b){_0x3f78cd=_0x5ab56b;logger[_0x1b49('0xd')](_0x1b49('0x57'),_0x3f78cd['id']);return getEndUser(_0x58d010,_0xa07620[_0x1b49('0x58')],_0xa07620[_0x1b49('0x59')]);})[_0x1b49('0x20')](function(_0x1bf710){_0x1b421a=_0x1bf710;logger[_0x1b49('0xd')](_0x1b49('0x5a'),_0x1b421a['id']);return getTicket(_0x58d010,_0x3f78cd,_0x1b421a,_0x1c0b33,_0xa07620);})['then'](function(_0x225c3c){if(_0x225c3c){logger[_0x1b49('0xd')]('The\x20Ticket\x20ID\x20is:',_0x225c3c['id']);switch(_0x58d010[_0x1b49('0x45')]){case _0x1b49('0x5b'):logger['info'](_0x1b49('0x53'),_0x1b49('0x5c'));return request({'uri':util[_0x1b49('0xf')](_0x1b49('0x5d'),_0x58d010[_0x1b49('0x1e')],_0x3f78cd['id'],_0x225c3c['id']),'method':'POST'});case _0x1b49('0x5e'):logger[_0x1b49('0xd')]('[QUEUE]',_0x1b49('0x5f'));emit(util[_0x1b49('0xf')]('user:%s',_0x507f7e[_0x1b49('0x14')]),'trigger:browser:url',{'uri':util[_0x1b49('0xf')](_0x1b49('0x60'),_0x58d010['remoteUri']['replace']('/api/v2',''),_0x225c3c['id'])});break;default:logger[_0x1b49('0x61')]('[QUEUE]',_0x1b49('0x62'));}}})[_0x1b49('0x63')](function(_0x4285c8){logger[_0x1b49('0x61')](_0x1b49('0x64'),util[_0x1b49('0x65')](_0x4285c8,{'showHidden':!![],'depth':null}));});};exports[_0x1b49('0x66')]=function(_0xa7fe17,_0x34977c,_0x474bc7,_0x391e09,_0x433007,_0x39341d,_0x13b730){var _0x1d2243,_0x4a8e41;_0x39341d[_0x1b49('0x1e')]=intUtil[_0x1b49('0x50')](_0x39341d[_0x1b49('0x1e')]);_0x39341d[_0x1b49('0x51')]=intUtil[_0x1b49('0x50')](_0x39341d['serverUrl']);if(_0x13b730&&_0x13b730['recordingFormat']&&_0x13b730[_0x1b49('0x67')]!==_0x1b49('0x68')){logger['info'](_0x1b49('0x69'),_0x1b49('0x54'));_0x34977c[_0x1b49('0x55')]=util[_0x1b49('0xf')](_0x1b49('0x6a'),_0x39341d['serverUrl'],_0x34977c[_0x1b49('0x6b')],md5(_0x34977c[_0x1b49('0x6b')]));}headers['Authorization']=getAuth(_0x39341d);return getUser(_0x39341d,_0x391e09[_0x1b49('0x6c')])['then'](function(_0x199e9e){_0x1d2243=_0x199e9e;logger['info'](_0x1b49('0x57'),_0x1d2243['id']);return getEndUser(_0x39341d,_0x34977c['destcalleridname'],_0x34977c[_0x1b49('0x6d')]);})[_0x1b49('0x20')](function(_0x4f077f){_0x4a8e41=_0x4f077f;logger['info']('The\x20Enduser\x20ID\x20is:',_0x4a8e41['id']);return getTicket(_0x39341d,_0x1d2243,_0x4a8e41,_0x474bc7,_0x34977c);})[_0x1b49('0x20')](function(_0x11613f){if(_0x11613f){logger[_0x1b49('0xd')]('The\x20Ticket\x20ID\x20is:',_0x11613f['id']);switch(_0x39341d[_0x1b49('0x45')]){case _0x1b49('0x5b'):logger[_0x1b49('0xd')]('[OUTBOUND]',_0x1b49('0x5c'));return request({'uri':util[_0x1b49('0xf')](_0x1b49('0x5d'),_0x39341d[_0x1b49('0x1e')],_0x1d2243['id'],_0x11613f['id']),'method':_0x1b49('0x11')});case _0x1b49('0x5e'):logger[_0x1b49('0xd')]('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x1b49('0xf')](_0x1b49('0x6e'),_0x391e09[_0x1b49('0x14')]),_0x1b49('0x6f'),{'uri':util[_0x1b49('0xf')](_0x1b49('0x60'),_0x39341d[_0x1b49('0x1e')][_0x1b49('0x70')]('/api/v2',''),_0x11613f['id'])});break;default:logger[_0x1b49('0x61')](_0x1b49('0x69'),_0x1b49('0x62'));}}})[_0x1b49('0x63')](function(_0x347a9f){logger[_0x1b49('0x61')](_0x1b49('0x71'),util[_0x1b49('0x65')](_0x347a9f,{'showHidden':!![],'depth':null}));});};exports[_0x1b49('0x72')]=function(_0x5d3ed7,_0x4ecd77,_0x8371ff,_0x468482,_0x479947,_0x50e1e6){var _0x14a050,_0x1f223c;_0x50e1e6['remoteUri']=intUtil[_0x1b49('0x50')](_0x50e1e6[_0x1b49('0x1e')]);_0x50e1e6[_0x1b49('0x51')]=intUtil[_0x1b49('0x50')](_0x50e1e6[_0x1b49('0x51')]);if(_0x479947&&_0x479947[_0x1b49('0x52')]){logger[_0x1b49('0xd')]('['+_0x4ecd77[_0x1b49('0x73')][_0x1b49('0x74')]()+']',_0x1b49('0x54'));_0x4ecd77[_0x1b49('0x55')]=util[_0x1b49('0xf')](_0x1b49('0x6a'),_0x50e1e6[_0x1b49('0x51')],_0x4ecd77[_0x1b49('0x6b')],md5(_0x4ecd77['uniqueid']));}else{_0x4ecd77[_0x1b49('0x55')]='';}headers[_0x1b49('0x56')]=getAuth(_0x50e1e6);return getUser(_0x50e1e6)['then'](function(_0x52445c){_0x14a050=_0x52445c;logger['info']('The\x20User\x20ID\x20is:',_0x14a050['id']);return getEndUser(_0x50e1e6,_0x4ecd77['calleridname'],_0x4ecd77[_0x1b49('0x59')]);})['then'](function(_0x19b193){_0x1f223c=_0x19b193;logger[_0x1b49('0xd')](_0x1b49('0x5a'),_0x1f223c['id']);return getTicket(_0x50e1e6,_0x14a050,_0x1f223c,_0x8371ff,_0x4ecd77);})[_0x1b49('0x20')](function(_0x4996ea){if(_0x4996ea){logger['info']('The\x20Ticket\x20ID\x20is:',_0x4996ea['id']);}})[_0x1b49('0x63')](function(_0x377abe){logger[_0x1b49('0x61')]('['+_0x4ecd77[_0x1b49('0x73')][_0x1b49('0x74')]()+']'+_0x1b49('0x75'),util['inspect'](_0x377abe,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x7a09=['[OUTBOUND]','/api/v2','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','calleridname','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','./util','../../../../config/environment','zendesk','redis','defaults','localhost','socket.io-emitter','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','Tags','name','getString','Subjects','Descriptions','Ticket\x20created!','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','then','Agent\x20found!','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','length','end-user','first','Enduser\x20found!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','username','password','token','%s/token:%s','Basic\x20%s','base64','[HTTP]','stringify','GET','map','forEach','string','picklist','type','nameField','toLowerCase','content','toString','includes','idField','customField','custom_fields','push','variable','variableName','Variable','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','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','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','destcalleridname'];(function(_0x3bd429,_0xa8d04c){var _0x1b04e3=function(_0x4d7307){while(--_0x4d7307){_0x3bd429['push'](_0x3bd429['shift']());}};_0x1b04e3(++_0xa8d04c);}(_0x7a09,0xe6));var _0x97a0=function(_0x57b5d5,_0x25b4ee){_0x57b5d5=_0x57b5d5-0x0;var _0x24e2b5=_0x7a09[_0x57b5d5];return _0x24e2b5;};'use strict';var _=require(_0x97a0('0x0'));var rp=require(_0x97a0('0x1'));var md5=require(_0x97a0('0x2'));var util=require(_0x97a0('0x3'));var Redis=require('ioredis');var intUtil=require(_0x97a0('0x4'));var config=require(_0x97a0('0x5'));var logger=require('../../../../config/logger')(_0x97a0('0x6'));config[_0x97a0('0x7')]=_[_0x97a0('0x8')](config[_0x97a0('0x7')],{'host':_0x97a0('0x9'),'port':0x18eb});var io=require(_0x97a0('0xa'))(new Redis(config['redis']));function emit(_0x404318,_0x43bb2e,_0x472a9a){io['to'](_0x404318)['emit'](_0x43bb2e,_0x472a9a);}var headers={'Content-Type':_0x97a0('0xb'),'Accept':_0x97a0('0xb')};function getTicket(_0x31dfe4,_0x205193,_0x1a1a2f,_0xc6ce67,_0x2055d3){logger[_0x97a0('0xc')](_0x97a0('0xd'));return request({'uri':util[_0x97a0('0xe')](_0x97a0('0xf'),_0x31dfe4[_0x97a0('0x10')]),'method':_0x97a0('0x11'),'body':{'ticket':_[_0x97a0('0x12')]({'requester_id':_0x1a1a2f['id'],'submitter_id':_0x205193?_0x205193['id']:undefined,'assignee_id':_0x205193?_0x205193['id']:undefined,'tags':getTags(_0xc6ce67[_0x97a0('0x13')],_0x97a0('0x14')),'subject':intUtil[_0x97a0('0x15')](_0xc6ce67[_0x97a0('0x16')],_0x2055d3,'\x20'),'description':intUtil[_0x97a0('0x15')](_0xc6ce67[_0x97a0('0x17')],_0x2055d3,'\x0a'),'comment':{'public':![],'body':intUtil[_0x97a0('0x15')](_0xc6ce67[_0x97a0('0x17')],_0x2055d3,'\x0a')}},getCustomFields(_0xc6ce67['Fields'],_0x2055d3))}})['then'](function(_0x32d8d7){logger[_0x97a0('0xc')](_0x97a0('0x18'));return _0x32d8d7['ticket'];});}function getUser(_0x361077,_0x10d090){if(intUtil['validateEmail'](_0x10d090)){logger[_0x97a0('0xc')](_0x97a0('0x19'),_0x10d090);return request({'uri':util[_0x97a0('0xe')](_0x97a0('0x1a'),_0x361077[_0x97a0('0x10')]),'qs':{'query':util['format'](_0x97a0('0x1b'),_0x10d090)}})[_0x97a0('0x1c')](function(_0xff73ce){if(_0xff73ce['count']){logger[_0x97a0('0xc')](_0x97a0('0x1d'));return _[_0x97a0('0x1e')](_0xff73ce[_0x97a0('0x1f')],{'email':_0x10d090,'role':_0x97a0('0x20')});}else{logger[_0x97a0('0xc')](_0x97a0('0x21'));return request({'uri':util[_0x97a0('0xe')](_0x97a0('0x22'),_0x361077[_0x97a0('0x10')])})[_0x97a0('0x1c')](function(_0x1e63ff){logger[_0x97a0('0xc')](_0x97a0('0x23'));return _0x1e63ff[_0x97a0('0x24')];});}});}else{logger[_0x97a0('0xc')](_0x97a0('0x21'));return request({'uri':util[_0x97a0('0xe')](_0x97a0('0x22'),_0x361077['remoteUri'])})[_0x97a0('0x1c')](function(_0x6c36f1){logger[_0x97a0('0xc')]('Admin\x20account\x20selected.');return _0x6c36f1[_0x97a0('0x24')];});}}function getEndUser(_0x2a86dc,_0x28136e,_0xf04939){logger[_0x97a0('0xc')](_0x97a0('0x25'),_0xf04939);return request({'uri':util['format'](_0x97a0('0x1a'),_0x2a86dc[_0x97a0('0x10')]),'qs':{'query':util['format'](_0x97a0('0x26'),_0xf04939)}})['then'](function(_0x36f119){var _0x182a5e;if(_0x36f119[_0x97a0('0x1f')][_0x97a0('0x27')]){_0x36f119[_0x97a0('0x1f')]=_['filter'](_0x36f119[_0x97a0('0x1f')],{'suspended':![],'role':_0x97a0('0x28')});if(_0x36f119[_0x97a0('0x1f')][_0x97a0('0x27')]){_0x182a5e=_[_0x97a0('0x29')](_0x36f119['results']);}}if(_0x182a5e){logger[_0x97a0('0xc')](_0x97a0('0x2a'));return _0x182a5e;}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0x97a0('0xe')](_0x97a0('0x2b'),_0x2a86dc[_0x97a0('0x10')]),'method':'POST','body':{'user':{'role':_0x97a0('0x28'),'name':util[_0x97a0('0xe')](_0x97a0('0x2c'),_0x28136e||_0xf04939),'phone':_0xf04939}}})[_0x97a0('0x1c')](function(_0x3305a3){logger['info'](_0x97a0('0x2d'));return _0x3305a3[_0x97a0('0x24')];});}});}function getAuth(_0x4bd49c){var _0x1a4fe9;if(_0x4bd49c[_0x97a0('0x2e')]==='password'){_0x1a4fe9=util[_0x97a0('0xe')]('%s:%s',_0x4bd49c[_0x97a0('0x2f')],_0x4bd49c[_0x97a0('0x30')]);}else if(_0x4bd49c['authType']===_0x97a0('0x31')){_0x1a4fe9=util[_0x97a0('0xe')](_0x97a0('0x32'),_0x4bd49c['username'],_0x4bd49c[_0x97a0('0x31')]);}return util[_0x97a0('0xe')](_0x97a0('0x33'),new Buffer(_0x1a4fe9)['toString'](_0x97a0('0x34')));}function request(_0x51a64d){logger['debug'](_0x97a0('0x35'),JSON[_0x97a0('0x36')](_0x51a64d));return rp(_[_0x97a0('0x8')](_0x51a64d,{'method':_0x97a0('0x37'),'headers':headers,'json':!![]}));}function getTags(_0x34fa10,_0x1c26aa){var _0x3e5045=[];if(_0x34fa10&&_0x34fa10[_0x97a0('0x27')]>0x0){_0x3e5045=_[_0x97a0('0x38')](_0x34fa10,_0x1c26aa);}return _0x3e5045;}function getCustomFields(_0x5a3775,_0x5d0f00){var _0x356c3f=[];var _0x40b4b0={'custom_fields':[]};if(_0x5a3775[_0x97a0('0x27')]>0x0){_[_0x97a0('0x39')](_0x5a3775,function(_0x2cf03b){if(_['includes']([_0x97a0('0x3a'),_0x97a0('0x3b')],_0x2cf03b[_0x97a0('0x3c')])&&_0x2cf03b[_0x97a0('0x3d')]&&!_0x2cf03b['customField']){_0x40b4b0[_0x2cf03b[_0x97a0('0x3d')][_0x97a0('0x3e')]()]=_0x2cf03b[_0x97a0('0x3f')][_0x97a0('0x40')]();}else if(_[_0x97a0('0x41')]([_0x97a0('0x3a'),_0x97a0('0x3b')],_0x2cf03b[_0x97a0('0x3c')])&&_0x2cf03b[_0x97a0('0x42')]&&_0x2cf03b[_0x97a0('0x43')]){_0x40b4b0[_0x97a0('0x44')][_0x97a0('0x45')]({'id':_0x2cf03b['idField'],'value':_0x2cf03b[_0x97a0('0x3f')][_0x97a0('0x40')]()});}else if(_0x2cf03b[_0x97a0('0x3c')]===_0x97a0('0x46')&&_0x2cf03b[_0x97a0('0x47')]&&_0x2cf03b['idField']&&_0x2cf03b[_0x97a0('0x43')]){_0x5d0f00[_0x2cf03b[_0x97a0('0x47')]]&&_0x40b4b0[_0x97a0('0x44')][_0x97a0('0x45')]({'id':_0x2cf03b[_0x97a0('0x42')],'value':_0x5d0f00[_0x2cf03b['variableName']][_0x97a0('0x40')]()});}else if(_0x2cf03b['type']==='customVariable'&&_0x2cf03b['Variable']&&_0x2cf03b['Variable'][_0x97a0('0x14')]&&_0x2cf03b[_0x97a0('0x42')]&&_0x2cf03b[_0x97a0('0x43')]){_0x5d0f00[_0x2cf03b[_0x97a0('0x48')]['name']['toLowerCase']()]&&_0x40b4b0[_0x97a0('0x44')][_0x97a0('0x45')]({'id':_0x2cf03b[_0x97a0('0x42')],'value':_0x5d0f00[_0x2cf03b['Variable']['name'][_0x97a0('0x3e')]()][_0x97a0('0x40')]()});}});}return _0x40b4b0;}exports['queue']=function(_0x4b5586,_0x47a1ad,_0xd02b66,_0x15ea06,_0x5176fe,_0x7b0b54){var _0x542cb8,_0x498099;_0x7b0b54[_0x97a0('0x10')]=intUtil[_0x97a0('0x49')](_0x7b0b54[_0x97a0('0x10')]);_0x7b0b54[_0x97a0('0x4a')]=intUtil[_0x97a0('0x49')](_0x7b0b54[_0x97a0('0x4a')]);if(_0x5176fe&&_0x5176fe['monitor_format']){logger[_0x97a0('0xc')](_0x97a0('0x4b'),_0x97a0('0x4c'));_0x47a1ad['recordingURL']=util['format'](_0x97a0('0x4d'),_0x7b0b54[_0x97a0('0x4a')],_0x47a1ad['uniqueid'],md5(_0x47a1ad[_0x97a0('0x4e')]));}else{_0x47a1ad[_0x97a0('0x4f')]='';}headers[_0x97a0('0x50')]=getAuth(_0x7b0b54);return getUser(_0x7b0b54,_0x15ea06[_0x97a0('0x51')])[_0x97a0('0x1c')](function(_0x56c96d){_0x542cb8=_0x56c96d;logger[_0x97a0('0xc')](_0x97a0('0x52'),_0x542cb8['id']);return getEndUser(_0x7b0b54,_0x47a1ad['calleridname'],_0x47a1ad[_0x97a0('0x53')]);})[_0x97a0('0x1c')](function(_0x5aabdb){_0x498099=_0x5aabdb;logger[_0x97a0('0xc')](_0x97a0('0x54'),_0x498099['id']);return getTicket(_0x7b0b54,_0x542cb8,_0x498099,_0xd02b66,_0x47a1ad);})[_0x97a0('0x1c')](function(_0x592e2e){if(_0x592e2e){logger['info'](_0x97a0('0x55'),_0x592e2e['id']);switch(_0x7b0b54[_0x97a0('0x3c')]){case _0x97a0('0x56'):logger[_0x97a0('0xc')]('[QUEUE]',_0x97a0('0x57'));return request({'uri':util[_0x97a0('0xe')](_0x97a0('0x58'),_0x7b0b54['remoteUri'],_0x542cb8['id'],_0x592e2e['id']),'method':_0x97a0('0x11')});case _0x97a0('0x59'):logger[_0x97a0('0xc')]('[QUEUE]',_0x97a0('0x5a'));emit(util[_0x97a0('0xe')](_0x97a0('0x5b'),_0x15ea06[_0x97a0('0x14')]),_0x97a0('0x5c'),{'uri':util[_0x97a0('0xe')](_0x97a0('0x5d'),_0x7b0b54['remoteUri']['replace']('/api/v2',''),_0x592e2e['id'])});break;default:logger[_0x97a0('0x5e')]('[QUEUE]',_0x97a0('0x5f'));}}})[_0x97a0('0x60')](function(_0x211109){logger[_0x97a0('0x5e')](_0x97a0('0x61'),util[_0x97a0('0x62')](_0x211109,{'showHidden':!![],'depth':null}));});};exports[_0x97a0('0x63')]=function(_0x3e2259,_0xfc93b9,_0x2bd896,_0x16b9a4,_0x4f78af,_0x5b5042,_0x6629f7){var _0x118d2d,_0x4391b4;_0x5b5042['remoteUri']=intUtil['stripTrailingSlash'](_0x5b5042[_0x97a0('0x10')]);_0x5b5042[_0x97a0('0x4a')]=intUtil['stripTrailingSlash'](_0x5b5042[_0x97a0('0x4a')]);if(_0x6629f7&&_0x6629f7[_0x97a0('0x64')]&&_0x6629f7[_0x97a0('0x64')]!==_0x97a0('0x65')){logger[_0x97a0('0xc')]('[OUTBOUND]','Recording\x20is\x20enabled!');_0xfc93b9[_0x97a0('0x4f')]=util[_0x97a0('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5b5042[_0x97a0('0x4a')],_0xfc93b9[_0x97a0('0x4e')],md5(_0xfc93b9[_0x97a0('0x4e')]));}headers[_0x97a0('0x50')]=getAuth(_0x5b5042);return getUser(_0x5b5042,_0x16b9a4[_0x97a0('0x51')])[_0x97a0('0x1c')](function(_0x48374d){_0x118d2d=_0x48374d;logger[_0x97a0('0xc')](_0x97a0('0x52'),_0x118d2d['id']);return getEndUser(_0x5b5042,_0xfc93b9[_0x97a0('0x66')],_0xfc93b9['destcalleridnum']);})['then'](function(_0x19bcfd){_0x4391b4=_0x19bcfd;logger[_0x97a0('0xc')]('The\x20Enduser\x20ID\x20is:',_0x4391b4['id']);return getTicket(_0x5b5042,_0x118d2d,_0x4391b4,_0x2bd896,_0xfc93b9);})[_0x97a0('0x1c')](function(_0x29d83a){if(_0x29d83a){logger['info']('The\x20Ticket\x20ID\x20is:',_0x29d83a['id']);switch(_0x5b5042[_0x97a0('0x3c')]){case _0x97a0('0x56'):logger['info'](_0x97a0('0x67'),_0x97a0('0x57'));return request({'uri':util[_0x97a0('0xe')](_0x97a0('0x58'),_0x5b5042[_0x97a0('0x10')],_0x118d2d['id'],_0x29d83a['id']),'method':_0x97a0('0x11')});case _0x97a0('0x59'):logger[_0x97a0('0xc')](_0x97a0('0x67'),_0x97a0('0x5a'));emit(util[_0x97a0('0xe')](_0x97a0('0x5b'),_0x16b9a4[_0x97a0('0x14')]),_0x97a0('0x5c'),{'uri':util[_0x97a0('0xe')]('%s/agent/tickets/%s',_0x5b5042['remoteUri']['replace'](_0x97a0('0x68'),''),_0x29d83a['id'])});break;default:logger[_0x97a0('0x5e')]('[OUTBOUND]','Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x97a0('0x60')](function(_0x5700ca){logger[_0x97a0('0x5e')](_0x97a0('0x69'),util[_0x97a0('0x62')](_0x5700ca,{'showHidden':!![],'depth':null}));});};exports[_0x97a0('0x6a')]=function(_0x3c6384,_0x27b762,_0x63c7db,_0x8c417c,_0x404445,_0x235787){var _0x158dc8,_0x44be34;_0x235787[_0x97a0('0x10')]=intUtil[_0x97a0('0x49')](_0x235787['remoteUri']);_0x235787[_0x97a0('0x4a')]=intUtil[_0x97a0('0x49')](_0x235787[_0x97a0('0x4a')]);if(_0x404445&&_0x404445['monitor_format']){logger[_0x97a0('0xc')]('['+_0x27b762[_0x97a0('0x6b')][_0x97a0('0x6c')]()+']',_0x97a0('0x4c'));_0x27b762[_0x97a0('0x4f')]=util[_0x97a0('0xe')](_0x97a0('0x4d'),_0x235787[_0x97a0('0x4a')],_0x27b762['uniqueid'],md5(_0x27b762[_0x97a0('0x4e')]));}else{_0x27b762[_0x97a0('0x4f')]='';}headers[_0x97a0('0x50')]=getAuth(_0x235787);return getUser(_0x235787)[_0x97a0('0x1c')](function(_0x47081c){_0x158dc8=_0x47081c;logger[_0x97a0('0xc')](_0x97a0('0x52'),_0x158dc8['id']);return getEndUser(_0x235787,_0x27b762[_0x97a0('0x6d')],_0x27b762['calleridnum']);})['then'](function(_0x31863e){_0x44be34=_0x31863e;logger['info'](_0x97a0('0x54'),_0x44be34['id']);return getTicket(_0x235787,_0x158dc8,_0x44be34,_0x63c7db,_0x27b762);})[_0x97a0('0x1c')](function(_0x45a14f){if(_0x45a14f){logger['info']('The\x20Ticket\x20ID\x20is:',_0x45a14f['id']);}})[_0x97a0('0x60')](function(_0x4706fe){logger[_0x97a0('0x5e')]('['+_0x27b762[_0x97a0('0x6b')][_0x97a0('0x6c')]()+']'+_0x97a0('0x6e'),util[_0x97a0('0x62')](_0x4706fe,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 4051834..876b540 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9406=['queue','stripTrailingSlash','host','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','serverUrl','/api/voice/recordings/','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','Inbound','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','[OUTBOUND]','com','destcalleridname','destcalleridnum','Outbound','trigger:browser:url','unmanaged','toUpperCase','md5','util','moment','ioredis','../../../../config/logger','zoho','redis','defaults','localhost','socket.io-emitter','emit','debug','[HTTP]','stringify','length','forEach','includes','picklist','type','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.eu','POST','/oauth/v2/token','clientId','clientSecret','then','add','seconds','catch','error','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','/crm/v2/','role','first_name','last_name','code','details','startCase','moduleCreate','Error:\x20','log','CREATE\x20ERROR','contact_lead','uri','https://www.zohoapis.','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','nothing','contact','lead','administrator','Subject','getString','Who_Id','Full_Name','First_Name','Last_Name','Leads','What_Id','Call_Duration','utc','talktime','mm:ss','answertime','endtime','YYYY-MM-DDTHH:mm:ss','starttime','lastevent','Call_Result','Called','complete','connect','rejected','Rejected','abandoned','Abandoned','timeout','Timeout','Call_Start_Time','outbound','agentcalledAt','Call_Type','merge','/crm/v2/Calls','SUCCESS','Call\x20created!','err'];(function(_0x4da300,_0x558d4d){var _0x347a48=function(_0x3fc0f0){while(--_0x3fc0f0){_0x4da300['push'](_0x4da300['shift']());}};_0x347a48(++_0x558d4d);}(_0x9406,0x14b));var _0x6940=function(_0x242d17,_0x30a922){_0x242d17=_0x242d17-0x0;var _0x501a6d=_0x9406[_0x242d17];return _0x501a6d;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0x6940('0x0'));var util=require(_0x6940('0x1'));var intUtil=require('./util');var moment=require(_0x6940('0x2'));var Redis=require(_0x6940('0x3'));var BPromise=require('bluebird');var config=require('../../../../config/environment');var logger=require(_0x6940('0x4'))(_0x6940('0x5'));config[_0x6940('0x6')]=_[_0x6940('0x7')](config[_0x6940('0x6')],{'host':_0x6940('0x8'),'port':0x18eb});var io=require(_0x6940('0x9'))(new Redis(config[_0x6940('0x6')]));function emit(_0x187340,_0x482d5b,_0x14b378){io['to'](_0x187340)[_0x6940('0xa')](_0x482d5b,_0x14b378);}function request(_0x125705){logger[_0x6940('0xb')](_0x6940('0xc'),JSON[_0x6940('0xd')](_0x125705));return rp(_0x125705);}function getCustomFields(_0xec0ffa,_0x4e2d55){var _0xe4bc3a={};if(_0xec0ffa[_0x6940('0xe')]>0x0){_[_0x6940('0xf')](_0xec0ffa,function(_0x5f3473){if(_[_0x6940('0x10')](['string',_0x6940('0x11')],_0x5f3473[_0x6940('0x12')])&&_0x5f3473[_0x6940('0x13')]){_0xe4bc3a[_0x5f3473[_0x6940('0x13')]]=_0x5f3473[_0x6940('0x14')][_0x6940('0x15')]();}else if(_0x5f3473[_0x6940('0x12')]===_0x6940('0x16')&&_0x5f3473[_0x6940('0x17')]&&_0x5f3473[_0x6940('0x13')]&&_0x4e2d55[_0x5f3473[_0x6940('0x17')]]){_0xe4bc3a[_0x5f3473[_0x6940('0x13')]]=_0x4e2d55[_0x5f3473[_0x6940('0x17')]][_0x6940('0x15')]();}else if(_0x5f3473['type']===_0x6940('0x18')&&_0x5f3473[_0x6940('0x19')]&&_0x5f3473['Variable']['name']&&_0x5f3473['idField']&&_0x4e2d55[_0x5f3473[_0x6940('0x19')][_0x6940('0x1a')][_0x6940('0x1b')]()]){_0xe4bc3a[_0x5f3473[_0x6940('0x13')]]=_0x4e2d55[_0x5f3473[_0x6940('0x19')][_0x6940('0x1a')][_0x6940('0x1b')]()][_0x6940('0x15')]();}});}return _0xe4bc3a;}function getName(_0x445153){if(_0x445153[_0x6940('0x1c')]('\x20')>0x0){var _0x560aa0=_0x445153[_0x6940('0x1d')](/ (.+)/);if(_0x560aa0[0x1]){return _0x560aa0;}}return[_0x445153,_0x445153];}var accountsTokens={};function getAccessToken(_0x2c4a1a){return new Promise(function(_0x16437e,_0x4ef8ef){if(!_[_0x6940('0x1e')](accountsTokens[_0x2c4a1a['id']])&&!_[_0x6940('0x1e')](accountsTokens[_0x2c4a1a['id']][_0x6940('0x1f')])){if(moment()['isBefore'](accountsTokens[_0x2c4a1a['id']][_0x6940('0x20')])){_0x16437e(accountsTokens[_0x2c4a1a['id']]['access_token']);}}var _0x220575;switch(_0x2c4a1a[_0x6940('0x21')]){case'US':_0x220575=_0x6940('0x22');break;case'AU':_0x220575='https://accounts.zoho.com.au';break;case'EU':_0x220575=_0x6940('0x23');break;case'IN':_0x220575='https://accounts.zoho.in';break;case'CN':_0x220575='https://accounts.zoho.com.cn';break;default:_0x220575=_0x6940('0x23');break;}var _0x209d11={'method':_0x6940('0x24'),'uri':_0x220575+_0x6940('0x25'),'qs':{'refresh_token':_0x2c4a1a['refreshToken'],'client_id':_0x2c4a1a[_0x6940('0x26')],'client_secret':_0x2c4a1a[_0x6940('0x27')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x209d11)[_0x6940('0x28')](function(_0x51eadd){accountsTokens[_0x2c4a1a['id']]={'access_token':_0x51eadd[_0x6940('0x1f')],'expires_in':moment()[_0x6940('0x29')](_0x51eadd[_0x6940('0x20')],_0x6940('0x2a'))};_0x16437e(_0x51eadd[_0x6940('0x1f')]);})[_0x6940('0x2b')](function(_0x33a4e0){logger[_0x6940('0x2c')](_0x6940('0x2d'),_0x33a4e0[_0x6940('0x2e')]);_0x4ef8ef(_0x33a4e0);});});}function getUser(_0xa4e0b5,_0x35b44a,_0x506dfd,_0x40ac15){logger[_0x6940('0x2f')](_0x6940('0x30'));return request({'method':_0x6940('0x31'),'uri':util[_0x6940('0x32')](_0x6940('0x33'),_0x35b44a),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':_0x6940('0x34')+_0xa4e0b5},'json':!![]})[_0x6940('0x28')](function(_0x5e9541){if(_0x5e9541[_0x6940('0x35')]){var _0x1ef281=-0x1;if(_[_0x6940('0x36')](_0x5e9541[_0x6940('0x35')])){if(!_['isNil'](_0x40ac15)){_0x1ef281=_[_0x6940('0x37')](_0x5e9541['users'],function(_0x48a196){return _0x48a196['email']===_0x40ac15;});}if(_0x1ef281>=0x0){logger[_0x6940('0x2f')](_0x6940('0x38'));}else{logger[_0x6940('0x2f')](_0x6940('0x39'));_0x1ef281=_[_0x6940('0x37')](_0x5e9541[_0x6940('0x35')],function(_0x4c9ac9){return _0x4c9ac9[_0x6940('0x3a')][_0x6940('0x1a')]===_0x6940('0x3b');});}return _0x5e9541[_0x6940('0x35')][_0x1ef281];}else{if(_0x5e9541[_0x6940('0x3c')][_0x6940('0x3a')][_0x6940('0x1a')]===_0x6940('0x3b')){logger[_0x6940('0x2f')](_0x6940('0x39'));user=_0x5e9541[_0x6940('0x3c')];return user;}else{logger['error'](_0x6940('0x3d'),JSON['stringify'](_0x5e9541));throw new Error(_0x6940('0x3e')+JSON[_0x6940('0xd')](_0x5e9541));}}}else{logger[_0x6940('0x2c')]('The\x20failing\x20result\x20is',JSON[_0x6940('0xd')](_0x5e9541));throw new Error(_0x6940('0x3e')+JSON[_0x6940('0xd')](_0x5e9541));}})['catch'](function(_0x2b5bd8){console[_0x6940('0x2c')](_0x2b5bd8);});}function getZohoUser(_0x8906fc,_0x3b6d11){return new BPromise(function(_0x3d2cdc,_0x5e4200){request(_0x8906fc)[_0x6940('0x28')](function(_0x25dd91){var _0x2d8192=null;if(_0x25dd91){_0x2d8192=_0x25dd91[_0x6940('0x3f')][0x0];_0x2d8192[_0x6940('0x40')]=_0x3b6d11;}_0x3d2cdc(_0x2d8192);})[_0x6940('0x2b')](function(_0x25563a){_0x5e4200(_0x25563a);});});}function createEndUser(_0x3b95dc,_0x3614bd,_0x2f1253,_0x4a2c82,_0x11a614,_0x1bf252){var _0x2f1253=getName(_0x2f1253);return request({'method':_0x6940('0x24'),'uri':'https://www.zohoapis.'+_0x3614bd+_0x6940('0x41')+_['startCase'](_0x1bf252['moduleCreate'])+'s','body':{'data':[{'Last_Name':_0x2f1253[0x1],'First_Name':_0x2f1253[0x0],'Phone':_0x4a2c82,'Owner':{'name':!_[_0x6940('0x1e')](_0x11a614[_0x6940('0x42')]['name'])?_0x11a614[_0x6940('0x42')]['name']:!_[_0x6940('0x1e')](_0x11a614[_0x6940('0x43')])?_0x11a614[_0x6940('0x43')]+'\x20'+_0x11a614[_0x6940('0x44')]:_0x11a614[_0x6940('0x44')],'id':_0x11a614['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x3b95dc},'json':!![]})[_0x6940('0x28')](function(_0x446d7b){if(_0x446d7b&&_0x446d7b[_0x6940('0x3f')][0x0][_0x6940('0x45')]==='SUCCESS'){var _0x5dda15=_0x446d7b[_0x6940('0x3f')][0x0][_0x6940('0x46')];_0x5dda15['enduserType']=_[_0x6940('0x47')](_0x1bf252[_0x6940('0x48')])+'s';return _0x5dda15;}logger['error'](_0x6940('0x3d'),JSON['stringify'](data));throw new Error(_0x6940('0x49')+JSON['stringify'](data));})['catch'](function(_0x233a93){console[_0x6940('0x4a')](_0x6940('0x4b'),_0x233a93);});}function getEndUser(_0x1e74c5,_0x247492,_0xc07b5f,_0xcee348,_0x1d9bc6,_0x3e1996,_0x518ab9){var _0x183d1e={'method':_0x6940('0x31'),'uri':'','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x1e74c5},'json':!![]};switch(_0x518ab9['moduleSearch']){case _0x6940('0x4c'):_0x183d1e[_0x6940('0x4d')]=_0x6940('0x4e')+_0x247492+_0x6940('0x4f')+_0x1d9bc6+'))';return getZohoUser(_0x183d1e,_0x6940('0x50'))[_0x6940('0x28')](function(_0x28d2ee){if(_0x28d2ee)return _0x28d2ee;_0x183d1e['uri']=_0x6940('0x4e')+_0x247492+_0x6940('0x51')+_0x1d9bc6+'))';return getZohoUser(_0x183d1e,'Leads')['then'](function(_0x1bd103){if(_0x1bd103)return _0x1bd103;if(_0x518ab9[_0x6940('0x48')]!=_0x6940('0x52')){return createEndUser(_0x1e74c5,_0x247492,_0xcee348,_0x1d9bc6,_0x3e1996,_0x518ab9);}else{return{};}});});break;case _0x6940('0x53'):_0x183d1e['uri']=_0x6940('0x4e')+_0x247492+_0x6940('0x4f')+_0x1d9bc6+'))';return getZohoUser(_0x183d1e,_0x6940('0x50'))[_0x6940('0x28')](function(_0x151521){if(_0x151521)return _0x151521;if(_0x518ab9[_0x6940('0x48')]!=_0x6940('0x52')){return createEndUser(_0x1e74c5,_0x247492,_0xcee348,_0x1d9bc6,_0x3e1996,_0x518ab9);}else{return{};}});break;case _0x6940('0x54'):_0x183d1e['uri']='https://www.zohoapis.'+_0x247492+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x1d9bc6+'))';return getZohoUser(_0x183d1e,'Leads')[_0x6940('0x28')](function(_0x168144){if(_0x168144)return _0x168144;if(_0x518ab9['moduleCreate']!='nothing'){return createEndUser(_0x1e74c5,_0x247492,_0xcee348,_0x1d9bc6,_0x3e1996,_0x518ab9);}else{return{};}});break;}}function getCall(_0x167c3b,_0x2e8a8b,_0x2ed362,_0x590853,_0x4fea73,_0x244be0,_0x30c2a6,_0x529e16){logger[_0x6940('0x2f')]('Creating\x20new\x20call...');var _0x50f066={};_0x50f066['Owner']={'name':!_['isNil'](_0x590853[_0x6940('0x42')][_0x6940('0x1a')])&&!_[_0x6940('0x1e')](_0x590853[_0x6940('0x3a')]['name'])&&_0x590853[_0x6940('0x3a')][_0x6940('0x1a')]===_0x6940('0x55')?_0x590853[_0x6940('0x42')][_0x6940('0x1a')]:!_[_0x6940('0x1e')](_0x590853['first_name'])?_0x590853[_0x6940('0x43')]+'\x20'+_0x590853[_0x6940('0x44')]:_0x590853['last_name'],'id':_0x590853['id']};_0x50f066[_0x6940('0x56')]=intUtil[_0x6940('0x57')](_0x244be0['Subjects'],_0x30c2a6,'\x20');_0x50f066['Description']=intUtil[_0x6940('0x57')](_0x244be0['Descriptions'],_0x30c2a6,'\x0a');if(_0x4fea73[_0x6940('0x40')]===_0x6940('0x50')){_0x50f066[_0x6940('0x58')]={'name':!_['isNil'](_0x4fea73[_0x6940('0x59')])?_0x4fea73[_0x6940('0x59')]:!_[_0x6940('0x1e')](_0x4fea73[_0x6940('0x5a')])?_0x4fea73[_0x6940('0x5a')]+'\x20'+_0x4fea73['Last_Name']:_0x4fea73[_0x6940('0x5b')],'id':_0x4fea73['id']};}if(_0x4fea73[_0x6940('0x40')]===_0x6940('0x5c')){_0x50f066[_0x6940('0x5d')]={'name':!_[_0x6940('0x1e')](_0x4fea73[_0x6940('0x59')])?_0x4fea73[_0x6940('0x59')]:!_[_0x6940('0x1e')](_0x4fea73[_0x6940('0x5a')])?_0x4fea73[_0x6940('0x5a')]+'\x20'+_0x4fea73[_0x6940('0x5b')]:_0x4fea73['Last_Name'],'id':_0x4fea73['id']};_0x50f066['$se_module']=_[_0x6940('0x47')](_0x4fea73[_0x6940('0x40')]);}if(_0x30c2a6['talktime']){_0x50f066[_0x6940('0x5e')]=moment[_0x6940('0x5f')](parseInt(_0x30c2a6[_0x6940('0x60')])*0x3e8)[_0x6940('0x32')](_0x6940('0x61'));}else if(_0x30c2a6[_0x6940('0x62')]&&_0x30c2a6[_0x6940('0x63')]){_0x50f066[_0x6940('0x5e')]=moment['utc'](moment(_0x30c2a6[_0x6940('0x63')],_0x6940('0x64'))['diff'](moment(_0x30c2a6[_0x6940('0x65')],_0x6940('0x64'))))[_0x6940('0x32')](_0x6940('0x61'));}switch(_0x30c2a6[_0x6940('0x66')]){case'called':_0x50f066[_0x6940('0x67')]=_0x6940('0x68');break;case _0x6940('0x69'):case _0x6940('0x6a'):_0x50f066[_0x6940('0x67')]='Answered';break;case _0x6940('0x6b'):_0x50f066[_0x6940('0x67')]=_0x6940('0x6c');break;case _0x6940('0x6d'):_0x50f066[_0x6940('0x67')]=_0x6940('0x6e');break;case _0x6940('0x6f'):_0x50f066['Call_Result']=_0x6940('0x70');default:}_0x50f066[_0x6940('0x71')]=(_0x529e16===_0x6940('0x72')?moment(_0x30c2a6[_0x6940('0x65')])['format'](_0x6940('0x64')):moment(_0x30c2a6[_0x6940('0x73')])['format']('YYYY-MM-DDTHH:mm:ss'))||moment()['format'](_0x6940('0x64'));_0x50f066[_0x6940('0x74')]=_0x529e16||'Inbound';_0x50f066=_[_0x6940('0x75')](_0x50f066,getCustomFields(_0x244be0['Fields'],_0x30c2a6));return request({'method':_0x6940('0x24'),'uri':'https://www.zohoapis.'+_0x2e8a8b+_0x6940('0x76'),'headers':{'Authorization':_0x6940('0x34')+_0x167c3b},'body':{'data':[_0x50f066]},'json':!![]})[_0x6940('0x28')](function(_0x53dc03){if(_0x53dc03&&_0x53dc03[_0x6940('0x3f')][0x0]['code']===_0x6940('0x77')){logger[_0x6940('0x2f')](_0x6940('0x78'));return{'id':_0x53dc03[_0x6940('0x3f')][0x0][_0x6940('0x46')]['id']};}})[_0x6940('0x2b')](function(_0x257b5){logger[_0x6940('0x2f')]('err',_0x257b5['stack']);console['log'](_0x6940('0x79'),_0x257b5);});}exports[_0x6940('0x7a')]=function(_0x5ca79b,_0x183c1b,_0x28493c,_0x432e44,_0x1f4d64,_0x12fb34){var _0xd0797b,_0x500329,_0x2f12e9;_0x12fb34['host']=intUtil[_0x6940('0x7b')](_0x12fb34[_0x6940('0x7c')]);_0x12fb34['serverUrl']=intUtil['stripTrailingSlash'](_0x12fb34['serverUrl']);if(_0x1f4d64&&_0x1f4d64[_0x6940('0x7d')]){logger[_0x6940('0x2f')](_0x6940('0x7e'),_0x6940('0x7f'));_0x183c1b[_0x6940('0x80')]=_0x12fb34[_0x6940('0x81')]+_0x6940('0x82')+_0x183c1b['uniqueid']+'/downloads?type=uniqueid&token='+md5(_0x183c1b[_0x6940('0x83')]);}else{_0x183c1b['recordingURL']='';}var _0x5e18df=_0x12fb34['host']==='zoho.eu'?'eu':'com';return getAccessToken(_0x12fb34)[_0x6940('0x28')](function(_0x2641c1){_0x2f12e9=_0x2641c1;return getUser(_0x2f12e9,_0x5e18df,_0x12fb34,_0x432e44[_0x6940('0x84')]);})[_0x6940('0x28')](function(_0x269134){_0xd0797b=_0x269134;logger[_0x6940('0x2f')](_0x6940('0x85'),_0xd0797b['id']);return getEndUser(_0x2f12e9,_0x5e18df,_0x12fb34,_0x183c1b[_0x6940('0x86')],_0x183c1b[_0x6940('0x87')],_0xd0797b,_0x28493c);})[_0x6940('0x28')](function(_0x412b67){_0x500329=_0x412b67;return getCall(_0x2f12e9,_0x5e18df,_0x12fb34,_0xd0797b,_0x500329,_0x28493c,_0x183c1b,_0x6940('0x88'));})[_0x6940('0x28')](function(_0x53f6f1){if(_0x53f6f1){logger[_0x6940('0x2f')](_0x6940('0x89'),_0x53f6f1['id']);logger[_0x6940('0x2f')](_0x6940('0x7e'),_0x6940('0x8a'));emit(util[_0x6940('0x32')](_0x6940('0x8b'),_0x432e44[_0x6940('0x1a')]),'trigger:browser:url',{'uri':_0x6940('0x8c')+_0x12fb34['host']+_0x6940('0x8d')+_0x53f6f1['id']});}})[_0x6940('0x2b')](function(_0x219764){logger[_0x6940('0x2c')](_0x6940('0x7e'),JSON[_0x6940('0xd')](_0x219764));});};exports['outbound']=function(_0x1914ff,_0xf195c3,_0x5f4200,_0x587a0d,_0xb62daa,_0x1c5335,_0x4e3336){var _0x30362c,_0x5f1e08,_0x28a50c;_0x1c5335[_0x6940('0x7c')]=intUtil['stripTrailingSlash'](_0x1c5335[_0x6940('0x7c')]);_0x1c5335[_0x6940('0x81')]=intUtil[_0x6940('0x7b')](_0x1c5335['serverUrl']);if(_0x4e3336&&_0x4e3336[_0x6940('0x8e')]&&_0x4e3336[_0x6940('0x8e')]!=='none'){logger[_0x6940('0x2f')](_0x6940('0x8f'),_0x6940('0x7f'));_0xf195c3[_0x6940('0x80')]=_0x1c5335[_0x6940('0x81')]+_0x6940('0x82')+_0xf195c3['uniqueid']+'/downloads?type=uniqueid&token='+md5(_0xf195c3[_0x6940('0x83')]);}var _0x646a0b=_0x1c5335['host']==='zoho.eu'?'eu':_0x6940('0x90');return getAccessToken(_0x1c5335)[_0x6940('0x28')](function(_0x54dce1){_0x28a50c=_0x54dce1;return getUser(_0x28a50c,_0x646a0b,_0x1c5335,_0x587a0d['email']);})['then'](function(_0x2f735f){_0x30362c=_0x2f735f;logger[_0x6940('0x2f')](_0x6940('0x85'),_0x30362c['id']);return getEndUser(_0x28a50c,_0x646a0b,_0x1c5335,_0xf195c3[_0x6940('0x91')],_0xf195c3[_0x6940('0x92')],_0x30362c,_0x5f4200);})[_0x6940('0x28')](function(_0x235aae){_0x5f1e08=_0x235aae;return getCall(_0x28a50c,_0x646a0b,_0x1c5335,_0x30362c,_0x5f1e08,_0x5f4200,_0xf195c3,_0x6940('0x93'));})[_0x6940('0x28')](function(_0x1a53df){if(_0x1a53df){logger[_0x6940('0x2f')](_0x6940('0x89'),_0x1a53df['id']);logger[_0x6940('0x2f')](_0x6940('0x8f'),_0x6940('0x8a'));emit(util[_0x6940('0x32')](_0x6940('0x8b'),_0x587a0d[_0x6940('0x1a')]),_0x6940('0x94'),{'uri':_0x6940('0x8c')+_0x1c5335[_0x6940('0x7c')]+_0x6940('0x8d')+_0x1a53df['id']});}})[_0x6940('0x2b')](function(_0x336e89){logger[_0x6940('0x2c')](_0x6940('0x8f'),JSON[_0x6940('0xd')](_0x336e89));});};exports[_0x6940('0x95')]=function(_0x189d3f,_0x50cb11,_0x1c5722,_0x252c0d,_0x2f682f,_0x1dbf93){var _0x4b70f1,_0x160e75,_0x27acca;_0x1dbf93[_0x6940('0x7c')]=intUtil[_0x6940('0x7b')](_0x1dbf93[_0x6940('0x7c')]);_0x1dbf93['serverUrl']=intUtil[_0x6940('0x7b')](_0x1dbf93[_0x6940('0x81')]);if(_0x2f682f&&_0x2f682f[_0x6940('0x7d')]){logger[_0x6940('0x2f')]('['+_0x50cb11['lastevent'][_0x6940('0x96')]()+']',_0x6940('0x7f'));_0x50cb11[_0x6940('0x80')]=_0x1dbf93['serverUrl']+_0x6940('0x82')+_0x50cb11[_0x6940('0x83')]+'/downloads?type=uniqueid&token='+md5(_0x50cb11[_0x6940('0x83')]);}else{_0x50cb11[_0x6940('0x80')]='';}var _0x201739=_0x1dbf93[_0x6940('0x7c')]==='zoho.eu'?'eu':_0x6940('0x90');return getAccessToken(_0x1dbf93)[_0x6940('0x28')](function(_0x5d924b){_0x27acca=_0x5d924b;return getUser(_0x27acca,_0x201739,_0x1dbf93);})[_0x6940('0x28')](function(_0x51fb1e){_0x4b70f1=_0x51fb1e;logger[_0x6940('0x2f')](_0x6940('0x85'),_0x4b70f1['id']);return getEndUser(_0x27acca,_0x201739,_0x1dbf93,_0x50cb11[_0x6940('0x86')],_0x50cb11[_0x6940('0x87')],_0x4b70f1,_0x1c5722);})[_0x6940('0x28')](function(_0x2f1b36){_0x160e75=_0x2f1b36;return getCall(_0x27acca,_0x201739,_0x1dbf93,_0x4b70f1,_0x160e75,_0x1c5722,_0x50cb11,_0x6940('0x88'));})[_0x6940('0x28')](function(_0x34d3b3){if(_0x34d3b3){logger[_0x6940('0x2f')](_0x6940('0x89'),_0x34d3b3['id']);}})[_0x6940('0x2b')](function(_0x177c2a){logger[_0x6940('0x2c')]('['+_0x50cb11[_0x6940('0x66')]['toUpperCase']()+']',JSON[_0x6940('0xd')](_0x177c2a));});};
\ No newline at end of file
+var _0x40ea=['md5','util','./util','moment','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','redis','localhost','emit','[HTTP]','stringify','length','forEach','includes','string','type','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','indexOf','isNil','isBefore','expires_in','access_token','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.com.cn','/oauth/v2/token','refreshToken','clientId','clientSecret','refresh_token','then','seconds','catch','error','Failing\x20creating\x20the\x20access_token','info','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','users','isArrayLikeObject','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','user','profile','Administrator','The\x20failing\x20result\x20is','data','https://www.zohoapis.','/crm/v2/','startCase','role','first_name','last_name','code','details','moduleCreate','Error:\x20','log','CREATE\x20ERROR','moduleSearch','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','administrator','getString','Subjects','Description','enduserType','Who_Id','Full_Name','First_Name','Last_Name','talktime','Call_Duration','utc','mm:ss','answertime','endtime','diff','called','Call_Result','Called','complete','connect','Answered','rejected','Rejected','abandoned','Abandoned','timeout','Call_Start_Time','starttime','YYYY-MM-DDTHH:mm:ss','agentcalledAt','Call_Type','merge','POST','/crm/v2/Calls','Zoho-oauthtoken\x20','SUCCESS','Call\x20created!','stack','err','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','/downloads?type=uniqueid&token=','uniqueid','zoho.eu','The\x20User\x20ID\x20is:','calleridname','Inbound','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','outbound','recordingFormat','none','[OUTBOUND]','com','destcalleridname','destcalleridnum','Outbound','The\x20Call\x20ID\x20is:','lastevent','calleridnum','toUpperCase'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0x40ea,0x99));var _0xa40e=function(_0x589065,_0x13b60c){_0x589065=_0x589065-0x0;var _0x403444=_0x40ea[_0x589065];return _0x403444;};'use strict';var _=require('lodash');var rp=require('request-promise');var md5=require(_0xa40e('0x0'));var util=require(_0xa40e('0x1'));var intUtil=require(_0xa40e('0x2'));var moment=require(_0xa40e('0x3'));var Redis=require(_0xa40e('0x4'));var BPromise=require(_0xa40e('0x5'));var config=require(_0xa40e('0x6'));var logger=require(_0xa40e('0x7'))(_0xa40e('0x8'));config[_0xa40e('0x9')]=_['defaults'](config[_0xa40e('0x9')],{'host':_0xa40e('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x5624ef,_0x1651ec,_0x43acff){io['to'](_0x5624ef)[_0xa40e('0xb')](_0x1651ec,_0x43acff);}function request(_0x15523e){logger['debug'](_0xa40e('0xc'),JSON[_0xa40e('0xd')](_0x15523e));return rp(_0x15523e);}function getCustomFields(_0x4c1bef,_0x291447){var _0x46a2dc={};if(_0x4c1bef[_0xa40e('0xe')]>0x0){_[_0xa40e('0xf')](_0x4c1bef,function(_0x30a91f){if(_[_0xa40e('0x10')]([_0xa40e('0x11'),'picklist'],_0x30a91f[_0xa40e('0x12')])&&_0x30a91f[_0xa40e('0x13')]){_0x46a2dc[_0x30a91f[_0xa40e('0x13')]]=_0x30a91f[_0xa40e('0x14')][_0xa40e('0x15')]();}else if(_0x30a91f['type']===_0xa40e('0x16')&&_0x30a91f[_0xa40e('0x17')]&&_0x30a91f[_0xa40e('0x13')]&&_0x291447[_0x30a91f[_0xa40e('0x17')]]){_0x46a2dc[_0x30a91f[_0xa40e('0x13')]]=_0x291447[_0x30a91f['variableName']][_0xa40e('0x15')]();}else if(_0x30a91f[_0xa40e('0x12')]===_0xa40e('0x18')&&_0x30a91f[_0xa40e('0x19')]&&_0x30a91f[_0xa40e('0x19')][_0xa40e('0x1a')]&&_0x30a91f[_0xa40e('0x13')]&&_0x291447[_0x30a91f[_0xa40e('0x19')][_0xa40e('0x1a')][_0xa40e('0x1b')]()]){_0x46a2dc[_0x30a91f[_0xa40e('0x13')]]=_0x291447[_0x30a91f[_0xa40e('0x19')]['name']['toLowerCase']()]['toString']();}});}return _0x46a2dc;}function getName(_0x49d81a){if(_0x49d81a[_0xa40e('0x1c')]('\x20')>0x0){var _0x157097=_0x49d81a['split'](/ (.+)/);if(_0x157097[0x1]){return _0x157097;}}return[_0x49d81a,_0x49d81a];}var accountsTokens={};function getAccessToken(_0x475dd7){return new Promise(function(_0x15da67,_0x4ea054){if(!_['isNil'](accountsTokens[_0x475dd7['id']])&&!_[_0xa40e('0x1d')](accountsTokens[_0x475dd7['id']]['access_token'])){if(moment()[_0xa40e('0x1e')](accountsTokens[_0x475dd7['id']][_0xa40e('0x1f')])){_0x15da67(accountsTokens[_0x475dd7['id']][_0xa40e('0x20')]);}}var _0x28eae1;switch(_0x475dd7['zone']){case'US':_0x28eae1=_0xa40e('0x21');break;case'AU':_0x28eae1=_0xa40e('0x22');break;case'EU':_0x28eae1=_0xa40e('0x23');break;case'IN':_0x28eae1='https://accounts.zoho.in';break;case'CN':_0x28eae1=_0xa40e('0x24');break;default:_0x28eae1=_0xa40e('0x23');break;}var _0x287ed2={'method':'POST','uri':_0x28eae1+_0xa40e('0x25'),'qs':{'refresh_token':_0x475dd7[_0xa40e('0x26')],'client_id':_0x475dd7[_0xa40e('0x27')],'client_secret':_0x475dd7[_0xa40e('0x28')],'grant_type':_0xa40e('0x29')},'json':!![]};return rp(_0x287ed2)[_0xa40e('0x2a')](function(_0x47ecf4){accountsTokens[_0x475dd7['id']]={'access_token':_0x47ecf4[_0xa40e('0x20')],'expires_in':moment()['add'](_0x47ecf4[_0xa40e('0x1f')],_0xa40e('0x2b'))};_0x15da67(_0x47ecf4['access_token']);})[_0xa40e('0x2c')](function(_0x444bd3){logger[_0xa40e('0x2d')](_0xa40e('0x2e'),_0x444bd3['stack']);_0x4ea054(_0x444bd3);});});}function getUser(_0x2a6ba7,_0x3376c6,_0x5ec9e0,_0x368dc3){logger[_0xa40e('0x2f')](_0xa40e('0x30'));return request({'method':_0xa40e('0x31'),'uri':util[_0xa40e('0x32')](_0xa40e('0x33'),_0x3376c6),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x2a6ba7},'json':!![]})[_0xa40e('0x2a')](function(_0x59d73b){if(_0x59d73b[_0xa40e('0x34')]){var _0x2086cd=-0x1;if(_[_0xa40e('0x35')](_0x59d73b[_0xa40e('0x34')])){if(!_['isNil'](_0x368dc3)){_0x2086cd=_[_0xa40e('0x36')](_0x59d73b[_0xa40e('0x34')],function(_0x3b728e){return _0x3b728e[_0xa40e('0x37')]===_0x368dc3;});}if(_0x2086cd>=0x0){logger[_0xa40e('0x2f')](_0xa40e('0x38'));}else{logger[_0xa40e('0x2f')](_0xa40e('0x39'));_0x2086cd=_[_0xa40e('0x36')](_0x59d73b[_0xa40e('0x34')],function(_0x3b694b){return _0x3b694b['profile'][_0xa40e('0x1a')]==='Administrator';});}return _0x59d73b[_0xa40e('0x34')][_0x2086cd];}else{if(_0x59d73b[_0xa40e('0x3a')][_0xa40e('0x3b')][_0xa40e('0x1a')]===_0xa40e('0x3c')){logger[_0xa40e('0x2f')](_0xa40e('0x39'));user=_0x59d73b[_0xa40e('0x3a')];return user;}else{logger['error'](_0xa40e('0x3d'),JSON['stringify'](_0x59d73b));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON['stringify'](_0x59d73b));}}}else{logger['error']('The\x20failing\x20result\x20is',JSON[_0xa40e('0xd')](_0x59d73b));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0xa40e('0xd')](_0x59d73b));}})[_0xa40e('0x2c')](function(_0x1d006d){console[_0xa40e('0x2d')](_0x1d006d);});}function getZohoUser(_0x31acd3,_0x23576b){return new BPromise(function(_0x4c8488,_0x4d3c7a){request(_0x31acd3)[_0xa40e('0x2a')](function(_0x35c328){var _0x52f5a7=null;if(_0x35c328){_0x52f5a7=_0x35c328[_0xa40e('0x3e')][0x0];_0x52f5a7['enduserType']=_0x23576b;}_0x4c8488(_0x52f5a7);})[_0xa40e('0x2c')](function(_0x831b4f){_0x4d3c7a(_0x831b4f);});});}function createEndUser(_0x47aecd,_0xa8b2f8,_0x47ecd1,_0x3de1ff,_0x5c4627,_0x4f46ea){var _0x47ecd1=getName(_0x47ecd1);return request({'method':'POST','uri':_0xa40e('0x3f')+_0xa8b2f8+_0xa40e('0x40')+_[_0xa40e('0x41')](_0x4f46ea['moduleCreate'])+'s','body':{'data':[{'Last_Name':_0x47ecd1[0x1],'First_Name':_0x47ecd1[0x0],'Phone':_0x3de1ff,'Owner':{'name':!_['isNil'](_0x5c4627[_0xa40e('0x42')]['name'])?_0x5c4627[_0xa40e('0x42')][_0xa40e('0x1a')]:!_[_0xa40e('0x1d')](_0x5c4627[_0xa40e('0x43')])?_0x5c4627['first_name']+'\x20'+_0x5c4627[_0xa40e('0x44')]:_0x5c4627[_0xa40e('0x44')],'id':_0x5c4627['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x47aecd},'json':!![]})[_0xa40e('0x2a')](function(_0x55e876){if(_0x55e876&&_0x55e876[_0xa40e('0x3e')][0x0][_0xa40e('0x45')]==='SUCCESS'){var _0xc08cae=_0x55e876[_0xa40e('0x3e')][0x0][_0xa40e('0x46')];_0xc08cae['enduserType']=_['startCase'](_0x4f46ea[_0xa40e('0x47')])+'s';return _0xc08cae;}logger['error'](_0xa40e('0x3d'),JSON['stringify'](data));throw new Error(_0xa40e('0x48')+JSON[_0xa40e('0xd')](data));})['catch'](function(_0x46947f){console[_0xa40e('0x49')](_0xa40e('0x4a'),_0x46947f);});}function getEndUser(_0xc3deb4,_0x3ce059,_0x3393af,_0xa35ec9,_0x597707,_0x5b85b,_0x10d882){var _0x2290bf={'method':_0xa40e('0x31'),'uri':'','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0xc3deb4},'json':!![]};switch(_0x10d882[_0xa40e('0x4b')]){case'contact_lead':_0x2290bf[_0xa40e('0x4c')]=_0xa40e('0x3f')+_0x3ce059+_0xa40e('0x4d')+_0x597707+'))';return getZohoUser(_0x2290bf,_0xa40e('0x4e'))[_0xa40e('0x2a')](function(_0x30cb3b){if(_0x30cb3b)return _0x30cb3b;_0x2290bf[_0xa40e('0x4c')]='https://www.zohoapis.'+_0x3ce059+_0xa40e('0x4f')+_0x597707+'))';return getZohoUser(_0x2290bf,_0xa40e('0x50'))[_0xa40e('0x2a')](function(_0x323994){if(_0x323994)return _0x323994;if(_0x10d882[_0xa40e('0x47')]!=_0xa40e('0x51')){return createEndUser(_0xc3deb4,_0x3ce059,_0xa35ec9,_0x597707,_0x5b85b,_0x10d882);}else{return{};}});});break;case'contact':_0x2290bf[_0xa40e('0x4c')]=_0xa40e('0x3f')+_0x3ce059+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x597707+'))';return getZohoUser(_0x2290bf,_0xa40e('0x4e'))[_0xa40e('0x2a')](function(_0x116cdf){if(_0x116cdf)return _0x116cdf;if(_0x10d882['moduleCreate']!='nothing'){return createEndUser(_0xc3deb4,_0x3ce059,_0xa35ec9,_0x597707,_0x5b85b,_0x10d882);}else{return{};}});break;case'lead':_0x2290bf[_0xa40e('0x4c')]=_0xa40e('0x3f')+_0x3ce059+_0xa40e('0x4f')+_0x597707+'))';return getZohoUser(_0x2290bf,_0xa40e('0x50'))[_0xa40e('0x2a')](function(_0x3010f2){if(_0x3010f2)return _0x3010f2;if(_0x10d882[_0xa40e('0x47')]!=_0xa40e('0x51')){return createEndUser(_0xc3deb4,_0x3ce059,_0xa35ec9,_0x597707,_0x5b85b,_0x10d882);}else{return{};}});break;}}function getCall(_0x35f8f2,_0x43a1da,_0x173ef6,_0x4591ba,_0x124fda,_0x57b66a,_0x4209af,_0x176948){logger['info']('Creating\x20new\x20call...');var _0x390e93={};_0x390e93['Owner']={'name':!_[_0xa40e('0x1d')](_0x4591ba[_0xa40e('0x42')]['name'])&&!_['isNil'](_0x4591ba[_0xa40e('0x3b')][_0xa40e('0x1a')])&&_0x4591ba[_0xa40e('0x3b')][_0xa40e('0x1a')]===_0xa40e('0x52')?_0x4591ba[_0xa40e('0x42')][_0xa40e('0x1a')]:!_['isNil'](_0x4591ba['first_name'])?_0x4591ba[_0xa40e('0x43')]+'\x20'+_0x4591ba[_0xa40e('0x44')]:_0x4591ba[_0xa40e('0x44')],'id':_0x4591ba['id']};_0x390e93['Subject']=intUtil[_0xa40e('0x53')](_0x57b66a[_0xa40e('0x54')],_0x4209af,'\x20');_0x390e93[_0xa40e('0x55')]=intUtil[_0xa40e('0x53')](_0x57b66a['Descriptions'],_0x4209af,'\x0a');if(_0x124fda[_0xa40e('0x56')]==='Contacts'){_0x390e93[_0xa40e('0x57')]={'name':!_['isNil'](_0x124fda[_0xa40e('0x58')])?_0x124fda[_0xa40e('0x58')]:!_[_0xa40e('0x1d')](_0x124fda[_0xa40e('0x59')])?_0x124fda[_0xa40e('0x59')]+'\x20'+_0x124fda['Last_Name']:_0x124fda[_0xa40e('0x5a')],'id':_0x124fda['id']};}if(_0x124fda[_0xa40e('0x56')]===_0xa40e('0x50')){_0x390e93['What_Id']={'name':!_[_0xa40e('0x1d')](_0x124fda['Full_Name'])?_0x124fda['Full_Name']:!_[_0xa40e('0x1d')](_0x124fda['First_Name'])?_0x124fda['First_Name']+'\x20'+_0x124fda[_0xa40e('0x5a')]:_0x124fda[_0xa40e('0x5a')],'id':_0x124fda['id']};_0x390e93['$se_module']=_[_0xa40e('0x41')](_0x124fda['enduserType']);}if(_0x4209af[_0xa40e('0x5b')]){_0x390e93[_0xa40e('0x5c')]=moment[_0xa40e('0x5d')](parseInt(_0x4209af['talktime'])*0x3e8)['format'](_0xa40e('0x5e'));}else if(_0x4209af[_0xa40e('0x5f')]&&_0x4209af['endtime']){_0x390e93[_0xa40e('0x5c')]=moment[_0xa40e('0x5d')](moment(_0x4209af[_0xa40e('0x60')],'YYYY-MM-DDTHH:mm:ss')[_0xa40e('0x61')](moment(_0x4209af['starttime'],'YYYY-MM-DDTHH:mm:ss')))['format'](_0xa40e('0x5e'));}switch(_0x4209af['lastevent']){case _0xa40e('0x62'):_0x390e93[_0xa40e('0x63')]=_0xa40e('0x64');break;case _0xa40e('0x65'):case _0xa40e('0x66'):_0x390e93['Call_Result']=_0xa40e('0x67');break;case _0xa40e('0x68'):_0x390e93[_0xa40e('0x63')]=_0xa40e('0x69');break;case _0xa40e('0x6a'):_0x390e93['Call_Result']=_0xa40e('0x6b');break;case _0xa40e('0x6c'):_0x390e93[_0xa40e('0x63')]='Timeout';default:}_0x390e93[_0xa40e('0x6d')]=(_0x176948==='outbound'?moment(_0x4209af[_0xa40e('0x6e')])['format'](_0xa40e('0x6f')):moment(_0x4209af[_0xa40e('0x70')])['format'](_0xa40e('0x6f')))||moment()[_0xa40e('0x32')](_0xa40e('0x6f'));_0x390e93[_0xa40e('0x71')]=_0x176948||'Inbound';_0x390e93=_[_0xa40e('0x72')](_0x390e93,getCustomFields(_0x57b66a['Fields'],_0x4209af));return request({'method':_0xa40e('0x73'),'uri':'https://www.zohoapis.'+_0x43a1da+_0xa40e('0x74'),'headers':{'Authorization':_0xa40e('0x75')+_0x35f8f2},'body':{'data':[_0x390e93]},'json':!![]})[_0xa40e('0x2a')](function(_0x44b350){if(_0x44b350&&_0x44b350[_0xa40e('0x3e')][0x0]['code']===_0xa40e('0x76')){logger[_0xa40e('0x2f')](_0xa40e('0x77'));return{'id':_0x44b350[_0xa40e('0x3e')][0x0]['details']['id']};}})[_0xa40e('0x2c')](function(_0x4e369a){logger[_0xa40e('0x2f')]('err',_0x4e369a[_0xa40e('0x78')]);console['log'](_0xa40e('0x79'),_0x4e369a);});}exports[_0xa40e('0x7a')]=function(_0x19559e,_0x916d50,_0x2467fc,_0x1aec9d,_0x204317,_0x3e009f){var _0x4ba42e,_0x95932f,_0x27de74;_0x3e009f[_0xa40e('0x7b')]=intUtil[_0xa40e('0x7c')](_0x3e009f[_0xa40e('0x7b')]);_0x3e009f[_0xa40e('0x7d')]=intUtil[_0xa40e('0x7c')](_0x3e009f['serverUrl']);if(_0x204317&&_0x204317[_0xa40e('0x7e')]){logger['info'](_0xa40e('0x7f'),_0xa40e('0x80'));_0x916d50[_0xa40e('0x81')]=_0x3e009f['serverUrl']+_0xa40e('0x82')+_0x916d50['uniqueid']+_0xa40e('0x83')+md5(_0x916d50[_0xa40e('0x84')]);}else{_0x916d50['recordingURL']='';}var _0x234844=_0x3e009f[_0xa40e('0x7b')]===_0xa40e('0x85')?'eu':'com';return getAccessToken(_0x3e009f)['then'](function(_0x50d704){_0x27de74=_0x50d704;return getUser(_0x27de74,_0x234844,_0x3e009f,_0x1aec9d[_0xa40e('0x37')]);})[_0xa40e('0x2a')](function(_0xb04381){_0x4ba42e=_0xb04381;logger[_0xa40e('0x2f')](_0xa40e('0x86'),_0x4ba42e['id']);return getEndUser(_0x27de74,_0x234844,_0x3e009f,_0x916d50[_0xa40e('0x87')],_0x916d50['calleridnum'],_0x4ba42e,_0x2467fc);})['then'](function(_0x182f59){_0x95932f=_0x182f59;return getCall(_0x27de74,_0x234844,_0x3e009f,_0x4ba42e,_0x95932f,_0x2467fc,_0x916d50,_0xa40e('0x88'));})[_0xa40e('0x2a')](function(_0x221a28){if(_0x221a28){logger['info']('The\x20Call\x20ID\x20is:',_0x221a28['id']);logger[_0xa40e('0x2f')](_0xa40e('0x7f'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format'](_0xa40e('0x89'),_0x1aec9d[_0xa40e('0x1a')]),_0xa40e('0x8a'),{'uri':_0xa40e('0x8b')+_0x3e009f[_0xa40e('0x7b')]+_0xa40e('0x8c')+_0x221a28['id']});}})[_0xa40e('0x2c')](function(_0x557694){logger[_0xa40e('0x2d')](_0xa40e('0x7f'),JSON[_0xa40e('0xd')](_0x557694));});};exports[_0xa40e('0x8d')]=function(_0xc66a40,_0x48c18a,_0x28f267,_0x297664,_0x161120,_0x21f12c,_0xad3360){var _0x414120,_0x370d9b,_0x4b3619;_0x21f12c['host']=intUtil[_0xa40e('0x7c')](_0x21f12c[_0xa40e('0x7b')]);_0x21f12c[_0xa40e('0x7d')]=intUtil[_0xa40e('0x7c')](_0x21f12c['serverUrl']);if(_0xad3360&&_0xad3360[_0xa40e('0x8e')]&&_0xad3360[_0xa40e('0x8e')]!==_0xa40e('0x8f')){logger[_0xa40e('0x2f')](_0xa40e('0x90'),_0xa40e('0x80'));_0x48c18a[_0xa40e('0x81')]=_0x21f12c['serverUrl']+'/api/voice/recordings/'+_0x48c18a['uniqueid']+_0xa40e('0x83')+md5(_0x48c18a[_0xa40e('0x84')]);}var _0x376f15=_0x21f12c[_0xa40e('0x7b')]===_0xa40e('0x85')?'eu':_0xa40e('0x91');return getAccessToken(_0x21f12c)[_0xa40e('0x2a')](function(_0x486b6a){_0x4b3619=_0x486b6a;return getUser(_0x4b3619,_0x376f15,_0x21f12c,_0x297664[_0xa40e('0x37')]);})[_0xa40e('0x2a')](function(_0x2fdfc6){_0x414120=_0x2fdfc6;logger[_0xa40e('0x2f')](_0xa40e('0x86'),_0x414120['id']);return getEndUser(_0x4b3619,_0x376f15,_0x21f12c,_0x48c18a[_0xa40e('0x92')],_0x48c18a[_0xa40e('0x93')],_0x414120,_0x28f267);})[_0xa40e('0x2a')](function(_0x2f92c8){_0x370d9b=_0x2f92c8;return getCall(_0x4b3619,_0x376f15,_0x21f12c,_0x414120,_0x370d9b,_0x28f267,_0x48c18a,_0xa40e('0x94'));})['then'](function(_0xa3310d){if(_0xa3310d){logger[_0xa40e('0x2f')](_0xa40e('0x95'),_0xa3310d['id']);logger['info'](_0xa40e('0x90'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xa40e('0x32')](_0xa40e('0x89'),_0x297664[_0xa40e('0x1a')]),_0xa40e('0x8a'),{'uri':_0xa40e('0x8b')+_0x21f12c[_0xa40e('0x7b')]+_0xa40e('0x8c')+_0xa3310d['id']});}})['catch'](function(_0x2c9e03){logger[_0xa40e('0x2d')](_0xa40e('0x90'),JSON['stringify'](_0x2c9e03));});};exports['unmanaged']=function(_0xa9e7a4,_0x53021a,_0x44756f,_0x48279b,_0x500a2f,_0x3919c5){var _0x259f82,_0x549dd9,_0x2df3bd;_0x3919c5[_0xa40e('0x7b')]=intUtil['stripTrailingSlash'](_0x3919c5[_0xa40e('0x7b')]);_0x3919c5['serverUrl']=intUtil['stripTrailingSlash'](_0x3919c5[_0xa40e('0x7d')]);if(_0x500a2f&&_0x500a2f['monitor_format']){logger[_0xa40e('0x2f')]('['+_0x53021a[_0xa40e('0x96')]['toUpperCase']()+']',_0xa40e('0x80'));_0x53021a[_0xa40e('0x81')]=_0x3919c5[_0xa40e('0x7d')]+_0xa40e('0x82')+_0x53021a['uniqueid']+_0xa40e('0x83')+md5(_0x53021a[_0xa40e('0x84')]);}else{_0x53021a[_0xa40e('0x81')]='';}var _0x4806db=_0x3919c5[_0xa40e('0x7b')]===_0xa40e('0x85')?'eu':'com';return getAccessToken(_0x3919c5)[_0xa40e('0x2a')](function(_0x500116){_0x2df3bd=_0x500116;return getUser(_0x2df3bd,_0x4806db,_0x3919c5);})[_0xa40e('0x2a')](function(_0x264863){_0x259f82=_0x264863;logger[_0xa40e('0x2f')]('The\x20User\x20ID\x20is:',_0x259f82['id']);return getEndUser(_0x2df3bd,_0x4806db,_0x3919c5,_0x53021a[_0xa40e('0x87')],_0x53021a[_0xa40e('0x97')],_0x259f82,_0x44756f);})[_0xa40e('0x2a')](function(_0x1fdde7){_0x549dd9=_0x1fdde7;return getCall(_0x2df3bd,_0x4806db,_0x3919c5,_0x259f82,_0x549dd9,_0x44756f,_0x53021a,_0xa40e('0x88'));})[_0xa40e('0x2a')](function(_0x4293e6){if(_0x4293e6){logger[_0xa40e('0x2f')](_0xa40e('0x95'),_0x4293e6['id']);}})[_0xa40e('0x2c')](function(_0x22d56a){logger[_0xa40e('0x2d')]('['+_0x53021a['lastevent'][_0xa40e('0x98')]()+']',JSON[_0xa40e('0xd')](_0x22d56a));});};
\ No newline at end of file
index 9bc0b38..d507ed4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacb2=['data2','data3','render','format','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','mustache','trigger','exec'];(function(_0x179be6,_0x262c08){var _0x44df7d=function(_0x257f80){while(--_0x257f80){_0x179be6['push'](_0x179be6['shift']());}};_0x44df7d(++_0x262c08);}(_0xacb2,0x100));var _0x2acb=function(_0x30ea6a,_0x4c4936){_0x30ea6a=_0x30ea6a-0x0;var _0x4af4eb=_0xacb2[_0x30ea6a];return _0x4af4eb;};'use strict';var util=require(_0x2acb('0x0'));var sh=require('shelljs');var Mustache=require(_0x2acb('0x1'));var logger=require('../../../../config/logger')(_0x2acb('0x2'));exports[_0x2acb('0x3')]=function(_0xe1764c,_0x4521ca){var _0x6ef9e9=_0xe1764c[_0x2acb('0x4')]?_0xe1764c[_0x2acb('0x4')]:'Script';var _0x2f44ba=_0xe1764c[_0x2acb('0x5')]?Mustache[_0x2acb('0x6')](_0xe1764c[_0x2acb('0x5')],_0x4521ca):_0x4521ca;sh[_0x2acb('0x3')](_0x2f44ba,function(_0x568fd9,_0xb0a24b,_0x12f949){if(_0x568fd9!==0x0){logger['error'](util[_0x2acb('0x7')]('%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s',_0x6ef9e9,_0x2f44ba,_0x568fd9,_0x12f949));}else{logger[_0x2acb('0x8')](util[_0x2acb('0x7')](_0x2acb('0x9'),_0x6ef9e9,_0x2f44ba,_0xb0a24b));}});};
\ No newline at end of file
+var _0xb69e=['error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','shelljs','mustache','../../../../config/logger','trigger','exec','data2','Script','data3','render'];(function(_0x166d03,_0xfddeb7){var _0x290983=function(_0x5e2aeb){while(--_0x5e2aeb){_0x166d03['push'](_0x166d03['shift']());}};_0x290983(++_0xfddeb7);}(_0xb69e,0x170));var _0xeb69=function(_0x445b4d,_0x2d8050){_0x445b4d=_0x445b4d-0x0;var _0x48740e=_0xb69e[_0x445b4d];return _0x48740e;};'use strict';var util=require('util');var sh=require(_0xeb69('0x0'));var Mustache=require(_0xeb69('0x1'));var logger=require(_0xeb69('0x2'))(_0xeb69('0x3'));exports[_0xeb69('0x4')]=function(_0x202c30,_0x1100e2){var _0x506bdf=_0x202c30[_0xeb69('0x5')]?_0x202c30[_0xeb69('0x5')]:_0xeb69('0x6');var _0x568b21=_0x202c30[_0xeb69('0x7')]?Mustache[_0xeb69('0x8')](_0x202c30[_0xeb69('0x7')],_0x1100e2):_0x1100e2;sh[_0xeb69('0x4')](_0x568b21,function(_0x5dcd97,_0x55a957,_0x135e44){if(_0x5dcd97!==0x0){logger[_0xeb69('0x9')](util[_0xeb69('0xa')](_0xeb69('0xb'),_0x506bdf,_0x568b21,_0x5dcd97,_0x135e44));}else{logger[_0xeb69('0xc')](util[_0xeb69('0xa')]('%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s',_0x506bdf,_0x568b21,_0x55a957));}});};
\ No newline at end of file
index ce70b20..378c207 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8999=['mustache','trigger','exec','data1','toUpperCase','data2','data5','number','headers','data6','parse','error','stack','GET','DELETE','POST','PUT','data7','render','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then',',\x20request\x20body:\x20','body','format','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','message','request-promise'];(function(_0x1b9e2e,_0x35956b){var _0x5ab59c=function(_0x4fcea8){while(--_0x4fcea8){_0x1b9e2e['push'](_0x1b9e2e['shift']());}};_0x5ab59c(++_0x35956b);}(_0x8999,0x1bf));var _0x9899=function(_0x567fff,_0xd8acd8){_0x567fff=_0x567fff-0x0;var _0x465a37=_0x8999[_0x567fff];return _0x465a37;};'use strict';var rp=require(_0x9899('0x0'));var util=require('util');var _=require('lodash');var Mustache=require(_0x9899('0x1'));var logger=require('../../../../config/logger')(_0x9899('0x2'));exports[_0x9899('0x3')]=function(_0x3c412a,_0x4a8aa1){var _0x2fdcf6,_0x4846a5;var _0x4cb53d={'method':_0x3c412a[_0x9899('0x4')][_0x9899('0x5')](),'uri':Mustache['render'](_0x3c412a[_0x9899('0x6')],_0x4a8aa1),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x3c412a[_0x9899('0x7')])===_0x9899('0x8')&&parseInt(_0x3c412a['data5'])>=0x1&&parseInt(_0x3c412a[_0x9899('0x7')])<=0xa?parseInt(_0x3c412a['data5'])*0x3e8:0x5*0x3e8};try{_0x4cb53d[_0x9899('0x9')]=_0x3c412a[_0x9899('0xa')]?JSON[_0x9899('0xb')](Mustache['render'](_0x3c412a['data6'],_0x4a8aa1)):{};}catch(_0x53d10d){logger[_0x9899('0xc')](_0x53d10d[_0x9899('0xd')]);}switch(_0x3c412a[_0x9899('0x4')][_0x9899('0x5')]()){case _0x9899('0xe'):case _0x9899('0xf'):_0x2fdcf6=null;_0x4cb53d['qs']=_0x4a8aa1;break;case _0x9899('0x10'):case _0x9899('0x11'):if(_0x3c412a[_0x9899('0x12')]){try{_0x2fdcf6=JSON[_0x9899('0xb')](Mustache[_0x9899('0x13')](_0x3c412a['data7'],_0x4a8aa1));_0x4cb53d['body']=_0x2fdcf6;}catch(_0x54c35a){logger[_0x9899('0xc')](_0x54c35a[_0x9899('0xd')]);logger[_0x9899('0xc')](_0x9899('0x14'));}}else{_0x2fdcf6=_0x4a8aa1;_0x4cb53d['body']=_0x2fdcf6;}break;}logger[_0x9899('0x15')](util['format'](_0x9899('0x16'),_0x3c412a['data1'],_0x3c412a[_0x9899('0x6')],JSON[_0x9899('0x17')](_0x4cb53d)));rp(_0x4cb53d)[_0x9899('0x18')](function(_0x4698ff){_0x2fdcf6=!_['isNil'](_0x2fdcf6)?_0x9899('0x19')+_0x2fdcf6:'';_0x4846a5=typeof _0x4698ff[_0x9899('0x1a')]==='object'?JSON[_0x9899('0x17')](_0x4698ff[_0x9899('0x1a')]):_0x4698ff[_0x9899('0x1a')];logger['info'](util[_0x9899('0x1b')](_0x9899('0x1c'),_0x3c412a[_0x9899('0x4')],_0x3c412a[_0x9899('0x6')],_0x4698ff[_0x9899('0x1d')],_0x4846a5));})['catch'](function(_0x6ed908){logger[_0x9899('0xc')](util[_0x9899('0x1b')](_0x9899('0x1e'),_0x3c412a[_0x9899('0x4')],_0x3c412a['data2'],_0x6ed908['statusCode'],_0x6ed908['name'],_0x6ed908[_0x9899('0x1f')]));});};
\ No newline at end of file
+var _0xd431=['error','data1','toUpperCase','GET','DELETE','POST','PUT','data7','parse','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','data2','stringify','then','isNil',',\x20request\x20body:\x20','body','object','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','catch','statusCode','util','lodash','../../../../config/logger','trigger','exec','render','data5','number','data6'];(function(_0x1e4dae,_0x1246d6){var _0x50f1c7=function(_0x26fc13){while(--_0x26fc13){_0x1e4dae['push'](_0x1e4dae['shift']());}};_0x50f1c7(++_0x1246d6);}(_0xd431,0x14c));var _0x1d43=function(_0x3f2146,_0x4e86a4){_0x3f2146=_0x3f2146-0x0;var _0xc33e7d=_0xd431[_0x3f2146];return _0xc33e7d;};'use strict';var rp=require('request-promise');var util=require(_0x1d43('0x0'));var _=require(_0x1d43('0x1'));var Mustache=require('mustache');var logger=require(_0x1d43('0x2'))(_0x1d43('0x3'));exports[_0x1d43('0x4')]=function(_0x52191d,_0x5e25e6){var _0x55abcd,_0x35e235;var _0x48004a={'method':_0x52191d['data1']['toUpperCase'](),'uri':Mustache[_0x1d43('0x5')](_0x52191d['data2'],_0x5e25e6),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x52191d[_0x1d43('0x6')])===_0x1d43('0x7')&&parseInt(_0x52191d[_0x1d43('0x6')])>=0x1&&parseInt(_0x52191d[_0x1d43('0x6')])<=0xa?parseInt(_0x52191d[_0x1d43('0x6')])*0x3e8:0x5*0x3e8};try{_0x48004a['headers']=_0x52191d[_0x1d43('0x8')]?JSON['parse'](Mustache[_0x1d43('0x5')](_0x52191d[_0x1d43('0x8')],_0x5e25e6)):{};}catch(_0x46b6ac){logger[_0x1d43('0x9')](_0x46b6ac['stack']);}switch(_0x52191d[_0x1d43('0xa')][_0x1d43('0xb')]()){case _0x1d43('0xc'):case _0x1d43('0xd'):_0x55abcd=null;_0x48004a['qs']=_0x5e25e6;break;case _0x1d43('0xe'):case _0x1d43('0xf'):if(_0x52191d[_0x1d43('0x10')]){try{_0x55abcd=JSON[_0x1d43('0x11')](Mustache[_0x1d43('0x5')](_0x52191d[_0x1d43('0x10')],_0x5e25e6));_0x48004a['body']=_0x55abcd;}catch(_0x2f80e6){logger[_0x1d43('0x9')](_0x2f80e6['stack']);logger[_0x1d43('0x9')](_0x1d43('0x12'));}}else{_0x55abcd=_0x5e25e6;_0x48004a['body']=_0x55abcd;}break;}logger['info'](util[_0x1d43('0x13')](_0x1d43('0x14'),_0x52191d[_0x1d43('0xa')],_0x52191d[_0x1d43('0x15')],JSON[_0x1d43('0x16')](_0x48004a)));rp(_0x48004a)[_0x1d43('0x17')](function(_0x298968){_0x55abcd=!_[_0x1d43('0x18')](_0x55abcd)?_0x1d43('0x19')+_0x55abcd:'';_0x35e235=typeof _0x298968[_0x1d43('0x1a')]===_0x1d43('0x1b')?JSON[_0x1d43('0x16')](_0x298968[_0x1d43('0x1a')]):_0x298968[_0x1d43('0x1a')];logger['info'](util['format'](_0x1d43('0x1c'),_0x52191d[_0x1d43('0xa')],_0x52191d[_0x1d43('0x15')],_0x298968['statusCode'],_0x35e235));})[_0x1d43('0x1d')](function(_0x2ac1db){logger[_0x1d43('0x9')](util['format']('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0x52191d[_0x1d43('0xa')],_0x52191d['data2'],_0x2ac1db[_0x1d43('0x1e')],_0x2ac1db['name'],_0x2ac1db['message']));});};
\ No newline at end of file
index bb12039..2203a4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b81=['rpc','error','message','catch','exports','jayson/promise','../../config/logger','routing','client','Request','request','debug'];(function(_0x16402c,_0x2102fa){var _0x2e6040=function(_0x247ef9){while(--_0x247ef9){_0x16402c['push'](_0x16402c['shift']());}};_0x2e6040(++_0x2102fa);}(_0x1b81,0xf5));var _0x11b8=function(_0x29f2b9,_0x4859bf){_0x29f2b9=_0x29f2b9-0x0;var _0x2db192=_0x1b81[_0x29f2b9];return _0x2db192;};'use strict';var jayson=require(_0x11b8('0x0'));var BPromise=require('bluebird');var logger=require(_0x11b8('0x1'))(_0x11b8('0x2'));var client=jayson[_0x11b8('0x3')]['http']({'port':0x2329});client[_0x11b8('0x4')]=function(_0x270d44,_0x57b4e2){return new BPromise(function(_0x32c7a3,_0x194814){return client[_0x11b8('0x5')](_0x270d44,_0x57b4e2)['then'](function(_0xc8996c){logger[_0x11b8('0x6')](_0x11b8('0x7'),'routing',_0x270d44,_0x57b4e2,_0xc8996c);if(_0xc8996c[_0x11b8('0x8')]){logger[_0x11b8('0x8')](_0x11b8('0x7'),_0x11b8('0x2'),_0x270d44,_0xc8996c['error'][_0x11b8('0x9')],_0x57b4e2);return _0x194814(_0xc8996c[_0x11b8('0x8')][_0x11b8('0x9')]);}else{return _0x32c7a3(_0xc8996c['result']);}})[_0x11b8('0xa')](function(_0x3a2e23){logger[_0x11b8('0x8')](_0x11b8('0x7'),_0x11b8('0x2'),_0x270d44,_0x3a2e23,_0x57b4e2);return _0x194814(_0x3a2e23);});});};module[_0x11b8('0xb')]=client;
\ No newline at end of file
+var _0xd2c4=['exports','jayson/promise','../../config/logger','routing','client','http','Request','then','debug','rpc','message','error','catch'];(function(_0x4e9628,_0x250573){var _0x27bc8c=function(_0xb3b7ae){while(--_0xb3b7ae){_0x4e9628['push'](_0x4e9628['shift']());}};_0x27bc8c(++_0x250573);}(_0xd2c4,0x160));var _0x4d2c=function(_0xc3b595,_0x4108fd){_0xc3b595=_0xc3b595-0x0;var _0x26befa=_0xd2c4[_0xc3b595];return _0x26befa;};'use strict';var jayson=require(_0x4d2c('0x0'));var BPromise=require('bluebird');var logger=require(_0x4d2c('0x1'))(_0x4d2c('0x2'));var client=jayson[_0x4d2c('0x3')][_0x4d2c('0x4')]({'port':0x2329});client[_0x4d2c('0x5')]=function(_0x15f1d1,_0x1b1f5a){return new BPromise(function(_0x20cc5b,_0x14a40c){return client['request'](_0x15f1d1,_0x1b1f5a)[_0x4d2c('0x6')](function(_0x10a2b0){logger[_0x4d2c('0x7')](_0x4d2c('0x8'),'routing',_0x15f1d1,_0x1b1f5a,_0x10a2b0);if(_0x10a2b0['error']){logger['error'](_0x4d2c('0x8'),_0x4d2c('0x2'),_0x15f1d1,_0x10a2b0['error'][_0x4d2c('0x9')],_0x1b1f5a);return _0x14a40c(_0x10a2b0[_0x4d2c('0xa')][_0x4d2c('0x9')]);}else{return _0x20cc5b(_0x10a2b0['result']);}})[_0x4d2c('0xb')](function(_0x514e9a){logger[_0x4d2c('0xa')]('rpc','routing',_0x15f1d1,_0x514e9a,_0x1b1f5a);return _0x14a40c(_0x514e9a);});});};module[_0x4d2c('0xc')]=client;
\ No newline at end of file
index f45a946..21d0cc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7312=['./rpc/mailAccount','./rpc/setting','../../config/logger','email','resolve','then','getMailAccounts','initMailAccounts','refresh','mailAccounts','listen','loginMailFrequency','error','Email\x20service\x20initialization','./server','./realtime'];(function(_0x20d08e,_0x4cc575){var _0x2cbd12=function(_0x3de355){while(--_0x3de355){_0x20d08e['push'](_0x20d08e['shift']());}};_0x2cbd12(++_0x4cc575);}(_0x7312,0x13e));var _0x2731=function(_0x1b2ff7,_0x12a034){_0x1b2ff7=_0x1b2ff7-0x0;var _0x31656a=_0x7312[_0x1b2ff7];return _0x31656a;};'use strict';var server=require(_0x2731('0x0'));var Realtime=require(_0x2731('0x1'));var EmailChannel=require('./lib/email');var mailAccount=require(_0x2731('0x2'));var setting=require(_0x2731('0x3'));var logger=require(_0x2731('0x4'))(_0x2731('0x5'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x2731('0x6')]()[_0x2731('0x7')](mailAccount[_0x2731('0x8')]())['then'](realtime[_0x2731('0x9')]())[_0x2731('0x7')](function(){email[_0x2731('0xa')](realtime[_0x2731('0xb')]);return realtime;});}function main(){return server[_0x2731('0xc')](realtime,email)[_0x2731('0x7')](function(){return initRealtime();})[_0x2731('0x7')](function(){return setting['getSettings']();})[_0x2731('0x7')](function(_0x20d0a9){return setInterval(initRealtime,_0x20d0a9[_0x2731('0xd')]*0x3e8);})['catch'](function(_0x55b1a3){logger[_0x2731('0xe')](_0x2731('0xf'),_0x55b1a3);});}main();
\ No newline at end of file
+var _0xb8f7=['error','Email\x20service\x20initialization','./server','./realtime','./lib/email','./rpc/setting','email','resolve','then','getMailAccounts','refresh','mailAccounts','getSettings','loginMailFrequency','catch'];(function(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0xb8f7,0x197));var _0x7b8f=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xb8f7[_0x17d9e3];return _0x14192d;};'use strict';var server=require(_0x7b8f('0x0'));var Realtime=require(_0x7b8f('0x1'));var EmailChannel=require(_0x7b8f('0x2'));var mailAccount=require('./rpc/mailAccount');var setting=require(_0x7b8f('0x3'));var logger=require('../../config/logger')(_0x7b8f('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x7b8f('0x5')]()[_0x7b8f('0x6')](mailAccount[_0x7b8f('0x7')]())['then'](realtime['initMailAccounts']())[_0x7b8f('0x6')](function(){email[_0x7b8f('0x8')](realtime[_0x7b8f('0x9')]);return realtime;});}function main(){return server['listen'](realtime,email)[_0x7b8f('0x6')](function(){return initRealtime();})['then'](function(){return setting[_0x7b8f('0xa')]();})['then'](function(_0xf1c7a2){return setInterval(initRealtime,_0xf1c7a2[_0x7b8f('0xb')]*0x3e8);})[_0x7b8f('0xc')](function(_0x4e47ca){logger[_0x7b8f('0xd')](_0x7b8f('0xe'),_0x4e47ca);});}main();
\ No newline at end of file
index 3171f62..8344050 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7324=['lastName','from','then','Mail\x20accepted\x20from\x20routing','catch','lastSync','sendMail','send','verifySmtp','Smtp','verify','verified','exports','moment','bluebird','md5','ioredis','../../../config/logger','email','redis','defaults','localhost','socket.io-emitter','./smtp','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','key','active','Imap','messageStatus','total','stringify','mailAccount:update','prototype','service','provider','hasOwnProperty','box','handleImapBox','bind','handleImapEmail','end','handleImapEnd','error','handleImapError','isNil','status','emit','connected','name','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s'];(function(_0x4b4230,_0x1c70ab){var _0x489754=function(_0x921f07){while(--_0x921f07){_0x4b4230['push'](_0x4b4230['shift']());}};_0x489754(++_0x1c70ab);}(_0x7324,0x7d));var _0x4732=function(_0x19c272,_0x2ec13d){_0x19c272=_0x19c272-0x0;var _0x29a2e5=_0x7324[_0x19c272];return _0x29a2e5;};'use strict';var _=require('lodash');var moment=require(_0x4732('0x0'));var BPromise=require(_0x4732('0x1'));var md5=require(_0x4732('0x2'));var Redis=require(_0x4732('0x3'));var config=require('../../../config/environment');var logger=require(_0x4732('0x4'))(_0x4732('0x5'));config[_0x4732('0x6')]=_[_0x4732('0x7')](config[_0x4732('0x6')],{'host':_0x4732('0x8'),'port':0x18eb});var io=require(_0x4732('0x9'))(new Redis(config[_0x4732('0x6')]));var EmailImap=require('./imap');var EmailSmtp=require(_0x4732('0xa'));var mailAccount=require(_0x4732('0xb'));var md5Accounts={};function EmailChannel(_0x10048e){logger[_0x4732('0xc')](_0x4732('0xd'));this[_0x4732('0xe')]=_0x10048e[_0x4732('0xe')];this[_0x4732('0xf')]={};this[_0x4732('0x10')]=new EmailSmtp();}EmailChannel['prototype']['emit']=function(_0x226346){var _0x5252fa=this[_0x4732('0xe')][_0x226346];var _0x55ec01={'id':_0x5252fa['id'],'name':_0x5252fa['name'],'key':_0x5252fa[_0x4732('0x11')],'active':_0x5252fa[_0x4732('0x12')],'Imap':{'status':_0x5252fa[_0x4732('0x13')]['status'],'messageStatus':_0x5252fa[_0x4732('0x13')][_0x4732('0x14')],'total':_0x5252fa[_0x4732('0x13')][_0x4732('0x15')]}};if(_['isNil'](md5Accounts[_0x226346])){md5Accounts[_0x226346]={};}var _0x2ad190=md5(JSON[_0x4732('0x16')](_0x55ec01));if(md5Accounts[_0x226346][_0x4732('0x2')]!==_0x2ad190){md5Accounts[_0x226346]['md5']=_0x2ad190;io['emit'](_0x4732('0x17'),_0x55ec01);}};EmailChannel[_0x4732('0x18')]['refresh']=function(_0x2b829f){for(var _0x6fcc11 in _0x2b829f){if(_0x2b829f['hasOwnProperty'](_0x6fcc11)){if(_0x2b829f[_0x6fcc11][_0x4732('0x13')]&&_0x2b829f[_0x6fcc11][_0x4732('0x12')]){var _0x608f5b=_0x2b829f[_0x6fcc11][_0x4732('0x13')];if(!_0x608f5b[_0x4732('0x19')]&&_0x2b829f[_0x6fcc11][_0x4732('0x1a')]!=='custom')_0x608f5b['service']=_0x2b829f[_0x6fcc11][_0x4732('0x1a')];if(!this['imapAccounts'][_0x4732('0x1b')](_0x608f5b['id'])){this[_0x4732('0xf')][_0x608f5b['id']]=new EmailImap(_0x608f5b,_0x2b829f[_0x6fcc11][_0x4732('0x5')]);this[_0x4732('0xf')][_0x608f5b['id']]['on'](_0x4732('0x1c'),this[_0x4732('0x1d')][_0x4732('0x1e')](this,_0x6fcc11));this['imapAccounts'][_0x608f5b['id']]['on'](_0x4732('0x5'),this[_0x4732('0x1f')][_0x4732('0x1e')](this,_0x6fcc11));this[_0x4732('0xf')][_0x608f5b['id']]['on'](_0x4732('0x20'),this[_0x4732('0x21')][_0x4732('0x1e')](this,_0x6fcc11));this['imapAccounts'][_0x608f5b['id']]['on'](_0x4732('0x22'),this[_0x4732('0x23')][_0x4732('0x1e')](this,_0x6fcc11));}}else{if(_[_0x4732('0x24')](this['mailAccounts'][_0x6fcc11]['Imap'])){this[_0x4732('0xe')][_0x6fcc11][_0x4732('0x13')]={};}this['mailAccounts'][_0x6fcc11]['Imap'][_0x4732('0x25')]='disabled';this[_0x4732('0xe')][_0x6fcc11]['Imap'][_0x4732('0x14')]='';this[_0x4732('0x26')](_0x6fcc11);}}}};EmailChannel[_0x4732('0x18')][_0x4732('0x1d')]=function(_0x3fbf95,_0x27b9e8){if(this['mailAccounts'][_0x3fbf95]){this[_0x4732('0xe')][_0x3fbf95]['Imap']['status']=_0x4732('0x27');this[_0x4732('0xe')][_0x3fbf95][_0x4732('0x13')][_0x4732('0x14')]=_0x27b9e8[_0x4732('0x28')];if(_0x27b9e8[_0x4732('0x29')]){this['mailAccounts'][_0x3fbf95][_0x4732('0x13')]['total']=_0x27b9e8[_0x4732('0x29')][_0x4732('0x15')];}return this['emit'](_0x3fbf95);}};EmailChannel[_0x4732('0x18')][_0x4732('0x1f')]=function(_0x51a7ef,_0x4a83b8){logger[_0x4732('0xc')](_0x4732('0x2a'),_0x4a83b8['firstName'],_0x4a83b8[_0x4732('0x2b')],_0x4a83b8[_0x4732('0x2c')],_0x51a7ef);if(this['mailAccounts'][_0x51a7ef]){return mailAccount['notify'](_0x51a7ef,_0x4a83b8)[_0x4732('0x2d')](function(_0x1aab8b){if(_0x1aab8b){logger['info'](_0x4732('0x2e'));}})[_0x4732('0x2f')](function(_0x141e76){logger[_0x4732('0x22')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON['stringify'](_0x141e76));});}};EmailChannel['prototype'][_0x4732('0x21')]=function(_0x408968){if(this[_0x4732('0xe')][_0x408968]&&this['mailAccounts'][_0x408968][_0x4732('0x13')]){if(this['imapAccounts'][this[_0x4732('0xe')][_0x408968]['Imap']['id']]){delete this['imapAccounts'][this['mailAccounts'][_0x408968][_0x4732('0x13')]['id']];}this[_0x4732('0xe')][_0x408968][_0x4732('0x13')][_0x4732('0x30')]=moment();this['emit'](_0x408968);}};EmailChannel['prototype'][_0x4732('0x23')]=function(_0x209dc6,_0x41efb9){if(this[_0x4732('0xe')][_0x209dc6]){this[_0x4732('0xe')][_0x209dc6]['Imap'][_0x4732('0x25')]=_0x4732('0x22');this[_0x4732('0xe')][_0x209dc6][_0x4732('0x13')][_0x4732('0x14')]=_0x41efb9;return this[_0x4732('0x26')](_0x209dc6);}};EmailChannel[_0x4732('0x18')][_0x4732('0x31')]=function(_0x110548,_0x423aa8){return this[_0x4732('0x10')][_0x4732('0x32')](_0x110548,_0x423aa8);};EmailChannel[_0x4732('0x18')][_0x4732('0x33')]=function(_0x2003c8){var _0x456fa4=this;if(this[_0x4732('0xe')][_0x2003c8['id']]){if(_[_0x4732('0x24')](this[_0x4732('0xe')][_0x2003c8['id']][_0x4732('0x34')])){this[_0x4732('0xe')][_0x2003c8['id']][_0x4732('0x34')]={};}this[_0x4732('0xe')][_0x2003c8['id']][_0x4732('0x34')][_0x4732('0x30')]=moment();return new BPromise(function(_0x2ad693,_0x520504){return _0x456fa4[_0x4732('0x10')][_0x4732('0x35')](_0x2003c8)['then'](function(_0x31bc2f){_0x456fa4[_0x4732('0xe')][_0x2003c8['id']][_0x4732('0x34')][_0x4732('0x25')]=_0x4732('0x36');_0x456fa4[_0x4732('0xe')][_0x2003c8['id']][_0x4732('0x34')]['messageStatus']='';_0x456fa4[_0x4732('0x26')](_0x2003c8['id']);_0x2ad693(_0x31bc2f);})[_0x4732('0x2f')](function(_0x260573){_0x456fa4[_0x4732('0xe')][_0x2003c8['id']][_0x4732('0x34')][_0x4732('0x25')]=_0x4732('0x22');_0x456fa4[_0x4732('0xe')][_0x2003c8['id']][_0x4732('0x34')][_0x4732('0x14')]=_0x260573;_0x456fa4[_0x4732('0x26')](_0x2003c8['id']);_0x520504(_0x260573);});});}return this[_0x4732('0x10')][_0x4732('0x35')](_0x2003c8);};module[_0x4732('0x37')]=EmailChannel;
\ No newline at end of file
+var _0xa8c2=['bind','end','handleImapEnd','error','disabled','handleImapBox','connected','messages','total','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','notify','Mail\x20accepted\x20from\x20routing','Mail\x20not\x20accepted\x20from\x20routing\x20%s','lastSync','handleImapError','sendMail','send','verifySmtp','Smtp','verified','verify','exports','lodash','moment','bluebird','md5','../../../config/environment','../../../config/logger','email','redis','./imap','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','emit','key','active','Imap','status','messageStatus','isNil','stringify','mailAccount:update','refresh','hasOwnProperty','service','custom','provider','box'];(function(_0x5f54de,_0x1d23d6){var _0x184502=function(_0x2029fd){while(--_0x2029fd){_0x5f54de['push'](_0x5f54de['shift']());}};_0x184502(++_0x1d23d6);}(_0xa8c2,0x84));var _0x2a8c=function(_0x5a3d79,_0x2f51f1){_0x5a3d79=_0x5a3d79-0x0;var _0x40fb2c=_0xa8c2[_0x5a3d79];return _0x40fb2c;};'use strict';var _=require(_0x2a8c('0x0'));var moment=require(_0x2a8c('0x1'));var BPromise=require(_0x2a8c('0x2'));var md5=require(_0x2a8c('0x3'));var Redis=require('ioredis');var config=require(_0x2a8c('0x4'));var logger=require(_0x2a8c('0x5'))(_0x2a8c('0x6'));config[_0x2a8c('0x7')]=_['defaults'](config[_0x2a8c('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2a8c('0x7')]));var EmailImap=require(_0x2a8c('0x8'));var EmailSmtp=require('./smtp');var mailAccount=require('../rpc/mailAccount');var md5Accounts={};function EmailChannel(_0x8a7bcc){logger[_0x2a8c('0x9')](_0x2a8c('0xa'));this[_0x2a8c('0xb')]=_0x8a7bcc[_0x2a8c('0xb')];this[_0x2a8c('0xc')]={};this[_0x2a8c('0xd')]=new EmailSmtp();}EmailChannel[_0x2a8c('0xe')][_0x2a8c('0xf')]=function(_0x3c95f7){var _0x4e9628=this[_0x2a8c('0xb')][_0x3c95f7];var _0x2c0725={'id':_0x4e9628['id'],'name':_0x4e9628['name'],'key':_0x4e9628[_0x2a8c('0x10')],'active':_0x4e9628[_0x2a8c('0x11')],'Imap':{'status':_0x4e9628[_0x2a8c('0x12')][_0x2a8c('0x13')],'messageStatus':_0x4e9628[_0x2a8c('0x12')][_0x2a8c('0x14')],'total':_0x4e9628[_0x2a8c('0x12')]['total']}};if(_[_0x2a8c('0x15')](md5Accounts[_0x3c95f7])){md5Accounts[_0x3c95f7]={};}var _0x3d5da2=md5(JSON[_0x2a8c('0x16')](_0x2c0725));if(md5Accounts[_0x3c95f7]['md5']!==_0x3d5da2){md5Accounts[_0x3c95f7][_0x2a8c('0x3')]=_0x3d5da2;io[_0x2a8c('0xf')](_0x2a8c('0x17'),_0x2c0725);}};EmailChannel[_0x2a8c('0xe')][_0x2a8c('0x18')]=function(_0x2b925a){for(var _0x1afcee in _0x2b925a){if(_0x2b925a[_0x2a8c('0x19')](_0x1afcee)){if(_0x2b925a[_0x1afcee][_0x2a8c('0x12')]&&_0x2b925a[_0x1afcee][_0x2a8c('0x11')]){var _0x205da7=_0x2b925a[_0x1afcee][_0x2a8c('0x12')];if(!_0x205da7[_0x2a8c('0x1a')]&&_0x2b925a[_0x1afcee]['provider']!==_0x2a8c('0x1b'))_0x205da7[_0x2a8c('0x1a')]=_0x2b925a[_0x1afcee][_0x2a8c('0x1c')];if(!this['imapAccounts'][_0x2a8c('0x19')](_0x205da7['id'])){this[_0x2a8c('0xc')][_0x205da7['id']]=new EmailImap(_0x205da7,_0x2b925a[_0x1afcee][_0x2a8c('0x6')]);this[_0x2a8c('0xc')][_0x205da7['id']]['on'](_0x2a8c('0x1d'),this['handleImapBox'][_0x2a8c('0x1e')](this,_0x1afcee));this[_0x2a8c('0xc')][_0x205da7['id']]['on']('email',this['handleImapEmail']['bind'](this,_0x1afcee));this[_0x2a8c('0xc')][_0x205da7['id']]['on'](_0x2a8c('0x1f'),this[_0x2a8c('0x20')][_0x2a8c('0x1e')](this,_0x1afcee));this['imapAccounts'][_0x205da7['id']]['on'](_0x2a8c('0x21'),this['handleImapError'][_0x2a8c('0x1e')](this,_0x1afcee));}}else{if(_[_0x2a8c('0x15')](this['mailAccounts'][_0x1afcee][_0x2a8c('0x12')])){this['mailAccounts'][_0x1afcee]['Imap']={};}this[_0x2a8c('0xb')][_0x1afcee]['Imap'][_0x2a8c('0x13')]=_0x2a8c('0x22');this['mailAccounts'][_0x1afcee]['Imap'][_0x2a8c('0x14')]='';this['emit'](_0x1afcee);}}}};EmailChannel[_0x2a8c('0xe')][_0x2a8c('0x23')]=function(_0x16b7cb,_0x2f98f4){if(this['mailAccounts'][_0x16b7cb]){this['mailAccounts'][_0x16b7cb][_0x2a8c('0x12')][_0x2a8c('0x13')]=_0x2a8c('0x24');this[_0x2a8c('0xb')][_0x16b7cb][_0x2a8c('0x12')][_0x2a8c('0x14')]=_0x2f98f4['name'];if(_0x2f98f4[_0x2a8c('0x25')]){this[_0x2a8c('0xb')][_0x16b7cb][_0x2a8c('0x12')]['total']=_0x2f98f4['messages'][_0x2a8c('0x26')];}return this['emit'](_0x16b7cb);}};EmailChannel['prototype']['handleImapEmail']=function(_0x50c5b9,_0x3469c6){logger[_0x2a8c('0x9')](_0x2a8c('0x27'),_0x3469c6[_0x2a8c('0x28')],_0x3469c6[_0x2a8c('0x29')],_0x3469c6['from'],_0x50c5b9);if(this[_0x2a8c('0xb')][_0x50c5b9]){return mailAccount[_0x2a8c('0x2a')](_0x50c5b9,_0x3469c6)['then'](function(_0x3ee5be){if(_0x3ee5be){logger[_0x2a8c('0x9')](_0x2a8c('0x2b'));}})['catch'](function(_0x3ed26b){logger[_0x2a8c('0x21')](_0x2a8c('0x2c'),JSON[_0x2a8c('0x16')](_0x3ed26b));});}};EmailChannel[_0x2a8c('0xe')][_0x2a8c('0x20')]=function(_0x2a8027){if(this[_0x2a8c('0xb')][_0x2a8027]&&this[_0x2a8c('0xb')][_0x2a8027][_0x2a8c('0x12')]){if(this[_0x2a8c('0xc')][this[_0x2a8c('0xb')][_0x2a8027][_0x2a8c('0x12')]['id']]){delete this['imapAccounts'][this[_0x2a8c('0xb')][_0x2a8027][_0x2a8c('0x12')]['id']];}this[_0x2a8c('0xb')][_0x2a8027][_0x2a8c('0x12')][_0x2a8c('0x2d')]=moment();this[_0x2a8c('0xf')](_0x2a8027);}};EmailChannel['prototype'][_0x2a8c('0x2e')]=function(_0x10d518,_0x2495ab){if(this[_0x2a8c('0xb')][_0x10d518]){this[_0x2a8c('0xb')][_0x10d518][_0x2a8c('0x12')]['status']=_0x2a8c('0x21');this[_0x2a8c('0xb')][_0x10d518][_0x2a8c('0x12')][_0x2a8c('0x14')]=_0x2495ab;return this['emit'](_0x10d518);}};EmailChannel[_0x2a8c('0xe')][_0x2a8c('0x2f')]=function(_0x3cce75,_0x223776){return this['smtp'][_0x2a8c('0x30')](_0x3cce75,_0x223776);};EmailChannel[_0x2a8c('0xe')][_0x2a8c('0x31')]=function(_0x5bab34){var _0x5a8e7c=this;if(this['mailAccounts'][_0x5bab34['id']]){if(_[_0x2a8c('0x15')](this['mailAccounts'][_0x5bab34['id']][_0x2a8c('0x32')])){this['mailAccounts'][_0x5bab34['id']]['Smtp']={};}this[_0x2a8c('0xb')][_0x5bab34['id']][_0x2a8c('0x32')][_0x2a8c('0x2d')]=moment();return new BPromise(function(_0x4edffd,_0x2c9276){return _0x5a8e7c['smtp']['verify'](_0x5bab34)['then'](function(_0x5a810f){_0x5a8e7c[_0x2a8c('0xb')][_0x5bab34['id']][_0x2a8c('0x32')][_0x2a8c('0x13')]=_0x2a8c('0x33');_0x5a8e7c[_0x2a8c('0xb')][_0x5bab34['id']][_0x2a8c('0x32')][_0x2a8c('0x14')]='';_0x5a8e7c[_0x2a8c('0xf')](_0x5bab34['id']);_0x4edffd(_0x5a810f);})['catch'](function(_0xc4b177){_0x5a8e7c['mailAccounts'][_0x5bab34['id']][_0x2a8c('0x32')]['status']=_0x2a8c('0x21');_0x5a8e7c[_0x2a8c('0xb')][_0x5bab34['id']]['Smtp'][_0x2a8c('0x14')]=_0xc4b177;_0x5a8e7c[_0x2a8c('0xf')](_0x5bab34['id']);_0x2c9276(_0xc4b177);});});}return this[_0x2a8c('0xd')][_0x2a8c('0x34')](_0x5bab34);};module[_0x2a8c('0x35')]=EmailChannel;
\ No newline at end of file
index 0a5c643..600ab81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x057b=['iconv','events','./utils','../../../config/logger','mailbox','account','getAccount','imap','ready','handleReady','bind','end','handleEnd','error','handleError','connect','inherits','prototype','connTimeout','authTimeout','service','user','modernAuthentication','xoauth2','generateXOAuth2Token','CloudProvider','data5','password','authentication','anonymous@xcally.com','host','port','tls','required','openBox','handleOpenBox','emit','readUnseen','handleCloseBox','UNSEEN','handleReadUnseen','length','fetch','message','handleFetchMessage','once','handleFetchEnd','body','attributes','handleMessageBody','handleSimpleParser','handleMessageAttributes','handleMessageEnd','parser','email','closeBox','handleFetchError','stringify','textCode','hasOwnProperty','upperFirst','lodash','util','mailparser','simpleParser'];(function(_0x5a6f86,_0x1d6822){var _0x43812d=function(_0x3a0408){while(--_0x3a0408){_0x5a6f86['push'](_0x5a6f86['shift']());}};_0x43812d(++_0x1d6822);}(_0x057b,0x1c3));var _0xb057=function(_0x5f595e,_0x5d56af){_0x5f595e=_0x5f595e-0x0;var _0x3ba9ed=_0x057b[_0x5f595e];return _0x3ba9ed;};'use strict';var _=require(_0xb057('0x0'));var util=require(_0xb057('0x1'));var Imap=require('imap');var simpleParser=require(_0xb057('0x2'))[_0xb057('0x3')];var Iconv=require(_0xb057('0x4'))['Iconv'];var EventEmitter=require(_0xb057('0x5'))['EventEmitter'];var utils=require(_0xb057('0x6'));var logger=require(_0xb057('0x7'))('email');function EmailImap(_0x37ec1a,_0x40fed9){this[_0xb057('0x8')]=_0x37ec1a[_0xb057('0x8')];this[_0xb057('0x9')]=this[_0xb057('0xa')](_0x37ec1a,_0x40fed9);this[_0xb057('0xb')]=new Imap(this['account']);this['imap']['once'](_0xb057('0xc'),this[_0xb057('0xd')][_0xb057('0xe')](this));this['imap']['once'](_0xb057('0xf'),this[_0xb057('0x10')][_0xb057('0xe')](this));this[_0xb057('0xb')]['on'](_0xb057('0x11'),this[_0xb057('0x12')][_0xb057('0xe')](this));this[_0xb057('0xb')][_0xb057('0x13')]();}util[_0xb057('0x14')](EmailImap,EventEmitter);EmailImap[_0xb057('0x15')][_0xb057('0xa')]=function(_0x5f1776,_0x3a409a){var _0x315fe8={'connTimeout':_0x5f1776[_0xb057('0x16')]?_0x5f1776['connTimeout']*0x3e8:0x2710,'authTimeout':_0x5f1776[_0xb057('0x17')]?_0x5f1776[_0xb057('0x17')]*0x3e8:0x1388};if(_0x5f1776[_0xb057('0x18')]){_0x315fe8[_0xb057('0x19')]=_0x5f1776[_0xb057('0x19')];if(_0x5f1776[_0xb057('0x1a')]){_0x315fe8[_0xb057('0x1b')]=utils[_0xb057('0x1c')](_0x5f1776[_0xb057('0x1d')][_0xb057('0x1e')],_0x5f1776['user']);}else{_0x315fe8['password']=_0x5f1776[_0xb057('0x1f')];}}else{if(_0x5f1776[_0xb057('0x20')]){_0x315fe8['user']=_0x5f1776[_0xb057('0x19')];_0x315fe8[_0xb057('0x1f')]=_0x5f1776[_0xb057('0x1f')];}}_0x315fe8['email']=_0x3a409a||_0x5f1776['user']||_0xb057('0x21');_0x315fe8['host']=_0x5f1776[_0xb057('0x22')];_0x315fe8[_0xb057('0x23')]=_0x5f1776[_0xb057('0x23')]||0x3e1;if(_0x5f1776[_0xb057('0x24')]){_0x315fe8[_0xb057('0x24')]=!![];}else{_0x315fe8['tls']=![];_0x315fe8['autotls']=_0xb057('0x25');}return _0x315fe8;};EmailImap[_0xb057('0x15')][_0xb057('0xd')]=function(){this[_0xb057('0xb')][_0xb057('0x26')](this[_0xb057('0x8')],![],this[_0xb057('0x27')][_0xb057('0xe')](this));};EmailImap['prototype']['handleOpenBox']=function(_0x24ca8b,_0x5e3326){if(_0x24ca8b){this[_0xb057('0x12')](_0x24ca8b,!![]);}else{this[_0xb057('0x28')]('box',_0x5e3326);this[_0xb057('0x29')]();}};EmailImap[_0xb057('0x15')][_0xb057('0x2a')]=function(_0x3b3008){if(_0x3b3008){this[_0xb057('0x12')](_0x3b3008,!![]);}else{this['imap']['end']();}};EmailImap[_0xb057('0x15')][_0xb057('0x29')]=function(){this[_0xb057('0xb')]['search']([_0xb057('0x2b')],this[_0xb057('0x2c')]['bind'](this));};EmailImap[_0xb057('0x15')][_0xb057('0x2c')]=function(_0x35c67f,_0x39ee5a){if(_0x35c67f){this[_0xb057('0x12')](_0x35c67f,!![]);}else{if(_0x39ee5a[_0xb057('0x2d')]){try{var _0x28ee82=this[_0xb057('0xb')][_0xb057('0x2e')](_0x39ee5a,{'bodies':'','markSeen':!![]});_0x28ee82['on'](_0xb057('0x2f'),this[_0xb057('0x30')]['bind'](this));_0x28ee82[_0xb057('0x31')](_0xb057('0x11'),this['handleFetchError'][_0xb057('0xe')](this));_0x28ee82[_0xb057('0x31')](_0xb057('0xf'),this[_0xb057('0x32')]['bind'](this));}catch(_0x47df7d){logger[_0xb057('0x11')](_0x47df7d);}}else{this[_0xb057('0xb')]['closeBox'](!![],this['handleCloseBox'][_0xb057('0xe')](this));}}};EmailImap[_0xb057('0x15')]['handleFetchMessage']=function(_0x2f0019){_0x2f0019['on'](_0xb057('0x33'),this['handleMessageBody'][_0xb057('0xe')](this));_0x2f0019[_0xb057('0x31')](_0xb057('0x34'),this['handleMessageAttributes']['bind'](this));_0x2f0019[_0xb057('0x31')](_0xb057('0xf'),this['handleMessageEnd']['bind'](this));};EmailImap['prototype'][_0xb057('0x35')]=function(_0x43f37c){simpleParser(_0x43f37c,{'Iconv':Iconv},this[_0xb057('0x36')]['bind'](this));};EmailImap['prototype'][_0xb057('0x37')]=function(){};EmailImap[_0xb057('0x15')][_0xb057('0x38')]=function(){};EmailImap[_0xb057('0x15')][_0xb057('0x36')]=function(_0x5a9857,_0x40ec0b){if(_0x5a9857){logger[_0xb057('0x11')](_0x5a9857);}else{var _0x5b5255=this;utils[_0xb057('0x39')](this['account'],_0x40ec0b,function(_0x33631b){_0x5b5255[_0xb057('0x28')](_0xb057('0x3a'),_0x33631b);});}};EmailImap[_0xb057('0x15')][_0xb057('0x32')]=function(){this[_0xb057('0xb')][_0xb057('0x3b')](!![],this[_0xb057('0x2a')]['bind'](this));};EmailImap[_0xb057('0x15')][_0xb057('0x3c')]=function(_0x46b93a){this[_0xb057('0x12')](_0x46b93a);this['imap'][_0xb057('0x3b')](!![],this[_0xb057('0x2a')][_0xb057('0xe')](this));};EmailImap[_0xb057('0x15')][_0xb057('0x10')]=function(){this['emit'](_0xb057('0xf'));};EmailImap['prototype'][_0xb057('0x12')]=function(_0x455c0d,_0x4ab58c){logger[_0xb057('0x11')](_0xb057('0x12'),this[_0xb057('0x9')][_0xb057('0x3a')],JSON[_0xb057('0x3d')](_0x455c0d));var _0x2b4f5a='';if(_0x455c0d){if(_0x455c0d[_0xb057('0x3e')]){_0x2b4f5a=_0x455c0d[_0xb057('0x3e')];}else{for(var _0x18b319 in _0x455c0d){if(_0x455c0d[_0xb057('0x3f')](_0x18b319)){_0x2b4f5a+=_[_0xb057('0x40')](_0x18b319)+':\x20'+_0x455c0d[_0x18b319]+'\x0a';}}}}if(_0x4ab58c){this[_0xb057('0xb')]['end']();}else{this[_0xb057('0x28')](_0xb057('0x11'),_0x2b4f5a);this[_0xb057('0x28')](_0xb057('0xf'));}};module['exports']=EmailImap;
\ No newline at end of file
+var _0x8c1b=['message','error','handleFetchError','closeBox','handleFetchMessage','end','handleMessageEnd','handleMessageBody','handleSimpleParser','handleMessageAttributes','handleFetchEnd','stringify','textCode','hasOwnProperty','upperFirst','exports','lodash','imap','mailparser','iconv','Iconv','events','./utils','../../../config/logger','email','mailbox','account','getAccount','once','ready','bind','handleEnd','handleError','connect','connTimeout','authTimeout','service','user','modernAuthentication','xoauth2','generateXOAuth2Token','CloudProvider','data5','password','authentication','anonymous@xcally.com','host','port','tls','autotls','required','prototype','handleReady','openBox','handleOpenBox','emit','box','handleCloseBox','search','UNSEEN','handleReadUnseen','length','fetch'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x8c1b,0x1c9));var _0xb8c1=function(_0x341911,_0x429505){_0x341911=_0x341911-0x0;var _0x37b37d=_0x8c1b[_0x341911];return _0x37b37d;};'use strict';var _=require(_0xb8c1('0x0'));var util=require('util');var Imap=require(_0xb8c1('0x1'));var simpleParser=require(_0xb8c1('0x2'))['simpleParser'];var Iconv=require(_0xb8c1('0x3'))[_0xb8c1('0x4')];var EventEmitter=require(_0xb8c1('0x5'))['EventEmitter'];var utils=require(_0xb8c1('0x6'));var logger=require(_0xb8c1('0x7'))(_0xb8c1('0x8'));function EmailImap(_0x470f02,_0x1e05cb){this[_0xb8c1('0x9')]=_0x470f02['mailbox'];this[_0xb8c1('0xa')]=this[_0xb8c1('0xb')](_0x470f02,_0x1e05cb);this[_0xb8c1('0x1')]=new Imap(this['account']);this['imap'][_0xb8c1('0xc')](_0xb8c1('0xd'),this['handleReady'][_0xb8c1('0xe')](this));this['imap'][_0xb8c1('0xc')]('end',this[_0xb8c1('0xf')][_0xb8c1('0xe')](this));this[_0xb8c1('0x1')]['on']('error',this[_0xb8c1('0x10')][_0xb8c1('0xe')](this));this['imap'][_0xb8c1('0x11')]();}util['inherits'](EmailImap,EventEmitter);EmailImap['prototype'][_0xb8c1('0xb')]=function(_0x153d5b,_0x14de3c){var _0x545e93={'connTimeout':_0x153d5b[_0xb8c1('0x12')]?_0x153d5b[_0xb8c1('0x12')]*0x3e8:0x2710,'authTimeout':_0x153d5b[_0xb8c1('0x13')]?_0x153d5b[_0xb8c1('0x13')]*0x3e8:0x1388};if(_0x153d5b[_0xb8c1('0x14')]){_0x545e93['user']=_0x153d5b[_0xb8c1('0x15')];if(_0x153d5b[_0xb8c1('0x16')]){_0x545e93[_0xb8c1('0x17')]=utils[_0xb8c1('0x18')](_0x153d5b[_0xb8c1('0x19')][_0xb8c1('0x1a')],_0x153d5b[_0xb8c1('0x15')]);}else{_0x545e93[_0xb8c1('0x1b')]=_0x153d5b[_0xb8c1('0x1b')];}}else{if(_0x153d5b[_0xb8c1('0x1c')]){_0x545e93[_0xb8c1('0x15')]=_0x153d5b[_0xb8c1('0x15')];_0x545e93[_0xb8c1('0x1b')]=_0x153d5b[_0xb8c1('0x1b')];}}_0x545e93[_0xb8c1('0x8')]=_0x14de3c||_0x153d5b[_0xb8c1('0x15')]||_0xb8c1('0x1d');_0x545e93['host']=_0x153d5b[_0xb8c1('0x1e')];_0x545e93[_0xb8c1('0x1f')]=_0x153d5b[_0xb8c1('0x1f')]||0x3e1;if(_0x153d5b[_0xb8c1('0x20')]){_0x545e93[_0xb8c1('0x20')]=!![];}else{_0x545e93[_0xb8c1('0x20')]=![];_0x545e93[_0xb8c1('0x21')]=_0xb8c1('0x22');}return _0x545e93;};EmailImap[_0xb8c1('0x23')][_0xb8c1('0x24')]=function(){this[_0xb8c1('0x1')][_0xb8c1('0x25')](this['mailbox'],![],this[_0xb8c1('0x26')]['bind'](this));};EmailImap[_0xb8c1('0x23')]['handleOpenBox']=function(_0x2e1782,_0x425fb6){if(_0x2e1782){this[_0xb8c1('0x10')](_0x2e1782,!![]);}else{this[_0xb8c1('0x27')](_0xb8c1('0x28'),_0x425fb6);this['readUnseen']();}};EmailImap[_0xb8c1('0x23')][_0xb8c1('0x29')]=function(_0x4cd104){if(_0x4cd104){this[_0xb8c1('0x10')](_0x4cd104,!![]);}else{this[_0xb8c1('0x1')]['end']();}};EmailImap['prototype']['readUnseen']=function(){this['imap'][_0xb8c1('0x2a')]([_0xb8c1('0x2b')],this[_0xb8c1('0x2c')][_0xb8c1('0xe')](this));};EmailImap[_0xb8c1('0x23')][_0xb8c1('0x2c')]=function(_0x6daa10,_0x4ca253){if(_0x6daa10){this[_0xb8c1('0x10')](_0x6daa10,!![]);}else{if(_0x4ca253[_0xb8c1('0x2d')]){try{var _0x4731a2=this[_0xb8c1('0x1')][_0xb8c1('0x2e')](_0x4ca253,{'bodies':'','markSeen':!![]});_0x4731a2['on'](_0xb8c1('0x2f'),this['handleFetchMessage']['bind'](this));_0x4731a2['once'](_0xb8c1('0x30'),this[_0xb8c1('0x31')][_0xb8c1('0xe')](this));_0x4731a2[_0xb8c1('0xc')]('end',this['handleFetchEnd'][_0xb8c1('0xe')](this));}catch(_0x1fa955){logger[_0xb8c1('0x30')](_0x1fa955);}}else{this[_0xb8c1('0x1')][_0xb8c1('0x32')](!![],this[_0xb8c1('0x29')][_0xb8c1('0xe')](this));}}};EmailImap[_0xb8c1('0x23')][_0xb8c1('0x33')]=function(_0x13b72){_0x13b72['on']('body',this['handleMessageBody']['bind'](this));_0x13b72['once']('attributes',this['handleMessageAttributes'][_0xb8c1('0xe')](this));_0x13b72['once'](_0xb8c1('0x34'),this[_0xb8c1('0x35')][_0xb8c1('0xe')](this));};EmailImap['prototype'][_0xb8c1('0x36')]=function(_0x439fa5){simpleParser(_0x439fa5,{'Iconv':Iconv},this[_0xb8c1('0x37')]['bind'](this));};EmailImap[_0xb8c1('0x23')][_0xb8c1('0x38')]=function(){};EmailImap[_0xb8c1('0x23')]['handleMessageEnd']=function(){};EmailImap[_0xb8c1('0x23')][_0xb8c1('0x37')]=function(_0x38794c,_0xe6d3d5){if(_0x38794c){logger[_0xb8c1('0x30')](_0x38794c);}else{var _0x48f5d6=this;utils['parser'](this[_0xb8c1('0xa')],_0xe6d3d5,function(_0x3cf0e3){_0x48f5d6[_0xb8c1('0x27')]('email',_0x3cf0e3);});}};EmailImap[_0xb8c1('0x23')][_0xb8c1('0x39')]=function(){this[_0xb8c1('0x1')]['closeBox'](!![],this[_0xb8c1('0x29')][_0xb8c1('0xe')](this));};EmailImap['prototype'][_0xb8c1('0x31')]=function(_0x3d69ef){this[_0xb8c1('0x10')](_0x3d69ef);this['imap']['closeBox'](!![],this[_0xb8c1('0x29')][_0xb8c1('0xe')](this));};EmailImap[_0xb8c1('0x23')]['handleEnd']=function(){this[_0xb8c1('0x27')](_0xb8c1('0x34'));};EmailImap['prototype'][_0xb8c1('0x10')]=function(_0x5d9a73,_0x21531c){logger['error']('handleError',this['account'][_0xb8c1('0x8')],JSON[_0xb8c1('0x3a')](_0x5d9a73));var _0x4ea971='';if(_0x5d9a73){if(_0x5d9a73[_0xb8c1('0x3b')]){_0x4ea971=_0x5d9a73[_0xb8c1('0x3b')];}else{for(var _0x595ab2 in _0x5d9a73){if(_0x5d9a73[_0xb8c1('0x3c')](_0x595ab2)){_0x4ea971+=_[_0xb8c1('0x3d')](_0x595ab2)+':\x20'+_0x5d9a73[_0x595ab2]+'\x0a';}}}}if(_0x21531c){this[_0xb8c1('0x1')]['end']();}else{this[_0xb8c1('0x27')](_0xb8c1('0x30'),_0x4ea971);this[_0xb8c1('0x27')](_0xb8c1('0x34'));}};module[_0xb8c1('0x3e')]=EmailImap;
\ No newline at end of file
index 7567ad1..46668de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcaf3=['compile','sendMail','verify','createTransport','Not\x20verifired','exports','nodemailer','nodemailer-plugin-inline-base64','prototype','send','use'];(function(_0x515079,_0x46d209){var _0xf36fa0=function(_0x33da59){while(--_0x33da59){_0x515079['push'](_0x515079['shift']());}};_0xf36fa0(++_0x46d209);}(_0xcaf3,0x1ea));var _0x3caf=function(_0x532d78,_0x25b6a8){_0x532d78=_0x532d78-0x0;var _0x5990c4=_0xcaf3[_0x532d78];return _0x5990c4;};'use strict';var nodemailer=require(_0x3caf('0x0'));var inlineBase64=require(_0x3caf('0x1'));function EmailSmtp(){}EmailSmtp[_0x3caf('0x2')][_0x3caf('0x3')]=function(_0x718939,_0x50bbe8){return new Promise(function(_0x23041b,_0x39c439){var _0x2970f2=nodemailer['createTransport'](_0x718939);_0x2970f2[_0x3caf('0x4')](_0x3caf('0x5'),inlineBase64());_0x2970f2[_0x3caf('0x6')](_0x50bbe8,function(_0x3195ce,_0x28e2b8){if(_0x3195ce){_0x39c439(_0x3195ce['toString']());}else{_0x23041b(_0x28e2b8);}});});};EmailSmtp[_0x3caf('0x2')][_0x3caf('0x7')]=function(_0x1ab8fb){return new Promise(function(_0x3f8c17,_0x487e70){var _0x5546e8=nodemailer[_0x3caf('0x8')](_0x1ab8fb);_0x5546e8[_0x3caf('0x7')](function(_0x24ef6c,_0x9c13de){if(_0x24ef6c){_0x487e70(_0x24ef6c['toString']());}else{if(_0x9c13de){_0x3f8c17(_0x9c13de);}else{_0x487e70(_0x3caf('0x9'));}}});});};module[_0x3caf('0xa')]=EmailSmtp;
\ No newline at end of file
+var _0xd631=['prototype','createTransport','use','compile','sendMail','verify','toString','exports'];(function(_0x38fe78,_0x362def){var _0x5854b6=function(_0x4a9ec3){while(--_0x4a9ec3){_0x38fe78['push'](_0x38fe78['shift']());}};_0x5854b6(++_0x362def);}(_0xd631,0x168));var _0x1d63=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xd631[_0x8c43de];return _0xa6591b;};'use strict';var nodemailer=require('nodemailer');var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0x1d63('0x0')]['send']=function(_0x1db94c,_0x3bdb87){return new Promise(function(_0x18afa6,_0x390ed3){var _0x2dc5b7=nodemailer[_0x1d63('0x1')](_0x1db94c);_0x2dc5b7[_0x1d63('0x2')](_0x1d63('0x3'),inlineBase64());_0x2dc5b7[_0x1d63('0x4')](_0x3bdb87,function(_0x5b436e,_0x7ffba1){if(_0x5b436e){_0x390ed3(_0x5b436e['toString']());}else{_0x18afa6(_0x7ffba1);}});});};EmailSmtp[_0x1d63('0x0')][_0x1d63('0x5')]=function(_0x576ba4){return new Promise(function(_0x14c29c,_0x545c72){var _0x4cf786=nodemailer['createTransport'](_0x576ba4);_0x4cf786[_0x1d63('0x5')](function(_0x1f757b,_0x104533){if(_0x1f757b){_0x545c72(_0x1f757b[_0x1d63('0x6')]());}else{if(_0x104533){_0x14c29c(_0x104533);}else{_0x545c72('Not\x20verifired');}}});});};module[_0x1d63('0x7')]=EmailSmtp;
\ No newline at end of file
index 48723c9..f54d50d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5bc=['pop','isEmpty','html','replace','includes','<img','attachments','forEach','push','filename','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','textAsHtml','body','<a\x20target=\x22_blank\x22\x20','message','originTo','bcc','attach','type','attachment','attachment-','now','root','content','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','parser','from','subject','messageId','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','filter','application/ms-tnef','info','BodyHTML','Attachments','Title','Data','<p>Empty\x20message</p>','generateXOAuth2Token','user=','auth=Bearer\x20','utf-8','toString','base64','moment','util','node-tnef','../../../config/logger','email','../../../config/environment','head','address','anonymous','generate','@xcally.com','value','name','substring','indexOf','split','slice','join','Anonymous','length'];(function(_0xa8883,_0x1f107f){var _0x479426=function(_0x4e56b9){while(--_0x4e56b9){_0xa8883['push'](_0xa8883['shift']());}};_0x479426(++_0x1f107f);}(_0xd5bc,0xc4));var _0xcd5b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd5bc[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var moment=require(_0xcd5b('0x0'));var random=require('randomstring');var fs=require('fs');var path=require('path');var util=require(_0xcd5b('0x1'));var tnef=require(_0xcd5b('0x2'));var logger=require(_0xcd5b('0x3'))(_0xcd5b('0x4'));var config=require(_0xcd5b('0x5'));function getAddress(_0x569578){var _0x58efd2=_[_0xcd5b('0x6')](_0x569578['value']);return _0x58efd2&&_0x58efd2[_0xcd5b('0x7')]?_0x58efd2[_0xcd5b('0x7')]:_0xcd5b('0x8')+random[_0xcd5b('0x9')](0x6)+_0xcd5b('0xa');}function getFirstName(_0x471332){var _0x68a0e1=_[_0xcd5b('0x6')](_0x471332[_0xcd5b('0xb')]);if(_0x68a0e1&&_0x68a0e1[_0xcd5b('0xc')]){if(_0x68a0e1[_0xcd5b('0xc')]==_0x68a0e1[_0xcd5b('0x7')]){return _0x68a0e1[_0xcd5b('0xc')][_0xcd5b('0xd')](0x0,_0x68a0e1[_0xcd5b('0xc')][_0xcd5b('0xe')]('@'));}var _0x22bbf2=_0x68a0e1[_0xcd5b('0xc')][_0xcd5b('0xf')](/\s+/);return _0x22bbf2['length']>0x1?_0x22bbf2[_0xcd5b('0x10')](0x0,-0x1)[_0xcd5b('0x11')]('\x20'):_0x68a0e1[_0xcd5b('0xc')];}return _0xcd5b('0x12');}function getLastName(_0x32aaf2){var _0x3cc539=_['head'](_0x32aaf2[_0xcd5b('0xb')]);if(_0x3cc539&&_0x3cc539['name']){var _0x1c6017=_0x3cc539[_0xcd5b('0xc')][_0xcd5b('0xf')](/\s+/);return _0x1c6017[_0xcd5b('0x13')]>0x1?_0x1c6017[_0xcd5b('0x14')]():'';}return'';}function getMails(_0x5f3a27,_0x48d690){var _0x270a8b='';for(var _0x2c02dc=0x0;_0x2c02dc<_0x48d690[_0xcd5b('0xb')][_0xcd5b('0x13')];_0x2c02dc+=0x1){if(_0x48d690['value'][_0x2c02dc][_0xcd5b('0x7')]!==_0x5f3a27){if(!_[_0xcd5b('0x15')](_0x270a8b)){_0x270a8b+=',';}_0x270a8b+=_0x48d690[_0xcd5b('0xb')][_0x2c02dc]['name']||_0x48d690[_0xcd5b('0xb')][_0x2c02dc]['address']||'';_0x270a8b+='\x20<';_0x270a8b+=_0x48d690[_0xcd5b('0xb')][_0x2c02dc][_0xcd5b('0x7')]?_0x48d690[_0xcd5b('0xb')][_0x2c02dc][_0xcd5b('0x7')]:_0xcd5b('0x8')+random['generate'](0x6)+_0xcd5b('0xa');_0x270a8b+='>';}}return _0x270a8b;}function parseEmail(_0x8b9432,_0x8636,_0x156e85){if(_0x8636['html']){var _0x3a9006=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x3a9006['test'](_0x8636['html'])){_0x8636['html']=_0x8636[_0xcd5b('0x16')][_0xcd5b('0x17')](_0x3a9006,'');}if(_0x8636[_0xcd5b('0x16')][_0xcd5b('0x18')](_0xcd5b('0x19'))){var _0x797381=[];_0x8636[_0xcd5b('0x1a')][_0xcd5b('0x1b')](_0x4ad060=>{_0x797381[_0xcd5b('0x1c')](_0x4ad060[_0xcd5b('0x1d')]);});var _0x433df6=/<img.*? _SRC(.*?)[^>]+>/g;var _0x1adcbd=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x557bc0=_0x8636[_0xcd5b('0x16')][_0xcd5b('0x17')](_0x1adcbd,'_SRC');var _0x370ddc=_0x557bc0['replace'](_0x433df6,_0xcd5b('0x1e'));for(let _0x1c58e7=0x0;_0x1c58e7<_0x797381['length'];_0x1c58e7++){var _0x7b43c3=_0x370ddc[_0xcd5b('0x17')](_0xcd5b('0x1e'),_0xcd5b('0x1f')+_0x797381[_0x1c58e7]+'\x20]</span>');_0x370ddc=_0x7b43c3;}_0x8636['html']=_0x370ddc;}_0x156e85['body']=_0x8636[_0xcd5b('0x16')];}else{_0x156e85['body']=_0x8636[_0xcd5b('0x20')];}if(_0x156e85[_0xcd5b('0x21')]){_0x156e85[_0xcd5b('0x21')]=_0x156e85[_0xcd5b('0x21')][_0xcd5b('0x17')](/<a\s+/gi,_0xcd5b('0x22'));}if(_0x8636['to']){_0x156e85[_0xcd5b('0x23')]['originTo']=getMails(null,_0x8636['to']);var _0x5c0fcd=getMails(_0x8b9432['email'],_0x8636['to']);if(!_[_0xcd5b('0x15')](_0x5c0fcd)){_0x156e85['message']['cc']+=_0x5c0fcd;}}if(_0x8636['cc']){_0x156e85['message']['originCc']=getMails(null,_0x8636['cc']);var _0x4f9b34=getMails(_0x8b9432[_0xcd5b('0x4')],_0x8636['cc']);if(!_[_0xcd5b('0x15')](_0x4f9b34)){if(!_[_0xcd5b('0x15')](_0x156e85[_0xcd5b('0x23')]['cc'])){_0x156e85['message']['cc']+=',';}_0x156e85[_0xcd5b('0x23')]['cc']+=_0x4f9b34;}}if(!_['includes'](_0x156e85[_0xcd5b('0x23')][_0xcd5b('0x24')],_0x8b9432['email'])&&!_[_0xcd5b('0x18')](_0x156e85['message']['originCc'],_0x8b9432['email'])){_0x156e85[_0xcd5b('0x23')][_0xcd5b('0x25')]=_0x8b9432[_0xcd5b('0x4')];}if(_0x8636[_0xcd5b('0x1a')]&&_0x8636[_0xcd5b('0x1a')]['length']){_0x156e85['message'][_0xcd5b('0x26')]=_0x8636[_0xcd5b('0x1a')][_0xcd5b('0x13')];for(var _0x1d29e4=0x0,_0x4913e8,_0x5458c8,_0x24c0ee;_0x1d29e4<_0x8636[_0xcd5b('0x1a')]['length'];_0x1d29e4+=0x1){if(_0x8636[_0xcd5b('0x1a')][_0x1d29e4][_0xcd5b('0x27')]===_0xcd5b('0x28')){_0x24c0ee=_0x8636['attachments'][_0x1d29e4][_0xcd5b('0x1d')]||_0xcd5b('0x29')+_0x1d29e4;_0x4913e8=util['format']('%s-%s',Date[_0xcd5b('0x2a')](),_0x24c0ee);_0x5458c8=path['join'](config[_0xcd5b('0x2b')],'server/files/attachments/',_0x4913e8);fs['writeFileSync'](_0x5458c8,_0x8636['attachments'][_0x1d29e4][_0xcd5b('0x2c')]);_0x156e85['message'][_0xcd5b('0x1a')]['push']({'name':_0x24c0ee,'basename':_0x4913e8,'type':_0x8636[_0xcd5b('0x1a')][_0x1d29e4]['contentType'],'filepath':_0x5458c8});}}}if(_0x8636['headerLines']&&_0x8636[_0xcd5b('0x2d')]['length']>0x0){var _0x30e8e7=[_0xcd5b('0x2e'),_0xcd5b('0x2f'),_0xcd5b('0x30')];for(var _0x586797=0x0;_0x586797<_0x8636['headerLines'][_0xcd5b('0x13')];_0x586797++){var _0x281027=_[_0xcd5b('0xe')](_0x30e8e7,_0x8636['headerLines'][_0x586797][_0xcd5b('0x31')]);if(_0x281027>=0x0){_0x156e85[_0xcd5b('0x32')]=!![];}}}return _0x156e85;}exports[_0xcd5b('0x33')]=function(_0x195af1,_0x56d9f0,_0x32293d){var _0x16b1a0={'from':getAddress(_0x56d9f0[_0xcd5b('0x34')]),'firstName':getFirstName(_0x56d9f0['from']),'lastName':getLastName(_0x56d9f0[_0xcd5b('0x34')]),'mapKey':_0xcd5b('0x4'),'message':{'from':getMails(_0x195af1[_0xcd5b('0x4')],_0x56d9f0[_0xcd5b('0x34')]),'to':_0x195af1['email'],'cc':'','subject':_0x56d9f0[_0xcd5b('0x35')]||'','messageId':_0x56d9f0[_0xcd5b('0x36')],'inReplyTo':_0x56d9f0[_0xcd5b('0x37')],'sentAt':moment(_0x56d9f0[_0xcd5b('0x38')])['format'](_0xcd5b('0x39')),'attach':![],'attachments':[]}};if(!_0x56d9f0['html']&&!_0x56d9f0[_0xcd5b('0x20')]){var _0x3f1a7d=_[_0xcd5b('0x3a')](_0x56d9f0[_0xcd5b('0x1a')],{'contentType':_0xcd5b('0x3b')});if(_0x3f1a7d[_0xcd5b('0x13')]){logger[_0xcd5b('0x3c')](util['format']('Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system',_0x56d9f0['messageId']));tnef['parseBuffer'](_['first'](_0x3f1a7d)['content'],function(_0x37570f,_0x360336){if(_0x360336){_0x56d9f0[_0xcd5b('0x16')]=_0x360336[_0xcd5b('0x3d')]||'<p>Empty\x20message</p>';if(_0x360336[_0xcd5b('0x3e')]){for(var _0x4f9f99=0x0;_0x4f9f99<_0x360336[_0xcd5b('0x3e')]['length'];_0x4f9f99++){var _0x540096=_0x360336[_0xcd5b('0x3e')][_0x4f9f99];_0x16b1a0[_0xcd5b('0x23')][_0xcd5b('0x1a')][_0xcd5b('0x1c')]({'filename':_0x540096[_0xcd5b('0x3f')],'content':Buffer[_0xcd5b('0x34')](_0x540096[_0xcd5b('0x40')])});}}}_0x32293d(parseEmail(_0x195af1,_0x56d9f0,_0x16b1a0));});}else{_0x56d9f0[_0xcd5b('0x16')]=_0xcd5b('0x41');_0x32293d(parseEmail(_0x195af1,_0x56d9f0,_0x16b1a0));}}else{_0x32293d(parseEmail(_0x195af1,_0x56d9f0,_0x16b1a0));}};exports[_0xcd5b('0x42')]=function(_0x16b0c6,_0x2c9c00){var _0x15b818=[_0xcd5b('0x43')+(_0x2c9c00||''),_0xcd5b('0x44')+_0x16b0c6,'',''];return Buffer['from'](_0x15b818[_0xcd5b('0x11')]('\ 1'),_0xcd5b('0x45'))[_0xcd5b('0x46')](_0xcd5b('0x47'));};
\ No newline at end of file
+var _0x1435=['randomstring','path','util','node-tnef','../../../config/logger','email','../../../config/environment','head','value','address','anonymous','generate','@xcally.com','name','substring','indexOf','split','slice','length','pop','html','test','replace','includes','<img','push','filename','_SRC','_IMG','\x20]</span>','body','<a\x20target=\x22_blank\x22\x20','message','originTo','isEmpty','originCc','bcc','attachments','attach','type','attachment-','format','%s-%s','join','server/files/attachments/','writeFileSync','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','from','subject','messageId','date','YYYY-MM-DD\x20HH:mm:ss','textAsHtml','filter','application/ms-tnef','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','generateXOAuth2Token','auth=Bearer\x20','utf-8','base64','moment'];(function(_0x1b97e3,_0x550daa){var _0xc043ce=function(_0x26ca9d){while(--_0x26ca9d){_0x1b97e3['push'](_0x1b97e3['shift']());}};_0xc043ce(++_0x550daa);}(_0x1435,0x12b));var _0x5143=function(_0x568ad1,_0x248467){_0x568ad1=_0x568ad1-0x0;var _0x585eb3=_0x1435[_0x568ad1];return _0x585eb3;};'use strict';var _=require('lodash');var moment=require(_0x5143('0x0'));var random=require(_0x5143('0x1'));var fs=require('fs');var path=require(_0x5143('0x2'));var util=require(_0x5143('0x3'));var tnef=require(_0x5143('0x4'));var logger=require(_0x5143('0x5'))(_0x5143('0x6'));var config=require(_0x5143('0x7'));function getAddress(_0x37a511){var _0x579962=_[_0x5143('0x8')](_0x37a511[_0x5143('0x9')]);return _0x579962&&_0x579962['address']?_0x579962[_0x5143('0xa')]:_0x5143('0xb')+random[_0x5143('0xc')](0x6)+_0x5143('0xd');}function getFirstName(_0x28d764){var _0x42b374=_[_0x5143('0x8')](_0x28d764[_0x5143('0x9')]);if(_0x42b374&&_0x42b374['name']){if(_0x42b374[_0x5143('0xe')]==_0x42b374[_0x5143('0xa')]){return _0x42b374['name'][_0x5143('0xf')](0x0,_0x42b374['name'][_0x5143('0x10')]('@'));}var _0x55516d=_0x42b374[_0x5143('0xe')][_0x5143('0x11')](/\s+/);return _0x55516d['length']>0x1?_0x55516d[_0x5143('0x12')](0x0,-0x1)['join']('\x20'):_0x42b374[_0x5143('0xe')];}return'Anonymous';}function getLastName(_0x1feec6){var _0x204b47=_['head'](_0x1feec6[_0x5143('0x9')]);if(_0x204b47&&_0x204b47[_0x5143('0xe')]){var _0x2ad2ac=_0x204b47[_0x5143('0xe')][_0x5143('0x11')](/\s+/);return _0x2ad2ac[_0x5143('0x13')]>0x1?_0x2ad2ac[_0x5143('0x14')]():'';}return'';}function getMails(_0x26ad59,_0x3bf9ba){var _0x1c81fc='';for(var _0x4866e9=0x0;_0x4866e9<_0x3bf9ba[_0x5143('0x9')][_0x5143('0x13')];_0x4866e9+=0x1){if(_0x3bf9ba[_0x5143('0x9')][_0x4866e9][_0x5143('0xa')]!==_0x26ad59){if(!_['isEmpty'](_0x1c81fc)){_0x1c81fc+=',';}_0x1c81fc+=_0x3bf9ba['value'][_0x4866e9][_0x5143('0xe')]||_0x3bf9ba[_0x5143('0x9')][_0x4866e9][_0x5143('0xa')]||'';_0x1c81fc+='\x20<';_0x1c81fc+=_0x3bf9ba[_0x5143('0x9')][_0x4866e9][_0x5143('0xa')]?_0x3bf9ba[_0x5143('0x9')][_0x4866e9][_0x5143('0xa')]:_0x5143('0xb')+random[_0x5143('0xc')](0x6)+'@xcally.com';_0x1c81fc+='>';}}return _0x1c81fc;}function parseEmail(_0x1a1e5e,_0x5030e3,_0x2cf8c3){if(_0x5030e3[_0x5143('0x15')]){var _0x1d6f99=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x1d6f99[_0x5143('0x16')](_0x5030e3[_0x5143('0x15')])){_0x5030e3[_0x5143('0x15')]=_0x5030e3[_0x5143('0x15')][_0x5143('0x17')](_0x1d6f99,'');}if(_0x5030e3[_0x5143('0x15')][_0x5143('0x18')](_0x5143('0x19'))){var _0x920d6f=[];_0x5030e3['attachments']['forEach'](_0x213e09=>{_0x920d6f[_0x5143('0x1a')](_0x213e09[_0x5143('0x1b')]);});var _0x204a80=/<img.*? _SRC(.*?)[^>]+>/g;var _0x204125=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x37eb37=_0x5030e3[_0x5143('0x15')]['replace'](_0x204125,_0x5143('0x1c'));var _0x2121d4=_0x37eb37[_0x5143('0x17')](_0x204a80,_0x5143('0x1d'));for(let _0x2c41fa=0x0;_0x2c41fa<_0x920d6f[_0x5143('0x13')];_0x2c41fa++){var _0x525e9c=_0x2121d4[_0x5143('0x17')]('_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20'+_0x920d6f[_0x2c41fa]+_0x5143('0x1e'));_0x2121d4=_0x525e9c;}_0x5030e3['html']=_0x2121d4;}_0x2cf8c3['body']=_0x5030e3[_0x5143('0x15')];}else{_0x2cf8c3[_0x5143('0x1f')]=_0x5030e3['textAsHtml'];}if(_0x2cf8c3['body']){_0x2cf8c3[_0x5143('0x1f')]=_0x2cf8c3[_0x5143('0x1f')][_0x5143('0x17')](/<a\s+/gi,_0x5143('0x20'));}if(_0x5030e3['to']){_0x2cf8c3[_0x5143('0x21')][_0x5143('0x22')]=getMails(null,_0x5030e3['to']);var _0x2bab6a=getMails(_0x1a1e5e[_0x5143('0x6')],_0x5030e3['to']);if(!_[_0x5143('0x23')](_0x2bab6a)){_0x2cf8c3[_0x5143('0x21')]['cc']+=_0x2bab6a;}}if(_0x5030e3['cc']){_0x2cf8c3[_0x5143('0x21')][_0x5143('0x24')]=getMails(null,_0x5030e3['cc']);var _0xce5820=getMails(_0x1a1e5e[_0x5143('0x6')],_0x5030e3['cc']);if(!_['isEmpty'](_0xce5820)){if(!_['isEmpty'](_0x2cf8c3[_0x5143('0x21')]['cc'])){_0x2cf8c3[_0x5143('0x21')]['cc']+=',';}_0x2cf8c3[_0x5143('0x21')]['cc']+=_0xce5820;}}if(!_['includes'](_0x2cf8c3[_0x5143('0x21')][_0x5143('0x22')],_0x1a1e5e[_0x5143('0x6')])&&!_[_0x5143('0x18')](_0x2cf8c3['message'][_0x5143('0x24')],_0x1a1e5e[_0x5143('0x6')])){_0x2cf8c3[_0x5143('0x21')][_0x5143('0x25')]=_0x1a1e5e[_0x5143('0x6')];}if(_0x5030e3[_0x5143('0x26')]&&_0x5030e3['attachments'][_0x5143('0x13')]){_0x2cf8c3[_0x5143('0x21')][_0x5143('0x27')]=_0x5030e3['attachments'][_0x5143('0x13')];for(var _0x55a87c=0x0,_0x48d8ad,_0x15c5eb,_0x17a68c;_0x55a87c<_0x5030e3[_0x5143('0x26')][_0x5143('0x13')];_0x55a87c+=0x1){if(_0x5030e3['attachments'][_0x55a87c][_0x5143('0x28')]==='attachment'){_0x17a68c=_0x5030e3['attachments'][_0x55a87c][_0x5143('0x1b')]||_0x5143('0x29')+_0x55a87c;_0x48d8ad=util[_0x5143('0x2a')](_0x5143('0x2b'),Date['now'](),_0x17a68c);_0x15c5eb=path[_0x5143('0x2c')](config['root'],_0x5143('0x2d'),_0x48d8ad);fs[_0x5143('0x2e')](_0x15c5eb,_0x5030e3[_0x5143('0x26')][_0x55a87c][_0x5143('0x2f')]);_0x2cf8c3['message'][_0x5143('0x26')]['push']({'name':_0x17a68c,'basename':_0x48d8ad,'type':_0x5030e3[_0x5143('0x26')][_0x55a87c][_0x5143('0x30')],'filepath':_0x15c5eb});}}}if(_0x5030e3[_0x5143('0x31')]&&_0x5030e3['headerLines'][_0x5143('0x13')]>0x0){var _0x58c98d=[_0x5143('0x32'),_0x5143('0x33'),_0x5143('0x34')];for(var _0x23aee5=0x0;_0x23aee5<_0x5030e3[_0x5143('0x31')][_0x5143('0x13')];_0x23aee5++){var _0x44e9c7=_[_0x5143('0x10')](_0x58c98d,_0x5030e3['headerLines'][_0x23aee5][_0x5143('0x35')]);if(_0x44e9c7>=0x0){_0x2cf8c3[_0x5143('0x36')]=!![];}}}return _0x2cf8c3;}exports['parser']=function(_0x3e846e,_0x13675a,_0x9548e9){var _0x515ad1={'from':getAddress(_0x13675a['from']),'firstName':getFirstName(_0x13675a[_0x5143('0x37')]),'lastName':getLastName(_0x13675a[_0x5143('0x37')]),'mapKey':'email','message':{'from':getMails(_0x3e846e[_0x5143('0x6')],_0x13675a[_0x5143('0x37')]),'to':_0x3e846e[_0x5143('0x6')],'cc':'','subject':_0x13675a[_0x5143('0x38')]||'','messageId':_0x13675a[_0x5143('0x39')],'inReplyTo':_0x13675a['inReplyTo'],'sentAt':moment(_0x13675a[_0x5143('0x3a')])[_0x5143('0x2a')](_0x5143('0x3b')),'attach':![],'attachments':[]}};if(!_0x13675a[_0x5143('0x15')]&&!_0x13675a[_0x5143('0x3c')]){var _0x27a66d=_[_0x5143('0x3d')](_0x13675a[_0x5143('0x26')],{'contentType':_0x5143('0x3e')});if(_0x27a66d[_0x5143('0x13')]){logger[_0x5143('0x3f')](util['format'](_0x5143('0x40'),_0x13675a['messageId']));tnef[_0x5143('0x41')](_['first'](_0x27a66d)[_0x5143('0x2f')],function(_0x9407ae,_0x5d6cdc){if(_0x5d6cdc){_0x13675a[_0x5143('0x15')]=_0x5d6cdc[_0x5143('0x42')]||_0x5143('0x43');if(_0x5d6cdc[_0x5143('0x44')]){for(var _0x31020a=0x0;_0x31020a<_0x5d6cdc[_0x5143('0x44')][_0x5143('0x13')];_0x31020a++){var _0x1c751b=_0x5d6cdc[_0x5143('0x44')][_0x31020a];_0x515ad1[_0x5143('0x21')]['attachments'][_0x5143('0x1a')]({'filename':_0x1c751b[_0x5143('0x45')],'content':Buffer[_0x5143('0x37')](_0x1c751b[_0x5143('0x46')])});}}}_0x9548e9(parseEmail(_0x3e846e,_0x13675a,_0x515ad1));});}else{_0x13675a[_0x5143('0x15')]='<p>Empty\x20message</p>';_0x9548e9(parseEmail(_0x3e846e,_0x13675a,_0x515ad1));}}else{_0x9548e9(parseEmail(_0x3e846e,_0x13675a,_0x515ad1));}};exports[_0x5143('0x47')]=function(_0x1ad9a7,_0x419bb6){var _0x41fcb1=['user='+(_0x419bb6||''),_0x5143('0x48')+_0x1ad9a7,'',''];return Buffer[_0x5143('0x37')](_0x41fcb1['join']('\ 1'),_0x5143('0x49'))['toString'](_0x5143('0x4a'));};
\ No newline at end of file
index 53bf9b6..a527b9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25f9=['SERV','active','Imap','Smtp','exports','lodash','name','Service','key'];(function(_0x22eb96,_0x3c2d8d){var _0x5e1adf=function(_0x22e392){while(--_0x22e392){_0x22eb96['push'](_0x22eb96['shift']());}};_0x5e1adf(++_0x3c2d8d);}(_0x25f9,0x1d0));var _0x925f=function(_0x1a00d5,_0x487d49){_0x1a00d5=_0x1a00d5-0x0;var _0x4a74ed=_0x25f9[_0x1a00d5];return _0x4a74ed;};'use strict';var _=require(_0x925f('0x0'));function MailAccount(_0x2b24f6){this['id']=_0x2b24f6['id']||0x0;this[_0x925f('0x1')]=_0x2b24f6[_0x925f('0x1')]||_0x925f('0x2');this[_0x925f('0x3')]=_0x2b24f6['key']||_0x925f('0x4');this['active']=_0x2b24f6[_0x925f('0x5')]||![];this[_0x925f('0x6')]=_0x2b24f6['Imap']||[];this[_0x925f('0x7')]=_0x2b24f6['Smtp']||[];}module[_0x925f('0x8')]=MailAccount;
\ No newline at end of file
+var _0x2bb4=['Smtp','name','Service','key','active','Imap'];(function(_0x46b445,_0x4a816c){var _0xf50377=function(_0x533b3f){while(--_0x533b3f){_0x46b445['push'](_0x46b445['shift']());}};_0xf50377(++_0x4a816c);}(_0x2bb4,0x187));var _0x42bb=function(_0x52e018,_0x16c718){_0x52e018=_0x52e018-0x0;var _0x285b23=_0x2bb4[_0x52e018];return _0x285b23;};'use strict';var _=require('lodash');function MailAccount(_0x450449){this['id']=_0x450449['id']||0x0;this[_0x42bb('0x0')]=_0x450449[_0x42bb('0x0')]||_0x42bb('0x1');this[_0x42bb('0x2')]=_0x450449[_0x42bb('0x2')]||'SERV';this[_0x42bb('0x3')]=_0x450449['active']||![];this[_0x42bb('0x4')]=_0x450449['Imap']||[];this[_0x42bb('0x5')]=_0x450449[_0x42bb('0x5')]||[];}module['exports']=MailAccount;
\ No newline at end of file
index 7d4b31b..0689431 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7f0=['hasOwnProperty','prototype','initMailAccounts','length','mailAccounts','merge','exports','lodash','mapKeys'];(function(_0x1abeb2,_0x79f462){var _0x48da20=function(_0x42a90b){while(--_0x42a90b){_0x1abeb2['push'](_0x1abeb2['shift']());}};_0x48da20(++_0x79f462);}(_0xc7f0,0x178));var _0x0c7f=function(_0x532654,_0x412915){_0x532654=_0x532654-0x0;var _0x4d4fe4=_0xc7f0[_0x532654];return _0x4d4fe4;};'use strict';var _=require(_0x0c7f('0x0'));var MailAccount=require('../model/mailAccount');var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0x421afe,_0x4a4cc3,_0x3ea50e){var _0x374e03=_[_0x0c7f('0x1')](_0x421afe,function(_0xed29f7,_0x2a5f76){return _0xed29f7[_0x3ea50e];});for(var _0x5e9287 in _0x4a4cc3){if(_0x4a4cc3[_0x0c7f('0x2')](_0x5e9287)){if(!_0x374e03[_0x5e9287]){delete _0x4a4cc3[_0x5e9287];}}}}Realtime[_0x0c7f('0x3')]['mergeFromDatabase']=function(_0x1d2507,_0x178e40){for(var _0x175d84 in _0x178e40){if(_0x1d2507[_0x0c7f('0x2')](_0x175d84)){_0x1d2507[_0x175d84]=_0x178e40[_0x175d84];}}};Realtime[_0x0c7f('0x3')][_0x0c7f('0x4')]=function(){var _0x3ab3d6=this;return function(_0x29d440){if(_0x29d440){freeIsNotKey(_0x29d440,_0x3ab3d6['mailAccounts'],'id');for(var _0x3da90a=0x0,_0xdd3dfe={},_0x5759bb={};_0x3da90a<_0x29d440[_0x0c7f('0x5')];_0x3da90a+=0x1){_0xdd3dfe=_0x29d440[_0x3da90a];if(_['isUndefined'](_0x3ab3d6[_0x0c7f('0x6')][_0xdd3dfe['id']])){_0x3ab3d6[_0x0c7f('0x6')][_0xdd3dfe['id']]=new MailAccount(_0xdd3dfe);}else{_[_0x0c7f('0x7')](_0x3ab3d6[_0x0c7f('0x6')][_0xdd3dfe['id']],_0xdd3dfe);}}}return _0x3ab3d6['mailAccounts'];};};module[_0x0c7f('0x8')]=Realtime;
\ No newline at end of file
+var _0x0064=['mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initMailAccounts','length','isUndefined','merge','exports','lodash','mailAccounts'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x0064,0x1cc));var _0x4006=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0064[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4006('0x0'));var MailAccount=require('../model/mailAccount');var Realtime=function(){this[_0x4006('0x1')]={};};function freeIsNotKey(_0x1c4968,_0xbed023,_0x585949){var _0x2bc944=_[_0x4006('0x2')](_0x1c4968,function(_0x10ce7a,_0x107bce){return _0x10ce7a[_0x585949];});for(var _0x3a1166 in _0xbed023){if(_0xbed023[_0x4006('0x3')](_0x3a1166)){if(!_0x2bc944[_0x3a1166]){delete _0xbed023[_0x3a1166];}}}}Realtime[_0x4006('0x4')][_0x4006('0x5')]=function(_0x4f97db,_0x4d9469){for(var _0x45b80e in _0x4d9469){if(_0x4f97db[_0x4006('0x3')](_0x45b80e)){_0x4f97db[_0x45b80e]=_0x4d9469[_0x45b80e];}}};Realtime[_0x4006('0x4')][_0x4006('0x6')]=function(){var _0xa0f93c=this;return function(_0x2eb543){if(_0x2eb543){freeIsNotKey(_0x2eb543,_0xa0f93c['mailAccounts'],'id');for(var _0x942ab3=0x0,_0x435a23={},_0xec2d25={};_0x942ab3<_0x2eb543[_0x4006('0x7')];_0x942ab3+=0x1){_0x435a23=_0x2eb543[_0x942ab3];if(_[_0x4006('0x8')](_0xa0f93c['mailAccounts'][_0x435a23['id']])){_0xa0f93c[_0x4006('0x1')][_0x435a23['id']]=new MailAccount(_0x435a23);}else{_[_0x4006('0x9')](_0xa0f93c[_0x4006('0x1')][_0x435a23['id']],_0x435a23);}}}return _0xa0f93c['mailAccounts'];};};module[_0x4006('0xa')]=Realtime;
\ No newline at end of file
index 4a25bc8..2925b2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e76=['MailServerIn','Imap','CloudProvider','name','data5','MailServerOut','type','notify','NotifyMailAccount','../client','GetMailAccount','provider','service','email','active','key','TemplateId'];(function(_0x855e77,_0x348ad7){var _0x1edd15=function(_0x2a8fb8){while(--_0x2a8fb8){_0x855e77['push'](_0x855e77['shift']());}};_0x1edd15(++_0x348ad7);}(_0x0e76,0xc4));var _0x60e7=function(_0x3a3c81,_0x253ca1){_0x3a3c81=_0x3a3c81-0x0;var _0x53acaf=_0x0e76[_0x3a3c81];return _0x53acaf;};'use strict';var client=require(_0x60e7('0x0'));exports['getMailAccounts']=function(){return function(){return client['Request'](_0x60e7('0x1'),{'options':{'attributes':['id','name',_0x60e7('0x2'),_0x60e7('0x3'),_0x60e7('0x4'),_0x60e7('0x5'),_0x60e7('0x6'),'ListId',_0x60e7('0x7')],'raw':![],'include':[{'model':_0x60e7('0x8'),'as':_0x60e7('0x9'),'include':[{'model':_0x60e7('0xa'),'attributes':['id',_0x60e7('0xb'),_0x60e7('0x3'),'type',_0x60e7('0xc')],'as':_0x60e7('0xa')}]},{'model':_0x60e7('0xd'),'as':'Smtp','include':[{'model':_0x60e7('0xa'),'attributes':['id','name',_0x60e7('0x3'),_0x60e7('0xe'),'data5'],'as':_0x60e7('0xa')}]}]},'log':'getMailAccount'});};};exports[_0x60e7('0xf')]=function(_0x423f83,_0x520a5e){return client['Request'](_0x60e7('0x10'),{'account':{'id':_0x423f83},'body':_0x520a5e,'log':_0x60e7('0x10')});};
\ No newline at end of file
+var _0x2a8e=['notify','NotifyMailAccount','../client','Request','GetMailAccount','name','provider','service','email','active','key','ListId','MailServerIn','Imap','CloudProvider','type','data5','Smtp','getMailAccount'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x2a8e,0x132));var _0xe2a8=function(_0x2d18c,_0x4cd3a7){_0x2d18c=_0x2d18c-0x0;var _0x27ad26=_0x2a8e[_0x2d18c];return _0x27ad26;};'use strict';var client=require(_0xe2a8('0x0'));exports['getMailAccounts']=function(){return function(){return client[_0xe2a8('0x1')](_0xe2a8('0x2'),{'options':{'attributes':['id',_0xe2a8('0x3'),_0xe2a8('0x4'),_0xe2a8('0x5'),_0xe2a8('0x6'),_0xe2a8('0x7'),_0xe2a8('0x8'),_0xe2a8('0x9'),'TemplateId'],'raw':![],'include':[{'model':_0xe2a8('0xa'),'as':_0xe2a8('0xb'),'include':[{'model':_0xe2a8('0xc'),'attributes':['id',_0xe2a8('0x3'),_0xe2a8('0x5'),_0xe2a8('0xd'),_0xe2a8('0xe')],'as':_0xe2a8('0xc')}]},{'model':'MailServerOut','as':_0xe2a8('0xf'),'include':[{'model':_0xe2a8('0xc'),'attributes':['id',_0xe2a8('0x3'),_0xe2a8('0x5'),_0xe2a8('0xd'),'data5'],'as':_0xe2a8('0xc')}]}]},'log':_0xe2a8('0x10')});};};exports[_0xe2a8('0x11')]=function(_0x8bdb14,_0x3feabf){return client[_0xe2a8('0x1')](_0xe2a8('0x12'),{'account':{'id':_0x8bdb14},'body':_0x3feabf,'log':'NotifyMailAccount'});};
\ No newline at end of file
index 102c4f4..cab77b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x404b=['Request','ShowSetting','../client','getSettings'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x404b,0x1ae));var _0xb404=function(_0x49d2b8,_0x103075){_0x49d2b8=_0x49d2b8-0x0;var _0x240b01=_0x404b[_0x49d2b8];return _0x240b01;};'use strict';var client=require(_0xb404('0x0'));exports[_0xb404('0x1')]=function(){return client[_0xb404('0x2')](_0xb404('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['loginMailFrequency']},'log':'GetSettings'});};
\ No newline at end of file
+var _0x755e=['../client','getSettings','Request','loginMailFrequency','GetSettings'];(function(_0x2000e9,_0x288bee){var _0x1ef6fe=function(_0x15bc01){while(--_0x15bc01){_0x2000e9['push'](_0x2000e9['shift']());}};_0x1ef6fe(++_0x288bee);}(_0x755e,0x127));var _0xe755=function(_0x512891,_0x46005a){_0x512891=_0x512891-0x0;var _0x1c190c=_0x755e[_0x512891];return _0x1c190c;};'use strict';var client=require(_0xe755('0x0'));exports[_0xe755('0x1')]=function(){return client[_0xe755('0x2')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xe755('0x3')]},'log':_0xe755('0x4')});};
\ No newline at end of file
index 4b2a606..15c3274 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(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0xa9e0[_0x387777];return _0x3f84c0;};'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(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xa9e0[_0x56482c];return _0x5aae7a;};'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 b34b861..96f1f4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ab2=['socket.io-redis','default','../../config/express','../../routes','once','log','Express\x20server\x20listening\x20on\x20port\x20%d!','port','http','express','ioredis','timeout','listen','socket.io','websocket','polling','redis','adapter'];(function(_0x3293dd,_0xb1e551){var _0x1765a4=function(_0x2061d2){while(--_0x2061d2){_0x3293dd['push'](_0x3293dd['shift']());}};_0x1765a4(++_0xb1e551);}(_0x4ab2,0x14c));var _0x24ab=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0x4ab2[_0x178e48];return _0x440d7e;};'use strict';var _=require('lodash');var http=require(_0x24ab('0x0'));var express=require(_0x24ab('0x1'));var sticky=require('sticky-session');var Redis=require(_0x24ab('0x2'));var config=require('../../config/environment');var app=express();var server=http['createServer'](app);server[_0x24ab('0x3')]=0xdbba0;if(sticky[_0x24ab('0x4')](server,config['port'])){var socketio=require(_0x24ab('0x5'))(server,{'transports':[_0x24ab('0x6'),_0x24ab('0x7')]});config['redis']=_['defaults'](config[_0x24ab('0x8')],{'host':'localhost','port':0x18eb});socketio[_0x24ab('0x9')](require(_0x24ab('0xa'))({'pubClient':new Redis(config[_0x24ab('0x8')]),'subClient':new Redis(config[_0x24ab('0x8')])}));require('../../config/triggers')[_0x24ab('0xb')]();require('../../config/socketio')['default'](socketio);require(_0x24ab('0xc'))[_0x24ab('0xb')](app);require(_0x24ab('0xd'))[_0x24ab('0xb')](app);}else{server[_0x24ab('0xe')]('listening',function(){console[_0x24ab('0xf')](_0x24ab('0x10'),config[_0x24ab('0x11')]);});}exports=module['exports']=app;
\ No newline at end of file
+var _0x517f=['defaults','localhost','adapter','socket.io-redis','../../config/triggers','default','../../config/express','../../routes','once','listening','log','port','exports','lodash','http','express','sticky-session','ioredis','../../config/environment','createServer','timeout','listen','socket.io','websocket','redis'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0x517f,0xee));var _0xf517=function(_0x1ccdf7,_0x215d5a){_0x1ccdf7=_0x1ccdf7-0x0;var _0x52a0ae=_0x517f[_0x1ccdf7];return _0x52a0ae;};'use strict';var _=require(_0xf517('0x0'));var http=require(_0xf517('0x1'));var express=require(_0xf517('0x2'));var sticky=require(_0xf517('0x3'));var Redis=require(_0xf517('0x4'));var config=require(_0xf517('0x5'));var app=express();var server=http[_0xf517('0x6')](app);server[_0xf517('0x7')]=0xdbba0;if(sticky[_0xf517('0x8')](server,config['port'])){var socketio=require(_0xf517('0x9'))(server,{'transports':[_0xf517('0xa'),'polling']});config[_0xf517('0xb')]=_[_0xf517('0xc')](config[_0xf517('0xb')],{'host':_0xf517('0xd'),'port':0x18eb});socketio[_0xf517('0xe')](require(_0xf517('0xf'))({'pubClient':new Redis(config[_0xf517('0xb')]),'subClient':new Redis(config['redis'])}));require(_0xf517('0x10'))[_0xf517('0x11')]();require('../../config/socketio')[_0xf517('0x11')](socketio);require(_0xf517('0x12'))[_0xf517('0x11')](app);require(_0xf517('0x13'))[_0xf517('0x11')](app);}else{server[_0xf517('0x14')](_0xf517('0x15'),function(){console[_0xf517('0x16')]('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0xf517('0x17')]);});}exports=module[_0xf517('0x18')]=app;
\ No newline at end of file
index c079fc2..4b8d96c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc8c5=['result','catch','exports','jayson/promise','routing','http','Request','request','then','debug','rpc','error','message'];(function(_0x30cb22,_0x8cea7a){var _0x1b8ebb=function(_0x54fb88){while(--_0x54fb88){_0x30cb22['push'](_0x30cb22['shift']());}};_0x1b8ebb(++_0x8cea7a);}(_0xc8c5,0x155));var _0x5c8c=function(_0x4f749a,_0x541f4f){_0x4f749a=_0x4f749a-0x0;var _0x1152b7=_0xc8c5[_0x4f749a];return _0x1152b7;};'use strict';var jayson=require(_0x5c8c('0x0'));var BPromise=require('bluebird');var logger=require('../../config/logger')(_0x5c8c('0x1'));var client=jayson['client'][_0x5c8c('0x2')]({'port':0x2329});client[_0x5c8c('0x3')]=function(_0x4e1caf,_0x1794a8){return new BPromise(function(_0x49d921,_0x221888){return client[_0x5c8c('0x4')](_0x4e1caf,_0x1794a8)[_0x5c8c('0x5')](function(_0x4bc8e0){logger[_0x5c8c('0x6')]('rpc',_0x5c8c('0x1'),_0x4e1caf,_0x1794a8,_0x4bc8e0);if(_0x4bc8e0['error']){logger['error'](_0x5c8c('0x7'),_0x5c8c('0x1'),_0x4e1caf,_0x4bc8e0[_0x5c8c('0x8')][_0x5c8c('0x9')],_0x1794a8);return _0x221888(_0x4bc8e0[_0x5c8c('0x8')][_0x5c8c('0x9')]);}else{return _0x49d921(_0x4bc8e0[_0x5c8c('0xa')]);}})[_0x5c8c('0xb')](function(_0x3dc5ee){logger[_0x5c8c('0x8')](_0x5c8c('0x7'),_0x5c8c('0x1'),_0x4e1caf,_0x3dc5ee,_0x1794a8);return _0x221888(_0x3dc5ee);});});};module[_0x5c8c('0xc')]=client;
\ No newline at end of file
+var _0x3c32=['catch','exports','jayson/promise','../../config/logger','routing','then','debug','rpc','error','message','result'];(function(_0x2272b5,_0x362458){var _0x110156=function(_0x5c2e32){while(--_0x5c2e32){_0x2272b5['push'](_0x2272b5['shift']());}};_0x110156(++_0x362458);}(_0x3c32,0x1db));var _0x23c3=function(_0x30f2e3,_0x1ad4ae){_0x30f2e3=_0x30f2e3-0x0;var _0x1a51b3=_0x3c32[_0x30f2e3];return _0x1a51b3;};'use strict';var jayson=require(_0x23c3('0x0'));var BPromise=require('bluebird');var logger=require(_0x23c3('0x1'))(_0x23c3('0x2'));var client=jayson['client']['http']({'port':0x2329});client['Request']=function(_0x3b0ece,_0x246975){return new BPromise(function(_0x489f30,_0x380e2e){return client['request'](_0x3b0ece,_0x246975)[_0x23c3('0x3')](function(_0x1bb662){logger[_0x23c3('0x4')](_0x23c3('0x5'),_0x23c3('0x2'),_0x3b0ece,_0x246975,_0x1bb662);if(_0x1bb662[_0x23c3('0x6')]){logger[_0x23c3('0x6')](_0x23c3('0x5'),'routing',_0x3b0ece,_0x1bb662['error'][_0x23c3('0x7')],_0x246975);return _0x380e2e(_0x1bb662[_0x23c3('0x6')][_0x23c3('0x7')]);}else{return _0x489f30(_0x1bb662[_0x23c3('0x8')]);}})[_0x23c3('0x9')](function(_0xb7120b){logger[_0x23c3('0x6')](_0x23c3('0x5'),'routing',_0x3b0ece,_0xb7120b,_0x246975);return _0x380e2e(_0xb7120b);});});};module[_0x23c3('0xa')]=client;
\ No newline at end of file
index e99a9d1..f6c1c5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fd1=['initIntervals','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','getMailQueues','initMailQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','bluebird','./realtime','./rpc/user','./rpc/openchannelQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','getAgents','initAgents','getIntervals'];(function(_0x39726c,_0x3f7905){var _0x401a36=function(_0x50a184){while(--_0x50a184){_0x39726c['push'](_0x39726c['shift']());}};_0x401a36(++_0x3f7905);}(_0x8fd1,0xfb));var _0x18fd=function(_0x40001a,_0x57f2ae){_0x40001a=_0x40001a-0x0;var _0x4cec45=_0x8fd1[_0x40001a];return _0x4cec45;};'use strict';var BPromise=require(_0x18fd('0x0'));var server=require('./server');var Realtime=require(_0x18fd('0x1'));var user=require(_0x18fd('0x2'));var interval=require('./rpc/interval');var openchannelQueue=require(_0x18fd('0x3'));var chatQueue=require('./rpc/chatQueue');var smsQueue=require(_0x18fd('0x4'));var mailQueue=require(_0x18fd('0x5'));var faxQueue=require(_0x18fd('0x6'));var whatsappQueue=require(_0x18fd('0x7'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x18fd('0x8')]()[_0x18fd('0x9')](user[_0x18fd('0xa')]())[_0x18fd('0x9')](realtime[_0x18fd('0xb')]())['then'](interval[_0x18fd('0xc')]())[_0x18fd('0x9')](realtime[_0x18fd('0xd')]())['then'](openchannelQueue['getOpenchannelQueues']())[_0x18fd('0x9')](realtime[_0x18fd('0xe')]())['then'](chatQueue[_0x18fd('0xf')]())[_0x18fd('0x9')](realtime[_0x18fd('0x10')]())[_0x18fd('0x9')](smsQueue[_0x18fd('0x11')]())['then'](realtime['initSmsQueues']())[_0x18fd('0x9')](mailQueue[_0x18fd('0x12')]())[_0x18fd('0x9')](realtime[_0x18fd('0x13')]())['then'](faxQueue['getFaxQueues']())['then'](realtime['initFaxQueues']())[_0x18fd('0x9')](whatsappQueue[_0x18fd('0x14')]())[_0x18fd('0x9')](realtime[_0x18fd('0x15')]())['then'](function(){return realtime;});}function main(){return server[_0x18fd('0x16')](realtime)['then'](function(_0x31905d){return initRealtime();})[_0x18fd('0x9')](function(_0x38ea71){return setInterval(initRealtime,0x1388);})[_0x18fd('0x17')](function(_0x47e2c5){console['log'](_0x47e2c5);});}main();
\ No newline at end of file
+var _0xe67a=['initWhatsappQueues','listen','log','bluebird','./realtime','./rpc/interval','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','getAgents','getIntervals','initOpenchannelQueues','getChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues'];(function(_0x94036e,_0x1fd2ef){var _0x1b3ba9=function(_0x149388){while(--_0x149388){_0x94036e['push'](_0x94036e['shift']());}};_0x1b3ba9(++_0x1fd2ef);}(_0xe67a,0x1b3));var _0xae67=function(_0x538e9e,_0x410d24){_0x538e9e=_0x538e9e-0x0;var _0x266365=_0xe67a[_0x538e9e];return _0x266365;};'use strict';var BPromise=require(_0xae67('0x0'));var server=require('./server');var Realtime=require(_0xae67('0x1'));var user=require('./rpc/user');var interval=require(_0xae67('0x2'));var openchannelQueue=require('./rpc/openchannelQueue');var chatQueue=require(_0xae67('0x3'));var smsQueue=require(_0xae67('0x4'));var mailQueue=require(_0xae67('0x5'));var faxQueue=require(_0xae67('0x6'));var whatsappQueue=require(_0xae67('0x7'));var realtime=new Realtime();function initRealtime(){return BPromise[_0xae67('0x8')]()[_0xae67('0x9')](user[_0xae67('0xa')]())[_0xae67('0x9')](realtime['initAgents']())[_0xae67('0x9')](interval[_0xae67('0xb')]())[_0xae67('0x9')](realtime['initIntervals']())[_0xae67('0x9')](openchannelQueue['getOpenchannelQueues']())[_0xae67('0x9')](realtime[_0xae67('0xc')]())[_0xae67('0x9')](chatQueue[_0xae67('0xd')]())[_0xae67('0x9')](realtime['initChatQueues']())[_0xae67('0x9')](smsQueue[_0xae67('0xe')]())[_0xae67('0x9')](realtime[_0xae67('0xf')]())[_0xae67('0x9')](mailQueue[_0xae67('0x10')]())[_0xae67('0x9')](realtime[_0xae67('0x11')]())['then'](faxQueue[_0xae67('0x12')]())[_0xae67('0x9')](realtime[_0xae67('0x13')]())[_0xae67('0x9')](whatsappQueue[_0xae67('0x14')]())[_0xae67('0x9')](realtime[_0xae67('0x15')]())[_0xae67('0x9')](function(){return realtime;});}function main(){return server[_0xae67('0x16')](realtime)[_0xae67('0x9')](function(_0x388c3d){return initRealtime();})[_0xae67('0x9')](function(_0x283a69){return setInterval(initRealtime,0x1388);})['catch'](function(_0x132a48){console[_0xae67('0x17')](_0x132a48);});}main();
\ No newline at end of file
index 908b8b9..92d4df1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['orderBy','asc','result','clone','consequence','nextTick','push','isEqual','condition','call','matchPath','noop','matches','filter','turn','length','prioritize','findRules','priority','toJSON','map','toString','fromJSON','isString','lodash','EventEmitter','init','isNil','register','ignoreFactChanges','inherits','prototype','rules','activeRules','concat','isObject','sync'];(function(_0x55abcb,_0x1c8ce0){var _0x10b891=function(_0x2d58cd){while(--_0x2d58cd){_0x55abcb['push'](_0x55abcb['shift']());}};_0x10b891(++_0x1c8ce0);}(_0x326f,0xd1));var _0xf326=function(_0x483018,_0x32664a){_0x483018=_0x483018-0x0;var _0x57c965=_0x326f[_0x483018];return _0x57c965;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var EventEmitter=require('events')[_0xf326('0x1')];function RuleEngine(_0x330ddb,_0x22aabf){this[_0xf326('0x2')]();if(!_[_0xf326('0x3')](_0x330ddb)){this[_0xf326('0x4')](_0x330ddb);}if(_0x22aabf){this[_0xf326('0x5')]=_0x22aabf[_0xf326('0x5')];}return this;}util[_0xf326('0x6')](RuleEngine,EventEmitter);RuleEngine[_0xf326('0x7')]['init']=function(_0x3c254d){this[_0xf326('0x8')]=[];this[_0xf326('0x9')]=[];};RuleEngine[_0xf326('0x7')]['register']=function(_0x4c206c){if(Array['isArray'](_0x4c206c)){this[_0xf326('0x8')]=this[_0xf326('0x8')][_0xf326('0xa')](_0x4c206c);}else if(_0x4c206c!==null&&_[_0xf326('0xb')](_0x4c206c)){this[_0xf326('0x8')]['push'](_0x4c206c);}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0xc')]=function(){this['activeRules']=this[_0xf326('0x8')]['filter'](function(_0x3162f9){if(_[_0xf326('0x3')](_0x3162f9['on'])){_0x3162f9['on']=!![];}if(_0x3162f9['on']===!![]){return _0x3162f9;}});this['activeRules']=_[_0xf326('0xd')](this[_0xf326('0x9')],['p'],[_0xf326('0xe')]);};RuleEngine[_0xf326('0x7')]['execute']=function(_0x45c1b6,_0x5204ee){var _0x54bd1a=![];_0x45c1b6[_0xf326('0xf')]=!![];var _0x11f6d2=_[_0xf326('0x10')](_0x45c1b6);var _0xa63d1a=_[_0xf326('0x10')](_0x45c1b6);var _0x287a2a=this[_0xf326('0x9')];var _0x2cf2ca=[];var _0x5a682a=this[_0xf326('0x5')];(function FnRuleLoop(_0x453100){var _0x18bee3={'rules':function(){return _0x287a2a;},'rule':function(){return _0x287a2a[_0x453100];},'when':function(_0x31ffb9){if(_0x31ffb9){var _0xcef2b5=_0x287a2a[_0x453100][_0xf326('0x11')];_0xcef2b5['ruleRef']=_0x287a2a[_0x453100]['id']||_0x287a2a[_0x453100]['name']||'index_'+_0x453100;process[_0xf326('0x12')](function(){_0x2cf2ca[_0xf326('0x13')](_0xcef2b5['ruleRef']);_0xcef2b5['call'](_0x11f6d2,_0x18bee3);});}else{process[_0xf326('0x12')](function(){_0x18bee3['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x54bd1a=!![];return FnRuleLoop(0x0);},'next':function(_0x5b6d3c){if(!_0x5a682a&&!_[_0xf326('0x14')](_0xa63d1a,_0x11f6d2)){_0xa63d1a=_[_0xf326('0x10')](_0x11f6d2);process['nextTick'](function(){_0x18bee3['restart']();});}else{process[_0xf326('0x12')](function(){if(_[_0xf326('0x3')](_0x5b6d3c)){return FnRuleLoop(_0x453100+0x1);}else{return FnRuleLoop(_0x5b6d3c);}});}}};if(_0x453100<_0x287a2a['length']&&_0x54bd1a===![]){var _0x337ed5=_0x287a2a[_0x453100][_0xf326('0x15')];_0x337ed5[_0xf326('0x16')](_0x11f6d2,_0x18bee3);}else{process[_0xf326('0x12')](function(){_0x11f6d2[_0xf326('0x17')]=_0x2cf2ca;return _0x5204ee?_0x5204ee(_0x11f6d2):_[_0xf326('0x18')]();});}}(0x0));};RuleEngine['prototype']['findRules']=function(_0x4f31f6){if(_[_0xf326('0x3')](_0x4f31f6)){return this[_0xf326('0x8')];}else{var _0x2cd45a=_[_0xf326('0x19')](_0x4f31f6);return _[_0xf326('0x1a')](this[_0xf326('0x8')],_0x2cd45a);}};RuleEngine['prototype'][_0xf326('0x1b')]=function(_0xa3c0b,_0x212d5d){var _0x581531=_0xa3c0b==='on'||_0xa3c0b==='ON'?!![]:![];var _0x1617d2=this['findRules'](_0x212d5d);for(var _0x4a9abf=0x0,_0x6a8e89=_0x1617d2[_0xf326('0x1c')];_0x4a9abf<_0x6a8e89;_0x4a9abf+=0x1){_0x1617d2[_0x4a9abf]['on']=_0x581531;}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0x1d')]=function(_0x292500,_0x55790d){_0x292500=parseInt(_0x292500,0xa);var _0x225776=this[_0xf326('0x1e')](_0x55790d);for(var _0xd77aba=0x0,_0x18d110=_0x225776[_0xf326('0x1c')];_0xd77aba<_0x18d110;_0xd77aba+=0x1){_0x225776[_0xd77aba][_0xf326('0x1f')]=_0x292500;}this[_0xf326('0xc')]();};RuleEngine[_0xf326('0x7')][_0xf326('0x20')]=function(){var _0x349a03=this['rules'];if(_0x349a03 instanceof Array){_0x349a03=_0x349a03[_0xf326('0x21')](function(_0x424104){_0x424104[_0xf326('0x15')]=_0x424104['condition'][_0xf326('0x22')]();_0x424104[_0xf326('0x11')]=_0x424104[_0xf326('0x11')]['toString']();return _0x424104;});}else if(!_['isNil'](_0x349a03)){_0x349a03[_0xf326('0x15')]=_0x349a03[_0xf326('0x15')][_0xf326('0x22')]();_0x349a03[_0xf326('0x11')]=_0x349a03[_0xf326('0x11')][_0xf326('0x22')]();}return _0x349a03;};RuleEngine[_0xf326('0x7')][_0xf326('0x23')]=function(_0x580374){this[_0xf326('0x2')]();if(_[_0xf326('0x24')](_0x580374)){_0x580374=JSON['parse'](_0x580374);}if(_0x580374 instanceof Array){_0x580374=_0x580374[_0xf326('0x21')](function(_0x4e5d7c){_0x4e5d7c[_0xf326('0x15')]=eval('('+_0x4e5d7c['condition']+')');_0x4e5d7c['consequence']=eval('('+_0x4e5d7c[_0xf326('0x11')]+')');return _0x4e5d7c;});}else if(_0x580374!==null&&typeof _0x580374=='object'){_0x580374[_0xf326('0x15')]=eval('('+_0x580374['condition']+')');_0x580374[_0xf326('0x11')]=eval('('+_0x580374[_0xf326('0x11')]+')');}this[_0xf326('0x4')](_0x580374);};module['exports']=RuleEngine;
\ No newline at end of file
+var _0xc4aa=['ruleRef','name','nextTick','push','call','next','isEqual','restart','isNil','length','condition','matchPath','noop','findRules','matches','turn','prioritize','priority','toJSON','toString','fromJSON','isString','parse','register','exports','lodash','util','events','EventEmitter','ignoreFactChanges','inherits','prototype','init','rules','activeRules','isArray','concat','isObject','sync','filter','orderBy','asc','execute','result','clone','consequence'];(function(_0x2501bc,_0x45cb1f){var _0x460b9d=function(_0x2d9cd6){while(--_0x2d9cd6){_0x2501bc['push'](_0x2501bc['shift']());}};_0x460b9d(++_0x45cb1f);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xc4aa[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var EventEmitter=require(_0xac4a('0x2'))[_0xac4a('0x3')];function RuleEngine(_0x275161,_0x22469d){this['init']();if(!_['isNil'](_0x275161)){this['register'](_0x275161);}if(_0x22469d){this[_0xac4a('0x4')]=_0x22469d[_0xac4a('0x4')];}return this;}util[_0xac4a('0x5')](RuleEngine,EventEmitter);RuleEngine[_0xac4a('0x6')][_0xac4a('0x7')]=function(_0x15cd34){this[_0xac4a('0x8')]=[];this[_0xac4a('0x9')]=[];};RuleEngine['prototype']['register']=function(_0x1aba6d){if(Array[_0xac4a('0xa')](_0x1aba6d)){this[_0xac4a('0x8')]=this['rules'][_0xac4a('0xb')](_0x1aba6d);}else if(_0x1aba6d!==null&&_[_0xac4a('0xc')](_0x1aba6d)){this[_0xac4a('0x8')]['push'](_0x1aba6d);}this[_0xac4a('0xd')]();};RuleEngine['prototype'][_0xac4a('0xd')]=function(){this['activeRules']=this[_0xac4a('0x8')][_0xac4a('0xe')](function(_0x24291d){if(_['isNil'](_0x24291d['on'])){_0x24291d['on']=!![];}if(_0x24291d['on']===!![]){return _0x24291d;}});this[_0xac4a('0x9')]=_[_0xac4a('0xf')](this[_0xac4a('0x9')],['p'],[_0xac4a('0x10')]);};RuleEngine[_0xac4a('0x6')][_0xac4a('0x11')]=function(_0x34bc01,_0x33c287){var _0x190418=![];_0x34bc01[_0xac4a('0x12')]=!![];var _0x11e101=_[_0xac4a('0x13')](_0x34bc01);var _0x4a2119=_[_0xac4a('0x13')](_0x34bc01);var _0x34d797=this[_0xac4a('0x9')];var _0x144553=[];var _0x3e88e3=this[_0xac4a('0x4')];(function FnRuleLoop(_0x28e304){var _0x44ec59={'rules':function(){return _0x34d797;},'rule':function(){return _0x34d797[_0x28e304];},'when':function(_0x546c5d){if(_0x546c5d){var _0x5ac21e=_0x34d797[_0x28e304][_0xac4a('0x14')];_0x5ac21e[_0xac4a('0x15')]=_0x34d797[_0x28e304]['id']||_0x34d797[_0x28e304][_0xac4a('0x16')]||'index_'+_0x28e304;process[_0xac4a('0x17')](function(){_0x144553[_0xac4a('0x18')](_0x5ac21e[_0xac4a('0x15')]);_0x5ac21e[_0xac4a('0x19')](_0x11e101,_0x44ec59);});}else{process[_0xac4a('0x17')](function(){_0x44ec59[_0xac4a('0x1a')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x190418=!![];return FnRuleLoop(0x0);},'next':function(_0xe38996){if(!_0x3e88e3&&!_[_0xac4a('0x1b')](_0x4a2119,_0x11e101)){_0x4a2119=_['clone'](_0x11e101);process[_0xac4a('0x17')](function(){_0x44ec59[_0xac4a('0x1c')]();});}else{process['nextTick'](function(){if(_[_0xac4a('0x1d')](_0xe38996)){return FnRuleLoop(_0x28e304+0x1);}else{return FnRuleLoop(_0xe38996);}});}}};if(_0x28e304<_0x34d797[_0xac4a('0x1e')]&&_0x190418===![]){var _0x3eacd3=_0x34d797[_0x28e304][_0xac4a('0x1f')];_0x3eacd3['call'](_0x11e101,_0x44ec59);}else{process[_0xac4a('0x17')](function(){_0x11e101[_0xac4a('0x20')]=_0x144553;return _0x33c287?_0x33c287(_0x11e101):_[_0xac4a('0x21')]();});}}(0x0));};RuleEngine[_0xac4a('0x6')][_0xac4a('0x22')]=function(_0x2b0dc2){if(_[_0xac4a('0x1d')](_0x2b0dc2)){return this[_0xac4a('0x8')];}else{var _0x3e2c69=_[_0xac4a('0x23')](_0x2b0dc2);return _[_0xac4a('0xe')](this[_0xac4a('0x8')],_0x3e2c69);}};RuleEngine[_0xac4a('0x6')][_0xac4a('0x24')]=function(_0x1c13dc,_0x20202c){var _0x4e17ce=_0x1c13dc==='on'||_0x1c13dc==='ON'?!![]:![];var _0x23b061=this[_0xac4a('0x22')](_0x20202c);for(var _0x42a33c=0x0,_0x2772fe=_0x23b061[_0xac4a('0x1e')];_0x42a33c<_0x2772fe;_0x42a33c+=0x1){_0x23b061[_0x42a33c]['on']=_0x4e17ce;}this['sync']();};RuleEngine['prototype'][_0xac4a('0x25')]=function(_0x7a948b,_0x1f12d5){_0x7a948b=parseInt(_0x7a948b,0xa);var _0x546b65=this['findRules'](_0x1f12d5);for(var _0x355755=0x0,_0x2896bc=_0x546b65[_0xac4a('0x1e')];_0x355755<_0x2896bc;_0x355755+=0x1){_0x546b65[_0x355755][_0xac4a('0x26')]=_0x7a948b;}this[_0xac4a('0xd')]();};RuleEngine['prototype'][_0xac4a('0x27')]=function(){var _0x482afc=this[_0xac4a('0x8')];if(_0x482afc instanceof Array){_0x482afc=_0x482afc['map'](function(_0x17e6de){_0x17e6de[_0xac4a('0x1f')]=_0x17e6de[_0xac4a('0x1f')][_0xac4a('0x28')]();_0x17e6de[_0xac4a('0x14')]=_0x17e6de[_0xac4a('0x14')][_0xac4a('0x28')]();return _0x17e6de;});}else if(!_[_0xac4a('0x1d')](_0x482afc)){_0x482afc[_0xac4a('0x1f')]=_0x482afc[_0xac4a('0x1f')][_0xac4a('0x28')]();_0x482afc[_0xac4a('0x14')]=_0x482afc[_0xac4a('0x14')][_0xac4a('0x28')]();}return _0x482afc;};RuleEngine['prototype'][_0xac4a('0x29')]=function(_0x1c41fb){this['init']();if(_[_0xac4a('0x2a')](_0x1c41fb)){_0x1c41fb=JSON[_0xac4a('0x2b')](_0x1c41fb);}if(_0x1c41fb instanceof Array){_0x1c41fb=_0x1c41fb['map'](function(_0x58804b){_0x58804b[_0xac4a('0x1f')]=eval('('+_0x58804b[_0xac4a('0x1f')]+')');_0x58804b[_0xac4a('0x14')]=eval('('+_0x58804b[_0xac4a('0x14')]+')');return _0x58804b;});}else if(_0x1c41fb!==null&&typeof _0x1c41fb=='object'){_0x1c41fb[_0xac4a('0x1f')]=eval('('+_0x1c41fb[_0xac4a('0x1f')]+')');_0x1c41fb['consequence']=eval('('+_0x1c41fb[_0xac4a('0x14')]+')');}this[_0xac4a('0x2c')](_0x1c41fb);};module[_0xac4a('0x2d')]=RuleEngine;
\ No newline at end of file
index 0a41c46..b74f811 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e3b=['sendMailMessage','SendMail','bluebird','client','http','then','error'];(function(_0x42e207,_0x389d8e){var _0x39f83d=function(_0x56d094){while(--_0x56d094){_0x42e207['push'](_0x42e207['shift']());}};_0x39f83d(++_0x389d8e);}(_0x1e3b,0x8e));var _0xb1e3=function(_0x474735,_0x307301){_0x474735=_0x474735-0x0;var _0xbef520=_0x1e3b[_0x474735];return _0xbef520;};'use strict';var BPromise=require(_0xb1e3('0x0'));var jayson=require('jayson/promise');var client=jayson[_0xb1e3('0x1')][_0xb1e3('0x2')]({'port':0x232b});function request(_0x5f11ad,_0x4fbc4a){return new BPromise(function(_0x20cb27,_0x475bf9){return client['request'](_0x5f11ad,_0x4fbc4a)[_0xb1e3('0x3')](function(_0x34d9bb){if(_0x34d9bb['error']){return _0x475bf9(_0x34d9bb[_0xb1e3('0x4')]['message']);}else{return _0x20cb27(_0x34d9bb['result']);}})['catch'](function(_0x21f268){return _0x475bf9(_0x21f268);});});}exports[_0xb1e3('0x5')]=function(_0x19ed4a,_0x3fe3a7){return request(_0xb1e3('0x6'),{'account':_0x19ed4a,'message':_0x3fe3a7});};
\ No newline at end of file
+var _0x848d=['then','error','message','result','sendMailMessage','SendMail','bluebird','jayson/promise','client','http','request'];(function(_0x5a7112,_0x1f9492){var _0x3147f7=function(_0x4d2329){while(--_0x4d2329){_0x5a7112['push'](_0x5a7112['shift']());}};_0x3147f7(++_0x1f9492);}(_0x848d,0xb6));var _0xd848=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x848d[_0x3dd15e];return _0x231fd0;};'use strict';var BPromise=require(_0xd848('0x0'));var jayson=require(_0xd848('0x1'));var client=jayson[_0xd848('0x2')][_0xd848('0x3')]({'port':0x232b});function request(_0x46aed2,_0x449b0a){return new BPromise(function(_0x493aef,_0x58d946){return client[_0xd848('0x4')](_0x46aed2,_0x449b0a)[_0xd848('0x5')](function(_0x23e166){if(_0x23e166[_0xd848('0x6')]){return _0x58d946(_0x23e166['error'][_0xd848('0x7')]);}else{return _0x493aef(_0x23e166[_0xd848('0x8')]);}})['catch'](function(_0x1726a2){return _0x58d946(_0x1726a2);});});}exports[_0xd848('0x9')]=function(_0x477318,_0x1734a1){return request(_0xd848('0xa'),{'account':_0x477318,'message':_0x1734a1});};
\ No newline at end of file
index 22f52c5..fe2367b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbbc=['chatStatusTime','chatCapacity','mailStatus','mailStatusTime','mailCapacity','faxStatus','faxStatusTime','faxCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatusTime','whatsappCapacity','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','chatWaitingInteractions','faxWaitingInteractions','openchannelWaitingInteractions','smsWaitingInteractions','whatsappWaitingInteractions','updateRealtime','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','idle','mail','sms','length','Status','StatusTime','toNumber','format','chatStatus','chatCurrentCapacity','mailCurrentCapacity','faxCurrentCapacity','whatsappStatus','whatsappCurrentCapacity','openchannelStatus','mailWaitingInteractions','stringify','emit','lodash','md5','moment','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','unknown'];(function(_0x4e658c,_0x3139a5){var _0x3a2973=function(_0x479a80){while(--_0x479a80){_0x4e658c['push'](_0x4e658c['shift']());}};_0x3a2973(++_0x3139a5);}(_0xbbbc,0xf6));var _0xcbbb=function(_0xe441a6,_0x3459f6){_0xe441a6=_0xe441a6-0x0;var _0x5faec8=_0xbbbc[_0xe441a6];return _0x5faec8;};'use strict';var _=require(_0xcbbb('0x0'));var md5=require(_0xcbbb('0x1'));var moment=require(_0xcbbb('0x2'));var Redis=require(_0xcbbb('0x3'));var config=require(_0xcbbb('0x4'));config[_0xcbbb('0x5')]=_[_0xcbbb('0x6')](config['redis'],{'host':_0xcbbb('0x7'),'port':0x18eb});var io=require(_0xcbbb('0x8'))(new Redis(config[_0xcbbb('0x5')]));function Agent(_0x3ccbf6){this['id']=_0x3ccbf6['id']||0x0;this[_0xcbbb('0x9')]=_0x3ccbf6['name']||'';this[_0xcbbb('0xa')]=_0x3ccbf6[_0xcbbb('0xa')]||!![];this[_0xcbbb('0xb')]=_0x3ccbf6[_0xcbbb('0xb')]||![];this[_0xcbbb('0xc')]=_0x3ccbf6[_0xcbbb('0xc')]||![];this[_0xcbbb('0xd')]=_0x3ccbf6['mailPause']||![];this[_0xcbbb('0xe')]=_0x3ccbf6['faxPause']||![];this['smsPause']=_0x3ccbf6[_0xcbbb('0xf')]||![];this['openchannelPause']=_0x3ccbf6[_0xcbbb('0x10')]||![];this['chatStatus']=_0xcbbb('0x11');this[_0xcbbb('0x12')]=0x0;this['chatCapacity']=_0x3ccbf6[_0xcbbb('0x13')]||0x0;this['chatCurrentCapacity']=0x0;this[_0xcbbb('0x14')]='unknown';this[_0xcbbb('0x15')]=0x0;this[_0xcbbb('0x16')]=_0x3ccbf6[_0xcbbb('0x16')]||0x0;this['mailCurrentCapacity']=0x0;this[_0xcbbb('0x17')]=_0xcbbb('0x11');this[_0xcbbb('0x18')]=0x0;this[_0xcbbb('0x19')]=_0x3ccbf6['faxCapacity']||0x0;this['faxCurrentCapacity']=0x0;this[_0xcbbb('0x1a')]=_0xcbbb('0x11');this[_0xcbbb('0x1b')]=0x0;this[_0xcbbb('0x1c')]=_0x3ccbf6['smsCapacity']||0x0;this[_0xcbbb('0x1d')]=0x0;this['whatsappStatus']=_0xcbbb('0x11');this[_0xcbbb('0x1e')]=0x0;this[_0xcbbb('0x1f')]=_0x3ccbf6['whatsappCapacity']||0x0;this['whatsappCurrentCapacity']=0x0;this['openchannelStatus']=_0xcbbb('0x11');this[_0xcbbb('0x20')]=0x0;this[_0xcbbb('0x21')]=_0x3ccbf6[_0xcbbb('0x21')]||0x0;this[_0xcbbb('0x22')]=0x0;this[_0xcbbb('0x23')]=![];this[_0xcbbb('0x24')]=undefined;this[_0xcbbb('0x1')]='';this[_0xcbbb('0x25')]={};this[_0xcbbb('0x26')]={};this['mailWaitingInteractions']={};this[_0xcbbb('0x27')]={};this[_0xcbbb('0x28')]={};this[_0xcbbb('0x29')]={};this[_0xcbbb('0x2a')]();}Agent[_0xcbbb('0x2b')][_0xcbbb('0x2c')]=function(_0x297eae){if(this[_0x297eae+_0xcbbb('0x2d')]>0x0){if(this[_0x297eae+_0xcbbb('0x2e')]>0x0&&this[_0x297eae+'CurrentCapacity']>=this[_0x297eae+_0xcbbb('0x2e')]){return _0xcbbb('0x2f');}else{return'working';}}else{return _0xcbbb('0x30');}};Agent['prototype']['updateRealtime']=function(){var _0x575d56=[_0xcbbb('0x31'),'chat','openchannel','fax',_0xcbbb('0x32'),'whatsapp'];for(var _0x4da775=0x0;_0x4da775<_0x575d56[_0xcbbb('0x33')];_0x4da775+=0x1){var _0x2902c6=this[_0xcbbb('0x2c')](_0x575d56[_0x4da775]);if(this[_0x575d56[_0x4da775]+_0xcbbb('0x34')]!==_0x2902c6){this[_0x575d56[_0x4da775]+_0xcbbb('0x35')]=_[_0xcbbb('0x36')](moment()[_0xcbbb('0x37')]('x'));}this[_0x575d56[_0x4da775]+_0xcbbb('0x34')]=_0x2902c6;}var _0x2a023f={'id':this['id'],'name':this[_0xcbbb('0x9')],'online':this[_0xcbbb('0xa')],'voicePause':this[_0xcbbb('0xb')],'chatPause':this[_0xcbbb('0xc')],'mailPause':this[_0xcbbb('0xd')],'smsPause':this[_0xcbbb('0xf')],'faxPause':this[_0xcbbb('0xe')],'openchannelPause':this[_0xcbbb('0x10')],'chatStatus':this[_0xcbbb('0x38')],'chatStatusTime':this['chatStatusTime'],'chatCapacity':this[_0xcbbb('0x13')],'chatCurrentCapacity':this[_0xcbbb('0x39')],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0xcbbb('0x15')],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this[_0xcbbb('0x3a')],'faxStatus':this[_0xcbbb('0x17')],'faxStatusTime':this[_0xcbbb('0x18')],'faxCapacity':this['faxCapacity'],'faxCurrentCapacity':this[_0xcbbb('0x3b')],'smsStatus':this[_0xcbbb('0x1a')],'smsStatusTime':this[_0xcbbb('0x1b')],'smsCapacity':this[_0xcbbb('0x1c')],'smsCurrentCapacity':this[_0xcbbb('0x1d')],'whatsappStatus':this[_0xcbbb('0x3c')],'whatsappStatusTime':this[_0xcbbb('0x1e')],'whatsappCapacity':this[_0xcbbb('0x1f')],'whatsappCurrentCapacity':this[_0xcbbb('0x3d')],'openchannelStatus':this[_0xcbbb('0x3e')],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this['openchannelCapacity'],'openchannelCurrentCapacity':this['openchannelCurrentCapacity'],'busy':this['busy'],'busyQueue':this[_0xcbbb('0x24')],'chatWaitingInteractions':this[_0xcbbb('0x25')],'faxWaitingInteractions':this[_0xcbbb('0x26')],'mailWaitingInteractions':this[_0xcbbb('0x3f')],'openchannelWaitingInteractions':this[_0xcbbb('0x27')],'smsWaitingInteractions':this[_0xcbbb('0x28')],'whatsappWaitingInteractions':this[_0xcbbb('0x29')]};var _0x39a417=md5(JSON[_0xcbbb('0x40')](_0x2a023f));if(this[_0xcbbb('0x1')]!==_0x39a417){this[_0xcbbb('0x1')]=_0x39a417;io[_0xcbbb('0x41')]('user:routing:update',_['omit'](_0x2a023f,[_0xcbbb('0xa')]));}};module['exports']=Agent;
\ No newline at end of file
+var _0x77e6=['CurrentCapacity','Capacity','maxcapacity','working','idle','prototype','openchannel','fax','whatsapp','length','getChannelStatus','Status','toNumber','format','mailCurrentCapacity','openchannelStatusTime','stringify','emit','user:routing:update','exports','lodash','md5','moment','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','chatWaitingInteractions','faxWaitingInteractions','mailWaitingInteractions','openchannelWaitingInteractions','smsWaitingInteractions','whatsappWaitingInteractions','updateRealtime'];(function(_0x3c8e9a,_0x384306){var _0x2d4c57=function(_0x43d408){while(--_0x43d408){_0x3c8e9a['push'](_0x3c8e9a['shift']());}};_0x2d4c57(++_0x384306);}(_0x77e6,0x1a6));var _0x677e=function(_0x24bb43,_0x462eb0){_0x24bb43=_0x24bb43-0x0;var _0x4837e8=_0x77e6[_0x24bb43];return _0x4837e8;};'use strict';var _=require(_0x677e('0x0'));var md5=require(_0x677e('0x1'));var moment=require(_0x677e('0x2'));var Redis=require(_0x677e('0x3'));var config=require(_0x677e('0x4'));config[_0x677e('0x5')]=_[_0x677e('0x6')](config[_0x677e('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x677e('0x7'))(new Redis(config[_0x677e('0x5')]));function Agent(_0x52e3f9){this['id']=_0x52e3f9['id']||0x0;this[_0x677e('0x8')]=_0x52e3f9['name']||'';this[_0x677e('0x9')]=_0x52e3f9['online']||!![];this['voicePause']=_0x52e3f9[_0x677e('0xa')]||![];this[_0x677e('0xb')]=_0x52e3f9[_0x677e('0xb')]||![];this[_0x677e('0xc')]=_0x52e3f9['mailPause']||![];this[_0x677e('0xd')]=_0x52e3f9['faxPause']||![];this[_0x677e('0xe')]=_0x52e3f9[_0x677e('0xe')]||![];this[_0x677e('0xf')]=_0x52e3f9[_0x677e('0xf')]||![];this[_0x677e('0x10')]=_0x677e('0x11');this[_0x677e('0x12')]=0x0;this[_0x677e('0x13')]=_0x52e3f9[_0x677e('0x13')]||0x0;this[_0x677e('0x14')]=0x0;this[_0x677e('0x15')]=_0x677e('0x11');this[_0x677e('0x16')]=0x0;this[_0x677e('0x17')]=_0x52e3f9['mailCapacity']||0x0;this['mailCurrentCapacity']=0x0;this['faxStatus']=_0x677e('0x11');this[_0x677e('0x18')]=0x0;this[_0x677e('0x19')]=_0x52e3f9[_0x677e('0x19')]||0x0;this[_0x677e('0x1a')]=0x0;this[_0x677e('0x1b')]=_0x677e('0x11');this[_0x677e('0x1c')]=0x0;this[_0x677e('0x1d')]=_0x52e3f9[_0x677e('0x1d')]||0x0;this[_0x677e('0x1e')]=0x0;this[_0x677e('0x1f')]='unknown';this[_0x677e('0x20')]=0x0;this[_0x677e('0x21')]=_0x52e3f9[_0x677e('0x21')]||0x0;this[_0x677e('0x22')]=0x0;this[_0x677e('0x23')]=_0x677e('0x11');this['openchannelStatusTime']=0x0;this[_0x677e('0x24')]=_0x52e3f9['openchannelCapacity']||0x0;this[_0x677e('0x25')]=0x0;this[_0x677e('0x26')]=![];this[_0x677e('0x27')]=undefined;this['md5']='';this[_0x677e('0x28')]={};this[_0x677e('0x29')]={};this[_0x677e('0x2a')]={};this[_0x677e('0x2b')]={};this[_0x677e('0x2c')]={};this[_0x677e('0x2d')]={};this[_0x677e('0x2e')]();}Agent['prototype']['getChannelStatus']=function(_0x52d915){if(this[_0x52d915+_0x677e('0x2f')]>0x0){if(this[_0x52d915+_0x677e('0x30')]>0x0&&this[_0x52d915+_0x677e('0x2f')]>=this[_0x52d915+_0x677e('0x30')]){return _0x677e('0x31');}else{return _0x677e('0x32');}}else{return _0x677e('0x33');}};Agent[_0x677e('0x34')][_0x677e('0x2e')]=function(){var _0x3f0646=['mail','chat',_0x677e('0x35'),_0x677e('0x36'),'sms',_0x677e('0x37')];for(var _0x264ed3=0x0;_0x264ed3<_0x3f0646[_0x677e('0x38')];_0x264ed3+=0x1){var _0x33e946=this[_0x677e('0x39')](_0x3f0646[_0x264ed3]);if(this[_0x3f0646[_0x264ed3]+_0x677e('0x3a')]!==_0x33e946){this[_0x3f0646[_0x264ed3]+'StatusTime']=_[_0x677e('0x3b')](moment()[_0x677e('0x3c')]('x'));}this[_0x3f0646[_0x264ed3]+_0x677e('0x3a')]=_0x33e946;}var _0x1e2694={'id':this['id'],'name':this[_0x677e('0x8')],'online':this[_0x677e('0x9')],'voicePause':this[_0x677e('0xa')],'chatPause':this[_0x677e('0xb')],'mailPause':this[_0x677e('0xc')],'smsPause':this['smsPause'],'faxPause':this[_0x677e('0xd')],'openchannelPause':this[_0x677e('0xf')],'chatStatus':this[_0x677e('0x10')],'chatStatusTime':this[_0x677e('0x12')],'chatCapacity':this[_0x677e('0x13')],'chatCurrentCapacity':this[_0x677e('0x14')],'mailStatus':this[_0x677e('0x15')],'mailStatusTime':this[_0x677e('0x16')],'mailCapacity':this[_0x677e('0x17')],'mailCurrentCapacity':this[_0x677e('0x3d')],'faxStatus':this['faxStatus'],'faxStatusTime':this[_0x677e('0x18')],'faxCapacity':this[_0x677e('0x19')],'faxCurrentCapacity':this[_0x677e('0x1a')],'smsStatus':this[_0x677e('0x1b')],'smsStatusTime':this[_0x677e('0x1c')],'smsCapacity':this[_0x677e('0x1d')],'smsCurrentCapacity':this['smsCurrentCapacity'],'whatsappStatus':this[_0x677e('0x1f')],'whatsappStatusTime':this[_0x677e('0x20')],'whatsappCapacity':this[_0x677e('0x21')],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this[_0x677e('0x23')],'openchannelStatusTime':this[_0x677e('0x3e')],'openchannelCapacity':this[_0x677e('0x24')],'openchannelCurrentCapacity':this[_0x677e('0x25')],'busy':this[_0x677e('0x26')],'busyQueue':this['busyQueue'],'chatWaitingInteractions':this[_0x677e('0x28')],'faxWaitingInteractions':this[_0x677e('0x29')],'mailWaitingInteractions':this[_0x677e('0x2a')],'openchannelWaitingInteractions':this[_0x677e('0x2b')],'smsWaitingInteractions':this['smsWaitingInteractions'],'whatsappWaitingInteractions':this[_0x677e('0x2d')]};var _0x1dfbd3=md5(JSON[_0x677e('0x3f')](_0x1e2694));if(this['md5']!==_0x1dfbd3){this['md5']=_0x1dfbd3;io[_0x677e('0x40')](_0x677e('0x41'),_['omit'](_0x1e2694,[_0x677e('0x9')]));}};module[_0x677e('0x42')]=Agent;
\ No newline at end of file
index f7502d4..da3d745 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e9c=['map','loggedIn','paused','length','online','chatPause','available','stringify','format','chat:queue:%s','emit','chat_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','updateRouting','updateRealtime','prototype','_rr','mapAgentsId'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x4e9c,0x175));var _0xc4e9=function(_0x3534bd,_0x295f41){_0x3534bd=_0x3534bd-0x0;var _0x483f57=_0x4e9c[_0x3534bd];return _0x483f57;};'use strict';var _=require('lodash');var md5=require(_0xc4e9('0x0'));var util=require(_0xc4e9('0x1'));var Redis=require(_0xc4e9('0x2'));var config=require(_0xc4e9('0x3'));config[_0xc4e9('0x4')]=_[_0xc4e9('0x5')](config[_0xc4e9('0x4')],{'host':_0xc4e9('0x6'),'port':0x18eb});var io=require(_0xc4e9('0x7'))(new Redis(config[_0xc4e9('0x4')]));function ChatQueue(_0x3c1e70){this['id']=_0x3c1e70['id']||0x0;this[_0xc4e9('0x8')]=_0x3c1e70[_0xc4e9('0x8')]||'';this[_0xc4e9('0x9')]=_0x3c1e70[_0xc4e9('0x9')]||0xa;this[_0xc4e9('0xa')]=_0x3c1e70[_0xc4e9('0xa')]||'beepall';this[_0xc4e9('0xb')]=_0x3c1e70[_0xc4e9('0xb')];this['mapAgentsId']={};this['waiting']=0x0;this[_0xc4e9('0x0')]='';this[_0xc4e9('0xc')]();this[_0xc4e9('0xd')]();}ChatQueue[_0xc4e9('0xe')]['updateRouting']=function(){var _0x5d3a6a=this['mapAgentsId'][_0xc4e9('0xf')];this[_0xc4e9('0x10')]=_[_0xc4e9('0x11')](this['Agents'],'id');this[_0xc4e9('0x10')]['_rr']=_0x5d3a6a;};ChatQueue[_0xc4e9('0xe')][_0xc4e9('0xd')]=function(){this[_0xc4e9('0x12')]=0x0;this[_0xc4e9('0x13')]=0x0;for(var _0x5b92fb=0x0;_0x5b92fb<this['Agents'][_0xc4e9('0x14')];_0x5b92fb+=0x1){if(this[_0xc4e9('0xb')][_0x5b92fb][_0xc4e9('0x15')]){this[_0xc4e9('0x12')]+=0x1;}if(this[_0xc4e9('0xb')][_0x5b92fb][_0xc4e9('0x16')]){this[_0xc4e9('0x13')]+=0x1;}}this[_0xc4e9('0x17')]=this['loggedIn']-this[_0xc4e9('0x13')];this[_0xc4e9('0x17')]=this[_0xc4e9('0x17')]>=0x0?this[_0xc4e9('0x17')]:0x0;var _0x65ffe9={'id':this['id'],'available':this[_0xc4e9('0x17')],'loggedIn':this[_0xc4e9('0x12')],'name':this[_0xc4e9('0x8')],'paused':this[_0xc4e9('0x13')],'waiting':this['waiting']};var _0x2b29bb=md5(JSON[_0xc4e9('0x18')](_0x65ffe9));if(this['md5']!==_0x2b29bb){this[_0xc4e9('0x0')]=_0x2b29bb;io['to'](util[_0xc4e9('0x19')](_0xc4e9('0x1a'),_0x65ffe9['name']))[_0xc4e9('0x1b')](_0xc4e9('0x1c'),_0x65ffe9);}};module[_0xc4e9('0x1d')]=ChatQueue;
\ No newline at end of file
+var _0x59fe=['util','ioredis','../../../config/environment','redis','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','online','chatPause','available','waiting','stringify','format','chat:queue:%s','emit','chat_queue:save','exports','md5'];(function(_0x5d6765,_0x442b91){var _0x1b393e=function(_0x543b23){while(--_0x543b23){_0x5d6765['push'](_0x5d6765['shift']());}};_0x1b393e(++_0x442b91);}(_0x59fe,0x104));var _0xe59f=function(_0x3de5a7,_0x21ad97){_0x3de5a7=_0x3de5a7-0x0;var _0x207e86=_0x59fe[_0x3de5a7];return _0x207e86;};'use strict';var _=require('lodash');var md5=require(_0xe59f('0x0'));var util=require(_0xe59f('0x1'));var Redis=require(_0xe59f('0x2'));var config=require(_0xe59f('0x3'));config[_0xe59f('0x4')]=_['defaults'](config[_0xe59f('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0xe59f('0x5'))(new Redis(config[_0xe59f('0x4')]));function ChatQueue(_0x13da2d){this['id']=_0x13da2d['id']||0x0;this[_0xe59f('0x6')]=_0x13da2d[_0xe59f('0x6')]||'';this['timeout']=_0x13da2d[_0xe59f('0x7')]||0xa;this[_0xe59f('0x8')]=_0x13da2d['strategy']||'beepall';this[_0xe59f('0x9')]=_0x13da2d['Agents'];this[_0xe59f('0xa')]={};this['waiting']=0x0;this['md5']='';this[_0xe59f('0xb')]();this[_0xe59f('0xc')]();}ChatQueue[_0xe59f('0xd')][_0xe59f('0xb')]=function(){var _0x194787=this[_0xe59f('0xa')][_0xe59f('0xe')];this[_0xe59f('0xa')]=_[_0xe59f('0xf')](this['Agents'],'id');this[_0xe59f('0xa')]['_rr']=_0x194787;};ChatQueue['prototype'][_0xe59f('0xc')]=function(){this[_0xe59f('0x10')]=0x0;this[_0xe59f('0x11')]=0x0;for(var _0x5a5d42=0x0;_0x5a5d42<this[_0xe59f('0x9')][_0xe59f('0x12')];_0x5a5d42+=0x1){if(this[_0xe59f('0x9')][_0x5a5d42][_0xe59f('0x13')]){this[_0xe59f('0x10')]+=0x1;}if(this[_0xe59f('0x9')][_0x5a5d42][_0xe59f('0x14')]){this[_0xe59f('0x11')]+=0x1;}}this['available']=this[_0xe59f('0x10')]-this[_0xe59f('0x11')];this[_0xe59f('0x15')]=this[_0xe59f('0x15')]>=0x0?this['available']:0x0;var _0x59af11={'id':this['id'],'available':this[_0xe59f('0x15')],'loggedIn':this[_0xe59f('0x10')],'name':this[_0xe59f('0x6')],'paused':this['paused'],'waiting':this[_0xe59f('0x16')]};var _0x3a1a23=md5(JSON[_0xe59f('0x17')](_0x59af11));if(this[_0xe59f('0x0')]!==_0x3a1a23){this[_0xe59f('0x0')]=_0x3a1a23;io['to'](util[_0xe59f('0x18')](_0xe59f('0x19'),_0x59af11[_0xe59f('0x6')]))[_0xe59f('0x1a')](_0xe59f('0x1b'),_0x59af11);}};module[_0xe59f('0x1c')]=ChatQueue;
\ No newline at end of file
index 72b9eb7..ea347d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ce1=['name','timeout','strategy','beepall','Agents','waiting','updateRouting','prototype','mapAgentsId','_rr','updateRealtime','loggedIn','paused','length','online','faxPause','available','format','fax:queue:%s','emit','lodash','md5','util','redis','defaults','localhost','socket.io-emitter'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x2ce1,0x122));var _0x12ce=function(_0x2cd21,_0x324108){_0x2cd21=_0x2cd21-0x0;var _0x3d86ec=_0x2ce1[_0x2cd21];return _0x3d86ec;};'use strict';var _=require(_0x12ce('0x0'));var md5=require(_0x12ce('0x1'));var util=require(_0x12ce('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x12ce('0x3')]=_[_0x12ce('0x4')](config[_0x12ce('0x3')],{'host':_0x12ce('0x5'),'port':0x18eb});var io=require(_0x12ce('0x6'))(new Redis(config[_0x12ce('0x3')]));function FaxQueue(_0x2bbc54){this['id']=_0x2bbc54['id']||0x0;this[_0x12ce('0x7')]=_0x2bbc54[_0x12ce('0x7')]||'';this[_0x12ce('0x8')]=_0x2bbc54[_0x12ce('0x8')]||0xa;this['strategy']=_0x2bbc54[_0x12ce('0x9')]||_0x12ce('0xa');this['Agents']=_0x2bbc54[_0x12ce('0xb')];this['mapAgentsId']={};this[_0x12ce('0xc')]=0x0;this[_0x12ce('0x1')]='';this[_0x12ce('0xd')]();this['updateRealtime']();}FaxQueue[_0x12ce('0xe')]['updateRouting']=function(){var _0x1d18be=this[_0x12ce('0xf')][_0x12ce('0x10')];this[_0x12ce('0xf')]=_['map'](this[_0x12ce('0xb')],'id');this['mapAgentsId'][_0x12ce('0x10')]=_0x1d18be;};FaxQueue['prototype'][_0x12ce('0x11')]=function(){this[_0x12ce('0x12')]=0x0;this[_0x12ce('0x13')]=0x0;for(var _0x2d99c8=0x0;_0x2d99c8<this['Agents'][_0x12ce('0x14')];_0x2d99c8+=0x1){if(this[_0x12ce('0xb')][_0x2d99c8][_0x12ce('0x15')]){this[_0x12ce('0x12')]+=0x1;}if(this[_0x12ce('0xb')][_0x2d99c8][_0x12ce('0x16')]){this['paused']+=0x1;}}this[_0x12ce('0x17')]=this[_0x12ce('0x12')]-this['paused'];this[_0x12ce('0x17')]=this[_0x12ce('0x17')]>=0x0?this[_0x12ce('0x17')]:0x0;var _0x2a3d41={'id':this['id'],'available':this[_0x12ce('0x17')],'loggedIn':this['loggedIn'],'name':this[_0x12ce('0x7')],'paused':this['paused'],'waiting':this['waiting']};var _0x336d7e=md5(JSON['stringify'](_0x2a3d41));if(this[_0x12ce('0x1')]!==_0x336d7e){this[_0x12ce('0x1')]=_0x336d7e;io['to'](util[_0x12ce('0x18')](_0x12ce('0x19'),_0x2a3d41[_0x12ce('0x7')]))[_0x12ce('0x1a')]('fax_queue:save',_0x2a3d41);}};module['exports']=FaxQueue;
\ No newline at end of file
+var _0x03af=['md5','updateRouting','prototype','_rr','map','updateRealtime','loggedIn','paused','length','online','faxPause','available','format','emit','fax_queue:save','exports','lodash','util','ioredis','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting'];(function(_0x18c8a0,_0x5262b3){var _0x30ea84=function(_0x700d0a){while(--_0x700d0a){_0x18c8a0['push'](_0x18c8a0['shift']());}};_0x30ea84(++_0x5262b3);}(_0x03af,0x1b4));var _0xf03a=function(_0x2b5e0e,_0x19aade){_0x2b5e0e=_0x2b5e0e-0x0;var _0xafb0f9=_0x03af[_0x2b5e0e];return _0xafb0f9;};'use strict';var _=require(_0xf03a('0x0'));var md5=require('md5');var util=require(_0xf03a('0x1'));var Redis=require(_0xf03a('0x2'));var config=require('../../../config/environment');config[_0xf03a('0x3')]=_[_0xf03a('0x4')](config['redis'],{'host':_0xf03a('0x5'),'port':0x18eb});var io=require(_0xf03a('0x6'))(new Redis(config[_0xf03a('0x3')]));function FaxQueue(_0x295c76){this['id']=_0x295c76['id']||0x0;this[_0xf03a('0x7')]=_0x295c76['name']||'';this[_0xf03a('0x8')]=_0x295c76['timeout']||0xa;this[_0xf03a('0x9')]=_0x295c76['strategy']||_0xf03a('0xa');this['Agents']=_0x295c76[_0xf03a('0xb')];this[_0xf03a('0xc')]={};this[_0xf03a('0xd')]=0x0;this[_0xf03a('0xe')]='';this[_0xf03a('0xf')]();this['updateRealtime']();}FaxQueue[_0xf03a('0x10')][_0xf03a('0xf')]=function(){var _0x23c02f=this[_0xf03a('0xc')][_0xf03a('0x11')];this[_0xf03a('0xc')]=_[_0xf03a('0x12')](this[_0xf03a('0xb')],'id');this[_0xf03a('0xc')][_0xf03a('0x11')]=_0x23c02f;};FaxQueue[_0xf03a('0x10')][_0xf03a('0x13')]=function(){this[_0xf03a('0x14')]=0x0;this[_0xf03a('0x15')]=0x0;for(var _0x560514=0x0;_0x560514<this['Agents'][_0xf03a('0x16')];_0x560514+=0x1){if(this[_0xf03a('0xb')][_0x560514][_0xf03a('0x17')]){this[_0xf03a('0x14')]+=0x1;}if(this[_0xf03a('0xb')][_0x560514][_0xf03a('0x18')]){this['paused']+=0x1;}}this[_0xf03a('0x19')]=this[_0xf03a('0x14')]-this[_0xf03a('0x15')];this[_0xf03a('0x19')]=this[_0xf03a('0x19')]>=0x0?this[_0xf03a('0x19')]:0x0;var _0x309be1={'id':this['id'],'available':this['available'],'loggedIn':this[_0xf03a('0x14')],'name':this[_0xf03a('0x7')],'paused':this[_0xf03a('0x15')],'waiting':this[_0xf03a('0xd')]};var _0x12664c=md5(JSON['stringify'](_0x309be1));if(this[_0xf03a('0xe')]!==_0x12664c){this[_0xf03a('0xe')]=_0x12664c;io['to'](util[_0xf03a('0x1a')]('fax:queue:%s',_0x309be1[_0xf03a('0x7')]))[_0xf03a('0x1b')](_0xf03a('0x1c'),_0x309be1);}};module[_0xf03a('0x1d')]=FaxQueue;
\ No newline at end of file
index 138ab8b..105633c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60b3=['Intervals','name'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x60b3,0xbf));var _0x360b=function(_0x57cc54,_0x6862b1){_0x57cc54=_0x57cc54-0x0;var _0xa93acc=_0x60b3[_0x57cc54];return _0xa93acc;};'use strict';function Interval(_0x41eab1){this['id']=_0x41eab1['id']||0x0;this['name']=_0x41eab1[_0x360b('0x0')]||'';this[_0x360b('0x1')]=_0x41eab1[_0x360b('0x1')]||{};}module['exports']=Interval;
\ No newline at end of file
+var _0xc117=['Intervals','exports','name'];(function(_0x437f83,_0x3b227a){var _0x2bc8ad=function(_0x41c8a1){while(--_0x41c8a1){_0x437f83['push'](_0x437f83['shift']());}};_0x2bc8ad(++_0x3b227a);}(_0xc117,0x7a));var _0x7c11=function(_0x5df65e,_0x36f156){_0x5df65e=_0x5df65e-0x0;var _0x364aee=_0xc117[_0x5df65e];return _0x364aee;};'use strict';function Interval(_0x426099){this['id']=_0x426099['id']||0x0;this[_0x7c11('0x0')]=_0x426099['name']||'';this[_0x7c11('0x1')]=_0x426099[_0x7c11('0x1')]||{};}module[_0x7c11('0x2')]=Interval;
\ No newline at end of file
index 25d2c56..f1eb9f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a63=['mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','online','mailPause','available','stringify','format','mail:queue:%s','emit','mail_queue:save','exports','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents'];(function(_0x5723b1,_0xa7acb4){var _0x2645d4=function(_0x18919a){while(--_0x18919a){_0x5723b1['push'](_0x5723b1['shift']());}};_0x2645d4(++_0xa7acb4);}(_0x4a63,0x129));var _0x34a6=function(_0x7f3667,_0x30c3f1){_0x7f3667=_0x7f3667-0x0;var _0x2c4c24=_0x4a63[_0x7f3667];return _0x2c4c24;};'use strict';var _=require('lodash');var md5=require(_0x34a6('0x0'));var util=require(_0x34a6('0x1'));var Redis=require(_0x34a6('0x2'));var config=require(_0x34a6('0x3'));config[_0x34a6('0x4')]=_[_0x34a6('0x5')](config[_0x34a6('0x4')],{'host':_0x34a6('0x6'),'port':0x18eb});var io=require(_0x34a6('0x7'))(new Redis(config['redis']));function MailQueue(_0x18a63f){this['id']=_0x18a63f['id']||0x0;this['name']=_0x18a63f[_0x34a6('0x8')]||'';this['timeout']=_0x18a63f[_0x34a6('0x9')]||0xa;this[_0x34a6('0xa')]=_0x18a63f[_0x34a6('0xa')]||_0x34a6('0xb');this[_0x34a6('0xc')]=_0x18a63f['Agents'];this[_0x34a6('0xd')]={};this[_0x34a6('0xe')]=0x0;this[_0x34a6('0x0')]='';this[_0x34a6('0xf')]();this[_0x34a6('0x10')]();}MailQueue[_0x34a6('0x11')][_0x34a6('0xf')]=function(){var _0x313916=this[_0x34a6('0xd')][_0x34a6('0x12')];this[_0x34a6('0xd')]=_[_0x34a6('0x13')](this[_0x34a6('0xc')],'id');this[_0x34a6('0xd')]['_rr']=_0x313916;};MailQueue['prototype']['updateRealtime']=function(){this[_0x34a6('0x14')]=0x0;this[_0x34a6('0x15')]=0x0;for(var _0x1aba06=0x0;_0x1aba06<this[_0x34a6('0xc')]['length'];_0x1aba06+=0x1){if(this[_0x34a6('0xc')][_0x1aba06][_0x34a6('0x16')]){this[_0x34a6('0x14')]+=0x1;}if(this[_0x34a6('0xc')][_0x1aba06][_0x34a6('0x17')]){this[_0x34a6('0x15')]+=0x1;}}this[_0x34a6('0x18')]=this[_0x34a6('0x14')]-this['paused'];this[_0x34a6('0x18')]=this['available']>=0x0?this[_0x34a6('0x18')]:0x0;var _0x4f7b33={'id':this['id'],'available':this['available'],'loggedIn':this[_0x34a6('0x14')],'name':this[_0x34a6('0x8')],'paused':this['paused'],'waiting':this[_0x34a6('0xe')]};var _0x4f9b1c=md5(JSON[_0x34a6('0x19')](_0x4f7b33));if(this[_0x34a6('0x0')]!==_0x4f9b1c){this[_0x34a6('0x0')]=_0x4f9b1c;io['to'](util[_0x34a6('0x1a')](_0x34a6('0x1b'),_0x4f7b33[_0x34a6('0x8')]))[_0x34a6('0x1c')](_0x34a6('0x1d'),_0x4f7b33);}};module[_0x34a6('0x1e')]=MailQueue;
\ No newline at end of file
+var _0x01de=['mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','paused','mailPause','available','loggedIn','waiting','stringify','mail:queue:%s','emit','mail_queue:save','exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','Agents'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x01de,0xe8));var _0xe01d=function(_0x16e118,_0x2c8971){_0x16e118=_0x16e118-0x0;var _0x52161c=_0x01de[_0x16e118];return _0x52161c;};'use strict';var _=require(_0xe01d('0x0'));var md5=require(_0xe01d('0x1'));var util=require('util');var Redis=require(_0xe01d('0x2'));var config=require(_0xe01d('0x3'));config[_0xe01d('0x4')]=_[_0xe01d('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xe01d('0x6'))(new Redis(config[_0xe01d('0x4')]));function MailQueue(_0x271ef1){this['id']=_0x271ef1['id']||0x0;this['name']=_0x271ef1[_0xe01d('0x7')]||'';this[_0xe01d('0x8')]=_0x271ef1[_0xe01d('0x8')]||0xa;this[_0xe01d('0x9')]=_0x271ef1[_0xe01d('0x9')]||'beepall';this[_0xe01d('0xa')]=_0x271ef1['Agents'];this[_0xe01d('0xb')]={};this['waiting']=0x0;this[_0xe01d('0x1')]='';this[_0xe01d('0xc')]();this[_0xe01d('0xd')]();}MailQueue[_0xe01d('0xe')][_0xe01d('0xc')]=function(){var _0x121e60=this[_0xe01d('0xb')][_0xe01d('0xf')];this[_0xe01d('0xb')]=_[_0xe01d('0x10')](this[_0xe01d('0xa')],'id');this['mapAgentsId']['_rr']=_0x121e60;};MailQueue[_0xe01d('0xe')][_0xe01d('0xd')]=function(){this['loggedIn']=0x0;this[_0xe01d('0x11')]=0x0;for(var _0x431d7a=0x0;_0x431d7a<this['Agents']['length'];_0x431d7a+=0x1){if(this[_0xe01d('0xa')][_0x431d7a]['online']){this['loggedIn']+=0x1;}if(this['Agents'][_0x431d7a][_0xe01d('0x12')]){this[_0xe01d('0x11')]+=0x1;}}this[_0xe01d('0x13')]=this[_0xe01d('0x14')]-this[_0xe01d('0x11')];this[_0xe01d('0x13')]=this['available']>=0x0?this['available']:0x0;var _0x531053={'id':this['id'],'available':this[_0xe01d('0x13')],'loggedIn':this['loggedIn'],'name':this[_0xe01d('0x7')],'paused':this[_0xe01d('0x11')],'waiting':this[_0xe01d('0x15')]};var _0x46048d=md5(JSON[_0xe01d('0x16')](_0x531053));if(this['md5']!==_0x46048d){this[_0xe01d('0x1')]=_0x46048d;io['to'](util['format'](_0xe01d('0x17'),_0x531053[_0xe01d('0x7')]))[_0xe01d('0x18')](_0xe01d('0x19'),_0x531053);}};module[_0xe01d('0x1a')]=MailQueue;
\ No newline at end of file
index 91c31c9..7ccf3d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['format','openchannel:queue:%s','name','emit','openchannel_queue:save','exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','_rr','prototype','loggedIn','paused','openchannelPause','available'];(function(_0x330412,_0xfeadf4){var _0x3f18b4=function(_0x4a929d){while(--_0x4a929d){_0x330412['push'](_0x330412['shift']());}};_0x3f18b4(++_0xfeadf4);}(_0x5fc3,0xa8));var _0x35fc=function(_0x553a87,_0x1d621f){_0x553a87=_0x553a87-0x0;var _0x12d1e6=_0x5fc3[_0x553a87];return _0x12d1e6;};'use strict';var _=require(_0x35fc('0x0'));var md5=require(_0x35fc('0x1'));var util=require('util');var Redis=require(_0x35fc('0x2'));var config=require(_0x35fc('0x3'));config[_0x35fc('0x4')]=_[_0x35fc('0x5')](config[_0x35fc('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x35fc('0x6'))(new Redis(config[_0x35fc('0x4')]));function OpenchannelQueue(_0x186a06){this['id']=_0x186a06['id']||0x0;this['name']=_0x186a06['name']||'';this[_0x35fc('0x7')]=_0x186a06['timeout']||0xa;this[_0x35fc('0x8')]=_0x186a06[_0x35fc('0x8')]||_0x35fc('0x9');this[_0x35fc('0xa')]=_0x186a06[_0x35fc('0xa')];this[_0x35fc('0xb')]={};this[_0x35fc('0xc')]=0x0;this['md5']='';this[_0x35fc('0xd')]();this[_0x35fc('0xe')]();}OpenchannelQueue['prototype'][_0x35fc('0xd')]=function(){var _0x33f491=this['mapAgentsId'][_0x35fc('0xf')];this[_0x35fc('0xb')]=_['map'](this['Agents'],'id');this[_0x35fc('0xb')]['_rr']=_0x33f491;};OpenchannelQueue[_0x35fc('0x10')][_0x35fc('0xe')]=function(){this[_0x35fc('0x11')]=0x0;this[_0x35fc('0x12')]=0x0;for(var _0x38d9f2=0x0;_0x38d9f2<this['Agents']['length'];_0x38d9f2+=0x1){if(this['Agents'][_0x38d9f2]['online']){this[_0x35fc('0x11')]+=0x1;}if(this[_0x35fc('0xa')][_0x38d9f2][_0x35fc('0x13')]){this[_0x35fc('0x12')]+=0x1;}}this[_0x35fc('0x14')]=this[_0x35fc('0x11')]-this['paused'];this[_0x35fc('0x14')]=this[_0x35fc('0x14')]>=0x0?this['available']:0x0;var _0x41e165={'id':this['id'],'available':this[_0x35fc('0x14')],'loggedIn':this[_0x35fc('0x11')],'name':this['name'],'paused':this[_0x35fc('0x12')],'waiting':this[_0x35fc('0xc')]};var _0x465eb3=md5(JSON['stringify'](_0x41e165));if(this[_0x35fc('0x1')]!==_0x465eb3){this[_0x35fc('0x1')]=_0x465eb3;io['to'](util[_0x35fc('0x15')](_0x35fc('0x16'),_0x41e165[_0x35fc('0x17')]))[_0x35fc('0x18')](_0x35fc('0x19'),_0x41e165);}};module[_0x35fc('0x1a')]=OpenchannelQueue;
\ No newline at end of file
+var _0xadb5=['../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','_rr','prototype','updateRealtime','paused','loggedIn','openchannelPause','available','stringify','format','openchannel:queue:%s','emit','md5','ioredis'];(function(_0x53b93b,_0x1bfab1){var _0x485761=function(_0x41592e){while(--_0x41592e){_0x53b93b['push'](_0x53b93b['shift']());}};_0x485761(++_0x1bfab1);}(_0xadb5,0xad));var _0x5adb=function(_0xd9a6ca,_0x97d946){_0xd9a6ca=_0xd9a6ca-0x0;var _0x2148fd=_0xadb5[_0xd9a6ca];return _0x2148fd;};'use strict';var _=require('lodash');var md5=require(_0x5adb('0x0'));var util=require('util');var Redis=require(_0x5adb('0x1'));var config=require(_0x5adb('0x2'));config[_0x5adb('0x3')]=_['defaults'](config[_0x5adb('0x3')],{'host':_0x5adb('0x4'),'port':0x18eb});var io=require(_0x5adb('0x5'))(new Redis(config['redis']));function OpenchannelQueue(_0x35a5d3){this['id']=_0x35a5d3['id']||0x0;this[_0x5adb('0x6')]=_0x35a5d3[_0x5adb('0x6')]||'';this[_0x5adb('0x7')]=_0x35a5d3[_0x5adb('0x7')]||0xa;this[_0x5adb('0x8')]=_0x35a5d3[_0x5adb('0x8')]||_0x5adb('0x9');this[_0x5adb('0xa')]=_0x35a5d3[_0x5adb('0xa')];this[_0x5adb('0xb')]={};this[_0x5adb('0xc')]=0x0;this[_0x5adb('0x0')]='';this[_0x5adb('0xd')]();this['updateRealtime']();}OpenchannelQueue['prototype'][_0x5adb('0xd')]=function(){var _0x1ea238=this[_0x5adb('0xb')]['_rr'];this[_0x5adb('0xb')]=_['map'](this[_0x5adb('0xa')],'id');this['mapAgentsId'][_0x5adb('0xe')]=_0x1ea238;};OpenchannelQueue[_0x5adb('0xf')][_0x5adb('0x10')]=function(){this['loggedIn']=0x0;this[_0x5adb('0x11')]=0x0;for(var _0x34af2c=0x0;_0x34af2c<this[_0x5adb('0xa')]['length'];_0x34af2c+=0x1){if(this[_0x5adb('0xa')][_0x34af2c]['online']){this[_0x5adb('0x12')]+=0x1;}if(this[_0x5adb('0xa')][_0x34af2c][_0x5adb('0x13')]){this[_0x5adb('0x11')]+=0x1;}}this[_0x5adb('0x14')]=this[_0x5adb('0x12')]-this[_0x5adb('0x11')];this[_0x5adb('0x14')]=this[_0x5adb('0x14')]>=0x0?this['available']:0x0;var _0x3fff62={'id':this['id'],'available':this['available'],'loggedIn':this[_0x5adb('0x12')],'name':this['name'],'paused':this[_0x5adb('0x11')],'waiting':this['waiting']};var _0x5e218c=md5(JSON[_0x5adb('0x15')](_0x3fff62));if(this[_0x5adb('0x0')]!==_0x5e218c){this[_0x5adb('0x0')]=_0x5e218c;io['to'](util[_0x5adb('0x16')](_0x5adb('0x17'),_0x3fff62['name']))[_0x5adb('0x18')]('openchannel_queue:save',_0x3fff62);}};module['exports']=OpenchannelQueue;
\ No newline at end of file
index 2616c8a..043b258 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x593e=['online','smsPause','paused','available','stringify','format','emit','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','map','loggedIn'];(function(_0x9c2427,_0x17c865){var _0x51984f=function(_0x177af6){while(--_0x177af6){_0x9c2427['push'](_0x9c2427['shift']());}};_0x51984f(++_0x17c865);}(_0x593e,0xcb));var _0xe593=function(_0x361fb4,_0x989320){_0x361fb4=_0x361fb4-0x0;var _0x84b75c=_0x593e[_0x361fb4];return _0x84b75c;};'use strict';var _=require(_0xe593('0x0'));var md5=require(_0xe593('0x1'));var util=require(_0xe593('0x2'));var Redis=require(_0xe593('0x3'));var config=require(_0xe593('0x4'));config[_0xe593('0x5')]=_[_0xe593('0x6')](config[_0xe593('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0xe593('0x7'))(new Redis(config[_0xe593('0x5')]));function SmsQueue(_0x404e3a){this['id']=_0x404e3a['id']||0x0;this[_0xe593('0x8')]=_0x404e3a[_0xe593('0x8')]||'';this[_0xe593('0x9')]=_0x404e3a[_0xe593('0x9')]||0xa;this[_0xe593('0xa')]=_0x404e3a[_0xe593('0xa')]||_0xe593('0xb');this['Agents']=_0x404e3a[_0xe593('0xc')];this[_0xe593('0xd')]={};this[_0xe593('0xe')]=0x0;this['md5']='';this['updateRouting']();this[_0xe593('0xf')]();}SmsQueue[_0xe593('0x10')][_0xe593('0x11')]=function(){var _0x55fb84=this[_0xe593('0xd')][_0xe593('0x12')];this[_0xe593('0xd')]=_[_0xe593('0x13')](this[_0xe593('0xc')],'id');this[_0xe593('0xd')][_0xe593('0x12')]=_0x55fb84;};SmsQueue[_0xe593('0x10')][_0xe593('0xf')]=function(){this[_0xe593('0x14')]=0x0;this['paused']=0x0;for(var _0x2907e4=0x0;_0x2907e4<this[_0xe593('0xc')]['length'];_0x2907e4+=0x1){if(this[_0xe593('0xc')][_0x2907e4][_0xe593('0x15')]){this['loggedIn']+=0x1;}if(this[_0xe593('0xc')][_0x2907e4][_0xe593('0x16')]){this[_0xe593('0x17')]+=0x1;}}this[_0xe593('0x18')]=this[_0xe593('0x14')]-this[_0xe593('0x17')];this['available']=this[_0xe593('0x18')]>=0x0?this[_0xe593('0x18')]:0x0;var _0x5f57ce={'id':this['id'],'available':this[_0xe593('0x18')],'loggedIn':this[_0xe593('0x14')],'name':this['name'],'paused':this[_0xe593('0x17')],'waiting':this[_0xe593('0xe')]};var _0x862672=md5(JSON[_0xe593('0x19')](_0x5f57ce));if(this[_0xe593('0x1')]!==_0x862672){this[_0xe593('0x1')]=_0x862672;io['to'](util[_0xe593('0x1a')]('sms:queue:%s',_0x5f57ce['name']))[_0xe593('0x1b')]('sms_queue:save',_0x5f57ce);}};module['exports']=SmsQueue;
\ No newline at end of file
+var _0x6c76=['prototype','_rr','map','updateRealtime','loggedIn','paused','length','online','smsPause','available','stringify','format','sms:queue:%s','emit','sms_queue:save','exports','lodash','md5','util','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting'];(function(_0x481604,_0x276ff8){var _0x1ca4ed=function(_0x136e9d){while(--_0x136e9d){_0x481604['push'](_0x481604['shift']());}};_0x1ca4ed(++_0x276ff8);}(_0x6c76,0x184));var _0x66c7=function(_0x40c9df,_0x1fdc3a){_0x40c9df=_0x40c9df-0x0;var _0xa037c1=_0x6c76[_0x40c9df];return _0xa037c1;};'use strict';var _=require(_0x66c7('0x0'));var md5=require(_0x66c7('0x1'));var util=require(_0x66c7('0x2'));var Redis=require('ioredis');var config=require(_0x66c7('0x3'));config[_0x66c7('0x4')]=_['defaults'](config['redis'],{'host':_0x66c7('0x5'),'port':0x18eb});var io=require(_0x66c7('0x6'))(new Redis(config['redis']));function SmsQueue(_0x175da0){this['id']=_0x175da0['id']||0x0;this[_0x66c7('0x7')]=_0x175da0['name']||'';this[_0x66c7('0x8')]=_0x175da0['timeout']||0xa;this['strategy']=_0x175da0[_0x66c7('0x9')]||_0x66c7('0xa');this[_0x66c7('0xb')]=_0x175da0['Agents'];this[_0x66c7('0xc')]={};this[_0x66c7('0xd')]=0x0;this[_0x66c7('0x1')]='';this[_0x66c7('0xe')]();this['updateRealtime']();}SmsQueue[_0x66c7('0xf')][_0x66c7('0xe')]=function(){var _0x26c9b2=this[_0x66c7('0xc')][_0x66c7('0x10')];this[_0x66c7('0xc')]=_[_0x66c7('0x11')](this['Agents'],'id');this[_0x66c7('0xc')][_0x66c7('0x10')]=_0x26c9b2;};SmsQueue[_0x66c7('0xf')][_0x66c7('0x12')]=function(){this[_0x66c7('0x13')]=0x0;this[_0x66c7('0x14')]=0x0;for(var _0x618bd7=0x0;_0x618bd7<this[_0x66c7('0xb')][_0x66c7('0x15')];_0x618bd7+=0x1){if(this['Agents'][_0x618bd7][_0x66c7('0x16')]){this['loggedIn']+=0x1;}if(this[_0x66c7('0xb')][_0x618bd7][_0x66c7('0x17')]){this[_0x66c7('0x14')]+=0x1;}}this[_0x66c7('0x18')]=this[_0x66c7('0x13')]-this['paused'];this['available']=this['available']>=0x0?this['available']:0x0;var _0x8ad572={'id':this['id'],'available':this[_0x66c7('0x18')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this[_0x66c7('0x14')],'waiting':this[_0x66c7('0xd')]};var _0x4756f7=md5(JSON[_0x66c7('0x19')](_0x8ad572));if(this['md5']!==_0x4756f7){this['md5']=_0x4756f7;io['to'](util[_0x66c7('0x1a')](_0x66c7('0x1b'),_0x8ad572[_0x66c7('0x7')]))[_0x66c7('0x1c')](_0x66c7('0x1d'),_0x8ad572);}};module[_0x66c7('0x1e')]=SmsQueue;
\ No newline at end of file
index a931be8..71cefb1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ba7=['available','format','whatsapp:queue:%s','emit','exports','lodash','util','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','timeout','beepall','Agents','mapAgentsId','waiting','md5','updateRealtime','prototype','updateRouting','_rr','map','paused','length','online','loggedIn'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x3ba7,0x1e1));var _0x73ba=function(_0xaa2d32,_0x1af92a){_0xaa2d32=_0xaa2d32-0x0;var _0x17dc8c=_0x3ba7[_0xaa2d32];return _0x17dc8c;};'use strict';var _=require(_0x73ba('0x0'));var md5=require('md5');var util=require(_0x73ba('0x1'));var Redis=require(_0x73ba('0x2'));var config=require(_0x73ba('0x3'));config[_0x73ba('0x4')]=_[_0x73ba('0x5')](config[_0x73ba('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x73ba('0x6'))(new Redis(config[_0x73ba('0x4')]));function WhatsappQueue(_0xe66ac2){this['id']=_0xe66ac2['id']||0x0;this[_0x73ba('0x7')]=_0xe66ac2[_0x73ba('0x7')]||'';this[_0x73ba('0x8')]=_0xe66ac2['timeout']||0xa;this['strategy']=_0xe66ac2['strategy']||_0x73ba('0x9');this['Agents']=_0xe66ac2[_0x73ba('0xa')];this[_0x73ba('0xb')]={};this[_0x73ba('0xc')]=0x0;this[_0x73ba('0xd')]='';this['updateRouting']();this[_0x73ba('0xe')]();}WhatsappQueue[_0x73ba('0xf')][_0x73ba('0x10')]=function(){var _0x228daf=this[_0x73ba('0xb')][_0x73ba('0x11')];this['mapAgentsId']=_[_0x73ba('0x12')](this[_0x73ba('0xa')],'id');this['mapAgentsId'][_0x73ba('0x11')]=_0x228daf;};WhatsappQueue[_0x73ba('0xf')]['updateRealtime']=function(){this['loggedIn']=0x0;this[_0x73ba('0x13')]=0x0;for(var _0x4c6fe9=0x0;_0x4c6fe9<this[_0x73ba('0xa')][_0x73ba('0x14')];_0x4c6fe9+=0x1){if(this[_0x73ba('0xa')][_0x4c6fe9][_0x73ba('0x15')]){this[_0x73ba('0x16')]+=0x1;}if(this[_0x73ba('0xa')][_0x4c6fe9]['whatsappPause']){this[_0x73ba('0x13')]+=0x1;}}this[_0x73ba('0x17')]=this['loggedIn']-this['paused'];this[_0x73ba('0x17')]=this['available']>=0x0?this['available']:0x0;var _0x382a3f={'id':this['id'],'available':this[_0x73ba('0x17')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this[_0x73ba('0x13')],'waiting':this[_0x73ba('0xc')]};var _0x510ba0=md5(JSON['stringify'](_0x382a3f));if(this[_0x73ba('0xd')]!==_0x510ba0){this[_0x73ba('0xd')]=_0x510ba0;io['to'](util[_0x73ba('0x18')](_0x73ba('0x19'),_0x382a3f[_0x73ba('0x7')]))[_0x73ba('0x1a')]('whatsapp_queue:save',_0x382a3f);}};module[_0x73ba('0x1b')]=WhatsappQueue;
\ No newline at end of file
+var _0x6a4b=['stringify','format','whatsapp:queue:%s','whatsapp_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','prototype','_rr','updateRealtime','loggedIn','paused','length','online','whatsappPause','available'];(function(_0x39c152,_0x4acd6d){var _0x803a13=function(_0x24a866){while(--_0x24a866){_0x39c152['push'](_0x39c152['shift']());}};_0x803a13(++_0x4acd6d);}(_0x6a4b,0x139));var _0xb6a4=function(_0x2f45ea,_0x15c656){_0x2f45ea=_0x2f45ea-0x0;var _0x485a84=_0x6a4b[_0x2f45ea];return _0x485a84;};'use strict';var _=require(_0xb6a4('0x0'));var md5=require(_0xb6a4('0x1'));var util=require(_0xb6a4('0x2'));var Redis=require(_0xb6a4('0x3'));var config=require(_0xb6a4('0x4'));config[_0xb6a4('0x5')]=_[_0xb6a4('0x6')](config[_0xb6a4('0x5')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb6a4('0x5')]));function WhatsappQueue(_0x4dd29b){this['id']=_0x4dd29b['id']||0x0;this[_0xb6a4('0x7')]=_0x4dd29b['name']||'';this[_0xb6a4('0x8')]=_0x4dd29b[_0xb6a4('0x8')]||0xa;this[_0xb6a4('0x9')]=_0x4dd29b[_0xb6a4('0x9')]||'beepall';this[_0xb6a4('0xa')]=_0x4dd29b[_0xb6a4('0xa')];this[_0xb6a4('0xb')]={};this[_0xb6a4('0xc')]=0x0;this['md5']='';this[_0xb6a4('0xd')]();this['updateRealtime']();}WhatsappQueue[_0xb6a4('0xe')][_0xb6a4('0xd')]=function(){var _0x411073=this[_0xb6a4('0xb')][_0xb6a4('0xf')];this[_0xb6a4('0xb')]=_['map'](this[_0xb6a4('0xa')],'id');this[_0xb6a4('0xb')][_0xb6a4('0xf')]=_0x411073;};WhatsappQueue[_0xb6a4('0xe')][_0xb6a4('0x10')]=function(){this[_0xb6a4('0x11')]=0x0;this[_0xb6a4('0x12')]=0x0;for(var _0x291363=0x0;_0x291363<this[_0xb6a4('0xa')][_0xb6a4('0x13')];_0x291363+=0x1){if(this['Agents'][_0x291363][_0xb6a4('0x14')]){this[_0xb6a4('0x11')]+=0x1;}if(this['Agents'][_0x291363][_0xb6a4('0x15')]){this[_0xb6a4('0x12')]+=0x1;}}this[_0xb6a4('0x16')]=this[_0xb6a4('0x11')]-this[_0xb6a4('0x12')];this[_0xb6a4('0x16')]=this[_0xb6a4('0x16')]>=0x0?this[_0xb6a4('0x16')]:0x0;var _0x568dfe={'id':this['id'],'available':this[_0xb6a4('0x16')],'loggedIn':this[_0xb6a4('0x11')],'name':this[_0xb6a4('0x7')],'paused':this['paused'],'waiting':this[_0xb6a4('0xc')]};var _0x1dc634=md5(JSON[_0xb6a4('0x17')](_0x568dfe));if(this[_0xb6a4('0x1')]!==_0x1dc634){this[_0xb6a4('0x1')]=_0x1dc634;io['to'](util[_0xb6a4('0x18')](_0xb6a4('0x19'),_0x568dfe[_0xb6a4('0x7')]))['emit'](_0xb6a4('0x1a'),_0x568dfe);}};module[_0xb6a4('0x1b')]=WhatsappQueue;
\ No newline at end of file
index ac5d7d3..c8ade19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initIntervals','length','initOpenchannelQueues','updateRealtime','initChatQueues','chatQueues','initSmsQueues','updateRouting','initMailQueues','initFaxQueues','initWhatsappQueues','exports','bluebird','lodash','moment','../model/agent','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','smsQueues','mailQueues'];(function(_0x42b95e,_0x3bcf77){var _0x88c923=function(_0x3a125d){while(--_0x3a125d){_0x42b95e['push'](_0x42b95e['shift']());}};_0x88c923(++_0x3bcf77);}(_0xb10b,0x12a));var _0xbb10=function(_0xa8ccab,_0x4d7cae){_0xa8ccab=_0xa8ccab-0x0;var _0x570d5f=_0xb10b[_0xa8ccab];return _0x570d5f;};'use strict';var BPromise=require(_0xbb10('0x0'));var util=require('util');var _=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var Agent=require(_0xbb10('0x3'));var Interval=require('../model/interval');var OpenchannelQueue=require(_0xbb10('0x4'));var ChatQueue=require(_0xbb10('0x5'));var SmsQueue=require(_0xbb10('0x6'));var MailQueue=require(_0xbb10('0x7'));var FaxQueue=require(_0xbb10('0x8'));var WhatsappQueue=require(_0xbb10('0x9'));var Realtime=function(){this['agents']={};this[_0xbb10('0xa')]={};this[_0xbb10('0xb')]={};this['chatQueues']={};this[_0xbb10('0xc')]={};this[_0xbb10('0xd')]={};this[_0xbb10('0xe')]={};this[_0xbb10('0xf')]={};this[_0xbb10('0x10')]={};this[_0xbb10('0x11')]={};this[_0xbb10('0x12')]={};this[_0xbb10('0x13')]={};this['faxQueuesWaitingInteractions']={};this['whatsappQueuesWaitingInteractions']={};};function freeIsNotKey(_0x20bd61,_0x118a74,_0xce64f3){var _0x5e136d=_[_0xbb10('0x14')](_0x20bd61,function(_0x5be7e0,_0x44fb19){return _0x5be7e0[_0xce64f3];});for(var _0x916a32 in _0x118a74){if(_0x118a74[_0xbb10('0x15')](_0x916a32)){if(!_0x5e136d[_0x916a32]){delete _0x118a74[_0x916a32];}}}}Realtime[_0xbb10('0x16')][_0xbb10('0x17')]=function(_0x147230,_0x58a612){for(var _0x26e021 in _0x58a612){if(_0x147230[_0xbb10('0x15')](_0x26e021)){_0x147230[_0x26e021]=_0x58a612[_0x26e021];}}};Realtime[_0xbb10('0x16')][_0xbb10('0x18')]=function(){var _0x3df17b=this;return function(_0x2f2ebf){if(_0x2f2ebf){freeIsNotKey(_0x2f2ebf,_0x3df17b[_0xbb10('0x19')],'id');for(var _0x36b5e8=0x0,_0x3e26f4={},_0x2b184e={};_0x36b5e8<_0x2f2ebf['length'];_0x36b5e8+=0x1){_0x3e26f4=_0x2f2ebf[_0x36b5e8];if(_[_0xbb10('0x1a')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']])){_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']]=new Agent(_0x3e26f4);}else{_0x3df17b[_0xbb10('0x17')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']],_0x3e26f4);}}}return _0x3df17b[_0xbb10('0x19')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x1b')]=function(){var _0xbf2906=this;return function(_0xe1c665){if(_0xe1c665){freeIsNotKey(_0xe1c665,_0xbf2906['intervals'],'id');for(var _0x5ff0cf=0x0,_0x19f48d={},_0x388fab={};_0x5ff0cf<_0xe1c665[_0xbb10('0x1c')];_0x5ff0cf+=0x1){_0x19f48d=_0xe1c665[_0x5ff0cf];if(_[_0xbb10('0x1a')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']])){_0xbf2906['intervals'][_0x19f48d['id']]=new Interval(_0x19f48d);}else{_0xbf2906[_0xbb10('0x17')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']],_0x19f48d);}}}return _0xbf2906['intervals'];};};Realtime['prototype'][_0xbb10('0x1d')]=function(){var _0x311abe=this;return function(_0x2e911d){if(_0x2e911d){freeIsNotKey(_0x2e911d,_0x311abe[_0xbb10('0xb')],'id');for(var _0x445761=0x0,_0x1824b7={},_0x407cb4={};_0x445761<_0x2e911d[_0xbb10('0x1c')];_0x445761+=0x1){_0x1824b7=_0x2e911d[_0x445761];if(_[_0xbb10('0x1a')](_0x311abe[_0xbb10('0xb')][_0x1824b7['id']])){_0x311abe[_0xbb10('0xb')][_0x1824b7['id']]=new OpenchannelQueue(_0x1824b7);}else{_0x311abe[_0xbb10('0x17')](_0x311abe['openchannelQueues'][_0x1824b7['id']],_0x1824b7);}_0x311abe['openchannelQueues'][_0x1824b7['id']]['updateRouting']();_0x311abe[_0xbb10('0xb')][_0x1824b7['id']][_0xbb10('0x1e')]();}}return _0x311abe[_0xbb10('0xb')];};};Realtime['prototype'][_0xbb10('0x1f')]=function(){var _0x24d586=this;return function(_0x6ed43b){if(_0x6ed43b){freeIsNotKey(_0x6ed43b,_0x24d586[_0xbb10('0x20')],'id');for(var _0x1acce9=0x0,_0x20d946={},_0x2a0e8b={};_0x1acce9<_0x6ed43b['length'];_0x1acce9+=0x1){_0x20d946=_0x6ed43b[_0x1acce9];if(_[_0xbb10('0x1a')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']])){_0x24d586[_0xbb10('0x20')][_0x20d946['id']]=new ChatQueue(_0x20d946);}else{_0x24d586[_0xbb10('0x17')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']],_0x20d946);}_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRouting']();_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRealtime']();}}return _0x24d586[_0xbb10('0x20')];};};Realtime['prototype'][_0xbb10('0x21')]=function(){var _0x1dcc9c=this;return function(_0x1b59f9){if(_0x1b59f9){freeIsNotKey(_0x1b59f9,_0x1dcc9c['smsQueues'],'id');for(var _0x518d47=0x0,_0x4c3744={},_0x34f65e={};_0x518d47<_0x1b59f9['length'];_0x518d47+=0x1){_0x4c3744=_0x1b59f9[_0x518d47];if(_[_0xbb10('0x1a')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']])){_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']]=new SmsQueue(_0x4c3744);}else{_0x1dcc9c[_0xbb10('0x17')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']],_0x4c3744);}_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']][_0xbb10('0x22')]();_0x1dcc9c['smsQueues'][_0x4c3744['id']][_0xbb10('0x1e')]();}}return _0x1dcc9c[_0xbb10('0xc')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x23')]=function(){var _0xfb2c5e=this;return function(_0x9de708){if(_0x9de708){freeIsNotKey(_0x9de708,_0xfb2c5e[_0xbb10('0xd')],'id');for(var _0x10202c=0x0,_0x3c8d7d={},_0x56943c={};_0x10202c<_0x9de708[_0xbb10('0x1c')];_0x10202c+=0x1){_0x3c8d7d=_0x9de708[_0x10202c];if(_[_0xbb10('0x1a')](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']])){_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']]=new MailQueue(_0x3c8d7d);}else{_0xfb2c5e['mergeFromDatabase'](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']],_0x3c8d7d);}_0xfb2c5e['mailQueues'][_0x3c8d7d['id']]['updateRouting']();_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']][_0xbb10('0x1e')]();}}return _0xfb2c5e[_0xbb10('0xd')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x24')]=function(){var _0x29d11a=this;return function(_0x547062){if(_0x547062){freeIsNotKey(_0x547062,_0x29d11a[_0xbb10('0xe')],'id');for(var _0x25d72f=0x0,_0x52de31={},_0x5e3fbd={};_0x25d72f<_0x547062['length'];_0x25d72f+=0x1){_0x52de31=_0x547062[_0x25d72f];if(_[_0xbb10('0x1a')](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']])){_0x29d11a[_0xbb10('0xe')][_0x52de31['id']]=new FaxQueue(_0x52de31);}else{_0x29d11a['mergeFromDatabase'](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']],_0x52de31);}_0x29d11a[_0xbb10('0xe')][_0x52de31['id']][_0xbb10('0x22')]();_0x29d11a['faxQueues'][_0x52de31['id']][_0xbb10('0x1e')]();}}return _0x29d11a[_0xbb10('0xe')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x25')]=function(){var _0x4f1cdd=this;return function(_0xd238e9){if(_0xd238e9){freeIsNotKey(_0xd238e9,_0x4f1cdd[_0xbb10('0xf')],'id');for(var _0x5835fd=0x0,_0xe2040f={},_0x2e3214={};_0x5835fd<_0xd238e9[_0xbb10('0x1c')];_0x5835fd+=0x1){_0xe2040f=_0xd238e9[_0x5835fd];if(_[_0xbb10('0x1a')](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']])){_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]=new WhatsappQueue(_0xe2040f);}else{_0x4f1cdd['mergeFromDatabase'](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']],_0xe2040f);}_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']][_0xbb10('0x22')]();_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]['updateRealtime']();}}return _0x4f1cdd[_0xbb10('0xf')];};};module[_0xbb10('0x26')]=Realtime;
\ No newline at end of file
+var _0xb10b=['faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','isUndefined','initIntervals','length','initOpenchannelQueues','updateRealtime','initChatQueues','chatQueues','initSmsQueues','updateRouting','initMailQueues','initFaxQueues','initWhatsappQueues','exports','bluebird','lodash','moment','../model/agent','../model/openchannelQueue','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','smsQueues','mailQueues'];(function(_0x360555,_0x369c8a){var _0x5ae17f=function(_0x2dd693){while(--_0x2dd693){_0x360555['push'](_0x360555['shift']());}};_0x5ae17f(++_0x369c8a);}(_0xb10b,0x12a));var _0xbb10=function(_0x12a201,_0x30aaba){_0x12a201=_0x12a201-0x0;var _0x52a4d2=_0xb10b[_0x12a201];return _0x52a4d2;};'use strict';var BPromise=require(_0xbb10('0x0'));var util=require('util');var _=require(_0xbb10('0x1'));var moment=require(_0xbb10('0x2'));var Agent=require(_0xbb10('0x3'));var Interval=require('../model/interval');var OpenchannelQueue=require(_0xbb10('0x4'));var ChatQueue=require(_0xbb10('0x5'));var SmsQueue=require(_0xbb10('0x6'));var MailQueue=require(_0xbb10('0x7'));var FaxQueue=require(_0xbb10('0x8'));var WhatsappQueue=require(_0xbb10('0x9'));var Realtime=function(){this['agents']={};this[_0xbb10('0xa')]={};this[_0xbb10('0xb')]={};this['chatQueues']={};this[_0xbb10('0xc')]={};this[_0xbb10('0xd')]={};this[_0xbb10('0xe')]={};this[_0xbb10('0xf')]={};this[_0xbb10('0x10')]={};this[_0xbb10('0x11')]={};this[_0xbb10('0x12')]={};this[_0xbb10('0x13')]={};this['faxQueuesWaitingInteractions']={};this['whatsappQueuesWaitingInteractions']={};};function freeIsNotKey(_0x20bd61,_0x118a74,_0xce64f3){var _0x5e136d=_[_0xbb10('0x14')](_0x20bd61,function(_0x5be7e0,_0x44fb19){return _0x5be7e0[_0xce64f3];});for(var _0x916a32 in _0x118a74){if(_0x118a74[_0xbb10('0x15')](_0x916a32)){if(!_0x5e136d[_0x916a32]){delete _0x118a74[_0x916a32];}}}}Realtime[_0xbb10('0x16')][_0xbb10('0x17')]=function(_0x147230,_0x58a612){for(var _0x26e021 in _0x58a612){if(_0x147230[_0xbb10('0x15')](_0x26e021)){_0x147230[_0x26e021]=_0x58a612[_0x26e021];}}};Realtime[_0xbb10('0x16')][_0xbb10('0x18')]=function(){var _0x3df17b=this;return function(_0x2f2ebf){if(_0x2f2ebf){freeIsNotKey(_0x2f2ebf,_0x3df17b[_0xbb10('0x19')],'id');for(var _0x36b5e8=0x0,_0x3e26f4={},_0x2b184e={};_0x36b5e8<_0x2f2ebf['length'];_0x36b5e8+=0x1){_0x3e26f4=_0x2f2ebf[_0x36b5e8];if(_[_0xbb10('0x1a')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']])){_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']]=new Agent(_0x3e26f4);}else{_0x3df17b[_0xbb10('0x17')](_0x3df17b[_0xbb10('0x19')][_0x3e26f4['id']],_0x3e26f4);}}}return _0x3df17b[_0xbb10('0x19')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x1b')]=function(){var _0xbf2906=this;return function(_0xe1c665){if(_0xe1c665){freeIsNotKey(_0xe1c665,_0xbf2906['intervals'],'id');for(var _0x5ff0cf=0x0,_0x19f48d={},_0x388fab={};_0x5ff0cf<_0xe1c665[_0xbb10('0x1c')];_0x5ff0cf+=0x1){_0x19f48d=_0xe1c665[_0x5ff0cf];if(_[_0xbb10('0x1a')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']])){_0xbf2906['intervals'][_0x19f48d['id']]=new Interval(_0x19f48d);}else{_0xbf2906[_0xbb10('0x17')](_0xbf2906[_0xbb10('0xa')][_0x19f48d['id']],_0x19f48d);}}}return _0xbf2906['intervals'];};};Realtime['prototype'][_0xbb10('0x1d')]=function(){var _0x311abe=this;return function(_0x2e911d){if(_0x2e911d){freeIsNotKey(_0x2e911d,_0x311abe[_0xbb10('0xb')],'id');for(var _0x445761=0x0,_0x1824b7={},_0x407cb4={};_0x445761<_0x2e911d[_0xbb10('0x1c')];_0x445761+=0x1){_0x1824b7=_0x2e911d[_0x445761];if(_[_0xbb10('0x1a')](_0x311abe[_0xbb10('0xb')][_0x1824b7['id']])){_0x311abe[_0xbb10('0xb')][_0x1824b7['id']]=new OpenchannelQueue(_0x1824b7);}else{_0x311abe[_0xbb10('0x17')](_0x311abe['openchannelQueues'][_0x1824b7['id']],_0x1824b7);}_0x311abe['openchannelQueues'][_0x1824b7['id']]['updateRouting']();_0x311abe[_0xbb10('0xb')][_0x1824b7['id']][_0xbb10('0x1e')]();}}return _0x311abe[_0xbb10('0xb')];};};Realtime['prototype'][_0xbb10('0x1f')]=function(){var _0x24d586=this;return function(_0x6ed43b){if(_0x6ed43b){freeIsNotKey(_0x6ed43b,_0x24d586[_0xbb10('0x20')],'id');for(var _0x1acce9=0x0,_0x20d946={},_0x2a0e8b={};_0x1acce9<_0x6ed43b['length'];_0x1acce9+=0x1){_0x20d946=_0x6ed43b[_0x1acce9];if(_[_0xbb10('0x1a')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']])){_0x24d586[_0xbb10('0x20')][_0x20d946['id']]=new ChatQueue(_0x20d946);}else{_0x24d586[_0xbb10('0x17')](_0x24d586[_0xbb10('0x20')][_0x20d946['id']],_0x20d946);}_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRouting']();_0x24d586[_0xbb10('0x20')][_0x20d946['id']]['updateRealtime']();}}return _0x24d586[_0xbb10('0x20')];};};Realtime['prototype'][_0xbb10('0x21')]=function(){var _0x1dcc9c=this;return function(_0x1b59f9){if(_0x1b59f9){freeIsNotKey(_0x1b59f9,_0x1dcc9c['smsQueues'],'id');for(var _0x518d47=0x0,_0x4c3744={},_0x34f65e={};_0x518d47<_0x1b59f9['length'];_0x518d47+=0x1){_0x4c3744=_0x1b59f9[_0x518d47];if(_[_0xbb10('0x1a')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']])){_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']]=new SmsQueue(_0x4c3744);}else{_0x1dcc9c[_0xbb10('0x17')](_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']],_0x4c3744);}_0x1dcc9c[_0xbb10('0xc')][_0x4c3744['id']][_0xbb10('0x22')]();_0x1dcc9c['smsQueues'][_0x4c3744['id']][_0xbb10('0x1e')]();}}return _0x1dcc9c[_0xbb10('0xc')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x23')]=function(){var _0xfb2c5e=this;return function(_0x9de708){if(_0x9de708){freeIsNotKey(_0x9de708,_0xfb2c5e[_0xbb10('0xd')],'id');for(var _0x10202c=0x0,_0x3c8d7d={},_0x56943c={};_0x10202c<_0x9de708[_0xbb10('0x1c')];_0x10202c+=0x1){_0x3c8d7d=_0x9de708[_0x10202c];if(_[_0xbb10('0x1a')](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']])){_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']]=new MailQueue(_0x3c8d7d);}else{_0xfb2c5e['mergeFromDatabase'](_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']],_0x3c8d7d);}_0xfb2c5e['mailQueues'][_0x3c8d7d['id']]['updateRouting']();_0xfb2c5e[_0xbb10('0xd')][_0x3c8d7d['id']][_0xbb10('0x1e')]();}}return _0xfb2c5e[_0xbb10('0xd')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x24')]=function(){var _0x29d11a=this;return function(_0x547062){if(_0x547062){freeIsNotKey(_0x547062,_0x29d11a[_0xbb10('0xe')],'id');for(var _0x25d72f=0x0,_0x52de31={},_0x5e3fbd={};_0x25d72f<_0x547062['length'];_0x25d72f+=0x1){_0x52de31=_0x547062[_0x25d72f];if(_[_0xbb10('0x1a')](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']])){_0x29d11a[_0xbb10('0xe')][_0x52de31['id']]=new FaxQueue(_0x52de31);}else{_0x29d11a['mergeFromDatabase'](_0x29d11a[_0xbb10('0xe')][_0x52de31['id']],_0x52de31);}_0x29d11a[_0xbb10('0xe')][_0x52de31['id']][_0xbb10('0x22')]();_0x29d11a['faxQueues'][_0x52de31['id']][_0xbb10('0x1e')]();}}return _0x29d11a[_0xbb10('0xe')];};};Realtime[_0xbb10('0x16')][_0xbb10('0x25')]=function(){var _0x4f1cdd=this;return function(_0xd238e9){if(_0xd238e9){freeIsNotKey(_0xd238e9,_0x4f1cdd[_0xbb10('0xf')],'id');for(var _0x5835fd=0x0,_0xe2040f={},_0x2e3214={};_0x5835fd<_0xd238e9[_0xbb10('0x1c')];_0x5835fd+=0x1){_0xe2040f=_0xd238e9[_0x5835fd];if(_[_0xbb10('0x1a')](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']])){_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]=new WhatsappQueue(_0xe2040f);}else{_0x4f1cdd['mergeFromDatabase'](_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']],_0xe2040f);}_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']][_0xbb10('0x22')]();_0x4f1cdd[_0xbb10('0xf')][_0xe2040f['id']]['updateRealtime']();}}return _0x4f1cdd[_0xbb10('0xf')];};};module[_0xbb10('0x26')]=Realtime;
\ No newline at end of file
index 958d09e..71d1460 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd24f=['../client','update','addTags','Request','AddTagsToChatInteraction','addTagsToChatInteraction'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xd24f,0x16e));var _0xfd24=function(_0x1e2e30,_0x48b693){_0x1e2e30=_0x1e2e30-0x0;var _0x49169c=_0xd24f[_0x1e2e30];return _0x49169c;};'use strict';var client=require(_0xfd24('0x0'));exports[_0xfd24('0x1')]=function(_0x298f2b,_0x5c883f){return client['Request']('UpdateChatInteraction',{'body':_0x5c883f,'options':{'where':{'id':_0x298f2b}},'log':'updateChatInteraction'});};exports[_0xfd24('0x2')]=function(_0x484a7f,_0x5d85ce){return client[_0xfd24('0x3')](_0xfd24('0x4'),{'body':_0x5d85ce,'options':{'where':{'id':_0x484a7f}},'log':_0xfd24('0x5')});};
\ No newline at end of file
+var _0x26c5=['AddTagsToChatInteraction','addTagsToChatInteraction','../client','Request','addTags'];(function(_0x55ee03,_0x5c374d){var _0x51c67e=function(_0x5eef21){while(--_0x5eef21){_0x55ee03['push'](_0x55ee03['shift']());}};_0x51c67e(++_0x5c374d);}(_0x26c5,0x124));var _0x526c=function(_0x5548c5,_0x4c9ecb){_0x5548c5=_0x5548c5-0x0;var _0x2a3301=_0x26c5[_0x5548c5];return _0x2a3301;};'use strict';var client=require(_0x526c('0x0'));exports['update']=function(_0x1a4d3b,_0x21c465){return client[_0x526c('0x1')]('UpdateChatInteraction',{'body':_0x21c465,'options':{'where':{'id':_0x1a4d3b}},'log':'updateChatInteraction'});};exports[_0x526c('0x2')]=function(_0x20b575,_0x5dc9cc){return client['Request'](_0x526c('0x3'),{'body':_0x5dc9cc,'options':{'where':{'id':_0x20b575}},'log':_0x526c('0x4')});};
\ No newline at end of file
index 6f267f4..67c1aad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5fd=['createChatMessage','../client','create','Request','CreateChatMessage'];(function(_0x38fe3f,_0x12c118){var _0x5cd1c0=function(_0x3fa901){while(--_0x3fa901){_0x38fe3f['push'](_0x38fe3f['shift']());}};_0x5cd1c0(++_0x12c118);}(_0xc5fd,0x92));var _0xdc5f=function(_0x5e1b91,_0x236f17){_0x5e1b91=_0x5e1b91-0x0;var _0x59b52f=_0xc5fd[_0x5e1b91];return _0x59b52f;};'use strict';var client=require(_0xdc5f('0x0'));exports[_0xdc5f('0x1')]=function(_0x105e7c){return client[_0xdc5f('0x2')](_0xdc5f('0x3'),{'body':_0x105e7c,'log':_0xdc5f('0x4')});};
\ No newline at end of file
+var _0xaf2e=['create','Request','CreateChatMessage','createChatMessage','../client'];(function(_0x2dc9f6,_0x51f365){var _0x167c4c=function(_0x48a4f6){while(--_0x48a4f6){_0x2dc9f6['push'](_0x2dc9f6['shift']());}};_0x167c4c(++_0x51f365);}(_0xaf2e,0x9f));var _0xeaf2=function(_0x490192,_0x8e64e5){_0x490192=_0x490192-0x0;var _0x35ea26=_0xaf2e[_0x490192];return _0x35ea26;};'use strict';var client=require(_0xeaf2('0x0'));exports[_0xeaf2('0x1')]=function(_0xb31cfe){return client[_0xeaf2('0x2')](_0xeaf2('0x3'),{'body':_0xb31cfe,'log':_0xeaf2('0x4')});};
\ No newline at end of file
index 2c9e004..429a720 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x639d=['User','../client','getChatQueues','Request','name','timeout'];(function(_0x43f489,_0x2b4fea){var _0x4134b4=function(_0x4365f6){while(--_0x4365f6){_0x43f489['push'](_0x43f489['shift']());}};_0x4134b4(++_0x2b4fea);}(_0x639d,0xbb));var _0xd639=function(_0x5a0748,_0xa78cba){_0x5a0748=_0x5a0748-0x0;var _0x42bfa7=_0x639d[_0x5a0748];return _0x42bfa7;};'use strict';var client=require(_0xd639('0x0'));exports[_0xd639('0x1')]=function(){return function(){return client[_0xd639('0x2')]('GetChatQueue',{'options':{'raw':![],'attributes':['id',_0xd639('0x3'),_0xd639('0x4'),'strategy'],'include':[{'model':_0xd639('0x5'),'as':'Agents','attributes':['id',_0xd639('0x3'),'online','chatPause']}]},'log':_0xd639('0x1')});};};
\ No newline at end of file
+var _0x8819=['Agents','online','chatPause','getChatQueues','Request','GetChatQueue','name','timeout','strategy'];(function(_0x9e72c8,_0x5ac1a9){var _0x1468b2=function(_0x2cac69){while(--_0x2cac69){_0x9e72c8['push'](_0x9e72c8['shift']());}};_0x1468b2(++_0x5ac1a9);}(_0x8819,0x94));var _0x9881=function(_0x3ad81f,_0x137b6e){_0x3ad81f=_0x3ad81f-0x0;var _0x2759f4=_0x8819[_0x3ad81f];return _0x2759f4;};'use strict';var client=require('../client');exports['getChatQueues']=function(){return function(){return client[_0x9881('0x0')](_0x9881('0x1'),{'options':{'raw':![],'attributes':['id',_0x9881('0x2'),_0x9881('0x3'),_0x9881('0x4')],'include':[{'model':'User','as':_0x9881('0x5'),'attributes':['id',_0x9881('0x2'),_0x9881('0x6'),_0x9881('0x7')]}]},'log':_0x9881('0x8')});};};
\ No newline at end of file
index 10e6916..5156ccf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f94=['update','Request','DESC','UpdateChatQueueReport','../client','create','CreateChatQueueReport'];(function(_0x28b7ab,_0x16a764){var _0x56791b=function(_0x25d20d){while(--_0x25d20d){_0x28b7ab['push'](_0x28b7ab['shift']());}};_0x56791b(++_0x16a764);}(_0x9f94,0x1e7));var _0x49f9=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x9f94[_0x4565bf];return _0x5610ba;};'use strict';var client=require(_0x49f9('0x0'));exports[_0x49f9('0x1')]=function(_0x2ca96a){return client['Request']('CreateChatQueueReport',{'body':_0x2ca96a,'log':_0x49f9('0x2')});};exports[_0x49f9('0x3')]=function(_0xb643ef,_0x375856){return client[_0x49f9('0x4')]('UpdateChatQueueReport',{'body':_0x375856,'options':{'where':{'uniqueid':_0xb643ef},'order':[['id',_0x49f9('0x5')]],'limit':0x1},'log':_0x49f9('0x6')});};
\ No newline at end of file
+var _0xc576=['../client','create','Request','CreateChatQueueReport','UpdateChatQueueReport'];(function(_0x425877,_0x1774f1){var _0x193345=function(_0x14e852){while(--_0x14e852){_0x425877['push'](_0x425877['shift']());}};_0x193345(++_0x1774f1);}(_0xc576,0x1ea));var _0x6c57=function(_0x5b5eb4,_0x117c87){_0x5b5eb4=_0x5b5eb4-0x0;var _0x42af53=_0xc576[_0x5b5eb4];return _0x42af53;};'use strict';var client=require(_0x6c57('0x0'));exports[_0x6c57('0x1')]=function(_0x8a70a3){return client[_0x6c57('0x2')](_0x6c57('0x3'),{'body':_0x8a70a3,'log':'CreateChatQueueReport'});};exports['update']=function(_0x10a252,_0x4e5df7){return client[_0x6c57('0x2')](_0x6c57('0x4'),{'body':_0x4e5df7,'options':{'where':{'uniqueid':_0x10a252},'order':[['id','DESC']],'limit':0x1},'log':_0x6c57('0x4')});};
\ No newline at end of file
index 06f7251..3101aad 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(_0x1ca5e4,_0xf63e43){var _0x282232=function(_0x11fd8b){while(--_0x11fd8b){_0x1ca5e4['push'](_0x1ca5e4['shift']());}};_0x282232(++_0xf63e43);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
+var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x31e5cb,_0x2f5adf){var _0x4170df=function(_0x31c53e){while(--_0x31c53e){_0x31e5cb['push'](_0x31e5cb['shift']());}};_0x4170df(++_0x2f5adf);}(_0x7a54,0x106));var _0x47a5=function(_0xebbfa6,_0x5ef87d){_0xebbfa6=_0xebbfa6-0x0;var _0x32f6ec=_0x7a54[_0xebbfa6];return _0x32f6ec;};'use strict';var client=require(_0x47a5('0x0'));exports[_0x47a5('0x1')]=function(_0x44b31e,_0x58157c){return client[_0x47a5('0x2')](_0x47a5('0x3'),{'body':_0x58157c,'options':{'where':{'id':_0x44b31e}},'log':'updateFaxInteraction'});};exports[_0x47a5('0x4')]=function(_0x11bf85,_0x2a1a7e){return client[_0x47a5('0x2')](_0x47a5('0x5'),{'body':_0x2a1a7e,'options':{'where':{'id':_0x11bf85}},'log':'addTagsToFaxInteraction'});};
\ No newline at end of file
index dc34449..e0ce964 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd257=['create','CreateFaxMessage'];(function(_0xe6232c,_0xb5902d){var _0x2a373a=function(_0x49306a){while(--_0x49306a){_0xe6232c['push'](_0xe6232c['shift']());}};_0x2a373a(++_0xb5902d);}(_0xd257,0x1e8));var _0x7d25=function(_0x9df3d8,_0x4074e3){_0x9df3d8=_0x9df3d8-0x0;var _0x366da1=_0xd257[_0x9df3d8];return _0x366da1;};'use strict';var client=require('../client');exports[_0x7d25('0x0')]=function(_0x581341){return client['Request'](_0x7d25('0x1'),{'body':_0x581341,'log':'createFaxMessage'});};
\ No newline at end of file
+var _0x6fd1=['createFaxMessage','create','Request','CreateFaxMessage'];(function(_0x372ffc,_0x493dd2){var _0x3fab9c=function(_0x3e75b4){while(--_0x3e75b4){_0x372ffc['push'](_0x372ffc['shift']());}};_0x3fab9c(++_0x493dd2);}(_0x6fd1,0xcd));var _0x16fd=function(_0x4a32a8,_0x5eac0e){_0x4a32a8=_0x4a32a8-0x0;var _0x115f35=_0x6fd1[_0x4a32a8];return _0x115f35;};'use strict';var client=require('../client');exports[_0x16fd('0x0')]=function(_0x562331){return client[_0x16fd('0x1')](_0x16fd('0x2'),{'body':_0x562331,'log':_0x16fd('0x3')});};
\ No newline at end of file
index aabb28d..fc6269c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2fb1=['GetFaxQueue','name','timeout','strategy','Agents','../client','getFaxQueues','Request'];(function(_0x3257c6,_0x3f2494){var _0x57f90a=function(_0x3c96ad){while(--_0x3c96ad){_0x3257c6['push'](_0x3257c6['shift']());}};_0x57f90a(++_0x3f2494);}(_0x2fb1,0x65));var _0x12fb=function(_0x2aff3b,_0x1ab4c5){_0x2aff3b=_0x2aff3b-0x0;var _0x5cc69d=_0x2fb1[_0x2aff3b];return _0x5cc69d;};'use strict';var client=require(_0x12fb('0x0'));exports[_0x12fb('0x1')]=function(){return function(){return client[_0x12fb('0x2')](_0x12fb('0x3'),{'options':{'raw':![],'attributes':['id',_0x12fb('0x4'),_0x12fb('0x5'),_0x12fb('0x6')],'include':[{'model':'User','as':_0x12fb('0x7'),'attributes':['id',_0x12fb('0x4'),'online','faxPause']}]},'log':'getFaxQueues'});};};
\ No newline at end of file
+var _0x1afc=['User','Agents','online','faxPause','getFaxQueues','Request','GetFaxQueue','name','strategy'];(function(_0x5bd411,_0x1d1239){var _0x144a43=function(_0x43cf01){while(--_0x43cf01){_0x5bd411['push'](_0x5bd411['shift']());}};_0x144a43(++_0x1d1239);}(_0x1afc,0x12e));var _0xc1af=function(_0x1a5579,_0x1f452d){_0x1a5579=_0x1a5579-0x0;var _0x5d2c71=_0x1afc[_0x1a5579];return _0x5d2c71;};'use strict';var client=require('../client');exports['getFaxQueues']=function(){return function(){return client[_0xc1af('0x0')](_0xc1af('0x1'),{'options':{'raw':![],'attributes':['id',_0xc1af('0x2'),'timeout',_0xc1af('0x3')],'include':[{'model':_0xc1af('0x4'),'as':_0xc1af('0x5'),'attributes':['id',_0xc1af('0x2'),_0xc1af('0x6'),_0xc1af('0x7')]}]},'log':_0xc1af('0x8')});};};
\ No newline at end of file
index 3548f9b..d5f373d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6af=['CreateFaxQueueReport','update','UpdateFaxQueueReport','DESC','../client','create','Request'];(function(_0x4214e5,_0x255fd1){var _0x1cff40=function(_0x401d9c){while(--_0x401d9c){_0x4214e5['push'](_0x4214e5['shift']());}};_0x1cff40(++_0x255fd1);}(_0xf6af,0x1bd));var _0xff6a=function(_0x3db756,_0x73c125){_0x3db756=_0x3db756-0x0;var _0x2c1ff1=_0xf6af[_0x3db756];return _0x2c1ff1;};'use strict';var client=require(_0xff6a('0x0'));exports[_0xff6a('0x1')]=function(_0x336375){return client[_0xff6a('0x2')](_0xff6a('0x3'),{'body':_0x336375,'log':'CreateFaxQueueReport'});};exports[_0xff6a('0x4')]=function(_0x576278,_0x17afe5){return client[_0xff6a('0x2')](_0xff6a('0x5'),{'body':_0x17afe5,'options':{'where':{'uniqueid':_0x576278},'order':[['id',_0xff6a('0x6')]],'limit':0x1},'log':_0xff6a('0x5')});};
\ No newline at end of file
+var _0x88da=['../client','create','Request','CreateFaxQueueReport','update','UpdateFaxQueueReport'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x88da,0x192));var _0xa88d=function(_0x198356,_0x5556a5){_0x198356=_0x198356-0x0;var _0x2ffe44=_0x88da[_0x198356];return _0x2ffe44;};'use strict';var client=require(_0xa88d('0x0'));exports[_0xa88d('0x1')]=function(_0x55ffcc){return client[_0xa88d('0x2')](_0xa88d('0x3'),{'body':_0x55ffcc,'log':'CreateFaxQueueReport'});};exports[_0xa88d('0x4')]=function(_0x42f335,_0x3f9f5e){return client[_0xa88d('0x2')](_0xa88d('0x5'),{'body':_0x3f9f5e,'options':{'where':{'uniqueid':_0x42f335},'order':[['id','DESC']],'limit':0x1},'log':'UpdateFaxQueueReport'});};
\ No newline at end of file
index 73a1b85..b1c6c82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x155c=['name','Interval','Intervals','interval','../client','getIntervals','Request','GetInterval'];(function(_0x3fd50c,_0x1b41ed){var _0x4cebb2=function(_0x56a546){while(--_0x56a546){_0x3fd50c['push'](_0x3fd50c['shift']());}};_0x4cebb2(++_0x1b41ed);}(_0x155c,0x94));var _0xc155=function(_0x41a4d6,_0x3cd62b){_0x41a4d6=_0x41a4d6-0x0;var _0x2f8a4a=_0x155c[_0x41a4d6];return _0x2f8a4a;};'use strict';var client=require(_0xc155('0x0'));exports[_0xc155('0x1')]=function(){return function(){return client[_0xc155('0x2')](_0xc155('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xc155('0x4')],'include':[{'model':_0xc155('0x5'),'as':_0xc155('0x6'),'attributes':['id',_0xc155('0x4'),_0xc155('0x7')]}]},'log':'getIntervals'});};};
\ No newline at end of file
+var _0x0e4b=['getIntervals','Request','GetInterval','name','Interval','Intervals','interval','../client'];(function(_0x144142,_0x139a46){var _0x11d026=function(_0x4f9963){while(--_0x4f9963){_0x144142['push'](_0x144142['shift']());}};_0x11d026(++_0x139a46);}(_0x0e4b,0xe7));var _0xb0e4=function(_0x3ee926,_0x837d2a){_0x3ee926=_0x3ee926-0x0;var _0x45831c=_0x0e4b[_0x3ee926];return _0x45831c;};'use strict';var client=require(_0xb0e4('0x0'));exports[_0xb0e4('0x1')]=function(){return function(){return client[_0xb0e4('0x2')](_0xb0e4('0x3'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xb0e4('0x4')],'include':[{'model':_0xb0e4('0x5'),'as':_0xb0e4('0x6'),'attributes':['id',_0xb0e4('0x4'),_0xb0e4('0x7')]}]},'log':_0xb0e4('0x1')});};};
\ No newline at end of file
index c0f1548..14b2c9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4a2=['UpdateMailInteraction','addTags','Request','AddTagsToMailInteraction','addTagsToChatInteraction','../client'];(function(_0x38d4f6,_0x30c2dc){var _0xceaf9a=function(_0x112037){while(--_0x112037){_0x38d4f6['push'](_0x38d4f6['shift']());}};_0xceaf9a(++_0x30c2dc);}(_0xd4a2,0x173));var _0x2d4a=function(_0x4da1fa,_0x16cd4b){_0x4da1fa=_0x4da1fa-0x0;var _0x444b5d=_0xd4a2[_0x4da1fa];return _0x444b5d;};'use strict';var client=require(_0x2d4a('0x0'));exports['update']=function(_0x4e88a9,_0xfba415){return client['Request'](_0x2d4a('0x1'),{'body':_0xfba415,'options':{'where':{'id':_0x4e88a9}},'log':'updateMailInteraction'});};exports[_0x2d4a('0x2')]=function(_0x5d435a,_0x32af9e){return client[_0x2d4a('0x3')](_0x2d4a('0x4'),{'body':_0x32af9e,'options':{'where':{'id':_0x5d435a}},'log':_0x2d4a('0x5')});};
\ No newline at end of file
+var _0x57ca=['UpdateMailInteraction','updateMailInteraction','addTags','AddTagsToMailInteraction','addTagsToChatInteraction','update','Request'];(function(_0x86ccda,_0x300958){var _0x37fee9=function(_0x5c5ee2){while(--_0x5c5ee2){_0x86ccda['push'](_0x86ccda['shift']());}};_0x37fee9(++_0x300958);}(_0x57ca,0x108));var _0xa57c=function(_0x28fa04,_0x44a9e5){_0x28fa04=_0x28fa04-0x0;var _0x16c8b9=_0x57ca[_0x28fa04];return _0x16c8b9;};'use strict';var client=require('../client');exports[_0xa57c('0x0')]=function(_0x4ad696,_0x4b1712){return client[_0xa57c('0x1')](_0xa57c('0x2'),{'body':_0x4b1712,'options':{'where':{'id':_0x4ad696}},'log':_0xa57c('0x3')});};exports[_0xa57c('0x4')]=function(_0x1da469,_0x48be2d){return client[_0xa57c('0x1')](_0xa57c('0x5'),{'body':_0x48be2d,'options':{'where':{'id':_0x1da469}},'log':_0xa57c('0x6')});};
\ No newline at end of file
index 5ad4e87..59ee795 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9625=['../client','create'];(function(_0x264545,_0x214037){var _0x114d10=function(_0x9e3461){while(--_0x9e3461){_0x264545['push'](_0x264545['shift']());}};_0x114d10(++_0x214037);}(_0x9625,0xe8));var _0x5962=function(_0x34b981,_0x55c311){_0x34b981=_0x34b981-0x0;var _0xaff882=_0x9625[_0x34b981];return _0xaff882;};'use strict';var client=require(_0x5962('0x0'));exports[_0x5962('0x1')]=function(_0x5fd812){return client['Request']('CreateMailMessage',{'body':_0x5fd812,'log':'createMailMessage'});};
\ No newline at end of file
+var _0x28c2=['../client','create','CreateMailMessage','createMailMessage'];(function(_0x1b5cc2,_0x4321c2){var _0x375f3b=function(_0x265ddb){while(--_0x265ddb){_0x1b5cc2['push'](_0x1b5cc2['shift']());}};_0x375f3b(++_0x4321c2);}(_0x28c2,0x190));var _0x228c=function(_0x382d2d,_0x465948){_0x382d2d=_0x382d2d-0x0;var _0x265b27=_0x28c2[_0x382d2d];return _0x265b27;};'use strict';var client=require(_0x228c('0x0'));exports[_0x228c('0x1')]=function(_0xb72d53){return client['Request'](_0x228c('0x2'),{'body':_0xb72d53,'log':_0x228c('0x3')});};
\ No newline at end of file
index d2f3da4..c7f71ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad7e=['Request','GetMailQueue','name','timeout','strategy','User','online','mailPause','getMailQueues','../client'];(function(_0x46582a,_0x554998){var _0x37ff40=function(_0x59694f){while(--_0x59694f){_0x46582a['push'](_0x46582a['shift']());}};_0x37ff40(++_0x554998);}(_0xad7e,0x1f3));var _0xead7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xad7e[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xead7('0x0'));exports['getMailQueues']=function(){return function(){return client[_0xead7('0x1')](_0xead7('0x2'),{'options':{'raw':![],'attributes':['id',_0xead7('0x3'),_0xead7('0x4'),_0xead7('0x5')],'include':[{'model':_0xead7('0x6'),'as':'Agents','attributes':['id',_0xead7('0x3'),_0xead7('0x7'),_0xead7('0x8')]}]},'log':_0xead7('0x9')});};};
\ No newline at end of file
+var _0xc0e3=['getMailQueues','../client','Request','GetMailQueue','name','timeout','User','online','mailPause'];(function(_0x1fae79,_0xb77ef0){var _0x2b2205=function(_0x57fe14){while(--_0x57fe14){_0x1fae79['push'](_0x1fae79['shift']());}};_0x2b2205(++_0xb77ef0);}(_0xc0e3,0x9a));var _0x3c0e=function(_0x1c156e,_0x3263a6){_0x1c156e=_0x1c156e-0x0;var _0x58fc22=_0xc0e3[_0x1c156e];return _0x58fc22;};'use strict';var client=require(_0x3c0e('0x0'));exports['getMailQueues']=function(){return function(){return client[_0x3c0e('0x1')](_0x3c0e('0x2'),{'options':{'raw':![],'attributes':['id',_0x3c0e('0x3'),_0x3c0e('0x4'),'strategy'],'include':[{'model':_0x3c0e('0x5'),'as':'Agents','attributes':['id',_0x3c0e('0x3'),_0x3c0e('0x6'),_0x3c0e('0x7')]}]},'log':_0x3c0e('0x8')});};};
\ No newline at end of file
index 4e3a10f..08a82c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6c8=['Request','CreateMailQueueReport','update','UpdateMailQueueReport','DESC','../client','create'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa6c8,0x116));var _0x8a6c=function(_0x5f34e1,_0x4bd8b2){_0x5f34e1=_0x5f34e1-0x0;var _0x348060=_0xa6c8[_0x5f34e1];return _0x348060;};'use strict';var client=require(_0x8a6c('0x0'));exports[_0x8a6c('0x1')]=function(_0x29476e){return client[_0x8a6c('0x2')](_0x8a6c('0x3'),{'body':_0x29476e,'log':_0x8a6c('0x3')});};exports[_0x8a6c('0x4')]=function(_0x409235,_0x26e47b){return client[_0x8a6c('0x2')](_0x8a6c('0x5'),{'body':_0x26e47b,'options':{'where':{'uniqueid':_0x409235},'order':[['id',_0x8a6c('0x6')]],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
+var _0x5920=['CreateMailQueueReport','update','UpdateMailQueueReport','DESC','../client','create','Request'];(function(_0x3f6db3,_0x3021fb){var _0x406ad9=function(_0x1002b6){while(--_0x1002b6){_0x3f6db3['push'](_0x3f6db3['shift']());}};_0x406ad9(++_0x3021fb);}(_0x5920,0x131));var _0x0592=function(_0x5ac521,_0x36b5f9){_0x5ac521=_0x5ac521-0x0;var _0x289b5b=_0x5920[_0x5ac521];return _0x289b5b;};'use strict';var client=require(_0x0592('0x0'));exports[_0x0592('0x1')]=function(_0x57b52a){return client[_0x0592('0x2')](_0x0592('0x3'),{'body':_0x57b52a,'log':_0x0592('0x3')});};exports[_0x0592('0x4')]=function(_0x43444b,_0x482311){return client[_0x0592('0x2')](_0x0592('0x5'),{'body':_0x482311,'options':{'where':{'uniqueid':_0x43444b},'order':[['id',_0x0592('0x6')]],'limit':0x1},'log':_0x0592('0x5')});};
\ No newline at end of file
index afd7de2..c96f1b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54cb=['UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','Request'];(function(_0x44278,_0x1bd66f){var _0x2d97f9=function(_0x18a1a3){while(--_0x18a1a3){_0x44278['push'](_0x44278['shift']());}};_0x2d97f9(++_0x1bd66f);}(_0x54cb,0x1e7));var _0xb54c=function(_0x2f08de,_0x43f5ed){_0x2f08de=_0x2f08de-0x0;var _0x1ff46c=_0x54cb[_0x2f08de];return _0x1ff46c;};'use strict';var client=require('../client');exports['update']=function(_0x306a86,_0x5463a1){return client[_0xb54c('0x0')](_0xb54c('0x1'),{'body':_0x5463a1,'options':{'where':{'id':_0x306a86}},'log':_0xb54c('0x2')});};exports[_0xb54c('0x3')]=function(_0x566cf8,_0x249428){return client[_0xb54c('0x0')]('AddTagsToOpenchannelInteraction',{'body':_0x249428,'options':{'where':{'id':_0x566cf8}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0x2fb9=['addTagsToChatInteraction','update','UpdateOpenchannelInteraction','addTags','Request','AddTagsToOpenchannelInteraction'];(function(_0x2e167f,_0x338c38){var _0x1f34a6=function(_0x593fdf){while(--_0x593fdf){_0x2e167f['push'](_0x2e167f['shift']());}};_0x1f34a6(++_0x338c38);}(_0x2fb9,0x1c3));var _0x92fb=function(_0x5c5c0d,_0x1dbe17){_0x5c5c0d=_0x5c5c0d-0x0;var _0x79db1c=_0x2fb9[_0x5c5c0d];return _0x79db1c;};'use strict';var client=require('../client');exports[_0x92fb('0x0')]=function(_0x578c27,_0x880fce){return client['Request'](_0x92fb('0x1'),{'body':_0x880fce,'options':{'where':{'id':_0x578c27}},'log':'updateOpenchannelInteraction'});};exports[_0x92fb('0x2')]=function(_0x545c8b,_0x4e0274){return client[_0x92fb('0x3')](_0x92fb('0x4'),{'body':_0x4e0274,'options':{'where':{'id':_0x545c8b}},'log':_0x92fb('0x5')});};
\ No newline at end of file
index 2892a2d..e62e4f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62d4=['createOpenchannelMessage','create','Request','CreateOpenchannelMessage'];(function(_0x13e6b3,_0x39fc2a){var _0x32433f=function(_0x124f05){while(--_0x124f05){_0x13e6b3['push'](_0x13e6b3['shift']());}};_0x32433f(++_0x39fc2a);}(_0x62d4,0xb9));var _0x462d=function(_0x13c7c1,_0x72ed60){_0x13c7c1=_0x13c7c1-0x0;var _0x2a8045=_0x62d4[_0x13c7c1];return _0x2a8045;};'use strict';var client=require('../client');exports[_0x462d('0x0')]=function(_0x18b7b5){return client[_0x462d('0x1')](_0x462d('0x2'),{'body':_0x18b7b5,'log':_0x462d('0x3')});};
\ No newline at end of file
+var _0x1bad=['CreateOpenchannelMessage','createOpenchannelMessage','../client','create'];(function(_0x83fac5,_0x47c38b){var _0x17f15f=function(_0x17fc5a){while(--_0x17fc5a){_0x83fac5['push'](_0x83fac5['shift']());}};_0x17f15f(++_0x47c38b);}(_0x1bad,0xb2));var _0xd1ba=function(_0x8bb8f0,_0x12d06b){_0x8bb8f0=_0x8bb8f0-0x0;var _0x4962d6=_0x1bad[_0x8bb8f0];return _0x4962d6;};'use strict';var client=require(_0xd1ba('0x0'));exports[_0xd1ba('0x1')]=function(_0x225203){return client['Request'](_0xd1ba('0x2'),{'body':_0x225203,'log':_0xd1ba('0x3')});};
\ No newline at end of file
index 54985a1..020ee19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9219=['strategy','User','Agents','online','openchannelPause','../client','getOpenchannelQueues','Request','GetOpenchannelQueue','name','timeout'];(function(_0x32f470,_0x3726c6){var _0x43cc20=function(_0x33a259){while(--_0x33a259){_0x32f470['push'](_0x32f470['shift']());}};_0x43cc20(++_0x3726c6);}(_0x9219,0xc0));var _0x9921=function(_0x1dbf09,_0xd95808){_0x1dbf09=_0x1dbf09-0x0;var _0x4bd700=_0x9219[_0x1dbf09];return _0x4bd700;};'use strict';var client=require(_0x9921('0x0'));exports[_0x9921('0x1')]=function(){return function(){return client[_0x9921('0x2')](_0x9921('0x3'),{'options':{'raw':![],'attributes':['id',_0x9921('0x4'),_0x9921('0x5'),_0x9921('0x6')],'include':[{'model':_0x9921('0x7'),'as':_0x9921('0x8'),'attributes':['id','name',_0x9921('0x9'),_0x9921('0xa')]}]},'log':_0x9921('0x1')});};};
\ No newline at end of file
+var _0x9f2d=['strategy','User','Agents','online','openchannelPause','getOpenchannelQueues','Request','name','timeout'];(function(_0x2cb808,_0x53914b){var _0x2f87e1=function(_0x32f18b){while(--_0x32f18b){_0x2cb808['push'](_0x2cb808['shift']());}};_0x2f87e1(++_0x53914b);}(_0x9f2d,0x1d1));var _0xd9f2=function(_0x2dd346,_0x5613fc){_0x2dd346=_0x2dd346-0x0;var _0x2843b9=_0x9f2d[_0x2dd346];return _0x2843b9;};'use strict';var client=require('../client');exports['getOpenchannelQueues']=function(){return function(){return client[_0xd9f2('0x0')]('GetOpenchannelQueue',{'options':{'raw':![],'attributes':['id',_0xd9f2('0x1'),_0xd9f2('0x2'),_0xd9f2('0x3')],'include':[{'model':_0xd9f2('0x4'),'as':_0xd9f2('0x5'),'attributes':['id',_0xd9f2('0x1'),_0xd9f2('0x6'),_0xd9f2('0x7')]}]},'log':_0xd9f2('0x8')});};};
\ No newline at end of file
index 44bc12b..7af6e89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e1e=['UpdateOpenchannelQueueReport','DESC','../client','create','Request','CreateOpenchannelQueueReport','update'];(function(_0xd02bb,_0x26e2d0){var _0x1cdf23=function(_0x18fd05){while(--_0x18fd05){_0xd02bb['push'](_0xd02bb['shift']());}};_0x1cdf23(++_0x26e2d0);}(_0x0e1e,0x13d));var _0xe0e1=function(_0x1ae14d,_0x41bab5){_0x1ae14d=_0x1ae14d-0x0;var _0x5bfc99=_0x0e1e[_0x1ae14d];return _0x5bfc99;};'use strict';var client=require(_0xe0e1('0x0'));exports[_0xe0e1('0x1')]=function(_0x22bdf4){return client[_0xe0e1('0x2')](_0xe0e1('0x3'),{'body':_0x22bdf4,'log':_0xe0e1('0x3')});};exports[_0xe0e1('0x4')]=function(_0xddb556,_0x8e7537){return client[_0xe0e1('0x2')](_0xe0e1('0x5'),{'body':_0x8e7537,'options':{'where':{'uniqueid':_0xddb556},'order':[['id',_0xe0e1('0x6')]],'limit':0x1},'log':_0xe0e1('0x5')});};
\ No newline at end of file
+var _0xee9a=['update','Request','UpdateOpenchannelQueueReport','DESC','create','CreateOpenchannelQueueReport'];(function(_0x4d4d4b,_0x141728){var _0x40c9b0=function(_0x895b7b){while(--_0x895b7b){_0x4d4d4b['push'](_0x4d4d4b['shift']());}};_0x40c9b0(++_0x141728);}(_0xee9a,0x12a));var _0xaee9=function(_0x1944be,_0x99fbf2){_0x1944be=_0x1944be-0x0;var _0x3e866e=_0xee9a[_0x1944be];return _0x3e866e;};'use strict';var client=require('../client');exports[_0xaee9('0x0')]=function(_0x5130be){return client['Request'](_0xaee9('0x1'),{'body':_0x5130be,'log':_0xaee9('0x1')});};exports[_0xaee9('0x2')]=function(_0x2640cb,_0x43c58b){return client[_0xaee9('0x3')](_0xaee9('0x4'),{'body':_0x43c58b,'options':{'where':{'uniqueid':_0x2640cb},'order':[['id',_0xaee9('0x5')]],'limit':0x1},'log':_0xaee9('0x4')});};
\ No newline at end of file
index 4e8b2c1..f44a4e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a08=['Request','UpdateSmsInteraction','updateSmsInteraction','addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x7a08,0x11e));var _0x87a0=function(_0x20ea26,_0x5512f8){_0x20ea26=_0x20ea26-0x0;var _0xcbc4d7=_0x7a08[_0x20ea26];return _0xcbc4d7;};'use strict';var client=require(_0x87a0('0x0'));exports[_0x87a0('0x1')]=function(_0x48ea54,_0x59cb8c){return client[_0x87a0('0x2')](_0x87a0('0x3'),{'body':_0x59cb8c,'options':{'where':{'id':_0x48ea54}},'log':_0x87a0('0x4')});};exports[_0x87a0('0x5')]=function(_0x28c28f,_0x122d33){return client[_0x87a0('0x2')](_0x87a0('0x6'),{'body':_0x122d33,'options':{'where':{'id':_0x28c28f}},'log':_0x87a0('0x7')});};
\ No newline at end of file
+var _0xaab2=['addTags','AddTagsToSmsInteraction','update','UpdateSmsInteraction','updateSmsInteraction'];(function(_0x5305a4,_0x3b0127){var _0x544aa2=function(_0x370491){while(--_0x370491){_0x5305a4['push'](_0x5305a4['shift']());}};_0x544aa2(++_0x3b0127);}(_0xaab2,0xca));var _0x2aab=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xaab2[_0x411add];return _0x238242;};'use strict';var client=require('../client');exports[_0x2aab('0x0')]=function(_0x341c15,_0x1d1057){return client['Request'](_0x2aab('0x1'),{'body':_0x1d1057,'options':{'where':{'id':_0x341c15}},'log':_0x2aab('0x2')});};exports[_0x2aab('0x3')]=function(_0x342fe5,_0x3d6ee0){return client['Request'](_0x2aab('0x4'),{'body':_0x3d6ee0,'options':{'where':{'id':_0x342fe5}},'log':'addTagsToSmsInteraction'});};
\ No newline at end of file
index 4371c55..1af41f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf397=['CreateSmsMessage','createSmsMessage','../client','Request'];(function(_0x45fd3b,_0x29dab8){var _0x50a042=function(_0x1eeb3e){while(--_0x1eeb3e){_0x45fd3b['push'](_0x45fd3b['shift']());}};_0x50a042(++_0x29dab8);}(_0xf397,0xae));var _0x7f39=function(_0x530c6f,_0x9ecccf){_0x530c6f=_0x530c6f-0x0;var _0x371d45=_0xf397[_0x530c6f];return _0x371d45;};'use strict';var client=require(_0x7f39('0x0'));exports['create']=function(_0x296ce1){return client[_0x7f39('0x1')](_0x7f39('0x2'),{'body':_0x296ce1,'log':_0x7f39('0x3')});};
\ No newline at end of file
+var _0x4989=['create','Request','CreateSmsMessage'];(function(_0x4ab545,_0x5ecb09){var _0x87cea2=function(_0x2d673f){while(--_0x2d673f){_0x4ab545['push'](_0x4ab545['shift']());}};_0x87cea2(++_0x5ecb09);}(_0x4989,0x84));var _0x9498=function(_0x4907de,_0x5bbdc6){_0x4907de=_0x4907de-0x0;var _0x482054=_0x4989[_0x4907de];return _0x482054;};'use strict';var client=require('../client');exports[_0x9498('0x0')]=function(_0x598419){return client[_0x9498('0x1')](_0x9498('0x2'),{'body':_0x598419,'log':'createSmsMessage'});};
\ No newline at end of file
index 6070ab8..e2d8aa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['Request','GetSmsQueue','name','timeout','strategy','User','online','getSmsQueues'];(function(_0x5570c5,_0xc66d4d){var _0x414487=function(_0x54bf04){while(--_0x54bf04){_0x5570c5['push'](_0x5570c5['shift']());}};_0x414487(++_0xc66d4d);}(_0x9c44,0x178));var _0x49c4=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x9c44[_0x18ab2a];return _0x16dcee;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x49c4('0x0')](_0x49c4('0x1'),{'options':{'raw':![],'attributes':['id',_0x49c4('0x2'),_0x49c4('0x3'),_0x49c4('0x4')],'include':[{'model':_0x49c4('0x5'),'as':'Agents','attributes':['id','name',_0x49c4('0x6'),'smsPause']}]},'log':_0x49c4('0x7')});};};
\ No newline at end of file
+var _0xb7e7=['online','../client','Request','name','strategy','Agents'];(function(_0x513766,_0x4431cc){var _0x574869=function(_0xd13d0e){while(--_0xd13d0e){_0x513766['push'](_0x513766['shift']());}};_0x574869(++_0x4431cc);}(_0xb7e7,0x121));var _0x7b7e=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0xb7e7[_0x38a7ac];return _0x53061a;};'use strict';var client=require(_0x7b7e('0x0'));exports['getSmsQueues']=function(){return function(){return client[_0x7b7e('0x1')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id',_0x7b7e('0x2'),'timeout',_0x7b7e('0x3')],'include':[{'model':'User','as':_0x7b7e('0x4'),'attributes':['id',_0x7b7e('0x2'),_0x7b7e('0x5'),'smsPause']}]},'log':'getSmsQueues'});};};
\ No newline at end of file
index b31939a..39f2085 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['../client','create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x2d97b4,_0x487b11){var _0x3ff911=function(_0x5cbec8){while(--_0x5cbec8){_0x2d97b4['push'](_0x2d97b4['shift']());}};_0x3ff911(++_0x487b11);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3){return client[_0x7995('0x2')]('CreateSmsQueueReport',{'body':_0x2722a3,'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x1902b4,_0x462a03){return client['Request'](_0x7995('0x5'),{'body':_0x462a03,'options':{'where':{'uniqueid':_0x1902b4},'order':[['id',_0x7995('0x6')]],'limit':0x1},'log':_0x7995('0x5')});};
\ No newline at end of file
+var _0x008c=['../client','create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC'];(function(_0x3d5e72,_0x3ab167){var _0x2230e4=function(_0x4ede86){while(--_0x4ede86){_0x3d5e72['push'](_0x3d5e72['shift']());}};_0x2230e4(++_0x3ab167);}(_0x008c,0x188));var _0xc008=function(_0x4ad553,_0x586c5a){_0x4ad553=_0x4ad553-0x0;var _0x136750=_0x008c[_0x4ad553];return _0x136750;};'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
index 45f1ed9..300c7e9 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(_0x3cd5d0,_0x6eab1b){var _0x1f5286=function(_0x616c70){while(--_0x616c70){_0x3cd5d0['push'](_0x3cd5d0['shift']());}};_0x1f5286(++_0x6eab1b);}(_0xa9e0,0x123));var _0x0a9e=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa9e0[_0xa1e3e3];return _0xc980e9;};'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(_0x5866d1,_0xa6dc72){var _0x30071f=function(_0x482390){while(--_0x482390){_0x5866d1['push'](_0x5866d1['shift']());}};_0x30071f(++_0xa6dc72);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xa9e0[_0x1cfa0d];return _0xe33279;};'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 5a08064..7b2facb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfcbe=['updateWhatsappInteraction','update','Request','UpdateWhatsappInteraction'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xfcbe,0x1b1));var _0xefcb=function(_0x353099,_0x4ce87a){_0x353099=_0x353099-0x0;var _0x306e47=_0xfcbe[_0x353099];return _0x306e47;};'use strict';var client=require('../client');exports[_0xefcb('0x0')]=function(_0x35eabe,_0x1dc3ed){return client[_0xefcb('0x1')](_0xefcb('0x2'),{'body':_0x1dc3ed,'options':{'where':{'id':_0x35eabe}},'log':_0xefcb('0x3')});};exports['addTags']=function(_0xbfb8c6,_0x14f3b5){return client['Request']('AddTagsToWhatsappInteraction',{'body':_0x14f3b5,'options':{'where':{'id':_0xbfb8c6}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
+var _0x49c1=['Request','updateWhatsappInteraction','addTags','addTagsToWhatsappInteraction','../client'];(function(_0x38a99f,_0x1cb2d6){var _0x50816d=function(_0x48447e){while(--_0x48447e){_0x38a99f['push'](_0x38a99f['shift']());}};_0x50816d(++_0x1cb2d6);}(_0x49c1,0xef));var _0x149c=function(_0x172b1c,_0x4c811a){_0x172b1c=_0x172b1c-0x0;var _0x18228a=_0x49c1[_0x172b1c];return _0x18228a;};'use strict';var client=require(_0x149c('0x0'));exports['update']=function(_0x466227,_0x2f0c65){return client[_0x149c('0x1')]('UpdateWhatsappInteraction',{'body':_0x2f0c65,'options':{'where':{'id':_0x466227}},'log':_0x149c('0x2')});};exports[_0x149c('0x3')]=function(_0x4c3294,_0xdb4fdf){return client[_0x149c('0x1')]('AddTagsToWhatsappInteraction',{'body':_0xdb4fdf,'options':{'where':{'id':_0x4c3294}},'log':_0x149c('0x4')});};
\ No newline at end of file
index 53cdab4..2c14b68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7831=['Request','CreateWhatsappMessage','createWhatsappMessage','create'];(function(_0x23a477,_0x36bd86){var _0x1a6fb2=function(_0x4e9f26){while(--_0x4e9f26){_0x23a477['push'](_0x23a477['shift']());}};_0x1a6fb2(++_0x36bd86);}(_0x7831,0x67));var _0x1783=function(_0x28f01e,_0x45ef5b){_0x28f01e=_0x28f01e-0x0;var _0x327e7b=_0x7831[_0x28f01e];return _0x327e7b;};'use strict';var client=require('../client');exports[_0x1783('0x0')]=function(_0x4d7803){return client[_0x1783('0x1')](_0x1783('0x2'),{'body':_0x4d7803,'log':_0x1783('0x3')});};
\ No newline at end of file
+var _0x6190=['create','Request','../client'];(function(_0x37bd26,_0x5ad346){var _0xe83dc4=function(_0x1ac229){while(--_0x1ac229){_0x37bd26['push'](_0x37bd26['shift']());}};_0xe83dc4(++_0x5ad346);}(_0x6190,0x185));var _0x0619=function(_0x389bd6,_0x1cab0d){_0x389bd6=_0x389bd6-0x0;var _0x1c45df=_0x6190[_0x389bd6];return _0x1c45df;};'use strict';var client=require(_0x0619('0x0'));exports[_0x0619('0x1')]=function(_0x113fa4){return client[_0x0619('0x2')]('CreateWhatsappMessage',{'body':_0x113fa4,'log':'createWhatsappMessage'});};
\ No newline at end of file
index 164ad84..5fb0a2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefd9=['User','Agents','online','../client','getWhatsappQueues','name','timeout'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xefd9,0x15a));var _0x9efd=function(_0x49a4d1,_0x53306f){_0x49a4d1=_0x49a4d1-0x0;var _0x2ca8b2=_0xefd9[_0x49a4d1];return _0x2ca8b2;};'use strict';var client=require(_0x9efd('0x0'));exports[_0x9efd('0x1')]=function(){return function(){return client['Request']('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0x9efd('0x2'),_0x9efd('0x3'),'strategy'],'include':[{'model':_0x9efd('0x4'),'as':_0x9efd('0x5'),'attributes':['id',_0x9efd('0x2'),_0x9efd('0x6'),'whatsappPause']}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
+var _0xb6d8=['User','Agents','online','getWhatsappQueues','../client','timeout'];(function(_0x1219f4,_0x57393d){var _0x3c0d61=function(_0x5200f1){while(--_0x5200f1){_0x1219f4['push'](_0x1219f4['shift']());}};_0x3c0d61(++_0x57393d);}(_0xb6d8,0x178));var _0x8b6d=function(_0x306d34,_0x386d79){_0x306d34=_0x306d34-0x0;var _0x146ad4=_0xb6d8[_0x306d34];return _0x146ad4;};'use strict';var client=require(_0x8b6d('0x0'));exports['getWhatsappQueues']=function(){return function(){return client['Request']('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id','name',_0x8b6d('0x1'),'strategy'],'include':[{'model':_0x8b6d('0x2'),'as':_0x8b6d('0x3'),'attributes':['id','name',_0x8b6d('0x4'),'whatsappPause']}]},'log':_0x8b6d('0x5')});};};
\ No newline at end of file
index 0c4bd51..6c18da5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x254c=['DESC','create','Request','CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport'];(function(_0x87b0ff,_0x314389){var _0x3bc0b2=function(_0x41682b){while(--_0x41682b){_0x87b0ff['push'](_0x87b0ff['shift']());}};_0x3bc0b2(++_0x314389);}(_0x254c,0xc1));var _0xc254=function(_0x3b81d5,_0x4a5330){_0x3b81d5=_0x3b81d5-0x0;var _0x5b0e7c=_0x254c[_0x3b81d5];return _0x5b0e7c;};'use strict';var client=require('../client');exports[_0xc254('0x0')]=function(_0x2d7cc1){return client[_0xc254('0x1')]('CreateWhatsappQueueReport',{'body':_0x2d7cc1,'log':_0xc254('0x2')});};exports[_0xc254('0x3')]=function(_0x313f36,_0x53e421){return client[_0xc254('0x1')](_0xc254('0x4'),{'body':_0x53e421,'options':{'where':{'uniqueid':_0x313f36},'order':[['id',_0xc254('0x5')]],'limit':0x1},'log':_0xc254('0x4')});};
\ No newline at end of file
+var _0x7541=['create','CreateWhatsappQueueReport','update','DESC','UpdateWhatsappQueueReport'];(function(_0x17fb94,_0x1bd692){var _0x269261=function(_0xe8c68d){while(--_0xe8c68d){_0x17fb94['push'](_0x17fb94['shift']());}};_0x269261(++_0x1bd692);}(_0x7541,0x131));var _0x1754=function(_0x187718,_0x427383){_0x187718=_0x187718-0x0;var _0x29ddf4=_0x7541[_0x187718];return _0x29ddf4;};'use strict';var client=require('../client');exports[_0x1754('0x0')]=function(_0xbce9d9){return client['Request']('CreateWhatsappQueueReport',{'body':_0xbce9d9,'log':_0x1754('0x1')});};exports[_0x1754('0x2')]=function(_0x392bef,_0x4182ba){return client['Request']('UpdateWhatsappQueueReport',{'body':_0x4182ba,'options':{'where':{'uniqueid':_0x392bef},'order':[['id',_0x1754('0x3')]],'limit':0x1},'log':_0x1754('0x4')});};
\ No newline at end of file
index b9088d8..60fcf5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd4b=['validate','lodash','util','seq-queue','routing','./strategy','string','number','timeout\x20is\x20a\x20number','info','format','name','toLowerCase','length','[%s][AGENT]\x20%s','message','stop','timeout','createQueue','atimeout','channel','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','[%s][AGENT]\x20ROUTING\x20END','agent','error','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log','stack'];(function(_0x43136e,_0x1768c2){var _0x287a8f=function(_0x421ca6){while(--_0x421ca6){_0x43136e['push'](_0x43136e['shift']());}};_0x287a8f(++_0x1768c2);}(_0xdd4b,0x14a));var _0xbdd4=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xdd4b[_0x167cc1];return _0x10bc4b;};'use strict';var schema=require(_0xbdd4('0x0'));var _=require(_0xbdd4('0x1'));var util=require(_0xbdd4('0x2'));var seqqueue=require(_0xbdd4('0x3'));var logger=require('../../../../config/logger')(_0xbdd4('0x4'));var strategy=require(_0xbdd4('0x5'));var queue=schema({'name':{'type':_0xbdd4('0x6'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xbdd4('0x7'),'message':_0xbdd4('0x8')}});function writeLog(_0x1c24e3,_0x4967d0,_0x26cfd3){return logger[_0xbdd4('0x9')](util[_0xbdd4('0xa')]('[%s][AGENT][NAME:%s][STATUS:%s]',_0x1c24e3,_0x4967d0[_0xbdd4('0xb')],_0x26cfd3));}function handleFindAgent(_0x404d94){return function(_0x50af2b){return _0x50af2b['name'][_0xbdd4('0xc')]()===_0x404d94[_0xbdd4('0xc')]();};}exports['consequence']=function(_0x401b27,_0x1f429e,_0x5b2e8f,_0x30d86c){return function(_0x47a459){try{var _0x3ef57b={'name':_0x1f429e[0x0],'timeout':_0x1f429e[0x1]};var _0x10c1e6=queue[_0xbdd4('0x0')](_0x3ef57b,{'typecast':!![]});if(_0x10c1e6[_0xbdd4('0xd')]){logger['error'](_0xbdd4('0xe'),_0x401b27,_['map'](_0x10c1e6,_0xbdd4('0xf'))['join'](',\x20'));_0x47a459[_0xbdd4('0x10')]();}else{var _0x795a0c=_['find'](_0x5b2e8f['agents'],handleFindAgent(_0x3ef57b[_0xbdd4('0xb')]));if(_0x795a0c){var _0x5b1cb7=(_0x3ef57b[_0xbdd4('0x11')]||0xa)*0x3e8;var _0x424652,_0x1004ed;var _0x5e7c6f=seqqueue[_0xbdd4('0x12')](_0x5b1cb7);_0x5e7c6f['id']=_0x401b27;_0x5e7c6f[_0xbdd4('0x13')]=_0x5b1cb7;_0x5e7c6f[_0xbdd4('0x14')]=_0x30d86c[_0xbdd4('0x14')];writeLog(_0x401b27,_0x795a0c,util[_0xbdd4('0xa')](_0xbdd4('0x15'),_0x5b1cb7));_0x5b2e8f[_0xbdd4('0x16')][_0x401b27]['on'](_0xbdd4('0x17'),function(){logger['info'](_0xbdd4('0x18'),_0x401b27);clearTimeout(_0x1004ed);_0x1004ed=undefined;_0x5e7c6f[_0xbdd4('0x19')]();if(_0x5b2e8f[_0xbdd4('0x16')][_0x401b27]){delete _0x5b2e8f['rules'][_0x401b27];}_0x47a459['stop']();});_0x5b2e8f['rules'][_0x401b27]['on'](_0xbdd4('0x1a'),function(){if(_0x5b2e8f[_0xbdd4('0x16')][_0x401b27]){delete _0x5b2e8f[_0xbdd4('0x16')][_0x401b27];}});_0x1004ed=setTimeout(function(){logger[_0xbdd4('0x9')](_0xbdd4('0x1b'),_0x401b27);clearTimeout(_0x1004ed);_0x5e7c6f[_0xbdd4('0x19')]();_0x47a459['next']();},_0x5b1cb7);strategy[_0xbdd4('0x1c')](_0x5e7c6f,_0x795a0c,_0x5b2e8f,_0x30d86c);}else{logger[_0xbdd4('0x1d')](_0xbdd4('0x1e'),_0x401b27,_0x3ef57b[_0xbdd4('0xb')]);_0x47a459[_0xbdd4('0x10')]();}}}catch(_0x937147){console[_0xbdd4('0x1f')](_0x937147);logger[_0xbdd4('0x1d')]('[%s][QUEUE]\x20%s',_0x401b27,_0x937147[_0xbdd4('0x20')]);_0x47a459['stop']();}};};
\ No newline at end of file
+var _0x60ea=['map','message','stop','find','agents','timeout','createQueue','atimeout','channel','START:%s','rules','end','info','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','[%s][QUEUE]\x20%s','stack','validate','util','seq-queue','routing','./strategy','string','number','timeout\x20is\x20a\x20number','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s'];(function(_0x445d93,_0x375751){var _0x9c3bc4=function(_0x29abea){while(--_0x29abea){_0x445d93['push'](_0x445d93['shift']());}};_0x9c3bc4(++_0x375751);}(_0x60ea,0x119));var _0xa60e=function(_0x2c27f9,_0x4caaab){_0x2c27f9=_0x2c27f9-0x0;var _0x5820ed=_0x60ea[_0x2c27f9];return _0x5820ed;};'use strict';var schema=require(_0xa60e('0x0'));var _=require('lodash');var util=require(_0xa60e('0x1'));var seqqueue=require(_0xa60e('0x2'));var logger=require('../../../../config/logger')(_0xa60e('0x3'));var strategy=require(_0xa60e('0x4'));var queue=schema({'name':{'type':_0xa60e('0x5'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0xa60e('0x6'),'message':_0xa60e('0x7')}});function writeLog(_0x5ccd17,_0x5b475b,_0x42be1d){return logger['info'](util['format'](_0xa60e('0x8'),_0x5ccd17,_0x5b475b[_0xa60e('0x9')],_0x42be1d));}function handleFindAgent(_0x2d1321){return function(_0x196011){return _0x196011[_0xa60e('0x9')][_0xa60e('0xa')]()===_0x2d1321[_0xa60e('0xa')]();};}exports[_0xa60e('0xb')]=function(_0xdec591,_0x493112,_0x3d19f5,_0x3060fe){return function(_0x26098c){try{var _0x400426={'name':_0x493112[0x0],'timeout':_0x493112[0x1]};var _0x37f6ac=queue['validate'](_0x400426,{'typecast':!![]});if(_0x37f6ac[_0xa60e('0xc')]){logger[_0xa60e('0xd')](_0xa60e('0xe'),_0xdec591,_[_0xa60e('0xf')](_0x37f6ac,_0xa60e('0x10'))['join'](',\x20'));_0x26098c[_0xa60e('0x11')]();}else{var _0x3af327=_[_0xa60e('0x12')](_0x3d19f5[_0xa60e('0x13')],handleFindAgent(_0x400426[_0xa60e('0x9')]));if(_0x3af327){var _0x261037=(_0x400426[_0xa60e('0x14')]||0xa)*0x3e8;var _0x10e30a,_0x35fa8b;var _0x170707=seqqueue[_0xa60e('0x15')](_0x261037);_0x170707['id']=_0xdec591;_0x170707[_0xa60e('0x16')]=_0x261037;_0x170707[_0xa60e('0x17')]=_0x3060fe[_0xa60e('0x17')];writeLog(_0xdec591,_0x3af327,util['format'](_0xa60e('0x18'),_0x261037));_0x3d19f5[_0xa60e('0x19')][_0xdec591]['on'](_0xa60e('0x1a'),function(){logger[_0xa60e('0x1b')](_0xa60e('0x1c'),_0xdec591);clearTimeout(_0x35fa8b);_0x35fa8b=undefined;_0x170707[_0xa60e('0x1d')]();if(_0x3d19f5['rules'][_0xdec591]){delete _0x3d19f5[_0xa60e('0x19')][_0xdec591];}_0x26098c['stop']();});_0x3d19f5[_0xa60e('0x19')][_0xdec591]['on'](_0xa60e('0x1e'),function(){if(_0x3d19f5[_0xa60e('0x19')][_0xdec591]){delete _0x3d19f5[_0xa60e('0x19')][_0xdec591];}});_0x35fa8b=setTimeout(function(){logger[_0xa60e('0x1b')](_0xa60e('0x1f'),_0xdec591);clearTimeout(_0x35fa8b);_0x170707['close']();_0x26098c[_0xa60e('0x20')]();},_0x261037);strategy[_0xa60e('0x21')](_0x170707,_0x3af327,_0x3d19f5,_0x3060fe);}else{logger[_0xa60e('0xd')](_0xa60e('0x22'),_0xdec591,_0x400426['name']);_0x26098c[_0xa60e('0x11')]();}}}catch(_0x56603e){console['log'](_0x56603e);logger[_0xa60e('0xd')](_0xa60e('0x23'),_0xdec591,_0x56603e[_0xa60e('0x24')]);_0x26098c[_0xa60e('0x11')]();}};};
\ No newline at end of file
index 3d9e2a9..28b2106 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9879=['Message','create','[%s][AMAZONLEX]\x20%s','error','stringify','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','LexRuntime','$LATEST','message','toString','providerName','providerResponse','then','dialogState','Failed','catch','lodash','moment','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','isNil','interaction','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','body'];(function(_0x371208,_0x4a709f){var _0x2359e0=function(_0x463043){while(--_0x463043){_0x371208['push'](_0x371208['shift']());}};_0x2359e0(++_0x4a709f);}(_0x9879,0x15a));var _0x9987=function(_0xda8c65,_0x280633){_0xda8c65=_0xda8c65-0x0;var _0xcfac9=_0x9879[_0xda8c65];return _0xcfac9;};'use strict';var _=require(_0x9987('0x0'));var moment=require(_0x9987('0x1'));var AWS=require(_0x9987('0x2'));var utils=require(_0x9987('0x3'));var logger=require(_0x9987('0x4'))(_0x9987('0x5'));var rpc={'chatMessage':require(_0x9987('0x6')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0x9987('0x7')),'smsMessage':require(_0x9987('0x8')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x9987('0x9'))};exports['consequence']=function(_0x39799c,_0x4ec128){return function(_0x18c7cc){try{if(!_[_0x9987('0xa')](this[_0x9987('0xb')][_0x9987('0xc')])){logger[_0x9987('0xd')]('[%s][AMAZONLEX]\x20%s',_0x39799c,_0x9987('0xe'));return _0x18c7cc[_0x9987('0xf')]();}var _0x5966d4={'ContactId':this[_0x9987('0x10')]['id'],'sentAt':moment()['format'](_0x9987('0x11')),'direction':_0x9987('0x12')};if(this['channel']==='sms'||this[_0x9987('0x13')]===_0x9987('0x14')){_0x5966d4[_0x9987('0x15')]=this[_0x9987('0xb')]['phone'];}var _0x48b0b0=this['channel'];if(_0x48b0b0===_0x9987('0x16')){_0x5966d4[_0x9987('0x17')]=this[_0x9987('0x18')]['id'];}else{_0x5966d4[_[_0x9987('0x19')](_0x48b0b0)+_0x9987('0x1a')]=this[_0x9987('0x18')]['id'];}_0x5966d4[_[_0x9987('0x19')](_0x48b0b0)+_0x9987('0x1b')]=this[_0x9987('0xb')]['id'];if(this[_0x9987('0xb')][_0x9987('0x1c')]){var _0x6a4a1e=_0x4ec128[0x4];if(!_['isEmpty'](_0x6a4a1e)){_0x5966d4[_0x9987('0x1d')]=utils['getMustacheRender'](_0x6a4a1e,this);return rpc[_0x48b0b0+_0x9987('0x1e')][_0x9987('0x1f')](_0x5966d4)['then'](function(_0x2c3e75){logger[_0x9987('0xd')](_0x9987('0x20'),_0x39799c,_0x5966d4[_0x9987('0x1d')]);})['catch'](function(_0x58dd30){logger[_0x9987('0x21')](_0x9987('0x20'),_0x39799c,JSON[_0x9987('0x22')](_0x58dd30));})['finally'](function(){logger[_0x9987('0xd')](_0x9987('0x23'),_0x39799c);_0x18c7cc[_0x9987('0x24')]();});}else{logger[_0x9987('0xd')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x39799c);_0x18c7cc['stop']();}}else{var _0x1612a6=this;var _0x18f911=new AWS[(_0x9987('0x25'))]({'accessKeyId':_0x4ec128[0x0],'secretAccessKey':_0x4ec128[0x1],'region':_0x4ec128[0x2]});var _0x483ff8={'botAlias':_0x9987('0x26'),'botName':_0x4ec128[0x3],'inputText':this[_0x9987('0x27')][_0x9987('0x1d')],'userId':this[_0x9987('0x13')]+':'+this['interaction']['id'][_0x9987('0x28')]()};_0x18f911['postText'](_0x483ff8,function(_0x14ea5f,_0x2458cb){if(_0x14ea5f){logger[_0x9987('0x21')]('[%s][AMAZONLEX]\x20%s',_0x39799c,_0x14ea5f[_0x9987('0x27')]);_0x18c7cc[_0x9987('0xf')]();}else if(_0x2458cb&&_0x2458cb[_0x9987('0x27')]){_0x1612a6['body']['amazonlex']=_0x2458cb;_0x5966d4[_0x9987('0x1d')]=_0x2458cb['message'];_0x5966d4[_0x9987('0x29')]='amazonlex';_0x5966d4[_0x9987('0x2a')]=JSON['stringify'](_0x2458cb);return rpc[_0x48b0b0+'Message']['create'](_0x5966d4)[_0x9987('0x2b')](function(_0x14a8a1){logger[_0x9987('0xd')](_0x9987('0x20'),_0x39799c,_0x5966d4[_0x9987('0x1d')]);if(_0x2458cb[_0x9987('0x2c')]==_0x9987('0x2d')){_0x18c7cc[_0x9987('0xf')]();}else{_0x18c7cc[_0x9987('0x24')]();}})[_0x9987('0x2e')](function(_0x427181){logger['error']('[%s][AMAZONLEX]\x20%s',_0x39799c,JSON[_0x9987('0x22')](_0x427181));_0x18c7cc[_0x9987('0xf')]();});}else{_0x18c7cc['next']();}});}}catch(_0x58005c){logger[_0x9987('0x21')](_0x9987('0x20'),_0x39799c,JSON[_0x9987('0x22')](_0x58005c));_0x18c7cc[_0x9987('0x24')]();}};};
\ No newline at end of file
+var _0xe0eb=['UserId','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','format','YYYY-MM-DD\x20HH:mm:ss','out','sms','channel','whatsapp','phone','chat','account','upperFirst','AccountId','InteractionId','created','getMustacheRender','create','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','LexRuntime','message','postText','next','amazonlex','body','providerName','providerResponse','dialogState','moment','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0xe0eb,0xe7));var _0xbe0e=function(_0x324496,_0x3a4cdd){_0x324496=_0x324496-0x0;var _0x899545=_0xe0eb[_0x324496];return _0x899545;};'use strict';var _=require('lodash');var moment=require(_0xbe0e('0x0'));var AWS=require(_0xbe0e('0x1'));var utils=require(_0xbe0e('0x2'));var logger=require(_0xbe0e('0x3'))(_0xbe0e('0x4'));var rpc={'chatMessage':require(_0xbe0e('0x5')),'openchannelMessage':require(_0xbe0e('0x6')),'mailMessage':require(_0xbe0e('0x7')),'smsMessage':require(_0xbe0e('0x8')),'faxMessage':require(_0xbe0e('0x9')),'whatsappMessage':require(_0xbe0e('0xa'))};exports[_0xbe0e('0xb')]=function(_0x11029b,_0x2b82f8){return function(_0x39bae6){try{if(!_[_0xbe0e('0xc')](this[_0xbe0e('0xd')][_0xbe0e('0xe')])){logger[_0xbe0e('0xf')](_0xbe0e('0x10'),_0x11029b,_0xbe0e('0x11'));return _0x39bae6['next']();}var _0x50f20e={'ContactId':this['contact']['id'],'sentAt':moment()[_0xbe0e('0x12')](_0xbe0e('0x13')),'direction':_0xbe0e('0x14')};if(this['channel']===_0xbe0e('0x15')||this[_0xbe0e('0x16')]===_0xbe0e('0x17')){_0x50f20e['phone']=this['interaction'][_0xbe0e('0x18')];}var _0x47b06a=this[_0xbe0e('0x16')];if(_0x47b06a===_0xbe0e('0x19')){_0x50f20e['ChatWebsiteId']=this[_0xbe0e('0x1a')]['id'];}else{_0x50f20e[_[_0xbe0e('0x1b')](_0x47b06a)+_0xbe0e('0x1c')]=this[_0xbe0e('0x1a')]['id'];}_0x50f20e[_[_0xbe0e('0x1b')](_0x47b06a)+_0xbe0e('0x1d')]=this[_0xbe0e('0xd')]['id'];if(this[_0xbe0e('0xd')][_0xbe0e('0x1e')]){var _0x1e5daf=_0x2b82f8[0x4];if(!_['isEmpty'](_0x1e5daf)){_0x50f20e['body']=utils[_0xbe0e('0x1f')](_0x1e5daf,this);return rpc[_0x47b06a+'Message'][_0xbe0e('0x20')](_0x50f20e)['then'](function(_0x1af43b){logger[_0xbe0e('0xf')]('[%s][AMAZONLEX]\x20%s',_0x11029b,_0x50f20e['body']);})[_0xbe0e('0x21')](function(_0x2e5145){logger[_0xbe0e('0x22')](_0xbe0e('0x10'),_0x11029b,JSON[_0xbe0e('0x23')](_0x2e5145));})[_0xbe0e('0x24')](function(){logger['info'](_0xbe0e('0x25'),_0x11029b);_0x39bae6['stop']();});}else{logger[_0xbe0e('0xf')](_0xbe0e('0x26'),_0x11029b);_0x39bae6[_0xbe0e('0x27')]();}}else{var _0x1dc310=this;var _0x3dda7e=new AWS[(_0xbe0e('0x28'))]({'accessKeyId':_0x2b82f8[0x0],'secretAccessKey':_0x2b82f8[0x1],'region':_0x2b82f8[0x2]});var _0x51cfe9={'botAlias':'$LATEST','botName':_0x2b82f8[0x3],'inputText':this[_0xbe0e('0x29')]['body'],'userId':this[_0xbe0e('0x16')]+':'+this[_0xbe0e('0xd')]['id']['toString']()};_0x3dda7e[_0xbe0e('0x2a')](_0x51cfe9,function(_0x3bf10e,_0x4b1d62){if(_0x3bf10e){logger[_0xbe0e('0x22')](_0xbe0e('0x10'),_0x11029b,_0x3bf10e[_0xbe0e('0x29')]);_0x39bae6[_0xbe0e('0x2b')]();}else if(_0x4b1d62&&_0x4b1d62[_0xbe0e('0x29')]){_0x1dc310['body'][_0xbe0e('0x2c')]=_0x4b1d62;_0x50f20e[_0xbe0e('0x2d')]=_0x4b1d62[_0xbe0e('0x29')];_0x50f20e[_0xbe0e('0x2e')]=_0xbe0e('0x2c');_0x50f20e[_0xbe0e('0x2f')]=JSON[_0xbe0e('0x23')](_0x4b1d62);return rpc[_0x47b06a+'Message'][_0xbe0e('0x20')](_0x50f20e)['then'](function(_0x5918c4){logger['info'](_0xbe0e('0x10'),_0x11029b,_0x50f20e[_0xbe0e('0x2d')]);if(_0x4b1d62[_0xbe0e('0x30')]=='Failed'){_0x39bae6[_0xbe0e('0x2b')]();}else{_0x39bae6[_0xbe0e('0x27')]();}})[_0xbe0e('0x21')](function(_0x59c65e){logger['error'](_0xbe0e('0x10'),_0x11029b,JSON[_0xbe0e('0x23')](_0x59c65e));_0x39bae6[_0xbe0e('0x2b')]();});}else{_0x39bae6['next']();}});}}catch(_0x46457a){logger['error'](_0xbe0e('0x10'),_0x11029b,JSON[_0xbe0e('0x23')](_0x46457a));_0x39bae6['stop']();}};};
\ No newline at end of file
index f6739b9..fcb1f61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0320=['auto-replied','All','sendMailMessage','smtpOptions','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','stringify','catch','[RPC][%s][AUTOREPLY]\x20%s','finally','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','error','resolve','Interaction','stop','lodash','moment','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','mail','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','created','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','getMustacheRender','message','from','channel','phone','subject','startsWith','Re:\x20','account','upperFirst','InteractionId','Message','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers'];(function(_0x5c38ae,_0x1f0860){var _0x5ab002=function(_0x4e3946){while(--_0x4e3946){_0x5c38ae['push'](_0x5c38ae['shift']());}};_0x5ab002(++_0x1f0860);}(_0x0320,0xe2));var _0x0032=function(_0x1650bd,_0x1849ac){_0x1650bd=_0x1650bd-0x0;var _0x4a0381=_0x0320[_0x1650bd];return _0x4a0381;};'use strict';var _=require(_0x0032('0x0'));var moment=require(_0x0032('0x1'));var utils=require(_0x0032('0x2'));var logger=require(_0x0032('0x3'))('routing');var rpc={'chatMessage':require(_0x0032('0x4')),'openchannelMessage':require(_0x0032('0x5')),'mailMessage':require(_0x0032('0x6')),'smsMessage':require(_0x0032('0x7')),'faxMessage':require(_0x0032('0x8')),'whatsappMessage':require(_0x0032('0x9')),'chatInteraction':require(_0x0032('0xa')),'openchannelInteraction':require(_0x0032('0xb')),'mailInteraction':require(_0x0032('0xc')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0x0032('0xd')),'whatsappInteraction':require(_0x0032('0xe'))};var mailRpc=require('../../mailRpc');exports[_0x0032('0xf')]=function(_0x556c7d,_0x3e4af9,_0x5ba165,_0x7a907c){return function(_0x2b5379){try{var _0x103dca=this['channel'];if(_0x103dca===_0x0032('0x10')&&_0x7a907c[_0x0032('0x11')][_0x0032('0x12')]){logger[_0x0032('0x13')](_0x0032('0x14'),_0x556c7d,_0x0032('0x15'));return _0x2b5379[_0x0032('0x16')]();}if(_0x3e4af9[0x0]==='1'&&(_[_0x0032('0x17')](this[_0x0032('0x18')]['created'])||!this[_0x0032('0x18')][_0x0032('0x19')])){logger[_0x0032('0x13')](_0x0032('0x14'),_0x556c7d,_0x0032('0x1a'));return _0x2b5379[_0x0032('0x16')]();}if(_0x3e4af9[0x0]==='2'&&this[_0x0032('0x18')][_0x0032('0x1b')]){logger[_0x0032('0x13')](_0x0032('0x1c'),_0x556c7d,_0x0032('0x1d'));return _0x2b5379['next']();}var _0x3ca0d1={'ContactId':this[_0x0032('0x1e')]['id'],'sentAt':moment()[_0x0032('0x1f')](_0x0032('0x20')),'direction':_0x0032('0x21')};if(this['channel']===_0x0032('0x10')){_0x3ca0d1['body']=utils[_0x0032('0x22')](_0x3e4af9[0x2],this);}else{_0x3ca0d1[_0x0032('0x11')]=utils[_0x0032('0x22')](_0x3e4af9[0x1],this);}if(this[_0x0032('0x23')]){_0x3ca0d1['to']=this['message'][_0x0032('0x24')]||'';if(this[_0x0032('0x25')]==='mail'&&_0x3e4af9[0x1]==='1'){_0x3ca0d1['cc']=this[_0x0032('0x23')]['cc']||'';}_0x3ca0d1[_0x0032('0x24')]=this[_0x0032('0x23')]['to']||'';_0x3ca0d1['phone']=this[_0x0032('0x23')][_0x0032('0x26')]||'';_0x3ca0d1['read']=!![];if(this['message']['subject']){_0x3ca0d1[_0x0032('0x27')]='';_0x3ca0d1['subject']+=_[_0x0032('0x28')](this['message'][_0x0032('0x27')],'Re:')?'':_0x0032('0x29');_0x3ca0d1[_0x0032('0x27')]+=this[_0x0032('0x23')][_0x0032('0x27')];}}if(this[_0x0032('0x25')]==='chat'){_0x3ca0d1['ChatWebsiteId']=this[_0x0032('0x2a')]['id'];}else{_0x3ca0d1[_[_0x0032('0x2b')](this[_0x0032('0x25')])+'AccountId']=this[_0x0032('0x2a')]['id'];}_0x3ca0d1[_[_0x0032('0x2b')](this['channel'])+_0x0032('0x2c')]=this[_0x0032('0x18')]['id'];var _0x391708=this[_0x0032('0x18')];if(rpc[this[_0x0032('0x25')]+_0x0032('0x2d')]){if(this[_0x0032('0x25')]===_0x0032('0x10')){_0x3ca0d1[_0x0032('0x2e')]=this[_0x0032('0x23')][_0x0032('0x2f')];_0x3ca0d1[_0x0032('0x30')]=_0x0032('0x31')+_['replace'](_0x3ca0d1[_0x0032('0x11')],_0x0032('0x32'),_0x0032('0x33'))+_0x0032('0x34');_0x3ca0d1[_0x0032('0x35')]={'Auto-Submitted':_0x0032('0x36'),'X-Auto-Response-Suppress':_0x0032('0x37'),'Precedence':'auto_reply'};return mailRpc[_0x0032('0x38')](this[_0x0032('0x2a')][_0x0032('0x39')],_0x3ca0d1)[_0x0032('0x3a')](function(_0x1d1a2f){logger[_0x0032('0x13')](_0x0032('0x3b'),_0x556c7d);_0x3ca0d1[_0x0032('0x2f')]=_0x1d1a2f[_0x0032('0x23')][_0x0032('0x2f')];return rpc[_0x103dca+_0x0032('0x2d')][_0x0032('0x3c')](_0x3ca0d1);})[_0x0032('0x3a')](function(_0x2ee971){logger[_0x0032('0x13')]('[%s][AUTOREPLY]\x20%s',_0x556c7d,JSON[_0x0032('0x3d')](_0x2ee971));})[_0x0032('0x3e')](function(_0x37e8cc){logger['error'](_0x0032('0x3f'),_0x556c7d,JSON[_0x0032('0x3d')](_0x37e8cc));})[_0x0032('0x40')](function(){Promise['resolve']()[_0x0032('0x3a')](function(){if(_0x3e4af9[0x0]!=='2'||_0x391708[_0x0032('0x1b')])return;return rpc[_0x103dca+'Interaction']['update'](_0x391708['id'],{'autoreplyExecuted':!![]})[_0x0032('0x3a')](function(_0x12a3b5){logger[_0x0032('0x13')](_0x0032('0x1c'),_0x556c7d,JSON[_0x0032('0x3d')](_0x12a3b5));})[_0x0032('0x3e')](function(_0xb8091a){logger['error'](_0x0032('0x41'),_0x556c7d,JSON['stringify'](_0xb8091a));});})[_0x0032('0x3a')](function(){_0x2b5379[_0x0032('0x16')]();});});}else{return rpc[this[_0x0032('0x25')]+_0x0032('0x2d')]['create'](_0x3ca0d1)[_0x0032('0x3a')](function(){logger[_0x0032('0x13')](_0x0032('0x14'),_0x556c7d,_0x3ca0d1[_0x0032('0x11')]);})[_0x0032('0x3e')](function(_0x661038){logger[_0x0032('0x42')](_0x0032('0x14'),_0x556c7d,JSON[_0x0032('0x3d')](_0x661038));})[_0x0032('0x40')](function(){Promise[_0x0032('0x43')]()[_0x0032('0x3a')](function(){if(_0x3e4af9[0x0]!=='2'||_0x391708[_0x0032('0x1b')])return;return rpc[_0x103dca+_0x0032('0x44')]['update'](_0x391708['id'],{'autoreplyExecuted':!![]})[_0x0032('0x3a')](function(_0x1e3fb6){logger[_0x0032('0x13')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x556c7d,JSON['stringify'](_0x1e3fb6));})[_0x0032('0x3e')](function(_0x56bd2e){logger[_0x0032('0x42')](_0x0032('0x41'),_0x556c7d,JSON[_0x0032('0x3d')](_0x56bd2e));});})['then'](function(){_0x2b5379[_0x0032('0x16')]();});});}}}catch(_0x370989){logger[_0x0032('0x42')](_0x0032('0x14'),_0x556c7d,JSON[_0x0032('0x3d')](_0x370989));_0x2b5379[_0x0032('0x45')]();}};};
\ No newline at end of file
+var _0xd35a=['auto-replied','All','sendMailMessage','smtpOptions','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','Message','create','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','finally','Interaction','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','resolve','lodash','moment','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','channel','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','isNil','interaction','created','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','mail','getMustacheRender','message','from','phone','subject','startsWith','Re:','Re:\x20','chat','account','upperFirst','AccountId','InteractionId','messageId','html','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div','headers'];(function(_0x3248a0,_0x4f7414){var _0x3fe9c1=function(_0x4cf8c7){while(--_0x4cf8c7){_0x3248a0['push'](_0x3248a0['shift']());}};_0x3fe9c1(++_0x4f7414);}(_0xd35a,0xdf));var _0xad35=function(_0xd158dc,_0x128608){_0xd158dc=_0xd158dc-0x0;var _0x12d25f=_0xd35a[_0xd158dc];return _0x12d25f;};'use strict';var _=require(_0xad35('0x0'));var moment=require(_0xad35('0x1'));var utils=require(_0xad35('0x2'));var logger=require(_0xad35('0x3'))(_0xad35('0x4'));var rpc={'chatMessage':require(_0xad35('0x5')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xad35('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xad35('0x7')),'whatsappMessage':require(_0xad35('0x8')),'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xad35('0x9')),'mailInteraction':require(_0xad35('0xa')),'smsInteraction':require(_0xad35('0xb')),'faxInteraction':require(_0xad35('0xc')),'whatsappInteraction':require(_0xad35('0xd'))};var mailRpc=require('../../mailRpc');exports[_0xad35('0xe')]=function(_0x37a258,_0x5308e8,_0x357600,_0x270436){return function(_0x31e9ef){try{var _0x4f122c=this[_0xad35('0xf')];if(_0x4f122c==='mail'&&_0x270436[_0xad35('0x10')][_0xad35('0x11')]){logger[_0xad35('0x12')](_0xad35('0x13'),_0x37a258,_0xad35('0x14'));return _0x31e9ef[_0xad35('0x15')]();}if(_0x5308e8[0x0]==='1'&&(_[_0xad35('0x16')](this[_0xad35('0x17')]['created'])||!this[_0xad35('0x17')][_0xad35('0x18')])){logger[_0xad35('0x12')](_0xad35('0x13'),_0x37a258,'Autoreply\x20already\x20sent');return _0x31e9ef[_0xad35('0x15')]();}if(_0x5308e8[0x0]==='2'&&this[_0xad35('0x17')][_0xad35('0x19')]){logger['info'](_0xad35('0x1a'),_0x37a258,_0xad35('0x1b'));return _0x31e9ef[_0xad35('0x15')]();}var _0x30d4be={'ContactId':this[_0xad35('0x1c')]['id'],'sentAt':moment()[_0xad35('0x1d')](_0xad35('0x1e')),'direction':_0xad35('0x1f')};if(this[_0xad35('0xf')]===_0xad35('0x20')){_0x30d4be[_0xad35('0x10')]=utils[_0xad35('0x21')](_0x5308e8[0x2],this);}else{_0x30d4be[_0xad35('0x10')]=utils[_0xad35('0x21')](_0x5308e8[0x1],this);}if(this[_0xad35('0x22')]){_0x30d4be['to']=this[_0xad35('0x22')]['from']||'';if(this[_0xad35('0xf')]===_0xad35('0x20')&&_0x5308e8[0x1]==='1'){_0x30d4be['cc']=this[_0xad35('0x22')]['cc']||'';}_0x30d4be[_0xad35('0x23')]=this[_0xad35('0x22')]['to']||'';_0x30d4be[_0xad35('0x24')]=this['message'][_0xad35('0x24')]||'';_0x30d4be['read']=!![];if(this['message'][_0xad35('0x25')]){_0x30d4be['subject']='';_0x30d4be[_0xad35('0x25')]+=_[_0xad35('0x26')](this['message'][_0xad35('0x25')],_0xad35('0x27'))?'':_0xad35('0x28');_0x30d4be['subject']+=this[_0xad35('0x22')][_0xad35('0x25')];}}if(this[_0xad35('0xf')]===_0xad35('0x29')){_0x30d4be['ChatWebsiteId']=this[_0xad35('0x2a')]['id'];}else{_0x30d4be[_[_0xad35('0x2b')](this[_0xad35('0xf')])+_0xad35('0x2c')]=this[_0xad35('0x2a')]['id'];}_0x30d4be[_[_0xad35('0x2b')](this[_0xad35('0xf')])+_0xad35('0x2d')]=this[_0xad35('0x17')]['id'];var _0x4db51d=this[_0xad35('0x17')];if(rpc[this[_0xad35('0xf')]+'Message']){if(this[_0xad35('0xf')]===_0xad35('0x20')){_0x30d4be['inReplyTo']=this['message'][_0xad35('0x2e')];_0x30d4be[_0xad35('0x2f')]=_0xad35('0x30')+_[_0xad35('0x31')](_0x30d4be[_0xad35('0x10')],_0xad35('0x32'),_0xad35('0x33'))+'</div>';_0x30d4be[_0xad35('0x34')]={'Auto-Submitted':_0xad35('0x35'),'X-Auto-Response-Suppress':_0xad35('0x36'),'Precedence':'auto_reply'};return mailRpc[_0xad35('0x37')](this[_0xad35('0x2a')][_0xad35('0x38')],_0x30d4be)[_0xad35('0x39')](function(_0x5893cb){logger['info'](_0xad35('0x3a'),_0x37a258);_0x30d4be[_0xad35('0x2e')]=_0x5893cb[_0xad35('0x22')][_0xad35('0x2e')];return rpc[_0x4f122c+_0xad35('0x3b')][_0xad35('0x3c')](_0x30d4be);})['then'](function(_0x48425e){logger[_0xad35('0x12')](_0xad35('0x13'),_0x37a258,JSON[_0xad35('0x3d')](_0x48425e));})[_0xad35('0x3e')](function(_0x152607){logger[_0xad35('0x3f')](_0xad35('0x40'),_0x37a258,JSON[_0xad35('0x3d')](_0x152607));})[_0xad35('0x41')](function(){Promise['resolve']()[_0xad35('0x39')](function(){if(_0x5308e8[0x0]!=='2'||_0x4db51d[_0xad35('0x19')])return;return rpc[_0x4f122c+_0xad35('0x42')]['update'](_0x4db51d['id'],{'autoreplyExecuted':!![]})['then'](function(_0x526a55){logger[_0xad35('0x12')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x37a258,JSON[_0xad35('0x3d')](_0x526a55));})[_0xad35('0x3e')](function(_0x27894e){logger[_0xad35('0x3f')](_0xad35('0x43'),_0x37a258,JSON[_0xad35('0x3d')](_0x27894e));});})[_0xad35('0x39')](function(){_0x31e9ef[_0xad35('0x15')]();});});}else{return rpc[this[_0xad35('0xf')]+_0xad35('0x3b')]['create'](_0x30d4be)[_0xad35('0x39')](function(){logger['info'](_0xad35('0x13'),_0x37a258,_0x30d4be['body']);})[_0xad35('0x3e')](function(_0x4ebe76){logger['error'](_0xad35('0x13'),_0x37a258,JSON[_0xad35('0x3d')](_0x4ebe76));})[_0xad35('0x41')](function(){Promise[_0xad35('0x44')]()[_0xad35('0x39')](function(){if(_0x5308e8[0x0]!=='2'||_0x4db51d[_0xad35('0x19')])return;return rpc[_0x4f122c+'Interaction']['update'](_0x4db51d['id'],{'autoreplyExecuted':!![]})[_0xad35('0x39')](function(_0x4a6f61){logger[_0xad35('0x12')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x37a258,JSON['stringify'](_0x4a6f61));})[_0xad35('0x3e')](function(_0x2532de){logger[_0xad35('0x3f')](_0xad35('0x43'),_0x37a258,JSON[_0xad35('0x3d')](_0x2532de));});})[_0xad35('0x39')](function(){_0x31e9ef[_0xad35('0x15')]();});});}}}catch(_0x109818){logger[_0xad35('0x3f')](_0xad35('0x13'),_0x37a258,JSON['stringify'](_0x109818));_0x31e9ef['stop']();}};};
\ No newline at end of file
index e14575b..649d945 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7b1=['format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','interaction','catch','error','[%s][CLOSE]\x20%s','stringify','finally','stop','moment','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','[%s][CLOSE]\x20reason\x20%s'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xa7b1,0x1a7));var _0x1a7b=function(_0x12f9b9,_0x25ef19){_0x12f9b9=_0x12f9b9-0x0;var _0x1738d6=_0xa7b1[_0x12f9b9];return _0x1738d6;};'use strict';var moment=require(_0x1a7b('0x0'));var logger=require('../../../../config/logger')(_0x1a7b('0x1'));var rpc={'chatInteraction':require(_0x1a7b('0x2')),'openchannelInteraction':require(_0x1a7b('0x3')),'smsInteraction':require(_0x1a7b('0x4')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x1a7b('0x5')),'whatsappInteraction':require(_0x1a7b('0x6'))};exports[_0x1a7b('0x7')]=function(_0x39d306,_0x39b078,_0x58bbee,_0x196a5e){return function(_0x4a9627){try{logger['info'](_0x1a7b('0x8'),_0x39d306,_0x39b078[0x0]);var _0x2b1fac={'closed':0x1,'closedAt':moment()[_0x1a7b('0x9')](_0x1a7b('0xa')),'closeReason':_0x1a7b('0xb'),'disposition':_0x39b078[0x0]};if(rpc[_0x196a5e['channel']+'Interaction']){rpc[_0x196a5e[_0x1a7b('0xc')]+_0x1a7b('0xd')][_0x1a7b('0xe')](_0x196a5e['interaction']['id'],_0x2b1fac)[_0x1a7b('0xf')](function(_0x327c48){logger['info'](_0x1a7b('0x10'),_0x39d306,_0x196a5e[_0x1a7b('0x11')]['id']);})[_0x1a7b('0x12')](function(_0x60cf3){logger[_0x1a7b('0x13')](_0x1a7b('0x14'),_0x39d306,JSON[_0x1a7b('0x15')](_0x60cf3));})[_0x1a7b('0x16')](function(){_0x4a9627[_0x1a7b('0x17')]();});}}catch(_0xdb6341){logger[_0x1a7b('0x13')](_0x1a7b('0x14'),_0x39d306,JSON[_0x1a7b('0x15')](_0xdb6341));_0x4a9627[_0x1a7b('0x17')]();}};};
\ No newline at end of file
+var _0x8369=['format','YYYY-MM-DD\x20HH:mm:ss','channel','Interaction','interaction','then','info','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error','[%s][CLOSE]\x20%s','stringify','finally','stop','moment','../../../../config/logger','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction','[%s][CLOSE]\x20reason\x20%s'];(function(_0x5dee20,_0x56b1c1){var _0x5b3525=function(_0x452f46){while(--_0x452f46){_0x5dee20['push'](_0x5dee20['shift']());}};_0x5b3525(++_0x56b1c1);}(_0x8369,0x10b));var _0x9836=function(_0x4a6aa3,_0x14663b){_0x4a6aa3=_0x4a6aa3-0x0;var _0x24e2be=_0x8369[_0x4a6aa3];return _0x24e2be;};'use strict';var moment=require(_0x9836('0x0'));var logger=require(_0x9836('0x1'))(_0x9836('0x2'));var rpc={'chatInteraction':require(_0x9836('0x3')),'openchannelInteraction':require(_0x9836('0x4')),'smsInteraction':require(_0x9836('0x5')),'mailInteraction':require(_0x9836('0x6')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x9836('0x7'))};exports['consequence']=function(_0x188996,_0x3c5846,_0x4e937c,_0x33ac6d){return function(_0x2e4979){try{logger['info'](_0x9836('0x8'),_0x188996,_0x3c5846[0x0]);var _0x3007ed={'closed':0x1,'closedAt':moment()[_0x9836('0x9')](_0x9836('0xa')),'closeReason':'system','disposition':_0x3c5846[0x0]};if(rpc[_0x33ac6d[_0x9836('0xb')]+_0x9836('0xc')]){rpc[_0x33ac6d[_0x9836('0xb')]+_0x9836('0xc')]['update'](_0x33ac6d[_0x9836('0xd')]['id'],_0x3007ed)[_0x9836('0xe')](function(_0xf1819d){logger[_0x9836('0xf')](_0x9836('0x10'),_0x188996,_0x33ac6d['interaction']['id']);})[_0x9836('0x11')](function(_0x357e64){logger[_0x9836('0x12')](_0x9836('0x13'),_0x188996,JSON[_0x9836('0x14')](_0x357e64));})[_0x9836('0x15')](function(){_0x2e4979[_0x9836('0x16')]();});}}catch(_0x32e6c2){logger['error'](_0x9836('0x13'),_0x188996,JSON[_0x9836('0x14')](_0x32e6c2));_0x2e4979[_0x9836('0x16')]();}};};
\ No newline at end of file
index 6b241c3..c2b7742 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5dd=['phone','ChatWebsiteId','account','upperFirst','InteractionId','created','isEmpty','body','getMustacheRender','Message','create','then','catch','error','stringify','info','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','textRequest','result','providerName','dialogflow','providerResponse','metadata','lodash','moment','apiai-promise','md5','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp'];(function(_0x5c14f6,_0x2979d8){var _0x4949b3=function(_0xcc4206){while(--_0xcc4206){_0x5c14f6['push'](_0x5c14f6['shift']());}};_0x4949b3(++_0x2979d8);}(_0xb5dd,0xd9));var _0xdb5d=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xb5dd[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0xdb5d('0x0'));var moment=require(_0xdb5d('0x1'));var apiai=require(_0xdb5d('0x2'));var md5=require(_0xdb5d('0x3'));var utils=require(_0xdb5d('0x4'));var logger=require('../../../../config/logger')(_0xdb5d('0x5'));var rpc={'chatMessage':require(_0xdb5d('0x6')),'openchannelMessage':require(_0xdb5d('0x7')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xdb5d('0x8')),'faxMessage':require(_0xdb5d('0x9')),'whatsappMessage':require(_0xdb5d('0xa'))};exports[_0xdb5d('0xb')]=function(_0x2d980b,_0x89fa9e){return function(_0x344631){try{if(!_[_0xdb5d('0xc')](this[_0xdb5d('0xd')][_0xdb5d('0xe')])){logger['info'](_0xdb5d('0xf'),_0x2d980b,_0xdb5d('0x10'));return _0x344631[_0xdb5d('0x11')]();}var _0x4fb3ab={'ContactId':this['contact']['id'],'sentAt':moment()[_0xdb5d('0x12')](_0xdb5d('0x13')),'direction':_0xdb5d('0x14')};if(this['channel']==='sms'||this[_0xdb5d('0x15')]===_0xdb5d('0x16')){_0x4fb3ab[_0xdb5d('0x17')]=this[_0xdb5d('0xd')][_0xdb5d('0x17')];}var _0x114c34=this[_0xdb5d('0x15')];if(_0x114c34==='chat'){_0x4fb3ab[_0xdb5d('0x18')]=this[_0xdb5d('0x19')]['id'];}else{_0x4fb3ab[_[_0xdb5d('0x1a')](_0x114c34)+'AccountId']=this[_0xdb5d('0x19')]['id'];}_0x4fb3ab[_[_0xdb5d('0x1a')](_0x114c34)+_0xdb5d('0x1b')]=this['interaction']['id'];if(this['interaction'][_0xdb5d('0x1c')]){var _0x5d334c=_0x89fa9e[0x2];if(!_[_0xdb5d('0x1d')](_0x5d334c)){_0x4fb3ab[_0xdb5d('0x1e')]=utils[_0xdb5d('0x1f')](_0x5d334c,this);return rpc[_0x114c34+_0xdb5d('0x20')][_0xdb5d('0x21')](_0x4fb3ab)[_0xdb5d('0x22')](function(_0x427bf7){logger['info'](_0xdb5d('0xf'),_0x2d980b,_0x4fb3ab['body']);})[_0xdb5d('0x23')](function(_0x405d3d){logger[_0xdb5d('0x24')](_0xdb5d('0xf'),_0x2d980b,JSON[_0xdb5d('0x25')](_0x405d3d));})['finally'](function(){logger[_0xdb5d('0x26')](_0xdb5d('0x27'),_0x2d980b);_0x344631['stop']();});}else{logger['info'](_0xdb5d('0x28'),_0x2d980b);_0x344631[_0xdb5d('0x29')]();}}else{var _0x598a03=this;var _0x2e6b0c=apiai(_0x89fa9e[0x0],{'language':_0x89fa9e[0x1]||'en'});return _0x2e6b0c[_0xdb5d('0x2a')](this['message'][_0xdb5d('0x1e')],{'sessionId':md5(this['interaction']['id'])})[_0xdb5d('0x22')](function(_0x4c6a0a){_0x598a03[_0xdb5d('0x1e')]['dialogflow']=_0x4c6a0a;_0x4fb3ab['body']=_0x4c6a0a[_0xdb5d('0x2b')]['fulfillment']['speech'];_0x4fb3ab[_0xdb5d('0x2c')]=_0xdb5d('0x2d');_0x4fb3ab[_0xdb5d('0x2e')]=JSON[_0xdb5d('0x25')](_0x4c6a0a);return rpc[_0x114c34+_0xdb5d('0x20')]['create'](_0x4fb3ab)[_0xdb5d('0x22')](function(_0xd966ed){logger[_0xdb5d('0x26')](_0xdb5d('0xf'),_0x2d980b,_0x4fb3ab[_0xdb5d('0x1e')]);if(_0x4c6a0a[_0xdb5d('0x2b')][_0xdb5d('0x2f')]['endConversation']){_0x344631[_0xdb5d('0x11')]();}else{_0x344631[_0xdb5d('0x29')]();}})[_0xdb5d('0x23')](function(_0x528304){logger['error'](_0xdb5d('0xf'),_0x2d980b,JSON['stringify'](_0x528304));_0x344631[_0xdb5d('0x11')]();});})[_0xdb5d('0x23')](function(_0x3affd3){logger[_0xdb5d('0x24')](_0xdb5d('0xf'),_0x2d980b,_0x3affd3['message']);_0x344631['next']();});}}catch(_0x16ddea){logger[_0xdb5d('0x24')](_0xdb5d('0xf'),_0x2d980b,JSON[_0xdb5d('0x25')](_0x16ddea));_0x344631[_0xdb5d('0x29')]();}};};
\ No newline at end of file
+var _0xdb7e=['interaction','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','isEmpty','body','getMustacheRender','Message','error','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','message','then','dialogflow','fulfillment','speech','providerName','providerResponse','stringify','create','result','catch','lodash','moment','apiai-promise','./utils','../../../../config/logger','routing','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms'];(function(_0xd76d5f,_0x2aeadd){var _0x38f169=function(_0x2d7598){while(--_0x2d7598){_0xd76d5f['push'](_0xd76d5f['shift']());}};_0x38f169(++_0x2aeadd);}(_0xdb7e,0x11a));var _0xedb7=function(_0x9a0754,_0x3979a7){_0x9a0754=_0x9a0754-0x0;var _0x14363f=_0xdb7e[_0x9a0754];return _0x14363f;};'use strict';var _=require(_0xedb7('0x0'));var moment=require(_0xedb7('0x1'));var apiai=require(_0xedb7('0x2'));var md5=require('md5');var utils=require(_0xedb7('0x3'));var logger=require(_0xedb7('0x4'))(_0xedb7('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0xedb7('0x6')),'mailMessage':require(_0xedb7('0x7')),'smsMessage':require(_0xedb7('0x8')),'faxMessage':require(_0xedb7('0x9')),'whatsappMessage':require(_0xedb7('0xa'))};exports[_0xedb7('0xb')]=function(_0x87bf4b,_0x20a7c7){return function(_0x26774f){try{if(!_[_0xedb7('0xc')](this['interaction'][_0xedb7('0xd')])){logger[_0xedb7('0xe')](_0xedb7('0xf'),_0x87bf4b,_0xedb7('0x10'));return _0x26774f[_0xedb7('0x11')]();}var _0x1d71d9={'ContactId':this[_0xedb7('0x12')]['id'],'sentAt':moment()[_0xedb7('0x13')](_0xedb7('0x14')),'direction':_0xedb7('0x15')};if(this[_0xedb7('0x16')]===_0xedb7('0x17')||this[_0xedb7('0x16')]==='whatsapp'){_0x1d71d9['phone']=this[_0xedb7('0x18')][_0xedb7('0x19')];}var _0x37b169=this[_0xedb7('0x16')];if(_0x37b169===_0xedb7('0x1a')){_0x1d71d9[_0xedb7('0x1b')]=this[_0xedb7('0x1c')]['id'];}else{_0x1d71d9[_[_0xedb7('0x1d')](_0x37b169)+_0xedb7('0x1e')]=this['account']['id'];}_0x1d71d9[_['upperFirst'](_0x37b169)+_0xedb7('0x1f')]=this[_0xedb7('0x18')]['id'];if(this[_0xedb7('0x18')]['created']){var _0x23b06b=_0x20a7c7[0x2];if(!_[_0xedb7('0x20')](_0x23b06b)){_0x1d71d9[_0xedb7('0x21')]=utils[_0xedb7('0x22')](_0x23b06b,this);return rpc[_0x37b169+_0xedb7('0x23')]['create'](_0x1d71d9)['then'](function(_0x3d8f2a){logger[_0xedb7('0xe')](_0xedb7('0xf'),_0x87bf4b,_0x1d71d9[_0xedb7('0x21')]);})['catch'](function(_0x3b8d7f){logger[_0xedb7('0x24')](_0xedb7('0xf'),_0x87bf4b,JSON['stringify'](_0x3b8d7f));})[_0xedb7('0x25')](function(){logger['info'](_0xedb7('0x26'),_0x87bf4b);_0x26774f[_0xedb7('0x27')]();});}else{logger[_0xedb7('0xe')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x87bf4b);_0x26774f['stop']();}}else{var _0x45d7e7=this;var _0x267e55=apiai(_0x20a7c7[0x0],{'language':_0x20a7c7[0x1]||'en'});return _0x267e55['textRequest'](this[_0xedb7('0x28')][_0xedb7('0x21')],{'sessionId':md5(this['interaction']['id'])})[_0xedb7('0x29')](function(_0x581ecb){_0x45d7e7['body'][_0xedb7('0x2a')]=_0x581ecb;_0x1d71d9[_0xedb7('0x21')]=_0x581ecb['result'][_0xedb7('0x2b')][_0xedb7('0x2c')];_0x1d71d9[_0xedb7('0x2d')]=_0xedb7('0x2a');_0x1d71d9[_0xedb7('0x2e')]=JSON[_0xedb7('0x2f')](_0x581ecb);return rpc[_0x37b169+_0xedb7('0x23')][_0xedb7('0x30')](_0x1d71d9)['then'](function(_0x2070b8){logger['info']('[%s][DIALOGFLOW]\x20%s',_0x87bf4b,_0x1d71d9[_0xedb7('0x21')]);if(_0x581ecb[_0xedb7('0x31')]['metadata']['endConversation']){_0x26774f[_0xedb7('0x11')]();}else{_0x26774f['stop']();}})[_0xedb7('0x32')](function(_0x2c5cfe){logger[_0xedb7('0x24')]('[%s][DIALOGFLOW]\x20%s',_0x87bf4b,JSON[_0xedb7('0x2f')](_0x2c5cfe));_0x26774f[_0xedb7('0x11')]();});})[_0xedb7('0x32')](function(_0x2202bd){logger[_0xedb7('0x24')](_0xedb7('0xf'),_0x87bf4b,_0x2202bd['message']);_0x26774f[_0xedb7('0x11')]();});}}catch(_0x5e3da4){logger[_0xedb7('0x24')]('[%s][DIALOGFLOW]\x20%s',_0x87bf4b,JSON[_0xedb7('0x2f')](_0x5e3da4));_0x26774f['stop']();}};};
\ No newline at end of file
index 1aff5ff..aacb90a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa1ae=['bluebird','../../../../config/logger','routing','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','body','Message','create','then','catch','error','[%s][DIALOGFLOWV2]\x20%s','stringify','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','sms','whatsapp','phone','chat','ChatWebsiteId','account','AccountId','upperFirst','InteractionId','created','getMustacheRender','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','replace','SessionsClient','message','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','providerName','providerResponse','fulfillmentText','push','all','stack','lodash','md5'];(function(_0x16ca76,_0x258915){var _0xbfbbad=function(_0x5e1266){while(--_0x5e1266){_0x16ca76['push'](_0x16ca76['shift']());}};_0xbfbbad(++_0x258915);}(_0xa1ae,0x170));var _0xea1a=function(_0x5371e0,_0x188058){_0x5371e0=_0x5371e0-0x0;var _0x433319=_0xa1ae[_0x5371e0];return _0x433319;};'use strict';var _=require(_0xea1a('0x0'));var dialogflow=require('dialogflow');var md5=require(_0xea1a('0x1'));var moment=require('moment');var Promise=require(_0xea1a('0x2'));var logger=require(_0xea1a('0x3'))(_0xea1a('0x4'));var utils=require(_0xea1a('0x5'));var rpc={'chatMessage':require(_0xea1a('0x6')),'openchannelMessage':require(_0xea1a('0x7')),'mailMessage':require(_0xea1a('0x8')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0xea1a('0x9')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x5d0547,_0x5057f3,_0x329cdc,_0x23dc4f){return new Promise(function(_0x2c10aa,_0x529afe){var _0x427952=_['clone'](_0x329cdc);_0x427952[_0xea1a('0xa')]=_0x23dc4f;return rpc[_0x5057f3+_0xea1a('0xb')][_0xea1a('0xc')](_0x427952)[_0xea1a('0xd')](function(){logger['info']('[%s][DIALOGFLOWV2]\x20%s',_0x5d0547,_0x427952[_0xea1a('0xa')]);_0x2c10aa();})[_0xea1a('0xe')](function(_0x5b8438){logger[_0xea1a('0xf')](_0xea1a('0x10'),_0x5d0547,JSON[_0xea1a('0x11')](_0x5b8438));_0x529afe(_0x5b8438);});});}exports[_0xea1a('0x12')]=function(_0x21abec,_0x36bdae){return function(_0x5318b5){try{if(!_[_0xea1a('0x13')](this[_0xea1a('0x14')][_0xea1a('0x15')])){logger[_0xea1a('0x16')]('[%s][DIALOGFLOWV2]\x20%s',_0x21abec,_0xea1a('0x17'));return _0x5318b5[_0xea1a('0x18')]();}var _0x1a7a7f={'ContactId':this[_0xea1a('0x19')]['id'],'sentAt':moment()[_0xea1a('0x1a')](_0xea1a('0x1b')),'direction':_0xea1a('0x1c')};if(this[_0xea1a('0x1d')]===_0xea1a('0x1e')||this[_0xea1a('0x1d')]===_0xea1a('0x1f')){_0x1a7a7f['phone']=this[_0xea1a('0x14')][_0xea1a('0x20')];}var _0x1a2512=this[_0xea1a('0x1d')];if(_0x1a2512===_0xea1a('0x21')){_0x1a7a7f[_0xea1a('0x22')]=this[_0xea1a('0x23')]['id'];}else{_0x1a7a7f[_['upperFirst'](_0x1a2512)+_0xea1a('0x24')]=this[_0xea1a('0x23')]['id'];}_0x1a7a7f[_[_0xea1a('0x25')](_0x1a2512)+_0xea1a('0x26')]=this[_0xea1a('0x14')]['id'];if(this[_0xea1a('0x14')][_0xea1a('0x27')]){var _0x2a0aa7=_0x36bdae[0x4];if(!_['isEmpty'](_0x2a0aa7)){_0x1a7a7f['body']=utils[_0xea1a('0x28')](_0x2a0aa7,this);return rpc[_0x1a2512+'Message'][_0xea1a('0xc')](_0x1a7a7f)[_0xea1a('0xd')](function(_0x3e0c7c){logger[_0xea1a('0x16')]('[%s][DIALOGFLOWV2]\x20%s',_0x21abec,_0x1a7a7f['body']);})['catch'](function(_0x2087d9){logger[_0xea1a('0xf')]('[%s][DIALOGFLOWV2]\x20%s',_0x21abec,JSON[_0xea1a('0x11')](_0x2087d9));})[_0xea1a('0x29')](function(){logger[_0xea1a('0x16')](_0xea1a('0x2a'),_0x21abec);_0x5318b5[_0xea1a('0x2b')]();});}else{logger['info'](_0xea1a('0x2c'),_0x21abec);_0x5318b5[_0xea1a('0x2b')]();}}else{var _0x521b7e=this;var _0x276ca8=_0x36bdae[0x2][_0xea1a('0x2d')](/\\n/g,'\x0a');var _0x5586ff={'credentials':{'private_key':_0x276ca8,'client_email':_0x36bdae[0x1]}};var _0x410023=new dialogflow[(_0xea1a('0x2e'))](_0x5586ff);var _0xbee85=_0x410023['sessionPath'](_0x36bdae[0x0],md5(_0x521b7e[_0xea1a('0x14')]['id']));var _0x499d10={'session':_0xbee85,'queryInput':{'text':{'text':_0x521b7e[_0xea1a('0x2f')][_0xea1a('0xa')],'languageCode':_0x36bdae[0x3]||'en'}}};return _0x410023['detectIntent'](_0x499d10)[_0xea1a('0xd')](function(_0xc9181c){if(_0xc9181c&&_0xc9181c[_0xea1a('0x30')]){_0x521b7e[_0xea1a('0xa')][_0xea1a('0x31')]=_0xc9181c;var _0x338918=_0xc9181c[0x0];var _0x55ffea=_0x338918[_0xea1a('0x32')]['diagnosticInfo']&&_0x338918['queryResult'][_0xea1a('0x33')][_0xea1a('0x34')]?_0x338918['queryResult'][_0xea1a('0x33')]['fields'][_0xea1a('0x35')]['boolValue']:![];_0x521b7e['body']['DIALOGFLOWV2_ACTION']=_0x338918[_0xea1a('0x32')]['action'];_0x521b7e[_0xea1a('0xa')][_0xea1a('0x36')]=_0x338918[_0xea1a('0x32')][_0xea1a('0x37')];_0x521b7e['body'][_0xea1a('0x38')]=_0x338918['queryResult']['diagnosticInfo']&&_0x338918['queryResult'][_0xea1a('0x33')][_0xea1a('0x34')]?_0x338918[_0xea1a('0x32')][_0xea1a('0x33')][_0xea1a('0x34')][_0xea1a('0x35')]['boolValue']:![];_0x521b7e['body'][_0xea1a('0x39')]=_0x338918[_0xea1a('0x32')][_0xea1a('0x3a')]['name'];_0x521b7e[_0xea1a('0xa')][_0xea1a('0x3b')]=_0x338918[_0xea1a('0x32')][_0xea1a('0x3a')][_0xea1a('0x3c')];_0x521b7e['body'][_0xea1a('0x3d')]=_0x338918[_0xea1a('0x32')]['intent'][_0xea1a('0x3e')];_0x521b7e[_0xea1a('0xa')][_0xea1a('0x3f')]=_0x338918[_0xea1a('0x32')][_0xea1a('0x40')];_0x521b7e[_0xea1a('0xa')][_0xea1a('0x41')]=_0x338918[_0xea1a('0x32')][_0xea1a('0x42')];_0x521b7e[_0xea1a('0xa')][_0xea1a('0x43')]=_0x338918[_0xea1a('0x32')]['intentDetectionConfidence'];_0x1a7a7f[_0xea1a('0x44')]=_0xea1a('0x31');_0x1a7a7f[_0xea1a('0x45')]=JSON[_0xea1a('0x11')](_0xc9181c);var _0x2b2027=[];for(var _0x562c19=0x0;_0x562c19<_0xc9181c[_0xea1a('0x30')];_0x562c19++){var _0x176a0c=_0xc9181c[_0x562c19];if(_0x176a0c&&_0x176a0c[_0xea1a('0x32')]&&_0x176a0c[_0xea1a('0x32')][_0xea1a('0x46')]){_0x2b2027[_0xea1a('0x47')](createMessage(_0x21abec,_0x1a2512,_0x1a7a7f,_0x176a0c[_0xea1a('0x32')][_0xea1a('0x46')]));}}return Promise[_0xea1a('0x48')](_0x2b2027)['then'](function(){if(_0x55ffea){_0x5318b5[_0xea1a('0x18')]();}else{_0x5318b5['stop']();}})[_0xea1a('0xe')](function(_0x107fac){logger[_0xea1a('0xf')](_0xea1a('0x10'),_0x21abec,JSON['stringify'](_0x107fac));_0x5318b5[_0xea1a('0x18')]();});}})[_0xea1a('0xe')](function(_0x32dcc4){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x21abec,_0x32dcc4[_0xea1a('0x2f')],_0x32dcc4[_0xea1a('0x49')]);_0x5318b5[_0xea1a('0x18')]();});}}catch(_0x1ec154){logger[_0xea1a('0xf')]('[%s][DIALOGFLOWV2]\x20%s',_0x21abec,JSON[_0xea1a('0x11')](_0x1ec154));_0x5318b5[_0xea1a('0x2b')]();}};};
\ No newline at end of file
+var _0x330c=['fulfillmentText','push','all','message','stack','lodash','bluebird','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','Message','create','then','[%s][DIALOGFLOWV2]\x20%s','error','stringify','consequence','isNil','interaction','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','upperFirst','AccountId','account','InteractionId','created','isEmpty','getMustacheRender','finally','info','stop','replace','SessionsClient','sessionPath','dialogflowV2','diagnosticInfo','queryResult','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_INTENTDISPLAYNAME','DIALOGFLOWV2_ISFALLBACKINTENT','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','providerResponse'];(function(_0x5282ab,_0x2c20d3){var _0xac53ff=function(_0x29d2c5){while(--_0x29d2c5){_0x5282ab['push'](_0x5282ab['shift']());}};_0xac53ff(++_0x2c20d3);}(_0x330c,0x111));var _0xc330=function(_0xb47ffb,_0x4a6f2d){_0xb47ffb=_0xb47ffb-0x0;var _0x20eb9f=_0x330c[_0xb47ffb];return _0x20eb9f;};'use strict';var _=require(_0xc330('0x0'));var dialogflow=require('dialogflow');var md5=require('md5');var moment=require('moment');var Promise=require(_0xc330('0x1'));var logger=require('../../../../config/logger')('routing');var utils=require('./utils');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xc330('0x2')),'smsMessage':require(_0xc330('0x3')),'faxMessage':require(_0xc330('0x4')),'whatsappMessage':require(_0xc330('0x5'))};function createMessage(_0x5adc0d,_0x5ee094,_0x128d90,_0xa2cf43){return new Promise(function(_0x47040b,_0x184b35){var _0x1f9c36=_[_0xc330('0x6')](_0x128d90);_0x1f9c36[_0xc330('0x7')]=_0xa2cf43;return rpc[_0x5ee094+_0xc330('0x8')][_0xc330('0x9')](_0x1f9c36)[_0xc330('0xa')](function(){logger['info'](_0xc330('0xb'),_0x5adc0d,_0x1f9c36[_0xc330('0x7')]);_0x47040b();})['catch'](function(_0x56a22e){logger[_0xc330('0xc')](_0xc330('0xb'),_0x5adc0d,JSON[_0xc330('0xd')](_0x56a22e));_0x184b35(_0x56a22e);});});}exports[_0xc330('0xe')]=function(_0x410edd,_0x24b9c4){return function(_0x32e013){try{if(!_[_0xc330('0xf')](this[_0xc330('0x10')]['UserId'])){logger['info'](_0xc330('0xb'),_0x410edd,_0xc330('0x11'));return _0x32e013[_0xc330('0x12')]();}var _0x3dff89={'ContactId':this[_0xc330('0x13')]['id'],'sentAt':moment()[_0xc330('0x14')](_0xc330('0x15')),'direction':_0xc330('0x16')};if(this[_0xc330('0x17')]===_0xc330('0x18')||this[_0xc330('0x17')]===_0xc330('0x19')){_0x3dff89[_0xc330('0x1a')]=this[_0xc330('0x10')][_0xc330('0x1a')];}var _0x3ed102=this['channel'];if(_0x3ed102===_0xc330('0x1b')){_0x3dff89['ChatWebsiteId']=this['account']['id'];}else{_0x3dff89[_[_0xc330('0x1c')](_0x3ed102)+_0xc330('0x1d')]=this[_0xc330('0x1e')]['id'];}_0x3dff89[_[_0xc330('0x1c')](_0x3ed102)+_0xc330('0x1f')]=this[_0xc330('0x10')]['id'];if(this[_0xc330('0x10')][_0xc330('0x20')]){var _0x19f994=_0x24b9c4[0x4];if(!_[_0xc330('0x21')](_0x19f994)){_0x3dff89[_0xc330('0x7')]=utils[_0xc330('0x22')](_0x19f994,this);return rpc[_0x3ed102+_0xc330('0x8')]['create'](_0x3dff89)[_0xc330('0xa')](function(_0x3bdd6e){logger['info'](_0xc330('0xb'),_0x410edd,_0x3dff89[_0xc330('0x7')]);})['catch'](function(_0x893620){logger[_0xc330('0xc')]('[%s][DIALOGFLOWV2]\x20%s',_0x410edd,JSON['stringify'](_0x893620));})[_0xc330('0x23')](function(){logger[_0xc330('0x24')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x410edd);_0x32e013[_0xc330('0x25')]();});}else{logger[_0xc330('0x24')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x410edd);_0x32e013[_0xc330('0x25')]();}}else{var _0x3badba=this;var _0x338d6a=_0x24b9c4[0x2][_0xc330('0x26')](/\\n/g,'\x0a');var _0x179ddc={'credentials':{'private_key':_0x338d6a,'client_email':_0x24b9c4[0x1]}};var _0x1dde46=new dialogflow[(_0xc330('0x27'))](_0x179ddc);var _0x3c7bf8=_0x1dde46[_0xc330('0x28')](_0x24b9c4[0x0],md5(_0x3badba[_0xc330('0x10')]['id']));var _0x641149={'session':_0x3c7bf8,'queryInput':{'text':{'text':_0x3badba['message'][_0xc330('0x7')],'languageCode':_0x24b9c4[0x3]||'en'}}};return _0x1dde46['detectIntent'](_0x641149)[_0xc330('0xa')](function(_0x92d93d){if(_0x92d93d&&_0x92d93d['length']){_0x3badba[_0xc330('0x7')][_0xc330('0x29')]=_0x92d93d;var _0x3fc385=_0x92d93d[0x0];var _0x29a56d=_0x3fc385['queryResult'][_0xc330('0x2a')]&&_0x3fc385[_0xc330('0x2b')]['diagnosticInfo'][_0xc330('0x2c')]?_0x3fc385[_0xc330('0x2b')][_0xc330('0x2a')][_0xc330('0x2c')][_0xc330('0x2d')][_0xc330('0x2e')]:![];_0x3badba[_0xc330('0x7')][_0xc330('0x2f')]=_0x3fc385[_0xc330('0x2b')][_0xc330('0x30')];_0x3badba[_0xc330('0x7')][_0xc330('0x31')]=_0x3fc385[_0xc330('0x2b')][_0xc330('0x32')];_0x3badba[_0xc330('0x7')][_0xc330('0x33')]=_0x3fc385[_0xc330('0x2b')]['diagnosticInfo']&&_0x3fc385[_0xc330('0x2b')][_0xc330('0x2a')][_0xc330('0x2c')]?_0x3fc385[_0xc330('0x2b')]['diagnosticInfo'][_0xc330('0x2c')][_0xc330('0x2d')][_0xc330('0x2e')]:![];_0x3badba['body'][_0xc330('0x34')]=_0x3fc385['queryResult'][_0xc330('0x35')][_0xc330('0x36')];_0x3badba['body'][_0xc330('0x37')]=_0x3fc385[_0xc330('0x2b')]['intent']['displayName'];_0x3badba[_0xc330('0x7')][_0xc330('0x38')]=_0x3fc385['queryResult'][_0xc330('0x35')]['isFallback'];_0x3badba[_0xc330('0x7')]['DIALOGFLOWV2_LANGUAGECODE']=_0x3fc385[_0xc330('0x2b')][_0xc330('0x39')];_0x3badba['body'][_0xc330('0x3a')]=_0x3fc385[_0xc330('0x2b')][_0xc330('0x3b')];_0x3badba[_0xc330('0x7')][_0xc330('0x3c')]=_0x3fc385[_0xc330('0x2b')]['intentDetectionConfidence'];_0x3dff89['providerName']='dialogflowV2';_0x3dff89[_0xc330('0x3d')]=JSON[_0xc330('0xd')](_0x92d93d);var _0x5349be=[];for(var _0x257f5a=0x0;_0x257f5a<_0x92d93d['length'];_0x257f5a++){var _0x7408f6=_0x92d93d[_0x257f5a];if(_0x7408f6&&_0x7408f6[_0xc330('0x2b')]&&_0x7408f6[_0xc330('0x2b')][_0xc330('0x3e')]){_0x5349be[_0xc330('0x3f')](createMessage(_0x410edd,_0x3ed102,_0x3dff89,_0x7408f6['queryResult'][_0xc330('0x3e')]));}}return Promise[_0xc330('0x40')](_0x5349be)['then'](function(){if(_0x29a56d){_0x32e013['next']();}else{_0x32e013[_0xc330('0x25')]();}})['catch'](function(_0x1964d1){logger[_0xc330('0xc')](_0xc330('0xb'),_0x410edd,JSON[_0xc330('0xd')](_0x1964d1));_0x32e013[_0xc330('0x12')]();});}})['catch'](function(_0x41b8d0){logger[_0xc330('0xc')]('[%s][DIALOGFLOWV2]\x20%s',_0x410edd,_0x41b8d0[_0xc330('0x41')],_0x41b8d0[_0xc330('0x42')]);_0x32e013['next']();});}}catch(_0x4f284e){logger[_0xc330('0xc')]('[%s][DIALOGFLOWV2]\x20%s',_0x410edd,JSON[_0xc330('0xd')](_0x4f284e));_0x32e013[_0xc330('0x25')]();}};};
\ No newline at end of file
index 70be554..7c12fe9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x930b=['rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','stringify','lodash','html-to-text','./utils','../../../../config/logger','routing','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','fromString','getMustacheRender','replace','validate','length','error','[%s][GOTOIF]\x20%s','map','message','join','stop','condition','priorityTrue','info','findIndex'];(function(_0x20ef64,_0x4a8fe9){var _0x3707d8=function(_0x5b9a88){while(--_0x5b9a88){_0x20ef64['push'](_0x20ef64['shift']());}};_0x3707d8(++_0x4a8fe9);}(_0x930b,0x161));var _0xb930=function(_0x465556,_0x599881){_0x465556=_0x465556-0x0;var _0x5f3ae7=_0x930b[_0x465556];return _0x5f3ae7;};'use strict';var schema=require('validate');var _=require(_0xb930('0x0'));var htmlToText=require(_0xb930('0x1'));var utils=require(_0xb930('0x2'));var logger=require(_0xb930('0x3'))(_0xb930('0x4'));var gotoif=schema({'condition':{'type':'string','required':!![],'message':_0xb930('0x5')},'priorityTrue':{'type':_0xb930('0x6'),'message':_0xb930('0x7')},'priorityFalse':{'type':_0xb930('0x6'),'message':_0xb930('0x8')}});exports['consequence']=function(_0x15526b,_0x2f2cd5){return function(_0x2b8761){try{var _0x22cf6f={'condition':htmlToText[_0xb930('0x9')](utils[_0xb930('0xa')](_0x2f2cd5[0x0],this),{'wordwrap':![]})[_0xb930('0xb')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x2f2cd5[0x1],'priorityFalse':_0x2f2cd5[0x2]};var _0x2b72b2=gotoif[_0xb930('0xc')](_0x22cf6f,{'typecast':!![]});if(_0x2b72b2[_0xb930('0xd')]){logger[_0xb930('0xe')](_0xb930('0xf'),_0x15526b,_[_0xb930('0x10')](_0x2b72b2,_0xb930('0x11'))[_0xb930('0x12')](',\x20'));_0x2b8761[_0xb930('0x13')]();}else{try{var _0xc67c8f=eval('('+_0x22cf6f[_0xb930('0x14')]+')');var _0x42f326=_0xc67c8f?_0x22cf6f[_0xb930('0x15')]:_0x22cf6f['priorityFalse'];logger[_0xb930('0x16')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x15526b,_0x22cf6f['condition'],_0xc67c8f,_0x42f326||'next');if(_0x42f326){var _0x4e0b13=_[_0xb930('0x17')](_0x2b8761[_0xb930('0x18')](),{'p':_0x42f326});if(_0x4e0b13>=0x0){logger[_0xb930('0x16')](_0xb930('0x19'),_0x15526b,_0x42f326||_0xb930('0x1a'),_0x4e0b13);_0x2b8761[_0xb930('0x1a')](_0x4e0b13);}else{logger[_0xb930('0x16')](_0xb930('0x1b'),_0x15526b,_0x42f326||_0xb930('0x1a'));_0x2b8761['stop']();}}else{_0x2b8761[_0xb930('0x1a')]();}}catch(_0x175f26){logger['error']('[%s][GOTOIF]\x20eval\x20error:\x20%s',_0x15526b,_0x175f26['message']);_0x2b8761[_0xb930('0x13')]();}}}catch(_0x3f5026){logger['error'](_0xb930('0xf'),_0x15526b,JSON[_0xb930('0x1c')](_0x3f5026));_0x2b8761[_0xb930('0x13')]();}};};
\ No newline at end of file
+var _0x66c0=['priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','fromString','getMustacheRender','replace','length','error','map','condition','priorityTrue','info','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','stop','[%s][GOTOIF]\x20eval\x20error:\x20%s','message','validate','lodash','html-to-text','./utils','../../../../config/logger','routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number'];(function(_0x9677dc,_0x1f6336){var _0x4c9b36=function(_0x2d19a3){while(--_0x2d19a3){_0x9677dc['push'](_0x9677dc['shift']());}};_0x4c9b36(++_0x1f6336);}(_0x66c0,0x1e4));var _0x066c=function(_0x307db7,_0x1a2c8f){_0x307db7=_0x307db7-0x0;var _0x5dbb34=_0x66c0[_0x307db7];return _0x5dbb34;};'use strict';var schema=require(_0x066c('0x0'));var _=require(_0x066c('0x1'));var htmlToText=require(_0x066c('0x2'));var utils=require(_0x066c('0x3'));var logger=require(_0x066c('0x4'))(_0x066c('0x5'));var gotoif=schema({'condition':{'type':_0x066c('0x6'),'required':!![],'message':_0x066c('0x7')},'priorityTrue':{'type':_0x066c('0x8'),'message':_0x066c('0x9')},'priorityFalse':{'type':_0x066c('0x8'),'message':_0x066c('0xa')}});exports[_0x066c('0xb')]=function(_0x42b885,_0x4c5d50){return function(_0x33b35e){try{var _0x39237b={'condition':htmlToText[_0x066c('0xc')](utils[_0x066c('0xd')](_0x4c5d50[0x0],this),{'wordwrap':![]})[_0x066c('0xe')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x4c5d50[0x1],'priorityFalse':_0x4c5d50[0x2]};var _0x508c09=gotoif['validate'](_0x39237b,{'typecast':!![]});if(_0x508c09[_0x066c('0xf')]){logger[_0x066c('0x10')]('[%s][GOTOIF]\x20%s',_0x42b885,_[_0x066c('0x11')](_0x508c09,'message')['join'](',\x20'));_0x33b35e['stop']();}else{try{var _0x14e00f=eval('('+_0x39237b[_0x066c('0x12')]+')');var _0x42cd58=_0x14e00f?_0x39237b[_0x066c('0x13')]:_0x39237b['priorityFalse'];logger[_0x066c('0x14')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x42b885,_0x39237b['condition'],_0x14e00f,_0x42cd58||_0x066c('0x15'));if(_0x42cd58){var _0x4d7e05=_[_0x066c('0x16')](_0x33b35e[_0x066c('0x17')](),{'p':_0x42cd58});if(_0x4d7e05>=0x0){logger[_0x066c('0x14')](_0x066c('0x18'),_0x42b885,_0x42cd58||'next',_0x4d7e05);_0x33b35e[_0x066c('0x15')](_0x4d7e05);}else{logger[_0x066c('0x14')](_0x066c('0x19'),_0x42b885,_0x42cd58||_0x066c('0x15'));_0x33b35e[_0x066c('0x1a')]();}}else{_0x33b35e[_0x066c('0x15')]();}}catch(_0x5d0601){logger[_0x066c('0x10')](_0x066c('0x1b'),_0x42b885,_0x5d0601[_0x066c('0x1c')]);_0x33b35e['stop']();}}}catch(_0x12c765){logger[_0x066c('0x10')]('[%s][GOTOIF]\x20%s',_0x42b885,JSON['stringify'](_0x12c765));_0x33b35e['stop']();}};};
\ No newline at end of file
index 2122de2..f291a64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7079=['next','info','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stop','validate','lodash','routing','number','consequence','length','error','[%s][GOTOP]\x20%s','map','message','join','[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s'];(function(_0x5f4902,_0x1198fb){var _0x743933=function(_0x5e7082){while(--_0x5e7082){_0x5f4902['push'](_0x5f4902['shift']());}};_0x743933(++_0x1198fb);}(_0x7079,0x68));var _0x9707=function(_0x254161,_0x1019e3){_0x254161=_0x254161-0x0;var _0x30b6e7=_0x7079[_0x254161];return _0x30b6e7;};'use strict';var schema=require(_0x9707('0x0'));var _=require(_0x9707('0x1'));var logger=require('../../../../config/logger')(_0x9707('0x2'));var gotop=schema({'priority':{'type':_0x9707('0x3'),'required':!![],'message':'priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'}});exports[_0x9707('0x4')]=function(_0x2435ee,_0x11b496){return function(_0x49896c){try{var _0x1f11c8={'priority':_0x11b496[0x0]};var _0x223a40=gotop[_0x9707('0x0')](_0x1f11c8,{'typecast':!![]});if(_0x223a40[_0x9707('0x5')]){logger[_0x9707('0x6')](_0x9707('0x7'),_0x2435ee,_[_0x9707('0x8')](_0x223a40,_0x9707('0x9'))[_0x9707('0xa')](',\x20'));_0x49896c['stop']();}else{logger['info'](_0x9707('0xb'),_0x2435ee,_0x1f11c8[_0x9707('0xc')]);if(_0x1f11c8[_0x9707('0xc')]){var _0x1d276f=_[_0x9707('0xd')](_0x49896c[_0x9707('0xe')](),{'p':_0x1f11c8[_0x9707('0xc')]});if(_0x1d276f>=0x0){logger['info'](_0x9707('0xf'),_0x2435ee,_0x1f11c8['priority']||_0x9707('0x10'),_0x1d276f);_0x49896c[_0x9707('0x10')](_0x1d276f);}else{logger[_0x9707('0x11')](_0x9707('0x12'),_0x2435ee,_0x1f11c8[_0x9707('0xc')]||'next');_0x49896c[_0x9707('0x13')]();}}else{_0x49896c['next']();}}}catch(_0x3b2de1){logger[_0x9707('0x6')](_0x9707('0x7'),_0x2435ee,JSON['stringify'](_0x3b2de1));_0x49896c[_0x9707('0x13')]();}};};
\ No newline at end of file
+var _0xa261=['findIndex','info','next','[%s][GOTOP]\x20%s','stringify','lodash','../../../../config/logger','routing','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','validate','length','error','map','join','stop','[%s][GOTOP]\x20priority\x20%s','priority'];(function(_0x3e67ec,_0x25ce2f){var _0x473537=function(_0x705897){while(--_0x705897){_0x3e67ec['push'](_0x3e67ec['shift']());}};_0x473537(++_0x25ce2f);}(_0xa261,0xdd));var _0x1a26=function(_0x14f932,_0x1753d0){_0x14f932=_0x14f932-0x0;var _0x27da73=_0xa261[_0x14f932];return _0x27da73;};'use strict';var schema=require('validate');var _=require(_0x1a26('0x0'));var logger=require(_0x1a26('0x1'))(_0x1a26('0x2'));var gotop=schema({'priority':{'type':'number','required':!![],'message':_0x1a26('0x3')}});exports[_0x1a26('0x4')]=function(_0x1814fa,_0x22619a){return function(_0x101202){try{var _0x540ce3={'priority':_0x22619a[0x0]};var _0x20b268=gotop[_0x1a26('0x5')](_0x540ce3,{'typecast':!![]});if(_0x20b268[_0x1a26('0x6')]){logger[_0x1a26('0x7')]('[%s][GOTOP]\x20%s',_0x1814fa,_[_0x1a26('0x8')](_0x20b268,'message')[_0x1a26('0x9')](',\x20'));_0x101202[_0x1a26('0xa')]();}else{logger['info'](_0x1a26('0xb'),_0x1814fa,_0x540ce3['priority']);if(_0x540ce3[_0x1a26('0xc')]){var _0x210e52=_[_0x1a26('0xd')](_0x101202['rules'](),{'p':_0x540ce3['priority']});if(_0x210e52>=0x0){logger[_0x1a26('0xe')]('[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x1814fa,_0x540ce3['priority']||_0x1a26('0xf'),_0x210e52);_0x101202['next'](_0x210e52);}else{logger[_0x1a26('0xe')]('[%s][GOTOP]\x20priority\x20%s\x20not\x20found',_0x1814fa,_0x540ce3['priority']||_0x1a26('0xf'));_0x101202['stop']();}}else{_0x101202[_0x1a26('0xf')]();}}}catch(_0x185e9b){logger[_0x1a26('0x7')](_0x1a26('0x10'),_0x1814fa,JSON[_0x1a26('0x11')](_0x185e9b));_0x101202['stop']();}};};
\ No newline at end of file
index 58f32c5..f0930da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b25=['error','stringify','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/whatsappMessage','getMustacheRender','channel','chat','ChatWebsiteId','account','upperFirst','InteractionId','Message','create','then','info','[%s][MESSAGE]\x20%s','body','next','catch'];(function(_0x2a75d4,_0x5506e2){var _0x539682=function(_0xb7c33b){while(--_0xb7c33b){_0x2a75d4['push'](_0x2a75d4['shift']());}};_0x539682(++_0x5506e2);}(_0x0b25,0x155));var _0x50b2=function(_0x2aa48b,_0x5a4446){_0x2aa48b=_0x2aa48b-0x0;var _0x48caf8=_0x0b25[_0x2aa48b];return _0x48caf8;};'use strict';var _=require(_0x50b2('0x0'));var utils=require(_0x50b2('0x1'));var logger=require(_0x50b2('0x2'))(_0x50b2('0x3'));var rpc={'chatMessage':require(_0x50b2('0x4')),'openchannelMessage':require(_0x50b2('0x5')),'mailMessage':require(_0x50b2('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x50b2('0x7'))};exports['consequence']=function(_0x1df99a,_0x1b77e0){return function(_0x3cbc65){try{var _0x29278f={'body':utils[_0x50b2('0x8')](_0x1b77e0[0x0],this),'ContactId':this['contact']['id']};if(this[_0x50b2('0x9')]===_0x50b2('0xa')){_0x29278f[_0x50b2('0xb')]=this[_0x50b2('0xc')]['id'];}else{_0x29278f[_['upperFirst'](this[_0x50b2('0x9')])+'AccountId']=this[_0x50b2('0xc')]['id'];}_0x29278f[_[_0x50b2('0xd')](this['channel'])+_0x50b2('0xe')]=this['interaction']['id'];if(rpc[this['channel']+_0x50b2('0xf')]){return rpc[this[_0x50b2('0x9')]+_0x50b2('0xf')][_0x50b2('0x10')](_0x29278f)[_0x50b2('0x11')](function(_0x3ab9e6){logger[_0x50b2('0x12')](_0x50b2('0x13'),_0x1df99a,_0x29278f[_0x50b2('0x14')]);_0x3cbc65[_0x50b2('0x15')]();})[_0x50b2('0x16')](function(_0x4d6650){logger[_0x50b2('0x17')](_0x50b2('0x13'),_0x1df99a,JSON[_0x50b2('0x18')](_0x4d6650));_0x3cbc65['stop']();});}}catch(_0x3c3fd6){logger[_0x50b2('0x17')](_0x50b2('0x13'),_0x1df99a,JSON[_0x50b2('0x18')](_0x3c3fd6));_0x3cbc65[_0x50b2('0x19')]();}};};
\ No newline at end of file
+var _0xd9e5=['../../rpc/mailMessage','../../rpc/faxMessage','getMustacheRender','contact','channel','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','interaction','create','then','info','[%s][MESSAGE]\x20%s','body','next','catch','error','stringify','stop','lodash','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xd9e5,0x1b6));var _0x5d9e=function(_0x5bae7b,_0x5b6b63){_0x5bae7b=_0x5bae7b-0x0;var _0x8ab780=_0xd9e5[_0x5bae7b];return _0x8ab780;};'use strict';var _=require(_0x5d9e('0x0'));var utils=require('./utils');var logger=require(_0x5d9e('0x1'))('routing');var rpc={'chatMessage':require(_0x5d9e('0x2')),'openchannelMessage':require(_0x5d9e('0x3')),'mailMessage':require(_0x5d9e('0x4')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x5d9e('0x5')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports['consequence']=function(_0x5800be,_0x5e8fdd){return function(_0x56e49c){try{var _0x162076={'body':utils[_0x5d9e('0x6')](_0x5e8fdd[0x0],this),'ContactId':this[_0x5d9e('0x7')]['id']};if(this[_0x5d9e('0x8')]===_0x5d9e('0x9')){_0x162076[_0x5d9e('0xa')]=this[_0x5d9e('0xb')]['id'];}else{_0x162076[_[_0x5d9e('0xc')](this['channel'])+_0x5d9e('0xd')]=this[_0x5d9e('0xb')]['id'];}_0x162076[_[_0x5d9e('0xc')](this[_0x5d9e('0x8')])+_0x5d9e('0xe')]=this[_0x5d9e('0xf')]['id'];if(rpc[this[_0x5d9e('0x8')]+'Message']){return rpc[this[_0x5d9e('0x8')]+'Message'][_0x5d9e('0x10')](_0x162076)[_0x5d9e('0x11')](function(_0x398be7){logger[_0x5d9e('0x12')](_0x5d9e('0x13'),_0x5800be,_0x162076[_0x5d9e('0x14')]);_0x56e49c[_0x5d9e('0x15')]();})[_0x5d9e('0x16')](function(_0x5bf10a){logger[_0x5d9e('0x17')](_0x5d9e('0x13'),_0x5800be,JSON[_0x5d9e('0x18')](_0x5bf10a));_0x56e49c[_0x5d9e('0x19')]();});}}catch(_0x2d9a38){logger[_0x5d9e('0x17')](_0x5d9e('0x13'),_0x5800be,JSON[_0x5d9e('0x18')](_0x2d9a38));_0x56e49c[_0x5d9e('0x19')]();}};};
\ No newline at end of file
index 8001ef5..68ff912 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadcb=['../../../../config/logger','routing','info','[%s][NOOP]\x20%s','getMustacheRender','next','stop','./utils'];(function(_0x2deccf,_0x172359){var _0x273d60=function(_0x48b7bd){while(--_0x48b7bd){_0x2deccf['push'](_0x2deccf['shift']());}};_0x273d60(++_0x172359);}(_0xadcb,0xbf));var _0xbadc=function(_0x2cbc04,_0x1a059f){_0x2cbc04=_0x2cbc04-0x0;var _0x23c5ae=_0xadcb[_0x2cbc04];return _0x23c5ae;};'use strict';var utils=require(_0xbadc('0x0'));var logger=require(_0xbadc('0x1'))(_0xbadc('0x2'));exports['consequence']=function(_0x58b89d,_0xc2bbd7){return function(_0x5d0c97){try{logger[_0xbadc('0x3')](_0xbadc('0x4'),_0x58b89d,utils[_0xbadc('0x5')](_0xc2bbd7[0x0],this));_0x5d0c97[_0xbadc('0x6')]();}catch(_0x132253){logger['error'](_0xbadc('0x4'),_0x58b89d,JSON['stringify'](_0x132253));_0x5d0c97[_0xbadc('0x7')]();}};};
\ No newline at end of file
+var _0x766b=['consequence','info','[%s][NOOP]\x20%s','getMustacheRender','next','error','stringify','stop','./utils','../../../../config/logger','routing'];(function(_0x33b40c,_0x38e315){var _0x3fd36f=function(_0x10f41c){while(--_0x10f41c){_0x33b40c['push'](_0x33b40c['shift']());}};_0x3fd36f(++_0x38e315);}(_0x766b,0x13c));var _0xb766=function(_0x1c7b84,_0x26ee84){_0x1c7b84=_0x1c7b84-0x0;var _0x5013ec=_0x766b[_0x1c7b84];return _0x5013ec;};'use strict';var utils=require(_0xb766('0x0'));var logger=require(_0xb766('0x1'))(_0xb766('0x2'));exports[_0xb766('0x3')]=function(_0x5d03e5,_0x3a29a2){return function(_0xdaa2d2){try{logger[_0xb766('0x4')](_0xb766('0x5'),_0x5d03e5,utils[_0xb766('0x6')](_0x3a29a2[0x0],this));_0xdaa2d2[_0xb766('0x7')]();}catch(_0x8726ff){logger[_0xb766('0x8')](_0xb766('0x5'),_0x5d03e5,JSON[_0xb766('0x9')](_0x8726ff));_0xdaa2d2[_0xb766('0xa')]();}};};
\ No newline at end of file
index 2c44b8e..b1f844c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x64b7=['list','channel','InteractionId','interaction','upperFirst','MessageId','message','chat','AccountId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','error','create\x20queue\x20report','accepted','Interaction','update','update\x20queue\x20report','toLowerCase','consequence','length','map','join','Queues','timeout','createQueue','atimeout','[%s][QUEUE]\x20ROUTING\x20STOPPED','close','rules','stop','[%s][QUEUE]\x20APPLICATION\x20END','next','rrmemory','beepall','stack','validate','lodash','util','seq-queue','moment','../../../../config/environment','../../../../config/logger','routing','defaults','redis','localhost','socket.io-emitter','queue_id','account','joinAt','emit','clone','push','capitalize','%sQueuesWaitingInteractions','pick','format','save','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','waiting','body','from','YYYY-MM-DD\x20HH:mm:ss','contact'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x64b7,0x78));var _0x764b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x64b7[_0x3dd15e];return _0x231fd0;};'use strict';var schema=require(_0x764b('0x0'));var _=require(_0x764b('0x1'));var util=require(_0x764b('0x2'));var seqqueue=require(_0x764b('0x3'));var moment=require(_0x764b('0x4'));var Redis=require('ioredis');var config=require(_0x764b('0x5'));var logger=require(_0x764b('0x6'))(_0x764b('0x7'));var strategy=require('./strategy');config['redis']=_[_0x764b('0x8')](config[_0x764b('0x9')],{'host':_0x764b('0xa'),'port':0x18eb});var io=require(_0x764b('0xb'))(new Redis(config[_0x764b('0x9')]));var attributes=['id',_0x764b('0xc'),_0x764b('0xd'),'queue','from',_0x764b('0xe')];function emit(_0x3dcf91,_0x1cec4c,_0x9e15d9){io['to'](_0x3dcf91)[_0x764b('0xf')](_0x1cec4c,_0x9e15d9);}function emitChannelQueueInteraction(_0x37e7b1,_0x584fc2,_0x57e337,_0x510390,_0x3ec2cb,_0x5215bf,_0x30f2d7,_0x3987c6){var _0x333b2d=_[_0x764b('0x10')](_0x57e337);_0x333b2d[_0x764b('0xc')]=_0x3987c6;_0x333b2d['queue']=_0x584fc2;_0x333b2d[_0x764b('0xd')]=_0x510390;_0x333b2d['id']=_0x3ec2cb;if(_0x5215bf){attributes[_0x764b('0x11')](_[_0x764b('0x12')](_0x37e7b1)+'InteractionId');_0x30f2d7[util['format'](_0x764b('0x13'),_0x37e7b1)][_0x3ec2cb]=_[_0x764b('0x14')](_0x333b2d,attributes);}else{delete _0x30f2d7[util[_0x764b('0x15')](_0x764b('0x13'),_0x37e7b1)][_0x3ec2cb];}emit(util[_0x764b('0x15')]('%s:queue:%s',_0x37e7b1,_0x584fc2),util[_0x764b('0x15')]('%s_queue_waiting_interaction:%s',_0x37e7b1,_0x5215bf?_0x764b('0x16'):'remove'),_['pick'](_0x333b2d,attributes));}var rpc={'openchannelQueueReport':require(_0x764b('0x17')),'mailQueueReport':require(_0x764b('0x18')),'chatQueueReport':require(_0x764b('0x19')),'smsQueueReport':require(_0x764b('0x1a')),'faxQueueReport':require(_0x764b('0x1b')),'whatsappQueueReport':require(_0x764b('0x1c')),'chatInteraction':require(_0x764b('0x1d')),'faxInteraction':require('../../rpc/faxInteraction'),'mailInteraction':require(_0x764b('0x1e')),'openchannelInteraction':require(_0x764b('0x1f')),'smsInteraction':require(_0x764b('0x20')),'whatsappInteraction':require(_0x764b('0x21'))};var queue=schema({'name':{'type':_0x764b('0x22'),'required':!![],'message':_0x764b('0x23')},'timeout':{'type':_0x764b('0x24'),'message':'timeout\x20is\x20a\x20number'}});function startRouting(_0x20b994,_0x5eb4bf,_0x52ac82,_0x2ee69e){if(_0x20b994&&_0x5eb4bf&&_0x52ac82){_0x5eb4bf[_0x764b('0x25')]+=0x1;var _0x5bb323={'uniqueid':_0x20b994,'from':_0x52ac82['body']?_0x52ac82[_0x764b('0x26')][_0x764b('0x27')]:'','joinAt':moment()[_0x764b('0x15')](_0x764b('0x28')),'ContactId':_0x52ac82['contact']?_0x52ac82[_0x764b('0x29')]['id']:null,'ListId':_0x52ac82[_0x764b('0x2a')]?_0x52ac82[_0x764b('0x2a')]['id']:null};_0x5bb323[_['upperFirst'](_0x52ac82[_0x764b('0x2b')])+'QueueId']=_0x5eb4bf['id']||null;_0x5bb323[_['upperFirst'](_0x52ac82[_0x764b('0x2b')])+_0x764b('0x2c')]=_0x52ac82[_0x764b('0x2d')]?_0x52ac82['interaction']['id']:null;_0x5bb323[_[_0x764b('0x2e')](_0x52ac82[_0x764b('0x2b')])+_0x764b('0x2f')]=_0x52ac82[_0x764b('0x30')]?_0x52ac82[_0x764b('0x30')]['id']:null;_0x5bb323[_[_0x764b('0x2e')](_0x52ac82['channel'])+(_0x52ac82[_0x764b('0x2b')]!==_0x764b('0x31')?_0x764b('0x32'):'WebsiteId')]=_0x52ac82[_0x764b('0xd')]?_0x52ac82[_0x764b('0xd')]['id']:null;logger[_0x764b('0x33')](util[_0x764b('0x15')](_0x764b('0x34'),_0x20b994,_0x5eb4bf['name']));emitChannelQueueInteraction(_0x52ac82[_0x764b('0x2b')],_0x5eb4bf[_0x764b('0x35')],_0x5bb323,_0x52ac82['account'][_0x764b('0x35')],_0x52ac82['message']['id'],!![],_0x2ee69e,_0x5eb4bf['id']);if(rpc[_0x52ac82['channel']+_0x764b('0x36')]){return rpc[_0x52ac82['channel']+_0x764b('0x36')][_0x764b('0x37')](_0x5bb323)[_0x764b('0x38')](function(_0x1fefdc){logger[_0x764b('0x39')](_0x764b('0x3a'),_0x1fefdc);});}}}function stopRouting(_0x5a2484,_0x51b522,_0xd85795,_0x3d7846){if(_0x5a2484&&_0x51b522){_0x51b522[_0x764b('0x25')]-=0x1;var _0x4dc9fc={'leaveAt':moment()[_0x764b('0x15')](_0x764b('0x28')),'acceptAt':moment()[_0x764b('0x15')](_0x764b('0x28')),'reason':_0x764b('0x3b')};logger[_0x764b('0x33')](util['format']('[%s][STOP:QUEUE][NAME:%s]',_0x5a2484,_0x51b522[_0x764b('0x35')]));emitChannelQueueInteraction(_0xd85795['channel'],_0x51b522[_0x764b('0x35')],_0xd85795['body'],_0xd85795[_0x764b('0xd')]['name'],_0xd85795['message']['id'],![],_0x3d7846,_0x51b522['id']);return rpc[_0xd85795['channel']+_0x764b('0x3c')][_0x764b('0x3d')](_0xd85795[_0x764b('0x2d')]['id'],{'queueId':_0x51b522['id']})['then'](function(){if(rpc[_0xd85795[_0x764b('0x2b')]+_0x764b('0x36')]){return rpc[_0xd85795[_0x764b('0x2b')]+'QueueReport']['update'](_0x5a2484,_0x4dc9fc)[_0x764b('0x38')](function(_0x40873c){logger[_0x764b('0x39')]('update\x20queue\x20report',_0x40873c);});}});}}function endRouting(_0x2e8b36,_0x3cdbde,_0x56f904,_0x2eb571){if(_0x2e8b36&&_0x3cdbde){_0x3cdbde['waiting']-=0x1;var _0xd6787b={'leaveAt':moment()[_0x764b('0x15')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0x764b('0x15')](_0x764b('0x28')),'reason':'timeout'};logger[_0x764b('0x33')](util[_0x764b('0x15')]('[%s][END:QUEUE][NAME:%s]',_0x2e8b36,_0x3cdbde['name']));emitChannelQueueInteraction(_0x56f904[_0x764b('0x2b')],_0x3cdbde[_0x764b('0x35')],_0x56f904[_0x764b('0x26')],_0x56f904['account'][_0x764b('0x35')],_0x56f904[_0x764b('0x30')]['id'],![],_0x2eb571);if(rpc[_0x56f904[_0x764b('0x2b')]+_0x764b('0x36')]){return rpc[_0x56f904[_0x764b('0x2b')]+'QueueReport']['update'](_0x2e8b36,_0xd6787b)[_0x764b('0x38')](function(_0x573793){logger[_0x764b('0x39')](_0x764b('0x3e'),_0x573793);});}}}function handleFindQueue(_0x42c6e1){return function(_0xd314ac){return _0xd314ac[_0x764b('0x35')][_0x764b('0x3f')]()===_0x42c6e1['toLowerCase']();};}exports[_0x764b('0x40')]=function(_0x21c69e,_0x596da9,_0xc8099a,_0x1b6c67){return function(_0x358885){try{var _0x152e7d={'name':_0x596da9[0x0],'timeout':_0x596da9[0x1]};var _0x1dcedd=queue['validate'](_0x152e7d,{'typecast':!![]});if(_0x1dcedd[_0x764b('0x41')]){logger[_0x764b('0x39')]('[%s][QUEUE]\x20%s',_0x21c69e,_[_0x764b('0x42')](_0x1dcedd,'message')[_0x764b('0x43')](',\x20'));_0x358885['stop']();}else{var _0xe76063=_['find'](_0xc8099a[_0x1b6c67[_0x764b('0x2b')]+_0x764b('0x44')],handleFindQueue(_0x152e7d[_0x764b('0x35')]));if(_0xe76063){startRouting(_0x21c69e,_0xe76063,_0x1b6c67,_0xc8099a);var _0x3fc5a5=(_0xe76063[_0x764b('0x45')]||0xa)*0x3e8;var _0x3df2f3=(_0x152e7d[_0x764b('0x45')]||0x14)*0x3e8;var _0x1e8dd6;if(_0x3fc5a5>_0x3df2f3){_0x3df2f3=_0x3fc5a5;}var _0x465709=seqqueue[_0x764b('0x46')](_0x3fc5a5);_0x465709['id']=_0x21c69e;_0x465709[_0x764b('0x47')]=_0x3fc5a5;_0x465709['qtimeout']=_0x3df2f3;_0x465709[_0x764b('0x2b')]=_0x1b6c67['channel'];_0xc8099a['rules'][_0x21c69e]['on']('end',function(){logger[_0x764b('0x33')](_0x764b('0x48'),_0x21c69e);stopRouting(_0x21c69e,_0xe76063,_0x1b6c67,_0xc8099a);clearTimeout(_0x1e8dd6);_0x1e8dd6=undefined;_0x465709[_0x764b('0x49')](!![]);if(_0xc8099a[_0x764b('0x4a')][_0x21c69e]){delete _0xc8099a[_0x764b('0x4a')][_0x21c69e];}_0x358885[_0x764b('0x4b')]();});_0xc8099a[_0x764b('0x4a')][_0x21c69e]['on']('complete',function(){if(_0xc8099a[_0x764b('0x4a')][_0x21c69e]){delete _0xc8099a[_0x764b('0x4a')][_0x21c69e];}});_0x1e8dd6=setTimeout(function(){logger[_0x764b('0x33')](_0x764b('0x4c'),_0x21c69e);endRouting(_0x21c69e,_0xe76063,_0x1b6c67,_0xc8099a);clearTimeout(_0x1e8dd6);_0x465709['close'](!![]);_0x358885[_0x764b('0x4d')]();},_0x3df2f3);switch(_0xe76063['strategy']){case _0x764b('0x4e'):strategy[_0x764b('0x4e')](_0x465709,_0xe76063,_0xc8099a,_0x1b6c67);break;default:strategy[_0x764b('0x4f')](_0x465709,_0xe76063,_0xc8099a,_0x1b6c67);}}else{logger[_0x764b('0x39')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x21c69e,_0x152e7d[_0x764b('0x35')]);_0x358885[_0x764b('0x4b')]();}}}catch(_0x555444){logger['error']('[%s][QUEUE]\x20%s',_0x21c69e,_0x555444[_0x764b('0x50')]);_0x358885['stop']();}};};
\ No newline at end of file
+var _0x01f6=['redis','account','queue','from','joinAt','clone','push','capitalize','InteractionId','format','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','pick','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','../../rpc/chatInteraction','../../rpc/faxInteraction','../../rpc/mailInteraction','../../rpc/openchannelInteraction','../../rpc/whatsappInteraction','string','number','timeout\x20is\x20a\x20number','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','upperFirst','channel','interaction','MessageId','message','AccountId','info','name','QueueReport','create','error','create\x20queue\x20report','Interaction','update','then','catch','update\x20queue\x20report','waiting','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','validate','length','[%s][QUEUE]\x20%s','join','stop','find','Queues','createQueue','atimeout','rules','close','complete','next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','stack','util','seq-queue','ioredis','../../../../config/environment','../../../../config/logger','routing','./strategy','defaults','localhost'];(function(_0xffb466,_0x1973ff){var _0x26afb6=function(_0x32fadf){while(--_0x32fadf){_0xffb466['push'](_0xffb466['shift']());}};_0x26afb6(++_0x1973ff);}(_0x01f6,0xea));var _0x601f=function(_0x501099,_0x223250){_0x501099=_0x501099-0x0;var _0x555ebf=_0x01f6[_0x501099];return _0x555ebf;};'use strict';var schema=require('validate');var _=require('lodash');var util=require(_0x601f('0x0'));var seqqueue=require(_0x601f('0x1'));var moment=require('moment');var Redis=require(_0x601f('0x2'));var config=require(_0x601f('0x3'));var logger=require(_0x601f('0x4'))(_0x601f('0x5'));var strategy=require(_0x601f('0x6'));config['redis']=_[_0x601f('0x7')](config['redis'],{'host':_0x601f('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x601f('0x9')]));var attributes=['id','queue_id',_0x601f('0xa'),_0x601f('0xb'),_0x601f('0xc'),_0x601f('0xd')];function emit(_0x37335b,_0x42aab6,_0x4e7809){io['to'](_0x37335b)['emit'](_0x42aab6,_0x4e7809);}function emitChannelQueueInteraction(_0x5afe11,_0x4935a3,_0x29826c,_0x398a09,_0x4b7b06,_0x183b91,_0x11231a,_0xaaf697){var _0x2356ad=_[_0x601f('0xe')](_0x29826c);_0x2356ad['queue_id']=_0xaaf697;_0x2356ad[_0x601f('0xb')]=_0x4935a3;_0x2356ad[_0x601f('0xa')]=_0x398a09;_0x2356ad['id']=_0x4b7b06;if(_0x183b91){attributes[_0x601f('0xf')](_[_0x601f('0x10')](_0x5afe11)+_0x601f('0x11'));_0x11231a[util[_0x601f('0x12')]('%sQueuesWaitingInteractions',_0x5afe11)][_0x4b7b06]=_['pick'](_0x2356ad,attributes);}else{delete _0x11231a[util[_0x601f('0x12')](_0x601f('0x13'),_0x5afe11)][_0x4b7b06];}emit(util[_0x601f('0x12')](_0x601f('0x14'),_0x5afe11,_0x4935a3),util[_0x601f('0x12')](_0x601f('0x15'),_0x5afe11,_0x183b91?_0x601f('0x16'):_0x601f('0x17')),_[_0x601f('0x18')](_0x2356ad,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require(_0x601f('0x19')),'smsQueueReport':require(_0x601f('0x1a')),'faxQueueReport':require(_0x601f('0x1b')),'whatsappQueueReport':require(_0x601f('0x1c')),'chatInteraction':require(_0x601f('0x1d')),'faxInteraction':require(_0x601f('0x1e')),'mailInteraction':require(_0x601f('0x1f')),'openchannelInteraction':require(_0x601f('0x20')),'smsInteraction':require('../../rpc/smsInteraction'),'whatsappInteraction':require(_0x601f('0x21'))};var queue=schema({'name':{'type':_0x601f('0x22'),'required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x601f('0x23'),'message':_0x601f('0x24')}});function startRouting(_0x42bb62,_0x48dac9,_0x681cd,_0x2210e3){if(_0x42bb62&&_0x48dac9&&_0x681cd){_0x48dac9['waiting']+=0x1;var _0x51bae5={'uniqueid':_0x42bb62,'from':_0x681cd[_0x601f('0x25')]?_0x681cd['body'][_0x601f('0xc')]:'','joinAt':moment()['format'](_0x601f('0x26')),'ContactId':_0x681cd[_0x601f('0x27')]?_0x681cd[_0x601f('0x27')]['id']:null,'ListId':_0x681cd[_0x601f('0x28')]?_0x681cd['list']['id']:null};_0x51bae5[_[_0x601f('0x29')](_0x681cd['channel'])+'QueueId']=_0x48dac9['id']||null;_0x51bae5[_['upperFirst'](_0x681cd[_0x601f('0x2a')])+_0x601f('0x11')]=_0x681cd[_0x601f('0x2b')]?_0x681cd[_0x601f('0x2b')]['id']:null;_0x51bae5[_[_0x601f('0x29')](_0x681cd[_0x601f('0x2a')])+_0x601f('0x2c')]=_0x681cd[_0x601f('0x2d')]?_0x681cd[_0x601f('0x2d')]['id']:null;_0x51bae5[_[_0x601f('0x29')](_0x681cd[_0x601f('0x2a')])+(_0x681cd[_0x601f('0x2a')]!=='chat'?_0x601f('0x2e'):'WebsiteId')]=_0x681cd[_0x601f('0xa')]?_0x681cd['account']['id']:null;logger[_0x601f('0x2f')](util[_0x601f('0x12')]('[%s][START:QUEUE][NAME:%s]',_0x42bb62,_0x48dac9[_0x601f('0x30')]));emitChannelQueueInteraction(_0x681cd['channel'],_0x48dac9[_0x601f('0x30')],_0x51bae5,_0x681cd[_0x601f('0xa')][_0x601f('0x30')],_0x681cd[_0x601f('0x2d')]['id'],!![],_0x2210e3,_0x48dac9['id']);if(rpc[_0x681cd[_0x601f('0x2a')]+'QueueReport']){return rpc[_0x681cd[_0x601f('0x2a')]+_0x601f('0x31')][_0x601f('0x32')](_0x51bae5)['catch'](function(_0x251bdb){logger[_0x601f('0x33')](_0x601f('0x34'),_0x251bdb);});}}}function stopRouting(_0x36cc8e,_0x5472ff,_0xf1adc2,_0x169068){if(_0x36cc8e&&_0x5472ff){_0x5472ff['waiting']-=0x1;var _0x2bbacd={'leaveAt':moment()[_0x601f('0x12')](_0x601f('0x26')),'acceptAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'reason':'accepted'};logger[_0x601f('0x2f')](util[_0x601f('0x12')]('[%s][STOP:QUEUE][NAME:%s]',_0x36cc8e,_0x5472ff[_0x601f('0x30')]));emitChannelQueueInteraction(_0xf1adc2[_0x601f('0x2a')],_0x5472ff[_0x601f('0x30')],_0xf1adc2[_0x601f('0x25')],_0xf1adc2['account'][_0x601f('0x30')],_0xf1adc2['message']['id'],![],_0x169068,_0x5472ff['id']);return rpc[_0xf1adc2[_0x601f('0x2a')]+_0x601f('0x35')][_0x601f('0x36')](_0xf1adc2[_0x601f('0x2b')]['id'],{'queueId':_0x5472ff['id']})[_0x601f('0x37')](function(){if(rpc[_0xf1adc2[_0x601f('0x2a')]+_0x601f('0x31')]){return rpc[_0xf1adc2[_0x601f('0x2a')]+_0x601f('0x31')]['update'](_0x36cc8e,_0x2bbacd)[_0x601f('0x38')](function(_0x3edc45){logger['error'](_0x601f('0x39'),_0x3edc45);});}});}}function endRouting(_0x70f1b8,_0x32be20,_0x56a4ea,_0x2c9d81){if(_0x70f1b8&&_0x32be20){_0x32be20[_0x601f('0x3a')]-=0x1;var _0x4d8042={'leaveAt':moment()[_0x601f('0x12')](_0x601f('0x26')),'exitAt':moment()['format'](_0x601f('0x26')),'reason':_0x601f('0x3b')};logger[_0x601f('0x2f')](util[_0x601f('0x12')](_0x601f('0x3c'),_0x70f1b8,_0x32be20[_0x601f('0x30')]));emitChannelQueueInteraction(_0x56a4ea[_0x601f('0x2a')],_0x32be20['name'],_0x56a4ea[_0x601f('0x25')],_0x56a4ea[_0x601f('0xa')][_0x601f('0x30')],_0x56a4ea['message']['id'],![],_0x2c9d81);if(rpc[_0x56a4ea[_0x601f('0x2a')]+_0x601f('0x31')]){return rpc[_0x56a4ea[_0x601f('0x2a')]+_0x601f('0x31')]['update'](_0x70f1b8,_0x4d8042)[_0x601f('0x38')](function(_0x12df51){logger[_0x601f('0x33')](_0x601f('0x39'),_0x12df51);});}}}function handleFindQueue(_0x137655){return function(_0x5333a5){return _0x5333a5['name'][_0x601f('0x3d')]()===_0x137655[_0x601f('0x3d')]();};}exports[_0x601f('0x3e')]=function(_0x384770,_0x291355,_0x1ada3a,_0x2b6830){return function(_0x665308){try{var _0x3cb048={'name':_0x291355[0x0],'timeout':_0x291355[0x1]};var _0x59ba4b=queue[_0x601f('0x3f')](_0x3cb048,{'typecast':!![]});if(_0x59ba4b[_0x601f('0x40')]){logger[_0x601f('0x33')](_0x601f('0x41'),_0x384770,_['map'](_0x59ba4b,_0x601f('0x2d'))[_0x601f('0x42')](',\x20'));_0x665308[_0x601f('0x43')]();}else{var _0x1e54e5=_[_0x601f('0x44')](_0x1ada3a[_0x2b6830[_0x601f('0x2a')]+_0x601f('0x45')],handleFindQueue(_0x3cb048[_0x601f('0x30')]));if(_0x1e54e5){startRouting(_0x384770,_0x1e54e5,_0x2b6830,_0x1ada3a);var _0x1d5a52=(_0x1e54e5[_0x601f('0x3b')]||0xa)*0x3e8;var _0x3d1eb7=(_0x3cb048[_0x601f('0x3b')]||0x14)*0x3e8;var _0x54c08b;if(_0x1d5a52>_0x3d1eb7){_0x3d1eb7=_0x1d5a52;}var _0x5069f7=seqqueue[_0x601f('0x46')](_0x1d5a52);_0x5069f7['id']=_0x384770;_0x5069f7[_0x601f('0x47')]=_0x1d5a52;_0x5069f7['qtimeout']=_0x3d1eb7;_0x5069f7[_0x601f('0x2a')]=_0x2b6830['channel'];_0x1ada3a[_0x601f('0x48')][_0x384770]['on']('end',function(){logger[_0x601f('0x2f')]('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0x384770);stopRouting(_0x384770,_0x1e54e5,_0x2b6830,_0x1ada3a);clearTimeout(_0x54c08b);_0x54c08b=undefined;_0x5069f7[_0x601f('0x49')](!![]);if(_0x1ada3a[_0x601f('0x48')][_0x384770]){delete _0x1ada3a[_0x601f('0x48')][_0x384770];}_0x665308[_0x601f('0x43')]();});_0x1ada3a[_0x601f('0x48')][_0x384770]['on'](_0x601f('0x4a'),function(){if(_0x1ada3a['rules'][_0x384770]){delete _0x1ada3a[_0x601f('0x48')][_0x384770];}});_0x54c08b=setTimeout(function(){logger[_0x601f('0x2f')]('[%s][QUEUE]\x20APPLICATION\x20END',_0x384770);endRouting(_0x384770,_0x1e54e5,_0x2b6830,_0x1ada3a);clearTimeout(_0x54c08b);_0x5069f7[_0x601f('0x49')](!![]);_0x665308[_0x601f('0x4b')]();},_0x3d1eb7);switch(_0x1e54e5[_0x601f('0x4c')]){case'rrmemory':strategy[_0x601f('0x4d')](_0x5069f7,_0x1e54e5,_0x1ada3a,_0x2b6830);break;default:strategy[_0x601f('0x4e')](_0x5069f7,_0x1e54e5,_0x1ada3a,_0x2b6830);}}else{logger[_0x601f('0x33')](_0x601f('0x4f'),_0x384770,_0x3cb048['name']);_0x665308[_0x601f('0x43')]();}}}catch(_0x2a63bf){logger[_0x601f('0x33')](_0x601f('0x41'),_0x384770,_0x2a63bf[_0x601f('0x50')]);_0x665308[_0x601f('0x43')]();}};};
\ No newline at end of file
index af04a43..0dd1d67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24ca=['busy','busyQueue','saveWaitingNotification','showNotification','RINGING','isNil','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','removeWaitingNotification','writeLog','STOP','exports','lodash','../../../../../config/logger','notificationId','squeue','agent','push','handleRun','bind','handleTimeout','prototype','handleDrained','[%s][AGENT]\x20try\x20with\x20%s','realtime','agents','debug','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','routing','forcedOwnership','isAgentAvailable','channel'];(function(_0x646a49,_0x12b079){var _0x360989=function(_0x45bcb5){while(--_0x45bcb5){_0x646a49['push'](_0x646a49['shift']());}};_0x360989(++_0x12b079);}(_0x24ca,0x8c));var _0xa24c=function(_0x1911ed,_0x4e8c73){_0x1911ed=_0x1911ed-0x0;var _0x11edaa=_0x24ca[_0x1911ed];return _0x11edaa;};'use strict';var _=require(_0xa24c('0x0'));var uuid=require('uuid');var util=require('./util');var logger=require(_0xa24c('0x1'))('routing');var Agent=function(_0x155c49,_0x1efd39,_0xe69cdd,_0x49f276){this[_0xa24c('0x2')]=uuid['v4']();this[_0xa24c('0x3')]=_0x155c49;this[_0xa24c('0x4')]=_0x1efd39;this['realtime']=_0xe69cdd;this['routing']=_0x49f276;this['squeue'][_0xa24c('0x5')](this[_0xa24c('0x6')][_0xa24c('0x7')](this),this[_0xa24c('0x8')][_0xa24c('0x7')](this));this[_0xa24c('0x3')]['on']('timeout',this[_0xa24c('0x8')][_0xa24c('0x7')](this));this[_0xa24c('0x3')]['on']('drained',this['handleDrained'][_0xa24c('0x7')](this));};Agent[_0xa24c('0x9')][_0xa24c('0x5')]=function(){this[_0xa24c('0x3')][_0xa24c('0x5')](this[_0xa24c('0x6')]['bind'](this),this['handleTimeout']['bind'](this));};Agent[_0xa24c('0x9')][_0xa24c('0xa')]=function(){this[_0xa24c('0x8')](!![]);};Agent[_0xa24c('0x9')][_0xa24c('0x6')]=function(){logger['debug'](_0xa24c('0xb'),this['squeue']['id'],this['agent']['id']);if(_['isNil'](this[_0xa24c('0xc')][_0xa24c('0xd')][this[_0xa24c('0x4')]['id']])){logger[_0xa24c('0xe')](_0xa24c('0xf'),this[_0xa24c('0x3')]['id'],this[_0xa24c('0x4')]['id']);setTimeout(this[_0xa24c('0x5')][_0xa24c('0x7')](this),0x3e8);}else{if(this[_0xa24c('0x10')][_0xa24c('0x11')]||util[_0xa24c('0x12')](this[_0xa24c('0x3')]['id'],this[_0xa24c('0xc')]['agents'][this[_0xa24c('0x4')]['id']],this['squeue'][_0xa24c('0x13')],![])){this[_0xa24c('0xc')][_0xa24c('0xd')][this[_0xa24c('0x4')]['id']][_0xa24c('0x14')]=!![];this[_0xa24c('0xc')][_0xa24c('0xd')][this[_0xa24c('0x4')]['id']][_0xa24c('0x15')]=undefined;util[_0xa24c('0x16')](this[_0xa24c('0xc')],this['routing'],this['agent'],this[_0xa24c('0x3')][_0xa24c('0x13')]);util[_0xa24c('0x17')](this[_0xa24c('0x2')],this[_0xa24c('0x3')]['id'],this[_0xa24c('0xc')][_0xa24c('0xd')][this[_0xa24c('0x4')]['id']],null,this[_0xa24c('0x10')]);util['writeLog'](this[_0xa24c('0x3')]['id'],this['realtime'][_0xa24c('0xd')][this[_0xa24c('0x4')]['id']],_0xa24c('0x18')+(this[_0xa24c('0x10')]['forcedOwnership']?':FORCED':''));}else{logger['debug']('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this[_0xa24c('0x3')]['id'],this[_0xa24c('0x4')]['id']);setTimeout(this[_0xa24c('0x5')][_0xa24c('0x7')](this),0x3e8);}}};Agent[_0xa24c('0x9')]['handleTimeout']=function(_0x5c8113){if(_[_0xa24c('0x19')](this[_0xa24c('0xc')][_0xa24c('0xd')][this[_0xa24c('0x4')]['id']])){return logger[_0xa24c('0xe')](_0xa24c('0xf'),this[_0xa24c('0x3')]['id'],this[_0xa24c('0x4')]['id']);}else{logger[_0xa24c('0xe')](_0xa24c('0x1a'),this['squeue']['id'],this[_0xa24c('0x4')]['id']);util[_0xa24c('0x1b')](this['notificationId'],this[_0xa24c('0x3')]['id'],this[_0xa24c('0xc')][_0xa24c('0xd')][this[_0xa24c('0x4')]['id']],null,this[_0xa24c('0x10')]);this[_0xa24c('0xc')][_0xa24c('0xd')][this[_0xa24c('0x4')]['id']][_0xa24c('0x14')]=![];this[_0xa24c('0xc')]['agents'][this['agent']['id']]['busyQueue']=undefined;util[_0xa24c('0x1c')](this['realtime'],this[_0xa24c('0x10')],this[_0xa24c('0x4')],this[_0xa24c('0x3')]['channel']);util[_0xa24c('0x1d')](this[_0xa24c('0x3')]['id'],this[_0xa24c('0xc')]['agents'][this[_0xa24c('0x4')]['id']],_0x5c8113?_0xa24c('0x1e'):'TIMEOUT');}if(!_0x5c8113){setTimeout(this[_0xa24c('0x5')][_0xa24c('0x7')](this),0x3e8);}};function agent(_0xd837dc,_0x570d7c,_0x45c429,_0x2c63da){return new Agent(_0xd837dc,_0x570d7c,_0x45c429,_0x2c63da);}module[_0xa24c('0x1f')]=agent;
\ No newline at end of file
+var _0x0fda=['lodash','./util','../../../../../config/logger','routing','agent','squeue','push','handleRun','bind','timeout','handleTimeout','drained','handleDrained','prototype','debug','[%s][AGENT]\x20try\x20with\x20%s','realtime','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','busyQueue','saveWaitingNotification','showNotification','notificationId','writeLog','RINGING','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','isNil','[%s][AGENT]\x20timeout\x20with\x20%s','busy','STOP','exports'];(function(_0x3f8a56,_0x5f6efa){var _0x6f928=function(_0x2abce9){while(--_0x2abce9){_0x3f8a56['push'](_0x3f8a56['shift']());}};_0x6f928(++_0x5f6efa);}(_0x0fda,0x1a0));var _0xa0fd=function(_0x159602,_0x2e3806){_0x159602=_0x159602-0x0;var _0x52edeb=_0x0fda[_0x159602];return _0x52edeb;};'use strict';var _=require(_0xa0fd('0x0'));var uuid=require('uuid');var util=require(_0xa0fd('0x1'));var logger=require(_0xa0fd('0x2'))(_0xa0fd('0x3'));var Agent=function(_0x2f71f3,_0x426242,_0xd8e73a,_0x13c734){this['notificationId']=uuid['v4']();this['squeue']=_0x2f71f3;this[_0xa0fd('0x4')]=_0x426242;this['realtime']=_0xd8e73a;this['routing']=_0x13c734;this[_0xa0fd('0x5')][_0xa0fd('0x6')](this[_0xa0fd('0x7')][_0xa0fd('0x8')](this),this['handleTimeout'][_0xa0fd('0x8')](this));this[_0xa0fd('0x5')]['on'](_0xa0fd('0x9'),this[_0xa0fd('0xa')]['bind'](this));this[_0xa0fd('0x5')]['on'](_0xa0fd('0xb'),this[_0xa0fd('0xc')]['bind'](this));};Agent[_0xa0fd('0xd')][_0xa0fd('0x6')]=function(){this[_0xa0fd('0x5')][_0xa0fd('0x6')](this[_0xa0fd('0x7')]['bind'](this),this['handleTimeout'][_0xa0fd('0x8')](this));};Agent[_0xa0fd('0xd')]['handleDrained']=function(){this[_0xa0fd('0xa')](!![]);};Agent[_0xa0fd('0xd')][_0xa0fd('0x7')]=function(){logger[_0xa0fd('0xe')](_0xa0fd('0xf'),this[_0xa0fd('0x5')]['id'],this[_0xa0fd('0x4')]['id']);if(_['isNil'](this[_0xa0fd('0x10')][_0xa0fd('0x11')][this['agent']['id']])){logger['debug'](_0xa0fd('0x12'),this[_0xa0fd('0x5')]['id'],this['agent']['id']);setTimeout(this[_0xa0fd('0x6')][_0xa0fd('0x8')](this),0x3e8);}else{if(this[_0xa0fd('0x3')]['forcedOwnership']||util['isAgentAvailable'](this[_0xa0fd('0x5')]['id'],this['realtime'][_0xa0fd('0x11')][this[_0xa0fd('0x4')]['id']],this[_0xa0fd('0x5')][_0xa0fd('0x13')],![])){this[_0xa0fd('0x10')][_0xa0fd('0x11')][this[_0xa0fd('0x4')]['id']]['busy']=!![];this[_0xa0fd('0x10')][_0xa0fd('0x11')][this[_0xa0fd('0x4')]['id']][_0xa0fd('0x14')]=undefined;util[_0xa0fd('0x15')](this[_0xa0fd('0x10')],this[_0xa0fd('0x3')],this[_0xa0fd('0x4')],this[_0xa0fd('0x5')][_0xa0fd('0x13')]);util[_0xa0fd('0x16')](this[_0xa0fd('0x17')],this[_0xa0fd('0x5')]['id'],this['realtime'][_0xa0fd('0x11')][this[_0xa0fd('0x4')]['id']],null,this['routing']);util[_0xa0fd('0x18')](this[_0xa0fd('0x5')]['id'],this['realtime']['agents'][this[_0xa0fd('0x4')]['id']],_0xa0fd('0x19')+(this['routing']['forcedOwnership']?':FORCED':''));}else{logger['debug'](_0xa0fd('0x1a'),this['squeue']['id'],this[_0xa0fd('0x4')]['id']);setTimeout(this[_0xa0fd('0x6')][_0xa0fd('0x8')](this),0x3e8);}}};Agent['prototype'][_0xa0fd('0xa')]=function(_0x19c352){if(_[_0xa0fd('0x1b')](this[_0xa0fd('0x10')][_0xa0fd('0x11')][this['agent']['id']])){return logger[_0xa0fd('0xe')](_0xa0fd('0x12'),this[_0xa0fd('0x5')]['id'],this[_0xa0fd('0x4')]['id']);}else{logger['debug'](_0xa0fd('0x1c'),this[_0xa0fd('0x5')]['id'],this['agent']['id']);util['hideNotification'](this['notificationId'],this[_0xa0fd('0x5')]['id'],this['realtime']['agents'][this[_0xa0fd('0x4')]['id']],null,this['routing']);this[_0xa0fd('0x10')][_0xa0fd('0x11')][this[_0xa0fd('0x4')]['id']][_0xa0fd('0x1d')]=![];this[_0xa0fd('0x10')][_0xa0fd('0x11')][this[_0xa0fd('0x4')]['id']][_0xa0fd('0x14')]=undefined;util['removeWaitingNotification'](this[_0xa0fd('0x10')],this['routing'],this[_0xa0fd('0x4')],this['squeue']['channel']);util[_0xa0fd('0x18')](this['squeue']['id'],this[_0xa0fd('0x10')][_0xa0fd('0x11')][this[_0xa0fd('0x4')]['id']],_0x19c352?_0xa0fd('0x1e'):'TIMEOUT');}if(!_0x19c352){setTimeout(this[_0xa0fd('0x6')][_0xa0fd('0x8')](this),0x3e8);}};function agent(_0x3b06ef,_0x3f6146,_0x2e3cfa,_0x31f1e2){return new Agent(_0x3b06ef,_0x3f6146,_0x2e3cfa,_0x31f1e2);}module[_0xa0fd('0x1f')]=agent;
\ No newline at end of file
index 152c3fc..8d18910 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42fe=['Agents','length','isNil','agents','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','busy','busyQueue','saveWaitingNotification','showNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','debug','[%s][QUEUE]\x20EMPTY','hideNotification','writeLog','exports','lodash','uuid','./util','../../../../../config/logger','notificationId','squeue','realtime','routing','push','bind','handleTimeout','timeout','handleDrained','prototype','queue'];(function(_0x14a513,_0x3239f){var _0x47236c=function(_0x394191){while(--_0x394191){_0x14a513['push'](_0x14a513['shift']());}};_0x47236c(++_0x3239f);}(_0x42fe,0x1b1));var _0xe42f=function(_0x55fa10,_0x555718){_0x55fa10=_0x55fa10-0x0;var _0x4155ca=_0x42fe[_0x55fa10];return _0x4155ca;};'use strict';var _=require(_0xe42f('0x0'));var uuid=require(_0xe42f('0x1'));var util=require(_0xe42f('0x2'));var logger=require(_0xe42f('0x3'))('routing');var Beepall=function(_0xec5fa8,_0x40efa4,_0x1cc6ca,_0x2671ce){this[_0xe42f('0x4')]=uuid['v4']();this[_0xe42f('0x5')]=_0xec5fa8;this['queue']=_0x40efa4;this[_0xe42f('0x6')]=_0x1cc6ca;this[_0xe42f('0x7')]=_0x2671ce;this[_0xe42f('0x5')][_0xe42f('0x8')](this['handleRun'][_0xe42f('0x9')](this),this[_0xe42f('0xa')][_0xe42f('0x9')](this));this['squeue']['on'](_0xe42f('0xb'),this['handleTimeout'][_0xe42f('0x9')](this));this[_0xe42f('0x5')]['on']('drained',this[_0xe42f('0xc')][_0xe42f('0x9')](this));};Beepall[_0xe42f('0xd')][_0xe42f('0x8')]=function(){this[_0xe42f('0x5')][_0xe42f('0x8')](this['handleRun']['bind'](this),this[_0xe42f('0xa')][_0xe42f('0x9')](this));};Beepall[_0xe42f('0xd')][_0xe42f('0xc')]=function(){this[_0xe42f('0xa')](!![]);};Beepall[_0xe42f('0xd')]['handleRun']=function(){var _0x515fcc=!![];if(!_['isNil'](this['queue'])&&!_['isNil'](this[_0xe42f('0xe')][_0xe42f('0xf')])&&this['queue']['Agents']['length']>0x0){for(var _0x238965=0x0,_0x4d7efe;_0x238965<this[_0xe42f('0xe')][_0xe42f('0xf')][_0xe42f('0x10')];_0x238965+=0x1){_0x4d7efe=this[_0xe42f('0xe')][_0xe42f('0xf')][_0x238965]['id'];if(_[_0xe42f('0x11')](this[_0xe42f('0x6')][_0xe42f('0x12')][_0x4d7efe])){logger['debug'](_0xe42f('0x13'),this[_0xe42f('0x5')]['id'],_0x4d7efe);}else{if(util[_0xe42f('0x14')](this[_0xe42f('0x5')]['id'],this[_0xe42f('0x6')]['agents'][_0x4d7efe],this[_0xe42f('0x5')][_0xe42f('0x15')],!![])){_0x515fcc=![];util['writeLog'](this['squeue']['id'],this[_0xe42f('0x6')][_0xe42f('0x12')][_0x4d7efe],'RINGING');this[_0xe42f('0x6')]['agents'][_0x4d7efe][_0xe42f('0x16')]=!![];this['realtime']['agents'][_0x4d7efe][_0xe42f('0x17')]=this['queue']['name'];util[_0xe42f('0x18')](this[_0xe42f('0x6')],this['routing'],this['queue'][_0xe42f('0xf')][_0x238965],this[_0xe42f('0x5')]['channel']);util[_0xe42f('0x19')](this['notificationId'],this[_0xe42f('0x5')]['id'],this[_0xe42f('0x6')][_0xe42f('0x12')][_0x4d7efe],this[_0xe42f('0xe')],this['routing']);}}}if(_0x515fcc){logger['debug'](_0xe42f('0x1a'),this[_0xe42f('0x5')]['id']);setTimeout(this['push']['bind'](this),0x3e8);}}else{logger[_0xe42f('0x1b')](_0xe42f('0x1c'),this[_0xe42f('0x5')]['id']);setTimeout(this[_0xe42f('0x8')][_0xe42f('0x9')](this),0x3e8);}};Beepall['prototype'][_0xe42f('0xa')]=function(_0x426681){if(!_['isNil'](this[_0xe42f('0xe')])&&!_[_0xe42f('0x11')](this['queue'][_0xe42f('0xf')])){for(var _0x43ff9f=0x0,_0x3b2133;_0x43ff9f<this[_0xe42f('0xe')]['Agents']['length'];_0x43ff9f+=0x1){_0x3b2133=this[_0xe42f('0xe')][_0xe42f('0xf')][_0x43ff9f]['id'];if(_[_0xe42f('0x11')](this[_0xe42f('0x6')]['agents'][_0x3b2133])){logger[_0xe42f('0x1b')](_0xe42f('0x13'),this[_0xe42f('0x5')]['id'],_0x3b2133);}else{util[_0xe42f('0x1d')](this[_0xe42f('0x4')],this['squeue']['id'],this['realtime'][_0xe42f('0x12')][_0x3b2133],this[_0xe42f('0xe')],this[_0xe42f('0x7')]);util[_0xe42f('0x1e')](this[_0xe42f('0x5')]['id'],this[_0xe42f('0x6')][_0xe42f('0x12')][_0x3b2133],_0x426681?'STOP':'TIMEOUT');this['realtime']['agents'][_0x3b2133]['busy']=![];this[_0xe42f('0x6')]['agents'][_0x3b2133]['busyQueue']=undefined;util['removeWaitingNotification'](this['realtime'],this[_0xe42f('0x7')],this[_0xe42f('0x6')][_0xe42f('0x12')][_0x3b2133],this[_0xe42f('0x5')][_0xe42f('0x15')]);}}}if(!_0x426681){setTimeout(this[_0xe42f('0x8')][_0xe42f('0x9')](this),0x3e8);}};function beepall(_0x1e4e3f,_0x8c9f63,_0x265914,_0xcb565c){return new Beepall(_0x1e4e3f,_0x8c9f63,_0x265914,_0xcb565c);}module[_0xe42f('0x1f')]=beepall;
\ No newline at end of file
+var _0x46ed=['./util','routing','notificationId','squeue','queue','handleRun','handleTimeout','bind','timeout','handleDrained','prototype','push','Agents','isNil','realtime','agents','debug','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','writeLog','RINGING','busy','busyQueue','name','saveWaitingNotification','showNotification','[%s][QUEUE]\x20EMPTY','length','hideNotification','STOP','TIMEOUT','removeWaitingNotification','exports','lodash','uuid'];(function(_0x50c435,_0x26d5d2){var _0x1bcb05=function(_0x5b26b8){while(--_0x5b26b8){_0x50c435['push'](_0x50c435['shift']());}};_0x1bcb05(++_0x26d5d2);}(_0x46ed,0x142));var _0xd46e=function(_0x12fc8d,_0x19ee33){_0x12fc8d=_0x12fc8d-0x0;var _0x3f9d04=_0x46ed[_0x12fc8d];return _0x3f9d04;};'use strict';var _=require(_0xd46e('0x0'));var uuid=require(_0xd46e('0x1'));var util=require(_0xd46e('0x2'));var logger=require('../../../../../config/logger')(_0xd46e('0x3'));var Beepall=function(_0x498968,_0x5b4785,_0x14ef8d,_0x3be333){this[_0xd46e('0x4')]=uuid['v4']();this[_0xd46e('0x5')]=_0x498968;this[_0xd46e('0x6')]=_0x5b4785;this['realtime']=_0x14ef8d;this[_0xd46e('0x3')]=_0x3be333;this['squeue']['push'](this[_0xd46e('0x7')]['bind'](this),this[_0xd46e('0x8')][_0xd46e('0x9')](this));this[_0xd46e('0x5')]['on'](_0xd46e('0xa'),this[_0xd46e('0x8')]['bind'](this));this['squeue']['on']('drained',this[_0xd46e('0xb')]['bind'](this));};Beepall[_0xd46e('0xc')]['push']=function(){this[_0xd46e('0x5')][_0xd46e('0xd')](this['handleRun'][_0xd46e('0x9')](this),this[_0xd46e('0x8')][_0xd46e('0x9')](this));};Beepall[_0xd46e('0xc')]['handleDrained']=function(){this[_0xd46e('0x8')](!![]);};Beepall['prototype'][_0xd46e('0x7')]=function(){var _0x226ebf=!![];if(!_['isNil'](this[_0xd46e('0x6')])&&!_['isNil'](this[_0xd46e('0x6')][_0xd46e('0xe')])&&this[_0xd46e('0x6')]['Agents']['length']>0x0){for(var _0x15fc27=0x0,_0x3d036c;_0x15fc27<this[_0xd46e('0x6')][_0xd46e('0xe')]['length'];_0x15fc27+=0x1){_0x3d036c=this[_0xd46e('0x6')][_0xd46e('0xe')][_0x15fc27]['id'];if(_[_0xd46e('0xf')](this[_0xd46e('0x10')][_0xd46e('0x11')][_0x3d036c])){logger[_0xd46e('0x12')](_0xd46e('0x13'),this[_0xd46e('0x5')]['id'],_0x3d036c);}else{if(util[_0xd46e('0x14')](this[_0xd46e('0x5')]['id'],this[_0xd46e('0x10')][_0xd46e('0x11')][_0x3d036c],this[_0xd46e('0x5')][_0xd46e('0x15')],!![])){_0x226ebf=![];util[_0xd46e('0x16')](this['squeue']['id'],this[_0xd46e('0x10')][_0xd46e('0x11')][_0x3d036c],_0xd46e('0x17'));this[_0xd46e('0x10')][_0xd46e('0x11')][_0x3d036c][_0xd46e('0x18')]=!![];this[_0xd46e('0x10')][_0xd46e('0x11')][_0x3d036c][_0xd46e('0x19')]=this[_0xd46e('0x6')][_0xd46e('0x1a')];util[_0xd46e('0x1b')](this[_0xd46e('0x10')],this['routing'],this['queue']['Agents'][_0x15fc27],this[_0xd46e('0x5')][_0xd46e('0x15')]);util[_0xd46e('0x1c')](this[_0xd46e('0x4')],this[_0xd46e('0x5')]['id'],this[_0xd46e('0x10')][_0xd46e('0x11')][_0x3d036c],this[_0xd46e('0x6')],this[_0xd46e('0x3')]);}}}if(_0x226ebf){logger[_0xd46e('0x12')]('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this[_0xd46e('0x5')]['id']);setTimeout(this['push'][_0xd46e('0x9')](this),0x3e8);}}else{logger[_0xd46e('0x12')](_0xd46e('0x1d'),this['squeue']['id']);setTimeout(this[_0xd46e('0xd')][_0xd46e('0x9')](this),0x3e8);}};Beepall[_0xd46e('0xc')][_0xd46e('0x8')]=function(_0x37b9b1){if(!_[_0xd46e('0xf')](this[_0xd46e('0x6')])&&!_[_0xd46e('0xf')](this['queue']['Agents'])){for(var _0x32881f=0x0,_0x678fa8;_0x32881f<this[_0xd46e('0x6')][_0xd46e('0xe')][_0xd46e('0x1e')];_0x32881f+=0x1){_0x678fa8=this[_0xd46e('0x6')]['Agents'][_0x32881f]['id'];if(_[_0xd46e('0xf')](this[_0xd46e('0x10')][_0xd46e('0x11')][_0x678fa8])){logger[_0xd46e('0x12')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xd46e('0x5')]['id'],_0x678fa8);}else{util[_0xd46e('0x1f')](this[_0xd46e('0x4')],this['squeue']['id'],this['realtime'][_0xd46e('0x11')][_0x678fa8],this[_0xd46e('0x6')],this[_0xd46e('0x3')]);util['writeLog'](this['squeue']['id'],this[_0xd46e('0x10')][_0xd46e('0x11')][_0x678fa8],_0x37b9b1?_0xd46e('0x20'):_0xd46e('0x21'));this[_0xd46e('0x10')]['agents'][_0x678fa8][_0xd46e('0x18')]=![];this[_0xd46e('0x10')]['agents'][_0x678fa8][_0xd46e('0x19')]=undefined;util[_0xd46e('0x22')](this['realtime'],this[_0xd46e('0x3')],this[_0xd46e('0x10')][_0xd46e('0x11')][_0x678fa8],this[_0xd46e('0x5')][_0xd46e('0x15')]);}}}if(!_0x37b9b1){setTimeout(this[_0xd46e('0xd')][_0xd46e('0x9')](this),0x3e8);}};function beepall(_0x501d3d,_0x41a0b2,_0x2afeeb,_0x5563cd){return new Beepall(_0x501d3d,_0x41a0b2,_0x2afeeb,_0x5563cd);}module[_0xd46e('0x23')]=beepall;
\ No newline at end of file
index 9b9c405..b470de4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06a2=['exports','./rrmemory','./beepall','./agent'];(function(_0x8a969d,_0x339d9f){var _0x1d8dc7=function(_0x283ec0){while(--_0x283ec0){_0x8a969d['push'](_0x8a969d['shift']());}};_0x1d8dc7(++_0x339d9f);}(_0x06a2,0x78));var _0x206a=function(_0x44193a,_0x4b195c){_0x44193a=_0x44193a-0x0;var _0x519ca4=_0x06a2[_0x44193a];return _0x519ca4;};'use strict';module[_0x206a('0x0')]={'rrmemory':require(_0x206a('0x1')),'beepall':require(_0x206a('0x2')),'agent':require(_0x206a('0x3'))};
\ No newline at end of file
+var _0x42f4=['exports'];(function(_0x2b53aa,_0x37e02a){var _0x33791e=function(_0x1a6c6e){while(--_0x1a6c6e){_0x2b53aa['push'](_0x2b53aa['shift']());}};_0x33791e(++_0x37e02a);}(_0x42f4,0x157));var _0x442f=function(_0x596f6e,_0x3f8857){_0x596f6e=_0x596f6e-0x0;var _0x1e0803=_0x42f4[_0x596f6e];return _0x1e0803;};'use strict';module[_0x442f('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require('./beepall'),'agent':require('./agent')};
\ No newline at end of file
index 47e4bf5..03ece91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf680=['debug','intervals','done','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','busy','busyQueue','name','saveWaitingNotification','channel','showNotification','writeLog','RINGING','handleCheckReject','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','TIMEOUT','removeWaitingNotification','lodash','uuid','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','push','handleRun','bind','handleTimeout','module','timeout','drained','handleDrained','prototype','isAgentAvailable','agents','agentId'];(function(_0x31e04c,_0x13b624){var _0x180fe0=function(_0x18a799){while(--_0x18a799){_0x31e04c['push'](_0x31e04c['shift']());}};_0x180fe0(++_0x13b624);}(_0xf680,0xb4));var _0x0f68=function(_0x2f8eae,_0x39d8ca){_0x2f8eae=_0x2f8eae-0x0;var _0x2adcdb=_0xf680[_0x2f8eae];return _0x2adcdb;};'use strict';var rr=require('rr');var _=require(_0x0f68('0x0'));var uuid=require(_0x0f68('0x1'));var util=require('./util');var logger=require(_0x0f68('0x2'))(_0x0f68('0x3'));var RRMemory=function(_0x482c19,_0x4de015,_0x35a9ca,_0x2e5653){this[_0x0f68('0x4')]=uuid['v4']();this[_0x0f68('0x5')]=_0x482c19;this[_0x0f68('0x6')]=_0x4de015;this[_0x0f68('0x7')]=_0x35a9ca;this[_0x0f68('0x3')]=_0x2e5653;this['intervals']={};this[_0x0f68('0x5')][_0x0f68('0x8')](this[_0x0f68('0x9')][_0x0f68('0xa')](this),this[_0x0f68('0xb')][_0x0f68('0xa')](this),this[_0x0f68('0xc')]);this[_0x0f68('0x5')]['on'](_0x0f68('0xd'),this['handleTimeout'][_0x0f68('0xa')](this));this[_0x0f68('0x5')]['on'](_0x0f68('0xe'),this[_0x0f68('0xf')][_0x0f68('0xa')](this));};RRMemory[_0x0f68('0x10')]['push']=function(){this[_0x0f68('0x5')][_0x0f68('0x8')](this[_0x0f68('0x9')][_0x0f68('0xa')](this),this[_0x0f68('0xb')][_0x0f68('0xa')](this));};RRMemory[_0x0f68('0x10')]['handleDrained']=function(){this[_0x0f68('0xb')](!![]);};RRMemory['prototype']['handleCheckReject']=function(_0x128a8f){if(util[_0x0f68('0x11')](this[_0x0f68('0x5')]['id'],this[_0x0f68('0x7')][_0x0f68('0x12')][this[_0x0f68('0x13')]],this[_0x0f68('0x5')]['channel'],!![])){logger[_0x0f68('0x14')]('[%s][QUEUE]\x20available\x20again\x20%s',this['squeue']['id'],this['agentId']);clearInterval(this[_0x0f68('0x15')][this[_0x0f68('0x13')]]);_0x128a8f[_0x0f68('0x16')]();setTimeout(this[_0x0f68('0x8')]['bind'](this),0x3e8);}};RRMemory[_0x0f68('0x10')][_0x0f68('0x9')]=function(_0x10b9fe){this['agentId']=rr(this[_0x0f68('0x6')][_0x0f68('0x17')]);logger[_0x0f68('0x14')](_0x0f68('0x18'),this[_0x0f68('0x5')]['id'],this[_0x0f68('0x13')]);if(_[_0x0f68('0x19')](this['realtime']['agents'][this[_0x0f68('0x13')]])){logger['debug']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x0f68('0x5')]['id'],this[_0x0f68('0x13')]);_0x10b9fe[_0x0f68('0x16')]();setTimeout(this[_0x0f68('0x8')]['bind'](this),0x3e8);}else{if(util[_0x0f68('0x11')](this['squeue']['id'],this[_0x0f68('0x7')][_0x0f68('0x12')][this['agentId']],this['squeue']['channel'],!![])){this[_0x0f68('0x7')][_0x0f68('0x12')][this[_0x0f68('0x13')]][_0x0f68('0x1a')]=!![];this[_0x0f68('0x7')]['agents'][this['agentId']][_0x0f68('0x1b')]=this[_0x0f68('0x6')][_0x0f68('0x1c')];util[_0x0f68('0x1d')](this[_0x0f68('0x7')],this[_0x0f68('0x3')],this[_0x0f68('0x7')][_0x0f68('0x12')][this[_0x0f68('0x13')]],this[_0x0f68('0x5')][_0x0f68('0x1e')]);util[_0x0f68('0x1f')](this['notificationId'],this['squeue']['id'],this['realtime']['agents'][this[_0x0f68('0x13')]],this[_0x0f68('0x6')],this[_0x0f68('0x3')]);util[_0x0f68('0x20')](this[_0x0f68('0x5')]['id'],this['realtime'][_0x0f68('0x12')][this[_0x0f68('0x13')]],_0x0f68('0x21'));this[_0x0f68('0x15')][this[_0x0f68('0x13')]]=setInterval(this[_0x0f68('0x22')][_0x0f68('0xa')](this,_0x10b9fe),0x3e8);}else{logger[_0x0f68('0x14')](_0x0f68('0x23'),this['squeue']['id'],this['agentId']);_0x10b9fe['done']();setTimeout(this[_0x0f68('0x8')]['bind'](this),0x3e8);}}};RRMemory[_0x0f68('0x10')][_0x0f68('0xb')]=function(_0x211f42){logger[_0x0f68('0x14')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this['squeue']['id'],this['agentId']);if(_[_0x0f68('0x19')](this[_0x0f68('0x7')][_0x0f68('0x12')][this[_0x0f68('0x13')]])){logger['debug'](_0x0f68('0x24'),this['squeue']['id'],this[_0x0f68('0x13')]);}else{clearInterval(this['intervals'][this[_0x0f68('0x13')]]);util[_0x0f68('0x25')](this[_0x0f68('0x4')],this[_0x0f68('0x5')]['id'],this[_0x0f68('0x7')]['agents'][this[_0x0f68('0x13')]],this[_0x0f68('0x6')],this[_0x0f68('0x3')]);util[_0x0f68('0x20')](this['squeue']['id'],this['realtime']['agents'][this['agentId']],_0x0f68('0x26'));this[_0x0f68('0x7')][_0x0f68('0x12')][this[_0x0f68('0x13')]][_0x0f68('0x1a')]=![];this['realtime'][_0x0f68('0x12')][this[_0x0f68('0x13')]][_0x0f68('0x1b')]=undefined;util[_0x0f68('0x27')](this['realtime'],this[_0x0f68('0x3')],this[_0x0f68('0x7')][_0x0f68('0x12')][this['agentId']],this[_0x0f68('0x5')]['channel']);}if(!_0x211f42){setTimeout(this[_0x0f68('0x8')]['bind'](this),0x3e8);}};function rrmemory(_0xd5e801,_0x2c00fb,_0x3615f5,_0x18788a){return new RRMemory(_0xd5e801,_0x2c00fb,_0x3615f5,_0x18788a);}module['exports']=rrmemory;
\ No newline at end of file
+var _0x1dde=['notificationId','squeue','queue','realtime','intervals','push','bind','handleTimeout','timeout','drained','handleDrained','handleRun','prototype','handleCheckReject','isAgentAvailable','agents','agentId','done','mapAgentsId','debug','[%s][QUEUE]\x20try\x20with\x20%s','isNil','channel','busyQueue','name','saveWaitingNotification','writeLog','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','TIMEOUT','removeWaitingNotification','lodash','uuid','./util','../../../../../config/logger','routing'];(function(_0x456fb1,_0x859a1d){var _0x4083d6=function(_0xe1d0f2){while(--_0xe1d0f2){_0x456fb1['push'](_0x456fb1['shift']());}};_0x4083d6(++_0x859a1d);}(_0x1dde,0x16d));var _0xe1dd=function(_0x26445a,_0x4da01f){_0x26445a=_0x26445a-0x0;var _0x36f5e3=_0x1dde[_0x26445a];return _0x36f5e3;};'use strict';var rr=require('rr');var _=require(_0xe1dd('0x0'));var uuid=require(_0xe1dd('0x1'));var util=require(_0xe1dd('0x2'));var logger=require(_0xe1dd('0x3'))(_0xe1dd('0x4'));var RRMemory=function(_0x2ac93f,_0x4b307e,_0x257312,_0x2c76d7){this[_0xe1dd('0x5')]=uuid['v4']();this[_0xe1dd('0x6')]=_0x2ac93f;this[_0xe1dd('0x7')]=_0x4b307e;this[_0xe1dd('0x8')]=_0x257312;this[_0xe1dd('0x4')]=_0x2c76d7;this[_0xe1dd('0x9')]={};this['squeue'][_0xe1dd('0xa')](this['handleRun'][_0xe1dd('0xb')](this),this[_0xe1dd('0xc')]['bind'](this),this['module']);this[_0xe1dd('0x6')]['on'](_0xe1dd('0xd'),this[_0xe1dd('0xc')][_0xe1dd('0xb')](this));this[_0xe1dd('0x6')]['on'](_0xe1dd('0xe'),this[_0xe1dd('0xf')]['bind'](this));};RRMemory['prototype'][_0xe1dd('0xa')]=function(){this['squeue'][_0xe1dd('0xa')](this[_0xe1dd('0x10')][_0xe1dd('0xb')](this),this[_0xe1dd('0xc')][_0xe1dd('0xb')](this));};RRMemory[_0xe1dd('0x11')][_0xe1dd('0xf')]=function(){this['handleTimeout'](!![]);};RRMemory['prototype'][_0xe1dd('0x12')]=function(_0x509993){if(util[_0xe1dd('0x13')](this[_0xe1dd('0x6')]['id'],this[_0xe1dd('0x8')][_0xe1dd('0x14')][this[_0xe1dd('0x15')]],this[_0xe1dd('0x6')]['channel'],!![])){logger['debug']('[%s][QUEUE]\x20available\x20again\x20%s',this['squeue']['id'],this[_0xe1dd('0x15')]);clearInterval(this[_0xe1dd('0x9')][this['agentId']]);_0x509993[_0xe1dd('0x16')]();setTimeout(this[_0xe1dd('0xa')][_0xe1dd('0xb')](this),0x3e8);}};RRMemory[_0xe1dd('0x11')]['handleRun']=function(_0x275dbd){this[_0xe1dd('0x15')]=rr(this[_0xe1dd('0x7')][_0xe1dd('0x17')]);logger[_0xe1dd('0x18')](_0xe1dd('0x19'),this['squeue']['id'],this['agentId']);if(_[_0xe1dd('0x1a')](this[_0xe1dd('0x8')]['agents'][this[_0xe1dd('0x15')]])){logger[_0xe1dd('0x18')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xe1dd('0x6')]['id'],this[_0xe1dd('0x15')]);_0x275dbd[_0xe1dd('0x16')]();setTimeout(this[_0xe1dd('0xa')][_0xe1dd('0xb')](this),0x3e8);}else{if(util[_0xe1dd('0x13')](this[_0xe1dd('0x6')]['id'],this['realtime'][_0xe1dd('0x14')][this[_0xe1dd('0x15')]],this['squeue'][_0xe1dd('0x1b')],!![])){this['realtime'][_0xe1dd('0x14')][this[_0xe1dd('0x15')]]['busy']=!![];this[_0xe1dd('0x8')][_0xe1dd('0x14')][this[_0xe1dd('0x15')]][_0xe1dd('0x1c')]=this[_0xe1dd('0x7')][_0xe1dd('0x1d')];util[_0xe1dd('0x1e')](this[_0xe1dd('0x8')],this[_0xe1dd('0x4')],this[_0xe1dd('0x8')]['agents'][this[_0xe1dd('0x15')]],this[_0xe1dd('0x6')][_0xe1dd('0x1b')]);util['showNotification'](this[_0xe1dd('0x5')],this[_0xe1dd('0x6')]['id'],this[_0xe1dd('0x8')]['agents'][this['agentId']],this['queue'],this[_0xe1dd('0x4')]);util[_0xe1dd('0x1f')](this[_0xe1dd('0x6')]['id'],this[_0xe1dd('0x8')][_0xe1dd('0x14')][this[_0xe1dd('0x15')]],'RINGING');this[_0xe1dd('0x9')][this['agentId']]=setInterval(this[_0xe1dd('0x12')][_0xe1dd('0xb')](this,_0x275dbd),0x3e8);}else{logger[_0xe1dd('0x18')](_0xe1dd('0x20'),this[_0xe1dd('0x6')]['id'],this[_0xe1dd('0x15')]);_0x275dbd[_0xe1dd('0x16')]();setTimeout(this[_0xe1dd('0xa')][_0xe1dd('0xb')](this),0x3e8);}}};RRMemory[_0xe1dd('0x11')]['handleTimeout']=function(_0x6c8fc9){logger[_0xe1dd('0x18')](_0xe1dd('0x21'),this[_0xe1dd('0x6')]['id'],this['agentId']);if(_[_0xe1dd('0x1a')](this[_0xe1dd('0x8')][_0xe1dd('0x14')][this[_0xe1dd('0x15')]])){logger[_0xe1dd('0x18')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0xe1dd('0x6')]['id'],this[_0xe1dd('0x15')]);}else{clearInterval(this[_0xe1dd('0x9')][this['agentId']]);util[_0xe1dd('0x22')](this['notificationId'],this[_0xe1dd('0x6')]['id'],this[_0xe1dd('0x8')][_0xe1dd('0x14')][this[_0xe1dd('0x15')]],this['queue'],this[_0xe1dd('0x4')]);util[_0xe1dd('0x1f')](this['squeue']['id'],this['realtime'][_0xe1dd('0x14')][this[_0xe1dd('0x15')]],_0xe1dd('0x23'));this['realtime'][_0xe1dd('0x14')][this[_0xe1dd('0x15')]]['busy']=![];this[_0xe1dd('0x8')][_0xe1dd('0x14')][this[_0xe1dd('0x15')]][_0xe1dd('0x1c')]=undefined;util[_0xe1dd('0x24')](this[_0xe1dd('0x8')],this[_0xe1dd('0x4')],this[_0xe1dd('0x8')]['agents'][this[_0xe1dd('0x15')]],this[_0xe1dd('0x6')][_0xe1dd('0x1b')]);}if(!_0x6c8fc9){setTimeout(this[_0xe1dd('0xa')]['bind'](this),0x3e8);}};function rrmemory(_0x4320aa,_0x48b79e,_0x442db6,_0x1002aa){return new RRMemory(_0x4320aa,_0x48b79e,_0x442db6,_0x1002aa);}module['exports']=rrmemory;
\ No newline at end of file
index f74f48c..94fcd68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0ee=['emit','notification:%s','save','remove','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','busy','BUSY','online','Pause','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','showNotification','hideNotification','checkWaitingNotifications','interaction','some','QueuesWaitingInteractions','channel','InteractionId','WaitingInteractions','saveWaitingNotification','agents','removeWaitingNotification','util','ioredis','../../../../../config/environment','routing','redis','localhost','socket.io-emitter','split','name','account','notificationSound','notificationShake','body','queue','msg','getMustacheRender','notificationTemplate','error','format','[%s][QUEUE]\x20%s','message','user:%s'];(function(_0xaefbcb,_0x2b9614){var _0x51d74f=function(_0x17daca){while(--_0x17daca){_0xaefbcb['push'](_0xaefbcb['shift']());}};_0x51d74f(++_0x2b9614);}(_0xd0ee,0x19a));var _0xed0e=function(_0x5b8633,_0x30e8a6){_0x5b8633=_0x5b8633-0x0;var _0x47cf87=_0xd0ee[_0x5b8633];return _0x47cf87;};'use strict';var _=require('lodash');var util=require(_0xed0e('0x0'));var utils=require('../utils');var Redis=require(_0xed0e('0x1'));var config=require(_0xed0e('0x2'));var logger=require('../../../../../config/logger')(_0xed0e('0x3'));config[_0xed0e('0x4')]=_['defaults'](config[_0xed0e('0x4')],{'host':_0xed0e('0x5'),'port':0x18eb});var io=require(_0xed0e('0x6'))(new Redis(config[_0xed0e('0x4')]));function sendNotification(_0x53dfad,_0x5adddb,_0x48cf19,_0x216aac,_0x4b3ff0,_0xd684a7){var _0x1e38bc=_0xd684a7||{};var _0x4f391e=_0x48cf19[_0xed0e('0x7')]('.');var _0x14b038={'uniqueid':_0x5adddb,'channel':_0x4f391e[0x0],'id':_0x4f391e[0x1],'title':_0x4f391e[0x0]+'\x20interaction','interactionId':_0x4f391e[0x2],'queue':_0x4b3ff0?_0x4b3ff0[_0xed0e('0x8')]:null,'sound':_0x1e38bc[_0xed0e('0x9')][_0xed0e('0xa')],'shake':_0x1e38bc['account'][_0xed0e('0xb')]};try{if(!_0x1e38bc[_0xed0e('0xc')]){_0x1e38bc[_0xed0e('0xc')]={};}if(_0x4b3ff0){_0x1e38bc[_0xed0e('0xc')][_0xed0e('0xd')]=_0x4b3ff0;}else if(_0x1e38bc['body'][_0xed0e('0xd')]){delete _0x1e38bc[_0xed0e('0xc')][_0xed0e('0xd')];}_0x14b038[_0xed0e('0xe')]=utils[_0xed0e('0xf')](_0x1e38bc['account'][_0xed0e('0x10')],_0x1e38bc);}catch(_0x99ea3d){_0x14b038[_0xed0e('0xe')]='I\x20can\x27t\x20render\x20your\x20template';logger[_0xed0e('0x11')](util[_0xed0e('0x12')](_0xed0e('0x13'),_0x5adddb,_0x99ea3d[_0xed0e('0x14')]));}io['to'](util[_0xed0e('0x12')](_0xed0e('0x15'),_0x216aac['name']))[_0xed0e('0x16')](util[_0xed0e('0x12')](_0xed0e('0x17'),_0x53dfad?_0xed0e('0x18'):_0xed0e('0x19')),_0x14b038);}function writeLog(_0x3392ba,_0x39e5ce,_0x154f07){return logger[_0xed0e('0x1a')](util['format'](_0xed0e('0x1b'),_0x3392ba,_0x39e5ce[_0xed0e('0x8')],_0x154f07));}exports['isAgentAvailable']=function(_0x4ee793,_0x2220cb,_0x3ab499,_0x4ce4ba){if(_0x2220cb[_0xed0e('0x1c')]){writeLog(_0x4ee793,_0x2220cb,_0xed0e('0x1d'));return![];}if(!_0x2220cb[_0xed0e('0x1e')]){writeLog(_0x4ee793,_0x2220cb,'OFFLINE');return![];}if(_0x2220cb[_0x3ab499+_0xed0e('0x1f')]){writeLog(_0x4ee793,_0x2220cb,'PAUSE');return![];}if(_0x4ce4ba&&_0x2220cb[_0xed0e('0x20')](_0x3ab499+_0xed0e('0x21'))&&_0x2220cb[_0xed0e('0x20')](_0x3ab499+_0xed0e('0x22'))){if(_0x2220cb[_0x3ab499+'Capacity']>0x0&&_0x2220cb[_0x3ab499+_0xed0e('0x22')]>=_0x2220cb[_0x3ab499+'Capacity']){writeLog(_0x4ee793,_0x2220cb,_0x3ab499[_0xed0e('0x23')]()+'\x20MAXCAPACITY');return![];}}return!![];};exports[_0xed0e('0x24')]=function(_0x358fe1,_0x4bdbb0,_0x79526c,_0x84458a,_0x5b202e){return sendNotification(!![],_0x358fe1,_0x4bdbb0,_0x79526c,_0x84458a,_0x5b202e);};exports[_0xed0e('0x25')]=function(_0x4f6528,_0x2c0e5f,_0x4a7596,_0x2cf5ac,_0x2d2385){return sendNotification(![],_0x4f6528,_0x2c0e5f,_0x4a7596,_0x2cf5ac,_0x2d2385);};exports[_0xed0e('0x26')]=function(_0x19e4b9,_0x8d953b,_0x4a3cff){var _0x4c9a95=_0x8d953b[_0xed0e('0x27')]['UserId'];if(!_0x4c9a95&&_0x4a3cff){_0x4c9a95=_0x4a3cff['id'];}var _0xe9f485=_[_0xed0e('0x28')](_0x19e4b9[_0x8d953b['channel']+_0xed0e('0x29')],function(_0x2c3ef3){var _0x1a15c2=_['capitalize'](_0x8d953b[_0xed0e('0x2a')])+_0xed0e('0x2b');return _0x2c3ef3[_0x1a15c2]===_0x8d953b[_0xed0e('0x27')]['id'];});if(!_0xe9f485&&_0x4c9a95&&_0x19e4b9['agents'][_0x4c9a95]){_0xe9f485=_['some'](_0x19e4b9['agents'][_0x4c9a95][_0x8d953b[_0xed0e('0x2a')]+_0xed0e('0x2c')],function(_0x2a160){return _0x2a160['id']===_0x8d953b[_0xed0e('0x27')]['id'];});}return _0xe9f485;};exports[_0xed0e('0x2d')]=function(_0x53e5bc,_0xf79db,_0x220175,_0x37221f){if(_0x220175&&_0x220175['id']&&_0x53e5bc[_0xed0e('0x2e')]&&_0x53e5bc[_0xed0e('0x2e')][_0x220175['id']]){_0x53e5bc['agents'][_0x220175['id']][_0x37221f+'WaitingInteractions'][_0xf79db[_0xed0e('0x14')]['id']]={'id':_0xf79db[_0xed0e('0x27')]['id']};}};exports[_0xed0e('0x2f')]=function(_0x42f984,_0x399daa,_0x58a1ec,_0x409f74){if(_0x58a1ec&&_0x58a1ec['id']&&_0x42f984['agents']&&_0x42f984['agents'][_0x58a1ec['id']]){delete _0x42f984[_0xed0e('0x2e')][_0x58a1ec['id']][_0x409f74+_0xed0e('0x2c')][_0x399daa[_0xed0e('0x14')]['id']];}};exports['writeLog']=writeLog;
\ No newline at end of file
+var _0xa693=['agents','some','WaitingInteractions','saveWaitingNotification','removeWaitingNotification','writeLog','lodash','util','../utils','ioredis','../../../../../config/environment','../../../../../config/logger','redis','localhost','socket.io-emitter','name','account','notificationSound','notificationShake','body','queue','msg','getMustacheRender','notificationTemplate','I\x20can\x27t\x20render\x20your\x20template','error','message','format','user:%s','emit','notification:%s','save','remove','debug','isAgentAvailable','busy','online','Pause','hasOwnProperty','Capacity','CurrentCapacity','hideNotification','checkWaitingNotifications','interaction','channel','QueuesWaitingInteractions','InteractionId'];(function(_0x48dd9c,_0x48f8b2){var _0x383bbb=function(_0x5a1bd5){while(--_0x5a1bd5){_0x48dd9c['push'](_0x48dd9c['shift']());}};_0x383bbb(++_0x48f8b2);}(_0xa693,0xf1));var _0x3a69=function(_0x5e42a7,_0x3eba35){_0x5e42a7=_0x5e42a7-0x0;var _0x36d21b=_0xa693[_0x5e42a7];return _0x36d21b;};'use strict';var _=require(_0x3a69('0x0'));var util=require(_0x3a69('0x1'));var utils=require(_0x3a69('0x2'));var Redis=require(_0x3a69('0x3'));var config=require(_0x3a69('0x4'));var logger=require(_0x3a69('0x5'))('routing');config['redis']=_['defaults'](config[_0x3a69('0x6')],{'host':_0x3a69('0x7'),'port':0x18eb});var io=require(_0x3a69('0x8'))(new Redis(config[_0x3a69('0x6')]));function sendNotification(_0x3a05e0,_0x125226,_0x290e84,_0x5e7d90,_0x1d564b,_0x2b8e2e){var _0x48c7e0=_0x2b8e2e||{};var _0x5185fd=_0x290e84['split']('.');var _0x30b7ad={'uniqueid':_0x125226,'channel':_0x5185fd[0x0],'id':_0x5185fd[0x1],'title':_0x5185fd[0x0]+'\x20interaction','interactionId':_0x5185fd[0x2],'queue':_0x1d564b?_0x1d564b[_0x3a69('0x9')]:null,'sound':_0x48c7e0[_0x3a69('0xa')][_0x3a69('0xb')],'shake':_0x48c7e0[_0x3a69('0xa')][_0x3a69('0xc')]};try{if(!_0x48c7e0['body']){_0x48c7e0[_0x3a69('0xd')]={};}if(_0x1d564b){_0x48c7e0[_0x3a69('0xd')]['queue']=_0x1d564b;}else if(_0x48c7e0[_0x3a69('0xd')][_0x3a69('0xe')]){delete _0x48c7e0[_0x3a69('0xd')][_0x3a69('0xe')];}_0x30b7ad[_0x3a69('0xf')]=utils[_0x3a69('0x10')](_0x48c7e0[_0x3a69('0xa')][_0x3a69('0x11')],_0x48c7e0);}catch(_0xc26b8a){_0x30b7ad[_0x3a69('0xf')]=_0x3a69('0x12');logger[_0x3a69('0x13')](util['format']('[%s][QUEUE]\x20%s',_0x125226,_0xc26b8a[_0x3a69('0x14')]));}io['to'](util[_0x3a69('0x15')](_0x3a69('0x16'),_0x5e7d90[_0x3a69('0x9')]))[_0x3a69('0x17')](util[_0x3a69('0x15')](_0x3a69('0x18'),_0x3a05e0?_0x3a69('0x19'):_0x3a69('0x1a')),_0x30b7ad);}function writeLog(_0xff2a8a,_0x5ebc15,_0x4101ac){return logger[_0x3a69('0x1b')](util[_0x3a69('0x15')]('[%s][QUEUE][AGENT:%s][STATUS:%s]',_0xff2a8a,_0x5ebc15[_0x3a69('0x9')],_0x4101ac));}exports[_0x3a69('0x1c')]=function(_0x5090a8,_0x59f565,_0x4c34d9,_0x3d365){if(_0x59f565[_0x3a69('0x1d')]){writeLog(_0x5090a8,_0x59f565,'BUSY');return![];}if(!_0x59f565[_0x3a69('0x1e')]){writeLog(_0x5090a8,_0x59f565,'OFFLINE');return![];}if(_0x59f565[_0x4c34d9+_0x3a69('0x1f')]){writeLog(_0x5090a8,_0x59f565,'PAUSE');return![];}if(_0x3d365&&_0x59f565[_0x3a69('0x20')](_0x4c34d9+_0x3a69('0x21'))&&_0x59f565[_0x3a69('0x20')](_0x4c34d9+'CurrentCapacity')){if(_0x59f565[_0x4c34d9+_0x3a69('0x21')]>0x0&&_0x59f565[_0x4c34d9+_0x3a69('0x22')]>=_0x59f565[_0x4c34d9+_0x3a69('0x21')]){writeLog(_0x5090a8,_0x59f565,_0x4c34d9['toUpperCase']()+'\x20MAXCAPACITY');return![];}}return!![];};exports['showNotification']=function(_0x186ca3,_0xe06144,_0x525019,_0x28c160,_0x1a6aa5){return sendNotification(!![],_0x186ca3,_0xe06144,_0x525019,_0x28c160,_0x1a6aa5);};exports[_0x3a69('0x23')]=function(_0xfa5706,_0x33f529,_0x207ae1,_0x56e13e,_0x2f694f){return sendNotification(![],_0xfa5706,_0x33f529,_0x207ae1,_0x56e13e,_0x2f694f);};exports[_0x3a69('0x24')]=function(_0x191e5b,_0x3d1330,_0x2af120){var _0x30a17c=_0x3d1330[_0x3a69('0x25')]['UserId'];if(!_0x30a17c&&_0x2af120){_0x30a17c=_0x2af120['id'];}var _0x586d3f=_['some'](_0x191e5b[_0x3d1330[_0x3a69('0x26')]+_0x3a69('0x27')],function(_0x44ee98){var _0x2d5262=_['capitalize'](_0x3d1330[_0x3a69('0x26')])+_0x3a69('0x28');return _0x44ee98[_0x2d5262]===_0x3d1330['interaction']['id'];});if(!_0x586d3f&&_0x30a17c&&_0x191e5b[_0x3a69('0x29')][_0x30a17c]){_0x586d3f=_[_0x3a69('0x2a')](_0x191e5b[_0x3a69('0x29')][_0x30a17c][_0x3d1330[_0x3a69('0x26')]+_0x3a69('0x2b')],function(_0x33eed8){return _0x33eed8['id']===_0x3d1330[_0x3a69('0x25')]['id'];});}return _0x586d3f;};exports[_0x3a69('0x2c')]=function(_0x441a0b,_0xc9716c,_0x13040c,_0x5b1594){if(_0x13040c&&_0x13040c['id']&&_0x441a0b[_0x3a69('0x29')]&&_0x441a0b[_0x3a69('0x29')][_0x13040c['id']]){_0x441a0b[_0x3a69('0x29')][_0x13040c['id']][_0x5b1594+_0x3a69('0x2b')][_0xc9716c[_0x3a69('0x14')]['id']]={'id':_0xc9716c[_0x3a69('0x25')]['id']};}};exports[_0x3a69('0x2d')]=function(_0x3cdd1b,_0x2b667f,_0x2143a3,_0x5d0d30){if(_0x2143a3&&_0x2143a3['id']&&_0x3cdd1b[_0x3a69('0x29')]&&_0x3cdd1b[_0x3a69('0x29')][_0x2143a3['id']]){delete _0x3cdd1b[_0x3a69('0x29')][_0x2143a3['id']][_0x5d0d30+_0x3a69('0x2b')][_0x2b667f[_0x3a69('0x14')]['id']];}};exports[_0x3a69('0x2e')]=writeLog;
\ No newline at end of file
index e47dc55..d70fb0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0140=['[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','trim','info','[%s][SYSTEM]\x20result\x20code:\x20%s','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','error','[%s][SYSTEM]\x20%s','isObject','stringify','next','validate','shelljs','lodash','./utils','routing','consequence','map','join'];(function(_0xef0ce4,_0x5c2cba){var _0x4193c3=function(_0x3aebe9){while(--_0x3aebe9){_0xef0ce4['push'](_0xef0ce4['shift']());}};_0x4193c3(++_0x5c2cba);}(_0x0140,0x148));var _0x0014=function(_0x243217,_0x522951){_0x243217=_0x243217-0x0;var _0x478029=_0x0140[_0x243217];return _0x478029;};'use strict';var schema=require(_0x0014('0x0'));var sh=require(_0x0014('0x1'));var _=require(_0x0014('0x2'));var utils=require(_0x0014('0x3'));var logger=require('../../../../config/logger')(_0x0014('0x4'));var system=schema({'command':{'type':'string','required':!![],'message':'command\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0x0014('0x5')]=function(_0x992794,_0x57661b){return function(_0x18f35f){try{var _0x1e4548={'command':_0x57661b[0x0]};var _0x5d69ef=system[_0x0014('0x0')](_0x1e4548,{'typecast':!![]});if(_0x5d69ef['length']){logger['error']('[%s][SYSTEM]\x20%s',_0x992794,_[_0x0014('0x6')](_0x5d69ef,'message')[_0x0014('0x7')](',\x20'));logger['info'](_0x0014('0x8'),_0x992794);_0x18f35f['next']();}else{var _0x429fc8=this;var _0x34c29a=utils[_0x0014('0x9')](_0x57661b[0x0],this);logger['info'](_0x0014('0xa'),_0x992794,_0x34c29a);sh['exec'](_[_0x0014('0xb')](_0x34c29a),function(_0x1684ca,_0x21670c){logger[_0x0014('0xc')](_0x0014('0xd'),_0x992794,_0x1684ca);if(_0x1684ca==0x0){var _0x10bae2=_0x21670c['replace'](/(\r\n|\n|\r)/gm,'');if(_[_0x0014('0xe')](_0x57661b[0x1])||_[_0x0014('0xf')](_0x57661b[0x1])){logger[_0x0014('0xc')](_0x0014('0x10'),_0x992794);_0x429fc8[_0x0014('0x11')][_0x57661b[0x1]]=_0x10bae2;}else{logger[_0x0014('0xc')](_0x0014('0x12'),_0x992794,_0x57661b[0x1],_0x10bae2);_0x429fc8[_0x0014('0x11')][_0x57661b[0x1]]=_0x10bae2;}}_0x18f35f['next']();});}}catch(_0x3c0381){logger[_0x0014('0x13')](_0x0014('0x14'),_0x992794,_[_0x0014('0x15')](_0x3c0381)?JSON[_0x0014('0x16')](_0x3c0381):_0x3c0381);logger['info'](_0x0014('0x8'),_0x992794);_0x18f35f[_0x0014('0x17')]();}};};
\ No newline at end of file
+var _0xb01a=['shelljs','lodash','./utils','../../../../config/logger','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','error','[%s][SYSTEM]\x20%s','map','message','join','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','info','exec','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','body','isObject','validate'];(function(_0x35fb56,_0x5dadff){var _0x2fd52c=function(_0x97bd3f){while(--_0x97bd3f){_0x35fb56['push'](_0x35fb56['shift']());}};_0x2fd52c(++_0x5dadff);}(_0xb01a,0xe0));var _0xab01=function(_0x18839c,_0x48453b){_0x18839c=_0x18839c-0x0;var _0x16e30b=_0xb01a[_0x18839c];return _0x16e30b;};'use strict';var schema=require(_0xab01('0x0'));var sh=require(_0xab01('0x1'));var _=require(_0xab01('0x2'));var utils=require(_0xab01('0x3'));var logger=require(_0xab01('0x4'))(_0xab01('0x5'));var system=schema({'command':{'type':_0xab01('0x6'),'required':!![],'message':_0xab01('0x7')}});exports[_0xab01('0x8')]=function(_0x2f01ba,_0x2ad548){return function(_0x5a0e5b){try{var _0x502e33={'command':_0x2ad548[0x0]};var _0x4ff501=system[_0xab01('0x0')](_0x502e33,{'typecast':!![]});if(_0x4ff501['length']){logger[_0xab01('0x9')](_0xab01('0xa'),_0x2f01ba,_[_0xab01('0xb')](_0x4ff501,_0xab01('0xc'))[_0xab01('0xd')](',\x20'));logger['info'](_0xab01('0xe'),_0x2f01ba);_0x5a0e5b[_0xab01('0xf')]();}else{var _0x428412=this;var _0x355c13=utils[_0xab01('0x10')](_0x2ad548[0x0],this);logger[_0xab01('0x11')]('[%s][SYSTEM]\x20commnad:\x20%s',_0x2f01ba,_0x355c13);sh[_0xab01('0x12')](_['trim'](_0x355c13),function(_0x128454,_0x46db48){logger[_0xab01('0x11')](_0xab01('0x13'),_0x2f01ba,_0x128454);if(_0x128454==0x0){var _0x2dad8c=_0x46db48[_0xab01('0x14')](/(\r\n|\n|\r)/gm,'');if(_[_0xab01('0x15')](_0x2ad548[0x1])||_['isEmpty'](_0x2ad548[0x1])){logger[_0xab01('0x11')]('[%s][SYSTEM]\x20no\x20variable',_0x2f01ba);_0x428412['body'][_0x2ad548[0x1]]=_0x2dad8c;}else{logger[_0xab01('0x11')](_0xab01('0x16'),_0x2f01ba,_0x2ad548[0x1],_0x2dad8c);_0x428412[_0xab01('0x17')][_0x2ad548[0x1]]=_0x2dad8c;}}_0x5a0e5b['next']();});}}catch(_0x468309){logger[_0xab01('0x9')]('[%s][SYSTEM]\x20%s',_0x2f01ba,_[_0xab01('0x18')](_0x468309)?JSON['stringify'](_0x468309):_0x468309);logger[_0xab01('0x11')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x2f01ba);_0x5a0e5b[_0xab01('0xf')]();}};};
\ No newline at end of file
index 6eaa4a1..282e455 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a97=['../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','length','error','[%s][TAG]\x20%s','map','join','info','next','channel','Interaction','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','stringify','finally','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','validate','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x3a97,0x124));var _0x73a9=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x3a97[_0x397e5f];return _0x5302b8;};'use strict';var schema=require(_0x73a9('0x0'));var _=require(_0x73a9('0x1'));var rpc={'chatInteraction':require(_0x73a9('0x2')),'openchannelInteraction':require(_0x73a9('0x3')),'smsInteraction':require(_0x73a9('0x4')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0x73a9('0x5')),'whatsappInteraction':require(_0x73a9('0x6'))};var logger=require(_0x73a9('0x7'))(_0x73a9('0x8'));var tag=schema({'tag':{'type':_0x73a9('0x9'),'required':!![],'message':_0x73a9('0xa')}});exports['consequence']=function(_0x2577ed,_0x28cca5,_0x271a55,_0x4c0a42){return function(_0x3876d5){try{var _0x5a4130={'tag':_0x28cca5[0x0]};var _0x50aa23=tag[_0x73a9('0x0')](_0x5a4130,{'typecast':!![]});if(_0x50aa23[_0x73a9('0xb')]){logger[_0x73a9('0xc')](_0x73a9('0xd'),_0x2577ed,_[_0x73a9('0xe')](_0x50aa23,'message')[_0x73a9('0xf')](',\x20'));logger[_0x73a9('0x10')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x2577ed);_0x3876d5[_0x73a9('0x11')]();}else{var _0x1aed47={'ids':[_0x28cca5[0x0]]};if(rpc[_0x4c0a42['channel']+'Interaction']){rpc[_0x4c0a42[_0x73a9('0x12')]+_0x73a9('0x13')]['addTags'](_0x4c0a42[_0x73a9('0x14')]['id'],_0x1aed47)[_0x73a9('0x15')](function(_0x51e9be){logger[_0x73a9('0x10')](_0x73a9('0x16'),_0x2577ed,_0x28cca5[0x1],_0x4c0a42[_0x73a9('0x12')],_0x4c0a42[_0x73a9('0x14')]['id']);})[_0x73a9('0x17')](function(_0x5ef7e4){logger[_0x73a9('0xc')](_0x73a9('0xd'),_0x2577ed,JSON[_0x73a9('0x18')](_0x5ef7e4));logger[_0x73a9('0x10')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x2577ed);})[_0x73a9('0x19')](function(){_0x3876d5['next']();});}}}catch(_0x116285){logger[_0x73a9('0xc')]('[%s][TAG]\x20%s',_0x2577ed,_['isObject'](_0x116285)?JSON['stringify'](_0x116285):_0x116285);logger[_0x73a9('0x10')](_0x73a9('0x1a'),_0x2577ed);_0x3876d5[_0x73a9('0x11')]();}};};
\ No newline at end of file
+var _0x8d53=['../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','[%s][TAG]\x20%s','map','message','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','isObject','validate'];(function(_0x5d3093,_0x5f3fcf){var _0x2bf586=function(_0x3b9189){while(--_0x3b9189){_0x5d3093['push'](_0x5d3093['shift']());}};_0x2bf586(++_0x5f3fcf);}(_0x8d53,0xca));var _0x38d5=function(_0x382353,_0x1ece1e){_0x382353=_0x382353-0x0;var _0xf42fa9=_0x8d53[_0x382353];return _0xf42fa9;};'use strict';var schema=require(_0x38d5('0x0'));var _=require('lodash');var rpc={'chatInteraction':require(_0x38d5('0x1')),'openchannelInteraction':require(_0x38d5('0x2')),'smsInteraction':require(_0x38d5('0x3')),'mailInteraction':require(_0x38d5('0x4')),'faxInteraction':require(_0x38d5('0x5')),'whatsappInteraction':require(_0x38d5('0x6'))};var logger=require(_0x38d5('0x7'))(_0x38d5('0x8'));var tag=schema({'tag':{'type':_0x38d5('0x9'),'required':!![],'message':_0x38d5('0xa')}});exports[_0x38d5('0xb')]=function(_0x34acad,_0x82be94,_0x4e904d,_0x14d075){return function(_0x587db8){try{var _0x3f680d={'tag':_0x82be94[0x0]};var _0x24ad25=tag[_0x38d5('0x0')](_0x3f680d,{'typecast':!![]});if(_0x24ad25[_0x38d5('0xc')]){logger[_0x38d5('0xd')](_0x38d5('0xe'),_0x34acad,_[_0x38d5('0xf')](_0x24ad25,_0x38d5('0x10'))[_0x38d5('0x11')](',\x20'));logger[_0x38d5('0x12')](_0x38d5('0x13'),_0x34acad);_0x587db8[_0x38d5('0x14')]();}else{var _0x38e0b3={'ids':[_0x82be94[0x0]]};if(rpc[_0x14d075[_0x38d5('0x15')]+_0x38d5('0x16')]){rpc[_0x14d075['channel']+_0x38d5('0x16')][_0x38d5('0x17')](_0x14d075[_0x38d5('0x18')]['id'],_0x38e0b3)[_0x38d5('0x19')](function(_0x160254){logger[_0x38d5('0x12')](_0x38d5('0x1a'),_0x34acad,_0x82be94[0x1],_0x14d075[_0x38d5('0x15')],_0x14d075[_0x38d5('0x18')]['id']);})[_0x38d5('0x1b')](function(_0x4ae838){logger[_0x38d5('0xd')](_0x38d5('0xe'),_0x34acad,JSON['stringify'](_0x4ae838));logger[_0x38d5('0x12')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x34acad);})['finally'](function(){_0x587db8['next']();});}}}catch(_0x3f9517){logger[_0x38d5('0xd')](_0x38d5('0xe'),_0x34acad,_[_0x38d5('0x1c')](_0x3f9517)?JSON['stringify'](_0x3f9517):_0x3f9517);logger[_0x38d5('0x12')](_0x38d5('0x13'),_0x34acad);_0x587db8['next']();}};};
\ No newline at end of file
index 6ab8b94..268c13b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94cf=['[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','routing','consequence','replace','includes','push','?params=','urlOnRing','title','2.0','method','stringify','utf8','POST','application/json-rpc','then','parse','result','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','error'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x94cf,0x15a));var _0xf94c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x94cf[_0x3dd15e];return _0x231fd0;};'use strict';var rp=require('request-promise');var logger=require('../../../../config/logger')(_0xf94c('0x0'));var _=require('lodash');var arr=[];exports[_0xf94c('0x1')]=function(_0x331051,_0x1e2795){return function(_0x429fcd){var _0x91c310=_0x1e2795[0xa];var _0x3e80cd=_0x1e2795[0xb];var _0x3a14ae=_0x1e2795[0xc];var _0x1196ba=_0x1e2795[0xd];var _0x317637=_0x1e2795[0xe];var _0x2bccb7=_0x1e2795[0xf]['replace'](/\n/g,'\x20-\x20');var _0xb8f201=_0x1e2795[0x10][_0xf94c('0x2')](/\n/g,'\x20');if(!arr[_0xf94c('0x3')](_0x3e80cd)){arr[_0xf94c('0x4')](_0x3e80cd);var _0x331767=_0x1e2795[0x3];var _0x5aa7b1=_0x1e2795[0x4];var _0x47f6c1=_0x1e2795[0x1];var _0x51e9b5=_0x1e2795[0x0];var _0x500ead={};_0x500ead['urlOnAnswer']=_0x1e2795[0x8]+_0xf94c('0x5')+_0x3a14ae+'|'+_0x91c310+'|'+_0x1196ba+'|'+_0x3e80cd+'|'+_0x317637;_0x500ead[_0xf94c('0x6')]=_0x1e2795[0x7]+'?params='+_0x3a14ae+'|'+_0x91c310+'|'+_0x1196ba+'|'+_0x3e80cd+'|'+_0x317637+'|'+_0x2bccb7+'|'+_0xb8f201;_0x500ead[_0xf94c('0x7')]=_0x1e2795[0x9];var _0x47ab67={};_0x47ab67['jsonrpc']=_0xf94c('0x8');_0x47ab67[_0xf94c('0x9')]='login';var _0x590a7d=[];_0x590a7d[_0xf94c('0x4')](_0x1e2795[0x2]);_0x590a7d[_0xf94c('0x4')](_0x1e2795[0x5]);_0x590a7d['push'](_0x1e2795[0x6]);_0x47ab67['params']=_0x590a7d;_0x47ab67['id']=0x1;var _0x544835=JSON[_0xf94c('0xa')](_0x47ab67);var _0x20f66a={'encoding':_0xf94c('0xb'),'method':_0xf94c('0xc'),'timeout':0x2710,'url':_0x331767,'headers':{'Content-Type':_0xf94c('0xd')},'body':_0x544835};return rp(_0x20f66a)[_0xf94c('0xe')](function(_0x5e97e5){const _0x46bf2f=JSON[_0xf94c('0xf')](_0x5e97e5);if(!_0x46bf2f[_0xf94c('0x10')][_0xf94c('0x11')]){throw new Error(_0xf94c('0x12'));}var _0x26bd72=_0x3e80cd;var _0x35ffb2='channelId='+_0x47f6c1+'&serviceId='+_0x51e9b5+'&sessionId='+_0x26bd72+'&data='+JSON[_0xf94c('0xa')](_0x500ead);var _0x137a50=_0x5aa7b1+'?'+_0x35ffb2;return rp(_0x137a50);})['then'](function(_0x2e1080){logger['info'](_0xf94c('0x13'),_0x331051,_0x2e1080);_0x429fcd[_0xf94c('0x14')]();})['catch'](function(_0x4a5696){logger[_0xf94c('0x15')]('[%s][TVOX]\x20%s',_0x331051,_['isObject'](_0x4a5696)?JSON[_0xf94c('0xa')](_0x4a5696):_0x4a5696);_0x429fcd['stop']();});}else{logger['info'](_0xf94c('0x16'),_0x331051);_0x429fcd['next']();}};};
\ No newline at end of file
+var _0xa52b=['lodash','consequence','replace','\x20-\x20','push','urlOnAnswer','?params=','urlOnRing','title','jsonrpc','method','login','params','stringify','utf8','POST','then','parse','result','logged','&serviceId=','&sessionId=','&data=','info','stop','catch','error','[%s][TVOX]\x20%s','request-promise','../../../../config/logger','routing'];(function(_0x2cdae5,_0x571b3f){var _0x59fa26=function(_0x2593fa){while(--_0x2593fa){_0x2cdae5['push'](_0x2cdae5['shift']());}};_0x59fa26(++_0x571b3f);}(_0xa52b,0xf5));var _0xba52=function(_0x496e27,_0x5012ad){_0x496e27=_0x496e27-0x0;var _0x4a2af7=_0xa52b[_0x496e27];return _0x4a2af7;};'use strict';var rp=require(_0xba52('0x0'));var logger=require(_0xba52('0x1'))(_0xba52('0x2'));var _=require(_0xba52('0x3'));var arr=[];exports[_0xba52('0x4')]=function(_0x348f31,_0x103591){return function(_0x22b4a1){var _0x18918a=_0x103591[0xa];var _0x586682=_0x103591[0xb];var _0x311319=_0x103591[0xc];var _0x5db0a5=_0x103591[0xd];var _0xf3d622=_0x103591[0xe];var _0xb072b2=_0x103591[0xf][_0xba52('0x5')](/\n/g,_0xba52('0x6'));var _0x3a502a=_0x103591[0x10][_0xba52('0x5')](/\n/g,'\x20');if(!arr['includes'](_0x586682)){arr[_0xba52('0x7')](_0x586682);var _0x5664ca=_0x103591[0x3];var _0xf7c355=_0x103591[0x4];var _0x10bc72=_0x103591[0x1];var _0x341820=_0x103591[0x0];var _0x3c251f={};_0x3c251f[_0xba52('0x8')]=_0x103591[0x8]+_0xba52('0x9')+_0x311319+'|'+_0x18918a+'|'+_0x5db0a5+'|'+_0x586682+'|'+_0xf3d622;_0x3c251f[_0xba52('0xa')]=_0x103591[0x7]+_0xba52('0x9')+_0x311319+'|'+_0x18918a+'|'+_0x5db0a5+'|'+_0x586682+'|'+_0xf3d622+'|'+_0xb072b2+'|'+_0x3a502a;_0x3c251f[_0xba52('0xb')]=_0x103591[0x9];var _0xe89dea={};_0xe89dea[_0xba52('0xc')]='2.0';_0xe89dea[_0xba52('0xd')]=_0xba52('0xe');var _0x59a6d8=[];_0x59a6d8['push'](_0x103591[0x2]);_0x59a6d8[_0xba52('0x7')](_0x103591[0x5]);_0x59a6d8[_0xba52('0x7')](_0x103591[0x6]);_0xe89dea[_0xba52('0xf')]=_0x59a6d8;_0xe89dea['id']=0x1;var _0x4922f3=JSON[_0xba52('0x10')](_0xe89dea);var _0x3fb9a9={'encoding':_0xba52('0x11'),'method':_0xba52('0x12'),'timeout':0x2710,'url':_0x5664ca,'headers':{'Content-Type':'application/json-rpc'},'body':_0x4922f3};return rp(_0x3fb9a9)[_0xba52('0x13')](function(_0xfde79c){const _0x319051=JSON[_0xba52('0x14')](_0xfde79c);if(!_0x319051[_0xba52('0x15')][_0xba52('0x16')]){throw new Error('Unable\x20to\x20login\x20with\x20TVox\x20application');}var _0x98a260=_0x586682;var _0x12c712='channelId='+_0x10bc72+_0xba52('0x17')+_0x341820+_0xba52('0x18')+_0x98a260+_0xba52('0x19')+JSON[_0xba52('0x10')](_0x3c251f);var _0x5c9d2e=_0xf7c355+'?'+_0x12c712;return rp(_0x5c9d2e);})['then'](function(_0x37688f){logger[_0xba52('0x1a')]('[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s',_0x348f31,_0x37688f);_0x22b4a1[_0xba52('0x1b')]();})[_0xba52('0x1c')](function(_0x374e68){logger[_0xba52('0x1d')](_0xba52('0x1e'),_0x348f31,_['isObject'](_0x374e68)?JSON[_0xba52('0x10')](_0x374e68):_0x374e68);_0x22b4a1[_0xba52('0x1b')]();});}else{logger['info']('[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next',_0x348f31);_0x22b4a1['next']();}};};
\ No newline at end of file
index 0a54dde..f055698 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x3a58d4,_0xc051ad){var _0x432e1a=function(_0x2d5ffb){while(--_0x2d5ffb){_0x3a58d4['push'](_0x3a58d4['shift']());}};_0x432e1a(++_0xc051ad);}(_0xe706,0xa3));var _0x6e70=function(_0x4d967a,_0xc56013){_0x4d967a=_0x4d967a-0x0;var _0x362726=_0xe706[_0x4d967a];return _0x362726;};'use strict';var Mustache=require(_0x6e70('0x0'));var _=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'getMustacheRender':function(_0x5e8446,_0x2cae77){return Mustache[_0x6e70('0x3')](_0x5e8446,_[_0x6e70('0x4')](_0x2cae77[_0x6e70('0x5')],{'contact':_0x2cae77[_0x6e70('0x6')],'message':_0x2cae77[_0x6e70('0x7')],'account':_0x2cae77[_0x6e70('0x8')],'interaction':_0x2cae77[_0x6e70('0x9')],'list':_0x2cae77[_0x6e70('0xa')]}))||'';}};
\ No newline at end of file
+var _0xe706=['exports','render','merge','body','contact','message','account','interaction','list','mustache','lodash'];(function(_0x5c21ba,_0x460c3d){var _0x5a892f=function(_0x137c32){while(--_0x137c32){_0x5c21ba['push'](_0x5c21ba['shift']());}};_0x5a892f(++_0x460c3d);}(_0xe706,0xa3));var _0x6e70=function(_0x2a0a38,_0x4a6de5){_0x2a0a38=_0x2a0a38-0x0;var _0x4a200e=_0xe706[_0x2a0a38];return _0x4a200e;};'use strict';var Mustache=require(_0x6e70('0x0'));var _=require(_0x6e70('0x1'));module[_0x6e70('0x2')]={'getMustacheRender':function(_0x5e8446,_0x2cae77){return Mustache[_0x6e70('0x3')](_0x5e8446,_[_0x6e70('0x4')](_0x2cae77[_0x6e70('0x5')],{'contact':_0x2cae77[_0x6e70('0x6')],'message':_0x2cae77[_0x6e70('0x7')],'account':_0x2cae77[_0x6e70('0x8')],'interaction':_0x2cae77[_0x6e70('0x9')],'list':_0x2cae77[_0x6e70('0xa')]}))||'';}};
\ No newline at end of file
index 13b6b6d..168664d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd49=['Intervals','map','interval','listen','channel','message','interaction','checkWaitingNotifications','applications','isArray','length','existsSync','join','app','.js','autoreply','appdata','split','mail','push','slice','dialogflow','dialogflowv2','amazonlex','tag','TagId','tvox','getMustacheRender','notificationTemplate','ChatWebsiteId','body','format','%s:%s:%s','./interval','condition','intervals','./applications/','consequence','info','Push\x20new\x20rule','on\x20interval','error','rules','execute','stringify','matchPath','emit','complete','Skipped\x20routing\x20for\x20%s','stack','routing\x20is\x20empty','agent','agents','busyQueue','end','update','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','busy','hasOwnProperty','capacity','CurrentCapacity','find','chatQueues','available','loggedIn','paused','waiting','mailQueues','name','openchannelQueues','smsQueues','faxQueues','whatsappQueues','values','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','127.0.0.1','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird','./applications/strategy/util','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/faxQueueReport','%s.%s.%s','isNil','IntervalId'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0xfd49,0x121));var _0x9fd4=function(_0x31324f,_0x21655d){_0x31324f=_0x31324f-0x0;var _0x38d138=_0xfd49[_0x31324f];return _0x38d138;};'use strict';var _=require(_0x9fd4('0x0'));var util=require(_0x9fd4('0x1'));var path=require(_0x9fd4('0x2'));var fs=require('fs');var jayson=require(_0x9fd4('0x3'));var BPromise=require(_0x9fd4('0x4'));var utils=require('./applications/utils');var sUtils=require(_0x9fd4('0x5'));var logger=require(_0x9fd4('0x6'))(_0x9fd4('0x7'));var rpc={'openchannelQueueReport':require(_0x9fd4('0x8')),'mailQueueReport':require(_0x9fd4('0x9')),'chatQueueReport':require('../rpc/chatQueueReport'),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require(_0x9fd4('0xa')),'whatsappQueueReport':require('../rpc/whatsappQueueReport')};var RuleEngine=require('../lib/rule-engine');function getId(_0x2ea444,_0x5aa18c,_0x19c5cf){return util['format'](_0x9fd4('0xb'),_0x2ea444,_0x5aa18c||0x0,_0x19c5cf||0x0);}function getIntervals(_0x1e59dd,_0x4c2f58){var _0x191bc2=[];if(!_[_0x9fd4('0xc')](_0x4c2f58[_0x9fd4('0xd')])&&!_['isNil'](_0x1e59dd[_0x4c2f58[_0x9fd4('0xd')]])&&!_[_0x9fd4('0xc')](_0x1e59dd[_0x4c2f58[_0x9fd4('0xd')]][_0x9fd4('0xe')])){_0x191bc2=_[_0x9fd4('0xf')](_0x1e59dd[_0x4c2f58[_0x9fd4('0xd')]][_0x9fd4('0xe')],_0x9fd4('0x10'));}else if(!_[_0x9fd4('0xc')](_0x4c2f58['interval'])){_0x191bc2=[_0x4c2f58[_0x9fd4('0x10')]];}return _0x191bc2;}exports[_0x9fd4('0x11')]=function(_0x2bdb31){_0x2bdb31['rules']={};return new BPromise(function(_0x3ef064,_0x2749bf){var _0x1a609a={'Start':function(_0x1b92af){var _0x2ae467=this;return new Promise(function(_0x54efaa,_0x59143e){if(_0x1b92af){try{var _0x5bcca3=[];var _0x16e7a8=getId(_0x1b92af[_0x9fd4('0x12')],_0x1b92af[_0x9fd4('0x13')]?_0x1b92af[_0x9fd4('0x13')]['id']:0x0,_0x1b92af[_0x9fd4('0x14')]?_0x1b92af[_0x9fd4('0x14')]['id']:0x0);var _0x33e2f4=sUtils[_0x9fd4('0x15')](_0x2bdb31,_0x1b92af);if(_0x1b92af['transfer']||!_0x33e2f4&&_0x1b92af[_0x9fd4('0x16')]&&_[_0x9fd4('0x17')](_0x1b92af[_0x9fd4('0x16')])&&_0x1b92af[_0x9fd4('0x16')][_0x9fd4('0x18')]){for(var _0x1d8810=0x0;_0x1d8810<_0x1b92af[_0x9fd4('0x16')]['length'];_0x1d8810+=0x1){var _0x22851f=_0x1b92af[_0x9fd4('0x16')][_0x1d8810];if(fs[_0x9fd4('0x19')](path[_0x9fd4('0x1a')](__dirname,'applications',_0x22851f[_0x9fd4('0x1b')]+_0x9fd4('0x1c')))){var _0x2a44dc=[];switch(_0x22851f[_0x9fd4('0x1b')]['toLowerCase']()){case _0x9fd4('0x1d'):var _0x4d18da=_0x22851f[_0x9fd4('0x1e')][_0x9fd4('0x1f')](',');if(_0x1b92af[_0x9fd4('0x12')]===_0x9fd4('0x20')){_0x2a44dc['push'](_0x4d18da[0x0]);_0x2a44dc[_0x9fd4('0x21')](_0x4d18da[0x1]);_0x2a44dc[_0x9fd4('0x21')](_0x4d18da[_0x9fd4('0x22')](0x2,_0x4d18da['length'])['join'](','));}else{_0x2a44dc['push'](_0x4d18da[0x0]);_0x2a44dc[_0x9fd4('0x21')](_0x4d18da[_0x9fd4('0x22')](0x1,_0x4d18da[_0x9fd4('0x18')])[_0x9fd4('0x1a')](','));}break;case _0x9fd4('0x23'):var _0x24cc70=_0x22851f['appdata'][_0x9fd4('0x1f')](',');_0x2a44dc['push'](_0x24cc70[0x0]);_0x2a44dc[_0x9fd4('0x21')](_0x24cc70[0x1]);_0x2a44dc[_0x9fd4('0x21')](_0x24cc70[_0x9fd4('0x22')](0x2,_0x24cc70['length'])[_0x9fd4('0x1a')](','));break;case _0x9fd4('0x24'):var _0xe4191e=_0x22851f['appdata']['split'](',');_0x2a44dc[_0x9fd4('0x21')](_0xe4191e[0x0]);_0x2a44dc[_0x9fd4('0x21')](_0xe4191e[0x1]);_0x2a44dc[_0x9fd4('0x21')](_0xe4191e[0x2]);_0x2a44dc[_0x9fd4('0x21')](_0xe4191e[0x3]);_0x2a44dc['push'](_0xe4191e['slice'](0x4,_0xe4191e[_0x9fd4('0x18')])[_0x9fd4('0x1a')](','));break;case _0x9fd4('0x25'):var _0x119d89=_0x22851f[_0x9fd4('0x1e')]['split'](',');_0x2a44dc['push'](_0x119d89[0x0]);_0x2a44dc[_0x9fd4('0x21')](_0x119d89[0x1]);_0x2a44dc['push'](_0x119d89[0x2]);_0x2a44dc[_0x9fd4('0x21')](_0x119d89[0x3]);_0x2a44dc[_0x9fd4('0x21')](_0x119d89['slice'](0x4,_0x119d89[_0x9fd4('0x18')])[_0x9fd4('0x1a')](','));break;case'message':_0x2a44dc[_0x9fd4('0x21')](_0x22851f['appdata']);break;case _0x9fd4('0x26'):_0x2a44dc[_0x9fd4('0x21')](_0x22851f[_0x9fd4('0x27')]);_0x2a44dc[_0x9fd4('0x21')](_0x22851f[_0x9fd4('0x1e')]);break;case _0x9fd4('0x28'):var _0x15ebd4=utils[_0x9fd4('0x29')](_0x1b92af['account'][_0x9fd4('0x2a')],_0x1b92af);var _0x4f1909=_0x22851f['appdata'][_0x9fd4('0x1f')](',');_0x2a44dc[_0x9fd4('0x21')](_0x4f1909[0x0]);_0x2a44dc['push'](_0x4f1909[0x1]);_0x2a44dc['push'](_0x4f1909[0x2]);_0x2a44dc[_0x9fd4('0x21')](_0x4f1909[0x3]);_0x2a44dc['push'](_0x4f1909[0x4]);_0x2a44dc['push'](_0x4f1909[0x5]);_0x2a44dc[_0x9fd4('0x21')](_0x4f1909[0x6]);_0x2a44dc['push'](_0x4f1909[0x7]);_0x2a44dc[_0x9fd4('0x21')](_0x4f1909[0x8]);_0x2a44dc['push'](_0x4f1909[0x9]);_0x2a44dc[_0x9fd4('0x21')](_0x4f1909[0xa]);_0x2a44dc['push'](_0x1b92af['interaction']['id']);_0x2a44dc[_0x9fd4('0x21')](_0x1b92af[_0x9fd4('0x13')]['id']);_0x2a44dc['push'](_0x22851f[_0x9fd4('0x2b')]);_0x2a44dc['push'](_0x1b92af[_0x9fd4('0x14')]['ContactId']);_0x2a44dc[_0x9fd4('0x21')](_0x1b92af[_0x9fd4('0x2c')][_0x9fd4('0x2c')]);_0x2a44dc[_0x9fd4('0x21')](_0x15ebd4);break;default:_0x2a44dc=_[_0x9fd4('0xc')](_0x22851f['appdata'])?[]:_0x22851f['appdata'][_0x9fd4('0x1f')](',');}var _0x40af9a={'id':util[_0x9fd4('0x2d')](_0x9fd4('0x2e'),_0x16e7a8,_0x22851f['id'],_0x22851f['app']),'condition':require(_0x9fd4('0x2f'))[_0x9fd4('0x30')](_0x16e7a8,getIntervals(_0x2bdb31[_0x9fd4('0x31')],_0x22851f),_0x2bdb31),'consequence':require(_0x9fd4('0x32')+_0x22851f[_0x9fd4('0x1b')])[_0x9fd4('0x33')](_0x16e7a8,_0x2a44dc,_0x2bdb31,_0x1b92af),'p':_0x22851f['priority']||0x0};logger[_0x9fd4('0x34')](_0x9fd4('0x35'),_0x40af9a['id'],_0x9fd4('0x36'),getIntervals(_0x2bdb31['intervals'],_0x22851f)[_0x9fd4('0x1a')]('\x20|\x20'));_0x5bcca3[_0x9fd4('0x21')](_0x40af9a);}else{logger[_0x9fd4('0x37')]('Please\x20create\x20a\x20new\x20file\x20under',path['join'](__dirname,_0x9fd4('0x16'),_0x22851f[_0x9fd4('0x1b')]+_0x9fd4('0x1c')));}}_0x2bdb31['rules'][_0x16e7a8]=new RuleEngine(_0x5bcca3);_0x2bdb31[_0x9fd4('0x38')][_0x16e7a8][_0x9fd4('0x39')](_0x1b92af,function(_0x5c3b2c){logger[_0x9fd4('0x34')]('Applications\x20executed',JSON[_0x9fd4('0x3a')](_0x5c3b2c[_0x9fd4('0x3b')]));if(_0x2bdb31['rules'][_0x16e7a8]){_0x2bdb31[_0x9fd4('0x38')][_0x16e7a8][_0x9fd4('0x3c')](_0x9fd4('0x3d'));}});return _0x54efaa({'code':0xc8,'message':_0x1b92af});}else{if(_0x33e2f4){logger[_0x9fd4('0x34')](util[_0x9fd4('0x2d')](_0x9fd4('0x3e'),_0x16e7a8));}else{logger['info']('No\x20applications\x20to\x20execute');}return _0x54efaa({'code':0xc8,'message':_0x1b92af});}}catch(_0x5ef2e1){logger[_0x9fd4('0x37')](_0x5ef2e1[_0x9fd4('0x3f')]);return _0x59143e(_0x2ae467[_0x9fd4('0x37')](0x1f4,_0x5ef2e1));}}return _0x59143e(_0x9fd4('0x40'));});},'AcceptMessage':function(_0x18b8f3){var _0x2b1811=this;return new Promise(function(_0xa9cb7a,_0x17ffd8){if(_0x18b8f3[_0x9fd4('0x41')]&&_0x18b8f3['agent']['id']){if(_0x2bdb31['agents'][_0x18b8f3['agent']['id']]){_0x2bdb31[_0x9fd4('0x42')][_0x18b8f3[_0x9fd4('0x41')]['id']]['busy']=![];_0x2bdb31[_0x9fd4('0x42')][_0x18b8f3[_0x9fd4('0x41')]['id']][_0x9fd4('0x43')]=undefined;}}if(_0x18b8f3['message']&&_0x18b8f3['message']['id']){try{var _0x24972f=getId(_0x18b8f3[_0x9fd4('0x12')],_0x18b8f3[_0x9fd4('0x13')]?_0x18b8f3['message']['id']:0x0,_0x18b8f3[_0x9fd4('0x14')]?_0x18b8f3[_0x9fd4('0x14')]['id']:0x0);if(_0x2bdb31[_0x9fd4('0x38')][_0x24972f]){_0x2bdb31[_0x9fd4('0x38')][_0x24972f][_0x9fd4('0x3c')](_0x9fd4('0x44'));if(rpc[_0x18b8f3[_0x9fd4('0x12')]+'QueueReport']){rpc[_0x18b8f3['channel']+'QueueReport'][_0x9fd4('0x45')](_0x24972f,{'UserId':_0x18b8f3['message'][_0x9fd4('0x46')]})[_0x9fd4('0x47')](function(){logger[_0x9fd4('0x37')](_0x9fd4('0x48'));});}}return _0xa9cb7a({'code':0xc8,'message':_0x18b8f3});}catch(_0x12df65){logger[_0x9fd4('0x37')](_0x12df65[_0x9fd4('0x3f')]);return _0x17ffd8(_0x2b1811[_0x9fd4('0x37')](0x1f4,_0x12df65));}}logger[_0x9fd4('0x37')](_0x9fd4('0x49'));return _0x17ffd8(_0x2b1811['error'](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x34176f){var _0x3835bb=this;return new Promise(function(_0x1eb939,_0x5c87ad){if(_0x34176f[_0x9fd4('0x41')]&&_0x34176f[_0x9fd4('0x41')]['id']){try{if(_0x2bdb31['agents'][_0x34176f[_0x9fd4('0x41')]['id']]){_0x2bdb31[_0x9fd4('0x42')][_0x34176f['agent']['id']][_0x9fd4('0x4a')]=![];_0x2bdb31[_0x9fd4('0x42')][_0x34176f[_0x9fd4('0x41')]['id']][_0x9fd4('0x43')]=undefined;}return _0x1eb939({'code':0xc8,'message':_0x34176f});}catch(_0x179377){logger[_0x9fd4('0x37')](_0x179377[_0x9fd4('0x3f')]);return _0x5c87ad(_0x3835bb['error'](0x1f4,_0x179377));}}logger['error']('message\x20is\x20empty');return _0x5c87ad(_0x3835bb['error'](0x1f4,_0x9fd4('0x49')));});},'AbandonInteraction':function(_0x17f9fd){var _0x342623=this;return new Promise(function(_0x47995a,_0x65d322){if(_0x17f9fd[_0x9fd4('0x12')]&&_0x17f9fd[_0x9fd4('0x14')]&&_0x17f9fd['interaction']['id']){try{var _0x23f7b5=getId(_0x17f9fd[_0x9fd4('0x12')],_0x17f9fd[_0x9fd4('0x13')]?_0x17f9fd[_0x9fd4('0x13')]['id']:0x0,_0x17f9fd[_0x9fd4('0x14')]?_0x17f9fd['interaction']['id']:0x0);if(_0x2bdb31[_0x9fd4('0x38')][_0x23f7b5]){_0x2bdb31['rules'][_0x23f7b5]['emit']('end');}return _0x47995a({'code':0xc8,'message':_0x17f9fd});}catch(_0x3ae019){logger[_0x9fd4('0x37')](_0x3ae019[_0x9fd4('0x3f')]);return _0x65d322(_0x342623[_0x9fd4('0x37')](0x1f4,_0x3ae019));}}logger[_0x9fd4('0x37')](_0x9fd4('0x49'));return _0x65d322(_0x342623[_0x9fd4('0x37')](0x1f4,_0x9fd4('0x49')));});},'AgentCapacity':function(_0x58fc12){var _0x494b9a=this;return new Promise(function(_0x793c6b,_0x2eb5e4){if(_0x2bdb31[_0x9fd4('0x42')][_0x9fd4('0x4b')](_0x58fc12['id'])){for(var _0xd78877 in _0x58fc12['capacity']){if(_0x58fc12[_0x9fd4('0x4c')][_0x9fd4('0x4b')](_0xd78877)){if(_0x2bdb31[_0x9fd4('0x42')][_0x58fc12['id']][_0x9fd4('0x4b')](_0xd78877+_0x9fd4('0x4d'))){_0x2bdb31[_0x9fd4('0x42')][_0x58fc12['id']][_0xd78877+_0x9fd4('0x4d')]=parseInt(_0x58fc12[_0x9fd4('0x4c')][_0xd78877],0xa);}}}_0x2bdb31['agents'][_0x58fc12['id']]['updateRealtime']();return _0x793c6b({'code':0xc8,'message':_0x2bdb31[_0x9fd4('0x42')][_0x58fc12['id']]});}else{return _0x2eb5e4(_0x494b9a[_0x9fd4('0x37')](0x1f4,'agent\x20not\x20found'));}});},'Agents':function(_0x637201){return new Promise(function(_0x278e0b){var _0x1c948d=_['values'](_0x2bdb31[_0x9fd4('0x42')]);if(_0x637201&&_0x637201['id']){var _0x31dfe7=_[_0x9fd4('0x4e')](_0x1c948d,function(_0x3dfc45){return _0x3dfc45['id']===_0x637201['id'];});_0x278e0b(_0x31dfe7);}else{_0x278e0b({'count':_0x1c948d[_0x9fd4('0x18')],'rows':_0x1c948d});}});},'ChatQueues':function(){return new Promise(function(_0x190886){var _0xdaf432=[];for(var _0x3e8855 in _0x2bdb31[_0x9fd4('0x4f')]){if(_0x2bdb31['chatQueues']['hasOwnProperty'](_0x3e8855)){var _0x321235=_0x2bdb31[_0x9fd4('0x4f')][_0x3e8855];var _0x5be654={'id':_0x321235['id'],'available':_0x321235[_0x9fd4('0x50')],'loggedIn':_0x321235[_0x9fd4('0x51')],'name':_0x321235['name'],'paused':_0x321235[_0x9fd4('0x52')],'waiting':_0x321235[_0x9fd4('0x53')]};_0xdaf432[_0x9fd4('0x21')](_0x5be654);}}_0x190886({'count':_0xdaf432[_0x9fd4('0x18')],'rows':_0xdaf432});});},'MailQueues':function(){return new Promise(function(_0x5d05cc){var _0x35e232=[];for(var _0x2b9e9e in _0x2bdb31['mailQueues']){if(_0x2bdb31[_0x9fd4('0x54')][_0x9fd4('0x4b')](_0x2b9e9e)){var _0x41db74=_0x2bdb31[_0x9fd4('0x54')][_0x2b9e9e];var _0x43839a={'id':_0x41db74['id'],'available':_0x41db74[_0x9fd4('0x50')],'loggedIn':_0x41db74[_0x9fd4('0x51')],'name':_0x41db74[_0x9fd4('0x55')],'paused':_0x41db74[_0x9fd4('0x52')],'waiting':_0x41db74['waiting']};_0x35e232['push'](_0x43839a);}}_0x5d05cc({'count':_0x35e232[_0x9fd4('0x18')],'rows':_0x35e232});});},'OpenchannelQueues':function(){return new Promise(function(_0x44b622){var _0x2a401d=[];for(var _0x3509bc in _0x2bdb31[_0x9fd4('0x56')]){if(_0x2bdb31[_0x9fd4('0x56')][_0x9fd4('0x4b')](_0x3509bc)){var _0x429d28=_0x2bdb31[_0x9fd4('0x56')][_0x3509bc];var _0x3d23d8={'id':_0x429d28['id'],'available':_0x429d28[_0x9fd4('0x50')],'loggedIn':_0x429d28['loggedIn'],'name':_0x429d28[_0x9fd4('0x55')],'paused':_0x429d28['paused'],'waiting':_0x429d28[_0x9fd4('0x53')]};_0x2a401d[_0x9fd4('0x21')](_0x3d23d8);}}_0x44b622({'count':_0x2a401d['length'],'rows':_0x2a401d});});},'SmsQueues':function(){return new Promise(function(_0x3106b9){var _0x41f5fd=[];for(var _0x20ffbc in _0x2bdb31['smsQueues']){if(_0x2bdb31['smsQueues']['hasOwnProperty'](_0x20ffbc)){var _0x2844ce=_0x2bdb31[_0x9fd4('0x57')][_0x20ffbc];var _0x4f14ec={'id':_0x2844ce['id'],'available':_0x2844ce[_0x9fd4('0x50')],'loggedIn':_0x2844ce[_0x9fd4('0x51')],'name':_0x2844ce[_0x9fd4('0x55')],'paused':_0x2844ce[_0x9fd4('0x52')],'waiting':_0x2844ce[_0x9fd4('0x53')]};_0x41f5fd[_0x9fd4('0x21')](_0x4f14ec);}}_0x3106b9({'count':_0x41f5fd[_0x9fd4('0x18')],'rows':_0x41f5fd});});},'FaxQueues':function(){return new Promise(function(_0x1da300){var _0x246fc3=[];for(var _0x326f83 in _0x2bdb31[_0x9fd4('0x58')]){if(_0x2bdb31['faxQueues'][_0x9fd4('0x4b')](_0x326f83)){var _0x67031e=_0x2bdb31[_0x9fd4('0x58')][_0x326f83];var _0xb661c0={'id':_0x67031e['id'],'available':_0x67031e['available'],'loggedIn':_0x67031e['loggedIn'],'name':_0x67031e[_0x9fd4('0x55')],'paused':_0x67031e['paused'],'waiting':_0x67031e[_0x9fd4('0x53')]};_0x246fc3[_0x9fd4('0x21')](_0xb661c0);}}_0x1da300({'count':_0x246fc3[_0x9fd4('0x18')],'rows':_0x246fc3});});},'WhatsappQueues':function(){return new Promise(function(_0x4110a2){var _0x5c3eea=[];for(var _0x34ae5d in _0x2bdb31['whatsappQueues']){if(_0x2bdb31['whatsappQueues'][_0x9fd4('0x4b')](_0x34ae5d)){var _0x134d7b=_0x2bdb31[_0x9fd4('0x59')][_0x34ae5d];var _0x393780={'id':_0x134d7b['id'],'available':_0x134d7b[_0x9fd4('0x50')],'loggedIn':_0x134d7b['loggedIn'],'name':_0x134d7b[_0x9fd4('0x55')],'paused':_0x134d7b['paused'],'waiting':_0x134d7b['waiting']};_0x5c3eea['push'](_0x393780);}}_0x4110a2({'count':_0x5c3eea[_0x9fd4('0x18')],'rows':_0x5c3eea});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0xa3bcd6){var _0x2d9d70=_[_0x9fd4('0x5a')](_0x2bdb31[_0x9fd4('0x5b')]);_0xa3bcd6({'count':_0x2d9d70[_0x9fd4('0x18')],'rows':_0x2d9d70});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x1682d3){var _0x22a05a=_[_0x9fd4('0x5a')](_0x2bdb31[_0x9fd4('0x5c')]);_0x1682d3({'count':_0x22a05a[_0x9fd4('0x18')],'rows':_0x22a05a});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x432918){var _0x4093a2=_[_0x9fd4('0x5a')](_0x2bdb31[_0x9fd4('0x5d')]);_0x432918({'count':_0x4093a2[_0x9fd4('0x18')],'rows':_0x4093a2});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x206be5){var _0x56cb16=_[_0x9fd4('0x5a')](_0x2bdb31[_0x9fd4('0x5e')]);_0x206be5({'count':_0x56cb16[_0x9fd4('0x18')],'rows':_0x56cb16});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x5c4f23){var _0x2eb0d3=_[_0x9fd4('0x5a')](_0x2bdb31[_0x9fd4('0x5f')]);_0x5c4f23({'count':_0x2eb0d3[_0x9fd4('0x18')],'rows':_0x2eb0d3});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x25e3f7){var _0x2cde31=_['values'](_0x2bdb31[_0x9fd4('0x60')]);_0x25e3f7({'count':_0x2cde31['length'],'rows':_0x2cde31});});}};var _0x15d1ac=jayson[_0x9fd4('0x61')](_0x1a609a)[_0x9fd4('0x62')]();_0x15d1ac['on'](_0x9fd4('0x37'),function(_0x18bde2){logger[_0x9fd4('0x37')](JSON[_0x9fd4('0x3a')](_0x18bde2));return _0x2749bf(_0x18bde2);});_0x15d1ac[_0x9fd4('0x11')](0x232c,_0x9fd4('0x63'),function(){console['log']('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x3ef064(_0x9fd4('0x64')+0x232c);});});};
\ No newline at end of file
+var _0x7ebb=['hasOwnProperty','capacity','CurrentCapacity','agent\x20not\x20found','values','find','chatQueues','name','paused','mailQueues','available','openchannelQueues','loggedIn','smsQueues','waiting','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','http','127.0.0.1','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','lodash','util','path','jayson/promise','bluebird','./applications/utils','./applications/strategy/util','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','%s.%s.%s','IntervalId','isNil','Intervals','map','interval','listen','rules','message','interaction','checkWaitingNotifications','applications','isArray','length','existsSync','join','app','toLowerCase','autoreply','appdata','channel','mail','push','slice','dialogflow','split','dialogflowv2','TagId','tvox','getMustacheRender','account','notificationTemplate','ChatWebsiteId','ContactId','body','%s:%s:%s','./interval','condition','consequence','priority','info','Push\x20new\x20rule','on\x20interval','intervals','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','.js','execute','Applications\x20executed','stringify','matchPath','emit','complete','format','Skipped\x20routing\x20for\x20%s','No\x20applications\x20to\x20execute','stack','agent','agents','busy','busyQueue','QueueReport','UserId','catch','error\x20update\x20queue\x20report','message\x20is\x20empty','end'];(function(_0x1ca3fa,_0x5dfc78){var _0x2dd3f0=function(_0x1711ed){while(--_0x1711ed){_0x1ca3fa['push'](_0x1ca3fa['shift']());}};_0x2dd3f0(++_0x5dfc78);}(_0x7ebb,0x161));var _0xb7eb=function(_0x270e46,_0x122174){_0x270e46=_0x270e46-0x0;var _0x18ca4e=_0x7ebb[_0x270e46];return _0x18ca4e;};'use strict';var _=require(_0xb7eb('0x0'));var util=require(_0xb7eb('0x1'));var path=require(_0xb7eb('0x2'));var fs=require('fs');var jayson=require(_0xb7eb('0x3'));var BPromise=require(_0xb7eb('0x4'));var utils=require(_0xb7eb('0x5'));var sUtils=require(_0xb7eb('0x6'));var logger=require('../../../config/logger')(_0xb7eb('0x7'));var rpc={'openchannelQueueReport':require(_0xb7eb('0x8')),'mailQueueReport':require(_0xb7eb('0x9')),'chatQueueReport':require(_0xb7eb('0xa')),'smsQueueReport':require(_0xb7eb('0xb')),'faxQueueReport':require(_0xb7eb('0xc')),'whatsappQueueReport':require(_0xb7eb('0xd'))};var RuleEngine=require(_0xb7eb('0xe'));function getId(_0x282eb0,_0x3abb1f,_0x542325){return util['format'](_0xb7eb('0xf'),_0x282eb0,_0x3abb1f||0x0,_0x542325||0x0);}function getIntervals(_0xb669b9,_0x24b00f){var _0xa9e44=[];if(!_['isNil'](_0x24b00f[_0xb7eb('0x10')])&&!_[_0xb7eb('0x11')](_0xb669b9[_0x24b00f['IntervalId']])&&!_[_0xb7eb('0x11')](_0xb669b9[_0x24b00f[_0xb7eb('0x10')]][_0xb7eb('0x12')])){_0xa9e44=_[_0xb7eb('0x13')](_0xb669b9[_0x24b00f[_0xb7eb('0x10')]][_0xb7eb('0x12')],_0xb7eb('0x14'));}else if(!_['isNil'](_0x24b00f[_0xb7eb('0x14')])){_0xa9e44=[_0x24b00f[_0xb7eb('0x14')]];}return _0xa9e44;}exports[_0xb7eb('0x15')]=function(_0x5e50f0){_0x5e50f0[_0xb7eb('0x16')]={};return new BPromise(function(_0xbd0a5a,_0x35add2){var _0x2c1912={'Start':function(_0x560f8f){var _0x348cc5=this;return new Promise(function(_0x55c850,_0x4977b5){if(_0x560f8f){try{var _0x3d9cf3=[];var _0x403130=getId(_0x560f8f['channel'],_0x560f8f[_0xb7eb('0x17')]?_0x560f8f[_0xb7eb('0x17')]['id']:0x0,_0x560f8f[_0xb7eb('0x18')]?_0x560f8f[_0xb7eb('0x18')]['id']:0x0);var _0x52324c=sUtils[_0xb7eb('0x19')](_0x5e50f0,_0x560f8f);if(_0x560f8f['transfer']||!_0x52324c&&_0x560f8f[_0xb7eb('0x1a')]&&_[_0xb7eb('0x1b')](_0x560f8f['applications'])&&_0x560f8f[_0xb7eb('0x1a')]['length']){for(var _0x2d785a=0x0;_0x2d785a<_0x560f8f[_0xb7eb('0x1a')][_0xb7eb('0x1c')];_0x2d785a+=0x1){var _0x24657e=_0x560f8f[_0xb7eb('0x1a')][_0x2d785a];if(fs[_0xb7eb('0x1d')](path[_0xb7eb('0x1e')](__dirname,_0xb7eb('0x1a'),_0x24657e[_0xb7eb('0x1f')]+'.js'))){var _0x53071f=[];switch(_0x24657e[_0xb7eb('0x1f')][_0xb7eb('0x20')]()){case _0xb7eb('0x21'):var _0x29e197=_0x24657e[_0xb7eb('0x22')]['split'](',');if(_0x560f8f[_0xb7eb('0x23')]===_0xb7eb('0x24')){_0x53071f[_0xb7eb('0x25')](_0x29e197[0x0]);_0x53071f[_0xb7eb('0x25')](_0x29e197[0x1]);_0x53071f['push'](_0x29e197[_0xb7eb('0x26')](0x2,_0x29e197['length'])[_0xb7eb('0x1e')](','));}else{_0x53071f[_0xb7eb('0x25')](_0x29e197[0x0]);_0x53071f[_0xb7eb('0x25')](_0x29e197['slice'](0x1,_0x29e197[_0xb7eb('0x1c')])[_0xb7eb('0x1e')](','));}break;case _0xb7eb('0x27'):var _0x3c8676=_0x24657e[_0xb7eb('0x22')][_0xb7eb('0x28')](',');_0x53071f[_0xb7eb('0x25')](_0x3c8676[0x0]);_0x53071f[_0xb7eb('0x25')](_0x3c8676[0x1]);_0x53071f[_0xb7eb('0x25')](_0x3c8676[_0xb7eb('0x26')](0x2,_0x3c8676[_0xb7eb('0x1c')])[_0xb7eb('0x1e')](','));break;case _0xb7eb('0x29'):var _0x5ba2fb=_0x24657e[_0xb7eb('0x22')]['split'](',');_0x53071f[_0xb7eb('0x25')](_0x5ba2fb[0x0]);_0x53071f['push'](_0x5ba2fb[0x1]);_0x53071f[_0xb7eb('0x25')](_0x5ba2fb[0x2]);_0x53071f[_0xb7eb('0x25')](_0x5ba2fb[0x3]);_0x53071f['push'](_0x5ba2fb[_0xb7eb('0x26')](0x4,_0x5ba2fb[_0xb7eb('0x1c')])[_0xb7eb('0x1e')](','));break;case'amazonlex':var _0x146319=_0x24657e[_0xb7eb('0x22')][_0xb7eb('0x28')](',');_0x53071f[_0xb7eb('0x25')](_0x146319[0x0]);_0x53071f[_0xb7eb('0x25')](_0x146319[0x1]);_0x53071f[_0xb7eb('0x25')](_0x146319[0x2]);_0x53071f['push'](_0x146319[0x3]);_0x53071f[_0xb7eb('0x25')](_0x146319[_0xb7eb('0x26')](0x4,_0x146319[_0xb7eb('0x1c')])[_0xb7eb('0x1e')](','));break;case'message':_0x53071f[_0xb7eb('0x25')](_0x24657e[_0xb7eb('0x22')]);break;case'tag':_0x53071f[_0xb7eb('0x25')](_0x24657e[_0xb7eb('0x2a')]);_0x53071f[_0xb7eb('0x25')](_0x24657e['appdata']);break;case _0xb7eb('0x2b'):var _0x593338=utils[_0xb7eb('0x2c')](_0x560f8f[_0xb7eb('0x2d')][_0xb7eb('0x2e')],_0x560f8f);var _0x5808dc=_0x24657e['appdata']['split'](',');_0x53071f[_0xb7eb('0x25')](_0x5808dc[0x0]);_0x53071f[_0xb7eb('0x25')](_0x5808dc[0x1]);_0x53071f['push'](_0x5808dc[0x2]);_0x53071f[_0xb7eb('0x25')](_0x5808dc[0x3]);_0x53071f[_0xb7eb('0x25')](_0x5808dc[0x4]);_0x53071f[_0xb7eb('0x25')](_0x5808dc[0x5]);_0x53071f[_0xb7eb('0x25')](_0x5808dc[0x6]);_0x53071f[_0xb7eb('0x25')](_0x5808dc[0x7]);_0x53071f[_0xb7eb('0x25')](_0x5808dc[0x8]);_0x53071f[_0xb7eb('0x25')](_0x5808dc[0x9]);_0x53071f[_0xb7eb('0x25')](_0x5808dc[0xa]);_0x53071f['push'](_0x560f8f[_0xb7eb('0x18')]['id']);_0x53071f['push'](_0x560f8f[_0xb7eb('0x17')]['id']);_0x53071f[_0xb7eb('0x25')](_0x24657e[_0xb7eb('0x2f')]);_0x53071f[_0xb7eb('0x25')](_0x560f8f['interaction'][_0xb7eb('0x30')]);_0x53071f[_0xb7eb('0x25')](_0x560f8f[_0xb7eb('0x31')][_0xb7eb('0x31')]);_0x53071f[_0xb7eb('0x25')](_0x593338);break;default:_0x53071f=_['isNil'](_0x24657e[_0xb7eb('0x22')])?[]:_0x24657e['appdata'][_0xb7eb('0x28')](',');}var _0x722d5={'id':util['format'](_0xb7eb('0x32'),_0x403130,_0x24657e['id'],_0x24657e[_0xb7eb('0x1f')]),'condition':require(_0xb7eb('0x33'))[_0xb7eb('0x34')](_0x403130,getIntervals(_0x5e50f0['intervals'],_0x24657e),_0x5e50f0),'consequence':require('./applications/'+_0x24657e['app'])[_0xb7eb('0x35')](_0x403130,_0x53071f,_0x5e50f0,_0x560f8f),'p':_0x24657e[_0xb7eb('0x36')]||0x0};logger[_0xb7eb('0x37')](_0xb7eb('0x38'),_0x722d5['id'],_0xb7eb('0x39'),getIntervals(_0x5e50f0[_0xb7eb('0x3a')],_0x24657e)['join'](_0xb7eb('0x3b')));_0x3d9cf3['push'](_0x722d5);}else{logger[_0xb7eb('0x3c')](_0xb7eb('0x3d'),path[_0xb7eb('0x1e')](__dirname,'applications',_0x24657e[_0xb7eb('0x1f')]+_0xb7eb('0x3e')));}}_0x5e50f0[_0xb7eb('0x16')][_0x403130]=new RuleEngine(_0x3d9cf3);_0x5e50f0['rules'][_0x403130][_0xb7eb('0x3f')](_0x560f8f,function(_0x11af43){logger[_0xb7eb('0x37')](_0xb7eb('0x40'),JSON[_0xb7eb('0x41')](_0x11af43[_0xb7eb('0x42')]));if(_0x5e50f0[_0xb7eb('0x16')][_0x403130]){_0x5e50f0[_0xb7eb('0x16')][_0x403130][_0xb7eb('0x43')](_0xb7eb('0x44'));}});return _0x55c850({'code':0xc8,'message':_0x560f8f});}else{if(_0x52324c){logger[_0xb7eb('0x37')](util[_0xb7eb('0x45')](_0xb7eb('0x46'),_0x403130));}else{logger[_0xb7eb('0x37')](_0xb7eb('0x47'));}return _0x55c850({'code':0xc8,'message':_0x560f8f});}}catch(_0x185ee8){logger[_0xb7eb('0x3c')](_0x185ee8[_0xb7eb('0x48')]);return _0x4977b5(_0x348cc5[_0xb7eb('0x3c')](0x1f4,_0x185ee8));}}return _0x4977b5('routing\x20is\x20empty');});},'AcceptMessage':function(_0x1a75e9){var _0x1e9d33=this;return new Promise(function(_0x24ed29,_0x359bd7){if(_0x1a75e9[_0xb7eb('0x49')]&&_0x1a75e9['agent']['id']){if(_0x5e50f0[_0xb7eb('0x4a')][_0x1a75e9[_0xb7eb('0x49')]['id']]){_0x5e50f0['agents'][_0x1a75e9[_0xb7eb('0x49')]['id']][_0xb7eb('0x4b')]=![];_0x5e50f0['agents'][_0x1a75e9['agent']['id']][_0xb7eb('0x4c')]=undefined;}}if(_0x1a75e9[_0xb7eb('0x17')]&&_0x1a75e9[_0xb7eb('0x17')]['id']){try{var _0x16a9a7=getId(_0x1a75e9[_0xb7eb('0x23')],_0x1a75e9[_0xb7eb('0x17')]?_0x1a75e9[_0xb7eb('0x17')]['id']:0x0,_0x1a75e9['interaction']?_0x1a75e9[_0xb7eb('0x18')]['id']:0x0);if(_0x5e50f0[_0xb7eb('0x16')][_0x16a9a7]){_0x5e50f0['rules'][_0x16a9a7][_0xb7eb('0x43')]('end');if(rpc[_0x1a75e9['channel']+'QueueReport']){rpc[_0x1a75e9[_0xb7eb('0x23')]+_0xb7eb('0x4d')]['update'](_0x16a9a7,{'UserId':_0x1a75e9['message'][_0xb7eb('0x4e')]})[_0xb7eb('0x4f')](function(){logger[_0xb7eb('0x3c')](_0xb7eb('0x50'));});}}return _0x24ed29({'code':0xc8,'message':_0x1a75e9});}catch(_0x15566c){logger[_0xb7eb('0x3c')](_0x15566c[_0xb7eb('0x48')]);return _0x359bd7(_0x1e9d33[_0xb7eb('0x3c')](0x1f4,_0x15566c));}}logger[_0xb7eb('0x3c')](_0xb7eb('0x51'));return _0x359bd7(_0x1e9d33['error'](0x1f4,_0xb7eb('0x51')));});},'RejectMessage':function(_0xd1f9df){var _0x49901d=this;return new Promise(function(_0x15f78b,_0x13af05){if(_0xd1f9df[_0xb7eb('0x49')]&&_0xd1f9df[_0xb7eb('0x49')]['id']){try{if(_0x5e50f0['agents'][_0xd1f9df[_0xb7eb('0x49')]['id']]){_0x5e50f0[_0xb7eb('0x4a')][_0xd1f9df[_0xb7eb('0x49')]['id']]['busy']=![];_0x5e50f0[_0xb7eb('0x4a')][_0xd1f9df[_0xb7eb('0x49')]['id']]['busyQueue']=undefined;}return _0x15f78b({'code':0xc8,'message':_0xd1f9df});}catch(_0x1986c6){logger[_0xb7eb('0x3c')](_0x1986c6[_0xb7eb('0x48')]);return _0x13af05(_0x49901d['error'](0x1f4,_0x1986c6));}}logger['error']('message\x20is\x20empty');return _0x13af05(_0x49901d[_0xb7eb('0x3c')](0x1f4,_0xb7eb('0x51')));});},'AbandonInteraction':function(_0x1f348c){var _0x391634=this;return new Promise(function(_0x5ef4c0,_0x4fb04e){if(_0x1f348c[_0xb7eb('0x23')]&&_0x1f348c[_0xb7eb('0x18')]&&_0x1f348c[_0xb7eb('0x18')]['id']){try{var _0x97dbf5=getId(_0x1f348c['channel'],_0x1f348c[_0xb7eb('0x17')]?_0x1f348c[_0xb7eb('0x17')]['id']:0x0,_0x1f348c[_0xb7eb('0x18')]?_0x1f348c[_0xb7eb('0x18')]['id']:0x0);if(_0x5e50f0[_0xb7eb('0x16')][_0x97dbf5]){_0x5e50f0[_0xb7eb('0x16')][_0x97dbf5][_0xb7eb('0x43')](_0xb7eb('0x52'));}return _0x5ef4c0({'code':0xc8,'message':_0x1f348c});}catch(_0x220713){logger[_0xb7eb('0x3c')](_0x220713['stack']);return _0x4fb04e(_0x391634[_0xb7eb('0x3c')](0x1f4,_0x220713));}}logger[_0xb7eb('0x3c')](_0xb7eb('0x51'));return _0x4fb04e(_0x391634[_0xb7eb('0x3c')](0x1f4,_0xb7eb('0x51')));});},'AgentCapacity':function(_0x5d72ba){var _0xc31e99=this;return new Promise(function(_0x4e4513,_0x301437){if(_0x5e50f0[_0xb7eb('0x4a')][_0xb7eb('0x53')](_0x5d72ba['id'])){for(var _0x36ab73 in _0x5d72ba['capacity']){if(_0x5d72ba[_0xb7eb('0x54')][_0xb7eb('0x53')](_0x36ab73)){if(_0x5e50f0[_0xb7eb('0x4a')][_0x5d72ba['id']][_0xb7eb('0x53')](_0x36ab73+_0xb7eb('0x55'))){_0x5e50f0[_0xb7eb('0x4a')][_0x5d72ba['id']][_0x36ab73+_0xb7eb('0x55')]=parseInt(_0x5d72ba['capacity'][_0x36ab73],0xa);}}}_0x5e50f0[_0xb7eb('0x4a')][_0x5d72ba['id']]['updateRealtime']();return _0x4e4513({'code':0xc8,'message':_0x5e50f0[_0xb7eb('0x4a')][_0x5d72ba['id']]});}else{return _0x301437(_0xc31e99[_0xb7eb('0x3c')](0x1f4,_0xb7eb('0x56')));}});},'Agents':function(_0x56b093){return new Promise(function(_0x29f362){var _0x619afc=_[_0xb7eb('0x57')](_0x5e50f0[_0xb7eb('0x4a')]);if(_0x56b093&&_0x56b093['id']){var _0x491caa=_[_0xb7eb('0x58')](_0x619afc,function(_0x5e11b7){return _0x5e11b7['id']===_0x56b093['id'];});_0x29f362(_0x491caa);}else{_0x29f362({'count':_0x619afc['length'],'rows':_0x619afc});}});},'ChatQueues':function(){return new Promise(function(_0x2a8db2){var _0x4903f6=[];for(var _0x5bd2b8 in _0x5e50f0[_0xb7eb('0x59')]){if(_0x5e50f0['chatQueues'][_0xb7eb('0x53')](_0x5bd2b8)){var _0x23e588=_0x5e50f0[_0xb7eb('0x59')][_0x5bd2b8];var _0xc2089={'id':_0x23e588['id'],'available':_0x23e588['available'],'loggedIn':_0x23e588['loggedIn'],'name':_0x23e588[_0xb7eb('0x5a')],'paused':_0x23e588[_0xb7eb('0x5b')],'waiting':_0x23e588['waiting']};_0x4903f6[_0xb7eb('0x25')](_0xc2089);}}_0x2a8db2({'count':_0x4903f6[_0xb7eb('0x1c')],'rows':_0x4903f6});});},'MailQueues':function(){return new Promise(function(_0xea3629){var _0x15e070=[];for(var _0x48b23a in _0x5e50f0[_0xb7eb('0x5c')]){if(_0x5e50f0['mailQueues'][_0xb7eb('0x53')](_0x48b23a)){var _0x3914ab=_0x5e50f0[_0xb7eb('0x5c')][_0x48b23a];var _0x2ed3f9={'id':_0x3914ab['id'],'available':_0x3914ab[_0xb7eb('0x5d')],'loggedIn':_0x3914ab['loggedIn'],'name':_0x3914ab[_0xb7eb('0x5a')],'paused':_0x3914ab[_0xb7eb('0x5b')],'waiting':_0x3914ab['waiting']};_0x15e070[_0xb7eb('0x25')](_0x2ed3f9);}}_0xea3629({'count':_0x15e070[_0xb7eb('0x1c')],'rows':_0x15e070});});},'OpenchannelQueues':function(){return new Promise(function(_0x5141db){var _0x40a67f=[];for(var _0x20bd7b in _0x5e50f0[_0xb7eb('0x5e')]){if(_0x5e50f0[_0xb7eb('0x5e')][_0xb7eb('0x53')](_0x20bd7b)){var _0x1c006d=_0x5e50f0[_0xb7eb('0x5e')][_0x20bd7b];var _0x340ac9={'id':_0x1c006d['id'],'available':_0x1c006d[_0xb7eb('0x5d')],'loggedIn':_0x1c006d[_0xb7eb('0x5f')],'name':_0x1c006d[_0xb7eb('0x5a')],'paused':_0x1c006d[_0xb7eb('0x5b')],'waiting':_0x1c006d['waiting']};_0x40a67f['push'](_0x340ac9);}}_0x5141db({'count':_0x40a67f[_0xb7eb('0x1c')],'rows':_0x40a67f});});},'SmsQueues':function(){return new Promise(function(_0x3293e3){var _0x2b92da=[];for(var _0x4741d0 in _0x5e50f0[_0xb7eb('0x60')]){if(_0x5e50f0[_0xb7eb('0x60')]['hasOwnProperty'](_0x4741d0)){var _0x55a010=_0x5e50f0['smsQueues'][_0x4741d0];var _0x507a7b={'id':_0x55a010['id'],'available':_0x55a010[_0xb7eb('0x5d')],'loggedIn':_0x55a010['loggedIn'],'name':_0x55a010[_0xb7eb('0x5a')],'paused':_0x55a010['paused'],'waiting':_0x55a010[_0xb7eb('0x61')]};_0x2b92da[_0xb7eb('0x25')](_0x507a7b);}}_0x3293e3({'count':_0x2b92da[_0xb7eb('0x1c')],'rows':_0x2b92da});});},'FaxQueues':function(){return new Promise(function(_0x112eb4){var _0x47b987=[];for(var _0x1540bd in _0x5e50f0[_0xb7eb('0x62')]){if(_0x5e50f0['faxQueues']['hasOwnProperty'](_0x1540bd)){var _0x1bac4b=_0x5e50f0[_0xb7eb('0x62')][_0x1540bd];var _0x1cd1c7={'id':_0x1bac4b['id'],'available':_0x1bac4b[_0xb7eb('0x5d')],'loggedIn':_0x1bac4b[_0xb7eb('0x5f')],'name':_0x1bac4b[_0xb7eb('0x5a')],'paused':_0x1bac4b[_0xb7eb('0x5b')],'waiting':_0x1bac4b[_0xb7eb('0x61')]};_0x47b987[_0xb7eb('0x25')](_0x1cd1c7);}}_0x112eb4({'count':_0x47b987['length'],'rows':_0x47b987});});},'WhatsappQueues':function(){return new Promise(function(_0x458d40){var _0x5dd2ec=[];for(var _0x362781 in _0x5e50f0[_0xb7eb('0x63')]){if(_0x5e50f0['whatsappQueues'][_0xb7eb('0x53')](_0x362781)){var _0x480c5b=_0x5e50f0['whatsappQueues'][_0x362781];var _0x16fc83={'id':_0x480c5b['id'],'available':_0x480c5b[_0xb7eb('0x5d')],'loggedIn':_0x480c5b[_0xb7eb('0x5f')],'name':_0x480c5b[_0xb7eb('0x5a')],'paused':_0x480c5b[_0xb7eb('0x5b')],'waiting':_0x480c5b[_0xb7eb('0x61')]};_0x5dd2ec['push'](_0x16fc83);}}_0x458d40({'count':_0x5dd2ec[_0xb7eb('0x1c')],'rows':_0x5dd2ec});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x2699cd){var _0x3babea=_[_0xb7eb('0x57')](_0x5e50f0[_0xb7eb('0x64')]);_0x2699cd({'count':_0x3babea['length'],'rows':_0x3babea});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x16f905){var _0x3f798c=_['values'](_0x5e50f0[_0xb7eb('0x65')]);_0x16f905({'count':_0x3f798c[_0xb7eb('0x1c')],'rows':_0x3f798c});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x38ad61){var _0x4fce99=_[_0xb7eb('0x57')](_0x5e50f0[_0xb7eb('0x66')]);_0x38ad61({'count':_0x4fce99[_0xb7eb('0x1c')],'rows':_0x4fce99});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x21657f){var _0x32a747=_[_0xb7eb('0x57')](_0x5e50f0[_0xb7eb('0x67')]);_0x21657f({'count':_0x32a747[_0xb7eb('0x1c')],'rows':_0x32a747});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x3da75d){var _0x4dc29f=_[_0xb7eb('0x57')](_0x5e50f0['faxQueuesWaitingInteractions']);_0x3da75d({'count':_0x4dc29f[_0xb7eb('0x1c')],'rows':_0x4dc29f});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x547469){var _0x4ff0e9=_[_0xb7eb('0x57')](_0x5e50f0[_0xb7eb('0x68')]);_0x547469({'count':_0x4ff0e9[_0xb7eb('0x1c')],'rows':_0x4ff0e9});});}};var _0x4f899e=jayson['server'](_0x2c1912)[_0xb7eb('0x69')]();_0x4f899e['on'](_0xb7eb('0x3c'),function(_0x4897c8){logger['error'](JSON[_0xb7eb('0x41')](_0x4897c8));return _0x35add2(_0x4897c8);});_0x4f899e['listen'](0x232c,_0xb7eb('0x6a'),function(){console[_0xb7eb('0x6b')](_0xb7eb('0x6c'),0x232c);return _0xbd0a5a('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
index d17502c..aec1093 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffe2=['when','info','stop','lodash','iftime','routing','condition','rules','map','some','[%s][INTERVAL\x20VALID]\x20%s\x20%s','join','\x20|\x20'];(function(_0x5a2520,_0x2cd6d8){var _0x4f38a7=function(_0x2258b3){while(--_0x2258b3){_0x5a2520['push'](_0x5a2520['shift']());}};_0x4f38a7(++_0x2cd6d8);}(_0xffe2,0x1b0));var _0x2ffe=function(_0x54cc08,_0x38d3ef){_0x54cc08=_0x54cc08-0x0;var _0x28989a=_0xffe2[_0x54cc08];return _0x28989a;};'use strict';var _=require(_0x2ffe('0x0'));var iftime=require('../../../utils/iftime')[_0x2ffe('0x1')];var logger=require('../../../config/logger')(_0x2ffe('0x2'));exports[_0x2ffe('0x3')]=function(_0x10510a,_0x3139cb,_0x1faf1c){return function(_0xd1fbd6){if(_0x1faf1c[_0x2ffe('0x4')]&&!_0x1faf1c[_0x2ffe('0x4')][_0x10510a]){logger['info']('[%s][INTERVAL]\x20ROUTING\x20STOPPED',_0x10510a);return _0xd1fbd6['stop']();}var _0x982ae1=_0x3139cb[_0x2ffe('0x5')](function(_0x2c7539){return iftime(_0x2c7539);});var _0x5701f7=_[_0x2ffe('0x6')](_0x982ae1);if(_0x5701f7){logger['info'](_0x2ffe('0x7'),_0x10510a,_0x3139cb[_0x2ffe('0x8')](_0x2ffe('0x9')),_0x5701f7);_0xd1fbd6[_0x2ffe('0xa')](_0x5701f7);}else{logger[_0x2ffe('0xb')]('[%s][INTERVAL\x20NOT\x20VALID]\x20%s\x20%s',_0x10510a,_0x3139cb[_0x2ffe('0x8')](_0x2ffe('0x9')));_0xd1fbd6[_0x2ffe('0xc')]();}};};
\ No newline at end of file
+var _0x2586=['iftime','routing','condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','map','some','[%s][INTERVAL\x20VALID]\x20%s\x20%s','join','when','[%s][INTERVAL\x20NOT\x20VALID]\x20%s\x20%s','\x20|\x20','lodash','../../../utils/iftime'];(function(_0x518ce5,_0x2cc2ea){var _0x20b8a9=function(_0x36a147){while(--_0x36a147){_0x518ce5['push'](_0x518ce5['shift']());}};_0x20b8a9(++_0x2cc2ea);}(_0x2586,0x11b));var _0x6258=function(_0x4e363b,_0x159fc4){_0x4e363b=_0x4e363b-0x0;var _0xc53df7=_0x2586[_0x4e363b];return _0xc53df7;};'use strict';var _=require(_0x6258('0x0'));var iftime=require(_0x6258('0x1'))[_0x6258('0x2')];var logger=require('../../../config/logger')(_0x6258('0x3'));exports[_0x6258('0x4')]=function(_0x22e1ac,_0xd84723,_0x26d0c8){return function(_0x599823){if(_0x26d0c8['rules']&&!_0x26d0c8[_0x6258('0x5')][_0x22e1ac]){logger[_0x6258('0x6')](_0x6258('0x7'),_0x22e1ac);return _0x599823['stop']();}var _0x3271fe=_0xd84723[_0x6258('0x8')](function(_0x1ec92c){return iftime(_0x1ec92c);});var _0x1147cf=_[_0x6258('0x9')](_0x3271fe);if(_0x1147cf){logger[_0x6258('0x6')](_0x6258('0xa'),_0x22e1ac,_0xd84723[_0x6258('0xb')]('\x20|\x20'),_0x1147cf);_0x599823[_0x6258('0xc')](_0x1147cf);}else{logger[_0x6258('0x6')](_0x6258('0xd'),_0x22e1ac,_0xd84723[_0x6258('0xb')](_0x6258('0xe')));_0x599823['stop']();}};};
\ No newline at end of file
index 5d6e9b7..2d9bd2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4522=['agent','./utils','format','[%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','agentacw','acwTimeout','request','CreateVoiceAgentReport','destuniqueid','agentcalledAt','called','info','error','[%s][agents][agentcalled]','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','now','reason','timeout','holdtime','ringtime','talktime','queuecallerabandon','includes','[%s][agents][queuecallerabandon]','[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','agentconnect','debug','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinename','connect','forIn','answered_elsewhere','answeredelsewheremembername','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','complete','[%s][agents][agentcomplete]','blindtransfer','transfereruniqueid','transfer','transfertype','extension','transferuniqueid','[%s][agents][blindtransfer]','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridname','secondtransfererlinkedid','transferexten','transfertargetuniqueid','hangup','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','splice','agentcompleteAt'];(function(_0x270b8c,_0x43bf26){var _0x5a76df=function(_0xc35bea){while(--_0xc35bea){_0x270b8c['push'](_0x270b8c['shift']());}};_0x5a76df(++_0x43bf26);}(_0x4522,0x1a0));var _0x2452=function(_0x3dffd6,_0x2198ba){_0x3dffd6=_0x3dffd6-0x0;var _0x37a687=_0x4522[_0x3dffd6];return _0x37a687;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0x2452('0x0'));var agents={};var transfers={};var unanswered=[];function writeDB(_0xa5f6b7,_0x4a08d4){utils['info'](util[_0x2452('0x1')](_0x2452('0x2'),_0xa5f6b7[_0x2452('0x3')],_0xa5f6b7[_0x2452('0x4')],_0xa5f6b7[_0x2452('0x5')],_0xa5f6b7[_0x2452('0x6')],_0xa5f6b7[_0x2452('0x7')],_0xa5f6b7[_0x2452('0x8')],_0xa5f6b7[_0x2452('0x9')],_0xa5f6b7[_0x2452('0xa')]));if(_0xa5f6b7[_0x2452('0x5')]){utils[_0x2452('0xb')](_0xa5f6b7[_0x2452('0x5')])[_0x2452('0xc')](function(_0x2e5caa){if(_0x2e5caa){_0xa5f6b7[_0x2452('0xd')]=_0x2e5caa['type'];_0xa5f6b7['agentacw']=_0xa5f6b7[_0x2452('0xe')]?_0x2e5caa['acw']:![];_0xa5f6b7['acwtime']=_0xa5f6b7[_0x2452('0xf')]?_0x2e5caa[_0x2452('0x10')]:0x0;}utils[_0x2452('0x11')](_0x2452('0x12'),_0xa5f6b7);});}else{utils[_0x2452('0x11')](_0x2452('0x12'),_0xa5f6b7);}if(_0x4a08d4){delete transfers[_0xa5f6b7[_0x2452('0x3')]];}else{delete agents[_0xa5f6b7[_0x2452('0x13')]];}}exports['agentcalled']=function(_0x529fb2){try{utils['debug'](util[_0x2452('0x1')]('[%s][agents][agentcalled]',_0x529fb2[_0x2452('0x3')]),_0x529fb2);agents[_0x529fb2['destuniqueid']]=_0x529fb2;agents[_0x529fb2[_0x2452('0x13')]][_0x2452('0x14')]=utils['now']();agents[_0x529fb2[_0x2452('0x13')]]['lastevent']=_0x2452('0x15');agents[_0x529fb2[_0x2452('0x13')]][_0x2452('0x9')]=null;agents[_0x529fb2[_0x2452('0x13')]]['connectedlinename']=null;utils[_0x2452('0x16')](util[_0x2452('0x1')]('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x529fb2['uniqueid'],agents[_0x529fb2[_0x2452('0x13')]][_0x2452('0x6')],_0x529fb2[_0x2452('0x13')]));}catch(_0x57cb03){utils[_0x2452('0x17')](util[_0x2452('0x1')](_0x2452('0x18'),_0x529fb2[_0x2452('0x3')]),_0x57cb03);}};exports[_0x2452('0x19')]=function(_0x1c70cb){try{if(!_[_0x2452('0x1a')](agents[_0x1c70cb[_0x2452('0x13')]])){utils['debug'](util['format'](_0x2452('0x1b'),_0x1c70cb[_0x2452('0x3')]),_0x1c70cb);utils['info'](util[_0x2452('0x1')](_0x2452('0x1c'),_0x1c70cb[_0x2452('0x3')],agents[_0x1c70cb[_0x2452('0x13')]][_0x2452('0x6')],_0x1c70cb[_0x2452('0x13')]));agents[_0x1c70cb[_0x2452('0x13')]]['agentringnoanswer']=!![];agents[_0x1c70cb[_0x2452('0x13')]][_0x2452('0x1d')]=utils[_0x2452('0x1e')]();agents[_0x1c70cb[_0x2452('0x13')]][_0x2452('0xa')]='timeout';agents[_0x1c70cb['destuniqueid']][_0x2452('0x1f')]=_0x2452('0x20');agents[_0x1c70cb[_0x2452('0x13')]][_0x2452('0x21')]=_0x1c70cb[_0x2452('0x22')]?parseInt(_0x1c70cb['ringtime'])/0x3e8:0x0;agents[_0x1c70cb[_0x2452('0x13')]][_0x2452('0x23')]=0x0;unanswered['push'](_0x1c70cb['destuniqueid']);}}catch(_0x332878){utils[_0x2452('0x17')](util[_0x2452('0x1')](_0x2452('0x1b'),_0x1c70cb[_0x2452('0x3')]),_0x332878);}};exports[_0x2452('0x24')]=function(_0x504162){try{_['forIn'](agents,function(_0x46b611,_0x454e0a){if(_0x46b611[_0x2452('0x3')]==_0x504162['uniqueid']&&!_[_0x2452('0x25')](unanswered,_0x46b611[_0x2452('0x13')])){utils['debug'](util[_0x2452('0x1')](_0x2452('0x26'),_0x504162[_0x2452('0x3')]),_0x504162);utils[_0x2452('0x16')](util[_0x2452('0x1')](_0x2452('0x27'),_0x504162[_0x2452('0x3')],_0x46b611[_0x2452('0x6')],_0x46b611[_0x2452('0x13')]));_0x46b611[_0x2452('0x19')]=!![];_0x46b611[_0x2452('0x1d')]=utils[_0x2452('0x1e')]();_0x46b611[_0x2452('0xa')]='abandoned';_0x46b611[_0x2452('0x1f')]=_0x2452('0x28');_0x46b611['holdtime']=_0x504162[_0x2452('0x21')];_0x46b611['talktime']=0x0;writeDB(_0x46b611);}});}catch(_0x2c6843){utils[_0x2452('0x17')](util['format'](_0x2452('0x26'),_0x504162[_0x2452('0x3')]),_0x2c6843);}};exports[_0x2452('0x29')]=function(_0x5ce5fb){try{if(agents[_0x5ce5fb[_0x2452('0x13')]]){utils[_0x2452('0x2a')](util['format'](_0x2452('0x2b'),_0x5ce5fb[_0x2452('0x3')]),_0x5ce5fb);utils[_0x2452('0x16')](util[_0x2452('0x1')](_0x2452('0x2c'),_0x5ce5fb['uniqueid'],agents[_0x5ce5fb['destuniqueid']]['membername'],_0x5ce5fb[_0x2452('0x13')]));agents[_0x5ce5fb[_0x2452('0x13')]][_0x2452('0x2d')]=utils[_0x2452('0x1e')]();agents[_0x5ce5fb[_0x2452('0x13')]]['connectedlinenum']=_0x5ce5fb[_0x2452('0x9')];agents[_0x5ce5fb['destuniqueid']]['connectedlinename']=_0x5ce5fb[_0x2452('0x2e')];agents[_0x5ce5fb['destuniqueid']][_0x2452('0x21')]=_0x5ce5fb[_0x2452('0x22')];agents[_0x5ce5fb['destuniqueid']][_0x2452('0xa')]=_0x2452('0x2f');_[_0x2452('0x30')](agents,function(_0x34d7f9,_0x2babbe){if(_0x34d7f9[_0x2452('0x13')]!=_0x5ce5fb[_0x2452('0x13')]&&_0x34d7f9[_0x2452('0x3')]==_0x5ce5fb['uniqueid']){_0x34d7f9[_0x2452('0x23')]=0x0;_0x34d7f9['holdtime']=_0x5ce5fb[_0x2452('0x22')];_0x34d7f9[_0x2452('0x19')]=!![];_0x34d7f9['agentringnoanswerAt']=utils[_0x2452('0x1e')]();_0x34d7f9[_0x2452('0xa')]=_0x2452('0x31');_0x34d7f9[_0x2452('0x1f')]=_0x2452('0x31');_0x34d7f9['answeredelsewheredestinationuniqueid']=_0x5ce5fb[_0x2452('0x13')];_0x34d7f9[_0x2452('0x32')]=_0x5ce5fb['membername'];writeDB(_0x34d7f9);}});}}catch(_0xfabbd8){utils[_0x2452('0x17')](util[_0x2452('0x1')](_0x2452('0x2b'),_0x5ce5fb['uniqueid']),_0xfabbd8);}};exports[_0x2452('0xe')]=function(_0x304942){try{if(!_[_0x2452('0x1a')](agents[_0x304942[_0x2452('0x13')]])){utils[_0x2452('0x2a')](util[_0x2452('0x1')]('[%s][agents][agentcomplete]',_0x304942[_0x2452('0x3')]),_0x304942);utils['info'](util[_0x2452('0x1')](_0x2452('0x33'),_0x304942['uniqueid'],agents[_0x304942['destuniqueid']]['membername'],_0x304942['destuniqueid']));agents[_0x304942[_0x2452('0x13')]]['agentcomplete']=!![];agents[_0x304942[_0x2452('0x13')]]['agentcompleteAt']=utils[_0x2452('0x1e')]();agents[_0x304942[_0x2452('0x13')]]['talktime']=utils['diffTime'](agents[_0x304942[_0x2452('0x13')]]['agentcompleteAt'],agents[_0x304942[_0x2452('0x13')]][_0x2452('0x2d')]);agents[_0x304942[_0x2452('0x13')]][_0x2452('0x1f')]=_0x304942['reason'];agents[_0x304942['destuniqueid']][_0x2452('0xa')]=_0x2452('0x34');writeDB(agents[_0x304942[_0x2452('0x13')]]);}}catch(_0x2d06f2){utils[_0x2452('0x17')](util['format'](_0x2452('0x35'),_0x304942['uniqueid']),_0x2d06f2);}};exports[_0x2452('0x36')]=function(_0x53fd05){try{if(!_[_0x2452('0x1a')](agents[_0x53fd05[_0x2452('0x37')]])){utils['debug'](util[_0x2452('0x1')]('[%s][agents][blindtransfer]',_0x53fd05[_0x2452('0x3')]),_0x53fd05);utils['info'](util['format']('[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s',_0x53fd05[_0x2452('0x3')],agents[_0x53fd05[_0x2452('0x37')]][_0x2452('0x6')],agents[_0x53fd05['transfereruniqueid']][_0x2452('0x3')]));agents[_0x53fd05[_0x2452('0x37')]][_0x2452('0x38')]=!![];agents[_0x53fd05[_0x2452('0x37')]][_0x2452('0x39')]='blind';agents[_0x53fd05[_0x2452('0x37')]]['transferexten']=_0x53fd05[_0x2452('0x3a')];agents[_0x53fd05[_0x2452('0x37')]][_0x2452('0x3b')]=agents[_0x53fd05[_0x2452('0x37')]][_0x2452('0x3')];}}catch(_0x2096e2){utils[_0x2452('0x17')](util[_0x2452('0x1')](_0x2452('0x3c'),_0x53fd05['uniqueid']),_0x2096e2);}};exports[_0x2452('0x3d')]=function(_0x595f9f){try{utils[_0x2452('0x2a')](util['format'](_0x2452('0x3e'),_0x595f9f[_0x2452('0x3f')]),_0x595f9f);if(_0x595f9f['origtransfereruniqueid']==_0x595f9f[_0x2452('0x40')]){if(!_[_0x2452('0x1a')](agents[_0x595f9f[_0x2452('0x41')]])){utils[_0x2452('0x16')](util[_0x2452('0x1')](_0x2452('0x42'),_0x595f9f[_0x2452('0x3f')],agents[_0x595f9f[_0x2452('0x41')]][_0x2452('0x6')]));agents[_0x595f9f[_0x2452('0x41')]][_0x2452('0x38')]=!![];agents[_0x595f9f['secondtransfereruniqueid']][_0x2452('0x39')]='ATTENDED';agents[_0x595f9f[_0x2452('0x41')]]['transferexten']=_0x595f9f[_0x2452('0x43')];agents[_0x595f9f[_0x2452('0x41')]][_0x2452('0x3b')]=_0x595f9f[_0x2452('0x3f')];}if(_0x595f9f[_0x2452('0x44')]&&agents[_0x595f9f[_0x2452('0x44')]]){agents[_0x595f9f[_0x2452('0x44')]][_0x2452('0x45')]=0x1;transfers[_0x595f9f[_0x2452('0x44')]]=_[_0x2452('0x46')](agents[_0x595f9f[_0x2452('0x44')]]);transfers[_0x595f9f['transfereeuniqueid']][_0x2452('0x8')]=agents[_0x595f9f[_0x2452('0x41')]][_0x2452('0x8')];transfers[_0x595f9f[_0x2452('0x44')]][_0x2452('0x47')]=agents[_0x595f9f[_0x2452('0x41')]]['calleridname'];transfers[_0x595f9f[_0x2452('0x44')]][_0x2452('0x14')]=utils['now']();transfers[_0x595f9f[_0x2452('0x44')]][_0x2452('0x2d')]=utils[_0x2452('0x1e')]();transfers[_0x595f9f[_0x2452('0x44')]][_0x2452('0x21')]=0x0;transfers[_0x595f9f[_0x2452('0x44')]][_0x2452('0x45')]=0x2;}}else if(_0x595f9f[_0x2452('0x41')]==_0x595f9f[_0x2452('0x48')]){if(!_[_0x2452('0x1a')](agents[_0x595f9f[_0x2452('0x3f')]])){utils['info'](util['format'](_0x2452('0x42'),_0x595f9f['origtransfereruniqueid'],agents[_0x595f9f[_0x2452('0x3f')]][_0x2452('0x6')]));agents[_0x595f9f[_0x2452('0x3f')]][_0x2452('0x38')]=!![];agents[_0x595f9f[_0x2452('0x3f')]][_0x2452('0x39')]='ATTENDED';agents[_0x595f9f['origtransfereruniqueid']][_0x2452('0x49')]=_0x595f9f['secondtransfererexten'];agents[_0x595f9f[_0x2452('0x3f')]]['transferuniqueid']=_0x595f9f[_0x2452('0x41')];}if(_0x595f9f[_0x2452('0x4a')]&&agents[_0x595f9f[_0x2452('0x4a')]]){agents[_0x595f9f[_0x2452('0x4a')]]['agententerreason']=0x1;transfers[_0x595f9f['transfertargetuniqueid']]=_['clone'](agents[_0x595f9f[_0x2452('0x4a')]]);transfers[_0x595f9f[_0x2452('0x4a')]]['calleridnum']=agents[_0x595f9f['origtransfereruniqueid']]['calleridnum'];transfers[_0x595f9f['transfertargetuniqueid']]['calleridname']=agents[_0x595f9f[_0x2452('0x3f')]]['calleridname'];transfers[_0x595f9f['transfertargetuniqueid']][_0x2452('0x14')]=utils[_0x2452('0x1e')]();transfers[_0x595f9f[_0x2452('0x4a')]][_0x2452('0x2d')]=utils[_0x2452('0x1e')]();transfers[_0x595f9f[_0x2452('0x4a')]]['holdtime']=0x0;transfers[_0x595f9f[_0x2452('0x4a')]][_0x2452('0x45')]=0x2;}}}catch(_0x45c850){utils['error'](util['format'](_0x2452('0x3e'),_0x595f9f[_0x2452('0x3f')]),_0x45c850);}};exports[_0x2452('0x4b')]=function(_0x1dec54){try{utils[_0x2452('0x2a')](util[_0x2452('0x1')](_0x2452('0x4c'),_0x1dec54[_0x2452('0x3')]),_0x1dec54);if(agents[_0x1dec54['uniqueid']]&&agents[_0x1dec54[_0x2452('0x3')]][_0x2452('0x1f')]===_0x2452('0x20')){if(_0x1dec54[_0x2452('0x4d')]==='21'){agents[_0x1dec54['uniqueid']][_0x2452('0x1f')]=_0x2452('0x4e');agents[_0x1dec54['uniqueid']][_0x2452('0xa')]=_0x2452('0x4e');}utils[_0x2452('0x16')](util[_0x2452('0x1')](_0x2452('0x4f'),_0x1dec54[_0x2452('0x3')],agents[_0x1dec54[_0x2452('0x3')]][_0x2452('0x6')],agents[_0x1dec54['uniqueid']]['reason'],agents[_0x1dec54[_0x2452('0x3')]][_0x2452('0xa')]));writeDB(agents[_0x1dec54[_0x2452('0x3')]]);var _0x1530fe=unanswered['indexOf'](_0x1dec54[_0x2452('0x3')]);if(_0x1530fe>-0x1){unanswered[_0x2452('0x50')](_0x1530fe,0x1);}}if(transfers[_0x1dec54[_0x2452('0x3')]]){transfers[_0x1dec54[_0x2452('0x3')]]['agentcomplete']=!![];transfers[_0x1dec54[_0x2452('0x3')]][_0x2452('0x51')]=utils[_0x2452('0x1e')]();transfers[_0x1dec54[_0x2452('0x3')]]['talktime']=utils['diffTime'](transfers[_0x1dec54[_0x2452('0x3')]][_0x2452('0x51')],transfers[_0x1dec54['uniqueid']][_0x2452('0x2d')]);transfers[_0x1dec54[_0x2452('0x3')]][_0x2452('0x1f')]=_0x2452('0x52');transfers[_0x1dec54[_0x2452('0x3')]][_0x2452('0xa')]=_0x2452('0x34');utils[_0x2452('0x16')](util[_0x2452('0x1')](_0x2452('0x4f'),_0x1dec54[_0x2452('0x3')],transfers[_0x1dec54[_0x2452('0x3')]][_0x2452('0x6')],transfers[_0x1dec54[_0x2452('0x3')]][_0x2452('0x1f')],transfers[_0x1dec54[_0x2452('0x3')]]['lastevent']));writeDB(transfers[_0x1dec54[_0x2452('0x3')]],!![]);}if(agents[_0x1dec54[_0x2452('0x3')]]&&agents[_0x1dec54[_0x2452('0x3')]]['agentconnectAt']){agents[_0x1dec54['uniqueid']]['agentcomplete']=!![];agents[_0x1dec54[_0x2452('0x3')]][_0x2452('0x51')]=utils[_0x2452('0x1e')]();agents[_0x1dec54[_0x2452('0x3')]]['talktime']=utils['diffTime'](agents[_0x1dec54['uniqueid']][_0x2452('0x51')],agents[_0x1dec54['uniqueid']][_0x2452('0x2d')]);agents[_0x1dec54['uniqueid']][_0x2452('0x1f')]=agents[_0x1dec54['uniqueid']][_0x2452('0x38')]?'transfer':_0x2452('0x52');agents[_0x1dec54[_0x2452('0x3')]][_0x2452('0xa')]=_0x2452('0x34');utils[_0x2452('0x16')](util['format'](_0x2452('0x4f'),_0x1dec54[_0x2452('0x3')],agents[_0x1dec54[_0x2452('0x3')]][_0x2452('0x6')],agents[_0x1dec54[_0x2452('0x3')]][_0x2452('0x1f')],agents[_0x1dec54[_0x2452('0x3')]][_0x2452('0xa')]));writeDB(agents[_0x1dec54[_0x2452('0x3')]]);}}catch(_0x3b681c){utils[_0x2452('0x17')](util['format'](_0x2452('0x4c'),_0x1dec54['uniqueid']),_0x3b681c);}};
\ No newline at end of file
+var _0xe1e3=['agentcompleteAt','[%s][agents][agentcomplete]','blindtransfer','transfereruniqueid','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfer','transfertype','extension','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfereruniqueid','transferexten','transfereeuniqueid','calleridname','agentcalledAt','agententerreason','secondtransfererlinkedid','ATTENDED','secondtransfererexten','transferuniqueid','transfertargetuniqueid','clone','hangup','[%s][agents][hangup]','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','splice','agent','complete','lodash','util','format','uniqueid','channel','queue','membername','interface','calleridnum','lastevent','getVoiceQueueByName','then','agentcomplete','acwtime','agentacw','acwTimeout','CreateVoiceAgentReport','[%s][agents][agentcalled]','destuniqueid','now','called','info','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','debug','agentringnoanswer','agentringnoanswerAt','timeout','talktime','error','queuecallerabandon','includes','[%s][agents][queuecallerabandon]','abandoned','reason','holdtime','agentconnect','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','connectedlinenum','connectedlinename','ringtime','connect','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentconnect]','isNil','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diffTime'];(function(_0x2c5d3a,_0x18b0d4){var _0x2cd7a7=function(_0x171af4){while(--_0x171af4){_0x2c5d3a['push'](_0x2c5d3a['shift']());}};_0x2cd7a7(++_0x18b0d4);}(_0xe1e3,0x1bb));var _0x3e1e=function(_0xe6582a,_0x32525b){_0xe6582a=_0xe6582a-0x0;var _0x2af50f=_0xe1e3[_0xe6582a];return _0x2af50f;};'use strict';var _=require(_0x3e1e('0x0'));var util=require(_0x3e1e('0x1'));var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0xdbdabb,_0x5e9f9a){utils['info'](util[_0x3e1e('0x2')]('[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0xdbdabb[_0x3e1e('0x3')],_0xdbdabb[_0x3e1e('0x4')],_0xdbdabb[_0x3e1e('0x5')],_0xdbdabb[_0x3e1e('0x6')],_0xdbdabb[_0x3e1e('0x7')],_0xdbdabb[_0x3e1e('0x8')],_0xdbdabb['connectedlinenum'],_0xdbdabb[_0x3e1e('0x9')]));if(_0xdbdabb[_0x3e1e('0x5')]){utils[_0x3e1e('0xa')](_0xdbdabb[_0x3e1e('0x5')])[_0x3e1e('0xb')](function(_0x1e5173){if(_0x1e5173){_0xdbdabb['type']=_0x1e5173['type'];_0xdbdabb['agentacw']=_0xdbdabb[_0x3e1e('0xc')]?_0x1e5173['acw']:![];_0xdbdabb[_0x3e1e('0xd')]=_0xdbdabb[_0x3e1e('0xe')]?_0x1e5173[_0x3e1e('0xf')]:0x0;}utils['request'](_0x3e1e('0x10'),_0xdbdabb);});}else{utils['request']('CreateVoiceAgentReport',_0xdbdabb);}if(_0x5e9f9a){delete transfers[_0xdbdabb['uniqueid']];}else{delete agents[_0xdbdabb['destuniqueid']];}}exports['agentcalled']=function(_0x14ad58){try{utils['debug'](util['format'](_0x3e1e('0x11'),_0x14ad58[_0x3e1e('0x3')]),_0x14ad58);agents[_0x14ad58[_0x3e1e('0x12')]]=_0x14ad58;agents[_0x14ad58['destuniqueid']]['agentcalledAt']=utils[_0x3e1e('0x13')]();agents[_0x14ad58[_0x3e1e('0x12')]]['lastevent']=_0x3e1e('0x14');agents[_0x14ad58[_0x3e1e('0x12')]]['connectedlinenum']=null;agents[_0x14ad58[_0x3e1e('0x12')]]['connectedlinename']=null;utils[_0x3e1e('0x15')](util[_0x3e1e('0x2')](_0x3e1e('0x16'),_0x14ad58[_0x3e1e('0x3')],agents[_0x14ad58[_0x3e1e('0x12')]][_0x3e1e('0x6')],_0x14ad58['destuniqueid']));}catch(_0x5dccb8){utils['error'](util[_0x3e1e('0x2')](_0x3e1e('0x11'),_0x14ad58[_0x3e1e('0x3')]),_0x5dccb8);}};exports['agentringnoanswer']=function(_0x1c5acd){try{if(!_['isNil'](agents[_0x1c5acd[_0x3e1e('0x12')]])){utils[_0x3e1e('0x17')](util[_0x3e1e('0x2')]('[%s][agents][agentringnoanswer]',_0x1c5acd[_0x3e1e('0x3')]),_0x1c5acd);utils[_0x3e1e('0x15')](util[_0x3e1e('0x2')]('[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout',_0x1c5acd['uniqueid'],agents[_0x1c5acd[_0x3e1e('0x12')]][_0x3e1e('0x6')],_0x1c5acd['destuniqueid']));agents[_0x1c5acd[_0x3e1e('0x12')]][_0x3e1e('0x18')]=!![];agents[_0x1c5acd[_0x3e1e('0x12')]][_0x3e1e('0x19')]=utils[_0x3e1e('0x13')]();agents[_0x1c5acd[_0x3e1e('0x12')]][_0x3e1e('0x9')]=_0x3e1e('0x1a');agents[_0x1c5acd['destuniqueid']]['reason']=_0x3e1e('0x1a');agents[_0x1c5acd[_0x3e1e('0x12')]]['holdtime']=_0x1c5acd['ringtime']?parseInt(_0x1c5acd['ringtime'])/0x3e8:0x0;agents[_0x1c5acd[_0x3e1e('0x12')]][_0x3e1e('0x1b')]=0x0;unanswered['push'](_0x1c5acd[_0x3e1e('0x12')]);}}catch(_0x5ac814){utils[_0x3e1e('0x1c')](util[_0x3e1e('0x2')]('[%s][agents][agentringnoanswer]',_0x1c5acd[_0x3e1e('0x3')]),_0x5ac814);}};exports[_0x3e1e('0x1d')]=function(_0x45ed0e){try{_['forIn'](agents,function(_0xdef39,_0x4ec149){if(_0xdef39['uniqueid']==_0x45ed0e['uniqueid']&&!_[_0x3e1e('0x1e')](unanswered,_0xdef39['destuniqueid'])){utils['debug'](util[_0x3e1e('0x2')](_0x3e1e('0x1f'),_0x45ed0e[_0x3e1e('0x3')]),_0x45ed0e);utils[_0x3e1e('0x15')](util[_0x3e1e('0x2')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x45ed0e['uniqueid'],_0xdef39['membername'],_0xdef39['destuniqueid']));_0xdef39[_0x3e1e('0x18')]=!![];_0xdef39[_0x3e1e('0x19')]=utils[_0x3e1e('0x13')]();_0xdef39[_0x3e1e('0x9')]=_0x3e1e('0x20');_0xdef39[_0x3e1e('0x21')]=_0x3e1e('0x20');_0xdef39[_0x3e1e('0x22')]=_0x45ed0e['holdtime'];_0xdef39[_0x3e1e('0x1b')]=0x0;writeDB(_0xdef39);}});}catch(_0x348ef5){utils['error'](util[_0x3e1e('0x2')](_0x3e1e('0x1f'),_0x45ed0e[_0x3e1e('0x3')]),_0x348ef5);}};exports[_0x3e1e('0x23')]=function(_0x55a082){try{if(agents[_0x55a082['destuniqueid']]){utils[_0x3e1e('0x17')](util[_0x3e1e('0x2')]('[%s][agents][agentconnect]',_0x55a082[_0x3e1e('0x3')]),_0x55a082);utils[_0x3e1e('0x15')](util['format'](_0x3e1e('0x24'),_0x55a082[_0x3e1e('0x3')],agents[_0x55a082[_0x3e1e('0x12')]][_0x3e1e('0x6')],_0x55a082[_0x3e1e('0x12')]));agents[_0x55a082['destuniqueid']][_0x3e1e('0x25')]=utils[_0x3e1e('0x13')]();agents[_0x55a082[_0x3e1e('0x12')]][_0x3e1e('0x26')]=_0x55a082['connectedlinenum'];agents[_0x55a082[_0x3e1e('0x12')]][_0x3e1e('0x27')]=_0x55a082[_0x3e1e('0x27')];agents[_0x55a082[_0x3e1e('0x12')]][_0x3e1e('0x22')]=_0x55a082[_0x3e1e('0x28')];agents[_0x55a082[_0x3e1e('0x12')]]['lastevent']=_0x3e1e('0x29');_['forIn'](agents,function(_0x53bdf5,_0x4f598e){if(_0x53bdf5[_0x3e1e('0x12')]!=_0x55a082[_0x3e1e('0x12')]&&_0x53bdf5['uniqueid']==_0x55a082[_0x3e1e('0x3')]){_0x53bdf5[_0x3e1e('0x1b')]=0x0;_0x53bdf5['holdtime']=_0x55a082[_0x3e1e('0x28')];_0x53bdf5[_0x3e1e('0x18')]=!![];_0x53bdf5['agentringnoanswerAt']=utils['now']();_0x53bdf5[_0x3e1e('0x9')]='answered_elsewhere';_0x53bdf5['reason']=_0x3e1e('0x2a');_0x53bdf5[_0x3e1e('0x2b')]=_0x55a082[_0x3e1e('0x12')];_0x53bdf5[_0x3e1e('0x2c')]=_0x55a082[_0x3e1e('0x6')];writeDB(_0x53bdf5);}});}}catch(_0x55ea1d){utils['error'](util[_0x3e1e('0x2')](_0x3e1e('0x2d'),_0x55a082[_0x3e1e('0x3')]),_0x55ea1d);}};exports['agentcomplete']=function(_0x1124d0){try{if(!_[_0x3e1e('0x2e')](agents[_0x1124d0[_0x3e1e('0x12')]])){utils['debug'](util[_0x3e1e('0x2')]('[%s][agents][agentcomplete]',_0x1124d0['uniqueid']),_0x1124d0);utils[_0x3e1e('0x15')](util[_0x3e1e('0x2')](_0x3e1e('0x2f'),_0x1124d0[_0x3e1e('0x3')],agents[_0x1124d0['destuniqueid']]['membername'],_0x1124d0['destuniqueid']));agents[_0x1124d0['destuniqueid']][_0x3e1e('0xc')]=!![];agents[_0x1124d0[_0x3e1e('0x12')]]['agentcompleteAt']=utils['now']();agents[_0x1124d0[_0x3e1e('0x12')]][_0x3e1e('0x1b')]=utils[_0x3e1e('0x30')](agents[_0x1124d0['destuniqueid']][_0x3e1e('0x31')],agents[_0x1124d0['destuniqueid']][_0x3e1e('0x25')]);agents[_0x1124d0[_0x3e1e('0x12')]][_0x3e1e('0x21')]=_0x1124d0[_0x3e1e('0x21')];agents[_0x1124d0[_0x3e1e('0x12')]][_0x3e1e('0x9')]='complete';writeDB(agents[_0x1124d0[_0x3e1e('0x12')]]);}}catch(_0x1ce1cd){utils['error'](util[_0x3e1e('0x2')](_0x3e1e('0x32'),_0x1124d0['uniqueid']),_0x1ce1cd);}};exports[_0x3e1e('0x33')]=function(_0x347b3f){try{if(!_[_0x3e1e('0x2e')](agents[_0x347b3f[_0x3e1e('0x34')]])){utils['debug'](util[_0x3e1e('0x2')](_0x3e1e('0x35'),_0x347b3f[_0x3e1e('0x3')]),_0x347b3f);utils[_0x3e1e('0x15')](util['format'](_0x3e1e('0x36'),_0x347b3f[_0x3e1e('0x3')],agents[_0x347b3f[_0x3e1e('0x34')]][_0x3e1e('0x6')],agents[_0x347b3f[_0x3e1e('0x34')]][_0x3e1e('0x3')]));agents[_0x347b3f[_0x3e1e('0x34')]][_0x3e1e('0x37')]=!![];agents[_0x347b3f['transfereruniqueid']][_0x3e1e('0x38')]='blind';agents[_0x347b3f['transfereruniqueid']]['transferexten']=_0x347b3f[_0x3e1e('0x39')];agents[_0x347b3f[_0x3e1e('0x34')]]['transferuniqueid']=agents[_0x347b3f[_0x3e1e('0x34')]]['uniqueid'];}}catch(_0x5b2416){utils[_0x3e1e('0x1c')](util['format']('[%s][agents][blindtransfer]',_0x347b3f['uniqueid']),_0x5b2416);}};exports[_0x3e1e('0x3a')]=function(_0xe577b2){try{utils[_0x3e1e('0x17')](util[_0x3e1e('0x2')](_0x3e1e('0x3b'),_0xe577b2[_0x3e1e('0x3c')]),_0xe577b2);if(_0xe577b2[_0x3e1e('0x3c')]==_0xe577b2['origtransfererlinkedid']){if(!_[_0x3e1e('0x2e')](agents[_0xe577b2['secondtransfereruniqueid']])){utils[_0x3e1e('0x15')](util[_0x3e1e('0x2')](_0x3e1e('0x3d'),_0xe577b2['origtransfereruniqueid'],agents[_0xe577b2['secondtransfereruniqueid']][_0x3e1e('0x6')]));agents[_0xe577b2[_0x3e1e('0x3e')]]['transfer']=!![];agents[_0xe577b2[_0x3e1e('0x3e')]]['transfertype']='ATTENDED';agents[_0xe577b2[_0x3e1e('0x3e')]][_0x3e1e('0x3f')]=_0xe577b2['origtransfererexten'];agents[_0xe577b2[_0x3e1e('0x3e')]]['transferuniqueid']=_0xe577b2['origtransfereruniqueid'];}if(_0xe577b2[_0x3e1e('0x40')]&&agents[_0xe577b2['transfereeuniqueid']]){agents[_0xe577b2[_0x3e1e('0x40')]]['agententerreason']=0x1;transfers[_0xe577b2[_0x3e1e('0x40')]]=_['clone'](agents[_0xe577b2[_0x3e1e('0x40')]]);transfers[_0xe577b2[_0x3e1e('0x40')]]['calleridnum']=agents[_0xe577b2['secondtransfereruniqueid']]['calleridnum'];transfers[_0xe577b2[_0x3e1e('0x40')]][_0x3e1e('0x41')]=agents[_0xe577b2[_0x3e1e('0x3e')]]['calleridname'];transfers[_0xe577b2[_0x3e1e('0x40')]][_0x3e1e('0x42')]=utils[_0x3e1e('0x13')]();transfers[_0xe577b2['transfereeuniqueid']]['agentconnectAt']=utils[_0x3e1e('0x13')]();transfers[_0xe577b2['transfereeuniqueid']][_0x3e1e('0x22')]=0x0;transfers[_0xe577b2[_0x3e1e('0x40')]][_0x3e1e('0x43')]=0x2;}}else if(_0xe577b2['secondtransfereruniqueid']==_0xe577b2[_0x3e1e('0x44')]){if(!_['isNil'](agents[_0xe577b2[_0x3e1e('0x3c')]])){utils[_0x3e1e('0x15')](util['format'](_0x3e1e('0x3d'),_0xe577b2['origtransfereruniqueid'],agents[_0xe577b2[_0x3e1e('0x3c')]]['membername']));agents[_0xe577b2[_0x3e1e('0x3c')]]['transfer']=!![];agents[_0xe577b2[_0x3e1e('0x3c')]][_0x3e1e('0x38')]=_0x3e1e('0x45');agents[_0xe577b2['origtransfereruniqueid']][_0x3e1e('0x3f')]=_0xe577b2[_0x3e1e('0x46')];agents[_0xe577b2['origtransfereruniqueid']][_0x3e1e('0x47')]=_0xe577b2['secondtransfereruniqueid'];}if(_0xe577b2['transfertargetuniqueid']&&agents[_0xe577b2['transfertargetuniqueid']]){agents[_0xe577b2[_0x3e1e('0x48')]][_0x3e1e('0x43')]=0x1;transfers[_0xe577b2[_0x3e1e('0x48')]]=_[_0x3e1e('0x49')](agents[_0xe577b2[_0x3e1e('0x48')]]);transfers[_0xe577b2[_0x3e1e('0x48')]][_0x3e1e('0x8')]=agents[_0xe577b2['origtransfereruniqueid']][_0x3e1e('0x8')];transfers[_0xe577b2[_0x3e1e('0x48')]][_0x3e1e('0x41')]=agents[_0xe577b2[_0x3e1e('0x3c')]][_0x3e1e('0x41')];transfers[_0xe577b2[_0x3e1e('0x48')]][_0x3e1e('0x42')]=utils[_0x3e1e('0x13')]();transfers[_0xe577b2['transfertargetuniqueid']]['agentconnectAt']=utils[_0x3e1e('0x13')]();transfers[_0xe577b2[_0x3e1e('0x48')]][_0x3e1e('0x22')]=0x0;transfers[_0xe577b2[_0x3e1e('0x48')]][_0x3e1e('0x43')]=0x2;}}}catch(_0x2e950d){utils[_0x3e1e('0x1c')](util[_0x3e1e('0x2')](_0x3e1e('0x3b'),_0xe577b2[_0x3e1e('0x3c')]),_0x2e950d);}};exports[_0x3e1e('0x4a')]=function(_0x50ba57){try{utils['debug'](util['format'](_0x3e1e('0x4b'),_0x50ba57[_0x3e1e('0x3')]),_0x50ba57);if(agents[_0x50ba57[_0x3e1e('0x3')]]&&agents[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x21')]==='timeout'){if(_0x50ba57[_0x3e1e('0x4c')]==='21'){agents[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x21')]=_0x3e1e('0x4d');agents[_0x50ba57[_0x3e1e('0x3')]]['lastevent']=_0x3e1e('0x4d');}utils[_0x3e1e('0x15')](util[_0x3e1e('0x2')](_0x3e1e('0x4e'),_0x50ba57[_0x3e1e('0x3')],agents[_0x50ba57[_0x3e1e('0x3')]]['membername'],agents[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x21')],agents[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x9')]));writeDB(agents[_0x50ba57[_0x3e1e('0x3')]]);var _0x372581=unanswered['indexOf'](_0x50ba57[_0x3e1e('0x3')]);if(_0x372581>-0x1){unanswered[_0x3e1e('0x4f')](_0x372581,0x1);}}if(transfers[_0x50ba57[_0x3e1e('0x3')]]){transfers[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0xc')]=!![];transfers[_0x50ba57[_0x3e1e('0x3')]]['agentcompleteAt']=utils[_0x3e1e('0x13')]();transfers[_0x50ba57['uniqueid']][_0x3e1e('0x1b')]=utils[_0x3e1e('0x30')](transfers[_0x50ba57['uniqueid']][_0x3e1e('0x31')],transfers[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x25')]);transfers[_0x50ba57[_0x3e1e('0x3')]]['reason']=_0x3e1e('0x50');transfers[_0x50ba57['uniqueid']][_0x3e1e('0x9')]=_0x3e1e('0x51');utils[_0x3e1e('0x15')](util[_0x3e1e('0x2')](_0x3e1e('0x4e'),_0x50ba57[_0x3e1e('0x3')],transfers[_0x50ba57['uniqueid']][_0x3e1e('0x6')],transfers[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x21')],transfers[_0x50ba57[_0x3e1e('0x3')]]['lastevent']));writeDB(transfers[_0x50ba57[_0x3e1e('0x3')]],!![]);}if(agents[_0x50ba57[_0x3e1e('0x3')]]&&agents[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x25')]){agents[_0x50ba57['uniqueid']][_0x3e1e('0xc')]=!![];agents[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x31')]=utils[_0x3e1e('0x13')]();agents[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x1b')]=utils['diffTime'](agents[_0x50ba57['uniqueid']]['agentcompleteAt'],agents[_0x50ba57[_0x3e1e('0x3')]]['agentconnectAt']);agents[_0x50ba57[_0x3e1e('0x3')]]['reason']=agents[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x37')]?_0x3e1e('0x37'):_0x3e1e('0x50');agents[_0x50ba57['uniqueid']][_0x3e1e('0x9')]='complete';utils[_0x3e1e('0x15')](util['format'](_0x3e1e('0x4e'),_0x50ba57[_0x3e1e('0x3')],agents[_0x50ba57['uniqueid']][_0x3e1e('0x6')],agents[_0x50ba57[_0x3e1e('0x3')]][_0x3e1e('0x21')],agents[_0x50ba57['uniqueid']]['lastevent']));writeDB(agents[_0x50ba57[_0x3e1e('0x3')]]);}}catch(_0x20bb6d){utils[_0x3e1e('0x1c')](util['format'](_0x3e1e('0x4b'),_0x50ba57['uniqueid']),_0x20bb6d);}};
\ No newline at end of file
index d6e33d8..90c0c3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc175=['billableseconds','[%s][calls][hangup]','[%s][calls][attendedtransfer]','origtransfereruniqueid','localtwolinkedid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstartAt','musiconholdstop','mohtime','[%s][calls][musiconholdstop]','varset','[%s][calls][varset]','variable','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','destination','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-callerid-preview','xmd-queue','xmcs-queue','lastapplication','lastdata','xmd-contactid','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','routeid','sipcallid','newexten','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','startsWith','split','substring','lastIndexOf','includes','noop','execif','set','gotoif','lodash','util','./utils','NO\x20ANSWER','FAILED','ANSWERED','BUSY','info','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','calleridnum','connectedlinenum','lastevent','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','newchannel','debug','format','linkedid','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','exten','context','now','error','[%s][calls][newchannel]','newstate','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','hangup','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','endtime','duration','diffTime','starttime'];(function(_0x307086,_0x3bfe4e){var _0x699043=function(_0x1a7677){while(--_0x1a7677){_0x307086['push'](_0x307086['shift']());}};_0x699043(++_0x3bfe4e);}(_0xc175,0x178));var _0x5c17=function(_0x4c4ba3,_0x449300){_0x4c4ba3=_0x4c4ba3-0x0;var _0x41501a=_0xc175[_0x4c4ba3];return _0x41501a;};'use strict';var _=require(_0x5c17('0x0'));var util=require(_0x5c17('0x1'));var utils=require(_0x5c17('0x2'));var dispositions=[_0x5c17('0x3'),_0x5c17('0x4'),_0x5c17('0x4'),_0x5c17('0x3'),_0x5c17('0x3'),_0x5c17('0x3'),_0x5c17('0x5'),_0x5c17('0x6'),_0x5c17('0x4'),'FAILED',_0x5c17('0x4')];var channels={};function writeDB(_0xb6a745){utils[_0x5c17('0x7')](util['format'](_0x5c17('0x8'),_0xb6a745[_0x5c17('0x9')],_0xb6a745[_0x5c17('0xa')],_0xb6a745[_0x5c17('0xb')],_0xb6a745[_0x5c17('0xc')],_0xb6a745['interface'],_0xb6a745[_0x5c17('0xd')],_0xb6a745[_0x5c17('0xe')],_0xb6a745[_0x5c17('0xf')]));if(_0xb6a745[_0x5c17('0x10')]){utils[_0x5c17('0x11')](_0xb6a745[_0x5c17('0x10')])[_0x5c17('0x12')](function(_0x1d9c8d){if(_0x1d9c8d){_0xb6a745[_0x5c17('0x13')]=_0x1d9c8d['id'];}utils[_0x5c17('0x14')](_0x5c17('0x15'),_0xb6a745);});}else{utils[_0x5c17('0x14')](_0x5c17('0x15'),_0xb6a745);}if(channels[_0xb6a745[_0x5c17('0x9')]]){delete channels[_0xb6a745['uniqueid']];}}exports[_0x5c17('0x16')]=function(_0xea8226){try{utils[_0x5c17('0x17')](util[_0x5c17('0x18')]('[%s][calls][newchannel]',_0xea8226[_0x5c17('0x9')]),_0xea8226);if(_0xea8226[_0x5c17('0x9')]==_0xea8226[_0x5c17('0x19')]&&_0xea8226[_0x5c17('0xa')]!=_0x5c17('0x1a')){utils[_0x5c17('0x7')](util[_0x5c17('0x18')](_0x5c17('0x1b'),_0xea8226[_0x5c17('0x9')],_0xea8226['context'],_0xea8226[_0x5c17('0x1c')]));channels[_0xea8226[_0x5c17('0x9')]]={'uniqueid':_0xea8226[_0x5c17('0x9')],'accountcode':_0xea8226[_0x5c17('0x10')],'source':_0xea8226[_0x5c17('0xd')],'destination':_0xea8226[_0x5c17('0x1c')],'destinationcontext':_0xea8226[_0x5c17('0x1d')],'channel':_0xea8226['channel'],'starttime':utils[_0x5c17('0x1e')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x5c17('0x3'),'amaflags':'DOCUMENTATION'};}}catch(_0x551729){utils[_0x5c17('0x1f')](util[_0x5c17('0x18')](_0x5c17('0x20'),_0xea8226['uniqueid']),_0x551729);}};exports[_0x5c17('0x21')]=function(_0x162c58){try{utils[_0x5c17('0x17')](util[_0x5c17('0x18')](_0x5c17('0x22'),_0x162c58['uniqueid']),_0x162c58);if(!_[_0x5c17('0x23')](channels[_0x162c58[_0x5c17('0x9')]])&&_0x162c58[_0x5c17('0x24')]==0x6){utils[_0x5c17('0x7')](util[_0x5c17('0x18')](_0x5c17('0x25'),_0x162c58[_0x5c17('0x9')],_0x162c58['context'],_0x162c58[_0x5c17('0xa')]));if(_[_0x5c17('0x23')](channels[_0x162c58[_0x5c17('0x9')]]['systemanswertime'])){channels[_0x162c58[_0x5c17('0x9')]][_0x5c17('0x26')]=utils['now']();}}else if(!_[_0x5c17('0x23')](channels[_0x162c58['linkedid']])&&_0x162c58[_0x5c17('0x24')]==0x6&&_0x162c58[_0x5c17('0x1d')]!=_0x5c17('0x27')){utils[_0x5c17('0x7')](util['format'](_0x5c17('0x28'),_0x162c58[_0x5c17('0x9')],_0x162c58['linkedid'],_0x162c58[_0x5c17('0x1d')],_0x162c58[_0x5c17('0xa')]));channels[_0x162c58[_0x5c17('0x19')]]['accountcode']=_0x162c58[_0x5c17('0x10')];channels[_0x162c58[_0x5c17('0x19')]][_0x5c17('0x29')]=_0x162c58[_0x5c17('0xa')];if(_[_0x5c17('0x23')](channels[_0x162c58['linkedid']][_0x5c17('0x2a')])){channels[_0x162c58[_0x5c17('0x19')]][_0x5c17('0x2a')]=utils[_0x5c17('0x1e')]();}channels[_0x162c58[_0x5c17('0x19')]][_0x5c17('0x2b')]=dispositions[_['toNumber'](_0x162c58[_0x5c17('0x24')])]||_0x5c17('0x5');}}catch(_0x50f090){utils[_0x5c17('0x1f')](util[_0x5c17('0x18')](_0x5c17('0x22'),_0x162c58[_0x5c17('0x9')]),_0x50f090);}};exports[_0x5c17('0x2c')]=function(_0x57ad96){try{if(!_[_0x5c17('0x23')](channels[_0x57ad96['uniqueid']])){utils['debug'](util[_0x5c17('0x18')]('[%s][calls][hangup]',_0x57ad96[_0x5c17('0x9')]),_0x57ad96);if(_[_0x5c17('0x23')](channels[_0x57ad96['uniqueid']][_0x5c17('0x2d')])){channels[_0x57ad96['uniqueid']][_0x5c17('0x2d')]=_0x57ad96[_0x5c17('0x2e')]+'\x20<'+_0x57ad96[_0x5c17('0xd')]+'>';}utils[_0x5c17('0x7')](util['format'](_0x5c17('0x2f'),_0x57ad96[_0x5c17('0x9')],channels[_0x57ad96[_0x5c17('0x9')]][_0x5c17('0x2d')],_0x57ad96['cause-txt']));channels[_0x57ad96['uniqueid']][_0x5c17('0x30')]=utils[_0x5c17('0x1e')]();channels[_0x57ad96[_0x5c17('0x9')]][_0x5c17('0x31')]=utils[_0x5c17('0x32')](channels[_0x57ad96[_0x5c17('0x9')]][_0x5c17('0x30')],channels[_0x57ad96[_0x5c17('0x9')]][_0x5c17('0x33')]);channels[_0x57ad96[_0x5c17('0x9')]][_0x5c17('0x34')]=channels[_0x57ad96['uniqueid']][_0x5c17('0x2a')]?utils[_0x5c17('0x32')](channels[_0x57ad96['uniqueid']][_0x5c17('0x30')],channels[_0x57ad96[_0x5c17('0x9')]][_0x5c17('0x2a')]):0x0;writeDB(channels[_0x57ad96[_0x5c17('0x9')]]);}}catch(_0x179828){utils[_0x5c17('0x1f')](util['format'](_0x5c17('0x35'),_0x57ad96[_0x5c17('0x9')]),_0x179828);}};exports['attendedtransfer']=function(_0x4ff965){try{if(!_[_0x5c17('0x23')](channels[_0x4ff965['localtwolinkedid']])){utils[_0x5c17('0x17')](util['format'](_0x5c17('0x36'),_0x4ff965[_0x5c17('0x37')]),_0x4ff965);if(channels[_0x4ff965[_0x5c17('0x38')]][_0x5c17('0xa')]==_0x4ff965[_0x5c17('0x39')]){utils[_0x5c17('0x7')](util['format'](_0x5c17('0x3a'),_0x4ff965[_0x5c17('0x37')],_0x4ff965[_0x5c17('0x38')],_0x4ff965[_0x5c17('0x3b')]));channels[_0x4ff965[_0x5c17('0x38')]]['destinationchannel']=_0x4ff965[_0x5c17('0x3b')];channels[_0x4ff965[_0x5c17('0x38')]][_0x5c17('0x3c')]=_0x5c17('0x3d');}else if(channels[_0x4ff965[_0x5c17('0x38')]][_0x5c17('0xa')]=_0x4ff965['transfertargetchannel']){utils[_0x5c17('0x7')](util['format']('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x4ff965[_0x5c17('0x37')],_0x4ff965['localtwolinkedid'],_0x4ff965[_0x5c17('0x3e')]));channels[_0x4ff965['localtwolinkedid']][_0x5c17('0x29')]=_0x4ff965[_0x5c17('0x3e')];channels[_0x4ff965[_0x5c17('0x38')]][_0x5c17('0x3c')]='_attended';}}}catch(_0x2a23b7){utils[_0x5c17('0x1f')](util[_0x5c17('0x18')](_0x5c17('0x36'),_0x4ff965[_0x5c17('0x37')]),_0x2a23b7);}};exports[_0x5c17('0x3f')]=function(_0x55a3ad){try{if(!_[_0x5c17('0x23')](channels[_0x55a3ad[_0x5c17('0x9')]])){utils[_0x5c17('0x17')](util[_0x5c17('0x18')](_0x5c17('0x40'),_0x55a3ad[_0x5c17('0x9')]),_0x55a3ad);channels[_0x55a3ad['uniqueid']]['musiconholdstartAt']=utils['now']();utils[_0x5c17('0x7')](util[_0x5c17('0x18')](_0x5c17('0x41'),_0x55a3ad[_0x5c17('0x9')],channels[_0x55a3ad['uniqueid']][_0x5c17('0x42')]));}}catch(_0x2d65fb){utils[_0x5c17('0x1f')](util[_0x5c17('0x18')](_0x5c17('0x40'),_0x55a3ad[_0x5c17('0x9')]),_0x2d65fb);}};exports[_0x5c17('0x43')]=function(_0x585169){try{if(!_['isNil'](channels[_0x585169[_0x5c17('0x9')]])){utils[_0x5c17('0x17')](util[_0x5c17('0x18')]('[%s][calls][musiconholdstop]',_0x585169[_0x5c17('0x9')]),_0x585169);if(!_[_0x5c17('0x23')](channels[_0x585169['uniqueid']]['musiconholdstartAt'])){channels[_0x585169[_0x5c17('0x9')]][_0x5c17('0x44')]+=utils[_0x5c17('0x32')](utils[_0x5c17('0x1e')](),channels[_0x585169[_0x5c17('0x9')]][_0x5c17('0x42')]);utils[_0x5c17('0x7')](util['format']('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x585169['uniqueid'],channels[_0x585169[_0x5c17('0x9')]][_0x5c17('0x44')]));delete channels[_0x585169[_0x5c17('0x9')]]['musiconholdstartAt'];}}}catch(_0x329c56){utils[_0x5c17('0x1f')](util[_0x5c17('0x18')](_0x5c17('0x45'),_0x585169[_0x5c17('0x9')]),_0x329c56);}};exports[_0x5c17('0x46')]=function(_0x583942){try{if(!_[_0x5c17('0x23')](channels[_0x583942['uniqueid']])){utils[_0x5c17('0x17')](util[_0x5c17('0x18')](_0x5c17('0x47'),_0x583942['uniqueid']),_0x583942);if(!_[_0x5c17('0x23')](_0x583942[_0x5c17('0x48')]['xmd-originatecalleridnum'])){utils[_0x5c17('0x7')](util[_0x5c17('0x18')](_0x5c17('0x49'),_0x583942[_0x5c17('0x9')],_0x583942[_0x5c17('0x4a')]));channels[_0x583942[_0x5c17('0x9')]][_0x5c17('0x4b')]=_0x583942[_0x5c17('0x4a')];}if(!_[_0x5c17('0x23')](_0x583942['variable']['xmd-phone'])){utils[_0x5c17('0x7')](util['format']('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x583942[_0x5c17('0x9')],_0x583942['value']));channels[_0x583942[_0x5c17('0x9')]][_0x5c17('0x4c')]=_0x583942[_0x5c17('0x4a')];channels[_0x583942[_0x5c17('0x9')]][_0x5c17('0x2d')]='\x22'+_0x583942['value']+'\x22\x20<'+_0x583942[_0x5c17('0x4a')]+'>';}if(!_[_0x5c17('0x23')](_0x583942[_0x5c17('0x48')]['xmd-callerid-preview'])||!_[_0x5c17('0x23')](_0x583942[_0x5c17('0x48')][_0x5c17('0x4d')])){utils['info'](util[_0x5c17('0x18')](_0x5c17('0x4e'),_0x583942[_0x5c17('0x9')],!_[_0x5c17('0x23')](_0x583942[_0x5c17('0x48')][_0x5c17('0x4f')])?_0x5c17('0x4f'):_0x5c17('0x4d'),_0x583942[_0x5c17('0x4a')]));channels[_0x583942[_0x5c17('0x9')]][_0x5c17('0x2d')]=_0x583942[_0x5c17('0x4a')];}if(!_[_0x5c17('0x23')](_0x583942[_0x5c17('0x48')][_0x5c17('0x50')])||!_[_0x5c17('0x23')](_0x583942['variable'][_0x5c17('0x51')])){utils[_0x5c17('0x7')](util[_0x5c17('0x18')](_0x5c17('0x4e'),_0x583942[_0x5c17('0x9')],!_[_0x5c17('0x23')](_0x583942[_0x5c17('0x48')]['xmd-queue'])?'xmd-queue':_0x5c17('0x51'),_0x583942[_0x5c17('0x4a')]));channels[_0x583942[_0x5c17('0x9')]][_0x5c17('0x52')]='Queue';channels[_0x583942[_0x5c17('0x9')]][_0x5c17('0x53')]=_0x583942[_0x5c17('0x4a')];channels[_0x583942['uniqueid']][_0x5c17('0xb')]=!![];}if(!_[_0x5c17('0x23')](_0x583942['variable'][_0x5c17('0x54')])){utils[_0x5c17('0x7')](util[_0x5c17('0x18')]('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x583942[_0x5c17('0x9')],_0x583942[_0x5c17('0x4a')]));channels[_0x583942[_0x5c17('0x9')]][_0x5c17('0x55')]=_0x583942[_0x5c17('0x4a')];}if(!_[_0x5c17('0x23')](_0x583942[_0x5c17('0x48')][_0x5c17('0x56')])){utils[_0x5c17('0x7')](util[_0x5c17('0x18')](_0x5c17('0x57'),_0x583942[_0x5c17('0x9')],_0x583942['value']));channels[_0x583942[_0x5c17('0x9')]][_0x5c17('0x58')]=_0x583942['value'];}if(!_[_0x5c17('0x23')](_0x583942['variable'][_0x5c17('0x59')])){utils[_0x5c17('0x7')](util[_0x5c17('0x18')]('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0x583942[_0x5c17('0x9')],_0x583942[_0x5c17('0x4a')]));channels[_0x583942[_0x5c17('0x9')]][_0x5c17('0x5a')]=_0x583942[_0x5c17('0x4a')];}if(!_[_0x5c17('0x23')](_0x583942[_0x5c17('0x48')][_0x5c17('0x5b')])){utils[_0x5c17('0x7')](util[_0x5c17('0x18')]('[%s][calls][varset]\x20variable:sipcallid\x20value:%s',_0x583942[_0x5c17('0x9')],_0x583942[_0x5c17('0x4a')]));channels[_0x583942[_0x5c17('0x9')]]['sipcallid']=_0x583942['value'];}}}catch(_0x3f11e4){utils[_0x5c17('0x1f')](util[_0x5c17('0x18')](_0x5c17('0x47'),_0x583942[_0x5c17('0x9')]),_0x3f11e4);}};exports[_0x5c17('0x5c')]=function(_0x3843f9){try{if(!_[_0x5c17('0x23')](channels[_0x3843f9[_0x5c17('0x9')]])){utils[_0x5c17('0x17')](util[_0x5c17('0x18')](_0x5c17('0x5d'),_0x3843f9[_0x5c17('0x9')]),_0x3843f9);utils[_0x5c17('0x7')](util[_0x5c17('0x18')](_0x5c17('0x5e'),_0x3843f9[_0x5c17('0x9')],_0x3843f9[_0x5c17('0x5f')],_0x3843f9[_0x5c17('0x60')]));if(_0x3843f9[_0x5c17('0x5f')][_0x5c17('0x61')]()=='set'&&_[_0x5c17('0x62')](_0x3843f9[_0x5c17('0x60')][_0x5c17('0x61')](),'cdr')){var _0x2fe018=_0x3843f9[_0x5c17('0x60')][_0x5c17('0x63')]('=');var _0x3e70ca=_0x2fe018[0x0][_0x5c17('0x64')](_0x2fe018[0x0][_0x5c17('0x65')]('(')+0x1,_0x2fe018[0x0][_0x5c17('0x65')](')'));var _0x50170b=_0x2fe018[0x1];channels[_0x3843f9[_0x5c17('0x9')]][_0x3e70ca]=_0x50170b;}if(!_[_0x5c17('0x66')]([_0x5c17('0x2c'),_0x5c17('0x67'),_0x5c17('0x68'),_0x5c17('0x69'),_0x5c17('0x6a')],_0x3843f9[_0x5c17('0x5f')][_0x5c17('0x61')]())){channels[_0x3843f9[_0x5c17('0x9')]]['lastapplication']=_0x3843f9[_0x5c17('0x5f')];channels[_0x3843f9[_0x5c17('0x9')]][_0x5c17('0x53')]=_0x3843f9[_0x5c17('0x60')];}}}catch(_0x246b9b){utils[_0x5c17('0x1f')](util['format'](_0x5c17('0x5d'),_0x3843f9['uniqueid']),_0x246b9b);}};
\ No newline at end of file
+var _0x1617=['[%s][calls][attendedtransfer]','origtransfereruniqueid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','_attended','transfertargetchannel','origtransfererchannel','userfield','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstop','mohtime','diffTime','[%s][calls][musiconholdstop]\x20mohtime:%s','[%s][calls][musiconholdstop]','varset','[%s][calls][varset]','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','variable','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','queue','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','newexten','[%s][calls][newexten]','application','toLowerCase','set','cdr','appdata','split','substring','includes','hangup','execif','gotoif','lodash','./utils','FAILED','NO\x20ANSWER','ANSWERED','BUSY','info','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','membername','interface','getUserByInternal','accountcode','UserId','request','CreateVoiceCallReport','uniqueid','newchannel','debug','linkedid','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','calleridnum','DOCUMENTATION','[%s][calls][newchannel]','newstate','[%s][calls][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','error','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','endtime','duration','billableseconds','attendedtransfer','localtwolinkedid'];(function(_0x3d1dbd,_0x5300f3){var _0xc9b900=function(_0x1ef8f4){while(--_0x1ef8f4){_0x3d1dbd['push'](_0x3d1dbd['shift']());}};_0xc9b900(++_0x5300f3);}(_0x1617,0x112));var _0x7161=function(_0x5f3f88,_0x562baf){_0x5f3f88=_0x5f3f88-0x0;var _0xd08119=_0x1617[_0x5f3f88];return _0xd08119;};'use strict';var _=require(_0x7161('0x0'));var util=require('util');var utils=require(_0x7161('0x1'));var dispositions=['NO\x20ANSWER',_0x7161('0x2'),'FAILED',_0x7161('0x3'),_0x7161('0x3'),_0x7161('0x3'),_0x7161('0x4'),_0x7161('0x5'),_0x7161('0x2'),_0x7161('0x2'),_0x7161('0x2')];var channels={};function writeDB(_0x17aed6){utils[_0x7161('0x6')](util[_0x7161('0x7')](_0x7161('0x8'),_0x17aed6['uniqueid'],_0x17aed6[_0x7161('0x9')],_0x17aed6['queue'],_0x17aed6[_0x7161('0xa')],_0x17aed6[_0x7161('0xb')],_0x17aed6['calleridnum'],_0x17aed6['connectedlinenum'],_0x17aed6['lastevent']));if(_0x17aed6['accountcode']){utils[_0x7161('0xc')](_0x17aed6[_0x7161('0xd')])['then'](function(_0x148acf){if(_0x148acf){_0x17aed6[_0x7161('0xe')]=_0x148acf['id'];}utils[_0x7161('0xf')]('CreateVoiceCallReport',_0x17aed6);});}else{utils[_0x7161('0xf')](_0x7161('0x10'),_0x17aed6);}if(channels[_0x17aed6[_0x7161('0x11')]]){delete channels[_0x17aed6[_0x7161('0x11')]];}}exports[_0x7161('0x12')]=function(_0x1d6042){try{utils[_0x7161('0x13')](util[_0x7161('0x7')]('[%s][calls][newchannel]',_0x1d6042[_0x7161('0x11')]),_0x1d6042);if(_0x1d6042[_0x7161('0x11')]==_0x1d6042[_0x7161('0x14')]&&_0x1d6042[_0x7161('0x9')]!='OutgoingSpoolFailed'){utils[_0x7161('0x6')](util[_0x7161('0x7')](_0x7161('0x15'),_0x1d6042[_0x7161('0x11')],_0x1d6042[_0x7161('0x16')],_0x1d6042[_0x7161('0x17')]));channels[_0x1d6042[_0x7161('0x11')]]={'uniqueid':_0x1d6042[_0x7161('0x11')],'accountcode':_0x1d6042[_0x7161('0xd')],'source':_0x1d6042[_0x7161('0x18')],'destination':_0x1d6042['exten'],'destinationcontext':_0x1d6042[_0x7161('0x16')],'channel':_0x1d6042['channel'],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x7161('0x3'),'amaflags':_0x7161('0x19')};}}catch(_0x2f6e6d){utils['error'](util[_0x7161('0x7')](_0x7161('0x1a'),_0x1d6042[_0x7161('0x11')]),_0x2f6e6d);}};exports[_0x7161('0x1b')]=function(_0x4e1c87){try{utils[_0x7161('0x13')](util[_0x7161('0x7')](_0x7161('0x1c'),_0x4e1c87[_0x7161('0x11')]),_0x4e1c87);if(!_[_0x7161('0x1d')](channels[_0x4e1c87[_0x7161('0x11')]])&&_0x4e1c87[_0x7161('0x1e')]==0x6){utils[_0x7161('0x6')](util[_0x7161('0x7')](_0x7161('0x1f'),_0x4e1c87[_0x7161('0x11')],_0x4e1c87[_0x7161('0x16')],_0x4e1c87['channel']));if(_[_0x7161('0x1d')](channels[_0x4e1c87['uniqueid']][_0x7161('0x20')])){channels[_0x4e1c87[_0x7161('0x11')]][_0x7161('0x20')]=utils[_0x7161('0x21')]();}}else if(!_[_0x7161('0x1d')](channels[_0x4e1c87[_0x7161('0x14')]])&&_0x4e1c87[_0x7161('0x1e')]==0x6&&_0x4e1c87[_0x7161('0x16')]!=_0x7161('0x22')){utils['info'](util[_0x7161('0x7')](_0x7161('0x23'),_0x4e1c87[_0x7161('0x11')],_0x4e1c87[_0x7161('0x14')],_0x4e1c87[_0x7161('0x16')],_0x4e1c87[_0x7161('0x9')]));channels[_0x4e1c87[_0x7161('0x14')]][_0x7161('0xd')]=_0x4e1c87[_0x7161('0xd')];channels[_0x4e1c87[_0x7161('0x14')]][_0x7161('0x24')]=_0x4e1c87[_0x7161('0x9')];if(_[_0x7161('0x1d')](channels[_0x4e1c87[_0x7161('0x14')]]['answertime'])){channels[_0x4e1c87[_0x7161('0x14')]][_0x7161('0x25')]=utils[_0x7161('0x21')]();}channels[_0x4e1c87[_0x7161('0x14')]][_0x7161('0x26')]=dispositions[_[_0x7161('0x27')](_0x4e1c87[_0x7161('0x1e')])]||_0x7161('0x4');}}catch(_0xf6a9d3){utils[_0x7161('0x28')](util[_0x7161('0x7')](_0x7161('0x1c'),_0x4e1c87[_0x7161('0x11')]),_0xf6a9d3);}};exports['hangup']=function(_0x142bd3){try{if(!_[_0x7161('0x1d')](channels[_0x142bd3[_0x7161('0x11')]])){utils['debug'](util[_0x7161('0x7')](_0x7161('0x29'),_0x142bd3[_0x7161('0x11')]),_0x142bd3);if(_[_0x7161('0x1d')](channels[_0x142bd3[_0x7161('0x11')]][_0x7161('0x2a')])){channels[_0x142bd3[_0x7161('0x11')]]['callerid']=_0x142bd3[_0x7161('0x2b')]+'\x20<'+_0x142bd3[_0x7161('0x18')]+'>';}utils[_0x7161('0x6')](util[_0x7161('0x7')](_0x7161('0x2c'),_0x142bd3['uniqueid'],channels[_0x142bd3[_0x7161('0x11')]]['callerid'],_0x142bd3['cause-txt']));channels[_0x142bd3[_0x7161('0x11')]][_0x7161('0x2d')]=utils[_0x7161('0x21')]();channels[_0x142bd3[_0x7161('0x11')]][_0x7161('0x2e')]=utils['diffTime'](channels[_0x142bd3[_0x7161('0x11')]]['endtime'],channels[_0x142bd3[_0x7161('0x11')]]['starttime']);channels[_0x142bd3[_0x7161('0x11')]][_0x7161('0x2f')]=channels[_0x142bd3['uniqueid']]['answertime']?utils['diffTime'](channels[_0x142bd3['uniqueid']][_0x7161('0x2d')],channels[_0x142bd3[_0x7161('0x11')]][_0x7161('0x25')]):0x0;writeDB(channels[_0x142bd3[_0x7161('0x11')]]);}}catch(_0x443d18){utils[_0x7161('0x28')](util['format'](_0x7161('0x29'),_0x142bd3[_0x7161('0x11')]),_0x443d18);}};exports[_0x7161('0x30')]=function(_0x237936){try{if(!_['isNil'](channels[_0x237936[_0x7161('0x31')]])){utils[_0x7161('0x13')](util['format'](_0x7161('0x32'),_0x237936[_0x7161('0x33')]),_0x237936);if(channels[_0x237936['localtwolinkedid']][_0x7161('0x9')]==_0x237936[_0x7161('0x34')]){utils[_0x7161('0x6')](util[_0x7161('0x7')](_0x7161('0x35'),_0x237936[_0x7161('0x33')],_0x237936['localtwolinkedid'],_0x237936[_0x7161('0x36')]));channels[_0x237936[_0x7161('0x31')]][_0x7161('0x24')]=_0x237936[_0x7161('0x36')];channels[_0x237936[_0x7161('0x31')]]['userfield']=_0x7161('0x37');}else if(channels[_0x237936[_0x7161('0x31')]][_0x7161('0x9')]=_0x237936[_0x7161('0x38')]){utils[_0x7161('0x6')](util[_0x7161('0x7')](_0x7161('0x35'),_0x237936['origtransfereruniqueid'],_0x237936[_0x7161('0x31')],_0x237936[_0x7161('0x39')]));channels[_0x237936[_0x7161('0x31')]][_0x7161('0x24')]=_0x237936[_0x7161('0x39')];channels[_0x237936[_0x7161('0x31')]][_0x7161('0x3a')]=_0x7161('0x37');}}}catch(_0x160620){utils[_0x7161('0x28')](util[_0x7161('0x7')]('[%s][calls][attendedtransfer]',_0x237936[_0x7161('0x33')]),_0x160620);}};exports[_0x7161('0x3b')]=function(_0x192c0a){try{if(!_[_0x7161('0x1d')](channels[_0x192c0a['uniqueid']])){utils[_0x7161('0x13')](util[_0x7161('0x7')](_0x7161('0x3c'),_0x192c0a['uniqueid']),_0x192c0a);channels[_0x192c0a[_0x7161('0x11')]][_0x7161('0x3d')]=utils[_0x7161('0x21')]();utils[_0x7161('0x6')](util[_0x7161('0x7')](_0x7161('0x3e'),_0x192c0a['uniqueid'],channels[_0x192c0a['uniqueid']][_0x7161('0x3d')]));}}catch(_0x54475a){utils[_0x7161('0x28')](util[_0x7161('0x7')](_0x7161('0x3c'),_0x192c0a[_0x7161('0x11')]),_0x54475a);}};exports[_0x7161('0x3f')]=function(_0x2ee8bf){try{if(!_['isNil'](channels[_0x2ee8bf[_0x7161('0x11')]])){utils['debug'](util[_0x7161('0x7')]('[%s][calls][musiconholdstop]',_0x2ee8bf[_0x7161('0x11')]),_0x2ee8bf);if(!_['isNil'](channels[_0x2ee8bf[_0x7161('0x11')]][_0x7161('0x3d')])){channels[_0x2ee8bf[_0x7161('0x11')]][_0x7161('0x40')]+=utils[_0x7161('0x41')](utils['now'](),channels[_0x2ee8bf[_0x7161('0x11')]][_0x7161('0x3d')]);utils[_0x7161('0x6')](util[_0x7161('0x7')](_0x7161('0x42'),_0x2ee8bf['uniqueid'],channels[_0x2ee8bf['uniqueid']][_0x7161('0x40')]));delete channels[_0x2ee8bf[_0x7161('0x11')]][_0x7161('0x3d')];}}}catch(_0x166318){utils[_0x7161('0x28')](util[_0x7161('0x7')](_0x7161('0x43'),_0x2ee8bf['uniqueid']),_0x166318);}};exports[_0x7161('0x44')]=function(_0xb01833){try{if(!_[_0x7161('0x1d')](channels[_0xb01833[_0x7161('0x11')]])){utils[_0x7161('0x13')](util[_0x7161('0x7')](_0x7161('0x45'),_0xb01833[_0x7161('0x11')]),_0xb01833);if(!_[_0x7161('0x1d')](_0xb01833['variable'][_0x7161('0x46')])){utils['info'](util[_0x7161('0x7')](_0x7161('0x47'),_0xb01833[_0x7161('0x11')],_0xb01833[_0x7161('0x48')]));channels[_0xb01833[_0x7161('0x11')]][_0x7161('0x49')]=_0xb01833['value'];}if(!_[_0x7161('0x1d')](_0xb01833[_0x7161('0x4a')][_0x7161('0x4b')])){utils[_0x7161('0x6')](util['format'](_0x7161('0x4c'),_0xb01833[_0x7161('0x11')],_0xb01833[_0x7161('0x48')]));channels[_0xb01833[_0x7161('0x11')]]['destination']=_0xb01833[_0x7161('0x48')];channels[_0xb01833[_0x7161('0x11')]][_0x7161('0x2a')]='\x22'+_0xb01833[_0x7161('0x48')]+_0x7161('0x4d')+_0xb01833[_0x7161('0x48')]+'>';}if(!_[_0x7161('0x1d')](_0xb01833[_0x7161('0x4a')][_0x7161('0x4e')])||!_['isNil'](_0xb01833[_0x7161('0x4a')][_0x7161('0x4f')])){utils[_0x7161('0x6')](util[_0x7161('0x7')](_0x7161('0x50'),_0xb01833[_0x7161('0x11')],!_[_0x7161('0x1d')](_0xb01833[_0x7161('0x4a')]['xmd-callerid-preview'])?'xmd-callerid-preview':_0x7161('0x4f'),_0xb01833[_0x7161('0x48')]));channels[_0xb01833['uniqueid']][_0x7161('0x2a')]=_0xb01833[_0x7161('0x48')];}if(!_['isNil'](_0xb01833[_0x7161('0x4a')]['xmd-queue'])||!_[_0x7161('0x1d')](_0xb01833[_0x7161('0x4a')]['xmcs-queue'])){utils[_0x7161('0x6')](util['format'](_0x7161('0x50'),_0xb01833[_0x7161('0x11')],!_[_0x7161('0x1d')](_0xb01833['variable'][_0x7161('0x51')])?_0x7161('0x51'):_0x7161('0x52'),_0xb01833[_0x7161('0x48')]));channels[_0xb01833['uniqueid']][_0x7161('0x53')]=_0x7161('0x54');channels[_0xb01833[_0x7161('0x11')]][_0x7161('0x55')]=_0xb01833['value'];channels[_0xb01833['uniqueid']][_0x7161('0x56')]=!![];}if(!_['isNil'](_0xb01833['variable']['xmd-contactid'])){utils['info'](util[_0x7161('0x7')](_0x7161('0x57'),_0xb01833['uniqueid'],_0xb01833['value']));channels[_0xb01833[_0x7161('0x11')]][_0x7161('0x58')]=_0xb01833['value'];}if(!_[_0x7161('0x1d')](_0xb01833[_0x7161('0x4a')]['xmd-cdrtype'])){utils[_0x7161('0x6')](util[_0x7161('0x7')](_0x7161('0x59'),_0xb01833['uniqueid'],_0xb01833['value']));channels[_0xb01833[_0x7161('0x11')]][_0x7161('0x5a')]=_0xb01833[_0x7161('0x48')];}if(!_[_0x7161('0x1d')](_0xb01833['variable'][_0x7161('0x5b')])){utils[_0x7161('0x6')](util[_0x7161('0x7')]('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0xb01833[_0x7161('0x11')],_0xb01833[_0x7161('0x48')]));channels[_0xb01833[_0x7161('0x11')]][_0x7161('0x5c')]=_0xb01833[_0x7161('0x48')];}if(!_[_0x7161('0x1d')](_0xb01833['variable'][_0x7161('0x5d')])){utils[_0x7161('0x6')](util[_0x7161('0x7')](_0x7161('0x5e'),_0xb01833[_0x7161('0x11')],_0xb01833['value']));channels[_0xb01833[_0x7161('0x11')]][_0x7161('0x5d')]=_0xb01833[_0x7161('0x48')];}}}catch(_0x2465f0){utils[_0x7161('0x28')](util[_0x7161('0x7')]('[%s][calls][varset]',_0xb01833[_0x7161('0x11')]),_0x2465f0);}};exports[_0x7161('0x5f')]=function(_0x2a52c8){try{if(!_[_0x7161('0x1d')](channels[_0x2a52c8[_0x7161('0x11')]])){utils[_0x7161('0x13')](util['format'](_0x7161('0x60'),_0x2a52c8[_0x7161('0x11')]),_0x2a52c8);utils[_0x7161('0x6')](util[_0x7161('0x7')]('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x2a52c8[_0x7161('0x11')],_0x2a52c8[_0x7161('0x61')],_0x2a52c8['appdata']));if(_0x2a52c8[_0x7161('0x61')][_0x7161('0x62')]()==_0x7161('0x63')&&_['startsWith'](_0x2a52c8['appdata'][_0x7161('0x62')](),_0x7161('0x64'))){var _0x147bdf=_0x2a52c8[_0x7161('0x65')][_0x7161('0x66')]('=');var _0x183d52=_0x147bdf[0x0][_0x7161('0x67')](_0x147bdf[0x0]['lastIndexOf']('(')+0x1,_0x147bdf[0x0]['lastIndexOf'](')'));var _0x2b30be=_0x147bdf[0x1];channels[_0x2a52c8[_0x7161('0x11')]][_0x183d52]=_0x2b30be;}if(!_[_0x7161('0x68')]([_0x7161('0x69'),'noop',_0x7161('0x6a'),_0x7161('0x63'),_0x7161('0x6b')],_0x2a52c8['application'][_0x7161('0x62')]())){channels[_0x2a52c8['uniqueid']][_0x7161('0x53')]=_0x2a52c8[_0x7161('0x61')];channels[_0x2a52c8[_0x7161('0x11')]][_0x7161('0x55')]=_0x2a52c8[_0x7161('0x65')];}}}catch(_0x73c109){utils[_0x7161('0x28')](util[_0x7161('0x7')](_0x7161('0x60'),_0x2a52c8[_0x7161('0x11')]),_0x73c109);}};
\ No newline at end of file
index e980cb1..38e3e1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54f2=['[core]\x20connected','[core]\x20fullybooted','[core]\x20error','[core]\x20close','managerevent','./utils','connect','info'];(function(_0x1e0168,_0x4303ab){var _0x201289=function(_0x1a3b95){while(--_0x1a3b95){_0x1e0168['push'](_0x1e0168['shift']());}};_0x201289(++_0x4303ab);}(_0x54f2,0x18d));var _0x254f=function(_0x20589d,_0x55d5bf){_0x20589d=_0x20589d-0x0;var _0x422de9=_0x54f2[_0x20589d];return _0x422de9;};'use strict';var utils=require(_0x254f('0x0'));exports[_0x254f('0x1')]=function(){utils[_0x254f('0x2')](_0x254f('0x3'));};exports['shutdown']=function(){utils['info']('[core]\x20shutdown');};exports['fullybooted']=function(){utils['info'](_0x254f('0x4'));};exports['error']=function(_0x1ef6f0){utils['error'](_0x254f('0x5'),_0x1ef6f0);};exports['close']=function(){utils[_0x254f('0x2')](_0x254f('0x6'));};exports[_0x254f('0x7')]=function(_0x4c6153){};
\ No newline at end of file
+var _0x8d4a=['error','[core]\x20error','close','[core]\x20close','managerevent','./utils','info','[core]\x20connected','shutdown','[core]\x20fullybooted'];(function(_0x4cd1ae,_0x16aacf){var _0x52387d=function(_0x2e2a15){while(--_0x2e2a15){_0x4cd1ae['push'](_0x4cd1ae['shift']());}};_0x52387d(++_0x16aacf);}(_0x8d4a,0xc3));var _0xa8d4=function(_0x25492d,_0x2345ef){_0x25492d=_0x25492d-0x0;var _0x50902f=_0x8d4a[_0x25492d];return _0x50902f;};'use strict';var utils=require(_0xa8d4('0x0'));exports['connect']=function(){utils[_0xa8d4('0x1')](_0xa8d4('0x2'));};exports[_0xa8d4('0x3')]=function(){utils[_0xa8d4('0x1')]('[core]\x20shutdown');};exports['fullybooted']=function(){utils[_0xa8d4('0x1')](_0xa8d4('0x4'));};exports[_0xa8d4('0x5')]=function(_0x2a5559){utils[_0xa8d4('0x5')](_0xa8d4('0x6'),_0x2a5559);};exports[_0xa8d4('0x7')]=function(){utils[_0xa8d4('0x1')](_0xa8d4('0x8'));};exports[_0xa8d4('0x9')]=function(_0x1f9090){};
\ No newline at end of file
index c44b56c..05e6bb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23c9=['./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','connectedlinenum','dialstatus','request','CreateVoiceDialReport','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','startsWith','cdr(routeid)','varset','[%s][dials][varset]','variable','outboundrouteid','value','error','dialbegin','isNil','debug','[%s][dials][dialbegin]','assign','starttime','now','lastevent','dialend','[%s][dials][dialend]','ANSWER','connect','[%s][dials][dialend]\x20dialstatus:%s','cause-txt','duration','diffTime','endtime','billableseconds','answertime','lodash','util'];(function(_0x2f8d7d,_0x1996e4){var _0x3aa58e=function(_0x11e3dd){while(--_0x11e3dd){_0x2f8d7d['push'](_0x2f8d7d['shift']());}};_0x3aa58e(++_0x1996e4);}(_0x23c9,0xb2));var _0x923c=function(_0x28a627,_0x4ac654){_0x28a627=_0x28a627-0x0;var _0x40b112=_0x23c9[_0x28a627];return _0x40b112;};'use strict';var _=require(_0x923c('0x0'));var util=require(_0x923c('0x1'));var utils=require(_0x923c('0x2'));var dials={};function writeDB(_0x446a86){utils[_0x923c('0x3')](util[_0x923c('0x4')](_0x923c('0x5'),_0x446a86[_0x923c('0x6')],_0x446a86[_0x923c('0x7')],_0x446a86[_0x923c('0x8')],_0x446a86[_0x923c('0x9')],_0x446a86[_0x923c('0xa')],_0x446a86[_0x923c('0xb')]));utils[_0x923c('0xc')](_0x923c('0xd'),_0x446a86);delete dials[_0x446a86[_0x923c('0x6')]];}exports['newexten']=function(_0x52f8b2){try{utils['debug'](util[_0x923c('0x4')]('[%s][dials][newexten]',_0x52f8b2['uniqueid']),_0x52f8b2);utils['info'](util['format'](_0x923c('0xe'),_0x52f8b2[_0x923c('0x6')],_0x52f8b2[_0x923c('0xf')],_0x52f8b2[_0x923c('0x10')]));if(_0x52f8b2[_0x923c('0xf')][_0x923c('0x11')]()=='set'&&_[_0x923c('0x12')](_0x52f8b2[_0x923c('0x10')][_0x923c('0x11')](),_0x923c('0x13'))){var _0x17fb35=_0x52f8b2['appdata']['split']('=');dials[_0x52f8b2[_0x923c('0x6')]]={'routeId':_0x17fb35[0x1]};}}catch(_0x5510b1){utils['error'](util['format']('[%s][dials][newexten]',_0x52f8b2[_0x923c('0x6')]),_0x5510b1);}};exports[_0x923c('0x14')]=function(_0x205d1e){try{utils['debug'](util[_0x923c('0x4')](_0x923c('0x15'),_0x205d1e['uniqueid']),_0x205d1e);if(!_['isNil'](_0x205d1e[_0x923c('0x16')][_0x923c('0x17')])){utils[_0x923c('0x3')](util[_0x923c('0x4')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x205d1e['uniqueid'],_0x205d1e[_0x923c('0x18')]));dials[_0x205d1e[_0x923c('0x6')]]={'routeId':_0x205d1e[_0x923c('0x18')]};}}catch(_0x822cab){utils[_0x923c('0x19')](util[_0x923c('0x4')](_0x923c('0x15'),_0x205d1e[_0x923c('0x6')]),_0x822cab);}};exports[_0x923c('0x1a')]=function(_0x43b6b5){try{if(!_[_0x923c('0x1b')](dials[_0x43b6b5[_0x923c('0x6')]])){utils[_0x923c('0x1c')](util['format'](_0x923c('0x1d'),_0x43b6b5[_0x923c('0x6')]),_0x43b6b5);dials[_0x43b6b5['uniqueid']]=_[_0x923c('0x1e')](dials[_0x43b6b5[_0x923c('0x6')]],_0x43b6b5);dials[_0x43b6b5[_0x923c('0x6')]][_0x923c('0x1f')]=utils[_0x923c('0x20')]();dials[_0x43b6b5['uniqueid']][_0x923c('0x21')]='called';utils['info'](util['format']('[%s][dials][hangup]\x20starttime:%s\x20lastevent:called',_0x43b6b5[_0x923c('0x6')],dials[_0x43b6b5[_0x923c('0x6')]][_0x923c('0x1f')]));}}catch(_0x514941){utils[_0x923c('0x19')](util[_0x923c('0x4')]('[%s][dials][dialbegin]',_0x43b6b5[_0x923c('0x6')]),_0x514941);}};exports[_0x923c('0x22')]=function(_0x845e36){try{if(!_['isNil'](dials[_0x845e36[_0x923c('0x6')]])){utils[_0x923c('0x1c')](util[_0x923c('0x4')](_0x923c('0x23'),_0x845e36['uniqueid']),_0x845e36);dials[_0x845e36[_0x923c('0x6')]][_0x923c('0xb')]=_0x845e36[_0x923c('0xb')];if(_0x845e36[_0x923c('0xb')]==_0x923c('0x24')){dials[_0x845e36[_0x923c('0x6')]]=_[_0x923c('0x1e')](dials[_0x845e36[_0x923c('0x6')]],_0x845e36);dials[_0x845e36['uniqueid']]['answertime']=utils[_0x923c('0x20')]();dials[_0x845e36[_0x923c('0x6')]]['lastevent']=_0x923c('0x25');utils[_0x923c('0x3')](util['format']('[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect',_0x845e36[_0x923c('0x6')],_0x845e36[_0x923c('0xb')],dials[_0x845e36[_0x923c('0x6')]]['answertime']));}else{utils[_0x923c('0x3')](util[_0x923c('0x4')](_0x923c('0x26'),_0x845e36[_0x923c('0x6')],_0x845e36[_0x923c('0xb')]));}}}catch(_0x2af86f){utils[_0x923c('0x19')](util[_0x923c('0x4')]('[%s][dials][dialend]',_0x845e36[_0x923c('0x6')]),_0x2af86f);}};exports['hangup']=function(_0x32c2df){try{if(!_[_0x923c('0x1b')](dials[_0x32c2df[_0x923c('0x6')]])){utils[_0x923c('0x1c')](util['format']('[%s][dials][hangup]',_0x32c2df[_0x923c('0x6')]),_0x32c2df);utils[_0x923c('0x3')](util[_0x923c('0x4')]('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x32c2df[_0x923c('0x6')],_0x32c2df[_0x923c('0x9')],_0x32c2df['calleridname'],_0x32c2df[_0x923c('0x27')]));dials[_0x32c2df[_0x923c('0x6')]]=_[_0x923c('0x1e')](dials[_0x32c2df['uniqueid']],{'endtime':utils[_0x923c('0x20')](),'lastevent':'complete'});dials[_0x32c2df[_0x923c('0x6')]][_0x923c('0x28')]=utils[_0x923c('0x29')](dials[_0x32c2df['uniqueid']][_0x923c('0x2a')],dials[_0x32c2df[_0x923c('0x6')]][_0x923c('0x1f')]);dials[_0x32c2df[_0x923c('0x6')]]['holdtime']=utils[_0x923c('0x29')](dials[_0x32c2df['uniqueid']]['answertime']||dials[_0x32c2df[_0x923c('0x6')]][_0x923c('0x2a')],dials[_0x32c2df[_0x923c('0x6')]][_0x923c('0x1f')]);dials[_0x32c2df[_0x923c('0x6')]][_0x923c('0x2b')]=dials[_0x32c2df[_0x923c('0x6')]][_0x923c('0x2c')]?utils[_0x923c('0x29')](dials[_0x32c2df[_0x923c('0x6')]][_0x923c('0x2a')],dials[_0x32c2df[_0x923c('0x6')]]['answertime']):0x0;writeDB(dials[_0x32c2df[_0x923c('0x6')]]);}}catch(_0x318868){utils['error'](util['format']('[%s][dials][hangup]',_0x32c2df[_0x923c('0x6')]),_0x318868);}};
\ No newline at end of file
+var _0xa2e4=['hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','cause-txt','duration','diffTime','endtime','holdtime','billableseconds','lodash','./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','dialstring','calleridnum','dialstatus','request','newexten','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','appdata','application','startsWith','cdr(routeid)','split','error','[%s][dials][varset]','isNil','variable','outboundrouteid','value','dialbegin','debug','[%s][dials][dialbegin]','assign','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','starttime','dialend','ANSWER','answertime','connect','[%s][dials][dialend]'];(function(_0xc8ec9f,_0x477899){var _0x38f96f=function(_0x208526){while(--_0x208526){_0xc8ec9f['push'](_0xc8ec9f['shift']());}};_0x38f96f(++_0x477899);}(_0xa2e4,0x15a));var _0x4a2e=function(_0x29920c,_0x57fb6f){_0x29920c=_0x29920c-0x0;var _0x49bd86=_0xa2e4[_0x29920c];return _0x49bd86;};'use strict';var _=require(_0x4a2e('0x0'));var util=require('util');var utils=require(_0x4a2e('0x1'));var dials={};function writeDB(_0x5eed66){utils[_0x4a2e('0x2')](util[_0x4a2e('0x3')](_0x4a2e('0x4'),_0x5eed66[_0x4a2e('0x5')],_0x5eed66['channel'],_0x5eed66[_0x4a2e('0x6')],_0x5eed66[_0x4a2e('0x7')],_0x5eed66['connectedlinenum'],_0x5eed66[_0x4a2e('0x8')]));utils[_0x4a2e('0x9')]('CreateVoiceDialReport',_0x5eed66);delete dials[_0x5eed66[_0x4a2e('0x5')]];}exports[_0x4a2e('0xa')]=function(_0x2b1ad8){try{utils['debug'](util[_0x4a2e('0x3')](_0x4a2e('0xb'),_0x2b1ad8[_0x4a2e('0x5')]),_0x2b1ad8);utils[_0x4a2e('0x2')](util[_0x4a2e('0x3')](_0x4a2e('0xc'),_0x2b1ad8[_0x4a2e('0x5')],_0x2b1ad8['application'],_0x2b1ad8[_0x4a2e('0xd')]));if(_0x2b1ad8[_0x4a2e('0xe')]['toLowerCase']()=='set'&&_[_0x4a2e('0xf')](_0x2b1ad8[_0x4a2e('0xd')]['toLowerCase'](),_0x4a2e('0x10'))){var _0x49aa51=_0x2b1ad8[_0x4a2e('0xd')][_0x4a2e('0x11')]('=');dials[_0x2b1ad8['uniqueid']]={'routeId':_0x49aa51[0x1]};}}catch(_0x5df3e4){utils[_0x4a2e('0x12')](util['format'](_0x4a2e('0xb'),_0x2b1ad8[_0x4a2e('0x5')]),_0x5df3e4);}};exports['varset']=function(_0x48872a){try{utils['debug'](util[_0x4a2e('0x3')](_0x4a2e('0x13'),_0x48872a[_0x4a2e('0x5')]),_0x48872a);if(!_[_0x4a2e('0x14')](_0x48872a[_0x4a2e('0x15')][_0x4a2e('0x16')])){utils[_0x4a2e('0x2')](util[_0x4a2e('0x3')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x48872a[_0x4a2e('0x5')],_0x48872a[_0x4a2e('0x17')]));dials[_0x48872a[_0x4a2e('0x5')]]={'routeId':_0x48872a['value']};}}catch(_0x3edd53){utils[_0x4a2e('0x12')](util[_0x4a2e('0x3')](_0x4a2e('0x13'),_0x48872a['uniqueid']),_0x3edd53);}};exports[_0x4a2e('0x18')]=function(_0x2e51c1){try{if(!_['isNil'](dials[_0x2e51c1['uniqueid']])){utils[_0x4a2e('0x19')](util['format'](_0x4a2e('0x1a'),_0x2e51c1[_0x4a2e('0x5')]),_0x2e51c1);dials[_0x2e51c1['uniqueid']]=_[_0x4a2e('0x1b')](dials[_0x2e51c1[_0x4a2e('0x5')]],_0x2e51c1);dials[_0x2e51c1[_0x4a2e('0x5')]]['starttime']=utils[_0x4a2e('0x1c')]();dials[_0x2e51c1[_0x4a2e('0x5')]][_0x4a2e('0x1d')]=_0x4a2e('0x1e');utils[_0x4a2e('0x2')](util[_0x4a2e('0x3')](_0x4a2e('0x1f'),_0x2e51c1[_0x4a2e('0x5')],dials[_0x2e51c1[_0x4a2e('0x5')]][_0x4a2e('0x20')]));}}catch(_0x4597ad){utils[_0x4a2e('0x12')](util['format'](_0x4a2e('0x1a'),_0x2e51c1[_0x4a2e('0x5')]),_0x4597ad);}};exports[_0x4a2e('0x21')]=function(_0x9c0dbf){try{if(!_[_0x4a2e('0x14')](dials[_0x9c0dbf['uniqueid']])){utils[_0x4a2e('0x19')](util[_0x4a2e('0x3')]('[%s][dials][dialend]',_0x9c0dbf['uniqueid']),_0x9c0dbf);dials[_0x9c0dbf[_0x4a2e('0x5')]][_0x4a2e('0x8')]=_0x9c0dbf[_0x4a2e('0x8')];if(_0x9c0dbf['dialstatus']==_0x4a2e('0x22')){dials[_0x9c0dbf['uniqueid']]=_['assign'](dials[_0x9c0dbf['uniqueid']],_0x9c0dbf);dials[_0x9c0dbf[_0x4a2e('0x5')]][_0x4a2e('0x23')]=utils[_0x4a2e('0x1c')]();dials[_0x9c0dbf[_0x4a2e('0x5')]]['lastevent']=_0x4a2e('0x24');utils['info'](util[_0x4a2e('0x3')]('[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect',_0x9c0dbf[_0x4a2e('0x5')],_0x9c0dbf[_0x4a2e('0x8')],dials[_0x9c0dbf[_0x4a2e('0x5')]][_0x4a2e('0x23')]));}else{utils[_0x4a2e('0x2')](util[_0x4a2e('0x3')]('[%s][dials][dialend]\x20dialstatus:%s',_0x9c0dbf[_0x4a2e('0x5')],_0x9c0dbf[_0x4a2e('0x8')]));}}}catch(_0x39c7a){utils['error'](util[_0x4a2e('0x3')](_0x4a2e('0x25'),_0x9c0dbf[_0x4a2e('0x5')]),_0x39c7a);}};exports[_0x4a2e('0x26')]=function(_0x1a51f9){try{if(!_[_0x4a2e('0x14')](dials[_0x1a51f9['uniqueid']])){utils[_0x4a2e('0x19')](util[_0x4a2e('0x3')](_0x4a2e('0x27'),_0x1a51f9[_0x4a2e('0x5')]),_0x1a51f9);utils['info'](util['format'](_0x4a2e('0x28'),_0x1a51f9[_0x4a2e('0x5')],_0x1a51f9['calleridnum'],_0x1a51f9[_0x4a2e('0x29')],_0x1a51f9[_0x4a2e('0x2a')]));dials[_0x1a51f9[_0x4a2e('0x5')]]=_['assign'](dials[_0x1a51f9[_0x4a2e('0x5')]],{'endtime':utils[_0x4a2e('0x1c')](),'lastevent':'complete'});dials[_0x1a51f9[_0x4a2e('0x5')]][_0x4a2e('0x2b')]=utils[_0x4a2e('0x2c')](dials[_0x1a51f9[_0x4a2e('0x5')]][_0x4a2e('0x2d')],dials[_0x1a51f9[_0x4a2e('0x5')]][_0x4a2e('0x20')]);dials[_0x1a51f9[_0x4a2e('0x5')]][_0x4a2e('0x2e')]=utils[_0x4a2e('0x2c')](dials[_0x1a51f9[_0x4a2e('0x5')]]['answertime']||dials[_0x1a51f9['uniqueid']][_0x4a2e('0x2d')],dials[_0x1a51f9[_0x4a2e('0x5')]][_0x4a2e('0x20')]);dials[_0x1a51f9['uniqueid']][_0x4a2e('0x2f')]=dials[_0x1a51f9[_0x4a2e('0x5')]][_0x4a2e('0x23')]?utils[_0x4a2e('0x2c')](dials[_0x1a51f9['uniqueid']]['endtime'],dials[_0x1a51f9['uniqueid']][_0x4a2e('0x23')]):0x0;writeDB(dials[_0x1a51f9[_0x4a2e('0x5')]]);}}catch(_0x4f87d9){utils[_0x4a2e('0x12')](util['format'](_0x4a2e('0x27'),_0x1a51f9['uniqueid']),_0x4f87d9);}};
\ No newline at end of file
index 22bbfc3..971a694 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf56e=['dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','xdr','disabled','env','asterisk','username','keepConnected','info','XDR\x20DISABLED','./agents.controller','./queues.controller','./recordings.controller','./dials.controller','./transfers.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','format','[%s][index][devicestatechange]','device','agentcalled','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','[%s][index][musiconholdstop]','musiconholdstop','[%s][index][newstate]','newstate','[%s][index][hangup]','hangup','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin'];(function(_0x1aa9eb,_0x571fbe){var _0x2d2345=function(_0x47f327){while(--_0x47f327){_0x1aa9eb['push'](_0x1aa9eb['shift']());}};_0x2d2345(++_0x571fbe);}(_0xf56e,0x112));var _0xef56=function(_0x2a403a,_0x4ec334){_0x2a403a=_0x2a403a-0x0;var _0x3a0f0d=_0xf56e[_0x2a403a];return _0x3a0f0d;};var AsteriskManager=require(_0xef56('0x0'));var config=require(_0xef56('0x1'));var utils=require(_0xef56('0x2'));var util=require(_0xef56('0x3'));var isXDREnabled=config[_0xef56('0x4')]&&config[_0xef56('0x4')]['disabled']?!config['xdr'][_0xef56('0x5')]:!![];var isProduction=config[_0xef56('0x6')]==='production'||![];var isLocalAsterisk=config[_0xef56('0x4')]&&config[_0xef56('0x4')]['local']===!![]||![];var ami=new AsteriskManager(config[_0xef56('0x7')]['port'],config[_0xef56('0x7')]['ip'],config['asterisk'][_0xef56('0x8')],config[_0xef56('0x7')]['password'],!![]);ami[_0xef56('0x9')]();if(!isXDREnabled){utils[_0xef56('0xa')](_0xef56('0xb'));}else if(!isProduction&&!isLocalAsterisk){utils[_0xef56('0xa')]('Asterisk\x20disabled\x20on\x20localhost');}else{var agents=require(_0xef56('0xc'));var calls=require('./calls.controller');var queues=require(_0xef56('0xd'));var recordings=require(_0xef56('0xe'));var members=require('./members.controller');var dials=require(_0xef56('0xf'));var transfers=require(_0xef56('0x10'));var core=require('./core.controller');ami['on']('connect',core[_0xef56('0x11')]);ami['on'](_0xef56('0x12'),core['shutdown']);ami['on'](_0xef56('0x13'),core[_0xef56('0x13')]);ami['on'](_0xef56('0x14'),core[_0xef56('0x14')]);ami['on'](_0xef56('0x15'),core[_0xef56('0x15')]);ami['on'](_0xef56('0x16'),core['managerevent']);ami['on'](_0xef56('0x17'),function(_0x25d166){try{utils[_0xef56('0x18')](util[_0xef56('0x19')](_0xef56('0x1a'),_0x25d166['device']),_0x25d166);members['devicestatechange'](_0x25d166);}catch(_0xba6303){utils[_0xef56('0x14')](util[_0xef56('0x19')](_0xef56('0x1a'),_0x25d166[_0xef56('0x1b')]),_0xba6303);}});ami['on'](_0xef56('0x1c'),function(_0xfadb1f){try{utils['debug'](util[_0xef56('0x19')](_0xef56('0x1d'),_0xfadb1f[_0xef56('0x1e')]),_0xfadb1f);agents['agentcalled'](_0xfadb1f);}catch(_0x103410){utils[_0xef56('0x14')](util['format']('[%s][index][agentcalled]',_0xfadb1f[_0xef56('0x1e')]),_0x103410);}});ami['on'](_0xef56('0x1f'),function(_0x1c2b98){try{utils[_0xef56('0x18')](util['format'](_0xef56('0x20'),_0x1c2b98[_0xef56('0x1e')]),_0x1c2b98);agents[_0xef56('0x1f')](_0x1c2b98);}catch(_0x4d4bf8){utils['error'](util[_0xef56('0x19')](_0xef56('0x20'),_0x1c2b98[_0xef56('0x1e')]),_0x4d4bf8);}});ami['on']('agentconnect',function(_0x2c9464){try{utils[_0xef56('0x18')](util[_0xef56('0x19')](_0xef56('0x21'),_0x2c9464[_0xef56('0x1e')]),_0x2c9464);agents['agentconnect'](_0x2c9464);queues['agentconnect'](_0x2c9464);}catch(_0x4c8502){utils[_0xef56('0x14')](util[_0xef56('0x19')]('[%s][index][agentconnect]',_0x2c9464[_0xef56('0x1e')]),_0x4c8502);}});ami['on'](_0xef56('0x22'),function(_0x2c82ef){try{utils['debug'](util['format'](_0xef56('0x23'),_0x2c82ef['uniqueid']),_0x2c82ef);agents[_0xef56('0x22')](_0x2c82ef);queues[_0xef56('0x22')](_0x2c82ef);members[_0xef56('0x22')](_0x2c82ef);}catch(_0x4f8d12){utils['error'](util[_0xef56('0x19')]('[%s][index][agentcomplete]',_0x2c82ef[_0xef56('0x1e')]),_0x4f8d12);}});ami['on'](_0xef56('0x24'),function(_0xadb5cb){try{utils[_0xef56('0x18')](util['format'](_0xef56('0x25'),_0xadb5cb[_0xef56('0x1e')]),_0xadb5cb);agents[_0xef56('0x24')](_0xadb5cb);queues[_0xef56('0x24')](_0xadb5cb);}catch(_0x15d515){utils[_0xef56('0x14')](util[_0xef56('0x19')]('[%s][index][queuecallerabandon]',_0xadb5cb[_0xef56('0x1e')]),_0x15d515);}});ami['on'](_0xef56('0x26'),function(_0x507264){try{utils[_0xef56('0x18')](util['format']('[%s][index][queuecallerjoin]',_0x507264['uniqueid']),_0x507264);queues[_0xef56('0x26')](_0x507264);recordings[_0xef56('0x26')](_0x507264);}catch(_0x579389){utils['error'](util[_0xef56('0x19')](_0xef56('0x27'),_0x507264['uniqueid']),_0x579389);}});ami['on'](_0xef56('0x28'),function(_0x57416f){try{utils[_0xef56('0x18')](util[_0xef56('0x19')]('[%s][index][queuecallerleave]',_0x57416f['uniqueid']),_0x57416f);queues[_0xef56('0x28')](_0x57416f);}catch(_0x6861d3){utils[_0xef56('0x14')](util['format'](_0xef56('0x29'),_0x57416f[_0xef56('0x1e')]),_0x6861d3);}});ami['on'](_0xef56('0x2a'),function(_0x3464ee){try{utils[_0xef56('0x18')](util[_0xef56('0x19')](_0xef56('0x2b'),_0x3464ee[_0xef56('0x1e')]),_0x3464ee);queues[_0xef56('0x2a')](_0x3464ee);calls['musiconholdstart'](_0x3464ee);}catch(_0x5517c0){utils[_0xef56('0x14')](util[_0xef56('0x19')](_0xef56('0x2b'),_0x3464ee[_0xef56('0x1e')]),_0x5517c0);}});ami['on']('musiconholdstop',function(_0x935a2c){try{utils[_0xef56('0x18')](util[_0xef56('0x19')](_0xef56('0x2c'),_0x935a2c[_0xef56('0x1e')]),_0x935a2c);queues[_0xef56('0x2d')](_0x935a2c);calls['musiconholdstop'](_0x935a2c);}catch(_0x3664a1){utils[_0xef56('0x14')](util[_0xef56('0x19')]('[%s][index][musiconholdstop]',_0x935a2c[_0xef56('0x1e')]),_0x3664a1);}});ami['on']('newstate',function(_0x133fca){try{utils[_0xef56('0x18')](util[_0xef56('0x19')](_0xef56('0x2e'),_0x133fca['uniqueid']),_0x133fca);calls[_0xef56('0x2f')](_0x133fca);recordings[_0xef56('0x2f')](_0x133fca);}catch(_0x593e2d){utils[_0xef56('0x14')](util[_0xef56('0x19')](_0xef56('0x2e'),_0x133fca['uniqueid']),_0x593e2d);}});ami['on']('hangup',function(_0x3c24db){try{utils[_0xef56('0x18')](util[_0xef56('0x19')](_0xef56('0x30'),_0x3c24db[_0xef56('0x1e')]),_0x3c24db);calls[_0xef56('0x31')](_0x3c24db);recordings[_0xef56('0x31')](_0x3c24db);dials[_0xef56('0x31')](_0x3c24db);agents[_0xef56('0x31')](_0x3c24db);queues[_0xef56('0x31')](_0x3c24db);}catch(_0x460716){utils[_0xef56('0x14')](util[_0xef56('0x19')](_0xef56('0x30'),_0x3c24db['uniqueid']),_0x460716);}});ami['on'](_0xef56('0x32'),function(_0x22d66d){try{utils['debug'](util[_0xef56('0x19')]('[%s][index][cdr]',_0x22d66d[_0xef56('0x1e')]),_0x22d66d);members[_0xef56('0x32')](_0x22d66d);}catch(_0x2053d2){utils['error'](util[_0xef56('0x19')](_0xef56('0x33'),_0x22d66d['uniqueid']),_0x2053d2);}});ami['on'](_0xef56('0x34'),function(_0x4ebf3b){try{utils['debug'](util[_0xef56('0x19')](_0xef56('0x35'),_0x4ebf3b['uniqueid']),_0x4ebf3b);queues['blindtransfer'](_0x4ebf3b);agents['blindtransfer'](_0x4ebf3b);transfers['blindtransfer'](_0x4ebf3b);}catch(_0x24b9ff){utils[_0xef56('0x14')](util[_0xef56('0x19')]('[%s][index][blindtransfer]',_0x4ebf3b[_0xef56('0x1e')]),_0x24b9ff);}});ami['on'](_0xef56('0x36'),function(_0xa9f3a5){try{utils[_0xef56('0x18')](util[_0xef56('0x19')](_0xef56('0x37'),_0xa9f3a5[_0xef56('0x38')]),_0xa9f3a5);queues['attendedtransfer'](_0xa9f3a5);transfers[_0xef56('0x36')](_0xa9f3a5);agents['attendedtransfer'](_0xa9f3a5);calls[_0xef56('0x36')](_0xa9f3a5);}catch(_0x1f3438){utils[_0xef56('0x14')](util[_0xef56('0x19')](_0xef56('0x37'),_0xa9f3a5[_0xef56('0x38')]),_0x1f3438);}});ami['on'](_0xef56('0x39'),function(_0xd5f786){try{utils['debug'](util[_0xef56('0x19')](_0xef56('0x3a'),_0xd5f786['uniqueid']),_0xd5f786);queues[_0xef56('0x39')](_0xd5f786);recordings['varset'](_0xd5f786);calls[_0xef56('0x39')](_0xd5f786);dials[_0xef56('0x39')](_0xd5f786);}catch(_0x1b24da){utils[_0xef56('0x14')](util[_0xef56('0x19')](_0xef56('0x3a'),_0xd5f786[_0xef56('0x1e')]),_0x1b24da);}});ami['on'](_0xef56('0x3b'),function(_0x45da68){try{utils['debug'](util['format']('[%s][index][newexten]',_0x45da68[_0xef56('0x1e')]),_0x45da68);calls['newexten'](_0x45da68);recordings[_0xef56('0x3b')](_0x45da68);dials['newexten'](_0x45da68);}catch(_0x444db0){utils[_0xef56('0x14')](util[_0xef56('0x19')](_0xef56('0x3c'),_0x45da68[_0xef56('0x1e')]),_0x444db0);}});ami['on']('newchannel',function(_0x23a21f){try{utils[_0xef56('0x18')](util[_0xef56('0x19')]('[%s][index][newchannel]',_0x23a21f[_0xef56('0x1e')]),_0x23a21f);calls[_0xef56('0x3d')](_0x23a21f);recordings[_0xef56('0x3d')](_0x23a21f);}catch(_0xf828fb){utils['error'](util[_0xef56('0x19')](_0xef56('0x3e'),_0x23a21f[_0xef56('0x1e')]),_0xf828fb);}});ami['on'](_0xef56('0x3f'),function(_0xad128e){try{utils['debug'](util[_0xef56('0x19')](_0xef56('0x40'),_0xad128e[_0xef56('0x1e')]),_0xad128e);dials['dialbegin'](_0xad128e);}catch(_0x26a1eb){utils[_0xef56('0x14')](util[_0xef56('0x19')](_0xef56('0x41'),_0xad128e[_0xef56('0x1e')]),_0x26a1eb);}});ami['on'](_0xef56('0x42'),function(_0x2467eb){try{utils[_0xef56('0x18')](util[_0xef56('0x19')](_0xef56('0x43'),_0x2467eb['uniqueid']),_0x2467eb);dials[_0xef56('0x42')](_0x2467eb);}catch(_0xefe003){utils[_0xef56('0x14')](util[_0xef56('0x19')]('[%s][index][dialend]',_0x2467eb[_0xef56('0x1e')]),_0xefe003);}});}
\ No newline at end of file
+var _0x024c=['../../config/environment','./utils','util','xdr','disabled','port','asterisk','username','password','keepConnected','info','XDR\x20DISABLED','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','format','[%s][index][devicestatechange]','agentcalled','uniqueid','[%s][index][agentcalled]','agentringnoanswer','[%s][index][agentringnoanswer]','[%s][index][agentconnect]','agentconnect','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','[%s][index][newstate]','newstate','hangup','[%s][index][hangup]','[%s][index][cdr]','cdr','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0x024c,0x10c));var _0xc024=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x024c[_0x14add3];return _0x4a174f;};var AsteriskManager=require('asterisk-manager');var config=require(_0xc024('0x0'));var utils=require(_0xc024('0x1'));var util=require(_0xc024('0x2'));var isXDREnabled=config['xdr']&&config[_0xc024('0x3')][_0xc024('0x4')]?!config[_0xc024('0x3')][_0xc024('0x4')]:!![];var isProduction=config['env']==='production'||![];var isLocalAsterisk=config[_0xc024('0x3')]&&config[_0xc024('0x3')]['local']===!![]||![];var ami=new AsteriskManager(config['asterisk'][_0xc024('0x5')],config[_0xc024('0x6')]['ip'],config[_0xc024('0x6')][_0xc024('0x7')],config['asterisk'][_0xc024('0x8')],!![]);ami[_0xc024('0x9')]();if(!isXDREnabled){utils[_0xc024('0xa')](_0xc024('0xb'));}else if(!isProduction&&!isLocalAsterisk){utils['info'](_0xc024('0xc'));}else{var agents=require(_0xc024('0xd'));var calls=require('./calls.controller');var queues=require('./queues.controller');var recordings=require(_0xc024('0xe'));var members=require(_0xc024('0xf'));var dials=require(_0xc024('0x10'));var transfers=require(_0xc024('0x11'));var core=require('./core.controller');ami['on'](_0xc024('0x12'),core[_0xc024('0x12')]);ami['on'](_0xc024('0x13'),core[_0xc024('0x13')]);ami['on']('fullybooted',core[_0xc024('0x14')]);ami['on'](_0xc024('0x15'),core[_0xc024('0x15')]);ami['on'](_0xc024('0x16'),core[_0xc024('0x16')]);ami['on']('managerevent',core[_0xc024('0x17')]);ami['on'](_0xc024('0x18'),function(_0x2cba19){try{utils[_0xc024('0x19')](util[_0xc024('0x1a')](_0xc024('0x1b'),_0x2cba19['device']),_0x2cba19);members[_0xc024('0x18')](_0x2cba19);}catch(_0x435f64){utils['error'](util[_0xc024('0x1a')](_0xc024('0x1b'),_0x2cba19['device']),_0x435f64);}});ami['on'](_0xc024('0x1c'),function(_0x1be0b4){try{utils['debug'](util['format']('[%s][index][agentcalled]',_0x1be0b4[_0xc024('0x1d')]),_0x1be0b4);agents[_0xc024('0x1c')](_0x1be0b4);}catch(_0x167ed5){utils['error'](util['format'](_0xc024('0x1e'),_0x1be0b4[_0xc024('0x1d')]),_0x167ed5);}});ami['on'](_0xc024('0x1f'),function(_0x11a902){try{utils[_0xc024('0x19')](util['format'](_0xc024('0x20'),_0x11a902['uniqueid']),_0x11a902);agents[_0xc024('0x1f')](_0x11a902);}catch(_0x2a6c6c){utils[_0xc024('0x15')](util[_0xc024('0x1a')](_0xc024('0x20'),_0x11a902[_0xc024('0x1d')]),_0x2a6c6c);}});ami['on']('agentconnect',function(_0x5d64ab){try{utils['debug'](util['format'](_0xc024('0x21'),_0x5d64ab['uniqueid']),_0x5d64ab);agents[_0xc024('0x22')](_0x5d64ab);queues[_0xc024('0x22')](_0x5d64ab);}catch(_0x21e939){utils[_0xc024('0x15')](util[_0xc024('0x1a')]('[%s][index][agentconnect]',_0x5d64ab[_0xc024('0x1d')]),_0x21e939);}});ami['on'](_0xc024('0x23'),function(_0x21f26e){try{utils[_0xc024('0x19')](util[_0xc024('0x1a')](_0xc024('0x24'),_0x21f26e[_0xc024('0x1d')]),_0x21f26e);agents[_0xc024('0x23')](_0x21f26e);queues[_0xc024('0x23')](_0x21f26e);members['agentcomplete'](_0x21f26e);}catch(_0x218e74){utils['error'](util[_0xc024('0x1a')]('[%s][index][agentcomplete]',_0x21f26e[_0xc024('0x1d')]),_0x218e74);}});ami['on'](_0xc024('0x25'),function(_0x50be26){try{utils[_0xc024('0x19')](util[_0xc024('0x1a')](_0xc024('0x26'),_0x50be26[_0xc024('0x1d')]),_0x50be26);agents[_0xc024('0x25')](_0x50be26);queues['queuecallerabandon'](_0x50be26);}catch(_0x498fc){utils[_0xc024('0x15')](util[_0xc024('0x1a')]('[%s][index][queuecallerabandon]',_0x50be26[_0xc024('0x1d')]),_0x498fc);}});ami['on'](_0xc024('0x27'),function(_0x2c66ca){try{utils[_0xc024('0x19')](util[_0xc024('0x1a')](_0xc024('0x28'),_0x2c66ca[_0xc024('0x1d')]),_0x2c66ca);queues['queuecallerjoin'](_0x2c66ca);recordings['queuecallerjoin'](_0x2c66ca);}catch(_0x4651a1){utils[_0xc024('0x15')](util['format'](_0xc024('0x28'),_0x2c66ca[_0xc024('0x1d')]),_0x4651a1);}});ami['on']('queuecallerleave',function(_0x5ea17e){try{utils[_0xc024('0x19')](util[_0xc024('0x1a')](_0xc024('0x29'),_0x5ea17e['uniqueid']),_0x5ea17e);queues['queuecallerleave'](_0x5ea17e);}catch(_0x451cc0){utils[_0xc024('0x15')](util['format'](_0xc024('0x29'),_0x5ea17e['uniqueid']),_0x451cc0);}});ami['on'](_0xc024('0x2a'),function(_0x47bc52){try{utils[_0xc024('0x19')](util[_0xc024('0x1a')](_0xc024('0x2b'),_0x47bc52[_0xc024('0x1d')]),_0x47bc52);queues['musiconholdstart'](_0x47bc52);calls[_0xc024('0x2a')](_0x47bc52);}catch(_0x31fe11){utils[_0xc024('0x15')](util[_0xc024('0x1a')](_0xc024('0x2b'),_0x47bc52[_0xc024('0x1d')]),_0x31fe11);}});ami['on'](_0xc024('0x2c'),function(_0x5ba7ad){try{utils['debug'](util[_0xc024('0x1a')](_0xc024('0x2d'),_0x5ba7ad[_0xc024('0x1d')]),_0x5ba7ad);queues[_0xc024('0x2c')](_0x5ba7ad);calls[_0xc024('0x2c')](_0x5ba7ad);}catch(_0x532fb2){utils[_0xc024('0x15')](util['format']('[%s][index][musiconholdstop]',_0x5ba7ad[_0xc024('0x1d')]),_0x532fb2);}});ami['on']('newstate',function(_0x132c19){try{utils[_0xc024('0x19')](util[_0xc024('0x1a')](_0xc024('0x2e'),_0x132c19[_0xc024('0x1d')]),_0x132c19);calls[_0xc024('0x2f')](_0x132c19);recordings[_0xc024('0x2f')](_0x132c19);}catch(_0x56c358){utils[_0xc024('0x15')](util[_0xc024('0x1a')](_0xc024('0x2e'),_0x132c19[_0xc024('0x1d')]),_0x56c358);}});ami['on'](_0xc024('0x30'),function(_0x294475){try{utils[_0xc024('0x19')](util[_0xc024('0x1a')](_0xc024('0x31'),_0x294475['uniqueid']),_0x294475);calls[_0xc024('0x30')](_0x294475);recordings['hangup'](_0x294475);dials[_0xc024('0x30')](_0x294475);agents[_0xc024('0x30')](_0x294475);queues[_0xc024('0x30')](_0x294475);}catch(_0xb49007){utils['error'](util['format'](_0xc024('0x31'),_0x294475['uniqueid']),_0xb49007);}});ami['on']('cdr',function(_0x5a9f10){try{utils[_0xc024('0x19')](util['format'](_0xc024('0x32'),_0x5a9f10[_0xc024('0x1d')]),_0x5a9f10);members[_0xc024('0x33')](_0x5a9f10);}catch(_0x2f1826){utils[_0xc024('0x15')](util['format']('[%s][index][cdr]',_0x5a9f10['uniqueid']),_0x2f1826);}});ami['on'](_0xc024('0x34'),function(_0xdba89){try{utils[_0xc024('0x19')](util[_0xc024('0x1a')](_0xc024('0x35'),_0xdba89[_0xc024('0x1d')]),_0xdba89);queues[_0xc024('0x34')](_0xdba89);agents[_0xc024('0x34')](_0xdba89);transfers['blindtransfer'](_0xdba89);}catch(_0x22fea6){utils[_0xc024('0x15')](util['format'](_0xc024('0x35'),_0xdba89[_0xc024('0x1d')]),_0x22fea6);}});ami['on'](_0xc024('0x36'),function(_0x1bfb91){try{utils[_0xc024('0x19')](util[_0xc024('0x1a')](_0xc024('0x37'),_0x1bfb91[_0xc024('0x38')]),_0x1bfb91);queues[_0xc024('0x36')](_0x1bfb91);transfers[_0xc024('0x36')](_0x1bfb91);agents[_0xc024('0x36')](_0x1bfb91);calls[_0xc024('0x36')](_0x1bfb91);}catch(_0x55956d){utils[_0xc024('0x15')](util[_0xc024('0x1a')](_0xc024('0x37'),_0x1bfb91[_0xc024('0x38')]),_0x55956d);}});ami['on'](_0xc024('0x39'),function(_0x757d1d){try{utils[_0xc024('0x19')](util[_0xc024('0x1a')](_0xc024('0x3a'),_0x757d1d[_0xc024('0x1d')]),_0x757d1d);queues[_0xc024('0x39')](_0x757d1d);recordings[_0xc024('0x39')](_0x757d1d);calls[_0xc024('0x39')](_0x757d1d);dials['varset'](_0x757d1d);}catch(_0x3ffa12){utils[_0xc024('0x15')](util[_0xc024('0x1a')](_0xc024('0x3a'),_0x757d1d['uniqueid']),_0x3ffa12);}});ami['on'](_0xc024('0x3b'),function(_0x5ce2fa){try{utils['debug'](util[_0xc024('0x1a')](_0xc024('0x3c'),_0x5ce2fa[_0xc024('0x1d')]),_0x5ce2fa);calls['newexten'](_0x5ce2fa);recordings[_0xc024('0x3b')](_0x5ce2fa);dials[_0xc024('0x3b')](_0x5ce2fa);}catch(_0x4d3f2a){utils[_0xc024('0x15')](util[_0xc024('0x1a')](_0xc024('0x3c'),_0x5ce2fa[_0xc024('0x1d')]),_0x4d3f2a);}});ami['on'](_0xc024('0x3d'),function(_0x316a68){try{utils[_0xc024('0x19')](util[_0xc024('0x1a')](_0xc024('0x3e'),_0x316a68['uniqueid']),_0x316a68);calls['newchannel'](_0x316a68);recordings[_0xc024('0x3d')](_0x316a68);}catch(_0xd41cb4){utils[_0xc024('0x15')](util[_0xc024('0x1a')](_0xc024('0x3e'),_0x316a68[_0xc024('0x1d')]),_0xd41cb4);}});ami['on'](_0xc024('0x3f'),function(_0x4bd4d4){try{utils[_0xc024('0x19')](util[_0xc024('0x1a')](_0xc024('0x40'),_0x4bd4d4[_0xc024('0x1d')]),_0x4bd4d4);dials[_0xc024('0x3f')](_0x4bd4d4);}catch(_0x340d7e){utils[_0xc024('0x15')](util[_0xc024('0x1a')](_0xc024('0x41'),_0x4bd4d4[_0xc024('0x1d')]),_0x340d7e);}});ami['on'](_0xc024('0x42'),function(_0x2c1e9f){try{utils[_0xc024('0x19')](util['format']('[%s][index][dialend]',_0x2c1e9f['uniqueid']),_0x2c1e9f);dials[_0xc024('0x42')](_0x2c1e9f);}catch(_0x4a4973){utils[_0xc024('0x15')](util[_0xc024('0x1a')]('[%s][index][dialend]',_0x2c1e9f[_0xc024('0x1d')]),_0x4a4973);}});}
\ No newline at end of file
index 2471601..77f97de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bdf=['isNil','exitAt','duration','error','[%s][members][devicestatechange]','agentcomplete','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','[%s][members][cdr]','type','data3','destinationchannel','source','destination','data1','lodash','Queue:','info','format','interface','channel','data2','membername','getUserByInterface','then','internal','CreateMemberReport','getUserByName','split','request','catch','[%s][members][writeDB]','uniqueid','some','startsWith','debug','device','state','INUSE','BUSY','voice','now','agent','NOT_INUSE'];(function(_0x46aff0,_0x122890){var _0x9d78cf=function(_0x3f14cb){while(--_0x3f14cb){_0x46aff0['push'](_0x46aff0['shift']());}};_0x9d78cf(++_0x122890);}(_0x9bdf,0x1dd));var _0xf9bd=function(_0x4e7eec,_0x13cd74){_0x4e7eec=_0x4e7eec-0x0;var _0x79b028=_0x9bdf[_0x4e7eec];return _0x79b028;};'use strict';var _=require(_0xf9bd('0x0'));var util=require('util');var utils=require('./utils');var members={};var exclude=['Local/_attended@transfer',_0xf9bd('0x1')];function writeDB(_0x4a69db){utils[_0xf9bd('0x2')](util[_0xf9bd('0x3')]('[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s',_0x4a69db['uniqueid'],_0x4a69db[_0xf9bd('0x4')],_0x4a69db[_0xf9bd('0x5')],_0x4a69db[_0xf9bd('0x6')],_0x4a69db[_0xf9bd('0x7')],_0x4a69db['type']));if(_0x4a69db[_0xf9bd('0x4')]){utils[_0xf9bd('0x8')](_0x4a69db[_0xf9bd('0x4')])[_0xf9bd('0x9')](function(_0x4e05b1){if(_0x4e05b1){_0x4a69db[_0xf9bd('0x7')]=_0x4e05b1['name'];_0x4a69db[_0xf9bd('0xa')]=_0x4e05b1[_0xf9bd('0xa')];utils['request'](_0xf9bd('0xb'),_0x4a69db);}else{utils[_0xf9bd('0xc')](_0x4a69db['interface'][_0xf9bd('0xd')]('/')[0x1])[_0xf9bd('0x9')](function(_0xfd7f17){if(_0xfd7f17){_0x4a69db[_0xf9bd('0x7')]=_0xfd7f17['name'];_0x4a69db[_0xf9bd('0xa')]=_0xfd7f17[_0xf9bd('0xa')];utils[_0xf9bd('0xe')](_0xf9bd('0xb'),_0x4a69db);}});}})[_0xf9bd('0xf')](function(_0x3dcfc8){utils['error'](util['format'](_0xf9bd('0x10'),_0x4a69db[_0xf9bd('0x11')]),_0x3dcfc8);});}delete members[_0x4a69db[_0xf9bd('0x4')]];}function startsWith(_0x409858,_0x83bc53){return _[_0xf9bd('0x12')](_0x409858,function(_0x521075){return _[_0xf9bd('0x13')](_0x83bc53,_0x521075);});}exports['devicestatechange']=function(_0x13594d){try{utils[_0xf9bd('0x14')](util['format']('[%s][members][devicestatechange]',members[_0x13594d[_0xf9bd('0x15')]]?members[_0x13594d[_0xf9bd('0x15')]][_0xf9bd('0x11')]:_0x13594d[_0xf9bd('0x15')]),_0x13594d);utils[_0xf9bd('0x2')](util[_0xf9bd('0x3')]('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x13594d[_0xf9bd('0x15')]]?members[_0x13594d[_0xf9bd('0x15')]][_0xf9bd('0x11')]:_0x13594d['device'],_0x13594d[_0xf9bd('0x16')],_0x13594d[_0xf9bd('0x15')]));switch(_0x13594d[_0xf9bd('0x16')]){case _0xf9bd('0x17'):case _0xf9bd('0x18'):if(!startsWith(exclude,_0x13594d['device'])){members[_0x13594d[_0xf9bd('0x15')]]={'channel':_0xf9bd('0x19'),'interface':_0x13594d['device'],'type':'TALKING','enterAt':utils[_0xf9bd('0x1a')](),'role':_0xf9bd('0x1b')};}break;case _0xf9bd('0x1c'):if(!_[_0xf9bd('0x1d')](members[_0x13594d[_0xf9bd('0x15')]])){members[_0x13594d[_0xf9bd('0x15')]][_0xf9bd('0x1e')]=utils[_0xf9bd('0x1a')]();members[_0x13594d['device']][_0xf9bd('0x1f')]=utils['diffTime'](members[_0x13594d[_0xf9bd('0x15')]][_0xf9bd('0x1e')],members[_0x13594d[_0xf9bd('0x15')]]['enterAt']);if(members[_0x13594d['device']]['uniqueid']){writeDB(members[_0x13594d[_0xf9bd('0x15')]]);}}break;default:break;}}catch(_0x176305){utils[_0xf9bd('0x20')](util['format'](_0xf9bd('0x21'),members[_0x13594d[_0xf9bd('0x15')]]?members[_0x13594d[_0xf9bd('0x15')]]['uniqueid']:_0x13594d[_0xf9bd('0x15')]),_0x176305);}};exports[_0xf9bd('0x22')]=function(_0x47fcc2){try{if(!_[_0xf9bd('0x1d')](members[_0x47fcc2['interface']])){utils[_0xf9bd('0x14')](util[_0xf9bd('0x3')](_0xf9bd('0x23'),_0x47fcc2[_0xf9bd('0x11')]),_0x47fcc2);utils[_0xf9bd('0x2')](util['format'](_0xf9bd('0x24'),_0x47fcc2['uniqueid'],_0x47fcc2[_0xf9bd('0x4')],_0x47fcc2[_0xf9bd('0x25')]));members[_0x47fcc2['interface']]=_[_0xf9bd('0x26')](members[_0x47fcc2['interface']],{'data4':_0x47fcc2[_0xf9bd('0x25')],'uniqueid':_0x47fcc2[_0xf9bd('0x11')]});}}catch(_0x5a0397){utils[_0xf9bd('0x20')](util[_0xf9bd('0x3')](_0xf9bd('0x23'),_0x47fcc2['uniqueid']),_0x5a0397);}};exports['cdr']=function(_0x27ad8b){try{utils['debug'](util[_0xf9bd('0x3')](_0xf9bd('0x27'),_0x27ad8b[_0xf9bd('0x11')]),_0x27ad8b);if(_0x27ad8b['channel']){var _0x4d1a84=_0x27ad8b[_0xf9bd('0x5')][_0xf9bd('0xd')]('-')[0x0];if(!_[_0xf9bd('0x1d')](members[_0x4d1a84])){members[_0x4d1a84]=_[_0xf9bd('0x26')](members[_0x4d1a84],{'data1':members[_0x4d1a84]['data1']||_0x27ad8b[_0xf9bd('0x28')],'data2':members[_0x4d1a84][_0xf9bd('0x6')]||_0x27ad8b['source'],'data3':members[_0x4d1a84][_0xf9bd('0x29')]||_0x27ad8b['destination'],'uniqueid':members[_0x4d1a84][_0xf9bd('0x11')]||_0x27ad8b[_0xf9bd('0x11')]});utils[_0xf9bd('0x2')](util['format']('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x27ad8b[_0xf9bd('0x11')],members[_0x4d1a84]['data1'],members[_0x4d1a84][_0xf9bd('0x6')],members[_0x4d1a84]['data3']));if(members[_0x4d1a84]['exitAt']){writeDB(members[_0x4d1a84]);}}}if(_0x27ad8b[_0xf9bd('0x2a')]){var _0x1054b5=_0x27ad8b[_0xf9bd('0x2a')]['split']('-')[0x0];if(!_['isNil'](members[_0x1054b5])){members[_0x1054b5]=_['assign'](members[_0x1054b5],{'data1':members[_0x1054b5]['data1']||_0x27ad8b[_0xf9bd('0x28')],'data2':members[_0x1054b5][_0xf9bd('0x6')]||_0x27ad8b[_0xf9bd('0x2b')],'data3':members[_0x1054b5][_0xf9bd('0x29')]||_0x27ad8b[_0xf9bd('0x2c')],'uniqueid':members[_0x1054b5][_0xf9bd('0x11')]||_0x27ad8b[_0xf9bd('0x11')]});utils[_0xf9bd('0x2')](util[_0xf9bd('0x3')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x27ad8b[_0xf9bd('0x11')],members[_0x1054b5][_0xf9bd('0x2d')],members[_0x1054b5][_0xf9bd('0x6')],members[_0x1054b5][_0xf9bd('0x29')]));if(members[_0x1054b5][_0xf9bd('0x1e')]){writeDB(members[_0x1054b5]);}}}}catch(_0x12ef0d){utils[_0xf9bd('0x20')](util[_0xf9bd('0x3')](_0xf9bd('0x27'),_0x27ad8b[_0xf9bd('0x11')]),_0x12ef0d);}};
\ No newline at end of file
+var _0x5129=['INUSE','BUSY','voice','TALKING','now','agent','NOT_INUSE','exitAt','duration','diffTime','[%s][members][devicestatechange]','agentcomplete','isNil','[%s][members][agentcomplete]','queue','assign','cdr','[%s][members][cdr]','channel','data1','data3','destination','destinationchannel','source','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','util','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','data2','membername','type','interface','getUserByInterface','name','internal','request','getUserByName','split','then','CreateMemberReport','catch','error','[%s][members][writeDB]','uniqueid','some','debug','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state'];(function(_0x36a8dd,_0x18263b){var _0x306e43=function(_0xe899c0){while(--_0xe899c0){_0x36a8dd['push'](_0x36a8dd['shift']());}};_0x306e43(++_0x18263b);}(_0x5129,0xb5));var _0x9512=function(_0x384520,_0x1993e5){_0x384520=_0x384520-0x0;var _0x3a6541=_0x5129[_0x384520];return _0x3a6541;};'use strict';var _=require('lodash');var util=require(_0x9512('0x0'));var utils=require('./utils');var members={};var exclude=[_0x9512('0x1'),_0x9512('0x2')];function writeDB(_0x73364c){utils[_0x9512('0x3')](util[_0x9512('0x4')](_0x9512('0x5'),_0x73364c['uniqueid'],_0x73364c['interface'],_0x73364c['channel'],_0x73364c[_0x9512('0x6')],_0x73364c[_0x9512('0x7')],_0x73364c[_0x9512('0x8')]));if(_0x73364c[_0x9512('0x9')]){utils[_0x9512('0xa')](_0x73364c[_0x9512('0x9')])['then'](function(_0x5b0d61){if(_0x5b0d61){_0x73364c[_0x9512('0x7')]=_0x5b0d61[_0x9512('0xb')];_0x73364c[_0x9512('0xc')]=_0x5b0d61[_0x9512('0xc')];utils[_0x9512('0xd')]('CreateMemberReport',_0x73364c);}else{utils[_0x9512('0xe')](_0x73364c[_0x9512('0x9')][_0x9512('0xf')]('/')[0x1])[_0x9512('0x10')](function(_0x581849){if(_0x581849){_0x73364c['membername']=_0x581849[_0x9512('0xb')];_0x73364c[_0x9512('0xc')]=_0x581849[_0x9512('0xc')];utils[_0x9512('0xd')](_0x9512('0x11'),_0x73364c);}});}})[_0x9512('0x12')](function(_0x45372e){utils[_0x9512('0x13')](util[_0x9512('0x4')](_0x9512('0x14'),_0x73364c[_0x9512('0x15')]),_0x45372e);});}delete members[_0x73364c[_0x9512('0x9')]];}function startsWith(_0x27f343,_0x3f4468){return _[_0x9512('0x16')](_0x27f343,function(_0x1ef1bc){return _['startsWith'](_0x3f4468,_0x1ef1bc);});}exports['devicestatechange']=function(_0x1b9646){try{utils[_0x9512('0x17')](util[_0x9512('0x4')]('[%s][members][devicestatechange]',members[_0x1b9646[_0x9512('0x18')]]?members[_0x1b9646[_0x9512('0x18')]][_0x9512('0x15')]:_0x1b9646[_0x9512('0x18')]),_0x1b9646);utils[_0x9512('0x3')](util[_0x9512('0x4')](_0x9512('0x19'),members[_0x1b9646[_0x9512('0x18')]]?members[_0x1b9646[_0x9512('0x18')]][_0x9512('0x15')]:_0x1b9646[_0x9512('0x18')],_0x1b9646[_0x9512('0x1a')],_0x1b9646[_0x9512('0x18')]));switch(_0x1b9646['state']){case _0x9512('0x1b'):case _0x9512('0x1c'):if(!startsWith(exclude,_0x1b9646[_0x9512('0x18')])){members[_0x1b9646[_0x9512('0x18')]]={'channel':_0x9512('0x1d'),'interface':_0x1b9646[_0x9512('0x18')],'type':_0x9512('0x1e'),'enterAt':utils[_0x9512('0x1f')](),'role':_0x9512('0x20')};}break;case _0x9512('0x21'):if(!_['isNil'](members[_0x1b9646[_0x9512('0x18')]])){members[_0x1b9646[_0x9512('0x18')]][_0x9512('0x22')]=utils[_0x9512('0x1f')]();members[_0x1b9646[_0x9512('0x18')]][_0x9512('0x23')]=utils[_0x9512('0x24')](members[_0x1b9646[_0x9512('0x18')]][_0x9512('0x22')],members[_0x1b9646[_0x9512('0x18')]]['enterAt']);if(members[_0x1b9646[_0x9512('0x18')]]['uniqueid']){writeDB(members[_0x1b9646[_0x9512('0x18')]]);}}break;default:break;}}catch(_0x2c45e7){utils[_0x9512('0x13')](util[_0x9512('0x4')](_0x9512('0x25'),members[_0x1b9646[_0x9512('0x18')]]?members[_0x1b9646[_0x9512('0x18')]][_0x9512('0x15')]:_0x1b9646[_0x9512('0x18')]),_0x2c45e7);}};exports[_0x9512('0x26')]=function(_0x2b8338){try{if(!_[_0x9512('0x27')](members[_0x2b8338[_0x9512('0x9')]])){utils[_0x9512('0x17')](util[_0x9512('0x4')](_0x9512('0x28'),_0x2b8338[_0x9512('0x15')]),_0x2b8338);utils['info'](util['format']('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x2b8338[_0x9512('0x15')],_0x2b8338[_0x9512('0x9')],_0x2b8338[_0x9512('0x29')]));members[_0x2b8338[_0x9512('0x9')]]=_[_0x9512('0x2a')](members[_0x2b8338['interface']],{'data4':_0x2b8338[_0x9512('0x29')],'uniqueid':_0x2b8338['uniqueid']});}}catch(_0x2b7376){utils[_0x9512('0x13')](util[_0x9512('0x4')](_0x9512('0x28'),_0x2b8338[_0x9512('0x15')]),_0x2b7376);}};exports[_0x9512('0x2b')]=function(_0x5835c4){try{utils[_0x9512('0x17')](util[_0x9512('0x4')](_0x9512('0x2c'),_0x5835c4['uniqueid']),_0x5835c4);if(_0x5835c4[_0x9512('0x2d')]){var _0x2fc247=_0x5835c4[_0x9512('0x2d')][_0x9512('0xf')]('-')[0x0];if(!_[_0x9512('0x27')](members[_0x2fc247])){members[_0x2fc247]=_[_0x9512('0x2a')](members[_0x2fc247],{'data1':members[_0x2fc247][_0x9512('0x2e')]||_0x5835c4[_0x9512('0x8')],'data2':members[_0x2fc247][_0x9512('0x6')]||_0x5835c4['source'],'data3':members[_0x2fc247][_0x9512('0x2f')]||_0x5835c4[_0x9512('0x30')],'uniqueid':members[_0x2fc247][_0x9512('0x15')]||_0x5835c4[_0x9512('0x15')]});utils[_0x9512('0x3')](util[_0x9512('0x4')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x5835c4[_0x9512('0x15')],members[_0x2fc247][_0x9512('0x2e')],members[_0x2fc247]['data2'],members[_0x2fc247][_0x9512('0x2f')]));if(members[_0x2fc247][_0x9512('0x22')]){writeDB(members[_0x2fc247]);}}}if(_0x5835c4['destinationchannel']){var _0x380e57=_0x5835c4[_0x9512('0x31')][_0x9512('0xf')]('-')[0x0];if(!_[_0x9512('0x27')](members[_0x380e57])){members[_0x380e57]=_[_0x9512('0x2a')](members[_0x380e57],{'data1':members[_0x380e57][_0x9512('0x2e')]||_0x5835c4[_0x9512('0x8')],'data2':members[_0x380e57][_0x9512('0x6')]||_0x5835c4[_0x9512('0x32')],'data3':members[_0x380e57][_0x9512('0x2f')]||_0x5835c4[_0x9512('0x30')],'uniqueid':members[_0x380e57][_0x9512('0x15')]||_0x5835c4[_0x9512('0x15')]});utils['info'](util['format'](_0x9512('0x33'),_0x5835c4[_0x9512('0x15')],members[_0x380e57][_0x9512('0x2e')],members[_0x380e57][_0x9512('0x6')],members[_0x380e57][_0x9512('0x2f')]));if(members[_0x380e57][_0x9512('0x22')]){writeDB(members[_0x380e57]);}}}}catch(_0x4a5510){utils[_0x9512('0x13')](util[_0x9512('0x4')](_0x9512('0x2c'),_0x5835c4['uniqueid']),_0x4a5510);}};
\ No newline at end of file
index 996e092..42ba6b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f61=['queuecallerexit','queuecallercomplete','queuecallercompleteAt','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','varset','variable','queuestatus','value','toUpperCase','CONTINUE','queuecallerabandon','queuecallerabandonAt','queuecallerexitAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','[%s][queues][varset]','[%s][queues][queuecallerabandon]','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','queuecallerjoinAt','count','connectedlinenum','connectedlinename','[%s][queues][queuecallerleave]','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','agentcomplete','[%s][queues][agentcomplete]','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferexten','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','extension','attendedtransfer','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','ATTENDED','origtransfererexten','ATTENDEDTRANSFER','transfereelinkedid','clone','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfererexten','secondtransfereruniqueid','transfertargetlinkedid','transfertargetuniqueid','holdtime','[%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','musiconholdstop','[%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','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','format','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','assign','position','now','error','hangup','isNil','debug','[%s][queues][hangup]','queuecallerleaveAt'];(function(_0x379968,_0x351ce2){var _0x2c8d7f=function(_0x32971a){while(--_0x32971a){_0x379968['push'](_0x379968['shift']());}};_0x2c8d7f(++_0x351ce2);}(_0x6f61,0x1f4));var _0x16f6=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6f61[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x16f6('0x0'));var util=require(_0x16f6('0x1'));var utils=require(_0x16f6('0x2'));var queues={};function writeDB(_0x20b4ff){utils[_0x16f6('0x3')](util['format'](_0x16f6('0x4'),_0x20b4ff[_0x16f6('0x5')],_0x20b4ff['channel'],_0x20b4ff[_0x16f6('0x6')],_0x20b4ff[_0x16f6('0x7')],_0x20b4ff[_0x16f6('0x8')],_0x20b4ff[_0x16f6('0x9')],_0x20b4ff[_0x16f6('0xa')]));if(_0x20b4ff['queue']){utils[_0x16f6('0xb')](_0x20b4ff['queue'])[_0x16f6('0xc')](function(_0x2c0c33){if(_0x2c0c33){_0x20b4ff[_0x16f6('0xd')]=_0x2c0c33[_0x16f6('0xd')];}utils[_0x16f6('0xe')]('CreateVoiceQueueReport',_0x20b4ff);});}else{utils[_0x16f6('0xe')](_0x16f6('0xf'),_0x20b4ff);}if(_0x20b4ff[_0x16f6('0x10')]){delete queues[_0x20b4ff[_0x16f6('0x10')]];}else{delete queues[_0x20b4ff[_0x16f6('0x5')]];}}exports[_0x16f6('0x11')]=function(_0x33b17e){try{utils['debug'](util[_0x16f6('0x12')](_0x16f6('0x13'),_0x33b17e[_0x16f6('0x5')]),_0x33b17e);utils['info'](util[_0x16f6('0x12')](_0x16f6('0x14'),_0x33b17e['uniqueid'],_0x33b17e[_0x16f6('0x6')],_0x33b17e['position']));queues[_0x33b17e['uniqueid']]=_[_0x16f6('0x15')](_0x33b17e,{'originalposition':_0x33b17e[_0x16f6('0x16')],'queuecallerjoinAt':utils[_0x16f6('0x17')](),'mohtime':0x0});}catch(_0x18bd5c){utils[_0x16f6('0x18')](util[_0x16f6('0x12')]('[%s][queues][queuecallerjoin]',_0x33b17e['uniqueid']),_0x18bd5c);}};exports[_0x16f6('0x19')]=function(_0x5a4015){try{if(!_[_0x16f6('0x1a')](queues[_0x5a4015[_0x16f6('0x5')]])){utils[_0x16f6('0x1b')](util['format'](_0x16f6('0x1c'),_0x5a4015[_0x16f6('0x5')]),_0x5a4015);if(queues[_0x5a4015[_0x16f6('0x5')]][_0x16f6('0x1d')]){if(!queues[_0x5a4015[_0x16f6('0x5')]]['queuecallerabandon']&&!queues[_0x5a4015[_0x16f6('0x5')]][_0x16f6('0x1e')]){queues[_0x5a4015['uniqueid']][_0x16f6('0x1f')]=!![];queues[_0x5a4015[_0x16f6('0x5')]][_0x16f6('0x20')]=utils[_0x16f6('0x17')]();queues[_0x5a4015['uniqueid']]['queuecallerexitreason']='COMPLETEDBYAGENT';}utils['info'](util['format'](_0x16f6('0x21'),_0x5a4015[_0x16f6('0x5')],queues[_0x5a4015[_0x16f6('0x5')]][_0x16f6('0x22')],queues[_0x5a4015[_0x16f6('0x5')]][_0x16f6('0xa')]));writeDB(queues[_0x5a4015[_0x16f6('0x5')]]);}else if(queues[_0x5a4015[_0x16f6('0x5')]][_0x16f6('0x10')]){utils[_0x16f6('0x3')](util[_0x16f6('0x12')](_0x16f6('0x23'),_0x5a4015['uniqueid'],queues[_0x5a4015[_0x16f6('0x5')]][_0x16f6('0x22')],queues[_0x5a4015[_0x16f6('0x5')]][_0x16f6('0x10')]));queues[queues[_0x5a4015['uniqueid']][_0x16f6('0x10')]]=queues[_0x5a4015[_0x16f6('0x5')]];queues[queues[_0x5a4015['uniqueid']][_0x16f6('0x10')]][_0x16f6('0x24')]=0x2;delete queues[_0x5a4015[_0x16f6('0x5')]];}}}catch(_0x448dd3){utils[_0x16f6('0x18')](util['format']('[%s][queues][hangup]',_0x5a4015['uniqueid']),_0x448dd3);}};exports[_0x16f6('0x25')]=function(_0x5b8abb){try{utils[_0x16f6('0x1b')](util[_0x16f6('0x12')]('[%s][queues][varset]',_0x5b8abb['uniqueid']),_0x5b8abb);if(!_[_0x16f6('0x1a')](_0x5b8abb[_0x16f6('0x26')][_0x16f6('0x27')])&&_0x5b8abb[_0x16f6('0x28')][_0x16f6('0x29')]()!==_0x16f6('0x2a')){if(!_[_0x16f6('0x1a')](queues[_0x5b8abb[_0x16f6('0x5')]])){queues[_0x5b8abb[_0x16f6('0x5')]][_0x16f6('0x2b')]=![];queues[_0x5b8abb[_0x16f6('0x5')]][_0x16f6('0x2c')]=null;queues[_0x5b8abb['uniqueid']]['queuecallerexit']=!![];queues[_0x5b8abb[_0x16f6('0x5')]][_0x16f6('0x2d')]=utils[_0x16f6('0x17')]();queues[_0x5b8abb['uniqueid']][_0x16f6('0xa')]=_0x5b8abb[_0x16f6('0x28')][_0x16f6('0x29')]();utils[_0x16f6('0x3')](util[_0x16f6('0x12')](_0x16f6('0x2e'),_0x5b8abb[_0x16f6('0x5')],queues[_0x5b8abb[_0x16f6('0x5')]]['name'],_0x5b8abb[_0x16f6('0x28')],queues[_0x5b8abb[_0x16f6('0x5')]][_0x16f6('0xa')]));writeDB(queues[_0x5b8abb[_0x16f6('0x5')]]);}}else if(!_[_0x16f6('0x1a')](_0x5b8abb[_0x16f6('0x26')][_0x16f6('0x2f')])){if(!_[_0x16f6('0x1a')](queues[_0x5b8abb['uniqueid']])&&!queues[_0x5b8abb['uniqueid']]['queuecallerabandon']){queues[_0x5b8abb[_0x16f6('0x5')]][_0x16f6('0x2b')]=![];queues[_0x5b8abb[_0x16f6('0x5')]]['queuecallerabandonAt']=null;queues[_0x5b8abb['uniqueid']][_0x16f6('0x1e')]=!![];queues[_0x5b8abb[_0x16f6('0x5')]][_0x16f6('0x2d')]=utils[_0x16f6('0x17')]();queues[_0x5b8abb[_0x16f6('0x5')]]['queuecallerexitreason']='EXITWITHKEY';utils[_0x16f6('0x3')](util['format']('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0x5b8abb['uniqueid'],queues[_0x5b8abb[_0x16f6('0x5')]][_0x16f6('0x22')],_0x5b8abb['value'],queues[_0x5b8abb['uniqueid']][_0x16f6('0xa')]));}}}catch(_0x349548){utils['error'](util[_0x16f6('0x12')](_0x16f6('0x30'),_0x5b8abb['uniqueid']),_0x349548);}};exports[_0x16f6('0x2b')]=function(_0x1a6f54){try{if(!_['isNil'](queues[_0x1a6f54[_0x16f6('0x5')]])){utils[_0x16f6('0x1b')](util[_0x16f6('0x12')](_0x16f6('0x31'),_0x1a6f54[_0x16f6('0x5')]),_0x1a6f54);queues[_0x1a6f54[_0x16f6('0x5')]][_0x16f6('0x1e')]=![];queues[_0x1a6f54['uniqueid']]['queuecallerexitAt']=null;queues[_0x1a6f54[_0x16f6('0x5')]][_0x16f6('0x2b')]=!![];queues[_0x1a6f54[_0x16f6('0x5')]][_0x16f6('0x2c')]=utils[_0x16f6('0x17')]();queues[_0x1a6f54[_0x16f6('0x5')]]['queuecallerexitreason']='ABANDONED';utils[_0x16f6('0x3')](util[_0x16f6('0x12')](_0x16f6('0x32'),_0x1a6f54[_0x16f6('0x5')],queues[_0x1a6f54[_0x16f6('0x5')]]['name'],queues[_0x1a6f54[_0x16f6('0x5')]][_0x16f6('0xa')]));}}catch(_0x516ca1){utils[_0x16f6('0x18')](util[_0x16f6('0x12')](_0x16f6('0x31'),_0x1a6f54['uniqueid']),_0x516ca1);}};exports['queuecallerleave']=function(_0x2718fe){try{if(!_['isNil'](queues[_0x2718fe[_0x16f6('0x5')]])){utils[_0x16f6('0x1b')](util[_0x16f6('0x12')]('[%s][queues][queuecallerleave]',_0x2718fe[_0x16f6('0x5')]),_0x2718fe);utils[_0x16f6('0x3')](util[_0x16f6('0x12')]('[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x2718fe[_0x16f6('0x5')],queues[_0x2718fe[_0x16f6('0x5')]][_0x16f6('0x22')],_0x2718fe['connectedlinenum'],_0x2718fe['connectedlinename']));queues[_0x2718fe['uniqueid']][_0x16f6('0x33')]=!![];queues[_0x2718fe['uniqueid']]['queuecallerleaveAt']=utils[_0x16f6('0x17')]();queues[_0x2718fe[_0x16f6('0x5')]]['holdtime']=utils['diffTime'](queues[_0x2718fe['uniqueid']][_0x16f6('0x1d')],queues[_0x2718fe['uniqueid']][_0x16f6('0x34')]);queues[_0x2718fe[_0x16f6('0x5')]][_0x16f6('0x16')]=_0x2718fe[_0x16f6('0x16')];queues[_0x2718fe[_0x16f6('0x5')]][_0x16f6('0x35')]=_0x2718fe['count'];queues[_0x2718fe[_0x16f6('0x5')]][_0x16f6('0x36')]=_0x2718fe[_0x16f6('0x36')];queues[_0x2718fe['uniqueid']][_0x16f6('0x37')]=_0x2718fe[_0x16f6('0x37')];}}catch(_0x7865c){utils[_0x16f6('0x18')](util[_0x16f6('0x12')](_0x16f6('0x38'),_0x2718fe['uniqueid']),_0x7865c);}};exports[_0x16f6('0x39')]=function(_0x2072db){try{if(!_[_0x16f6('0x1a')](queues[_0x2072db['uniqueid']])){utils[_0x16f6('0x1b')](util[_0x16f6('0x12')](_0x16f6('0x3a'),_0x2072db['uniqueid']),_0x2072db);utils['info'](util['format'](_0x16f6('0x3b'),_0x2072db[_0x16f6('0x5')],queues[_0x2072db[_0x16f6('0x5')]][_0x16f6('0x22')],_0x2072db[_0x16f6('0x3c')],_0x2072db[_0x16f6('0x3d')]));queues[_0x2072db['uniqueid']][_0x16f6('0x2b')]=![];queues[_0x2072db['uniqueid']][_0x16f6('0x2b')]=![];queues[_0x2072db[_0x16f6('0x5')]][_0x16f6('0x2c')]=null;queues[_0x2072db[_0x16f6('0x5')]]['queuecallerexit']=![];queues[_0x2072db[_0x16f6('0x5')]][_0x16f6('0xa')]=null;queues[_0x2072db['uniqueid']][_0x16f6('0x2d')]=null;queues[_0x2072db[_0x16f6('0x5')]][_0x16f6('0x3e')]=!![];queues[_0x2072db[_0x16f6('0x5')]][_0x16f6('0x9')]=_0x2072db[_0x16f6('0x3d')];queues[_0x2072db[_0x16f6('0x5')]][_0x16f6('0x7')]=_0x2072db[_0x16f6('0x3c')];}}catch(_0xe71c52){utils[_0x16f6('0x18')](util[_0x16f6('0x12')](_0x16f6('0x3a'),_0x2072db[_0x16f6('0x5')]),_0xe71c52);}};exports[_0x16f6('0x3f')]=function(_0x1bf57f){try{if(!_[_0x16f6('0x1a')](queues[_0x1bf57f[_0x16f6('0x5')]])){if(queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0x1d')]){utils['debug'](util[_0x16f6('0x12')](_0x16f6('0x40'),_0x1bf57f['uniqueid']),_0x1bf57f);queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0x2b')]=![];queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0x2b')]=![];queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0x2c')]=null;queues[_0x1bf57f[_0x16f6('0x5')]]['queuecallerexit']=![];queues[_0x1bf57f['uniqueid']][_0x16f6('0x2d')]=null;queues[_0x1bf57f['uniqueid']][_0x16f6('0x3e')]=!![];queues[_0x1bf57f['uniqueid']][_0x16f6('0x7')]=_0x1bf57f['membername'];queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0x1f')]=!![];queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0x20')]=utils[_0x16f6('0x17')]();if(_0x1bf57f[_0x16f6('0x41')]==_0x16f6('0x42')){if(!queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0x42')]){queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0xa')]=_0x16f6('0x43');}}else{queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0xa')]=_0x16f6('0x44')+_0x1bf57f['reason'][_0x16f6('0x29')]();}utils[_0x16f6('0x3')](util['format'](_0x16f6('0x45'),_0x1bf57f[_0x16f6('0x5')],queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0x22')],_0x1bf57f['membername'],queues[_0x1bf57f[_0x16f6('0x5')]][_0x16f6('0xa')]));writeDB(queues[_0x1bf57f[_0x16f6('0x5')]]);}}}catch(_0x137f0b){utils[_0x16f6('0x18')](util[_0x16f6('0x12')](_0x16f6('0x40'),_0x1bf57f[_0x16f6('0x5')]),_0x137f0b);}};exports[_0x16f6('0x46')]=function(_0x3553f1){try{if(!_[_0x16f6('0x1a')](queues[_0x3553f1[_0x16f6('0x47')]])){utils[_0x16f6('0x1b')](util[_0x16f6('0x12')](_0x16f6('0x48'),_0x3553f1[_0x16f6('0x5')]),_0x3553f1);queues[_0x3553f1[_0x16f6('0x47')]][_0x16f6('0x42')]=!![];queues[_0x3553f1[_0x16f6('0x47')]][_0x16f6('0x49')]=_0x16f6('0x4a');queues[_0x3553f1[_0x16f6('0x47')]][_0x16f6('0x4b')]=_0x3553f1['extension'];queues[_0x3553f1[_0x16f6('0x47')]][_0x16f6('0x4c')]=_0x3553f1[_0x16f6('0x47')];queues[_0x3553f1['transfereeuniqueid']][_0x16f6('0xa')]=_0x16f6('0x4d');utils[_0x16f6('0x3')](util[_0x16f6('0x12')](_0x16f6('0x4e'),_0x3553f1['uniqueid'],queues[_0x3553f1[_0x16f6('0x47')]]['name'],_0x3553f1[_0x16f6('0x47')],_0x3553f1[_0x16f6('0x4f')]));}}catch(_0x48243a){utils['error'](util[_0x16f6('0x12')](_0x16f6('0x48'),_0x3553f1[_0x16f6('0x5')]),_0x48243a);}};exports[_0x16f6('0x50')]=function(_0x5ab014){try{utils[_0x16f6('0x1b')](util[_0x16f6('0x12')]('[%s][queues][attendedtransfer]',_0x5ab014[_0x16f6('0x51')]),_0x5ab014);if(_0x5ab014[_0x16f6('0x51')]==_0x5ab014[_0x16f6('0x52')]){if(!_[_0x16f6('0x1a')](queues[_0x5ab014['secondtransfererlinkedid']])){utils[_0x16f6('0x3')](util[_0x16f6('0x12')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x5ab014['origtransfereruniqueid'],queues[_0x5ab014[_0x16f6('0x53')]]['name'],_0x5ab014['origtransfererexten']));queues[_0x5ab014['secondtransfererlinkedid']][_0x16f6('0x42')]=!![];queues[_0x5ab014[_0x16f6('0x53')]][_0x16f6('0x49')]=_0x16f6('0x54');queues[_0x5ab014[_0x16f6('0x53')]]['transferexten']=_0x5ab014[_0x16f6('0x55')];queues[_0x5ab014[_0x16f6('0x53')]][_0x16f6('0x4c')]=_0x5ab014['origtransfereruniqueid'];queues[_0x5ab014[_0x16f6('0x53')]][_0x16f6('0xa')]=_0x16f6('0x56');}if(!_[_0x16f6('0x1a')](queues[_0x5ab014[_0x16f6('0x52')]])){if(_0x5ab014['transfereelinkedid']&&queues[_0x5ab014[_0x16f6('0x57')]]){queues[_0x5ab014[_0x16f6('0x57')]][_0x16f6('0x24')]=0x1;queues[_0x5ab014['transfereeuniqueid']]=_[_0x16f6('0x58')](queues[_0x5ab014[_0x16f6('0x57')]]);queues[_0x5ab014[_0x16f6('0x47')]][_0x16f6('0x10')]=_0x5ab014['transfertargetuniqueid'];queues[_0x5ab014[_0x16f6('0x47')]][_0x16f6('0x24')]=0x2;queues[_0x5ab014[_0x16f6('0x47')]][_0x16f6('0x8')]=queues[_0x5ab014[_0x16f6('0x53')]][_0x16f6('0x8')];queues[_0x5ab014['transfereeuniqueid']][_0x16f6('0x59')]=queues[_0x5ab014[_0x16f6('0x53')]][_0x16f6('0x59')];queues[_0x5ab014[_0x16f6('0x47')]][_0x16f6('0x34')]=utils[_0x16f6('0x17')]();queues[_0x5ab014[_0x16f6('0x47')]]['queuecallerleaveAt']=utils[_0x16f6('0x17')]();queues[_0x5ab014['transfereeuniqueid']]['holdtime']=0x0;queues[_0x5ab014[_0x16f6('0x47')]][_0x16f6('0x5a')]=0x0;utils[_0x16f6('0x3')](util['format'](_0x16f6('0x5b'),_0x5ab014[_0x16f6('0x51')],queues[_0x5ab014[_0x16f6('0x47')]]['name'],queues[_0x5ab014[_0x16f6('0x47')]][_0x16f6('0x8')],queues[_0x5ab014[_0x16f6('0x47')]]['calleridname']));}else{utils['info'](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x5ab014[_0x16f6('0x51')],queues[_0x5ab014['origtransfererlinkedid']][_0x16f6('0x22')],_0x5ab014[_0x16f6('0x53')]));queues[_0x5ab014[_0x16f6('0x52')]][_0x16f6('0x10')]=_0x5ab014['secondtransfererlinkedid'];}}}else if(_0x5ab014['secondtransfereruniqueid']==_0x5ab014[_0x16f6('0x53')]){if(!_[_0x16f6('0x1a')](queues[_0x5ab014[_0x16f6('0x52')]])){utils[_0x16f6('0x3')](util[_0x16f6('0x12')](_0x16f6('0x5c'),_0x5ab014[_0x16f6('0x51')],queues[_0x5ab014[_0x16f6('0x52')]][_0x16f6('0x22')],_0x5ab014['secondtransfereruniqueid'],_0x5ab014[_0x16f6('0x5d')]));queues[_0x5ab014[_0x16f6('0x52')]][_0x16f6('0x42')]=!![];queues[_0x5ab014[_0x16f6('0x52')]]['transfertype']='ATTENDED';queues[_0x5ab014[_0x16f6('0x52')]][_0x16f6('0x4b')]=_0x5ab014['secondtransfererexten'];queues[_0x5ab014[_0x16f6('0x52')]][_0x16f6('0x4c')]=_0x5ab014[_0x16f6('0x5e')];queues[_0x5ab014[_0x16f6('0x52')]][_0x16f6('0xa')]=_0x16f6('0x56');}if(!_[_0x16f6('0x1a')](queues[_0x5ab014[_0x16f6('0x53')]])){if(_0x5ab014['transfertargetlinkedid']&&queues[_0x5ab014[_0x16f6('0x5f')]]){queues[_0x5ab014[_0x16f6('0x5f')]][_0x16f6('0x24')]=0x1;queues[_0x5ab014[_0x16f6('0x60')]]=_[_0x16f6('0x58')](queues[_0x5ab014[_0x16f6('0x5f')]]);queues[_0x5ab014[_0x16f6('0x60')]][_0x16f6('0x10')]=_0x5ab014[_0x16f6('0x60')];queues[_0x5ab014[_0x16f6('0x60')]][_0x16f6('0x24')]=0x2;queues[_0x5ab014['transfertargetuniqueid']][_0x16f6('0x8')]=queues[_0x5ab014['origtransfererlinkedid']][_0x16f6('0x8')];queues[_0x5ab014[_0x16f6('0x60')]]['calleridname']=queues[_0x5ab014[_0x16f6('0x52')]]['calleridname'];queues[_0x5ab014[_0x16f6('0x60')]][_0x16f6('0x34')]=utils[_0x16f6('0x17')]();queues[_0x5ab014[_0x16f6('0x60')]][_0x16f6('0x1d')]=utils['now']();queues[_0x5ab014['transfertargetuniqueid']][_0x16f6('0x61')]=0x0;queues[_0x5ab014[_0x16f6('0x60')]][_0x16f6('0x5a')]=0x0;utils[_0x16f6('0x3')](util[_0x16f6('0x12')](_0x16f6('0x62'),_0x5ab014['origtransfereruniqueid'],queues[_0x5ab014['transfertargetuniqueid']][_0x16f6('0x22')],queues[_0x5ab014[_0x16f6('0x60')]][_0x16f6('0x10')],queues[_0x5ab014[_0x16f6('0x60')]][_0x16f6('0x8')],queues[_0x5ab014[_0x16f6('0x60')]][_0x16f6('0x59')]));}else{utils[_0x16f6('0x3')](util[_0x16f6('0x12')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x5ab014[_0x16f6('0x51')],queues[_0x5ab014[_0x16f6('0x53')]][_0x16f6('0x22')],_0x5ab014[_0x16f6('0x52')]));queues[_0x5ab014[_0x16f6('0x53')]][_0x16f6('0x10')]=_0x5ab014[_0x16f6('0x52')];}}}}catch(_0x21f965){utils['error'](util['format'](_0x16f6('0x63'),_0x5ab014[_0x16f6('0x51')]),_0x21f965);}};exports[_0x16f6('0x64')]=function(_0x42e4e5){try{if(!_[_0x16f6('0x1a')](queues[_0x42e4e5[_0x16f6('0x5')]])){utils[_0x16f6('0x1b')](util[_0x16f6('0x12')](_0x16f6('0x65'),_0x42e4e5['uniqueid']),_0x42e4e5);queues[_0x42e4e5[_0x16f6('0x5')]][_0x16f6('0x66')]=utils['now']();utils['info'](util[_0x16f6('0x12')](_0x16f6('0x67'),_0x42e4e5[_0x16f6('0x5')],queues[_0x42e4e5[_0x16f6('0x5')]][_0x16f6('0x22')],queues[_0x42e4e5['uniqueid']][_0x16f6('0x66')]));}}catch(_0x25e344){utils['error'](util[_0x16f6('0x12')](_0x16f6('0x65'),_0x42e4e5[_0x16f6('0x5')]),_0x25e344);}};exports[_0x16f6('0x68')]=function(_0x30933f){try{if(!_[_0x16f6('0x1a')](queues[_0x30933f['uniqueid']])){if(!_['isNil'](queues[_0x30933f[_0x16f6('0x5')]]['musiconholdstartAt'])){utils['debug'](util[_0x16f6('0x12')](_0x16f6('0x69'),_0x30933f['uniqueid']),_0x30933f);queues[_0x30933f[_0x16f6('0x5')]][_0x16f6('0x5a')]+=utils['diffTime'](utils[_0x16f6('0x17')](),queues[_0x30933f['uniqueid']][_0x16f6('0x66')]);utils['info'](util[_0x16f6('0x12')]('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x30933f['uniqueid'],queues[_0x30933f[_0x16f6('0x5')]][_0x16f6('0x22')],queues[_0x30933f[_0x16f6('0x5')]]['mohtime']));delete queues[_0x30933f[_0x16f6('0x5')]][_0x16f6('0x66')];}}}catch(_0x464e01){utils['error'](util[_0x16f6('0x12')](_0x16f6('0x69'),_0x30933f[_0x16f6('0x5')]),_0x464e01);}};
\ No newline at end of file
+var _0xcec7=['[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','channel','lastAssignedTo','calleridnum','getVoiceQueueByName','queue','then','type','request','CreateVoiceQueueReport','transfereduniqueid','uniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','error','hangup','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallerexitreason','COMPLETEDBYAGENT','name','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','queuecallerenterreason','varset','[%s][queues][varset]','variable','value','toUpperCase','CONTINUE','queuecallerabandonAt','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','queuecallerexitAt','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','diffTime','count','connectedlinename','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','[%s][queues][agentcomplete]','assigned','queuecallercompleteAt','transfer','TRANSFER','COMPLETEDBY','reason','[%s][queues][blindtransfer]','transfereeuniqueid','extension','transferuniqueid','BLINDTRANSFER','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','origtransfererexten','transfertype','ATTENDED','transferexten','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','queuecallerjoinAt','holdtime','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','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][musiconholdstart]','musiconholdstartAt','musiconholdstop','[%s][queues][musiconholdstop]','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','lodash','util','info','format'];(function(_0x2b2c53,_0x4bcf9b){var _0x311ec2=function(_0x4a8e72){while(--_0x4a8e72){_0x2b2c53['push'](_0x2b2c53['shift']());}};_0x311ec2(++_0x4bcf9b);}(_0xcec7,0x190));var _0x7cec=function(_0x1a58b3,_0x2e191e){_0x1a58b3=_0x1a58b3-0x0;var _0xc153b3=_0xcec7[_0x1a58b3];return _0xc153b3;};'use strict';var _=require(_0x7cec('0x0'));var util=require(_0x7cec('0x1'));var utils=require('./utils');var queues={};function writeDB(_0x414e9b){utils[_0x7cec('0x2')](util[_0x7cec('0x3')](_0x7cec('0x4'),_0x414e9b['uniqueid'],_0x414e9b[_0x7cec('0x5')],_0x414e9b['queue'],_0x414e9b[_0x7cec('0x6')],_0x414e9b[_0x7cec('0x7')],_0x414e9b['accountcode'],_0x414e9b['queuecallerexitreason']));if(_0x414e9b['queue']){utils[_0x7cec('0x8')](_0x414e9b[_0x7cec('0x9')])[_0x7cec('0xa')](function(_0x5e956e){if(_0x5e956e){_0x414e9b[_0x7cec('0xb')]=_0x5e956e[_0x7cec('0xb')];}utils[_0x7cec('0xc')](_0x7cec('0xd'),_0x414e9b);});}else{utils[_0x7cec('0xc')](_0x7cec('0xd'),_0x414e9b);}if(_0x414e9b[_0x7cec('0xe')]){delete queues[_0x414e9b[_0x7cec('0xe')]];}else{delete queues[_0x414e9b[_0x7cec('0xf')]];}}exports[_0x7cec('0x10')]=function(_0x3123ef){try{utils[_0x7cec('0x11')](util['format'](_0x7cec('0x12'),_0x3123ef['uniqueid']),_0x3123ef);utils[_0x7cec('0x2')](util['format'](_0x7cec('0x13'),_0x3123ef[_0x7cec('0xf')],_0x3123ef[_0x7cec('0x9')],_0x3123ef[_0x7cec('0x14')]));queues[_0x3123ef[_0x7cec('0xf')]]=_[_0x7cec('0x15')](_0x3123ef,{'originalposition':_0x3123ef['position'],'queuecallerjoinAt':utils[_0x7cec('0x16')](),'mohtime':0x0});}catch(_0x1b302f){utils[_0x7cec('0x17')](util['format']('[%s][queues][queuecallerjoin]',_0x3123ef['uniqueid']),_0x1b302f);}};exports[_0x7cec('0x18')]=function(_0x2fb961){try{if(!_[_0x7cec('0x19')](queues[_0x2fb961[_0x7cec('0xf')]])){utils[_0x7cec('0x11')](util[_0x7cec('0x3')](_0x7cec('0x1a'),_0x2fb961[_0x7cec('0xf')]),_0x2fb961);if(queues[_0x2fb961[_0x7cec('0xf')]][_0x7cec('0x1b')]){if(!queues[_0x2fb961[_0x7cec('0xf')]][_0x7cec('0x1c')]&&!queues[_0x2fb961[_0x7cec('0xf')]][_0x7cec('0x1d')]){queues[_0x2fb961[_0x7cec('0xf')]][_0x7cec('0x1e')]=!![];queues[_0x2fb961[_0x7cec('0xf')]]['queuecallercompleteAt']=utils[_0x7cec('0x16')]();queues[_0x2fb961['uniqueid']][_0x7cec('0x1f')]=_0x7cec('0x20');}utils[_0x7cec('0x2')](util[_0x7cec('0x3')]('[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s',_0x2fb961['uniqueid'],queues[_0x2fb961[_0x7cec('0xf')]][_0x7cec('0x21')],queues[_0x2fb961[_0x7cec('0xf')]]['queuecallerexitreason']));writeDB(queues[_0x2fb961[_0x7cec('0xf')]]);}else if(queues[_0x2fb961['uniqueid']][_0x7cec('0xe')]){utils[_0x7cec('0x2')](util['format'](_0x7cec('0x22'),_0x2fb961['uniqueid'],queues[_0x2fb961[_0x7cec('0xf')]][_0x7cec('0x21')],queues[_0x2fb961[_0x7cec('0xf')]]['transfereduniqueid']));queues[queues[_0x2fb961[_0x7cec('0xf')]][_0x7cec('0xe')]]=queues[_0x2fb961[_0x7cec('0xf')]];queues[queues[_0x2fb961[_0x7cec('0xf')]]['transfereduniqueid']][_0x7cec('0x23')]=0x2;delete queues[_0x2fb961[_0x7cec('0xf')]];}}}catch(_0xeb92cd){utils[_0x7cec('0x17')](util[_0x7cec('0x3')](_0x7cec('0x1a'),_0x2fb961[_0x7cec('0xf')]),_0xeb92cd);}};exports[_0x7cec('0x24')]=function(_0x27bcb8){try{utils[_0x7cec('0x11')](util[_0x7cec('0x3')](_0x7cec('0x25'),_0x27bcb8[_0x7cec('0xf')]),_0x27bcb8);if(!_[_0x7cec('0x19')](_0x27bcb8[_0x7cec('0x26')]['queuestatus'])&&_0x27bcb8[_0x7cec('0x27')][_0x7cec('0x28')]()!==_0x7cec('0x29')){if(!_[_0x7cec('0x19')](queues[_0x27bcb8['uniqueid']])){queues[_0x27bcb8[_0x7cec('0xf')]][_0x7cec('0x1c')]=![];queues[_0x27bcb8[_0x7cec('0xf')]]['queuecallerabandonAt']=null;queues[_0x27bcb8[_0x7cec('0xf')]][_0x7cec('0x1d')]=!![];queues[_0x27bcb8['uniqueid']]['queuecallerexitAt']=utils['now']();queues[_0x27bcb8[_0x7cec('0xf')]][_0x7cec('0x1f')]=_0x27bcb8[_0x7cec('0x27')][_0x7cec('0x28')]();utils[_0x7cec('0x2')](util[_0x7cec('0x3')]('[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s',_0x27bcb8[_0x7cec('0xf')],queues[_0x27bcb8[_0x7cec('0xf')]][_0x7cec('0x21')],_0x27bcb8[_0x7cec('0x27')],queues[_0x27bcb8[_0x7cec('0xf')]][_0x7cec('0x1f')]));writeDB(queues[_0x27bcb8['uniqueid']]);}}else if(!_['isNil'](_0x27bcb8[_0x7cec('0x26')]['queueposition'])){if(!_[_0x7cec('0x19')](queues[_0x27bcb8[_0x7cec('0xf')]])&&!queues[_0x27bcb8[_0x7cec('0xf')]][_0x7cec('0x1c')]){queues[_0x27bcb8['uniqueid']][_0x7cec('0x1c')]=![];queues[_0x27bcb8[_0x7cec('0xf')]][_0x7cec('0x2a')]=null;queues[_0x27bcb8[_0x7cec('0xf')]][_0x7cec('0x1d')]=!![];queues[_0x27bcb8[_0x7cec('0xf')]]['queuecallerexitAt']=utils[_0x7cec('0x16')]();queues[_0x27bcb8[_0x7cec('0xf')]]['queuecallerexitreason']='EXITWITHKEY';utils[_0x7cec('0x2')](util[_0x7cec('0x3')](_0x7cec('0x2b'),_0x27bcb8[_0x7cec('0xf')],queues[_0x27bcb8[_0x7cec('0xf')]][_0x7cec('0x21')],_0x27bcb8[_0x7cec('0x27')],queues[_0x27bcb8['uniqueid']][_0x7cec('0x1f')]));}}}catch(_0x2c7c63){utils['error'](util[_0x7cec('0x3')](_0x7cec('0x25'),_0x27bcb8['uniqueid']),_0x2c7c63);}};exports['queuecallerabandon']=function(_0x2b16aa){try{if(!_['isNil'](queues[_0x2b16aa[_0x7cec('0xf')]])){utils['debug'](util[_0x7cec('0x3')](_0x7cec('0x2c'),_0x2b16aa[_0x7cec('0xf')]),_0x2b16aa);queues[_0x2b16aa[_0x7cec('0xf')]][_0x7cec('0x1d')]=![];queues[_0x2b16aa[_0x7cec('0xf')]][_0x7cec('0x2d')]=null;queues[_0x2b16aa['uniqueid']][_0x7cec('0x1c')]=!![];queues[_0x2b16aa['uniqueid']]['queuecallerabandonAt']=utils['now']();queues[_0x2b16aa['uniqueid']][_0x7cec('0x1f')]=_0x7cec('0x2e');utils[_0x7cec('0x2')](util['format'](_0x7cec('0x2f'),_0x2b16aa['uniqueid'],queues[_0x2b16aa[_0x7cec('0xf')]][_0x7cec('0x21')],queues[_0x2b16aa[_0x7cec('0xf')]][_0x7cec('0x1f')]));}}catch(_0x585ea0){utils[_0x7cec('0x17')](util[_0x7cec('0x3')](_0x7cec('0x2c'),_0x2b16aa[_0x7cec('0xf')]),_0x585ea0);}};exports[_0x7cec('0x30')]=function(_0xd99b25){try{if(!_[_0x7cec('0x19')](queues[_0xd99b25[_0x7cec('0xf')]])){utils[_0x7cec('0x11')](util[_0x7cec('0x3')](_0x7cec('0x31'),_0xd99b25['uniqueid']),_0xd99b25);utils[_0x7cec('0x2')](util[_0x7cec('0x3')](_0x7cec('0x32'),_0xd99b25[_0x7cec('0xf')],queues[_0xd99b25[_0x7cec('0xf')]][_0x7cec('0x21')],_0xd99b25[_0x7cec('0x33')],_0xd99b25['connectedlinename']));queues[_0xd99b25[_0x7cec('0xf')]][_0x7cec('0x30')]=!![];queues[_0xd99b25[_0x7cec('0xf')]][_0x7cec('0x1b')]=utils['now']();queues[_0xd99b25['uniqueid']]['holdtime']=utils[_0x7cec('0x34')](queues[_0xd99b25[_0x7cec('0xf')]][_0x7cec('0x1b')],queues[_0xd99b25[_0x7cec('0xf')]]['queuecallerjoinAt']);queues[_0xd99b25[_0x7cec('0xf')]]['position']=_0xd99b25[_0x7cec('0x14')];queues[_0xd99b25[_0x7cec('0xf')]][_0x7cec('0x35')]=_0xd99b25['count'];queues[_0xd99b25[_0x7cec('0xf')]][_0x7cec('0x33')]=_0xd99b25[_0x7cec('0x33')];queues[_0xd99b25[_0x7cec('0xf')]][_0x7cec('0x36')]=_0xd99b25[_0x7cec('0x36')];}}catch(_0x580201){utils['error'](util[_0x7cec('0x3')](_0x7cec('0x31'),_0xd99b25[_0x7cec('0xf')]),_0x580201);}};exports[_0x7cec('0x37')]=function(_0x2ee09c){try{if(!_['isNil'](queues[_0x2ee09c['uniqueid']])){utils[_0x7cec('0x11')](util[_0x7cec('0x3')](_0x7cec('0x38'),_0x2ee09c['uniqueid']),_0x2ee09c);utils[_0x7cec('0x2')](util['format'](_0x7cec('0x39'),_0x2ee09c[_0x7cec('0xf')],queues[_0x2ee09c['uniqueid']][_0x7cec('0x21')],_0x2ee09c[_0x7cec('0x3a')],_0x2ee09c[_0x7cec('0x3b')]));queues[_0x2ee09c[_0x7cec('0xf')]][_0x7cec('0x1c')]=![];queues[_0x2ee09c['uniqueid']][_0x7cec('0x1c')]=![];queues[_0x2ee09c[_0x7cec('0xf')]]['queuecallerabandonAt']=null;queues[_0x2ee09c[_0x7cec('0xf')]]['queuecallerexit']=![];queues[_0x2ee09c[_0x7cec('0xf')]]['queuecallerexitreason']=null;queues[_0x2ee09c[_0x7cec('0xf')]][_0x7cec('0x2d')]=null;queues[_0x2ee09c[_0x7cec('0xf')]]['assigned']=!![];queues[_0x2ee09c['uniqueid']]['accountcode']=_0x2ee09c[_0x7cec('0x3b')];queues[_0x2ee09c[_0x7cec('0xf')]][_0x7cec('0x6')]=_0x2ee09c[_0x7cec('0x3a')];}}catch(_0x2ef1a7){utils['error'](util['format'](_0x7cec('0x38'),_0x2ee09c[_0x7cec('0xf')]),_0x2ef1a7);}};exports['agentcomplete']=function(_0x51317b){try{if(!_[_0x7cec('0x19')](queues[_0x51317b[_0x7cec('0xf')]])){if(queues[_0x51317b[_0x7cec('0xf')]]['queuecallerleaveAt']){utils[_0x7cec('0x11')](util[_0x7cec('0x3')](_0x7cec('0x3c'),_0x51317b[_0x7cec('0xf')]),_0x51317b);queues[_0x51317b[_0x7cec('0xf')]]['queuecallerabandon']=![];queues[_0x51317b[_0x7cec('0xf')]][_0x7cec('0x1c')]=![];queues[_0x51317b[_0x7cec('0xf')]]['queuecallerabandonAt']=null;queues[_0x51317b[_0x7cec('0xf')]]['queuecallerexit']=![];queues[_0x51317b[_0x7cec('0xf')]]['queuecallerexitAt']=null;queues[_0x51317b['uniqueid']][_0x7cec('0x3d')]=!![];queues[_0x51317b['uniqueid']]['lastAssignedTo']=_0x51317b[_0x7cec('0x3a')];queues[_0x51317b[_0x7cec('0xf')]][_0x7cec('0x1e')]=!![];queues[_0x51317b['uniqueid']][_0x7cec('0x3e')]=utils[_0x7cec('0x16')]();if(_0x51317b['reason']==_0x7cec('0x3f')){if(!queues[_0x51317b[_0x7cec('0xf')]][_0x7cec('0x3f')]){queues[_0x51317b[_0x7cec('0xf')]][_0x7cec('0x1f')]=_0x7cec('0x40');}}else{queues[_0x51317b[_0x7cec('0xf')]][_0x7cec('0x1f')]=_0x7cec('0x41')+_0x51317b[_0x7cec('0x42')][_0x7cec('0x28')]();}utils['info'](util['format']('[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s',_0x51317b[_0x7cec('0xf')],queues[_0x51317b['uniqueid']]['name'],_0x51317b[_0x7cec('0x3a')],queues[_0x51317b[_0x7cec('0xf')]][_0x7cec('0x1f')]));writeDB(queues[_0x51317b[_0x7cec('0xf')]]);}}}catch(_0x128b89){utils[_0x7cec('0x17')](util['format'](_0x7cec('0x3c'),_0x51317b[_0x7cec('0xf')]),_0x128b89);}};exports['blindtransfer']=function(_0x54ff3c){try{if(!_['isNil'](queues[_0x54ff3c['transfereeuniqueid']])){utils['debug'](util[_0x7cec('0x3')](_0x7cec('0x43'),_0x54ff3c[_0x7cec('0xf')]),_0x54ff3c);queues[_0x54ff3c[_0x7cec('0x44')]]['transfer']=!![];queues[_0x54ff3c['transfereeuniqueid']]['transfertype']='BLIND';queues[_0x54ff3c[_0x7cec('0x44')]]['transferexten']=_0x54ff3c[_0x7cec('0x45')];queues[_0x54ff3c[_0x7cec('0x44')]][_0x7cec('0x46')]=_0x54ff3c['transfereeuniqueid'];queues[_0x54ff3c[_0x7cec('0x44')]]['queuecallerexitreason']=_0x7cec('0x47');utils[_0x7cec('0x2')](util[_0x7cec('0x3')]('[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER',_0x54ff3c[_0x7cec('0xf')],queues[_0x54ff3c[_0x7cec('0x44')]][_0x7cec('0x21')],_0x54ff3c['transfereeuniqueid'],_0x54ff3c['extension']));}}catch(_0x1963fb){utils[_0x7cec('0x17')](util['format'](_0x7cec('0x43'),_0x54ff3c[_0x7cec('0xf')]),_0x1963fb);}};exports[_0x7cec('0x48')]=function(_0x51e531){try{utils[_0x7cec('0x11')](util[_0x7cec('0x3')](_0x7cec('0x49'),_0x51e531['origtransfereruniqueid']),_0x51e531);if(_0x51e531[_0x7cec('0x4a')]==_0x51e531[_0x7cec('0x4b')]){if(!_[_0x7cec('0x19')](queues[_0x51e531[_0x7cec('0x4c')]])){utils[_0x7cec('0x2')](util[_0x7cec('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x51e531[_0x7cec('0x4a')],queues[_0x51e531[_0x7cec('0x4c')]][_0x7cec('0x21')],_0x51e531[_0x7cec('0x4d')]));queues[_0x51e531[_0x7cec('0x4c')]][_0x7cec('0x3f')]=!![];queues[_0x51e531[_0x7cec('0x4c')]][_0x7cec('0x4e')]=_0x7cec('0x4f');queues[_0x51e531[_0x7cec('0x4c')]][_0x7cec('0x50')]=_0x51e531['origtransfererexten'];queues[_0x51e531[_0x7cec('0x4c')]][_0x7cec('0x46')]=_0x51e531[_0x7cec('0x4a')];queues[_0x51e531[_0x7cec('0x4c')]]['queuecallerexitreason']=_0x7cec('0x51');}if(!_[_0x7cec('0x19')](queues[_0x51e531[_0x7cec('0x4b')]])){if(_0x51e531[_0x7cec('0x52')]&&queues[_0x51e531[_0x7cec('0x52')]]){queues[_0x51e531[_0x7cec('0x52')]]['queuecallerenterreason']=0x1;queues[_0x51e531[_0x7cec('0x44')]]=_[_0x7cec('0x53')](queues[_0x51e531[_0x7cec('0x52')]]);queues[_0x51e531[_0x7cec('0x44')]][_0x7cec('0xe')]=_0x51e531[_0x7cec('0x54')];queues[_0x51e531[_0x7cec('0x44')]][_0x7cec('0x23')]=0x2;queues[_0x51e531[_0x7cec('0x44')]][_0x7cec('0x7')]=queues[_0x51e531[_0x7cec('0x4c')]]['calleridnum'];queues[_0x51e531[_0x7cec('0x44')]][_0x7cec('0x55')]=queues[_0x51e531[_0x7cec('0x4c')]][_0x7cec('0x55')];queues[_0x51e531['transfereeuniqueid']][_0x7cec('0x56')]=utils[_0x7cec('0x16')]();queues[_0x51e531[_0x7cec('0x44')]][_0x7cec('0x1b')]=utils['now']();queues[_0x51e531[_0x7cec('0x44')]][_0x7cec('0x57')]=0x0;queues[_0x51e531['transfereeuniqueid']][_0x7cec('0x58')]=0x0;utils['info'](util[_0x7cec('0x3')](_0x7cec('0x59'),_0x51e531[_0x7cec('0x4a')],queues[_0x51e531['transfereeuniqueid']][_0x7cec('0x21')],queues[_0x51e531[_0x7cec('0x44')]][_0x7cec('0x7')],queues[_0x51e531[_0x7cec('0x44')]][_0x7cec('0x55')]));}else{utils['info'](util[_0x7cec('0x3')](_0x7cec('0x5a'),_0x51e531['origtransfereruniqueid'],queues[_0x51e531[_0x7cec('0x4b')]]['name'],_0x51e531[_0x7cec('0x4c')]));queues[_0x51e531[_0x7cec('0x4b')]][_0x7cec('0xe')]=_0x51e531['secondtransfererlinkedid'];}}}else if(_0x51e531[_0x7cec('0x5b')]==_0x51e531[_0x7cec('0x4c')]){if(!_[_0x7cec('0x19')](queues[_0x51e531[_0x7cec('0x4b')]])){utils[_0x7cec('0x2')](util[_0x7cec('0x3')](_0x7cec('0x5c'),_0x51e531[_0x7cec('0x4a')],queues[_0x51e531[_0x7cec('0x4b')]][_0x7cec('0x21')],_0x51e531[_0x7cec('0x5b')],_0x51e531['secondtransfererexten']));queues[_0x51e531[_0x7cec('0x4b')]]['transfer']=!![];queues[_0x51e531[_0x7cec('0x4b')]][_0x7cec('0x4e')]=_0x7cec('0x4f');queues[_0x51e531[_0x7cec('0x4b')]][_0x7cec('0x50')]=_0x51e531[_0x7cec('0x5d')];queues[_0x51e531['origtransfererlinkedid']][_0x7cec('0x46')]=_0x51e531[_0x7cec('0x5b')];queues[_0x51e531[_0x7cec('0x4b')]][_0x7cec('0x1f')]='ATTENDEDTRANSFER';}if(!_['isNil'](queues[_0x51e531[_0x7cec('0x4c')]])){if(_0x51e531[_0x7cec('0x5e')]&&queues[_0x51e531['transfertargetlinkedid']]){queues[_0x51e531['transfertargetlinkedid']][_0x7cec('0x23')]=0x1;queues[_0x51e531[_0x7cec('0x54')]]=_[_0x7cec('0x53')](queues[_0x51e531['transfertargetlinkedid']]);queues[_0x51e531[_0x7cec('0x54')]][_0x7cec('0xe')]=_0x51e531[_0x7cec('0x54')];queues[_0x51e531[_0x7cec('0x54')]][_0x7cec('0x23')]=0x2;queues[_0x51e531[_0x7cec('0x54')]][_0x7cec('0x7')]=queues[_0x51e531[_0x7cec('0x4b')]]['calleridnum'];queues[_0x51e531[_0x7cec('0x54')]][_0x7cec('0x55')]=queues[_0x51e531[_0x7cec('0x4b')]][_0x7cec('0x55')];queues[_0x51e531[_0x7cec('0x54')]][_0x7cec('0x56')]=utils['now']();queues[_0x51e531[_0x7cec('0x54')]]['queuecallerleaveAt']=utils[_0x7cec('0x16')]();queues[_0x51e531['transfertargetuniqueid']][_0x7cec('0x57')]=0x0;queues[_0x51e531[_0x7cec('0x54')]][_0x7cec('0x58')]=0x0;utils[_0x7cec('0x2')](util[_0x7cec('0x3')](_0x7cec('0x5f'),_0x51e531[_0x7cec('0x4a')],queues[_0x51e531[_0x7cec('0x54')]][_0x7cec('0x21')],queues[_0x51e531['transfertargetuniqueid']][_0x7cec('0xe')],queues[_0x51e531[_0x7cec('0x54')]][_0x7cec('0x7')],queues[_0x51e531[_0x7cec('0x54')]]['calleridname']));}else{utils['info'](util[_0x7cec('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x51e531[_0x7cec('0x4a')],queues[_0x51e531['secondtransfererlinkedid']]['name'],_0x51e531[_0x7cec('0x4b')]));queues[_0x51e531[_0x7cec('0x4c')]][_0x7cec('0xe')]=_0x51e531[_0x7cec('0x4b')];}}}}catch(_0x26e2ed){utils[_0x7cec('0x17')](util[_0x7cec('0x3')](_0x7cec('0x49'),_0x51e531[_0x7cec('0x4a')]),_0x26e2ed);}};exports['musiconholdstart']=function(_0xcd790e){try{if(!_[_0x7cec('0x19')](queues[_0xcd790e[_0x7cec('0xf')]])){utils[_0x7cec('0x11')](util[_0x7cec('0x3')](_0x7cec('0x60'),_0xcd790e[_0x7cec('0xf')]),_0xcd790e);queues[_0xcd790e[_0x7cec('0xf')]]['musiconholdstartAt']=utils[_0x7cec('0x16')]();utils[_0x7cec('0x2')](util[_0x7cec('0x3')]('[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s',_0xcd790e['uniqueid'],queues[_0xcd790e[_0x7cec('0xf')]]['name'],queues[_0xcd790e[_0x7cec('0xf')]][_0x7cec('0x61')]));}}catch(_0x3d492b){utils[_0x7cec('0x17')](util[_0x7cec('0x3')](_0x7cec('0x60'),_0xcd790e['uniqueid']),_0x3d492b);}};exports[_0x7cec('0x62')]=function(_0x103a4f){try{if(!_['isNil'](queues[_0x103a4f[_0x7cec('0xf')]])){if(!_[_0x7cec('0x19')](queues[_0x103a4f[_0x7cec('0xf')]]['musiconholdstartAt'])){utils[_0x7cec('0x11')](util['format'](_0x7cec('0x63'),_0x103a4f[_0x7cec('0xf')]),_0x103a4f);queues[_0x103a4f[_0x7cec('0xf')]][_0x7cec('0x58')]+=utils[_0x7cec('0x34')](utils[_0x7cec('0x16')](),queues[_0x103a4f[_0x7cec('0xf')]][_0x7cec('0x61')]);utils[_0x7cec('0x2')](util['format'](_0x7cec('0x64'),_0x103a4f[_0x7cec('0xf')],queues[_0x103a4f[_0x7cec('0xf')]][_0x7cec('0x21')],queues[_0x103a4f['uniqueid']][_0x7cec('0x58')]));delete queues[_0x103a4f['uniqueid']][_0x7cec('0x61')];}}}catch(_0x540bd7){utils[_0x7cec('0x17')](util['format'](_0x7cec('0x63'),_0x103a4f['uniqueid']),_0x540bd7);}};
\ No newline at end of file
index f5e4f76..61a5ac7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d7c=['[%s][recordings][newchannel]','linkedid','context','exten','channel','error','[%s][recordings][newstate]','isNil','channelstate','info','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable','mixmonitor_filename','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','.WAV','find','monitors','push','[%s][recordings][varset]','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','cause-txt','calleridname','connectedlinenum','connectedlinename','outbound','clone','newexten','[%s][recordings][newexten]','application','appdata','toLowerCase','set','startsWith','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','util','./utils','[%s][recordings][writeDB]','uniqueid','accountcode','getUserByInternal','membername','UserId','request','CreateVoiceRecording','debug','format'];(function(_0x3be7ff,_0x12e714){var _0x186721=function(_0x2bc9e1){while(--_0x2bc9e1){_0x3be7ff['push'](_0x3be7ff['shift']());}};_0x186721(++_0x12e714);}(_0x1d7c,0x150));var _0xc1d7=function(_0x1a6363,_0x205f25){_0x1a6363=_0x1a6363-0x0;var _0xd22157=_0x1d7c[_0x1a6363];return _0xd22157;};'use strict';var _=require('lodash');var util=require(_0xc1d7('0x0'));var utils=require(_0xc1d7('0x1'));var recordings={};function writeDB(_0x236f78){utils['info'](util['format'](_0xc1d7('0x2'),_0x236f78[_0xc1d7('0x3')]));if(_0x236f78[_0xc1d7('0x4')]){utils[_0xc1d7('0x5')](_0x236f78[_0xc1d7('0x4')])['then'](function(_0x460506){if(_0x460506){_0x236f78[_0xc1d7('0x6')]=_0x460506['name'];_0x236f78[_0xc1d7('0x7')]=_0x460506['id'];}utils[_0xc1d7('0x8')](_0xc1d7('0x9'),_0x236f78);});}else{utils[_0xc1d7('0x8')](_0xc1d7('0x9'),_0x236f78);}}exports['newchannel']=function(_0x4cd185){try{utils[_0xc1d7('0xa')](util[_0xc1d7('0xb')](_0xc1d7('0xc'),_0x4cd185['uniqueid']),_0x4cd185);if(_0x4cd185['uniqueid']==_0x4cd185[_0xc1d7('0xd')]){utils['info'](util[_0xc1d7('0xb')]('[%s][recordings][newchannel]\x20context:%s\x20exten:%s',_0x4cd185['uniqueid'],_0x4cd185[_0xc1d7('0xe')],_0x4cd185[_0xc1d7('0xf')]));recordings[_0x4cd185['uniqueid']]={'uniqueid':_0x4cd185[_0xc1d7('0x3')],'accountcode':_0x4cd185[_0xc1d7('0x4')],'exten':_0x4cd185[_0xc1d7('0xf')],'context':_0x4cd185[_0xc1d7('0xe')],'channel':_0x4cd185[_0xc1d7('0x10')],'monitors':[]};}}catch(_0x896326){utils[_0xc1d7('0x11')](util[_0xc1d7('0xb')](_0xc1d7('0xc'),_0x4cd185[_0xc1d7('0x3')]),_0x896326);}};exports['newstate']=function(_0x33cf77){try{utils['debug'](util['format'](_0xc1d7('0x12'),_0x33cf77['uniqueid']),_0x33cf77);if(!_[_0xc1d7('0x13')](recordings[_0x33cf77['uniqueid']])&&_0x33cf77[_0xc1d7('0x14')]==0x6){utils[_0xc1d7('0x15')](util[_0xc1d7('0xb')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x33cf77['uniqueid'],_0x33cf77[_0xc1d7('0xe')],_0x33cf77[_0xc1d7('0x10')]));}else if(!_[_0xc1d7('0x13')](recordings[_0x33cf77[_0xc1d7('0xd')]])&&_0x33cf77[_0xc1d7('0x14')]==0x6&&_0x33cf77[_0xc1d7('0xe')]!=_0xc1d7('0x16')){utils[_0xc1d7('0x15')](util[_0xc1d7('0xb')](_0xc1d7('0x17'),_0x33cf77['uniqueid'],_0x33cf77[_0xc1d7('0xd')],_0x33cf77[_0xc1d7('0xe')],_0x33cf77[_0xc1d7('0x10')]));recordings[_0x33cf77[_0xc1d7('0xd')]][_0xc1d7('0x4')]=_0x33cf77[_0xc1d7('0x4')];}}catch(_0x375c99){utils[_0xc1d7('0x11')](util['format'](_0xc1d7('0x12'),_0x33cf77[_0xc1d7('0x3')]),_0x375c99);}};exports[_0xc1d7('0x18')]=function(_0x477487){try{if(!_[_0xc1d7('0x13')](_0x477487['variable'])&&!_['isNil'](_0x477487[_0xc1d7('0x19')][_0xc1d7('0x1a')])){utils['debug'](util[_0xc1d7('0xb')]('[%s][recordings][varset]',_0x477487[_0xc1d7('0x3')]),_0x477487);utils[_0xc1d7('0x15')](util[_0xc1d7('0xb')](_0xc1d7('0x1b'),_0x477487[_0xc1d7('0x3')],_0x477487[_0xc1d7('0x19')],_0x477487[_0xc1d7('0x1c')]));if(_[_0xc1d7('0x1d')](_0x477487[_0xc1d7('0x1c')],_0xc1d7('0x1e'))){_0x477487['value']=_0x477487['value'][_0xc1d7('0x1f')]('.wav49',_0xc1d7('0x20'));}if(recordings[_0x477487[_0xc1d7('0xd')]]){var _0x1cd043=_[_0xc1d7('0x21')](recordings[_0x477487[_0xc1d7('0xd')]]['monitors'],{'value':_0x477487[_0xc1d7('0x1c')]});if(_[_0xc1d7('0x13')](_0x1cd043)){recordings[_0x477487[_0xc1d7('0xd')]][_0xc1d7('0x22')][_0xc1d7('0x23')]({'value':_0x477487[_0xc1d7('0x1c')]});}}}}catch(_0x1ac20c){utils[_0xc1d7('0x11')](util[_0xc1d7('0xb')](_0xc1d7('0x24'),_0x477487[_0xc1d7('0x3')]),_0x1ac20c);}};exports['hangup']=function(_0x229034){try{if(!_[_0xc1d7('0x13')](recordings[_0x229034['uniqueid']])){utils['debug'](util[_0xc1d7('0xb')](_0xc1d7('0x25'),_0x229034['uniqueid']),_0x229034);utils[_0xc1d7('0x15')](util[_0xc1d7('0xb')](_0xc1d7('0x26'),_0x229034[_0xc1d7('0x3')],_0x229034[_0xc1d7('0x27')],_0x229034['calleridname'],_0x229034[_0xc1d7('0x28')]));recordings[_0x229034[_0xc1d7('0x3')]][_0xc1d7('0x27')]=_0x229034[_0xc1d7('0x27')];recordings[_0x229034[_0xc1d7('0x3')]][_0xc1d7('0x29')]=_0x229034[_0xc1d7('0x29')];recordings[_0x229034[_0xc1d7('0x3')]][_0xc1d7('0x2a')]=_0x229034['connectedlinenum'];recordings[_0x229034['uniqueid']][_0xc1d7('0x2b')]=_0x229034['connectedlinename'];if(recordings[_0x229034[_0xc1d7('0x3')]]['type']==_0xc1d7('0x2c')&&recordings[_0x229034[_0xc1d7('0x3')]]['accountcode']){recordings[_0x229034[_0xc1d7('0x3')]]['connectedlinenum']=recordings[_0x229034[_0xc1d7('0x3')]]['accountcode'];recordings[_0x229034[_0xc1d7('0x3')]][_0xc1d7('0x2b')]='';}recordings[_0x229034[_0xc1d7('0x3')]][_0xc1d7('0x22')]['forEach'](function(_0x1a506f){var _0x2a98b2=_[_0xc1d7('0x2d')](recordings[_0x229034[_0xc1d7('0x3')]]);_0x2a98b2[_0xc1d7('0x1c')]=_0x1a506f['value'];writeDB(_0x2a98b2);});delete recordings[_0x229034[_0xc1d7('0x3')]];}}catch(_0x2a440a){utils[_0xc1d7('0x11')](util['format'](_0xc1d7('0x25'),_0x229034[_0xc1d7('0x3')]),_0x2a440a);}};exports[_0xc1d7('0x2e')]=function(_0x24e486){try{if(!_[_0xc1d7('0x13')](recordings[_0x24e486[_0xc1d7('0x3')]])){utils['debug'](util['format'](_0xc1d7('0x2f'),_0x24e486['uniqueid']),_0x24e486);utils[_0xc1d7('0x15')](util[_0xc1d7('0xb')]('[%s][recordings][newexten]\x20application:%s\x20appdata:%s',_0x24e486[_0xc1d7('0x3')],_0x24e486[_0xc1d7('0x30')],_0x24e486[_0xc1d7('0x31')]));if(_0x24e486[_0xc1d7('0x30')][_0xc1d7('0x32')]()==_0xc1d7('0x33')&&_[_0xc1d7('0x34')](_0x24e486[_0xc1d7('0x31')][_0xc1d7('0x32')](),'cdr')){var _0x1f0b25=_0x24e486[_0xc1d7('0x31')]['split']('=');var _0x523fe3=_0x1f0b25[0x0][_0xc1d7('0x35')](_0x1f0b25[0x0]['lastIndexOf']('(')+0x1,_0x1f0b25[0x0][_0xc1d7('0x36')](')'));var _0x467f33=_0x1f0b25[0x1];recordings[_0x24e486[_0xc1d7('0x3')]][_0x523fe3]=_0x467f33;}}}catch(_0x188cfd){utils[_0xc1d7('0x11')](util[_0xc1d7('0xb')](_0xc1d7('0x2f'),_0x24e486['uniqueid']),_0x188cfd);}};exports[_0xc1d7('0x37')]=function(_0x50c06f){try{if(!_[_0xc1d7('0x13')](recordings[_0x50c06f[_0xc1d7('0x3')]])){utils[_0xc1d7('0xa')](util[_0xc1d7('0xb')]('[%s][recordings][queuecallerjoin]',_0x50c06f[_0xc1d7('0x3')]),_0x50c06f);utils['info'](util[_0xc1d7('0xb')](_0xc1d7('0x38'),_0x50c06f['uniqueid'],_0x50c06f[_0xc1d7('0x39')]));recordings[_0x50c06f[_0xc1d7('0x3')]][_0xc1d7('0x39')]=_0x50c06f['queue'];}}catch(_0x50bdd3){utils['error'](util[_0xc1d7('0xb')]('[%s][recordings][queuecallerjoin]',_0x50c06f[_0xc1d7('0x3')]),_0x50bdd3);}};
\ No newline at end of file
+var _0xe5b7=['accountcode','getUserByInternal','then','membername','UserId','CreateVoiceRecording','request','newchannel','debug','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','[%s][recordings][newchannel]','newstate','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','transfer','varset','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','replace','.wav49','.WAV','find','monitors','push','hangup','[%s][recordings][hangup]','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','clone','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','set','startsWith','toLowerCase','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','queue','lodash','util','info','format','[%s][recordings][writeDB]','uniqueid'];(function(_0x33ceeb,_0x58b863){var _0x5b6556=function(_0x23a6b1){while(--_0x23a6b1){_0x33ceeb['push'](_0x33ceeb['shift']());}};_0x5b6556(++_0x58b863);}(_0xe5b7,0x13a));var _0x7e5b=function(_0x3a82ac,_0x3c8bfa){_0x3a82ac=_0x3a82ac-0x0;var _0x8a9c78=_0xe5b7[_0x3a82ac];return _0x8a9c78;};'use strict';var _=require(_0x7e5b('0x0'));var util=require(_0x7e5b('0x1'));var utils=require('./utils');var recordings={};function writeDB(_0x21d01b){utils[_0x7e5b('0x2')](util[_0x7e5b('0x3')](_0x7e5b('0x4'),_0x21d01b[_0x7e5b('0x5')]));if(_0x21d01b[_0x7e5b('0x6')]){utils[_0x7e5b('0x7')](_0x21d01b[_0x7e5b('0x6')])[_0x7e5b('0x8')](function(_0x344351){if(_0x344351){_0x21d01b[_0x7e5b('0x9')]=_0x344351['name'];_0x21d01b[_0x7e5b('0xa')]=_0x344351['id'];}utils['request'](_0x7e5b('0xb'),_0x21d01b);});}else{utils[_0x7e5b('0xc')]('CreateVoiceRecording',_0x21d01b);}}exports[_0x7e5b('0xd')]=function(_0x389da6){try{utils[_0x7e5b('0xe')](util[_0x7e5b('0x3')]('[%s][recordings][newchannel]',_0x389da6['uniqueid']),_0x389da6);if(_0x389da6['uniqueid']==_0x389da6[_0x7e5b('0xf')]){utils[_0x7e5b('0x2')](util[_0x7e5b('0x3')](_0x7e5b('0x10'),_0x389da6[_0x7e5b('0x5')],_0x389da6[_0x7e5b('0x11')],_0x389da6[_0x7e5b('0x12')]));recordings[_0x389da6[_0x7e5b('0x5')]]={'uniqueid':_0x389da6[_0x7e5b('0x5')],'accountcode':_0x389da6[_0x7e5b('0x6')],'exten':_0x389da6[_0x7e5b('0x12')],'context':_0x389da6[_0x7e5b('0x11')],'channel':_0x389da6[_0x7e5b('0x13')],'monitors':[]};}}catch(_0x4253b7){utils[_0x7e5b('0x14')](util['format'](_0x7e5b('0x15'),_0x389da6[_0x7e5b('0x5')]),_0x4253b7);}};exports[_0x7e5b('0x16')]=function(_0x1c6796){try{utils[_0x7e5b('0xe')](util['format'](_0x7e5b('0x17'),_0x1c6796['uniqueid']),_0x1c6796);if(!_[_0x7e5b('0x18')](recordings[_0x1c6796['uniqueid']])&&_0x1c6796[_0x7e5b('0x19')]==0x6){utils[_0x7e5b('0x2')](util[_0x7e5b('0x3')](_0x7e5b('0x1a'),_0x1c6796['uniqueid'],_0x1c6796[_0x7e5b('0x11')],_0x1c6796[_0x7e5b('0x13')]));}else if(!_[_0x7e5b('0x18')](recordings[_0x1c6796[_0x7e5b('0xf')]])&&_0x1c6796['channelstate']==0x6&&_0x1c6796[_0x7e5b('0x11')]!=_0x7e5b('0x1b')){utils[_0x7e5b('0x2')](util[_0x7e5b('0x3')]('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x1c6796['uniqueid'],_0x1c6796[_0x7e5b('0xf')],_0x1c6796[_0x7e5b('0x11')],_0x1c6796['channel']));recordings[_0x1c6796[_0x7e5b('0xf')]][_0x7e5b('0x6')]=_0x1c6796[_0x7e5b('0x6')];}}catch(_0x2a6c97){utils[_0x7e5b('0x14')](util[_0x7e5b('0x3')](_0x7e5b('0x17'),_0x1c6796[_0x7e5b('0x5')]),_0x2a6c97);}};exports[_0x7e5b('0x1c')]=function(_0x4f2658){try{if(!_['isNil'](_0x4f2658[_0x7e5b('0x1d')])&&!_[_0x7e5b('0x18')](_0x4f2658[_0x7e5b('0x1d')][_0x7e5b('0x1e')])){utils['debug'](util[_0x7e5b('0x3')](_0x7e5b('0x1f'),_0x4f2658[_0x7e5b('0x5')]),_0x4f2658);utils['info'](util[_0x7e5b('0x3')](_0x7e5b('0x20'),_0x4f2658[_0x7e5b('0x5')],_0x4f2658[_0x7e5b('0x1d')],_0x4f2658[_0x7e5b('0x21')]));if(_[_0x7e5b('0x22')](_0x4f2658[_0x7e5b('0x21')],'.wav49')){_0x4f2658[_0x7e5b('0x21')]=_0x4f2658[_0x7e5b('0x21')][_0x7e5b('0x23')](_0x7e5b('0x24'),_0x7e5b('0x25'));}if(recordings[_0x4f2658[_0x7e5b('0xf')]]){var _0x5aad68=_[_0x7e5b('0x26')](recordings[_0x4f2658[_0x7e5b('0xf')]]['monitors'],{'value':_0x4f2658['value']});if(_[_0x7e5b('0x18')](_0x5aad68)){recordings[_0x4f2658['linkedid']][_0x7e5b('0x27')][_0x7e5b('0x28')]({'value':_0x4f2658[_0x7e5b('0x21')]});}}}}catch(_0x21370d){utils[_0x7e5b('0x14')](util[_0x7e5b('0x3')](_0x7e5b('0x1f'),_0x4f2658['uniqueid']),_0x21370d);}};exports[_0x7e5b('0x29')]=function(_0x3801de){try{if(!_['isNil'](recordings[_0x3801de[_0x7e5b('0x5')]])){utils[_0x7e5b('0xe')](util[_0x7e5b('0x3')](_0x7e5b('0x2a'),_0x3801de['uniqueid']),_0x3801de);utils[_0x7e5b('0x2')](util[_0x7e5b('0x3')]('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x3801de[_0x7e5b('0x5')],_0x3801de[_0x7e5b('0x2b')],_0x3801de[_0x7e5b('0x2c')],_0x3801de[_0x7e5b('0x2d')]));recordings[_0x3801de[_0x7e5b('0x5')]]['calleridnum']=_0x3801de[_0x7e5b('0x2b')];recordings[_0x3801de['uniqueid']][_0x7e5b('0x2c')]=_0x3801de[_0x7e5b('0x2c')];recordings[_0x3801de[_0x7e5b('0x5')]]['connectedlinenum']=_0x3801de[_0x7e5b('0x2e')];recordings[_0x3801de['uniqueid']][_0x7e5b('0x2f')]=_0x3801de['connectedlinename'];if(recordings[_0x3801de['uniqueid']][_0x7e5b('0x30')]==_0x7e5b('0x31')&&recordings[_0x3801de[_0x7e5b('0x5')]][_0x7e5b('0x6')]){recordings[_0x3801de['uniqueid']][_0x7e5b('0x2e')]=recordings[_0x3801de[_0x7e5b('0x5')]][_0x7e5b('0x6')];recordings[_0x3801de['uniqueid']][_0x7e5b('0x2f')]='';}recordings[_0x3801de[_0x7e5b('0x5')]]['monitors']['forEach'](function(_0x317018){var _0x557ab0=_[_0x7e5b('0x32')](recordings[_0x3801de[_0x7e5b('0x5')]]);_0x557ab0[_0x7e5b('0x21')]=_0x317018['value'];writeDB(_0x557ab0);});delete recordings[_0x3801de['uniqueid']];}}catch(_0x2e3a14){utils[_0x7e5b('0x14')](util['format']('[%s][recordings][hangup]',_0x3801de[_0x7e5b('0x5')]),_0x2e3a14);}};exports[_0x7e5b('0x33')]=function(_0x215b84){try{if(!_['isNil'](recordings[_0x215b84[_0x7e5b('0x5')]])){utils[_0x7e5b('0xe')](util[_0x7e5b('0x3')](_0x7e5b('0x34'),_0x215b84[_0x7e5b('0x5')]),_0x215b84);utils[_0x7e5b('0x2')](util[_0x7e5b('0x3')](_0x7e5b('0x35'),_0x215b84[_0x7e5b('0x5')],_0x215b84[_0x7e5b('0x36')],_0x215b84[_0x7e5b('0x37')]));if(_0x215b84[_0x7e5b('0x36')]['toLowerCase']()==_0x7e5b('0x38')&&_[_0x7e5b('0x39')](_0x215b84[_0x7e5b('0x37')][_0x7e5b('0x3a')](),'cdr')){var _0x4059d7=_0x215b84[_0x7e5b('0x37')]['split']('=');var _0x5d70e4=_0x4059d7[0x0][_0x7e5b('0x3b')](_0x4059d7[0x0][_0x7e5b('0x3c')]('(')+0x1,_0x4059d7[0x0][_0x7e5b('0x3c')](')'));var _0x5d9139=_0x4059d7[0x1];recordings[_0x215b84[_0x7e5b('0x5')]][_0x5d70e4]=_0x5d9139;}}}catch(_0x268218){utils[_0x7e5b('0x14')](util[_0x7e5b('0x3')](_0x7e5b('0x34'),_0x215b84[_0x7e5b('0x5')]),_0x268218);}};exports[_0x7e5b('0x3d')]=function(_0x3ffd9f){try{if(!_[_0x7e5b('0x18')](recordings[_0x3ffd9f[_0x7e5b('0x5')]])){utils[_0x7e5b('0xe')](util[_0x7e5b('0x3')](_0x7e5b('0x3e'),_0x3ffd9f['uniqueid']),_0x3ffd9f);utils['info'](util['format']('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x3ffd9f[_0x7e5b('0x5')],_0x3ffd9f[_0x7e5b('0x3f')]));recordings[_0x3ffd9f['uniqueid']][_0x7e5b('0x3f')]=_0x3ffd9f['queue'];}}catch(_0x229bd4){utils[_0x7e5b('0x14')](util[_0x7e5b('0x3')](_0x7e5b('0x3e'),_0x3ffd9f[_0x7e5b('0x5')]),_0x229bd4);}};
\ No newline at end of file
index f8bc213..38595bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3290=['secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetcontext','transfertargetexten','util','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','origtransfereruniqueid','uniqueid','debug','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','blind','error','attendedtransfer','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','secondtransfererconnectedlinename','origtransfereraccountcode'];(function(_0x6a2857,_0x507f15){var _0x32be04=function(_0x27c744){while(--_0x27c744){_0x6a2857['push'](_0x6a2857['shift']());}};_0x32be04(++_0x507f15);}(_0x3290,0x17f));var _0x0329=function(_0x19b8e1,_0x4592e8){_0x19b8e1=_0x19b8e1-0x0;var _0x31d796=_0x3290[_0x19b8e1];return _0x31d796;};'use strict';var _=require('lodash');var util=require(_0x0329('0x0'));var utils=require(_0x0329('0x1'));function writeDB(_0x1a637c){utils[_0x0329('0x2')](util[_0x0329('0x3')](_0x0329('0x4'),_0x1a637c[_0x0329('0x5')]===_0x0329('0x6')?_0x1a637c[_0x0329('0x7')]:_0x1a637c[_0x0329('0x8')],_0x1a637c[_0x0329('0x5')]));utils['request']('CreateVoiceTransferReport',_0x1a637c);}exports['blindtransfer']=function(_0x58d345){try{utils[_0x0329('0x9')](util['format'](_0x0329('0xa'),_0x58d345[_0x0329('0x8')]),_0x58d345);utils[_0x0329('0x2')](util['format'](_0x0329('0xb'),_0x58d345[_0x0329('0x8')],_0x58d345[_0x0329('0xc')],_0x58d345[_0x0329('0xd')],_0x58d345['transfereecalleridnum'],_0x58d345['transfereecalleridname']));_0x58d345[_0x0329('0x5')]=_0x0329('0xe');writeDB(_0x58d345);}catch(_0x5c2fa2){utils[_0x0329('0xf')](util[_0x0329('0x3')](_0x0329('0xa'),_0x58d345['uniqueid']),_0x5c2fa2);}};exports[_0x0329('0x10')]=function(_0xf2f1e8){try{utils[_0x0329('0x9')](util[_0x0329('0x3')]('[%s][transfers][attendedtransfer]',_0xf2f1e8['origtransfereruniqueid']),_0xf2f1e8);utils[_0x0329('0x2')](util[_0x0329('0x3')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0xf2f1e8['origtransfereruniqueid'],_0xf2f1e8[_0x0329('0x11')],_0xf2f1e8[_0x0329('0x12')],_0xf2f1e8[_0x0329('0x13')],_0xf2f1e8[_0x0329('0x14')]));_0xf2f1e8=_[_0x0329('0x15')](_0xf2f1e8,{'transfererchannel':_0xf2f1e8[_0x0329('0x16')],'transferercalleridnum':_0xf2f1e8[_0x0329('0x11')],'transferercalleridname':_0xf2f1e8[_0x0329('0x12')],'transfererconnectedlinenum':_0xf2f1e8['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0xf2f1e8[_0x0329('0x17')],'transfereraccountcode':_0xf2f1e8[_0x0329('0x18')],'transferercontext':_0xf2f1e8[_0x0329('0x19')],'transfererexten':_0xf2f1e8[_0x0329('0x1a')],'transfererlinkedid':_0xf2f1e8[_0x0329('0x1b')],'context':_0xf2f1e8[_0x0329('0x1c')],'extension':_0xf2f1e8['origtransfererexten'],'type':_0x0329('0x6')});if(_['isNil'](_0xf2f1e8['transfereechannel'])){_0xf2f1e8=_[_0x0329('0x15')](_0xf2f1e8,{'transfereechannel':_0xf2f1e8[_0x0329('0x1d')],'transfereecalleridnum':_0xf2f1e8[_0x0329('0x13')],'transfereecalleridname':_0xf2f1e8[_0x0329('0x14')],'transfereeconnectedlinenum':_0xf2f1e8[_0x0329('0x1e')],'transfereeconnectedlinename':_0xf2f1e8[_0x0329('0x1f')],'transfereeaccountcode':_0xf2f1e8['transfertargetaccountcode'],'transfereecontext':_0xf2f1e8[_0x0329('0x20')],'transfereeexten':_0xf2f1e8[_0x0329('0x21')],'transfereelinkedid':_0xf2f1e8['transfertargetlinkedid']});}writeDB(_0xf2f1e8);}catch(_0x22638e){utils[_0x0329('0xf')](util['format']('[%s][transfers][attendedtransfer]',_0xf2f1e8[_0x0329('0x7')]),_0x22638e);}};
\ No newline at end of file
+var _0x367c=['transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','attendedtransfer','[%s][transfers][attendedtransfer]','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','origtransferercontext','origtransfererexten','isNil','assign','transfertargetchannel','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','error','util','./utils','info','format','type','attended','origtransfereruniqueid','request','debug','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','uniqueid','transferercalleridnum'];(function(_0x2f152b,_0x3eece3){var _0x3ebad5=function(_0x1302d2){while(--_0x1302d2){_0x2f152b['push'](_0x2f152b['shift']());}};_0x3ebad5(++_0x3eece3);}(_0x367c,0xcb));var _0xc367=function(_0x35e92e,_0x21581b){_0x35e92e=_0x35e92e-0x0;var _0x1205a8=_0x367c[_0x35e92e];return _0x1205a8;};'use strict';var _=require('lodash');var util=require(_0xc367('0x0'));var utils=require(_0xc367('0x1'));function writeDB(_0x11e095){utils[_0xc367('0x2')](util[_0xc367('0x3')]('[%s][transfers][writeDB]\x20type:%s',_0x11e095[_0xc367('0x4')]===_0xc367('0x5')?_0x11e095[_0xc367('0x6')]:_0x11e095['uniqueid'],_0x11e095[_0xc367('0x4')]));utils[_0xc367('0x7')]('CreateVoiceTransferReport',_0x11e095);}exports['blindtransfer']=function(_0x50769c){try{utils[_0xc367('0x8')](util[_0xc367('0x3')](_0xc367('0x9'),_0x50769c['uniqueid']),_0x50769c);utils[_0xc367('0x2')](util['format'](_0xc367('0xa'),_0x50769c[_0xc367('0xb')],_0x50769c[_0xc367('0xc')],_0x50769c[_0xc367('0xd')],_0x50769c[_0xc367('0xe')],_0x50769c[_0xc367('0xf')]));_0x50769c[_0xc367('0x4')]=_0xc367('0x10');writeDB(_0x50769c);}catch(_0x5b6b92){utils['error'](util[_0xc367('0x3')](_0xc367('0x9'),_0x50769c[_0xc367('0xb')]),_0x5b6b92);}};exports[_0xc367('0x11')]=function(_0x39d8fa){try{utils[_0xc367('0x8')](util['format'](_0xc367('0x12'),_0x39d8fa['origtransfereruniqueid']),_0x39d8fa);utils['info'](util[_0xc367('0x3')](_0xc367('0x13'),_0x39d8fa[_0xc367('0x6')],_0x39d8fa[_0xc367('0x14')],_0x39d8fa[_0xc367('0x15')],_0x39d8fa[_0xc367('0x16')],_0x39d8fa[_0xc367('0x17')]));_0x39d8fa=_['assign'](_0x39d8fa,{'transfererchannel':_0x39d8fa['origtransfererchannel'],'transferercalleridnum':_0x39d8fa['origtransferercalleridnum'],'transferercalleridname':_0x39d8fa[_0xc367('0x15')],'transfererconnectedlinenum':_0x39d8fa['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x39d8fa[_0xc367('0x18')],'transfereraccountcode':_0x39d8fa[_0xc367('0x19')],'transferercontext':_0x39d8fa[_0xc367('0x1a')],'transfererexten':_0x39d8fa['secondtransfererexten'],'transfererlinkedid':_0x39d8fa['origtransfererlinkedid'],'context':_0x39d8fa[_0xc367('0x1b')],'extension':_0x39d8fa[_0xc367('0x1c')],'type':'attended'});if(_[_0xc367('0x1d')](_0x39d8fa['transfereechannel'])){_0x39d8fa=_[_0xc367('0x1e')](_0x39d8fa,{'transfereechannel':_0x39d8fa[_0xc367('0x1f')],'transfereecalleridnum':_0x39d8fa['transfertargetcalleridnum'],'transfereecalleridname':_0x39d8fa[_0xc367('0x17')],'transfereeconnectedlinenum':_0x39d8fa['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x39d8fa[_0xc367('0x20')],'transfereeaccountcode':_0x39d8fa[_0xc367('0x21')],'transfereecontext':_0x39d8fa[_0xc367('0x22')],'transfereeexten':_0x39d8fa['transfertargetexten'],'transfereelinkedid':_0x39d8fa['transfertargetlinkedid']});}writeDB(_0x39d8fa);}catch(_0x14fbeb){utils[_0xc367('0x23')](util[_0xc367('0x3')](_0xc367('0x12'),_0x39d8fa[_0xc367('0x6')]),_0x14fbeb);}};
\ No newline at end of file
index 83b9572..ed52301 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fee=['interface','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','[utils][getUserByName]\x20name:%s\x20%s','notfound','[utils][getUserByName]','GetVoiceQueue','type','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','add','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','diffTime','diff','isAfter','isBefore','bluebird','jayson/promise','util','client','http','info','inspect','error','request','then','debug','[utils][request]\x20name:%s','catch','internal','name'];(function(_0x3e1f2a,_0x46917a){var _0x3009f9=function(_0x36ec81){while(--_0x36ec81){_0x3e1f2a['push'](_0x3e1f2a['shift']());}};_0x3009f9(++_0x46917a);}(_0x8fee,0x195));var _0xe8fe=function(_0x42bdad,_0x12836c){_0x42bdad=_0x42bdad-0x0;var _0x122626=_0x8fee[_0x42bdad];return _0x122626;};'use strict';var BPromise=require(_0xe8fe('0x0'));var jayson=require(_0xe8fe('0x1'));var moment=require('moment');var util=require(_0xe8fe('0x2'));var client=jayson[_0xe8fe('0x3')][_0xe8fe('0x4')]({'port':0x2329});var logger=require('../../config/logger')('xdr');exports[_0xe8fe('0x5')]=function(_0xc593fd,_0x1c247f){logger[_0xe8fe('0x5')](_0xc593fd,_0x1c247f?util[_0xe8fe('0x6')](_0x1c247f,{'showHidden':![],'depth':null}):'');};exports['debug']=function(_0x286e5c,_0x1e8de5){logger['debug'](_0x286e5c,_0x1e8de5?util[_0xe8fe('0x6')](_0x1e8de5,{'showHidden':![],'depth':null}):'');};exports[_0xe8fe('0x7')]=function(_0x3570a1,_0xa75af6){logger[_0xe8fe('0x7')](_0x3570a1,_0xa75af6?util[_0xe8fe('0x6')](_0xa75af6,{'showHidden':![],'depth':null}):'');};exports[_0xe8fe('0x8')]=function(_0x281150,_0x3f3ca5){return client[_0xe8fe('0x8')](_0x281150,{'body':_0x3f3ca5})[_0xe8fe('0x9')](function(_0x54613b){logger[_0xe8fe('0xa')](_0xe8fe('0xb'),_0x281150,_0x54613b?util[_0xe8fe('0x6')](_0x54613b,{'showHidden':![],'depth':null}):'');})[_0xe8fe('0xc')](function(_0x200aef){logger[_0xe8fe('0x7')](_0xe8fe('0xb'),_0x281150,_0x200aef?util[_0xe8fe('0x6')](_0x200aef,{'showHidden':![],'depth':null}):'');});};function getUser(_0x5ce79a){return client[_0xe8fe('0x8')]('GetUser',{'options':{'raw':!![],'attributes':['id',_0xe8fe('0xd'),_0xe8fe('0xe'),_0xe8fe('0xf')],'where':_0x5ce79a,'limit':0x1}})['then'](function(_0x22057e){logger[_0xe8fe('0xa')]('[utils][getUser]\x20where:%s',JSON['stringify'](_0x5ce79a),_0x22057e?util[_0xe8fe('0x6')](_0x22057e,{'showHidden':![],'depth':null}):'');return _0x22057e[_0xe8fe('0x10')][_0xe8fe('0x11')]?_0x22057e[_0xe8fe('0x10')][0x0]:null;});}exports[_0xe8fe('0x12')]=function(_0x1c2811){return new BPromise(function(_0x34747d,_0x1e6483){if(_0x1c2811){return getUser({'internal':_0x1c2811})['then'](function(_0x3b9098){logger[_0xe8fe('0x5')](_0xe8fe('0x13'),_0x1c2811,_0x3b9098?_0xe8fe('0x14'):'notfound');return _0x34747d(_0x3b9098);})[_0xe8fe('0xc')](function(_0x45274a){logger['error'](_0xe8fe('0x15'),_0x45274a?util[_0xe8fe('0x6')](_0x45274a,{'showHidden':![],'depth':null}):'');return _0x34747d(null);});}return _0x34747d(null);});};exports[_0xe8fe('0x16')]=function(_0x37e62c){return new BPromise(function(_0x27c655,_0x146448){if(_0x37e62c){return getUser({'interface':_0x37e62c})[_0xe8fe('0x9')](function(_0x5d5889){logger[_0xe8fe('0x5')](_0xe8fe('0x17'),_0x37e62c,_0x5d5889?_0xe8fe('0x14'):'notfound');return _0x27c655(_0x5d5889);})[_0xe8fe('0xc')](function(_0x242a54){logger['error'](_0xe8fe('0x18'),_0x242a54?util[_0xe8fe('0x6')](_0x242a54,{'showHidden':![],'depth':null}):'');return _0x27c655(null);});}return _0x27c655(null);});};exports['getUserByName']=function(_0x37ca04){return new BPromise(function(_0x2007d4,_0x15b57b){if(_0x37ca04){return getUser({'name':_0x37ca04})[_0xe8fe('0x9')](function(_0x17d8a7){logger[_0xe8fe('0x5')](_0xe8fe('0x19'),_0x37ca04,_0x17d8a7?_0xe8fe('0x14'):_0xe8fe('0x1a'));return _0x2007d4(_0x17d8a7);})[_0xe8fe('0xc')](function(_0x4744af){logger['error'](_0xe8fe('0x1b'),_0x4744af?util['inspect'](_0x4744af,{'showHidden':![],'depth':null}):'');return _0x2007d4(null);});}return _0x2007d4(null);});};exports['getVoiceQueueByName']=function(_0x18dc3d){return new BPromise(function(_0x5d9518,_0x373259){if(_0x18dc3d){return client[_0xe8fe('0x8')](_0xe8fe('0x1c'),{'options':{'raw':!![],'attributes':['id',_0xe8fe('0xe'),_0xe8fe('0x1d'),'acw',_0xe8fe('0x1e')],'where':{'name':_0x18dc3d},'limit':0x1}})[_0xe8fe('0x9')](function(_0x58d858){logger['debug'](_0xe8fe('0x1f'),_0x18dc3d,_0x58d858?util[_0xe8fe('0x6')](_0x58d858,{'showHidden':![],'depth':null}):'');logger[_0xe8fe('0x5')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x18dc3d,_0x58d858?'found':'notfound');return _0x5d9518(_0x58d858[_0xe8fe('0x10')][_0xe8fe('0x11')]?_0x58d858['result'][0x0]:null);})[_0xe8fe('0xc')](function(_0x1a93da){logger[_0xe8fe('0x7')]('[utils][getVoiceQueueByName]',_0x1a93da?util[_0xe8fe('0x6')](_0x1a93da,{'showHidden':![],'depth':null}):'');return _0x5d9518(null);});}return _0x5d9518(null);});};exports['addTime']=function(_0x453301,_0x55bd60){return moment(_0x453301)[_0xe8fe('0x20')](_0x55bd60,_0xe8fe('0x21'))[_0xe8fe('0x22')](_0xe8fe('0x23'));};exports[_0xe8fe('0x24')]=function(_0x2ee871,_0x283961){return moment(_0x2ee871)[_0xe8fe('0x25')](_0x283961,_0xe8fe('0x21'))[_0xe8fe('0x22')](_0xe8fe('0x23'));};exports[_0xe8fe('0x26')]=function(_0x87b172,_0x229488){return moment(_0x87b172)[_0xe8fe('0x27')](moment(_0x229488),'seconds');};exports['sumTime']=function(_0x58b368,_0x50d813){return parseInt(_0x58b368,0xa)+parseInt(_0x50d813,0xa);};exports['now']=function(){return moment()['format'](_0xe8fe('0x23'));};exports[_0xe8fe('0x28')]=function(_0x148ba8,_0x1778b6){if(_0x1778b6){return moment(_0x148ba8)[_0xe8fe('0x28')](_0x1778b6);}return!![];};exports[_0xe8fe('0x29')]=function(_0x2acce0,_0x17c196){if(_0x17c196){return moment(_0x2acce0)[_0xe8fe('0x29')](_0x17c196);}else if(_0x2acce0){return!![];}return![];};
\ No newline at end of file
+var _0x897a=['http','../../config/logger','xdr','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','catch','GetUser','name','interface','[utils][getUser]\x20where:%s','stringify','result','getUserByInternal','found','notfound','getUserByInterface','getUserByName','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s\x20%s','length','[utils][getVoiceQueueByName]','addTime','seconds','format','subtractTime','subtract','YYYY-MM-DD\x20HH:mm:ss','diffTime','diff','sumTime','now','isAfter','isBefore','bluebird','util','client'];(function(_0xd2a856,_0x5caa15){var _0x197c81=function(_0x1bb8f6){while(--_0x1bb8f6){_0xd2a856['push'](_0xd2a856['shift']());}};_0x197c81(++_0x5caa15);}(_0x897a,0xe3));var _0xa897=function(_0x167e0f,_0x2edfe7){_0x167e0f=_0x167e0f-0x0;var _0x17c99c=_0x897a[_0x167e0f];return _0x17c99c;};'use strict';var BPromise=require(_0xa897('0x0'));var jayson=require('jayson/promise');var moment=require('moment');var util=require(_0xa897('0x1'));var client=jayson[_0xa897('0x2')][_0xa897('0x3')]({'port':0x2329});var logger=require(_0xa897('0x4'))(_0xa897('0x5'));exports['info']=function(_0x3d25fb,_0x12a94f){logger[_0xa897('0x6')](_0x3d25fb,_0x12a94f?util[_0xa897('0x7')](_0x12a94f,{'showHidden':![],'depth':null}):'');};exports[_0xa897('0x8')]=function(_0x41d2d2,_0x468462){logger[_0xa897('0x8')](_0x41d2d2,_0x468462?util[_0xa897('0x7')](_0x468462,{'showHidden':![],'depth':null}):'');};exports[_0xa897('0x9')]=function(_0x29ee29,_0x104165){logger['error'](_0x29ee29,_0x104165?util[_0xa897('0x7')](_0x104165,{'showHidden':![],'depth':null}):'');};exports['request']=function(_0x280281,_0x429461){return client[_0xa897('0xa')](_0x280281,{'body':_0x429461})[_0xa897('0xb')](function(_0x23a102){logger[_0xa897('0x8')](_0xa897('0xc'),_0x280281,_0x23a102?util['inspect'](_0x23a102,{'showHidden':![],'depth':null}):'');})[_0xa897('0xd')](function(_0x4724e9){logger[_0xa897('0x9')](_0xa897('0xc'),_0x280281,_0x4724e9?util[_0xa897('0x7')](_0x4724e9,{'showHidden':![],'depth':null}):'');});};function getUser(_0x11e790){return client[_0xa897('0xa')](_0xa897('0xe'),{'options':{'raw':!![],'attributes':['id','internal',_0xa897('0xf'),_0xa897('0x10')],'where':_0x11e790,'limit':0x1}})['then'](function(_0x42a860){logger[_0xa897('0x8')](_0xa897('0x11'),JSON[_0xa897('0x12')](_0x11e790),_0x42a860?util[_0xa897('0x7')](_0x42a860,{'showHidden':![],'depth':null}):'');return _0x42a860[_0xa897('0x13')]['length']?_0x42a860[_0xa897('0x13')][0x0]:null;});}exports[_0xa897('0x14')]=function(_0x5345dc){return new BPromise(function(_0x3d2179,_0x3e2f35){if(_0x5345dc){return getUser({'internal':_0x5345dc})['then'](function(_0x2d1d80){logger[_0xa897('0x6')]('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x5345dc,_0x2d1d80?_0xa897('0x15'):_0xa897('0x16'));return _0x3d2179(_0x2d1d80);})[_0xa897('0xd')](function(_0x2ba7b3){logger['error']('[utils][getUserByInternal]',_0x2ba7b3?util[_0xa897('0x7')](_0x2ba7b3,{'showHidden':![],'depth':null}):'');return _0x3d2179(null);});}return _0x3d2179(null);});};exports[_0xa897('0x17')]=function(_0x2d33d1){return new BPromise(function(_0x2d0e4f,_0x2abced){if(_0x2d33d1){return getUser({'interface':_0x2d33d1})['then'](function(_0x333aa6){logger[_0xa897('0x6')]('[utils][getUserByInterface]\x20interface:%s\x20%s',_0x2d33d1,_0x333aa6?_0xa897('0x15'):_0xa897('0x16'));return _0x2d0e4f(_0x333aa6);})[_0xa897('0xd')](function(_0x4bacf9){logger[_0xa897('0x9')]('[utils][getUserByInterface]',_0x4bacf9?util[_0xa897('0x7')](_0x4bacf9,{'showHidden':![],'depth':null}):'');return _0x2d0e4f(null);});}return _0x2d0e4f(null);});};exports[_0xa897('0x18')]=function(_0xe2acf7){return new BPromise(function(_0x109bb7,_0x1996bd){if(_0xe2acf7){return getUser({'name':_0xe2acf7})[_0xa897('0xb')](function(_0x4be9d6){logger[_0xa897('0x6')]('[utils][getUserByName]\x20name:%s\x20%s',_0xe2acf7,_0x4be9d6?_0xa897('0x15'):_0xa897('0x16'));return _0x109bb7(_0x4be9d6);})[_0xa897('0xd')](function(_0xd7f9ea){logger[_0xa897('0x9')](_0xa897('0x19'),_0xd7f9ea?util[_0xa897('0x7')](_0xd7f9ea,{'showHidden':![],'depth':null}):'');return _0x109bb7(null);});}return _0x109bb7(null);});};exports[_0xa897('0x1a')]=function(_0x1e2dd8){return new BPromise(function(_0xbcd18a,_0x9de22a){if(_0x1e2dd8){return client[_0xa897('0xa')](_0xa897('0x1b'),{'options':{'raw':!![],'attributes':['id',_0xa897('0xf'),_0xa897('0x1c'),_0xa897('0x1d'),_0xa897('0x1e')],'where':{'name':_0x1e2dd8},'limit':0x1}})[_0xa897('0xb')](function(_0x467577){logger[_0xa897('0x8')]('[utils][getVoiceQueueByName]\x20name:%s',_0x1e2dd8,_0x467577?util[_0xa897('0x7')](_0x467577,{'showHidden':![],'depth':null}):'');logger[_0xa897('0x6')](_0xa897('0x1f'),_0x1e2dd8,_0x467577?_0xa897('0x15'):'notfound');return _0xbcd18a(_0x467577[_0xa897('0x13')][_0xa897('0x20')]?_0x467577[_0xa897('0x13')][0x0]:null);})[_0xa897('0xd')](function(_0x2580b3){logger[_0xa897('0x9')](_0xa897('0x21'),_0x2580b3?util[_0xa897('0x7')](_0x2580b3,{'showHidden':![],'depth':null}):'');return _0xbcd18a(null);});}return _0xbcd18a(null);});};exports[_0xa897('0x22')]=function(_0x271227,_0x26bf03){return moment(_0x271227)['add'](_0x26bf03,_0xa897('0x23'))[_0xa897('0x24')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0xa897('0x25')]=function(_0x3d8daa,_0x4d561a){return moment(_0x3d8daa)[_0xa897('0x26')](_0x4d561a,_0xa897('0x23'))[_0xa897('0x24')](_0xa897('0x27'));};exports[_0xa897('0x28')]=function(_0x423962,_0x532c26){return moment(_0x423962)[_0xa897('0x29')](moment(_0x532c26),_0xa897('0x23'));};exports[_0xa897('0x2a')]=function(_0x569d82,_0x56ebbe){return parseInt(_0x569d82,0xa)+parseInt(_0x56ebbe,0xa);};exports[_0xa897('0x2b')]=function(){return moment()[_0xa897('0x24')](_0xa897('0x27'));};exports[_0xa897('0x2c')]=function(_0x55fe8f,_0x210cce){if(_0x210cce){return moment(_0x55fe8f)['isAfter'](_0x210cce);}return!![];};exports[_0xa897('0x2d')]=function(_0x4c3ad1,_0x30ba95){if(_0x30ba95){return moment(_0x4c3ad1)['isBefore'](_0x30ba95);}else if(_0x4c3ad1){return!![];}return![];};
\ No newline at end of file
index 9594e0a..3f47ab0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf999=['auth','set','client-side-logger','use','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','\x20body=%s','body','method','headers','x-forwarded-for','connection','remoteAddress','statusCode','responseTime','inspect','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','format','name','agent_name','test','url','setupLoggers','fs-extra','lodash','express-winston','./loggers','./safe-template','safeTemplate','./mask-sensitive-data','/var','log','join','client','role','ensureDir','then','catch','user','no-user','error','api'];(function(_0x3c148f,_0x3eafcf){var _0x4d956a=function(_0x4a98b4){while(--_0x4a98b4){_0x3c148f['push'](_0x3c148f['shift']());}};_0x4d956a(++_0x3eafcf);}(_0xf999,0xa1));var _0x9f99=function(_0x2dc5e8,_0x207265){_0x2dc5e8=_0x2dc5e8-0x0;var _0x11c2f1=_0xf999[_0x2dc5e8];return _0x11c2f1;};var fs=require(_0x9f99('0x0'));var _=require(_0x9f99('0x1'));var ewinston=require(_0x9f99('0x2'));var path=require('path');var util=require('util');var fileLogger=require(_0x9f99('0x3'))['fileLogger'];var safeTemplate=require(_0x9f99('0x4'))[_0x9f99('0x5')];var maskSensitiveData=require(_0x9f99('0x6'))['maskSensitiveData'];function ClientSideLogger(){function _0x189391(_0x432fbf){var _0x4a2ec9=path['join'](_0x9f99('0x7'),_0x9f99('0x8'),'xcally');var _0x207b1c=path[_0x9f99('0x9')](_0x9f99('0xa'),_0x432fbf[_0x9f99('0xb')]+'-'+_0x432fbf['name']);return fs[_0x9f99('0xc')](path[_0x9f99('0x9')](_0x4a2ec9,_0x207b1c))[_0x9f99('0xd')](function(){var _0xc17c56=fileLogger(_0x9f99('0xa'),path['join'](_0x4a2ec9,_0x207b1c));return _0xc17c56;})[_0x9f99('0xe')](function(_0x246094){throw _0x246094;});}this['log']=function(_0x5d4bb1,_0x3b25a,_0x51b478,_0x590c4d){return _0x189391(_0x5d4bb1[_0x9f99('0xf')])[_0x9f99('0xd')](function(_0x472047){var _0x58595d=_0x472047[_0x3b25a];return _0x58595d;})[_0x9f99('0xd')](function(_0xd0382e){var _0x42a7f8=_0x5d4bb1['user']?_0x5d4bb1[_0x9f99('0xf')]['id']:_0x9f99('0x10');var _0x2c0af6=_0x590c4d['data'];var _0x5ad640=_0x590c4d['timestamp'];var _0x3856f7=new Date(Number(_0x5ad640));return _0xd0382e(_0x42a7f8,_0x3856f7,_0x51b478,_0x2c0af6);})[_0x9f99('0xe')](function(_0x21679e){fileLogger(_0x9f99('0xa'))[_0x9f99('0x11')](_0x21679e);});};}function setupLoggers(_0x38c417){return new Promise(function(_0x3e7934){var _0x55600=new ClientSideLogger();var _0x5a6528=fileLogger(_0x9f99('0x12'));var _0xaa97fe=fileLogger(_0x9f99('0x13'));_0x38c417[_0x9f99('0x14')](_0x9f99('0x15'),_0x55600);_0x38c417[_0x9f99('0x16')](ewinston['logger']({'winstonInstance':_0x5a6528,'meta':![],'statusLevels':!![],'msg':function(_0x3294c3,_0x3c5d5e){var _0x4484c3=_0x9f99('0x17');if(!_[_0x9f99('0x18')](_0x3294c3['body'])){_0x4484c3+=_0x9f99('0x19');var _0x4b2608=_0x3294c3[_0x9f99('0x1a')];maskSensitiveData(_0x4b2608);}return safeTemplate(util['format'](_0x4484c3,_0x3294c3[_0x9f99('0x1b')],_0x3294c3[_0x9f99('0x1c')][_0x9f99('0x1d')]?_0x3294c3[_0x9f99('0x1c')][_0x9f99('0x1d')]:_0x3294c3[_0x9f99('0x1e')][_0x9f99('0x1f')]||_0x3294c3['ip'],_0x3294c3['url'],_0x3c5d5e[_0x9f99('0x20')],_0x3c5d5e[_0x9f99('0x21')],_0x3294c3[_0x9f99('0xf')]?_0x3294c3[_0x9f99('0xf')]['id']:null,_0x3294c3[_0x9f99('0xf')]?_0x3294c3[_0x9f99('0xf')]['name']:null,_0x3294c3[_0x9f99('0xf')]?_0x3294c3[_0x9f99('0xf')]['role']:null,_0x4b2608?util[_0x9f99('0x22')](_0x4b2608,![],null):''));}}));_0x38c417['use'](ewinston[_0x9f99('0x23')]({'winstonInstance':_0xaa97fe,'meta':![],'statusLevels':!![],'msg':function(_0x425bbb,_0x27ed37){var _0xad23db=_0x9f99('0x24');if(_0x425bbb[_0x9f99('0x1a')]&&_0x425bbb[_0x9f99('0x1a')]['device']&&_0x425bbb['body'][_0x9f99('0x25')]){_0xad23db=_0x9f99('0x26');}return util[_0x9f99('0x27')](_0xad23db,_0x425bbb['method'],_0x425bbb[_0x9f99('0x1c')][_0x9f99('0x1d')]?_0x425bbb['headers'][_0x9f99('0x1d')]:_0x425bbb['connection'][_0x9f99('0x1f')]||_0x425bbb['ip'],_0x425bbb['url'],_0x27ed37[_0x9f99('0x20')],_0x27ed37['responseTime'],_0x425bbb['user']?_0x425bbb['user']['id']:null,_0x425bbb[_0x9f99('0xf')]?_0x425bbb['user'][_0x9f99('0x28')]:null,_0x425bbb[_0x9f99('0xf')]?_0x425bbb[_0x9f99('0xf')][_0x9f99('0xb')]:null,_0x425bbb[_0x9f99('0x1a')]&&_0x425bbb['body']['device']?_0x425bbb[_0x9f99('0x1a')]['device']:'other',_0x425bbb[_0x9f99('0x1a')]&&_0x425bbb[_0x9f99('0x1a')][_0x9f99('0x25')]?_0x425bbb[_0x9f99('0x1a')][_0x9f99('0x25')]:'',_0x425bbb[_0x9f99('0x1a')]&&_0x425bbb[_0x9f99('0x1a')][_0x9f99('0x29')]?_0x425bbb[_0x9f99('0x1a')][_0x9f99('0x29')]:'');},'ignoreRoute':function(_0x184951){var _0x1d0c87=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x1d0c87[_0x9f99('0x2a')](_0x184951[_0x9f99('0x2b')]);}}));return _0x3e7934();});}exports[_0x9f99('0x2c')]=setupLoggers;
\ No newline at end of file
+var _0xd76a=['%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','connection','url','other','agent_name','test','fs-extra','lodash','express-winston','util','./loggers','fileLogger','./safe-template','safeTemplate','maskSensitiveData','/var','log','xcally','join','client','role','name','ensureDir','catch','then','user','no-user','data','error','api','auth','set','client-side-logger','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','isEmpty','body','\x20body=%s','format','method','headers','x-forwarded-for','remoteAddress','statusCode','responseTime','inspect'];(function(_0x2a4095,_0x13f4f0){var _0x52eeab=function(_0x3950dd){while(--_0x3950dd){_0x2a4095['push'](_0x2a4095['shift']());}};_0x52eeab(++_0x13f4f0);}(_0xd76a,0x12e));var _0xad76=function(_0x453800,_0x557459){_0x453800=_0x453800-0x0;var _0x35e603=_0xd76a[_0x453800];return _0x35e603;};var fs=require(_0xad76('0x0'));var _=require(_0xad76('0x1'));var ewinston=require(_0xad76('0x2'));var path=require('path');var util=require(_0xad76('0x3'));var fileLogger=require(_0xad76('0x4'))[_0xad76('0x5')];var safeTemplate=require(_0xad76('0x6'))[_0xad76('0x7')];var maskSensitiveData=require('./mask-sensitive-data')[_0xad76('0x8')];function ClientSideLogger(){function _0x5c538c(_0x3f2b84){var _0x4e5fb7=path['join'](_0xad76('0x9'),_0xad76('0xa'),_0xad76('0xb'));var _0x974a79=path[_0xad76('0xc')](_0xad76('0xd'),_0x3f2b84[_0xad76('0xe')]+'-'+_0x3f2b84[_0xad76('0xf')]);return fs[_0xad76('0x10')](path[_0xad76('0xc')](_0x4e5fb7,_0x974a79))['then'](function(){var _0x29f92b=fileLogger(_0xad76('0xd'),path[_0xad76('0xc')](_0x4e5fb7,_0x974a79));return _0x29f92b;})[_0xad76('0x11')](function(_0x1d100a){throw _0x1d100a;});}this['log']=function(_0x3d52c1,_0x3864d3,_0x4ecfae,_0x830a99){return _0x5c538c(_0x3d52c1['user'])[_0xad76('0x12')](function(_0x217bc9){var _0x197084=_0x217bc9[_0x3864d3];return _0x197084;})[_0xad76('0x12')](function(_0x730bc2){var _0x58789f=_0x3d52c1['user']?_0x3d52c1[_0xad76('0x13')]['id']:_0xad76('0x14');var _0x334cc2=_0x830a99[_0xad76('0x15')];var _0x1f4546=_0x830a99['timestamp'];var _0x26232a=new Date(Number(_0x1f4546));return _0x730bc2(_0x58789f,_0x26232a,_0x4ecfae,_0x334cc2);})[_0xad76('0x11')](function(_0x2a1a70){fileLogger(_0xad76('0xd'))[_0xad76('0x16')](_0x2a1a70);});};}function setupLoggers(_0x55cb52){return new Promise(function(_0x5dc4a7){var _0x5e5079=new ClientSideLogger();var _0x11e03a=fileLogger(_0xad76('0x17'));var _0x2fd6ed=fileLogger(_0xad76('0x18'));_0x55cb52[_0xad76('0x19')](_0xad76('0x1a'),_0x5e5079);_0x55cb52[_0xad76('0x1b')](ewinston[_0xad76('0x1c')]({'winstonInstance':_0x11e03a,'meta':![],'statusLevels':!![],'msg':function(_0x6eaf4,_0x52d56f){var _0x47a6e1=_0xad76('0x1d');if(!_[_0xad76('0x1e')](_0x6eaf4[_0xad76('0x1f')])){_0x47a6e1+=_0xad76('0x20');var _0x43ddd1=_0x6eaf4['body'];maskSensitiveData(_0x43ddd1);}return safeTemplate(util[_0xad76('0x21')](_0x47a6e1,_0x6eaf4[_0xad76('0x22')],_0x6eaf4[_0xad76('0x23')]['x-forwarded-for']?_0x6eaf4[_0xad76('0x23')][_0xad76('0x24')]:_0x6eaf4['connection'][_0xad76('0x25')]||_0x6eaf4['ip'],_0x6eaf4['url'],_0x52d56f[_0xad76('0x26')],_0x52d56f[_0xad76('0x27')],_0x6eaf4[_0xad76('0x13')]?_0x6eaf4[_0xad76('0x13')]['id']:null,_0x6eaf4[_0xad76('0x13')]?_0x6eaf4[_0xad76('0x13')][_0xad76('0xf')]:null,_0x6eaf4[_0xad76('0x13')]?_0x6eaf4[_0xad76('0x13')][_0xad76('0xe')]:null,_0x43ddd1?util[_0xad76('0x28')](_0x43ddd1,![],null):''));}}));_0x55cb52[_0xad76('0x1b')](ewinston[_0xad76('0x1c')]({'winstonInstance':_0x2fd6ed,'meta':![],'statusLevels':!![],'msg':function(_0x3ae152,_0x2c1d5d){var _0x1bbd7e=_0xad76('0x29');if(_0x3ae152[_0xad76('0x1f')]&&_0x3ae152[_0xad76('0x1f')][_0xad76('0x2a')]&&_0x3ae152[_0xad76('0x1f')][_0xad76('0x2b')]){_0x1bbd7e='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util['format'](_0x1bbd7e,_0x3ae152[_0xad76('0x22')],_0x3ae152[_0xad76('0x23')][_0xad76('0x24')]?_0x3ae152[_0xad76('0x23')]['x-forwarded-for']:_0x3ae152[_0xad76('0x2c')][_0xad76('0x25')]||_0x3ae152['ip'],_0x3ae152[_0xad76('0x2d')],_0x2c1d5d[_0xad76('0x26')],_0x2c1d5d[_0xad76('0x27')],_0x3ae152[_0xad76('0x13')]?_0x3ae152[_0xad76('0x13')]['id']:null,_0x3ae152[_0xad76('0x13')]?_0x3ae152[_0xad76('0x13')]['name']:null,_0x3ae152['user']?_0x3ae152[_0xad76('0x13')][_0xad76('0xe')]:null,_0x3ae152[_0xad76('0x1f')]&&_0x3ae152['body'][_0xad76('0x2a')]?_0x3ae152['body'][_0xad76('0x2a')]:_0xad76('0x2e'),_0x3ae152[_0xad76('0x1f')]&&_0x3ae152['body'][_0xad76('0x2b')]?_0x3ae152['body'][_0xad76('0x2b')]:'',_0x3ae152[_0xad76('0x1f')]&&_0x3ae152[_0xad76('0x1f')][_0xad76('0x2f')]?_0x3ae152[_0xad76('0x1f')][_0xad76('0x2f')]:'');},'ignoreRoute':function(_0x57ff60){var _0x4a1974=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x4a1974[_0xad76('0x30')](_0x57ff60[_0xad76('0x2d')]);}}));return _0x5dc4a7();});}exports['setupLoggers']=setupLoggers;
\ No newline at end of file
index 7e1d50e..d0a01e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0749=['hours','minutes','isBefore','startOf','day','isBetween','ddd','date','max','min','domCompare','format','MMM','monthCompare','guess','test','isMoment','padStart','length','lodash','moment-timezone','source','join','Interval\x20string\x20not\x20valid','isValid','split','map','locale','toLowerCase','slice','concat','exports','circularDoWInterval','monthsShort','indexOf','circularMonthInterval','clone'];(function(_0x443b90,_0x5e53de){var _0x529e5e=function(_0x2dcedd){while(--_0x2dcedd){_0x443b90['push'](_0x443b90['shift']());}};_0x529e5e(++_0x5e53de);}(_0x0749,0x1aa));var _0x9074=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x0749[_0x126558];return _0x1f6d14;};var _=require(_0x9074('0x0'));var moment=require(_0x9074('0x1'));var timeRx=/(\*|(\d{1,2}:\d{1,2})(-(\d{1,2}:\d{1,2}))?)/;var dowRx=/(\*|((sun|mon|tue|wed|thu|fri|sat)(-(sun|mon|tue|wed|thu|fri|sat))?))/;var domRx=/(\*|(\d{1,2})(-(\d{1,2}))?)/;var moyRx=/(\*|(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))?)/;var globalRx=[timeRx,dowRx,domRx,moyRx]['map'](function(_0x287418){return _0x287418[_0x9074('0x2')];})[_0x9074('0x3')](',');var validateRx=new RegExp('^'+globalRx+'$');var EINVALID_STRING=_0x9074('0x4');var EINVALID_DATE='Date\x20not\x20valid';function throwIfDateNotValid(_0x4d4600){if(!_0x4d4600[_0x9074('0x5')]()){throw new Error(EINVALID_DATE);}}function extractTime(_0x47378d){var _0x15990e=_0x47378d[_0x9074('0x6')](':')[_0x9074('0x7')](function(_0x2e9d76){return parseInt(_0x2e9d76,0xa);});var _0x1b7f87=_0x15990e[0x0];var _0x3518aa=_0x15990e[0x1];if(_0x1b7f87<0x0||_0x1b7f87>0x17||_0x3518aa<0x0||_0x3518aa>0x3b){throw new Error(EINVALID_DATE);}return[_0x1b7f87,_0x3518aa];}function circularDoWInterval(_0x559442,_0x40e36d){if(_0x559442===_0x40e36d){return[_0x559442];}else{var _0x1dfcc2=moment[_0x9074('0x8')]();moment[_0x9074('0x8')]('en');var _0x57bae6=moment['weekdaysShort']()[_0x9074('0x7')](function(_0x43941a){return _0x43941a[_0x9074('0x9')]();});moment[_0x9074('0x8')](_0x1dfcc2);var _0x5117d1=_0x57bae6['indexOf'](_0x559442);var _0x37a17d=_0x57bae6['indexOf'](_0x40e36d);if(_0x37a17d>_0x5117d1){return _0x57bae6[_0x9074('0xa')](_0x5117d1,_0x37a17d+0x1);}else{var _0x2023a2=_0x57bae6['slice'](0x0,_0x37a17d+0x1);var _0x50df97=_0x57bae6[_0x9074('0xa')](_0x5117d1);return _0x50df97[_0x9074('0xb')](_0x2023a2);}}}module[_0x9074('0xc')][_0x9074('0xd')]=circularDoWInterval;function circularMonthInterval(_0x1436f3,_0x475e29){if(_0x1436f3===_0x475e29){return[_0x1436f3];}else{var _0x5929da=moment['locale']();moment[_0x9074('0x8')]('en');var _0x2ce8d5=moment[_0x9074('0xe')]()['map'](function(_0x224680){return _0x224680[_0x9074('0x9')]();});moment[_0x9074('0x8')](_0x5929da);var _0x3f61f6=_0x2ce8d5[_0x9074('0xf')](_0x1436f3);var _0x2c43c8=_0x2ce8d5[_0x9074('0xf')](_0x475e29);if(_0x2c43c8>_0x3f61f6){return _0x2ce8d5[_0x9074('0xa')](_0x3f61f6,_0x2c43c8+0x1);}else{var _0x5605ac=_0x2ce8d5[_0x9074('0xa')](0x0,_0x2c43c8+0x1);var _0x503f5f=_0x2ce8d5[_0x9074('0xa')](_0x3f61f6);return _0x503f5f[_0x9074('0xb')](_0x5605ac);}}}module['exports'][_0x9074('0x10')]=circularMonthInterval;function parseDom(_0x1ef2a1){var _0x237b3a=parseInt(_0x1ef2a1,0xa);if(_0x237b3a<0x1||_0x237b3a>0x1f){throw new Error(EINVALID_DATE);}return _0x237b3a;}function timeCompare(_0x12873c,_0x549dcf,_0xf8ebc4){var _0x18c9f0=_0x12873c[_0x9074('0x11')]();var _0x4e0f0e=extractTime(_0x549dcf);var _0x2befbf=_0x4e0f0e[0x0];var _0x4198b5=_0x4e0f0e[0x1];var _0x48fa06=_0x12873c[_0x9074('0x11')]()[_0x9074('0x12')](_0x2befbf)[_0x9074('0x13')](_0x4198b5);throwIfDateNotValid(_0x48fa06);var _0x21ea6e=extractTime(_0xf8ebc4);var _0x45025b=_0x21ea6e[0x0];var _0xaa8a69=_0x21ea6e[0x1];var _0x3de678=_0x12873c[_0x9074('0x11')]()[_0x9074('0x12')](_0x45025b)[_0x9074('0x13')](_0xaa8a69);throwIfDateNotValid(_0x3de678);if(_0x3de678[_0x9074('0x14')](_0x48fa06)){var _0x4445af=_0x18c9f0[_0x9074('0x11')]()[_0x9074('0x15')]('day');var _0x1c5150=_0x18c9f0[_0x9074('0x11')]()['endOf'](_0x9074('0x16'));return _0x18c9f0['isBetween'](_0x48fa06,_0x1c5150,undefined,'[]')||_0x18c9f0[_0x9074('0x17')](_0x4445af,_0x3de678,undefined,'[]');}else{return _0x18c9f0['isBetween'](_0x48fa06,_0x3de678,undefined,'[]');}}module[_0x9074('0xc')]['timeCompare']=timeCompare;function dowCompare(_0x1b9269,_0x1953cb,_0x752db0){var _0x3f75b0=_0x1b9269[_0x9074('0x8')]('en')['format'](_0x9074('0x18'))[_0x9074('0x9')]();return circularDoWInterval(_0x1953cb,_0x752db0)['includes'](_0x3f75b0);}module[_0x9074('0xc')]['dowCompare']=dowCompare;function domCompare(_0x1f0935,_0x428c0c,_0x556351){var _0x4ca963=_0x1f0935[_0x9074('0x19')]();if(_0x428c0c===_0x556351){return _0x4ca963===_0x428c0c;}else{var _0x145190=_0x1f0935['daysInMonth']();var _0xb334f9=_0x428c0c<_0x556351;let _0x2e9016=![];var _0x1f4841=0x0;var _0x394ba7=0x0;if(_0xb334f9){_0x1f4841=Math[_0x9074('0x1a')](0x1,_0x428c0c);_0x394ba7=Math[_0x9074('0x1b')](_0x556351,_0x145190);_0x2e9016=_0x4ca963>=_0x1f4841&&_0x4ca963<=_0x394ba7;}else{_0x1f4841=Math['min'](_0x428c0c,_0x145190);_0x394ba7=Math[_0x9074('0x1a')](0x1,_0x556351);_0x2e9016=_0x4ca963>=_0x1f4841||_0x4ca963<=_0x394ba7;}return _0x2e9016;}}module['exports'][_0x9074('0x1c')]=domCompare;function monthCompare(_0x434c1f,_0x21de92,_0xe590d4){var _0x170dda=_0x434c1f[_0x9074('0x8')]('en')[_0x9074('0x1d')](_0x9074('0x1e'))[_0x9074('0x9')]();return circularMonthInterval(_0x21de92,_0xe590d4)['includes'](_0x170dda);}module[_0x9074('0xc')][_0x9074('0x1f')]=monthCompare;function iftime(_0x659e4c,_0x326ee8=moment['tz'][_0x9074('0x20')](),_0x2082d5=moment()){if(!validateRx[_0x9074('0x21')](_0x659e4c)){throw new Error(EINVALID_STRING);}else{var _0x147607=(moment[_0x9074('0x22')](_0x2082d5)?_0x2082d5[_0x9074('0x11')]():moment(_0x2082d5))['tz'](_0x326ee8)[_0x9074('0x8')]('en');throwIfDateNotValid(_0x147607);var _0x842c97=_0x659e4c[_0x9074('0x6')](',');var _0x25e96f=_0x842c97[0x0];var _0x588b0f=_0x842c97[0x1];var _0x3d5fdc=_0x842c97[0x2];var _0x152c09=_0x842c97[0x3];let _0x487be3=!![];if(_0x25e96f!=='*'){var _0x12bb83=_0x25e96f[_0x9074('0x6')]('-');var _0x1e6ce6=_[_0x9074('0x23')](_0x12bb83[0x0],0x5,'0');var _0x470f58=_0x12bb83[_0x9074('0x24')]===0x2?_[_0x9074('0x23')](_0x12bb83[0x1],0x5,'0'):_0x1e6ce6;_0x487be3=timeCompare(_0x147607,_0x1e6ce6,_0x470f58);}let _0x3d11c2=!![];if(_0x588b0f!=='*'){var _0x402872=_0x588b0f[_0x9074('0x6')]('-');var _0x1aa62a=_0x402872[0x0];var _0xbba806=_0x402872['length']===0x2?_0x402872[0x1]:_0x1aa62a;_0x3d11c2=dowCompare(_0x147607,_0x1aa62a,_0xbba806);}let _0x3dd63d=!![];if(_0x3d5fdc!=='*'){var _0x86579a=_0x3d5fdc['split']('-');var _0x159bfe=parseDom(_0x86579a[0x0]);var _0x23dfd3=_0x86579a[_0x9074('0x24')]===0x2?parseDom(_0x86579a[0x1]):_0x159bfe;_0x3dd63d=domCompare(_0x147607,_0x159bfe,_0x23dfd3);}let _0x219812=!![];if(_0x152c09!=='*'){var _0x278fd4=_0x152c09[_0x9074('0x6')]('-');var _0x21931c=_0x278fd4[0x0];var _0x38ed70=_0x278fd4[_0x9074('0x24')]===0x2?_0x278fd4[0x1]:_0x278fd4[0x0];_0x219812=monthCompare(_0x147607,_0x21931c,_0x38ed70);}return _0x487be3&&_0x3d11c2&&_0x3dd63d&&_0x219812;}}module[_0x9074('0xc')]['iftime']=iftime;
\ No newline at end of file
+var _0xa83e=['max','domCompare','MMM','monthCompare','guess','test','isMoment','padStart','length','iftime','moment-timezone','map','source','Date\x20not\x20valid','isValid','split','locale','weekdaysShort','toLowerCase','indexOf','slice','concat','exports','circularDoWInterval','monthsShort','clone','hours','minutes','isBefore','day','endOf','isBetween','format','ddd','date','daysInMonth'];(function(_0xee0de7,_0x262cc4){var _0x4b8e63=function(_0x58f515){while(--_0x58f515){_0xee0de7['push'](_0xee0de7['shift']());}};_0x4b8e63(++_0x262cc4);}(_0xa83e,0x172));var _0xea83=function(_0x57ee1d,_0x54111b){_0x57ee1d=_0x57ee1d-0x0;var _0x12a933=_0xa83e[_0x57ee1d];return _0x12a933;};var _=require('lodash');var moment=require(_0xea83('0x0'));var timeRx=/(\*|(\d{1,2}:\d{1,2})(-(\d{1,2}:\d{1,2}))?)/;var dowRx=/(\*|((sun|mon|tue|wed|thu|fri|sat)(-(sun|mon|tue|wed|thu|fri|sat))?))/;var domRx=/(\*|(\d{1,2})(-(\d{1,2}))?)/;var moyRx=/(\*|(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)(-(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec))?)/;var globalRx=[timeRx,dowRx,domRx,moyRx][_0xea83('0x1')](function(_0x9e3ee9){return _0x9e3ee9[_0xea83('0x2')];})['join'](',');var validateRx=new RegExp('^'+globalRx+'$');var EINVALID_STRING='Interval\x20string\x20not\x20valid';var EINVALID_DATE=_0xea83('0x3');function throwIfDateNotValid(_0x9490d6){if(!_0x9490d6[_0xea83('0x4')]()){throw new Error(EINVALID_DATE);}}function extractTime(_0x383a2c){var _0x1b6779=_0x383a2c[_0xea83('0x5')](':')[_0xea83('0x1')](function(_0x23bd01){return parseInt(_0x23bd01,0xa);});var _0x5a4792=_0x1b6779[0x0];var _0x3ed391=_0x1b6779[0x1];if(_0x5a4792<0x0||_0x5a4792>0x17||_0x3ed391<0x0||_0x3ed391>0x3b){throw new Error(EINVALID_DATE);}return[_0x5a4792,_0x3ed391];}function circularDoWInterval(_0x1c22af,_0x221718){if(_0x1c22af===_0x221718){return[_0x1c22af];}else{var _0x4f5422=moment[_0xea83('0x6')]();moment[_0xea83('0x6')]('en');var _0x58f2cf=moment[_0xea83('0x7')]()[_0xea83('0x1')](function(_0x32280e){return _0x32280e[_0xea83('0x8')]();});moment[_0xea83('0x6')](_0x4f5422);var _0x3aaec2=_0x58f2cf[_0xea83('0x9')](_0x1c22af);var _0x48767a=_0x58f2cf[_0xea83('0x9')](_0x221718);if(_0x48767a>_0x3aaec2){return _0x58f2cf[_0xea83('0xa')](_0x3aaec2,_0x48767a+0x1);}else{var _0x306869=_0x58f2cf[_0xea83('0xa')](0x0,_0x48767a+0x1);var _0x28502c=_0x58f2cf['slice'](_0x3aaec2);return _0x28502c[_0xea83('0xb')](_0x306869);}}}module[_0xea83('0xc')][_0xea83('0xd')]=circularDoWInterval;function circularMonthInterval(_0x36ad18,_0x5c6173){if(_0x36ad18===_0x5c6173){return[_0x36ad18];}else{var _0x1e5686=moment[_0xea83('0x6')]();moment[_0xea83('0x6')]('en');var _0x28f9d7=moment[_0xea83('0xe')]()[_0xea83('0x1')](function(_0x514ced){return _0x514ced[_0xea83('0x8')]();});moment['locale'](_0x1e5686);var _0x3c1d5e=_0x28f9d7['indexOf'](_0x36ad18);var _0x4dc035=_0x28f9d7[_0xea83('0x9')](_0x5c6173);if(_0x4dc035>_0x3c1d5e){return _0x28f9d7[_0xea83('0xa')](_0x3c1d5e,_0x4dc035+0x1);}else{var _0x62b4c4=_0x28f9d7[_0xea83('0xa')](0x0,_0x4dc035+0x1);var _0x152f7a=_0x28f9d7[_0xea83('0xa')](_0x3c1d5e);return _0x152f7a['concat'](_0x62b4c4);}}}module[_0xea83('0xc')]['circularMonthInterval']=circularMonthInterval;function parseDom(_0x39013d){var _0x17921b=parseInt(_0x39013d,0xa);if(_0x17921b<0x1||_0x17921b>0x1f){throw new Error(EINVALID_DATE);}return _0x17921b;}function timeCompare(_0x420dee,_0x5b8b55,_0x523395){var _0x697a2f=_0x420dee[_0xea83('0xf')]();var _0x5b582c=extractTime(_0x5b8b55);var _0xc6fd95=_0x5b582c[0x0];var _0x464c17=_0x5b582c[0x1];var _0x5107e8=_0x420dee[_0xea83('0xf')]()[_0xea83('0x10')](_0xc6fd95)['minutes'](_0x464c17);throwIfDateNotValid(_0x5107e8);var _0x2dac67=extractTime(_0x523395);var _0x47aee8=_0x2dac67[0x0];var _0x2db8c6=_0x2dac67[0x1];var _0x56a894=_0x420dee[_0xea83('0xf')]()[_0xea83('0x10')](_0x47aee8)[_0xea83('0x11')](_0x2db8c6);throwIfDateNotValid(_0x56a894);if(_0x56a894[_0xea83('0x12')](_0x5107e8)){var _0x339a27=_0x697a2f[_0xea83('0xf')]()['startOf'](_0xea83('0x13'));var _0x29078b=_0x697a2f['clone']()[_0xea83('0x14')](_0xea83('0x13'));return _0x697a2f['isBetween'](_0x5107e8,_0x29078b,undefined,'[]')||_0x697a2f[_0xea83('0x15')](_0x339a27,_0x56a894,undefined,'[]');}else{return _0x697a2f['isBetween'](_0x5107e8,_0x56a894,undefined,'[]');}}module[_0xea83('0xc')]['timeCompare']=timeCompare;function dowCompare(_0x353ab2,_0x5b8c21,_0x2d2c10){var _0x56c304=_0x353ab2[_0xea83('0x6')]('en')[_0xea83('0x16')](_0xea83('0x17'))['toLowerCase']();return circularDoWInterval(_0x5b8c21,_0x2d2c10)['includes'](_0x56c304);}module[_0xea83('0xc')]['dowCompare']=dowCompare;function domCompare(_0x52dcba,_0x5a6133,_0x44bb3b){var _0x59d91a=_0x52dcba[_0xea83('0x18')]();if(_0x5a6133===_0x44bb3b){return _0x59d91a===_0x5a6133;}else{var _0x1940b9=_0x52dcba[_0xea83('0x19')]();var _0x434787=_0x5a6133<_0x44bb3b;let _0x5cd1dc=![];var _0x592957=0x0;var _0x2902f4=0x0;if(_0x434787){_0x592957=Math[_0xea83('0x1a')](0x1,_0x5a6133);_0x2902f4=Math['min'](_0x44bb3b,_0x1940b9);_0x5cd1dc=_0x59d91a>=_0x592957&&_0x59d91a<=_0x2902f4;}else{_0x592957=Math['min'](_0x5a6133,_0x1940b9);_0x2902f4=Math[_0xea83('0x1a')](0x1,_0x44bb3b);_0x5cd1dc=_0x59d91a>=_0x592957||_0x59d91a<=_0x2902f4;}return _0x5cd1dc;}}module[_0xea83('0xc')][_0xea83('0x1b')]=domCompare;function monthCompare(_0x4dc7be,_0x206df1,_0x4f640e){var _0x58b27b=_0x4dc7be[_0xea83('0x6')]('en')[_0xea83('0x16')](_0xea83('0x1c'))[_0xea83('0x8')]();return circularMonthInterval(_0x206df1,_0x4f640e)['includes'](_0x58b27b);}module[_0xea83('0xc')][_0xea83('0x1d')]=monthCompare;function iftime(_0x4bf3fb,_0x3cf329=moment['tz'][_0xea83('0x1e')](),_0x3a6e19=moment()){if(!validateRx[_0xea83('0x1f')](_0x4bf3fb)){throw new Error(EINVALID_STRING);}else{var _0x26a4b0=(moment[_0xea83('0x20')](_0x3a6e19)?_0x3a6e19[_0xea83('0xf')]():moment(_0x3a6e19))['tz'](_0x3cf329)[_0xea83('0x6')]('en');throwIfDateNotValid(_0x26a4b0);var _0x294a38=_0x4bf3fb[_0xea83('0x5')](',');var _0x1a553c=_0x294a38[0x0];var _0x148dfd=_0x294a38[0x1];var _0x2363b3=_0x294a38[0x2];var _0x4a2aba=_0x294a38[0x3];let _0x253ec1=!![];if(_0x1a553c!=='*'){var _0x218bb4=_0x1a553c['split']('-');var _0xc70112=_[_0xea83('0x21')](_0x218bb4[0x0],0x5,'0');var _0x9a2ce4=_0x218bb4[_0xea83('0x22')]===0x2?_[_0xea83('0x21')](_0x218bb4[0x1],0x5,'0'):_0xc70112;_0x253ec1=timeCompare(_0x26a4b0,_0xc70112,_0x9a2ce4);}let _0x5095f8=!![];if(_0x148dfd!=='*'){var _0x121948=_0x148dfd[_0xea83('0x5')]('-');var _0x33a155=_0x121948[0x0];var _0xf417b0=_0x121948[_0xea83('0x22')]===0x2?_0x121948[0x1]:_0x33a155;_0x5095f8=dowCompare(_0x26a4b0,_0x33a155,_0xf417b0);}let _0x727f80=!![];if(_0x2363b3!=='*'){var _0x20cc5c=_0x2363b3[_0xea83('0x5')]('-');var _0x3a8d8e=parseDom(_0x20cc5c[0x0]);var _0x151dea=_0x20cc5c[_0xea83('0x22')]===0x2?parseDom(_0x20cc5c[0x1]):_0x3a8d8e;_0x727f80=domCompare(_0x26a4b0,_0x3a8d8e,_0x151dea);}let _0x11b025=!![];if(_0x4a2aba!=='*'){var _0x24001a=_0x4a2aba[_0xea83('0x5')]('-');var _0x32180b=_0x24001a[0x0];var _0x515aff=_0x24001a[_0xea83('0x22')]===0x2?_0x24001a[0x1]:_0x24001a[0x0];_0x11b025=monthCompare(_0x26a4b0,_0x32180b,_0x515aff);}return _0x253ec1&&_0x5095f8&&_0x727f80&&_0x11b025;}}module[_0xea83('0xc')][_0xea83('0x23')]=iftime;
\ No newline at end of file
index c1ca4bd..226f10f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x349a=['[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','YYYY-MM-DD\x20HH:mm:ss','toUpperCase','Logger','transports','Console','warn','File','error','%s-%s','consoleLogger','fileLogger','path','util','moment','winston','../config/environment','debugLevel','toLowerCase','red','bold\x20yellow','white','gray','bold\x20magenta','bold\x20blue','bold\x20cyan','addColors','join','format','%s-%s.log','message','replace','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','level','{{{','meta','length','stringify'];(function(_0x1663ae,_0x10484a){var _0x30ffb8=function(_0x21e006){while(--_0x21e006){_0x1663ae['push'](_0x1663ae['shift']());}};_0x30ffb8(++_0x10484a);}(_0x349a,0x144));var _0xa349=function(_0x260ce2,_0x2e22b8){_0x260ce2=_0x260ce2-0x0;var _0x16b105=_0x349a[_0x260ce2];return _0x16b105;};'use strict';var path=require(_0xa349('0x0'));var util=require(_0xa349('0x1'));var moment=require(_0xa349('0x2'));var winston=require(_0xa349('0x3'));var config=require(_0xa349('0x4'));var debugLevel=config[_0xa349('0x5')]?config[_0xa349('0x5')][_0xa349('0x6')]():'info';var XC_LOG_LEVELS={'fatal':0x0,'error':0x0,'warn':0x1,'info':0x2,'print':0x2,'success':0x2,'http':0x3,'verbose':0x4,'debug':0x5,'silly':0x6};var XC_LOG_COLORS={'fatal':'redBG\x20white','error':_0xa349('0x7'),'warn':_0xa349('0x8'),'info':_0xa349('0x9'),'print':'bold\x20white','success':'bold\x20green','http':_0xa349('0xa'),'verbose':_0xa349('0xb'),'debug':_0xa349('0xc'),'silly':_0xa349('0xd')};winston[_0xa349('0xe')](XC_LOG_COLORS);function getLogFileName(_0x4ed48e,_0x19184f,_0x340bb9){var _0x2fcd68=_0x4ed48e||'/var/log/xcally';return path[_0xa349('0xf')](_0x2fcd68,util[_0xa349('0x10')](_0xa349('0x11'),_0x19184f,_0x340bb9));}function formatter(_0x31d69d,_0x1b0c0d){_0x1b0c0d[_0xa349('0x12')]=_0x1b0c0d[_0xa349('0x12')][_0xa349('0x13')](/@@{/g,'{{{')['replace'](/}@@/g,_0xa349('0x14'))[_0xa349('0x13')](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0xa349('0x10')](_0xa349('0x15'),moment()[_0xa349('0x10')]('YYYY-MM-DD\x20HH:mm:ss'),_0x1b0c0d[_0xa349('0x16')]['toUpperCase'](),_0x31d69d,_0x1b0c0d['message']);}function fileFormat(_0x2b4410,_0x3d69dc){_0x3d69dc[_0xa349('0x12')]=_0x3d69dc['message'][_0xa349('0x13')](/@@{/g,_0xa349('0x17'))[_0xa349('0x13')](/}@@/g,'}}}')[_0xa349('0x13')](/@{/g,'{{')[_0xa349('0x13')](/}@/g,'}}');var _0x4a2eab=_0x3d69dc[_0xa349('0x18')]&&Object['keys'](_0x3d69dc['meta'])[_0xa349('0x19')]?'\x0a\x09'+JSON[_0xa349('0x1a')](_0x3d69dc[_0xa349('0x18')]):'';return util[_0xa349('0x10')](_0xa349('0x1b'),moment()[_0xa349('0x10')](_0xa349('0x1c')),_0x3d69dc[_0xa349('0x16')][_0xa349('0x1d')](),_0x2b4410,_0x3d69dc['message'],_0x4a2eab);}function consoleLogger(){var _0x32cf68=new winston[(_0xa349('0x1e'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xa349('0x1f'))][(_0xa349('0x20'))]({'level':_0xa349('0x21'),'json':![],'formatter':function(_0x539a42){return formatter('',_0x539a42);}})]});return _0x32cf68;}function fileLogger(_0x589ac1,_0x406b70){var _0x30e83a=new winston['Logger']({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xa349('0x1f'))][(_0xa349('0x22'))]({'name':util[_0xa349('0x10')]('%s-%s',_0x589ac1,_0xa349('0x23')),'filename':getLogFileName(_0x406b70,_0x589ac1,_0xa349('0x23')),'level':_0xa349('0x23'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x45f3ca){return fileFormat(_0x589ac1,_0x45f3ca);}}),new winston['transports']['File']({'name':util[_0xa349('0x10')](_0xa349('0x24'),_0x589ac1,debugLevel),'filename':getLogFileName(_0x406b70,_0x589ac1,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x540f26){return fileFormat(_0x589ac1,_0x540f26);}}),new winston['transports'][(_0xa349('0x20'))]({'level':_0xa349('0x21'),'json':![],'formatter':function(_0x307065){return fileFormat(_0x589ac1,_0x307065);}})]});return _0x30e83a;}exports[_0xa349('0x25')]=consoleLogger;exports[_0xa349('0x26')]=fileLogger;
\ No newline at end of file
+var _0xff3b=['toLowerCase','redBG\x20white','red','white','bold\x20green','gray','bold\x20magenta','bold\x20blue','bold\x20cyan','addColors','/var/log/xcally','join','%s-%s.log','message','replace','{{{','}}}','format','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','meta','keys','length','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','Logger','transports','Console','warn','File','error','%s-%s','fileLogger','moment','../config/environment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xff3b,0x15c));var _0xbff3=function(_0x2126c6,_0x4fbeb){_0x2126c6=_0x2126c6-0x0;var _0xcc1bbd=_0xff3b[_0x2126c6];return _0xcc1bbd;};'use strict';var path=require('path');var util=require('util');var moment=require(_0xbff3('0x0'));var winston=require('winston');var config=require(_0xbff3('0x1'));var debugLevel=config['debugLevel']?config['debugLevel'][_0xbff3('0x2')]():'info';var XC_LOG_LEVELS={'fatal':0x0,'error':0x0,'warn':0x1,'info':0x2,'print':0x2,'success':0x2,'http':0x3,'verbose':0x4,'debug':0x5,'silly':0x6};var XC_LOG_COLORS={'fatal':_0xbff3('0x3'),'error':_0xbff3('0x4'),'warn':'bold\x20yellow','info':_0xbff3('0x5'),'print':'bold\x20white','success':_0xbff3('0x6'),'http':_0xbff3('0x7'),'verbose':_0xbff3('0x8'),'debug':_0xbff3('0x9'),'silly':_0xbff3('0xa')};winston[_0xbff3('0xb')](XC_LOG_COLORS);function getLogFileName(_0x1187c8,_0x2f80d0,_0x234852){var _0x37b5f3=_0x1187c8||_0xbff3('0xc');return path[_0xbff3('0xd')](_0x37b5f3,util['format'](_0xbff3('0xe'),_0x2f80d0,_0x234852));}function formatter(_0x2fa68c,_0x21375c){_0x21375c['message']=_0x21375c[_0xbff3('0xf')][_0xbff3('0x10')](/@@{/g,_0xbff3('0x11'))['replace'](/}@@/g,_0xbff3('0x12'))[_0xbff3('0x10')](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0xbff3('0x13')]('[%s]\x20[%s]\x20%s\x20-\x20%s',moment()['format'](_0xbff3('0x14')),_0x21375c[_0xbff3('0x15')][_0xbff3('0x16')](),_0x2fa68c,_0x21375c['message']);}function fileFormat(_0x140662,_0x3d02dd){_0x3d02dd['message']=_0x3d02dd[_0xbff3('0xf')][_0xbff3('0x10')](/@@{/g,_0xbff3('0x11'))[_0xbff3('0x10')](/}@@/g,_0xbff3('0x12'))[_0xbff3('0x10')](/@{/g,'{{')[_0xbff3('0x10')](/}@/g,'}}');var _0x336daa=_0x3d02dd[_0xbff3('0x17')]&&Object[_0xbff3('0x18')](_0x3d02dd[_0xbff3('0x17')])[_0xbff3('0x19')]?'\x0a\x09'+JSON['stringify'](_0x3d02dd[_0xbff3('0x17')]):'';return util[_0xbff3('0x13')](_0xbff3('0x1a'),moment()[_0xbff3('0x13')]('YYYY-MM-DD\x20HH:mm:ss'),_0x3d02dd[_0xbff3('0x15')][_0xbff3('0x16')](),_0x140662,_0x3d02dd[_0xbff3('0xf')],_0x336daa);}function consoleLogger(){var _0x2fc783=new winston[(_0xbff3('0x1b'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xbff3('0x1c'))][(_0xbff3('0x1d'))]({'level':_0xbff3('0x1e'),'json':![],'formatter':function(_0x2fd37a){return formatter('',_0x2fd37a);}})]});return _0x2fc783;}function fileLogger(_0x8d14d1,_0x4fb13f){var _0x231f9c=new winston[(_0xbff3('0x1b'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xbff3('0x1c'))][(_0xbff3('0x1f'))]({'name':util['format']('%s-%s',_0x8d14d1,_0xbff3('0x20')),'filename':getLogFileName(_0x4fb13f,_0x8d14d1,_0xbff3('0x20')),'level':_0xbff3('0x20'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x5d042c){return fileFormat(_0x8d14d1,_0x5d042c);}}),new winston[(_0xbff3('0x1c'))][(_0xbff3('0x1f'))]({'name':util[_0xbff3('0x13')](_0xbff3('0x21'),_0x8d14d1,debugLevel),'filename':getLogFileName(_0x4fb13f,_0x8d14d1,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x5ef3d9){return fileFormat(_0x8d14d1,_0x5ef3d9);}}),new winston[(_0xbff3('0x1c'))][(_0xbff3('0x1d'))]({'level':'warn','json':![],'formatter':function(_0x5f0803){return fileFormat(_0x8d14d1,_0x5f0803);}})]});return _0x231f9c;}exports['consoleLogger']=consoleLogger;exports[_0xbff3('0x22')]=fileLogger;
\ No newline at end of file
index 1226669..116148c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['fax','clientSecret','securityToken','accessKey','tenantId','token','channelSecret','accessToken','authToken','consumerKey','consumerSecret','calleridname','vidaooApiKey','privateKey','accesskeyid','secretaccesskey','key','user','pass','accountSid','localstationid','dsn','oldPassword','length','isPlainObject','replace','@@{','exports','username','password','newPassword','apiKey','firstName','lastName','street','phone','mobile'];(function(_0x20a90f,_0x48c8b3){var _0x1e4f80=function(_0x31bd23){while(--_0x31bd23){_0x20a90f['push'](_0x20a90f['shift']());}};_0x1e4f80(++_0x48c8b3);}(_0x1261,0x144));var _0x1126=function(_0x50b66d,_0x11c61c){_0x50b66d=_0x50b66d-0x0;var _0x41aa8e=_0x1261[_0x50b66d];return _0x41aa8e;};var _=require('lodash');var sensitiveFields=[_0x1126('0x0'),_0x1126('0x1'),_0x1126('0x2'),_0x1126('0x3'),_0x1126('0x4'),_0x1126('0x5'),_0x1126('0x6'),_0x1126('0x7'),_0x1126('0x8'),_0x1126('0x9'),'email','clientId',_0x1126('0xa'),_0x1126('0xb'),'code',_0x1126('0xc'),_0x1126('0xd'),_0x1126('0xe'),_0x1126('0xf'),_0x1126('0x10'),'accessTokenSecret',_0x1126('0x11'),_0x1126('0x12'),_0x1126('0x13'),'membername',_0x1126('0x14'),'calleridnum','exten',_0x1126('0x15'),'clientEmail',_0x1126('0x16'),_0x1126('0x17'),_0x1126('0x18'),_0x1126('0x19'),_0x1126('0x1a'),_0x1126('0x1b'),_0x1126('0x1c'),_0x1126('0x1d'),_0x1126('0x1e'),'secret','registry',_0x1126('0x1f')];function maskSensitiveData(_0x154e20){const _0x279455=/(?!^)[\s\S](?!$)/g;if(_['isPlainObject'](_0x154e20)){for(const _0x45149c in _0x154e20){if(_['isArray'](_0x154e20[_0x45149c])){for(let _0x35fe9f=0x0;_0x35fe9f<_0x154e20[_0x45149c][_0x1126('0x20')];_0x35fe9f++){maskSensitiveData(_0x154e20[_0x45149c][_0x35fe9f]);}}else if(_[_0x1126('0x21')](_0x154e20[_0x45149c])){maskSensitiveData(_0x154e20[_0x45149c]);}else if(_['isString'](_0x154e20[_0x45149c])){_0x154e20[_0x45149c]=_0x154e20[_0x45149c][_0x1126('0x22')](/{{{/g,_0x1126('0x23'))['replace'](/}}}/g,'}@@')[_0x1126('0x22')](/{{/g,'@{')[_0x1126('0x22')](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x45149c)){_0x154e20[_0x45149c]=_0x154e20[_0x45149c]['replace'](_0x279455,'*');}}}}}module[_0x1126('0x24')]['maskSensitiveData']=maskSensitiveData;
\ No newline at end of file
+var _0x66fa=['calleridnum','vidaooApiKey','privateKey','secretaccesskey','key','user','localstationid','oldPassword','isPlainObject','length','isString','replace','includes','exports','maskSensitiveData','lodash','username','newPassword','apiKey','firstName','lastName','street','phone','mobile','clientId','clientSecret','securityToken','code','accessKey','token','accessToken','authToken','calleridname'];(function(_0x1f0555,_0x5c6bc8){var _0x20ff82=function(_0xdf0870){while(--_0xdf0870){_0x1f0555['push'](_0x1f0555['shift']());}};_0x20ff82(++_0x5c6bc8);}(_0x66fa,0x117));var _0xa66f=function(_0x7a450b,_0x75f10d){_0x7a450b=_0x7a450b-0x0;var _0x42b839=_0x66fa[_0x7a450b];return _0x42b839;};var _=require(_0xa66f('0x0'));var sensitiveFields=[_0xa66f('0x1'),'password',_0xa66f('0x2'),_0xa66f('0x3'),_0xa66f('0x4'),_0xa66f('0x5'),_0xa66f('0x6'),_0xa66f('0x7'),_0xa66f('0x8'),'fax','email',_0xa66f('0x9'),_0xa66f('0xa'),_0xa66f('0xb'),_0xa66f('0xc'),_0xa66f('0xd'),'tenantId',_0xa66f('0xe'),'channelSecret',_0xa66f('0xf'),'accessTokenSecret',_0xa66f('0x10'),'consumerKey','consumerSecret','membername',_0xa66f('0x11'),_0xa66f('0x12'),'exten',_0xa66f('0x13'),'clientEmail',_0xa66f('0x14'),'accesskeyid',_0xa66f('0x15'),_0xa66f('0x16'),_0xa66f('0x17'),'pass','accountSid',_0xa66f('0x18'),'dsn','secret','registry',_0xa66f('0x19')];function maskSensitiveData(_0x452c37){const _0x267129=/(?!^)[\s\S](?!$)/g;if(_[_0xa66f('0x1a')](_0x452c37)){for(const _0xd348f9 in _0x452c37){if(_['isArray'](_0x452c37[_0xd348f9])){for(let _0x5510dc=0x0;_0x5510dc<_0x452c37[_0xd348f9][_0xa66f('0x1b')];_0x5510dc++){maskSensitiveData(_0x452c37[_0xd348f9][_0x5510dc]);}}else if(_[_0xa66f('0x1a')](_0x452c37[_0xd348f9])){maskSensitiveData(_0x452c37[_0xd348f9]);}else if(_[_0xa66f('0x1c')](_0x452c37[_0xd348f9])){_0x452c37[_0xd348f9]=_0x452c37[_0xd348f9][_0xa66f('0x1d')](/{{{/g,'@@{')[_0xa66f('0x1d')](/}}}/g,'}@@')['replace'](/{{/g,'@{')[_0xa66f('0x1d')](/}}/g,'}@');if(_[_0xa66f('0x1e')](sensitiveFields,_0xd348f9)){_0x452c37[_0xd348f9]=_0x452c37[_0xd348f9][_0xa66f('0x1d')](_0x267129,'*');}}}}}module[_0xa66f('0x1f')][_0xa66f('0x20')]=maskSensitiveData;
\ No newline at end of file
index 824b819..da2ba3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf8=['safeTemplate','lodash','{\x20{\x20','\x20}\x20}','string','replace','isArray','map','isPlainObject','exports'];(function(_0x23190f,_0x3f6fad){var _0x122d2b=function(_0xb26b6d){while(--_0xb26b6d){_0x23190f['push'](_0x23190f['shift']());}};_0x122d2b(++_0x3f6fad);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x4052c0,_0x4271ab){_0x4052c0=_0x4052c0-0x0;var _0x296f04=_0x4cf8[_0x4052c0];return _0x296f04;};var _=require(_0x84cf('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x2d03b6){return _0x2d03b6==='{{'?_0x84cf('0x1'):_0x84cf('0x2');}function safeTemplate(_0xae953){var _0x28455b=_0xae953;if(typeof _0xae953===_0x84cf('0x3')){_0x28455b=_0xae953[_0x84cf('0x4')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x84cf('0x5')](_0xae953)){_0x28455b=_0xae953[_0x84cf('0x6')](function(_0x5844d7){return safeTemplate(_0x5844d7);});}else if(_[_0x84cf('0x7')](_0xae953)){_0x28455b=Object['keys'](_0xae953)['reduce'](function(_0x455345,_0x56c5cc){_0x455345[_0x56c5cc]=safeTemplate(_0xae953[_0x56c5cc]);return _0x455345;},{});}return _0x28455b;}module[_0x84cf('0x8')][_0x84cf('0x9')]=safeTemplate;
\ No newline at end of file
+var _0x1775=['exports','safeTemplate','{\x20{\x20','\x20}\x20}','string','replace','isArray','map','isPlainObject','keys','reduce'];(function(_0xf24f30,_0x77205b){var _0x364bea=function(_0x562a10){while(--_0x562a10){_0xf24f30['push'](_0xf24f30['shift']());}};_0x364bea(++_0x77205b);}(_0x1775,0x1db));var _0x5177=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x1775[_0xa464c9];return _0x3d73c4;};var _=require('lodash');var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0xb5c9b1){return _0xb5c9b1==='{{'?_0x5177('0x0'):_0x5177('0x1');}function safeTemplate(_0x2ca33b){var _0xaad33e=_0x2ca33b;if(typeof _0x2ca33b===_0x5177('0x2')){_0xaad33e=_0x2ca33b[_0x5177('0x3')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x5177('0x4')](_0x2ca33b)){_0xaad33e=_0x2ca33b[_0x5177('0x5')](function(_0x51275f){return safeTemplate(_0x51275f);});}else if(_[_0x5177('0x6')](_0x2ca33b)){_0xaad33e=Object[_0x5177('0x7')](_0x2ca33b)[_0x5177('0x8')](function(_0x2ac1c6,_0x300b43){_0x2ac1c6[_0x300b43]=safeTemplate(_0x2ca33b[_0x300b43]);return _0x2ac1c6;},{});}return _0xaad33e;}module[_0x5177('0x9')][_0x5177('0xa')]=safeTemplate;
\ No newline at end of file
index 9b3396d..b3faeb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f62=['pathExists','readJSON','then','info','Updating\x20app.json','writeJSON','exports','fs-extra','../config/environment','root','resolve','legacy-libs','isArray','apps','findIndex','name','env','NODE_PATH','string'];(function(_0x534e8b,_0x1f8fd9){var _0x5542cc=function(_0x1f31f2){while(--_0x1f31f2){_0x534e8b['push'](_0x534e8b['shift']());}};_0x5542cc(++_0x1f8fd9);}(_0x5f62,0x1a9));var _0x25f6=function(_0x18959e,_0x24e830){_0x18959e=_0x18959e-0x0;var _0x308aba=_0x5f62[_0x18959e];return _0x308aba;};var fs=require(_0x25f6('0x0'));var path=require('path');var config=require(_0x25f6('0x1'));var root=config[_0x25f6('0x2')];var APP_JSON_PATH=path[_0x25f6('0x3')](root,'server/app.json');var NODEPATH=path['resolve'](root,_0x25f6('0x4'));function setLegacyLibsNodeEnvPath(_0x5bcbb2){let _0x18b245=![];if(Array[_0x25f6('0x5')](_0x5bcbb2[_0x25f6('0x6')])){var _0x1fa0e9=_0x5bcbb2[_0x25f6('0x6')][_0x25f6('0x7')](function(_0x295492){return _0x295492[_0x25f6('0x8')]==='motion2';});if(_0x1fa0e9>-0x1){var _0x2da051=_0x5bcbb2[_0x25f6('0x6')][_0x1fa0e9];if(typeof _0x2da051[_0x25f6('0x9')][_0x25f6('0xa')]!==_0x25f6('0xb')){_0x2da051[_0x25f6('0x9')][_0x25f6('0xa')]=NODEPATH;_0x18b245=!![];}}return{'appConfig':_0x5bcbb2,'updated':_0x18b245};}}function updateAppConfig(_0x344d17){return fs[_0x25f6('0xc')](APP_JSON_PATH)['then'](function(_0xde74bf){if(_0xde74bf){return fs[_0x25f6('0xd')](APP_JSON_PATH)[_0x25f6('0xe')](function(_0x372df7){var _0x4c3daf=setLegacyLibsNodeEnvPath(_0x372df7);if(_0x4c3daf['updated']){_0x344d17[_0x25f6('0xf')](_0x25f6('0x10'));return fs[_0x25f6('0x11')](APP_JSON_PATH,_0x372df7,{'spaces':0x2});}else{return Promise[_0x25f6('0x3')]();}});}else{return Promise[_0x25f6('0x3')]();}});}module[_0x25f6('0x12')]=updateAppConfig;
\ No newline at end of file
+var _0xa6f8=['string','env','then','updated','info','writeJSON','fs-extra','../config/environment','resolve','apps','findIndex','name','NODE_PATH'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa6f8,0x1f4));var _0x8a6f=function(_0x295a5c,_0xfd0b5){_0x295a5c=_0x295a5c-0x0;var _0x53339e=_0xa6f8[_0x295a5c];return _0x53339e;};var fs=require(_0x8a6f('0x0'));var path=require('path');var config=require(_0x8a6f('0x1'));var root=config['root'];var APP_JSON_PATH=path[_0x8a6f('0x2')](root,'server/app.json');var NODEPATH=path['resolve'](root,'legacy-libs');function setLegacyLibsNodeEnvPath(_0x203770){let _0x33df2c=![];if(Array['isArray'](_0x203770[_0x8a6f('0x3')])){var _0x2c4c7f=_0x203770['apps'][_0x8a6f('0x4')](function(_0x591b8c){return _0x591b8c[_0x8a6f('0x5')]==='motion2';});if(_0x2c4c7f>-0x1){var _0x6dc6a7=_0x203770[_0x8a6f('0x3')][_0x2c4c7f];if(typeof _0x6dc6a7['env'][_0x8a6f('0x6')]!==_0x8a6f('0x7')){_0x6dc6a7[_0x8a6f('0x8')][_0x8a6f('0x6')]=NODEPATH;_0x33df2c=!![];}}return{'appConfig':_0x203770,'updated':_0x33df2c};}}function updateAppConfig(_0x21ad34){return fs['pathExists'](APP_JSON_PATH)[_0x8a6f('0x9')](function(_0x4f6317){if(_0x4f6317){return fs['readJSON'](APP_JSON_PATH)['then'](function(_0x217dec){var _0x35ab52=setLegacyLibsNodeEnvPath(_0x217dec);if(_0x35ab52[_0x8a6f('0xa')]){_0x21ad34[_0x8a6f('0xb')]('Updating\x20app.json');return fs[_0x8a6f('0xc')](APP_JSON_PATH,_0x217dec,{'spaces':0x2});}else{return Promise['resolve']();}});}else{return Promise[_0x8a6f('0x2')]();}});}module['exports']=updateAppConfig;
\ No newline at end of file